<?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>193602</bug_id>
          
          <creation_ts>2019-01-18 16:52:01 -0800</creation_ts>
          <short_desc>Move FileSystem to WTF</short_desc>
          <delta_ts>2019-01-24 17:18:13 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=193789</see_also>
          <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="Ross Kirsling">ross.kirsling</reporter>
          <assigned_to name="Ross Kirsling">ross.kirsling</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fujii</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>saam</cc>
    
    <cc>tsavell</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1496103</commentid>
    <comment_count>0</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2019-01-18 16:52:01 -0800</bug_when>
    <thetext>Move FileSystem to WTF</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496106</commentid>
    <comment_count>1</comment_count>
      <attachid>359556</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2019-01-18 16:55:41 -0800</bug_when>
    <thetext>Created attachment 359556
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496110</commentid>
    <comment_count>2</comment_count>
      <attachid>359559</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2019-01-18 17:04:59 -0800</bug_when>
    <thetext>Created attachment 359559
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496114</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-01-18 17:08:17 -0800</bug_when>
    <thetext>Attachment 359559 did not pass style-queue:


ERROR: Source/WTF/wtf/win/PathWalker.cpp:27:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WTF/wtf/win/PathWalker.cpp:28:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/FileSystem.cpp:28:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WTF/wtf/FileSystem.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/win/FileSystemWin.cpp:32:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/posix/FileSystemPOSIX.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/glib/FileSystemGlib.cpp:25:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/cf/FileSystemCF.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 8 in 183 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>1496115</commentid>
    <comment_count>4</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2019-01-18 17:10:46 -0800</bug_when>
    <thetext>(In reply to Build Bot from comment #3)
&gt; Attachment 359559 [details] did not pass style-queue:
&gt; 
&gt; 
&gt; ERROR: Source/WTF/wtf/win/PathWalker.cpp:27:  Found other header before a
&gt; header this file implements. Should be: config.h, primary header, blank
&gt; line, and then alphabetically sorted.  [build/include_order] [4]
&gt; ERROR: Source/WTF/wtf/win/PathWalker.cpp:28:  Alphabetical sorting problem. 
&gt; [build/include_order] [4]
&gt; ERROR: Source/WTF/wtf/FileSystem.cpp:28:  Found other header before a header
&gt; this file implements. Should be: config.h, primary header, blank line, and
&gt; then alphabetically sorted.  [build/include_order] [4]
&gt; ERROR: Source/WTF/wtf/FileSystem.cpp:29:  Alphabetical sorting problem. 
&gt; [build/include_order] [4]
&gt; ERROR: Source/WTF/wtf/win/FileSystemWin.cpp:32:  Alphabetical sorting
&gt; problem.  [build/include_order] [4]
&gt; ERROR: Source/WTF/wtf/posix/FileSystemPOSIX.cpp:31:  Alphabetical sorting
&gt; problem.  [build/include_order] [4]
&gt; ERROR: Source/WTF/wtf/glib/FileSystemGlib.cpp:25:  Alphabetical sorting
&gt; problem.  [build/include_order] [4]
&gt; ERROR: Source/WTF/wtf/cf/FileSystemCF.cpp:31:  Alphabetical sorting problem.
&gt; [build/include_order] [4]
&gt; Total errors found: 8 in 183 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against
&gt; check-webkit-style.

IIUC, these are all the canonical style for WTF.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496193</commentid>
    <comment_count>5</comment_count>
      <attachid>359589</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2019-01-18 22:45:10 -0800</bug_when>
    <thetext>Created attachment 359589
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496194</commentid>
    <comment_count>6</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-01-18 22:50:13 -0800</bug_when>
    <thetext>Attachment 359589 did not pass style-queue:


ERROR: Source/WTF/wtf/win/PathWalker.cpp:27:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WTF/wtf/win/PathWalker.cpp:28:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/FileSystem.cpp:28:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WTF/wtf/FileSystem.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/win/FileSystemWin.cpp:32:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/posix/FileSystemPOSIX.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/glib/FileSystemGlib.cpp:25:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/cf/FileSystemCF.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 8 in 186 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496695</commentid>
    <comment_count>7</comment_count>
      <attachid>359718</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2019-01-21 19:07:39 -0800</bug_when>
    <thetext>Created attachment 359718
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496696</commentid>
    <comment_count>8</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-01-21 19:11:07 -0800</bug_when>
    <thetext>Attachment 359718 did not pass style-queue:


ERROR: Source/WTF/wtf/win/PathWalker.cpp:27:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WTF/wtf/win/PathWalker.cpp:28:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/FileSystem.cpp:28:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WTF/wtf/FileSystem.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/win/FileSystemWin.cpp:32:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/posix/FileSystemPOSIX.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/glib/FileSystemGlib.cpp:25:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/cf/FileSystemCF.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 8 in 186 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496702</commentid>
    <comment_count>9</comment_count>
      <attachid>359719</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2019-01-21 22:07:32 -0800</bug_when>
    <thetext>Created attachment 359719
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496703</commentid>
    <comment_count>10</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-01-21 22:10:34 -0800</bug_when>
    <thetext>Attachment 359719 did not pass style-queue:


ERROR: Source/WTF/wtf/win/PathWalker.cpp:27:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WTF/wtf/win/PathWalker.cpp:28:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/FileSystem.cpp:28:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WTF/wtf/FileSystem.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/win/FileSystemWin.cpp:32:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/posix/FileSystemPOSIX.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/glib/FileSystemGlib.cpp:25:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/cf/FileSystemCF.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 8 in 186 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497006</commentid>
    <comment_count>11</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2019-01-22 14:59:57 -0800</bug_when>
    <thetext>It&apos;s really perplexing why GTK and WPE continue to have a problem here -- seems like the compiler doesn&apos;t understand namespace aliases:

&gt; In file included from ../../Source/WebCore/Modules/cache/DOMCacheEngine.h:34:0,
&gt;                  from ../../Source/WebCore/Modules/cache/CacheStorageConnection.h:29,
&gt;                  from ../../Source/WebCore/workers/WorkerGlobalScope.h:30,
&gt;                  from ../../Source/WebCore/inspector/InspectorInstrumentation.h:49,
&gt;                  from ../../Source/WebCore/dom/EventTarget.cpp:38,
&gt;                  from /home/ews/gtk-wk2-ews/WebKit/WebKitBuild/Release/DerivedSources/WebCore/unified-sources/UnifiedSource-be65d27a-8.cpp:5:
&gt; ../../Source/WebCore/platform/SharedBuffer.h:139:40: error: reference to ‘FileSystem’ is ambiguous
&gt;          static Ref&lt;DataSegment&gt; create(FileSystem::MappedFileData&amp;&amp; data) { return adoptRef(*new DataSegment(WTFMove(data))); }
&gt;                                         ^~~~~~~~~~
&gt; In file included from ../../Source/WebCore/platform/SharedBuffer.h:30:0,
&gt;                  from ../../Source/WebCore/Modules/cache/DOMCacheEngine.h:34,
&gt;                  from ../../Source/WebCore/Modules/cache/CacheStorageConnection.h:29,
&gt;                  from ../../Source/WebCore/workers/WorkerGlobalScope.h:30,
&gt;                  from ../../Source/WebCore/inspector/InspectorInstrumentation.h:49,
&gt;                  from ../../Source/WebCore/dom/EventTarget.cpp:38,
&gt;                  from /home/ews/gtk-wk2-ews/WebKit/WebKitBuild/Release/DerivedSources/WebCore/unified-sources/UnifiedSource-be65d27a-8.cpp:5:
&gt; DerivedSources/ForwardingHeaders/wtf/FileSystem.h:226:39: note: candidates are: namespace FileSystem = WTF::WTF::FileSystem;
&gt;  namespace FileSystem = WTF::FileSystem;
&gt;                                        ^
&gt; In file included from ../../Source/WebCore/platform/SharedBuffer.h:30:0,
&gt;                  from ../../Source/WebCore/Modules/cache/DOMCacheEngine.h:34,
&gt;                  from ../../Source/WebCore/Modules/cache/CacheStorageConnection.h:29,
&gt;                  from ../../Source/WebCore/workers/WorkerGlobalScope.h:30,
&gt;                  from ../../Source/WebCore/inspector/InspectorInstrumentation.h:49,
&gt;                  from ../../Source/WebCore/dom/EventTarget.cpp:38,
&gt;                  from /home/ews/gtk-wk2-ews/WebKit/WebKitBuild/Release/DerivedSources/WebCore/unified-sources/UnifiedSource-be65d27a-8.cpp:5:
&gt; DerivedSources/ForwardingHeaders/wtf/FileSystem.h:63:11: note:                 namespace WTF::FileSystem { }
&gt;  namespace FileSystem {
&gt;            ^~~~~~~~~~

EventTarget.cpp does have `using namespace WTF;` but removing it in the latest patch here didn&apos;t help. This isn&apos;t really surprising though, since it&apos;s sitting safely within the `namespace WebCore {}` block.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497140</commentid>
    <comment_count>12</comment_count>
      <attachid>359827</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2019-01-22 18:03:06 -0800</bug_when>
    <thetext>Created attachment 359827
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497141</commentid>
    <comment_count>13</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-01-22 18:06:54 -0800</bug_when>
    <thetext>Attachment 359827 did not pass style-queue:


ERROR: Source/WTF/wtf/win/PathWalker.cpp:27:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WTF/wtf/win/PathWalker.cpp:28:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/FileSystem.cpp:28:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WTF/wtf/FileSystem.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/win/FileSystemWin.cpp:32:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/posix/FileSystemPOSIX.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/glib/FileSystemGlib.cpp:25:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/cf/FileSystemCF.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 8 in 185 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>1497149</commentid>
    <comment_count>14</comment_count>
      <attachid>359830</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2019-01-22 18:17:28 -0800</bug_when>
    <thetext>Created attachment 359830
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497169</commentid>
    <comment_count>15</comment_count>
      <attachid>359839</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2019-01-22 19:41:30 -0800</bug_when>
    <thetext>Created attachment 359839
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497173</commentid>
    <comment_count>16</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-01-22 19:45:37 -0800</bug_when>
    <thetext>Attachment 359839 did not pass style-queue:


ERROR: Source/WTF/wtf/win/PathWalker.cpp:27:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WTF/wtf/win/PathWalker.cpp:28:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/FileSystem.cpp:28:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WTF/wtf/FileSystem.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/win/FileSystemWin.cpp:32:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/posix/FileSystemPOSIX.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/glib/FileSystemGlib.cpp:25:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/cf/FileSystemCF.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 8 in 184 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>1497262</commentid>
    <comment_count>17</comment_count>
      <attachid>359862</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-01-23 02:09:17 -0800</bug_when>
    <thetext>Created attachment 359862
Patch

* Fixed GTK+ builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497263</commentid>
    <comment_count>18</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-01-23 02:12:45 -0800</bug_when>
    <thetext>Attachment 359862 did not pass style-queue:


ERROR: Source/WTF/wtf/win/PathWalker.cpp:27:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WTF/wtf/win/PathWalker.cpp:28:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/FileSystem.cpp:28:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WTF/wtf/FileSystem.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/win/FileSystemWin.cpp:32:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/posix/FileSystemPOSIX.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/glib/FileSystemGlib.cpp:25:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/cf/FileSystemCF.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 8 in 184 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>1497396</commentid>
    <comment_count>19</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2019-01-23 10:08:15 -0800</bug_when>
    <thetext>(In reply to Ross Kirsling from comment #11)
&gt; It&apos;s really perplexing why GTK and WPE continue to have a problem here --
&gt; seems like the compiler doesn&apos;t understand namespace aliases:
&gt;
&gt; ...
&gt;
&gt; EventTarget.cpp does have `using namespace WTF;` but removing it in the
&gt; latest patch here didn&apos;t help. This isn&apos;t really surprising though, since
&gt; it&apos;s sitting safely within the `namespace WebCore {}` block.

Ugh, it seems to be a bug in GCC 6 and 7: https://godbolt.org/z/-00gZR

Not sure what to do about this. I guess for WTF::Unicode we don&apos;t use a namespace alias and instead sprinkle `using namespace WTF::Unicode;` all over the place... The other possibility is to remove `using namespace WTF;` throughout WebCore. If we do the latter, I suppose it would make sense to split it out as its own patch first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497458</commentid>
    <comment_count>20</comment_count>
      <attachid>359913</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2019-01-23 11:34:52 -0800</bug_when>
    <thetext>Created attachment 359913
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497459</commentid>
    <comment_count>21</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-01-23 11:38:32 -0800</bug_when>
    <thetext>Attachment 359913 did not pass style-queue:


ERROR: Source/WTF/wtf/win/PathWalker.cpp:27:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WTF/wtf/win/PathWalker.cpp:28:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/FileSystem.cpp:28:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WTF/wtf/FileSystem.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/win/FileSystemWin.cpp:32:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/posix/FileSystemPOSIX.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/glib/FileSystemGlib.cpp:25:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/cf/FileSystemCF.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 8 in 184 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>1497534</commentid>
    <comment_count>22</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2019-01-23 13:26:50 -0800</bug_when>
    <thetext>I guess pleasing GCC 6 was as simple as renaming the inner namespace to FileSystemImpl, following the precedent here:
https://github.com/WebKit/webkit/blob/master/Source/WTF/wtf/JSONValues.h#L45

Now if I could just figure out why this patch causes API test timeouts for WinCairo...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497556</commentid>
    <comment_count>23</comment_count>
      <attachid>359913</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-01-23 14:12:19 -0800</bug_when>
    <thetext>Comment on attachment 359913
Patch

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

&gt; Source/WTF/ChangeLog:3
&gt; +        Move FileSystem to WTF

Why? To me it seems like PAL is the right place for it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497575</commentid>
    <comment_count>24</comment_count>
      <attachid>359945</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2019-01-23 14:40:33 -0800</bug_when>
    <thetext>Created attachment 359945
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497577</commentid>
    <comment_count>25</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-01-23 14:44:05 -0800</bug_when>
    <thetext>Attachment 359945 did not pass style-queue:


ERROR: Source/WTF/wtf/win/PathWalker.cpp:27:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WTF/wtf/win/PathWalker.cpp:28:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/FileSystem.cpp:28:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WTF/wtf/FileSystem.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/win/FileSystemWin.cpp:32:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/posix/FileSystemPOSIX.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/glib/FileSystemGlib.cpp:25:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/cf/FileSystemCF.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 8 in 184 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>1497630</commentid>
    <comment_count>26</comment_count>
      <attachid>359913</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-01-23 16:06:39 -0800</bug_when>
    <thetext>Comment on attachment 359913
Patch

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

&gt;&gt; Source/WTF/ChangeLog:3
&gt;&gt; +        Move FileSystem to WTF
&gt; 
&gt; Why? To me it seems like PAL is the right place for it.

I like the idea moving FileSystem to WTF because JSC shell starts testing persistent bytecode cache which resides in the FileSystem anyway. https://trac.webkit.org/changeset/240255/webkit&apos;
If some functions can be shared, it is nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497639</commentid>
    <comment_count>27</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2019-01-23 16:22:31 -0800</bug_when>
    <thetext>(In reply to Ross Kirsling from comment #22)
&gt; Now if I could just figure out why this patch causes API test timeouts for
&gt; WinCairo...

Scratch that; evidently this is an existing issue.

(In reply to Yusuke Suzuki from comment #26)
&gt; &gt;&gt; Source/WTF/ChangeLog:3
&gt; &gt;&gt; +        Move FileSystem to WTF
&gt; &gt; 
&gt; &gt; Why? To me it seems like PAL is the right place for it.
&gt; 
&gt; I like the idea moving FileSystem to WTF because JSC shell starts testing
&gt; persistent bytecode cache which resides in the FileSystem anyway.
&gt; https://trac.webkit.org/changeset/240255/webkit&apos;
&gt; If some functions can be shared, it is nice.

Awesome. :D
We&apos;re also intending to use FileSystem for PlayStation port&apos;s JSC shell.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497699</commentid>
    <comment_count>28</comment_count>
      <attachid>359985</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2019-01-23 19:12:56 -0800</bug_when>
    <thetext>Created attachment 359985
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497702</commentid>
    <comment_count>29</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-01-23 19:17:12 -0800</bug_when>
    <thetext>Attachment 359985 did not pass style-queue:


ERROR: Source/WTF/wtf/win/PathWalker.cpp:27:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WTF/wtf/win/PathWalker.cpp:28:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/FileSystem.cpp:28:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WTF/wtf/FileSystem.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/win/FileSystemWin.cpp:32:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/posix/FileSystemPOSIX.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/glib/FileSystemGlib.cpp:25:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/cf/FileSystemCF.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 8 in 184 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>1497703</commentid>
    <comment_count>30</comment_count>
      <attachid>359985</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-01-23 19:29:12 -0800</bug_when>
    <thetext>Comment on attachment 359985
Patch

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

r=me. This is beneficial for JSC shell testing and Cached bytecodes implementations too.

&gt; Source/WTF/ChangeLog:17
&gt; +        * wtf/PlatformWin.cmake:

Can you add PlatformJSCOnly.cmake changes too?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497709</commentid>
    <comment_count>31</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2019-01-23 19:52:32 -0800</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #30)
&gt; Comment on attachment 359985 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=359985&amp;action=review
&gt; 
&gt; r=me. This is beneficial for JSC shell testing and Cached bytecodes
&gt; implementations too.

Thanks!

&gt; &gt; Source/WTF/ChangeLog:17
&gt; &gt; +        * wtf/PlatformWin.cmake:
&gt; 
&gt; Can you add PlatformJSCOnly.cmake changes too?

Hmm, do you think it&apos;s better to add them now, or should we wait until JSC actually consumes FileSystem?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497832</commentid>
    <comment_count>32</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2019-01-24 09:13:20 -0800</bug_when>
    <thetext>(In reply to Ross Kirsling from comment #31)
&gt; (In reply to Yusuke Suzuki from comment #30)
&gt; &gt; &gt; Source/WTF/ChangeLog:17
&gt; &gt; &gt; +        * wtf/PlatformWin.cmake:
&gt; &gt; 
&gt; &gt; Can you add PlatformJSCOnly.cmake changes too?
&gt;
&gt; Hmm, do you think it&apos;s better to add them now, or should we wait until JSC
&gt; actually consumes FileSystem?

Since the current patch is pleasing EWS and JSCOnly will require separate verification, I&apos;ll land this one now and handle the rest in a separate patch this morning. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497840</commentid>
    <comment_count>33</comment_count>
      <attachid>359985</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-01-24 09:26:07 -0800</bug_when>
    <thetext>Comment on attachment 359985
Patch

Clearing flags on attachment: 359985

Committed r240437: &lt;https://trac.webkit.org/changeset/240437&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497841</commentid>
    <comment_count>34</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-01-24 09:26:09 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497843</commentid>
    <comment_count>35</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-01-24 09:27:36 -0800</bug_when>
    <thetext>&lt;rdar://problem/47518054&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497952</commentid>
    <comment_count>36</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2019-01-24 14:07:57 -0800</bug_when>
    <thetext>Looks like the changes in https://trac.webkit.org/changeset/240437/webkit

has caused an API failure on Mac Debug. 

Log:
https://build.webkit.org/builders/Apple%20High%20Sierra%20Debug%20WK1%20%28Tests%29/builds/7412/steps/run-api-tests/logs/stdio

reproduced with:
run-api-tests --root debug-240437 --debug

I received no failure on 240436.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497959</commentid>
    <comment_count>37</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2019-01-24 14:28:14 -0800</bug_when>
    <thetext>(In reply to Truitt Savell from comment #36)
&gt; Looks like the changes in https://trac.webkit.org/changeset/240437/webkit
&gt; 
&gt; has caused an API failure on Mac Debug. 
&gt; 
&gt; Log:
&gt; https://build.webkit.org/builders/
&gt; Apple%20High%20Sierra%20Debug%20WK1%20%28Tests%29/builds/7412/steps/run-api-
&gt; tests/logs/stdio
&gt; 
&gt; reproduced with:
&gt; run-api-tests --root debug-240437 --debug
&gt; 
&gt; I received no failure on 240436.

I don&apos;t understand how this patch can have any impact on TestWTF.WTF.StringOperators, but I will take a look... :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497986</commentid>
    <comment_count>38</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2019-01-24 15:19:40 -0800</bug_when>
    <thetext>(In reply to Ross Kirsling from comment #37)
&gt; (In reply to Truitt Savell from comment #36)
&gt; &gt; Looks like the changes in https://trac.webkit.org/changeset/240437/webkit
&gt; &gt; 
&gt; &gt; has caused an API failure on Mac Debug. 
&gt; &gt; 
&gt; &gt; Log:
&gt; &gt; https://build.webkit.org/builders/
&gt; &gt; Apple%20High%20Sierra%20Debug%20WK1%20%28Tests%29/builds/7412/steps/run-api-
&gt; &gt; tests/logs/stdio
&gt; &gt; 
&gt; &gt; reproduced with:
&gt; &gt; run-api-tests --root debug-240437 --debug
&gt; &gt; 
&gt; &gt; I received no failure on 240436.
&gt; 
&gt; I don&apos;t understand how this patch can have any impact on
&gt; TestWTF.WTF.StringOperators, but I will take a look... :(

Evidently this is a notoriously fragile test file:
https://bugs.webkit.org/show_bug.cgi?id=158623
https://bugs.webkit.org/show_bug.cgi?id=180211#c11
https://bugs.webkit.org/show_bug.cgi?id=192361</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1498048</commentid>
    <comment_count>39</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2019-01-24 17:18:13 -0800</bug_when>
    <thetext>Apparently TestWTF.WTF.StringOperators has a monopoly on String::operator+. What a nightmare.

Committed r240459: &lt;https://trac.webkit.org/changeset/240459&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359556</attachid>
            <date>2019-01-18 16:55:41 -0800</date>
            <delta_ts>2019-01-18 17:04:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193602-20190118165540.patch</filename>
            <type>text/plain</type>
            <size>424192</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwMTU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDc1MGMwOGMwZTZlOTAyYzVhYWU1MjJk
NTAwY2YwZGNhZGEzODE5MTIuLmZiODBiNzNkMzJiMDY3NjU4OWY5ZWU2ZjJmN2ZiODJkZmI5NTVi
N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTktMDEtMTggIFJvc3MgS2lyc2xpbmcgIDxyb3Nz
LmtpcnNsaW5nQHNvbnkuY29tPgorCisgICAgICAgIE1vdmUgRmlsZVN5c3RlbSB0byBXVEYKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzYwMgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV1RGLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0OgorICAg
ICAgICAqIHd0Zi9GaWxlTWV0YWRhdGEuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0ZpbGVNZXRhZGF0YS5oLgorICAgICAgICAqIHd0Zi9GaWxlU3lzdGVtLmNwcDogUmVu
YW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwLgorICAgICAg
ICAqIHd0Zi9GaWxlU3lzdGVtLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9GaWxlU3lzdGVtLmguCisgICAgICAgICogd3RmL1BsYXRmb3JtR1RLLmNtYWtlOgorICAgICAg
ICAqIHd0Zi9QbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1QbGF5U3Rh
dGlvbi5jbWFrZToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1XUEUuY21ha2U6CisgICAgICAgICog
d3RmL1BsYXRmb3JtV2luLmNtYWtlOgorICAgICAgICAqIHd0Zi9jZi9GaWxlU3lzdGVtQ0YuY3Bw
OiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvRmlsZVN5c3RlbUNGLmNw
cC4KKyAgICAgICAgKiB3dGYvY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tOiBSZW5hbWVkIGZyb20g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tLgorICAgICAg
ICAqIHd0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwLgorICAgICAgICAqIHd0Zi9tYWMv
RmlsZVN5c3RlbU1hYy5tbTogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9GaWxlU3lzdGVtTWFjLm1tLgorICAgICAgICAqIHd0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVgu
Y3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3Rl
bVBPU0lYLmNwcC4KKyAgICAgICAgKiB3dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0ZpbGVTeXN0ZW1XaW4uY3BwLgorICAg
ICAgICAqIHd0Zi93aW4vUGF0aFdhbGtlci5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vUGF0aFdhbGtlci5jcHAuCisgICAgICAgICogd3RmL3dpbi9QYXRoV2Fs
a2VyLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGF0aFdhbGtl
ci5oLgorCiAyMDE5LTAxLTE3ICBUcnVpdHQgU2F2ZWxsICA8dHNhdmVsbEBhcHBsZS5jb20+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjI0MDEyNC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBh
ZTk1NWVhYmE3OTc4NjQxN2U5YmIyMWQ4YWU4MTA0MzMwODRmMzBlLi5kNzY3NDA4NTkxMTA2NjA3
MDQyZDA2MDNiNzdlMjRmYjE1MWU4N2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODEgQEAKKzIw
MTktMDEtMTggIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgorCisgICAg
ICAgIE1vdmUgRmlsZVN5c3RlbSB0byBXVEYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5MzYwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwOgorICAg
ICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5U2Vzc2lv
bi5jcHA6CisgICAgICAgICogTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwOgor
ICAgICAgICAqIE1vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRW50cnkuY3BwOgorICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5jcHA6CisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHA6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQlRyYW5zYWN0aW9uLmNw
cDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVy
LmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHA6
CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5Mb2NrLmNwcDoKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmRhdGFiYXNlL09yaWdpbkxvY2suaDoKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmRhdGFiYXNlL2NvY29hL0RhdGFiYXNlTWFuYWdlckNvY29hLm1tOgorICAgICAgICAqIFBsYXRm
b3JtTWFjLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtUGxheVN0YXRpb24uY21ha2U6CisgICAg
ICAgICogUGxhdGZvcm1XaW4uY21ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAg
ICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvR0NDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKiBkb20vRGF0YVRyYW5zZmVySXRlbS5jcHA6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9X
ZWJDb250ZW50UmVhZGVyQ29jb2EubW06CisgICAgICAgICogZmlsZWFwaS9GaWxlLmNwcDoKKyAg
ICAgICAgKiBmaWxlYXBpL0ZpbGVDb2NvYS5tbToKKyAgICAgICAgKiBodG1sL0ZpbGVJbnB1dFR5
cGUuY3BwOgorICAgICAgICAqIGh0bWwvRmlsZUxpc3RDcmVhdG9yLmNwcDoKKyAgICAgICAgKiBs
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAgICAqIGxvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgICogcGFnZS9Q
YWdlLmNwcDoKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5T3JpZ2luLmNwcDoKKyAgICAgICAgKiBw
YWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vRmlsZUhhbmRs
ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL0ZpbGVTdHJlYW0uY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL0ZpbGVTdHJlYW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9Tb3VyY2VzR0xpYi50eHQ6CisgICAgICAgICogcGxhdGZvcm0vY29j
b2EvRmlsZU1vbml0b3JDb2NvYS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL0ZpbGVNb25p
dG9yR0xpYi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNw
cDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNz
aW9uQVZDb250ZW50S2V5U2Vzc2lvbi5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLm1tOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25NZWRpYVNvdXJj
ZUFWRk9iakMubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9RdWlja0xvb2subW06CisgICAgICAgICogcGxhdGZv
cm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW06CisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2Nm
L0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29j
b2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW06CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9j
dXJsL0Nvb2tpZUphckRCLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bENhY2hlRW50cnkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hl
TWFuYWdlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxGb3JtRGF0
YVN0cmVhbS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5o
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25D
dXJsLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVD
dXJsLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9CbG9iRGF0YUZpbGVSZWZl
cmVuY2VNYWMubW06CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFu
ZGxlU291cC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3Jr
U2Vzc2lvbi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVyUE9TSVgu
Y3BwOgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudURCLmNwcDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyVGhlbWUuY3BwOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUd0
ay5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmNwcDoKKyAgICAgICAg
KiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcDoKKwogMjAx
OS0wMS0xOCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgQSB0
cmFjayBzb3VyY2Ugc2hvdWxkIGJlIHVubXV0ZWQgd2hlbmV2ZXIgcmVlbmFibGVkIGFmdGVyIHNl
dERpcmVjdGlvbiBjaGFuZ2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDkyNzAzMmYzYjE3MGMyMDdlYjM4NWE5OGFh
YjlkZTc0ZWFiZjI4NGEuLmVhMTM3YTYwZTk0NDcxMmMyY2ZmMmM5MzEwMDY0NGRhYzUzNmQ0NzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsODIgQEAKKzIwMTktMDEtMTggIFJvc3MgS2lyc2xpbmcgIDxy
b3NzLmtpcnNsaW5nQHNvbnkuY29tPgorCisgICAgICAgIE1vdmUgRmlsZVN5c3RlbSB0byBXVEYK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzYwMgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3Jh
Z2UuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuaDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHA6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQmxvYlN0b3JhZ2UuY3BwOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuY3BwOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uaDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxDb2NvYS5tbToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxTb3VwLmNw
cDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdGF0aXN0aWNz
LmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdl
LmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2Nv
YS5tbToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29h
Lm1tOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUHJvY2Vzc01hYy5tbToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHA6Cisg
ICAgICAgICogUGx1Z2luUHJvY2Vzcy91bml4L1BsdWdpblByb2Nlc3NNYWluVW5peC5jcHA6Cisg
ICAgICAgICogU2hhcmVkL1BlcnNpc3RlbmN5VXRpbHMuY3BwOgorICAgICAgICAqIFNoYXJlZC9Q
bHVnaW5zL05ldHNjYXBlL3VuaXgvTmV0c2NhcGVQbHVnaW5Nb2R1bGVVbml4LmNwcDoKKyAgICAg
ICAgKiBTaGFyZWQvUGx1Z2lucy91bml4L1BsdWdpblNlYXJjaFBhdGguY3BwOgorICAgICAgICAq
IFNoYXJlZC9XZWJNZW1vcnlTYW1wbGVyLmg6CisgICAgICAgICogU2hhcmVkL2dsaWIvUHJvY2Vz
c0V4ZWN1dGFibGVQYXRoR0xpYi5jcHA6CisgICAgICAgICogU2hhcmVkL2lvcy9DaGlsZFByb2Nl
c3NJT1MubW06CisgICAgICAgICogU2hhcmVkL21hYy9DaGlsZFByb2Nlc3NNYWMubW06CisgICAg
ICAgICogU2hhcmVkL21hYy9TYW5kYm94RXh0ZW5zaW9uTWFjLm1tOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvQVBJV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHA6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdEZhdmljb25EYXRhYmFzZS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdEZpbGVDaG9vc2VyUmVxdWVzdC5jcHA6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvd2luL0FQSVdlYnNpdGVEYXRhU3RvcmVXaW4uY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
dXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Q29jb2EvRG93bmxvYWRDbGllbnQubW06CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBy
b2Nlc3NQb29sQ29jb2EubW06CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBs
Lm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5jcHA6Cisg
ICAgICAgICogVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9CdWJibGV3cmFwTGF1bmNoZXIuY3BwOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9nbGliL1Byb2Nlc3NMYXVuY2hlckdMaWIuY3BwOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL2d0ay9QbHVnaW5JbmZvQ2FjaGUuY3BwOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5Qcm9jZXNzUHJveHlNYWMubW06CisgICAg
ICAgICogVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5JbmZvU3RvcmVVbml4LmNwcDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3Bw
OgorICAgICAgICAqIFVJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmNwcDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHA6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2Vy
LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFT
dG9yZUNvY29hLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUHJveHlHTGli
LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNwcDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NQb29sR3RrLmNwcDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL2Zvcm1zL1dLRmlsZVVwbG9hZFBhbmVsLm1tOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy93aW4vV2Vi
UHJvY2Vzc1Bvb2xXaW4uY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHA6
CisgICAgICAgICogVUlQcm9jZXNzL3dwZS9XZWJQcm9jZXNzUG9vbFdQRS5jcHA6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRFeHRlbnNpb25NYW5h
Z2VyLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL2dsaWIvSW5qZWN0
ZWRCdW5kbGVHbGliLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVk
aWFLZXlTdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9ndGsvV2ViSW5zcGVjdG9yVUlHdGsuY3BwOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS93aW4vV2ViSW5zcGVjdG9yVUlXaW4uY3BwOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tOgorCiAyMDE5LTAxLTE4ICBQaGlsaXBwZSBO
b3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBbV1BFXSBBZGQgUXQgZXh0
ZW5zaW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCmluZGV4IDAyNTZiOWNkZTNkOWFiNWEyYWVkZGUyN2Ey
MjRkYWU3MDkzOTViN2YuLjIwYWE5NWJjNjUyN2ExMDdhN2I5MWU0MzliYWRjMjg4YWQ2OGNjNzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTktMDEtMTggIFJvc3Mg
S2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgorCisgICAgICAgIE1vdmUgRmlsZVN5
c3RlbSB0byBXVEYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5MzYwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogU3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuY3BwOgorICAgICAgICAqIFN0b3JhZ2UvU3Rv
cmFnZVN5bmNNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNw
cDoKKwogMjAxOS0wMS0xNyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFN0b3AgdXNpbmcgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdl
U2Vzc2lvbiBpbiBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggZjM2Y2Zk
NGUyOTBkMmE2YmQzYjdjZTM1MzE5ZjM5ZTM3OWE1MzE3OS4uNDdmZjdiNWM0ZGIwMjRkMzM3MDgx
NTUxMTk1ODI3NmI0MzU0YzQwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE0IEBACisyMDE5LTAxLTE4ICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255
LmNvbT4KKworICAgICAgICBNb3ZlIEZpbGVTeXN0ZW0gdG8gV1RGCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM2MDIKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1pc2MvV2ViTlNGaWxlTWFuYWdlckV4
dHJhcy5tbToKKyAgICAgICAgKiBTdG9yYWdlL1dlYkRhdGFiYXNlUHJvdmlkZXIubW06CisgICAg
ICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorCiAyMDE5LTAxLTE3ICBUcnVpdHQgU2F2ZWxsICA8
dHNhdmVsbEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjI0
MDEyNC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCAzYWNiNjdmNWMzNjVkZWQzMDIz
M2RjYzNjYmRlNDZiYmFkMGI4MmExLi5mYTU4ZDc1NGNhOTc1YzVlMDYwNDc2NzRlYTAxNmM5MDgw
YThmZTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIw
MTktMDEtMTggIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgorCisgICAg
ICAgIE1vdmUgRmlsZVN5c3RlbSB0byBXVEYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5MzYwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHA6CisgICAgICAg
ICogUGx1Z2lucy9QbHVnaW5QYWNrYWdlLmg6CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5TdHJl
YW0uaDoKKyAgICAgICAgKiBXZWJBcHBsaWNhdGlvbkNhY2hlLmNwcDoKKyAgICAgICAgKiBXZWJE
YXRhYmFzZU1hbmFnZXIuY3BwOgorICAgICAgICAqIFdlYkRvd25sb2FkQ3VybC5jcHA6CisgICAg
ICAgICogV2ViUHJlZmVyZW5jZXMuY3BwOgorICAgICAgICAqIFdlYlZpZXcuY3BwOgorCiAyMDE5
LTAxLTE3ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBb
V2luXVtIaWdoRFBJXSBSZXBhaW50IGdsaXRjaGVzIHdoZW4gc2Nyb2xsaW5nLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYv
V1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYTIyMzk0OTBkMTEyZGNhNDZhNWFh
NGJjZGVkMzVmZGJjYWFlYzllOS4uODAxMGE5OTRmZWE3YzRlZmQwYjIwYjc4NmE2ZDUzOTRlNTEw
YWJiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04OSw2
ICs4OSwxMSBAQAogCQk5MzkzNEJENTE4QTFGMTY5MDBEMEQ2QTEgLyogU3RyaW5nVmlld0NGLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzOTM0QkQ0
MThBMUYxNjkwMEQwRDZBMSAvKiBTdHJpbmdWaWV3Q0YuY3BwICovOyB9OwogCQk5M0YxOTkzRTE5
RDc5NThEMDBDMjM5MEIgLyogU3RyaW5nVmlldy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0YxOTkzRDE5RDc5NThEMDBDMjM5MEIgLyogU3RyaW5n
Vmlldy5jcHAgKi87IH07CiAJCTlCQzcwRjA1MTc2QzM3OUQwMDEwMURFQyAvKiBBdG9taWNTdHJp
bmdUYWJsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5QkM3MEYwNDE3NkMzNzlEMDAxMDFERUMgLyogQXRvbWljU3RyaW5nVGFibGUuY3BwICovOyB9
OworCQlBMzMxRDk1QjIxRjI0OTkyMDA5RjAyQUEgLyogRmlsZVN5c3RlbS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMzMxRDk1QTIxRjI0OTkyMDA5
RjAyQUEgLyogRmlsZVN5c3RlbS5jcHAgKi87IH07CisJCUEzMzFEOTVEMjFGMjQ5RTQwMDlGMDJB
QSAvKiBGaWxlU3lzdGVtQ0YuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTMzMUQ5NUMyMUYyNDlFNDAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1DRi5jcHAg
Ki87IH07CisJCUEzMzFEOTVGMjFGMjQ5RjYwMDlGMDJBQSAvKiBGaWxlU3lzdGVtQ29jb2EubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMzMxRDk1RTIx
RjI0OUY2MDA5RjAyQUEgLyogRmlsZVN5c3RlbUNvY29hLm1tICovOyB9OworCQlBMzMxRDk2MTIx
RjI0QTBBMDA5RjAyQUEgLyogRmlsZVN5c3RlbU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzMzFEOTYwMjFGMjRBMEEwMDlGMDJBQSAvKiBGaWxl
U3lzdGVtTWFjLm1tICovOyB9OworCQlBMzMxRDk2NzIxRjI0QUJEMDA5RjAyQUEgLyogRmlsZVN5
c3RlbVBPU0lYLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEEzMzFEOTY2MjFGMjRBQkQwMDlGMDJBQSAvKiBGaWxlU3lzdGVtUE9TSVguY3BwICovOyB9
OwogCQlBM0I3MjVFQzk4NzQ0NkFEOTNGMUE0NDAgLyogUmFuZG9tRGV2aWNlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM4RjU5N0NBMkE1NzQxN0ZC
QUI5MkZENiAvKiBSYW5kb21EZXZpY2UuY3BwICovOyB9OwogCQlBM0U0REQ5MzFGM0E4MDM0MDBE
RUQwQjQgLyogVGV4dFN0cmVhbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBM0U0REQ5MTFGM0E4MDM0MDBERUQwQjQgLyogVGV4dFN0cmVhbS5jcHAg
Ki87IH07CiAJCUE1QkExNUYzMTgyNDMzQTkwMEE4MkU2OSAvKiBTdHJpbmdDb2NvYS5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QkExNUYyMTgyNDMz
QTkwMEE4MkU2OSAvKiBTdHJpbmdDb2NvYS5tbSAqLzsgfTsKQEAgLTQzMCw2ICs0MzUsMTMgQEAK
IAkJOUM2N0M1NDI1ODkzNDhFMjg1QjQ5Njk5IC8qIEluZGV4ZWRDb250YWluZXJJdGVyYXRvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmRleGVkQ29udGFpbmVySXRlcmF0
b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTMwRDQxMkMxRjBERTBCQTAwQjcx
OTU0IC8qIFNvZnRMaW5raW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNv
ZnRMaW5raW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzMEQ0MTJEMUYwREUx
M0YwMEI3MTk1NCAvKiBTb2Z0TGlua2luZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTb2Z0TGlua2luZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMzMxRDk1
ODIxRjI0OTc4MDA5RjAyQUEgLyogRmlsZU1ldGFkYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEZpbGVNZXRhZGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBMzMxRDk1OTIxRjI0OTkyMDA5RjAyQUEgLyogRmlsZVN5c3RlbS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBGaWxlU3lzdGVtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUEzMzFEOTVBMjFGMjQ5OTIwMDlGMDJBQSAvKiBGaWxlU3lzdGVtLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZpbGVTeXN0ZW0uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlBMzMxRDk1QzIxRjI0OUU0MDA5RjAyQUEgLyogRmlsZVN5c3Rl
bUNGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZpbGVTeXN0ZW1D
Ri5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEzMzFEOTVFMjFGMjQ5RjYwMDlG
MDJBQSAvKiBGaWxlU3lzdGVtQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBGaWxlU3lzdGVtQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUEzMzFEOTYwMjFGMjRBMEEwMDlGMDJBQSAvKiBGaWxlU3lzdGVtTWFjLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRmlsZVN5c3RlbU1hYy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTMzMUQ5NjYyMUYyNEFCRDAwOUYwMkFBIC8qIEZpbGVT
eXN0ZW1QT1NJWC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxl
U3lzdGVtUE9TSVguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMzZFMTZGNzIx
NkZGODI4MDA4REQ4N0UgLyogV1RGU2VtYXBob3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdURlNlbWFwaG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
M0FCNkU2QTFGM0UxQUQ2MDA5QzE0QjEgLyogVmFsdWVUb1N0cmluZy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBWYWx1ZVRvU3RyaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUEzRTRERDkxMUYzQTgwMzQwMERFRDBCNCAvKiBUZXh0U3RyZWFtLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRTdHJlYW0uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzE3LDYgKzcyOSw3IEBACiAJCQljaGlsZHJlbiA9ICgK
IAkJCQk1QzFGMDU5MTIxNjQzNTZCMDAzOTMwMkMgLyogQ0ZVUkxFeHRyYXMuY3BwICovLAogCQkJ
CTVDMUYwNTkyMjE2NDM1NkIwMDM5MzAyQyAvKiBDRlVSTEV4dHJhcy5oICovLAorCQkJCUEzMzFE
OTVDMjFGMjQ5RTQwMDlGMDJBQSAvKiBGaWxlU3lzdGVtQ0YuY3BwICovLAogCQkJCUMyQkNGQzQx
MUY2MUQ2MTYwMEM5MjIyQyAvKiBMYW5ndWFnZUNGLmNwcCAqLywKIAkJCQkyQ0RFRDBFRTE4MTE1
QzM4MDA0REJBNzAgLyogUnVuTG9vcENGLmNwcCAqLywKIAkJCQkxQUZERTY0NzE5NTIwMUMzMDBD
NDhGRkEgLyogVHlwZUNhc3RzQ0YuaCAqLywKQEAgLTc3NCw2ICs3ODcsMTQgQEAKIAkJCW5hbWUg
PSBTb3VyY2U7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQlBMzMxRDk2MzIx
RjI0QTJFMDA5RjAyQUEgLyogcG9zaXggKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNo
aWxkcmVuID0gKAorCQkJCUEzMzFEOTY2MjFGMjRBQkQwMDlGMDJBQSAvKiBGaWxlU3lzdGVtUE9T
SVguY3BwICovLAorCQkJKTsKKwkJCXBhdGggPSBwb3NpeDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CisJCX07CiAJCUE1QkExNUYxMTgyNDMzOUYwMEE4MkU2OSAvKiBjb2NvYSAqLyA9IHsK
IAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC04MDcsNiArODI4LDcgQEAK
IAkJCQkxRkE0N0M4NzE1MjUwMkRBMDA1NjhEMUIgLyogaW9zICovLAogCQkJCUE4QTQ3MkM0MTUx
QTgyNUEwMDQxMjNGRiAvKiBtYWMgKi8sCiAJCQkJRTQzQTQ2ODUxRTIyOEI1NzAwMjc2QjA1IC8q
IHBlcnNpc3RlbmNlICovLAorCQkJCUEzMzFEOTYzMjFGMjRBMkUwMDlGMDJBQSAvKiBwb3NpeCAq
LywKIAkJCQlDRUY0ODIwQzE5REEzNDc2MDBDQzA0QjggLyogc3BpICovLAogCQkJCUE4QTQ3MzFC
MTUxQTgyNUIwMDQxMjNGRiAvKiB0ZXh0ICovLAogCQkJCUE4QTQ3MzM5MTUxQTgyNUIwMDQxMjNG
RiAvKiB0aHJlYWRzICovLApAQCAtODk0LDggKzkxNiwxMSBAQAogCQkJCUE4QTQ3MkEyMTUxQTgy
NUEwMDQxMjNGRiAvKiBGYXN0TWFsbG9jLmggKi8sCiAJCQkJMEY3OUM3QzMxRTczNTExODAwRUIz
NEQxIC8qIEZhc3RUTFMuaCAqLywKIAkJCQlCMzhGRDdCQzE2ODk1M0U4MDA2NUM5NjkgLyogRmVh
dHVyZURlZmluZXMuaCAqLywKKwkJCQlBMzMxRDk1ODIxRjI0OTc4MDA5RjAyQUEgLyogRmlsZU1l
dGFkYXRhLmggKi8sCiAJCQkJMEY5RDMzNUIxNjVEQkE3MzAwNUFEMzg3IC8qIEZpbGVQcmludFN0
cmVhbS5jcHAgKi8sCiAJCQkJMEY5RDMzNUMxNjVEQkE3MzAwNUFEMzg3IC8qIEZpbGVQcmludFN0
cmVhbS5oICovLAorCQkJCUEzMzFEOTVBMjFGMjQ5OTIwMDlGMDJBQSAvKiBGaWxlU3lzdGVtLmNw
cCAqLywKKwkJCQlBMzMxRDk1OTIxRjI0OTkyMDA5RjAyQUEgLyogRmlsZVN5c3RlbS5oICovLAog
CQkJCTBGMkI2NkE1MTdCNkI0RjcwMEE3QUUzRiAvKiBGbGlwQnl0ZXMuaCAqLywKIAkJCQlGRTg2
QTg3NDFFNTk0NDAyMDAxMTFCQkYgLyogRm9yYmlkSGVhcEFsbG9jYXRpb24uaCAqLywKIAkJCQlB
OEE0NzJBNjE1MUE4MjVBMDA0MTIzRkYgLyogRm9yd2FyZC5oICovLApAQCAtMTE5MCw2ICsxMjE1
LDcgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTFBNDI4QjhCMUM4Rjg5REQwMDUxRTlFQiAvKiBB
cHBLaXRDb21wYXRpYmlsaXR5RGVjbGFyYXRpb25zLmggKi8sCiAJCQkJMUFDQUREODIxODg0NDgw
MTAwRDhCNzFEIC8qIERlcHJlY2F0ZWRTeW1ib2xzVXNlZEJ5U2FmYXJpLm1tICovLAorCQkJCUEz
MzFEOTYwMjFGMjRBMEEwMDlGMDJBQSAvKiBGaWxlU3lzdGVtTWFjLm1tICovLAogCQkJCTUzNTM0
RjI5MUVDMEUxMEUwMDE0MUIyRiAvKiBNYWNoRXhjZXB0aW9ucy5kZWZzICovLAogCQkJKTsKIAkJ
CXBhdGggPSBtYWM7CkBAIC0xMzUxLDYgKzEzNzcsNyBAQAogCQkJCUUzOEM0MTI0MUVCNEUwNEMw
MDQyOTU3RCAvKiBDUFVUaW1lQ29jb2EuY3BwICovLAogCQkJCTE0M0RERTk3MjBDOEJFOTkwMDdG
NzZGQSAvKiBFbnRpdGxlbWVudHMuaCAqLywKIAkJCQkxNDNEREU5NTIwQzhCQzM3MDA3Rjc2RkEg
LyogRW50aXRsZW1lbnRzLm1tICovLAorCQkJCUEzMzFEOTVFMjFGMjQ5RjYwMDlGMDJBQSAvKiBG
aWxlU3lzdGVtQ29jb2EubW0gKi8sCiAJCQkJN0E2RUJBMzMyMDc0NkMzNDAwNEY5QzQ0IC8qIE1h
Y2hTZW5kUmlnaHQuY3BwICovLAogCQkJCUE4QTQ3MkM1MTUxQTgyNUEwMDQxMjNGRiAvKiBNYWlu
VGhyZWFkQ29jb2EubW0gKi8sCiAJCQkJQURGMkNFNjUxRTM5RjEwNjAwNjg4OURCIC8qIE1lbW9y
eUZvb3RwcmludENvY29hLmNwcCAqLywKQEAgLTE0NzYsNiArMTUwMywxMSBAQAogCQkJCTBGN0M1
RkI2MUQ4ODVDRjIwMDQ0RjVFMiAvKiBGYXN0Qml0VmVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUE4QTQ3M0MzMTUxQTgyNUIwMDQxMjNGRiAvKiBGYXN0TWFsbG9jLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGOUQzMzYwMTY1REJBNzMwMDVBRDM4NyAvKiBGaWxlUHJpbnRTdHJlYW0uY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJQTMzMUQ5NUIyMUYyNDk5MjAwOUYwMkFBIC8qIEZpbGVTeXN0
ZW0uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTMzMUQ5NUQyMUYyNDlFNDAwOUYwMkFBIC8qIEZp
bGVTeXN0ZW1DRi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBMzMxRDk1RjIxRjI0OUY2MDA5RjAy
QUEgLyogRmlsZVN5c3RlbUNvY29hLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQTMzMUQ5NjEyMUYy
NEEwQTAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1NYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQlBMzMx
RDk2NzIxRjI0QUJEMDA5RjAyQUEgLyogRmlsZVN5c3RlbVBPU0lYLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUE4QTQ3M0I1MTUxQTgyNUIwMDQxMjNGRiAvKiBmaXhlZC1kdG9hLmNjIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMUExRDhCOUUxNzMxODc5ODAwMTQxREE0IC8qIEZ1bmN0aW9uRGlzcGF0Y2hl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjVCRjE3NjFGMjNENDlBMDAyOUQ5MUQgLyogR2ln
YWNhZ2UuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFr
ZUxpc3RzLnR4dCBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CmluZGV4IGNlZTFjY2Ux
ZTU3MTg0ZDEzYmQyY2Q1MTllZjZhMjBkZmZiMWE5NmEuLjdkODU4MzMyMGY0OWM2MTA0MDFjN2I4
YWI0NDYzOTZkODhjMTUwZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMu
dHh0CisrKyBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CkBAIC02MSw3ICs2MSw5IEBA
IHNldChXVEZfUFVCTElDX0hFQURFUlMKICAgICBGYXN0TWFsbG9jLmgKICAgICBGYXN0VExTLmgK
ICAgICBGZWF0dXJlRGVmaW5lcy5oCisgICAgRmlsZU1ldGFkYXRhLmgKICAgICBGaWxlUHJpbnRT
dHJlYW0uaAorICAgIEZpbGVTeXN0ZW0uaAogICAgIEZsaXBCeXRlcy5oCiAgICAgRm9yYmlkSGVh
cEFsbG9jYXRpb24uaAogICAgIEZvcndhcmQuaApAQCAtMzUzLDYgKzM1NSw3IEBAIHNldChXVEZf
U09VUkNFUwogICAgIEZhc3RCaXRWZWN0b3IuY3BwCiAgICAgRmFzdE1hbGxvYy5jcHAKICAgICBG
aWxlUHJpbnRTdHJlYW0uY3BwCisgICAgRmlsZVN5c3RlbS5jcHAKICAgICBGdW5jdGlvbkRpc3Bh
dGNoZXIuY3BwCiAgICAgR2lnYWNhZ2UuY3BwCiAgICAgR2xvYmFsVmVyc2lvbi5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVNZXRhZGF0YS5oIGIvU291cmNlL1dURi93dGYvRmls
ZU1ldGFkYXRhLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjhkNzc4OTI1ZTQ5YmI2MzdhYjRkNTE0ZDlhOTQwYzcz
ZDM1NTY1MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVNZXRhZGF0YS5o
CkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5o
PgorCituYW1lc3BhY2UgV1RGIHsKKworc3RydWN0IEZpbGVNZXRhZGF0YSB7CisgICAgLy8gVGhl
IGxhc3QgbW9kaWZpY2F0aW9uIHRpbWUgb2YgdGhlIGZpbGUsIGluIHNlY29uZHMuCisgICAgV2Fs
bFRpbWUgbW9kaWZpY2F0aW9uVGltZTsKKworICAgIC8vIFRoZSBsZW5ndGggb2YgdGhlIGZpbGUg
aW4gYnl0ZXMuCisgICAgbG9uZyBsb25nIGxlbmd0aDsKKworICAgIGJvb2wgaXNIaWRkZW47CisK
KyAgICBlbnVtIGNsYXNzIFR5cGUgeyBGaWxlLCBEaXJlY3RvcnksIFN5bWJvbGljTGluayB9Owor
ICAgIFR5cGUgdHlwZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgorCit1c2luZyBXVEY6OkZp
bGVNZXRhZGF0YTsKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAg
Yi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOGU2ZWQ5NDBiM2Qw
NGRkZjg0M2RkYTM2ZmFlNDkwNzE3NTI4MDY5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dU
Ri93dGYvRmlsZVN5c3RlbS5jcHAKQEAgLTAsMCArMSwzNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDctMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgorCisjaW5jbHVkZSA8d3Rm
L0ZpbGVNZXRhZGF0YS5oPgorI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KKyNpbmNsdWRlIDx3
dGYvU2NvcGUuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5oPgorCisjaWYgIU9TKFdJTkRPV1MpCisjaW5jbHVkZSA8ZmNu
dGwuaD4KKyNpbmNsdWRlIDxzeXMvbW1hbi5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5j
bHVkZSA8dW5pc3RkLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFdURiB7CisKK25hbWVzcGFjZSBG
aWxlU3lzdGVtIHsKKworLy8gVGhlIGZvbGxvd2luZyBsb3dlci1BU0NJSSBjaGFyYWN0ZXJzIG5l
ZWQgZXNjYXBpbmcgdG8gYmUgdXNlZCBpbiBhIGZpbGVuYW1lCisvLyBhY3Jvc3MgYWxsIHN5c3Rl
bXMsIGluY2x1ZGluZyBXaW5kb3dzOgorLy8gICAgIC0gVW5wcmludGFibGUgQVNDSUkgKDAwLTFG
KQorLy8gICAgIC0gU3BhY2UgICAgICAgICAgICAgKDIwKQorLy8gICAgIC0gRG91YmxlIHF1b3Rl
ICAgICAgKDIyKQorLy8gICAgIC0gUGVyY2VudCAgICAgICAgICAgKDI1KSAoZXNjYXBlZCBiZWNh
dXNlIGl0IGlzIG91ciBlc2NhcGUgY2hhcmFjdGVyKQorLy8gICAgIC0gQXN0ZXJpc2sgICAgICAg
ICAgKDJBKQorLy8gICAgIC0gU2xhc2ggICAgICAgICAgICAgKDJGKQorLy8gICAgIC0gQ29sb24g
ICAgICAgICAgICAgKDNBKQorLy8gICAgIC0gTGVzcy10aGFuICAgICAgICAgKDNDKQorLy8gICAg
IC0gR3JlYXRlci10aGFuICAgICAgKDNFKQorLy8gICAgIC0gUXVlc3Rpb24gTWFyayAgICAgKDNG
KQorLy8gICAgIC0gQmFja3NsYXNoICAgICAgICAgKDVDKQorLy8gICAgIC0gUGlwZSAgICAgICAg
ICAgICAgKDdDKQorLy8gICAgIC0gRGVsZXRlICAgICAgICAgICAgKDdGKQorCitzdGF0aWMgY29u
c3QgYm9vbCBuZWVkc0VzY2FwaW5nWzEyOF0gPSB7CisgICAgdHJ1ZSwgIHRydWUsICB0cnVlLCAg
dHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICAvKiAwMC0wNyAqLworICAgIHRydWUs
ICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgLyogMDgt
MEYgKi8KKworICAgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRy
dWUsICB0cnVlLCAgLyogMTAtMTcgKi8KKyAgICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAg
dHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIC8qIDE4LTFGICovCisKKyAgICB0cnVlLCAgZmFs
c2UsIHRydWUsICBmYWxzZSwgZmFsc2UsIHRydWUsICBmYWxzZSwgZmFsc2UsIC8qIDIwLTI3ICov
CisgICAgZmFsc2UsIGZhbHNlLCB0cnVlLCAgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRy
dWUsICAvKiAyOC0yRiAqLworICAgIAorICAgIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBm
YWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgLyogMzAtMzcgKi8KKyAgICBmYWxzZSwgZmFsc2Us
IHRydWUsICBmYWxzZSwgdHJ1ZSwgIGZhbHNlLCB0cnVlLCAgdHJ1ZSwgIC8qIDM4LTNGICovCisg
ICAgCisgICAgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2Us
IGZhbHNlLCAvKiA0MC00NyAqLworICAgIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxz
ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgLyogNDgtNEYgKi8KKyAgICAKKyAgICBmYWxzZSwgZmFs
c2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIC8qIDUwLTU3ICov
CisgICAgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUsICBmYWxzZSwgZmFsc2UsIGZh
bHNlLCAvKiA1OC01RiAqLworICAgIAorICAgIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBm
YWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgLyogNjAtNjcgKi8KKyAgICBmYWxzZSwgZmFsc2Us
IGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIC8qIDY4LTZGICovCisg
ICAgCisgICAgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2Us
IGZhbHNlLCAvKiA3MC03NyAqLworICAgIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVl
LCAgZmFsc2UsIGZhbHNlLCB0cnVlLCAgLyogNzgtN0YgKi8KK307CisKK3N0YXRpYyBpbmxpbmUg
Ym9vbCBzaG91bGRFc2NhcGVVQ2hhcihVQ2hhciBjaGFyYWN0ZXIsIFVDaGFyIHByZXZpb3VzQ2hh
cmFjdGVyLCBVQ2hhciBuZXh0Q2hhcmFjdGVyKQoreworICAgIGlmIChjaGFyYWN0ZXIgPD0gMTI3
KQorICAgICAgICByZXR1cm4gbmVlZHNFc2NhcGluZ1tjaGFyYWN0ZXJdOworCisgICAgaWYgKFUx
Nl9JU19MRUFEKGNoYXJhY3RlcikgJiYgIVUxNl9JU19UUkFJTChuZXh0Q2hhcmFjdGVyKSkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAoVTE2X0lTX1RSQUlMKGNoYXJhY3RlcikgJiYg
IVUxNl9JU19MRUFEKHByZXZpb3VzQ2hhcmFjdGVyKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1N0cmluZyBlbmNvZGVGb3JGaWxlTmFtZShjb25zdCBT
dHJpbmcmIGlucHV0U3RyaW5nKQoreworICAgIHVuc2lnbmVkIGxlbmd0aCA9IGlucHV0U3RyaW5n
Lmxlbmd0aCgpOworICAgIGlmICghbGVuZ3RoKQorICAgICAgICByZXR1cm4gaW5wdXRTdHJpbmc7
CisKKyAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKKyAgICByZXN1bHQucmVzZXJ2ZUNhcGFjaXR5
KGxlbmd0aCk7CisKKyAgICBVQ2hhciBwcmV2aW91c0NoYXJhY3RlcjsKKyAgICBVQ2hhciBjaGFy
YWN0ZXIgPSAwOworICAgIFVDaGFyIG5leHRDaGFyYWN0ZXIgPSBpbnB1dFN0cmluZ1swXTsKKyAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgcHJldmlv
dXNDaGFyYWN0ZXIgPSBjaGFyYWN0ZXI7CisgICAgICAgIGNoYXJhY3RlciA9IG5leHRDaGFyYWN0
ZXI7CisgICAgICAgIG5leHRDaGFyYWN0ZXIgPSBpICsgMSA8IGxlbmd0aCA/IGlucHV0U3RyaW5n
W2kgKyAxXSA6IDA7CisKKyAgICAgICAgaWYgKHNob3VsZEVzY2FwZVVDaGFyKGNoYXJhY3Rlciwg
cHJldmlvdXNDaGFyYWN0ZXIsIG5leHRDaGFyYWN0ZXIpKSB7CisgICAgICAgICAgICBpZiAoY2hh
cmFjdGVyIDw9IDI1NSkgeworICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyUnKTsKKyAg
ICAgICAgICAgICAgICBhcHBlbmRCeXRlQXNIZXgoY2hhcmFjdGVyLCByZXN1bHQpOworICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiJSsi
KTsKKyAgICAgICAgICAgICAgICBhcHBlbmRCeXRlQXNIZXgoY2hhcmFjdGVyID4+IDgsIHJlc3Vs
dCk7CisgICAgICAgICAgICAgICAgYXBwZW5kQnl0ZUFzSGV4KGNoYXJhY3RlciwgcmVzdWx0KTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICByZXN1bHQuYXBwZW5k
KGNoYXJhY3Rlcik7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOworfQor
CitTdHJpbmcgZGVjb2RlRnJvbUZpbGVuYW1lKGNvbnN0IFN0cmluZyYgaW5wdXRTdHJpbmcpCit7
CisgICAgdW5zaWduZWQgbGVuZ3RoID0gaW5wdXRTdHJpbmcubGVuZ3RoKCk7CisgICAgaWYgKCFs
ZW5ndGgpCisgICAgICAgIHJldHVybiBpbnB1dFN0cmluZzsKKworICAgIFN0cmluZ0J1aWxkZXIg
cmVzdWx0OworICAgIHJlc3VsdC5yZXNlcnZlQ2FwYWNpdHkobGVuZ3RoKTsKKworICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICBpZiAoaW5wdXRTdHJp
bmdbaV0gIT0gJyUnKSB7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGlucHV0U3RyaW5nW2ld
KTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgdGhl
IGlucHV0IHN0cmluZyBpcyBhIHZhbGlkIGVuY29kZWQgZmlsZW5hbWUsIGl0IG11c3QgYmUgYXQg
bGVhc3QgMiBjaGFyYWN0ZXJzIGxvbmdlcgorICAgICAgICAvLyB0aGFuIHRoZSBjdXJyZW50IGlu
ZGV4IHRvIGFjY291bnQgZm9yIHRoaXMgcGVyY2VudCBlbmNvZGVkIHZhbHVlLgorICAgICAgICBp
ZiAoaSArIDIgPj0gbGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuIHsgfTsKKworICAgICAgICBp
ZiAoaW5wdXRTdHJpbmdbaSsxXSAhPSAnKycpIHsKKyAgICAgICAgICAgIGlmICghaXNBU0NJSUhl
eERpZ2l0KGlucHV0U3RyaW5nW2kgKyAxXSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsK
KyAgICAgICAgICAgIGlmICghaXNBU0NJSUhleERpZ2l0KGlucHV0U3RyaW5nW2kgKyAyXSkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQodG9B
U0NJSUhleFZhbHVlKGlucHV0U3RyaW5nW2kgKyAxXSwgaW5wdXRTdHJpbmdbaSArIDJdKSk7Cisg
ICAgICAgICAgICBpICs9IDI7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisg
ICAgICAgIC8vIElmIHRoZSBpbnB1dCBzdHJpbmcgaXMgYSB2YWxpZCBlbmNvZGVkIGZpbGVuYW1l
LCBpdCBtdXN0IGJlIGF0IGxlYXN0IDUgY2hhcmFjdGVycyBsb25nZXIKKyAgICAgICAgLy8gdGhh
biB0aGUgY3VycmVudCBpbmRleCB0byBhY2NvdW50IGZvciB0aGlzIHBlcmNlbnQgZW5jb2RlZCB2
YWx1ZS4KKyAgICAgICAgaWYgKGkgKyA1ID49IGxlbmd0aCkKKyAgICAgICAgICAgIHJldHVybiB7
IH07CisKKyAgICAgICAgaWYgKCFpc0FTQ0lJSGV4RGlnaXQoaW5wdXRTdHJpbmdbaSArIDJdKSkK
KyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIGlmICghaXNBU0NJSUhleERpZ2l0KGlu
cHV0U3RyaW5nW2kgKyAzXSkpCisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICBpZiAo
IWlzQVNDSUlIZXhEaWdpdChpbnB1dFN0cmluZ1tpICsgNF0pKQorICAgICAgICAgICAgcmV0dXJu
IHsgfTsKKyAgICAgICAgaWYgKCFpc0FTQ0lJSGV4RGlnaXQoaW5wdXRTdHJpbmdbaSArIDVdKSkK
KyAgICAgICAgICAgIHJldHVybiB7IH07CisKKyAgICAgICAgcmVzdWx0LmFwcGVuZCh0b0FTQ0lJ
SGV4VmFsdWUoaW5wdXRTdHJpbmdbaSArIDJdLCBpbnB1dFN0cmluZ1tpICsgM10pIDw8IDggfCB0
b0FTQ0lJSGV4VmFsdWUoaW5wdXRTdHJpbmdbaSArIDRdLCBpbnB1dFN0cmluZ1tpICsgNV0pKTsK
KyAgICAgICAgaSArPSA1OworICAgIH0KKworICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsK
K30KKworU3RyaW5nIGxhc3RDb21wb25lbnRPZlBhdGhJZ25vcmluZ1RyYWlsaW5nU2xhc2goY29u
c3QgU3RyaW5nJiBwYXRoKQoreworI2lmIE9TKFdJTkRPV1MpCisgICAgY2hhciBwYXRoU2VwYXJh
dG9yID0gJ1xcJzsKKyNlbHNlCisgICAgY2hhciBwYXRoU2VwYXJhdG9yID0gJy8nOworI2VuZGlm
CisKKyAgICBhdXRvIHBvc2l0aW9uID0gcGF0aC5yZXZlcnNlRmluZChwYXRoU2VwYXJhdG9yKTsK
KyAgICBpZiAocG9zaXRpb24gPT0gbm90Rm91bmQpCisgICAgICAgIHJldHVybiBwYXRoOworCisg
ICAgc2l6ZV90IGVuZE9mU3Vic3RyaW5nID0gcGF0aC5sZW5ndGgoKSAtIDE7CisgICAgaWYgKHBv
c2l0aW9uID09IGVuZE9mU3Vic3RyaW5nKSB7CisgICAgICAgIC0tZW5kT2ZTdWJzdHJpbmc7Cisg
ICAgICAgIHBvc2l0aW9uID0gcGF0aC5yZXZlcnNlRmluZChwYXRoU2VwYXJhdG9yLCBlbmRPZlN1
YnN0cmluZyk7CisgICAgfQorCisgICAgcmV0dXJuIHBhdGguc3Vic3RyaW5nKHBvc2l0aW9uICsg
MSwgZW5kT2ZTdWJzdHJpbmcgLSBwb3NpdGlvbik7Cit9CisKK2Jvb2wgYXBwZW5kRmlsZUNvbnRl
bnRzVG9GaWxlSGFuZGxlKGNvbnN0IFN0cmluZyYgcGF0aCwgUGxhdGZvcm1GaWxlSGFuZGxlJiB0
YXJnZXQpCit7CisgICAgYXV0byBzb3VyY2UgPSBvcGVuRmlsZShwYXRoLCBGaWxlT3Blbk1vZGU6
OlJlYWQpOworCisgICAgaWYgKCFpc0hhbmRsZVZhbGlkKHNvdXJjZSkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIHN0YXRpYyBpbnQgYnVmZmVyU2l6ZSA9IDEgPDwgMTk7CisgICAgVmVj
dG9yPGNoYXI+IGJ1ZmZlcihidWZmZXJTaXplKTsKKworICAgIGF1dG8gZmlsZUNsb3NlciA9IFdU
Rjo6bWFrZVNjb3BlRXhpdChbc291cmNlXSgpIHsKKyAgICAgICAgUGxhdGZvcm1GaWxlSGFuZGxl
IGhhbmRsZSA9IHNvdXJjZTsKKyAgICAgICAgY2xvc2VGaWxlKGhhbmRsZSk7CisgICAgfSk7CisK
KyAgICBkbyB7CisgICAgICAgIGludCByZWFkQnl0ZXMgPSByZWFkRnJvbUZpbGUoc291cmNlLCBi
dWZmZXIuZGF0YSgpLCBidWZmZXJTaXplKTsKKyAgICAgICAgCisgICAgICAgIGlmIChyZWFkQnl0
ZXMgPCAwKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGlmICh3cml0ZVRv
RmlsZSh0YXJnZXQsIGJ1ZmZlci5kYXRhKCksIHJlYWRCeXRlcykgIT0gcmVhZEJ5dGVzKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGlmIChyZWFkQnl0ZXMgPCBidWZmZXJT
aXplKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfSB3aGlsZSAodHJ1ZSk7CisKKyAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworICAgIAorYm9vbCBmaWxlc0hhdmVTYW1lVm9s
dW1lKGNvbnN0IFN0cmluZyYgZmlsZUEsIGNvbnN0IFN0cmluZyYgZmlsZUIpCit7CisgICAgYXV0
byBmc1JlcEZpbGVBID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVBKTsKKyAgICBhdXRv
IGZzUmVwRmlsZUIgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZUIpOworICAgIAorICAg
IGlmIChmc1JlcEZpbGVBLmlzTnVsbCgpIHx8IGZzUmVwRmlsZUIuaXNOdWxsKCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CisKKyAgICBhdXRvIGZp
bGVBRGV2ID0gZ2V0RmlsZURldmljZUlkKGZzUmVwRmlsZUEpOworICAgIGF1dG8gZmlsZUJEZXYg
PSBnZXRGaWxlRGV2aWNlSWQoZnNSZXBGaWxlQik7CisKKyAgICBpZiAoZmlsZUFEZXYgJiYgZmls
ZUJEZXYpCisgICAgICAgIHJlc3VsdCA9IChmaWxlQURldiA9PSBmaWxlQkRldik7CisgICAgCisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKworI2lmICFQTEFURk9STShNQUMpCisKK3ZvaWQgc2V0TWV0
YWRhdGFVUkwoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikKK3sK
K30KKworYm9vbCBjYW5FeGNsdWRlRnJvbUJhY2t1cCgpCit7CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCitib29sIGV4Y2x1ZGVGcm9tQmFja3VwKGNvbnN0IFN0cmluZyYpCit7CisgICAgcmV0dXJu
IGZhbHNlOworfQorCisjZW5kaWYKKworTWFwcGVkRmlsZURhdGE6On5NYXBwZWRGaWxlRGF0YSgp
Cit7CisjaWYgIU9TKFdJTkRPV1MpCisgICAgaWYgKCFtX2ZpbGVEYXRhKQorICAgICAgICByZXR1
cm47CisgICAgbXVubWFwKG1fZmlsZURhdGEsIG1fZmlsZVNpemUpOworI2VuZGlmCit9CisKK01h
cHBlZEZpbGVEYXRhOjpNYXBwZWRGaWxlRGF0YShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBib29s
JiBzdWNjZXNzKQoreworI2lmIE9TKFdJTkRPV1MpCisgICAgLy8gRklYTUU6IEltcGxlbWVudCBt
YXBwaW5nCisgICAgc3VjY2VzcyA9IGZhbHNlOworI2Vsc2UKKyAgICBDU3RyaW5nIGZzUmVwID0g
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVQYXRoKTsKKyAgICBpbnQgZmQgPSAhZnNSZXAu
aXNOdWxsKCkgPyBvcGVuKGZzUmVwLmRhdGEoKSwgT19SRE9OTFkpIDogLTE7CisgICAgaWYgKGZk
IDwgMCkgeworICAgICAgICBzdWNjZXNzID0gZmFsc2U7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBzdHJ1Y3Qgc3RhdCBmaWxlU3RhdDsKKyAgICBpZiAoZnN0YXQoZmQsICZmaWxlU3Rh
dCkpIHsKKyAgICAgICAgY2xvc2UoZmQpOworICAgICAgICBzdWNjZXNzID0gZmFsc2U7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBzaXplOworICAgIGlmICghV1RGOjpj
b252ZXJ0U2FmZWx5KGZpbGVTdGF0LnN0X3NpemUsIHNpemUpKSB7CisgICAgICAgIGNsb3NlKGZk
KTsKKyAgICAgICAgc3VjY2VzcyA9IGZhbHNlOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgaWYgKCFzaXplKSB7CisgICAgICAgIGNsb3NlKGZkKTsKKyAgICAgICAgc3VjY2VzcyA9IHRy
dWU7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB2b2lkKiBkYXRhID0gbW1hcCgwLCBz
aXplLCBQUk9UX1JFQUQsIE1BUF9GSUxFIHwgTUFQX1NIQVJFRCwgZmQsIDApOworICAgIGNsb3Nl
KGZkKTsKKworICAgIGlmIChkYXRhID09IE1BUF9GQUlMRUQpIHsKKyAgICAgICAgc3VjY2VzcyA9
IGZhbHNlOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc3VjY2VzcyA9IHRydWU7Cisg
ICAgbV9maWxlRGF0YSA9IGRhdGE7CisgICAgbV9maWxlU2l6ZSA9IHNpemU7CisjZW5kaWYKK30K
KworUGxhdGZvcm1GaWxlSGFuZGxlIG9wZW5BbmRMb2NrRmlsZShjb25zdCBTdHJpbmcmIHBhdGgs
IEZpbGVPcGVuTW9kZSBvcGVuTW9kZSwgT3B0aW9uU2V0PEZpbGVMb2NrTW9kZT4gbG9ja01vZGUp
Cit7CisgICAgYXV0byBoYW5kbGUgPSBvcGVuRmlsZShwYXRoLCBvcGVuTW9kZSk7CisgICAgaWYg
KGhhbmRsZSA9PSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQorICAgICAgICByZXR1cm4gaW52
YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKKworI2lmIFVTRShGSUxFX0xPQ0spCisgICAgYm9vbCBs
b2NrZWQgPSBsb2NrRmlsZShoYW5kbGUsIGxvY2tNb2RlKTsKKyAgICBBU1NFUlRfVU5VU0VEKGxv
Y2tlZCwgbG9ja2VkKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGxvY2tNb2RlKTsKKyNlbmRp
ZgorCisgICAgcmV0dXJuIGhhbmRsZTsKK30KKwordm9pZCB1bmxvY2tBbmRDbG9zZUZpbGUoUGxh
dGZvcm1GaWxlSGFuZGxlIGhhbmRsZSkKK3sKKyNpZiBVU0UoRklMRV9MT0NLKQorICAgIGJvb2wg
dW5sb2NrZWQgPSB1bmxvY2tGaWxlKGhhbmRsZSk7CisgICAgQVNTRVJUX1VOVVNFRCh1bmxvY2tl
ZCwgdW5sb2NrZWQpOworI2VuZGlmCisgICAgY2xvc2VGaWxlKGhhbmRsZSk7Cit9CisKK2Jvb2wg
ZmlsZUlzRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgU2hvdWxkRm9sbG93U3ltYm9saWNM
aW5rcyBzaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzKQoreworICAgIGF1dG8gbWV0YWRhdGEgPSBz
aG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzID09IFNob3VsZEZvbGxvd1N5bWJvbGljTGlua3M6Olll
cyA/IGZpbGVNZXRhZGF0YUZvbGxvd2luZ1N5bWxpbmtzKHBhdGgpIDogZmlsZU1ldGFkYXRhKHBh
dGgpOworICAgIGlmICghbWV0YWRhdGEpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1
cm4gbWV0YWRhdGEudmFsdWUoKS50eXBlID09IEZpbGVNZXRhZGF0YTo6VHlwZTo6RGlyZWN0b3J5
OworfQorCit9IC8vIG5hbWVzcGFjZSBGaWxlU3lzdGVtCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9XVEYvd3RmL0Zp
bGVTeXN0ZW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMWI0YjRhMDVkNDNiZTVjMTMzMmQ5ZWIyOTU2MmVlMzc1
ZjA3NmE4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCkBA
IC0wLDAgKzEsMjI2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSwg
THRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1IENhbm9uIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAorICogMy4gIE5laXRo
ZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICog
ICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisg
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8dGltZS5oPgorI2luY2x1
ZGUgPHV0aWxpdHk+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvT3B0
aW9uU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi9XYWxsVGlt
ZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCisjaWYgVVNFKENGKQorI2lu
Y2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNlbmRpZgorCisjaWYgVVNFKENGKQordHlwZWRlZiBj
b25zdCBzdHJ1Y3QgX19DRkRhdGEqIENGRGF0YVJlZjsKKyNlbmRpZgorCitPQkpDX0NMQVNTIE5T
U3RyaW5nOworCisjaWYgUExBVEZPUk0oV0lOKQordHlwZWRlZiB2b2lkICpIQU5ETEU7CisjZW5k
aWYKKworI2lmIFVTRShHTElCKQordHlwZWRlZiBzdHJ1Y3QgX0dGaWxlSU9TdHJlYW0gR0ZpbGVJ
T1N0cmVhbTsKKyNlbmRpZgorCituYW1lc3BhY2UgV1RGIHsKKworc3RydWN0IEZpbGVNZXRhZGF0
YTsKKworbmFtZXNwYWNlIEZpbGVTeXN0ZW0geworCisvLyBQbGF0Zm9ybUZpbGVIYW5kbGUKKyNp
ZiBVU0UoR0xJQikgJiYgIVBMQVRGT1JNKFdJTikKK3R5cGVkZWYgR0ZpbGVJT1N0cmVhbSogUGxh
dGZvcm1GaWxlSGFuZGxlOworY29uc3QgUGxhdGZvcm1GaWxlSGFuZGxlIGludmFsaWRQbGF0Zm9y
bUZpbGVIYW5kbGUgPSAwOworI2VsaWYgUExBVEZPUk0oV0lOKQordHlwZWRlZiBIQU5ETEUgUGxh
dGZvcm1GaWxlSGFuZGxlOworLy8gRklYTUU6IC0xIGlzIElOVkFMSURfSEFORExFX1ZBTFVFLCBk
ZWZpbmVkIGluIDx3aW5iYXNlLmg+LiBDaHJvbWl1bSB0cmllcyB0bworLy8gYXZvaWQgdXNpbmcg
V2luZG93cyBoZWFkZXJzIGluIGhlYWRlcnMuIFdlJ2QgcmF0aGVyIG1vdmUgdGhpcyBpbnRvIHRo
ZSAuY3BwLgorY29uc3QgUGxhdGZvcm1GaWxlSGFuZGxlIGludmFsaWRQbGF0Zm9ybUZpbGVIYW5k
bGUgPSByZWludGVycHJldF9jYXN0PEhBTkRMRT4oLTEpOworI2Vsc2UKK3R5cGVkZWYgaW50IFBs
YXRmb3JtRmlsZUhhbmRsZTsKK2NvbnN0IFBsYXRmb3JtRmlsZUhhbmRsZSBpbnZhbGlkUGxhdGZv
cm1GaWxlSGFuZGxlID0gLTE7CisjZW5kaWYKKworZW51bSBjbGFzcyBGaWxlT3Blbk1vZGUgewor
ICAgIFJlYWQsCisgICAgV3JpdGUsCisjaWYgT1MoREFSV0lOKQorICAgIEV2ZW50c09ubHksCisj
ZW5kaWYKK307CisKK2VudW0gY2xhc3MgRmlsZVNlZWtPcmlnaW4geworICAgIEJlZ2lubmluZywK
KyAgICBDdXJyZW50LAorICAgIEVuZCwKK307CisKK2VudW0gY2xhc3MgRmlsZUxvY2tNb2RlIHsK
KyAgICBTaGFyZWQgPSAxIDw8IDAsCisgICAgRXhjbHVzaXZlID0gMSA8PCAxLAorICAgIE5vbmJs
b2NraW5nID0gMSA8PCAyLAorfTsKKworZW51bSBjbGFzcyBTaG91bGRGb2xsb3dTeW1ib2xpY0xp
bmtzIHsgTm8sIFllcyB9OworCitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBmaWxlRXhpc3RzKGNv
bnN0IFN0cmluZyYpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZGVsZXRlRmlsZShjb25zdCBT
dHJpbmcmKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KGNv
bnN0IFN0cmluZyYpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgbW92ZUZpbGUoY29uc3QgU3Ry
aW5nJiBvbGRQYXRoLCBjb25zdCBTdHJpbmcmIG5ld1BhdGgpOworV1RGX0VYUE9SVF9QUklWQVRF
IGJvb2wgZ2V0RmlsZVNpemUoY29uc3QgU3RyaW5nJiwgbG9uZyBsb25nJiByZXN1bHQpOworV1RG
X0VYUE9SVF9QUklWQVRFIGJvb2wgZ2V0RmlsZVNpemUoUGxhdGZvcm1GaWxlSGFuZGxlLCBsb25n
IGxvbmcmIHJlc3VsdCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgT3B0aW9uYWw8V2FsbFRpbWU+IGdl
dEZpbGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYpOworV1RGX0VYUE9SVF9QUklWQVRF
IE9wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlQ3JlYXRpb25UaW1lKGNvbnN0IFN0cmluZyYpOyAv
LyBOb3QgYWxsIHBsYXRmb3JtcyBzdG9yZSBmaWxlIGNyZWF0aW9uIHRpbWUuCitXVEZfRVhQT1JU
X1BSSVZBVEUgT3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGEoY29uc3QgU3RyaW5n
JiBwYXRoKTsKK1dURl9FWFBPUlRfUFJJVkFURSBPcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVN
ZXRhZGF0YUZvbGxvd2luZ1N5bWxpbmtzKGNvbnN0IFN0cmluZyYgcGF0aCk7CitXVEZfRVhQT1JU
X1BSSVZBVEUgYm9vbCBmaWxlSXNEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiwgU2hvdWxkRm9sbG93
U3ltYm9saWNMaW5rcyk7CitXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29tcG9uZW50KTsK
K1dURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhTdHJp
bmdWaWV3IHBhdGgsIGNvbnN0IFZlY3RvcjxTdHJpbmdWaWV3PiYgY29tcG9uZW50cyk7CitXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nIGxhc3RDb21wb25lbnRPZlBhdGhJZ25vcmluZ1RyYWlsaW5n
U2xhc2goY29uc3QgU3RyaW5nJiBwYXRoKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIG1ha2VB
bGxEaXJlY3Rvcmllcyhjb25zdCBTdHJpbmcmIHBhdGgpOworV1RGX0VYUE9SVF9QUklWQVRFIFN0
cmluZyBob21lRGlyZWN0b3J5UGF0aCgpOworV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBwYXRo
R2V0RmlsZU5hbWUoY29uc3QgU3RyaW5nJik7CitXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGRp
cmVjdG9yeU5hbWUoY29uc3QgU3RyaW5nJik7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBnZXRW
b2x1bWVGcmVlU3BhY2UoY29uc3QgU3RyaW5nJiwgdWludDY0X3QmKTsKK1dURl9FWFBPUlRfUFJJ
VkFURSBPcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29uc3QgQ1N0cmluZyYpOwor
V1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgY3JlYXRlU3ltYm9saWNMaW5rKGNvbnN0IFN0cmluZyYg
dGFyZ2V0UGF0aCwgY29uc3QgU3RyaW5nJiBzeW1ib2xpY0xpbmtQYXRoKTsKKworV1RGX0VYUE9S
VF9QUklWQVRFIHZvaWQgc2V0TWV0YWRhdGFVUkwoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBT
dHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiByZWZlcnJlciA9IHsgfSk7CisKK2Jvb2wg
Y2FuRXhjbHVkZUZyb21CYWNrdXAoKTsgLy8gUmV0dXJucyB0cnVlIGlmIGFueSBmaWxlIGNhbiBl
dmVyIGJlIGV4Y2x1ZGVkIGZyb20gYmFja3VwLgorYm9vbCBleGNsdWRlRnJvbUJhY2t1cChjb25z
dCBTdHJpbmcmKTsgLy8gUmV0dXJucyB0cnVlIGlmIHN1Y2Nlc3NmdWwuCisKK1dURl9FWFBPUlRf
UFJJVkFURSBWZWN0b3I8U3RyaW5nPiBsaXN0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwg
Y29uc3QgU3RyaW5nJiBmaWx0ZXIgPSBTdHJpbmcoKSk7CisKK1dURl9FWFBPUlRfUFJJVkFURSBD
U3RyaW5nIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmKTsKK1N0cmluZyBz
dHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IGNoYXIqKTsKKworaW5saW5l
IGJvb2wgaXNIYW5kbGVWYWxpZChjb25zdCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkgeyBy
ZXR1cm4gaGFuZGxlICE9IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7IH0KKworLy8gUHJlZml4
IGlzIHdoYXQgdGhlIGZpbGVuYW1lIHNob3VsZCBiZSBwcmVmaXhlZCB3aXRoLCBub3QgdGhlIGZ1
bGwgcGF0aC4KK1dURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29u
c3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYpOworV1RGX0VYUE9SVF9QUklW
QVRFIFBsYXRmb3JtRmlsZUhhbmRsZSBvcGVuRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVP
cGVuTW9kZSk7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBjbG9zZUZpbGUoUGxhdGZvcm1GaWxl
SGFuZGxlJik7CisvLyBSZXR1cm5zIHRoZSByZXN1bHRpbmcgb2Zmc2V0IGZyb20gdGhlIGJlZ2lu
bmluZyBvZiB0aGUgZmlsZSBpZiBzdWNjZXNzZnVsLCAtMSBvdGhlcndpc2UuCitXVEZfRVhQT1JU
X1BSSVZBVEUgbG9uZyBsb25nIHNlZWtGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgbG9uZyBsb25n
IG9mZnNldCwgRmlsZVNlZWtPcmlnaW4pOworYm9vbCB0cnVuY2F0ZUZpbGUoUGxhdGZvcm1GaWxl
SGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0KTsKKy8vIFJldHVybnMgbnVtYmVyIG9mIGJ5dGVzIGFj
dHVhbGx5IHJlYWQgaWYgc3VjY2Vzc2Z1bCwgLTEgb3RoZXJ3aXNlLgorV1RGX0VYUE9SVF9QUklW
QVRFIGludCB3cml0ZVRvRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEs
IGludCBsZW5ndGgpOworLy8gUmV0dXJucyBudW1iZXIgb2YgYnl0ZXMgYWN0dWFsbHkgd3JpdHRl
biBpZiBzdWNjZXNzZnVsLCAtMSBvdGhlcndpc2UuCitXVEZfRVhQT1JUX1BSSVZBVEUgaW50IHJl
YWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUsIGNoYXIqIGRhdGEsIGludCBsZW5ndGgpOwor
CitXVEZfRVhQT1JUX1BSSVZBVEUgUGxhdGZvcm1GaWxlSGFuZGxlIG9wZW5BbmRMb2NrRmlsZShj
b25zdCBTdHJpbmcmLCBGaWxlT3Blbk1vZGUsIE9wdGlvblNldDxGaWxlTG9ja01vZGU+ID0gRmls
ZUxvY2tNb2RlOjpFeGNsdXNpdmUpOworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgdW5sb2NrQW5k
Q2xvc2VGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSk7CisKKy8vIEFwcGVuZHMgdGhlIGNvbnRlbnRz
IG9mIHRoZSBmaWxlIGZvdW5kIGF0ICdwYXRoJyB0byB0aGUgb3BlbiBQbGF0Zm9ybUZpbGVIYW5k
bGUuCisvLyBSZXR1cm5zIHRydWUgaWYgdGhlIHdyaXRlIHdhcyBzdWNjZXNzZnVsLCBmYWxzZSBp
ZiBpdCB3YXMgbm90LgorV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgYXBwZW5kRmlsZUNvbnRlbnRz
VG9GaWxlSGFuZGxlKGNvbnN0IFN0cmluZyYgcGF0aCwgUGxhdGZvcm1GaWxlSGFuZGxlJik7CisK
Ky8vIEhhcmQgbGlua3MgYSBmaWxlIGlmIHBvc3NpYmxlLCBjb3BpZXMgaXQgaWYgbm90LgorV1RG
X0VYUE9SVF9QUklWQVRFIGJvb2wgaGFyZExpbmtPckNvcHlGaWxlKGNvbnN0IFN0cmluZyYgc291
cmNlLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uKTsKKworI2lmIFVTRShGSUxFX0xPQ0spCitX
VEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBsb2NrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUsIE9wdGlv
blNldDxGaWxlTG9ja01vZGU+KTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIHVubG9ja0ZpbGUo
UGxhdGZvcm1GaWxlSGFuZGxlKTsKKyNlbmRpZgorCisvLyBFbmNvZGUgYSBzdHJpbmcgZm9yIHVz
ZSB3aXRoaW4gYSBmaWxlIG5hbWUuCitXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGVuY29kZUZv
ckZpbGVOYW1lKGNvbnN0IFN0cmluZyYpOworV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBkZWNv
ZGVGcm9tRmlsZW5hbWUoY29uc3QgU3RyaW5nJik7CisKK1dURl9FWFBPUlRfUFJJVkFURSBib29s
IGZpbGVzSGF2ZVNhbWVWb2x1bWUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7CisKKyNp
ZiBVU0UoQ0YpCitXVEZfRVhQT1JUX1BSSVZBVEUgUmV0YWluUHRyPENGVVJMUmVmPiBwYXRoQXNV
UkwoY29uc3QgU3RyaW5nJik7CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZP
Uk0oV1BFKQorU3RyaW5nIGZpbGVuYW1lRm9yRGlzcGxheShjb25zdCBTdHJpbmcmKTsKKyNlbmRp
ZgorCisjaWYgUExBVEZPUk0oV0lOKQorV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBsb2NhbFVz
ZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKTsKK1dURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcg
cm9hbWluZ1VzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKTsKKyNlbmRpZgorCisjaWYgUExB
VEZPUk0oQ09DT0EpCitXVEZfRVhQT1JUX1BSSVZBVEUgTlNTdHJpbmcgKmNyZWF0ZVRlbXBvcmFy
eURpcmVjdG9yeShOU1N0cmluZyAqZGlyZWN0b3J5UHJlZml4KTsKK1dURl9FWFBPUlRfUFJJVkFU
RSBib29sIGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpOworI2VuZGlmCisK
KyNpZiBQTEFURk9STShXSU5fQ0FJUk8pCitXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGNyZWF0
ZVRlbXBvcmFyeURpcmVjdG9yeSgpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZGVsZXRlTm9u
RW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7CisjZW5kaWYKKworV1RGX0VYUE9SVF9QUklW
QVRFIFN0cmluZyByZWFsUGF0aChjb25zdCBTdHJpbmcmKTsKKworY2xhc3MgTWFwcGVkRmlsZURh
dGEgeworcHVibGljOgorICAgIE1hcHBlZEZpbGVEYXRhKCkgeyB9CisgICAgTWFwcGVkRmlsZURh
dGEoTWFwcGVkRmlsZURhdGEmJik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIE1hcHBlZEZpbGVE
YXRhKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIGJvb2wmIHN1Y2Nlc3MpOworICAgIFdURl9FWFBP
UlRfUFJJVkFURSB+TWFwcGVkRmlsZURhdGEoKTsKKyAgICBNYXBwZWRGaWxlRGF0YSYgb3BlcmF0
b3I9KE1hcHBlZEZpbGVEYXRhJiYpOworCisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNv
bnN0IHsgcmV0dXJuICEhbV9maWxlRGF0YTsgfQorICAgIGNvbnN0IHZvaWQqIGRhdGEoKSBjb25z
dCB7IHJldHVybiBtX2ZpbGVEYXRhOyB9CisgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZmlsZVNpemU7IH0KKworcHJpdmF0ZToKKyAgICB2b2lkKiBtX2ZpbGVEYXRhIHsgbnVs
bHB0ciB9OworICAgIHVuc2lnbmVkIG1fZmlsZVNpemUgeyAwIH07Cit9OworCitpbmxpbmUgTWFw
cGVkRmlsZURhdGE6Ok1hcHBlZEZpbGVEYXRhKE1hcHBlZEZpbGVEYXRhJiYgb3RoZXIpCisgICAg
OiBtX2ZpbGVEYXRhKHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9maWxlRGF0YSwgbnVsbHB0cikpCisg
ICAgLCBtX2ZpbGVTaXplKHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9maWxlU2l6ZSwgMCkpCit7Cit9
CisKK2lubGluZSBNYXBwZWRGaWxlRGF0YSYgTWFwcGVkRmlsZURhdGE6Om9wZXJhdG9yPShNYXBw
ZWRGaWxlRGF0YSYmIG90aGVyKQoreworICAgIG1fZmlsZURhdGEgPSBzdGQ6OmV4Y2hhbmdlKG90
aGVyLm1fZmlsZURhdGEsIG51bGxwdHIpOworICAgIG1fZmlsZVNpemUgPSBzdGQ6OmV4Y2hhbmdl
KG90aGVyLm1fZmlsZVNpemUsIDApOworICAgIHJldHVybiAqdGhpczsKK30KKworfSAvLyBuYW1l
c3BhY2UgRmlsZVN5c3RlbQorfSAvLyBuYW1lc3BhY2UgV1RGCisKK25hbWVzcGFjZSBGaWxlU3lz
dGVtID0gV1RGOjpGaWxlU3lzdGVtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZv
cm1HVEsuY21ha2UgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCA2NzNm
MDJkMGQ1OTY4NTQ1YWM4N2E4YThlNTdiMjc3MzRkNzM5ODljLi5mOWUzN2I4MDc5YmZjYWRlYzU5
OGNkZmY4YTU5MTk5NmI4Zjg0MTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtMjIs
NiArMjIsNyBAQCBsaXN0KEFQUEVORCBXVEZfU09VUkNFUwogICAgIGdlbmVyaWMvTWFpblRocmVh
ZEdlbmVyaWMuY3BwCiAgICAgZ2VuZXJpYy9Xb3JrUXVldWVHZW5lcmljLmNwcAogCisgICAgZ2xp
Yi9GaWxlU3lzdGVtR2xpYi5jcHAKICAgICBnbGliL0dMaWJVdGlsaXRpZXMuY3BwCiAgICAgZ2xp
Yi9HUmVmUHRyLmNwcAogICAgIGdsaWIvUnVuTG9vcEdMaWIuY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtTWFj
LmNtYWtlCmluZGV4IGZjMWU1N2I5Y2IyNmI2ZjJiNmFiYTYxNDNiZDE4YWViYmIxNmI1MzQuLjNh
MTFhODUyYWUwOTgyOGI2MTRhYTA3NzYzNTMxODE4OGY5ZWRmYWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3Jt
TWFjLmNtYWtlCkBAIC00Miw2ICs0Miw3IEBAIGxpc3QoQVBQRU5EIFdURl9TT1VSQ0VTCiAgICAg
U2NoZWR1bGVQYWlyTWFjLm1tCiAKICAgICBjZi9DRlVSTEV4dHJhcy5jcHAKKyAgICBjZi9GaWxl
U3lzdGVtQ0YuY3BwCiAgICAgY2YvTGFuZ3VhZ2VDRi5jcHAKICAgICBjZi9SdW5Mb29wQ0YuY3Bw
CiAgICAgY2YvVVJMQ0YuY3BwCkBAIC00OSw2ICs1MCw3IEBAIGxpc3QoQVBQRU5EIFdURl9TT1VS
Q0VTCiAgICAgY29jb2EvQXV0b2RyYWluZWRQb29sLmNwcAogICAgIGNvY29hL0NQVVRpbWVDb2Nv
YS5jcHAKICAgICBjb2NvYS9FbnRpdGxlbWVudHMubW0KKyAgICBjb2NvYS9GaWxlU3lzdGVtQ29j
b2EubW0KICAgICBjb2NvYS9NYWNoU2VuZFJpZ2h0LmNwcAogICAgIGNvY29hL01haW5UaHJlYWRD
b2NvYS5tbQogICAgIGNvY29hL01lbW9yeUZvb3RwcmludENvY29hLmNwcApAQCAtNTgsNiArNjAs
OSBAQCBsaXN0KEFQUEVORCBXVEZfU09VUkNFUwogICAgIGNvY29hL1dvcmtRdWV1ZUNvY29hLmNw
cAogCiAgICAgbWFjL0RlcHJlY2F0ZWRTeW1ib2xzVXNlZEJ5U2FmYXJpLm1tCisgICAgbWFjL0Zp
bGVTeXN0ZW1NYWMubW0KKworICAgIHBvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKIAogICAgIHRl
eHQvY2YvQXRvbWljU3RyaW5nSW1wbENGLmNwcAogICAgIHRleHQvY2YvU3RyaW5nQ0YuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtlIGIvU291
cmNlL1dURi93dGYvUGxhdGZvcm1QbGF5U3RhdGlvbi5jbWFrZQppbmRleCBiOTdmZWM0MGVkMzBi
MTc3YjJmNTM1YjYyMTYwZWYxZWVlMmRlNTZlLi4zZTllNzVjOTI4YTZjOTQ2MDViNGJmY2FhN2Zi
YjJiOWY0MmY4MzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVBsYXlTdGF0
aW9uLmNtYWtlCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtUGxheVN0YXRpb24uY21ha2UK
QEAgLTUsNiArNSw4IEBAIGxpc3QoQVBQRU5EIFdURl9TT1VSQ0VTCiAgICAgZ2VuZXJpYy9SdW5M
b29wR2VuZXJpYy5jcHAKICAgICBnZW5lcmljL1dvcmtRdWV1ZUdlbmVyaWMuY3BwCiAKKyAgICBw
b3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCisKICAgICB0ZXh0L3VuaXgvVGV4dEJyZWFrSXRlcmF0
b3JJbnRlcm5hbElDVVVuaXguY3BwCiAKICAgICB1bml4L0NQVVRpbWVVbml4LmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1XUEUuY21ha2UgYi9Tb3VyY2UvV1RGL3d0Zi9Q
bGF0Zm9ybVdQRS5jbWFrZQppbmRleCA0NzNjZmQ2MDI2YjA2NTJjMmYwMmQyYjI4NTM5MmIxZDgw
MmYwYmJjLi4xZGI5YWMzNWMxOWZkYmQ3YTU3NDVmOGE3YTBjZDk5Y2Q3NGY0OTkxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdQRS5jbWFrZQorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9QbGF0Zm9ybVdQRS5jbWFrZQpAQCAtMTYsNiArMTYsNyBAQCBsaXN0KEFQUEVORCBXVEZfU09V
UkNFUwogICAgIGdlbmVyaWMvTWFpblRocmVhZEdlbmVyaWMuY3BwCiAgICAgZ2VuZXJpYy9Xb3Jr
UXVldWVHZW5lcmljLmNwcAogCisgICAgZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKICAgICBnbGli
L0dMaWJVdGlsaXRpZXMuY3BwCiAgICAgZ2xpYi9HUmVmUHRyLmNwcAogICAgIGdsaWIvUnVuTG9v
cEdMaWIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdpbi5jbWFrZSBi
L1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV2luLmNtYWtlCmluZGV4IDJiOGI1ZjgyNzBlYjVmMjQ2
NzYwNzJkZDEyNDU3NmRhOTMwMWYwZWEuLmI2YzBhYzZmNGRlNWUwNWYyN2Q0ZDlhYzBmZmJkNWNj
NDA5N2E2ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV2luLmNtYWtlCisr
KyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV2luLmNtYWtlCkBAIC0xMiwxNCArMTIsMjAgQEAg
bGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKIAogICAgIHdpbi9DUFVUaW1lV2luLmNwcAogICAgIHdp
bi9EYmdIZWxwZXJXaW4uY3BwCisgICAgd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCiAgICAgd2luL0xh
bmd1YWdlV2luLmNwcAogICAgIHdpbi9NYWluVGhyZWFkV2luLmNwcAogICAgIHdpbi9NZW1vcnlG
b290cHJpbnRXaW4uY3BwCiAgICAgd2luL01lbW9yeVByZXNzdXJlSGFuZGxlcldpbi5jcHAKKyAg
ICB3aW4vUGF0aFdhbGtlci5jcHAKICAgICB3aW4vUnVuTG9vcFdpbi5jcHAKICAgICB3aW4vV29y
a1F1ZXVlV2luLmNwcAogKQogCitsaXN0KEFQUEVORCBXVEZfTElCUkFSSUVTCisgICAgc2hsd2Fw
aQorKQorCiBpZiAoVVNFX0NGKQogICAgIGxpc3QoQVBQRU5EIFdURl9QVUJMSUNfSEVBREVSUwog
ICAgICAgICBjZi9DRlVSTEV4dHJhcy5oCkBAIC0yOSw2ICszNSw3IEBAIGlmIChVU0VfQ0YpCiAg
ICAgKQogICAgIGxpc3QoQVBQRU5EIFdURl9TT1VSQ0VTCiAgICAgICAgIGNmL0NGVVJMRXh0cmFz
LmNwcAorICAgICAgICBjZi9GaWxlU3lzdGVtQ0YuY3BwCiAgICAgICAgIGNmL1VSTENGLmNwcAog
CiAgICAgICAgIHRleHQvY2YvQXRvbWljU3RyaW5nSW1wbENGLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvY2YvRmlsZVN5c3RlbUNGLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2NmL0ZpbGVT
eXN0ZW1DRi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzEyZDY1ZmNhZDI5NmIzOTYzZjYwYTQ0OTRiNmQ3ZTky
ZDRhYzUwYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL2NmL0ZpbGVTeXN0ZW1D
Ri5jcHAKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAxMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAg
TmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9m
CisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgor
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8d3RmL0Zp
bGVTeXN0ZW0uaD4KKworI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGU3RyaW5nLmg+CisjaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK0NTdHJp
bmcgRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgcGF0
aCkKK3sKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmU3RyaW5nID0gcGF0aC5jcmVhdGVD
RlN0cmluZygpOworCisgICAgaWYgKCFjZlN0cmluZykKKyAgICAgICAgcmV0dXJuIENTdHJpbmco
KTsKKworICAgIENGSW5kZXggc2l6ZSA9IENGU3RyaW5nR2V0TWF4aW11bVNpemVPZkZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihjZlN0cmluZy5nZXQoKSk7CisKKyAgICBWZWN0b3I8Y2hhcj4gYnVm
ZmVyKHNpemUpOworCisgICAgaWYgKCFDRlN0cmluZ0dldEZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihjZlN0cmluZy5nZXQoKSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSkpIHsKKyAgICAg
ICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZ2V0IGZpbGVzeXN0ZW0gcmVwcmVzZW50YXRpb24gdG8g
Y3JlYXRlIENTdHJpbmcgZnJvbSBjZlN0cmluZyIpOworICAgICAgICByZXR1cm4gQ1N0cmluZygp
OworICAgIH0KKworICAgIHJldHVybiBDU3RyaW5nKGJ1ZmZlci5kYXRhKCksIHN0cmxlbihidWZm
ZXIuZGF0YSgpKSk7Cit9CisKK1N0cmluZyBGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKGNvbnN0IGNoYXIqIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbikKK3sK
KyAgICByZXR1cm4gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhGaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oa0NGQWxsb2NhdG9yRGVmYXVsdCwgZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKSkuZ2V0
KCk7Cit9CisKK1JldGFpblB0cjxDRlVSTFJlZj4gRmlsZVN5c3RlbTo6cGF0aEFzVVJMKGNvbnN0
IFN0cmluZyYgcGF0aCkKK3sKKyAgICBDRlVSTFBhdGhTdHlsZSBwYXRoU3R5bGU7CisjaWYgUExB
VEZPUk0oV0lOKQorICAgIHBhdGhTdHlsZSA9IGtDRlVSTFdpbmRvd3NQYXRoU3R5bGU7CisjZWxz
ZQorICAgIHBhdGhTdHlsZSA9IGtDRlVSTFBPU0lYUGF0aFN0eWxlOworI2VuZGlmCisgICAgcmV0
dXJuIGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoMCwgcGF0aC5jcmVhdGVD
RlN0cmluZygpLmdldCgpLCBwYXRoU3R5bGUsIEZBTFNFKSk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY29jb2EvRmlsZVN5c3RlbUNvY29hLm1t
IGIvU291cmNlL1dURi93dGYvY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI2
OGUyMjc1Y2NlY2I0NTRhYjBmZGIxMTBmZjdmOTQ4OGY2NTdkODcKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9GaWxlU3lzdGVtQ29jb2EubW0KQEAgLTAsMCArMSwxNDMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9m
IEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
CisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLiAKKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICog
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CisKK0BpbnRl
cmZhY2UgV1RGV2ViRmlsZU1hbmFnZXJEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxOU0ZpbGVNYW5hZ2Vy
RGVsZWdhdGU+CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXVEZXZWJGaWxlTWFuYWdlckRlbGVn
YXRlCisKKy0gKEJPT0wpZmlsZU1hbmFnZXI6KE5TRmlsZU1hbmFnZXIgKilmaWxlTWFuYWdlciBz
aG91bGRQcm9jZWVkQWZ0ZXJFcnJvcjooTlNFcnJvciAqKWVycm9yIG1vdmluZ0l0ZW1BdFVSTDoo
TlNVUkwgKilzcmNVUkwgdG9VUkw6KE5TVVJMICopZHN0VVJMCit7CisgICAgVU5VU0VEX1BBUkFN
KGZpbGVNYW5hZ2VyKTsKKyAgICBVTlVTRURfUEFSQU0oc3JjVVJMKTsKKyAgICBVTlVTRURfUEFS
QU0oZHN0VVJMKTsgICAgCisgICAgcmV0dXJuIGVycm9yLmNvZGUgPT0gTlNGaWxlV3JpdGVGaWxl
RXhpc3RzRXJyb3I7Cit9CisKK0BlbmQKKworbmFtZXNwYWNlIFdURiB7CisKK25hbWVzcGFjZSBG
aWxlU3lzdGVtIHsKKworU3RyaW5nIGhvbWVEaXJlY3RvcnlQYXRoKCkKK3sKKyAgICByZXR1cm4g
TlNIb21lRGlyZWN0b3J5KCk7Cit9CisKK1N0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBT
dHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiBwbGF0Zm9ybUZpbGVIYW5kbGUpCit7
CisgICAgcGxhdGZvcm1GaWxlSGFuZGxlID0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKKyAg
ICAKKyAgICBWZWN0b3I8Y2hhcj4gdGVtcG9yYXJ5RmlsZVBhdGgoUEFUSF9NQVgpOworICAgIGlm
ICghY29uZnN0cihfQ1NfREFSV0lOX1VTRVJfVEVNUF9ESVIsIHRlbXBvcmFyeUZpbGVQYXRoLmRh
dGEoKSwgdGVtcG9yYXJ5RmlsZVBhdGguc2l6ZSgpKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygp
OworCisgICAgLy8gU2hyaW5rIHRoZSB2ZWN0b3IuICAgCisgICAgdGVtcG9yYXJ5RmlsZVBhdGgu
c2hyaW5rKHN0cmxlbih0ZW1wb3JhcnlGaWxlUGF0aC5kYXRhKCkpKTsKKworICAgIC8vIEZJWE1F
OiBDaGFuZ2UgdG8gYSBydW50aW1lIGFzc2VydGlvbiB0aGF0IHRoZSBwYXRoIGVuZHMgd2l0aCBh
IHNsYXNoIG9uY2UgPHJkYXI6Ly9wcm9ibGVtLzIzNTc5MDc3PiBpcworICAgIC8vIGZpeGVkIGlu
IGFsbCBpT1MgU2ltdWxhdG9yIHZlcnNpb25zIHRoYXQgd2UgdXNlLgorICAgIGlmICh0ZW1wb3Jh
cnlGaWxlUGF0aC5sYXN0KCkgIT0gJy8nKQorICAgICAgICB0ZW1wb3JhcnlGaWxlUGF0aC5hcHBl
bmQoJy8nKTsKKworICAgIC8vIEFwcGVuZCB0aGUgZmlsZSBuYW1lLgorICAgIENTdHJpbmcgcHJl
Zml4VXRmOCA9IHByZWZpeC51dGY4KCk7CisgICAgdGVtcG9yYXJ5RmlsZVBhdGguYXBwZW5kKHBy
ZWZpeFV0ZjguZGF0YSgpLCBwcmVmaXhVdGY4Lmxlbmd0aCgpKTsKKyAgICB0ZW1wb3JhcnlGaWxl
UGF0aC5hcHBlbmQoIlhYWFhYWCIsIDYpOworICAgIHRlbXBvcmFyeUZpbGVQYXRoLmFwcGVuZCgn
XDAnKTsKKworICAgIHBsYXRmb3JtRmlsZUhhbmRsZSA9IG1rc3RlbXAodGVtcG9yYXJ5RmlsZVBh
dGguZGF0YSgpKTsKKyAgICBpZiAocGxhdGZvcm1GaWxlSGFuZGxlID09IGludmFsaWRQbGF0Zm9y
bUZpbGVIYW5kbGUpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIHJldHVybiBTdHJp
bmc6OmZyb21VVEY4KHRlbXBvcmFyeUZpbGVQYXRoLmRhdGEoKSk7Cit9CisKK2Jvb2wgbW92ZUZp
bGUoY29uc3QgU3RyaW5nJiBvbGRQYXRoLCBjb25zdCBTdHJpbmcmIG5ld1BhdGgpCit7CisgICAg
Ly8gT3ZlcndyaXRlIGV4aXN0aW5nIGZpbGVzLgorICAgIGF1dG8gbWFuYWdlciA9IGFkb3B0TlMo
W1tOU0ZpbGVNYW5hZ2VyIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0
TlMoW1tXVEZXZWJGaWxlTWFuYWdlckRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgW21hbmFn
ZXIgc2V0RGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworICAgIAorICAgIE5TRXJyb3IgKmVycm9y
ID0gbmlsOworICAgIGJvb2wgc3VjY2VzcyA9IFttYW5hZ2VyIG1vdmVJdGVtQXRVUkw6W05TVVJM
IGZpbGVVUkxXaXRoUGF0aDpvbGRQYXRoXSB0b1VSTDpbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOm5l
d1BhdGhdIGVycm9yOiZlcnJvcl07CisgICAgaWYgKCFzdWNjZXNzKQorICAgICAgICBOU0xvZyhA
IkVycm9yIGluIG1vdmVGaWxlOiAlQCIsIGVycm9yKTsKKyAgICByZXR1cm4gc3VjY2VzczsKK30K
KworYm9vbCBnZXRWb2x1bWVGcmVlU3BhY2UoY29uc3QgU3RyaW5nJiBwYXRoLCB1aW50NjRfdCYg
ZnJlZVNwYWNlKQoreworICAgIE5TRGljdGlvbmFyeSAqZmlsZVN5c3RlbUF0dHJpYnV0ZXNEaWN0
aW9uYXJ5ID0gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBhdHRyaWJ1dGVzT2ZGaWxl
U3lzdGVtRm9yUGF0aDooTlNTdHJpbmcgKilwYXRoIGVycm9yOk5VTExdOworICAgIGlmICghZmls
ZVN5c3RlbUF0dHJpYnV0ZXNEaWN0aW9uYXJ5KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ZnJlZVNwYWNlID0gW1tmaWxlU3lzdGVtQXR0cmlidXRlc0RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5
Ok5TRmlsZVN5c3RlbUZyZWVTaXplXSB1bnNpZ25lZExvbmdMb25nVmFsdWVdOworICAgIHJldHVy
biB0cnVlOworfQorCitOU1N0cmluZyAqY3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KE5TU3RyaW5n
ICpkaXJlY3RvcnlQcmVmaXgpCit7CisgICAgTlNTdHJpbmcgKnRlbXBEaXJlY3RvcnkgPSBOU1Rl
bXBvcmFyeURpcmVjdG9yeSgpOworICAgIGlmICghdGVtcERpcmVjdG9yeSB8fCAhW3RlbXBEaXJl
Y3RvcnkgbGVuZ3RoXSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIGlmICghZGlyZWN0b3J5
UHJlZml4IHx8ICFbZGlyZWN0b3J5UHJlZml4IGxlbmd0aF0pCisgICAgICAgIHJldHVybiBuaWw7
CisKKyAgICBOU1N0cmluZyAqdGVtcERpcmVjdG9yeUNvbXBvbmVudCA9IFtkaXJlY3RvcnlQcmVm
aXggc3RyaW5nQnlBcHBlbmRpbmdTdHJpbmc6QCItWFhYWFhYWFgiXTsKKyAgICBjb25zdCBjaGFy
KiB0ZW1wRGlyZWN0b3J5Q1N0cmluZyA9IFtbdGVtcERpcmVjdG9yeSBzdHJpbmdCeUFwcGVuZGlu
Z1BhdGhDb21wb25lbnQ6dGVtcERpcmVjdG9yeUNvbXBvbmVudF0gZmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uXTsKKyAgICBpZiAoIXRlbXBEaXJlY3RvcnlDU3RyaW5nKQorICAgICAgICByZXR1cm4g
bmlsOworCisgICAgY29uc3Qgc2l6ZV90IGxlbmd0aCA9IHN0cmxlbih0ZW1wRGlyZWN0b3J5Q1N0
cmluZyk7CisgICAgQVNTRVJUKGxlbmd0aCA8PSBNQVhQQVRITEVOKTsKKyAgICBpZiAobGVuZ3Ro
ID4gTUFYUEFUSExFTikKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIGNvbnN0IHNpemVfdCBs
ZW5ndGhQbHVzTnVsbFRlcm1pbmF0b3IgPSBsZW5ndGggKyAxOworICAgIFZlY3RvcjxjaGFyLCBN
QVhQQVRITEVOICsgMT4gcGF0aChsZW5ndGhQbHVzTnVsbFRlcm1pbmF0b3IpOworICAgIG1lbWNw
eShwYXRoLmRhdGEoKSwgdGVtcERpcmVjdG9yeUNTdHJpbmcsIGxlbmd0aFBsdXNOdWxsVGVybWlu
YXRvcik7CisKKyAgICBpZiAoIW1rZHRlbXAocGF0aC5kYXRhKCkpKQorICAgICAgICByZXR1cm4g
bmlsOworCisgICAgcmV0dXJuIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gc3RyaW5n
V2l0aEZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbjpwYXRoLmRhdGEoKSBsZW5ndGg6bGVuZ3RoXTsK
K30KKworYm9vbCBkZWxldGVOb25FbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgpCit7
CisgICAgcmV0dXJuIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gcmVtb3ZlSXRlbUF0
UGF0aDpwYXRoIGVycm9yOm5pbF07Cit9CisKK30gLy8gbmFtZXNwYWNlIEZpbGVTeXN0ZW0KK30g
Ly8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lz
dGVtR2xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yZmY2YmQzZmE1NDgyYTVhMGY4NDBjOTY3ODQyYzQ1YjhhZTEyMmNmCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTAs
MCArMSw0NjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDkgSG9sZ2VyIEhhbnMg
UGV0ZXIgRnJleXRoZXIKKyAqIENvcHlyaWdodCAoQykgMjAwOCBDb2xsYWJvcmEsIEx0ZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBQ
b3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTAgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5
c3RlbS5oPgorCisjaW5jbHVkZSA8Z2lvL2dmaWxlZGVzY3JpcHRvcmJhc2VkLmg+CisjaW5jbHVk
ZSA8Z2lvL2dpby5oPgorI2luY2x1ZGUgPGdsaWIuaD4KKyNpbmNsdWRlIDxnbGliL2dzdGRpby5o
PgorI2luY2x1ZGUgPHN5cy9maWxlLmg+CisjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KKyNp
bmNsdWRlIDx3dGYvRmlsZU1ldGFkYXRhLmg+CisjaW5jbHVkZSA8d3RmL1VVSUQuaD4KKyNpbmNs
dWRlIDx3dGYvZ2xpYi9HTGliVXRpbGl0aWVzLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0
ci5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV1RGIHsKKworbmFtZXNwYWNl
IEZpbGVTeXN0ZW0geworCisvKiBPbiBsaW51eCBmaWxlIG5hbWVzIGFyZSBqdXN0IHJhdyBieXRl
cywgc28gYWxzbyBzdHJpbmdzIHRoYXQgY2Fubm90IGJlIGVuY29kZWQgaW4gYW55IHdheQorICog
YXJlIHZhbGlkIGZpbGUgbmFtZXMuIFRoaXMgbWVhbiB0aGF0IHdlIGNhbm5vdCBqdXN0IHN0b3Jl
IGEgZmlsZSBuYW1lIGFzLWlzIGluIGEgU3RyaW5nCisgKiBidXQgd2UgaGF2ZSB0byBlc2NhcGUg
aXQuCisgKiBPbiBXaW5kb3dzIHRoZSBHTGliIGZpbGUgbmFtZSBlbmNvZGluZyBpcyBhbHdheXMg
VVRGLTggc28gd2UgY2FuIG9wdGltaXplIHRoaXMgY2FzZS4gKi8KK1N0cmluZyBzdHJpbmdGcm9t
RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IGNoYXIqIGZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbikKK3sKKyAgICBpZiAoIWZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbikKKyAgICAgICAgcmV0
dXJuIFN0cmluZygpOworCisjaWYgT1MoV0lORE9XUykKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9t
VVRGOChmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24pOworI2Vsc2UKKyAgICBHVW5pcXVlUHRyPGdj
aGFyPiBlc2NhcGVkU3RyaW5nKGdfdXJpX2VzY2FwZV9zdHJpbmcoZmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uLCAiLzoiLCBGQUxTRSkpOworICAgIHJldHVybiBlc2NhcGVkU3RyaW5nLmdldCgpOwor
I2VuZGlmCit9CisKK3N0YXRpYyBHVW5pcXVlUHRyPGNoYXI+IHVuZXNjYXBlZEZpbGVuYW1lKGNv
bnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBpZiAocGF0aC5pc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworI2lmIE9TKFdJTkRPV1MpCisgICAgcmV0dXJuIEdVbmlxdWVQdHI8Y2hh
cj4oZ19zdHJkdXAocGF0aC51dGY4KCkuZGF0YSgpKSk7CisjZWxzZQorICAgIHJldHVybiBHVW5p
cXVlUHRyPGNoYXI+KGdfdXJpX3VuZXNjYXBlX3N0cmluZyhwYXRoLnV0ZjgoKS5kYXRhKCksIG51
bGxwdHIpKTsKKyNlbmRpZgorfQorCitDU3RyaW5nIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihj
b25zdCBTdHJpbmcmIHBhdGgpCit7CisjaWYgT1MoV0lORE9XUykKKyAgICByZXR1cm4gcGF0aC51
dGY4KCk7CisjZWxzZQorICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2NhcGVk
RmlsZW5hbWUocGF0aCk7CisgICAgcmV0dXJuIGZpbGVuYW1lLmdldCgpOworI2VuZGlmCit9CisK
Ky8vIENvbnZlcnRzIGEgc3RyaW5nIHRvIHNvbWV0aGluZyBzdWl0YWJsZSB0byBiZSBkaXNwbGF5
ZWQgdG8gdGhlIHVzZXIuCitTdHJpbmcgZmlsZW5hbWVGb3JEaXNwbGF5KGNvbnN0IFN0cmluZyYg
c3RyaW5nKQoreworI2lmIE9TKFdJTkRPV1MpCisgICAgcmV0dXJuIHN0cmluZzsKKyNlbHNlCisg
ICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShzdHJpbmcp
OworICAgIGlmICghZmlsZW5hbWUpCisgICAgICAgIHJldHVybiBzdHJpbmc7CisKKyAgICBHVW5p
cXVlUHRyPGdjaGFyPiBkaXNwbGF5KGdfZmlsZW5hbWVfdG9fdXRmOChmaWxlbmFtZS5nZXQoKSwg
LTEsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpKTsKKyAgICBpZiAoIWRpc3BsYXkpCisgICAg
ICAgIHJldHVybiBzdHJpbmc7CisKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChkaXNwbGF5
LmdldCgpKTsKKyNlbmRpZgorfQorCitib29sIGZpbGVFeGlzdHMoY29uc3QgU3RyaW5nJiBwYXRo
KQoreworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUo
cGF0aCk7CisgICAgcmV0dXJuIGZpbGVuYW1lID8gZ19maWxlX3Rlc3QoZmlsZW5hbWUuZ2V0KCks
IEdfRklMRV9URVNUX0VYSVNUUykgOiBmYWxzZTsKK30KKworYm9vbCBkZWxldGVGaWxlKGNvbnN0
IFN0cmluZyYgcGF0aCkKK3sKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZSA9IHVuZXNj
YXBlZEZpbGVuYW1lKHBhdGgpOworICAgIHJldHVybiBmaWxlbmFtZSA/IGdfcmVtb3ZlKGZpbGVu
YW1lLmdldCgpKSAhPSAtMSA6IGZhbHNlOworfQorCitib29sIGRlbGV0ZUVtcHR5RGlyZWN0b3J5
KGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZSA9
IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGgpOworICAgIHJldHVybiBmaWxlbmFtZSA/IGdfcm1kaXIo
ZmlsZW5hbWUuZ2V0KCkpICE9IC0xIDogZmFsc2U7Cit9CisKK3N0YXRpYyBib29sIGdldEZpbGVT
dGF0KGNvbnN0IFN0cmluZyYgcGF0aCwgR1N0YXRCdWYqIHN0YXRCdWZmZXIpCit7CisgICAgR1Vu
aXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShwYXRoKTsKKyAgICBp
ZiAoIWZpbGVuYW1lKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gZ19zdGF0
KGZpbGVuYW1lLmdldCgpLCBzdGF0QnVmZmVyKSAhPSAtMTsKK30KKworc3RhdGljIGJvb2wgZ2V0
RmlsZUxTdGF0KGNvbnN0IFN0cmluZyYgcGF0aCwgR1N0YXRCdWYqIHN0YXRCdWZmZXIpCit7Cisg
ICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShwYXRoKTsK
KyAgICBpZiAoIWZpbGVuYW1lKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4g
Z19sc3RhdChmaWxlbmFtZS5nZXQoKSwgc3RhdEJ1ZmZlcikgIT0gLTE7Cit9CisKK2Jvb2wgZ2V0
RmlsZVNpemUoY29uc3QgU3RyaW5nJiBwYXRoLCBsb25nIGxvbmcmIHJlc3VsdFNpemUpCit7Cisg
ICAgR1N0YXRCdWYgc3RhdFJlc3VsdDsKKyAgICBpZiAoIWdldEZpbGVTdGF0KHBhdGgsICZzdGF0
UmVzdWx0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmVzdWx0U2l6ZSA9IHN0YXRS
ZXN1bHQuc3Rfc2l6ZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBnZXRGaWxlU2l6ZShQ
bGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBsb25nIGxvbmcmIHJlc3VsdFNpemUpCit7CisgICAg
YXV0byBpbmZvID0gZ19maWxlX2lvX3N0cmVhbV9xdWVyeV9pbmZvKGhhbmRsZSwgR19GSUxFX0FU
VFJJQlVURV9TVEFOREFSRF9TSVpFLCBudWxscHRyLCBudWxscHRyKTsKKyAgICBpZiAoIWluZm8p
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJlc3VsdFNpemUgPSBnX2ZpbGVfaW5mb19n
ZXRfc2l6ZShpbmZvKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworT3B0aW9uYWw8V2FsbFRpbWU+
IGdldEZpbGVDcmVhdGlvblRpbWUoY29uc3QgU3RyaW5nJikKK3sKKyAgICAvLyBGSVhNRTogSXMg
dGhlcmUgYSB3YXkgdG8gcmV0cmlldmUgZmlsZSBjcmVhdGlvbiB0aW1lIHdpdGggR3RrIG9uIHBs
YXRmb3JtcyB0aGF0IHN1cHBvcnQgaXQ/CisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKK30KKwor
T3B0aW9uYWw8V2FsbFRpbWU+IGdldEZpbGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYg
cGF0aCkKK3sKKyAgICBHU3RhdEJ1ZiBzdGF0UmVzdWx0OworICAgIGlmICghZ2V0RmlsZVN0YXQo
cGF0aCwgJnN0YXRSZXN1bHQpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAg
cmV0dXJuIFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhzdGF0UmVzdWx0LnN0X210aW1lKTsKK30K
Kworc3RhdGljIEZpbGVNZXRhZGF0YTo6VHlwZSB0b0ZpbGVNZXRhdGFUeXBlKEdTdGF0QnVmIHN0
YXRSZXN1bHQpCit7CisgICAgaWYgKFNfSVNESVIoc3RhdFJlc3VsdC5zdF9tb2RlKSkKKyAgICAg
ICAgcmV0dXJuIEZpbGVNZXRhZGF0YTo6VHlwZTo6RGlyZWN0b3J5OworICAgIGlmIChTX0lTTE5L
KHN0YXRSZXN1bHQuc3RfbW9kZSkpCisgICAgICAgIHJldHVybiBGaWxlTWV0YWRhdGE6OlR5cGU6
OlN5bWJvbGljTGluazsKKyAgICByZXR1cm4gRmlsZU1ldGFkYXRhOjpUeXBlOjpGaWxlOworfQor
CitzdGF0aWMgT3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGFVc2luZ0Z1bmN0aW9u
KGNvbnN0IFN0cmluZyYgcGF0aCwgYm9vbCAoKnN0YXRGdW5jKShjb25zdCBTdHJpbmcmLCBHU3Rh
dEJ1ZiopKQoreworICAgIEdTdGF0QnVmIHN0YXRSZXN1bHQ7CisgICAgaWYgKCFzdGF0RnVuYyhw
YXRoLCAmc3RhdFJlc3VsdCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBT
dHJpbmcgZmlsZW5hbWUgPSBwYXRoR2V0RmlsZU5hbWUocGF0aCk7CisgICAgYm9vbCBpc0hpZGRl
biA9ICFmaWxlbmFtZS5pc0VtcHR5KCkgJiYgZmlsZW5hbWVbMF0gPT0gJy4nOworCisgICAgcmV0
dXJuIEZpbGVNZXRhZGF0YSB7CisgICAgICAgIFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhzdGF0
UmVzdWx0LnN0X210aW1lKSwKKyAgICAgICAgc3RhdFJlc3VsdC5zdF9zaXplLAorICAgICAgICBp
c0hpZGRlbiwKKyAgICAgICAgdG9GaWxlTWV0YXRhVHlwZShzdGF0UmVzdWx0KQorICAgIH07Cit9
CisKK09wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYgcGF0
aCkKK3sKKyAgICByZXR1cm4gZmlsZU1ldGFkYXRhVXNpbmdGdW5jdGlvbihwYXRoLCAmZ2V0Rmls
ZUxTdGF0KTsKK30KKworT3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGFGb2xsb3dp
bmdTeW1saW5rcyhjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgcmV0dXJuIGZpbGVNZXRhZGF0
YVVzaW5nRnVuY3Rpb24ocGF0aCwgJmdldEZpbGVTdGF0KTsKK30KKworU3RyaW5nIHBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29tcG9u
ZW50KQoreworICAgIGlmIChwYXRoLmVuZHNXaXRoKEdfRElSX1NFUEFSQVRPUl9TKSkKKyAgICAg
ICAgcmV0dXJuIHBhdGggKyBjb21wb25lbnQ7CisgICAgcmV0dXJuIHBhdGggKyBHX0RJUl9TRVBB
UkFUT1JfUyArIGNvbXBvbmVudDsKK30KKworU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dHMoU3RyaW5nVmlldyBwYXRoLCBjb25zdCBWZWN0b3I8U3RyaW5nVmlldz4mIGNvbXBvbmVudHMp
Cit7CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kKHBhdGgp
OworICAgIGZvciAoYXV0byYgY29tcG9uZW50IDogY29tcG9uZW50cykgeworICAgICAgICBidWls
ZGVyLmFwcGVuZChHX0RJUl9TRVBBUkFUT1JfUyk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGNv
bXBvbmVudCk7CisgICAgfQorICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKK2Jv
b2wgbWFrZUFsbERpcmVjdG9yaWVzKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBHVW5pcXVl
UHRyPGdjaGFyPiBmaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGgpOworICAgIHJldHVy
biBmaWxlbmFtZSA/IGdfbWtkaXJfd2l0aF9wYXJlbnRzKGZpbGVuYW1lLmdldCgpLCBTX0lSV1hV
KSAhPSAtMSA6IGZhbHNlOworfQorCitTdHJpbmcgaG9tZURpcmVjdG9yeVBhdGgoKQoreworICAg
IHJldHVybiBzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGdfZ2V0X2hvbWVfZGly
KCkpOworfQorCitib29sIGNyZWF0ZVN5bWJvbGljTGluayhjb25zdCBTdHJpbmcmIHRhcmdldFBh
dGgsIGNvbnN0IFN0cmluZyYgc3ltYm9saWNMaW5rUGF0aCkKK3sKKyAgICBDU3RyaW5nIHRhcmdl
dFBhdGhGU1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih0YXJnZXRQYXRoKTsKKyAgICBp
ZiAoIXRhcmdldFBhdGhGU1JlcC5kYXRhKCkgfHwgdGFyZ2V0UGF0aEZTUmVwLmRhdGEoKVswXSA9
PSAnXDAnKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBDU3RyaW5nIHN5bWJvbGljTGlu
a1BhdGhGU1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihzeW1ib2xpY0xpbmtQYXRoKTsK
KyAgICBpZiAoIXN5bWJvbGljTGlua1BhdGhGU1JlcC5kYXRhKCkgfHwgc3ltYm9saWNMaW5rUGF0
aEZTUmVwLmRhdGEoKVswXSA9PSAnXDAnKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBy
ZXR1cm4gIXN5bWxpbmsodGFyZ2V0UGF0aEZTUmVwLmRhdGEoKSwgc3ltYm9saWNMaW5rUGF0aEZT
UmVwLmRhdGEoKSk7Cit9CisKK1N0cmluZyBwYXRoR2V0RmlsZU5hbWUoY29uc3QgU3RyaW5nJiBw
YXRoTmFtZSkKK3sKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiB0bXBGaWxlbmFtZSA9IHVuZXNjYXBl
ZEZpbGVuYW1lKHBhdGhOYW1lKTsKKyAgICBpZiAoIXRtcEZpbGVuYW1lKQorICAgICAgICByZXR1
cm4gcGF0aE5hbWU7CisKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBiYXNlTmFtZShnX3BhdGhfZ2V0
X2Jhc2VuYW1lKHRtcEZpbGVuYW1lLmdldCgpKSk7CisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVU
RjgoYmFzZU5hbWUuZ2V0KCkpOworfQorCitib29sIGdldFZvbHVtZUZyZWVTcGFjZShjb25zdCBT
dHJpbmcmIHBhdGgsIHVpbnQ2NF90JiBmcmVlU3BhY2UpCit7CisgICAgR1VuaXF1ZVB0cjxnY2hh
cj4gZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShwYXRoKTsKKyAgICBpZiAoIWZpbGVuYW1l
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBHUmVmUHRyPEdGaWxlPiBmaWxlID0gYWRv
cHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoZmlsZW5hbWUuZ2V0KCkpKTsKKyAgICBHUmVmUHRy
PEdGaWxlSW5mbz4gZmlsZUluZm8gPSBhZG9wdEdSZWYoZ19maWxlX3F1ZXJ5X2ZpbGVzeXN0ZW1f
aW5mbyhmaWxlLmdldCgpLCBHX0ZJTEVfQVRUUklCVVRFX0ZJTEVTWVNURU1fRlJFRSwgMCwgMCkp
OworICAgIGlmICghZmlsZUluZm8pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGZyZWVT
cGFjZSA9IGdfZmlsZV9pbmZvX2dldF9hdHRyaWJ1dGVfdWludDY0KGZpbGVJbmZvLmdldCgpLCBH
X0ZJTEVfQVRUUklCVVRFX0ZJTEVTWVNURU1fRlJFRSk7CisgICAgcmV0dXJuICEhZnJlZVNwYWNl
OworfQorCitTdHJpbmcgZGlyZWN0b3J5TmFtZShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAg
R1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShwYXRoKTsKKyAg
ICBpZiAoIWZpbGVuYW1lKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBHVW5pcXVl
UHRyPGNoYXI+IGRpcm5hbWUoZ19wYXRoX2dldF9kaXJuYW1lKGZpbGVuYW1lLmdldCgpKSk7Cisg
ICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoZGlybmFtZS5nZXQoKSk7Cit9CisKK1ZlY3RvcjxT
dHJpbmc+IGxpc3REaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGZp
bHRlcikKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiBlbnRyaWVzOworCisgICAgR1VuaXF1ZVB0cjxn
Y2hhcj4gZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShwYXRoKTsKKyAgICBpZiAoIWZpbGVu
YW1lKQorICAgICAgICByZXR1cm4gZW50cmllczsKKworICAgIEdVbmlxdWVQdHI8R0Rpcj4gZGly
KGdfZGlyX29wZW4oZmlsZW5hbWUuZ2V0KCksIDAsIG51bGxwdHIpKTsKKyAgICBpZiAoIWRpcikK
KyAgICAgICAgcmV0dXJuIGVudHJpZXM7CisKKyAgICBHVW5pcXVlUHRyPEdQYXR0ZXJuU3BlYz4g
cHNwZWMoZ19wYXR0ZXJuX3NwZWNfbmV3KChmaWx0ZXIudXRmOCgpKS5kYXRhKCkpKTsKKyAgICB3
aGlsZSAoY29uc3QgY2hhciogbmFtZSA9IGdfZGlyX3JlYWRfbmFtZShkaXIuZ2V0KCkpKSB7Cisg
ICAgICAgIGlmICghZ19wYXR0ZXJuX21hdGNoX3N0cmluZyhwc3BlYy5nZXQoKSwgbmFtZSkpCisg
ICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBHVW5pcXVlUHRyPGdjaGFyPiBlbnRyeShn
X2J1aWxkX2ZpbGVuYW1lKGZpbGVuYW1lLmdldCgpLCBuYW1lLCBudWxscHRyKSk7CisgICAgICAg
IGVudHJpZXMuYXBwZW5kKHN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZW50cnku
Z2V0KCkpKTsKKyAgICB9CisKKyAgICByZXR1cm4gZW50cmllczsKK30KKworU3RyaW5nIG9wZW5U
ZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhh
bmRsZSkKK3sKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZShnX3N0cmR1cF9wcmludGYo
IiVzJXMiLCBwcmVmaXgudXRmOCgpLmRhdGEoKSwgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygp
LnV0ZjgoKS5kYXRhKCkpKTsKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiB0ZW1wUGF0aChnX2J1aWxk
X2ZpbGVuYW1lKGdfZ2V0X3RtcF9kaXIoKSwgZmlsZW5hbWUuZ2V0KCksIE5VTEwpKTsKKyAgICBH
UmVmUHRyPEdGaWxlPiBmaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgodGVtcFBh
dGguZ2V0KCkpKTsKKworICAgIGhhbmRsZSA9IGdfZmlsZV9jcmVhdGVfcmVhZHdyaXRlKGZpbGUu
Z2V0KCksIEdfRklMRV9DUkVBVEVfTk9ORSwgMCwgMCk7CisgICAgaWYgKCFpc0hhbmRsZVZhbGlk
KGhhbmRsZSkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICByZXR1cm4gU3RyaW5nOjpm
cm9tVVRGOCh0ZW1wUGF0aC5nZXQoKSk7Cit9CisKK1BsYXRmb3JtRmlsZUhhbmRsZSBvcGVuRmls
ZShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVPcGVuTW9kZSBtb2RlKQoreworICAgIEdVbmlxdWVQ
dHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUocGF0aCk7CisgICAgaWYgKCFm
aWxlbmFtZSkKKyAgICAgICAgcmV0dXJuIGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7CisKKyAg
ICBHUmVmUHRyPEdGaWxlPiBmaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoZmls
ZW5hbWUuZ2V0KCkpKTsKKyAgICBHRmlsZUlPU3RyZWFtKiBpb1N0cmVhbSA9IDA7CisgICAgaWYg
KG1vZGUgPT0gRmlsZU9wZW5Nb2RlOjpSZWFkKQorICAgICAgICBpb1N0cmVhbSA9IGdfZmlsZV9v
cGVuX3JlYWR3cml0ZShmaWxlLmdldCgpLCAwLCAwKTsKKyAgICBlbHNlIGlmIChtb2RlID09IEZp
bGVPcGVuTW9kZTo6V3JpdGUpIHsKKyAgICAgICAgaWYgKGdfZmlsZV90ZXN0KGZpbGVuYW1lLmdl
dCgpLCBzdGF0aWNfY2FzdDxHRmlsZVRlc3Q+KEdfRklMRV9URVNUX0VYSVNUUyB8IEdfRklMRV9U
RVNUX0lTX1JFR1VMQVIpKSkKKyAgICAgICAgICAgIGlvU3RyZWFtID0gZ19maWxlX29wZW5fcmVh
ZHdyaXRlKGZpbGUuZ2V0KCksIDAsIDApOworICAgICAgICBlbHNlCisgICAgICAgICAgICBpb1N0
cmVhbSA9IGdfZmlsZV9jcmVhdGVfcmVhZHdyaXRlKGZpbGUuZ2V0KCksIEdfRklMRV9DUkVBVEVf
Tk9ORSwgMCwgMCk7CisgICAgfQorCisgICAgcmV0dXJuIGlvU3RyZWFtOworfQorCit2b2lkIGNs
b3NlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKK3sKKyAgICBpZiAoIWlzSGFuZGxl
VmFsaWQoaGFuZGxlKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZ19pb19zdHJlYW1fY2xvc2Uo
R19JT19TVFJFQU0oaGFuZGxlKSwgMCwgMCk7CisgICAgZ19vYmplY3RfdW5yZWYoaGFuZGxlKTsK
KyAgICBoYW5kbGUgPSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOworfQorCitsb25nIGxvbmcg
c2Vla0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCwgRmls
ZVNlZWtPcmlnaW4gb3JpZ2luKQoreworICAgIEdTZWVrVHlwZSBzZWVrVHlwZSA9IEdfU0VFS19T
RVQ7CisgICAgc3dpdGNoIChvcmlnaW4pIHsKKyAgICBjYXNlIEZpbGVTZWVrT3JpZ2luOjpCZWdp
bm5pbmc6CisgICAgICAgIHNlZWtUeXBlID0gR19TRUVLX1NFVDsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBGaWxlU2Vla09yaWdpbjo6Q3VycmVudDoKKyAgICAgICAgc2Vla1R5cGUgPSBHX1NF
RUtfQ1VSOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZpbGVTZWVrT3JpZ2luOjpFbmQ6Cisg
ICAgICAgIHNlZWtUeXBlID0gR19TRUVLX0VORDsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVs
dDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCisgICAgaWYgKCFnX3Nl
ZWthYmxlX3NlZWsoR19TRUVLQUJMRShnX2lvX3N0cmVhbV9nZXRfaW5wdXRfc3RyZWFtKEdfSU9f
U1RSRUFNKGhhbmRsZSkpKSwKKyAgICAgICAgb2Zmc2V0LCBzZWVrVHlwZSwgMCwgMCkpCisgICAg
eworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHJldHVybiBnX3NlZWthYmxlX3RlbGwo
R19TRUVLQUJMRShnX2lvX3N0cmVhbV9nZXRfaW5wdXRfc3RyZWFtKEdfSU9fU1RSRUFNKGhhbmRs
ZSkpKSk7Cit9CisKK2ludCB3cml0ZVRvRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBj
b25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQoreworICAgIGdzaXplIGJ5dGVzV3JpdHRlbjsK
KyAgICBnX291dHB1dF9zdHJlYW1fd3JpdGVfYWxsKGdfaW9fc3RyZWFtX2dldF9vdXRwdXRfc3Ry
ZWFtKEdfSU9fU1RSRUFNKGhhbmRsZSkpLAorICAgICAgICBkYXRhLCBsZW5ndGgsICZieXRlc1dy
aXR0ZW4sIDAsIDApOworICAgIHJldHVybiBieXRlc1dyaXR0ZW47Cit9CisKK2ludCByZWFkRnJv
bUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY2hhciogZGF0YSwgaW50IGxlbmd0aCkK
K3sKKyAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CisgICAgZG8geworICAgICAgICBn
c3NpemUgYnl0ZXNSZWFkID0gZ19pbnB1dF9zdHJlYW1fcmVhZChnX2lvX3N0cmVhbV9nZXRfaW5w
dXRfc3RyZWFtKEdfSU9fU1RSRUFNKGhhbmRsZSkpLAorICAgICAgICAgICAgZGF0YSwgbGVuZ3Ro
LCAwLCAmZXJyb3Iub3V0UHRyKCkpOworICAgICAgICBpZiAoYnl0ZXNSZWFkID49IDApCisgICAg
ICAgICAgICByZXR1cm4gYnl0ZXNSZWFkOworICAgIH0gd2hpbGUgKGVycm9yICYmIGVycm9yLT5j
b2RlID09IEdfRklMRV9FUlJPUl9JTlRSKTsKKyAgICByZXR1cm4gLTE7Cit9CisKK2Jvb2wgbW92
ZUZpbGUoY29uc3QgU3RyaW5nJiBvbGRQYXRoLCBjb25zdCBTdHJpbmcmIG5ld1BhdGgpCit7Cisg
ICAgR1VuaXF1ZVB0cjxnY2hhcj4gb2xkRmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShvbGRQ
YXRoKTsKKyAgICBpZiAoIW9sZEZpbGVuYW1lKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBHVW5pcXVlUHRyPGdjaGFyPiBuZXdGaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKG5ld1Bh
dGgpOworICAgIGlmICghbmV3RmlsZW5hbWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IEdSZWZQdHI8R0ZpbGU+IG9sZEZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0aChv
bGRGaWxlbmFtZS5nZXQoKSkpOworICAgIEdSZWZQdHI8R0ZpbGU+IG5ld0ZpbGUgPSBhZG9wdEdS
ZWYoZ19maWxlX25ld19mb3JfcGF0aChuZXdGaWxlbmFtZS5nZXQoKSkpOworCisgICAgcmV0dXJu
IGdfZmlsZV9tb3ZlKG9sZEZpbGUuZ2V0KCksIG5ld0ZpbGUuZ2V0KCksIEdfRklMRV9DT1BZX09W
RVJXUklURSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cik7Cit9CisKK2Jvb2wg
aGFyZExpbmtPckNvcHlGaWxlKGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBTdHJpbmcmIGRl
c3RpbmF0aW9uKQoreworI2lmIE9TKFdJTkRPV1MpCisgICAgcmV0dXJuICEhOjpDb3B5RmlsZShz
b3VyY2UuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCksIGRlc3RpbmF0aW9u
LmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpLCBUUlVFKTsKKyNlbHNlCisg
ICAgR1VuaXF1ZVB0cjxnY2hhcj4gc291cmNlRmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShz
b3VyY2UpOworICAgIGlmICghc291cmNlRmlsZW5hbWUpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGRlc3RpbmF0aW9uRmlsZW5hbWUgPSB1bmVzY2FwZWRG
aWxlbmFtZShkZXN0aW5hdGlvbik7CisgICAgaWYgKCFkZXN0aW5hdGlvbkZpbGVuYW1lKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWxpbmsoc291cmNlRmlsZW5hbWUuZ2V0KCks
IGRlc3RpbmF0aW9uRmlsZW5hbWUuZ2V0KCkpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAg
IC8vIEhhcmQgbGluayBmYWlsZWQuIFBlcmZvcm0gYSBjb3B5IGluc3RlYWQuCisgICAgR1JlZlB0
cjxHRmlsZT4gc291cmNlRmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKHNvdXJj
ZUZpbGVuYW1lLmdldCgpKSk7CisgICAgR1JlZlB0cjxHRmlsZT4gZGVzdGluYXRpb25GaWxlID0g
YWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoZGVzdGluYXRpb25GaWxlbmFtZS5nZXQoKSkp
OworICAgIHJldHVybiBnX2ZpbGVfY29weShzb3VyY2VGaWxlLmdldCgpLCBkZXN0aW5hdGlvbkZp
bGUuZ2V0KCksIEdfRklMRV9DT1BZX05PTkUsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51
bGxwdHIpOworI2VuZGlmCit9CisKK09wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChj
b25zdCBDU3RyaW5nJiBmc0ZpbGUpCit7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUg
PSB1bmVzY2FwZWRGaWxlbmFtZShmc0ZpbGUuZGF0YSgpKTsKKyAgICBpZiAoIWZpbGVuYW1lKQor
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgR1JlZlB0cjxHRmlsZT4gZmlsZSA9
IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKGZpbGVuYW1lLmdldCgpKSk7CisgICAgR1Jl
ZlB0cjxHRmlsZUluZm8+IGZpbGVJbmZvID0gYWRvcHRHUmVmKGdfZmlsZV9xdWVyeV9maWxlc3lz
dGVtX2luZm8oZmlsZS5nZXQoKSwgR19GSUxFX0FUVFJJQlVURV9VTklYX0RFVklDRSwgbnVsbHB0
ciwgbnVsbHB0cikpOworICAgIGlmICghZmlsZUluZm8pCisgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisKKyAgICByZXR1cm4gZ19maWxlX2luZm9fZ2V0X2F0dHJpYnV0ZV91aW50MzIoZmls
ZUluZm8uZ2V0KCksIEdfRklMRV9BVFRSSUJVVEVfVU5JWF9ERVZJQ0UpOworfQorCisjaWYgVVNF
KEZJTEVfTE9DSykKK2Jvb2wgbG9ja0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgT3B0
aW9uU2V0PEZpbGVMb2NrTW9kZT4gbG9ja01vZGUpCit7CisgICAgQ09NUElMRV9BU1NFUlQoTE9D
S19TSCA9PSBXVEY6OmVudW1Ub1VuZGVybHlpbmdUeXBlKEZpbGVMb2NrTW9kZTo6U2hhcmVkKSwg
TG9ja1NoYXJlZEVuY29kaW5nSXNBc0V4cGVjdGVkKTsKKyAgICBDT01QSUxFX0FTU0VSVChMT0NL
X0VYID09IFdURjo6ZW51bVRvVW5kZXJseWluZ1R5cGUoRmlsZUxvY2tNb2RlOjpFeGNsdXNpdmUp
LCBMb2NrRXhjbHVzaXZlRW5jb2RpbmdJc0FzRXhwZWN0ZWQpOworICAgIENPTVBJTEVfQVNTRVJU
KExPQ0tfTkIgPT0gV1RGOjplbnVtVG9VbmRlcmx5aW5nVHlwZShGaWxlTG9ja01vZGU6Ok5vbmJs
b2NraW5nKSwgTG9ja05vbmJsb2NraW5nRW5jb2RpbmdJc0FzRXhwZWN0ZWQpOworICAgIGF1dG8q
IGlucHV0U3RyZWFtID0gZ19pb19zdHJlYW1fZ2V0X2lucHV0X3N0cmVhbShHX0lPX1NUUkVBTSho
YW5kbGUpKTsKKyAgICBpbnQgcmVzdWx0ID0gZmxvY2soZ19maWxlX2Rlc2NyaXB0b3JfYmFzZWRf
Z2V0X2ZkKEdfRklMRV9ERVNDUklQVE9SX0JBU0VEKGlucHV0U3RyZWFtKSksIGxvY2tNb2RlLnRv
UmF3KCkpOworICAgIHJldHVybiByZXN1bHQgIT0gLTE7Cit9CisKK2Jvb2wgdW5sb2NrRmlsZShQ
bGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlKQoreworICAgIGF1dG8qIGlucHV0U3RyZWFtID0gZ19p
b19zdHJlYW1fZ2V0X2lucHV0X3N0cmVhbShHX0lPX1NUUkVBTShoYW5kbGUpKTsKKyAgICBpbnQg
cmVzdWx0ID0gZmxvY2soZ19maWxlX2Rlc2NyaXB0b3JfYmFzZWRfZ2V0X2ZkKEdfRklMRV9ERVND
UklQVE9SX0JBU0VEKGlucHV0U3RyZWFtKSksIExPQ0tfVU4pOworICAgIHJldHVybiByZXN1bHQg
IT0gLTE7Cit9CisjZW5kaWYgLy8gVVNFKEZJTEVfTE9DSykKKworfSAvLyBuYW1lc3BhY2UgRmls
ZVN5c3RlbQorfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9t
YWMvRmlsZVN5c3RlbU1hYy5tbSBiL1NvdXJjZS9XVEYvd3RmL21hYy9GaWxlU3lzdGVtTWFjLm1t
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmUzNjcwYTI3MTNmNDNmMjU1OGVjNWQzNDdlYzIxYmRkZTJlZWVhNWUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9tYWMvRmlsZVN5c3RlbU1hYy5tbQpAQCAt
MCwwICsxLDg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBv
cnQgPHd0Zi9GaWxlU3lzdGVtLmg+CisKKyNpZiBQTEFURk9STShNQUMpCisKKyNpbXBvcnQgPHBh
bC9zcGkvbWFjL01ldGFkYXRhU1BJLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvTlNVUkxFeHRyYXMu
aD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV1RGIHsKKwor
Ym9vbCBGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgp
Cit7CisgICAgYXV0byBmaWxlTWFuYWdlciA9IGFkb3B0TlMoW1tOU0ZpbGVNYW5hZ2VyIGFsbG9j
XSBpbml0XSk7CisKKyAgICBpZiAoTlNBcnJheSAqZGlyZWN0b3J5Q29udGVudHMgPSBbZmlsZU1h
bmFnZXIgY29udGVudHNPZkRpcmVjdG9yeUF0UGF0aDpwYXRoIGVycm9yOm51bGxwdHJdKSB7Cisg
ICAgICAgIC8vIEV4cGxpY2l0bHkgbG9vayBmb3IgYW5kIGRlbGV0ZSAuRFNfU3RvcmUgZmlsZXMu
CisgICAgICAgIGlmIChkaXJlY3RvcnlDb250ZW50cy5jb3VudCA9PSAxICYmIFtkaXJlY3RvcnlD
b250ZW50cy5maXJzdE9iamVjdCBpc0VxdWFsVG9TdHJpbmc6QCIuRFNfU3RvcmUiXSkKKyAgICAg
ICAgICAgIFtmaWxlTWFuYWdlciByZW1vdmVJdGVtQXRQYXRoOltwYXRoIHN0cmluZ0J5QXBwZW5k
aW5nUGF0aENvbXBvbmVudDpkaXJlY3RvcnlDb250ZW50cy5maXJzdE9iamVjdF0gZXJyb3I6bnVs
bHB0cl07CisgICAgfQorCisgICAgLy8gcm1kaXIoLi4uKSByZXR1cm5zIDAgb24gc3VjY2Vzc2Z1
bCBkZWxldGlvbiBvZiB0aGUgcGF0aCBhbmQgbm9uLXplcm8gaW4gYW55IG90aGVyIGNhc2UgKGlu
Y2x1ZGluZyBpbnZhbGlkIHBlcm1pc3Npb25zIG9yIG5vbi1leGlzdGVudCBmaWxlKQorICAgIHJl
dHVybiAhcm1kaXIoRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRh
dGEoKSk7Cit9CisKK3ZvaWQgRmlsZVN5c3RlbTo6c2V0TWV0YWRhdGFVUkwoY29uc3QgU3RyaW5n
JiBwYXRoLCBjb25zdCBTdHJpbmcmIG1ldGFkYXRhVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJl
ZmVycmVyKQoreworICAgIFN0cmluZyB1cmxTdHJpbmc7CisgICAgaWYgKE5TVVJMICp1cmwgPSBV
UkxXaXRoVXNlclR5cGVkU3RyaW5nKG1ldGFkYXRhVVJMU3RyaW5nLCBuaWwpKQorICAgICAgICB1
cmxTdHJpbmcgPSBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKFdURjo6VVJMQnlSZW1vdmluZ1VzZXJJ
bmZvKHVybCkpOworICAgIGVsc2UKKyAgICAgICAgdXJsU3RyaW5nID0gbWV0YWRhdGFVUkxTdHJp
bmc7CisKKyAgICAvLyBDYWxsIE1ldGFkYXRhIEFQSSBvbiBhIGJhY2tncm91bmQgcXVldWUgYmVj
YXVzZSBpdCBjYW4gdGFrZSBzb21lIHRpbWUuCisgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hf
Z2V0X2dsb2JhbF9xdWV1ZShESVNQQVRDSF9RVUVVRV9QUklPUklUWV9ERUZBVUxULCAwKSwgW3Bh
dGggPSBwYXRoLmlzb2xhdGVkQ29weSgpLCB1cmxTdHJpbmcgPSB1cmxTdHJpbmcuaXNvbGF0ZWRD
b3B5KCksIHJlZmVycmVyID0gcmVmZXJyZXIuaXNvbGF0ZWRDb3B5KCldIHsKKyAgICAgICAgYXV0
byBpdGVtID0gYWRvcHRDRihNREl0ZW1DcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcGF0aC5j
cmVhdGVDRlN0cmluZygpLmdldCgpKSk7CisgICAgICAgIGlmICghaXRlbSkKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBhdXRvIHdoZXJlRnJvbUF0dHJpYnV0ZSA9IGFkb3B0TlMoW1tO
U011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhPYmplY3RzOnVybFN0cmluZywgbmlsXSk7Cisg
ICAgICAgIGlmICghcmVmZXJyZXIuaXNOdWxsKCkpCisgICAgICAgICAgICBbd2hlcmVGcm9tQXR0
cmlidXRlIGFkZE9iamVjdDpyZWZlcnJlcl07CisKKyAgICAgICAgTURJdGVtU2V0QXR0cmlidXRl
KGl0ZW0uZ2V0KCksIGtNREl0ZW1XaGVyZUZyb21zLCAoX19icmlkZ2UgQ0ZBcnJheVJlZil3aGVy
ZUZyb21BdHRyaWJ1dGUuZ2V0KCkpOworICAgICAgICBNREl0ZW1TZXRBdHRyaWJ1dGUoaXRlbS5n
ZXQoKSwga01ESXRlbURvd25sb2FkZWREYXRlLCAoX19icmlkZ2UgQ0ZBcnJheVJlZilAWyBbTlNE
YXRlIGRhdGVdIF0pOworICAgIH0pOworfQorCitib29sIEZpbGVTeXN0ZW06OmNhbkV4Y2x1ZGVG
cm9tQmFja3VwKCkKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBGaWxlU3lzdGVtOjpl
eGNsdWRlRnJvbUJhY2t1cChjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgLy8gSXQgaXMgY3Jp
dGljYWwgdG8gcGFzcyBGQUxTRSBmb3IgZXhjbHVkZUJ5UGF0aCBiZWNhdXNlIGV4Y2x1ZGluZyBi
eSBwYXRoIHJlcXVpcmVzIHJvb3QgcHJpdmlsZWdlcy4KKyAgICBDU0JhY2t1cFNldEl0ZW1FeGNs
dWRlZChGaWxlU3lzdGVtOjpwYXRoQXNVUkwocGF0aCkuZ2V0KCksIFRSVUUsIEZBTFNFKTsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBQTEFU
Rk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9T
SVguY3BwIGIvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5jNjBlY2IxNTg2MzkyMGZhNDM2MWZjMTRkYjhlZTZkM2ZmZTJlNGYwCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtMCww
ICsxLDQ5NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBu
YW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
CisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgor
CisjaW5jbHVkZSA8ZGlyZW50Lmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxmY250
bC5oPgorI2luY2x1ZGUgPGZubWF0Y2guaD4KKyNpbmNsdWRlIDxsaWJnZW4uaD4KKyNpbmNsdWRl
IDxzdGRpby5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5jbHVkZSA8c3lzL3N0YXR2ZnMu
aD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRl
IDx3dGYvRW51bVRyYWl0cy5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlTWV0YWRhdGEuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRl
ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV1RGIHsK
KworbmFtZXNwYWNlIEZpbGVTeXN0ZW0geworCitib29sIGZpbGVFeGlzdHMoY29uc3QgU3RyaW5n
JiBwYXRoKQoreworICAgIGlmIChwYXRoLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwor
CisgICAgaWYgKCFmc1JlcC5kYXRhKCkgfHwgZnNSZXAuZGF0YSgpWzBdID09ICdcMCcpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBhY2Nlc3MoZnNSZXAuZGF0YSgpLCBGX09L
KSAhPSAtMTsKK30KKworYm9vbCBkZWxldGVGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAg
ICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworCisgICAg
aWYgKCFmc1JlcC5kYXRhKCkgfHwgZnNSZXAuZGF0YSgpWzBdID09ICdcMCcpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIC8vIHVubGluayguLi4pIHJldHVybnMgMCBvbiBzdWNjZXNzZnVs
IGRlbGV0aW9uIG9mIHRoZSBwYXRoIGFuZCBub24temVybyBpbiBhbnkgb3RoZXIgY2FzZSAoaW5j
bHVkaW5nIGludmFsaWQgcGVybWlzc2lvbnMgb3Igbm9uLWV4aXN0ZW50IGZpbGUpCisgICAgcmV0
dXJuICF1bmxpbmsoZnNSZXAuZGF0YSgpKTsKK30KKworUGxhdGZvcm1GaWxlSGFuZGxlIG9wZW5G
aWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlIG1vZGUpCit7CisgICAgQ1N0cmlu
ZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKKworICAgIGlmIChmc1Jl
cC5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7CisK
KyAgICBpbnQgcGxhdGZvcm1GbGFnID0gMDsKKyAgICBpZiAobW9kZSA9PSBGaWxlT3Blbk1vZGU6
OlJlYWQpCisgICAgICAgIHBsYXRmb3JtRmxhZyB8PSBPX1JET05MWTsKKyAgICBlbHNlIGlmICht
b2RlID09IEZpbGVPcGVuTW9kZTo6V3JpdGUpCisgICAgICAgIHBsYXRmb3JtRmxhZyB8PSAoT19X
Uk9OTFkgfCBPX0NSRUFUIHwgT19UUlVOQyk7CisjaWYgT1MoREFSV0lOKQorICAgIGVsc2UgaWYg
KG1vZGUgPT0gRmlsZU9wZW5Nb2RlOjpFdmVudHNPbmx5KQorICAgICAgICBwbGF0Zm9ybUZsYWcg
fD0gT19FVlRPTkxZOworI2VuZGlmCisKKyAgICByZXR1cm4gb3Blbihmc1JlcC5kYXRhKCksIHBs
YXRmb3JtRmxhZywgMDY2Nik7Cit9CisKK3ZvaWQgY2xvc2VGaWxlKFBsYXRmb3JtRmlsZUhhbmRs
ZSYgaGFuZGxlKQoreworICAgIGlmIChpc0hhbmRsZVZhbGlkKGhhbmRsZSkpIHsKKyAgICAgICAg
Y2xvc2UoaGFuZGxlKTsKKyAgICAgICAgaGFuZGxlID0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRs
ZTsKKyAgICB9Cit9CisKK2xvbmcgbG9uZyBzZWVrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFu
ZGxlLCBsb25nIGxvbmcgb2Zmc2V0LCBGaWxlU2Vla09yaWdpbiBvcmlnaW4pCit7CisgICAgaW50
IHdoZW5jZSA9IFNFRUtfU0VUOworICAgIHN3aXRjaCAob3JpZ2luKSB7CisgICAgY2FzZSBGaWxl
U2Vla09yaWdpbjo6QmVnaW5uaW5nOgorICAgICAgICB3aGVuY2UgPSBTRUVLX1NFVDsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBGaWxlU2Vla09yaWdpbjo6Q3VycmVudDoKKyAgICAgICAgd2hl
bmNlID0gU0VFS19DVVI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRmlsZVNlZWtPcmlnaW46
OkVuZDoKKyAgICAgICAgd2hlbmNlID0gU0VFS19FTkQ7CisgICAgICAgIGJyZWFrOworICAgIGRl
ZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8bG9uZyBsb25nPihsc2VlayhoYW5kbGUsIG9mZnNldCwgd2hlbmNlKSk7Cit9
CisKK2Jvb2wgdHJ1bmNhdGVGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGxvbmcgbG9u
ZyBvZmZzZXQpCit7CisgICAgLy8gZnRydW5jYXRlIHJldHVybnMgMCB0byBpbmRpY2F0ZSB0aGUg
c3VjY2Vzcy4KKyAgICByZXR1cm4gIWZ0cnVuY2F0ZShoYW5kbGUsIG9mZnNldCk7Cit9CisKK2lu
dCB3cml0ZVRvRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBjb25zdCBjaGFyKiBkYXRh
LCBpbnQgbGVuZ3RoKQoreworICAgIGRvIHsKKyAgICAgICAgaW50IGJ5dGVzV3JpdHRlbiA9IHdy
aXRlKGhhbmRsZSwgZGF0YSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5ndGgpKTsKKyAgICAgICAg
aWYgKGJ5dGVzV3JpdHRlbiA+PSAwKQorICAgICAgICAgICAgcmV0dXJuIGJ5dGVzV3JpdHRlbjsK
KyAgICB9IHdoaWxlIChlcnJubyA9PSBFSU5UUik7CisgICAgcmV0dXJuIC0xOworfQorCitpbnQg
cmVhZEZyb21GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNoYXIqIGRhdGEsIGludCBs
ZW5ndGgpCit7CisgICAgZG8geworICAgICAgICBpbnQgYnl0ZXNSZWFkID0gcmVhZChoYW5kbGUs
IGRhdGEsIHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSk7CisgICAgICAgIGlmIChieXRlc1Jl
YWQgPj0gMCkKKyAgICAgICAgICAgIHJldHVybiBieXRlc1JlYWQ7CisgICAgfSB3aGlsZSAoZXJy
bm8gPT0gRUlOVFIpOworICAgIHJldHVybiAtMTsKK30KKworI2lmIFVTRShGSUxFX0xPQ0spCiti
b29sIGxvY2tGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIE9wdGlvblNldDxGaWxlTG9j
a01vZGU+IGxvY2tNb2RlKQoreworICAgIENPTVBJTEVfQVNTRVJUKExPQ0tfU0ggPT0gV1RGOjpl
bnVtVG9VbmRlcmx5aW5nVHlwZShGaWxlTG9ja01vZGU6OlNoYXJlZCksIExvY2tTaGFyZWRFbmNv
ZGluZ0lzQXNFeHBlY3RlZCk7CisgICAgQ09NUElMRV9BU1NFUlQoTE9DS19FWCA9PSBXVEY6OmVu
dW1Ub1VuZGVybHlpbmdUeXBlKEZpbGVMb2NrTW9kZTo6RXhjbHVzaXZlKSwgTG9ja0V4Y2x1c2l2
ZUVuY29kaW5nSXNBc0V4cGVjdGVkKTsKKyAgICBDT01QSUxFX0FTU0VSVChMT0NLX05CID09IFdU
Rjo6ZW51bVRvVW5kZXJseWluZ1R5cGUoRmlsZUxvY2tNb2RlOjpOb25ibG9ja2luZyksIExvY2tO
b25ibG9ja2luZ0VuY29kaW5nSXNBc0V4cGVjdGVkKTsKKyAgICBpbnQgcmVzdWx0ID0gZmxvY2so
aGFuZGxlLCBsb2NrTW9kZS50b1JhdygpKTsKKyAgICByZXR1cm4gKHJlc3VsdCAhPSAtMSk7Cit9
CisKK2Jvb2wgdW5sb2NrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlKQoreworICAgIGlu
dCByZXN1bHQgPSBmbG9jayhoYW5kbGUsIExPQ0tfVU4pOworICAgIHJldHVybiAocmVzdWx0ICE9
IC0xKTsKK30KKyNlbmRpZgorCisjaWYgIVBMQVRGT1JNKE1BQykKK2Jvb2wgZGVsZXRlRW1wdHlE
aXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIENTdHJpbmcgZnNSZXAgPSBmaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisKKyAgICBpZiAoIWZzUmVwLmRhdGEoKSB8fCBm
c1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8g
cm1kaXIoLi4uKSByZXR1cm5zIDAgb24gc3VjY2Vzc2Z1bCBkZWxldGlvbiBvZiB0aGUgcGF0aCBh
bmQgbm9uLXplcm8gaW4gYW55IG90aGVyIGNhc2UgKGluY2x1ZGluZyBpbnZhbGlkIHBlcm1pc3Np
b25zIG9yIG5vbi1leGlzdGVudCBmaWxlKQorICAgIHJldHVybiAhcm1kaXIoZnNSZXAuZGF0YSgp
KTsKK30KKyNlbmRpZgorCitib29sIGdldEZpbGVTaXplKGNvbnN0IFN0cmluZyYgcGF0aCwgbG9u
ZyBsb25nJiByZXN1bHQpCit7CisgICAgQ1N0cmluZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihwYXRoKTsKKworICAgIGlmICghZnNSZXAuZGF0YSgpIHx8IGZzUmVwLmRhdGEoKVsw
XSA9PSAnXDAnKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzdHJ1Y3Qgc3RhdCBmaWxl
SW5mbzsKKworICAgIGlmIChzdGF0KGZzUmVwLmRhdGEoKSwgJmZpbGVJbmZvKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgcmVzdWx0ID0gZmlsZUluZm8uc3Rfc2l6ZTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworYm9vbCBnZXRGaWxlU2l6ZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxl
LCBsb25nIGxvbmcmIHJlc3VsdCkKK3sKKyAgICBzdHJ1Y3Qgc3RhdCBmaWxlSW5mbzsKKyAgICBp
ZiAoZnN0YXQoaGFuZGxlLCAmZmlsZUluZm8pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICByZXN1bHQgPSBmaWxlSW5mby5zdF9zaXplOworICAgIHJldHVybiB0cnVlOworfQorCitPcHRp
b25hbDxXYWxsVGltZT4gZ2V0RmlsZUNyZWF0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgpCit7
CisjaWYgT1MoREFSV0lOKSB8fCBPUyhPUEVOQlNEKSB8fCBPUyhORVRCU0QpIHx8IE9TKEZSRUVC
U0QpCisgICAgQ1N0cmluZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsK
KworICAgIGlmICghZnNSZXAuZGF0YSgpIHx8IGZzUmVwLmRhdGEoKVswXSA9PSAnXDAnKQorICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgc3RydWN0IHN0YXQgZmlsZUluZm87CisK
KyAgICBpZiAoc3RhdChmc1JlcC5kYXRhKCksICZmaWxlSW5mbykpCisgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKGZpbGVJ
bmZvLnN0X2JpcnRodGltZSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShwYXRoKTsKKyAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworI2VuZGlmCit9CisKK09wdGlvbmFsPFdhbGxUaW1lPiBnZXRG
aWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgQ1N0cmluZyBm
c1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKKworICAgIGlmICghZnNSZXAu
ZGF0YSgpIHx8IGZzUmVwLmRhdGEoKVswXSA9PSAnXDAnKQorICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworCisgICAgc3RydWN0IHN0YXQgZmlsZUluZm87CisKKyAgICBpZiAoc3RhdChmc1Jl
cC5kYXRhKCksICZmaWxlSW5mbykpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAg
ICByZXR1cm4gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKGZpbGVJbmZvLnN0X210aW1lKTsKK30K
Kworc3RhdGljIEZpbGVNZXRhZGF0YTo6VHlwZSB0b0ZpbGVNZXRhdGFUeXBlKHN0cnVjdCBzdGF0
IGZpbGVJbmZvKQoreworICAgIGlmIChTX0lTRElSKGZpbGVJbmZvLnN0X21vZGUpKQorICAgICAg
ICByZXR1cm4gRmlsZU1ldGFkYXRhOjpUeXBlOjpEaXJlY3Rvcnk7CisgICAgaWYgKFNfSVNMTkso
ZmlsZUluZm8uc3RfbW9kZSkpCisgICAgICAgIHJldHVybiBGaWxlTWV0YWRhdGE6OlR5cGU6OlN5
bWJvbGljTGluazsKKyAgICByZXR1cm4gRmlsZU1ldGFkYXRhOjpUeXBlOjpGaWxlOworfQorCitz
dGF0aWMgT3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGFVc2luZ0Z1bmN0aW9uKGNv
bnN0IFN0cmluZyYgcGF0aCwgaW50ICgqc3RhdEZ1bmMpKGNvbnN0IGNoYXIqLCBzdHJ1Y3Qgc3Rh
dCopKQoreworICAgIENTdHJpbmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0
aCk7CisKKyAgICBpZiAoIWZzUmVwLmRhdGEoKSB8fCBmc1JlcC5kYXRhKClbMF0gPT0gJ1wwJykK
KyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHN0cnVjdCBzdGF0IGZpbGVJbmZv
OworICAgIGlmIChzdGF0RnVuYyhmc1JlcC5kYXRhKCksICZmaWxlSW5mbykpCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBTdHJpbmcgZmlsZW5hbWUgPSBwYXRoR2V0RmlsZU5h
bWUocGF0aCk7CisgICAgYm9vbCBpc0hpZGRlbiA9ICFmaWxlbmFtZS5pc0VtcHR5KCkgJiYgZmls
ZW5hbWVbMF0gPT0gJy4nOworICAgIHJldHVybiBGaWxlTWV0YWRhdGEgeworICAgICAgICBXYWxs
VGltZTo6ZnJvbVJhd1NlY29uZHMoZmlsZUluZm8uc3RfbXRpbWUpLAorICAgICAgICBmaWxlSW5m
by5zdF9zaXplLAorICAgICAgICBpc0hpZGRlbiwKKyAgICAgICAgdG9GaWxlTWV0YXRhVHlwZShm
aWxlSW5mbykKKyAgICB9OworfQorCitPcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0
YShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgcmV0dXJuIGZpbGVNZXRhZGF0YVVzaW5nRnVu
Y3Rpb24ocGF0aCwgJmxzdGF0KTsKK30KKworT3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0
YWRhdGFGb2xsb3dpbmdTeW1saW5rcyhjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgcmV0dXJu
IGZpbGVNZXRhZGF0YVVzaW5nRnVuY3Rpb24ocGF0aCwgJnN0YXQpOworfQorCitib29sIGNyZWF0
ZVN5bWJvbGljTGluayhjb25zdCBTdHJpbmcmIHRhcmdldFBhdGgsIGNvbnN0IFN0cmluZyYgc3lt
Ym9saWNMaW5rUGF0aCkKK3sKKyAgICBDU3RyaW5nIHRhcmdldFBhdGhGU1JlcCA9IGZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbih0YXJnZXRQYXRoKTsKKyAgICBpZiAoIXRhcmdldFBhdGhGU1JlcC5k
YXRhKCkgfHwgdGFyZ2V0UGF0aEZTUmVwLmRhdGEoKVswXSA9PSAnXDAnKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBDU3RyaW5nIHN5bWJvbGljTGlua1BhdGhGU1JlcCA9IGZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihzeW1ib2xpY0xpbmtQYXRoKTsKKyAgICBpZiAoIXN5bWJvbGljTGlu
a1BhdGhGU1JlcC5kYXRhKCkgfHwgc3ltYm9saWNMaW5rUGF0aEZTUmVwLmRhdGEoKVswXSA9PSAn
XDAnKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gIXN5bWxpbmsodGFyZ2V0
UGF0aEZTUmVwLmRhdGEoKSwgc3ltYm9saWNMaW5rUGF0aEZTUmVwLmRhdGEoKSk7Cit9CisKK1N0
cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBT
dHJpbmcmIGNvbXBvbmVudCkKK3sKKyAgICBpZiAocGF0aC5lbmRzV2l0aCgnLycpKQorICAgICAg
ICByZXR1cm4gcGF0aCArIGNvbXBvbmVudDsKKyAgICByZXR1cm4gcGF0aCArICIvIiArIGNvbXBv
bmVudDsKK30KKworU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMoU3RyaW5nVmlldyBw
YXRoLCBjb25zdCBWZWN0b3I8U3RyaW5nVmlldz4mIGNvbXBvbmVudHMpCit7CisgICAgU3RyaW5n
QnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kKHBhdGgpOworICAgIGZvciAoYXV0
byYgY29tcG9uZW50IDogY29tcG9uZW50cykgeworICAgICAgICBidWlsZGVyLmFwcGVuZCgnLycp
OworICAgICAgICBidWlsZGVyLmFwcGVuZChjb21wb25lbnQpOworICAgIH0KKyAgICByZXR1cm4g
YnVpbGRlci50b1N0cmluZygpOworfQorCitib29sIG1ha2VBbGxEaXJlY3Rvcmllcyhjb25zdCBT
dHJpbmcmIHBhdGgpCit7CisgICAgQ1N0cmluZyBmdWxsUGF0aCA9IGZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihwYXRoKTsKKyAgICBpZiAoIWFjY2VzcyhmdWxsUGF0aC5kYXRhKCksIEZfT0spKQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGNoYXIqIHAgPSBmdWxsUGF0aC5tdXRhYmxlRGF0
YSgpICsgMTsKKyAgICBpbnQgbGVuZ3RoID0gZnVsbFBhdGgubGVuZ3RoKCk7CisKKyAgICBpZiAo
cFtsZW5ndGggLSAxXSA9PSAnLycpCisgICAgICAgIHBbbGVuZ3RoIC0gMV0gPSAnXDAnOworICAg
IGZvciAoOyAqcDsgKytwKSB7CisgICAgICAgIGlmICgqcCA9PSAnLycpIHsKKyAgICAgICAgICAg
ICpwID0gJ1wwJzsKKyAgICAgICAgICAgIGlmIChhY2Nlc3MoZnVsbFBhdGguZGF0YSgpLCBGX09L
KSkgeworICAgICAgICAgICAgICAgIGlmIChta2RpcihmdWxsUGF0aC5kYXRhKCksIFNfSVJXWFUp
KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICAqcCA9ICcvJzsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoYWNjZXNzKGZ1bGxQ
YXRoLmRhdGEoKSwgRl9PSykpIHsKKyAgICAgICAgaWYgKG1rZGlyKGZ1bGxQYXRoLmRhdGEoKSwg
U19JUldYVSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJu
IHRydWU7Cit9CisKK1N0cmluZyBwYXRoR2V0RmlsZU5hbWUoY29uc3QgU3RyaW5nJiBwYXRoKQor
eworICAgIHJldHVybiBwYXRoLnN1YnN0cmluZyhwYXRoLnJldmVyc2VGaW5kKCcvJykgKyAxKTsK
K30KKworU3RyaW5nIGRpcmVjdG9yeU5hbWUoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIENT
dHJpbmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisKKyAgICBpZiAo
IWZzUmVwLmRhdGEoKSB8fCBmc1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKKyAgICAgICAgcmV0dXJu
IFN0cmluZygpOworCisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoZGlybmFtZShmc1JlcC5t
dXRhYmxlRGF0YSgpKSk7Cit9CisKK1ZlY3RvcjxTdHJpbmc+IGxpc3REaXJlY3RvcnkoY29uc3Qg
U3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGZpbHRlcikKK3sKKyAgICBWZWN0b3I8U3RyaW5n
PiBlbnRyaWVzOworICAgIENTdHJpbmcgY3BhdGggPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
cGF0aCk7CisgICAgQ1N0cmluZyBjZmlsdGVyID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZp
bHRlcik7CisgICAgRElSKiBkaXIgPSBvcGVuZGlyKGNwYXRoLmRhdGEoKSk7CisgICAgaWYgKGRp
cikgeworICAgICAgICBzdHJ1Y3QgZGlyZW50KiBkcDsKKyAgICAgICAgd2hpbGUgKChkcCA9IHJl
YWRkaXIoZGlyKSkpIHsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIqIG5hbWUgPSBkcC0+ZF9uYW1l
OworICAgICAgICAgICAgaWYgKCFzdHJjbXAobmFtZSwgIi4iKSB8fCAhc3RyY21wKG5hbWUsICIu
LiIpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaWYgKGZubWF0Y2go
Y2ZpbHRlci5kYXRhKCksIG5hbWUsIDApKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICAgICAgY2hhciBmaWxlUGF0aFtQQVRIX01BWF07CisgICAgICAgICAgICBpZiAoc3RhdGlj
X2Nhc3Q8aW50PihzaXplb2YoZmlsZVBhdGgpIC0gMSkgPCBzbnByaW50ZihmaWxlUGF0aCwgc2l6
ZW9mKGZpbGVQYXRoKSwgIiVzLyVzIiwgY3BhdGguZGF0YSgpLCBuYW1lKSkKKyAgICAgICAgICAg
ICAgICBjb250aW51ZTsgLy8gYnVmZmVyIG92ZXJmbG93CisKKyAgICAgICAgICAgIGF1dG8gc3Ry
aW5nID0gc3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWxlUGF0aCk7CisKKyAg
ICAgICAgICAgIC8vIFNvbWUgZmlsZSBzeXN0ZW0gcmVwcmVzZW50YXRpb25zIGNhbm5vdCBiZSBy
ZXByZXNlbnRlZCBhcyBhIFVURi0xNiBzdHJpbmcsCisgICAgICAgICAgICAvLyBzbyB0aGlzIHN0
cmluZyBtaWdodCBiZSBudWxsLgorICAgICAgICAgICAgaWYgKCFzdHJpbmcuaXNOdWxsKCkpCisg
ICAgICAgICAgICAgICAgZW50cmllcy5hcHBlbmQoV1RGTW92ZShzdHJpbmcpKTsKKyAgICAgICAg
fQorICAgICAgICBjbG9zZWRpcihkaXIpOworICAgIH0KKyAgICByZXR1cm4gZW50cmllczsKK30K
KworI2lmICFQTEFURk9STShDT0NPQSkKK1N0cmluZyBzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGNvbnN0IGNoYXIqIHBhdGgpCit7CisgICAgaWYgKCFwYXRoKQorICAgICAgICBy
ZXR1cm4gU3RyaW5nKCk7CisKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChwYXRoKTsKK30K
KworQ1N0cmluZyBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBwYXRoKQor
eworICAgIHJldHVybiBwYXRoLnV0ZjgoKTsKK30KKworYm9vbCBtb3ZlRmlsZShjb25zdCBTdHJp
bmcmIG9sZFBhdGgsIGNvbnN0IFN0cmluZyYgbmV3UGF0aCkKK3sKKyAgICBhdXRvIG9sZEZpbGVu
YW1lID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKG9sZFBhdGgpOworICAgIGlmIChvbGRGaWxl
bmFtZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byBuZXdGaWxl
bmFtZSA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihuZXdQYXRoKTsKKyAgICBpZiAobmV3Rmls
ZW5hbWUuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiByZW5h
bWUob2xkRmlsZW5hbWUuZGF0YSgpLCBuZXdGaWxlbmFtZS5kYXRhKCkpICE9IC0xOworfQorCiti
b29sIGdldFZvbHVtZUZyZWVTcGFjZShjb25zdCBTdHJpbmcmIHBhdGgsIHVpbnQ2NF90JiBmcmVl
U3BhY2UpCit7CisgICAgc3RydWN0IHN0YXR2ZnMgZmlsZVN5c3RlbVN0YXQ7CisgICAgaWYgKHN0
YXR2ZnMoZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSwgJmZpbGVTeXN0ZW1T
dGF0KSkgeworICAgICAgICBmcmVlU3BhY2UgPSBmaWxlU3lzdGVtU3RhdC5mX2JhdmFpbCAqIGZp
bGVTeXN0ZW1TdGF0LmZfZnJzaXplOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAg
cmV0dXJuIGZhbHNlOworfQorI2VuZGlmCisKKyNpZiAhT1MoREFSV0lOKQorU3RyaW5nIG9wZW5U
ZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhh
bmRsZSkKK3sKKyAgICBjaGFyIGJ1ZmZlcltQQVRIX01BWF07CisgICAgY29uc3QgY2hhciogdG1w
RGlyID0gZ2V0ZW52KCJUTVBESVIiKTsKKworICAgIGlmICghdG1wRGlyKQorICAgICAgICB0bXBE
aXIgPSAiL3RtcCI7CisKKyAgICBpZiAoc25wcmludGYoYnVmZmVyLCBQQVRIX01BWCwgIiVzLyVz
WFhYWFhYIiwgdG1wRGlyLCBwcmVmaXgudXRmOCgpLmRhdGEoKSkgPj0gUEFUSF9NQVgpCisgICAg
ICAgIGdvdG8gZW5kOworCisgICAgaGFuZGxlID0gbWtzdGVtcChidWZmZXIpOworICAgIGlmICho
YW5kbGUgPCAwKQorICAgICAgICBnb3RvIGVuZDsKKworICAgIHJldHVybiBTdHJpbmc6OmZyb21V
VEY4KGJ1ZmZlcik7CisKK2VuZDoKKyAgICBoYW5kbGUgPSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFu
ZGxlOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKyNlbmRpZgorCitib29sIGhhcmRMaW5rT3JD
b3B5RmlsZShjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbikK
K3sKKyAgICBpZiAoc291cmNlLmlzRW1wdHkoKSB8fCBkZXN0aW5hdGlvbi5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIENTdHJpbmcgZnNTb3VyY2UgPSBmaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oc291cmNlKTsKKyAgICBpZiAoIWZzU291cmNlLmRhdGEoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgQ1N0cmluZyBmc0Rlc3RpbmF0aW9uID0gZmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKGRlc3RpbmF0aW9uKTsKKyAgICBpZiAoIWZzRGVzdGluYXRpb24uZGF0
YSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWxpbmsoZnNTb3VyY2UuZGF0
YSgpLCBmc0Rlc3RpbmF0aW9uLmRhdGEoKSkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAg
Ly8gSGFyZCBsaW5rIGZhaWxlZC4gUGVyZm9ybSBhIGNvcHkgaW5zdGVhZC4KKyAgICBhdXRvIGhh
bmRsZSA9IG9wZW4oZnNEZXN0aW5hdGlvbi5kYXRhKCksIE9fV1JPTkxZIHwgT19DUkVBVCB8IE9f
RVhDTCwgMDY2Nik7CisgICAgaWYgKGhhbmRsZSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgYm9vbCBhcHBlbmRSZXN1bHQgPSBhcHBlbmRGaWxlQ29udGVudHNUb0ZpbGVIYW5k
bGUoc291cmNlLCBoYW5kbGUpOworICAgIGNsb3NlKGhhbmRsZSk7CisKKyAgICAvLyBJZiB0aGUg
Y29weSBmYWlsZWQsIGRlbGV0ZSB0aGUgdW51c2FibGUgZmlsZS4KKyAgICBpZiAoIWFwcGVuZFJl
c3VsdCkKKyAgICAgICAgdW5saW5rKGZzRGVzdGluYXRpb24uZGF0YSgpKTsKKworICAgIHJldHVy
biBhcHBlbmRSZXN1bHQ7Cit9CisKK09wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChj
b25zdCBDU3RyaW5nJiBmc0ZpbGUpCit7CisgICAgc3RydWN0IHN0YXQgZmlsZVN0YXQ7CisgICAg
aWYgKHN0YXQoZnNGaWxlLmRhdGEoKSwgJmZpbGVTdGF0KSA9PSAtMSkKKyAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiBmaWxlU3RhdC5zdF9kZXY7Cit9CisKK1N0cmlu
ZyByZWFsUGF0aChjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQoreworICAgIENTdHJpbmcgZnNSZXAg
PSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZVBhdGgpOworICAgIGNoYXIgcmVzb2x2ZWRO
YW1lW1BBVEhfTUFYXTsKKyAgICBjb25zdCBjaGFyKiByZXN1bHQgPSByZWFscGF0aChmc1JlcC5k
YXRhKCksIHJlc29sdmVkTmFtZSk7CisgICAgcmV0dXJuIHJlc3VsdCA/IFN0cmluZzo6ZnJvbVVU
RjgocmVzdWx0KSA6IGZpbGVQYXRoOworfQorCit9IC8vIG5hbWVzcGFjZSBGaWxlU3lzdGVtCit9
IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lz
dGVtV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lZGJkNzA4YzUyMTVmZDgxOWI0ODM1MzI5M2YyOGFkMDIyYzdhNmY5Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCkBAIC0wLDAgKzEs
NTg2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSwgTHRkLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisgKiAzLiAgTmVpdGhlciB0aGUg
bmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRz
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4gCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+
CisKKyNpbmNsdWRlIDxpby5oPgorI2luY2x1ZGUgPHNobG9iai5oPgorI2luY2x1ZGUgPHNobHdh
cGkuaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNpbmNs
dWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaD4KKyNpbmNsdWRlIDx3dGYv
RmlsZU1ldGFkYXRhLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi93
aW4vUGF0aFdhbGtlci5oPgorCituYW1lc3BhY2UgV1RGIHsKKworbmFtZXNwYWNlIEZpbGVTeXN0
ZW0geworCitzdGF0aWMgY29uc3QgVUxPTkdMT05HIGtTZWNvbmRzRnJvbUZpbGVUaW1lVG9UaW1l
dCA9IDExNjQ0NDczNjAwOworCitzdGF0aWMgYm9vbCBnZXRGaW5kRGF0YShTdHJpbmcgcGF0aCwg
V0lOMzJfRklORF9EQVRBVyYgZmluZERhdGEpCit7CisgICAgSEFORExFIGhhbmRsZSA9IEZpbmRG
aXJzdEZpbGVXKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihwYXRoKS5kYXRhKCksICZmaW5k
RGF0YSk7CisgICAgaWYgKGhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIEZpbmRDbG9zZShoYW5kbGUpOworICAgIHJldHVybiB0cnVlOwor
fQorCitzdGF0aWMgYm9vbCBnZXRGaWxlU2l6ZUZyb21GaW5kRGF0YShjb25zdCBXSU4zMl9GSU5E
X0RBVEFXJiBmaW5kRGF0YSwgbG9uZyBsb25nJiBzaXplKQoreworICAgIFVMQVJHRV9JTlRFR0VS
IGZpbGVTaXplOworICAgIGZpbGVTaXplLkhpZ2hQYXJ0ID0gZmluZERhdGEubkZpbGVTaXplSGln
aDsKKyAgICBmaWxlU2l6ZS5Mb3dQYXJ0ID0gZmluZERhdGEubkZpbGVTaXplTG93OworCisgICAg
aWYgKGZpbGVTaXplLlF1YWRQYXJ0ID4gc3RhdGljX2Nhc3Q8VUxPTkdMT05HPihzdGQ6Om51bWVy
aWNfbGltaXRzPGxvbmcgbG9uZz46Om1heCgpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgc2l6ZSA9IGZpbGVTaXplLlF1YWRQYXJ0OworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0
aWMgYm9vbCBnZXRGaWxlU2l6ZUZyb21CeUhhbmRsZUZpbGVJbmZvcm1hdGlvblN0cnVjdHVyZShj
b25zdCBCWV9IQU5ETEVfRklMRV9JTkZPUk1BVElPTiYgZmlsZUluZm9ybWF0aW9uLCBsb25nIGxv
bmcmIHNpemUpCit7CisgICAgVUxBUkdFX0lOVEVHRVIgZmlsZVNpemU7CisgICAgZmlsZVNpemUu
SGlnaFBhcnQgPSBmaWxlSW5mb3JtYXRpb24ubkZpbGVTaXplSGlnaDsKKyAgICBmaWxlU2l6ZS5M
b3dQYXJ0ID0gZmlsZUluZm9ybWF0aW9uLm5GaWxlU2l6ZUxvdzsKKworICAgIGlmIChmaWxlU2l6
ZS5RdWFkUGFydCA+IHN0YXRpY19jYXN0PFVMT05HTE9ORz4oc3RkOjpudW1lcmljX2xpbWl0czxs
b25nIGxvbmc+OjptYXgoKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHNpemUgPSBm
aWxlU2l6ZS5RdWFkUGFydDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIHZvaWQgZ2V0
RmlsZUNyZWF0aW9uVGltZUZyb21GaW5kRGF0YShjb25zdCBXSU4zMl9GSU5EX0RBVEFXJiBmaW5k
RGF0YSwgdGltZV90JiB0aW1lKQoreworICAgIFVMQVJHRV9JTlRFR0VSIGZpbGVUaW1lOworICAg
IGZpbGVUaW1lLkhpZ2hQYXJ0ID0gZmluZERhdGEuZnRDcmVhdGlvblRpbWUuZHdIaWdoRGF0ZVRp
bWU7CisgICAgZmlsZVRpbWUuTG93UGFydCA9IGZpbmREYXRhLmZ0Q3JlYXRpb25UaW1lLmR3TG93
RGF0ZVRpbWU7CisKKyAgICAvLyBJbmZvcm1hdGlvbiBhYm91dCBjb252ZXJ0aW5nIHRpbWVfdCB0
byBGaWxlVGltZSBpcyBhdmFpbGFibGUgYXQgaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11
cy9saWJyYXJ5L21zNzI0MjI4JTI4dj12cy44NSUyOS5hc3B4CisgICAgdGltZSA9IGZpbGVUaW1l
LlF1YWRQYXJ0IC8gMTAwMDAwMDAgLSBrU2Vjb25kc0Zyb21GaWxlVGltZVRvVGltZXQ7Cit9CisK
Kworc3RhdGljIHZvaWQgZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWVGcm9tRmluZERhdGEoY29uc3Qg
V0lOMzJfRklORF9EQVRBVyYgZmluZERhdGEsIHRpbWVfdCYgdGltZSkKK3sKKyAgICBVTEFSR0Vf
SU5URUdFUiBmaWxlVGltZTsKKyAgICBmaWxlVGltZS5IaWdoUGFydCA9IGZpbmREYXRhLmZ0TGFz
dFdyaXRlVGltZS5kd0hpZ2hEYXRlVGltZTsKKyAgICBmaWxlVGltZS5Mb3dQYXJ0ID0gZmluZERh
dGEuZnRMYXN0V3JpdGVUaW1lLmR3TG93RGF0ZVRpbWU7CisKKyAgICAvLyBJbmZvcm1hdGlvbiBh
Ym91dCBjb252ZXJ0aW5nIHRpbWVfdCB0byBGaWxlVGltZSBpcyBhdmFpbGFibGUgYXQgaHR0cDov
L21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L21zNzI0MjI4JTI4dj12cy44NSUyOS5h
c3B4CisgICAgdGltZSA9IGZpbGVUaW1lLlF1YWRQYXJ0IC8gMTAwMDAwMDAgLSBrU2Vjb25kc0Zy
b21GaWxlVGltZVRvVGltZXQ7Cit9CisKK2Jvb2wgZ2V0RmlsZVNpemUoY29uc3QgU3RyaW5nJiBw
YXRoLCBsb25nIGxvbmcmIHNpemUpCit7CisgICAgV0lOMzJfRklORF9EQVRBVyBmaW5kRGF0YTsK
KyAgICBpZiAoIWdldEZpbmREYXRhKHBhdGgsIGZpbmREYXRhKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgcmV0dXJuIGdldEZpbGVTaXplRnJvbUZpbmREYXRhKGZpbmREYXRhLCBzaXpl
KTsKK30KKworYm9vbCBnZXRGaWxlU2l6ZShQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRsZSwg
bG9uZyBsb25nJiBzaXplKQoreworICAgIEJZX0hBTkRMRV9GSUxFX0lORk9STUFUSU9OIGZpbGVJ
bmZvcm1hdGlvbjsKKyAgICBpZiAoITo6R2V0RmlsZUluZm9ybWF0aW9uQnlIYW5kbGUoZmlsZUhh
bmRsZSwgJmZpbGVJbmZvcm1hdGlvbikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJl
dHVybiBnZXRGaWxlU2l6ZUZyb21CeUhhbmRsZUZpbGVJbmZvcm1hdGlvblN0cnVjdHVyZShmaWxl
SW5mb3JtYXRpb24sIHNpemUpOworfQorCitPcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZU1vZGlm
aWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIFdJTjMyX0ZJTkRfREFUQVcg
ZmluZERhdGE7CisgICAgaWYgKCFnZXRGaW5kRGF0YShwYXRoLCBmaW5kRGF0YSkpCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICB0aW1lX3QgdGltZSA9IDA7CisgICAgZ2V0Rmls
ZU1vZGlmaWNhdGlvblRpbWVGcm9tRmluZERhdGEoZmluZERhdGEsIHRpbWUpOworICAgIHJldHVy
biBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHModGltZSk7Cit9CisKK09wdGlvbmFsPFdhbGxUaW1l
PiBnZXRGaWxlQ3JlYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBXSU4zMl9G
SU5EX0RBVEFXIGZpbmREYXRhOworICAgIGlmICghZ2V0RmluZERhdGEocGF0aCwgZmluZERhdGEp
KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgdGltZV90IHRpbWUgPSAwOwor
ICAgIGdldEZpbGVDcmVhdGlvblRpbWVGcm9tRmluZERhdGEoZmluZERhdGEsIHRpbWUpOworICAg
IHJldHVybiBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHModGltZSk7Cit9CisKK3N0YXRpYyBTdHJp
bmcgZ2V0RmluYWxQYXRoTmFtZShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgYXV0byBoYW5k
bGUgPSBvcGVuRmlsZShwYXRoLCBGaWxlT3Blbk1vZGU6OlJlYWQpOworICAgIGlmICghaXNIYW5k
bGVWYWxpZChoYW5kbGUpKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBWZWN0b3I8
VUNoYXI+IGJ1ZmZlcihNQVhfUEFUSCk7CisgICAgaWYgKDo6R2V0RmluYWxQYXRoTmFtZUJ5SGFu
ZGxlVyhoYW5kbGUsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCksIFZPTFVNRV9OQU1FX05U
KSA+PSBNQVhfUEFUSCkgeworICAgICAgICBjbG9zZUZpbGUoaGFuZGxlKTsKKyAgICAgICAgcmV0
dXJuIFN0cmluZygpOworICAgIH0KKyAgICBjbG9zZUZpbGUoaGFuZGxlKTsKKworICAgIGJ1ZmZl
ci5zaHJpbmsod2NzbGVuKGJ1ZmZlci5kYXRhKCkpKTsKKyAgICByZXR1cm4gU3RyaW5nOjphZG9w
dChXVEZNb3ZlKGJ1ZmZlcikpOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgaXNTeW1ib2xpY0xp
bmsoV0lOMzJfRklORF9EQVRBVyBmaW5kRGF0YSkKK3sKKyAgICByZXR1cm4gZmluZERhdGEuZHdG
aWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX1JFUEFSU0VfUE9JTlQgJiYgZmluZERhdGEu
ZHdSZXNlcnZlZDAgPT0gSU9fUkVQQVJTRV9UQUdfU1lNTElOSzsKK30KKworc3RhdGljIEZpbGVN
ZXRhZGF0YTo6VHlwZSB0b0ZpbGVNZXRhZGF0YVR5cGUoV0lOMzJfRklORF9EQVRBVyBmaW5kRGF0
YSkKK3sKKyAgICBpZiAoZmluZERhdGEuZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRF
X0RJUkVDVE9SWSkKKyAgICAgICAgcmV0dXJuIEZpbGVNZXRhZGF0YTo6VHlwZTo6RGlyZWN0b3J5
OworICAgIGlmIChpc1N5bWJvbGljTGluayhmaW5kRGF0YSkpCisgICAgICAgIHJldHVybiBGaWxl
TWV0YWRhdGE6OlR5cGU6OlN5bWJvbGljTGluazsKKyAgICByZXR1cm4gRmlsZU1ldGFkYXRhOjpU
eXBlOjpGaWxlOworfQorCitzdGF0aWMgT3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaW5kRGF0YVRv
RmlsZU1ldGFkYXRhKFdJTjMyX0ZJTkRfREFUQVcgZmluZERhdGEpCit7CisgICAgbG9uZyBsb25n
IGxlbmd0aDsKKyAgICBpZiAoIWdldEZpbGVTaXplRnJvbUZpbmREYXRhKGZpbmREYXRhLCBsZW5n
dGgpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgdGltZV90IG1vZGlmaWNh
dGlvblRpbWU7CisgICAgZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWVGcm9tRmluZERhdGEoZmluZERh
dGEsIG1vZGlmaWNhdGlvblRpbWUpOworCisgICAgcmV0dXJuIEZpbGVNZXRhZGF0YSB7CisgICAg
ICAgIFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhtb2RpZmljYXRpb25UaW1lKSwKKyAgICAgICAg
bGVuZ3RoLAorICAgICAgICBzdGF0aWNfY2FzdDxib29sPihmaW5kRGF0YS5kd0ZpbGVBdHRyaWJ1
dGVzICYgRklMRV9BVFRSSUJVVEVfSElEREVOKSwKKyAgICAgICAgdG9GaWxlTWV0YWRhdGFUeXBl
KGZpbmREYXRhKQorICAgIH07Cit9CisKK09wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFk
YXRhKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBXSU4zMl9GSU5EX0RBVEFXIGZpbmREYXRh
OworICAgIGlmICghZ2V0RmluZERhdGEocGF0aCwgZmluZERhdGEpKQorICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIGZpbmREYXRhVG9GaWxlTWV0YWRhdGEoZmluZERh
dGEpOworfQorCitPcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YUZvbGxvd2luZ1N5
bWxpbmtzKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBXSU4zMl9GSU5EX0RBVEFXIGZpbmRE
YXRhOworICAgIGlmICghZ2V0RmluZERhdGEocGF0aCwgZmluZERhdGEpKQorICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworCisgICAgaWYgKGlzU3ltYm9saWNMaW5rKGZpbmREYXRhKSkgewor
ICAgICAgICBTdHJpbmcgdGFyZ2V0UGF0aCA9IGdldEZpbmFsUGF0aE5hbWUocGF0aCk7CisgICAg
ICAgIGlmICh0YXJnZXRQYXRoLmlzTnVsbCgpKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgaWYgKCFnZXRGaW5kRGF0YSh0YXJnZXRQYXRoLCBmaW5kRGF0YSkpCisg
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIH0KKworICAgIHJldHVybiBmaW5k
RGF0YVRvRmlsZU1ldGFkYXRhKGZpbmREYXRhKTsKK30KKworYm9vbCBjcmVhdGVTeW1ib2xpY0xp
bmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGljTGlua1Bh
dGgpCit7CisgICAgcmV0dXJuICE6OkNyZWF0ZVN5bWJvbGljTGlua1coc3RyaW5nVG9OdWxsVGVy
bWluYXRlZFdDaGFyKHN5bWJvbGljTGlua1BhdGgpLmRhdGEoKSwgc3RyaW5nVG9OdWxsVGVybWlu
YXRlZFdDaGFyKHRhcmdldFBhdGgpLmRhdGEoKSwgMCk7Cit9CisKK2Jvb2wgZmlsZUV4aXN0cyhj
b25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgV0lOMzJfRklORF9EQVRBVyBmaW5kRGF0YTsKKyAg
ICByZXR1cm4gZ2V0RmluZERhdGEocGF0aCwgZmluZERhdGEpOworfQorCitib29sIGRlbGV0ZUZp
bGUoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIFN0cmluZyBmaWxlbmFtZSA9IHBhdGg7Cisg
ICAgcmV0dXJuICEhRGVsZXRlRmlsZVcoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGZpbGVu
YW1lKS5kYXRhKCkpOworfQorCitib29sIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmlu
ZyYgcGF0aCkKK3sKKyAgICBTdHJpbmcgZmlsZW5hbWUgPSBwYXRoOworICAgIHJldHVybiAhIVJl
bW92ZURpcmVjdG9yeVcoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGZpbGVuYW1lKS5kYXRh
KCkpOworfQorCitib29sIG1vdmVGaWxlKGNvbnN0IFN0cmluZyYgb2xkUGF0aCwgY29uc3QgU3Ry
aW5nJiBuZXdQYXRoKQoreworICAgIFN0cmluZyBvbGRGaWxlbmFtZSA9IG9sZFBhdGg7CisgICAg
U3RyaW5nIG5ld0ZpbGVuYW1lID0gbmV3UGF0aDsKKyAgICByZXR1cm4gISE6Ok1vdmVGaWxlRXgo
c3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKG9sZEZpbGVuYW1lKS5kYXRhKCksIHN0cmluZ1Rv
TnVsbFRlcm1pbmF0ZWRXQ2hhcihuZXdGaWxlbmFtZSkuZGF0YSgpLCBNT1ZFRklMRV9DT1BZX0FM
TE9XRUQgfCBNT1ZFRklMRV9SRVBMQUNFX0VYSVNUSU5HKTsKK30KKworU3RyaW5nIHBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29tcG9u
ZW50KQoreworICAgIFZlY3RvcjxVQ2hhcj4gYnVmZmVyKE1BWF9QQVRIKTsKKworICAgIGlmIChw
YXRoLmxlbmd0aCgpICsgMSA+IGJ1ZmZlci5zaXplKCkpCisgICAgICAgIHJldHVybiBTdHJpbmco
KTsKKworICAgIFN0cmluZ1ZpZXcocGF0aCkuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoYnVm
ZmVyLmRhdGEoKSk7CisgICAgYnVmZmVyW3BhdGgubGVuZ3RoKCldID0gJ1wwJzsKKworICAgIGlm
ICghUGF0aEFwcGVuZFcoYnVmZmVyLmRhdGEoKSwgc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFy
KGNvbXBvbmVudCkuZGF0YSgpKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgYnVm
ZmVyLnNocmluayh3Y3NsZW4oYnVmZmVyLmRhdGEoKSkpOworCisgICAgcmV0dXJuIFN0cmluZzo6
YWRvcHQoV1RGTW92ZShidWZmZXIpKTsKK30KKworU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudHMoU3RyaW5nVmlldyBwYXRoLCBjb25zdCBWZWN0b3I8U3RyaW5nVmlldz4mIGNvbXBvbmVu
dHMpCit7CisgICAgU3RyaW5nIHJlc3VsdCA9IHBhdGgudG9TdHJpbmcoKTsKKyAgICBmb3IgKGF1
dG8mIGNvbXBvbmVudCA6IGNvbXBvbmVudHMpCisgICAgICAgIHJlc3VsdCA9IHBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChyZXN1bHQsIGNvbXBvbmVudC50b1N0cmluZygpKTsKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCisjaWYgIVVTRShDRikKKworQ1N0cmluZyBmaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIGF1dG8gdXBjb252ZXJ0ZWRDaGFyYWN0
ZXJzID0gcGF0aC51cGNvbnZlcnRlZENoYXJhY3RlcnMoKTsKKworICAgIGNvbnN0IFVDaGFyKiBj
aGFyYWN0ZXJzID0gdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzOworICAgIGludCBzaXplID0gV2lkZUNo
YXJUb011bHRpQnl0ZShDUF9BQ1AsIDAsIGNoYXJhY3RlcnMsIHBhdGgubGVuZ3RoKCksIDAsIDAs
IDAsIDApIC0gMTsKKworICAgIGNoYXIqIGJ1ZmZlcjsKKyAgICBDU3RyaW5nIHN0cmluZyA9IENT
dHJpbmc6Om5ld1VuaW5pdGlhbGl6ZWQoc2l6ZSwgYnVmZmVyKTsKKworICAgIFdpZGVDaGFyVG9N
dWx0aUJ5dGUoQ1BfQUNQLCAwLCBjaGFyYWN0ZXJzLCBwYXRoLmxlbmd0aCgpLCBidWZmZXIsIHNp
emUsIDAsIDApOworCisgICAgcmV0dXJuIHN0cmluZzsKK30KKworI2VuZGlmIC8vICFVU0UoQ0Yp
CisKK2Jvb2wgbWFrZUFsbERpcmVjdG9yaWVzKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBT
dHJpbmcgZnVsbFBhdGggPSBwYXRoOworICAgIGlmIChTSENyZWF0ZURpcmVjdG9yeUV4KDAsIHN0
cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihmdWxsUGF0aCkuZGF0YSgpLCAwKSAhPSBFUlJPUl9T
VUNDRVNTKSB7CisgICAgICAgIERXT1JEIGVycm9yID0gR2V0TGFzdEVycm9yKCk7CisgICAgICAg
IGlmIChlcnJvciAhPSBFUlJPUl9GSUxFX0VYSVNUUyAmJiBlcnJvciAhPSBFUlJPUl9BTFJFQURZ
X0VYSVNUUykgeworICAgICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIHBhdGgg
JXMiLCBwYXRoLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworU3RyaW5nIGhvbWVEaXJlY3Rv
cnlQYXRoKCkKK3sKKyAgICByZXR1cm4gIiI7Cit9CisKK1N0cmluZyBwYXRoR2V0RmlsZU5hbWUo
Y29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIHJldHVybiBudWxsVGVybWluYXRlZFdDaGFyVG9T
dHJpbmcoOjpQYXRoRmluZEZpbGVOYW1lKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihwYXRo
KS5kYXRhKCkpKTsKK30KKworU3RyaW5nIGRpcmVjdG9yeU5hbWUoY29uc3QgU3RyaW5nJiBwYXRo
KQoreworICAgIFN0cmluZyBuYW1lID0gcGF0aC5sZWZ0KHBhdGgubGVuZ3RoKCkgLSBwYXRoR2V0
RmlsZU5hbWUocGF0aCkubGVuZ3RoKCkpOworICAgIGlmIChuYW1lLmNoYXJhY3RlclN0YXJ0aW5n
QXQobmFtZS5sZW5ndGgoKSAtIDEpID09ICdcXCcpIHsKKyAgICAgICAgLy8gUmVtb3ZlIGFueSB0
cmFpbGluZyAiXCIuCisgICAgICAgIG5hbWUudHJ1bmNhdGUobmFtZS5sZW5ndGgoKSAtIDEpOwor
ICAgIH0KKyAgICByZXR1cm4gbmFtZTsKK30KKworc3RhdGljIFN0cmluZyBidW5kbGVOYW1lKCkK
K3sKKyAgICBzdGF0aWMgY29uc3QgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBuYW1lID0gW10gewor
ICAgICAgICBTdHJpbmcgbmFtZSB7ICJXZWJLaXQiX3MgfTsKKworI2lmIFVTRShDRikKKyAgICAg
ICAgaWYgKENGQnVuZGxlUmVmIGJ1bmRsZSA9IENGQnVuZGxlR2V0TWFpbkJ1bmRsZSgpKSB7Cisg
ICAgICAgICAgICBpZiAoQ0ZUeXBlUmVmIGJ1bmRsZUV4ZWN1dGFibGUgPSBDRkJ1bmRsZUdldFZh
bHVlRm9ySW5mb0RpY3Rpb25hcnlLZXkoYnVuZGxlLCBrQ0ZCdW5kbGVFeGVjdXRhYmxlS2V5KSkg
eworICAgICAgICAgICAgICAgIGlmIChDRkdldFR5cGVJRChidW5kbGVFeGVjdXRhYmxlKSA9PSBD
RlN0cmluZ0dldFR5cGVJRCgpKQorICAgICAgICAgICAgICAgICAgICBuYW1lID0gcmVpbnRlcnBy
ZXRfY2FzdDxDRlN0cmluZ1JlZj4oYnVuZGxlRXhlY3V0YWJsZSk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyNlbmRpZgorCisgICAgICAgIHJldHVybiBuYW1lOworICAgIH0oKTsKKworICAg
IHJldHVybiBuYW1lOworfQorCitzdGF0aWMgU3RyaW5nIHN0b3JhZ2VEaXJlY3RvcnkoRFdPUkQg
cGF0aElkZW50aWZpZXIpCit7CisgICAgVmVjdG9yPFVDaGFyPiBidWZmZXIoTUFYX1BBVEgpOwor
ICAgIGlmIChGQUlMRUQoU0hHZXRGb2xkZXJQYXRoVygwLCBwYXRoSWRlbnRpZmllciB8IENTSURM
X0ZMQUdfQ1JFQVRFLCAwLCAwLCBidWZmZXIuZGF0YSgpKSkpCisgICAgICAgIHJldHVybiBTdHJp
bmcoKTsKKyAgICBidWZmZXIucmVzaXplKHdjc2xlbihidWZmZXIuZGF0YSgpKSk7CisgICAgU3Ry
aW5nIGRpcmVjdG9yeSA9IFN0cmluZzo6YWRvcHQoV1RGTW92ZShidWZmZXIpKTsKKworICAgIGRp
cmVjdG9yeSA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkaXJlY3RvcnksICJBcHBsZSBDb21w
dXRlclxcIiArIGJ1bmRsZU5hbWUoKSk7CisgICAgaWYgKCFtYWtlQWxsRGlyZWN0b3JpZXMoZGly
ZWN0b3J5KSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgcmV0dXJuIGRpcmVjdG9y
eTsKK30KKworc3RhdGljIFN0cmluZyBjYWNoZWRTdG9yYWdlRGlyZWN0b3J5KERXT1JEIHBhdGhJ
ZGVudGlmaWVyKQoreworICAgIHN0YXRpYyBIYXNoTWFwPERXT1JELCBTdHJpbmc+IGRpcmVjdG9y
aWVzOworCisgICAgSGFzaE1hcDxEV09SRCwgU3RyaW5nPjo6aXRlcmF0b3IgaXQgPSBkaXJlY3Rv
cmllcy5maW5kKHBhdGhJZGVudGlmaWVyKTsKKyAgICBpZiAoaXQgIT0gZGlyZWN0b3JpZXMuZW5k
KCkpCisgICAgICAgIHJldHVybiBpdC0+dmFsdWU7CisKKyAgICBTdHJpbmcgZGlyZWN0b3J5ID0g
c3RvcmFnZURpcmVjdG9yeShwYXRoSWRlbnRpZmllcik7CisgICAgZGlyZWN0b3JpZXMuYWRkKHBh
dGhJZGVudGlmaWVyLCBkaXJlY3RvcnkpOworCisgICAgcmV0dXJuIGRpcmVjdG9yeTsKK30KKwor
c3RhdGljIFN0cmluZyBnZW5lcmF0ZVRlbXBvcmFyeVBhdGgoY29uc3QgRnVuY3Rpb248Ym9vbChj
b25zdCBTdHJpbmcmKT4mIGFjdGlvbikKK3sKKyAgICB3Y2hhcl90IHRlbXBQYXRoW01BWF9QQVRI
XTsKKyAgICBpbnQgdGVtcFBhdGhMZW5ndGggPSA6OkdldFRlbXBQYXRoVyhXVEZfQVJSQVlfTEVO
R1RIKHRlbXBQYXRoKSwgdGVtcFBhdGgpOworICAgIGlmICh0ZW1wUGF0aExlbmd0aCA8PSAwIHx8
IHRlbXBQYXRoTGVuZ3RoID4gV1RGX0FSUkFZX0xFTkdUSCh0ZW1wUGF0aCkpCisgICAgICAgIHJl
dHVybiBTdHJpbmcoKTsKKworICAgIFN0cmluZyBwcm9wb3NlZFBhdGg7CisgICAgZG8geworICAg
ICAgICB3Y2hhcl90IHRlbXBGaWxlW10gPSBMIlhYWFhYWFhYLnRtcCI7IC8vIFVzZSA4LjMgc3R5
bGUgbmFtZSAobW9yZSBjaGFyYWN0ZXJzIGFyZW4ndCBoZWxwZnVsIGR1ZSB0byA4LjMgc2hvcnQg
ZmlsZSBuYW1lcykKKyAgICAgICAgY29uc3QgaW50IHJhbmRvbVBhcnRMZW5ndGggPSA4OworICAg
ICAgICBjcnlwdG9ncmFwaGljYWxseVJhbmRvbVZhbHVlcyh0ZW1wRmlsZSwgcmFuZG9tUGFydExl
bmd0aCAqIHNpemVvZih3Y2hhcl90KSk7CisKKyAgICAgICAgLy8gTGltaXQgdG8gdmFsaWQgZmls
ZXN5c3RlbSBjaGFyYWN0ZXJzLCBhbHNvIGV4Y2x1ZGluZyBvdGhlcnMgdGhhdCBjb3VsZCBiZSBw
cm9ibGVtYXRpYywgbGlrZSBwdW5jdHVhdGlvbi4KKyAgICAgICAgLy8gZG9uJ3QgaW5jbHVkZSBi
b3RoIHVwcGVyIGFuZCBsb3dlcmNhc2Ugc2luY2UgV2luZG93cyBmaWxlIHN5c3RlbXMgYXJlIHR5
cGljYWxseSBub3QgY2FzZSBzZW5zaXRpdmUuCisgICAgICAgIGNvbnN0IGNoYXIgdmFsaWRDaGFy
c1tdID0gIjAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiI7CisgICAgICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgcmFuZG9tUGFydExlbmd0aDsgKytpKQorICAgICAgICAgICAgdGVt
cEZpbGVbaV0gPSB2YWxpZENoYXJzW3RlbXBGaWxlW2ldICUgKHNpemVvZih2YWxpZENoYXJzKSAt
IDEpXTsKKworICAgICAgICBBU1NFUlQod2NzbGVuKHRlbXBGaWxlKSA9PSBXVEZfQVJSQVlfTEVO
R1RIKHRlbXBGaWxlKSAtIDEpOworCisgICAgICAgIHByb3Bvc2VkUGF0aCA9IHBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChudWxsVGVybWluYXRlZFdDaGFyVG9TdHJpbmcodGVtcFBhdGgpLCBudWxs
VGVybWluYXRlZFdDaGFyVG9TdHJpbmcodGVtcEZpbGUpKTsKKyAgICAgICAgaWYgKHByb3Bvc2Vk
UGF0aC5pc0VtcHR5KCkpCisgICAgICAgICAgICBicmVhazsKKyAgICB9IHdoaWxlICghYWN0aW9u
KHByb3Bvc2VkUGF0aCkpOworCisgICAgcmV0dXJuIHByb3Bvc2VkUGF0aDsKK30KKworU3RyaW5n
IG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFu
ZGxlKQoreworICAgIGhhbmRsZSA9IElOVkFMSURfSEFORExFX1ZBTFVFOworCisgICAgU3RyaW5n
IHByb3Bvc2VkUGF0aCA9IGdlbmVyYXRlVGVtcG9yYXJ5UGF0aChbJmhhbmRsZV0oY29uc3QgU3Ry
aW5nJiBwcm9wb3NlZFBhdGgpIHsKKyAgICAgICAgLy8gdXNlIENSRUFURV9ORVcgdG8gYXZvaWQg
b3ZlcndyaXRpbmcgYW4gZXhpc3RpbmcgZmlsZSB3aXRoIHRoZSBzYW1lIG5hbWUKKyAgICAgICAg
aGFuZGxlID0gOjpDcmVhdGVGaWxlVyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIocHJvcG9z
ZWRQYXRoKS5kYXRhKCksIEdFTkVSSUNfUkVBRCB8IEdFTkVSSUNfV1JJVEUsIDAsIDAsIENSRUFU
RV9ORVcsIEZJTEVfQVRUUklCVVRFX05PUk1BTCwgMCk7CisKKyAgICAgICAgcmV0dXJuIGlzSGFu
ZGxlVmFsaWQoaGFuZGxlKSB8fCBHZXRMYXN0RXJyb3IoKSA9PSBFUlJPUl9BTFJFQURZX0VYSVNU
UzsKKyAgICB9KTsKKworICAgIGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUpKQorICAgICAgICBy
ZXR1cm4gU3RyaW5nKCk7CisKKyAgICByZXR1cm4gcHJvcG9zZWRQYXRoOworfQorCitQbGF0Zm9y
bUZpbGVIYW5kbGUgb3BlbkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUgbW9k
ZSkKK3sKKyAgICBEV09SRCBkZXNpcmVkQWNjZXNzID0gMDsKKyAgICBEV09SRCBjcmVhdGlvbkRp
c3Bvc2l0aW9uID0gMDsKKyAgICBEV09SRCBzaGFyZU1vZGUgPSAwOworICAgIHN3aXRjaCAobW9k
ZSkgeworICAgIGNhc2UgRmlsZU9wZW5Nb2RlOjpSZWFkOgorICAgICAgICBkZXNpcmVkQWNjZXNz
ID0gR0VORVJJQ19SRUFEOworICAgICAgICBjcmVhdGlvbkRpc3Bvc2l0aW9uID0gT1BFTl9FWElT
VElORzsKKyAgICAgICAgc2hhcmVNb2RlID0gRklMRV9TSEFSRV9SRUFEOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIEZpbGVPcGVuTW9kZTo6V3JpdGU6CisgICAgICAgIGRlc2lyZWRBY2Nlc3Mg
PSBHRU5FUklDX1dSSVRFOworICAgICAgICBjcmVhdGlvbkRpc3Bvc2l0aW9uID0gQ1JFQVRFX0FM
V0FZUzsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgfQorCisgICAgU3RyaW5nIGRlc3RpbmF0aW9uID0gcGF0aDsKKyAgICBy
ZXR1cm4gQ3JlYXRlRmlsZShzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoZGVzdGluYXRpb24p
LmRhdGEoKSwgZGVzaXJlZEFjY2Vzcywgc2hhcmVNb2RlLCAwLCBjcmVhdGlvbkRpc3Bvc2l0aW9u
LCBGSUxFX0FUVFJJQlVURV9OT1JNQUwsIDApOworfQorCit2b2lkIGNsb3NlRmlsZShQbGF0Zm9y
bUZpbGVIYW5kbGUmIGhhbmRsZSkKK3sKKyAgICBpZiAoaXNIYW5kbGVWYWxpZChoYW5kbGUpKSB7
CisgICAgICAgIDo6Q2xvc2VIYW5kbGUoaGFuZGxlKTsKKyAgICAgICAgaGFuZGxlID0gaW52YWxp
ZFBsYXRmb3JtRmlsZUhhbmRsZTsKKyAgICB9Cit9CisKK2xvbmcgbG9uZyBzZWVrRmlsZShQbGF0
Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0LCBGaWxlU2Vla09yaWdpbiBv
cmlnaW4pCit7CisgICAgRFdPUkQgbW92ZU1ldGhvZCA9IEZJTEVfQkVHSU47CisKKyAgICBpZiAo
b3JpZ2luID09IEZpbGVTZWVrT3JpZ2luOjpDdXJyZW50KQorICAgICAgICBtb3ZlTWV0aG9kID0g
RklMRV9DVVJSRU5UOworICAgIGVsc2UgaWYgKG9yaWdpbiA9PSBGaWxlU2Vla09yaWdpbjo6RW5k
KQorICAgICAgICBtb3ZlTWV0aG9kID0gRklMRV9FTkQ7CisKKyAgICBMQVJHRV9JTlRFR0VSIGxh
cmdlT2Zmc2V0OworICAgIGxhcmdlT2Zmc2V0LlF1YWRQYXJ0ID0gb2Zmc2V0OworCisgICAgbGFy
Z2VPZmZzZXQuTG93UGFydCA9IFNldEZpbGVQb2ludGVyKGhhbmRsZSwgbGFyZ2VPZmZzZXQuTG93
UGFydCwgJmxhcmdlT2Zmc2V0LkhpZ2hQYXJ0LCBtb3ZlTWV0aG9kKTsKKworICAgIGlmIChsYXJn
ZU9mZnNldC5Mb3dQYXJ0ID09IElOVkFMSURfU0VUX0ZJTEVfUE9JTlRFUiAmJiBHZXRMYXN0RXJy
b3IoKSAhPSBOT19FUlJPUikKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgcmV0dXJuIGxhcmdl
T2Zmc2V0LlF1YWRQYXJ0OworfQorCitpbnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxl
IGhhbmRsZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKK3sKKyAgICBpZiAoIWlzSGFu
ZGxlVmFsaWQoaGFuZGxlKSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgRFdPUkQgYnl0ZXNX
cml0dGVuOworICAgIGJvb2wgc3VjY2VzcyA9IFdyaXRlRmlsZShoYW5kbGUsIGRhdGEsIGxlbmd0
aCwgJmJ5dGVzV3JpdHRlbiwgMCk7CisKKyAgICBpZiAoIXN1Y2Nlc3MpCisgICAgICAgIHJldHVy
biAtMTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihieXRlc1dyaXR0ZW4pOworfQorCitp
bnQgcmVhZEZyb21GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNoYXIqIGRhdGEsIGlu
dCBsZW5ndGgpCit7CisgICAgaWYgKCFpc0hhbmRsZVZhbGlkKGhhbmRsZSkpCisgICAgICAgIHJl
dHVybiAtMTsKKworICAgIERXT1JEIGJ5dGVzUmVhZDsKKyAgICBib29sIHN1Y2Nlc3MgPSA6OlJl
YWRGaWxlKGhhbmRsZSwgZGF0YSwgbGVuZ3RoLCAmYnl0ZXNSZWFkLCAwKTsKKworICAgIGlmICgh
c3VjY2VzcykKKyAgICAgICAgcmV0dXJuIC0xOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+
KGJ5dGVzUmVhZCk7Cit9CisKK2Jvb2wgaGFyZExpbmtPckNvcHlGaWxlKGNvbnN0IFN0cmluZyYg
c291cmNlLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uKQoreworICAgIHJldHVybiAhITo6Q29w
eUZpbGUoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKHNvdXJjZSkuZGF0YSgpLCBzdHJpbmdU
b051bGxUZXJtaW5hdGVkV0NoYXIoZGVzdGluYXRpb24pLmRhdGEoKSwgVFJVRSk7Cit9CisKK1N0
cmluZyBsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKQoreworICAgIHJldHVybiBj
YWNoZWRTdG9yYWdlRGlyZWN0b3J5KENTSURMX0xPQ0FMX0FQUERBVEEpOworfQorCitTdHJpbmcg
cm9hbWluZ1VzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKQoreworICAgIHJldHVybiBjYWNo
ZWRTdG9yYWdlRGlyZWN0b3J5KENTSURMX0FQUERBVEEpOworfQorCitWZWN0b3I8U3RyaW5nPiBs
aXN0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIGZpbHRl
cikKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiBlbnRyaWVzOworCisgICAgUGF0aFdhbGtlciB3YWxr
ZXIoZGlyZWN0b3J5LCBmaWx0ZXIpOworICAgIGlmICghd2Fsa2VyLmlzVmFsaWQoKSkKKyAgICAg
ICAgcmV0dXJuIGVudHJpZXM7CisKKyAgICBkbyB7CisgICAgICAgIGlmICh3YWxrZXIuZGF0YSgp
LmR3RmlsZUF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9ESVJFQ1RPUlkKKyAgICAgICAgICAg
ICYmICghd2NzY21wKHdhbGtlci5kYXRhKCkuY0ZpbGVOYW1lLCBMIi4iKSB8fCAhd2NzY21wKHdh
bGtlci5kYXRhKCkuY0ZpbGVOYW1lLCBMIi4uIikpKQorICAgICAgICAgICAgY29udGludWU7CisK
KyAgICAgICAgZW50cmllcy5hcHBlbmQoZGlyZWN0b3J5ICsgIlxcIiArIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgVUNoYXIqPih3YWxrZXIuZGF0YSgpLmNGaWxlTmFtZSkpOworICAgIH0gd2hpbGUg
KHdhbGtlci5zdGVwKCkpOworCisgICAgcmV0dXJuIGVudHJpZXM7Cit9CisKK2Jvb2wgZ2V0Vm9s
dW1lRnJlZVNwYWNlKGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90JikKK3sKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK09wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5n
JiBmc0ZpbGUpCit7CisgICAgYXV0byBoYW5kbGUgPSBvcGVuRmlsZShmc0ZpbGUuZGF0YSgpLCBG
aWxlT3Blbk1vZGU6OlJlYWQpOworICAgIGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUpKQorICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgQllfSEFORExFX0ZJTEVfSU5GT1JNQVRJ
T04gZmlsZUluZm9ybWF0aW9uID0geyB9OworICAgIGlmICghOjpHZXRGaWxlSW5mb3JtYXRpb25C
eUhhbmRsZShoYW5kbGUsICZmaWxlSW5mb3JtYXRpb24pKSB7CisgICAgICAgIGNsb3NlRmlsZSho
YW5kbGUpOworICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIH0KKworICAgIGNsb3Nl
RmlsZShoYW5kbGUpOworCisgICAgcmV0dXJuIGZpbGVJbmZvcm1hdGlvbi5kd1ZvbHVtZVNlcmlh
bE51bWJlcjsKK30KKworU3RyaW5nIHJlYWxQYXRoKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCit7
CisgICAgcmV0dXJuIGdldEZpbmFsUGF0aE5hbWUoZmlsZVBhdGgpOworfQorCitTdHJpbmcgY3Jl
YXRlVGVtcG9yYXJ5RGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUZW1wb3JhcnlQ
YXRoKFtdKGNvbnN0IFN0cmluZyYgcHJvcG9zZWRQYXRoKSB7CisgICAgICAgIHJldHVybiBtYWtl
QWxsRGlyZWN0b3JpZXMocHJvcG9zZWRQYXRoKTsKKyAgICB9KTsKK30KKworYm9vbCBkZWxldGVO
b25FbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmIGRpcmVjdG9yeVBhdGgpCit7CisgICAgU0hG
SUxFT1BTVFJVQ1QgZGVsZXRlT3BlcmF0aW9uID0geworICAgICAgICBudWxscHRyLAorICAgICAg
ICBGT19ERUxFVEUsCisgICAgICAgIHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihkaXJlY3Rv
cnlQYXRoKS5kYXRhKCksCisgICAgICAgIEwiIiwKKyAgICAgICAgRk9GX05PQ09ORklSTUFUSU9O
IHwgRk9GX05PRVJST1JVSSB8IEZPRl9TSUxFTlQsCisgICAgICAgIGZhbHNlLAorICAgICAgICAw
LAorICAgICAgICBMIiIKKyAgICB9OworICAgIHJldHVybiAhU0hGaWxlT3BlcmF0aW9uKCZkZWxl
dGVPcGVyYXRpb24pOworfQorCit9IC8vIG5hbWVzcGFjZSBGaWxlU3lzdGVtCit9IC8vIG5hbWVz
cGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9QYXRoV2Fsa2VyLmNwcCBi
L1NvdXJjZS9XVEYvd3RmL3dpbi9QYXRoV2Fsa2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNmQzZjk3MDYw
NDljYjEzYzllZjYzNTVlYmI2M2E1MDc5ODUwMjIxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dURi93dGYvd2luL1BhdGhXYWxrZXIuY3BwCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8d3RmL3dpbi9QYXRoV2Fsa2VyLmg+CisK
KyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC93aW4v
V0NoYXJTdHJpbmdFeHRyYXMuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK1BhdGhXYWxrZXI6OlBh
dGhXYWxrZXIoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIGNvbnN0IFN0cmluZyYgcGF0dGVybikK
K3sKKyAgICBTdHJpbmcgcGF0aCA9IGRpcmVjdG9yeSArICJcXCIgKyBwYXR0ZXJuOworICAgIG1f
aGFuZGxlID0gOjpGaW5kRmlyc3RGaWxlVyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIocGF0
aCkuZGF0YSgpLCAmbV9kYXRhKTsKK30KKworUGF0aFdhbGtlcjo6flBhdGhXYWxrZXIoKQorewor
ICAgIGlmICghaXNWYWxpZCgpKQorICAgICAgICByZXR1cm47CisgICAgOjpGaW5kQ2xvc2UobV9o
YW5kbGUpOworfQorCitib29sIFBhdGhXYWxrZXI6OnN0ZXAoKQoreworICAgIHJldHVybiA6OkZp
bmROZXh0RmlsZVcobV9oYW5kbGUsICZtX2RhdGEpOworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9QYXRoV2Fsa2VyLmggYi9Tb3VyY2UvV1RG
L3d0Zi93aW4vUGF0aFdhbGtlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk1M2FlMmU2YWU4NTYxYWYzNDU0ZTIx
ODM4OGRmODkwMDVlYTMzYmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4v
UGF0aFdhbGtlci5oCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEt
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
IDxXaW5kb3dzLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvTm9u
Y29weWFibGUuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK2NsYXNzIFBhdGhXYWxrZXIgeworICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKFBhdGhXYWxrZXIpOworcHVibGljOgorICAgIFBhdGhXYWxr
ZXIoY29uc3QgV1RGOjpTdHJpbmcmIGRpcmVjdG9yeSwgY29uc3QgV1RGOjpTdHJpbmcmIHBhdHRl
cm4pOworICAgIH5QYXRoV2Fsa2VyKCk7CisKKyAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJl
dHVybiBtX2hhbmRsZSAhPSBJTlZBTElEX0hBTkRMRV9WQUxVRTsgfQorICAgIGNvbnN0IFdJTjMy
X0ZJTkRfREFUQVcmIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KKworICAgIGJvb2wg
c3RlcCgpOworCitwcml2YXRlOgorICAgIEhBTkRMRSBtX2hhbmRsZTsKKyAgICBXSU4zMl9GSU5E
X0RBVEFXIG1fZGF0YTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwCmluZGV4IDkzNTY2NTAxYTk5ZTE5ODg4
YjFiZDM5NTQ1Mjg4MWM0NzQ1NTdkZjYuLjgxOGYyMjRiZDU2NDgzYzhhZDY2MDJiMzAyZDZhZTBi
NzJkZWQxYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvQ0RNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NE
TS5jcHAKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJDRE1GYWN0b3J5LmgiCiAjaW5jbHVk
ZSAiQ0RNUHJpdmF0ZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiRmlsZVN5
c3RlbS5oIgogI2luY2x1ZGUgIkluaXREYXRhUmVnaXN0cnkuaCIKICNpbmNsdWRlICJNZWRpYUtl
eXNSZXF1aXJlbWVudC5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCkBAIC00Miw2ICs0MSw3
IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdp
bkRhdGEuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVt
Lmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVn
YWN5L1dlYktpdE1lZGlhS2V5U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNlc3Npb24uY3BwCmluZGV4IGU2NjZj
ZTk3OTM2NzQ1ZWRhMDEwNjYwNzk3OGY2ZTk4MDlmZjBiMzkuLjY1ZWRkYTE2Zjc5NTBkMjQ5YmNm
NzMxNjI4NjE1MDg1NGVmMjgxZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5U2Vzc2lvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlT
ZXNzaW9uLmNwcApAQCAtMzAsMTMgKzMwLDEzIEBACiAKICNpbmNsdWRlICJEb2N1bWVudC5oIgog
I2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVk
ZSAiUGFnZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luRGF0YS5oIgogI2luY2x1ZGUgIlNl
dHRpbmdzLmgiCiAjaW5jbHVkZSAiV2ViS2l0TWVkaWFLZXlFcnJvci5oIgogI2luY2x1ZGUgIldl
YktpdE1lZGlhS2V5TWVzc2FnZUV2ZW50LmgiCiAjaW5jbHVkZSAiV2ViS2l0TWVkaWFLZXlzLmgi
CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3Rl
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5j
cHAKaW5kZXggNmRkNDE3MTMwOGFkNDY3ZjJhNGMyN2M5Y2U5NzcyOWIzZmFkOGNmOS4uMzY4Nzk0
ZWY1YzFhMGZlNzk4YjJhMWJhNTA4ODZjMGI0ZmViY2I5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcApAQCAtMjcsMTIgKzI3
LDEyIEBACiAjaW5jbHVkZSAiRE9NRmlsZVN5c3RlbS5oIgogCiAjaW5jbHVkZSAiRmlsZS5oIgot
I2luY2x1ZGUgIkZpbGVNZXRhZGF0YS5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNs
dWRlICJGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtRmls
ZUVudHJ5LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUg
PHd0Zi9Dcm9zc1RocmVhZENvcGllci5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlTWV0YWRhdGEuaD4K
KyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9VVUlELmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbUVudHJ5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRW50cnkuY3BwCmluZGV4IGRjY2I1YTEx
ODYzZDliYjEwZjI4N2Q1N2ZkYzEzOWEwYjliMWIxMTEuLjQyNGNjYTI2Y2Q0YzdiODYxMDNmZDUy
MGYxZmY3MGYwZGEwMzUxZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50
cmllc2FwaS9GaWxlU3lzdGVtRW50cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW50cmllc2FwaS9GaWxlU3lzdGVtRW50cnkuY3BwCkBAIC0yOSwxMCArMjksMTAgQEAKICNpbmNs
dWRlICJET01FeGNlcHRpb24uaCIKICNpbmNsdWRlICJET01GaWxlU3lzdGVtLmgiCiAjaW5jbHVk
ZSAiRXJyb3JDYWxsYmFjay5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJG
aWxlU3lzdGVtRGlyZWN0b3J5RW50cnkuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtRW50cnlDYWxs
YmFjay5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlIDx3
dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIu
Y3BwCmluZGV4IGM3ZmRmZDBkZDY1NDVmOGM2ZmU1MzQyZmIzNjQ2ZmU5YTg0Njk0YjkuLmI0Mjli
M2YyNmI5MzQ2ZmJiMWRhZTdlYzY1MGU0NmUyNTZkZmM4YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmNw
cApAQCAtMjgsOCArMjgsOCBAQAogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKLSNp
bmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNs
dWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcApp
bmRleCAyMTc4Y2M0MmE5YjUxMTQzY2U1ZDg1ZjRkMTFmN2FiMjYwOTI0ZWM3Li4yODVkNTAyZGFl
ODFhOWE3NjhhYTM0YTFkMjU2ZGY1MDQ3ZDYxYmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2lu
Z1N0b3JlLmNwcApAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJB
U0UpCiAKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiSURCQmluZGluZ1V0aWxp
dGllcy5oIgogI2luY2x1ZGUgIklEQkdldEFsbFJlY29yZHNEYXRhLmgiCiAjaW5jbHVkZSAiSURC
R2V0QWxsUmVzdWx0LmgiCkBAIC01NCw2ICs1Myw3IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSlNHbG9iYWxPYmplY3QuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJvbmdJbmxp
bmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3RydWN0dXJlSW5saW5lcy5oPgorI2lu
Y2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCVHJhbnNhY3Rpb24uY3BwCmlu
ZGV4IDc4MWI3OWY2M2EwNjFkNThkMWM5MmE0MTNjMjFhZmRlNjU2NDkzNmUuLmJlZWE2YjE2NzA2
MjRlNWM5ODBmMzE2NjM0YzAzNjVkZmRlYmM2Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJUcmFuc2FjdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQlRyYW5zYWN0
aW9uLmNwcApAQCAtMjcsMTMgKzI3LDEzIEBACiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFT
RSkKIAotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJJREJDdXJzb3JJbmZvLmgi
CiAjaW5jbHVkZSAiSW5kZXhlZERCLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUg
IlNRTGl0ZUlEQkJhY2tpbmdTdG9yZS5oIgogI2luY2x1ZGUgIlNRTGl0ZUlEQkN1cnNvci5oIgog
I2luY2x1ZGUgIlNRTGl0ZVRyYW5zYWN0aW9uLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0u
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIElEQlNlcnZlciB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURC
U2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblBy
b2Nlc3NJREJTZXJ2ZXIuY3BwCmluZGV4IDYxYWViOGY3ZDcwMTUxYjk0MjI4NWFjZGNjZjgxYmZi
MWVhNDI2MjYuLmRkOWY1YWQyOTMxN2M1Y2RjNzU4ODMyYWM2YTM3MGJkZjk1ZGQ4OTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJ
REJTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJl
ZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpZiBFTkFCTEUo
SU5ERVhFRF9EQVRBQkFTRSkKIAotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJJ
REJDb25uZWN0aW9uVG9DbGllbnQuaCIKICNpbmNsdWRlICJJREJDb25uZWN0aW9uVG9TZXJ2ZXIu
aCIKICNpbmNsdWRlICJJREJDdXJzb3JJbmZvLmgiCkBAIC00MCw2ICszOSw3IEBACiAjaW5jbHVk
ZSAiSURCUmVzdWx0RGF0YS5oIgogI2luY2x1ZGUgIklEQlZhbHVlLmgiCiAjaW5jbHVkZSAiTG9n
Z2luZy5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxv
b3AuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCmluZGV4IGQ5NjU0MWVkNDlm
NjkzODI0ZWQxZGZjNTI1MDg4ZGFjMzJiYzU5YzUuLjQwOGY2MjIxMmFlMmIxN2IzOGFjMTkwOTg5
NTFhMGYwOTJkNGIwNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKQEAgLTM0LDcgKzM0LDYgQEAKICNpbmNsdWRl
ICJEYXRhYmFzZU1hbmFnZXIuaCIKICNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXJDbGllbnQuaCIK
ICNpbmNsdWRlICJEYXRhYmFzZVRocmVhZC5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNp
bmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiT3JpZ2luTG9jay5oIgogI2luY2x1ZGUgIlNl
Y3VyaXR5T3JpZ2luLmgiCkBAIC00Myw2ICs0Miw3IEBACiAjaW5jbHVkZSAiU1FMaXRlRmlsZVN5
c3RlbS5oIgogI2luY2x1ZGUgIlNRTGl0ZVN0YXRlbWVudC5oIgogI2luY2x1ZGUgIlNRTGl0ZVRy
YW5zYWN0aW9uLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYv
TWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUg
PHd0Zi9TdGRMaWJFeHRyYXMuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvT3JpZ2luTG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL09yaWdpbkxvY2suY3BwCmluZGV4IDQyM2IyZTY2ZGRmYTEyY2MzNDBmNjBmY2U1OWQz
NTNkZjk5ODY3ZjQuLmEyMWJjZGI3ODM4NmM4MTBlYzU5OTQxYzI3NWY0ZWZiYWZmMjNmYjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luTG9jay5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5Mb2NrLmNw
cApAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk9yaWdp
bkxvY2suaCIKIAotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKLQogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBTdHJpbmcgT3JpZ2luTG9jazo6bG9ja0ZpbGVOYW1lRm9yUGF0aChTdHJpbmcgb3JpZ2lu
UGF0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvT3Jp
Z2luTG9jay5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5Mb2Nr
LmgKaW5kZXggYTE2ZTg0ZjE0ODlkYWYyZWU4ZjUwNDYxOWQxMzk5M2I4ZDM3NWUxMC4uZWNjMjll
ODkwMjViZGY2MjkzOTJiMTA1OWVmODg3MGU2ZjhmOTJmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5Mb2NrLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5Mb2NrLmgKQEAgLTI1LDcgKzI1LDcgQEAKIAog
I3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCisjaW5jbHVkZSA8d3RmL0Zp
bGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRT
YWZlUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9jb2NvYS9EYXRhYmFzZU1h
bmFnZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvY29jb2Ev
RGF0YWJhc2VNYW5hZ2VyQ29jb2EubW0KaW5kZXggN2NmZTlmYjA2MzI2OTE4MWQ0NGYxM2MzODM2
ODI1MzNkNGU0ZGZjOS4uOGQzMjUwNzNiMDRhY2ExZDMyODQ5NmUxODI4MzM4ZGZlYmNhYmZmMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9jb2NvYS9EYXRh
YmFzZU1hbmFnZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL2NvY29hL0RhdGFiYXNlTWFuYWdlckNvY29hLm1tCkBAIC0yOSw3ICsyOSw3IEBACiAjaW1w
b3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkRhdGFiYXNlTWFuYWdlci5oIgogCi0jaW1wb3J0ICJG
aWxlU3lzdGVtLmgiCisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlIGIv
U291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXggOGRkOTk5ZTIwODFmOTdiMzM0
MjM2ZjNmMzBkMDg1YmI1ZDA1ZDQ4NC4uOTFiODVmYmFlOGYxYjdlNTdjYzkxMDIzYzFkZTNkZDMw
MWQxNjBlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKKysr
IGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTE4OSw3ICsxODksNiBAQCBs
aXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9hdWRpby9tYWMvQ0FSaW5n
QnVmZmVyLmNwcAogICAgIHBsYXRmb3JtL2F1ZGlvL21hYy9GRlRGcmFtZU1hYy5jcHAKIAotICAg
IHBsYXRmb3JtL2NmL0ZpbGVTeXN0ZW1DRi5jcHAKICAgICBwbGF0Zm9ybS9jZi9LZXllZERlY29k
ZXJDRi5jcHAKICAgICBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAKICAgICBwbGF0Zm9y
bS9jZi9NYWluVGhyZWFkU2hhcmVkVGltZXJDRi5jcHAKQEAgLTIwMCw3ICsxOTksNiBAQCBsaXN0
KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVy
VW5ibG9ja0hhbmRsZXJDb2NvYS5tbQogICAgIHBsYXRmb3JtL2NvY29hL0NvcmVWaWRlb1NvZnRM
aW5rLmNwcAogICAgIHBsYXRmb3JtL2NvY29hL0ZpbGVNb25pdG9yQ29jb2EubW0KLSAgICBwbGF0
Zm9ybS9jb2NvYS9GaWxlU3lzdGVtQ29jb2EubW0KICAgICBwbGF0Zm9ybS9jb2NvYS9LZXlFdmVu
dENvY29hLm1tCiAgICAgcGxhdGZvcm0vY29jb2EvTG9jYWxpemVkU3RyaW5nc0NvY29hLm1tCiAg
ICAgcGxhdGZvcm0vY29jb2EvTUlNRVR5cGVSZWdpc3RyeUNvY29hLm1tCkBAIC0zNDcsNyArMzQ1
LDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vbWFjL0RyYWdE
YXRhTWFjLm1tCiAgICAgcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbQogICAgIHBsYXRmb3Jt
L21hYy9FdmVudExvb3BNYWMubW0KLSAgICBwbGF0Zm9ybS9tYWMvRmlsZVN5c3RlbU1hYy5tbQog
ICAgIHBsYXRmb3JtL21hYy9LZXlFdmVudE1hYy5tbQogICAgIHBsYXRmb3JtL21hYy9Mb2NhbEN1
cnJlbnRHcmFwaGljc0NvbnRleHQubW0KICAgICBwbGF0Zm9ybS9tYWMvTG9nZ2luZ01hYy5tbQpA
QCAtNDE2LDggKzQxMyw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRm
b3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxl
Z2F0ZS5tbQogICAgIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbQog
Ci0gICAgcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcAotCiAgICAgcGxhdGZvcm0v
dGV4dC9jZi9IeXBoZW5hdGlvbkNGLmNwcAogCiAgICAgcGxhdGZvcm0vdGV4dC9tYWMvTG9jYWxl
TWFjLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVBsYXlTdGF0aW9uLmNt
YWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1QbGF5U3RhdGlvbi5jbWFrZQppbmRleCA5MDM3
NjAzOWI5Njk2ZTEzZjlkZWJjOWM0NzMwYTc5MDM5OTc5NTUxLi42ZDQ0NTM1ZDk1OTg0YmU1ODgz
M2U4OGY5NzFlNmE3MmYyZGJhYjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bVBsYXlTdGF0aW9uLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtUGxheVN0YXRp
b24uY21ha2UKQEAgLTYzLDcgKzYzLDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAg
ICAgcGxhdGZvcm0vcGxheXN0YXRpb24vU2Nyb2xsYmFyVGhlbWVQbGF5U3RhdGlvbi5jcHAKICAg
ICBwbGF0Zm9ybS9wbGF5c3RhdGlvbi9Vc2VyQWdlbnRQbGF5U3RhdGlvbi5jcHAKIAotICAgIHBs
YXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKICAgICBwbGF0Zm9ybS9wb3NpeC9TaGFy
ZWRCdWZmZXJQT1NJWC5jcHAKIAogICAgIHBsYXRmb3JtL3RleHQvSHlwaGVuYXRpb24uY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFrZSBiL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtV2luLmNtYWtlCmluZGV4IDRmYWIzMDgyNjBlMDljODA1NDE5Yzg0YzdjYTgz
NGQ4MWZiOTVjNjUuLmZjYjU3YTQ1YTVmNDFlZjNiZjY3MDM4NGZkYTIzZjNjZGE4NjE0ZDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtlCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtlCkBAIC04NCw3ICs4NCw2IEBAIGxpc3QoQVBQRU5EIFdl
YkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL3dpbi9EcmFnRGF0YVdpbi5jcHAKICAgICBwbGF0
Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcAogICAgIHBsYXRmb3JtL3dpbi9FdmVudExvb3BXaW4u
Y3BwCi0gICAgcGxhdGZvcm0vd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCiAgICAgcGxhdGZvcm0vd2lu
L0dESU9iamVjdENvdW50ZXIuY3BwCiAgICAgcGxhdGZvcm0vd2luL0dESVV0aWxpdGllcy5jcHAK
ICAgICBwbGF0Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3BwCkBAIC05Myw3ICs5Miw2IEBAIGxpc3Qo
QVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL3dpbi9NSU1FVHlwZVJlZ2lzdHJ5
V2luLmNwcAogICAgIHBsYXRmb3JtL3dpbi9NYWluVGhyZWFkU2hhcmVkVGltZXJXaW4uY3BwCiAg
ICAgcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCi0gICAgcGxhdGZvcm0vd2luL1BhdGhX
YWxrZXIuY3BwCiAgICAgcGxhdGZvcm0vd2luL1BsYXRmb3JtTW91c2VFdmVudFdpbi5jcHAKICAg
ICBwbGF0Zm9ybS93aW4vUGxhdGZvcm1TY3JlZW5XaW4uY3BwCiAgICAgcGxhdGZvcm0vd2luL1Bv
cHVwTWVudVdpbi5jcHAKQEAgLTI0OCw3ICsyNDYsNiBAQCBpZiAoVVNFX0NGKQogICAgIGxpc3Qo
QVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgICAgICBsb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lX
ZWJBcmNoaXZlLmNwcAogCi0gICAgICAgIHBsYXRmb3JtL2NmL0ZpbGVTeXN0ZW1DRi5jcHAKICAg
ICAgICAgcGxhdGZvcm0vY2YvS2V5ZWREZWNvZGVyQ0YuY3BwCiAgICAgICAgIHBsYXRmb3JtL2Nm
L0tleWVkRW5jb2RlckNGLmNwcAogICAgICAgICBwbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQKaW5kZXggYjYxMjQxOTJjZTk0NDUyZjZkMWZlNGJiZjMwOWZjZGFjNDFi
NDcyYS4uNTFlMThjN2E5OTExZjQ4ZmUzMWRjMTZjOGNlODMwZThiYTE5MmVhMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQKQEAgLTE1OTQsNyArMTU5NCw2IEBAIHBsYXRmb3JtL0ZpbGVDaG9vc2VyLmNwcAogcGxh
dGZvcm0vRmlsZUhhbmRsZS5jcHAKIHBsYXRmb3JtL0ZpbGVNb25pdG9yLmNwcAogcGxhdGZvcm0v
RmlsZVN0cmVhbS5jcHAKLXBsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwCiBwbGF0Zm9ybS9HZW5lcmlj
VGFza1F1ZXVlLmNwcAogcGxhdGZvcm0vTGF5b3V0VW5pdC5jcHAKIHBsYXRmb3JtL0xlbmd0aC5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDkwY2VmZDJmZTEyZWEzOGNhYTQyM2JkOTBk
YzliYzcxMGI3OTJmYjEuLjBlZThjN2FkMTY4NzRjZDAwMWJmMjYzYjJkNDA3MDQ4ODZjNTgzZmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtMTgxLDcgKzE4MSw2IEBAIHBsYXRmb3JtL2F1
ZGlvL21hYy9BdWRpb1Nlc3Npb25NYWMuY3BwCiBwbGF0Zm9ybS9hdWRpby9tYWMvQ0FSaW5nQnVm
ZmVyLmNwcAogcGxhdGZvcm0vYXVkaW8vbWFjL0ZGVEZyYW1lTWFjLmNwcAogCi1wbGF0Zm9ybS9j
Zi9GaWxlU3lzdGVtQ0YuY3BwCiBwbGF0Zm9ybS9jZi9LZXllZERlY29kZXJDRi5jcHAKIHBsYXRm
b3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcAogcGxhdGZvcm0vY2YvTWFpblRocmVhZFNoYXJlZFRp
bWVyQ0YuY3BwCkBAIC0xOTMsNyArMTkyLDYgQEAgcGxhdGZvcm0vY29jb2EvQ29udGVudEZpbHRl
clVuYmxvY2tIYW5kbGVyQ29jb2EubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9jb2NvYS9Db3JlVmlk
ZW9Tb2Z0TGluay5jcHAKIHBsYXRmb3JtL2NvY29hL0RhdGFEZXRlY3RvcnNDb3JlU29mdExpbmsu
bW0KIHBsYXRmb3JtL2NvY29hL0ZpbGVNb25pdG9yQ29jb2EubW0KLXBsYXRmb3JtL2NvY29hL0Zp
bGVTeXN0ZW1Db2NvYS5tbQogcGxhdGZvcm0vY29jb2EvS2V5RXZlbnRDb2NvYS5tbQogcGxhdGZv
cm0vY29jb2EvTG9jYWxpemVkU3RyaW5nc0NvY29hLm1tCiBwbGF0Zm9ybS9jb2NvYS9NSU1FVHlw
ZVJlZ2lzdHJ5Q29jb2EubW0KQEAgLTQ0Niw3ICs0NDQsNiBAQCBwbGF0Zm9ybS9tYWMvQ3Vyc29y
TWFjLm1tCiBwbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0KIHBsYXRmb3JtL21hYy9EcmFnSW1h
Z2VNYWMubW0KIHBsYXRmb3JtL21hYy9FdmVudExvb3BNYWMubW0KLXBsYXRmb3JtL21hYy9GaWxl
U3lzdGVtTWFjLm1tCiBwbGF0Zm9ybS9tYWMvS2V5RXZlbnRNYWMubW0gQG5vLXVuaWZ5CiBwbGF0
Zm9ybS9tYWMvUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjLm1tIEBuby11bmlmeQogcGxhdGZv
cm0vbWFjL0xvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5tbQpAQCAtNTQxLDggKzUzOCw2IEBA
IHBsYXRmb3JtL25ldHdvcmsvbWFjL1VUSVV0aWxpdGllcy5tbQogcGxhdGZvcm0vbmV0d29yay9t
YWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCiBwbGF0
Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0KIAotcGxhdGZvcm0vcG9zaXgv
RmlsZVN5c3RlbVBPU0lYLmNwcAotCiBwbGF0Zm9ybS90ZXh0L2NmL0h5cGhlbmF0aW9uQ0YuY3Bw
CiAKIHBsYXRmb3JtL3RleHQvaW9zL0xvY2FsaXplZERhdGVDYWNoZS5tbQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGMwYzI5NzM4
NTViZmE3ZWM3ZmZhNzExNDEyNzdiZWM4Y2Y1ZTYxZDcuLjZhZTE3ODliZWU2MDEyZGQzZWVkYjNh
MzhlOWMzMmZlODhlNTBmMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyNDksNyArMTI0OSw2IEBACiAJCTQ2NzMwMjAyMUM0
RUZFNzgwMEJDQjM1NyAvKiBJZ25vcmVPcGVuc0R1cmluZ1VubG9hZENvdW50SW5jcmVtZW50ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NzMwMjAx
MUM0RUZFNjYwMEJDQjM1NyAvKiBJZ25vcmVPcGVuc0R1cmluZ1VubG9hZENvdW50SW5jcmVtZW50
ZXIuaCAqLzsgfTsKIAkJNDY4MkQyMDAxRjc5NzgzMDAwQzg2M0RCIC8qIFN0b3JlZENyZWRlbnRp
YWxzUG9saWN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NjgyRDFGRjFGNzk3ODIzMDBDODYzREIgLyogU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjgzNDRF
MDFFRERGQUFBMDBCNzc5NUIgLyogRE9NUmVjdExpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODM0NERFMUVEREZBNUYwMEI3Nzk1QiAvKiBET01S
ZWN0TGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
Ci0JCTQ2ODlGMUFGMTI2N0JBRTEwMEU4RDM4MCAvKiBGaWxlTWV0YWRhdGEuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODlGMUFFMTI2N0JBRTEwMEU4
RDM4MCAvKiBGaWxlTWV0YWRhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk0NkI2M0Y2QzFDNkU4RDE5MDAyRTkxNEIgLyogSlNFdmVudFRhcmdl
dEN1c3RvbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDZCNjNGNkIxQzZFOENERjAwMkU5MTRCIC8qIEpTRXZlbnRUYXJnZXRDdXN0b20uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkI5NTE5NTIwN0Q2
MzM0MDBBN0QyREQgLyogQWJzdHJhY3RET01XaW5kb3cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Qjk1MThBMjA3RDYzMjgwMEE3RDJERCAvKiBBYnN0
cmFjdERPTVdpbmRvdy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTQ2Qjk1MTk2MjA3RDYzM0EwMEE3RDJERCAvKiBBYnN0cmFjdEZyYW1lLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkI5NTE4RjIwN0Q2
MzJCMDBBN0QyREQgLyogQWJzdHJhY3RGcmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNDQxLDcgKzE0NDAsNiBAQAogCQk1MTQzQjI2MzFE
REQxNTIwMDAxNEZBQzYgLyogTGlua0ljb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxNDNCMjYyMURERDE0OTAwMDE0RkFDNiAvKiBMaW5rSWNvbi5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxNDVC
MTBBMUJDNDhFMkUwMEU4NjIxOSAvKiBJREJSZXNvdXJjZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNDVCMTA4MUJDNDg5MEIwMEU4
NjIxOSAvKiBJREJSZXNvdXJjZUlkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTQ4NDUzRjFCQjlEMDdFMDA2QTcyRUQgLyogSURC
RXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
NDg0NTNEMUJCOUQwNzYwMDZBNzJFRCAvKiBJREJFcnJvci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTUxNEIzRjczMEM3MjIwNDcwMDA1MzBERiAv
KiBGaWxlU3lzdGVtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTRCM0Y3MjBDNzIyMDQ3MDAwNTMwREYgLyogRmlsZVN5c3RlbS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxNEM3NjRDMENFOTIzNEUw
MDdFRjNDRCAvKiBBdXRoZW50aWNhdGlvbk1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0Qzc2NDIwQ0U5MjM0RTAwN0VGM0NEIC8qIEF1dGhlbnRp
Y2F0aW9uTWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNTE0Qzc2NEUwQ0U5MjM0RTAwN0VGM0NEIC8qIEZvcm1EYXRhU3RyZWFtTWFjLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTRDNzY0NDBDRTky
MzRFMDA3RUYzQ0QgLyogRm9ybURhdGFTdHJlYW1NYWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTRDNzY2RTBDRTkyM0ExMDA3RUYzQ0QgLyog
Q3JlZGVudGlhbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTE0Qzc2NTkwQ0U5MjNBMTAwN0VGM0NEIC8qIENyZWRlbnRpYWwuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNzcwMSw3ICs3Njk5LDYgQEAK
IAkJNDY4MzQ0REMxRURERkE1RjAwQjc3OTVCIC8qIERPTVJlY3RMaXN0LmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBET01S
ZWN0TGlzdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODM0NEREMUVEREZB
NUYwMEI3Nzk1QiAvKiBET01SZWN0TGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01SZWN0
TGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODM0NERFMUVEREZBNUYw
MEI3Nzk1QiAvKiBET01SZWN0TGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01SZWN0TGlzdC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0Njg5RjFBRTEyNjdCQUUxMDBFOEQzODAgLyog
RmlsZU1ldGFkYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbGVNZXRh
ZGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkI2M0Y2QjFDNkU4Q0RGMDAy
RTkxNEIgLyogSlNFdmVudFRhcmdldEN1c3RvbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU0V2ZW50VGFyZ2V0Q3VzdG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ2Qjk1MThBMjA3RDYzMjgwMEE3RDJERCAvKiBBYnN0cmFjdERPTVdpbmRvdy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBYnN0cmFjdERPTVdpbmRvdy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0NkI5NTE4QzIwN0Q2MzI5MDBBN0QyREQgLyogUmVtb3Rl
RnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlRnJh
bWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODEwNCw4ICs4MTAxLDYgQEAK
IAkJNTE0NUIxMDgxQkM0ODkwQjAwRTg2MjE5IC8qIElEQlJlc291cmNlSWRlbnRpZmllci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJREJSZXNvdXJjZUlkZW50aWZpZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0ODQ1M0MxQkI5RDA3NjAwNkE3MkVEIC8q
IElEQkVycm9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElEQkVy
cm9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0ODQ1M0QxQkI5RDA3NjAw
NkE3MkVEIC8qIElEQkVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElE
QkVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUxNEIzRjcyMEM3MjIwNDcw
MDA1MzBERiAvKiBGaWxlU3lzdGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEZpbGVTeXN0ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTE0QjNGNzUwQzcy
MjA1NTAwMDUzMERGIC8qIEZpbGVTeXN0ZW1Db2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IEZpbGVTeXN0ZW1Db2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTE0Qzc2MzUwQ0U5MjI1RTAwN0VGM0NEIC8qIEpTU1FMRXJyb3IuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTUUxFcnJvci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNEM3NjM2MENFOTIyNUUwMDdFRjNDRCAvKiBKU1NR
TFRyYW5zYWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
U1FMVHJhbnNhY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTRDNzY0
MjBDRTkyMzRFMDA3RUYzQ0QgLyogQXV0aGVudGljYXRpb25NYWMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQXV0aGVudGljYXRpb25NYWMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTgxNDQsOCArODEzOSw2IEBACiAJCTUxNUUzN0Y0MUZBQTkzODgwMEQ3RjIy
QSAvKiBTZXJ2aWNlV29ya2VyVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU2VydmljZVdvcmtlclR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUx
NUY3OTUxMUNGQ0EzQzcwMENDRUQ5MyAvKiBXZWJDb3JlQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQ29yZUNyb3NzVGhyZWFkQ29w
aWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE1Rjc5NTIxQ0ZDQTNDNzAw
Q0NFRDkzIC8qIFdlYkNvcmVDcm9zc1RocmVhZENvcGllci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJDb3JlQ3Jvc3NUaHJlYWRDb3BpZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJNTE2MDMwMEEwQ0M0MjUxMjAwQzhBQzI1IC8qIEZpbGVTeXN0ZW1QT1NJ
WC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxlU3lzdGVtUE9T
SVguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MTYwMzA2QjBDQzQzNjIzMDBD
OEFDMjUgLyogRmlsZVN5c3RlbUNGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEZpbGVTeXN0ZW1DRi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUx
NjA3MTJCMUJEODMwNTMwMERCQzRGMiAvKiBUcmFuc2FjdGlvbk9wZXJhdGlvbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUcmFuc2FjdGlvbk9wZXJhdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MTYwNzEyQzFCRDgzMDcyMDBEQkM0RjIgLyogSURCT2Jq
ZWN0U3RvcmVJbmZvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElE
Qk9iamVjdFN0b3JlSW5mby5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNjA3
MTJEMUJEODMwNzIwMERCQzRGMiAvKiBJREJPYmplY3RTdG9yZUluZm8uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSURCT2JqZWN0U3RvcmVJbmZvLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0xMTI0Nyw3ICsxMTI0MCw2IEBACiAJCUExQzJDNTc1MUZBMjg1MTYw
MEJBNDZGQSAvKiBQYXltZW50U2Vzc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYXltZW50
U2Vzc2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExQzdGQUExMTMzQTVE
MzUwMEQ2NzMyRCAvKiBKU1hQYXRoUmVzdWx0Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTWFBhdGhSZXN1bHRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBMUNCRUY2MzFGOUYxMTI5MDAyOERFN0MgLyogTW9ja1BheW1lbnRN
ZXRob2QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9ja1BheW1lbnRNZXRob2QuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJQTFDQzExNjIxRTQ5M0QwMTAwRUZBNjlDIC8qIEZpbGVTeXN0ZW1N
YWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBGaWxlU3lzdGVt
TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMUNDNTY0QzFGNDYxNDUwMDBB
NDU1NUIgLyogSlNQYXltZW50TWV0aG9kRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU1BheW1lbnRNZXRob2REYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUExQ0M1NjREMUY0NjE0NTEwMEE0NTU1QiAvKiBKU1BheW1lbnRNZXRob2REYXRhLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUGF5bWVudE1ldGhvZERhdGEu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMUNDNTY0RTFGNDYxNDUyMDBBNDU1
NUIgLyogSlNQYXltZW50Q29tcGxldGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNQYXltZW50Q29tcGxldGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEz
NDM0LDcgKzEzNDI2LDYgQEAKIAkJQzU1OTJGNzcxQTkyQUEyODAwMUY4ODYyIC8qIENoYXJhY3Rl
clByb3BlcnRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2hhcmFjdGVy
UHJvcGVydGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNTVDN0JBMDE3MThB
RkJBMDAxMzI3RTQgLyogUmVuZGVyVGhlbWVJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBSZW5kZXJUaGVtZUlPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQzU3MkVFMUQxMjAxQzlCQzAwN0Q4RjgyIC8qIEpTSURCSW5kZXguaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNJREJJbmRleC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlDNTdGRURFMDEyMTJFRTlDMDA5N0JFNjUgLyogRmlsZVN5c3RlbS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxlU3lzdGVtLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzU4NUE2NjAxMUQ0RkFDNTAwNEMzRTRCIC8qIElE
QkJpbmRpbmdVdGlsaXRpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSURCQmluZGluZ1V0aWxpdGllcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUM1ODVBNjYxMTFENEZBQzUwMDRDM0U0QiAvKiBJREJCaW5kaW5nVXRpbGl0aWVzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElEQkJpbmRpbmdVdGlsaXRpZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzU4NUE2NkIxMUQ0RkIwNzAwNEMzRTRCIC8qIEpTSURC
RGF0YWJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNJREJEYXRhYmFz
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY3NjYsNyArMTY3NTcsNiBAQAog
CQkxQUU0MkY2NzBBQTRCOENCMDBDODYxMkQgLyogY2YgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTUxNjAzMDZCMENDNDM2MjMwMEM4QUMyNSAvKiBGaWxl
U3lzdGVtQ0YuY3BwICovLAogCQkJCTUxN0E2M0JGMUI3NDMxN0UwMEU3RENEQyAvKiBLZXllZERl
Y29kZXJDRi5jcHAgKi8sCiAJCQkJNTE3QTYzQzAxQjc0MzE3RTAwRTdEQ0RDIC8qIEtleWVkRGVj
b2RlckNGLmggKi8sCiAJCQkJNTE3QTYzQzExQjc0MzE3RTAwRTdEQ0RDIC8qIEtleWVkRW5jb2Rl
ckNGLmNwcCAqLywKQEAgLTE4NjE1LDE0ICsxODYwNSw2IEBACiAJCQlwYXRoID0gbWFjOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKLQkJNTE2MDMwMDkwQ0M0MjQ1NDAwQzhBQzI1
IC8qIHBvc2l4ICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJ
CQk1MTYwMzAwQTBDQzQyNTEyMDBDOEFDMjUgLyogRmlsZVN5c3RlbVBPU0lYLmNwcCAqLywKLQkJ
CSk7Ci0JCQlwYXRoID0gcG9zaXg7Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9Owog
CQk1MTYwRjQ5MjBCMEFBNzE1MDBDMUQyQUYgLyogbWFjICovID0gewogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTE5OTgzLDcgKzE5OTY1LDYgQEAKIAkJCQlBN0NGQjNE
NDBCN0VEMTE4MDA3MEMzMkQgLyogRHJhZ0ltYWdlTWFjLm1tICovLAogCQkJCUUxQkE2NkYwMTc0
MkJEODYwMEMyMDI1MSAvKiBEeW5hbWljTGlua2VySW50ZXJwb3NpbmcuaCAqLywKIAkJCQkxQ0Ex
OUUwMzBEQzI1NTk1MDA2NUE5OTQgLyogRXZlbnRMb29wTWFjLm1tICovLAotCQkJCUExQ0MxMTYy
MUU0OTNEMDEwMEVGQTY5QyAvKiBGaWxlU3lzdGVtTWFjLm1tICovLAogCQkJCTkzNUM0NzZFMDlB
QzRENzMwMEE2QUFCNCAvKiBLZXlFdmVudE1hYy5tbSAqLywKIAkJCQlGNDRBNUY1NzFGRUQzODMw
MDA3RjU5NDQgLyogTGVnYWN5TlNQYXN0ZWJvYXJkVHlwZXMuaCAqLywKIAkJCQkwNkU4MUVENjBB
QjVENUU5MDBDODc4MzcgLyogTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0LmggKi8sCkBAIC0y
MjQzMSw3ICsyMjQxMiw2IEBACiAJCQkJN0M3OTQxRTMxQzU2QzI5MzAwQTRDNThFIC8qIERhdGFE
ZXRlY3RvcnNDb3JlU29mdExpbmsuaCAqLywKIAkJCQk3Qzc5NDFFMjFDNTZDMjkzMDBBNEM1OEUg
LyogRGF0YURldGVjdG9yc0NvcmVTb2Z0TGluay5tbSAqLywKIAkJCQk3QTA5Q0VGMDFGMDFEMUY3
MDBFOTNCREIgLyogRmlsZU1vbml0b3JDb2NvYS5tbSAqLywKLQkJCQk1MTRCM0Y3NTBDNzIyMDU1
MDAwNTMwREYgLyogRmlsZVN5c3RlbUNvY29hLm1tICovLAogCQkJCUE1Qzk3NENGMTE0ODVGRjEw
MDY2RjJBQiAvKiBLZXlFdmVudENvY29hLmggKi8sCiAJCQkJQTVDOTc0RDAxMTQ4NUZGMTAwNjZG
MkFCIC8qIEtleUV2ZW50Q29jb2EubW0gKi8sCiAJCQkJMUE0ODMyQjIxQTk1M0JBNjAwOEI0REZF
IC8qIExvY2FsaXplZFN0cmluZ3NDb2NvYS5tbSAqLywKQEAgLTI1Mjc0LDcgKzI1MjU0LDYgQEAK
IAkJCQkwNzIyMUI5MjE3Q0YwQUQ0MDA4NDhFNTEgLyogbWVkaWFzdHJlYW0gKi8sCiAJCQkJNTlD
NzdGMTAxMDU0NTkxQzAwNTA2MTA0IC8qIG1vY2sgKi8sCiAJCQkJNjU2Qjg0RDcwQUVBMUNFOTAw
QTA5NUI0IC8qIG5ldHdvcmsgKi8sCi0JCQkJNTE2MDMwMDkwQ0M0MjQ1NDAwQzhBQzI1IC8qIHBv
c2l4ICovLAogCQkJCTFBMkU2RTU2MENDNTUxRTAwMDRBMjA2MiAvKiBzcWwgKi8sCiAJCQkJQjJD
M0Q5RUMwRDAwNkMxRDAwRUY2RjI2IC8qIHRleHQgKi8sCiAJCQkJRTE4ODIzNUYyMDMxRjUwRjAw
QjQyREYzIC8qIHZyICovLApAQCAtMjUzMTksMTQgKzI1Mjk4LDExIEBACiAJCQkJMDY2Qzc3MkEw
QUI2MDNCNzAwMjM4Q0M0IC8qIEZpbGVDaG9vc2VyLmggKi8sCiAJCQkJNTM1MUQ0QUUxREY5MTZB
QzAwODAxMENEIC8qIEZpbGVIYW5kbGUuY3BwICovLAogCQkJCTUzNTFENEFGMURGOTE2QUMwMDgw
MTBDRCAvKiBGaWxlSGFuZGxlLmggKi8sCi0JCQkJNDY4OUYxQUUxMjY3QkFFMTAwRThEMzgwIC8q
IEZpbGVNZXRhZGF0YS5oICovLAogCQkJCTdBMDlDRUVCMUYwMUNDOTMwMEU5M0JEQiAvKiBGaWxl
TW9uaXRvci5jcHAgKi8sCiAJCQkJN0EwOUNFRUMxRjAxQ0M5MzAwRTkzQkRCIC8qIEZpbGVNb25p
dG9yLmggKi8sCiAJCQkJMkVGMUJGRTgxMjFDOUY0MjAwQzI3NjI3IC8qIEZpbGVTdHJlYW0uY3Bw
ICovLAogCQkJCTJFRjFCRkU5MTIxQzlGNDIwMEMyNzYyNyAvKiBGaWxlU3RyZWFtLmggKi8sCiAJ
CQkJMkVGMUJGRjgxMjFDQjBDRTAwQzI3NjI3IC8qIEZpbGVTdHJlYW1DbGllbnQuaCAqLywKLQkJ
CQlDNTdGRURFMDEyMTJFRTlDMDA5N0JFNjUgLyogRmlsZVN5c3RlbS5jcHAgKi8sCi0JCQkJNTE0
QjNGNzIwQzcyMjA0NzAwMDUzMERGIC8qIEZpbGVTeXN0ZW0uaCAqLywKIAkJCQlCQzA3M0JBOTBD
Mzk5QjFGMDAwRjU5NzkgLyogRmxvYXRDb252ZXJzaW9uLmggKi8sCiAJCQkJQ0Q0QkU1MjkxQ0Ux
MzQyNTAwOUQ4N0RBIC8qIEdlbmVyaWNUYXNrUXVldWUuY3BwICovLAogCQkJCUNENjJGQjk0MUFG
MDE4RTcwMDEyRUQ3RCAvKiBHZW5lcmljVGFza1F1ZXVlLmggKi8sCkBAIC0yOTEwNyw3ICsyOTA4
Myw2IEBACiAJCQkJRjU1QjNEQkUxMjUxRjEyRDAwM0VGMjY5IC8qIEZpbGVJbnB1dFR5cGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTk3NkQ2Qzg2MTIyQjhBM0QwMDFGRDFGNyAvKiBGaWxlTGlzdC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJODM1RDU0QzUxRjRERTUzODAwRTYwNjcxIC8qIEZpbGVMaXN0
Q3JlYXRvci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDY4OUYxQUYxMjY3QkFFMTAwRThEMzgwIC8q
IEZpbGVNZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0EwOUNFRjExRjAyMDY5QjAwRTkz
QkRCIC8qIEZpbGVNb25pdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzZENkM4OTEyMkI4QTNE
MDAxRkQxRjcgLyogRmlsZVJlYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkU3NTg0MUUxMjc3
OUFEQTAwNjI2MjhCIC8qIEZpbGVSZWFkZXJMb2FkZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMjkx
MTUsNyArMjkwOTAsNiBAQAogCQkJCTJFREYzNjlEMTIyQzk0QjQwMDJGN0Q0RSAvKiBGaWxlUmVh
ZGVyU3luYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkVGMUJGRUIxMjFDOUY0MjAwQzI3NjI3IC8q
IEZpbGVTdHJlYW0uaCBpbiBIZWFkZXJzICovLAogCQkJCTJFRjFCRkY5MTIxQ0IwQ0UwMEMyNzYy
NyAvKiBGaWxlU3RyZWFtQ2xpZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTRCM0Y3MzBDNzIy
MDQ3MDAwNTMwREYgLyogRmlsZVN5c3RlbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNGQjMzNzEx
RjUwOEE1NDAwOTg2RTU0IC8qIEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODMwMzM1MDIxRjU0OTA1NzAwNERGNzA3IC8qIEZpbGVTeXN0ZW1EaXJlY3RvcnlS
ZWFkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzMDMzNTAzMUY1NDkwNUEwMDRERjcwNyAvKiBG
aWxlU3lzdGVtRW50cmllc0NhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuY3BwCmluZGV4IGQyNTFkMmVjZTFmMThiMjQwYTg4
YmJmYjNhMjJjMmMyNGY4MGY2Y2QuLjhhODNjNGI2ZjZmNTk2MDdkZmE3NzA0ODQyOWQwMmIxZTQy
OTczM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0dDQ29udHJvbGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvR0NDb250cm9sbGVyLmNwcApA
QCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUgIkdDQ29udHJvbGxlci5oIgogCiAjaW5jbHVkZSAi
Q29tbW9uVk0uaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiSlNIVE1MRG9j
dW1lbnQuaCIKICNpbmNsdWRlICJMb2NhdGlvbi5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0hlYXAuaD4KQEAgLTM2LDYgKzM1LDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9WTS5o
PgogI2luY2x1ZGUgPHBhbC9Mb2dnaW5nLmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4K
KyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3ll
ZC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rh
dGFUcmFuc2Zlckl0ZW0uY3BwCmluZGV4IGEzZWNjNWE1YzllMGYzMGQ3NjAzMjgxN2YwZDQ2Mzk2
MzNmZjFhOGIuLjU5Zjk3ODZlZDhjZmE2NDllMDdkZGI3ZDg4NGFjOTI0MzI5NzYzOWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbS5jcHAKQEAgLTM2LDExICszNiwxMSBAQAog
I2luY2x1ZGUgIkRhdGFUcmFuc2Zlckl0ZW1MaXN0LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIK
ICNpbmNsdWRlICJGaWxlLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkZp
bGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW1GaWxlRW50cnku
aCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU3RyaW5n
Q2FsbGJhY2suaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29u
dGVudFJlYWRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250
ZW50UmVhZGVyQ29jb2EubW0KaW5kZXggOTcyMTdmMWQ3NWQwZTU0NmZjZjg0MzFlMmQ0YWY4YmE1
NDNhYjYxYy4uMjU0YTM2OGZhNzc0YWQ2MzcyZDQ2ZjE1M2M1YTk1YzRlZTI0MjhjNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29j
b2EubW0KQEAgLTM3LDcgKzM3LDYgQEAKICNpbXBvcnQgIkVkaXRvci5oIgogI2ltcG9ydCAiRWRp
dG9yQ2xpZW50LmgiCiAjaW1wb3J0ICJGaWxlLmgiCi0jaW1wb3J0ICJGaWxlU3lzdGVtLmgiCiAj
aW1wb3J0ICJGcmFtZS5oIgogI2ltcG9ydCAiRnJhbWVMb2FkZXIuaCIKICNpbXBvcnQgIkZyYW1l
TG9hZGVyQ2xpZW50LmgiCkBAIC02NSw2ICs2NCw3IEBACiAjaW1wb3J0ICJXZWJOU0F0dHJpYnV0
ZWRTdHJpbmdFeHRyYXMuaCIKICNpbXBvcnQgIm1hcmt1cC5oIgogI2ltcG9ydCA8cGFsL3NwaS9j
b2NvYS9OU0F0dHJpYnV0ZWRTdHJpbmdTUEkuaD4KKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+
CiAjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KICNpbXBvcnQgPHd0Zi9VUkxQYXJzZXIuaD4K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAKaW5kZXggYjczZmNkZTc5ZjQ2MDc5MmM5MjZjMDc1ZmJh
YWY2NjQ4YTcyNDEzMS4uYWRiMzBjOTMzY2EyZmIyNWNlZjVkMGNhNDEzNjU2MGJiYTZkODExNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwCkBAIC0yNywxMSArMjcsMTEgQEAKICNpbmNsdWRlICJG
aWxlLmgiCiAKICNpbmNsdWRlICJCbG9iVVJMLmgiCi0jaW5jbHVkZSAiRmlsZU1ldGFkYXRhLmgi
Ci0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIK
ICNpbmNsdWRlICJUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSA8d3RmL0RhdGVN
YXRoLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVNZXRhZGF0YS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxl
U3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZUNvY29hLm1t
IGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlQ29jb2EubW0KaW5kZXggMjBiZTZmN2FlZGVj
YTc1MzQ4MzU2M2IxYmU0ZjkwNjJmYTQzOGEwMy4uNjY0ZjlhNTM2MTNkZjI2Y2ExN2M3MDdjMjFi
NTBjNjQ2NDUyMDRlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlQ29jb2EubW0KQEAgLTI4LDcg
KzI4LDcgQEAKIAogI2lmIEVOQUJMRShGSUxFX1JFUExBQ0VNRU5UKQogCi0jaW1wb3J0ICJGaWxl
U3lzdGVtLmgiCisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogCiAjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICNpbXBvcnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVDb3JlU2VydmljZXMu
aD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCmluZGV4IDAzYWYzYTk2MzQ5NGZh
ZjAwMTJlMjFhOTM4ZjUxOTE3ODAzMDg1MDguLjk5OGY5ZWZhOTRlMmE3NTIxNmJiNGYzOWE3OTY4
NjQ5YzEzMTdkZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlw
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcApAQCAtMzAs
NyArMzAsNiBAQAogI2luY2x1ZGUgIkZpbGUuaCIKICNpbmNsdWRlICJGaWxlTGlzdC5oIgogI2lu
Y2x1ZGUgIkZpbGVMaXN0Q3JlYXRvci5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNs
dWRlICJGb3JtQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSFRN
TElucHV0RWxlbWVudC5oIgpAQCAtNDMsNiArNDIsNyBAQAogI2luY2x1ZGUgIlNldHRpbmdzLmgi
CiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9y
LmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9j
SW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdCdWlsZGVyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVM
aXN0Q3JlYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVMaXN0Q3JlYXRvci5jcHAK
aW5kZXggNzZmNTY1OTcwYWQxZGQ4ZDgxMDZjMjVhNTc5ZTQ1OTFiYWJkNDliOC4uMTU1NmZjMjk5
Y2IyMzczYjBjNTk4OTUyMGE3MmMzMTE2Y2UzOWVhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9GaWxlTGlzdENyZWF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmls
ZUxpc3RDcmVhdG9yLmNwcApAQCAtMjgsOSArMjgsOSBAQAogCiAjaW5jbHVkZSAiRmlsZUNob29z
ZXIuaCIKICNpbmNsdWRlICJGaWxlTGlzdC5oIgotI2luY2x1ZGUgIkZpbGVNZXRhZGF0YS5oIgot
I2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRDb3BpZXIu
aD4KKyNpbmNsdWRlIDx3dGYvRmlsZU1ldGFkYXRhLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0
ZW0uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAppbmRleCA3NTVmMWEy
OWFkN2M1N2NjYzNiZWE1ZWZhMjU1YjY1NmJiZGNjMzA5Li44YTMzZTg4NzBjYzM2YmM2ZGUyZmNh
OGQxZDU4YzRjY2E2YjhmM2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKQEAgLTMzLDcgKzMzLDYgQEAKICNp
bmNsdWRlICJEb2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUgIkRPTUFwcGxpY2F0aW9uQ2FjaGUu
aCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2lu
Y2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFt
ZUxvYWRlckNsaWVudC5oIgpAQCAtNDQsNiArNDMsNyBAQAogI2luY2x1ZGUgIlJlc291cmNlUmVx
dWVzdC5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU3VicmVzb3VyY2VMb2Fk
ZXIuaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9VVUlELmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCmluZGV4IGU4MTQ4M2Mz
NjIzY2QwMzQyNDQ0ODRjZDBmNWZkYzkyNDk1NWFlMzIuLjgyYWRmZjMwMzM1YTJlMmJiOWNhYTdi
NGY2Njg4NGQwOTBlNzk1NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcApAQCAtMzAsMTIgKzMwLDEy
IEBACiAjaW5jbHVkZSAiQXBwbGljYXRpb25DYWNoZUdyb3VwLmgiCiAjaW5jbHVkZSAiQXBwbGlj
YXRpb25DYWNoZUhvc3QuaCIKICNpbmNsdWRlICJBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuaCIK
LSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiU1FMaXRlRGF0YWJhc2VUcmFja2Vy
LmgiCiAjaW5jbHVkZSAiU1FMaXRlU3RhdGVtZW50LmgiCiAjaW5jbHVkZSAiU1FMaXRlVHJhbnNh
Y3Rpb24uaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNlY3VyaXR5
T3JpZ2luRGF0YS5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVVVJ
RC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggZGIxNzdlOGRhZThjNjBlNmU3MTgyMjlmYjNjMDNk
MzZkZmZkNTQ1Mi4uMjZhMjU4MTljMWE3NzQxZDEyY2Q5NjQ2MjlhZDE1OTc5OTg2ZDBkMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuY3BwCkBAIC01MSw3ICs1MSw2IEBACiAjaW5jbHVkZSAiRXZlbnQuaCIKICNp
bmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXh0ZW5zaW9uU3R5bGVTaGVldHMuaCIK
LSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiRm9jdXNDb250cm9sbGVyLmgiCiAj
aW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgpA
QCAtMTIyLDYgKzEyMSw3IEBACiAjaW5jbHVkZSAiV2ViR0xTdGF0ZVRyYWNrZXIuaCIKICNpbmNs
dWRlICJXaGVlbEV2ZW50RGVsdGFGaWx0ZXIuaCIKICNpbmNsdWRlICJXaWRnZXQuaCIKKyNpbmNs
dWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkTGVha0NvdW50
ZXIuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
QmFzZTY0Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2lu
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCmluZGV4IGI1OGZh
YWExNjdhOTY3MjZhYTIxMWZlMWYwMjc0YmM2NmU5NjE2NWIuLjNhZDkyMWNjNTRkZTFmZWZlM2Qx
NTcxZjIyZTI1MzIxMmE4ZGUyMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2Vj
dXJpdHlPcmlnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4u
Y3BwCkBAIC0zMCwxNSArMzAsMTUgQEAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogCiAj
aW5jbHVkZSAiQmxvYlVSTC5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKLSNpbmNsdWRlIDx3
dGYvVVJMLmg+CiAjaW5jbHVkZSAiU2NoZW1lUmVnaXN0cnkuaCIKICNpbmNsdWRlICJTZWN1cml0
eVBvbGljeS5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgogI2luY2x1ZGUgIlRocmVhZGFi
bGVCbG9iUmVnaXN0cnkuaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUg
PHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5j
bHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcAppbmRleCAwNWY4YjE5ZGFlNTg3
OWQwY2RmZGE3Yzc2NDllY2EyYjQ0YzM5OGE2Li40MzBjYjhiMGIzYWMzNmNjYTk2MTFlMGExZjA5
ZTM1YWUxMGIwZDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3Jp
Z2luRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEu
Y3BwCkBAIC0yNyw5ICsyNyw5IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5EYXRhLmgiCiAK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRl
ICJGcmFtZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSA8d3RmL0Zp
bGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVu
YXRlTnVtYmVycy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUhh
bmRsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUhhbmRsZS5oCmluZGV4IGQxMTgz
MDg2OTYzZDIxMjM3YjkwYjFhODI1ODViNzY1YmJjMTNkZjIuLjUwZDgyNGNhZWU5YmExMjQwOTg0
MzVlYTcyMTVkMTUxNzg3ZGJjZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0ZpbGVIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlSGFuZGxlLmgK
QEAgLTI4LDkgKzI4LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJGaWxlU3lzdGVt
LmgiCi0KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lz
dGVtLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vRmlsZU1ldGFkYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxl
TWV0YWRhdGEuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2Q4ODQ5NTNlNzY3NWQ5
MmMwNjM4ZGVjYWQ4NTdjZDQxYTU5YzU2MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlTWV0YWRhdGEuaAor
KysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgPHd0
Zi9XYWxsVGltZS5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBGaWxlTWV0YWRh
dGEgewotICAgIC8vIFRoZSBsYXN0IG1vZGlmaWNhdGlvbiB0aW1lIG9mIHRoZSBmaWxlLCBpbiBz
ZWNvbmRzLgotICAgIFdhbGxUaW1lIG1vZGlmaWNhdGlvblRpbWU7Ci0KLSAgICAvLyBUaGUgbGVu
Z3RoIG9mIHRoZSBmaWxlIGluIGJ5dGVzLgotICAgIGxvbmcgbG9uZyBsZW5ndGg7Ci0KLSAgICBi
b29sIGlzSGlkZGVuOwotCi0gICAgZW51bSBjbGFzcyBUeXBlIHsgRmlsZSwgRGlyZWN0b3J5LCBT
eW1ib2xpY0xpbmsgfTsKLSAgICBUeXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3RyZWFtLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0uY3BwCmluZGV4IGVhOTE3Mzc0YjRj
OGI0YTRlYTA0M2MyOWFiZjU0MzE1OTIyYTg5ZTIuLjg5M2JiMzM5NDc2Y2VmZGE4ZGYxMGJjOTIw
YzBiMzU4MjUxOTE1N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVT
dHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0uY3BwCkBA
IC0yOSwxMCArMjksOCBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLQogI2luY2x1ZGUg
IkZpbGVTdHJlYW0uaCIKIAotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN0cmVhbS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vRmlsZVN0cmVhbS5oCmluZGV4IGFhMDExZWEyM2UxODU0YzRiOTAyMDU5NjI1Mzc2MTNhMWFi
NmUxMmIuLmEyZmI4ZTVmYWEyNTRiYzhlNWNjZTllMWI0YzY2MzFiOGQxYTA1NGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9GaWxlU3RyZWFtLmgKQEAgLTI4LDEwICsyOCw5IEBACiAgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogICovCiAKLSNpZm5kZWYgRmlsZVN0cmVhbV9oCi0jZGVmaW5lIEZpbGVTdHJlYW1faAor
I3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCisjaW5jbHVkZSA8d3RmL0Zp
bGVTeXN0ZW0uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02NCw1ICs2MywzIEBAIHBy
aXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBGaWxlU3Ry
ZWFtX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGVkOWQzN2FhYTEzMTYyODNkYTdlZjIyNDZiM2NhOTQxMGFkMjVkMjIu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNjcgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0u
aCIKLQotI2luY2x1ZGUgIkZpbGVNZXRhZGF0YS5oIgotI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIu
aD4KLSNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgotCi0jaWYgIU9TKFdJTkRPV1Mp
Ci0jaW5jbHVkZSA8ZmNudGwuaD4KLSNpbmNsdWRlIDxzeXMvbW1hbi5oPgotI2luY2x1ZGUgPHN5
cy9zdGF0Lmg+Ci0jaW5jbHVkZSA8dW5pc3RkLmg+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1uYW1lc3BhY2UgRmlsZVN5c3RlbSB7Ci0KLS8vIFRoZSBmb2xsb3dpbmcgbG93ZXIt
QVNDSUkgY2hhcmFjdGVycyBuZWVkIGVzY2FwaW5nIHRvIGJlIHVzZWQgaW4gYSBmaWxlbmFtZQot
Ly8gYWNyb3NzIGFsbCBzeXN0ZW1zLCBpbmNsdWRpbmcgV2luZG93czoKLS8vICAgICAtIFVucHJp
bnRhYmxlIEFTQ0lJICgwMC0xRikKLS8vICAgICAtIFNwYWNlICAgICAgICAgICAgICgyMCkKLS8v
ICAgICAtIERvdWJsZSBxdW90ZSAgICAgICgyMikKLS8vICAgICAtIFBlcmNlbnQgICAgICAgICAg
ICgyNSkgKGVzY2FwZWQgYmVjYXVzZSBpdCBpcyBvdXIgZXNjYXBlIGNoYXJhY3RlcikKLS8vICAg
ICAtIEFzdGVyaXNrICAgICAgICAgICgyQSkKLS8vICAgICAtIFNsYXNoICAgICAgICAgICAgICgy
RikKLS8vICAgICAtIENvbG9uICAgICAgICAgICAgICgzQSkKLS8vICAgICAtIExlc3MtdGhhbiAg
ICAgICAgICgzQykKLS8vICAgICAtIEdyZWF0ZXItdGhhbiAgICAgICgzRSkKLS8vICAgICAtIFF1
ZXN0aW9uIE1hcmsgICAgICgzRikKLS8vICAgICAtIEJhY2tzbGFzaCAgICAgICAgICg1QykKLS8v
ICAgICAtIFBpcGUgICAgICAgICAgICAgICg3QykKLS8vICAgICAtIERlbGV0ZSAgICAgICAgICAg
ICg3RikKLQotc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNFc2NhcGluZ1sxMjhdID0gewotICAgIC8q
IDAwLTA3ICovIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUs
ICB0cnVlLCAKLSAgICAvKiAwOC0wRiAqLyB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1
ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgCi0KLSAgICAvKiAxMC0xNyAqLyB0cnVlLCAgdHJ1ZSwg
IHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgCi0gICAgLyogMTgtMUYg
Ki8gdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUs
IAotCi0gICAgLyogMjAtMjcgKi8gdHJ1ZSwgIGZhbHNlLCB0cnVlLCAgZmFsc2UsIGZhbHNlLCB0
cnVlLCAgZmFsc2UsIGZhbHNlLCAKLSAgICAvKiAyOC0yRiAqLyBmYWxzZSwgZmFsc2UsIHRydWUs
ICBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgCi0gICAgCi0gICAgLyogMzAtMzcg
Ki8gZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNl
LCAKLSAgICAvKiAzOC0zRiAqLyBmYWxzZSwgZmFsc2UsIHRydWUsICBmYWxzZSwgdHJ1ZSwgIGZh
bHNlLCB0cnVlLCAgdHJ1ZSwgCi0gICAgCi0gICAgLyogNDAtNDcgKi8gZmFsc2UsIGZhbHNlLCBm
YWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAKLSAgICAvKiA0OC00RiAq
LyBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2Us
Ci0gICAgCi0gICAgLyogNTAtNTcgKi8gZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNl
LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAKLSAgICAvKiA1OC01RiAqLyBmYWxzZSwgZmFsc2UsIGZh
bHNlLCBmYWxzZSwgdHJ1ZSwgIGZhbHNlLCBmYWxzZSwgZmFsc2UsCi0gICAgCi0gICAgLyogNjAt
NjcgKi8gZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZh
bHNlLCAKLSAgICAvKiA2OC02RiAqLyBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2Us
IGZhbHNlLCBmYWxzZSwgZmFsc2UsCi0gICAgCi0gICAgLyogNzAtNzcgKi8gZmFsc2UsIGZhbHNl
LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAKLSAgICAvKiA3OC03
RiAqLyBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgIGZhbHNlLCBmYWxzZSwgdHJ1
ZSwgCi19OwotCi1zdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkRXNjYXBlVUNoYXIoVUNoYXIgY2hh
cmFjdGVyLCBVQ2hhciBwcmV2aW91c0NoYXJhY3RlciwgVUNoYXIgbmV4dENoYXJhY3RlcikKLXsK
LSAgICBpZiAoY2hhcmFjdGVyIDw9IDEyNykKLSAgICAgICAgcmV0dXJuIG5lZWRzRXNjYXBpbmdb
Y2hhcmFjdGVyXTsKLQotICAgIGlmIChVMTZfSVNfTEVBRChjaGFyYWN0ZXIpICYmICFVMTZfSVNf
VFJBSUwobmV4dENoYXJhY3RlcikpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgaWYgKFUx
Nl9JU19UUkFJTChjaGFyYWN0ZXIpICYmICFVMTZfSVNfTEVBRChwcmV2aW91c0NoYXJhY3Rlcikp
Ci0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1TdHJpbmcg
ZW5jb2RlRm9yRmlsZU5hbWUoY29uc3QgU3RyaW5nJiBpbnB1dFN0cmluZykKLXsKLSAgICB1bnNp
Z25lZCBsZW5ndGggPSBpbnB1dFN0cmluZy5sZW5ndGgoKTsKLSAgICBpZiAoIWxlbmd0aCkKLSAg
ICAgICAgcmV0dXJuIGlucHV0U3RyaW5nOwotCi0gICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7Ci0g
ICAgcmVzdWx0LnJlc2VydmVDYXBhY2l0eShsZW5ndGgpOwotCi0gICAgVUNoYXIgcHJldmlvdXND
aGFyYWN0ZXI7Ci0gICAgVUNoYXIgY2hhcmFjdGVyID0gMDsKLSAgICBVQ2hhciBuZXh0Q2hhcmFj
dGVyID0gaW5wdXRTdHJpbmdbMF07Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0
aDsgKytpKSB7Ci0gICAgICAgIHByZXZpb3VzQ2hhcmFjdGVyID0gY2hhcmFjdGVyOwotICAgICAg
ICBjaGFyYWN0ZXIgPSBuZXh0Q2hhcmFjdGVyOwotICAgICAgICBuZXh0Q2hhcmFjdGVyID0gaSAr
IDEgPCBsZW5ndGggPyBpbnB1dFN0cmluZ1tpICsgMV0gOiAwOwotCi0gICAgICAgIGlmIChzaG91
bGRFc2NhcGVVQ2hhcihjaGFyYWN0ZXIsIHByZXZpb3VzQ2hhcmFjdGVyLCBuZXh0Q2hhcmFjdGVy
KSkgewotICAgICAgICAgICAgaWYgKGNoYXJhY3RlciA8PSAyNTUpIHsKLSAgICAgICAgICAgICAg
ICByZXN1bHQuYXBwZW5kKCclJyk7Ci0gICAgICAgICAgICAgICAgYXBwZW5kQnl0ZUFzSGV4KGNo
YXJhY3RlciwgcmVzdWx0KTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZExpdGVyYWwoIiUrIik7Ci0gICAgICAgICAgICAgICAgYXBwZW5kQnl0ZUFz
SGV4KGNoYXJhY3RlciA+PiA4LCByZXN1bHQpOwotICAgICAgICAgICAgICAgIGFwcGVuZEJ5dGVB
c0hleChjaGFyYWN0ZXIsIHJlc3VsdCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZQot
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChjaGFyYWN0ZXIpOwotICAgIH0KLQotICAgIHJldHVy
biByZXN1bHQudG9TdHJpbmcoKTsKLX0KLQotU3RyaW5nIGRlY29kZUZyb21GaWxlbmFtZShjb25z
dCBTdHJpbmcmIGlucHV0U3RyaW5nKQotewotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGlucHV0U3Ry
aW5nLmxlbmd0aCgpOwotICAgIGlmICghbGVuZ3RoKQotICAgICAgICByZXR1cm4gaW5wdXRTdHJp
bmc7Ci0KLSAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKLSAgICByZXN1bHQucmVzZXJ2ZUNhcGFj
aXR5KGxlbmd0aCk7Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kp
IHsKLSAgICAgICAgaWYgKGlucHV0U3RyaW5nW2ldICE9ICclJykgewotICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZChpbnB1dFN0cmluZ1tpXSk7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgfQotCi0gICAgICAgIC8vIElmIHRoZSBpbnB1dCBzdHJpbmcgaXMgYSB2YWxpZCBlbmNvZGVk
IGZpbGVuYW1lLCBpdCBtdXN0IGJlIGF0IGxlYXN0IDIgY2hhcmFjdGVycyBsb25nZXIKLSAgICAg
ICAgLy8gdGhhbiB0aGUgY3VycmVudCBpbmRleCB0byBhY2NvdW50IGZvciB0aGlzIHBlcmNlbnQg
ZW5jb2RlZCB2YWx1ZS4KLSAgICAgICAgaWYgKGkgKyAyID49IGxlbmd0aCkKLSAgICAgICAgICAg
IHJldHVybiB7IH07Ci0KLSAgICAgICAgaWYgKGlucHV0U3RyaW5nW2krMV0gIT0gJysnKSB7Ci0g
ICAgICAgICAgICBpZiAoIWlzQVNDSUlIZXhEaWdpdChpbnB1dFN0cmluZ1tpICsgMV0pKQotICAg
ICAgICAgICAgICAgIHJldHVybiB7IH07Ci0gICAgICAgICAgICBpZiAoIWlzQVNDSUlIZXhEaWdp
dChpbnB1dFN0cmluZ1tpICsgMl0pKQotICAgICAgICAgICAgICAgIHJldHVybiB7IH07Ci0gICAg
ICAgICAgICByZXN1bHQuYXBwZW5kKHRvQVNDSUlIZXhWYWx1ZShpbnB1dFN0cmluZ1tpICsgMV0s
IGlucHV0U3RyaW5nW2kgKyAyXSkpOwotICAgICAgICAgICAgaSArPSAyOwotICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBJZiB0aGUgaW5wdXQgc3RyaW5nIGlz
IGEgdmFsaWQgZW5jb2RlZCBmaWxlbmFtZSwgaXQgbXVzdCBiZSBhdCBsZWFzdCA1IGNoYXJhY3Rl
cnMgbG9uZ2VyCi0gICAgICAgIC8vIHRoYW4gdGhlIGN1cnJlbnQgaW5kZXggdG8gYWNjb3VudCBm
b3IgdGhpcyBwZXJjZW50IGVuY29kZWQgdmFsdWUuCi0gICAgICAgIGlmIChpICsgNSA+PSBsZW5n
dGgpCi0gICAgICAgICAgICByZXR1cm4geyB9OwotCi0gICAgICAgIGlmICghaXNBU0NJSUhleERp
Z2l0KGlucHV0U3RyaW5nW2kgKyAyXSkpCi0gICAgICAgICAgICByZXR1cm4geyB9OwotICAgICAg
ICBpZiAoIWlzQVNDSUlIZXhEaWdpdChpbnB1dFN0cmluZ1tpICsgM10pKQotICAgICAgICAgICAg
cmV0dXJuIHsgfTsKLSAgICAgICAgaWYgKCFpc0FTQ0lJSGV4RGlnaXQoaW5wdXRTdHJpbmdbaSAr
IDRdKSkKLSAgICAgICAgICAgIHJldHVybiB7IH07Ci0gICAgICAgIGlmICghaXNBU0NJSUhleERp
Z2l0KGlucHV0U3RyaW5nW2kgKyA1XSkpCi0gICAgICAgICAgICByZXR1cm4geyB9OwotCi0gICAg
ICAgIHJlc3VsdC5hcHBlbmQodG9BU0NJSUhleFZhbHVlKGlucHV0U3RyaW5nW2kgKyAyXSwgaW5w
dXRTdHJpbmdbaSArIDNdKSA8PCA4IHwgdG9BU0NJSUhleFZhbHVlKGlucHV0U3RyaW5nW2kgKyA0
XSwgaW5wdXRTdHJpbmdbaSArIDVdKSk7Ci0gICAgICAgIGkgKz0gNTsKLSAgICB9Ci0KLSAgICBy
ZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7Ci19Ci0KLVN0cmluZyBsYXN0Q29tcG9uZW50T2ZQYXRo
SWdub3JpbmdUcmFpbGluZ1NsYXNoKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSNpZiBPUyhXSU5E
T1dTKQotICAgIGNoYXIgcGF0aFNlcGFyYXRvciA9ICdcXCc7Ci0jZWxzZQotICAgIGNoYXIgcGF0
aFNlcGFyYXRvciA9ICcvJzsKLSNlbmRpZgotCi0gICAgYXV0byBwb3NpdGlvbiA9IHBhdGgucmV2
ZXJzZUZpbmQocGF0aFNlcGFyYXRvcik7Ci0gICAgaWYgKHBvc2l0aW9uID09IG5vdEZvdW5kKQot
ICAgICAgICByZXR1cm4gcGF0aDsKLQotICAgIHNpemVfdCBlbmRPZlN1YnN0cmluZyA9IHBhdGgu
bGVuZ3RoKCkgLSAxOwotICAgIGlmIChwb3NpdGlvbiA9PSBlbmRPZlN1YnN0cmluZykgewotICAg
ICAgICAtLWVuZE9mU3Vic3RyaW5nOwotICAgICAgICBwb3NpdGlvbiA9IHBhdGgucmV2ZXJzZUZp
bmQocGF0aFNlcGFyYXRvciwgZW5kT2ZTdWJzdHJpbmcpOwotICAgIH0KLQotICAgIHJldHVybiBw
YXRoLnN1YnN0cmluZyhwb3NpdGlvbiArIDEsIGVuZE9mU3Vic3RyaW5nIC0gcG9zaXRpb24pOwot
fQotCi1ib29sIGFwcGVuZEZpbGVDb250ZW50c1RvRmlsZUhhbmRsZShjb25zdCBTdHJpbmcmIHBh
dGgsIFBsYXRmb3JtRmlsZUhhbmRsZSYgdGFyZ2V0KQotewotICAgIGF1dG8gc291cmNlID0gb3Bl
bkZpbGUocGF0aCwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKLQotICAgIGlmICghaXNIYW5kbGVWYWxp
ZChzb3VyY2UpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBzdGF0aWMgaW50IGJ1ZmZl
clNpemUgPSAxIDw8IDE5OwotICAgIFZlY3RvcjxjaGFyPiBidWZmZXIoYnVmZmVyU2l6ZSk7Ci0K
LSAgICBhdXRvIGZpbGVDbG9zZXIgPSBXVEY6Om1ha2VTY29wZUV4aXQoW3NvdXJjZV0oKSB7Ci0g
ICAgICAgIFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUgPSBzb3VyY2U7Ci0gICAgICAgIGNsb3Nl
RmlsZShoYW5kbGUpOwotICAgIH0pOwotCi0gICAgZG8gewotICAgICAgICBpbnQgcmVhZEJ5dGVz
ID0gcmVhZEZyb21GaWxlKHNvdXJjZSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyU2l6ZSk7Ci0gICAg
ICAgIAotICAgICAgICBpZiAocmVhZEJ5dGVzIDwgMCkKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgICAgICBpZiAod3JpdGVUb0ZpbGUodGFyZ2V0LCBidWZmZXIuZGF0YSgpLCByZWFk
Qnl0ZXMpICE9IHJlYWRCeXRlcykKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAg
ICBpZiAocmVhZEJ5dGVzIDwgYnVmZmVyU2l6ZSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgIH0gd2hpbGUgKHRydWUpOwotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLSAg
ICAKLWJvb2wgZmlsZXNIYXZlU2FtZVZvbHVtZShjb25zdCBTdHJpbmcmIGZpbGVBLCBjb25zdCBT
dHJpbmcmIGZpbGVCKQotewotICAgIGF1dG8gZnNSZXBGaWxlQSA9IGZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihmaWxlQSk7Ci0gICAgYXV0byBmc1JlcEZpbGVCID0gZmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKGZpbGVCKTsKLSAgICAKLSAgICBpZiAoZnNSZXBGaWxlQS5pc051bGwoKSB8fCBmc1Jl
cEZpbGVCLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBib29sIHJlc3Vs
dCA9IGZhbHNlOwotCi0gICAgYXV0byBmaWxlQURldiA9IGdldEZpbGVEZXZpY2VJZChmc1JlcEZp
bGVBKTsKLSAgICBhdXRvIGZpbGVCRGV2ID0gZ2V0RmlsZURldmljZUlkKGZzUmVwRmlsZUIpOwot
Ci0gICAgaWYgKGZpbGVBRGV2ICYmIGZpbGVCRGV2KQotICAgICAgICByZXN1bHQgPSAoZmlsZUFE
ZXYgPT0gZmlsZUJEZXYpOwotICAgIAotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLSNpZiAhUExB
VEZPUk0oTUFDKQotCi12b2lkIHNldE1ldGFkYXRhVVJMKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYpCi17Ci19Ci0KLWJvb2wgY2FuRXhjbHVkZUZyb21CYWNrdXAo
KQotewotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBleGNsdWRlRnJvbUJhY2t1cChjb25z
dCBTdHJpbmcmKQotewotICAgIHJldHVybiBmYWxzZTsKLX0KLQotI2VuZGlmCi0KLU1hcHBlZEZp
bGVEYXRhOjp+TWFwcGVkRmlsZURhdGEoKQotewotI2lmICFPUyhXSU5ET1dTKQotICAgIGlmICgh
bV9maWxlRGF0YSkKLSAgICAgICAgcmV0dXJuOwotICAgIG11bm1hcChtX2ZpbGVEYXRhLCBtX2Zp
bGVTaXplKTsKLSNlbmRpZgotfQotCi1NYXBwZWRGaWxlRGF0YTo6TWFwcGVkRmlsZURhdGEoY29u
c3QgU3RyaW5nJiBmaWxlUGF0aCwgYm9vbCYgc3VjY2VzcykKLXsKLSNpZiBPUyhXSU5ET1dTKQot
ICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgbWFwcGluZwotICAgIHN1Y2Nlc3MgPSBmYWxzZTsKLSNl
bHNlCi0gICAgQ1N0cmluZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWxlUGF0
aCk7Ci0gICAgaW50IGZkID0gIWZzUmVwLmlzTnVsbCgpID8gb3Blbihmc1JlcC5kYXRhKCksIE9f
UkRPTkxZKSA6IC0xOwotICAgIGlmIChmZCA8IDApIHsKLSAgICAgICAgc3VjY2VzcyA9IGZhbHNl
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgc3RydWN0IHN0YXQgZmlsZVN0YXQ7Ci0g
ICAgaWYgKGZzdGF0KGZkLCAmZmlsZVN0YXQpKSB7Ci0gICAgICAgIGNsb3NlKGZkKTsKLSAgICAg
ICAgc3VjY2VzcyA9IGZhbHNlOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgdW5zaWdu
ZWQgc2l6ZTsKLSAgICBpZiAoIVdURjo6Y29udmVydFNhZmVseShmaWxlU3RhdC5zdF9zaXplLCBz
aXplKSkgewotICAgICAgICBjbG9zZShmZCk7Ci0gICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghc2l6ZSkgewotICAgICAgICBjbG9zZShm
ZCk7Ci0gICAgICAgIHN1Y2Nlc3MgPSB0cnVlOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgdm9pZCogZGF0YSA9IG1tYXAoMCwgc2l6ZSwgUFJPVF9SRUFELCBNQVBfRklMRSB8IE1BUF9T
SEFSRUQsIGZkLCAwKTsKLSAgICBjbG9zZShmZCk7Ci0KLSAgICBpZiAoZGF0YSA9PSBNQVBfRkFJ
TEVEKSB7Ci0gICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIHN1Y2Nlc3MgPSB0cnVlOwotICAgIG1fZmlsZURhdGEgPSBkYXRhOwotICAgIG1fZmls
ZVNpemUgPSBzaXplOwotI2VuZGlmCi19Ci0KLVBsYXRmb3JtRmlsZUhhbmRsZSBvcGVuQW5kTG9j
a0ZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUgb3Blbk1vZGUsIE9wdGlvblNl
dDxGaWxlTG9ja01vZGU+IGxvY2tNb2RlKQotewotICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUo
cGF0aCwgb3Blbk1vZGUpOwotICAgIGlmIChoYW5kbGUgPT0gaW52YWxpZFBsYXRmb3JtRmlsZUhh
bmRsZSkKLSAgICAgICAgcmV0dXJuIGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7Ci0KLSNpZiBV
U0UoRklMRV9MT0NLKQotICAgIGJvb2wgbG9ja2VkID0gbG9ja0ZpbGUoaGFuZGxlLCBsb2NrTW9k
ZSk7Ci0gICAgQVNTRVJUX1VOVVNFRChsb2NrZWQsIGxvY2tlZCk7Ci0jZWxzZQotICAgIFVOVVNF
RF9QQVJBTShsb2NrTW9kZSk7Ci0jZW5kaWYKLQotICAgIHJldHVybiBoYW5kbGU7Ci19Ci0KLXZv
aWQgdW5sb2NrQW5kQ2xvc2VGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUpCi17Ci0jaWYg
VVNFKEZJTEVfTE9DSykKLSAgICBib29sIHVubG9ja2VkID0gdW5sb2NrRmlsZShoYW5kbGUpOwot
ICAgIEFTU0VSVF9VTlVTRUQodW5sb2NrZWQsIHVubG9ja2VkKTsKLSNlbmRpZgotICAgIGNsb3Nl
RmlsZShoYW5kbGUpOwotfQotCi1ib29sIGZpbGVJc0RpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBh
dGgsIFNob3VsZEZvbGxvd1N5bWJvbGljTGlua3Mgc2hvdWxkRm9sbG93U3ltYm9saWNMaW5rcykK
LXsKLSAgICBhdXRvIG1ldGFkYXRhID0gc2hvdWxkRm9sbG93U3ltYm9saWNMaW5rcyA9PSBTaG91
bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpZZXMgPyBmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5r
cyhwYXRoKSA6IGZpbGVNZXRhZGF0YShwYXRoKTsKLSAgICBpZiAoIW1ldGFkYXRhKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIG1ldGFkYXRhLnZhbHVlKCkudHlwZSA9PSBGaWxl
TWV0YWRhdGE6OlR5cGU6OkRpcmVjdG9yeTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgRmlsZVN5c3Rl
bQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vRmlsZVN5c3RlbS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzY2ViY2FhMDUzOWI1OWQ5M2U3MmUwOTg0
MGIyM2IxZGFjNjM4MTFiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaAorKysgL2Rldi9udWxs
CkBAIC0xLDIyNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9y
YSwgTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE1IENhbm9u
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAotICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAotICogMy4gIE5l
aXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgot
ICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
Ci0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0g
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSA8dGltZS5oPgotI2lu
Y2x1ZGUgPHV0aWxpdHk+Ci0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYv
T3B0aW9uU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi9XYWxs
VGltZS5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi0jaWYgVVNFKENGKQot
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLSNlbmRpZgotCi0jaWYgVVNFKENGKQotdHlwZWRl
ZiBjb25zdCBzdHJ1Y3QgX19DRkRhdGEqIENGRGF0YVJlZjsKLSNlbmRpZgotCi1PQkpDX0NMQVNT
IE5TU3RyaW5nOwotCi0jaWYgUExBVEZPUk0oV0lOKQotdHlwZWRlZiB2b2lkICpIQU5ETEU7Ci0j
ZW5kaWYKLQotI2lmIFVTRShHTElCKQotdHlwZWRlZiBzdHJ1Y3QgX0dGaWxlSU9TdHJlYW0gR0Zp
bGVJT1N0cmVhbTsKLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBGaWxl
TWV0YWRhdGE7Ci0KLW5hbWVzcGFjZSBGaWxlU3lzdGVtIHsKLQotLy8gUGxhdGZvcm1GaWxlSGFu
ZGxlCi0jaWYgVVNFKEdMSUIpICYmICFQTEFURk9STShXSU4pCi10eXBlZGVmIEdGaWxlSU9TdHJl
YW0qIFBsYXRmb3JtRmlsZUhhbmRsZTsKLWNvbnN0IFBsYXRmb3JtRmlsZUhhbmRsZSBpbnZhbGlk
UGxhdGZvcm1GaWxlSGFuZGxlID0gMDsKLSNlbGlmIFBMQVRGT1JNKFdJTikKLXR5cGVkZWYgSEFO
RExFIFBsYXRmb3JtRmlsZUhhbmRsZTsKLS8vIEZJWE1FOiAtMSBpcyBJTlZBTElEX0hBTkRMRV9W
QUxVRSwgZGVmaW5lZCBpbiA8d2luYmFzZS5oPi4gQ2hyb21pdW0gdHJpZXMgdG8KLS8vIGF2b2lk
IHVzaW5nIFdpbmRvd3MgaGVhZGVycyBpbiBoZWFkZXJzLiAgV2UnZCByYXRoZXIgbW92ZSB0aGlz
IGludG8gdGhlIC5jcHAuCi1jb25zdCBQbGF0Zm9ybUZpbGVIYW5kbGUgaW52YWxpZFBsYXRmb3Jt
RmlsZUhhbmRsZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8SEFORExFPigtMSk7Ci0jZWxzZQotdHlwZWRl
ZiBpbnQgUGxhdGZvcm1GaWxlSGFuZGxlOwotY29uc3QgUGxhdGZvcm1GaWxlSGFuZGxlIGludmFs
aWRQbGF0Zm9ybUZpbGVIYW5kbGUgPSAtMTsKLSNlbmRpZgotCi1lbnVtIGNsYXNzIEZpbGVPcGVu
TW9kZSB7Ci0gICAgUmVhZCwKLSAgICBXcml0ZSwKLSNpZiBPUyhEQVJXSU4pCi0gICAgRXZlbnRz
T25seSwKLSNlbmRpZgotfTsKLQotZW51bSBjbGFzcyBGaWxlU2Vla09yaWdpbiB7Ci0gICAgQmVn
aW5uaW5nLAotICAgIEN1cnJlbnQsCi0gICAgRW5kLAotfTsKLQotZW51bSBjbGFzcyBGaWxlTG9j
a01vZGUgewotICAgIFNoYXJlZCA9IDEgPDwgMCwKLSAgICBFeGNsdXNpdmUgPSAxIDw8IDEsCi0g
ICAgTm9uYmxvY2tpbmcgPSAxIDw8IDIsCi19OwotCi1lbnVtIGNsYXNzIFNob3VsZEZvbGxvd1N5
bWJvbGljTGlua3MgeyBObywgWWVzIH07Ci0KLVdFQkNPUkVfRVhQT1JUIGJvb2wgZmlsZUV4aXN0
cyhjb25zdCBTdHJpbmcmKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgZGVsZXRlRmlsZShjb25zdCBT
dHJpbmcmKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgZGVsZXRlRW1wdHlEaXJlY3RvcnkoY29uc3Qg
U3RyaW5nJik7Ci1XRUJDT1JFX0VYUE9SVCBib29sIG1vdmVGaWxlKGNvbnN0IFN0cmluZyYgb2xk
UGF0aCwgY29uc3QgU3RyaW5nJiBuZXdQYXRoKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgZ2V0Rmls
ZVNpemUoY29uc3QgU3RyaW5nJiwgbG9uZyBsb25nJiByZXN1bHQpOwotV0VCQ09SRV9FWFBPUlQg
Ym9vbCBnZXRGaWxlU2l6ZShQbGF0Zm9ybUZpbGVIYW5kbGUsIGxvbmcgbG9uZyYgcmVzdWx0KTsK
LVdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlTW9kaWZpY2F0aW9uVGlt
ZShjb25zdCBTdHJpbmcmKTsKLVdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPFdhbGxUaW1lPiBnZXRG
aWxlQ3JlYXRpb25UaW1lKGNvbnN0IFN0cmluZyYpOyAvLyBOb3QgYWxsIHBsYXRmb3JtcyBzdG9y
ZSBmaWxlIGNyZWF0aW9uIHRpbWUuCi1XRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxGaWxlTWV0YWRh
dGE+IGZpbGVNZXRhZGF0YShjb25zdCBTdHJpbmcmIHBhdGgpOwotV0VCQ09SRV9FWFBPUlQgT3B0
aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyhjb25zdCBT
dHJpbmcmIHBhdGgpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCBmaWxlSXNEaXJlY3RvcnkoY29uc3Qg
U3RyaW5nJiwgU2hvdWxkRm9sbG93U3ltYm9saWNMaW5rcyk7Ci1XRUJDT1JFX0VYUE9SVCBTdHJp
bmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3Ry
aW5nJiBjb21wb25lbnQpOwotU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMoU3RyaW5n
VmlldyBwYXRoLCBjb25zdCBWZWN0b3I8U3RyaW5nVmlldz4mIGNvbXBvbmVudHMpOwotU3RyaW5n
IGxhc3RDb21wb25lbnRPZlBhdGhJZ25vcmluZ1RyYWlsaW5nU2xhc2goY29uc3QgU3RyaW5nJiBw
YXRoKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgbWFrZUFsbERpcmVjdG9yaWVzKGNvbnN0IFN0cmlu
ZyYgcGF0aCk7Ci1TdHJpbmcgaG9tZURpcmVjdG9yeVBhdGgoKTsKLVdFQkNPUkVfRVhQT1JUIFN0
cmluZyBwYXRoR2V0RmlsZU5hbWUoY29uc3QgU3RyaW5nJik7Ci1XRUJDT1JFX0VYUE9SVCBTdHJp
bmcgZGlyZWN0b3J5TmFtZShjb25zdCBTdHJpbmcmKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgZ2V0
Vm9sdW1lRnJlZVNwYWNlKGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90Jik7Ci1XRUJDT1JFX0VYUE9S
VCBPcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29uc3QgQ1N0cmluZyYpOwotV0VC
Q09SRV9FWFBPUlQgYm9vbCBjcmVhdGVTeW1ib2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQ
YXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGljTGlua1BhdGgpOwotCi1XRUJDT1JFX0VYUE9SVCB2
b2lkIHNldE1ldGFkYXRhVVJMKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiB1cmxT
dHJpbmcsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIgPSB7IH0pOwotCi1ib29sIGNhbkV4Y2x1ZGVG
cm9tQmFja3VwKCk7IC8vIFJldHVybnMgdHJ1ZSBpZiBhbnkgZmlsZSBjYW4gZXZlciBiZSBleGNs
dWRlZCBmcm9tIGJhY2t1cC4KLWJvb2wgZXhjbHVkZUZyb21CYWNrdXAoY29uc3QgU3RyaW5nJik7
IC8vIFJldHVybnMgdHJ1ZSBpZiBzdWNjZXNzZnVsLgotCi1XRUJDT1JFX0VYUE9SVCBWZWN0b3I8
U3RyaW5nPiBsaXN0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBm
aWx0ZXIgPSBTdHJpbmcoKSk7Ci0KLVdFQkNPUkVfRVhQT1JUIENTdHJpbmcgZmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYpOwotU3RyaW5nIHN0cmluZ0Zyb21GaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oY29uc3QgY2hhciopOwotCi1pbmxpbmUgYm9vbCBpc0hhbmRsZVZhbGlk
KGNvbnN0IFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKSB7IHJldHVybiBoYW5kbGUgIT0gaW52
YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsgfQotCi0vLyBQcmVmaXggaXMgd2hhdCB0aGUgZmlsZW5h
bWUgc2hvdWxkIGJlIHByZWZpeGVkIHdpdGgsIG5vdCB0aGUgZnVsbCBwYXRoLgotV0VCQ09SRV9F
WFBPUlQgU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0
Zm9ybUZpbGVIYW5kbGUmKTsKLVdFQkNPUkVfRVhQT1JUIFBsYXRmb3JtRmlsZUhhbmRsZSBvcGVu
RmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVPcGVuTW9kZSk7Ci1XRUJDT1JFX0VYUE9SVCB2
b2lkIGNsb3NlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUmKTsKLS8vIFJldHVybnMgdGhlIHJlc3Vs
dGluZyBvZmZzZXQgZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaWxlIGlmIHN1Y2Nlc3NmdWws
IC0xIG90aGVyd2lzZS4KLVdFQkNPUkVfRVhQT1JUIGxvbmcgbG9uZyBzZWVrRmlsZShQbGF0Zm9y
bUZpbGVIYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQsIEZpbGVTZWVrT3JpZ2luKTsKLWJvb2wgdHJ1
bmNhdGVGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCk7Ci0vLyBSZXR1
cm5zIG51bWJlciBvZiBieXRlcyBhY3R1YWxseSByZWFkIGlmIHN1Y2Nlc3NmdWwsIC0xIG90aGVy
d2lzZS4KLVdFQkNPUkVfRVhQT1JUIGludCB3cml0ZVRvRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUs
IGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpOwotLy8gUmV0dXJucyBudW1iZXIgb2YgYnl0
ZXMgYWN0dWFsbHkgd3JpdHRlbiBpZiBzdWNjZXNzZnVsLCAtMSBvdGhlcndpc2UuCi1XRUJDT1JF
X0VYUE9SVCBpbnQgcmVhZEZyb21GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgY2hhciogZGF0YSwg
aW50IGxlbmd0aCk7Ci0KLVdFQkNPUkVfRVhQT1JUIFBsYXRmb3JtRmlsZUhhbmRsZSBvcGVuQW5k
TG9ja0ZpbGUoY29uc3QgU3RyaW5nJiwgRmlsZU9wZW5Nb2RlLCBPcHRpb25TZXQ8RmlsZUxvY2tN
b2RlPiA9IEZpbGVMb2NrTW9kZTo6RXhjbHVzaXZlKTsKLVdFQkNPUkVfRVhQT1JUIHZvaWQgdW5s
b2NrQW5kQ2xvc2VGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSk7Ci0KLS8vIEFwcGVuZHMgdGhlIGNv
bnRlbnRzIG9mIHRoZSBmaWxlIGZvdW5kIGF0ICdwYXRoJyB0byB0aGUgb3BlbiBQbGF0Zm9ybUZp
bGVIYW5kbGUuCi0vLyBSZXR1cm5zIHRydWUgaWYgdGhlIHdyaXRlIHdhcyBzdWNjZXNzZnVsLCBm
YWxzZSBpZiBpdCB3YXMgbm90LgotYm9vbCBhcHBlbmRGaWxlQ29udGVudHNUb0ZpbGVIYW5kbGUo
Y29uc3QgU3RyaW5nJiBwYXRoLCBQbGF0Zm9ybUZpbGVIYW5kbGUmKTsKLQotLy8gSGFyZCBsaW5r
cyBhIGZpbGUgaWYgcG9zc2libGUsIGNvcGllcyBpdCBpZiBub3QuCi1ib29sIGhhcmRMaW5rT3JD
b3B5RmlsZShjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbik7
Ci0KLSNpZiBVU0UoRklMRV9MT0NLKQotV0VCQ09SRV9FWFBPUlQgYm9vbCBsb2NrRmlsZShQbGF0
Zm9ybUZpbGVIYW5kbGUsIE9wdGlvblNldDxGaWxlTG9ja01vZGU+KTsKLVdFQkNPUkVfRVhQT1JU
IGJvb2wgdW5sb2NrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUpOwotI2VuZGlmCi0KLS8vIEVuY29k
ZSBhIHN0cmluZyBmb3IgdXNlIHdpdGhpbiBhIGZpbGUgbmFtZS4KLVdFQkNPUkVfRVhQT1JUIFN0
cmluZyBlbmNvZGVGb3JGaWxlTmFtZShjb25zdCBTdHJpbmcmKTsKLVdFQkNPUkVfRVhQT1JUIFN0
cmluZyBkZWNvZGVGcm9tRmlsZW5hbWUoY29uc3QgU3RyaW5nJik7Ci0KLVdFQkNPUkVfRVhQT1JU
IGJvb2wgZmlsZXNIYXZlU2FtZVZvbHVtZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsK
LQotI2lmIFVTRShDRikKLVJldGFpblB0cjxDRlVSTFJlZj4gcGF0aEFzVVJMKGNvbnN0IFN0cmlu
ZyYpOwotI2VuZGlmCi0KLSNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKLVN0cmlu
ZyBmaWxlbmFtZUZvckRpc3BsYXkoY29uc3QgU3RyaW5nJik7Ci0jZW5kaWYKLQotI2lmIFBMQVRG
T1JNKFdJTikKLVdFQkNPUkVfRVhQT1JUIFN0cmluZyBsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VE
aXJlY3RvcnkoKTsKLVN0cmluZyByb2FtaW5nVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgp
OwotI2VuZGlmCi0KLSNpZiBQTEFURk9STShDT0NPQSkKLVdFQkNPUkVfRVhQT1JUIE5TU3RyaW5n
ICpjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoTlNTdHJpbmcgKmRpcmVjdG9yeVByZWZpeCk7Ci1X
RUJDT1JFX0VYUE9SVCBib29sIGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYp
OwotI2VuZGlmCi0KLSNpZiBQTEFURk9STShXSU5fQ0FJUk8pCi1XRUJDT1JFX0VYUE9SVCBTdHJp
bmcgY3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KCk7Ci1XRUJDT1JFX0VYUE9SVCBib29sIGRlbGV0
ZU5vbkVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpOwotI2VuZGlmCi0KLVdFQkNPUkVfRVhQ
T1JUIFN0cmluZyByZWFsUGF0aChjb25zdCBTdHJpbmcmKTsKLQotY2xhc3MgTWFwcGVkRmlsZURh
dGEgewotcHVibGljOgotICAgIE1hcHBlZEZpbGVEYXRhKCkgeyB9Ci0gICAgTWFwcGVkRmlsZURh
dGEoTWFwcGVkRmlsZURhdGEmJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgTWFwcGVkRmlsZURhdGEo
Y29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgYm9vbCYgc3VjY2Vzcyk7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgfk1hcHBlZEZpbGVEYXRhKCk7Ci0gICAgTWFwcGVkRmlsZURhdGEmIG9wZXJhdG9yPShNYXBw
ZWRGaWxlRGF0YSYmKTsKLQotICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJl
dHVybiAhIW1fZmlsZURhdGE7IH0KLSAgICBjb25zdCB2b2lkKiBkYXRhKCkgY29uc3QgeyByZXR1
cm4gbV9maWxlRGF0YTsgfQotICAgIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX2Zp
bGVTaXplOyB9Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCogbV9maWxlRGF0YSB7IG51bGxwdHIgfTsK
LSAgICB1bnNpZ25lZCBtX2ZpbGVTaXplIHsgMCB9OwotfTsKLQotaW5saW5lIE1hcHBlZEZpbGVE
YXRhOjpNYXBwZWRGaWxlRGF0YShNYXBwZWRGaWxlRGF0YSYmIG90aGVyKQotICAgIDogbV9maWxl
RGF0YShzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fZmlsZURhdGEsIG51bGxwdHIpKQotICAgICwgbV9m
aWxlU2l6ZShzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fZmlsZVNpemUsIDApKQotewotfQotCi1pbmxp
bmUgTWFwcGVkRmlsZURhdGEmIE1hcHBlZEZpbGVEYXRhOjpvcGVyYXRvcj0oTWFwcGVkRmlsZURh
dGEmJiBvdGhlcikKLXsKLSAgICBtX2ZpbGVEYXRhID0gc3RkOjpleGNoYW5nZShvdGhlci5tX2Zp
bGVEYXRhLCBudWxscHRyKTsKLSAgICBtX2ZpbGVTaXplID0gc3RkOjpleGNoYW5nZShvdGhlci5t
X2ZpbGVTaXplLCAwKTsKLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEZp
bGVTeXN0ZW0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
aGFyZWRCdWZmZXIuaAppbmRleCA4MTMxOGU4YjI5YWU1YTBmNWI5NjAzYzgyNTU3OTFjZGJjMjBh
NGUxLi5lYzM3MTM0MWFiOTQ5NWI3ZDM1NzYxMzUxYjJiMDliMTM1YTNlZjNiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaApAQCAtMjYsOCArMjYsOCBAQAogCiAjcHJhZ21h
IG9uY2UKIAotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9BcnJheUJ1ZmZlci5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0
Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU291cmNlc0dMaWIudHh0IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU291cmNlc0dM
aWIudHh0CmluZGV4IDI3NzNjMmEwODhiNjBmYjEzOTY5MmQ1ZjQwZDBiZWZjM2ZlYzNjYzQuLjA5
MGI4NGE0OGMxMDNkM2Q1OTMxNDFkOTBlMmJiYjRhYmYyYzViYTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NvdXJjZXNHTGliLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Tb3VyY2VzR0xpYi50eHQKQEAgLTI1LDcgKzI1LDYgQEAgcGxhdGZvcm0vYXVkaW8v
Z2xpYi9BdWRpb0J1c0dMaWIuY3BwCiAKIHBsYXRmb3JtL2dsaWIvRXZlbnRMb29wR2xpYi5jcHAK
IHBsYXRmb3JtL2dsaWIvRmlsZU1vbml0b3JHTGliLmNwcAotcGxhdGZvcm0vZ2xpYi9GaWxlU3lz
dGVtR2xpYi5jcHAKIHBsYXRmb3JtL2dsaWIvS2V5ZWREZWNvZGVyR2xpYi5jcHAKIHBsYXRmb3Jt
L2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAKIHBsYXRmb3JtL2dsaWIvTG93UG93ZXJNb2RlTm90
aWZpZXJHTGliLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvRmls
ZVN5c3RlbUNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0ZpbGVTeXN0ZW1DRi5j
cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA4NDcwYTA4ZmE1ZDJmNDUyZTZjOTM4
NzAxYzZkOTI2Y2E2MDlmMDMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvRmlsZVN5c3RlbUNGLmNwcAorKysg
L2Rldi9udWxsCkBAIC0xLDc0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIw
MTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICog
My4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1l
cyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkZp
bGVTeXN0ZW0uaCIKLQotI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGU3RyaW5nLmg+Ci0jaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1D
U3RyaW5nIEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcm
IHBhdGgpCi17Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZlN0cmluZyA9IHBhdGguY3Jl
YXRlQ0ZTdHJpbmcoKTsKLQotICAgIGlmICghY2ZTdHJpbmcpCi0gICAgICAgIHJldHVybiBDU3Ry
aW5nKCk7Ci0KLSAgICBDRkluZGV4IHNpemUgPSBDRlN0cmluZ0dldE1heGltdW1TaXplT2ZGaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oY2ZTdHJpbmcuZ2V0KCkpOwotCi0gICAgVmVjdG9yPGNoYXI+
IGJ1ZmZlcihzaXplKTsKLQotICAgIGlmICghQ0ZTdHJpbmdHZXRGaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oY2ZTdHJpbmcuZ2V0KCksIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpKSB7Ci0g
ICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGdldCBmaWxlc3lzdGVtIHJlcHJlc2VudGF0aW9u
IHRvIGNyZWF0ZSBDU3RyaW5nIGZyb20gY2ZTdHJpbmciKTsKLSAgICAgICAgcmV0dXJuIENTdHJp
bmcoKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gQ1N0cmluZyhidWZmZXIuZGF0YSgpLCBzdHJsZW4o
YnVmZmVyLmRhdGEoKSkpOwotfQotCi1TdHJpbmcgRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBjaGFyKiBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24p
Ci17Ci0gICAgcmV0dXJuIGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoRmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGtDRkFsbG9jYXRvckRlZmF1bHQsIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbikp
LmdldCgpOwotfQotCi1SZXRhaW5QdHI8Q0ZVUkxSZWY+IEZpbGVTeXN0ZW06OnBhdGhBc1VSTChj
b25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgQ0ZVUkxQYXRoU3R5bGUgcGF0aFN0eWxlOwotI2lm
IFBMQVRGT1JNKFdJTikKLSAgICBwYXRoU3R5bGUgPSBrQ0ZVUkxXaW5kb3dzUGF0aFN0eWxlOwot
I2Vsc2UKLSAgICBwYXRoU3R5bGUgPSBrQ0ZVUkxQT1NJWFBhdGhTdHlsZTsKLSNlbmRpZgotICAg
IHJldHVybiBhZG9wdENGKENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKDAsIHBhdGguY3Jl
YXRlQ0ZTdHJpbmcoKS5nZXQoKSwgcGF0aFN0eWxlLCBGQUxTRSkpOwotfQotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9G
aWxlTW9uaXRvckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRmlsZU1v
bml0b3JDb2NvYS5tbQppbmRleCAxYWIzYzMzNGM2OWRmZmEzNjQ4YWIwMGE0NTU4ZDlmMjdlNDMw
NjAwLi5jYzdmZTZiNmNkZTEwZWQ0Y2E0NTZlNDZiZTI4YTA0ZjY4NzI0NzRhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9GaWxlTW9uaXRvckNvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0ZpbGVNb25pdG9yQ29jb2EubW0KQEAgLTI2
LDkgKzI2LDkgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiRmlsZU1vbml0b3IuaCIK
IAotI2ltcG9ydCAiRmlsZVN5c3RlbS5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCA8
d3RmL0Jsb2NrUHRyLmg+CisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9GaWxlU3lzdGVtQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9GaWxl
U3lzdGVtQ29jb2EubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzOGIwYzgzMDNl
N2JhMTBkNDA1MzNjYmNkMTVkYTMzYjA5NjllM2MuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRmlsZVN5
c3RlbUNvY29hLm1tCisrKyAvZGV2L251bGwKQEAgLTEsMTQzICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDctMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLiAKLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLiAKLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJB
cHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAK
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25m
aWcuaCIKLSNpbXBvcnQgIkZpbGVTeXN0ZW0uaCIKLQotQGludGVyZmFjZSBXZWJGaWxlTWFuYWdl
ckRlbGVnYXRlIDogTlNPYmplY3QgPE5TRmlsZU1hbmFnZXJEZWxlZ2F0ZT4KLUBlbmQKLQotQGlt
cGxlbWVudGF0aW9uIFdlYkZpbGVNYW5hZ2VyRGVsZWdhdGUKLQotLSAoQk9PTClmaWxlTWFuYWdl
cjooTlNGaWxlTWFuYWdlciAqKWZpbGVNYW5hZ2VyIHNob3VsZFByb2NlZWRBZnRlckVycm9yOihO
U0Vycm9yICopZXJyb3IgbW92aW5nSXRlbUF0VVJMOihOU1VSTCAqKXNyY1VSTCB0b1VSTDooTlNV
UkwgKilkc3RVUkwKLXsKLSAgICBVTlVTRURfUEFSQU0oZmlsZU1hbmFnZXIpOwotICAgIFVOVVNF
RF9QQVJBTShzcmNVUkwpOwotICAgIFVOVVNFRF9QQVJBTShkc3RVUkwpOyAgICAKLSAgICByZXR1
cm4gZXJyb3IuY29kZSA9PSBOU0ZpbGVXcml0ZUZpbGVFeGlzdHNFcnJvcjsKLX0KLQotQGVuZAot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBGaWxlU3lzdGVtIHsKLQotU3RyaW5n
IGhvbWVEaXJlY3RvcnlQYXRoKCkKLXsKLSAgICByZXR1cm4gTlNIb21lRGlyZWN0b3J5KCk7Ci19
Ci0KLVN0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZv
cm1GaWxlSGFuZGxlJiBwbGF0Zm9ybUZpbGVIYW5kbGUpCi17Ci0gICAgcGxhdGZvcm1GaWxlSGFu
ZGxlID0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKLSAgICAKLSAgICBWZWN0b3I8Y2hhcj4g
dGVtcG9yYXJ5RmlsZVBhdGgoUEFUSF9NQVgpOwotICAgIGlmICghY29uZnN0cihfQ1NfREFSV0lO
X1VTRVJfVEVNUF9ESVIsIHRlbXBvcmFyeUZpbGVQYXRoLmRhdGEoKSwgdGVtcG9yYXJ5RmlsZVBh
dGguc2l6ZSgpKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgLy8gU2hyaW5rIHRo
ZSB2ZWN0b3IuICAgCi0gICAgdGVtcG9yYXJ5RmlsZVBhdGguc2hyaW5rKHN0cmxlbih0ZW1wb3Jh
cnlGaWxlUGF0aC5kYXRhKCkpKTsKLQotICAgIC8vIEZJWE1FOiBDaGFuZ2UgdG8gYSBydW50aW1l
IGFzc2VydGlvbiB0aGF0IHRoZSBwYXRoIGVuZHMgd2l0aCBhIHNsYXNoIG9uY2UgPHJkYXI6Ly9w
cm9ibGVtLzIzNTc5MDc3PiBpcwotICAgIC8vIGZpeGVkIGluIGFsbCBpT1MgU2ltdWxhdG9yIHZl
cnNpb25zIHRoYXQgd2UgdXNlLgotICAgIGlmICh0ZW1wb3JhcnlGaWxlUGF0aC5sYXN0KCkgIT0g
Jy8nKQotICAgICAgICB0ZW1wb3JhcnlGaWxlUGF0aC5hcHBlbmQoJy8nKTsKLQotICAgIC8vIEFw
cGVuZCB0aGUgZmlsZSBuYW1lLgotICAgIENTdHJpbmcgcHJlZml4VXRmOCA9IHByZWZpeC51dGY4
KCk7Ci0gICAgdGVtcG9yYXJ5RmlsZVBhdGguYXBwZW5kKHByZWZpeFV0ZjguZGF0YSgpLCBwcmVm
aXhVdGY4Lmxlbmd0aCgpKTsKLSAgICB0ZW1wb3JhcnlGaWxlUGF0aC5hcHBlbmQoIlhYWFhYWCIs
IDYpOwotICAgIHRlbXBvcmFyeUZpbGVQYXRoLmFwcGVuZCgnXDAnKTsKLQotICAgIHBsYXRmb3Jt
RmlsZUhhbmRsZSA9IG1rc3RlbXAodGVtcG9yYXJ5RmlsZVBhdGguZGF0YSgpKTsKLSAgICBpZiAo
cGxhdGZvcm1GaWxlSGFuZGxlID09IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCi0gICAgICAg
IHJldHVybiBTdHJpbmcoKTsKLQotICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KHRlbXBvcmFy
eUZpbGVQYXRoLmRhdGEoKSk7Ci19Ci0KLWJvb2wgbW92ZUZpbGUoY29uc3QgU3RyaW5nJiBvbGRQ
YXRoLCBjb25zdCBTdHJpbmcmIG5ld1BhdGgpCi17Ci0gICAgLy8gT3ZlcndyaXRlIGV4aXN0aW5n
IGZpbGVzLgotICAgIGF1dG8gbWFuYWdlciA9IGFkb3B0TlMoW1tOU0ZpbGVNYW5hZ2VyIGFsbG9j
XSBpbml0XSk7Ci0gICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tXZWJGaWxlTWFuYWdlckRl
bGVnYXRlIGFsbG9jXSBpbml0XSk7Ci0gICAgW21hbmFnZXIgc2V0RGVsZWdhdGU6ZGVsZWdhdGUu
Z2V0KCldOwotICAgIAotICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOwotICAgIGJvb2wgc3VjY2Vz
cyA9IFttYW5hZ2VyIG1vdmVJdGVtQXRVUkw6W05TVVJMIGZpbGVVUkxXaXRoUGF0aDpvbGRQYXRo
XSB0b1VSTDpbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOm5ld1BhdGhdIGVycm9yOiZlcnJvcl07Ci0g
ICAgaWYgKCFzdWNjZXNzKQotICAgICAgICBOU0xvZyhAIkVycm9yIGluIG1vdmVGaWxlOiAlQCIs
IGVycm9yKTsKLSAgICByZXR1cm4gc3VjY2VzczsKLX0KLQotYm9vbCBnZXRWb2x1bWVGcmVlU3Bh
Y2UoY29uc3QgU3RyaW5nJiBwYXRoLCB1aW50NjRfdCYgZnJlZVNwYWNlKQotewotICAgIE5TRGlj
dGlvbmFyeSAqZmlsZVN5c3RlbUF0dHJpYnV0ZXNEaWN0aW9uYXJ5ID0gW1tOU0ZpbGVNYW5hZ2Vy
IGRlZmF1bHRNYW5hZ2VyXSBhdHRyaWJ1dGVzT2ZGaWxlU3lzdGVtRm9yUGF0aDooTlNTdHJpbmcg
KilwYXRoIGVycm9yOk5VTExdOwotICAgIGlmICghZmlsZVN5c3RlbUF0dHJpYnV0ZXNEaWN0aW9u
YXJ5KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgZnJlZVNwYWNlID0gW1tmaWxlU3lzdGVt
QXR0cmlidXRlc0RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5Ok5TRmlsZVN5c3RlbUZyZWVTaXplXSB1
bnNpZ25lZExvbmdMb25nVmFsdWVdOwotICAgIHJldHVybiB0cnVlOwotfQotCi1OU1N0cmluZyAq
Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KE5TU3RyaW5nICpkaXJlY3RvcnlQcmVmaXgpCi17Ci0g
ICAgTlNTdHJpbmcgKnRlbXBEaXJlY3RvcnkgPSBOU1RlbXBvcmFyeURpcmVjdG9yeSgpOwotICAg
IGlmICghdGVtcERpcmVjdG9yeSB8fCAhW3RlbXBEaXJlY3RvcnkgbGVuZ3RoXSkKLSAgICAgICAg
cmV0dXJuIG5pbDsKLQotICAgIGlmICghZGlyZWN0b3J5UHJlZml4IHx8ICFbZGlyZWN0b3J5UHJl
Zml4IGxlbmd0aF0pCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBOU1N0cmluZyAqdGVtcERp
cmVjdG9yeUNvbXBvbmVudCA9IFtkaXJlY3RvcnlQcmVmaXggc3RyaW5nQnlBcHBlbmRpbmdTdHJp
bmc6QCItWFhYWFhYWFgiXTsKLSAgICBjb25zdCBjaGFyKiB0ZW1wRGlyZWN0b3J5Q1N0cmluZyA9
IFtbdGVtcERpcmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6dGVtcERpcmVj
dG9yeUNvbXBvbmVudF0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uXTsKLSAgICBpZiAoIXRlbXBE
aXJlY3RvcnlDU3RyaW5nKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgY29uc3Qgc2l6ZV90
IGxlbmd0aCA9IHN0cmxlbih0ZW1wRGlyZWN0b3J5Q1N0cmluZyk7Ci0gICAgQVNTRVJUKGxlbmd0
aCA8PSBNQVhQQVRITEVOKTsKLSAgICBpZiAobGVuZ3RoID4gTUFYUEFUSExFTikKLSAgICAgICAg
cmV0dXJuIG5pbDsKLQotICAgIGNvbnN0IHNpemVfdCBsZW5ndGhQbHVzTnVsbFRlcm1pbmF0b3Ig
PSBsZW5ndGggKyAxOwotICAgIFZlY3RvcjxjaGFyLCBNQVhQQVRITEVOICsgMT4gcGF0aChsZW5n
dGhQbHVzTnVsbFRlcm1pbmF0b3IpOwotICAgIG1lbWNweShwYXRoLmRhdGEoKSwgdGVtcERpcmVj
dG9yeUNTdHJpbmcsIGxlbmd0aFBsdXNOdWxsVGVybWluYXRvcik7Ci0KLSAgICBpZiAoIW1rZHRl
bXAocGF0aC5kYXRhKCkpKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgcmV0dXJuIFtbTlNG
aWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gc3RyaW5nV2l0aEZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbjpwYXRoLmRhdGEoKSBsZW5ndGg6bGVuZ3RoXTsKLX0KLQotYm9vbCBkZWxldGVOb25FbXB0
eURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgcmV0dXJuIFtbTlNGaWxlTWFu
YWdlciBkZWZhdWx0TWFuYWdlcl0gcmVtb3ZlSXRlbUF0UGF0aDpwYXRoIGVycm9yOm5pbF07Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIEZpbGVTeXN0ZW0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvRmlsZU1vbml0b3JHTGliLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvRmlsZU1vbml0b3JHTGliLmNwcAppbmRl
eCA0NjNmMzI3NmMyNGUyNTFiZWI0YWEwOGIwYjk4OTg2ZThjYzk2OTIzLi41YTk4MmY0OTQ5MjM3
Y2IyMGE5ZjU0Y2Y4OGUyYWRlZTQ4ZDRmOTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nbGliL0ZpbGVNb25pdG9yR0xpYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2xpYi9GaWxlTW9uaXRvckdMaWIuY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRmlsZU1vbml0b3IuaCIKIAotI2luY2x1ZGUgIkZpbGVT
eXN0ZW0uaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9nbGli
L0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGhyZWFkcy9CaW5hcnlTZW1hcGhvcmUuaD4K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9GaWxlU3lzdGVtR2xp
Yi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2E2YzNkZjk0ZGQzMjIxMzQzMDBjN2JiZDI2
YmJiMDg5MDQ2NTYzMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcAorKysg
L2Rldi9udWxsCkBAIC0xLDQ3MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAy
MDA5IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29s
bGFib3JhLCBMdGQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDEwIE1vdG9yb2xhIE1vYmls
aXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICog
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiRmlsZVN5c3RlbS5oIgotCi0jaW5jbHVkZSAiRmlsZU1ldGFkYXRhLmgiCi0jaW5jbHVk
ZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlIDxnaW8vZ2ZpbGVkZXNjcmlwdG9yYmFzZWQu
aD4KLSNpbmNsdWRlIDxnaW8vZ2lvLmg+Ci0jaW5jbHVkZSA8Z2xpYi5oPgotI2luY2x1ZGUgPGds
aWIvZ3N0ZGlvLmg+Ci0jaW5jbHVkZSA8c3lzL2ZpbGUuaD4KLSNpbmNsdWRlIDx3dGYvRW51bVRy
YWl0cy5oPgotI2luY2x1ZGUgPHd0Zi9VVUlELmg+Ci0jaW5jbHVkZSA8d3RmL2dsaWIvR0xpYlV0
aWxpdGllcy5oPgotI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYv
Z2xpYi9HVW5pcXVlUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgRmlsZVN5c3RlbSB7Ci0K
LS8qIE9uIGxpbnV4IGZpbGUgbmFtZXMgYXJlIGp1c3QgcmF3IGJ5dGVzLCBzbyBhbHNvIHN0cmlu
Z3MgdGhhdCBjYW5ub3QgYmUgZW5jb2RlZCBpbiBhbnkgd2F5Ci0gKiBhcmUgdmFsaWQgZmlsZSBu
YW1lcy4gVGhpcyBtZWFuIHRoYXQgd2UgY2Fubm90IGp1c3Qgc3RvcmUgYSBmaWxlIG5hbWUgYXMt
aXMgaW4gYSBTdHJpbmcKLSAqIGJ1dCB3ZSBoYXZlIHRvIGVzY2FwZSBpdC4KLSAqIE9uIFdpbmRv
d3MgdGhlIEdMaWIgZmlsZSBuYW1lIGVuY29kaW5nIGlzIGFsd2F5cyBVVEYtOCBzbyB3ZSBjYW4g
b3B0aW1pemUgdGhpcyBjYXNlLiAqLwotU3RyaW5nIHN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oY29uc3QgY2hhciogZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKQotewotICAgIGlm
ICghZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0K
LSNpZiBPUyhXSU5ET1dTKQotICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbik7Ci0jZWxzZQotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGVzY2FwZWRTdHJp
bmcoZ191cmlfZXNjYXBlX3N0cmluZyhmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24sICIvOiIsIEZB
TFNFKSk7Ci0gICAgcmV0dXJuIGVzY2FwZWRTdHJpbmcuZ2V0KCk7Ci0jZW5kaWYKLX0KLQotc3Rh
dGljIEdVbmlxdWVQdHI8Y2hhcj4gdW5lc2NhcGVkRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBwYXRo
KQotewotICAgIGlmIChwYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0j
aWYgT1MoV0lORE9XUykKLSAgICByZXR1cm4gR1VuaXF1ZVB0cjxjaGFyPihnX3N0cmR1cChwYXRo
LnV0ZjgoKS5kYXRhKCkpKTsKLSNlbHNlCi0gICAgcmV0dXJuIEdVbmlxdWVQdHI8Y2hhcj4oZ191
cmlfdW5lc2NhcGVfc3RyaW5nKHBhdGgudXRmOCgpLmRhdGEoKSwgbnVsbHB0cikpOwotI2VuZGlm
Ci19Ci0KLUNTdHJpbmcgZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgcGF0
aCkKLXsKLSNpZiBPUyhXSU5ET1dTKQotICAgIHJldHVybiBwYXRoLnV0ZjgoKTsKLSNlbHNlCi0g
ICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShwYXRoKTsK
LSAgICByZXR1cm4gZmlsZW5hbWUuZ2V0KCk7Ci0jZW5kaWYKLX0KLQotLy8gQ29udmVydHMgYSBz
dHJpbmcgdG8gc29tZXRoaW5nIHN1aXRhYmxlIHRvIGJlIGRpc3BsYXllZCB0byB0aGUgdXNlci4K
LVN0cmluZyBmaWxlbmFtZUZvckRpc3BsYXkoY29uc3QgU3RyaW5nJiBzdHJpbmcpCi17Ci0jaWYg
T1MoV0lORE9XUykKLSAgICByZXR1cm4gc3RyaW5nOwotI2Vsc2UKLSAgICBHVW5pcXVlUHRyPGdj
aGFyPiBmaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHN0cmluZyk7Ci0gICAgaWYgKCFmaWxl
bmFtZSkKLSAgICAgICAgcmV0dXJuIHN0cmluZzsKLQotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGRp
c3BsYXkoZ19maWxlbmFtZV90b191dGY4KGZpbGVuYW1lLmdldCgpLCAtMSwgbnVsbHB0ciwgbnVs
bHB0ciwgbnVsbHB0cikpOwotICAgIGlmICghZGlzcGxheSkKLSAgICAgICAgcmV0dXJuIHN0cmlu
ZzsKLQotICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGRpc3BsYXkuZ2V0KCkpOwotI2VuZGlm
Ci19Ci0KLWJvb2wgZmlsZUV4aXN0cyhjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgR1VuaXF1
ZVB0cjxnY2hhcj4gZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShwYXRoKTsKLSAgICByZXR1
cm4gZmlsZW5hbWUgPyBnX2ZpbGVfdGVzdChmaWxlbmFtZS5nZXQoKSwgR19GSUxFX1RFU1RfRVhJ
U1RTKSA6IGZhbHNlOwotfQotCi1ib29sIGRlbGV0ZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQot
ewotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUocGF0
aCk7Ci0gICAgcmV0dXJuIGZpbGVuYW1lID8gZ19yZW1vdmUoZmlsZW5hbWUuZ2V0KCkpICE9IC0x
IDogZmFsc2U7Ci19Ci0KLWJvb2wgZGVsZXRlRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBw
YXRoKQotewotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5h
bWUocGF0aCk7Ci0gICAgcmV0dXJuIGZpbGVuYW1lID8gZ19ybWRpcihmaWxlbmFtZS5nZXQoKSkg
IT0gLTEgOiBmYWxzZTsKLX0KLQotc3RhdGljIGJvb2wgZ2V0RmlsZVN0YXQoY29uc3QgU3RyaW5n
JiBwYXRoLCBHU3RhdEJ1Ziogc3RhdEJ1ZmZlcikKLXsKLSAgICBHVW5pcXVlUHRyPGdjaGFyPiBm
aWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGgpOwotICAgIGlmICghZmlsZW5hbWUpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBnX3N0YXQoZmlsZW5hbWUuZ2V0KCks
IHN0YXRCdWZmZXIpICE9IC0xOwotfQotCi1zdGF0aWMgYm9vbCBnZXRGaWxlTFN0YXQoY29uc3Qg
U3RyaW5nJiBwYXRoLCBHU3RhdEJ1Ziogc3RhdEJ1ZmZlcikKLXsKLSAgICBHVW5pcXVlUHRyPGdj
aGFyPiBmaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGgpOwotICAgIGlmICghZmlsZW5h
bWUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBnX2xzdGF0KGZpbGVuYW1l
LmdldCgpLCBzdGF0QnVmZmVyKSAhPSAtMTsKLX0KLQotYm9vbCBnZXRGaWxlU2l6ZShjb25zdCBT
dHJpbmcmIHBhdGgsIGxvbmcgbG9uZyYgcmVzdWx0U2l6ZSkKLXsKLSAgICBHU3RhdEJ1ZiBzdGF0
UmVzdWx0OwotICAgIGlmICghZ2V0RmlsZVN0YXQocGF0aCwgJnN0YXRSZXN1bHQpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXN1bHRTaXplID0gc3RhdFJlc3VsdC5zdF9zaXplOwot
ICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIGdldEZpbGVTaXplKFBsYXRmb3JtRmlsZUhhbmRs
ZSBoYW5kbGUsIGxvbmcgbG9uZyYgcmVzdWx0U2l6ZSkKLXsKLSAgICBhdXRvIGluZm8gPSBnX2Zp
bGVfaW9fc3RyZWFtX3F1ZXJ5X2luZm8oaGFuZGxlLCBHX0ZJTEVfQVRUUklCVVRFX1NUQU5EQVJE
X1NJWkUsIG51bGxwdHIsIG51bGxwdHIpOwotICAgIGlmICghaW5mbykKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgcmVzdWx0U2l6ZSA9IGdfZmlsZV9pbmZvX2dldF9zaXplKGluZm8pOwot
ICAgIHJldHVybiB0cnVlOwotfQotCi1PcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZUNyZWF0aW9u
VGltZShjb25zdCBTdHJpbmcmKQotewotICAgIC8vIEZJWE1FOiBJcyB0aGVyZSBhIHdheSB0byBy
ZXRyaWV2ZSBmaWxlIGNyZWF0aW9uIHRpbWUgd2l0aCBHdGsgb24gcGxhdGZvcm1zIHRoYXQgc3Vw
cG9ydCBpdD8KLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotfQotCi1PcHRpb25hbDxXYWxsVGlt
ZT4gZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIEdT
dGF0QnVmIHN0YXRSZXN1bHQ7Ci0gICAgaWYgKCFnZXRGaWxlU3RhdChwYXRoLCAmc3RhdFJlc3Vs
dCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICByZXR1cm4gV2FsbFRpbWU6
OmZyb21SYXdTZWNvbmRzKHN0YXRSZXN1bHQuc3RfbXRpbWUpOwotfQotCi1zdGF0aWMgRmlsZU1l
dGFkYXRhOjpUeXBlIHRvRmlsZU1ldGF0YVR5cGUoR1N0YXRCdWYgc3RhdFJlc3VsdCkKLXsKLSAg
ICBpZiAoU19JU0RJUihzdGF0UmVzdWx0LnN0X21vZGUpKQotICAgICAgICByZXR1cm4gRmlsZU1l
dGFkYXRhOjpUeXBlOjpEaXJlY3Rvcnk7Ci0gICAgaWYgKFNfSVNMTksoc3RhdFJlc3VsdC5zdF9t
b2RlKSkKLSAgICAgICAgcmV0dXJuIEZpbGVNZXRhZGF0YTo6VHlwZTo6U3ltYm9saWNMaW5rOwot
ICAgIHJldHVybiBGaWxlTWV0YWRhdGE6OlR5cGU6OkZpbGU7Ci19Ci0KLXN0YXRpYyBPcHRpb25h
bDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YVVzaW5nRnVuY3Rpb24oY29uc3QgU3RyaW5nJiBw
YXRoLCBib29sICgqc3RhdEZ1bmMpKGNvbnN0IFN0cmluZyYsIEdTdGF0QnVmKikpCi17Ci0gICAg
R1N0YXRCdWYgc3RhdFJlc3VsdDsKLSAgICBpZiAoIXN0YXRGdW5jKHBhdGgsICZzdGF0UmVzdWx0
KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIFN0cmluZyBmaWxlbmFtZSA9
IHBhdGhHZXRGaWxlTmFtZShwYXRoKTsKLSAgICBib29sIGlzSGlkZGVuID0gIWZpbGVuYW1lLmlz
RW1wdHkoKSAmJiBmaWxlbmFtZVswXSA9PSAnLic7Ci0KLSAgICByZXR1cm4gRmlsZU1ldGFkYXRh
IHsKLSAgICAgICAgV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKHN0YXRSZXN1bHQuc3RfbXRpbWUp
LAotICAgICAgICBzdGF0UmVzdWx0LnN0X3NpemUsCi0gICAgICAgIGlzSGlkZGVuLAotICAgICAg
ICB0b0ZpbGVNZXRhdGFUeXBlKHN0YXRSZXN1bHQpCi0gICAgfTsKLX0KLQotT3B0aW9uYWw8Rmls
ZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIHJldHVy
biBmaWxlTWV0YWRhdGFVc2luZ0Z1bmN0aW9uKHBhdGgsICZnZXRGaWxlTFN0YXQpOwotfQotCi1P
cHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YUZvbGxvd2luZ1N5bWxpbmtzKGNvbnN0
IFN0cmluZyYgcGF0aCkKLXsKLSAgICByZXR1cm4gZmlsZU1ldGFkYXRhVXNpbmdGdW5jdGlvbihw
YXRoLCAmZ2V0RmlsZVN0YXQpOwotfQotCi1TdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb21wb25lbnQpCi17Ci0gICAgaWYg
KHBhdGguZW5kc1dpdGgoR19ESVJfU0VQQVJBVE9SX1MpKQotICAgICAgICByZXR1cm4gcGF0aCAr
IGNvbXBvbmVudDsKLSAgICByZXR1cm4gcGF0aCArIEdfRElSX1NFUEFSQVRPUl9TICsgY29tcG9u
ZW50OwotfQotCi1TdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhTdHJpbmdWaWV3IHBh
dGgsIGNvbnN0IFZlY3RvcjxTdHJpbmdWaWV3PiYgY29tcG9uZW50cykKLXsKLSAgICBTdHJpbmdC
dWlsZGVyIGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5hcHBlbmQocGF0aCk7Ci0gICAgZm9yIChhdXRv
JiBjb21wb25lbnQgOiBjb21wb25lbnRzKSB7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKEdfRElS
X1NFUEFSQVRPUl9TKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoY29tcG9uZW50KTsKLSAgICB9
Ci0gICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKLX0KLQotYm9vbCBtYWtlQWxsRGlyZWN0
b3JpZXMoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVu
YW1lID0gdW5lc2NhcGVkRmlsZW5hbWUocGF0aCk7Ci0gICAgcmV0dXJuIGZpbGVuYW1lID8gZ19t
a2Rpcl93aXRoX3BhcmVudHMoZmlsZW5hbWUuZ2V0KCksIFNfSVJXWFUpICE9IC0xIDogZmFsc2U7
Ci19Ci0KLVN0cmluZyBob21lRGlyZWN0b3J5UGF0aCgpCi17Ci0gICAgcmV0dXJuIHN0cmluZ0Zy
b21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfaG9tZV9kaXIoKSk7Ci19Ci0KLWJvb2wg
Y3JlYXRlU3ltYm9saWNMaW5rKGNvbnN0IFN0cmluZyYgdGFyZ2V0UGF0aCwgY29uc3QgU3RyaW5n
JiBzeW1ib2xpY0xpbmtQYXRoKQotewotICAgIENTdHJpbmcgdGFyZ2V0UGF0aEZTUmVwID0gZmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKHRhcmdldFBhdGgpOwotICAgIGlmICghdGFyZ2V0UGF0aEZT
UmVwLmRhdGEoKSB8fCB0YXJnZXRQYXRoRlNSZXAuZGF0YSgpWzBdID09ICdcMCcpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgIENTdHJpbmcgc3ltYm9saWNMaW5rUGF0aEZTUmVwID0gZmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKHN5bWJvbGljTGlua1BhdGgpOwotICAgIGlmICghc3ltYm9s
aWNMaW5rUGF0aEZTUmVwLmRhdGEoKSB8fCBzeW1ib2xpY0xpbmtQYXRoRlNSZXAuZGF0YSgpWzBd
ID09ICdcMCcpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiAhc3ltbGluayh0
YXJnZXRQYXRoRlNSZXAuZGF0YSgpLCBzeW1ib2xpY0xpbmtQYXRoRlNSZXAuZGF0YSgpKTsKLX0K
LQotU3RyaW5nIHBhdGhHZXRGaWxlTmFtZShjb25zdCBTdHJpbmcmIHBhdGhOYW1lKQotewotICAg
IEdVbmlxdWVQdHI8Z2NoYXI+IHRtcEZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUocGF0aE5h
bWUpOwotICAgIGlmICghdG1wRmlsZW5hbWUpCi0gICAgICAgIHJldHVybiBwYXRoTmFtZTsKLQot
ICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGJhc2VOYW1lKGdfcGF0aF9nZXRfYmFzZW5hbWUodG1wRmls
ZW5hbWUuZ2V0KCkpKTsKLSAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChiYXNlTmFtZS5nZXQo
KSk7Ci19Ci0KLWJvb2wgZ2V0Vm9sdW1lRnJlZVNwYWNlKGNvbnN0IFN0cmluZyYgcGF0aCwgdWlu
dDY0X3QmIGZyZWVTcGFjZSkKLXsKLSAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZSA9IHVu
ZXNjYXBlZEZpbGVuYW1lKHBhdGgpOwotICAgIGlmICghZmlsZW5hbWUpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIEdSZWZQdHI8R0ZpbGU+IGZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25l
d19mb3JfcGF0aChmaWxlbmFtZS5nZXQoKSkpOwotICAgIEdSZWZQdHI8R0ZpbGVJbmZvPiBmaWxl
SW5mbyA9IGFkb3B0R1JlZihnX2ZpbGVfcXVlcnlfZmlsZXN5c3RlbV9pbmZvKGZpbGUuZ2V0KCks
IEdfRklMRV9BVFRSSUJVVEVfRklMRVNZU1RFTV9GUkVFLCAwLCAwKSk7Ci0gICAgaWYgKCFmaWxl
SW5mbykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgZnJlZVNwYWNlID0gZ19maWxlX2lu
Zm9fZ2V0X2F0dHJpYnV0ZV91aW50NjQoZmlsZUluZm8uZ2V0KCksIEdfRklMRV9BVFRSSUJVVEVf
RklMRVNZU1RFTV9GUkVFKTsKLSAgICByZXR1cm4gISFmcmVlU3BhY2U7Ci19Ci0KLVN0cmluZyBk
aXJlY3RvcnlOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBHVW5pcXVlUHRyPGdjaGFy
PiBmaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGgpOwotICAgIGlmICghZmlsZW5hbWUp
Ci0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIEdVbmlxdWVQdHI8Y2hhcj4gZGlybmFt
ZShnX3BhdGhfZ2V0X2Rpcm5hbWUoZmlsZW5hbWUuZ2V0KCkpKTsKLSAgICByZXR1cm4gU3RyaW5n
Ojpmcm9tVVRGOChkaXJuYW1lLmdldCgpKTsKLX0KLQotVmVjdG9yPFN0cmluZz4gbGlzdERpcmVj
dG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgZmlsdGVyKQotewotICAgIFZl
Y3RvcjxTdHJpbmc+IGVudHJpZXM7Ci0KLSAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZSA9
IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGgpOwotICAgIGlmICghZmlsZW5hbWUpCi0gICAgICAgIHJl
dHVybiBlbnRyaWVzOwotCi0gICAgR1VuaXF1ZVB0cjxHRGlyPiBkaXIoZ19kaXJfb3BlbihmaWxl
bmFtZS5nZXQoKSwgMCwgbnVsbHB0cikpOwotICAgIGlmICghZGlyKQotICAgICAgICByZXR1cm4g
ZW50cmllczsKLQotICAgIEdVbmlxdWVQdHI8R1BhdHRlcm5TcGVjPiBwc3BlYyhnX3BhdHRlcm5f
c3BlY19uZXcoKGZpbHRlci51dGY4KCkpLmRhdGEoKSkpOwotICAgIHdoaWxlIChjb25zdCBjaGFy
KiBuYW1lID0gZ19kaXJfcmVhZF9uYW1lKGRpci5nZXQoKSkpIHsKLSAgICAgICAgaWYgKCFnX3Bh
dHRlcm5fbWF0Y2hfc3RyaW5nKHBzcGVjLmdldCgpLCBuYW1lKSkKLSAgICAgICAgICAgIGNvbnRp
bnVlOwotCi0gICAgICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGVudHJ5KGdfYnVpbGRfZmlsZW5hbWUo
ZmlsZW5hbWUuZ2V0KCksIG5hbWUsIG51bGxwdHIpKTsKLSAgICAgICAgZW50cmllcy5hcHBlbmQo
c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihlbnRyeS5nZXQoKSkpOwotICAgIH0K
LQotICAgIHJldHVybiBlbnRyaWVzOwotfQotCi1TdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29u
c3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKQotewotICAgIEdV
bmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lKGdfc3RyZHVwX3ByaW50ZigiJXMlcyIsIHByZWZpeC51
dGY4KCkuZGF0YSgpLCBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkudXRmOCgpLmRhdGEoKSkp
OwotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHRlbXBQYXRoKGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRf
dG1wX2RpcigpLCBmaWxlbmFtZS5nZXQoKSwgTlVMTCkpOwotICAgIEdSZWZQdHI8R0ZpbGU+IGZp
bGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0aCh0ZW1wUGF0aC5nZXQoKSkpOwotCi0g
ICAgaGFuZGxlID0gZ19maWxlX2NyZWF0ZV9yZWFkd3JpdGUoZmlsZS5nZXQoKSwgR19GSUxFX0NS
RUFURV9OT05FLCAwLCAwKTsKLSAgICBpZiAoIWlzSGFuZGxlVmFsaWQoaGFuZGxlKSkKLSAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwotICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KHRlbXBQYXRo
LmdldCgpKTsKLX0KLQotUGxhdGZvcm1GaWxlSGFuZGxlIG9wZW5GaWxlKGNvbnN0IFN0cmluZyYg
cGF0aCwgRmlsZU9wZW5Nb2RlIG1vZGUpCi17Ci0gICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5h
bWUgPSB1bmVzY2FwZWRGaWxlbmFtZShwYXRoKTsKLSAgICBpZiAoIWZpbGVuYW1lKQotICAgICAg
ICByZXR1cm4gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKLQotICAgIEdSZWZQdHI8R0ZpbGU+
IGZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0aChmaWxlbmFtZS5nZXQoKSkpOwot
ICAgIEdGaWxlSU9TdHJlYW0qIGlvU3RyZWFtID0gMDsKLSAgICBpZiAobW9kZSA9PSBGaWxlT3Bl
bk1vZGU6OlJlYWQpCi0gICAgICAgIGlvU3RyZWFtID0gZ19maWxlX29wZW5fcmVhZHdyaXRlKGZp
bGUuZ2V0KCksIDAsIDApOwotICAgIGVsc2UgaWYgKG1vZGUgPT0gRmlsZU9wZW5Nb2RlOjpXcml0
ZSkgewotICAgICAgICBpZiAoZ19maWxlX3Rlc3QoZmlsZW5hbWUuZ2V0KCksIHN0YXRpY19jYXN0
PEdGaWxlVGVzdD4oR19GSUxFX1RFU1RfRVhJU1RTIHwgR19GSUxFX1RFU1RfSVNfUkVHVUxBUikp
KQotICAgICAgICAgICAgaW9TdHJlYW0gPSBnX2ZpbGVfb3Blbl9yZWFkd3JpdGUoZmlsZS5nZXQo
KSwgMCwgMCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGlvU3RyZWFtID0gZ19maWxlX2Ny
ZWF0ZV9yZWFkd3JpdGUoZmlsZS5nZXQoKSwgR19GSUxFX0NSRUFURV9OT05FLCAwLCAwKTsKLSAg
ICB9Ci0KLSAgICByZXR1cm4gaW9TdHJlYW07Ci19Ci0KLXZvaWQgY2xvc2VGaWxlKFBsYXRmb3Jt
RmlsZUhhbmRsZSYgaGFuZGxlKQotewotICAgIGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBnX2lvX3N0cmVhbV9jbG9zZShHX0lPX1NUUkVBTShoYW5k
bGUpLCAwLCAwKTsKLSAgICBnX29iamVjdF91bnJlZihoYW5kbGUpOwotICAgIGhhbmRsZSA9IGlu
dmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7Ci19Ci0KLWxvbmcgbG9uZyBzZWVrRmlsZShQbGF0Zm9y
bUZpbGVIYW5kbGUgaGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0LCBGaWxlU2Vla09yaWdpbiBvcmln
aW4pCi17Ci0gICAgR1NlZWtUeXBlIHNlZWtUeXBlID0gR19TRUVLX1NFVDsKLSAgICBzd2l0Y2gg
KG9yaWdpbikgewotICAgIGNhc2UgRmlsZVNlZWtPcmlnaW46OkJlZ2lubmluZzoKLSAgICAgICAg
c2Vla1R5cGUgPSBHX1NFRUtfU0VUOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEZpbGVTZWVr
T3JpZ2luOjpDdXJyZW50OgotICAgICAgICBzZWVrVHlwZSA9IEdfU0VFS19DVVI7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgRmlsZVNlZWtPcmlnaW46OkVuZDoKLSAgICAgICAgc2Vla1R5cGUg
PSBHX1NFRUtfRU5EOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci0KLSAgICBpZiAoIWdfc2Vla2FibGVfc2VlayhHX1NF
RUtBQkxFKGdfaW9fc3RyZWFtX2dldF9pbnB1dF9zdHJlYW0oR19JT19TVFJFQU0oaGFuZGxlKSkp
LAotICAgICAgICBvZmZzZXQsIHNlZWtUeXBlLCAwLCAwKSkKLSAgICB7Ci0gICAgICAgIHJldHVy
biAtMTsKLSAgICB9Ci0gICAgcmV0dXJuIGdfc2Vla2FibGVfdGVsbChHX1NFRUtBQkxFKGdfaW9f
c3RyZWFtX2dldF9pbnB1dF9zdHJlYW0oR19JT19TVFJFQU0oaGFuZGxlKSkpKTsKLX0KLQotaW50
IHdyaXRlVG9GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEs
IGludCBsZW5ndGgpCi17Ci0gICAgZ3NpemUgYnl0ZXNXcml0dGVuOwotICAgIGdfb3V0cHV0X3N0
cmVhbV93cml0ZV9hbGwoZ19pb19zdHJlYW1fZ2V0X291dHB1dF9zdHJlYW0oR19JT19TVFJFQU0o
aGFuZGxlKSksCi0gICAgICAgIGRhdGEsIGxlbmd0aCwgJmJ5dGVzV3JpdHRlbiwgMCwgMCk7Ci0g
ICAgcmV0dXJuIGJ5dGVzV3JpdHRlbjsKLX0KLQotaW50IHJlYWRGcm9tRmlsZShQbGF0Zm9ybUZp
bGVIYW5kbGUgaGFuZGxlLCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQotewotICAgIEdVbmlxdWVP
dXRQdHI8R0Vycm9yPiBlcnJvcjsKLSAgICBkbyB7Ci0gICAgICAgIGdzc2l6ZSBieXRlc1JlYWQg
PSBnX2lucHV0X3N0cmVhbV9yZWFkKGdfaW9fc3RyZWFtX2dldF9pbnB1dF9zdHJlYW0oR19JT19T
VFJFQU0oaGFuZGxlKSksCi0gICAgICAgICAgICBkYXRhLCBsZW5ndGgsIDAsICZlcnJvci5vdXRQ
dHIoKSk7Ci0gICAgICAgIGlmIChieXRlc1JlYWQgPj0gMCkKLSAgICAgICAgICAgIHJldHVybiBi
eXRlc1JlYWQ7Ci0gICAgfSB3aGlsZSAoZXJyb3IgJiYgZXJyb3ItPmNvZGUgPT0gR19GSUxFX0VS
Uk9SX0lOVFIpOwotICAgIHJldHVybiAtMTsKLX0KLQotYm9vbCBtb3ZlRmlsZShjb25zdCBTdHJp
bmcmIG9sZFBhdGgsIGNvbnN0IFN0cmluZyYgbmV3UGF0aCkKLXsKLSAgICBHVW5pcXVlUHRyPGdj
aGFyPiBvbGRGaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKG9sZFBhdGgpOwotICAgIGlmICgh
b2xkRmlsZW5hbWUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIEdVbmlxdWVQdHI8Z2No
YXI+IG5ld0ZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUobmV3UGF0aCk7Ci0gICAgaWYgKCFu
ZXdGaWxlbmFtZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgR1JlZlB0cjxHRmlsZT4g
b2xkRmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKG9sZEZpbGVuYW1lLmdldCgp
KSk7Ci0gICAgR1JlZlB0cjxHRmlsZT4gbmV3RmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zv
cl9wYXRoKG5ld0ZpbGVuYW1lLmdldCgpKSk7Ci0KLSAgICByZXR1cm4gZ19maWxlX21vdmUob2xk
RmlsZS5nZXQoKSwgbmV3RmlsZS5nZXQoKSwgR19GSUxFX0NPUFlfT1ZFUldSSVRFLCBudWxscHRy
LCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKTsKLX0KLQotYm9vbCBoYXJkTGlua09yQ29weUZp
bGUoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb24pCi17Ci0j
aWYgT1MoV0lORE9XUykKLSAgICByZXR1cm4gISE6OkNvcHlGaWxlKHNvdXJjZS5jaGFyYWN0ZXJz
V2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSwgZGVzdGluYXRpb24uY2hhcmFjdGVyc1dpdGhO
dWxsVGVybWluYXRpb24oKS5kYXRhKCksIFRSVUUpOwotI2Vsc2UKLSAgICBHVW5pcXVlUHRyPGdj
aGFyPiBzb3VyY2VGaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHNvdXJjZSk7Ci0gICAgaWYg
KCFzb3VyY2VGaWxlbmFtZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgR1VuaXF1ZVB0
cjxnY2hhcj4gZGVzdGluYXRpb25GaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKGRlc3RpbmF0
aW9uKTsKLSAgICBpZiAoIWRlc3RpbmF0aW9uRmlsZW5hbWUpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIGlmICghbGluayhzb3VyY2VGaWxlbmFtZS5nZXQoKSwgZGVzdGluYXRpb25GaWxl
bmFtZS5nZXQoKSkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgLy8gSGFyZCBsaW5rIGZh
aWxlZC4gUGVyZm9ybSBhIGNvcHkgaW5zdGVhZC4KLSAgICBHUmVmUHRyPEdGaWxlPiBzb3VyY2VG
aWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoc291cmNlRmlsZW5hbWUuZ2V0KCkp
KTsKLSAgICBHUmVmUHRyPEdGaWxlPiBkZXN0aW5hdGlvbkZpbGUgPSBhZG9wdEdSZWYoZ19maWxl
X25ld19mb3JfcGF0aChkZXN0aW5hdGlvbkZpbGVuYW1lLmdldCgpKSk7Ci0gICAgcmV0dXJuIGdf
ZmlsZV9jb3B5KHNvdXJjZUZpbGUuZ2V0KCksIGRlc3RpbmF0aW9uRmlsZS5nZXQoKSwgR19GSUxF
X0NPUFlfTk9ORSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cik7Ci0jZW5kaWYK
LX0KLQotT3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0IENTdHJpbmcmIGZz
RmlsZSkKLXsKLSAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVu
YW1lKGZzRmlsZS5kYXRhKCkpOwotICAgIGlmICghZmlsZW5hbWUpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7Ci0KLSAgICBHUmVmUHRyPEdGaWxlPiBmaWxlID0gYWRvcHRHUmVmKGdfZmls
ZV9uZXdfZm9yX3BhdGgoZmlsZW5hbWUuZ2V0KCkpKTsKLSAgICBHUmVmUHRyPEdGaWxlSW5mbz4g
ZmlsZUluZm8gPSBhZG9wdEdSZWYoZ19maWxlX3F1ZXJ5X2ZpbGVzeXN0ZW1faW5mbyhmaWxlLmdl
dCgpLCBHX0ZJTEVfQVRUUklCVVRFX1VOSVhfREVWSUNFLCBudWxscHRyLCBudWxscHRyKSk7Ci0g
ICAgaWYgKCFmaWxlSW5mbykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIHJl
dHVybiBnX2ZpbGVfaW5mb19nZXRfYXR0cmlidXRlX3VpbnQzMihmaWxlSW5mby5nZXQoKSwgR19G
SUxFX0FUVFJJQlVURV9VTklYX0RFVklDRSk7Ci19Ci0KLSNpZiBVU0UoRklMRV9MT0NLKQotYm9v
bCBsb2NrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBPcHRpb25TZXQ8RmlsZUxvY2tN
b2RlPiBsb2NrTW9kZSkKLXsKLSAgICBDT01QSUxFX0FTU0VSVChMT0NLX1NIID09IFdURjo6ZW51
bVRvVW5kZXJseWluZ1R5cGUoRmlsZUxvY2tNb2RlOjpTaGFyZWQpLCBMb2NrU2hhcmVkRW5jb2Rp
bmdJc0FzRXhwZWN0ZWQpOwotICAgIENPTVBJTEVfQVNTRVJUKExPQ0tfRVggPT0gV1RGOjplbnVt
VG9VbmRlcmx5aW5nVHlwZShGaWxlTG9ja01vZGU6OkV4Y2x1c2l2ZSksIExvY2tFeGNsdXNpdmVF
bmNvZGluZ0lzQXNFeHBlY3RlZCk7Ci0gICAgQ09NUElMRV9BU1NFUlQoTE9DS19OQiA9PSBXVEY6
OmVudW1Ub1VuZGVybHlpbmdUeXBlKEZpbGVMb2NrTW9kZTo6Tm9uYmxvY2tpbmcpLCBMb2NrTm9u
YmxvY2tpbmdFbmNvZGluZ0lzQXNFeHBlY3RlZCk7Ci0gICAgYXV0byogaW5wdXRTdHJlYW0gPSBn
X2lvX3N0cmVhbV9nZXRfaW5wdXRfc3RyZWFtKEdfSU9fU1RSRUFNKGhhbmRsZSkpOwotICAgIGlu
dCByZXN1bHQgPSBmbG9jayhnX2ZpbGVfZGVzY3JpcHRvcl9iYXNlZF9nZXRfZmQoR19GSUxFX0RF
U0NSSVBUT1JfQkFTRUQoaW5wdXRTdHJlYW0pKSwgbG9ja01vZGUudG9SYXcoKSk7Ci0gICAgcmV0
dXJuIHJlc3VsdCAhPSAtMTsKLX0KLQotYm9vbCB1bmxvY2tGaWxlKFBsYXRmb3JtRmlsZUhhbmRs
ZSBoYW5kbGUpCi17Ci0gICAgYXV0byogaW5wdXRTdHJlYW0gPSBnX2lvX3N0cmVhbV9nZXRfaW5w
dXRfc3RyZWFtKEdfSU9fU1RSRUFNKGhhbmRsZSkpOwotICAgIGludCByZXN1bHQgPSBmbG9jayhn
X2ZpbGVfZGVzY3JpcHRvcl9iYXNlZF9nZXRfZmQoR19GSUxFX0RFU0NSSVBUT1JfQkFTRUQoaW5w
dXRTdHJlYW0pKSwgTE9DS19VTik7Ci0gICAgcmV0dXJuIHJlc3VsdCAhPSAtMTsKLX0KLSNlbmRp
ZiAvLyBVU0UoRklMRV9MT0NLKQotCi19IC8vIG5hbWVzcGFjZSBGaWxlU3lzdGVtCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGli
L1NoYXJlZEJ1ZmZlckdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFy
ZWRCdWZmZXJHbGliLmNwcAppbmRleCBiNDg5NmMwODU0NjBlN2MwYmU1NjQwODRlYzg4ZWYyMmFm
NjBiODQ0Li5lMGE4NTllM2VlYTNkOWY3M2Q4NzhhMzAwNGViZDgxN2UxYjk5MjhhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAKQEAg
LTE5LDcgKzE5LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZm
ZXIuaCIKIAotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3Rl
bS5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vz
c2lvbkFWQ29udGVudEtleVNlc3Npb24ubW0KaW5kZXggZThkZDNiNWFlYzgyOTNjZDVlZDk2ZTk4
ZjEwMzVlZTUzZTI4YzdiNC4uMjRmOTVlODQ0MTM2N2UyMjE5Y2EyMjY0NDVlODYyMjhmNTc5NDgy
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29u
dGVudEtleVNlc3Npb24ubW0KQEAgLTI5LDcgKzI5LDYgQEAKICNpZiBFTkFCTEUoTEVHQUNZX0VO
Q1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKE1FRElBX1NPVVJDRSkKIAogI2ltcG9ydCAiQ0RNUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIgotI2ltcG9ydCAiRmlsZVN5c3RlbS5oIgogI2ltcG9y
dCAiTGVnYWN5Q0RNLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJNZWRpYVBsYXll
ci5oIgpAQCAtMzksNiArMzgsNyBAQAogI2ltcG9ydCA8Q29yZU1lZGlhL0NNQmFzZS5oPgogI2lt
cG9ydCA8SmF2YVNjcmlwdENvcmUvVHlwZWRBcnJheUlubGluZXMuaD4KICNpbXBvcnQgPG9iamMv
b2JqYy1ydW50aW1lLmg+CisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8d3Rm
L1NvZnRMaW5raW5nLmg+CiAKIFNPRlRfTElOS19GUkFNRVdPUktfT1BUSU9OQUwoQVZGb3VuZGF0
aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVlN0cmVhbVNl
c3Npb24ubW0KaW5kZXggOTkyOTQzMTVkODYyNDFiMTY4ZjI4YWE3MmVkZGUwZDk3Y2Y0YTc4Yy4u
YzM1NzNlNWM2MDgxYzk5YjE0MDRlMGU0MWM1MGUwNDllMjkxYTIyZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lv
bkFWU3RyZWFtU2Vzc2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLm1tCkBAIC0yOSw3
ICsyOSw2IEBACiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRShN
RURJQV9TT1VSQ0UpCiAKICNpbXBvcnQgIkNETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCIK
LSNpbXBvcnQgIkZpbGVTeXN0ZW0uaCIKICNpbXBvcnQgIkxlZ2FjeUNETS5oIgogI2ltcG9ydCAi
TG9nZ2luZy5oIgogI2ltcG9ydCAiTWVkaWFQbGF5ZXIuaCIKQEAgLTQwLDYgKzM5LDcgQEAKICNp
bXBvcnQgPEphdmFTY3JpcHRDb3JlL1R5cGVkQXJyYXlJbmxpbmVzLmg+CiAjaW1wb3J0IDxvYmpj
L29iamMtcnVudGltZS5oPgogI2ltcG9ydCA8cGFsL3NwaS9tYWMvQVZGb3VuZGF0aW9uU1BJLmg+
CisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+
CiAjaW1wb3J0IDx3dGYvVVVJRC5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZP
YmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5tbQppbmRleCAyY2IyZDZmYTBjZDhlZmE0
MjMxODkxYTA5ODE5ODNjOWI4YzA3N2U0Li5lYzU4Mzc4YThiZWI2YTU3NTNkMDJkYTQ5ZmVkYWI2
NmVlYjU5N2MyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Np
b25NZWRpYVNvdXJjZUFWRk9iakMubW0KQEAgLTI5LDkgKzI5LDkgQEAKICNpZiBFTkFCTEUoTEVH
QUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKE1FRElBX1NPVVJDRSkKIAogI2ltcG9ydCAi
Q0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIgotI2ltcG9ydCAiRmlsZVN5c3RlbS5oIgog
I2ltcG9ydCAiV2ViQ29yZU5TRXJyb3JFeHRyYXMuaCIKICNpbXBvcnQgPEFWRm91bmRhdGlvbi9B
VkVycm9yLmg+CisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQppbmRleCA1ZTM2ZGQwMDY5MzA3NTAxMTJi
NzEzZmRjNGU1YWVhNGQxMGE5YzA5Li5kNmQ1ZTgyYjIzNzc2ZmQ2Mjc3ZTI5YjY5ZGViNjYyOWY4
YzkxOGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCkBAIC0zMSw3ICszMSw2IEBACiAj
aW1wb3J0ICJBVkFzc2V0VHJhY2tVdGlsaXRpZXMuaCIKICNpbXBvcnQgIkFWRm91bmRhdGlvbk1J
TUVUeXBlQ2FjaGUuaCIKICNpbXBvcnQgIkNETVNlc3Npb25BVlN0cmVhbVNlc3Npb24uaCIKLSNp
bXBvcnQgIkZpbGVTeXN0ZW0uaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dENHLmgiCiAjaW1w
b3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLmgiCkBA
IC00OSw2ICs0OCw3IEBACiAjaW1wb3J0IDxwYWwvYXZmb3VuZGF0aW9uL01lZGlhVGltZUFWRm91
bmRhdGlvbi5oPgogI2ltcG9ydCA8cGFsL3NwaS9tYWMvQVZGb3VuZGF0aW9uU1BJLmg+CiAjaW1w
b3J0IDx3dGYvRGVxdWUuaD4KKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDx3
dGYvTWFpblRocmVhZC5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggMGYwNWVi
OTE5OWRiZjNlNDllMWExMmUwNzU2NmVlYzQ4OTFkZTE3Ny4uNDE0MGMxMWIwZWE0Nzk4ZTY2MGQ2
NDk1ODBmZWNhYWQzYzI2ZDRjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lci5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lmIEVOQUJMRShWSURFTykg
JiYgVVNFKEdTVFJFQU1FUikKIAotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJH
U3RyZWFtZXJDb21tb24uaCIKICNpbmNsdWRlICJIVFRQSGVhZGVyTmFtZXMuaCIKICNpbmNsdWRl
ICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCkBAIC00Miw2ICs0MSw3IEBACiAjaW5jbHVkZSA8Z3N0L2dz
dC5oPgogI2luY2x1ZGUgPGdzdC9wYnV0aWxzL21pc3NpbmctcGx1Z2lucy5oPgogI2luY2x1ZGUg
PGxpbWl0cz4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9IZXhO
dW1iZXIuaD4KICNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVp
Y2tMb29rLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5tbQppbmRl
eCBhMDI3N2Y1MDliMmYzMDU1MWVjMjM0ZjZmZjE4YTVlMzQ0ZWVkNjQwLi4wNzM3NDA2NzA1Nzdl
MWVmZGQwMzNlMWJhY2Q4YzE0OGJjZGNhZGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvUXVpY2tMb29rLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9RdWlja0xvb2subW0KQEAgLTI4LDExICsyOCwxMSBAQAogCiAjaWYgVVNFKFFVSUNLX0xPT0sp
CiAKLSNpbXBvcnQgIkZpbGVTeXN0ZW0uaCIKICNpbXBvcnQgIlByZXZpZXdDb252ZXJ0ZXIuaCIK
ICNpbXBvcnQgIlJlc291cmNlUmVxdWVzdC5oIgogI2ltcG9ydCAiU2NoZW1lUmVnaXN0cnkuaCIK
ICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNGaWxlTWFuYWdlclNQSS5oPgorI2ltcG9ydCA8d3Rm
L0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0Zi9Mb2NrLmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dl
Ykl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
V2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbQppbmRleCA5NjI5NmNiOGQzMjFlMjBmYzNmNDI2
MWUxNDM5MmViNmQwNzYyMTY3Li43NWFjYzk3NGU1MzYzNjE0MmI0ODY2ZWU0YThmODkyMjEzZWRh
NDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3Zp
ZGVyUGFzdGVib2FyZC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRl
bVByb3ZpZGVyUGFzdGVib2FyZC5tbQpAQCAtMzQsMTAgKzM0LDEwIEBACiAjaW1wb3J0IDxVSUtp
dC9OU0l0ZW1Qcm92aWRlcitVSUtpdEFkZGl0aW9ucy5oPgogI2ltcG9ydCA8VUlLaXQvVUlDb2xv
ci5oPgogI2ltcG9ydCA8VUlLaXQvVUlJbWFnZS5oPgotI2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lz
dGVtLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Bhc3RlYm9hcmQuaD4KICNpbXBvcnQgPHBhbC9zcGkv
aW9zL1VJS2l0U1BJLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KKyNpbXBvcnQgPHd0Zi9G
aWxlU3lzdGVtLmg+CiAjaW1wb3J0IDx3dGYvT1NPYmplY3RQdHIuaD4KICNpbXBvcnQgPHd0Zi9S
ZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgpAQCAtNjk4LDcgKzY5OCw3
IEBAIHN0YXRpYyBOU1VSTCAqbGlua1RlbXBvcmFyeUl0ZW1Qcm92aWRlckZpbGVzVG9Ecm9wU3Rh
Z2luZ0RpcmVjdG9yeShOU1VSTCAqdXJsLCBOCiAgICAgaWYgKCF1cmwpCiAgICAgICAgIHJldHVy
biBuaWw7CiAKLSAgICBOU1N0cmluZyAqdGVtcG9yYXJ5RGF0YUludGVyYWN0aW9uRGlyZWN0b3J5
ID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KGRhdGFJbnRl
cmFjdGlvbkRpcmVjdG9yeVByZWZpeCk7CisgICAgTlNTdHJpbmcgKnRlbXBvcmFyeURhdGFJbnRl
cmFjdGlvbkRpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShk
YXRhSW50ZXJhY3Rpb25EaXJlY3RvcnlQcmVmaXgpOwogICAgIGlmICghdGVtcG9yYXJ5RGF0YUlu
dGVyYWN0aW9uRGlyZWN0b3J5KQogICAgICAgICByZXR1cm4gbmlsOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRmlsZVN5c3RlbU1hYy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9GaWxlU3lzdGVtTWFjLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA4ZWQ3NTFhN2VjMGU1ZDBiYWY3NzRmOTg2MTBhY2IwNDVjZDJiMDA0Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9GaWxlU3lzdGVtTWFjLm1tCisrKyAvZGV2L251bGwKQEAgLTEsODggKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJGaWxlU3lz
dGVtLmgiCi0KLSNpZiBQTEFURk9STShNQUMpCi0KLSNpbXBvcnQgPHBhbC9zcGkvbWFjL01ldGFk
YXRhU1BJLmg+Ci0jaW1wb3J0IDx3dGYvY29jb2EvTlNVUkxFeHRyYXMuaD4KLSNpbXBvcnQgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWJvb2wgRmlsZVN5
c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIGF1
dG8gZmlsZU1hbmFnZXIgPSBhZG9wdE5TKFtbTlNGaWxlTWFuYWdlciBhbGxvY10gaW5pdF0pOwot
Ci0gICAgaWYgKE5TQXJyYXkgKmRpcmVjdG9yeUNvbnRlbnRzID0gW2ZpbGVNYW5hZ2VyIGNvbnRl
bnRzT2ZEaXJlY3RvcnlBdFBhdGg6cGF0aCBlcnJvcjpudWxscHRyXSkgewotICAgICAgICAvLyBF
eHBsaWNpdGx5IGxvb2sgZm9yIGFuZCBkZWxldGUgLkRTX1N0b3JlIGZpbGVzLgotICAgICAgICBp
ZiAoZGlyZWN0b3J5Q29udGVudHMuY291bnQgPT0gMSAmJiBbZGlyZWN0b3J5Q29udGVudHMuZmly
c3RPYmplY3QgaXNFcXVhbFRvU3RyaW5nOkAiLkRTX1N0b3JlIl0pCi0gICAgICAgICAgICBbZmls
ZU1hbmFnZXIgcmVtb3ZlSXRlbUF0UGF0aDpbcGF0aCBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21w
b25lbnQ6ZGlyZWN0b3J5Q29udGVudHMuZmlyc3RPYmplY3RdIGVycm9yOm51bGxwdHJdOwotICAg
IH0KLQotICAgIC8vIHJtZGlyKC4uLikgcmV0dXJucyAwIG9uIHN1Y2Nlc3NmdWwgZGVsZXRpb24g
b2YgdGhlIHBhdGggYW5kIG5vbi16ZXJvIGluIGFueSBvdGhlciBjYXNlIChpbmNsdWRpbmcgaW52
YWxpZCBwZXJtaXNzaW9ucyBvciBub24tZXhpc3RlbnQgZmlsZSkKLSAgICByZXR1cm4gIXJtZGly
KEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCkpOwotfQot
Ci12b2lkIEZpbGVTeXN0ZW06OnNldE1ldGFkYXRhVVJMKGNvbnN0IFN0cmluZyYgcGF0aCwgY29u
c3QgU3RyaW5nJiBtZXRhZGF0YVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiByZWZlcnJlcikKLXsK
LSAgICBTdHJpbmcgdXJsU3RyaW5nOwotICAgIGlmIChOU1VSTCAqdXJsID0gVVJMV2l0aFVzZXJU
eXBlZFN0cmluZyhtZXRhZGF0YVVSTFN0cmluZywgbmlsKSkKLSAgICAgICAgdXJsU3RyaW5nID0g
V1RGOjp1c2VyVmlzaWJsZVN0cmluZyhXVEY6OlVSTEJ5UmVtb3ZpbmdVc2VySW5mbyh1cmwpKTsK
LSAgICBlbHNlCi0gICAgICAgIHVybFN0cmluZyA9IG1ldGFkYXRhVVJMU3RyaW5nOwotCi0gICAg
Ly8gQ2FsbCBNZXRhZGF0YSBBUEkgb24gYSBiYWNrZ3JvdW5kIHF1ZXVlIGJlY2F1c2UgaXQgY2Fu
IHRha2Ugc29tZSB0aW1lLgotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9nbG9iYWxf
cXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVGQVVMVCwgMCksIFtwYXRoID0gcGF0aC5p
c29sYXRlZENvcHkoKSwgdXJsU3RyaW5nID0gdXJsU3RyaW5nLmlzb2xhdGVkQ29weSgpLCByZWZl
cnJlciA9IHJlZmVycmVyLmlzb2xhdGVkQ29weSgpXSB7Ci0gICAgICAgIGF1dG8gaXRlbSA9IGFk
b3B0Q0YoTURJdGVtQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHBhdGguY3JlYXRlQ0ZTdHJp
bmcoKS5nZXQoKSkpOwotICAgICAgICBpZiAoIWl0ZW0pCi0gICAgICAgICAgICByZXR1cm47Ci0K
LSAgICAgICAgYXV0byB3aGVyZUZyb21BdHRyaWJ1dGUgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJy
YXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czp1cmxTdHJpbmcsIG5pbF0pOwotICAgICAgICBpZiAo
IXJlZmVycmVyLmlzTnVsbCgpKQotICAgICAgICAgICAgW3doZXJlRnJvbUF0dHJpYnV0ZSBhZGRP
YmplY3Q6cmVmZXJyZXJdOwotCi0gICAgICAgIE1ESXRlbVNldEF0dHJpYnV0ZShpdGVtLmdldCgp
LCBrTURJdGVtV2hlcmVGcm9tcywgKF9fYnJpZGdlIENGQXJyYXlSZWYpd2hlcmVGcm9tQXR0cmli
dXRlLmdldCgpKTsKLSAgICAgICAgTURJdGVtU2V0QXR0cmlidXRlKGl0ZW0uZ2V0KCksIGtNREl0
ZW1Eb3dubG9hZGVkRGF0ZSwgKF9fYnJpZGdlIENGQXJyYXlSZWYpQFsgW05TRGF0ZSBkYXRlXSBd
KTsKLSAgICB9KTsKLX0KLQotYm9vbCBGaWxlU3lzdGVtOjpjYW5FeGNsdWRlRnJvbUJhY2t1cCgp
Ci17Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgRmlsZVN5c3RlbTo6ZXhjbHVkZUZyb21C
YWNrdXAoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIC8vIEl0IGlzIGNyaXRpY2FsIHRvIHBh
c3MgRkFMU0UgZm9yIGV4Y2x1ZGVCeVBhdGggYmVjYXVzZSBleGNsdWRpbmcgYnkgcGF0aCByZXF1
aXJlcyByb290IHByaXZpbGVnZXMuCi0gICAgQ1NCYWNrdXBTZXRJdGVtRXhjbHVkZWQoRmlsZVN5
c3RlbTo6cGF0aEFzVVJMKHBhdGgpLmdldCgpLCBUUlVFLCBGQUxTRSk7Ci0gICAgcmV0dXJuIHRy
dWU7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFBMQVRGT1JNKE1B
QykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29j
b2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2Nv
YS5tbQppbmRleCBkN2UzZjM5YTY3YjM3M2I4Mzg3OWM4NDA5YzU4YjA4OThkMzQ3OWVjLi5kNzll
MmY2MGM2MDk0MDNhYmRmYzAyYWViZjcwYTI2YmNjZGYyZjNmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRl
ci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCkBAIC0yOSwxMyArMjks
MTMgQEAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9OKQogCiAj
aW5jbHVkZSAiQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0u
aCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFja1ByaXZh
dGUuaCIKICNpbmNsdWRlICJXZWJBdWRpb0J1ZmZlckxpc3QuaCIKICNpbmNsdWRlIDxBVkZvdW5k
YXRpb24vQVZBc3NldFdyaXRlci5oPgogI2luY2x1ZGUgPEFWRm91bmRhdGlvbi9BVkFzc2V0V3Jp
dGVySW5wdXQuaD4KICNpbmNsdWRlIDxwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaD4KKyNpbmNs
dWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiB0eXBlZGVmIEFWQXNzZXRXcml0ZXIgQVZBc3NldFdy
aXRlclR5cGU7CiB0eXBlZGVmIEFWQXNzZXRXcml0ZXJJbnB1dCBBVkFzc2V0V3JpdGVySW5wdXRU
eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0
YUZpbGVSZWZlcmVuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9i
RGF0YUZpbGVSZWZlcmVuY2UuY3BwCmluZGV4IGI2M2YwNjEyYWJmY2I4NjZkYTBjZWQwYTIzNWRj
MTU1OTNmZjA1ZWQuLjVhYmZkNzVjYjQ5NDU2ZTQyZDM5ZDQ0ZDNiYzIyNTlhYWZmYTUyMjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxlUmVm
ZXJlbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRh
RmlsZVJlZmVyZW5jZS5jcHAKQEAgLTI3LDggKzI3LDggQEAKICNpbmNsdWRlICJCbG9iRGF0YUZp
bGVSZWZlcmVuY2UuaCIKIAogI2luY2x1ZGUgIkZpbGUuaCIKLSNpbmNsdWRlICJGaWxlTWV0YWRh
dGEuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVNZXRhZGF0
YS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0
cnlJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5
SW1wbC5jcHAKaW5kZXggODBiNDFlOTc1ZTRkNjE0M2FmNGM5OTYxMTc1NDdiYjg5MmVkYTMxOC4u
MWM3MDZhYTM0NmNhZGRlYTM5ZTUwMGQ4MDMwNGNkNDk0YmQ4MjY4MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCkBAIC0z
NSwxMyArMzUsMTMgQEAKICNpbmNsdWRlICJCbG9iRGF0YS5oIgogI2luY2x1ZGUgIkJsb2JQYXJ0
LmgiCiAjaW5jbHVkZSAiQmxvYlJlc291cmNlSGFuZGxlLmgiCi0jaW5jbHVkZSAiRmlsZU1ldGFk
YXRhLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIlJlc291cmNlRXJyb3Iu
aCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVz
dC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxl
dGlvbkhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZU1ldGFkYXRhLmg+CisjaW5jbHVkZSA8
d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3Bw
CmluZGV4IGM5NGUzOTQ5NGI4ZTMyNmRiNGExMmEyNzIwMWE0NjIzOGRlMThjNGIuLmNjNjdjZTY4
OGYzYmNhMjIyNjkwYjQzZjEwNTg3OGJhOWUzYzI4ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAKQEAgLTM1LDE5
ICszNSwxOSBAQAogI2luY2x1ZGUgIkFzeW5jRmlsZVN0cmVhbS5oIgogI2luY2x1ZGUgIkJsb2JE
YXRhLmgiCiAjaW5jbHVkZSAiRmlsZVN0cmVhbS5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIK
ICNpbmNsdWRlICJIVFRQSGVhZGVyTmFtZXMuaCIKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgog
I2luY2x1ZGUgIlBhcnNlZENvbnRlbnRSYW5nZS5oIgotI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNp
bmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVDbGllbnQu
aCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3Bv
bnNlLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRp
b25IYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYv
TWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Zvcm1EYXRhLmNwcAppbmRleCA1NGU0YWMwNDk2MmEyMjE5MDdlM2I3ZDgwYTRmYmFjYmUy
NTRiMzk5Li43Yjc2YTVlZWRlOTlmOTQ5YzgxZTY5Y2ZlMWJkYmI4OTZjY2MyNjdlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcApAQCAtMjksMTIgKzI5
LDEyIEBACiAjaW5jbHVkZSAiRE9NRm9ybURhdGEuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgog
I2luY2x1ZGUgIkZpbGUuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiRm9y
bURhdGFCdWlsZGVyLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZl
ci5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVCbG9i
UmVnaXN0cnkuaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L0xpbmVFbmRpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5j
cHAKaW5kZXggOWUyZDg4MWQ2MzU0OTE1MjVkNzFhZjQ1NmMyZDE5NWZkMTNiOTRkNi4uYTc0YWU1
YWFjOWNiMjYyM2RjOWNhNWE4YWE0MGFjMzQwMjEyZjJkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3Bw
CkBAIC0zMCwxMSArMzAsMTEgQEAKICNpbmNsdWRlICJGb3JtRGF0YVN0cmVhbUNGTmV0LmgiCiAK
ICNpbmNsdWRlICJCbG9iRGF0YS5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRl
ICJGb3JtRGF0YS5oIgogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAjaW5jbHVkZSA8c3lzL3R5cGVz
Lmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3Rl
bS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQu
aD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQpp
bmRleCAyN2ZmOWQxY2E4ZWZhMWZkZDZlZGYyODg2NDg2NDc5NDlmODgxYTk2Li4yZmVjMWYzODM0
ZTQxMTZhMWRkNGNlYjFmNjMyODk4ZDVlY2UxNDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2Eu
bW0KQEAgLTI4LDEzICsyOCwxMyBAQAogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAKLSNpbXBvcnQg
IkZpbGVTeXN0ZW0uaCIKICNpbXBvcnQgIkZvcm1EYXRhU3RyZWFtTWFjLmgiCiAjaW1wb3J0ICJI
VFRQSGVhZGVyTmFtZXMuaCIKICNpbXBvcnQgIlJlc291cmNlUmVxdWVzdENGTmV0LmgiCiAjaW1w
b3J0ICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91
bmRhdGlvbi5oPgogI2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4KKyNpbXBvcnQg
PHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9Db29raWVKYXJEQi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ29va2llSmFyREIuY3BwCmluZGV4IGMyM2ZkNzJmMTkxNzEwMjA4MmUxMjFlNDRkNThl
ZGQ4YTMyZDFlNzEuLjI2MzYyMjg4Yjg2OWQ4YzdiYjM0MTdmNzZmNDBiNjNjYzU3ZjdhNzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJE
Qi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUph
ckRCLmNwcApAQCAtMjYsMTAgKzI2LDkgQEAKICNpbmNsdWRlICJDb29raWVKYXJEQi5oIgogCiAj
aW5jbHVkZSAiQ29va2llVXRpbC5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRl
ICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiU1FMaXRlRmlsZVN5c3RlbS5oIgotCisjaW5jbHVkZSA8
d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTW9ub3RvbmljVGltZS5oPgogI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuaAppbmRleCBjYmM0NWZlZDJiNjM4ZWE2MmQ5MTJlYzdl
ZDJkNjYxNDNiOGY5ZDZiLi4xMTAyN2NlM2IzY2Y2Mzg4Zjk5NTRhYWY0OWM0OTAzZmU5M2ZkZmY1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENh
Y2hlRW50cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bENhY2hlRW50cnkuaApAQCAtMjYsMTEgKzI2LDExIEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5j
bHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkhUVFBIZWFkZXJNYXAuaCIKICNpbmNsdWRl
ICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1
ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRl
IDx3dGYvTGlzdEhhc2hTZXQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcAppbmRleCA0M2JjMmU3YmZmZjRm
OWJkNmY3MTAyODVkNmQzZDg2MzFiYjc3ODNhLi5mYTVjOGQyZDIxYjYyNzM4MTVkMDIzYTRmMjA0
NTUwMTZlOTYzOGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCkBAIC0zMCwxMiArMzAsMTIgQEAKIAog
I2luY2x1ZGUgIkN1cmxDYWNoZU1hbmFnZXIuaCIKIAotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIK
ICNpbmNsdWRlICJIVFRQSGVhZGVyTWFwLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1
ZGUgIlJlc291cmNlSGFuZGxlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVJbnRl
cm5hbC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgorI2luY2x1ZGUgPHd0Zi9GaWxl
U3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybEZvcm1EYXRhU3RyZWFtLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybEZvcm1EYXRhU3RyZWFt
LmgKaW5kZXggYzhlZjMzM2UwZDhjMGUwMjhlY2Q4YTQ2ZDgyNmI5MDY3MWEwMGUwYy4uMDllN2Zk
YmI0YTJjZmFiNGI5MDczMmYwNjExNGJlMDgxMTNiYjUxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxGb3JtRGF0YVN0cmVhbS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRm9ybURhdGFTdHJlYW0uaApA
QCAtMjYsOCArMjYsOCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkZpbGVTeXN0ZW0u
aCIKICNpbmNsdWRlICJGb3JtRGF0YS5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oCmluZGV4IGZk
YzRiNTkwYzE0MmNmNmRjOTgwNzdkOWY3NWQ3ODY1NjM2MTk2OWQuLjkzY2E2MTAzZmU2M2Q1ZmYw
MzEwNTVjODI1ZDgwMjgyNzY0YWVkYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oCkBAIC0zMiwxMCArMzIsMTAgQEAKICNpbmNs
dWRlICJDdXJsUmVxdWVzdFNjaGVkdWxlckNsaWVudC5oIgogI2luY2x1ZGUgIkN1cmxSZXNwb25z
ZS5oIgogI2luY2x1ZGUgIkN1cmxTU0xWZXJpZmllci5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0u
aCIKICNpbmNsdWRlICJOZXR3b3JrTG9hZE1ldHJpY3MuaCIKICNpbmNsdWRlICJQcm90ZWN0aW9u
U3BhY2UuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKKyNpbmNsdWRlIDx3dGYvRmls
ZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9NZXNzYWdlUXVldWUuaD4KICNpbmNsdWRlIDx3dGYv
TW9ub3RvbmljVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbkN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCmluZGV4IGNlOWEyZmZhNDM2ZjY1Mjk1M2EyMDdiNDEw
NzRjMTkyOTQ3ZjMyZTIuLjAwZTNkMDhiY2Q0N2IxZjVmYWYwNzU1ZDJiZmM1YzNmMjFhZjZjNTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25DdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAKQEAgLTMzLDEwICszMyw5IEBA
CiAjaW5jbHVkZSAiQ29va2llSmFyREIuaCIKICNpbmNsdWRlICJDb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRQcm94eS5oIgogI2luY2x1ZGUgIkN1cmxDb250ZXh0LmgiCi0jaW5jbHVkZSAiRmlsZVN5
c3RlbS5oIgogI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUmVzb3Vy
Y2VIYW5kbGUuaCIKLQorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3Rm
L01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRl
IDx3dGYvVVJMLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCmluZGV4IDBlZWU4ODMxYTUzMGUwZDhi
ODBmYjMyMjYwNWQwNGZiZTVlMjhhM2IuLjAzMmQ0ZGQ4OGZmZjc2YTEwN2JhN2E4NTIzNTQzN2Fh
NDc3ZTgwYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCkBAIC0zOCw3ICszOCw2IEBACiAjaW5j
bHVkZSAiQ3VybENhY2hlTWFuYWdlci5oIgogI2luY2x1ZGUgIkN1cmxDb250ZXh0LmgiCiAjaW5j
bHVkZSAiQ3VybFJlcXVlc3QuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAi
SFRUUFBhcnNlcnMuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya1N0
b3JhZ2VTZXNzaW9uLmgiCkBAIC00OCw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiU3luY2hyb25vdXNM
b2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKICNpbmNsdWRlIDx3dGYv
Q29tcGxldGlvbkhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9CbG9iRGF0YUZpbGVSZWZlcmVu
Y2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9CbG9iRGF0YUZp
bGVSZWZlcmVuY2VNYWMubW0KaW5kZXggZmNmNTVkNzZlYTQ1ZWJiMDY3MDQzZWNkZmM4Y2YwOGNj
OTI0NmEyOS4uYjY5MjkyMGIyMWZjNjYzOWQ1NzQ1ZDFjMDQ0ZThiNzg3ODIzNTBkMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQmxvYkRhdGFGaWxlUmVm
ZXJlbmNlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Js
b2JEYXRhRmlsZVJlZmVyZW5jZU1hYy5tbQpAQCAtMjgsOCArMjgsOCBAQAogCiAjaWYgRU5BQkxF
KEZJTEVfUkVQTEFDRU1FTlQpCiAKLSNpbmNsdWRlICJGaWxlTWV0YWRhdGEuaCIKLSNpbmNsdWRl
ICJGaWxlU3lzdGVtLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVNZXRhZGF0YS5oPgorI2luY2x1ZGUg
PHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL1NvZnRMaW5raW5nLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCmluZGV4IDYzNzM0
YzY3NGM1MmVlOTVkYzZjOWU0MjFjNDY2MGY0MTg0MDBiYWEuLjA4MTVlYTY4OGU3NjY5MjdlNjYz
ZDQwNTYxNDlkYmQzNjhlNjQ2Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCkBAIC0zMiw3ICsz
Miw2IEBACiAjaWYgVVNFKFNPVVApCiAKICNpbmNsdWRlICJDcmVkZW50aWFsU3RvcmFnZS5oIgot
I2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJHVW5pcXVlUHRyU291cC5oIgogI2lu
Y2x1ZGUgIkhUVFBQYXJzZXJzLmgiCiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgpAQCAt
NTcsNiArNTYsNyBAQAogI2luY2x1ZGUgPHVuaXN0ZC5oPgogI2VuZGlmCiAjaW5jbHVkZSA8d3Rm
L0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNs
dWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvUnVuTG9vcFNvdXJj
ZVByaW9yaXR5Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNz
aW9uLmNwcAppbmRleCAzNDNmYWViOWZlYjIxOTRjY2MzZWY3NzlkNzdkM2Y2YjRkMWVkYzg3Li5i
OTY3Nzk1OTgwZWU4ZmE0Yzk5NTAwZmZkZjM0YjQyMDJlYjJhMmRiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNz
aW9uLmNwcApAQCAtMzAsMTMgKzMwLDEzIEBACiAjaW5jbHVkZSAiU291cE5ldHdvcmtTZXNzaW9u
LmgiCiAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgotI2luY2x1ZGUgIkZp
bGVTeXN0ZW0uaCIKICNpbmNsdWRlICJHVW5pcXVlUHRyU291cC5oIgogI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKICNpbmNsdWRlICJTb3VwTmV0d29ya1Byb3h5U2V0dGluZ3MuaCIKICNpbmNsdWRlIDxn
bGliL2dzdGRpby5oPgogI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgogI2luY2x1ZGUgPHBhbC9j
cnlwdG8vQ3J5cHRvRGlnZXN0Lmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNs
dWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDk0ODUxMzUyNTE4ZDYwNmJlYTI1ZWVlYTMzNjE4NTI4MDMzNGNmY2MuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
cG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ5MyArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoK
LSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBw
bGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAq
ICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
Ci0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKLQotI2luY2x1ZGUgIkZp
bGVNZXRhZGF0YS5oIgotI2luY2x1ZGUgPGRpcmVudC5oPgotI2luY2x1ZGUgPGVycm5vLmg+Ci0j
aW5jbHVkZSA8ZmNudGwuaD4KLSNpbmNsdWRlIDxmbm1hdGNoLmg+Ci0jaW5jbHVkZSA8bGliZ2Vu
Lmg+Ci0jaW5jbHVkZSA8c3RkaW8uaD4KLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgotI2luY2x1ZGUg
PHN5cy9zdGF0dmZzLmg+Ci0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaW5jbHVkZSA8dW5pc3Rk
Lmg+Ci0jaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgotI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBG
aWxlU3lzdGVtIHsKLQotYm9vbCBmaWxlRXhpc3RzKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAg
ICBpZiAocGF0aC5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgQ1N0cmlu
ZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKLQotICAgIGlmICghZnNS
ZXAuZGF0YSgpIHx8IGZzUmVwLmRhdGEoKVswXSA9PSAnXDAnKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICByZXR1cm4gYWNjZXNzKGZzUmVwLmRhdGEoKSwgRl9PSykgIT0gLTE7Ci19Ci0K
LWJvb2wgZGVsZXRlRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgQ1N0cmluZyBmc1Jl
cCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKLQotICAgIGlmICghZnNSZXAuZGF0
YSgpIHx8IGZzUmVwLmRhdGEoKVswXSA9PSAnXDAnKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICAvLyB1bmxpbmsoLi4uKSByZXR1cm5zIDAgb24gc3VjY2Vzc2Z1bCBkZWxldGlvbiBvZiB0
aGUgcGF0aCBhbmQgbm9uLXplcm8gaW4gYW55IG90aGVyIGNhc2UgKGluY2x1ZGluZyBpbnZhbGlk
IHBlcm1pc3Npb25zIG9yIG5vbi1leGlzdGVudCBmaWxlKQotICAgIHJldHVybiAhdW5saW5rKGZz
UmVwLmRhdGEoKSk7Ci19Ci0KLVBsYXRmb3JtRmlsZUhhbmRsZSBvcGVuRmlsZShjb25zdCBTdHJp
bmcmIHBhdGgsIEZpbGVPcGVuTW9kZSBtb2RlKQotewotICAgIENTdHJpbmcgZnNSZXAgPSBmaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7Ci0KLSAgICBpZiAoZnNSZXAuaXNOdWxsKCkpCi0g
ICAgICAgIHJldHVybiBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOwotCi0gICAgaW50IHBsYXRm
b3JtRmxhZyA9IDA7Ci0gICAgaWYgKG1vZGUgPT0gRmlsZU9wZW5Nb2RlOjpSZWFkKQotICAgICAg
ICBwbGF0Zm9ybUZsYWcgfD0gT19SRE9OTFk7Ci0gICAgZWxzZSBpZiAobW9kZSA9PSBGaWxlT3Bl
bk1vZGU6OldyaXRlKQotICAgICAgICBwbGF0Zm9ybUZsYWcgfD0gKE9fV1JPTkxZIHwgT19DUkVB
VCB8IE9fVFJVTkMpOwotI2lmIE9TKERBUldJTikKLSAgICBlbHNlIGlmIChtb2RlID09IEZpbGVP
cGVuTW9kZTo6RXZlbnRzT25seSkKLSAgICAgICAgcGxhdGZvcm1GbGFnIHw9IE9fRVZUT05MWTsK
LSNlbmRpZgotCi0gICAgcmV0dXJuIG9wZW4oZnNSZXAuZGF0YSgpLCBwbGF0Zm9ybUZsYWcsIDA2
NjYpOwotfQotCi12b2lkIGNsb3NlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKLXsK
LSAgICBpZiAoaXNIYW5kbGVWYWxpZChoYW5kbGUpKSB7Ci0gICAgICAgIGNsb3NlKGhhbmRsZSk7
Ci0gICAgICAgIGhhbmRsZSA9IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7Ci0gICAgfQotfQot
Ci1sb25nIGxvbmcgc2Vla0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgbG9uZyBsb25n
IG9mZnNldCwgRmlsZVNlZWtPcmlnaW4gb3JpZ2luKQotewotICAgIGludCB3aGVuY2UgPSBTRUVL
X1NFVDsKLSAgICBzd2l0Y2ggKG9yaWdpbikgewotICAgIGNhc2UgRmlsZVNlZWtPcmlnaW46OkJl
Z2lubmluZzoKLSAgICAgICAgd2hlbmNlID0gU0VFS19TRVQ7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgRmlsZVNlZWtPcmlnaW46OkN1cnJlbnQ6Ci0gICAgICAgIHdoZW5jZSA9IFNFRUtfQ1VS
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEZpbGVTZWVrT3JpZ2luOjpFbmQ6Ci0gICAgICAg
IHdoZW5jZSA9IFNFRUtfRU5EOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGxv
bmcgbG9uZz4obHNlZWsoaGFuZGxlLCBvZmZzZXQsIHdoZW5jZSkpOwotfQotCi1ib29sIHRydW5j
YXRlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0KQotewot
ICAgIC8vIGZ0cnVuY2F0ZSByZXR1cm5zIDAgdG8gaW5kaWNhdGUgdGhlIHN1Y2Nlc3MuCi0gICAg
cmV0dXJuICFmdHJ1bmNhdGUoaGFuZGxlLCBvZmZzZXQpOwotfQotCi1pbnQgd3JpdGVUb0ZpbGUo
UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkK
LXsKLSAgICBkbyB7Ci0gICAgICAgIGludCBieXRlc1dyaXR0ZW4gPSB3cml0ZShoYW5kbGUsIGRh
dGEsIHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSk7Ci0gICAgICAgIGlmIChieXRlc1dyaXR0
ZW4gPj0gMCkKLSAgICAgICAgICAgIHJldHVybiBieXRlc1dyaXR0ZW47Ci0gICAgfSB3aGlsZSAo
ZXJybm8gPT0gRUlOVFIpOwotICAgIHJldHVybiAtMTsKLX0KLQotaW50IHJlYWRGcm9tRmlsZShQ
bGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQotewotICAg
IGRvIHsKLSAgICAgICAgaW50IGJ5dGVzUmVhZCA9IHJlYWQoaGFuZGxlLCBkYXRhLCBzdGF0aWNf
Y2FzdDxzaXplX3Q+KGxlbmd0aCkpOwotICAgICAgICBpZiAoYnl0ZXNSZWFkID49IDApCi0gICAg
ICAgICAgICByZXR1cm4gYnl0ZXNSZWFkOwotICAgIH0gd2hpbGUgKGVycm5vID09IEVJTlRSKTsK
LSAgICByZXR1cm4gLTE7Ci19Ci0KLSNpZiBVU0UoRklMRV9MT0NLKQotYm9vbCBsb2NrRmlsZShQ
bGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBPcHRpb25TZXQ8RmlsZUxvY2tNb2RlPiBsb2NrTW9k
ZSkKLXsKLSAgICBDT01QSUxFX0FTU0VSVChMT0NLX1NIID09IFdURjo6ZW51bVRvVW5kZXJseWlu
Z1R5cGUoRmlsZUxvY2tNb2RlOjpTaGFyZWQpLCBMb2NrU2hhcmVkRW5jb2RpbmdJc0FzRXhwZWN0
ZWQpOwotICAgIENPTVBJTEVfQVNTRVJUKExPQ0tfRVggPT0gV1RGOjplbnVtVG9VbmRlcmx5aW5n
VHlwZShGaWxlTG9ja01vZGU6OkV4Y2x1c2l2ZSksIExvY2tFeGNsdXNpdmVFbmNvZGluZ0lzQXNF
eHBlY3RlZCk7Ci0gICAgQ09NUElMRV9BU1NFUlQoTE9DS19OQiA9PSBXVEY6OmVudW1Ub1VuZGVy
bHlpbmdUeXBlKEZpbGVMb2NrTW9kZTo6Tm9uYmxvY2tpbmcpLCBMb2NrTm9uYmxvY2tpbmdFbmNv
ZGluZ0lzQXNFeHBlY3RlZCk7Ci0gICAgaW50IHJlc3VsdCA9IGZsb2NrKGhhbmRsZSwgbG9ja01v
ZGUudG9SYXcoKSk7Ci0gICAgcmV0dXJuIChyZXN1bHQgIT0gLTEpOwotfQotCi1ib29sIHVubG9j
a0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSkKLXsKLSAgICBpbnQgcmVzdWx0ID0gZmxv
Y2soaGFuZGxlLCBMT0NLX1VOKTsKLSAgICByZXR1cm4gKHJlc3VsdCAhPSAtMSk7Ci19Ci0jZW5k
aWYKLQotI2lmICFQTEFURk9STShNQUMpCi1ib29sIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KGNvbnN0
IFN0cmluZyYgcGF0aCkKLXsKLSAgICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKHBhdGgpOwotCi0gICAgaWYgKCFmc1JlcC5kYXRhKCkgfHwgZnNSZXAuZGF0YSgpWzBd
ID09ICdcMCcpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIHJtZGlyKC4uLikgcmV0
dXJucyAwIG9uIHN1Y2Nlc3NmdWwgZGVsZXRpb24gb2YgdGhlIHBhdGggYW5kIG5vbi16ZXJvIGlu
IGFueSBvdGhlciBjYXNlIChpbmNsdWRpbmcgaW52YWxpZCBwZXJtaXNzaW9ucyBvciBub24tZXhp
c3RlbnQgZmlsZSkKLSAgICByZXR1cm4gIXJtZGlyKGZzUmVwLmRhdGEoKSk7Ci19Ci0jZW5kaWYK
LQotYm9vbCBnZXRGaWxlU2l6ZShjb25zdCBTdHJpbmcmIHBhdGgsIGxvbmcgbG9uZyYgcmVzdWx0
KQotewotICAgIENTdHJpbmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7
Ci0KLSAgICBpZiAoIWZzUmVwLmRhdGEoKSB8fCBmc1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgc3RydWN0IHN0YXQgZmlsZUluZm87Ci0KLSAgICBp
ZiAoc3RhdChmc1JlcC5kYXRhKCksICZmaWxlSW5mbykpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIHJlc3VsdCA9IGZpbGVJbmZvLnN0X3NpemU7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0K
LWJvb2wgZ2V0RmlsZVNpemUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgbG9uZyBsb25nJiBy
ZXN1bHQpCi17Ci0gICAgc3RydWN0IHN0YXQgZmlsZUluZm87Ci0gICAgaWYgKGZzdGF0KGhhbmRs
ZSwgJmZpbGVJbmZvKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmVzdWx0ID0gZmls
ZUluZm8uc3Rfc2l6ZTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotT3B0aW9uYWw8V2FsbFRpbWU+
IGdldEZpbGVDcmVhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoKQotewotI2lmIE9TKERBUldJ
TikgfHwgT1MoT1BFTkJTRCkgfHwgT1MoTkVUQlNEKSB8fCBPUyhGUkVFQlNEKQotICAgIENTdHJp
bmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7Ci0KLSAgICBpZiAoIWZz
UmVwLmRhdGEoKSB8fCBmc1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKLQotICAgIHN0cnVjdCBzdGF0IGZpbGVJbmZvOwotCi0gICAgaWYgKHN0YXQo
ZnNSZXAuZGF0YSgpLCAmZmlsZUluZm8pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owot
Ci0gICAgcmV0dXJuIFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhmaWxlSW5mby5zdF9iaXJ0aHRp
bWUpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0ocGF0aCk7Ci0gICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKLSNlbmRpZgotfQotCi1PcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZU1vZGlmaWNhdGlv
blRpbWUoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIENTdHJpbmcgZnNSZXAgPSBmaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24ocGF0aCk7Ci0KLSAgICBpZiAoIWZzUmVwLmRhdGEoKSB8fCBmc1Jl
cC5kYXRhKClbMF0gPT0gJ1wwJykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAg
IHN0cnVjdCBzdGF0IGZpbGVJbmZvOwotCi0gICAgaWYgKHN0YXQoZnNSZXAuZGF0YSgpLCAmZmls
ZUluZm8pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgcmV0dXJuIFdhbGxU
aW1lOjpmcm9tUmF3U2Vjb25kcyhmaWxlSW5mby5zdF9tdGltZSk7Ci19Ci0KLXN0YXRpYyBGaWxl
TWV0YWRhdGE6OlR5cGUgdG9GaWxlTWV0YXRhVHlwZShzdHJ1Y3Qgc3RhdCBmaWxlSW5mbykKLXsK
LSAgICBpZiAoU19JU0RJUihmaWxlSW5mby5zdF9tb2RlKSkKLSAgICAgICAgcmV0dXJuIEZpbGVN
ZXRhZGF0YTo6VHlwZTo6RGlyZWN0b3J5OwotICAgIGlmIChTX0lTTE5LKGZpbGVJbmZvLnN0X21v
ZGUpKQotICAgICAgICByZXR1cm4gRmlsZU1ldGFkYXRhOjpUeXBlOjpTeW1ib2xpY0xpbms7Ci0g
ICAgcmV0dXJuIEZpbGVNZXRhZGF0YTo6VHlwZTo6RmlsZTsKLX0KLQotc3RhdGljIE9wdGlvbmFs
PEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhVXNpbmdGdW5jdGlvbihjb25zdCBTdHJpbmcmIHBh
dGgsIGludCAoKnN0YXRGdW5jKShjb25zdCBjaGFyKiwgc3RydWN0IHN0YXQqKSkKLXsKLSAgICBD
U3RyaW5nIGZzUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwotCi0gICAgaWYg
KCFmc1JlcC5kYXRhKCkgfHwgZnNSZXAuZGF0YSgpWzBdID09ICdcMCcpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7Ci0KLSAgICBzdHJ1Y3Qgc3RhdCBmaWxlSW5mbzsKLSAgICBpZiAoc3Rh
dEZ1bmMoZnNSZXAuZGF0YSgpLCAmZmlsZUluZm8pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwotCi0gICAgU3RyaW5nIGZpbGVuYW1lID0gcGF0aEdldEZpbGVOYW1lKHBhdGgpOwotICAg
IGJvb2wgaXNIaWRkZW4gPSAhZmlsZW5hbWUuaXNFbXB0eSgpICYmIGZpbGVuYW1lWzBdID09ICcu
JzsKLSAgICByZXR1cm4gRmlsZU1ldGFkYXRhIHsKLSAgICAgICAgV2FsbFRpbWU6OmZyb21SYXdT
ZWNvbmRzKGZpbGVJbmZvLnN0X210aW1lKSwKLSAgICAgICAgZmlsZUluZm8uc3Rfc2l6ZSwKLSAg
ICAgICAgaXNIaWRkZW4sCi0gICAgICAgIHRvRmlsZU1ldGF0YVR5cGUoZmlsZUluZm8pCi0gICAg
fTsKLX0KLQotT3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGEoY29uc3QgU3RyaW5n
JiBwYXRoKQotewotICAgIHJldHVybiBmaWxlTWV0YWRhdGFVc2luZ0Z1bmN0aW9uKHBhdGgsICZs
c3RhdCk7Ci19Ci0KLU9wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhRm9sbG93aW5n
U3ltbGlua3MoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIHJldHVybiBmaWxlTWV0YWRhdGFV
c2luZ0Z1bmN0aW9uKHBhdGgsICZzdGF0KTsKLX0KLQotYm9vbCBjcmVhdGVTeW1ib2xpY0xpbmso
Y29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGljTGlua1BhdGgp
Ci17Ci0gICAgQ1N0cmluZyB0YXJnZXRQYXRoRlNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24odGFyZ2V0UGF0aCk7Ci0gICAgaWYgKCF0YXJnZXRQYXRoRlNSZXAuZGF0YSgpIHx8IHRhcmdl
dFBhdGhGU1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgQ1N0cmluZyBzeW1ib2xpY0xpbmtQYXRoRlNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oc3ltYm9saWNMaW5rUGF0aCk7Ci0gICAgaWYgKCFzeW1ib2xpY0xpbmtQYXRoRlNSZXAuZGF0
YSgpIHx8IHN5bWJvbGljTGlua1BhdGhGU1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuICFzeW1saW5rKHRhcmdldFBhdGhGU1JlcC5kYXRh
KCksIHN5bWJvbGljTGlua1BhdGhGU1JlcC5kYXRhKCkpOwotfQotCi1TdHJpbmcgcGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb21wb25l
bnQpCi17Ci0gICAgaWYgKHBhdGguZW5kc1dpdGgoJy8nKSkKLSAgICAgICAgcmV0dXJuIHBhdGgg
KyBjb21wb25lbnQ7Ci0gICAgcmV0dXJuIHBhdGggKyAiLyIgKyBjb21wb25lbnQ7Ci19Ci0KLVN0
cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKFN0cmluZ1ZpZXcgcGF0aCwgY29uc3QgVmVj
dG9yPFN0cmluZ1ZpZXc+JiBjb21wb25lbnRzKQotewotICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRl
cjsKLSAgICBidWlsZGVyLmFwcGVuZChwYXRoKTsKLSAgICBmb3IgKGF1dG8mIGNvbXBvbmVudCA6
IGNvbXBvbmVudHMpIHsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoJy8nKTsKLSAgICAgICAgYnVp
bGRlci5hcHBlbmQoY29tcG9uZW50KTsKLSAgICB9Ci0gICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJp
bmcoKTsKLX0KLQotYm9vbCBtYWtlQWxsRGlyZWN0b3JpZXMoY29uc3QgU3RyaW5nJiBwYXRoKQot
ewotICAgIENTdHJpbmcgZnVsbFBhdGggPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7
Ci0gICAgaWYgKCFhY2Nlc3MoZnVsbFBhdGguZGF0YSgpLCBGX09LKSkKLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0KLSAgICBjaGFyKiBwID0gZnVsbFBhdGgubXV0YWJsZURhdGEoKSArIDE7Ci0gICAg
aW50IGxlbmd0aCA9IGZ1bGxQYXRoLmxlbmd0aCgpOwotCi0gICAgaWYocFtsZW5ndGggLSAxXSA9
PSAnLycpCi0gICAgICAgIHBbbGVuZ3RoIC0gMV0gPSAnXDAnOwotICAgIGZvciAoOyAqcDsgKytw
KQotICAgICAgICBpZiAoKnAgPT0gJy8nKSB7Ci0gICAgICAgICAgICAqcCA9ICdcMCc7Ci0gICAg
ICAgICAgICBpZiAoYWNjZXNzKGZ1bGxQYXRoLmRhdGEoKSwgRl9PSykpCi0gICAgICAgICAgICAg
ICAgaWYgKG1rZGlyKGZ1bGxQYXRoLmRhdGEoKSwgU19JUldYVSkpCi0gICAgICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICpwID0gJy8nOwotICAgICAgICB9Ci0gICAg
aWYgKGFjY2VzcyhmdWxsUGF0aC5kYXRhKCksIEZfT0spKQotICAgICAgICBpZiAobWtkaXIoZnVs
bFBhdGguZGF0YSgpLCBTX0lSV1hVKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IHJldHVybiB0cnVlOwotfQotCi1TdHJpbmcgcGF0aEdldEZpbGVOYW1lKGNvbnN0IFN0cmluZyYg
cGF0aCkKLXsKLSAgICByZXR1cm4gcGF0aC5zdWJzdHJpbmcocGF0aC5yZXZlcnNlRmluZCgnLycp
ICsgMSk7Ci19Ci0KLVN0cmluZyBkaXJlY3RvcnlOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsK
LSAgICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwotCi0g
ICAgaWYgKCFmc1JlcC5kYXRhKCkgfHwgZnNSZXAuZGF0YSgpWzBdID09ICdcMCcpCi0gICAgICAg
IHJldHVybiBTdHJpbmcoKTsKLQotICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGRpcm5hbWUo
ZnNSZXAubXV0YWJsZURhdGEoKSkpOwotfQotCi1WZWN0b3I8U3RyaW5nPiBsaXN0RGlyZWN0b3J5
KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBmaWx0ZXIpCi17Ci0gICAgVmVjdG9y
PFN0cmluZz4gZW50cmllczsKLSAgICBDU3RyaW5nIGNwYXRoID0gZmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKHBhdGgpOwotICAgIENTdHJpbmcgY2ZpbHRlciA9IGZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihmaWx0ZXIpOwotICAgIERJUiogZGlyID0gb3BlbmRpcihjcGF0aC5kYXRhKCkpOwotICAg
IGlmIChkaXIpIHsKLSAgICAgICAgc3RydWN0IGRpcmVudCogZHA7Ci0gICAgICAgIHdoaWxlICgo
ZHAgPSByZWFkZGlyKGRpcikpKSB7Ci0gICAgICAgICAgICBjb25zdCBjaGFyKiBuYW1lID0gZHAt
PmRfbmFtZTsKLSAgICAgICAgICAgIGlmICghc3RyY21wKG5hbWUsICIuIikgfHwgIXN0cmNtcChu
YW1lLCAiLi4iKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGlmIChm
bm1hdGNoKGNmaWx0ZXIuZGF0YSgpLCBuYW1lLCAwKSkKLSAgICAgICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgICAgIGNoYXIgZmlsZVBhdGhbUEFUSF9NQVhdOwotICAgICAgICAgICAgaWYg
KHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKGZpbGVQYXRoKSAtIDEpIDwgc25wcmludGYoZmlsZVBh
dGgsIHNpemVvZihmaWxlUGF0aCksICIlcy8lcyIsIGNwYXRoLmRhdGEoKSwgbmFtZSkpCi0gICAg
ICAgICAgICAgICAgY29udGludWU7IC8vIGJ1ZmZlciBvdmVyZmxvdwotCi0gICAgICAgICAgICBh
dXRvIHN0cmluZyA9IHN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZVBhdGgp
OwotCi0gICAgICAgICAgICAvLyBTb21lIGZpbGUgc3lzdGVtIHJlcHJlc2VudGF0aW9ucyBjYW5u
b3QgYmUgcmVwcmVzZW50ZWQgYXMgYSBVVEYtMTYgc3RyaW5nLAotICAgICAgICAgICAgLy8gc28g
dGhpcyBzdHJpbmcgbWlnaHQgYmUgbnVsbC4KLSAgICAgICAgICAgIGlmICghc3RyaW5nLmlzTnVs
bCgpKQotICAgICAgICAgICAgICAgIGVudHJpZXMuYXBwZW5kKFdURk1vdmUoc3RyaW5nKSk7Ci0g
ICAgICAgIH0KLSAgICAgICAgY2xvc2VkaXIoZGlyKTsKLSAgICB9Ci0gICAgcmV0dXJuIGVudHJp
ZXM7Ci19Ci0KLSNpZiAhUExBVEZPUk0oQ09DT0EpCi1TdHJpbmcgc3RyaW5nRnJvbUZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihjb25zdCBjaGFyKiBwYXRoKQotewotICAgIGlmICghcGF0aCkKLSAg
ICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgocGF0
aCk7Ci19Ci0KLUNTdHJpbmcgZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYg
cGF0aCkKLXsKLSAgICByZXR1cm4gcGF0aC51dGY4KCk7Ci19Ci0KLWJvb2wgbW92ZUZpbGUoY29u
c3QgU3RyaW5nJiBvbGRQYXRoLCBjb25zdCBTdHJpbmcmIG5ld1BhdGgpCi17Ci0gICAgYXV0byBv
bGRGaWxlbmFtZSA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihvbGRQYXRoKTsKLSAgICBpZiAo
b2xkRmlsZW5hbWUuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8g
bmV3RmlsZW5hbWUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24obmV3UGF0aCk7Ci0gICAgaWYg
KG5ld0ZpbGVuYW1lLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1
cm4gcmVuYW1lKG9sZEZpbGVuYW1lLmRhdGEoKSwgbmV3RmlsZW5hbWUuZGF0YSgpKSAhPSAtMTsK
LX0KLQotYm9vbCBnZXRWb2x1bWVGcmVlU3BhY2UoY29uc3QgU3RyaW5nJiBwYXRoLCB1aW50NjRf
dCYgZnJlZVNwYWNlKQotewotICAgIHN0cnVjdCBzdGF0dmZzIGZpbGVTeXN0ZW1TdGF0OwotICAg
IGlmIChzdGF0dmZzKGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCksICZmaWxl
U3lzdGVtU3RhdCkpIHsKLSAgICAgICAgZnJlZVNwYWNlID0gZmlsZVN5c3RlbVN0YXQuZl9iYXZh
aWwgKiBmaWxlU3lzdGVtU3RhdC5mX2Zyc2l6ZTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
fQotICAgIHJldHVybiBmYWxzZTsKLX0KLSNlbmRpZgotCi0jaWYgIU9TKERBUldJTikKLVN0cmlu
ZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFu
ZGxlJiBoYW5kbGUpCi17Ci0gICAgY2hhciBidWZmZXJbUEFUSF9NQVhdOwotICAgIGNvbnN0IGNo
YXIqIHRtcERpciA9IGdldGVudigiVE1QRElSIik7Ci0KLSAgICBpZiAoIXRtcERpcikKLSAgICAg
ICAgdG1wRGlyID0gIi90bXAiOwotCi0gICAgaWYgKHNucHJpbnRmKGJ1ZmZlciwgUEFUSF9NQVgs
ICIlcy8lc1hYWFhYWCIsIHRtcERpciwgcHJlZml4LnV0ZjgoKS5kYXRhKCkpID49IFBBVEhfTUFY
KQotICAgICAgICBnb3RvIGVuZDsKLQotICAgIGhhbmRsZSA9IG1rc3RlbXAoYnVmZmVyKTsKLSAg
ICBpZiAoaGFuZGxlIDwgMCkKLSAgICAgICAgZ290byBlbmQ7Ci0KLSAgICByZXR1cm4gU3RyaW5n
Ojpmcm9tVVRGOChidWZmZXIpOwotCi1lbmQ6Ci0gICAgaGFuZGxlID0gaW52YWxpZFBsYXRmb3Jt
RmlsZUhhbmRsZTsKLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0jZW5kaWYKLQotYm9vbCBoYXJk
TGlua09yQ29weUZpbGUoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgZGVzdGlu
YXRpb24pCi17Ci0gICAgaWYgKHNvdXJjZS5pc0VtcHR5KCkgfHwgZGVzdGluYXRpb24uaXNFbXB0
eSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBDU3RyaW5nIGZzU291cmNlID0gZmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKHNvdXJjZSk7Ci0gICAgaWYgKCFmc1NvdXJjZS5kYXRhKCkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIENTdHJpbmcgZnNEZXN0aW5hdGlvbiA9IGZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihkZXN0aW5hdGlvbik7Ci0gICAgaWYgKCFmc0Rlc3RpbmF0
aW9uLmRhdGEoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFsaW5rKGZzU291
cmNlLmRhdGEoKSwgZnNEZXN0aW5hdGlvbi5kYXRhKCkpKQotICAgICAgICByZXR1cm4gdHJ1ZTsK
LQotICAgIC8vIEhhcmQgbGluayBmYWlsZWQuIFBlcmZvcm0gYSBjb3B5IGluc3RlYWQuCi0gICAg
YXV0byBoYW5kbGUgPSBvcGVuKGZzRGVzdGluYXRpb24uZGF0YSgpLCBPX1dST05MWSB8IE9fQ1JF
QVQgfCBPX0VYQ0wsIDA2NjYpOwotICAgIGlmIChoYW5kbGUgPT0gLTEpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIGJvb2wgYXBwZW5kUmVzdWx0ID0gYXBwZW5kRmlsZUNvbnRlbnRzVG9G
aWxlSGFuZGxlKHNvdXJjZSwgaGFuZGxlKTsKLSAgICBjbG9zZShoYW5kbGUpOwotCi0gICAgLy8g
SWYgdGhlIGNvcHkgZmFpbGVkLCBkZWxldGUgdGhlIHVudXNhYmxlIGZpbGUuCi0gICAgaWYgKCFh
cHBlbmRSZXN1bHQpCi0gICAgICAgIHVubGluayhmc0Rlc3RpbmF0aW9uLmRhdGEoKSk7Ci0KLSAg
ICByZXR1cm4gYXBwZW5kUmVzdWx0OwotfQotCi1PcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2
aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQotewotICAgIHN0cnVjdCBzdGF0IGZpbGVTdGF0
OwotICAgIGlmIChzdGF0KGZzRmlsZS5kYXRhKCksICZmaWxlU3RhdCkgPT0gLTEpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICByZXR1cm4gZmlsZVN0YXQuc3RfZGV2OwotfQot
Ci1TdHJpbmcgcmVhbFBhdGgoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKLXsKLSAgICBDU3RyaW5n
IGZzUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVQYXRoKTsKLSAgICBjaGFyIHJl
c29sdmVkTmFtZVtQQVRIX01BWF07Ci0gICAgY29uc3QgY2hhciogcmVzdWx0ID0gcmVhbHBhdGgo
ZnNSZXAuZGF0YSgpLCByZXNvbHZlZE5hbWUpOwotICAgIHJldHVybiByZXN1bHQgPyBTdHJpbmc6
OmZyb21VVEY4KHJlc3VsdCkgOiBmaWxlUGF0aDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgRmlsZVN5
c3RlbQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVyUE9TSVguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVyUE9TSVguY3BwCmluZGV4IDUxMzM3NWQyNDVlZjQ1YzE5
NmE4NTQ2MTVjZTcwYjc4YTkwY2VjZmYuLjhlZDU3MTc0Nzc4Y2I3YmRhZGNhMzY1MTdmZDc5NDQ1
NzM4YzUyZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L1NoYXJl
ZEJ1ZmZlclBPU0lYLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9TaGFy
ZWRCdWZmZXJQT1NJWC5jcHAKQEAgLTI2LDExICsyNiwxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgot
CiAjaW5jbHVkZSA8ZmNudGwuaD4KICNpbmNsdWRlIDxzeXMvc3RhdC5oPgogI2luY2x1ZGUgPHVu
aXN0ZC5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5jcHAKaW5kZXggOTBjMjBjN2JjZTZhNjdiNjdk
NTNkNWM0MDUzNzc2YmYxNGM3ZTVlNS4uMzY0YmZmNzEwNzQ5Nzg5NmY3YjFkNzU3YTdkOWE1ZmMz
YWQzZjY0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUZp
bGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxl
U3lzdGVtLmNwcApAQCAtMzEsMTAgKzMxLDEwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiU1FMaXRlRmlsZVN5c3RlbS5oIgogCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2lu
Y2x1ZGUgIlNRTGl0ZURhdGFiYXNlLmgiCiAjaW5jbHVkZSAiU1FMaXRlU3RhdGVtZW50LmgiCiAj
aW5jbHVkZSA8c3FsaXRlMy5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogI2luY2x1ZGUgPHBhbC9zcGkvaW9zL1NRTGl0ZTNTUEkuaD4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaHlwaGVuL0h5cGhlbmF0
aW9uTGliSHlwaGVuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaHlwaGVuL0h5
cGhlbmF0aW9uTGliSHlwaGVuLmNwcAppbmRleCAyZDdiNjZkOTM3OTA1ZGNjMjJmNGExM2U5NWEw
YWYwNmJiNDhiN2FmLi41ZWViOWJmYTc0MDBmNzIxNWMwMjZjNTUyZDgyYWEzOGE3NjNmOTQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlv
bkxpYkh5cGhlbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9oeXBoZW4v
SHlwaGVuYXRpb25MaWJIeXBoZW4uY3BwCkBAIC0yOSwxMCArMjksMTAgQEAKIAogI2lmIFVTRShM
SUJIWVBIRU4pCiAKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSA8aHlwaGVuLmg+
CiAjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHd0Zi9G
aWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvVGlueUxSVUNhY2hlLmg+CkBAIC0yMjQsNyAr
MjI0LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJlZlB0cjxXZWJDb3JlOjpIeXBoZW5hdGlv
bkRpY3Rpb25hcnk+IGNyZWF0ZVZhbHVlRm9yS2V5KGNvbnN0IEF0b21pY1N0cmluZyYgZGljdGlv
bmFyeVBhdGgpCiAgICAgewotICAgICAgICByZXR1cm4gV2ViQ29yZTo6SHlwaGVuYXRpb25EaWN0
aW9uYXJ5OjpjcmVhdGUoV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKGRpY3Rpb25hcnlQYXRoLnN0cmluZygpKSk7CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpI
eXBoZW5hdGlvbkRpY3Rpb25hcnk6OmNyZWF0ZShGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZGljdGlvbmFyeVBhdGguc3RyaW5nKCkpKTsKICAgICB9CiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdpbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdpbi5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGJiNzAyY2IwMTIwYWJiZjI1ODUyOWZhZjk0MzEwZGRmZmZkZjYwODQu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
NTg5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhLCBMdGQu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKLSAqIDMuICBOZWl0aGVy
IHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAg
ICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5o
IgotCi0jaW5jbHVkZSAiRmlsZU1ldGFkYXRhLmgiCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQu
aCIKLSNpbmNsdWRlICJQYXRoV2Fsa2VyLmgiCi0jaW5jbHVkZSA8aW8uaD4KLSNpbmNsdWRlIDxz
aGxvYmouaD4KLSNpbmNsdWRlIDxzaGx3YXBpLmg+Ci0jaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSNp
bmNsdWRlIDx3aW5kb3dzLmg+Ci0jaW5jbHVkZSA8d3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9t
TnVtYmVyLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgotI2luY2x1ZGUg
PHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLW5hbWVzcGFjZSBGaWxlU3lzdGVtIHsKLQotc3RhdGljIGNvbnN0IFVMT05HTE9ORyBrU2Vj
b25kc0Zyb21GaWxlVGltZVRvVGltZXQgPSAxMTY0NDQ3MzYwMDsKLQotc3RhdGljIGJvb2wgZ2V0
RmluZERhdGEoU3RyaW5nIHBhdGgsIFdJTjMyX0ZJTkRfREFUQVcmIGZpbmREYXRhKQotewotICAg
IEhBTkRMRSBoYW5kbGUgPSBGaW5kRmlyc3RGaWxlVyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0No
YXIocGF0aCkuZGF0YSgpLCAmZmluZERhdGEpOwotICAgIGlmIChoYW5kbGUgPT0gSU5WQUxJRF9I
QU5ETEVfVkFMVUUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBGaW5kQ2xvc2UoaGFuZGxl
KTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotc3RhdGljIGJvb2wgZ2V0RmlsZVNpemVGcm9tRmlu
ZERhdGEoY29uc3QgV0lOMzJfRklORF9EQVRBVyYgZmluZERhdGEsIGxvbmcgbG9uZyYgc2l6ZSkK
LXsKLSAgICBVTEFSR0VfSU5URUdFUiBmaWxlU2l6ZTsKLSAgICBmaWxlU2l6ZS5IaWdoUGFydCA9
IGZpbmREYXRhLm5GaWxlU2l6ZUhpZ2g7Ci0gICAgZmlsZVNpemUuTG93UGFydCA9IGZpbmREYXRh
Lm5GaWxlU2l6ZUxvdzsKLQotICAgIGlmIChmaWxlU2l6ZS5RdWFkUGFydCA+IHN0YXRpY19jYXN0
PFVMT05HTE9ORz4oc3RkOjpudW1lcmljX2xpbWl0czxsb25nIGxvbmc+OjptYXgoKSkpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIHNpemUgPSBmaWxlU2l6ZS5RdWFkUGFydDsKLSAgICBy
ZXR1cm4gdHJ1ZTsKLX0KLQotc3RhdGljIGJvb2wgZ2V0RmlsZVNpemVGcm9tQnlIYW5kbGVGaWxl
SW5mb3JtYXRpb25TdHJ1Y3R1cmUoY29uc3QgQllfSEFORExFX0ZJTEVfSU5GT1JNQVRJT04mIGZp
bGVJbmZvcm1hdGlvbiwgbG9uZyBsb25nJiBzaXplKQotewotICAgIFVMQVJHRV9JTlRFR0VSIGZp
bGVTaXplOwotICAgIGZpbGVTaXplLkhpZ2hQYXJ0ID0gZmlsZUluZm9ybWF0aW9uLm5GaWxlU2l6
ZUhpZ2g7Ci0gICAgZmlsZVNpemUuTG93UGFydCA9IGZpbGVJbmZvcm1hdGlvbi5uRmlsZVNpemVM
b3c7Ci0KLSAgICBpZiAoZmlsZVNpemUuUXVhZFBhcnQgPiBzdGF0aWNfY2FzdDxVTE9OR0xPTkc+
KHN0ZDo6bnVtZXJpY19saW1pdHM8bG9uZyBsb25nPjo6bWF4KCkpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICBzaXplID0gZmlsZVNpemUuUXVhZFBhcnQ7Ci0gICAgcmV0dXJuIHRydWU7
Ci19Ci0KLXN0YXRpYyB2b2lkIGdldEZpbGVDcmVhdGlvblRpbWVGcm9tRmluZERhdGEoY29uc3Qg
V0lOMzJfRklORF9EQVRBVyYgZmluZERhdGEsIHRpbWVfdCYgdGltZSkKLXsKLSAgICBVTEFSR0Vf
SU5URUdFUiBmaWxlVGltZTsKLSAgICBmaWxlVGltZS5IaWdoUGFydCA9IGZpbmREYXRhLmZ0Q3Jl
YXRpb25UaW1lLmR3SGlnaERhdGVUaW1lOwotICAgIGZpbGVUaW1lLkxvd1BhcnQgPSBmaW5kRGF0
YS5mdENyZWF0aW9uVGltZS5kd0xvd0RhdGVUaW1lOwotCi0gICAgLy8gSW5mb3JtYXRpb24gYWJv
dXQgY29udmVydGluZyB0aW1lX3QgdG8gRmlsZVRpbWUgaXMgYXZhaWxhYmxlIGF0IGh0dHA6Ly9t
c2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9tczcyNDIyOCUyOHY9dnMuODUlMjkuYXNw
eAotICAgIHRpbWUgPSBmaWxlVGltZS5RdWFkUGFydCAvIDEwMDAwMDAwIC0ga1NlY29uZHNGcm9t
RmlsZVRpbWVUb1RpbWV0OwotfQotCi0KLXN0YXRpYyB2b2lkIGdldEZpbGVNb2RpZmljYXRpb25U
aW1lRnJvbUZpbmREYXRhKGNvbnN0IFdJTjMyX0ZJTkRfREFUQVcmIGZpbmREYXRhLCB0aW1lX3Qm
IHRpbWUpCi17Ci0gICAgVUxBUkdFX0lOVEVHRVIgZmlsZVRpbWU7Ci0gICAgZmlsZVRpbWUuSGln
aFBhcnQgPSBmaW5kRGF0YS5mdExhc3RXcml0ZVRpbWUuZHdIaWdoRGF0ZVRpbWU7Ci0gICAgZmls
ZVRpbWUuTG93UGFydCA9IGZpbmREYXRhLmZ0TGFzdFdyaXRlVGltZS5kd0xvd0RhdGVUaW1lOwot
Ci0gICAgLy8gSW5mb3JtYXRpb24gYWJvdXQgY29udmVydGluZyB0aW1lX3QgdG8gRmlsZVRpbWUg
aXMgYXZhaWxhYmxlIGF0IGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9t
czcyNDIyOCUyOHY9dnMuODUlMjkuYXNweAotICAgIHRpbWUgPSBmaWxlVGltZS5RdWFkUGFydCAv
IDEwMDAwMDAwIC0ga1NlY29uZHNGcm9tRmlsZVRpbWVUb1RpbWV0OwotfQotCi1ib29sIGdldEZp
bGVTaXplKGNvbnN0IFN0cmluZyYgcGF0aCwgbG9uZyBsb25nJiBzaXplKQotewotICAgIFdJTjMy
X0ZJTkRfREFUQVcgZmluZERhdGE7Ci0gICAgaWYgKCFnZXRGaW5kRGF0YShwYXRoLCBmaW5kRGF0
YSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBnZXRGaWxlU2l6ZUZyb21G
aW5kRGF0YShmaW5kRGF0YSwgc2l6ZSk7Ci19Ci0KLWJvb2wgZ2V0RmlsZVNpemUoUGxhdGZvcm1G
aWxlSGFuZGxlIGZpbGVIYW5kbGUsIGxvbmcgbG9uZyYgc2l6ZSkKLXsKLSAgICBCWV9IQU5ETEVf
RklMRV9JTkZPUk1BVElPTiBmaWxlSW5mb3JtYXRpb247Ci0gICAgaWYgKCE6OkdldEZpbGVJbmZv
cm1hdGlvbkJ5SGFuZGxlKGZpbGVIYW5kbGUsICZmaWxlSW5mb3JtYXRpb24pKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gZ2V0RmlsZVNpemVGcm9tQnlIYW5kbGVGaWxlSW5m
b3JtYXRpb25TdHJ1Y3R1cmUoZmlsZUluZm9ybWF0aW9uLCBzaXplKTsKLX0KLQotT3B0aW9uYWw8
V2FsbFRpbWU+IGdldEZpbGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsK
LSAgICBXSU4zMl9GSU5EX0RBVEFXIGZpbmREYXRhOwotICAgIGlmICghZ2V0RmluZERhdGEocGF0
aCwgZmluZERhdGEpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgdGltZV90
IHRpbWUgPSAwOwotICAgIGdldEZpbGVNb2RpZmljYXRpb25UaW1lRnJvbUZpbmREYXRhKGZpbmRE
YXRhLCB0aW1lKTsKLSAgICByZXR1cm4gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKHRpbWUpOwot
fQotCi1PcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZUNyZWF0aW9uVGltZShjb25zdCBTdHJpbmcm
IHBhdGgpCi17Ci0gICAgV0lOMzJfRklORF9EQVRBVyBmaW5kRGF0YTsKLSAgICBpZiAoIWdldEZp
bmREYXRhKHBhdGgsIGZpbmREYXRhKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQot
ICAgIHRpbWVfdCB0aW1lID0gMDsKLSAgICBnZXRGaWxlQ3JlYXRpb25UaW1lRnJvbUZpbmREYXRh
KGZpbmREYXRhLCB0aW1lKTsKLSAgICByZXR1cm4gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKHRp
bWUpOwotfQotCi1zdGF0aWMgU3RyaW5nIGdldEZpbmFsUGF0aE5hbWUoY29uc3QgU3RyaW5nJiBw
YXRoKQotewotICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUocGF0aCwgRmlsZU9wZW5Nb2RlOjpS
ZWFkKTsKLSAgICBpZiAoIWlzSGFuZGxlVmFsaWQoaGFuZGxlKSkKLSAgICAgICAgcmV0dXJuIFN0
cmluZygpOwotCi0gICAgVmVjdG9yPFVDaGFyPiBidWZmZXIoTUFYX1BBVEgpOwotICAgIGlmICg6
OkdldEZpbmFsUGF0aE5hbWVCeUhhbmRsZVcoaGFuZGxlLCBidWZmZXIuZGF0YSgpLCBidWZmZXIu
c2l6ZSgpLCBWT0xVTUVfTkFNRV9OVCkgPj0gTUFYX1BBVEgpIHsKLSAgICAgICAgY2xvc2VGaWxl
KGhhbmRsZSk7Ci0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICB9Ci0gICAgY2xvc2VGaWxl
KGhhbmRsZSk7Ci0KLSAgICBidWZmZXIuc2hyaW5rKHdjc2xlbihidWZmZXIuZGF0YSgpKSk7Ci0g
ICAgcmV0dXJuIFN0cmluZzo6YWRvcHQoV1RGTW92ZShidWZmZXIpKTsKLX0KLQotc3RhdGljIGlu
bGluZSBib29sIGlzU3ltYm9saWNMaW5rKFdJTjMyX0ZJTkRfREFUQVcgZmluZERhdGEpCi17Ci0g
ICAgcmV0dXJuIGZpbmREYXRhLmR3RmlsZUF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9SRVBB
UlNFX1BPSU5UICYmIGZpbmREYXRhLmR3UmVzZXJ2ZWQwID09IElPX1JFUEFSU0VfVEFHX1NZTUxJ
Tks7Ci19Ci0KLXN0YXRpYyBGaWxlTWV0YWRhdGE6OlR5cGUgdG9GaWxlTWV0YWRhdGFUeXBlKFdJ
TjMyX0ZJTkRfREFUQVcgZmluZERhdGEpCi17Ci0gICAgaWYgKGZpbmREYXRhLmR3RmlsZUF0dHJp
YnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9ESVJFQ1RPUlkpCi0gICAgICAgIHJldHVybiBGaWxlTWV0
YWRhdGE6OlR5cGU6OkRpcmVjdG9yeTsKLSAgICBpZiAoaXNTeW1ib2xpY0xpbmsoZmluZERhdGEp
KQotICAgICAgICByZXR1cm4gRmlsZU1ldGFkYXRhOjpUeXBlOjpTeW1ib2xpY0xpbms7Ci0gICAg
cmV0dXJuIEZpbGVNZXRhZGF0YTo6VHlwZTo6RmlsZTsKLX0KLQotc3RhdGljIE9wdGlvbmFsPEZp
bGVNZXRhZGF0YT4gZmluZERhdGFUb0ZpbGVNZXRhZGF0YShXSU4zMl9GSU5EX0RBVEFXIGZpbmRE
YXRhKQotewotICAgIGxvbmcgbG9uZyBsZW5ndGg7Ci0gICAgaWYgKCFnZXRGaWxlU2l6ZUZyb21G
aW5kRGF0YShmaW5kRGF0YSwgbGVuZ3RoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
LQotICAgIHRpbWVfdCBtb2RpZmljYXRpb25UaW1lOwotICAgIGdldEZpbGVNb2RpZmljYXRpb25U
aW1lRnJvbUZpbmREYXRhKGZpbmREYXRhLCBtb2RpZmljYXRpb25UaW1lKTsKLQotICAgIHJldHVy
biBGaWxlTWV0YWRhdGEgewotICAgICAgICBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMobW9kaWZp
Y2F0aW9uVGltZSksCi0gICAgICAgIGxlbmd0aCwKLSAgICAgICAgc3RhdGljX2Nhc3Q8Ym9vbD4o
ZmluZERhdGEuZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX0hJRERFTiksCi0gICAg
ICAgIHRvRmlsZU1ldGFkYXRhVHlwZShmaW5kRGF0YSkKLSAgICB9OwotfQotCi1PcHRpb25hbDxG
aWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgV0lO
MzJfRklORF9EQVRBVyBmaW5kRGF0YTsKLSAgICBpZiAoIWdldEZpbmREYXRhKHBhdGgsIGZpbmRE
YXRhKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIHJldHVybiBmaW5kRGF0
YVRvRmlsZU1ldGFkYXRhKGZpbmREYXRhKTsKLX0KLQotT3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBm
aWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyhjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAg
V0lOMzJfRklORF9EQVRBVyBmaW5kRGF0YTsKLSAgICBpZiAoIWdldEZpbmREYXRhKHBhdGgsIGZp
bmREYXRhKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIGlmIChpc1N5bWJv
bGljTGluayhmaW5kRGF0YSkpIHsKLSAgICAgICAgU3RyaW5nIHRhcmdldFBhdGggPSBnZXRGaW5h
bFBhdGhOYW1lKHBhdGgpOwotICAgICAgICBpZiAodGFyZ2V0UGF0aC5pc051bGwoKSkKLSAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgICAgIGlmICghZ2V0RmluZERhdGEodGFy
Z2V0UGF0aCwgZmluZERhdGEpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAg
ICB9Ci0KLSAgICByZXR1cm4gZmluZERhdGFUb0ZpbGVNZXRhZGF0YShmaW5kRGF0YSk7Ci19Ci0K
LWJvb2wgY3JlYXRlU3ltYm9saWNMaW5rKGNvbnN0IFN0cmluZyYgdGFyZ2V0UGF0aCwgY29uc3Qg
U3RyaW5nJiBzeW1ib2xpY0xpbmtQYXRoKQotewotICAgIHJldHVybiAhOjpDcmVhdGVTeW1ib2xp
Y0xpbmtXKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihzeW1ib2xpY0xpbmtQYXRoKS5kYXRh
KCksIHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcih0YXJnZXRQYXRoKS5kYXRhKCksIDApOwot
fQotCi1ib29sIGZpbGVFeGlzdHMoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIFdJTjMyX0ZJ
TkRfREFUQVcgZmluZERhdGE7Ci0gICAgcmV0dXJuIGdldEZpbmREYXRhKHBhdGgsIGZpbmREYXRh
KTsKLX0KLQotYm9vbCBkZWxldGVGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBTdHJp
bmcgZmlsZW5hbWUgPSBwYXRoOwotICAgIHJldHVybiAhIURlbGV0ZUZpbGVXKHN0cmluZ1RvTnVs
bFRlcm1pbmF0ZWRXQ2hhcihmaWxlbmFtZSkuZGF0YSgpKTsKLX0KLQotYm9vbCBkZWxldGVFbXB0
eURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgU3RyaW5nIGZpbGVuYW1lID0g
cGF0aDsKLSAgICByZXR1cm4gISFSZW1vdmVEaXJlY3RvcnlXKHN0cmluZ1RvTnVsbFRlcm1pbmF0
ZWRXQ2hhcihmaWxlbmFtZSkuZGF0YSgpKTsKLX0KLQotYm9vbCBtb3ZlRmlsZShjb25zdCBTdHJp
bmcmIG9sZFBhdGgsIGNvbnN0IFN0cmluZyYgbmV3UGF0aCkKLXsKLSAgICBTdHJpbmcgb2xkRmls
ZW5hbWUgPSBvbGRQYXRoOwotICAgIFN0cmluZyBuZXdGaWxlbmFtZSA9IG5ld1BhdGg7Ci0gICAg
cmV0dXJuICEhOjpNb3ZlRmlsZUV4KHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihvbGRGaWxl
bmFtZSkuZGF0YSgpLCBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIobmV3RmlsZW5hbWUpLmRh
dGEoKSwgTU9WRUZJTEVfQ09QWV9BTExPV0VEIHwgTU9WRUZJTEVfUkVQTEFDRV9FWElTVElORyk7
Ci19Ci0KLVN0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY29uc3QgU3RyaW5nJiBwYXRo
LCBjb25zdCBTdHJpbmcmIGNvbXBvbmVudCkKLXsKLSAgICBWZWN0b3I8VUNoYXI+IGJ1ZmZlcihN
QVhfUEFUSCk7Ci0KLSAgICBpZiAocGF0aC5sZW5ndGgoKSArIDEgPiBidWZmZXIuc2l6ZSgpKQot
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICBTdHJpbmdWaWV3KHBhdGgpLmdldENoYXJh
Y3RlcnNXaXRoVXBjb252ZXJ0KGJ1ZmZlci5kYXRhKCkpOwotICAgIGJ1ZmZlcltwYXRoLmxlbmd0
aCgpXSA9ICdcMCc7Ci0KLSAgICBpZiAoIVBhdGhBcHBlbmRXKGJ1ZmZlci5kYXRhKCksIHN0cmlu
Z1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihjb21wb25lbnQpLmRhdGEoKSkpCi0gICAgICAgIHJldHVy
biBTdHJpbmcoKTsKLQotICAgIGJ1ZmZlci5zaHJpbmsod2NzbGVuKGJ1ZmZlci5kYXRhKCkpKTsK
LQotICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KFdURk1vdmUoYnVmZmVyKSk7Ci19Ci0KLVN0cmlu
ZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKFN0cmluZ1ZpZXcgcGF0aCwgY29uc3QgVmVjdG9y
PFN0cmluZ1ZpZXc+JiBjb21wb25lbnRzKQotewotICAgIFN0cmluZyByZXN1bHQgPSBwYXRoLnRv
U3RyaW5nKCk7Ci0gICAgZm9yIChhdXRvJiBjb21wb25lbnQgOiBjb21wb25lbnRzKQotICAgICAg
ICByZXN1bHQgPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVzdWx0LCBjb21wb25lbnQudG9T
dHJpbmcoKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotI2lmICFVU0UoQ0YpCi0KLUNTdHJp
bmcgZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBh
dXRvIHVwY29udmVydGVkQ2hhcmFjdGVycyA9IHBhdGgudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCk7
Ci0KLSAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycyA9IHVwY29udmVydGVkQ2hhcmFjdGVyczsK
LSAgICBpbnQgc2l6ZSA9IFdpZGVDaGFyVG9NdWx0aUJ5dGUoQ1BfQUNQLCAwLCBjaGFyYWN0ZXJz
LCBwYXRoLmxlbmd0aCgpLCAwLCAwLCAwLCAwKSAtIDE7Ci0KLSAgICBjaGFyKiBidWZmZXI7Ci0g
ICAgQ1N0cmluZyBzdHJpbmcgPSBDU3RyaW5nOjpuZXdVbmluaXRpYWxpemVkKHNpemUsIGJ1ZmZl
cik7Ci0KLSAgICBXaWRlQ2hhclRvTXVsdGlCeXRlKENQX0FDUCwgMCwgY2hhcmFjdGVycywgcGF0
aC5sZW5ndGgoKSwgYnVmZmVyLCBzaXplLCAwLCAwKTsKLQotICAgIHJldHVybiBzdHJpbmc7Ci19
Ci0KLSNlbmRpZiAvLyAhVVNFKENGKQotCi1ib29sIG1ha2VBbGxEaXJlY3Rvcmllcyhjb25zdCBT
dHJpbmcmIHBhdGgpCi17Ci0gICAgU3RyaW5nIGZ1bGxQYXRoID0gcGF0aDsKLSAgICBpZiAoU0hD
cmVhdGVEaXJlY3RvcnlFeCgwLCBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoZnVsbFBhdGgp
LmRhdGEoKSwgMCkgIT0gRVJST1JfU1VDQ0VTUykgewotICAgICAgICBEV09SRCBlcnJvciA9IEdl
dExhc3RFcnJvcigpOwotICAgICAgICBpZiAoZXJyb3IgIT0gRVJST1JfRklMRV9FWElTVFMgJiYg
ZXJyb3IgIT0gRVJST1JfQUxSRUFEWV9FWElTVFMpIHsKLSAgICAgICAgICAgIExPR19FUlJPUigi
RmFpbGVkIHRvIGNyZWF0ZSBwYXRoICVzIiwgcGF0aC5hc2NpaSgpLmRhdGEoKSk7Ci0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19
Ci0KLVN0cmluZyBob21lRGlyZWN0b3J5UGF0aCgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
LSAgICByZXR1cm4gIiI7Ci19Ci0KLVN0cmluZyBwYXRoR2V0RmlsZU5hbWUoY29uc3QgU3RyaW5n
JiBwYXRoKQotewotICAgIHJldHVybiBudWxsVGVybWluYXRlZFdDaGFyVG9TdHJpbmcoOjpQYXRo
RmluZEZpbGVOYW1lKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihwYXRoKS5kYXRhKCkpKTsK
LX0KLQotU3RyaW5nIGRpcmVjdG9yeU5hbWUoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIFN0
cmluZyBuYW1lID0gcGF0aC5sZWZ0KHBhdGgubGVuZ3RoKCkgLSBwYXRoR2V0RmlsZU5hbWUocGF0
aCkubGVuZ3RoKCkpOwotICAgIGlmIChuYW1lLmNoYXJhY3RlclN0YXJ0aW5nQXQobmFtZS5sZW5n
dGgoKSAtIDEpID09ICdcXCcpIHsKLSAgICAgICAgLy8gUmVtb3ZlIGFueSB0cmFpbGluZyAiXCIu
Ci0gICAgICAgIG5hbWUudHJ1bmNhdGUobmFtZS5sZW5ndGgoKSAtIDEpOwotICAgIH0KLSAgICBy
ZXR1cm4gbmFtZTsKLX0KLQotc3RhdGljIFN0cmluZyBidW5kbGVOYW1lKCkKLXsKLSAgICBzdGF0
aWMgY29uc3QgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBuYW1lID0gW10gewotICAgICAgICBTdHJp
bmcgbmFtZSB7ICJXZWJLaXQiX3MgfTsKLQotI2lmIFVTRShDRikKLSAgICAgICAgaWYgKENGQnVu
ZGxlUmVmIGJ1bmRsZSA9IENGQnVuZGxlR2V0TWFpbkJ1bmRsZSgpKSB7Ci0gICAgICAgICAgICBp
ZiAoQ0ZUeXBlUmVmIGJ1bmRsZUV4ZWN1dGFibGUgPSBDRkJ1bmRsZUdldFZhbHVlRm9ySW5mb0Rp
Y3Rpb25hcnlLZXkoYnVuZGxlLCBrQ0ZCdW5kbGVFeGVjdXRhYmxlS2V5KSkgewotICAgICAgICAg
ICAgICAgIGlmIChDRkdldFR5cGVJRChidW5kbGVFeGVjdXRhYmxlKSA9PSBDRlN0cmluZ0dldFR5
cGVJRCgpKQotICAgICAgICAgICAgICAgICAgICBuYW1lID0gcmVpbnRlcnByZXRfY2FzdDxDRlN0
cmluZ1JlZj4oYnVuZGxlRXhlY3V0YWJsZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSNl
bmRpZgotCi0gICAgICAgIHJldHVybiBuYW1lOwotICAgIH0oKTsKLQotICAgIHJldHVybiBuYW1l
OwotfQotCi1zdGF0aWMgU3RyaW5nIHN0b3JhZ2VEaXJlY3RvcnkoRFdPUkQgcGF0aElkZW50aWZp
ZXIpCi17Ci0gICAgVmVjdG9yPFVDaGFyPiBidWZmZXIoTUFYX1BBVEgpOwotICAgIGlmIChGQUlM
RUQoU0hHZXRGb2xkZXJQYXRoVygwLCBwYXRoSWRlbnRpZmllciB8IENTSURMX0ZMQUdfQ1JFQVRF
LCAwLCAwLCBidWZmZXIuZGF0YSgpKSkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICBi
dWZmZXIucmVzaXplKHdjc2xlbihidWZmZXIuZGF0YSgpKSk7Ci0gICAgU3RyaW5nIGRpcmVjdG9y
eSA9IFN0cmluZzo6YWRvcHQoV1RGTW92ZShidWZmZXIpKTsKLQotICAgIGRpcmVjdG9yeSA9IHBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChkaXJlY3RvcnksICJBcHBsZSBDb21wdXRlclxcIiArIGJ1
bmRsZU5hbWUoKSk7Ci0gICAgaWYgKCFtYWtlQWxsRGlyZWN0b3JpZXMoZGlyZWN0b3J5KSkKLSAg
ICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgcmV0dXJuIGRpcmVjdG9yeTsKLX0KLQotc3Rh
dGljIFN0cmluZyBjYWNoZWRTdG9yYWdlRGlyZWN0b3J5KERXT1JEIHBhdGhJZGVudGlmaWVyKQot
ewotICAgIHN0YXRpYyBIYXNoTWFwPERXT1JELCBTdHJpbmc+IGRpcmVjdG9yaWVzOwotCi0gICAg
SGFzaE1hcDxEV09SRCwgU3RyaW5nPjo6aXRlcmF0b3IgaXQgPSBkaXJlY3Rvcmllcy5maW5kKHBh
dGhJZGVudGlmaWVyKTsKLSAgICBpZiAoaXQgIT0gZGlyZWN0b3JpZXMuZW5kKCkpCi0gICAgICAg
IHJldHVybiBpdC0+dmFsdWU7Ci0KLSAgICBTdHJpbmcgZGlyZWN0b3J5ID0gc3RvcmFnZURpcmVj
dG9yeShwYXRoSWRlbnRpZmllcik7Ci0gICAgZGlyZWN0b3JpZXMuYWRkKHBhdGhJZGVudGlmaWVy
LCBkaXJlY3RvcnkpOwotCi0gICAgcmV0dXJuIGRpcmVjdG9yeTsKLX0KLQotc3RhdGljIFN0cmlu
ZyBnZW5lcmF0ZVRlbXBvcmFyeVBhdGgoY29uc3QgRnVuY3Rpb248Ym9vbChjb25zdCBTdHJpbmcm
KT4mIGFjdGlvbikKLXsKLSAgICB3Y2hhcl90IHRlbXBQYXRoW01BWF9QQVRIXTsKLSAgICBpbnQg
dGVtcFBhdGhMZW5ndGggPSA6OkdldFRlbXBQYXRoVyhXVEZfQVJSQVlfTEVOR1RIKHRlbXBQYXRo
KSwgdGVtcFBhdGgpOwotICAgIGlmICh0ZW1wUGF0aExlbmd0aCA8PSAwIHx8IHRlbXBQYXRoTGVu
Z3RoID4gV1RGX0FSUkFZX0xFTkdUSCh0ZW1wUGF0aCkpCi0gICAgICAgIHJldHVybiBTdHJpbmco
KTsKLQotICAgIFN0cmluZyBwcm9wb3NlZFBhdGg7Ci0gICAgZG8gewotICAgICAgICB3Y2hhcl90
IHRlbXBGaWxlW10gPSBMIlhYWFhYWFhYLnRtcCI7IC8vIFVzZSA4LjMgc3R5bGUgbmFtZSAobW9y
ZSBjaGFyYWN0ZXJzIGFyZW4ndCBoZWxwZnVsIGR1ZSB0byA4LjMgc2hvcnQgZmlsZSBuYW1lcykK
LSAgICAgICAgY29uc3QgaW50IHJhbmRvbVBhcnRMZW5ndGggPSA4OwotICAgICAgICBjcnlwdG9n
cmFwaGljYWxseVJhbmRvbVZhbHVlcyh0ZW1wRmlsZSwgcmFuZG9tUGFydExlbmd0aCAqIHNpemVv
Zih3Y2hhcl90KSk7Ci0KLSAgICAgICAgLy8gTGltaXQgdG8gdmFsaWQgZmlsZXN5c3RlbSBjaGFy
YWN0ZXJzLCBhbHNvIGV4Y2x1ZGluZyBvdGhlcnMgdGhhdCBjb3VsZCBiZSBwcm9ibGVtYXRpYywg
bGlrZSBwdW5jdHVhdGlvbi4KLSAgICAgICAgLy8gZG9uJ3QgaW5jbHVkZSBib3RoIHVwcGVyIGFu
ZCBsb3dlcmNhc2Ugc2luY2UgV2luZG93cyBmaWxlIHN5c3RlbXMgYXJlIHR5cGljYWxseSBub3Qg
Y2FzZSBzZW5zaXRpdmUuCi0gICAgICAgIGNvbnN0IGNoYXIgdmFsaWRDaGFyc1tdID0gIjAxMjM0
NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiI7Ci0gICAgICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgcmFuZG9tUGFydExlbmd0aDsgKytpKQotICAgICAgICAgICAgdGVtcEZpbGVbaV0gPSB2
YWxpZENoYXJzW3RlbXBGaWxlW2ldICUgKHNpemVvZih2YWxpZENoYXJzKSAtIDEpXTsKLQotICAg
ICAgICBBU1NFUlQod2NzbGVuKHRlbXBGaWxlKSA9PSBXVEZfQVJSQVlfTEVOR1RIKHRlbXBGaWxl
KSAtIDEpOwotCi0gICAgICAgIHByb3Bvc2VkUGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChudWxsVGVybWluYXRlZFdDaGFyVG9TdHJpbmcodGVtcFBhdGgpLCBudWxsVGVybWluYXRlZFdD
aGFyVG9TdHJpbmcodGVtcEZpbGUpKTsKLSAgICAgICAgaWYgKHByb3Bvc2VkUGF0aC5pc0VtcHR5
KCkpCi0gICAgICAgICAgICBicmVhazsKLSAgICB9IHdoaWxlICghYWN0aW9uKHByb3Bvc2VkUGF0
aCkpOwotCi0gICAgcmV0dXJuIHByb3Bvc2VkUGF0aDsKLX0KLQotU3RyaW5nIG9wZW5UZW1wb3Jh
cnlGaWxlKGNvbnN0IFN0cmluZyYsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKQotewotICAg
IGhhbmRsZSA9IElOVkFMSURfSEFORExFX1ZBTFVFOwotCi0gICAgU3RyaW5nIHByb3Bvc2VkUGF0
aCA9IGdlbmVyYXRlVGVtcG9yYXJ5UGF0aChbJmhhbmRsZV0oY29uc3QgU3RyaW5nJiBwcm9wb3Nl
ZFBhdGgpIHsKLSAgICAgICAgLy8gdXNlIENSRUFURV9ORVcgdG8gYXZvaWQgb3ZlcndyaXRpbmcg
YW4gZXhpc3RpbmcgZmlsZSB3aXRoIHRoZSBzYW1lIG5hbWUKLSAgICAgICAgaGFuZGxlID0gOjpD
cmVhdGVGaWxlVyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIocHJvcG9zZWRQYXRoKS5kYXRh
KCksIEdFTkVSSUNfUkVBRCB8IEdFTkVSSUNfV1JJVEUsIDAsIDAsIENSRUFURV9ORVcsIEZJTEVf
QVRUUklCVVRFX05PUk1BTCwgMCk7Ci0KLSAgICAgICAgcmV0dXJuIGlzSGFuZGxlVmFsaWQoaGFu
ZGxlKSB8fCBHZXRMYXN0RXJyb3IoKSA9PSBFUlJPUl9BTFJFQURZX0VYSVNUUzsKLSAgICB9KTsK
LQotICAgIGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUpKQotICAgICAgICByZXR1cm4gU3RyaW5n
KCk7Ci0KLSAgICByZXR1cm4gcHJvcG9zZWRQYXRoOwotfQotCi1QbGF0Zm9ybUZpbGVIYW5kbGUg
b3BlbkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUgbW9kZSkKLXsKLSAgICBE
V09SRCBkZXNpcmVkQWNjZXNzID0gMDsKLSAgICBEV09SRCBjcmVhdGlvbkRpc3Bvc2l0aW9uID0g
MDsKLSAgICBEV09SRCBzaGFyZU1vZGUgPSAwOwotICAgIHN3aXRjaCAobW9kZSkgewotICAgIGNh
c2UgRmlsZU9wZW5Nb2RlOjpSZWFkOgotICAgICAgICBkZXNpcmVkQWNjZXNzID0gR0VORVJJQ19S
RUFEOwotICAgICAgICBjcmVhdGlvbkRpc3Bvc2l0aW9uID0gT1BFTl9FWElTVElORzsKLSAgICAg
ICAgc2hhcmVNb2RlID0gRklMRV9TSEFSRV9SRUFEOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IEZpbGVPcGVuTW9kZTo6V3JpdGU6Ci0gICAgICAgIGRlc2lyZWRBY2Nlc3MgPSBHRU5FUklDX1dS
SVRFOwotICAgICAgICBjcmVhdGlvbkRpc3Bvc2l0aW9uID0gQ1JFQVRFX0FMV0FZUzsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgfQotCi0gICAgU3RyaW5nIGRlc3RpbmF0aW9uID0gcGF0aDsKLSAgICByZXR1cm4gQ3JlYXRl
RmlsZShzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoZGVzdGluYXRpb24pLmRhdGEoKSwgZGVz
aXJlZEFjY2Vzcywgc2hhcmVNb2RlLCAwLCBjcmVhdGlvbkRpc3Bvc2l0aW9uLCBGSUxFX0FUVFJJ
QlVURV9OT1JNQUwsIDApOwotfQotCi12b2lkIGNsb3NlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUm
IGhhbmRsZSkKLXsKLSAgICBpZiAoaXNIYW5kbGVWYWxpZChoYW5kbGUpKSB7Ci0gICAgICAgIDo6
Q2xvc2VIYW5kbGUoaGFuZGxlKTsKLSAgICAgICAgaGFuZGxlID0gaW52YWxpZFBsYXRmb3JtRmls
ZUhhbmRsZTsKLSAgICB9Ci19Ci0KLWxvbmcgbG9uZyBzZWVrRmlsZShQbGF0Zm9ybUZpbGVIYW5k
bGUgaGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0LCBGaWxlU2Vla09yaWdpbiBvcmlnaW4pCi17Ci0g
ICAgRFdPUkQgbW92ZU1ldGhvZCA9IEZJTEVfQkVHSU47Ci0KLSAgICBpZiAob3JpZ2luID09IEZp
bGVTZWVrT3JpZ2luOjpDdXJyZW50KQotICAgICAgICBtb3ZlTWV0aG9kID0gRklMRV9DVVJSRU5U
OwotICAgIGVsc2UgaWYgKG9yaWdpbiA9PSBGaWxlU2Vla09yaWdpbjo6RW5kKQotICAgICAgICBt
b3ZlTWV0aG9kID0gRklMRV9FTkQ7Ci0KLSAgICBMQVJHRV9JTlRFR0VSIGxhcmdlT2Zmc2V0Owot
ICAgIGxhcmdlT2Zmc2V0LlF1YWRQYXJ0ID0gb2Zmc2V0OwotCi0gICAgbGFyZ2VPZmZzZXQuTG93
UGFydCA9IFNldEZpbGVQb2ludGVyKGhhbmRsZSwgbGFyZ2VPZmZzZXQuTG93UGFydCwgJmxhcmdl
T2Zmc2V0LkhpZ2hQYXJ0LCBtb3ZlTWV0aG9kKTsKLQotICAgIGlmIChsYXJnZU9mZnNldC5Mb3dQ
YXJ0ID09IElOVkFMSURfU0VUX0ZJTEVfUE9JTlRFUiAmJiBHZXRMYXN0RXJyb3IoKSAhPSBOT19F
UlJPUikKLSAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgcmV0dXJuIGxhcmdlT2Zmc2V0LlF1YWRQ
YXJ0OwotfQotCi1pbnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY29u
c3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKLXsKLSAgICBpZiAoIWlzSGFuZGxlVmFsaWQoaGFu
ZGxlKSkKLSAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgRFdPUkQgYnl0ZXNXcml0dGVuOwotICAg
IGJvb2wgc3VjY2VzcyA9IFdyaXRlRmlsZShoYW5kbGUsIGRhdGEsIGxlbmd0aCwgJmJ5dGVzV3Jp
dHRlbiwgMCk7Ci0KLSAgICBpZiAoIXN1Y2Nlc3MpCi0gICAgICAgIHJldHVybiAtMTsKLSAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihieXRlc1dyaXR0ZW4pOwotfQotCi1pbnQgcmVhZEZyb21G
aWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCi17
Ci0gICAgaWYgKCFpc0hhbmRsZVZhbGlkKGhhbmRsZSkpCi0gICAgICAgIHJldHVybiAtMTsKLQot
ICAgIERXT1JEIGJ5dGVzUmVhZDsKLSAgICBib29sIHN1Y2Nlc3MgPSA6OlJlYWRGaWxlKGhhbmRs
ZSwgZGF0YSwgbGVuZ3RoLCAmYnl0ZXNSZWFkLCAwKTsKLQotICAgIGlmICghc3VjY2VzcykKLSAg
ICAgICAgcmV0dXJuIC0xOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KGJ5dGVzUmVhZCk7
Ci19Ci0KLWJvb2wgaGFyZExpbmtPckNvcHlGaWxlKGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25z
dCBTdHJpbmcmIGRlc3RpbmF0aW9uKQotewotICAgIHJldHVybiAhITo6Q29weUZpbGUoc3RyaW5n
VG9OdWxsVGVybWluYXRlZFdDaGFyKHNvdXJjZSkuZGF0YSgpLCBzdHJpbmdUb051bGxUZXJtaW5h
dGVkV0NoYXIoZGVzdGluYXRpb24pLmRhdGEoKSwgVFJVRSk7Ci19Ci0KLVN0cmluZyBsb2NhbFVz
ZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKQotewotICAgIHJldHVybiBjYWNoZWRTdG9yYWdl
RGlyZWN0b3J5KENTSURMX0xPQ0FMX0FQUERBVEEpOwotfQotCi1TdHJpbmcgcm9hbWluZ1VzZXJT
cGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKQotewotICAgIHJldHVybiBjYWNoZWRTdG9yYWdlRGly
ZWN0b3J5KENTSURMX0FQUERBVEEpOwotfQotCi1WZWN0b3I8U3RyaW5nPiBsaXN0RGlyZWN0b3J5
KGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIGZpbHRlcikKLXsKLSAgICBW
ZWN0b3I8U3RyaW5nPiBlbnRyaWVzOwotCi0gICAgUGF0aFdhbGtlciB3YWxrZXIoZGlyZWN0b3J5
LCBmaWx0ZXIpOwotICAgIGlmICghd2Fsa2VyLmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIGVu
dHJpZXM7Ci0KLSAgICBkbyB7Ci0gICAgICAgIGlmICh3YWxrZXIuZGF0YSgpLmR3RmlsZUF0dHJp
YnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9ESVJFQ1RPUlkKLSAgICAgICAgICAgICYmICghd2NzY21w
KHdhbGtlci5kYXRhKCkuY0ZpbGVOYW1lLCBMIi4iKSB8fCAhd2NzY21wKHdhbGtlci5kYXRhKCku
Y0ZpbGVOYW1lLCBMIi4uIikpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgZW50
cmllcy5hcHBlbmQoZGlyZWN0b3J5ICsgIlxcIiArIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNo
YXIqPih3YWxrZXIuZGF0YSgpLmNGaWxlTmFtZSkpOwotICAgIH0gd2hpbGUgKHdhbGtlci5zdGVw
KCkpOwotCi0gICAgcmV0dXJuIGVudHJpZXM7Ci19Ci0KLWJvb2wgZ2V0Vm9sdW1lRnJlZVNwYWNl
KGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90JikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAg
IHJldHVybiBmYWxzZTsKLX0KLQotT3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNv
bnN0IENTdHJpbmcmIGZzRmlsZSkKLXsKLSAgICBhdXRvIGhhbmRsZSA9IG9wZW5GaWxlKGZzRmls
ZS5kYXRhKCksIEZpbGVPcGVuTW9kZTo6UmVhZCk7Ci0gICAgaWYgKCFpc0hhbmRsZVZhbGlkKGhh
bmRsZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBCWV9IQU5ETEVfRklM
RV9JTkZPUk1BVElPTiBmaWxlSW5mb3JtYXRpb24gPSB7IH07Ci0gICAgaWYgKCE6OkdldEZpbGVJ
bmZvcm1hdGlvbkJ5SGFuZGxlKGhhbmRsZSwgJmZpbGVJbmZvcm1hdGlvbikpIHsKLSAgICAgICAg
Y2xvc2VGaWxlKGhhbmRsZSk7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgfQot
Ci0gICAgY2xvc2VGaWxlKGhhbmRsZSk7Ci0KLSAgICByZXR1cm4gZmlsZUluZm9ybWF0aW9uLmR3
Vm9sdW1lU2VyaWFsTnVtYmVyOwotfQotCi1TdHJpbmcgcmVhbFBhdGgoY29uc3QgU3RyaW5nJiBm
aWxlUGF0aCkKLXsKLSAgICByZXR1cm4gZ2V0RmluYWxQYXRoTmFtZShmaWxlUGF0aCk7Ci19Ci0K
LVN0cmluZyBjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoKQotewotICAgIHJldHVybiBnZW5lcmF0
ZVRlbXBvcmFyeVBhdGgoW10oY29uc3QgU3RyaW5nJiBwcm9wb3NlZFBhdGgpIHsKLSAgICAgICAg
cmV0dXJuIG1ha2VBbGxEaXJlY3Rvcmllcyhwcm9wb3NlZFBhdGgpOwotICAgIH0pOwotfQotCi1i
b29sIGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5UGF0aCkK
LXsKLSAgICBTSEZJTEVPUFNUUlVDVCBkZWxldGVPcGVyYXRpb24gPSB7Ci0gICAgICAgIG51bGxw
dHIsCi0gICAgICAgIEZPX0RFTEVURSwKLSAgICAgICAgc3RyaW5nVG9OdWxsVGVybWluYXRlZFdD
aGFyKGRpcmVjdG9yeVBhdGgpLmRhdGEoKSwKLSAgICAgICAgTCIiLAotICAgICAgICBGT0ZfTk9D
T05GSVJNQVRJT04gfCBGT0ZfTk9FUlJPUlVJIHwgRk9GX1NJTEVOVCwKLSAgICAgICAgZmFsc2Us
Ci0gICAgICAgIDAsCi0gICAgICAgIEwiIgotICAgIH07Ci0gICAgcmV0dXJuICFTSEZpbGVPcGVy
YXRpb24oJmRlbGV0ZU9wZXJhdGlvbik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEZpbGVTeXN0ZW0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9QYXRoV2Fsa2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXRo
V2Fsa2VyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjIwNDA3YjFjZmVhNjI0
ZjNhMTU2OWE4ZmQ2NzY4YTVkZWJlZDM2My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGF0aFdhbGtlci5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIlBhdGhXYWxrZXIuaCIKLQotI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVBhdGhXYWxrZXI6OlBhdGhXYWxrZXIoY29uc3Qg
U3RyaW5nJiBkaXJlY3RvcnksIGNvbnN0IFN0cmluZyYgcGF0dGVybikKLXsKLSAgICBTdHJpbmcg
cGF0aCA9IGRpcmVjdG9yeSArICJcXCIgKyBwYXR0ZXJuOwotICAgIG1faGFuZGxlID0gOjpGaW5k
Rmlyc3RGaWxlVyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIocGF0aCkuZGF0YSgpLCAmbV9k
YXRhKTsKLX0KLQotUGF0aFdhbGtlcjo6flBhdGhXYWxrZXIoKQotewotICAgIGlmICghaXNWYWxp
ZCgpKQotICAgICAgICByZXR1cm47Ci0gICAgOjpGaW5kQ2xvc2UobV9oYW5kbGUpOwotfQotCi1i
b29sIFBhdGhXYWxrZXI6OnN0ZXAoKQotewotICAgIHJldHVybiA6OkZpbmROZXh0RmlsZVcobV9o
YW5kbGUsICZtX2RhdGEpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGF0aFdhbGtlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL1BhdGhXYWxrZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZmM1OWQ2NzMxODExYjhjYTE1ODdhNGExMmE3ZGExZTFhMTU5M2Q4NC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vUGF0aFdhbGtlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgPFdpbmRvd3MuaD4KLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LWNsYXNzIFBhdGhXYWxrZXIgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBhdGhXYWxrZXIp
OwotcHVibGljOgotICAgIFBhdGhXYWxrZXIoY29uc3QgV1RGOjpTdHJpbmcmIGRpcmVjdG9yeSwg
Y29uc3QgV1RGOjpTdHJpbmcmIHBhdHRlcm4pOwotICAgIH5QYXRoV2Fsa2VyKCk7Ci0KLSAgICBi
b29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2hhbmRsZSAhPSBJTlZBTElEX0hBTkRMRV9W
QUxVRTsgfQotICAgIGNvbnN0IFdJTjMyX0ZJTkRfREFUQVcmIGRhdGEoKSBjb25zdCB7IHJldHVy
biBtX2RhdGE7IH0KLQotICAgIGJvb2wgc3RlcCgpOwotCi1wcml2YXRlOgotICAgIEhBTkRMRSBt
X2hhbmRsZTsKLSAgICBXSU4zMl9GSU5EX0RBVEFXIG1fZGF0YTsKLX07Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFy
Y2hQb3B1cE1lbnVEQi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9w
dXBNZW51REIuY3BwCmluZGV4IDllNmU0YzUyZDdiOTgzOGExZjA3YmRkNTlmNDA5ZDgxNjVmZTU2
NjYuLmU1NzMwYjMwY2NmM2YwM2VlZmRmZjlhMzMxYzA4ZWQwZTIyZTU4YmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVEQi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudURCLmNwcApAQCAtMjUs
OSArMjUsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNlYXJjaFBvcHVwTWVu
dURCLmgiCiAKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiU1FMaXRlRmlsZVN5
c3RlbS5oIgogI2luY2x1ZGUgIlNRTGl0ZVRyYW5zYWN0aW9uLmgiCisjaW5jbHVkZSA8d3RmL0Zp
bGVTeXN0ZW0uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lLmNwcAppbmRleCA3NmM5YzVjNzhkNTZkM2U4ZDk3ZDQyMWY0ZGZhYTRh
YjFiZDllY2MwLi5jNGZhMzU2NzBiOTU0NzY3NmI3YzRmYjlhODEyYjNkNmU2ZWM5OWU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKQEAgLTI1LDcgKzI1LDYgQEAK
ICNpbmNsdWRlICJDb250cm9sU3RhdGVzLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNs
dWRlICJGaWxlTGlzdC5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJGbG9h
dENvbnZlcnNpb24uaCIKICNpbmNsdWRlICJGbG9hdFJvdW5kZWRSZWN0LmgiCiAjaW5jbHVkZSAi
Rm9jdXNDb250cm9sbGVyLmgiCkBAIC00NSw2ICs0NCw3IEBACiAjaW5jbHVkZSAiU3BpbkJ1dHRv
bkVsZW1lbnQuaCIKICNpbmNsdWRlICJTdHJpbmdUcnVuY2F0b3IuaCIKICNpbmNsdWRlICJUZXh0
Q29udHJvbElubmVyRWxlbWVudHMuaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2lu
Y2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiAjaWYgRU5BQkxFKE1FVEVSX0VMRU1FTlQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lR3RrLmNwcAppbmRleCBiNjk2
ZWFjOGZiMTA1ZTJiNzA5NjIwNjk0NzM5NzNlMTNlYjlmYjY2Li5iMjU5NjZjYjUzMzI3Njg1OWVl
ODE5NjcxYWQyNWZkZjc3ZTAzZWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWVHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZUd0ay5jcHAKQEAgLTI3LDcgKzI3LDYgQEAKIAogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5
d29yZHMuaCIKICNpbmNsdWRlICJGaWxlTGlzdC5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIK
ICNpbmNsdWRlICJGbG9hdFJvdW5kZWRSZWN0LmgiCiAjaW5jbHVkZSAiRm9udERlc2NyaXB0aW9u
LmgiCiAjaW5jbHVkZSAiR1JlZlB0ckd0ay5oIgpAQCAtNTUsNiArNTQsNyBAQAogI2luY2x1ZGUg
PGdkay9nZGsuaD4KICNpbmNsdWRlIDxnbGliLmg+CiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgorI2lu
Y2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVX
aW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmNwcAppbmRl
eCBlZWI5OTg1ZTYyZjVjOWEzNDgyNDNlOGRkZTllY2NjMGE5YmRiZmI1Li4yMTk2NTdlMWYyNGFh
YmEwNTgyNWEyYTYyYjA4MDRjN2ZiYjNmMzM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZVdpbi5jcHAKQEAgLTI0LDcgKzI0LDYgQEAKIAogI2luY2x1ZGUgIkNTU1Zh
bHVlS2V5d29yZHMuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCi0jaW5jbHVkZSAiRmlsZVN5c3Rl
bS5oIgogI2luY2x1ZGUgIkZvbnRNZXRyaWNzLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNs
dWRlICJGcmFtZVNlbGVjdGlvbi5oIgpAQCAtMzgsNiArMzcsNyBAQAogI2luY2x1ZGUgIlN5c3Rl
bUluZm8uaCIKICNpbmNsdWRlICJVc2VyQWdlbnRTdHlsZVNoZWV0cy5oIgogI2luY2x1ZGUgIldl
YkNvcmVCdW5kbGVXaW4uaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUg
PHd0Zi9Tb2Z0TGlua2luZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJh
c2UuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRp
b25EYXRhYmFzZS5jcHAKaW5kZXggNjBlZWI4Y2MyYzBmNDEyY2EyYmNlZDk4MmFlOTI3ZmZiMWQ2
YTQ2OC4uMWFmNDM3ODhmZmZiYWFhOTEyZTFhZDk3YmJkOThiMTcyZGUzZjBlMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRh
YmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdp
c3RyYXRpb25EYXRhYmFzZS5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKIAotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJMb2dnaW5n
LmgiCiAjaW5jbHVkZSAiUmVnaXN0cmF0aW9uU3RvcmUuaCIKICNpbmNsdWRlICJTUUxpdGVEYXRh
YmFzZS5oIgpAQCAtMzksNiArMzgsNyBAQAogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAj
aW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhy
ZWFkQ29waWVyLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYv
TWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUg
PHd0Zi9TY29wZS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcAppbmRleCAzZGQ3ODFiOGRjNzA4MTlmYmZlMTcyMDYw
OTM5YTU0NzE0YzhjMjE5Li5jMGU4Y2RhZTNiMDU0ODZhMDE0ODM0YWYzYTc2NDI3Zjk2ZjIyYWVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNp
c3RlbnRTdG9yYWdlLmNwcApAQCAtMzEsOSArMzEsOSBAQAogI2luY2x1ZGUgIlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oIgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZU1vbml0b3IuaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0tleWVkQ29kaW5nLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5
c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3RmL1dvcmtRdWV1
ZS5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtE
YXRhVGFza0Jsb2IuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFU
YXNrQmxvYi5oCmluZGV4IDc1ZDMxYTYxYTRmNzQyZjM4N2Y5YjVlYTJkNGY2MDI5NDM2MTI4N2Mu
LmViNzk0NDcyNTk1YjU2ZWRkNjIwYmUyNTc2ZWQyMTgxODA1ZDBkODUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5oCkBAIC0zMyw3
ICszMyw3IEBACiAKICNpbmNsdWRlICJOZXR3b3JrRGF0YVRhc2suaCIKICNpbmNsdWRlIDxXZWJD
b3JlL0ZpbGVTdHJlYW1DbGllbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4K
KyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBBc3luY0ZpbGVTdHJlYW07CkBAIC0xMTMsNyArMTEzLDcgQEAgcHJpdmF0ZToKICAgICB1bnNp
Z25lZCBtX3NpemVJdGVtQ291bnQgeyAwIH07CiAgICAgdW5zaWduZWQgbV9yZWFkSXRlbUNvdW50
IHsgMCB9OwogICAgIGJvb2wgbV9maWxlT3BlbmVkIHsgZmFsc2UgfTsKLSAgICBXZWJDb3JlOjpG
aWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgbV9kb3dubG9hZEZpbGUgeyBXZWJDb3JlOjpG
aWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlIH07CisgICAgRmlsZVN5c3RlbTo6
UGxhdGZvcm1GaWxlSGFuZGxlIG1fZG93bmxvYWRGaWxlIHsgRmlsZVN5c3RlbTo6aW52YWxpZFBs
YXRmb3JtRmlsZUhhbmRsZSB9OwogCiAgICAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0
YUZpbGVSZWZlcmVuY2U+PiBtX2ZpbGVSZWZlcmVuY2VzOwogICAgIFJlZlB0cjxTYW5kYm94RXh0
ZW5zaW9uPiBtX3NhbmRib3hFeHRlbnNpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDE5MDBlZmUwNTQwODU1ZGM1MjkyMjUyMjZl
MTcxYWRkZjFkMGQ2OGUuLmI0NzM4Y2RlODEyMjc2ODkzZDRmNGUzYzhlOTJlZjk4ZjhjMTA3NjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
CkBAIC05MDMsNyArOTAzLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0Q2FjaGVNb2RlbChD
YWNoZU1vZGVsIGNhY2hlTW9kZWwpCiAgICAgdW5zaWduZWQgdXJsQ2FjaGVNZW1vcnlDYXBhY2l0
eSA9IDA7CiAgICAgdWludDY0X3QgdXJsQ2FjaGVEaXNrQ2FwYWNpdHkgPSAwOwogICAgIHVpbnQ2
NF90IGRpc2tGcmVlU2l6ZSA9IDA7Ci0gICAgaWYgKFdlYkNvcmU6OkZpbGVTeXN0ZW06OmdldFZv
bHVtZUZyZWVTcGFjZShtX2Rpc2tDYWNoZURpcmVjdG9yeSwgZGlza0ZyZWVTaXplKSkgeworICAg
IGlmIChGaWxlU3lzdGVtOjpnZXRWb2x1bWVGcmVlU3BhY2UobV9kaXNrQ2FjaGVEaXJlY3Rvcnks
IGRpc2tGcmVlU2l6ZSkpIHsKICAgICAgICAgLy8gQXMgYSBmdWRnZSBmYWN0b3IsIHVzZSAxMDAw
IGluc3RlYWQgb2YgMTAyNCwgaW4gY2FzZSB0aGUgcmVwb3J0ZWQgYnl0ZQogICAgICAgICAvLyBj
b3VudCBkb2Vzbid0IGFsaWduIGV4YWN0bHkgdG8gYSBtZWdhYnl0ZSBib3VuZGFyeS4KICAgICAg
ICAgZGlza0ZyZWVTaXplIC89IEtCICogMTAwMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcAppbmRleCBmMTdm
ZDlmOTJiZTVkMmE1MDU0NWMwNzk5ZTM3ZDlhZTBjZjNlZmJkLi4xZTNlMTFiMTk4YzM1MjcyMGEw
M2Y1NzlkMjk5NDdmOWJlZWZkYjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCkBAIC01Miw3ICs1Miw3
IEBAIFN0cmluZyBFbmdpbmU6OmNhY2hlc1Jvb3RQYXRoKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9y
aWdpbiYgb3JpZ2luKQogICAgICAgICByZXR1cm4geyB9OwogCiAgICAgS2V5IGtleShvcmlnaW4u
dG9wT3JpZ2luLnRvU3RyaW5nKCksIG9yaWdpbi5jbGllbnRPcmlnaW4udG9TdHJpbmcoKSwgeyB9
LCB7IH0sIHNhbHQoKSk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChyb290UGF0aCgpLCBrZXkuaGFzaEFzU3RyaW5nKCkpOworICAgIHJl
dHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocm9vdFBhdGgoKSwga2V5
Lmhhc2hBc1N0cmluZygpKTsKIH0KIAogRW5naW5lOjp+RW5naW5lKCkKQEAgLTI5MSw5ICsyOTEs
OSBAQCB2b2lkIEVuZ2luZTo6aW5pdGlhbGl6ZShDb21wbGV0aW9uQ2FsbGJhY2smJiBjYWxsYmFj
aykKICAgICBpZiAoIXNob3VsZENvbXB1dGVTYWx0KQogICAgICAgICByZXR1cm47CiAKLSAgICBT
dHJpbmcgc2FsdFBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQobV9yb290UGF0aCwgInNhbHQiX3MpOworICAgIFN0cmluZyBzYWx0UGF0aCA9IEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3Jvb3RQYXRoLCAic2FsdCJfcyk7CiAg
ICAgbV9pb1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlz
KSwgc2FsdFBhdGggPSBXVEZNb3ZlKHNhbHRQYXRoKV0gKCkgbXV0YWJsZSB7Ci0gICAgICAgIFdl
YkNvcmU6OkZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhtX3Jvb3RQYXRoKTsKKyAgICAg
ICAgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKG1fcm9vdFBhdGgpOwogICAgICAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhp
cyksIHNhbHQgPSByZWFkT3JNYWtlU2FsdChzYWx0UGF0aCldKCkgbXV0YWJsZSB7CiAgICAgICAg
ICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTM4Myw5ICsz
ODMsOSBAQCB2b2lkIEVuZ2luZTo6d3JpdGVGaWxlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIE5l
dHdvcmtDYWNoZTo6RGF0YSYmIGRhdGEsIFdlYkNvcgogICAgIG1fcGVuZGluZ1dyaXRlQ2FsbGJh
Y2tzLmFkZCgrK21fcGVuZGluZ0NhbGxiYWNrc0NvdW50ZXIsIFdURk1vdmUoY2FsbGJhY2spKTsK
ICAgICBtX2lvUXVldWUtPmRpc3BhdGNoKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRo
aXMpLCBpZGVudGlmaWVyID0gbV9wZW5kaW5nQ2FsbGJhY2tzQ291bnRlciwgZGF0YSA9IFdURk1v
dmUoZGF0YSksIGZpbGVuYW1lID0gZmlsZW5hbWUuaXNvbGF0ZWRDb3B5KCldKCkgbXV0YWJsZSB7
CiAKLSAgICAgICAgU3RyaW5nIGRpcmVjdG9yeVBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpk
aXJlY3RvcnlOYW1lKGZpbGVuYW1lKTsKLSAgICAgICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVt
OjpmaWxlRXhpc3RzKGRpcmVjdG9yeVBhdGgpKQotICAgICAgICAgICAgV2ViQ29yZTo6RmlsZVN5
c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKGRpcmVjdG9yeVBhdGgpOworICAgICAgICBTdHJpbmcg
ZGlyZWN0b3J5UGF0aCA9IEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUoZmlsZW5hbWUpOworICAg
ICAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZGlyZWN0b3J5UGF0aCkpCisgICAgICAg
ICAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoZGlyZWN0b3J5UGF0aCk7CiAKICAg
ICAgICAgYXV0byBjaGFubmVsID0gSU9DaGFubmVsOjpvcGVuKGZpbGVuYW1lLCBJT0NoYW5uZWw6
OlR5cGU6OkNyZWF0ZSk7CiAgICAgICAgIGNoYW5uZWwtPndyaXRlKDAsIGRhdGEsIG51bGxwdHIs
IFt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBpZGVudGlmaWVyXShpbnQgZXJy
b3IpIG11dGFibGUgewpAQCAtNDQ1LDcgKzQ0NSw3IEBAIHZvaWQgRW5naW5lOjpyZW1vdmVGaWxl
KGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1faW9RdWV1
ZS0+ZGlzcGF0Y2goW2ZpbGVuYW1lID0gZmlsZW5hbWUuaXNvbGF0ZWRDb3B5KCldKCkgbXV0YWJs
ZSB7Ci0gICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZmlsZW5hbWUpOwor
ICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGZpbGVuYW1lKTsKICAgICB9KTsKIH0KIApA
QCAtNDg3LDggKzQ4Nyw4IEBAIHZvaWQgRW5naW5lOjpmZXRjaEVudHJpZXMoYm9vbCBzaG91bGRD
b21wdXRlU2l6ZSwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlCiAgICAgfQogCiAgICAg
YXV0byB0YXNrQ291bnRlciA9IFJlYWRPcmlnaW5zVGFza0NvdW50ZXI6OmNyZWF0ZShXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgZm9yIChhdXRvJiBmb2xkZXJQYXRoIDogV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShtX3Jvb3RQYXRoLCAiKiIpKSB7Ci0gICAgICAg
IGlmICghV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZUlzRGlyZWN0b3J5KGZvbGRlclBhdGgsIFdl
YkNvcmU6OkZpbGVTeXN0ZW06OlNob3VsZEZvbGxvd1N5bWJvbGljTGlua3M6Ok5vKSkKKyAgICBm
b3IgKGF1dG8mIGZvbGRlclBhdGggOiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KG1fcm9vdFBh
dGgsICIqIikpIHsKKyAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjpmaWxlSXNEaXJlY3RvcnkoZm9s
ZGVyUGF0aCwgRmlsZVN5c3RlbTo6U2hvdWxkRm9sbG93U3ltYm9saWNMaW5rczo6Tm8pKQogICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgIENhY2hlczo6cmV0cmlldmVPcmlnaW5Gcm9tRGly
ZWN0b3J5KGZvbGRlclBhdGgsICptX2lvUXVldWUsIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIHNob3VsZENvbXB1dGVTaXplLCB0YXNrQ291bnRlciA9IHRhc2tDb3VudGVyLmNvcHlS
ZWYoKV0gKGF1dG8mJiBvcmlnaW4pIG11dGFibGUgewogICAgICAgICAgICAgQVNTRVJUKFJ1bkxv
b3A6OmlzTWFpbigpKTsKQEAgLTUzMSw4ICs1MzEsOCBAQCB2b2lkIEVuZ2luZTo6Y2xlYXJBbGxD
YWNoZXNGcm9tRGlzayhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZQogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICBtX2lvUXVldWUtPmRpc3Bh
dGNoKFtwYXRoID0gbV9yb290UGF0aC5pc29sYXRlZENvcHkoKSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgZm9yIChh
dXRvJiBmaWxlbmFtZSA6IFdlYkNvcmU6OkZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkocGF0aCwg
IioiKSkgewotICAgICAgICAgICAgaWYgKFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVJc0RpcmVj
dG9yeShmaWxlbmFtZSwgV2ViQ29yZTo6RmlsZVN5c3RlbTo6U2hvdWxkRm9sbG93U3ltYm9saWNM
aW5rczo6Tm8pKQorICAgICAgICBmb3IgKGF1dG8mIGZpbGVuYW1lIDogRmlsZVN5c3RlbTo6bGlz
dERpcmVjdG9yeShwYXRoLCAiKiIpKSB7CisgICAgICAgICAgICBpZiAoRmlsZVN5c3RlbTo6Zmls
ZUlzRGlyZWN0b3J5KGZpbGVuYW1lLCBGaWxlU3lzdGVtOjpTaG91bGRGb2xsb3dTeW1ib2xpY0xp
bmtzOjpObykpCiAgICAgICAgICAgICAgICAgZGVsZXRlRGlyZWN0b3J5UmVjdXJzaXZlbHkoZmls
ZW5hbWUpOwogICAgICAgICB9CiAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CkBAIC01NjIsOCArNTYyLDggQEAgdm9pZCBFbmdpbmU6
OmNsZWFyQ2FjaGVzRm9yT3JpZ2luRnJvbURpc2soY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhJiBvcmkKIAogICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dy
ZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogCi0gICAgZm9yIChh
dXRvJiBmb2xkZXJQYXRoIDogV2ViQ29yZTo6RmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShtX3Jv
b3RQYXRoLCAiKiIpKSB7Ci0gICAgICAgIGlmICghV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZUlz
RGlyZWN0b3J5KGZvbGRlclBhdGgsIFdlYkNvcmU6OkZpbGVTeXN0ZW06OlNob3VsZEZvbGxvd1N5
bWJvbGljTGlua3M6Ok5vKSkKKyAgICBmb3IgKGF1dG8mIGZvbGRlclBhdGggOiBGaWxlU3lzdGVt
OjpsaXN0RGlyZWN0b3J5KG1fcm9vdFBhdGgsICIqIikpIHsKKyAgICAgICAgaWYgKCFGaWxlU3lz
dGVtOjpmaWxlSXNEaXJlY3RvcnkoZm9sZGVyUGF0aCwgRmlsZVN5c3RlbTo6U2hvdWxkRm9sbG93
U3ltYm9saWNMaW5rczo6Tm8pKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIENhY2hl
czo6cmV0cmlldmVPcmlnaW5Gcm9tRGlyZWN0b3J5KGZvbGRlclBhdGgsICptX2lvUXVldWUsIFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG9yaWdpbiwgY2FsbGJhY2tBZ2dy
ZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKSwgZm9sZGVyUGF0aF0gKE9wdGlv
bmFsPFdlYkNvcmU6OkNsaWVudE9yaWdpbj4mJiBmb2xkZXJPcmlnaW4pIG11dGFibGUgewogICAg
ICAgICAgICAgaWYgKCFmb2xkZXJPcmlnaW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAK
aW5kZXggMTkxMzQ3MGNkZDIyMGNlM2JlOTc1ZGY5OTAwZWYzNTBkMDcxNzYzYy4uMWY2MDhjZjUy
NWY5OTZiMjRlYTQxMTM2MDBlOGUyOWNiMjg3YzI3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2Fj
aGVzLmNwcApAQCAtNDIsMTIgKzQyLDEyIEBAIHVzaW5nIG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGU7
CiAKIHN0YXRpYyBpbmxpbmUgU3RyaW5nIGNhY2hlc0xpc3RGaWxlbmFtZShjb25zdCBTdHJpbmcm
IGNhY2hlc1Jvb3RQYXRoKQogewotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoY2FjaGVzUm9vdFBhdGgsICJjYWNoZXNsaXN0Il9zKTsKKyAg
ICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNhY2hlc1Jvb3RQ
YXRoLCAiY2FjaGVzbGlzdCJfcyk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgU3RyaW5nIGNhY2hlc09y
aWdpbkZpbGVuYW1lKGNvbnN0IFN0cmluZyYgY2FjaGVzUm9vdFBhdGgpCiB7Ci0gICAgcmV0dXJu
IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChjYWNoZXNSb290
UGF0aCwgIm9yaWdpbiJfcyk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChjYWNoZXNSb290UGF0aCwgIm9yaWdpbiJfcyk7CiB9CiAKIENhY2hlczo6fkNh
Y2hlcygpCkBAIC01OCw3ICs1OCw3IEBAIENhY2hlczo6fkNhY2hlcygpCiB2b2lkIENhY2hlczo6
cmV0cmlldmVPcmlnaW5Gcm9tRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgZm9sZGVyUGF0aCwgV29y
a1F1ZXVlJiBxdWV1ZSwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdlYkNv
cmU6OkNsaWVudE9yaWdpbj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgcXVldWUu
ZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciks
IGZpbGVuYW1lID0gY2FjaGVzT3JpZ2luRmlsZW5hbWUoZm9sZGVyUGF0aCldKCkgbXV0YWJsZSB7
Ci0gICAgICAgIGlmICghV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhmaWxlbmFtZSkp
IHsKKyAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGZpbGVuYW1lKSkgewogICAg
ICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCk7CiAgICAgICAgICAgICB9KTsKQEAgLTQwOCw3
ICs0MDgsNyBAQCB2b2lkIENhY2hlczo6cmVhZENhY2hlc0Zyb21EaXNrKFdURjo6RnVuY3Rpb248
dm9pZChFeHBlY3RlZDxWZWN0b3I8Q2FjaGU+LCBFcnJvcgogICAgIH0KIAogICAgIGF1dG8gZmls
ZW5hbWUgPSBjYWNoZXNMaXN0RmlsZW5hbWUobV9yb290UGF0aCk7Ci0gICAgaWYgKCFXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGZpbGVuYW1lKSkgeworICAgIGlmICghRmlsZVN5c3Rl
bTo6ZmlsZUV4aXN0cyhmaWxlbmFtZSkpIHsKICAgICAgICAgY2FsbGJhY2soVmVjdG9yPENhY2hl
PiB7IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCmluZGV4IDlkYjdkNzY4YzYzY2Y4
YjRmNWJiNzNlYmZjNjA4NDhjOGM1ODE5NjkuLjEyNDBmYjQ1ZDI0MDhmZGRiNTA1NjI1ZDBiMmFm
YTM4N2MyNTRmMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZS5jcHAKQEAgLTMxLDEzICszMSwxMyBAQAogI2luY2x1ZGUgIk5ldHdv
cmtDYWNoZVN0YXRpc3RpY3MuaCIKICNpbmNsdWRlICJOZXR3b3JrQ2FjaGVTdG9yYWdlLmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9DYWNoZVZhbGlkYXRpb24uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0Zp
bGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUVFBIZWFkZXJOYW1lcy5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvTG93UG93ZXJNb2RlTm90aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9TaGFyZWRCdWZmZXIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1
ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAj
aW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KQEAgLTUwLDcgKzUwLDcgQEAKIG5hbWVzcGFjZSBXZWJL
aXQgewogbmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7CiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OjpGaWxlU3lzdGVtOwordXNpbmcgbmFtZXNwYWNlIFdURjo6RmlsZVN5c3RlbTsKIAogc3RhdGlj
IGNvbnN0IEF0b21pY1N0cmluZyYgcmVzb3VyY2VUeXBlKCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQmxvYlN0b3JhZ2UuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVCbG9iU3Rv
cmFnZS5jcHAKaW5kZXggZjczYzUwZGExOTQ3OTMzNjVkNmY1MWUwNjE0MWI1MjM3MjdlNzFlZS4u
OTUzOGRhNjQxYjQyNzQwMDJiMjc5YWRhYTg3YzE1NDJkMzZhMDI3ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVCbG9iU3RvcmFnZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVC
bG9iU3RvcmFnZS5jcHAKQEAgLTI4LDggKzI4LDggQEAKIAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
ICNpbmNsdWRlICJOZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9G
aWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3Rl
bS5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3RmL1NIQTEuaD4KIApA
QCAtNTcsMTUgKzU3LDE1IEBAIHZvaWQgQmxvYlN0b3JhZ2U6OnN5bmNocm9uaXplKCkKIHsKICAg
ICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06
Om1ha2VBbGxEaXJlY3RvcmllcyhibG9iRGlyZWN0b3J5UGF0aCgpKTsKKyAgICBGaWxlU3lzdGVt
OjptYWtlQWxsRGlyZWN0b3JpZXMoYmxvYkRpcmVjdG9yeVBhdGgoKSk7CiAKICAgICBtX2FwcHJv
eGltYXRlU2l6ZSA9IDA7CiAgICAgYXV0byBibG9iRGlyZWN0b3J5ID0gYmxvYkRpcmVjdG9yeVBh
dGgoKTsKICAgICB0cmF2ZXJzZURpcmVjdG9yeShibG9iRGlyZWN0b3J5LCBbdGhpcywgJmJsb2JE
aXJlY3RvcnldKGNvbnN0IFN0cmluZyYgbmFtZSwgRGlyZWN0b3J5RW50cnlUeXBlIHR5cGUpIHsK
ICAgICAgICAgaWYgKHR5cGUgIT0gRGlyZWN0b3J5RW50cnlUeXBlOjpGaWxlKQogICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICBhdXRvIHBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoYmxvYkRpcmVjdG9yeSwgbmFtZSk7Ci0gICAgICAgIGF1dG8g
ZmlsZVBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
cGF0aCk7CisgICAgICAgIGF1dG8gcGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChibG9iRGlyZWN0b3J5LCBuYW1lKTsKKyAgICAgICAgYXV0byBmaWxlUGF0aCA9IEZp
bGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKICAgICAgICAgc3RydWN0
IHN0YXQgc3RhdDsKICAgICAgICAgOjpzdGF0KGZpbGVQYXRoLmRhdGEoKSwgJnN0YXQpOwogICAg
ICAgICAvLyBObyBjbGllbnRzIGxlZnQgZm9yIHRoaXMgYmxvYi4KQEAgLTgxLDcgKzgxLDcgQEAg
dm9pZCBCbG9iU3RvcmFnZTo6c3luY2hyb25pemUoKQogU3RyaW5nIEJsb2JTdG9yYWdlOjpibG9i
UGF0aEZvckhhc2goY29uc3QgU0hBMTo6RGlnZXN0JiBoYXNoKSBjb25zdAogewogICAgIGF1dG8g
aGFzaEFzU3RyaW5nID0gU0hBMTo6aGV4RGlnZXN0KGhhc2gpOwotICAgIHJldHVybiBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoYmxvYkRpcmVjdG9yeVBhdGgo
KSwgU3RyaW5nOjpmcm9tVVRGOChoYXNoQXNTdHJpbmcpKTsKKyAgICByZXR1cm4gRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGJsb2JEaXJlY3RvcnlQYXRoKCksIFN0cmluZzo6
ZnJvbVVURjgoaGFzaEFzU3RyaW5nKSk7CiB9CiAKIEJsb2JTdG9yYWdlOjpCbG9iIEJsb2JTdG9y
YWdlOjphZGQoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBEYXRhJiBkYXRhKQpAQCAtOTMsOCAr
OTMsOCBAQCBCbG9iU3RvcmFnZTo6QmxvYiBCbG9iU3RvcmFnZTo6YWRkKGNvbnN0IFN0cmluZyYg
cGF0aCwgY29uc3QgRGF0YSYgZGF0YSkKICAgICBpZiAoZGF0YS5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiB7IGRhdGEsIGhhc2ggfTsKIAotICAgIGF1dG8gYmxvYlBhdGggPSBXZWJDb3JlOjpG
aWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oYmxvYlBhdGhGb3JIYXNoKGhhc2gp
KTsKLSAgICBhdXRvIGxpbmtQYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKHBhdGgpOworICAgIGF1dG8gYmxvYlBhdGggPSBGaWxlU3lzdGVtOjpmaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oYmxvYlBhdGhGb3JIYXNoKGhhc2gpKTsKKyAgICBhdXRvIGxp
bmtQYXRoID0gRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwogICAg
IHVubGluayhsaW5rUGF0aC5kYXRhKCkpOwogCiAgICAgYm9vbCBibG9iRXhpc3RzID0gYWNjZXNz
KGJsb2JQYXRoLmRhdGEoKSwgRl9PSykgIT0gLTE7CkBAIC0xMjcsNyArMTI3LDcgQEAgQmxvYlN0
b3JhZ2U6OkJsb2IgQmxvYlN0b3JhZ2U6OmdldChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAg
QVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBhdXRvIGxpbmtQYXRoID0gV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGF1dG8g
bGlua1BhdGggPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAg
ICAgYXV0byBkYXRhID0gbWFwRmlsZShsaW5rUGF0aC5kYXRhKCkpOwogCiAgICAgcmV0dXJuIHsg
ZGF0YSwgY29tcHV0ZVNIQTEoZGF0YSwgbV9zYWx0KSB9OwpAQCAtMTM3LDcgKzEzNyw3IEBAIHZv
aWQgQmxvYlN0b3JhZ2U6OnJlbW92ZShjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgQVNTRVJU
KCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBhdXRvIGxpbmtQYXRoID0gV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGF1dG8gbGlua1Bh
dGggPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAgICAgdW5s
aW5rKGxpbmtQYXRoLmRhdGEoKSk7CiB9CiAKQEAgLTE0NSw3ICsxNDUsNyBAQCB1bnNpZ25lZCBC
bG9iU3RvcmFnZTo6c2hhcmVDb3VudChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgQVNTRVJU
KCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBhdXRvIGxpbmtQYXRoID0gV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGF1dG8gbGlua1Bh
dGggPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAgICAgc3Ry
dWN0IHN0YXQgc3RhdDsKICAgICBpZiAoOjpzdGF0KGxpbmtQYXRoLmRhdGEoKSwgJnN0YXQpIDwg
MCkKICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcAppbmRleCA5ZTMxODk0M2Q3YzYxMzhj
YWExYzFkYzMwZjNhMmYzNWYzMzAyOWYyLi4xYTMyYWE5YTBlNTNiNDY5NTdhYThlYjNiYjIzODU2
ZjBhODk5ZjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlRGF0YS5jcHAKQEAgLTI2LDkgKzI2LDkgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJOZXR3b3JrQ2FjaGVEYXRhLmgiCiAKLSNpbmNsdWRlIDxXZWJD
b3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxmY250bC5oPgogI2luY2x1ZGUgPHd0Zi9Dcnlw
dG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+
CiAKICNpZiAhT1MoV0lORE9XUykKICNpbmNsdWRlIDxzeXMvbW1hbi5oPgpAQCAtMTU2LDcgKzE1
Niw3IEBAIHN0YXRpYyBTYWx0IG1ha2VTYWx0KCkKIE9wdGlvbmFsPFNhbHQ+IHJlYWRPck1ha2VT
YWx0KGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICNpZiAhT1MoV0lORE9XUykKLSAgICBhdXRvIGNw
YXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgp
OworICAgIGF1dG8gY3BhdGggPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
cGF0aCk7CiAgICAgYXV0byBmZCA9IG9wZW4oY3BhdGguZGF0YSgpLCBPX1JET05MWSwgMCk7CiAg
ICAgU2FsdCBzYWx0OwogICAgIGF1dG8gYnl0ZXNSZWFkID0gcmVhZChmZCwgc2FsdC5kYXRhKCks
IHNhbHQuc2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uY3BwCmluZGV4IDI1YmVmN2Y5MmU4
ZWIzNjZhOTRmNGJjZDM3OTgzYjE2YTlkZTM1MDguLmIwYjJlNzE1ZTY1ZGQzYTkxM2NmNzBkNzAz
NjVhNDUwYmJlYjk5NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmNwcApAQCAtMjcsOCArMjcs
OCBAQAogI2luY2x1ZGUgIk5ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uaCIKIAogI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYv
QXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3Rm
L0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCkBAIC03MCw3ICs3
MCw3IEBAIHN0YXRpYyBEaXJlY3RvcnlFbnRyeVR5cGUgZGlyZWN0b3J5RW50cnlUeXBlKHVpbnQ4
X3QgZHR5cGUpCiB2b2lkIHRyYXZlcnNlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgY29u
c3QgRnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgRGlyZWN0b3J5RW50cnlUeXBlKT4mIGZ1
bmN0aW9uKQogewogI2lmICFPUyhXSU5ET1dTKQotICAgIERJUiogZGlyID0gb3BlbmRpcihXZWJD
b3JlOjpGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpKTsK
KyAgICBESVIqIGRpciA9IG9wZW5kaXIoRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKHBhdGgpLmRhdGEoKSk7CiAgICAgaWYgKCFkaXIpCiAgICAgICAgIHJldHVybjsKICAgICBk
aXJlbnQqIGRwOwpAQCAtOTQsMTAgKzk0LDEwIEBAIHZvaWQgdHJhdmVyc2VEaXJlY3RvcnkoY29u
c3QgU3RyaW5nJiBwYXRoLCBjb25zdCBGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBECiB2
b2lkIGRlbGV0ZURpcmVjdG9yeVJlY3Vyc2l2ZWx5KGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAg
ICB0cmF2ZXJzZURpcmVjdG9yeShwYXRoLCBbJnBhdGhdKGNvbnN0IFN0cmluZyYgbmFtZSwgRGly
ZWN0b3J5RW50cnlUeXBlIHR5cGUpIHsKLSAgICAgICAgU3RyaW5nIGVudHJ5UGF0aCA9IFdlYkNv
cmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXRoLCBuYW1lKTsKKyAg
ICAgICAgU3RyaW5nIGVudHJ5UGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChwYXRoLCBuYW1lKTsKICAgICAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgICAgIGNhc2Ug
RGlyZWN0b3J5RW50cnlUeXBlOjpGaWxlOgotICAgICAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6ZGVsZXRlRmlsZShlbnRyeVBhdGgpOworICAgICAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRl
RmlsZShlbnRyeVBhdGgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgRGlyZWN0
b3J5RW50cnlUeXBlOjpEaXJlY3Rvcnk6CiAgICAgICAgICAgICBkZWxldGVEaXJlY3RvcnlSZWN1
cnNpdmVseShlbnRyeVBhdGgpOwpAQCAtMTA1LDE5ICsxMDUsMTkgQEAgdm9pZCBkZWxldGVEaXJl
Y3RvcnlSZWN1cnNpdmVseShjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgICAgIC8vIFRoaXMgZG9l
c24ndCBmb2xsb3cgc3ltbGlua3MuCiAgICAgICAgIH0KICAgICB9KTsKLSAgICBXZWJDb3JlOjpG
aWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShwYXRoKTsKKyAgICBGaWxlU3lzdGVtOjpk
ZWxldGVFbXB0eURpcmVjdG9yeShwYXRoKTsKIH0KIAogRmlsZVRpbWVzIGZpbGVUaW1lcyhjb25z
dCBTdHJpbmcmIHBhdGgpCiB7CiAjaWYgSEFWRShTVEFUX0JJUlRIVElNRSkKICAgICBzdHJ1Y3Qg
c3RhdCBmaWxlSW5mbzsKLSAgICBpZiAoc3RhdChXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpLCAmZmlsZUluZm8pKQorICAgIGlmIChzdGF0
KEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCksICZmaWxl
SW5mbykpCiAgICAgICAgIHJldHVybiB7IH07CiAgICAgcmV0dXJuIHsgV2FsbFRpbWU6OmZyb21S
YXdTZWNvbmRzKGZpbGVJbmZvLnN0X2JpcnRodGltZSksIFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25k
cyhmaWxlSW5mby5zdF9tdGltZSkgfTsKICNlbGlmIFVTRShTT1VQKQogICAgIC8vIFRoZXJlJ3Mg
bm8gc3RfYmlydGh0aW1lIGluIHNvbWUgb3BlcmF0aW5nIHN5c3RlbXMgbGlrZSBMaW51eCwgc28g
d2UgdXNlIHhhdHRycyB0byBzZXQvZ2V0IHRoZSBjcmVhdGlvbiB0aW1lLgotICAgIEdSZWZQdHI8
R0ZpbGU+IGZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0aChXZWJDb3JlOjpGaWxl
U3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpKSk7CisgICAgR1Jl
ZlB0cjxHRmlsZT4gZmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKEZpbGVTeXN0
ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCkpKTsKICAgICBHUmVmUHRy
PEdGaWxlSW5mbz4gZmlsZUluZm8gPSBhZG9wdEdSZWYoZ19maWxlX3F1ZXJ5X2luZm8oZmlsZS5n
ZXQoKSwgInhhdHRyOjpiaXJ0aHRpbWUsdGltZTo6bW9kaWZpZWQiLCBHX0ZJTEVfUVVFUllfSU5G
T19OT05FLCBudWxscHRyLCBudWxscHRyKSk7CiAgICAgaWYgKCFmaWxlSW5mbykKICAgICAgICAg
cmV0dXJuIHsgfTsKQEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lkIHVwZGF0ZUZpbGVNb2RpZmljYXRp
b25UaW1lSWZOZWVkZWQoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIH0KICNpZiAhT1MoV0lORE9X
UykKICAgICAvLyBUaGlzIHJlYWxseSB1cGRhdGVzIGJvdGggdGhlIGFjY2VzcyB0aW1lIGFuZCB0
aGUgbW9kaWZpY2F0aW9uIHRpbWUuCi0gICAgdXRpbWVzKFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCksIG51bGxwdHIpOworICAgIHV0aW1l
cyhGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpLCBudWxs
cHRyKTsKICNlbmRpZgogfQogCkBAIC0xNTYsNyArMTU2LDcgQEAgYm9vbCBpc1NhZmVUb1VzZU1l
bW9yeU1hcEZvclBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIGF0dHJsaXN0IGF0dHJMaXN0
ID0geyB9OwogICAgIGF0dHJMaXN0LmJpdG1hcGNvdW50ID0gQVRUUl9CSVRfTUFQX0NPVU5UOwog
ICAgIGF0dHJMaXN0LmNvbW1vbmF0dHIgPSBBVFRSX0NNTl9EQVRBX1BST1RFQ1RfRkxBR1M7Ci0g
ICAgaW50MzJfdCBlcnJvciA9IGdldGF0dHJsaXN0KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCksICZhdHRyTGlzdCwgJmF0dHJCdWZmZXIs
IHNpemVvZihhdHRyQnVmZmVyKSwgRlNPUFRfTk9GT0xMT1cpOworICAgIGludDMyX3QgZXJyb3Ig
PSBnZXRhdHRybGlzdChGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCku
ZGF0YSgpLCAmYXR0ckxpc3QsICZhdHRyQnVmZmVyLCBzaXplb2YoYXR0ckJ1ZmZlciksIEZTT1BU
X05PRk9MTE9XKTsKICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1Io
TmV0d29yaywgIlVuYWJsZSB0byBnZXQgY2FjaGUgZGlyZWN0b3J5IHByb3RlY3Rpb24gY2xhc3Ms
IGRpc2FibGluZyB1c2Ugb2Ygc2hhcmVkIG1hcHBlZCBtZW1vcnkiKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uaAppbmRleCA3ZGNjZTZjNGMzNjcyOGU5MzE1ODMz
YTUzMjliZDU2ZDVjNDEyYjhhLi4xODMxYTM1MWM5YjBmZjUwNWRmOWFkYzdmN2MwM2FmNzAxZDZj
ODgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZUZpbGVTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uaApAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21h
IG9uY2UKIAotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPHd0Zi9G
aWxlU3lzdGVtLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogbmFtZXNwYWNlIE5ldHdvcmtDYWNo
ZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZUlPQ2hhbm5lbENvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxDb2NvYS5tbQppbmRleCAzNjliY2Y5NzNmMmRjZWUw
YTNkNDM5NjM0NTM3MGI2NDYyMWU5ZjA4Li5jNjUyMTY0Y2ExODhhMDdkYTU3YmNkZTc1ZjNhMjI1
MmUxODJmMDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZUlPQ2hhbm5lbENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsQ29jb2EubW0KQEAgLTQxLDcgKzQx
LDcgQEAgSU9DaGFubmVsOjpJT0NoYW5uZWwoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgVHlwZSB0
eXBlKQogICAgIDogbV9wYXRoKGZpbGVQYXRoKQogICAgICwgbV90eXBlKHR5cGUpCiB7Ci0gICAg
YXV0byBwYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KGZpbGVQYXRoKTsKKyAgICBhdXRvIHBhdGggPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZmlsZVBhdGgpOwogICAgIGludCBvZmxhZzsKICAgICBtb2RlX3QgbW9kZTsKICAg
ICBib29sIHVzZUxvd0lPUHJpb3JpdHkgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsU291cC5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbFNv
dXAuY3BwCmluZGV4IDUzOTJjNzkwNTY5ZmQ2NjU3YTIxYTI2MjBjYjA1MWVmYmVlZjA0NTkuLmI1
NmY5NjU1MzEyY2RhZDBjMTA4ZGNjYzZlZjE3Mjk5NWFlZDFhNWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsU291cC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJ
T0NoYW5uZWxTb3VwLmNwcApAQCAtNDEsNyArNDEsNyBAQCBJT0NoYW5uZWw6OklPQ2hhbm5lbChj
b25zdCBTdHJpbmcmIGZpbGVQYXRoLCBUeXBlIHR5cGUpCiAgICAgOiBtX3BhdGgoZmlsZVBhdGgp
CiAgICAgLCBtX3R5cGUodHlwZSkKIHsKLSAgICBhdXRvIHBhdGggPSBXZWJDb3JlOjpGaWxlU3lz
dGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZVBhdGgpOworICAgIGF1dG8gcGF0aCA9
IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWxlUGF0aCk7CiAgICAgR1Jl
ZlB0cjxHRmlsZT4gZmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKHBhdGguZGF0
YSgpKSk7CiAgICAgc3dpdGNoIChtX3R5cGUpIHsKICAgICBjYXNlIFR5cGU6OkNyZWF0ZTogewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTdGF0aXN0aWNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlU3RhdGlzdGljcy5jcHAKaW5kZXggYjRhMTMxNGViNGIxNWVlMDMzMmY3NGU5MjFl
MmZjODcxOTA2NGMzNy4uNjFiZWYxZTExYzNjZjgzNzVmNzM5MjViNzIzYjkxNmZiMzFlYjM3ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTdGF0aXN0aWNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVN0YXRpc3RpY3MuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIHN0ZDo6dW5pcXVl
X3B0cjxTdGF0aXN0aWNzPiBTdGF0aXN0aWNzOjpvcGVuKENhY2hlJiBjYWNoZSwgY29uc3QgU3Ry
aW5nJiBjYWNoZVBhCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIFN0
cmluZyBkYXRhYmFzZVBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQoY2FjaGVQYXRoLCBTdGF0aXN0aWNzRGF0YWJhc2VOYW1lKTsKKyAgICBTdHJpbmcg
ZGF0YWJhc2VQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNhY2hl
UGF0aCwgU3RhdGlzdGljc0RhdGFiYXNlTmFtZSk7CiAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8U3RhdGlzdGljcz4oY2FjaGUsIGRhdGFiYXNlUGF0aCk7CiB9CiAKQEAgLTk4LDcgKzk4LDcg
QEAgdm9pZCBTdGF0aXN0aWNzOjppbml0aWFsaXplKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VQYXRo
KQogICAgIHNlcmlhbEJhY2tncm91bmRJT1F1ZXVlKCkuZGlzcGF0Y2goW3RoaXMsIGRhdGFiYXNl
UGF0aCA9IGRhdGFiYXNlUGF0aC5pc29sYXRlZENvcHkoKSwgbmV0d29ya0NhY2hlUGF0aCA9IG1f
Y2FjaGUucmVjb3Jkc1BhdGgoKSwgc3RhcnRUaW1lXSB7CiAgICAgICAgIFdlYkNvcmU6OlNRTGl0
ZVRyYW5zYWN0aW9uSW5Qcm9ncmVzc0F1dG9Db3VudGVyIHRyYW5zYWN0aW9uQ291bnRlcjsKIAot
ICAgICAgICBpZiAoIVdlYkNvcmU6OkZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhXZWJD
b3JlOjpGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKGRhdGFiYXNlUGF0aCkpKQorICAgICAgICBp
ZiAoIUZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhGaWxlU3lzdGVtOjpkaXJlY3RvcnlO
YW1lKGRhdGFiYXNlUGF0aCkpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIExPRyhO
ZXR3b3JrQ2FjaGUsICIoTmV0d29ya1Byb2Nlc3MpIE9wZW5pbmcgbmV0d29yayBjYWNoZSBzdGF0
aXN0aWNzIGRhdGFiYXNlIGF0ICVzLi4uIiwgZGF0YWJhc2VQYXRoLnV0ZjgoKS5kYXRhKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlU3RvcmFnZS5jcHAKaW5kZXggNGVhNzQzMGZhMjA0NGU5MDE0YTg5OTA0ZDViYmMxZWI2
NWI3OWNjNi4uYzI2YWExYjk2YzcxM2E4MDAzN2ZkMWM1Nzg2NWRiOTcyYjY0YWVlZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9y
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZVN0b3JhZ2UuY3BwCkBAIC0xNDUsMjkgKzE0NSwyOSBAQCBwdWJsaWM6CiBzdGF0aWMgU3Ry
aW5nIG1ha2VWZXJzaW9uZWREaXJlY3RvcnlQYXRoKGNvbnN0IFN0cmluZyYgYmFzZURpcmVjdG9y
eVBhdGgpCiB7CiAgICAgU3RyaW5nIHZlcnNpb25TdWJkaXJlY3RvcnkgPSB2ZXJzaW9uRGlyZWN0
b3J5UHJlZml4ICsgU3RyaW5nOjpudW1iZXIoU3RvcmFnZTo6dmVyc2lvbik7Ci0gICAgcmV0dXJu
IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChiYXNlRGlyZWN0
b3J5UGF0aCwgdmVyc2lvblN1YmRpcmVjdG9yeSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChiYXNlRGlyZWN0b3J5UGF0aCwgdmVyc2lvblN1YmRpcmVj
dG9yeSk7CiB9CiAKIHN0YXRpYyBTdHJpbmcgbWFrZVJlY29yZHNEaXJlY3RvcnlQYXRoKGNvbnN0
IFN0cmluZyYgYmFzZURpcmVjdG9yeVBhdGgpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtYWtlVmVyc2lvbmVkRGlyZWN0b3J5UGF0
aChiYXNlRGlyZWN0b3J5UGF0aCksIHJlY29yZHNEaXJlY3RvcnlOYW1lKTsKKyAgICByZXR1cm4g
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1ha2VWZXJzaW9uZWREaXJlY3Rv
cnlQYXRoKGJhc2VEaXJlY3RvcnlQYXRoKSwgcmVjb3Jkc0RpcmVjdG9yeU5hbWUpOwogfQogCiBz
dGF0aWMgU3RyaW5nIG1ha2VCbG9iRGlyZWN0b3J5UGF0aChjb25zdCBTdHJpbmcmIGJhc2VEaXJl
Y3RvcnlQYXRoKQogewotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQobWFrZVZlcnNpb25lZERpcmVjdG9yeVBhdGgoYmFzZURpcmVjdG9yeVBh
dGgpLCBibG9ic0RpcmVjdG9yeU5hbWUpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQobWFrZVZlcnNpb25lZERpcmVjdG9yeVBhdGgoYmFzZURpcmVjdG9y
eVBhdGgpLCBibG9ic0RpcmVjdG9yeU5hbWUpOwogfQogCiBzdGF0aWMgU3RyaW5nIG1ha2VTYWx0
RmlsZVBhdGgoY29uc3QgU3RyaW5nJiBiYXNlRGlyZWN0b3J5UGF0aCkKIHsKLSAgICByZXR1cm4g
V2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1ha2VWZXJzaW9u
ZWREaXJlY3RvcnlQYXRoKGJhc2VEaXJlY3RvcnlQYXRoKSwgc2FsdEZpbGVOYW1lKTsKKyAgICBy
ZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1ha2VWZXJzaW9uZWRE
aXJlY3RvcnlQYXRoKGJhc2VEaXJlY3RvcnlQYXRoKSwgc2FsdEZpbGVOYW1lKTsKIH0KIAogUmVm
UHRyPFN0b3JhZ2U+IFN0b3JhZ2U6Om9wZW4oY29uc3QgU3RyaW5nJiBjYWNoZVBhdGgsIE1vZGUg
bW9kZSkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgaWYgKCFXZWJD
b3JlOjpGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMobWFrZVZlcnNpb25lZERpcmVjdG9y
eVBhdGgoY2FjaGVQYXRoKSkpCisgICAgaWYgKCFGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3Jp
ZXMobWFrZVZlcnNpb25lZERpcmVjdG9yeVBhdGgoY2FjaGVQYXRoKSkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIGF1dG8gc2FsdCA9IHJlYWRPck1ha2VTYWx0KG1ha2VTYWx0RmlsZVBh
dGgoY2FjaGVQYXRoKSk7CiAgICAgaWYgKCFzYWx0KQpAQCAtMTgwLDEzICsxODAsMTMgQEAgdm9p
ZCB0cmF2ZXJzZVJlY29yZHNGaWxlcyhjb25zdCBTdHJpbmcmIHJlY29yZHNQYXRoLCBjb25zdCBT
dHJpbmcmIGV4cGVjdGVkVHlwZSwKICAgICB0cmF2ZXJzZURpcmVjdG9yeShyZWNvcmRzUGF0aCwg
WyZdKGNvbnN0IFN0cmluZyYgcGFydGl0aW9uTmFtZSwgRGlyZWN0b3J5RW50cnlUeXBlIGVudHJ5
VHlwZSkgewogICAgICAgICBpZiAoZW50cnlUeXBlICE9IERpcmVjdG9yeUVudHJ5VHlwZTo6RGly
ZWN0b3J5KQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBTdHJpbmcgcGFydGl0aW9uUGF0
aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmRz
UGF0aCwgcGFydGl0aW9uTmFtZSk7CisgICAgICAgIFN0cmluZyBwYXJ0aXRpb25QYXRoID0gRmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZHNQYXRoLCBwYXJ0aXRpb25O
YW1lKTsKICAgICAgICAgdHJhdmVyc2VEaXJlY3RvcnkocGFydGl0aW9uUGF0aCwgWyZdKGNvbnN0
IFN0cmluZyYgYWN0dWFsVHlwZSwgRGlyZWN0b3J5RW50cnlUeXBlIGVudHJ5VHlwZSkgewogICAg
ICAgICAgICAgaWYgKGVudHJ5VHlwZSAhPSBEaXJlY3RvcnlFbnRyeVR5cGU6OkRpcmVjdG9yeSkK
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBpZiAoIWV4cGVjdGVkVHlwZS5p
c0VtcHR5KCkgJiYgZXhwZWN0ZWRUeXBlICE9IGFjdHVhbFR5cGUpCiAgICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgU3RyaW5nIHJlY29yZERpcmVjdG9yeVBhdGggPSBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGFydGl0aW9uUGF0aCwgYWN0
dWFsVHlwZSk7CisgICAgICAgICAgICBTdHJpbmcgcmVjb3JkRGlyZWN0b3J5UGF0aCA9IEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXJ0aXRpb25QYXRoLCBhY3R1YWxUeXBl
KTsKICAgICAgICAgICAgIHRyYXZlcnNlRGlyZWN0b3J5KHJlY29yZERpcmVjdG9yeVBhdGgsIFsm
ZnVuY3Rpb24sICZyZWNvcmREaXJlY3RvcnlQYXRoLCAmYWN0dWFsVHlwZV0oY29uc3QgU3RyaW5n
JiBmaWxlTmFtZSwgRGlyZWN0b3J5RW50cnlUeXBlIGVudHJ5VHlwZSkgewogICAgICAgICAgICAg
ICAgIGlmIChlbnRyeVR5cGUgIT0gRGlyZWN0b3J5RW50cnlUeXBlOjpGaWxlIHx8IGZpbGVOYW1l
Lmxlbmd0aCgpIDwgS2V5OjpoYXNoU3RyaW5nTGVuZ3RoKCkpCiAgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKQEAgLTIwNiwxOCArMjA2LDE4IEBAIHN0YXRpYyB2b2lkIGRlbGV0ZUVtcHR5UmVj
b3Jkc0RpcmVjdG9yaWVzKGNvbnN0IFN0cmluZyYgcmVjb3Jkc1BhdGgpCiAgICAgICAgICAgICBy
ZXR1cm47CiAKICAgICAgICAgLy8gRGVsZXRlIFt0eXBlXSBzdWItZm9sZGVycy4KLSAgICAgICAg
U3RyaW5nIHBhcnRpdGlvblBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQocmVjb3Jkc1BhdGgsIHBhcnRpdGlvbk5hbWUpOworICAgICAgICBTdHJpbmcg
cGFydGl0aW9uUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNv
cmRzUGF0aCwgcGFydGl0aW9uTmFtZSk7CiAgICAgICAgIHRyYXZlcnNlRGlyZWN0b3J5KHBhcnRp
dGlvblBhdGgsIFsmcGFydGl0aW9uUGF0aF0oY29uc3QgU3RyaW5nJiBzdWJkaXJOYW1lLCBEaXJl
Y3RvcnlFbnRyeVR5cGUgZW50cnlUeXBlKSB7CiAgICAgICAgICAgICBpZiAoZW50cnlUeXBlICE9
IERpcmVjdG9yeUVudHJ5VHlwZTo6RGlyZWN0b3J5KQogICAgICAgICAgICAgICAgIHJldHVybjsK
IAogICAgICAgICAgICAgLy8gTGV0IHN5c3RlbSBmaWd1cmUgb3V0IGlmIGl0IGlzIHJlYWxseSBl
bXB0eS4KLSAgICAgICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0
b3J5KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXJ0aXRp
b25QYXRoLCBzdWJkaXJOYW1lKSk7CisgICAgICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVFbXB0
eURpcmVjdG9yeShGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGFydGl0aW9u
UGF0aCwgc3ViZGlyTmFtZSkpOwogICAgICAgICB9KTsKIAogICAgICAgICAvLyBEZWxldGUgW1Bh
cnRpdGlvbl0gZm9sZGVycy4KICAgICAgICAgLy8gTGV0IHN5c3RlbSBmaWd1cmUgb3V0IGlmIGl0
IGlzIHJlYWxseSBlbXB0eS4KLSAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRW1w
dHlEaXJlY3RvcnkoV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KHJlY29yZHNQYXRoLCBwYXJ0aXRpb25OYW1lKSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0
ZUVtcHR5RGlyZWN0b3J5KEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNv
cmRzUGF0aCwgcGFydGl0aW9uTmFtZSkpOwogICAgIH0pOwogfQogCkBAIC0zMDAsMTEgKzMwMCwx
MSBAQCB2b2lkIFN0b3JhZ2U6OnN5bmNocm9uaXplKCkKIAogICAgICAgICBTdHJpbmcgYW55VHlw
ZTsKICAgICAgICAgdHJhdmVyc2VSZWNvcmRzRmlsZXMocmVjb3Jkc1BhdGgoKSwgYW55VHlwZSwg
WyZdKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgaGFzaFN0cmluZywgY29u
c3QgU3RyaW5nJiB0eXBlLCBib29sIGlzQmxvYiwgY29uc3QgU3RyaW5nJiByZWNvcmREaXJlY3Rv
cnlQYXRoKSB7Ci0gICAgICAgICAgICBhdXRvIGZpbGVQYXRoID0gV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZERpcmVjdG9yeVBhdGgsIGZpbGVOYW1l
KTsKKyAgICAgICAgICAgIGF1dG8gZmlsZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQocmVjb3JkRGlyZWN0b3J5UGF0aCwgZmlsZU5hbWUpOwogCiAgICAgICAgICAg
ICBLZXk6Okhhc2hUeXBlIGhhc2g7CiAgICAgICAgICAgICBpZiAoIUtleTo6c3RyaW5nVG9IYXNo
KGhhc2hTdHJpbmcsIGhhc2gpKSB7Ci0gICAgICAgICAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6ZGVsZXRlRmlsZShmaWxlUGF0aCk7CisgICAgICAgICAgICAgICAgRmlsZVN5c3RlbTo6ZGVs
ZXRlRmlsZShmaWxlUGF0aCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAg
fQogCkBAIC0zMTgsNyArMzE4LDcgQEAgdm9pZCBTdG9yYWdlOjpzeW5jaHJvbml6ZSgpCiAKICAg
ICAgICAgICAgIGlmIChzaG91bGRDb21wdXRlRXhhY3RSZWNvcmRzU2l6ZSkgewogICAgICAgICAg
ICAgICAgIGxvbmcgbG9uZyBmaWxlU2l6ZSA9IDA7Ci0gICAgICAgICAgICAgICAgV2ViQ29yZTo6
RmlsZVN5c3RlbTo6Z2V0RmlsZVNpemUoZmlsZVBhdGgsIGZpbGVTaXplKTsKKyAgICAgICAgICAg
ICAgICBGaWxlU3lzdGVtOjpnZXRGaWxlU2l6ZShmaWxlUGF0aCwgZmlsZVNpemUpOwogICAgICAg
ICAgICAgICAgIHJlY29yZHNTaXplICs9IGZpbGVTaXplOwogICAgICAgICAgICAgfQogCkBAIC0z
ODEsMTIgKzM4MSwxMiBAQCBib29sIFN0b3JhZ2U6Om1heUNvbnRhaW5CbG9iKGNvbnN0IEtleSYg
a2V5KSBjb25zdAogU3RyaW5nIFN0b3JhZ2U6OnJlY29yZERpcmVjdG9yeVBhdGhGb3JLZXkoY29u
c3QgS2V5JiBrZXkpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFrZXkudHlwZSgpLmlzRW1wdHkoKSk7
Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3Jkc1Bh
dGgoKSwga2V5LnBhcnRpdGlvbkhhc2hBc1N0cmluZygpKSwga2V5LnR5cGUoKSk7CisgICAgcmV0
dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3Jkc1BhdGgoKSwga2V5LnBhcnRpdGlvbkhhc2hBc1N0
cmluZygpKSwga2V5LnR5cGUoKSk7CiB9CiAKIFN0cmluZyBTdG9yYWdlOjpyZWNvcmRQYXRoRm9y
S2V5KGNvbnN0IEtleSYga2V5KSBjb25zdAogewotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3JkRGlyZWN0b3J5UGF0aEZvcktleShr
ZXkpLCBrZXkuaGFzaEFzU3RyaW5nKCkpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQocmVjb3JkRGlyZWN0b3J5UGF0aEZvcktleShrZXkpLCBrZXkuaGFz
aEFzU3RyaW5nKCkpOwogfQogCiBzdGF0aWMgU3RyaW5nIGJsb2JQYXRoRm9yUmVjb3JkUGF0aChj
b25zdCBTdHJpbmcmIHJlY29yZFBhdGgpCkBAIC02MjksNyArNjI5LDcgQEAgdm9pZCBTdG9yYWdl
OjpkZWxldGVGaWxlcyhjb25zdCBLZXkmIGtleSkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6Omlz
TWFpbigpKTsKIAotICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUocmVjb3JkUGF0
aEZvcktleShrZXkpKTsKKyAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKHJlY29yZFBhdGhGb3JL
ZXkoa2V5KSk7CiAgICAgbV9ibG9iU3RvcmFnZS5yZW1vdmUoYmxvYlBhdGhGb3JLZXkoa2V5KSk7
CiB9CiAKQEAgLTgwOSw3ICs4MDksNyBAQCB2b2lkIFN0b3JhZ2U6OmRpc3BhdGNoV3JpdGVPcGVy
YXRpb24oc3RkOjp1bmlxdWVfcHRyPFdyaXRlT3BlcmF0aW9uPiB3cml0ZU9wZXJhdAogICAgICAg
ICBhdXRvIHJlY29yZERpcmVjdG9yUGF0aCA9IHJlY29yZERpcmVjdG9yeVBhdGhGb3JLZXkod3Jp
dGVPcGVyYXRpb24ucmVjb3JkLmtleSk7CiAgICAgICAgIGF1dG8gcmVjb3JkUGF0aCA9IHJlY29y
ZFBhdGhGb3JLZXkod3JpdGVPcGVyYXRpb24ucmVjb3JkLmtleSk7CiAKLSAgICAgICAgV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKHJlY29yZERpcmVjdG9yUGF0aCk7Cisg
ICAgICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhyZWNvcmREaXJlY3RvclBhdGgp
OwogCiAgICAgICAgICsrd3JpdGVPcGVyYXRpb24uYWN0aXZlQ291bnQ7CiAKQEAgLTkxNyw3ICs5
MTcsNyBAQCB2b2lkIFN0b3JhZ2U6OnRyYXZlcnNlKGNvbnN0IFN0cmluZyYgdHlwZSwgT3B0aW9u
U2V0PFRyYXZlcnNlRmxhZz4gZmxhZ3MsIFRyYXZlcgogICAgICAgICAgICAgaWYgKGlzQmxvYikK
ICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIGF1dG8gcmVjb3JkUGF0aCA9
IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmREaXJl
Y3RvcnlQYXRoLCBmaWxlTmFtZSk7CisgICAgICAgICAgICBhdXRvIHJlY29yZFBhdGggPSBGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3JkRGlyZWN0b3J5UGF0aCwgZmls
ZU5hbWUpOwogCiAgICAgICAgICAgICBkb3VibGUgd29ydGggPSAtMTsKICAgICAgICAgICAgIGlm
ICh0cmF2ZXJzZU9wZXJhdGlvbi5mbGFncyAmIFRyYXZlcnNlRmxhZzo6Q29tcHV0ZVdvcnRoKQpA
QCAtMTAwOSwxMyArMTAwOSwxMyBAQCB2b2lkIFN0b3JhZ2U6OmNsZWFyKGNvbnN0IFN0cmluZyYg
dHlwZSwgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZVRpbWUsIENvbXBsZXRpb25IYQogICAgIGlvUXVl
dWUoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtb2Rp
ZmllZFNpbmNlVGltZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSwgdHlwZSA9IHR5cGUuaXNvbGF0ZWRDb3B5KCldICgpIG11dGFibGUgewogICAgICAgICBh
dXRvIHJlY29yZHNQYXRoID0gdGhpcy0+cmVjb3Jkc1BhdGgoKTsKICAgICAgICAgdHJhdmVyc2VS
ZWNvcmRzRmlsZXMocmVjb3Jkc1BhdGgsIHR5cGUsIFttb2RpZmllZFNpbmNlVGltZV0oY29uc3Qg
U3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBoYXNoU3RyaW5nLCBjb25zdCBTdHJpbmcm
IHR5cGUsIGJvb2wgaXNCbG9iLCBjb25zdCBTdHJpbmcmIHJlY29yZERpcmVjdG9yeVBhdGgpIHsK
LSAgICAgICAgICAgIGF1dG8gZmlsZVBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQocmVjb3JkRGlyZWN0b3J5UGF0aCwgZmlsZU5hbWUpOworICAgICAg
ICAgICAgYXV0byBmaWxlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChyZWNvcmREaXJlY3RvcnlQYXRoLCBmaWxlTmFtZSk7CiAgICAgICAgICAgICBpZiAobW9kaWZp
ZWRTaW5jZVRpbWUgPiAtV2FsbFRpbWU6OmluZmluaXR5KCkpIHsKICAgICAgICAgICAgICAgICBh
dXRvIHRpbWVzID0gZmlsZVRpbWVzKGZpbGVQYXRoKTsKICAgICAgICAgICAgICAgICBpZiAodGlt
ZXMubW9kaWZpY2F0aW9uIDwgbW9kaWZpZWRTaW5jZVRpbWUpCiAgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06
OmRlbGV0ZUZpbGUoZmlsZVBhdGgpOworICAgICAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmls
ZShmaWxlUGF0aCk7CiAgICAgICAgIH0pOwogCiAgICAgICAgIGRlbGV0ZUVtcHR5UmVjb3Jkc0Rp
cmVjdG9yaWVzKHJlY29yZHNQYXRoKTsKQEAgLTEwODksNyArMTA4OSw3IEBAIHZvaWQgU3RvcmFn
ZTo6c2hyaW5rKCkKICAgICAgICAgICAgIGlmIChpc0Jsb2IpCiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogCi0gICAgICAgICAgICBhdXRvIHJlY29yZFBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3JkRGlyZWN0b3J5UGF0aCwgZmlsZU5hbWUp
OworICAgICAgICAgICAgYXV0byByZWNvcmRQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KHJlY29yZERpcmVjdG9yeVBhdGgsIGZpbGVOYW1lKTsKICAgICAgICAgICAg
IGF1dG8gYmxvYlBhdGggPSBibG9iUGF0aEZvclJlY29yZFBhdGgocmVjb3JkUGF0aCk7CiAKICAg
ICAgICAgICAgIGF1dG8gdGltZXMgPSBmaWxlVGltZXMocmVjb3JkUGF0aCk7CkBAIC0xMTAxLDcg
KzExMDEsNyBAQCB2b2lkIFN0b3JhZ2U6OnNocmluaygpCiAgICAgICAgICAgICBMT0coTmV0d29y
a0NhY2hlU3RvcmFnZSwgIkRlbGV0aW9uIHByb2JhYmlsaXR5PSVmIGJvZHlMaW5rQ291bnQ9JWQg
c2hvdWxkRGVsZXRlPSVkIiwgcHJvYmFiaWxpdHksIGJvZHlTaGFyZUNvdW50LCBzaG91bGREZWxl
dGUpOwogCiAgICAgICAgICAgICBpZiAoc2hvdWxkRGVsZXRlKSB7Ci0gICAgICAgICAgICAgICAg
V2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShyZWNvcmRQYXRoKTsKKyAgICAgICAgICAg
ICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKHJlY29yZFBhdGgpOwogICAgICAgICAgICAgICAg
IG1fYmxvYlN0b3JhZ2UucmVtb3ZlKGJsb2JQYXRoKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fSk7CkBAIC0xMTM3LDcgKzExMzcsNyBAQCB2b2lkIFN0b3JhZ2U6OmRlbGV0ZU9sZFZlcnNpb25z
KCkKICAgICAgICAgICAgICAgICByZXR1cm47CiAjZW5kaWYKIAotICAgICAgICAgICAgYXV0byBv
bGRWZXJzaW9uUGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChjYWNoZVBhdGgsIHN1YmRpck5hbWUpOworICAgICAgICAgICAgYXV0byBvbGRWZXJzaW9u
UGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChjYWNoZVBhdGgsIHN1
YmRpck5hbWUpOwogICAgICAgICAgICAgTE9HKE5ldHdvcmtDYWNoZVN0b3JhZ2UsICIoTmV0d29y
a1Byb2Nlc3MpIGRlbGV0aW5nIG9sZCBjYWNoZSB2ZXJzaW9uLCBwYXRoICVzIiwgb2xkVmVyc2lv
blBhdGgudXRmOCgpLmRhdGEoKSk7CiAKICAgICAgICAgICAgIGRlbGV0ZURpcmVjdG9yeVJlY3Vy
c2l2ZWx5KG9sZFZlcnNpb25QYXRoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCmluZGV4IGY4YWMyMGFj
ZDFjMzNhNWJkYjg4NDBkYzExZGViZDg4YmFjMDE3YjguLjNkYjkwYTEyMGMxMjZlZjliNjAwZTM4
M2MwMzM0ZTQzN2JjNjVmM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQpAQCAtMzYsMTEgKzM2LDEx
IEBACiAjaW1wb3J0ICJOZXR3b3JrU2Vzc2lvbkNvY29hLmgiCiAjaW1wb3J0ICJXZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaCIKICNpbXBvcnQgPFdlYkNvcmUvQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uu
aD4KLSNpbXBvcnQgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8V2ViQ29yZS9OZXR3
b3JrU3RvcmFnZVNlc3Npb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW1wb3J0IDxwYWwvc3BpL2Nm
L0NGTmV0d29ya1NQSS5oPgorI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0
Zi9NYWluVGhyZWFkLmg+CiAjaW1wb3J0IDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgogI2ltcG9y
dCA8d3RmL3RleHQvQmFzZTY0Lmg+CkBAIC00MDAsOCArNDAwLDggQEAgdm9pZCBOZXR3b3JrRGF0
YVRhc2tDb2NvYTo6c2V0UGVuZGluZ0Rvd25sb2FkTG9jYXRpb24oY29uc3QgV1RGOjpTdHJpbmcm
IGZpbGVuYW0KIAogICAgIG1fdGFzay5nZXQoKS5fcGF0aFRvRG93bmxvYWRUYXNrRmlsZSA9IG1f
cGVuZGluZ0Rvd25sb2FkTG9jYXRpb247CiAKLSAgICBpZiAoYWxsb3dPdmVyd3JpdGUgJiYgV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhtX3BlbmRpbmdEb3dubG9hZExvY2F0aW9uKSkK
LSAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShmaWxlbmFtZSk7CisgICAg
aWYgKGFsbG93T3ZlcndyaXRlICYmIEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobV9wZW5kaW5nRG93
bmxvYWRMb2NhdGlvbikpCisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZmlsZW5hbWUp
OwogfQogCiBib29sIE5ldHdvcmtEYXRhVGFza0NvY29hOjp0cnlQYXNzd29yZEJhc2VkQXV0aGVu
dGljYXRpb24oY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5n
ZSwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImIGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lv
bkNvY29hLm1tCmluZGV4IDBlY2Q4ODZlYjQwZjA4MDJiMTEyY2I3Nzc5NjE1MmY1MTg5Mzc0NDIu
LjdlYWRmZGU2MGEwNGExMTg2NDE2NTk2ODdkODc5YzdiNGMzODZkZWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29j
b2EubW0KQEAgLTc3Nyw3ICs3NzcsNyBAQCAtICh2b2lkKVVSTFNlc3Npb246KE5TVVJMU2Vzc2lv
biAqKXNlc3Npb24gZGF0YVRhc2s6KE5TVVJMU2Vzc2lvbkRhdGFUYXNrICopZGF0YQogICAgICAg
ICBhdXRvJiBkb3dubG9hZE1hbmFnZXIgPSBfc2Vzc2lvbi0+bmV0d29ya1Byb2Nlc3MoKS5kb3du
bG9hZE1hbmFnZXIoKTsKICAgICAgICAgYXV0byBkb3dubG9hZCA9IHN0ZDo6bWFrZV91bmlxdWU8
V2ViS2l0OjpEb3dubG9hZD4oZG93bmxvYWRNYW5hZ2VyLCBkb3dubG9hZElELCBkb3dubG9hZFRh
c2ssIF9zZXNzaW9uLT5zZXNzaW9uSUQoKSwgbmV0d29ya0RhdGFUYXNrLT5zdWdnZXN0ZWRGaWxl
bmFtZSgpKTsKICAgICAgICAgbmV0d29ya0RhdGFUYXNrLT50cmFuc2ZlclNhbmRib3hFeHRlbnNp
b25Ub0Rvd25sb2FkKCpkb3dubG9hZCk7Ci0gICAgICAgIEFTU0VSVChXZWJDb3JlOjpGaWxlU3lz
dGVtOjpmaWxlRXhpc3RzKG5ldHdvcmtEYXRhVGFzay0+cGVuZGluZ0Rvd25sb2FkTG9jYXRpb24o
KSkpOworICAgICAgICBBU1NFUlQoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhuZXR3b3JrRGF0YVRh
c2stPnBlbmRpbmdEb3dubG9hZExvY2F0aW9uKCkpKTsKICAgICAgICAgZG93bmxvYWQtPmRpZENy
ZWF0ZURlc3RpbmF0aW9uKG5ldHdvcmtEYXRhVGFzay0+cGVuZGluZ0Rvd25sb2FkTG9jYXRpb24o
KSk7CiAgICAgICAgIGRvd25sb2FkTWFuYWdlci5kYXRhVGFza0JlY2FtZURvd25sb2FkVGFzayhk
b3dubG9hZElELCBXVEZNb3ZlKGRvd25sb2FkKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzTWFjLm1tIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nlc3NNYWMubW0KaW5kZXggMzdmM2I3Zjcy
YWE1MDJiMzJiYTgxMWVjOWJhMDhmNWUyNTU4NjNiMi4uZjViZjA0YWU0NjVmNjJiNzRkMmIxOGE4
MTc1OTAxYTE2ZWE1NTVkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9tYWMvTmV0d29ya1Byb2Nlc3NNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9tYWMvTmV0d29ya1Byb2Nlc3NNYWMubW0KQEAgLTM4LDEyICszOCwxMiBAQAogI2ltcG9y
dCAiU3RyaW5nVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJXS0ZvdW5kYXRpb24uaCIKICNpbXBvcnQg
PFdlYkNvcmUvQ2VydGlmaWNhdGVJbmZvLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0ZW0u
aD4KICNpbXBvcnQgPFdlYkNvcmUvTG9jYWxpemVkU3RyaW5ncy5oPgogI2ltcG9ydCA8bm90aWZ5
Lmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oPgogI2ltcG9ydCA8cGFsL3Nw
aS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5oPgogI2ltcG9ydCA8c3lzZXhpdHMuaD4KKyNpbXBv
cnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDx3dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVy
Lmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcAppbmRl
eCA4ODJiMTQ1ZjdmY2IxMzQzMDQyOGEyY2JlNzNhNTUzMTk2YThhNDg0Li4xZDA5ZjgyYjMwNzIz
NTJkYzNiNzIzMTM5ZWE5ODFhYTQxNjMyYTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcApAQCAtMzIsMTIg
KzMyLDEyIEBACiAjaW5jbHVkZSAiUmVzb3VyY2VDYWNoZXNUb0NsZWFyLmgiCiAjaW5jbHVkZSAi
V2ViQ29va2llTWFuYWdlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ2VydGlmaWNhdGVJbmZvLmg+
Ci0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3
b3JrU3RvcmFnZVNlc3Npb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U291cE5ldHdvcmtTZXNzaW9uLmg+CiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+CisjaW5jbHVk
ZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvUkFNU2l6ZS5oPgogI2luY2x1ZGUg
PHd0Zi9nbGliL0dSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CkBA
IC0xMDksNyArMTA5LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXpl
TmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGkKICAgICBBU1NFUlQoIXBh
cmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSk7CiAgICAgbV9kaXNrQ2FjaGVE
aXJlY3RvcnkgPSBwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeTsKIAotICAgIFNvdXBOZXR3
b3JrU2Vzc2lvbjo6Y2xlYXJPbGRTb3VwQ2FjaGUoV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGlyZWN0
b3J5TmFtZShtX2Rpc2tDYWNoZURpcmVjdG9yeSkpOworICAgIFNvdXBOZXR3b3JrU2Vzc2lvbjo6
Y2xlYXJPbGRTb3VwQ2FjaGUoRmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShtX2Rpc2tDYWNoZURp
cmVjdG9yeSkpOwogCiAgICAgT3B0aW9uU2V0PE5ldHdvcmtDYWNoZTo6Q2FjaGU6Ok9wdGlvbj4g
Y2FjaGVPcHRpb25zIHsgTmV0d29ya0NhY2hlOjpDYWNoZTo6T3B0aW9uOjpSZWdpc3Rlck5vdGlm
eSB9OwogICAgIGlmIChwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZU5ldHdvcmtDYWNoZUVmZmljYWN5
TG9nZ2luZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy91bml4L1Bs
dWdpblByb2Nlc3NNYWluVW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvdW5p
eC9QbHVnaW5Qcm9jZXNzTWFpblVuaXguY3BwCmluZGV4IDJiZDJlZDU5YWU2YTJlMjRiMDc0OGIw
M2NlYmMzNTYzYzY2NzE4M2UuLjNhZGU0Yzk0M2YwOWI1MWQzY2MzYmVjMmNhOTYzM2Y3M2QxMzQ5
NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy91bml4L1BsdWdpblBy
b2Nlc3NNYWluVW5peC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL3VuaXgv
UGx1Z2luUHJvY2Vzc01haW5Vbml4LmNwcApAQCAtMzQsOCArMzQsOCBAQAogI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKICNpbmNsdWRlICJOZXRzY2FwZVBsdWdpbi5oIgogI2luY2x1ZGUgIlBsdWdpblBy
b2Nlc3MuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxzdGRs
aWIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiAjaWYgUExBVEZPUk0oR1RLKQog
I2luY2x1ZGUgPGd0ay9ndGsuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Bl
cnNpc3RlbmN5VXRpbHMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGVyc2lzdGVuY3lVdGls
cy5jcHAKaW5kZXggNWRiYTk2OGJkN2UwYjM4YzNkMjI2OTRkNmQ1ZDJlNmIwNjlkMmE4MS4uZWNh
OTY0MWQyMDUzNDVjODE4OTZlYjU2NWRmNjI3Zjk1ZTNjNTE3YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvUGVyc2lzdGVuY3lVdGlscy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvUGVyc2lzdGVuY3lVdGlscy5jcHAKQEAgLTI3LDggKzI3LDggQEAKICNpbmNsdWRlICJQ
ZXJzaXN0ZW5jeVV0aWxzLmgiCiAKICNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSA8V2Vi
Q29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KKyNp
bmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lu
cy9OZXRzY2FwZS91bml4L05ldHNjYXBlUGx1Z2luTW9kdWxlVW5peC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL3VuaXgvTmV0c2NhcGVQbHVnaW5Nb2R1bGVVbml4
LmNwcAppbmRleCBmYjFkOWRjOTI2ZmQ2NzY3OTNmNDU0YTc0ZmE1NTFhZWU1NzBjOGU1Li5lZWM0
NzYxMTVjODQwM2YxMzNiMzkzNjA1OTJiOGYwYTEwM2MzNDQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL3VuaXgvTmV0c2NhcGVQbHVnaW5Nb2R1bGVV
bml4LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL3VuaXgv
TmV0c2NhcGVQbHVnaW5Nb2R1bGVVbml4LmNwcApAQCAtMzAsMTIgKzMwLDEyIEBACiAKICNpbmNs
dWRlICJOZXRzY2FwZUJyb3dzZXJGdW5jcy5oIgogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NQcm94
eS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPGVycm5vLmg+
CiAjaW5jbHVkZSA8ZmNudGwuaD4KICNpbmNsdWRlIDxzeXMvc3RhdC5oPgogI2luY2x1ZGUgPHN5
cy90eXBlcy5oPgogI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVt
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvdW5peC9QbHVn
aW5TZWFyY2hQYXRoLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvdW5peC9QbHVn
aW5TZWFyY2hQYXRoLmNwcAppbmRleCBlOGFmOTYwNGNlNTU5NWE0NDRmZThjYTUwNDVkM2E2MTdh
YjIzNjRhLi4yYmQ1NDlhOTVkZmE2NzVjZTQ3ZjU2ZDc4YTU5YjRmNzMxNWExMWFiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL3VuaXgvUGx1Z2luU2VhcmNoUGF0aC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy91bml4L1BsdWdpblNlYXJjaFBh
dGguY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
UGx1Z2luU2VhcmNoUGF0aC5oIgogCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+Cisj
aW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYk1l
bW9yeVNhbXBsZXIuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYk1lbW9yeVNhbXBsZXIuaApp
bmRleCA4MDgxM2ZlYTA1MGYyMDQ5MWJkMWM4YjUwZTkwYjFjYmJiY2FhMzQ0Li43MjFjZGJmMzg5
MjI2NGJjOWZkNzkyYjUwODM4MzBmZjUxOWZjOWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJNZW1vcnlTYW1wbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
TWVtb3J5U2FtcGxlci5oCkBAIC01Miw4ICs1Miw4IEBACiAjaWYgRU5BQkxFKE1FTU9SWV9TQU1Q
TEVSKQogCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgotI2luY2x1ZGUgPFdlYkNvcmUv
RmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KKyNpbmNsdWRlIDx3dGYv
RmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC04Nyw3ICs4Nyw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBpbml0aWFsaXplVGltZXJzKGRvdWJsZSk7CiAgICAgdm9pZCBzYW1w
bGVUaW1lckZpcmVkKCk7CiAgICAgdm9pZCBzdG9wVGltZXJGaXJlZCgpOwotICAgIHZvaWQgYXBw
ZW5kQ3VycmVudE1lbW9yeVVzYWdlVG9GaWxlKFdlYkNvcmU6OkZpbGVTeXN0ZW06OlBsYXRmb3Jt
RmlsZUhhbmRsZSYpOworICAgIHZvaWQgYXBwZW5kQ3VycmVudE1lbW9yeVVzYWdlVG9GaWxlKEZp
bGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSYpOwogICAgIHZvaWQgc2VuZE1lbW9yeVByZXNz
dXJlRXZlbnQoKTsKICAgICAKICAgICBTeXN0ZW1NYWxsb2NTdGF0cyBzYW1wbGVTeXN0ZW1NYWxs
b2MoKSBjb25zdDsKQEAgLTk1LDcgKzk1LDcgQEAgcHJpdmF0ZToKICAgICBXZWJNZW1vcnlTdGF0
aXN0aWNzIHNhbXBsZVdlYktpdCgpIGNvbnN0OwogICAgIFN0cmluZyBwcm9jZXNzTmFtZSgpIGNv
bnN0OwogICAgIAotICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBt
X3NhbXBsZUxvZ0ZpbGUgeyBXZWJDb3JlOjpGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxl
SGFuZGxlIH07CisgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIG1fc2FtcGxlTG9n
RmlsZSB7IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUgfTsKICAgICBTdHJp
bmcgbV9zYW1wbGVMb2dGaWxlUGF0aDsKICAgICBXZWJDb3JlOjpUaW1lciBtX3NhbXBsZVRpbWVy
OwogICAgIFdlYkNvcmU6OlRpbWVyIG1fc3RvcFRpbWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvZ2xpYi9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhHTGliLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL2dsaWIvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoR0xpYi5jcHAKaW5kZXggYTcw
YjQxYTA5YTkzMGJiZGMzYjU0MWNlNmE3MDhhZDg5YmJjMmY0Yi4uOGQ5OWZjYTI1NjI1ZGQ4MmJk
Y2ZjYzBlNjc0MTQ2ZTE5NmJlNTM0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
Z2xpYi9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhHTGliLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9nbGliL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aEdMaWIuY3BwCkBAIC0yNyw4ICsyNyw4IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUHJvY2Vzc0V4ZWN1dGFibGVQYXRoLmgi
CiAKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxnbGliLmg+Cisj
aW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HTGliVXRpbGl0
aWVzLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvaW9zL0NoaWxkUHJvY2Vzc0lPUy5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9D
aGlsZFByb2Nlc3NJT1MubW0KaW5kZXggODFkNTRmM2JmMDA5ZWZhZjA1ZDQwMmQ2ZjVjZmVhOGQx
MGY0YjU2Ny4uNjlkNTNjZmYzMTRhOTVjYmM0YTgwN2FiOThjOWVjYTgyZmUyYmUyMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL0NoaWxkUHJvY2Vzc0lPUy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvQ2hpbGRQcm9jZXNzSU9TLm1tCkBAIC0zMSw3ICszMSw2
IEBACiAKICNpbXBvcnQgIlNhbmRib3hJbml0aWFsaXphdGlvblBhcmFtZXRlcnMuaCIKICNpbXBv
cnQgIlhQQ1NlcnZpY2VFbnRyeVBvaW50LmgiCi0jaW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0ZW0u
aD4KICNpbXBvcnQgPFdlYkNvcmUvRmxvYXRpbmdQb2ludEVudmlyb25tZW50Lmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1N5c3RlbVZlcnNpb24uaD4KICNpbXBvcnQgPG1hY2gvbWFjaC5oPgpAQCAtMzks
NiArMzgsNyBAQAogI2ltcG9ydCA8cHdkLmg+CiAjaW1wb3J0IDxzdGRsaWIuaD4KICNpbXBvcnQg
PHN5c2V4aXRzLmg+CisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogCiAjaWYgRU5BQkxFKE1B
TlVBTF9TQU5EQk9YSU5HKQogI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0NoaWxkUHJvY2Vzc01hYy5tbSBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9DaGlsZFByb2Nlc3NNYWMubW0KaW5kZXggMjBjNGE5
YzFhNDI3NzZlNjY3MTEwYjYxNjBhODgyNTkzMzg4ZjVhMS4uMmVjNWZmNjBiMmY1YTJhMDI5ZDdh
MmU0NTc0YTMxNDcwMzkwNDgyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFj
L0NoaWxkUHJvY2Vzc01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQ2hpbGRQ
cm9jZXNzTWFjLm1tCkBAIC0zNSw3ICszNSw2IEBACiAjaW1wb3J0ICJXS0ZvdW5kYXRpb24uaCIK
ICNpbXBvcnQgIlhQQ1NlcnZpY2VFbnRyeVBvaW50LmgiCiAjaW1wb3J0IDxXZWJDb3JlL0ZpbGVI
YW5kbGUuaD4KLSNpbXBvcnQgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9TeXN0ZW1WZXJzaW9uLmg+CiAjaW1wb3J0IDxtYWNoLW8vZHlsZC5oPgogI2ltcG9ydCA8bWFj
aC9tYWNoLmg+CkBAIC00Niw2ICs0NSw3IEBACiAjaW1wb3J0IDxzeXMvc3lzY3RsLmg+CiAjaW1w
b3J0IDxzeXNleGl0cy5oPgogI2ltcG9ydCA8d3RmL0RhdGFMb2cuaD4KKyNpbXBvcnQgPHd0Zi9G
aWxlU3lzdGVtLmg+CiAjaW1wb3J0IDx3dGYvUmFuZG9tTnVtYmVyLmg+CiAjaW1wb3J0IDx3dGYv
U2NvcGUuaD4KICNpbXBvcnQgPHd0Zi9TeXN0ZW1UcmFjaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9tYWMvU2FuZGJveEV4dGVuc2lvbk1hYy5tbSBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL21hYy9TYW5kYm94RXh0ZW5zaW9uTWFjLm1tCmluZGV4IDBjZWM5ODVjNzg1Yzc3
MzY1OTc3MmQyNGYxYjZkNTc2ZDcxZDc1ZTEuLmFlOGM3ZWIwMjIxNDc3OGEwNWI3MTY5YjM5NDdm
ZWJmMWY5OTUyYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9TYW5kYm94
RXh0ZW5zaW9uTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9TYW5kYm94RXh0
ZW5zaW9uTWFjLm1tCkBAIC0zMSw4ICszMSw4IEBACiAjaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgi
CiAjaW1wb3J0ICJEZWNvZGVyLmgiCiAjaW1wb3J0ICJFbmNvZGVyLmgiCi0jaW1wb3J0IDxXZWJD
b3JlL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHN5cy9zdGF0Lmg+CisjaW1wb3J0IDx3dGYvRmls
ZVN5c3RlbS5oPgogI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oPgogI2ltcG9y
dCA8d3RmL3RleHQvQ1N0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAppbmRleCAzOGY0MmNiOTFhNTM4
ZWRlNjhlMjI1OTQxMDUwZjk2YWY2N2I5Njk4Li4wNWFlNDE2MDBmMDZiYmIxNTBjOThjNGIwMmYx
NjlkMTE3OGI2OTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
Q29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAKIAogbmFtZXNw
YWNlIEFQSSB7CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OjpOZXR3b3JrQ2FjaGU7Ci11c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTo6RmlsZVN5c3RlbTsKK3VzaW5nIG5hbWVzcGFjZSBXVEY6OkZpbGVT
eXN0ZW07CiAKIENvbnRlbnRSdWxlTGlzdFN0b3JlJiBDb250ZW50UnVsZUxpc3RTdG9yZTo6bGVn
YWN5RGVmYXVsdFN0b3JlKCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9BUElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvQVBJV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCmluZGV4IDRhMmVj
Mzg3MjM3ZmZkYzhjYTg5NDcxODZmZmVkMGQ1Y2E0ZWE3NTQuLjM4ODRmNDNjMWUyMGExMjk4YmE4
ODU3ZWIxYjA5MTU1YTk4YjAwNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9BUElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQpAQCAtMjgs
OSArMjgsOCBAQAogCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIlNh
bmRib3hVdGlsaXRpZXMuaCIKLQogI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgot
I2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVt
Lmg+CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCA8V2ViQ29yZS9SdW50aW1l
QXBwbGljYXRpb25DaGVja3MuaD4KQEAgLTE2OSw3ICsxNjgsNyBAQCBXVEY6OlN0cmluZyBXZWJz
aXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKQog
ICAgIC8vIEN1cnJlbnRseSwgdGhlIHRvcCBsZXZlbCBvZiB0aGF0IGRpcmVjdG9yeSBjb250YWlu
cyBlbnRpdGllcyByZWxhdGVkIHRvIFdlYlNRTCBkYXRhYmFzZXMuCiAgICAgLy8gV2Ugc2hvdWxk
IGZpeCB0aGlzLCBhbmQgbW92ZSBXZWJTUUwgaW50byBhIHN1YmRpcmVjdG9yeSAoaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDgwNykKICAgICAvLyBJbiB0aGUgbWVh
bnRpbWUsIGFuIGVudGl0eSBuYW1lIHByZWZpeGVkIHdpdGggdGhyZWUgdW5kZXJzY29yZXMgd2ls
bCBub3QgY29uZmxpY3Qgd2l0aCBhbnkgV2ViU1FMIGVudGl0aWVzLgotICAgIHJldHVybiBXZWJD
b3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobGVnYWN5RGVmYXVsdFdl
YlNRTERhdGFiYXNlRGlyZWN0b3J5KCksICJfX19JbmRleGVkREIiKTsKKyAgICByZXR1cm4gRmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGxlZ2FjeURlZmF1bHRXZWJTUUxEYXRh
YmFzZURpcmVjdG9yeSgpLCAiX19fSW5kZXhlZERCIik7CiB9CiAKIFdURjo6U3RyaW5nIFdlYnNp
dGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvQVBJV2Vic2l0ZURhdGFTdG9y
ZUdMaWIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvQVBJV2Vic2l0ZURh
dGFTdG9yZUdMaWIuY3BwCmluZGV4IGUxYzQ1MjliM2QyMWVlNThiZmVmYjVjMThmZWZiNTExMjJj
MDE2MGYuLmY1YWI5MzFjYmVkM2I3NzFiZjNjZWM4MTJjYjc0MmU0OWJiNjg1MzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVH
TGliLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRl
RGF0YVN0b3JlR0xpYi5jcHAKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCiAKLSNpbmNsdWRlIDxXZWJDb3JlL0Zp
bGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9n
bGliL0dVbmlxdWVQdHIuaD4KIAogI2lmIFBMQVRGT1JNKEdUSykKQEAgLTQ2LDEyICs0NiwxMiBA
QCBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRpb25DYWNoZURp
cmVjdG9yeSgpCiAvLyBXaHkgaXMgb25seSB0aGlzIGRpcmVjdG9yeSBuYW1lc3BhY2VkIHRvIGEg
cGFydGljdWxhciBhcHBsaWNhdGlvbj8KIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKQogewotICAgIHJldHVybiBjYWNoZURpcmVjdG9y
eUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihnX2dldF9wcmduYW1lKCkpLCAiV2ViS2l0Q2FjaGUiKSk7CisgICAgcmV0
dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKGdfZ2V0X3ByZ25hbWUoKSksICJXZWJLaXRDYWNoZSIpKTsKIH0KIAogV1RG
OjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSgp
CiB7Ci0gICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKFdl
YkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxl
U3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGdfZ2V0X3ByZ25hbWUo
KSksICJDYWNoZVN0b3JhZ2UiKSk7CisgICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxl
U3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGdfZ2V0X3ByZ25hbWUo
KSksICJDYWNoZVN0b3JhZ2UiKSk7CiB9CiAKIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpCkBAIC05MSwxOSArOTEsMTkgQEAg
V1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEaXJlY3RvcnkoKQogCiBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVj
dG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5
TmFtZSkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZ19nZXRfdXNlcl9jYWNoZV9kaXIoKSksIGRpcmVjdG9yeU5hbWUpOworICAgIHJl
dHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6c3Ry
aW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihnX2dldF91c2VyX2NhY2hlX2RpcigpKSwg
ZGlyZWN0b3J5TmFtZSk7CiB9CiAKIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OndlYnNp
dGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFdURjo6U3RyaW5n
JiBkaXJlY3RvcnlOYW1lKQogewotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihnX2dldF91c2VyX2RhdGFfZGlyKCkpLCBkaXJlY3RvcnlOYW1l
KTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVT
eXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfdXNlcl9kYXRh
X2RpcigpKSwgZGlyZWN0b3J5TmFtZSk7CiB9CiAKIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3Rv
cmU6OmxlZ2FjeURlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkKIHsKICNpZiBQTEFU
Rk9STShXUEUpCiAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gY2FjaGVEaXJlY3RvcnkoZ19idWlsZF9m
aWxlbmFtZShnX2dldF91c2VyX2NhY2hlX2RpcigpLCAid3BlIiwgImFwcGNhY2hlIiwgbnVsbHB0
cikpOwotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKGNhY2hlRGlyZWN0b3J5LmdldCgpKTsKKyAgICByZXR1cm4gRmlsZVN5
c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjYWNoZURpcmVjdG9yeS5n
ZXQoKSk7CiAjZW5kaWYKICAgICByZXR1cm4gZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rv
cnkoKTsKIH0KQEAgLTExMiw3ICsxMTIsNyBAQCBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3Jl
OjpsZWdhY3lEZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkKIHsKICNpZiBQTEFURk9STShX
UEUpCiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBkaXNrQ2FjaGVEaXJlY3RvcnkoZ19idWlsZF9maWxl
bmFtZShnX2dldF91c2VyX2NhY2hlX2RpcigpLCAid3BlIiwgImNhY2hlIiwgbnVsbHB0cikpOwot
ICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGRpc2tDYWNoZURpcmVjdG9yeS5nZXQoKSk7CisgICAgcmV0dXJuIEZpbGVTeXN0
ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGlza0NhY2hlRGlyZWN0b3J5
LmdldCgpKTsKICNlbmRpZgogICAgIHJldHVybiBkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5
KCk7CiB9CkBAIC0xMjEsNyArMTIxLDcgQEAgV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6
bGVnYWN5RGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkKIHsKICNpZiBQTEFURk9STShX
UEUpCiAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZGF0YWJhc2VEaXJlY3RvcnkoZ19idWlsZF9maWxl
bmFtZShnX2dldF91c2VyX2RhdGFfZGlyKCksICJ3cGUiLCAiZGF0YWJhc2VzIiwgbnVsbHB0cikp
OwotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKGRhdGFiYXNlRGlyZWN0b3J5LmdldCgpKTsKKyAgICByZXR1cm4gRmlsZVN5
c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihkYXRhYmFzZURpcmVjdG9y
eS5nZXQoKSk7CiAjZW5kaWYKICAgICByZXR1cm4gZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0
b3J5KCk7CiB9CkBAIC0xMzAsNyArMTMwLDcgQEAgV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9y
ZTo6bGVnYWN5RGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkKIHsKICNpZiBQTEFU
Rk9STShXUEUpCiAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gaW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rv
cnkoZ19idWlsZF9maWxlbmFtZShnX2dldF91c2VyX2RhdGFfZGlyKCksICJ3cGUiLCAiZGF0YWJh
c2VzIiwgImluZGV4ZWRkYiIsIG51bGxwdHIpKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5
c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihpbmRleGVkREJEYXRhYmFz
ZURpcmVjdG9yeS5nZXQoKSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkuZ2V0KCkpOwog
I2VuZGlmCiAgICAgcmV0dXJuIGRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpOwog
fQpAQCAtMTM5LDcgKzEzOSw3IEBAIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2Fj
eURlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKQogewogI2lmIFBMQVRGT1JNKFdQRSkKICAg
ICBHVW5pcXVlUHRyPGdjaGFyPiBzdG9yYWdlRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19n
ZXRfdXNlcl9kYXRhX2RpcigpLCAid3BlIiwgImxvY2Fsc3RvcmFnZSIsIG51bGxwdHIpKTsKLSAg
ICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihzdG9yYWdlRGlyZWN0b3J5LmdldCgpKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6
c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihzdG9yYWdlRGlyZWN0b3J5LmdldCgp
KTsKICNlbmRpZgogICAgIHJldHVybiBkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7CiB9
CkBAIC0xNDgsNyArMTQ4LDcgQEAgV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5
RGVmYXVsdE1lZGlhQ2FjaGVEaXJlY3RvcnkoKQogewogI2lmIFBMQVRGT1JNKFdQRSkKICAgICBH
VW5pcXVlUHRyPGdjaGFyPiBjYWNoZURpcmVjdG9yeShnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3Vz
ZXJfY2FjaGVfZGlyKCksICJ3cGUiLCAibWVkaWFjYWNoZSIsIG51bGxwdHIpKTsKLSAgICByZXR1
cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihjYWNoZURpcmVjdG9yeS5nZXQoKSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnN0cmluZ0Zy
b21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY2FjaGVEaXJlY3RvcnkuZ2V0KCkpOwogI2VuZGlm
CiAgICAgcmV0dXJuIGRlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KCk7CiB9CkBAIC0xNTcsNyAr
MTU3LDcgQEAgV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdE1lZGlh
S2V5c1N0b3JhZ2VEaXJlY3RvcnkoKQogewogI2lmIFBMQVRGT1JNKFdQRSkKICAgICBHVW5pcXVl
UHRyPGdjaGFyPiBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19n
ZXRfdXNlcl9kYXRhX2RpcigpLCAid3BlIiwgIm1lZGlha2V5cyIsIG51bGxwdHIpKTsKLSAgICBy
ZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5LmdldCgpKTsKKyAgICByZXR1cm4gRmlsZVN5
c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihtZWRpYUtleXNTdG9yYWdl
RGlyZWN0b3J5LmdldCgpKTsKICNlbmRpZgogICAgIHJldHVybiBkZWZhdWx0TWVkaWFLZXlzU3Rv
cmFnZURpcmVjdG9yeSgpOwogfQpAQCAtMTY2LDcgKzE2Niw3IEBAIFN0cmluZyBXZWJzaXRlRGF0
YVN0b3JlOjpsZWdhY3lEZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCkK
IHsKICNpZiBQTEFURk9STShXUEUpCiAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZGV2aWNlSWRIYXNo
U2FsdHNTdG9yYWdlRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9kYXRhX2Rp
cigpLCAid3BlIiwgImRldmljZWlkaGFzaHNhbHRzIiwgbnVsbHB0cikpOwotICAgIHJldHVybiBX
ZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRl
dmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeS5nZXQoKSk7CisgICAgcmV0dXJuIEZpbGVT
eXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGV2aWNlSWRIYXNoU2Fs
dHNTdG9yYWdlRGlyZWN0b3J5LmdldCgpKTsKICNlbmRpZgogICAgIHJldHVybiBkZWZhdWx0RGV2
aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCk7CiB9CkBAIC0xNzQsNyArMTc0LDcgQEAg
U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0
b3JhZ2VEaXJlY3RvcnkoKQogV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVm
YXVsdEphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KCkKIHsKICAgICBHVW5pcXVlUHRy
PGdjaGFyPiBqYXZhU2NyaXB0Q29yZUNvbmZpZ0RpcmVjdG9yeShnX2J1aWxkX2ZpbGVuYW1lKGdf
Z2V0X3VzZXJfZGF0YV9kaXIoKSwgQkFTRV9ESVJFQ1RPUlksICJKYXZhU2NyaXB0Q29yZURlYnVn
IiwgbnVsbHB0cikpOwotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9t
RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGphdmFTY3JpcHRDb3JlQ29uZmlnRGlyZWN0b3J5Lmdl
dCgpKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihqYXZhU2NyaXB0Q29yZUNvbmZpZ0RpcmVjdG9yeS5nZXQoKSk7CiB9CiAKIFJlZjxX
ZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiBXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcAppbmRleCA2NzRhNWRiMDQzYzhhNjBmMzYy
MGFhN2JhMDE4YzFmOTg1ZWRmOGE5Li5iMDQ2NmU5MTQwOTBiYzA1NTk2NmU2YjlkZjMxOWVhMzA0
ZGIyMzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29u
RGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25E
YXRhYmFzZS5jcHAKQEAgLTI5LDExICsyOSwxMSBAQAogCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvQml0bWFwSW1hZ2UuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVT
eXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
UUxpdGVTdGF0ZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZVRyYW5zYWN0aW9uLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5
c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZhdmljb25EYXRhYmFz
ZS5jcHAKaW5kZXggOWJlNzI1M2Y4NWU5MWRhMTFiOTVlZDI4MDllYjQ0YjVhMzcxNWE1YS4uZTAx
NjQ4NjgxNzFhNWQ4YmVlOGEzZTE4NmFjNjgyNWM0OTFkOTcwMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGYXZpY29uRGF0YWJhc2Uu
Y3BwCkBAIC0yMywxMiArMjMsMTIgQEAKICNpbmNsdWRlICJJY29uRGF0YWJhc2UuaCIKICNpbmNs
dWRlICJXZWJLaXRGYXZpY29uRGF0YWJhc2VQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVy
ZW5jZXMuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0ltYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRTaXplLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9SZWZQdHJDYWlyby5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAj
aW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgog
I2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3RmL1NldEZvclNjb3BlLmg+CiAj
aW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgpAQCAtMjczLDcgKzI3Myw3IEBAIHZvaWQgd2Vi
a2l0RmF2aWNvbkRhdGFiYXNlT3BlbihXZWJLaXRGYXZpY29uRGF0YWJhc2UqIGRhdGFiYXNlLCBj
b25zdCBTdHJpbmcmIHBhCiAgICAgcHJpdi0+aWNvbkRhdGFiYXNlLT5zZXRFbmFibGVkKHRydWUp
OwogICAgIHByaXYtPmljb25EYXRhYmFzZS0+c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChXZWJQ
cmVmZXJlbmNlczo6YW55UGFnZXNBcmVVc2luZ1ByaXZhdGVCcm93c2luZygpKTsKIAotICAgIGlm
ICghcHJpdi0+aWNvbkRhdGFiYXNlLT5vcGVuKFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRpcmVjdG9y
eU5hbWUocGF0aCksIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShwYXRoKSkp
IHsKKyAgICBpZiAoIXByaXYtPmljb25EYXRhYmFzZS0+b3BlbihGaWxlU3lzdGVtOjpkaXJlY3Rv
cnlOYW1lKHBhdGgpLCBGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUocGF0aCkpKSB7CiAgICAg
ICAgIHByaXYtPmljb25EYXRhYmFzZSA9IG51bGxwdHI7CiAgICAgICAgIEljb25EYXRhYmFzZTo6
YWxsb3dEYXRhYmFzZUNsZWFudXAoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3QuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0LmNwcApp
bmRleCAzN2U2Y2NhMGNlYmNlOTE0NzMwZTNjNmQ0MjVjNWZlZjc3ZmI0ODVmLi4wOTk4MGFhZTA2
OTllYmNlOWQzM2U5YzVhNjk3YTAyZGUwNDcwM2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZpbGVDaG9vc2VyUmVxdWVzdC5j
cHAKQEAgLTI1LDkgKzI1LDkgQEAKICNpbmNsdWRlICJBUElTdHJpbmcuaCIKICNpbmNsdWRlICJX
ZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3RQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViT3BlblBhbmVs
UmVzdWx0TGlzdGVuZXJQcm94eS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvVGV4dEVuY29kaW5nLmg+CiAjaW5jbHVkZSA8Z2xpYi9naTE4bi1s
aWIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
ICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1
ZVB0ci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0V2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRXZWJDb250ZXh0LmNwcAppbmRleCAwZjM5ZTEyNWYzZGE2YzQ4Mzk2YTQwYzljZGZlOGY0YzQx
ZDk2OWFlLi42NmQ4M2E3MTg4ZTZjZGE3MGVmMmI0OWYyNjM5OTdhYzRlZjY5NTBhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0
LmNwcApAQCAtMzMzLDIwICszMzMsMjAgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViQ29udGV4dENv
bnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKICAgICBHVW5pcXVlUHRyPGNoYXI+IGJ1bmRsZUZp
bGVuYW1lKGdfYnVpbGRfZmlsZW5hbWUoaW5qZWN0ZWRCdW5kbGVEaXJlY3RvcnkoKSwgSU5KRUNU
RURfQlVORExFX0ZJTEVOQU1FLCBudWxscHRyKSk7CiAKICAgICBBUEk6OlByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbiBjb25maWd1cmF0aW9uOwotICAgIGNvbmZpZ3VyYXRpb24uc2V0SW5qZWN0ZWRC
dW5kbGVQYXRoKFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oYnVuZGxlRmlsZW5hbWUuZ2V0KCkpKTsKKyAgICBjb25maWd1cmF0aW9uLnNldElu
amVjdGVkQnVuZGxlUGF0aChGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKGJ1bmRsZUZpbGVuYW1lLmdldCgpKSk7CiAgICAgY29uZmlndXJhdGlvbi5zZXRNYXhp
bXVtUHJvY2Vzc0NvdW50KDEpOwogICAgIGNvbmZpZ3VyYXRpb24uc2V0RGlza0NhY2hlU3BlY3Vs
YXRpdmVWYWxpZGF0aW9uRW5hYmxlZCh0cnVlKTsKIAogICAgIFdlYktpdFdlYkNvbnRleHQqIHdl
YkNvbnRleHQgPSBXRUJLSVRfV0VCX0NPTlRFWFQob2JqZWN0KTsKICAgICBXZWJLaXRXZWJDb250
ZXh0UHJpdmF0ZSogcHJpdiA9IHdlYkNvbnRleHQtPnByaXY7CiAgICAgaWYgKHByaXYtPndlYnNp
dGVEYXRhTWFuYWdlciAmJiAhd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2lzX2VwaGVtZXJh
bChwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSB7Ci0gICAgICAgIGNvbmZpZ3VyYXRp
b24uc2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zy
b21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dl
dF9sb2NhbF9zdG9yYWdlX2RpcmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkp
KSk7Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0RGlza0NhY2hlRGlyZWN0b3J5KFdlYkNvcmU6
OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVt
OjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHdlYmtpdF93ZWJzaXRlX2RhdGFf
bWFuYWdlcl9nZXRfZGlza19jYWNoZV9kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2Vy
LmdldCgpKSksIG5ldHdvcmtDYWNoZVN1YmRpcmVjdG9yeSkpOwotICAgICAgICBjb25maWd1cmF0
aW9uLnNldEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3Ry
aW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFn
ZXJfZ2V0X29mZmxpbmVfYXBwbGljYXRpb25fY2FjaGVfZGlyZWN0b3J5KHByaXYtPndlYnNpdGVE
YXRhTWFuYWdlci5nZXQoKSkpKTsKLSAgICAgICAgY29uZmlndXJhdGlvbi5zZXRJbmRleGVkREJE
YXRhYmFzZURpcmVjdG9yeShXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfaW5kZXhlZGRi
X2RpcmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSk7Ci0gICAgICAgIGNv
bmZpZ3VyYXRpb24uc2V0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vic2l0ZV9kYXRh
X21hbmFnZXJfZ2V0X3dlYnNxbF9kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdl
dCgpKSkpOworICAgICAgICBjb25maWd1cmF0aW9uLnNldExvY2FsU3RvcmFnZURpcmVjdG9yeShG
aWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHdlYmtpdF93ZWJz
aXRlX2RhdGFfbWFuYWdlcl9nZXRfbG9jYWxfc3RvcmFnZV9kaXJlY3RvcnkocHJpdi0+d2Vic2l0
ZURhdGFNYW5hZ2VyLmdldCgpKSkpOworICAgICAgICBjb25maWd1cmF0aW9uLnNldERpc2tDYWNo
ZURpcmVjdG9yeShGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3Rl
bTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vic2l0ZV9kYXRh
X21hbmFnZXJfZ2V0X2Rpc2tfY2FjaGVfZGlyZWN0b3J5KHByaXYtPndlYnNpdGVEYXRhTWFuYWdl
ci5nZXQoKSkpLCBuZXR3b3JrQ2FjaGVTdWJkaXJlY3RvcnkpKTsKKyAgICAgICAgY29uZmlndXJh
dGlvbi5zZXRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21G
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9v
ZmZsaW5lX2FwcGxpY2F0aW9uX2NhY2hlX2RpcmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1hbmFn
ZXIuZ2V0KCkpKSk7CisgICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0SW5kZXhlZERCRGF0YWJhc2VE
aXJlY3RvcnkoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3
ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2luZGV4ZWRkYl9kaXJlY3RvcnkocHJpdi0+
d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSkpOworICAgICAgICBjb25maWd1cmF0aW9uLnNldFdl
YlNRTERhdGFiYXNlRGlyZWN0b3J5KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24od2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF93ZWJzcWxfZGlyZWN0
b3J5KHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpKTsKICAgICB9IGVsc2UgaWYgKCFw
cml2LT5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkuaXNOdWxsKCkpCi0gICAgICAgIGNvbmZpZ3VyYXRp
b24uc2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zy
b21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+bG9jYWxTdG9yYWdlRGlyZWN0b3J5LmRh
dGEoKSkpOworICAgICAgICBjb25maWd1cmF0aW9uLnNldExvY2FsU3RvcmFnZURpcmVjdG9yeShG
aWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPmxvY2Fs
U3RvcmFnZURpcmVjdG9yeS5kYXRhKCkpKTsKIAogICAgIHByaXYtPnByb2Nlc3NQb29sID0gV2Vi
UHJvY2Vzc1Bvb2w6OmNyZWF0ZShjb25maWd1cmF0aW9uKTsKIApAQCAtOTI0LDcgKzkyNCw3IEBA
IHZvaWQgd2Via2l0X3dlYl9jb250ZXh0X3NldF9mYXZpY29uX2RhdGFiYXNlX2RpcmVjdG9yeShX
ZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0CiAgICAgV2ViS2l0V2ViQ29udGV4dFByaXZhdGUqIHBy
aXYgPSBjb250ZXh0LT5wcml2OwogICAgIGVuc3VyZUZhdmljb25EYXRhYmFzZShjb250ZXh0KTsK
IAotICAgIFN0cmluZyBkaXJlY3RvcnlQYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5n
RnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKKyAgICBTdHJpbmcgZGlyZWN0b3J5
UGF0aCA9IEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0
aCk7CiAgICAgLy8gVXNlIGRlZmF1bHQgaWYgbnVsbHB0ciBpcyBwYXNzZWQgYXMgcGFyYW1ldGVy
LgogICAgIGlmIChkaXJlY3RvcnlQYXRoLmlzRW1wdHkoKSkgewogI2lmIFBMQVRGT1JNKEdUSykK
QEAgLTkzMyw3ICs5MzMsNyBAQCB2b2lkIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfZmF2aWNvbl9k
YXRhYmFzZV9kaXJlY3RvcnkoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dAogICAgICAgICBjb25z
dCBjaGFyKiBwb3J0RGlyZWN0b3J5ID0gIndwZSI7CiAjZW5kaWYKICAgICAgICAgR1VuaXF1ZVB0
cjxnY2hhcj4gZGF0YWJhc2VEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFtZShnX2dldF91c2VyX2Nh
Y2hlX2RpcigpLCBwb3J0RGlyZWN0b3J5LCAiaWNvbmRhdGFiYXNlIiwgbnVsbHB0cikpOwotICAg
ICAgICBkaXJlY3RvcnlQYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihkYXRhYmFzZURpcmVjdG9yeS5nZXQoKSk7CisgICAgICAgIGRp
cmVjdG9yeVBhdGggPSBGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKGRhdGFiYXNlRGlyZWN0b3J5LmdldCgpKTsKICAgICB9CiAgICAgcHJpdi0+ZmF2aWNvbkRh
dGFiYXNlRGlyZWN0b3J5ID0gZGlyZWN0b3J5UGF0aC51dGY4KCk7CiAKQEAgLTk0Miw3ICs5NDIs
NyBAQCB2b2lkIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfZmF2aWNvbl9kYXRhYmFzZV9kaXJlY3Rv
cnkoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dAogICAgICAgICAiV2VicGFnZUljb25zLmRiIiwg
bnVsbHB0cikpOwogCiAgICAgLy8gU2V0dGluZyB0aGUgcGF0aCB3aWxsIGNhdXNlIHRoZSBpY29u
IGRhdGFiYXNlIHRvIGJlIG9wZW5lZC4KLSAgICB3ZWJraXRGYXZpY29uRGF0YWJhc2VPcGVuKHBy
aXYtPmZhdmljb25EYXRhYmFzZS5nZXQoKSwgV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJv
bUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmYXZpY29uRGF0YWJhc2VQYXRoLmdldCgpKSk7Cisg
ICAgd2Via2l0RmF2aWNvbkRhdGFiYXNlT3Blbihwcml2LT5mYXZpY29uRGF0YWJhc2UuZ2V0KCks
IEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmF2aWNvbkRh
dGFiYXNlUGF0aC5nZXQoKSkpOwogCiAgICAgaWYgKHdlYmtpdF93ZWJfY29udGV4dF9pc19lcGhl
bWVyYWwoY29udGV4dCkpCiAgICAgICAgIHdlYmtpdEZhdmljb25EYXRhYmFzZVNldFByaXZhdGVC
cm93c2luZ0VuYWJsZWQocHJpdi0+ZmF2aWNvbkRhdGFiYXNlLmdldCgpLCB0cnVlKTsKQEAgLTEw
MjYsNyArMTAyNiw3IEBAIHZvaWQgd2Via2l0X3dlYl9jb250ZXh0X3NldF9hZGRpdGlvbmFsX3Bs
dWdpbnNfZGlyZWN0b3J5KFdlYktpdFdlYkNvbnRleHQqIGNvbnRlCiAgICAgZ19yZXR1cm5faWZf
ZmFpbChkaXJlY3RvcnkpOwogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0gICAg
Y29udGV4dC0+cHJpdi0+cHJvY2Vzc1Bvb2wtPnNldEFkZGl0aW9uYWxQbHVnaW5zRGlyZWN0b3J5
KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
ZGlyZWN0b3J5KSk7CisgICAgY29udGV4dC0+cHJpdi0+cHJvY2Vzc1Bvb2wtPnNldEFkZGl0aW9u
YWxQbHVnaW5zRGlyZWN0b3J5KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZGlyZWN0b3J5KSk7CiAjZW5kaWYKIH0KIApAQCAtMTQxOCw3ICsxNDE4LDcgQEAg
dm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2Rpc2tfY2FjaGVfZGlyZWN0b3J5KFdlYktpdFdl
YkNvbnRleHQqIGNvbnRleHQsIGNvbnMKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19X
RUJfQ09OVEVYVChjb250ZXh0KSk7CiAgICAgZ19yZXR1cm5faWZfZmFpbChkaXJlY3RvcnkpOwog
Ci0gICAgY29udGV4dC0+cHJpdi0+cHJvY2Vzc1Bvb2wtPmNvbmZpZ3VyYXRpb24oKS5zZXREaXNr
Q2FjaGVEaXJlY3RvcnkoV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oZGlyZWN0b3J5KSwgbmV0d29ya0NhY2hlU3ViZGlyZWN0b3J5KSk7CisgICAgY29udGV4dC0+
cHJpdi0+cHJvY2Vzc1Bvb2wtPmNvbmZpZ3VyYXRpb24oKS5zZXREaXNrQ2FjaGVEaXJlY3Rvcnko
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0cmluZ0Zy
b21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGlyZWN0b3J5KSwgbmV0d29ya0NhY2hlU3ViZGly
ZWN0b3J5KSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5jcHAKaW5kZXggN2Ux
ZDE0YjY3Yjk1MzhmNDc1ZTBmOGFmNDUwYWFiZGVmMmUyMTU1ZS4uMWNjMDY1NDExZTczMWZhNjcy
YzQzNGYzYjNjMGFiZTlhNTY5M2ViZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuY3BwCkBAIC0y
Niw4ICsyNiw4IEBACiAjaW5jbHVkZSAiV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyUHJpdmF0ZS5o
IgogI2luY2x1ZGUgIldlYktpdFdlYnNpdGVEYXRhUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYnNp
dGVEYXRhRmV0Y2hPcHRpb24uaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNp
bmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAj
aW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL1dURkdU
eXBlLmg+CiAKQEAgLTM2MywxMyArMzYzLDEzIEBAIEFQSTo6V2Vic2l0ZURhdGFTdG9yZSYgd2Vi
a2l0V2Vic2l0ZURhdGFNYW5hZ2VyR2V0RGF0YVN0b3JlKFdlYktpdFdlYnNpdGVEYXRhTWFuCiAg
ICAgaWYgKCFwcml2LT53ZWJzaXRlRGF0YVN0b3JlKSB7CiAgICAgICAgIGF1dG8gY29uZmlndXJh
dGlvbiA9IFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKICAgICAgICAg
Y29uZmlndXJhdGlvbi0+c2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCFwcml2LT5sb2NhbFN0b3Jh
Z2VEaXJlY3RvcnkgPwotICAgICAgICAgICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkgOiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9t
RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPmxvY2FsU3RvcmFnZURpcmVjdG9yeS5nZXQo
KSkpOworICAgICAgICAgICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9y
YWdlRGlyZWN0b3J5KCkgOiBGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKHByaXYtPmxvY2FsU3RvcmFnZURpcmVjdG9yeS5nZXQoKSkpOwogICAgICAgICBjb25m
aWd1cmF0aW9uLT5zZXROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoIXByaXYtPmRpc2tDYWNoZURpcmVj
dG9yeSA/Ci0gICAgICAgICAgICBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3b3Jr
Q2FjaGVEaXJlY3RvcnkoKSA6IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKHByaXYtPmRpc2tDYWNoZURpcmVjdG9yeS5nZXQoKSksIG5ldHdvcmtDYWNoZVN1YmRp
cmVjdG9yeSkpOworICAgICAgICAgICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0
d29ya0NhY2hlRGlyZWN0b3J5KCkgOiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5k
aXNrQ2FjaGVEaXJlY3RvcnkuZ2V0KCkpLCBuZXR3b3JrQ2FjaGVTdWJkaXJlY3RvcnkpKTsKICAg
ICAgICAgY29uZmlndXJhdGlvbi0+c2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSghcHJpdi0+
YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA/Ci0gICAgICAgICAgICBBUEk6OldlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkgOiBXZWJDb3JlOjpGaWxl
U3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPmFwcGxpY2F0
aW9uQ2FjaGVEaXJlY3RvcnkuZ2V0KCkpKTsKKyAgICAgICAgICAgIEFQSTo6V2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKSA6IEZpbGVTeXN0ZW06OnN0
cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+YXBwbGljYXRpb25DYWNoZURp
cmVjdG9yeS5nZXQoKSkpOwogICAgICAgICBjb25maWd1cmF0aW9uLT5zZXRXZWJTUUxEYXRhYmFz
ZURpcmVjdG9yeSghcHJpdi0+d2ViU1FMRGlyZWN0b3J5ID8KLSAgICAgICAgICAgIEFQSTo6V2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkgOiBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPndl
YlNRTERpcmVjdG9yeS5nZXQoKSkpOworICAgICAgICAgICAgQVBJOjpXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKSA6IEZpbGVTeXN0ZW06OnN0cmluZ0Zy
b21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+d2ViU1FMRGlyZWN0b3J5LmdldCgpKSk7
CiAgICAgICAgIGNvbmZpZ3VyYXRpb24tPnNldE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoQVBJ
OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpKTsK
ICAgICAgICAgcHJpdi0+d2Vic2l0ZURhdGFTdG9yZSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6
Y3JlYXRlTGVnYWN5KFdURk1vdmUoY29uZmlndXJhdGlvbikpOwogICAgIH0KQEAgLTUzMiw3ICs1
MzIsNyBAQCBjb25zdCBnY2hhciogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9kaXNr
X2NhY2hlX2RpcmVjdG9yeShXZWJLaXRXZWJzaXRlRAogCiAgICAgaWYgKCFwcml2LT5kaXNrQ2Fj
aGVEaXJlY3RvcnkpIHsKICAgICAgICAgLy8gVGhlIGRlZmF1bHQgZGlyZWN0b3J5IGFscmVhZHkg
aGFzIHRoZSBzdWJkaXJlY3RvcnkuCi0gICAgICAgIHByaXYtPmRpc2tDYWNoZURpcmVjdG9yeS5y
ZXNldChnX3N0cmR1cChXZWJDb3JlOjpGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKEFQSTo6V2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpKS51dGY4KCkuZGF0
YSgpKSk7CisgICAgICAgIHByaXYtPmRpc2tDYWNoZURpcmVjdG9yeS5yZXNldChnX3N0cmR1cChG
aWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5l
dHdvcmtDYWNoZURpcmVjdG9yeSgpKS51dGY4KCkuZGF0YSgpKSk7CiAgICAgfQogICAgIHJldHVy
biBwcml2LT5kaXNrQ2FjaGVEaXJlY3RvcnkuZ2V0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvd2luL0FQSVdlYnNpdGVEYXRhU3RvcmVXaW4uY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dpbi9BUElXZWJzaXRlRGF0YVN0b3JlV2luLmNwcApp
bmRleCAxOWJlMjg4ZDQ4MmRhYWZkZDE4ZTRjZmRmZWRjZTIwM2FhYzc1YmRkLi4zMjI1YjkyMTcw
ZDdjOThiNGJlODQ1YWNjZmU4ZDhjMWIzNjdkN2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvd2luL0FQSVdlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93aW4vQVBJV2Vic2l0ZURhdGFTdG9yZVdpbi5jcHAKQEAg
LTI2LDQzICsyNiw0MyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFQSVdlYnNp
dGVEYXRhU3RvcmUuaCIKIAotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgorI2luY2x1
ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKIG5hbWVzcGFjZSBBUEkgewogCiBTdHJpbmcgV2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKQogewotICAgIHJl
dHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJBcHBs
aWNhdGlvbkNhY2hlIik7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwg
IkFwcGxpY2F0aW9uQ2FjaGUiKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKQogewotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6bG9jYWxV
c2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJDYWNoZVN0b3JhZ2UiKTsKKyAgICByZXR1
cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2Fs
VXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiQ2FjaGVTdG9yYWdlIik7CiB9CiAKIFN0
cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkKIHsK
LSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgp
LCAiTmV0d29ya0NhY2hlIik7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3Rvcnko
KSwgIk5ldHdvcmtDYWNoZSIpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06Omxv
Y2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiSW5kZXhlZERCIik7CisgICAgcmV0
dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2Nh
bFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkluZGV4ZWREQiIpOwogfQogCiBTdHJp
bmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJl
Y3RvcnkoKQogewotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdl
RGlyZWN0b3J5KCksICJTZXJ2aWNlV29ya2VycyIpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9y
YWdlRGlyZWN0b3J5KCksICJTZXJ2aWNlV29ya2VycyIpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIFdl
YkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxl
U3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkxvY2FsU3RvcmFn
ZSIpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmls
ZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJMb2NhbFN0b3Jh
Z2UiKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtleXNTdG9y
YWdlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmlj
U3RvcmFnZURpcmVjdG9yeSgpLCAiTWVkaWFLZXlTdG9yYWdlIik7CisgICAgcmV0dXJuIEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVj
aWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIk1lZGlhS2V5U3RvcmFnZSIpOwogfQogCiBTdHJpbmcg
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9y
eSgpCkBAIC03Myw1NyArNzMsNTcgQEAgU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRE
ZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKQogCiBTdHJpbmcgV2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVT
eXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiV2ViU1FMIik7Cisg
ICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVt
Ojpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIldlYlNRTCIpOwogfQogCiBT
dHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJl
Y3RvcnkoKQogewotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdl
RGlyZWN0b3J5KCksICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIik7CisgICAgcmV0dXJuIEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVj
aWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIlJlc291cmNlTG9hZFN0YXRpc3RpY3MiKTsKIH0KIAog
U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5TmFtZSkKIHsKLSAgICByZXR1cm4gV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0
ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCBkaXJlY3RvcnlOYW1lKTsK
KyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0
ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCBkaXJlY3RvcnlOYW1lKTsK
IH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OndlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5TmFtZSkKIHsKLSAgICBy
ZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNv
cmU6OkZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCBkaXJl
Y3RvcnlOYW1lKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCBkaXJl
Y3RvcnlOYW1lKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRB
cHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmxvY2Fs
VXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiQXBwbGljYXRpb25DYWNoZSIpOworICAg
IHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6
bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJBcHBsaWNhdGlvbkNhY2hlIik7
CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0TmV0d29ya0NhY2hl
RGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3Rv
cmFnZURpcmVjdG9yeSgpLCAiTmV0d29ya0NhY2hlIik7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0
b3JhZ2VEaXJlY3RvcnkoKSwgIk5ldHdvcmtDYWNoZSIpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURh
dGFTdG9yZTo6bGVnYWN5RGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkKIHsKLSAgICBy
ZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNv
cmU6OkZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiV2Vi
U1FMIik7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChG
aWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIldlYlNRTCIp
OwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdEluZGV4ZWREQkRh
dGFiYXNlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNp
ZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiSW5kZXhlZERCIik7CisgICAgcmV0dXJuIEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZp
Y1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkluZGV4ZWREQiIpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURh
dGFTdG9yZTo6bGVnYWN5RGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpCiB7Ci0gICAgcmV0
dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkxvY2Fs
U3RvcmFnZSIpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJMb2Nh
bFN0b3JhZ2UiKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRN
ZWRpYUNhY2hlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmxvY2FsVXNlclNw
ZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiTWVkaWFDYWNoZSIpOworICAgIHJldHVybiBGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3Bl
Y2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJNZWRpYUNhY2hlIik7CiB9CiAKIFN0cmluZyBXZWJz
aXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpCiB7
Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChXZWJDb3JlOjpGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3Rvcnko
KSwgIk1lZGlhS2V5U3RvcmFnZSIpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0
b3J5KCksICJNZWRpYUtleVN0b3JhZ2UiKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6
OmxlZ2FjeURlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKQpAQCAtMTM0
LDcgKzEzNCw3IEBAIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0RGV2aWNl
SWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCkKIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6
OmxlZ2FjeURlZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpCiB7Ci0gICAg
cmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJD
b3JlOjpGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkph
dmFTY3JpcHRDb3JlRGVidWciKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9y
eSgpLCAiSmF2YVNjcmlwdENvcmVEZWJ1ZyIpOwogfQogCiBSZWY8V2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbj4gV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZUNv
bmZpZ3VyYXRpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21h
dGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
dXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAppbmRleCA2YzRlZGViYjE3MjlmN2Nl
ZmI0ODkyMmE5NTY1YjBlN2VhNWIwNjEwLi44ZjU3YmFjYWNmMjkyM2I5ZDcyNDkxNTI1YjM0YjVi
NWIwZjg2NDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9u
L1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
dXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcApAQCAtODA0LDcgKzgwNCw3IEBAIHZv
aWQgV2ViQXV0b21hdGlvblNlc3Npb246OndpbGxDbG9zZVBhZ2UoY29uc3QgV2ViUGFnZVByb3h5
JiBwYWdlKQogCiBzdGF0aWMgYm9vbCBmaWxlQ2FuQmVBY2NlcHRlZEZvclVwbG9hZChjb25zdCBT
dHJpbmcmIGZpbGVuYW1lLCBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGFsbG93ZWRNSU1FVHlwZXMs
IGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgYWxsb3dlZEZpbGVFeHRlbnNpb25zKQogewotICAgIGlm
ICghV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhmaWxlbmFtZSkpCisgICAgaWYgKCFG
aWxlU3lzdGVtOjpmaWxlRXhpc3RzKGZpbGVuYW1lKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgaWYgKGFsbG93ZWRNSU1FVHlwZXMuaXNFbXB0eSgpICYmIGFsbG93ZWRGaWxlRXh0ZW5z
aW9ucy5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9Eb3dubG9hZENsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25s
b2FkQ2xpZW50Lm1tCmluZGV4IDNiNDk2MjhmZGY2ZGZjNWFhZGQwMjlkNWEyY2JjYjZiZmI3OGNm
YzEuLmM3MjdiZDIzZWY5NTUyNTFmNzk4MDlkNjljNTgyMzIxOTdhZjFlYjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tCkBAIC00MiwxMCAr
NDIsMTAgQEAKICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgogI2ltcG9ydCAiX1dLRG93bmxv
YWREZWxlZ2F0ZS5oIgogI2ltcG9ydCAiX1dLRG93bmxvYWRJbnRlcm5hbC5oIgotI2ltcG9ydCA8
V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2ltcG9ydCA8d3RmL0Jsb2Nr
UHRyLmg+CisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IApAQCAtMTgxLDcgKzE4MSw3IEBAIHZvaWQgRG93bmxvYWRDbGllbnQ6OmRlY2lkZURlc3RpbmF0
aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdlYlByb2Nlc3NQb29sJiwgRG93CiB7CiAjaWYgVVNF
KFNZU1RFTV9QUkVWSUVXKQogICAgIGlmIChkb3dubG9hZFByb3h5LmlzU3lzdGVtUHJldmlld0Rv
d25sb2FkKCkpIHsKLSAgICAgICAgTlNTdHJpbmcgKnRlbXBvcmFyeURpcmVjdG9yeSA9IFdlYkNv
cmU6OkZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShAIlN5c3RlbVByZXZpZXdz
Iik7CisgICAgICAgIE5TU3RyaW5nICp0ZW1wb3JhcnlEaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpj
cmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoQCJTeXN0ZW1QcmV2aWV3cyIpOwogICAgICAgICBOU1N0
cmluZyAqZGVzdGluYXRpb24gPSBbdGVtcG9yYXJ5RGlyZWN0b3J5IHN0cmluZ0J5QXBwZW5kaW5n
UGF0aENvbXBvbmVudDpmaWxlbmFtZV07CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKEFsbG93
T3ZlcndyaXRlOjpZZXMsIGRlc3RpbmF0aW9uKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KaW5k
ZXggNTZjZjBmZDA1OTBjNjE1NDNkMzQxMGY4NGY2NmQxOWM3ZWQ4NTFiZi4uMmRhZjc1NTcxY2Ni
MWE5ZDcwNWJhYTA1N2FkNjI0YTVhNjk4YTQzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCkBAIC00Myw3ICs0Myw2IEBA
CiAjaW1wb3J0ICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbXBvcnQgIldpbmRvd1NlcnZlckNv
bm5lY3Rpb24uaCIKICNpbXBvcnQgPFdlYkNvcmUvQ29sb3IuaD4KLSNpbXBvcnQgPFdlYkNvcmUv
RmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4K
ICNpbXBvcnQgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGxh
dGZvcm1QYXN0ZWJvYXJkLmg+CkBAIC01Miw2ICs1MSw3IEBACiAjaW1wb3J0IDxwYWwvc3BpL2Nm
L0NGTmV0d29ya1NQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0tleWVkQXJjaGl2ZXJT
UEkuaD4KICNpbXBvcnQgPHN5cy9wYXJhbS5oPgorI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4K
ICNpbXBvcnQgPHd0Zi9Qcm9jZXNzUHJpdmlsZWdlLmg+CiAjaW1wb3J0IDx3dGYvY29jb2EvRW50
aXRsZW1lbnRzLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9keWxkU1BJLmg+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IDVkZDE1MzU1Y2Jk
NGFlNGY4NGU4NjBiZjYwYWJjNTc5ZDQwZjNiMzAuLmJjMTUxOGE4MGVmZjM3NDNiZjVmMTc5NzY4
YzUxZWM1NjFjZmIwMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZp
ZXdJbXBsLm1tCkBAIC04NCw3ICs4NCw2IEBACiAjaW1wb3J0IDxXZWJDb3JlL0RyYWdEYXRhLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0RyYWdJdGVtLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0VkaXRvci5o
PgotI2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZvbnRB
dHRyaWJ1dGVDaGFuZ2VzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZvbnRBdHRyaWJ1dGVzLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0tleXByZXNzQ29tbWFuZC5oPgpAQCAtMTE1LDYgKzExNCw3IEBACiAj
aW1wb3J0IDxwYWwvc3BpL21hYy9OU1ZpZXdTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvbWFjL05T
V2luZG93U1BJLmg+CiAjaW1wb3J0IDxzeXMvc3RhdC5oPgorI2ltcG9ydCA8d3RmL0ZpbGVTeXN0
ZW0uaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2ltcG9ydCA8d3RmL1Byb2Nl
c3NQcml2aWxlZ2UuaD4KICNpbXBvcnQgPHd0Zi9TZXRGb3JTY29wZS5oPgpAQCAtMzk2NCw3ICsz
OTY0LDcgQEAgYm9vbCBXZWJWaWV3SW1wbDo6cGVyZm9ybURyYWdPcGVyYXRpb24oaWQgPE5TRHJh
Z2dpbmdJbmZvPiBkcmFnZ2luZ0luZm8pCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIH0KIAotICAgICAgICBOU1N0cmluZyAqZHJvcERlc3RpbmF0aW9uUGF0aCA9IFdlYkNvcmU6
OkZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShAIldlYktpdERyb3BEZXN0aW5h
dGlvbiIpOworICAgICAgICBOU1N0cmluZyAqZHJvcERlc3RpbmF0aW9uUGF0aCA9IEZpbGVTeXN0
ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShAIldlYktpdERyb3BEZXN0aW5hdGlvbiIpOwog
ICAgICAgICBpZiAoIWRyb3BEZXN0aW5hdGlvblBhdGgpIHsKICAgICAgICAgICAgIGRlbGV0ZSBk
cmFnRGF0YTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTQyODYsNyArNDI4Niw3IEBA
IE5TQXJyYXkgKldlYlZpZXdJbXBsOjpuYW1lc09mUHJvbWlzZWRGaWxlc0Ryb3BwZWRBdERlc3Rp
bmF0aW9uKE5TVVJMICpkcm9wRGVzdGluCiAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNy
ZWF0ZSBpbWFnZSBmaWxlIHZpYSAtW05TRmlsZVdyYXBwZXIgd3JpdGVUb1VSTDpvcHRpb25zOm9y
aWdpbmFsQ29udGVudHNVUkw6ZXJyb3I6XSIpOwogCiAgICAgaWYgKCFtX3Byb21pc2VkVVJMLmlz
RW1wdHkoKSkKLSAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6c2V0TWV0YWRhdGFVUkwoU3Ry
aW5nKHBhdGgpLCBtX3Byb21pc2VkVVJMKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6c2V0TWV0YWRh
dGFVUkwoU3RyaW5nKHBhdGgpLCBtX3Byb21pc2VkVVJMKTsKICAgICAKICAgICByZXR1cm4gW05T
QXJyYXkgYXJyYXlXaXRoT2JqZWN0OltwYXRoIGxhc3RQYXRoQ29tcG9uZW50XV07CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5jcHAK
aW5kZXggZTYwZWUzZjRmOTRiMDMyZDM5OWI3YTM3N2E3ZThmOWNjYTIzNzUxZC4uMTlhN2ExMmNm
YTNmMzFiZjFlMjEzN2MzNWNkNTdkMGE1MDdiOWE5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9yYWdlLmNwcApAQCAtMjgsOSArMjgsOSBA
QAogCiAjaW5jbHVkZSAiUGVyc2lzdGVuY3lVdGlscy5oIgogCi0jaW5jbHVkZSA8V2ViQ29yZS9G
aWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRl
IDx3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaD4KKyNpbmNsdWRlIDx3dGYvRmls
ZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KICNpbmNsdWRlIDx3dGYvUnVu
TG9vcC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcAppbmRleCA3
NTEwMmVlM2IwMDQyNGE0ODA5NDE1ZjM2YjA0ZWQzYjUzY2FkMTQ4Li5lMDkyNTRiMDE4NzI0OWM5
OTJmYzJmY2Q3Mjg4OGU3ODRiMTkzMzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwCkBAIC0zNiw4ICszNiw4IEBACiAjaW5j
bHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIK
ICNpbmNsdWRlICJXZWJQcm90ZWN0aW9uU3BhY2UuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVT
eXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL01JTUVUeXBlUmVnaXN0cnkuaD4KKyNpbmNsdWRl
IDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9CdWJibGV3cmFwTGF1bmNoZXIuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9CdWJibGV3cmFwTGF1bmNoZXIuY3BwCmluZGV4
IGU0MzRlMDMzMzk4N2E5Mjc0OWMwMGRkYzViNTMzNjA5MDRkZWYxYmUuLjE2NzIzZGZkZGE0ZmFk
YmI5MmFhN2VhMGE4ZTZhZTU4ODRmMmQwNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0xhdW5jaGVyL2dsaWIvQnViYmxld3JhcExhdW5jaGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9nbGliL0J1YmJsZXdyYXBMYXVuY2hlci5jcHAKQEAg
LTIwLDEyICsyMCwxMiBAQAogCiAjaWYgRU5BQkxFKEJVQkJMRVdSQVBfU0FOREJPWCkKIAotI2lu
Y2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1E
aXNwbGF5Lmg+CiAjaW5jbHVkZSA8ZmNudGwuaD4KICNpbmNsdWRlIDxnbGliLmg+CiAjaW5jbHVk
ZSA8c2VjY29tcC5oPgogI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgorI2luY2x1ZGUgPHd0Zi9GaWxl
U3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR0xpYlV0aWxpdGllcy5oPgogI2luY2x1ZGUg
PHd0Zi9nbGliL0dSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9nbGliL1Byb2Nlc3NM
YXVuY2hlckdMaWIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9Q
cm9jZXNzTGF1bmNoZXJHTGliLmNwcAppbmRleCBjNTY2MTg3M2EwNWU3MTA5YjUxN2VhNzViZGZh
YmNjZDhmMjNmYjg2Li4wMDg4NDlhYjMxYzFlY2U4YzgzNzk3MGI2OTRjNDJmYjRiNWRjZGI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9nbGliL1Byb2Nlc3NM
YXVuY2hlckdMaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL2ds
aWIvUHJvY2Vzc0xhdW5jaGVyR0xpYi5jcHAKQEAgLTMxLDEwICszMSwxMCBAQAogI2luY2x1ZGUg
IkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJGbGF0cGFrTGF1bmNoZXIuaCIKICNpbmNsdWRlICJQ
cm9jZXNzRXhlY3V0YWJsZVBhdGguaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4K
ICNpbmNsdWRlIDxlcnJuby5oPgogI2luY2x1ZGUgPGZjbnRsLmg+CiAjaW5jbHVkZSA8Z2xpYi5o
PgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4K
ICNpbmNsdWRlIDx3dGYvVW5pU3RkRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR0xpYlV0
aWxpdGllcy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9n
dGsvUGx1Z2luSW5mb0NhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMv
Z3RrL1BsdWdpbkluZm9DYWNoZS5jcHAKaW5kZXggODA2NDdlYjEyZWU1MjUxMWExMTllODVmZGUy
ZjU5YzRlMjM3Nzg4NS4uYTI4YTAwYTM4NmNhZmVjYjM3ODJhNDExMDM3Y2E5YTUzNWRjMjIwMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9ndGsvUGx1Z2luSW5m
b0NhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL2d0ay9QbHVn
aW5JbmZvQ2FjaGUuY3BwCkBAIC0yOSw4ICsyOSw4IEBACiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BM
VUdJTl9BUEkpCiAKICNpbmNsdWRlICJOZXRzY2FwZVBsdWdpbk1vZHVsZS5oIgotI2luY2x1ZGUg
PFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1EaXNwbGF5
Lmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNjYsMTAgKzY2LDEwIEBAIFBsdWdpbklu
Zm9DYWNoZTo6UGx1Z2luSW5mb0NhY2hlKCkKICAgICBtX3NhdmVUb0ZpbGVJZGxlLnNldFByaW9y
aXR5KEdfUFJJT1JJVFlfREVGQVVMVF9JRExFKTsKIAogICAgIEdVbmlxdWVQdHI8Y2hhcj4gY2Fj
aGVEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFtZShnX2dldF91c2VyX2NhY2hlX2RpcigpLCAid2Vi
a2l0Z3RrIiwgbnVsbHB0cikpOwotICAgIGlmIChXZWJDb3JlOjpGaWxlU3lzdGVtOjptYWtlQWxs
RGlyZWN0b3JpZXMoY2FjaGVEaXJlY3RvcnkuZ2V0KCkpKSB7CisgICAgaWYgKEZpbGVTeXN0ZW06
Om1ha2VBbGxEaXJlY3RvcmllcyhjYWNoZURpcmVjdG9yeS5nZXQoKSkpIHsKICAgICAgICAgLy8g
RGVsZXRlIG9sZCBjYWNoZSBmaWxlLgogICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IG9sZENhY2hl
UGF0aChnX2J1aWxkX2ZpbGVuYW1lKGNhY2hlRGlyZWN0b3J5LmdldCgpLCAicGx1Z2lucyIsIG51
bGxwdHIpKTsKLSAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKG9sZENhY2hl
UGF0aC5nZXQoKSkpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKEZpbGVTeXN0ZW06
OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ob2xkQ2FjaGVQYXRoLmdldCgpKSk7
CiAKICAgICAgICAgbV9jYWNoZVBhdGgucmVzZXQoZ19idWlsZF9maWxlbmFtZShjYWNoZURpcmVj
dG9yeS5nZXQoKSwgY2FjaGVGaWxlbmFtZUZvckN1cnJlbnREaXNwbGF5KCksIG51bGxwdHIpKTsK
ICAgICAgICAgZ19rZXlfZmlsZV9sb2FkX2Zyb21fZmlsZShtX2NhY2hlRmlsZS5nZXQoKSwgbV9j
YWNoZVBhdGguZ2V0KCksIEdfS0VZX0ZJTEVfTk9ORSwgbnVsbHB0cik7CkBAIC0xMTIsNyArMTEy
LDcgQEAgYm9vbCBQbHVnaW5JbmZvQ2FjaGU6OmdldFBsdWdpbkluZm8oY29uc3QgU3RyaW5nJiBw
bHVnaW5QYXRoLCBQbHVnaW5Nb2R1bGVJbmZvJgogICAgIGlmICghZ19rZXlfZmlsZV9oYXNfZ3Jv
dXAobV9jYWNoZUZpbGUuZ2V0KCksIHBsdWdpbkdyb3VwLmRhdGEoKSkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIGF1dG8gbGFzdE1vZGlmaWVkVGltZSA9IFdlYkNvcmU6OkZpbGVTeXN0
ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKHBsdWdpblBhdGgpOworICAgIGF1dG8gbGFzdE1v
ZGlmaWVkVGltZSA9IEZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKHBsdWdpblBh
dGgpOwogICAgIGlmICghbGFzdE1vZGlmaWVkVGltZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIHRpbWVfdCBjYWNoZWRMYXN0TW9kaWZpZWQgPSBzdGF0aWNfY2FzdDx0aW1lX3Q+KGdfa2V5
X2ZpbGVfZ2V0X3VpbnQ2NChtX2NhY2hlRmlsZS5nZXQoKSwgcGx1Z2luR3JvdXAuZGF0YSgpLCAi
bXRpbWUiLCBudWxscHRyKSk7CkBAIC0xMjAsNyArMTIwLDcgQEAgYm9vbCBQbHVnaW5JbmZvQ2Fj
aGU6OmdldFBsdWdpbkluZm8oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBQbHVnaW5Nb2R1bGVJ
bmZvJgogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBwbHVnaW4ucGF0aCA9IHBsdWdpblBh
dGg7Ci0gICAgcGx1Z2luLmluZm8uZmlsZSA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhHZXRG
aWxlTmFtZShwbHVnaW5QYXRoKTsKKyAgICBwbHVnaW4uaW5mby5maWxlID0gRmlsZVN5c3RlbTo6
cGF0aEdldEZpbGVOYW1lKHBsdWdpblBhdGgpOwogCiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBzdHJp
bmdWYWx1ZShnX2tleV9maWxlX2dldF9zdHJpbmcobV9jYWNoZUZpbGUuZ2V0KCksIHBsdWdpbkdy
b3VwLmRhdGEoKSwgIm5hbWUiLCBudWxscHRyKSk7CiAgICAgcGx1Z2luLmluZm8ubmFtZSA9IFN0
cmluZzo6ZnJvbVVURjgoc3RyaW5nVmFsdWUuZ2V0KCkpOwpAQCAtMTQwLDcgKzE0MCw3IEBAIGJv
b2wgUGx1Z2luSW5mb0NhY2hlOjpnZXRQbHVnaW5JbmZvKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0
aCwgUGx1Z2luTW9kdWxlSW5mbyYKIAogdm9pZCBQbHVnaW5JbmZvQ2FjaGU6OnVwZGF0ZVBsdWdp
bkluZm8oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBjb25zdCBQbHVnaW5Nb2R1bGVJbmZvJiBw
bHVnaW4pCiB7Ci0gICAgYXV0byBsYXN0TW9kaWZpZWRUaW1lID0gV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUocGx1Z2luUGF0aCk7CisgICAgYXV0byBsYXN0TW9k
aWZpZWRUaW1lID0gRmlsZVN5c3RlbTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUocGx1Z2luUGF0
aCk7CiAgICAgaWYgKCFsYXN0TW9kaWZpZWRUaW1lKQogICAgICAgICByZXR1cm47CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvbWFjL1BsdWdpblByb2Nlc3NQ
cm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvbWFjL1BsdWdpblBy
b2Nlc3NQcm94eU1hYy5tbQppbmRleCA4OWZhYjVlY2I2NjZkMmI0NGZjYzIyMzllYmU1YmE1ZWUx
YWM2M2Q4Li5mMTJhNjFlZjY2OWYzNTczMGRlYTdhNGI1ZjViMTY0NTU1MmMxMTQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5Qcm9jZXNzUHJv
eHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2lu
UHJvY2Vzc1Byb3h5TWFjLm1tCkBAIC0zMywxMSArMzMsMTEgQEAKICNpbXBvcnQgIlBsdWdpblBy
b2Nlc3NNZXNzYWdlcy5oIgogI2ltcG9ydCAiU2FuZGJveFV0aWxpdGllcy5oIgogI2ltcG9ydCA8
UXVhcnR6Q29yZS9DQVJlbW90ZUxheWVyU2VydmVyLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0ZpbGVT
eXN0ZW0uaD4KICNpbXBvcnQgPGNydF9leHRlcm5zLmg+CiAjaW1wb3J0IDxtYWNoLW8vZHlsZC5o
PgogI2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4KICNpbXBvcnQgPHNwYXduLmg+
CisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8d3RmL1Byb2Nlc3NQcml2aWxl
Z2UuaD4KICNpbXBvcnQgPHd0Zi9VUkwuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5J
bmZvU3RvcmVVbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9Q
bHVnaW5JbmZvU3RvcmVVbml4LmNwcAppbmRleCAxZGZkODA3YzEyMzljMzA3OWVmOTI0MDc0NTBi
ODllYzkxMTljZjBjLi5hYTA5NDczNjgxNjU0YTllZjY0NDA2YjJjNjQzOTAzZjdlMDEyNjNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luSW5m
b1N0b3JlVW5peC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy91bml4
L1BsdWdpbkluZm9TdG9yZVVuaXguY3BwCkBAIC0zNCwxMCArMzQsMTAgQEAKICNpbmNsdWRlICJO
ZXRzY2FwZVBsdWdpbk1vZHVsZS5oIgogI2luY2x1ZGUgIlBsdWdpblNlYXJjaFBhdGguaCIKICNp
bmNsdWRlICJQcm9jZXNzRXhlY3V0YWJsZVBhdGguaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVT
eXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtRGlzcGxheS5oPgogI2luY2x1ZGUg
PGxpbWl0cy5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVt
Lmg+CiAKICNpZiBQTEFURk9STShHVEspCiAjaW5jbHVkZSAiUGx1Z2luSW5mb0NhY2hlLmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJv
Y2Vzc1Byb3h5VW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgv
UGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAKaW5kZXggZjg5NjEyMTcwZDAxMTE2MDQzMmVlZWVh
M2Q5Yjg4YTM1MzhiNzEyMi4uYzUwMGMwZmNlYTYyNzg4NmJhZGRkYzNmYzk1MGM2YzRlYTM4YmMw
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdp
blByb2Nlc3NQcm94eVVuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdp
bnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJveHlVbml4LmNwcApAQCAtMzIsOSArMzIsOSBAQAogCiAj
aW5jbHVkZSAiUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIlBy
b2Nlc3NFeGVjdXRhYmxlUGF0aC5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1EaXNwbGF5Lmg+CiAjaW5jbHVkZSA8c3lzL3dhaXQu
aD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA3
MjY4ODNiM2NmODBmNDhmMmRiZmE1NjNmYzliZjdjNTVkNTcwMDZmLi41YmNkYTYzYTg2YjBlMWY4
ZTk2NDYxOTQzMDk5MjZjYmE1MWYyZDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmNwcApAQCAtNjQsNyArNjQsNyBAQCBT
ZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5Ojp+U2VydmljZVdvcmtlclByb2Nlc3NQcm94eSgpCiBi
b29sIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk6Omhhc1JlZ2lzdGVyZWRTZXJ2aWNlV29ya2Vy
cyhjb25zdCBTdHJpbmcmIHNlcnZpY2VXb3JrZXJEaXJlY3RvcnkpCiB7CiAgICAgU3RyaW5nIHJl
Z2lzdHJhdGlvbkZpbGUgPSBXZWJDb3JlOjpzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YWJh
c2VGaWxlbmFtZShzZXJ2aWNlV29ya2VyRGlyZWN0b3J5KTsKLSAgICByZXR1cm4gV2ViQ29yZTo6
RmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhyZWdpc3RyYXRpb25GaWxlKTsKKyAgICByZXR1cm4gRmls
ZVN5c3RlbTo6ZmlsZUV4aXN0cyhyZWdpc3RyYXRpb25GaWxlKTsKIH0KIAogdm9pZCBTZXJ2aWNl
V29ya2VyUHJvY2Vzc1Byb3h5OjpnZXRMYXVuY2hPcHRpb25zKFByb2Nlc3NMYXVuY2hlcjo6TGF1
bmNoT3B0aW9ucyYgbGF1bmNoT3B0aW9ucykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAKaW5kZXggMGMy
NWQ2NTdlOTc3NmE3NDc0ZDIwNTVmZGY1NDg3MmEwMGQ4ZWRkYi4uNDZmYjZjNzcyOTRmM2M2MzFk
NGZmZmRmYzI0YTE0OGY3MDhhNDRjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAKQEAgLTI3LDEy
ICsyNywxMiBAQAogI2luY2x1ZGUgIkxvY2FsU3RvcmFnZURhdGFiYXNlLmgiCiAKICNpbmNsdWRl
ICJMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVT
eXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZVN0YXRlbWVudC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU1FMaXRlVHJhbnNhY3Rpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5
T3JpZ2luLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TdG9yYWdlTWFwLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9TdWRkZW5UZXJtaW5hdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tl
ci5jcHAKaW5kZXggYWZmZDdlOGFjYWUyZGVjYjVjODQ0ZTg3M2I1NmY3ZDE1M2QwYWM5Ni4uYzM3
ODFkZjY3NjkwMGM2OTRiZTE0YmZlNmFlMzY0OWJjMTg4OTBjMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdl
RGF0YWJhc2VUcmFja2VyLmNwcApAQCAtMjcsMTAgKzI3LDEwIEBACiAjaW5jbHVkZSAiTG9jYWxT
dG9yYWdlRGF0YWJhc2VUcmFja2VyLmgiCiAKICNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVk
ZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVGaWxlU3lz
dGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVTdGF0ZW1lbnQuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1RleHRFbmNvZGluZy5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5j
bHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1
ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQpp
bmRleCAwNjlkNGI5YjBhYzM2NmYyYWQ4MDA4M2FkOGNlNTE4YWFmNTY5ZmFjLi5iMjRjMDEyNDFm
YjM5ZGUxOTZiODI5Y2ZjOWQ1ZDliODViMjA0YzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFT
dG9yZUNvY29hLm1tCkBAIC0zMCwxMCArMzAsMTAgQEAKICNpbXBvcnQgIlN0b3JhZ2VNYW5hZ2Vy
LmgiCiAjaW1wb3J0ICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIKICNpbXBvcnQg
IldlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmgiCi0jaW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0
ZW0uaD4KICNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1NlYXJjaFBvcHVwTWVudUNvY29hLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2Nm
L0NGTmV0d29ya1NQSS5oPgorI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgogI2ltcG9ydCA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KIApA
QCAtMTIxLDcgKzEyMSw3IEBAIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRh
U3RvcmU6OnBhcmFtZXRlcnMoKQogICAgIHBhcmFtZXRlcnMucGVuZGluZ0Nvb2tpZXMgPSBjb3B5
VG9WZWN0b3IobV9wZW5kaW5nQ29va2llcyk7CiAKICAgICBpZiAoIWNvb2tpZUZpbGUuaXNFbXB0
eSgpKQotICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVE
aXJlY3RvcnkoV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShjb29raWVGaWxlKSwg
cGFyYW1ldGVycy5jb29raWVTdG9yYWdlUGF0aEV4dGVuc2lvbkhhbmRsZSk7CisgICAgICAgIFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShGaWxlU3lz
dGVtOjpkaXJlY3RvcnlOYW1lKGNvb2tpZUZpbGUpLCBwYXJhbWV0ZXJzLmNvb2tpZVN0b3JhZ2VQ
YXRoRXh0ZW5zaW9uSGFuZGxlKTsKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogICAg
IHBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5ID0gcmVzb2x2ZWRJbmRleGVkRGF0
YWJhc2VEaXJlY3RvcnkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggMGFhYmJlNDhkYjEzNWQ4NmJm
Mjg0YjA1NTQyMTQzYTE3YmQ4ZTlhMC4uOGU4OTMxY2MwMjUwMjdhYTA0MDhiODgxYmZlZjA5MDIw
MDEzNzU1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTQzLDcgKzQzLDYgQEAKICNpbmNsdWRlICJX
ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RhdGFiYXNlVHJhY2tlci5oPgot
I2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSFRNTE1l
ZGlhRWxlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvT3JpZ2luTG9jay5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KQEAgLTUxLDYgKzUwLDcgQEAKICNpbmNsdWRlIDx3
dGYvQ2FsbGJhY2tBZ2dyZWdhdG9yLmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVy
Lmg+CiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkQ29waWVyLmg+CisjaW5jbHVkZSA8d3RmL0Zp
bGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgogI2luY2x1ZGUg
PHd0Zi9SdW5Mb29wLmg+CiAKQEAgLTE4OCw4ICsxODgsOCBAQCB2b2lkIFdlYnNpdGVEYXRhU3Rv
cmU6OnJlc29sdmVEaXJlY3Rvcmllc0lmTmVjZXNzYXJ5KCkKIAogICAgIC8vIFJlc29sdmUgZGly
ZWN0b3JpZXMgZm9yIGZpbGUgcGF0aHMuCiAgICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24tPmNvb2tp
ZVN0b3JhZ2VGaWxlKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgIG1fcmVzb2x2ZWRDb25maWd1cmF0
aW9uLT5zZXRDb29raWVTdG9yYWdlRmlsZShyZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0
b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihXZWJDb3JlOjpGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1l
KG1fY29uZmlndXJhdGlvbi0+Y29va2llU3RvcmFnZUZpbGUoKSkpKTsKLSAgICAgICAgbV9yZXNv
bHZlZENvbmZpZ3VyYXRpb24tPnNldENvb2tpZVN0b3JhZ2VGaWxlKFdlYkNvcmU6OkZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+Y29v
a2llU3RvcmFnZUZpbGUoKSwgV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKG1f
Y29uZmlndXJhdGlvbi0+Y29va2llU3RvcmFnZUZpbGUoKSkpKTsKKyAgICAgICAgbV9yZXNvbHZl
ZENvbmZpZ3VyYXRpb24tPnNldENvb2tpZVN0b3JhZ2VGaWxlKHJlc29sdmVBbmRDcmVhdGVSZWFk
V3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5h
bWUobV9jb25maWd1cmF0aW9uLT5jb29raWVTdG9yYWdlRmlsZSgpKSkpOworICAgICAgICBtX3Jl
c29sdmVkQ29uZmlndXJhdGlvbi0+c2V0Q29va2llU3RvcmFnZUZpbGUoRmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5jb29raWVTdG9y
YWdlRmlsZSgpLCBGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUobV9jb25maWd1cmF0aW9uLT5j
b29raWVTdG9yYWdlRmlsZSgpKSkpOwogICAgIH0KIH0KIApAQCAtMTQ4MCw3ICsxNDgwLDcgQEAg
VmVjdG9yPFBsdWdpbk1vZHVsZUluZm8+IFdlYnNpdGVEYXRhU3RvcmU6OnBsdWdpbnMoKSBjb25z
dAogCiBzdGF0aWMgU3RyaW5nIGNvbXB1dGVNZWRpYUtleUZpbGUoY29uc3QgU3RyaW5nJiBtZWRp
YUtleURpcmVjdG9yeSkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KG1lZGlhS2V5RGlyZWN0b3J5LCAiU2VjdXJlU3RvcC5wbGlzdCIp
OworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobWVkaWFL
ZXlEaXJlY3RvcnksICJTZWN1cmVTdG9wLnBsaXN0Iik7CiB9CiAKIFZlY3RvcjxXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGE+IFdlYnNpdGVEYXRhU3RvcmU6Om1lZGlhS2V5T3JpZ2lucyhjb25z
dCBTdHJpbmcmIG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkpCkBAIC0xNDg5LDEyICsxNDg5LDEy
IEBAIFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IFdlYnNpdGVEYXRhU3RvcmU6
Om1lZGlhS2V5T3JpZ2lucyhjb25zdCBTdHJpCiAKICAgICBWZWN0b3I8V2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhPiBvcmlnaW5zOwogCi0gICAgZm9yIChjb25zdCBhdXRvJiBvcmlnaW5QYXRo
IDogV2ViQ29yZTo6RmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShtZWRpYUtleXNTdG9yYWdlRGly
ZWN0b3J5LCAiKiIpKSB7CisgICAgZm9yIChjb25zdCBhdXRvJiBvcmlnaW5QYXRoIDogRmlsZVN5
c3RlbTo6bGlzdERpcmVjdG9yeShtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5LCAiKiIpKSB7CiAg
ICAgICAgIGF1dG8gbWVkaWFLZXlGaWxlID0gY29tcHV0ZU1lZGlhS2V5RmlsZShvcmlnaW5QYXRo
KTsKLSAgICAgICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG1lZGlhS2V5
RmlsZSkpCisgICAgICAgIGlmICghRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhtZWRpYUtleUZpbGUp
KQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgYXV0byBtZWRpYUtleUlkZW50aWZp
ZXIgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUob3JpZ2luUGF0aCk7Cisg
ICAgICAgIGF1dG8gbWVkaWFLZXlJZGVudGlmaWVyID0gRmlsZVN5c3RlbTo6cGF0aEdldEZpbGVO
YW1lKG9yaWdpblBhdGgpOwogCiAgICAgICAgIGlmIChhdXRvIHNlY3VyaXR5T3JpZ2luID0gV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKG1lZGlhS2V5
SWRlbnRpZmllcikpCiAgICAgICAgICAgICBvcmlnaW5zLmFwcGVuZCgqc2VjdXJpdHlPcmlnaW4p
OwpAQCAtMTUwNywxOCArMTUwNywxOCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZU1l
ZGlhS2V5cyhjb25zdCBTdHJpbmcmIG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnksCiB7CiAgICAg
QVNTRVJUKCFtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5LmlzRW1wdHkoKSk7CiAKLSAgICBmb3Ig
KGNvbnN0IGF1dG8mIG1lZGlhS2V5RGlyZWN0b3J5IDogV2ViQ29yZTo6RmlsZVN5c3RlbTo6bGlz
dERpcmVjdG9yeShtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5LCAiKiIpKSB7CisgICAgZm9yIChj
b25zdCBhdXRvJiBtZWRpYUtleURpcmVjdG9yeSA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3Rvcnko
bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSwgIioiKSkgewogICAgICAgICBhdXRvIG1lZGlhS2V5
RmlsZSA9IGNvbXB1dGVNZWRpYUtleUZpbGUobWVkaWFLZXlEaXJlY3RvcnkpOwogCi0gICAgICAg
IGF1dG8gbW9kaWZpY2F0aW9uVGltZSA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmdldEZpbGVNb2Rp
ZmljYXRpb25UaW1lKG1lZGlhS2V5RmlsZSk7CisgICAgICAgIGF1dG8gbW9kaWZpY2F0aW9uVGlt
ZSA9IEZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKG1lZGlhS2V5RmlsZSk7CiAg
ICAgICAgIGlmICghbW9kaWZpY2F0aW9uVGltZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAg
ICAgICAgIGlmIChtb2RpZmljYXRpb25UaW1lLnZhbHVlKCkgPCBtb2RpZmllZFNpbmNlKQogICAg
ICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRl
RmlsZShtZWRpYUtleUZpbGUpOwotICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVF
bXB0eURpcmVjdG9yeShtZWRpYUtleURpcmVjdG9yeSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRl
bGV0ZUZpbGUobWVkaWFLZXlGaWxlKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlE
aXJlY3RvcnkobWVkaWFLZXlEaXJlY3RvcnkpOwogICAgIH0KIH0KIApAQCAtMTUyNywxMSArMTUy
NywxMSBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZU1lZGlhS2V5cyhjb25zdCBTdHJp
bmcmIG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnksCiAgICAgQVNTRVJUKCFtZWRpYUtleXNTdG9y
YWdlRGlyZWN0b3J5LmlzRW1wdHkoKSk7CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIG9yaWdpbiA6
IG9yaWdpbnMpIHsKLSAgICAgICAgYXV0byBtZWRpYUtleURpcmVjdG9yeSA9IFdlYkNvcmU6OkZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtZWRpYUtleXNTdG9yYWdlRGlyZWN0
b3J5LCBvcmlnaW4uZGF0YWJhc2VJZGVudGlmaWVyKCkpOworICAgICAgICBhdXRvIG1lZGlhS2V5
RGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1lZGlhS2V5
c1N0b3JhZ2VEaXJlY3RvcnksIG9yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CiAgICAgICAg
IGF1dG8gbWVkaWFLZXlGaWxlID0gY29tcHV0ZU1lZGlhS2V5RmlsZShtZWRpYUtleURpcmVjdG9y
eSk7CiAKLSAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtZWRpYUtleUZp
bGUpOwotICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeSht
ZWRpYUtleURpcmVjdG9yeSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobWVkaWFL
ZXlGaWxlKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkobWVkaWFL
ZXlEaXJlY3RvcnkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUHJveHlHTGliLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2dsaWIvV2ViUHJvY2Vzc1Byb3h5R0xpYi5jcHAKaW5kZXggOGY1ZmEwM2ZmNDY1MzJmNmI1
ODI1NzllOTliMDE3YjA2NTQwYWVhNS4uMTY5ZWEyMDEyNWIwMzA2MzdmYWZjMDc0N2NhODY5ODU4
NTQ5NWI5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJQcm9j
ZXNzUHJveHlHTGliLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYlBy
b2Nlc3NQcm94eUdMaWIuY3BwCkBAIC0zMSw4ICszMSw4IEBACiAjZW5kaWYKICNpbmNsdWRlICJX
ZWJQcm9jZXNzUG9vbC5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKLSNpbmNsdWRl
IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtRGlzcGxh
eS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvZ3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNwcAppbmRleCBjYTE4N2E2NDIzNDExMmU4NTc5
YmQ4NjE2MmQ5YjgzZmI0MjljODNhLi4xNmIwMmE0MzU3NmU1NmYxYWUyMjYzYTBkZjRmMDY3MzIz
NGRiZTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViSW5zcGVj
dG9yUHJveHlHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJJbnNw
ZWN0b3JQcm94eUd0ay5jcHAKQEAgLTQyLDkgKzQyLDkgQEAKICNpbmNsdWRlICJXZWJQcm9jZXNz
UG9vbC5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
Q2VydGlmaWNhdGVJbmZvLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9HdGtVdGlsaXRpZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxl
bWVudGVkLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQcm9jZXNzUG9vbEd0ay5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc1Bvb2xHdGsuY3BwCmluZGV4IDYy
NDA0MTVmMTU3Mjc5ZTRiZmMwYzU2YTJjZGE4YjYyMjU5MDY5ZjYuLjZiMjM1NzQwNGUwM2FlMzAy
MWFlODgwYjYzYThjZWMwZWU4NmYwZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2d0ay9XZWJQcm9jZXNzUG9vbEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvZ3RrL1dlYlByb2Nlc3NQb29sR3RrLmNwcApAQCAtMzQsMTAgKzM0LDEwIEBACiAjaW5jbHVk
ZSAiV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1JlbW90ZUluc3BlY3RvclNlcnZl
ci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
R1N0cmVhbWVyQ29tbW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvU2NoZW1lUmVnaXN0cnkuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5
c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IDNlNTI5MmE3OGMyYWNmNDYxYTY4
MjkzYjNhYWM0MjJjOTBkN2IzYzUuLjNiZjg4MjUwM2E5OTg1MDRkMmQ3Zjc2ZDQxZWE5ZmMwNTAw
OGJmNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtNTY2MSw3ICs1NjYxLDcgQEAgLSAodm9pZClfcHJl
cGFyZVRvRHJhZ1Byb21pc2VkQXR0YWNobWVudDooY29uc3QgV2ViQ29yZTo6UHJvbWlzZWRBdHRh
Y2htZW50SW5mbyYKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIE5T
U3RyaW5nICp0ZW1wb3JhcnlCbG9iRGlyZWN0b3J5ID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6Y3Jl
YXRlVGVtcG9yYXJ5RGlyZWN0b3J5KEAiYmxvYnMiKTsKKyAgICAgICAgTlNTdHJpbmcgKnRlbXBv
cmFyeUJsb2JEaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpjcmVhdGVUZW1wb3JhcnlEaXJlY3Rvcnko
QCJibG9icyIpOwogICAgICAgICBOU1VSTCAqZGVzdGluYXRpb25VUkwgPSBbTlNVUkwgZmlsZVVS
TFdpdGhQYXRoOlt0ZW1wb3JhcnlCbG9iRGlyZWN0b3J5IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENv
bXBvbmVudDpbTlNVVUlEIFVVSURdLlVVSURTdHJpbmddIGlzRGlyZWN0b3J5Ok5PXTsKIAogICAg
ICAgICBhdXRvIGF0dGFjaG1lbnQgPSBzdHJvbmdTZWxmLT5fcGFnZS0+YXR0YWNobWVudEZvcklk
ZW50aWZpZXIoaW5mby5hdHRhY2htZW50SWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGaWxlVXBsb2FkUGFuZWwubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGaWxlVXBsb2FkUGFuZWwubW0KaW5kZXggNjgw
MTY0NmQwOGY5ZDA5ZmUzZTczOTgzODQ1NzI5YmUyMTFkNWFhNi4uODc3MTE0ZmNmMjY2ZTk5MmFl
YmRkOTAzNjA0MDZhMWQ4OTc1MWRmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL2Zvcm1zL1dLRmlsZVVwbG9hZFBhbmVsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9mb3Jtcy9XS0ZpbGVVcGxvYWRQYW5lbC5tbQpAQCAtNjIwLDcgKzYyMCw3IEBA
IC0gKHZvaWQpX3VwbG9hZEl0ZW1Gb3JJbWFnZURhdGE6KE5TRGF0YSAqKWltYWdlRGF0YSBpbWFn
ZU5hbWU6KE5TU3RyaW5nICopaW1hZ2VOCiAgICAgTlNTdHJpbmcgKiBjb25zdCBrVGVtcG9yYXJ5
RGlyZWN0b3J5TmFtZSA9IEAiV0tXZWJGaWxlVXBsb2FkIjsKIAogICAgIC8vIEJ1aWxkIHRlbXBv
cmFyeSBmaWxlIHBhdGguCi0gICAgTlNTdHJpbmcgKnRlbXBvcmFyeURpcmVjdG9yeSA9IFdlYkNv
cmU6OkZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShrVGVtcG9yYXJ5RGlyZWN0
b3J5TmFtZSk7CisgICAgTlNTdHJpbmcgKnRlbXBvcmFyeURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06
OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShrVGVtcG9yYXJ5RGlyZWN0b3J5TmFtZSk7CiAgICAg
TlNTdHJpbmcgKmZpbGVQYXRoID0gW3RlbXBvcmFyeURpcmVjdG9yeSBzdHJpbmdCeUFwcGVuZGlu
Z1BhdGhDb21wb25lbnQ6aW1hZ2VOYW1lXTsKICAgICBpZiAoIWZpbGVQYXRoKSB7CiAgICAgICAg
IExPR19FUlJPUigiV0tGaWxlVXBsb2FkUGFuZWw6IEZhaWxlZCB0byBjcmVhdGUgdGVtcG9yYXJ5
IGRpcmVjdG9yeSB0byBzYXZlIGltYWdlIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRleCA2MmJlNDEwZjIzYjBlMmMzMzAzMGJiMDljMWU2
MmYxYzhiMjBlMWMwLi44MzAwNGQ3MGE4MTc3NzE2MTgzODRkNGQ4ZjI4MTVjZjIxMWE3NzZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KQEAg
LTQ5NSw3ICs0OTUsNyBAQCBzdGF0aWMgTlNTdHJpbmcgKnBhdGhUb1BERk9uRGlzayhjb25zdCBT
dHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2F2ZVBERlRv
VGVtcG9yYXJ5Rm9sZGVyQW5kT3BlbldpdGhOYXRpdmVBcHBsaWNhdGlvblJhdyhjb25zdCBTdHJp
bmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIG9yaWdpbmF0aW5nVVJMU3RyaW5n
LCBjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsb25nIHNpemUsIGNvbnN0IFN0cmluZyYg
cGRmVVVJRCkKIHsKLSAgICAvLyBGSVhNRTogV3JpdGUgb3JpZ2luYXRpbmdVUkxTdHJpbmcgdG8g
dGhlIGZpbGUncyBvcmlnaW5hdGluZyBVUkwgbWV0YWRhdGEgKHBlcmhhcHMgV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6c2V0TWV0YWRhdGFVUkwoKT8pLgorICAgIC8vIEZJWE1FOiBXcml0ZSBvcmlnaW5h
dGluZ1VSTFN0cmluZyB0byB0aGUgZmlsZSdzIG9yaWdpbmF0aW5nIFVSTCBtZXRhZGF0YSAocGVy
aGFwcyBGaWxlU3lzdGVtOjpzZXRNZXRhZGF0YVVSTCgpPykuCiAgICAgVU5VU0VEX1BBUkFNKG9y
aWdpbmF0aW5nVVJMU3RyaW5nKTsKIAogICAgIGlmICghc3VnZ2VzdGVkRmlsZW5hbWUuZW5kc1dp
dGhJZ25vcmluZ0FTQ0lJQ2FzZSgiLnBkZiIpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1Bvb2xXaW4uY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3Mvd2luL1dlYlByb2Nlc3NQb29sV2luLmNwcAppbmRleCAxMDE1ZmYwNjA2Y2Y0YmI0Y2Y1
NjJhMDc4OTI4ODczMzY1NmY5ZWQ2Li4zOTBhMGM5MDE5MjE5NDMzYzVmYTQ5ZDNlMzg0NGExYjgz
NTUyOGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViUHJvY2Vz
c1Bvb2xXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJQcm9jZXNz
UG9vbFdpbi5jcHAKQEAgLTI4LDggKzI4LDggQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5o
IgogCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgotI2luY2x1ZGUg
PFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQu
aD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCmluZGV4IGVmNzkxOWM3MjBmZTcx
N2I1OTA5MTliYjg1YjQ1ODE4NWJhNTBmYjEuLjBmOWY5ZDRlZmQ1Mjg2YzYyNjg0M2FjM2EwNGNk
MmU2YmQ5NDk5ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJW
aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKQEAg
LTQ0LDcgKzQ0LDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0JpdG1hcEluZm8uaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0N1cnNvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRWRpdG9yLmg+Ci0jaW5jbHVk
ZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFJlY3QuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0hXbmREQy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5o
PgpAQCAtNTUsNiArNTQsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvV2luZG93c1RvdWNoLmg+CiAj
aW5jbHVkZSA8Y2Fpcm8td2luMzIuaD4KICNpbmNsdWRlIDxjYWlyby5oPgorI2luY2x1ZGUgPHd0
Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL1NvZnRMaW5raW5nLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nQnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRl
ci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd3BlL1dlYlByb2Nlc3NQ
b29sV1BFLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dwZS9XZWJQcm9jZXNzUG9vbFdQ
RS5jcHAKaW5kZXggNjI1NWM0MjdiN2ExYmE1Y2ZlZWQwY2IzN2RlNWMwMmMwYmNjZTVkMS4uZjUx
MDE3YThjYTI5ZWQwNzk5NGQ3ZDIwN2M5NTcxNDExMmEzOGJmNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3Mvd3BlL1dlYlByb2Nlc3NQb29sV1BFLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy93cGUvV2ViUHJvY2Vzc1Bvb2xXUEUuY3BwCkBAIC0zNCwxMCArMzQs
MTAgQEAKICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJXZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2Vz
LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9O
b3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2NoZW1lUmVnaXN0cnkuaD4KICNp
bmNsdWRlIDxjc3RkbGliPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKICNpZiBFTkFC
TEUoUkVNT1RFX0lOU1BFQ1RPUikKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9SZW1vdGVJbnNw
ZWN0b3JTZXJ2ZXIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRFeHRlbnNpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRFeHRlbnNpb25N
YW5hZ2VyLmNwcAppbmRleCBhYWMyODI4MGNhNTIwYmY4Mzk2NWI3OTRjM2UzNGZlYWZjNjFlZTc1
Li40Y2NlYzYyZWYwZTExMzFmYTEzZjdmYjA2MGM4MGUwN2VlNDI1MWFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0RXh0
ZW5zaW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9nbGliL1dlYktpdEV4dGVuc2lvbk1hbmFnZXIuY3BwCkBAIC0yMyw4ICsyMyw4
IEBACiAjaW5jbHVkZSAiQVBJU3RyaW5nLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGUuaCIK
ICNpbmNsdWRlICJXZWJLaXRXZWJFeHRlbnNpb25Qcml2YXRlLmgiCi0jaW5jbHVkZSA8V2ViQ29y
ZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lz
dGVtLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKQEAgLTQxLDkgKzQxLDkgQEAgV2ViS2l0RXh0ZW5zaW9uTWFuYWdlcjo6V2ViS2l0RXh0ZW5z
aW9uTWFuYWdlcigpCiAKIHZvaWQgV2ViS2l0RXh0ZW5zaW9uTWFuYWdlcjo6c2Nhbk1vZHVsZXMo
Y29uc3QgU3RyaW5nJiB3ZWJFeHRlbnNpb25zRGlyZWN0b3J5LCBWZWN0b3I8U3RyaW5nPiYgbW9k
dWxlcykKIHsKLSAgICBWZWN0b3I8U3RyaW5nPiBtb2R1bGVQYXRocyA9IFdlYkNvcmU6OkZpbGVT
eXN0ZW06Omxpc3REaXJlY3Rvcnkod2ViRXh0ZW5zaW9uc0RpcmVjdG9yeSwgU3RyaW5nKCIqLnNv
IikpOworICAgIFZlY3RvcjxTdHJpbmc+IG1vZHVsZVBhdGhzID0gRmlsZVN5c3RlbTo6bGlzdERp
cmVjdG9yeSh3ZWJFeHRlbnNpb25zRGlyZWN0b3J5LCBTdHJpbmcoIiouc28iKSk7CiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtb2R1bGVQYXRocy5zaXplKCk7ICsraSkgewotICAgICAgICBp
ZiAoV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhtb2R1bGVQYXRoc1tpXSkpCisgICAg
ICAgIGlmIChGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG1vZHVsZVBhdGhzW2ldKSkKICAgICAgICAg
ICAgIG1vZHVsZXMuYXBwZW5kKG1vZHVsZVBhdGhzW2ldKTsKICAgICB9CiB9CkBAIC02Myw3ICs2
Myw3IEBAIHN0YXRpYyB2b2lkIHBhcnNlVXNlckRhdGEoQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBT
dHJpbmcmIHdlYkV4dGVuc2lvbnNEaXJlY3RvcnksCiAgICAgR1ZhcmlhbnQqIGRhdGEgPSBudWxs
cHRyOwogICAgIGdfdmFyaWFudF9nZXQodmFyaWFudC5nZXQoKSwgIihtJnNtdikiLCAmZGlyZWN0
b3J5LCAmZGF0YSk7CiAKLSAgICB3ZWJFeHRlbnNpb25zRGlyZWN0b3J5ID0gV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihkaXJlY3RvcnkpOwor
ICAgIHdlYkV4dGVuc2lvbnNEaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKGRpcmVjdG9yeSk7CiAgICAgaW5pdGlhbGl6YXRpb25Vc2VyRGF0
YSA9IGFkb3B0R1JlZihkYXRhKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL2dsaWIvSW5qZWN0ZWRCdW5kbGVHbGliLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9nbGliL0luamVjdGVkQnVuZGxlR2xp
Yi5jcHAKaW5kZXggMGE4NjA2NTJmMDBkYWQ5MzI4Y2YzNTVkNDA1MTNmZTgwZjVlZjY1OC4uNTU3
ZmU2OGRlMTFkYTAyZTA5NjU1YWJiNmJjMzZiYmFjYzJiYjcwMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL2dsaWIvSW5qZWN0ZWRCdW5kbGVHbGli
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvZ2xpYi9J
bmplY3RlZEJ1bmRsZUdsaWIuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAKICNpbmNsdWRlICJXS0J1
bmRsZUFQSUNhc3QuaCIKICNpbmNsdWRlICJXS0J1bmRsZUluaXRpYWxpemUuaCIKLSNpbmNsdWRl
IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3Jh
Z2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1l
ZGlhS2V5U3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IDRiZjQ4ZDBlOTRlZWY3NjA2NmNhMzBlYTlj
ZjM1NzA0YWIzZGVhZWIuLmJkMzk4MjQyNmM2NmU2MzViNmM1NjA1Y2JlNWEzYjA1MDI1ZDNhMWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlh
S2V5U3RvcmFnZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRp
YUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuY3BwCkBAIC0yNyw5ICsyNyw5IEBACiAj
aW5jbHVkZSAiV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5oIgogCiAjaW5jbHVkZSAiV2ViUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1NlY3VyaXR5T3JpZ2luRGF0YS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5j
bHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFt
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBs
dWdpblN0cmVhbS5oCmluZGV4IGJiNmE1YjA4YzdjY2U1ZGRlZDg5OTM2MGY3YWI4MzQwZjAzOTVl
NzQuLjNlZGNlYzZhNzJjY2MzYWE2NGQ4MTlmYTkzMzdmNDNlNjJlN2Q3NmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2lu
U3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
TmV0c2NhcGVQbHVnaW5TdHJlYW0uaApAQCAtMjcsOSArMjcsOSBAQAogCiAjaWYgRU5BQkxFKE5F
VFNDQVBFX1BMVUdJTl9BUEkpCiAKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNp
bmNsdWRlIDxXZWJDb3JlL25wcnVudGltZV9pbnRlcm5hbC5oPgogI2luY2x1ZGUgPG1lbW9yeT4K
KyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC04
OSw3ICs4OSw3IEBAIHByaXZhdGU6CiAgICAgaW50MzJfdCBtX29mZnNldDsKIAogICAgIFN0cmlu
ZyBtX2ZpbGVQYXRoOwotICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRs
ZSBtX2ZpbGVIYW5kbGU7CisgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIG1fZmls
ZUhhbmRsZTsKICAgICAKICAgICAvLyBXaGV0aGVyIE5QUF9OZXdTdHJlYW0gaGFzIHN1Y2Nlc3Nm
dWxseSBiZWVuIGNhbGxlZC4KICAgICBib29sIG1faXNTdGFydGVkOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b24uY3BwCmluZGV4IDAxYzUzZjNkODQzZGQxZDI0MzE0ZjVjYzBjMTJlOTA5NjRlZmJiZTQuLmYy
MDJiZjkwMjg0YWYwNmE1Y2M3YjMyZGI1ZDMwZDMyMDRmMWRhMTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbi5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5j
bHVkZSAiV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU09iamVjdC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUg
PHd0Zi9GaWxlU3lzdGVtLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAKaW5kZXggNDAwZDgz
MjVlZGVlNTdjOGY0NWM2NjhmNTkxZjNlZWYwZGQxZjE3Yy4uZThlODM3N2NkMjY3NjI4ZjI2ODQ0
ZGVlNmE3N2U2MGZlOThlY2FhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNw
cApAQCAtMjgsOSArMjgsOSBAQAogCiAjaW5jbHVkZSAiU2Vzc2lvblN0YXRlLmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9CbG9iRGF0YS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvRm9ybURhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hpc3RvcnlJ
dGVtLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJJbnNwZWN0b3JVSUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViSW5zcGVjdG9yVUlHdGsuY3BwCmluZGV4IDg5YzNi
YTFhYTg5MzljZmE1MWY2ZmIyMjFhNzNiMzhkNzgwMzI3YTMuLmRiYjJhOTE4MDRiZTEzMjY0OGM5
YWQzM2U2ZjAyN2JkZDNmMTEwZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL2d0ay9XZWJJbnNwZWN0b3JVSUd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYkluc3BlY3RvclVJR3RrLmNwcApAQCAtMjgsOCArMjgs
OCBAQAogI2luY2x1ZGUgIldlYkluc3BlY3RvclVJLmgiCiAjaW5jbHVkZSAiUmVtb3RlV2ViSW5z
cGVjdG9yVUkuaCIKIAotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUg
PGdsaWIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9XZWJJbnNwZWN0b3JVSVdpbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93aW4vV2ViSW5zcGVjdG9yVUlXaW4uY3BwCmlu
ZGV4IDZhN2FmM2M1ZDY0OWM1MDRlZWRhZDQ5YzkxYTFmYjQ0MzVlNGExOGMuLjQ3MTExNGNhZmEx
NGE3ZDFmMzNmZmEyYzFlOGFmYmJiZWQyZTAzYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9XZWJJbnNwZWN0b3JVSVdpbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL1dlYkluc3BlY3RvclVJV2luLmNwcApAQCAt
MjgsOCArMjgsOCBAQAogCiAjaW5jbHVkZSAiUmVtb3RlV2ViSW5zcGVjdG9yVUkuaCIKIAotI2lu
Y2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvV2ViQ29yZUJ1
bmRsZVdpbi5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KaW5kZXggYTQ0NjgxYzc3Mjcx
YzA0YTc5NmYwN2JiY2NhYzNiZWNjNDgxZjc1YS4uMzVkNTdkNWNlNjdiNjU4NzYwNzkzZGNjN2M0
MDkxNjlmODU4MGFmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29h
L1dlYlByb2Nlc3NDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2Ev
V2ViUHJvY2Vzc0NvY29hLm1tCkBAIC01MSw3ICs1MSw2IEBACiAjaW1wb3J0IDxXZWJDb3JlL0FY
T2JqZWN0Q2FjaGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ1BVTW9uaXRvci5oPgogI2ltcG9ydCA8
V2ViQ29yZS9EaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyLmg+Ci0jaW1wb3J0IDxXZWJDb3Jl
L0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPFdlYkNvcmUvRm9udENhY2hlLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0ZvbnRDYXNjYWRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hpc3RvcnlDb250cm9sbGVy
Lmg+CkBAIC03Miw2ICs3MSw3IEBACiAjaW1wb3J0IDxwYWwvc3BpL21hYy9OU0FjY2Vzc2liaWxp
dHlTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvbWFjL05TQXBwbGljYXRpb25TUEkuaD4KICNpbXBv
cnQgPHN0ZGlvLmg+CisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8d3RmL2Nv
Y29hL05TVVJMRXh0cmFzLmg+CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcAppbmRleCA0MDM5OTYw
YjE0MGZjYjljNjNhNzZkNmQwNzcxM2EzYTMxODJjNWE0Li4xN2Q0ODk0OTRkN2UwOTBkM2ZmNzM1
ZWZmMjY0NDVlZmVjNmI5Mjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3Jh
Z2UvU3RvcmFnZUFyZWFTeW5jLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2Uv
U3RvcmFnZUFyZWFTeW5jLmNwcApAQCAtMjgsMTEgKzI4LDExIEBACiAjaW5jbHVkZSAiU3RvcmFn
ZUFyZWFJbXBsLmgiCiAjaW5jbHVkZSAiU3RvcmFnZVN5bmNNYW5hZ2VyLmgiCiAjaW5jbHVkZSAi
U3RvcmFnZVRyYWNrZXIuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1NRTGl0ZURhdGFiYXNlVHJhY2tlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U1FMaXRlU3RhdGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVUcmFuc2FjdGlvbi5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU3VkZGVuVGVybWluYXRpb24uaD4KKyNpbmNsdWRlIDx3dGYv
RmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0
b3JhZ2VTeW5jTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFn
ZVN5bmNNYW5hZ2VyLmNwcAppbmRleCAzZThmZjY1ZWU2MGYyNzRkYzkwNGViNThjMTE3NGVkNWNj
MWE1NzRjLi4zNjkwOTVjZGFkMWQzNDcxMWEwNjc2ZDg3MzZhOTBlMTkzZTI5MDVlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmNwcApA
QCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgIlN0b3JhZ2VTeW5jTWFuYWdlci5oIgogCiAjaW5j
bHVkZSAiU3RvcmFnZVRocmVhZC5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgor
I2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCmluZGV4IDcxMDE0MGIxYjEzM2EyZWI1OTM5NmQ3
Njc0ODZkMjE4M2VjOTA0ODQuLmI5MzRkMWEzYjFiYWE4MzFhZGRmM2FiZTVlMDc3MGFiMWNmNzdm
YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNw
cApAQCAtMjgsMTMgKzI4LDEzIEBACiAjaW5jbHVkZSAiU3RvcmFnZVRocmVhZC5oIgogI2luY2x1
ZGUgIlN0b3JhZ2VUcmFja2VyQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViU3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9QYWdlR3JvdXAuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZURhdGFiYXNlVHJh
Y2tlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlU3RhdGVtZW50Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmln
aW5EYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0RW5jb2RpbmcuaD4KKyNpbmNsdWRlIDx3
dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8
d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNGaWxlTWFuYWdlckV4dHJhcy5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNGaWxlTWFuYWdlckV4dHJhcy5tbQpp
bmRleCA5MDUxNzRkYTc1NmRkNjI4YmVkZWZkNTBjMmIyMzcyOWU1MzM1MDJiLi5jNTQxM2U4MWM2
YTNlY2IyZWM5NzgxZjZiOGJmZDZjMmIyYTA1ZGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9NaXNjL1dlYk5TRmlsZU1hbmFnZXJFeHRyYXMubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU0ZpbGVNYW5hZ2VyRXh0cmFzLm1tCkBAIC0zMCwxMCAr
MzAsMTAgQEAKIAogI2ltcG9ydCAiV2ViS2l0TlNTdHJpbmdFeHRyYXMuaCIKICNpbXBvcnQgIldl
Yk5TVVJMRXh0cmFzLmgiCi0jaW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQg
PFdlYkNvcmUvTG9hZGVyTlNVUkxFeHRyYXMuaD4KICNpbXBvcnQgPHN5cy9zdGF0Lmg+CiAjaW1w
b3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgorI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbXBv
cnQgPHd0Zi9PYmpDUnVudGltZUV4dHJhcy5oPgogCiBAaW1wbGVtZW50YXRpb24gTlNGaWxlTWFu
YWdlciAoV2ViTlNGaWxlTWFuYWdlckV4dHJhcykKQEAgLTQ0LDcgKzQ0LDcgQEAgLSAodm9pZClf
d2Via2l0X3NldE1ldGFkYXRhVVJMOihOU1N0cmluZyAqKVVSTFN0cmluZyByZWZlcnJlcjooTlNT
dHJpbmcgKilyZWZlcnIKIHsKICAgICBBU1NFUlQoVVJMU3RyaW5nKTsKICAgICBBU1NFUlQocGF0
aCk7Ci0gICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6c2V0TWV0YWRhdGFVUkwocGF0aCwgVVJMU3Ry
aW5nLCByZWZlcnJlcik7CisgICAgRmlsZVN5c3RlbTo6c2V0TWV0YWRhdGFVUkwocGF0aCwgVVJM
U3RyaW5nLCByZWZlcnJlcik7CiB9CiAKICNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkK
QEAgLTkzLDcgKzkzLDcgQEAgLSAoTlNTdHJpbmcgKilfd2Via2l0X3BhdGhXaXRoVW5pcXVlRmls
ZW5hbWVGb3JQYXRoOihOU1N0cmluZyAqKXBhdGgKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
LSAoTlNTdHJpbmcgKilfd2Via2l0X2NyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeVdpdGhUZW1wbGF0
ZVByZWZpeDooTlNTdHJpbmcgKilwcmVmaXgKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5
c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KHByZWZpeCk7CisgICAgcmV0dXJuIEZpbGVT
eXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShwcmVmaXgpOwogfQogI2VuZGlmCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VQcm92
aWRlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VQcm92
aWRlci5tbQppbmRleCA3NDk1YjE3NWZmZjQ1ZGM1YTU0YjAxNGY4ZDViZjAzZTU0Mzk0M2NjLi5h
ZGM0YzM5ODg0YzRjYjJkMmEzYmViNmIxOTViY2RhMDAwODljMTcxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlUHJvdmlkZXIubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZVByb3ZpZGVyLm1tCkBA
IC0yNiwxNiArMjYsMTYgQEAKICNpbXBvcnQgIldlYkRhdGFiYXNlUHJvdmlkZXIuaCIKICNpbXBv
cnQgIldlYkRhdGFiYXNlTWFuYWdlclByaXZhdGUuaCIKIAotI2ltcG9ydCA8V2ViQ29yZS9GaWxl
U3lzdGVtLmg+CisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogCiBTdHJpbmcgV2ViRGF0YWJh
c2VQcm92aWRlcjo6aW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5UGF0aCgpCiB7CiAgICAgTlNVc2Vy
RGVmYXVsdHMgKmRlZmF1bHRzID0gW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRz
XTsKICAgICBOU1N0cmluZyAqZGF0YWJhc2VzRGlyZWN0b3J5ID0gW2RlZmF1bHRzIG9iamVjdEZv
cktleTpXZWJEYXRhYmFzZURpcmVjdG9yeURlZmF1bHRzS2V5XTsKICAgICBpZiAoIWRhdGFiYXNl
c0RpcmVjdG9yeSB8fCAhW2RhdGFiYXNlc0RpcmVjdG9yeSBpc0tpbmRPZkNsYXNzOltOU1N0cmlu
ZyBjbGFzc11dKQotICAgICAgICBkYXRhYmFzZXNEaXJlY3RvcnkgPSBXZWJDb3JlOjpGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoIn4vTGlicmFyeS9XZWJLaXQvRGF0YWJhc2Vz
L19fX0luZGV4ZWREQiJfcywgW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlmaWVy
XSk7CisgICAgICAgIGRhdGFiYXNlc0RpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudCgifi9MaWJyYXJ5L1dlYktpdC9EYXRhYmFzZXMvX19fSW5kZXhlZERCIl9z
LCBbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdKTsKICAgICBlbHNlCi0g
ICAgICAgIGRhdGFiYXNlc0RpcmVjdG9yeSA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZXNEaXJlY3RvcnksICJfX19JbmRleGVkREIiX3MpOwor
ICAgICAgICBkYXRhYmFzZXNEaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQoZGF0YWJhc2VzRGlyZWN0b3J5LCAiX19fSW5kZXhlZERCIl9zKTsKICAgICAKICAg
ICByZXR1cm4gW2RhdGFiYXNlc0RpcmVjdG9yeSBzdHJpbmdCeVN0YW5kYXJkaXppbmdQYXRoXTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCA4NWVh
YjQ4NTk2NzlkYjFmZTBlOTM4YWIzOTU4YjViYjEzYWExOTU0Li5iMWI4OGMzZTYzNDJkZjljZmJj
MDhhYzYwOTFlMzAyMjFlNGEyMDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJWaWV3Lm1tCkBAIC0xNDgsNyArMTQ4LDYgQEAKICNpbXBvcnQgPFdlYkNvcmUvRWRpdG9y
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0V2ZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0V2ZW50SGFu
ZGxlci5oPgotI2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0ZvY3VzQ29udHJvbGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9Gb250QXR0cmlidXRlcy5oPgog
I2ltcG9ydCA8V2ViQ29yZS9Gb250Q2FjaGUuaD4KQEAgLTIzMSw2ICsyMzAsNyBAQAogI2ltcG9y
dCA8cGFsL3NwaS9tYWMvTlNTcGVsbENoZWNrZXJTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvbWFj
L05TV2luZG93U1BJLmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgorI2ltcG9ydCA8d3Rm
L0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0Zi9IYXNoVHJhaXRzLmg+CiAjaW1wb3J0IDx3dGYv
TWFpblRocmVhZC5oPgogI2ltcG9ydCA8d3RmL09iakNSdW50aW1lRXh0cmFzLmg+CkBAIC02ODky
LDcgKzY4OTIsNyBAQCAtIChCT09MKXBlcmZvcm1EcmFnT3BlcmF0aW9uOihpZCA8TlNEcmFnZ2lu
Z0luZm8+KWRyYWdnaW5nSW5mbwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9
CiAKLSAgICAgICAgTlNTdHJpbmcgKmRyb3BEZXN0aW5hdGlvblBhdGggPSBXZWJDb3JlOjpGaWxl
U3lzdGVtOjpjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoQCJXZWJLaXREcm9wRGVzdGluYXRpb24i
KTsKKyAgICAgICAgTlNTdHJpbmcgKmRyb3BEZXN0aW5hdGlvblBhdGggPSBGaWxlU3lzdGVtOjpj
cmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoQCJXZWJLaXREcm9wRGVzdGluYXRpb24iKTsKICAgICAg
ICAgaWYgKCFkcm9wRGVzdGluYXRpb25QYXRoKSB7CiAgICAgICAgICAgICBkZWxldGUgZHJhZ0Rh
dGE7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCmluZGV4IGJjNzlkODliZDQ0NmM1NmVh
MWJhOWQ1N2M3NWFlMzk5YWE4ZjA0Y2YuLmJiZWJlMTg3ZWRmMzRiN2I3ZWMyMDA4ZWQxZmFkZDM1
OTI2NTk2MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1
Z2luRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1
Z2luRGF0YWJhc2UuY3BwCkBAIC0zMyw3ICszMyw4IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9NRVRBREFUQV9DQUNIRSkKLSNp
bmNsdWRlICJGaWxlU3lzdGVtLmgiCisKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2Vu
ZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1BsdWdpbnMvUGx1Z2luUGFja2FnZS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
UGx1Z2lucy9QbHVnaW5QYWNrYWdlLmgKaW5kZXggYjQ4ODNkZWE5OTc2ZGI1MGNkZTUyODYwYWE5
YjkyYjViYjEwMTBkZi4uODk4N2EzZDM1M2M3NmMwYWE0NDZlYWIzOTA4MzczMzM5ZDUxN2QzMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5QYWNrYWdl
LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5QYWNrYWdlLmgK
QEAgLTI5LDggKzI5LDggQEAKIAogI2luY2x1ZGUgIlBsYXRmb3JtTW9kdWxlLmgiCiAjaW5jbHVk
ZSAiUGx1Z2luUXVpcmtTZXQuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vUGx1Z2lucy9QbHVnaW5TdHJlYW0uaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1BsdWdpbnMvUGx1Z2luU3RyZWFtLmgKaW5kZXggYzFiOWY4N2FjNGU2MjJmYmIyZTJlMjA1ZDE2
NDU5YzBjMTk0ZTdiNi4uNDMxYjM2MzAzNjJjOWU1MjExMThkZDAzMjczYTZjZDljMjhjYzQ2NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5TdHJlYW0u
aAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblN0cmVhbS5oCkBA
IC0yNywxMiArMjcsMTIgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiUGx1Z2luUXVpcmtT
ZXQuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJj
ZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1RpbWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9ucHJ1bnRpbWVfaW50ZXJu
YWwuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcHBsaWNhdGlvbkNhY2hlLmNw
cCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFwcGxpY2F0aW9uQ2FjaGUuY3BwCmluZGV4
IGI4NWRkMTU0NDBhNmVhNTQwNGE4YTQ4NTIxNDNlNTkxNzhmZWMxMmQuLjkwYmUxZmNlNzUxYjRm
MWI1ZDk0YjFiYjY3NGMzNmIzZWM1NjlmY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkFwcGxpY2F0aW9uQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkFwcGxpY2F0aW9uQ2FjaGUuY3BwCkBAIC0zMCwxMyArMzAsMTMgQEAKICNpbmNsdWRl
ICJNYXJzaGFsbGluZ0hlbHBlcnMuaCIKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlcy5oIgogI2lu
Y2x1ZGUgIldlYlNlY3VyaXR5T3JpZ2luLmgiCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvQXBwbGljYXRpb25DYWNoZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NPTVB0ci5oPgot
I2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJp
dHlPcmlnaW4uaD4KICNpbmNsdWRlIDxjb211dGlsLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0
ZW0uaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhYmFzZU1h
bmFnZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNw
cAppbmRleCAzZjZjMzhiMDYyOGRiNGJhY2Y5YzQxMzU3YjU5MWE3ZGVjOWFjZDQxLi5mOTk2M2Yx
YzA2ODk2ZDdhMmNiMmQ3MzNhMThlZmFhYWYzY2U0ODA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAKQEAgLTM5LDkgKzM5LDkgQEAKICNpbmNs
dWRlIDxXZWJDb3JlL0NPTVB0ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGF0YWJhc2VNYW5hZ2Vy
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EYXRhYmFzZVRyYWNrZXIuaD4KLSNpbmNsdWRlIDxXZWJD
b3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KKyNpbmNsdWRlIDx3dGYvRmls
ZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAKICNpZiBFTkFCTEUoSU5E
RVhFRF9EQVRBQkFTRSkKQEAgLTQzNiw3ICs0MzYsNyBAQCBzdGF0aWMgV1RGOjpTdHJpbmcgZGF0
YWJhc2VzRGlyZWN0b3J5KCkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PENGU3RyaW5nUmVm
PihkaXJlY3RvcnlQcmVmLmdldCgpKTsKICNlbmRpZgogCi0gICAgcmV0dXJuIFdlYkNvcmU6OkZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjps
b2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkRhdGFiYXNlcyIpOworICAgIHJl
dHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9j
YWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJEYXRhYmFzZXMiKTsKIH0KIAogdm9p
ZCBXZWJLaXRJbml0aWFsaXplV2ViRGF0YWJhc2VzSWZOZWNlc3NhcnkoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWRDdXJsLmNwcCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkRvd25sb2FkQ3VybC5jcHAKaW5kZXggMjBkNGY0MDgzNWY3MjQxMzhm
MTcyM2E4ZGMyZjk0Yjg5NTJlZWVkNy4uOTliNjI3ZjFhYWMwM2FlZGY1MDY4N2ZjN2YzMzZiYjk1
ZDljZGQyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWRD
dXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZEN1cmwuY3Bw
CkBAIC0zNSwyMiArMzUsMTkgQEAKICNpbmNsdWRlICJXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZS5oIgogI2luY2x1ZGUgIldlYlVSTENyZWRlbnRpYWwuaCIKICNpbmNsdWRlICJXZWJVUkxS
ZXNwb25zZS5oIgotCi0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotCi0jaW5jbHVkZSA8
aW8uaD4KLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotCiAj
aW5jbHVkZSA8V2ViQ29yZS9CU3RyaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DdXJsRG93bmxv
YWQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVz
b3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9UZXh0RW5jb2RpbmcuaD4KKyNpbmNsdWRlIDxpby5oPgorI2luY2x1
ZGUgPHN5cy9zdGF0Lmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8d3RmL0Zp
bGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQ
cmVmZXJlbmNlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5j
cHAKaW5kZXggNTliZTBjNDQzZjRmZDY2NThiODQxOGI1Y2EzMzE0MTAyOTBjMTVmZC4uMjE1MDVk
NThjNzQ1MzhkNDQwYThjMTJkMTdlODljNTU2MTQyMzJiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcApAQCAtMzcsMTMgKzM3LDEzIEBACiAKICNpbmNsdWRl
IDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ09N
UHRyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9Gb250Q2FzY2FkZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTG9jYWxpemVkU3RyaW5ncy5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CiAjaW5jbHVkZSA8bGlt
aXRzPgogI2luY2x1ZGUgPHNobG9iai5oPgogI2luY2x1ZGUgPHdjaGFyLmg+CisjaW5jbHVkZSA8
d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViVmlldy5jcHAKaW5kZXggZmViMmRmM2RkNDc2MDllMWIzZjY0MDllY2Qy
NjBkMjhkMjI4ZGJhOC4uNWVjZTgwNjQwZGRlN2NjZjJlYWZjMjY0ZWMwODE3ZGNjMGE4MDMzOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKQEAgLTk2LDcgKzk2LDYgQEAKICNpbmNs
dWRlIDxXZWJDb3JlL0VkaXRvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRXZlbnRIYW5kbGVyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9FdmVudE5hbWVzLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9GaWxl
U3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFF1YWQuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0ZvY3VzQ29udHJvbGxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRm9udC5oPgpAQCAtMTcx
LDYgKzE3MCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dzVG91Y2guaD4KICNpbmNsdWRl
IDxjb21kZWYuaD4KICNpbmNsdWRlIDxkMmQxLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0u
aD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9Qcm9jZXNzUHJp
dmlsZWdlLmg+CiAjaW5jbHVkZSA8d3RmL1JBTVNpemUuaD4KQEAgLTUxMyw3ICs1MTMsNyBAQCB2
b2lkIFdlYlZpZXc6OnNldENhY2hlTW9kZWwoV2ViQ2FjaGVNb2RlbCBjYWNoZU1vZGVsKQogICAg
ICAgICBpZiAocHJlZmVyZW5jZSAmJiAoQ0ZTdHJpbmdHZXRUeXBlSUQoKSA9PSBDRkdldFR5cGVJ
RChwcmVmZXJlbmNlLmdldCgpKSkpCiAgICAgICAgICAgICBjZnVybENhY2hlRGlyZWN0b3J5ID0g
YWRvcHRDRihzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4ocHJlZmVyZW5jZS5sZWFrUmVmKCkpKTsK
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgY2Z1cmxDYWNoZURpcmVjdG9yeSA9IFdlYkNvcmU6
OkZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLmNyZWF0ZUNG
U3RyaW5nKCk7CisgICAgICAgICAgICBjZnVybENhY2hlRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6
bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCkuY3JlYXRlQ0ZTdHJpbmcoKTsKICAg
ICB9CiAgICAgY2FjaGVEaXJlY3RvcnkgPSBTdHJpbmcoY2Z1cmxDYWNoZURpcmVjdG9yeS5nZXQo
KSk7CiAgICAgQ0ZJbmRleCBjYWNoZU1lbW9yeUNhcGFjaXR5ID0gMDsKZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlMWFiZWI3MGRiNzI0NzAxYjcy
YmY4YmNhN2YxNDZlOWRmN2ZkMzU5Li5iYzNhZTc5YzllZjM0MjViNDQ3ZTRhMzE5MTk0NWE0MTE4
OTZjOGY1IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjUgQEAKKzIwMTktMDEtMTggIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNs
aW5nQHNvbnkuY29tPgorCisgICAgICAgIE1vdmUgRmlsZVN5c3RlbSB0byBXVEYKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzYwMgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
d2luL0R1bXBSZW5kZXJUcmVlLmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0NNYWtlTGlz
dHMudHh0OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvUGxhdGZvcm1HVEsuY21ha2U6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVdQRS5jbWFrZToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcDogUmVuYW1lZCBmcm9tIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlU3lzdGVtLmNwcC4KKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZU1vbml0b3IuY3BwOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TZWN1cml0eU9yaWdpbi5jcHA6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuY3BwOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9EYXRhYmFzZVRyYWNrZXJU
ZXN0Lm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jdXJsL0Nvb2tp
ZXMuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxv
YWQubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9h
ZFByb2dyZXNzLm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvd2luL1BsYXRmb3JtVXRpbGl0
aWVzV2luLmNwcDoKKwogMjAxOS0wMS0xOCAgQWFrYXNoIEphaW4gIDxhYWthc2hfamFpbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgW2V3cy1hcHBdIFNlbmQgcGF0Y2ggYXV0aG9yIGFzIGEgYnVpbGQg
cHJvcGVydHkKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVy
VHJlZS5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCmlu
ZGV4IGE0YjVjNzcwNzA4OTBhNWNmMTQyZDJkOWM4YjNjMzM4NjQ4M2U2ZWQuLmEwYjY4NWM3NWY5
ZGFmMGZlYjdlYWFlMWJiMzJhMmU5NTJkMjI2ZjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
d2luL0R1bXBSZW5kZXJUcmVlLmNwcApAQCAtNDYsNyArNDYsNiBAQAogCiAjaW5jbHVkZSA8Q29y
ZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9U
ZXN0UnVubmVyVXRpbHMuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNs
dWRlIDxXZWJLaXRMZWdhY3kvV2ViS2l0Lmg+CiAjaW5jbHVkZSA8V2ViS2l0TGVnYWN5L1dlYktp
dENPTUFQSS5oPgogI2luY2x1ZGUgPGNvbXV0aWwuaD4KQEAgLTYwLDYgKzU5LDcgQEAKICNpbmNs
dWRlIDxzaGx3YXBpLmg+CiAjaW5jbHVkZSA8dGNoYXIuaD4KICNpbmNsdWRlIDx3aW5kb3dzLmg+
CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgog
I2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KQEAgLTIyMiw3ICsyMjIsNyBAQCBzdGF0aWMgU3RyaW5nIGxpYnJhcnlQYXRoRm9yRHVtcFJl
bmRlclRyZWUoKQogICAgICAgICByZXR1cm4gU3RyaW5nIChwYXRoLmRhdGEoKSwgcGF0aC5sZW5n
dGgoKSk7CiAgICAgfQogCi0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmxvY2FsVXNl
clNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpsb2Nh
bFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKTsKIH0KICNlbmRpZgogCkBAIC05MzEsOSAr
OTMxLDkgQEAgc3RhdGljIHZvaWQgc2V0RGVmYXVsdHNUb0NvbnNpc3RlbnRWYWx1ZXNGb3JUZXN0
aW5nKCkKICAgICBTdHJpbmcgbGlicmFyeVBhdGggPSBsaWJyYXJ5UGF0aEZvckR1bXBSZW5kZXJU
cmVlKCk7CiAKICAgICAvLyBTZXQgdXAgdGhlc2UgdmFsdWVzIGJlZm9yZSBjcmVhdGluZyB0aGUg
V2ViVmlldyBzbyB0aGF0IHRoZSB2YXJpb3VzIGluaXRpYWxpemF0aW9ucyB3aWxsIHNlZSB0aGVz
ZSBwcmVmZXJyZWQgdmFsdWVzLgotICAgIENGUHJlZmVyZW5jZXNTZXRBcHBWYWx1ZShXZWJEYXRh
YmFzZURpcmVjdG9yeURlZmF1bHRzS2V5LCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQobGlicmFyeVBhdGgsICJEYXRhYmFzZXMiKS5jcmVhdGVDRlN0cmluZygp
LmdldCgpLCBhcHBJZC5nZXQoKSk7Ci0gICAgQ0ZQcmVmZXJlbmNlc1NldEFwcFZhbHVlKFdlYlN0
b3JhZ2VEaXJlY3RvcnlEZWZhdWx0c0tleSwgV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KGxpYnJhcnlQYXRoLCAiTG9jYWxTdG9yYWdlIikuY3JlYXRlQ0ZTdHJp
bmcoKS5nZXQoKSwgYXBwSWQuZ2V0KCkpOwotICAgIENGUHJlZmVyZW5jZXNTZXRBcHBWYWx1ZShX
ZWJLaXRMb2NhbENhY2hlRGVmYXVsdHNLZXksIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChsaWJyYXJ5UGF0aCwgIkxvY2FsQ2FjaGUiKS5jcmVhdGVDRlN0cmlu
ZygpLmdldCgpLCBhcHBJZC5nZXQoKSk7CisgICAgQ0ZQcmVmZXJlbmNlc1NldEFwcFZhbHVlKFdl
YkRhdGFiYXNlRGlyZWN0b3J5RGVmYXVsdHNLZXksIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChsaWJyYXJ5UGF0aCwgIkRhdGFiYXNlcyIpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0
KCksIGFwcElkLmdldCgpKTsKKyAgICBDRlByZWZlcmVuY2VzU2V0QXBwVmFsdWUoV2ViU3RvcmFn
ZURpcmVjdG9yeURlZmF1bHRzS2V5LCBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQobGlicmFyeVBhdGgsICJMb2NhbFN0b3JhZ2UiKS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBh
cHBJZC5nZXQoKSk7CisgICAgQ0ZQcmVmZXJlbmNlc1NldEFwcFZhbHVlKFdlYktpdExvY2FsQ2Fj
aGVEZWZhdWx0c0tleSwgRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGxpYnJh
cnlQYXRoLCAiTG9jYWxDYWNoZSIpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGFwcElkLmdldCgp
KTsKICNlbmRpZgogfQogCkBAIC0xMDM1LDcgKzEwMzUsNyBAQCBzdGF0aWMgdm9pZCBzaXplV2Vi
Vmlld0ZvckN1cnJlbnRUZXN0KCkKIAogc3RhdGljIFN0cmluZyBmaW5kRm9udEZhbGxiYWNrKGNv
bnN0IGNoYXIqIHBhdGhPclVybCkKIHsKLSAgICBTdHJpbmcgcGF0aFRvRm9udEZhbGxiYWNrID0g
V2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShwYXRoT3JVcmwpOworICAgIFN0cmlu
ZyBwYXRoVG9Gb250RmFsbGJhY2sgPSBGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKHBhdGhPclVy
bCk7CiAKICAgICB3Y2hhcl90IGZ1bGxQYXRoW19NQVhfUEFUSF07CiAgICAgaWYgKCFfd2Z1bGxw
YXRoKGZ1bGxQYXRoLCBwYXRoVG9Gb250RmFsbGJhY2suY2hhcmFjdGVyc1dpdGhOdWxsVGVybWlu
YXRpb24oKS5kYXRhKCksIF9NQVhfUEFUSCkpCkBAIC0xMDU0LDIwICsxMDU0LDIwIEBAIHN0YXRp
YyBTdHJpbmcgZmluZEZvbnRGYWxsYmFjayhjb25zdCBjaGFyKiBwYXRoT3JVcmwpCiAgICAgICAg
IHJldHVybiBlbXB0eVN0cmluZygpOwogCiAgICAgU3RyaW5nIHBhdGhUb1Rlc3QgPSBwYXRoVG9D
aGVjay5zdWJzdHJpbmcobG9jYXRpb24gKyBsYXlvdXRUZXN0cy5sZW5ndGgoKSArIDEpOwotICAg
IFN0cmluZyBwb3NzaWJsZVBhdGhUb0xvZ3VlID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KHBhdGhUb0NoZWNrLnN1YnN0cmluZygwLCBsb2NhdGlvbiArIGxh
eW91dFRlc3RzLmxlbmd0aCgpICsgMSksICJwbGF0Zm9ybVxcd2luIik7CisgICAgU3RyaW5nIHBv
c3NpYmxlUGF0aFRvTG9ndWUgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
cGF0aFRvQ2hlY2suc3Vic3RyaW5nKDAsIGxvY2F0aW9uICsgbGF5b3V0VGVzdHMubGVuZ3RoKCkg
KyAxKSwgInBsYXRmb3JtXFx3aW4iKTsKIAogICAgIFZlY3RvcjxTdHJpbmc+IHBvc3NpYmxlUGF0
aHM7Ci0gICAgcG9zc2libGVQYXRocy5hcHBlbmQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KHBvc3NpYmxlUGF0aFRvTG9ndWUsIHBhdGhUb1Rlc3QpKTsKKyAg
ICBwb3NzaWJsZVBhdGhzLmFwcGVuZChGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQocG9zc2libGVQYXRoVG9Mb2d1ZSwgcGF0aFRvVGVzdCkpOwogCiAgICAgc2l6ZV90IG5leHRD
YW5kaWRhdGVFbmQgPSBwYXRoVG9UZXN0LnJldmVyc2VGaW5kKCdcXCcpOwogICAgIHdoaWxlIChu
ZXh0Q2FuZGlkYXRlRW5kICYmIG5leHRDYW5kaWRhdGVFbmQgIT0gV1RGOjpub3RGb3VuZCkgewog
ICAgICAgICBwYXRoVG9UZXN0ID0gcGF0aFRvVGVzdC5zdWJzdHJpbmcoMCwgbmV4dENhbmRpZGF0
ZUVuZCk7Ci0gICAgICAgIHBvc3NpYmxlUGF0aHMuYXBwZW5kKFdlYkNvcmU6OkZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwb3NzaWJsZVBhdGhUb0xvZ3VlLCBwYXRoVG9UZXN0
KSk7CisgICAgICAgIHBvc3NpYmxlUGF0aHMuYXBwZW5kKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChwb3NzaWJsZVBhdGhUb0xvZ3VlLCBwYXRoVG9UZXN0KSk7CiAgICAgICAg
IG5leHRDYW5kaWRhdGVFbmQgPSBwYXRoVG9UZXN0LnJldmVyc2VGaW5kKCdcXCcpOwogICAgIH0K
IAogICAgIGZvciAoVmVjdG9yPFN0cmluZz46Oml0ZXJhdG9yIHBvcyA9IHBvc3NpYmxlUGF0aHMu
YmVnaW4oKTsgcG9zICE9IHBvc3NpYmxlUGF0aHMuZW5kKCk7ICsrcG9zKSB7Ci0gICAgICAgIHBh
dGhUb0ZvbnRGYWxsYmFjayA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudCgqcG9zLCAicmVzb3VyY2VzXFwiKTsKKyAgICAgICAgcGF0aFRvRm9udEZhbGxiYWNr
ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KCpwb3MsICJyZXNvdXJjZXNc
XCIpOwogCiAgICAgICAgIGlmICg6OlBhdGhJc0RpcmVjdG9yeVcocGF0aFRvRm9udEZhbGxiYWNr
LmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSkKICAgICAgICAgICAgIHJl
dHVybiBwYXRoVG9Gb250RmFsbGJhY2s7CkBAIC0xMDgxLDcgKzEwODEsNyBAQCBzdGF0aWMgdm9p
ZCBhZGRGb250RmFsbGJhY2tJZlByZXNlbnQoY29uc3QgU3RyaW5nJiBmb250RmFsbGJhY2tQYXRo
KQogICAgIGlmIChmb250RmFsbGJhY2tQYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgU3RyaW5nIGZvbnRGYWxsYmFjayA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChmb250RmFsbGJhY2tQYXRoLCAiTWFjLWNvbXBhdGlibGUtZm9udC1m
YWxsYmFjay5jc3MiKTsKKyAgICBTdHJpbmcgZm9udEZhbGxiYWNrID0gRmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGZvbnRGYWxsYmFja1BhdGgsICJNYWMtY29tcGF0aWJsZS1m
b250LWZhbGxiYWNrLmNzcyIpOwogCiAgICAgaWYgKCE6OlBhdGhGaWxlRXhpc3RzVyhmb250RmFs
bGJhY2suY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpKQogICAgICAgICBy
ZXR1cm47CkBAIC0xMDk0LDcgKzEwOTQsNyBAQCBzdGF0aWMgdm9pZCByZW1vdmVGb250RmFsbGJh
Y2tJZlByZXNlbnQoY29uc3QgU3RyaW5nJiBmb250RmFsbGJhY2tQYXRoKQogICAgIGlmIChmb250
RmFsbGJhY2tQYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3RyaW5nIGZv
bnRGYWxsYmFjayA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChmb250RmFsbGJhY2tQYXRoLCAiTWFjLWNvbXBhdGlibGUtZm9udC1mYWxsYmFjay5jc3MiKTsK
KyAgICBTdHJpbmcgZm9udEZhbGxiYWNrID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KGZvbnRGYWxsYmFja1BhdGgsICJNYWMtY29tcGF0aWJsZS1mb250LWZhbGxiYWNrLmNz
cyIpOwogCiAgICAgaWYgKCE6OlBhdGhGaWxlRXhpc3RzVyhmb250RmFsbGJhY2suY2hhcmFjdGVy
c1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0IGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9DTWFrZUxpc3RzLnR4dAppbmRleCBiMjQ5MDA4OThiM2ZjNWFmODljNDkwMzM4MGMzZmQ3
YzFkYzBkNzA1Li40MTBhNDlmYTQ5Yzc1MmM4YmZjYmQ2YWFlNjMwYWQyYjM2NmUwMTI4IDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKQEAgLTEyMiw2ICsxMjIsNyBAQCBzZXQoVGVzdFdU
Rl9TT1VSQ0VTCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL0RhdGVNYXRoLmNw
cAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9EZXF1ZS5jcHAKICAgICAke1RF
U1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvRW51bVRyYWl0cy5jcHAKKyAgICAke1RFU1RXRUJL
SVRBUElfRElSfS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAKICAgICAke1RFU1RXRUJLSVRBUElf
RElSfS9UZXN0cy9XVEYvRXhwZWN0ZWQuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVz
dHMvV1RGL0Z1bmN0aW9uLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9I
YXNoQ291bnRlZFNldC5jcHAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZv
cm1HVEsuY21ha2UgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4
IGMzNGZhZTA3Y2YzYzZiMGEzOWMzOTlmZWUzMmNkMjVjM2EwYWE3ZjQuLmNlODIxZTYxYjA1NjQz
NWIyZWVlZTVlMGU1NmJhMjM1NzcyNTg4NWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUdU
Sy5jbWFrZQpAQCAtOTMsNyArOTMsNiBAQCBhZGRfZXhlY3V0YWJsZShUZXN0V2ViQ29yZQogICAg
ICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUvQ29tcGxleFRleHRDb250cm9sbGVy
LmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUvRE5TLmNwcAogICAg
ICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUvRmlsZU1vbml0b3IuY3BwCi0gICAg
JHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV2ViQ29yZS9GaWxlU3lzdGVtLmNwcAogICAgICR7
VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUvZ3N0cmVhbWVyL0dzdE1hcHBlZEJ1ZmZl
ci5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL2dzdHJlYW1lci9H
U3RyZWFtZXJUZXN0LmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUv
R3JpZFBvc2l0aW9uLmNwcApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9y
bVdQRS5jbWFrZSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1XUEUuY21ha2UKaW5kZXgg
YjY4Nzc1OThkODc3ZGU2YzhkYTg2YjRlYjU3Y2M4NmZmMGEyZjdlZi4uNDI2N2RhMjBkMDcwYzQ3
YmM4MWU0NmVjMmI3ZjJkMTNjMDc5OWQ3NiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9QbGF0Zm9ybVdQRS5jbWFrZQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtV1BF
LmNtYWtlCkBAIC02MCw3ICs2MCw2IEBAIGFkZF9leGVjdXRhYmxlKFRlc3RXZWJDb3JlCiAgICAg
JHtURVNUV0VCS0lUQVBJX0RJUn0vZ2xpYi9VdGlsaXRpZXNHTGliLmNwcAogICAgICR7VEVTVFdF
QktJVEFQSV9ESVJ9L1Rlc3RzQ29udHJvbGxlci5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElS
fS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNwcAotICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9
L1Rlc3RzL1dlYkNvcmUvRmlsZVN5c3RlbS5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9U
ZXN0cy9XZWJDb3JlL2dzdHJlYW1lci9Hc3RNYXBwZWRCdWZmZXIuY3BwCiAgICAgJHtURVNUV0VC
S0lUQVBJX0RJUn0vVGVzdHMvV2ViQ29yZS9nc3RyZWFtZXIvR1N0cmVhbWVyVGVzdC5jcHAKICAg
ICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL0hUTUxQYXJzZXJJZGlvbXMuY3Bw
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDdhMTA3MmFjZGFhMmMyYWE1MDdjZGIyZmMyOTcw
ODEwODQ1YzNmMGEuLmY2NTI2OGU1ZmQzYjQxZDM2YjZmYzQ2ZDVmN2ViMmZjMWQxZTJjMDggMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00MjcsNyArNDI3LDYgQEAKIAkJN0M4M0UwNEMxRDBB
NjQxODAwRkVCQ0YzIC8qIFdlYkNvcmVOU1VSTFNlc3Npb24ubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDg5RDAzODFDNEVEQjJBMDAwNDBBMDQgLyog
V2ViQ29yZU5TVVJMU2Vzc2lvbi5tbSAqLzsgfTsKIAkJN0M4M0UwNEQxRDBBNjQxODAwRkVCQ0Yz
IC8qIERGQUNvbWJpbmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDI2MEJBNTc4MUIxRDJFN0IwMDRGQTA3QyAvKiBERkFDb21iaW5lci5jcHAgKi87
IH07CiAJCTdDODNFMDRFMUQwQTY0MTgwMEZFQkNGMyAvKiBERkFNaW5pbWl6ZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjZGNkUxRUYxQURDNzQ5
QjAwREU2OTZCIC8qIERGQU1pbmltaXplci5jcHAgKi87IH07Ci0JCTdDODNFMDRGMUQwQTY0MTgw
MEZFQkNGMyAvKiBGaWxlU3lzdGVtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxOTczQjVBMUFGMjI4NkEwMDZDN0IzNiAvKiBGaWxlU3lzdGVtLmNw
cCAqLzsgfTsKIAkJN0M4M0UwNTAxRDBBNjQxODAwRkVCQ0YzIC8qIEhUTUxQYXJzZXJJZGlvbXMu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNCODhB
MzMxQzgwMDU2RDAwQkIyNDE4IC8qIEhUTUxQYXJzZXJJZGlvbXMuY3BwICovOyB9OwogCQk3Qzgz
RTA1MTFEMEE2NDE4MDBGRUJDRjMgLyogUGFyc2VkQ29udGVudFJhbmdlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMjI1QzA3MUM0NUE2OTIwMDE0
MDc2MSAvKiBQYXJzZWRDb250ZW50UmFuZ2UuY3BwICovOyB9OwogCQk3QzgzRTA1MjFEMEE2NDE4
MDBGRUJDRjMgLyogU2hhcmVkQnVmZmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxOTczQjVDMUFGMjI4NzUwMDZDN0IzNiAvKiBTaGFyZWRCdWZm
ZXIuY3BwICovOyB9OwpAQCAtNjg5LDYgKzY4OCw3IEBACiAJCUExQzRGQjczMUJBQ0QxQ0EwMDM3
NDJEMCAvKiBwYWdlcy5wYWdlcyBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBMUM0RkI3MjFCQUNEMUI3MDAzNzQyRDAgLyogcGFnZXMucGFnZXMg
Ki87IH07CiAJCUExREY3NDMyMUM0MUI2NTgwMEEyRjREMCAvKiBBbHdheXNSZXZhbGlkYXRlZFVS
TFNjaGVtZXMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBMURGNzQzMDFDNDFCNjU4MDBBMkY0RDAgLyogQWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVz
Lm1tICovOyB9OwogCQlBMUVDMTE4ODFGNDI1NDEyMDBEMDE0NkUgLyogUHJldmlld0xvYWRlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUVDMTE4
NzFGNDI1NDEyMDBEMDE0NkUgLyogUHJldmlld0xvYWRlci5jcHAgKi87IH07CisJCUEzMTA4Mjcy
MjFGMjk2RkYwMEMyOEI5NyAvKiBGaWxlU3lzdGVtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzMTA4MjcxMjFGMjk2RUMwMEMyOEI5NyAvKiBGaWxl
U3lzdGVtLmNwcCAqLzsgfTsKIAkJQTU3QTM0RjIxNkFGNkIyQjAwQzI1MDFGIC8qIFBhZ2VWaXNp
YmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlcy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1N0EzNEYxMTZBRjY5RTIwMEMyNTAxRiAv
KiBQYWdlVmlzaWJpbGl0eVN0YXRlV2l0aFdpbmRvd0NoYW5nZXMuaHRtbCAqLzsgfTsKIAkJQTU3
RDU0RjMxRjMzOEMzNjAwQTk3QUE3IC8qIE5ldmVyRGVzdHJveWVkLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1N0Q1NEYyMUYzMzhDMzYwMEE5N0FB
NyAvKiBOZXZlckRlc3Ryb3llZC5jcHAgKi87IH07CiAJCUE1N0Q1NEY2MUYzMzk1RDAwMEE5N0FB
NyAvKiBMb2dnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTU3RDU0RjQxRjMzOTVEMDAwQTk3QUE3IC8qIExvZ2dlci5jcHAgKi87IH07CkBAIC0x
NTIwLDcgKzE1MjAsNiBAQAogCQk0MTM1RkI4MzIwMTFGQUEzMDAzMzIxMzkgLyogSW5qZWN0SW50
ZXJuYWxzX0J1bmRsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBJ
bmplY3RJbnRlcm5hbHNfQnVuZGxlLmNwcDsgcGF0aCA9IFRlc3RzL0luamVjdEludGVybmFsc19C
dW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTQxMzVGQjg2MjAxMUZB
QkYwMDMzMjEzOSAvKiBsaWJXZWJDb3JlVGVzdFN1cHBvcnQuZHlsaWIgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIi
OyBwYXRoID0gbGliV2ViQ29yZVRlc3RTdXBwb3J0LmR5bGliOyBzb3VyY2VUcmVlID0gQlVJTFRf
UFJPRFVDVFNfRElSOyB9OwogCQk0MTg4MkYwMjIxMDEwQTcwMDAyRkYyODggLyogUHJvY2Vzc1By
ZVdhcm1pbmcubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQcm9j
ZXNzUHJlV2FybWluZy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDE5NzNCNUEx
QUYyMjg2QTAwNkM3QjM2IC8qIEZpbGVTeXN0ZW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRmlsZVN5c3RlbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQxOTczQjVDMUFGMjI4NzUwMDZDN0IzNiAvKiBTaGFyZWRCdWZmZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVkQnVmZmVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDQyQkJGNjgxQzkxQ0FEOTAwMTcwODdGIC8qIFJlZkxvZ2dl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWZMb2dnZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NDMzQTM5NTIwODA0NDEzMDA5MUVENTcg
LyogU3luY2hyb25vdXNUaW1lb3V0VGVzdHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBTeW5jaHJvbm91c1RpbWVvdXRUZXN0cy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTE5MTcsNiArMTkxNiw3IEBACiAJCUExREY3NDMwMUM0MUI2NTgwMEEy
RjREMCAvKiBBbHdheXNSZXZhbGlkYXRlZFVSTFNjaGVtZXMubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBbHdheXNSZXZhbGlkYXRlZFVSTFNjaGVtZXMubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExRUMxMTg3MUY0MjU0MTIwMEQwMTQ2RSAvKiBQ
cmV2aWV3TG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByZXZpZXdMb2FkZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMUZERkQyRTE5QzI4OEJCMDA1MTQ4QTQgLyog
V0tJbWFnZUNyZWF0ZUNHSW1hZ2VDcmFzaC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXS0ltYWdlQ3JlYXRlQ0dJbWFnZUNyYXNoLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQTMxMDgyNzEyMUYyOTZFQzAwQzI4Qjk3IC8qIEZpbGVTeXN0ZW0uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmlsZVN5c3RlbS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1N0EzNEVGMTZBRjY3NzIwMEMyNTAxRiAvKiBQ
YWdlVmlzaWJpbGl0eVN0YXRlV2l0aFdpbmRvd0NoYW5nZXMubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQYWdlVmlzaWJpbGl0eVN0YXRlV2l0aFdpbmRvd0NoYW5n
ZXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1N0EzNEYxMTZBRjY5RTIwMEMy
NTAxRiAvKiBQYWdlVmlzaWJpbGl0eVN0YXRlV2l0aFdpbmRvd0NoYW5nZXMuaHRtbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQuaHRtbDsgcGF0aCA9IFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdl
cy5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTdENTRGMjFGMzM4QzM2MDBB
OTdBQTcgLyogTmV2ZXJEZXN0cm95ZWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV2ZXJEZXN0
cm95ZWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjY3Nyw3ICsyNjc3LDYg
QEAKIAkJCQk1Nzk2NTFFNjIxNkJGRDUzMDA2RUJGRTUgLyogRmlkb0hpZE1lc3NhZ2VUZXN0LmNw
cCAqLywKIAkJCQk1NzJCNDAzNTIxNzZBMDI5MDAwQUQ0M0UgLyogRmlkb1Rlc3REYXRhLmggKi8s
CiAJCQkJN0EzMkQ3NDkxRjAyMTUxNTAwMTYyQzQ0IC8qIEZpbGVNb25pdG9yLmNwcCAqLywKLQkJ
CQk0MTk3M0I1QTFBRjIyODZBMDA2QzdCMzYgLyogRmlsZVN5c3RlbS5jcHAgKi8sCiAJCQkJN0E5
MDlBNzAxRDg3NzQ3NTAwN0UxMEY4IC8qIEZsb2F0UG9pbnQuY3BwICovLAogCQkJCTdBOTA5QTcx
MUQ4Nzc0NzUwMDdFMTBGOCAvKiBGbG9hdFJlY3QuY3BwICovLAogCQkJCTdBOTA5QTcyMUQ4Nzc0
NzUwMDdFMTBGOCAvKiBGbG9hdFNpemUuY3BwICovLApAQCAtMzE4Nyw2ICszMTg2LDcgQEAKIAkJ
CQlFNEE3NTdEMzE3OEFFQTVCMDBCNUQ3QTQgLyogRGVxdWUuY3BwICovLAogCQkJCTFBRjdCMjFE
MUQ2Q0QxMkUwMDhDMTI2QyAvKiBFbnVtVHJhaXRzLmNwcCAqLywKIAkJCQlBRDdDNDM0QzFERDJB
NTQ3MDAyNjg4OEIgLyogRXhwZWN0ZWQuY3BwICovLAorCQkJCUEzMTA4MjcxMjFGMjk2RUMwMEMy
OEI5NyAvKiBGaWxlU3lzdGVtLmNwcCAqLywKIAkJCQk5MzEwQ0QzNjFFRjcwOEZCMDA1MEZGRTAg
LyogRnVuY3Rpb24uY3BwICovLAogCQkJCTgzREI3OTY3MUVGNjNCM0MwMEJGQTVFNSAvKiBGdW5j
dGlvbi5jcHAgKi8sCiAJCQkJN0EzOEQ3RTUxQzc1MkQ1RjAwNEYxNTdEIC8qIEhhc2hDb3VudGVk
U2V0LmNwcCAqLywKQEAgLTM3OTUsNiArMzc5NSw3IEBACiAJCQkJN0M4M0RFQUQxRDBBNTkwQzAw
RkVCQ0YzIC8qIERlcXVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBRjdCMjFGMUQ2Q0QxNEQw
MDhDMTI2QyAvKiBFbnVtVHJhaXRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUFEN0M0MzREMURE
MkE1NEUwMDI2ODg4QiAvKiBFeHBlY3RlZC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBMzEwODI3
MjIxRjI5NkZGMDBDMjhCOTcgLyogRmlsZVN5c3RlbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5
MzEwQ0QzODFFRjcwOEZCMDA1MEZGRTAgLyogRnVuY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNkJGRDI5NEMxRDVFNkMxRDAwOEVDOTY4IC8qIEhhc2hDb3VudGVkU2V0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTkzM0Q2MzFEMUZDQjc2MjAwMDMyRUNENiAvKiBIYXNoZXIuY3BwIGluIFNv
dXJjZXMgKi8sCkBAIC0zOTk4LDcgKzM5OTksNiBAQAogCQkJCTdDQ0U3RUYxMUE0MTFBRTYwMDQ0
N0M0QyAvKiBGYWlsZWRMb2FkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTU3OTY1MUU3MjE2QkZE
RUQwMDZFQkZFNSAvKiBGaWRvSGlkTWVzc2FnZVRlc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
N0EzMkQ3NEExRjAyMTUxNTAwMTYyQzQ0IC8qIEZpbGVNb25pdG9yLmNwcCBpbiBTb3VyY2VzICov
LAotCQkJCTdDODNFMDRGMUQwQTY0MTgwMEZFQkNGMyAvKiBGaWxlU3lzdGVtLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTdDQ0U3RUYzMUE0MTFBRTYwMDQ0N0M0QyAvKiBGaW5kLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTdDODNFMEJCMUQwQTY1MDAwMEZFQkNGMyAvKiBGaW5kSW5QYWdlLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFRjQxQTQxMUFFNjAwNDQ3QzRDIC8qIEZpbmRNYXRjaGVz
Lm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9GaWxlU3lzdGVtLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVT
eXN0ZW0uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4YjI1MzFjN2E2ZjQzZmU4NmU3M2YwMDFlNDhiYWVmYjgy
Njg3NmEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9G
aWxlU3lzdGVtLmNwcApAQCAtMCwwICsxLDE1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisKKyNpbmNsdWRlICJUZXN0LmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVNZXRhZGF0YS5o
PgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQu
aD4KKyNpbmNsdWRlIDx3dGYvU3RyaW5nRXh0cmFzLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXVEY7
CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworY29uc3QgY2hhciogRmlsZVN5c3RlbVRl
c3REYXRhID0gIlRoaXMgaXMgYSB0ZXN0IjsKKworLy8gRklYTUU6IFJlZmFjdG9yIEZpbGVTeXN0
ZW1UZXN0IGFuZCBTaGFyZWRCdWZmZXJUZXN0IGFzIGEgc2luZ2xlIGNsYXNzLgorY2xhc3MgRmls
ZVN5c3RlbVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CitwdWJsaWM6CisgICAgdm9pZCBT
ZXRVcCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFk
KCk7CisgICAgICAgIAorICAgICAgICAvLyBjcmVhdGUgdGVtcCBmaWxlCisgICAgICAgIEZpbGVT
eXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGU7CisgICAgICAgIG1fdGVtcEZpbGVQYXRo
ID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoInRlbXBUZXN0RmlsZSIsIGhhbmRsZSk7
CisgICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhhbmRsZSwgRmlsZVN5c3RlbVRlc3RE
YXRhLCBzdHJsZW4oRmlsZVN5c3RlbVRlc3REYXRhKSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmNs
b3NlRmlsZShoYW5kbGUpOworCisgICAgICAgIG1fdGVtcEZpbGVTeW1saW5rUGF0aCA9IG1fdGVt
cEZpbGVQYXRoICsgIi1zeW1saW5rIjsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y3JlYXRlU3ltYm9s
aWNMaW5rKG1fdGVtcEZpbGVQYXRoLCBtX3RlbXBGaWxlU3ltbGlua1BhdGgpOworCisgICAgICAg
IG1fdGVtcEVtcHR5RmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVt
cEVtcHR5VGVzdEZpbGUiLCBoYW5kbGUpOworICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUo
aGFuZGxlKTsKKworICAgICAgICBtX3NwYWNlQ29udGFpbmluZ0ZpbGVQYXRoID0gRmlsZVN5c3Rl
bTo6b3BlblRlbXBvcmFyeUZpbGUoInRlbXAgRW1wdHkgVGVzdCBGaWxlIiwgaGFuZGxlKTsKKyAg
ICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CisKKyAgICAgICAgbV9iYW5nQ29u
dGFpbmluZ0ZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoInRlbXAhRW1w
dHkhVGVzdCFGaWxlIiwgaGFuZGxlKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhh
bmRsZSk7CisKKyAgICAgICAgbV9xdW90ZUNvbnRhaW5pbmdGaWxlUGF0aCA9IEZpbGVTeXN0ZW06
Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wXCJFbXB0eVwiVGVzdEZpbGUiLCBoYW5kbGUpOworICAg
ICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKKyAgICB9CisKKyAgICB2b2lkIFRl
YXJEb3duKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUo
bV90ZW1wRmlsZVBhdGgpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fdGVtcEZp
bGVTeW1saW5rUGF0aCk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV90ZW1wRW1w
dHlGaWxlUGF0aCk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9zcGFjZUNvbnRh
aW5pbmdGaWxlUGF0aCk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9iYW5nQ29u
dGFpbmluZ0ZpbGVQYXRoKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX3F1b3Rl
Q29udGFpbmluZ0ZpbGVQYXRoKTsKKyAgICB9CisKKyAgICBjb25zdCBTdHJpbmcmIHRlbXBGaWxl
UGF0aCgpIHsgcmV0dXJuIG1fdGVtcEZpbGVQYXRoOyB9CisgICAgY29uc3QgU3RyaW5nJiB0ZW1w
RmlsZVN5bWxpbmtQYXRoKCkgeyByZXR1cm4gbV90ZW1wRmlsZVN5bWxpbmtQYXRoOyB9CisgICAg
Y29uc3QgU3RyaW5nJiB0ZW1wRW1wdHlGaWxlUGF0aCgpIHsgcmV0dXJuIG1fdGVtcEVtcHR5Rmls
ZVBhdGg7IH0KKyAgICBjb25zdCBTdHJpbmcmIHNwYWNlQ29udGFpbmluZ0ZpbGVQYXRoKCkgeyBy
ZXR1cm4gbV9zcGFjZUNvbnRhaW5pbmdGaWxlUGF0aDsgfQorICAgIGNvbnN0IFN0cmluZyYgYmFu
Z0NvbnRhaW5pbmdGaWxlUGF0aCgpIHsgcmV0dXJuIG1fYmFuZ0NvbnRhaW5pbmdGaWxlUGF0aDsg
fQorICAgIGNvbnN0IFN0cmluZyYgcXVvdGVDb250YWluaW5nRmlsZVBhdGgoKSB7IHJldHVybiBt
X3F1b3RlQ29udGFpbmluZ0ZpbGVQYXRoOyB9CisKK3ByaXZhdGU6CisgICAgU3RyaW5nIG1fdGVt
cEZpbGVQYXRoOworICAgIFN0cmluZyBtX3RlbXBGaWxlU3ltbGlua1BhdGg7CisgICAgU3RyaW5n
IG1fdGVtcEVtcHR5RmlsZVBhdGg7CisgICAgU3RyaW5nIG1fc3BhY2VDb250YWluaW5nRmlsZVBh
dGg7CisgICAgU3RyaW5nIG1fYmFuZ0NvbnRhaW5pbmdGaWxlUGF0aDsKKyAgICBTdHJpbmcgbV9x
dW90ZUNvbnRhaW5pbmdGaWxlUGF0aDsKK307CisKK1RFU1RfRihGaWxlU3lzdGVtVGVzdCwgTWFw
cGluZ01pc3NpbmdGaWxlKQoreworICAgIGJvb2wgc3VjY2VzczsKKyAgICBGaWxlU3lzdGVtOjpN
YXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YShTdHJpbmcoIm5vdF9leGlzdGluZ19maWxlIiks
IHN1Y2Nlc3MpOworICAgIEVYUEVDVF9GQUxTRShzdWNjZXNzKTsKKyAgICBFWFBFQ1RfVFJVRSgh
bWFwcGVkRmlsZURhdGEpOworfQorCitURVNUX0YoRmlsZVN5c3RlbVRlc3QsIE1hcHBpbmdFeGlz
dGluZ0ZpbGUpCit7CisgICAgYm9vbCBzdWNjZXNzOworICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZp
bGVEYXRhIG1hcHBlZEZpbGVEYXRhKHRlbXBGaWxlUGF0aCgpLCBzdWNjZXNzKTsKKyAgICBFWFBF
Q1RfVFJVRShzdWNjZXNzKTsKKyAgICBFWFBFQ1RfVFJVRSghIW1hcHBlZEZpbGVEYXRhKTsKKyAg
ICBFWFBFQ1RfVFJVRShtYXBwZWRGaWxlRGF0YS5zaXplKCkgPT0gc3RybGVuKEZpbGVTeXN0ZW1U
ZXN0RGF0YSkpOworICAgIEVYUEVDVF9UUlVFKHN0cm5zdHIoRmlsZVN5c3RlbVRlc3REYXRhLCBz
dGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obWFwcGVkRmlsZURhdGEuZGF0YSgpKSwgbWFwcGVkRmls
ZURhdGEuc2l6ZSgpKSk7Cit9CisKK1RFU1RfRihGaWxlU3lzdGVtVGVzdCwgTWFwcGluZ0V4aXN0
aW5nRW1wdHlGaWxlKQoreworICAgIGJvb2wgc3VjY2VzczsKKyAgICBGaWxlU3lzdGVtOjpNYXBw
ZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YSh0ZW1wRW1wdHlGaWxlUGF0aCgpLCBzdWNjZXNzKTsK
KyAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKKyAgICBFWFBFQ1RfVFJVRSghbWFwcGVkRmlsZURh
dGEpOworfQorCitURVNUX0YoRmlsZVN5c3RlbVRlc3QsIEZpbGVzSGF2ZVNhbWVWb2x1bWUpCit7
CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZXNIYXZlU2FtZVZvbHVtZSh0ZW1wRmls
ZVBhdGgoKSwgc3BhY2VDb250YWluaW5nRmlsZVBhdGgoKSkpOworICAgIEVYUEVDVF9UUlVFKEZp
bGVTeXN0ZW06OmZpbGVzSGF2ZVNhbWVWb2x1bWUoc3BhY2VDb250YWluaW5nRmlsZVBhdGgoKSwg
YmFuZ0NvbnRhaW5pbmdGaWxlUGF0aCgpKSk7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6
ZmlsZXNIYXZlU2FtZVZvbHVtZShiYW5nQ29udGFpbmluZ0ZpbGVQYXRoKCksIHF1b3RlQ29udGFp
bmluZ0ZpbGVQYXRoKCkpKTsKK30KKworVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBHZXRGaWxlTWV0
YWRhdGFTeW1saW5rKQoreworICAgIGF1dG8gc3ltbGlua01ldGFkYXRhID0gRmlsZVN5c3RlbTo6
ZmlsZU1ldGFkYXRhKHRlbXBGaWxlU3ltbGlua1BhdGgoKSk7CisgICAgQVNTRVJUX1RSVUUoc3lt
bGlua01ldGFkYXRhLmhhc1ZhbHVlKCkpOworICAgIEVYUEVDVF9UUlVFKHN5bWxpbmtNZXRhZGF0
YS52YWx1ZSgpLnR5cGUgPT0gRmlsZU1ldGFkYXRhOjpUeXBlOjpTeW1ib2xpY0xpbmspOworICAg
IEVYUEVDVF9GQUxTRShzdGF0aWNfY2FzdDxzaXplX3Q+KHN5bWxpbmtNZXRhZGF0YS52YWx1ZSgp
Lmxlbmd0aCkgPT0gc3RybGVuKEZpbGVTeXN0ZW1UZXN0RGF0YSkpOworCisgICAgYXV0byB0YXJn
ZXRNZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0YUZvbGxvd2luZ1N5bWxpbmtzKHRl
bXBGaWxlU3ltbGlua1BhdGgoKSk7CisgICAgQVNTRVJUX1RSVUUodGFyZ2V0TWV0YWRhdGEuaGFz
VmFsdWUoKSk7CisgICAgRVhQRUNUX1RSVUUodGFyZ2V0TWV0YWRhdGEudmFsdWUoKS50eXBlID09
IEZpbGVNZXRhZGF0YTo6VHlwZTo6RmlsZSk7CisgICAgRVhQRUNUX0VRKHN0cmxlbihGaWxlU3lz
dGVtVGVzdERhdGEpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KHRhcmdldE1ldGFkYXRhLnZhbHVlKCku
bGVuZ3RoKSk7Cit9CisKK1RFU1RfRihGaWxlU3lzdGVtVGVzdCwgVW5pY29kZURpcmVjdG9yeU5h
bWUpCit7CisgICAgU3RyaW5nIHBhdGggPSBTdHJpbmc6OmZyb21VVEY4KCIvdGVzdC9hXHUwMzA4
bG8vdGVzdC50eHQiKTsKKyAgICBTdHJpbmcgZGlyZWN0b3J5TmFtZSA9IEZpbGVTeXN0ZW06OmRp
cmVjdG9yeU5hbWUocGF0aCk7CisgICAgU3RyaW5nIGV4cGVjdGVkRGlyZWN0b3J5TmFtZSA9IFN0
cmluZzo6ZnJvbVVURjgoIi90ZXN0L2FcdTAzMDhsbyIpOworICAgIEVYUEVDVF9UUlVFKGV4cGVj
dGVkRGlyZWN0b3J5TmFtZSA9PSBkaXJlY3RvcnlOYW1lKTsKK30KKworfQpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNwcCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRvci5jcHAKaW5kZXggNWYxZGM4
YjJlNGQ1MjRkMzUyNjgwNGJkNmNkOWNlOThhMzcxMWZlOC4uZTAwMmRmMWVmMDk0ZjViM2YwMGQx
NmU5YzZiZTZkNDlkNWU2YWYyNCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvRmlsZU1vbml0b3IuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiVGVz
dC5oIgogI2luY2x1ZGUgIldURlN0cmluZ1V0aWxpdGllcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
RmlsZU1vbml0b3IuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRl
IDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVk
ZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlU3lzdGVtLmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlU3lzdGVtLmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNzY2MjUwMjUzMDk3MjdlYTYwNWNiNTJjZmM5ZWNkNGIzM2U3Nzg3NS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZVN5c3RlbS5jcHAKKysrIC9kZXYvbnVsbApAQCAt
MSwxNTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRl
ICJUZXN0LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlTWV0YWRhdGEuaD4KLSNpbmNsdWRlIDxX
ZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KLSNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgotI2luY2x1
ZGUgPHd0Zi9TdHJpbmdFeHRyYXMuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKLQotY29uc3QgY2hhciogRmlsZVN5c3RlbVRlc3REYXRh
ID0gIlRoaXMgaXMgYSB0ZXN0IjsKLQotLy8gRklYTUU6IFJlZmFjdG9yIEZpbGVTeXN0ZW1UZXN0
IGFuZCBTaGFyZWRCdWZmZXJUZXN0IGFzIGEgc2luZ2xlIGNsYXNzLgotY2xhc3MgRmlsZVN5c3Rl
bVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci1wdWJsaWM6Ci0gICAgdm9pZCBTZXRVcCgp
IG92ZXJyaWRlCi0gICAgewotICAgICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7Ci0g
ICAgICAgIAotICAgICAgICAvLyBjcmVhdGUgdGVtcCBmaWxlCi0gICAgICAgIEZpbGVTeXN0ZW06
OlBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGU7Ci0gICAgICAgIG1fdGVtcEZpbGVQYXRoID0gRmls
ZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoInRlbXBUZXN0RmlsZSIsIGhhbmRsZSk7Ci0gICAg
ICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhhbmRsZSwgRmlsZVN5c3RlbVRlc3REYXRhLCBz
dHJsZW4oRmlsZVN5c3RlbVRlc3REYXRhKSk7Ci0gICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmls
ZShoYW5kbGUpOwotCi0gICAgICAgIG1fdGVtcEZpbGVTeW1saW5rUGF0aCA9IG1fdGVtcEZpbGVQ
YXRoICsgIi1zeW1saW5rIjsKLSAgICAgICAgRmlsZVN5c3RlbTo6Y3JlYXRlU3ltYm9saWNMaW5r
KG1fdGVtcEZpbGVQYXRoLCBtX3RlbXBGaWxlU3ltbGlua1BhdGgpOwotCi0gICAgICAgIG1fdGVt
cEVtcHR5RmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcEVtcHR5
VGVzdEZpbGUiLCBoYW5kbGUpOwotICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxl
KTsKLQotICAgICAgICBtX3NwYWNlQ29udGFpbmluZ0ZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3Bl
blRlbXBvcmFyeUZpbGUoInRlbXAgRW1wdHkgVGVzdCBGaWxlIiwgaGFuZGxlKTsKLSAgICAgICAg
RmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7Ci0KLSAgICAgICAgbV9iYW5nQ29udGFpbmlu
Z0ZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoInRlbXAhRW1wdHkhVGVz
dCFGaWxlIiwgaGFuZGxlKTsKLSAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7
Ci0KLSAgICAgICAgbV9xdW90ZUNvbnRhaW5pbmdGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5U
ZW1wb3JhcnlGaWxlKCJ0ZW1wXCJFbXB0eVwiVGVzdEZpbGUiLCBoYW5kbGUpOwotICAgICAgICBG
aWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKLSAgICB9Ci0KLSAgICB2b2lkIFRlYXJEb3du
KCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV90ZW1w
RmlsZVBhdGgpOwotICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fdGVtcEZpbGVTeW1s
aW5rUGF0aCk7Ci0gICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV90ZW1wRW1wdHlGaWxl
UGF0aCk7Ci0gICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9zcGFjZUNvbnRhaW5pbmdG
aWxlUGF0aCk7Ci0gICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9iYW5nQ29udGFpbmlu
Z0ZpbGVQYXRoKTsKLSAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX3F1b3RlQ29udGFp
bmluZ0ZpbGVQYXRoKTsKLSAgICB9Ci0KLSAgICBjb25zdCBTdHJpbmcmIHRlbXBGaWxlUGF0aCgp
IHsgcmV0dXJuIG1fdGVtcEZpbGVQYXRoOyB9Ci0gICAgY29uc3QgU3RyaW5nJiB0ZW1wRmlsZVN5
bWxpbmtQYXRoKCkgeyByZXR1cm4gbV90ZW1wRmlsZVN5bWxpbmtQYXRoOyB9Ci0gICAgY29uc3Qg
U3RyaW5nJiB0ZW1wRW1wdHlGaWxlUGF0aCgpIHsgcmV0dXJuIG1fdGVtcEVtcHR5RmlsZVBhdGg7
IH0KLSAgICBjb25zdCBTdHJpbmcmIHNwYWNlQ29udGFpbmluZ0ZpbGVQYXRoKCkgeyByZXR1cm4g
bV9zcGFjZUNvbnRhaW5pbmdGaWxlUGF0aDsgfQotICAgIGNvbnN0IFN0cmluZyYgYmFuZ0NvbnRh
aW5pbmdGaWxlUGF0aCgpIHsgcmV0dXJuIG1fYmFuZ0NvbnRhaW5pbmdGaWxlUGF0aDsgfQotICAg
IGNvbnN0IFN0cmluZyYgcXVvdGVDb250YWluaW5nRmlsZVBhdGgoKSB7IHJldHVybiBtX3F1b3Rl
Q29udGFpbmluZ0ZpbGVQYXRoOyB9Ci0KLXByaXZhdGU6Ci0gICAgU3RyaW5nIG1fdGVtcEZpbGVQ
YXRoOwotICAgIFN0cmluZyBtX3RlbXBGaWxlU3ltbGlua1BhdGg7Ci0gICAgU3RyaW5nIG1fdGVt
cEVtcHR5RmlsZVBhdGg7Ci0gICAgU3RyaW5nIG1fc3BhY2VDb250YWluaW5nRmlsZVBhdGg7Ci0g
ICAgU3RyaW5nIG1fYmFuZ0NvbnRhaW5pbmdGaWxlUGF0aDsKLSAgICBTdHJpbmcgbV9xdW90ZUNv
bnRhaW5pbmdGaWxlUGF0aDsKLX07Ci0KLVRFU1RfRihGaWxlU3lzdGVtVGVzdCwgTWFwcGluZ01p
c3NpbmdGaWxlKQotewotICAgIGJvb2wgc3VjY2VzczsKLSAgICBGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlRGF0YSBtYXBwZWRGaWxlRGF0YShTdHJpbmcoIm5vdF9leGlzdGluZ19maWxlIiksIHN1Y2Nl
c3MpOwotICAgIEVYUEVDVF9GQUxTRShzdWNjZXNzKTsKLSAgICBFWFBFQ1RfVFJVRSghbWFwcGVk
RmlsZURhdGEpOwotfQotCi1URVNUX0YoRmlsZVN5c3RlbVRlc3QsIE1hcHBpbmdFeGlzdGluZ0Zp
bGUpCi17Ci0gICAgYm9vbCBzdWNjZXNzOwotICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRh
IG1hcHBlZEZpbGVEYXRhKHRlbXBGaWxlUGF0aCgpLCBzdWNjZXNzKTsKLSAgICBFWFBFQ1RfVFJV
RShzdWNjZXNzKTsKLSAgICBFWFBFQ1RfVFJVRSghIW1hcHBlZEZpbGVEYXRhKTsKLSAgICBFWFBF
Q1RfVFJVRShtYXBwZWRGaWxlRGF0YS5zaXplKCkgPT0gc3RybGVuKEZpbGVTeXN0ZW1UZXN0RGF0
YSkpOwotICAgIEVYUEVDVF9UUlVFKHN0cm5zdHIoRmlsZVN5c3RlbVRlc3REYXRhLCBzdGF0aWNf
Y2FzdDxjb25zdCBjaGFyKj4obWFwcGVkRmlsZURhdGEuZGF0YSgpKSwgbWFwcGVkRmlsZURhdGEu
c2l6ZSgpKSk7Ci19Ci0KLVRFU1RfRihGaWxlU3lzdGVtVGVzdCwgTWFwcGluZ0V4aXN0aW5nRW1w
dHlGaWxlKQotewotICAgIGJvb2wgc3VjY2VzczsKLSAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxl
RGF0YSBtYXBwZWRGaWxlRGF0YSh0ZW1wRW1wdHlGaWxlUGF0aCgpLCBzdWNjZXNzKTsKLSAgICBF
WFBFQ1RfVFJVRShzdWNjZXNzKTsKLSAgICBFWFBFQ1RfVFJVRSghbWFwcGVkRmlsZURhdGEpOwot
fQotCi1URVNUX0YoRmlsZVN5c3RlbVRlc3QsIEZpbGVzSGF2ZVNhbWVWb2x1bWUpCi17Ci0gICAg
RVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZXNIYXZlU2FtZVZvbHVtZSh0ZW1wRmlsZVBhdGgo
KSwgc3BhY2VDb250YWluaW5nRmlsZVBhdGgoKSkpOwotICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0
ZW06OmZpbGVzSGF2ZVNhbWVWb2x1bWUoc3BhY2VDb250YWluaW5nRmlsZVBhdGgoKSwgYmFuZ0Nv
bnRhaW5pbmdGaWxlUGF0aCgpKSk7Ci0gICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZXNI
YXZlU2FtZVZvbHVtZShiYW5nQ29udGFpbmluZ0ZpbGVQYXRoKCksIHF1b3RlQ29udGFpbmluZ0Zp
bGVQYXRoKCkpKTsKLX0KLQotVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBHZXRGaWxlTWV0YWRhdGFT
eW1saW5rKQotewotICAgIGF1dG8gc3ltbGlua01ldGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1l
dGFkYXRhKHRlbXBGaWxlU3ltbGlua1BhdGgoKSk7Ci0gICAgQVNTRVJUX1RSVUUoc3ltbGlua01l
dGFkYXRhLmhhc1ZhbHVlKCkpOwotICAgIEVYUEVDVF9UUlVFKHN5bWxpbmtNZXRhZGF0YS52YWx1
ZSgpLnR5cGUgPT0gRmlsZU1ldGFkYXRhOjpUeXBlOjpTeW1ib2xpY0xpbmspOwotICAgIEVYUEVD
VF9GQUxTRShzdGF0aWNfY2FzdDxzaXplX3Q+KHN5bWxpbmtNZXRhZGF0YS52YWx1ZSgpLmxlbmd0
aCkgPT0gc3RybGVuKEZpbGVTeXN0ZW1UZXN0RGF0YSkpOwotCi0gICAgYXV0byB0YXJnZXRNZXRh
ZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0YUZvbGxvd2luZ1N5bWxpbmtzKHRlbXBGaWxl
U3ltbGlua1BhdGgoKSk7Ci0gICAgQVNTRVJUX1RSVUUodGFyZ2V0TWV0YWRhdGEuaGFzVmFsdWUo
KSk7Ci0gICAgRVhQRUNUX1RSVUUodGFyZ2V0TWV0YWRhdGEudmFsdWUoKS50eXBlID09IEZpbGVN
ZXRhZGF0YTo6VHlwZTo6RmlsZSk7Ci0gICAgRVhQRUNUX0VRKHN0cmxlbihGaWxlU3lzdGVtVGVz
dERhdGEpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KHRhcmdldE1ldGFkYXRhLnZhbHVlKCkubGVuZ3Ro
KSk7Ci19Ci0KLVRFU1RfRihGaWxlU3lzdGVtVGVzdCwgVW5pY29kZURpcmVjdG9yeU5hbWUpCi17
Ci0gICAgU3RyaW5nIHBhdGggPSBTdHJpbmc6OmZyb21VVEY4KCIvdGVzdC9hXHUwMzA4bG8vdGVz
dC50eHQiKTsKLSAgICBTdHJpbmcgZGlyZWN0b3J5TmFtZSA9IEZpbGVTeXN0ZW06OmRpcmVjdG9y
eU5hbWUocGF0aCk7Ci0gICAgU3RyaW5nIGV4cGVjdGVkRGlyZWN0b3J5TmFtZSA9IFN0cmluZzo6
ZnJvbVVURjgoIi90ZXN0L2FcdTAzMDhsbyIpOwotICAgIEVYUEVDVF9UUlVFKGV4cGVjdGVkRGly
ZWN0b3J5TmFtZSA9PSBkaXJlY3RvcnlOYW1lKTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TZWN1cml0eU9yaWdpbi5jcHAKaW5kZXggZGE1ZjRm
ZjU4OThhOWYwOWM4YjgzOTVhNTVkZTczOGYxNjhjOTA5Zi4uYTQxYWI0YmNhMzcxZDQ1ZGU4Y2I0
NTg2ODViYzk3NGUzMGY0MDZmMyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvU2VjdXJpdHlPcmlnaW4uY3BwCkBAIC0yNiw4ICsyNiw4IEBACiAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXVEZTdHJpbmdVdGlsaXRpZXMuaCIKLSNpbmNsdWRl
IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2lu
Lmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVh
ZC5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuY3BwCmluZGV4IDhmZTM1NjdjMWUx
MTM2OTFkODViN2M1NWExZjk2NjU5ZGU5ZDFmMjQuLjliOGIxM2E3NWQ1MmZmOTUxZWFkMTgxODVk
NTZjMzc5MWIyZDdiZWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9TaGFyZWRCdWZmZXJUZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5jcHAKQEAgLTI2LDExICsyNiw5IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyVGVzdC5oIgogCi0jaW5jbHVkZSA8
V2ViQ29yZS9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNs
dWRlIDx3dGYvTWFpblRocmVhZC5oPgogCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQogbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiB2b2lkIFNoYXJlZEJ1ZmZlclRlc3Q6OlNldFVwKCkK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9EYXRh
YmFzZVRyYWNrZXJUZXN0Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2Nv
Y29hL0RhdGFiYXNlVHJhY2tlclRlc3QubW0KaW5kZXggNmEzYzcwMjgwYTRlZGUwMDkxMDJlZTk5
NzZiMzY3YzI2YWI3ZmVlNy4uMjIxNzE1NmY2ZTU2OTE1YTc1ZDQ0ODg0ZWFkNTE3MTlhN2M1Mjkx
MSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL0Rh
dGFiYXNlVHJhY2tlclRlc3QubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL2NvY29hL0RhdGFiYXNlVHJhY2tlclRlc3QubW0KQEAgLTI2LDExICsyNiwxMSBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogCiAjaW5jbHVkZSA8V2ViQ29yZS9EYXRhYmFzZVRyYWNrZXIuaD4K
LSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL09yaWdp
bkxvY2suaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZURhdGFiYXNlLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TUUxpdGVTdGF0ZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3Jp
Z2luRGF0YS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvY3VybC9Db29raWVzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9j
dXJsL0Nvb2tpZXMuY3BwCmluZGV4IDFiOGQ3ZmMzY2RlNTAyOTllMzBhZDZjNmQ4Y2ExNjI3ZjIz
OTBjMWYuLmI0MGIwZDVhMGE1ZTVmYjVmNDkxOWEzZGEyYzJmZWQ2ZmNiYzFjNGUgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jdXJsL0Nvb2tpZXMuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jdXJsL0Nvb2tpZXMuY3BwCkBA
IC0yOSw4ICsyOSw4IEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZUphckRCLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9Db29raWVVdGlsLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVt
Lmg+CiAjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbQppbmRleCA2MGNjOTNiMzQwZGQ2ODA5NDFjNDFhMmE1
YWEwYmE5MjNiNWFlYzY0Li42ODFiMDJjYTljODdkYWVjMzcyNjIyNDYxN2QxYzU5MjA4OGQ3YTZj
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25s
b2FkLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxv
YWQubW0KQEAgLTMzLDcgKzMzLDYgQEAKICNpbXBvcnQgIlRlc3QuaCIKICNpbXBvcnQgIlRlc3RQ
cm90b2NvbC5oIgogI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgotI2ltcG9ydCA8V2ViQ29yZS9G
aWxlU3lzdGVtLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLRG93bmxvYWQuaD4KICNpbXBvcnQgPFdl
YktpdC9fV0tEb3dubG9hZERlbGVnYXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tOYXZpZ2F0aW9u
RGVsZWdhdGVQcml2YXRlLmg+CkBAIC00MSw2ICs0MCw3IEBACiAjaW1wb3J0IDxXZWJLaXQvV0tV
SURlbGVnYXRlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlldy5oPgogI2ltcG9y
dCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb24uaD4KKyNpbXBvcnQgPHd0Zi9GaWxlU3lz
dGVtLmg+CiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0
ci5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC05NCwxMCArOTQsMTAgQEAg
SUdOT1JFX1dBUk5JTkdTX0VORAogICAgIEVYUEVDVF9UUlVFKGhhc1JlY2VpdmVkUmVzcG9uc2Up
OwogICAgIEVYUEVDVF9FUShfZG93bmxvYWQsIGRvd25sb2FkKTsKIAotICAgIFdlYkNvcmU6OkZp
bGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlSGFuZGxlOwotICAgIF9kZXN0aW5hdGlv
blBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiVGVzdFdlYktp
dEFQSSIsIGZpbGVIYW5kbGUpOwotICAgIEVYUEVDVF9UUlVFKGZpbGVIYW5kbGUgIT0gV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7Ci0gICAgV2ViQ29yZTo6
RmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOworICAgIEZpbGVTeXN0ZW06OlBsYXRm
b3JtRmlsZUhhbmRsZSBmaWxlSGFuZGxlOworICAgIF9kZXN0aW5hdGlvblBhdGggPSBGaWxlU3lz
dGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiVGVzdFdlYktpdEFQSSIsIGZpbGVIYW5kbGUpOworICAg
IEVYUEVDVF9UUlVFKGZpbGVIYW5kbGUgIT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmls
ZUhhbmRsZSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOwogCiAgICAg
KmFsbG93T3ZlcndyaXRlID0gWUVTOwogICAgIHJldHVybiBfZGVzdGluYXRpb25QYXRoOwpAQCAt
MTA5LDcgKzEwOSw3IEBAIC0gKHZvaWQpX2Rvd25sb2FkRGlkRmluaXNoOihfV0tEb3dubG9hZCAq
KWRvd25sb2FkCiAgICAgRVhQRUNUX0VRKGV4cGVjdGVkVXNlckluaXRpYXRlZFN0YXRlLCBkb3du
bG9hZC53YXNVc2VySW5pdGlhdGVkKTsKICAgICBFWFBFQ1RfVFJVRShfZXhwZWN0ZWRDb250ZW50
TGVuZ3RoID09IE5TVVJMUmVzcG9uc2VVbmtub3duTGVuZ3RoIHx8IHN0YXRpY19jYXN0PHVpbnQ2
NF90PihfZXhwZWN0ZWRDb250ZW50TGVuZ3RoKSA9PSBfcmVjZWl2ZWRDb250ZW50TGVuZ3RoKTsK
ICAgICBFWFBFQ1RfVFJVRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNvbnRlbnRz
RXF1YWxBdFBhdGg6X2Rlc3RpbmF0aW9uUGF0aCBhbmRQYXRoOltzb3VyY2VVUkwgcGF0aF1dKTsK
LSAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVGaWxlKF9kZXN0aW5hdGlvblBhdGgpOwor
ICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoX2Rlc3RpbmF0aW9uUGF0aCk7CiAgICAgaXNEb25l
ID0gdHJ1ZTsKIH0KIApAQCAtMzk3LDEwICszOTcsMTAgQEAgSUdOT1JFX1dBUk5JTkdTX0VORAog
ICAgIEVYUEVDVF9UUlVFKGhhc1JlY2VpdmVkUmVzcG9uc2UpOwogICAgIEVYUEVDVF9FUShfZG93
bmxvYWQsIGRvd25sb2FkKTsKIAotICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OlBsYXRmb3JtRmls
ZUhhbmRsZSBmaWxlSGFuZGxlOwotICAgIF9kZXN0aW5hdGlvblBhdGggPSBXZWJDb3JlOjpGaWxl
U3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiVGVzdFdlYktpdEFQSSIsIGZpbGVIYW5kbGUpOwot
ICAgIEVYUEVDVF9UUlVFKGZpbGVIYW5kbGUgIT0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6aW52YWxp
ZFBsYXRmb3JtRmlsZUhhbmRsZSk7Ci0gICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6Y2xvc2VGaWxl
KGZpbGVIYW5kbGUpOworICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlSGFu
ZGxlOworICAgIF9kZXN0aW5hdGlvblBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5Rmls
ZSgiVGVzdFdlYktpdEFQSSIsIGZpbGVIYW5kbGUpOworICAgIEVYUEVDVF9UUlVFKGZpbGVIYW5k
bGUgIT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7CisgICAgRmlsZVN5
c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOwogCiAgICAgKmFsbG93T3ZlcndyaXRlID0gWUVT
OwogICAgIHJldHVybiBfZGVzdGluYXRpb25QYXRoOwpAQCAtNDE0LDcgKzQxNCw3IEBAIC0gKHZv
aWQpX2Rvd25sb2FkRGlkRmluaXNoOihfV0tEb3dubG9hZCAqKWRvd25sb2FkCiAgICAgTlNTdHJp
bmcqIGV4cGVjdGVkQ29udGVudCA9IEAie1wieFwiOjQyLFwic1wiOlwiaGVsbG8sIHdvcmxkXCJ9
IjsKICAgICBOU0RhdGEqIGV4cGVjdGVkRGF0YSA9IFtleHBlY3RlZENvbnRlbnQgZGF0YVVzaW5n
RW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOwogICAgIEVYUEVDVF9UUlVFKFtbW05TRmls
ZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNvbnRlbnRzQXRQYXRoOl9kZXN0aW5hdGlvblBhdGhd
IGlzRXF1YWxUb0RhdGE6ZXhwZWN0ZWREYXRhXSk7Ci0gICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6
ZGVsZXRlRmlsZShfZGVzdGluYXRpb25QYXRoKTsKKyAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxl
KF9kZXN0aW5hdGlvblBhdGgpOwogICAgIGlzRG9uZSA9IHRydWU7CiB9CiAKQEAgLTQ1NywxMCAr
NDU3LDEwIEBAIElHTk9SRV9XQVJOSU5HU19CRUdJTigiZGVwcmVjYXRlZC1pbXBsZW1lbnRhdGlv
bnMiKQogLSAoTlNTdHJpbmcgKilfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGVj
aWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6KE5TU3RyaW5nICopZmlsZW5hbWUg
YWxsb3dPdmVyd3JpdGU6KEJPT0wgKilhbGxvd092ZXJ3cml0ZQogSUdOT1JFX1dBUk5JTkdTX0VO
RAogewotICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlSGFu
ZGxlOwotICAgIF9kZXN0aW5hdGlvblBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpvcGVuVGVt
cG9yYXJ5RmlsZSgiVGVzdFdlYktpdEFQSSIsIGZpbGVIYW5kbGUpOwotICAgIEVYUEVDVF9UUlVF
KGZpbGVIYW5kbGUgIT0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhh
bmRsZSk7Ci0gICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOwor
ICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlSGFuZGxlOworICAgIF9kZXN0
aW5hdGlvblBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiVGVzdFdlYktpdEFQ
SSIsIGZpbGVIYW5kbGUpOworICAgIEVYUEVDVF9UUlVFKGZpbGVIYW5kbGUgIT0gRmlsZVN5c3Rl
bTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxl
KGZpbGVIYW5kbGUpOwogICAgICphbGxvd092ZXJ3cml0ZSA9IFlFUzsKICAgICByZXR1cm4gX2Rl
c3RpbmF0aW9uUGF0aDsKIH0KQEAgLTQ4Nyw3ICs0ODcsNyBAQCAtICh2b2lkKV9kb3dubG9hZERp
ZEZpbmlzaDooX1dLRG93bmxvYWQgKilkb3dubG9hZAogICAgIGlmIChyZWRpcmVjdENoYWluLmNv
dW50ID4gMikKICAgICAgICAgRVhQRUNUX1NUUkVRKCJodHRwOi8vcGFzcy8iLCBbcmVkaXJlY3RD
aGFpblsyXS5hYnNvbHV0ZVN0cmluZyBVVEY4U3RyaW5nXSk7CiAKLSAgICBXZWJDb3JlOjpGaWxl
U3lzdGVtOjpkZWxldGVGaWxlKF9kZXN0aW5hdGlvblBhdGgpOworICAgIEZpbGVTeXN0ZW06OmRl
bGV0ZUZpbGUoX2Rlc3RpbmF0aW9uUGF0aCk7CiAgICAgaXNEb25lID0gdHJ1ZTsKIH0KIApAQCAt
NjMyLDE3ICs2MzIsMTcgQEAgLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxv
YWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUKIHsKICAgICBFWFBFQ1Rf
VFJVRShbZmlsZW5hbWUgaGFzU3VmZml4OkAiLnVzZHoiXSk7CiAKLSAgICBXZWJDb3JlOjpGaWxl
U3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRsZTsKLSAgICBfZGVzdGluYXRpb25Q
YXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoZmlsZW5hbWUsIGZp
bGVIYW5kbGUpOwotICAgIEVYUEVDVF9UUlVFKGZpbGVIYW5kbGUgIT0gV2ViQ29yZTo6RmlsZVN5
c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7Ci0gICAgV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOworICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhh
bmRsZSBmaWxlSGFuZGxlOworICAgIF9kZXN0aW5hdGlvblBhdGggPSBGaWxlU3lzdGVtOjpvcGVu
VGVtcG9yYXJ5RmlsZShmaWxlbmFtZSwgZmlsZUhhbmRsZSk7CisgICAgRVhQRUNUX1RSVUUoZmls
ZUhhbmRsZSAhPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKTsKKyAgICBG
aWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CiAKICAgICBjb21wbGV0aW9uSGFuZGxl
cihZRVMsIF9kZXN0aW5hdGlvblBhdGgpOwogfQogCiAtICh2b2lkKV9kb3dubG9hZERpZEZpbmlz
aDooX1dLRG93bmxvYWQgKilkb3dubG9hZAogewotICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRl
bGV0ZUZpbGUoX2Rlc3RpbmF0aW9uUGF0aCk7CisgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShf
ZGVzdGluYXRpb25QYXRoKTsKICAgICBpc0RvbmUgPSB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkUHJvZ3Jlc3MubW0g
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkUHJvZ3Jlc3Mu
bW0KaW5kZXggZjU2MGRmM2Y0YzQyZTI0ZTY1YjNiZjYyODcxYjVmYWRjMTlhNWY2NS4uM2ViMDNm
MDRhMWRkOGE4ZTE3Njc4M2Q1ZWZmZDQ4MzQ3YTkwZGEwMCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZFByb2dyZXNzLm1tCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWRQcm9ncmVzcy5tbQpA
QCAtMjgsNyArMjgsNiBAQAogI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgogI2ltcG9ydCAiVXRp
bGl0aWVzLmgiCiAjaW1wb3J0IDxGb3VuZGF0aW9uL05TUHJvZ3Jlc3MuaD4KLSNpbXBvcnQgPFdl
YkNvcmUvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLQnJvd3NpbmdDb250ZXh0Q29u
dHJvbGxlci5oPgogI2ltcG9ydCA8V2ViS2l0L1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5o
PgogI2ltcG9ydCA8V2ViS2l0L1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg+CkBAIC0zNyw2ICszNiw3
IEBACiAjaW1wb3J0IDxXZWJLaXQvX1dLRG93bmxvYWREZWxlZ2F0ZS5oPgogI2ltcG9ydCA8cGFs
L3NwaS9jb2NvYS9OU1Byb2dyZXNzU1BJLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KKyNp
bXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1w
b3J0IDx3dGYvV2Vha09iakNQdHIuaD4KIApAQCAtMzgwLDEwICszODAsMTAgQEAgLSAodm9pZClf
ZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3Vn
Z2VzdGVkRmlsZW5hbWUKIHsKICAgICBFWFBFQ1RfRVEoZG93bmxvYWQsIG1fZG93bmxvYWQuZ2V0
KCkpOwogCi0gICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGVI
YW5kbGU7Ci0gICAgUmV0YWluUHRyPE5TU3RyaW5nPiBwYXRoID0gKE5TU3RyaW5nICopV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoIlRlc3RXZWJLaXRBUEkiLCBmaWxlSGFu
ZGxlKTsKLSAgICBFWFBFQ1RfVFJVRShmaWxlSGFuZGxlICE9IFdlYkNvcmU6OkZpbGVTeXN0ZW06
OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpOwotICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmNs
b3NlRmlsZShmaWxlSGFuZGxlKTsKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUg
ZmlsZUhhbmRsZTsKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IHBhdGggPSAoTlNTdHJpbmcgKilG
aWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiVGVzdFdlYktpdEFQSSIsIGZpbGVIYW5kbGUp
OworICAgIEVYUEVDVF9UUlVFKGZpbGVIYW5kbGUgIT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRm
b3JtRmlsZUhhbmRsZSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOwog
CiAgICAgY29tcGxldGlvbkhhbmRsZXIoWUVTLCBwYXRoLmdldCgpKTsKIH0KZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL1BsYXRmb3JtVXRpbGl0aWVzV2luLmNwcCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvd2luL1BsYXRmb3JtVXRpbGl0aWVzV2luLmNwcAppbmRleCAwNTZiZmY3
NzgyOTUyOGIxMjkwZjEyZTM5YWIyMzhiMGY2ODY4Yjg2Li4zNWYyMmUyYThiMWJmZTUwYTQ3MDU5
MDkxODM0NzIzNjc5YTNkN2ZkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL3dpbi9Q
bGF0Zm9ybVV0aWxpdGllc1dpbi5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS93aW4vUGxh
dGZvcm1VdGlsaXRpZXNXaW4uY3BwCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSAiUGxhdGZv
cm1VdGlsaXRpZXMuaCIKIAogI2luY2x1ZGUgPFNobHdhcGkuaD4KLSNpbmNsdWRlIDxXZWJDb3Jl
L0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaD4KIApA
QCAtNDAsMTkgKzQwLDE5IEBAIHN0YXRpYyBTdHJpbmcgbW9kdWxlRGlyZWN0b3J5KCkKICAgICB3
Y2hhcl90IGZpbGVuYW1lW2J1ZmZlckxlbmd0aF07CiAgICAgYXV0byBsZW4gPSBHZXRNb2R1bGVG
aWxlTmFtZShudWxscHRyLCBmaWxlbmFtZSwgYnVmZmVyTGVuZ3RoKTsKICAgICBBU1NFUlQobGVu
ID4gMCk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUod2No
YXJUb1N0cmluZyhmaWxlbmFtZSwgbGVuKSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OmRpcmVj
dG9yeU5hbWUod2NoYXJUb1N0cmluZyhmaWxlbmFtZSwgbGVuKSk7CiB9CiAKIFdLU3RyaW5nUmVm
IGNyZWF0ZUluamVjdGVkQnVuZGxlUGF0aCgpCiB7Ci0gICAgYXV0byBwYXRoID0gV2ViQ29yZTo6
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1vZHVsZURpcmVjdG9yeSgpLCBT
dHJpbmcoTCJUZXN0V2ViS2l0QVBJSW5qZWN0ZWRCdW5kbGUuZGxsIikpOworICAgIGF1dG8gcGF0
aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtb2R1bGVEaXJlY3Rvcnko
KSwgU3RyaW5nKEwiVGVzdFdlYktpdEFQSUluamVjdGVkQnVuZGxlLmRsbCIpKTsKICAgICByZXR1
cm4gV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcocGF0aC51dGY4KCkuZGF0YSgpKTsKIH0K
IAogV0tVUkxSZWYgY3JlYXRlVVJMRm9yUmVzb3VyY2UoY29uc3QgY2hhciogcmVzb3VyY2UsIGNv
bnN0IGNoYXIqIGV4dGVuc2lvbikKIHsKICAgICBTdHJpbmcgZmlsZW5hbWUgPSBTdHJpbmc6OmZv
cm1hdCgiLi5cXC4uXFwuLlxcVG9vbHNcXFRlc3RXZWJLaXRBUElcXFRlc3RzXFxXZWJLaXRcXCVz
LiVzIiwgcmVzb3VyY2UsIGV4dGVuc2lvbik7Ci0gICAgYXV0byB1cmwgPSBVUkw6OmZpbGVVUkxX
aXRoRmlsZVN5c3RlbVBhdGgoV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KG1vZHVsZURpcmVjdG9yeSgpLCBmaWxlbmFtZSkpOworICAgIGF1dG8gdXJsID0gVVJM
OjpmaWxlVVJMV2l0aEZpbGVTeXN0ZW1QYXRoKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChtb2R1bGVEaXJlY3RvcnkoKSwgZmlsZW5hbWUpKTsKICAgICByZXR1cm4gV0tVUkxD
cmVhdGVXaXRoVVRGOENTdHJpbmcodXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359559</attachid>
            <date>2019-01-18 17:04:59 -0800</date>
            <delta_ts>2019-01-18 22:45:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193602-20190118170457.patch</filename>
            <type>text/plain</type>
            <size>424227</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwMTkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGI4YzQxMjQ1MDg3NmExYmNkZjBhZWVl
ZDliOTE3YmM4ODZiYzlkOTIuLmQwMmZlMDRhYTc4MmI3ODFkYzhjNmU3OTkxNzUzMDk4NWQ1OGQ1
MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTktMDEtMTggIFJvc3MgS2lyc2xpbmcgIDxyb3Nz
LmtpcnNsaW5nQHNvbnkuY29tPgorCisgICAgICAgIE1vdmUgRmlsZVN5c3RlbSB0byBXVEYKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzYwMgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV1RGLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0OgorICAg
ICAgICAqIHd0Zi9GaWxlTWV0YWRhdGEuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0ZpbGVNZXRhZGF0YS5oLgorICAgICAgICAqIHd0Zi9GaWxlU3lzdGVtLmNwcDogUmVu
YW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwLgorICAgICAg
ICAqIHd0Zi9GaWxlU3lzdGVtLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9GaWxlU3lzdGVtLmguCisgICAgICAgICogd3RmL1BsYXRmb3JtR1RLLmNtYWtlOgorICAgICAg
ICAqIHd0Zi9QbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1QbGF5U3Rh
dGlvbi5jbWFrZToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1XUEUuY21ha2U6CisgICAgICAgICog
d3RmL1BsYXRmb3JtV2luLmNtYWtlOgorICAgICAgICAqIHd0Zi9jZi9GaWxlU3lzdGVtQ0YuY3Bw
OiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvRmlsZVN5c3RlbUNGLmNw
cC4KKyAgICAgICAgKiB3dGYvY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tOiBSZW5hbWVkIGZyb20g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tLgorICAgICAg
ICAqIHd0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwLgorICAgICAgICAqIHd0Zi9tYWMv
RmlsZVN5c3RlbU1hYy5tbTogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9GaWxlU3lzdGVtTWFjLm1tLgorICAgICAgICAqIHd0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVgu
Y3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3Rl
bVBPU0lYLmNwcC4KKyAgICAgICAgKiB3dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0ZpbGVTeXN0ZW1XaW4uY3BwLgorICAg
ICAgICAqIHd0Zi93aW4vUGF0aFdhbGtlci5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vUGF0aFdhbGtlci5jcHAuCisgICAgICAgICogd3RmL3dpbi9QYXRoV2Fs
a2VyLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGF0aFdhbGtl
ci5oLgorCiAyMDE5LTAxLTE4ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29t
PgogCiAgICAgICAgIEdldCByaWQgb2YgQURWQU5DRURfU1BFTExfQ0hFQ0tJTkcKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCBjMDQxZGMyZDE2NDVmNDQ5NzRmMGJkNDliNDQ1NzNjMGI2Mzc2M2Q2Li45OTljOGQ2ODEw
NTJjMDBiYWE3OTI4N2U0NmVmYzg0ZjAyYTg1MDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODEg
QEAKKzIwMTktMDEtMTggIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgor
CisgICAgICAgIE1vdmUgRmlsZVN5c3RlbSB0byBXVEYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzYwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3Bw
OgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5
U2Vzc2lvbi5jcHA6CisgICAgICAgICogTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0u
Y3BwOgorICAgICAgICAqIE1vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRW50cnkuY3BwOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5jcHA6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5j
cHA6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQlRyYW5zYWN0
aW9uLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURC
U2VydmVyLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tl
ci5jcHA6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5Mb2NrLmNwcDoKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL09yaWdpbkxvY2suaDoKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmRhdGFiYXNlL2NvY29hL0RhdGFiYXNlTWFuYWdlckNvY29hLm1tOgorICAgICAgICAq
IFBsYXRmb3JtTWFjLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtUGxheVN0YXRpb24uY21ha2U6
CisgICAgICAgICogUGxhdGZvcm1XaW4uY21ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6Cisg
ICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvR0NDb250cm9sbGVyLmNwcDoK
KyAgICAgICAgKiBkb20vRGF0YVRyYW5zZmVySXRlbS5jcHA6CisgICAgICAgICogZWRpdGluZy9j
b2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW06CisgICAgICAgICogZmlsZWFwaS9GaWxlLmNw
cDoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVDb2NvYS5tbToKKyAgICAgICAgKiBodG1sL0ZpbGVJ
bnB1dFR5cGUuY3BwOgorICAgICAgICAqIGh0bWwvRmlsZUxpc3RDcmVhdG9yLmNwcDoKKyAgICAg
ICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAgICAq
IGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgICog
cGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5T3JpZ2luLmNwcDoKKyAgICAg
ICAgKiBwYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vRmls
ZUhhbmRsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL0ZpbGVTdHJlYW0uY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL0ZpbGVTdHJlYW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Tb3VyY2VzR0xpYi50eHQ6CisgICAgICAgICogcGxhdGZv
cm0vY29jb2EvRmlsZU1vbml0b3JDb2NvYS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL0Zp
bGVNb25pdG9yR0xpYi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJH
bGliLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9D
RE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLm1tOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25NZWRp
YVNvdXJjZUFWRk9iakMubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9RdWlja0xvb2subW06CisgICAgICAgICog
cGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW06CisgICAgICAgICogcGxh
dGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29h
Lm1tOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmNw
cDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW06CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybENhY2hlRW50cnkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bENhY2hlTWFuYWdlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxG
b3JtRGF0YVN0cmVhbS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVx
dWVzdC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNl
c3Npb25DdXJsLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VI
YW5kbGVDdXJsLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9CbG9iRGF0YUZp
bGVSZWZlcmVuY2VNYWMubW06CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291
cmNlSGFuZGxlU291cC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBO
ZXR3b3JrU2Vzc2lvbi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVy
UE9TSVguY3BwOgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcDoK
KyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudURCLmNwcDoKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJU
aGVtZUd0ay5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmNwcDoKKyAg
ICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcDoK
KwogMjAxOS0wMS0xOCAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZXZlcnQgcjIzODgxNSwgaXQgYnJva2UgV0sxIHZpZGVvIGZ1bGxzY3JlZW4gb24g
TWFjCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCmluZGV4IGQ3NzFiZWY5Y2Y2ODk1NTIzZWNmZGIwYTJmOWZiNzVjZjdlYTgwZTAu
LjBhMjJjN2ZiZDVjM2I5YWQxZDIyMDY3N2M1NWZjYWViNWI1YWE3ZGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsODIgQEAKKzIwMTktMDEtMTggIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNv
bnkuY29tPgorCisgICAgICAgIE1vdmUgRmlsZVN5c3RlbSB0byBXVEYKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzYwMgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuY3BwOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
YWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlQmxvYlN0b3JhZ2UuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZURhdGEuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxDb2NvYS5tbToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxTb3VwLmNwcDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmNwcDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUHJvY2Vzc01hYy5tbToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHA6CisgICAgICAgICogUGx1Z2lu
UHJvY2Vzcy91bml4L1BsdWdpblByb2Nlc3NNYWluVW5peC5jcHA6CisgICAgICAgICogU2hhcmVk
L1BlcnNpc3RlbmN5VXRpbHMuY3BwOgorICAgICAgICAqIFNoYXJlZC9QbHVnaW5zL05ldHNjYXBl
L3VuaXgvTmV0c2NhcGVQbHVnaW5Nb2R1bGVVbml4LmNwcDoKKyAgICAgICAgKiBTaGFyZWQvUGx1
Z2lucy91bml4L1BsdWdpblNlYXJjaFBhdGguY3BwOgorICAgICAgICAqIFNoYXJlZC9XZWJNZW1v
cnlTYW1wbGVyLmg6CisgICAgICAgICogU2hhcmVkL2dsaWIvUHJvY2Vzc0V4ZWN1dGFibGVQYXRo
R0xpYi5jcHA6CisgICAgICAgICogU2hhcmVkL2lvcy9DaGlsZFByb2Nlc3NJT1MubW06CisgICAg
ICAgICogU2hhcmVkL21hYy9DaGlsZFByb2Nlc3NNYWMubW06CisgICAgICAgICogU2hhcmVkL21h
Yy9TYW5kYm94RXh0ZW5zaW9uTWFjLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQ29u
dGVudFJ1bGVMaXN0U3RvcmUuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJ
V2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9B
UElXZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGli
L0ljb25EYXRhYmFzZS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZh
dmljb25EYXRhYmFzZS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZp
bGVDaG9vc2VyUmVxdWVzdC5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dFdlYkNvbnRleHQuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJz
aXRlRGF0YU1hbmFnZXIuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd2luL0FQSVdlYnNp
dGVEYXRhU3RvcmVXaW4uY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1
dG9tYXRpb25TZXNzaW9uLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRD
bGllbnQubW06CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2Eu
bW06CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAq
IFVJUHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5jcHA6CisgICAgICAgICogVUlQcm9j
ZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1
bmNoZXIvZ2xpYi9CdWJibGV3cmFwTGF1bmNoZXIuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9M
YXVuY2hlci9nbGliL1Byb2Nlc3NMYXVuY2hlckdMaWIuY3BwOgorICAgICAgICAqIFVJUHJvY2Vz
cy9QbHVnaW5zL2d0ay9QbHVnaW5JbmZvQ2FjaGUuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9Q
bHVnaW5zL21hYy9QbHVnaW5Qcm9jZXNzUHJveHlNYWMubW06CisgICAgICAgICogVUlQcm9jZXNz
L1BsdWdpbnMvdW5peC9QbHVnaW5JbmZvU3RvcmVVbml4LmNwcDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvUGx1Z2lucy91bml4L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3BwOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHA6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNwcDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUHJveHlHTGliLmNwcDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvZ3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNwcDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvZ3RrL1dlYlByb2Nlc3NQb29sR3RrLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL2Zv
cm1zL1dLRmlsZVVwbG9hZFBhbmVsLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFn
ZVByb3h5TWFjLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1Bvb2xXaW4u
Y3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHA6CisgICAgICAgICogVUlQ
cm9jZXNzL3dwZS9XZWJQcm9jZXNzUG9vbFdQRS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRFeHRlbnNpb25NYW5hZ2VyLmNwcDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL2dsaWIvSW5qZWN0ZWRCdW5kbGVHbGliLmNw
cDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFu
YWdlci5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBl
UGx1Z2luU3RyZWFtLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nl
c3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nl
c3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9n
dGsvV2ViSW5zcGVjdG9yVUlHdGsuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS93
aW4vV2ViSW5zcGVjdG9yVUlXaW4uY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvV2Vi
UHJvY2Vzc0NvY29hLm1tOgorCiAyMDE5LTAxLTE4ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFw
cGxlLmNvbT4KIAogICAgICAgICBGaXggc29tZSBidWlsZCBpc3N1ZXMuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdl
TG9nCmluZGV4IDFiNGJiZjc1ODYzYzM2MDdhMDIzNGU4ZTRmZWMwZmExMWM5NGFjZWQuLjA0OGQ5
MjQwNmVmZmQ2YzFkMDhjNDUwYzc4NjRlZmVkYjllMWQ5ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTQgQEAKKzIwMTktMDEtMTggIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNs
aW5nQHNvbnkuY29tPgorCisgICAgICAgIE1vdmUgRmlsZVN5c3RlbSB0byBXVEYKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzYwMgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU3RvcmFnZS9TdG9yYWdl
QXJlYVN5bmMuY3BwOgorICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmNwcDoK
KyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcDoKKwogMjAxOS0wMS0xOCAgRXJp
YyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZlcnQgcjIz
ODgxNSwgaXQgYnJva2UgV0sxIHZpZGVvIGZ1bGxzY3JlZW4gb24gTWFjCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cKaW5kZXggMWUwNjRmZWM3YmNiMGRhYjA3NDNjM2Q1MmNhYmYxZmUzYzkyM2I0
My4uNGMxNjlhOWMyMGYwNzI4NjIxZjBhZTU1ZDExYmU1MDg5ZTRjMjVlZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE5LTAxLTE4ICBSb3NzIEtpcnNs
aW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KKworICAgICAgICBNb3ZlIEZpbGVTeXN0ZW0g
dG8gV1RGCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTM2MDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IE1pc2MvV2ViTlNGaWxlTWFuYWdlckV4dHJhcy5tbToKKyAgICAgICAgKiBTdG9yYWdlL1dlYkRh
dGFiYXNlUHJvdmlkZXIubW06CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorCiAyMDE5
LTAxLTE4ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAg
IFJldmVydCByMjM4ODE1LCBpdCBicm9rZSBXSzEgdmlkZW8gZnVsbHNjcmVlbiBvbiBNYWMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCAzYWNiNjdmNWMzNjVkZWQzMDIzM2RjYzNjYmRl
NDZiYmFkMGI4MmExLi5mYTU4ZDc1NGNhOTc1YzVlMDYwNDc2NzRlYTAxNmM5MDgwYThmZTRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTktMDEtMTgg
IFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgorCisgICAgICAgIE1vdmUg
RmlsZVN5c3RlbSB0byBXVEYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE5MzYwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHA6CisgICAgICAgICogUGx1Z2lu
cy9QbHVnaW5QYWNrYWdlLmg6CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5TdHJlYW0uaDoKKyAg
ICAgICAgKiBXZWJBcHBsaWNhdGlvbkNhY2hlLmNwcDoKKyAgICAgICAgKiBXZWJEYXRhYmFzZU1h
bmFnZXIuY3BwOgorICAgICAgICAqIFdlYkRvd25sb2FkQ3VybC5jcHA6CisgICAgICAgICogV2Vi
UHJlZmVyZW5jZXMuY3BwOgorICAgICAgICAqIFdlYlZpZXcuY3BwOgorCiAyMDE5LTAxLTE3ICBQ
ZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2luXVtIaWdo
RFBJXSBSZXBhaW50IGdsaXRjaGVzIHdoZW4gc2Nyb2xsaW5nLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYTIyMzk0OTBkMTEyZGNhNDZhNWFhNGJjZGVkMzVm
ZGJjYWFlYzllOS4uODAxMGE5OTRmZWE3YzRlZmQwYjIwYjc4NmE2ZDUzOTRlNTEwYWJiMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04OSw2ICs4OSwxMSBA
QAogCQk5MzkzNEJENTE4QTFGMTY5MDBEMEQ2QTEgLyogU3RyaW5nVmlld0NGLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzOTM0QkQ0MThBMUYxNjkw
MEQwRDZBMSAvKiBTdHJpbmdWaWV3Q0YuY3BwICovOyB9OwogCQk5M0YxOTkzRTE5RDc5NThEMDBD
MjM5MEIgLyogU3RyaW5nVmlldy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5M0YxOTkzRDE5RDc5NThEMDBDMjM5MEIgLyogU3RyaW5nVmlldy5jcHAg
Ki87IH07CiAJCTlCQzcwRjA1MTc2QzM3OUQwMDEwMURFQyAvKiBBdG9taWNTdHJpbmdUYWJsZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QkM3MEYw
NDE3NkMzNzlEMDAxMDFERUMgLyogQXRvbWljU3RyaW5nVGFibGUuY3BwICovOyB9OworCQlBMzMx
RDk1QjIxRjI0OTkyMDA5RjAyQUEgLyogRmlsZVN5c3RlbS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMzMxRDk1QTIxRjI0OTkyMDA5RjAyQUEgLyog
RmlsZVN5c3RlbS5jcHAgKi87IH07CisJCUEzMzFEOTVEMjFGMjQ5RTQwMDlGMDJBQSAvKiBGaWxl
U3lzdGVtQ0YuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTMzMUQ5NUMyMUYyNDlFNDAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1DRi5jcHAgKi87IH07CisJ
CUEzMzFEOTVGMjFGMjQ5RjYwMDlGMDJBQSAvKiBGaWxlU3lzdGVtQ29jb2EubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMzMxRDk1RTIxRjI0OUY2MDA5
RjAyQUEgLyogRmlsZVN5c3RlbUNvY29hLm1tICovOyB9OworCQlBMzMxRDk2MTIxRjI0QTBBMDA5
RjAyQUEgLyogRmlsZVN5c3RlbU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEEzMzFEOTYwMjFGMjRBMEEwMDlGMDJBQSAvKiBGaWxlU3lzdGVtTWFj
Lm1tICovOyB9OworCQlBMzMxRDk2NzIxRjI0QUJEMDA5RjAyQUEgLyogRmlsZVN5c3RlbVBPU0lY
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzMzFE
OTY2MjFGMjRBQkQwMDlGMDJBQSAvKiBGaWxlU3lzdGVtUE9TSVguY3BwICovOyB9OwogCQlBM0I3
MjVFQzk4NzQ0NkFEOTNGMUE0NDAgLyogUmFuZG9tRGV2aWNlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM4RjU5N0NBMkE1NzQxN0ZCQUI5MkZENiAv
KiBSYW5kb21EZXZpY2UuY3BwICovOyB9OwogCQlBM0U0REQ5MzFGM0E4MDM0MDBERUQwQjQgLyog
VGV4dFN0cmVhbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBM0U0REQ5MTFGM0E4MDM0MDBERUQwQjQgLyogVGV4dFN0cmVhbS5jcHAgKi87IH07CiAJ
CUE1QkExNUYzMTgyNDMzQTkwMEE4MkU2OSAvKiBTdHJpbmdDb2NvYS5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QkExNUYyMTgyNDMzQTkwMEE4MkU2
OSAvKiBTdHJpbmdDb2NvYS5tbSAqLzsgfTsKQEAgLTQzMCw2ICs0MzUsMTMgQEAKIAkJOUM2N0M1
NDI1ODkzNDhFMjg1QjQ5Njk5IC8qIEluZGV4ZWRDb250YWluZXJJdGVyYXRvci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmRleGVkQ29udGFpbmVySXRlcmF0b3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTMwRDQxMkMxRjBERTBCQTAwQjcxOTU0IC8qIFNv
ZnRMaW5raW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvZnRMaW5raW5n
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzMEQ0MTJEMUYwREUxM0YwMEI3MTk1
NCAvKiBTb2Z0TGlua2luZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb2Z0
TGlua2luZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMzMxRDk1ODIxRjI0OTc4
MDA5RjAyQUEgLyogRmlsZU1ldGFkYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEZpbGVNZXRhZGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMzMxRDk1
OTIxRjI0OTkyMDA5RjAyQUEgLyogRmlsZVN5c3RlbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBGaWxlU3lzdGVtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEz
MzFEOTVBMjFGMjQ5OTIwMDlGMDJBQSAvKiBGaWxlU3lzdGVtLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZpbGVTeXN0ZW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlBMzMxRDk1QzIxRjI0OUU0MDA5RjAyQUEgLyogRmlsZVN5c3RlbUNGLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZpbGVTeXN0ZW1DRi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEzMzFEOTVFMjFGMjQ5RjYwMDlGMDJBQSAvKiBG
aWxlU3lzdGVtQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBGaWxlU3lzdGVtQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEzMzFE
OTYwMjFGMjRBMEEwMDlGMDJBQSAvKiBGaWxlU3lzdGVtTWFjLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gRmlsZVN5c3RlbU1hYy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQTMzMUQ5NjYyMUYyNEFCRDAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1QT1NJ
WC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxlU3lzdGVtUE9T
SVguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMzZFMTZGNzIxNkZGODI4MDA4
REQ4N0UgLyogV1RGU2VtYXBob3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdURlNlbWFwaG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBM0FCNkU2QTFG
M0UxQUQ2MDA5QzE0QjEgLyogVmFsdWVUb1N0cmluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBWYWx1ZVRvU3RyaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUEzRTRERDkxMUYzQTgwMzQwMERFRDBCNCAvKiBUZXh0U3RyZWFtLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRTdHJlYW0uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNzE3LDYgKzcyOSw3IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQk1QzFG
MDU5MTIxNjQzNTZCMDAzOTMwMkMgLyogQ0ZVUkxFeHRyYXMuY3BwICovLAogCQkJCTVDMUYwNTky
MjE2NDM1NkIwMDM5MzAyQyAvKiBDRlVSTEV4dHJhcy5oICovLAorCQkJCUEzMzFEOTVDMjFGMjQ5
RTQwMDlGMDJBQSAvKiBGaWxlU3lzdGVtQ0YuY3BwICovLAogCQkJCUMyQkNGQzQxMUY2MUQ2MTYw
MEM5MjIyQyAvKiBMYW5ndWFnZUNGLmNwcCAqLywKIAkJCQkyQ0RFRDBFRTE4MTE1QzM4MDA0REJB
NzAgLyogUnVuTG9vcENGLmNwcCAqLywKIAkJCQkxQUZERTY0NzE5NTIwMUMzMDBDNDhGRkEgLyog
VHlwZUNhc3RzQ0YuaCAqLywKQEAgLTc3NCw2ICs3ODcsMTQgQEAKIAkJCW5hbWUgPSBTb3VyY2U7
CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQlBMzMxRDk2MzIxRjI0QTJFMDA5
RjAyQUEgLyogcG9zaXggKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0g
KAorCQkJCUEzMzFEOTY2MjFGMjRBQkQwMDlGMDJBQSAvKiBGaWxlU3lzdGVtUE9TSVguY3BwICov
LAorCQkJKTsKKwkJCXBhdGggPSBwb3NpeDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJ
CX07CiAJCUE1QkExNUYxMTgyNDMzOUYwMEE4MkU2OSAvKiBjb2NvYSAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC04MDcsNiArODI4LDcgQEAKIAkJCQkxRkE0
N0M4NzE1MjUwMkRBMDA1NjhEMUIgLyogaW9zICovLAogCQkJCUE4QTQ3MkM0MTUxQTgyNUEwMDQx
MjNGRiAvKiBtYWMgKi8sCiAJCQkJRTQzQTQ2ODUxRTIyOEI1NzAwMjc2QjA1IC8qIHBlcnNpc3Rl
bmNlICovLAorCQkJCUEzMzFEOTYzMjFGMjRBMkUwMDlGMDJBQSAvKiBwb3NpeCAqLywKIAkJCQlD
RUY0ODIwQzE5REEzNDc2MDBDQzA0QjggLyogc3BpICovLAogCQkJCUE4QTQ3MzFCMTUxQTgyNUIw
MDQxMjNGRiAvKiB0ZXh0ICovLAogCQkJCUE4QTQ3MzM5MTUxQTgyNUIwMDQxMjNGRiAvKiB0aHJl
YWRzICovLApAQCAtODk0LDggKzkxNiwxMSBAQAogCQkJCUE4QTQ3MkEyMTUxQTgyNUEwMDQxMjNG
RiAvKiBGYXN0TWFsbG9jLmggKi8sCiAJCQkJMEY3OUM3QzMxRTczNTExODAwRUIzNEQxIC8qIEZh
c3RUTFMuaCAqLywKIAkJCQlCMzhGRDdCQzE2ODk1M0U4MDA2NUM5NjkgLyogRmVhdHVyZURlZmlu
ZXMuaCAqLywKKwkJCQlBMzMxRDk1ODIxRjI0OTc4MDA5RjAyQUEgLyogRmlsZU1ldGFkYXRhLmgg
Ki8sCiAJCQkJMEY5RDMzNUIxNjVEQkE3MzAwNUFEMzg3IC8qIEZpbGVQcmludFN0cmVhbS5jcHAg
Ki8sCiAJCQkJMEY5RDMzNUMxNjVEQkE3MzAwNUFEMzg3IC8qIEZpbGVQcmludFN0cmVhbS5oICov
LAorCQkJCUEzMzFEOTVBMjFGMjQ5OTIwMDlGMDJBQSAvKiBGaWxlU3lzdGVtLmNwcCAqLywKKwkJ
CQlBMzMxRDk1OTIxRjI0OTkyMDA5RjAyQUEgLyogRmlsZVN5c3RlbS5oICovLAogCQkJCTBGMkI2
NkE1MTdCNkI0RjcwMEE3QUUzRiAvKiBGbGlwQnl0ZXMuaCAqLywKIAkJCQlGRTg2QTg3NDFFNTk0
NDAyMDAxMTFCQkYgLyogRm9yYmlkSGVhcEFsbG9jYXRpb24uaCAqLywKIAkJCQlBOEE0NzJBNjE1
MUE4MjVBMDA0MTIzRkYgLyogRm9yd2FyZC5oICovLApAQCAtMTE5MCw2ICsxMjE1LDcgQEAKIAkJ
CWNoaWxkcmVuID0gKAogCQkJCTFBNDI4QjhCMUM4Rjg5REQwMDUxRTlFQiAvKiBBcHBLaXRDb21w
YXRpYmlsaXR5RGVjbGFyYXRpb25zLmggKi8sCiAJCQkJMUFDQUREODIxODg0NDgwMTAwRDhCNzFE
IC8qIERlcHJlY2F0ZWRTeW1ib2xzVXNlZEJ5U2FmYXJpLm1tICovLAorCQkJCUEzMzFEOTYwMjFG
MjRBMEEwMDlGMDJBQSAvKiBGaWxlU3lzdGVtTWFjLm1tICovLAogCQkJCTUzNTM0RjI5MUVDMEUx
MEUwMDE0MUIyRiAvKiBNYWNoRXhjZXB0aW9ucy5kZWZzICovLAogCQkJKTsKIAkJCXBhdGggPSBt
YWM7CkBAIC0xMzUxLDYgKzEzNzcsNyBAQAogCQkJCUUzOEM0MTI0MUVCNEUwNEMwMDQyOTU3RCAv
KiBDUFVUaW1lQ29jb2EuY3BwICovLAogCQkJCTE0M0RERTk3MjBDOEJFOTkwMDdGNzZGQSAvKiBF
bnRpdGxlbWVudHMuaCAqLywKIAkJCQkxNDNEREU5NTIwQzhCQzM3MDA3Rjc2RkEgLyogRW50aXRs
ZW1lbnRzLm1tICovLAorCQkJCUEzMzFEOTVFMjFGMjQ5RjYwMDlGMDJBQSAvKiBGaWxlU3lzdGVt
Q29jb2EubW0gKi8sCiAJCQkJN0E2RUJBMzMyMDc0NkMzNDAwNEY5QzQ0IC8qIE1hY2hTZW5kUmln
aHQuY3BwICovLAogCQkJCUE4QTQ3MkM1MTUxQTgyNUEwMDQxMjNGRiAvKiBNYWluVGhyZWFkQ29j
b2EubW0gKi8sCiAJCQkJQURGMkNFNjUxRTM5RjEwNjAwNjg4OURCIC8qIE1lbW9yeUZvb3Rwcmlu
dENvY29hLmNwcCAqLywKQEAgLTE0NzYsNiArMTUwMywxMSBAQAogCQkJCTBGN0M1RkI2MUQ4ODVD
RjIwMDQ0RjVFMiAvKiBGYXN0Qml0VmVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3
M0MzMTUxQTgyNUIwMDQxMjNGRiAvKiBGYXN0TWFsbG9jLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGOUQzMzYwMTY1REJBNzMwMDVBRDM4NyAvKiBGaWxlUHJpbnRTdHJlYW0uY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJQTMzMUQ5NUIyMUYyNDk5MjAwOUYwMkFBIC8qIEZpbGVTeXN0ZW0uY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJQTMzMUQ5NUQyMUYyNDlFNDAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1D
Ri5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBMzMxRDk1RjIxRjI0OUY2MDA5RjAyQUEgLyogRmls
ZVN5c3RlbUNvY29hLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQTMzMUQ5NjEyMUYyNEEwQTAwOUYw
MkFBIC8qIEZpbGVTeXN0ZW1NYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQlBMzMxRDk2NzIxRjI0
QUJEMDA5RjAyQUEgLyogRmlsZVN5c3RlbVBPU0lYLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4
QTQ3M0I1MTUxQTgyNUIwMDQxMjNGRiAvKiBmaXhlZC1kdG9hLmNjIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMUExRDhCOUUxNzMxODc5ODAwMTQxREE0IC8qIEZ1bmN0aW9uRGlzcGF0Y2hlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRjVCRjE3NjFGMjNENDlBMDAyOUQ5MUQgLyogR2lnYWNhZ2UuY3Bw
IGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4
dCBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CmluZGV4IGNlZTFjY2UxZTU3MTg0ZDEz
YmQyY2Q1MTllZjZhMjBkZmZiMWE5NmEuLjdkODU4MzMyMGY0OWM2MTA0MDFjN2I4YWI0NDYzOTZk
ODhjMTUwZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CisrKyBi
L1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CkBAIC02MSw3ICs2MSw5IEBAIHNldChXVEZf
UFVCTElDX0hFQURFUlMKICAgICBGYXN0TWFsbG9jLmgKICAgICBGYXN0VExTLmgKICAgICBGZWF0
dXJlRGVmaW5lcy5oCisgICAgRmlsZU1ldGFkYXRhLmgKICAgICBGaWxlUHJpbnRTdHJlYW0uaAor
ICAgIEZpbGVTeXN0ZW0uaAogICAgIEZsaXBCeXRlcy5oCiAgICAgRm9yYmlkSGVhcEFsbG9jYXRp
b24uaAogICAgIEZvcndhcmQuaApAQCAtMzUzLDYgKzM1NSw3IEBAIHNldChXVEZfU09VUkNFUwog
ICAgIEZhc3RCaXRWZWN0b3IuY3BwCiAgICAgRmFzdE1hbGxvYy5jcHAKICAgICBGaWxlUHJpbnRT
dHJlYW0uY3BwCisgICAgRmlsZVN5c3RlbS5jcHAKICAgICBGdW5jdGlvbkRpc3BhdGNoZXIuY3Bw
CiAgICAgR2lnYWNhZ2UuY3BwCiAgICAgR2xvYmFsVmVyc2lvbi5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL0ZpbGVNZXRhZGF0YS5oIGIvU291cmNlL1dURi93dGYvRmlsZU1ldGFkYXRh
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYjhkNzc4OTI1ZTQ5YmI2MzdhYjRkNTE0ZDlhOTQwYzczZDM1NTY1Mgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVNZXRhZGF0YS5oCkBAIC0wLDAg
KzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoK
KyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgorCituYW1l
c3BhY2UgV1RGIHsKKworc3RydWN0IEZpbGVNZXRhZGF0YSB7CisgICAgLy8gVGhlIGxhc3QgbW9k
aWZpY2F0aW9uIHRpbWUgb2YgdGhlIGZpbGUsIGluIHNlY29uZHMuCisgICAgV2FsbFRpbWUgbW9k
aWZpY2F0aW9uVGltZTsKKworICAgIC8vIFRoZSBsZW5ndGggb2YgdGhlIGZpbGUgaW4gYnl0ZXMu
CisgICAgbG9uZyBsb25nIGxlbmd0aDsKKworICAgIGJvb2wgaXNIaWRkZW47CisKKyAgICBlbnVt
IGNsYXNzIFR5cGUgeyBGaWxlLCBEaXJlY3RvcnksIFN5bWJvbGljTGluayB9OworICAgIFR5cGUg
dHlwZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgorCit1c2luZyBXVEY6OkZpbGVNZXRhZGF0
YTsKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2Uv
V1RGL3d0Zi9GaWxlU3lzdGVtLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOGU2ZWQ5NDBiM2QwNGRkZjg0M2Rk
YTM2ZmFlNDkwNzE3NTI4MDY5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvRmls
ZVN5c3RlbS5jcHAKQEAgLTAsMCArMSwzNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDct
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgorCisjaW5jbHVkZSA8d3RmL0ZpbGVNZXRh
ZGF0YS5oPgorI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KKyNpbmNsdWRlIDx3dGYvU2NvcGUu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nQnVpbGRlci5oPgorCisjaWYgIU9TKFdJTkRPV1MpCisjaW5jbHVkZSA8ZmNudGwuaD4KKyNp
bmNsdWRlIDxzeXMvbW1hbi5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5jbHVkZSA8dW5p
c3RkLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFdURiB7CisKK25hbWVzcGFjZSBGaWxlU3lzdGVt
IHsKKworLy8gVGhlIGZvbGxvd2luZyBsb3dlci1BU0NJSSBjaGFyYWN0ZXJzIG5lZWQgZXNjYXBp
bmcgdG8gYmUgdXNlZCBpbiBhIGZpbGVuYW1lCisvLyBhY3Jvc3MgYWxsIHN5c3RlbXMsIGluY2x1
ZGluZyBXaW5kb3dzOgorLy8gICAgIC0gVW5wcmludGFibGUgQVNDSUkgKDAwLTFGKQorLy8gICAg
IC0gU3BhY2UgICAgICAgICAgICAgKDIwKQorLy8gICAgIC0gRG91YmxlIHF1b3RlICAgICAgKDIy
KQorLy8gICAgIC0gUGVyY2VudCAgICAgICAgICAgKDI1KSAoZXNjYXBlZCBiZWNhdXNlIGl0IGlz
IG91ciBlc2NhcGUgY2hhcmFjdGVyKQorLy8gICAgIC0gQXN0ZXJpc2sgICAgICAgICAgKDJBKQor
Ly8gICAgIC0gU2xhc2ggICAgICAgICAgICAgKDJGKQorLy8gICAgIC0gQ29sb24gICAgICAgICAg
ICAgKDNBKQorLy8gICAgIC0gTGVzcy10aGFuICAgICAgICAgKDNDKQorLy8gICAgIC0gR3JlYXRl
ci10aGFuICAgICAgKDNFKQorLy8gICAgIC0gUXVlc3Rpb24gTWFyayAgICAgKDNGKQorLy8gICAg
IC0gQmFja3NsYXNoICAgICAgICAgKDVDKQorLy8gICAgIC0gUGlwZSAgICAgICAgICAgICAgKDdD
KQorLy8gICAgIC0gRGVsZXRlICAgICAgICAgICAgKDdGKQorCitzdGF0aWMgY29uc3QgYm9vbCBu
ZWVkc0VzY2FwaW5nWzEyOF0gPSB7CisgICAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRy
dWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICAvKiAwMC0wNyAqLworICAgIHRydWUsICB0cnVlLCAg
dHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgLyogMDgtMEYgKi8KKwor
ICAgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVl
LCAgLyogMTAtMTcgKi8KKyAgICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRy
dWUsICB0cnVlLCAgdHJ1ZSwgIC8qIDE4LTFGICovCisKKyAgICB0cnVlLCAgZmFsc2UsIHRydWUs
ICBmYWxzZSwgZmFsc2UsIHRydWUsICBmYWxzZSwgZmFsc2UsIC8qIDIwLTI3ICovCisgICAgZmFs
c2UsIGZhbHNlLCB0cnVlLCAgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUsICAvKiAy
OC0yRiAqLworICAgIAorICAgIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFs
c2UsIGZhbHNlLCBmYWxzZSwgLyogMzAtMzcgKi8KKyAgICBmYWxzZSwgZmFsc2UsIHRydWUsICBm
YWxzZSwgdHJ1ZSwgIGZhbHNlLCB0cnVlLCAgdHJ1ZSwgIC8qIDM4LTNGICovCisgICAgCisgICAg
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAv
KiA0MC00NyAqLworICAgIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2Us
IGZhbHNlLCBmYWxzZSwgLyogNDgtNEYgKi8KKyAgICAKKyAgICBmYWxzZSwgZmFsc2UsIGZhbHNl
LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIC8qIDUwLTU3ICovCisgICAgZmFs
c2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUsICBmYWxzZSwgZmFsc2UsIGZhbHNlLCAvKiA1
OC01RiAqLworICAgIAorICAgIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFs
c2UsIGZhbHNlLCBmYWxzZSwgLyogNjAtNjcgKi8KKyAgICBmYWxzZSwgZmFsc2UsIGZhbHNlLCBm
YWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIC8qIDY4LTZGICovCisgICAgCisgICAg
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAv
KiA3MC03NyAqLworICAgIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCAgZmFsc2Us
IGZhbHNlLCB0cnVlLCAgLyogNzgtN0YgKi8KK307CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBzaG91
bGRFc2NhcGVVQ2hhcihVQ2hhciBjaGFyYWN0ZXIsIFVDaGFyIHByZXZpb3VzQ2hhcmFjdGVyLCBV
Q2hhciBuZXh0Q2hhcmFjdGVyKQoreworICAgIGlmIChjaGFyYWN0ZXIgPD0gMTI3KQorICAgICAg
ICByZXR1cm4gbmVlZHNFc2NhcGluZ1tjaGFyYWN0ZXJdOworCisgICAgaWYgKFUxNl9JU19MRUFE
KGNoYXJhY3RlcikgJiYgIVUxNl9JU19UUkFJTChuZXh0Q2hhcmFjdGVyKSkKKyAgICAgICAgcmV0
dXJuIHRydWU7CisKKyAgICBpZiAoVTE2X0lTX1RSQUlMKGNoYXJhY3RlcikgJiYgIVUxNl9JU19M
RUFEKHByZXZpb3VzQ2hhcmFjdGVyKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK1N0cmluZyBlbmNvZGVGb3JGaWxlTmFtZShjb25zdCBTdHJpbmcmIGlu
cHV0U3RyaW5nKQoreworICAgIHVuc2lnbmVkIGxlbmd0aCA9IGlucHV0U3RyaW5nLmxlbmd0aCgp
OworICAgIGlmICghbGVuZ3RoKQorICAgICAgICByZXR1cm4gaW5wdXRTdHJpbmc7CisKKyAgICBT
dHJpbmdCdWlsZGVyIHJlc3VsdDsKKyAgICByZXN1bHQucmVzZXJ2ZUNhcGFjaXR5KGxlbmd0aCk7
CisKKyAgICBVQ2hhciBwcmV2aW91c0NoYXJhY3RlcjsKKyAgICBVQ2hhciBjaGFyYWN0ZXIgPSAw
OworICAgIFVDaGFyIG5leHRDaGFyYWN0ZXIgPSBpbnB1dFN0cmluZ1swXTsKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgcHJldmlvdXNDaGFyYWN0
ZXIgPSBjaGFyYWN0ZXI7CisgICAgICAgIGNoYXJhY3RlciA9IG5leHRDaGFyYWN0ZXI7CisgICAg
ICAgIG5leHRDaGFyYWN0ZXIgPSBpICsgMSA8IGxlbmd0aCA/IGlucHV0U3RyaW5nW2kgKyAxXSA6
IDA7CisKKyAgICAgICAgaWYgKHNob3VsZEVzY2FwZVVDaGFyKGNoYXJhY3RlciwgcHJldmlvdXND
aGFyYWN0ZXIsIG5leHRDaGFyYWN0ZXIpKSB7CisgICAgICAgICAgICBpZiAoY2hhcmFjdGVyIDw9
IDI1NSkgeworICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyUnKTsKKyAgICAgICAgICAg
ICAgICBhcHBlbmRCeXRlQXNIZXgoY2hhcmFjdGVyLCByZXN1bHQpOworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiJSsiKTsKKyAgICAg
ICAgICAgICAgICBhcHBlbmRCeXRlQXNIZXgoY2hhcmFjdGVyID4+IDgsIHJlc3VsdCk7CisgICAg
ICAgICAgICAgICAgYXBwZW5kQnl0ZUFzSGV4KGNoYXJhY3RlciwgcmVzdWx0KTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGNoYXJhY3Rl
cik7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOworfQorCitTdHJpbmcg
ZGVjb2RlRnJvbUZpbGVuYW1lKGNvbnN0IFN0cmluZyYgaW5wdXRTdHJpbmcpCit7CisgICAgdW5z
aWduZWQgbGVuZ3RoID0gaW5wdXRTdHJpbmcubGVuZ3RoKCk7CisgICAgaWYgKCFsZW5ndGgpCisg
ICAgICAgIHJldHVybiBpbnB1dFN0cmluZzsKKworICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0Owor
ICAgIHJlc3VsdC5yZXNlcnZlQ2FwYWNpdHkobGVuZ3RoKTsKKworICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICBpZiAoaW5wdXRTdHJpbmdbaV0gIT0g
JyUnKSB7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGlucHV0U3RyaW5nW2ldKTsKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgdGhlIGlucHV0IHN0
cmluZyBpcyBhIHZhbGlkIGVuY29kZWQgZmlsZW5hbWUsIGl0IG11c3QgYmUgYXQgbGVhc3QgMiBj
aGFyYWN0ZXJzIGxvbmdlcgorICAgICAgICAvLyB0aGFuIHRoZSBjdXJyZW50IGluZGV4IHRvIGFj
Y291bnQgZm9yIHRoaXMgcGVyY2VudCBlbmNvZGVkIHZhbHVlLgorICAgICAgICBpZiAoaSArIDIg
Pj0gbGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuIHsgfTsKKworICAgICAgICBpZiAoaW5wdXRT
dHJpbmdbaSsxXSAhPSAnKycpIHsKKyAgICAgICAgICAgIGlmICghaXNBU0NJSUhleERpZ2l0KGlu
cHV0U3RyaW5nW2kgKyAxXSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAg
ICAgIGlmICghaXNBU0NJSUhleERpZ2l0KGlucHV0U3RyaW5nW2kgKyAyXSkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQodG9BU0NJSUhleFZh
bHVlKGlucHV0U3RyaW5nW2kgKyAxXSwgaW5wdXRTdHJpbmdbaSArIDJdKSk7CisgICAgICAgICAg
ICBpICs9IDI7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIC8v
IElmIHRoZSBpbnB1dCBzdHJpbmcgaXMgYSB2YWxpZCBlbmNvZGVkIGZpbGVuYW1lLCBpdCBtdXN0
IGJlIGF0IGxlYXN0IDUgY2hhcmFjdGVycyBsb25nZXIKKyAgICAgICAgLy8gdGhhbiB0aGUgY3Vy
cmVudCBpbmRleCB0byBhY2NvdW50IGZvciB0aGlzIHBlcmNlbnQgZW5jb2RlZCB2YWx1ZS4KKyAg
ICAgICAgaWYgKGkgKyA1ID49IGxlbmd0aCkKKyAgICAgICAgICAgIHJldHVybiB7IH07CisKKyAg
ICAgICAgaWYgKCFpc0FTQ0lJSGV4RGlnaXQoaW5wdXRTdHJpbmdbaSArIDJdKSkKKyAgICAgICAg
ICAgIHJldHVybiB7IH07CisgICAgICAgIGlmICghaXNBU0NJSUhleERpZ2l0KGlucHV0U3RyaW5n
W2kgKyAzXSkpCisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICBpZiAoIWlzQVNDSUlI
ZXhEaWdpdChpbnB1dFN0cmluZ1tpICsgNF0pKQorICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAg
ICAgICAgaWYgKCFpc0FTQ0lJSGV4RGlnaXQoaW5wdXRTdHJpbmdbaSArIDVdKSkKKyAgICAgICAg
ICAgIHJldHVybiB7IH07CisKKyAgICAgICAgcmVzdWx0LmFwcGVuZCh0b0FTQ0lJSGV4VmFsdWUo
aW5wdXRTdHJpbmdbaSArIDJdLCBpbnB1dFN0cmluZ1tpICsgM10pIDw8IDggfCB0b0FTQ0lJSGV4
VmFsdWUoaW5wdXRTdHJpbmdbaSArIDRdLCBpbnB1dFN0cmluZ1tpICsgNV0pKTsKKyAgICAgICAg
aSArPSA1OworICAgIH0KKworICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKK30KKworU3Ry
aW5nIGxhc3RDb21wb25lbnRPZlBhdGhJZ25vcmluZ1RyYWlsaW5nU2xhc2goY29uc3QgU3RyaW5n
JiBwYXRoKQoreworI2lmIE9TKFdJTkRPV1MpCisgICAgY2hhciBwYXRoU2VwYXJhdG9yID0gJ1xc
JzsKKyNlbHNlCisgICAgY2hhciBwYXRoU2VwYXJhdG9yID0gJy8nOworI2VuZGlmCisKKyAgICBh
dXRvIHBvc2l0aW9uID0gcGF0aC5yZXZlcnNlRmluZChwYXRoU2VwYXJhdG9yKTsKKyAgICBpZiAo
cG9zaXRpb24gPT0gbm90Rm91bmQpCisgICAgICAgIHJldHVybiBwYXRoOworCisgICAgc2l6ZV90
IGVuZE9mU3Vic3RyaW5nID0gcGF0aC5sZW5ndGgoKSAtIDE7CisgICAgaWYgKHBvc2l0aW9uID09
IGVuZE9mU3Vic3RyaW5nKSB7CisgICAgICAgIC0tZW5kT2ZTdWJzdHJpbmc7CisgICAgICAgIHBv
c2l0aW9uID0gcGF0aC5yZXZlcnNlRmluZChwYXRoU2VwYXJhdG9yLCBlbmRPZlN1YnN0cmluZyk7
CisgICAgfQorCisgICAgcmV0dXJuIHBhdGguc3Vic3RyaW5nKHBvc2l0aW9uICsgMSwgZW5kT2ZT
dWJzdHJpbmcgLSBwb3NpdGlvbik7Cit9CisKK2Jvb2wgYXBwZW5kRmlsZUNvbnRlbnRzVG9GaWxl
SGFuZGxlKGNvbnN0IFN0cmluZyYgcGF0aCwgUGxhdGZvcm1GaWxlSGFuZGxlJiB0YXJnZXQpCit7
CisgICAgYXV0byBzb3VyY2UgPSBvcGVuRmlsZShwYXRoLCBGaWxlT3Blbk1vZGU6OlJlYWQpOwor
CisgICAgaWYgKCFpc0hhbmRsZVZhbGlkKHNvdXJjZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIHN0YXRpYyBpbnQgYnVmZmVyU2l6ZSA9IDEgPDwgMTk7CisgICAgVmVjdG9yPGNoYXI+
IGJ1ZmZlcihidWZmZXJTaXplKTsKKworICAgIGF1dG8gZmlsZUNsb3NlciA9IFdURjo6bWFrZVNj
b3BlRXhpdChbc291cmNlXSgpIHsKKyAgICAgICAgUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSA9
IHNvdXJjZTsKKyAgICAgICAgY2xvc2VGaWxlKGhhbmRsZSk7CisgICAgfSk7CisKKyAgICBkbyB7
CisgICAgICAgIGludCByZWFkQnl0ZXMgPSByZWFkRnJvbUZpbGUoc291cmNlLCBidWZmZXIuZGF0
YSgpLCBidWZmZXJTaXplKTsKKyAgICAgICAgCisgICAgICAgIGlmIChyZWFkQnl0ZXMgPCAwKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGlmICh3cml0ZVRvRmlsZSh0YXJn
ZXQsIGJ1ZmZlci5kYXRhKCksIHJlYWRCeXRlcykgIT0gcmVhZEJ5dGVzKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgICAgIGlmIChyZWFkQnl0ZXMgPCBidWZmZXJTaXplKQorICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfSB3aGlsZSAodHJ1ZSk7CisKKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKK30KKworICAgIAorYm9vbCBmaWxlc0hhdmVTYW1lVm9sdW1lKGNvbnN0
IFN0cmluZyYgZmlsZUEsIGNvbnN0IFN0cmluZyYgZmlsZUIpCit7CisgICAgYXV0byBmc1JlcEZp
bGVBID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVBKTsKKyAgICBhdXRvIGZzUmVwRmls
ZUIgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZUIpOworICAgIAorICAgIGlmIChmc1Jl
cEZpbGVBLmlzTnVsbCgpIHx8IGZzUmVwRmlsZUIuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CisKKyAgICBhdXRvIGZpbGVBRGV2ID0g
Z2V0RmlsZURldmljZUlkKGZzUmVwRmlsZUEpOworICAgIGF1dG8gZmlsZUJEZXYgPSBnZXRGaWxl
RGV2aWNlSWQoZnNSZXBGaWxlQik7CisKKyAgICBpZiAoZmlsZUFEZXYgJiYgZmlsZUJEZXYpCisg
ICAgICAgIHJlc3VsdCA9IChmaWxlQURldiA9PSBmaWxlQkRldik7CisgICAgCisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKworI2lmICFQTEFURk9STShNQUMpCisKK3ZvaWQgc2V0TWV0YWRhdGFVUkwo
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikKK3sKK30KKworYm9v
bCBjYW5FeGNsdWRlRnJvbUJhY2t1cCgpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29s
IGV4Y2x1ZGVGcm9tQmFja3VwKGNvbnN0IFN0cmluZyYpCit7CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCisjZW5kaWYKKworTWFwcGVkRmlsZURhdGE6On5NYXBwZWRGaWxlRGF0YSgpCit7CisjaWYg
IU9TKFdJTkRPV1MpCisgICAgaWYgKCFtX2ZpbGVEYXRhKQorICAgICAgICByZXR1cm47CisgICAg
bXVubWFwKG1fZmlsZURhdGEsIG1fZmlsZVNpemUpOworI2VuZGlmCit9CisKK01hcHBlZEZpbGVE
YXRhOjpNYXBwZWRGaWxlRGF0YShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBib29sJiBzdWNjZXNz
KQoreworI2lmIE9TKFdJTkRPV1MpCisgICAgLy8gRklYTUU6IEltcGxlbWVudCBtYXBwaW5nCisg
ICAgc3VjY2VzcyA9IGZhbHNlOworI2Vsc2UKKyAgICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKGZpbGVQYXRoKTsKKyAgICBpbnQgZmQgPSAhZnNSZXAuaXNOdWxsKCkg
PyBvcGVuKGZzUmVwLmRhdGEoKSwgT19SRE9OTFkpIDogLTE7CisgICAgaWYgKGZkIDwgMCkgewor
ICAgICAgICBzdWNjZXNzID0gZmFsc2U7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBz
dHJ1Y3Qgc3RhdCBmaWxlU3RhdDsKKyAgICBpZiAoZnN0YXQoZmQsICZmaWxlU3RhdCkpIHsKKyAg
ICAgICAgY2xvc2UoZmQpOworICAgICAgICBzdWNjZXNzID0gZmFsc2U7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBzaXplOworICAgIGlmICghV1RGOjpjb252ZXJ0U2Fm
ZWx5KGZpbGVTdGF0LnN0X3NpemUsIHNpemUpKSB7CisgICAgICAgIGNsb3NlKGZkKTsKKyAgICAg
ICAgc3VjY2VzcyA9IGZhbHNlOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFz
aXplKSB7CisgICAgICAgIGNsb3NlKGZkKTsKKyAgICAgICAgc3VjY2VzcyA9IHRydWU7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICB2b2lkKiBkYXRhID0gbW1hcCgwLCBzaXplLCBQUk9U
X1JFQUQsIE1BUF9GSUxFIHwgTUFQX1NIQVJFRCwgZmQsIDApOworICAgIGNsb3NlKGZkKTsKKwor
ICAgIGlmIChkYXRhID09IE1BUF9GQUlMRUQpIHsKKyAgICAgICAgc3VjY2VzcyA9IGZhbHNlOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc3VjY2VzcyA9IHRydWU7CisgICAgbV9maWxl
RGF0YSA9IGRhdGE7CisgICAgbV9maWxlU2l6ZSA9IHNpemU7CisjZW5kaWYKK30KKworUGxhdGZv
cm1GaWxlSGFuZGxlIG9wZW5BbmRMb2NrRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVPcGVu
TW9kZSBvcGVuTW9kZSwgT3B0aW9uU2V0PEZpbGVMb2NrTW9kZT4gbG9ja01vZGUpCit7CisgICAg
YXV0byBoYW5kbGUgPSBvcGVuRmlsZShwYXRoLCBvcGVuTW9kZSk7CisgICAgaWYgKGhhbmRsZSA9
PSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQorICAgICAgICByZXR1cm4gaW52YWxpZFBsYXRm
b3JtRmlsZUhhbmRsZTsKKworI2lmIFVTRShGSUxFX0xPQ0spCisgICAgYm9vbCBsb2NrZWQgPSBs
b2NrRmlsZShoYW5kbGUsIGxvY2tNb2RlKTsKKyAgICBBU1NFUlRfVU5VU0VEKGxvY2tlZCwgbG9j
a2VkKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGxvY2tNb2RlKTsKKyNlbmRpZgorCisgICAg
cmV0dXJuIGhhbmRsZTsKK30KKwordm9pZCB1bmxvY2tBbmRDbG9zZUZpbGUoUGxhdGZvcm1GaWxl
SGFuZGxlIGhhbmRsZSkKK3sKKyNpZiBVU0UoRklMRV9MT0NLKQorICAgIGJvb2wgdW5sb2NrZWQg
PSB1bmxvY2tGaWxlKGhhbmRsZSk7CisgICAgQVNTRVJUX1VOVVNFRCh1bmxvY2tlZCwgdW5sb2Nr
ZWQpOworI2VuZGlmCisgICAgY2xvc2VGaWxlKGhhbmRsZSk7Cit9CisKK2Jvb2wgZmlsZUlzRGly
ZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgU2hvdWxkRm9sbG93U3ltYm9saWNMaW5rcyBzaG91
bGRGb2xsb3dTeW1ib2xpY0xpbmtzKQoreworICAgIGF1dG8gbWV0YWRhdGEgPSBzaG91bGRGb2xs
b3dTeW1ib2xpY0xpbmtzID09IFNob3VsZEZvbGxvd1N5bWJvbGljTGlua3M6OlllcyA/IGZpbGVN
ZXRhZGF0YUZvbGxvd2luZ1N5bWxpbmtzKHBhdGgpIDogZmlsZU1ldGFkYXRhKHBhdGgpOworICAg
IGlmICghbWV0YWRhdGEpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gbWV0YWRh
dGEudmFsdWUoKS50eXBlID09IEZpbGVNZXRhZGF0YTo6VHlwZTo6RGlyZWN0b3J5OworfQorCit9
IC8vIG5hbWVzcGFjZSBGaWxlU3lzdGVtCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0u
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mMWI0YjRhMDVkNDNiZTVjMTMzMmQ5ZWIyOTU2MmVlMzc1ZjA3NmE4Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCkBAIC0wLDAgKzEs
MjI2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSwgTHRkLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAorICogMy4gIE5laXRoZXIgdGhlIG5h
bWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uIAorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
CisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8dGltZS5oPgorI2luY2x1ZGUgPHV0aWxp
dHk+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+
CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCisjaWYgVVNFKENGKQorI2luY2x1ZGUgPHd0
Zi9SZXRhaW5QdHIuaD4KKyNlbmRpZgorCisjaWYgVVNFKENGKQordHlwZWRlZiBjb25zdCBzdHJ1
Y3QgX19DRkRhdGEqIENGRGF0YVJlZjsKKyNlbmRpZgorCitPQkpDX0NMQVNTIE5TU3RyaW5nOwor
CisjaWYgUExBVEZPUk0oV0lOKQordHlwZWRlZiB2b2lkICpIQU5ETEU7CisjZW5kaWYKKworI2lm
IFVTRShHTElCKQordHlwZWRlZiBzdHJ1Y3QgX0dGaWxlSU9TdHJlYW0gR0ZpbGVJT1N0cmVhbTsK
KyNlbmRpZgorCituYW1lc3BhY2UgV1RGIHsKKworc3RydWN0IEZpbGVNZXRhZGF0YTsKKworbmFt
ZXNwYWNlIEZpbGVTeXN0ZW0geworCisvLyBQbGF0Zm9ybUZpbGVIYW5kbGUKKyNpZiBVU0UoR0xJ
QikgJiYgIVBMQVRGT1JNKFdJTikKK3R5cGVkZWYgR0ZpbGVJT1N0cmVhbSogUGxhdGZvcm1GaWxl
SGFuZGxlOworY29uc3QgUGxhdGZvcm1GaWxlSGFuZGxlIGludmFsaWRQbGF0Zm9ybUZpbGVIYW5k
bGUgPSAwOworI2VsaWYgUExBVEZPUk0oV0lOKQordHlwZWRlZiBIQU5ETEUgUGxhdGZvcm1GaWxl
SGFuZGxlOworLy8gRklYTUU6IC0xIGlzIElOVkFMSURfSEFORExFX1ZBTFVFLCBkZWZpbmVkIGlu
IDx3aW5iYXNlLmg+LiBDaHJvbWl1bSB0cmllcyB0bworLy8gYXZvaWQgdXNpbmcgV2luZG93cyBo
ZWFkZXJzIGluIGhlYWRlcnMuIFdlJ2QgcmF0aGVyIG1vdmUgdGhpcyBpbnRvIHRoZSAuY3BwLgor
Y29uc3QgUGxhdGZvcm1GaWxlSGFuZGxlIGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUgPSByZWlu
dGVycHJldF9jYXN0PEhBTkRMRT4oLTEpOworI2Vsc2UKK3R5cGVkZWYgaW50IFBsYXRmb3JtRmls
ZUhhbmRsZTsKK2NvbnN0IFBsYXRmb3JtRmlsZUhhbmRsZSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFu
ZGxlID0gLTE7CisjZW5kaWYKKworZW51bSBjbGFzcyBGaWxlT3Blbk1vZGUgeworICAgIFJlYWQs
CisgICAgV3JpdGUsCisjaWYgT1MoREFSV0lOKQorICAgIEV2ZW50c09ubHksCisjZW5kaWYKK307
CisKK2VudW0gY2xhc3MgRmlsZVNlZWtPcmlnaW4geworICAgIEJlZ2lubmluZywKKyAgICBDdXJy
ZW50LAorICAgIEVuZCwKK307CisKK2VudW0gY2xhc3MgRmlsZUxvY2tNb2RlIHsKKyAgICBTaGFy
ZWQgPSAxIDw8IDAsCisgICAgRXhjbHVzaXZlID0gMSA8PCAxLAorICAgIE5vbmJsb2NraW5nID0g
MSA8PCAyLAorfTsKKworZW51bSBjbGFzcyBTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzIHsgTm8s
IFllcyB9OworCitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBmaWxlRXhpc3RzKGNvbnN0IFN0cmlu
ZyYpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZGVsZXRlRmlsZShjb25zdCBTdHJpbmcmKTsK
K1dURl9FWFBPUlRfUFJJVkFURSBib29sIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmlu
ZyYpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgbW92ZUZpbGUoY29uc3QgU3RyaW5nJiBvbGRQ
YXRoLCBjb25zdCBTdHJpbmcmIG5ld1BhdGgpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZ2V0
RmlsZVNpemUoY29uc3QgU3RyaW5nJiwgbG9uZyBsb25nJiByZXN1bHQpOworV1RGX0VYUE9SVF9Q
UklWQVRFIGJvb2wgZ2V0RmlsZVNpemUoUGxhdGZvcm1GaWxlSGFuZGxlLCBsb25nIGxvbmcmIHJl
c3VsdCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgT3B0aW9uYWw8V2FsbFRpbWU+IGdldEZpbGVNb2Rp
ZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYpOworV1RGX0VYUE9SVF9QUklWQVRFIE9wdGlvbmFs
PFdhbGxUaW1lPiBnZXRGaWxlQ3JlYXRpb25UaW1lKGNvbnN0IFN0cmluZyYpOyAvLyBOb3QgYWxs
IHBsYXRmb3JtcyBzdG9yZSBmaWxlIGNyZWF0aW9uIHRpbWUuCitXVEZfRVhQT1JUX1BSSVZBVEUg
T3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBwYXRoKTsK
K1dURl9FWFBPUlRfUFJJVkFURSBPcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YUZv
bGxvd2luZ1N5bWxpbmtzKGNvbnN0IFN0cmluZyYgcGF0aCk7CitXVEZfRVhQT1JUX1BSSVZBVEUg
Ym9vbCBmaWxlSXNEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiwgU2hvdWxkRm9sbG93U3ltYm9saWNM
aW5rcyk7CitXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29tcG9uZW50KTsKK1dURl9FWFBP
UlRfUFJJVkFURSBTdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhTdHJpbmdWaWV3IHBh
dGgsIGNvbnN0IFZlY3RvcjxTdHJpbmdWaWV3PiYgY29tcG9uZW50cyk7CitXVEZfRVhQT1JUX1BS
SVZBVEUgU3RyaW5nIGxhc3RDb21wb25lbnRPZlBhdGhJZ25vcmluZ1RyYWlsaW5nU2xhc2goY29u
c3QgU3RyaW5nJiBwYXRoKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIG1ha2VBbGxEaXJlY3Rv
cmllcyhjb25zdCBTdHJpbmcmIHBhdGgpOworV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBob21l
RGlyZWN0b3J5UGF0aCgpOworV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBwYXRoR2V0RmlsZU5h
bWUoY29uc3QgU3RyaW5nJik7CitXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGRpcmVjdG9yeU5h
bWUoY29uc3QgU3RyaW5nJik7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBnZXRWb2x1bWVGcmVl
U3BhY2UoY29uc3QgU3RyaW5nJiwgdWludDY0X3QmKTsKK1dURl9FWFBPUlRfUFJJVkFURSBPcHRp
b25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29uc3QgQ1N0cmluZyYpOworV1RGX0VYUE9S
VF9QUklWQVRFIGJvb2wgY3JlYXRlU3ltYm9saWNMaW5rKGNvbnN0IFN0cmluZyYgdGFyZ2V0UGF0
aCwgY29uc3QgU3RyaW5nJiBzeW1ib2xpY0xpbmtQYXRoKTsKKworV1RGX0VYUE9SVF9QUklWQVRF
IHZvaWQgc2V0TWV0YWRhdGFVUkwoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHVy
bFN0cmluZywgY29uc3QgU3RyaW5nJiByZWZlcnJlciA9IHsgfSk7CisKK2Jvb2wgY2FuRXhjbHVk
ZUZyb21CYWNrdXAoKTsgLy8gUmV0dXJucyB0cnVlIGlmIGFueSBmaWxlIGNhbiBldmVyIGJlIGV4
Y2x1ZGVkIGZyb20gYmFja3VwLgorYm9vbCBleGNsdWRlRnJvbUJhY2t1cChjb25zdCBTdHJpbmcm
KTsgLy8gUmV0dXJucyB0cnVlIGlmIHN1Y2Nlc3NmdWwuCisKK1dURl9FWFBPUlRfUFJJVkFURSBW
ZWN0b3I8U3RyaW5nPiBsaXN0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3Ry
aW5nJiBmaWx0ZXIgPSBTdHJpbmcoKSk7CisKK1dURl9FWFBPUlRfUFJJVkFURSBDU3RyaW5nIGZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmKTsKK1N0cmluZyBzdHJpbmdGcm9t
RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IGNoYXIqKTsKKworaW5saW5lIGJvb2wgaXNI
YW5kbGVWYWxpZChjb25zdCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkgeyByZXR1cm4gaGFu
ZGxlICE9IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7IH0KKworLy8gUHJlZml4IGlzIHdoYXQg
dGhlIGZpbGVuYW1lIHNob3VsZCBiZSBwcmVmaXhlZCB3aXRoLCBub3QgdGhlIGZ1bGwgcGF0aC4K
K1dURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5n
JiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYpOworV1RGX0VYUE9SVF9QUklWQVRFIFBsYXRm
b3JtRmlsZUhhbmRsZSBvcGVuRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVPcGVuTW9kZSk7
CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBjbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlJik7
CisvLyBSZXR1cm5zIHRoZSByZXN1bHRpbmcgb2Zmc2V0IGZyb20gdGhlIGJlZ2lubmluZyBvZiB0
aGUgZmlsZSBpZiBzdWNjZXNzZnVsLCAtMSBvdGhlcndpc2UuCitXVEZfRVhQT1JUX1BSSVZBVEUg
bG9uZyBsb25nIHNlZWtGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCwg
RmlsZVNlZWtPcmlnaW4pOworYm9vbCB0cnVuY2F0ZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBs
b25nIGxvbmcgb2Zmc2V0KTsKKy8vIFJldHVybnMgbnVtYmVyIG9mIGJ5dGVzIGFjdHVhbGx5IHJl
YWQgaWYgc3VjY2Vzc2Z1bCwgLTEgb3RoZXJ3aXNlLgorV1RGX0VYUE9SVF9QUklWQVRFIGludCB3
cml0ZVRvRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5n
dGgpOworLy8gUmV0dXJucyBudW1iZXIgb2YgYnl0ZXMgYWN0dWFsbHkgd3JpdHRlbiBpZiBzdWNj
ZXNzZnVsLCAtMSBvdGhlcndpc2UuCitXVEZfRVhQT1JUX1BSSVZBVEUgaW50IHJlYWRGcm9tRmls
ZShQbGF0Zm9ybUZpbGVIYW5kbGUsIGNoYXIqIGRhdGEsIGludCBsZW5ndGgpOworCitXVEZfRVhQ
T1JUX1BSSVZBVEUgUGxhdGZvcm1GaWxlSGFuZGxlIG9wZW5BbmRMb2NrRmlsZShjb25zdCBTdHJp
bmcmLCBGaWxlT3Blbk1vZGUsIE9wdGlvblNldDxGaWxlTG9ja01vZGU+ID0gRmlsZUxvY2tNb2Rl
OjpFeGNsdXNpdmUpOworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgdW5sb2NrQW5kQ2xvc2VGaWxl
KFBsYXRmb3JtRmlsZUhhbmRsZSk7CisKKy8vIEFwcGVuZHMgdGhlIGNvbnRlbnRzIG9mIHRoZSBm
aWxlIGZvdW5kIGF0ICdwYXRoJyB0byB0aGUgb3BlbiBQbGF0Zm9ybUZpbGVIYW5kbGUuCisvLyBS
ZXR1cm5zIHRydWUgaWYgdGhlIHdyaXRlIHdhcyBzdWNjZXNzZnVsLCBmYWxzZSBpZiBpdCB3YXMg
bm90LgorV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgYXBwZW5kRmlsZUNvbnRlbnRzVG9GaWxlSGFu
ZGxlKGNvbnN0IFN0cmluZyYgcGF0aCwgUGxhdGZvcm1GaWxlSGFuZGxlJik7CisKKy8vIEhhcmQg
bGlua3MgYSBmaWxlIGlmIHBvc3NpYmxlLCBjb3BpZXMgaXQgaWYgbm90LgorV1RGX0VYUE9SVF9Q
UklWQVRFIGJvb2wgaGFyZExpbmtPckNvcHlGaWxlKGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25z
dCBTdHJpbmcmIGRlc3RpbmF0aW9uKTsKKworI2lmIFVTRShGSUxFX0xPQ0spCitXVEZfRVhQT1JU
X1BSSVZBVEUgYm9vbCBsb2NrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUsIE9wdGlvblNldDxGaWxl
TG9ja01vZGU+KTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIHVubG9ja0ZpbGUoUGxhdGZvcm1G
aWxlSGFuZGxlKTsKKyNlbmRpZgorCisvLyBFbmNvZGUgYSBzdHJpbmcgZm9yIHVzZSB3aXRoaW4g
YSBmaWxlIG5hbWUuCitXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGVuY29kZUZvckZpbGVOYW1l
KGNvbnN0IFN0cmluZyYpOworV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBkZWNvZGVGcm9tRmls
ZW5hbWUoY29uc3QgU3RyaW5nJik7CisKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGZpbGVzSGF2
ZVNhbWVWb2x1bWUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7CisKKyNpZiBVU0UoQ0Yp
CitXVEZfRVhQT1JUX1BSSVZBVEUgUmV0YWluUHRyPENGVVJMUmVmPiBwYXRoQXNVUkwoY29uc3Qg
U3RyaW5nJik7CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQor
U3RyaW5nIGZpbGVuYW1lRm9yRGlzcGxheShjb25zdCBTdHJpbmcmKTsKKyNlbmRpZgorCisjaWYg
UExBVEZPUk0oV0lOKQorV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBsb2NhbFVzZXJTcGVjaWZp
Y1N0b3JhZ2VEaXJlY3RvcnkoKTsKK1dURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcm9hbWluZ1Vz
ZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKTsKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oQ09D
T0EpCitXVEZfRVhQT1JUX1BSSVZBVEUgTlNTdHJpbmcgKmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9y
eShOU1N0cmluZyAqZGlyZWN0b3J5UHJlZml4KTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGRl
bGV0ZU5vbkVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpOworI2VuZGlmCisKKyNpZiBQTEFU
Rk9STShXSU5fQ0FJUk8pCitXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGNyZWF0ZVRlbXBvcmFy
eURpcmVjdG9yeSgpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZGVsZXRlTm9uRW1wdHlEaXJl
Y3RvcnkoY29uc3QgU3RyaW5nJik7CisjZW5kaWYKKworV1RGX0VYUE9SVF9QUklWQVRFIFN0cmlu
ZyByZWFsUGF0aChjb25zdCBTdHJpbmcmKTsKKworY2xhc3MgTWFwcGVkRmlsZURhdGEgeworcHVi
bGljOgorICAgIE1hcHBlZEZpbGVEYXRhKCkgeyB9CisgICAgTWFwcGVkRmlsZURhdGEoTWFwcGVk
RmlsZURhdGEmJik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIE1hcHBlZEZpbGVEYXRhKGNvbnN0
IFN0cmluZyYgZmlsZVBhdGgsIGJvb2wmIHN1Y2Nlc3MpOworICAgIFdURl9FWFBPUlRfUFJJVkFU
RSB+TWFwcGVkRmlsZURhdGEoKTsKKyAgICBNYXBwZWRGaWxlRGF0YSYgb3BlcmF0b3I9KE1hcHBl
ZEZpbGVEYXRhJiYpOworCisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0
dXJuICEhbV9maWxlRGF0YTsgfQorICAgIGNvbnN0IHZvaWQqIGRhdGEoKSBjb25zdCB7IHJldHVy
biBtX2ZpbGVEYXRhOyB9CisgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmls
ZVNpemU7IH0KKworcHJpdmF0ZToKKyAgICB2b2lkKiBtX2ZpbGVEYXRhIHsgbnVsbHB0ciB9Owor
ICAgIHVuc2lnbmVkIG1fZmlsZVNpemUgeyAwIH07Cit9OworCitpbmxpbmUgTWFwcGVkRmlsZURh
dGE6Ok1hcHBlZEZpbGVEYXRhKE1hcHBlZEZpbGVEYXRhJiYgb3RoZXIpCisgICAgOiBtX2ZpbGVE
YXRhKHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9maWxlRGF0YSwgbnVsbHB0cikpCisgICAgLCBtX2Zp
bGVTaXplKHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9maWxlU2l6ZSwgMCkpCit7Cit9CisKK2lubGlu
ZSBNYXBwZWRGaWxlRGF0YSYgTWFwcGVkRmlsZURhdGE6Om9wZXJhdG9yPShNYXBwZWRGaWxlRGF0
YSYmIG90aGVyKQoreworICAgIG1fZmlsZURhdGEgPSBzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fZmls
ZURhdGEsIG51bGxwdHIpOworICAgIG1fZmlsZVNpemUgPSBzdGQ6OmV4Y2hhbmdlKG90aGVyLm1f
ZmlsZVNpemUsIDApOworICAgIHJldHVybiAqdGhpczsKK30KKworfSAvLyBuYW1lc3BhY2UgRmls
ZVN5c3RlbQorfSAvLyBuYW1lc3BhY2UgV1RGCisKK25hbWVzcGFjZSBGaWxlU3lzdGVtID0gV1RG
OjpGaWxlU3lzdGVtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1HVEsuY21h
a2UgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCA2NzNmMDJkMGQ1OTY4
NTQ1YWM4N2E4YThlNTdiMjc3MzRkNzM5ODljLi5mOWUzN2I4MDc5YmZjYWRlYzU5OGNkZmY4YTU5
MTk5NmI4Zjg0MTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUdUSy5jbWFr
ZQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtMjIsNiArMjIsNyBA
QCBsaXN0KEFQUEVORCBXVEZfU09VUkNFUwogICAgIGdlbmVyaWMvTWFpblRocmVhZEdlbmVyaWMu
Y3BwCiAgICAgZ2VuZXJpYy9Xb3JrUXVldWVHZW5lcmljLmNwcAogCisgICAgZ2xpYi9GaWxlU3lz
dGVtR2xpYi5jcHAKICAgICBnbGliL0dMaWJVdGlsaXRpZXMuY3BwCiAgICAgZ2xpYi9HUmVmUHRy
LmNwcAogICAgIGdsaWIvUnVuTG9vcEdMaWIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtTWFjLmNtYWtlCmlu
ZGV4IGZjMWU1N2I5Y2IyNmI2ZjJiNmFiYTYxNDNiZDE4YWViYmIxNmI1MzQuLjNhMTFhODUyYWUw
OTgyOGI2MTRhYTA3NzYzNTMxODE4OGY5ZWRmYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L1BsYXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtTWFjLmNtYWtl
CkBAIC00Miw2ICs0Miw3IEBAIGxpc3QoQVBQRU5EIFdURl9TT1VSQ0VTCiAgICAgU2NoZWR1bGVQ
YWlyTWFjLm1tCiAKICAgICBjZi9DRlVSTEV4dHJhcy5jcHAKKyAgICBjZi9GaWxlU3lzdGVtQ0Yu
Y3BwCiAgICAgY2YvTGFuZ3VhZ2VDRi5jcHAKICAgICBjZi9SdW5Mb29wQ0YuY3BwCiAgICAgY2Yv
VVJMQ0YuY3BwCkBAIC00OSw2ICs1MCw3IEBAIGxpc3QoQVBQRU5EIFdURl9TT1VSQ0VTCiAgICAg
Y29jb2EvQXV0b2RyYWluZWRQb29sLmNwcAogICAgIGNvY29hL0NQVVRpbWVDb2NvYS5jcHAKICAg
ICBjb2NvYS9FbnRpdGxlbWVudHMubW0KKyAgICBjb2NvYS9GaWxlU3lzdGVtQ29jb2EubW0KICAg
ICBjb2NvYS9NYWNoU2VuZFJpZ2h0LmNwcAogICAgIGNvY29hL01haW5UaHJlYWRDb2NvYS5tbQog
ICAgIGNvY29hL01lbW9yeUZvb3RwcmludENvY29hLmNwcApAQCAtNTgsNiArNjAsOSBAQCBsaXN0
KEFQUEVORCBXVEZfU09VUkNFUwogICAgIGNvY29hL1dvcmtRdWV1ZUNvY29hLmNwcAogCiAgICAg
bWFjL0RlcHJlY2F0ZWRTeW1ib2xzVXNlZEJ5U2FmYXJpLm1tCisgICAgbWFjL0ZpbGVTeXN0ZW1N
YWMubW0KKworICAgIHBvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKIAogICAgIHRleHQvY2YvQXRv
bWljU3RyaW5nSW1wbENGLmNwcAogICAgIHRleHQvY2YvU3RyaW5nQ0YuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtlIGIvU291cmNlL1dURi93
dGYvUGxhdGZvcm1QbGF5U3RhdGlvbi5jbWFrZQppbmRleCBiOTdmZWM0MGVkMzBiMTc3YjJmNTM1
YjYyMTYwZWYxZWVlMmRlNTZlLi4zZTllNzVjOTI4YTZjOTQ2MDViNGJmY2FhN2ZiYjJiOWY0MmY4
MzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtl
CisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtUGxheVN0YXRpb24uY21ha2UKQEAgLTUsNiAr
NSw4IEBAIGxpc3QoQVBQRU5EIFdURl9TT1VSQ0VTCiAgICAgZ2VuZXJpYy9SdW5Mb29wR2VuZXJp
Yy5jcHAKICAgICBnZW5lcmljL1dvcmtRdWV1ZUdlbmVyaWMuY3BwCiAKKyAgICBwb3NpeC9GaWxl
U3lzdGVtUE9TSVguY3BwCisKICAgICB0ZXh0L3VuaXgvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5h
bElDVVVuaXguY3BwCiAKICAgICB1bml4L0NQVVRpbWVVbml4LmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvUGxhdGZvcm1XUEUuY21ha2UgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdQ
RS5jbWFrZQppbmRleCA0NzNjZmQ2MDI2YjA2NTJjMmYwMmQyYjI4NTM5MmIxZDgwMmYwYmJjLi4x
ZGI5YWMzNWMxOWZkYmQ3YTU3NDVmOGE3YTBjZDk5Y2Q3NGY0OTkxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9QbGF0Zm9ybVdQRS5jbWFrZQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bVdQRS5jbWFrZQpAQCAtMTYsNiArMTYsNyBAQCBsaXN0KEFQUEVORCBXVEZfU09VUkNFUwogICAg
IGdlbmVyaWMvTWFpblRocmVhZEdlbmVyaWMuY3BwCiAgICAgZ2VuZXJpYy9Xb3JrUXVldWVHZW5l
cmljLmNwcAogCisgICAgZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKICAgICBnbGliL0dMaWJVdGls
aXRpZXMuY3BwCiAgICAgZ2xpYi9HUmVmUHRyLmNwcAogICAgIGdsaWIvUnVuTG9vcEdMaWIuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdpbi5jbWFrZSBiL1NvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtV2luLmNtYWtlCmluZGV4IDJiOGI1ZjgyNzBlYjVmMjQ2NzYwNzJkZDEy
NDU3NmRhOTMwMWYwZWEuLmI2YzBhYzZmNGRlNWUwNWYyN2Q0ZDlhYzBmZmJkNWNjNDA5N2E2ZTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV2luLmNtYWtlCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL1BsYXRmb3JtV2luLmNtYWtlCkBAIC0xMiwxNCArMTIsMjAgQEAgbGlzdChBUFBF
TkQgV1RGX1NPVVJDRVMKIAogICAgIHdpbi9DUFVUaW1lV2luLmNwcAogICAgIHdpbi9EYmdIZWxw
ZXJXaW4uY3BwCisgICAgd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCiAgICAgd2luL0xhbmd1YWdlV2lu
LmNwcAogICAgIHdpbi9NYWluVGhyZWFkV2luLmNwcAogICAgIHdpbi9NZW1vcnlGb290cHJpbnRX
aW4uY3BwCiAgICAgd2luL01lbW9yeVByZXNzdXJlSGFuZGxlcldpbi5jcHAKKyAgICB3aW4vUGF0
aFdhbGtlci5jcHAKICAgICB3aW4vUnVuTG9vcFdpbi5jcHAKICAgICB3aW4vV29ya1F1ZXVlV2lu
LmNwcAogKQogCitsaXN0KEFQUEVORCBXVEZfTElCUkFSSUVTCisgICAgc2hsd2FwaQorKQorCiBp
ZiAoVVNFX0NGKQogICAgIGxpc3QoQVBQRU5EIFdURl9QVUJMSUNfSEVBREVSUwogICAgICAgICBj
Zi9DRlVSTEV4dHJhcy5oCkBAIC0yOSw2ICszNSw3IEBAIGlmIChVU0VfQ0YpCiAgICAgKQogICAg
IGxpc3QoQVBQRU5EIFdURl9TT1VSQ0VTCiAgICAgICAgIGNmL0NGVVJMRXh0cmFzLmNwcAorICAg
ICAgICBjZi9GaWxlU3lzdGVtQ0YuY3BwCiAgICAgICAgIGNmL1VSTENGLmNwcAogCiAgICAgICAg
IHRleHQvY2YvQXRvbWljU3RyaW5nSW1wbENGLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvY2YvRmlsZVN5c3RlbUNGLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2NmL0ZpbGVTeXN0ZW1DRi5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNzEyZDY1ZmNhZDI5NmIzOTYzZjYwYTQ0OTRiNmQ3ZTkyZDRhYzUwYwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL2NmL0ZpbGVTeXN0ZW1DRi5jcHAKQEAg
LTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAxMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0
aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAg
aXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0u
aD4KKworI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGU3RyaW5nLmg+CisjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK0NTdHJpbmcgRmlsZVN5
c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAg
ICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmU3RyaW5nID0gcGF0aC5jcmVhdGVDRlN0cmluZygp
OworCisgICAgaWYgKCFjZlN0cmluZykKKyAgICAgICAgcmV0dXJuIENTdHJpbmcoKTsKKworICAg
IENGSW5kZXggc2l6ZSA9IENGU3RyaW5nR2V0TWF4aW11bVNpemVPZkZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihjZlN0cmluZy5nZXQoKSk7CisKKyAgICBWZWN0b3I8Y2hhcj4gYnVmZmVyKHNpemUp
OworCisgICAgaWYgKCFDRlN0cmluZ0dldEZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjZlN0cmlu
Zy5nZXQoKSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSkpIHsKKyAgICAgICAgTE9HX0VS
Uk9SKCJGYWlsZWQgdG8gZ2V0IGZpbGVzeXN0ZW0gcmVwcmVzZW50YXRpb24gdG8gY3JlYXRlIENT
dHJpbmcgZnJvbSBjZlN0cmluZyIpOworICAgICAgICByZXR1cm4gQ1N0cmluZygpOworICAgIH0K
KworICAgIHJldHVybiBDU3RyaW5nKGJ1ZmZlci5kYXRhKCksIHN0cmxlbihidWZmZXIuZGF0YSgp
KSk7Cit9CisKK1N0cmluZyBGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKGNvbnN0IGNoYXIqIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbikKK3sKKyAgICByZXR1
cm4gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oa0NG
QWxsb2NhdG9yRGVmYXVsdCwgZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKSkuZ2V0KCk7Cit9CisK
K1JldGFpblB0cjxDRlVSTFJlZj4gRmlsZVN5c3RlbTo6cGF0aEFzVVJMKGNvbnN0IFN0cmluZyYg
cGF0aCkKK3sKKyAgICBDRlVSTFBhdGhTdHlsZSBwYXRoU3R5bGU7CisjaWYgUExBVEZPUk0oV0lO
KQorICAgIHBhdGhTdHlsZSA9IGtDRlVSTFdpbmRvd3NQYXRoU3R5bGU7CisjZWxzZQorICAgIHBh
dGhTdHlsZSA9IGtDRlVSTFBPU0lYUGF0aFN0eWxlOworI2VuZGlmCisgICAgcmV0dXJuIGFkb3B0
Q0YoQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoMCwgcGF0aC5jcmVhdGVDRlN0cmluZygp
LmdldCgpLCBwYXRoU3R5bGUsIEZBTFNFKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tIGIvU291cmNl
L1dURi93dGYvY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI2OGUyMjc1Y2Nl
Y2I0NTRhYjBmZGIxMTBmZjdmOTQ4OGY2NTdkODcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9jb2NvYS9GaWxlU3lzdGVtQ29jb2EubW0KQEAgLTAsMCArMSwxNDMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDctMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIElu
Yy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAg
ZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLiAKKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0
ICJjb25maWcuaCIKKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CisKK0BpbnRlcmZhY2UgV1RG
V2ViRmlsZU1hbmFnZXJEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxOU0ZpbGVNYW5hZ2VyRGVsZWdhdGU+
CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXVEZXZWJGaWxlTWFuYWdlckRlbGVnYXRlCisKKy0g
KEJPT0wpZmlsZU1hbmFnZXI6KE5TRmlsZU1hbmFnZXIgKilmaWxlTWFuYWdlciBzaG91bGRQcm9j
ZWVkQWZ0ZXJFcnJvcjooTlNFcnJvciAqKWVycm9yIG1vdmluZ0l0ZW1BdFVSTDooTlNVUkwgKilz
cmNVUkwgdG9VUkw6KE5TVVJMICopZHN0VVJMCit7CisgICAgVU5VU0VEX1BBUkFNKGZpbGVNYW5h
Z2VyKTsKKyAgICBVTlVTRURfUEFSQU0oc3JjVVJMKTsKKyAgICBVTlVTRURfUEFSQU0oZHN0VVJM
KTsgICAgCisgICAgcmV0dXJuIGVycm9yLmNvZGUgPT0gTlNGaWxlV3JpdGVGaWxlRXhpc3RzRXJy
b3I7Cit9CisKK0BlbmQKKworbmFtZXNwYWNlIFdURiB7CisKK25hbWVzcGFjZSBGaWxlU3lzdGVt
IHsKKworU3RyaW5nIGhvbWVEaXJlY3RvcnlQYXRoKCkKK3sKKyAgICByZXR1cm4gTlNIb21lRGly
ZWN0b3J5KCk7Cit9CisKK1N0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHBy
ZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiBwbGF0Zm9ybUZpbGVIYW5kbGUpCit7CisgICAgcGxh
dGZvcm1GaWxlSGFuZGxlID0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKKyAgICAKKyAgICBW
ZWN0b3I8Y2hhcj4gdGVtcG9yYXJ5RmlsZVBhdGgoUEFUSF9NQVgpOworICAgIGlmICghY29uZnN0
cihfQ1NfREFSV0lOX1VTRVJfVEVNUF9ESVIsIHRlbXBvcmFyeUZpbGVQYXRoLmRhdGEoKSwgdGVt
cG9yYXJ5RmlsZVBhdGguc2l6ZSgpKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAg
Ly8gU2hyaW5rIHRoZSB2ZWN0b3IuICAgCisgICAgdGVtcG9yYXJ5RmlsZVBhdGguc2hyaW5rKHN0
cmxlbih0ZW1wb3JhcnlGaWxlUGF0aC5kYXRhKCkpKTsKKworICAgIC8vIEZJWE1FOiBDaGFuZ2Ug
dG8gYSBydW50aW1lIGFzc2VydGlvbiB0aGF0IHRoZSBwYXRoIGVuZHMgd2l0aCBhIHNsYXNoIG9u
Y2UgPHJkYXI6Ly9wcm9ibGVtLzIzNTc5MDc3PiBpcworICAgIC8vIGZpeGVkIGluIGFsbCBpT1Mg
U2ltdWxhdG9yIHZlcnNpb25zIHRoYXQgd2UgdXNlLgorICAgIGlmICh0ZW1wb3JhcnlGaWxlUGF0
aC5sYXN0KCkgIT0gJy8nKQorICAgICAgICB0ZW1wb3JhcnlGaWxlUGF0aC5hcHBlbmQoJy8nKTsK
KworICAgIC8vIEFwcGVuZCB0aGUgZmlsZSBuYW1lLgorICAgIENTdHJpbmcgcHJlZml4VXRmOCA9
IHByZWZpeC51dGY4KCk7CisgICAgdGVtcG9yYXJ5RmlsZVBhdGguYXBwZW5kKHByZWZpeFV0Zjgu
ZGF0YSgpLCBwcmVmaXhVdGY4Lmxlbmd0aCgpKTsKKyAgICB0ZW1wb3JhcnlGaWxlUGF0aC5hcHBl
bmQoIlhYWFhYWCIsIDYpOworICAgIHRlbXBvcmFyeUZpbGVQYXRoLmFwcGVuZCgnXDAnKTsKKwor
ICAgIHBsYXRmb3JtRmlsZUhhbmRsZSA9IG1rc3RlbXAodGVtcG9yYXJ5RmlsZVBhdGguZGF0YSgp
KTsKKyAgICBpZiAocGxhdGZvcm1GaWxlSGFuZGxlID09IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5k
bGUpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIHJldHVybiBTdHJpbmc6OmZyb21V
VEY4KHRlbXBvcmFyeUZpbGVQYXRoLmRhdGEoKSk7Cit9CisKK2Jvb2wgbW92ZUZpbGUoY29uc3Qg
U3RyaW5nJiBvbGRQYXRoLCBjb25zdCBTdHJpbmcmIG5ld1BhdGgpCit7CisgICAgLy8gT3Zlcndy
aXRlIGV4aXN0aW5nIGZpbGVzLgorICAgIGF1dG8gbWFuYWdlciA9IGFkb3B0TlMoW1tOU0ZpbGVN
YW5hZ2VyIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tXVEZX
ZWJGaWxlTWFuYWdlckRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgW21hbmFnZXIgc2V0RGVs
ZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworICAgIAorICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOwor
ICAgIGJvb2wgc3VjY2VzcyA9IFttYW5hZ2VyIG1vdmVJdGVtQXRVUkw6W05TVVJMIGZpbGVVUkxX
aXRoUGF0aDpvbGRQYXRoXSB0b1VSTDpbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOm5ld1BhdGhdIGVy
cm9yOiZlcnJvcl07CisgICAgaWYgKCFzdWNjZXNzKQorICAgICAgICBOU0xvZyhAIkVycm9yIGlu
IG1vdmVGaWxlOiAlQCIsIGVycm9yKTsKKyAgICByZXR1cm4gc3VjY2VzczsKK30KKworYm9vbCBn
ZXRWb2x1bWVGcmVlU3BhY2UoY29uc3QgU3RyaW5nJiBwYXRoLCB1aW50NjRfdCYgZnJlZVNwYWNl
KQoreworICAgIE5TRGljdGlvbmFyeSAqZmlsZVN5c3RlbUF0dHJpYnV0ZXNEaWN0aW9uYXJ5ID0g
W1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBhdHRyaWJ1dGVzT2ZGaWxlU3lzdGVtRm9y
UGF0aDooTlNTdHJpbmcgKilwYXRoIGVycm9yOk5VTExdOworICAgIGlmICghZmlsZVN5c3RlbUF0
dHJpYnV0ZXNEaWN0aW9uYXJ5KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgZnJlZVNwYWNl
ID0gW1tmaWxlU3lzdGVtQXR0cmlidXRlc0RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5Ok5TRmlsZVN5
c3RlbUZyZWVTaXplXSB1bnNpZ25lZExvbmdMb25nVmFsdWVdOworICAgIHJldHVybiB0cnVlOwor
fQorCitOU1N0cmluZyAqY3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KE5TU3RyaW5nICpkaXJlY3Rv
cnlQcmVmaXgpCit7CisgICAgTlNTdHJpbmcgKnRlbXBEaXJlY3RvcnkgPSBOU1RlbXBvcmFyeURp
cmVjdG9yeSgpOworICAgIGlmICghdGVtcERpcmVjdG9yeSB8fCAhW3RlbXBEaXJlY3RvcnkgbGVu
Z3RoXSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIGlmICghZGlyZWN0b3J5UHJlZml4IHx8
ICFbZGlyZWN0b3J5UHJlZml4IGxlbmd0aF0pCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBO
U1N0cmluZyAqdGVtcERpcmVjdG9yeUNvbXBvbmVudCA9IFtkaXJlY3RvcnlQcmVmaXggc3RyaW5n
QnlBcHBlbmRpbmdTdHJpbmc6QCItWFhYWFhYWFgiXTsKKyAgICBjb25zdCBjaGFyKiB0ZW1wRGly
ZWN0b3J5Q1N0cmluZyA9IFtbdGVtcERpcmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21w
b25lbnQ6dGVtcERpcmVjdG9yeUNvbXBvbmVudF0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uXTsK
KyAgICBpZiAoIXRlbXBEaXJlY3RvcnlDU3RyaW5nKQorICAgICAgICByZXR1cm4gbmlsOworCisg
ICAgY29uc3Qgc2l6ZV90IGxlbmd0aCA9IHN0cmxlbih0ZW1wRGlyZWN0b3J5Q1N0cmluZyk7Cisg
ICAgQVNTRVJUKGxlbmd0aCA8PSBNQVhQQVRITEVOKTsKKyAgICBpZiAobGVuZ3RoID4gTUFYUEFU
SExFTikKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIGNvbnN0IHNpemVfdCBsZW5ndGhQbHVz
TnVsbFRlcm1pbmF0b3IgPSBsZW5ndGggKyAxOworICAgIFZlY3RvcjxjaGFyLCBNQVhQQVRITEVO
ICsgMT4gcGF0aChsZW5ndGhQbHVzTnVsbFRlcm1pbmF0b3IpOworICAgIG1lbWNweShwYXRoLmRh
dGEoKSwgdGVtcERpcmVjdG9yeUNTdHJpbmcsIGxlbmd0aFBsdXNOdWxsVGVybWluYXRvcik7CisK
KyAgICBpZiAoIW1rZHRlbXAocGF0aC5kYXRhKCkpKQorICAgICAgICByZXR1cm4gbmlsOworCisg
ICAgcmV0dXJuIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gc3RyaW5nV2l0aEZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbjpwYXRoLmRhdGEoKSBsZW5ndGg6bGVuZ3RoXTsKK30KKworYm9v
bCBkZWxldGVOb25FbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgcmV0
dXJuIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gcmVtb3ZlSXRlbUF0UGF0aDpwYXRo
IGVycm9yOm5pbF07Cit9CisKK30gLy8gbmFtZXNwYWNlIEZpbGVTeXN0ZW0KK30gLy8gbmFtZXNw
YWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5j
cHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y
ZmY2YmQzZmE1NDgyYTVhMGY4NDBjOTY3ODQyYzQ1YjhhZTEyMmNmCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTAsMCArMSw0Njkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDkgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJl
eXRoZXIKKyAqIENvcHlyaWdodCAoQykgMjAwOCBDb2xsYWJvcmEsIEx0ZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBQb3J0aW9ucyBD
b3B5cmlnaHQgKGMpIDIwMTAgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgor
CisjaW5jbHVkZSA8Z2lvL2dmaWxlZGVzY3JpcHRvcmJhc2VkLmg+CisjaW5jbHVkZSA8Z2lvL2dp
by5oPgorI2luY2x1ZGUgPGdsaWIuaD4KKyNpbmNsdWRlIDxnbGliL2dzdGRpby5oPgorI2luY2x1
ZGUgPHN5cy9maWxlLmg+CisjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KKyNpbmNsdWRlIDx3
dGYvRmlsZU1ldGFkYXRhLmg+CisjaW5jbHVkZSA8d3RmL1VVSUQuaD4KKyNpbmNsdWRlIDx3dGYv
Z2xpYi9HTGliVXRpbGl0aWVzLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV1RGIHsKKworbmFtZXNwYWNlIEZpbGVTeXN0
ZW0geworCisvKiBPbiBsaW51eCBmaWxlIG5hbWVzIGFyZSBqdXN0IHJhdyBieXRlcywgc28gYWxz
byBzdHJpbmdzIHRoYXQgY2Fubm90IGJlIGVuY29kZWQgaW4gYW55IHdheQorICogYXJlIHZhbGlk
IGZpbGUgbmFtZXMuIFRoaXMgbWVhbiB0aGF0IHdlIGNhbm5vdCBqdXN0IHN0b3JlIGEgZmlsZSBu
YW1lIGFzLWlzIGluIGEgU3RyaW5nCisgKiBidXQgd2UgaGF2ZSB0byBlc2NhcGUgaXQuCisgKiBP
biBXaW5kb3dzIHRoZSBHTGliIGZpbGUgbmFtZSBlbmNvZGluZyBpcyBhbHdheXMgVVRGLTggc28g
d2UgY2FuIG9wdGltaXplIHRoaXMgY2FzZS4gKi8KK1N0cmluZyBzdHJpbmdGcm9tRmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKGNvbnN0IGNoYXIqIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbikKK3sK
KyAgICBpZiAoIWZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbikKKyAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOworCisjaWYgT1MoV0lORE9XUykKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChmaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24pOworI2Vsc2UKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBlc2Nh
cGVkU3RyaW5nKGdfdXJpX2VzY2FwZV9zdHJpbmcoZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uLCAi
LzoiLCBGQUxTRSkpOworICAgIHJldHVybiBlc2NhcGVkU3RyaW5nLmdldCgpOworI2VuZGlmCit9
CisKK3N0YXRpYyBHVW5pcXVlUHRyPGNoYXI+IHVuZXNjYXBlZEZpbGVuYW1lKGNvbnN0IFN0cmlu
ZyYgcGF0aCkKK3sKKyAgICBpZiAocGF0aC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworI2lmIE9TKFdJTkRPV1MpCisgICAgcmV0dXJuIEdVbmlxdWVQdHI8Y2hhcj4oZ19zdHJk
dXAocGF0aC51dGY4KCkuZGF0YSgpKSk7CisjZWxzZQorICAgIHJldHVybiBHVW5pcXVlUHRyPGNo
YXI+KGdfdXJpX3VuZXNjYXBlX3N0cmluZyhwYXRoLnV0ZjgoKS5kYXRhKCksIG51bGxwdHIpKTsK
KyNlbmRpZgorfQorCitDU3RyaW5nIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJp
bmcmIHBhdGgpCit7CisjaWYgT1MoV0lORE9XUykKKyAgICByZXR1cm4gcGF0aC51dGY4KCk7Cisj
ZWxzZQorICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUo
cGF0aCk7CisgICAgcmV0dXJuIGZpbGVuYW1lLmdldCgpOworI2VuZGlmCit9CisKKy8vIENvbnZl
cnRzIGEgc3RyaW5nIHRvIHNvbWV0aGluZyBzdWl0YWJsZSB0byBiZSBkaXNwbGF5ZWQgdG8gdGhl
IHVzZXIuCitTdHJpbmcgZmlsZW5hbWVGb3JEaXNwbGF5KGNvbnN0IFN0cmluZyYgc3RyaW5nKQor
eworI2lmIE9TKFdJTkRPV1MpCisgICAgcmV0dXJuIHN0cmluZzsKKyNlbHNlCisgICAgR1VuaXF1
ZVB0cjxnY2hhcj4gZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShzdHJpbmcpOworICAgIGlm
ICghZmlsZW5hbWUpCisgICAgICAgIHJldHVybiBzdHJpbmc7CisKKyAgICBHVW5pcXVlUHRyPGdj
aGFyPiBkaXNwbGF5KGdfZmlsZW5hbWVfdG9fdXRmOChmaWxlbmFtZS5nZXQoKSwgLTEsIG51bGxw
dHIsIG51bGxwdHIsIG51bGxwdHIpKTsKKyAgICBpZiAoIWRpc3BsYXkpCisgICAgICAgIHJldHVy
biBzdHJpbmc7CisKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChkaXNwbGF5LmdldCgpKTsK
KyNlbmRpZgorfQorCitib29sIGZpbGVFeGlzdHMoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAg
IEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUocGF0aCk7Cisg
ICAgcmV0dXJuIGZpbGVuYW1lID8gZ19maWxlX3Rlc3QoZmlsZW5hbWUuZ2V0KCksIEdfRklMRV9U
RVNUX0VYSVNUUykgOiBmYWxzZTsKK30KKworYm9vbCBkZWxldGVGaWxlKGNvbnN0IFN0cmluZyYg
cGF0aCkKK3sKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVu
YW1lKHBhdGgpOworICAgIHJldHVybiBmaWxlbmFtZSA/IGdfcmVtb3ZlKGZpbGVuYW1lLmdldCgp
KSAhPSAtMSA6IGZhbHNlOworfQorCitib29sIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0
cmluZyYgcGF0aCkKK3sKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZSA9IHVuZXNjYXBl
ZEZpbGVuYW1lKHBhdGgpOworICAgIHJldHVybiBmaWxlbmFtZSA/IGdfcm1kaXIoZmlsZW5hbWUu
Z2V0KCkpICE9IC0xIDogZmFsc2U7Cit9CisKK3N0YXRpYyBib29sIGdldEZpbGVTdGF0KGNvbnN0
IFN0cmluZyYgcGF0aCwgR1N0YXRCdWYqIHN0YXRCdWZmZXIpCit7CisgICAgR1VuaXF1ZVB0cjxn
Y2hhcj4gZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShwYXRoKTsKKyAgICBpZiAoIWZpbGVu
YW1lKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gZ19zdGF0KGZpbGVuYW1l
LmdldCgpLCBzdGF0QnVmZmVyKSAhPSAtMTsKK30KKworc3RhdGljIGJvb2wgZ2V0RmlsZUxTdGF0
KGNvbnN0IFN0cmluZyYgcGF0aCwgR1N0YXRCdWYqIHN0YXRCdWZmZXIpCit7CisgICAgR1VuaXF1
ZVB0cjxnY2hhcj4gZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShwYXRoKTsKKyAgICBpZiAo
IWZpbGVuYW1lKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gZ19sc3RhdChm
aWxlbmFtZS5nZXQoKSwgc3RhdEJ1ZmZlcikgIT0gLTE7Cit9CisKK2Jvb2wgZ2V0RmlsZVNpemUo
Y29uc3QgU3RyaW5nJiBwYXRoLCBsb25nIGxvbmcmIHJlc3VsdFNpemUpCit7CisgICAgR1N0YXRC
dWYgc3RhdFJlc3VsdDsKKyAgICBpZiAoIWdldEZpbGVTdGF0KHBhdGgsICZzdGF0UmVzdWx0KSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmVzdWx0U2l6ZSA9IHN0YXRSZXN1bHQuc3Rf
c2l6ZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBnZXRGaWxlU2l6ZShQbGF0Zm9ybUZp
bGVIYW5kbGUgaGFuZGxlLCBsb25nIGxvbmcmIHJlc3VsdFNpemUpCit7CisgICAgYXV0byBpbmZv
ID0gZ19maWxlX2lvX3N0cmVhbV9xdWVyeV9pbmZvKGhhbmRsZSwgR19GSUxFX0FUVFJJQlVURV9T
VEFOREFSRF9TSVpFLCBudWxscHRyLCBudWxscHRyKTsKKyAgICBpZiAoIWluZm8pCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIHJlc3VsdFNpemUgPSBnX2ZpbGVfaW5mb19nZXRfc2l6ZShp
bmZvKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworT3B0aW9uYWw8V2FsbFRpbWU+IGdldEZpbGVD
cmVhdGlvblRpbWUoY29uc3QgU3RyaW5nJikKK3sKKyAgICAvLyBGSVhNRTogSXMgdGhlcmUgYSB3
YXkgdG8gcmV0cmlldmUgZmlsZSBjcmVhdGlvbiB0aW1lIHdpdGggR3RrIG9uIHBsYXRmb3JtcyB0
aGF0IHN1cHBvcnQgaXQ/CisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKK30KKworT3B0aW9uYWw8
V2FsbFRpbWU+IGdldEZpbGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sK
KyAgICBHU3RhdEJ1ZiBzdGF0UmVzdWx0OworICAgIGlmICghZ2V0RmlsZVN0YXQocGF0aCwgJnN0
YXRSZXN1bHQpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIFdh
bGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhzdGF0UmVzdWx0LnN0X210aW1lKTsKK30KKworc3RhdGlj
IEZpbGVNZXRhZGF0YTo6VHlwZSB0b0ZpbGVNZXRhdGFUeXBlKEdTdGF0QnVmIHN0YXRSZXN1bHQp
Cit7CisgICAgaWYgKFNfSVNESVIoc3RhdFJlc3VsdC5zdF9tb2RlKSkKKyAgICAgICAgcmV0dXJu
IEZpbGVNZXRhZGF0YTo6VHlwZTo6RGlyZWN0b3J5OworICAgIGlmIChTX0lTTE5LKHN0YXRSZXN1
bHQuc3RfbW9kZSkpCisgICAgICAgIHJldHVybiBGaWxlTWV0YWRhdGE6OlR5cGU6OlN5bWJvbGlj
TGluazsKKyAgICByZXR1cm4gRmlsZU1ldGFkYXRhOjpUeXBlOjpGaWxlOworfQorCitzdGF0aWMg
T3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGFVc2luZ0Z1bmN0aW9uKGNvbnN0IFN0
cmluZyYgcGF0aCwgYm9vbCAoKnN0YXRGdW5jKShjb25zdCBTdHJpbmcmLCBHU3RhdEJ1ZiopKQor
eworICAgIEdTdGF0QnVmIHN0YXRSZXN1bHQ7CisgICAgaWYgKCFzdGF0RnVuYyhwYXRoLCAmc3Rh
dFJlc3VsdCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBTdHJpbmcgZmls
ZW5hbWUgPSBwYXRoR2V0RmlsZU5hbWUocGF0aCk7CisgICAgYm9vbCBpc0hpZGRlbiA9ICFmaWxl
bmFtZS5pc0VtcHR5KCkgJiYgZmlsZW5hbWVbMF0gPT0gJy4nOworCisgICAgcmV0dXJuIEZpbGVN
ZXRhZGF0YSB7CisgICAgICAgIFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhzdGF0UmVzdWx0LnN0
X210aW1lKSwKKyAgICAgICAgc3RhdFJlc3VsdC5zdF9zaXplLAorICAgICAgICBpc0hpZGRlbiwK
KyAgICAgICAgdG9GaWxlTWV0YXRhVHlwZShzdGF0UmVzdWx0KQorICAgIH07Cit9CisKK09wdGlv
bmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAg
ICByZXR1cm4gZmlsZU1ldGFkYXRhVXNpbmdGdW5jdGlvbihwYXRoLCAmZ2V0RmlsZUxTdGF0KTsK
K30KKworT3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5r
cyhjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgcmV0dXJuIGZpbGVNZXRhZGF0YVVzaW5nRnVu
Y3Rpb24ocGF0aCwgJmdldEZpbGVTdGF0KTsKK30KKworU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29tcG9uZW50KQorewor
ICAgIGlmIChwYXRoLmVuZHNXaXRoKEdfRElSX1NFUEFSQVRPUl9TKSkKKyAgICAgICAgcmV0dXJu
IHBhdGggKyBjb21wb25lbnQ7CisgICAgcmV0dXJuIHBhdGggKyBHX0RJUl9TRVBBUkFUT1JfUyAr
IGNvbXBvbmVudDsKK30KKworU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMoU3RyaW5n
VmlldyBwYXRoLCBjb25zdCBWZWN0b3I8U3RyaW5nVmlldz4mIGNvbXBvbmVudHMpCit7CisgICAg
U3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kKHBhdGgpOworICAgIGZv
ciAoYXV0byYgY29tcG9uZW50IDogY29tcG9uZW50cykgeworICAgICAgICBidWlsZGVyLmFwcGVu
ZChHX0RJUl9TRVBBUkFUT1JfUyk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGNvbXBvbmVudCk7
CisgICAgfQorICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKK2Jvb2wgbWFrZUFs
bERpcmVjdG9yaWVzKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBHVW5pcXVlUHRyPGdjaGFy
PiBmaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGgpOworICAgIHJldHVybiBmaWxlbmFt
ZSA/IGdfbWtkaXJfd2l0aF9wYXJlbnRzKGZpbGVuYW1lLmdldCgpLCBTX0lSV1hVKSAhPSAtMSA6
IGZhbHNlOworfQorCitTdHJpbmcgaG9tZURpcmVjdG9yeVBhdGgoKQoreworICAgIHJldHVybiBz
dHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGdfZ2V0X2hvbWVfZGlyKCkpOworfQor
Citib29sIGNyZWF0ZVN5bWJvbGljTGluayhjb25zdCBTdHJpbmcmIHRhcmdldFBhdGgsIGNvbnN0
IFN0cmluZyYgc3ltYm9saWNMaW5rUGF0aCkKK3sKKyAgICBDU3RyaW5nIHRhcmdldFBhdGhGU1Jl
cCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih0YXJnZXRQYXRoKTsKKyAgICBpZiAoIXRhcmdl
dFBhdGhGU1JlcC5kYXRhKCkgfHwgdGFyZ2V0UGF0aEZTUmVwLmRhdGEoKVswXSA9PSAnXDAnKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBDU3RyaW5nIHN5bWJvbGljTGlua1BhdGhGU1Jl
cCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihzeW1ib2xpY0xpbmtQYXRoKTsKKyAgICBpZiAo
IXN5bWJvbGljTGlua1BhdGhGU1JlcC5kYXRhKCkgfHwgc3ltYm9saWNMaW5rUGF0aEZTUmVwLmRh
dGEoKVswXSA9PSAnXDAnKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gIXN5
bWxpbmsodGFyZ2V0UGF0aEZTUmVwLmRhdGEoKSwgc3ltYm9saWNMaW5rUGF0aEZTUmVwLmRhdGEo
KSk7Cit9CisKK1N0cmluZyBwYXRoR2V0RmlsZU5hbWUoY29uc3QgU3RyaW5nJiBwYXRoTmFtZSkK
K3sKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiB0bXBGaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1l
KHBhdGhOYW1lKTsKKyAgICBpZiAoIXRtcEZpbGVuYW1lKQorICAgICAgICByZXR1cm4gcGF0aE5h
bWU7CisKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBiYXNlTmFtZShnX3BhdGhfZ2V0X2Jhc2VuYW1l
KHRtcEZpbGVuYW1lLmdldCgpKSk7CisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoYmFzZU5h
bWUuZ2V0KCkpOworfQorCitib29sIGdldFZvbHVtZUZyZWVTcGFjZShjb25zdCBTdHJpbmcmIHBh
dGgsIHVpbnQ2NF90JiBmcmVlU3BhY2UpCit7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5h
bWUgPSB1bmVzY2FwZWRGaWxlbmFtZShwYXRoKTsKKyAgICBpZiAoIWZpbGVuYW1lKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBHUmVmUHRyPEdGaWxlPiBmaWxlID0gYWRvcHRHUmVmKGdf
ZmlsZV9uZXdfZm9yX3BhdGgoZmlsZW5hbWUuZ2V0KCkpKTsKKyAgICBHUmVmUHRyPEdGaWxlSW5m
bz4gZmlsZUluZm8gPSBhZG9wdEdSZWYoZ19maWxlX3F1ZXJ5X2ZpbGVzeXN0ZW1faW5mbyhmaWxl
LmdldCgpLCBHX0ZJTEVfQVRUUklCVVRFX0ZJTEVTWVNURU1fRlJFRSwgMCwgMCkpOworICAgIGlm
ICghZmlsZUluZm8pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGZyZWVTcGFjZSA9IGdf
ZmlsZV9pbmZvX2dldF9hdHRyaWJ1dGVfdWludDY0KGZpbGVJbmZvLmdldCgpLCBHX0ZJTEVfQVRU
UklCVVRFX0ZJTEVTWVNURU1fRlJFRSk7CisgICAgcmV0dXJuICEhZnJlZVNwYWNlOworfQorCitT
dHJpbmcgZGlyZWN0b3J5TmFtZShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgR1VuaXF1ZVB0
cjxnY2hhcj4gZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShwYXRoKTsKKyAgICBpZiAoIWZp
bGVuYW1lKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBHVW5pcXVlUHRyPGNoYXI+
IGRpcm5hbWUoZ19wYXRoX2dldF9kaXJuYW1lKGZpbGVuYW1lLmdldCgpKSk7CisgICAgcmV0dXJu
IFN0cmluZzo6ZnJvbVVURjgoZGlybmFtZS5nZXQoKSk7Cit9CisKK1ZlY3RvcjxTdHJpbmc+IGxp
c3REaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGZpbHRlcikKK3sK
KyAgICBWZWN0b3I8U3RyaW5nPiBlbnRyaWVzOworCisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmls
ZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShwYXRoKTsKKyAgICBpZiAoIWZpbGVuYW1lKQorICAg
ICAgICByZXR1cm4gZW50cmllczsKKworICAgIEdVbmlxdWVQdHI8R0Rpcj4gZGlyKGdfZGlyX29w
ZW4oZmlsZW5hbWUuZ2V0KCksIDAsIG51bGxwdHIpKTsKKyAgICBpZiAoIWRpcikKKyAgICAgICAg
cmV0dXJuIGVudHJpZXM7CisKKyAgICBHVW5pcXVlUHRyPEdQYXR0ZXJuU3BlYz4gcHNwZWMoZ19w
YXR0ZXJuX3NwZWNfbmV3KChmaWx0ZXIudXRmOCgpKS5kYXRhKCkpKTsKKyAgICB3aGlsZSAoY29u
c3QgY2hhciogbmFtZSA9IGdfZGlyX3JlYWRfbmFtZShkaXIuZ2V0KCkpKSB7CisgICAgICAgIGlm
ICghZ19wYXR0ZXJuX21hdGNoX3N0cmluZyhwc3BlYy5nZXQoKSwgbmFtZSkpCisgICAgICAgICAg
ICBjb250aW51ZTsKKworICAgICAgICBHVW5pcXVlUHRyPGdjaGFyPiBlbnRyeShnX2J1aWxkX2Zp
bGVuYW1lKGZpbGVuYW1lLmdldCgpLCBuYW1lLCBudWxscHRyKSk7CisgICAgICAgIGVudHJpZXMu
YXBwZW5kKHN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZW50cnkuZ2V0KCkpKTsK
KyAgICB9CisKKyAgICByZXR1cm4gZW50cmllczsKK30KKworU3RyaW5nIG9wZW5UZW1wb3JhcnlG
aWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKK3sK
KyAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZShnX3N0cmR1cF9wcmludGYoIiVzJXMiLCBw
cmVmaXgudXRmOCgpLmRhdGEoKSwgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLnV0ZjgoKS5k
YXRhKCkpKTsKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiB0ZW1wUGF0aChnX2J1aWxkX2ZpbGVuYW1l
KGdfZ2V0X3RtcF9kaXIoKSwgZmlsZW5hbWUuZ2V0KCksIE5VTEwpKTsKKyAgICBHUmVmUHRyPEdG
aWxlPiBmaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgodGVtcFBhdGguZ2V0KCkp
KTsKKworICAgIGhhbmRsZSA9IGdfZmlsZV9jcmVhdGVfcmVhZHdyaXRlKGZpbGUuZ2V0KCksIEdf
RklMRV9DUkVBVEVfTk9ORSwgMCwgMCk7CisgICAgaWYgKCFpc0hhbmRsZVZhbGlkKGhhbmRsZSkp
CisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOCh0
ZW1wUGF0aC5nZXQoKSk7Cit9CisKK1BsYXRmb3JtRmlsZUhhbmRsZSBvcGVuRmlsZShjb25zdCBT
dHJpbmcmIHBhdGgsIEZpbGVPcGVuTW9kZSBtb2RlKQoreworICAgIEdVbmlxdWVQdHI8Z2NoYXI+
IGZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUocGF0aCk7CisgICAgaWYgKCFmaWxlbmFtZSkK
KyAgICAgICAgcmV0dXJuIGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7CisKKyAgICBHUmVmUHRy
PEdGaWxlPiBmaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoZmlsZW5hbWUuZ2V0
KCkpKTsKKyAgICBHRmlsZUlPU3RyZWFtKiBpb1N0cmVhbSA9IDA7CisgICAgaWYgKG1vZGUgPT0g
RmlsZU9wZW5Nb2RlOjpSZWFkKQorICAgICAgICBpb1N0cmVhbSA9IGdfZmlsZV9vcGVuX3JlYWR3
cml0ZShmaWxlLmdldCgpLCAwLCAwKTsKKyAgICBlbHNlIGlmIChtb2RlID09IEZpbGVPcGVuTW9k
ZTo6V3JpdGUpIHsKKyAgICAgICAgaWYgKGdfZmlsZV90ZXN0KGZpbGVuYW1lLmdldCgpLCBzdGF0
aWNfY2FzdDxHRmlsZVRlc3Q+KEdfRklMRV9URVNUX0VYSVNUUyB8IEdfRklMRV9URVNUX0lTX1JF
R1VMQVIpKSkKKyAgICAgICAgICAgIGlvU3RyZWFtID0gZ19maWxlX29wZW5fcmVhZHdyaXRlKGZp
bGUuZ2V0KCksIDAsIDApOworICAgICAgICBlbHNlCisgICAgICAgICAgICBpb1N0cmVhbSA9IGdf
ZmlsZV9jcmVhdGVfcmVhZHdyaXRlKGZpbGUuZ2V0KCksIEdfRklMRV9DUkVBVEVfTk9ORSwgMCwg
MCk7CisgICAgfQorCisgICAgcmV0dXJuIGlvU3RyZWFtOworfQorCit2b2lkIGNsb3NlRmlsZShQ
bGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKK3sKKyAgICBpZiAoIWlzSGFuZGxlVmFsaWQoaGFu
ZGxlKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZ19pb19zdHJlYW1fY2xvc2UoR19JT19TVFJF
QU0oaGFuZGxlKSwgMCwgMCk7CisgICAgZ19vYmplY3RfdW5yZWYoaGFuZGxlKTsKKyAgICBoYW5k
bGUgPSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOworfQorCitsb25nIGxvbmcgc2Vla0ZpbGUo
UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCwgRmlsZVNlZWtPcmln
aW4gb3JpZ2luKQoreworICAgIEdTZWVrVHlwZSBzZWVrVHlwZSA9IEdfU0VFS19TRVQ7CisgICAg
c3dpdGNoIChvcmlnaW4pIHsKKyAgICBjYXNlIEZpbGVTZWVrT3JpZ2luOjpCZWdpbm5pbmc6Cisg
ICAgICAgIHNlZWtUeXBlID0gR19TRUVLX1NFVDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBG
aWxlU2Vla09yaWdpbjo6Q3VycmVudDoKKyAgICAgICAgc2Vla1R5cGUgPSBHX1NFRUtfQ1VSOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIEZpbGVTZWVrT3JpZ2luOjpFbmQ6CisgICAgICAgIHNl
ZWtUeXBlID0gR19TRUVLX0VORDsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCisgICAgaWYgKCFnX3NlZWthYmxlX3Nl
ZWsoR19TRUVLQUJMRShnX2lvX3N0cmVhbV9nZXRfaW5wdXRfc3RyZWFtKEdfSU9fU1RSRUFNKGhh
bmRsZSkpKSwKKyAgICAgICAgb2Zmc2V0LCBzZWVrVHlwZSwgMCwgMCkpCisgICAgeworICAgICAg
ICByZXR1cm4gLTE7CisgICAgfQorICAgIHJldHVybiBnX3NlZWthYmxlX3RlbGwoR19TRUVLQUJM
RShnX2lvX3N0cmVhbV9nZXRfaW5wdXRfc3RyZWFtKEdfSU9fU1RSRUFNKGhhbmRsZSkpKSk7Cit9
CisKK2ludCB3cml0ZVRvRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBjb25zdCBjaGFy
KiBkYXRhLCBpbnQgbGVuZ3RoKQoreworICAgIGdzaXplIGJ5dGVzV3JpdHRlbjsKKyAgICBnX291
dHB1dF9zdHJlYW1fd3JpdGVfYWxsKGdfaW9fc3RyZWFtX2dldF9vdXRwdXRfc3RyZWFtKEdfSU9f
U1RSRUFNKGhhbmRsZSkpLAorICAgICAgICBkYXRhLCBsZW5ndGgsICZieXRlc1dyaXR0ZW4sIDAs
IDApOworICAgIHJldHVybiBieXRlc1dyaXR0ZW47Cit9CisKK2ludCByZWFkRnJvbUZpbGUoUGxh
dGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKK3sKKyAgICBH
VW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CisgICAgZG8geworICAgICAgICBnc3NpemUgYnl0
ZXNSZWFkID0gZ19pbnB1dF9zdHJlYW1fcmVhZChnX2lvX3N0cmVhbV9nZXRfaW5wdXRfc3RyZWFt
KEdfSU9fU1RSRUFNKGhhbmRsZSkpLAorICAgICAgICAgICAgZGF0YSwgbGVuZ3RoLCAwLCAmZXJy
b3Iub3V0UHRyKCkpOworICAgICAgICBpZiAoYnl0ZXNSZWFkID49IDApCisgICAgICAgICAgICBy
ZXR1cm4gYnl0ZXNSZWFkOworICAgIH0gd2hpbGUgKGVycm9yICYmIGVycm9yLT5jb2RlID09IEdf
RklMRV9FUlJPUl9JTlRSKTsKKyAgICByZXR1cm4gLTE7Cit9CisKK2Jvb2wgbW92ZUZpbGUoY29u
c3QgU3RyaW5nJiBvbGRQYXRoLCBjb25zdCBTdHJpbmcmIG5ld1BhdGgpCit7CisgICAgR1VuaXF1
ZVB0cjxnY2hhcj4gb2xkRmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShvbGRQYXRoKTsKKyAg
ICBpZiAoIW9sZEZpbGVuYW1lKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBHVW5pcXVl
UHRyPGdjaGFyPiBuZXdGaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKG5ld1BhdGgpOworICAg
IGlmICghbmV3RmlsZW5hbWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEdSZWZQdHI8
R0ZpbGU+IG9sZEZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0aChvbGRGaWxlbmFt
ZS5nZXQoKSkpOworICAgIEdSZWZQdHI8R0ZpbGU+IG5ld0ZpbGUgPSBhZG9wdEdSZWYoZ19maWxl
X25ld19mb3JfcGF0aChuZXdGaWxlbmFtZS5nZXQoKSkpOworCisgICAgcmV0dXJuIGdfZmlsZV9t
b3ZlKG9sZEZpbGUuZ2V0KCksIG5ld0ZpbGUuZ2V0KCksIEdfRklMRV9DT1BZX09WRVJXUklURSwg
bnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cik7Cit9CisKK2Jvb2wgaGFyZExpbmtP
ckNvcHlGaWxlKGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9u
KQoreworI2lmIE9TKFdJTkRPV1MpCisgICAgcmV0dXJuICEhOjpDb3B5RmlsZShzb3VyY2UuY2hh
cmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCksIGRlc3RpbmF0aW9uLmNoYXJhY3Rl
cnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpLCBUUlVFKTsKKyNlbHNlCisgICAgR1VuaXF1
ZVB0cjxnY2hhcj4gc291cmNlRmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShzb3VyY2UpOwor
ICAgIGlmICghc291cmNlRmlsZW5hbWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEdV
bmlxdWVQdHI8Z2NoYXI+IGRlc3RpbmF0aW9uRmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShk
ZXN0aW5hdGlvbik7CisgICAgaWYgKCFkZXN0aW5hdGlvbkZpbGVuYW1lKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBpZiAoIWxpbmsoc291cmNlRmlsZW5hbWUuZ2V0KCksIGRlc3RpbmF0
aW9uRmlsZW5hbWUuZ2V0KCkpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIEhhcmQg
bGluayBmYWlsZWQuIFBlcmZvcm0gYSBjb3B5IGluc3RlYWQuCisgICAgR1JlZlB0cjxHRmlsZT4g
c291cmNlRmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKHNvdXJjZUZpbGVuYW1l
LmdldCgpKSk7CisgICAgR1JlZlB0cjxHRmlsZT4gZGVzdGluYXRpb25GaWxlID0gYWRvcHRHUmVm
KGdfZmlsZV9uZXdfZm9yX3BhdGgoZGVzdGluYXRpb25GaWxlbmFtZS5nZXQoKSkpOworICAgIHJl
dHVybiBnX2ZpbGVfY29weShzb3VyY2VGaWxlLmdldCgpLCBkZXN0aW5hdGlvbkZpbGUuZ2V0KCks
IEdfRklMRV9DT1BZX05PTkUsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpOwor
I2VuZGlmCit9CisKK09wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3Ry
aW5nJiBmc0ZpbGUpCit7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUgPSB1bmVzY2Fw
ZWRGaWxlbmFtZShmc0ZpbGUuZGF0YSgpKTsKKyAgICBpZiAoIWZpbGVuYW1lKQorICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgR1JlZlB0cjxHRmlsZT4gZmlsZSA9IGFkb3B0R1Jl
ZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKGZpbGVuYW1lLmdldCgpKSk7CisgICAgR1JlZlB0cjxHRmls
ZUluZm8+IGZpbGVJbmZvID0gYWRvcHRHUmVmKGdfZmlsZV9xdWVyeV9maWxlc3lzdGVtX2luZm8o
ZmlsZS5nZXQoKSwgR19GSUxFX0FUVFJJQlVURV9VTklYX0RFVklDRSwgbnVsbHB0ciwgbnVsbHB0
cikpOworICAgIGlmICghZmlsZUluZm8pCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisK
KyAgICByZXR1cm4gZ19maWxlX2luZm9fZ2V0X2F0dHJpYnV0ZV91aW50MzIoZmlsZUluZm8uZ2V0
KCksIEdfRklMRV9BVFRSSUJVVEVfVU5JWF9ERVZJQ0UpOworfQorCisjaWYgVVNFKEZJTEVfTE9D
SykKK2Jvb2wgbG9ja0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgT3B0aW9uU2V0PEZp
bGVMb2NrTW9kZT4gbG9ja01vZGUpCit7CisgICAgQ09NUElMRV9BU1NFUlQoTE9DS19TSCA9PSBX
VEY6OmVudW1Ub1VuZGVybHlpbmdUeXBlKEZpbGVMb2NrTW9kZTo6U2hhcmVkKSwgTG9ja1NoYXJl
ZEVuY29kaW5nSXNBc0V4cGVjdGVkKTsKKyAgICBDT01QSUxFX0FTU0VSVChMT0NLX0VYID09IFdU
Rjo6ZW51bVRvVW5kZXJseWluZ1R5cGUoRmlsZUxvY2tNb2RlOjpFeGNsdXNpdmUpLCBMb2NrRXhj
bHVzaXZlRW5jb2RpbmdJc0FzRXhwZWN0ZWQpOworICAgIENPTVBJTEVfQVNTRVJUKExPQ0tfTkIg
PT0gV1RGOjplbnVtVG9VbmRlcmx5aW5nVHlwZShGaWxlTG9ja01vZGU6Ok5vbmJsb2NraW5nKSwg
TG9ja05vbmJsb2NraW5nRW5jb2RpbmdJc0FzRXhwZWN0ZWQpOworICAgIGF1dG8qIGlucHV0U3Ry
ZWFtID0gZ19pb19zdHJlYW1fZ2V0X2lucHV0X3N0cmVhbShHX0lPX1NUUkVBTShoYW5kbGUpKTsK
KyAgICBpbnQgcmVzdWx0ID0gZmxvY2soZ19maWxlX2Rlc2NyaXB0b3JfYmFzZWRfZ2V0X2ZkKEdf
RklMRV9ERVNDUklQVE9SX0JBU0VEKGlucHV0U3RyZWFtKSksIGxvY2tNb2RlLnRvUmF3KCkpOwor
ICAgIHJldHVybiByZXN1bHQgIT0gLTE7Cit9CisKK2Jvb2wgdW5sb2NrRmlsZShQbGF0Zm9ybUZp
bGVIYW5kbGUgaGFuZGxlKQoreworICAgIGF1dG8qIGlucHV0U3RyZWFtID0gZ19pb19zdHJlYW1f
Z2V0X2lucHV0X3N0cmVhbShHX0lPX1NUUkVBTShoYW5kbGUpKTsKKyAgICBpbnQgcmVzdWx0ID0g
ZmxvY2soZ19maWxlX2Rlc2NyaXB0b3JfYmFzZWRfZ2V0X2ZkKEdfRklMRV9ERVNDUklQVE9SX0JB
U0VEKGlucHV0U3RyZWFtKSksIExPQ0tfVU4pOworICAgIHJldHVybiByZXN1bHQgIT0gLTE7Cit9
CisjZW5kaWYgLy8gVVNFKEZJTEVfTE9DSykKKworfSAvLyBuYW1lc3BhY2UgRmlsZVN5c3RlbQor
fSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9tYWMvRmlsZVN5
c3RlbU1hYy5tbSBiL1NvdXJjZS9XVEYvd3RmL21hYy9GaWxlU3lzdGVtTWFjLm1tCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmUzNjcwYTI3MTNmNDNmMjU1OGVjNWQzNDdlYzIxYmRkZTJlZWVhNWUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9tYWMvRmlsZVN5c3RlbU1hYy5tbQpAQCAtMCwwICsxLDg4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgPHd0Zi9G
aWxlU3lzdGVtLmg+CisKKyNpZiBQTEFURk9STShNQUMpCisKKyNpbXBvcnQgPHBhbC9zcGkvbWFj
L01ldGFkYXRhU1BJLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvTlNVUkxFeHRyYXMuaD4KKyNpbXBv
cnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV1RGIHsKKworYm9vbCBGaWxl
U3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAg
YXV0byBmaWxlTWFuYWdlciA9IGFkb3B0TlMoW1tOU0ZpbGVNYW5hZ2VyIGFsbG9jXSBpbml0XSk7
CisKKyAgICBpZiAoTlNBcnJheSAqZGlyZWN0b3J5Q29udGVudHMgPSBbZmlsZU1hbmFnZXIgY29u
dGVudHNPZkRpcmVjdG9yeUF0UGF0aDpwYXRoIGVycm9yOm51bGxwdHJdKSB7CisgICAgICAgIC8v
IEV4cGxpY2l0bHkgbG9vayBmb3IgYW5kIGRlbGV0ZSAuRFNfU3RvcmUgZmlsZXMuCisgICAgICAg
IGlmIChkaXJlY3RvcnlDb250ZW50cy5jb3VudCA9PSAxICYmIFtkaXJlY3RvcnlDb250ZW50cy5m
aXJzdE9iamVjdCBpc0VxdWFsVG9TdHJpbmc6QCIuRFNfU3RvcmUiXSkKKyAgICAgICAgICAgIFtm
aWxlTWFuYWdlciByZW1vdmVJdGVtQXRQYXRoOltwYXRoIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENv
bXBvbmVudDpkaXJlY3RvcnlDb250ZW50cy5maXJzdE9iamVjdF0gZXJyb3I6bnVsbHB0cl07Cisg
ICAgfQorCisgICAgLy8gcm1kaXIoLi4uKSByZXR1cm5zIDAgb24gc3VjY2Vzc2Z1bCBkZWxldGlv
biBvZiB0aGUgcGF0aCBhbmQgbm9uLXplcm8gaW4gYW55IG90aGVyIGNhc2UgKGluY2x1ZGluZyBp
bnZhbGlkIHBlcm1pc3Npb25zIG9yIG5vbi1leGlzdGVudCBmaWxlKQorICAgIHJldHVybiAhcm1k
aXIoRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSk7Cit9
CisKK3ZvaWQgRmlsZVN5c3RlbTo6c2V0TWV0YWRhdGFVUkwoY29uc3QgU3RyaW5nJiBwYXRoLCBj
b25zdCBTdHJpbmcmIG1ldGFkYXRhVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKQor
eworICAgIFN0cmluZyB1cmxTdHJpbmc7CisgICAgaWYgKE5TVVJMICp1cmwgPSBVUkxXaXRoVXNl
clR5cGVkU3RyaW5nKG1ldGFkYXRhVVJMU3RyaW5nLCBuaWwpKQorICAgICAgICB1cmxTdHJpbmcg
PSBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKFdURjo6VVJMQnlSZW1vdmluZ1VzZXJJbmZvKHVybCkp
OworICAgIGVsc2UKKyAgICAgICAgdXJsU3RyaW5nID0gbWV0YWRhdGFVUkxTdHJpbmc7CisKKyAg
ICAvLyBDYWxsIE1ldGFkYXRhIEFQSSBvbiBhIGJhY2tncm91bmQgcXVldWUgYmVjYXVzZSBpdCBj
YW4gdGFrZSBzb21lIHRpbWUuCisgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X2dsb2Jh
bF9xdWV1ZShESVNQQVRDSF9RVUVVRV9QUklPUklUWV9ERUZBVUxULCAwKSwgW3BhdGggPSBwYXRo
Lmlzb2xhdGVkQ29weSgpLCB1cmxTdHJpbmcgPSB1cmxTdHJpbmcuaXNvbGF0ZWRDb3B5KCksIHJl
ZmVycmVyID0gcmVmZXJyZXIuaXNvbGF0ZWRDb3B5KCldIHsKKyAgICAgICAgYXV0byBpdGVtID0g
YWRvcHRDRihNREl0ZW1DcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcGF0aC5jcmVhdGVDRlN0
cmluZygpLmdldCgpKSk7CisgICAgICAgIGlmICghaXRlbSkKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICBhdXRvIHdoZXJlRnJvbUF0dHJpYnV0ZSA9IGFkb3B0TlMoW1tOU011dGFibGVB
cnJheSBhbGxvY10gaW5pdFdpdGhPYmplY3RzOnVybFN0cmluZywgbmlsXSk7CisgICAgICAgIGlm
ICghcmVmZXJyZXIuaXNOdWxsKCkpCisgICAgICAgICAgICBbd2hlcmVGcm9tQXR0cmlidXRlIGFk
ZE9iamVjdDpyZWZlcnJlcl07CisKKyAgICAgICAgTURJdGVtU2V0QXR0cmlidXRlKGl0ZW0uZ2V0
KCksIGtNREl0ZW1XaGVyZUZyb21zLCAoX19icmlkZ2UgQ0ZBcnJheVJlZil3aGVyZUZyb21BdHRy
aWJ1dGUuZ2V0KCkpOworICAgICAgICBNREl0ZW1TZXRBdHRyaWJ1dGUoaXRlbS5nZXQoKSwga01E
SXRlbURvd25sb2FkZWREYXRlLCAoX19icmlkZ2UgQ0ZBcnJheVJlZilAWyBbTlNEYXRlIGRhdGVd
IF0pOworICAgIH0pOworfQorCitib29sIEZpbGVTeXN0ZW06OmNhbkV4Y2x1ZGVGcm9tQmFja3Vw
KCkKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBGaWxlU3lzdGVtOjpleGNsdWRlRnJv
bUJhY2t1cChjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgLy8gSXQgaXMgY3JpdGljYWwgdG8g
cGFzcyBGQUxTRSBmb3IgZXhjbHVkZUJ5UGF0aCBiZWNhdXNlIGV4Y2x1ZGluZyBieSBwYXRoIHJl
cXVpcmVzIHJvb3QgcHJpdmlsZWdlcy4KKyAgICBDU0JhY2t1cFNldEl0ZW1FeGNsdWRlZChGaWxl
U3lzdGVtOjpwYXRoQXNVUkwocGF0aCkuZ2V0KCksIFRSVUUsIEZBTFNFKTsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBQTEFURk9STShNQUMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwIGIv
U291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNjBl
Y2IxNTg2MzkyMGZhNDM2MWZjMTRkYjhlZTZkM2ZmZTJlNGYwCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtMCwwICsxLDQ5NiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFw
cGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisg
KiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgorCisjaW5jbHVk
ZSA8ZGlyZW50Lmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxmY250bC5oPgorI2lu
Y2x1ZGUgPGZubWF0Y2guaD4KKyNpbmNsdWRlIDxsaWJnZW4uaD4KKyNpbmNsdWRlIDxzdGRpby5o
PgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5jbHVkZSA8c3lzL3N0YXR2ZnMuaD4KKyNpbmNs
dWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDx3dGYvRW51
bVRyYWl0cy5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlTWV0YWRhdGEuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV1RGIHsKKworbmFtZXNw
YWNlIEZpbGVTeXN0ZW0geworCitib29sIGZpbGVFeGlzdHMoY29uc3QgU3RyaW5nJiBwYXRoKQor
eworICAgIGlmIChwYXRoLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBD
U3RyaW5nIGZzUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworCisgICAgaWYg
KCFmc1JlcC5kYXRhKCkgfHwgZnNSZXAuZGF0YSgpWzBdID09ICdcMCcpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIHJldHVybiBhY2Nlc3MoZnNSZXAuZGF0YSgpLCBGX09LKSAhPSAtMTsK
K30KKworYm9vbCBkZWxldGVGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBDU3RyaW5n
IGZzUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworCisgICAgaWYgKCFmc1Jl
cC5kYXRhKCkgfHwgZnNSZXAuZGF0YSgpWzBdID09ICdcMCcpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIC8vIHVubGluayguLi4pIHJldHVybnMgMCBvbiBzdWNjZXNzZnVsIGRlbGV0aW9u
IG9mIHRoZSBwYXRoIGFuZCBub24temVybyBpbiBhbnkgb3RoZXIgY2FzZSAoaW5jbHVkaW5nIGlu
dmFsaWQgcGVybWlzc2lvbnMgb3Igbm9uLWV4aXN0ZW50IGZpbGUpCisgICAgcmV0dXJuICF1bmxp
bmsoZnNSZXAuZGF0YSgpKTsKK30KKworUGxhdGZvcm1GaWxlSGFuZGxlIG9wZW5GaWxlKGNvbnN0
IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlIG1vZGUpCit7CisgICAgQ1N0cmluZyBmc1JlcCA9
IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKKworICAgIGlmIChmc1JlcC5pc051bGwo
KSkKKyAgICAgICAgcmV0dXJuIGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7CisKKyAgICBpbnQg
cGxhdGZvcm1GbGFnID0gMDsKKyAgICBpZiAobW9kZSA9PSBGaWxlT3Blbk1vZGU6OlJlYWQpCisg
ICAgICAgIHBsYXRmb3JtRmxhZyB8PSBPX1JET05MWTsKKyAgICBlbHNlIGlmIChtb2RlID09IEZp
bGVPcGVuTW9kZTo6V3JpdGUpCisgICAgICAgIHBsYXRmb3JtRmxhZyB8PSAoT19XUk9OTFkgfCBP
X0NSRUFUIHwgT19UUlVOQyk7CisjaWYgT1MoREFSV0lOKQorICAgIGVsc2UgaWYgKG1vZGUgPT0g
RmlsZU9wZW5Nb2RlOjpFdmVudHNPbmx5KQorICAgICAgICBwbGF0Zm9ybUZsYWcgfD0gT19FVlRP
TkxZOworI2VuZGlmCisKKyAgICByZXR1cm4gb3Blbihmc1JlcC5kYXRhKCksIHBsYXRmb3JtRmxh
ZywgMDY2Nik7Cit9CisKK3ZvaWQgY2xvc2VGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxl
KQoreworICAgIGlmIChpc0hhbmRsZVZhbGlkKGhhbmRsZSkpIHsKKyAgICAgICAgY2xvc2UoaGFu
ZGxlKTsKKyAgICAgICAgaGFuZGxlID0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKKyAgICB9
Cit9CisKK2xvbmcgbG9uZyBzZWVrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBsb25n
IGxvbmcgb2Zmc2V0LCBGaWxlU2Vla09yaWdpbiBvcmlnaW4pCit7CisgICAgaW50IHdoZW5jZSA9
IFNFRUtfU0VUOworICAgIHN3aXRjaCAob3JpZ2luKSB7CisgICAgY2FzZSBGaWxlU2Vla09yaWdp
bjo6QmVnaW5uaW5nOgorICAgICAgICB3aGVuY2UgPSBTRUVLX1NFVDsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBGaWxlU2Vla09yaWdpbjo6Q3VycmVudDoKKyAgICAgICAgd2hlbmNlID0gU0VF
S19DVVI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRmlsZVNlZWtPcmlnaW46OkVuZDoKKyAg
ICAgICAgd2hlbmNlID0gU0VFS19FTkQ7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6Cisg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8bG9uZyBsb25nPihsc2VlayhoYW5kbGUsIG9mZnNldCwgd2hlbmNlKSk7Cit9CisKK2Jvb2wg
dHJ1bmNhdGVGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQp
Cit7CisgICAgLy8gZnRydW5jYXRlIHJldHVybnMgMCB0byBpbmRpY2F0ZSB0aGUgc3VjY2Vzcy4K
KyAgICByZXR1cm4gIWZ0cnVuY2F0ZShoYW5kbGUsIG9mZnNldCk7Cit9CisKK2ludCB3cml0ZVRv
RmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVu
Z3RoKQoreworICAgIGRvIHsKKyAgICAgICAgaW50IGJ5dGVzV3JpdHRlbiA9IHdyaXRlKGhhbmRs
ZSwgZGF0YSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5ndGgpKTsKKyAgICAgICAgaWYgKGJ5dGVz
V3JpdHRlbiA+PSAwKQorICAgICAgICAgICAgcmV0dXJuIGJ5dGVzV3JpdHRlbjsKKyAgICB9IHdo
aWxlIChlcnJubyA9PSBFSU5UUik7CisgICAgcmV0dXJuIC0xOworfQorCitpbnQgcmVhZEZyb21G
aWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCit7
CisgICAgZG8geworICAgICAgICBpbnQgYnl0ZXNSZWFkID0gcmVhZChoYW5kbGUsIGRhdGEsIHN0
YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSk7CisgICAgICAgIGlmIChieXRlc1JlYWQgPj0gMCkK
KyAgICAgICAgICAgIHJldHVybiBieXRlc1JlYWQ7CisgICAgfSB3aGlsZSAoZXJybm8gPT0gRUlO
VFIpOworICAgIHJldHVybiAtMTsKK30KKworI2lmIFVTRShGSUxFX0xPQ0spCitib29sIGxvY2tG
aWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIE9wdGlvblNldDxGaWxlTG9ja01vZGU+IGxv
Y2tNb2RlKQoreworICAgIENPTVBJTEVfQVNTRVJUKExPQ0tfU0ggPT0gV1RGOjplbnVtVG9VbmRl
cmx5aW5nVHlwZShGaWxlTG9ja01vZGU6OlNoYXJlZCksIExvY2tTaGFyZWRFbmNvZGluZ0lzQXNF
eHBlY3RlZCk7CisgICAgQ09NUElMRV9BU1NFUlQoTE9DS19FWCA9PSBXVEY6OmVudW1Ub1VuZGVy
bHlpbmdUeXBlKEZpbGVMb2NrTW9kZTo6RXhjbHVzaXZlKSwgTG9ja0V4Y2x1c2l2ZUVuY29kaW5n
SXNBc0V4cGVjdGVkKTsKKyAgICBDT01QSUxFX0FTU0VSVChMT0NLX05CID09IFdURjo6ZW51bVRv
VW5kZXJseWluZ1R5cGUoRmlsZUxvY2tNb2RlOjpOb25ibG9ja2luZyksIExvY2tOb25ibG9ja2lu
Z0VuY29kaW5nSXNBc0V4cGVjdGVkKTsKKyAgICBpbnQgcmVzdWx0ID0gZmxvY2soaGFuZGxlLCBs
b2NrTW9kZS50b1JhdygpKTsKKyAgICByZXR1cm4gKHJlc3VsdCAhPSAtMSk7Cit9CisKK2Jvb2wg
dW5sb2NrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlKQoreworICAgIGludCByZXN1bHQg
PSBmbG9jayhoYW5kbGUsIExPQ0tfVU4pOworICAgIHJldHVybiAocmVzdWx0ICE9IC0xKTsKK30K
KyNlbmRpZgorCisjaWYgIVBMQVRGT1JNKE1BQykKK2Jvb2wgZGVsZXRlRW1wdHlEaXJlY3Rvcnko
Y29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIENTdHJpbmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24ocGF0aCk7CisKKyAgICBpZiAoIWZzUmVwLmRhdGEoKSB8fCBmc1JlcC5kYXRh
KClbMF0gPT0gJ1wwJykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gcm1kaXIoLi4u
KSByZXR1cm5zIDAgb24gc3VjY2Vzc2Z1bCBkZWxldGlvbiBvZiB0aGUgcGF0aCBhbmQgbm9uLXpl
cm8gaW4gYW55IG90aGVyIGNhc2UgKGluY2x1ZGluZyBpbnZhbGlkIHBlcm1pc3Npb25zIG9yIG5v
bi1leGlzdGVudCBmaWxlKQorICAgIHJldHVybiAhcm1kaXIoZnNSZXAuZGF0YSgpKTsKK30KKyNl
bmRpZgorCitib29sIGdldEZpbGVTaXplKGNvbnN0IFN0cmluZyYgcGF0aCwgbG9uZyBsb25nJiBy
ZXN1bHQpCit7CisgICAgQ1N0cmluZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihw
YXRoKTsKKworICAgIGlmICghZnNSZXAuZGF0YSgpIHx8IGZzUmVwLmRhdGEoKVswXSA9PSAnXDAn
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzdHJ1Y3Qgc3RhdCBmaWxlSW5mbzsKKwor
ICAgIGlmIChzdGF0KGZzUmVwLmRhdGEoKSwgJmZpbGVJbmZvKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgcmVzdWx0ID0gZmlsZUluZm8uc3Rfc2l6ZTsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworYm9vbCBnZXRGaWxlU2l6ZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBsb25nIGxv
bmcmIHJlc3VsdCkKK3sKKyAgICBzdHJ1Y3Qgc3RhdCBmaWxlSW5mbzsKKyAgICBpZiAoZnN0YXQo
aGFuZGxlLCAmZmlsZUluZm8pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXN1bHQg
PSBmaWxlSW5mby5zdF9zaXplOworICAgIHJldHVybiB0cnVlOworfQorCitPcHRpb25hbDxXYWxs
VGltZT4gZ2V0RmlsZUNyZWF0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisjaWYgT1Mo
REFSV0lOKSB8fCBPUyhPUEVOQlNEKSB8fCBPUyhORVRCU0QpIHx8IE9TKEZSRUVCU0QpCisgICAg
Q1N0cmluZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKKworICAgIGlm
ICghZnNSZXAuZGF0YSgpIHx8IGZzUmVwLmRhdGEoKVswXSA9PSAnXDAnKQorICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworCisgICAgc3RydWN0IHN0YXQgZmlsZUluZm87CisKKyAgICBpZiAo
c3RhdChmc1JlcC5kYXRhKCksICZmaWxlSW5mbykpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisKKyAgICByZXR1cm4gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKGZpbGVJbmZvLnN0X2Jp
cnRodGltZSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShwYXRoKTsKKyAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworI2VuZGlmCit9CisKK09wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlTW9kaWZp
Y2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgQ1N0cmluZyBmc1JlcCA9IGZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKKworICAgIGlmICghZnNSZXAuZGF0YSgpIHx8
IGZzUmVwLmRhdGEoKVswXSA9PSAnXDAnKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
CisgICAgc3RydWN0IHN0YXQgZmlsZUluZm87CisKKyAgICBpZiAoc3RhdChmc1JlcC5kYXRhKCks
ICZmaWxlSW5mbykpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4g
V2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKGZpbGVJbmZvLnN0X210aW1lKTsKK30KKworc3RhdGlj
IEZpbGVNZXRhZGF0YTo6VHlwZSB0b0ZpbGVNZXRhdGFUeXBlKHN0cnVjdCBzdGF0IGZpbGVJbmZv
KQoreworICAgIGlmIChTX0lTRElSKGZpbGVJbmZvLnN0X21vZGUpKQorICAgICAgICByZXR1cm4g
RmlsZU1ldGFkYXRhOjpUeXBlOjpEaXJlY3Rvcnk7CisgICAgaWYgKFNfSVNMTksoZmlsZUluZm8u
c3RfbW9kZSkpCisgICAgICAgIHJldHVybiBGaWxlTWV0YWRhdGE6OlR5cGU6OlN5bWJvbGljTGlu
azsKKyAgICByZXR1cm4gRmlsZU1ldGFkYXRhOjpUeXBlOjpGaWxlOworfQorCitzdGF0aWMgT3B0
aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGFVc2luZ0Z1bmN0aW9uKGNvbnN0IFN0cmlu
ZyYgcGF0aCwgaW50ICgqc3RhdEZ1bmMpKGNvbnN0IGNoYXIqLCBzdHJ1Y3Qgc3RhdCopKQorewor
ICAgIENTdHJpbmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisKKyAg
ICBpZiAoIWZzUmVwLmRhdGEoKSB8fCBmc1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKKyAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHN0cnVjdCBzdGF0IGZpbGVJbmZvOworICAgIGlm
IChzdGF0RnVuYyhmc1JlcC5kYXRhKCksICZmaWxlSW5mbykpCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisKKyAgICBTdHJpbmcgZmlsZW5hbWUgPSBwYXRoR2V0RmlsZU5hbWUocGF0aCk7
CisgICAgYm9vbCBpc0hpZGRlbiA9ICFmaWxlbmFtZS5pc0VtcHR5KCkgJiYgZmlsZW5hbWVbMF0g
PT0gJy4nOworICAgIHJldHVybiBGaWxlTWV0YWRhdGEgeworICAgICAgICBXYWxsVGltZTo6ZnJv
bVJhd1NlY29uZHMoZmlsZUluZm8uc3RfbXRpbWUpLAorICAgICAgICBmaWxlSW5mby5zdF9zaXpl
LAorICAgICAgICBpc0hpZGRlbiwKKyAgICAgICAgdG9GaWxlTWV0YXRhVHlwZShmaWxlSW5mbykK
KyAgICB9OworfQorCitPcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YShjb25zdCBT
dHJpbmcmIHBhdGgpCit7CisgICAgcmV0dXJuIGZpbGVNZXRhZGF0YVVzaW5nRnVuY3Rpb24ocGF0
aCwgJmxzdGF0KTsKK30KKworT3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGFGb2xs
b3dpbmdTeW1saW5rcyhjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgcmV0dXJuIGZpbGVNZXRh
ZGF0YVVzaW5nRnVuY3Rpb24ocGF0aCwgJnN0YXQpOworfQorCitib29sIGNyZWF0ZVN5bWJvbGlj
TGluayhjb25zdCBTdHJpbmcmIHRhcmdldFBhdGgsIGNvbnN0IFN0cmluZyYgc3ltYm9saWNMaW5r
UGF0aCkKK3sKKyAgICBDU3RyaW5nIHRhcmdldFBhdGhGU1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbih0YXJnZXRQYXRoKTsKKyAgICBpZiAoIXRhcmdldFBhdGhGU1JlcC5kYXRhKCkgfHwg
dGFyZ2V0UGF0aEZTUmVwLmRhdGEoKVswXSA9PSAnXDAnKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBDU3RyaW5nIHN5bWJvbGljTGlua1BhdGhGU1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihzeW1ib2xpY0xpbmtQYXRoKTsKKyAgICBpZiAoIXN5bWJvbGljTGlua1BhdGhGU1Jl
cC5kYXRhKCkgfHwgc3ltYm9saWNMaW5rUGF0aEZTUmVwLmRhdGEoKVswXSA9PSAnXDAnKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gIXN5bWxpbmsodGFyZ2V0UGF0aEZTUmVw
LmRhdGEoKSwgc3ltYm9saWNMaW5rUGF0aEZTUmVwLmRhdGEoKSk7Cit9CisKK1N0cmluZyBwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGNv
bXBvbmVudCkKK3sKKyAgICBpZiAocGF0aC5lbmRzV2l0aCgnLycpKQorICAgICAgICByZXR1cm4g
cGF0aCArIGNvbXBvbmVudDsKKyAgICByZXR1cm4gcGF0aCArICIvIiArIGNvbXBvbmVudDsKK30K
KworU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMoU3RyaW5nVmlldyBwYXRoLCBjb25z
dCBWZWN0b3I8U3RyaW5nVmlldz4mIGNvbXBvbmVudHMpCit7CisgICAgU3RyaW5nQnVpbGRlciBi
dWlsZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kKHBhdGgpOworICAgIGZvciAoYXV0byYgY29tcG9u
ZW50IDogY29tcG9uZW50cykgeworICAgICAgICBidWlsZGVyLmFwcGVuZCgnLycpOworICAgICAg
ICBidWlsZGVyLmFwcGVuZChjb21wb25lbnQpOworICAgIH0KKyAgICByZXR1cm4gYnVpbGRlci50
b1N0cmluZygpOworfQorCitib29sIG1ha2VBbGxEaXJlY3Rvcmllcyhjb25zdCBTdHJpbmcmIHBh
dGgpCit7CisgICAgQ1N0cmluZyBmdWxsUGF0aCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihw
YXRoKTsKKyAgICBpZiAoIWFjY2VzcyhmdWxsUGF0aC5kYXRhKCksIEZfT0spKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKworICAgIGNoYXIqIHAgPSBmdWxsUGF0aC5tdXRhYmxlRGF0YSgpICsgMTsK
KyAgICBpbnQgbGVuZ3RoID0gZnVsbFBhdGgubGVuZ3RoKCk7CisKKyAgICBpZiAocFtsZW5ndGgg
LSAxXSA9PSAnLycpCisgICAgICAgIHBbbGVuZ3RoIC0gMV0gPSAnXDAnOworICAgIGZvciAoOyAq
cDsgKytwKSB7CisgICAgICAgIGlmICgqcCA9PSAnLycpIHsKKyAgICAgICAgICAgICpwID0gJ1ww
JzsKKyAgICAgICAgICAgIGlmIChhY2Nlc3MoZnVsbFBhdGguZGF0YSgpLCBGX09LKSkgeworICAg
ICAgICAgICAgICAgIGlmIChta2RpcihmdWxsUGF0aC5kYXRhKCksIFNfSVJXWFUpKQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAq
cCA9ICcvJzsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoYWNjZXNzKGZ1bGxQYXRoLmRhdGEo
KSwgRl9PSykpIHsKKyAgICAgICAgaWYgKG1rZGlyKGZ1bGxQYXRoLmRhdGEoKSwgU19JUldYVSkp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9
CisKK1N0cmluZyBwYXRoR2V0RmlsZU5hbWUoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIHJl
dHVybiBwYXRoLnN1YnN0cmluZyhwYXRoLnJldmVyc2VGaW5kKCcvJykgKyAxKTsKK30KKworU3Ry
aW5nIGRpcmVjdG9yeU5hbWUoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIENTdHJpbmcgZnNS
ZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisKKyAgICBpZiAoIWZzUmVwLmRh
dGEoKSB8fCBmc1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKKyAgICAgICAgcmV0dXJuIFN0cmluZygp
OworCisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoZGlybmFtZShmc1JlcC5tdXRhYmxlRGF0
YSgpKSk7Cit9CisKK1ZlY3RvcjxTdHJpbmc+IGxpc3REaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBw
YXRoLCBjb25zdCBTdHJpbmcmIGZpbHRlcikKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiBlbnRyaWVz
OworICAgIENTdHJpbmcgY3BhdGggPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7Cisg
ICAgQ1N0cmluZyBjZmlsdGVyID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbHRlcik7Cisg
ICAgRElSKiBkaXIgPSBvcGVuZGlyKGNwYXRoLmRhdGEoKSk7CisgICAgaWYgKGRpcikgeworICAg
ICAgICBzdHJ1Y3QgZGlyZW50KiBkcDsKKyAgICAgICAgd2hpbGUgKChkcCA9IHJlYWRkaXIoZGly
KSkpIHsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIqIG5hbWUgPSBkcC0+ZF9uYW1lOworICAgICAg
ICAgICAgaWYgKCFzdHJjbXAobmFtZSwgIi4iKSB8fCAhc3RyY21wKG5hbWUsICIuLiIpKQorICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaWYgKGZubWF0Y2goY2ZpbHRlci5k
YXRhKCksIG5hbWUsIDApKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
Y2hhciBmaWxlUGF0aFtQQVRIX01BWF07CisgICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50
PihzaXplb2YoZmlsZVBhdGgpIC0gMSkgPCBzbnByaW50ZihmaWxlUGF0aCwgc2l6ZW9mKGZpbGVQ
YXRoKSwgIiVzLyVzIiwgY3BhdGguZGF0YSgpLCBuYW1lKSkKKyAgICAgICAgICAgICAgICBjb250
aW51ZTsgLy8gYnVmZmVyIG92ZXJmbG93CisKKyAgICAgICAgICAgIGF1dG8gc3RyaW5nID0gc3Ry
aW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWxlUGF0aCk7CisKKyAgICAgICAgICAg
IC8vIFNvbWUgZmlsZSBzeXN0ZW0gcmVwcmVzZW50YXRpb25zIGNhbm5vdCBiZSByZXByZXNlbnRl
ZCBhcyBhIFVURi0xNiBzdHJpbmcsCisgICAgICAgICAgICAvLyBzbyB0aGlzIHN0cmluZyBtaWdo
dCBiZSBudWxsLgorICAgICAgICAgICAgaWYgKCFzdHJpbmcuaXNOdWxsKCkpCisgICAgICAgICAg
ICAgICAgZW50cmllcy5hcHBlbmQoV1RGTW92ZShzdHJpbmcpKTsKKyAgICAgICAgfQorICAgICAg
ICBjbG9zZWRpcihkaXIpOworICAgIH0KKyAgICByZXR1cm4gZW50cmllczsKK30KKworI2lmICFQ
TEFURk9STShDT0NPQSkKK1N0cmluZyBzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KGNvbnN0IGNoYXIqIHBhdGgpCit7CisgICAgaWYgKCFwYXRoKQorICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7CisKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChwYXRoKTsKK30KKworQ1N0cmlu
ZyBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIHJl
dHVybiBwYXRoLnV0ZjgoKTsKK30KKworYm9vbCBtb3ZlRmlsZShjb25zdCBTdHJpbmcmIG9sZFBh
dGgsIGNvbnN0IFN0cmluZyYgbmV3UGF0aCkKK3sKKyAgICBhdXRvIG9sZEZpbGVuYW1lID0gZmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKG9sZFBhdGgpOworICAgIGlmIChvbGRGaWxlbmFtZS5pc051
bGwoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byBuZXdGaWxlbmFtZSA9IGZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihuZXdQYXRoKTsKKyAgICBpZiAobmV3RmlsZW5hbWUuaXNO
dWxsKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiByZW5hbWUob2xkRmls
ZW5hbWUuZGF0YSgpLCBuZXdGaWxlbmFtZS5kYXRhKCkpICE9IC0xOworfQorCitib29sIGdldFZv
bHVtZUZyZWVTcGFjZShjb25zdCBTdHJpbmcmIHBhdGgsIHVpbnQ2NF90JiBmcmVlU3BhY2UpCit7
CisgICAgc3RydWN0IHN0YXR2ZnMgZmlsZVN5c3RlbVN0YXQ7CisgICAgaWYgKHN0YXR2ZnMoZmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSwgJmZpbGVTeXN0ZW1TdGF0KSkgewor
ICAgICAgICBmcmVlU3BhY2UgPSBmaWxlU3lzdGVtU3RhdC5mX2JhdmFpbCAqIGZpbGVTeXN0ZW1T
dGF0LmZfZnJzaXplOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZh
bHNlOworfQorI2VuZGlmCisKKyNpZiAhT1MoREFSV0lOKQorU3RyaW5nIG9wZW5UZW1wb3JhcnlG
aWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKK3sK
KyAgICBjaGFyIGJ1ZmZlcltQQVRIX01BWF07CisgICAgY29uc3QgY2hhciogdG1wRGlyID0gZ2V0
ZW52KCJUTVBESVIiKTsKKworICAgIGlmICghdG1wRGlyKQorICAgICAgICB0bXBEaXIgPSAiL3Rt
cCI7CisKKyAgICBpZiAoc25wcmludGYoYnVmZmVyLCBQQVRIX01BWCwgIiVzLyVzWFhYWFhYIiwg
dG1wRGlyLCBwcmVmaXgudXRmOCgpLmRhdGEoKSkgPj0gUEFUSF9NQVgpCisgICAgICAgIGdvdG8g
ZW5kOworCisgICAgaGFuZGxlID0gbWtzdGVtcChidWZmZXIpOworICAgIGlmIChoYW5kbGUgPCAw
KQorICAgICAgICBnb3RvIGVuZDsKKworICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZl
cik7CisKK2VuZDoKKyAgICBoYW5kbGUgPSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOworICAg
IHJldHVybiBTdHJpbmcoKTsKK30KKyNlbmRpZgorCitib29sIGhhcmRMaW5rT3JDb3B5RmlsZShj
b25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbikKK3sKKyAgICBp
ZiAoc291cmNlLmlzRW1wdHkoKSB8fCBkZXN0aW5hdGlvbi5pc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIENTdHJpbmcgZnNTb3VyY2UgPSBmaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oc291cmNlKTsKKyAgICBpZiAoIWZzU291cmNlLmRhdGEoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgQ1N0cmluZyBmc0Rlc3RpbmF0aW9uID0gZmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKGRlc3RpbmF0aW9uKTsKKyAgICBpZiAoIWZzRGVzdGluYXRpb24uZGF0YSgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWxpbmsoZnNTb3VyY2UuZGF0YSgpLCBmc0Rl
c3RpbmF0aW9uLmRhdGEoKSkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gSGFyZCBs
aW5rIGZhaWxlZC4gUGVyZm9ybSBhIGNvcHkgaW5zdGVhZC4KKyAgICBhdXRvIGhhbmRsZSA9IG9w
ZW4oZnNEZXN0aW5hdGlvbi5kYXRhKCksIE9fV1JPTkxZIHwgT19DUkVBVCB8IE9fRVhDTCwgMDY2
Nik7CisgICAgaWYgKGhhbmRsZSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
Ym9vbCBhcHBlbmRSZXN1bHQgPSBhcHBlbmRGaWxlQ29udGVudHNUb0ZpbGVIYW5kbGUoc291cmNl
LCBoYW5kbGUpOworICAgIGNsb3NlKGhhbmRsZSk7CisKKyAgICAvLyBJZiB0aGUgY29weSBmYWls
ZWQsIGRlbGV0ZSB0aGUgdW51c2FibGUgZmlsZS4KKyAgICBpZiAoIWFwcGVuZFJlc3VsdCkKKyAg
ICAgICAgdW5saW5rKGZzRGVzdGluYXRpb24uZGF0YSgpKTsKKworICAgIHJldHVybiBhcHBlbmRS
ZXN1bHQ7Cit9CisKK09wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3Ry
aW5nJiBmc0ZpbGUpCit7CisgICAgc3RydWN0IHN0YXQgZmlsZVN0YXQ7CisgICAgaWYgKHN0YXQo
ZnNGaWxlLmRhdGEoKSwgJmZpbGVTdGF0KSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKworICAgIHJldHVybiBmaWxlU3RhdC5zdF9kZXY7Cit9CisKK1N0cmluZyByZWFsUGF0
aChjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQoreworICAgIENTdHJpbmcgZnNSZXAgPSBmaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oZmlsZVBhdGgpOworICAgIGNoYXIgcmVzb2x2ZWROYW1lW1BBVEhf
TUFYXTsKKyAgICBjb25zdCBjaGFyKiByZXN1bHQgPSByZWFscGF0aChmc1JlcC5kYXRhKCksIHJl
c29sdmVkTmFtZSk7CisgICAgcmV0dXJuIHJlc3VsdCA/IFN0cmluZzo6ZnJvbVVURjgocmVzdWx0
KSA6IGZpbGVQYXRoOworfQorCit9IC8vIG5hbWVzcGFjZSBGaWxlU3lzdGVtCit9IC8vIG5hbWVz
cGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNw
cCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZGJk
NzA4YzUyMTVmZDgxOWI0ODM1MzI5M2YyOGFkMDIyYzdhNmY5Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCkBAIC0wLDAgKzEsNTg2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSwgTHRkLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBB
cHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAor
ICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4gCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CisKKyNpbmNs
dWRlIDxpby5oPgorI2luY2x1ZGUgPHNobG9iai5oPgorI2luY2x1ZGUgPHNobHdhcGkuaD4KKyNp
bmNsdWRlIDxzeXMvc3RhdC5oPgorI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNpbmNsdWRlIDx3dGYv
Q3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZU1ldGFk
YXRhLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi93aW4vUGF0aFdh
bGtlci5oPgorCituYW1lc3BhY2UgV1RGIHsKKworbmFtZXNwYWNlIEZpbGVTeXN0ZW0geworCitz
dGF0aWMgY29uc3QgVUxPTkdMT05HIGtTZWNvbmRzRnJvbUZpbGVUaW1lVG9UaW1ldCA9IDExNjQ0
NDczNjAwOworCitzdGF0aWMgYm9vbCBnZXRGaW5kRGF0YShTdHJpbmcgcGF0aCwgV0lOMzJfRklO
RF9EQVRBVyYgZmluZERhdGEpCit7CisgICAgSEFORExFIGhhbmRsZSA9IEZpbmRGaXJzdEZpbGVX
KHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihwYXRoKS5kYXRhKCksICZmaW5kRGF0YSk7Cisg
ICAgaWYgKGhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIEZpbmRDbG9zZShoYW5kbGUpOworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0
aWMgYm9vbCBnZXRGaWxlU2l6ZUZyb21GaW5kRGF0YShjb25zdCBXSU4zMl9GSU5EX0RBVEFXJiBm
aW5kRGF0YSwgbG9uZyBsb25nJiBzaXplKQoreworICAgIFVMQVJHRV9JTlRFR0VSIGZpbGVTaXpl
OworICAgIGZpbGVTaXplLkhpZ2hQYXJ0ID0gZmluZERhdGEubkZpbGVTaXplSGlnaDsKKyAgICBm
aWxlU2l6ZS5Mb3dQYXJ0ID0gZmluZERhdGEubkZpbGVTaXplTG93OworCisgICAgaWYgKGZpbGVT
aXplLlF1YWRQYXJ0ID4gc3RhdGljX2Nhc3Q8VUxPTkdMT05HPihzdGQ6Om51bWVyaWNfbGltaXRz
PGxvbmcgbG9uZz46Om1heCgpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgc2l6ZSA9
IGZpbGVTaXplLlF1YWRQYXJ0OworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgYm9vbCBn
ZXRGaWxlU2l6ZUZyb21CeUhhbmRsZUZpbGVJbmZvcm1hdGlvblN0cnVjdHVyZShjb25zdCBCWV9I
QU5ETEVfRklMRV9JTkZPUk1BVElPTiYgZmlsZUluZm9ybWF0aW9uLCBsb25nIGxvbmcmIHNpemUp
Cit7CisgICAgVUxBUkdFX0lOVEVHRVIgZmlsZVNpemU7CisgICAgZmlsZVNpemUuSGlnaFBhcnQg
PSBmaWxlSW5mb3JtYXRpb24ubkZpbGVTaXplSGlnaDsKKyAgICBmaWxlU2l6ZS5Mb3dQYXJ0ID0g
ZmlsZUluZm9ybWF0aW9uLm5GaWxlU2l6ZUxvdzsKKworICAgIGlmIChmaWxlU2l6ZS5RdWFkUGFy
dCA+IHN0YXRpY19jYXN0PFVMT05HTE9ORz4oc3RkOjpudW1lcmljX2xpbWl0czxsb25nIGxvbmc+
OjptYXgoKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHNpemUgPSBmaWxlU2l6ZS5R
dWFkUGFydDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIHZvaWQgZ2V0RmlsZUNyZWF0
aW9uVGltZUZyb21GaW5kRGF0YShjb25zdCBXSU4zMl9GSU5EX0RBVEFXJiBmaW5kRGF0YSwgdGlt
ZV90JiB0aW1lKQoreworICAgIFVMQVJHRV9JTlRFR0VSIGZpbGVUaW1lOworICAgIGZpbGVUaW1l
LkhpZ2hQYXJ0ID0gZmluZERhdGEuZnRDcmVhdGlvblRpbWUuZHdIaWdoRGF0ZVRpbWU7CisgICAg
ZmlsZVRpbWUuTG93UGFydCA9IGZpbmREYXRhLmZ0Q3JlYXRpb25UaW1lLmR3TG93RGF0ZVRpbWU7
CisKKyAgICAvLyBJbmZvcm1hdGlvbiBhYm91dCBjb252ZXJ0aW5nIHRpbWVfdCB0byBGaWxlVGlt
ZSBpcyBhdmFpbGFibGUgYXQgaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5
L21zNzI0MjI4JTI4dj12cy44NSUyOS5hc3B4CisgICAgdGltZSA9IGZpbGVUaW1lLlF1YWRQYXJ0
IC8gMTAwMDAwMDAgLSBrU2Vjb25kc0Zyb21GaWxlVGltZVRvVGltZXQ7Cit9CisKKworc3RhdGlj
IHZvaWQgZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWVGcm9tRmluZERhdGEoY29uc3QgV0lOMzJfRklO
RF9EQVRBVyYgZmluZERhdGEsIHRpbWVfdCYgdGltZSkKK3sKKyAgICBVTEFSR0VfSU5URUdFUiBm
aWxlVGltZTsKKyAgICBmaWxlVGltZS5IaWdoUGFydCA9IGZpbmREYXRhLmZ0TGFzdFdyaXRlVGlt
ZS5kd0hpZ2hEYXRlVGltZTsKKyAgICBmaWxlVGltZS5Mb3dQYXJ0ID0gZmluZERhdGEuZnRMYXN0
V3JpdGVUaW1lLmR3TG93RGF0ZVRpbWU7CisKKyAgICAvLyBJbmZvcm1hdGlvbiBhYm91dCBjb252
ZXJ0aW5nIHRpbWVfdCB0byBGaWxlVGltZSBpcyBhdmFpbGFibGUgYXQgaHR0cDovL21zZG4ubWlj
cm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L21zNzI0MjI4JTI4dj12cy44NSUyOS5hc3B4CisgICAg
dGltZSA9IGZpbGVUaW1lLlF1YWRQYXJ0IC8gMTAwMDAwMDAgLSBrU2Vjb25kc0Zyb21GaWxlVGlt
ZVRvVGltZXQ7Cit9CisKK2Jvb2wgZ2V0RmlsZVNpemUoY29uc3QgU3RyaW5nJiBwYXRoLCBsb25n
IGxvbmcmIHNpemUpCit7CisgICAgV0lOMzJfRklORF9EQVRBVyBmaW5kRGF0YTsKKyAgICBpZiAo
IWdldEZpbmREYXRhKHBhdGgsIGZpbmREYXRhKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgcmV0dXJuIGdldEZpbGVTaXplRnJvbUZpbmREYXRhKGZpbmREYXRhLCBzaXplKTsKK30KKwor
Ym9vbCBnZXRGaWxlU2l6ZShQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRsZSwgbG9uZyBsb25n
JiBzaXplKQoreworICAgIEJZX0hBTkRMRV9GSUxFX0lORk9STUFUSU9OIGZpbGVJbmZvcm1hdGlv
bjsKKyAgICBpZiAoITo6R2V0RmlsZUluZm9ybWF0aW9uQnlIYW5kbGUoZmlsZUhhbmRsZSwgJmZp
bGVJbmZvcm1hdGlvbikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBnZXRG
aWxlU2l6ZUZyb21CeUhhbmRsZUZpbGVJbmZvcm1hdGlvblN0cnVjdHVyZShmaWxlSW5mb3JtYXRp
b24sIHNpemUpOworfQorCitPcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZU1vZGlmaWNhdGlvblRp
bWUoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIFdJTjMyX0ZJTkRfREFUQVcgZmluZERhdGE7
CisgICAgaWYgKCFnZXRGaW5kRGF0YShwYXRoLCBmaW5kRGF0YSkpCisgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisKKyAgICB0aW1lX3QgdGltZSA9IDA7CisgICAgZ2V0RmlsZU1vZGlmaWNh
dGlvblRpbWVGcm9tRmluZERhdGEoZmluZERhdGEsIHRpbWUpOworICAgIHJldHVybiBXYWxsVGlt
ZTo6ZnJvbVJhd1NlY29uZHModGltZSk7Cit9CisKK09wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxl
Q3JlYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBXSU4zMl9GSU5EX0RBVEFX
IGZpbmREYXRhOworICAgIGlmICghZ2V0RmluZERhdGEocGF0aCwgZmluZERhdGEpKQorICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgdGltZV90IHRpbWUgPSAwOworICAgIGdldEZp
bGVDcmVhdGlvblRpbWVGcm9tRmluZERhdGEoZmluZERhdGEsIHRpbWUpOworICAgIHJldHVybiBX
YWxsVGltZTo6ZnJvbVJhd1NlY29uZHModGltZSk7Cit9CisKK3N0YXRpYyBTdHJpbmcgZ2V0Rmlu
YWxQYXRoTmFtZShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgYXV0byBoYW5kbGUgPSBvcGVu
RmlsZShwYXRoLCBGaWxlT3Blbk1vZGU6OlJlYWQpOworICAgIGlmICghaXNIYW5kbGVWYWxpZCho
YW5kbGUpKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBWZWN0b3I8VUNoYXI+IGJ1
ZmZlcihNQVhfUEFUSCk7CisgICAgaWYgKDo6R2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlVyhoYW5k
bGUsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCksIFZPTFVNRV9OQU1FX05UKSA+PSBNQVhf
UEFUSCkgeworICAgICAgICBjbG9zZUZpbGUoaGFuZGxlKTsKKyAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOworICAgIH0KKyAgICBjbG9zZUZpbGUoaGFuZGxlKTsKKworICAgIGJ1ZmZlci5zaHJpbmso
d2NzbGVuKGJ1ZmZlci5kYXRhKCkpKTsKKyAgICByZXR1cm4gU3RyaW5nOjphZG9wdChXVEZNb3Zl
KGJ1ZmZlcikpOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgaXNTeW1ib2xpY0xpbmsoV0lOMzJf
RklORF9EQVRBVyBmaW5kRGF0YSkKK3sKKyAgICByZXR1cm4gZmluZERhdGEuZHdGaWxlQXR0cmli
dXRlcyAmIEZJTEVfQVRUUklCVVRFX1JFUEFSU0VfUE9JTlQgJiYgZmluZERhdGEuZHdSZXNlcnZl
ZDAgPT0gSU9fUkVQQVJTRV9UQUdfU1lNTElOSzsKK30KKworc3RhdGljIEZpbGVNZXRhZGF0YTo6
VHlwZSB0b0ZpbGVNZXRhZGF0YVR5cGUoV0lOMzJfRklORF9EQVRBVyBmaW5kRGF0YSkKK3sKKyAg
ICBpZiAoZmluZERhdGEuZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9S
WSkKKyAgICAgICAgcmV0dXJuIEZpbGVNZXRhZGF0YTo6VHlwZTo6RGlyZWN0b3J5OworICAgIGlm
IChpc1N5bWJvbGljTGluayhmaW5kRGF0YSkpCisgICAgICAgIHJldHVybiBGaWxlTWV0YWRhdGE6
OlR5cGU6OlN5bWJvbGljTGluazsKKyAgICByZXR1cm4gRmlsZU1ldGFkYXRhOjpUeXBlOjpGaWxl
OworfQorCitzdGF0aWMgT3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaW5kRGF0YVRvRmlsZU1ldGFk
YXRhKFdJTjMyX0ZJTkRfREFUQVcgZmluZERhdGEpCit7CisgICAgbG9uZyBsb25nIGxlbmd0aDsK
KyAgICBpZiAoIWdldEZpbGVTaXplRnJvbUZpbmREYXRhKGZpbmREYXRhLCBsZW5ndGgpKQorICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgdGltZV90IG1vZGlmaWNhdGlvblRpbWU7
CisgICAgZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWVGcm9tRmluZERhdGEoZmluZERhdGEsIG1vZGlm
aWNhdGlvblRpbWUpOworCisgICAgcmV0dXJuIEZpbGVNZXRhZGF0YSB7CisgICAgICAgIFdhbGxU
aW1lOjpmcm9tUmF3U2Vjb25kcyhtb2RpZmljYXRpb25UaW1lKSwKKyAgICAgICAgbGVuZ3RoLAor
ICAgICAgICBzdGF0aWNfY2FzdDxib29sPihmaW5kRGF0YS5kd0ZpbGVBdHRyaWJ1dGVzICYgRklM
RV9BVFRSSUJVVEVfSElEREVOKSwKKyAgICAgICAgdG9GaWxlTWV0YWRhdGFUeXBlKGZpbmREYXRh
KQorICAgIH07Cit9CisKK09wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhKGNvbnN0
IFN0cmluZyYgcGF0aCkKK3sKKyAgICBXSU4zMl9GSU5EX0RBVEFXIGZpbmREYXRhOworICAgIGlm
ICghZ2V0RmluZERhdGEocGF0aCwgZmluZERhdGEpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworCisgICAgcmV0dXJuIGZpbmREYXRhVG9GaWxlTWV0YWRhdGEoZmluZERhdGEpOworfQor
CitPcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YUZvbGxvd2luZ1N5bWxpbmtzKGNv
bnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBXSU4zMl9GSU5EX0RBVEFXIGZpbmREYXRhOworICAg
IGlmICghZ2V0RmluZERhdGEocGF0aCwgZmluZERhdGEpKQorICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworCisgICAgaWYgKGlzU3ltYm9saWNMaW5rKGZpbmREYXRhKSkgeworICAgICAgICBT
dHJpbmcgdGFyZ2V0UGF0aCA9IGdldEZpbmFsUGF0aE5hbWUocGF0aCk7CisgICAgICAgIGlmICh0
YXJnZXRQYXRoLmlzTnVsbCgpKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgaWYgKCFnZXRGaW5kRGF0YSh0YXJnZXRQYXRoLCBmaW5kRGF0YSkpCisgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIH0KKworICAgIHJldHVybiBmaW5kRGF0YVRvRmls
ZU1ldGFkYXRhKGZpbmREYXRhKTsKK30KKworYm9vbCBjcmVhdGVTeW1ib2xpY0xpbmsoY29uc3Qg
U3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGljTGlua1BhdGgpCit7Cisg
ICAgcmV0dXJuICE6OkNyZWF0ZVN5bWJvbGljTGlua1coc3RyaW5nVG9OdWxsVGVybWluYXRlZFdD
aGFyKHN5bWJvbGljTGlua1BhdGgpLmRhdGEoKSwgc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFy
KHRhcmdldFBhdGgpLmRhdGEoKSwgMCk7Cit9CisKK2Jvb2wgZmlsZUV4aXN0cyhjb25zdCBTdHJp
bmcmIHBhdGgpCit7CisgICAgV0lOMzJfRklORF9EQVRBVyBmaW5kRGF0YTsKKyAgICByZXR1cm4g
Z2V0RmluZERhdGEocGF0aCwgZmluZERhdGEpOworfQorCitib29sIGRlbGV0ZUZpbGUoY29uc3Qg
U3RyaW5nJiBwYXRoKQoreworICAgIFN0cmluZyBmaWxlbmFtZSA9IHBhdGg7CisgICAgcmV0dXJu
ICEhRGVsZXRlRmlsZVcoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGZpbGVuYW1lKS5kYXRh
KCkpOworfQorCitib29sIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkK
K3sKKyAgICBTdHJpbmcgZmlsZW5hbWUgPSBwYXRoOworICAgIHJldHVybiAhIVJlbW92ZURpcmVj
dG9yeVcoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGZpbGVuYW1lKS5kYXRhKCkpOworfQor
Citib29sIG1vdmVGaWxlKGNvbnN0IFN0cmluZyYgb2xkUGF0aCwgY29uc3QgU3RyaW5nJiBuZXdQ
YXRoKQoreworICAgIFN0cmluZyBvbGRGaWxlbmFtZSA9IG9sZFBhdGg7CisgICAgU3RyaW5nIG5l
d0ZpbGVuYW1lID0gbmV3UGF0aDsKKyAgICByZXR1cm4gISE6Ok1vdmVGaWxlRXgoc3RyaW5nVG9O
dWxsVGVybWluYXRlZFdDaGFyKG9sZEZpbGVuYW1lKS5kYXRhKCksIHN0cmluZ1RvTnVsbFRlcm1p
bmF0ZWRXQ2hhcihuZXdGaWxlbmFtZSkuZGF0YSgpLCBNT1ZFRklMRV9DT1BZX0FMTE9XRUQgfCBN
T1ZFRklMRV9SRVBMQUNFX0VYSVNUSU5HKTsKK30KKworU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29tcG9uZW50KQorewor
ICAgIFZlY3RvcjxVQ2hhcj4gYnVmZmVyKE1BWF9QQVRIKTsKKworICAgIGlmIChwYXRoLmxlbmd0
aCgpICsgMSA+IGJ1ZmZlci5zaXplKCkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAg
IFN0cmluZ1ZpZXcocGF0aCkuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoYnVmZmVyLmRhdGEo
KSk7CisgICAgYnVmZmVyW3BhdGgubGVuZ3RoKCldID0gJ1wwJzsKKworICAgIGlmICghUGF0aEFw
cGVuZFcoYnVmZmVyLmRhdGEoKSwgc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGNvbXBvbmVu
dCkuZGF0YSgpKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgYnVmZmVyLnNocmlu
ayh3Y3NsZW4oYnVmZmVyLmRhdGEoKSkpOworCisgICAgcmV0dXJuIFN0cmluZzo6YWRvcHQoV1RG
TW92ZShidWZmZXIpKTsKK30KKworU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMoU3Ry
aW5nVmlldyBwYXRoLCBjb25zdCBWZWN0b3I8U3RyaW5nVmlldz4mIGNvbXBvbmVudHMpCit7Cisg
ICAgU3RyaW5nIHJlc3VsdCA9IHBhdGgudG9TdHJpbmcoKTsKKyAgICBmb3IgKGF1dG8mIGNvbXBv
bmVudCA6IGNvbXBvbmVudHMpCisgICAgICAgIHJlc3VsdCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChyZXN1bHQsIGNvbXBvbmVudC50b1N0cmluZygpKTsKKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCisjaWYgIVVTRShDRikKKworQ1N0cmluZyBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29u
c3QgU3RyaW5nJiBwYXRoKQoreworICAgIGF1dG8gdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzID0gcGF0
aC51cGNvbnZlcnRlZENoYXJhY3RlcnMoKTsKKworICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJz
ID0gdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzOworICAgIGludCBzaXplID0gV2lkZUNoYXJUb011bHRp
Qnl0ZShDUF9BQ1AsIDAsIGNoYXJhY3RlcnMsIHBhdGgubGVuZ3RoKCksIDAsIDAsIDAsIDApIC0g
MTsKKworICAgIGNoYXIqIGJ1ZmZlcjsKKyAgICBDU3RyaW5nIHN0cmluZyA9IENTdHJpbmc6Om5l
d1VuaW5pdGlhbGl6ZWQoc2l6ZSwgYnVmZmVyKTsKKworICAgIFdpZGVDaGFyVG9NdWx0aUJ5dGUo
Q1BfQUNQLCAwLCBjaGFyYWN0ZXJzLCBwYXRoLmxlbmd0aCgpLCBidWZmZXIsIHNpemUsIDAsIDAp
OworCisgICAgcmV0dXJuIHN0cmluZzsKK30KKworI2VuZGlmIC8vICFVU0UoQ0YpCisKK2Jvb2wg
bWFrZUFsbERpcmVjdG9yaWVzKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBTdHJpbmcgZnVs
bFBhdGggPSBwYXRoOworICAgIGlmIChTSENyZWF0ZURpcmVjdG9yeUV4KDAsIHN0cmluZ1RvTnVs
bFRlcm1pbmF0ZWRXQ2hhcihmdWxsUGF0aCkuZGF0YSgpLCAwKSAhPSBFUlJPUl9TVUNDRVNTKSB7
CisgICAgICAgIERXT1JEIGVycm9yID0gR2V0TGFzdEVycm9yKCk7CisgICAgICAgIGlmIChlcnJv
ciAhPSBFUlJPUl9GSUxFX0VYSVNUUyAmJiBlcnJvciAhPSBFUlJPUl9BTFJFQURZX0VYSVNUUykg
eworICAgICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIHBhdGggJXMiLCBwYXRo
LmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQor
ICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworU3RyaW5nIGhvbWVEaXJlY3RvcnlQYXRoKCkK
K3sKKyAgICByZXR1cm4gIiI7Cit9CisKK1N0cmluZyBwYXRoR2V0RmlsZU5hbWUoY29uc3QgU3Ry
aW5nJiBwYXRoKQoreworICAgIHJldHVybiBudWxsVGVybWluYXRlZFdDaGFyVG9TdHJpbmcoOjpQ
YXRoRmluZEZpbGVOYW1lKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihwYXRoKS5kYXRhKCkp
KTsKK30KKworU3RyaW5nIGRpcmVjdG9yeU5hbWUoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAg
IFN0cmluZyBuYW1lID0gcGF0aC5sZWZ0KHBhdGgubGVuZ3RoKCkgLSBwYXRoR2V0RmlsZU5hbWUo
cGF0aCkubGVuZ3RoKCkpOworICAgIGlmIChuYW1lLmNoYXJhY3RlclN0YXJ0aW5nQXQobmFtZS5s
ZW5ndGgoKSAtIDEpID09ICdcXCcpIHsKKyAgICAgICAgLy8gUmVtb3ZlIGFueSB0cmFpbGluZyAi
XCIuCisgICAgICAgIG5hbWUudHJ1bmNhdGUobmFtZS5sZW5ndGgoKSAtIDEpOworICAgIH0KKyAg
ICByZXR1cm4gbmFtZTsKK30KKworc3RhdGljIFN0cmluZyBidW5kbGVOYW1lKCkKK3sKKyAgICBz
dGF0aWMgY29uc3QgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBuYW1lID0gW10geworICAgICAgICBT
dHJpbmcgbmFtZSB7ICJXZWJLaXQiX3MgfTsKKworI2lmIFVTRShDRikKKyAgICAgICAgaWYgKENG
QnVuZGxlUmVmIGJ1bmRsZSA9IENGQnVuZGxlR2V0TWFpbkJ1bmRsZSgpKSB7CisgICAgICAgICAg
ICBpZiAoQ0ZUeXBlUmVmIGJ1bmRsZUV4ZWN1dGFibGUgPSBDRkJ1bmRsZUdldFZhbHVlRm9ySW5m
b0RpY3Rpb25hcnlLZXkoYnVuZGxlLCBrQ0ZCdW5kbGVFeGVjdXRhYmxlS2V5KSkgeworICAgICAg
ICAgICAgICAgIGlmIChDRkdldFR5cGVJRChidW5kbGVFeGVjdXRhYmxlKSA9PSBDRlN0cmluZ0dl
dFR5cGVJRCgpKQorICAgICAgICAgICAgICAgICAgICBuYW1lID0gcmVpbnRlcnByZXRfY2FzdDxD
RlN0cmluZ1JlZj4oYnVuZGxlRXhlY3V0YWJsZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyNlbmRpZgorCisgICAgICAgIHJldHVybiBuYW1lOworICAgIH0oKTsKKworICAgIHJldHVybiBu
YW1lOworfQorCitzdGF0aWMgU3RyaW5nIHN0b3JhZ2VEaXJlY3RvcnkoRFdPUkQgcGF0aElkZW50
aWZpZXIpCit7CisgICAgVmVjdG9yPFVDaGFyPiBidWZmZXIoTUFYX1BBVEgpOworICAgIGlmIChG
QUlMRUQoU0hHZXRGb2xkZXJQYXRoVygwLCBwYXRoSWRlbnRpZmllciB8IENTSURMX0ZMQUdfQ1JF
QVRFLCAwLCAwLCBidWZmZXIuZGF0YSgpKSkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAg
ICBidWZmZXIucmVzaXplKHdjc2xlbihidWZmZXIuZGF0YSgpKSk7CisgICAgU3RyaW5nIGRpcmVj
dG9yeSA9IFN0cmluZzo6YWRvcHQoV1RGTW92ZShidWZmZXIpKTsKKworICAgIGRpcmVjdG9yeSA9
IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkaXJlY3RvcnksICJBcHBsZSBDb21wdXRlclxcIiAr
IGJ1bmRsZU5hbWUoKSk7CisgICAgaWYgKCFtYWtlQWxsRGlyZWN0b3JpZXMoZGlyZWN0b3J5KSkK
KyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgcmV0dXJuIGRpcmVjdG9yeTsKK30KKwor
c3RhdGljIFN0cmluZyBjYWNoZWRTdG9yYWdlRGlyZWN0b3J5KERXT1JEIHBhdGhJZGVudGlmaWVy
KQoreworICAgIHN0YXRpYyBIYXNoTWFwPERXT1JELCBTdHJpbmc+IGRpcmVjdG9yaWVzOworCisg
ICAgSGFzaE1hcDxEV09SRCwgU3RyaW5nPjo6aXRlcmF0b3IgaXQgPSBkaXJlY3Rvcmllcy5maW5k
KHBhdGhJZGVudGlmaWVyKTsKKyAgICBpZiAoaXQgIT0gZGlyZWN0b3JpZXMuZW5kKCkpCisgICAg
ICAgIHJldHVybiBpdC0+dmFsdWU7CisKKyAgICBTdHJpbmcgZGlyZWN0b3J5ID0gc3RvcmFnZURp
cmVjdG9yeShwYXRoSWRlbnRpZmllcik7CisgICAgZGlyZWN0b3JpZXMuYWRkKHBhdGhJZGVudGlm
aWVyLCBkaXJlY3RvcnkpOworCisgICAgcmV0dXJuIGRpcmVjdG9yeTsKK30KKworc3RhdGljIFN0
cmluZyBnZW5lcmF0ZVRlbXBvcmFyeVBhdGgoY29uc3QgRnVuY3Rpb248Ym9vbChjb25zdCBTdHJp
bmcmKT4mIGFjdGlvbikKK3sKKyAgICB3Y2hhcl90IHRlbXBQYXRoW01BWF9QQVRIXTsKKyAgICBp
bnQgdGVtcFBhdGhMZW5ndGggPSA6OkdldFRlbXBQYXRoVyhXVEZfQVJSQVlfTEVOR1RIKHRlbXBQ
YXRoKSwgdGVtcFBhdGgpOworICAgIGlmICh0ZW1wUGF0aExlbmd0aCA8PSAwIHx8IHRlbXBQYXRo
TGVuZ3RoID4gV1RGX0FSUkFZX0xFTkdUSCh0ZW1wUGF0aCkpCisgICAgICAgIHJldHVybiBTdHJp
bmcoKTsKKworICAgIFN0cmluZyBwcm9wb3NlZFBhdGg7CisgICAgZG8geworICAgICAgICB3Y2hh
cl90IHRlbXBGaWxlW10gPSBMIlhYWFhYWFhYLnRtcCI7IC8vIFVzZSA4LjMgc3R5bGUgbmFtZSAo
bW9yZSBjaGFyYWN0ZXJzIGFyZW4ndCBoZWxwZnVsIGR1ZSB0byA4LjMgc2hvcnQgZmlsZSBuYW1l
cykKKyAgICAgICAgY29uc3QgaW50IHJhbmRvbVBhcnRMZW5ndGggPSA4OworICAgICAgICBjcnlw
dG9ncmFwaGljYWxseVJhbmRvbVZhbHVlcyh0ZW1wRmlsZSwgcmFuZG9tUGFydExlbmd0aCAqIHNp
emVvZih3Y2hhcl90KSk7CisKKyAgICAgICAgLy8gTGltaXQgdG8gdmFsaWQgZmlsZXN5c3RlbSBj
aGFyYWN0ZXJzLCBhbHNvIGV4Y2x1ZGluZyBvdGhlcnMgdGhhdCBjb3VsZCBiZSBwcm9ibGVtYXRp
YywgbGlrZSBwdW5jdHVhdGlvbi4KKyAgICAgICAgLy8gZG9uJ3QgaW5jbHVkZSBib3RoIHVwcGVy
IGFuZCBsb3dlcmNhc2Ugc2luY2UgV2luZG93cyBmaWxlIHN5c3RlbXMgYXJlIHR5cGljYWxseSBu
b3QgY2FzZSBzZW5zaXRpdmUuCisgICAgICAgIGNvbnN0IGNoYXIgdmFsaWRDaGFyc1tdID0gIjAx
MjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiI7CisgICAgICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgcmFuZG9tUGFydExlbmd0aDsgKytpKQorICAgICAgICAgICAgdGVtcEZpbGVbaV0g
PSB2YWxpZENoYXJzW3RlbXBGaWxlW2ldICUgKHNpemVvZih2YWxpZENoYXJzKSAtIDEpXTsKKwor
ICAgICAgICBBU1NFUlQod2NzbGVuKHRlbXBGaWxlKSA9PSBXVEZfQVJSQVlfTEVOR1RIKHRlbXBG
aWxlKSAtIDEpOworCisgICAgICAgIHByb3Bvc2VkUGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChudWxsVGVybWluYXRlZFdDaGFyVG9TdHJpbmcodGVtcFBhdGgpLCBudWxsVGVybWluYXRl
ZFdDaGFyVG9TdHJpbmcodGVtcEZpbGUpKTsKKyAgICAgICAgaWYgKHByb3Bvc2VkUGF0aC5pc0Vt
cHR5KCkpCisgICAgICAgICAgICBicmVhazsKKyAgICB9IHdoaWxlICghYWN0aW9uKHByb3Bvc2Vk
UGF0aCkpOworCisgICAgcmV0dXJuIHByb3Bvc2VkUGF0aDsKK30KKworU3RyaW5nIG9wZW5UZW1w
b3JhcnlGaWxlKGNvbnN0IFN0cmluZyYsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKQorewor
ICAgIGhhbmRsZSA9IElOVkFMSURfSEFORExFX1ZBTFVFOworCisgICAgU3RyaW5nIHByb3Bvc2Vk
UGF0aCA9IGdlbmVyYXRlVGVtcG9yYXJ5UGF0aChbJmhhbmRsZV0oY29uc3QgU3RyaW5nJiBwcm9w
b3NlZFBhdGgpIHsKKyAgICAgICAgLy8gdXNlIENSRUFURV9ORVcgdG8gYXZvaWQgb3ZlcndyaXRp
bmcgYW4gZXhpc3RpbmcgZmlsZSB3aXRoIHRoZSBzYW1lIG5hbWUKKyAgICAgICAgaGFuZGxlID0g
OjpDcmVhdGVGaWxlVyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIocHJvcG9zZWRQYXRoKS5k
YXRhKCksIEdFTkVSSUNfUkVBRCB8IEdFTkVSSUNfV1JJVEUsIDAsIDAsIENSRUFURV9ORVcsIEZJ
TEVfQVRUUklCVVRFX05PUk1BTCwgMCk7CisKKyAgICAgICAgcmV0dXJuIGlzSGFuZGxlVmFsaWQo
aGFuZGxlKSB8fCBHZXRMYXN0RXJyb3IoKSA9PSBFUlJPUl9BTFJFQURZX0VYSVNUUzsKKyAgICB9
KTsKKworICAgIGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUpKQorICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7CisKKyAgICByZXR1cm4gcHJvcG9zZWRQYXRoOworfQorCitQbGF0Zm9ybUZpbGVIYW5k
bGUgb3BlbkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUgbW9kZSkKK3sKKyAg
ICBEV09SRCBkZXNpcmVkQWNjZXNzID0gMDsKKyAgICBEV09SRCBjcmVhdGlvbkRpc3Bvc2l0aW9u
ID0gMDsKKyAgICBEV09SRCBzaGFyZU1vZGUgPSAwOworICAgIHN3aXRjaCAobW9kZSkgeworICAg
IGNhc2UgRmlsZU9wZW5Nb2RlOjpSZWFkOgorICAgICAgICBkZXNpcmVkQWNjZXNzID0gR0VORVJJ
Q19SRUFEOworICAgICAgICBjcmVhdGlvbkRpc3Bvc2l0aW9uID0gT1BFTl9FWElTVElORzsKKyAg
ICAgICAgc2hhcmVNb2RlID0gRklMRV9TSEFSRV9SRUFEOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIEZpbGVPcGVuTW9kZTo6V3JpdGU6CisgICAgICAgIGRlc2lyZWRBY2Nlc3MgPSBHRU5FUklD
X1dSSVRFOworICAgICAgICBjcmVhdGlvbkRpc3Bvc2l0aW9uID0gQ1JFQVRFX0FMV0FZUzsKKyAg
ICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgfQorCisgICAgU3RyaW5nIGRlc3RpbmF0aW9uID0gcGF0aDsKKyAgICByZXR1cm4gQ3Jl
YXRlRmlsZShzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoZGVzdGluYXRpb24pLmRhdGEoKSwg
ZGVzaXJlZEFjY2Vzcywgc2hhcmVNb2RlLCAwLCBjcmVhdGlvbkRpc3Bvc2l0aW9uLCBGSUxFX0FU
VFJJQlVURV9OT1JNQUwsIDApOworfQorCit2b2lkIGNsb3NlRmlsZShQbGF0Zm9ybUZpbGVIYW5k
bGUmIGhhbmRsZSkKK3sKKyAgICBpZiAoaXNIYW5kbGVWYWxpZChoYW5kbGUpKSB7CisgICAgICAg
IDo6Q2xvc2VIYW5kbGUoaGFuZGxlKTsKKyAgICAgICAgaGFuZGxlID0gaW52YWxpZFBsYXRmb3Jt
RmlsZUhhbmRsZTsKKyAgICB9Cit9CisKK2xvbmcgbG9uZyBzZWVrRmlsZShQbGF0Zm9ybUZpbGVI
YW5kbGUgaGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0LCBGaWxlU2Vla09yaWdpbiBvcmlnaW4pCit7
CisgICAgRFdPUkQgbW92ZU1ldGhvZCA9IEZJTEVfQkVHSU47CisKKyAgICBpZiAob3JpZ2luID09
IEZpbGVTZWVrT3JpZ2luOjpDdXJyZW50KQorICAgICAgICBtb3ZlTWV0aG9kID0gRklMRV9DVVJS
RU5UOworICAgIGVsc2UgaWYgKG9yaWdpbiA9PSBGaWxlU2Vla09yaWdpbjo6RW5kKQorICAgICAg
ICBtb3ZlTWV0aG9kID0gRklMRV9FTkQ7CisKKyAgICBMQVJHRV9JTlRFR0VSIGxhcmdlT2Zmc2V0
OworICAgIGxhcmdlT2Zmc2V0LlF1YWRQYXJ0ID0gb2Zmc2V0OworCisgICAgbGFyZ2VPZmZzZXQu
TG93UGFydCA9IFNldEZpbGVQb2ludGVyKGhhbmRsZSwgbGFyZ2VPZmZzZXQuTG93UGFydCwgJmxh
cmdlT2Zmc2V0LkhpZ2hQYXJ0LCBtb3ZlTWV0aG9kKTsKKworICAgIGlmIChsYXJnZU9mZnNldC5M
b3dQYXJ0ID09IElOVkFMSURfU0VUX0ZJTEVfUE9JTlRFUiAmJiBHZXRMYXN0RXJyb3IoKSAhPSBO
T19FUlJPUikKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgcmV0dXJuIGxhcmdlT2Zmc2V0LlF1
YWRQYXJ0OworfQorCitpbnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwg
Y29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKK3sKKyAgICBpZiAoIWlzSGFuZGxlVmFsaWQo
aGFuZGxlKSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgRFdPUkQgYnl0ZXNXcml0dGVuOwor
ICAgIGJvb2wgc3VjY2VzcyA9IFdyaXRlRmlsZShoYW5kbGUsIGRhdGEsIGxlbmd0aCwgJmJ5dGVz
V3JpdHRlbiwgMCk7CisKKyAgICBpZiAoIXN1Y2Nlc3MpCisgICAgICAgIHJldHVybiAtMTsKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihieXRlc1dyaXR0ZW4pOworfQorCitpbnQgcmVhZEZy
b21GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNoYXIqIGRhdGEsIGludCBsZW5ndGgp
Cit7CisgICAgaWYgKCFpc0hhbmRsZVZhbGlkKGhhbmRsZSkpCisgICAgICAgIHJldHVybiAtMTsK
KworICAgIERXT1JEIGJ5dGVzUmVhZDsKKyAgICBib29sIHN1Y2Nlc3MgPSA6OlJlYWRGaWxlKGhh
bmRsZSwgZGF0YSwgbGVuZ3RoLCAmYnl0ZXNSZWFkLCAwKTsKKworICAgIGlmICghc3VjY2VzcykK
KyAgICAgICAgcmV0dXJuIC0xOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KGJ5dGVzUmVh
ZCk7Cit9CisKK2Jvb2wgaGFyZExpbmtPckNvcHlGaWxlKGNvbnN0IFN0cmluZyYgc291cmNlLCBj
b25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uKQoreworICAgIHJldHVybiAhITo6Q29weUZpbGUoc3Ry
aW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKHNvdXJjZSkuZGF0YSgpLCBzdHJpbmdUb051bGxUZXJt
aW5hdGVkV0NoYXIoZGVzdGluYXRpb24pLmRhdGEoKSwgVFJVRSk7Cit9CisKK1N0cmluZyBsb2Nh
bFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKQoreworICAgIHJldHVybiBjYWNoZWRTdG9y
YWdlRGlyZWN0b3J5KENTSURMX0xPQ0FMX0FQUERBVEEpOworfQorCitTdHJpbmcgcm9hbWluZ1Vz
ZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKQoreworICAgIHJldHVybiBjYWNoZWRTdG9yYWdl
RGlyZWN0b3J5KENTSURMX0FQUERBVEEpOworfQorCitWZWN0b3I8U3RyaW5nPiBsaXN0RGlyZWN0
b3J5KGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIGZpbHRlcikKK3sKKyAg
ICBWZWN0b3I8U3RyaW5nPiBlbnRyaWVzOworCisgICAgUGF0aFdhbGtlciB3YWxrZXIoZGlyZWN0
b3J5LCBmaWx0ZXIpOworICAgIGlmICghd2Fsa2VyLmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJu
IGVudHJpZXM7CisKKyAgICBkbyB7CisgICAgICAgIGlmICh3YWxrZXIuZGF0YSgpLmR3RmlsZUF0
dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9ESVJFQ1RPUlkKKyAgICAgICAgICAgICYmICghd2Nz
Y21wKHdhbGtlci5kYXRhKCkuY0ZpbGVOYW1lLCBMIi4iKSB8fCAhd2NzY21wKHdhbGtlci5kYXRh
KCkuY0ZpbGVOYW1lLCBMIi4uIikpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAg
ZW50cmllcy5hcHBlbmQoZGlyZWN0b3J5ICsgIlxcIiArIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
VUNoYXIqPih3YWxrZXIuZGF0YSgpLmNGaWxlTmFtZSkpOworICAgIH0gd2hpbGUgKHdhbGtlci5z
dGVwKCkpOworCisgICAgcmV0dXJuIGVudHJpZXM7Cit9CisKK2Jvb2wgZ2V0Vm9sdW1lRnJlZVNw
YWNlKGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90JikKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K09wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUp
Cit7CisgICAgYXV0byBoYW5kbGUgPSBvcGVuRmlsZShmc0ZpbGUuZGF0YSgpLCBGaWxlT3Blbk1v
ZGU6OlJlYWQpOworICAgIGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUpKQorICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworCisgICAgQllfSEFORExFX0ZJTEVfSU5GT1JNQVRJT04gZmlsZUlu
Zm9ybWF0aW9uID0geyB9OworICAgIGlmICghOjpHZXRGaWxlSW5mb3JtYXRpb25CeUhhbmRsZSho
YW5kbGUsICZmaWxlSW5mb3JtYXRpb24pKSB7CisgICAgICAgIGNsb3NlRmlsZShoYW5kbGUpOwor
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIH0KKworICAgIGNsb3NlRmlsZShoYW5k
bGUpOworCisgICAgcmV0dXJuIGZpbGVJbmZvcm1hdGlvbi5kd1ZvbHVtZVNlcmlhbE51bWJlcjsK
K30KKworU3RyaW5nIHJlYWxQYXRoKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCit7CisgICAgcmV0
dXJuIGdldEZpbmFsUGF0aE5hbWUoZmlsZVBhdGgpOworfQorCitTdHJpbmcgY3JlYXRlVGVtcG9y
YXJ5RGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUZW1wb3JhcnlQYXRoKFtdKGNv
bnN0IFN0cmluZyYgcHJvcG9zZWRQYXRoKSB7CisgICAgICAgIHJldHVybiBtYWtlQWxsRGlyZWN0
b3JpZXMocHJvcG9zZWRQYXRoKTsKKyAgICB9KTsKK30KKworYm9vbCBkZWxldGVOb25FbXB0eURp
cmVjdG9yeShjb25zdCBTdHJpbmcmIGRpcmVjdG9yeVBhdGgpCit7CisgICAgU0hGSUxFT1BTVFJV
Q1QgZGVsZXRlT3BlcmF0aW9uID0geworICAgICAgICBudWxscHRyLAorICAgICAgICBGT19ERUxF
VEUsCisgICAgICAgIHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihkaXJlY3RvcnlQYXRoKS5k
YXRhKCksCisgICAgICAgIEwiIiwKKyAgICAgICAgRk9GX05PQ09ORklSTUFUSU9OIHwgRk9GX05P
RVJST1JVSSB8IEZPRl9TSUxFTlQsCisgICAgICAgIGZhbHNlLAorICAgICAgICAwLAorICAgICAg
ICBMIiIKKyAgICB9OworICAgIHJldHVybiAhU0hGaWxlT3BlcmF0aW9uKCZkZWxldGVPcGVyYXRp
b24pOworfQorCit9IC8vIG5hbWVzcGFjZSBGaWxlU3lzdGVtCit9IC8vIG5hbWVzcGFjZSBXVEYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9QYXRoV2Fsa2VyLmNwcCBiL1NvdXJjZS9X
VEYvd3RmL3dpbi9QYXRoV2Fsa2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNmQzZjk3MDYwNDljYjEzYzll
ZjYzNTVlYmI2M2E1MDc5ODUwMjIxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYv
d2luL1BhdGhXYWxrZXIuY3BwCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8d3RmL3dpbi9QYXRoV2Fsa2VyLmg+CisKKyNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC93aW4vV0NoYXJTdHJp
bmdFeHRyYXMuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK1BhdGhXYWxrZXI6OlBhdGhXYWxrZXIo
Y29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIGNvbnN0IFN0cmluZyYgcGF0dGVybikKK3sKKyAgICBT
dHJpbmcgcGF0aCA9IGRpcmVjdG9yeSArICJcXCIgKyBwYXR0ZXJuOworICAgIG1faGFuZGxlID0g
OjpGaW5kRmlyc3RGaWxlVyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIocGF0aCkuZGF0YSgp
LCAmbV9kYXRhKTsKK30KKworUGF0aFdhbGtlcjo6flBhdGhXYWxrZXIoKQoreworICAgIGlmICgh
aXNWYWxpZCgpKQorICAgICAgICByZXR1cm47CisgICAgOjpGaW5kQ2xvc2UobV9oYW5kbGUpOwor
fQorCitib29sIFBhdGhXYWxrZXI6OnN0ZXAoKQoreworICAgIHJldHVybiA6OkZpbmROZXh0Rmls
ZVcobV9oYW5kbGUsICZtX2RhdGEpOworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9QYXRoV2Fsa2VyLmggYi9Tb3VyY2UvV1RGL3d0Zi93aW4v
UGF0aFdhbGtlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk1M2FlMmU2YWU4NTYxYWYzNDU0ZTIxODM4OGRmODkw
MDVlYTMzYmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vUGF0aFdhbGtl
ci5oCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlIDxXaW5kb3dz
Lmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4KKworbmFtZXNwYWNlIFdURiB7CisKK2NsYXNzIFBhdGhXYWxrZXIgeworICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKFBhdGhXYWxrZXIpOworcHVibGljOgorICAgIFBhdGhXYWxrZXIoY29uc3Qg
V1RGOjpTdHJpbmcmIGRpcmVjdG9yeSwgY29uc3QgV1RGOjpTdHJpbmcmIHBhdHRlcm4pOworICAg
IH5QYXRoV2Fsa2VyKCk7CisKKyAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2hh
bmRsZSAhPSBJTlZBTElEX0hBTkRMRV9WQUxVRTsgfQorICAgIGNvbnN0IFdJTjMyX0ZJTkRfREFU
QVcmIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KKworICAgIGJvb2wgc3RlcCgpOwor
Citwcml2YXRlOgorICAgIEhBTkRMRSBtX2hhbmRsZTsKKyAgICBXSU4zMl9GSU5EX0RBVEFXIG1f
ZGF0YTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwCmluZGV4IDkzNTY2NTAxYTk5ZTE5ODg4YjFiZDM5NTQ1
Mjg4MWM0NzQ1NTdkZjYuLjgxOGYyMjRiZDU2NDgzYzhhZDY2MDJiMzAyZDZhZTBiNzJkZWQxYTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAKQEAg
LTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJDRE1GYWN0b3J5LmgiCiAjaW5jbHVkZSAiQ0RNUHJp
dmF0ZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgog
I2luY2x1ZGUgIkluaXREYXRhUmVnaXN0cnkuaCIKICNpbmNsdWRlICJNZWRpYUtleXNSZXF1aXJl
bWVudC5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCkBAIC00Miw2ICs0MSw3IEBACiAjaW5j
bHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbkRhdGEuaCIK
ICNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktp
dE1lZGlhS2V5U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNlc3Npb24uY3BwCmluZGV4IGU2NjZjZTk3OTM2NzQ1
ZWRhMDEwNjYwNzk3OGY2ZTk4MDlmZjBiMzkuLjY1ZWRkYTE2Zjc5NTBkMjQ5YmNmNzMxNjI4NjE1
MDg1NGVmMjgxZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5U2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmNw
cApAQCAtMzAsMTMgKzMwLDEzIEBACiAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUg
IkV2ZW50TmFtZXMuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiUGFnZS5o
IgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luRGF0YS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgi
CiAjaW5jbHVkZSAiV2ViS2l0TWVkaWFLZXlFcnJvci5oIgogI2luY2x1ZGUgIldlYktpdE1lZGlh
S2V5TWVzc2FnZUV2ZW50LmgiCiAjaW5jbHVkZSAiV2ViS2l0TWVkaWFLZXlzLmgiCisjaW5jbHVk
ZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHAKaW5kZXgg
NmRkNDE3MTMwOGFkNDY3ZjJhNGMyN2M5Y2U5NzcyOWIzZmFkOGNmOS4uMzY4Nzk0ZWY1YzFhMGZl
Nzk4YjJhMWJhNTA4ODZjMGI0ZmViY2I5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcApAQCAtMjcsMTIgKzI3LDEyIEBACiAj
aW5jbHVkZSAiRE9NRmlsZVN5c3RlbS5oIgogCiAjaW5jbHVkZSAiRmlsZS5oIgotI2luY2x1ZGUg
IkZpbGVNZXRhZGF0YS5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJGaWxl
U3lzdGVtRGlyZWN0b3J5RW50cnkuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtRmlsZUVudHJ5Lmgi
CiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgPHd0Zi9Dcm9z
c1RocmVhZENvcGllci5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlTWV0YWRhdGEuaD4KKyNpbmNsdWRl
IDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9VVUlELmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbUVudHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRW50cnkuY3BwCmluZGV4IGRjY2I1YTExODYzZDliYjEw
ZjI4N2Q1N2ZkYzEzOWEwYjliMWIxMTEuLjQyNGNjYTI2Y2Q0YzdiODYxMDNmZDUyMGYxZmY3MGYw
ZGEwMzUxZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9G
aWxlU3lzdGVtRW50cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2Fw
aS9GaWxlU3lzdGVtRW50cnkuY3BwCkBAIC0yOSwxMCArMjksMTAgQEAKICNpbmNsdWRlICJET01F
eGNlcHRpb24uaCIKICNpbmNsdWRlICJET01GaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiRXJyb3JD
YWxsYmFjay5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJGaWxlU3lzdGVt
RGlyZWN0b3J5RW50cnkuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtRW50cnlDYWxsYmFjay5oIgog
I2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5
c3RlbS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuY3BwCmluZGV4
IGM3ZmRmZDBkZDY1NDVmOGM2ZmU1MzQyZmIzNjQ2ZmU5YTg0Njk0YjkuLmI0MjliM2YyNmI5MzQ2
ZmJiMWRhZTdlYzY1MGU0NmUyNTZkZmM4YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmNwcApAQCAtMjgs
OCArMjgsOCBAQAogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKLSNpbmNsdWRlICJG
aWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlIDx3dGYv
RmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAppbmRleCAyMTc4
Y2M0MmE5YjUxMTQzY2U1ZDg1ZjRkMTFmN2FiMjYwOTI0ZWM3Li4yODVkNTAyZGFlODFhOWE3Njhh
YTM0YTFkMjU2ZGY1MDQ3ZDYxYmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNw
cApAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKLSNp
bmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiSURCQmluZGluZ1V0aWxpdGllcy5oIgog
I2luY2x1ZGUgIklEQkdldEFsbFJlY29yZHNEYXRhLmgiCiAjaW5jbHVkZSAiSURCR2V0QWxsUmVz
dWx0LmgiCkBAIC01NCw2ICs1Myw3IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNHbG9i
YWxPYmplY3QuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJvbmdJbmxpbmVzLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3RydWN0dXJlSW5saW5lcy5oPgorI2luY2x1ZGUgPHd0
Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9TUUxpdGVJREJUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCVHJhbnNhY3Rpb24uY3BwCmluZGV4IDc4MWI3
OWY2M2EwNjFkNThkMWM5MmE0MTNjMjFhZmRlNjU2NDkzNmUuLmJlZWE2YjE2NzA2MjRlNWM5ODBm
MzE2NjM0YzAzNjVkZmRlYmM2Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQlRyYW5zYWN0aW9uLmNwcApA
QCAtMjcsMTMgKzI3LDEzIEBACiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAotI2lu
Y2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJJREJDdXJzb3JJbmZvLmgiCiAjaW5jbHVk
ZSAiSW5kZXhlZERCLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlNRTGl0ZUlE
QkJhY2tpbmdTdG9yZS5oIgogI2luY2x1ZGUgIlNRTGl0ZUlEQkN1cnNvci5oIgogI2luY2x1ZGUg
IlNRTGl0ZVRyYW5zYWN0aW9uLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIElEQlNlcnZlciB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJT
ZXJ2ZXIuY3BwCmluZGV4IDYxYWViOGY3ZDcwMTUxYjk0MjI4NWFjZGNjZjgxYmZiMWVhNDI2MjYu
LmRkOWY1YWQyOTMxN2M1Y2RjNzU4ODMyYWM2YTM3MGJkZjk1ZGQ4OTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nl
c3NJREJTZXJ2ZXIuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpZiBFTkFCTEUoSU5ERVhFRF9E
QVRBQkFTRSkKIAotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJJREJDb25uZWN0
aW9uVG9DbGllbnQuaCIKICNpbmNsdWRlICJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuaCIKICNpbmNs
dWRlICJJREJDdXJzb3JJbmZvLmgiCkBAIC00MCw2ICszOSw3IEBACiAjaW5jbHVkZSAiSURCUmVz
dWx0RGF0YS5oIgogI2luY2x1ZGUgIklEQlZhbHVlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgor
I2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCmluZGV4IGQ5NjU0MWVkNDlmNjkzODI0ZWQx
ZGZjNTI1MDg4ZGFjMzJiYzU5YzUuLjQwOGY2MjIxMmFlMmIxN2IzOGFjMTkwOTg5NTFhMGYwOTJk
NGIwNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlVHJhY2tlci5jcHAKQEAgLTM0LDcgKzM0LDYgQEAKICNpbmNsdWRlICJEYXRhYmFz
ZU1hbmFnZXIuaCIKICNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXJDbGllbnQuaCIKICNpbmNsdWRl
ICJEYXRhYmFzZVRocmVhZC5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJM
b2dnaW5nLmgiCiAjaW5jbHVkZSAiT3JpZ2luTG9jay5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3Jp
Z2luLmgiCkBAIC00Myw2ICs0Miw3IEBACiAjaW5jbHVkZSAiU1FMaXRlRmlsZVN5c3RlbS5oIgog
I2luY2x1ZGUgIlNRTGl0ZVN0YXRlbWVudC5oIgogI2luY2x1ZGUgIlNRTGl0ZVRyYW5zYWN0aW9u
LmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVh
ZC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRM
aWJFeHRyYXMuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvT3JpZ2luTG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL09y
aWdpbkxvY2suY3BwCmluZGV4IDQyM2IyZTY2ZGRmYTEyY2MzNDBmNjBmY2U1OWQzNTNkZjk5ODY3
ZjQuLmEyMWJjZGI3ODM4NmM4MTBlYzU5OTQxYzI3NWY0ZWZiYWZmMjNmYjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luTG9jay5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5Mb2NrLmNwcApAQCAtMjYs
OCArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk9yaWdpbkxvY2suaCIK
IAotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTdHJp
bmcgT3JpZ2luTG9jazo6bG9ja0ZpbGVOYW1lRm9yUGF0aChTdHJpbmcgb3JpZ2luUGF0aCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luTG9jay5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5Mb2NrLmgKaW5kZXgg
YTE2ZTg0ZjE0ODlkYWYyZWU4ZjUwNDYxOWQxMzk5M2I4ZDM3NWUxMC4uZWNjMjllODkwMjViZGY2
MjkzOTJiMTA1OWVmODg3MGU2ZjhmOTJmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5Mb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9PcmlnaW5Mb2NrLmgKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBv
bmNlCiAKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0u
aD4KICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291
bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9jb2NvYS9EYXRhYmFzZU1hbmFnZXJDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvY29jb2EvRGF0YWJhc2VN
YW5hZ2VyQ29jb2EubW0KaW5kZXggN2NmZTlmYjA2MzI2OTE4MWQ0NGYxM2MzODM2ODI1MzNkNGU0
ZGZjOS4uOGQzMjUwNzNiMDRhY2ExZDMyODQ5NmUxODI4MzM4ZGZlYmNhYmZmMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9jb2NvYS9EYXRhYmFzZU1hbmFn
ZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL2NvY29h
L0RhdGFiYXNlTWFuYWdlckNvY29hLm1tCkBAIC0yOSw3ICsyOSw3IEBACiAjaW1wb3J0ICJjb25m
aWcuaCIKICNpbXBvcnQgIkRhdGFiYXNlTWFuYWdlci5oIgogCi0jaW1wb3J0ICJGaWxlU3lzdGVt
LmgiCisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dl
YkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXggODY2ZWE2YTU0YjlhNDJmODc4ZDRlMTliNjUw
YTJjM2MzYmEyMDlhOS4uNGQ3MmY5ZGVlZjgwZWI2ZTQ0NTY3OTczZDVjNmRjZmY2OTA1NWI4NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTE4OSw3ICsxODksNiBAQCBsaXN0KEFQUEVO
RCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9hdWRpby9tYWMvQ0FSaW5nQnVmZmVyLmNw
cAogICAgIHBsYXRmb3JtL2F1ZGlvL21hYy9GRlRGcmFtZU1hYy5jcHAKIAotICAgIHBsYXRmb3Jt
L2NmL0ZpbGVTeXN0ZW1DRi5jcHAKICAgICBwbGF0Zm9ybS9jZi9LZXllZERlY29kZXJDRi5jcHAK
ICAgICBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAKICAgICBwbGF0Zm9ybS9jZi9NYWlu
VGhyZWFkU2hhcmVkVGltZXJDRi5jcHAKQEAgLTIwMCw3ICsxOTksNiBAQCBsaXN0KEFQUEVORCBX
ZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5ibG9ja0hh
bmRsZXJDb2NvYS5tbQogICAgIHBsYXRmb3JtL2NvY29hL0NvcmVWaWRlb1NvZnRMaW5rLmNwcAog
ICAgIHBsYXRmb3JtL2NvY29hL0ZpbGVNb25pdG9yQ29jb2EubW0KLSAgICBwbGF0Zm9ybS9jb2Nv
YS9GaWxlU3lzdGVtQ29jb2EubW0KICAgICBwbGF0Zm9ybS9jb2NvYS9LZXlFdmVudENvY29hLm1t
CiAgICAgcGxhdGZvcm0vY29jb2EvTG9jYWxpemVkU3RyaW5nc0NvY29hLm1tCiAgICAgcGxhdGZv
cm0vY29jb2EvTUlNRVR5cGVSZWdpc3RyeUNvY29hLm1tCkBAIC0zNDcsNyArMzQ1LDYgQEAgbGlz
dChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1t
CiAgICAgcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbQogICAgIHBsYXRmb3JtL21hYy9FdmVu
dExvb3BNYWMubW0KLSAgICBwbGF0Zm9ybS9tYWMvRmlsZVN5c3RlbU1hYy5tbQogICAgIHBsYXRm
b3JtL21hYy9LZXlFdmVudE1hYy5tbQogICAgIHBsYXRmb3JtL21hYy9Mb2NhbEN1cnJlbnRHcmFw
aGljc0NvbnRleHQubW0KICAgICBwbGF0Zm9ybS9tYWMvTG9nZ2luZ01hYy5tbQpAQCAtNDE4LDgg
KzQxNSw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL25ldHdv
cmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQog
ICAgIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbQogCi0gICAgcGxh
dGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcAotCiAgICAgcGxhdGZvcm0vdGV4dC9jZi9I
eXBoZW5hdGlvbkNGLmNwcAogCiAgICAgcGxhdGZvcm0vdGV4dC9tYWMvTG9jYWxlTWFjLm1tCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtlIGIvU291
cmNlL1dlYkNvcmUvUGxhdGZvcm1QbGF5U3RhdGlvbi5jbWFrZQppbmRleCA5MDM3NjAzOWI5Njk2
ZTEzZjlkZWJjOWM0NzMwYTc5MDM5OTc5NTUxLi42ZDQ0NTM1ZDk1OTg0YmU1ODgzM2U4OGY5NzFl
NmE3MmYyZGJhYjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVBsYXlTdGF0
aW9uLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtUGxheVN0YXRpb24uY21ha2UK
QEAgLTYzLDcgKzYzLDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZv
cm0vcGxheXN0YXRpb24vU2Nyb2xsYmFyVGhlbWVQbGF5U3RhdGlvbi5jcHAKICAgICBwbGF0Zm9y
bS9wbGF5c3RhdGlvbi9Vc2VyQWdlbnRQbGF5U3RhdGlvbi5jcHAKIAotICAgIHBsYXRmb3JtL3Bv
c2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKICAgICBwbGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQ
T1NJWC5jcHAKIAogICAgIHBsYXRmb3JtL3RleHQvSHlwaGVuYXRpb24uY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRm
b3JtV2luLmNtYWtlCmluZGV4IDRmYWIzMDgyNjBlMDljODA1NDE5Yzg0YzdjYTgzNGQ4MWZiOTVj
NjUuLmZjYjU3YTQ1YTVmNDFlZjNiZjY3MDM4NGZkYTIzZjNjZGE4NjE0ZDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtV2luLmNtYWtlCkBAIC04NCw3ICs4NCw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09V
UkNFUwogICAgIHBsYXRmb3JtL3dpbi9EcmFnRGF0YVdpbi5jcHAKICAgICBwbGF0Zm9ybS93aW4v
RHJhZ0ltYWdlV2luLmNwcAogICAgIHBsYXRmb3JtL3dpbi9FdmVudExvb3BXaW4uY3BwCi0gICAg
cGxhdGZvcm0vd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCiAgICAgcGxhdGZvcm0vd2luL0dESU9iamVj
dENvdW50ZXIuY3BwCiAgICAgcGxhdGZvcm0vd2luL0dESVV0aWxpdGllcy5jcHAKICAgICBwbGF0
Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3BwCkBAIC05Myw3ICs5Miw2IEBAIGxpc3QoQVBQRU5EIFdl
YkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL3dpbi9NSU1FVHlwZVJlZ2lzdHJ5V2luLmNwcAog
ICAgIHBsYXRmb3JtL3dpbi9NYWluVGhyZWFkU2hhcmVkVGltZXJXaW4uY3BwCiAgICAgcGxhdGZv
cm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCi0gICAgcGxhdGZvcm0vd2luL1BhdGhXYWxrZXIuY3Bw
CiAgICAgcGxhdGZvcm0vd2luL1BsYXRmb3JtTW91c2VFdmVudFdpbi5jcHAKICAgICBwbGF0Zm9y
bS93aW4vUGxhdGZvcm1TY3JlZW5XaW4uY3BwCiAgICAgcGxhdGZvcm0vd2luL1BvcHVwTWVudVdp
bi5jcHAKQEAgLTI0OCw3ICsyNDYsNiBAQCBpZiAoVVNFX0NGKQogICAgIGxpc3QoQVBQRU5EIFdl
YkNvcmVfU09VUkNFUwogICAgICAgICBsb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZl
LmNwcAogCi0gICAgICAgIHBsYXRmb3JtL2NmL0ZpbGVTeXN0ZW1DRi5jcHAKICAgICAgICAgcGxh
dGZvcm0vY2YvS2V5ZWREZWNvZGVyQ0YuY3BwCiAgICAgICAgIHBsYXRmb3JtL2NmL0tleWVkRW5j
b2RlckNGLmNwcAogICAgICAgICBwbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQKaW5kZXggYjYxMjQxOTJjZTk0NDUyZjZkMWZlNGJiZjMwOWZjZGFjNDFiNDcyYS4uNTFl
MThjN2E5OTExZjQ4ZmUzMWRjMTZjOGNlODMwZThiYTE5MmVhMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAg
LTE1OTQsNyArMTU5NCw2IEBAIHBsYXRmb3JtL0ZpbGVDaG9vc2VyLmNwcAogcGxhdGZvcm0vRmls
ZUhhbmRsZS5jcHAKIHBsYXRmb3JtL0ZpbGVNb25pdG9yLmNwcAogcGxhdGZvcm0vRmlsZVN0cmVh
bS5jcHAKLXBsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwCiBwbGF0Zm9ybS9HZW5lcmljVGFza1F1ZXVl
LmNwcAogcGxhdGZvcm0vTGF5b3V0VW5pdC5jcHAKIHBsYXRmb3JtL0xlbmd0aC5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzQ29jb2EudHh0CmluZGV4IGM3MjgyNWFlZTUzY2M0MWVlM2FmNzgzYTAxMGI2Nzk4NWZl
OWJhMDQuLjUxNDE3ZTRkMjQzZGMyNjM4MWVmZjM5ZjNkMGYxYTkxMDU3YmY2YzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUv
U291cmNlc0NvY29hLnR4dApAQCAtMTgxLDcgKzE4MSw2IEBAIHBsYXRmb3JtL2F1ZGlvL21hYy9B
dWRpb1Nlc3Npb25NYWMuY3BwCiBwbGF0Zm9ybS9hdWRpby9tYWMvQ0FSaW5nQnVmZmVyLmNwcAog
cGxhdGZvcm0vYXVkaW8vbWFjL0ZGVEZyYW1lTWFjLmNwcAogCi1wbGF0Zm9ybS9jZi9GaWxlU3lz
dGVtQ0YuY3BwCiBwbGF0Zm9ybS9jZi9LZXllZERlY29kZXJDRi5jcHAKIHBsYXRmb3JtL2NmL0tl
eWVkRW5jb2RlckNGLmNwcAogcGxhdGZvcm0vY2YvTWFpblRocmVhZFNoYXJlZFRpbWVyQ0YuY3Bw
CkBAIC0xOTMsNyArMTkyLDYgQEAgcGxhdGZvcm0vY29jb2EvQ29udGVudEZpbHRlclVuYmxvY2tI
YW5kbGVyQ29jb2EubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9jb2NvYS9Db3JlVmlkZW9Tb2Z0TGlu
ay5jcHAKIHBsYXRmb3JtL2NvY29hL0RhdGFEZXRlY3RvcnNDb3JlU29mdExpbmsubW0KIHBsYXRm
b3JtL2NvY29hL0ZpbGVNb25pdG9yQ29jb2EubW0KLXBsYXRmb3JtL2NvY29hL0ZpbGVTeXN0ZW1D
b2NvYS5tbQogcGxhdGZvcm0vY29jb2EvS2V5RXZlbnRDb2NvYS5tbQogcGxhdGZvcm0vY29jb2Ev
TG9jYWxpemVkU3RyaW5nc0NvY29hLm1tCiBwbGF0Zm9ybS9jb2NvYS9NSU1FVHlwZVJlZ2lzdHJ5
Q29jb2EubW0KQEAgLTQ0Nyw3ICs0NDUsNiBAQCBwbGF0Zm9ybS9tYWMvQ3Vyc29yTWFjLm1tCiBw
bGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0KIHBsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW0K
IHBsYXRmb3JtL21hYy9FdmVudExvb3BNYWMubW0KLXBsYXRmb3JtL21hYy9GaWxlU3lzdGVtTWFj
Lm1tCiBwbGF0Zm9ybS9tYWMvS2V5RXZlbnRNYWMubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9tYWMv
UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjLm1tIEBuby11bmlmeQogcGxhdGZvcm0vbWFjL0xv
Y2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5tbQpAQCAtNTQyLDggKzUzOSw2IEBAIHBsYXRmb3Jt
L25ldHdvcmsvbWFjL1VUSVV0aWxpdGllcy5tbQogcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29y
ZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCiBwbGF0Zm9ybS9uZXR3
b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0KIAotcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3Rl
bVBPU0lYLmNwcAotCiBwbGF0Zm9ybS90ZXh0L2NmL0h5cGhlbmF0aW9uQ0YuY3BwCiAKIHBsYXRm
b3JtL3RleHQvaW9zL0xvY2FsaXplZERhdGVDYWNoZS5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDZmZWRjMjIyNGY4YjE1ZjI1
ZDAxMzM4NzEwYTA2OTYxZjYzNTY0ZDguLmVkMGU2Y2FmODhlZjJhMDljODg4YTFlNzdiMDk5M2Qw
ZTk3YWJiOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTEyNDcsNyArMTI0Nyw2IEBACiAJCTQ2NzMwMjAyMUM0RUZFNzgwMEJD
QjM1NyAvKiBJZ25vcmVPcGVuc0R1cmluZ1VubG9hZENvdW50SW5jcmVtZW50ZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NzMwMjAxMUM0RUZFNjYw
MEJDQjM1NyAvKiBJZ25vcmVPcGVuc0R1cmluZ1VubG9hZENvdW50SW5jcmVtZW50ZXIuaCAqLzsg
fTsKIAkJNDY4MkQyMDAxRjc5NzgzMDAwQzg2M0RCIC8qIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgyRDFG
RjFGNzk3ODIzMDBDODYzREIgLyogU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjgzNDRFMDFFRERGQUFB
MDBCNzc5NUIgLyogRE9NUmVjdExpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ2ODM0NERFMUVEREZBNUYwMEI3Nzk1QiAvKiBET01SZWN0TGlzdC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTQ2ODlG
MUFGMTI2N0JBRTEwMEU4RDM4MCAvKiBGaWxlTWV0YWRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODlGMUFFMTI2N0JBRTEwMEU4RDM4MCAvKiBG
aWxlTWV0YWRhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk0NkI2M0Y2QzFDNkU4RDE5MDAyRTkxNEIgLyogSlNFdmVudFRhcmdldEN1c3RvbS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCNjNGNkIx
QzZFOENERjAwMkU5MTRCIC8qIEpTRXZlbnRUYXJnZXRDdXN0b20uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkI5NTE5NTIwN0Q2MzM0MDBBN0Qy
REQgLyogQWJzdHJhY3RET01XaW5kb3cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ2Qjk1MThBMjA3RDYzMjgwMEE3RDJERCAvKiBBYnN0cmFjdERPTVdp
bmRvdy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTQ2Qjk1MTk2MjA3RDYzM0EwMEE3RDJERCAvKiBBYnN0cmFjdEZyYW1lLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkI5NTE4RjIwN0Q2MzJCMDBBN0Qy
REQgLyogQWJzdHJhY3RGcmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0xNDM5LDcgKzE0MzgsNiBAQAogCQk1MTQzQjI2MzFEREQxNTIwMDAx
NEZBQzYgLyogTGlua0ljb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxNDNCMjYyMURERDE0OTAwMDE0RkFDNiAvKiBMaW5rSWNvbi5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxNDVCMTBBMUJDNDhF
MkUwMEU4NjIxOSAvKiBJREJSZXNvdXJjZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNDVCMTA4MUJDNDg5MEIwMEU4NjIxOSAvKiBJ
REJSZXNvdXJjZUlkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk1MTQ4NDUzRjFCQjlEMDdFMDA2QTcyRUQgLyogSURCRXJyb3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNDg0NTNEMUJC
OUQwNzYwMDZBNzJFRCAvKiBJREJFcnJvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07Ci0JCTUxNEIzRjczMEM3MjIwNDcwMDA1MzBERiAvKiBGaWxlU3lz
dGVtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTRC
M0Y3MjBDNzIyMDQ3MDAwNTMwREYgLyogRmlsZVN5c3RlbS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxNEM3NjRDMENFOTIzNEUwMDdFRjNDRCAv
KiBBdXRoZW50aWNhdGlvbk1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTE0Qzc2NDIwQ0U5MjM0RTAwN0VGM0NEIC8qIEF1dGhlbnRpY2F0aW9uTWFj
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE0
Qzc2NEUwQ0U5MjM0RTAwN0VGM0NEIC8qIEZvcm1EYXRhU3RyZWFtTWFjLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTRDNzY0NDBDRTkyMzRFMDA3RUYz
Q0QgLyogRm9ybURhdGFTdHJlYW1NYWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk1MTRDNzY2RTBDRTkyM0ExMDA3RUYzQ0QgLyogQ3JlZGVudGlh
bC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0Qzc2
NTkwQ0U5MjNBMTAwN0VGM0NEIC8qIENyZWRlbnRpYWwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNzY5OSw3ICs3Njk3LDYgQEAKIAkJNDY4MzQ0
REMxRURERkE1RjAwQjc3OTVCIC8qIERPTVJlY3RMaXN0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBET01SZWN0TGlzdC5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODM0NEREMUVEREZBNUYwMEI3Nzk1
QiAvKiBET01SZWN0TGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01SZWN0TGlzdC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODM0NERFMUVEREZBNUYwMEI3Nzk1QiAv
KiBET01SZWN0TGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01SZWN0TGlzdC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk0Njg5RjFBRTEyNjdCQUUxMDBFOEQzODAgLyogRmlsZU1ldGFk
YXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbGVNZXRhZGF0YS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkI2M0Y2QjFDNkU4Q0RGMDAyRTkxNEIgLyog
SlNFdmVudFRhcmdldEN1c3RvbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U0V2ZW50VGFyZ2V0Q3VzdG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2Qjk1
MThBMjA3RDYzMjgwMEE3RDJERCAvKiBBYnN0cmFjdERPTVdpbmRvdy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBBYnN0cmFjdERPTVdpbmRvdy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0NkI5NTE4QzIwN0Q2MzI5MDBBN0QyREQgLyogUmVtb3RlRnJhbWUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlRnJhbWUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODEwMiw4ICs4MDk5LDYgQEAKIAkJNTE0NUIx
MDgxQkM0ODkwQjAwRTg2MjE5IC8qIElEQlJlc291cmNlSWRlbnRpZmllci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJREJSZXNvdXJjZUlkZW50aWZpZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0ODQ1M0MxQkI5RDA3NjAwNkE3MkVEIC8qIElEQkVycm9y
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElEQkVycm9yLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0ODQ1M0QxQkI5RDA3NjAwNkE3MkVEIC8q
IElEQkVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElEQkVycm9yLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUxNEIzRjcyMEM3MjIwNDcwMDA1MzBERiAv
KiBGaWxlU3lzdGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbGVTeXN0
ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTE0QjNGNzUwQzcyMjA1NTAwMDUz
MERGIC8qIEZpbGVTeXN0ZW1Db2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IEZpbGVTeXN0ZW1Db2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTE0Qzc2MzUwQ0U5MjI1RTAwN0VGM0NEIC8qIEpTU1FMRXJyb3IuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTUUxFcnJvci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUxNEM3NjM2MENFOTIyNUUwMDdFRjNDRCAvKiBKU1NRTFRyYW5zYWN0
aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU1FMVHJhbnNh
Y3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTRDNzY0MjBDRTkyMzRF
MDA3RUYzQ0QgLyogQXV0aGVudGljYXRpb25NYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQXV0aGVudGljYXRpb25NYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTgxNDIsOCArODEzNyw2IEBACiAJCTUxNUUzN0Y0MUZBQTkzODgwMEQ3RjIyQSAvKiBTZXJ2
aWNlV29ya2VyVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Vydmlj
ZVdvcmtlclR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNUY3OTUxMUNG
Q0EzQzcwMENDRUQ5MyAvKiBXZWJDb3JlQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQ29yZUNyb3NzVGhyZWFkQ29waWVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE1Rjc5NTIxQ0ZDQTNDNzAwQ0NFRDkzIC8q
IFdlYkNvcmVDcm9zc1RocmVhZENvcGllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJDb3JlQ3Jvc3NUaHJlYWRDb3BpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJNTE2MDMwMEEwQ0M0MjUxMjAwQzhBQzI1IC8qIEZpbGVTeXN0ZW1QT1NJWC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxlU3lzdGVtUE9TSVguY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MTYwMzA2QjBDQzQzNjIzMDBDOEFDMjUgLyog
RmlsZVN5c3RlbUNGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZp
bGVTeXN0ZW1DRi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNjA3MTJCMUJE
ODMwNTMwMERCQzRGMiAvKiBUcmFuc2FjdGlvbk9wZXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBUcmFuc2FjdGlvbk9wZXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MTYwNzEyQzFCRDgzMDcyMDBEQkM0RjIgLyogSURCT2JqZWN0U3RvcmVJ
bmZvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElEQk9iamVjdFN0
b3JlSW5mby5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNjA3MTJEMUJEODMw
NzIwMERCQzRGMiAvKiBJREJPYmplY3RTdG9yZUluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSURCT2JqZWN0U3RvcmVJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xMTI0NSw3ICsxMTIzOCw2IEBACiAJCUExQzJDNTc1MUZBMjg1MTYwMEJBNDZGQSAv
KiBQYXltZW50U2Vzc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYXltZW50U2Vzc2lvbi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExQzdGQUExMTMzQTVEMzUwMEQ2NzMy
RCAvKiBKU1hQYXRoUmVzdWx0Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTWFBhdGhSZXN1bHRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBMUNCRUY2MzFGOUYxMTI5MDAyOERFN0MgLyogTW9ja1BheW1lbnRNZXRob2QuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTW9ja1BheW1lbnRNZXRob2QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJQTFDQzExNjIxRTQ5M0QwMTAwRUZBNjlDIC8qIEZpbGVTeXN0ZW1NYWMubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBGaWxlU3lzdGVtTWFjLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMUNDNTY0QzFGNDYxNDUwMDBBNDU1NUIgLyog
SlNQYXltZW50TWV0aG9kRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U1BheW1lbnRNZXRob2REYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExQ0M1
NjREMUY0NjE0NTEwMEE0NTU1QiAvKiBKU1BheW1lbnRNZXRob2REYXRhLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUGF5bWVudE1ldGhvZERhdGEuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMUNDNTY0RTFGNDYxNDUyMDBBNDU1NUIgLyogSlNQ
YXltZW50Q29tcGxldGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQYXlt
ZW50Q29tcGxldGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzNDMyLDcgKzEz
NDI0LDYgQEAKIAkJQzU1OTJGNzcxQTkyQUEyODAwMUY4ODYyIC8qIENoYXJhY3RlclByb3BlcnRp
ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2hhcmFjdGVyUHJvcGVydGll
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNTVDN0JBMDE3MThBRkJBMDAxMzI3
RTQgLyogUmVuZGVyVGhlbWVJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBSZW5kZXJUaGVtZUlPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QzU3MkVFMUQxMjAxQzlCQzAwN0Q4RjgyIC8qIEpTSURCSW5kZXguaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNJREJJbmRleC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlDNTdGRURFMDEyMTJFRTlDMDA5N0JFNjUgLyogRmlsZVN5c3RlbS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxlU3lzdGVtLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQzU4NUE2NjAxMUQ0RkFDNTAwNEMzRTRCIC8qIElEQkJpbmRpbmdV
dGlsaXRpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSURCQmlu
ZGluZ1V0aWxpdGllcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1ODVBNjYx
MTFENEZBQzUwMDRDM0U0QiAvKiBJREJCaW5kaW5nVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IElEQkJpbmRpbmdVdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQzU4NUE2NkIxMUQ0RkIwNzAwNEMzRTRCIC8qIEpTSURCRGF0YWJhc2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNJREJEYXRhYmFzZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY3NjYsNyArMTY3NTcsNiBAQAogCQkxQUU0MkY2
NzBBQTRCOENCMDBDODYxMkQgLyogY2YgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNo
aWxkcmVuID0gKAotCQkJCTUxNjAzMDZCMENDNDM2MjMwMEM4QUMyNSAvKiBGaWxlU3lzdGVtQ0Yu
Y3BwICovLAogCQkJCTUxN0E2M0JGMUI3NDMxN0UwMEU3RENEQyAvKiBLZXllZERlY29kZXJDRi5j
cHAgKi8sCiAJCQkJNTE3QTYzQzAxQjc0MzE3RTAwRTdEQ0RDIC8qIEtleWVkRGVjb2RlckNGLmgg
Ki8sCiAJCQkJNTE3QTYzQzExQjc0MzE3RTAwRTdEQ0RDIC8qIEtleWVkRW5jb2RlckNGLmNwcCAq
LywKQEAgLTE4NzA5LDE0ICsxODY5OSw2IEBACiAJCQlwYXRoID0gbWFjOwogCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKIAkJfTsKLQkJNTE2MDMwMDkwQ0M0MjQ1NDAwQzhBQzI1IC8qIHBvc2l4
ICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQk1MTYwMzAw
QTBDQzQyNTEyMDBDOEFDMjUgLyogRmlsZVN5c3RlbVBPU0lYLmNwcCAqLywKLQkJCSk7Ci0JCQlw
YXRoID0gcG9zaXg7Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9OwogCQk1MTYwRjQ5
MjBCMEFBNzE1MDBDMUQyQUYgLyogbWFjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKQEAgLTIwMDc3LDcgKzIwMDU5LDYgQEAKIAkJCQlBN0NGQjNENDBCN0VEMTE4
MDA3MEMzMkQgLyogRHJhZ0ltYWdlTWFjLm1tICovLAogCQkJCUUxQkE2NkYwMTc0MkJEODYwMEMy
MDI1MSAvKiBEeW5hbWljTGlua2VySW50ZXJwb3NpbmcuaCAqLywKIAkJCQkxQ0ExOUUwMzBEQzI1
NTk1MDA2NUE5OTQgLyogRXZlbnRMb29wTWFjLm1tICovLAotCQkJCUExQ0MxMTYyMUU0OTNEMDEw
MEVGQTY5QyAvKiBGaWxlU3lzdGVtTWFjLm1tICovLAogCQkJCTkzNUM0NzZFMDlBQzRENzMwMEE2
QUFCNCAvKiBLZXlFdmVudE1hYy5tbSAqLywKIAkJCQlGNDRBNUY1NzFGRUQzODMwMDA3RjU5NDQg
LyogTGVnYWN5TlNQYXN0ZWJvYXJkVHlwZXMuaCAqLywKIAkJCQkwNkU4MUVENjBBQjVENUU5MDBD
ODc4MzcgLyogTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0LmggKi8sCkBAIC0yMjUyNyw3ICsy
MjUwOCw2IEBACiAJCQkJN0M3OTQxRTMxQzU2QzI5MzAwQTRDNThFIC8qIERhdGFEZXRlY3RvcnND
b3JlU29mdExpbmsuaCAqLywKIAkJCQk3Qzc5NDFFMjFDNTZDMjkzMDBBNEM1OEUgLyogRGF0YURl
dGVjdG9yc0NvcmVTb2Z0TGluay5tbSAqLywKIAkJCQk3QTA5Q0VGMDFGMDFEMUY3MDBFOTNCREIg
LyogRmlsZU1vbml0b3JDb2NvYS5tbSAqLywKLQkJCQk1MTRCM0Y3NTBDNzIyMDU1MDAwNTMwREYg
LyogRmlsZVN5c3RlbUNvY29hLm1tICovLAogCQkJCUE1Qzk3NENGMTE0ODVGRjEwMDY2RjJBQiAv
KiBLZXlFdmVudENvY29hLmggKi8sCiAJCQkJQTVDOTc0RDAxMTQ4NUZGMTAwNjZGMkFCIC8qIEtl
eUV2ZW50Q29jb2EubW0gKi8sCiAJCQkJMUE0ODMyQjIxQTk1M0JBNjAwOEI0REZFIC8qIExvY2Fs
aXplZFN0cmluZ3NDb2NvYS5tbSAqLywKQEAgLTI1MzcwLDcgKzI1MzUwLDYgQEAKIAkJCQkwNzIy
MUI5MjE3Q0YwQUQ0MDA4NDhFNTEgLyogbWVkaWFzdHJlYW0gKi8sCiAJCQkJNTlDNzdGMTAxMDU0
NTkxQzAwNTA2MTA0IC8qIG1vY2sgKi8sCiAJCQkJNjU2Qjg0RDcwQUVBMUNFOTAwQTA5NUI0IC8q
IG5ldHdvcmsgKi8sCi0JCQkJNTE2MDMwMDkwQ0M0MjQ1NDAwQzhBQzI1IC8qIHBvc2l4ICovLAog
CQkJCTFBMkU2RTU2MENDNTUxRTAwMDRBMjA2MiAvKiBzcWwgKi8sCiAJCQkJQjJDM0Q5RUMwRDAw
NkMxRDAwRUY2RjI2IC8qIHRleHQgKi8sCiAJCQkJRTE4ODIzNUYyMDMxRjUwRjAwQjQyREYzIC8q
IHZyICovLApAQCAtMjU0MTUsMTQgKzI1Mzk0LDExIEBACiAJCQkJMDY2Qzc3MkEwQUI2MDNCNzAw
MjM4Q0M0IC8qIEZpbGVDaG9vc2VyLmggKi8sCiAJCQkJNTM1MUQ0QUUxREY5MTZBQzAwODAxMENE
IC8qIEZpbGVIYW5kbGUuY3BwICovLAogCQkJCTUzNTFENEFGMURGOTE2QUMwMDgwMTBDRCAvKiBG
aWxlSGFuZGxlLmggKi8sCi0JCQkJNDY4OUYxQUUxMjY3QkFFMTAwRThEMzgwIC8qIEZpbGVNZXRh
ZGF0YS5oICovLAogCQkJCTdBMDlDRUVCMUYwMUNDOTMwMEU5M0JEQiAvKiBGaWxlTW9uaXRvci5j
cHAgKi8sCiAJCQkJN0EwOUNFRUMxRjAxQ0M5MzAwRTkzQkRCIC8qIEZpbGVNb25pdG9yLmggKi8s
CiAJCQkJMkVGMUJGRTgxMjFDOUY0MjAwQzI3NjI3IC8qIEZpbGVTdHJlYW0uY3BwICovLAogCQkJ
CTJFRjFCRkU5MTIxQzlGNDIwMEMyNzYyNyAvKiBGaWxlU3RyZWFtLmggKi8sCiAJCQkJMkVGMUJG
RjgxMjFDQjBDRTAwQzI3NjI3IC8qIEZpbGVTdHJlYW1DbGllbnQuaCAqLywKLQkJCQlDNTdGRURF
MDEyMTJFRTlDMDA5N0JFNjUgLyogRmlsZVN5c3RlbS5jcHAgKi8sCi0JCQkJNTE0QjNGNzIwQzcy
MjA0NzAwMDUzMERGIC8qIEZpbGVTeXN0ZW0uaCAqLywKIAkJCQlCQzA3M0JBOTBDMzk5QjFGMDAw
RjU5NzkgLyogRmxvYXRDb252ZXJzaW9uLmggKi8sCiAJCQkJQ0Q0QkU1MjkxQ0UxMzQyNTAwOUQ4
N0RBIC8qIEdlbmVyaWNUYXNrUXVldWUuY3BwICovLAogCQkJCUNENjJGQjk0MUFGMDE4RTcwMDEy
RUQ3RCAvKiBHZW5lcmljVGFza1F1ZXVlLmggKi8sCkBAIC0yOTExMCw3ICsyOTA4Niw2IEBACiAJ
CQkJRjU1QjNEQkUxMjUxRjEyRDAwM0VGMjY5IC8qIEZpbGVJbnB1dFR5cGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTk3NkQ2Qzg2MTIyQjhBM0QwMDFGRDFGNyAvKiBGaWxlTGlzdC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJODM1RDU0QzUxRjRERTUzODAwRTYwNjcxIC8qIEZpbGVMaXN0Q3JlYXRvci5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJNDY4OUYxQUYxMjY3QkFFMTAwRThEMzgwIC8qIEZpbGVNZXRh
ZGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0EwOUNFRjExRjAyMDY5QjAwRTkzQkRCIC8qIEZp
bGVNb25pdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzZENkM4OTEyMkI4QTNEMDAxRkQxRjcg
LyogRmlsZVJlYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkU3NTg0MUUxMjc3OUFEQTAwNjI2
MjhCIC8qIEZpbGVSZWFkZXJMb2FkZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMjkxMTgsNyArMjkw
OTMsNiBAQAogCQkJCTJFREYzNjlEMTIyQzk0QjQwMDJGN0Q0RSAvKiBGaWxlUmVhZGVyU3luYy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMkVGMUJGRUIxMjFDOUY0MjAwQzI3NjI3IC8qIEZpbGVTdHJl
YW0uaCBpbiBIZWFkZXJzICovLAogCQkJCTJFRjFCRkY5MTIxQ0IwQ0UwMEMyNzYyNyAvKiBGaWxl
U3RyZWFtQ2xpZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTRCM0Y3MzBDNzIyMDQ3MDAwNTMw
REYgLyogRmlsZVN5c3RlbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNGQjMzNzExRjUwOEE1NDAw
OTg2RTU0IC8qIEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
ODMwMzM1MDIxRjU0OTA1NzAwNERGNzA3IC8qIEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTgzMDMzNTAzMUY1NDkwNUEwMDRERjcwNyAvKiBGaWxlU3lzdGVt
RW50cmllc0NhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9HQ0NvbnRyb2xsZXIuY3BwCmluZGV4IGQyNTFkMmVjZTFmMThiMjQwYTg4YmJmYjNhMjJj
MmMyNGY4MGY2Y2QuLjhhODNjNGI2ZjZmNTk2MDdkZmE3NzA0ODQyOWQwMmIxZTQyOTczM2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvR0NDb250cm9sbGVyLmNwcApAQCAtMjcsNyAr
MjcsNiBAQAogI2luY2x1ZGUgIkdDQ29udHJvbGxlci5oIgogCiAjaW5jbHVkZSAiQ29tbW9uVk0u
aCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiSlNIVE1MRG9jdW1lbnQuaCIK
ICNpbmNsdWRlICJMb2NhdGlvbi5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXAuaD4K
QEAgLTM2LDYgKzM1LDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9WTS5oPgogI2luY2x1
ZGUgPHBhbC9Mb2dnaW5nLmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKyNpbmNsdWRl
IDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RhdGFUcmFuc2Zlckl0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zl
ckl0ZW0uY3BwCmluZGV4IGEzZWNjNWE1YzllMGYzMGQ3NjAzMjgxN2YwZDQ2Mzk2MzNmZjFhOGIu
LjU5Zjk3ODZlZDhjZmE2NDllMDdkZGI3ZDg4NGFjOTI0MzI5NzYzOWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRGF0YVRyYW5zZmVySXRlbS5jcHAKQEAgLTM2LDExICszNiwxMSBAQAogI2luY2x1ZGUg
IkRhdGFUcmFuc2Zlckl0ZW1MaXN0LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJGaWxlLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW1E
aXJlY3RvcnlFbnRyeS5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW1GaWxlRW50cnkuaCIKICNpbmNs
dWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU3RyaW5nQ2FsbGJhY2su
aCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRl
ckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVy
Q29jb2EubW0KaW5kZXggOTcyMTdmMWQ3NWQwZTU0NmZjZjg0MzFlMmQ0YWY4YmE1NDNhYjYxYy4u
MjU0YTM2OGZhNzc0YWQ2MzcyZDQ2ZjE1M2M1YTk1YzRlZTI0MjhjNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KQEAg
LTM3LDcgKzM3LDYgQEAKICNpbXBvcnQgIkVkaXRvci5oIgogI2ltcG9ydCAiRWRpdG9yQ2xpZW50
LmgiCiAjaW1wb3J0ICJGaWxlLmgiCi0jaW1wb3J0ICJGaWxlU3lzdGVtLmgiCiAjaW1wb3J0ICJG
cmFtZS5oIgogI2ltcG9ydCAiRnJhbWVMb2FkZXIuaCIKICNpbXBvcnQgIkZyYW1lTG9hZGVyQ2xp
ZW50LmgiCkBAIC02NSw2ICs2NCw3IEBACiAjaW1wb3J0ICJXZWJOU0F0dHJpYnV0ZWRTdHJpbmdF
eHRyYXMuaCIKICNpbXBvcnQgIm1hcmt1cC5oIgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0F0
dHJpYnV0ZWRTdHJpbmdTUEkuaD4KKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0
IDx3dGYvU29mdExpbmtpbmcuaD4KICNpbXBvcnQgPHd0Zi9VUkxQYXJzZXIuaD4KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvRmlsZS5jcHAKaW5kZXggYjczZmNkZTc5ZjQ2MDc5MmM5MjZjMDc1ZmJhYWY2NjQ4YTcy
NDEzMS4uYWRiMzBjOTMzY2EyZmIyNWNlZjVkMGNhNDEzNjU2MGJiYTZkODExNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0ZpbGUuY3BwCkBAIC0yNywxMSArMjcsMTEgQEAKICNpbmNsdWRlICJGaWxlLmgiCiAK
ICNpbmNsdWRlICJCbG9iVVJMLmgiCi0jaW5jbHVkZSAiRmlsZU1ldGFkYXRhLmgiCi0jaW5jbHVk
ZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRl
ICJUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSA8d3RmL0RhdGVNYXRoLmg+Cisj
aW5jbHVkZSA8d3RmL0ZpbGVNZXRhZGF0YS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZUNvY29hLm1tIGIvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9GaWxlQ29jb2EubW0KaW5kZXggMjBiZTZmN2FlZGVjYTc1MzQ4MzU2
M2IxYmU0ZjkwNjJmYTQzOGEwMy4uNjY0ZjlhNTM2MTNkZjI2Y2ExN2M3MDdjMjFiNTBjNjQ2NDUy
MDRlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlQ29jb2EubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlQ29jb2EubW0KQEAgLTI4LDcgKzI4LDcgQEAK
IAogI2lmIEVOQUJMRShGSUxFX1JFUExBQ0VNRU5UKQogCi0jaW1wb3J0ICJGaWxlU3lzdGVtLmgi
CisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICNpbXBvcnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVDb3JlU2VydmljZXMuaD4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCmluZGV4IDAzYWYzYTk2MzQ5NGZhZjAwMTJlMjFh
OTM4ZjUxOTE3ODAzMDg1MDguLjk5OGY5ZWZhOTRlMmE3NTIxNmJiNGYzOWE3OTY4NjQ5YzEzMTdk
ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcApAQCAtMzAsNyArMzAsNiBA
QAogI2luY2x1ZGUgIkZpbGUuaCIKICNpbmNsdWRlICJGaWxlTGlzdC5oIgogI2luY2x1ZGUgIkZp
bGVMaXN0Q3JlYXRvci5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJGb3Jt
Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSFRNTElucHV0RWxl
bWVudC5oIgpAQCAtNDMsNiArNDIsNyBAQAogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVk
ZSAiU2hhZG93Um9vdC5oIgogI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgiCisjaW5j
bHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5o
PgogI2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdC
dWlsZGVyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVMaXN0Q3JlYXRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVMaXN0Q3JlYXRvci5jcHAKaW5kZXggNzZm
NTY1OTcwYWQxZGQ4ZDgxMDZjMjVhNTc5ZTQ1OTFiYWJkNDliOC4uMTU1NmZjMjk5Y2IyMzczYjBj
NTk4OTUyMGE3MmMzMTE2Y2UzOWVhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9G
aWxlTGlzdENyZWF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUxpc3RDcmVh
dG9yLmNwcApAQCAtMjgsOSArMjgsOSBAQAogCiAjaW5jbHVkZSAiRmlsZUNob29zZXIuaCIKICNp
bmNsdWRlICJGaWxlTGlzdC5oIgotI2luY2x1ZGUgIkZpbGVNZXRhZGF0YS5oIgotI2luY2x1ZGUg
IkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuaD4KKyNpbmNs
dWRlIDx3dGYvRmlsZU1ldGFkYXRhLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAppbmRleCA3NTVmMWEyOWFkN2M1N2Nj
YzNiZWE1ZWZhMjU1YjY1NmJiZGNjMzA5Li44YTMzZTg4NzBjYzM2YmM2ZGUyZmNhOGQxZDU4YzRj
Y2E2YjhmM2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlICJE
b2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUgIkRPTUFwcGxpY2F0aW9uQ2FjaGUuaCIKICNpbmNs
dWRlICJFdmVudE5hbWVzLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkZy
YW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNs
aWVudC5oIgpAQCAtNDQsNiArNDMsNyBAQAogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgog
I2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU3VicmVzb3VyY2VMb2FkZXIuaCIKKyNp
bmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9VVUlELmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCmluZGV4IGU4MTQ4M2MzNjIzY2QwMzQy
NDQ0ODRjZDBmNWZkYzkyNDk1NWFlMzIuLjgyYWRmZjMwMzM1YTJlMmJiOWNhYTdiNGY2Njg4NGQw
OTBlNzk1NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcApAQCAtMzAsMTIgKzMwLDEyIEBACiAjaW5j
bHVkZSAiQXBwbGljYXRpb25DYWNoZUdyb3VwLmgiCiAjaW5jbHVkZSAiQXBwbGljYXRpb25DYWNo
ZUhvc3QuaCIKICNpbmNsdWRlICJBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuaCIKLSNpbmNsdWRl
ICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiU1FMaXRlRGF0YWJhc2VUcmFja2VyLmgiCiAjaW5j
bHVkZSAiU1FMaXRlU3RhdGVtZW50LmgiCiAjaW5jbHVkZSAiU1FMaXRlVHJhbnNhY3Rpb24uaCIK
ICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luRGF0
YS5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4
dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVVVJRC5oPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAKaW5kZXggZGIxNzdlOGRhZThjNjBlNmU3MTgyMjlmYjNjMDNkMzZkZmZkNTQ1
Mi4uMjZhMjU4MTljMWE3NzQxZDEyY2Q5NjQ2MjlhZDE1OTc5OTg2ZDBkMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwCkBAIC01MSw3ICs1MSw2IEBACiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJF
dmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXh0ZW5zaW9uU3R5bGVTaGVldHMuaCIKLSNpbmNsdWRl
ICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiRm9jdXNDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAi
RnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgpAQCAtMTIyLDYg
KzEyMSw3IEBACiAjaW5jbHVkZSAiV2ViR0xTdGF0ZVRyYWNrZXIuaCIKICNpbmNsdWRlICJXaGVl
bEV2ZW50RGVsdGFGaWx0ZXIuaCIKICNpbmNsdWRlICJXaWRnZXQuaCIKKyNpbmNsdWRlIDx3dGYv
RmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaD4KICNp
bmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCmluZGV4IGI1OGZhYWExNjdhOTY3
MjZhYTIxMWZlMWYwMjc0YmM2NmU5NjE2NWIuLjNhZDkyMWNjNTRkZTFmZWZlM2QxNTcxZjIyZTI1
MzIxMmE4ZGUyMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmln
aW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCkBAIC0z
MCwxNSArMzAsMTUgQEAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogCiAjaW5jbHVkZSAi
QmxvYlVSTC5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKLSNpbmNsdWRlIDx3dGYvVVJMLmg+
CiAjaW5jbHVkZSAiU2NoZW1lUmVnaXN0cnkuaCIKICNpbmNsdWRlICJTZWN1cml0eVBvbGljeS5o
IgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVCbG9iUmVn
aXN0cnkuaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9NYWlu
VGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcAppbmRleCAwNWY4YjE5ZGFlNTg3OWQwY2RmZGE3
Yzc2NDllY2EyYjQ0YzM5OGE2Li40MzBjYjhiMGIzYWMzNmNjYTk2MTFlMGExZjA5ZTM1YWUxMGIw
ZDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwCkBAIC0y
Nyw5ICsyNyw5IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5EYXRhLmgiCiAKICNpbmNsdWRl
ICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJGcmFtZS5o
IgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0u
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVy
cy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUhhbmRsZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUhhbmRsZS5oCmluZGV4IGQxMTgzMDg2OTYzZDIx
MjM3YjkwYjFhODI1ODViNzY1YmJjMTNkZjIuLjUwZDgyNGNhZWU5YmExMjQwOTg0MzVlYTcyMTVk
MTUxNzg3ZGJjZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVIYW5k
bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlSGFuZGxlLmgKQEAgLTI4LDkg
KzI4LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCi0KICNp
bmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vRmlsZU1ldGFkYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlTWV0YWRhdGEu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2Q4ODQ5NTNlNzY3NWQ5MmMwNjM4ZGVj
YWQ4NTdjZDQxYTU5YzU2MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlTWV0YWRhdGEuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDUwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgot
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgPHd0Zi9XYWxsVGlt
ZS5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBGaWxlTWV0YWRhdGEgewotICAg
IC8vIFRoZSBsYXN0IG1vZGlmaWNhdGlvbiB0aW1lIG9mIHRoZSBmaWxlLCBpbiBzZWNvbmRzLgot
ICAgIFdhbGxUaW1lIG1vZGlmaWNhdGlvblRpbWU7Ci0KLSAgICAvLyBUaGUgbGVuZ3RoIG9mIHRo
ZSBmaWxlIGluIGJ5dGVzLgotICAgIGxvbmcgbG9uZyBsZW5ndGg7Ci0KLSAgICBib29sIGlzSGlk
ZGVuOwotCi0gICAgZW51bSBjbGFzcyBUeXBlIHsgRmlsZSwgRGlyZWN0b3J5LCBTeW1ib2xpY0xp
bmsgfTsKLSAgICBUeXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3RyZWFtLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0uY3BwCmluZGV4IGVhOTE3Mzc0YjRjOGI0YTRlYTA0
M2MyOWFiZjU0MzE1OTIyYTg5ZTIuLjg5M2JiMzM5NDc2Y2VmZGE4ZGYxMGJjOTIwYzBiMzU4MjUx
OTE1N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0uY3BwCkBAIC0yOSwxMCAr
MjksOCBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLQogI2luY2x1ZGUgIkZpbGVTdHJl
YW0uaCIKIAotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vRmlsZVN0cmVhbS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN0
cmVhbS5oCmluZGV4IGFhMDExZWEyM2UxODU0YzRiOTAyMDU5NjI1Mzc2MTNhMWFiNmUxMmIuLmEy
ZmI4ZTVmYWEyNTRiYzhlNWNjZTllMWI0YzY2MzFiOGQxYTA1NGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9GaWxlU3RyZWFtLmgKQEAgLTI4LDEwICsyOCw5IEBACiAgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKLSNpZm5kZWYgRmlsZVN0cmVhbV9oCi0jZGVmaW5lIEZpbGVTdHJlYW1faAorI3ByYWdtYSBv
bmNlCiAKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0u
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02NCw1ICs2MywzIEBAIHByaXZhdGU6CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBGaWxlU3RyZWFtX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGVkOWQzN2FhYTEzMTYyODNkYTdlZjIyNDZiM2NhOTQxMGFkMjVkMjIuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vRmlsZVN5c3RlbS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNjcgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwNy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQK
LSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKLQotI2lu
Y2x1ZGUgIkZpbGVNZXRhZGF0YS5oIgotI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KLSNpbmNs
dWRlIDx3dGYvU2NvcGUuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0jaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgotCi0jaWYgIU9TKFdJTkRPV1MpCi0jaW5jbHVk
ZSA8ZmNudGwuaD4KLSNpbmNsdWRlIDxzeXMvbW1hbi5oPgotI2luY2x1ZGUgPHN5cy9zdGF0Lmg+
Ci0jaW5jbHVkZSA8dW5pc3RkLmg+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1u
YW1lc3BhY2UgRmlsZVN5c3RlbSB7Ci0KLS8vIFRoZSBmb2xsb3dpbmcgbG93ZXItQVNDSUkgY2hh
cmFjdGVycyBuZWVkIGVzY2FwaW5nIHRvIGJlIHVzZWQgaW4gYSBmaWxlbmFtZQotLy8gYWNyb3Nz
IGFsbCBzeXN0ZW1zLCBpbmNsdWRpbmcgV2luZG93czoKLS8vICAgICAtIFVucHJpbnRhYmxlIEFT
Q0lJICgwMC0xRikKLS8vICAgICAtIFNwYWNlICAgICAgICAgICAgICgyMCkKLS8vICAgICAtIERv
dWJsZSBxdW90ZSAgICAgICgyMikKLS8vICAgICAtIFBlcmNlbnQgICAgICAgICAgICgyNSkgKGVz
Y2FwZWQgYmVjYXVzZSBpdCBpcyBvdXIgZXNjYXBlIGNoYXJhY3RlcikKLS8vICAgICAtIEFzdGVy
aXNrICAgICAgICAgICgyQSkKLS8vICAgICAtIFNsYXNoICAgICAgICAgICAgICgyRikKLS8vICAg
ICAtIENvbG9uICAgICAgICAgICAgICgzQSkKLS8vICAgICAtIExlc3MtdGhhbiAgICAgICAgICgz
QykKLS8vICAgICAtIEdyZWF0ZXItdGhhbiAgICAgICgzRSkKLS8vICAgICAtIFF1ZXN0aW9uIE1h
cmsgICAgICgzRikKLS8vICAgICAtIEJhY2tzbGFzaCAgICAgICAgICg1QykKLS8vICAgICAtIFBp
cGUgICAgICAgICAgICAgICg3QykKLS8vICAgICAtIERlbGV0ZSAgICAgICAgICAgICg3RikKLQot
c3RhdGljIGNvbnN0IGJvb2wgbmVlZHNFc2NhcGluZ1sxMjhdID0gewotICAgIC8qIDAwLTA3ICov
IHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAK
LSAgICAvKiAwOC0wRiAqLyB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUs
ICB0cnVlLCAgdHJ1ZSwgCi0KLSAgICAvKiAxMC0xNyAqLyB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0
cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgCi0gICAgLyogMTgtMUYgKi8gdHJ1ZSwg
IHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsIAotCi0gICAg
LyogMjAtMjcgKi8gdHJ1ZSwgIGZhbHNlLCB0cnVlLCAgZmFsc2UsIGZhbHNlLCB0cnVlLCAgZmFs
c2UsIGZhbHNlLCAKLSAgICAvKiAyOC0yRiAqLyBmYWxzZSwgZmFsc2UsIHRydWUsICBmYWxzZSwg
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgCi0gICAgCi0gICAgLyogMzAtMzcgKi8gZmFsc2Us
IGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAKLSAgICAv
KiAzOC0zRiAqLyBmYWxzZSwgZmFsc2UsIHRydWUsICBmYWxzZSwgdHJ1ZSwgIGZhbHNlLCB0cnVl
LCAgdHJ1ZSwgCi0gICAgCi0gICAgLyogNDAtNDcgKi8gZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFs
c2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAKLSAgICAvKiA0OC00RiAqLyBmYWxzZSwg
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsCi0gICAgCi0g
ICAgLyogNTAtNTcgKi8gZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwg
ZmFsc2UsIGZhbHNlLCAKLSAgICAvKiA1OC01RiAqLyBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxz
ZSwgdHJ1ZSwgIGZhbHNlLCBmYWxzZSwgZmFsc2UsCi0gICAgCi0gICAgLyogNjAtNjcgKi8gZmFs
c2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAKLSAg
ICAvKiA2OC02RiAqLyBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBm
YWxzZSwgZmFsc2UsCi0gICAgCi0gICAgLyogNzAtNzcgKi8gZmFsc2UsIGZhbHNlLCBmYWxzZSwg
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAKLSAgICAvKiA3OC03RiAqLyBmYWxz
ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgCi19Owot
Ci1zdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkRXNjYXBlVUNoYXIoVUNoYXIgY2hhcmFjdGVyLCBV
Q2hhciBwcmV2aW91c0NoYXJhY3RlciwgVUNoYXIgbmV4dENoYXJhY3RlcikKLXsKLSAgICBpZiAo
Y2hhcmFjdGVyIDw9IDEyNykKLSAgICAgICAgcmV0dXJuIG5lZWRzRXNjYXBpbmdbY2hhcmFjdGVy
XTsKLQotICAgIGlmIChVMTZfSVNfTEVBRChjaGFyYWN0ZXIpICYmICFVMTZfSVNfVFJBSUwobmV4
dENoYXJhY3RlcikpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgaWYgKFUxNl9JU19UUkFJ
TChjaGFyYWN0ZXIpICYmICFVMTZfSVNfTEVBRChwcmV2aW91c0NoYXJhY3RlcikpCi0gICAgICAg
IHJldHVybiB0cnVlOwotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1TdHJpbmcgZW5jb2RlRm9y
RmlsZU5hbWUoY29uc3QgU3RyaW5nJiBpbnB1dFN0cmluZykKLXsKLSAgICB1bnNpZ25lZCBsZW5n
dGggPSBpbnB1dFN0cmluZy5sZW5ndGgoKTsKLSAgICBpZiAoIWxlbmd0aCkKLSAgICAgICAgcmV0
dXJuIGlucHV0U3RyaW5nOwotCi0gICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7Ci0gICAgcmVzdWx0
LnJlc2VydmVDYXBhY2l0eShsZW5ndGgpOwotCi0gICAgVUNoYXIgcHJldmlvdXNDaGFyYWN0ZXI7
Ci0gICAgVUNoYXIgY2hhcmFjdGVyID0gMDsKLSAgICBVQ2hhciBuZXh0Q2hhcmFjdGVyID0gaW5w
dXRTdHJpbmdbMF07Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7
Ci0gICAgICAgIHByZXZpb3VzQ2hhcmFjdGVyID0gY2hhcmFjdGVyOwotICAgICAgICBjaGFyYWN0
ZXIgPSBuZXh0Q2hhcmFjdGVyOwotICAgICAgICBuZXh0Q2hhcmFjdGVyID0gaSArIDEgPCBsZW5n
dGggPyBpbnB1dFN0cmluZ1tpICsgMV0gOiAwOwotCi0gICAgICAgIGlmIChzaG91bGRFc2NhcGVV
Q2hhcihjaGFyYWN0ZXIsIHByZXZpb3VzQ2hhcmFjdGVyLCBuZXh0Q2hhcmFjdGVyKSkgewotICAg
ICAgICAgICAgaWYgKGNoYXJhY3RlciA8PSAyNTUpIHsKLSAgICAgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKCclJyk7Ci0gICAgICAgICAgICAgICAgYXBwZW5kQnl0ZUFzSGV4KGNoYXJhY3Rlciwg
cmVzdWx0KTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZExpdGVyYWwoIiUrIik7Ci0gICAgICAgICAgICAgICAgYXBwZW5kQnl0ZUFzSGV4KGNoYXJh
Y3RlciA+PiA4LCByZXN1bHQpOwotICAgICAgICAgICAgICAgIGFwcGVuZEJ5dGVBc0hleChjaGFy
YWN0ZXIsIHJlc3VsdCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZChjaGFyYWN0ZXIpOwotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQu
dG9TdHJpbmcoKTsKLX0KLQotU3RyaW5nIGRlY29kZUZyb21GaWxlbmFtZShjb25zdCBTdHJpbmcm
IGlucHV0U3RyaW5nKQotewotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGlucHV0U3RyaW5nLmxlbmd0
aCgpOwotICAgIGlmICghbGVuZ3RoKQotICAgICAgICByZXR1cm4gaW5wdXRTdHJpbmc7Ci0KLSAg
ICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKLSAgICByZXN1bHQucmVzZXJ2ZUNhcGFjaXR5KGxlbmd0
aCk7Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAg
ICAgaWYgKGlucHV0U3RyaW5nW2ldICE9ICclJykgewotICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZChpbnB1dFN0cmluZ1tpXSk7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCi0g
ICAgICAgIC8vIElmIHRoZSBpbnB1dCBzdHJpbmcgaXMgYSB2YWxpZCBlbmNvZGVkIGZpbGVuYW1l
LCBpdCBtdXN0IGJlIGF0IGxlYXN0IDIgY2hhcmFjdGVycyBsb25nZXIKLSAgICAgICAgLy8gdGhh
biB0aGUgY3VycmVudCBpbmRleCB0byBhY2NvdW50IGZvciB0aGlzIHBlcmNlbnQgZW5jb2RlZCB2
YWx1ZS4KLSAgICAgICAgaWYgKGkgKyAyID49IGxlbmd0aCkKLSAgICAgICAgICAgIHJldHVybiB7
IH07Ci0KLSAgICAgICAgaWYgKGlucHV0U3RyaW5nW2krMV0gIT0gJysnKSB7Ci0gICAgICAgICAg
ICBpZiAoIWlzQVNDSUlIZXhEaWdpdChpbnB1dFN0cmluZ1tpICsgMV0pKQotICAgICAgICAgICAg
ICAgIHJldHVybiB7IH07Ci0gICAgICAgICAgICBpZiAoIWlzQVNDSUlIZXhEaWdpdChpbnB1dFN0
cmluZ1tpICsgMl0pKQotICAgICAgICAgICAgICAgIHJldHVybiB7IH07Ci0gICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kKHRvQVNDSUlIZXhWYWx1ZShpbnB1dFN0cmluZ1tpICsgMV0sIGlucHV0U3Ry
aW5nW2kgKyAyXSkpOwotICAgICAgICAgICAgaSArPSAyOwotICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBJZiB0aGUgaW5wdXQgc3RyaW5nIGlzIGEgdmFsaWQg
ZW5jb2RlZCBmaWxlbmFtZSwgaXQgbXVzdCBiZSBhdCBsZWFzdCA1IGNoYXJhY3RlcnMgbG9uZ2Vy
Ci0gICAgICAgIC8vIHRoYW4gdGhlIGN1cnJlbnQgaW5kZXggdG8gYWNjb3VudCBmb3IgdGhpcyBw
ZXJjZW50IGVuY29kZWQgdmFsdWUuCi0gICAgICAgIGlmIChpICsgNSA+PSBsZW5ndGgpCi0gICAg
ICAgICAgICByZXR1cm4geyB9OwotCi0gICAgICAgIGlmICghaXNBU0NJSUhleERpZ2l0KGlucHV0
U3RyaW5nW2kgKyAyXSkpCi0gICAgICAgICAgICByZXR1cm4geyB9OwotICAgICAgICBpZiAoIWlz
QVNDSUlIZXhEaWdpdChpbnB1dFN0cmluZ1tpICsgM10pKQotICAgICAgICAgICAgcmV0dXJuIHsg
fTsKLSAgICAgICAgaWYgKCFpc0FTQ0lJSGV4RGlnaXQoaW5wdXRTdHJpbmdbaSArIDRdKSkKLSAg
ICAgICAgICAgIHJldHVybiB7IH07Ci0gICAgICAgIGlmICghaXNBU0NJSUhleERpZ2l0KGlucHV0
U3RyaW5nW2kgKyA1XSkpCi0gICAgICAgICAgICByZXR1cm4geyB9OwotCi0gICAgICAgIHJlc3Vs
dC5hcHBlbmQodG9BU0NJSUhleFZhbHVlKGlucHV0U3RyaW5nW2kgKyAyXSwgaW5wdXRTdHJpbmdb
aSArIDNdKSA8PCA4IHwgdG9BU0NJSUhleFZhbHVlKGlucHV0U3RyaW5nW2kgKyA0XSwgaW5wdXRT
dHJpbmdbaSArIDVdKSk7Ci0gICAgICAgIGkgKz0gNTsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmVz
dWx0LnRvU3RyaW5nKCk7Ci19Ci0KLVN0cmluZyBsYXN0Q29tcG9uZW50T2ZQYXRoSWdub3JpbmdU
cmFpbGluZ1NsYXNoKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSNpZiBPUyhXSU5ET1dTKQotICAg
IGNoYXIgcGF0aFNlcGFyYXRvciA9ICdcXCc7Ci0jZWxzZQotICAgIGNoYXIgcGF0aFNlcGFyYXRv
ciA9ICcvJzsKLSNlbmRpZgotCi0gICAgYXV0byBwb3NpdGlvbiA9IHBhdGgucmV2ZXJzZUZpbmQo
cGF0aFNlcGFyYXRvcik7Ci0gICAgaWYgKHBvc2l0aW9uID09IG5vdEZvdW5kKQotICAgICAgICBy
ZXR1cm4gcGF0aDsKLQotICAgIHNpemVfdCBlbmRPZlN1YnN0cmluZyA9IHBhdGgubGVuZ3RoKCkg
LSAxOwotICAgIGlmIChwb3NpdGlvbiA9PSBlbmRPZlN1YnN0cmluZykgewotICAgICAgICAtLWVu
ZE9mU3Vic3RyaW5nOwotICAgICAgICBwb3NpdGlvbiA9IHBhdGgucmV2ZXJzZUZpbmQocGF0aFNl
cGFyYXRvciwgZW5kT2ZTdWJzdHJpbmcpOwotICAgIH0KLQotICAgIHJldHVybiBwYXRoLnN1YnN0
cmluZyhwb3NpdGlvbiArIDEsIGVuZE9mU3Vic3RyaW5nIC0gcG9zaXRpb24pOwotfQotCi1ib29s
IGFwcGVuZEZpbGVDb250ZW50c1RvRmlsZUhhbmRsZShjb25zdCBTdHJpbmcmIHBhdGgsIFBsYXRm
b3JtRmlsZUhhbmRsZSYgdGFyZ2V0KQotewotICAgIGF1dG8gc291cmNlID0gb3BlbkZpbGUocGF0
aCwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKLQotICAgIGlmICghaXNIYW5kbGVWYWxpZChzb3VyY2Up
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBzdGF0aWMgaW50IGJ1ZmZlclNpemUgPSAx
IDw8IDE5OwotICAgIFZlY3RvcjxjaGFyPiBidWZmZXIoYnVmZmVyU2l6ZSk7Ci0KLSAgICBhdXRv
IGZpbGVDbG9zZXIgPSBXVEY6Om1ha2VTY29wZUV4aXQoW3NvdXJjZV0oKSB7Ci0gICAgICAgIFBs
YXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUgPSBzb3VyY2U7Ci0gICAgICAgIGNsb3NlRmlsZShoYW5k
bGUpOwotICAgIH0pOwotCi0gICAgZG8gewotICAgICAgICBpbnQgcmVhZEJ5dGVzID0gcmVhZEZy
b21GaWxlKHNvdXJjZSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyU2l6ZSk7Ci0gICAgICAgIAotICAg
ICAgICBpZiAocmVhZEJ5dGVzIDwgMCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
ICAgICBpZiAod3JpdGVUb0ZpbGUodGFyZ2V0LCBidWZmZXIuZGF0YSgpLCByZWFkQnl0ZXMpICE9
IHJlYWRCeXRlcykKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBpZiAocmVh
ZEJ5dGVzIDwgYnVmZmVyU2l6ZSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0gd2hp
bGUgKHRydWUpOwotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLSAgICAKLWJvb2wg
ZmlsZXNIYXZlU2FtZVZvbHVtZShjb25zdCBTdHJpbmcmIGZpbGVBLCBjb25zdCBTdHJpbmcmIGZp
bGVCKQotewotICAgIGF1dG8gZnNSZXBGaWxlQSA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihm
aWxlQSk7Ci0gICAgYXV0byBmc1JlcEZpbGVCID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZp
bGVCKTsKLSAgICAKLSAgICBpZiAoZnNSZXBGaWxlQS5pc051bGwoKSB8fCBmc1JlcEZpbGVCLmlz
TnVsbCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBib29sIHJlc3VsdCA9IGZhbHNl
OwotCi0gICAgYXV0byBmaWxlQURldiA9IGdldEZpbGVEZXZpY2VJZChmc1JlcEZpbGVBKTsKLSAg
ICBhdXRvIGZpbGVCRGV2ID0gZ2V0RmlsZURldmljZUlkKGZzUmVwRmlsZUIpOwotCi0gICAgaWYg
KGZpbGVBRGV2ICYmIGZpbGVCRGV2KQotICAgICAgICByZXN1bHQgPSAoZmlsZUFEZXYgPT0gZmls
ZUJEZXYpOwotICAgIAotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLSNpZiAhUExBVEZPUk0oTUFD
KQotCi12b2lkIHNldE1ldGFkYXRhVVJMKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYpCi17Ci19Ci0KLWJvb2wgY2FuRXhjbHVkZUZyb21CYWNrdXAoKQotewotICAg
IHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBleGNsdWRlRnJvbUJhY2t1cChjb25zdCBTdHJpbmcm
KQotewotICAgIHJldHVybiBmYWxzZTsKLX0KLQotI2VuZGlmCi0KLU1hcHBlZEZpbGVEYXRhOjp+
TWFwcGVkRmlsZURhdGEoKQotewotI2lmICFPUyhXSU5ET1dTKQotICAgIGlmICghbV9maWxlRGF0
YSkKLSAgICAgICAgcmV0dXJuOwotICAgIG11bm1hcChtX2ZpbGVEYXRhLCBtX2ZpbGVTaXplKTsK
LSNlbmRpZgotfQotCi1NYXBwZWRGaWxlRGF0YTo6TWFwcGVkRmlsZURhdGEoY29uc3QgU3RyaW5n
JiBmaWxlUGF0aCwgYm9vbCYgc3VjY2VzcykKLXsKLSNpZiBPUyhXSU5ET1dTKQotICAgIC8vIEZJ
WE1FOiBJbXBsZW1lbnQgbWFwcGluZwotICAgIHN1Y2Nlc3MgPSBmYWxzZTsKLSNlbHNlCi0gICAg
Q1N0cmluZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWxlUGF0aCk7Ci0gICAg
aW50IGZkID0gIWZzUmVwLmlzTnVsbCgpID8gb3Blbihmc1JlcC5kYXRhKCksIE9fUkRPTkxZKSA6
IC0xOwotICAgIGlmIChmZCA8IDApIHsKLSAgICAgICAgc3VjY2VzcyA9IGZhbHNlOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgc3RydWN0IHN0YXQgZmlsZVN0YXQ7Ci0gICAgaWYgKGZz
dGF0KGZkLCAmZmlsZVN0YXQpKSB7Ci0gICAgICAgIGNsb3NlKGZkKTsKLSAgICAgICAgc3VjY2Vz
cyA9IGZhbHNlOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgdW5zaWduZWQgc2l6ZTsK
LSAgICBpZiAoIVdURjo6Y29udmVydFNhZmVseShmaWxlU3RhdC5zdF9zaXplLCBzaXplKSkgewot
ICAgICAgICBjbG9zZShmZCk7Ci0gICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGlmICghc2l6ZSkgewotICAgICAgICBjbG9zZShmZCk7Ci0gICAg
ICAgIHN1Y2Nlc3MgPSB0cnVlOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgdm9pZCog
ZGF0YSA9IG1tYXAoMCwgc2l6ZSwgUFJPVF9SRUFELCBNQVBfRklMRSB8IE1BUF9TSEFSRUQsIGZk
LCAwKTsKLSAgICBjbG9zZShmZCk7Ci0KLSAgICBpZiAoZGF0YSA9PSBNQVBfRkFJTEVEKSB7Ci0g
ICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHN1
Y2Nlc3MgPSB0cnVlOwotICAgIG1fZmlsZURhdGEgPSBkYXRhOwotICAgIG1fZmlsZVNpemUgPSBz
aXplOwotI2VuZGlmCi19Ci0KLVBsYXRmb3JtRmlsZUhhbmRsZSBvcGVuQW5kTG9ja0ZpbGUoY29u
c3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUgb3Blbk1vZGUsIE9wdGlvblNldDxGaWxlTG9j
a01vZGU+IGxvY2tNb2RlKQotewotICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUocGF0aCwgb3Bl
bk1vZGUpOwotICAgIGlmIChoYW5kbGUgPT0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKLSAg
ICAgICAgcmV0dXJuIGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7Ci0KLSNpZiBVU0UoRklMRV9M
T0NLKQotICAgIGJvb2wgbG9ja2VkID0gbG9ja0ZpbGUoaGFuZGxlLCBsb2NrTW9kZSk7Ci0gICAg
QVNTRVJUX1VOVVNFRChsb2NrZWQsIGxvY2tlZCk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShs
b2NrTW9kZSk7Ci0jZW5kaWYKLQotICAgIHJldHVybiBoYW5kbGU7Ci19Ci0KLXZvaWQgdW5sb2Nr
QW5kQ2xvc2VGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUpCi17Ci0jaWYgVVNFKEZJTEVf
TE9DSykKLSAgICBib29sIHVubG9ja2VkID0gdW5sb2NrRmlsZShoYW5kbGUpOwotICAgIEFTU0VS
VF9VTlVTRUQodW5sb2NrZWQsIHVubG9ja2VkKTsKLSNlbmRpZgotICAgIGNsb3NlRmlsZShoYW5k
bGUpOwotfQotCi1ib29sIGZpbGVJc0RpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIFNob3Vs
ZEZvbGxvd1N5bWJvbGljTGlua3Mgc2hvdWxkRm9sbG93U3ltYm9saWNMaW5rcykKLXsKLSAgICBh
dXRvIG1ldGFkYXRhID0gc2hvdWxkRm9sbG93U3ltYm9saWNMaW5rcyA9PSBTaG91bGRGb2xsb3dT
eW1ib2xpY0xpbmtzOjpZZXMgPyBmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyhwYXRoKSA6
IGZpbGVNZXRhZGF0YShwYXRoKTsKLSAgICBpZiAoIW1ldGFkYXRhKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgcmV0dXJuIG1ldGFkYXRhLnZhbHVlKCkudHlwZSA9PSBGaWxlTWV0YWRhdGE6
OlR5cGU6OkRpcmVjdG9yeTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgRmlsZVN5c3RlbQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmls
ZVN5c3RlbS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzY2ViY2FhMDUzOWI1OWQ5M2U3MmUwOTg0MGIyM2IxZGFj
NjM4MTFiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaAorKysgL2Rldi9udWxsCkBAIC0xLDIy
NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSwgTHRkLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAotICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAotICogMy4gIE5laXRoZXIgdGhl
IG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0
cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uIAotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSA8dGltZS5oPgotI2luY2x1ZGUgPHV0
aWxpdHk+Ci0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0
Lmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgot
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi0jaWYgVVNFKENGKQotI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KLSNlbmRpZgotCi0jaWYgVVNFKENGKQotdHlwZWRlZiBjb25zdCBz
dHJ1Y3QgX19DRkRhdGEqIENGRGF0YVJlZjsKLSNlbmRpZgotCi1PQkpDX0NMQVNTIE5TU3RyaW5n
OwotCi0jaWYgUExBVEZPUk0oV0lOKQotdHlwZWRlZiB2b2lkICpIQU5ETEU7Ci0jZW5kaWYKLQot
I2lmIFVTRShHTElCKQotdHlwZWRlZiBzdHJ1Y3QgX0dGaWxlSU9TdHJlYW0gR0ZpbGVJT1N0cmVh
bTsKLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBGaWxlTWV0YWRhdGE7
Ci0KLW5hbWVzcGFjZSBGaWxlU3lzdGVtIHsKLQotLy8gUGxhdGZvcm1GaWxlSGFuZGxlCi0jaWYg
VVNFKEdMSUIpICYmICFQTEFURk9STShXSU4pCi10eXBlZGVmIEdGaWxlSU9TdHJlYW0qIFBsYXRm
b3JtRmlsZUhhbmRsZTsKLWNvbnN0IFBsYXRmb3JtRmlsZUhhbmRsZSBpbnZhbGlkUGxhdGZvcm1G
aWxlSGFuZGxlID0gMDsKLSNlbGlmIFBMQVRGT1JNKFdJTikKLXR5cGVkZWYgSEFORExFIFBsYXRm
b3JtRmlsZUhhbmRsZTsKLS8vIEZJWE1FOiAtMSBpcyBJTlZBTElEX0hBTkRMRV9WQUxVRSwgZGVm
aW5lZCBpbiA8d2luYmFzZS5oPi4gQ2hyb21pdW0gdHJpZXMgdG8KLS8vIGF2b2lkIHVzaW5nIFdp
bmRvd3MgaGVhZGVycyBpbiBoZWFkZXJzLiAgV2UnZCByYXRoZXIgbW92ZSB0aGlzIGludG8gdGhl
IC5jcHAuCi1jb25zdCBQbGF0Zm9ybUZpbGVIYW5kbGUgaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRs
ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8SEFORExFPigtMSk7Ci0jZWxzZQotdHlwZWRlZiBpbnQgUGxh
dGZvcm1GaWxlSGFuZGxlOwotY29uc3QgUGxhdGZvcm1GaWxlSGFuZGxlIGludmFsaWRQbGF0Zm9y
bUZpbGVIYW5kbGUgPSAtMTsKLSNlbmRpZgotCi1lbnVtIGNsYXNzIEZpbGVPcGVuTW9kZSB7Ci0g
ICAgUmVhZCwKLSAgICBXcml0ZSwKLSNpZiBPUyhEQVJXSU4pCi0gICAgRXZlbnRzT25seSwKLSNl
bmRpZgotfTsKLQotZW51bSBjbGFzcyBGaWxlU2Vla09yaWdpbiB7Ci0gICAgQmVnaW5uaW5nLAot
ICAgIEN1cnJlbnQsCi0gICAgRW5kLAotfTsKLQotZW51bSBjbGFzcyBGaWxlTG9ja01vZGUgewot
ICAgIFNoYXJlZCA9IDEgPDwgMCwKLSAgICBFeGNsdXNpdmUgPSAxIDw8IDEsCi0gICAgTm9uYmxv
Y2tpbmcgPSAxIDw8IDIsCi19OwotCi1lbnVtIGNsYXNzIFNob3VsZEZvbGxvd1N5bWJvbGljTGlu
a3MgeyBObywgWWVzIH07Ci0KLVdFQkNPUkVfRVhQT1JUIGJvb2wgZmlsZUV4aXN0cyhjb25zdCBT
dHJpbmcmKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgZGVsZXRlRmlsZShjb25zdCBTdHJpbmcmKTsK
LVdFQkNPUkVfRVhQT1JUIGJvb2wgZGVsZXRlRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7
Ci1XRUJDT1JFX0VYUE9SVCBib29sIG1vdmVGaWxlKGNvbnN0IFN0cmluZyYgb2xkUGF0aCwgY29u
c3QgU3RyaW5nJiBuZXdQYXRoKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgZ2V0RmlsZVNpemUoY29u
c3QgU3RyaW5nJiwgbG9uZyBsb25nJiByZXN1bHQpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCBnZXRG
aWxlU2l6ZShQbGF0Zm9ybUZpbGVIYW5kbGUsIGxvbmcgbG9uZyYgcmVzdWx0KTsKLVdFQkNPUkVf
RVhQT1JUIE9wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBT
dHJpbmcmKTsKLVdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlQ3JlYXRp
b25UaW1lKGNvbnN0IFN0cmluZyYpOyAvLyBOb3QgYWxsIHBsYXRmb3JtcyBzdG9yZSBmaWxlIGNy
ZWF0aW9uIHRpbWUuCi1XRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVN
ZXRhZGF0YShjb25zdCBTdHJpbmcmIHBhdGgpOwotV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8Rmls
ZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyhjb25zdCBTdHJpbmcmIHBh
dGgpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCBmaWxlSXNEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiwg
U2hvdWxkRm9sbG93U3ltYm9saWNMaW5rcyk7Ci1XRUJDT1JFX0VYUE9SVCBTdHJpbmcgcGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb21w
b25lbnQpOwotU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMoU3RyaW5nVmlldyBwYXRo
LCBjb25zdCBWZWN0b3I8U3RyaW5nVmlldz4mIGNvbXBvbmVudHMpOwotU3RyaW5nIGxhc3RDb21w
b25lbnRPZlBhdGhJZ25vcmluZ1RyYWlsaW5nU2xhc2goY29uc3QgU3RyaW5nJiBwYXRoKTsKLVdF
QkNPUkVfRVhQT1JUIGJvb2wgbWFrZUFsbERpcmVjdG9yaWVzKGNvbnN0IFN0cmluZyYgcGF0aCk7
Ci1TdHJpbmcgaG9tZURpcmVjdG9yeVBhdGgoKTsKLVdFQkNPUkVfRVhQT1JUIFN0cmluZyBwYXRo
R2V0RmlsZU5hbWUoY29uc3QgU3RyaW5nJik7Ci1XRUJDT1JFX0VYUE9SVCBTdHJpbmcgZGlyZWN0
b3J5TmFtZShjb25zdCBTdHJpbmcmKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgZ2V0Vm9sdW1lRnJl
ZVNwYWNlKGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90Jik7Ci1XRUJDT1JFX0VYUE9SVCBPcHRpb25h
bDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29uc3QgQ1N0cmluZyYpOwotV0VCQ09SRV9FWFBP
UlQgYm9vbCBjcmVhdGVTeW1ib2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25z
dCBTdHJpbmcmIHN5bWJvbGljTGlua1BhdGgpOwotCi1XRUJDT1JFX0VYUE9SVCB2b2lkIHNldE1l
dGFkYXRhVVJMKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNv
bnN0IFN0cmluZyYgcmVmZXJyZXIgPSB7IH0pOwotCi1ib29sIGNhbkV4Y2x1ZGVGcm9tQmFja3Vw
KCk7IC8vIFJldHVybnMgdHJ1ZSBpZiBhbnkgZmlsZSBjYW4gZXZlciBiZSBleGNsdWRlZCBmcm9t
IGJhY2t1cC4KLWJvb2wgZXhjbHVkZUZyb21CYWNrdXAoY29uc3QgU3RyaW5nJik7IC8vIFJldHVy
bnMgdHJ1ZSBpZiBzdWNjZXNzZnVsLgotCi1XRUJDT1JFX0VYUE9SVCBWZWN0b3I8U3RyaW5nPiBs
aXN0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBmaWx0ZXIgPSBT
dHJpbmcoKSk7Ci0KLVdFQkNPUkVfRVhQT1JUIENTdHJpbmcgZmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKGNvbnN0IFN0cmluZyYpOwotU3RyaW5nIHN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oY29uc3QgY2hhciopOwotCi1pbmxpbmUgYm9vbCBpc0hhbmRsZVZhbGlkKGNvbnN0IFBs
YXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKSB7IHJldHVybiBoYW5kbGUgIT0gaW52YWxpZFBsYXRm
b3JtRmlsZUhhbmRsZTsgfQotCi0vLyBQcmVmaXggaXMgd2hhdCB0aGUgZmlsZW5hbWUgc2hvdWxk
IGJlIHByZWZpeGVkIHdpdGgsIG5vdCB0aGUgZnVsbCBwYXRoLgotV0VCQ09SRV9FWFBPUlQgU3Ry
aW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVI
YW5kbGUmKTsKLVdFQkNPUkVfRVhQT1JUIFBsYXRmb3JtRmlsZUhhbmRsZSBvcGVuRmlsZShjb25z
dCBTdHJpbmcmIHBhdGgsIEZpbGVPcGVuTW9kZSk7Ci1XRUJDT1JFX0VYUE9SVCB2b2lkIGNsb3Nl
RmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUmKTsKLS8vIFJldHVybnMgdGhlIHJlc3VsdGluZyBvZmZz
ZXQgZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaWxlIGlmIHN1Y2Nlc3NmdWwsIC0xIG90aGVy
d2lzZS4KLVdFQkNPUkVfRVhQT1JUIGxvbmcgbG9uZyBzZWVrRmlsZShQbGF0Zm9ybUZpbGVIYW5k
bGUsIGxvbmcgbG9uZyBvZmZzZXQsIEZpbGVTZWVrT3JpZ2luKTsKLWJvb2wgdHJ1bmNhdGVGaWxl
KFBsYXRmb3JtRmlsZUhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCk7Ci0vLyBSZXR1cm5zIG51bWJl
ciBvZiBieXRlcyBhY3R1YWxseSByZWFkIGlmIHN1Y2Nlc3NmdWwsIC0xIG90aGVyd2lzZS4KLVdF
QkNPUkVfRVhQT1JUIGludCB3cml0ZVRvRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUsIGNvbnN0IGNo
YXIqIGRhdGEsIGludCBsZW5ndGgpOwotLy8gUmV0dXJucyBudW1iZXIgb2YgYnl0ZXMgYWN0dWFs
bHkgd3JpdHRlbiBpZiBzdWNjZXNzZnVsLCAtMSBvdGhlcndpc2UuCi1XRUJDT1JFX0VYUE9SVCBp
bnQgcmVhZEZyb21GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgY2hhciogZGF0YSwgaW50IGxlbmd0
aCk7Ci0KLVdFQkNPUkVfRVhQT1JUIFBsYXRmb3JtRmlsZUhhbmRsZSBvcGVuQW5kTG9ja0ZpbGUo
Y29uc3QgU3RyaW5nJiwgRmlsZU9wZW5Nb2RlLCBPcHRpb25TZXQ8RmlsZUxvY2tNb2RlPiA9IEZp
bGVMb2NrTW9kZTo6RXhjbHVzaXZlKTsKLVdFQkNPUkVfRVhQT1JUIHZvaWQgdW5sb2NrQW5kQ2xv
c2VGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSk7Ci0KLS8vIEFwcGVuZHMgdGhlIGNvbnRlbnRzIG9m
IHRoZSBmaWxlIGZvdW5kIGF0ICdwYXRoJyB0byB0aGUgb3BlbiBQbGF0Zm9ybUZpbGVIYW5kbGUu
Ci0vLyBSZXR1cm5zIHRydWUgaWYgdGhlIHdyaXRlIHdhcyBzdWNjZXNzZnVsLCBmYWxzZSBpZiBp
dCB3YXMgbm90LgotYm9vbCBhcHBlbmRGaWxlQ29udGVudHNUb0ZpbGVIYW5kbGUoY29uc3QgU3Ry
aW5nJiBwYXRoLCBQbGF0Zm9ybUZpbGVIYW5kbGUmKTsKLQotLy8gSGFyZCBsaW5rcyBhIGZpbGUg
aWYgcG9zc2libGUsIGNvcGllcyBpdCBpZiBub3QuCi1ib29sIGhhcmRMaW5rT3JDb3B5RmlsZShj
b25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbik7Ci0KLSNpZiBV
U0UoRklMRV9MT0NLKQotV0VCQ09SRV9FWFBPUlQgYm9vbCBsb2NrRmlsZShQbGF0Zm9ybUZpbGVI
YW5kbGUsIE9wdGlvblNldDxGaWxlTG9ja01vZGU+KTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgdW5s
b2NrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUpOwotI2VuZGlmCi0KLS8vIEVuY29kZSBhIHN0cmlu
ZyBmb3IgdXNlIHdpdGhpbiBhIGZpbGUgbmFtZS4KLVdFQkNPUkVfRVhQT1JUIFN0cmluZyBlbmNv
ZGVGb3JGaWxlTmFtZShjb25zdCBTdHJpbmcmKTsKLVdFQkNPUkVfRVhQT1JUIFN0cmluZyBkZWNv
ZGVGcm9tRmlsZW5hbWUoY29uc3QgU3RyaW5nJik7Ci0KLVdFQkNPUkVfRVhQT1JUIGJvb2wgZmls
ZXNIYXZlU2FtZVZvbHVtZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKLQotI2lmIFVT
RShDRikKLVJldGFpblB0cjxDRlVSTFJlZj4gcGF0aEFzVVJMKGNvbnN0IFN0cmluZyYpOwotI2Vu
ZGlmCi0KLSNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKLVN0cmluZyBmaWxlbmFt
ZUZvckRpc3BsYXkoY29uc3QgU3RyaW5nJik7Ci0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKFdJTikK
LVdFQkNPUkVfRVhQT1JUIFN0cmluZyBsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3Rvcnko
KTsKLVN0cmluZyByb2FtaW5nVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpOwotI2VuZGlm
Ci0KLSNpZiBQTEFURk9STShDT0NPQSkKLVdFQkNPUkVfRVhQT1JUIE5TU3RyaW5nICpjcmVhdGVU
ZW1wb3JhcnlEaXJlY3RvcnkoTlNTdHJpbmcgKmRpcmVjdG9yeVByZWZpeCk7Ci1XRUJDT1JFX0VY
UE9SVCBib29sIGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpOwotI2VuZGlm
Ci0KLSNpZiBQTEFURk9STShXSU5fQ0FJUk8pCi1XRUJDT1JFX0VYUE9SVCBTdHJpbmcgY3JlYXRl
VGVtcG9yYXJ5RGlyZWN0b3J5KCk7Ci1XRUJDT1JFX0VYUE9SVCBib29sIGRlbGV0ZU5vbkVtcHR5
RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpOwotI2VuZGlmCi0KLVdFQkNPUkVfRVhQT1JUIFN0cmlu
ZyByZWFsUGF0aChjb25zdCBTdHJpbmcmKTsKLQotY2xhc3MgTWFwcGVkRmlsZURhdGEgewotcHVi
bGljOgotICAgIE1hcHBlZEZpbGVEYXRhKCkgeyB9Ci0gICAgTWFwcGVkRmlsZURhdGEoTWFwcGVk
RmlsZURhdGEmJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgTWFwcGVkRmlsZURhdGEoY29uc3QgU3Ry
aW5nJiBmaWxlUGF0aCwgYm9vbCYgc3VjY2Vzcyk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgfk1hcHBl
ZEZpbGVEYXRhKCk7Ci0gICAgTWFwcGVkRmlsZURhdGEmIG9wZXJhdG9yPShNYXBwZWRGaWxlRGF0
YSYmKTsKLQotICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhIW1f
ZmlsZURhdGE7IH0KLSAgICBjb25zdCB2b2lkKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9maWxl
RGF0YTsgfQotICAgIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX2ZpbGVTaXplOyB9
Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCogbV9maWxlRGF0YSB7IG51bGxwdHIgfTsKLSAgICB1bnNp
Z25lZCBtX2ZpbGVTaXplIHsgMCB9OwotfTsKLQotaW5saW5lIE1hcHBlZEZpbGVEYXRhOjpNYXBw
ZWRGaWxlRGF0YShNYXBwZWRGaWxlRGF0YSYmIG90aGVyKQotICAgIDogbV9maWxlRGF0YShzdGQ6
OmV4Y2hhbmdlKG90aGVyLm1fZmlsZURhdGEsIG51bGxwdHIpKQotICAgICwgbV9maWxlU2l6ZShz
dGQ6OmV4Y2hhbmdlKG90aGVyLm1fZmlsZVNpemUsIDApKQotewotfQotCi1pbmxpbmUgTWFwcGVk
RmlsZURhdGEmIE1hcHBlZEZpbGVEYXRhOjpvcGVyYXRvcj0oTWFwcGVkRmlsZURhdGEmJiBvdGhl
cikKLXsKLSAgICBtX2ZpbGVEYXRhID0gc3RkOjpleGNoYW5nZShvdGhlci5tX2ZpbGVEYXRhLCBu
dWxscHRyKTsKLSAgICBtX2ZpbGVTaXplID0gc3RkOjpleGNoYW5nZShvdGhlci5tX2ZpbGVTaXpl
LCAwKTsKLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEZpbGVTeXN0ZW0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZm
ZXIuaAppbmRleCA4MTMxOGU4YjI5YWU1YTBmNWI5NjAzYzgyNTU3OTFjZGJjMjBhNGUxLi5lYzM3
MTM0MWFiOTQ5NWI3ZDM1NzYxMzUxYjJiMDliMTM1YTNlZjNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TaGFyZWRCdWZmZXIuaApAQCAtMjYsOCArMjYsOCBAQAogCiAjcHJhZ21hIG9uY2UKIAot
I2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BcnJheUJ1
ZmZlci5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRT
YWZlUmVmQ291bnRlZC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU291
cmNlc0dMaWIudHh0IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU291cmNlc0dMaWIudHh0Cmlu
ZGV4IDI3NzNjMmEwODhiNjBmYjEzOTY5MmQ1ZjQwZDBiZWZjM2ZlYzNjYzQuLjA5MGI4NGE0OGMx
MDNkM2Q1OTMxNDFkOTBlMmJiYjRhYmYyYzViYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1NvdXJjZXNHTGliLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
b3VyY2VzR0xpYi50eHQKQEAgLTI1LDcgKzI1LDYgQEAgcGxhdGZvcm0vYXVkaW8vZ2xpYi9BdWRp
b0J1c0dMaWIuY3BwCiAKIHBsYXRmb3JtL2dsaWIvRXZlbnRMb29wR2xpYi5jcHAKIHBsYXRmb3Jt
L2dsaWIvRmlsZU1vbml0b3JHTGliLmNwcAotcGxhdGZvcm0vZ2xpYi9GaWxlU3lzdGVtR2xpYi5j
cHAKIHBsYXRmb3JtL2dsaWIvS2V5ZWREZWNvZGVyR2xpYi5jcHAKIHBsYXRmb3JtL2dsaWIvS2V5
ZWRFbmNvZGVyR2xpYi5jcHAKIHBsYXRmb3JtL2dsaWIvTG93UG93ZXJNb2RlTm90aWZpZXJHTGli
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvRmlsZVN5c3RlbUNG
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0ZpbGVTeXN0ZW1DRi5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA4NDcwYTA4ZmE1ZDJmNDUyZTZjOTM4NzAxYzZkOTI2
Y2E2MDlmMDMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvRmlsZVN5c3RlbUNGLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDc0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMTEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRo
ZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICog
ICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0u
aCIKLQotI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1DU3RyaW5nIEZp
bGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIHBhdGgpCi17
Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZlN0cmluZyA9IHBhdGguY3JlYXRlQ0ZTdHJp
bmcoKTsKLQotICAgIGlmICghY2ZTdHJpbmcpCi0gICAgICAgIHJldHVybiBDU3RyaW5nKCk7Ci0K
LSAgICBDRkluZGV4IHNpemUgPSBDRlN0cmluZ0dldE1heGltdW1TaXplT2ZGaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oY2ZTdHJpbmcuZ2V0KCkpOwotCi0gICAgVmVjdG9yPGNoYXI+IGJ1ZmZlcihz
aXplKTsKLQotICAgIGlmICghQ0ZTdHJpbmdHZXRGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY2ZT
dHJpbmcuZ2V0KCksIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpKSB7Ci0gICAgICAgIExP
R19FUlJPUigiRmFpbGVkIHRvIGdldCBmaWxlc3lzdGVtIHJlcHJlc2VudGF0aW9uIHRvIGNyZWF0
ZSBDU3RyaW5nIGZyb20gY2ZTdHJpbmciKTsKLSAgICAgICAgcmV0dXJuIENTdHJpbmcoKTsKLSAg
ICB9Ci0KLSAgICByZXR1cm4gQ1N0cmluZyhidWZmZXIuZGF0YSgpLCBzdHJsZW4oYnVmZmVyLmRh
dGEoKSkpOwotfQotCi1TdHJpbmcgRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihjb25zdCBjaGFyKiBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24pCi17Ci0gICAg
cmV0dXJuIGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KGtDRkFsbG9jYXRvckRlZmF1bHQsIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbikpLmdldCgpOwot
fQotCi1SZXRhaW5QdHI8Q0ZVUkxSZWY+IEZpbGVTeXN0ZW06OnBhdGhBc1VSTChjb25zdCBTdHJp
bmcmIHBhdGgpCi17Ci0gICAgQ0ZVUkxQYXRoU3R5bGUgcGF0aFN0eWxlOwotI2lmIFBMQVRGT1JN
KFdJTikKLSAgICBwYXRoU3R5bGUgPSBrQ0ZVUkxXaW5kb3dzUGF0aFN0eWxlOwotI2Vsc2UKLSAg
ICBwYXRoU3R5bGUgPSBrQ0ZVUkxQT1NJWFBhdGhTdHlsZTsKLSNlbmRpZgotICAgIHJldHVybiBh
ZG9wdENGKENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKDAsIHBhdGguY3JlYXRlQ0ZTdHJp
bmcoKS5nZXQoKSwgcGF0aFN0eWxlLCBGQUxTRSkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9GaWxlTW9uaXRv
ckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRmlsZU1vbml0b3JDb2Nv
YS5tbQppbmRleCAxYWIzYzMzNGM2OWRmZmEzNjQ4YWIwMGE0NTU4ZDlmMjdlNDMwNjAwLi5jYzdm
ZTZiNmNkZTEwZWQ0Y2E0NTZlNDZiZTI4YTA0ZjY4NzI0NzRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9GaWxlTW9uaXRvckNvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL0ZpbGVNb25pdG9yQ29jb2EubW0KQEAgLTI2LDkgKzI2LDkg
QEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiRmlsZU1vbml0b3IuaCIKIAotI2ltcG9y
dCAiRmlsZVN5c3RlbS5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCA8d3RmL0Jsb2Nr
UHRyLmg+CisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9GaWxlU3lz
dGVtQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9GaWxlU3lzdGVtQ29j
b2EubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzOGIwYzgzMDNlN2JhMTBkNDA1
MzNjYmNkMTVkYTMzYjA5NjllM2MuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRmlsZVN5c3RlbUNvY29h
Lm1tCisrKyAvZGV2L251bGwKQEAgLTEsMTQzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDctMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLiAKLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLiAKLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5v
ciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNp
bXBvcnQgIkZpbGVTeXN0ZW0uaCIKLQotQGludGVyZmFjZSBXZWJGaWxlTWFuYWdlckRlbGVnYXRl
IDogTlNPYmplY3QgPE5TRmlsZU1hbmFnZXJEZWxlZ2F0ZT4KLUBlbmQKLQotQGltcGxlbWVudGF0
aW9uIFdlYkZpbGVNYW5hZ2VyRGVsZWdhdGUKLQotLSAoQk9PTClmaWxlTWFuYWdlcjooTlNGaWxl
TWFuYWdlciAqKWZpbGVNYW5hZ2VyIHNob3VsZFByb2NlZWRBZnRlckVycm9yOihOU0Vycm9yICop
ZXJyb3IgbW92aW5nSXRlbUF0VVJMOihOU1VSTCAqKXNyY1VSTCB0b1VSTDooTlNVUkwgKilkc3RV
UkwKLXsKLSAgICBVTlVTRURfUEFSQU0oZmlsZU1hbmFnZXIpOwotICAgIFVOVVNFRF9QQVJBTShz
cmNVUkwpOwotICAgIFVOVVNFRF9QQVJBTShkc3RVUkwpOyAgICAKLSAgICByZXR1cm4gZXJyb3Iu
Y29kZSA9PSBOU0ZpbGVXcml0ZUZpbGVFeGlzdHNFcnJvcjsKLX0KLQotQGVuZAotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBGaWxlU3lzdGVtIHsKLQotU3RyaW5nIGhvbWVEaXJl
Y3RvcnlQYXRoKCkKLXsKLSAgICByZXR1cm4gTlNIb21lRGlyZWN0b3J5KCk7Ci19Ci0KLVN0cmlu
ZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFu
ZGxlJiBwbGF0Zm9ybUZpbGVIYW5kbGUpCi17Ci0gICAgcGxhdGZvcm1GaWxlSGFuZGxlID0gaW52
YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKLSAgICAKLSAgICBWZWN0b3I8Y2hhcj4gdGVtcG9yYXJ5
RmlsZVBhdGgoUEFUSF9NQVgpOwotICAgIGlmICghY29uZnN0cihfQ1NfREFSV0lOX1VTRVJfVEVN
UF9ESVIsIHRlbXBvcmFyeUZpbGVQYXRoLmRhdGEoKSwgdGVtcG9yYXJ5RmlsZVBhdGguc2l6ZSgp
KSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgLy8gU2hyaW5rIHRoZSB2ZWN0b3Iu
ICAgCi0gICAgdGVtcG9yYXJ5RmlsZVBhdGguc2hyaW5rKHN0cmxlbih0ZW1wb3JhcnlGaWxlUGF0
aC5kYXRhKCkpKTsKLQotICAgIC8vIEZJWE1FOiBDaGFuZ2UgdG8gYSBydW50aW1lIGFzc2VydGlv
biB0aGF0IHRoZSBwYXRoIGVuZHMgd2l0aCBhIHNsYXNoIG9uY2UgPHJkYXI6Ly9wcm9ibGVtLzIz
NTc5MDc3PiBpcwotICAgIC8vIGZpeGVkIGluIGFsbCBpT1MgU2ltdWxhdG9yIHZlcnNpb25zIHRo
YXQgd2UgdXNlLgotICAgIGlmICh0ZW1wb3JhcnlGaWxlUGF0aC5sYXN0KCkgIT0gJy8nKQotICAg
ICAgICB0ZW1wb3JhcnlGaWxlUGF0aC5hcHBlbmQoJy8nKTsKLQotICAgIC8vIEFwcGVuZCB0aGUg
ZmlsZSBuYW1lLgotICAgIENTdHJpbmcgcHJlZml4VXRmOCA9IHByZWZpeC51dGY4KCk7Ci0gICAg
dGVtcG9yYXJ5RmlsZVBhdGguYXBwZW5kKHByZWZpeFV0ZjguZGF0YSgpLCBwcmVmaXhVdGY4Lmxl
bmd0aCgpKTsKLSAgICB0ZW1wb3JhcnlGaWxlUGF0aC5hcHBlbmQoIlhYWFhYWCIsIDYpOwotICAg
IHRlbXBvcmFyeUZpbGVQYXRoLmFwcGVuZCgnXDAnKTsKLQotICAgIHBsYXRmb3JtRmlsZUhhbmRs
ZSA9IG1rc3RlbXAodGVtcG9yYXJ5RmlsZVBhdGguZGF0YSgpKTsKLSAgICBpZiAocGxhdGZvcm1G
aWxlSGFuZGxlID09IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCi0gICAgICAgIHJldHVybiBT
dHJpbmcoKTsKLQotICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KHRlbXBvcmFyeUZpbGVQYXRo
LmRhdGEoKSk7Ci19Ci0KLWJvb2wgbW92ZUZpbGUoY29uc3QgU3RyaW5nJiBvbGRQYXRoLCBjb25z
dCBTdHJpbmcmIG5ld1BhdGgpCi17Ci0gICAgLy8gT3ZlcndyaXRlIGV4aXN0aW5nIGZpbGVzLgot
ICAgIGF1dG8gbWFuYWdlciA9IGFkb3B0TlMoW1tOU0ZpbGVNYW5hZ2VyIGFsbG9jXSBpbml0XSk7
Ci0gICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tXZWJGaWxlTWFuYWdlckRlbGVnYXRlIGFs
bG9jXSBpbml0XSk7Ci0gICAgW21hbmFnZXIgc2V0RGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwot
ICAgIAotICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOwotICAgIGJvb2wgc3VjY2VzcyA9IFttYW5h
Z2VyIG1vdmVJdGVtQXRVUkw6W05TVVJMIGZpbGVVUkxXaXRoUGF0aDpvbGRQYXRoXSB0b1VSTDpb
TlNVUkwgZmlsZVVSTFdpdGhQYXRoOm5ld1BhdGhdIGVycm9yOiZlcnJvcl07Ci0gICAgaWYgKCFz
dWNjZXNzKQotICAgICAgICBOU0xvZyhAIkVycm9yIGluIG1vdmVGaWxlOiAlQCIsIGVycm9yKTsK
LSAgICByZXR1cm4gc3VjY2VzczsKLX0KLQotYm9vbCBnZXRWb2x1bWVGcmVlU3BhY2UoY29uc3Qg
U3RyaW5nJiBwYXRoLCB1aW50NjRfdCYgZnJlZVNwYWNlKQotewotICAgIE5TRGljdGlvbmFyeSAq
ZmlsZVN5c3RlbUF0dHJpYnV0ZXNEaWN0aW9uYXJ5ID0gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRN
YW5hZ2VyXSBhdHRyaWJ1dGVzT2ZGaWxlU3lzdGVtRm9yUGF0aDooTlNTdHJpbmcgKilwYXRoIGVy
cm9yOk5VTExdOwotICAgIGlmICghZmlsZVN5c3RlbUF0dHJpYnV0ZXNEaWN0aW9uYXJ5KQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgZnJlZVNwYWNlID0gW1tmaWxlU3lzdGVtQXR0cmlidXRl
c0RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5Ok5TRmlsZVN5c3RlbUZyZWVTaXplXSB1bnNpZ25lZExv
bmdMb25nVmFsdWVdOwotICAgIHJldHVybiB0cnVlOwotfQotCi1OU1N0cmluZyAqY3JlYXRlVGVt
cG9yYXJ5RGlyZWN0b3J5KE5TU3RyaW5nICpkaXJlY3RvcnlQcmVmaXgpCi17Ci0gICAgTlNTdHJp
bmcgKnRlbXBEaXJlY3RvcnkgPSBOU1RlbXBvcmFyeURpcmVjdG9yeSgpOwotICAgIGlmICghdGVt
cERpcmVjdG9yeSB8fCAhW3RlbXBEaXJlY3RvcnkgbGVuZ3RoXSkKLSAgICAgICAgcmV0dXJuIG5p
bDsKLQotICAgIGlmICghZGlyZWN0b3J5UHJlZml4IHx8ICFbZGlyZWN0b3J5UHJlZml4IGxlbmd0
aF0pCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBOU1N0cmluZyAqdGVtcERpcmVjdG9yeUNv
bXBvbmVudCA9IFtkaXJlY3RvcnlQcmVmaXggc3RyaW5nQnlBcHBlbmRpbmdTdHJpbmc6QCItWFhY
WFhYWFgiXTsKLSAgICBjb25zdCBjaGFyKiB0ZW1wRGlyZWN0b3J5Q1N0cmluZyA9IFtbdGVtcERp
cmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6dGVtcERpcmVjdG9yeUNvbXBv
bmVudF0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uXTsKLSAgICBpZiAoIXRlbXBEaXJlY3RvcnlD
U3RyaW5nKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgY29uc3Qgc2l6ZV90IGxlbmd0aCA9
IHN0cmxlbih0ZW1wRGlyZWN0b3J5Q1N0cmluZyk7Ci0gICAgQVNTRVJUKGxlbmd0aCA8PSBNQVhQ
QVRITEVOKTsKLSAgICBpZiAobGVuZ3RoID4gTUFYUEFUSExFTikKLSAgICAgICAgcmV0dXJuIG5p
bDsKLQotICAgIGNvbnN0IHNpemVfdCBsZW5ndGhQbHVzTnVsbFRlcm1pbmF0b3IgPSBsZW5ndGgg
KyAxOwotICAgIFZlY3RvcjxjaGFyLCBNQVhQQVRITEVOICsgMT4gcGF0aChsZW5ndGhQbHVzTnVs
bFRlcm1pbmF0b3IpOwotICAgIG1lbWNweShwYXRoLmRhdGEoKSwgdGVtcERpcmVjdG9yeUNTdHJp
bmcsIGxlbmd0aFBsdXNOdWxsVGVybWluYXRvcik7Ci0KLSAgICBpZiAoIW1rZHRlbXAocGF0aC5k
YXRhKCkpKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgcmV0dXJuIFtbTlNGaWxlTWFuYWdl
ciBkZWZhdWx0TWFuYWdlcl0gc3RyaW5nV2l0aEZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbjpwYXRo
LmRhdGEoKSBsZW5ndGg6bGVuZ3RoXTsKLX0KLQotYm9vbCBkZWxldGVOb25FbXB0eURpcmVjdG9y
eShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgcmV0dXJuIFtbTlNGaWxlTWFuYWdlciBkZWZh
dWx0TWFuYWdlcl0gcmVtb3ZlSXRlbUF0UGF0aDpwYXRoIGVycm9yOm5pbF07Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIEZpbGVTeXN0ZW0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvRmlsZU1vbml0b3JHTGliLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvRmlsZU1vbml0b3JHTGliLmNwcAppbmRleCA0NjNmMzI3
NmMyNGUyNTFiZWI0YWEwOGIwYjk4OTg2ZThjYzk2OTIzLi41YTk4MmY0OTQ5MjM3Y2IyMGE5ZjU0
Y2Y4OGUyYWRlZTQ4ZDRmOTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
bGliL0ZpbGVNb25pdG9yR0xpYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xp
Yi9GaWxlTW9uaXRvckdMaWIuY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiRmlsZU1vbml0b3IuaCIKIAotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIK
KyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvdGhyZWFkcy9CaW5hcnlTZW1hcGhvcmUuaD4KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggY2E2YzNkZjk0ZGQzMjIxMzQzMDBjN2JiZDI2YmJiMDg5MDQ2
NTYzMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDQ3MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA5IEhvbGdl
ciBIYW5zIFBldGVyIEZyZXl0aGVyCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhLCBM
dGQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDEwIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRmls
ZVN5c3RlbS5oIgotCi0jaW5jbHVkZSAiRmlsZU1ldGFkYXRhLmgiCi0jaW5jbHVkZSAiTm90SW1w
bGVtZW50ZWQuaCIKLSNpbmNsdWRlIDxnaW8vZ2ZpbGVkZXNjcmlwdG9yYmFzZWQuaD4KLSNpbmNs
dWRlIDxnaW8vZ2lvLmg+Ci0jaW5jbHVkZSA8Z2xpYi5oPgotI2luY2x1ZGUgPGdsaWIvZ3N0ZGlv
Lmg+Ci0jaW5jbHVkZSA8c3lzL2ZpbGUuaD4KLSNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgot
I2luY2x1ZGUgPHd0Zi9VVUlELmg+Ci0jaW5jbHVkZSA8d3RmL2dsaWIvR0xpYlV0aWxpdGllcy5o
PgotI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5p
cXVlUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0J1aWxkZXIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgRmlsZVN5c3RlbSB7Ci0KLS8qIE9uIGxp
bnV4IGZpbGUgbmFtZXMgYXJlIGp1c3QgcmF3IGJ5dGVzLCBzbyBhbHNvIHN0cmluZ3MgdGhhdCBj
YW5ub3QgYmUgZW5jb2RlZCBpbiBhbnkgd2F5Ci0gKiBhcmUgdmFsaWQgZmlsZSBuYW1lcy4gVGhp
cyBtZWFuIHRoYXQgd2UgY2Fubm90IGp1c3Qgc3RvcmUgYSBmaWxlIG5hbWUgYXMtaXMgaW4gYSBT
dHJpbmcKLSAqIGJ1dCB3ZSBoYXZlIHRvIGVzY2FwZSBpdC4KLSAqIE9uIFdpbmRvd3MgdGhlIEdM
aWIgZmlsZSBuYW1lIGVuY29kaW5nIGlzIGFsd2F5cyBVVEYtOCBzbyB3ZSBjYW4gb3B0aW1pemUg
dGhpcyBjYXNlLiAqLwotU3RyaW5nIHN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
Y29uc3QgY2hhciogZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKQotewotICAgIGlmICghZmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSNpZiBPUyhX
SU5ET1dTKQotICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbik7Ci0jZWxzZQotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGVzY2FwZWRTdHJpbmcoZ191cmlf
ZXNjYXBlX3N0cmluZyhmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24sICIvOiIsIEZBTFNFKSk7Ci0g
ICAgcmV0dXJuIGVzY2FwZWRTdHJpbmcuZ2V0KCk7Ci0jZW5kaWYKLX0KLQotc3RhdGljIEdVbmlx
dWVQdHI8Y2hhcj4gdW5lc2NhcGVkRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAg
IGlmIChwYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0jaWYgT1MoV0lO
RE9XUykKLSAgICByZXR1cm4gR1VuaXF1ZVB0cjxjaGFyPihnX3N0cmR1cChwYXRoLnV0ZjgoKS5k
YXRhKCkpKTsKLSNlbHNlCi0gICAgcmV0dXJuIEdVbmlxdWVQdHI8Y2hhcj4oZ191cmlfdW5lc2Nh
cGVfc3RyaW5nKHBhdGgudXRmOCgpLmRhdGEoKSwgbnVsbHB0cikpOwotI2VuZGlmCi19Ci0KLUNT
dHJpbmcgZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSNp
ZiBPUyhXSU5ET1dTKQotICAgIHJldHVybiBwYXRoLnV0ZjgoKTsKLSNlbHNlCi0gICAgR1VuaXF1
ZVB0cjxnY2hhcj4gZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShwYXRoKTsKLSAgICByZXR1
cm4gZmlsZW5hbWUuZ2V0KCk7Ci0jZW5kaWYKLX0KLQotLy8gQ29udmVydHMgYSBzdHJpbmcgdG8g
c29tZXRoaW5nIHN1aXRhYmxlIHRvIGJlIGRpc3BsYXllZCB0byB0aGUgdXNlci4KLVN0cmluZyBm
aWxlbmFtZUZvckRpc3BsYXkoY29uc3QgU3RyaW5nJiBzdHJpbmcpCi17Ci0jaWYgT1MoV0lORE9X
UykKLSAgICByZXR1cm4gc3RyaW5nOwotI2Vsc2UKLSAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxl
bmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHN0cmluZyk7Ci0gICAgaWYgKCFmaWxlbmFtZSkKLSAg
ICAgICAgcmV0dXJuIHN0cmluZzsKLQotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGRpc3BsYXkoZ19m
aWxlbmFtZV90b191dGY4KGZpbGVuYW1lLmdldCgpLCAtMSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVs
bHB0cikpOwotICAgIGlmICghZGlzcGxheSkKLSAgICAgICAgcmV0dXJuIHN0cmluZzsKLQotICAg
IHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGRpc3BsYXkuZ2V0KCkpOwotI2VuZGlmCi19Ci0KLWJv
b2wgZmlsZUV4aXN0cyhjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgR1VuaXF1ZVB0cjxnY2hh
cj4gZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShwYXRoKTsKLSAgICByZXR1cm4gZmlsZW5h
bWUgPyBnX2ZpbGVfdGVzdChmaWxlbmFtZS5nZXQoKSwgR19GSUxFX1RFU1RfRVhJU1RTKSA6IGZh
bHNlOwotfQotCi1ib29sIGRlbGV0ZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIEdV
bmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUocGF0aCk7Ci0gICAg
cmV0dXJuIGZpbGVuYW1lID8gZ19yZW1vdmUoZmlsZW5hbWUuZ2V0KCkpICE9IC0xIDogZmFsc2U7
Ci19Ci0KLWJvb2wgZGVsZXRlRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKQotewot
ICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUocGF0aCk7
Ci0gICAgcmV0dXJuIGZpbGVuYW1lID8gZ19ybWRpcihmaWxlbmFtZS5nZXQoKSkgIT0gLTEgOiBm
YWxzZTsKLX0KLQotc3RhdGljIGJvb2wgZ2V0RmlsZVN0YXQoY29uc3QgU3RyaW5nJiBwYXRoLCBH
U3RhdEJ1Ziogc3RhdEJ1ZmZlcikKLXsKLSAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZSA9
IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGgpOwotICAgIGlmICghZmlsZW5hbWUpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIHJldHVybiBnX3N0YXQoZmlsZW5hbWUuZ2V0KCksIHN0YXRCdWZm
ZXIpICE9IC0xOwotfQotCi1zdGF0aWMgYm9vbCBnZXRGaWxlTFN0YXQoY29uc3QgU3RyaW5nJiBw
YXRoLCBHU3RhdEJ1Ziogc3RhdEJ1ZmZlcikKLXsKLSAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxl
bmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGgpOwotICAgIGlmICghZmlsZW5hbWUpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBnX2xzdGF0KGZpbGVuYW1lLmdldCgpLCBz
dGF0QnVmZmVyKSAhPSAtMTsKLX0KLQotYm9vbCBnZXRGaWxlU2l6ZShjb25zdCBTdHJpbmcmIHBh
dGgsIGxvbmcgbG9uZyYgcmVzdWx0U2l6ZSkKLXsKLSAgICBHU3RhdEJ1ZiBzdGF0UmVzdWx0Owot
ICAgIGlmICghZ2V0RmlsZVN0YXQocGF0aCwgJnN0YXRSZXN1bHQpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICByZXN1bHRTaXplID0gc3RhdFJlc3VsdC5zdF9zaXplOwotICAgIHJldHVy
biB0cnVlOwotfQotCi1ib29sIGdldEZpbGVTaXplKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUs
IGxvbmcgbG9uZyYgcmVzdWx0U2l6ZSkKLXsKLSAgICBhdXRvIGluZm8gPSBnX2ZpbGVfaW9fc3Ry
ZWFtX3F1ZXJ5X2luZm8oaGFuZGxlLCBHX0ZJTEVfQVRUUklCVVRFX1NUQU5EQVJEX1NJWkUsIG51
bGxwdHIsIG51bGxwdHIpOwotICAgIGlmICghaW5mbykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgcmVzdWx0U2l6ZSA9IGdfZmlsZV9pbmZvX2dldF9zaXplKGluZm8pOwotICAgIHJldHVy
biB0cnVlOwotfQotCi1PcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZUNyZWF0aW9uVGltZShjb25z
dCBTdHJpbmcmKQotewotICAgIC8vIEZJWE1FOiBJcyB0aGVyZSBhIHdheSB0byByZXRyaWV2ZSBm
aWxlIGNyZWF0aW9uIHRpbWUgd2l0aCBHdGsgb24gcGxhdGZvcm1zIHRoYXQgc3VwcG9ydCBpdD8K
LSAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotfQotCi1PcHRpb25hbDxXYWxsVGltZT4gZ2V0Rmls
ZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIEdTdGF0QnVmIHN0
YXRSZXN1bHQ7Ci0gICAgaWYgKCFnZXRGaWxlU3RhdChwYXRoLCAmc3RhdFJlc3VsdCkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICByZXR1cm4gV2FsbFRpbWU6OmZyb21SYXdT
ZWNvbmRzKHN0YXRSZXN1bHQuc3RfbXRpbWUpOwotfQotCi1zdGF0aWMgRmlsZU1ldGFkYXRhOjpU
eXBlIHRvRmlsZU1ldGF0YVR5cGUoR1N0YXRCdWYgc3RhdFJlc3VsdCkKLXsKLSAgICBpZiAoU19J
U0RJUihzdGF0UmVzdWx0LnN0X21vZGUpKQotICAgICAgICByZXR1cm4gRmlsZU1ldGFkYXRhOjpU
eXBlOjpEaXJlY3Rvcnk7Ci0gICAgaWYgKFNfSVNMTksoc3RhdFJlc3VsdC5zdF9tb2RlKSkKLSAg
ICAgICAgcmV0dXJuIEZpbGVNZXRhZGF0YTo6VHlwZTo6U3ltYm9saWNMaW5rOwotICAgIHJldHVy
biBGaWxlTWV0YWRhdGE6OlR5cGU6OkZpbGU7Ci19Ci0KLXN0YXRpYyBPcHRpb25hbDxGaWxlTWV0
YWRhdGE+IGZpbGVNZXRhZGF0YVVzaW5nRnVuY3Rpb24oY29uc3QgU3RyaW5nJiBwYXRoLCBib29s
ICgqc3RhdEZ1bmMpKGNvbnN0IFN0cmluZyYsIEdTdGF0QnVmKikpCi17Ci0gICAgR1N0YXRCdWYg
c3RhdFJlc3VsdDsKLSAgICBpZiAoIXN0YXRGdW5jKHBhdGgsICZzdGF0UmVzdWx0KSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIFN0cmluZyBmaWxlbmFtZSA9IHBhdGhHZXRG
aWxlTmFtZShwYXRoKTsKLSAgICBib29sIGlzSGlkZGVuID0gIWZpbGVuYW1lLmlzRW1wdHkoKSAm
JiBmaWxlbmFtZVswXSA9PSAnLic7Ci0KLSAgICByZXR1cm4gRmlsZU1ldGFkYXRhIHsKLSAgICAg
ICAgV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKHN0YXRSZXN1bHQuc3RfbXRpbWUpLAotICAgICAg
ICBzdGF0UmVzdWx0LnN0X3NpemUsCi0gICAgICAgIGlzSGlkZGVuLAotICAgICAgICB0b0ZpbGVN
ZXRhdGFUeXBlKHN0YXRSZXN1bHQpCi0gICAgfTsKLX0KLQotT3B0aW9uYWw8RmlsZU1ldGFkYXRh
PiBmaWxlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIHJldHVybiBmaWxlTWV0
YWRhdGFVc2luZ0Z1bmN0aW9uKHBhdGgsICZnZXRGaWxlTFN0YXQpOwotfQotCi1PcHRpb25hbDxG
aWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YUZvbGxvd2luZ1N5bWxpbmtzKGNvbnN0IFN0cmluZyYg
cGF0aCkKLXsKLSAgICByZXR1cm4gZmlsZU1ldGFkYXRhVXNpbmdGdW5jdGlvbihwYXRoLCAmZ2V0
RmlsZVN0YXQpOwotfQotCi1TdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNvbnN0IFN0
cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb21wb25lbnQpCi17Ci0gICAgaWYgKHBhdGguZW5k
c1dpdGgoR19ESVJfU0VQQVJBVE9SX1MpKQotICAgICAgICByZXR1cm4gcGF0aCArIGNvbXBvbmVu
dDsKLSAgICByZXR1cm4gcGF0aCArIEdfRElSX1NFUEFSQVRPUl9TICsgY29tcG9uZW50OwotfQot
Ci1TdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhTdHJpbmdWaWV3IHBhdGgsIGNvbnN0
IFZlY3RvcjxTdHJpbmdWaWV3PiYgY29tcG9uZW50cykKLXsKLSAgICBTdHJpbmdCdWlsZGVyIGJ1
aWxkZXI7Ci0gICAgYnVpbGRlci5hcHBlbmQocGF0aCk7Ci0gICAgZm9yIChhdXRvJiBjb21wb25l
bnQgOiBjb21wb25lbnRzKSB7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKEdfRElSX1NFUEFSQVRP
Ul9TKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoY29tcG9uZW50KTsKLSAgICB9Ci0gICAgcmV0
dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKLX0KLQotYm9vbCBtYWtlQWxsRGlyZWN0b3JpZXMoY29u
c3QgU3RyaW5nJiBwYXRoKQotewotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5l
c2NhcGVkRmlsZW5hbWUocGF0aCk7Ci0gICAgcmV0dXJuIGZpbGVuYW1lID8gZ19ta2Rpcl93aXRo
X3BhcmVudHMoZmlsZW5hbWUuZ2V0KCksIFNfSVJXWFUpICE9IC0xIDogZmFsc2U7Ci19Ci0KLVN0
cmluZyBob21lRGlyZWN0b3J5UGF0aCgpCi17Ci0gICAgcmV0dXJuIHN0cmluZ0Zyb21GaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oZ19nZXRfaG9tZV9kaXIoKSk7Ci19Ci0KLWJvb2wgY3JlYXRlU3lt
Ym9saWNMaW5rKGNvbnN0IFN0cmluZyYgdGFyZ2V0UGF0aCwgY29uc3QgU3RyaW5nJiBzeW1ib2xp
Y0xpbmtQYXRoKQotewotICAgIENTdHJpbmcgdGFyZ2V0UGF0aEZTUmVwID0gZmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKHRhcmdldFBhdGgpOwotICAgIGlmICghdGFyZ2V0UGF0aEZTUmVwLmRhdGEo
KSB8fCB0YXJnZXRQYXRoRlNSZXAuZGF0YSgpWzBdID09ICdcMCcpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIENTdHJpbmcgc3ltYm9saWNMaW5rUGF0aEZTUmVwID0gZmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKHN5bWJvbGljTGlua1BhdGgpOwotICAgIGlmICghc3ltYm9saWNMaW5rUGF0
aEZTUmVwLmRhdGEoKSB8fCBzeW1ib2xpY0xpbmtQYXRoRlNSZXAuZGF0YSgpWzBdID09ICdcMCcp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiAhc3ltbGluayh0YXJnZXRQYXRo
RlNSZXAuZGF0YSgpLCBzeW1ib2xpY0xpbmtQYXRoRlNSZXAuZGF0YSgpKTsKLX0KLQotU3RyaW5n
IHBhdGhHZXRGaWxlTmFtZShjb25zdCBTdHJpbmcmIHBhdGhOYW1lKQotewotICAgIEdVbmlxdWVQ
dHI8Z2NoYXI+IHRtcEZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUocGF0aE5hbWUpOwotICAg
IGlmICghdG1wRmlsZW5hbWUpCi0gICAgICAgIHJldHVybiBwYXRoTmFtZTsKLQotICAgIEdVbmlx
dWVQdHI8Z2NoYXI+IGJhc2VOYW1lKGdfcGF0aF9nZXRfYmFzZW5hbWUodG1wRmlsZW5hbWUuZ2V0
KCkpKTsKLSAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChiYXNlTmFtZS5nZXQoKSk7Ci19Ci0K
LWJvb2wgZ2V0Vm9sdW1lRnJlZVNwYWNlKGNvbnN0IFN0cmluZyYgcGF0aCwgdWludDY0X3QmIGZy
ZWVTcGFjZSkKLXsKLSAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZSA9IHVuZXNjYXBlZEZp
bGVuYW1lKHBhdGgpOwotICAgIGlmICghZmlsZW5hbWUpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIEdSZWZQdHI8R0ZpbGU+IGZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0
aChmaWxlbmFtZS5nZXQoKSkpOwotICAgIEdSZWZQdHI8R0ZpbGVJbmZvPiBmaWxlSW5mbyA9IGFk
b3B0R1JlZihnX2ZpbGVfcXVlcnlfZmlsZXN5c3RlbV9pbmZvKGZpbGUuZ2V0KCksIEdfRklMRV9B
VFRSSUJVVEVfRklMRVNZU1RFTV9GUkVFLCAwLCAwKSk7Ci0gICAgaWYgKCFmaWxlSW5mbykKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgZnJlZVNwYWNlID0gZ19maWxlX2luZm9fZ2V0X2F0
dHJpYnV0ZV91aW50NjQoZmlsZUluZm8uZ2V0KCksIEdfRklMRV9BVFRSSUJVVEVfRklMRVNZU1RF
TV9GUkVFKTsKLSAgICByZXR1cm4gISFmcmVlU3BhY2U7Ci19Ci0KLVN0cmluZyBkaXJlY3RvcnlO
YW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFt
ZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGgpOwotICAgIGlmICghZmlsZW5hbWUpCi0gICAgICAg
IHJldHVybiBTdHJpbmcoKTsKLQotICAgIEdVbmlxdWVQdHI8Y2hhcj4gZGlybmFtZShnX3BhdGhf
Z2V0X2Rpcm5hbWUoZmlsZW5hbWUuZ2V0KCkpKTsKLSAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRG
OChkaXJuYW1lLmdldCgpKTsKLX0KLQotVmVjdG9yPFN0cmluZz4gbGlzdERpcmVjdG9yeShjb25z
dCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgZmlsdGVyKQotewotICAgIFZlY3RvcjxTdHJp
bmc+IGVudHJpZXM7Ci0KLSAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZSA9IHVuZXNjYXBl
ZEZpbGVuYW1lKHBhdGgpOwotICAgIGlmICghZmlsZW5hbWUpCi0gICAgICAgIHJldHVybiBlbnRy
aWVzOwotCi0gICAgR1VuaXF1ZVB0cjxHRGlyPiBkaXIoZ19kaXJfb3BlbihmaWxlbmFtZS5nZXQo
KSwgMCwgbnVsbHB0cikpOwotICAgIGlmICghZGlyKQotICAgICAgICByZXR1cm4gZW50cmllczsK
LQotICAgIEdVbmlxdWVQdHI8R1BhdHRlcm5TcGVjPiBwc3BlYyhnX3BhdHRlcm5fc3BlY19uZXco
KGZpbHRlci51dGY4KCkpLmRhdGEoKSkpOwotICAgIHdoaWxlIChjb25zdCBjaGFyKiBuYW1lID0g
Z19kaXJfcmVhZF9uYW1lKGRpci5nZXQoKSkpIHsKLSAgICAgICAgaWYgKCFnX3BhdHRlcm5fbWF0
Y2hfc3RyaW5nKHBzcGVjLmdldCgpLCBuYW1lKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0g
ICAgICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGVudHJ5KGdfYnVpbGRfZmlsZW5hbWUoZmlsZW5hbWUu
Z2V0KCksIG5hbWUsIG51bGxwdHIpKTsKLSAgICAgICAgZW50cmllcy5hcHBlbmQoc3RyaW5nRnJv
bUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihlbnRyeS5nZXQoKSkpOwotICAgIH0KLQotICAgIHJl
dHVybiBlbnRyaWVzOwotfQotCi1TdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5n
JiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKQotewotICAgIEdVbmlxdWVQdHI8
Z2NoYXI+IGZpbGVuYW1lKGdfc3RyZHVwX3ByaW50ZigiJXMlcyIsIHByZWZpeC51dGY4KCkuZGF0
YSgpLCBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkudXRmOCgpLmRhdGEoKSkpOwotICAgIEdV
bmlxdWVQdHI8Z2NoYXI+IHRlbXBQYXRoKGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdG1wX2Rpcigp
LCBmaWxlbmFtZS5nZXQoKSwgTlVMTCkpOwotICAgIEdSZWZQdHI8R0ZpbGU+IGZpbGUgPSBhZG9w
dEdSZWYoZ19maWxlX25ld19mb3JfcGF0aCh0ZW1wUGF0aC5nZXQoKSkpOwotCi0gICAgaGFuZGxl
ID0gZ19maWxlX2NyZWF0ZV9yZWFkd3JpdGUoZmlsZS5nZXQoKSwgR19GSUxFX0NSRUFURV9OT05F
LCAwLCAwKTsKLSAgICBpZiAoIWlzSGFuZGxlVmFsaWQoaGFuZGxlKSkKLSAgICAgICAgcmV0dXJu
IFN0cmluZygpOwotICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KHRlbXBQYXRoLmdldCgpKTsK
LX0KLQotUGxhdGZvcm1GaWxlSGFuZGxlIG9wZW5GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmls
ZU9wZW5Nb2RlIG1vZGUpCi17Ci0gICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUgPSB1bmVz
Y2FwZWRGaWxlbmFtZShwYXRoKTsKLSAgICBpZiAoIWZpbGVuYW1lKQotICAgICAgICByZXR1cm4g
aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKLQotICAgIEdSZWZQdHI8R0ZpbGU+IGZpbGUgPSBh
ZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0aChmaWxlbmFtZS5nZXQoKSkpOwotICAgIEdGaWxl
SU9TdHJlYW0qIGlvU3RyZWFtID0gMDsKLSAgICBpZiAobW9kZSA9PSBGaWxlT3Blbk1vZGU6OlJl
YWQpCi0gICAgICAgIGlvU3RyZWFtID0gZ19maWxlX29wZW5fcmVhZHdyaXRlKGZpbGUuZ2V0KCks
IDAsIDApOwotICAgIGVsc2UgaWYgKG1vZGUgPT0gRmlsZU9wZW5Nb2RlOjpXcml0ZSkgewotICAg
ICAgICBpZiAoZ19maWxlX3Rlc3QoZmlsZW5hbWUuZ2V0KCksIHN0YXRpY19jYXN0PEdGaWxlVGVz
dD4oR19GSUxFX1RFU1RfRVhJU1RTIHwgR19GSUxFX1RFU1RfSVNfUkVHVUxBUikpKQotICAgICAg
ICAgICAgaW9TdHJlYW0gPSBnX2ZpbGVfb3Blbl9yZWFkd3JpdGUoZmlsZS5nZXQoKSwgMCwgMCk7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGlvU3RyZWFtID0gZ19maWxlX2NyZWF0ZV9yZWFk
d3JpdGUoZmlsZS5nZXQoKSwgR19GSUxFX0NSRUFURV9OT05FLCAwLCAwKTsKLSAgICB9Ci0KLSAg
ICByZXR1cm4gaW9TdHJlYW07Ci19Ci0KLXZvaWQgY2xvc2VGaWxlKFBsYXRmb3JtRmlsZUhhbmRs
ZSYgaGFuZGxlKQotewotICAgIGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBnX2lvX3N0cmVhbV9jbG9zZShHX0lPX1NUUkVBTShoYW5kbGUpLCAwLCAw
KTsKLSAgICBnX29iamVjdF91bnJlZihoYW5kbGUpOwotICAgIGhhbmRsZSA9IGludmFsaWRQbGF0
Zm9ybUZpbGVIYW5kbGU7Ci19Ci0KLWxvbmcgbG9uZyBzZWVrRmlsZShQbGF0Zm9ybUZpbGVIYW5k
bGUgaGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0LCBGaWxlU2Vla09yaWdpbiBvcmlnaW4pCi17Ci0g
ICAgR1NlZWtUeXBlIHNlZWtUeXBlID0gR19TRUVLX1NFVDsKLSAgICBzd2l0Y2ggKG9yaWdpbikg
ewotICAgIGNhc2UgRmlsZVNlZWtPcmlnaW46OkJlZ2lubmluZzoKLSAgICAgICAgc2Vla1R5cGUg
PSBHX1NFRUtfU0VUOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEZpbGVTZWVrT3JpZ2luOjpD
dXJyZW50OgotICAgICAgICBzZWVrVHlwZSA9IEdfU0VFS19DVVI7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgRmlsZVNlZWtPcmlnaW46OkVuZDoKLSAgICAgICAgc2Vla1R5cGUgPSBHX1NFRUtf
RU5EOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICB9Ci0KLSAgICBpZiAoIWdfc2Vla2FibGVfc2VlayhHX1NFRUtBQkxFKGdf
aW9fc3RyZWFtX2dldF9pbnB1dF9zdHJlYW0oR19JT19TVFJFQU0oaGFuZGxlKSkpLAotICAgICAg
ICBvZmZzZXQsIHNlZWtUeXBlLCAwLCAwKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiAtMTsKLSAg
ICB9Ci0gICAgcmV0dXJuIGdfc2Vla2FibGVfdGVsbChHX1NFRUtBQkxFKGdfaW9fc3RyZWFtX2dl
dF9pbnB1dF9zdHJlYW0oR19JT19TVFJFQU0oaGFuZGxlKSkpKTsKLX0KLQotaW50IHdyaXRlVG9G
aWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5n
dGgpCi17Ci0gICAgZ3NpemUgYnl0ZXNXcml0dGVuOwotICAgIGdfb3V0cHV0X3N0cmVhbV93cml0
ZV9hbGwoZ19pb19zdHJlYW1fZ2V0X291dHB1dF9zdHJlYW0oR19JT19TVFJFQU0oaGFuZGxlKSks
Ci0gICAgICAgIGRhdGEsIGxlbmd0aCwgJmJ5dGVzV3JpdHRlbiwgMCwgMCk7Ci0gICAgcmV0dXJu
IGJ5dGVzV3JpdHRlbjsKLX0KLQotaW50IHJlYWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUg
aGFuZGxlLCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQotewotICAgIEdVbmlxdWVPdXRQdHI8R0Vy
cm9yPiBlcnJvcjsKLSAgICBkbyB7Ci0gICAgICAgIGdzc2l6ZSBieXRlc1JlYWQgPSBnX2lucHV0
X3N0cmVhbV9yZWFkKGdfaW9fc3RyZWFtX2dldF9pbnB1dF9zdHJlYW0oR19JT19TVFJFQU0oaGFu
ZGxlKSksCi0gICAgICAgICAgICBkYXRhLCBsZW5ndGgsIDAsICZlcnJvci5vdXRQdHIoKSk7Ci0g
ICAgICAgIGlmIChieXRlc1JlYWQgPj0gMCkKLSAgICAgICAgICAgIHJldHVybiBieXRlc1JlYWQ7
Ci0gICAgfSB3aGlsZSAoZXJyb3IgJiYgZXJyb3ItPmNvZGUgPT0gR19GSUxFX0VSUk9SX0lOVFIp
OwotICAgIHJldHVybiAtMTsKLX0KLQotYm9vbCBtb3ZlRmlsZShjb25zdCBTdHJpbmcmIG9sZFBh
dGgsIGNvbnN0IFN0cmluZyYgbmV3UGF0aCkKLXsKLSAgICBHVW5pcXVlUHRyPGdjaGFyPiBvbGRG
aWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKG9sZFBhdGgpOwotICAgIGlmICghb2xkRmlsZW5h
bWUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IG5ld0Zp
bGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUobmV3UGF0aCk7Ci0gICAgaWYgKCFuZXdGaWxlbmFt
ZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgR1JlZlB0cjxHRmlsZT4gb2xkRmlsZSA9
IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKG9sZEZpbGVuYW1lLmdldCgpKSk7Ci0gICAg
R1JlZlB0cjxHRmlsZT4gbmV3RmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKG5l
d0ZpbGVuYW1lLmdldCgpKSk7Ci0KLSAgICByZXR1cm4gZ19maWxlX21vdmUob2xkRmlsZS5nZXQo
KSwgbmV3RmlsZS5nZXQoKSwgR19GSUxFX0NPUFlfT1ZFUldSSVRFLCBudWxscHRyLCBudWxscHRy
LCBudWxscHRyLCBudWxscHRyKTsKLX0KLQotYm9vbCBoYXJkTGlua09yQ29weUZpbGUoY29uc3Qg
U3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb24pCi17Ci0jaWYgT1MoV0lO
RE9XUykKLSAgICByZXR1cm4gISE6OkNvcHlGaWxlKHNvdXJjZS5jaGFyYWN0ZXJzV2l0aE51bGxU
ZXJtaW5hdGlvbigpLmRhdGEoKSwgZGVzdGluYXRpb24uY2hhcmFjdGVyc1dpdGhOdWxsVGVybWlu
YXRpb24oKS5kYXRhKCksIFRSVUUpOwotI2Vsc2UKLSAgICBHVW5pcXVlUHRyPGdjaGFyPiBzb3Vy
Y2VGaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHNvdXJjZSk7Ci0gICAgaWYgKCFzb3VyY2VG
aWxlbmFtZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgR1VuaXF1ZVB0cjxnY2hhcj4g
ZGVzdGluYXRpb25GaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKGRlc3RpbmF0aW9uKTsKLSAg
ICBpZiAoIWRlc3RpbmF0aW9uRmlsZW5hbWUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IGlmICghbGluayhzb3VyY2VGaWxlbmFtZS5nZXQoKSwgZGVzdGluYXRpb25GaWxlbmFtZS5nZXQo
KSkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgLy8gSGFyZCBsaW5rIGZhaWxlZC4gUGVy
Zm9ybSBhIGNvcHkgaW5zdGVhZC4KLSAgICBHUmVmUHRyPEdGaWxlPiBzb3VyY2VGaWxlID0gYWRv
cHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoc291cmNlRmlsZW5hbWUuZ2V0KCkpKTsKLSAgICBH
UmVmUHRyPEdGaWxlPiBkZXN0aW5hdGlvbkZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3Jf
cGF0aChkZXN0aW5hdGlvbkZpbGVuYW1lLmdldCgpKSk7Ci0gICAgcmV0dXJuIGdfZmlsZV9jb3B5
KHNvdXJjZUZpbGUuZ2V0KCksIGRlc3RpbmF0aW9uRmlsZS5nZXQoKSwgR19GSUxFX0NPUFlfTk9O
RSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cik7Ci0jZW5kaWYKLX0KLQotT3B0
aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0IENTdHJpbmcmIGZzRmlsZSkKLXsK
LSAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKGZzRmls
ZS5kYXRhKCkpOwotICAgIGlmICghZmlsZW5hbWUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7Ci0KLSAgICBHUmVmUHRyPEdGaWxlPiBmaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9y
X3BhdGgoZmlsZW5hbWUuZ2V0KCkpKTsKLSAgICBHUmVmUHRyPEdGaWxlSW5mbz4gZmlsZUluZm8g
PSBhZG9wdEdSZWYoZ19maWxlX3F1ZXJ5X2ZpbGVzeXN0ZW1faW5mbyhmaWxlLmdldCgpLCBHX0ZJ
TEVfQVRUUklCVVRFX1VOSVhfREVWSUNFLCBudWxscHRyLCBudWxscHRyKSk7Ci0gICAgaWYgKCFm
aWxlSW5mbykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIHJldHVybiBnX2Zp
bGVfaW5mb19nZXRfYXR0cmlidXRlX3VpbnQzMihmaWxlSW5mby5nZXQoKSwgR19GSUxFX0FUVFJJ
QlVURV9VTklYX0RFVklDRSk7Ci19Ci0KLSNpZiBVU0UoRklMRV9MT0NLKQotYm9vbCBsb2NrRmls
ZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBPcHRpb25TZXQ8RmlsZUxvY2tNb2RlPiBsb2Nr
TW9kZSkKLXsKLSAgICBDT01QSUxFX0FTU0VSVChMT0NLX1NIID09IFdURjo6ZW51bVRvVW5kZXJs
eWluZ1R5cGUoRmlsZUxvY2tNb2RlOjpTaGFyZWQpLCBMb2NrU2hhcmVkRW5jb2RpbmdJc0FzRXhw
ZWN0ZWQpOwotICAgIENPTVBJTEVfQVNTRVJUKExPQ0tfRVggPT0gV1RGOjplbnVtVG9VbmRlcmx5
aW5nVHlwZShGaWxlTG9ja01vZGU6OkV4Y2x1c2l2ZSksIExvY2tFeGNsdXNpdmVFbmNvZGluZ0lz
QXNFeHBlY3RlZCk7Ci0gICAgQ09NUElMRV9BU1NFUlQoTE9DS19OQiA9PSBXVEY6OmVudW1Ub1Vu
ZGVybHlpbmdUeXBlKEZpbGVMb2NrTW9kZTo6Tm9uYmxvY2tpbmcpLCBMb2NrTm9uYmxvY2tpbmdF
bmNvZGluZ0lzQXNFeHBlY3RlZCk7Ci0gICAgYXV0byogaW5wdXRTdHJlYW0gPSBnX2lvX3N0cmVh
bV9nZXRfaW5wdXRfc3RyZWFtKEdfSU9fU1RSRUFNKGhhbmRsZSkpOwotICAgIGludCByZXN1bHQg
PSBmbG9jayhnX2ZpbGVfZGVzY3JpcHRvcl9iYXNlZF9nZXRfZmQoR19GSUxFX0RFU0NSSVBUT1Jf
QkFTRUQoaW5wdXRTdHJlYW0pKSwgbG9ja01vZGUudG9SYXcoKSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dCAhPSAtMTsKLX0KLQotYm9vbCB1bmxvY2tGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUp
Ci17Ci0gICAgYXV0byogaW5wdXRTdHJlYW0gPSBnX2lvX3N0cmVhbV9nZXRfaW5wdXRfc3RyZWFt
KEdfSU9fU1RSRUFNKGhhbmRsZSkpOwotICAgIGludCByZXN1bHQgPSBmbG9jayhnX2ZpbGVfZGVz
Y3JpcHRvcl9iYXNlZF9nZXRfZmQoR19GSUxFX0RFU0NSSVBUT1JfQkFTRUQoaW5wdXRTdHJlYW0p
KSwgTE9DS19VTik7Ci0gICAgcmV0dXJuIHJlc3VsdCAhPSAtMTsKLX0KLSNlbmRpZiAvLyBVU0Uo
RklMRV9MT0NLKQotCi19IC8vIG5hbWVzcGFjZSBGaWxlU3lzdGVtCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1
ZmZlckdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJH
bGliLmNwcAppbmRleCBiNDg5NmMwODU0NjBlN2MwYmU1NjQwODRlYzg4ZWYyMmFmNjBiODQ0Li5l
MGE4NTllM2VlYTNkOWY3M2Q4NzhhMzAwNGViZDgxN2UxYjk5MjhhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAKQEAgLTE5LDcgKzE5
LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKIAot
I2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2lu
Y2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29u
dGVudEtleVNlc3Npb24ubW0KaW5kZXggZThkZDNiNWFlYzgyOTNjZDVlZDk2ZTk4ZjEwMzVlZTUz
ZTI4YzdiNC4uMjRmOTVlODQ0MTM2N2UyMjE5Y2EyMjY0NDVlODYyMjhmNTc5NDgyYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
Q0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNl
c3Npb24ubW0KQEAgLTI5LDcgKzI5LDYgQEAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9N
RURJQSkgJiYgRU5BQkxFKE1FRElBX1NPVVJDRSkKIAogI2ltcG9ydCAiQ0RNUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQy5oIgotI2ltcG9ydCAiRmlsZVN5c3RlbS5oIgogI2ltcG9ydCAiTGVnYWN5
Q0RNLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJNZWRpYVBsYXllci5oIgpAQCAt
MzksNiArMzgsNyBAQAogI2ltcG9ydCA8Q29yZU1lZGlhL0NNQmFzZS5oPgogI2ltcG9ydCA8SmF2
YVNjcmlwdENvcmUvVHlwZWRBcnJheUlubGluZXMuaD4KICNpbXBvcnQgPG9iamMvb2JqYy1ydW50
aW1lLmg+CisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8d3RmL1NvZnRMaW5r
aW5nLmg+CiAKIFNPRlRfTElOS19GUkFNRVdPUktfT1BUSU9OQUwoQVZGb3VuZGF0aW9uKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVlN0cmVhbVNlc3Npb24ubW0K
aW5kZXggOTkyOTQzMTVkODYyNDFiMTY4ZjI4YWE3MmVkZGUwZDk3Y2Y0YTc4Yy4uYzM1NzNlNWM2
MDgxYzk5YjE0MDRlMGU0MWM1MGUwNDllMjkxYTIyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWU3RyZWFt
U2Vzc2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9DRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLm1tCkBAIC0yOSw3ICsyOSw2IEBA
CiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRShNRURJQV9TT1VS
Q0UpCiAKICNpbXBvcnQgIkNETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCIKLSNpbXBvcnQg
IkZpbGVTeXN0ZW0uaCIKICNpbXBvcnQgIkxlZ2FjeUNETS5oIgogI2ltcG9ydCAiTG9nZ2luZy5o
IgogI2ltcG9ydCAiTWVkaWFQbGF5ZXIuaCIKQEAgLTQwLDYgKzM5LDcgQEAKICNpbXBvcnQgPEph
dmFTY3JpcHRDb3JlL1R5cGVkQXJyYXlJbmxpbmVzLmg+CiAjaW1wb3J0IDxvYmpjL29iamMtcnVu
dGltZS5oPgogI2ltcG9ydCA8cGFsL3NwaS9tYWMvQVZGb3VuZGF0aW9uU1BJLmg+CisjaW1wb3J0
IDx3dGYvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CiAjaW1wb3J0
IDx3dGYvVVVJRC5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vz
c2lvbk1lZGlhU291cmNlQVZGT2JqQy5tbQppbmRleCAyY2IyZDZmYTBjZDhlZmE0MjMxODkxYTA5
ODE5ODNjOWI4YzA3N2U0Li5lYzU4Mzc4YThiZWI2YTU3NTNkMDJkYTQ5ZmVkYWI2NmVlYjU5N2My
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25NZWRpYVNv
dXJjZUFWRk9iakMubW0KQEAgLTI5LDkgKzI5LDkgQEAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZ
UFRFRF9NRURJQSkgJiYgRU5BQkxFKE1FRElBX1NPVVJDRSkKIAogI2ltcG9ydCAiQ0RNUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQy5oIgotI2ltcG9ydCAiRmlsZVN5c3RlbS5oIgogI2ltcG9ydCAi
V2ViQ29yZU5TRXJyb3JFeHRyYXMuaCIKICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkVycm9yLmg+
CisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQy5tbQppbmRleCA1ZTM2ZGQwMDY5MzA3NTAxMTJiNzEzZmRjNGU1
YWVhNGQxMGE5YzA5Li5kNmQ1ZTgyYjIzNzc2ZmQ2Mjc3ZTI5YjY5ZGViNjYyOWY4YzkxOGM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCkBAIC0zMSw3ICszMSw2IEBACiAjaW1wb3J0ICJB
VkFzc2V0VHJhY2tVdGlsaXRpZXMuaCIKICNpbXBvcnQgIkFWRm91bmRhdGlvbk1JTUVUeXBlQ2Fj
aGUuaCIKICNpbXBvcnQgIkNETVNlc3Npb25BVlN0cmVhbVNlc3Npb24uaCIKLSNpbXBvcnQgIkZp
bGVTeXN0ZW0uaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dENHLmgiCiAjaW1wb3J0ICJMb2dn
aW5nLmgiCiAjaW1wb3J0ICJNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLmgiCkBAIC00OSw2ICs0
OCw3IEBACiAjaW1wb3J0IDxwYWwvYXZmb3VuZGF0aW9uL01lZGlhVGltZUFWRm91bmRhdGlvbi5o
PgogI2ltcG9ydCA8cGFsL3NwaS9tYWMvQVZGb3VuZGF0aW9uU1BJLmg+CiAjaW1wb3J0IDx3dGYv
RGVxdWUuaD4KKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDx3dGYvTWFpblRo
cmVhZC5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggMGYwNWViOTE5OWRiZjNl
NDllMWExMmUwNzU2NmVlYzQ4OTFkZTE3Ny4uNDE0MGMxMWIwZWE0Nzk4ZTY2MGQ2NDk1ODBmZWNh
YWQzYzI2ZDRjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lci5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdT
VFJFQU1FUikKIAotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJHU3RyZWFtZXJD
b21tb24uaCIKICNpbmNsdWRlICJIVFRQSGVhZGVyTmFtZXMuaCIKICNpbmNsdWRlICJNSU1FVHlw
ZVJlZ2lzdHJ5LmgiCkBAIC00Miw2ICs0MSw3IEBACiAjaW5jbHVkZSA8Z3N0L2dzdC5oPgogI2lu
Y2x1ZGUgPGdzdC9wYnV0aWxzL21pc3NpbmctcGx1Z2lucy5oPgogI2luY2x1ZGUgPGxpbWl0cz4K
KyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4K
ICNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVk
Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29rLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5tbQppbmRleCBhMDI3N2Y1
MDliMmYzMDU1MWVjMjM0ZjZmZjE4YTVlMzQ0ZWVkNjQwLi4wNzM3NDA2NzA1NzdlMWVmZGQwMzNl
MWJhY2Q4YzE0OGJjZGNhZGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvUXVpY2tMb29rLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9RdWlja0xv
b2subW0KQEAgLTI4LDExICsyOCwxMSBAQAogCiAjaWYgVVNFKFFVSUNLX0xPT0spCiAKLSNpbXBv
cnQgIkZpbGVTeXN0ZW0uaCIKICNpbXBvcnQgIlByZXZpZXdDb252ZXJ0ZXIuaCIKICNpbXBvcnQg
IlJlc291cmNlUmVxdWVzdC5oIgogI2ltcG9ydCAiU2NoZW1lUmVnaXN0cnkuaCIKICNpbXBvcnQg
PHBhbC9zcGkvY29jb2EvTlNGaWxlTWFuYWdlclNQSS5oPgorI2ltcG9ydCA8d3RmL0ZpbGVTeXN0
ZW0uaD4KICNpbXBvcnQgPHd0Zi9Mb2NrLmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92
aWRlclBhc3RlYm9hcmQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVBy
b3ZpZGVyUGFzdGVib2FyZC5tbQppbmRleCBiZjgyMTgzOTkxNWU4MGQ1ODk5YTk0ODk5OWYyZjAy
MDZkOGNmZjNhLi4zNTQ1ZDdlZmNhYzg2NzY0OGY0OWE0NzRlOGEwMjBiNTFjODhkNGRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVi
b2FyZC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVy
UGFzdGVib2FyZC5tbQpAQCAtMzQsMTEgKzM0LDExIEBACiAjaW1wb3J0IDxVSUtpdC9OU0l0ZW1Q
cm92aWRlcitVSUtpdEFkZGl0aW9ucy5oPgogI2ltcG9ydCA8VUlLaXQvVUlDb2xvci5oPgogI2lt
cG9ydCA8VUlLaXQvVUlJbWFnZS5oPgotI2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1Bhc3RlYm9hcmQuaD4KICNpbXBvcnQgPHBhbC9pb3MvVUlLaXRTb2Z0
TGluay5oPgogI2ltcG9ydCA8cGFsL3NwaS9pb3MvVUlLaXRTUEkuaD4KICNpbXBvcnQgPHd0Zi9C
bG9ja1B0ci5oPgorI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0Zi9PU09i
amVjdFB0ci5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCkBAIC02OTQsNyArNjk0LDcg
QEAgc3RhdGljIE5TVVJMICpsaW5rVGVtcG9yYXJ5SXRlbVByb3ZpZGVyRmlsZXNUb0Ryb3BTdGFn
aW5nRGlyZWN0b3J5KE5TVVJMICp1cmwsIE4KICAgICBpZiAoIXVybCkKICAgICAgICAgcmV0dXJu
IG5pbDsKIAotICAgIE5TU3RyaW5nICp0ZW1wb3JhcnlEYXRhSW50ZXJhY3Rpb25EaXJlY3Rvcnkg
PSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoZGF0YUludGVy
YWN0aW9uRGlyZWN0b3J5UHJlZml4KTsKKyAgICBOU1N0cmluZyAqdGVtcG9yYXJ5RGF0YUludGVy
YWN0aW9uRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KGRh
dGFJbnRlcmFjdGlvbkRpcmVjdG9yeVByZWZpeCk7CiAgICAgaWYgKCF0ZW1wb3JhcnlEYXRhSW50
ZXJhY3Rpb25EaXJlY3RvcnkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9GaWxlU3lzdGVtTWFjLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL0ZpbGVTeXN0ZW1NYWMubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDhlZDc1MWE3ZWMwZTVkMGJhZjc3NGY5ODYxMGFjYjA0NWNkMmIwMDQuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL0ZpbGVTeXN0ZW1NYWMubW0KKysrIC9kZXYvbnVsbApAQCAtMSw4OCArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkZpbGVTeXN0
ZW0uaCIKLQotI2lmIFBMQVRGT1JNKE1BQykKLQotI2ltcG9ydCA8cGFsL3NwaS9tYWMvTWV0YWRh
dGFTUEkuaD4KLSNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oPgotI2ltcG9ydCA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotYm9vbCBGaWxlU3lz
dGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgYXV0
byBmaWxlTWFuYWdlciA9IGFkb3B0TlMoW1tOU0ZpbGVNYW5hZ2VyIGFsbG9jXSBpbml0XSk7Ci0K
LSAgICBpZiAoTlNBcnJheSAqZGlyZWN0b3J5Q29udGVudHMgPSBbZmlsZU1hbmFnZXIgY29udGVu
dHNPZkRpcmVjdG9yeUF0UGF0aDpwYXRoIGVycm9yOm51bGxwdHJdKSB7Ci0gICAgICAgIC8vIEV4
cGxpY2l0bHkgbG9vayBmb3IgYW5kIGRlbGV0ZSAuRFNfU3RvcmUgZmlsZXMuCi0gICAgICAgIGlm
IChkaXJlY3RvcnlDb250ZW50cy5jb3VudCA9PSAxICYmIFtkaXJlY3RvcnlDb250ZW50cy5maXJz
dE9iamVjdCBpc0VxdWFsVG9TdHJpbmc6QCIuRFNfU3RvcmUiXSkKLSAgICAgICAgICAgIFtmaWxl
TWFuYWdlciByZW1vdmVJdGVtQXRQYXRoOltwYXRoIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBv
bmVudDpkaXJlY3RvcnlDb250ZW50cy5maXJzdE9iamVjdF0gZXJyb3I6bnVsbHB0cl07Ci0gICAg
fQotCi0gICAgLy8gcm1kaXIoLi4uKSByZXR1cm5zIDAgb24gc3VjY2Vzc2Z1bCBkZWxldGlvbiBv
ZiB0aGUgcGF0aCBhbmQgbm9uLXplcm8gaW4gYW55IG90aGVyIGNhc2UgKGluY2x1ZGluZyBpbnZh
bGlkIHBlcm1pc3Npb25zIG9yIG5vbi1leGlzdGVudCBmaWxlKQotICAgIHJldHVybiAhcm1kaXIo
RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSk7Ci19Ci0K
LXZvaWQgRmlsZVN5c3RlbTo6c2V0TWV0YWRhdGFVUkwoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25z
dCBTdHJpbmcmIG1ldGFkYXRhVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKQotewot
ICAgIFN0cmluZyB1cmxTdHJpbmc7Ci0gICAgaWYgKE5TVVJMICp1cmwgPSBVUkxXaXRoVXNlclR5
cGVkU3RyaW5nKG1ldGFkYXRhVVJMU3RyaW5nLCBuaWwpKQotICAgICAgICB1cmxTdHJpbmcgPSBX
VEY6OnVzZXJWaXNpYmxlU3RyaW5nKFdURjo6VVJMQnlSZW1vdmluZ1VzZXJJbmZvKHVybCkpOwot
ICAgIGVsc2UKLSAgICAgICAgdXJsU3RyaW5nID0gbWV0YWRhdGFVUkxTdHJpbmc7Ci0KLSAgICAv
LyBDYWxsIE1ldGFkYXRhIEFQSSBvbiBhIGJhY2tncm91bmQgcXVldWUgYmVjYXVzZSBpdCBjYW4g
dGFrZSBzb21lIHRpbWUuCi0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X2dsb2JhbF9x
dWV1ZShESVNQQVRDSF9RVUVVRV9QUklPUklUWV9ERUZBVUxULCAwKSwgW3BhdGggPSBwYXRoLmlz
b2xhdGVkQ29weSgpLCB1cmxTdHJpbmcgPSB1cmxTdHJpbmcuaXNvbGF0ZWRDb3B5KCksIHJlZmVy
cmVyID0gcmVmZXJyZXIuaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAgYXV0byBpdGVtID0gYWRv
cHRDRihNREl0ZW1DcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcGF0aC5jcmVhdGVDRlN0cmlu
ZygpLmdldCgpKSk7Ci0gICAgICAgIGlmICghaXRlbSkKLSAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICBhdXRvIHdoZXJlRnJvbUF0dHJpYnV0ZSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJh
eSBhbGxvY10gaW5pdFdpdGhPYmplY3RzOnVybFN0cmluZywgbmlsXSk7Ci0gICAgICAgIGlmICgh
cmVmZXJyZXIuaXNOdWxsKCkpCi0gICAgICAgICAgICBbd2hlcmVGcm9tQXR0cmlidXRlIGFkZE9i
amVjdDpyZWZlcnJlcl07Ci0KLSAgICAgICAgTURJdGVtU2V0QXR0cmlidXRlKGl0ZW0uZ2V0KCks
IGtNREl0ZW1XaGVyZUZyb21zLCAoX19icmlkZ2UgQ0ZBcnJheVJlZil3aGVyZUZyb21BdHRyaWJ1
dGUuZ2V0KCkpOwotICAgICAgICBNREl0ZW1TZXRBdHRyaWJ1dGUoaXRlbS5nZXQoKSwga01ESXRl
bURvd25sb2FkZWREYXRlLCAoX19icmlkZ2UgQ0ZBcnJheVJlZilAWyBbTlNEYXRlIGRhdGVdIF0p
OwotICAgIH0pOwotfQotCi1ib29sIEZpbGVTeXN0ZW06OmNhbkV4Y2x1ZGVGcm9tQmFja3VwKCkK
LXsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBGaWxlU3lzdGVtOjpleGNsdWRlRnJvbUJh
Y2t1cChjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgLy8gSXQgaXMgY3JpdGljYWwgdG8gcGFz
cyBGQUxTRSBmb3IgZXhjbHVkZUJ5UGF0aCBiZWNhdXNlIGV4Y2x1ZGluZyBieSBwYXRoIHJlcXVp
cmVzIHJvb3QgcHJpdmlsZWdlcy4KLSAgICBDU0JhY2t1cFNldEl0ZW1FeGNsdWRlZChGaWxlU3lz
dGVtOjpwYXRoQXNVUkwocGF0aCkuZ2V0KCksIFRSVUUsIEZBTFNFKTsKLSAgICByZXR1cm4gdHJ1
ZTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gUExBVEZPUk0oTUFD
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2Nv
YS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29h
Lm1tCmluZGV4IGQ3ZTNmMzlhNjdiMzczYjgzODc5Yzg0MDljNThiMDg5OGQzNDc5ZWMuLmQ3OWUy
ZjYwYzYwOTQwM2FiZGZjMDJhZWJmNzBhMjZiY2NkZjJmM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KQEAgLTI5LDEzICsyOSwx
MyBAQAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShBVkZPVU5EQVRJT04pCiAKICNp
bmNsdWRlICJBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5o
IgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbVRyYWNrUHJpdmF0
ZS5oIgogI2luY2x1ZGUgIldlYkF1ZGlvQnVmZmVyTGlzdC5oIgogI2luY2x1ZGUgPEFWRm91bmRh
dGlvbi9BVkFzc2V0V3JpdGVyLmg+CiAjaW5jbHVkZSA8QVZGb3VuZGF0aW9uL0FWQXNzZXRXcml0
ZXJJbnB1dC5oPgogI2luY2x1ZGUgPHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oPgorI2luY2x1
ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKIHR5cGVkZWYgQVZBc3NldFdyaXRlciBBVkFzc2V0V3Jp
dGVyVHlwZTsKIHR5cGVkZWYgQVZBc3NldFdyaXRlcklucHV0IEFWQXNzZXRXcml0ZXJJbnB1dFR5
cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRh
RmlsZVJlZmVyZW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JE
YXRhRmlsZVJlZmVyZW5jZS5jcHAKaW5kZXggYjYzZjA2MTJhYmZjYjg2NmRhMGNlZDBhMjM1ZGMx
NTU5M2ZmMDVlZC4uNWFiZmQ3NWNiNDk0NTZlNDJkMzlkNDRkM2JjMjI1OWFhZmZhNTIyNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZl
cmVuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFG
aWxlUmVmZXJlbmNlLmNwcApAQCAtMjcsOCArMjcsOCBAQAogI2luY2x1ZGUgIkJsb2JEYXRhRmls
ZVJlZmVyZW5jZS5oIgogCiAjaW5jbHVkZSAiRmlsZS5oIgotI2luY2x1ZGUgIkZpbGVNZXRhZGF0
YS5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlIDx3dGYvRmlsZU1ldGFkYXRh
Lmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3Ry
eUltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJ
bXBsLmNwcAppbmRleCA4MGI0MWU5NzVlNGQ2MTQzYWY0Yzk5NjExNzU0N2JiODkyZWRhMzE4Li4x
YzcwNmFhMzQ2Y2FkZGVhMzllNTAwZDgwMzA0Y2Q0OTRiZDgyNjgxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAKQEAgLTM1
LDEzICszNSwxMyBAQAogI2luY2x1ZGUgIkJsb2JEYXRhLmgiCiAjaW5jbHVkZSAiQmxvYlBhcnQu
aCIKICNpbmNsdWRlICJCbG9iUmVzb3VyY2VIYW5kbGUuaCIKLSNpbmNsdWRlICJGaWxlTWV0YWRh
dGEuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5o
IgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0
LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0
aW9uSGFuZGxlci5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlTWV0YWRhdGEuaD4KKyNpbmNsdWRlIDx3
dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1Njb3BlLmg+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAK
aW5kZXggYzk0ZTM5NDk0YjhlMzI2ZGI0YTEyYTI3MjAxYTQ2MjM4ZGUxOGM0Yi4uY2M2N2NlNjg4
ZjNiY2EyMjI2OTBiNDNmMTA1ODc4YmE5ZTNjMjhmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcApAQCAtMzUsMTkg
KzM1LDE5IEBACiAjaW5jbHVkZSAiQXN5bmNGaWxlU3RyZWFtLmgiCiAjaW5jbHVkZSAiQmxvYkRh
dGEuaCIKICNpbmNsdWRlICJGaWxlU3RyZWFtLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgog
I2luY2x1ZGUgIkhUVFBIZWFkZXJOYW1lcy5oIgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCiAj
aW5jbHVkZSAiUGFyc2VkQ29udGVudFJhbmdlLmgiCi0jaW5jbHVkZSA8d3RmL1VSTC5oPgogI2lu
Y2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZUNsaWVudC5o
IgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9u
c2UuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlv
bkhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9N
YWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvRm9ybURhdGEuY3BwCmluZGV4IDU0ZTRhYzA0OTYyYTIyMTkwN2UzYjdkODBhNGZiYWNiZTI1
NGIzOTkuLjdiNzZhNWVlZGU5OWY5NDljODFlNjljZmUxYmRiYjg5NmNjYzI2N2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCkBAIC0yOSwxMiArMjks
MTIgQEAKICNpbmNsdWRlICJET01Gb3JtRGF0YS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAj
aW5jbHVkZSAiRmlsZS5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJGb3Jt
RGF0YUJ1aWxkZXIuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVy
LmgiCiAjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUJsb2JS
ZWdpc3RyeS5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvTGluZUVuZGluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNw
cAppbmRleCA5ZTJkODgxZDYzNTQ5MTUyNWQ3MWFmNDU2YzJkMTk1ZmQxM2I5NGQ2Li5hNzRhZTVh
YWM5Y2IyNjIzZGM5Y2E1YThhYTQwYWMzNDAyMTJmMmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAK
QEAgLTMwLDExICszMCwxMSBAQAogI2luY2x1ZGUgIkZvcm1EYXRhU3RyZWFtQ0ZOZXQuaCIKIAog
I2luY2x1ZGUgIkJsb2JEYXRhLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUg
IkZvcm1EYXRhLmgiCiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KICNpbmNsdWRlIDxzeXMvdHlwZXMu
aD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVt
Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5o
PgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tCmlu
ZGV4IDI3ZmY5ZDFjYThlZmExZmRkNmVkZjI4ODY0ODY0Nzk0OWY4ODFhOTYuLjJmZWMxZjM4MzRl
NDExNmExZGQ0Y2ViMWY2MzI4OThkNWVjZTE0MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5t
bQpAQCAtMjgsMTMgKzI4LDEzIEBACiAKICNpZiBQTEFURk9STShDT0NPQSkKIAotI2ltcG9ydCAi
RmlsZVN5c3RlbS5oIgogI2ltcG9ydCAiRm9ybURhdGFTdHJlYW1NYWMuaCIKICNpbXBvcnQgIkhU
VFBIZWFkZXJOYW1lcy5oIgogI2ltcG9ydCAiUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaCIKICNpbXBv
cnQgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIgogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3Vu
ZGF0aW9uLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oPgorI2ltcG9ydCA8
d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0Nvb2tpZUphckRCLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9Db29raWVKYXJEQi5jcHAKaW5kZXggYzIzZmQ3MmYxOTE3MTAyMDgyZTEyMWU0NGQ1OGVk
ZDhhMzJkMWU3MS4uMjYzNjIyODhiODY5ZDhjN2JiMzQxN2Y3NmY0MGI2M2NjNTdmN2E3OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRC
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFy
REIuY3BwCkBAIC0yNiwxMCArMjYsOSBAQAogI2luY2x1ZGUgIkNvb2tpZUphckRCLmgiCiAKICNp
bmNsdWRlICJDb29raWVVdGlsLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKICNpbmNsdWRlICJTUUxpdGVGaWxlU3lzdGVtLmgiCi0KKyNpbmNsdWRlIDx3
dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+CiAjaW5jbHVk
ZSA8d3RmL1VSTC5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5oCmluZGV4IGNiYzQ1ZmVkMmI2MzhlYTYyZDkxMmVjN2Vk
MmQ2NjE0M2I4ZjlkNmIuLjExMDI3Y2UzYjNjZjYzODhmOTk1NGFhZjQ5YzQ5MDNmZTkzZmRmZjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2Fj
aGVFbnRyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
Q2FjaGVFbnRyeS5oCkBAIC0yNiwxMSArMjYsMTEgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNs
dWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiSFRUUEhlYWRlck1hcC5oIgogI2luY2x1ZGUg
IlJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVk
ZSAiUmVzb3VyY2VSZXNwb25zZS5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUg
PHd0Zi9MaXN0SGFzaFNldC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCmluZGV4IDQzYmMyZTdiZmZmNGY5
YmQ2ZjcxMDI4NWQ2ZDNkODYzMWJiNzc4M2EuLmZhNWM4ZDJkMjFiNjI3MzgxNWQwMjNhNGYyMDQ1
NTAxNmU5NjM4YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAKQEAgLTMwLDEyICszMCwxMiBAQAogCiAj
aW5jbHVkZSAiQ3VybENhY2hlTWFuYWdlci5oIgogCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgog
I2luY2x1ZGUgIkhUVFBIZWFkZXJNYXAuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVk
ZSAiUmVzb3VyY2VIYW5kbGVDbGllbnQuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZUludGVy
bmFsLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVT
eXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRm9ybURhdGFTdHJlYW0uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRm9ybURhdGFTdHJlYW0u
aAppbmRleCBjOGVmMzMzZTBkOGMwZTAyOGVjZDhhNDZkODI2YjkwNjcxYTAwZTBjLi4wOWU3ZmRi
YjRhMmNmYWI0YjkwNzMyZjA2MTE0YmUwODExM2JiNTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybEZvcm1EYXRhU3RyZWFtLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxGb3JtRGF0YVN0cmVhbS5oCkBA
IC0yNiw4ICsyNiw4IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5o
IgogI2luY2x1ZGUgIkZvcm1EYXRhLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmgKaW5kZXggZmRj
NGI1OTBjMTQyY2Y2ZGM5ODA3N2Q5Zjc1ZDc4NjU2MzYxOTY5ZC4uOTNjYTYxMDNmZTYzZDVmZjAz
MTA1NWM4MjVkODAyODI3NjRhZWRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmgKQEAgLTMyLDEwICszMiwxMCBAQAogI2luY2x1
ZGUgIkN1cmxSZXF1ZXN0U2NoZWR1bGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ3VybFJlc3BvbnNl
LmgiCiAjaW5jbHVkZSAiQ3VybFNTTFZlcmlmaWVyLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5o
IgogI2luY2x1ZGUgIk5ldHdvcmtMb2FkTWV0cmljcy5oIgogI2luY2x1ZGUgIlByb3RlY3Rpb25T
cGFjZS5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgorI2luY2x1ZGUgPHd0Zi9GaWxl
U3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL01lc3NhZ2VRdWV1ZS5oPgogI2luY2x1ZGUgPHd0Zi9N
b25vdG9uaWNUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29y
a1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAKaW5kZXggY2U5YTJmZmE0MzZmNjUyOTUzYTIwN2I0MTA3
NGMxOTI5NDdmMzJlMi4uMDBlM2QwOGJjZDQ3YjFmNWZhZjA3NTVkMmJmYzVjM2YyMWFmNmM1NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtT
dG9yYWdlU2Vzc2lvbkN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcApAQCAtMzMsMTAgKzMzLDkgQEAK
ICNpbmNsdWRlICJDb29raWVKYXJEQi5oIgogI2luY2x1ZGUgIkNvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFByb3h5LmgiCiAjaW5jbHVkZSAiQ3VybENvbnRleHQuaCIKLSNpbmNsdWRlICJGaWxlU3lz
dGVtLmgiCiAjaW5jbHVkZSAiTmV0d29ya2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJSZXNvdXJj
ZUhhbmRsZS5oIgotCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYv
TWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKaW5kZXggMGVlZTg4MzFhNTMwZTBkOGI4
MGZiMzIyNjA1ZDA0ZmJlNWUyOGEzYi4uMDMyZDRkZDg4ZmZmNzZhMTA3YmE3YTg1MjM1NDM3YWE0
NzdlODBhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKQEAgLTM4LDcgKzM4LDYgQEAKICNpbmNs
dWRlICJDdXJsQ2FjaGVNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiQ3VybENvbnRleHQuaCIKICNpbmNs
dWRlICJDdXJsUmVxdWVzdC5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJI
VFRQUGFyc2Vycy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3JrU3Rv
cmFnZVNlc3Npb24uaCIKQEAgLTQ4LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJTeW5jaHJvbm91c0xv
YWRlckNsaWVudC5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgogI2luY2x1ZGUgPHd0Zi9D
b21wbGV0aW9uSGFuZGxlci5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvQmFzZTY0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Jsb2JEYXRhRmlsZVJlZmVyZW5j
ZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Jsb2JEYXRhRmls
ZVJlZmVyZW5jZU1hYy5tbQppbmRleCBmY2Y1NWQ3NmVhNDVlYmIwNjcwNDNlY2RmYzhjZjA4Y2M5
MjQ2YTI5Li5iNjkyOTIwYjIxZmM2NjM5ZDU3NDVkMWMwNDRlOGI3ODc4MjM1MGQwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9CbG9iRGF0YUZpbGVSZWZl
cmVuY2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQmxv
YkRhdGFGaWxlUmVmZXJlbmNlTWFjLm1tCkBAIC0yOCw4ICsyOCw4IEBACiAKICNpZiBFTkFCTEUo
RklMRV9SRVBMQUNFTUVOVCkKIAotI2luY2x1ZGUgIkZpbGVNZXRhZGF0YS5oIgotI2luY2x1ZGUg
IkZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlIDx3dGYvRmlsZU1ldGFkYXRhLmg+CisjaW5jbHVkZSA8
d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvU29mdExpbmtpbmcuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKaW5kZXggNjM3MzRj
Njc0YzUyZWU5NWRjNmM5ZTQyMWM0NjYwZjQxODQwMGJhYS4uMDgxNWVhNjg4ZTc2NjkyN2U2NjNk
NDA1NjE0OWRiZDM2OGU2NDZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKQEAgLTMyLDcgKzMy
LDYgQEAKICNpZiBVU0UoU09VUCkKIAogI2luY2x1ZGUgIkNyZWRlbnRpYWxTdG9yYWdlLmgiCi0j
aW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkdVbmlxdWVQdHJTb3VwLmgiCiAjaW5j
bHVkZSAiSFRUUFBhcnNlcnMuaCIKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCkBAIC01
Nyw2ICs1Niw3IEBACiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAjZW5kaWYKICNpbmNsdWRlIDx3dGYv
Q29tcGxldGlvbkhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1
ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9SdW5Mb29wU291cmNl
UHJpb3JpdHkuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Np
b24uY3BwCmluZGV4IDM0M2ZhZWI5ZmViMjE5NGNjYzNlZjc3OWQ3N2QzZjZiNGQxZWRjODcuLmI5
Njc3OTU5ODBlZThmYTRjOTk1MDBmZmRmMzRiNDIwMmViMmEyZGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Np
b24uY3BwCkBAIC0zMCwxMyArMzAsMTMgQEAKICNpbmNsdWRlICJTb3VwTmV0d29ya1Nlc3Npb24u
aCIKIAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgiCi0jaW5jbHVkZSAiRmls
ZVN5c3RlbS5oIgogI2luY2x1ZGUgIkdVbmlxdWVQdHJTb3VwLmgiCiAjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgogI2luY2x1ZGUgIlNvdXBOZXR3b3JrUHJveHlTZXR0aW5ncy5oIgogI2luY2x1ZGUgPGds
aWIvZ3N0ZGlvLmg+CiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+CiAjaW5jbHVkZSA8cGFsL2Ny
eXB0by9DcnlwdG9EaWdlc3QuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1
ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
cG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
OTQ4NTEzNTI1MThkNjA2YmVhMjVlZWVhMzM2MTg1MjgwMzM0Y2ZjYy4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9w
b3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDkzICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgot
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBs
ZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICog
ICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
LSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgotCi0jaW5jbHVkZSAiRmls
ZU1ldGFkYXRhLmgiCi0jaW5jbHVkZSA8ZGlyZW50Lmg+Ci0jaW5jbHVkZSA8ZXJybm8uaD4KLSNp
bmNsdWRlIDxmY250bC5oPgotI2luY2x1ZGUgPGZubWF0Y2guaD4KLSNpbmNsdWRlIDxsaWJnZW4u
aD4KLSNpbmNsdWRlIDxzdGRpby5oPgotI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0jaW5jbHVkZSA8
c3lzL3N0YXR2ZnMuaD4KLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpbmNsdWRlIDx1bmlzdGQu
aD4KLSNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+Ci0jaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIEZp
bGVTeXN0ZW0gewotCi1ib29sIGZpbGVFeGlzdHMoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAg
IGlmIChwYXRoLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBDU3RyaW5n
IGZzUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwotCi0gICAgaWYgKCFmc1Jl
cC5kYXRhKCkgfHwgZnNSZXAuZGF0YSgpWzBdID09ICdcMCcpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIHJldHVybiBhY2Nlc3MoZnNSZXAuZGF0YSgpLCBGX09LKSAhPSAtMTsKLX0KLQot
Ym9vbCBkZWxldGVGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBDU3RyaW5nIGZzUmVw
ID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwotCi0gICAgaWYgKCFmc1JlcC5kYXRh
KCkgfHwgZnNSZXAuZGF0YSgpWzBdID09ICdcMCcpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQot
ICAgIC8vIHVubGluayguLi4pIHJldHVybnMgMCBvbiBzdWNjZXNzZnVsIGRlbGV0aW9uIG9mIHRo
ZSBwYXRoIGFuZCBub24temVybyBpbiBhbnkgb3RoZXIgY2FzZSAoaW5jbHVkaW5nIGludmFsaWQg
cGVybWlzc2lvbnMgb3Igbm9uLWV4aXN0ZW50IGZpbGUpCi0gICAgcmV0dXJuICF1bmxpbmsoZnNS
ZXAuZGF0YSgpKTsKLX0KLQotUGxhdGZvcm1GaWxlSGFuZGxlIG9wZW5GaWxlKGNvbnN0IFN0cmlu
ZyYgcGF0aCwgRmlsZU9wZW5Nb2RlIG1vZGUpCi17Ci0gICAgQ1N0cmluZyBmc1JlcCA9IGZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKLQotICAgIGlmIChmc1JlcC5pc051bGwoKSkKLSAg
ICAgICAgcmV0dXJuIGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7Ci0KLSAgICBpbnQgcGxhdGZv
cm1GbGFnID0gMDsKLSAgICBpZiAobW9kZSA9PSBGaWxlT3Blbk1vZGU6OlJlYWQpCi0gICAgICAg
IHBsYXRmb3JtRmxhZyB8PSBPX1JET05MWTsKLSAgICBlbHNlIGlmIChtb2RlID09IEZpbGVPcGVu
TW9kZTo6V3JpdGUpCi0gICAgICAgIHBsYXRmb3JtRmxhZyB8PSAoT19XUk9OTFkgfCBPX0NSRUFU
IHwgT19UUlVOQyk7Ci0jaWYgT1MoREFSV0lOKQotICAgIGVsc2UgaWYgKG1vZGUgPT0gRmlsZU9w
ZW5Nb2RlOjpFdmVudHNPbmx5KQotICAgICAgICBwbGF0Zm9ybUZsYWcgfD0gT19FVlRPTkxZOwot
I2VuZGlmCi0KLSAgICByZXR1cm4gb3Blbihmc1JlcC5kYXRhKCksIHBsYXRmb3JtRmxhZywgMDY2
Nik7Ci19Ci0KLXZvaWQgY2xvc2VGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKQotewot
ICAgIGlmIChpc0hhbmRsZVZhbGlkKGhhbmRsZSkpIHsKLSAgICAgICAgY2xvc2UoaGFuZGxlKTsK
LSAgICAgICAgaGFuZGxlID0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKLSAgICB9Ci19Ci0K
LWxvbmcgbG9uZyBzZWVrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBsb25nIGxvbmcg
b2Zmc2V0LCBGaWxlU2Vla09yaWdpbiBvcmlnaW4pCi17Ci0gICAgaW50IHdoZW5jZSA9IFNFRUtf
U0VUOwotICAgIHN3aXRjaCAob3JpZ2luKSB7Ci0gICAgY2FzZSBGaWxlU2Vla09yaWdpbjo6QmVn
aW5uaW5nOgotICAgICAgICB3aGVuY2UgPSBTRUVLX1NFVDsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBGaWxlU2Vla09yaWdpbjo6Q3VycmVudDoKLSAgICAgICAgd2hlbmNlID0gU0VFS19DVVI7
Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRmlsZVNlZWtPcmlnaW46OkVuZDoKLSAgICAgICAg
d2hlbmNlID0gU0VFS19FTkQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8bG9u
ZyBsb25nPihsc2VlayhoYW5kbGUsIG9mZnNldCwgd2hlbmNlKSk7Ci19Ci0KLWJvb2wgdHJ1bmNh
dGVGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQpCi17Ci0g
ICAgLy8gZnRydW5jYXRlIHJldHVybnMgMCB0byBpbmRpY2F0ZSB0aGUgc3VjY2Vzcy4KLSAgICBy
ZXR1cm4gIWZ0cnVuY2F0ZShoYW5kbGUsIG9mZnNldCk7Ci19Ci0KLWludCB3cml0ZVRvRmlsZShQ
bGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQot
ewotICAgIGRvIHsKLSAgICAgICAgaW50IGJ5dGVzV3JpdHRlbiA9IHdyaXRlKGhhbmRsZSwgZGF0
YSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5ndGgpKTsKLSAgICAgICAgaWYgKGJ5dGVzV3JpdHRl
biA+PSAwKQotICAgICAgICAgICAgcmV0dXJuIGJ5dGVzV3JpdHRlbjsKLSAgICB9IHdoaWxlIChl
cnJubyA9PSBFSU5UUik7Ci0gICAgcmV0dXJuIC0xOwotfQotCi1pbnQgcmVhZEZyb21GaWxlKFBs
YXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCi17Ci0gICAg
ZG8gewotICAgICAgICBpbnQgYnl0ZXNSZWFkID0gcmVhZChoYW5kbGUsIGRhdGEsIHN0YXRpY19j
YXN0PHNpemVfdD4obGVuZ3RoKSk7Ci0gICAgICAgIGlmIChieXRlc1JlYWQgPj0gMCkKLSAgICAg
ICAgICAgIHJldHVybiBieXRlc1JlYWQ7Ci0gICAgfSB3aGlsZSAoZXJybm8gPT0gRUlOVFIpOwot
ICAgIHJldHVybiAtMTsKLX0KLQotI2lmIFVTRShGSUxFX0xPQ0spCi1ib29sIGxvY2tGaWxlKFBs
YXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIE9wdGlvblNldDxGaWxlTG9ja01vZGU+IGxvY2tNb2Rl
KQotewotICAgIENPTVBJTEVfQVNTRVJUKExPQ0tfU0ggPT0gV1RGOjplbnVtVG9VbmRlcmx5aW5n
VHlwZShGaWxlTG9ja01vZGU6OlNoYXJlZCksIExvY2tTaGFyZWRFbmNvZGluZ0lzQXNFeHBlY3Rl
ZCk7Ci0gICAgQ09NUElMRV9BU1NFUlQoTE9DS19FWCA9PSBXVEY6OmVudW1Ub1VuZGVybHlpbmdU
eXBlKEZpbGVMb2NrTW9kZTo6RXhjbHVzaXZlKSwgTG9ja0V4Y2x1c2l2ZUVuY29kaW5nSXNBc0V4
cGVjdGVkKTsKLSAgICBDT01QSUxFX0FTU0VSVChMT0NLX05CID09IFdURjo6ZW51bVRvVW5kZXJs
eWluZ1R5cGUoRmlsZUxvY2tNb2RlOjpOb25ibG9ja2luZyksIExvY2tOb25ibG9ja2luZ0VuY29k
aW5nSXNBc0V4cGVjdGVkKTsKLSAgICBpbnQgcmVzdWx0ID0gZmxvY2soaGFuZGxlLCBsb2NrTW9k
ZS50b1JhdygpKTsKLSAgICByZXR1cm4gKHJlc3VsdCAhPSAtMSk7Ci19Ci0KLWJvb2wgdW5sb2Nr
RmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlKQotewotICAgIGludCByZXN1bHQgPSBmbG9j
ayhoYW5kbGUsIExPQ0tfVU4pOwotICAgIHJldHVybiAocmVzdWx0ICE9IC0xKTsKLX0KLSNlbmRp
ZgotCi0jaWYgIVBMQVRGT1JNKE1BQykKLWJvb2wgZGVsZXRlRW1wdHlEaXJlY3RvcnkoY29uc3Qg
U3RyaW5nJiBwYXRoKQotewotICAgIENTdHJpbmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24ocGF0aCk7Ci0KLSAgICBpZiAoIWZzUmVwLmRhdGEoKSB8fCBmc1JlcC5kYXRhKClbMF0g
PT0gJ1wwJykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gcm1kaXIoLi4uKSByZXR1
cm5zIDAgb24gc3VjY2Vzc2Z1bCBkZWxldGlvbiBvZiB0aGUgcGF0aCBhbmQgbm9uLXplcm8gaW4g
YW55IG90aGVyIGNhc2UgKGluY2x1ZGluZyBpbnZhbGlkIHBlcm1pc3Npb25zIG9yIG5vbi1leGlz
dGVudCBmaWxlKQotICAgIHJldHVybiAhcm1kaXIoZnNSZXAuZGF0YSgpKTsKLX0KLSNlbmRpZgot
Ci1ib29sIGdldEZpbGVTaXplKGNvbnN0IFN0cmluZyYgcGF0aCwgbG9uZyBsb25nJiByZXN1bHQp
Ci17Ci0gICAgQ1N0cmluZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsK
LQotICAgIGlmICghZnNSZXAuZGF0YSgpIHx8IGZzUmVwLmRhdGEoKVswXSA9PSAnXDAnKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBzdHJ1Y3Qgc3RhdCBmaWxlSW5mbzsKLQotICAgIGlm
IChzdGF0KGZzUmVwLmRhdGEoKSwgJmZpbGVJbmZvKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgcmVzdWx0ID0gZmlsZUluZm8uc3Rfc2l6ZTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQot
Ym9vbCBnZXRGaWxlU2l6ZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBsb25nIGxvbmcmIHJl
c3VsdCkKLXsKLSAgICBzdHJ1Y3Qgc3RhdCBmaWxlSW5mbzsKLSAgICBpZiAoZnN0YXQoaGFuZGxl
LCAmZmlsZUluZm8pKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXN1bHQgPSBmaWxl
SW5mby5zdF9zaXplOwotICAgIHJldHVybiB0cnVlOwotfQotCi1PcHRpb25hbDxXYWxsVGltZT4g
Z2V0RmlsZUNyZWF0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0jaWYgT1MoREFSV0lO
KSB8fCBPUyhPUEVOQlNEKSB8fCBPUyhORVRCU0QpIHx8IE9TKEZSRUVCU0QpCi0gICAgQ1N0cmlu
ZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKLQotICAgIGlmICghZnNS
ZXAuZGF0YSgpIHx8IGZzUmVwLmRhdGEoKVswXSA9PSAnXDAnKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwotCi0gICAgc3RydWN0IHN0YXQgZmlsZUluZm87Ci0KLSAgICBpZiAoc3RhdChm
c1JlcC5kYXRhKCksICZmaWxlSW5mbykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0K
LSAgICByZXR1cm4gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKGZpbGVJbmZvLnN0X2JpcnRodGlt
ZSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShwYXRoKTsKLSAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwotI2VuZGlmCi19Ci0KLU9wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlTW9kaWZpY2F0aW9u
VGltZShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgQ1N0cmluZyBmc1JlcCA9IGZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKLQotICAgIGlmICghZnNSZXAuZGF0YSgpIHx8IGZzUmVw
LmRhdGEoKVswXSA9PSAnXDAnKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAg
c3RydWN0IHN0YXQgZmlsZUluZm87Ci0KLSAgICBpZiAoc3RhdChmc1JlcC5kYXRhKCksICZmaWxl
SW5mbykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICByZXR1cm4gV2FsbFRp
bWU6OmZyb21SYXdTZWNvbmRzKGZpbGVJbmZvLnN0X210aW1lKTsKLX0KLQotc3RhdGljIEZpbGVN
ZXRhZGF0YTo6VHlwZSB0b0ZpbGVNZXRhdGFUeXBlKHN0cnVjdCBzdGF0IGZpbGVJbmZvKQotewot
ICAgIGlmIChTX0lTRElSKGZpbGVJbmZvLnN0X21vZGUpKQotICAgICAgICByZXR1cm4gRmlsZU1l
dGFkYXRhOjpUeXBlOjpEaXJlY3Rvcnk7Ci0gICAgaWYgKFNfSVNMTksoZmlsZUluZm8uc3RfbW9k
ZSkpCi0gICAgICAgIHJldHVybiBGaWxlTWV0YWRhdGE6OlR5cGU6OlN5bWJvbGljTGluazsKLSAg
ICByZXR1cm4gRmlsZU1ldGFkYXRhOjpUeXBlOjpGaWxlOwotfQotCi1zdGF0aWMgT3B0aW9uYWw8
RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGFVc2luZ0Z1bmN0aW9uKGNvbnN0IFN0cmluZyYgcGF0
aCwgaW50ICgqc3RhdEZ1bmMpKGNvbnN0IGNoYXIqLCBzdHJ1Y3Qgc3RhdCopKQotewotICAgIENT
dHJpbmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7Ci0KLSAgICBpZiAo
IWZzUmVwLmRhdGEoKSB8fCBmc1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKLQotICAgIHN0cnVjdCBzdGF0IGZpbGVJbmZvOwotICAgIGlmIChzdGF0
RnVuYyhmc1JlcC5kYXRhKCksICZmaWxlSW5mbykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7Ci0KLSAgICBTdHJpbmcgZmlsZW5hbWUgPSBwYXRoR2V0RmlsZU5hbWUocGF0aCk7Ci0gICAg
Ym9vbCBpc0hpZGRlbiA9ICFmaWxlbmFtZS5pc0VtcHR5KCkgJiYgZmlsZW5hbWVbMF0gPT0gJy4n
OwotICAgIHJldHVybiBGaWxlTWV0YWRhdGEgewotICAgICAgICBXYWxsVGltZTo6ZnJvbVJhd1Nl
Y29uZHMoZmlsZUluZm8uc3RfbXRpbWUpLAotICAgICAgICBmaWxlSW5mby5zdF9zaXplLAotICAg
ICAgICBpc0hpZGRlbiwKLSAgICAgICAgdG9GaWxlTWV0YXRhVHlwZShmaWxlSW5mbykKLSAgICB9
OwotfQotCi1PcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YShjb25zdCBTdHJpbmcm
IHBhdGgpCi17Ci0gICAgcmV0dXJuIGZpbGVNZXRhZGF0YVVzaW5nRnVuY3Rpb24ocGF0aCwgJmxz
dGF0KTsKLX0KLQotT3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGFGb2xsb3dpbmdT
eW1saW5rcyhjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgcmV0dXJuIGZpbGVNZXRhZGF0YVVz
aW5nRnVuY3Rpb24ocGF0aCwgJnN0YXQpOwotfQotCi1ib29sIGNyZWF0ZVN5bWJvbGljTGluayhj
b25zdCBTdHJpbmcmIHRhcmdldFBhdGgsIGNvbnN0IFN0cmluZyYgc3ltYm9saWNMaW5rUGF0aCkK
LXsKLSAgICBDU3RyaW5nIHRhcmdldFBhdGhGU1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bih0YXJnZXRQYXRoKTsKLSAgICBpZiAoIXRhcmdldFBhdGhGU1JlcC5kYXRhKCkgfHwgdGFyZ2V0
UGF0aEZTUmVwLmRhdGEoKVswXSA9PSAnXDAnKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICBDU3RyaW5nIHN5bWJvbGljTGlua1BhdGhGU1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihzeW1ib2xpY0xpbmtQYXRoKTsKLSAgICBpZiAoIXN5bWJvbGljTGlua1BhdGhGU1JlcC5kYXRh
KCkgfHwgc3ltYm9saWNMaW5rUGF0aEZTUmVwLmRhdGEoKVswXSA9PSAnXDAnKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gIXN5bWxpbmsodGFyZ2V0UGF0aEZTUmVwLmRhdGEo
KSwgc3ltYm9saWNMaW5rUGF0aEZTUmVwLmRhdGEoKSk7Ci19Ci0KLVN0cmluZyBwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGNvbXBvbmVu
dCkKLXsKLSAgICBpZiAocGF0aC5lbmRzV2l0aCgnLycpKQotICAgICAgICByZXR1cm4gcGF0aCAr
IGNvbXBvbmVudDsKLSAgICByZXR1cm4gcGF0aCArICIvIiArIGNvbXBvbmVudDsKLX0KLQotU3Ry
aW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMoU3RyaW5nVmlldyBwYXRoLCBjb25zdCBWZWN0
b3I8U3RyaW5nVmlldz4mIGNvbXBvbmVudHMpCi17Ci0gICAgU3RyaW5nQnVpbGRlciBidWlsZGVy
OwotICAgIGJ1aWxkZXIuYXBwZW5kKHBhdGgpOwotICAgIGZvciAoYXV0byYgY29tcG9uZW50IDog
Y29tcG9uZW50cykgewotICAgICAgICBidWlsZGVyLmFwcGVuZCgnLycpOwotICAgICAgICBidWls
ZGVyLmFwcGVuZChjb21wb25lbnQpOwotICAgIH0KLSAgICByZXR1cm4gYnVpbGRlci50b1N0cmlu
ZygpOwotfQotCi1ib29sIG1ha2VBbGxEaXJlY3Rvcmllcyhjb25zdCBTdHJpbmcmIHBhdGgpCi17
Ci0gICAgQ1N0cmluZyBmdWxsUGF0aCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsK
LSAgICBpZiAoIWFjY2VzcyhmdWxsUGF0aC5kYXRhKCksIEZfT0spKQotICAgICAgICByZXR1cm4g
dHJ1ZTsKLQotICAgIGNoYXIqIHAgPSBmdWxsUGF0aC5tdXRhYmxlRGF0YSgpICsgMTsKLSAgICBp
bnQgbGVuZ3RoID0gZnVsbFBhdGgubGVuZ3RoKCk7Ci0KLSAgICBpZihwW2xlbmd0aCAtIDFdID09
ICcvJykKLSAgICAgICAgcFtsZW5ndGggLSAxXSA9ICdcMCc7Ci0gICAgZm9yICg7ICpwOyArK3Ap
Ci0gICAgICAgIGlmICgqcCA9PSAnLycpIHsKLSAgICAgICAgICAgICpwID0gJ1wwJzsKLSAgICAg
ICAgICAgIGlmIChhY2Nlc3MoZnVsbFBhdGguZGF0YSgpLCBGX09LKSkKLSAgICAgICAgICAgICAg
ICBpZiAobWtkaXIoZnVsbFBhdGguZGF0YSgpLCBTX0lSV1hVKSkKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgKnAgPSAnLyc7Ci0gICAgICAgIH0KLSAgICBp
ZiAoYWNjZXNzKGZ1bGxQYXRoLmRhdGEoKSwgRl9PSykpCi0gICAgICAgIGlmIChta2RpcihmdWxs
UGF0aC5kYXRhKCksIFNfSVJXWFUpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
cmV0dXJuIHRydWU7Ci19Ci0KLVN0cmluZyBwYXRoR2V0RmlsZU5hbWUoY29uc3QgU3RyaW5nJiBw
YXRoKQotewotICAgIHJldHVybiBwYXRoLnN1YnN0cmluZyhwYXRoLnJldmVyc2VGaW5kKCcvJykg
KyAxKTsKLX0KLQotU3RyaW5nIGRpcmVjdG9yeU5hbWUoY29uc3QgU3RyaW5nJiBwYXRoKQotewot
ICAgIENTdHJpbmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7Ci0KLSAg
ICBpZiAoIWZzUmVwLmRhdGEoKSB8fCBmc1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKLSAgICAgICAg
cmV0dXJuIFN0cmluZygpOwotCi0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoZGlybmFtZShm
c1JlcC5tdXRhYmxlRGF0YSgpKSk7Ci19Ci0KLVZlY3RvcjxTdHJpbmc+IGxpc3REaXJlY3Rvcnko
Y29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGZpbHRlcikKLXsKLSAgICBWZWN0b3I8
U3RyaW5nPiBlbnRyaWVzOwotICAgIENTdHJpbmcgY3BhdGggPSBmaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24ocGF0aCk7Ci0gICAgQ1N0cmluZyBjZmlsdGVyID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKGZpbHRlcik7Ci0gICAgRElSKiBkaXIgPSBvcGVuZGlyKGNwYXRoLmRhdGEoKSk7Ci0gICAg
aWYgKGRpcikgewotICAgICAgICBzdHJ1Y3QgZGlyZW50KiBkcDsKLSAgICAgICAgd2hpbGUgKChk
cCA9IHJlYWRkaXIoZGlyKSkpIHsKLSAgICAgICAgICAgIGNvbnN0IGNoYXIqIG5hbWUgPSBkcC0+
ZF9uYW1lOwotICAgICAgICAgICAgaWYgKCFzdHJjbXAobmFtZSwgIi4iKSB8fCAhc3RyY21wKG5h
bWUsICIuLiIpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaWYgKGZu
bWF0Y2goY2ZpbHRlci5kYXRhKCksIG5hbWUsIDApKQotICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICAgICAgY2hhciBmaWxlUGF0aFtQQVRIX01BWF07Ci0gICAgICAgICAgICBpZiAo
c3RhdGljX2Nhc3Q8aW50PihzaXplb2YoZmlsZVBhdGgpIC0gMSkgPCBzbnByaW50ZihmaWxlUGF0
aCwgc2l6ZW9mKGZpbGVQYXRoKSwgIiVzLyVzIiwgY3BhdGguZGF0YSgpLCBuYW1lKSkKLSAgICAg
ICAgICAgICAgICBjb250aW51ZTsgLy8gYnVmZmVyIG92ZXJmbG93Ci0KLSAgICAgICAgICAgIGF1
dG8gc3RyaW5nID0gc3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWxlUGF0aCk7
Ci0KLSAgICAgICAgICAgIC8vIFNvbWUgZmlsZSBzeXN0ZW0gcmVwcmVzZW50YXRpb25zIGNhbm5v
dCBiZSByZXByZXNlbnRlZCBhcyBhIFVURi0xNiBzdHJpbmcsCi0gICAgICAgICAgICAvLyBzbyB0
aGlzIHN0cmluZyBtaWdodCBiZSBudWxsLgotICAgICAgICAgICAgaWYgKCFzdHJpbmcuaXNOdWxs
KCkpCi0gICAgICAgICAgICAgICAgZW50cmllcy5hcHBlbmQoV1RGTW92ZShzdHJpbmcpKTsKLSAg
ICAgICAgfQotICAgICAgICBjbG9zZWRpcihkaXIpOwotICAgIH0KLSAgICByZXR1cm4gZW50cmll
czsKLX0KLQotI2lmICFQTEFURk9STShDT0NPQSkKLVN0cmluZyBzdHJpbmdGcm9tRmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKGNvbnN0IGNoYXIqIHBhdGgpCi17Ci0gICAgaWYgKCFwYXRoKQotICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChwYXRo
KTsKLX0KLQotQ1N0cmluZyBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBw
YXRoKQotewotICAgIHJldHVybiBwYXRoLnV0ZjgoKTsKLX0KLQotYm9vbCBtb3ZlRmlsZShjb25z
dCBTdHJpbmcmIG9sZFBhdGgsIGNvbnN0IFN0cmluZyYgbmV3UGF0aCkKLXsKLSAgICBhdXRvIG9s
ZEZpbGVuYW1lID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKG9sZFBhdGgpOwotICAgIGlmIChv
bGRGaWxlbmFtZS5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYXV0byBu
ZXdGaWxlbmFtZSA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihuZXdQYXRoKTsKLSAgICBpZiAo
bmV3RmlsZW5hbWUuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVy
biByZW5hbWUob2xkRmlsZW5hbWUuZGF0YSgpLCBuZXdGaWxlbmFtZS5kYXRhKCkpICE9IC0xOwot
fQotCi1ib29sIGdldFZvbHVtZUZyZWVTcGFjZShjb25zdCBTdHJpbmcmIHBhdGgsIHVpbnQ2NF90
JiBmcmVlU3BhY2UpCi17Ci0gICAgc3RydWN0IHN0YXR2ZnMgZmlsZVN5c3RlbVN0YXQ7Ci0gICAg
aWYgKHN0YXR2ZnMoZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSwgJmZpbGVT
eXN0ZW1TdGF0KSkgewotICAgICAgICBmcmVlU3BhY2UgPSBmaWxlU3lzdGVtU3RhdC5mX2JhdmFp
bCAqIGZpbGVTeXN0ZW1TdGF0LmZfZnJzaXplOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9
Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotI2VuZGlmCi0KLSNpZiAhT1MoREFSV0lOKQotU3RyaW5n
IG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5k
bGUmIGhhbmRsZSkKLXsKLSAgICBjaGFyIGJ1ZmZlcltQQVRIX01BWF07Ci0gICAgY29uc3QgY2hh
ciogdG1wRGlyID0gZ2V0ZW52KCJUTVBESVIiKTsKLQotICAgIGlmICghdG1wRGlyKQotICAgICAg
ICB0bXBEaXIgPSAiL3RtcCI7Ci0KLSAgICBpZiAoc25wcmludGYoYnVmZmVyLCBQQVRIX01BWCwg
IiVzLyVzWFhYWFhYIiwgdG1wRGlyLCBwcmVmaXgudXRmOCgpLmRhdGEoKSkgPj0gUEFUSF9NQVgp
Ci0gICAgICAgIGdvdG8gZW5kOwotCi0gICAgaGFuZGxlID0gbWtzdGVtcChidWZmZXIpOwotICAg
IGlmIChoYW5kbGUgPCAwKQotICAgICAgICBnb3RvIGVuZDsKLQotICAgIHJldHVybiBTdHJpbmc6
OmZyb21VVEY4KGJ1ZmZlcik7Ci0KLWVuZDoKLSAgICBoYW5kbGUgPSBpbnZhbGlkUGxhdGZvcm1G
aWxlSGFuZGxlOwotICAgIHJldHVybiBTdHJpbmcoKTsKLX0KLSNlbmRpZgotCi1ib29sIGhhcmRM
aW5rT3JDb3B5RmlsZShjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiBkZXN0aW5h
dGlvbikKLXsKLSAgICBpZiAoc291cmNlLmlzRW1wdHkoKSB8fCBkZXN0aW5hdGlvbi5pc0VtcHR5
KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIENTdHJpbmcgZnNTb3VyY2UgPSBmaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oc291cmNlKTsKLSAgICBpZiAoIWZzU291cmNlLmRhdGEoKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgQ1N0cmluZyBmc0Rlc3RpbmF0aW9uID0gZmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRlc3RpbmF0aW9uKTsKLSAgICBpZiAoIWZzRGVzdGluYXRp
b24uZGF0YSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIWxpbmsoZnNTb3Vy
Y2UuZGF0YSgpLCBmc0Rlc3RpbmF0aW9uLmRhdGEoKSkpCi0gICAgICAgIHJldHVybiB0cnVlOwot
Ci0gICAgLy8gSGFyZCBsaW5rIGZhaWxlZC4gUGVyZm9ybSBhIGNvcHkgaW5zdGVhZC4KLSAgICBh
dXRvIGhhbmRsZSA9IG9wZW4oZnNEZXN0aW5hdGlvbi5kYXRhKCksIE9fV1JPTkxZIHwgT19DUkVB
VCB8IE9fRVhDTCwgMDY2Nik7Ci0gICAgaWYgKGhhbmRsZSA9PSAtMSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgYm9vbCBhcHBlbmRSZXN1bHQgPSBhcHBlbmRGaWxlQ29udGVudHNUb0Zp
bGVIYW5kbGUoc291cmNlLCBoYW5kbGUpOwotICAgIGNsb3NlKGhhbmRsZSk7Ci0KLSAgICAvLyBJ
ZiB0aGUgY29weSBmYWlsZWQsIGRlbGV0ZSB0aGUgdW51c2FibGUgZmlsZS4KLSAgICBpZiAoIWFw
cGVuZFJlc3VsdCkKLSAgICAgICAgdW5saW5rKGZzRGVzdGluYXRpb24uZGF0YSgpKTsKLQotICAg
IHJldHVybiBhcHBlbmRSZXN1bHQ7Ci19Ci0KLU9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZp
Y2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCi17Ci0gICAgc3RydWN0IHN0YXQgZmlsZVN0YXQ7
Ci0gICAgaWYgKHN0YXQoZnNGaWxlLmRhdGEoKSwgJmZpbGVTdGF0KSA9PSAtMSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIHJldHVybiBmaWxlU3RhdC5zdF9kZXY7Ci19Ci0K
LVN0cmluZyByZWFsUGF0aChjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQotewotICAgIENTdHJpbmcg
ZnNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZVBhdGgpOwotICAgIGNoYXIgcmVz
b2x2ZWROYW1lW1BBVEhfTUFYXTsKLSAgICBjb25zdCBjaGFyKiByZXN1bHQgPSByZWFscGF0aChm
c1JlcC5kYXRhKCksIHJlc29sdmVkTmFtZSk7Ci0gICAgcmV0dXJuIHJlc3VsdCA/IFN0cmluZzo6
ZnJvbVVURjgocmVzdWx0KSA6IGZpbGVQYXRoOwotfQotCi19IC8vIG5hbWVzcGFjZSBGaWxlU3lz
dGVtCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQT1NJWC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQT1NJWC5jcHAKaW5kZXggNTEzMzc1ZDI0NWVmNDVjMTk2
YTg1NDYxNWNlNzBiNzhhOTBjZWNmZi4uOGVkNTcxNzQ3NzhjYjdiZGFkY2EzNjUxN2ZkNzk0NDU3
MzhjNTJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvU2hhcmVk
QnVmZmVyUE9TSVguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L1NoYXJl
ZEJ1ZmZlclBPU0lYLmNwcApAQCAtMjYsMTEgKzI2LDEwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCi0K
ICNpbmNsdWRlIDxmY250bC5oPgogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAjaW5jbHVkZSA8dW5p
c3RkLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcAppbmRleCA5MGMyMGM3YmNlNmE2N2I2N2Q1
M2Q1YzQwNTM3NzZiZjE0YzdlNWU1Li4zNjRiZmY3MTA3NDk3ODk2ZjdiMWQ3NTdhN2Q5YTVmYzNh
ZDNmNjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmls
ZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVT
eXN0ZW0uY3BwCkBAIC0zMSwxMCArMzEsMTAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJTUUxpdGVGaWxlU3lzdGVtLmgiCiAKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5j
bHVkZSAiU1FMaXRlRGF0YWJhc2UuaCIKICNpbmNsdWRlICJTUUxpdGVTdGF0ZW1lbnQuaCIKICNp
bmNsdWRlIDxzcWxpdGUzLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAjaW5jbHVkZSA8cGFsL3NwaS9pb3MvU1FMaXRlM1NQSS5oPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9oeXBoZW4vSHlwaGVuYXRp
b25MaWJIeXBoZW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9oeXBoZW4vSHlw
aGVuYXRpb25MaWJIeXBoZW4uY3BwCmluZGV4IDJkN2I2NmQ5Mzc5MDVkY2MyMmY0YTEzZTk1YTBh
ZjA2YmI0OGI3YWYuLjVlZWI5YmZhNzQwMGY3MjE1YzAyNmM1NTJkODJhYTM4YTc2M2Y5NDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaHlwaGVuL0h5cGhlbmF0aW9u
TGliSHlwaGVuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2h5cGhlbi9I
eXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAKQEAgLTI5LDEwICsyOSwxMCBAQAogCiAjaWYgVVNFKExJ
QkhZUEhFTikKIAotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlIDxoeXBoZW4uaD4K
ICNpbmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8d3RmL0Zp
bGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9UaW55TFJVQ2FjaGUuaD4KQEAgLTIyNCw3ICsy
MjQsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUmVmUHRyPFdlYkNvcmU6Okh5cGhlbmF0aW9u
RGljdGlvbmFyeT4gY3JlYXRlVmFsdWVGb3JLZXkoY29uc3QgQXRvbWljU3RyaW5nJiBkaWN0aW9u
YXJ5UGF0aCkKICAgICB7Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpIeXBoZW5hdGlvbkRpY3Rp
b25hcnk6OmNyZWF0ZShXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oZGljdGlvbmFyeVBhdGguc3RyaW5nKCkpKTsKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6Okh5
cGhlbmF0aW9uRGljdGlvbmFyeTo6Y3JlYXRlKEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihkaWN0aW9uYXJ5UGF0aC5zdHJpbmcoKSkpOwogICAgIH0KIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2luLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2luLmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggYmI3MDJjYjAxMjBhYmJmMjU4NTI5ZmFmOTQzMTBkZGZmZmRmNjA4NC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdpbi5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1
ODkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNy0yMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwOCBDb2xsYWJvcmEsIEx0ZC4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAotICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAotICogMy4gIE5laXRoZXIg
dGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAg
IGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgi
Ci0KLSNpbmNsdWRlICJGaWxlTWV0YWRhdGEuaCIKLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5o
IgotI2luY2x1ZGUgIlBhdGhXYWxrZXIuaCIKLSNpbmNsdWRlIDxpby5oPgotI2luY2x1ZGUgPHNo
bG9iai5oPgotI2luY2x1ZGUgPHNobHdhcGkuaD4KLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgotI2lu
Y2x1ZGUgPHdpbmRvd3MuaD4KLSNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21O
dW1iZXIuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+Ci0jaW5jbHVkZSA8
d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotbmFtZXNwYWNlIEZpbGVTeXN0ZW0gewotCi1zdGF0aWMgY29uc3QgVUxPTkdMT05HIGtTZWNv
bmRzRnJvbUZpbGVUaW1lVG9UaW1ldCA9IDExNjQ0NDczNjAwOwotCi1zdGF0aWMgYm9vbCBnZXRG
aW5kRGF0YShTdHJpbmcgcGF0aCwgV0lOMzJfRklORF9EQVRBVyYgZmluZERhdGEpCi17Ci0gICAg
SEFORExFIGhhbmRsZSA9IEZpbmRGaXJzdEZpbGVXKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hh
cihwYXRoKS5kYXRhKCksICZmaW5kRGF0YSk7Ci0gICAgaWYgKGhhbmRsZSA9PSBJTlZBTElEX0hB
TkRMRV9WQUxVRSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIEZpbmRDbG9zZShoYW5kbGUp
OwotICAgIHJldHVybiB0cnVlOwotfQotCi1zdGF0aWMgYm9vbCBnZXRGaWxlU2l6ZUZyb21GaW5k
RGF0YShjb25zdCBXSU4zMl9GSU5EX0RBVEFXJiBmaW5kRGF0YSwgbG9uZyBsb25nJiBzaXplKQot
ewotICAgIFVMQVJHRV9JTlRFR0VSIGZpbGVTaXplOwotICAgIGZpbGVTaXplLkhpZ2hQYXJ0ID0g
ZmluZERhdGEubkZpbGVTaXplSGlnaDsKLSAgICBmaWxlU2l6ZS5Mb3dQYXJ0ID0gZmluZERhdGEu
bkZpbGVTaXplTG93OwotCi0gICAgaWYgKGZpbGVTaXplLlF1YWRQYXJ0ID4gc3RhdGljX2Nhc3Q8
VUxPTkdMT05HPihzdGQ6Om51bWVyaWNfbGltaXRzPGxvbmcgbG9uZz46Om1heCgpKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgc2l6ZSA9IGZpbGVTaXplLlF1YWRQYXJ0OwotICAgIHJl
dHVybiB0cnVlOwotfQotCi1zdGF0aWMgYm9vbCBnZXRGaWxlU2l6ZUZyb21CeUhhbmRsZUZpbGVJ
bmZvcm1hdGlvblN0cnVjdHVyZShjb25zdCBCWV9IQU5ETEVfRklMRV9JTkZPUk1BVElPTiYgZmls
ZUluZm9ybWF0aW9uLCBsb25nIGxvbmcmIHNpemUpCi17Ci0gICAgVUxBUkdFX0lOVEVHRVIgZmls
ZVNpemU7Ci0gICAgZmlsZVNpemUuSGlnaFBhcnQgPSBmaWxlSW5mb3JtYXRpb24ubkZpbGVTaXpl
SGlnaDsKLSAgICBmaWxlU2l6ZS5Mb3dQYXJ0ID0gZmlsZUluZm9ybWF0aW9uLm5GaWxlU2l6ZUxv
dzsKLQotICAgIGlmIChmaWxlU2l6ZS5RdWFkUGFydCA+IHN0YXRpY19jYXN0PFVMT05HTE9ORz4o
c3RkOjpudW1lcmljX2xpbWl0czxsb25nIGxvbmc+OjptYXgoKSkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIHNpemUgPSBmaWxlU2l6ZS5RdWFkUGFydDsKLSAgICByZXR1cm4gdHJ1ZTsK
LX0KLQotc3RhdGljIHZvaWQgZ2V0RmlsZUNyZWF0aW9uVGltZUZyb21GaW5kRGF0YShjb25zdCBX
SU4zMl9GSU5EX0RBVEFXJiBmaW5kRGF0YSwgdGltZV90JiB0aW1lKQotewotICAgIFVMQVJHRV9J
TlRFR0VSIGZpbGVUaW1lOwotICAgIGZpbGVUaW1lLkhpZ2hQYXJ0ID0gZmluZERhdGEuZnRDcmVh
dGlvblRpbWUuZHdIaWdoRGF0ZVRpbWU7Ci0gICAgZmlsZVRpbWUuTG93UGFydCA9IGZpbmREYXRh
LmZ0Q3JlYXRpb25UaW1lLmR3TG93RGF0ZVRpbWU7Ci0KLSAgICAvLyBJbmZvcm1hdGlvbiBhYm91
dCBjb252ZXJ0aW5nIHRpbWVfdCB0byBGaWxlVGltZSBpcyBhdmFpbGFibGUgYXQgaHR0cDovL21z
ZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L21zNzI0MjI4JTI4dj12cy44NSUyOS5hc3B4
Ci0gICAgdGltZSA9IGZpbGVUaW1lLlF1YWRQYXJ0IC8gMTAwMDAwMDAgLSBrU2Vjb25kc0Zyb21G
aWxlVGltZVRvVGltZXQ7Ci19Ci0KLQotc3RhdGljIHZvaWQgZ2V0RmlsZU1vZGlmaWNhdGlvblRp
bWVGcm9tRmluZERhdGEoY29uc3QgV0lOMzJfRklORF9EQVRBVyYgZmluZERhdGEsIHRpbWVfdCYg
dGltZSkKLXsKLSAgICBVTEFSR0VfSU5URUdFUiBmaWxlVGltZTsKLSAgICBmaWxlVGltZS5IaWdo
UGFydCA9IGZpbmREYXRhLmZ0TGFzdFdyaXRlVGltZS5kd0hpZ2hEYXRlVGltZTsKLSAgICBmaWxl
VGltZS5Mb3dQYXJ0ID0gZmluZERhdGEuZnRMYXN0V3JpdGVUaW1lLmR3TG93RGF0ZVRpbWU7Ci0K
LSAgICAvLyBJbmZvcm1hdGlvbiBhYm91dCBjb252ZXJ0aW5nIHRpbWVfdCB0byBGaWxlVGltZSBp
cyBhdmFpbGFibGUgYXQgaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L21z
NzI0MjI4JTI4dj12cy44NSUyOS5hc3B4Ci0gICAgdGltZSA9IGZpbGVUaW1lLlF1YWRQYXJ0IC8g
MTAwMDAwMDAgLSBrU2Vjb25kc0Zyb21GaWxlVGltZVRvVGltZXQ7Ci19Ci0KLWJvb2wgZ2V0Rmls
ZVNpemUoY29uc3QgU3RyaW5nJiBwYXRoLCBsb25nIGxvbmcmIHNpemUpCi17Ci0gICAgV0lOMzJf
RklORF9EQVRBVyBmaW5kRGF0YTsKLSAgICBpZiAoIWdldEZpbmREYXRhKHBhdGgsIGZpbmREYXRh
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIGdldEZpbGVTaXplRnJvbUZp
bmREYXRhKGZpbmREYXRhLCBzaXplKTsKLX0KLQotYm9vbCBnZXRGaWxlU2l6ZShQbGF0Zm9ybUZp
bGVIYW5kbGUgZmlsZUhhbmRsZSwgbG9uZyBsb25nJiBzaXplKQotewotICAgIEJZX0hBTkRMRV9G
SUxFX0lORk9STUFUSU9OIGZpbGVJbmZvcm1hdGlvbjsKLSAgICBpZiAoITo6R2V0RmlsZUluZm9y
bWF0aW9uQnlIYW5kbGUoZmlsZUhhbmRsZSwgJmZpbGVJbmZvcm1hdGlvbikpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIHJldHVybiBnZXRGaWxlU2l6ZUZyb21CeUhhbmRsZUZpbGVJbmZv
cm1hdGlvblN0cnVjdHVyZShmaWxlSW5mb3JtYXRpb24sIHNpemUpOwotfQotCi1PcHRpb25hbDxX
YWxsVGltZT4gZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoKQotewot
ICAgIFdJTjMyX0ZJTkRfREFUQVcgZmluZERhdGE7Ci0gICAgaWYgKCFnZXRGaW5kRGF0YShwYXRo
LCBmaW5kRGF0YSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICB0aW1lX3Qg
dGltZSA9IDA7Ci0gICAgZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWVGcm9tRmluZERhdGEoZmluZERh
dGEsIHRpbWUpOwotICAgIHJldHVybiBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHModGltZSk7Ci19
Ci0KLU9wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlQ3JlYXRpb25UaW1lKGNvbnN0IFN0cmluZyYg
cGF0aCkKLXsKLSAgICBXSU4zMl9GSU5EX0RBVEFXIGZpbmREYXRhOwotICAgIGlmICghZ2V0Rmlu
ZERhdGEocGF0aCwgZmluZERhdGEpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0g
ICAgdGltZV90IHRpbWUgPSAwOwotICAgIGdldEZpbGVDcmVhdGlvblRpbWVGcm9tRmluZERhdGEo
ZmluZERhdGEsIHRpbWUpOwotICAgIHJldHVybiBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHModGlt
ZSk7Ci19Ci0KLXN0YXRpYyBTdHJpbmcgZ2V0RmluYWxQYXRoTmFtZShjb25zdCBTdHJpbmcmIHBh
dGgpCi17Ci0gICAgYXV0byBoYW5kbGUgPSBvcGVuRmlsZShwYXRoLCBGaWxlT3Blbk1vZGU6OlJl
YWQpOwotICAgIGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUpKQotICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7Ci0KLSAgICBWZWN0b3I8VUNoYXI+IGJ1ZmZlcihNQVhfUEFUSCk7Ci0gICAgaWYgKDo6
R2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlVyhoYW5kbGUsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5z
aXplKCksIFZPTFVNRV9OQU1FX05UKSA+PSBNQVhfUEFUSCkgewotICAgICAgICBjbG9zZUZpbGUo
aGFuZGxlKTsKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIH0KLSAgICBjbG9zZUZpbGUo
aGFuZGxlKTsKLQotICAgIGJ1ZmZlci5zaHJpbmsod2NzbGVuKGJ1ZmZlci5kYXRhKCkpKTsKLSAg
ICByZXR1cm4gU3RyaW5nOjphZG9wdChXVEZNb3ZlKGJ1ZmZlcikpOwotfQotCi1zdGF0aWMgaW5s
aW5lIGJvb2wgaXNTeW1ib2xpY0xpbmsoV0lOMzJfRklORF9EQVRBVyBmaW5kRGF0YSkKLXsKLSAg
ICByZXR1cm4gZmluZERhdGEuZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX1JFUEFS
U0VfUE9JTlQgJiYgZmluZERhdGEuZHdSZXNlcnZlZDAgPT0gSU9fUkVQQVJTRV9UQUdfU1lNTElO
SzsKLX0KLQotc3RhdGljIEZpbGVNZXRhZGF0YTo6VHlwZSB0b0ZpbGVNZXRhZGF0YVR5cGUoV0lO
MzJfRklORF9EQVRBVyBmaW5kRGF0YSkKLXsKLSAgICBpZiAoZmluZERhdGEuZHdGaWxlQXR0cmli
dXRlcyAmIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWSkKLSAgICAgICAgcmV0dXJuIEZpbGVNZXRh
ZGF0YTo6VHlwZTo6RGlyZWN0b3J5OwotICAgIGlmIChpc1N5bWJvbGljTGluayhmaW5kRGF0YSkp
Ci0gICAgICAgIHJldHVybiBGaWxlTWV0YWRhdGE6OlR5cGU6OlN5bWJvbGljTGluazsKLSAgICBy
ZXR1cm4gRmlsZU1ldGFkYXRhOjpUeXBlOjpGaWxlOwotfQotCi1zdGF0aWMgT3B0aW9uYWw8Rmls
ZU1ldGFkYXRhPiBmaW5kRGF0YVRvRmlsZU1ldGFkYXRhKFdJTjMyX0ZJTkRfREFUQVcgZmluZERh
dGEpCi17Ci0gICAgbG9uZyBsb25nIGxlbmd0aDsKLSAgICBpZiAoIWdldEZpbGVTaXplRnJvbUZp
bmREYXRhKGZpbmREYXRhLCBsZW5ndGgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owot
Ci0gICAgdGltZV90IG1vZGlmaWNhdGlvblRpbWU7Ci0gICAgZ2V0RmlsZU1vZGlmaWNhdGlvblRp
bWVGcm9tRmluZERhdGEoZmluZERhdGEsIG1vZGlmaWNhdGlvblRpbWUpOwotCi0gICAgcmV0dXJu
IEZpbGVNZXRhZGF0YSB7Ci0gICAgICAgIFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhtb2RpZmlj
YXRpb25UaW1lKSwKLSAgICAgICAgbGVuZ3RoLAotICAgICAgICBzdGF0aWNfY2FzdDxib29sPihm
aW5kRGF0YS5kd0ZpbGVBdHRyaWJ1dGVzICYgRklMRV9BVFRSSUJVVEVfSElEREVOKSwKLSAgICAg
ICAgdG9GaWxlTWV0YWRhdGFUeXBlKGZpbmREYXRhKQotICAgIH07Ci19Ci0KLU9wdGlvbmFsPEZp
bGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBXSU4z
Ml9GSU5EX0RBVEFXIGZpbmREYXRhOwotICAgIGlmICghZ2V0RmluZERhdGEocGF0aCwgZmluZERh
dGEpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgcmV0dXJuIGZpbmREYXRh
VG9GaWxlTWV0YWRhdGEoZmluZERhdGEpOwotfQotCi1PcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZp
bGVNZXRhZGF0YUZvbGxvd2luZ1N5bWxpbmtzKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBX
SU4zMl9GSU5EX0RBVEFXIGZpbmREYXRhOwotICAgIGlmICghZ2V0RmluZERhdGEocGF0aCwgZmlu
ZERhdGEpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgaWYgKGlzU3ltYm9s
aWNMaW5rKGZpbmREYXRhKSkgewotICAgICAgICBTdHJpbmcgdGFyZ2V0UGF0aCA9IGdldEZpbmFs
UGF0aE5hbWUocGF0aCk7Ci0gICAgICAgIGlmICh0YXJnZXRQYXRoLmlzTnVsbCgpKQotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICAgICAgaWYgKCFnZXRGaW5kRGF0YSh0YXJn
ZXRQYXRoLCBmaW5kRGF0YSkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAg
IH0KLQotICAgIHJldHVybiBmaW5kRGF0YVRvRmlsZU1ldGFkYXRhKGZpbmREYXRhKTsKLX0KLQot
Ym9vbCBjcmVhdGVTeW1ib2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBT
dHJpbmcmIHN5bWJvbGljTGlua1BhdGgpCi17Ci0gICAgcmV0dXJuICE6OkNyZWF0ZVN5bWJvbGlj
TGlua1coc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKHN5bWJvbGljTGlua1BhdGgpLmRhdGEo
KSwgc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKHRhcmdldFBhdGgpLmRhdGEoKSwgMCk7Ci19
Ci0KLWJvb2wgZmlsZUV4aXN0cyhjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgV0lOMzJfRklO
RF9EQVRBVyBmaW5kRGF0YTsKLSAgICByZXR1cm4gZ2V0RmluZERhdGEocGF0aCwgZmluZERhdGEp
OwotfQotCi1ib29sIGRlbGV0ZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIFN0cmlu
ZyBmaWxlbmFtZSA9IHBhdGg7Ci0gICAgcmV0dXJuICEhRGVsZXRlRmlsZVcoc3RyaW5nVG9OdWxs
VGVybWluYXRlZFdDaGFyKGZpbGVuYW1lKS5kYXRhKCkpOwotfQotCi1ib29sIGRlbGV0ZUVtcHR5
RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBTdHJpbmcgZmlsZW5hbWUgPSBw
YXRoOwotICAgIHJldHVybiAhIVJlbW92ZURpcmVjdG9yeVcoc3RyaW5nVG9OdWxsVGVybWluYXRl
ZFdDaGFyKGZpbGVuYW1lKS5kYXRhKCkpOwotfQotCi1ib29sIG1vdmVGaWxlKGNvbnN0IFN0cmlu
ZyYgb2xkUGF0aCwgY29uc3QgU3RyaW5nJiBuZXdQYXRoKQotewotICAgIFN0cmluZyBvbGRGaWxl
bmFtZSA9IG9sZFBhdGg7Ci0gICAgU3RyaW5nIG5ld0ZpbGVuYW1lID0gbmV3UGF0aDsKLSAgICBy
ZXR1cm4gISE6Ok1vdmVGaWxlRXgoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKG9sZEZpbGVu
YW1lKS5kYXRhKCksIHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihuZXdGaWxlbmFtZSkuZGF0
YSgpLCBNT1ZFRklMRV9DT1BZX0FMTE9XRUQgfCBNT1ZFRklMRV9SRVBMQUNFX0VYSVNUSU5HKTsK
LX0KLQotU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChjb25zdCBTdHJpbmcmIHBhdGgs
IGNvbnN0IFN0cmluZyYgY29tcG9uZW50KQotewotICAgIFZlY3RvcjxVQ2hhcj4gYnVmZmVyKE1B
WF9QQVRIKTsKLQotICAgIGlmIChwYXRoLmxlbmd0aCgpICsgMSA+IGJ1ZmZlci5zaXplKCkpCi0g
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIFN0cmluZ1ZpZXcocGF0aCkuZ2V0Q2hhcmFj
dGVyc1dpdGhVcGNvbnZlcnQoYnVmZmVyLmRhdGEoKSk7Ci0gICAgYnVmZmVyW3BhdGgubGVuZ3Ro
KCldID0gJ1wwJzsKLQotICAgIGlmICghUGF0aEFwcGVuZFcoYnVmZmVyLmRhdGEoKSwgc3RyaW5n
VG9OdWxsVGVybWluYXRlZFdDaGFyKGNvbXBvbmVudCkuZGF0YSgpKSkKLSAgICAgICAgcmV0dXJu
IFN0cmluZygpOwotCi0gICAgYnVmZmVyLnNocmluayh3Y3NsZW4oYnVmZmVyLmRhdGEoKSkpOwot
Ci0gICAgcmV0dXJuIFN0cmluZzo6YWRvcHQoV1RGTW92ZShidWZmZXIpKTsKLX0KLQotU3RyaW5n
IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMoU3RyaW5nVmlldyBwYXRoLCBjb25zdCBWZWN0b3I8
U3RyaW5nVmlldz4mIGNvbXBvbmVudHMpCi17Ci0gICAgU3RyaW5nIHJlc3VsdCA9IHBhdGgudG9T
dHJpbmcoKTsKLSAgICBmb3IgKGF1dG8mIGNvbXBvbmVudCA6IGNvbXBvbmVudHMpCi0gICAgICAg
IHJlc3VsdCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZXN1bHQsIGNvbXBvbmVudC50b1N0
cmluZygpKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0jaWYgIVVTRShDRikKLQotQ1N0cmlu
ZyBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIGF1
dG8gdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzID0gcGF0aC51cGNvbnZlcnRlZENoYXJhY3RlcnMoKTsK
LQotICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzID0gdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzOwot
ICAgIGludCBzaXplID0gV2lkZUNoYXJUb011bHRpQnl0ZShDUF9BQ1AsIDAsIGNoYXJhY3RlcnMs
IHBhdGgubGVuZ3RoKCksIDAsIDAsIDAsIDApIC0gMTsKLQotICAgIGNoYXIqIGJ1ZmZlcjsKLSAg
ICBDU3RyaW5nIHN0cmluZyA9IENTdHJpbmc6Om5ld1VuaW5pdGlhbGl6ZWQoc2l6ZSwgYnVmZmVy
KTsKLQotICAgIFdpZGVDaGFyVG9NdWx0aUJ5dGUoQ1BfQUNQLCAwLCBjaGFyYWN0ZXJzLCBwYXRo
Lmxlbmd0aCgpLCBidWZmZXIsIHNpemUsIDAsIDApOwotCi0gICAgcmV0dXJuIHN0cmluZzsKLX0K
LQotI2VuZGlmIC8vICFVU0UoQ0YpCi0KLWJvb2wgbWFrZUFsbERpcmVjdG9yaWVzKGNvbnN0IFN0
cmluZyYgcGF0aCkKLXsKLSAgICBTdHJpbmcgZnVsbFBhdGggPSBwYXRoOwotICAgIGlmIChTSENy
ZWF0ZURpcmVjdG9yeUV4KDAsIHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihmdWxsUGF0aCku
ZGF0YSgpLCAwKSAhPSBFUlJPUl9TVUNDRVNTKSB7Ci0gICAgICAgIERXT1JEIGVycm9yID0gR2V0
TGFzdEVycm9yKCk7Ci0gICAgICAgIGlmIChlcnJvciAhPSBFUlJPUl9GSUxFX0VYSVNUUyAmJiBl
cnJvciAhPSBFUlJPUl9BTFJFQURZX0VYSVNUUykgewotICAgICAgICAgICAgTE9HX0VSUk9SKCJG
YWlsZWQgdG8gY3JlYXRlIHBhdGggJXMiLCBwYXRoLmFzY2lpKCkuZGF0YSgpKTsKLSAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0K
LQotU3RyaW5nIGhvbWVEaXJlY3RvcnlQYXRoKCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwot
ICAgIHJldHVybiAiIjsKLX0KLQotU3RyaW5nIHBhdGhHZXRGaWxlTmFtZShjb25zdCBTdHJpbmcm
IHBhdGgpCi17Ci0gICAgcmV0dXJuIG51bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmluZyg6OlBhdGhG
aW5kRmlsZU5hbWUoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKHBhdGgpLmRhdGEoKSkpOwot
fQotCi1TdHJpbmcgZGlyZWN0b3J5TmFtZShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgU3Ry
aW5nIG5hbWUgPSBwYXRoLmxlZnQocGF0aC5sZW5ndGgoKSAtIHBhdGhHZXRGaWxlTmFtZShwYXRo
KS5sZW5ndGgoKSk7Ci0gICAgaWYgKG5hbWUuY2hhcmFjdGVyU3RhcnRpbmdBdChuYW1lLmxlbmd0
aCgpIC0gMSkgPT0gJ1xcJykgewotICAgICAgICAvLyBSZW1vdmUgYW55IHRyYWlsaW5nICJcIi4K
LSAgICAgICAgbmFtZS50cnVuY2F0ZShuYW1lLmxlbmd0aCgpIC0gMSk7Ci0gICAgfQotICAgIHJl
dHVybiBuYW1lOwotfQotCi1zdGF0aWMgU3RyaW5nIGJ1bmRsZU5hbWUoKQotewotICAgIHN0YXRp
YyBjb25zdCBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IG5hbWUgPSBbXSB7Ci0gICAgICAgIFN0cmlu
ZyBuYW1lIHsgIldlYktpdCJfcyB9OwotCi0jaWYgVVNFKENGKQotICAgICAgICBpZiAoQ0ZCdW5k
bGVSZWYgYnVuZGxlID0gQ0ZCdW5kbGVHZXRNYWluQnVuZGxlKCkpIHsKLSAgICAgICAgICAgIGlm
IChDRlR5cGVSZWYgYnVuZGxlRXhlY3V0YWJsZSA9IENGQnVuZGxlR2V0VmFsdWVGb3JJbmZvRGlj
dGlvbmFyeUtleShidW5kbGUsIGtDRkJ1bmRsZUV4ZWN1dGFibGVLZXkpKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKENGR2V0VHlwZUlEKGJ1bmRsZUV4ZWN1dGFibGUpID09IENGU3RyaW5nR2V0VHlw
ZUlEKCkpCi0gICAgICAgICAgICAgICAgICAgIG5hbWUgPSByZWludGVycHJldF9jYXN0PENGU3Ry
aW5nUmVmPihidW5kbGVFeGVjdXRhYmxlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotI2Vu
ZGlmCi0KLSAgICAgICAgcmV0dXJuIG5hbWU7Ci0gICAgfSgpOwotCi0gICAgcmV0dXJuIG5hbWU7
Ci19Ci0KLXN0YXRpYyBTdHJpbmcgc3RvcmFnZURpcmVjdG9yeShEV09SRCBwYXRoSWRlbnRpZmll
cikKLXsKLSAgICBWZWN0b3I8VUNoYXI+IGJ1ZmZlcihNQVhfUEFUSCk7Ci0gICAgaWYgKEZBSUxF
RChTSEdldEZvbGRlclBhdGhXKDAsIHBhdGhJZGVudGlmaWVyIHwgQ1NJRExfRkxBR19DUkVBVEUs
IDAsIDAsIGJ1ZmZlci5kYXRhKCkpKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIGJ1
ZmZlci5yZXNpemUod2NzbGVuKGJ1ZmZlci5kYXRhKCkpKTsKLSAgICBTdHJpbmcgZGlyZWN0b3J5
ID0gU3RyaW5nOjphZG9wdChXVEZNb3ZlKGJ1ZmZlcikpOwotCi0gICAgZGlyZWN0b3J5ID0gcGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRpcmVjdG9yeSwgIkFwcGxlIENvbXB1dGVyXFwiICsgYnVu
ZGxlTmFtZSgpKTsKLSAgICBpZiAoIW1ha2VBbGxEaXJlY3RvcmllcyhkaXJlY3RvcnkpKQotICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICByZXR1cm4gZGlyZWN0b3J5OwotfQotCi1zdGF0
aWMgU3RyaW5nIGNhY2hlZFN0b3JhZ2VEaXJlY3RvcnkoRFdPUkQgcGF0aElkZW50aWZpZXIpCi17
Ci0gICAgc3RhdGljIEhhc2hNYXA8RFdPUkQsIFN0cmluZz4gZGlyZWN0b3JpZXM7Ci0KLSAgICBI
YXNoTWFwPERXT1JELCBTdHJpbmc+OjppdGVyYXRvciBpdCA9IGRpcmVjdG9yaWVzLmZpbmQocGF0
aElkZW50aWZpZXIpOwotICAgIGlmIChpdCAhPSBkaXJlY3Rvcmllcy5lbmQoKSkKLSAgICAgICAg
cmV0dXJuIGl0LT52YWx1ZTsKLQotICAgIFN0cmluZyBkaXJlY3RvcnkgPSBzdG9yYWdlRGlyZWN0
b3J5KHBhdGhJZGVudGlmaWVyKTsKLSAgICBkaXJlY3Rvcmllcy5hZGQocGF0aElkZW50aWZpZXIs
IGRpcmVjdG9yeSk7Ci0KLSAgICByZXR1cm4gZGlyZWN0b3J5OwotfQotCi1zdGF0aWMgU3RyaW5n
IGdlbmVyYXRlVGVtcG9yYXJ5UGF0aChjb25zdCBGdW5jdGlvbjxib29sKGNvbnN0IFN0cmluZyYp
PiYgYWN0aW9uKQotewotICAgIHdjaGFyX3QgdGVtcFBhdGhbTUFYX1BBVEhdOwotICAgIGludCB0
ZW1wUGF0aExlbmd0aCA9IDo6R2V0VGVtcFBhdGhXKFdURl9BUlJBWV9MRU5HVEgodGVtcFBhdGgp
LCB0ZW1wUGF0aCk7Ci0gICAgaWYgKHRlbXBQYXRoTGVuZ3RoIDw9IDAgfHwgdGVtcFBhdGhMZW5n
dGggPiBXVEZfQVJSQVlfTEVOR1RIKHRlbXBQYXRoKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygp
OwotCi0gICAgU3RyaW5nIHByb3Bvc2VkUGF0aDsKLSAgICBkbyB7Ci0gICAgICAgIHdjaGFyX3Qg
dGVtcEZpbGVbXSA9IEwiWFhYWFhYWFgudG1wIjsgLy8gVXNlIDguMyBzdHlsZSBuYW1lIChtb3Jl
IGNoYXJhY3RlcnMgYXJlbid0IGhlbHBmdWwgZHVlIHRvIDguMyBzaG9ydCBmaWxlIG5hbWVzKQot
ICAgICAgICBjb25zdCBpbnQgcmFuZG9tUGFydExlbmd0aCA9IDg7Ci0gICAgICAgIGNyeXB0b2dy
YXBoaWNhbGx5UmFuZG9tVmFsdWVzKHRlbXBGaWxlLCByYW5kb21QYXJ0TGVuZ3RoICogc2l6ZW9m
KHdjaGFyX3QpKTsKLQotICAgICAgICAvLyBMaW1pdCB0byB2YWxpZCBmaWxlc3lzdGVtIGNoYXJh
Y3RlcnMsIGFsc28gZXhjbHVkaW5nIG90aGVycyB0aGF0IGNvdWxkIGJlIHByb2JsZW1hdGljLCBs
aWtlIHB1bmN0dWF0aW9uLgotICAgICAgICAvLyBkb24ndCBpbmNsdWRlIGJvdGggdXBwZXIgYW5k
IGxvd2VyY2FzZSBzaW5jZSBXaW5kb3dzIGZpbGUgc3lzdGVtcyBhcmUgdHlwaWNhbGx5IG5vdCBj
YXNlIHNlbnNpdGl2ZS4KLSAgICAgICAgY29uc3QgY2hhciB2YWxpZENoYXJzW10gPSAiMDEyMzQ1
Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IjsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCByYW5kb21QYXJ0TGVuZ3RoOyArK2kpCi0gICAgICAgICAgICB0ZW1wRmlsZVtpXSA9IHZh
bGlkQ2hhcnNbdGVtcEZpbGVbaV0gJSAoc2l6ZW9mKHZhbGlkQ2hhcnMpIC0gMSldOwotCi0gICAg
ICAgIEFTU0VSVCh3Y3NsZW4odGVtcEZpbGUpID09IFdURl9BUlJBWV9MRU5HVEgodGVtcEZpbGUp
IC0gMSk7Ci0KLSAgICAgICAgcHJvcG9zZWRQYXRoID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KG51bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmluZyh0ZW1wUGF0aCksIG51bGxUZXJtaW5hdGVkV0No
YXJUb1N0cmluZyh0ZW1wRmlsZSkpOwotICAgICAgICBpZiAocHJvcG9zZWRQYXRoLmlzRW1wdHko
KSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0gd2hpbGUgKCFhY3Rpb24ocHJvcG9zZWRQYXRo
KSk7Ci0KLSAgICByZXR1cm4gcHJvcG9zZWRQYXRoOwotfQotCi1TdHJpbmcgb3BlblRlbXBvcmFy
eUZpbGUoY29uc3QgU3RyaW5nJiwgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpCi17Ci0gICAg
aGFuZGxlID0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7Ci0KLSAgICBTdHJpbmcgcHJvcG9zZWRQYXRo
ID0gZ2VuZXJhdGVUZW1wb3JhcnlQYXRoKFsmaGFuZGxlXShjb25zdCBTdHJpbmcmIHByb3Bvc2Vk
UGF0aCkgewotICAgICAgICAvLyB1c2UgQ1JFQVRFX05FVyB0byBhdm9pZCBvdmVyd3JpdGluZyBh
biBleGlzdGluZyBmaWxlIHdpdGggdGhlIHNhbWUgbmFtZQotICAgICAgICBoYW5kbGUgPSA6OkNy
ZWF0ZUZpbGVXKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihwcm9wb3NlZFBhdGgpLmRhdGEo
KSwgR0VORVJJQ19SRUFEIHwgR0VORVJJQ19XUklURSwgMCwgMCwgQ1JFQVRFX05FVywgRklMRV9B
VFRSSUJVVEVfTk9STUFMLCAwKTsKLQotICAgICAgICByZXR1cm4gaXNIYW5kbGVWYWxpZChoYW5k
bGUpIHx8IEdldExhc3RFcnJvcigpID09IEVSUk9SX0FMUkVBRFlfRVhJU1RTOwotICAgIH0pOwot
Ci0gICAgaWYgKCFpc0hhbmRsZVZhbGlkKGhhbmRsZSkpCi0gICAgICAgIHJldHVybiBTdHJpbmco
KTsKLQotICAgIHJldHVybiBwcm9wb3NlZFBhdGg7Ci19Ci0KLVBsYXRmb3JtRmlsZUhhbmRsZSBv
cGVuRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVPcGVuTW9kZSBtb2RlKQotewotICAgIERX
T1JEIGRlc2lyZWRBY2Nlc3MgPSAwOwotICAgIERXT1JEIGNyZWF0aW9uRGlzcG9zaXRpb24gPSAw
OwotICAgIERXT1JEIHNoYXJlTW9kZSA9IDA7Ci0gICAgc3dpdGNoIChtb2RlKSB7Ci0gICAgY2Fz
ZSBGaWxlT3Blbk1vZGU6OlJlYWQ6Ci0gICAgICAgIGRlc2lyZWRBY2Nlc3MgPSBHRU5FUklDX1JF
QUQ7Ci0gICAgICAgIGNyZWF0aW9uRGlzcG9zaXRpb24gPSBPUEVOX0VYSVNUSU5HOwotICAgICAg
ICBzaGFyZU1vZGUgPSBGSUxFX1NIQVJFX1JFQUQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
RmlsZU9wZW5Nb2RlOjpXcml0ZToKLSAgICAgICAgZGVzaXJlZEFjY2VzcyA9IEdFTkVSSUNfV1JJ
VEU7Ci0gICAgICAgIGNyZWF0aW9uRGlzcG9zaXRpb24gPSBDUkVBVEVfQUxXQVlTOwotICAgICAg
ICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICB9Ci0KLSAgICBTdHJpbmcgZGVzdGluYXRpb24gPSBwYXRoOwotICAgIHJldHVybiBDcmVhdGVG
aWxlKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihkZXN0aW5hdGlvbikuZGF0YSgpLCBkZXNp
cmVkQWNjZXNzLCBzaGFyZU1vZGUsIDAsIGNyZWF0aW9uRGlzcG9zaXRpb24sIEZJTEVfQVRUUklC
VVRFX05PUk1BTCwgMCk7Ci19Ci0KLXZvaWQgY2xvc2VGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSYg
aGFuZGxlKQotewotICAgIGlmIChpc0hhbmRsZVZhbGlkKGhhbmRsZSkpIHsKLSAgICAgICAgOjpD
bG9zZUhhbmRsZShoYW5kbGUpOwotICAgICAgICBoYW5kbGUgPSBpbnZhbGlkUGxhdGZvcm1GaWxl
SGFuZGxlOwotICAgIH0KLX0KLQotbG9uZyBsb25nIHNlZWtGaWxlKFBsYXRmb3JtRmlsZUhhbmRs
ZSBoYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQsIEZpbGVTZWVrT3JpZ2luIG9yaWdpbikKLXsKLSAg
ICBEV09SRCBtb3ZlTWV0aG9kID0gRklMRV9CRUdJTjsKLQotICAgIGlmIChvcmlnaW4gPT0gRmls
ZVNlZWtPcmlnaW46OkN1cnJlbnQpCi0gICAgICAgIG1vdmVNZXRob2QgPSBGSUxFX0NVUlJFTlQ7
Ci0gICAgZWxzZSBpZiAob3JpZ2luID09IEZpbGVTZWVrT3JpZ2luOjpFbmQpCi0gICAgICAgIG1v
dmVNZXRob2QgPSBGSUxFX0VORDsKLQotICAgIExBUkdFX0lOVEVHRVIgbGFyZ2VPZmZzZXQ7Ci0g
ICAgbGFyZ2VPZmZzZXQuUXVhZFBhcnQgPSBvZmZzZXQ7Ci0KLSAgICBsYXJnZU9mZnNldC5Mb3dQ
YXJ0ID0gU2V0RmlsZVBvaW50ZXIoaGFuZGxlLCBsYXJnZU9mZnNldC5Mb3dQYXJ0LCAmbGFyZ2VP
ZmZzZXQuSGlnaFBhcnQsIG1vdmVNZXRob2QpOwotCi0gICAgaWYgKGxhcmdlT2Zmc2V0Lkxvd1Bh
cnQgPT0gSU5WQUxJRF9TRVRfRklMRV9QT0lOVEVSICYmIEdldExhc3RFcnJvcigpICE9IE5PX0VS
Uk9SKQotICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICByZXR1cm4gbGFyZ2VPZmZzZXQuUXVhZFBh
cnQ7Ci19Ci0KLWludCB3cml0ZVRvRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBjb25z
dCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQotewotICAgIGlmICghaXNIYW5kbGVWYWxpZChoYW5k
bGUpKQotICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICBEV09SRCBieXRlc1dyaXR0ZW47Ci0gICAg
Ym9vbCBzdWNjZXNzID0gV3JpdGVGaWxlKGhhbmRsZSwgZGF0YSwgbGVuZ3RoLCAmYnl0ZXNXcml0
dGVuLCAwKTsKLQotICAgIGlmICghc3VjY2VzcykKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxpbnQ+KGJ5dGVzV3JpdHRlbik7Ci19Ci0KLWludCByZWFkRnJvbUZp
bGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKLXsK
LSAgICBpZiAoIWlzSGFuZGxlVmFsaWQoaGFuZGxlKSkKLSAgICAgICAgcmV0dXJuIC0xOwotCi0g
ICAgRFdPUkQgYnl0ZXNSZWFkOwotICAgIGJvb2wgc3VjY2VzcyA9IDo6UmVhZEZpbGUoaGFuZGxl
LCBkYXRhLCBsZW5ndGgsICZieXRlc1JlYWQsIDApOwotCi0gICAgaWYgKCFzdWNjZXNzKQotICAg
ICAgICByZXR1cm4gLTE7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oYnl0ZXNSZWFkKTsK
LX0KLQotYm9vbCBoYXJkTGlua09yQ29weUZpbGUoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0
IFN0cmluZyYgZGVzdGluYXRpb24pCi17Ci0gICAgcmV0dXJuICEhOjpDb3B5RmlsZShzdHJpbmdU
b051bGxUZXJtaW5hdGVkV0NoYXIoc291cmNlKS5kYXRhKCksIHN0cmluZ1RvTnVsbFRlcm1pbmF0
ZWRXQ2hhcihkZXN0aW5hdGlvbikuZGF0YSgpLCBUUlVFKTsKLX0KLQotU3RyaW5nIGxvY2FsVXNl
clNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIGNhY2hlZFN0b3JhZ2VE
aXJlY3RvcnkoQ1NJRExfTE9DQUxfQVBQREFUQSk7Ci19Ci0KLVN0cmluZyByb2FtaW5nVXNlclNw
ZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIGNhY2hlZFN0b3JhZ2VEaXJl
Y3RvcnkoQ1NJRExfQVBQREFUQSk7Ci19Ci0KLVZlY3RvcjxTdHJpbmc+IGxpc3REaXJlY3Rvcnko
Y29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIGNvbnN0IFN0cmluZyYgZmlsdGVyKQotewotICAgIFZl
Y3RvcjxTdHJpbmc+IGVudHJpZXM7Ci0KLSAgICBQYXRoV2Fsa2VyIHdhbGtlcihkaXJlY3Rvcnks
IGZpbHRlcik7Ci0gICAgaWYgKCF3YWxrZXIuaXNWYWxpZCgpKQotICAgICAgICByZXR1cm4gZW50
cmllczsKLQotICAgIGRvIHsKLSAgICAgICAgaWYgKHdhbGtlci5kYXRhKCkuZHdGaWxlQXR0cmli
dXRlcyAmIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWQotICAgICAgICAgICAgJiYgKCF3Y3NjbXAo
d2Fsa2VyLmRhdGEoKS5jRmlsZU5hbWUsIEwiLiIpIHx8ICF3Y3NjbXAod2Fsa2VyLmRhdGEoKS5j
RmlsZU5hbWUsIEwiLi4iKSkpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBlbnRy
aWVzLmFwcGVuZChkaXJlY3RvcnkgKyAiXFwiICsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVQ2hh
cio+KHdhbGtlci5kYXRhKCkuY0ZpbGVOYW1lKSk7Ci0gICAgfSB3aGlsZSAod2Fsa2VyLnN0ZXAo
KSk7Ci0KLSAgICByZXR1cm4gZW50cmllczsKLX0KLQotYm9vbCBnZXRWb2x1bWVGcmVlU3BhY2Uo
Y29uc3QgU3RyaW5nJiwgdWludDY0X3QmKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAg
cmV0dXJuIGZhbHNlOwotfQotCi1PcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29u
c3QgQ1N0cmluZyYgZnNGaWxlKQotewotICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUoZnNGaWxl
LmRhdGEoKSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKLSAgICBpZiAoIWlzSGFuZGxlVmFsaWQoaGFu
ZGxlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIEJZX0hBTkRMRV9GSUxF
X0lORk9STUFUSU9OIGZpbGVJbmZvcm1hdGlvbiA9IHsgfTsKLSAgICBpZiAoITo6R2V0RmlsZUlu
Zm9ybWF0aW9uQnlIYW5kbGUoaGFuZGxlLCAmZmlsZUluZm9ybWF0aW9uKSkgewotICAgICAgICBj
bG9zZUZpbGUoaGFuZGxlKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICB9Ci0K
LSAgICBjbG9zZUZpbGUoaGFuZGxlKTsKLQotICAgIHJldHVybiBmaWxlSW5mb3JtYXRpb24uZHdW
b2x1bWVTZXJpYWxOdW1iZXI7Ci19Ci0KLVN0cmluZyByZWFsUGF0aChjb25zdCBTdHJpbmcmIGZp
bGVQYXRoKQotewotICAgIHJldHVybiBnZXRGaW5hbFBhdGhOYW1lKGZpbGVQYXRoKTsKLX0KLQot
U3RyaW5nIGNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIGdlbmVyYXRl
VGVtcG9yYXJ5UGF0aChbXShjb25zdCBTdHJpbmcmIHByb3Bvc2VkUGF0aCkgewotICAgICAgICBy
ZXR1cm4gbWFrZUFsbERpcmVjdG9yaWVzKHByb3Bvc2VkUGF0aCk7Ci0gICAgfSk7Ci19Ci0KLWJv
b2wgZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnlQYXRoKQot
ewotICAgIFNIRklMRU9QU1RSVUNUIGRlbGV0ZU9wZXJhdGlvbiA9IHsKLSAgICAgICAgbnVsbHB0
ciwKLSAgICAgICAgRk9fREVMRVRFLAotICAgICAgICBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0No
YXIoZGlyZWN0b3J5UGF0aCkuZGF0YSgpLAotICAgICAgICBMIiIsCi0gICAgICAgIEZPRl9OT0NP
TkZJUk1BVElPTiB8IEZPRl9OT0VSUk9SVUkgfCBGT0ZfU0lMRU5ULAotICAgICAgICBmYWxzZSwK
LSAgICAgICAgMCwKLSAgICAgICAgTCIiCi0gICAgfTsKLSAgICByZXR1cm4gIVNIRmlsZU9wZXJh
dGlvbigmZGVsZXRlT3BlcmF0aW9uKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgRmlsZVN5c3RlbQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL1BhdGhXYWxrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BhdGhX
YWxrZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMjA0MDdiMWNmZWE2MjRm
M2ExNTY5YThmZDY3NjhhNWRlYmVkMzYzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXRoV2Fsa2VyLmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiUGF0aFdhbGtlci5oIgotCi0jaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUGF0aFdhbGtlcjo6UGF0aFdhbGtlcihjb25zdCBT
dHJpbmcmIGRpcmVjdG9yeSwgY29uc3QgU3RyaW5nJiBwYXR0ZXJuKQotewotICAgIFN0cmluZyBw
YXRoID0gZGlyZWN0b3J5ICsgIlxcIiArIHBhdHRlcm47Ci0gICAgbV9oYW5kbGUgPSA6OkZpbmRG
aXJzdEZpbGVXKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihwYXRoKS5kYXRhKCksICZtX2Rh
dGEpOwotfQotCi1QYXRoV2Fsa2VyOjp+UGF0aFdhbGtlcigpCi17Ci0gICAgaWYgKCFpc1ZhbGlk
KCkpCi0gICAgICAgIHJldHVybjsKLSAgICA6OkZpbmRDbG9zZShtX2hhbmRsZSk7Ci19Ci0KLWJv
b2wgUGF0aFdhbGtlcjo6c3RlcCgpCi17Ci0gICAgcmV0dXJuIDo6RmluZE5leHRGaWxlVyhtX2hh
bmRsZSwgJm1fZGF0YSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXRoV2Fsa2VyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vUGF0aFdhbGtlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBmYzU5ZDY3MzE4MTFiOGNhMTU4N2E0YTEyYTdkYTFlMWExNTkzZDg0Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9QYXRoV2Fsa2VyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDExLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSA8V2luZG93cy5oPgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
Y2xhc3MgUGF0aFdhbGtlciB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGF0aFdhbGtlcik7
Ci1wdWJsaWM6Ci0gICAgUGF0aFdhbGtlcihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5LCBj
b25zdCBXVEY6OlN0cmluZyYgcGF0dGVybik7Ci0gICAgflBhdGhXYWxrZXIoKTsKLQotICAgIGJv
b2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1faGFuZGxlICE9IElOVkFMSURfSEFORExFX1ZB
TFVFOyB9Ci0gICAgY29uc3QgV0lOMzJfRklORF9EQVRBVyYgZGF0YSgpIGNvbnN0IHsgcmV0dXJu
IG1fZGF0YTsgfQotCi0gICAgYm9vbCBzdGVwKCk7Ci0KLXByaXZhdGU6Ci0gICAgSEFORExFIG1f
aGFuZGxlOwotICAgIFdJTjMyX0ZJTkRfREFUQVcgbV9kYXRhOwotfTsKLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJj
aFBvcHVwTWVudURCLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1
cE1lbnVEQi5jcHAKaW5kZXggOWU2ZTRjNTJkN2I5ODM4YTFmMDdiZGQ1OWY0MDlkODE2NWZlNTY2
Ni4uZTU3MzBiMzBjY2YzZjAzZWVmZGZmOWEzMzFjMDhlZDBlMjJlNThiZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudURCLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51REIuY3BwCkBAIC0yNSw5
ICsyNSw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2VhcmNoUG9wdXBNZW51
REIuaCIKIAotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJTUUxpdGVGaWxlU3lz
dGVtLmgiCiAjaW5jbHVkZSAiU1FMaXRlVHJhbnNhY3Rpb24uaCIKKyNpbmNsdWRlIDx3dGYvRmls
ZVN5c3RlbS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWUuY3BwCmluZGV4IDc2YzljNWM3OGQ1NmQzZThkOTdkNDIxZjRkZmFhNGFi
MWJkOWVjYzAuLmM0ZmEzNTY3MGI5NTQ3Njc2YjdjNGZiOWE4MTJiM2Q2ZTZlYzk5ZTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcApAQCAtMjUsNyArMjUsNiBAQAog
I2luY2x1ZGUgIkNvbnRyb2xTdGF0ZXMuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1
ZGUgIkZpbGVMaXN0LmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkZsb2F0
Q29udmVyc2lvbi5oIgogI2luY2x1ZGUgIkZsb2F0Um91bmRlZFJlY3QuaCIKICNpbmNsdWRlICJG
b2N1c0NvbnRyb2xsZXIuaCIKQEAgLTQ1LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJTcGluQnV0dG9u
RWxlbWVudC5oIgogI2luY2x1ZGUgIlN0cmluZ1RydW5jYXRvci5oIgogI2luY2x1ZGUgIlRleHRD
b250cm9sSW5uZXJFbGVtZW50cy5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKICNpZiBFTkFCTEUoTUVURVJfRUxFTUVOVCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUd0ay5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsuY3BwCmluZGV4IGI2OTZl
YWM4ZmIxMDVlMmI3MDk2MjA2OTQ3Mzk3M2UxM2ViOWZiNjYuLmIyNTk2NmNiNTMzMjc2ODU5ZWU4
MTk2NzFhZDI1ZmRmNzdlMDNlYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZUd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lR3RrLmNwcApAQCAtMjcsNyArMjcsNiBAQAogCiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3
b3Jkcy5oIgogI2luY2x1ZGUgIkZpbGVMaXN0LmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgog
I2luY2x1ZGUgIkZsb2F0Um91bmRlZFJlY3QuaCIKICNpbmNsdWRlICJGb250RGVzY3JpcHRpb24u
aCIKICNpbmNsdWRlICJHUmVmUHRyR3RrLmgiCkBAIC01NSw2ICs1NCw3IEBACiAjaW5jbHVkZSA8
Z2RrL2dkay5oPgogI2luY2x1ZGUgPGdsaWIuaD4KICNpbmNsdWRlIDxndGsvZ3RrLmg+CisjaW5j
bHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdp
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwCmluZGV4
IGVlYjk5ODVlNjJmNWM5YTM0ODI0M2U4ZGRlOWVjY2MwYTliZGJmYjUuLjIxOTY1N2UxZjI0YWFi
YTA1ODI1YTJhNjJiMDgwNGM3ZmJiM2YzMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lV2luLmNwcApAQCAtMjQsNyArMjQsNiBAQAogCiAjaW5jbHVkZSAiQ1NTVmFs
dWVLZXl3b3Jkcy5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVt
LmgiCiAjaW5jbHVkZSAiRm9udE1ldHJpY3MuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1
ZGUgIkZyYW1lU2VsZWN0aW9uLmgiCkBAIC0zOCw2ICszNyw3IEBACiAjaW5jbHVkZSAiU3lzdGVt
SW5mby5oIgogI2luY2x1ZGUgIlVzZXJBZ2VudFN0eWxlU2hlZXRzLmgiCiAjaW5jbHVkZSAiV2Vi
Q29yZUJ1bmRsZVdpbi5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8
d3RmL1NvZnRMaW5raW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5oPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlv
bkRhdGFiYXNlLmNwcAppbmRleCA2MGVlYjhjYzJjMGY0MTJjYTJiY2VkOTgyYWU5MjdmZmIxZDZh
NDY4Li4xYWY0Mzc4OGZmZmJhYWE5MTJlMWFkOTdiYmQ5OGIxNzJkZTNmMGUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFi
YXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lz
dHJhdGlvbkRhdGFiYXNlLmNwcApAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQogCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcu
aCIKICNpbmNsdWRlICJSZWdpc3RyYXRpb25TdG9yZS5oIgogI2luY2x1ZGUgIlNRTGl0ZURhdGFi
YXNlLmgiCkBAIC0zOSw2ICszOCw3IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNp
bmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJl
YWRDb3BpZXIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9N
YWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8
d3RmL1Njb3BlLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzUGVyc2lzdGVudFN0b3JhZ2UuY3BwCmluZGV4IDNkZDc4MWI4ZGM3MDgxOWZiZmUxNzIwNjA5
MzlhNTQ3MTRjOGMyMTkuLmMwZThjZGFlM2IwNTQ4NmEwMTQ4MzRhZjNhNzY0MjdmOTZmMjJhZWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lz
dGVudFN0b3JhZ2UuY3BwCkBAIC0zMSw5ICszMSw5IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01lbW9yeVN0b3JlLmgiCiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlTW9uaXRvci5oPgotI2luY2x1ZGUg
PFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvS2V5ZWRDb2RpbmcuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lz
dGVtLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYvV29ya1F1ZXVl
Lmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Rh
dGFUYXNrQmxvYi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRh
c2tCbG9iLmgKaW5kZXggNzVkMzFhNjFhNGY3NDJmMzg3ZjliNWVhMmQ0ZjYwMjk0MzYxMjg3Yy4u
ZWI3OTQ0NzI1OTViNTZlZGQ2MjBiZTI1NzZlZDIxODE4MDVkMGQ4NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmgKQEAgLTMzLDcg
KzMzLDcgQEAKIAogI2luY2x1ZGUgIk5ldHdvcmtEYXRhVGFzay5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvRmlsZVN0cmVhbUNsaWVudC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgor
I2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IEFzeW5jRmlsZVN0cmVhbTsKQEAgLTExMyw3ICsxMTMsNyBAQCBwcml2YXRlOgogICAgIHVuc2ln
bmVkIG1fc2l6ZUl0ZW1Db3VudCB7IDAgfTsKICAgICB1bnNpZ25lZCBtX3JlYWRJdGVtQ291bnQg
eyAwIH07CiAgICAgYm9vbCBtX2ZpbGVPcGVuZWQgeyBmYWxzZSB9OwotICAgIFdlYkNvcmU6OkZp
bGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBtX2Rvd25sb2FkRmlsZSB7IFdlYkNvcmU6OkZp
bGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUgfTsKKyAgICBGaWxlU3lzdGVtOjpQ
bGF0Zm9ybUZpbGVIYW5kbGUgbV9kb3dubG9hZEZpbGUgeyBGaWxlU3lzdGVtOjppbnZhbGlkUGxh
dGZvcm1GaWxlSGFuZGxlIH07CiAKICAgICBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRh
RmlsZVJlZmVyZW5jZT4+IG1fZmlsZVJlZmVyZW5jZXM7CiAgICAgUmVmUHRyPFNhbmRib3hFeHRl
bnNpb24+IG1fc2FuZGJveEV4dGVuc2lvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggMTkwMGVmZTA1NDA4NTVkYzUyOTIyNTIyNmUx
NzFhZGRmMWQwZDY4ZS4uYjQ3MzhjZGU4MTIyNzY4OTNkNGY0ZTNjOGU5MmVmOThmOGMxMDc2NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAK
QEAgLTkwMyw3ICs5MDMsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRDYWNoZU1vZGVsKENh
Y2hlTW9kZWwgY2FjaGVNb2RlbCkKICAgICB1bnNpZ25lZCB1cmxDYWNoZU1lbW9yeUNhcGFjaXR5
ID0gMDsKICAgICB1aW50NjRfdCB1cmxDYWNoZURpc2tDYXBhY2l0eSA9IDA7CiAgICAgdWludDY0
X3QgZGlza0ZyZWVTaXplID0gMDsKLSAgICBpZiAoV2ViQ29yZTo6RmlsZVN5c3RlbTo6Z2V0Vm9s
dW1lRnJlZVNwYWNlKG1fZGlza0NhY2hlRGlyZWN0b3J5LCBkaXNrRnJlZVNpemUpKSB7CisgICAg
aWYgKEZpbGVTeXN0ZW06OmdldFZvbHVtZUZyZWVTcGFjZShtX2Rpc2tDYWNoZURpcmVjdG9yeSwg
ZGlza0ZyZWVTaXplKSkgewogICAgICAgICAvLyBBcyBhIGZ1ZGdlIGZhY3RvciwgdXNlIDEwMDAg
aW5zdGVhZCBvZiAxMDI0LCBpbiBjYXNlIHRoZSByZXBvcnRlZCBieXRlCiAgICAgICAgIC8vIGNv
dW50IGRvZXNuJ3QgYWxpZ24gZXhhY3RseSB0byBhIG1lZ2FieXRlIGJvdW5kYXJ5LgogICAgICAg
ICBkaXNrRnJlZVNpemUgLz0gS0IgKiAxMDAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCmluZGV4IGYxN2Zk
OWY5MmJlNWQyYTUwNTQ1YzA3OTllMzdkOWFlMGNmM2VmYmQuLjFlM2UxMWIxOThjMzUyNzIwYTAz
ZjU3OWQyOTk0N2Y5YmVlZmRiNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKQEAgLTUyLDcgKzUyLDcg
QEAgU3RyaW5nIEVuZ2luZTo6Y2FjaGVzUm9vdFBhdGgoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3Jp
Z2luJiBvcmlnaW4pCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICBLZXkga2V5KG9yaWdpbi50
b3BPcmlnaW4udG9TdHJpbmcoKSwgb3JpZ2luLmNsaWVudE9yaWdpbi50b1N0cmluZygpLCB7IH0s
IHsgfSwgc2FsdCgpKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KHJvb3RQYXRoKCksIGtleS5oYXNoQXNTdHJpbmcoKSk7CisgICAgcmV0
dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyb290UGF0aCgpLCBrZXku
aGFzaEFzU3RyaW5nKCkpOwogfQogCiBFbmdpbmU6On5FbmdpbmUoKQpAQCAtMjkxLDkgKzI5MSw5
IEBAIHZvaWQgRW5naW5lOjppbml0aWFsaXplKENvbXBsZXRpb25DYWxsYmFjayYmIGNhbGxiYWNr
KQogICAgIGlmICghc2hvdWxkQ29tcHV0ZVNhbHQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0
cmluZyBzYWx0UGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChtX3Jvb3RQYXRoLCAic2FsdCJfcyk7CisgICAgU3RyaW5nIHNhbHRQYXRoID0gRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fcm9vdFBhdGgsICJzYWx0Il9zKTsKICAg
ICBtX2lvUXVldWUtPmRpc3BhdGNoKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMp
LCBzYWx0UGF0aCA9IFdURk1vdmUoc2FsdFBhdGgpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKG1fcm9vdFBhdGgpOworICAgICAg
ICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMobV9yb290UGF0aCk7CiAgICAgICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlz
KSwgc2FsdCA9IHJlYWRPck1ha2VTYWx0KHNhbHRQYXRoKV0oKSBtdXRhYmxlIHsKICAgICAgICAg
ICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzgzLDkgKzM4
Myw5IEBAIHZvaWQgRW5naW5lOjp3cml0ZUZpbGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgTmV0
d29ya0NhY2hlOjpEYXRhJiYgZGF0YSwgV2ViQ29yCiAgICAgbV9wZW5kaW5nV3JpdGVDYWxsYmFj
a3MuYWRkKCsrbV9wZW5kaW5nQ2FsbGJhY2tzQ291bnRlciwgV1RGTW92ZShjYWxsYmFjaykpOwog
ICAgIG1faW9RdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhp
cyksIGlkZW50aWZpZXIgPSBtX3BlbmRpbmdDYWxsYmFja3NDb3VudGVyLCBkYXRhID0gV1RGTW92
ZShkYXRhKSwgZmlsZW5hbWUgPSBmaWxlbmFtZS5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsK
IAotICAgICAgICBTdHJpbmcgZGlyZWN0b3J5UGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRp
cmVjdG9yeU5hbWUoZmlsZW5hbWUpOwotICAgICAgICBpZiAoIVdlYkNvcmU6OkZpbGVTeXN0ZW06
OmZpbGVFeGlzdHMoZGlyZWN0b3J5UGF0aCkpCi0gICAgICAgICAgICBXZWJDb3JlOjpGaWxlU3lz
dGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoZGlyZWN0b3J5UGF0aCk7CisgICAgICAgIFN0cmluZyBk
aXJlY3RvcnlQYXRoID0gRmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShmaWxlbmFtZSk7CisgICAg
ICAgIGlmICghRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhkaXJlY3RvcnlQYXRoKSkKKyAgICAgICAg
ICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhkaXJlY3RvcnlQYXRoKTsKIAogICAg
ICAgICBhdXRvIGNoYW5uZWwgPSBJT0NoYW5uZWw6Om9wZW4oZmlsZW5hbWUsIElPQ2hhbm5lbDo6
VHlwZTo6Q3JlYXRlKTsKICAgICAgICAgY2hhbm5lbC0+d3JpdGUoMCwgZGF0YSwgbnVsbHB0ciwg
W3RoaXMsIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIGlkZW50aWZpZXJdKGludCBlcnJv
cikgbXV0YWJsZSB7CkBAIC00NDUsNyArNDQ1LDcgQEAgdm9pZCBFbmdpbmU6OnJlbW92ZUZpbGUo
Y29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9pb1F1ZXVl
LT5kaXNwYXRjaChbZmlsZW5hbWUgPSBmaWxlbmFtZS5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxl
IHsKLSAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShmaWxlbmFtZSk7Cisg
ICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZmlsZW5hbWUpOwogICAgIH0pOwogfQogCkBA
IC00ODcsOCArNDg3LDggQEAgdm9pZCBFbmdpbmU6OmZldGNoRW50cmllcyhib29sIHNob3VsZENv
bXB1dGVTaXplLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmUKICAgICB9CiAKICAgICBh
dXRvIHRhc2tDb3VudGVyID0gUmVhZE9yaWdpbnNUYXNrQ291bnRlcjo6Y3JlYXRlKFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICBmb3IgKGF1dG8mIGZvbGRlclBhdGggOiBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KG1fcm9vdFBhdGgsICIqIikpIHsKLSAgICAgICAg
aWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlSXNEaXJlY3RvcnkoZm9sZGVyUGF0aCwgV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6U2hvdWxkRm9sbG93U3ltYm9saWNMaW5rczo6Tm8pKQorICAgIGZv
ciAoYXV0byYgZm9sZGVyUGF0aCA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobV9yb290UGF0
aCwgIioiKSkgeworICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVJc0RpcmVjdG9yeShmb2xk
ZXJQYXRoLCBGaWxlU3lzdGVtOjpTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpObykpCiAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgQ2FjaGVzOjpyZXRyaWV2ZU9yaWdpbkZyb21EaXJl
Y3RvcnkoZm9sZGVyUGF0aCwgKm1faW9RdWV1ZSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgc2hvdWxkQ29tcHV0ZVNpemUsIHRhc2tDb3VudGVyID0gdGFza0NvdW50ZXIuY29weVJl
ZigpXSAoYXV0byYmIG9yaWdpbikgbXV0YWJsZSB7CiAgICAgICAgICAgICBBU1NFUlQoUnVuTG9v
cDo6aXNNYWluKCkpOwpAQCAtNTMxLDggKzUzMSw4IEBAIHZvaWQgRW5naW5lOjpjbGVhckFsbENh
Y2hlc0Zyb21EaXNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIG1faW9RdWV1ZS0+ZGlzcGF0
Y2goW3BhdGggPSBtX3Jvb3RQYXRoLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICBmb3IgKGF1
dG8mIGZpbGVuYW1lIDogV2ViQ29yZTo6RmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShwYXRoLCAi
KiIpKSB7Ci0gICAgICAgICAgICBpZiAoV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZUlzRGlyZWN0
b3J5KGZpbGVuYW1lLCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpTaG91bGRGb2xsb3dTeW1ib2xpY0xp
bmtzOjpObykpCisgICAgICAgIGZvciAoYXV0byYgZmlsZW5hbWUgOiBGaWxlU3lzdGVtOjpsaXN0
RGlyZWN0b3J5KHBhdGgsICIqIikpIHsKKyAgICAgICAgICAgIGlmIChGaWxlU3lzdGVtOjpmaWxl
SXNEaXJlY3RvcnkoZmlsZW5hbWUsIEZpbGVTeXN0ZW06OlNob3VsZEZvbGxvd1N5bWJvbGljTGlu
a3M6Ok5vKSkKICAgICAgICAgICAgICAgICBkZWxldGVEaXJlY3RvcnlSZWN1cnNpdmVseShmaWxl
bmFtZSk7CiAgICAgICAgIH0KICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKQEAgLTU2Miw4ICs1NjIsOCBAQCB2b2lkIEVuZ2luZTo6
Y2xlYXJDYWNoZXNGb3JPcmlnaW5Gcm9tRGlzayhjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEmIG9yaQogCiAgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3Jl
Z2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAKLSAgICBmb3IgKGF1
dG8mIGZvbGRlclBhdGggOiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KG1fcm9v
dFBhdGgsICIqIikpIHsKLSAgICAgICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlSXNE
aXJlY3RvcnkoZm9sZGVyUGF0aCwgV2ViQ29yZTo6RmlsZVN5c3RlbTo6U2hvdWxkRm9sbG93U3lt
Ym9saWNMaW5rczo6Tm8pKQorICAgIGZvciAoYXV0byYgZm9sZGVyUGF0aCA6IEZpbGVTeXN0ZW06
Omxpc3REaXJlY3RvcnkobV9yb290UGF0aCwgIioiKSkgeworICAgICAgICBpZiAoIUZpbGVTeXN0
ZW06OmZpbGVJc0RpcmVjdG9yeShmb2xkZXJQYXRoLCBGaWxlU3lzdGVtOjpTaG91bGRGb2xsb3dT
eW1ib2xpY0xpbmtzOjpObykpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgQ2FjaGVz
OjpyZXRyaWV2ZU9yaWdpbkZyb21EaXJlY3RvcnkoZm9sZGVyUGF0aCwgKm1faW9RdWV1ZSwgW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgb3JpZ2luLCBjYWxsYmFja0FnZ3Jl
Z2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpLCBmb2xkZXJQYXRoXSAoT3B0aW9u
YWw8V2ViQ29yZTo6Q2xpZW50T3JpZ2luPiYmIGZvbGRlck9yaWdpbikgbXV0YWJsZSB7CiAgICAg
ICAgICAgICBpZiAoIWZvbGRlck9yaWdpbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcApp
bmRleCAxOTEzNDcwY2RkMjIwY2UzYmU5NzVkZjk5MDBlZjM1MGQwNzE3NjNjLi4xZjYwOGNmNTI1
Zjk5NmIyNGVhNDExMzYwMGU4ZTI5Y2IyODdjMjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNo
ZXMuY3BwCkBAIC00MiwxMiArNDIsMTIgQEAgdXNpbmcgbmFtZXNwYWNlIE5ldHdvcmtDYWNoZTsK
IAogc3RhdGljIGlubGluZSBTdHJpbmcgY2FjaGVzTGlzdEZpbGVuYW1lKGNvbnN0IFN0cmluZyYg
Y2FjaGVzUm9vdFBhdGgpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChjYWNoZXNSb290UGF0aCwgImNhY2hlc2xpc3QiX3MpOworICAg
IHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY2FjaGVzUm9vdFBh
dGgsICJjYWNoZXNsaXN0Il9zKTsKIH0KIAogc3RhdGljIGlubGluZSBTdHJpbmcgY2FjaGVzT3Jp
Z2luRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBjYWNoZXNSb290UGF0aCkKIHsKLSAgICByZXR1cm4g
V2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNhY2hlc1Jvb3RQ
YXRoLCAib3JpZ2luIl9zKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KGNhY2hlc1Jvb3RQYXRoLCAib3JpZ2luIl9zKTsKIH0KIAogQ2FjaGVzOjp+Q2Fj
aGVzKCkKQEAgLTU4LDcgKzU4LDcgQEAgQ2FjaGVzOjp+Q2FjaGVzKCkKIHZvaWQgQ2FjaGVzOjpy
ZXRyaWV2ZU9yaWdpbkZyb21EaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBmb2xkZXJQYXRoLCBXb3Jr
UXVldWUmIHF1ZXVlLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29y
ZTo6Q2xpZW50T3JpZ2luPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBxdWV1ZS5k
aXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwg
ZmlsZW5hbWUgPSBjYWNoZXNPcmlnaW5GaWxlbmFtZShmb2xkZXJQYXRoKV0oKSBtdXRhYmxlIHsK
LSAgICAgICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGZpbGVuYW1lKSkg
eworICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZmlsZW5hbWUpKSB7CiAgICAg
ICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0KTsKICAgICAgICAgICAgIH0pOwpAQCAtNDA4LDcg
KzQwOCw3IEBAIHZvaWQgQ2FjaGVzOjpyZWFkQ2FjaGVzRnJvbURpc2soV1RGOjpGdW5jdGlvbjx2
b2lkKEV4cGVjdGVkPFZlY3RvcjxDYWNoZT4sIEVycm9yCiAgICAgfQogCiAgICAgYXV0byBmaWxl
bmFtZSA9IGNhY2hlc0xpc3RGaWxlbmFtZShtX3Jvb3RQYXRoKTsKLSAgICBpZiAoIVdlYkNvcmU6
OkZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZmlsZW5hbWUpKSB7CisgICAgaWYgKCFGaWxlU3lzdGVt
OjpmaWxlRXhpc3RzKGZpbGVuYW1lKSkgewogICAgICAgICBjYWxsYmFjayhWZWN0b3I8Q2FjaGU+
IHsgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKaW5kZXggOWRiN2Q3NjhjNjNjZjhi
NGY1YmI3M2ViZmM2MDg0OGM4YzU4MTk2OS4uMTI0MGZiNDVkMjQwOGZkZGI1MDU2MjVkMGIyYWZh
Mzg3YzI1NGYzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlLmNwcApAQCAtMzEsMTMgKzMxLDEzIEBACiAjaW5jbHVkZSAiTmV0d29y
a0NhY2hlU3RhdGlzdGljcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtDYWNoZVN0b3JhZ2UuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL0NhY2hlVmFsaWRhdGlvbi5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmls
ZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSFRUUEhlYWRlck5hbWVzLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9Mb3dQb3dlck1vZGVOb3RpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3Qu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1NoYXJlZEJ1ZmZlci5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVk
ZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNp
bmNsdWRlIDx3dGYvUnVuTG9vcC5oPgpAQCAtNTAsNyArNTAsNyBAQAogbmFtZXNwYWNlIFdlYktp
dCB7CiBuYW1lc3BhY2UgTmV0d29ya0NhY2hlIHsKIAotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU6
OkZpbGVTeXN0ZW07Cit1c2luZyBuYW1lc3BhY2UgV1RGOjpGaWxlU3lzdGVtOwogCiBzdGF0aWMg
Y29uc3QgQXRvbWljU3RyaW5nJiByZXNvdXJjZVR5cGUoKQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVCbG9iU3RvcmFnZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUJsb2JTdG9y
YWdlLmNwcAppbmRleCBmNzNjNTBkYTE5NDc5MzM2NWQ2ZjUxZTA2MTQxYjUyMzcyN2U3MWVlLi45
NTM4ZGE2NDFiNDI3NDAwMmIyNzlhZGFhODdjMTU0MmQzNmEwMjdmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUJsb2JTdG9yYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUJs
b2JTdG9yYWdlLmNwcApAQCAtMjgsOCArMjgsOCBAQAogCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgog
I2luY2x1ZGUgIk5ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0Zp
bGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVt
Lmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYvU0hBMS5oPgogCkBA
IC01NywxNSArNTcsMTUgQEAgdm9pZCBCbG9iU3RvcmFnZTo6c3luY2hyb25pemUoKQogewogICAg
IEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6
bWFrZUFsbERpcmVjdG9yaWVzKGJsb2JEaXJlY3RvcnlQYXRoKCkpOworICAgIEZpbGVTeXN0ZW06
Om1ha2VBbGxEaXJlY3RvcmllcyhibG9iRGlyZWN0b3J5UGF0aCgpKTsKIAogICAgIG1fYXBwcm94
aW1hdGVTaXplID0gMDsKICAgICBhdXRvIGJsb2JEaXJlY3RvcnkgPSBibG9iRGlyZWN0b3J5UGF0
aCgpOwogICAgIHRyYXZlcnNlRGlyZWN0b3J5KGJsb2JEaXJlY3RvcnksIFt0aGlzLCAmYmxvYkRp
cmVjdG9yeV0oY29uc3QgU3RyaW5nJiBuYW1lLCBEaXJlY3RvcnlFbnRyeVR5cGUgdHlwZSkgewog
ICAgICAgICBpZiAodHlwZSAhPSBEaXJlY3RvcnlFbnRyeVR5cGU6OkZpbGUpCiAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIGF1dG8gcGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChibG9iRGlyZWN0b3J5LCBuYW1lKTsKLSAgICAgICAgYXV0byBm
aWxlUGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihw
YXRoKTsKKyAgICAgICAgYXV0byBwYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KGJsb2JEaXJlY3RvcnksIG5hbWUpOworICAgICAgICBhdXRvIGZpbGVQYXRoID0gRmls
ZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwogICAgICAgICBzdHJ1Y3Qg
c3RhdCBzdGF0OwogICAgICAgICA6OnN0YXQoZmlsZVBhdGguZGF0YSgpLCAmc3RhdCk7CiAgICAg
ICAgIC8vIE5vIGNsaWVudHMgbGVmdCBmb3IgdGhpcyBibG9iLgpAQCAtODEsNyArODEsNyBAQCB2
b2lkIEJsb2JTdG9yYWdlOjpzeW5jaHJvbml6ZSgpCiBTdHJpbmcgQmxvYlN0b3JhZ2U6OmJsb2JQ
YXRoRm9ySGFzaChjb25zdCBTSEExOjpEaWdlc3QmIGhhc2gpIGNvbnN0CiB7CiAgICAgYXV0byBo
YXNoQXNTdHJpbmcgPSBTSEExOjpoZXhEaWdlc3QoaGFzaCk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6
OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChibG9iRGlyZWN0b3J5UGF0aCgp
LCBTdHJpbmc6OmZyb21VVEY4KGhhc2hBc1N0cmluZykpOworICAgIHJldHVybiBGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoYmxvYkRpcmVjdG9yeVBhdGgoKSwgU3RyaW5nOjpm
cm9tVVRGOChoYXNoQXNTdHJpbmcpKTsKIH0KIAogQmxvYlN0b3JhZ2U6OkJsb2IgQmxvYlN0b3Jh
Z2U6OmFkZChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IERhdGEmIGRhdGEpCkBAIC05Myw4ICs5
Myw4IEBAIEJsb2JTdG9yYWdlOjpCbG9iIEJsb2JTdG9yYWdlOjphZGQoY29uc3QgU3RyaW5nJiBw
YXRoLCBjb25zdCBEYXRhJiBkYXRhKQogICAgIGlmIChkYXRhLmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuIHsgZGF0YSwgaGFzaCB9OwogCi0gICAgYXV0byBibG9iUGF0aCA9IFdlYkNvcmU6OkZp
bGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihibG9iUGF0aEZvckhhc2goaGFzaCkp
OwotICAgIGF1dG8gbGlua1BhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24ocGF0aCk7CisgICAgYXV0byBibG9iUGF0aCA9IEZpbGVTeXN0ZW06OmZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihibG9iUGF0aEZvckhhc2goaGFzaCkpOworICAgIGF1dG8gbGlu
a1BhdGggPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAgICAg
dW5saW5rKGxpbmtQYXRoLmRhdGEoKSk7CiAKICAgICBib29sIGJsb2JFeGlzdHMgPSBhY2Nlc3Mo
YmxvYlBhdGguZGF0YSgpLCBGX09LKSAhPSAtMTsKQEAgLTEyNyw3ICsxMjcsNyBAQCBCbG9iU3Rv
cmFnZTo6QmxvYiBCbG9iU3RvcmFnZTo6Z2V0KGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBB
U1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIGF1dG8gbGlua1BhdGggPSBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisgICAgYXV0byBs
aW5rUGF0aCA9IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKICAg
ICBhdXRvIGRhdGEgPSBtYXBGaWxlKGxpbmtQYXRoLmRhdGEoKSk7CiAKICAgICByZXR1cm4geyBk
YXRhLCBjb21wdXRlU0hBMShkYXRhLCBtX3NhbHQpIH07CkBAIC0xMzcsNyArMTM3LDcgQEAgdm9p
ZCBCbG9iU3RvcmFnZTo6cmVtb3ZlKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBBU1NFUlQo
IVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIGF1dG8gbGlua1BhdGggPSBXZWJDb3JlOjpGaWxl
U3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisgICAgYXV0byBsaW5rUGF0
aCA9IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKICAgICB1bmxp
bmsobGlua1BhdGguZGF0YSgpKTsKIH0KIApAQCAtMTQ1LDcgKzE0NSw3IEBAIHVuc2lnbmVkIEJs
b2JTdG9yYWdlOjpzaGFyZUNvdW50KGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBBU1NFUlQo
IVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIGF1dG8gbGlua1BhdGggPSBXZWJDb3JlOjpGaWxl
U3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisgICAgYXV0byBsaW5rUGF0
aCA9IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKICAgICBzdHJ1
Y3Qgc3RhdCBzdGF0OwogICAgIGlmICg6OnN0YXQobGlua1BhdGguZGF0YSgpLCAmc3RhdCkgPCAw
KQogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuY3BwCmluZGV4IDllMzE4OTQzZDdjNjEzOGNh
YTFjMWRjMzBmM2EyZjM1ZjMzMDI5ZjIuLjFhMzJhYTlhMGU1M2I0Njk1N2FhOGViM2JiMjM4NTZm
MGE4OTlmMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcApAQCAtMjYsOSArMjYsOSBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtDYWNoZURhdGEuaCIKIAotI2luY2x1ZGUgPFdlYkNv
cmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPGZjbnRsLmg+CiAjaW5jbHVkZSA8d3RmL0NyeXB0
b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4K
IAogI2lmICFPUyhXSU5ET1dTKQogI2luY2x1ZGUgPHN5cy9tbWFuLmg+CkBAIC0xNTYsNyArMTU2
LDcgQEAgc3RhdGljIFNhbHQgbWFrZVNhbHQoKQogT3B0aW9uYWw8U2FsdD4gcmVhZE9yTWFrZVNh
bHQoY29uc3QgU3RyaW5nJiBwYXRoKQogewogI2lmICFPUyhXSU5ET1dTKQotICAgIGF1dG8gY3Bh
dGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7
CisgICAgYXV0byBjcGF0aCA9IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihw
YXRoKTsKICAgICBhdXRvIGZkID0gb3BlbihjcGF0aC5kYXRhKCksIE9fUkRPTkxZLCAwKTsKICAg
ICBTYWx0IHNhbHQ7CiAgICAgYXV0byBieXRlc1JlYWQgPSByZWFkKGZkLCBzYWx0LmRhdGEoKSwg
c2FsdC5zaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5jcHAKaW5kZXggMjViZWY3ZjkyZThl
YjM2NmE5NGY0YmNkMzc5ODNiMTZhOWRlMzUwOC4uYjBiMmU3MTVlNjVkZDNhOTEzY2Y3MGQ3MDM2
NWE0NTBiYmViOTk2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uY3BwCkBAIC0yNyw4ICsyNyw4
IEBACiAjaW5jbHVkZSAiTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5oIgogCiAjaW5jbHVkZSAiTG9n
Z2luZy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9B
c3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYv
RnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKQEAgLTcwLDcgKzcw
LDcgQEAgc3RhdGljIERpcmVjdG9yeUVudHJ5VHlwZSBkaXJlY3RvcnlFbnRyeVR5cGUodWludDhf
dCBkdHlwZSkKIHZvaWQgdHJhdmVyc2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25z
dCBGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBEaXJlY3RvcnlFbnRyeVR5cGUpPiYgZnVu
Y3Rpb24pCiB7CiAjaWYgIU9TKFdJTkRPV1MpCi0gICAgRElSKiBkaXIgPSBvcGVuZGlyKFdlYkNv
cmU6OkZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCkpOwor
ICAgIERJUiogZGlyID0gb3BlbmRpcihGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24ocGF0aCkuZGF0YSgpKTsKICAgICBpZiAoIWRpcikKICAgICAgICAgcmV0dXJuOwogICAgIGRp
cmVudCogZHA7CkBAIC05NCwxMCArOTQsMTAgQEAgdm9pZCB0cmF2ZXJzZURpcmVjdG9yeShjb25z
dCBTdHJpbmcmIHBhdGgsIGNvbnN0IEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIEQKIHZv
aWQgZGVsZXRlRGlyZWN0b3J5UmVjdXJzaXZlbHkoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAg
IHRyYXZlcnNlRGlyZWN0b3J5KHBhdGgsIFsmcGF0aF0oY29uc3QgU3RyaW5nJiBuYW1lLCBEaXJl
Y3RvcnlFbnRyeVR5cGUgdHlwZSkgewotICAgICAgICBTdHJpbmcgZW50cnlQYXRoID0gV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhdGgsIG5hbWUpOworICAg
ICAgICBTdHJpbmcgZW50cnlQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KHBhdGgsIG5hbWUpOwogICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgICAgY2FzZSBE
aXJlY3RvcnlFbnRyeVR5cGU6OkZpbGU6Ci0gICAgICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVt
OjpkZWxldGVGaWxlKGVudHJ5UGF0aCk7CisgICAgICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVG
aWxlKGVudHJ5UGF0aCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBEaXJlY3Rv
cnlFbnRyeVR5cGU6OkRpcmVjdG9yeToKICAgICAgICAgICAgIGRlbGV0ZURpcmVjdG9yeVJlY3Vy
c2l2ZWx5KGVudHJ5UGF0aCk7CkBAIC0xMDUsMTkgKzEwNSwxOSBAQCB2b2lkIGRlbGV0ZURpcmVj
dG9yeVJlY3Vyc2l2ZWx5KGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICAgICAgLy8gVGhpcyBkb2Vz
bid0IGZvbGxvdyBzeW1saW5rcy4KICAgICAgICAgfQogICAgIH0pOwotICAgIFdlYkNvcmU6OkZp
bGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KHBhdGgpOworICAgIEZpbGVTeXN0ZW06OmRl
bGV0ZUVtcHR5RGlyZWN0b3J5KHBhdGgpOwogfQogCiBGaWxlVGltZXMgZmlsZVRpbWVzKGNvbnN0
IFN0cmluZyYgcGF0aCkKIHsKICNpZiBIQVZFKFNUQVRfQklSVEhUSU1FKQogICAgIHN0cnVjdCBz
dGF0IGZpbGVJbmZvOwotICAgIGlmIChzdGF0KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCksICZmaWxlSW5mbykpCisgICAgaWYgKHN0YXQo
RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSwgJmZpbGVJ
bmZvKSkKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICByZXR1cm4geyBXYWxsVGltZTo6ZnJvbVJh
d1NlY29uZHMoZmlsZUluZm8uc3RfYmlydGh0aW1lKSwgV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRz
KGZpbGVJbmZvLnN0X210aW1lKSB9OwogI2VsaWYgVVNFKFNPVVApCiAgICAgLy8gVGhlcmUncyBu
byBzdF9iaXJ0aHRpbWUgaW4gc29tZSBvcGVyYXRpbmcgc3lzdGVtcyBsaWtlIExpbnV4LCBzbyB3
ZSB1c2UgeGF0dHJzIHRvIHNldC9nZXQgdGhlIGNyZWF0aW9uIHRpbWUuCi0gICAgR1JlZlB0cjxH
RmlsZT4gZmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKFdlYkNvcmU6OkZpbGVT
eXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCkpKTsKKyAgICBHUmVm
UHRyPEdGaWxlPiBmaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoRmlsZVN5c3Rl
bTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSkpOwogICAgIEdSZWZQdHI8
R0ZpbGVJbmZvPiBmaWxlSW5mbyA9IGFkb3B0R1JlZihnX2ZpbGVfcXVlcnlfaW5mbyhmaWxlLmdl
dCgpLCAieGF0dHI6OmJpcnRodGltZSx0aW1lOjptb2RpZmllZCIsIEdfRklMRV9RVUVSWV9JTkZP
X05PTkUsIG51bGxwdHIsIG51bGxwdHIpKTsKICAgICBpZiAoIWZpbGVJbmZvKQogICAgICAgICBy
ZXR1cm4geyB9OwpAQCAtMTQxLDcgKzE0MSw3IEBAIHZvaWQgdXBkYXRlRmlsZU1vZGlmaWNhdGlv
blRpbWVJZk5lZWRlZChjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgfQogI2lmICFPUyhXSU5ET1dT
KQogICAgIC8vIFRoaXMgcmVhbGx5IHVwZGF0ZXMgYm90aCB0aGUgYWNjZXNzIHRpbWUgYW5kIHRo
ZSBtb2RpZmljYXRpb24gdGltZS4KLSAgICB1dGltZXMoV2ViQ29yZTo6RmlsZVN5c3RlbTo6Zmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSwgbnVsbHB0cik7CisgICAgdXRpbWVz
KEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCksIG51bGxw
dHIpOwogI2VuZGlmCiB9CiAKQEAgLTE1Niw3ICsxNTYsNyBAQCBib29sIGlzU2FmZVRvVXNlTWVt
b3J5TWFwRm9yUGF0aChjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgYXR0cmxpc3QgYXR0ckxpc3Qg
PSB7IH07CiAgICAgYXR0ckxpc3QuYml0bWFwY291bnQgPSBBVFRSX0JJVF9NQVBfQ09VTlQ7CiAg
ICAgYXR0ckxpc3QuY29tbW9uYXR0ciA9IEFUVFJfQ01OX0RBVEFfUFJPVEVDVF9GTEFHUzsKLSAg
ICBpbnQzMl90IGVycm9yID0gZ2V0YXR0cmxpc3QoV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSwgJmF0dHJMaXN0LCAmYXR0ckJ1ZmZlciwg
c2l6ZW9mKGF0dHJCdWZmZXIpLCBGU09QVF9OT0ZPTExPVyk7CisgICAgaW50MzJfdCBlcnJvciA9
IGdldGF0dHJsaXN0KEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5k
YXRhKCksICZhdHRyTGlzdCwgJmF0dHJCdWZmZXIsIHNpemVvZihhdHRyQnVmZmVyKSwgRlNPUFRf
Tk9GT0xMT1cpOwogICAgIGlmIChlcnJvcikgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihO
ZXR3b3JrLCAiVW5hYmxlIHRvIGdldCBjYWNoZSBkaXJlY3RvcnkgcHJvdGVjdGlvbiBjbGFzcywg
ZGlzYWJsaW5nIHVzZSBvZiBzaGFyZWQgbWFwcGVkIG1lbW9yeSIpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZUZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5oCmluZGV4IDdkY2NlNmM0YzM2NzI4ZTkzMTU4MzNh
NTMyOWJkNTZkNWM0MTJiOGEuLjE4MzFhMzUxYzliMGZmNTA1ZGY5YWRjN2Y3YzAzYWY3MDFkNmM4
ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlRmlsZVN5c3RlbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5oCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEg
b25jZQogCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8d3RmL0Zp
bGVTeXN0ZW0uaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiBuYW1lc3BhY2UgTmV0d29ya0NhY2hl
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlSU9DaGFubmVsQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbENvY29hLm1tCmluZGV4IDM2OWJjZjk3M2YyZGNlZTBh
M2Q0Mzk2MzQ1MzcwYjY0NjIxZTlmMDguLmM2NTIxNjRjYTE4OGEwN2RhNTdiY2RlNzVmM2EyMjUy
ZTE4MmYwODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlSU9DaGFubmVsQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxDb2NvYS5tbQpAQCAtNDEsNyArNDEs
NyBAQCBJT0NoYW5uZWw6OklPQ2hhbm5lbChjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBUeXBlIHR5
cGUpCiAgICAgOiBtX3BhdGgoZmlsZVBhdGgpCiAgICAgLCBtX3R5cGUodHlwZSkKIHsKLSAgICBh
dXRvIHBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
ZmlsZVBhdGgpOworICAgIGF1dG8gcGF0aCA9IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihmaWxlUGF0aCk7CiAgICAgaW50IG9mbGFnOwogICAgIG1vZGVfdCBtb2RlOwogICAg
IGJvb2wgdXNlTG93SU9Qcmlvcml0eSA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxTb3VwLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsU291
cC5jcHAKaW5kZXggNTM5MmM3OTA1NjlmZDY2NTdhMjFhMjYyMGNiMDUxZWZiZWVmMDQ1OS4uYjU2
Zjk2NTUzMTJjZGFkMGMxMDhkY2NjNmVmMTcyOTk1YWVkMWE1YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxTb3VwLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlP
Q2hhbm5lbFNvdXAuY3BwCkBAIC00MSw3ICs0MSw3IEBAIElPQ2hhbm5lbDo6SU9DaGFubmVsKGNv
bnN0IFN0cmluZyYgZmlsZVBhdGgsIFR5cGUgdHlwZSkKICAgICA6IG1fcGF0aChmaWxlUGF0aCkK
ICAgICAsIG1fdHlwZSh0eXBlKQogewotICAgIGF1dG8gcGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0
ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWxlUGF0aCk7CisgICAgYXV0byBwYXRoID0g
RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVQYXRoKTsKICAgICBHUmVm
UHRyPEdGaWxlPiBmaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgocGF0aC5kYXRh
KCkpKTsKICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAgIGNhc2UgVHlwZTo6Q3JlYXRlOiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZVN0YXRpc3RpY3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTdGF0aXN0aWNzLmNwcAppbmRleCBiNGExMzE0ZWI0YjE1ZWUwMzMyZjc0ZTkyMWUy
ZmM4NzE5MDY0YzM3Li42MWJlZjFlMTFjM2NmODM3NWY3MzkyNWI3MjNiOTE2ZmIzMWViMzdlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZVN0YXRpc3RpY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3RhdGlzdGljcy5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgc3RkOjp1bmlxdWVf
cHRyPFN0YXRpc3RpY3M+IFN0YXRpc3RpY3M6Om9wZW4oQ2FjaGUmIGNhY2hlLCBjb25zdCBTdHJp
bmcmIGNhY2hlUGEKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgU3Ry
aW5nIGRhdGFiYXNlUGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChjYWNoZVBhdGgsIFN0YXRpc3RpY3NEYXRhYmFzZU5hbWUpOworICAgIFN0cmluZyBk
YXRhYmFzZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY2FjaGVQ
YXRoLCBTdGF0aXN0aWNzRGF0YWJhc2VOYW1lKTsKICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxTdGF0aXN0aWNzPihjYWNoZSwgZGF0YWJhc2VQYXRoKTsKIH0KIApAQCAtOTgsNyArOTgsNyBA
QCB2b2lkIFN0YXRpc3RpY3M6OmluaXRpYWxpemUoY29uc3QgU3RyaW5nJiBkYXRhYmFzZVBhdGgp
CiAgICAgc2VyaWFsQmFja2dyb3VuZElPUXVldWUoKS5kaXNwYXRjaChbdGhpcywgZGF0YWJhc2VQ
YXRoID0gZGF0YWJhc2VQYXRoLmlzb2xhdGVkQ29weSgpLCBuZXR3b3JrQ2FjaGVQYXRoID0gbV9j
YWNoZS5yZWNvcmRzUGF0aCgpLCBzdGFydFRpbWVdIHsKICAgICAgICAgV2ViQ29yZTo6U1FMaXRl
VHJhbnNhY3Rpb25JblByb2dyZXNzQXV0b0NvdW50ZXIgdHJhbnNhY3Rpb25Db3VudGVyOwogCi0g
ICAgICAgIGlmICghV2ViQ29yZTo6RmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKFdlYkNv
cmU6OkZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUoZGF0YWJhc2VQYXRoKSkpCisgICAgICAgIGlm
ICghRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5h
bWUoZGF0YWJhc2VQYXRoKSkpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgTE9HKE5l
dHdvcmtDYWNoZSwgIihOZXR3b3JrUHJvY2VzcykgT3BlbmluZyBuZXR3b3JrIGNhY2hlIHN0YXRp
c3RpY3MgZGF0YWJhc2UgYXQgJXMuLi4iLCBkYXRhYmFzZVBhdGgudXRmOCgpLmRhdGEoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVTdG9yYWdlLmNwcAppbmRleCA0ZWE3NDMwZmEyMDQ0ZTkwMTRhODk5MDRkNWJiYzFlYjY1
Yjc5Y2M2Li5jMjZhYTFiOTZjNzEzYTgwMDM3ZmQxYzU3ODY1ZGI5NzJiNjRhZWVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3Jh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlU3RvcmFnZS5jcHAKQEAgLTE0NSwyOSArMTQ1LDI5IEBAIHB1YmxpYzoKIHN0YXRpYyBTdHJp
bmcgbWFrZVZlcnNpb25lZERpcmVjdG9yeVBhdGgoY29uc3QgU3RyaW5nJiBiYXNlRGlyZWN0b3J5
UGF0aCkKIHsKICAgICBTdHJpbmcgdmVyc2lvblN1YmRpcmVjdG9yeSA9IHZlcnNpb25EaXJlY3Rv
cnlQcmVmaXggKyBTdHJpbmc6Om51bWJlcihTdG9yYWdlOjp2ZXJzaW9uKTsKLSAgICByZXR1cm4g
V2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGJhc2VEaXJlY3Rv
cnlQYXRoLCB2ZXJzaW9uU3ViZGlyZWN0b3J5KTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGJhc2VEaXJlY3RvcnlQYXRoLCB2ZXJzaW9uU3ViZGlyZWN0
b3J5KTsKIH0KIAogc3RhdGljIFN0cmluZyBtYWtlUmVjb3Jkc0RpcmVjdG9yeVBhdGgoY29uc3Qg
U3RyaW5nJiBiYXNlRGlyZWN0b3J5UGF0aCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1ha2VWZXJzaW9uZWREaXJlY3RvcnlQYXRo
KGJhc2VEaXJlY3RvcnlQYXRoKSwgcmVjb3Jkc0RpcmVjdG9yeU5hbWUpOworICAgIHJldHVybiBG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobWFrZVZlcnNpb25lZERpcmVjdG9y
eVBhdGgoYmFzZURpcmVjdG9yeVBhdGgpLCByZWNvcmRzRGlyZWN0b3J5TmFtZSk7CiB9CiAKIHN0
YXRpYyBTdHJpbmcgbWFrZUJsb2JEaXJlY3RvcnlQYXRoKGNvbnN0IFN0cmluZyYgYmFzZURpcmVj
dG9yeVBhdGgpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChtYWtlVmVyc2lvbmVkRGlyZWN0b3J5UGF0aChiYXNlRGlyZWN0b3J5UGF0
aCksIGJsb2JzRGlyZWN0b3J5TmFtZSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChtYWtlVmVyc2lvbmVkRGlyZWN0b3J5UGF0aChiYXNlRGlyZWN0b3J5
UGF0aCksIGJsb2JzRGlyZWN0b3J5TmFtZSk7CiB9CiAKIHN0YXRpYyBTdHJpbmcgbWFrZVNhbHRG
aWxlUGF0aChjb25zdCBTdHJpbmcmIGJhc2VEaXJlY3RvcnlQYXRoKQogewotICAgIHJldHVybiBX
ZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobWFrZVZlcnNpb25l
ZERpcmVjdG9yeVBhdGgoYmFzZURpcmVjdG9yeVBhdGgpLCBzYWx0RmlsZU5hbWUpOworICAgIHJl
dHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobWFrZVZlcnNpb25lZERp
cmVjdG9yeVBhdGgoYmFzZURpcmVjdG9yeVBhdGgpLCBzYWx0RmlsZU5hbWUpOwogfQogCiBSZWZQ
dHI8U3RvcmFnZT4gU3RvcmFnZTo6b3Blbihjb25zdCBTdHJpbmcmIGNhY2hlUGF0aCwgTW9kZSBt
b2RlKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBpZiAoIVdlYkNv
cmU6OkZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhtYWtlVmVyc2lvbmVkRGlyZWN0b3J5
UGF0aChjYWNoZVBhdGgpKSkKKyAgICBpZiAoIUZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3Rvcmll
cyhtYWtlVmVyc2lvbmVkRGlyZWN0b3J5UGF0aChjYWNoZVBhdGgpKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgYXV0byBzYWx0ID0gcmVhZE9yTWFrZVNhbHQobWFrZVNhbHRGaWxlUGF0
aChjYWNoZVBhdGgpKTsKICAgICBpZiAoIXNhbHQpCkBAIC0xODAsMTMgKzE4MCwxMyBAQCB2b2lk
IHRyYXZlcnNlUmVjb3Jkc0ZpbGVzKGNvbnN0IFN0cmluZyYgcmVjb3Jkc1BhdGgsIGNvbnN0IFN0
cmluZyYgZXhwZWN0ZWRUeXBlLAogICAgIHRyYXZlcnNlRGlyZWN0b3J5KHJlY29yZHNQYXRoLCBb
Jl0oY29uc3QgU3RyaW5nJiBwYXJ0aXRpb25OYW1lLCBEaXJlY3RvcnlFbnRyeVR5cGUgZW50cnlU
eXBlKSB7CiAgICAgICAgIGlmIChlbnRyeVR5cGUgIT0gRGlyZWN0b3J5RW50cnlUeXBlOjpEaXJl
Y3RvcnkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIFN0cmluZyBwYXJ0aXRpb25QYXRo
ID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZHNQ
YXRoLCBwYXJ0aXRpb25OYW1lKTsKKyAgICAgICAgU3RyaW5nIHBhcnRpdGlvblBhdGggPSBGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3Jkc1BhdGgsIHBhcnRpdGlvbk5h
bWUpOwogICAgICAgICB0cmF2ZXJzZURpcmVjdG9yeShwYXJ0aXRpb25QYXRoLCBbJl0oY29uc3Qg
U3RyaW5nJiBhY3R1YWxUeXBlLCBEaXJlY3RvcnlFbnRyeVR5cGUgZW50cnlUeXBlKSB7CiAgICAg
ICAgICAgICBpZiAoZW50cnlUeXBlICE9IERpcmVjdG9yeUVudHJ5VHlwZTo6RGlyZWN0b3J5KQog
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGlmICghZXhwZWN0ZWRUeXBlLmlz
RW1wdHkoKSAmJiBleHBlY3RlZFR5cGUgIT0gYWN0dWFsVHlwZSkKICAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgICAgICBTdHJpbmcgcmVjb3JkRGlyZWN0b3J5UGF0aCA9IFdlYkNvcmU6
OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXJ0aXRpb25QYXRoLCBhY3R1
YWxUeXBlKTsKKyAgICAgICAgICAgIFN0cmluZyByZWNvcmREaXJlY3RvcnlQYXRoID0gRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhcnRpdGlvblBhdGgsIGFjdHVhbFR5cGUp
OwogICAgICAgICAgICAgdHJhdmVyc2VEaXJlY3RvcnkocmVjb3JkRGlyZWN0b3J5UGF0aCwgWyZm
dW5jdGlvbiwgJnJlY29yZERpcmVjdG9yeVBhdGgsICZhY3R1YWxUeXBlXShjb25zdCBTdHJpbmcm
IGZpbGVOYW1lLCBEaXJlY3RvcnlFbnRyeVR5cGUgZW50cnlUeXBlKSB7CiAgICAgICAgICAgICAg
ICAgaWYgKGVudHJ5VHlwZSAhPSBEaXJlY3RvcnlFbnRyeVR5cGU6OkZpbGUgfHwgZmlsZU5hbWUu
bGVuZ3RoKCkgPCBLZXk6Omhhc2hTdHJpbmdMZW5ndGgoKSkKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOwpAQCAtMjA2LDE4ICsyMDYsMTggQEAgc3RhdGljIHZvaWQgZGVsZXRlRW1wdHlSZWNv
cmRzRGlyZWN0b3JpZXMoY29uc3QgU3RyaW5nJiByZWNvcmRzUGF0aCkKICAgICAgICAgICAgIHJl
dHVybjsKIAogICAgICAgICAvLyBEZWxldGUgW3R5cGVdIHN1Yi1mb2xkZXJzLgotICAgICAgICBT
dHJpbmcgcGFydGl0aW9uUGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChyZWNvcmRzUGF0aCwgcGFydGl0aW9uTmFtZSk7CisgICAgICAgIFN0cmluZyBw
YXJ0aXRpb25QYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29y
ZHNQYXRoLCBwYXJ0aXRpb25OYW1lKTsKICAgICAgICAgdHJhdmVyc2VEaXJlY3RvcnkocGFydGl0
aW9uUGF0aCwgWyZwYXJ0aXRpb25QYXRoXShjb25zdCBTdHJpbmcmIHN1YmRpck5hbWUsIERpcmVj
dG9yeUVudHJ5VHlwZSBlbnRyeVR5cGUpIHsKICAgICAgICAgICAgIGlmIChlbnRyeVR5cGUgIT0g
RGlyZWN0b3J5RW50cnlUeXBlOjpEaXJlY3RvcnkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
CiAgICAgICAgICAgICAvLyBMZXQgc3lzdGVtIGZpZ3VyZSBvdXQgaWYgaXQgaXMgcmVhbGx5IGVt
cHR5LgotICAgICAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3Rv
cnkoV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhcnRpdGlv
blBhdGgsIHN1YmRpck5hbWUpKTsKKyAgICAgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5
RGlyZWN0b3J5KEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXJ0aXRpb25Q
YXRoLCBzdWJkaXJOYW1lKSk7CiAgICAgICAgIH0pOwogCiAgICAgICAgIC8vIERlbGV0ZSBbUGFy
dGl0aW9uXSBmb2xkZXJzLgogICAgICAgICAvLyBMZXQgc3lzdGVtIGZpZ3VyZSBvdXQgaWYgaXQg
aXMgcmVhbGx5IGVtcHR5LgotICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVFbXB0
eURpcmVjdG9yeShXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
cmVjb3Jkc1BhdGgsIHBhcnRpdGlvbk5hbWUpKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRl
RW1wdHlEaXJlY3RvcnkoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29y
ZHNQYXRoLCBwYXJ0aXRpb25OYW1lKSk7CiAgICAgfSk7CiB9CiAKQEAgLTMwMCwxMSArMzAwLDEx
IEBAIHZvaWQgU3RvcmFnZTo6c3luY2hyb25pemUoKQogCiAgICAgICAgIFN0cmluZyBhbnlUeXBl
OwogICAgICAgICB0cmF2ZXJzZVJlY29yZHNGaWxlcyhyZWNvcmRzUGF0aCgpLCBhbnlUeXBlLCBb
Jl0oY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBoYXNoU3RyaW5nLCBjb25z
dCBTdHJpbmcmIHR5cGUsIGJvb2wgaXNCbG9iLCBjb25zdCBTdHJpbmcmIHJlY29yZERpcmVjdG9y
eVBhdGgpIHsKLSAgICAgICAgICAgIGF1dG8gZmlsZVBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3JkRGlyZWN0b3J5UGF0aCwgZmlsZU5hbWUp
OworICAgICAgICAgICAgYXV0byBmaWxlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChyZWNvcmREaXJlY3RvcnlQYXRoLCBmaWxlTmFtZSk7CiAKICAgICAgICAgICAg
IEtleTo6SGFzaFR5cGUgaGFzaDsKICAgICAgICAgICAgIGlmICghS2V5OjpzdHJpbmdUb0hhc2go
aGFzaFN0cmluZywgaGFzaCkpIHsKLSAgICAgICAgICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVt
OjpkZWxldGVGaWxlKGZpbGVQYXRoKTsKKyAgICAgICAgICAgICAgICBGaWxlU3lzdGVtOjpkZWxl
dGVGaWxlKGZpbGVQYXRoKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9
CiAKQEAgLTMxOCw3ICszMTgsNyBAQCB2b2lkIFN0b3JhZ2U6OnN5bmNocm9uaXplKCkKIAogICAg
ICAgICAgICAgaWYgKHNob3VsZENvbXB1dGVFeGFjdFJlY29yZHNTaXplKSB7CiAgICAgICAgICAg
ICAgICAgbG9uZyBsb25nIGZpbGVTaXplID0gMDsKLSAgICAgICAgICAgICAgICBXZWJDb3JlOjpG
aWxlU3lzdGVtOjpnZXRGaWxlU2l6ZShmaWxlUGF0aCwgZmlsZVNpemUpOworICAgICAgICAgICAg
ICAgIEZpbGVTeXN0ZW06OmdldEZpbGVTaXplKGZpbGVQYXRoLCBmaWxlU2l6ZSk7CiAgICAgICAg
ICAgICAgICAgcmVjb3Jkc1NpemUgKz0gZmlsZVNpemU7CiAgICAgICAgICAgICB9CiAKQEAgLTM4
MSwxMiArMzgxLDEyIEBAIGJvb2wgU3RvcmFnZTo6bWF5Q29udGFpbkJsb2IoY29uc3QgS2V5JiBr
ZXkpIGNvbnN0CiBTdHJpbmcgU3RvcmFnZTo6cmVjb3JkRGlyZWN0b3J5UGF0aEZvcktleShjb25z
dCBLZXkmIGtleSkgY29uc3QKIHsKICAgICBBU1NFUlQoIWtleS50eXBlKCkuaXNFbXB0eSgpKTsK
LSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmRzUGF0
aCgpLCBrZXkucGFydGl0aW9uSGFzaEFzU3RyaW5nKCkpLCBrZXkudHlwZSgpKTsKKyAgICByZXR1
cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmRzUGF0aCgpLCBrZXkucGFydGl0aW9uSGFzaEFzU3Ry
aW5nKCkpLCBrZXkudHlwZSgpKTsKIH0KIAogU3RyaW5nIFN0b3JhZ2U6OnJlY29yZFBhdGhGb3JL
ZXkoY29uc3QgS2V5JiBrZXkpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmREaXJlY3RvcnlQYXRoRm9yS2V5KGtl
eSksIGtleS5oYXNoQXNTdHJpbmcoKSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChyZWNvcmREaXJlY3RvcnlQYXRoRm9yS2V5KGtleSksIGtleS5oYXNo
QXNTdHJpbmcoKSk7CiB9CiAKIHN0YXRpYyBTdHJpbmcgYmxvYlBhdGhGb3JSZWNvcmRQYXRoKGNv
bnN0IFN0cmluZyYgcmVjb3JkUGF0aCkKQEAgLTYyOSw3ICs2MjksNyBAQCB2b2lkIFN0b3JhZ2U6
OmRlbGV0ZUZpbGVzKGNvbnN0IEtleSYga2V5KQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNN
YWluKCkpOwogCi0gICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShyZWNvcmRQYXRo
Rm9yS2V5KGtleSkpOworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUocmVjb3JkUGF0aEZvcktl
eShrZXkpKTsKICAgICBtX2Jsb2JTdG9yYWdlLnJlbW92ZShibG9iUGF0aEZvcktleShrZXkpKTsK
IH0KIApAQCAtODA5LDcgKzgwOSw3IEBAIHZvaWQgU3RvcmFnZTo6ZGlzcGF0Y2hXcml0ZU9wZXJh
dGlvbihzdGQ6OnVuaXF1ZV9wdHI8V3JpdGVPcGVyYXRpb24+IHdyaXRlT3BlcmF0CiAgICAgICAg
IGF1dG8gcmVjb3JkRGlyZWN0b3JQYXRoID0gcmVjb3JkRGlyZWN0b3J5UGF0aEZvcktleSh3cml0
ZU9wZXJhdGlvbi5yZWNvcmQua2V5KTsKICAgICAgICAgYXV0byByZWNvcmRQYXRoID0gcmVjb3Jk
UGF0aEZvcktleSh3cml0ZU9wZXJhdGlvbi5yZWNvcmQua2V5KTsKIAotICAgICAgICBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMocmVjb3JkRGlyZWN0b3JQYXRoKTsKKyAg
ICAgICAgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKHJlY29yZERpcmVjdG9yUGF0aCk7
CiAKICAgICAgICAgKyt3cml0ZU9wZXJhdGlvbi5hY3RpdmVDb3VudDsKIApAQCAtOTE3LDcgKzkx
Nyw3IEBAIHZvaWQgU3RvcmFnZTo6dHJhdmVyc2UoY29uc3QgU3RyaW5nJiB0eXBlLCBPcHRpb25T
ZXQ8VHJhdmVyc2VGbGFnPiBmbGFncywgVHJhdmVyCiAgICAgICAgICAgICBpZiAoaXNCbG9iKQog
ICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgYXV0byByZWNvcmRQYXRoID0g
V2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZERpcmVj
dG9yeVBhdGgsIGZpbGVOYW1lKTsKKyAgICAgICAgICAgIGF1dG8gcmVjb3JkUGF0aCA9IEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmREaXJlY3RvcnlQYXRoLCBmaWxl
TmFtZSk7CiAKICAgICAgICAgICAgIGRvdWJsZSB3b3J0aCA9IC0xOwogICAgICAgICAgICAgaWYg
KHRyYXZlcnNlT3BlcmF0aW9uLmZsYWdzICYgVHJhdmVyc2VGbGFnOjpDb21wdXRlV29ydGgpCkBA
IC0xMDA5LDEzICsxMDA5LDEzIEBAIHZvaWQgU3RvcmFnZTo6Y2xlYXIoY29uc3QgU3RyaW5nJiB0
eXBlLCBXYWxsVGltZSBtb2RpZmllZFNpbmNlVGltZSwgQ29tcGxldGlvbkhhCiAgICAgaW9RdWV1
ZSgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG1vZGlm
aWVkU2luY2VUaW1lLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpLCB0eXBlID0gdHlwZS5pc29sYXRlZENvcHkoKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGF1
dG8gcmVjb3Jkc1BhdGggPSB0aGlzLT5yZWNvcmRzUGF0aCgpOwogICAgICAgICB0cmF2ZXJzZVJl
Y29yZHNGaWxlcyhyZWNvcmRzUGF0aCwgdHlwZSwgW21vZGlmaWVkU2luY2VUaW1lXShjb25zdCBT
dHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIGhhc2hTdHJpbmcsIGNvbnN0IFN0cmluZyYg
dHlwZSwgYm9vbCBpc0Jsb2IsIGNvbnN0IFN0cmluZyYgcmVjb3JkRGlyZWN0b3J5UGF0aCkgewot
ICAgICAgICAgICAgYXV0byBmaWxlUGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChyZWNvcmREaXJlY3RvcnlQYXRoLCBmaWxlTmFtZSk7CisgICAgICAg
ICAgICBhdXRvIGZpbGVQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KHJlY29yZERpcmVjdG9yeVBhdGgsIGZpbGVOYW1lKTsKICAgICAgICAgICAgIGlmIChtb2RpZmll
ZFNpbmNlVGltZSA+IC1XYWxsVGltZTo6aW5maW5pdHkoKSkgewogICAgICAgICAgICAgICAgIGF1
dG8gdGltZXMgPSBmaWxlVGltZXMoZmlsZVBhdGgpOwogICAgICAgICAgICAgICAgIGlmICh0aW1l
cy5tb2RpZmljYXRpb24gPCBtb2RpZmllZFNpbmNlVGltZSkKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6
ZGVsZXRlRmlsZShmaWxlUGF0aCk7CisgICAgICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxl
KGZpbGVQYXRoKTsKICAgICAgICAgfSk7CiAKICAgICAgICAgZGVsZXRlRW1wdHlSZWNvcmRzRGly
ZWN0b3JpZXMocmVjb3Jkc1BhdGgpOwpAQCAtMTA4OSw3ICsxMDg5LDcgQEAgdm9pZCBTdG9yYWdl
OjpzaHJpbmsoKQogICAgICAgICAgICAgaWYgKGlzQmxvYikKICAgICAgICAgICAgICAgICByZXR1
cm47CiAKLSAgICAgICAgICAgIGF1dG8gcmVjb3JkUGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmREaXJlY3RvcnlQYXRoLCBmaWxlTmFtZSk7
CisgICAgICAgICAgICBhdXRvIHJlY29yZFBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQocmVjb3JkRGlyZWN0b3J5UGF0aCwgZmlsZU5hbWUpOwogICAgICAgICAgICAg
YXV0byBibG9iUGF0aCA9IGJsb2JQYXRoRm9yUmVjb3JkUGF0aChyZWNvcmRQYXRoKTsKIAogICAg
ICAgICAgICAgYXV0byB0aW1lcyA9IGZpbGVUaW1lcyhyZWNvcmRQYXRoKTsKQEAgLTExMDEsNyAr
MTEwMSw3IEBAIHZvaWQgU3RvcmFnZTo6c2hyaW5rKCkKICAgICAgICAgICAgIExPRyhOZXR3b3Jr
Q2FjaGVTdG9yYWdlLCAiRGVsZXRpb24gcHJvYmFiaWxpdHk9JWYgYm9keUxpbmtDb3VudD0lZCBz
aG91bGREZWxldGU9JWQiLCBwcm9iYWJpbGl0eSwgYm9keVNoYXJlQ291bnQsIHNob3VsZERlbGV0
ZSk7CiAKICAgICAgICAgICAgIGlmIChzaG91bGREZWxldGUpIHsKLSAgICAgICAgICAgICAgICBX
ZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVGaWxlKHJlY29yZFBhdGgpOworICAgICAgICAgICAg
ICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUocmVjb3JkUGF0aCk7CiAgICAgICAgICAgICAgICAg
bV9ibG9iU3RvcmFnZS5yZW1vdmUoYmxvYlBhdGgpOwogICAgICAgICAgICAgfQogICAgICAgICB9
KTsKQEAgLTExMzcsNyArMTEzNyw3IEBAIHZvaWQgU3RvcmFnZTo6ZGVsZXRlT2xkVmVyc2lvbnMo
KQogICAgICAgICAgICAgICAgIHJldHVybjsKICNlbmRpZgogCi0gICAgICAgICAgICBhdXRvIG9s
ZFZlcnNpb25QYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KGNhY2hlUGF0aCwgc3ViZGlyTmFtZSk7CisgICAgICAgICAgICBhdXRvIG9sZFZlcnNpb25Q
YXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNhY2hlUGF0aCwgc3Vi
ZGlyTmFtZSk7CiAgICAgICAgICAgICBMT0coTmV0d29ya0NhY2hlU3RvcmFnZSwgIihOZXR3b3Jr
UHJvY2VzcykgZGVsZXRpbmcgb2xkIGNhY2hlIHZlcnNpb24sIHBhdGggJXMiLCBvbGRWZXJzaW9u
UGF0aC51dGY4KCkuZGF0YSgpKTsKIAogICAgICAgICAgICAgZGVsZXRlRGlyZWN0b3J5UmVjdXJz
aXZlbHkob2xkVmVyc2lvblBhdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KaW5kZXggZjhhYzIwYWNk
MWMzM2E1YmRiODg0MGRjMTFkZWJkODhiYWMwMTdiOC4uM2RiOTBhMTIwYzEyNmVmOWI2MDBlMzgz
YzAzMzRlNDM3YmM2NWYzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCkBAIC0zNiwxMSArMzYsMTEg
QEAKICNpbXBvcnQgIk5ldHdvcmtTZXNzaW9uQ29jb2EuaCIKICNpbXBvcnQgIldlYkNvcmVBcmd1
bWVudENvZGVycy5oIgogI2ltcG9ydCA8V2ViQ29yZS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5o
PgotI2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgog
I2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbXBvcnQgPHBhbC9zcGkvY2Yv
Q0ZOZXR3b3JrU1BJLmg+CisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8d3Rm
L01haW5UaHJlYWQuaD4KICNpbXBvcnQgPHd0Zi9Qcm9jZXNzUHJpdmlsZWdlLmg+CiAjaW1wb3J0
IDx3dGYvdGV4dC9CYXNlNjQuaD4KQEAgLTQwMCw4ICs0MDAsOCBAQCB2b2lkIE5ldHdvcmtEYXRh
VGFza0NvY29hOjpzZXRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbihjb25zdCBXVEY6OlN0cmluZyYg
ZmlsZW5hbQogCiAgICAgbV90YXNrLmdldCgpLl9wYXRoVG9Eb3dubG9hZFRhc2tGaWxlID0gbV9w
ZW5kaW5nRG93bmxvYWRMb2NhdGlvbjsKIAotICAgIGlmIChhbGxvd092ZXJ3cml0ZSAmJiBXZWJD
b3JlOjpGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRpb24pKQot
ICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGZpbGVuYW1lKTsKKyAgICBp
ZiAoYWxsb3dPdmVyd3JpdGUgJiYgRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhtX3BlbmRpbmdEb3du
bG9hZExvY2F0aW9uKSkKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShmaWxlbmFtZSk7
CiB9CiAKIGJvb2wgTmV0d29ya0RhdGFUYXNrQ29jb2E6OnRyeVBhc3N3b3JkQmFzZWRBdXRoZW50
aWNhdGlvbihjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdl
LCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29j
b2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9u
Q29jb2EubW0KaW5kZXggMGVjZDg4NmViNDBmMDgwMmIxMTJjYjc3Nzk2MTUyZjUxODkzNzQ0Mi4u
N2VhZGZkZTYwYTA0YTExODY0MTY1OTY4N2Q4NzljN2I0YzM4NmRlZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2Nv
YS5tbQpAQCAtNzc3LDcgKzc3Nyw3IEBAIC0gKHZvaWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9u
ICopc2Vzc2lvbiBkYXRhVGFzazooTlNVUkxTZXNzaW9uRGF0YVRhc2sgKilkYXRhCiAgICAgICAg
IGF1dG8mIGRvd25sb2FkTWFuYWdlciA9IF9zZXNzaW9uLT5uZXR3b3JrUHJvY2VzcygpLmRvd25s
b2FkTWFuYWdlcigpOwogICAgICAgICBhdXRvIGRvd25sb2FkID0gc3RkOjptYWtlX3VuaXF1ZTxX
ZWJLaXQ6OkRvd25sb2FkPihkb3dubG9hZE1hbmFnZXIsIGRvd25sb2FkSUQsIGRvd25sb2FkVGFz
aywgX3Nlc3Npb24tPnNlc3Npb25JRCgpLCBuZXR3b3JrRGF0YVRhc2stPnN1Z2dlc3RlZEZpbGVu
YW1lKCkpOwogICAgICAgICBuZXR3b3JrRGF0YVRhc2stPnRyYW5zZmVyU2FuZGJveEV4dGVuc2lv
blRvRG93bmxvYWQoKmRvd25sb2FkKTsKLSAgICAgICAgQVNTRVJUKFdlYkNvcmU6OkZpbGVTeXN0
ZW06OmZpbGVFeGlzdHMobmV0d29ya0RhdGFUYXNrLT5wZW5kaW5nRG93bmxvYWRMb2NhdGlvbigp
KSk7CisgICAgICAgIEFTU0VSVChGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG5ldHdvcmtEYXRhVGFz
ay0+cGVuZGluZ0Rvd25sb2FkTG9jYXRpb24oKSkpOwogICAgICAgICBkb3dubG9hZC0+ZGlkQ3Jl
YXRlRGVzdGluYXRpb24obmV0d29ya0RhdGFUYXNrLT5wZW5kaW5nRG93bmxvYWRMb2NhdGlvbigp
KTsKICAgICAgICAgZG93bmxvYWRNYW5hZ2VyLmRhdGFUYXNrQmVjYW1lRG93bmxvYWRUYXNrKGRv
d25sb2FkSUQsIFdURk1vdmUoZG93bmxvYWQpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nlc3NNYWMubW0gYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUHJvY2Vzc01hYy5tbQppbmRleCAzN2YzYjdmNzJh
YTUwMmIzMmJhODExZWM5YmEwOGY1ZTI1NTg2M2IyLi5mNWJmMDRhZTQ2NWY2MmI3NGQyYjE4YTgx
NzU5MDFhMTZlYTU1NWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L21hYy9OZXR3b3JrUHJvY2Vzc01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL21hYy9OZXR3b3JrUHJvY2Vzc01hYy5tbQpAQCAtMzgsMTIgKzM4LDEyIEBACiAjaW1wb3J0
ICJTdHJpbmdVdGlsaXRpZXMuaCIKICNpbXBvcnQgIldLRm91bmRhdGlvbi5oIgogI2ltcG9ydCA8
V2ViQ29yZS9DZXJ0aWZpY2F0ZUluZm8uaD4KLSNpbXBvcnQgPFdlYkNvcmUvRmlsZVN5c3RlbS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+CiAjaW1wb3J0IDxub3RpZnku
aD4KICNpbXBvcnQgPHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg+CiAjaW1wb3J0IDxwYWwvc3Bp
L2NvY29hL0xhdW5jaFNlcnZpY2VzU1BJLmg+CiAjaW1wb3J0IDxzeXNleGl0cy5oPgorI2ltcG9y
dCA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIu
aD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCmluZGV4
IDg4MmIxNDVmN2ZjYjEzNDMwNDI4YTJjYmU3M2E1NTMxOTZhOGE0ODQuLjFkMDlmODJiMzA3MjM1
MmRjM2I3MjMxMzllYTk4MWFhNDE2MzJhNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCkBAIC0zMiwxMiAr
MzIsMTIgQEAKICNpbmNsdWRlICJSZXNvdXJjZUNhY2hlc1RvQ2xlYXIuaCIKICNpbmNsdWRlICJX
ZWJDb29raWVNYW5hZ2VyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DZXJ0aWZpY2F0ZUluZm8uaD4K
LSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
b3VwTmV0d29ya1Nlc3Npb24uaD4KICNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KKyNpbmNsdWRl
IDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9SQU1TaXplLmg+CiAjaW5jbHVkZSA8
d3RmL2dsaWIvR1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KQEAg
LTEwOSw3ICsxMDksNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVO
ZXR3b3JrUHJvY2Vzcyhjb25zdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aQogICAgIEFTU0VSVCghcGFy
YW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnkuaXNFbXB0eSgpKTsKICAgICBtX2Rpc2tDYWNoZURp
cmVjdG9yeSA9IHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5OwogCi0gICAgU291cE5ldHdv
cmtTZXNzaW9uOjpjbGVhck9sZFNvdXBDYWNoZShXZWJDb3JlOjpGaWxlU3lzdGVtOjpkaXJlY3Rv
cnlOYW1lKG1fZGlza0NhY2hlRGlyZWN0b3J5KSk7CisgICAgU291cE5ldHdvcmtTZXNzaW9uOjpj
bGVhck9sZFNvdXBDYWNoZShGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKG1fZGlza0NhY2hlRGly
ZWN0b3J5KSk7CiAKICAgICBPcHRpb25TZXQ8TmV0d29ya0NhY2hlOjpDYWNoZTo6T3B0aW9uPiBj
YWNoZU9wdGlvbnMgeyBOZXR3b3JrQ2FjaGU6OkNhY2hlOjpPcHRpb246OlJlZ2lzdGVyTm90aWZ5
IH07CiAgICAgaWYgKHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlTmV0d29ya0NhY2hlRWZmaWNhY3lM
b2dnaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL3VuaXgvUGx1
Z2luUHJvY2Vzc01haW5Vbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy91bml4
L1BsdWdpblByb2Nlc3NNYWluVW5peC5jcHAKaW5kZXggMmJkMmVkNTlhZTZhMmUyNGIwNzQ4YjAz
Y2ViYzM1NjNjNjY3MTgzZS4uM2FkZTRjOTQzZjA5YjUxZDNjYzNiZWMyY2E5NjMzZjczZDEzNDk2
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJv
Y2Vzc01haW5Vbml4LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvdW5peC9Q
bHVnaW5Qcm9jZXNzTWFpblVuaXguY3BwCkBAIC0zNCw4ICszNCw4IEBACiAjaW5jbHVkZSAiTG9n
Z2luZy5oIgogI2luY2x1ZGUgIk5ldHNjYXBlUGx1Z2luLmgiCiAjaW5jbHVkZSAiUGx1Z2luUHJv
Y2Vzcy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHN0ZGxp
Yi5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKICNpZiBQTEFURk9STShHVEspCiAj
aW5jbHVkZSA8Z3RrL2d0ay5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGVy
c2lzdGVuY3lVdGlscy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QZXJzaXN0ZW5jeVV0aWxz
LmNwcAppbmRleCA1ZGJhOTY4YmQ3ZTBiMzhjM2QyMjY5NGQ2ZDVkMmU2YjA2OWQyYTgxLi5lY2E5
NjQxZDIwNTM0NWM4MTg5NmViNTY1ZGY2MjdmOTVlM2M1MTdhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9QZXJzaXN0ZW5jeVV0aWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9QZXJzaXN0ZW5jeVV0aWxzLmNwcApAQCAtMjcsOCArMjcsOCBAQAogI2luY2x1ZGUgIlBl
cnNpc3RlbmN5VXRpbHMuaCIKIAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlIDxXZWJD
b3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgorI2lu
Y2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KIAogbmFt
ZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5z
L05ldHNjYXBlL3VuaXgvTmV0c2NhcGVQbHVnaW5Nb2R1bGVVbml4LmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvdW5peC9OZXRzY2FwZVBsdWdpbk1vZHVsZVVuaXgu
Y3BwCmluZGV4IGZiMWQ5ZGM5MjZmZDY3Njc5M2Y0NTRhNzRmYTU1MWFlZTU3MGM4ZTUuLmVlYzQ3
NjExNWM4NDAzZjEzM2IzOTM2MDU5MmI4ZjBhMTAzYzM0NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvdW5peC9OZXRzY2FwZVBsdWdpbk1vZHVsZVVu
aXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvdW5peC9O
ZXRzY2FwZVBsdWdpbk1vZHVsZVVuaXguY3BwCkBAIC0zMCwxMiArMzAsMTIgQEAKIAogI2luY2x1
ZGUgIk5ldHNjYXBlQnJvd3NlckZ1bmNzLmgiCiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc1Byb3h5
LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8ZXJybm8uaD4K
ICNpbmNsdWRlIDxmY250bC5oPgogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAjaW5jbHVkZSA8c3lz
L3R5cGVzLmg+CiAjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0u
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy91bml4L1BsdWdp
blNlYXJjaFBhdGguY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy91bml4L1BsdWdp
blNlYXJjaFBhdGguY3BwCmluZGV4IGU4YWY5NjA0Y2U1NTk1YTQ0NGZlOGNhNTA0NWQzYTYxN2Fi
MjM2NGEuLjJiZDU0OWE5NWRmYTY3NWNlNDdmNTZkNzhhNTliNGY3MzE1YTExYWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvdW5peC9QbHVnaW5TZWFyY2hQYXRoLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL3VuaXgvUGx1Z2luU2VhcmNoUGF0
aC5jcHAKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQ
bHVnaW5TZWFyY2hQYXRoLmgiCiAKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KKyNp
bmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViTWVt
b3J5U2FtcGxlci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5oCmlu
ZGV4IDgwODEzZmVhMDUwZjIwNDkxYmQxYzhiNTBlOTBiMWNiYmJjYWEzNDQuLjcyMWNkYmYzODky
MjY0YmM5ZmQ3OTJiNTA4MzgzMGZmNTE5ZmM5YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYk1lbW9yeVNhbXBsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJN
ZW1vcnlTYW1wbGVyLmgKQEAgLTUyLDggKzUyLDggQEAKICNpZiBFTkFCTEUoTUVNT1JZX1NBTVBM
RVIpCiAKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9G
aWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgorI2luY2x1ZGUgPHd0Zi9G
aWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTg3LDcgKzg3LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGluaXRpYWxpemVUaW1lcnMoZG91YmxlKTsKICAgICB2b2lkIHNhbXBs
ZVRpbWVyRmlyZWQoKTsKICAgICB2b2lkIHN0b3BUaW1lckZpcmVkKCk7Ci0gICAgdm9pZCBhcHBl
bmRDdXJyZW50TWVtb3J5VXNhZ2VUb0ZpbGUoV2ViQ29yZTo6RmlsZVN5c3RlbTo6UGxhdGZvcm1G
aWxlSGFuZGxlJik7CisgICAgdm9pZCBhcHBlbmRDdXJyZW50TWVtb3J5VXNhZ2VUb0ZpbGUoRmls
ZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlJik7CiAgICAgdm9pZCBzZW5kTWVtb3J5UHJlc3N1
cmVFdmVudCgpOwogICAgIAogICAgIFN5c3RlbU1hbGxvY1N0YXRzIHNhbXBsZVN5c3RlbU1hbGxv
YygpIGNvbnN0OwpAQCAtOTUsNyArOTUsNyBAQCBwcml2YXRlOgogICAgIFdlYk1lbW9yeVN0YXRp
c3RpY3Mgc2FtcGxlV2ViS2l0KCkgY29uc3Q7CiAgICAgU3RyaW5nIHByb2Nlc3NOYW1lKCkgY29u
c3Q7CiAgICAgCi0gICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIG1f
c2FtcGxlTG9nRmlsZSB7IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVI
YW5kbGUgfTsKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgbV9zYW1wbGVMb2dG
aWxlIHsgRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSB9OwogICAgIFN0cmlu
ZyBtX3NhbXBsZUxvZ0ZpbGVQYXRoOwogICAgIFdlYkNvcmU6OlRpbWVyIG1fc2FtcGxlVGltZXI7
CiAgICAgV2ViQ29yZTo6VGltZXIgbV9zdG9wVGltZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9nbGliL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aEdMaWIuY3BwIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvZ2xpYi9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhHTGliLmNwcAppbmRleCBhNzBi
NDFhMDlhOTMwYmJkYzNiNTQxY2U2YTcwOGFkODliYmMyZjRiLi44ZDk5ZmNhMjU2MjVkZDgyYmRj
ZmNjMGU2NzQxNDZlMTk2YmU1MzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9n
bGliL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aEdMaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL2dsaWIvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoR0xpYi5jcHAKQEAgLTI3LDggKzI3LDggQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQcm9jZXNzRXhlY3V0YWJsZVBhdGguaCIK
IAotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPGdsaWIuaD4KKyNp
bmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dMaWJVdGlsaXRp
ZXMuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9pb3MvQ2hpbGRQcm9jZXNzSU9TLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL0No
aWxkUHJvY2Vzc0lPUy5tbQppbmRleCA4MWQ1NGYzYmYwMDllZmFmMDVkNDAyZDZmNWNmZWE4ZDEw
ZjRiNTY3Li42OWQ1M2NmZjMxNGE5NWNiYzRhODA3YWI5OGM5ZWNhODJmZTJiZTIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvQ2hpbGRQcm9jZXNzSU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9DaGlsZFByb2Nlc3NJT1MubW0KQEAgLTMxLDcgKzMxLDYg
QEAKIAogI2ltcG9ydCAiU2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1ldGVycy5oIgogI2ltcG9y
dCAiWFBDU2VydmljZUVudHJ5UG9pbnQuaCIKLSNpbXBvcnQgPFdlYkNvcmUvRmlsZVN5c3RlbS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9GbG9hdGluZ1BvaW50RW52aXJvbm1lbnQuaD4KICNpbXBvcnQg
PFdlYkNvcmUvU3lzdGVtVmVyc2lvbi5oPgogI2ltcG9ydCA8bWFjaC9tYWNoLmg+CkBAIC0zOSw2
ICszOCw3IEBACiAjaW1wb3J0IDxwd2QuaD4KICNpbXBvcnQgPHN0ZGxpYi5oPgogI2ltcG9ydCA8
c3lzZXhpdHMuaD4KKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKICNpZiBFTkFCTEUoTUFO
VUFMX1NBTkRCT1hJTkcpCiAjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJLmg+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQ2hpbGRQcm9jZXNzTWFjLm1tIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0NoaWxkUHJvY2Vzc01hYy5tbQppbmRleCAyMGM0YTlj
MWE0Mjc3NmU2NjcxMTBiNjE2MGE4ODI1OTMzODhmNWExLi4yZWM1ZmY2MGIyZjVhMmEwMjlkN2Ey
ZTQ1NzRhMzE0NzAzOTA0ODI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMv
Q2hpbGRQcm9jZXNzTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9DaGlsZFBy
b2Nlc3NNYWMubW0KQEAgLTM1LDcgKzM1LDYgQEAKICNpbXBvcnQgIldLRm91bmRhdGlvbi5oIgog
I2ltcG9ydCAiWFBDU2VydmljZUVudHJ5UG9pbnQuaCIKICNpbXBvcnQgPFdlYkNvcmUvRmlsZUhh
bmRsZS5oPgotI2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1N5c3RlbVZlcnNpb24uaD4KICNpbXBvcnQgPG1hY2gtby9keWxkLmg+CiAjaW1wb3J0IDxtYWNo
L21hY2guaD4KQEAgLTQ2LDYgKzQ1LDcgQEAKICNpbXBvcnQgPHN5cy9zeXNjdGwuaD4KICNpbXBv
cnQgPHN5c2V4aXRzLmg+CiAjaW1wb3J0IDx3dGYvRGF0YUxvZy5oPgorI2ltcG9ydCA8d3RmL0Zp
bGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0Zi9SYW5kb21OdW1iZXIuaD4KICNpbXBvcnQgPHd0Zi9T
Y29wZS5oPgogI2ltcG9ydCA8d3RmL1N5c3RlbVRyYWNpbmcuaD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL21hYy9TYW5kYm94RXh0ZW5zaW9uTWFjLm1tIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvbWFjL1NhbmRib3hFeHRlbnNpb25NYWMubW0KaW5kZXggMGNlYzk4NWM3ODVjNzcz
NjU5NzcyZDI0ZjFiNmQ1NzZkNzFkNzVlMS4uYWU4YzdlYjAyMjE0Nzc4YTA1YjcxNjliMzk0N2Zl
YmYxZjk5NTJiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1NhbmRib3hF
eHRlbnNpb25NYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1NhbmRib3hFeHRl
bnNpb25NYWMubW0KQEAgLTMxLDggKzMxLDggQEAKICNpbXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIK
ICNpbXBvcnQgIkRlY29kZXIuaCIKICNpbXBvcnQgIkVuY29kZXIuaCIKLSNpbXBvcnQgPFdlYkNv
cmUvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8c3lzL3N0YXQuaD4KKyNpbXBvcnQgPHd0Zi9GaWxl
U3lzdGVtLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJLmg+CiAjaW1wb3J0
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCmluZGV4IDM4ZjQyY2I5MWE1Mzhl
ZGU2OGUyMjU5NDEwNTBmOTZhZjY3Yjk2OTguLjA1YWU0MTYwMGYwNmJiYjE1MGM5OGM0YjAyZjE2
OWQxMTc4YjY5OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElD
b250ZW50UnVsZUxpc3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcApAQCAtNDgsNyArNDgsNyBAQAogCiBuYW1lc3Bh
Y2UgQVBJIHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ6Ok5ldHdvcmtDYWNoZTsKLXVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOjpGaWxlU3lzdGVtOwordXNpbmcgbmFtZXNwYWNlIFdURjo6RmlsZVN5
c3RlbTsKIAogQ29udGVudFJ1bGVMaXN0U3RvcmUmIENvbnRlbnRSdWxlTGlzdFN0b3JlOjpsZWdh
Y3lEZWZhdWx0U3RvcmUoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9BUElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KaW5kZXggNGEyZWMz
ODcyMzdmZmRjOGNhODk0NzE4NmZmZWQwZDVjYTRlYTc1NC4uMzg4NGY0M2MxZTIwYTEyOThiYTg4
NTdlYjFiMDkxNTVhOThiMDA3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCkBAIC0yOCw5
ICsyOCw4IEBACiAKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiU2Fu
ZGJveFV0aWxpdGllcy5oIgotCiAjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+Ci0j
aW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0u
aD4KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVB
cHBsaWNhdGlvbkNoZWNrcy5oPgpAQCAtMTY5LDcgKzE2OCw3IEBAIFdURjo6U3RyaW5nIFdlYnNp
dGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpCiAg
ICAgLy8gQ3VycmVudGx5LCB0aGUgdG9wIGxldmVsIG9mIHRoYXQgZGlyZWN0b3J5IGNvbnRhaW5z
IGVudGl0aWVzIHJlbGF0ZWQgdG8gV2ViU1FMIGRhdGFiYXNlcy4KICAgICAvLyBXZSBzaG91bGQg
Zml4IHRoaXMsIGFuZCBtb3ZlIFdlYlNRTCBpbnRvIGEgc3ViZGlyZWN0b3J5IChodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0ODA3KQogICAgIC8vIEluIHRoZSBtZWFu
dGltZSwgYW4gZW50aXR5IG5hbWUgcHJlZml4ZWQgd2l0aCB0aHJlZSB1bmRlcnNjb3JlcyB3aWxs
IG5vdCBjb25mbGljdCB3aXRoIGFueSBXZWJTUUwgZW50aXRpZXMuCi0gICAgcmV0dXJuIFdlYkNv
cmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChsZWdhY3lEZWZhdWx0V2Vi
U1FMRGF0YWJhc2VEaXJlY3RvcnkoKSwgIl9fX0luZGV4ZWREQiIpOworICAgIHJldHVybiBGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobGVnYWN5RGVmYXVsdFdlYlNRTERhdGFi
YXNlRGlyZWN0b3J5KCksICJfX19JbmRleGVkREIiKTsKIH0KIAogV1RGOjpTdHJpbmcgV2Vic2l0
ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRlRGF0YVN0b3Jl
R0xpYi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRlRGF0
YVN0b3JlR0xpYi5jcHAKaW5kZXggZTFjNDUyOWIzZDIxZWU1OGJmZWZiNWMxOGZlZmI1MTEyMmMw
MTYwZi4uZjVhYjkzMWNiZWQzYjc3MWJmM2NlYzgxMmNiNzQyZTQ5YmI2ODUzMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvQVBJV2Vic2l0ZURhdGFTdG9yZUdM
aWIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVE
YXRhU3RvcmVHTGliLmNwcApAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKIAotI2luY2x1ZGUgPFdlYkNvcmUvRmls
ZVN5c3RlbS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL2ds
aWIvR1VuaXF1ZVB0ci5oPgogCiAjaWYgUExBVEZPUk0oR1RLKQpAQCAtNDYsMTIgKzQ2LDEyIEBA
IFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGly
ZWN0b3J5KCkKIC8vIFdoeSBpcyBvbmx5IHRoaXMgZGlyZWN0b3J5IG5hbWVzcGFjZWQgdG8gYSBw
YXJ0aWN1bGFyIGFwcGxpY2F0aW9uPwogV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5
RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKGdfZ2V0X3ByZ25hbWUoKSksICJXZWJLaXRDYWNoZSIpKTsKKyAgICByZXR1
cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oRmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oZ19nZXRfcHJnbmFtZSgpKSwgIldlYktpdENhY2hlIikpOwogfQogCiBXVEY6
OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KCkK
IHsKLSAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVT
eXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfcHJnbmFtZSgp
KSwgIkNhY2hlU3RvcmFnZSIpKTsKKyAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVT
eXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfcHJnbmFtZSgp
KSwgIkNhY2hlU3RvcmFnZSIpKTsKIH0KIAogV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkKQEAgLTkxLDE5ICs5MSwxOSBAQCBX
VEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RpcmVjdG9yeSgpCiAKIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmNhY2hlRGlyZWN0
b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3RvcnlO
YW1lKQogewotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihnX2dldF91c2VyX2NhY2hlX2RpcigpKSwgZGlyZWN0b3J5TmFtZSk7CisgICAgcmV0
dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpzdHJp
bmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGdfZ2V0X3VzZXJfY2FjaGVfZGlyKCkpLCBk
aXJlY3RvcnlOYW1lKTsKIH0KIAogV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6d2Vic2l0
ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgV1RGOjpTdHJpbmcm
IGRpcmVjdG9yeU5hbWUpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKGdfZ2V0X3VzZXJfZGF0YV9kaXIoKSksIGRpcmVjdG9yeU5hbWUp
OworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5
c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihnX2dldF91c2VyX2RhdGFf
ZGlyKCkpLCBkaXJlY3RvcnlOYW1lKTsKIH0KIAogV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9y
ZTo6bGVnYWN5RGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKQogewogI2lmIFBMQVRG
T1JNKFdQRSkKICAgICBHVW5pcXVlUHRyPGdjaGFyPiBjYWNoZURpcmVjdG9yeShnX2J1aWxkX2Zp
bGVuYW1lKGdfZ2V0X3VzZXJfY2FjaGVfZGlyKCksICJ3cGUiLCAiYXBwY2FjaGUiLCBudWxscHRy
KSk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oY2FjaGVEaXJlY3RvcnkuZ2V0KCkpOworICAgIHJldHVybiBGaWxlU3lz
dGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNhY2hlRGlyZWN0b3J5Lmdl
dCgpKTsKICNlbmRpZgogICAgIHJldHVybiBkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9y
eSgpOwogfQpAQCAtMTEyLDcgKzExMiw3IEBAIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6
OmxlZ2FjeURlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKQogewogI2lmIFBMQVRGT1JNKFdQ
RSkKICAgICBHVW5pcXVlUHRyPGNoYXI+IGRpc2tDYWNoZURpcmVjdG9yeShnX2J1aWxkX2ZpbGVu
YW1lKGdfZ2V0X3VzZXJfY2FjaGVfZGlyKCksICJ3cGUiLCAiY2FjaGUiLCBudWxscHRyKSk7Ci0g
ICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZGlza0NhY2hlRGlyZWN0b3J5LmdldCgpKTsKKyAgICByZXR1cm4gRmlsZVN5c3Rl
bTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihkaXNrQ2FjaGVEaXJlY3Rvcnku
Z2V0KCkpOwogI2VuZGlmCiAgICAgcmV0dXJuIGRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3Rvcnko
KTsKIH0KQEAgLTEyMSw3ICsxMjEsNyBAQCBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjps
ZWdhY3lEZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKQogewogI2lmIFBMQVRGT1JNKFdQ
RSkKICAgICBHVW5pcXVlUHRyPGdjaGFyPiBkYXRhYmFzZURpcmVjdG9yeShnX2J1aWxkX2ZpbGVu
YW1lKGdfZ2V0X3VzZXJfZGF0YV9kaXIoKSwgIndwZSIsICJkYXRhYmFzZXMiLCBudWxscHRyKSk7
Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oZGF0YWJhc2VEaXJlY3RvcnkuZ2V0KCkpOworICAgIHJldHVybiBGaWxlU3lz
dGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRhdGFiYXNlRGlyZWN0b3J5
LmdldCgpKTsKICNlbmRpZgogICAgIHJldHVybiBkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3Rv
cnkoKTsKIH0KQEAgLTEzMCw3ICsxMzAsNyBAQCBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3Jl
OjpsZWdhY3lEZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKQogewogI2lmIFBMQVRG
T1JNKFdQRSkKICAgICBHVW5pcXVlUHRyPGdjaGFyPiBpbmRleGVkREJEYXRhYmFzZURpcmVjdG9y
eShnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfZGF0YV9kaXIoKSwgIndwZSIsICJkYXRhYmFz
ZXMiLCAiaW5kZXhlZGRiIiwgbnVsbHB0cikpOwotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lz
dGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGluZGV4ZWREQkRhdGFiYXNl
RGlyZWN0b3J5LmdldCgpKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihpbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeS5nZXQoKSk7CiAj
ZW5kaWYKICAgICByZXR1cm4gZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCk7CiB9
CkBAIC0xMzksNyArMTM5LDcgQEAgV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5
RGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpCiB7CiAjaWYgUExBVEZPUk0oV1BFKQogICAg
IEdVbmlxdWVQdHI8Z2NoYXI+IHN0b3JhZ2VEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFtZShnX2dl
dF91c2VyX2RhdGFfZGlyKCksICJ3cGUiLCAibG9jYWxzdG9yYWdlIiwgbnVsbHB0cikpOwotICAg
IHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKHN0b3JhZ2VEaXJlY3RvcnkuZ2V0KCkpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpz
dHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHN0b3JhZ2VEaXJlY3RvcnkuZ2V0KCkp
OwogI2VuZGlmCiAgICAgcmV0dXJuIGRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKTsKIH0K
QEAgLTE0OCw3ICsxNDgsNyBAQCBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lE
ZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpCiB7CiAjaWYgUExBVEZPUk0oV1BFKQogICAgIEdV
bmlxdWVQdHI8Z2NoYXI+IGNhY2hlRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNl
cl9jYWNoZV9kaXIoKSwgIndwZSIsICJtZWRpYWNhY2hlIiwgbnVsbHB0cikpOwotICAgIHJldHVy
biBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KGNhY2hlRGlyZWN0b3J5LmdldCgpKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6c3RyaW5nRnJv
bUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjYWNoZURpcmVjdG9yeS5nZXQoKSk7CiAjZW5kaWYK
ICAgICByZXR1cm4gZGVmYXVsdE1lZGlhQ2FjaGVEaXJlY3RvcnkoKTsKIH0KQEAgLTE1Nyw3ICsx
NTcsNyBAQCBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0TWVkaWFL
ZXlzU3RvcmFnZURpcmVjdG9yeSgpCiB7CiAjaWYgUExBVEZPUk0oV1BFKQogICAgIEdVbmlxdWVQ
dHI8Z2NoYXI+IG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFtZShnX2dl
dF91c2VyX2RhdGFfZGlyKCksICJ3cGUiLCAibWVkaWFrZXlzIiwgbnVsbHB0cikpOwotICAgIHJl
dHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkuZ2V0KCkpOworICAgIHJldHVybiBGaWxlU3lz
dGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKG1lZGlhS2V5c1N0b3JhZ2VE
aXJlY3RvcnkuZ2V0KCkpOwogI2VuZGlmCiAgICAgcmV0dXJuIGRlZmF1bHRNZWRpYUtleXNTdG9y
YWdlRGlyZWN0b3J5KCk7CiB9CkBAIC0xNjYsNyArMTY2LDcgQEAgU3RyaW5nIFdlYnNpdGVEYXRh
U3RvcmU6OmxlZ2FjeURlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKQog
ewogI2lmIFBMQVRGT1JNKFdQRSkKICAgICBHVW5pcXVlUHRyPGdjaGFyPiBkZXZpY2VJZEhhc2hT
YWx0c1N0b3JhZ2VEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFtZShnX2dldF91c2VyX2RhdGFfZGly
KCksICJ3cGUiLCAiZGV2aWNlaWRoYXNoc2FsdHMiLCBudWxscHRyKSk7Ci0gICAgcmV0dXJuIFdl
YkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGV2
aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5LmdldCgpKTsKKyAgICByZXR1cm4gRmlsZVN5
c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihkZXZpY2VJZEhhc2hTYWx0
c1N0b3JhZ2VEaXJlY3RvcnkuZ2V0KCkpOwogI2VuZGlmCiAgICAgcmV0dXJuIGRlZmF1bHREZXZp
Y2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKTsKIH0KQEAgLTE3NCw3ICsxNzQsNyBAQCBT
dHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3Rv
cmFnZURpcmVjdG9yeSgpCiBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZh
dWx0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKQogewogICAgIEdVbmlxdWVQdHI8
Z2NoYXI+IGphdmFTY3JpcHRDb3JlQ29uZmlnRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19n
ZXRfdXNlcl9kYXRhX2RpcigpLCBCQVNFX0RJUkVDVE9SWSwgIkphdmFTY3JpcHRDb3JlRGVidWci
LCBudWxscHRyKSk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21G
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oamF2YVNjcmlwdENvcmVDb25maWdEaXJlY3RvcnkuZ2V0
KCkpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKGphdmFTY3JpcHRDb3JlQ29uZmlnRGlyZWN0b3J5LmdldCgpKTsKIH0KIAogUmVmPFdl
YktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+IFdlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCmluZGV4IDY3NGE1ZGIwNDNjOGE2MGYzNjIw
YWE3YmEwMThjMWY5ODVlZGY4YTkuLmIwNDY2ZTkxNDA5MGJjMDU1OTY2ZTZiOWRmMzE5ZWEzMDRk
YjIzNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25E
YXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRh
dGFiYXNlLmNwcApAQCAtMjksMTEgKzI5LDExIEBACiAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9CaXRtYXBJbWFnZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5
c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NR
TGl0ZVN0YXRlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlVHJhbnNhY3Rpb24uaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lz
dGVtLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGYXZpY29uRGF0YWJhc2UuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmF2aWNvbkRhdGFiYXNl
LmNwcAppbmRleCA5YmU3MjUzZjg1ZTkxZGExMWI5NWVkMjgwOWViNDRiNWEzNzE1YTVhLi5lMDE2
NDg2ODE3MWE1ZDhiZWU4YTNlMTg2YWM2ODI1YzQ5MWQ5NzAwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZhdmljb25EYXRhYmFzZS5j
cHAKQEAgLTIzLDEyICsyMywxMiBAQAogI2luY2x1ZGUgIkljb25EYXRhYmFzZS5oIgogI2luY2x1
ZGUgIldlYktpdEZhdmljb25EYXRhYmFzZVByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJQcmVmZXJl
bmNlcy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvSW1hZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ludFNpemUuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1JlZlB0ckNhaXJvLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNp
bmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAj
aW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYvU2V0Rm9yU2NvcGUuaD4KICNp
bmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CkBAIC0yNzMsNyArMjczLDcgQEAgdm9pZCB3ZWJr
aXRGYXZpY29uRGF0YWJhc2VPcGVuKFdlYktpdEZhdmljb25EYXRhYmFzZSogZGF0YWJhc2UsIGNv
bnN0IFN0cmluZyYgcGEKICAgICBwcml2LT5pY29uRGF0YWJhc2UtPnNldEVuYWJsZWQodHJ1ZSk7
CiAgICAgcHJpdi0+aWNvbkRhdGFiYXNlLT5zZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKFdlYlBy
ZWZlcmVuY2VzOjphbnlQYWdlc0FyZVVzaW5nUHJpdmF0ZUJyb3dzaW5nKCkpOwogCi0gICAgaWYg
KCFwcml2LT5pY29uRGF0YWJhc2UtPm9wZW4oV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGlyZWN0b3J5
TmFtZShwYXRoKSwgV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKHBhdGgpKSkg
eworICAgIGlmICghcHJpdi0+aWNvbkRhdGFiYXNlLT5vcGVuKEZpbGVTeXN0ZW06OmRpcmVjdG9y
eU5hbWUocGF0aCksIEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShwYXRoKSkpIHsKICAgICAg
ICAgcHJpdi0+aWNvbkRhdGFiYXNlID0gbnVsbHB0cjsKICAgICAgICAgSWNvbkRhdGFiYXNlOjph
bGxvd0RhdGFiYXNlQ2xlYW51cCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZpbGVDaG9vc2VyUmVxdWVzdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3QuY3BwCmlu
ZGV4IDM3ZTZjY2EwY2ViY2U5MTQ3MzBlM2M2ZDQyNWM1ZmVmNzdmYjQ4NWYuLjA5OTgwYWFlMDY5
OWViY2U5ZDMzZTljNWE2OTdhMDJkZTA0NzAzZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZpbGVDaG9vc2VyUmVxdWVzdC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0LmNw
cApAQCAtMjUsOSArMjUsOSBAQAogI2luY2x1ZGUgIkFQSVN0cmluZy5oIgogI2luY2x1ZGUgIldl
YktpdEZpbGVDaG9vc2VyUmVxdWVzdFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJPcGVuUGFuZWxS
ZXN1bHRMaXN0ZW5lclByb3h5LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9UZXh0RW5jb2RpbmcuaD4KICNpbmNsdWRlIDxnbGliL2dpMThuLWxp
Yi5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgog
I2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVl
UHRyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRXZWJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dFdlYkNvbnRleHQuY3BwCmluZGV4IDBmMzllMTI1ZjNkYTZjNDgzOTZhNDBjOWNkZmU4ZjRjNDFk
OTY5YWUuLjY2ZDgzYTcxODhlNmNkYTcwZWYyYjQ5ZjI2Mzk5N2FjNGVmNjk1MGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQu
Y3BwCkBAIC0zMzMsMjAgKzMzMywyMCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJDb250ZXh0Q29u
c3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQogICAgIEdVbmlxdWVQdHI8Y2hhcj4gYnVuZGxlRmls
ZW5hbWUoZ19idWlsZF9maWxlbmFtZShpbmplY3RlZEJ1bmRsZURpcmVjdG9yeSgpLCBJTkpFQ1RF
RF9CVU5ETEVfRklMRU5BTUUsIG51bGxwdHIpKTsKIAogICAgIEFQSTo6UHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247Ci0gICAgY29uZmlndXJhdGlvbi5zZXRJbmplY3RlZEJ1
bmRsZVBhdGgoV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihidW5kbGVGaWxlbmFtZS5nZXQoKSkpOworICAgIGNvbmZpZ3VyYXRpb24uc2V0SW5q
ZWN0ZWRCdW5kbGVQYXRoKEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oYnVuZGxlRmlsZW5hbWUuZ2V0KCkpKTsKICAgICBjb25maWd1cmF0aW9uLnNldE1heGlt
dW1Qcm9jZXNzQ291bnQoMSk7CiAgICAgY29uZmlndXJhdGlvbi5zZXREaXNrQ2FjaGVTcGVjdWxh
dGl2ZVZhbGlkYXRpb25FbmFibGVkKHRydWUpOwogCiAgICAgV2ViS2l0V2ViQ29udGV4dCogd2Vi
Q29udGV4dCA9IFdFQktJVF9XRUJfQ09OVEVYVChvYmplY3QpOwogICAgIFdlYktpdFdlYkNvbnRl
eHRQcml2YXRlKiBwcml2ID0gd2ViQ29udGV4dC0+cHJpdjsKICAgICBpZiAocHJpdi0+d2Vic2l0
ZURhdGFNYW5hZ2VyICYmICF3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfaXNfZXBoZW1lcmFs
KHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpIHsKLSAgICAgICAgY29uZmlndXJhdGlv
bi5zZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJv
bUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0
X2xvY2FsX3N0b3JhZ2VfZGlyZWN0b3J5KHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkp
KTsKLSAgICAgICAgY29uZmlndXJhdGlvbi5zZXREaXNrQ2FjaGVEaXJlY3RvcnkoV2ViQ29yZTo6
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06
OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0X3dlYnNpdGVfZGF0YV9t
YW5hZ2VyX2dldF9kaXNrX2NhY2hlX2RpcmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIu
Z2V0KCkpKSwgbmV0d29ya0NhY2hlU3ViZGlyZWN0b3J5KSk7Ci0gICAgICAgIGNvbmZpZ3VyYXRp
b24uc2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeShXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJp
bmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdl
cl9nZXRfb2ZmbGluZV9hcHBsaWNhdGlvbl9jYWNoZV9kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURh
dGFNYW5hZ2VyLmdldCgpKSkpOwotICAgICAgICBjb25maWd1cmF0aW9uLnNldEluZGV4ZWREQkRh
dGFiYXNlRGlyZWN0b3J5KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24od2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9pbmRleGVkZGJf
ZGlyZWN0b3J5KHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpKTsKLSAgICAgICAgY29u
ZmlndXJhdGlvbi5zZXRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeShXZWJDb3JlOjpGaWxlU3lzdGVt
OjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHdlYmtpdF93ZWJzaXRlX2RhdGFf
bWFuYWdlcl9nZXRfd2Vic3FsX2RpcmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0
KCkpKSk7CisgICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KEZp
bGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0X3dlYnNp
dGVfZGF0YV9tYW5hZ2VyX2dldF9sb2NhbF9zdG9yYWdlX2RpcmVjdG9yeShwcml2LT53ZWJzaXRl
RGF0YU1hbmFnZXIuZ2V0KCkpKSk7CisgICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0RGlza0NhY2hl
RGlyZWN0b3J5KEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVt
OjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHdlYmtpdF93ZWJzaXRlX2RhdGFf
bWFuYWdlcl9nZXRfZGlza19jYWNoZV9kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2Vy
LmdldCgpKSksIG5ldHdvcmtDYWNoZVN1YmRpcmVjdG9yeSkpOworICAgICAgICBjb25maWd1cmF0
aW9uLnNldEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X29m
ZmxpbmVfYXBwbGljYXRpb25fY2FjaGVfZGlyZWN0b3J5KHByaXYtPndlYnNpdGVEYXRhTWFuYWdl
ci5nZXQoKSkpKTsKKyAgICAgICAgY29uZmlndXJhdGlvbi5zZXRJbmRleGVkREJEYXRhYmFzZURp
cmVjdG9yeShGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHdl
YmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfaW5kZXhlZGRiX2RpcmVjdG9yeShwcml2LT53
ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSk7CisgICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0V2Vi
U1FMRGF0YWJhc2VEaXJlY3RvcnkoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X3dlYnNxbF9kaXJlY3Rv
cnkocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSkpOwogICAgIH0gZWxzZSBpZiAoIXBy
aXYtPmxvY2FsU3RvcmFnZURpcmVjdG9yeS5pc051bGwoKSkKLSAgICAgICAgY29uZmlndXJhdGlv
bi5zZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJv
bUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkuZGF0
YSgpKSk7CisgICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KEZp
bGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+bG9jYWxT
dG9yYWdlRGlyZWN0b3J5LmRhdGEoKSkpOwogCiAgICAgcHJpdi0+cHJvY2Vzc1Bvb2wgPSBXZWJQ
cm9jZXNzUG9vbDo6Y3JlYXRlKGNvbmZpZ3VyYXRpb24pOwogCkBAIC05MjQsNyArOTI0LDcgQEAg
dm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2Zhdmljb25fZGF0YWJhc2VfZGlyZWN0b3J5KFdl
YktpdFdlYkNvbnRleHQqIGNvbnRleHQKICAgICBXZWJLaXRXZWJDb250ZXh0UHJpdmF0ZSogcHJp
diA9IGNvbnRleHQtPnByaXY7CiAgICAgZW5zdXJlRmF2aWNvbkRhdGFiYXNlKGNvbnRleHQpOwog
Ci0gICAgU3RyaW5nIGRpcmVjdG9yeVBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdG
cm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIFN0cmluZyBkaXJlY3RvcnlQ
YXRoID0gRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRo
KTsKICAgICAvLyBVc2UgZGVmYXVsdCBpZiBudWxscHRyIGlzIHBhc3NlZCBhcyBwYXJhbWV0ZXIu
CiAgICAgaWYgKGRpcmVjdG9yeVBhdGguaXNFbXB0eSgpKSB7CiAjaWYgUExBVEZPUk0oR1RLKQpA
QCAtOTMzLDcgKzkzMyw3IEBAIHZvaWQgd2Via2l0X3dlYl9jb250ZXh0X3NldF9mYXZpY29uX2Rh
dGFiYXNlX2RpcmVjdG9yeShXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0CiAgICAgICAgIGNvbnN0
IGNoYXIqIHBvcnREaXJlY3RvcnkgPSAid3BlIjsKICNlbmRpZgogICAgICAgICBHVW5pcXVlUHRy
PGdjaGFyPiBkYXRhYmFzZURpcmVjdG9yeShnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfY2Fj
aGVfZGlyKCksIHBvcnREaXJlY3RvcnksICJpY29uZGF0YWJhc2UiLCBudWxscHRyKSk7Ci0gICAg
ICAgIGRpcmVjdG9yeVBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKGRhdGFiYXNlRGlyZWN0b3J5LmdldCgpKTsKKyAgICAgICAgZGly
ZWN0b3J5UGF0aCA9IEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oZGF0YWJhc2VEaXJlY3RvcnkuZ2V0KCkpOwogICAgIH0KICAgICBwcml2LT5mYXZpY29uRGF0
YWJhc2VEaXJlY3RvcnkgPSBkaXJlY3RvcnlQYXRoLnV0ZjgoKTsKIApAQCAtOTQyLDcgKzk0Miw3
IEBAIHZvaWQgd2Via2l0X3dlYl9jb250ZXh0X3NldF9mYXZpY29uX2RhdGFiYXNlX2RpcmVjdG9y
eShXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0CiAgICAgICAgICJXZWJwYWdlSWNvbnMuZGIiLCBu
dWxscHRyKSk7CiAKICAgICAvLyBTZXR0aW5nIHRoZSBwYXRoIHdpbGwgY2F1c2UgdGhlIGljb24g
ZGF0YWJhc2UgdG8gYmUgb3BlbmVkLgotICAgIHdlYmtpdEZhdmljb25EYXRhYmFzZU9wZW4ocHJp
di0+ZmF2aWNvbkRhdGFiYXNlLmdldCgpLCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9t
RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZhdmljb25EYXRhYmFzZVBhdGguZ2V0KCkpKTsKKyAg
ICB3ZWJraXRGYXZpY29uRGF0YWJhc2VPcGVuKHByaXYtPmZhdmljb25EYXRhYmFzZS5nZXQoKSwg
RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmYXZpY29uRGF0
YWJhc2VQYXRoLmdldCgpKSk7CiAKICAgICBpZiAod2Via2l0X3dlYl9jb250ZXh0X2lzX2VwaGVt
ZXJhbChjb250ZXh0KSkKICAgICAgICAgd2Via2l0RmF2aWNvbkRhdGFiYXNlU2V0UHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZChwcml2LT5mYXZpY29uRGF0YWJhc2UuZ2V0KCksIHRydWUpOwpAQCAtMTAy
Niw3ICsxMDI2LDcgQEAgdm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2FkZGl0aW9uYWxfcGx1
Z2luc19kaXJlY3RvcnkoV2ViS2l0V2ViQ29udGV4dCogY29udGUKICAgICBnX3JldHVybl9pZl9m
YWlsKGRpcmVjdG9yeSk7CiAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLSAgICBj
b250ZXh0LT5wcml2LT5wcm9jZXNzUG9vbC0+c2V0QWRkaXRpb25hbFBsdWdpbnNEaXJlY3Rvcnko
V2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihk
aXJlY3RvcnkpKTsKKyAgICBjb250ZXh0LT5wcml2LT5wcm9jZXNzUG9vbC0+c2V0QWRkaXRpb25h
bFBsdWdpbnNEaXJlY3RvcnkoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihkaXJlY3RvcnkpKTsKICNlbmRpZgogfQogCkBAIC0xNDE4LDcgKzE0MTgsNyBAQCB2
b2lkIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfZGlza19jYWNoZV9kaXJlY3RvcnkoV2ViS2l0V2Vi
Q29udGV4dCogY29udGV4dCwgY29ucwogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dF
Ql9DT05URVhUKGNvbnRleHQpKTsKICAgICBnX3JldHVybl9pZl9mYWlsKGRpcmVjdG9yeSk7CiAK
LSAgICBjb250ZXh0LT5wcml2LT5wcm9jZXNzUG9vbC0+Y29uZmlndXJhdGlvbigpLnNldERpc2tD
YWNoZURpcmVjdG9yeShXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihkaXJlY3RvcnkpLCBuZXR3b3JrQ2FjaGVTdWJkaXJlY3RvcnkpKTsKKyAgICBjb250ZXh0LT5w
cml2LT5wcm9jZXNzUG9vbC0+Y29uZmlndXJhdGlvbigpLnNldERpc2tDYWNoZURpcmVjdG9yeShG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6c3RyaW5nRnJv
bUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihkaXJlY3RvcnkpLCBuZXR3b3JrQ2FjaGVTdWJkaXJl
Y3RvcnkpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmNwcAppbmRleCA3ZTFk
MTRiNjdiOTUzOGY0NzVlMGY4YWY0NTBhYWJkZWYyZTIxNTVlLi4xY2MwNjU0MTFlNzMxZmE2NzJj
NDM0ZjNiM2MwYWJlOWE1NjkzZWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5jcHAKQEAgLTI2
LDggKzI2LDggQEAKICNpbmNsdWRlICJXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJQcml2YXRlLmgi
CiAjaW5jbHVkZSAiV2ViS2l0V2Vic2l0ZURhdGFQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2Vic2l0
ZURhdGFGZXRjaE9wdGlvbi5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2lu
Y2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNp
bmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvV1RGR1R5
cGUuaD4KIApAQCAtMzYzLDEzICszNjMsMTMgQEAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlJiB3ZWJr
aXRXZWJzaXRlRGF0YU1hbmFnZXJHZXREYXRhU3RvcmUoV2ViS2l0V2Vic2l0ZURhdGFNYW4KICAg
ICBpZiAoIXByaXYtPndlYnNpdGVEYXRhU3RvcmUpIHsKICAgICAgICAgYXV0byBjb25maWd1cmF0
aW9uID0gV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOwogICAgICAgICBj
b25maWd1cmF0aW9uLT5zZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoIXByaXYtPmxvY2FsU3RvcmFn
ZURpcmVjdG9yeSA/Ci0gICAgICAgICAgICBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRM
b2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSA6IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21G
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+bG9jYWxTdG9yYWdlRGlyZWN0b3J5LmdldCgp
KSk7CisgICAgICAgICAgICBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRMb2NhbFN0b3Jh
Z2VEaXJlY3RvcnkoKSA6IEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24ocHJpdi0+bG9jYWxTdG9yYWdlRGlyZWN0b3J5LmdldCgpKSk7CiAgICAgICAgIGNvbmZp
Z3VyYXRpb24tPnNldE5ldHdvcmtDYWNoZURpcmVjdG9yeSghcHJpdi0+ZGlza0NhY2hlRGlyZWN0
b3J5ID8KLSAgICAgICAgICAgIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5ldHdvcmtD
YWNoZURpcmVjdG9yeSgpIDogV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24ocHJpdi0+ZGlza0NhY2hlRGlyZWN0b3J5LmdldCgpKSwgbmV0d29ya0NhY2hlU3ViZGly
ZWN0b3J5KSk7CisgICAgICAgICAgICBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3
b3JrQ2FjaGVEaXJlY3RvcnkoKSA6IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPmRp
c2tDYWNoZURpcmVjdG9yeS5nZXQoKSksIG5ldHdvcmtDYWNoZVN1YmRpcmVjdG9yeSkpOwogICAg
ICAgICBjb25maWd1cmF0aW9uLT5zZXRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCFwcml2LT5h
cHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID8KLSAgICAgICAgICAgIEFQSTo6V2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKSA6IFdlYkNvcmU6OkZpbGVT
eXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+YXBwbGljYXRp
b25DYWNoZURpcmVjdG9yeS5nZXQoKSkpOworICAgICAgICAgICAgQVBJOjpXZWJzaXRlRGF0YVN0
b3JlOjpkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpIDogRmlsZVN5c3RlbTo6c3Ry
aW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5hcHBsaWNhdGlvbkNhY2hlRGly
ZWN0b3J5LmdldCgpKSk7CiAgICAgICAgIGNvbmZpZ3VyYXRpb24tPnNldFdlYlNRTERhdGFiYXNl
RGlyZWN0b3J5KCFwcml2LT53ZWJTUUxEaXJlY3RvcnkgPwotICAgICAgICAgICAgQVBJOjpXZWJz
aXRlRGF0YVN0b3JlOjpkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKSA6IFdlYkNvcmU6
OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+d2Vi
U1FMRGlyZWN0b3J5LmdldCgpKSk7CisgICAgICAgICAgICBBUEk6OldlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpIDogRmlsZVN5c3RlbTo6c3RyaW5nRnJv
bUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT53ZWJTUUxEaXJlY3RvcnkuZ2V0KCkpKTsK
ICAgICAgICAgY29uZmlndXJhdGlvbi0+c2V0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeShBUEk6
OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkpOwog
ICAgICAgICBwcml2LT53ZWJzaXRlRGF0YVN0b3JlID0gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpj
cmVhdGVMZWdhY3koV1RGTW92ZShjb25maWd1cmF0aW9uKSk7CiAgICAgfQpAQCAtNTMyLDcgKzUz
Miw3IEBAIGNvbnN0IGdjaGFyKiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2Rpc2tf
Y2FjaGVfZGlyZWN0b3J5KFdlYktpdFdlYnNpdGVECiAKICAgICBpZiAoIXByaXYtPmRpc2tDYWNo
ZURpcmVjdG9yeSkgewogICAgICAgICAvLyBUaGUgZGVmYXVsdCBkaXJlY3RvcnkgYWxyZWFkeSBo
YXMgdGhlIHN1YmRpcmVjdG9yeS4KLSAgICAgICAgcHJpdi0+ZGlza0NhY2hlRGlyZWN0b3J5LnJl
c2V0KGdfc3RyZHVwKFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUoQVBJOjpXZWJz
aXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkpLnV0ZjgoKS5kYXRh
KCkpKTsKKyAgICAgICAgcHJpdi0+ZGlza0NhY2hlRGlyZWN0b3J5LnJlc2V0KGdfc3RyZHVwKEZp
bGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0
d29ya0NhY2hlRGlyZWN0b3J5KCkpLnV0ZjgoKS5kYXRhKCkpKTsKICAgICB9CiAgICAgcmV0dXJu
IHByaXYtPmRpc2tDYWNoZURpcmVjdG9yeS5nZXQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS93aW4vQVBJV2Vic2l0ZURhdGFTdG9yZVdpbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd2luL0FQSVdlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCmlu
ZGV4IDE5YmUyODhkNDgyZGFhZmRkMThlNGNmZGZlZGNlMjAzYWFjNzViZGQuLjMyMjViOTIxNzBk
N2M5OGI0YmU4NDVhY2NmZThkOGMxYjM2N2Q3YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS93aW4vQVBJV2Vic2l0ZURhdGFTdG9yZVdpbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL3dpbi9BUElXZWJzaXRlRGF0YVN0b3JlV2luLmNwcApAQCAt
MjYsNDMgKzI2LDQzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQVBJV2Vic2l0
ZURhdGFTdG9yZS5oIgogCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CisjaW5jbHVk
ZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogbmFtZXNwYWNlIEFQSSB7CiAKIFN0cmluZyBXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpCiB7Ci0gICAgcmV0
dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkFwcGxp
Y2F0aW9uQ2FjaGUiKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAi
QXBwbGljYXRpb25DYWNoZSIpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dENhY2hlU3RvcmFnZURpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpsb2NhbFVz
ZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkNhY2hlU3RvcmFnZSIpOworICAgIHJldHVy
biBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxV
c2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJDYWNoZVN0b3JhZ2UiKTsKIH0KIAogU3Ry
aW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKQogewot
ICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
V2ViQ29yZTo6RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCks
ICJOZXR3b3JrQ2FjaGUiKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgp
LCAiTmV0d29ya0NhY2hlIik7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKQogewotICAgIHJldHVybiBXZWJDb3JlOjpGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6bG9j
YWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJJbmRleGVkREIiKTsKKyAgICByZXR1
cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2Fs
VXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiSW5kZXhlZERCIik7CiB9CiAKIFN0cmlu
ZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVj
dG9yeSgpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VE
aXJlY3RvcnkoKSwgIlNlcnZpY2VXb3JrZXJzIik7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3Jh
Z2VEaXJlY3RvcnkoKSwgIlNlcnZpY2VXb3JrZXJzIik7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVT
eXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiTG9jYWxTdG9yYWdl
Iik7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxl
U3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkxvY2FsU3RvcmFn
ZSIpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlhS2V5c1N0b3Jh
Z2VEaXJlY3RvcnkoKQogewotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNT
dG9yYWdlRGlyZWN0b3J5KCksICJNZWRpYUtleVN0b3JhZ2UiKTsKKyAgICByZXR1cm4gRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNp
ZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiTWVkaWFLZXlTdG9yYWdlIik7CiB9CiAKIFN0cmluZyBX
ZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5
KCkKQEAgLTczLDU3ICs3Myw1NyBAQCBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERl
dmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpCiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0
b3JlOjpkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKQogewotICAgIHJldHVybiBXZWJD
b3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5
c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJXZWJTUUwiKTsKKyAg
ICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06
OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiV2ViU1FMIik7CiB9CiAKIFN0
cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVj
dG9yeSgpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VE
aXJlY3RvcnkoKSwgIlJlc291cmNlTG9hZFN0YXRpc3RpY3MiKTsKKyAgICByZXR1cm4gRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNp
ZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiUmVzb3VyY2VMb2FkU3RhdGlzdGljcyIpOwogfQogCiBT
dHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6Y2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oY29uc3QgU3RyaW5nJiBkaXJlY3RvcnlOYW1lKQogewotICAgIHJldHVybiBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksIGRpcmVjdG9yeU5hbWUpOwor
ICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3Rl
bTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksIGRpcmVjdG9yeU5hbWUpOwog
fQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6d2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBkaXJlY3RvcnlOYW1lKQogewotICAgIHJl
dHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksIGRpcmVj
dG9yeU5hbWUpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksIGRpcmVj
dG9yeU5hbWUpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdEFw
cGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKQogewotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6bG9jYWxV
c2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJBcHBsaWNhdGlvbkNhY2hlIik7CisgICAg
cmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjps
b2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkFwcGxpY2F0aW9uQ2FjaGUiKTsK
IH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHROZXR3b3JrQ2FjaGVE
aXJlY3RvcnkoKQogewotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9y
YWdlRGlyZWN0b3J5KCksICJOZXR3b3JrQ2FjaGUiKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3Rv
cmFnZURpcmVjdG9yeSgpLCAiTmV0d29ya0NhY2hlIik7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0
YVN0b3JlOjpsZWdhY3lEZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKQogewotICAgIHJl
dHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJXZWJT
UUwiKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZp
bGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiV2ViU1FMIik7
CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0SW5kZXhlZERCRGF0
YWJhc2VEaXJlY3RvcnkoKQogewotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lm
aWNTdG9yYWdlRGlyZWN0b3J5KCksICJJbmRleGVkREIiKTsKKyAgICByZXR1cm4gRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmlj
U3RvcmFnZURpcmVjdG9yeSgpLCAiSW5kZXhlZERCIik7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0
YVN0b3JlOjpsZWdhY3lEZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1
cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6
OkZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiTG9jYWxT
dG9yYWdlIik7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkxvY2Fs
U3RvcmFnZSIpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdE1l
ZGlhQ2FjaGVEaXJlY3RvcnkoKQogewotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3Bl
Y2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJNZWRpYUNhY2hlIik7CisgICAgcmV0dXJuIEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVj
aWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIk1lZGlhQ2FjaGUiKTsKIH0KIAogU3RyaW5nIFdlYnNp
dGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkKIHsK
LSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgp
LCAiTWVkaWFLZXlTdG9yYWdlIik7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3Rv
cnkoKSwgIk1lZGlhS2V5U3RvcmFnZSIpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6
bGVnYWN5RGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpCkBAIC0xMzQs
NyArMTM0LDcgQEAgU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHREZXZpY2VJ
ZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6
bGVnYWN5RGVmYXVsdEphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KCkKIHsKLSAgICBy
ZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNv
cmU6OkZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiSmF2
YVNjcmlwdENvcmVEZWJ1ZyIpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5
KCksICJKYXZhU2NyaXB0Q29yZURlYnVnIik7CiB9CiAKIFJlZjxXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uPiBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlQ29u
ZmlndXJhdGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0
aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1
dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCmluZGV4IDZjNGVkZWJiMTcyOWY3Y2Vm
YjQ4OTIyYTk1NjViMGU3ZWE1YjA2MTAuLjhmNTdiYWNhY2YyOTIzYjlkNzI0OTE1MjViMzRiNWI1
YjBmODY0NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24v
V2ViQXV0b21hdGlvblNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1
dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCkBAIC04MDQsNyArODA0LDcgQEAgdm9p
ZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6d2lsbENsb3NlUGFnZShjb25zdCBXZWJQYWdlUHJveHkm
IHBhZ2UpCiAKIHN0YXRpYyBib29sIGZpbGVDYW5CZUFjY2VwdGVkRm9yVXBsb2FkKGNvbnN0IFN0
cmluZyYgZmlsZW5hbWUsIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgYWxsb3dlZE1JTUVUeXBlcywg
Y29uc3QgSGFzaFNldDxTdHJpbmc+JiBhbGxvd2VkRmlsZUV4dGVuc2lvbnMpCiB7Ci0gICAgaWYg
KCFXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGZpbGVuYW1lKSkKKyAgICBpZiAoIUZp
bGVTeXN0ZW06OmZpbGVFeGlzdHMoZmlsZW5hbWUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICBpZiAoYWxsb3dlZE1JTUVUeXBlcy5pc0VtcHR5KCkgJiYgYWxsb3dlZEZpbGVFeHRlbnNp
b25zLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L0Rvd25sb2FkQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvRG93bmxv
YWRDbGllbnQubW0KaW5kZXggM2I0OTYyOGZkZjZkZmM1YWFkZDAyOWQ1YTJjYmNiNmJmYjc4Y2Zj
MS4uYzcyN2JkMjNlZjk1NTI1MWY3OTgwOWQ2OWM1ODIzMjE5N2FmMWViNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQubW0KQEAgLTQyLDEwICs0
MiwxMCBAQAogI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW1wb3J0ICJfV0tEb3dubG9h
ZERlbGVnYXRlLmgiCiAjaW1wb3J0ICJfV0tEb3dubG9hZEludGVybmFsLmgiCi0jaW1wb3J0IDxX
ZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgog
I2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQ
dHIuaD4KKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
CkBAIC0xODEsNyArMTgxLDcgQEAgdm9pZCBEb3dubG9hZENsaWVudDo6ZGVjaWRlRGVzdGluYXRp
b25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV2ViUHJvY2Vzc1Bvb2wmLCBEb3cKIHsKICNpZiBVU0Uo
U1lTVEVNX1BSRVZJRVcpCiAgICAgaWYgKGRvd25sb2FkUHJveHkuaXNTeXN0ZW1QcmV2aWV3RG93
bmxvYWQoKSkgewotICAgICAgICBOU1N0cmluZyAqdGVtcG9yYXJ5RGlyZWN0b3J5ID0gV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KEAiU3lzdGVtUHJldmlld3Mi
KTsKKyAgICAgICAgTlNTdHJpbmcgKnRlbXBvcmFyeURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OmNy
ZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShAIlN5c3RlbVByZXZpZXdzIik7CiAgICAgICAgIE5TU3Ry
aW5nICpkZXN0aW5hdGlvbiA9IFt0ZW1wb3JhcnlEaXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdQ
YXRoQ29tcG9uZW50OmZpbGVuYW1lXTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQWxsb3dP
dmVyd3JpdGU6OlllcywgZGVzdGluYXRpb24pOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQppbmRl
eCA1NmNmMGZkMDU5MGM2MTU0M2QzNDEwZjg0ZjY2ZDE5YzdlZDg1MWJmLi4yZGFmNzU1NzFjY2Ix
YTlkNzA1YmFhMDU3YWQ2MjRhNWE2OThhNDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KQEAgLTQzLDcgKzQzLDYgQEAK
ICNpbXBvcnQgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2ltcG9ydCAiV2luZG93U2VydmVyQ29u
bmVjdGlvbi5oIgogI2ltcG9ydCA8V2ViQ29yZS9Db2xvci5oPgotI2ltcG9ydCA8V2ViQ29yZS9G
aWxlU3lzdGVtLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgog
I2ltcG9ydCA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0
Zm9ybVBhc3RlYm9hcmQuaD4KQEAgLTUyLDYgKzUxLDcgQEAKICNpbXBvcnQgPHBhbC9zcGkvY2Yv
Q0ZOZXR3b3JrU1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL05TS2V5ZWRBcmNoaXZlclNQ
SS5oPgogI2ltcG9ydCA8c3lzL3BhcmFtLmg+CisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgog
I2ltcG9ydCA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KICNpbXBvcnQgPHd0Zi9jb2NvYS9FbnRp
dGxlbWVudHMuaD4KICNpbXBvcnQgPHd0Zi9zcGkvZGFyd2luL2R5bGRTUEkuaD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KaW5kZXggN2QyYjEyYTA4OGNl
MGU0MmNmZjMxZmM1ZWJhZTI5MjNiYzA4MjBlYy4uMzRjNTY3NzdhZWRkMGUxMDI0YmFjYzI2M2I0
OGE4MmYxOGIxOTc5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmll
d0ltcGwubW0KQEAgLTg0LDcgKzg0LDYgQEAKICNpbXBvcnQgPFdlYkNvcmUvRHJhZ0RhdGEuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvRHJhZ0l0ZW0uaD4KICNpbXBvcnQgPFdlYkNvcmUvRWRpdG9yLmg+
Ci0jaW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPFdlYkNvcmUvRm9udEF0
dHJpYnV0ZUNoYW5nZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvRm9udEF0dHJpYnV0ZXMuaD4KICNp
bXBvcnQgPFdlYkNvcmUvS2V5cHJlc3NDb21tYW5kLmg+CkBAIC0xMTUsNiArMTE0LDcgQEAKICNp
bXBvcnQgPHBhbC9zcGkvbWFjL05TVmlld1NQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9tYWMvTlNX
aW5kb3dTUEkuaD4KICNpbXBvcnQgPHN5cy9zdGF0Lmg+CisjaW1wb3J0IDx3dGYvRmlsZVN5c3Rl
bS5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW1wb3J0IDx3dGYvUHJvY2Vz
c1ByaXZpbGVnZS5oPgogI2ltcG9ydCA8d3RmL1NldEZvclNjb3BlLmg+CkBAIC0zOTYyLDcgKzM5
NjIsNyBAQCBib29sIFdlYlZpZXdJbXBsOjpwZXJmb3JtRHJhZ09wZXJhdGlvbihpZCA8TlNEcmFn
Z2luZ0luZm8+IGRyYWdnaW5nSW5mbykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgfQogCi0gICAgICAgIE5TU3RyaW5nICpkcm9wRGVzdGluYXRpb25QYXRoID0gV2ViQ29yZTo6
RmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KEAiV2ViS2l0RHJvcERlc3RpbmF0
aW9uIik7CisgICAgICAgIE5TU3RyaW5nICpkcm9wRGVzdGluYXRpb25QYXRoID0gRmlsZVN5c3Rl
bTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KEAiV2ViS2l0RHJvcERlc3RpbmF0aW9uIik7CiAg
ICAgICAgIGlmICghZHJvcERlc3RpbmF0aW9uUGF0aCkgewogICAgICAgICAgICAgZGVsZXRlIGRy
YWdEYXRhOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDI4NCw3ICs0Mjg0LDcgQEAg
TlNBcnJheSAqV2ViVmlld0ltcGw6Om5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0RGVzdGlu
YXRpb24oTlNVUkwgKmRyb3BEZXN0aW4KICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3Jl
YXRlIGltYWdlIGZpbGUgdmlhIC1bTlNGaWxlV3JhcHBlciB3cml0ZVRvVVJMOm9wdGlvbnM6b3Jp
Z2luYWxDb250ZW50c1VSTDplcnJvcjpdIik7CiAKICAgICBpZiAoIW1fcHJvbWlzZWRVUkwuaXNF
bXB0eSgpKQotICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzZXRNZXRhZGF0YVVSTChTdHJp
bmcocGF0aCksIG1fcHJvbWlzZWRVUkwpOworICAgICAgICBGaWxlU3lzdGVtOjpzZXRNZXRhZGF0
YVVSTChTdHJpbmcocGF0aCksIG1fcHJvbWlzZWRVUkwpOwogICAgIAogICAgIHJldHVybiBbTlNB
cnJheSBhcnJheVdpdGhPYmplY3Q6W3BhdGggbGFzdFBhdGhDb21wb25lbnRdXTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9yYWdlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9yYWdlLmNwcApp
bmRleCBlNjBlZTNmNGY5NGIwMzJkMzk5YjdhMzc3YTdlOGY5Y2NhMjM3NTFkLi4xOWE3YTEyY2Zh
M2YzMWJmMWUyMTM3YzM1Y2Q1N2QwYTUwN2I5YTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3BwCkBAIC0yOCw5ICsyOCw5IEBA
CiAKICNpbmNsdWRlICJQZXJzaXN0ZW5jeVV0aWxzLmgiCiAKLSNpbmNsdWRlIDxXZWJDb3JlL0Zp
bGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUg
PHd0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5oPgorI2luY2x1ZGUgPHd0Zi9GaWxl
U3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL0hleE51bWJlci5oPgogI2luY2x1ZGUgPHd0Zi9SdW5M
b29wLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwCmluZGV4IDc1
MTAyZWUzYjAwNDI0YTQ4MDk0MTVmMzZiMDRlZDNiNTNjYWQxNDguLmUwOTI1NGIwMTg3MjQ5Yzk5
MmZjMmZjZDcyODg4ZTc4NGIxOTMzOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHAKQEAgLTM2LDggKzM2LDggQEAKICNpbmNs
dWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgog
I2luY2x1ZGUgIldlYlByb3RlY3Rpb25TcGFjZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5
c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5oPgorI2luY2x1ZGUg
PHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9MYXVuY2hlci9nbGliL0J1YmJsZXdyYXBMYXVuY2hlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9nbGliL0J1YmJsZXdyYXBMYXVuY2hlci5jcHAKaW5kZXgg
ZTQzNGUwMzMzOTg3YTkyNzQ5YzAwZGRjNWI1MzM2MDkwNGRlZjFiZS4uMTY3MjNkZmRkYTRmYWRi
YjkyYWE3ZWEwYThlNmFlNTg4NGYyZDA2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTGF1bmNoZXIvZ2xpYi9CdWJibGV3cmFwTGF1bmNoZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvQnViYmxld3JhcExhdW5jaGVyLmNwcApAQCAt
MjAsMTIgKzIwLDEyIEBACiAKICNpZiBFTkFCTEUoQlVCQkxFV1JBUF9TQU5EQk9YKQogCi0jaW5j
bHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybURp
c3BsYXkuaD4KICNpbmNsdWRlIDxmY250bC5oPgogI2luY2x1ZGUgPGdsaWIuaD4KICNpbmNsdWRl
IDxzZWNjb21wLmg+CiAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVT
eXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HTGliVXRpbGl0aWVzLmg+CiAjaW5jbHVkZSA8
d3RmL2dsaWIvR1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvUHJvY2Vzc0xh
dW5jaGVyR0xpYi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9nbGliL1By
b2Nlc3NMYXVuY2hlckdMaWIuY3BwCmluZGV4IGM1NjYxODczYTA1ZTcxMDliNTE3ZWE3NWJkZmFi
Y2NkOGYyM2ZiODYuLjAwODg0OWFiMzFjMWVjZThjODM3OTcwYjY5NGM0MmZiNGI1ZGNkYjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvUHJvY2Vzc0xh
dW5jaGVyR0xpYi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvZ2xp
Yi9Qcm9jZXNzTGF1bmNoZXJHTGliLmNwcApAQCAtMzEsMTAgKzMxLDEwIEBACiAjaW5jbHVkZSAi
Q29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkZsYXRwYWtMYXVuY2hlci5oIgogI2luY2x1ZGUgIlBy
b2Nlc3NFeGVjdXRhYmxlUGF0aC5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgog
I2luY2x1ZGUgPGVycm5vLmg+CiAjaW5jbHVkZSA8ZmNudGwuaD4KICNpbmNsdWRlIDxnbGliLmg+
CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgog
I2luY2x1ZGUgPHd0Zi9VbmlTdGRFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HTGliVXRp
bGl0aWVzLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL2d0
ay9QbHVnaW5JbmZvQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9n
dGsvUGx1Z2luSW5mb0NhY2hlLmNwcAppbmRleCA4MDY0N2ViMTJlZTUyNTExYTExOWU4NWZkZTJm
NTljNGUyMzc3ODg1Li5hMjhhMDBhMzg2Y2FmZWNiMzc4MmE0MTEwMzdjYTlhNTM1ZGMyMjAzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL2d0ay9QbHVnaW5JbmZv
Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1BsdWdp
bkluZm9DYWNoZS5jcHAKQEAgLTI5LDggKzI5LDggQEAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExV
R0lOX0FQSSkKIAogI2luY2x1ZGUgIk5ldHNjYXBlUGx1Z2luTW9kdWxlLmgiCi0jaW5jbHVkZSA8
V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybURpc3BsYXku
aD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC02NiwxMCArNjYsMTAgQEAgUGx1Z2luSW5m
b0NhY2hlOjpQbHVnaW5JbmZvQ2FjaGUoKQogICAgIG1fc2F2ZVRvRmlsZUlkbGUuc2V0UHJpb3Jp
dHkoR19QUklPUklUWV9ERUZBVUxUX0lETEUpOwogCiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBjYWNo
ZURpcmVjdG9yeShnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfY2FjaGVfZGlyKCksICJ3ZWJr
aXRndGsiLCBudWxscHRyKSk7Ci0gICAgaWYgKFdlYkNvcmU6OkZpbGVTeXN0ZW06Om1ha2VBbGxE
aXJlY3RvcmllcyhjYWNoZURpcmVjdG9yeS5nZXQoKSkpIHsKKyAgICBpZiAoRmlsZVN5c3RlbTo6
bWFrZUFsbERpcmVjdG9yaWVzKGNhY2hlRGlyZWN0b3J5LmdldCgpKSkgewogICAgICAgICAvLyBE
ZWxldGUgb2xkIGNhY2hlIGZpbGUuCiAgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gb2xkQ2FjaGVQ
YXRoKGdfYnVpbGRfZmlsZW5hbWUoY2FjaGVEaXJlY3RvcnkuZ2V0KCksICJwbHVnaW5zIiwgbnVs
bHB0cikpOwotICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVGaWxlKFdlYkNvcmU6
OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ob2xkQ2FjaGVQ
YXRoLmdldCgpKSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoRmlsZVN5c3RlbTo6
c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihvbGRDYWNoZVBhdGguZ2V0KCkpKTsK
IAogICAgICAgICBtX2NhY2hlUGF0aC5yZXNldChnX2J1aWxkX2ZpbGVuYW1lKGNhY2hlRGlyZWN0
b3J5LmdldCgpLCBjYWNoZUZpbGVuYW1lRm9yQ3VycmVudERpc3BsYXkoKSwgbnVsbHB0cikpOwog
ICAgICAgICBnX2tleV9maWxlX2xvYWRfZnJvbV9maWxlKG1fY2FjaGVGaWxlLmdldCgpLCBtX2Nh
Y2hlUGF0aC5nZXQoKSwgR19LRVlfRklMRV9OT05FLCBudWxscHRyKTsKQEAgLTExMiw3ICsxMTIs
NyBAQCBib29sIFBsdWdpbkluZm9DYWNoZTo6Z2V0UGx1Z2luSW5mbyhjb25zdCBTdHJpbmcmIHBs
dWdpblBhdGgsIFBsdWdpbk1vZHVsZUluZm8mCiAgICAgaWYgKCFnX2tleV9maWxlX2hhc19ncm91
cChtX2NhY2hlRmlsZS5nZXQoKSwgcGx1Z2luR3JvdXAuZGF0YSgpKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgYXV0byBsYXN0TW9kaWZpZWRUaW1lID0gV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUocGx1Z2luUGF0aCk7CisgICAgYXV0byBsYXN0TW9k
aWZpZWRUaW1lID0gRmlsZVN5c3RlbTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUocGx1Z2luUGF0
aCk7CiAgICAgaWYgKCFsYXN0TW9kaWZpZWRUaW1lKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgdGltZV90IGNhY2hlZExhc3RNb2RpZmllZCA9IHN0YXRpY19jYXN0PHRpbWVfdD4oZ19rZXlf
ZmlsZV9nZXRfdWludDY0KG1fY2FjaGVGaWxlLmdldCgpLCBwbHVnaW5Hcm91cC5kYXRhKCksICJt
dGltZSIsIG51bGxwdHIpKTsKQEAgLTEyMCw3ICsxMjAsNyBAQCBib29sIFBsdWdpbkluZm9DYWNo
ZTo6Z2V0UGx1Z2luSW5mbyhjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIFBsdWdpbk1vZHVsZUlu
Zm8mCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHBsdWdpbi5wYXRoID0gcGx1Z2luUGF0
aDsKLSAgICBwbHVnaW4uaW5mby5maWxlID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEdldEZp
bGVOYW1lKHBsdWdpblBhdGgpOworICAgIHBsdWdpbi5pbmZvLmZpbGUgPSBGaWxlU3lzdGVtOjpw
YXRoR2V0RmlsZU5hbWUocGx1Z2luUGF0aCk7CiAKICAgICBHVW5pcXVlUHRyPGNoYXI+IHN0cmlu
Z1ZhbHVlKGdfa2V5X2ZpbGVfZ2V0X3N0cmluZyhtX2NhY2hlRmlsZS5nZXQoKSwgcGx1Z2luR3Jv
dXAuZGF0YSgpLCAibmFtZSIsIG51bGxwdHIpKTsKICAgICBwbHVnaW4uaW5mby5uYW1lID0gU3Ry
aW5nOjpmcm9tVVRGOChzdHJpbmdWYWx1ZS5nZXQoKSk7CkBAIC0xNDAsNyArMTQwLDcgQEAgYm9v
bCBQbHVnaW5JbmZvQ2FjaGU6OmdldFBsdWdpbkluZm8oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRo
LCBQbHVnaW5Nb2R1bGVJbmZvJgogCiB2b2lkIFBsdWdpbkluZm9DYWNoZTo6dXBkYXRlUGx1Z2lu
SW5mbyhjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mIHBs
dWdpbikKIHsKLSAgICBhdXRvIGxhc3RNb2RpZmllZFRpbWUgPSBXZWJDb3JlOjpGaWxlU3lzdGVt
OjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShwbHVnaW5QYXRoKTsKKyAgICBhdXRvIGxhc3RNb2Rp
ZmllZFRpbWUgPSBGaWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShwbHVnaW5QYXRo
KTsKICAgICBpZiAoIWxhc3RNb2RpZmllZFRpbWUpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2luUHJvY2Vzc1By
b3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2luUHJv
Y2Vzc1Byb3h5TWFjLm1tCmluZGV4IDg5ZmFiNWVjYjY2NmQyYjQ0ZmNjMjIzOWViZTViYTVlZTFh
YzYzZDguLmYxMmE2MWVmNjY5ZjM1NzMwZGVhN2E0YjVmNWIxNjQ1NTUyYzExNDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvbWFjL1BsdWdpblByb2Nlc3NQcm94
eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5Q
cm9jZXNzUHJveHlNYWMubW0KQEAgLTMzLDExICszMywxMSBAQAogI2ltcG9ydCAiUGx1Z2luUHJv
Y2Vzc01lc3NhZ2VzLmgiCiAjaW1wb3J0ICJTYW5kYm94VXRpbGl0aWVzLmgiCiAjaW1wb3J0IDxR
dWFydHpDb3JlL0NBUmVtb3RlTGF5ZXJTZXJ2ZXIuaD4KLSNpbXBvcnQgPFdlYkNvcmUvRmlsZVN5
c3RlbS5oPgogI2ltcG9ydCA8Y3J0X2V4dGVybnMuaD4KICNpbXBvcnQgPG1hY2gtby9keWxkLmg+
CiAjaW1wb3J0IDxwYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oPgogI2ltcG9ydCA8c3Bhd24uaD4K
KyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDx3dGYvUHJvY2Vzc1ByaXZpbGVn
ZS5oPgogI2ltcG9ydCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3RmL3RleHQvQ1N0cmluZy5oPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpbklu
Zm9TdG9yZVVuaXguY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1Bs
dWdpbkluZm9TdG9yZVVuaXguY3BwCmluZGV4IDFkZmQ4MDdjMTIzOWMzMDc5ZWY5MjQwNzQ1MGI4
OWVjOTExOWNmMGMuLmFhMDk0NzM2ODE2NTRhOWVmNjQ0MDZiMmM2NDM5MDNmN2UwMTI2M2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5JbmZv
U3RvcmVVbml4LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgv
UGx1Z2luSW5mb1N0b3JlVW5peC5jcHAKQEAgLTM0LDEwICszNCwxMCBAQAogI2luY2x1ZGUgIk5l
dHNjYXBlUGx1Z2luTW9kdWxlLmgiCiAjaW5jbHVkZSAiUGx1Z2luU2VhcmNoUGF0aC5oIgogI2lu
Y2x1ZGUgIlByb2Nlc3NFeGVjdXRhYmxlUGF0aC5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5
c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1EaXNwbGF5Lmg+CiAjaW5jbHVkZSA8
bGltaXRzLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0u
aD4KIAogI2lmIFBMQVRGT1JNKEdUSykKICNpbmNsdWRlICJQbHVnaW5JbmZvQ2FjaGUuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9j
ZXNzUHJveHlVbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9Q
bHVnaW5Qcm9jZXNzUHJveHlVbml4LmNwcAppbmRleCBmODk2MTIxNzBkMDExMTYwNDMyZWVlZWEz
ZDliODhhMzUzOGI3MTIyLi5jNTAwYzBmY2VhNjI3ODg2YmFkZGRjM2ZjOTUwYzZjNGVhMzhiYzBi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2lu
UHJvY2Vzc1Byb3h5VW5peC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lu
cy91bml4L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3BwCkBAIC0zMiw5ICszMiw5IEBACiAKICNp
bmNsdWRlICJQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiUHJv
Y2Vzc0V4ZWN1dGFibGVQYXRoLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybURpc3BsYXkuaD4KICNpbmNsdWRlIDxzeXMvd2FpdC5o
PgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuY3BwCmluZGV4IDcy
Njg4M2IzY2Y4MGY0OGYyZGJmYTU2M2ZjOWJmN2M1NWQ1NzAwNmYuLjViY2RhNjNhODZiMGUxZjhl
OTY0NjE5NDMwOTkyNmNiYTUxZjJkMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuY3BwCkBAIC02NCw3ICs2NCw3IEBAIFNl
cnZpY2VXb3JrZXJQcm9jZXNzUHJveHk6On5TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KCkKIGJv
b2wgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eTo6aGFzUmVnaXN0ZXJlZFNlcnZpY2VXb3JrZXJz
KGNvbnN0IFN0cmluZyYgc2VydmljZVdvcmtlckRpcmVjdG9yeSkKIHsKICAgICBTdHJpbmcgcmVn
aXN0cmF0aW9uRmlsZSA9IFdlYkNvcmU6OnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhYmFz
ZUZpbGVuYW1lKHNlcnZpY2VXb3JrZXJEaXJlY3RvcnkpOwotICAgIHJldHVybiBXZWJDb3JlOjpG
aWxlU3lzdGVtOjpmaWxlRXhpc3RzKHJlZ2lzdHJhdGlvbkZpbGUpOworICAgIHJldHVybiBGaWxl
U3lzdGVtOjpmaWxlRXhpc3RzKHJlZ2lzdHJhdGlvbkZpbGUpOwogfQogCiB2b2lkIFNlcnZpY2VX
b3JrZXJQcm9jZXNzUHJveHk6OmdldExhdW5jaE9wdGlvbnMoUHJvY2Vzc0xhdW5jaGVyOjpMYXVu
Y2hPcHRpb25zJiBsYXVuY2hPcHRpb25zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcAppbmRleCAwYzI1
ZDY1N2U5Nzc2YTc0NzRkMjA1NWZkZjU0ODcyYTAwZDhlZGRiLi40NmZiNmM3NzI5NGYzYzYzMWQ0
ZmZmZGZjMjRhMTQ4ZjcwOGE0NGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcApAQCAtMjcsMTIg
KzI3LDEyIEBACiAjaW5jbHVkZSAiTG9jYWxTdG9yYWdlRGF0YWJhc2UuaCIKIAogI2luY2x1ZGUg
IkxvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5
c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlU3RhdGVtZW50Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TUUxpdGVUcmFuc2FjdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlP
cmlnaW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1N0b3JhZ2VNYXAuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1N1ZGRlblRlcm1pbmF0aW9uLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2Vy
LmNwcAppbmRleCBhZmZkN2U4YWNhZTJkZWNiNWM4NDRlODczYjU2ZjdkMTUzZDBhYzk2Li5jMzc4
MWRmNjc2OTAwYzY5NGJlMTRiZmU2YWUzNjQ5YmMxODg5MGMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VE
YXRhYmFzZVRyYWNrZXIuY3BwCkBAIC0yNywxMCArMjcsMTAgQEAKICNpbmNsdWRlICJMb2NhbFN0
b3JhZ2VEYXRhYmFzZVRyYWNrZXIuaCIKIAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRl
IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZUZpbGVTeXN0
ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZVN0YXRlbWVudC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvVGV4dEVuY29kaW5nLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNs
dWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVk
ZSA8d3RmL1dvcmtRdWV1ZS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCmlu
ZGV4IDA2OWQ0YjliMGFjMzY2ZjJhZDgwMDgzYWQ4Y2U1MThhYWY1NjlmYWMuLmIyNGMwMTI0MWZi
MzlkZTE5NmI4MjljZmM5ZDVkOWI4NWIyMDRjNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0
b3JlQ29jb2EubW0KQEAgLTMwLDEwICszMCwxMCBAQAogI2ltcG9ydCAiU3RvcmFnZU1hbmFnZXIu
aCIKICNpbXBvcnQgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgogI2ltcG9ydCAi
V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaCIKLSNpbXBvcnQgPFdlYkNvcmUvRmlsZVN5c3Rl
bS5oPgogI2ltcG9ydCA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KICNpbXBv
cnQgPFdlYkNvcmUvU2VhcmNoUG9wdXBNZW51Q29jb2EuaD4KICNpbXBvcnQgPHBhbC9zcGkvY2Yv
Q0ZOZXR3b3JrU1BJLmg+CisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CiAjaW1wb3J0IDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgogCkBA
IC0xMjEsNyArMTIxLDcgQEAgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgV2Vic2l0ZURhdGFT
dG9yZTo6cGFyYW1ldGVycygpCiAgICAgcGFyYW1ldGVycy5wZW5kaW5nQ29va2llcyA9IGNvcHlU
b1ZlY3RvcihtX3BlbmRpbmdDb29raWVzKTsKIAogICAgIGlmICghY29va2llRmlsZS5pc0VtcHR5
KCkpCi0gICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURp
cmVjdG9yeShXZWJDb3JlOjpGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKGNvb2tpZUZpbGUpLCBw
YXJhbWV0ZXJzLmNvb2tpZVN0b3JhZ2VQYXRoRXh0ZW5zaW9uSGFuZGxlKTsKKyAgICAgICAgU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KEZpbGVTeXN0
ZW06OmRpcmVjdG9yeU5hbWUoY29va2llRmlsZSksIHBhcmFtZXRlcnMuY29va2llU3RvcmFnZVBh
dGhFeHRlbnNpb25IYW5kbGUpOwogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAgICAg
cGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkgPSByZXNvbHZlZEluZGV4ZWREYXRh
YmFzZURpcmVjdG9yeSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCBmNzU4NTFiMWM2YWU4MmNlYzlh
OGM5NTMwYWViMmI5NGMyYmE0N2ZkLi5mODdiNjA4YjFjNDdjYjIyN2ZiOTRlNjg0ODBjM2ZjODE1
ZWFiY2ZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtNDQsNyArNDQsNiBAQAogI2luY2x1ZGUgIldl
YnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGF0YWJhc2VUcmFja2VyLmg+Ci0j
aW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MTWVk
aWFFbGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9PcmlnaW5Mb2NrLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgpAQCAtNTIsNiArNTEsNyBAQAogI2luY2x1ZGUgPHd0
Zi9DYWxsYmFja0FnZ3JlZ2F0b3IuaD4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIu
aD4KICNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuaD4KKyNpbmNsdWRlIDx3dGYvRmls
ZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9Qcm9jZXNzUHJpdmlsZWdlLmg+CiAjaW5jbHVkZSA8
d3RmL1J1bkxvb3AuaD4KIApAQCAtMTkxLDggKzE5MSw4IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9y
ZTo6cmVzb2x2ZURpcmVjdG9yaWVzSWZOZWNlc3NhcnkoKQogCiAgICAgLy8gUmVzb2x2ZSBkaXJl
Y3RvcmllcyBmb3IgZmlsZSBwYXRocy4KICAgICBpZiAoIW1fY29uZmlndXJhdGlvbi0+Y29va2ll
U3RvcmFnZUZpbGUoKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRp
b24tPnNldENvb2tpZVN0b3JhZ2VGaWxlKHJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3Rv
cnlGb3JTYW5kYm94RXh0ZW5zaW9uKFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUo
bV9jb25maWd1cmF0aW9uLT5jb29raWVTdG9yYWdlRmlsZSgpKSkpOwotICAgICAgICBtX3Jlc29s
dmVkQ29uZmlndXJhdGlvbi0+c2V0Q29va2llU3RvcmFnZUZpbGUoV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5jb29r
aWVTdG9yYWdlRmlsZSgpLCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUobV9j
b25maWd1cmF0aW9uLT5jb29raWVTdG9yYWdlRmlsZSgpKSkpOworICAgICAgICBtX3Jlc29sdmVk
Q29uZmlndXJhdGlvbi0+c2V0Q29va2llU3RvcmFnZUZpbGUocmVzb2x2ZUFuZENyZWF0ZVJlYWRX
cml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24oRmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFt
ZShtX2NvbmZpZ3VyYXRpb24tPmNvb2tpZVN0b3JhZ2VGaWxlKCkpKSk7CisgICAgICAgIG1fcmVz
b2x2ZWRDb25maWd1cmF0aW9uLT5zZXRDb29raWVTdG9yYWdlRmlsZShGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQobV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPmNvb2tpZVN0b3Jh
Z2VGaWxlKCksIEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShtX2NvbmZpZ3VyYXRpb24tPmNv
b2tpZVN0b3JhZ2VGaWxlKCkpKSk7CiAgICAgfQogfQogCkBAIC0xNDgzLDcgKzE0ODMsNyBAQCBW
ZWN0b3I8UGx1Z2luTW9kdWxlSW5mbz4gV2Vic2l0ZURhdGFTdG9yZTo6cGx1Z2lucygpIGNvbnN0
CiAKIHN0YXRpYyBTdHJpbmcgY29tcHV0ZU1lZGlhS2V5RmlsZShjb25zdCBTdHJpbmcmIG1lZGlh
S2V5RGlyZWN0b3J5KQogewotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQobWVkaWFLZXlEaXJlY3RvcnksICJTZWN1cmVTdG9wLnBsaXN0Iik7
CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtZWRpYUtl
eURpcmVjdG9yeSwgIlNlY3VyZVN0b3AucGxpc3QiKTsKIH0KIAogVmVjdG9yPFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YT4gV2Vic2l0ZURhdGFTdG9yZTo6bWVkaWFLZXlPcmlnaW5zKGNvbnN0
IFN0cmluZyYgbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSkKQEAgLTE0OTIsMTIgKzE0OTIsMTIg
QEAgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gV2Vic2l0ZURhdGFTdG9yZTo6
bWVkaWFLZXlPcmlnaW5zKGNvbnN0IFN0cmkKIAogICAgIFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGE+IG9yaWdpbnM7CiAKLSAgICBmb3IgKGNvbnN0IGF1dG8mIG9yaWdpblBhdGgg
OiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KG1lZGlhS2V5c1N0b3JhZ2VEaXJl
Y3RvcnksICIqIikpIHsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIG9yaWdpblBhdGggOiBGaWxlU3lz
dGVtOjpsaXN0RGlyZWN0b3J5KG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnksICIqIikpIHsKICAg
ICAgICAgYXV0byBtZWRpYUtleUZpbGUgPSBjb21wdXRlTWVkaWFLZXlGaWxlKG9yaWdpblBhdGgp
OwotICAgICAgICBpZiAoIVdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobWVkaWFLZXlG
aWxlKSkKKyAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG1lZGlhS2V5RmlsZSkp
CiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBhdXRvIG1lZGlhS2V5SWRlbnRpZmll
ciA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShvcmlnaW5QYXRoKTsKKyAg
ICAgICAgYXV0byBtZWRpYUtleUlkZW50aWZpZXIgPSBGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5h
bWUob3JpZ2luUGF0aCk7CiAKICAgICAgICAgaWYgKGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZpZXIobWVkaWFLZXlJ
ZGVudGlmaWVyKSkKICAgICAgICAgICAgIG9yaWdpbnMuYXBwZW5kKCpzZWN1cml0eU9yaWdpbik7
CkBAIC0xNTEwLDE4ICsxNTEwLDE4IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVtb3ZlTWVk
aWFLZXlzKGNvbnN0IFN0cmluZyYgbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSwKIHsKICAgICBB
U1NFUlQoIW1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKTsKIAotICAgIGZvciAo
Y29uc3QgYXV0byYgbWVkaWFLZXlEaXJlY3RvcnkgOiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpsaXN0
RGlyZWN0b3J5KG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnksICIqIikpIHsKKyAgICBmb3IgKGNv
bnN0IGF1dG8mIG1lZGlhS2V5RGlyZWN0b3J5IDogRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeSht
ZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5LCAiKiIpKSB7CiAgICAgICAgIGF1dG8gbWVkaWFLZXlG
aWxlID0gY29tcHV0ZU1lZGlhS2V5RmlsZShtZWRpYUtleURpcmVjdG9yeSk7CiAKLSAgICAgICAg
YXV0byBtb2RpZmljYXRpb25UaW1lID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6Z2V0RmlsZU1vZGlm
aWNhdGlvblRpbWUobWVkaWFLZXlGaWxlKTsKKyAgICAgICAgYXV0byBtb2RpZmljYXRpb25UaW1l
ID0gRmlsZVN5c3RlbTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUobWVkaWFLZXlGaWxlKTsKICAg
ICAgICAgaWYgKCFtb2RpZmljYXRpb25UaW1lKQogICAgICAgICAgICAgY29udGludWU7CiAKICAg
ICAgICAgaWYgKG1vZGlmaWNhdGlvblRpbWUudmFsdWUoKSA8IG1vZGlmaWVkU2luY2UpCiAgICAg
ICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVG
aWxlKG1lZGlhS2V5RmlsZSk7Ci0gICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUVt
cHR5RGlyZWN0b3J5KG1lZGlhS2V5RGlyZWN0b3J5KTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVs
ZXRlRmlsZShtZWRpYUtleUZpbGUpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURp
cmVjdG9yeShtZWRpYUtleURpcmVjdG9yeSk7CiAgICAgfQogfQogCkBAIC0xNTMwLDExICsxNTMw
LDExIEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVtb3ZlTWVkaWFLZXlzKGNvbnN0IFN0cmlu
ZyYgbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSwKICAgICBBU1NFUlQoIW1lZGlhS2V5c1N0b3Jh
Z2VEaXJlY3RvcnkuaXNFbXB0eSgpKTsKIAogICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2luIDog
b3JpZ2lucykgewotICAgICAgICBhdXRvIG1lZGlhS2V5RGlyZWN0b3J5ID0gV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rv
cnksIG9yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgICAgIGF1dG8gbWVkaWFLZXlE
aXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobWVkaWFLZXlz
U3RvcmFnZURpcmVjdG9yeSwgb3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKICAgICAgICAg
YXV0byBtZWRpYUtleUZpbGUgPSBjb21wdXRlTWVkaWFLZXlGaWxlKG1lZGlhS2V5RGlyZWN0b3J5
KTsKIAotICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1lZGlhS2V5Rmls
ZSk7Ci0gICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KG1l
ZGlhS2V5RGlyZWN0b3J5KTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtZWRpYUtl
eUZpbGUpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShtZWRpYUtl
eURpcmVjdG9yeSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9nbGliL1dlYlByb2Nlc3NQcm94eUdMaWIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvZ2xpYi9XZWJQcm9jZXNzUHJveHlHTGliLmNwcAppbmRleCA4ZjVmYTAzZmY0NjUzMmY2YjU4
MjU3OWU5OWIwMTdiMDY1NDBhZWE1Li4xNjllYTIwMTI1YjAzMDYzN2ZhZmMwNzQ3Y2E4Njk4NTg1
NDk1YjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYlByb2Nl
c3NQcm94eUdMaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJv
Y2Vzc1Byb3h5R0xpYi5jcHAKQEAgLTMxLDggKzMxLDggQEAKICNlbmRpZgogI2luY2x1ZGUgIldl
YlByb2Nlc3NQb29sLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgotI2luY2x1ZGUg
PFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1EaXNwbGF5
Lmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwCmluZGV4IGNhMTg3YTY0MjM0MTEyZTg1Nzli
ZDg2MTYyZDliODNmYjQyOWM4M2EuLjE2YjAyYTQzNTc2ZTU2ZjFhZTIyNjNhMGRmNGYwNjczMjM0
ZGJlMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0
b3JQcm94eUd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYkluc3Bl
Y3RvclByb3h5R3RrLmNwcApAQCAtNDIsOSArNDIsOSBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3NQ
b29sLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9D
ZXJ0aWZpY2F0ZUluZm8uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0d0a1V0aWxpdGllcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVt
ZW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NQb29sR3RrLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQcm9jZXNzUG9vbEd0ay5jcHAKaW5kZXggNjI0
MDQxNWYxNTcyNzllNGJmYzBjNTZhMmNkYThiNjIyNTkwNjlmNi4uNmIyMzU3NDA0ZTAzYWUzMDIx
YWU4ODBiNjNhOGNlYzBlZTg2ZjBmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvZ3RrL1dlYlByb2Nlc3NQb29sR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9ndGsvV2ViUHJvY2Vzc1Bvb2xHdGsuY3BwCkBAIC0zNCwxMCArMzQsMTAgQEAKICNpbmNsdWRl
ICJXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01l
c3NhZ2VzLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUmVtb3RlSW5zcGVjdG9yU2VydmVy
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9H
U3RyZWFtZXJDb21tb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9TY2hlbWVSZWdpc3RyeS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lz
dGVtLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggZTg2YjYyOWM3ZmVkNDk0N2FmZGVl
NDRmMjIwY2MyZjI2YTRhYjc2My4uMjIwZTExNThiYzRlMjYzZWI3ZjU3NzM1ZWFhYmQyMWFjMzZk
NWY5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC01NjYwLDcgKzU2NjAsNyBAQCAtICh2b2lkKV9wcmVw
YXJlVG9EcmFnUHJvbWlzZWRBdHRhY2htZW50Oihjb25zdCBXZWJDb3JlOjpQcm9taXNlZEF0dGFj
aG1lbnRJbmZvJgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgTlNT
dHJpbmcgKnRlbXBvcmFyeUJsb2JEaXJlY3RvcnkgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpjcmVh
dGVUZW1wb3JhcnlEaXJlY3RvcnkoQCJibG9icyIpOworICAgICAgICBOU1N0cmluZyAqdGVtcG9y
YXJ5QmxvYkRpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShA
ImJsb2JzIik7CiAgICAgICAgIE5TVVJMICpkZXN0aW5hdGlvblVSTCA9IFtOU1VSTCBmaWxlVVJM
V2l0aFBhdGg6W3RlbXBvcmFyeUJsb2JEaXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29t
cG9uZW50OltOU1VVSUQgVVVJRF0uVVVJRFN0cmluZ10gaXNEaXJlY3Rvcnk6Tk9dOwogCiAgICAg
ICAgIGF1dG8gYXR0YWNobWVudCA9IHN0cm9uZ1NlbGYtPl9wYWdlLT5hdHRhY2htZW50Rm9ySWRl
bnRpZmllcihpbmZvLmF0dGFjaG1lbnRJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0ZpbGVVcGxvYWRQYW5lbC5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0ZpbGVVcGxvYWRQYW5lbC5tbQppbmRleCA2ODAx
NjQ2ZDA4ZjlkMDlmZTNlNzM5ODM4NDU3MjliZTIxMWQ1YWE2Li44NzcxMTRmY2YyNjZlOTkyYWVi
ZGQ5MDM2MDQwNmExZDg5NzUxZGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvZm9ybXMvV0tGaWxlVXBsb2FkUGFuZWwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL2Zvcm1zL1dLRmlsZVVwbG9hZFBhbmVsLm1tCkBAIC02MjAsNyArNjIwLDcgQEAg
LSAodm9pZClfdXBsb2FkSXRlbUZvckltYWdlRGF0YTooTlNEYXRhICopaW1hZ2VEYXRhIGltYWdl
TmFtZTooTlNTdHJpbmcgKilpbWFnZU4KICAgICBOU1N0cmluZyAqIGNvbnN0IGtUZW1wb3JhcnlE
aXJlY3RvcnlOYW1lID0gQCJXS1dlYkZpbGVVcGxvYWQiOwogCiAgICAgLy8gQnVpbGQgdGVtcG9y
YXJ5IGZpbGUgcGF0aC4KLSAgICBOU1N0cmluZyAqdGVtcG9yYXJ5RGlyZWN0b3J5ID0gV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KGtUZW1wb3JhcnlEaXJlY3Rv
cnlOYW1lKTsKKyAgICBOU1N0cmluZyAqdGVtcG9yYXJ5RGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6
Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KGtUZW1wb3JhcnlEaXJlY3RvcnlOYW1lKTsKICAgICBO
U1N0cmluZyAqZmlsZVBhdGggPSBbdGVtcG9yYXJ5RGlyZWN0b3J5IHN0cmluZ0J5QXBwZW5kaW5n
UGF0aENvbXBvbmVudDppbWFnZU5hbWVdOwogICAgIGlmICghZmlsZVBhdGgpIHsKICAgICAgICAg
TE9HX0VSUk9SKCJXS0ZpbGVVcGxvYWRQYW5lbDogRmFpbGVkIHRvIGNyZWF0ZSB0ZW1wb3Jhcnkg
ZGlyZWN0b3J5IHRvIHNhdmUgaW1hZ2UiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvV2ViUGFnZVByb3h5TWFjLm1tCmluZGV4IDYyYmU0MTBmMjNiMGUyYzMzMDMwYmIwOWMxZTYy
ZjFjOGIyMGUxYzAuLjgzMDA0ZDcwYTgxNzc3MTYxODM4NGQ0ZDhmMjgxNWNmMjExYTc3NmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpAQCAt
NDk1LDcgKzQ5NSw3IEBAIHN0YXRpYyBOU1N0cmluZyAqcGF0aFRvUERGT25EaXNrKGNvbnN0IFN0
cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUpCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzYXZlUERGVG9U
ZW1wb3JhcnlGb2xkZXJBbmRPcGVuV2l0aE5hdGl2ZUFwcGxpY2F0aW9uUmF3KGNvbnN0IFN0cmlu
ZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgb3JpZ2luYXRpbmdVUkxTdHJpbmcs
IGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxvbmcgc2l6ZSwgY29uc3QgU3RyaW5nJiBw
ZGZVVUlEKQogewotICAgIC8vIEZJWE1FOiBXcml0ZSBvcmlnaW5hdGluZ1VSTFN0cmluZyB0byB0
aGUgZmlsZSdzIG9yaWdpbmF0aW5nIFVSTCBtZXRhZGF0YSAocGVyaGFwcyBXZWJDb3JlOjpGaWxl
U3lzdGVtOjpzZXRNZXRhZGF0YVVSTCgpPykuCisgICAgLy8gRklYTUU6IFdyaXRlIG9yaWdpbmF0
aW5nVVJMU3RyaW5nIHRvIHRoZSBmaWxlJ3Mgb3JpZ2luYXRpbmcgVVJMIG1ldGFkYXRhIChwZXJo
YXBzIEZpbGVTeXN0ZW06OnNldE1ldGFkYXRhVVJMKCk/KS4KICAgICBVTlVTRURfUEFSQU0ob3Jp
Z2luYXRpbmdVUkxTdHJpbmcpOwogCiAgICAgaWYgKCFzdWdnZXN0ZWRGaWxlbmFtZS5lbmRzV2l0
aElnbm9yaW5nQVNDSUlDYXNlKCIucGRmIikpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL3dpbi9XZWJQcm9jZXNzUG9vbFdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy93aW4vV2ViUHJvY2Vzc1Bvb2xXaW4uY3BwCmluZGV4IDEwMTVmZjA2MDZjZjRiYjRjZjU2
MmEwNzg5Mjg4NzMzNjU2ZjllZDYuLjM5MGEwYzkwMTkyMTk0MzNjNWZhNDlkM2UzODQ0YTFiODM1
NTI4Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJQcm9jZXNz
UG9vbFdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlByb2Nlc3NQ
b29sV2luLmNwcApAQCAtMjgsOCArMjgsOCBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgi
CiAKICNpbmNsdWRlICJXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCi0jaW5jbHVkZSA8
V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5o
PgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKaW5kZXggZWY3OTE5YzcyMGZlNzE3
YjU5MDkxOWJiODViNDU4MTg1YmE1MGZiMS4uMGY5ZjlkNGVmZDUyODZjNjI2ODQzYWMzYTA0Y2Qy
ZTZiZDk0OTllNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlZp
ZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcApAQCAt
NDQsNyArNDQsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQml0bWFwSW5mby5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvQ3Vyc29yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FZGl0b3IuaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvSFduZERDLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+
CkBAIC01NSw2ICs1NCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dzVG91Y2guaD4KICNp
bmNsdWRlIDxjYWlyby13aW4zMi5oPgogI2luY2x1ZGUgPGNhaXJvLmg+CisjaW5jbHVkZSA8d3Rm
L0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvU29mdExpbmtpbmcuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVy
Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93cGUvV2ViUHJvY2Vzc1Bv
b2xXUEUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd3BlL1dlYlByb2Nlc3NQb29sV1BF
LmNwcAppbmRleCA2MjU1YzQyN2I3YTFiYTVjZmVlZDBjYjM3ZGU1YzAyYzBiY2NlNWQxLi5mNTEw
MTdhOGNhMjllZDA3OTk0ZDdkMjA3Yzk1NzE0MTEyYTM4YmY1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy93cGUvV2ViUHJvY2Vzc1Bvb2xXUEUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL3dwZS9XZWJQcm9jZXNzUG9vbFdQRS5jcHAKQEAgLTM0LDEwICszNCwx
MCBAQAogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYlBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMu
aCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL05v
dEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY2hlbWVSZWdpc3RyeS5oPgogI2lu
Y2x1ZGUgPGNzdGRsaWI+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogI2lmIEVOQUJM
RShSRU1PVEVfSU5TUEVDVE9SKQogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1JlbW90ZUluc3Bl
Y3RvclNlcnZlci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdEV4dGVuc2lvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdEV4dGVuc2lvbk1h
bmFnZXIuY3BwCmluZGV4IGFhYzI4MjgwY2E1MjBiZjgzOTY1Yjc5NGMzZTM0ZmVhZmM2MWVlNzUu
LjRjY2VjNjJlZjBlMTEzMWZhMTNmN2ZiMDYwYzgwZTA3ZWU0MjUxYWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRFeHRl
bnNpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2dsaWIvV2ViS2l0RXh0ZW5zaW9uTWFuYWdlci5jcHAKQEAgLTIzLDggKzIzLDgg
QEAKICNpbmNsdWRlICJBUElTdHJpbmcuaCIKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZS5oIgog
I2luY2x1ZGUgIldlYktpdFdlYkV4dGVuc2lvblByaXZhdGUuaCIKLSNpbmNsdWRlIDxXZWJDb3Jl
L0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0
ZW0uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewpAQCAtNDEsOSArNDEsOSBAQCBXZWJLaXRFeHRlbnNpb25NYW5hZ2VyOjpXZWJLaXRFeHRlbnNp
b25NYW5hZ2VyKCkKIAogdm9pZCBXZWJLaXRFeHRlbnNpb25NYW5hZ2VyOjpzY2FuTW9kdWxlcyhj
b25zdCBTdHJpbmcmIHdlYkV4dGVuc2lvbnNEaXJlY3RvcnksIFZlY3RvcjxTdHJpbmc+JiBtb2R1
bGVzKQogewotICAgIFZlY3RvcjxTdHJpbmc+IG1vZHVsZVBhdGhzID0gV2ViQ29yZTo6RmlsZVN5
c3RlbTo6bGlzdERpcmVjdG9yeSh3ZWJFeHRlbnNpb25zRGlyZWN0b3J5LCBTdHJpbmcoIiouc28i
KSk7CisgICAgVmVjdG9yPFN0cmluZz4gbW9kdWxlUGF0aHMgPSBGaWxlU3lzdGVtOjpsaXN0RGly
ZWN0b3J5KHdlYkV4dGVuc2lvbnNEaXJlY3RvcnksIFN0cmluZygiKi5zbyIpKTsKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG1vZHVsZVBhdGhzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlm
IChXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG1vZHVsZVBhdGhzW2ldKSkKKyAgICAg
ICAgaWYgKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobW9kdWxlUGF0aHNbaV0pKQogICAgICAgICAg
ICAgbW9kdWxlcy5hcHBlbmQobW9kdWxlUGF0aHNbaV0pOwogICAgIH0KIH0KQEAgLTYzLDcgKzYz
LDcgQEAgc3RhdGljIHZvaWQgcGFyc2VVc2VyRGF0YShBUEk6Ok9iamVjdCogdXNlckRhdGEsIFN0
cmluZyYgd2ViRXh0ZW5zaW9uc0RpcmVjdG9yeSwKICAgICBHVmFyaWFudCogZGF0YSA9IG51bGxw
dHI7CiAgICAgZ192YXJpYW50X2dldCh2YXJpYW50LmdldCgpLCAiKG0mc212KSIsICZkaXJlY3Rv
cnksICZkYXRhKTsKIAotICAgIHdlYkV4dGVuc2lvbnNEaXJlY3RvcnkgPSBXZWJDb3JlOjpGaWxl
U3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRpcmVjdG9yeSk7Cisg
ICAgd2ViRXh0ZW5zaW9uc0RpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oZGlyZWN0b3J5KTsKICAgICBpbml0aWFsaXphdGlvblVzZXJEYXRh
ID0gYWRvcHRHUmVmKGRhdGEpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvZ2xpYi9JbmplY3RlZEJ1bmRsZUdsaWIuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL2dsaWIvSW5qZWN0ZWRCdW5kbGVHbGli
LmNwcAppbmRleCAwYTg2MDY1MmYwMGRhZDkzMjhjZjM1NWQ0MDUxM2ZlODBmNWVmNjU4Li41NTdm
ZTY4ZGUxMWRhMDJlMDk2NTVhYmI2YmMzNmJiYWNjMmJiNzAzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvZ2xpYi9JbmplY3RlZEJ1bmRsZUdsaWIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9nbGliL0lu
amVjdGVkQnVuZGxlR2xpYi5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKIAogI2luY2x1ZGUgIldLQnVu
ZGxlQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldLQnVuZGxlSW5pdGlhbGl6ZS5oIgotI2luY2x1ZGUg
PFdlYkNvcmUvRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFn
ZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVk
aWFLZXlTdG9yYWdlTWFuYWdlci5jcHAKaW5kZXggNGJmNDhkMGU5NGVlZjc2MDY2Y2EzMGVhOWNm
MzU3MDRhYjNkZWFlYi4uYmQzOTgyNDI2YzY2ZTYzNWI2YzU2MDVjYmU1YTNiMDUwMjVkM2ExYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFL
ZXlTdG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlh
Q2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5jcHAKQEAgLTI3LDkgKzI3LDkgQEAKICNp
bmNsdWRlICJXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmgiCiAKICNpbmNsdWRlICJXZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U2VjdXJpdHlPcmlnaW5EYXRhLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNs
dWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0u
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1
Z2luU3RyZWFtLmgKaW5kZXggYmI2YTViMDhjN2NjZTVkZGVkODk5MzYwZjdhYjgzNDBmMDM5NWU3
NC4uM2VkY2VjNmE3MmNjYzNhYTY0ZDgxOWZhOTMzN2Y0M2U2MmU3ZDc2ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5T
dHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9O
ZXRzY2FwZVBsdWdpblN0cmVhbS5oCkBAIC0yNyw5ICsyNyw5IEBACiAKICNpZiBFTkFCTEUoTkVU
U0NBUEVfUExVR0lOX0FQSSkKIAotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvbnBydW50aW1lX2ludGVybmFsLmg+CiAjaW5jbHVkZSA8bWVtb3J5Pgor
I2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTg5
LDcgKzg5LDcgQEAgcHJpdmF0ZToKICAgICBpbnQzMl90IG1fb2Zmc2V0OwogCiAgICAgU3RyaW5n
IG1fZmlsZVBhdGg7Ci0gICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxl
IG1fZmlsZUhhbmRsZTsKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgbV9maWxl
SGFuZGxlOwogICAgIAogICAgIC8vIFdoZXRoZXIgTlBQX05ld1N0cmVhbSBoYXMgc3VjY2Vzc2Z1
bGx5IGJlZW4gY2FsbGVkLgogICAgIGJvb2wgbV9pc1N0YXJ0ZWQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bi5jcHAKaW5kZXggMDFjNTNmM2Q4NDNkZDFkMjQzMTRmNWNjMGMxMmU5MDk2NGVmYmJlNC4uZjIw
MmJmOTAyODRhZjA2YTVjYzdiMzJkYjVkMzBkMzIwNGYxZGExNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0
aW9uLmNwcApAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNs
dWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0pTT2JqZWN0Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8
d3RmL0ZpbGVTeXN0ZW0uaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcAppbmRleCA2M2MzNmEz
ZGI2OWE4MmFkM2JlYTY2MGY2YjA2ZGZlNzYzYzU1NjE3Li4xZDgxNjZhMDdlM2ZkOTc4ODFjYjdm
NDRmNGE2YmVmZjg1YmJmZTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3Bw
CkBAIC0yOCw5ICsyOCw5IEBACiAKICNpbmNsdWRlICJTZXNzaW9uU3RhdGUuaCIKICNpbmNsdWRl
IDxXZWJDb3JlL0Jsb2JEYXRhLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9Gb3JtRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSGlzdG9yeUl0
ZW0uaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYkluc3BlY3RvclVJR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJJbnNwZWN0b3JVSUd0ay5jcHAKaW5kZXggODljM2Jh
MWFhODkzOWNmYTUxZjZmYjIyMWE3M2IzOGQ3ODAzMjdhMy4uZGJiMmE5MTgwNGJlMTMyNjQ4Yzlh
ZDMzZTZmMDI3YmRkM2YxMTBmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvZ3RrL1dlYkluc3BlY3RvclVJR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViSW5zcGVjdG9yVUlHdGsuY3BwCkBAIC0yOCw4ICsyOCw4
IEBACiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yVUkuaCIKICNpbmNsdWRlICJSZW1vdGVXZWJJbnNw
ZWN0b3JVSS5oIgogCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8
Z2xpYi5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL1dlYkluc3BlY3RvclVJV2luLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9XZWJJbnNwZWN0b3JVSVdpbi5jcHAKaW5k
ZXggNmE3YWYzYzVkNjQ5YzUwNGVlZGFkNDljOTFhMWZiNDQzNWU0YTE4Yy4uNDcxMTE0Y2FmYTE0
YTdkMWYzM2ZmYTJjMWU4YWZiYmJlZDJlMDNhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL1dlYkluc3BlY3RvclVJV2luLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93aW4vV2ViSW5zcGVjdG9yVUlXaW4uY3BwCkBAIC0y
OCw4ICsyOCw4IEBACiAKICNpbmNsdWRlICJSZW1vdGVXZWJJbnNwZWN0b3JVSS5oIgogCi0jaW5j
bHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XZWJDb3JlQnVu
ZGxlV2luLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQppbmRleCBhNDQ2ODFjNzcyNzFj
MDRhNzk2ZjA3YmJjY2FjM2JlY2M0ODFmNzVhLi4zNWQ1N2Q1Y2U2N2I2NTg3NjA3OTNkY2M3YzQw
OTE2OWY4NTgwYWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2Ev
V2ViUHJvY2Vzc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9X
ZWJQcm9jZXNzQ29jb2EubW0KQEAgLTUxLDcgKzUxLDYgQEAKICNpbXBvcnQgPFdlYkNvcmUvQVhP
YmplY3RDYWNoZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9DUFVNb25pdG9yLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIuaD4KLSNpbXBvcnQgPFdlYkNvcmUv
RmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Gb250Q2FjaGUuaD4KICNpbXBvcnQgPFdl
YkNvcmUvRm9udENhc2NhZGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvSGlzdG9yeUNvbnRyb2xsZXIu
aD4KQEAgLTcyLDYgKzcxLDcgQEAKICNpbXBvcnQgPHBhbC9zcGkvbWFjL05TQWNjZXNzaWJpbGl0
eVNQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9tYWMvTlNBcHBsaWNhdGlvblNQSS5oPgogI2ltcG9y
dCA8c3RkaW8uaD4KKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDx3dGYvY29j
b2EvTlNVUkxFeHRyYXMuaD4KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuY3BwCmluZGV4IDQwMzk5NjBi
MTQwZmNiOWM2M2E3NmQ2ZDA3NzEzYTNhMzE4MmM1YTQuLjE3ZDQ4OTQ5NGQ3ZTA5MGQzZmY3MzVl
ZmYyNjQ0NWVmZWM2YjkyOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFn
ZS9TdG9yYWdlQXJlYVN5bmMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9T
dG9yYWdlQXJlYVN5bmMuY3BwCkBAIC0yOCwxMSArMjgsMTEgQEAKICNpbmNsdWRlICJTdG9yYWdl
QXJlYUltcGwuaCIKICNpbmNsdWRlICJTdG9yYWdlU3luY01hbmFnZXIuaCIKICNpbmNsdWRlICJT
dG9yYWdlVHJhY2tlci5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU1FMaXRlRGF0YWJhc2VUcmFja2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
UUxpdGVTdGF0ZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZVRyYW5zYWN0aW9uLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TdWRkZW5UZXJtaW5hdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9G
aWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIAogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3Rv
cmFnZVN5bmNNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdl
U3luY01hbmFnZXIuY3BwCmluZGV4IDNlOGZmNjVlZTYwZjI3NGRjOTA0ZWI1OGMxMTc0ZWQ1Y2Mx
YTU3NGMuLjM2OTA5NWNkYWQxZDM0NzExYTA2NzZkODczNmE5MGUxOTNlMjkwNWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIuY3BwCkBA
IC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiU3RvcmFnZVN5bmNNYW5hZ2VyLmgiCiAKICNpbmNs
dWRlICJTdG9yYWdlVGhyZWFkLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+Cisj
aW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
U3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAKaW5kZXggNzEwMTQwYjFiMTMzYTJlYjU5Mzk2ZDc2
NzQ4NmQyMTgzZWM5MDQ4NC4uYjkzNGQxYTNiMWJhYTgzMWFkZGYzYWJlNWUwNzcwYWIxY2Y3N2Zh
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3Bw
CkBAIC0yOCwxMyArMjgsMTMgQEAKICNpbmNsdWRlICJTdG9yYWdlVGhyZWFkLmgiCiAjaW5jbHVk
ZSAiU3RvcmFnZVRyYWNrZXJDbGllbnQuaCIKICNpbmNsdWRlICJXZWJTdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXIuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1BhZ2VHcm91cC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlRGF0YWJhc2VUcmFj
a2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVTdGF0ZW1lbnQuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdp
bkRhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHRFbmNvZGluZy5oPgorI2luY2x1ZGUgPHd0
Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3
dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU0ZpbGVNYW5hZ2VyRXh0cmFzLm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU0ZpbGVNYW5hZ2VyRXh0cmFzLm1tCmlu
ZGV4IDkwNTE3NGRhNzU2ZGQ2MjhiZWRlZmQ1MGMyYjIzNzI5ZTUzMzUwMmIuLmM1NDEzZTgxYzZh
M2VjYjJlYzk3ODFmNmI4YmZkNmMyYjJhMDVkZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL01pc2MvV2ViTlNGaWxlTWFuYWdlckV4dHJhcy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TRmlsZU1hbmFnZXJFeHRyYXMubW0KQEAgLTMwLDEwICsz
MCwxMCBAQAogCiAjaW1wb3J0ICJXZWJLaXROU1N0cmluZ0V4dHJhcy5oIgogI2ltcG9ydCAiV2Vi
TlNVUkxFeHRyYXMuaCIKLSNpbXBvcnQgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9Mb2FkZXJOU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8c3lzL3N0YXQuaD4KICNpbXBv
cnQgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogI2ltcG9y
dCA8d3RmL09iakNSdW50aW1lRXh0cmFzLmg+CiAKIEBpbXBsZW1lbnRhdGlvbiBOU0ZpbGVNYW5h
Z2VyIChXZWJOU0ZpbGVNYW5hZ2VyRXh0cmFzKQpAQCAtNDQsNyArNDQsNyBAQCAtICh2b2lkKV93
ZWJraXRfc2V0TWV0YWRhdGFVUkw6KE5TU3RyaW5nICopVVJMU3RyaW5nIHJlZmVycmVyOihOU1N0
cmluZyAqKXJlZmVycgogewogICAgIEFTU0VSVChVUkxTdHJpbmcpOwogICAgIEFTU0VSVChwYXRo
KTsKLSAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzZXRNZXRhZGF0YVVSTChwYXRoLCBVUkxTdHJp
bmcsIHJlZmVycmVyKTsKKyAgICBGaWxlU3lzdGVtOjpzZXRNZXRhZGF0YVVSTChwYXRoLCBVUkxT
dHJpbmcsIHJlZmVycmVyKTsKIH0KIAogI2VuZGlmIC8vICFQTEFURk9STShJT1NfRkFNSUxZKQpA
QCAtOTMsNyArOTMsNyBAQCAtIChOU1N0cmluZyAqKV93ZWJraXRfcGF0aFdpdGhVbmlxdWVGaWxl
bmFtZUZvclBhdGg6KE5TU3RyaW5nICopcGF0aAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAt
IChOU1N0cmluZyAqKV93ZWJraXRfY3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5V2l0aFRlbXBsYXRl
UHJlZml4OihOU1N0cmluZyAqKXByZWZpeAogewotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lz
dGVtOjpjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkocHJlZml4KTsKKyAgICByZXR1cm4gRmlsZVN5
c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KHByZWZpeCk7CiB9CiAjZW5kaWYKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZVByb3Zp
ZGVyLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZVByb3Zp
ZGVyLm1tCmluZGV4IDc0OTViMTc1ZmZmNDVkYzVhNTRiMDE0ZjhkNWJmMDNlNTQzOTQzY2MuLmFk
YzRjMzk4ODRjNGNiMmQyYTNiZWI2YjE5NWJjZGEwMDA4OWMxNzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VQcm92aWRlci5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlUHJvdmlkZXIubW0KQEAg
LTI2LDE2ICsyNiwxNiBAQAogI2ltcG9ydCAiV2ViRGF0YWJhc2VQcm92aWRlci5oIgogI2ltcG9y
dCAiV2ViRGF0YWJhc2VNYW5hZ2VyUHJpdmF0ZS5oIgogCi0jaW1wb3J0IDxXZWJDb3JlL0ZpbGVT
eXN0ZW0uaD4KKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKIFN0cmluZyBXZWJEYXRhYmFz
ZVByb3ZpZGVyOjppbmRleGVkRGF0YWJhc2VEaXJlY3RvcnlQYXRoKCkKIHsKICAgICBOU1VzZXJE
ZWZhdWx0cyAqZGVmYXVsdHMgPSBbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNd
OwogICAgIE5TU3RyaW5nICpkYXRhYmFzZXNEaXJlY3RvcnkgPSBbZGVmYXVsdHMgb2JqZWN0Rm9y
S2V5OldlYkRhdGFiYXNlRGlyZWN0b3J5RGVmYXVsdHNLZXldOwogICAgIGlmICghZGF0YWJhc2Vz
RGlyZWN0b3J5IHx8ICFbZGF0YWJhc2VzRGlyZWN0b3J5IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5n
IGNsYXNzXV0pCi0gICAgICAgIGRhdGFiYXNlc0RpcmVjdG9yeSA9IFdlYkNvcmU6OkZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCgifi9MaWJyYXJ5L1dlYktpdC9EYXRhYmFzZXMv
X19fSW5kZXhlZERCIl9zLCBbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJd
KTsKKyAgICAgICAgZGF0YWJhc2VzRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KCJ+L0xpYnJhcnkvV2ViS2l0L0RhdGFiYXNlcy9fX19JbmRleGVkREIiX3Ms
IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl0pOwogICAgIGVsc2UKLSAg
ICAgICAgZGF0YWJhc2VzRGlyZWN0b3J5ID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlc0RpcmVjdG9yeSwgIl9fX0luZGV4ZWREQiJfcyk7Cisg
ICAgICAgIGRhdGFiYXNlc0RpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChkYXRhYmFzZXNEaXJlY3RvcnksICJfX19JbmRleGVkREIiX3MpOwogICAgIAogICAg
IHJldHVybiBbZGF0YWJhc2VzRGlyZWN0b3J5IHN0cmluZ0J5U3RhbmRhcmRpemluZ1BhdGhdOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDlkZGU3
ZGRlMWE3YWQ3ZmQ2ZjIxODI1NGYwYjE3ZDMyZWJmN2JiM2EuLmRlMjhhZDA1MjI1N2IwMmU3ODQ4
NDc1OGM3NGFkZDg4OGFhMjA3NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0KQEAgLTE0OCw3ICsxNDgsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9FZGl0b3Iu
aD4KICNpbXBvcnQgPFdlYkNvcmUvRXZlbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvRXZlbnRIYW5k
bGVyLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPFdlYkNvcmUv
Rm9jdXNDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZvbnRBdHRyaWJ1dGVzLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0ZvbnRDYWNoZS5oPgpAQCAtMjMxLDYgKzIzMCw3IEBACiAjaW1wb3J0
IDxwYWwvc3BpL21hYy9OU1NwZWxsQ2hlY2tlclNQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9tYWMv
TlNXaW5kb3dTUEkuaD4KICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW1wb3J0IDx3dGYv
RmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8d3RmL0hhc2hUcmFpdHMuaD4KICNpbXBvcnQgPHd0Zi9N
YWluVGhyZWFkLmg+CiAjaW1wb3J0IDx3dGYvT2JqQ1J1bnRpbWVFeHRyYXMuaD4KQEAgLTY4ODUs
NyArNjg4NSw3IEBAIC0gKEJPT0wpcGVyZm9ybURyYWdPcGVyYXRpb246KGlkIDxOU0RyYWdnaW5n
SW5mbz4pZHJhZ2dpbmdJbmZvCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0K
IAotICAgICAgICBOU1N0cmluZyAqZHJvcERlc3RpbmF0aW9uUGF0aCA9IFdlYkNvcmU6OkZpbGVT
eXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShAIldlYktpdERyb3BEZXN0aW5hdGlvbiIp
OworICAgICAgICBOU1N0cmluZyAqZHJvcERlc3RpbmF0aW9uUGF0aCA9IEZpbGVTeXN0ZW06OmNy
ZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShAIldlYktpdERyb3BEZXN0aW5hdGlvbiIpOwogICAgICAg
ICBpZiAoIWRyb3BEZXN0aW5hdGlvblBhdGgpIHsKICAgICAgICAgICAgIGRlbGV0ZSBkcmFnRGF0
YTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKaW5kZXggYmM3OWQ4OWJkNDQ2YzU2ZWEx
YmE5ZDU3Yzc1YWUzOTlhYThmMDRjZi4uYmJlYmUxODdlZGYzNGI3YjdlYzIwMDhlZDFmYWRkMzU5
MjY1OTYyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVn
aW5EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVn
aW5EYXRhYmFzZS5jcHAKQEAgLTMzLDcgKzMzLDggQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CiAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX01FVEFEQVRBX0NBQ0hFKQotI2lu
Y2x1ZGUgIkZpbGVTeXN0ZW0uaCIKKworI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjZW5k
aWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vUGx1Z2lucy9QbHVnaW5QYWNrYWdlLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9Q
bHVnaW5zL1BsdWdpblBhY2thZ2UuaAppbmRleCBiNDg4M2RlYTk5NzZkYjUwY2RlNTI4NjBhYTli
OTJiNWJiMTAxMGRmLi44OTg3YTNkMzUzYzc2YzBhYTQ0NmVhYjM5MDgzNzMzMzlkNTE3ZDMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblBhY2thZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblBhY2thZ2UuaApA
QCAtMjksOCArMjksOCBAQAogCiAjaW5jbHVkZSAiUGxhdGZvcm1Nb2R1bGUuaCIKICNpbmNsdWRl
ICJQbHVnaW5RdWlya1NldC5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9QbHVnaW5zL1BsdWdpblN0cmVhbS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
UGx1Z2lucy9QbHVnaW5TdHJlYW0uaAppbmRleCBjMWI5Zjg3YWM0ZTYyMmZiYjJlMmUyMDVkMTY0
NTljMGMxOTRlN2I2Li40MzFiMzYzMDM2MmM5ZTUyMTExOGRkMDMyNzNhNmNkOWMyOGNjNDY3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblN0cmVhbS5o
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luU3RyZWFtLmgKQEAg
LTI3LDEyICsyNywxMiBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJQbHVnaW5RdWlya1Nl
dC5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNl
UmVxdWVzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvVGltZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL25wcnVudGltZV9pbnRlcm5h
bC5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFwcGxpY2F0aW9uQ2FjaGUuY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXBwbGljYXRpb25DYWNoZS5jcHAKaW5kZXgg
Yjg1ZGQxNTQ0MGE2ZWE1NDA0YThhNDg1MjE0M2U1OTE3OGZlYzEyZC4uOTBiZTFmY2U3NTFiNGYx
YjVkOTRiMWJiNjc0YzM2YjNlYzU2OWZjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQXBwbGljYXRpb25DYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQXBwbGljYXRpb25DYWNoZS5jcHAKQEAgLTMwLDEzICszMCwxMyBAQAogI2luY2x1ZGUg
Ik1hcnNoYWxsaW5nSGVscGVycy5oIgogI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzLmgiCiAjaW5j
bHVkZSAiV2ViU2VjdXJpdHlPcmlnaW4uaCIKLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9BcHBsaWNhdGlvbkNhY2hlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9B
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ09NUHRyLmg+Ci0j
aW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0
eU9yaWdpbi5oPgogI2luY2x1ZGUgPGNvbXV0aWwuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3Rl
bS5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFu
YWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3Bw
CmluZGV4IDNmNmMzOGIwNjI4ZGI0YmFjZjljNDEzNTdiNTkxYTdkZWM5YWNkNDEuLmY5OTYzZjFj
MDY4OTZkN2EyY2IyZDczM2ExOGVmYWFhZjNjZTQ4MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcApAQCAtMzksOSArMzksOSBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvQ09NUHRyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EYXRhYmFzZU1hbmFnZXIu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0RhdGFiYXNlVHJhY2tlci5oPgotI2luY2x1ZGUgPFdlYkNv
cmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxl
U3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIAogI2lmIEVOQUJMRShJTkRF
WEVEX0RBVEFCQVNFKQpAQCAtNDM2LDcgKzQzNiw3IEBAIHN0YXRpYyBXVEY6OlN0cmluZyBkYXRh
YmFzZXNEaXJlY3RvcnkoKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+
KGRpcmVjdG9yeVByZWYuZ2V0KCkpOwogI2VuZGlmCiAKLSAgICByZXR1cm4gV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06Omxv
Y2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiRGF0YWJhc2VzIik7CisgICAgcmV0
dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2Nh
bFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkRhdGFiYXNlcyIpOwogfQogCiB2b2lk
IFdlYktpdEluaXRpYWxpemVXZWJEYXRhYmFzZXNJZk5lY2Vzc2FyeSgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZEN1cmwuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViRG93bmxvYWRDdXJsLmNwcAppbmRleCAyMGQ0ZjQwODM1ZjcyNDEzOGYx
NzIzYThkYzJmOTRiODk1MmVlZWQ3Li45OWI2MjdmMWFhYzAzYWVkZjUwNjg3ZmM3ZjMzNmJiOTVk
OWNkZDIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZEN1
cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkQ3VybC5jcHAK
QEAgLTM1LDIyICszNSwxOSBAQAogI2luY2x1ZGUgIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlLmgiCiAjaW5jbHVkZSAiV2ViVVJMQ3JlZGVudGlhbC5oIgogI2luY2x1ZGUgIldlYlVSTFJl
c3BvbnNlLmgiCi0KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0KLSNpbmNsdWRlIDxp
by5oPgotI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0KICNp
bmNsdWRlIDxXZWJDb3JlL0JTdHJpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0N1cmxEb3dubG9h
ZC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
Tm90SW1wbGVtZW50ZWQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNv
dXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1RleHRFbmNvZGluZy5oPgorI2luY2x1ZGUgPGlvLmg+CisjaW5jbHVk
ZSA8c3lzL3N0YXQuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDx3dGYvRmls
ZVN5c3RlbS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlBy
ZWZlcmVuY2VzLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNw
cAppbmRleCA1OWJlMGM0NDNmNGZkNjY1OGI4NDE4YjVjYTMzMTQxMDI5MGMxNWZkLi4yMTUwNWQ1
OGM3NDUzOGQ0NDBhOGMxMmQxN2U4OWM1NTYxNDIzMmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCkBAIC0zNywxMyArMzcsMTMgQEAKIAogI2luY2x1ZGUg
PENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DT01Q
dHIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0ZvbnRDYXNjYWRlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KICNpbmNsdWRlIDxsaW1p
dHM+CiAjaW5jbHVkZSA8c2hsb2JqLmg+CiAjaW5jbHVkZSA8d2NoYXIuaD4KKyNpbmNsdWRlIDx3
dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAppbmRleCBmZWIyZGYzZGQ0NzYwOWUxYjNmNjQwOWVjZDI2
MGQyOGQyMjhkYmE4Li41ZWNlODA2NDBkZGU3Y2NmMmVhZmMyNjRlYzA4MTdkY2MwYTgwMzM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcApAQCAtOTYsNyArOTYsNiBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvRWRpdG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FdmVudEhhbmRsZXIuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0V2ZW50TmFtZXMuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVT
eXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UXVhZC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvRm9jdXNDb250cm9sbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Gb250Lmg+CkBAIC0xNzEs
NiArMTcwLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1dpbmRvd3NUb3VjaC5oPgogI2luY2x1ZGUg
PGNvbWRlZi5oPgogI2luY2x1ZGUgPGQyZDEuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5o
PgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1Byb2Nlc3NQcml2
aWxlZ2UuaD4KICNpbmNsdWRlIDx3dGYvUkFNU2l6ZS5oPgpAQCAtNTEzLDcgKzUxMyw3IEBAIHZv
aWQgV2ViVmlldzo6c2V0Q2FjaGVNb2RlbChXZWJDYWNoZU1vZGVsIGNhY2hlTW9kZWwpCiAgICAg
ICAgIGlmIChwcmVmZXJlbmNlICYmIChDRlN0cmluZ0dldFR5cGVJRCgpID09IENGR2V0VHlwZUlE
KHByZWZlcmVuY2UuZ2V0KCkpKSkKICAgICAgICAgICAgIGNmdXJsQ2FjaGVEaXJlY3RvcnkgPSBh
ZG9wdENGKHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihwcmVmZXJlbmNlLmxlYWtSZWYoKSkpOwog
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBjZnVybENhY2hlRGlyZWN0b3J5ID0gV2ViQ29yZTo6
RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCkuY3JlYXRlQ0ZT
dHJpbmcoKTsKKyAgICAgICAgICAgIGNmdXJsQ2FjaGVEaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjps
b2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKS5jcmVhdGVDRlN0cmluZygpOwogICAg
IH0KICAgICBjYWNoZURpcmVjdG9yeSA9IFN0cmluZyhjZnVybENhY2hlRGlyZWN0b3J5LmdldCgp
KTsKICAgICBDRkluZGV4IGNhY2hlTWVtb3J5Q2FwYWNpdHkgPSAwOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGRlOGZmNWViM2EwZTU4NjhjOTlh
MjIyNWZlZGUwZTczNTBhZDVlODkuLmFhMGJlZDE2M2Y5Njg5NGQxOWVlMTgyZmZiODZkZmI0MDVl
MjhhNjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyNSBAQAorMjAxOS0wMS0xOCAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xp
bmdAc29ueS5jb20+CisKKyAgICAgICAgTW92ZSBGaWxlU3lzdGVtIHRvIFdURgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzNjAyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93
aW4vRHVtcFJlbmRlclRyZWUuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvQ01ha2VMaXN0
cy50eHQ6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1BsYXRmb3JtV1BFLmNtYWtlOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwOiBSZW5hbWVkIGZyb20gVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVTeXN0ZW0uY3BwLgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRvci5jcHA6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmNwcDoKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5jcHA6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL0RhdGFiYXNlVHJhY2tlclRl
c3QubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2N1cmwvQ29va2ll
cy5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9h
ZC5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2Fk
UHJvZ3Jlc3MubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS93aW4vUGxhdGZvcm1VdGlsaXRp
ZXNXaW4uY3BwOgorCiAyMDE5LTAxLTE4ICBBYWthc2ggSmFpbiAgPGFha2FzaF9qYWluQGFwcGxl
LmNvbT4KIAogICAgICAgICBbYnVpbGQud2Via2l0Lm9yZ10gdW5pdC10ZXN0IGZhaWx1cmUgQnVp
bGRlciBHVEsgTGludXggMzItYml0IFJlbGVhc2UgZG9lc24ndCBleGlzdApkaWZmIC0tZ2l0IGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcCBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAKaW5kZXggYTRiNWM3NzA3MDg5MGE1Y2Yx
NDJkMmQ5YzhiM2MzMzg2NDgzZTZlZC4uYTBiNjg1Yzc1ZjlkYWYwZmViN2VhYWUxYmIzMmEyZTk1
MmQyMjZmNCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJU
cmVlLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3Bw
CkBAIC00Niw3ICs0Niw2IEBACiAKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRh
dGlvbi5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Rlc3RSdW5uZXJVdGlscy5oPgotI2lu
Y2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYktpdExlZ2FjeS9XZWJL
aXQuaD4KICNpbmNsdWRlIDxXZWJLaXRMZWdhY3kvV2ViS2l0Q09NQVBJLmg+CiAjaW5jbHVkZSA8
Y29tdXRpbC5oPgpAQCAtNjAsNiArNTksNyBAQAogI2luY2x1ZGUgPHNobHdhcGkuaD4KICNpbmNs
dWRlIDx0Y2hhci5oPgogI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5
c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgpAQCAtMjIyLDcgKzIyMiw3IEBA
IHN0YXRpYyBTdHJpbmcgbGlicmFyeVBhdGhGb3JEdW1wUmVuZGVyVHJlZSgpCiAgICAgICAgIHJl
dHVybiBTdHJpbmcgKHBhdGguZGF0YSgpLCBwYXRoLmxlbmd0aCgpKTsKICAgICB9CiAKLSAgICBy
ZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0
b3J5KCk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURp
cmVjdG9yeSgpOwogfQogI2VuZGlmCiAKQEAgLTkzMSw5ICs5MzEsOSBAQCBzdGF0aWMgdm9pZCBz
ZXREZWZhdWx0c1RvQ29uc2lzdGVudFZhbHVlc0ZvclRlc3RpbmcoKQogICAgIFN0cmluZyBsaWJy
YXJ5UGF0aCA9IGxpYnJhcnlQYXRoRm9yRHVtcFJlbmRlclRyZWUoKTsKIAogICAgIC8vIFNldCB1
cCB0aGVzZSB2YWx1ZXMgYmVmb3JlIGNyZWF0aW5nIHRoZSBXZWJWaWV3IHNvIHRoYXQgdGhlIHZh
cmlvdXMgaW5pdGlhbGl6YXRpb25zIHdpbGwgc2VlIHRoZXNlIHByZWZlcnJlZCB2YWx1ZXMuCi0g
ICAgQ0ZQcmVmZXJlbmNlc1NldEFwcFZhbHVlKFdlYkRhdGFiYXNlRGlyZWN0b3J5RGVmYXVsdHNL
ZXksIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChsaWJyYXJ5
UGF0aCwgIkRhdGFiYXNlcyIpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGFwcElkLmdldCgpKTsK
LSAgICBDRlByZWZlcmVuY2VzU2V0QXBwVmFsdWUoV2ViU3RvcmFnZURpcmVjdG9yeURlZmF1bHRz
S2V5LCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobGlicmFy
eVBhdGgsICJMb2NhbFN0b3JhZ2UiKS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBhcHBJZC5nZXQo
KSk7Ci0gICAgQ0ZQcmVmZXJlbmNlc1NldEFwcFZhbHVlKFdlYktpdExvY2FsQ2FjaGVEZWZhdWx0
c0tleSwgV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGxpYnJh
cnlQYXRoLCAiTG9jYWxDYWNoZSIpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGFwcElkLmdldCgp
KTsKKyAgICBDRlByZWZlcmVuY2VzU2V0QXBwVmFsdWUoV2ViRGF0YWJhc2VEaXJlY3RvcnlEZWZh
dWx0c0tleSwgRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGxpYnJhcnlQYXRo
LCAiRGF0YWJhc2VzIikuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgYXBwSWQuZ2V0KCkpOworICAg
IENGUHJlZmVyZW5jZXNTZXRBcHBWYWx1ZShXZWJTdG9yYWdlRGlyZWN0b3J5RGVmYXVsdHNLZXks
IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChsaWJyYXJ5UGF0aCwgIkxvY2Fs
U3RvcmFnZSIpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGFwcElkLmdldCgpKTsKKyAgICBDRlBy
ZWZlcmVuY2VzU2V0QXBwVmFsdWUoV2ViS2l0TG9jYWxDYWNoZURlZmF1bHRzS2V5LCBGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobGlicmFyeVBhdGgsICJMb2NhbENhY2hlIiku
Y3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgYXBwSWQuZ2V0KCkpOwogI2VuZGlmCiB9CiAKQEAgLTEw
MzUsNyArMTAzNSw3IEBAIHN0YXRpYyB2b2lkIHNpemVXZWJWaWV3Rm9yQ3VycmVudFRlc3QoKQog
CiBzdGF0aWMgU3RyaW5nIGZpbmRGb250RmFsbGJhY2soY29uc3QgY2hhciogcGF0aE9yVXJsKQog
ewotICAgIFN0cmluZyBwYXRoVG9Gb250RmFsbGJhY2sgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpk
aXJlY3RvcnlOYW1lKHBhdGhPclVybCk7CisgICAgU3RyaW5nIHBhdGhUb0ZvbnRGYWxsYmFjayA9
IEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUocGF0aE9yVXJsKTsKIAogICAgIHdjaGFyX3QgZnVs
bFBhdGhbX01BWF9QQVRIXTsKICAgICBpZiAoIV93ZnVsbHBhdGgoZnVsbFBhdGgsIHBhdGhUb0Zv
bnRGYWxsYmFjay5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSwgX01BWF9Q
QVRIKSkKQEAgLTEwNTQsMjAgKzEwNTQsMjAgQEAgc3RhdGljIFN0cmluZyBmaW5kRm9udEZhbGxi
YWNrKGNvbnN0IGNoYXIqIHBhdGhPclVybCkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7
CiAKICAgICBTdHJpbmcgcGF0aFRvVGVzdCA9IHBhdGhUb0NoZWNrLnN1YnN0cmluZyhsb2NhdGlv
biArIGxheW91dFRlc3RzLmxlbmd0aCgpICsgMSk7Ci0gICAgU3RyaW5nIHBvc3NpYmxlUGF0aFRv
TG9ndWUgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGF0
aFRvQ2hlY2suc3Vic3RyaW5nKDAsIGxvY2F0aW9uICsgbGF5b3V0VGVzdHMubGVuZ3RoKCkgKyAx
KSwgInBsYXRmb3JtXFx3aW4iKTsKKyAgICBTdHJpbmcgcG9zc2libGVQYXRoVG9Mb2d1ZSA9IEZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXRoVG9DaGVjay5zdWJzdHJpbmco
MCwgbG9jYXRpb24gKyBsYXlvdXRUZXN0cy5sZW5ndGgoKSArIDEpLCAicGxhdGZvcm1cXHdpbiIp
OwogCiAgICAgVmVjdG9yPFN0cmluZz4gcG9zc2libGVQYXRoczsKLSAgICBwb3NzaWJsZVBhdGhz
LmFwcGVuZChXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocG9z
c2libGVQYXRoVG9Mb2d1ZSwgcGF0aFRvVGVzdCkpOworICAgIHBvc3NpYmxlUGF0aHMuYXBwZW5k
KEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwb3NzaWJsZVBhdGhUb0xvZ3Vl
LCBwYXRoVG9UZXN0KSk7CiAKICAgICBzaXplX3QgbmV4dENhbmRpZGF0ZUVuZCA9IHBhdGhUb1Rl
c3QucmV2ZXJzZUZpbmQoJ1xcJyk7CiAgICAgd2hpbGUgKG5leHRDYW5kaWRhdGVFbmQgJiYgbmV4
dENhbmRpZGF0ZUVuZCAhPSBXVEY6Om5vdEZvdW5kKSB7CiAgICAgICAgIHBhdGhUb1Rlc3QgPSBw
YXRoVG9UZXN0LnN1YnN0cmluZygwLCBuZXh0Q2FuZGlkYXRlRW5kKTsKLSAgICAgICAgcG9zc2li
bGVQYXRocy5hcHBlbmQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KHBvc3NpYmxlUGF0aFRvTG9ndWUsIHBhdGhUb1Rlc3QpKTsKKyAgICAgICAgcG9zc2libGVQ
YXRocy5hcHBlbmQoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBvc3NpYmxl
UGF0aFRvTG9ndWUsIHBhdGhUb1Rlc3QpKTsKICAgICAgICAgbmV4dENhbmRpZGF0ZUVuZCA9IHBh
dGhUb1Rlc3QucmV2ZXJzZUZpbmQoJ1xcJyk7CiAgICAgfQogCiAgICAgZm9yIChWZWN0b3I8U3Ry
aW5nPjo6aXRlcmF0b3IgcG9zID0gcG9zc2libGVQYXRocy5iZWdpbigpOyBwb3MgIT0gcG9zc2li
bGVQYXRocy5lbmQoKTsgKytwb3MpIHsKLSAgICAgICAgcGF0aFRvRm9udEZhbGxiYWNrID0gV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KCpwb3MsICJyZXNvdXJj
ZXNcXCIpOworICAgICAgICBwYXRoVG9Gb250RmFsbGJhY2sgPSBGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQoKnBvcywgInJlc291cmNlc1xcIik7CiAKICAgICAgICAgaWYgKDo6
UGF0aElzRGlyZWN0b3J5VyhwYXRoVG9Gb250RmFsbGJhY2suY2hhcmFjdGVyc1dpdGhOdWxsVGVy
bWluYXRpb24oKS5kYXRhKCkpKQogICAgICAgICAgICAgcmV0dXJuIHBhdGhUb0ZvbnRGYWxsYmFj
azsKQEAgLTEwODEsNyArMTA4MSw3IEBAIHN0YXRpYyB2b2lkIGFkZEZvbnRGYWxsYmFja0lmUHJl
c2VudChjb25zdCBTdHJpbmcmIGZvbnRGYWxsYmFja1BhdGgpCiAgICAgaWYgKGZvbnRGYWxsYmFj
a1BhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBTdHJpbmcgZm9udEZhbGxi
YWNrID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGZvbnRG
YWxsYmFja1BhdGgsICJNYWMtY29tcGF0aWJsZS1mb250LWZhbGxiYWNrLmNzcyIpOworICAgIFN0
cmluZyBmb250RmFsbGJhY2sgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
Zm9udEZhbGxiYWNrUGF0aCwgIk1hYy1jb21wYXRpYmxlLWZvbnQtZmFsbGJhY2suY3NzIik7CiAK
ICAgICBpZiAoITo6UGF0aEZpbGVFeGlzdHNXKGZvbnRGYWxsYmFjay5jaGFyYWN0ZXJzV2l0aE51
bGxUZXJtaW5hdGlvbigpLmRhdGEoKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTEwOTQsNyArMTA5
NCw3IEBAIHN0YXRpYyB2b2lkIHJlbW92ZUZvbnRGYWxsYmFja0lmUHJlc2VudChjb25zdCBTdHJp
bmcmIGZvbnRGYWxsYmFja1BhdGgpCiAgICAgaWYgKGZvbnRGYWxsYmFja1BhdGguaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBTdHJpbmcgZm9udEZhbGxiYWNrID0gV2ViQ29yZTo6
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGZvbnRGYWxsYmFja1BhdGgsICJN
YWMtY29tcGF0aWJsZS1mb250LWZhbGxiYWNrLmNzcyIpOworICAgIFN0cmluZyBmb250RmFsbGJh
Y2sgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZm9udEZhbGxiYWNrUGF0
aCwgIk1hYy1jb21wYXRpYmxlLWZvbnQtZmFsbGJhY2suY3NzIik7CiAKICAgICBpZiAoITo6UGF0
aEZpbGVFeGlzdHNXKGZvbnRGYWxsYmFjay5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigp
LmRhdGEoKSkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvQ01ha2VMaXN0cy50eHQgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0Cmlu
ZGV4IGIyNDkwMDg5OGIzZmM1YWY4OWM0OTAzMzgwYzNmZDdjMWRjMGQ3MDUuLjQxMGE0OWZhNDlj
NzUyYzhiZmNiZDZhYWU2MzBhZDJiMzY2ZTAxMjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvQ01ha2VMaXN0cy50eHQKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3Rz
LnR4dApAQCAtMTIyLDYgKzEyMiw3IEBAIHNldChUZXN0V1RGX1NPVVJDRVMKICAgICAke1RFU1RX
RUJLSVRBUElfRElSfS9UZXN0cy9XVEYvRGF0ZU1hdGguY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJ
X0RJUn0vVGVzdHMvV1RGL0RlcXVlLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3Rz
L1dURi9FbnVtVHJhaXRzLmNwcAorICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9G
aWxlU3lzdGVtLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9FeHBlY3Rl
ZC5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvRnVuY3Rpb24uY3BwCiAg
ICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL0hhc2hDb3VudGVkU2V0LmNwcApkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUdUSy5jbWFrZSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggYzM0ZmFlMDdjZjNjNmIwYTM5YzM5
OWZlZTMyY2QyNWMzYTBhYTdmNC4uY2U4MjFlNjFiMDU2NDM1YjJlZWVlNWUwZTU2YmEyMzU3NzI1
ODg1ZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUdUSy5jbWFrZQor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC05Myw3ICs5Myw2
IEBAIGFkZF9leGVjdXRhYmxlKFRlc3RXZWJDb3JlCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0v
VGVzdHMvV2ViQ29yZS9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCiAgICAgJHtURVNUV0VCS0lU
QVBJX0RJUn0vVGVzdHMvV2ViQ29yZS9ETlMuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0v
VGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRvci5jcHAKLSAgICAke1RFU1RXRUJLSVRBUElfRElSfS9U
ZXN0cy9XZWJDb3JlL0ZpbGVTeXN0ZW0uY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVz
dHMvV2ViQ29yZS9nc3RyZWFtZXIvR3N0TWFwcGVkQnVmZmVyLmNwcAogICAgICR7VEVTVFdFQktJ
VEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUvZ3N0cmVhbWVyL0dTdHJlYW1lclRlc3QuY3BwCiAgICAg
JHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV2ViQ29yZS9HcmlkUG9zaXRpb24uY3BwCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtV1BFLmNtYWtlIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9QbGF0Zm9ybVdQRS5jbWFrZQppbmRleCBiNjg3NzU5OGQ4NzdkZTZjOGRhODZi
NGViNTdjYzg2ZmYwYTJmN2VmLi40MjY3ZGEyMGQwNzBjNDdiYzgxZTQ2ZWMyYjdmMmQxM2MwNzk5
ZDc2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtV1BFLmNtYWtlCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1XUEUuY21ha2UKQEAgLTYwLDcgKzYwLDYg
QEAgYWRkX2V4ZWN1dGFibGUoVGVzdFdlYkNvcmUKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9n
bGliL1V0aWxpdGllc0dMaWIuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHNDb250
cm9sbGVyLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUvRmlsZU1v
bml0b3IuY3BwCi0gICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV2ViQ29yZS9GaWxlU3lz
dGVtLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUvZ3N0cmVhbWVy
L0dzdE1hcHBlZEJ1ZmZlci5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJD
b3JlL2dzdHJlYW1lci9HU3RyZWFtZXJUZXN0LmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9
L1Rlc3RzL1dlYkNvcmUvSFRNTFBhcnNlcklkaW9tcy5jcHAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggN2ExMDcyYWNkYWEyYzJhYTUwN2NkYjJmYzI5NzA4MTA4NDVjM2YwYS4uZjY1MjY4ZTVm
ZDNiNDFkMzZiNmZjNDZkNWY3ZWIyZmMxZDFlMmMwOCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTQyNyw3ICs0MjcsNiBAQAogCQk3QzgzRTA0QzFEMEE2NDE4MDBGRUJDRjMgLyogV2ViQ29y
ZU5TVVJMU2Vzc2lvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENEODlEMDM4MUM0RURCMkEwMDA0MEEwNCAvKiBXZWJDb3JlTlNVUkxTZXNzaW9uLm1t
ICovOyB9OwogCQk3QzgzRTA0RDFEMEE2NDE4MDBGRUJDRjMgLyogREZBQ29tYmluZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjYwQkE1NzgxQjFE
MkU3QjAwNEZBMDdDIC8qIERGQUNvbWJpbmVyLmNwcCAqLzsgfTsKIAkJN0M4M0UwNEUxRDBBNjQx
ODAwRkVCQ0YzIC8qIERGQU1pbmltaXplci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyNkY2RTFFRjFBREM3NDlCMDBERTY5NkIgLyogREZBTWluaW1p
emVyLmNwcCAqLzsgfTsKLQkJN0M4M0UwNEYxRDBBNjQxODAwRkVCQ0YzIC8qIEZpbGVTeXN0ZW0u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5NzNC
NUExQUYyMjg2QTAwNkM3QjM2IC8qIEZpbGVTeXN0ZW0uY3BwICovOyB9OwogCQk3QzgzRTA1MDFE
MEE2NDE4MDBGRUJDRjMgLyogSFRNTFBhcnNlcklkaW9tcy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0I4OEEzMzFDODAwNTZEMDBCQjI0MTggLyog
SFRNTFBhcnNlcklkaW9tcy5jcHAgKi87IH07CiAJCTdDODNFMDUxMUQwQTY0MTgwMEZFQkNGMyAv
KiBQYXJzZWRDb250ZW50UmFuZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0QyMjVDMDcxQzQ1QTY5MjAwMTQwNzYxIC8qIFBhcnNlZENvbnRlbnRS
YW5nZS5jcHAgKi87IH07CiAJCTdDODNFMDUyMUQwQTY0MTgwMEZFQkNGMyAvKiBTaGFyZWRCdWZm
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5
NzNCNUMxQUYyMjg3NTAwNkM3QjM2IC8qIFNoYXJlZEJ1ZmZlci5jcHAgKi87IH07CkBAIC02ODks
NiArNjg4LDcgQEAKIAkJQTFDNEZCNzMxQkFDRDFDQTAwMzc0MkQwIC8qIHBhZ2VzLnBhZ2VzIGlu
IENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQzRG
QjcyMUJBQ0QxQjcwMDM3NDJEMCAvKiBwYWdlcy5wYWdlcyAqLzsgfTsKIAkJQTFERjc0MzIxQzQx
QjY1ODAwQTJGNEQwIC8qIEFsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lcy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExREY3NDMwMUM0MUI2NTgwMEEy
RjREMCAvKiBBbHdheXNSZXZhbGlkYXRlZFVSTFNjaGVtZXMubW0gKi87IH07CiAJCUExRUMxMTg4
MUY0MjU0MTIwMEQwMTQ2RSAvKiBQcmV2aWV3TG9hZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRUMxMTg3MUY0MjU0MTIwMEQwMTQ2RSAvKiBQ
cmV2aWV3TG9hZGVyLmNwcCAqLzsgfTsKKwkJQTMxMDgyNzIyMUYyOTZGRjAwQzI4Qjk3IC8qIEZp
bGVTeXN0ZW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTMxMDgyNzEyMUYyOTZFQzAwQzI4Qjk3IC8qIEZpbGVTeXN0ZW0uY3BwICovOyB9OwogCQlB
NTdBMzRGMjE2QUY2QjJCMDBDMjUwMUYgLyogUGFnZVZpc2liaWxpdHlTdGF0ZVdpdGhXaW5kb3dD
aGFuZ2VzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTU3QTM0RjExNkFGNjlFMjAwQzI1MDFGIC8qIFBhZ2VWaXNpYmlsaXR5U3RhdGVX
aXRoV2luZG93Q2hhbmdlcy5odG1sICovOyB9OwogCQlBNTdENTRGMzFGMzM4QzM2MDBBOTdBQTcg
LyogTmV2ZXJEZXN0cm95ZWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTU3RDU0RjIxRjMzOEMzNjAwQTk3QUE3IC8qIE5ldmVyRGVzdHJveWVkLmNw
cCAqLzsgfTsKIAkJQTU3RDU0RjYxRjMzOTVEMDAwQTk3QUE3IC8qIExvZ2dlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTdENTRGNDFGMzM5NUQw
MDBBOTdBQTcgLyogTG9nZ2VyLmNwcCAqLzsgfTsKQEAgLTE1MjAsNyArMTUyMCw2IEBACiAJCTQx
MzVGQjgzMjAxMUZBQTMwMDMzMjEzOSAvKiBJbmplY3RJbnRlcm5hbHNfQnVuZGxlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEluamVjdEludGVybmFsc19CdW5kbGUu
Y3BwOyBwYXRoID0gVGVzdHMvSW5qZWN0SW50ZXJuYWxzX0J1bmRsZS5jcHA7IHNvdXJjZVRyZWUg
PSBTT1VSQ0VfUk9PVDsgfTsKIAkJNDEzNUZCODYyMDExRkFCRjAwMzMyMTM5IC8qIGxpYldlYkNv
cmVUZXN0U3VwcG9ydC5keWxpYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNp
dEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5keWxpYiI7IHBhdGggPSBsaWJXZWJDb3JlVGVz
dFN1cHBvcnQuZHlsaWI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTQx
ODgyRjAyMjEwMTBBNzAwMDJGRjI4OCAvKiBQcm9jZXNzUHJlV2FybWluZy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFByb2Nlc3NQcmVXYXJtaW5nLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MTk3M0I1QTFBRjIyODZBMDA2QzdCMzYgLyogRmls
ZVN5c3RlbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxlU3lz
dGVtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE5NzNCNUMxQUYyMjg3NTAw
NkM3QjM2IC8qIFNoYXJlZEJ1ZmZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBTaGFyZWRCdWZmZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NDJCQkY2ODFDOTFDQUQ5MDAxNzA4N0YgLyogUmVmTG9nZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlZkxvZ2dlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ0MzNBMzk1MjA4MDQ0MTMwMDkxRUQ1NyAvKiBTeW5jaHJvbm91c1RpbWVvdXRU
ZXN0cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFN5bmNocm9u
b3VzVGltZW91dFRlc3RzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTkxNyw2
ICsxOTE2LDcgQEAKIAkJQTFERjc0MzAxQzQxQjY1ODAwQTJGNEQwIC8qIEFsd2F5c1JldmFsaWRh
dGVkVVJMU2NoZW1lcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IEFsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTFFQzExODcxRjQyNTQxMjAwRDAxNDZFIC8qIFByZXZpZXdMb2FkZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUHJldmlld0xvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUExRkRGRDJFMTlDMjg4QkIwMDUxNDhBNCAvKiBXS0ltYWdlQ3JlYXRlQ0dJbWFnZUNy
YXNoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLSW1hZ2VDcmVh
dGVDR0ltYWdlQ3Jhc2guY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMzEwODI3
MTIxRjI5NkVDMDBDMjhCOTcgLyogRmlsZVN5c3RlbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBGaWxlU3lzdGVtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTU3QTM0RUYxNkFGNjc3MjAwQzI1MDFGIC8qIFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRo
V2luZG93Q2hhbmdlcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlcy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTU3QTM0RjExNkFGNjlFMjAwQzI1MDFGIC8qIFBhZ2VWaXNpYmlsaXR5
U3RhdGVXaXRoV2luZG93Q2hhbmdlcy5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0g
UGFnZVZpc2liaWxpdHlTdGF0ZVdpdGhXaW5kb3dDaGFuZ2VzLmh0bWw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUE1N0Q1NEYyMUYzMzhDMzYwMEE5N0FBNyAvKiBOZXZlckRlc3Ryb3ll
ZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXZlckRlc3Ryb3llZC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0yNjc3LDcgKzI2NzcsNiBAQAogCQkJCTU3OTY1MUU2MjE2QkZE
NTMwMDZFQkZFNSAvKiBGaWRvSGlkTWVzc2FnZVRlc3QuY3BwICovLAogCQkJCTU3MkI0MDM1MjE3
NkEwMjkwMDBBRDQzRSAvKiBGaWRvVGVzdERhdGEuaCAqLywKIAkJCQk3QTMyRDc0OTFGMDIxNTE1
MDAxNjJDNDQgLyogRmlsZU1vbml0b3IuY3BwICovLAotCQkJCTQxOTczQjVBMUFGMjI4NkEwMDZD
N0IzNiAvKiBGaWxlU3lzdGVtLmNwcCAqLywKIAkJCQk3QTkwOUE3MDFEODc3NDc1MDA3RTEwRjgg
LyogRmxvYXRQb2ludC5jcHAgKi8sCiAJCQkJN0E5MDlBNzExRDg3NzQ3NTAwN0UxMEY4IC8qIEZs
b2F0UmVjdC5jcHAgKi8sCiAJCQkJN0E5MDlBNzIxRDg3NzQ3NTAwN0UxMEY4IC8qIEZsb2F0U2l6
ZS5jcHAgKi8sCkBAIC0zMTg3LDYgKzMxODYsNyBAQAogCQkJCUU0QTc1N0QzMTc4QUVBNUIwMEI1
RDdBNCAvKiBEZXF1ZS5jcHAgKi8sCiAJCQkJMUFGN0IyMUQxRDZDRDEyRTAwOEMxMjZDIC8qIEVu
dW1UcmFpdHMuY3BwICovLAogCQkJCUFEN0M0MzRDMUREMkE1NDcwMDI2ODg4QiAvKiBFeHBlY3Rl
ZC5jcHAgKi8sCisJCQkJQTMxMDgyNzEyMUYyOTZFQzAwQzI4Qjk3IC8qIEZpbGVTeXN0ZW0uY3Bw
ICovLAogCQkJCTkzMTBDRDM2MUVGNzA4RkIwMDUwRkZFMCAvKiBGdW5jdGlvbi5jcHAgKi8sCiAJ
CQkJODNEQjc5NjcxRUY2M0IzQzAwQkZBNUU1IC8qIEZ1bmN0aW9uLmNwcCAqLywKIAkJCQk3QTM4
RDdFNTFDNzUyRDVGMDA0RjE1N0QgLyogSGFzaENvdW50ZWRTZXQuY3BwICovLApAQCAtMzc5NSw2
ICszNzk1LDcgQEAKIAkJCQk3QzgzREVBRDFEMEE1OTBDMDBGRUJDRjMgLyogRGVxdWUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMUFGN0IyMUYxRDZDRDE0RDAwOEMxMjZDIC8qIEVudW1UcmFpdHMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQUQ3QzQzNEQxREQyQTU0RTAwMjY4ODhCIC8qIEV4cGVj
dGVkLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUEzMTA4MjcyMjFGMjk2RkYwMEMyOEI5NyAvKiBG
aWxlU3lzdGVtLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzMTBDRDM4MUVGNzA4RkIwMDUwRkZF
MCAvKiBGdW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2QkZEMjk0QzFENUU2QzFEMDA4
RUM5NjggLyogSGFzaENvdW50ZWRTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzRDYzMUQx
RkNCNzYyMDAwMzJFQ0Q2IC8qIEhhc2hlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTM5OTgsNyAr
Mzk5OSw2IEBACiAJCQkJN0NDRTdFRjExQTQxMUFFNjAwNDQ3QzRDIC8qIEZhaWxlZExvYWQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTc5NjUxRTcyMTZCRkRFRDAwNkVCRkU1IC8qIEZpZG9IaWRN
ZXNzYWdlVGVzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QTMyRDc0QTFGMDIxNTE1MDAxNjJD
NDQgLyogRmlsZU1vbml0b3IuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJN0M4M0UwNEYxRDBBNjQx
ODAwRkVCQ0YzIC8qIEZpbGVTeXN0ZW0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFRjMx
QTQxMUFFNjAwNDQ3QzRDIC8qIEZpbmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0UwQkIx
RDBBNjUwMDAwRkVCQ0YzIC8qIEZpbmRJblBhZ2UubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NF
N0VGNDFBNDExQUU2MDA0NDdDNEMgLyogRmluZE1hdGNoZXMubW0gaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZThiMjUzMWM3YTZmNDNmZTg2ZTczZjAwMWU0OGJhZWZiODI2ODc2YQotLS0gL2Rldi9udWxsCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCkBAIC0wLDAg
KzEsMTUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIlRl
c3QuaCIKKyNpbmNsdWRlIDx3dGYvRmlsZU1ldGFkYXRhLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVT
eXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9TdHJp
bmdFeHRyYXMuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdURjsKKworbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEkgeworCitjb25zdCBjaGFyKiBGaWxlU3lzdGVtVGVzdERhdGEgPSAiVGhpcyBpcyBhIHRl
c3QiOworCisvLyBGSVhNRTogUmVmYWN0b3IgRmlsZVN5c3RlbVRlc3QgYW5kIFNoYXJlZEJ1ZmZl
clRlc3QgYXMgYSBzaW5nbGUgY2xhc3MuCitjbGFzcyBGaWxlU3lzdGVtVGVzdCA6IHB1YmxpYyB0
ZXN0aW5nOjpUZXN0IHsKK3B1YmxpYzoKKyAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKKyAgICB7
CisgICAgICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKKyAgICAgICAgCisgICAgICAg
IC8vIGNyZWF0ZSB0ZW1wIGZpbGUKKyAgICAgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFu
ZGxlIGhhbmRsZTsKKyAgICAgICAgbV90ZW1wRmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVt
cG9yYXJ5RmlsZSgidGVtcFRlc3RGaWxlIiwgaGFuZGxlKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6
d3JpdGVUb0ZpbGUoaGFuZGxlLCBGaWxlU3lzdGVtVGVzdERhdGEsIHN0cmxlbihGaWxlU3lzdGVt
VGVzdERhdGEpKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CisKKyAg
ICAgICAgbV90ZW1wRmlsZVN5bWxpbmtQYXRoID0gbV90ZW1wRmlsZVBhdGggKyAiLXN5bWxpbmsi
OworICAgICAgICBGaWxlU3lzdGVtOjpjcmVhdGVTeW1ib2xpY0xpbmsobV90ZW1wRmlsZVBhdGgs
IG1fdGVtcEZpbGVTeW1saW5rUGF0aCk7CisKKyAgICAgICAgbV90ZW1wRW1wdHlGaWxlUGF0aCA9
IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wRW1wdHlUZXN0RmlsZSIsIGhhbmRs
ZSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUpOworCisgICAgICAgIG1f
c3BhY2VDb250YWluaW5nRmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgi
dGVtcCBFbXB0eSBUZXN0IEZpbGUiLCBoYW5kbGUpOworICAgICAgICBGaWxlU3lzdGVtOjpjbG9z
ZUZpbGUoaGFuZGxlKTsKKworICAgICAgICBtX2JhbmdDb250YWluaW5nRmlsZVBhdGggPSBGaWxl
U3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcCFFbXB0eSFUZXN0IUZpbGUiLCBoYW5kbGUp
OworICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKKworICAgICAgICBtX3F1
b3RlQ29udGFpbmluZ0ZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoInRl
bXBcIkVtcHR5XCJUZXN0RmlsZSIsIGhhbmRsZSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmNsb3Nl
RmlsZShoYW5kbGUpOworICAgIH0KKworICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZQorICAg
IHsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX3RlbXBGaWxlUGF0aCk7CisgICAg
ICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV90ZW1wRmlsZVN5bWxpbmtQYXRoKTsKKyAgICAg
ICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX3RlbXBFbXB0eUZpbGVQYXRoKTsKKyAgICAgICAg
RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX3NwYWNlQ29udGFpbmluZ0ZpbGVQYXRoKTsKKyAgICAg
ICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX2JhbmdDb250YWluaW5nRmlsZVBhdGgpOworICAg
ICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fcXVvdGVDb250YWluaW5nRmlsZVBhdGgpOwor
ICAgIH0KKworICAgIGNvbnN0IFN0cmluZyYgdGVtcEZpbGVQYXRoKCkgeyByZXR1cm4gbV90ZW1w
RmlsZVBhdGg7IH0KKyAgICBjb25zdCBTdHJpbmcmIHRlbXBGaWxlU3ltbGlua1BhdGgoKSB7IHJl
dHVybiBtX3RlbXBGaWxlU3ltbGlua1BhdGg7IH0KKyAgICBjb25zdCBTdHJpbmcmIHRlbXBFbXB0
eUZpbGVQYXRoKCkgeyByZXR1cm4gbV90ZW1wRW1wdHlGaWxlUGF0aDsgfQorICAgIGNvbnN0IFN0
cmluZyYgc3BhY2VDb250YWluaW5nRmlsZVBhdGgoKSB7IHJldHVybiBtX3NwYWNlQ29udGFpbmlu
Z0ZpbGVQYXRoOyB9CisgICAgY29uc3QgU3RyaW5nJiBiYW5nQ29udGFpbmluZ0ZpbGVQYXRoKCkg
eyByZXR1cm4gbV9iYW5nQ29udGFpbmluZ0ZpbGVQYXRoOyB9CisgICAgY29uc3QgU3RyaW5nJiBx
dW90ZUNvbnRhaW5pbmdGaWxlUGF0aCgpIHsgcmV0dXJuIG1fcXVvdGVDb250YWluaW5nRmlsZVBh
dGg7IH0KKworcHJpdmF0ZToKKyAgICBTdHJpbmcgbV90ZW1wRmlsZVBhdGg7CisgICAgU3RyaW5n
IG1fdGVtcEZpbGVTeW1saW5rUGF0aDsKKyAgICBTdHJpbmcgbV90ZW1wRW1wdHlGaWxlUGF0aDsK
KyAgICBTdHJpbmcgbV9zcGFjZUNvbnRhaW5pbmdGaWxlUGF0aDsKKyAgICBTdHJpbmcgbV9iYW5n
Q29udGFpbmluZ0ZpbGVQYXRoOworICAgIFN0cmluZyBtX3F1b3RlQ29udGFpbmluZ0ZpbGVQYXRo
OworfTsKKworVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBNYXBwaW5nTWlzc2luZ0ZpbGUpCit7Cisg
ICAgYm9vbCBzdWNjZXNzOworICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZp
bGVEYXRhKFN0cmluZygibm90X2V4aXN0aW5nX2ZpbGUiKSwgc3VjY2Vzcyk7CisgICAgRVhQRUNU
X0ZBTFNFKHN1Y2Nlc3MpOworICAgIEVYUEVDVF9UUlVFKCFtYXBwZWRGaWxlRGF0YSk7Cit9CisK
K1RFU1RfRihGaWxlU3lzdGVtVGVzdCwgTWFwcGluZ0V4aXN0aW5nRmlsZSkKK3sKKyAgICBib29s
IHN1Y2Nlc3M7CisgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZURhdGEo
dGVtcEZpbGVQYXRoKCksIHN1Y2Nlc3MpOworICAgIEVYUEVDVF9UUlVFKHN1Y2Nlc3MpOworICAg
IEVYUEVDVF9UUlVFKCEhbWFwcGVkRmlsZURhdGEpOworICAgIEVYUEVDVF9UUlVFKG1hcHBlZEZp
bGVEYXRhLnNpemUoKSA9PSBzdHJsZW4oRmlsZVN5c3RlbVRlc3REYXRhKSk7CisgICAgRVhQRUNU
X1RSVUUoc3RybnN0cihGaWxlU3lzdGVtVGVzdERhdGEsIHN0YXRpY19jYXN0PGNvbnN0IGNoYXIq
PihtYXBwZWRGaWxlRGF0YS5kYXRhKCkpLCBtYXBwZWRGaWxlRGF0YS5zaXplKCkpKTsKK30KKwor
VEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBNYXBwaW5nRXhpc3RpbmdFbXB0eUZpbGUpCit7CisgICAg
Ym9vbCBzdWNjZXNzOworICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVE
YXRhKHRlbXBFbXB0eUZpbGVQYXRoKCksIHN1Y2Nlc3MpOworICAgIEVYUEVDVF9UUlVFKHN1Y2Nl
c3MpOworICAgIEVYUEVDVF9UUlVFKCFtYXBwZWRGaWxlRGF0YSk7Cit9CisKK1RFU1RfRihGaWxl
U3lzdGVtVGVzdCwgRmlsZXNIYXZlU2FtZVZvbHVtZSkKK3sKKyAgICBFWFBFQ1RfVFJVRShGaWxl
U3lzdGVtOjpmaWxlc0hhdmVTYW1lVm9sdW1lKHRlbXBGaWxlUGF0aCgpLCBzcGFjZUNvbnRhaW5p
bmdGaWxlUGF0aCgpKSk7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZXNIYXZlU2Ft
ZVZvbHVtZShzcGFjZUNvbnRhaW5pbmdGaWxlUGF0aCgpLCBiYW5nQ29udGFpbmluZ0ZpbGVQYXRo
KCkpKTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpmaWxlc0hhdmVTYW1lVm9sdW1lKGJh
bmdDb250YWluaW5nRmlsZVBhdGgoKSwgcXVvdGVDb250YWluaW5nRmlsZVBhdGgoKSkpOworfQor
CitURVNUX0YoRmlsZVN5c3RlbVRlc3QsIEdldEZpbGVNZXRhZGF0YVN5bWxpbmspCit7CisgICAg
YXV0byBzeW1saW5rTWV0YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGEodGVtcEZpbGVT
eW1saW5rUGF0aCgpKTsKKyAgICBBU1NFUlRfVFJVRShzeW1saW5rTWV0YWRhdGEuaGFzVmFsdWUo
KSk7CisgICAgRVhQRUNUX1RSVUUoc3ltbGlua01ldGFkYXRhLnZhbHVlKCkudHlwZSA9PSBGaWxl
TWV0YWRhdGE6OlR5cGU6OlN5bWJvbGljTGluayk7CisgICAgRVhQRUNUX0ZBTFNFKHN0YXRpY19j
YXN0PHNpemVfdD4oc3ltbGlua01ldGFkYXRhLnZhbHVlKCkubGVuZ3RoKSA9PSBzdHJsZW4oRmls
ZVN5c3RlbVRlc3REYXRhKSk7CisKKyAgICBhdXRvIHRhcmdldE1ldGFkYXRhID0gRmlsZVN5c3Rl
bTo6ZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3ModGVtcEZpbGVTeW1saW5rUGF0aCgpKTsK
KyAgICBBU1NFUlRfVFJVRSh0YXJnZXRNZXRhZGF0YS5oYXNWYWx1ZSgpKTsKKyAgICBFWFBFQ1Rf
VFJVRSh0YXJnZXRNZXRhZGF0YS52YWx1ZSgpLnR5cGUgPT0gRmlsZU1ldGFkYXRhOjpUeXBlOjpG
aWxlKTsKKyAgICBFWFBFQ1RfRVEoc3RybGVuKEZpbGVTeXN0ZW1UZXN0RGF0YSksIHN0YXRpY19j
YXN0PHNpemVfdD4odGFyZ2V0TWV0YWRhdGEudmFsdWUoKS5sZW5ndGgpKTsKK30KKworVEVTVF9G
KEZpbGVTeXN0ZW1UZXN0LCBVbmljb2RlRGlyZWN0b3J5TmFtZSkKK3sKKyAgICBTdHJpbmcgcGF0
aCA9IFN0cmluZzo6ZnJvbVVURjgoIi90ZXN0L2FcdTAzMDhsby90ZXN0LnR4dCIpOworICAgIFN0
cmluZyBkaXJlY3RvcnlOYW1lID0gRmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShwYXRoKTsKKyAg
ICBTdHJpbmcgZXhwZWN0ZWREaXJlY3RvcnlOYW1lID0gU3RyaW5nOjpmcm9tVVRGOCgiL3Rlc3Qv
YVx1MDMwOGxvIik7CisgICAgRVhQRUNUX1RSVUUoZXhwZWN0ZWREaXJlY3RvcnlOYW1lID09IGRp
cmVjdG9yeU5hbWUpOworfQorCit9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvRmlsZU1vbml0b3IuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL0ZpbGVNb25pdG9yLmNwcAppbmRleCA1ZjFkYzhiMmU0ZDUyNGQzNTI2ODA0YmQ2Y2Q5
Y2U5OGEzNzExZmU4Li5lMDAyZGYxZWYwOTRmNWIzZjAwZDE2ZTljNmJlNmQ0OWQ1ZTZhZjI0IDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZU1vbml0b3Iu
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRvci5j
cHAKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJUZXN0LmgiCiAjaW5jbHVkZSAiV1RGU3Ry
aW5nVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlTW9uaXRvci5oPgotI2luY2x1
ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAj
aW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2lu
Y2x1ZGUgPHd0Zi9TY29wZS5oPgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL0ZpbGVTeXN0ZW0uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL0ZpbGVTeXN0ZW0uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NjYyNTAy
NTMwOTcyN2VhNjA1Y2I1MmNmYzllY2Q0YjMzZTc3ODc1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9GaWxlU3lzdGVtLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1MCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2luY2x1ZGUgIlRlc3QuaCIKLSNpbmNsdWRlIDxX
ZWJDb3JlL0ZpbGVNZXRhZGF0YS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgot
I2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Ci0jaW5jbHVkZSA8d3RmL1N0cmluZ0V4dHJhcy5o
PgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkg
ewotCi1jb25zdCBjaGFyKiBGaWxlU3lzdGVtVGVzdERhdGEgPSAiVGhpcyBpcyBhIHRlc3QiOwot
Ci0vLyBGSVhNRTogUmVmYWN0b3IgRmlsZVN5c3RlbVRlc3QgYW5kIFNoYXJlZEJ1ZmZlclRlc3Qg
YXMgYSBzaW5nbGUgY2xhc3MuCi1jbGFzcyBGaWxlU3lzdGVtVGVzdCA6IHB1YmxpYyB0ZXN0aW5n
OjpUZXN0IHsKLXB1YmxpYzoKLSAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAg
ICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKLSAgICAgICAgCi0gICAgICAgIC8vIGNy
ZWF0ZSB0ZW1wIGZpbGUKLSAgICAgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGhh
bmRsZTsKLSAgICAgICAgbV90ZW1wRmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5
RmlsZSgidGVtcFRlc3RGaWxlIiwgaGFuZGxlKTsKLSAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVU
b0ZpbGUoaGFuZGxlLCBGaWxlU3lzdGVtVGVzdERhdGEsIHN0cmxlbihGaWxlU3lzdGVtVGVzdERh
dGEpKTsKLSAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7Ci0KLSAgICAgICAg
bV90ZW1wRmlsZVN5bWxpbmtQYXRoID0gbV90ZW1wRmlsZVBhdGggKyAiLXN5bWxpbmsiOwotICAg
ICAgICBGaWxlU3lzdGVtOjpjcmVhdGVTeW1ib2xpY0xpbmsobV90ZW1wRmlsZVBhdGgsIG1fdGVt
cEZpbGVTeW1saW5rUGF0aCk7Ci0KLSAgICAgICAgbV90ZW1wRW1wdHlGaWxlUGF0aCA9IEZpbGVT
eXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wRW1wdHlUZXN0RmlsZSIsIGhhbmRsZSk7Ci0g
ICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUpOwotCi0gICAgICAgIG1fc3BhY2VD
b250YWluaW5nRmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcCBF
bXB0eSBUZXN0IEZpbGUiLCBoYW5kbGUpOwotICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUo
aGFuZGxlKTsKLQotICAgICAgICBtX2JhbmdDb250YWluaW5nRmlsZVBhdGggPSBGaWxlU3lzdGVt
OjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcCFFbXB0eSFUZXN0IUZpbGUiLCBoYW5kbGUpOwotICAg
ICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKLQotICAgICAgICBtX3F1b3RlQ29u
dGFpbmluZ0ZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoInRlbXBcIkVt
cHR5XCJUZXN0RmlsZSIsIGhhbmRsZSk7Ci0gICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZSho
YW5kbGUpOwotICAgIH0KLQotICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZQotICAgIHsKLSAg
ICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX3RlbXBGaWxlUGF0aCk7Ci0gICAgICAgIEZp
bGVTeXN0ZW06OmRlbGV0ZUZpbGUobV90ZW1wRmlsZVN5bWxpbmtQYXRoKTsKLSAgICAgICAgRmls
ZVN5c3RlbTo6ZGVsZXRlRmlsZShtX3RlbXBFbXB0eUZpbGVQYXRoKTsKLSAgICAgICAgRmlsZVN5
c3RlbTo6ZGVsZXRlRmlsZShtX3NwYWNlQ29udGFpbmluZ0ZpbGVQYXRoKTsKLSAgICAgICAgRmls
ZVN5c3RlbTo6ZGVsZXRlRmlsZShtX2JhbmdDb250YWluaW5nRmlsZVBhdGgpOwotICAgICAgICBG
aWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fcXVvdGVDb250YWluaW5nRmlsZVBhdGgpOwotICAgIH0K
LQotICAgIGNvbnN0IFN0cmluZyYgdGVtcEZpbGVQYXRoKCkgeyByZXR1cm4gbV90ZW1wRmlsZVBh
dGg7IH0KLSAgICBjb25zdCBTdHJpbmcmIHRlbXBGaWxlU3ltbGlua1BhdGgoKSB7IHJldHVybiBt
X3RlbXBGaWxlU3ltbGlua1BhdGg7IH0KLSAgICBjb25zdCBTdHJpbmcmIHRlbXBFbXB0eUZpbGVQ
YXRoKCkgeyByZXR1cm4gbV90ZW1wRW1wdHlGaWxlUGF0aDsgfQotICAgIGNvbnN0IFN0cmluZyYg
c3BhY2VDb250YWluaW5nRmlsZVBhdGgoKSB7IHJldHVybiBtX3NwYWNlQ29udGFpbmluZ0ZpbGVQ
YXRoOyB9Ci0gICAgY29uc3QgU3RyaW5nJiBiYW5nQ29udGFpbmluZ0ZpbGVQYXRoKCkgeyByZXR1
cm4gbV9iYW5nQ29udGFpbmluZ0ZpbGVQYXRoOyB9Ci0gICAgY29uc3QgU3RyaW5nJiBxdW90ZUNv
bnRhaW5pbmdGaWxlUGF0aCgpIHsgcmV0dXJuIG1fcXVvdGVDb250YWluaW5nRmlsZVBhdGg7IH0K
LQotcHJpdmF0ZToKLSAgICBTdHJpbmcgbV90ZW1wRmlsZVBhdGg7Ci0gICAgU3RyaW5nIG1fdGVt
cEZpbGVTeW1saW5rUGF0aDsKLSAgICBTdHJpbmcgbV90ZW1wRW1wdHlGaWxlUGF0aDsKLSAgICBT
dHJpbmcgbV9zcGFjZUNvbnRhaW5pbmdGaWxlUGF0aDsKLSAgICBTdHJpbmcgbV9iYW5nQ29udGFp
bmluZ0ZpbGVQYXRoOwotICAgIFN0cmluZyBtX3F1b3RlQ29udGFpbmluZ0ZpbGVQYXRoOwotfTsK
LQotVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBNYXBwaW5nTWlzc2luZ0ZpbGUpCi17Ci0gICAgYm9v
bCBzdWNjZXNzOwotICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRh
KFN0cmluZygibm90X2V4aXN0aW5nX2ZpbGUiKSwgc3VjY2Vzcyk7Ci0gICAgRVhQRUNUX0ZBTFNF
KHN1Y2Nlc3MpOwotICAgIEVYUEVDVF9UUlVFKCFtYXBwZWRGaWxlRGF0YSk7Ci19Ci0KLVRFU1Rf
RihGaWxlU3lzdGVtVGVzdCwgTWFwcGluZ0V4aXN0aW5nRmlsZSkKLXsKLSAgICBib29sIHN1Y2Nl
c3M7Ci0gICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZURhdGEodGVtcEZp
bGVQYXRoKCksIHN1Y2Nlc3MpOwotICAgIEVYUEVDVF9UUlVFKHN1Y2Nlc3MpOwotICAgIEVYUEVD
VF9UUlVFKCEhbWFwcGVkRmlsZURhdGEpOwotICAgIEVYUEVDVF9UUlVFKG1hcHBlZEZpbGVEYXRh
LnNpemUoKSA9PSBzdHJsZW4oRmlsZVN5c3RlbVRlc3REYXRhKSk7Ci0gICAgRVhQRUNUX1RSVUUo
c3RybnN0cihGaWxlU3lzdGVtVGVzdERhdGEsIHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihtYXBw
ZWRGaWxlRGF0YS5kYXRhKCkpLCBtYXBwZWRGaWxlRGF0YS5zaXplKCkpKTsKLX0KLQotVEVTVF9G
KEZpbGVTeXN0ZW1UZXN0LCBNYXBwaW5nRXhpc3RpbmdFbXB0eUZpbGUpCi17Ci0gICAgYm9vbCBz
dWNjZXNzOwotICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKHRl
bXBFbXB0eUZpbGVQYXRoKCksIHN1Y2Nlc3MpOwotICAgIEVYUEVDVF9UUlVFKHN1Y2Nlc3MpOwot
ICAgIEVYUEVDVF9UUlVFKCFtYXBwZWRGaWxlRGF0YSk7Ci19Ci0KLVRFU1RfRihGaWxlU3lzdGVt
VGVzdCwgRmlsZXNIYXZlU2FtZVZvbHVtZSkKLXsKLSAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVt
OjpmaWxlc0hhdmVTYW1lVm9sdW1lKHRlbXBGaWxlUGF0aCgpLCBzcGFjZUNvbnRhaW5pbmdGaWxl
UGF0aCgpKSk7Ci0gICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZXNIYXZlU2FtZVZvbHVt
ZShzcGFjZUNvbnRhaW5pbmdGaWxlUGF0aCgpLCBiYW5nQ29udGFpbmluZ0ZpbGVQYXRoKCkpKTsK
LSAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpmaWxlc0hhdmVTYW1lVm9sdW1lKGJhbmdDb250
YWluaW5nRmlsZVBhdGgoKSwgcXVvdGVDb250YWluaW5nRmlsZVBhdGgoKSkpOwotfQotCi1URVNU
X0YoRmlsZVN5c3RlbVRlc3QsIEdldEZpbGVNZXRhZGF0YVN5bWxpbmspCi17Ci0gICAgYXV0byBz
eW1saW5rTWV0YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGEodGVtcEZpbGVTeW1saW5r
UGF0aCgpKTsKLSAgICBBU1NFUlRfVFJVRShzeW1saW5rTWV0YWRhdGEuaGFzVmFsdWUoKSk7Ci0g
ICAgRVhQRUNUX1RSVUUoc3ltbGlua01ldGFkYXRhLnZhbHVlKCkudHlwZSA9PSBGaWxlTWV0YWRh
dGE6OlR5cGU6OlN5bWJvbGljTGluayk7Ci0gICAgRVhQRUNUX0ZBTFNFKHN0YXRpY19jYXN0PHNp
emVfdD4oc3ltbGlua01ldGFkYXRhLnZhbHVlKCkubGVuZ3RoKSA9PSBzdHJsZW4oRmlsZVN5c3Rl
bVRlc3REYXRhKSk7Ci0KLSAgICBhdXRvIHRhcmdldE1ldGFkYXRhID0gRmlsZVN5c3RlbTo6Zmls
ZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3ModGVtcEZpbGVTeW1saW5rUGF0aCgpKTsKLSAgICBB
U1NFUlRfVFJVRSh0YXJnZXRNZXRhZGF0YS5oYXNWYWx1ZSgpKTsKLSAgICBFWFBFQ1RfVFJVRSh0
YXJnZXRNZXRhZGF0YS52YWx1ZSgpLnR5cGUgPT0gRmlsZU1ldGFkYXRhOjpUeXBlOjpGaWxlKTsK
LSAgICBFWFBFQ1RfRVEoc3RybGVuKEZpbGVTeXN0ZW1UZXN0RGF0YSksIHN0YXRpY19jYXN0PHNp
emVfdD4odGFyZ2V0TWV0YWRhdGEudmFsdWUoKS5sZW5ndGgpKTsKLX0KLQotVEVTVF9GKEZpbGVT
eXN0ZW1UZXN0LCBVbmljb2RlRGlyZWN0b3J5TmFtZSkKLXsKLSAgICBTdHJpbmcgcGF0aCA9IFN0
cmluZzo6ZnJvbVVURjgoIi90ZXN0L2FcdTAzMDhsby90ZXN0LnR4dCIpOwotICAgIFN0cmluZyBk
aXJlY3RvcnlOYW1lID0gRmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShwYXRoKTsKLSAgICBTdHJp
bmcgZXhwZWN0ZWREaXJlY3RvcnlOYW1lID0gU3RyaW5nOjpmcm9tVVRGOCgiL3Rlc3QvYVx1MDMw
OGxvIik7Ci0gICAgRVhQRUNUX1RSVUUoZXhwZWN0ZWREaXJlY3RvcnlOYW1lID09IGRpcmVjdG9y
eU5hbWUpOwotfQotCi19CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvU2VjdXJpdHlPcmlnaW4uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL1NlY3VyaXR5T3JpZ2luLmNwcAppbmRleCBkYTVmNGZmNTg5OGE5ZjA5YzhiODM5NWE1NWRl
NzM4ZjE2OGM5MDlmLi5hNDFhYjRiY2EzNzFkNDVkZThjYjQ1ODY4NWJjOTc0ZTMwZjQwNmYzIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2VjdXJpdHlPcmln
aW4uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TZWN1cml0eU9y
aWdpbi5jcHAKQEAgLTI2LDggKzI2LDggQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIldURlN0cmluZ1V0aWxpdGllcy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KKyNpbmNsdWRlIDx3dGYvRmls
ZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1VS
TC5oPgogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hh
cmVkQnVmZmVyVGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hh
cmVkQnVmZmVyVGVzdC5jcHAKaW5kZXggOGZlMzU2N2MxZTExMzY5MWQ4NWI3YzU1YTFmOTY2NTlk
ZTlkMWYyNC4uOWI4YjEzYTc1ZDUyZmY5NTFlYWQxODE4NWQ1NmMzNzkxYjJkN2JlZCAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3Qu
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJU
ZXN0LmNwcApAQCAtMjYsMTEgKzI2LDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJTaGFyZWRCdWZmZXJUZXN0LmgiCiAKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4K
KyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+
CiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7
CiAKIHZvaWQgU2hhcmVkQnVmZmVyVGVzdDo6U2V0VXAoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL0RhdGFiYXNlVHJhY2tlclRlc3QubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvRGF0YWJhc2VUcmFja2VyVGVz
dC5tbQppbmRleCA2YTNjNzAyODBhNGVkZTAwOTEwMmVlOTk3NmIzNjdjMjZhYjdmZWU3Li4yMjE3
MTU2ZjZlNTY5MTVhNzVkNDQ4ODRlYWQ1MTcxOWE3YzUyOTExIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvRGF0YWJhc2VUcmFja2VyVGVzdC5tbQor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvRGF0YWJhc2VUcmFj
a2VyVGVzdC5tbQpAQCAtMjYsMTEgKzI2LDExIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNp
bmNsdWRlIDxXZWJDb3JlL0RhdGFiYXNlVHJhY2tlci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmls
ZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvT3JpZ2luTG9jay5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvU1FMaXRlRGF0YWJhc2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZVN0YXRlbWVu
dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+CisjaW5jbHVkZSA8
d3RmL0ZpbGVTeXN0ZW0uaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jdXJsL0Nvb2tpZXMuY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2N1cmwvQ29va2llcy5jcHAKaW5kZXgg
MWI4ZDdmYzNjZGU1MDI5OWUzMGFkNmM2ZDhjYTE2MjdmMjM5MGMxZi4uYjQwYjBkNWEwYTVlNWZi
NWY0OTE5YTNkYTJjMmZlZDZmY2JjMWM0ZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL2N1cmwvQ29va2llcy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL2N1cmwvQ29va2llcy5jcHAKQEAgLTI5LDggKzI5LDggQEAKIAogI2lu
Y2x1ZGUgPFdlYkNvcmUvQ29va2llSmFyREIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZVV0
aWwuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxtZW1vcnk+
CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93
bmxvYWQubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2Fk
Lm1tCmluZGV4IDYwY2M5M2IzNDBkZDY4MDk0MWM0MWEyYTVhYTBiYTkyM2I1YWVjNjQuLjY4MWIw
MmNhOWM4N2RhZWMzNzI2MjI0NjE3ZDFjNTkyMDg4ZDdhNmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0KKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbQpAQCAtMzMsNyArMzMsNiBA
QAogI2ltcG9ydCAiVGVzdC5oIgogI2ltcG9ydCAiVGVzdFByb3RvY29sLmgiCiAjaW1wb3J0ICJU
ZXN0V0tXZWJWaWV3LmgiCi0jaW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQg
PFdlYktpdC9fV0tEb3dubG9hZC5oPgogI2ltcG9ydCA8V2ViS2l0L19XS0Rvd25sb2FkRGVsZWdh
dGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaD4KQEAg
LTQxLDYgKzQwLDcgQEAKICNpbXBvcnQgPFdlYktpdC9XS1VJRGVsZWdhdGVQcml2YXRlLmg+CiAj
aW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbi5oPgorI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0Zi9N
YWluVGhyZWFkLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KQEAgLTk0LDEwICs5NCwxMCBAQCBJR05PUkVfV0FSTklOR1NfRU5ECiAg
ICAgRVhQRUNUX1RSVUUoaGFzUmVjZWl2ZWRSZXNwb25zZSk7CiAgICAgRVhQRUNUX0VRKF9kb3du
bG9hZCwgZG93bmxvYWQpOwogCi0gICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxl
SGFuZGxlIGZpbGVIYW5kbGU7Ci0gICAgX2Rlc3RpbmF0aW9uUGF0aCA9IFdlYkNvcmU6OkZpbGVT
eXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJUZXN0V2ViS2l0QVBJIiwgZmlsZUhhbmRsZSk7Ci0g
ICAgRVhQRUNUX1RSVUUoZmlsZUhhbmRsZSAhPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjppbnZhbGlk
UGxhdGZvcm1GaWxlSGFuZGxlKTsKLSAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpjbG9zZUZpbGUo
ZmlsZUhhbmRsZSk7CisgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGVIYW5k
bGU7CisgICAgX2Rlc3RpbmF0aW9uUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxl
KCJUZXN0V2ViS2l0QVBJIiwgZmlsZUhhbmRsZSk7CisgICAgRVhQRUNUX1RSVUUoZmlsZUhhbmRs
ZSAhPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKTsKKyAgICBGaWxlU3lz
dGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CiAKICAgICAqYWxsb3dPdmVyd3JpdGUgPSBZRVM7
CiAgICAgcmV0dXJuIF9kZXN0aW5hdGlvblBhdGg7CkBAIC0xMDksNyArMTA5LDcgQEAgLSAodm9p
ZClfZG93bmxvYWREaWRGaW5pc2g6KF9XS0Rvd25sb2FkICopZG93bmxvYWQKICAgICBFWFBFQ1Rf
RVEoZXhwZWN0ZWRVc2VySW5pdGlhdGVkU3RhdGUsIGRvd25sb2FkLndhc1VzZXJJbml0aWF0ZWQp
OwogICAgIEVYUEVDVF9UUlVFKF9leHBlY3RlZENvbnRlbnRMZW5ndGggPT0gTlNVUkxSZXNwb25z
ZVVua25vd25MZW5ndGggfHwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KF9leHBlY3RlZENvbnRlbnRM
ZW5ndGgpID09IF9yZWNlaXZlZENvbnRlbnRMZW5ndGgpOwogICAgIEVYUEVDVF9UUlVFKFtbTlNG
aWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY29udGVudHNFcXVhbEF0UGF0aDpfZGVzdGluYXRp
b25QYXRoIGFuZFBhdGg6W3NvdXJjZVVSTCBwYXRoXV0pOwotICAgIFdlYkNvcmU6OkZpbGVTeXN0
ZW06OmRlbGV0ZUZpbGUoX2Rlc3RpbmF0aW9uUGF0aCk7CisgICAgRmlsZVN5c3RlbTo6ZGVsZXRl
RmlsZShfZGVzdGluYXRpb25QYXRoKTsKICAgICBpc0RvbmUgPSB0cnVlOwogfQogCkBAIC0zOTcs
MTAgKzM5NywxMCBAQCBJR05PUkVfV0FSTklOR1NfRU5ECiAgICAgRVhQRUNUX1RSVUUoaGFzUmVj
ZWl2ZWRSZXNwb25zZSk7CiAgICAgRVhQRUNUX0VRKF9kb3dubG9hZCwgZG93bmxvYWQpOwogCi0g
ICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGVIYW5kbGU7Ci0g
ICAgX2Rlc3RpbmF0aW9uUGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlG
aWxlKCJUZXN0V2ViS2l0QVBJIiwgZmlsZUhhbmRsZSk7Ci0gICAgRVhQRUNUX1RSVUUoZmlsZUhh
bmRsZSAhPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKTsK
LSAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CisgICAgRmls
ZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGVIYW5kbGU7CisgICAgX2Rlc3RpbmF0aW9u
UGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJUZXN0V2ViS2l0QVBJIiwgZmls
ZUhhbmRsZSk7CisgICAgRVhQRUNUX1RSVUUoZmlsZUhhbmRsZSAhPSBGaWxlU3lzdGVtOjppbnZh
bGlkUGxhdGZvcm1GaWxlSGFuZGxlKTsKKyAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhh
bmRsZSk7CiAKICAgICAqYWxsb3dPdmVyd3JpdGUgPSBZRVM7CiAgICAgcmV0dXJuIF9kZXN0aW5h
dGlvblBhdGg7CkBAIC00MTQsNyArNDE0LDcgQEAgLSAodm9pZClfZG93bmxvYWREaWRGaW5pc2g6
KF9XS0Rvd25sb2FkICopZG93bmxvYWQKICAgICBOU1N0cmluZyogZXhwZWN0ZWRDb250ZW50ID0g
QCJ7XCJ4XCI6NDIsXCJzXCI6XCJoZWxsbywgd29ybGRcIn0iOwogICAgIE5TRGF0YSogZXhwZWN0
ZWREYXRhID0gW2V4cGVjdGVkQ29udGVudCBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdF
bmNvZGluZ107CiAgICAgRVhQRUNUX1RSVUUoW1tbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdl
cl0gY29udGVudHNBdFBhdGg6X2Rlc3RpbmF0aW9uUGF0aF0gaXNFcXVhbFRvRGF0YTpleHBlY3Rl
ZERhdGFdKTsKLSAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVGaWxlKF9kZXN0aW5hdGlv
blBhdGgpOworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoX2Rlc3RpbmF0aW9uUGF0aCk7CiAg
ICAgaXNEb25lID0gdHJ1ZTsKIH0KIApAQCAtNDU3LDEwICs0NTcsMTAgQEAgSUdOT1JFX1dBUk5J
TkdTX0JFR0lOKCJkZXByZWNhdGVkLWltcGxlbWVudGF0aW9ucyIpCiAtIChOU1N0cmluZyAqKV9k
b3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdn
ZXN0ZWRGaWxlbmFtZTooTlNTdHJpbmcgKilmaWxlbmFtZSBhbGxvd092ZXJ3cml0ZTooQk9PTCAq
KWFsbG93T3ZlcndyaXRlCiBJR05PUkVfV0FSTklOR1NfRU5ECiB7Ci0gICAgV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGVIYW5kbGU7Ci0gICAgX2Rlc3RpbmF0aW9u
UGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJUZXN0V2ViS2l0
QVBJIiwgZmlsZUhhbmRsZSk7Ci0gICAgRVhQRUNUX1RSVUUoZmlsZUhhbmRsZSAhPSBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKTsKLSAgICBXZWJDb3JlOjpG
aWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CisgICAgRmlsZVN5c3RlbTo6UGxhdGZv
cm1GaWxlSGFuZGxlIGZpbGVIYW5kbGU7CisgICAgX2Rlc3RpbmF0aW9uUGF0aCA9IEZpbGVTeXN0
ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJUZXN0V2ViS2l0QVBJIiwgZmlsZUhhbmRsZSk7CisgICAg
RVhQRUNUX1RSVUUoZmlsZUhhbmRsZSAhPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxl
SGFuZGxlKTsKKyAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CiAgICAgKmFs
bG93T3ZlcndyaXRlID0gWUVTOwogICAgIHJldHVybiBfZGVzdGluYXRpb25QYXRoOwogfQpAQCAt
NDg3LDcgKzQ4Nyw3IEBAIC0gKHZvaWQpX2Rvd25sb2FkRGlkRmluaXNoOihfV0tEb3dubG9hZCAq
KWRvd25sb2FkCiAgICAgaWYgKHJlZGlyZWN0Q2hhaW4uY291bnQgPiAyKQogICAgICAgICBFWFBF
Q1RfU1RSRVEoImh0dHA6Ly9wYXNzLyIsIFtyZWRpcmVjdENoYWluWzJdLmFic29sdXRlU3RyaW5n
IFVURjhTdHJpbmddKTsKIAotICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoX2Rl
c3RpbmF0aW9uUGF0aCk7CisgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShfZGVzdGluYXRpb25Q
YXRoKTsKICAgICBpc0RvbmUgPSB0cnVlOwogfQogCkBAIC02MzIsMTcgKzYzMiwxNyBAQCAtICh2
b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkZWNpZGVEZXN0aW5hdGlvbldp
dGhTdWdnZXN0ZWRGaWxlbmFtZQogewogICAgIEVYUEVDVF9UUlVFKFtmaWxlbmFtZSBoYXNTdWZm
aXg6QCIudXNkeiJdKTsKIAotICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhh
bmRsZSBmaWxlSGFuZGxlOwotICAgIF9kZXN0aW5hdGlvblBhdGggPSBXZWJDb3JlOjpGaWxlU3lz
dGVtOjpvcGVuVGVtcG9yYXJ5RmlsZShmaWxlbmFtZSwgZmlsZUhhbmRsZSk7Ci0gICAgRVhQRUNU
X1RSVUUoZmlsZUhhbmRsZSAhPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1G
aWxlSGFuZGxlKTsKLSAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRs
ZSk7CisgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGVIYW5kbGU7CisgICAg
X2Rlc3RpbmF0aW9uUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKGZpbGVuYW1l
LCBmaWxlSGFuZGxlKTsKKyAgICBFWFBFQ1RfVFJVRShmaWxlSGFuZGxlICE9IEZpbGVTeXN0ZW06
OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShm
aWxlSGFuZGxlKTsKIAogICAgIGNvbXBsZXRpb25IYW5kbGVyKFlFUywgX2Rlc3RpbmF0aW9uUGF0
aCk7CiB9CiAKIC0gKHZvaWQpX2Rvd25sb2FkRGlkRmluaXNoOihfV0tEb3dubG9hZCAqKWRvd25s
b2FkCiB7Ci0gICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShfZGVzdGluYXRpb25Q
YXRoKTsKKyAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKF9kZXN0aW5hdGlvblBhdGgpOwogICAg
IGlzRG9uZSA9IHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvRG93bmxvYWRQcm9ncmVzcy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWRQcm9ncmVzcy5tbQppbmRleCBmNTYwZGYzZjRjNDJl
MjRlNjViM2JmNjI4NzFiNWZhZGMxOWE1ZjY1Li4zZWIwM2YwNGExZGQ4YThlMTc2NzgzZDVlZmZk
NDgzNDdhOTBkYTAwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0Rvd25sb2FkUHJvZ3Jlc3MubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9Eb3dubG9hZFByb2dyZXNzLm1tCkBAIC0yOCw3ICsyOCw2IEBACiAjaW1w
b3J0ICJUZXN0V0tXZWJWaWV3LmgiCiAjaW1wb3J0ICJVdGlsaXRpZXMuaCIKICNpbXBvcnQgPEZv
dW5kYXRpb24vTlNQcm9ncmVzcy5oPgotI2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAj
aW1wb3J0IDxXZWJLaXQvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxX
ZWJLaXQvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tQ
cm9jZXNzUG9vbFByaXZhdGUuaD4KQEAgLTM3LDYgKzM2LDcgQEAKICNpbXBvcnQgPFdlYktpdC9f
V0tEb3dubG9hZERlbGVnYXRlLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL05TUHJvZ3Jlc3NT
UEkuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgorI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0u
aD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5o
PgogCkBAIC0zODAsMTAgKzM4MCwxMCBAQCAtICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQg
Kilkb3dubG9hZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZQogewogICAg
IEVYUEVDVF9FUShkb3dubG9hZCwgbV9kb3dubG9hZC5nZXQoKSk7CiAKLSAgICBXZWJDb3JlOjpG
aWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRsZTsKLSAgICBSZXRhaW5QdHI8
TlNTdHJpbmc+IHBhdGggPSAoTlNTdHJpbmcgKilXZWJDb3JlOjpGaWxlU3lzdGVtOjpvcGVuVGVt
cG9yYXJ5RmlsZSgiVGVzdFdlYktpdEFQSSIsIGZpbGVIYW5kbGUpOwotICAgIEVYUEVDVF9UUlVF
KGZpbGVIYW5kbGUgIT0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhh
bmRsZSk7Ci0gICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOwor
ICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlSGFuZGxlOworICAgIFJldGFp
blB0cjxOU1N0cmluZz4gcGF0aCA9IChOU1N0cmluZyAqKUZpbGVTeXN0ZW06Om9wZW5UZW1wb3Jh
cnlGaWxlKCJUZXN0V2ViS2l0QVBJIiwgZmlsZUhhbmRsZSk7CisgICAgRVhQRUNUX1RSVUUoZmls
ZUhhbmRsZSAhPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKTsKKyAgICBG
aWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CiAKICAgICBjb21wbGV0aW9uSGFuZGxl
cihZRVMsIHBhdGguZ2V0KCkpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS93
aW4vUGxhdGZvcm1VdGlsaXRpZXNXaW4uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS93aW4vUGxh
dGZvcm1VdGlsaXRpZXNXaW4uY3BwCmluZGV4IDA1NmJmZjc3ODI5NTI4YjEyOTBmMTJlMzlhYjIz
OGIwZjY4NjhiODYuLjM1ZjIyZTJhOGIxYmZlNTBhNDcwNTkwOTE4MzQ3MjM2NzlhM2Q3ZmQgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL1BsYXRmb3JtVXRpbGl0aWVzV2luLmNw
cAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL3dpbi9QbGF0Zm9ybVV0aWxpdGllc1dpbi5jcHAK
QEAgLTI3LDcgKzI3LDcgQEAKICNpbmNsdWRlICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogCiAjaW5j
bHVkZSA8U2hsd2FwaS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgorI2luY2x1
ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5oPgogCkBAIC00MCwxOSArNDAsMTkgQEAgc3Rh
dGljIFN0cmluZyBtb2R1bGVEaXJlY3RvcnkoKQogICAgIHdjaGFyX3QgZmlsZW5hbWVbYnVmZmVy
TGVuZ3RoXTsKICAgICBhdXRvIGxlbiA9IEdldE1vZHVsZUZpbGVOYW1lKG51bGxwdHIsIGZpbGVu
YW1lLCBidWZmZXJMZW5ndGgpOwogICAgIEFTU0VSVChsZW4gPiAwKTsKLSAgICByZXR1cm4gV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZSh3Y2hhclRvU3RyaW5nKGZpbGVuYW1lLCBs
ZW4pKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZSh3Y2hhclRvU3RyaW5n
KGZpbGVuYW1lLCBsZW4pKTsKIH0KIAogV0tTdHJpbmdSZWYgY3JlYXRlSW5qZWN0ZWRCdW5kbGVQ
YXRoKCkKIHsKLSAgICBhdXRvIHBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQobW9kdWxlRGlyZWN0b3J5KCksIFN0cmluZyhMIlRlc3RXZWJLaXRBUElJ
bmplY3RlZEJ1bmRsZS5kbGwiKSk7CisgICAgYXV0byBwYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KG1vZHVsZURpcmVjdG9yeSgpLCBTdHJpbmcoTCJUZXN0V2ViS2l0
QVBJSW5qZWN0ZWRCdW5kbGUuZGxsIikpOwogICAgIHJldHVybiBXS1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZyhwYXRoLnV0ZjgoKS5kYXRhKCkpOwogfQogCiBXS1VSTFJlZiBjcmVhdGVVUkxG
b3JSZXNvdXJjZShjb25zdCBjaGFyKiByZXNvdXJjZSwgY29uc3QgY2hhciogZXh0ZW5zaW9uKQog
ewogICAgIFN0cmluZyBmaWxlbmFtZSA9IFN0cmluZzo6Zm9ybWF0KCIuLlxcLi5cXC4uXFxUb29s
c1xcVGVzdFdlYktpdEFQSVxcVGVzdHNcXFdlYktpdFxcJXMuJXMiLCByZXNvdXJjZSwgZXh0ZW5z
aW9uKTsKLSAgICBhdXRvIHVybCA9IFVSTDo6ZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0aChXZWJD
b3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobW9kdWxlRGlyZWN0b3J5
KCksIGZpbGVuYW1lKSk7CisgICAgYXV0byB1cmwgPSBVUkw6OmZpbGVVUkxXaXRoRmlsZVN5c3Rl
bVBhdGgoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1vZHVsZURpcmVjdG9y
eSgpLCBmaWxlbmFtZSkpOwogICAgIHJldHVybiBXS1VSTENyZWF0ZVdpdGhVVEY4Q1N0cmluZyh1
cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359589</attachid>
            <date>2019-01-18 22:45:10 -0800</date>
            <delta_ts>2019-01-21 19:07:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193602-20190118224508.patch</filename>
            <type>text/plain</type>
            <size>435145</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwMTk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGI4YzQxMjQ1MDg3NmExYmNkZjBhZWVl
ZDliOTE3YmM4ODZiYzlkOTIuLmFjZTAzMjRkMGMwODNmZGViZWJkMGQ0NjIxYThjNTBkMjU1MDRk
MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTktMDEtMTggIFJvc3MgS2lyc2xpbmcgIDxyb3Nz
LmtpcnNsaW5nQHNvbnkuY29tPgorCisgICAgICAgIE1vdmUgRmlsZVN5c3RlbSB0byBXVEYKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzYwMgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV1RGLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0OgorICAg
ICAgICAqIHd0Zi9GaWxlTWV0YWRhdGEuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0ZpbGVNZXRhZGF0YS5oLgorICAgICAgICAqIHd0Zi9GaWxlU3lzdGVtLmNwcDogUmVu
YW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwLgorICAgICAg
ICAqIHd0Zi9GaWxlU3lzdGVtLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9GaWxlU3lzdGVtLmguCisgICAgICAgICogd3RmL1BsYXRmb3JtR1RLLmNtYWtlOgorICAgICAg
ICAqIHd0Zi9QbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1QbGF5U3Rh
dGlvbi5jbWFrZToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1XUEUuY21ha2U6CisgICAgICAgICog
d3RmL1BsYXRmb3JtV2luLmNtYWtlOgorICAgICAgICAqIHd0Zi9jZi9GaWxlU3lzdGVtQ0YuY3Bw
OiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvRmlsZVN5c3RlbUNGLmNw
cC4KKyAgICAgICAgKiB3dGYvY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tOiBSZW5hbWVkIGZyb20g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tLgorICAgICAg
ICAqIHd0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwLgorICAgICAgICAqIHd0Zi9tYWMv
RmlsZVN5c3RlbU1hYy5tbTogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9GaWxlU3lzdGVtTWFjLm1tLgorICAgICAgICAqIHd0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVgu
Y3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3Rl
bVBPU0lYLmNwcC4KKyAgICAgICAgKiB3dGYvc3BpL21hYy9NZXRhZGF0YVNQSS5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvbWFjL01ldGFkYXRhU1BJLmguCisgICAg
ICAgICogd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2luLmNwcC4KKyAgICAgICAgKiB3dGYvd2luL1Bh
dGhXYWxrZXIuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bh
dGhXYWxrZXIuY3BwLgorICAgICAgICAqIHd0Zi93aW4vUGF0aFdhbGtlci5oOiBSZW5hbWVkIGZy
b20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BhdGhXYWxrZXIuaC4KKwogMjAxOS0wMS0x
OCAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBHZXQg
cmlkIG9mIEFEVkFOQ0VEX1NQRUxMX0NIRUNLSU5HCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjM3ZWI2Mzk0OWYx
NDM3YTY1YzhmZjQwNDgxNzZmYmE1YjFkYTlmZi4uMjM4Mjc2MDg1NjczNGJkOGQ1YjgwOWJlZTg4
ZjMxMmM5NzBlM2EzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgxIEBACisyMDE5LTAxLTE4ICBS
b3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KKworICAgICAgICBNb3ZlIEZp
bGVTeXN0ZW0gdG8gV1RGCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTM2MDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcDoKKyAgICAgICAgKiBNb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNlc3Npb24uY3BwOgorICAg
ICAgICAqIE1vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKiBN
b2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbUVudHJ5LmNwcDoKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuY3BwOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJUcmFuc2FjdGlvbi5jcHA6CisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5jcHA6CisgICAg
ICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwOgorICAgICAgICAq
IE1vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luTG9jay5jcHA6CisgICAgICAgICogTW9kdWxlcy93
ZWJkYXRhYmFzZS9PcmlnaW5Mb2NrLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9j
b2NvYS9EYXRhYmFzZU1hbmFnZXJDb2NvYS5tbToKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFr
ZToKKyAgICAgICAgKiBQbGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtlOgorICAgICAgICAqIFBsYXRm
b3JtV2luLmNtYWtlOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXND
b2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5jcHA6CisgICAgICAgICogZG9tL0Rh
dGFUcmFuc2Zlckl0ZW0uY3BwOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJl
YWRlckNvY29hLm1tOgorICAgICAgICAqIGZpbGVhcGkvRmlsZS5jcHA6CisgICAgICAgICogZmls
ZWFwaS9GaWxlQ29jb2EubW06CisgICAgICAgICogaHRtbC9GaWxlSW5wdXRUeXBlLmNwcDoKKyAg
ICAgICAgKiBodG1sL0ZpbGVMaXN0Q3JlYXRvci5jcHA6CisgICAgICAgICogbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6Cisg
ICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbi5jcHA6CisgICAgICAgICogcGFnZS9TZWN1cml0
eU9yaWdpbkRhdGEuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL0ZpbGVIYW5kbGUuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9GaWxlU3RyZWFtLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlU3Ry
ZWFtLmg6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmg6CisgICAgICAgICogcGxh
dGZvcm0vU291cmNlc0dMaWIudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL0ZpbGVNb25p
dG9yQ29jb2EubW06CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9GaWxlTW9uaXRvckdMaWIuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVu
dEtleVNlc3Npb24ubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbi5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLm1t
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9pb3MvUXVpY2tMb29rLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJJ
dGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9Gb3JtRGF0YS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0
cmVhbUNGTmV0LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNl
UmVxdWVzdENvY29hLm1tOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVK
YXJEQi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5
Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRm9ybURhdGFTdHJlYW0uaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvQmxvYkRhdGFGaWxlUmVmZXJlbmNlTWFjLm1t
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vdGV4dC9oeXBoZW4vSHlwaGVuYXRpb25MaWJIeXBoZW4uY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVEQi5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRoZW1lLmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsuY3BwOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHA6CisgICAgICAgICogd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHA6CisKIDIwMTktMDEtMTggIEJy
aWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgQXV0b21hdGlvbi5jb21wdXRl
RWxlbWVudExheW91dCBzaG91bGQgcmV0dXJuIHZpc3VhbCB2aWV3cG9ydC1hd2FyZSBjb29yZGlu
YXRlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXggOTRiMmMzZDRlZjA4ZWJkMmRhOGY0NGViOTU3N2Ri
ZTk0NzgyMTNlYS4uYzU3YmI1ZDVhMzA4MTkwZjRiNDJlZjczMmI4YWYzNmE5ZjZkOTFjNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTktMDEtMTggIFJvc3MgS2lyc2xp
bmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgorCisgICAgICAgIE1vdmUgRmlsZVN5c3RlbSB0
byBXVEYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
MzYwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
UEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGFsL1BsYXRmb3JtTWFj
LmNtYWtlOgorCiAyMDE5LTAxLTE4ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+
CiAKICAgICAgICAgRm9sbG93LXVwOiBPdmVycmlkZSB0aGUgc2Vzc2lvbiBjb25maWd1cmF0aW9u
IGZvciBjb29raWVBY2NlcHRQb2xpY3kKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNjMxYzU0MDEyYjljMjMzNWY2YmQz
Y2JiY2IzOTY2MDFlMzU2YzI5NC4uNDhiMjFkYWEyMjRiNzUxNjZiNTUzMWFmNzY5ZDg0ODVmNjcx
YmFkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4MiBAQAorMjAxOS0wMS0xOCAgUm9zcyBLaXJzbGlu
ZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CisKKyAgICAgICAgTW92ZSBGaWxlU3lzdGVtIHRv
IFdURgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkz
NjAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50
U3RvcmFnZS5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxv
Yi5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHA6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVCbG9iU3RvcmFnZS5jcHA6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5jcHA6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5jcHA6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbENvY29hLm1t
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbFNv
dXAuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0YXRp
c3RpY3MuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0
b3JhZ2UuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFz
a0NvY29hLm1tOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9u
Q29jb2EubW06CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzTWFj
Lm1tOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNw
cDoKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc01haW5Vbml4LmNw
cDoKKyAgICAgICAgKiBTaGFyZWQvUGVyc2lzdGVuY3lVdGlscy5jcHA6CisgICAgICAgICogU2hh
cmVkL1BsdWdpbnMvTmV0c2NhcGUvdW5peC9OZXRzY2FwZVBsdWdpbk1vZHVsZVVuaXguY3BwOgor
ICAgICAgICAqIFNoYXJlZC9QbHVnaW5zL3VuaXgvUGx1Z2luU2VhcmNoUGF0aC5jcHA6CisgICAg
ICAgICogU2hhcmVkL1dlYk1lbW9yeVNhbXBsZXIuaDoKKyAgICAgICAgKiBTaGFyZWQvZ2xpYi9Q
cm9jZXNzRXhlY3V0YWJsZVBhdGhHTGliLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvaW9zL0NoaWxk
UHJvY2Vzc0lPUy5tbToKKyAgICAgICAgKiBTaGFyZWQvbWFjL0NoaWxkUHJvY2Vzc01hYy5tbToK
KyAgICAgICAgKiBTaGFyZWQvbWFjL1NhbmRib3hFeHRlbnNpb25NYWMubW06CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHA6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9BUElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW06CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0LmNwcDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHA6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5jcHA6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS93aW4vQVBJV2Vic2l0ZURhdGFTdG9yZVdpbi5jcHA6CisgICAgICAgICogVUlQcm9j
ZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2Ev
V2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmll
d0ltcGwubW06CisgICAgICAgICogVUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9yYWdlLmNw
cDoKKyAgICAgICAgKiBVSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9nbGliL0J1YmJsZXdyYXBMYXVuY2hlci5jcHA6Cisg
ICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvUHJvY2Vzc0xhdW5jaGVyR0xpYi5jcHA6
CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1BsdWdpbkluZm9DYWNoZS5jcHA6Cisg
ICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvbWFjL1BsdWdpblByb2Nlc3NQcm94eU1hYy5tbToK
KyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpbkluZm9TdG9yZVVuaXguY3Bw
OgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5p
eC5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuY3Bw
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNw
cDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRy
YWNrZXIuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRl
RGF0YVN0b3JlQ29jb2EubW06CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQcm94
eUdMaWIuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsu
Y3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc1Bvb2xHdGsuY3BwOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGaWxlVXBsb2FkUGFuZWwubW06CisgICAgICAgICog
VUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgICogVUlQcm9jZXNzL3dp
bi9XZWJQcm9jZXNzUG9vbFdpbi5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL3dpbi9XZWJWaWV3
LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3Mvd3BlL1dlYlByb2Nlc3NQb29sV1BFLmNwcDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdEV4dGVuc2lv
bk1hbmFnZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvZ2xpYi9J
bmplY3RlZEJ1bmRsZUdsaWIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvTWVkaWFDYWNoZS9X
ZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHA6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJJbnNwZWN0b3JVSUd0ay5jcHA6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9XZWJJbnNwZWN0b3JVSVdpbi5jcHA6CisgICAgICAgICog
V2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW06CisKIDIwMTktMDEtMTggIEJyaWFu
IEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgQXV0b21hdGlvbi5jb21wdXRlRWxl
bWVudExheW91dCBzaG91bGQgcmV0dXJuIHZpc3VhbCB2aWV3cG9ydC1hd2FyZSBjb29yZGluYXRl
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L0NoYW5nZUxvZwppbmRleCAxYjRiYmY3NTg2M2MzNjA3YTAyMzRlOGU0ZmVjMGZh
MTFjOTRhY2VkLi4wNDhkOTI0MDZlZmZkNmMxZDA4YzQ1MGM3ODY0ZWZlZGI5ZTFkOWU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE5LTAxLTE4ICBSb3NzIEtpcnNs
aW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KKworICAgICAgICBNb3ZlIEZpbGVTeXN0ZW0g
dG8gV1RGCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTM2MDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFN0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcDoKKyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VT
eW5jTWFuYWdlci5jcHA6CisgICAgICAgICogU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHA6CisK
IDIwMTktMDEtMTggIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmV2ZXJ0IHIyMzg4MTUsIGl0IGJyb2tlIFdLMSB2aWRlbyBmdWxsc2NyZWVuIG9uIE1h
YwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDFlMDY0ZmVjN2JjYjBkYWIwNzQzYzNk
NTJjYWJmMWZlM2M5MjNiNDMuLjRjMTY5YTljMjBmMDcyODYyMWYwYWU1NWQxMWJlNTA4OWU0YzI1
ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxOS0w
MS0xOCAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CisKKyAgICAgICAg
TW92ZSBGaWxlU3lzdGVtIHRvIFdURgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTkzNjAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBNaXNjL1dlYk5TRmlsZU1hbmFnZXJFeHRyYXMubW06CisgICAgICAg
ICogU3RvcmFnZS9XZWJEYXRhYmFzZVByb3ZpZGVyLm1tOgorICAgICAgICAqIFdlYlZpZXcvV2Vi
Vmlldy5tbToKKwogMjAxOS0wMS0xOCAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZXZlcnQgcjIzODgxNSwgaXQgYnJva2UgV0sxIHZpZGVvIGZ1bGxz
Y3JlZW4gb24gTWFjCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggM2FjYjY3ZjVjMzY1
ZGVkMzAyMzNkY2MzY2JkZTQ2YmJhZDBiODJhMS4uZmE1OGQ3NTRjYTk3NWM1ZTA2MDQ3Njc0ZWEw
MTZjOTA4MGE4ZmU0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5
IEBACisyMDE5LTAxLTE4ICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4K
KworICAgICAgICBNb3ZlIEZpbGVTeXN0ZW0gdG8gV1RGCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM2MDIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwOgor
ICAgICAgICAqIFBsdWdpbnMvUGx1Z2luUGFja2FnZS5oOgorICAgICAgICAqIFBsdWdpbnMvUGx1
Z2luU3RyZWFtLmg6CisgICAgICAgICogV2ViQXBwbGljYXRpb25DYWNoZS5jcHA6CisgICAgICAg
ICogV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBXZWJEb3dubG9hZEN1cmwuY3Bw
OgorICAgICAgICAqIFdlYlByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoK
KwogMjAxOS0wMS0xNyAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgW1dpbl1bSGlnaERQSV0gUmVwYWludCBnbGl0Y2hlcyB3aGVuIHNjcm9sbGluZy4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGEyMjM5NDkwZDExMmRj
YTQ2YTVhYTRiY2RlZDM1ZmRiY2FhZWM5ZTkuLmQwOGM3OWYyYjgzYThlMTNmZWRkYjljYzExOWYz
MWExYTlmOTc2N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtODksNiArODksMTEgQEAKIAkJOTM5MzRCRDUxOEExRjE2OTAwRDBENkExIC8qIFN0cmluZ1Zp
ZXdDRi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
MzkzNEJENDE4QTFGMTY5MDBEMEQ2QTEgLyogU3RyaW5nVmlld0NGLmNwcCAqLzsgfTsKIAkJOTNG
MTk5M0UxOUQ3OTU4RDAwQzIzOTBCIC8qIFN0cmluZ1ZpZXcuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGMTk5M0QxOUQ3OTU4RDAwQzIzOTBCIC8q
IFN0cmluZ1ZpZXcuY3BwICovOyB9OwogCQk5QkM3MEYwNTE3NkMzNzlEMDAxMDFERUMgLyogQXRv
bWljU3RyaW5nVGFibGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOUJDNzBGMDQxNzZDMzc5RDAwMTAxREVDIC8qIEF0b21pY1N0cmluZ1RhYmxlLmNw
cCAqLzsgfTsKKwkJQTMzMUQ5NUIyMUYyNDk5MjAwOUYwMkFBIC8qIEZpbGVTeXN0ZW0uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTMzMUQ5NUEyMUYy
NDk5MjAwOUYwMkFBIC8qIEZpbGVTeXN0ZW0uY3BwICovOyB9OworCQlBMzMxRDk1RDIxRjI0OUU0
MDA5RjAyQUEgLyogRmlsZVN5c3RlbUNGLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEEzMzFEOTVDMjFGMjQ5RTQwMDlGMDJBQSAvKiBGaWxlU3lzdGVt
Q0YuY3BwICovOyB9OworCQlBMzMxRDk1RjIxRjI0OUY2MDA5RjAyQUEgLyogRmlsZVN5c3RlbUNv
Y29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTMz
MUQ5NUUyMUYyNDlGNjAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1Db2NvYS5tbSAqLzsgfTsKKwkJQTMz
MUQ5NjEyMUYyNEEwQTAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1NYWMubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMzMxRDk2MDIxRjI0QTBBMDA5RjAyQUEg
LyogRmlsZVN5c3RlbU1hYy5tbSAqLzsgfTsKKwkJQTMzMUQ5NjcyMUYyNEFCRDAwOUYwMkFBIC8q
IEZpbGVTeXN0ZW1QT1NJWC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBMzMxRDk2NjIxRjI0QUJEMDA5RjAyQUEgLyogRmlsZVN5c3RlbVBPU0lYLmNw
cCAqLzsgfTsKIAkJQTNCNzI1RUM5ODc0NDZBRDkzRjFBNDQwIC8qIFJhbmRvbURldmljZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDOEY1OTdDQTJB
NTc0MTdGQkFCOTJGRDYgLyogUmFuZG9tRGV2aWNlLmNwcCAqLzsgfTsKIAkJQTNFNEREOTMxRjNB
ODAzNDAwREVEMEI0IC8qIFRleHRTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTNFNEREOTExRjNBODAzNDAwREVEMEI0IC8qIFRleHRTdHJl
YW0uY3BwICovOyB9OwogCQlBNUJBMTVGMzE4MjQzM0E5MDBBODJFNjkgLyogU3RyaW5nQ29jb2Eu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUJBMTVG
MjE4MjQzM0E5MDBBODJFNjkgLyogU3RyaW5nQ29jb2EubW0gKi87IH07CkBAIC00MzAsOCArNDM1
LDE2IEBACiAJCTlDNjdDNTQyNTg5MzQ4RTI4NUI0OTY5OSAvKiBJbmRleGVkQ29udGFpbmVySXRl
cmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5kZXhlZENvbnRhaW5l
ckl0ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzMEQ0MTJDMUYwREUw
QkEwMEI3MTk1NCAvKiBTb2Z0TGlua2luZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTb2Z0TGlua2luZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMzBENDEy
RDFGMERFMTNGMDBCNzE5NTQgLyogU29mdExpbmtpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU29mdExpbmtpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QTMzMUQ5NTgyMUYyNDk3ODAwOUYwMkFBIC8qIEZpbGVNZXRhZGF0YS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBGaWxlTWV0YWRhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTMzMUQ5NTkyMUYyNDk5MjAwOUYwMkFBIC8qIEZpbGVTeXN0ZW0uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmlsZVN5c3RlbS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlBMzMxRDk1QTIxRjI0OTkyMDA5RjAyQUEgLyogRmlsZVN5c3RlbS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxlU3lzdGVtLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTMzMUQ5NUMyMUYyNDlFNDAwOUYwMkFBIC8qIEZp
bGVTeXN0ZW1DRi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxl
U3lzdGVtQ0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMzMxRDk1RTIxRjI0
OUY2MDA5RjAyQUEgLyogRmlsZVN5c3RlbUNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gRmlsZVN5c3RlbUNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlBMzMxRDk2MDIxRjI0QTBBMDA5RjAyQUEgLyogRmlsZVN5c3RlbU1hYy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZpbGVTeXN0ZW1NYWMubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEzMzFEOTY2MjFGMjRBQkQwMDlGMDJBQSAv
KiBGaWxlU3lzdGVtUE9TSVguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gRmlsZVN5c3RlbVBPU0lYLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTM2
RTE2RjcyMTZGRjgyODAwOEREODdFIC8qIFdURlNlbWFwaG9yZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXVEZTZW1hcGhvcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTNBQjZFNkExRjNFMUFENjAwOUMxNEIxIC8qIFZhbHVlVG9TdHJpbmcuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmFsdWVUb1N0cmluZy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlBM0QyNzNCOTIxRjJFRTkxMDA4NjY5NzEgLyogTWV0YWRhdGFTUEku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWV0YWRhdGFTUEkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTNFNEREOTExRjNBODAzNDAwREVEMEI0IC8qIFRleHRT
dHJlYW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGV4dFN0cmVh
bS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzRTRERDkyMUYzQTgwMzQwMERF
RDBCNCAvKiBUZXh0U3RyZWFtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRl
eHRTdHJlYW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTUwOThBRkYxQzE2OUUw
NzAwMDg3Nzk3IC8qIFNhbmRib3hTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU2FuZGJveFNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzE3LDYgKzcz
MCw3IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQk1QzFGMDU5MTIxNjQzNTZCMDAzOTMwMkMgLyog
Q0ZVUkxFeHRyYXMuY3BwICovLAogCQkJCTVDMUYwNTkyMjE2NDM1NkIwMDM5MzAyQyAvKiBDRlVS
TEV4dHJhcy5oICovLAorCQkJCUEzMzFEOTVDMjFGMjQ5RTQwMDlGMDJBQSAvKiBGaWxlU3lzdGVt
Q0YuY3BwICovLAogCQkJCUMyQkNGQzQxMUY2MUQ2MTYwMEM5MjIyQyAvKiBMYW5ndWFnZUNGLmNw
cCAqLywKIAkJCQkyQ0RFRDBFRTE4MTE1QzM4MDA0REJBNzAgLyogUnVuTG9vcENGLmNwcCAqLywK
IAkJCQkxQUZERTY0NzE5NTIwMUMzMDBDNDhGRkEgLyogVHlwZUNhc3RzQ0YuaCAqLywKQEAgLTc3
NCw2ICs3ODgsMjIgQEAKIAkJCW5hbWUgPSBTb3VyY2U7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOwogCQl9OworCQlBMzMxRDk2MzIxRjI0QTJFMDA5RjAyQUEgLyogcG9zaXggKi8gPSB7CisJ
CQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUEzMzFEOTY2MjFGMjRBQkQw
MDlGMDJBQSAvKiBGaWxlU3lzdGVtUE9TSVguY3BwICovLAorCQkJKTsKKwkJCXBhdGggPSBwb3Np
eDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCUEzRDI3M0I4MjFGMkVFN0Iw
MDg2Njk3MSAvKiBtYWMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0g
KAorCQkJCUEzRDI3M0I5MjFGMkVFOTEwMDg2Njk3MSAvKiBNZXRhZGF0YVNQSS5oICovLAorCQkJ
KTsKKwkJCXBhdGggPSBtYWM7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQlB
NUJBMTVGMTE4MjQzMzlGMDBBODJFNjkgLyogY29jb2EgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtODA3LDYgKzgzNyw3IEBACiAJCQkJMUZBNDdDODcxNTI1
MDJEQTAwNTY4RDFCIC8qIGlvcyAqLywKIAkJCQlBOEE0NzJDNDE1MUE4MjVBMDA0MTIzRkYgLyog
bWFjICovLAogCQkJCUU0M0E0Njg1MUUyMjhCNTcwMDI3NkIwNSAvKiBwZXJzaXN0ZW5jZSAqLywK
KwkJCQlBMzMxRDk2MzIxRjI0QTJFMDA5RjAyQUEgLyogcG9zaXggKi8sCiAJCQkJQ0VGNDgyMEMx
OURBMzQ3NjAwQ0MwNEI4IC8qIHNwaSAqLywKIAkJCQlBOEE0NzMxQjE1MUE4MjVCMDA0MTIzRkYg
LyogdGV4dCAqLywKIAkJCQlBOEE0NzMzOTE1MUE4MjVCMDA0MTIzRkYgLyogdGhyZWFkcyAqLywK
QEAgLTg5NCw4ICs5MjUsMTEgQEAKIAkJCQlBOEE0NzJBMjE1MUE4MjVBMDA0MTIzRkYgLyogRmFz
dE1hbGxvYy5oICovLAogCQkJCTBGNzlDN0MzMUU3MzUxMTgwMEVCMzREMSAvKiBGYXN0VExTLmgg
Ki8sCiAJCQkJQjM4RkQ3QkMxNjg5NTNFODAwNjVDOTY5IC8qIEZlYXR1cmVEZWZpbmVzLmggKi8s
CisJCQkJQTMzMUQ5NTgyMUYyNDk3ODAwOUYwMkFBIC8qIEZpbGVNZXRhZGF0YS5oICovLAogCQkJ
CTBGOUQzMzVCMTY1REJBNzMwMDVBRDM4NyAvKiBGaWxlUHJpbnRTdHJlYW0uY3BwICovLAogCQkJ
CTBGOUQzMzVDMTY1REJBNzMwMDVBRDM4NyAvKiBGaWxlUHJpbnRTdHJlYW0uaCAqLywKKwkJCQlB
MzMxRDk1QTIxRjI0OTkyMDA5RjAyQUEgLyogRmlsZVN5c3RlbS5jcHAgKi8sCisJCQkJQTMzMUQ5
NTkyMUYyNDk5MjAwOUYwMkFBIC8qIEZpbGVTeXN0ZW0uaCAqLywKIAkJCQkwRjJCNjZBNTE3QjZC
NEY3MDBBN0FFM0YgLyogRmxpcEJ5dGVzLmggKi8sCiAJCQkJRkU4NkE4NzQxRTU5NDQwMjAwMTEx
QkJGIC8qIEZvcmJpZEhlYXBBbGxvY2F0aW9uLmggKi8sCiAJCQkJQThBNDcyQTYxNTFBODI1QTAw
NDEyM0ZGIC8qIEZvcndhcmQuaCAqLywKQEAgLTExOTAsNiArMTIyNCw3IEBACiAJCQljaGlsZHJl
biA9ICgKIAkJCQkxQTQyOEI4QjFDOEY4OUREMDA1MUU5RUIgLyogQXBwS2l0Q29tcGF0aWJpbGl0
eURlY2xhcmF0aW9ucy5oICovLAogCQkJCTFBQ0FERDgyMTg4NDQ4MDEwMEQ4QjcxRCAvKiBEZXBy
ZWNhdGVkU3ltYm9sc1VzZWRCeVNhZmFyaS5tbSAqLywKKwkJCQlBMzMxRDk2MDIxRjI0QTBBMDA5
RjAyQUEgLyogRmlsZVN5c3RlbU1hYy5tbSAqLywKIAkJCQk1MzUzNEYyOTFFQzBFMTBFMDAxNDFC
MkYgLyogTWFjaEV4Y2VwdGlvbnMuZGVmcyAqLywKIAkJCSk7CiAJCQlwYXRoID0gbWFjOwpAQCAt
MTMxNyw2ICsxMzUyLDcgQEAKIAkJCQlEQ0VFMjFGOTFDRUE3NTJGMDAwQzIzOTYgLyogY2YgKi8s
CiAJCQkJQ0U0NjUxNkMxOURCMUZCNDAwM0VDQTA1IC8qIGNvY29hICovLAogCQkJCUNFNzNFMDIz
MTlEQ0I3QUIwMDU4MEQ1QyAvKiBkYXJ3aW4gKi8sCisJCQkJQTNEMjczQjgyMUYyRUU3QjAwODY2
OTcxIC8qIG1hYyAqLywKIAkJCSk7CiAJCQlwYXRoID0gc3BpOwogCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKQEAgLTEzNTEsNiArMTM4Nyw3IEBACiAJCQkJRTM4QzQxMjQxRUI0RTA0QzAwNDI5
NTdEIC8qIENQVVRpbWVDb2NvYS5jcHAgKi8sCiAJCQkJMTQzRERFOTcyMEM4QkU5OTAwN0Y3NkZB
IC8qIEVudGl0bGVtZW50cy5oICovLAogCQkJCTE0M0RERTk1MjBDOEJDMzcwMDdGNzZGQSAvKiBF
bnRpdGxlbWVudHMubW0gKi8sCisJCQkJQTMzMUQ5NUUyMUYyNDlGNjAwOUYwMkFBIC8qIEZpbGVT
eXN0ZW1Db2NvYS5tbSAqLywKIAkJCQk3QTZFQkEzMzIwNzQ2QzM0MDA0RjlDNDQgLyogTWFjaFNl
bmRSaWdodC5jcHAgKi8sCiAJCQkJQThBNDcyQzUxNTFBODI1QTAwNDEyM0ZGIC8qIE1haW5UaHJl
YWRDb2NvYS5tbSAqLywKIAkJCQlBREYyQ0U2NTFFMzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9v
dHByaW50Q29jb2EuY3BwICovLApAQCAtMTQ3Niw2ICsxNTEzLDExIEBACiAJCQkJMEY3QzVGQjYx
RDg4NUNGMjAwNDRGNUUyIC8qIEZhc3RCaXRWZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QThBNDczQzMxNTFBODI1QjAwNDEyM0ZGIC8qIEZhc3RNYWxsb2MuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEY5RDMzNjAxNjVEQkE3MzAwNUFEMzg3IC8qIEZpbGVQcmludFN0cmVhbS5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQlBMzMxRDk1QjIxRjI0OTkyMDA5RjAyQUEgLyogRmlsZVN5c3RlbS5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlBMzMxRDk1RDIxRjI0OUU0MDA5RjAyQUEgLyogRmlsZVN5
c3RlbUNGLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUEzMzFEOTVGMjFGMjQ5RjYwMDlGMDJBQSAv
KiBGaWxlU3lzdGVtQ29jb2EubW0gaW4gU291cmNlcyAqLywKKwkJCQlBMzMxRDk2MTIxRjI0QTBB
MDA5RjAyQUEgLyogRmlsZVN5c3RlbU1hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJCUEzMzFEOTY3
MjFGMjRBQkQwMDlGMDJBQSAvKiBGaWxlU3lzdGVtUE9TSVguY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQThBNDczQjUxNTFBODI1QjAwNDEyM0ZGIC8qIGZpeGVkLWR0b2EuY2MgaW4gU291cmNlcyAq
LywKIAkJCQkxQTFEOEI5RTE3MzE4Nzk4MDAxNDFEQTQgLyogRnVuY3Rpb25EaXNwYXRjaGVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGNUJGMTc2MUYyM0Q0OUEwMDI5RDkxRCAvKiBHaWdhY2Fn
ZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlz
dHMudHh0IGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKaW5kZXggY2VlMWNjZTFlNTcx
ODRkMTNiZDJjZDUxOWVmNmEyMGRmZmIxYTk2YS4uN2Q4NTgzMzIwZjQ5YzYxMDQwMWM3YjhhYjQ0
NjM5NmQ4OGMxNTBlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQK
KysrIGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKQEAgLTYxLDcgKzYxLDkgQEAgc2V0
KFdURl9QVUJMSUNfSEVBREVSUwogICAgIEZhc3RNYWxsb2MuaAogICAgIEZhc3RUTFMuaAogICAg
IEZlYXR1cmVEZWZpbmVzLmgKKyAgICBGaWxlTWV0YWRhdGEuaAogICAgIEZpbGVQcmludFN0cmVh
bS5oCisgICAgRmlsZVN5c3RlbS5oCiAgICAgRmxpcEJ5dGVzLmgKICAgICBGb3JiaWRIZWFwQWxs
b2NhdGlvbi5oCiAgICAgRm9yd2FyZC5oCkBAIC0zNTMsNiArMzU1LDcgQEAgc2V0KFdURl9TT1VS
Q0VTCiAgICAgRmFzdEJpdFZlY3Rvci5jcHAKICAgICBGYXN0TWFsbG9jLmNwcAogICAgIEZpbGVQ
cmludFN0cmVhbS5jcHAKKyAgICBGaWxlU3lzdGVtLmNwcAogICAgIEZ1bmN0aW9uRGlzcGF0Y2hl
ci5jcHAKICAgICBHaWdhY2FnZS5jcHAKICAgICBHbG9iYWxWZXJzaW9uLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvRmlsZU1ldGFkYXRhLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlTWV0
YWRhdGEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wYmI4OGZjODRmOTRhZjRjY2YxYzU4MGUwZDU2YTJiNjU4MTEw
Zjk4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvRmlsZU1ldGFkYXRhLmgKQEAg
LTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+CisK
K25hbWVzcGFjZSBXVEYgeworCitzdHJ1Y3QgRmlsZU1ldGFkYXRhIHsKKyAgICAvLyBUaGUgbGFz
dCBtb2RpZmljYXRpb24gdGltZSBvZiB0aGUgZmlsZSwgaW4gc2Vjb25kcy4KKyAgICBXYWxsVGlt
ZSBtb2RpZmljYXRpb25UaW1lOworCisgICAgLy8gVGhlIGxlbmd0aCBvZiB0aGUgZmlsZSBpbiBi
eXRlcy4KKyAgICBsb25nIGxvbmcgbGVuZ3RoOworCisgICAgYm9vbCBpc0hpZGRlbjsKKworICAg
IGVudW0gY2xhc3MgVHlwZSB7IEZpbGUsIERpcmVjdG9yeSwgU3ltYm9saWNMaW5rIH07CisgICAg
VHlwZSB0eXBlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6RmlsZU1l
dGFkYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAgYi9Tb3Vy
Y2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNWY3YmIwM2JhMDE3OTk3ZTNj
OTk1ZjM4ODUyOTZhNmY0YTIxNzAzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYv
RmlsZVN5c3RlbS5jcHAKQEAgLTAsMCArMSwzNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDctMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgorCisjaW5jbHVkZSA8d3RmL0ZpbGVN
ZXRhZGF0YS5oPgorI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KKyNpbmNsdWRlIDx3dGYvU2Nv
cGUuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQnVpbGRlci5oPgorCisjaWYgIU9TKFdJTkRPV1MpCisjaW5jbHVkZSA8ZmNudGwuaD4K
KyNpbmNsdWRlIDxzeXMvbW1hbi5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5jbHVkZSA8
dW5pc3RkLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFdURiB7CisKK25hbWVzcGFjZSBGaWxlU3lz
dGVtIHsKKworLy8gVGhlIGZvbGxvd2luZyBsb3dlci1BU0NJSSBjaGFyYWN0ZXJzIG5lZWQgZXNj
YXBpbmcgdG8gYmUgdXNlZCBpbiBhIGZpbGVuYW1lCisvLyBhY3Jvc3MgYWxsIHN5c3RlbXMsIGlu
Y2x1ZGluZyBXaW5kb3dzOgorLy8gICAgIC0gVW5wcmludGFibGUgQVNDSUkgKDAwLTFGKQorLy8g
ICAgIC0gU3BhY2UgICAgICAgICAgICAgKDIwKQorLy8gICAgIC0gRG91YmxlIHF1b3RlICAgICAg
KDIyKQorLy8gICAgIC0gUGVyY2VudCAgICAgICAgICAgKDI1KSAoZXNjYXBlZCBiZWNhdXNlIGl0
IGlzIG91ciBlc2NhcGUgY2hhcmFjdGVyKQorLy8gICAgIC0gQXN0ZXJpc2sgICAgICAgICAgKDJB
KQorLy8gICAgIC0gU2xhc2ggICAgICAgICAgICAgKDJGKQorLy8gICAgIC0gQ29sb24gICAgICAg
ICAgICAgKDNBKQorLy8gICAgIC0gTGVzcy10aGFuICAgICAgICAgKDNDKQorLy8gICAgIC0gR3Jl
YXRlci10aGFuICAgICAgKDNFKQorLy8gICAgIC0gUXVlc3Rpb24gTWFyayAgICAgKDNGKQorLy8g
ICAgIC0gQmFja3NsYXNoICAgICAgICAgKDVDKQorLy8gICAgIC0gUGlwZSAgICAgICAgICAgICAg
KDdDKQorLy8gICAgIC0gRGVsZXRlICAgICAgICAgICAgKDdGKQorCitzdGF0aWMgY29uc3QgYm9v
bCBuZWVkc0VzY2FwaW5nWzEyOF0gPSB7CisgICAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwg
IHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICAvKiAwMC0wNyAqLworICAgIHRydWUsICB0cnVl
LCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgLyogMDgtMEYgKi8K
KworICAgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0
cnVlLCAgLyogMTAtMTcgKi8KKyAgICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwg
IHRydWUsICB0cnVlLCAgdHJ1ZSwgIC8qIDE4LTFGICovCisKKyAgICB0cnVlLCAgZmFsc2UsIHRy
dWUsICBmYWxzZSwgZmFsc2UsIHRydWUsICBmYWxzZSwgZmFsc2UsIC8qIDIwLTI3ICovCisgICAg
ZmFsc2UsIGZhbHNlLCB0cnVlLCAgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUsICAv
KiAyOC0yRiAqLworCisgICAgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxz
ZSwgZmFsc2UsIGZhbHNlLCAvKiAzMC0zNyAqLworICAgIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgIGZh
bHNlLCB0cnVlLCAgZmFsc2UsIHRydWUsICB0cnVlLCAgLyogMzgtM0YgKi8KKworICAgIGZhbHNl
LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgLyogNDAt
NDcgKi8KKyAgICBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxz
ZSwgZmFsc2UsIC8qIDQ4LTRGICovCisKKyAgICBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwg
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIC8qIDUwLTU3ICovCisgICAgZmFsc2UsIGZhbHNl
LCBmYWxzZSwgZmFsc2UsIHRydWUsICBmYWxzZSwgZmFsc2UsIGZhbHNlLCAvKiA1OC01RiAqLwor
CisgICAgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZh
bHNlLCAvKiA2MC02NyAqLworICAgIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwg
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgLyogNjgtNkYgKi8KKworICAgIGZhbHNlLCBmYWxzZSwgZmFs
c2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgLyogNzAtNzcgKi8KKyAgICBm
YWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgIC8q
IDc4LTdGICovCit9OworCitzdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkRXNjYXBlVUNoYXIoVUNo
YXIgY2hhcmFjdGVyLCBVQ2hhciBwcmV2aW91c0NoYXJhY3RlciwgVUNoYXIgbmV4dENoYXJhY3Rl
cikKK3sKKyAgICBpZiAoY2hhcmFjdGVyIDw9IDEyNykKKyAgICAgICAgcmV0dXJuIG5lZWRzRXNj
YXBpbmdbY2hhcmFjdGVyXTsKKworICAgIGlmIChVMTZfSVNfTEVBRChjaGFyYWN0ZXIpICYmICFV
MTZfSVNfVFJBSUwobmV4dENoYXJhY3RlcikpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAg
aWYgKFUxNl9JU19UUkFJTChjaGFyYWN0ZXIpICYmICFVMTZfSVNfTEVBRChwcmV2aW91c0NoYXJh
Y3RlcikpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCitT
dHJpbmcgZW5jb2RlRm9yRmlsZU5hbWUoY29uc3QgU3RyaW5nJiBpbnB1dFN0cmluZykKK3sKKyAg
ICB1bnNpZ25lZCBsZW5ndGggPSBpbnB1dFN0cmluZy5sZW5ndGgoKTsKKyAgICBpZiAoIWxlbmd0
aCkKKyAgICAgICAgcmV0dXJuIGlucHV0U3RyaW5nOworCisgICAgU3RyaW5nQnVpbGRlciByZXN1
bHQ7CisgICAgcmVzdWx0LnJlc2VydmVDYXBhY2l0eShsZW5ndGgpOworCisgICAgVUNoYXIgcHJl
dmlvdXNDaGFyYWN0ZXI7CisgICAgVUNoYXIgY2hhcmFjdGVyID0gMDsKKyAgICBVQ2hhciBuZXh0
Q2hhcmFjdGVyID0gaW5wdXRTdHJpbmdbMF07CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGxlbmd0aDsgKytpKSB7CisgICAgICAgIHByZXZpb3VzQ2hhcmFjdGVyID0gY2hhcmFjdGVyOwor
ICAgICAgICBjaGFyYWN0ZXIgPSBuZXh0Q2hhcmFjdGVyOworICAgICAgICBuZXh0Q2hhcmFjdGVy
ID0gaSArIDEgPCBsZW5ndGggPyBpbnB1dFN0cmluZ1tpICsgMV0gOiAwOworCisgICAgICAgIGlm
IChzaG91bGRFc2NhcGVVQ2hhcihjaGFyYWN0ZXIsIHByZXZpb3VzQ2hhcmFjdGVyLCBuZXh0Q2hh
cmFjdGVyKSkgeworICAgICAgICAgICAgaWYgKGNoYXJhY3RlciA8PSAyNTUpIHsKKyAgICAgICAg
ICAgICAgICByZXN1bHQuYXBwZW5kKCclJyk7CisgICAgICAgICAgICAgICAgYXBwZW5kQnl0ZUFz
SGV4KGNoYXJhY3RlciwgcmVzdWx0KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiUrIik7CisgICAgICAgICAgICAgICAgYXBwZW5k
Qnl0ZUFzSGV4KGNoYXJhY3RlciA+PiA4LCByZXN1bHQpOworICAgICAgICAgICAgICAgIGFwcGVu
ZEJ5dGVBc0hleChjaGFyYWN0ZXIsIHJlc3VsdCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0g
ZWxzZQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChjaGFyYWN0ZXIpOworICAgIH0KKworICAg
IHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKK30KKworU3RyaW5nIGRlY29kZUZyb21GaWxlbmFt
ZShjb25zdCBTdHJpbmcmIGlucHV0U3RyaW5nKQoreworICAgIHVuc2lnbmVkIGxlbmd0aCA9IGlu
cHV0U3RyaW5nLmxlbmd0aCgpOworICAgIGlmICghbGVuZ3RoKQorICAgICAgICByZXR1cm4gaW5w
dXRTdHJpbmc7CisKKyAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKKyAgICByZXN1bHQucmVzZXJ2
ZUNhcGFjaXR5KGxlbmd0aCk7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3Ro
OyArK2kpIHsKKyAgICAgICAgaWYgKGlucHV0U3RyaW5nW2ldICE9ICclJykgeworICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZChpbnB1dFN0cmluZ1tpXSk7CisgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgfQorCisgICAgICAgIC8vIElmIHRoZSBpbnB1dCBzdHJpbmcgaXMgYSB2YWxpZCBl
bmNvZGVkIGZpbGVuYW1lLCBpdCBtdXN0IGJlIGF0IGxlYXN0IDIgY2hhcmFjdGVycyBsb25nZXIK
KyAgICAgICAgLy8gdGhhbiB0aGUgY3VycmVudCBpbmRleCB0byBhY2NvdW50IGZvciB0aGlzIHBl
cmNlbnQgZW5jb2RlZCB2YWx1ZS4KKyAgICAgICAgaWYgKGkgKyAyID49IGxlbmd0aCkKKyAgICAg
ICAgICAgIHJldHVybiB7IH07CisKKyAgICAgICAgaWYgKGlucHV0U3RyaW5nW2krMV0gIT0gJysn
KSB7CisgICAgICAgICAgICBpZiAoIWlzQVNDSUlIZXhEaWdpdChpbnB1dFN0cmluZ1tpICsgMV0p
KQorICAgICAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgICAgICBpZiAoIWlzQVNDSUlI
ZXhEaWdpdChpbnB1dFN0cmluZ1tpICsgMl0pKQorICAgICAgICAgICAgICAgIHJldHVybiB7IH07
CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHRvQVNDSUlIZXhWYWx1ZShpbnB1dFN0cmluZ1tp
ICsgMV0sIGlucHV0U3RyaW5nW2kgKyAyXSkpOworICAgICAgICAgICAgaSArPSAyOworICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICAvLyBJZiB0aGUgaW5wdXQgc3Ry
aW5nIGlzIGEgdmFsaWQgZW5jb2RlZCBmaWxlbmFtZSwgaXQgbXVzdCBiZSBhdCBsZWFzdCA1IGNo
YXJhY3RlcnMgbG9uZ2VyCisgICAgICAgIC8vIHRoYW4gdGhlIGN1cnJlbnQgaW5kZXggdG8gYWNj
b3VudCBmb3IgdGhpcyBwZXJjZW50IGVuY29kZWQgdmFsdWUuCisgICAgICAgIGlmIChpICsgNSA+
PSBsZW5ndGgpCisgICAgICAgICAgICByZXR1cm4geyB9OworCisgICAgICAgIGlmICghaXNBU0NJ
SUhleERpZ2l0KGlucHV0U3RyaW5nW2kgKyAyXSkpCisgICAgICAgICAgICByZXR1cm4geyB9Owor
ICAgICAgICBpZiAoIWlzQVNDSUlIZXhEaWdpdChpbnB1dFN0cmluZ1tpICsgM10pKQorICAgICAg
ICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgaWYgKCFpc0FTQ0lJSGV4RGlnaXQoaW5wdXRTdHJp
bmdbaSArIDRdKSkKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIGlmICghaXNBU0NJ
SUhleERpZ2l0KGlucHV0U3RyaW5nW2kgKyA1XSkpCisgICAgICAgICAgICByZXR1cm4geyB9Owor
CisgICAgICAgIHJlc3VsdC5hcHBlbmQodG9BU0NJSUhleFZhbHVlKGlucHV0U3RyaW5nW2kgKyAy
XSwgaW5wdXRTdHJpbmdbaSArIDNdKSA8PCA4IHwgdG9BU0NJSUhleFZhbHVlKGlucHV0U3RyaW5n
W2kgKyA0XSwgaW5wdXRTdHJpbmdbaSArIDVdKSk7CisgICAgICAgIGkgKz0gNTsKKyAgICB9CisK
KyAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7Cit9CisKK1N0cmluZyBsYXN0Q29tcG9uZW50
T2ZQYXRoSWdub3JpbmdUcmFpbGluZ1NsYXNoKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyNpZiBP
UyhXSU5ET1dTKQorICAgIGNoYXIgcGF0aFNlcGFyYXRvciA9ICdcXCc7CisjZWxzZQorICAgIGNo
YXIgcGF0aFNlcGFyYXRvciA9ICcvJzsKKyNlbmRpZgorCisgICAgYXV0byBwb3NpdGlvbiA9IHBh
dGgucmV2ZXJzZUZpbmQocGF0aFNlcGFyYXRvcik7CisgICAgaWYgKHBvc2l0aW9uID09IG5vdEZv
dW5kKQorICAgICAgICByZXR1cm4gcGF0aDsKKworICAgIHNpemVfdCBlbmRPZlN1YnN0cmluZyA9
IHBhdGgubGVuZ3RoKCkgLSAxOworICAgIGlmIChwb3NpdGlvbiA9PSBlbmRPZlN1YnN0cmluZykg
eworICAgICAgICAtLWVuZE9mU3Vic3RyaW5nOworICAgICAgICBwb3NpdGlvbiA9IHBhdGgucmV2
ZXJzZUZpbmQocGF0aFNlcGFyYXRvciwgZW5kT2ZTdWJzdHJpbmcpOworICAgIH0KKworICAgIHJl
dHVybiBwYXRoLnN1YnN0cmluZyhwb3NpdGlvbiArIDEsIGVuZE9mU3Vic3RyaW5nIC0gcG9zaXRp
b24pOworfQorCitib29sIGFwcGVuZEZpbGVDb250ZW50c1RvRmlsZUhhbmRsZShjb25zdCBTdHJp
bmcmIHBhdGgsIFBsYXRmb3JtRmlsZUhhbmRsZSYgdGFyZ2V0KQoreworICAgIGF1dG8gc291cmNl
ID0gb3BlbkZpbGUocGF0aCwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKKworICAgIGlmICghaXNIYW5k
bGVWYWxpZChzb3VyY2UpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzdGF0aWMgaW50
IGJ1ZmZlclNpemUgPSAxIDw8IDE5OworICAgIFZlY3RvcjxjaGFyPiBidWZmZXIoYnVmZmVyU2l6
ZSk7CisKKyAgICBhdXRvIGZpbGVDbG9zZXIgPSBXVEY6Om1ha2VTY29wZUV4aXQoW3NvdXJjZV0o
KSB7CisgICAgICAgIFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUgPSBzb3VyY2U7CisgICAgICAg
IGNsb3NlRmlsZShoYW5kbGUpOworICAgIH0pOworCisgICAgZG8geworICAgICAgICBpbnQgcmVh
ZEJ5dGVzID0gcmVhZEZyb21GaWxlKHNvdXJjZSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyU2l6ZSk7
CisKKyAgICAgICAgaWYgKHJlYWRCeXRlcyA8IDApCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICAgICAgaWYgKHdyaXRlVG9GaWxlKHRhcmdldCwgYnVmZmVyLmRhdGEoKSwgcmVhZEJ5
dGVzKSAhPSByZWFkQnl0ZXMpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAg
aWYgKHJlYWRCeXRlcyA8IGJ1ZmZlclNpemUpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9IHdoaWxlICh0cnVlKTsKKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCisKK2Jv
b2wgZmlsZXNIYXZlU2FtZVZvbHVtZShjb25zdCBTdHJpbmcmIGZpbGVBLCBjb25zdCBTdHJpbmcm
IGZpbGVCKQoreworICAgIGF1dG8gZnNSZXBGaWxlQSA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihmaWxlQSk7CisgICAgYXV0byBmc1JlcEZpbGVCID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KGZpbGVCKTsKKworICAgIGlmIChmc1JlcEZpbGVBLmlzTnVsbCgpIHx8IGZzUmVwRmlsZUIuaXNO
dWxsKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7
CisKKyAgICBhdXRvIGZpbGVBRGV2ID0gZ2V0RmlsZURldmljZUlkKGZzUmVwRmlsZUEpOworICAg
IGF1dG8gZmlsZUJEZXYgPSBnZXRGaWxlRGV2aWNlSWQoZnNSZXBGaWxlQik7CisKKyAgICBpZiAo
ZmlsZUFEZXYgJiYgZmlsZUJEZXYpCisgICAgICAgIHJlc3VsdCA9IChmaWxlQURldiA9PSBmaWxl
QkRldik7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisjaWYgIVBMQVRGT1JNKE1BQykKKwor
dm9pZCBzZXRNZXRhZGF0YVVSTChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmKQoreworfQorCitib29sIGNhbkV4Y2x1ZGVGcm9tQmFja3VwKCkKK3sKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK2Jvb2wgZXhjbHVkZUZyb21CYWNrdXAoY29uc3QgU3RyaW5nJikKK3sK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKKyNlbmRpZgorCitNYXBwZWRGaWxlRGF0YTo6fk1hcHBl
ZEZpbGVEYXRhKCkKK3sKKyNpZiAhT1MoV0lORE9XUykKKyAgICBpZiAoIW1fZmlsZURhdGEpCisg
ICAgICAgIHJldHVybjsKKyAgICBtdW5tYXAobV9maWxlRGF0YSwgbV9maWxlU2l6ZSk7CisjZW5k
aWYKK30KKworTWFwcGVkRmlsZURhdGE6Ok1hcHBlZEZpbGVEYXRhKGNvbnN0IFN0cmluZyYgZmls
ZVBhdGgsIGJvb2wmIHN1Y2Nlc3MpCit7CisjaWYgT1MoV0lORE9XUykKKyAgICAvLyBGSVhNRTog
SW1wbGVtZW50IG1hcHBpbmcKKyAgICBzdWNjZXNzID0gZmFsc2U7CisjZWxzZQorICAgIENTdHJp
bmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZVBhdGgpOworICAgIGludCBm
ZCA9ICFmc1JlcC5pc051bGwoKSA/IG9wZW4oZnNSZXAuZGF0YSgpLCBPX1JET05MWSkgOiAtMTsK
KyAgICBpZiAoZmQgPCAwKSB7CisgICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIHN0cnVjdCBzdGF0IGZpbGVTdGF0OworICAgIGlmIChmc3RhdChm
ZCwgJmZpbGVTdGF0KSkgeworICAgICAgICBjbG9zZShmZCk7CisgICAgICAgIHN1Y2Nlc3MgPSBm
YWxzZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHVuc2lnbmVkIHNpemU7CisgICAg
aWYgKCFXVEY6OmNvbnZlcnRTYWZlbHkoZmlsZVN0YXQuc3Rfc2l6ZSwgc2l6ZSkpIHsKKyAgICAg
ICAgY2xvc2UoZmQpOworICAgICAgICBzdWNjZXNzID0gZmFsc2U7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBpZiAoIXNpemUpIHsKKyAgICAgICAgY2xvc2UoZmQpOworICAgICAgICBz
dWNjZXNzID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHZvaWQqIGRhdGEg
PSBtbWFwKDAsIHNpemUsIFBST1RfUkVBRCwgTUFQX0ZJTEUgfCBNQVBfU0hBUkVELCBmZCwgMCk7
CisgICAgY2xvc2UoZmQpOworCisgICAgaWYgKGRhdGEgPT0gTUFQX0ZBSUxFRCkgeworICAgICAg
ICBzdWNjZXNzID0gZmFsc2U7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzdWNjZXNz
ID0gdHJ1ZTsKKyAgICBtX2ZpbGVEYXRhID0gZGF0YTsKKyAgICBtX2ZpbGVTaXplID0gc2l6ZTsK
KyNlbmRpZgorfQorCitQbGF0Zm9ybUZpbGVIYW5kbGUgb3BlbkFuZExvY2tGaWxlKGNvbnN0IFN0
cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlIG9wZW5Nb2RlLCBPcHRpb25TZXQ8RmlsZUxvY2tNb2Rl
PiBsb2NrTW9kZSkKK3sKKyAgICBhdXRvIGhhbmRsZSA9IG9wZW5GaWxlKHBhdGgsIG9wZW5Nb2Rl
KTsKKyAgICBpZiAoaGFuZGxlID09IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCisgICAgICAg
IHJldHVybiBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOworCisjaWYgVVNFKEZJTEVfTE9DSykK
KyAgICBib29sIGxvY2tlZCA9IGxvY2tGaWxlKGhhbmRsZSwgbG9ja01vZGUpOworICAgIEFTU0VS
VF9VTlVTRUQobG9ja2VkLCBsb2NrZWQpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0obG9ja01v
ZGUpOworI2VuZGlmCisKKyAgICByZXR1cm4gaGFuZGxlOworfQorCit2b2lkIHVubG9ja0FuZENs
b3NlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlKQoreworI2lmIFVTRShGSUxFX0xPQ0sp
CisgICAgYm9vbCB1bmxvY2tlZCA9IHVubG9ja0ZpbGUoaGFuZGxlKTsKKyAgICBBU1NFUlRfVU5V
U0VEKHVubG9ja2VkLCB1bmxvY2tlZCk7CisjZW5kaWYKKyAgICBjbG9zZUZpbGUoaGFuZGxlKTsK
K30KKworYm9vbCBmaWxlSXNEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBTaG91bGRGb2xs
b3dTeW1ib2xpY0xpbmtzIHNob3VsZEZvbGxvd1N5bWJvbGljTGlua3MpCit7CisgICAgYXV0byBt
ZXRhZGF0YSA9IHNob3VsZEZvbGxvd1N5bWJvbGljTGlua3MgPT0gU2hvdWxkRm9sbG93U3ltYm9s
aWNMaW5rczo6WWVzID8gZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3MocGF0aCkgOiBmaWxl
TWV0YWRhdGEocGF0aCk7CisgICAgaWYgKCFtZXRhZGF0YSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIHJldHVybiBtZXRhZGF0YS52YWx1ZSgpLnR5cGUgPT0gRmlsZU1ldGFkYXRhOjpUeXBl
OjpEaXJlY3Rvcnk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEZpbGVTeXN0ZW0KK30gLy8gbmFtZXNw
YWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oIGIvU291cmNl
L1dURi93dGYvRmlsZVN5c3RlbS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZhNGIxZjg4M2I5NzU2MDE4OGQyZmRm
MTFiMjdlNDAxYzIxNjY2NjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxl
U3lzdGVtLmgKQEAgLTAsMCArMSwyMjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgg
Q29sbGFib3JhLCBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICog
My4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1l
cyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx0aW1lLmg+
CisjaW5jbHVkZSA8dXRpbGl0eT4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUg
PHd0Zi9PcHRpb25TZXQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3Rm
L1dhbGxUaW1lLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKKyNpZiBVU0Uo
Q0YpCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2VuZGlmCisKKyNpZiBVU0UoQ0YpCit0
eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGRGF0YSogQ0ZEYXRhUmVmOworI2VuZGlmCisKK09CSkNf
Q0xBU1MgTlNTdHJpbmc7CisKKyNpZiBQTEFURk9STShXSU4pCit0eXBlZGVmIHZvaWQgKkhBTkRM
RTsKKyNlbmRpZgorCisjaWYgVVNFKEdMSUIpCit0eXBlZGVmIHN0cnVjdCBfR0ZpbGVJT1N0cmVh
bSBHRmlsZUlPU3RyZWFtOworI2VuZGlmCisKK25hbWVzcGFjZSBXVEYgeworCitzdHJ1Y3QgRmls
ZU1ldGFkYXRhOworCituYW1lc3BhY2UgRmlsZVN5c3RlbSB7CisKKy8vIFBsYXRmb3JtRmlsZUhh
bmRsZQorI2lmIFVTRShHTElCKSAmJiAhUExBVEZPUk0oV0lOKQordHlwZWRlZiBHRmlsZUlPU3Ry
ZWFtKiBQbGF0Zm9ybUZpbGVIYW5kbGU7Citjb25zdCBQbGF0Zm9ybUZpbGVIYW5kbGUgaW52YWxp
ZFBsYXRmb3JtRmlsZUhhbmRsZSA9IDA7CisjZWxpZiBQTEFURk9STShXSU4pCit0eXBlZGVmIEhB
TkRMRSBQbGF0Zm9ybUZpbGVIYW5kbGU7CisvLyBGSVhNRTogLTEgaXMgSU5WQUxJRF9IQU5ETEVf
VkFMVUUsIGRlZmluZWQgaW4gPHdpbmJhc2UuaD4uIENocm9taXVtIHRyaWVzIHRvCisvLyBhdm9p
ZCB1c2luZyBXaW5kb3dzIGhlYWRlcnMgaW4gaGVhZGVycy4gV2UnZCByYXRoZXIgbW92ZSB0aGlz
IGludG8gdGhlIC5jcHAuCitjb25zdCBQbGF0Zm9ybUZpbGVIYW5kbGUgaW52YWxpZFBsYXRmb3Jt
RmlsZUhhbmRsZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8SEFORExFPigtMSk7CisjZWxzZQordHlwZWRl
ZiBpbnQgUGxhdGZvcm1GaWxlSGFuZGxlOworY29uc3QgUGxhdGZvcm1GaWxlSGFuZGxlIGludmFs
aWRQbGF0Zm9ybUZpbGVIYW5kbGUgPSAtMTsKKyNlbmRpZgorCitlbnVtIGNsYXNzIEZpbGVPcGVu
TW9kZSB7CisgICAgUmVhZCwKKyAgICBXcml0ZSwKKyNpZiBPUyhEQVJXSU4pCisgICAgRXZlbnRz
T25seSwKKyNlbmRpZgorfTsKKworZW51bSBjbGFzcyBGaWxlU2Vla09yaWdpbiB7CisgICAgQmVn
aW5uaW5nLAorICAgIEN1cnJlbnQsCisgICAgRW5kLAorfTsKKworZW51bSBjbGFzcyBGaWxlTG9j
a01vZGUgeworICAgIFNoYXJlZCA9IDEgPDwgMCwKKyAgICBFeGNsdXNpdmUgPSAxIDw8IDEsCisg
ICAgTm9uYmxvY2tpbmcgPSAxIDw8IDIsCit9OworCitlbnVtIGNsYXNzIFNob3VsZEZvbGxvd1N5
bWJvbGljTGlua3MgeyBObywgWWVzIH07CisKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGZpbGVF
eGlzdHMoY29uc3QgU3RyaW5nJik7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBkZWxldGVGaWxl
KGNvbnN0IFN0cmluZyYpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZGVsZXRlRW1wdHlEaXJl
Y3RvcnkoY29uc3QgU3RyaW5nJik7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBtb3ZlRmlsZShj
b25zdCBTdHJpbmcmIG9sZFBhdGgsIGNvbnN0IFN0cmluZyYgbmV3UGF0aCk7CitXVEZfRVhQT1JU
X1BSSVZBVEUgYm9vbCBnZXRGaWxlU2l6ZShjb25zdCBTdHJpbmcmLCBsb25nIGxvbmcmIHJlc3Vs
dCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBnZXRGaWxlU2l6ZShQbGF0Zm9ybUZpbGVIYW5k
bGUsIGxvbmcgbG9uZyYgcmVzdWx0KTsKK1dURl9FWFBPUlRfUFJJVkFURSBPcHRpb25hbDxXYWxs
VGltZT4gZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJik7CitXVEZfRVhQT1JU
X1BSSVZBVEUgT3B0aW9uYWw8V2FsbFRpbWU+IGdldEZpbGVDcmVhdGlvblRpbWUoY29uc3QgU3Ry
aW5nJik7IC8vIE5vdCBhbGwgcGxhdGZvcm1zIHN0b3JlIGZpbGUgY3JlYXRpb24gdGltZS4KK1dU
Rl9FWFBPUlRfUFJJVkFURSBPcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YShjb25z
dCBTdHJpbmcmIHBhdGgpOworV1RGX0VYUE9SVF9QUklWQVRFIE9wdGlvbmFsPEZpbGVNZXRhZGF0
YT4gZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3MoY29uc3QgU3RyaW5nJiBwYXRoKTsKK1dU
Rl9FWFBPUlRfUFJJVkFURSBib29sIGZpbGVJc0RpcmVjdG9yeShjb25zdCBTdHJpbmcmLCBTaG91
bGRGb2xsb3dTeW1ib2xpY0xpbmtzKTsKK1dURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb21w
b25lbnQpOworV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnRzKFN0cmluZ1ZpZXcgcGF0aCwgY29uc3QgVmVjdG9yPFN0cmluZ1ZpZXc+JiBjb21wb25lbnRz
KTsKK1dURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgbGFzdENvbXBvbmVudE9mUGF0aElnbm9yaW5n
VHJhaWxpbmdTbGFzaChjb25zdCBTdHJpbmcmIHBhdGgpOworV1RGX0VYUE9SVF9QUklWQVRFIGJv
b2wgbWFrZUFsbERpcmVjdG9yaWVzKGNvbnN0IFN0cmluZyYgcGF0aCk7CitXVEZfRVhQT1JUX1BS
SVZBVEUgU3RyaW5nIGhvbWVEaXJlY3RvcnlQYXRoKCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgU3Ry
aW5nIHBhdGhHZXRGaWxlTmFtZShjb25zdCBTdHJpbmcmKTsKK1dURl9FWFBPUlRfUFJJVkFURSBT
dHJpbmcgZGlyZWN0b3J5TmFtZShjb25zdCBTdHJpbmcmKTsKK1dURl9FWFBPUlRfUFJJVkFURSBi
b29sIGdldFZvbHVtZUZyZWVTcGFjZShjb25zdCBTdHJpbmcmLCB1aW50NjRfdCYpOworV1RGX0VY
UE9SVF9QUklWQVRFIE9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3Ry
aW5nJik7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjcmVhdGVTeW1ib2xpY0xpbmsoY29uc3Qg
U3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGljTGlua1BhdGgpOworCitX
VEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRNZXRhZGF0YVVSTChjb25zdCBTdHJpbmcmIHBhdGgs
IGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyID0geyB9KTsK
KworYm9vbCBjYW5FeGNsdWRlRnJvbUJhY2t1cCgpOyAvLyBSZXR1cm5zIHRydWUgaWYgYW55IGZp
bGUgY2FuIGV2ZXIgYmUgZXhjbHVkZWQgZnJvbSBiYWNrdXAuCitib29sIGV4Y2x1ZGVGcm9tQmFj
a3VwKGNvbnN0IFN0cmluZyYpOyAvLyBSZXR1cm5zIHRydWUgaWYgc3VjY2Vzc2Z1bC4KKworV1RG
X0VYUE9SVF9QUklWQVRFIFZlY3RvcjxTdHJpbmc+IGxpc3REaXJlY3RvcnkoY29uc3QgU3RyaW5n
JiBwYXRoLCBjb25zdCBTdHJpbmcmIGZpbHRlciA9IFN0cmluZygpKTsKKworV1RGX0VYUE9SVF9Q
UklWQVRFIENTdHJpbmcgZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYpOwor
U3RyaW5nIHN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgY2hhciopOwor
CitpbmxpbmUgYm9vbCBpc0hhbmRsZVZhbGlkKGNvbnN0IFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFu
ZGxlKSB7IHJldHVybiBoYW5kbGUgIT0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsgfQorCisv
LyBQcmVmaXggaXMgd2hhdCB0aGUgZmlsZW5hbWUgc2hvdWxkIGJlIHByZWZpeGVkIHdpdGgsIG5v
dCB0aGUgZnVsbCBwYXRoLgorV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBvcGVuVGVtcG9yYXJ5
RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJik7CitXVEZfRVhQ
T1JUX1BSSVZBVEUgUGxhdGZvcm1GaWxlSGFuZGxlIG9wZW5GaWxlKGNvbnN0IFN0cmluZyYgcGF0
aCwgRmlsZU9wZW5Nb2RlKTsKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIGNsb3NlRmlsZShQbGF0
Zm9ybUZpbGVIYW5kbGUmKTsKKy8vIFJldHVybnMgdGhlIHJlc3VsdGluZyBvZmZzZXQgZnJvbSB0
aGUgYmVnaW5uaW5nIG9mIHRoZSBmaWxlIGlmIHN1Y2Nlc3NmdWwsIC0xIG90aGVyd2lzZS4KK1dU
Rl9FWFBPUlRfUFJJVkFURSBsb25nIGxvbmcgc2Vla0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBs
b25nIGxvbmcgb2Zmc2V0LCBGaWxlU2Vla09yaWdpbik7Citib29sIHRydW5jYXRlRmlsZShQbGF0
Zm9ybUZpbGVIYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQpOworLy8gUmV0dXJucyBudW1iZXIgb2Yg
Ynl0ZXMgYWN0dWFsbHkgcmVhZCBpZiBzdWNjZXNzZnVsLCAtMSBvdGhlcndpc2UuCitXVEZfRVhQ
T1JUX1BSSVZBVEUgaW50IHdyaXRlVG9GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgY29uc3QgY2hh
ciogZGF0YSwgaW50IGxlbmd0aCk7CisvLyBSZXR1cm5zIG51bWJlciBvZiBieXRlcyBhY3R1YWxs
eSB3cml0dGVuIGlmIHN1Y2Nlc3NmdWwsIC0xIG90aGVyd2lzZS4KK1dURl9FWFBPUlRfUFJJVkFU
RSBpbnQgcmVhZEZyb21GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgY2hhciogZGF0YSwgaW50IGxl
bmd0aCk7CisKK1dURl9FWFBPUlRfUFJJVkFURSBQbGF0Zm9ybUZpbGVIYW5kbGUgb3BlbkFuZExv
Y2tGaWxlKGNvbnN0IFN0cmluZyYsIEZpbGVPcGVuTW9kZSwgT3B0aW9uU2V0PEZpbGVMb2NrTW9k
ZT4gPSBGaWxlTG9ja01vZGU6OkV4Y2x1c2l2ZSk7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCB1
bmxvY2tBbmRDbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlKTsKKworLy8gQXBwZW5kcyB0aGUg
Y29udGVudHMgb2YgdGhlIGZpbGUgZm91bmQgYXQgJ3BhdGgnIHRvIHRoZSBvcGVuIFBsYXRmb3Jt
RmlsZUhhbmRsZS4KKy8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgd3JpdGUgd2FzIHN1Y2Nlc3NmdWws
IGZhbHNlIGlmIGl0IHdhcyBub3QuCitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBhcHBlbmRGaWxl
Q29udGVudHNUb0ZpbGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBQbGF0Zm9ybUZpbGVIYW5k
bGUmKTsKKworLy8gSGFyZCBsaW5rcyBhIGZpbGUgaWYgcG9zc2libGUsIGNvcGllcyBpdCBpZiBu
b3QuCitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBoYXJkTGlua09yQ29weUZpbGUoY29uc3QgU3Ry
aW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb24pOworCisjaWYgVVNFKEZJTEVf
TE9DSykKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGxvY2tGaWxlKFBsYXRmb3JtRmlsZUhhbmRs
ZSwgT3B0aW9uU2V0PEZpbGVMb2NrTW9kZT4pOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgdW5s
b2NrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUpOworI2VuZGlmCisKKy8vIEVuY29kZSBhIHN0cmlu
ZyBmb3IgdXNlIHdpdGhpbiBhIGZpbGUgbmFtZS4KK1dURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcg
ZW5jb2RlRm9yRmlsZU5hbWUoY29uc3QgU3RyaW5nJik7CitXVEZfRVhQT1JUX1BSSVZBVEUgU3Ry
aW5nIGRlY29kZUZyb21GaWxlbmFtZShjb25zdCBTdHJpbmcmKTsKKworV1RGX0VYUE9SVF9QUklW
QVRFIGJvb2wgZmlsZXNIYXZlU2FtZVZvbHVtZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
KTsKKworI2lmIFVTRShDRikKK1dURl9FWFBPUlRfUFJJVkFURSBSZXRhaW5QdHI8Q0ZVUkxSZWY+
IHBhdGhBc1VSTChjb25zdCBTdHJpbmcmKTsKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oR1RLKSB8
fCBQTEFURk9STShXUEUpCitTdHJpbmcgZmlsZW5hbWVGb3JEaXNwbGF5KGNvbnN0IFN0cmluZyYp
OworI2VuZGlmCisKKyNpZiBQTEFURk9STShXSU4pCitXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5n
IGxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpOworV1RGX0VYUE9SVF9QUklWQVRF
IFN0cmluZyByb2FtaW5nVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpOworI2VuZGlmCisK
KyNpZiBQTEFURk9STShDT0NPQSkKK1dURl9FWFBPUlRfUFJJVkFURSBOU1N0cmluZyAqY3JlYXRl
VGVtcG9yYXJ5RGlyZWN0b3J5KE5TU3RyaW5nICpkaXJlY3RvcnlQcmVmaXgpOworV1RGX0VYUE9S
VF9QUklWQVRFIGJvb2wgZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7Cisj
ZW5kaWYKKworI2lmIFBMQVRGT1JNKFdJTl9DQUlSTykKK1dURl9FWFBPUlRfUFJJVkFURSBTdHJp
bmcgY3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBk
ZWxldGVOb25FbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKKyNlbmRpZgorCitXVEZfRVhQ
T1JUX1BSSVZBVEUgU3RyaW5nIHJlYWxQYXRoKGNvbnN0IFN0cmluZyYpOworCitjbGFzcyBNYXBw
ZWRGaWxlRGF0YSB7CitwdWJsaWM6CisgICAgTWFwcGVkRmlsZURhdGEoKSB7IH0KKyAgICBNYXBw
ZWRGaWxlRGF0YShNYXBwZWRGaWxlRGF0YSYmKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgTWFw
cGVkRmlsZURhdGEoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgYm9vbCYgc3VjY2Vzcyk7CisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIH5NYXBwZWRGaWxlRGF0YSgpOworICAgIE1hcHBlZEZpbGVEYXRh
JiBvcGVyYXRvcj0oTWFwcGVkRmlsZURhdGEmJik7CisKKyAgICBleHBsaWNpdCBvcGVyYXRvciBi
b29sKCkgY29uc3QgeyByZXR1cm4gISFtX2ZpbGVEYXRhOyB9CisgICAgY29uc3Qgdm9pZCogZGF0
YSgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsZURhdGE7IH0KKyAgICB1bnNpZ25lZCBzaXplKCkgY29u
c3QgeyByZXR1cm4gbV9maWxlU2l6ZTsgfQorCitwcml2YXRlOgorICAgIHZvaWQqIG1fZmlsZURh
dGEgeyBudWxscHRyIH07CisgICAgdW5zaWduZWQgbV9maWxlU2l6ZSB7IDAgfTsKK307CisKK2lu
bGluZSBNYXBwZWRGaWxlRGF0YTo6TWFwcGVkRmlsZURhdGEoTWFwcGVkRmlsZURhdGEmJiBvdGhl
cikKKyAgICA6IG1fZmlsZURhdGEoc3RkOjpleGNoYW5nZShvdGhlci5tX2ZpbGVEYXRhLCBudWxs
cHRyKSkKKyAgICAsIG1fZmlsZVNpemUoc3RkOjpleGNoYW5nZShvdGhlci5tX2ZpbGVTaXplLCAw
KSkKK3sKK30KKworaW5saW5lIE1hcHBlZEZpbGVEYXRhJiBNYXBwZWRGaWxlRGF0YTo6b3BlcmF0
b3I9KE1hcHBlZEZpbGVEYXRhJiYgb3RoZXIpCit7CisgICAgbV9maWxlRGF0YSA9IHN0ZDo6ZXhj
aGFuZ2Uob3RoZXIubV9maWxlRGF0YSwgbnVsbHB0cik7CisgICAgbV9maWxlU2l6ZSA9IHN0ZDo6
ZXhjaGFuZ2Uob3RoZXIubV9maWxlU2l6ZSwgMCk7CisgICAgcmV0dXJuICp0aGlzOworfQorCit9
IC8vIG5hbWVzcGFjZSBGaWxlU3lzdGVtCit9IC8vIG5hbWVzcGFjZSBXVEYKKworbmFtZXNwYWNl
IEZpbGVTeXN0ZW0gPSBXVEY6OkZpbGVTeXN0ZW07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtR1RLLmNtYWtlCmlu
ZGV4IDY3M2YwMmQwZDU5Njg1NDVhYzg3YThhOGU1N2IyNzczNGQ3Mzk4OWMuLjdmZWMxMmRjMmZj
MzE1YmM1MTY4ZjAyYjNiZjc2NDcwYzBkOWNiYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtR1RLLmNtYWtl
CkBAIC0yMiw2ICsyMiw3IEBAIGxpc3QoQVBQRU5EIFdURl9TT1VSQ0VTCiAgICAgZ2VuZXJpYy9N
YWluVGhyZWFkR2VuZXJpYy5jcHAKICAgICBnZW5lcmljL1dvcmtRdWV1ZUdlbmVyaWMuY3BwCiAK
KyAgICBnbGliL0ZpbGVTeXN0ZW1HbGliLmNwcAogICAgIGdsaWIvR0xpYlV0aWxpdGllcy5jcHAK
ICAgICBnbGliL0dSZWZQdHIuY3BwCiAgICAgZ2xpYi9SdW5Mb29wR0xpYi5jcHAKQEAgLTU1LDUg
KzU2LDYgQEAgbGlzdChBUFBFTkQgV1RGX0xJQlJBUklFUwogKQogCiBsaXN0KEFQUEVORCBXVEZf
U1lTVEVNX0lOQ0xVREVfRElSRUNUT1JJRVMKKyAgICAke0dJT19VTklYX0lOQ0xVREVfRElSU30K
ICAgICAke0dMSUJfSU5DTFVERV9ESVJTfQogKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
UGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybU1hYy5jbWFrZQppbmRl
eCBmYzFlNTdiOWNiMjZiNmYyYjZhYmE2MTQzYmQxOGFlYmJiMTZiNTM0Li4wZTNlMTQxNjA5MTJi
Nzg2MTc3MzQzNTBhOTI1ZDk5ZGJhMmNkYTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Q
bGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybU1hYy5jbWFrZQpA
QCAtMzIsNiArMzIsOCBAQCBsaXN0KEFQUEVORCBXVEZfUFVCTElDX0hFQURFUlMKICAgICBzcGkv
ZGFyd2luL1hQQ1NQSS5oCiAgICAgc3BpL2Rhcndpbi9keWxkU1BJLmgKIAorICAgIHNwaS9tYWMv
TWV0YWRhdGFTUEkuaAorCiAgICAgdGV4dC9jZi9UZXh0QnJlYWtJdGVyYXRvckNGLmgKICkKIApA
QCAtNDIsNiArNDQsNyBAQCBsaXN0KEFQUEVORCBXVEZfU09VUkNFUwogICAgIFNjaGVkdWxlUGFp
ck1hYy5tbQogCiAgICAgY2YvQ0ZVUkxFeHRyYXMuY3BwCisgICAgY2YvRmlsZVN5c3RlbUNGLmNw
cAogICAgIGNmL0xhbmd1YWdlQ0YuY3BwCiAgICAgY2YvUnVuTG9vcENGLmNwcAogICAgIGNmL1VS
TENGLmNwcApAQCAtNDksNiArNTIsNyBAQCBsaXN0KEFQUEVORCBXVEZfU09VUkNFUwogICAgIGNv
Y29hL0F1dG9kcmFpbmVkUG9vbC5jcHAKICAgICBjb2NvYS9DUFVUaW1lQ29jb2EuY3BwCiAgICAg
Y29jb2EvRW50aXRsZW1lbnRzLm1tCisgICAgY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tCiAgICAg
Y29jb2EvTWFjaFNlbmRSaWdodC5jcHAKICAgICBjb2NvYS9NYWluVGhyZWFkQ29jb2EubW0KICAg
ICBjb2NvYS9NZW1vcnlGb290cHJpbnRDb2NvYS5jcHAKQEAgLTU4LDYgKzYyLDkgQEAgbGlzdChB
UFBFTkQgV1RGX1NPVVJDRVMKICAgICBjb2NvYS9Xb3JrUXVldWVDb2NvYS5jcHAKIAogICAgIG1h
Yy9EZXByZWNhdGVkU3ltYm9sc1VzZWRCeVNhZmFyaS5tbQorICAgIG1hYy9GaWxlU3lzdGVtTWFj
Lm1tCisKKyAgICBwb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCiAKICAgICB0ZXh0L2NmL0F0b21p
Y1N0cmluZ0ltcGxDRi5jcHAKICAgICB0ZXh0L2NmL1N0cmluZ0NGLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvUGxhdGZvcm1QbGF5U3RhdGlvbi5jbWFrZSBiL1NvdXJjZS9XVEYvd3Rm
L1BsYXRmb3JtUGxheVN0YXRpb24uY21ha2UKaW5kZXggYjk3ZmVjNDBlZDMwYjE3N2IyZjUzNWI2
MjE2MGVmMWVlZTJkZTU2ZS4uM2U5ZTc1YzkyOGE2Yzk0NjA1YjRiZmNhYTdmYmIyYjlmNDJmODM5
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1QbGF5U3RhdGlvbi5jbWFrZQor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtlCkBAIC01LDYgKzUs
OCBAQCBsaXN0KEFQUEVORCBXVEZfU09VUkNFUwogICAgIGdlbmVyaWMvUnVuTG9vcEdlbmVyaWMu
Y3BwCiAgICAgZ2VuZXJpYy9Xb3JrUXVldWVHZW5lcmljLmNwcAogCisgICAgcG9zaXgvRmlsZVN5
c3RlbVBPU0lYLmNwcAorCiAgICAgdGV4dC91bml4L1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJ
Q1VVbml4LmNwcAogCiAgICAgdW5peC9DUFVUaW1lVW5peC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL1BsYXRmb3JtV1BFLmNtYWtlIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1XUEUu
Y21ha2UKaW5kZXggNDczY2ZkNjAyNmIwNjUyYzJmMDJkMmIyODUzOTJiMWQ4MDJmMGJiYy4uMDg2
YWRkM2FhOTE5ZmM0OTIzOWQ3MWMxY2M4Njg1YzVmYzczOWJkNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvUGxhdGZvcm1XUEUuY21ha2UKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1X
UEUuY21ha2UKQEAgLTE2LDYgKzE2LDcgQEAgbGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKICAgICBn
ZW5lcmljL01haW5UaHJlYWRHZW5lcmljLmNwcAogICAgIGdlbmVyaWMvV29ya1F1ZXVlR2VuZXJp
Yy5jcHAKIAorICAgIGdsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCiAgICAgZ2xpYi9HTGliVXRpbGl0
aWVzLmNwcAogICAgIGdsaWIvR1JlZlB0ci5jcHAKICAgICBnbGliL1J1bkxvb3BHTGliLmNwcApA
QCAtNDAsNSArNDEsNiBAQCBsaXN0KEFQUEVORCBXVEZfTElCUkFSSUVTCiApCiAKIGxpc3QoQVBQ
RU5EIFdURl9TWVNURU1fSU5DTFVERV9ESVJFQ1RPUklFUworICAgICR7R0lPX1VOSVhfSU5DTFVE
RV9ESVJTfQogICAgICR7R0xJQl9JTkNMVURFX0RJUlN9CiApCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9QbGF0Zm9ybVdpbi5jbWFrZSBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV2luLmNt
YWtlCmluZGV4IDJiOGI1ZjgyNzBlYjVmMjQ2NzYwNzJkZDEyNDU3NmRhOTMwMWYwZWEuLmI2YzBh
YzZmNGRlNWUwNWYyN2Q0ZDlhYzBmZmJkNWNjNDA5N2E2ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtV2luLmNtYWtlCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV2lu
LmNtYWtlCkBAIC0xMiwxNCArMTIsMjAgQEAgbGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKIAogICAg
IHdpbi9DUFVUaW1lV2luLmNwcAogICAgIHdpbi9EYmdIZWxwZXJXaW4uY3BwCisgICAgd2luL0Zp
bGVTeXN0ZW1XaW4uY3BwCiAgICAgd2luL0xhbmd1YWdlV2luLmNwcAogICAgIHdpbi9NYWluVGhy
ZWFkV2luLmNwcAogICAgIHdpbi9NZW1vcnlGb290cHJpbnRXaW4uY3BwCiAgICAgd2luL01lbW9y
eVByZXNzdXJlSGFuZGxlcldpbi5jcHAKKyAgICB3aW4vUGF0aFdhbGtlci5jcHAKICAgICB3aW4v
UnVuTG9vcFdpbi5jcHAKICAgICB3aW4vV29ya1F1ZXVlV2luLmNwcAogKQogCitsaXN0KEFQUEVO
RCBXVEZfTElCUkFSSUVTCisgICAgc2hsd2FwaQorKQorCiBpZiAoVVNFX0NGKQogICAgIGxpc3Qo
QVBQRU5EIFdURl9QVUJMSUNfSEVBREVSUwogICAgICAgICBjZi9DRlVSTEV4dHJhcy5oCkBAIC0y
OSw2ICszNSw3IEBAIGlmIChVU0VfQ0YpCiAgICAgKQogICAgIGxpc3QoQVBQRU5EIFdURl9TT1VS
Q0VTCiAgICAgICAgIGNmL0NGVVJMRXh0cmFzLmNwcAorICAgICAgICBjZi9GaWxlU3lzdGVtQ0Yu
Y3BwCiAgICAgICAgIGNmL1VSTENGLmNwcAogCiAgICAgICAgIHRleHQvY2YvQXRvbWljU3RyaW5n
SW1wbENGLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY2YvRmlsZVN5c3RlbUNGLmNw
cCBiL1NvdXJjZS9XVEYvd3RmL2NmL0ZpbGVTeXN0ZW1DRi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzEyZDY1
ZmNhZDI5NmIzOTYzZjYwYTQ0OTRiNmQ3ZTkyZDRhYzUwYwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL2NmL0ZpbGVTeXN0ZW1DRi5jcHAKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAwNywgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMu
ICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZy
b20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KKworI2luY2x1ZGUgPENvcmVG
b3VuZGF0aW9uL0NGU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
KworbmFtZXNwYWNlIFdURiB7CisKK0NTdHJpbmcgRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IGNmU3RyaW5nID0gcGF0aC5jcmVhdGVDRlN0cmluZygpOworCisgICAgaWYgKCFjZlN0cmlu
ZykKKyAgICAgICAgcmV0dXJuIENTdHJpbmcoKTsKKworICAgIENGSW5kZXggc2l6ZSA9IENGU3Ry
aW5nR2V0TWF4aW11bVNpemVPZkZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjZlN0cmluZy5nZXQo
KSk7CisKKyAgICBWZWN0b3I8Y2hhcj4gYnVmZmVyKHNpemUpOworCisgICAgaWYgKCFDRlN0cmlu
Z0dldEZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjZlN0cmluZy5nZXQoKSwgYnVmZmVyLmRhdGEo
KSwgYnVmZmVyLnNpemUoKSkpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZ2V0IGZp
bGVzeXN0ZW0gcmVwcmVzZW50YXRpb24gdG8gY3JlYXRlIENTdHJpbmcgZnJvbSBjZlN0cmluZyIp
OworICAgICAgICByZXR1cm4gQ1N0cmluZygpOworICAgIH0KKworICAgIHJldHVybiBDU3RyaW5n
KGJ1ZmZlci5kYXRhKCksIHN0cmxlbihidWZmZXIuZGF0YSgpKSk7Cit9CisKK1N0cmluZyBGaWxl
U3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IGNoYXIqIGZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbikKK3sKKyAgICByZXR1cm4gYWRvcHRDRihDRlN0cmluZ0Ny
ZWF0ZVdpdGhGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oa0NGQWxsb2NhdG9yRGVmYXVsdCwgZmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKSkuZ2V0KCk7Cit9CisKK1JldGFpblB0cjxDRlVSTFJlZj4g
RmlsZVN5c3RlbTo6cGF0aEFzVVJMKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBDRlVSTFBh
dGhTdHlsZSBwYXRoU3R5bGU7CisjaWYgUExBVEZPUk0oV0lOKQorICAgIHBhdGhTdHlsZSA9IGtD
RlVSTFdpbmRvd3NQYXRoU3R5bGU7CisjZWxzZQorICAgIHBhdGhTdHlsZSA9IGtDRlVSTFBPU0lY
UGF0aFN0eWxlOworI2VuZGlmCisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoRmls
ZVN5c3RlbVBhdGgoMCwgcGF0aC5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBwYXRoU3R5bGUsIEZB
TFNFKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tIGIvU291cmNlL1dURi93dGYvY29jb2EvRmlsZVN5
c3RlbUNvY29hLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIzODU3NDY5Y2UwNDY5NmJhYWEzMjYzNzQzOGQxMzE2
NmJmMDRmZjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9GaWxlU3lz
dGVtQ29jb2EubW0KQEAgLTAsMCArMSwxNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDct
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5h
bWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgPHd0
Zi9GaWxlU3lzdGVtLmg+CisKK0BpbnRlcmZhY2UgV1RGV2ViRmlsZU1hbmFnZXJEZWxlZ2F0ZSA6
IE5TT2JqZWN0IDxOU0ZpbGVNYW5hZ2VyRGVsZWdhdGU+CitAZW5kCisKK0BpbXBsZW1lbnRhdGlv
biBXVEZXZWJGaWxlTWFuYWdlckRlbGVnYXRlCisKKy0gKEJPT0wpZmlsZU1hbmFnZXI6KE5TRmls
ZU1hbmFnZXIgKilmaWxlTWFuYWdlciBzaG91bGRQcm9jZWVkQWZ0ZXJFcnJvcjooTlNFcnJvciAq
KWVycm9yIG1vdmluZ0l0ZW1BdFVSTDooTlNVUkwgKilzcmNVUkwgdG9VUkw6KE5TVVJMICopZHN0
VVJMCit7CisgICAgVU5VU0VEX1BBUkFNKGZpbGVNYW5hZ2VyKTsKKyAgICBVTlVTRURfUEFSQU0o
c3JjVVJMKTsKKyAgICBVTlVTRURfUEFSQU0oZHN0VVJMKTsKKyAgICByZXR1cm4gZXJyb3IuY29k
ZSA9PSBOU0ZpbGVXcml0ZUZpbGVFeGlzdHNFcnJvcjsKK30KKworQGVuZAorCituYW1lc3BhY2Ug
V1RGIHsKKworbmFtZXNwYWNlIEZpbGVTeXN0ZW0geworCitTdHJpbmcgaG9tZURpcmVjdG9yeVBh
dGgoKQoreworICAgIHJldHVybiBOU0hvbWVEaXJlY3RvcnkoKTsKK30KKworU3RyaW5nIG9wZW5U
ZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHBs
YXRmb3JtRmlsZUhhbmRsZSkKK3sKKyAgICBwbGF0Zm9ybUZpbGVIYW5kbGUgPSBpbnZhbGlkUGxh
dGZvcm1GaWxlSGFuZGxlOworCisgICAgVmVjdG9yPGNoYXI+IHRlbXBvcmFyeUZpbGVQYXRoKFBB
VEhfTUFYKTsKKyAgICBpZiAoIWNvbmZzdHIoX0NTX0RBUldJTl9VU0VSX1RFTVBfRElSLCB0ZW1w
b3JhcnlGaWxlUGF0aC5kYXRhKCksIHRlbXBvcmFyeUZpbGVQYXRoLnNpemUoKSkpCisgICAgICAg
IHJldHVybiBTdHJpbmcoKTsKKworICAgIC8vIFNocmluayB0aGUgdmVjdG9yLgorICAgIHRlbXBv
cmFyeUZpbGVQYXRoLnNocmluayhzdHJsZW4odGVtcG9yYXJ5RmlsZVBhdGguZGF0YSgpKSk7CisK
KyAgICAvLyBGSVhNRTogQ2hhbmdlIHRvIGEgcnVudGltZSBhc3NlcnRpb24gdGhhdCB0aGUgcGF0
aCBlbmRzIHdpdGggYSBzbGFzaCBvbmNlIDxyZGFyOi8vcHJvYmxlbS8yMzU3OTA3Nz4gaXMKKyAg
ICAvLyBmaXhlZCBpbiBhbGwgaU9TIFNpbXVsYXRvciB2ZXJzaW9ucyB0aGF0IHdlIHVzZS4KKyAg
ICBpZiAodGVtcG9yYXJ5RmlsZVBhdGgubGFzdCgpICE9ICcvJykKKyAgICAgICAgdGVtcG9yYXJ5
RmlsZVBhdGguYXBwZW5kKCcvJyk7CisKKyAgICAvLyBBcHBlbmQgdGhlIGZpbGUgbmFtZS4KKyAg
ICBDU3RyaW5nIHByZWZpeFV0ZjggPSBwcmVmaXgudXRmOCgpOworICAgIHRlbXBvcmFyeUZpbGVQ
YXRoLmFwcGVuZChwcmVmaXhVdGY4LmRhdGEoKSwgcHJlZml4VXRmOC5sZW5ndGgoKSk7CisgICAg
dGVtcG9yYXJ5RmlsZVBhdGguYXBwZW5kKCJYWFhYWFgiLCA2KTsKKyAgICB0ZW1wb3JhcnlGaWxl
UGF0aC5hcHBlbmQoJ1wwJyk7CisKKyAgICBwbGF0Zm9ybUZpbGVIYW5kbGUgPSBta3N0ZW1wKHRl
bXBvcmFyeUZpbGVQYXRoLmRhdGEoKSk7CisgICAgaWYgKHBsYXRmb3JtRmlsZUhhbmRsZSA9PSBp
bnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAg
ICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOCh0ZW1wb3JhcnlGaWxlUGF0aC5kYXRhKCkpOworfQor
Citib29sIG1vdmVGaWxlKGNvbnN0IFN0cmluZyYgb2xkUGF0aCwgY29uc3QgU3RyaW5nJiBuZXdQ
YXRoKQoreworICAgIC8vIE92ZXJ3cml0ZSBleGlzdGluZyBmaWxlcy4KKyAgICBhdXRvIG1hbmFn
ZXIgPSBhZG9wdE5TKFtbTlNGaWxlTWFuYWdlciBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gZGVs
ZWdhdGUgPSBhZG9wdE5TKFtbV1RGV2ViRmlsZU1hbmFnZXJEZWxlZ2F0ZSBhbGxvY10gaW5pdF0p
OworICAgIFttYW5hZ2VyIHNldERlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKworICAgIE5TRXJy
b3IgKmVycm9yID0gbmlsOworICAgIGJvb2wgc3VjY2VzcyA9IFttYW5hZ2VyIG1vdmVJdGVtQXRV
Ukw6W05TVVJMIGZpbGVVUkxXaXRoUGF0aDpvbGRQYXRoXSB0b1VSTDpbTlNVUkwgZmlsZVVSTFdp
dGhQYXRoOm5ld1BhdGhdIGVycm9yOiZlcnJvcl07CisgICAgaWYgKCFzdWNjZXNzKQorICAgICAg
ICBOU0xvZyhAIkVycm9yIGluIG1vdmVGaWxlOiAlQCIsIGVycm9yKTsKKyAgICByZXR1cm4gc3Vj
Y2VzczsKK30KKworYm9vbCBnZXRWb2x1bWVGcmVlU3BhY2UoY29uc3QgU3RyaW5nJiBwYXRoLCB1
aW50NjRfdCYgZnJlZVNwYWNlKQoreworICAgIE5TRGljdGlvbmFyeSAqZmlsZVN5c3RlbUF0dHJp
YnV0ZXNEaWN0aW9uYXJ5ID0gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBhdHRyaWJ1
dGVzT2ZGaWxlU3lzdGVtRm9yUGF0aDooTlNTdHJpbmcgKilwYXRoIGVycm9yOk5VTExdOworICAg
IGlmICghZmlsZVN5c3RlbUF0dHJpYnV0ZXNEaWN0aW9uYXJ5KQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgZnJlZVNwYWNlID0gW1tmaWxlU3lzdGVtQXR0cmlidXRlc0RpY3Rpb25hcnkgb2Jq
ZWN0Rm9yS2V5Ok5TRmlsZVN5c3RlbUZyZWVTaXplXSB1bnNpZ25lZExvbmdMb25nVmFsdWVdOwor
ICAgIHJldHVybiB0cnVlOworfQorCitOU1N0cmluZyAqY3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5
KE5TU3RyaW5nICpkaXJlY3RvcnlQcmVmaXgpCit7CisgICAgTlNTdHJpbmcgKnRlbXBEaXJlY3Rv
cnkgPSBOU1RlbXBvcmFyeURpcmVjdG9yeSgpOworICAgIGlmICghdGVtcERpcmVjdG9yeSB8fCAh
W3RlbXBEaXJlY3RvcnkgbGVuZ3RoXSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIGlmICgh
ZGlyZWN0b3J5UHJlZml4IHx8ICFbZGlyZWN0b3J5UHJlZml4IGxlbmd0aF0pCisgICAgICAgIHJl
dHVybiBuaWw7CisKKyAgICBOU1N0cmluZyAqdGVtcERpcmVjdG9yeUNvbXBvbmVudCA9IFtkaXJl
Y3RvcnlQcmVmaXggc3RyaW5nQnlBcHBlbmRpbmdTdHJpbmc6QCItWFhYWFhYWFgiXTsKKyAgICBj
b25zdCBjaGFyKiB0ZW1wRGlyZWN0b3J5Q1N0cmluZyA9IFtbdGVtcERpcmVjdG9yeSBzdHJpbmdC
eUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6dGVtcERpcmVjdG9yeUNvbXBvbmVudF0gZmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uXTsKKyAgICBpZiAoIXRlbXBEaXJlY3RvcnlDU3RyaW5nKQorICAgICAg
ICByZXR1cm4gbmlsOworCisgICAgY29uc3Qgc2l6ZV90IGxlbmd0aCA9IHN0cmxlbih0ZW1wRGly
ZWN0b3J5Q1N0cmluZyk7CisgICAgQVNTRVJUKGxlbmd0aCA8PSBNQVhQQVRITEVOKTsKKyAgICBp
ZiAobGVuZ3RoID4gTUFYUEFUSExFTikKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIGNvbnN0
IHNpemVfdCBsZW5ndGhQbHVzTnVsbFRlcm1pbmF0b3IgPSBsZW5ndGggKyAxOworICAgIFZlY3Rv
cjxjaGFyLCBNQVhQQVRITEVOICsgMT4gcGF0aChsZW5ndGhQbHVzTnVsbFRlcm1pbmF0b3IpOwor
ICAgIG1lbWNweShwYXRoLmRhdGEoKSwgdGVtcERpcmVjdG9yeUNTdHJpbmcsIGxlbmd0aFBsdXNO
dWxsVGVybWluYXRvcik7CisKKyAgICBpZiAoIW1rZHRlbXAocGF0aC5kYXRhKCkpKQorICAgICAg
ICByZXR1cm4gbmlsOworCisgICAgcmV0dXJuIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdl
cl0gc3RyaW5nV2l0aEZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbjpwYXRoLmRhdGEoKSBsZW5ndGg6
bGVuZ3RoXTsKK30KKworYm9vbCBkZWxldGVOb25FbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcm
IHBhdGgpCit7CisgICAgcmV0dXJuIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gcmVt
b3ZlSXRlbUF0UGF0aDpwYXRoIGVycm9yOm5pbF07Cit9CisKK30gLy8gbmFtZXNwYWNlIEZpbGVT
eXN0ZW0KK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvZ2xp
Yi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGli
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yZmY2YmQzZmE1NDgyYTVhMGY4NDBjOTY3ODQyYzQ1YjhhZTEyMmNm
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5j
cHAKQEAgLTAsMCArMSw0NjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDkgSG9s
Z2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIKKyAqIENvcHlyaWdodCAoQykgMjAwOCBDb2xsYWJvcmEs
IEx0ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTAgTW90b3JvbGEgTW9iaWxpdHksIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICog
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDx3
dGYvRmlsZVN5c3RlbS5oPgorCisjaW5jbHVkZSA8Z2lvL2dmaWxlZGVzY3JpcHRvcmJhc2VkLmg+
CisjaW5jbHVkZSA8Z2lvL2dpby5oPgorI2luY2x1ZGUgPGdsaWIuaD4KKyNpbmNsdWRlIDxnbGli
L2dzdGRpby5oPgorI2luY2x1ZGUgPHN5cy9maWxlLmg+CisjaW5jbHVkZSA8d3RmL0VudW1UcmFp
dHMuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZU1ldGFkYXRhLmg+CisjaW5jbHVkZSA8d3RmL1VVSUQu
aD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HTGliVXRpbGl0aWVzLmg+CisjaW5jbHVkZSA8d3RmL2ds
aWIvR1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV1RGIHsKKwor
bmFtZXNwYWNlIEZpbGVTeXN0ZW0geworCisvKiBPbiBsaW51eCBmaWxlIG5hbWVzIGFyZSBqdXN0
IHJhdyBieXRlcywgc28gYWxzbyBzdHJpbmdzIHRoYXQgY2Fubm90IGJlIGVuY29kZWQgaW4gYW55
IHdheQorICogYXJlIHZhbGlkIGZpbGUgbmFtZXMuIFRoaXMgbWVhbiB0aGF0IHdlIGNhbm5vdCBq
dXN0IHN0b3JlIGEgZmlsZSBuYW1lIGFzLWlzIGluIGEgU3RyaW5nCisgKiBidXQgd2UgaGF2ZSB0
byBlc2NhcGUgaXQuCisgKiBPbiBXaW5kb3dzIHRoZSBHTGliIGZpbGUgbmFtZSBlbmNvZGluZyBp
cyBhbHdheXMgVVRGLTggc28gd2UgY2FuIG9wdGltaXplIHRoaXMgY2FzZS4gKi8KK1N0cmluZyBz
dHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IGNoYXIqIGZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbikKK3sKKyAgICBpZiAoIWZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbikKKyAg
ICAgICAgcmV0dXJuIFN0cmluZygpOworCisjaWYgT1MoV0lORE9XUykKKyAgICByZXR1cm4gU3Ry
aW5nOjpmcm9tVVRGOChmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24pOworI2Vsc2UKKyAgICBHVW5p
cXVlUHRyPGdjaGFyPiBlc2NhcGVkU3RyaW5nKGdfdXJpX2VzY2FwZV9zdHJpbmcoZmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uLCAiLzoiLCBGQUxTRSkpOworICAgIHJldHVybiBlc2NhcGVkU3RyaW5n
LmdldCgpOworI2VuZGlmCit9CisKK3N0YXRpYyBHVW5pcXVlUHRyPGNoYXI+IHVuZXNjYXBlZEZp
bGVuYW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBpZiAocGF0aC5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworI2lmIE9TKFdJTkRPV1MpCisgICAgcmV0dXJuIEdVbmlx
dWVQdHI8Y2hhcj4oZ19zdHJkdXAocGF0aC51dGY4KCkuZGF0YSgpKSk7CisjZWxzZQorICAgIHJl
dHVybiBHVW5pcXVlUHRyPGNoYXI+KGdfdXJpX3VuZXNjYXBlX3N0cmluZyhwYXRoLnV0ZjgoKS5k
YXRhKCksIG51bGxwdHIpKTsKKyNlbmRpZgorfQorCitDU3RyaW5nIGZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihjb25zdCBTdHJpbmcmIHBhdGgpCit7CisjaWYgT1MoV0lORE9XUykKKyAgICByZXR1
cm4gcGF0aC51dGY4KCk7CisjZWxzZQorICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0g
dW5lc2NhcGVkRmlsZW5hbWUocGF0aCk7CisgICAgcmV0dXJuIGZpbGVuYW1lLmdldCgpOworI2Vu
ZGlmCit9CisKKy8vIENvbnZlcnRzIGEgc3RyaW5nIHRvIHNvbWV0aGluZyBzdWl0YWJsZSB0byBi
ZSBkaXNwbGF5ZWQgdG8gdGhlIHVzZXIuCitTdHJpbmcgZmlsZW5hbWVGb3JEaXNwbGF5KGNvbnN0
IFN0cmluZyYgc3RyaW5nKQoreworI2lmIE9TKFdJTkRPV1MpCisgICAgcmV0dXJuIHN0cmluZzsK
KyNlbHNlCisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFt
ZShzdHJpbmcpOworICAgIGlmICghZmlsZW5hbWUpCisgICAgICAgIHJldHVybiBzdHJpbmc7CisK
KyAgICBHVW5pcXVlUHRyPGdjaGFyPiBkaXNwbGF5KGdfZmlsZW5hbWVfdG9fdXRmOChmaWxlbmFt
ZS5nZXQoKSwgLTEsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpKTsKKyAgICBpZiAoIWRpc3Bs
YXkpCisgICAgICAgIHJldHVybiBzdHJpbmc7CisKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRG
OChkaXNwbGF5LmdldCgpKTsKKyNlbmRpZgorfQorCitib29sIGZpbGVFeGlzdHMoY29uc3QgU3Ry
aW5nJiBwYXRoKQoreworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2NhcGVk
RmlsZW5hbWUocGF0aCk7CisgICAgcmV0dXJuIGZpbGVuYW1lID8gZ19maWxlX3Rlc3QoZmlsZW5h
bWUuZ2V0KCksIEdfRklMRV9URVNUX0VYSVNUUykgOiBmYWxzZTsKK30KKworYm9vbCBkZWxldGVG
aWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFt
ZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGgpOworICAgIHJldHVybiBmaWxlbmFtZSA/IGdfcmVt
b3ZlKGZpbGVuYW1lLmdldCgpKSAhPSAtMSA6IGZhbHNlOworfQorCitib29sIGRlbGV0ZUVtcHR5
RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBm
aWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGgpOworICAgIHJldHVybiBmaWxlbmFtZSA/
IGdfcm1kaXIoZmlsZW5hbWUuZ2V0KCkpICE9IC0xIDogZmFsc2U7Cit9CisKK3N0YXRpYyBib29s
IGdldEZpbGVTdGF0KGNvbnN0IFN0cmluZyYgcGF0aCwgR1N0YXRCdWYqIHN0YXRCdWZmZXIpCit7
CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShwYXRo
KTsKKyAgICBpZiAoIWZpbGVuYW1lKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1
cm4gZ19zdGF0KGZpbGVuYW1lLmdldCgpLCBzdGF0QnVmZmVyKSAhPSAtMTsKK30KKworc3RhdGlj
IGJvb2wgZ2V0RmlsZUxTdGF0KGNvbnN0IFN0cmluZyYgcGF0aCwgR1N0YXRCdWYqIHN0YXRCdWZm
ZXIpCit7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFt
ZShwYXRoKTsKKyAgICBpZiAoIWZpbGVuYW1lKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICByZXR1cm4gZ19sc3RhdChmaWxlbmFtZS5nZXQoKSwgc3RhdEJ1ZmZlcikgIT0gLTE7Cit9CisK
K2Jvb2wgZ2V0RmlsZVNpemUoY29uc3QgU3RyaW5nJiBwYXRoLCBsb25nIGxvbmcmIHJlc3VsdFNp
emUpCit7CisgICAgR1N0YXRCdWYgc3RhdFJlc3VsdDsKKyAgICBpZiAoIWdldEZpbGVTdGF0KHBh
dGgsICZzdGF0UmVzdWx0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmVzdWx0U2l6
ZSA9IHN0YXRSZXN1bHQuc3Rfc2l6ZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBnZXRG
aWxlU2l6ZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBsb25nIGxvbmcmIHJlc3VsdFNpemUp
Cit7CisgICAgYXV0byBpbmZvID0gZ19maWxlX2lvX3N0cmVhbV9xdWVyeV9pbmZvKGhhbmRsZSwg
R19GSUxFX0FUVFJJQlVURV9TVEFOREFSRF9TSVpFLCBudWxscHRyLCBudWxscHRyKTsKKyAgICBp
ZiAoIWluZm8pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJlc3VsdFNpemUgPSBnX2Zp
bGVfaW5mb19nZXRfc2l6ZShpbmZvKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworT3B0aW9uYWw8
V2FsbFRpbWU+IGdldEZpbGVDcmVhdGlvblRpbWUoY29uc3QgU3RyaW5nJikKK3sKKyAgICAvLyBG
SVhNRTogSXMgdGhlcmUgYSB3YXkgdG8gcmV0cmlldmUgZmlsZSBjcmVhdGlvbiB0aW1lIHdpdGgg
R3RrIG9uIHBsYXRmb3JtcyB0aGF0IHN1cHBvcnQgaXQ/CisgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKK30KKworT3B0aW9uYWw8V2FsbFRpbWU+IGdldEZpbGVNb2RpZmljYXRpb25UaW1lKGNvbnN0
IFN0cmluZyYgcGF0aCkKK3sKKyAgICBHU3RhdEJ1ZiBzdGF0UmVzdWx0OworICAgIGlmICghZ2V0
RmlsZVN0YXQocGF0aCwgJnN0YXRSZXN1bHQpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworCisgICAgcmV0dXJuIFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhzdGF0UmVzdWx0LnN0X210
aW1lKTsKK30KKworc3RhdGljIEZpbGVNZXRhZGF0YTo6VHlwZSB0b0ZpbGVNZXRhdGFUeXBlKEdT
dGF0QnVmIHN0YXRSZXN1bHQpCit7CisgICAgaWYgKFNfSVNESVIoc3RhdFJlc3VsdC5zdF9tb2Rl
KSkKKyAgICAgICAgcmV0dXJuIEZpbGVNZXRhZGF0YTo6VHlwZTo6RGlyZWN0b3J5OworICAgIGlm
IChTX0lTTE5LKHN0YXRSZXN1bHQuc3RfbW9kZSkpCisgICAgICAgIHJldHVybiBGaWxlTWV0YWRh
dGE6OlR5cGU6OlN5bWJvbGljTGluazsKKyAgICByZXR1cm4gRmlsZU1ldGFkYXRhOjpUeXBlOjpG
aWxlOworfQorCitzdGF0aWMgT3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGFVc2lu
Z0Z1bmN0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCwgYm9vbCAoKnN0YXRGdW5jKShjb25zdCBTdHJp
bmcmLCBHU3RhdEJ1ZiopKQoreworICAgIEdTdGF0QnVmIHN0YXRSZXN1bHQ7CisgICAgaWYgKCFz
dGF0RnVuYyhwYXRoLCAmc3RhdFJlc3VsdCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisKKyAgICBTdHJpbmcgZmlsZW5hbWUgPSBwYXRoR2V0RmlsZU5hbWUocGF0aCk7CisgICAgYm9v
bCBpc0hpZGRlbiA9ICFmaWxlbmFtZS5pc0VtcHR5KCkgJiYgZmlsZW5hbWVbMF0gPT0gJy4nOwor
CisgICAgcmV0dXJuIEZpbGVNZXRhZGF0YSB7CisgICAgICAgIFdhbGxUaW1lOjpmcm9tUmF3U2Vj
b25kcyhzdGF0UmVzdWx0LnN0X210aW1lKSwKKyAgICAgICAgc3RhdFJlc3VsdC5zdF9zaXplLAor
ICAgICAgICBpc0hpZGRlbiwKKyAgICAgICAgdG9GaWxlTWV0YXRhVHlwZShzdGF0UmVzdWx0KQor
ICAgIH07Cit9CisKK09wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhKGNvbnN0IFN0
cmluZyYgcGF0aCkKK3sKKyAgICByZXR1cm4gZmlsZU1ldGFkYXRhVXNpbmdGdW5jdGlvbihwYXRo
LCAmZ2V0RmlsZUxTdGF0KTsKK30KKworT3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRh
dGFGb2xsb3dpbmdTeW1saW5rcyhjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgcmV0dXJuIGZp
bGVNZXRhZGF0YVVzaW5nRnVuY3Rpb24ocGF0aCwgJmdldEZpbGVTdGF0KTsKK30KKworU3RyaW5n
IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmlu
ZyYgY29tcG9uZW50KQoreworICAgIGlmIChwYXRoLmVuZHNXaXRoKEdfRElSX1NFUEFSQVRPUl9T
KSkKKyAgICAgICAgcmV0dXJuIHBhdGggKyBjb21wb25lbnQ7CisgICAgcmV0dXJuIHBhdGggKyBH
X0RJUl9TRVBBUkFUT1JfUyArIGNvbXBvbmVudDsKK30KKworU3RyaW5nIHBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudHMoU3RyaW5nVmlldyBwYXRoLCBjb25zdCBWZWN0b3I8U3RyaW5nVmlldz4mIGNv
bXBvbmVudHMpCit7CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIuYXBw
ZW5kKHBhdGgpOworICAgIGZvciAoYXV0byYgY29tcG9uZW50IDogY29tcG9uZW50cykgeworICAg
ICAgICBidWlsZGVyLmFwcGVuZChHX0RJUl9TRVBBUkFUT1JfUyk7CisgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKGNvbXBvbmVudCk7CisgICAgfQorICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7
Cit9CisKK2Jvb2wgbWFrZUFsbERpcmVjdG9yaWVzKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAg
ICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGgpOwor
ICAgIHJldHVybiBmaWxlbmFtZSA/IGdfbWtkaXJfd2l0aF9wYXJlbnRzKGZpbGVuYW1lLmdldCgp
LCBTX0lSV1hVKSAhPSAtMSA6IGZhbHNlOworfQorCitTdHJpbmcgaG9tZURpcmVjdG9yeVBhdGgo
KQoreworICAgIHJldHVybiBzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGdfZ2V0
X2hvbWVfZGlyKCkpOworfQorCitib29sIGNyZWF0ZVN5bWJvbGljTGluayhjb25zdCBTdHJpbmcm
IHRhcmdldFBhdGgsIGNvbnN0IFN0cmluZyYgc3ltYm9saWNMaW5rUGF0aCkKK3sKKyAgICBDU3Ry
aW5nIHRhcmdldFBhdGhGU1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih0YXJnZXRQYXRo
KTsKKyAgICBpZiAoIXRhcmdldFBhdGhGU1JlcC5kYXRhKCkgfHwgdGFyZ2V0UGF0aEZTUmVwLmRh
dGEoKVswXSA9PSAnXDAnKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBDU3RyaW5nIHN5
bWJvbGljTGlua1BhdGhGU1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihzeW1ib2xpY0xp
bmtQYXRoKTsKKyAgICBpZiAoIXN5bWJvbGljTGlua1BhdGhGU1JlcC5kYXRhKCkgfHwgc3ltYm9s
aWNMaW5rUGF0aEZTUmVwLmRhdGEoKVswXSA9PSAnXDAnKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICByZXR1cm4gIXN5bWxpbmsodGFyZ2V0UGF0aEZTUmVwLmRhdGEoKSwgc3ltYm9saWNM
aW5rUGF0aEZTUmVwLmRhdGEoKSk7Cit9CisKK1N0cmluZyBwYXRoR2V0RmlsZU5hbWUoY29uc3Qg
U3RyaW5nJiBwYXRoTmFtZSkKK3sKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiB0bXBGaWxlbmFtZSA9
IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGhOYW1lKTsKKyAgICBpZiAoIXRtcEZpbGVuYW1lKQorICAg
ICAgICByZXR1cm4gcGF0aE5hbWU7CisKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBiYXNlTmFtZShn
X3BhdGhfZ2V0X2Jhc2VuYW1lKHRtcEZpbGVuYW1lLmdldCgpKSk7CisgICAgcmV0dXJuIFN0cmlu
Zzo6ZnJvbVVURjgoYmFzZU5hbWUuZ2V0KCkpOworfQorCitib29sIGdldFZvbHVtZUZyZWVTcGFj
ZShjb25zdCBTdHJpbmcmIHBhdGgsIHVpbnQ2NF90JiBmcmVlU3BhY2UpCit7CisgICAgR1VuaXF1
ZVB0cjxnY2hhcj4gZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShwYXRoKTsKKyAgICBpZiAo
IWZpbGVuYW1lKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBHUmVmUHRyPEdGaWxlPiBm
aWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoZmlsZW5hbWUuZ2V0KCkpKTsKKyAg
ICBHUmVmUHRyPEdGaWxlSW5mbz4gZmlsZUluZm8gPSBhZG9wdEdSZWYoZ19maWxlX3F1ZXJ5X2Zp
bGVzeXN0ZW1faW5mbyhmaWxlLmdldCgpLCBHX0ZJTEVfQVRUUklCVVRFX0ZJTEVTWVNURU1fRlJF
RSwgMCwgMCkpOworICAgIGlmICghZmlsZUluZm8pCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGZyZWVTcGFjZSA9IGdfZmlsZV9pbmZvX2dldF9hdHRyaWJ1dGVfdWludDY0KGZpbGVJbmZv
LmdldCgpLCBHX0ZJTEVfQVRUUklCVVRFX0ZJTEVTWVNURU1fRlJFRSk7CisgICAgcmV0dXJuICEh
ZnJlZVNwYWNlOworfQorCitTdHJpbmcgZGlyZWN0b3J5TmFtZShjb25zdCBTdHJpbmcmIHBhdGgp
Cit7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShw
YXRoKTsKKyAgICBpZiAoIWZpbGVuYW1lKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAg
ICBHVW5pcXVlUHRyPGNoYXI+IGRpcm5hbWUoZ19wYXRoX2dldF9kaXJuYW1lKGZpbGVuYW1lLmdl
dCgpKSk7CisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoZGlybmFtZS5nZXQoKSk7Cit9CisK
K1ZlY3RvcjxTdHJpbmc+IGxpc3REaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBT
dHJpbmcmIGZpbHRlcikKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiBlbnRyaWVzOworCisgICAgR1Vu
aXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShwYXRoKTsKKyAgICBp
ZiAoIWZpbGVuYW1lKQorICAgICAgICByZXR1cm4gZW50cmllczsKKworICAgIEdVbmlxdWVQdHI8
R0Rpcj4gZGlyKGdfZGlyX29wZW4oZmlsZW5hbWUuZ2V0KCksIDAsIG51bGxwdHIpKTsKKyAgICBp
ZiAoIWRpcikKKyAgICAgICAgcmV0dXJuIGVudHJpZXM7CisKKyAgICBHVW5pcXVlUHRyPEdQYXR0
ZXJuU3BlYz4gcHNwZWMoZ19wYXR0ZXJuX3NwZWNfbmV3KChmaWx0ZXIudXRmOCgpKS5kYXRhKCkp
KTsKKyAgICB3aGlsZSAoY29uc3QgY2hhciogbmFtZSA9IGdfZGlyX3JlYWRfbmFtZShkaXIuZ2V0
KCkpKSB7CisgICAgICAgIGlmICghZ19wYXR0ZXJuX21hdGNoX3N0cmluZyhwc3BlYy5nZXQoKSwg
bmFtZSkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBHVW5pcXVlUHRyPGdjaGFy
PiBlbnRyeShnX2J1aWxkX2ZpbGVuYW1lKGZpbGVuYW1lLmdldCgpLCBuYW1lLCBudWxscHRyKSk7
CisgICAgICAgIGVudHJpZXMuYXBwZW5kKHN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oZW50cnkuZ2V0KCkpKTsKKyAgICB9CisKKyAgICByZXR1cm4gZW50cmllczsKK30KKworU3Ry
aW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVI
YW5kbGUmIGhhbmRsZSkKK3sKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZShnX3N0cmR1
cF9wcmludGYoIiVzJXMiLCBwcmVmaXgudXRmOCgpLmRhdGEoKSwgY3JlYXRlQ2Fub25pY2FsVVVJ
RFN0cmluZygpLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiB0ZW1wUGF0
aChnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3RtcF9kaXIoKSwgZmlsZW5hbWUuZ2V0KCksIE5VTEwp
KTsKKyAgICBHUmVmUHRyPEdGaWxlPiBmaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3Bh
dGgodGVtcFBhdGguZ2V0KCkpKTsKKworICAgIGhhbmRsZSA9IGdfZmlsZV9jcmVhdGVfcmVhZHdy
aXRlKGZpbGUuZ2V0KCksIEdfRklMRV9DUkVBVEVfTk9ORSwgMCwgMCk7CisgICAgaWYgKCFpc0hh
bmRsZVZhbGlkKGhhbmRsZSkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICByZXR1cm4g
U3RyaW5nOjpmcm9tVVRGOCh0ZW1wUGF0aC5nZXQoKSk7Cit9CisKK1BsYXRmb3JtRmlsZUhhbmRs
ZSBvcGVuRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVPcGVuTW9kZSBtb2RlKQoreworICAg
IEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUocGF0aCk7Cisg
ICAgaWYgKCFmaWxlbmFtZSkKKyAgICAgICAgcmV0dXJuIGludmFsaWRQbGF0Zm9ybUZpbGVIYW5k
bGU7CisKKyAgICBHUmVmUHRyPEdGaWxlPiBmaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9y
X3BhdGgoZmlsZW5hbWUuZ2V0KCkpKTsKKyAgICBHRmlsZUlPU3RyZWFtKiBpb1N0cmVhbSA9IDA7
CisgICAgaWYgKG1vZGUgPT0gRmlsZU9wZW5Nb2RlOjpSZWFkKQorICAgICAgICBpb1N0cmVhbSA9
IGdfZmlsZV9vcGVuX3JlYWR3cml0ZShmaWxlLmdldCgpLCAwLCAwKTsKKyAgICBlbHNlIGlmICht
b2RlID09IEZpbGVPcGVuTW9kZTo6V3JpdGUpIHsKKyAgICAgICAgaWYgKGdfZmlsZV90ZXN0KGZp
bGVuYW1lLmdldCgpLCBzdGF0aWNfY2FzdDxHRmlsZVRlc3Q+KEdfRklMRV9URVNUX0VYSVNUUyB8
IEdfRklMRV9URVNUX0lTX1JFR1VMQVIpKSkKKyAgICAgICAgICAgIGlvU3RyZWFtID0gZ19maWxl
X29wZW5fcmVhZHdyaXRlKGZpbGUuZ2V0KCksIDAsIDApOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBpb1N0cmVhbSA9IGdfZmlsZV9jcmVhdGVfcmVhZHdyaXRlKGZpbGUuZ2V0KCksIEdfRklM
RV9DUkVBVEVfTk9ORSwgMCwgMCk7CisgICAgfQorCisgICAgcmV0dXJuIGlvU3RyZWFtOworfQor
Cit2b2lkIGNsb3NlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKK3sKKyAgICBpZiAo
IWlzSGFuZGxlVmFsaWQoaGFuZGxlKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZ19pb19zdHJl
YW1fY2xvc2UoR19JT19TVFJFQU0oaGFuZGxlKSwgMCwgMCk7CisgICAgZ19vYmplY3RfdW5yZWYo
aGFuZGxlKTsKKyAgICBoYW5kbGUgPSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOworfQorCits
b25nIGxvbmcgc2Vla0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgbG9uZyBsb25nIG9m
ZnNldCwgRmlsZVNlZWtPcmlnaW4gb3JpZ2luKQoreworICAgIEdTZWVrVHlwZSBzZWVrVHlwZSA9
IEdfU0VFS19TRVQ7CisgICAgc3dpdGNoIChvcmlnaW4pIHsKKyAgICBjYXNlIEZpbGVTZWVrT3Jp
Z2luOjpCZWdpbm5pbmc6CisgICAgICAgIHNlZWtUeXBlID0gR19TRUVLX1NFVDsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBGaWxlU2Vla09yaWdpbjo6Q3VycmVudDoKKyAgICAgICAgc2Vla1R5
cGUgPSBHX1NFRUtfQ1VSOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZpbGVTZWVrT3JpZ2lu
OjpFbmQ6CisgICAgICAgIHNlZWtUeXBlID0gR19TRUVLX0VORDsKKyAgICAgICAgYnJlYWs7Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCisgICAg
aWYgKCFnX3NlZWthYmxlX3NlZWsoR19TRUVLQUJMRShnX2lvX3N0cmVhbV9nZXRfaW5wdXRfc3Ry
ZWFtKEdfSU9fU1RSRUFNKGhhbmRsZSkpKSwKKyAgICAgICAgb2Zmc2V0LCBzZWVrVHlwZSwgMCwg
MCkpCisgICAgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHJldHVybiBnX3NlZWth
YmxlX3RlbGwoR19TRUVLQUJMRShnX2lvX3N0cmVhbV9nZXRfaW5wdXRfc3RyZWFtKEdfSU9fU1RS
RUFNKGhhbmRsZSkpKSk7Cit9CisKK2ludCB3cml0ZVRvRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUg
aGFuZGxlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQoreworICAgIGdzaXplIGJ5dGVz
V3JpdHRlbjsKKyAgICBnX291dHB1dF9zdHJlYW1fd3JpdGVfYWxsKGdfaW9fc3RyZWFtX2dldF9v
dXRwdXRfc3RyZWFtKEdfSU9fU1RSRUFNKGhhbmRsZSkpLAorICAgICAgICBkYXRhLCBsZW5ndGgs
ICZieXRlc1dyaXR0ZW4sIDAsIDApOworICAgIHJldHVybiBieXRlc1dyaXR0ZW47Cit9CisKK2lu
dCByZWFkRnJvbUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY2hhciogZGF0YSwgaW50
IGxlbmd0aCkKK3sKKyAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CisgICAgZG8gewor
ICAgICAgICBnc3NpemUgYnl0ZXNSZWFkID0gZ19pbnB1dF9zdHJlYW1fcmVhZChnX2lvX3N0cmVh
bV9nZXRfaW5wdXRfc3RyZWFtKEdfSU9fU1RSRUFNKGhhbmRsZSkpLAorICAgICAgICAgICAgZGF0
YSwgbGVuZ3RoLCAwLCAmZXJyb3Iub3V0UHRyKCkpOworICAgICAgICBpZiAoYnl0ZXNSZWFkID49
IDApCisgICAgICAgICAgICByZXR1cm4gYnl0ZXNSZWFkOworICAgIH0gd2hpbGUgKGVycm9yICYm
IGVycm9yLT5jb2RlID09IEdfRklMRV9FUlJPUl9JTlRSKTsKKyAgICByZXR1cm4gLTE7Cit9CisK
K2Jvb2wgbW92ZUZpbGUoY29uc3QgU3RyaW5nJiBvbGRQYXRoLCBjb25zdCBTdHJpbmcmIG5ld1Bh
dGgpCit7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gb2xkRmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxl
bmFtZShvbGRQYXRoKTsKKyAgICBpZiAoIW9sZEZpbGVuYW1lKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBuZXdGaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVu
YW1lKG5ld1BhdGgpOworICAgIGlmICghbmV3RmlsZW5hbWUpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIEdSZWZQdHI8R0ZpbGU+IG9sZEZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19m
b3JfcGF0aChvbGRGaWxlbmFtZS5nZXQoKSkpOworICAgIEdSZWZQdHI8R0ZpbGU+IG5ld0ZpbGUg
PSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0aChuZXdGaWxlbmFtZS5nZXQoKSkpOworCisg
ICAgcmV0dXJuIGdfZmlsZV9tb3ZlKG9sZEZpbGUuZ2V0KCksIG5ld0ZpbGUuZ2V0KCksIEdfRklM
RV9DT1BZX09WRVJXUklURSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cik7Cit9
CisKK2Jvb2wgaGFyZExpbmtPckNvcHlGaWxlKGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBT
dHJpbmcmIGRlc3RpbmF0aW9uKQoreworI2lmIE9TKFdJTkRPV1MpCisgICAgcmV0dXJuICEhOjpD
b3B5RmlsZShzb3VyY2UuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCksIGRl
c3RpbmF0aW9uLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpLCBUUlVFKTsK
KyNlbHNlCisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gc291cmNlRmlsZW5hbWUgPSB1bmVzY2FwZWRG
aWxlbmFtZShzb3VyY2UpOworICAgIGlmICghc291cmNlRmlsZW5hbWUpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGRlc3RpbmF0aW9uRmlsZW5hbWUgPSB1
bmVzY2FwZWRGaWxlbmFtZShkZXN0aW5hdGlvbik7CisgICAgaWYgKCFkZXN0aW5hdGlvbkZpbGVu
YW1lKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWxpbmsoc291cmNlRmlsZW5h
bWUuZ2V0KCksIGRlc3RpbmF0aW9uRmlsZW5hbWUuZ2V0KCkpKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKworICAgIC8vIEhhcmQgbGluayBmYWlsZWQuIFBlcmZvcm0gYSBjb3B5IGluc3RlYWQuCisg
ICAgR1JlZlB0cjxHRmlsZT4gc291cmNlRmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9w
YXRoKHNvdXJjZUZpbGVuYW1lLmdldCgpKSk7CisgICAgR1JlZlB0cjxHRmlsZT4gZGVzdGluYXRp
b25GaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoZGVzdGluYXRpb25GaWxlbmFt
ZS5nZXQoKSkpOworICAgIHJldHVybiBnX2ZpbGVfY29weShzb3VyY2VGaWxlLmdldCgpLCBkZXN0
aW5hdGlvbkZpbGUuZ2V0KCksIEdfRklMRV9DT1BZX05PTkUsIG51bGxwdHIsIG51bGxwdHIsIG51
bGxwdHIsIG51bGxwdHIpOworI2VuZGlmCit9CisKK09wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVE
ZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCit7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4g
ZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShmc0ZpbGUuZGF0YSgpKTsKKyAgICBpZiAoIWZp
bGVuYW1lKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgR1JlZlB0cjxHRmls
ZT4gZmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKGZpbGVuYW1lLmdldCgpKSk7
CisgICAgR1JlZlB0cjxHRmlsZUluZm8+IGZpbGVJbmZvID0gYWRvcHRHUmVmKGdfZmlsZV9xdWVy
eV9maWxlc3lzdGVtX2luZm8oZmlsZS5nZXQoKSwgR19GSUxFX0FUVFJJQlVURV9VTklYX0RFVklD
RSwgbnVsbHB0ciwgbnVsbHB0cikpOworICAgIGlmICghZmlsZUluZm8pCisgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gZ19maWxlX2luZm9fZ2V0X2F0dHJpYnV0ZV91
aW50MzIoZmlsZUluZm8uZ2V0KCksIEdfRklMRV9BVFRSSUJVVEVfVU5JWF9ERVZJQ0UpOworfQor
CisjaWYgVVNFKEZJTEVfTE9DSykKK2Jvb2wgbG9ja0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhh
bmRsZSwgT3B0aW9uU2V0PEZpbGVMb2NrTW9kZT4gbG9ja01vZGUpCit7CisgICAgQ09NUElMRV9B
U1NFUlQoTE9DS19TSCA9PSBXVEY6OmVudW1Ub1VuZGVybHlpbmdUeXBlKEZpbGVMb2NrTW9kZTo6
U2hhcmVkKSwgTG9ja1NoYXJlZEVuY29kaW5nSXNBc0V4cGVjdGVkKTsKKyAgICBDT01QSUxFX0FT
U0VSVChMT0NLX0VYID09IFdURjo6ZW51bVRvVW5kZXJseWluZ1R5cGUoRmlsZUxvY2tNb2RlOjpF
eGNsdXNpdmUpLCBMb2NrRXhjbHVzaXZlRW5jb2RpbmdJc0FzRXhwZWN0ZWQpOworICAgIENPTVBJ
TEVfQVNTRVJUKExPQ0tfTkIgPT0gV1RGOjplbnVtVG9VbmRlcmx5aW5nVHlwZShGaWxlTG9ja01v
ZGU6Ok5vbmJsb2NraW5nKSwgTG9ja05vbmJsb2NraW5nRW5jb2RpbmdJc0FzRXhwZWN0ZWQpOwor
ICAgIGF1dG8qIGlucHV0U3RyZWFtID0gZ19pb19zdHJlYW1fZ2V0X2lucHV0X3N0cmVhbShHX0lP
X1NUUkVBTShoYW5kbGUpKTsKKyAgICBpbnQgcmVzdWx0ID0gZmxvY2soZ19maWxlX2Rlc2NyaXB0
b3JfYmFzZWRfZ2V0X2ZkKEdfRklMRV9ERVNDUklQVE9SX0JBU0VEKGlucHV0U3RyZWFtKSksIGxv
Y2tNb2RlLnRvUmF3KCkpOworICAgIHJldHVybiByZXN1bHQgIT0gLTE7Cit9CisKK2Jvb2wgdW5s
b2NrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlKQoreworICAgIGF1dG8qIGlucHV0U3Ry
ZWFtID0gZ19pb19zdHJlYW1fZ2V0X2lucHV0X3N0cmVhbShHX0lPX1NUUkVBTShoYW5kbGUpKTsK
KyAgICBpbnQgcmVzdWx0ID0gZmxvY2soZ19maWxlX2Rlc2NyaXB0b3JfYmFzZWRfZ2V0X2ZkKEdf
RklMRV9ERVNDUklQVE9SX0JBU0VEKGlucHV0U3RyZWFtKSksIExPQ0tfVU4pOworICAgIHJldHVy
biByZXN1bHQgIT0gLTE7Cit9CisjZW5kaWYgLy8gVVNFKEZJTEVfTE9DSykKKworfSAvLyBuYW1l
c3BhY2UgRmlsZVN5c3RlbQorfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9tYWMvRmlsZVN5c3RlbU1hYy5tbSBiL1NvdXJjZS9XVEYvd3RmL21hYy9GaWxlU3lz
dGVtTWFjLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkyNjkyYTE2ZmJhNWIxNTI3OGM3NzJmNzU2ZTU1M2ExMTA3
NTVmMmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9tYWMvRmlsZVN5c3RlbU1h
Yy5tbQpAQCAtMCwwICsxLDg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcu
aCIKKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CisKKyNpZiBQTEFURk9STShNQUMpCisKKyNp
bXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oPgorI2ltcG9ydCA8d3RmL3NwaS9tYWMvTWV0
YWRhdGFTUEkuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2Ug
V1RGIHsKKworYm9vbCBGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShjb25zdCBTdHJp
bmcmIHBhdGgpCit7CisgICAgYXV0byBmaWxlTWFuYWdlciA9IGFkb3B0TlMoW1tOU0ZpbGVNYW5h
Z2VyIGFsbG9jXSBpbml0XSk7CisKKyAgICBpZiAoTlNBcnJheSAqZGlyZWN0b3J5Q29udGVudHMg
PSBbZmlsZU1hbmFnZXIgY29udGVudHNPZkRpcmVjdG9yeUF0UGF0aDpwYXRoIGVycm9yOm51bGxw
dHJdKSB7CisgICAgICAgIC8vIEV4cGxpY2l0bHkgbG9vayBmb3IgYW5kIGRlbGV0ZSAuRFNfU3Rv
cmUgZmlsZXMuCisgICAgICAgIGlmIChkaXJlY3RvcnlDb250ZW50cy5jb3VudCA9PSAxICYmIFtk
aXJlY3RvcnlDb250ZW50cy5maXJzdE9iamVjdCBpc0VxdWFsVG9TdHJpbmc6QCIuRFNfU3RvcmUi
XSkKKyAgICAgICAgICAgIFtmaWxlTWFuYWdlciByZW1vdmVJdGVtQXRQYXRoOltwYXRoIHN0cmlu
Z0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpkaXJlY3RvcnlDb250ZW50cy5maXJzdE9iamVjdF0g
ZXJyb3I6bnVsbHB0cl07CisgICAgfQorCisgICAgLy8gcm1kaXIoLi4uKSByZXR1cm5zIDAgb24g
c3VjY2Vzc2Z1bCBkZWxldGlvbiBvZiB0aGUgcGF0aCBhbmQgbm9uLXplcm8gaW4gYW55IG90aGVy
IGNhc2UgKGluY2x1ZGluZyBpbnZhbGlkIHBlcm1pc3Npb25zIG9yIG5vbi1leGlzdGVudCBmaWxl
KQorICAgIHJldHVybiAhcm1kaXIoRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KHBhdGgpLmRhdGEoKSk7Cit9CisKK3ZvaWQgRmlsZVN5c3RlbTo6c2V0TWV0YWRhdGFVUkwoY29u
c3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG1ldGFkYXRhVVJMU3RyaW5nLCBjb25zdCBT
dHJpbmcmIHJlZmVycmVyKQoreworICAgIFN0cmluZyB1cmxTdHJpbmc7CisgICAgaWYgKE5TVVJM
ICp1cmwgPSBVUkxXaXRoVXNlclR5cGVkU3RyaW5nKG1ldGFkYXRhVVJMU3RyaW5nLCBuaWwpKQor
ICAgICAgICB1cmxTdHJpbmcgPSBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKFdURjo6VVJMQnlSZW1v
dmluZ1VzZXJJbmZvKHVybCkpOworICAgIGVsc2UKKyAgICAgICAgdXJsU3RyaW5nID0gbWV0YWRh
dGFVUkxTdHJpbmc7CisKKyAgICAvLyBDYWxsIE1ldGFkYXRhIEFQSSBvbiBhIGJhY2tncm91bmQg
cXVldWUgYmVjYXVzZSBpdCBjYW4gdGFrZSBzb21lIHRpbWUuCisgICAgZGlzcGF0Y2hfYXN5bmMo
ZGlzcGF0Y2hfZ2V0X2dsb2JhbF9xdWV1ZShESVNQQVRDSF9RVUVVRV9QUklPUklUWV9ERUZBVUxU
LCAwKSwgW3BhdGggPSBwYXRoLmlzb2xhdGVkQ29weSgpLCB1cmxTdHJpbmcgPSB1cmxTdHJpbmcu
aXNvbGF0ZWRDb3B5KCksIHJlZmVycmVyID0gcmVmZXJyZXIuaXNvbGF0ZWRDb3B5KCldIHsKKyAg
ICAgICAgYXV0byBpdGVtID0gYWRvcHRDRihNREl0ZW1DcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgcGF0aC5jcmVhdGVDRlN0cmluZygpLmdldCgpKSk7CisgICAgICAgIGlmICghaXRlbSkKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICBhdXRvIHdoZXJlRnJvbUF0dHJpYnV0ZSA9IGFk
b3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhPYmplY3RzOnVybFN0cmluZywg
bmlsXSk7CisgICAgICAgIGlmICghcmVmZXJyZXIuaXNOdWxsKCkpCisgICAgICAgICAgICBbd2hl
cmVGcm9tQXR0cmlidXRlIGFkZE9iamVjdDpyZWZlcnJlcl07CisKKyAgICAgICAgTURJdGVtU2V0
QXR0cmlidXRlKGl0ZW0uZ2V0KCksIGtNREl0ZW1XaGVyZUZyb21zLCAoX19icmlkZ2UgQ0ZBcnJh
eVJlZil3aGVyZUZyb21BdHRyaWJ1dGUuZ2V0KCkpOworICAgICAgICBNREl0ZW1TZXRBdHRyaWJ1
dGUoaXRlbS5nZXQoKSwga01ESXRlbURvd25sb2FkZWREYXRlLCAoX19icmlkZ2UgQ0ZBcnJheVJl
ZilAWyBbTlNEYXRlIGRhdGVdIF0pOworICAgIH0pOworfQorCitib29sIEZpbGVTeXN0ZW06OmNh
bkV4Y2x1ZGVGcm9tQmFja3VwKCkKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBGaWxl
U3lzdGVtOjpleGNsdWRlRnJvbUJhY2t1cChjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgLy8g
SXQgaXMgY3JpdGljYWwgdG8gcGFzcyBGQUxTRSBmb3IgZXhjbHVkZUJ5UGF0aCBiZWNhdXNlIGV4
Y2x1ZGluZyBieSBwYXRoIHJlcXVpcmVzIHJvb3QgcHJpdmlsZWdlcy4KKyAgICBDU0JhY2t1cFNl
dEl0ZW1FeGNsdWRlZChGaWxlU3lzdGVtOjpwYXRoQXNVUkwocGF0aCkuZ2V0KCksIFRSVUUsIEZB
TFNFKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRp
ZiAvLyBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxl
U3lzdGVtUE9TSVguY3BwIGIvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jNjBlY2IxNTg2MzkyMGZhNDM2MWZjMTRkYjhlZTZkM2ZmZTJlNGYwCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNw
cApAQCAtMCwwICsxLDQ5NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0
aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAq
ICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisg
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5
c3RlbS5oPgorCisjaW5jbHVkZSA8ZGlyZW50Lmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNs
dWRlIDxmY250bC5oPgorI2luY2x1ZGUgPGZubWF0Y2guaD4KKyNpbmNsdWRlIDxsaWJnZW4uaD4K
KyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5jbHVkZSA8c3lz
L3N0YXR2ZnMuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4K
KyNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlTWV0YWRhdGEu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3Bh
Y2UgV1RGIHsKKworbmFtZXNwYWNlIEZpbGVTeXN0ZW0geworCitib29sIGZpbGVFeGlzdHMoY29u
c3QgU3RyaW5nJiBwYXRoKQoreworICAgIGlmIChwYXRoLmlzTnVsbCgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KHBhdGgpOworCisgICAgaWYgKCFmc1JlcC5kYXRhKCkgfHwgZnNSZXAuZGF0YSgpWzBdID09ICdc
MCcpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBhY2Nlc3MoZnNSZXAuZGF0
YSgpLCBGX09LKSAhPSAtMTsKK30KKworYm9vbCBkZWxldGVGaWxlKGNvbnN0IFN0cmluZyYgcGF0
aCkKK3sKKyAgICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgp
OworCisgICAgaWYgKCFmc1JlcC5kYXRhKCkgfHwgZnNSZXAuZGF0YSgpWzBdID09ICdcMCcpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIHVubGluayguLi4pIHJldHVybnMgMCBvbiBz
dWNjZXNzZnVsIGRlbGV0aW9uIG9mIHRoZSBwYXRoIGFuZCBub24temVybyBpbiBhbnkgb3RoZXIg
Y2FzZSAoaW5jbHVkaW5nIGludmFsaWQgcGVybWlzc2lvbnMgb3Igbm9uLWV4aXN0ZW50IGZpbGUp
CisgICAgcmV0dXJuICF1bmxpbmsoZnNSZXAuZGF0YSgpKTsKK30KKworUGxhdGZvcm1GaWxlSGFu
ZGxlIG9wZW5GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlIG1vZGUpCit7Cisg
ICAgQ1N0cmluZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKKworICAg
IGlmIChmc1JlcC5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIGludmFsaWRQbGF0Zm9ybUZpbGVI
YW5kbGU7CisKKyAgICBpbnQgcGxhdGZvcm1GbGFnID0gMDsKKyAgICBpZiAobW9kZSA9PSBGaWxl
T3Blbk1vZGU6OlJlYWQpCisgICAgICAgIHBsYXRmb3JtRmxhZyB8PSBPX1JET05MWTsKKyAgICBl
bHNlIGlmIChtb2RlID09IEZpbGVPcGVuTW9kZTo6V3JpdGUpCisgICAgICAgIHBsYXRmb3JtRmxh
ZyB8PSAoT19XUk9OTFkgfCBPX0NSRUFUIHwgT19UUlVOQyk7CisjaWYgT1MoREFSV0lOKQorICAg
IGVsc2UgaWYgKG1vZGUgPT0gRmlsZU9wZW5Nb2RlOjpFdmVudHNPbmx5KQorICAgICAgICBwbGF0
Zm9ybUZsYWcgfD0gT19FVlRPTkxZOworI2VuZGlmCisKKyAgICByZXR1cm4gb3Blbihmc1JlcC5k
YXRhKCksIHBsYXRmb3JtRmxhZywgMDY2Nik7Cit9CisKK3ZvaWQgY2xvc2VGaWxlKFBsYXRmb3Jt
RmlsZUhhbmRsZSYgaGFuZGxlKQoreworICAgIGlmIChpc0hhbmRsZVZhbGlkKGhhbmRsZSkpIHsK
KyAgICAgICAgY2xvc2UoaGFuZGxlKTsKKyAgICAgICAgaGFuZGxlID0gaW52YWxpZFBsYXRmb3Jt
RmlsZUhhbmRsZTsKKyAgICB9Cit9CisKK2xvbmcgbG9uZyBzZWVrRmlsZShQbGF0Zm9ybUZpbGVI
YW5kbGUgaGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0LCBGaWxlU2Vla09yaWdpbiBvcmlnaW4pCit7
CisgICAgaW50IHdoZW5jZSA9IFNFRUtfU0VUOworICAgIHN3aXRjaCAob3JpZ2luKSB7CisgICAg
Y2FzZSBGaWxlU2Vla09yaWdpbjo6QmVnaW5uaW5nOgorICAgICAgICB3aGVuY2UgPSBTRUVLX1NF
VDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGaWxlU2Vla09yaWdpbjo6Q3VycmVudDoKKyAg
ICAgICAgd2hlbmNlID0gU0VFS19DVVI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRmlsZVNl
ZWtPcmlnaW46OkVuZDoKKyAgICAgICAgd2hlbmNlID0gU0VFS19FTkQ7CisgICAgICAgIGJyZWFr
OworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8bG9uZyBsb25nPihsc2VlayhoYW5kbGUsIG9mZnNldCwgd2hl
bmNlKSk7Cit9CisKK2Jvb2wgdHJ1bmNhdGVGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUs
IGxvbmcgbG9uZyBvZmZzZXQpCit7CisgICAgLy8gZnRydW5jYXRlIHJldHVybnMgMCB0byBpbmRp
Y2F0ZSB0aGUgc3VjY2Vzcy4KKyAgICByZXR1cm4gIWZ0cnVuY2F0ZShoYW5kbGUsIG9mZnNldCk7
Cit9CisKK2ludCB3cml0ZVRvRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBjb25zdCBj
aGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQoreworICAgIGRvIHsKKyAgICAgICAgaW50IGJ5dGVzV3Jp
dHRlbiA9IHdyaXRlKGhhbmRsZSwgZGF0YSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5ndGgpKTsK
KyAgICAgICAgaWYgKGJ5dGVzV3JpdHRlbiA+PSAwKQorICAgICAgICAgICAgcmV0dXJuIGJ5dGVz
V3JpdHRlbjsKKyAgICB9IHdoaWxlIChlcnJubyA9PSBFSU5UUik7CisgICAgcmV0dXJuIC0xOwor
fQorCitpbnQgcmVhZEZyb21GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNoYXIqIGRh
dGEsIGludCBsZW5ndGgpCit7CisgICAgZG8geworICAgICAgICBpbnQgYnl0ZXNSZWFkID0gcmVh
ZChoYW5kbGUsIGRhdGEsIHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSk7CisgICAgICAgIGlm
IChieXRlc1JlYWQgPj0gMCkKKyAgICAgICAgICAgIHJldHVybiBieXRlc1JlYWQ7CisgICAgfSB3
aGlsZSAoZXJybm8gPT0gRUlOVFIpOworICAgIHJldHVybiAtMTsKK30KKworI2lmIFVTRShGSUxF
X0xPQ0spCitib29sIGxvY2tGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIE9wdGlvblNl
dDxGaWxlTG9ja01vZGU+IGxvY2tNb2RlKQoreworICAgIENPTVBJTEVfQVNTRVJUKExPQ0tfU0gg
PT0gV1RGOjplbnVtVG9VbmRlcmx5aW5nVHlwZShGaWxlTG9ja01vZGU6OlNoYXJlZCksIExvY2tT
aGFyZWRFbmNvZGluZ0lzQXNFeHBlY3RlZCk7CisgICAgQ09NUElMRV9BU1NFUlQoTE9DS19FWCA9
PSBXVEY6OmVudW1Ub1VuZGVybHlpbmdUeXBlKEZpbGVMb2NrTW9kZTo6RXhjbHVzaXZlKSwgTG9j
a0V4Y2x1c2l2ZUVuY29kaW5nSXNBc0V4cGVjdGVkKTsKKyAgICBDT01QSUxFX0FTU0VSVChMT0NL
X05CID09IFdURjo6ZW51bVRvVW5kZXJseWluZ1R5cGUoRmlsZUxvY2tNb2RlOjpOb25ibG9ja2lu
ZyksIExvY2tOb25ibG9ja2luZ0VuY29kaW5nSXNBc0V4cGVjdGVkKTsKKyAgICBpbnQgcmVzdWx0
ID0gZmxvY2soaGFuZGxlLCBsb2NrTW9kZS50b1JhdygpKTsKKyAgICByZXR1cm4gKHJlc3VsdCAh
PSAtMSk7Cit9CisKK2Jvb2wgdW5sb2NrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlKQor
eworICAgIGludCByZXN1bHQgPSBmbG9jayhoYW5kbGUsIExPQ0tfVU4pOworICAgIHJldHVybiAo
cmVzdWx0ICE9IC0xKTsKK30KKyNlbmRpZgorCisjaWYgIVBMQVRGT1JNKE1BQykKK2Jvb2wgZGVs
ZXRlRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIENTdHJpbmcgZnNS
ZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisKKyAgICBpZiAoIWZzUmVwLmRh
dGEoKSB8fCBmc1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgLy8gcm1kaXIoLi4uKSByZXR1cm5zIDAgb24gc3VjY2Vzc2Z1bCBkZWxldGlvbiBvZiB0
aGUgcGF0aCBhbmQgbm9uLXplcm8gaW4gYW55IG90aGVyIGNhc2UgKGluY2x1ZGluZyBpbnZhbGlk
IHBlcm1pc3Npb25zIG9yIG5vbi1leGlzdGVudCBmaWxlKQorICAgIHJldHVybiAhcm1kaXIoZnNS
ZXAuZGF0YSgpKTsKK30KKyNlbmRpZgorCitib29sIGdldEZpbGVTaXplKGNvbnN0IFN0cmluZyYg
cGF0aCwgbG9uZyBsb25nJiByZXN1bHQpCit7CisgICAgQ1N0cmluZyBmc1JlcCA9IGZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKKworICAgIGlmICghZnNSZXAuZGF0YSgpIHx8IGZzUmVw
LmRhdGEoKVswXSA9PSAnXDAnKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzdHJ1Y3Qg
c3RhdCBmaWxlSW5mbzsKKworICAgIGlmIChzdGF0KGZzUmVwLmRhdGEoKSwgJmZpbGVJbmZvKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmVzdWx0ID0gZmlsZUluZm8uc3Rfc2l6ZTsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBnZXRGaWxlU2l6ZShQbGF0Zm9ybUZpbGVIYW5k
bGUgaGFuZGxlLCBsb25nIGxvbmcmIHJlc3VsdCkKK3sKKyAgICBzdHJ1Y3Qgc3RhdCBmaWxlSW5m
bzsKKyAgICBpZiAoZnN0YXQoaGFuZGxlLCAmZmlsZUluZm8pKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICByZXN1bHQgPSBmaWxlSW5mby5zdF9zaXplOworICAgIHJldHVybiB0cnVlOwor
fQorCitPcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZUNyZWF0aW9uVGltZShjb25zdCBTdHJpbmcm
IHBhdGgpCit7CisjaWYgT1MoREFSV0lOKSB8fCBPUyhPUEVOQlNEKSB8fCBPUyhORVRCU0QpIHx8
IE9TKEZSRUVCU0QpCisgICAgQ1N0cmluZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihwYXRoKTsKKworICAgIGlmICghZnNSZXAuZGF0YSgpIHx8IGZzUmVwLmRhdGEoKVswXSA9PSAn
XDAnKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgc3RydWN0IHN0YXQgZmls
ZUluZm87CisKKyAgICBpZiAoc3RhdChmc1JlcC5kYXRhKCksICZmaWxlSW5mbykpCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gV2FsbFRpbWU6OmZyb21SYXdTZWNv
bmRzKGZpbGVJbmZvLnN0X2JpcnRodGltZSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShwYXRo
KTsKKyAgICByZXR1cm4gV1RGOjpudWxsb3B0OworI2VuZGlmCit9CisKK09wdGlvbmFsPFdhbGxU
aW1lPiBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAg
Q1N0cmluZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKKworICAgIGlm
ICghZnNSZXAuZGF0YSgpIHx8IGZzUmVwLmRhdGEoKVswXSA9PSAnXDAnKQorICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworCisgICAgc3RydWN0IHN0YXQgZmlsZUluZm87CisKKyAgICBpZiAo
c3RhdChmc1JlcC5kYXRhKCksICZmaWxlSW5mbykpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisKKyAgICByZXR1cm4gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKGZpbGVJbmZvLnN0X210
aW1lKTsKK30KKworc3RhdGljIEZpbGVNZXRhZGF0YTo6VHlwZSB0b0ZpbGVNZXRhdGFUeXBlKHN0
cnVjdCBzdGF0IGZpbGVJbmZvKQoreworICAgIGlmIChTX0lTRElSKGZpbGVJbmZvLnN0X21vZGUp
KQorICAgICAgICByZXR1cm4gRmlsZU1ldGFkYXRhOjpUeXBlOjpEaXJlY3Rvcnk7CisgICAgaWYg
KFNfSVNMTksoZmlsZUluZm8uc3RfbW9kZSkpCisgICAgICAgIHJldHVybiBGaWxlTWV0YWRhdGE6
OlR5cGU6OlN5bWJvbGljTGluazsKKyAgICByZXR1cm4gRmlsZU1ldGFkYXRhOjpUeXBlOjpGaWxl
OworfQorCitzdGF0aWMgT3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGFVc2luZ0Z1
bmN0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCwgaW50ICgqc3RhdEZ1bmMpKGNvbnN0IGNoYXIqLCBz
dHJ1Y3Qgc3RhdCopKQoreworICAgIENTdHJpbmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24ocGF0aCk7CisKKyAgICBpZiAoIWZzUmVwLmRhdGEoKSB8fCBmc1JlcC5kYXRhKClbMF0g
PT0gJ1wwJykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHN0cnVjdCBzdGF0
IGZpbGVJbmZvOworICAgIGlmIChzdGF0RnVuYyhmc1JlcC5kYXRhKCksICZmaWxlSW5mbykpCisg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBTdHJpbmcgZmlsZW5hbWUgPSBwYXRo
R2V0RmlsZU5hbWUocGF0aCk7CisgICAgYm9vbCBpc0hpZGRlbiA9ICFmaWxlbmFtZS5pc0VtcHR5
KCkgJiYgZmlsZW5hbWVbMF0gPT0gJy4nOworICAgIHJldHVybiBGaWxlTWV0YWRhdGEgeworICAg
ICAgICBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoZmlsZUluZm8uc3RfbXRpbWUpLAorICAgICAg
ICBmaWxlSW5mby5zdF9zaXplLAorICAgICAgICBpc0hpZGRlbiwKKyAgICAgICAgdG9GaWxlTWV0
YXRhVHlwZShmaWxlSW5mbykKKyAgICB9OworfQorCitPcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZp
bGVNZXRhZGF0YShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgcmV0dXJuIGZpbGVNZXRhZGF0
YVVzaW5nRnVuY3Rpb24ocGF0aCwgJmxzdGF0KTsKK30KKworT3B0aW9uYWw8RmlsZU1ldGFkYXRh
PiBmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyhjb25zdCBTdHJpbmcmIHBhdGgpCit7Cisg
ICAgcmV0dXJuIGZpbGVNZXRhZGF0YVVzaW5nRnVuY3Rpb24ocGF0aCwgJnN0YXQpOworfQorCiti
b29sIGNyZWF0ZVN5bWJvbGljTGluayhjb25zdCBTdHJpbmcmIHRhcmdldFBhdGgsIGNvbnN0IFN0
cmluZyYgc3ltYm9saWNMaW5rUGF0aCkKK3sKKyAgICBDU3RyaW5nIHRhcmdldFBhdGhGU1JlcCA9
IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih0YXJnZXRQYXRoKTsKKyAgICBpZiAoIXRhcmdldFBh
dGhGU1JlcC5kYXRhKCkgfHwgdGFyZ2V0UGF0aEZTUmVwLmRhdGEoKVswXSA9PSAnXDAnKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBDU3RyaW5nIHN5bWJvbGljTGlua1BhdGhGU1JlcCA9
IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihzeW1ib2xpY0xpbmtQYXRoKTsKKyAgICBpZiAoIXN5
bWJvbGljTGlua1BhdGhGU1JlcC5kYXRhKCkgfHwgc3ltYm9saWNMaW5rUGF0aEZTUmVwLmRhdGEo
KVswXSA9PSAnXDAnKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gIXN5bWxp
bmsodGFyZ2V0UGF0aEZTUmVwLmRhdGEoKSwgc3ltYm9saWNMaW5rUGF0aEZTUmVwLmRhdGEoKSk7
Cit9CisKK1N0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY29uc3QgU3RyaW5nJiBwYXRo
LCBjb25zdCBTdHJpbmcmIGNvbXBvbmVudCkKK3sKKyAgICBpZiAocGF0aC5lbmRzV2l0aCgnLycp
KQorICAgICAgICByZXR1cm4gcGF0aCArIGNvbXBvbmVudDsKKyAgICByZXR1cm4gcGF0aCArICIv
IiArIGNvbXBvbmVudDsKK30KKworU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMoU3Ry
aW5nVmlldyBwYXRoLCBjb25zdCBWZWN0b3I8U3RyaW5nVmlldz4mIGNvbXBvbmVudHMpCit7Cisg
ICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kKHBhdGgpOworICAg
IGZvciAoYXV0byYgY29tcG9uZW50IDogY29tcG9uZW50cykgeworICAgICAgICBidWlsZGVyLmFw
cGVuZCgnLycpOworICAgICAgICBidWlsZGVyLmFwcGVuZChjb21wb25lbnQpOworICAgIH0KKyAg
ICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworfQorCitib29sIG1ha2VBbGxEaXJlY3Rvcmll
cyhjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgQ1N0cmluZyBmdWxsUGF0aCA9IGZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKKyAgICBpZiAoIWFjY2VzcyhmdWxsUGF0aC5kYXRhKCks
IEZfT0spKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGNoYXIqIHAgPSBmdWxsUGF0aC5t
dXRhYmxlRGF0YSgpICsgMTsKKyAgICBpbnQgbGVuZ3RoID0gZnVsbFBhdGgubGVuZ3RoKCk7CisK
KyAgICBpZiAocFtsZW5ndGggLSAxXSA9PSAnLycpCisgICAgICAgIHBbbGVuZ3RoIC0gMV0gPSAn
XDAnOworICAgIGZvciAoOyAqcDsgKytwKSB7CisgICAgICAgIGlmICgqcCA9PSAnLycpIHsKKyAg
ICAgICAgICAgICpwID0gJ1wwJzsKKyAgICAgICAgICAgIGlmIChhY2Nlc3MoZnVsbFBhdGguZGF0
YSgpLCBGX09LKSkgeworICAgICAgICAgICAgICAgIGlmIChta2RpcihmdWxsUGF0aC5kYXRhKCks
IFNfSVJXWFUpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICAqcCA9ICcvJzsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoYWNj
ZXNzKGZ1bGxQYXRoLmRhdGEoKSwgRl9PSykpIHsKKyAgICAgICAgaWYgKG1rZGlyKGZ1bGxQYXRo
LmRhdGEoKSwgU19JUldYVSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK1N0cmluZyBwYXRoR2V0RmlsZU5hbWUoY29uc3QgU3RyaW5n
JiBwYXRoKQoreworICAgIHJldHVybiBwYXRoLnN1YnN0cmluZyhwYXRoLnJldmVyc2VGaW5kKCcv
JykgKyAxKTsKK30KKworU3RyaW5nIGRpcmVjdG9yeU5hbWUoY29uc3QgU3RyaW5nJiBwYXRoKQor
eworICAgIENTdHJpbmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisK
KyAgICBpZiAoIWZzUmVwLmRhdGEoKSB8fCBmc1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKKyAgICAg
ICAgcmV0dXJuIFN0cmluZygpOworCisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoZGlybmFt
ZShmc1JlcC5tdXRhYmxlRGF0YSgpKSk7Cit9CisKK1ZlY3RvcjxTdHJpbmc+IGxpc3REaXJlY3Rv
cnkoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGZpbHRlcikKK3sKKyAgICBWZWN0
b3I8U3RyaW5nPiBlbnRyaWVzOworICAgIENTdHJpbmcgY3BhdGggPSBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24ocGF0aCk7CisgICAgQ1N0cmluZyBjZmlsdGVyID0gZmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKGZpbHRlcik7CisgICAgRElSKiBkaXIgPSBvcGVuZGlyKGNwYXRoLmRhdGEoKSk7Cisg
ICAgaWYgKGRpcikgeworICAgICAgICBzdHJ1Y3QgZGlyZW50KiBkcDsKKyAgICAgICAgd2hpbGUg
KChkcCA9IHJlYWRkaXIoZGlyKSkpIHsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIqIG5hbWUgPSBk
cC0+ZF9uYW1lOworICAgICAgICAgICAgaWYgKCFzdHJjbXAobmFtZSwgIi4iKSB8fCAhc3RyY21w
KG5hbWUsICIuLiIpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaWYg
KGZubWF0Y2goY2ZpbHRlci5kYXRhKCksIG5hbWUsIDApKQorICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICAgICAgY2hhciBmaWxlUGF0aFtQQVRIX01BWF07CisgICAgICAgICAgICBp
ZiAoc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoZmlsZVBhdGgpIC0gMSkgPCBzbnByaW50ZihmaWxl
UGF0aCwgc2l6ZW9mKGZpbGVQYXRoKSwgIiVzLyVzIiwgY3BhdGguZGF0YSgpLCBuYW1lKSkKKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsgLy8gYnVmZmVyIG92ZXJmbG93CisKKyAgICAgICAgICAg
IGF1dG8gc3RyaW5nID0gc3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWxlUGF0
aCk7CisKKyAgICAgICAgICAgIC8vIFNvbWUgZmlsZSBzeXN0ZW0gcmVwcmVzZW50YXRpb25zIGNh
bm5vdCBiZSByZXByZXNlbnRlZCBhcyBhIFVURi0xNiBzdHJpbmcsCisgICAgICAgICAgICAvLyBz
byB0aGlzIHN0cmluZyBtaWdodCBiZSBudWxsLgorICAgICAgICAgICAgaWYgKCFzdHJpbmcuaXNO
dWxsKCkpCisgICAgICAgICAgICAgICAgZW50cmllcy5hcHBlbmQoV1RGTW92ZShzdHJpbmcpKTsK
KyAgICAgICAgfQorICAgICAgICBjbG9zZWRpcihkaXIpOworICAgIH0KKyAgICByZXR1cm4gZW50
cmllczsKK30KKworI2lmICFQTEFURk9STShDT0NPQSkKK1N0cmluZyBzdHJpbmdGcm9tRmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IGNoYXIqIHBhdGgpCit7CisgICAgaWYgKCFwYXRoKQor
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChw
YXRoKTsKK30KKworQ1N0cmluZyBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5n
JiBwYXRoKQoreworICAgIHJldHVybiBwYXRoLnV0ZjgoKTsKK30KKworYm9vbCBtb3ZlRmlsZShj
b25zdCBTdHJpbmcmIG9sZFBhdGgsIGNvbnN0IFN0cmluZyYgbmV3UGF0aCkKK3sKKyAgICBhdXRv
IG9sZEZpbGVuYW1lID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKG9sZFBhdGgpOworICAgIGlm
IChvbGRGaWxlbmFtZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0
byBuZXdGaWxlbmFtZSA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihuZXdQYXRoKTsKKyAgICBp
ZiAobmV3RmlsZW5hbWUuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJl
dHVybiByZW5hbWUob2xkRmlsZW5hbWUuZGF0YSgpLCBuZXdGaWxlbmFtZS5kYXRhKCkpICE9IC0x
OworfQorCitib29sIGdldFZvbHVtZUZyZWVTcGFjZShjb25zdCBTdHJpbmcmIHBhdGgsIHVpbnQ2
NF90JiBmcmVlU3BhY2UpCit7CisgICAgc3RydWN0IHN0YXR2ZnMgZmlsZVN5c3RlbVN0YXQ7Cisg
ICAgaWYgKHN0YXR2ZnMoZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSwgJmZp
bGVTeXN0ZW1TdGF0KSkgeworICAgICAgICBmcmVlU3BhY2UgPSBmaWxlU3lzdGVtU3RhdC5mX2Jh
dmFpbCAqIGZpbGVTeXN0ZW1TdGF0LmZfZnJzaXplOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorI2VuZGlmCisKKyNpZiAhT1MoREFSV0lOKQorU3Ry
aW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVI
YW5kbGUmIGhhbmRsZSkKK3sKKyAgICBjaGFyIGJ1ZmZlcltQQVRIX01BWF07CisgICAgY29uc3Qg
Y2hhciogdG1wRGlyID0gZ2V0ZW52KCJUTVBESVIiKTsKKworICAgIGlmICghdG1wRGlyKQorICAg
ICAgICB0bXBEaXIgPSAiL3RtcCI7CisKKyAgICBpZiAoc25wcmludGYoYnVmZmVyLCBQQVRIX01B
WCwgIiVzLyVzWFhYWFhYIiwgdG1wRGlyLCBwcmVmaXgudXRmOCgpLmRhdGEoKSkgPj0gUEFUSF9N
QVgpCisgICAgICAgIGdvdG8gZW5kOworCisgICAgaGFuZGxlID0gbWtzdGVtcChidWZmZXIpOwor
ICAgIGlmIChoYW5kbGUgPCAwKQorICAgICAgICBnb3RvIGVuZDsKKworICAgIHJldHVybiBTdHJp
bmc6OmZyb21VVEY4KGJ1ZmZlcik7CisKK2VuZDoKKyAgICBoYW5kbGUgPSBpbnZhbGlkUGxhdGZv
cm1GaWxlSGFuZGxlOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKyNlbmRpZgorCitib29sIGhh
cmRMaW5rT3JDb3B5RmlsZShjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiBkZXN0
aW5hdGlvbikKK3sKKyAgICBpZiAoc291cmNlLmlzRW1wdHkoKSB8fCBkZXN0aW5hdGlvbi5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIENTdHJpbmcgZnNTb3VyY2UgPSBm
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oc291cmNlKTsKKyAgICBpZiAoIWZzU291cmNlLmRhdGEo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgQ1N0cmluZyBmc0Rlc3RpbmF0aW9uID0g
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRlc3RpbmF0aW9uKTsKKyAgICBpZiAoIWZzRGVzdGlu
YXRpb24uZGF0YSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWxpbmsoZnNT
b3VyY2UuZGF0YSgpLCBmc0Rlc3RpbmF0aW9uLmRhdGEoKSkpCisgICAgICAgIHJldHVybiB0cnVl
OworCisgICAgLy8gSGFyZCBsaW5rIGZhaWxlZC4gUGVyZm9ybSBhIGNvcHkgaW5zdGVhZC4KKyAg
ICBhdXRvIGhhbmRsZSA9IG9wZW4oZnNEZXN0aW5hdGlvbi5kYXRhKCksIE9fV1JPTkxZIHwgT19D
UkVBVCB8IE9fRVhDTCwgMDY2Nik7CisgICAgaWYgKGhhbmRsZSA9PSAtMSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgYm9vbCBhcHBlbmRSZXN1bHQgPSBhcHBlbmRGaWxlQ29udGVudHNU
b0ZpbGVIYW5kbGUoc291cmNlLCBoYW5kbGUpOworICAgIGNsb3NlKGhhbmRsZSk7CisKKyAgICAv
LyBJZiB0aGUgY29weSBmYWlsZWQsIGRlbGV0ZSB0aGUgdW51c2FibGUgZmlsZS4KKyAgICBpZiAo
IWFwcGVuZFJlc3VsdCkKKyAgICAgICAgdW5saW5rKGZzRGVzdGluYXRpb24uZGF0YSgpKTsKKwor
ICAgIHJldHVybiBhcHBlbmRSZXN1bHQ7Cit9CisKK09wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVE
ZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCit7CisgICAgc3RydWN0IHN0YXQgZmlsZVN0
YXQ7CisgICAgaWYgKHN0YXQoZnNGaWxlLmRhdGEoKSwgJmZpbGVTdGF0KSA9PSAtMSkKKyAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiBmaWxlU3RhdC5zdF9kZXY7Cit9
CisKK1N0cmluZyByZWFsUGF0aChjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQoreworICAgIENTdHJp
bmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZVBhdGgpOworICAgIGNoYXIg
cmVzb2x2ZWROYW1lW1BBVEhfTUFYXTsKKyAgICBjb25zdCBjaGFyKiByZXN1bHQgPSByZWFscGF0
aChmc1JlcC5kYXRhKCksIHJlc29sdmVkTmFtZSk7CisgICAgcmV0dXJuIHJlc3VsdCA/IFN0cmlu
Zzo6ZnJvbVVURjgocmVzdWx0KSA6IGZpbGVQYXRoOworfQorCit9IC8vIG5hbWVzcGFjZSBGaWxl
U3lzdGVtCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Nw
aS9tYWMvTWV0YWRhdGFTUEkuaCBiL1NvdXJjZS9XVEYvd3RmL3NwaS9tYWMvTWV0YWRhdGFTUEku
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yZTE5MTJlZjlmNmM4NGM3NzVhYmVkZDUwOTE3MDc1MTVhMjRmOTJmCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvc3BpL21hYy9NZXRhZGF0YVNQSS5oCkBA
IC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIFVTRShBUFBM
RV9JTlRFUk5BTF9TREspCisKKyNpbmNsdWRlIDxNZXRhZGF0YS9NZXRhZGF0YVByaXYuaD4KKwor
I2VuZGlmCisKK1dURl9FWFRFUk5fQ19CRUdJTgorCitCb29sZWFuIE1ESXRlbVNldEF0dHJpYnV0
ZShNREl0ZW1SZWYsIENGU3RyaW5nUmVmIG5hbWUsIENGVHlwZVJlZiBhdHRyKTsKKworV1RGX0VY
VEVSTl9DX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4u
Y3BwIGIvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMx
NjQ3MmNkZDNmNWJhMDc3Yjk3MjQ1NjAwOGE0OTQwOTQ2ZWVkZTQKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAKQEAgLTAsMCArMSw1ODYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhLCBMdGQuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBB
cHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAor
ICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KKworI2luY2x1
ZGUgPGlvLmg+CisjaW5jbHVkZSA8c2hsb2JqLmg+CisjaW5jbHVkZSA8c2hsd2FwaS5oPgorI2lu
Y2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5jbHVkZSA8d2luZG93cy5oPgorI2luY2x1ZGUgPHd0Zi9D
cnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlTWV0YWRh
dGEuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL3dpbi9QYXRoV2Fs
a2VyLmg+CisKK25hbWVzcGFjZSBXVEYgeworCituYW1lc3BhY2UgRmlsZVN5c3RlbSB7CisKK3N0
YXRpYyBjb25zdCBVTE9OR0xPTkcga1NlY29uZHNGcm9tRmlsZVRpbWVUb1RpbWV0ID0gMTE2NDQ0
NzM2MDA7CisKK3N0YXRpYyBib29sIGdldEZpbmREYXRhKFN0cmluZyBwYXRoLCBXSU4zMl9GSU5E
X0RBVEFXJiBmaW5kRGF0YSkKK3sKKyAgICBIQU5ETEUgaGFuZGxlID0gRmluZEZpcnN0RmlsZVco
c3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKHBhdGgpLmRhdGEoKSwgJmZpbmREYXRhKTsKKyAg
ICBpZiAoaGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgRmluZENsb3NlKGhhbmRsZSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRp
YyBib29sIGdldEZpbGVTaXplRnJvbUZpbmREYXRhKGNvbnN0IFdJTjMyX0ZJTkRfREFUQVcmIGZp
bmREYXRhLCBsb25nIGxvbmcmIHNpemUpCit7CisgICAgVUxBUkdFX0lOVEVHRVIgZmlsZVNpemU7
CisgICAgZmlsZVNpemUuSGlnaFBhcnQgPSBmaW5kRGF0YS5uRmlsZVNpemVIaWdoOworICAgIGZp
bGVTaXplLkxvd1BhcnQgPSBmaW5kRGF0YS5uRmlsZVNpemVMb3c7CisKKyAgICBpZiAoZmlsZVNp
emUuUXVhZFBhcnQgPiBzdGF0aWNfY2FzdDxVTE9OR0xPTkc+KHN0ZDo6bnVtZXJpY19saW1pdHM8
bG9uZyBsb25nPjo6bWF4KCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzaXplID0g
ZmlsZVNpemUuUXVhZFBhcnQ7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBib29sIGdl
dEZpbGVTaXplRnJvbUJ5SGFuZGxlRmlsZUluZm9ybWF0aW9uU3RydWN0dXJlKGNvbnN0IEJZX0hB
TkRMRV9GSUxFX0lORk9STUFUSU9OJiBmaWxlSW5mb3JtYXRpb24sIGxvbmcgbG9uZyYgc2l6ZSkK
K3sKKyAgICBVTEFSR0VfSU5URUdFUiBmaWxlU2l6ZTsKKyAgICBmaWxlU2l6ZS5IaWdoUGFydCA9
IGZpbGVJbmZvcm1hdGlvbi5uRmlsZVNpemVIaWdoOworICAgIGZpbGVTaXplLkxvd1BhcnQgPSBm
aWxlSW5mb3JtYXRpb24ubkZpbGVTaXplTG93OworCisgICAgaWYgKGZpbGVTaXplLlF1YWRQYXJ0
ID4gc3RhdGljX2Nhc3Q8VUxPTkdMT05HPihzdGQ6Om51bWVyaWNfbGltaXRzPGxvbmcgbG9uZz46
Om1heCgpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgc2l6ZSA9IGZpbGVTaXplLlF1
YWRQYXJ0OworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgdm9pZCBnZXRGaWxlQ3JlYXRp
b25UaW1lRnJvbUZpbmREYXRhKGNvbnN0IFdJTjMyX0ZJTkRfREFUQVcmIGZpbmREYXRhLCB0aW1l
X3QmIHRpbWUpCit7CisgICAgVUxBUkdFX0lOVEVHRVIgZmlsZVRpbWU7CisgICAgZmlsZVRpbWUu
SGlnaFBhcnQgPSBmaW5kRGF0YS5mdENyZWF0aW9uVGltZS5kd0hpZ2hEYXRlVGltZTsKKyAgICBm
aWxlVGltZS5Mb3dQYXJ0ID0gZmluZERhdGEuZnRDcmVhdGlvblRpbWUuZHdMb3dEYXRlVGltZTsK
KworICAgIC8vIEluZm9ybWF0aW9uIGFib3V0IGNvbnZlcnRpbmcgdGltZV90IHRvIEZpbGVUaW1l
IGlzIGF2YWlsYWJsZSBhdCBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkv
bXM3MjQyMjglMjh2PXZzLjg1JTI5LmFzcHgKKyAgICB0aW1lID0gZmlsZVRpbWUuUXVhZFBhcnQg
LyAxMDAwMDAwMCAtIGtTZWNvbmRzRnJvbUZpbGVUaW1lVG9UaW1ldDsKK30KKworCitzdGF0aWMg
dm9pZCBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZUZyb21GaW5kRGF0YShjb25zdCBXSU4zMl9GSU5E
X0RBVEFXJiBmaW5kRGF0YSwgdGltZV90JiB0aW1lKQoreworICAgIFVMQVJHRV9JTlRFR0VSIGZp
bGVUaW1lOworICAgIGZpbGVUaW1lLkhpZ2hQYXJ0ID0gZmluZERhdGEuZnRMYXN0V3JpdGVUaW1l
LmR3SGlnaERhdGVUaW1lOworICAgIGZpbGVUaW1lLkxvd1BhcnQgPSBmaW5kRGF0YS5mdExhc3RX
cml0ZVRpbWUuZHdMb3dEYXRlVGltZTsKKworICAgIC8vIEluZm9ybWF0aW9uIGFib3V0IGNvbnZl
cnRpbmcgdGltZV90IHRvIEZpbGVUaW1lIGlzIGF2YWlsYWJsZSBhdCBodHRwOi8vbXNkbi5taWNy
b3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvbXM3MjQyMjglMjh2PXZzLjg1JTI5LmFzcHgKKyAgICB0
aW1lID0gZmlsZVRpbWUuUXVhZFBhcnQgLyAxMDAwMDAwMCAtIGtTZWNvbmRzRnJvbUZpbGVUaW1l
VG9UaW1ldDsKK30KKworYm9vbCBnZXRGaWxlU2l6ZShjb25zdCBTdHJpbmcmIHBhdGgsIGxvbmcg
bG9uZyYgc2l6ZSkKK3sKKyAgICBXSU4zMl9GSU5EX0RBVEFXIGZpbmREYXRhOworICAgIGlmICgh
Z2V0RmluZERhdGEocGF0aCwgZmluZERhdGEpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICByZXR1cm4gZ2V0RmlsZVNpemVGcm9tRmluZERhdGEoZmluZERhdGEsIHNpemUpOworfQorCiti
b29sIGdldEZpbGVTaXplKFBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlSGFuZGxlLCBsb25nIGxvbmcm
IHNpemUpCit7CisgICAgQllfSEFORExFX0ZJTEVfSU5GT1JNQVRJT04gZmlsZUluZm9ybWF0aW9u
OworICAgIGlmICghOjpHZXRGaWxlSW5mb3JtYXRpb25CeUhhbmRsZShmaWxlSGFuZGxlLCAmZmls
ZUluZm9ybWF0aW9uKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGdldEZp
bGVTaXplRnJvbUJ5SGFuZGxlRmlsZUluZm9ybWF0aW9uU3RydWN0dXJlKGZpbGVJbmZvcm1hdGlv
biwgc2l6ZSk7Cit9CisKK09wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlTW9kaWZpY2F0aW9uVGlt
ZShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgV0lOMzJfRklORF9EQVRBVyBmaW5kRGF0YTsK
KyAgICBpZiAoIWdldEZpbmREYXRhKHBhdGgsIGZpbmREYXRhKSkKKyAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKworICAgIHRpbWVfdCB0aW1lID0gMDsKKyAgICBnZXRGaWxlTW9kaWZpY2F0
aW9uVGltZUZyb21GaW5kRGF0YShmaW5kRGF0YSwgdGltZSk7CisgICAgcmV0dXJuIFdhbGxUaW1l
Ojpmcm9tUmF3U2Vjb25kcyh0aW1lKTsKK30KKworT3B0aW9uYWw8V2FsbFRpbWU+IGdldEZpbGVD
cmVhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIFdJTjMyX0ZJTkRfREFUQVcg
ZmluZERhdGE7CisgICAgaWYgKCFnZXRGaW5kRGF0YShwYXRoLCBmaW5kRGF0YSkpCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICB0aW1lX3QgdGltZSA9IDA7CisgICAgZ2V0Rmls
ZUNyZWF0aW9uVGltZUZyb21GaW5kRGF0YShmaW5kRGF0YSwgdGltZSk7CisgICAgcmV0dXJuIFdh
bGxUaW1lOjpmcm9tUmF3U2Vjb25kcyh0aW1lKTsKK30KKworc3RhdGljIFN0cmluZyBnZXRGaW5h
bFBhdGhOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBhdXRvIGhhbmRsZSA9IG9wZW5G
aWxlKHBhdGgsIEZpbGVPcGVuTW9kZTo6UmVhZCk7CisgICAgaWYgKCFpc0hhbmRsZVZhbGlkKGhh
bmRsZSkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIFZlY3RvcjxVQ2hhcj4gYnVm
ZmVyKE1BWF9QQVRIKTsKKyAgICBpZiAoOjpHZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGVXKGhhbmRs
ZSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSwgVk9MVU1FX05BTUVfTlQpID49IE1BWF9Q
QVRIKSB7CisgICAgICAgIGNsb3NlRmlsZShoYW5kbGUpOworICAgICAgICByZXR1cm4gU3RyaW5n
KCk7CisgICAgfQorICAgIGNsb3NlRmlsZShoYW5kbGUpOworCisgICAgYnVmZmVyLnNocmluayh3
Y3NsZW4oYnVmZmVyLmRhdGEoKSkpOworICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KFdURk1vdmUo
YnVmZmVyKSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc1N5bWJvbGljTGluayhXSU4zMl9G
SU5EX0RBVEFXIGZpbmREYXRhKQoreworICAgIHJldHVybiBmaW5kRGF0YS5kd0ZpbGVBdHRyaWJ1
dGVzICYgRklMRV9BVFRSSUJVVEVfUkVQQVJTRV9QT0lOVCAmJiBmaW5kRGF0YS5kd1Jlc2VydmVk
MCA9PSBJT19SRVBBUlNFX1RBR19TWU1MSU5LOworfQorCitzdGF0aWMgRmlsZU1ldGFkYXRhOjpU
eXBlIHRvRmlsZU1ldGFkYXRhVHlwZShXSU4zMl9GSU5EX0RBVEFXIGZpbmREYXRhKQoreworICAg
IGlmIChmaW5kRGF0YS5kd0ZpbGVBdHRyaWJ1dGVzICYgRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZ
KQorICAgICAgICByZXR1cm4gRmlsZU1ldGFkYXRhOjpUeXBlOjpEaXJlY3Rvcnk7CisgICAgaWYg
KGlzU3ltYm9saWNMaW5rKGZpbmREYXRhKSkKKyAgICAgICAgcmV0dXJuIEZpbGVNZXRhZGF0YTo6
VHlwZTo6U3ltYm9saWNMaW5rOworICAgIHJldHVybiBGaWxlTWV0YWRhdGE6OlR5cGU6OkZpbGU7
Cit9CisKK3N0YXRpYyBPcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbmREYXRhVG9GaWxlTWV0YWRh
dGEoV0lOMzJfRklORF9EQVRBVyBmaW5kRGF0YSkKK3sKKyAgICBsb25nIGxvbmcgbGVuZ3RoOwor
ICAgIGlmICghZ2V0RmlsZVNpemVGcm9tRmluZERhdGEoZmluZERhdGEsIGxlbmd0aCkpCisgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICB0aW1lX3QgbW9kaWZpY2F0aW9uVGltZTsK
KyAgICBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZUZyb21GaW5kRGF0YShmaW5kRGF0YSwgbW9kaWZp
Y2F0aW9uVGltZSk7CisKKyAgICByZXR1cm4gRmlsZU1ldGFkYXRhIHsKKyAgICAgICAgV2FsbFRp
bWU6OmZyb21SYXdTZWNvbmRzKG1vZGlmaWNhdGlvblRpbWUpLAorICAgICAgICBsZW5ndGgsCisg
ICAgICAgIHN0YXRpY19jYXN0PGJvb2w+KGZpbmREYXRhLmR3RmlsZUF0dHJpYnV0ZXMgJiBGSUxF
X0FUVFJJQlVURV9ISURERU4pLAorICAgICAgICB0b0ZpbGVNZXRhZGF0YVR5cGUoZmluZERhdGEp
CisgICAgfTsKK30KKworT3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGEoY29uc3Qg
U3RyaW5nJiBwYXRoKQoreworICAgIFdJTjMyX0ZJTkRfREFUQVcgZmluZERhdGE7CisgICAgaWYg
KCFnZXRGaW5kRGF0YShwYXRoLCBmaW5kRGF0YSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisKKyAgICByZXR1cm4gZmluZERhdGFUb0ZpbGVNZXRhZGF0YShmaW5kRGF0YSk7Cit9CisK
K09wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3MoY29u
c3QgU3RyaW5nJiBwYXRoKQoreworICAgIFdJTjMyX0ZJTkRfREFUQVcgZmluZERhdGE7CisgICAg
aWYgKCFnZXRGaW5kRGF0YShwYXRoLCBmaW5kRGF0YSkpCisgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisKKyAgICBpZiAoaXNTeW1ib2xpY0xpbmsoZmluZERhdGEpKSB7CisgICAgICAgIFN0
cmluZyB0YXJnZXRQYXRoID0gZ2V0RmluYWxQYXRoTmFtZShwYXRoKTsKKyAgICAgICAgaWYgKHRh
cmdldFBhdGguaXNOdWxsKCkpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICBpZiAoIWdldEZpbmREYXRhKHRhcmdldFBhdGgsIGZpbmREYXRhKSkKKyAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgfQorCisgICAgcmV0dXJuIGZpbmREYXRhVG9GaWxl
TWV0YWRhdGEoZmluZERhdGEpOworfQorCitib29sIGNyZWF0ZVN5bWJvbGljTGluayhjb25zdCBT
dHJpbmcmIHRhcmdldFBhdGgsIGNvbnN0IFN0cmluZyYgc3ltYm9saWNMaW5rUGF0aCkKK3sKKyAg
ICByZXR1cm4gITo6Q3JlYXRlU3ltYm9saWNMaW5rVyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0No
YXIoc3ltYm9saWNMaW5rUGF0aCkuZGF0YSgpLCBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIo
dGFyZ2V0UGF0aCkuZGF0YSgpLCAwKTsKK30KKworYm9vbCBmaWxlRXhpc3RzKGNvbnN0IFN0cmlu
ZyYgcGF0aCkKK3sKKyAgICBXSU4zMl9GSU5EX0RBVEFXIGZpbmREYXRhOworICAgIHJldHVybiBn
ZXRGaW5kRGF0YShwYXRoLCBmaW5kRGF0YSk7Cit9CisKK2Jvb2wgZGVsZXRlRmlsZShjb25zdCBT
dHJpbmcmIHBhdGgpCit7CisgICAgU3RyaW5nIGZpbGVuYW1lID0gcGF0aDsKKyAgICByZXR1cm4g
ISFEZWxldGVGaWxlVyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoZmlsZW5hbWUpLmRhdGEo
KSk7Cit9CisKK2Jvb2wgZGVsZXRlRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKQor
eworICAgIFN0cmluZyBmaWxlbmFtZSA9IHBhdGg7CisgICAgcmV0dXJuICEhUmVtb3ZlRGlyZWN0
b3J5VyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoZmlsZW5hbWUpLmRhdGEoKSk7Cit9CisK
K2Jvb2wgbW92ZUZpbGUoY29uc3QgU3RyaW5nJiBvbGRQYXRoLCBjb25zdCBTdHJpbmcmIG5ld1Bh
dGgpCit7CisgICAgU3RyaW5nIG9sZEZpbGVuYW1lID0gb2xkUGF0aDsKKyAgICBTdHJpbmcgbmV3
RmlsZW5hbWUgPSBuZXdQYXRoOworICAgIHJldHVybiAhITo6TW92ZUZpbGVFeChzdHJpbmdUb051
bGxUZXJtaW5hdGVkV0NoYXIob2xkRmlsZW5hbWUpLmRhdGEoKSwgc3RyaW5nVG9OdWxsVGVybWlu
YXRlZFdDaGFyKG5ld0ZpbGVuYW1lKS5kYXRhKCksIE1PVkVGSUxFX0NPUFlfQUxMT1dFRCB8IE1P
VkVGSUxFX1JFUExBQ0VfRVhJU1RJTkcpOworfQorCitTdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb21wb25lbnQpCit7Cisg
ICAgVmVjdG9yPFVDaGFyPiBidWZmZXIoTUFYX1BBVEgpOworCisgICAgaWYgKHBhdGgubGVuZ3Ro
KCkgKyAxID4gYnVmZmVyLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAg
U3RyaW5nVmlldyhwYXRoKS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChidWZmZXIuZGF0YSgp
KTsKKyAgICBidWZmZXJbcGF0aC5sZW5ndGgoKV0gPSAnXDAnOworCisgICAgaWYgKCFQYXRoQXBw
ZW5kVyhidWZmZXIuZGF0YSgpLCBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoY29tcG9uZW50
KS5kYXRhKCkpKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBidWZmZXIuc2hyaW5r
KHdjc2xlbihidWZmZXIuZGF0YSgpKSk7CisKKyAgICByZXR1cm4gU3RyaW5nOjphZG9wdChXVEZN
b3ZlKGJ1ZmZlcikpOworfQorCitTdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhTdHJp
bmdWaWV3IHBhdGgsIGNvbnN0IFZlY3RvcjxTdHJpbmdWaWV3PiYgY29tcG9uZW50cykKK3sKKyAg
ICBTdHJpbmcgcmVzdWx0ID0gcGF0aC50b1N0cmluZygpOworICAgIGZvciAoYXV0byYgY29tcG9u
ZW50IDogY29tcG9uZW50cykKKyAgICAgICAgcmVzdWx0ID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KHJlc3VsdCwgY29tcG9uZW50LnRvU3RyaW5nKCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9
CisKKyNpZiAhVVNFKENGKQorCitDU3RyaW5nIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25z
dCBTdHJpbmcmIHBhdGgpCit7CisgICAgYXV0byB1cGNvbnZlcnRlZENoYXJhY3RlcnMgPSBwYXRo
LnVwY29udmVydGVkQ2hhcmFjdGVycygpOworCisgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMg
PSB1cGNvbnZlcnRlZENoYXJhY3RlcnM7CisgICAgaW50IHNpemUgPSBXaWRlQ2hhclRvTXVsdGlC
eXRlKENQX0FDUCwgMCwgY2hhcmFjdGVycywgcGF0aC5sZW5ndGgoKSwgMCwgMCwgMCwgMCkgLSAx
OworCisgICAgY2hhciogYnVmZmVyOworICAgIENTdHJpbmcgc3RyaW5nID0gQ1N0cmluZzo6bmV3
VW5pbml0aWFsaXplZChzaXplLCBidWZmZXIpOworCisgICAgV2lkZUNoYXJUb011bHRpQnl0ZShD
UF9BQ1AsIDAsIGNoYXJhY3RlcnMsIHBhdGgubGVuZ3RoKCksIGJ1ZmZlciwgc2l6ZSwgMCwgMCk7
CisKKyAgICByZXR1cm4gc3RyaW5nOworfQorCisjZW5kaWYgLy8gIVVTRShDRikKKworYm9vbCBt
YWtlQWxsRGlyZWN0b3JpZXMoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIFN0cmluZyBmdWxs
UGF0aCA9IHBhdGg7CisgICAgaWYgKFNIQ3JlYXRlRGlyZWN0b3J5RXgoMCwgc3RyaW5nVG9OdWxs
VGVybWluYXRlZFdDaGFyKGZ1bGxQYXRoKS5kYXRhKCksIDApICE9IEVSUk9SX1NVQ0NFU1MpIHsK
KyAgICAgICAgRFdPUkQgZXJyb3IgPSBHZXRMYXN0RXJyb3IoKTsKKyAgICAgICAgaWYgKGVycm9y
ICE9IEVSUk9SX0ZJTEVfRVhJU1RTICYmIGVycm9yICE9IEVSUk9SX0FMUkVBRFlfRVhJU1RTKSB7
CisgICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgcGF0aCAlcyIsIHBhdGgu
YXNjaWkoKS5kYXRhKCkpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9Cisg
ICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitTdHJpbmcgaG9tZURpcmVjdG9yeVBhdGgoKQor
eworICAgIHJldHVybiAiIjsKK30KKworU3RyaW5nIHBhdGhHZXRGaWxlTmFtZShjb25zdCBTdHJp
bmcmIHBhdGgpCit7CisgICAgcmV0dXJuIG51bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmluZyg6OlBh
dGhGaW5kRmlsZU5hbWUoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKHBhdGgpLmRhdGEoKSkp
OworfQorCitTdHJpbmcgZGlyZWN0b3J5TmFtZShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAg
U3RyaW5nIG5hbWUgPSBwYXRoLmxlZnQocGF0aC5sZW5ndGgoKSAtIHBhdGhHZXRGaWxlTmFtZShw
YXRoKS5sZW5ndGgoKSk7CisgICAgaWYgKG5hbWUuY2hhcmFjdGVyU3RhcnRpbmdBdChuYW1lLmxl
bmd0aCgpIC0gMSkgPT0gJ1xcJykgeworICAgICAgICAvLyBSZW1vdmUgYW55IHRyYWlsaW5nICJc
Ii4KKyAgICAgICAgbmFtZS50cnVuY2F0ZShuYW1lLmxlbmd0aCgpIC0gMSk7CisgICAgfQorICAg
IHJldHVybiBuYW1lOworfQorCitzdGF0aWMgU3RyaW5nIGJ1bmRsZU5hbWUoKQoreworICAgIHN0
YXRpYyBjb25zdCBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IG5hbWUgPSBbXSB7CisgICAgICAgIFN0
cmluZyBuYW1lIHsgIldlYktpdCJfcyB9OworCisjaWYgVVNFKENGKQorICAgICAgICBpZiAoQ0ZC
dW5kbGVSZWYgYnVuZGxlID0gQ0ZCdW5kbGVHZXRNYWluQnVuZGxlKCkpIHsKKyAgICAgICAgICAg
IGlmIChDRlR5cGVSZWYgYnVuZGxlRXhlY3V0YWJsZSA9IENGQnVuZGxlR2V0VmFsdWVGb3JJbmZv
RGljdGlvbmFyeUtleShidW5kbGUsIGtDRkJ1bmRsZUV4ZWN1dGFibGVLZXkpKSB7CisgICAgICAg
ICAgICAgICAgaWYgKENGR2V0VHlwZUlEKGJ1bmRsZUV4ZWN1dGFibGUpID09IENGU3RyaW5nR2V0
VHlwZUlEKCkpCisgICAgICAgICAgICAgICAgICAgIG5hbWUgPSByZWludGVycHJldF9jYXN0PENG
U3RyaW5nUmVmPihidW5kbGVFeGVjdXRhYmxlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
I2VuZGlmCisKKyAgICAgICAgcmV0dXJuIG5hbWU7CisgICAgfSgpOworCisgICAgcmV0dXJuIG5h
bWU7Cit9CisKK3N0YXRpYyBTdHJpbmcgc3RvcmFnZURpcmVjdG9yeShEV09SRCBwYXRoSWRlbnRp
ZmllcikKK3sKKyAgICBWZWN0b3I8VUNoYXI+IGJ1ZmZlcihNQVhfUEFUSCk7CisgICAgaWYgKEZB
SUxFRChTSEdldEZvbGRlclBhdGhXKDAsIHBhdGhJZGVudGlmaWVyIHwgQ1NJRExfRkxBR19DUkVB
VEUsIDAsIDAsIGJ1ZmZlci5kYXRhKCkpKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAg
IGJ1ZmZlci5yZXNpemUod2NzbGVuKGJ1ZmZlci5kYXRhKCkpKTsKKyAgICBTdHJpbmcgZGlyZWN0
b3J5ID0gU3RyaW5nOjphZG9wdChXVEZNb3ZlKGJ1ZmZlcikpOworCisgICAgZGlyZWN0b3J5ID0g
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRpcmVjdG9yeSwgIkFwcGxlIENvbXB1dGVyXFwiICsg
YnVuZGxlTmFtZSgpKTsKKyAgICBpZiAoIW1ha2VBbGxEaXJlY3RvcmllcyhkaXJlY3RvcnkpKQor
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICByZXR1cm4gZGlyZWN0b3J5OworfQorCitz
dGF0aWMgU3RyaW5nIGNhY2hlZFN0b3JhZ2VEaXJlY3RvcnkoRFdPUkQgcGF0aElkZW50aWZpZXIp
Cit7CisgICAgc3RhdGljIEhhc2hNYXA8RFdPUkQsIFN0cmluZz4gZGlyZWN0b3JpZXM7CisKKyAg
ICBIYXNoTWFwPERXT1JELCBTdHJpbmc+OjppdGVyYXRvciBpdCA9IGRpcmVjdG9yaWVzLmZpbmQo
cGF0aElkZW50aWZpZXIpOworICAgIGlmIChpdCAhPSBkaXJlY3Rvcmllcy5lbmQoKSkKKyAgICAg
ICAgcmV0dXJuIGl0LT52YWx1ZTsKKworICAgIFN0cmluZyBkaXJlY3RvcnkgPSBzdG9yYWdlRGly
ZWN0b3J5KHBhdGhJZGVudGlmaWVyKTsKKyAgICBkaXJlY3Rvcmllcy5hZGQocGF0aElkZW50aWZp
ZXIsIGRpcmVjdG9yeSk7CisKKyAgICByZXR1cm4gZGlyZWN0b3J5OworfQorCitzdGF0aWMgU3Ry
aW5nIGdlbmVyYXRlVGVtcG9yYXJ5UGF0aChjb25zdCBGdW5jdGlvbjxib29sKGNvbnN0IFN0cmlu
ZyYpPiYgYWN0aW9uKQoreworICAgIHdjaGFyX3QgdGVtcFBhdGhbTUFYX1BBVEhdOworICAgIGlu
dCB0ZW1wUGF0aExlbmd0aCA9IDo6R2V0VGVtcFBhdGhXKFdURl9BUlJBWV9MRU5HVEgodGVtcFBh
dGgpLCB0ZW1wUGF0aCk7CisgICAgaWYgKHRlbXBQYXRoTGVuZ3RoIDw9IDAgfHwgdGVtcFBhdGhM
ZW5ndGggPiBXVEZfQVJSQVlfTEVOR1RIKHRlbXBQYXRoKSkKKyAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOworCisgICAgU3RyaW5nIHByb3Bvc2VkUGF0aDsKKyAgICBkbyB7CisgICAgICAgIHdjaGFy
X3QgdGVtcEZpbGVbXSA9IEwiWFhYWFhYWFgudG1wIjsgLy8gVXNlIDguMyBzdHlsZSBuYW1lICht
b3JlIGNoYXJhY3RlcnMgYXJlbid0IGhlbHBmdWwgZHVlIHRvIDguMyBzaG9ydCBmaWxlIG5hbWVz
KQorICAgICAgICBjb25zdCBpbnQgcmFuZG9tUGFydExlbmd0aCA9IDg7CisgICAgICAgIGNyeXB0
b2dyYXBoaWNhbGx5UmFuZG9tVmFsdWVzKHRlbXBGaWxlLCByYW5kb21QYXJ0TGVuZ3RoICogc2l6
ZW9mKHdjaGFyX3QpKTsKKworICAgICAgICAvLyBMaW1pdCB0byB2YWxpZCBmaWxlc3lzdGVtIGNo
YXJhY3RlcnMsIGFsc28gZXhjbHVkaW5nIG90aGVycyB0aGF0IGNvdWxkIGJlIHByb2JsZW1hdGlj
LCBsaWtlIHB1bmN0dWF0aW9uLgorICAgICAgICAvLyBkb24ndCBpbmNsdWRlIGJvdGggdXBwZXIg
YW5kIGxvd2VyY2FzZSBzaW5jZSBXaW5kb3dzIGZpbGUgc3lzdGVtcyBhcmUgdHlwaWNhbGx5IG5v
dCBjYXNlIHNlbnNpdGl2ZS4KKyAgICAgICAgY29uc3QgY2hhciB2YWxpZENoYXJzW10gPSAiMDEy
MzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IjsKKyAgICAgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCByYW5kb21QYXJ0TGVuZ3RoOyArK2kpCisgICAgICAgICAgICB0ZW1wRmlsZVtpXSA9
IHZhbGlkQ2hhcnNbdGVtcEZpbGVbaV0gJSAoc2l6ZW9mKHZhbGlkQ2hhcnMpIC0gMSldOworCisg
ICAgICAgIEFTU0VSVCh3Y3NsZW4odGVtcEZpbGUpID09IFdURl9BUlJBWV9MRU5HVEgodGVtcEZp
bGUpIC0gMSk7CisKKyAgICAgICAgcHJvcG9zZWRQYXRoID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KG51bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmluZyh0ZW1wUGF0aCksIG51bGxUZXJtaW5hdGVk
V0NoYXJUb1N0cmluZyh0ZW1wRmlsZSkpOworICAgICAgICBpZiAocHJvcG9zZWRQYXRoLmlzRW1w
dHkoKSkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0gd2hpbGUgKCFhY3Rpb24ocHJvcG9zZWRQ
YXRoKSk7CisKKyAgICByZXR1cm4gcHJvcG9zZWRQYXRoOworfQorCitTdHJpbmcgb3BlblRlbXBv
cmFyeUZpbGUoY29uc3QgU3RyaW5nJiwgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpCit7Cisg
ICAgaGFuZGxlID0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7CisKKyAgICBTdHJpbmcgcHJvcG9zZWRQ
YXRoID0gZ2VuZXJhdGVUZW1wb3JhcnlQYXRoKFsmaGFuZGxlXShjb25zdCBTdHJpbmcmIHByb3Bv
c2VkUGF0aCkgeworICAgICAgICAvLyB1c2UgQ1JFQVRFX05FVyB0byBhdm9pZCBvdmVyd3JpdGlu
ZyBhbiBleGlzdGluZyBmaWxlIHdpdGggdGhlIHNhbWUgbmFtZQorICAgICAgICBoYW5kbGUgPSA6
OkNyZWF0ZUZpbGVXKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihwcm9wb3NlZFBhdGgpLmRh
dGEoKSwgR0VORVJJQ19SRUFEIHwgR0VORVJJQ19XUklURSwgMCwgMCwgQ1JFQVRFX05FVywgRklM
RV9BVFRSSUJVVEVfTk9STUFMLCAwKTsKKworICAgICAgICByZXR1cm4gaXNIYW5kbGVWYWxpZCho
YW5kbGUpIHx8IEdldExhc3RFcnJvcigpID09IEVSUk9SX0FMUkVBRFlfRVhJU1RTOworICAgIH0p
OworCisgICAgaWYgKCFpc0hhbmRsZVZhbGlkKGhhbmRsZSkpCisgICAgICAgIHJldHVybiBTdHJp
bmcoKTsKKworICAgIHJldHVybiBwcm9wb3NlZFBhdGg7Cit9CisKK1BsYXRmb3JtRmlsZUhhbmRs
ZSBvcGVuRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVPcGVuTW9kZSBtb2RlKQoreworICAg
IERXT1JEIGRlc2lyZWRBY2Nlc3MgPSAwOworICAgIERXT1JEIGNyZWF0aW9uRGlzcG9zaXRpb24g
PSAwOworICAgIERXT1JEIHNoYXJlTW9kZSA9IDA7CisgICAgc3dpdGNoIChtb2RlKSB7CisgICAg
Y2FzZSBGaWxlT3Blbk1vZGU6OlJlYWQ6CisgICAgICAgIGRlc2lyZWRBY2Nlc3MgPSBHRU5FUklD
X1JFQUQ7CisgICAgICAgIGNyZWF0aW9uRGlzcG9zaXRpb24gPSBPUEVOX0VYSVNUSU5HOworICAg
ICAgICBzaGFyZU1vZGUgPSBGSUxFX1NIQVJFX1JFQUQ7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgRmlsZU9wZW5Nb2RlOjpXcml0ZToKKyAgICAgICAgZGVzaXJlZEFjY2VzcyA9IEdFTkVSSUNf
V1JJVEU7CisgICAgICAgIGNyZWF0aW9uRGlzcG9zaXRpb24gPSBDUkVBVEVfQUxXQVlTOworICAg
ICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICB9CisKKyAgICBTdHJpbmcgZGVzdGluYXRpb24gPSBwYXRoOworICAgIHJldHVybiBDcmVh
dGVGaWxlKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihkZXN0aW5hdGlvbikuZGF0YSgpLCBk
ZXNpcmVkQWNjZXNzLCBzaGFyZU1vZGUsIDAsIGNyZWF0aW9uRGlzcG9zaXRpb24sIEZJTEVfQVRU
UklCVVRFX05PUk1BTCwgMCk7Cit9CisKK3ZvaWQgY2xvc2VGaWxlKFBsYXRmb3JtRmlsZUhhbmRs
ZSYgaGFuZGxlKQoreworICAgIGlmIChpc0hhbmRsZVZhbGlkKGhhbmRsZSkpIHsKKyAgICAgICAg
OjpDbG9zZUhhbmRsZShoYW5kbGUpOworICAgICAgICBoYW5kbGUgPSBpbnZhbGlkUGxhdGZvcm1G
aWxlSGFuZGxlOworICAgIH0KK30KKworbG9uZyBsb25nIHNlZWtGaWxlKFBsYXRmb3JtRmlsZUhh
bmRsZSBoYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQsIEZpbGVTZWVrT3JpZ2luIG9yaWdpbikKK3sK
KyAgICBEV09SRCBtb3ZlTWV0aG9kID0gRklMRV9CRUdJTjsKKworICAgIGlmIChvcmlnaW4gPT0g
RmlsZVNlZWtPcmlnaW46OkN1cnJlbnQpCisgICAgICAgIG1vdmVNZXRob2QgPSBGSUxFX0NVUlJF
TlQ7CisgICAgZWxzZSBpZiAob3JpZ2luID09IEZpbGVTZWVrT3JpZ2luOjpFbmQpCisgICAgICAg
IG1vdmVNZXRob2QgPSBGSUxFX0VORDsKKworICAgIExBUkdFX0lOVEVHRVIgbGFyZ2VPZmZzZXQ7
CisgICAgbGFyZ2VPZmZzZXQuUXVhZFBhcnQgPSBvZmZzZXQ7CisKKyAgICBsYXJnZU9mZnNldC5M
b3dQYXJ0ID0gU2V0RmlsZVBvaW50ZXIoaGFuZGxlLCBsYXJnZU9mZnNldC5Mb3dQYXJ0LCAmbGFy
Z2VPZmZzZXQuSGlnaFBhcnQsIG1vdmVNZXRob2QpOworCisgICAgaWYgKGxhcmdlT2Zmc2V0Lkxv
d1BhcnQgPT0gSU5WQUxJRF9TRVRfRklMRV9QT0lOVEVSICYmIEdldExhc3RFcnJvcigpICE9IE5P
X0VSUk9SKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICByZXR1cm4gbGFyZ2VPZmZzZXQuUXVh
ZFBhcnQ7Cit9CisKK2ludCB3cml0ZVRvRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBj
b25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQoreworICAgIGlmICghaXNIYW5kbGVWYWxpZCho
YW5kbGUpKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBEV09SRCBieXRlc1dyaXR0ZW47Cisg
ICAgYm9vbCBzdWNjZXNzID0gV3JpdGVGaWxlKGhhbmRsZSwgZGF0YSwgbGVuZ3RoLCAmYnl0ZXNX
cml0dGVuLCAwKTsKKworICAgIGlmICghc3VjY2VzcykKKyAgICAgICAgcmV0dXJuIC0xOworICAg
IHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KGJ5dGVzV3JpdHRlbik7Cit9CisKK2ludCByZWFkRnJv
bUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY2hhciogZGF0YSwgaW50IGxlbmd0aCkK
K3sKKyAgICBpZiAoIWlzSGFuZGxlVmFsaWQoaGFuZGxlKSkKKyAgICAgICAgcmV0dXJuIC0xOwor
CisgICAgRFdPUkQgYnl0ZXNSZWFkOworICAgIGJvb2wgc3VjY2VzcyA9IDo6UmVhZEZpbGUoaGFu
ZGxlLCBkYXRhLCBsZW5ndGgsICZieXRlc1JlYWQsIDApOworCisgICAgaWYgKCFzdWNjZXNzKQor
ICAgICAgICByZXR1cm4gLTE7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oYnl0ZXNSZWFk
KTsKK30KKworYm9vbCBoYXJkTGlua09yQ29weUZpbGUoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNv
bnN0IFN0cmluZyYgZGVzdGluYXRpb24pCit7CisgICAgcmV0dXJuICEhOjpDb3B5RmlsZShzdHJp
bmdUb051bGxUZXJtaW5hdGVkV0NoYXIoc291cmNlKS5kYXRhKCksIHN0cmluZ1RvTnVsbFRlcm1p
bmF0ZWRXQ2hhcihkZXN0aW5hdGlvbikuZGF0YSgpLCBUUlVFKTsKK30KKworU3RyaW5nIGxvY2Fs
VXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIGNhY2hlZFN0b3Jh
Z2VEaXJlY3RvcnkoQ1NJRExfTE9DQUxfQVBQREFUQSk7Cit9CisKK1N0cmluZyByb2FtaW5nVXNl
clNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIGNhY2hlZFN0b3JhZ2VE
aXJlY3RvcnkoQ1NJRExfQVBQREFUQSk7Cit9CisKK1ZlY3RvcjxTdHJpbmc+IGxpc3REaXJlY3Rv
cnkoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIGNvbnN0IFN0cmluZyYgZmlsdGVyKQoreworICAg
IFZlY3RvcjxTdHJpbmc+IGVudHJpZXM7CisKKyAgICBQYXRoV2Fsa2VyIHdhbGtlcihkaXJlY3Rv
cnksIGZpbHRlcik7CisgICAgaWYgKCF3YWxrZXIuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4g
ZW50cmllczsKKworICAgIGRvIHsKKyAgICAgICAgaWYgKHdhbGtlci5kYXRhKCkuZHdGaWxlQXR0
cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWQorICAgICAgICAgICAgJiYgKCF3Y3Nj
bXAod2Fsa2VyLmRhdGEoKS5jRmlsZU5hbWUsIEwiLiIpIHx8ICF3Y3NjbXAod2Fsa2VyLmRhdGEo
KS5jRmlsZU5hbWUsIEwiLi4iKSkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBl
bnRyaWVzLmFwcGVuZChkaXJlY3RvcnkgKyAiXFwiICsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBV
Q2hhcio+KHdhbGtlci5kYXRhKCkuY0ZpbGVOYW1lKSk7CisgICAgfSB3aGlsZSAod2Fsa2VyLnN0
ZXAoKSk7CisKKyAgICByZXR1cm4gZW50cmllczsKK30KKworYm9vbCBnZXRWb2x1bWVGcmVlU3Bh
Y2UoY29uc3QgU3RyaW5nJiwgdWludDY0X3QmKQoreworICAgIHJldHVybiBmYWxzZTsKK30KKwor
T3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0IENTdHJpbmcmIGZzRmlsZSkK
K3sKKyAgICBhdXRvIGhhbmRsZSA9IG9wZW5GaWxlKGZzRmlsZS5kYXRhKCksIEZpbGVPcGVuTW9k
ZTo6UmVhZCk7CisgICAgaWYgKCFpc0hhbmRsZVZhbGlkKGhhbmRsZSkpCisgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisKKyAgICBCWV9IQU5ETEVfRklMRV9JTkZPUk1BVElPTiBmaWxlSW5m
b3JtYXRpb24gPSB7IH07CisgICAgaWYgKCE6OkdldEZpbGVJbmZvcm1hdGlvbkJ5SGFuZGxlKGhh
bmRsZSwgJmZpbGVJbmZvcm1hdGlvbikpIHsKKyAgICAgICAgY2xvc2VGaWxlKGhhbmRsZSk7Cisg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgfQorCisgICAgY2xvc2VGaWxlKGhhbmRs
ZSk7CisKKyAgICByZXR1cm4gZmlsZUluZm9ybWF0aW9uLmR3Vm9sdW1lU2VyaWFsTnVtYmVyOwor
fQorCitTdHJpbmcgcmVhbFBhdGgoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKK3sKKyAgICByZXR1
cm4gZ2V0RmluYWxQYXRoTmFtZShmaWxlUGF0aCk7Cit9CisKK1N0cmluZyBjcmVhdGVUZW1wb3Jh
cnlEaXJlY3RvcnkoKQoreworICAgIHJldHVybiBnZW5lcmF0ZVRlbXBvcmFyeVBhdGgoW10oY29u
c3QgU3RyaW5nJiBwcm9wb3NlZFBhdGgpIHsKKyAgICAgICAgcmV0dXJuIG1ha2VBbGxEaXJlY3Rv
cmllcyhwcm9wb3NlZFBhdGgpOworICAgIH0pOworfQorCitib29sIGRlbGV0ZU5vbkVtcHR5RGly
ZWN0b3J5KGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5UGF0aCkKK3sKKyAgICBTSEZJTEVPUFNUUlVD
VCBkZWxldGVPcGVyYXRpb24gPSB7CisgICAgICAgIG51bGxwdHIsCisgICAgICAgIEZPX0RFTEVU
RSwKKyAgICAgICAgc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGRpcmVjdG9yeVBhdGgpLmRh
dGEoKSwKKyAgICAgICAgTCIiLAorICAgICAgICBGT0ZfTk9DT05GSVJNQVRJT04gfCBGT0ZfTk9F
UlJPUlVJIHwgRk9GX1NJTEVOVCwKKyAgICAgICAgZmFsc2UsCisgICAgICAgIDAsCisgICAgICAg
IEwiIgorICAgIH07CisgICAgcmV0dXJuICFTSEZpbGVPcGVyYXRpb24oJmRlbGV0ZU9wZXJhdGlv
bik7Cit9CisKK30gLy8gbmFtZXNwYWNlIEZpbGVTeXN0ZW0KK30gLy8gbmFtZXNwYWNlIFdURgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvd2luL1BhdGhXYWxrZXIuY3BwIGIvU291cmNlL1dU
Ri93dGYvd2luL1BhdGhXYWxrZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM2ZDNmOTcwNjA0OWNiMTNjOWVm
NjM1NWViYjYzYTUwNzk4NTAyMjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93
aW4vUGF0aFdhbGtlci5jcHAKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlIDx3dGYvd2luL1BhdGhXYWxrZXIuaD4KKworI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmlu
Z0V4dHJhcy5oPgorCituYW1lc3BhY2UgV1RGIHsKKworUGF0aFdhbGtlcjo6UGF0aFdhbGtlcihj
b25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgY29uc3QgU3RyaW5nJiBwYXR0ZXJuKQoreworICAgIFN0
cmluZyBwYXRoID0gZGlyZWN0b3J5ICsgIlxcIiArIHBhdHRlcm47CisgICAgbV9oYW5kbGUgPSA6
OkZpbmRGaXJzdEZpbGVXKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihwYXRoKS5kYXRhKCks
ICZtX2RhdGEpOworfQorCitQYXRoV2Fsa2VyOjp+UGF0aFdhbGtlcigpCit7CisgICAgaWYgKCFp
c1ZhbGlkKCkpCisgICAgICAgIHJldHVybjsKKyAgICA6OkZpbmRDbG9zZShtX2hhbmRsZSk7Cit9
CisKK2Jvb2wgUGF0aFdhbGtlcjo6c3RlcCgpCit7CisgICAgcmV0dXJuIDo6RmluZE5leHRGaWxl
VyhtX2hhbmRsZSwgJm1fZGF0YSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvd2luL1BhdGhXYWxrZXIuaCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9Q
YXRoV2Fsa2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTUzYWUyZTZhZTg1NjFhZjM0NTRlMjE4Mzg4ZGY4OTAw
NWVhMzNiYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9QYXRoV2Fsa2Vy
LmgKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgPFdpbmRvd3Mu
aD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5o
PgorCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3MgUGF0aFdhbGtlciB7CisgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoUGF0aFdhbGtlcik7CitwdWJsaWM6CisgICAgUGF0aFdhbGtlcihjb25zdCBX
VEY6OlN0cmluZyYgZGlyZWN0b3J5LCBjb25zdCBXVEY6OlN0cmluZyYgcGF0dGVybik7CisgICAg
flBhdGhXYWxrZXIoKTsKKworICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1faGFu
ZGxlICE9IElOVkFMSURfSEFORExFX1ZBTFVFOyB9CisgICAgY29uc3QgV0lOMzJfRklORF9EQVRB
VyYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQorCisgICAgYm9vbCBzdGVwKCk7CisK
K3ByaXZhdGU6CisgICAgSEFORExFIG1faGFuZGxlOworICAgIFdJTjMyX0ZJTkRfREFUQVcgbV9k
YXRhOworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL0NETS5jcHAKaW5kZXggOTM1NjY1MDFhOTllMTk4ODhiMWJkMzk1NDUy
ODgxYzQ3NDU1N2RmNi4uODE4ZjIyNGJkNTY0ODNjOGFkNjYwMmIzMDJkNmFlMGI3MmRlZDFhNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcApAQCAt
MzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIkNETUZhY3RvcnkuaCIKICNpbmNsdWRlICJDRE1Qcml2
YXRlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAj
aW5jbHVkZSAiSW5pdERhdGFSZWdpc3RyeS5oIgogI2luY2x1ZGUgIk1lZGlhS2V5c1JlcXVpcmVt
ZW50LmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKQEAgLTQyLDYgKzQxLDcgQEAKICNpbmNs
dWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luRGF0YS5oIgog
I2luY2x1ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0
TWVkaWFLZXlTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5U2Vzc2lvbi5jcHAKaW5kZXggZTY2NmNlOTc5MzY3NDVl
ZGEwMTA2NjA3OTc4ZjZlOTgwOWZmMGIzOS4uNjVlZGRhMTZmNzk1MGQyNDliY2Y3MzE2Mjg2MTUw
ODU0ZWYyODFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNlc3Npb24uY3Bw
CkBAIC0zMCwxMyArMzAsMTMgQEAKIAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAi
RXZlbnROYW1lcy5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJQYWdlLmgi
CiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5EYXRhLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIK
ICNpbmNsdWRlICJXZWJLaXRNZWRpYUtleUVycm9yLmgiCiAjaW5jbHVkZSAiV2ViS2l0TWVkaWFL
ZXlNZXNzYWdlRXZlbnQuaCIKICNpbmNsdWRlICJXZWJLaXRNZWRpYUtleXMuaCIKKyNpbmNsdWRl
IDx3dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcAppbmRleCA2
ZGQ0MTcxMzA4YWQ0NjdmMmE0YzI3YzljZTk3NzI5YjNmYWQ4Y2Y5Li4zNjg3OTRlZjVjMWEwZmU3
OThiMmExYmE1MDg4NmMwYjRmZWJjYjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwCkBAIC0yNywxMiArMjcsMTIgQEAKICNp
bmNsdWRlICJET01GaWxlU3lzdGVtLmgiCiAKICNpbmNsdWRlICJGaWxlLmgiCi0jaW5jbHVkZSAi
RmlsZU1ldGFkYXRhLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkZpbGVT
eXN0ZW1EaXJlY3RvcnlFbnRyeS5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW1GaWxlRW50cnkuaCIK
ICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSA8d3RmL0Nyb3Nz
VGhyZWFkQ29waWVyLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVNZXRhZGF0YS5oPgorI2luY2x1ZGUg
PHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL1VVSUQuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRW50cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1FbnRyeS5jcHAKaW5kZXggZGNjYjVhMTE4NjNkOWJiMTBm
Mjg3ZDU3ZmRjMTM5YTBiOWIxYjExMS4uNDI0Y2NhMjZjZDRjN2I4NjEwM2ZkNTIwZjFmZjcwZjBk
YTAzNTFlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0Zp
bGVTeXN0ZW1FbnRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBp
L0ZpbGVTeXN0ZW1FbnRyeS5jcHAKQEAgLTI5LDEwICsyOSwxMCBAQAogI2luY2x1ZGUgIkRPTUV4
Y2VwdGlvbi5oIgogI2luY2x1ZGUgIkRPTUZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJFcnJvckNh
bGxiYWNrLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW1E
aXJlY3RvcnlFbnRyeS5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW1FbnRyeUNhbGxiYWNrLmgiCiAj
aW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lz
dGVtLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5jcHAKaW5kZXgg
YzdmZGZkMGRkNjU0NWY4YzZmZTUzNDJmYjM2NDZmZTlhODQ2OTRiOS4uYjQyOWIzZjI2YjkzNDZm
YmIxZGFlN2VjNjUwZTQ2ZTI1NmRmYzhjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuY3BwCkBAIC0yOCw4
ICsyOCw4IEBACiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAotI2luY2x1ZGUgIkZp
bGVTeXN0ZW0uaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgPHd0Zi9G
aWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDIxNzhj
YzQyYTliNTExNDNjZTVkODVmNGQxMWY3YWIyNjA5MjRlYzcuLjI4NWQ1MDJkYWU4MWE5YTc2OGFh
MzRhMWQyNTZkZjUwNDdkNjFiZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3Bw
CkBAIC0yOCw3ICsyOCw2IEBACiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAotI2lu
Y2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJJREJCaW5kaW5nVXRpbGl0aWVzLmgiCiAj
aW5jbHVkZSAiSURCR2V0QWxsUmVjb3Jkc0RhdGEuaCIKICNpbmNsdWRlICJJREJHZXRBbGxSZXN1
bHQuaCIKQEAgLTU0LDYgKzUzLDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0dsb2Jh
bE9iamVjdC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZ0lubGluZXMuaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJ1Y3R1cmVJbmxpbmVzLmg+CisjaW5jbHVkZSA8d3Rm
L0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL1NRTGl0ZUlEQlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJUcmFuc2FjdGlvbi5jcHAKaW5kZXggNzgxYjc5
ZjYzYTA2MWQ1OGQxYzkyYTQxM2MyMWFmZGU2NTY0OTM2ZS4uYmVlYTZiMTY3MDYyNGU1Yzk4MGYz
MTY2MzRjMDM2NWRmZGViYzZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQlRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCVHJhbnNhY3Rpb24uY3BwCkBA
IC0yNywxMyArMjcsMTMgQEAKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCi0jaW5j
bHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIklEQkN1cnNvckluZm8uaCIKICNpbmNsdWRl
ICJJbmRleGVkREIuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiU1FMaXRlSURC
QmFja2luZ1N0b3JlLmgiCiAjaW5jbHVkZSAiU1FMaXRlSURCQ3Vyc29yLmgiCiAjaW5jbHVkZSAi
U1FMaXRlVHJhbnNhY3Rpb24uaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgSURCU2VydmVyIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNl
cnZlci5jcHAKaW5kZXggNjFhZWI4ZjdkNzAxNTFiOTQyMjg1YWNkY2NmODFiZmIxZWE0MjYyNi4u
ZGQ5ZjVhZDI5MzE3YzVjZGM3NTg4MzJhYzZhMzcwYmRmOTVkZDg5OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vz
c0lEQlNlcnZlci5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RB
VEFCQVNFKQogCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIklEQkNvbm5lY3Rp
b25Ub0NsaWVudC5oIgogI2luY2x1ZGUgIklEQkNvbm5lY3Rpb25Ub1NlcnZlci5oIgogI2luY2x1
ZGUgIklEQkN1cnNvckluZm8uaCIKQEAgLTQwLDYgKzM5LDcgQEAKICNpbmNsdWRlICJJREJSZXN1
bHREYXRhLmgiCiAjaW5jbHVkZSAiSURCVmFsdWUuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisj
aW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKaW5kZXggZDk2NTQxZWQ0OWY2OTM4MjRlZDFk
ZmM1MjUwODhkYWMzMmJjNTljNS4uNDA4ZjYyMjEyYWUyYjE3YjM4YWMxOTA5ODk1MWEwZjA5MmQ0
YjA0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZVRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2VUcmFja2VyLmNwcApAQCAtMzQsNyArMzQsNiBAQAogI2luY2x1ZGUgIkRhdGFiYXNl
TWFuYWdlci5oIgogI2luY2x1ZGUgIkRhdGFiYXNlTWFuYWdlckNsaWVudC5oIgogI2luY2x1ZGUg
IkRhdGFiYXNlVGhyZWFkLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKICNpbmNsdWRlICJPcmlnaW5Mb2NrLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmln
aW4uaCIKQEAgLTQzLDYgKzQyLDcgQEAKICNpbmNsdWRlICJTUUxpdGVGaWxlU3lzdGVtLmgiCiAj
aW5jbHVkZSAiU1FMaXRlU3RhdGVtZW50LmgiCiAjaW5jbHVkZSAiU1FMaXRlVHJhbnNhY3Rpb24u
aCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFk
Lmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9PcmlnaW5Mb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvT3Jp
Z2luTG9jay5jcHAKaW5kZXggNDIzYjJlNjZkZGZhMTJjYzM0MGY2MGZjZTU5ZDM1M2RmOTk4Njdm
NC4uYTIxYmNkYjc4Mzg2YzgxMGVjNTk5NDFjMjc1ZjRlZmJhZmYyM2ZiMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5Mb2NrLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL09yaWdpbkxvY2suY3BwCkBAIC0yNiw4
ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiT3JpZ2luTG9jay5oIgog
Ci0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFN0cmlu
ZyBPcmlnaW5Mb2NrOjpsb2NrRmlsZU5hbWVGb3JQYXRoKFN0cmluZyBvcmlnaW5QYXRoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5Mb2NrLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL09yaWdpbkxvY2suaAppbmRleCBh
MTZlODRmMTQ4OWRhZjJlZThmNTA0NjE5ZDEzOTkzYjhkMzc1ZTEwLi5lY2MyOWU4OTAyNWJkZjYy
OTM5MmIxMDU5ZWY4ODcwZTZmOGY5MmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL09yaWdpbkxvY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL09yaWdpbkxvY2suaApAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9u
Y2UKIAotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5o
PgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3Vu
dGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL2NvY29hL0RhdGFiYXNlTWFuYWdlckNvY29h
Lm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9jb2NvYS9EYXRhYmFzZU1h
bmFnZXJDb2NvYS5tbQppbmRleCA3Y2ZlOWZiMDYzMjY5MTgxZDQ0ZjEzYzM4MzY4MjUzM2Q0ZTRk
ZmM5Li44ZDMyNTA3M2IwNGFjYTFkMzI4NDk2ZTE4MjgzMzhkZmViY2FiZmYzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL2NvY29hL0RhdGFiYXNlTWFuYWdl
ckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvY29jb2Ev
RGF0YWJhc2VNYW5hZ2VyQ29jb2EubW0KQEAgLTI5LDcgKzI5LDcgQEAKICNpbXBvcnQgImNvbmZp
Zy5oIgogI2ltcG9ydCAiRGF0YWJhc2VNYW5hZ2VyLmgiCiAKLSNpbXBvcnQgIkZpbGVTeXN0ZW0u
aCIKKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDEwZGYzZWU0Y2Y3YmU4MjgzZTc1Njc1MzdlYmRiYzIwMzE2OWIzOTMuLjU1OWZjMGQxMWY0
ZGYxMTZjZTY3ZmViZDUzNjIyNmFiNDRiMDEyM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9Q
QUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEzMSw3ICsxMzEsNiBAQAogCQlB
MTE3NUI1NzFGNkI0NzA1MDBDNEI5RjAgLyogRGVmYXVsdFNlYXJjaFByb3ZpZGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTE3NUI1NTFGNkI0NzA1
MDBDNEI5RjAgLyogRGVmYXVsdFNlYXJjaFByb3ZpZGVyLmggKi87IH07CiAJCUExMTc1QjU4MUY2
QjQ3MDUwMEM0QjlGMCAvKiBEZWZhdWx0U2VhcmNoUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTExNzVCNTYxRjZCNDcwNTAwQzRCOUYw
IC8qIERlZmF1bHRTZWFyY2hQcm92aWRlci5jcHAgKi87IH07CiAJCUExMTc1QjVBMUY2QjRBODQw
MEM0QjlGMCAvKiBOU1Njcm9sbFZpZXdTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEExMTc1QjU5MUY2QjRBODQwMEM0QjlGMCAvKiBOU1Njcm9sbFZp
ZXdTUEkuaCAqLzsgfTsKLQkJQTFGNTVEQ0YxRjU1MjhFQzAwRURCNzVGIC8qIE1ldGFkYXRhU1BJ
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUY1NURD
RTFGNTUyOEVDMDBFREI3NUYgLyogTWV0YWRhdGFTUEkuaCAqLzsgfTsKIAkJQTFGNjNDOUYyMUE0
REJGNzAwNkZCNDNCIC8qIFBhc3NLaXRTb2Z0TGluay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFGNjNDOUQyMUE0REJGNzAwNkZCNDNCIC8qIFBhc3NL
aXRTb2Z0TGluay5oICovOyB9OwogCQlBMUY2M0NBMDIxQTREQkY3MDA2RkI0M0IgLyogUGFzc0tp
dFNvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTFGNjNDOUUyMUE0REJGNzAwNkZCNDNCIC8qIFBhc3NLaXRTb2Z0TGluay5tbSAqLzsgfTsK
IAkJQTMwRDQxMjExRjBERDBFQTAwQjcxOTU0IC8qIEtpbGxSaW5nLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMzBENDExRTFGMEREMEVBMDBCNzE5NTQg
LyogS2lsbFJpbmcuaCAqLzsgfTsKQEAgLTI5MCw3ICsyODksNiBAQAogCQlBMTE3NUI1NTFGNkI0
NzA1MDBDNEI5RjAgLyogRGVmYXVsdFNlYXJjaFByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERl
ZmF1bHRTZWFyY2hQcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTE3
NUI1NjFGNkI0NzA1MDBDNEI5RjAgLyogRGVmYXVsdFNlYXJjaFByb3ZpZGVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IERlZmF1bHRTZWFyY2hQcm92aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUExMTc1QjU5MUY2QjRBODQwMEM0QjlGMCAvKiBOU1Njcm9sbFZpZXdTUEku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTlNTY3JvbGxWaWV3U1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUExRjU1RENFMUY1NTI4RUMwMEVEQjc1RiAvKiBNZXRhZGF0YVNQSS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBNZXRhZGF0YVNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
MUY2M0M5RDIxQTREQkY3MDA2RkI0M0IgLyogUGFzc0tpdFNvZnRMaW5rLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFBhc3NLaXRTb2Z0TGluay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMUY2
M0M5RTIxQTREQkY3MDA2RkI0M0IgLyogUGFzc0tpdFNvZnRMaW5rLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gUGFzc0tpdFNvZnRMaW5rLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBMzBENDExRTFGMEREMEVBMDBCNzE5NTQgLyogS2lsbFJpbmcuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gS2lsbFJpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTQ0NSw3ICs0NDMsNiBAQAogCQkJCUExMDI2NTg4MUY1Njc0N0EwMEI0Qzg0NCAvKiBISVRv
b2xib3hTUEkuaCAqLywKIAkJCQkwQzc3ODU3MjFGNDUxMzBGMDBGNEVCQjYgLyogTG9va3VwU1BJ
LmggKi8sCiAJCQkJMEM3Nzg1NzMxRjQ1MTMwRjAwRjRFQkI2IC8qIE1lZGlhUmVtb3RlU1BJLmgg
Ki8sCi0JCQkJQTFGNTVEQ0UxRjU1MjhFQzAwRURCNzVGIC8qIE1ldGFkYXRhU1BJLmggKi8sCiAJ
CQkJMEM3Nzg1NzQxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TQWNjZXNzaWJpbGl0eVNQSS5oICovLAog
CQkJCTFDQ0VFNEY2MjBEODc0M0YwMDQ3QjA5NyAvKiBOU0FwcGVhcmFuY2VTUEkuaCAqLywKIAkJ
CQkwQzc3ODU3NTFGNDUxMzBGMDBGNEVCQjYgLyogTlNBcHBsaWNhdGlvblNQSS5oICovLApAQCAt
Njk1LDcgKzY5Miw2IEBACiAJCQkJMEM1QUY5MUQxRjQzQTRDNzAwMkVBQzAyIC8qIE1lZGlhUGxh
eWVyU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzc3ODU4QzFGNDUxMzBGMDBGNEVCQjYgLyog
TWVkaWFSZW1vdGVTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBDMDBDRkQ0MUY2OENFNDYwMEFB
QzI2RCAvKiBNZWRpYVRpbWVBVkZvdW5kYXRpb24uaCBpbiBIZWFkZXJzICovLAotCQkJCUExRjU1
RENGMUY1NTI4RUMwMEVEQjc1RiAvKiBNZXRhZGF0YVNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEM1QUY5MUUxRjQzQTRDNzAwMkVBQzAyIC8qIE1vYmlsZUdlc3RhbHRTUEkuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBDMkRBMTQ5MUYzQkVCNDkwMERCQzMxNyAvKiBORUZpbHRlclNvdXJjZVNQSS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEM3Nzg1OEQxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TQWNjZXNz
aWJpbGl0eVNQSS5oIGluIEhlYWRlcnMgKi8sCkBAIC03MjAsNiArNzE2LDcgQEAKIAkJCQkwQzc3
ODU5MzFGNDUxMzBGMDBGNEVCQjYgLyogTlNQYXN0ZWJvYXJkU1BJLmggaW4gSGVhZGVycyAqLywK
IAkJCQlFNUQ0NUQxNDIxMDZBMTg3MDBEMkI3MzggLyogTlNQb3BvdmVyQ29sb3JXZWxsU1BJLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwQzc3ODU5NDFGNDUxMzBGMDBGNEVCQjYgLyogTlNQb3BvdmVy
U1BJLmggaW4gSGVhZGVycyAqLywKKwkJCQk2M0M3RURDNzIxQUZBRTA0MDA2QTdCOTkgLyogTlNQ
cm9ncmVzc1NQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTEwODI2RjExRjU3M0JDQTAwNDc3MkFD
IC8qIE5TUmVzcG9uZGVyU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzc3ODU5NTFGNDUxMzBG
MDBGNEVCQjYgLyogTlNTY3JvbGxlckltcFNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEM3Nzg1
OTYxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TU2Nyb2xsaW5nSW5wdXRGaWx0ZXJTUEkuaCBpbiBIZWFk
ZXJzICovLApAQCAtNzQ2LDcgKzc0Myw2IEBACiAJCQkJMEM3Nzg1OUYxRjQ1MTMwRjAwRjRFQkI2
IC8qIFFUS2l0U1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzJEQTE1NzFGM0JFQjQ5MDBEQkMz
MTcgLyogUXVhcnR6Q29yZVNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTEwMjY1OEIxRjU2NzQ4
QzAwQjRDODQ0IC8qIFF1aWNrRHJhd1NQSS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNjNDN0VEQzcy
MUFGQUUwNDAwNkE3Qjk5IC8qIE5TUHJvZ3Jlc3NTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBD
Nzc4NUEwMUY0NTEzMEYwMEY0RUJCNiAvKiBRdWlja0xvb2tNYWNTUEkuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBDNUFGOTIwMUY0M0E0QzcwMDJFQUMwMiAvKiBRdWlja0xvb2tTUEkuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQ0Mjk1NkNEMjE4QTcyREYwMDgwREI1NCAvKiBSZXZlYWxTUEkuaCBpbiBI
ZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9QbGF0Zm9ybU1h
Yy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXgg
NmIxYmQyNTkyNmY0MmJkNjQ2MDMyYWQ5MDRhNzg3ZTY5Yjc1MGFjOS4uZjEzMDc2ODQzZjg4MzE2
YmMzOGJkODBkYTcyZjQ4OWE4MjM3NjI4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRm
b3JtTWFjLmNtYWtlCkBAIC01OCw3ICs1OCw2IEBAIGxpc3QoQVBQRU5EIFBBTF9QVUJMSUNfSEVB
REVSUwogICAgIHNwaS9tYWMvSElUb29sYm94U1BJLmgKICAgICBzcGkvbWFjL0xvb2t1cFNQSS5o
CiAgICAgc3BpL21hYy9NZWRpYVJlbW90ZVNQSS5oCi0gICAgc3BpL21hYy9NZXRhZGF0YVNQSS5o
CiAgICAgc3BpL21hYy9OU0FjY2Vzc2liaWxpdHlTUEkuaAogICAgIHNwaS9tYWMvTlNBcHBlYXJh
bmNlU1BJLmgKICAgICBzcGkvbWFjL05TQXBwbGljYXRpb25TUEkuaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvbWFjL01ldGFkYXRhU1BJLmggYi9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL3NwaS9tYWMvTWV0YWRhdGFTUEkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMmUxOTEyZWY5ZjZjODRjNzc1YWJlZGQ1MDkxNzA3NTE1YTI0ZjkyZi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL3NwaS9tYWMvTWV0YWRhdGFTUEkuaAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREsp
Ci0KLSNpbmNsdWRlIDxNZXRhZGF0YS9NZXRhZGF0YVByaXYuaD4KLQotI2VuZGlmCi0KLVdURl9F
WFRFUk5fQ19CRUdJTgotCi1Cb29sZWFuIE1ESXRlbVNldEF0dHJpYnV0ZShNREl0ZW1SZWYsIENG
U3RyaW5nUmVmIG5hbWUsIENGVHlwZVJlZiBhdHRyKTsKLQotV1RGX0VYVEVSTl9DX0VORApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCA4NjZlYTZhNTRiOWE0MmY4NzhkNGUxOWI2NTBhMmMz
YzNiYTIwOWE5Li40ZDcyZjlkZWVmODBlYjZlNDQ1Njc5NzNkNWM2ZGNmZjY5MDU1Yjg2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtMTg5LDcgKzE4OSw2IEBAIGxpc3QoQVBQRU5EIFdl
YkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2F1ZGlvL21hYy9DQVJpbmdCdWZmZXIuY3BwCiAg
ICAgcGxhdGZvcm0vYXVkaW8vbWFjL0ZGVEZyYW1lTWFjLmNwcAogCi0gICAgcGxhdGZvcm0vY2Yv
RmlsZVN5c3RlbUNGLmNwcAogICAgIHBsYXRmb3JtL2NmL0tleWVkRGVjb2RlckNGLmNwcAogICAg
IHBsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcAogICAgIHBsYXRmb3JtL2NmL01haW5UaHJl
YWRTaGFyZWRUaW1lckNGLmNwcApAQCAtMjAwLDcgKzE5OSw2IEBAIGxpc3QoQVBQRU5EIFdlYkNv
cmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2NvY29hL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxl
ckNvY29hLm1tCiAgICAgcGxhdGZvcm0vY29jb2EvQ29yZVZpZGVvU29mdExpbmsuY3BwCiAgICAg
cGxhdGZvcm0vY29jb2EvRmlsZU1vbml0b3JDb2NvYS5tbQotICAgIHBsYXRmb3JtL2NvY29hL0Zp
bGVTeXN0ZW1Db2NvYS5tbQogICAgIHBsYXRmb3JtL2NvY29hL0tleUV2ZW50Q29jb2EubW0KICAg
ICBwbGF0Zm9ybS9jb2NvYS9Mb2NhbGl6ZWRTdHJpbmdzQ29jb2EubW0KICAgICBwbGF0Zm9ybS9j
b2NvYS9NSU1FVHlwZVJlZ2lzdHJ5Q29jb2EubW0KQEAgLTM0Nyw3ICszNDUsNiBAQCBsaXN0KEFQ
UEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0KICAg
ICBwbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tCiAgICAgcGxhdGZvcm0vbWFjL0V2ZW50TG9v
cE1hYy5tbQotICAgIHBsYXRmb3JtL21hYy9GaWxlU3lzdGVtTWFjLm1tCiAgICAgcGxhdGZvcm0v
bWFjL0tleUV2ZW50TWFjLm1tCiAgICAgcGxhdGZvcm0vbWFjL0xvY2FsQ3VycmVudEdyYXBoaWNz
Q29udGV4dC5tbQogICAgIHBsYXRmb3JtL21hYy9Mb2dnaW5nTWFjLm1tCkBAIC00MTgsOCArNDE1
LDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vbmV0d29yay9t
YWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCiAgICAg
cGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tCiAKLSAgICBwbGF0Zm9y
bS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCi0KICAgICBwbGF0Zm9ybS90ZXh0L2NmL0h5cGhl
bmF0aW9uQ0YuY3BwCiAKICAgICBwbGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMubW0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtUGxheVN0YXRpb24uY21ha2UgYi9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtlCmluZGV4IDkwMzc2MDM5Yjk2OTZlMTNm
OWRlYmM5YzQ3MzBhNzkwMzk5Nzk1NTEuLjZkNDQ1MzVkOTU5ODRiZTU4ODMzZTg4Zjk3MWU2YTcy
ZjJkYmFiMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtUGxheVN0YXRpb24u
Y21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1QbGF5U3RhdGlvbi5jbWFrZQpAQCAt
NjMsNyArNjMsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9w
bGF5c3RhdGlvbi9TY3JvbGxiYXJUaGVtZVBsYXlTdGF0aW9uLmNwcAogICAgIHBsYXRmb3JtL3Bs
YXlzdGF0aW9uL1VzZXJBZ2VudFBsYXlTdGF0aW9uLmNwcAogCi0gICAgcGxhdGZvcm0vcG9zaXgv
RmlsZVN5c3RlbVBPU0lYLmNwcAogICAgIHBsYXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lY
LmNwcAogCiAgICAgcGxhdGZvcm0vdGV4dC9IeXBoZW5hdGlvbi5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1X
aW4uY21ha2UKaW5kZXggNGZhYjMwODI2MGUwOWM4MDU0MTljODRjN2NhODM0ZDgxZmI5NWM2NS4u
ZmNiNTdhNDVhNWY0MWVmM2JmNjcwMzg0ZmRhMjNmM2NkYTg2MTRkMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW4uY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZv
cm1XaW4uY21ha2UKQEAgLTg0LDcgKzg0LDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VT
CiAgICAgcGxhdGZvcm0vd2luL0RyYWdEYXRhV2luLmNwcAogICAgIHBsYXRmb3JtL3dpbi9EcmFn
SW1hZ2VXaW4uY3BwCiAgICAgcGxhdGZvcm0vd2luL0V2ZW50TG9vcFdpbi5jcHAKLSAgICBwbGF0
Zm9ybS93aW4vRmlsZVN5c3RlbVdpbi5jcHAKICAgICBwbGF0Zm9ybS93aW4vR0RJT2JqZWN0Q291
bnRlci5jcHAKICAgICBwbGF0Zm9ybS93aW4vR0RJVXRpbGl0aWVzLmNwcAogICAgIHBsYXRmb3Jt
L3dpbi9LZXlFdmVudFdpbi5jcHAKQEAgLTkzLDcgKzkyLDYgQEAgbGlzdChBUFBFTkQgV2ViQ29y
ZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4uY3BwCiAgICAg
cGxhdGZvcm0vd2luL01haW5UaHJlYWRTaGFyZWRUaW1lcldpbi5jcHAKICAgICBwbGF0Zm9ybS93
aW4vUGFzdGVib2FyZFdpbi5jcHAKLSAgICBwbGF0Zm9ybS93aW4vUGF0aFdhbGtlci5jcHAKICAg
ICBwbGF0Zm9ybS93aW4vUGxhdGZvcm1Nb3VzZUV2ZW50V2luLmNwcAogICAgIHBsYXRmb3JtL3dp
bi9QbGF0Zm9ybVNjcmVlbldpbi5jcHAKICAgICBwbGF0Zm9ybS93aW4vUG9wdXBNZW51V2luLmNw
cApAQCAtMjQ4LDcgKzI0Niw2IEBAIGlmIChVU0VfQ0YpCiAgICAgbGlzdChBUFBFTkQgV2ViQ29y
ZV9TT1VSQ0VTCiAgICAgICAgIGxvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3Bw
CiAKLSAgICAgICAgcGxhdGZvcm0vY2YvRmlsZVN5c3RlbUNGLmNwcAogICAgICAgICBwbGF0Zm9y
bS9jZi9LZXllZERlY29kZXJDRi5jcHAKICAgICAgICAgcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVy
Q0YuY3BwCiAgICAgICAgIHBsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dAppbmRleCBiNjEyNDE5MmNlOTQ0NTJmNmQxZmU0YmJmMzA5ZmNkYWM0MWI0NzJhLi41MWUxOGM3
YTk5MTFmNDhmZTMxZGMxNmM4Y2U4MzBlOGJhMTkyZWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTU5
NCw3ICsxNTk0LDYgQEAgcGxhdGZvcm0vRmlsZUNob29zZXIuY3BwCiBwbGF0Zm9ybS9GaWxlSGFu
ZGxlLmNwcAogcGxhdGZvcm0vRmlsZU1vbml0b3IuY3BwCiBwbGF0Zm9ybS9GaWxlU3RyZWFtLmNw
cAotcGxhdGZvcm0vRmlsZVN5c3RlbS5jcHAKIHBsYXRmb3JtL0dlbmVyaWNUYXNrUXVldWUuY3Bw
CiBwbGF0Zm9ybS9MYXlvdXRVbml0LmNwcAogcGxhdGZvcm0vTGVuZ3RoLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXNDb2NvYS50eHQKaW5kZXggYzcyODI1YWVlNTNjYzQxZWUzYWY3ODNhMDEwYjY3OTg1ZmU5YmEw
NC4uNTE0MTdlNGQyNDNkYzI2MzgxZWZmMzlmM2QwZjFhOTEwNTdiZjZjMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzQ29jb2EudHh0CkBAIC0xODEsNyArMTgxLDYgQEAgcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlv
U2Vzc2lvbk1hYy5jcHAKIHBsYXRmb3JtL2F1ZGlvL21hYy9DQVJpbmdCdWZmZXIuY3BwCiBwbGF0
Zm9ybS9hdWRpby9tYWMvRkZURnJhbWVNYWMuY3BwCiAKLXBsYXRmb3JtL2NmL0ZpbGVTeXN0ZW1D
Ri5jcHAKIHBsYXRmb3JtL2NmL0tleWVkRGVjb2RlckNGLmNwcAogcGxhdGZvcm0vY2YvS2V5ZWRF
bmNvZGVyQ0YuY3BwCiBwbGF0Zm9ybS9jZi9NYWluVGhyZWFkU2hhcmVkVGltZXJDRi5jcHAKQEAg
LTE5Myw3ICsxOTIsNiBAQCBwbGF0Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRs
ZXJDb2NvYS5tbSBAbm8tdW5pZnkKIHBsYXRmb3JtL2NvY29hL0NvcmVWaWRlb1NvZnRMaW5rLmNw
cAogcGxhdGZvcm0vY29jb2EvRGF0YURldGVjdG9yc0NvcmVTb2Z0TGluay5tbQogcGxhdGZvcm0v
Y29jb2EvRmlsZU1vbml0b3JDb2NvYS5tbQotcGxhdGZvcm0vY29jb2EvRmlsZVN5c3RlbUNvY29h
Lm1tCiBwbGF0Zm9ybS9jb2NvYS9LZXlFdmVudENvY29hLm1tCiBwbGF0Zm9ybS9jb2NvYS9Mb2Nh
bGl6ZWRTdHJpbmdzQ29jb2EubW0KIHBsYXRmb3JtL2NvY29hL01JTUVUeXBlUmVnaXN0cnlDb2Nv
YS5tbQpAQCAtNDQ3LDcgKzQ0NSw2IEBAIHBsYXRmb3JtL21hYy9DdXJzb3JNYWMubW0KIHBsYXRm
b3JtL21hYy9EcmFnRGF0YU1hYy5tbQogcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbQogcGxh
dGZvcm0vbWFjL0V2ZW50TG9vcE1hYy5tbQotcGxhdGZvcm0vbWFjL0ZpbGVTeXN0ZW1NYWMubW0K
IHBsYXRmb3JtL21hYy9LZXlFdmVudE1hYy5tbSBAbm8tdW5pZnkKIHBsYXRmb3JtL21hYy9QbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9tYWMvTG9jYWxD
dXJyZW50R3JhcGhpY3NDb250ZXh0Lm1tCkBAIC01NDIsOCArNTM5LDYgQEAgcGxhdGZvcm0vbmV0
d29yay9tYWMvVVRJVXRpbGl0aWVzLm1tCiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVz
b3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0KIHBsYXRmb3JtL25ldHdvcmsv
bWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbQogCi1wbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9T
SVguY3BwCi0KIHBsYXRmb3JtL3RleHQvY2YvSHlwaGVuYXRpb25DRi5jcHAKIAogcGxhdGZvcm0v
dGV4dC9pb3MvTG9jYWxpemVkRGF0ZUNhY2hlLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNmZlZGMyMjI0ZjhiMTVmMjVkMDEz
Mzg3MTBhMDY5NjFmNjM1NjRkOC4uZWQwZTZjYWY4OGVmMmEwOWM4ODhhMWU3N2IwOTkzZDBlOTdh
YmI5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMTI0Nyw3ICsxMjQ3LDYgQEAKIAkJNDY3MzAyMDIxQzRFRkU3ODAwQkNCMzU3
IC8qIElnbm9yZU9wZW5zRHVyaW5nVW5sb2FkQ291bnRJbmNyZW1lbnRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY3MzAyMDExQzRFRkU2NjAwQkNC
MzU3IC8qIElnbm9yZU9wZW5zRHVyaW5nVW5sb2FkQ291bnRJbmNyZW1lbnRlci5oICovOyB9Owog
CQk0NjgyRDIwMDFGNzk3ODMwMDBDODYzREIgLyogU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODJEMUZGMUY3
OTc4MjMwMEM4NjNEQiAvKiBTdG9yZWRDcmVkZW50aWFsc1BvbGljeS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2ODM0NEUwMUVEREZBQUEwMEI3
Nzk1QiAvKiBET01SZWN0TGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDY4MzQ0REUxRURERkE1RjAwQjc3OTVCIC8qIERPTVJlY3RMaXN0LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNDY4OUYxQUYx
MjY3QkFFMTAwRThEMzgwIC8qIEZpbGVNZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4OUYxQUUxMjY3QkFFMTAwRThEMzgwIC8qIEZpbGVN
ZXRhZGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTQ2QjYzRjZDMUM2RThEMTkwMDJFOTE0QiAvKiBKU0V2ZW50VGFyZ2V0Q3VzdG9tLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkI2M0Y2QjFDNkU4
Q0RGMDAyRTkxNEIgLyogSlNFdmVudFRhcmdldEN1c3RvbS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2Qjk1MTk1MjA3RDYzMzQwMEE3RDJERCAv
KiBBYnN0cmFjdERPTVdpbmRvdy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDZCOTUxOEEyMDdENjMyODAwQTdEMkREIC8qIEFic3RyYWN0RE9NV2luZG93
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZC
OTUxOTYyMDdENjMzQTAwQTdEMkREIC8qIEFic3RyYWN0RnJhbWUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Qjk1MThGMjA3RDYzMkIwMEE3RDJERCAv
KiBBYnN0cmFjdEZyYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKQEAgLTE0MzksNyArMTQzOCw2IEBACiAJCTUxNDNCMjYzMURERDE1MjAwMDE0RkFD
NiAvKiBMaW5rSWNvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTE0M0IyNjIxREREMTQ5MDAwMTRGQUM2IC8qIExpbmtJY29uLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE0NUIxMEExQkM0OEUyRTAw
RTg2MjE5IC8qIElEQlJlc291cmNlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0NUIxMDgxQkM0ODkwQjAwRTg2MjE5IC8qIElEQlJl
c291cmNlSWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTUxNDg0NTNGMUJCOUQwN0UwMDZBNzJFRCAvKiBJREJFcnJvci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0ODQ1M0QxQkI5RDA3
NjAwNkE3MkVEIC8qIElEQkVycm9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKLQkJNTE0QjNGNzMwQzcyMjA0NzAwMDUzMERGIC8qIEZpbGVTeXN0ZW0u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEIzRjcy
MEM3MjIwNDcwMDA1MzBERiAvKiBGaWxlU3lzdGVtLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE0Qzc2NEMwQ0U5MjM0RTAwN0VGM0NEIC8qIEF1
dGhlbnRpY2F0aW9uTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MTRDNzY0MjBDRTkyMzRFMDA3RUYzQ0QgLyogQXV0aGVudGljYXRpb25NYWMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTRDNzY0
RTBDRTkyMzRFMDA3RUYzQ0QgLyogRm9ybURhdGFTdHJlYW1NYWMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEM3NjQ0MENFOTIzNEUwMDdFRjNDRCAv
KiBGb3JtRGF0YVN0cmVhbU1hYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTUxNEM3NjZFMENFOTIzQTEwMDdFRjNDRCAvKiBDcmVkZW50aWFsLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTRDNzY1OTBD
RTkyM0ExMDA3RUYzQ0QgLyogQ3JlZGVudGlhbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC03Njk5LDcgKzc2OTcsNiBAQAogCQk0NjgzNDREQzFF
RERGQTVGMDBCNzc5NUIgLyogRE9NUmVjdExpc3QuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERPTVJlY3RMaXN0LmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4MzQ0REQxRURERkE1RjAwQjc3OTVCIC8q
IERPTVJlY3RMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTVJlY3RMaXN0LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4MzQ0REUxRURERkE1RjAwQjc3OTVCIC8qIERP
TVJlY3RMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVJlY3RMaXN0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTQ2ODlGMUFFMTI2N0JBRTEwMEU4RDM4MCAvKiBGaWxlTWV0YWRhdGEu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmlsZU1ldGFkYXRhLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QjYzRjZCMUM2RThDREYwMDJFOTE0QiAvKiBKU0V2
ZW50VGFyZ2V0Q3VzdG9tLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRXZl
bnRUYXJnZXRDdXN0b20uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZCOTUxOEEy
MDdENjMyODAwQTdEMkREIC8qIEFic3RyYWN0RE9NV2luZG93LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEFic3RyYWN0RE9NV2luZG93Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ2Qjk1MThDMjA3RDYzMjkwMEE3RDJERCAvKiBSZW1vdGVGcmFtZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVGcmFtZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04MTAyLDggKzgwOTksNiBAQAogCQk1MTQ1QjEwODFC
QzQ4OTBCMDBFODYyMTkgLyogSURCUmVzb3VyY2VJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IElEQlJlc291cmNlSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MTQ4NDUzQzFCQjlEMDc2MDA2QTcyRUQgLyogSURCRXJyb3IuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSURCRXJyb3IuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTQ4NDUzRDFCQjlEMDc2MDA2QTcyRUQgLyogSURC
RXJyb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSURCRXJyb3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTE0QjNGNzIwQzcyMjA0NzAwMDUzMERGIC8qIEZp
bGVTeXN0ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmlsZVN5c3RlbS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MTRCM0Y3NTBDNzIyMDU1MDAwNTMwREYg
LyogRmlsZVN5c3RlbUNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gRmlsZVN5c3RlbUNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MTRDNzYzNTBDRTkyMjVFMDA3RUYzQ0QgLyogSlNTUUxFcnJvci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1NRTEVycm9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTE0Qzc2MzYwQ0U5MjI1RTAwN0VGM0NEIC8qIEpTU1FMVHJhbnNhY3Rpb24u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTUUxUcmFuc2FjdGlv
bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNEM3NjQyMENFOTIzNEUwMDdF
RjNDRCAvKiBBdXRoZW50aWNhdGlvbk1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBdXRoZW50aWNhdGlvbk1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
ODE0Miw4ICs4MTM3LDYgQEAKIAkJNTE1RTM3RjQxRkFBOTM4ODAwRDdGMjJBIC8qIFNlcnZpY2VX
b3JrZXJUeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2aWNlV29y
a2VyVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE1Rjc5NTExQ0ZDQTND
NzAwQ0NFRDkzIC8qIFdlYkNvcmVDcm9zc1RocmVhZENvcGllci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDb3JlQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTVGNzk1MjFDRkNBM0M3MDBDQ0VEOTMgLyogV2Vi
Q29yZUNyb3NzVGhyZWFkQ29waWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYkNvcmVDcm9zc1RocmVhZENvcGllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk1MTYwMzAwQTBDQzQyNTEyMDBDOEFDMjUgLyogRmlsZVN5c3RlbVBPU0lYLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZpbGVTeXN0ZW1QT1NJWC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUxNjAzMDZCMENDNDM2MjMwMEM4QUMyNSAvKiBGaWxl
U3lzdGVtQ0YuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmlsZVN5
c3RlbUNGLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE2MDcxMkIxQkQ4MzA1
MzAwREJDNEYyIC8qIFRyYW5zYWN0aW9uT3BlcmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFRyYW5zYWN0aW9uT3BlcmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUxNjA3MTJDMUJEODMwNzIwMERCQzRGMiAvKiBJREJPYmplY3RTdG9yZUluZm8u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSURCT2JqZWN0U3RvcmVJ
bmZvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE2MDcxMkQxQkQ4MzA3MjAw
REJDNEYyIC8qIElEQk9iamVjdFN0b3JlSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJREJPYmplY3RTdG9yZUluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTExMjQ1LDcgKzExMjM4LDYgQEAKIAkJQTFDMkM1NzUxRkEyODUxNjAwQkE0NkZBIC8qIFBh
eW1lbnRTZXNzaW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBheW1lbnRTZXNzaW9uLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFDN0ZBQTExMzNBNUQzNTAwRDY3MzJEIC8q
IEpTWFBhdGhSZXN1bHRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNYUGF0aFJlc3VsdEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUExQ0JFRjYzMUY5RjExMjkwMDI4REU3QyAvKiBNb2NrUGF5bWVudE1ldGhvZC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBNb2NrUGF5bWVudE1ldGhvZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlBMUNDMTE2MjFFNDkzRDAxMDBFRkE2OUMgLyogRmlsZVN5c3RlbU1hYy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZpbGVTeXN0ZW1NYWMubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExQ0M1NjRDMUY0NjE0NTAwMEE0NTU1QiAvKiBKU1Bh
eW1lbnRNZXRob2REYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUGF5
bWVudE1ldGhvZERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFDQzU2NEQx
RjQ2MTQ1MTAwQTQ1NTVCIC8qIEpTUGF5bWVudE1ldGhvZERhdGEuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNQYXltZW50TWV0aG9kRGF0YS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExQ0M1NjRFMUY0NjE0NTIwMEE0NTU1QiAvKiBKU1BheW1l
bnRDb21wbGV0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1BheW1lbnRD
b21wbGV0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTM0MzIsNyArMTM0MjQs
NiBAQAogCQlDNTU5MkY3NzFBOTJBQTI4MDAxRjg4NjIgLyogQ2hhcmFjdGVyUHJvcGVydGllcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDaGFyYWN0ZXJQcm9wZXJ0aWVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1NUM3QkEwMTcxOEFGQkEwMDEzMjdFNCAv
KiBSZW5kZXJUaGVtZUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFJlbmRlclRoZW1lSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNTcy
RUUxRDEyMDFDOUJDMDA3RDhGODIgLyogSlNJREJJbmRleC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU0lEQkluZGV4Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUM1N0ZFREUwMTIxMkVFOUMwMDk3QkU2NSAvKiBGaWxlU3lzdGVtLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZpbGVTeXN0ZW0uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDNTg1QTY2MDExRDRGQUM1MDA0QzNFNEIgLyogSURCQmluZGluZ1V0aWxp
dGllcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJREJCaW5kaW5n
VXRpbGl0aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzU4NUE2NjExMUQ0
RkFDNTAwNEMzRTRCIC8qIElEQkJpbmRpbmdVdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSURCQmluZGluZ1V0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDNTg1QTY2QjExRDRGQjA3MDA0QzNFNEIgLyogSlNJREJEYXRhYmFzZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0lEQkRhdGFiYXNlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjc2Niw3ICsxNjc1Nyw2IEBACiAJCTFBRTQyRjY3MEFB
NEI4Q0IwMEM4NjEyRCAvKiBjZiAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCi0JCQkJNTE2MDMwNkIwQ0M0MzYyMzAwQzhBQzI1IC8qIEZpbGVTeXN0ZW1DRi5jcHAg
Ki8sCiAJCQkJNTE3QTYzQkYxQjc0MzE3RTAwRTdEQ0RDIC8qIEtleWVkRGVjb2RlckNGLmNwcCAq
LywKIAkJCQk1MTdBNjNDMDFCNzQzMTdFMDBFN0RDREMgLyogS2V5ZWREZWNvZGVyQ0YuaCAqLywK
IAkJCQk1MTdBNjNDMTFCNzQzMTdFMDBFN0RDREMgLyogS2V5ZWRFbmNvZGVyQ0YuY3BwICovLApA
QCAtMTg3MDksMTQgKzE4Njk5LDYgQEAKIAkJCXBhdGggPSBtYWM7CiAJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOwogCQl9OwotCQk1MTYwMzAwOTBDQzQyNDU0MDBDOEFDMjUgLyogcG9zaXggKi8g
PSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCTUxNjAzMDBBMEND
NDI1MTIwMEM4QUMyNSAvKiBGaWxlU3lzdGVtUE9TSVguY3BwICovLAotCQkJKTsKLQkJCXBhdGgg
PSBwb3NpeDsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07CiAJCTUxNjBGNDkyMEIw
QUE3MTUwMEMxRDJBRiAvKiBtYWMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxk
cmVuID0gKApAQCAtMjAwNzcsNyArMjAwNTksNiBAQAogCQkJCUE3Q0ZCM0Q0MEI3RUQxMTgwMDcw
QzMyRCAvKiBEcmFnSW1hZ2VNYWMubW0gKi8sCiAJCQkJRTFCQTY2RjAxNzQyQkQ4NjAwQzIwMjUx
IC8qIER5bmFtaWNMaW5rZXJJbnRlcnBvc2luZy5oICovLAogCQkJCTFDQTE5RTAzMERDMjU1OTUw
MDY1QTk5NCAvKiBFdmVudExvb3BNYWMubW0gKi8sCi0JCQkJQTFDQzExNjIxRTQ5M0QwMTAwRUZB
NjlDIC8qIEZpbGVTeXN0ZW1NYWMubW0gKi8sCiAJCQkJOTM1QzQ3NkUwOUFDNEQ3MzAwQTZBQUI0
IC8qIEtleUV2ZW50TWFjLm1tICovLAogCQkJCUY0NEE1RjU3MUZFRDM4MzAwMDdGNTk0NCAvKiBM
ZWdhY3lOU1Bhc3RlYm9hcmRUeXBlcy5oICovLAogCQkJCTA2RTgxRUQ2MEFCNUQ1RTkwMEM4Nzgz
NyAvKiBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQuaCAqLywKQEAgLTIyNTI3LDcgKzIyNTA4
LDYgQEAKIAkJCQk3Qzc5NDFFMzFDNTZDMjkzMDBBNEM1OEUgLyogRGF0YURldGVjdG9yc0NvcmVT
b2Z0TGluay5oICovLAogCQkJCTdDNzk0MUUyMUM1NkMyOTMwMEE0QzU4RSAvKiBEYXRhRGV0ZWN0
b3JzQ29yZVNvZnRMaW5rLm1tICovLAogCQkJCTdBMDlDRUYwMUYwMUQxRjcwMEU5M0JEQiAvKiBG
aWxlTW9uaXRvckNvY29hLm1tICovLAotCQkJCTUxNEIzRjc1MEM3MjIwNTUwMDA1MzBERiAvKiBG
aWxlU3lzdGVtQ29jb2EubW0gKi8sCiAJCQkJQTVDOTc0Q0YxMTQ4NUZGMTAwNjZGMkFCIC8qIEtl
eUV2ZW50Q29jb2EuaCAqLywKIAkJCQlBNUM5NzREMDExNDg1RkYxMDA2NkYyQUIgLyogS2V5RXZl
bnRDb2NvYS5tbSAqLywKIAkJCQkxQTQ4MzJCMjFBOTUzQkE2MDA4QjRERkUgLyogTG9jYWxpemVk
U3RyaW5nc0NvY29hLm1tICovLApAQCAtMjUzNzAsNyArMjUzNTAsNiBAQAogCQkJCTA3MjIxQjky
MTdDRjBBRDQwMDg0OEU1MSAvKiBtZWRpYXN0cmVhbSAqLywKIAkJCQk1OUM3N0YxMDEwNTQ1OTFD
MDA1MDYxMDQgLyogbW9jayAqLywKIAkJCQk2NTZCODRENzBBRUExQ0U5MDBBMDk1QjQgLyogbmV0
d29yayAqLywKLQkJCQk1MTYwMzAwOTBDQzQyNDU0MDBDOEFDMjUgLyogcG9zaXggKi8sCiAJCQkJ
MUEyRTZFNTYwQ0M1NTFFMDAwNEEyMDYyIC8qIHNxbCAqLywKIAkJCQlCMkMzRDlFQzBEMDA2QzFE
MDBFRjZGMjYgLyogdGV4dCAqLywKIAkJCQlFMTg4MjM1RjIwMzFGNTBGMDBCNDJERjMgLyogdnIg
Ki8sCkBAIC0yNTQxNSwxNCArMjUzOTQsMTEgQEAKIAkJCQkwNjZDNzcyQTBBQjYwM0I3MDAyMzhD
QzQgLyogRmlsZUNob29zZXIuaCAqLywKIAkJCQk1MzUxRDRBRTFERjkxNkFDMDA4MDEwQ0QgLyog
RmlsZUhhbmRsZS5jcHAgKi8sCiAJCQkJNTM1MUQ0QUYxREY5MTZBQzAwODAxMENEIC8qIEZpbGVI
YW5kbGUuaCAqLywKLQkJCQk0Njg5RjFBRTEyNjdCQUUxMDBFOEQzODAgLyogRmlsZU1ldGFkYXRh
LmggKi8sCiAJCQkJN0EwOUNFRUIxRjAxQ0M5MzAwRTkzQkRCIC8qIEZpbGVNb25pdG9yLmNwcCAq
LywKIAkJCQk3QTA5Q0VFQzFGMDFDQzkzMDBFOTNCREIgLyogRmlsZU1vbml0b3IuaCAqLywKIAkJ
CQkyRUYxQkZFODEyMUM5RjQyMDBDMjc2MjcgLyogRmlsZVN0cmVhbS5jcHAgKi8sCiAJCQkJMkVG
MUJGRTkxMjFDOUY0MjAwQzI3NjI3IC8qIEZpbGVTdHJlYW0uaCAqLywKIAkJCQkyRUYxQkZGODEy
MUNCMENFMDBDMjc2MjcgLyogRmlsZVN0cmVhbUNsaWVudC5oICovLAotCQkJCUM1N0ZFREUwMTIx
MkVFOUMwMDk3QkU2NSAvKiBGaWxlU3lzdGVtLmNwcCAqLywKLQkJCQk1MTRCM0Y3MjBDNzIyMDQ3
MDAwNTMwREYgLyogRmlsZVN5c3RlbS5oICovLAogCQkJCUJDMDczQkE5MEMzOTlCMUYwMDBGNTk3
OSAvKiBGbG9hdENvbnZlcnNpb24uaCAqLywKIAkJCQlDRDRCRTUyOTFDRTEzNDI1MDA5RDg3REEg
LyogR2VuZXJpY1Rhc2tRdWV1ZS5jcHAgKi8sCiAJCQkJQ0Q2MkZCOTQxQUYwMThFNzAwMTJFRDdE
IC8qIEdlbmVyaWNUYXNrUXVldWUuaCAqLywKQEAgLTI5MTEwLDcgKzI5MDg2LDYgQEAKIAkJCQlG
NTVCM0RCRTEyNTFGMTJEMDAzRUYyNjkgLyogRmlsZUlucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTc2RDZDODYxMjJCOEEzRDAwMUZEMUY3IC8qIEZpbGVMaXN0LmggaW4gSGVhZGVycyAq
LywKIAkJCQk4MzVENTRDNTFGNERFNTM4MDBFNjA2NzEgLyogRmlsZUxpc3RDcmVhdG9yLmggaW4g
SGVhZGVycyAqLywKLQkJCQk0Njg5RjFBRjEyNjdCQUUxMDBFOEQzODAgLyogRmlsZU1ldGFkYXRh
LmggaW4gSGVhZGVycyAqLywKIAkJCQk3QTA5Q0VGMTFGMDIwNjlCMDBFOTNCREIgLyogRmlsZU1v
bml0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3NkQ2Qzg5MTIyQjhBM0QwMDFGRDFGNyAvKiBG
aWxlUmVhZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRTc1ODQxRTEyNzc5QURBMDA2MjYyOEIg
LyogRmlsZVJlYWRlckxvYWRlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTExOCw3ICsyOTA5Myw2
IEBACiAJCQkJMkVERjM2OUQxMjJDOTRCNDAwMkY3RDRFIC8qIEZpbGVSZWFkZXJTeW5jLmggaW4g
SGVhZGVycyAqLywKIAkJCQkyRUYxQkZFQjEyMUM5RjQyMDBDMjc2MjcgLyogRmlsZVN0cmVhbS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMkVGMUJGRjkxMjFDQjBDRTAwQzI3NjI3IC8qIEZpbGVTdHJl
YW1DbGllbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxNEIzRjczMEM3MjIwNDcwMDA1MzBERiAv
KiBGaWxlU3lzdGVtLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0ZCMzM3MTFGNTA4QTU0MDA5ODZF
NTQgLyogRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzAz
MzUwMjFGNTQ5MDU3MDA0REY3MDcgLyogRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJODMwMzM1MDMxRjU0OTA1QTAwNERGNzA3IC8qIEZpbGVTeXN0ZW1FbnRy
aWVzQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvR0NDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0dDQ29udHJvbGxlci5jcHAKaW5kZXggZDI1MWQyZWNlMWYxOGIyNDBhODhiYmZiM2EyMmMyYzI0
ZjgwZjZjZC4uOGE4M2M0YjZmNmY1OTYwN2RmYTc3MDQ4NDI5ZDAyYjFlNDI5NzMzYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvR0NDb250cm9sbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuY3BwCkBAIC0yNyw3ICsyNyw2
IEBACiAjaW5jbHVkZSAiR0NDb250cm9sbGVyLmgiCiAKICNpbmNsdWRlICJDb21tb25WTS5oIgot
I2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJKU0hUTUxEb2N1bWVudC5oIgogI2lu
Y2x1ZGUgIkxvY2F0aW9uLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcC5oPgpAQCAt
MzYsNiArMzUsNyBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1ZNLmg+CiAjaW5jbHVkZSA8
cGFsL0xvZ2dpbmcuaD4KICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorI2luY2x1ZGUgPHd0
Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVk
ZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RGF0YVRyYW5zZmVySXRlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRl
bS5jcHAKaW5kZXggYTNlY2M1YTVjOWUwZjMwZDc2MDMyODE3ZjBkNDYzOTYzM2ZmMWE4Yi4uNTlm
OTc4NmVkOGNmYTY0OWUwN2RkYjdkODg0YWM5MjQzMjk3NjM5YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9EYXRhVHJhbnNmZXJJdGVtLmNwcApAQCAtMzYsMTEgKzM2LDExIEBACiAjaW5jbHVkZSAiRGF0
YVRyYW5zZmVySXRlbUxpc3QuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZp
bGUuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbURpcmVj
dG9yeUVudHJ5LmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbUZpbGVFbnRyeS5oIgogI2luY2x1ZGUg
IlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJTdHJpbmdDYWxsYmFjay5oIgor
I2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29j
b2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2Nv
YS5tbQppbmRleCA5NzIxN2YxZDc1ZDBlNTQ2ZmNmODQzMWUyZDRhZjhiYTU0M2FiNjFjLi4yNTRh
MzY4ZmE3NzRhZDYzNzJkNDZmMTUzYzVhOTVjNGVlMjQyOGM1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQpAQCAtMzcs
NyArMzcsNiBAQAogI2ltcG9ydCAiRWRpdG9yLmgiCiAjaW1wb3J0ICJFZGl0b3JDbGllbnQuaCIK
ICNpbXBvcnQgIkZpbGUuaCIKLSNpbXBvcnQgIkZpbGVTeXN0ZW0uaCIKICNpbXBvcnQgIkZyYW1l
LmgiCiAjaW1wb3J0ICJGcmFtZUxvYWRlci5oIgogI2ltcG9ydCAiRnJhbWVMb2FkZXJDbGllbnQu
aCIKQEAgLTY1LDYgKzY0LDcgQEAKICNpbXBvcnQgIldlYk5TQXR0cmlidXRlZFN0cmluZ0V4dHJh
cy5oIgogI2ltcG9ydCAibWFya3VwLmgiCiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL05TQXR0cmli
dXRlZFN0cmluZ1NQSS5oPgorI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0
Zi9Tb2Z0TGlua2luZy5oPgogI2ltcG9ydCA8d3RmL1VSTFBhcnNlci5oPgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9GaWxlLmNwcAppbmRleCBiNzNmY2RlNzlmNDYwNzkyYzkyNmMwNzVmYmFhZjY2NDhhNzI0MTMx
Li5hZGIzMGM5MzNjYTJmYjI1Y2VmNWQwY2E0MTM2NTYwYmJhNmQ4MTE2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvRmlsZS5jcHAKQEAgLTI3LDExICsyNywxMSBAQAogI2luY2x1ZGUgIkZpbGUuaCIKIAogI2lu
Y2x1ZGUgIkJsb2JVUkwuaCIKLSNpbmNsdWRlICJGaWxlTWV0YWRhdGEuaCIKLSNpbmNsdWRlICJG
aWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlRo
cmVhZGFibGVCbG9iUmVnaXN0cnkuaCIKICNpbmNsdWRlIDx3dGYvRGF0ZU1hdGguaD4KKyNpbmNs
dWRlIDx3dGYvRmlsZU1ldGFkYXRhLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0ZpbGVDb2NvYS5tbQppbmRleCAyMGJlNmY3YWVkZWNhNzUzNDgzNTYzYjFi
ZTRmOTA2MmZhNDM4YTAzLi42NjRmOWE1MzYxM2RmMjZjYTE3YzcwN2MyMWI1MGM2NDY0NTIwNGU2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVDb2NvYS5tbQpAQCAtMjgsNyArMjgsNyBAQAogCiAj
aWYgRU5BQkxFKEZJTEVfUkVQTEFDRU1FTlQpCiAKLSNpbXBvcnQgIkZpbGVTeXN0ZW0uaCIKKyNp
bXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2lt
cG9ydCA8TW9iaWxlQ29yZVNlcnZpY2VzL01vYmlsZUNvcmVTZXJ2aWNlcy5oPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKaW5kZXggMDNhZjNhOTYzNDk0ZmFmMDAxMmUyMWE5Mzhm
NTE5MTc4MDMwODUwOC4uOTk4ZjllZmE5NGUyYTc1MjE2YmI0ZjM5YTc5Njg2NDljMTMxN2RkOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCkBAIC0zMCw3ICszMCw2IEBACiAj
aW5jbHVkZSAiRmlsZS5oIgogI2luY2x1ZGUgIkZpbGVMaXN0LmgiCiAjaW5jbHVkZSAiRmlsZUxp
c3RDcmVhdG9yLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkZvcm1Db250
cm9sbGVyLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50
LmgiCkBAIC00Myw2ICs0Miw3IEBACiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJT
aGFkb3dSb290LmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKKyNpbmNsdWRl
IDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAj
aW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxk
ZXIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUxpc3RDcmVhdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUxpc3RDcmVhdG9yLmNwcAppbmRleCA3NmY1NjU5
NzBhZDFkZDhkODEwNmMyNWE1NzllNDU5MWJhYmQ0OWI4Li4xNTU2ZmMyOTljYjIzNzNiMGM1OTg5
NTIwYTcyYzMxMTZjZTM5ZWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVM
aXN0Q3JlYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlTGlzdENyZWF0b3Iu
Y3BwCkBAIC0yOCw5ICsyOCw5IEBACiAKICNpbmNsdWRlICJGaWxlQ2hvb3Nlci5oIgogI2luY2x1
ZGUgIkZpbGVMaXN0LmgiCi0jaW5jbHVkZSAiRmlsZU1ldGFkYXRhLmgiCi0jaW5jbHVkZSAiRmls
ZVN5c3RlbS5oIgogI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZENvcGllci5oPgorI2luY2x1ZGUg
PHd0Zi9GaWxlTWV0YWRhdGEuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCmluZGV4IDc1NWYxYTI5YWQ3YzU3Y2NjM2Jl
YTVlZmEyNTViNjU2YmJkY2MzMDkuLjhhMzNlODg3MGNjMzZiYzZkZTJmY2E4ZDFkNThjNGNjYTZi
OGYzZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVIb3N0LmNwcApAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgIkRvY3Vt
ZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAiRE9NQXBwbGljYXRpb25DYWNoZS5oIgogI2luY2x1ZGUg
IkV2ZW50TmFtZXMuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiRnJhbWUu
aCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50
LmgiCkBAIC00NCw2ICs0Myw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5j
bHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTdWJyZXNvdXJjZUxvYWRlci5oIgorI2luY2x1
ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL1VVSUQuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKaW5kZXggZTgxNDgzYzM2MjNjZDAzNDI0NDQ4
NGNkMGY1ZmRjOTI0OTU1YWUzMi4uODJhZGZmMzAzMzVhMmUyYmI5Y2FhN2I0ZjY2ODg0ZDA5MGU3
OTU2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBAIC0zMCwxMiArMzAsMTIgQEAKICNpbmNsdWRl
ICJBcHBsaWNhdGlvbkNhY2hlR3JvdXAuaCIKICNpbmNsdWRlICJBcHBsaWNhdGlvbkNhY2hlSG9z
dC5oIgogI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5oIgotI2luY2x1ZGUgIkZp
bGVTeXN0ZW0uaCIKICNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZVRyYWNrZXIuaCIKICNpbmNsdWRl
ICJTUUxpdGVTdGF0ZW1lbnQuaCIKICNpbmNsdWRlICJTUUxpdGVUcmFuc2FjdGlvbi5oIgogI2lu
Y2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5EYXRhLmgi
CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFz
Lmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9VVUlELmg+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmNwcAppbmRleCBkYjE3N2U4ZGFlOGM2MGU2ZTcxODIyOWZiM2MwM2QzNmRmZmQ1NDUyLi4y
NmEyNTgxOWMxYTc3NDFkMTJjZDk2NDYyOWFkMTU5Nzk5ODZkMGQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAKQEAgLTUxLDcgKzUxLDYgQEAKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50
TmFtZXMuaCIKICNpbmNsdWRlICJFeHRlbnNpb25TdHlsZVNoZWV0cy5oIgotI2luY2x1ZGUgIkZp
bGVTeXN0ZW0uaCIKICNpbmNsdWRlICJGb2N1c0NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJGcmFt
ZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCkBAIC0xMjIsNiArMTIx
LDcgQEAKICNpbmNsdWRlICJXZWJHTFN0YXRlVHJhY2tlci5oIgogI2luY2x1ZGUgIldoZWVsRXZl
bnREZWx0YUZpbHRlci5oIgogI2luY2x1ZGUgIldpZGdldC5oIgorI2luY2x1ZGUgPHd0Zi9GaWxl
U3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgogI2luY2x1
ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9CYXNlNjQuaD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKaW5kZXggYjU4ZmFhYTE2N2E5NjcyNmFh
MjExZmUxZjAyNzRiYzY2ZTk2MTY1Yi4uM2FkOTIxY2M1NGRlMWZlZmUzZDE1NzFmMjJlMjUzMjEy
YThkZTIwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKQEAgLTMwLDE1
ICszMCwxNSBAQAogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAKICNpbmNsdWRlICJCbG9i
VVJMLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgotI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNp
bmNsdWRlICJTY2hlbWVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5UG9saWN5LmgiCiAj
aW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUJsb2JSZWdpc3Ry
eS5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJl
YWQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3Rk
TGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwCmluZGV4IDA1ZjhiMTlkYWU1ODc5ZDBjZGZkYTdjNzY0
OWVjYTJiNDRjMzk4YTYuLjQzMGNiOGIwYjNhYzM2Y2NhOTYxMWUwYTFmMDllMzVhZTEwYjBkOWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAKQEAgLTI3LDkg
KzI3LDkgQEAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbkRhdGEuaCIKIAogI2luY2x1ZGUgIkRv
Y3VtZW50LmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAj
aW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdC
dWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlSGFuZGxlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlSGFuZGxlLmgKaW5kZXggZDExODMwODY5NjNkMjEyMzdi
OTBiMWE4MjU4NWI3NjViYmMxM2RmMi4uNTBkODI0Y2FlZTliYTEyNDA5ODQzNWVhNzIxNWQxNTE3
ODdkYmNlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUhhbmRsZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVIYW5kbGUuaApAQCAtMjgsOSArMjgs
OCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKLQogI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9G
aWxlTWV0YWRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVNZXRhZGF0YS5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZDg4NDk1M2U3Njc1ZDkyYzA2MzhkZWNhZDg1
N2NkNDFhNTljNTYxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVNZXRhZGF0YS5oCisrKyAvZGV2L251bGwK
QEAgLTEsNTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQot
ICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQot
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
LSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IEZpbGVNZXRhZGF0YSB7Ci0gICAgLy8g
VGhlIGxhc3QgbW9kaWZpY2F0aW9uIHRpbWUgb2YgdGhlIGZpbGUsIGluIHNlY29uZHMuCi0gICAg
V2FsbFRpbWUgbW9kaWZpY2F0aW9uVGltZTsKLQotICAgIC8vIFRoZSBsZW5ndGggb2YgdGhlIGZp
bGUgaW4gYnl0ZXMuCi0gICAgbG9uZyBsb25nIGxlbmd0aDsKLQotICAgIGJvb2wgaXNIaWRkZW47
Ci0KLSAgICBlbnVtIGNsYXNzIFR5cGUgeyBGaWxlLCBEaXJlY3RvcnksIFN5bWJvbGljTGluayB9
OwotICAgIFR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vRmlsZVN0cmVhbS5jcHAKaW5kZXggZWE5MTczNzRiNGM4YjRhNGVhMDQzYzI5
YWJmNTQzMTU5MjJhODllMi4uODkzYmIzMzk0NzZjZWZkYThkZjEwYmM5MjBjMGIzNTgyNTE5MTU3
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN0cmVhbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN0cmVhbS5jcHAKQEAgLTI5LDEwICsyOSw4
IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotCiAjaW5jbHVkZSAiRmlsZVN0cmVhbS5o
IgogCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9GaWxlU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3RyZWFt
LmgKaW5kZXggYWEwMTFlYTIzZTE4NTRjNGI5MDIwNTk2MjUzNzYxM2ExYWI2ZTEyYi4uYTJmYjhl
NWZhYTI1NGJjOGU1Y2NlOWUxYjRjNjYzMWI4ZDFhMDU0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vRmlsZVN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0ZpbGVTdHJlYW0uaApAQCAtMjgsMTAgKzI4LDkgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAot
I2lmbmRlZiBGaWxlU3RyZWFtX2gKLSNkZWZpbmUgRmlsZVN0cmVhbV9oCisjcHJhZ21hIG9uY2UK
IAotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTY0LDUgKzYzLDMgQEAgcHJpdmF0ZToKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEZpbGVTdHJlYW1faApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZWQ5ZDM3YWFhMTMxNjI4M2RhN2VmMjI0NmIzY2E5NDEwYWQyNWQyMi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9GaWxlU3lzdGVtLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDM2NyArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDA3LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICogQ29weXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICog
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgotCi0jaW5jbHVk
ZSAiRmlsZU1ldGFkYXRhLmgiCi0jaW5jbHVkZSA8d3RmL0hleE51bWJlci5oPgotI2luY2x1ZGUg
PHd0Zi9TY29wZS5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+Ci0KLSNpZiAhT1MoV0lORE9XUykKLSNpbmNsdWRlIDxm
Y250bC5oPgotI2luY2x1ZGUgPHN5cy9tbWFuLmg+Ci0jaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSNp
bmNsdWRlIDx1bmlzdGQuaD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVz
cGFjZSBGaWxlU3lzdGVtIHsKLQotLy8gVGhlIGZvbGxvd2luZyBsb3dlci1BU0NJSSBjaGFyYWN0
ZXJzIG5lZWQgZXNjYXBpbmcgdG8gYmUgdXNlZCBpbiBhIGZpbGVuYW1lCi0vLyBhY3Jvc3MgYWxs
IHN5c3RlbXMsIGluY2x1ZGluZyBXaW5kb3dzOgotLy8gICAgIC0gVW5wcmludGFibGUgQVNDSUkg
KDAwLTFGKQotLy8gICAgIC0gU3BhY2UgICAgICAgICAgICAgKDIwKQotLy8gICAgIC0gRG91Ymxl
IHF1b3RlICAgICAgKDIyKQotLy8gICAgIC0gUGVyY2VudCAgICAgICAgICAgKDI1KSAoZXNjYXBl
ZCBiZWNhdXNlIGl0IGlzIG91ciBlc2NhcGUgY2hhcmFjdGVyKQotLy8gICAgIC0gQXN0ZXJpc2sg
ICAgICAgICAgKDJBKQotLy8gICAgIC0gU2xhc2ggICAgICAgICAgICAgKDJGKQotLy8gICAgIC0g
Q29sb24gICAgICAgICAgICAgKDNBKQotLy8gICAgIC0gTGVzcy10aGFuICAgICAgICAgKDNDKQot
Ly8gICAgIC0gR3JlYXRlci10aGFuICAgICAgKDNFKQotLy8gICAgIC0gUXVlc3Rpb24gTWFyayAg
ICAgKDNGKQotLy8gICAgIC0gQmFja3NsYXNoICAgICAgICAgKDVDKQotLy8gICAgIC0gUGlwZSAg
ICAgICAgICAgICAgKDdDKQotLy8gICAgIC0gRGVsZXRlICAgICAgICAgICAgKDdGKQotCi1zdGF0
aWMgY29uc3QgYm9vbCBuZWVkc0VzY2FwaW5nWzEyOF0gPSB7Ci0gICAgLyogMDAtMDcgKi8gdHJ1
ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsIAotICAg
IC8qIDA4LTBGICovIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRy
dWUsICB0cnVlLCAKLQotICAgIC8qIDEwLTE3ICovIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUs
ICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAKLSAgICAvKiAxOC0xRiAqLyB0cnVlLCAgdHJ1
ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgCi0KLSAgICAvKiAy
MC0yNyAqLyB0cnVlLCAgZmFsc2UsIHRydWUsICBmYWxzZSwgZmFsc2UsIHRydWUsICBmYWxzZSwg
ZmFsc2UsIAotICAgIC8qIDI4LTJGICovIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgIGZhbHNlLCBmYWxz
ZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCAKLSAgICAKLSAgICAvKiAzMC0zNyAqLyBmYWxzZSwgZmFs
c2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIAotICAgIC8qIDM4
LTNGICovIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgIGZhbHNlLCB0cnVlLCAgZmFsc2UsIHRydWUsICB0
cnVlLCAKLSAgICAKLSAgICAvKiA0MC00NyAqLyBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwg
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIAotICAgIC8qIDQ4LTRGICovIGZhbHNlLCBmYWxz
ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKLSAgICAKLSAgICAv
KiA1MC01NyAqLyBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxz
ZSwgZmFsc2UsIAotICAgIC8qIDU4LTVGICovIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCB0
cnVlLCAgZmFsc2UsIGZhbHNlLCBmYWxzZSwKLSAgICAKLSAgICAvKiA2MC02NyAqLyBmYWxzZSwg
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIAotICAgIC8q
IDY4LTZGICovIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNl
LCBmYWxzZSwKLSAgICAKLSAgICAvKiA3MC03NyAqLyBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxz
ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIAotICAgIC8qIDc4LTdGICovIGZhbHNlLCBm
YWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCAgZmFsc2UsIGZhbHNlLCB0cnVlLCAKLX07Ci0KLXN0
YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRFc2NhcGVVQ2hhcihVQ2hhciBjaGFyYWN0ZXIsIFVDaGFy
IHByZXZpb3VzQ2hhcmFjdGVyLCBVQ2hhciBuZXh0Q2hhcmFjdGVyKQotewotICAgIGlmIChjaGFy
YWN0ZXIgPD0gMTI3KQotICAgICAgICByZXR1cm4gbmVlZHNFc2NhcGluZ1tjaGFyYWN0ZXJdOwot
Ci0gICAgaWYgKFUxNl9JU19MRUFEKGNoYXJhY3RlcikgJiYgIVUxNl9JU19UUkFJTChuZXh0Q2hh
cmFjdGVyKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBpZiAoVTE2X0lTX1RSQUlMKGNo
YXJhY3RlcikgJiYgIVUxNl9JU19MRUFEKHByZXZpb3VzQ2hhcmFjdGVyKSkKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLVN0cmluZyBlbmNvZGVGb3JGaWxl
TmFtZShjb25zdCBTdHJpbmcmIGlucHV0U3RyaW5nKQotewotICAgIHVuc2lnbmVkIGxlbmd0aCA9
IGlucHV0U3RyaW5nLmxlbmd0aCgpOwotICAgIGlmICghbGVuZ3RoKQotICAgICAgICByZXR1cm4g
aW5wdXRTdHJpbmc7Ci0KLSAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKLSAgICByZXN1bHQucmVz
ZXJ2ZUNhcGFjaXR5KGxlbmd0aCk7Ci0KLSAgICBVQ2hhciBwcmV2aW91c0NoYXJhY3RlcjsKLSAg
ICBVQ2hhciBjaGFyYWN0ZXIgPSAwOwotICAgIFVDaGFyIG5leHRDaGFyYWN0ZXIgPSBpbnB1dFN0
cmluZ1swXTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAg
ICAgICAgcHJldmlvdXNDaGFyYWN0ZXIgPSBjaGFyYWN0ZXI7Ci0gICAgICAgIGNoYXJhY3RlciA9
IG5leHRDaGFyYWN0ZXI7Ci0gICAgICAgIG5leHRDaGFyYWN0ZXIgPSBpICsgMSA8IGxlbmd0aCA/
IGlucHV0U3RyaW5nW2kgKyAxXSA6IDA7Ci0KLSAgICAgICAgaWYgKHNob3VsZEVzY2FwZVVDaGFy
KGNoYXJhY3RlciwgcHJldmlvdXNDaGFyYWN0ZXIsIG5leHRDaGFyYWN0ZXIpKSB7Ci0gICAgICAg
ICAgICBpZiAoY2hhcmFjdGVyIDw9IDI1NSkgewotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmQoJyUnKTsKLSAgICAgICAgICAgICAgICBhcHBlbmRCeXRlQXNIZXgoY2hhcmFjdGVyLCByZXN1
bHQpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5k
TGl0ZXJhbCgiJSsiKTsKLSAgICAgICAgICAgICAgICBhcHBlbmRCeXRlQXNIZXgoY2hhcmFjdGVy
ID4+IDgsIHJlc3VsdCk7Ci0gICAgICAgICAgICAgICAgYXBwZW5kQnl0ZUFzSGV4KGNoYXJhY3Rl
ciwgcmVzdWx0KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kKGNoYXJhY3Rlcik7Ci0gICAgfQotCi0gICAgcmV0dXJuIHJlc3VsdC50b1N0
cmluZygpOwotfQotCi1TdHJpbmcgZGVjb2RlRnJvbUZpbGVuYW1lKGNvbnN0IFN0cmluZyYgaW5w
dXRTdHJpbmcpCi17Ci0gICAgdW5zaWduZWQgbGVuZ3RoID0gaW5wdXRTdHJpbmcubGVuZ3RoKCk7
Ci0gICAgaWYgKCFsZW5ndGgpCi0gICAgICAgIHJldHVybiBpbnB1dFN0cmluZzsKLQotICAgIFN0
cmluZ0J1aWxkZXIgcmVzdWx0OwotICAgIHJlc3VsdC5yZXNlcnZlQ2FwYWNpdHkobGVuZ3RoKTsK
LQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICBp
ZiAoaW5wdXRTdHJpbmdbaV0gIT0gJyUnKSB7Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKGlu
cHV0U3RyaW5nW2ldKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAg
ICAgLy8gSWYgdGhlIGlucHV0IHN0cmluZyBpcyBhIHZhbGlkIGVuY29kZWQgZmlsZW5hbWUsIGl0
IG11c3QgYmUgYXQgbGVhc3QgMiBjaGFyYWN0ZXJzIGxvbmdlcgotICAgICAgICAvLyB0aGFuIHRo
ZSBjdXJyZW50IGluZGV4IHRvIGFjY291bnQgZm9yIHRoaXMgcGVyY2VudCBlbmNvZGVkIHZhbHVl
LgotICAgICAgICBpZiAoaSArIDIgPj0gbGVuZ3RoKQotICAgICAgICAgICAgcmV0dXJuIHsgfTsK
LQotICAgICAgICBpZiAoaW5wdXRTdHJpbmdbaSsxXSAhPSAnKycpIHsKLSAgICAgICAgICAgIGlm
ICghaXNBU0NJSUhleERpZ2l0KGlucHV0U3RyaW5nW2kgKyAxXSkpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIHsgfTsKLSAgICAgICAgICAgIGlmICghaXNBU0NJSUhleERpZ2l0KGlucHV0U3RyaW5n
W2kgKyAyXSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQodG9BU0NJSUhleFZhbHVlKGlucHV0U3RyaW5nW2kgKyAxXSwgaW5wdXRTdHJpbmdb
aSArIDJdKSk7Ci0gICAgICAgICAgICBpICs9IDI7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgfQotCi0gICAgICAgIC8vIElmIHRoZSBpbnB1dCBzdHJpbmcgaXMgYSB2YWxpZCBlbmNv
ZGVkIGZpbGVuYW1lLCBpdCBtdXN0IGJlIGF0IGxlYXN0IDUgY2hhcmFjdGVycyBsb25nZXIKLSAg
ICAgICAgLy8gdGhhbiB0aGUgY3VycmVudCBpbmRleCB0byBhY2NvdW50IGZvciB0aGlzIHBlcmNl
bnQgZW5jb2RlZCB2YWx1ZS4KLSAgICAgICAgaWYgKGkgKyA1ID49IGxlbmd0aCkKLSAgICAgICAg
ICAgIHJldHVybiB7IH07Ci0KLSAgICAgICAgaWYgKCFpc0FTQ0lJSGV4RGlnaXQoaW5wdXRTdHJp
bmdbaSArIDJdKSkKLSAgICAgICAgICAgIHJldHVybiB7IH07Ci0gICAgICAgIGlmICghaXNBU0NJ
SUhleERpZ2l0KGlucHV0U3RyaW5nW2kgKyAzXSkpCi0gICAgICAgICAgICByZXR1cm4geyB9Owot
ICAgICAgICBpZiAoIWlzQVNDSUlIZXhEaWdpdChpbnB1dFN0cmluZ1tpICsgNF0pKQotICAgICAg
ICAgICAgcmV0dXJuIHsgfTsKLSAgICAgICAgaWYgKCFpc0FTQ0lJSGV4RGlnaXQoaW5wdXRTdHJp
bmdbaSArIDVdKSkKLSAgICAgICAgICAgIHJldHVybiB7IH07Ci0KLSAgICAgICAgcmVzdWx0LmFw
cGVuZCh0b0FTQ0lJSGV4VmFsdWUoaW5wdXRTdHJpbmdbaSArIDJdLCBpbnB1dFN0cmluZ1tpICsg
M10pIDw8IDggfCB0b0FTQ0lJSGV4VmFsdWUoaW5wdXRTdHJpbmdbaSArIDRdLCBpbnB1dFN0cmlu
Z1tpICsgNV0pKTsKLSAgICAgICAgaSArPSA1OwotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQu
dG9TdHJpbmcoKTsKLX0KLQotU3RyaW5nIGxhc3RDb21wb25lbnRPZlBhdGhJZ25vcmluZ1RyYWls
aW5nU2xhc2goY29uc3QgU3RyaW5nJiBwYXRoKQotewotI2lmIE9TKFdJTkRPV1MpCi0gICAgY2hh
ciBwYXRoU2VwYXJhdG9yID0gJ1xcJzsKLSNlbHNlCi0gICAgY2hhciBwYXRoU2VwYXJhdG9yID0g
Jy8nOwotI2VuZGlmCi0KLSAgICBhdXRvIHBvc2l0aW9uID0gcGF0aC5yZXZlcnNlRmluZChwYXRo
U2VwYXJhdG9yKTsKLSAgICBpZiAocG9zaXRpb24gPT0gbm90Rm91bmQpCi0gICAgICAgIHJldHVy
biBwYXRoOwotCi0gICAgc2l6ZV90IGVuZE9mU3Vic3RyaW5nID0gcGF0aC5sZW5ndGgoKSAtIDE7
Ci0gICAgaWYgKHBvc2l0aW9uID09IGVuZE9mU3Vic3RyaW5nKSB7Ci0gICAgICAgIC0tZW5kT2ZT
dWJzdHJpbmc7Ci0gICAgICAgIHBvc2l0aW9uID0gcGF0aC5yZXZlcnNlRmluZChwYXRoU2VwYXJh
dG9yLCBlbmRPZlN1YnN0cmluZyk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHBhdGguc3Vic3RyaW5n
KHBvc2l0aW9uICsgMSwgZW5kT2ZTdWJzdHJpbmcgLSBwb3NpdGlvbik7Ci19Ci0KLWJvb2wgYXBw
ZW5kRmlsZUNvbnRlbnRzVG9GaWxlSGFuZGxlKGNvbnN0IFN0cmluZyYgcGF0aCwgUGxhdGZvcm1G
aWxlSGFuZGxlJiB0YXJnZXQpCi17Ci0gICAgYXV0byBzb3VyY2UgPSBvcGVuRmlsZShwYXRoLCBG
aWxlT3Blbk1vZGU6OlJlYWQpOwotCi0gICAgaWYgKCFpc0hhbmRsZVZhbGlkKHNvdXJjZSkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHN0YXRpYyBpbnQgYnVmZmVyU2l6ZSA9IDEgPDwg
MTk7Ci0gICAgVmVjdG9yPGNoYXI+IGJ1ZmZlcihidWZmZXJTaXplKTsKLQotICAgIGF1dG8gZmls
ZUNsb3NlciA9IFdURjo6bWFrZVNjb3BlRXhpdChbc291cmNlXSgpIHsKLSAgICAgICAgUGxhdGZv
cm1GaWxlSGFuZGxlIGhhbmRsZSA9IHNvdXJjZTsKLSAgICAgICAgY2xvc2VGaWxlKGhhbmRsZSk7
Ci0gICAgfSk7Ci0KLSAgICBkbyB7Ci0gICAgICAgIGludCByZWFkQnl0ZXMgPSByZWFkRnJvbUZp
bGUoc291cmNlLCBidWZmZXIuZGF0YSgpLCBidWZmZXJTaXplKTsKLSAgICAgICAgCi0gICAgICAg
IGlmIChyZWFkQnl0ZXMgPCAwKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAg
IGlmICh3cml0ZVRvRmlsZSh0YXJnZXQsIGJ1ZmZlci5kYXRhKCksIHJlYWRCeXRlcykgIT0gcmVh
ZEJ5dGVzKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIGlmIChyZWFkQnl0
ZXMgPCBidWZmZXJTaXplKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSB3aGlsZSAo
dHJ1ZSk7Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotICAgIAotYm9vbCBmaWxl
c0hhdmVTYW1lVm9sdW1lKGNvbnN0IFN0cmluZyYgZmlsZUEsIGNvbnN0IFN0cmluZyYgZmlsZUIp
Ci17Ci0gICAgYXV0byBmc1JlcEZpbGVBID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVB
KTsKLSAgICBhdXRvIGZzUmVwRmlsZUIgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZUIp
OwotICAgIAotICAgIGlmIChmc1JlcEZpbGVBLmlzTnVsbCgpIHx8IGZzUmVwRmlsZUIuaXNOdWxs
KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0K
LSAgICBhdXRvIGZpbGVBRGV2ID0gZ2V0RmlsZURldmljZUlkKGZzUmVwRmlsZUEpOwotICAgIGF1
dG8gZmlsZUJEZXYgPSBnZXRGaWxlRGV2aWNlSWQoZnNSZXBGaWxlQik7Ci0KLSAgICBpZiAoZmls
ZUFEZXYgJiYgZmlsZUJEZXYpCi0gICAgICAgIHJlc3VsdCA9IChmaWxlQURldiA9PSBmaWxlQkRl
dik7Ci0gICAgCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotI2lmICFQTEFURk9STShNQUMpCi0K
LXZvaWQgc2V0TWV0YWRhdGFVUkwoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJikKLXsKLX0KLQotYm9vbCBjYW5FeGNsdWRlRnJvbUJhY2t1cCgpCi17Ci0gICAgcmV0
dXJuIGZhbHNlOwotfQotCi1ib29sIGV4Y2x1ZGVGcm9tQmFja3VwKGNvbnN0IFN0cmluZyYpCi17
Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi0jZW5kaWYKLQotTWFwcGVkRmlsZURhdGE6On5NYXBw
ZWRGaWxlRGF0YSgpCi17Ci0jaWYgIU9TKFdJTkRPV1MpCi0gICAgaWYgKCFtX2ZpbGVEYXRhKQot
ICAgICAgICByZXR1cm47Ci0gICAgbXVubWFwKG1fZmlsZURhdGEsIG1fZmlsZVNpemUpOwotI2Vu
ZGlmCi19Ci0KLU1hcHBlZEZpbGVEYXRhOjpNYXBwZWRGaWxlRGF0YShjb25zdCBTdHJpbmcmIGZp
bGVQYXRoLCBib29sJiBzdWNjZXNzKQotewotI2lmIE9TKFdJTkRPV1MpCi0gICAgLy8gRklYTUU6
IEltcGxlbWVudCBtYXBwaW5nCi0gICAgc3VjY2VzcyA9IGZhbHNlOwotI2Vsc2UKLSAgICBDU3Ry
aW5nIGZzUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVQYXRoKTsKLSAgICBpbnQg
ZmQgPSAhZnNSZXAuaXNOdWxsKCkgPyBvcGVuKGZzUmVwLmRhdGEoKSwgT19SRE9OTFkpIDogLTE7
Ci0gICAgaWYgKGZkIDwgMCkgewotICAgICAgICBzdWNjZXNzID0gZmFsc2U7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBzdHJ1Y3Qgc3RhdCBmaWxlU3RhdDsKLSAgICBpZiAoZnN0YXQo
ZmQsICZmaWxlU3RhdCkpIHsKLSAgICAgICAgY2xvc2UoZmQpOwotICAgICAgICBzdWNjZXNzID0g
ZmFsc2U7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICB1bnNpZ25lZCBzaXplOwotICAg
IGlmICghV1RGOjpjb252ZXJ0U2FmZWx5KGZpbGVTdGF0LnN0X3NpemUsIHNpemUpKSB7Ci0gICAg
ICAgIGNsb3NlKGZkKTsKLSAgICAgICAgc3VjY2VzcyA9IGZhbHNlOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgaWYgKCFzaXplKSB7Ci0gICAgICAgIGNsb3NlKGZkKTsKLSAgICAgICAg
c3VjY2VzcyA9IHRydWU7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICB2b2lkKiBkYXRh
ID0gbW1hcCgwLCBzaXplLCBQUk9UX1JFQUQsIE1BUF9GSUxFIHwgTUFQX1NIQVJFRCwgZmQsIDAp
OwotICAgIGNsb3NlKGZkKTsKLQotICAgIGlmIChkYXRhID09IE1BUF9GQUlMRUQpIHsKLSAgICAg
ICAgc3VjY2VzcyA9IGZhbHNlOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgc3VjY2Vz
cyA9IHRydWU7Ci0gICAgbV9maWxlRGF0YSA9IGRhdGE7Ci0gICAgbV9maWxlU2l6ZSA9IHNpemU7
Ci0jZW5kaWYKLX0KLQotUGxhdGZvcm1GaWxlSGFuZGxlIG9wZW5BbmRMb2NrRmlsZShjb25zdCBT
dHJpbmcmIHBhdGgsIEZpbGVPcGVuTW9kZSBvcGVuTW9kZSwgT3B0aW9uU2V0PEZpbGVMb2NrTW9k
ZT4gbG9ja01vZGUpCi17Ci0gICAgYXV0byBoYW5kbGUgPSBvcGVuRmlsZShwYXRoLCBvcGVuTW9k
ZSk7Ci0gICAgaWYgKGhhbmRsZSA9PSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQotICAgICAg
ICByZXR1cm4gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKLQotI2lmIFVTRShGSUxFX0xPQ0sp
Ci0gICAgYm9vbCBsb2NrZWQgPSBsb2NrRmlsZShoYW5kbGUsIGxvY2tNb2RlKTsKLSAgICBBU1NF
UlRfVU5VU0VEKGxvY2tlZCwgbG9ja2VkKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGxvY2tN
b2RlKTsKLSNlbmRpZgotCi0gICAgcmV0dXJuIGhhbmRsZTsKLX0KLQotdm9pZCB1bmxvY2tBbmRD
bG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSkKLXsKLSNpZiBVU0UoRklMRV9MT0NL
KQotICAgIGJvb2wgdW5sb2NrZWQgPSB1bmxvY2tGaWxlKGhhbmRsZSk7Ci0gICAgQVNTRVJUX1VO
VVNFRCh1bmxvY2tlZCwgdW5sb2NrZWQpOwotI2VuZGlmCi0gICAgY2xvc2VGaWxlKGhhbmRsZSk7
Ci19Ci0KLWJvb2wgZmlsZUlzRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgU2hvdWxkRm9s
bG93U3ltYm9saWNMaW5rcyBzaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzKQotewotICAgIGF1dG8g
bWV0YWRhdGEgPSBzaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzID09IFNob3VsZEZvbGxvd1N5bWJv
bGljTGlua3M6OlllcyA/IGZpbGVNZXRhZGF0YUZvbGxvd2luZ1N5bWxpbmtzKHBhdGgpIDogZmls
ZU1ldGFkYXRhKHBhdGgpOwotICAgIGlmICghbWV0YWRhdGEpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICByZXR1cm4gbWV0YWRhdGEudmFsdWUoKS50eXBlID09IEZpbGVNZXRhZGF0YTo6VHlw
ZTo6RGlyZWN0b3J5OwotfQotCi19IC8vIG5hbWVzcGFjZSBGaWxlU3lzdGVtCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lz
dGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDNjZWJjYWEwNTM5YjU5ZDkzZTcyZTA5ODQwYjIzYjFkYWM2Mzgx
MWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oCisrKyAvZGV2L251bGwKQEAgLTEsMjI1ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhLCBMdGQuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCi0gKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFt
ZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4gCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQK
LSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlIDx0aW1lLmg+Ci0jaW5jbHVkZSA8dXRpbGl0
eT4KLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4K
LSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+Ci0jaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLSNpZiBVU0UoQ0YpCi0jaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgotI2VuZGlmCi0KLSNpZiBVU0UoQ0YpCi10eXBlZGVmIGNvbnN0IHN0cnVj
dCBfX0NGRGF0YSogQ0ZEYXRhUmVmOwotI2VuZGlmCi0KLU9CSkNfQ0xBU1MgTlNTdHJpbmc7Ci0K
LSNpZiBQTEFURk9STShXSU4pCi10eXBlZGVmIHZvaWQgKkhBTkRMRTsKLSNlbmRpZgotCi0jaWYg
VVNFKEdMSUIpCi10eXBlZGVmIHN0cnVjdCBfR0ZpbGVJT1N0cmVhbSBHRmlsZUlPU3RyZWFtOwot
I2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IEZpbGVNZXRhZGF0YTsKLQot
bmFtZXNwYWNlIEZpbGVTeXN0ZW0gewotCi0vLyBQbGF0Zm9ybUZpbGVIYW5kbGUKLSNpZiBVU0Uo
R0xJQikgJiYgIVBMQVRGT1JNKFdJTikKLXR5cGVkZWYgR0ZpbGVJT1N0cmVhbSogUGxhdGZvcm1G
aWxlSGFuZGxlOwotY29uc3QgUGxhdGZvcm1GaWxlSGFuZGxlIGludmFsaWRQbGF0Zm9ybUZpbGVI
YW5kbGUgPSAwOwotI2VsaWYgUExBVEZPUk0oV0lOKQotdHlwZWRlZiBIQU5ETEUgUGxhdGZvcm1G
aWxlSGFuZGxlOwotLy8gRklYTUU6IC0xIGlzIElOVkFMSURfSEFORExFX1ZBTFVFLCBkZWZpbmVk
IGluIDx3aW5iYXNlLmg+LiBDaHJvbWl1bSB0cmllcyB0bwotLy8gYXZvaWQgdXNpbmcgV2luZG93
cyBoZWFkZXJzIGluIGhlYWRlcnMuICBXZSdkIHJhdGhlciBtb3ZlIHRoaXMgaW50byB0aGUgLmNw
cC4KLWNvbnN0IFBsYXRmb3JtRmlsZUhhbmRsZSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlID0g
cmVpbnRlcnByZXRfY2FzdDxIQU5ETEU+KC0xKTsKLSNlbHNlCi10eXBlZGVmIGludCBQbGF0Zm9y
bUZpbGVIYW5kbGU7Ci1jb25zdCBQbGF0Zm9ybUZpbGVIYW5kbGUgaW52YWxpZFBsYXRmb3JtRmls
ZUhhbmRsZSA9IC0xOwotI2VuZGlmCi0KLWVudW0gY2xhc3MgRmlsZU9wZW5Nb2RlIHsKLSAgICBS
ZWFkLAotICAgIFdyaXRlLAotI2lmIE9TKERBUldJTikKLSAgICBFdmVudHNPbmx5LAotI2VuZGlm
Ci19OwotCi1lbnVtIGNsYXNzIEZpbGVTZWVrT3JpZ2luIHsKLSAgICBCZWdpbm5pbmcsCi0gICAg
Q3VycmVudCwKLSAgICBFbmQsCi19OwotCi1lbnVtIGNsYXNzIEZpbGVMb2NrTW9kZSB7Ci0gICAg
U2hhcmVkID0gMSA8PCAwLAotICAgIEV4Y2x1c2l2ZSA9IDEgPDwgMSwKLSAgICBOb25ibG9ja2lu
ZyA9IDEgPDwgMiwKLX07Ci0KLWVudW0gY2xhc3MgU2hvdWxkRm9sbG93U3ltYm9saWNMaW5rcyB7
IE5vLCBZZXMgfTsKLQotV0VCQ09SRV9FWFBPUlQgYm9vbCBmaWxlRXhpc3RzKGNvbnN0IFN0cmlu
ZyYpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCBkZWxldGVGaWxlKGNvbnN0IFN0cmluZyYpOwotV0VC
Q09SRV9FWFBPUlQgYm9vbCBkZWxldGVFbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKLVdF
QkNPUkVfRVhQT1JUIGJvb2wgbW92ZUZpbGUoY29uc3QgU3RyaW5nJiBvbGRQYXRoLCBjb25zdCBT
dHJpbmcmIG5ld1BhdGgpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCBnZXRGaWxlU2l6ZShjb25zdCBT
dHJpbmcmLCBsb25nIGxvbmcmIHJlc3VsdCk7Ci1XRUJDT1JFX0VYUE9SVCBib29sIGdldEZpbGVT
aXplKFBsYXRmb3JtRmlsZUhhbmRsZSwgbG9uZyBsb25nJiByZXN1bHQpOwotV0VCQ09SRV9FWFBP
UlQgT3B0aW9uYWw8V2FsbFRpbWU+IGdldEZpbGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmlu
ZyYpOwotV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8V2FsbFRpbWU+IGdldEZpbGVDcmVhdGlvblRp
bWUoY29uc3QgU3RyaW5nJik7IC8vIE5vdCBhbGwgcGxhdGZvcm1zIHN0b3JlIGZpbGUgY3JlYXRp
b24gdGltZS4KLVdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFk
YXRhKGNvbnN0IFN0cmluZyYgcGF0aCk7Ci1XRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxGaWxlTWV0
YWRhdGE+IGZpbGVNZXRhZGF0YUZvbGxvd2luZ1N5bWxpbmtzKGNvbnN0IFN0cmluZyYgcGF0aCk7
Ci1XRUJDT1JFX0VYUE9SVCBib29sIGZpbGVJc0RpcmVjdG9yeShjb25zdCBTdHJpbmcmLCBTaG91
bGRGb2xsb3dTeW1ib2xpY0xpbmtzKTsKLVdFQkNPUkVfRVhQT1JUIFN0cmluZyBwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGNvbXBvbmVu
dCk7Ci1TdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhTdHJpbmdWaWV3IHBhdGgsIGNv
bnN0IFZlY3RvcjxTdHJpbmdWaWV3PiYgY29tcG9uZW50cyk7Ci1TdHJpbmcgbGFzdENvbXBvbmVu
dE9mUGF0aElnbm9yaW5nVHJhaWxpbmdTbGFzaChjb25zdCBTdHJpbmcmIHBhdGgpOwotV0VCQ09S
RV9FWFBPUlQgYm9vbCBtYWtlQWxsRGlyZWN0b3JpZXMoY29uc3QgU3RyaW5nJiBwYXRoKTsKLVN0
cmluZyBob21lRGlyZWN0b3J5UGF0aCgpOwotV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHBhdGhHZXRG
aWxlTmFtZShjb25zdCBTdHJpbmcmKTsKLVdFQkNPUkVfRVhQT1JUIFN0cmluZyBkaXJlY3RvcnlO
YW1lKGNvbnN0IFN0cmluZyYpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCBnZXRWb2x1bWVGcmVlU3Bh
Y2UoY29uc3QgU3RyaW5nJiwgdWludDY0X3QmKTsKLVdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPGlu
dDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJik7Ci1XRUJDT1JFX0VYUE9SVCBi
b29sIGNyZWF0ZVN5bWJvbGljTGluayhjb25zdCBTdHJpbmcmIHRhcmdldFBhdGgsIGNvbnN0IFN0
cmluZyYgc3ltYm9saWNMaW5rUGF0aCk7Ci0KLVdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TWV0YWRh
dGFVUkwoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3Qg
U3RyaW5nJiByZWZlcnJlciA9IHsgfSk7Ci0KLWJvb2wgY2FuRXhjbHVkZUZyb21CYWNrdXAoKTsg
Ly8gUmV0dXJucyB0cnVlIGlmIGFueSBmaWxlIGNhbiBldmVyIGJlIGV4Y2x1ZGVkIGZyb20gYmFj
a3VwLgotYm9vbCBleGNsdWRlRnJvbUJhY2t1cChjb25zdCBTdHJpbmcmKTsgLy8gUmV0dXJucyB0
cnVlIGlmIHN1Y2Nlc3NmdWwuCi0KLVdFQkNPUkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+IGxpc3RE
aXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGZpbHRlciA9IFN0cmlu
ZygpKTsKLQotV0VCQ09SRV9FWFBPUlQgQ1N0cmluZyBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
Y29uc3QgU3RyaW5nJik7Ci1TdHJpbmcgc3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihjb25zdCBjaGFyKik7Ci0KLWlubGluZSBib29sIGlzSGFuZGxlVmFsaWQoY29uc3QgUGxhdGZv
cm1GaWxlSGFuZGxlJiBoYW5kbGUpIHsgcmV0dXJuIGhhbmRsZSAhPSBpbnZhbGlkUGxhdGZvcm1G
aWxlSGFuZGxlOyB9Ci0KLS8vIFByZWZpeCBpcyB3aGF0IHRoZSBmaWxlbmFtZSBzaG91bGQgYmUg
cHJlZml4ZWQgd2l0aCwgbm90IHRoZSBmdWxsIHBhdGguCi1XRUJDT1JFX0VYUE9SVCBTdHJpbmcg
b3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRs
ZSYpOwotV0VCQ09SRV9FWFBPUlQgUGxhdGZvcm1GaWxlSGFuZGxlIG9wZW5GaWxlKGNvbnN0IFN0
cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlKTsKLVdFQkNPUkVfRVhQT1JUIHZvaWQgY2xvc2VGaWxl
KFBsYXRmb3JtRmlsZUhhbmRsZSYpOwotLy8gUmV0dXJucyB0aGUgcmVzdWx0aW5nIG9mZnNldCBm
cm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZpbGUgaWYgc3VjY2Vzc2Z1bCwgLTEgb3RoZXJ3aXNl
LgotV0VCQ09SRV9FWFBPUlQgbG9uZyBsb25nIHNlZWtGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwg
bG9uZyBsb25nIG9mZnNldCwgRmlsZVNlZWtPcmlnaW4pOwotYm9vbCB0cnVuY2F0ZUZpbGUoUGxh
dGZvcm1GaWxlSGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0KTsKLS8vIFJldHVybnMgbnVtYmVyIG9m
IGJ5dGVzIGFjdHVhbGx5IHJlYWQgaWYgc3VjY2Vzc2Z1bCwgLTEgb3RoZXJ3aXNlLgotV0VCQ09S
RV9FWFBPUlQgaW50IHdyaXRlVG9GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgY29uc3QgY2hhciog
ZGF0YSwgaW50IGxlbmd0aCk7Ci0vLyBSZXR1cm5zIG51bWJlciBvZiBieXRlcyBhY3R1YWxseSB3
cml0dGVuIGlmIHN1Y2Nlc3NmdWwsIC0xIG90aGVyd2lzZS4KLVdFQkNPUkVfRVhQT1JUIGludCBy
ZWFkRnJvbUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsK
LQotV0VCQ09SRV9FWFBPUlQgUGxhdGZvcm1GaWxlSGFuZGxlIG9wZW5BbmRMb2NrRmlsZShjb25z
dCBTdHJpbmcmLCBGaWxlT3Blbk1vZGUsIE9wdGlvblNldDxGaWxlTG9ja01vZGU+ID0gRmlsZUxv
Y2tNb2RlOjpFeGNsdXNpdmUpOwotV0VCQ09SRV9FWFBPUlQgdm9pZCB1bmxvY2tBbmRDbG9zZUZp
bGUoUGxhdGZvcm1GaWxlSGFuZGxlKTsKLQotLy8gQXBwZW5kcyB0aGUgY29udGVudHMgb2YgdGhl
IGZpbGUgZm91bmQgYXQgJ3BhdGgnIHRvIHRoZSBvcGVuIFBsYXRmb3JtRmlsZUhhbmRsZS4KLS8v
IFJldHVybnMgdHJ1ZSBpZiB0aGUgd3JpdGUgd2FzIHN1Y2Nlc3NmdWwsIGZhbHNlIGlmIGl0IHdh
cyBub3QuCi1ib29sIGFwcGVuZEZpbGVDb250ZW50c1RvRmlsZUhhbmRsZShjb25zdCBTdHJpbmcm
IHBhdGgsIFBsYXRmb3JtRmlsZUhhbmRsZSYpOwotCi0vLyBIYXJkIGxpbmtzIGEgZmlsZSBpZiBw
b3NzaWJsZSwgY29waWVzIGl0IGlmIG5vdC4KLWJvb2wgaGFyZExpbmtPckNvcHlGaWxlKGNvbnN0
IFN0cmluZyYgc291cmNlLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uKTsKLQotI2lmIFVTRShG
SUxFX0xPQ0spCi1XRUJDT1JFX0VYUE9SVCBib29sIGxvY2tGaWxlKFBsYXRmb3JtRmlsZUhhbmRs
ZSwgT3B0aW9uU2V0PEZpbGVMb2NrTW9kZT4pOwotV0VCQ09SRV9FWFBPUlQgYm9vbCB1bmxvY2tG
aWxlKFBsYXRmb3JtRmlsZUhhbmRsZSk7Ci0jZW5kaWYKLQotLy8gRW5jb2RlIGEgc3RyaW5nIGZv
ciB1c2Ugd2l0aGluIGEgZmlsZSBuYW1lLgotV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGVuY29kZUZv
ckZpbGVOYW1lKGNvbnN0IFN0cmluZyYpOwotV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGRlY29kZUZy
b21GaWxlbmFtZShjb25zdCBTdHJpbmcmKTsKLQotV0VCQ09SRV9FWFBPUlQgYm9vbCBmaWxlc0hh
dmVTYW1lVm9sdW1lKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOwotCi0jaWYgVVNFKENG
KQotUmV0YWluUHRyPENGVVJMUmVmPiBwYXRoQXNVUkwoY29uc3QgU3RyaW5nJik7Ci0jZW5kaWYK
LQotI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQotU3RyaW5nIGZpbGVuYW1lRm9y
RGlzcGxheShjb25zdCBTdHJpbmcmKTsKLSNlbmRpZgotCi0jaWYgUExBVEZPUk0oV0lOKQotV0VC
Q09SRV9FWFBPUlQgU3RyaW5nIGxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpOwot
U3RyaW5nIHJvYW1pbmdVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCk7Ci0jZW5kaWYKLQot
I2lmIFBMQVRGT1JNKENPQ09BKQotV0VCQ09SRV9FWFBPUlQgTlNTdHJpbmcgKmNyZWF0ZVRlbXBv
cmFyeURpcmVjdG9yeShOU1N0cmluZyAqZGlyZWN0b3J5UHJlZml4KTsKLVdFQkNPUkVfRVhQT1JU
IGJvb2wgZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7Ci0jZW5kaWYKLQot
I2lmIFBMQVRGT1JNKFdJTl9DQUlSTykKLVdFQkNPUkVfRVhQT1JUIFN0cmluZyBjcmVhdGVUZW1w
b3JhcnlEaXJlY3RvcnkoKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgZGVsZXRlTm9uRW1wdHlEaXJl
Y3RvcnkoY29uc3QgU3RyaW5nJik7Ci0jZW5kaWYKLQotV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHJl
YWxQYXRoKGNvbnN0IFN0cmluZyYpOwotCi1jbGFzcyBNYXBwZWRGaWxlRGF0YSB7Ci1wdWJsaWM6
Ci0gICAgTWFwcGVkRmlsZURhdGEoKSB7IH0KLSAgICBNYXBwZWRGaWxlRGF0YShNYXBwZWRGaWxl
RGF0YSYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBNYXBwZWRGaWxlRGF0YShjb25zdCBTdHJpbmcm
IGZpbGVQYXRoLCBib29sJiBzdWNjZXNzKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB+TWFwcGVkRmls
ZURhdGEoKTsKLSAgICBNYXBwZWRGaWxlRGF0YSYgb3BlcmF0b3I9KE1hcHBlZEZpbGVEYXRhJiYp
OwotCi0gICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9maWxl
RGF0YTsgfQotICAgIGNvbnN0IHZvaWQqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2ZpbGVEYXRh
OyB9Ci0gICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsZVNpemU7IH0KLQot
cHJpdmF0ZToKLSAgICB2b2lkKiBtX2ZpbGVEYXRhIHsgbnVsbHB0ciB9OwotICAgIHVuc2lnbmVk
IG1fZmlsZVNpemUgeyAwIH07Ci19OwotCi1pbmxpbmUgTWFwcGVkRmlsZURhdGE6Ok1hcHBlZEZp
bGVEYXRhKE1hcHBlZEZpbGVEYXRhJiYgb3RoZXIpCi0gICAgOiBtX2ZpbGVEYXRhKHN0ZDo6ZXhj
aGFuZ2Uob3RoZXIubV9maWxlRGF0YSwgbnVsbHB0cikpCi0gICAgLCBtX2ZpbGVTaXplKHN0ZDo6
ZXhjaGFuZ2Uob3RoZXIubV9maWxlU2l6ZSwgMCkpCi17Ci19Ci0KLWlubGluZSBNYXBwZWRGaWxl
RGF0YSYgTWFwcGVkRmlsZURhdGE6Om9wZXJhdG9yPShNYXBwZWRGaWxlRGF0YSYmIG90aGVyKQot
ewotICAgIG1fZmlsZURhdGEgPSBzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fZmlsZURhdGEsIG51bGxw
dHIpOwotICAgIG1fZmlsZVNpemUgPSBzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fZmlsZVNpemUsIDAp
OwotICAgIHJldHVybiAqdGhpczsKLX0KLQotfSAvLyBuYW1lc3BhY2UgRmlsZVN5c3RlbQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5o
CmluZGV4IDgxMzE4ZThiMjlhZTVhMGY1Yjk2MDNjODI1NTc5MWNkYmMyMGE0ZTEuLmVjMzcxMzQx
YWI5NDk1YjdkMzU3NjEzNTFiMmIwOWIxMzVhM2VmM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5oCkBAIC0yNiw4ICsyNiw4IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5j
bHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FycmF5QnVmZmVy
Lmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVS
ZWZDb3VudGVkLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Tb3VyY2Vz
R0xpYi50eHQgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Tb3VyY2VzR0xpYi50eHQKaW5kZXgg
Mjc3M2MyYTA4OGI2MGZiMTM5NjkyZDVmNDBkMGJlZmMzZmVjM2NjNC4uMDkwYjg0YTQ4YzEwM2Qz
ZDU5MzE0MWQ5MGUyYmJiNGFiZjJjNWJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU291cmNlc0dMaWIudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NvdXJj
ZXNHTGliLnR4dApAQCAtMjUsNyArMjUsNiBAQCBwbGF0Zm9ybS9hdWRpby9nbGliL0F1ZGlvQnVz
R0xpYi5jcHAKIAogcGxhdGZvcm0vZ2xpYi9FdmVudExvb3BHbGliLmNwcAogcGxhdGZvcm0vZ2xp
Yi9GaWxlTW9uaXRvckdMaWIuY3BwCi1wbGF0Zm9ybS9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcAog
cGxhdGZvcm0vZ2xpYi9LZXllZERlY29kZXJHbGliLmNwcAogcGxhdGZvcm0vZ2xpYi9LZXllZEVu
Y29kZXJHbGliLmNwcAogcGxhdGZvcm0vZ2xpYi9Mb3dQb3dlck1vZGVOb3RpZmllckdMaWIuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvRmlsZVN5c3RlbUNGLmNwcApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDg0NzBhMDhmYTVkMmY0NTJlNmM5Mzg3MDFjNmQ5MjZjYTYw
OWYwMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsNzQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAxMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0
aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAg
aXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgot
Ci0jaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvUmV0
YWluUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUNTdHJpbmcgRmlsZVN5
c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAg
ICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmU3RyaW5nID0gcGF0aC5jcmVhdGVDRlN0cmluZygp
OwotCi0gICAgaWYgKCFjZlN0cmluZykKLSAgICAgICAgcmV0dXJuIENTdHJpbmcoKTsKLQotICAg
IENGSW5kZXggc2l6ZSA9IENGU3RyaW5nR2V0TWF4aW11bVNpemVPZkZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihjZlN0cmluZy5nZXQoKSk7Ci0KLSAgICBWZWN0b3I8Y2hhcj4gYnVmZmVyKHNpemUp
OwotCi0gICAgaWYgKCFDRlN0cmluZ0dldEZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjZlN0cmlu
Zy5nZXQoKSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSkpIHsKLSAgICAgICAgTE9HX0VS
Uk9SKCJGYWlsZWQgdG8gZ2V0IGZpbGVzeXN0ZW0gcmVwcmVzZW50YXRpb24gdG8gY3JlYXRlIENT
dHJpbmcgZnJvbSBjZlN0cmluZyIpOwotICAgICAgICByZXR1cm4gQ1N0cmluZygpOwotICAgIH0K
LQotICAgIHJldHVybiBDU3RyaW5nKGJ1ZmZlci5kYXRhKCksIHN0cmxlbihidWZmZXIuZGF0YSgp
KSk7Ci19Ci0KLVN0cmluZyBGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKGNvbnN0IGNoYXIqIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbikKLXsKLSAgICByZXR1
cm4gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oa0NG
QWxsb2NhdG9yRGVmYXVsdCwgZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKSkuZ2V0KCk7Ci19Ci0K
LVJldGFpblB0cjxDRlVSTFJlZj4gRmlsZVN5c3RlbTo6cGF0aEFzVVJMKGNvbnN0IFN0cmluZyYg
cGF0aCkKLXsKLSAgICBDRlVSTFBhdGhTdHlsZSBwYXRoU3R5bGU7Ci0jaWYgUExBVEZPUk0oV0lO
KQotICAgIHBhdGhTdHlsZSA9IGtDRlVSTFdpbmRvd3NQYXRoU3R5bGU7Ci0jZWxzZQotICAgIHBh
dGhTdHlsZSA9IGtDRlVSTFBPU0lYUGF0aFN0eWxlOwotI2VuZGlmCi0gICAgcmV0dXJuIGFkb3B0
Q0YoQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoMCwgcGF0aC5jcmVhdGVDRlN0cmluZygp
LmdldCgpLCBwYXRoU3R5bGUsIEZBTFNFKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0ZpbGVNb25pdG9yQ29j
b2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9GaWxlTW9uaXRvckNvY29hLm1t
CmluZGV4IDFhYjNjMzM0YzY5ZGZmYTM2NDhhYjAwYTQ1NThkOWYyN2U0MzA2MDAuLmNjN2ZlNmI2
Y2RlMTBlZDRjYTQ1NmU0NmJlMjhhMDRmNjg3MjQ3NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL0ZpbGVNb25pdG9yQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvRmlsZU1vbml0b3JDb2NvYS5tbQpAQCAtMjYsOSArMjYsOSBAQAog
I2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJGaWxlTW9uaXRvci5oIgogCi0jaW1wb3J0ICJG
aWxlU3lzdGVtLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIu
aD4KKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0ZpbGVTeXN0ZW1D
b2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0ZpbGVTeXN0ZW1Db2NvYS5t
bQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDM4YjBjODMwM2U3YmExMGQ0MDUzM2Ni
Y2QxNWRhMzNiMDk2OWUzYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9GaWxlU3lzdGVtQ29jb2EubW0K
KysrIC9kZXYvbnVsbApAQCAtMSwxNDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
Ny0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
IAotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
IAotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRo
ZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9y
dCAiRmlsZVN5c3RlbS5oIgotCi1AaW50ZXJmYWNlIFdlYkZpbGVNYW5hZ2VyRGVsZWdhdGUgOiBO
U09iamVjdCA8TlNGaWxlTWFuYWdlckRlbGVnYXRlPgotQGVuZAotCi1AaW1wbGVtZW50YXRpb24g
V2ViRmlsZU1hbmFnZXJEZWxlZ2F0ZQotCi0tIChCT09MKWZpbGVNYW5hZ2VyOihOU0ZpbGVNYW5h
Z2VyICopZmlsZU1hbmFnZXIgc2hvdWxkUHJvY2VlZEFmdGVyRXJyb3I6KE5TRXJyb3IgKillcnJv
ciBtb3ZpbmdJdGVtQXRVUkw6KE5TVVJMICopc3JjVVJMIHRvVVJMOihOU1VSTCAqKWRzdFVSTAot
ewotICAgIFVOVVNFRF9QQVJBTShmaWxlTWFuYWdlcik7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY1VS
TCk7Ci0gICAgVU5VU0VEX1BBUkFNKGRzdFVSTCk7ICAgIAotICAgIHJldHVybiBlcnJvci5jb2Rl
ID09IE5TRmlsZVdyaXRlRmlsZUV4aXN0c0Vycm9yOwotfQotCi1AZW5kCi0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotbmFtZXNwYWNlIEZpbGVTeXN0ZW0gewotCi1TdHJpbmcgaG9tZURpcmVjdG9y
eVBhdGgoKQotewotICAgIHJldHVybiBOU0hvbWVEaXJlY3RvcnkoKTsKLX0KLQotU3RyaW5nIG9w
ZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUm
IHBsYXRmb3JtRmlsZUhhbmRsZSkKLXsKLSAgICBwbGF0Zm9ybUZpbGVIYW5kbGUgPSBpbnZhbGlk
UGxhdGZvcm1GaWxlSGFuZGxlOwotICAgIAotICAgIFZlY3RvcjxjaGFyPiB0ZW1wb3JhcnlGaWxl
UGF0aChQQVRIX01BWCk7Ci0gICAgaWYgKCFjb25mc3RyKF9DU19EQVJXSU5fVVNFUl9URU1QX0RJ
UiwgdGVtcG9yYXJ5RmlsZVBhdGguZGF0YSgpLCB0ZW1wb3JhcnlGaWxlUGF0aC5zaXplKCkpKQot
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICAvLyBTaHJpbmsgdGhlIHZlY3Rvci4gICAK
LSAgICB0ZW1wb3JhcnlGaWxlUGF0aC5zaHJpbmsoc3RybGVuKHRlbXBvcmFyeUZpbGVQYXRoLmRh
dGEoKSkpOwotCi0gICAgLy8gRklYTUU6IENoYW5nZSB0byBhIHJ1bnRpbWUgYXNzZXJ0aW9uIHRo
YXQgdGhlIHBhdGggZW5kcyB3aXRoIGEgc2xhc2ggb25jZSA8cmRhcjovL3Byb2JsZW0vMjM1Nzkw
Nzc+IGlzCi0gICAgLy8gZml4ZWQgaW4gYWxsIGlPUyBTaW11bGF0b3IgdmVyc2lvbnMgdGhhdCB3
ZSB1c2UuCi0gICAgaWYgKHRlbXBvcmFyeUZpbGVQYXRoLmxhc3QoKSAhPSAnLycpCi0gICAgICAg
IHRlbXBvcmFyeUZpbGVQYXRoLmFwcGVuZCgnLycpOwotCi0gICAgLy8gQXBwZW5kIHRoZSBmaWxl
IG5hbWUuCi0gICAgQ1N0cmluZyBwcmVmaXhVdGY4ID0gcHJlZml4LnV0ZjgoKTsKLSAgICB0ZW1w
b3JhcnlGaWxlUGF0aC5hcHBlbmQocHJlZml4VXRmOC5kYXRhKCksIHByZWZpeFV0ZjgubGVuZ3Ro
KCkpOwotICAgIHRlbXBvcmFyeUZpbGVQYXRoLmFwcGVuZCgiWFhYWFhYIiwgNik7Ci0gICAgdGVt
cG9yYXJ5RmlsZVBhdGguYXBwZW5kKCdcMCcpOwotCi0gICAgcGxhdGZvcm1GaWxlSGFuZGxlID0g
bWtzdGVtcCh0ZW1wb3JhcnlGaWxlUGF0aC5kYXRhKCkpOwotICAgIGlmIChwbGF0Zm9ybUZpbGVI
YW5kbGUgPT0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKLSAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOwotCi0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgodGVtcG9yYXJ5RmlsZVBhdGguZGF0
YSgpKTsKLX0KLQotYm9vbCBtb3ZlRmlsZShjb25zdCBTdHJpbmcmIG9sZFBhdGgsIGNvbnN0IFN0
cmluZyYgbmV3UGF0aCkKLXsKLSAgICAvLyBPdmVyd3JpdGUgZXhpc3RpbmcgZmlsZXMuCi0gICAg
YXV0byBtYW5hZ2VyID0gYWRvcHROUyhbW05TRmlsZU1hbmFnZXIgYWxsb2NdIGluaXRdKTsKLSAg
ICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1dlYkZpbGVNYW5hZ2VyRGVsZWdhdGUgYWxsb2Nd
IGluaXRdKTsKLSAgICBbbWFuYWdlciBzZXREZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07Ci0gICAg
Ci0gICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7Ci0gICAgYm9vbCBzdWNjZXNzID0gW21hbmFnZXIg
bW92ZUl0ZW1BdFVSTDpbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOm9sZFBhdGhdIHRvVVJMOltOU1VS
TCBmaWxlVVJMV2l0aFBhdGg6bmV3UGF0aF0gZXJyb3I6JmVycm9yXTsKLSAgICBpZiAoIXN1Y2Nl
c3MpCi0gICAgICAgIE5TTG9nKEAiRXJyb3IgaW4gbW92ZUZpbGU6ICVAIiwgZXJyb3IpOwotICAg
IHJldHVybiBzdWNjZXNzOwotfQotCi1ib29sIGdldFZvbHVtZUZyZWVTcGFjZShjb25zdCBTdHJp
bmcmIHBhdGgsIHVpbnQ2NF90JiBmcmVlU3BhY2UpCi17Ci0gICAgTlNEaWN0aW9uYXJ5ICpmaWxl
U3lzdGVtQXR0cmlidXRlc0RpY3Rpb25hcnkgPSBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFn
ZXJdIGF0dHJpYnV0ZXNPZkZpbGVTeXN0ZW1Gb3JQYXRoOihOU1N0cmluZyAqKXBhdGggZXJyb3I6
TlVMTF07Ci0gICAgaWYgKCFmaWxlU3lzdGVtQXR0cmlidXRlc0RpY3Rpb25hcnkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBmcmVlU3BhY2UgPSBbW2ZpbGVTeXN0ZW1BdHRyaWJ1dGVzRGlj
dGlvbmFyeSBvYmplY3RGb3JLZXk6TlNGaWxlU3lzdGVtRnJlZVNpemVdIHVuc2lnbmVkTG9uZ0xv
bmdWYWx1ZV07Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLU5TU3RyaW5nICpjcmVhdGVUZW1wb3Jh
cnlEaXJlY3RvcnkoTlNTdHJpbmcgKmRpcmVjdG9yeVByZWZpeCkKLXsKLSAgICBOU1N0cmluZyAq
dGVtcERpcmVjdG9yeSA9IE5TVGVtcG9yYXJ5RGlyZWN0b3J5KCk7Ci0gICAgaWYgKCF0ZW1wRGly
ZWN0b3J5IHx8ICFbdGVtcERpcmVjdG9yeSBsZW5ndGhdKQotICAgICAgICByZXR1cm4gbmlsOwot
Ci0gICAgaWYgKCFkaXJlY3RvcnlQcmVmaXggfHwgIVtkaXJlY3RvcnlQcmVmaXggbGVuZ3RoXSkK
LSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIE5TU3RyaW5nICp0ZW1wRGlyZWN0b3J5Q29tcG9u
ZW50ID0gW2RpcmVjdG9yeVByZWZpeCBzdHJpbmdCeUFwcGVuZGluZ1N0cmluZzpAIi1YWFhYWFhY
WCJdOwotICAgIGNvbnN0IGNoYXIqIHRlbXBEaXJlY3RvcnlDU3RyaW5nID0gW1t0ZW1wRGlyZWN0
b3J5IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDp0ZW1wRGlyZWN0b3J5Q29tcG9uZW50
XSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb25dOwotICAgIGlmICghdGVtcERpcmVjdG9yeUNTdHJp
bmcpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBjb25zdCBzaXplX3QgbGVuZ3RoID0gc3Ry
bGVuKHRlbXBEaXJlY3RvcnlDU3RyaW5nKTsKLSAgICBBU1NFUlQobGVuZ3RoIDw9IE1BWFBBVEhM
RU4pOwotICAgIGlmIChsZW5ndGggPiBNQVhQQVRITEVOKQotICAgICAgICByZXR1cm4gbmlsOwot
Ci0gICAgY29uc3Qgc2l6ZV90IGxlbmd0aFBsdXNOdWxsVGVybWluYXRvciA9IGxlbmd0aCArIDE7
Ci0gICAgVmVjdG9yPGNoYXIsIE1BWFBBVEhMRU4gKyAxPiBwYXRoKGxlbmd0aFBsdXNOdWxsVGVy
bWluYXRvcik7Ci0gICAgbWVtY3B5KHBhdGguZGF0YSgpLCB0ZW1wRGlyZWN0b3J5Q1N0cmluZywg
bGVuZ3RoUGx1c051bGxUZXJtaW5hdG9yKTsKLQotICAgIGlmICghbWtkdGVtcChwYXRoLmRhdGEo
KSkpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICByZXR1cm4gW1tOU0ZpbGVNYW5hZ2VyIGRl
ZmF1bHRNYW5hZ2VyXSBzdHJpbmdXaXRoRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uOnBhdGguZGF0
YSgpIGxlbmd0aDpsZW5ndGhdOwotfQotCi1ib29sIGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KGNv
bnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICByZXR1cm4gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRN
YW5hZ2VyXSByZW1vdmVJdGVtQXRQYXRoOnBhdGggZXJyb3I6bmlsXTsKLX0KLQotfSAvLyBuYW1l
c3BhY2UgRmlsZVN5c3RlbQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9GaWxlTW9uaXRvckdMaWIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2xpYi9GaWxlTW9uaXRvckdMaWIuY3BwCmluZGV4IDQ2M2YzMjc2YzI0
ZTI1MWJlYjRhYTA4YjBiOTg5ODZlOGNjOTY5MjMuLjVhOTgyZjQ5NDkyMzdjYjIwYTlmNTRjZjg4
ZTJhZGVlNDhkNGY5NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIv
RmlsZU1vbml0b3JHTGliLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0Zp
bGVNb25pdG9yR0xpYi5jcHAKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJGaWxlTW9uaXRvci5oIgogCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgorI2lu
Y2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5o
PgogI2luY2x1ZGUgPHd0Zi90aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5oPgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBjYTZjM2RmOTRkZDMyMjEzNDMwMGM3YmJkMjZiYmIwODkwNDY1NjMx
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsNDcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDkgSG9sZ2VyIEhh
bnMgUGV0ZXIgRnJleXRoZXIKLSAqIENvcHlyaWdodCAoQykgMjAwOCBDb2xsYWJvcmEsIEx0ZC4K
LSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTAgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJGaWxlU3lz
dGVtLmgiCi0KLSNpbmNsdWRlICJGaWxlTWV0YWRhdGEuaCIKLSNpbmNsdWRlICJOb3RJbXBsZW1l
bnRlZC5oIgotI2luY2x1ZGUgPGdpby9nZmlsZWRlc2NyaXB0b3JiYXNlZC5oPgotI2luY2x1ZGUg
PGdpby9naW8uaD4KLSNpbmNsdWRlIDxnbGliLmg+Ci0jaW5jbHVkZSA8Z2xpYi9nc3RkaW8uaD4K
LSNpbmNsdWRlIDxzeXMvZmlsZS5oPgotI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+Ci0jaW5j
bHVkZSA8d3RmL1VVSUQuaD4KLSNpbmNsdWRlIDx3dGYvZ2xpYi9HTGliVXRpbGl0aWVzLmg+Ci0j
aW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQ
dHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQnVpbGRlci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBGaWxlU3lzdGVtIHsKLQotLyogT24gbGludXgg
ZmlsZSBuYW1lcyBhcmUganVzdCByYXcgYnl0ZXMsIHNvIGFsc28gc3RyaW5ncyB0aGF0IGNhbm5v
dCBiZSBlbmNvZGVkIGluIGFueSB3YXkKLSAqIGFyZSB2YWxpZCBmaWxlIG5hbWVzLiBUaGlzIG1l
YW4gdGhhdCB3ZSBjYW5ub3QganVzdCBzdG9yZSBhIGZpbGUgbmFtZSBhcy1pcyBpbiBhIFN0cmlu
ZwotICogYnV0IHdlIGhhdmUgdG8gZXNjYXBlIGl0LgotICogT24gV2luZG93cyB0aGUgR0xpYiBm
aWxlIG5hbWUgZW5jb2RpbmcgaXMgYWx3YXlzIFVURi04IHNvIHdlIGNhbiBvcHRpbWl6ZSB0aGlz
IGNhc2UuICovCi1TdHJpbmcgc3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25z
dCBjaGFyKiBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24pCi17Ci0gICAgaWYgKCFmaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24pCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotI2lmIE9TKFdJTkRP
V1MpCi0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KTsKLSNlbHNlCi0gICAgR1VuaXF1ZVB0cjxnY2hhcj4gZXNjYXBlZFN0cmluZyhnX3VyaV9lc2Nh
cGVfc3RyaW5nKGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbiwgIi86IiwgRkFMU0UpKTsKLSAgICBy
ZXR1cm4gZXNjYXBlZFN0cmluZy5nZXQoKTsKLSNlbmRpZgotfQotCi1zdGF0aWMgR1VuaXF1ZVB0
cjxjaGFyPiB1bmVzY2FwZWRGaWxlbmFtZShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgaWYg
KHBhdGguaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSNpZiBPUyhXSU5ET1dT
KQotICAgIHJldHVybiBHVW5pcXVlUHRyPGNoYXI+KGdfc3RyZHVwKHBhdGgudXRmOCgpLmRhdGEo
KSkpOwotI2Vsc2UKLSAgICByZXR1cm4gR1VuaXF1ZVB0cjxjaGFyPihnX3VyaV91bmVzY2FwZV9z
dHJpbmcocGF0aC51dGY4KCkuZGF0YSgpLCBudWxscHRyKSk7Ci0jZW5kaWYKLX0KLQotQ1N0cmlu
ZyBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBwYXRoKQotewotI2lmIE9T
KFdJTkRPV1MpCi0gICAgcmV0dXJuIHBhdGgudXRmOCgpOwotI2Vsc2UKLSAgICBHVW5pcXVlUHRy
PGdjaGFyPiBmaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGgpOwotICAgIHJldHVybiBm
aWxlbmFtZS5nZXQoKTsKLSNlbmRpZgotfQotCi0vLyBDb252ZXJ0cyBhIHN0cmluZyB0byBzb21l
dGhpbmcgc3VpdGFibGUgdG8gYmUgZGlzcGxheWVkIHRvIHRoZSB1c2VyLgotU3RyaW5nIGZpbGVu
YW1lRm9yRGlzcGxheShjb25zdCBTdHJpbmcmIHN0cmluZykKLXsKLSNpZiBPUyhXSU5ET1dTKQot
ICAgIHJldHVybiBzdHJpbmc7Ci0jZWxzZQotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1l
ID0gdW5lc2NhcGVkRmlsZW5hbWUoc3RyaW5nKTsKLSAgICBpZiAoIWZpbGVuYW1lKQotICAgICAg
ICByZXR1cm4gc3RyaW5nOwotCi0gICAgR1VuaXF1ZVB0cjxnY2hhcj4gZGlzcGxheShnX2ZpbGVu
YW1lX3RvX3V0ZjgoZmlsZW5hbWUuZ2V0KCksIC0xLCBudWxscHRyLCBudWxscHRyLCBudWxscHRy
KSk7Ci0gICAgaWYgKCFkaXNwbGF5KQotICAgICAgICByZXR1cm4gc3RyaW5nOwotCi0gICAgcmV0
dXJuIFN0cmluZzo6ZnJvbVVURjgoZGlzcGxheS5nZXQoKSk7Ci0jZW5kaWYKLX0KLQotYm9vbCBm
aWxlRXhpc3RzKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBHVW5pcXVlUHRyPGdjaGFyPiBm
aWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGgpOwotICAgIHJldHVybiBmaWxlbmFtZSA/
IGdfZmlsZV90ZXN0KGZpbGVuYW1lLmdldCgpLCBHX0ZJTEVfVEVTVF9FWElTVFMpIDogZmFsc2U7
Ci19Ci0KLWJvb2wgZGVsZXRlRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgR1VuaXF1
ZVB0cjxnY2hhcj4gZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShwYXRoKTsKLSAgICByZXR1
cm4gZmlsZW5hbWUgPyBnX3JlbW92ZShmaWxlbmFtZS5nZXQoKSkgIT0gLTEgOiBmYWxzZTsKLX0K
LQotYm9vbCBkZWxldGVFbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAg
R1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShwYXRoKTsKLSAg
ICByZXR1cm4gZmlsZW5hbWUgPyBnX3JtZGlyKGZpbGVuYW1lLmdldCgpKSAhPSAtMSA6IGZhbHNl
OwotfQotCi1zdGF0aWMgYm9vbCBnZXRGaWxlU3RhdChjb25zdCBTdHJpbmcmIHBhdGgsIEdTdGF0
QnVmKiBzdGF0QnVmZmVyKQotewotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5l
c2NhcGVkRmlsZW5hbWUocGF0aCk7Ci0gICAgaWYgKCFmaWxlbmFtZSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgcmV0dXJuIGdfc3RhdChmaWxlbmFtZS5nZXQoKSwgc3RhdEJ1ZmZlcikg
IT0gLTE7Ci19Ci0KLXN0YXRpYyBib29sIGdldEZpbGVMU3RhdChjb25zdCBTdHJpbmcmIHBhdGgs
IEdTdGF0QnVmKiBzdGF0QnVmZmVyKQotewotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1l
ID0gdW5lc2NhcGVkRmlsZW5hbWUocGF0aCk7Ci0gICAgaWYgKCFmaWxlbmFtZSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIGdfbHN0YXQoZmlsZW5hbWUuZ2V0KCksIHN0YXRC
dWZmZXIpICE9IC0xOwotfQotCi1ib29sIGdldEZpbGVTaXplKGNvbnN0IFN0cmluZyYgcGF0aCwg
bG9uZyBsb25nJiByZXN1bHRTaXplKQotewotICAgIEdTdGF0QnVmIHN0YXRSZXN1bHQ7Ci0gICAg
aWYgKCFnZXRGaWxlU3RhdChwYXRoLCAmc3RhdFJlc3VsdCkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIHJlc3VsdFNpemUgPSBzdGF0UmVzdWx0LnN0X3NpemU7Ci0gICAgcmV0dXJuIHRy
dWU7Ci19Ci0KLWJvb2wgZ2V0RmlsZVNpemUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgbG9u
ZyBsb25nJiByZXN1bHRTaXplKQotewotICAgIGF1dG8gaW5mbyA9IGdfZmlsZV9pb19zdHJlYW1f
cXVlcnlfaW5mbyhoYW5kbGUsIEdfRklMRV9BVFRSSUJVVEVfU1RBTkRBUkRfU0laRSwgbnVsbHB0
ciwgbnVsbHB0cik7Ci0gICAgaWYgKCFpbmZvKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICByZXN1bHRTaXplID0gZ19maWxlX2luZm9fZ2V0X3NpemUoaW5mbyk7Ci0gICAgcmV0dXJuIHRy
dWU7Ci19Ci0KLU9wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlQ3JlYXRpb25UaW1lKGNvbnN0IFN0
cmluZyYpCi17Ci0gICAgLy8gRklYTUU6IElzIHRoZXJlIGEgd2F5IHRvIHJldHJpZXZlIGZpbGUg
Y3JlYXRpb24gdGltZSB3aXRoIEd0ayBvbiBwbGF0Zm9ybXMgdGhhdCBzdXBwb3J0IGl0PwotICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7Ci19Ci0KLU9wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlTW9k
aWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgR1N0YXRCdWYgc3RhdFJl
c3VsdDsKLSAgICBpZiAoIWdldEZpbGVTdGF0KHBhdGgsICZzdGF0UmVzdWx0KSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIHJldHVybiBXYWxsVGltZTo6ZnJvbVJhd1NlY29u
ZHMoc3RhdFJlc3VsdC5zdF9tdGltZSk7Ci19Ci0KLXN0YXRpYyBGaWxlTWV0YWRhdGE6OlR5cGUg
dG9GaWxlTWV0YXRhVHlwZShHU3RhdEJ1ZiBzdGF0UmVzdWx0KQotewotICAgIGlmIChTX0lTRElS
KHN0YXRSZXN1bHQuc3RfbW9kZSkpCi0gICAgICAgIHJldHVybiBGaWxlTWV0YWRhdGE6OlR5cGU6
OkRpcmVjdG9yeTsKLSAgICBpZiAoU19JU0xOSyhzdGF0UmVzdWx0LnN0X21vZGUpKQotICAgICAg
ICByZXR1cm4gRmlsZU1ldGFkYXRhOjpUeXBlOjpTeW1ib2xpY0xpbms7Ci0gICAgcmV0dXJuIEZp
bGVNZXRhZGF0YTo6VHlwZTo6RmlsZTsKLX0KLQotc3RhdGljIE9wdGlvbmFsPEZpbGVNZXRhZGF0
YT4gZmlsZU1ldGFkYXRhVXNpbmdGdW5jdGlvbihjb25zdCBTdHJpbmcmIHBhdGgsIGJvb2wgKCpz
dGF0RnVuYykoY29uc3QgU3RyaW5nJiwgR1N0YXRCdWYqKSkKLXsKLSAgICBHU3RhdEJ1ZiBzdGF0
UmVzdWx0OwotICAgIGlmICghc3RhdEZ1bmMocGF0aCwgJnN0YXRSZXN1bHQpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgU3RyaW5nIGZpbGVuYW1lID0gcGF0aEdldEZpbGVO
YW1lKHBhdGgpOwotICAgIGJvb2wgaXNIaWRkZW4gPSAhZmlsZW5hbWUuaXNFbXB0eSgpICYmIGZp
bGVuYW1lWzBdID09ICcuJzsKLQotICAgIHJldHVybiBGaWxlTWV0YWRhdGEgewotICAgICAgICBX
YWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoc3RhdFJlc3VsdC5zdF9tdGltZSksCi0gICAgICAgIHN0
YXRSZXN1bHQuc3Rfc2l6ZSwKLSAgICAgICAgaXNIaWRkZW4sCi0gICAgICAgIHRvRmlsZU1ldGF0
YVR5cGUoc3RhdFJlc3VsdCkKLSAgICB9OwotfQotCi1PcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZp
bGVNZXRhZGF0YShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgcmV0dXJuIGZpbGVNZXRhZGF0
YVVzaW5nRnVuY3Rpb24ocGF0aCwgJmdldEZpbGVMU3RhdCk7Ci19Ci0KLU9wdGlvbmFsPEZpbGVN
ZXRhZGF0YT4gZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3MoY29uc3QgU3RyaW5nJiBwYXRo
KQotewotICAgIHJldHVybiBmaWxlTWV0YWRhdGFVc2luZ0Z1bmN0aW9uKHBhdGgsICZnZXRGaWxl
U3RhdCk7Ci19Ci0KLVN0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY29uc3QgU3RyaW5n
JiBwYXRoLCBjb25zdCBTdHJpbmcmIGNvbXBvbmVudCkKLXsKLSAgICBpZiAocGF0aC5lbmRzV2l0
aChHX0RJUl9TRVBBUkFUT1JfUykpCi0gICAgICAgIHJldHVybiBwYXRoICsgY29tcG9uZW50Owot
ICAgIHJldHVybiBwYXRoICsgR19ESVJfU0VQQVJBVE9SX1MgKyBjb21wb25lbnQ7Ci19Ci0KLVN0
cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKFN0cmluZ1ZpZXcgcGF0aCwgY29uc3QgVmVj
dG9yPFN0cmluZ1ZpZXc+JiBjb21wb25lbnRzKQotewotICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRl
cjsKLSAgICBidWlsZGVyLmFwcGVuZChwYXRoKTsKLSAgICBmb3IgKGF1dG8mIGNvbXBvbmVudCA6
IGNvbXBvbmVudHMpIHsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoR19ESVJfU0VQQVJBVE9SX1Mp
OwotICAgICAgICBidWlsZGVyLmFwcGVuZChjb21wb25lbnQpOwotICAgIH0KLSAgICByZXR1cm4g
YnVpbGRlci50b1N0cmluZygpOwotfQotCi1ib29sIG1ha2VBbGxEaXJlY3Rvcmllcyhjb25zdCBT
dHJpbmcmIHBhdGgpCi17Ci0gICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUgPSB1bmVzY2Fw
ZWRGaWxlbmFtZShwYXRoKTsKLSAgICByZXR1cm4gZmlsZW5hbWUgPyBnX21rZGlyX3dpdGhfcGFy
ZW50cyhmaWxlbmFtZS5nZXQoKSwgU19JUldYVSkgIT0gLTEgOiBmYWxzZTsKLX0KLQotU3RyaW5n
IGhvbWVEaXJlY3RvcnlQYXRoKCkKLXsKLSAgICByZXR1cm4gc3RyaW5nRnJvbUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihnX2dldF9ob21lX2RpcigpKTsKLX0KLQotYm9vbCBjcmVhdGVTeW1ib2xp
Y0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGljTGlu
a1BhdGgpCi17Ci0gICAgQ1N0cmluZyB0YXJnZXRQYXRoRlNSZXAgPSBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24odGFyZ2V0UGF0aCk7Ci0gICAgaWYgKCF0YXJnZXRQYXRoRlNSZXAuZGF0YSgpIHx8
IHRhcmdldFBhdGhGU1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgQ1N0cmluZyBzeW1ib2xpY0xpbmtQYXRoRlNSZXAgPSBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oc3ltYm9saWNMaW5rUGF0aCk7Ci0gICAgaWYgKCFzeW1ib2xpY0xpbmtQYXRoRlNS
ZXAuZGF0YSgpIHx8IHN5bWJvbGljTGlua1BhdGhGU1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuICFzeW1saW5rKHRhcmdldFBhdGhGU1Jl
cC5kYXRhKCksIHN5bWJvbGljTGlua1BhdGhGU1JlcC5kYXRhKCkpOwotfQotCi1TdHJpbmcgcGF0
aEdldEZpbGVOYW1lKGNvbnN0IFN0cmluZyYgcGF0aE5hbWUpCi17Ci0gICAgR1VuaXF1ZVB0cjxn
Y2hhcj4gdG1wRmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShwYXRoTmFtZSk7Ci0gICAgaWYg
KCF0bXBGaWxlbmFtZSkKLSAgICAgICAgcmV0dXJuIHBhdGhOYW1lOwotCi0gICAgR1VuaXF1ZVB0
cjxnY2hhcj4gYmFzZU5hbWUoZ19wYXRoX2dldF9iYXNlbmFtZSh0bXBGaWxlbmFtZS5nZXQoKSkp
OwotICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGJhc2VOYW1lLmdldCgpKTsKLX0KLQotYm9v
bCBnZXRWb2x1bWVGcmVlU3BhY2UoY29uc3QgU3RyaW5nJiBwYXRoLCB1aW50NjRfdCYgZnJlZVNw
YWNlKQotewotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5h
bWUocGF0aCk7Ci0gICAgaWYgKCFmaWxlbmFtZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgR1JlZlB0cjxHRmlsZT4gZmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKGZp
bGVuYW1lLmdldCgpKSk7Ci0gICAgR1JlZlB0cjxHRmlsZUluZm8+IGZpbGVJbmZvID0gYWRvcHRH
UmVmKGdfZmlsZV9xdWVyeV9maWxlc3lzdGVtX2luZm8oZmlsZS5nZXQoKSwgR19GSUxFX0FUVFJJ
QlVURV9GSUxFU1lTVEVNX0ZSRUUsIDAsIDApKTsKLSAgICBpZiAoIWZpbGVJbmZvKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICBmcmVlU3BhY2UgPSBnX2ZpbGVfaW5mb19nZXRfYXR0cmli
dXRlX3VpbnQ2NChmaWxlSW5mby5nZXQoKSwgR19GSUxFX0FUVFJJQlVURV9GSUxFU1lTVEVNX0ZS
RUUpOwotICAgIHJldHVybiAhIWZyZWVTcGFjZTsKLX0KLQotU3RyaW5nIGRpcmVjdG9yeU5hbWUo
Y29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0g
dW5lc2NhcGVkRmlsZW5hbWUocGF0aCk7Ci0gICAgaWYgKCFmaWxlbmFtZSkKLSAgICAgICAgcmV0
dXJuIFN0cmluZygpOwotCi0gICAgR1VuaXF1ZVB0cjxjaGFyPiBkaXJuYW1lKGdfcGF0aF9nZXRf
ZGlybmFtZShmaWxlbmFtZS5nZXQoKSkpOwotICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGRp
cm5hbWUuZ2V0KCkpOwotfQotCi1WZWN0b3I8U3RyaW5nPiBsaXN0RGlyZWN0b3J5KGNvbnN0IFN0
cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBmaWx0ZXIpCi17Ci0gICAgVmVjdG9yPFN0cmluZz4g
ZW50cmllczsKLQotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2NhcGVkRmls
ZW5hbWUocGF0aCk7Ci0gICAgaWYgKCFmaWxlbmFtZSkKLSAgICAgICAgcmV0dXJuIGVudHJpZXM7
Ci0KLSAgICBHVW5pcXVlUHRyPEdEaXI+IGRpcihnX2Rpcl9vcGVuKGZpbGVuYW1lLmdldCgpLCAw
LCBudWxscHRyKSk7Ci0gICAgaWYgKCFkaXIpCi0gICAgICAgIHJldHVybiBlbnRyaWVzOwotCi0g
ICAgR1VuaXF1ZVB0cjxHUGF0dGVyblNwZWM+IHBzcGVjKGdfcGF0dGVybl9zcGVjX25ldygoZmls
dGVyLnV0ZjgoKSkuZGF0YSgpKSk7Ci0gICAgd2hpbGUgKGNvbnN0IGNoYXIqIG5hbWUgPSBnX2Rp
cl9yZWFkX25hbWUoZGlyLmdldCgpKSkgewotICAgICAgICBpZiAoIWdfcGF0dGVybl9tYXRjaF9z
dHJpbmcocHNwZWMuZ2V0KCksIG5hbWUpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAg
ICAgR1VuaXF1ZVB0cjxnY2hhcj4gZW50cnkoZ19idWlsZF9maWxlbmFtZShmaWxlbmFtZS5nZXQo
KSwgbmFtZSwgbnVsbHB0cikpOwotICAgICAgICBlbnRyaWVzLmFwcGVuZChzdHJpbmdGcm9tRmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKGVudHJ5LmdldCgpKSk7Ci0gICAgfQotCi0gICAgcmV0dXJu
IGVudHJpZXM7Ci19Ci0KLVN0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHBy
ZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpCi17Ci0gICAgR1VuaXF1ZVB0cjxnY2hh
cj4gZmlsZW5hbWUoZ19zdHJkdXBfcHJpbnRmKCIlcyVzIiwgcHJlZml4LnV0ZjgoKS5kYXRhKCks
IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKS51dGY4KCkuZGF0YSgpKSk7Ci0gICAgR1VuaXF1
ZVB0cjxnY2hhcj4gdGVtcFBhdGgoZ19idWlsZF9maWxlbmFtZShnX2dldF90bXBfZGlyKCksIGZp
bGVuYW1lLmdldCgpLCBOVUxMKSk7Ci0gICAgR1JlZlB0cjxHRmlsZT4gZmlsZSA9IGFkb3B0R1Jl
ZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKHRlbXBQYXRoLmdldCgpKSk7Ci0KLSAgICBoYW5kbGUgPSBn
X2ZpbGVfY3JlYXRlX3JlYWR3cml0ZShmaWxlLmdldCgpLCBHX0ZJTEVfQ1JFQVRFX05PTkUsIDAs
IDApOwotICAgIGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUpKQotICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgodGVtcFBhdGguZ2V0KCkpOwotfQot
Ci1QbGF0Zm9ybUZpbGVIYW5kbGUgb3BlbkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Bl
bk1vZGUgbW9kZSkKLXsKLSAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZSA9IHVuZXNjYXBl
ZEZpbGVuYW1lKHBhdGgpOwotICAgIGlmICghZmlsZW5hbWUpCi0gICAgICAgIHJldHVybiBpbnZh
bGlkUGxhdGZvcm1GaWxlSGFuZGxlOwotCi0gICAgR1JlZlB0cjxHRmlsZT4gZmlsZSA9IGFkb3B0
R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKGZpbGVuYW1lLmdldCgpKSk7Ci0gICAgR0ZpbGVJT1N0
cmVhbSogaW9TdHJlYW0gPSAwOwotICAgIGlmIChtb2RlID09IEZpbGVPcGVuTW9kZTo6UmVhZCkK
LSAgICAgICAgaW9TdHJlYW0gPSBnX2ZpbGVfb3Blbl9yZWFkd3JpdGUoZmlsZS5nZXQoKSwgMCwg
MCk7Ci0gICAgZWxzZSBpZiAobW9kZSA9PSBGaWxlT3Blbk1vZGU6OldyaXRlKSB7Ci0gICAgICAg
IGlmIChnX2ZpbGVfdGVzdChmaWxlbmFtZS5nZXQoKSwgc3RhdGljX2Nhc3Q8R0ZpbGVUZXN0PihH
X0ZJTEVfVEVTVF9FWElTVFMgfCBHX0ZJTEVfVEVTVF9JU19SRUdVTEFSKSkpCi0gICAgICAgICAg
ICBpb1N0cmVhbSA9IGdfZmlsZV9vcGVuX3JlYWR3cml0ZShmaWxlLmdldCgpLCAwLCAwKTsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgaW9TdHJlYW0gPSBnX2ZpbGVfY3JlYXRlX3JlYWR3cml0
ZShmaWxlLmdldCgpLCBHX0ZJTEVfQ1JFQVRFX05PTkUsIDAsIDApOwotICAgIH0KLQotICAgIHJl
dHVybiBpb1N0cmVhbTsKLX0KLQotdm9pZCBjbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlJiBo
YW5kbGUpCi17Ci0gICAgaWYgKCFpc0hhbmRsZVZhbGlkKGhhbmRsZSkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGdfaW9fc3RyZWFtX2Nsb3NlKEdfSU9fU1RSRUFNKGhhbmRsZSksIDAsIDApOwot
ICAgIGdfb2JqZWN0X3VucmVmKGhhbmRsZSk7Ci0gICAgaGFuZGxlID0gaW52YWxpZFBsYXRmb3Jt
RmlsZUhhbmRsZTsKLX0KLQotbG9uZyBsb25nIHNlZWtGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBo
YW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQsIEZpbGVTZWVrT3JpZ2luIG9yaWdpbikKLXsKLSAgICBH
U2Vla1R5cGUgc2Vla1R5cGUgPSBHX1NFRUtfU0VUOwotICAgIHN3aXRjaCAob3JpZ2luKSB7Ci0g
ICAgY2FzZSBGaWxlU2Vla09yaWdpbjo6QmVnaW5uaW5nOgotICAgICAgICBzZWVrVHlwZSA9IEdf
U0VFS19TRVQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRmlsZVNlZWtPcmlnaW46OkN1cnJl
bnQ6Ci0gICAgICAgIHNlZWtUeXBlID0gR19TRUVLX0NVUjsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBGaWxlU2Vla09yaWdpbjo6RW5kOgotICAgICAgICBzZWVrVHlwZSA9IEdfU0VFS19FTkQ7
Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgIH0KLQotICAgIGlmICghZ19zZWVrYWJsZV9zZWVrKEdfU0VFS0FCTEUoZ19pb19z
dHJlYW1fZ2V0X2lucHV0X3N0cmVhbShHX0lPX1NUUkVBTShoYW5kbGUpKSksCi0gICAgICAgIG9m
ZnNldCwgc2Vla1R5cGUsIDAsIDApKQotICAgIHsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0K
LSAgICByZXR1cm4gZ19zZWVrYWJsZV90ZWxsKEdfU0VFS0FCTEUoZ19pb19zdHJlYW1fZ2V0X2lu
cHV0X3N0cmVhbShHX0lPX1NUUkVBTShoYW5kbGUpKSkpOwotfQotCi1pbnQgd3JpdGVUb0ZpbGUo
UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkK
LXsKLSAgICBnc2l6ZSBieXRlc1dyaXR0ZW47Ci0gICAgZ19vdXRwdXRfc3RyZWFtX3dyaXRlX2Fs
bChnX2lvX3N0cmVhbV9nZXRfb3V0cHV0X3N0cmVhbShHX0lPX1NUUkVBTShoYW5kbGUpKSwKLSAg
ICAgICAgZGF0YSwgbGVuZ3RoLCAmYnl0ZXNXcml0dGVuLCAwLCAwKTsKLSAgICByZXR1cm4gYnl0
ZXNXcml0dGVuOwotfQotCi1pbnQgcmVhZEZyb21GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5k
bGUsIGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCi17Ci0gICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+
IGVycm9yOwotICAgIGRvIHsKLSAgICAgICAgZ3NzaXplIGJ5dGVzUmVhZCA9IGdfaW5wdXRfc3Ry
ZWFtX3JlYWQoZ19pb19zdHJlYW1fZ2V0X2lucHV0X3N0cmVhbShHX0lPX1NUUkVBTShoYW5kbGUp
KSwKLSAgICAgICAgICAgIGRhdGEsIGxlbmd0aCwgMCwgJmVycm9yLm91dFB0cigpKTsKLSAgICAg
ICAgaWYgKGJ5dGVzUmVhZCA+PSAwKQotICAgICAgICAgICAgcmV0dXJuIGJ5dGVzUmVhZDsKLSAg
ICB9IHdoaWxlIChlcnJvciAmJiBlcnJvci0+Y29kZSA9PSBHX0ZJTEVfRVJST1JfSU5UUik7Ci0g
ICAgcmV0dXJuIC0xOwotfQotCi1ib29sIG1vdmVGaWxlKGNvbnN0IFN0cmluZyYgb2xkUGF0aCwg
Y29uc3QgU3RyaW5nJiBuZXdQYXRoKQotewotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IG9sZEZpbGVu
YW1lID0gdW5lc2NhcGVkRmlsZW5hbWUob2xkUGF0aCk7Ci0gICAgaWYgKCFvbGRGaWxlbmFtZSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgR1VuaXF1ZVB0cjxnY2hhcj4gbmV3RmlsZW5h
bWUgPSB1bmVzY2FwZWRGaWxlbmFtZShuZXdQYXRoKTsKLSAgICBpZiAoIW5ld0ZpbGVuYW1lKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBHUmVmUHRyPEdGaWxlPiBvbGRGaWxlID0gYWRv
cHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgob2xkRmlsZW5hbWUuZ2V0KCkpKTsKLSAgICBHUmVm
UHRyPEdGaWxlPiBuZXdGaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgobmV3Rmls
ZW5hbWUuZ2V0KCkpKTsKLQotICAgIHJldHVybiBnX2ZpbGVfbW92ZShvbGRGaWxlLmdldCgpLCBu
ZXdGaWxlLmdldCgpLCBHX0ZJTEVfQ09QWV9PVkVSV1JJVEUsIG51bGxwdHIsIG51bGxwdHIsIG51
bGxwdHIsIG51bGxwdHIpOwotfQotCi1ib29sIGhhcmRMaW5rT3JDb3B5RmlsZShjb25zdCBTdHJp
bmcmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbikKLXsKLSNpZiBPUyhXSU5ET1dT
KQotICAgIHJldHVybiAhITo6Q29weUZpbGUoc291cmNlLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1p
bmF0aW9uKCkuZGF0YSgpLCBkZXN0aW5hdGlvbi5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlv
bigpLmRhdGEoKSwgVFJVRSk7Ci0jZWxzZQotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHNvdXJjZUZp
bGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUoc291cmNlKTsKLSAgICBpZiAoIXNvdXJjZUZpbGVu
YW1lKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBHVW5pcXVlUHRyPGdjaGFyPiBkZXN0
aW5hdGlvbkZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUoZGVzdGluYXRpb24pOwotICAgIGlm
ICghZGVzdGluYXRpb25GaWxlbmFtZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYg
KCFsaW5rKHNvdXJjZUZpbGVuYW1lLmdldCgpLCBkZXN0aW5hdGlvbkZpbGVuYW1lLmdldCgpKSkK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAvLyBIYXJkIGxpbmsgZmFpbGVkLiBQZXJmb3Jt
IGEgY29weSBpbnN0ZWFkLgotICAgIEdSZWZQdHI8R0ZpbGU+IHNvdXJjZUZpbGUgPSBhZG9wdEdS
ZWYoZ19maWxlX25ld19mb3JfcGF0aChzb3VyY2VGaWxlbmFtZS5nZXQoKSkpOwotICAgIEdSZWZQ
dHI8R0ZpbGU+IGRlc3RpbmF0aW9uRmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRo
KGRlc3RpbmF0aW9uRmlsZW5hbWUuZ2V0KCkpKTsKLSAgICByZXR1cm4gZ19maWxlX2NvcHkoc291
cmNlRmlsZS5nZXQoKSwgZGVzdGluYXRpb25GaWxlLmdldCgpLCBHX0ZJTEVfQ09QWV9OT05FLCBu
dWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKTsKLSNlbmRpZgotfQotCi1PcHRpb25h
bDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQotewotICAg
IEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUoZnNGaWxlLmRh
dGEoKSk7Ci0gICAgaWYgKCFmaWxlbmFtZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
LQotICAgIEdSZWZQdHI8R0ZpbGU+IGZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0
aChmaWxlbmFtZS5nZXQoKSkpOwotICAgIEdSZWZQdHI8R0ZpbGVJbmZvPiBmaWxlSW5mbyA9IGFk
b3B0R1JlZihnX2ZpbGVfcXVlcnlfZmlsZXN5c3RlbV9pbmZvKGZpbGUuZ2V0KCksIEdfRklMRV9B
VFRSSUJVVEVfVU5JWF9ERVZJQ0UsIG51bGxwdHIsIG51bGxwdHIpKTsKLSAgICBpZiAoIWZpbGVJ
bmZvKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgcmV0dXJuIGdfZmlsZV9p
bmZvX2dldF9hdHRyaWJ1dGVfdWludDMyKGZpbGVJbmZvLmdldCgpLCBHX0ZJTEVfQVRUUklCVVRF
X1VOSVhfREVWSUNFKTsKLX0KLQotI2lmIFVTRShGSUxFX0xPQ0spCi1ib29sIGxvY2tGaWxlKFBs
YXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIE9wdGlvblNldDxGaWxlTG9ja01vZGU+IGxvY2tNb2Rl
KQotewotICAgIENPTVBJTEVfQVNTRVJUKExPQ0tfU0ggPT0gV1RGOjplbnVtVG9VbmRlcmx5aW5n
VHlwZShGaWxlTG9ja01vZGU6OlNoYXJlZCksIExvY2tTaGFyZWRFbmNvZGluZ0lzQXNFeHBlY3Rl
ZCk7Ci0gICAgQ09NUElMRV9BU1NFUlQoTE9DS19FWCA9PSBXVEY6OmVudW1Ub1VuZGVybHlpbmdU
eXBlKEZpbGVMb2NrTW9kZTo6RXhjbHVzaXZlKSwgTG9ja0V4Y2x1c2l2ZUVuY29kaW5nSXNBc0V4
cGVjdGVkKTsKLSAgICBDT01QSUxFX0FTU0VSVChMT0NLX05CID09IFdURjo6ZW51bVRvVW5kZXJs
eWluZ1R5cGUoRmlsZUxvY2tNb2RlOjpOb25ibG9ja2luZyksIExvY2tOb25ibG9ja2luZ0VuY29k
aW5nSXNBc0V4cGVjdGVkKTsKLSAgICBhdXRvKiBpbnB1dFN0cmVhbSA9IGdfaW9fc3RyZWFtX2dl
dF9pbnB1dF9zdHJlYW0oR19JT19TVFJFQU0oaGFuZGxlKSk7Ci0gICAgaW50IHJlc3VsdCA9IGZs
b2NrKGdfZmlsZV9kZXNjcmlwdG9yX2Jhc2VkX2dldF9mZChHX0ZJTEVfREVTQ1JJUFRPUl9CQVNF
RChpbnB1dFN0cmVhbSkpLCBsb2NrTW9kZS50b1JhdygpKTsKLSAgICByZXR1cm4gcmVzdWx0ICE9
IC0xOwotfQotCi1ib29sIHVubG9ja0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSkKLXsK
LSAgICBhdXRvKiBpbnB1dFN0cmVhbSA9IGdfaW9fc3RyZWFtX2dldF9pbnB1dF9zdHJlYW0oR19J
T19TVFJFQU0oaGFuZGxlKSk7Ci0gICAgaW50IHJlc3VsdCA9IGZsb2NrKGdfZmlsZV9kZXNjcmlw
dG9yX2Jhc2VkX2dldF9mZChHX0ZJTEVfREVTQ1JJUFRPUl9CQVNFRChpbnB1dFN0cmVhbSkpLCBM
T0NLX1VOKTsKLSAgICByZXR1cm4gcmVzdWx0ICE9IC0xOwotfQotI2VuZGlmIC8vIFVTRShGSUxF
X0xPQ0spCi0KLX0gLy8gbmFtZXNwYWNlIEZpbGVTeXN0ZW0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVy
R2xpYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIu
Y3BwCmluZGV4IGI0ODk2YzA4NTQ2MGU3YzBiZTU2NDA4NGVjODhlZjIyYWY2MGI4NDQuLmUwYTg1
OWUzZWVhM2Q5ZjczZDg3OGEzMDA0ZWJkODE3ZTFiOTkyOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcApAQCAtMTksNyArMTksNyBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogCi0jaW5j
bHVkZSAiRmlsZVN5c3RlbS5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVk
ZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZDb250ZW50
S2V5U2Vzc2lvbi5tbQppbmRleCBlOGRkM2I1YWVjODI5M2NkNWVkOTZlOThmMTAzNWVlNTNlMjhj
N2I0Li4yNGY5NWU4NDQxMzY3ZTIyMTljYTIyNjQ0NWU4NjIyOGY1Nzk0ODJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1T
ZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lv
bi5tbQpAQCAtMjksNyArMjksNiBAQAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElB
KSAmJiBFTkFCTEUoTUVESUFfU09VUkNFKQogCiAjaW1wb3J0ICJDRE1Qcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDLmgiCi0jaW1wb3J0ICJGaWxlU3lzdGVtLmgiCiAjaW1wb3J0ICJMZWdhY3lDRE0u
aCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIk1lZGlhUGxheWVyLmgiCkBAIC0zOSw2
ICszOCw3IEBACiAjaW1wb3J0IDxDb3JlTWVkaWEvQ01CYXNlLmg+CiAjaW1wb3J0IDxKYXZhU2Ny
aXB0Q29yZS9UeXBlZEFycmF5SW5saW5lcy5oPgogI2ltcG9ydCA8b2JqYy9vYmpjLXJ1bnRpbWUu
aD4KKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcu
aD4KIAogU09GVF9MSU5LX0ZSQU1FV09SS19PUFRJT05BTChBVkZvdW5kYXRpb24pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9D
RE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbi5tbQppbmRl
eCA5OTI5NDMxNWQ4NjI0MWIxNjhmMjhhYTcyZWRkZTBkOTdjZjRhNzhjLi5jMzU3M2U1YzYwODFj
OTliMTQwNGUwZTQxYzUwZTA0OWUyOTFhMjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZTdHJlYW1TZXNz
aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0NETVNlc3Npb25BVlN0cmVhbVNlc3Npb24ubW0KQEAgLTI5LDcgKzI5LDYgQEAKICNp
ZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKE1FRElBX1NPVVJDRSkK
IAogI2ltcG9ydCAiQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIgotI2ltcG9ydCAiRmls
ZVN5c3RlbS5oIgogI2ltcG9ydCAiTGVnYWN5Q0RNLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAj
aW1wb3J0ICJNZWRpYVBsYXllci5oIgpAQCAtNDAsNiArMzksNyBAQAogI2ltcG9ydCA8SmF2YVNj
cmlwdENvcmUvVHlwZWRBcnJheUlubGluZXMuaD4KICNpbXBvcnQgPG9iamMvb2JqYy1ydW50aW1l
Lmg+CiAjaW1wb3J0IDxwYWwvc3BpL21hYy9BVkZvdW5kYXRpb25TUEkuaD4KKyNpbXBvcnQgPHd0
Zi9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KICNpbXBvcnQgPHd0
Zi9VVUlELmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9u
TWVkaWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IDJjYjJkNmZhMGNkOGVmYTQyMzE4OTFhMDk4MTk4
M2M5YjhjMDc3ZTQuLmVjNTgzNzhhOGJlYjZhNTc1M2QwMmRhNDlmZWRhYjY2ZWViNTk3YzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0NETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbk1lZGlhU291cmNl
QVZGT2JqQy5tbQpAQCAtMjksOSArMjksOSBAQAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVE
X01FRElBKSAmJiBFTkFCTEUoTUVESUFfU09VUkNFKQogCiAjaW1wb3J0ICJDRE1Qcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLmgiCi0jaW1wb3J0ICJGaWxlU3lzdGVtLmgiCiAjaW1wb3J0ICJXZWJD
b3JlTlNFcnJvckV4dHJhcy5oIgogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWRXJyb3IuaD4KKyNp
bXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IDVlMzZkZDAwNjkzMDc1MDExMmI3MTNmZGM0ZTVhZWE0
ZDEwYTljMDkuLmQ2ZDVlODJiMjM3NzZmZDYyNzdlMjliNjlkZWI2NjI5ZjhjOTE4YzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMubW0KQEAgLTMxLDcgKzMxLDYgQEAKICNpbXBvcnQgIkFWQXNz
ZXRUcmFja1V0aWxpdGllcy5oIgogI2ltcG9ydCAiQVZGb3VuZGF0aW9uTUlNRVR5cGVDYWNoZS5o
IgogI2ltcG9ydCAiQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbi5oIgotI2ltcG9ydCAiRmlsZVN5
c3RlbS5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKICNpbXBvcnQgIkxvZ2dpbmcu
aCIKICNpbXBvcnQgIk1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMuaCIKQEAgLTQ5LDYgKzQ4LDcg
QEAKICNpbXBvcnQgPHBhbC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmg+CiAj
aW1wb3J0IDxwYWwvc3BpL21hYy9BVkZvdW5kYXRpb25TUEkuaD4KICNpbXBvcnQgPHd0Zi9EZXF1
ZS5oPgorI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFk
Lmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCAwZjA1ZWI5MTk5ZGJmM2U0OWUx
YTEyZTA3NTY2ZWVjNDg5MWRlMTc3Li40MTQwYzExYjBlYTQ3OThlNjYwZDY0OTU4MGZlY2FhZDNj
MjZkNGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
LmNwcApAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVB
TUVSKQogCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkdTdHJlYW1lckNvbW1v
bi5oIgogI2luY2x1ZGUgIkhUVFBIZWFkZXJOYW1lcy5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVn
aXN0cnkuaCIKQEAgLTQyLDYgKzQxLDcgQEAKICNpbmNsdWRlIDxnc3QvZ3N0Lmg+CiAjaW5jbHVk
ZSA8Z3N0L3BidXRpbHMvbWlzc2luZy1wbHVnaW5zLmg+CiAjaW5jbHVkZSA8bGltaXRzPgorI2lu
Y2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL0hleE51bWJlci5oPgogI2lu
Y2x1ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9RdWlja0xvb2subW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29rLm1tCmluZGV4IGEwMjc3ZjUwOWIy
ZjMwNTUxZWMyMzRmNmZmMThhNWUzNDRlZWQ2NDAuLjA3Mzc0MDY3MDU3N2UxZWZkZDAzM2UxYmFj
ZDhjMTQ4YmNkY2FkZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9R
dWlja0xvb2subW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5t
bQpAQCAtMjgsMTEgKzI4LDExIEBACiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKIAotI2ltcG9ydCAi
RmlsZVN5c3RlbS5oIgogI2ltcG9ydCAiUHJldmlld0NvbnZlcnRlci5oIgogI2ltcG9ydCAiUmVz
b3VyY2VSZXF1ZXN0LmgiCiAjaW1wb3J0ICJTY2hlbWVSZWdpc3RyeS5oIgogI2ltcG9ydCA8cGFs
L3NwaS9jb2NvYS9OU0ZpbGVNYW5hZ2VyU1BJLmg+CisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5o
PgogI2ltcG9ydCA8d3RmL0xvY2suaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVy
UGFzdGVib2FyZC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlk
ZXJQYXN0ZWJvYXJkLm1tCmluZGV4IGJmODIxODM5OTE1ZTgwZDU4OTlhOTQ4OTk5ZjJmMDIwNmQ4
Y2ZmM2EuLjM1NDVkN2VmY2FjODY3NjQ4ZjQ5YTQ3NGU4YTAyMGI1MWM4OGQ0ZGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJk
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0
ZWJvYXJkLm1tCkBAIC0zNCwxMSArMzQsMTEgQEAKICNpbXBvcnQgPFVJS2l0L05TSXRlbVByb3Zp
ZGVyK1VJS2l0QWRkaXRpb25zLmg+CiAjaW1wb3J0IDxVSUtpdC9VSUNvbG9yLmg+CiAjaW1wb3J0
IDxVSUtpdC9VSUltYWdlLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbXBv
cnQgPFdlYkNvcmUvUGFzdGVib2FyZC5oPgogI2ltcG9ydCA8cGFsL2lvcy9VSUtpdFNvZnRMaW5r
Lmg+CiAjaW1wb3J0IDxwYWwvc3BpL2lvcy9VSUtpdFNQSS5oPgogI2ltcG9ydCA8d3RmL0Jsb2Nr
UHRyLmg+CisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8d3RmL09TT2JqZWN0
UHRyLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKQEAgLTY5NCw3ICs2OTQsNyBAQCBz
dGF0aWMgTlNVUkwgKmxpbmtUZW1wb3JhcnlJdGVtUHJvdmlkZXJGaWxlc1RvRHJvcFN0YWdpbmdE
aXJlY3RvcnkoTlNVUkwgKnVybCwgTgogICAgIGlmICghdXJsKQogICAgICAgICByZXR1cm4gbmls
OwogCi0gICAgTlNTdHJpbmcgKnRlbXBvcmFyeURhdGFJbnRlcmFjdGlvbkRpcmVjdG9yeSA9IFdl
YkNvcmU6OkZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShkYXRhSW50ZXJhY3Rp
b25EaXJlY3RvcnlQcmVmaXgpOworICAgIE5TU3RyaW5nICp0ZW1wb3JhcnlEYXRhSW50ZXJhY3Rp
b25EaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoZGF0YUlu
dGVyYWN0aW9uRGlyZWN0b3J5UHJlZml4KTsKICAgICBpZiAoIXRlbXBvcmFyeURhdGFJbnRlcmFj
dGlvbkRpcmVjdG9yeSkKICAgICAgICAgcmV0dXJuIG5pbDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL0ZpbGVTeXN0ZW1NYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvRmlsZVN5c3RlbU1hYy5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggOGVkNzUxYTdlYzBlNWQwYmFmNzc0Zjk4NjEwYWNiMDQ1Y2QyYjAwNC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvRmlsZVN5c3RlbU1hYy5tbQorKysgL2Rldi9udWxsCkBAIC0xLDg4ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiRmlsZVN5c3RlbS5o
IgotCi0jaWYgUExBVEZPUk0oTUFDKQotCi0jaW1wb3J0IDxwYWwvc3BpL21hYy9NZXRhZGF0YVNQ
SS5oPgotI2ltcG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+Ci0jaW1wb3J0IDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1ib29sIEZpbGVTeXN0ZW06
OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBhdXRvIGZp
bGVNYW5hZ2VyID0gYWRvcHROUyhbW05TRmlsZU1hbmFnZXIgYWxsb2NdIGluaXRdKTsKLQotICAg
IGlmIChOU0FycmF5ICpkaXJlY3RvcnlDb250ZW50cyA9IFtmaWxlTWFuYWdlciBjb250ZW50c09m
RGlyZWN0b3J5QXRQYXRoOnBhdGggZXJyb3I6bnVsbHB0cl0pIHsKLSAgICAgICAgLy8gRXhwbGlj
aXRseSBsb29rIGZvciBhbmQgZGVsZXRlIC5EU19TdG9yZSBmaWxlcy4KLSAgICAgICAgaWYgKGRp
cmVjdG9yeUNvbnRlbnRzLmNvdW50ID09IDEgJiYgW2RpcmVjdG9yeUNvbnRlbnRzLmZpcnN0T2Jq
ZWN0IGlzRXF1YWxUb1N0cmluZzpAIi5EU19TdG9yZSJdKQotICAgICAgICAgICAgW2ZpbGVNYW5h
Z2VyIHJlbW92ZUl0ZW1BdFBhdGg6W3BhdGggc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50
OmRpcmVjdG9yeUNvbnRlbnRzLmZpcnN0T2JqZWN0XSBlcnJvcjpudWxscHRyXTsKLSAgICB9Ci0K
LSAgICAvLyBybWRpciguLi4pIHJldHVybnMgMCBvbiBzdWNjZXNzZnVsIGRlbGV0aW9uIG9mIHRo
ZSBwYXRoIGFuZCBub24temVybyBpbiBhbnkgb3RoZXIgY2FzZSAoaW5jbHVkaW5nIGludmFsaWQg
cGVybWlzc2lvbnMgb3Igbm9uLWV4aXN0ZW50IGZpbGUpCi0gICAgcmV0dXJuICFybWRpcihGaWxl
U3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpKTsKLX0KLQotdm9p
ZCBGaWxlU3lzdGVtOjpzZXRNZXRhZGF0YVVSTChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0
cmluZyYgbWV0YWRhdGFVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpCi17Ci0gICAg
U3RyaW5nIHVybFN0cmluZzsKLSAgICBpZiAoTlNVUkwgKnVybCA9IFVSTFdpdGhVc2VyVHlwZWRT
dHJpbmcobWV0YWRhdGFVUkxTdHJpbmcsIG5pbCkpCi0gICAgICAgIHVybFN0cmluZyA9IFdURjo6
dXNlclZpc2libGVTdHJpbmcoV1RGOjpVUkxCeVJlbW92aW5nVXNlckluZm8odXJsKSk7Ci0gICAg
ZWxzZQotICAgICAgICB1cmxTdHJpbmcgPSBtZXRhZGF0YVVSTFN0cmluZzsKLQotICAgIC8vIENh
bGwgTWV0YWRhdGEgQVBJIG9uIGEgYmFja2dyb3VuZCBxdWV1ZSBiZWNhdXNlIGl0IGNhbiB0YWtl
IHNvbWUgdGltZS4KLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVl
KERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApLCBbcGF0aCA9IHBhdGguaXNvbGF0
ZWRDb3B5KCksIHVybFN0cmluZyA9IHVybFN0cmluZy5pc29sYXRlZENvcHkoKSwgcmVmZXJyZXIg
PSByZWZlcnJlci5pc29sYXRlZENvcHkoKV0gewotICAgICAgICBhdXRvIGl0ZW0gPSBhZG9wdENG
KE1ESXRlbUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBwYXRoLmNyZWF0ZUNGU3RyaW5nKCku
Z2V0KCkpKTsKLSAgICAgICAgaWYgKCFpdGVtKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAg
ICAgIGF1dG8gd2hlcmVGcm9tQXR0cmlidXRlID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFs
bG9jXSBpbml0V2l0aE9iamVjdHM6dXJsU3RyaW5nLCBuaWxdKTsKLSAgICAgICAgaWYgKCFyZWZl
cnJlci5pc051bGwoKSkKLSAgICAgICAgICAgIFt3aGVyZUZyb21BdHRyaWJ1dGUgYWRkT2JqZWN0
OnJlZmVycmVyXTsKLQotICAgICAgICBNREl0ZW1TZXRBdHRyaWJ1dGUoaXRlbS5nZXQoKSwga01E
SXRlbVdoZXJlRnJvbXMsIChfX2JyaWRnZSBDRkFycmF5UmVmKXdoZXJlRnJvbUF0dHJpYnV0ZS5n
ZXQoKSk7Ci0gICAgICAgIE1ESXRlbVNldEF0dHJpYnV0ZShpdGVtLmdldCgpLCBrTURJdGVtRG93
bmxvYWRlZERhdGUsIChfX2JyaWRnZSBDRkFycmF5UmVmKUBbIFtOU0RhdGUgZGF0ZV0gXSk7Ci0g
ICAgfSk7Ci19Ci0KLWJvb2wgRmlsZVN5c3RlbTo6Y2FuRXhjbHVkZUZyb21CYWNrdXAoKQotewot
ICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIEZpbGVTeXN0ZW06OmV4Y2x1ZGVGcm9tQmFja3Vw
KGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICAvLyBJdCBpcyBjcml0aWNhbCB0byBwYXNzIEZB
TFNFIGZvciBleGNsdWRlQnlQYXRoIGJlY2F1c2UgZXhjbHVkaW5nIGJ5IHBhdGggcmVxdWlyZXMg
cm9vdCBwcml2aWxlZ2VzLgotICAgIENTQmFja3VwU2V0SXRlbUV4Y2x1ZGVkKEZpbGVTeXN0ZW06
OnBhdGhBc1VSTChwYXRoKS5nZXQoKSwgVFJVRSwgRkFMU0UpOwotICAgIHJldHVybiB0cnVlOwot
fQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBQTEFURk9STShNQUMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0K
aW5kZXggZDdlM2YzOWE2N2IzNzNiODM4NzljODQwOWM1OGIwODk4ZDM0NzllYy4uZDc5ZTJmNjBj
NjA5NDAzYWJkZmMwMmFlYmY3MGEyNmJjY2RmMmYzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
ckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29j
b2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQpAQCAtMjksMTMgKzI5LDEzIEBA
CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEFWRk9VTkRBVElPTikKIAogI2luY2x1
ZGUgIkF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAj
aW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgi
CiAjaW5jbHVkZSAiV2ViQXVkaW9CdWZmZXJMaXN0LmgiCiAjaW5jbHVkZSA8QVZGb3VuZGF0aW9u
L0FWQXNzZXRXcml0ZXIuaD4KICNpbmNsdWRlIDxBVkZvdW5kYXRpb24vQVZBc3NldFdyaXRlcklu
cHV0Lmg+CiAjaW5jbHVkZSA8cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+CisjaW5jbHVkZSA8
d3RmL0ZpbGVTeXN0ZW0uaD4KIAogdHlwZWRlZiBBVkFzc2V0V3JpdGVyIEFWQXNzZXRXcml0ZXJU
eXBlOwogdHlwZWRlZiBBVkFzc2V0V3JpdGVySW5wdXQgQVZBc3NldFdyaXRlcklucHV0VHlwZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxl
UmVmZXJlbmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFG
aWxlUmVmZXJlbmNlLmNwcAppbmRleCBiNjNmMDYxMmFiZmNiODY2ZGEwY2VkMGEyMzVkYzE1NTkz
ZmYwNWVkLi41YWJmZDc1Y2I0OTQ1NmU0MmQzOWQ0NGQzYmMyMjU5YWFmZmE1MjI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5j
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVS
ZWZlcmVuY2UuY3BwCkBAIC0yNyw4ICsyNyw4IEBACiAjaW5jbHVkZSAiQmxvYkRhdGFGaWxlUmVm
ZXJlbmNlLmgiCiAKICNpbmNsdWRlICJGaWxlLmgiCi0jaW5jbHVkZSAiRmlsZU1ldGFkYXRhLmgi
Ci0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlTWV0YWRhdGEuaD4K
KyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1w
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwu
Y3BwCmluZGV4IDgwYjQxZTk3NWU0ZDYxNDNhZjRjOTk2MTE3NTQ3YmI4OTJlZGEzMTguLjFjNzA2
YWEzNDZjYWRkZWEzOWU1MDBkODAzMDRjZDQ5NGJkODI2ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcApAQCAtMzUsMTMg
KzM1LDEzIEBACiAjaW5jbHVkZSAiQmxvYkRhdGEuaCIKICNpbmNsdWRlICJCbG9iUGFydC5oIgog
I2luY2x1ZGUgIkJsb2JSZXNvdXJjZUhhbmRsZS5oIgotI2luY2x1ZGUgIkZpbGVNZXRhZGF0YS5o
IgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCiAj
aW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIK
ICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25I
YW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVNZXRhZGF0YS5oPgorI2luY2x1ZGUgPHd0Zi9G
aWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcAppbmRl
eCBjOTRlMzk0OTRiOGUzMjZkYjRhMTJhMjcyMDFhNDYyMzhkZTE4YzRiLi5jYzY3Y2U2ODhmM2Jj
YTIyMjY5MGI0M2YxMDU4NzhiYTllM2MyOGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCkBAIC0zNSwxOSArMzUs
MTkgQEAKICNpbmNsdWRlICJBc3luY0ZpbGVTdHJlYW0uaCIKICNpbmNsdWRlICJCbG9iRGF0YS5o
IgogI2luY2x1ZGUgIkZpbGVTdHJlYW0uaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5j
bHVkZSAiSFRUUEhlYWRlck5hbWVzLmgiCiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKICNpbmNs
dWRlICJQYXJzZWRDb250ZW50UmFuZ2UuaCIKLSNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVk
ZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlQ2xpZW50LmgiCiAj
aW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5o
IgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFu
ZGxlci5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL01haW5U
aHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvRm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9G
b3JtRGF0YS5jcHAKaW5kZXggNTRlNGFjMDQ5NjJhMjIxOTA3ZTNiN2Q4MGE0ZmJhY2JlMjU0YjM5
OS4uN2I3NmE1ZWVkZTk5Zjk0OWM4MWU2OWNmZTFiZGJiODk2Y2NjMjY3ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKQEAgLTI5LDEyICsyOSwxMiBA
QAogI2luY2x1ZGUgIkRPTUZvcm1EYXRhLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNs
dWRlICJGaWxlLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkZvcm1EYXRh
QnVpbGRlci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIK
ICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlQmxvYlJlZ2lz
dHJ5LmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9M
aW5lRW5kaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCmlu
ZGV4IDllMmQ4ODFkNjM1NDkxNTI1ZDcxYWY0NTZjMmQxOTVmZDEzYjk0ZDYuLmE3NGFlNWFhYzlj
YjI2MjNkYzljYTVhOGFhNDBhYzM0MDIxMmYyZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcApAQCAt
MzAsMTEgKzMwLDExIEBACiAjaW5jbHVkZSAiRm9ybURhdGFTdHJlYW1DRk5ldC5oIgogCiAjaW5j
bHVkZSAiQmxvYkRhdGEuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiRm9y
bURhdGEuaCIKICNpbmNsdWRlIDxzeXMvc3RhdC5oPgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgog
I2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4K
ICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAj
aW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KaW5kZXgg
MjdmZjlkMWNhOGVmYTFmZGQ2ZWRmMjg4NjQ4NjQ3OTQ5Zjg4MWE5Ni4uMmZlYzFmMzgzNGU0MTE2
YTFkZDRjZWIxZjYzMjg5OGQ1ZWNlMTQwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tCkBA
IC0yOCwxMyArMjgsMTMgQEAKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogCi0jaW1wb3J0ICJGaWxl
U3lzdGVtLmgiCiAjaW1wb3J0ICJGb3JtRGF0YVN0cmVhbU1hYy5oIgogI2ltcG9ydCAiSFRUUEhl
YWRlck5hbWVzLmgiCiAjaW1wb3J0ICJSZXNvdXJjZVJlcXVlc3RDRk5ldC5oIgogI2ltcG9ydCAi
UnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRp
b24uaD4KICNpbXBvcnQgPHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg+CisjaW1wb3J0IDx3dGYv
RmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ29va2llSmFyREIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0Nvb2tpZUphckRCLmNwcAppbmRleCBjMjNmZDcyZjE5MTcxMDIwODJlMTIxZTQ0ZDU4ZWRkOGEz
MmQxZTcxLi4yNjM2MjI4OGI4NjlkOGM3YmIzNDE3Zjc2ZjQwYjYzY2M1N2Y3YTc5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5j
cHAKQEAgLTI2LDEwICsyNiw5IEBACiAjaW5jbHVkZSAiQ29va2llSmFyREIuaCIKIAogI2luY2x1
ZGUgIkNvb2tpZVV0aWwuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiTG9n
Z2luZy5oIgogI2luY2x1ZGUgIlNRTGl0ZUZpbGVTeXN0ZW0uaCIKLQorI2luY2x1ZGUgPHd0Zi9G
aWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL01vbm90b25pY1RpbWUuaD4KICNpbmNsdWRlIDx3
dGYvVVJMLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsQ2FjaGVFbnRyeS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxDYWNoZUVudHJ5LmgKaW5kZXggY2JjNDVmZWQyYjYzOGVhNjJkOTEyZWM3ZWQyZDY2
MTQzYjhmOWQ2Yi4uMTEwMjdjZTNiM2NmNjM4OGY5OTU0YWFmNDljNDkwM2ZlOTNmZGZmNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVu
dHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNo
ZUVudHJ5LmgKQEAgLTI2LDExICsyNiwxMSBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUg
IkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJIVFRQSGVhZGVyTWFwLmgiCiAjaW5jbHVkZSAiUmVz
b3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJS
ZXNvdXJjZVJlc3BvbnNlLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3Rm
L0xpc3RIYXNoU2V0Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAKaW5kZXggNDNiYzJlN2JmZmY0ZjliZDZm
NzEwMjg1ZDZkM2Q4NjMxYmI3NzgzYS4uZmE1YzhkMmQyMWI2MjczODE1ZDAyM2E0ZjIwNDU1MDE2
ZTk2MzhhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxDYWNoZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcApAQCAtMzAsMTIgKzMwLDEyIEBACiAKICNpbmNs
dWRlICJDdXJsQ2FjaGVNYW5hZ2VyLmgiCiAKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5j
bHVkZSAiSFRUUEhlYWRlck1hcC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJS
ZXNvdXJjZUhhbmRsZUNsaWVudC5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlSW50ZXJuYWwu
aCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3Rl
bS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxGb3JtRGF0YVN0cmVhbS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxGb3JtRGF0YVN0cmVhbS5oCmlu
ZGV4IGM4ZWYzMzNlMGQ4YzBlMDI4ZWNkOGE0NmQ4MjZiOTA2NzFhMDBlMGMuLjA5ZTdmZGJiNGEy
Y2ZhYjRiOTA3MzJmMDYxMTRiZTA4MTEzYmI1MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRm9ybURhdGFTdHJlYW0uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybEZvcm1EYXRhU3RyZWFtLmgKQEAgLTI2
LDggKzI2LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAj
aW5jbHVkZSAiRm9ybURhdGEuaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaAppbmRleCBmZGM0YjU5
MGMxNDJjZjZkYzk4MDc3ZDlmNzVkNzg2NTYzNjE5NjlkLi45M2NhNjEwM2ZlNjNkNWZmMDMxMDU1
YzgyNWQ4MDI4Mjc2NGFlZGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaApAQCAtMzIsMTAgKzMyLDEwIEBACiAjaW5jbHVkZSAi
Q3VybFJlcXVlc3RTY2hlZHVsZXJDbGllbnQuaCIKICNpbmNsdWRlICJDdXJsUmVzcG9uc2UuaCIK
ICNpbmNsdWRlICJDdXJsU1NMVmVyaWZpZXIuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAj
aW5jbHVkZSAiTmV0d29ya0xvYWRNZXRyaWNzLmgiCiAjaW5jbHVkZSAiUHJvdGVjdGlvblNwYWNl
LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0
ZW0uaD4KICNpbmNsdWRlIDx3dGYvTWVzc2FnZVF1ZXVlLmg+CiAjaW5jbHVkZSA8d3RmL01vbm90
b25pY1RpbWUuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25D
dXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3Rv
cmFnZVNlc3Npb25DdXJsLmNwcAppbmRleCBjZTlhMmZmYTQzNmY2NTI5NTNhMjA3YjQxMDc0YzE5
Mjk0N2YzMmUyLi4wMGUzZDA4YmNkNDdiMWY1ZmFmMDc1NWQyYmZjNWMzZjIxYWY2YzU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCkBAIC0zMywxMCArMzMsOSBAQAogI2lu
Y2x1ZGUgIkNvb2tpZUphckRCLmgiCiAjaW5jbHVkZSAiQ29va2llUmVxdWVzdEhlYWRlckZpZWxk
UHJveHkuaCIKICNpbmNsdWRlICJDdXJsQ29udGV4dC5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0u
aCIKICNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFu
ZGxlLmgiCi0KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9NYWlu
VGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3Rm
L1VSTC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L1Jlc291cmNlSGFuZGxlQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcAppbmRleCAwZWVlODgzMWE1MzBlMGQ4YjgwZmIz
MjI2MDVkMDRmYmU1ZTI4YTNiLi4wMzJkNGRkODhmZmY3NmExMDdiYTdhODUyMzU0MzdhYTQ3N2U4
MGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVz
b3VyY2VIYW5kbGVDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcApAQCAtMzgsNyArMzgsNiBAQAogI2luY2x1ZGUg
IkN1cmxDYWNoZU1hbmFnZXIuaCIKICNpbmNsdWRlICJDdXJsQ29udGV4dC5oIgogI2luY2x1ZGUg
IkN1cmxSZXF1ZXN0LmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkhUVFBQ
YXJzZXJzLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtTdG9yYWdl
U2Vzc2lvbi5oIgpAQCAtNDgsNiArNDcsNyBAQAogI2luY2x1ZGUgIlN5bmNocm9ub3VzTG9hZGVy
Q2xpZW50LmgiCiAjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBs
ZXRpb25IYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9CYXNlNjQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQmxvYkRhdGFGaWxlUmVmZXJlbmNlTWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQmxvYkRhdGFGaWxlUmVm
ZXJlbmNlTWFjLm1tCmluZGV4IGZjZjU1ZDc2ZWE0NWViYjA2NzA0M2VjZGZjOGNmMDhjYzkyNDZh
MjkuLmI2OTI5MjBiMjFmYzY2MzlkNTc0NWQxYzA0NGU4Yjc4NzgyMzUwZDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Jsb2JEYXRhRmlsZVJlZmVyZW5j
ZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9CbG9iRGF0
YUZpbGVSZWZlcmVuY2VNYWMubW0KQEAgLTI4LDggKzI4LDggQEAKIAogI2lmIEVOQUJMRShGSUxF
X1JFUExBQ0VNRU5UKQogCi0jaW5jbHVkZSAiRmlsZU1ldGFkYXRhLmgiCi0jaW5jbHVkZSAiRmls
ZVN5c3RlbS5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlTWV0YWRhdGEuaD4KKyNpbmNsdWRlIDx3dGYv
RmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9Tb2Z0TGlua2luZy5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAppbmRleCA2MzczNGM2NzRj
NTJlZTk1ZGM2YzllNDIxYzQ2NjBmNDE4NDAwYmFhLi4wODE1ZWE2ODhlNzY2OTI3ZTY2M2Q0MDU2
MTQ5ZGJkMzY4ZTY0NmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcApAQCAtMzIsNyArMzIsNiBA
QAogI2lmIFVTRShTT1VQKQogCiAjaW5jbHVkZSAiQ3JlZGVudGlhbFN0b3JhZ2UuaCIKLSNpbmNs
dWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiR1VuaXF1ZVB0clNvdXAuaCIKICNpbmNsdWRl
ICJIVFRQUGFyc2Vycy5oIgogI2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKQEAgLTU3LDYg
KzU2LDcgQEAKICNpbmNsdWRlIDx1bmlzdGQuaD4KICNlbmRpZgogI2luY2x1ZGUgPHd0Zi9Db21w
bGV0aW9uSGFuZGxlci5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8
d3RmL2dsaWIvR1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL1J1bkxvb3BTb3VyY2VQcmlv
cml0eS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5j
cHAKaW5kZXggMzQzZmFlYjlmZWIyMTk0Y2NjM2VmNzc5ZDc3ZDNmNmI0ZDFlZGM4Ny4uYjk2Nzc5
NTk4MGVlOGZhNGM5OTUwMGZmZGYzNGI0MjAyZWIyYTJkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5j
cHAKQEAgLTMwLDEzICszMCwxMyBAQAogI2luY2x1ZGUgIlNvdXBOZXR3b3JrU2Vzc2lvbi5oIgog
CiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKLSNpbmNsdWRlICJGaWxlU3lz
dGVtLmgiCiAjaW5jbHVkZSAiR1VuaXF1ZVB0clNvdXAuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgi
CiAjaW5jbHVkZSAiU291cE5ldHdvcmtQcm94eVNldHRpbmdzLmgiCiAjaW5jbHVkZSA8Z2xpYi9n
c3RkaW8uaD4KICNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KICNpbmNsdWRlIDxwYWwvY3J5cHRv
L0NyeXB0b0RpZ2VzdC5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8
d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9CYXNlNjQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3Np
eC9GaWxlU3lzdGVtUE9TSVguY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NDg1
MTM1MjUxOGQ2MDZiZWEyNWVlZWEzMzYxODUyODAzMzRjZmNjLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4
L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OTMgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwNy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIElu
Yy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAg
ZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCi0KLSNpbmNsdWRlICJGaWxlTWV0
YWRhdGEuaCIKLSNpbmNsdWRlIDxkaXJlbnQuaD4KLSNpbmNsdWRlIDxlcnJuby5oPgotI2luY2x1
ZGUgPGZjbnRsLmg+Ci0jaW5jbHVkZSA8Zm5tYXRjaC5oPgotI2luY2x1ZGUgPGxpYmdlbi5oPgot
I2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSNpbmNsdWRlIDxzeXMv
c3RhdHZmcy5oPgotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2luY2x1ZGUgPHVuaXN0ZC5oPgot
I2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgRmlsZVN5
c3RlbSB7Ci0KLWJvb2wgZmlsZUV4aXN0cyhjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgaWYg
KHBhdGguaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIENTdHJpbmcgZnNS
ZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7Ci0KLSAgICBpZiAoIWZzUmVwLmRh
dGEoKSB8fCBmc1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgcmV0dXJuIGFjY2Vzcyhmc1JlcC5kYXRhKCksIEZfT0spICE9IC0xOwotfQotCi1ib29s
IGRlbGV0ZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIENTdHJpbmcgZnNSZXAgPSBm
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7Ci0KLSAgICBpZiAoIWZzUmVwLmRhdGEoKSB8
fCBmc1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
Ly8gdW5saW5rKC4uLikgcmV0dXJucyAwIG9uIHN1Y2Nlc3NmdWwgZGVsZXRpb24gb2YgdGhlIHBh
dGggYW5kIG5vbi16ZXJvIGluIGFueSBvdGhlciBjYXNlIChpbmNsdWRpbmcgaW52YWxpZCBwZXJt
aXNzaW9ucyBvciBub24tZXhpc3RlbnQgZmlsZSkKLSAgICByZXR1cm4gIXVubGluayhmc1JlcC5k
YXRhKCkpOwotfQotCi1QbGF0Zm9ybUZpbGVIYW5kbGUgb3BlbkZpbGUoY29uc3QgU3RyaW5nJiBw
YXRoLCBGaWxlT3Blbk1vZGUgbW9kZSkKLXsKLSAgICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKHBhdGgpOwotCi0gICAgaWYgKGZzUmVwLmlzTnVsbCgpKQotICAgICAg
ICByZXR1cm4gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKLQotICAgIGludCBwbGF0Zm9ybUZs
YWcgPSAwOwotICAgIGlmIChtb2RlID09IEZpbGVPcGVuTW9kZTo6UmVhZCkKLSAgICAgICAgcGxh
dGZvcm1GbGFnIHw9IE9fUkRPTkxZOwotICAgIGVsc2UgaWYgKG1vZGUgPT0gRmlsZU9wZW5Nb2Rl
OjpXcml0ZSkKLSAgICAgICAgcGxhdGZvcm1GbGFnIHw9IChPX1dST05MWSB8IE9fQ1JFQVQgfCBP
X1RSVU5DKTsKLSNpZiBPUyhEQVJXSU4pCi0gICAgZWxzZSBpZiAobW9kZSA9PSBGaWxlT3Blbk1v
ZGU6OkV2ZW50c09ubHkpCi0gICAgICAgIHBsYXRmb3JtRmxhZyB8PSBPX0VWVE9OTFk7Ci0jZW5k
aWYKLQotICAgIHJldHVybiBvcGVuKGZzUmVwLmRhdGEoKSwgcGxhdGZvcm1GbGFnLCAwNjY2KTsK
LX0KLQotdm9pZCBjbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpCi17Ci0gICAg
aWYgKGlzSGFuZGxlVmFsaWQoaGFuZGxlKSkgewotICAgICAgICBjbG9zZShoYW5kbGUpOwotICAg
ICAgICBoYW5kbGUgPSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOwotICAgIH0KLX0KLQotbG9u
ZyBsb25nIHNlZWtGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGxvbmcgbG9uZyBvZmZz
ZXQsIEZpbGVTZWVrT3JpZ2luIG9yaWdpbikKLXsKLSAgICBpbnQgd2hlbmNlID0gU0VFS19TRVQ7
Ci0gICAgc3dpdGNoIChvcmlnaW4pIHsKLSAgICBjYXNlIEZpbGVTZWVrT3JpZ2luOjpCZWdpbm5p
bmc6Ci0gICAgICAgIHdoZW5jZSA9IFNFRUtfU0VUOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IEZpbGVTZWVrT3JpZ2luOjpDdXJyZW50OgotICAgICAgICB3aGVuY2UgPSBTRUVLX0NVUjsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGaWxlU2Vla09yaWdpbjo6RW5kOgotICAgICAgICB3aGVu
Y2UgPSBTRUVLX0VORDsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotICAgIHJldHVybiBzdGF0aWNfY2FzdDxsb25nIGxv
bmc+KGxzZWVrKGhhbmRsZSwgb2Zmc2V0LCB3aGVuY2UpKTsKLX0KLQotYm9vbCB0cnVuY2F0ZUZp
bGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCkKLXsKLSAgICAv
LyBmdHJ1bmNhdGUgcmV0dXJucyAwIHRvIGluZGljYXRlIHRoZSBzdWNjZXNzLgotICAgIHJldHVy
biAhZnRydW5jYXRlKGhhbmRsZSwgb2Zmc2V0KTsKLX0KLQotaW50IHdyaXRlVG9GaWxlKFBsYXRm
b3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCi17Ci0g
ICAgZG8gewotICAgICAgICBpbnQgYnl0ZXNXcml0dGVuID0gd3JpdGUoaGFuZGxlLCBkYXRhLCBz
dGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkpOwotICAgICAgICBpZiAoYnl0ZXNXcml0dGVuID49
IDApCi0gICAgICAgICAgICByZXR1cm4gYnl0ZXNXcml0dGVuOwotICAgIH0gd2hpbGUgKGVycm5v
ID09IEVJTlRSKTsKLSAgICByZXR1cm4gLTE7Ci19Ci0KLWludCByZWFkRnJvbUZpbGUoUGxhdGZv
cm1GaWxlSGFuZGxlIGhhbmRsZSwgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKLXsKLSAgICBkbyB7
Ci0gICAgICAgIGludCBieXRlc1JlYWQgPSByZWFkKGhhbmRsZSwgZGF0YSwgc3RhdGljX2Nhc3Q8
c2l6ZV90PihsZW5ndGgpKTsKLSAgICAgICAgaWYgKGJ5dGVzUmVhZCA+PSAwKQotICAgICAgICAg
ICAgcmV0dXJuIGJ5dGVzUmVhZDsKLSAgICB9IHdoaWxlIChlcnJubyA9PSBFSU5UUik7Ci0gICAg
cmV0dXJuIC0xOwotfQotCi0jaWYgVVNFKEZJTEVfTE9DSykKLWJvb2wgbG9ja0ZpbGUoUGxhdGZv
cm1GaWxlSGFuZGxlIGhhbmRsZSwgT3B0aW9uU2V0PEZpbGVMb2NrTW9kZT4gbG9ja01vZGUpCi17
Ci0gICAgQ09NUElMRV9BU1NFUlQoTE9DS19TSCA9PSBXVEY6OmVudW1Ub1VuZGVybHlpbmdUeXBl
KEZpbGVMb2NrTW9kZTo6U2hhcmVkKSwgTG9ja1NoYXJlZEVuY29kaW5nSXNBc0V4cGVjdGVkKTsK
LSAgICBDT01QSUxFX0FTU0VSVChMT0NLX0VYID09IFdURjo6ZW51bVRvVW5kZXJseWluZ1R5cGUo
RmlsZUxvY2tNb2RlOjpFeGNsdXNpdmUpLCBMb2NrRXhjbHVzaXZlRW5jb2RpbmdJc0FzRXhwZWN0
ZWQpOwotICAgIENPTVBJTEVfQVNTRVJUKExPQ0tfTkIgPT0gV1RGOjplbnVtVG9VbmRlcmx5aW5n
VHlwZShGaWxlTG9ja01vZGU6Ok5vbmJsb2NraW5nKSwgTG9ja05vbmJsb2NraW5nRW5jb2RpbmdJ
c0FzRXhwZWN0ZWQpOwotICAgIGludCByZXN1bHQgPSBmbG9jayhoYW5kbGUsIGxvY2tNb2RlLnRv
UmF3KCkpOwotICAgIHJldHVybiAocmVzdWx0ICE9IC0xKTsKLX0KLQotYm9vbCB1bmxvY2tGaWxl
KFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUpCi17Ci0gICAgaW50IHJlc3VsdCA9IGZsb2NrKGhh
bmRsZSwgTE9DS19VTik7Ci0gICAgcmV0dXJuIChyZXN1bHQgIT0gLTEpOwotfQotI2VuZGlmCi0K
LSNpZiAhUExBVEZPUk0oTUFDKQotYm9vbCBkZWxldGVFbXB0eURpcmVjdG9yeShjb25zdCBTdHJp
bmcmIHBhdGgpCi17Ci0gICAgQ1N0cmluZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihwYXRoKTsKLQotICAgIGlmICghZnNSZXAuZGF0YSgpIHx8IGZzUmVwLmRhdGEoKVswXSA9PSAn
XDAnKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBybWRpciguLi4pIHJldHVybnMg
MCBvbiBzdWNjZXNzZnVsIGRlbGV0aW9uIG9mIHRoZSBwYXRoIGFuZCBub24temVybyBpbiBhbnkg
b3RoZXIgY2FzZSAoaW5jbHVkaW5nIGludmFsaWQgcGVybWlzc2lvbnMgb3Igbm9uLWV4aXN0ZW50
IGZpbGUpCi0gICAgcmV0dXJuICFybWRpcihmc1JlcC5kYXRhKCkpOwotfQotI2VuZGlmCi0KLWJv
b2wgZ2V0RmlsZVNpemUoY29uc3QgU3RyaW5nJiBwYXRoLCBsb25nIGxvbmcmIHJlc3VsdCkKLXsK
LSAgICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwotCi0g
ICAgaWYgKCFmc1JlcC5kYXRhKCkgfHwgZnNSZXAuZGF0YSgpWzBdID09ICdcMCcpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgIHN0cnVjdCBzdGF0IGZpbGVJbmZvOwotCi0gICAgaWYgKHN0
YXQoZnNSZXAuZGF0YSgpLCAmZmlsZUluZm8pKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICByZXN1bHQgPSBmaWxlSW5mby5zdF9zaXplOwotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29s
IGdldEZpbGVTaXplKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGxvbmcgbG9uZyYgcmVzdWx0
KQotewotICAgIHN0cnVjdCBzdGF0IGZpbGVJbmZvOwotICAgIGlmIChmc3RhdChoYW5kbGUsICZm
aWxlSW5mbykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJlc3VsdCA9IGZpbGVJbmZv
LnN0X3NpemU7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLU9wdGlvbmFsPFdhbGxUaW1lPiBnZXRG
aWxlQ3JlYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSNpZiBPUyhEQVJXSU4pIHx8
IE9TKE9QRU5CU0QpIHx8IE9TKE5FVEJTRCkgfHwgT1MoRlJFRUJTRCkKLSAgICBDU3RyaW5nIGZz
UmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwotCi0gICAgaWYgKCFmc1JlcC5k
YXRhKCkgfHwgZnNSZXAuZGF0YSgpWzBdID09ICdcMCcpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7Ci0KLSAgICBzdHJ1Y3Qgc3RhdCBmaWxlSW5mbzsKLQotICAgIGlmIChzdGF0KGZzUmVw
LmRhdGEoKSwgJmZpbGVJbmZvKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAg
IHJldHVybiBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoZmlsZUluZm8uc3RfYmlydGh0aW1lKTsK
LSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHBhdGgpOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
Ci0jZW5kaWYKLX0KLQotT3B0aW9uYWw8V2FsbFRpbWU+IGdldEZpbGVNb2RpZmljYXRpb25UaW1l
KGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKHBhdGgpOwotCi0gICAgaWYgKCFmc1JlcC5kYXRhKCkgfHwgZnNSZXAuZGF0
YSgpWzBdID09ICdcMCcpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBzdHJ1
Y3Qgc3RhdCBmaWxlSW5mbzsKLQotICAgIGlmIChzdGF0KGZzUmVwLmRhdGEoKSwgJmZpbGVJbmZv
KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIHJldHVybiBXYWxsVGltZTo6
ZnJvbVJhd1NlY29uZHMoZmlsZUluZm8uc3RfbXRpbWUpOwotfQotCi1zdGF0aWMgRmlsZU1ldGFk
YXRhOjpUeXBlIHRvRmlsZU1ldGF0YVR5cGUoc3RydWN0IHN0YXQgZmlsZUluZm8pCi17Ci0gICAg
aWYgKFNfSVNESVIoZmlsZUluZm8uc3RfbW9kZSkpCi0gICAgICAgIHJldHVybiBGaWxlTWV0YWRh
dGE6OlR5cGU6OkRpcmVjdG9yeTsKLSAgICBpZiAoU19JU0xOSyhmaWxlSW5mby5zdF9tb2RlKSkK
LSAgICAgICAgcmV0dXJuIEZpbGVNZXRhZGF0YTo6VHlwZTo6U3ltYm9saWNMaW5rOwotICAgIHJl
dHVybiBGaWxlTWV0YWRhdGE6OlR5cGU6OkZpbGU7Ci19Ci0KLXN0YXRpYyBPcHRpb25hbDxGaWxl
TWV0YWRhdGE+IGZpbGVNZXRhZGF0YVVzaW5nRnVuY3Rpb24oY29uc3QgU3RyaW5nJiBwYXRoLCBp
bnQgKCpzdGF0RnVuYykoY29uc3QgY2hhciosIHN0cnVjdCBzdGF0KikpCi17Ci0gICAgQ1N0cmlu
ZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKLQotICAgIGlmICghZnNS
ZXAuZGF0YSgpIHx8IGZzUmVwLmRhdGEoKVswXSA9PSAnXDAnKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwotCi0gICAgc3RydWN0IHN0YXQgZmlsZUluZm87Ci0gICAgaWYgKHN0YXRGdW5j
KGZzUmVwLmRhdGEoKSwgJmZpbGVJbmZvKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
LQotICAgIFN0cmluZyBmaWxlbmFtZSA9IHBhdGhHZXRGaWxlTmFtZShwYXRoKTsKLSAgICBib29s
IGlzSGlkZGVuID0gIWZpbGVuYW1lLmlzRW1wdHkoKSAmJiBmaWxlbmFtZVswXSA9PSAnLic7Ci0g
ICAgcmV0dXJuIEZpbGVNZXRhZGF0YSB7Ci0gICAgICAgIFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25k
cyhmaWxlSW5mby5zdF9tdGltZSksCi0gICAgICAgIGZpbGVJbmZvLnN0X3NpemUsCi0gICAgICAg
IGlzSGlkZGVuLAotICAgICAgICB0b0ZpbGVNZXRhdGFUeXBlKGZpbGVJbmZvKQotICAgIH07Ci19
Ci0KLU9wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYgcGF0
aCkKLXsKLSAgICByZXR1cm4gZmlsZU1ldGFkYXRhVXNpbmdGdW5jdGlvbihwYXRoLCAmbHN0YXQp
OwotfQotCi1PcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YUZvbGxvd2luZ1N5bWxp
bmtzKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICByZXR1cm4gZmlsZU1ldGFkYXRhVXNpbmdG
dW5jdGlvbihwYXRoLCAmc3RhdCk7Ci19Ci0KLWJvb2wgY3JlYXRlU3ltYm9saWNMaW5rKGNvbnN0
IFN0cmluZyYgdGFyZ2V0UGF0aCwgY29uc3QgU3RyaW5nJiBzeW1ib2xpY0xpbmtQYXRoKQotewot
ICAgIENTdHJpbmcgdGFyZ2V0UGF0aEZTUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHRh
cmdldFBhdGgpOwotICAgIGlmICghdGFyZ2V0UGF0aEZTUmVwLmRhdGEoKSB8fCB0YXJnZXRQYXRo
RlNSZXAuZGF0YSgpWzBdID09ICdcMCcpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIENT
dHJpbmcgc3ltYm9saWNMaW5rUGF0aEZTUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHN5
bWJvbGljTGlua1BhdGgpOwotICAgIGlmICghc3ltYm9saWNMaW5rUGF0aEZTUmVwLmRhdGEoKSB8
fCBzeW1ib2xpY0xpbmtQYXRoRlNSZXAuZGF0YSgpWzBdID09ICdcMCcpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIHJldHVybiAhc3ltbGluayh0YXJnZXRQYXRoRlNSZXAuZGF0YSgpLCBz
eW1ib2xpY0xpbmtQYXRoRlNSZXAuZGF0YSgpKTsKLX0KLQotU3RyaW5nIHBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29tcG9uZW50KQot
ewotICAgIGlmIChwYXRoLmVuZHNXaXRoKCcvJykpCi0gICAgICAgIHJldHVybiBwYXRoICsgY29t
cG9uZW50OwotICAgIHJldHVybiBwYXRoICsgIi8iICsgY29tcG9uZW50OwotfQotCi1TdHJpbmcg
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhTdHJpbmdWaWV3IHBhdGgsIGNvbnN0IFZlY3RvcjxT
dHJpbmdWaWV3PiYgY29tcG9uZW50cykKLXsKLSAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0g
ICAgYnVpbGRlci5hcHBlbmQocGF0aCk7Ci0gICAgZm9yIChhdXRvJiBjb21wb25lbnQgOiBjb21w
b25lbnRzKSB7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcvJyk7Ci0gICAgICAgIGJ1aWxkZXIu
YXBwZW5kKGNvbXBvbmVudCk7Ci0gICAgfQotICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7
Ci19Ci0KLWJvb2wgbWFrZUFsbERpcmVjdG9yaWVzKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAg
ICBDU3RyaW5nIGZ1bGxQYXRoID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwotICAg
IGlmICghYWNjZXNzKGZ1bGxQYXRoLmRhdGEoKSwgRl9PSykpCi0gICAgICAgIHJldHVybiB0cnVl
OwotCi0gICAgY2hhciogcCA9IGZ1bGxQYXRoLm11dGFibGVEYXRhKCkgKyAxOwotICAgIGludCBs
ZW5ndGggPSBmdWxsUGF0aC5sZW5ndGgoKTsKLQotICAgIGlmKHBbbGVuZ3RoIC0gMV0gPT0gJy8n
KQotICAgICAgICBwW2xlbmd0aCAtIDFdID0gJ1wwJzsKLSAgICBmb3IgKDsgKnA7ICsrcCkKLSAg
ICAgICAgaWYgKCpwID09ICcvJykgewotICAgICAgICAgICAgKnAgPSAnXDAnOwotICAgICAgICAg
ICAgaWYgKGFjY2VzcyhmdWxsUGF0aC5kYXRhKCksIEZfT0spKQotICAgICAgICAgICAgICAgIGlm
IChta2RpcihmdWxsUGF0aC5kYXRhKCksIFNfSVJXWFUpKQotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAqcCA9ICcvJzsKLSAgICAgICAgfQotICAgIGlmIChh
Y2Nlc3MoZnVsbFBhdGguZGF0YSgpLCBGX09LKSkKLSAgICAgICAgaWYgKG1rZGlyKGZ1bGxQYXRo
LmRhdGEoKSwgU19JUldYVSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1
cm4gdHJ1ZTsKLX0KLQotU3RyaW5nIHBhdGhHZXRGaWxlTmFtZShjb25zdCBTdHJpbmcmIHBhdGgp
Ci17Ci0gICAgcmV0dXJuIHBhdGguc3Vic3RyaW5nKHBhdGgucmV2ZXJzZUZpbmQoJy8nKSArIDEp
OwotfQotCi1TdHJpbmcgZGlyZWN0b3J5TmFtZShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAg
Q1N0cmluZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKLQotICAgIGlm
ICghZnNSZXAuZGF0YSgpIHx8IGZzUmVwLmRhdGEoKVswXSA9PSAnXDAnKQotICAgICAgICByZXR1
cm4gU3RyaW5nKCk7Ci0KLSAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChkaXJuYW1lKGZzUmVw
Lm11dGFibGVEYXRhKCkpKTsKLX0KLQotVmVjdG9yPFN0cmluZz4gbGlzdERpcmVjdG9yeShjb25z
dCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgZmlsdGVyKQotewotICAgIFZlY3RvcjxTdHJp
bmc+IGVudHJpZXM7Ci0gICAgQ1N0cmluZyBjcGF0aCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihwYXRoKTsKLSAgICBDU3RyaW5nIGNmaWx0ZXIgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
ZmlsdGVyKTsKLSAgICBESVIqIGRpciA9IG9wZW5kaXIoY3BhdGguZGF0YSgpKTsKLSAgICBpZiAo
ZGlyKSB7Ci0gICAgICAgIHN0cnVjdCBkaXJlbnQqIGRwOwotICAgICAgICB3aGlsZSAoKGRwID0g
cmVhZGRpcihkaXIpKSkgewotICAgICAgICAgICAgY29uc3QgY2hhciogbmFtZSA9IGRwLT5kX25h
bWU7Ci0gICAgICAgICAgICBpZiAoIXN0cmNtcChuYW1lLCAiLiIpIHx8ICFzdHJjbXAobmFtZSwg
Ii4uIikpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBpZiAoZm5tYXRj
aChjZmlsdGVyLmRhdGEoKSwgbmFtZSwgMCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgICAgICBjaGFyIGZpbGVQYXRoW1BBVEhfTUFYXTsKLSAgICAgICAgICAgIGlmIChzdGF0
aWNfY2FzdDxpbnQ+KHNpemVvZihmaWxlUGF0aCkgLSAxKSA8IHNucHJpbnRmKGZpbGVQYXRoLCBz
aXplb2YoZmlsZVBhdGgpLCAiJXMvJXMiLCBjcGF0aC5kYXRhKCksIG5hbWUpKQotICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOyAvLyBidWZmZXIgb3ZlcmZsb3cKLQotICAgICAgICAgICAgYXV0byBz
dHJpbmcgPSBzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVQYXRoKTsKLQot
ICAgICAgICAgICAgLy8gU29tZSBmaWxlIHN5c3RlbSByZXByZXNlbnRhdGlvbnMgY2Fubm90IGJl
IHJlcHJlc2VudGVkIGFzIGEgVVRGLTE2IHN0cmluZywKLSAgICAgICAgICAgIC8vIHNvIHRoaXMg
c3RyaW5nIG1pZ2h0IGJlIG51bGwuCi0gICAgICAgICAgICBpZiAoIXN0cmluZy5pc051bGwoKSkK
LSAgICAgICAgICAgICAgICBlbnRyaWVzLmFwcGVuZChXVEZNb3ZlKHN0cmluZykpOwotICAgICAg
ICB9Ci0gICAgICAgIGNsb3NlZGlyKGRpcik7Ci0gICAgfQotICAgIHJldHVybiBlbnRyaWVzOwot
fQotCi0jaWYgIVBMQVRGT1JNKENPQ09BKQotU3RyaW5nIHN0cmluZ0Zyb21GaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oY29uc3QgY2hhciogcGF0aCkKLXsKLSAgICBpZiAoIXBhdGgpCi0gICAgICAg
IHJldHVybiBTdHJpbmcoKTsKLQotICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KHBhdGgpOwot
fQotCi1DU3RyaW5nIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIHBhdGgp
Ci17Ci0gICAgcmV0dXJuIHBhdGgudXRmOCgpOwotfQotCi1ib29sIG1vdmVGaWxlKGNvbnN0IFN0
cmluZyYgb2xkUGF0aCwgY29uc3QgU3RyaW5nJiBuZXdQYXRoKQotewotICAgIGF1dG8gb2xkRmls
ZW5hbWUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ob2xkUGF0aCk7Ci0gICAgaWYgKG9sZEZp
bGVuYW1lLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBhdXRvIG5ld0Zp
bGVuYW1lID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKG5ld1BhdGgpOwotICAgIGlmIChuZXdG
aWxlbmFtZS5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHJl
bmFtZShvbGRGaWxlbmFtZS5kYXRhKCksIG5ld0ZpbGVuYW1lLmRhdGEoKSkgIT0gLTE7Ci19Ci0K
LWJvb2wgZ2V0Vm9sdW1lRnJlZVNwYWNlKGNvbnN0IFN0cmluZyYgcGF0aCwgdWludDY0X3QmIGZy
ZWVTcGFjZSkKLXsKLSAgICBzdHJ1Y3Qgc3RhdHZmcyBmaWxlU3lzdGVtU3RhdDsKLSAgICBpZiAo
c3RhdHZmcyhmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpLCAmZmlsZVN5c3Rl
bVN0YXQpKSB7Ci0gICAgICAgIGZyZWVTcGFjZSA9IGZpbGVTeXN0ZW1TdGF0LmZfYmF2YWlsICog
ZmlsZVN5c3RlbVN0YXQuZl9mcnNpemU7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAg
ICByZXR1cm4gZmFsc2U7Ci19Ci0jZW5kaWYKLQotI2lmICFPUyhEQVJXSU4pCi1TdHJpbmcgb3Bl
blRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYg
aGFuZGxlKQotewotICAgIGNoYXIgYnVmZmVyW1BBVEhfTUFYXTsKLSAgICBjb25zdCBjaGFyKiB0
bXBEaXIgPSBnZXRlbnYoIlRNUERJUiIpOwotCi0gICAgaWYgKCF0bXBEaXIpCi0gICAgICAgIHRt
cERpciA9ICIvdG1wIjsKLQotICAgIGlmIChzbnByaW50ZihidWZmZXIsIFBBVEhfTUFYLCAiJXMv
JXNYWFhYWFgiLCB0bXBEaXIsIHByZWZpeC51dGY4KCkuZGF0YSgpKSA+PSBQQVRIX01BWCkKLSAg
ICAgICAgZ290byBlbmQ7Ci0KLSAgICBoYW5kbGUgPSBta3N0ZW1wKGJ1ZmZlcik7Ci0gICAgaWYg
KGhhbmRsZSA8IDApCi0gICAgICAgIGdvdG8gZW5kOwotCi0gICAgcmV0dXJuIFN0cmluZzo6ZnJv
bVVURjgoYnVmZmVyKTsKLQotZW5kOgotICAgIGhhbmRsZSA9IGludmFsaWRQbGF0Zm9ybUZpbGVI
YW5kbGU7Ci0gICAgcmV0dXJuIFN0cmluZygpOwotfQotI2VuZGlmCi0KLWJvb2wgaGFyZExpbmtP
ckNvcHlGaWxlKGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9u
KQotewotICAgIGlmIChzb3VyY2UuaXNFbXB0eSgpIHx8IGRlc3RpbmF0aW9uLmlzRW1wdHkoKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgQ1N0cmluZyBmc1NvdXJjZSA9IGZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihzb3VyY2UpOwotICAgIGlmICghZnNTb3VyY2UuZGF0YSgpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBDU3RyaW5nIGZzRGVzdGluYXRpb24gPSBmaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oZGVzdGluYXRpb24pOwotICAgIGlmICghZnNEZXN0aW5hdGlvbi5k
YXRhKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmICghbGluayhmc1NvdXJjZS5k
YXRhKCksIGZzRGVzdGluYXRpb24uZGF0YSgpKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAg
ICAvLyBIYXJkIGxpbmsgZmFpbGVkLiBQZXJmb3JtIGEgY29weSBpbnN0ZWFkLgotICAgIGF1dG8g
aGFuZGxlID0gb3Blbihmc0Rlc3RpbmF0aW9uLmRhdGEoKSwgT19XUk9OTFkgfCBPX0NSRUFUIHwg
T19FWENMLCAwNjY2KTsKLSAgICBpZiAoaGFuZGxlID09IC0xKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICBib29sIGFwcGVuZFJlc3VsdCA9IGFwcGVuZEZpbGVDb250ZW50c1RvRmlsZUhh
bmRsZShzb3VyY2UsIGhhbmRsZSk7Ci0gICAgY2xvc2UoaGFuZGxlKTsKLQotICAgIC8vIElmIHRo
ZSBjb3B5IGZhaWxlZCwgZGVsZXRlIHRoZSB1bnVzYWJsZSBmaWxlLgotICAgIGlmICghYXBwZW5k
UmVzdWx0KQotICAgICAgICB1bmxpbmsoZnNEZXN0aW5hdGlvbi5kYXRhKCkpOwotCi0gICAgcmV0
dXJuIGFwcGVuZFJlc3VsdDsKLX0KLQotT3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlk
KGNvbnN0IENTdHJpbmcmIGZzRmlsZSkKLXsKLSAgICBzdHJ1Y3Qgc3RhdCBmaWxlU3RhdDsKLSAg
ICBpZiAoc3RhdChmc0ZpbGUuZGF0YSgpLCAmZmlsZVN0YXQpID09IC0xKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwotCi0gICAgcmV0dXJuIGZpbGVTdGF0LnN0X2RldjsKLX0KLQotU3Ry
aW5nIHJlYWxQYXRoKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCi17Ci0gICAgQ1N0cmluZyBmc1Jl
cCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWxlUGF0aCk7Ci0gICAgY2hhciByZXNvbHZl
ZE5hbWVbUEFUSF9NQVhdOwotICAgIGNvbnN0IGNoYXIqIHJlc3VsdCA9IHJlYWxwYXRoKGZzUmVw
LmRhdGEoKSwgcmVzb2x2ZWROYW1lKTsKLSAgICByZXR1cm4gcmVzdWx0ID8gU3RyaW5nOjpmcm9t
VVRGOChyZXN1bHQpIDogZmlsZVBhdGg7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEZpbGVTeXN0ZW0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcAppbmRleCA1MTMzNzVkMjQ1ZWY0NWMxOTZhODU0
NjE1Y2U3MGI3OGE5MGNlY2ZmLi44ZWQ1NzE3NDc3OGNiN2JkYWRjYTM2NTE3ZmQ3OTQ0NTczOGM1
MmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZm
ZXJQT1NJWC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvU2hhcmVkQnVm
ZmVyUE9TSVguY3BwCkBAIC0yNiwxMSArMjYsMTAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKIAotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKLQogI2lu
Y2x1ZGUgPGZjbnRsLmg+CiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KICNpbmNsdWRlIDx1bmlzdGQu
aD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uY3BwCmluZGV4IDkwYzIwYzdiY2U2YTY3YjY3ZDUzZDVj
NDA1Mzc3NmJmMTRjN2U1ZTUuLjM2NGJmZjcxMDc0OTc4OTZmN2IxZDc1N2E3ZDlhNWZjM2FkM2Y2
NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lz
dGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3Rl
bS5jcHAKQEAgLTMxLDEwICszMSwxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IlNRTGl0ZUZpbGVTeXN0ZW0uaCIKIAotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRl
ICJTUUxpdGVEYXRhYmFzZS5oIgogI2luY2x1ZGUgIlNRTGl0ZVN0YXRlbWVudC5oIgogI2luY2x1
ZGUgPHNxbGl0ZTMuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICNpbmNsdWRlIDxwYWwvc3BpL2lvcy9TUUxpdGUzU1BJLmg+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxp
Ykh5cGhlbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5h
dGlvbkxpYkh5cGhlbi5jcHAKaW5kZXggMmQ3YjY2ZDkzNzkwNWRjYzIyZjRhMTNlOTVhMGFmMDZi
YjQ4YjdhZi4uNWVlYjliZmE3NDAwZjcyMTVjMDI2YzU1MmQ4MmFhMzhhNzYzZjk0MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9oeXBoZW4vSHlwaGVuYXRpb25MaWJI
eXBoZW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaHlwaGVuL0h5cGhl
bmF0aW9uTGliSHlwaGVuLmNwcApAQCAtMjksMTAgKzI5LDEwIEBACiAKICNpZiBVU0UoTElCSFlQ
SEVOKQogCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgPGh5cGhlbi5oPgogI2lu
Y2x1ZGUgPGxpbWl0cz4KICNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5
c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1RpbnlMUlVDYWNoZS5oPgpAQCAtMjI0LDcgKzIyNCw3
IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBSZWZQdHI8V2ViQ29yZTo6SHlwaGVuYXRpb25EaWN0
aW9uYXJ5PiBjcmVhdGVWYWx1ZUZvcktleShjb25zdCBBdG9taWNTdHJpbmcmIGRpY3Rpb25hcnlQ
YXRoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6Okh5cGhlbmF0aW9uRGljdGlvbmFy
eTo6Y3JlYXRlKFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihk
aWN0aW9uYXJ5UGF0aC5zdHJpbmcoKSkpOworICAgICAgICByZXR1cm4gV2ViQ29yZTo6SHlwaGVu
YXRpb25EaWN0aW9uYXJ5OjpjcmVhdGUoRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKGRpY3Rpb25hcnlQYXRoLnN0cmluZygpKSk7CiAgICAgfQogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0ZpbGVTeXN0ZW1XaW4uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBiYjcwMmNiMDEyMGFiYmYyNTg1MjlmYWY5NDMxMGRkZmZmZGY2MDg0Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2luLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDU4OSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSwgTHRkLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCi0gKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCi0gKiAzLiAgTmVpdGhlciB0aGUg
bmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRz
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4gCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKLQot
I2luY2x1ZGUgIkZpbGVNZXRhZGF0YS5oIgotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0j
aW5jbHVkZSAiUGF0aFdhbGtlci5oIgotI2luY2x1ZGUgPGlvLmg+Ci0jaW5jbHVkZSA8c2hsb2Jq
Lmg+Ci0jaW5jbHVkZSA8c2hsd2FwaS5oPgotI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0jaW5jbHVk
ZSA8d2luZG93cy5oPgotI2luY2x1ZGUgPHd0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJl
ci5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KLSNpbmNsdWRlIDx3dGYv
dGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1u
YW1lc3BhY2UgRmlsZVN5c3RlbSB7Ci0KLXN0YXRpYyBjb25zdCBVTE9OR0xPTkcga1NlY29uZHNG
cm9tRmlsZVRpbWVUb1RpbWV0ID0gMTE2NDQ0NzM2MDA7Ci0KLXN0YXRpYyBib29sIGdldEZpbmRE
YXRhKFN0cmluZyBwYXRoLCBXSU4zMl9GSU5EX0RBVEFXJiBmaW5kRGF0YSkKLXsKLSAgICBIQU5E
TEUgaGFuZGxlID0gRmluZEZpcnN0RmlsZVcoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKHBh
dGgpLmRhdGEoKSwgJmZpbmREYXRhKTsKLSAgICBpZiAoaGFuZGxlID09IElOVkFMSURfSEFORExF
X1ZBTFVFKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgRmluZENsb3NlKGhhbmRsZSk7Ci0g
ICAgcmV0dXJuIHRydWU7Ci19Ci0KLXN0YXRpYyBib29sIGdldEZpbGVTaXplRnJvbUZpbmREYXRh
KGNvbnN0IFdJTjMyX0ZJTkRfREFUQVcmIGZpbmREYXRhLCBsb25nIGxvbmcmIHNpemUpCi17Ci0g
ICAgVUxBUkdFX0lOVEVHRVIgZmlsZVNpemU7Ci0gICAgZmlsZVNpemUuSGlnaFBhcnQgPSBmaW5k
RGF0YS5uRmlsZVNpemVIaWdoOwotICAgIGZpbGVTaXplLkxvd1BhcnQgPSBmaW5kRGF0YS5uRmls
ZVNpemVMb3c7Ci0KLSAgICBpZiAoZmlsZVNpemUuUXVhZFBhcnQgPiBzdGF0aWNfY2FzdDxVTE9O
R0xPTkc+KHN0ZDo6bnVtZXJpY19saW1pdHM8bG9uZyBsb25nPjo6bWF4KCkpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICBzaXplID0gZmlsZVNpemUuUXVhZFBhcnQ7Ci0gICAgcmV0dXJu
IHRydWU7Ci19Ci0KLXN0YXRpYyBib29sIGdldEZpbGVTaXplRnJvbUJ5SGFuZGxlRmlsZUluZm9y
bWF0aW9uU3RydWN0dXJlKGNvbnN0IEJZX0hBTkRMRV9GSUxFX0lORk9STUFUSU9OJiBmaWxlSW5m
b3JtYXRpb24sIGxvbmcgbG9uZyYgc2l6ZSkKLXsKLSAgICBVTEFSR0VfSU5URUdFUiBmaWxlU2l6
ZTsKLSAgICBmaWxlU2l6ZS5IaWdoUGFydCA9IGZpbGVJbmZvcm1hdGlvbi5uRmlsZVNpemVIaWdo
OwotICAgIGZpbGVTaXplLkxvd1BhcnQgPSBmaWxlSW5mb3JtYXRpb24ubkZpbGVTaXplTG93Owot
Ci0gICAgaWYgKGZpbGVTaXplLlF1YWRQYXJ0ID4gc3RhdGljX2Nhc3Q8VUxPTkdMT05HPihzdGQ6
Om51bWVyaWNfbGltaXRzPGxvbmcgbG9uZz46Om1heCgpKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgc2l6ZSA9IGZpbGVTaXplLlF1YWRQYXJ0OwotICAgIHJldHVybiB0cnVlOwotfQot
Ci1zdGF0aWMgdm9pZCBnZXRGaWxlQ3JlYXRpb25UaW1lRnJvbUZpbmREYXRhKGNvbnN0IFdJTjMy
X0ZJTkRfREFUQVcmIGZpbmREYXRhLCB0aW1lX3QmIHRpbWUpCi17Ci0gICAgVUxBUkdFX0lOVEVH
RVIgZmlsZVRpbWU7Ci0gICAgZmlsZVRpbWUuSGlnaFBhcnQgPSBmaW5kRGF0YS5mdENyZWF0aW9u
VGltZS5kd0hpZ2hEYXRlVGltZTsKLSAgICBmaWxlVGltZS5Mb3dQYXJ0ID0gZmluZERhdGEuZnRD
cmVhdGlvblRpbWUuZHdMb3dEYXRlVGltZTsKLQotICAgIC8vIEluZm9ybWF0aW9uIGFib3V0IGNv
bnZlcnRpbmcgdGltZV90IHRvIEZpbGVUaW1lIGlzIGF2YWlsYWJsZSBhdCBodHRwOi8vbXNkbi5t
aWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvbXM3MjQyMjglMjh2PXZzLjg1JTI5LmFzcHgKLSAg
ICB0aW1lID0gZmlsZVRpbWUuUXVhZFBhcnQgLyAxMDAwMDAwMCAtIGtTZWNvbmRzRnJvbUZpbGVU
aW1lVG9UaW1ldDsKLX0KLQotCi1zdGF0aWMgdm9pZCBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZUZy
b21GaW5kRGF0YShjb25zdCBXSU4zMl9GSU5EX0RBVEFXJiBmaW5kRGF0YSwgdGltZV90JiB0aW1l
KQotewotICAgIFVMQVJHRV9JTlRFR0VSIGZpbGVUaW1lOwotICAgIGZpbGVUaW1lLkhpZ2hQYXJ0
ID0gZmluZERhdGEuZnRMYXN0V3JpdGVUaW1lLmR3SGlnaERhdGVUaW1lOwotICAgIGZpbGVUaW1l
Lkxvd1BhcnQgPSBmaW5kRGF0YS5mdExhc3RXcml0ZVRpbWUuZHdMb3dEYXRlVGltZTsKLQotICAg
IC8vIEluZm9ybWF0aW9uIGFib3V0IGNvbnZlcnRpbmcgdGltZV90IHRvIEZpbGVUaW1lIGlzIGF2
YWlsYWJsZSBhdCBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvbXM3MjQy
MjglMjh2PXZzLjg1JTI5LmFzcHgKLSAgICB0aW1lID0gZmlsZVRpbWUuUXVhZFBhcnQgLyAxMDAw
MDAwMCAtIGtTZWNvbmRzRnJvbUZpbGVUaW1lVG9UaW1ldDsKLX0KLQotYm9vbCBnZXRGaWxlU2l6
ZShjb25zdCBTdHJpbmcmIHBhdGgsIGxvbmcgbG9uZyYgc2l6ZSkKLXsKLSAgICBXSU4zMl9GSU5E
X0RBVEFXIGZpbmREYXRhOwotICAgIGlmICghZ2V0RmluZERhdGEocGF0aCwgZmluZERhdGEpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gZ2V0RmlsZVNpemVGcm9tRmluZERh
dGEoZmluZERhdGEsIHNpemUpOwotfQotCi1ib29sIGdldEZpbGVTaXplKFBsYXRmb3JtRmlsZUhh
bmRsZSBmaWxlSGFuZGxlLCBsb25nIGxvbmcmIHNpemUpCi17Ci0gICAgQllfSEFORExFX0ZJTEVf
SU5GT1JNQVRJT04gZmlsZUluZm9ybWF0aW9uOwotICAgIGlmICghOjpHZXRGaWxlSW5mb3JtYXRp
b25CeUhhbmRsZShmaWxlSGFuZGxlLCAmZmlsZUluZm9ybWF0aW9uKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgcmV0dXJuIGdldEZpbGVTaXplRnJvbUJ5SGFuZGxlRmlsZUluZm9ybWF0
aW9uU3RydWN0dXJlKGZpbGVJbmZvcm1hdGlvbiwgc2l6ZSk7Ci19Ci0KLU9wdGlvbmFsPFdhbGxU
aW1lPiBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAg
V0lOMzJfRklORF9EQVRBVyBmaW5kRGF0YTsKLSAgICBpZiAoIWdldEZpbmREYXRhKHBhdGgsIGZp
bmREYXRhKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIHRpbWVfdCB0aW1l
ID0gMDsKLSAgICBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZUZyb21GaW5kRGF0YShmaW5kRGF0YSwg
dGltZSk7Ci0gICAgcmV0dXJuIFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyh0aW1lKTsKLX0KLQot
T3B0aW9uYWw8V2FsbFRpbWU+IGdldEZpbGVDcmVhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRo
KQotewotICAgIFdJTjMyX0ZJTkRfREFUQVcgZmluZERhdGE7Ci0gICAgaWYgKCFnZXRGaW5kRGF0
YShwYXRoLCBmaW5kRGF0YSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICB0
aW1lX3QgdGltZSA9IDA7Ci0gICAgZ2V0RmlsZUNyZWF0aW9uVGltZUZyb21GaW5kRGF0YShmaW5k
RGF0YSwgdGltZSk7Ci0gICAgcmV0dXJuIFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyh0aW1lKTsK
LX0KLQotc3RhdGljIFN0cmluZyBnZXRGaW5hbFBhdGhOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCkK
LXsKLSAgICBhdXRvIGhhbmRsZSA9IG9wZW5GaWxlKHBhdGgsIEZpbGVPcGVuTW9kZTo6UmVhZCk7
Ci0gICAgaWYgKCFpc0hhbmRsZVZhbGlkKGhhbmRsZSkpCi0gICAgICAgIHJldHVybiBTdHJpbmco
KTsKLQotICAgIFZlY3RvcjxVQ2hhcj4gYnVmZmVyKE1BWF9QQVRIKTsKLSAgICBpZiAoOjpHZXRG
aW5hbFBhdGhOYW1lQnlIYW5kbGVXKGhhbmRsZSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUo
KSwgVk9MVU1FX05BTUVfTlQpID49IE1BWF9QQVRIKSB7Ci0gICAgICAgIGNsb3NlRmlsZShoYW5k
bGUpOwotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgfQotICAgIGNsb3NlRmlsZShoYW5k
bGUpOwotCi0gICAgYnVmZmVyLnNocmluayh3Y3NsZW4oYnVmZmVyLmRhdGEoKSkpOwotICAgIHJl
dHVybiBTdHJpbmc6OmFkb3B0KFdURk1vdmUoYnVmZmVyKSk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUg
Ym9vbCBpc1N5bWJvbGljTGluayhXSU4zMl9GSU5EX0RBVEFXIGZpbmREYXRhKQotewotICAgIHJl
dHVybiBmaW5kRGF0YS5kd0ZpbGVBdHRyaWJ1dGVzICYgRklMRV9BVFRSSUJVVEVfUkVQQVJTRV9Q
T0lOVCAmJiBmaW5kRGF0YS5kd1Jlc2VydmVkMCA9PSBJT19SRVBBUlNFX1RBR19TWU1MSU5LOwot
fQotCi1zdGF0aWMgRmlsZU1ldGFkYXRhOjpUeXBlIHRvRmlsZU1ldGFkYXRhVHlwZShXSU4zMl9G
SU5EX0RBVEFXIGZpbmREYXRhKQotewotICAgIGlmIChmaW5kRGF0YS5kd0ZpbGVBdHRyaWJ1dGVz
ICYgRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZKQotICAgICAgICByZXR1cm4gRmlsZU1ldGFkYXRh
OjpUeXBlOjpEaXJlY3Rvcnk7Ci0gICAgaWYgKGlzU3ltYm9saWNMaW5rKGZpbmREYXRhKSkKLSAg
ICAgICAgcmV0dXJuIEZpbGVNZXRhZGF0YTo6VHlwZTo6U3ltYm9saWNMaW5rOwotICAgIHJldHVy
biBGaWxlTWV0YWRhdGE6OlR5cGU6OkZpbGU7Ci19Ci0KLXN0YXRpYyBPcHRpb25hbDxGaWxlTWV0
YWRhdGE+IGZpbmREYXRhVG9GaWxlTWV0YWRhdGEoV0lOMzJfRklORF9EQVRBVyBmaW5kRGF0YSkK
LXsKLSAgICBsb25nIGxvbmcgbGVuZ3RoOwotICAgIGlmICghZ2V0RmlsZVNpemVGcm9tRmluZERh
dGEoZmluZERhdGEsIGxlbmd0aCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAg
ICB0aW1lX3QgbW9kaWZpY2F0aW9uVGltZTsKLSAgICBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZUZy
b21GaW5kRGF0YShmaW5kRGF0YSwgbW9kaWZpY2F0aW9uVGltZSk7Ci0KLSAgICByZXR1cm4gRmls
ZU1ldGFkYXRhIHsKLSAgICAgICAgV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKG1vZGlmaWNhdGlv
blRpbWUpLAotICAgICAgICBsZW5ndGgsCi0gICAgICAgIHN0YXRpY19jYXN0PGJvb2w+KGZpbmRE
YXRhLmR3RmlsZUF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9ISURERU4pLAotICAgICAgICB0
b0ZpbGVNZXRhZGF0YVR5cGUoZmluZERhdGEpCi0gICAgfTsKLX0KLQotT3B0aW9uYWw8RmlsZU1l
dGFkYXRhPiBmaWxlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIFdJTjMyX0ZJ
TkRfREFUQVcgZmluZERhdGE7Ci0gICAgaWYgKCFnZXRGaW5kRGF0YShwYXRoLCBmaW5kRGF0YSkp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICByZXR1cm4gZmluZERhdGFUb0Zp
bGVNZXRhZGF0YShmaW5kRGF0YSk7Ci19Ci0KLU9wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1l
dGFkYXRhRm9sbG93aW5nU3ltbGlua3MoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIFdJTjMy
X0ZJTkRfREFUQVcgZmluZERhdGE7Ci0gICAgaWYgKCFnZXRGaW5kRGF0YShwYXRoLCBmaW5kRGF0
YSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBpZiAoaXNTeW1ib2xpY0xp
bmsoZmluZERhdGEpKSB7Ci0gICAgICAgIFN0cmluZyB0YXJnZXRQYXRoID0gZ2V0RmluYWxQYXRo
TmFtZShwYXRoKTsKLSAgICAgICAgaWYgKHRhcmdldFBhdGguaXNOdWxsKCkpCi0gICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgICAgICBpZiAoIWdldEZpbmREYXRhKHRhcmdldFBh
dGgsIGZpbmREYXRhKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgfQot
Ci0gICAgcmV0dXJuIGZpbmREYXRhVG9GaWxlTWV0YWRhdGEoZmluZERhdGEpOwotfQotCi1ib29s
IGNyZWF0ZVN5bWJvbGljTGluayhjb25zdCBTdHJpbmcmIHRhcmdldFBhdGgsIGNvbnN0IFN0cmlu
ZyYgc3ltYm9saWNMaW5rUGF0aCkKLXsKLSAgICByZXR1cm4gITo6Q3JlYXRlU3ltYm9saWNMaW5r
VyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoc3ltYm9saWNMaW5rUGF0aCkuZGF0YSgpLCBz
dHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIodGFyZ2V0UGF0aCkuZGF0YSgpLCAwKTsKLX0KLQot
Ym9vbCBmaWxlRXhpc3RzKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBXSU4zMl9GSU5EX0RB
VEFXIGZpbmREYXRhOwotICAgIHJldHVybiBnZXRGaW5kRGF0YShwYXRoLCBmaW5kRGF0YSk7Ci19
Ci0KLWJvb2wgZGVsZXRlRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgU3RyaW5nIGZp
bGVuYW1lID0gcGF0aDsKLSAgICByZXR1cm4gISFEZWxldGVGaWxlVyhzdHJpbmdUb051bGxUZXJt
aW5hdGVkV0NoYXIoZmlsZW5hbWUpLmRhdGEoKSk7Ci19Ci0KLWJvb2wgZGVsZXRlRW1wdHlEaXJl
Y3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIFN0cmluZyBmaWxlbmFtZSA9IHBhdGg7
Ci0gICAgcmV0dXJuICEhUmVtb3ZlRGlyZWN0b3J5VyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0No
YXIoZmlsZW5hbWUpLmRhdGEoKSk7Ci19Ci0KLWJvb2wgbW92ZUZpbGUoY29uc3QgU3RyaW5nJiBv
bGRQYXRoLCBjb25zdCBTdHJpbmcmIG5ld1BhdGgpCi17Ci0gICAgU3RyaW5nIG9sZEZpbGVuYW1l
ID0gb2xkUGF0aDsKLSAgICBTdHJpbmcgbmV3RmlsZW5hbWUgPSBuZXdQYXRoOwotICAgIHJldHVy
biAhITo6TW92ZUZpbGVFeChzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIob2xkRmlsZW5hbWUp
LmRhdGEoKSwgc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKG5ld0ZpbGVuYW1lKS5kYXRhKCks
IE1PVkVGSUxFX0NPUFlfQUxMT1dFRCB8IE1PVkVGSUxFX1JFUExBQ0VfRVhJU1RJTkcpOwotfQot
Ci1TdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNvbnN0IFN0cmluZyYgcGF0aCwgY29u
c3QgU3RyaW5nJiBjb21wb25lbnQpCi17Ci0gICAgVmVjdG9yPFVDaGFyPiBidWZmZXIoTUFYX1BB
VEgpOwotCi0gICAgaWYgKHBhdGgubGVuZ3RoKCkgKyAxID4gYnVmZmVyLnNpemUoKSkKLSAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgU3RyaW5nVmlldyhwYXRoKS5nZXRDaGFyYWN0ZXJz
V2l0aFVwY29udmVydChidWZmZXIuZGF0YSgpKTsKLSAgICBidWZmZXJbcGF0aC5sZW5ndGgoKV0g
PSAnXDAnOwotCi0gICAgaWYgKCFQYXRoQXBwZW5kVyhidWZmZXIuZGF0YSgpLCBzdHJpbmdUb051
bGxUZXJtaW5hdGVkV0NoYXIoY29tcG9uZW50KS5kYXRhKCkpKQotICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7Ci0KLSAgICBidWZmZXIuc2hyaW5rKHdjc2xlbihidWZmZXIuZGF0YSgpKSk7Ci0KLSAg
ICByZXR1cm4gU3RyaW5nOjphZG9wdChXVEZNb3ZlKGJ1ZmZlcikpOwotfQotCi1TdHJpbmcgcGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhTdHJpbmdWaWV3IHBhdGgsIGNvbnN0IFZlY3RvcjxTdHJp
bmdWaWV3PiYgY29tcG9uZW50cykKLXsKLSAgICBTdHJpbmcgcmVzdWx0ID0gcGF0aC50b1N0cmlu
ZygpOwotICAgIGZvciAoYXV0byYgY29tcG9uZW50IDogY29tcG9uZW50cykKLSAgICAgICAgcmVz
dWx0ID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlc3VsdCwgY29tcG9uZW50LnRvU3RyaW5n
KCkpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLSNpZiAhVVNFKENGKQotCi1DU3RyaW5nIGZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgYXV0byB1
cGNvbnZlcnRlZENoYXJhY3RlcnMgPSBwYXRoLnVwY29udmVydGVkQ2hhcmFjdGVycygpOwotCi0g
ICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMgPSB1cGNvbnZlcnRlZENoYXJhY3RlcnM7Ci0gICAg
aW50IHNpemUgPSBXaWRlQ2hhclRvTXVsdGlCeXRlKENQX0FDUCwgMCwgY2hhcmFjdGVycywgcGF0
aC5sZW5ndGgoKSwgMCwgMCwgMCwgMCkgLSAxOwotCi0gICAgY2hhciogYnVmZmVyOwotICAgIENT
dHJpbmcgc3RyaW5nID0gQ1N0cmluZzo6bmV3VW5pbml0aWFsaXplZChzaXplLCBidWZmZXIpOwot
Ci0gICAgV2lkZUNoYXJUb011bHRpQnl0ZShDUF9BQ1AsIDAsIGNoYXJhY3RlcnMsIHBhdGgubGVu
Z3RoKCksIGJ1ZmZlciwgc2l6ZSwgMCwgMCk7Ci0KLSAgICByZXR1cm4gc3RyaW5nOwotfQotCi0j
ZW5kaWYgLy8gIVVTRShDRikKLQotYm9vbCBtYWtlQWxsRGlyZWN0b3JpZXMoY29uc3QgU3RyaW5n
JiBwYXRoKQotewotICAgIFN0cmluZyBmdWxsUGF0aCA9IHBhdGg7Ci0gICAgaWYgKFNIQ3JlYXRl
RGlyZWN0b3J5RXgoMCwgc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGZ1bGxQYXRoKS5kYXRh
KCksIDApICE9IEVSUk9SX1NVQ0NFU1MpIHsKLSAgICAgICAgRFdPUkQgZXJyb3IgPSBHZXRMYXN0
RXJyb3IoKTsKLSAgICAgICAgaWYgKGVycm9yICE9IEVSUk9SX0ZJTEVfRVhJU1RTICYmIGVycm9y
ICE9IEVSUk9SX0FMUkVBRFlfRVhJU1RTKSB7Ci0gICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxl
ZCB0byBjcmVhdGUgcGF0aCAlcyIsIHBhdGguYXNjaWkoKS5kYXRhKCkpOwotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi1T
dHJpbmcgaG9tZURpcmVjdG9yeVBhdGgoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAg
cmV0dXJuICIiOwotfQotCi1TdHJpbmcgcGF0aEdldEZpbGVOYW1lKGNvbnN0IFN0cmluZyYgcGF0
aCkKLXsKLSAgICByZXR1cm4gbnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5nKDo6UGF0aEZpbmRG
aWxlTmFtZShzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIocGF0aCkuZGF0YSgpKSk7Ci19Ci0K
LVN0cmluZyBkaXJlY3RvcnlOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBTdHJpbmcg
bmFtZSA9IHBhdGgubGVmdChwYXRoLmxlbmd0aCgpIC0gcGF0aEdldEZpbGVOYW1lKHBhdGgpLmxl
bmd0aCgpKTsKLSAgICBpZiAobmFtZS5jaGFyYWN0ZXJTdGFydGluZ0F0KG5hbWUubGVuZ3RoKCkg
LSAxKSA9PSAnXFwnKSB7Ci0gICAgICAgIC8vIFJlbW92ZSBhbnkgdHJhaWxpbmcgIlwiLgotICAg
ICAgICBuYW1lLnRydW5jYXRlKG5hbWUubGVuZ3RoKCkgLSAxKTsKLSAgICB9Ci0gICAgcmV0dXJu
IG5hbWU7Ci19Ci0KLXN0YXRpYyBTdHJpbmcgYnVuZGxlTmFtZSgpCi17Ci0gICAgc3RhdGljIGNv
bnN0IE5ldmVyRGVzdHJveWVkPFN0cmluZz4gbmFtZSA9IFtdIHsKLSAgICAgICAgU3RyaW5nIG5h
bWUgeyAiV2ViS2l0Il9zIH07Ci0KLSNpZiBVU0UoQ0YpCi0gICAgICAgIGlmIChDRkJ1bmRsZVJl
ZiBidW5kbGUgPSBDRkJ1bmRsZUdldE1haW5CdW5kbGUoKSkgewotICAgICAgICAgICAgaWYgKENG
VHlwZVJlZiBidW5kbGVFeGVjdXRhYmxlID0gQ0ZCdW5kbGVHZXRWYWx1ZUZvckluZm9EaWN0aW9u
YXJ5S2V5KGJ1bmRsZSwga0NGQnVuZGxlRXhlY3V0YWJsZUtleSkpIHsKLSAgICAgICAgICAgICAg
ICBpZiAoQ0ZHZXRUeXBlSUQoYnVuZGxlRXhlY3V0YWJsZSkgPT0gQ0ZTdHJpbmdHZXRUeXBlSUQo
KSkKLSAgICAgICAgICAgICAgICAgICAgbmFtZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZTdHJpbmdS
ZWY+KGJ1bmRsZUV4ZWN1dGFibGUpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0jZW5kaWYK
LQotICAgICAgICByZXR1cm4gbmFtZTsKLSAgICB9KCk7Ci0KLSAgICByZXR1cm4gbmFtZTsKLX0K
LQotc3RhdGljIFN0cmluZyBzdG9yYWdlRGlyZWN0b3J5KERXT1JEIHBhdGhJZGVudGlmaWVyKQot
ewotICAgIFZlY3RvcjxVQ2hhcj4gYnVmZmVyKE1BWF9QQVRIKTsKLSAgICBpZiAoRkFJTEVEKFNI
R2V0Rm9sZGVyUGF0aFcoMCwgcGF0aElkZW50aWZpZXIgfCBDU0lETF9GTEFHX0NSRUFURSwgMCwg
MCwgYnVmZmVyLmRhdGEoKSkpKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgYnVmZmVy
LnJlc2l6ZSh3Y3NsZW4oYnVmZmVyLmRhdGEoKSkpOwotICAgIFN0cmluZyBkaXJlY3RvcnkgPSBT
dHJpbmc6OmFkb3B0KFdURk1vdmUoYnVmZmVyKSk7Ci0KLSAgICBkaXJlY3RvcnkgPSBwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQoZGlyZWN0b3J5LCAiQXBwbGUgQ29tcHV0ZXJcXCIgKyBidW5kbGVO
YW1lKCkpOwotICAgIGlmICghbWFrZUFsbERpcmVjdG9yaWVzKGRpcmVjdG9yeSkpCi0gICAgICAg
IHJldHVybiBTdHJpbmcoKTsKLQotICAgIHJldHVybiBkaXJlY3Rvcnk7Ci19Ci0KLXN0YXRpYyBT
dHJpbmcgY2FjaGVkU3RvcmFnZURpcmVjdG9yeShEV09SRCBwYXRoSWRlbnRpZmllcikKLXsKLSAg
ICBzdGF0aWMgSGFzaE1hcDxEV09SRCwgU3RyaW5nPiBkaXJlY3RvcmllczsKLQotICAgIEhhc2hN
YXA8RFdPUkQsIFN0cmluZz46Oml0ZXJhdG9yIGl0ID0gZGlyZWN0b3JpZXMuZmluZChwYXRoSWRl
bnRpZmllcik7Ci0gICAgaWYgKGl0ICE9IGRpcmVjdG9yaWVzLmVuZCgpKQotICAgICAgICByZXR1
cm4gaXQtPnZhbHVlOwotCi0gICAgU3RyaW5nIGRpcmVjdG9yeSA9IHN0b3JhZ2VEaXJlY3Rvcnko
cGF0aElkZW50aWZpZXIpOwotICAgIGRpcmVjdG9yaWVzLmFkZChwYXRoSWRlbnRpZmllciwgZGly
ZWN0b3J5KTsKLQotICAgIHJldHVybiBkaXJlY3Rvcnk7Ci19Ci0KLXN0YXRpYyBTdHJpbmcgZ2Vu
ZXJhdGVUZW1wb3JhcnlQYXRoKGNvbnN0IEZ1bmN0aW9uPGJvb2woY29uc3QgU3RyaW5nJik+JiBh
Y3Rpb24pCi17Ci0gICAgd2NoYXJfdCB0ZW1wUGF0aFtNQVhfUEFUSF07Ci0gICAgaW50IHRlbXBQ
YXRoTGVuZ3RoID0gOjpHZXRUZW1wUGF0aFcoV1RGX0FSUkFZX0xFTkdUSCh0ZW1wUGF0aCksIHRl
bXBQYXRoKTsKLSAgICBpZiAodGVtcFBhdGhMZW5ndGggPD0gMCB8fCB0ZW1wUGF0aExlbmd0aCA+
IFdURl9BUlJBWV9MRU5HVEgodGVtcFBhdGgpKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0K
LSAgICBTdHJpbmcgcHJvcG9zZWRQYXRoOwotICAgIGRvIHsKLSAgICAgICAgd2NoYXJfdCB0ZW1w
RmlsZVtdID0gTCJYWFhYWFhYWC50bXAiOyAvLyBVc2UgOC4zIHN0eWxlIG5hbWUgKG1vcmUgY2hh
cmFjdGVycyBhcmVuJ3QgaGVscGZ1bCBkdWUgdG8gOC4zIHNob3J0IGZpbGUgbmFtZXMpCi0gICAg
ICAgIGNvbnN0IGludCByYW5kb21QYXJ0TGVuZ3RoID0gODsKLSAgICAgICAgY3J5cHRvZ3JhcGhp
Y2FsbHlSYW5kb21WYWx1ZXModGVtcEZpbGUsIHJhbmRvbVBhcnRMZW5ndGggKiBzaXplb2Yod2No
YXJfdCkpOwotCi0gICAgICAgIC8vIExpbWl0IHRvIHZhbGlkIGZpbGVzeXN0ZW0gY2hhcmFjdGVy
cywgYWxzbyBleGNsdWRpbmcgb3RoZXJzIHRoYXQgY291bGQgYmUgcHJvYmxlbWF0aWMsIGxpa2Ug
cHVuY3R1YXRpb24uCi0gICAgICAgIC8vIGRvbid0IGluY2x1ZGUgYm90aCB1cHBlciBhbmQgbG93
ZXJjYXNlIHNpbmNlIFdpbmRvd3MgZmlsZSBzeXN0ZW1zIGFyZSB0eXBpY2FsbHkgbm90IGNhc2Ug
c2Vuc2l0aXZlLgotICAgICAgICBjb25zdCBjaGFyIHZhbGlkQ2hhcnNbXSA9ICIwMTIzNDU2Nzg5
YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiOwotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8
IHJhbmRvbVBhcnRMZW5ndGg7ICsraSkKLSAgICAgICAgICAgIHRlbXBGaWxlW2ldID0gdmFsaWRD
aGFyc1t0ZW1wRmlsZVtpXSAlIChzaXplb2YodmFsaWRDaGFycykgLSAxKV07Ci0KLSAgICAgICAg
QVNTRVJUKHdjc2xlbih0ZW1wRmlsZSkgPT0gV1RGX0FSUkFZX0xFTkdUSCh0ZW1wRmlsZSkgLSAx
KTsKLQotICAgICAgICBwcm9wb3NlZFBhdGggPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobnVs
bFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5nKHRlbXBQYXRoKSwgbnVsbFRlcm1pbmF0ZWRXQ2hhclRv
U3RyaW5nKHRlbXBGaWxlKSk7Ci0gICAgICAgIGlmIChwcm9wb3NlZFBhdGguaXNFbXB0eSgpKQot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgfSB3aGlsZSAoIWFjdGlvbihwcm9wb3NlZFBhdGgpKTsK
LQotICAgIHJldHVybiBwcm9wb3NlZFBhdGg7Ci19Ci0KLVN0cmluZyBvcGVuVGVtcG9yYXJ5Rmls
ZShjb25zdCBTdHJpbmcmLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKLXsKLSAgICBoYW5k
bGUgPSBJTlZBTElEX0hBTkRMRV9WQUxVRTsKLQotICAgIFN0cmluZyBwcm9wb3NlZFBhdGggPSBn
ZW5lcmF0ZVRlbXBvcmFyeVBhdGgoWyZoYW5kbGVdKGNvbnN0IFN0cmluZyYgcHJvcG9zZWRQYXRo
KSB7Ci0gICAgICAgIC8vIHVzZSBDUkVBVEVfTkVXIHRvIGF2b2lkIG92ZXJ3cml0aW5nIGFuIGV4
aXN0aW5nIGZpbGUgd2l0aCB0aGUgc2FtZSBuYW1lCi0gICAgICAgIGhhbmRsZSA9IDo6Q3JlYXRl
RmlsZVcoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKHByb3Bvc2VkUGF0aCkuZGF0YSgpLCBH
RU5FUklDX1JFQUQgfCBHRU5FUklDX1dSSVRFLCAwLCAwLCBDUkVBVEVfTkVXLCBGSUxFX0FUVFJJ
QlVURV9OT1JNQUwsIDApOwotCi0gICAgICAgIHJldHVybiBpc0hhbmRsZVZhbGlkKGhhbmRsZSkg
fHwgR2V0TGFzdEVycm9yKCkgPT0gRVJST1JfQUxSRUFEWV9FWElTVFM7Ci0gICAgfSk7Ci0KLSAg
ICBpZiAoIWlzSGFuZGxlVmFsaWQoaGFuZGxlKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwot
Ci0gICAgcmV0dXJuIHByb3Bvc2VkUGF0aDsKLX0KLQotUGxhdGZvcm1GaWxlSGFuZGxlIG9wZW5G
aWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlIG1vZGUpCi17Ci0gICAgRFdPUkQg
ZGVzaXJlZEFjY2VzcyA9IDA7Ci0gICAgRFdPUkQgY3JlYXRpb25EaXNwb3NpdGlvbiA9IDA7Ci0g
ICAgRFdPUkQgc2hhcmVNb2RlID0gMDsKLSAgICBzd2l0Y2ggKG1vZGUpIHsKLSAgICBjYXNlIEZp
bGVPcGVuTW9kZTo6UmVhZDoKLSAgICAgICAgZGVzaXJlZEFjY2VzcyA9IEdFTkVSSUNfUkVBRDsK
LSAgICAgICAgY3JlYXRpb25EaXNwb3NpdGlvbiA9IE9QRU5fRVhJU1RJTkc7Ci0gICAgICAgIHNo
YXJlTW9kZSA9IEZJTEVfU0hBUkVfUkVBRDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGaWxl
T3Blbk1vZGU6OldyaXRlOgotICAgICAgICBkZXNpcmVkQWNjZXNzID0gR0VORVJJQ19XUklURTsK
LSAgICAgICAgY3JlYXRpb25EaXNwb3NpdGlvbiA9IENSRUFURV9BTFdBWVM7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0K
LQotICAgIFN0cmluZyBkZXN0aW5hdGlvbiA9IHBhdGg7Ci0gICAgcmV0dXJuIENyZWF0ZUZpbGUo
c3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGRlc3RpbmF0aW9uKS5kYXRhKCksIGRlc2lyZWRB
Y2Nlc3MsIHNoYXJlTW9kZSwgMCwgY3JlYXRpb25EaXNwb3NpdGlvbiwgRklMRV9BVFRSSUJVVEVf
Tk9STUFMLCAwKTsKLX0KLQotdm9pZCBjbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5k
bGUpCi17Ci0gICAgaWYgKGlzSGFuZGxlVmFsaWQoaGFuZGxlKSkgewotICAgICAgICA6OkNsb3Nl
SGFuZGxlKGhhbmRsZSk7Ci0gICAgICAgIGhhbmRsZSA9IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5k
bGU7Ci0gICAgfQotfQotCi1sb25nIGxvbmcgc2Vla0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhh
bmRsZSwgbG9uZyBsb25nIG9mZnNldCwgRmlsZVNlZWtPcmlnaW4gb3JpZ2luKQotewotICAgIERX
T1JEIG1vdmVNZXRob2QgPSBGSUxFX0JFR0lOOwotCi0gICAgaWYgKG9yaWdpbiA9PSBGaWxlU2Vl
a09yaWdpbjo6Q3VycmVudCkKLSAgICAgICAgbW92ZU1ldGhvZCA9IEZJTEVfQ1VSUkVOVDsKLSAg
ICBlbHNlIGlmIChvcmlnaW4gPT0gRmlsZVNlZWtPcmlnaW46OkVuZCkKLSAgICAgICAgbW92ZU1l
dGhvZCA9IEZJTEVfRU5EOwotCi0gICAgTEFSR0VfSU5URUdFUiBsYXJnZU9mZnNldDsKLSAgICBs
YXJnZU9mZnNldC5RdWFkUGFydCA9IG9mZnNldDsKLQotICAgIGxhcmdlT2Zmc2V0Lkxvd1BhcnQg
PSBTZXRGaWxlUG9pbnRlcihoYW5kbGUsIGxhcmdlT2Zmc2V0Lkxvd1BhcnQsICZsYXJnZU9mZnNl
dC5IaWdoUGFydCwgbW92ZU1ldGhvZCk7Ci0KLSAgICBpZiAobGFyZ2VPZmZzZXQuTG93UGFydCA9
PSBJTlZBTElEX1NFVF9GSUxFX1BPSU5URVIgJiYgR2V0TGFzdEVycm9yKCkgIT0gTk9fRVJST1Ip
Ci0gICAgICAgIHJldHVybiAtMTsKLQotICAgIHJldHVybiBsYXJnZU9mZnNldC5RdWFkUGFydDsK
LX0KLQotaW50IHdyaXRlVG9GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNvbnN0IGNo
YXIqIGRhdGEsIGludCBsZW5ndGgpCi17Ci0gICAgaWYgKCFpc0hhbmRsZVZhbGlkKGhhbmRsZSkp
Ci0gICAgICAgIHJldHVybiAtMTsKLQotICAgIERXT1JEIGJ5dGVzV3JpdHRlbjsKLSAgICBib29s
IHN1Y2Nlc3MgPSBXcml0ZUZpbGUoaGFuZGxlLCBkYXRhLCBsZW5ndGgsICZieXRlc1dyaXR0ZW4s
IDApOwotCi0gICAgaWYgKCFzdWNjZXNzKQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgcmV0dXJu
IHN0YXRpY19jYXN0PGludD4oYnl0ZXNXcml0dGVuKTsKLX0KLQotaW50IHJlYWRGcm9tRmlsZShQ
bGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQotewotICAg
IGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUpKQotICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICBE
V09SRCBieXRlc1JlYWQ7Ci0gICAgYm9vbCBzdWNjZXNzID0gOjpSZWFkRmlsZShoYW5kbGUsIGRh
dGEsIGxlbmd0aCwgJmJ5dGVzUmVhZCwgMCk7Ci0KLSAgICBpZiAoIXN1Y2Nlc3MpCi0gICAgICAg
IHJldHVybiAtMTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihieXRlc1JlYWQpOwotfQot
Ci1ib29sIGhhcmRMaW5rT3JDb3B5RmlsZShjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgU3Ry
aW5nJiBkZXN0aW5hdGlvbikKLXsKLSAgICByZXR1cm4gISE6OkNvcHlGaWxlKHN0cmluZ1RvTnVs
bFRlcm1pbmF0ZWRXQ2hhcihzb3VyY2UpLmRhdGEoKSwgc3RyaW5nVG9OdWxsVGVybWluYXRlZFdD
aGFyKGRlc3RpbmF0aW9uKS5kYXRhKCksIFRSVUUpOwotfQotCi1TdHJpbmcgbG9jYWxVc2VyU3Bl
Y2lmaWNTdG9yYWdlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gY2FjaGVkU3RvcmFnZURpcmVj
dG9yeShDU0lETF9MT0NBTF9BUFBEQVRBKTsKLX0KLQotU3RyaW5nIHJvYW1pbmdVc2VyU3BlY2lm
aWNTdG9yYWdlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gY2FjaGVkU3RvcmFnZURpcmVjdG9y
eShDU0lETF9BUFBEQVRBKTsKLX0KLQotVmVjdG9yPFN0cmluZz4gbGlzdERpcmVjdG9yeShjb25z
dCBTdHJpbmcmIGRpcmVjdG9yeSwgY29uc3QgU3RyaW5nJiBmaWx0ZXIpCi17Ci0gICAgVmVjdG9y
PFN0cmluZz4gZW50cmllczsKLQotICAgIFBhdGhXYWxrZXIgd2Fsa2VyKGRpcmVjdG9yeSwgZmls
dGVyKTsKLSAgICBpZiAoIXdhbGtlci5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiBlbnRyaWVz
OwotCi0gICAgZG8gewotICAgICAgICBpZiAod2Fsa2VyLmRhdGEoKS5kd0ZpbGVBdHRyaWJ1dGVz
ICYgRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZCi0gICAgICAgICAgICAmJiAoIXdjc2NtcCh3YWxr
ZXIuZGF0YSgpLmNGaWxlTmFtZSwgTCIuIikgfHwgIXdjc2NtcCh3YWxrZXIuZGF0YSgpLmNGaWxl
TmFtZSwgTCIuLiIpKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGVudHJpZXMu
YXBwZW5kKGRpcmVjdG9yeSArICJcXCIgKyByZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4o
d2Fsa2VyLmRhdGEoKS5jRmlsZU5hbWUpKTsKLSAgICB9IHdoaWxlICh3YWxrZXIuc3RlcCgpKTsK
LQotICAgIHJldHVybiBlbnRyaWVzOwotfQotCi1ib29sIGdldFZvbHVtZUZyZWVTcGFjZShjb25z
dCBTdHJpbmcmLCB1aW50NjRfdCYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1
cm4gZmFsc2U7Ci19Ci0KLU9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBD
U3RyaW5nJiBmc0ZpbGUpCi17Ci0gICAgYXV0byBoYW5kbGUgPSBvcGVuRmlsZShmc0ZpbGUuZGF0
YSgpLCBGaWxlT3Blbk1vZGU6OlJlYWQpOwotICAgIGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUp
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgQllfSEFORExFX0ZJTEVfSU5G
T1JNQVRJT04gZmlsZUluZm9ybWF0aW9uID0geyB9OwotICAgIGlmICghOjpHZXRGaWxlSW5mb3Jt
YXRpb25CeUhhbmRsZShoYW5kbGUsICZmaWxlSW5mb3JtYXRpb24pKSB7Ci0gICAgICAgIGNsb3Nl
RmlsZShoYW5kbGUpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIH0KLQotICAg
IGNsb3NlRmlsZShoYW5kbGUpOwotCi0gICAgcmV0dXJuIGZpbGVJbmZvcm1hdGlvbi5kd1ZvbHVt
ZVNlcmlhbE51bWJlcjsKLX0KLQotU3RyaW5nIHJlYWxQYXRoKGNvbnN0IFN0cmluZyYgZmlsZVBh
dGgpCi17Ci0gICAgcmV0dXJuIGdldEZpbmFsUGF0aE5hbWUoZmlsZVBhdGgpOwotfQotCi1TdHJp
bmcgY3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gZ2VuZXJhdGVUZW1w
b3JhcnlQYXRoKFtdKGNvbnN0IFN0cmluZyYgcHJvcG9zZWRQYXRoKSB7Ci0gICAgICAgIHJldHVy
biBtYWtlQWxsRGlyZWN0b3JpZXMocHJvcG9zZWRQYXRoKTsKLSAgICB9KTsKLX0KLQotYm9vbCBk
ZWxldGVOb25FbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmIGRpcmVjdG9yeVBhdGgpCi17Ci0g
ICAgU0hGSUxFT1BTVFJVQ1QgZGVsZXRlT3BlcmF0aW9uID0gewotICAgICAgICBudWxscHRyLAot
ICAgICAgICBGT19ERUxFVEUsCi0gICAgICAgIHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihk
aXJlY3RvcnlQYXRoKS5kYXRhKCksCi0gICAgICAgIEwiIiwKLSAgICAgICAgRk9GX05PQ09ORklS
TUFUSU9OIHwgRk9GX05PRVJST1JVSSB8IEZPRl9TSUxFTlQsCi0gICAgICAgIGZhbHNlLAotICAg
ICAgICAwLAotICAgICAgICBMIiIKLSAgICB9OwotICAgIHJldHVybiAhU0hGaWxlT3BlcmF0aW9u
KCZkZWxldGVPcGVyYXRpb24pOwotfQotCi19IC8vIG5hbWVzcGFjZSBGaWxlU3lzdGVtCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vUGF0aFdhbGtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGF0aFdhbGtl
ci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyMDQwN2IxY2ZlYTYyNGYzYTE1
NjlhOGZkNjc2OGE1ZGViZWQzNjMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BhdGhXYWxrZXIuY3BwCisr
KyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJQYXRoV2Fsa2VyLmgiCi0KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1QYXRoV2Fsa2VyOjpQYXRoV2Fsa2VyKGNvbnN0IFN0cmlu
ZyYgZGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIHBhdHRlcm4pCi17Ci0gICAgU3RyaW5nIHBhdGgg
PSBkaXJlY3RvcnkgKyAiXFwiICsgcGF0dGVybjsKLSAgICBtX2hhbmRsZSA9IDo6RmluZEZpcnN0
RmlsZVcoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKHBhdGgpLmRhdGEoKSwgJm1fZGF0YSk7
Ci19Ci0KLVBhdGhXYWxrZXI6On5QYXRoV2Fsa2VyKCkKLXsKLSAgICBpZiAoIWlzVmFsaWQoKSkK
LSAgICAgICAgcmV0dXJuOwotICAgIDo6RmluZENsb3NlKG1faGFuZGxlKTsKLX0KLQotYm9vbCBQ
YXRoV2Fsa2VyOjpzdGVwKCkKLXsKLSAgICByZXR1cm4gOjpGaW5kTmV4dEZpbGVXKG1faGFuZGxl
LCAmbV9kYXRhKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BhdGhXYWxrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9QYXRoV2Fsa2VyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZj
NTlkNjczMTgxMWI4Y2ExNTg3YTRhMTJhN2RhMWUxYTE1OTNkODQuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L1BhdGhXYWxrZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTEtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlIDxXaW5kb3dzLmg+Ci0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNp
bmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFz
cyBQYXRoV2Fsa2VyIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQYXRoV2Fsa2VyKTsKLXB1
YmxpYzoKLSAgICBQYXRoV2Fsa2VyKGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3RvcnksIGNvbnN0
IFdURjo6U3RyaW5nJiBwYXR0ZXJuKTsKLSAgICB+UGF0aFdhbGtlcigpOwotCi0gICAgYm9vbCBp
c1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9oYW5kbGUgIT0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7
IH0KLSAgICBjb25zdCBXSU4zMl9GSU5EX0RBVEFXJiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9k
YXRhOyB9Ci0KLSAgICBib29sIHN0ZXAoKTsKLQotcHJpdmF0ZToKLSAgICBIQU5ETEUgbV9oYW5k
bGU7Ci0gICAgV0lOMzJfRklORF9EQVRBVyBtX2RhdGE7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9w
dXBNZW51REIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVu
dURCLmNwcAppbmRleCA5ZTZlNGM1MmQ3Yjk4MzhhMWYwN2JkZDU5ZjQwOWQ4MTY1ZmU1NjY2Li5l
NTczMGIzMGNjZjNmMDNlZWZkZmY5YTMzMWMwOGVkMGUyMmU1OGJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51REIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVEQi5jcHAKQEAgLTI1LDkgKzI1
LDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTZWFyY2hQb3B1cE1lbnVEQi5o
IgogCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIlNRTGl0ZUZpbGVTeXN0ZW0u
aCIKICNpbmNsdWRlICJTUUxpdGVUcmFuc2FjdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lz
dGVtLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZS5jcHAKaW5kZXggNzZjOWM1Yzc4ZDU2ZDNlOGQ5N2Q0MjFmNGRmYWE0YWIxYmQ5
ZWNjMC4uYzRmYTM1NjcwYjk1NDc2NzZiN2M0ZmI5YTgxMmIzZDZlNmVjOTllOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCkBAIC0yNSw3ICsyNSw2IEBACiAjaW5j
bHVkZSAiQ29udHJvbFN0YXRlcy5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAi
RmlsZUxpc3QuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiRmxvYXRDb252
ZXJzaW9uLmgiCiAjaW5jbHVkZSAiRmxvYXRSb3VuZGVkUmVjdC5oIgogI2luY2x1ZGUgIkZvY3Vz
Q29udHJvbGxlci5oIgpAQCAtNDUsNiArNDQsNyBAQAogI2luY2x1ZGUgIlNwaW5CdXR0b25FbGVt
ZW50LmgiCiAjaW5jbHVkZSAiU3RyaW5nVHJ1bmNhdG9yLmgiCiAjaW5jbHVkZSAiVGV4dENvbnRy
b2xJbm5lckVsZW1lbnRzLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogI2lmIEVOQUJMRShNRVRFUl9FTEVNRU5UKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lR3RrLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUd0ay5jcHAKaW5kZXggYjY5NmVhYzhm
YjEwNWUyYjcwOTYyMDY5NDczOTczZTEzZWI5ZmI2Ni4uYjI1OTY2Y2I1MzMyNzY4NTllZTgxOTY3
MWFkMjVmZGY3N2UwM2VhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhl
bWVHdGsuY3BwCkBAIC0yNyw3ICsyNyw2IEBACiAKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRz
LmgiCiAjaW5jbHVkZSAiRmlsZUxpc3QuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5j
bHVkZSAiRmxvYXRSb3VuZGVkUmVjdC5oIgogI2luY2x1ZGUgIkZvbnREZXNjcmlwdGlvbi5oIgog
I2luY2x1ZGUgIkdSZWZQdHJHdGsuaCIKQEAgLTU1LDYgKzU0LDcgQEAKICNpbmNsdWRlIDxnZGsv
Z2RrLmg+CiAjaW5jbHVkZSA8Z2xpYi5oPgogI2luY2x1ZGUgPGd0ay9ndGsuaD4KKyNpbmNsdWRl
IDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KICNpbmNs
dWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHAKaW5kZXggZWVi
OTk4NWU2MmY1YzlhMzQ4MjQzZThkZGU5ZWNjYzBhOWJkYmZiNS4uMjE5NjU3ZTFmMjRhYWJhMDU4
MjVhMmE2MmIwODA0YzdmYmIzZjMzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWVXaW4uY3BwCkBAIC0yNCw3ICsyNCw2IEBACiAKICNpbmNsdWRlICJDU1NWYWx1ZUtl
eXdvcmRzLmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIK
ICNpbmNsdWRlICJGb250TWV0cmljcy5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAi
RnJhbWVTZWxlY3Rpb24uaCIKQEAgLTM4LDYgKzM3LDcgQEAKICNpbmNsdWRlICJTeXN0ZW1JbmZv
LmgiCiAjaW5jbHVkZSAiVXNlckFnZW50U3R5bGVTaGVldHMuaCIKICNpbmNsdWRlICJXZWJDb3Jl
QnVuZGxlV2luLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYv
U29mdExpbmtpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0
YWJhc2UuY3BwCmluZGV4IDYwZWViOGNjMmMwZjQxMmNhMmJjZWQ5ODJhZTkyN2ZmYjFkNmE0Njgu
LjFhZjQzNzg4ZmZmYmFhYTkxMmUxYWQ5N2JiZDk4YjE3MmRlM2YwZTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0
aW9uRGF0YWJhc2UuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCiAKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgog
I2luY2x1ZGUgIlJlZ2lzdHJhdGlvblN0b3JlLmgiCiAjaW5jbHVkZSAiU1FMaXRlRGF0YWJhc2Uu
aCIKQEAgLTM5LDYgKzM4LDcgQEAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1
ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZENv
cGllci5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL01haW5U
aHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYv
U2NvcGUuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQ
ZXJzaXN0ZW50U3RvcmFnZS5jcHAKaW5kZXggM2RkNzgxYjhkYzcwODE5ZmJmZTE3MjA2MDkzOWE1
NDcxNGM4YzIxOS4uYzBlOGNkYWUzYjA1NDg2YTAxNDgzNGFmM2E3NjQyN2Y5NmYyMmFlYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50
U3RvcmFnZS5jcHAKQEAgLTMxLDkgKzMxLDkgQEAKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWVtb3J5U3RvcmUuaCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVNb25pdG9yLmg+Ci0jaW5jbHVkZSA8V2Vi
Q29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9LZXllZENvZGluZy5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0u
aD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRh
c2tCbG9iLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Js
b2IuaAppbmRleCA3NWQzMWE2MWE0Zjc0MmYzODdmOWI1ZWEyZDRmNjAyOTQzNjEyODdjLi5lYjc5
NDQ3MjU5NWI1NmVkZDYyMGJlMjU3NmVkMjE4MTgwNWQwZDg1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuaApAQCAtMzMsNyArMzMs
NyBAQAogCiAjaW5jbHVkZSAiTmV0d29ya0RhdGFUYXNrLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9G
aWxlU3RyZWFtQ2xpZW50Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CisjaW5j
bHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXN5
bmNGaWxlU3RyZWFtOwpAQCAtMTEzLDcgKzExMyw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQg
bV9zaXplSXRlbUNvdW50IHsgMCB9OwogICAgIHVuc2lnbmVkIG1fcmVhZEl0ZW1Db3VudCB7IDAg
fTsKICAgICBib29sIG1fZmlsZU9wZW5lZCB7IGZhbHNlIH07Ci0gICAgV2ViQ29yZTo6RmlsZVN5
c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIG1fZG93bmxvYWRGaWxlIHsgV2ViQ29yZTo6RmlsZVN5
c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSB9OworICAgIEZpbGVTeXN0ZW06OlBsYXRm
b3JtRmlsZUhhbmRsZSBtX2Rvd25sb2FkRmlsZSB7IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9y
bUZpbGVIYW5kbGUgfTsKIAogICAgIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFGaWxl
UmVmZXJlbmNlPj4gbV9maWxlUmVmZXJlbmNlczsKICAgICBSZWZQdHI8U2FuZGJveEV4dGVuc2lv
bj4gbV9zYW5kYm94RXh0ZW5zaW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCAxOTAwZWZlMDU0MDg1NWRjNTI5MjI1MjI2ZTE3MWFk
ZGYxZDBkNjhlLi5iNDczOGNkZTgxMjI3Njg5M2Q0ZjRlM2M4ZTkyZWY5OGY4YzEwNzY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAt
OTAzLDcgKzkwMyw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldENhY2hlTW9kZWwoQ2FjaGVN
b2RlbCBjYWNoZU1vZGVsKQogICAgIHVuc2lnbmVkIHVybENhY2hlTWVtb3J5Q2FwYWNpdHkgPSAw
OwogICAgIHVpbnQ2NF90IHVybENhY2hlRGlza0NhcGFjaXR5ID0gMDsKICAgICB1aW50NjRfdCBk
aXNrRnJlZVNpemUgPSAwOwotICAgIGlmIChXZWJDb3JlOjpGaWxlU3lzdGVtOjpnZXRWb2x1bWVG
cmVlU3BhY2UobV9kaXNrQ2FjaGVEaXJlY3RvcnksIGRpc2tGcmVlU2l6ZSkpIHsKKyAgICBpZiAo
RmlsZVN5c3RlbTo6Z2V0Vm9sdW1lRnJlZVNwYWNlKG1fZGlza0NhY2hlRGlyZWN0b3J5LCBkaXNr
RnJlZVNpemUpKSB7CiAgICAgICAgIC8vIEFzIGEgZnVkZ2UgZmFjdG9yLCB1c2UgMTAwMCBpbnN0
ZWFkIG9mIDEwMjQsIGluIGNhc2UgdGhlIHJlcG9ydGVkIGJ5dGUKICAgICAgICAgLy8gY291bnQg
ZG9lc24ndCBhbGlnbiBleGFjdGx5IHRvIGEgbWVnYWJ5dGUgYm91bmRhcnkuCiAgICAgICAgIGRp
c2tGcmVlU2l6ZSAvPSBLQiAqIDEwMDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKaW5kZXggZjE3ZmQ5Zjky
YmU1ZDJhNTA1NDVjMDc5OWUzN2Q5YWUwY2YzZWZiZC4uMWUzZTExYjE5OGMzNTI3MjBhMDNmNTc5
ZDI5OTQ3ZjliZWVmZGI1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcApAQCAtNTIsNyArNTIsNyBAQCBT
dHJpbmcgRW5naW5lOjpjYWNoZXNSb290UGF0aChjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4m
IG9yaWdpbikKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIEtleSBrZXkob3JpZ2luLnRvcE9y
aWdpbi50b1N0cmluZygpLCBvcmlnaW4uY2xpZW50T3JpZ2luLnRvU3RyaW5nKCksIHsgfSwgeyB9
LCBzYWx0KCkpOwotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQocm9vdFBhdGgoKSwga2V5Lmhhc2hBc1N0cmluZygpKTsKKyAgICByZXR1cm4g
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJvb3RQYXRoKCksIGtleS5oYXNo
QXNTdHJpbmcoKSk7CiB9CiAKIEVuZ2luZTo6fkVuZ2luZSgpCkBAIC0yOTEsOSArMjkxLDkgQEAg
dm9pZCBFbmdpbmU6OmluaXRpYWxpemUoQ29tcGxldGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spCiAg
ICAgaWYgKCFzaG91bGRDb21wdXRlU2FsdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3RyaW5n
IHNhbHRQYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KG1fcm9vdFBhdGgsICJzYWx0Il9zKTsKKyAgICBTdHJpbmcgc2FsdFBhdGggPSBGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9yb290UGF0aCwgInNhbHQiX3MpOwogICAgIG1f
aW9RdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIHNh
bHRQYXRoID0gV1RGTW92ZShzYWx0UGF0aCldICgpIG11dGFibGUgewotICAgICAgICBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMobV9yb290UGF0aCk7CisgICAgICAgIEZp
bGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhtX3Jvb3RQYXRoKTsKICAgICAgICAgUnVuTG9v
cDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBz
YWx0ID0gcmVhZE9yTWFrZVNhbHQoc2FsdFBhdGgpXSgpIG11dGFibGUgewogICAgICAgICAgICAg
aWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0zODMsOSArMzgzLDkg
QEAgdm9pZCBFbmdpbmU6OndyaXRlRmlsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBOZXR3b3Jr
Q2FjaGU6OkRhdGEmJiBkYXRhLCBXZWJDb3IKICAgICBtX3BlbmRpbmdXcml0ZUNhbGxiYWNrcy5h
ZGQoKyttX3BlbmRpbmdDYWxsYmFja3NDb3VudGVyLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAg
bV9pb1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwg
aWRlbnRpZmllciA9IG1fcGVuZGluZ0NhbGxiYWNrc0NvdW50ZXIsIGRhdGEgPSBXVEZNb3ZlKGRh
dGEpLCBmaWxlbmFtZSA9IGZpbGVuYW1lLmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUgewogCi0g
ICAgICAgIFN0cmluZyBkaXJlY3RvcnlQYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGlyZWN0
b3J5TmFtZShmaWxlbmFtZSk7Ci0gICAgICAgIGlmICghV2ViQ29yZTo6RmlsZVN5c3RlbTo6Zmls
ZUV4aXN0cyhkaXJlY3RvcnlQYXRoKSkKLSAgICAgICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06
Om1ha2VBbGxEaXJlY3RvcmllcyhkaXJlY3RvcnlQYXRoKTsKKyAgICAgICAgU3RyaW5nIGRpcmVj
dG9yeVBhdGggPSBGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKGZpbGVuYW1lKTsKKyAgICAgICAg
aWYgKCFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGRpcmVjdG9yeVBhdGgpKQorICAgICAgICAgICAg
RmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKGRpcmVjdG9yeVBhdGgpOwogCiAgICAgICAg
IGF1dG8gY2hhbm5lbCA9IElPQ2hhbm5lbDo6b3BlbihmaWxlbmFtZSwgSU9DaGFubmVsOjpUeXBl
OjpDcmVhdGUpOwogICAgICAgICBjaGFubmVsLT53cml0ZSgwLCBkYXRhLCBudWxscHRyLCBbdGhp
cywgd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgaWRlbnRpZmllcl0oaW50IGVycm9yKSBt
dXRhYmxlIHsKQEAgLTQ0NSw3ICs0NDUsNyBAQCB2b2lkIEVuZ2luZTo6cmVtb3ZlRmlsZShjb25z
dCBTdHJpbmcmIGZpbGVuYW1lKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2lvUXVldWUtPmRp
c3BhdGNoKFtmaWxlbmFtZSA9IGZpbGVuYW1lLmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUgewot
ICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGZpbGVuYW1lKTsKKyAgICAg
ICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShmaWxlbmFtZSk7CiAgICAgfSk7CiB9CiAKQEAgLTQ4
Nyw4ICs0ODcsOCBAQCB2b2lkIEVuZ2luZTo6ZmV0Y2hFbnRyaWVzKGJvb2wgc2hvdWxkQ29tcHV0
ZVNpemUsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChWZQogICAgIH0KIAogICAgIGF1dG8g
dGFza0NvdW50ZXIgPSBSZWFkT3JpZ2luc1Rhc2tDb3VudGVyOjpjcmVhdGUoV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwotICAgIGZvciAoYXV0byYgZm9sZGVyUGF0aCA6IFdlYkNvcmU6OkZp
bGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobV9yb290UGF0aCwgIioiKSkgewotICAgICAgICBpZiAo
IVdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVJc0RpcmVjdG9yeShmb2xkZXJQYXRoLCBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpObykpCisgICAgZm9yIChh
dXRvJiBmb2xkZXJQYXRoIDogRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShtX3Jvb3RQYXRoLCAi
KiIpKSB7CisgICAgICAgIGlmICghRmlsZVN5c3RlbTo6ZmlsZUlzRGlyZWN0b3J5KGZvbGRlclBh
dGgsIEZpbGVTeXN0ZW06OlNob3VsZEZvbGxvd1N5bWJvbGljTGlua3M6Ok5vKSkKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICBDYWNoZXM6OnJldHJpZXZlT3JpZ2luRnJvbURpcmVjdG9y
eShmb2xkZXJQYXRoLCAqbV9pb1F1ZXVlLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBzaG91bGRDb21wdXRlU2l6ZSwgdGFza0NvdW50ZXIgPSB0YXNrQ291bnRlci5jb3B5UmVmKCld
IChhdXRvJiYgb3JpZ2luKSBtdXRhYmxlIHsKICAgICAgICAgICAgIEFTU0VSVChSdW5Mb29wOjpp
c01haW4oKSk7CkBAIC01MzEsOCArNTMxLDggQEAgdm9pZCBFbmdpbmU6OmNsZWFyQWxsQ2FjaGVz
RnJvbURpc2soQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGUKICAg
ICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgbV9pb1F1ZXVlLT5kaXNwYXRjaChb
cGF0aCA9IG1fcm9vdFBhdGguaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgIGZvciAoYXV0byYg
ZmlsZW5hbWUgOiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KHBhdGgsICIqIikp
IHsKLSAgICAgICAgICAgIGlmIChXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlSXNEaXJlY3Rvcnko
ZmlsZW5hbWUsIFdlYkNvcmU6OkZpbGVTeXN0ZW06OlNob3VsZEZvbGxvd1N5bWJvbGljTGlua3M6
Ok5vKSkKKyAgICAgICAgZm9yIChhdXRvJiBmaWxlbmFtZSA6IEZpbGVTeXN0ZW06Omxpc3REaXJl
Y3RvcnkocGF0aCwgIioiKSkgeworICAgICAgICAgICAgaWYgKEZpbGVTeXN0ZW06OmZpbGVJc0Rp
cmVjdG9yeShmaWxlbmFtZSwgRmlsZVN5c3RlbTo6U2hvdWxkRm9sbG93U3ltYm9saWNMaW5rczo6
Tm8pKQogICAgICAgICAgICAgICAgIGRlbGV0ZURpcmVjdG9yeVJlY3Vyc2l2ZWx5KGZpbGVuYW1l
KTsKICAgICAgICAgfQogICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwpAQCAtNTYyLDggKzU2Miw4IEBAIHZvaWQgRW5naW5lOjpjbGVh
ckNhY2hlc0Zvck9yaWdpbkZyb21EaXNrKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YSYgb3JpCiAKICAgICBhdXRvIGNhbGxiYWNrQWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRv
cjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIAotICAgIGZvciAoYXV0byYg
Zm9sZGVyUGF0aCA6IFdlYkNvcmU6OkZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobV9yb290UGF0
aCwgIioiKSkgewotICAgICAgICBpZiAoIVdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVJc0RpcmVj
dG9yeShmb2xkZXJQYXRoLCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpTaG91bGRGb2xsb3dTeW1ib2xp
Y0xpbmtzOjpObykpCisgICAgZm9yIChhdXRvJiBmb2xkZXJQYXRoIDogRmlsZVN5c3RlbTo6bGlz
dERpcmVjdG9yeShtX3Jvb3RQYXRoLCAiKiIpKSB7CisgICAgICAgIGlmICghRmlsZVN5c3RlbTo6
ZmlsZUlzRGlyZWN0b3J5KGZvbGRlclBhdGgsIEZpbGVTeXN0ZW06OlNob3VsZEZvbGxvd1N5bWJv
bGljTGlua3M6Ok5vKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBDYWNoZXM6OnJl
dHJpZXZlT3JpZ2luRnJvbURpcmVjdG9yeShmb2xkZXJQYXRoLCAqbV9pb1F1ZXVlLCBbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBvcmlnaW4sIGNhbGxiYWNrQWdncmVnYXRv
ciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCksIGZvbGRlclBhdGhdIChPcHRpb25hbDxX
ZWJDb3JlOjpDbGllbnRPcmlnaW4+JiYgZm9sZGVyT3JpZ2luKSBtdXRhYmxlIHsKICAgICAgICAg
ICAgIGlmICghZm9sZGVyT3JpZ2luKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwCmluZGV4
IDE5MTM0NzBjZGQyMjBjZTNiZTk3NWRmOTkwMGVmMzUwZDA3MTc2M2MuLjFmNjA4Y2Y1MjVmOTk2
YjI0ZWE0MTEzNjAwZThlMjljYjI4N2MyN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5j
cHAKQEAgLTQyLDEyICs0MiwxMiBAQCB1c2luZyBuYW1lc3BhY2UgTmV0d29ya0NhY2hlOwogCiBz
dGF0aWMgaW5saW5lIFN0cmluZyBjYWNoZXNMaXN0RmlsZW5hbWUoY29uc3QgU3RyaW5nJiBjYWNo
ZXNSb290UGF0aCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KGNhY2hlc1Jvb3RQYXRoLCAiY2FjaGVzbGlzdCJfcyk7CisgICAgcmV0
dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChjYWNoZXNSb290UGF0aCwg
ImNhY2hlc2xpc3QiX3MpOwogfQogCiBzdGF0aWMgaW5saW5lIFN0cmluZyBjYWNoZXNPcmlnaW5G
aWxlbmFtZShjb25zdCBTdHJpbmcmIGNhY2hlc1Jvb3RQYXRoKQogewotICAgIHJldHVybiBXZWJD
b3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY2FjaGVzUm9vdFBhdGgs
ICJvcmlnaW4iX3MpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQoY2FjaGVzUm9vdFBhdGgsICJvcmlnaW4iX3MpOwogfQogCiBDYWNoZXM6On5DYWNoZXMo
KQpAQCAtNTgsNyArNTgsNyBAQCBDYWNoZXM6On5DYWNoZXMoKQogdm9pZCBDYWNoZXM6OnJldHJp
ZXZlT3JpZ2luRnJvbURpcmVjdG9yeShjb25zdCBTdHJpbmcmIGZvbGRlclBhdGgsIFdvcmtRdWV1
ZSYgcXVldWUsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3JlOjpD
bGllbnRPcmlnaW4+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIHF1ZXVlLmRpc3Bh
dGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBmaWxl
bmFtZSA9IGNhY2hlc09yaWdpbkZpbGVuYW1lKGZvbGRlclBhdGgpXSgpIG11dGFibGUgewotICAg
ICAgICBpZiAoIVdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZmlsZW5hbWUpKSB7Cisg
ICAgICAgIGlmICghRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhmaWxlbmFtZSkpIHsKICAgICAgICAg
ICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihXVEY6Om51bGxvcHQpOwogICAgICAgICAgICAgfSk7CkBAIC00MDgsNyArNDA4
LDcgQEAgdm9pZCBDYWNoZXM6OnJlYWRDYWNoZXNGcm9tRGlzayhXVEY6OkZ1bmN0aW9uPHZvaWQo
RXhwZWN0ZWQ8VmVjdG9yPENhY2hlPiwgRXJyb3IKICAgICB9CiAKICAgICBhdXRvIGZpbGVuYW1l
ID0gY2FjaGVzTGlzdEZpbGVuYW1lKG1fcm9vdFBhdGgpOwotICAgIGlmICghV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6ZmlsZUV4aXN0cyhmaWxlbmFtZSkpIHsKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmZp
bGVFeGlzdHMoZmlsZW5hbWUpKSB7CiAgICAgICAgIGNhbGxiYWNrKFZlY3RvcjxDYWNoZT4geyB9
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAppbmRleCA5ZGI3ZDc2OGM2M2NmOGI0ZjVi
YjczZWJmYzYwODQ4YzhjNTgxOTY5Li4xMjQwZmI0NWQyNDA4ZmRkYjUwNTYyNWQwYjJhZmEzODdj
MjU0ZjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGUuY3BwCkBAIC0zMSwxMyArMzEsMTMgQEAKICNpbmNsdWRlICJOZXR3b3JrQ2Fj
aGVTdGF0aXN0aWNzLmgiCiAjaW5jbHVkZSAiTmV0d29ya0NhY2hlU3RvcmFnZS5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvQ2FjaGVWYWxpZGF0aW9uLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lz
dGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVFRQSGVhZGVyTmFtZXMuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0xvd1Bvd2VyTW9kZU5vdGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3Jr
U3RvcmFnZVNlc3Npb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U2hhcmVkQnVmZmVyLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3
dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1
ZGUgPHd0Zi9SdW5Mb29wLmg+CkBAIC01MCw3ICs1MCw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsK
IG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUgewogCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTo6Rmls
ZVN5c3RlbTsKK3VzaW5nIG5hbWVzcGFjZSBXVEY6OkZpbGVTeXN0ZW07CiAKIHN0YXRpYyBjb25z
dCBBdG9taWNTdHJpbmcmIHJlc291cmNlVHlwZSgpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUJsb2JTdG9yYWdlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQmxvYlN0b3JhZ2Uu
Y3BwCmluZGV4IGY3M2M1MGRhMTk0NzkzMzY1ZDZmNTFlMDYxNDFiNTIzNzI3ZTcxZWUuLjk1Mzhk
YTY0MWI0Mjc0MDAyYjI3OWFkYWE4N2MxNTQyZDM2YTAyN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQmxvYlN0b3JhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQmxvYlN0
b3JhZ2UuY3BwCkBAIC0yOCw4ICsyOCw4IEBACiAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5j
bHVkZSAiTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5
c3RlbS5oPgogI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4K
ICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9TSEExLmg+CiAKQEAgLTU3
LDE1ICs1NywxNSBAQCB2b2lkIEJsb2JTdG9yYWdlOjpzeW5jaHJvbml6ZSgpCiB7CiAgICAgQVNT
RVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjptYWtl
QWxsRGlyZWN0b3JpZXMoYmxvYkRpcmVjdG9yeVBhdGgoKSk7CisgICAgRmlsZVN5c3RlbTo6bWFr
ZUFsbERpcmVjdG9yaWVzKGJsb2JEaXJlY3RvcnlQYXRoKCkpOwogCiAgICAgbV9hcHByb3hpbWF0
ZVNpemUgPSAwOwogICAgIGF1dG8gYmxvYkRpcmVjdG9yeSA9IGJsb2JEaXJlY3RvcnlQYXRoKCk7
CiAgICAgdHJhdmVyc2VEaXJlY3RvcnkoYmxvYkRpcmVjdG9yeSwgW3RoaXMsICZibG9iRGlyZWN0
b3J5XShjb25zdCBTdHJpbmcmIG5hbWUsIERpcmVjdG9yeUVudHJ5VHlwZSB0eXBlKSB7CiAgICAg
ICAgIGlmICh0eXBlICE9IERpcmVjdG9yeUVudHJ5VHlwZTo6RmlsZSkKICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgYXV0byBwYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KGJsb2JEaXJlY3RvcnksIG5hbWUpOwotICAgICAgICBhdXRvIGZpbGVQ
YXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgp
OworICAgICAgICBhdXRvIHBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoYmxvYkRpcmVjdG9yeSwgbmFtZSk7CisgICAgICAgIGF1dG8gZmlsZVBhdGggPSBGaWxlU3lz
dGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAgICAgICAgIHN0cnVjdCBzdGF0
IHN0YXQ7CiAgICAgICAgIDo6c3RhdChmaWxlUGF0aC5kYXRhKCksICZzdGF0KTsKICAgICAgICAg
Ly8gTm8gY2xpZW50cyBsZWZ0IGZvciB0aGlzIGJsb2IuCkBAIC04MSw3ICs4MSw3IEBAIHZvaWQg
QmxvYlN0b3JhZ2U6OnN5bmNocm9uaXplKCkKIFN0cmluZyBCbG9iU3RvcmFnZTo6YmxvYlBhdGhG
b3JIYXNoKGNvbnN0IFNIQTE6OkRpZ2VzdCYgaGFzaCkgY29uc3QKIHsKICAgICBhdXRvIGhhc2hB
c1N0cmluZyA9IFNIQTE6OmhleERpZ2VzdChoYXNoKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGJsb2JEaXJlY3RvcnlQYXRoKCksIFN0
cmluZzo6ZnJvbVVURjgoaGFzaEFzU3RyaW5nKSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChibG9iRGlyZWN0b3J5UGF0aCgpLCBTdHJpbmc6OmZyb21V
VEY4KGhhc2hBc1N0cmluZykpOwogfQogCiBCbG9iU3RvcmFnZTo6QmxvYiBCbG9iU3RvcmFnZTo6
YWRkKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgRGF0YSYgZGF0YSkKQEAgLTkzLDggKzkzLDgg
QEAgQmxvYlN0b3JhZ2U6OkJsb2IgQmxvYlN0b3JhZ2U6OmFkZChjb25zdCBTdHJpbmcmIHBhdGgs
IGNvbnN0IERhdGEmIGRhdGEpCiAgICAgaWYgKGRhdGEuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4geyBkYXRhLCBoYXNoIH07CiAKLSAgICBhdXRvIGJsb2JQYXRoID0gV2ViQ29yZTo6RmlsZVN5
c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGJsb2JQYXRoRm9ySGFzaChoYXNoKSk7Ci0g
ICAgYXV0byBsaW5rUGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihwYXRoKTsKKyAgICBhdXRvIGJsb2JQYXRoID0gRmlsZVN5c3RlbTo6ZmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKGJsb2JQYXRoRm9ySGFzaChoYXNoKSk7CisgICAgYXV0byBsaW5rUGF0
aCA9IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKICAgICB1bmxp
bmsobGlua1BhdGguZGF0YSgpKTsKIAogICAgIGJvb2wgYmxvYkV4aXN0cyA9IGFjY2VzcyhibG9i
UGF0aC5kYXRhKCksIEZfT0spICE9IC0xOwpAQCAtMTI3LDcgKzEyNyw3IEBAIEJsb2JTdG9yYWdl
OjpCbG9iIEJsb2JTdG9yYWdlOjpnZXQoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIEFTU0VS
VCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgYXV0byBsaW5rUGF0aCA9IFdlYkNvcmU6OkZp
bGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKKyAgICBhdXRvIGxpbmtQ
YXRoID0gRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwogICAgIGF1
dG8gZGF0YSA9IG1hcEZpbGUobGlua1BhdGguZGF0YSgpKTsKIAogICAgIHJldHVybiB7IGRhdGEs
IGNvbXB1dGVTSEExKGRhdGEsIG1fc2FsdCkgfTsKQEAgLTEzNyw3ICsxMzcsNyBAQCB2b2lkIEJs
b2JTdG9yYWdlOjpyZW1vdmUoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIEFTU0VSVCghUnVu
TG9vcDo6aXNNYWluKCkpOwogCi0gICAgYXV0byBsaW5rUGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0
ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKKyAgICBhdXRvIGxpbmtQYXRoID0g
RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwogICAgIHVubGluayhs
aW5rUGF0aC5kYXRhKCkpOwogfQogCkBAIC0xNDUsNyArMTQ1LDcgQEAgdW5zaWduZWQgQmxvYlN0
b3JhZ2U6OnNoYXJlQ291bnQoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIEFTU0VSVCghUnVu
TG9vcDo6aXNNYWluKCkpOwogCi0gICAgYXV0byBsaW5rUGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0
ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKKyAgICBhdXRvIGxpbmtQYXRoID0g
RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwogICAgIHN0cnVjdCBz
dGF0IHN0YXQ7CiAgICAgaWYgKDo6c3RhdChsaW5rUGF0aC5kYXRhKCksICZzdGF0KSA8IDApCiAg
ICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5jcHAKaW5kZXggOWUzMTg5NDNkN2M2MTM4Y2FhMWMx
ZGMzMGYzYTJmMzVmMzMwMjlmMi4uMWEzMmFhOWEwZTUzYjQ2OTU3YWE4ZWIzYmIyMzg1NmYwYTg5
OWYzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZURhdGEuY3BwCkBAIC0yNiw5ICsyNiw5IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiTmV0d29ya0NhY2hlRGF0YS5oIgogCi0jaW5jbHVkZSA8V2ViQ29yZS9G
aWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8ZmNudGwuaD4KICNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3Jh
cGhpY2FsbHlSYW5kb21OdW1iZXIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiAj
aWYgIU9TKFdJTkRPV1MpCiAjaW5jbHVkZSA8c3lzL21tYW4uaD4KQEAgLTE1Niw3ICsxNTYsNyBA
QCBzdGF0aWMgU2FsdCBtYWtlU2FsdCgpCiBPcHRpb25hbDxTYWx0PiByZWFkT3JNYWtlU2FsdChj
b25zdCBTdHJpbmcmIHBhdGgpCiB7CiAjaWYgIU9TKFdJTkRPV1MpCi0gICAgYXV0byBjcGF0aCA9
IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKKyAg
ICBhdXRvIGNwYXRoID0gRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgp
OwogICAgIGF1dG8gZmQgPSBvcGVuKGNwYXRoLmRhdGEoKSwgT19SRE9OTFksIDApOwogICAgIFNh
bHQgc2FsdDsKICAgICBhdXRvIGJ5dGVzUmVhZCA9IHJlYWQoZmQsIHNhbHQuZGF0YSgpLCBzYWx0
LnNpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmNwcAppbmRleCAyNWJlZjdmOTJlOGViMzY2
YTk0ZjRiY2QzNzk4M2IxNmE5ZGUzNTA4Li5iMGIyZTcxNWU2NWRkM2E5MTNjZjcwZDcwMzY1YTQ1
MGJiZWI5OTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5jcHAKQEAgLTI3LDggKzI3LDggQEAK
ICNpbmNsdWRlICJOZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmgiCiAKICNpbmNsdWRlICJMb2dnaW5n
LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2Vy
dGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9GdW5j
dGlvbi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApAQCAtNzAsNyArNzAsNyBA
QCBzdGF0aWMgRGlyZWN0b3J5RW50cnlUeXBlIGRpcmVjdG9yeUVudHJ5VHlwZSh1aW50OF90IGR0
eXBlKQogdm9pZCB0cmF2ZXJzZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IEZ1
bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIERpcmVjdG9yeUVudHJ5VHlwZSk+JiBmdW5jdGlv
bikKIHsKICNpZiAhT1MoV0lORE9XUykKLSAgICBESVIqIGRpciA9IG9wZW5kaXIoV2ViQ29yZTo6
RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSk7CisgICAg
RElSKiBkaXIgPSBvcGVuZGlyKEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihw
YXRoKS5kYXRhKCkpOwogICAgIGlmICghZGlyKQogICAgICAgICByZXR1cm47CiAgICAgZGlyZW50
KiBkcDsKQEAgLTk0LDEwICs5NCwxMCBAQCB2b2lkIHRyYXZlcnNlRGlyZWN0b3J5KGNvbnN0IFN0
cmluZyYgcGF0aCwgY29uc3QgRnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgRAogdm9pZCBk
ZWxldGVEaXJlY3RvcnlSZWN1cnNpdmVseShjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgdHJh
dmVyc2VEaXJlY3RvcnkocGF0aCwgWyZwYXRoXShjb25zdCBTdHJpbmcmIG5hbWUsIERpcmVjdG9y
eUVudHJ5VHlwZSB0eXBlKSB7Ci0gICAgICAgIFN0cmluZyBlbnRyeVBhdGggPSBXZWJDb3JlOjpG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGF0aCwgbmFtZSk7CisgICAgICAg
IFN0cmluZyBlbnRyeVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
cGF0aCwgbmFtZSk7CiAgICAgICAgIHN3aXRjaCAodHlwZSkgewogICAgICAgICBjYXNlIERpcmVj
dG9yeUVudHJ5VHlwZTo6RmlsZToKLSAgICAgICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRl
bGV0ZUZpbGUoZW50cnlQYXRoKTsKKyAgICAgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUo
ZW50cnlQYXRoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIERpcmVjdG9yeUVu
dHJ5VHlwZTo6RGlyZWN0b3J5OgogICAgICAgICAgICAgZGVsZXRlRGlyZWN0b3J5UmVjdXJzaXZl
bHkoZW50cnlQYXRoKTsKQEAgLTEwNSwxOSArMTA1LDE5IEBAIHZvaWQgZGVsZXRlRGlyZWN0b3J5
UmVjdXJzaXZlbHkoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgICAgICAvLyBUaGlzIGRvZXNuJ3Qg
Zm9sbG93IHN5bWxpbmtzLgogICAgICAgICB9CiAgICAgfSk7Ci0gICAgV2ViQ29yZTo6RmlsZVN5
c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkocGF0aCk7CisgICAgRmlsZVN5c3RlbTo6ZGVsZXRl
RW1wdHlEaXJlY3RvcnkocGF0aCk7CiB9CiAKIEZpbGVUaW1lcyBmaWxlVGltZXMoY29uc3QgU3Ry
aW5nJiBwYXRoKQogewogI2lmIEhBVkUoU1RBVF9CSVJUSFRJTUUpCiAgICAgc3RydWN0IHN0YXQg
ZmlsZUluZm87Ci0gICAgaWYgKHN0YXQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSwgJmZpbGVJbmZvKSkKKyAgICBpZiAoc3RhdChGaWxl
U3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpLCAmZmlsZUluZm8p
KQogICAgICAgICByZXR1cm4geyB9OwogICAgIHJldHVybiB7IFdhbGxUaW1lOjpmcm9tUmF3U2Vj
b25kcyhmaWxlSW5mby5zdF9iaXJ0aHRpbWUpLCBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoZmls
ZUluZm8uc3RfbXRpbWUpIH07CiAjZWxpZiBVU0UoU09VUCkKICAgICAvLyBUaGVyZSdzIG5vIHN0
X2JpcnRodGltZSBpbiBzb21lIG9wZXJhdGluZyBzeXN0ZW1zIGxpa2UgTGludXgsIHNvIHdlIHVz
ZSB4YXR0cnMgdG8gc2V0L2dldCB0aGUgY3JlYXRpb24gdGltZS4KLSAgICBHUmVmUHRyPEdGaWxl
PiBmaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSkpOworICAgIEdSZWZQdHI8
R0ZpbGU+IGZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0aChGaWxlU3lzdGVtOjpm
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpKSk7CiAgICAgR1JlZlB0cjxHRmls
ZUluZm8+IGZpbGVJbmZvID0gYWRvcHRHUmVmKGdfZmlsZV9xdWVyeV9pbmZvKGZpbGUuZ2V0KCks
ICJ4YXR0cjo6YmlydGh0aW1lLHRpbWU6Om1vZGlmaWVkIiwgR19GSUxFX1FVRVJZX0lORk9fTk9O
RSwgbnVsbHB0ciwgbnVsbHB0cikpOwogICAgIGlmICghZmlsZUluZm8pCiAgICAgICAgIHJldHVy
biB7IH07CkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCB1cGRhdGVGaWxlTW9kaWZpY2F0aW9uVGlt
ZUlmTmVlZGVkKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICB9CiAjaWYgIU9TKFdJTkRPV1MpCiAg
ICAgLy8gVGhpcyByZWFsbHkgdXBkYXRlcyBib3RoIHRoZSBhY2Nlc3MgdGltZSBhbmQgdGhlIG1v
ZGlmaWNhdGlvbiB0aW1lLgotICAgIHV0aW1lcyhXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpLCBudWxscHRyKTsKKyAgICB1dGltZXMoRmls
ZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSwgbnVsbHB0cik7
CiAjZW5kaWYKIH0KIApAQCAtMTU2LDcgKzE1Niw3IEBAIGJvb2wgaXNTYWZlVG9Vc2VNZW1vcnlN
YXBGb3JQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICBhdHRybGlzdCBhdHRyTGlzdCA9IHsg
fTsKICAgICBhdHRyTGlzdC5iaXRtYXBjb3VudCA9IEFUVFJfQklUX01BUF9DT1VOVDsKICAgICBh
dHRyTGlzdC5jb21tb25hdHRyID0gQVRUUl9DTU5fREFUQV9QUk9URUNUX0ZMQUdTOwotICAgIGlu
dDMyX3QgZXJyb3IgPSBnZXRhdHRybGlzdChXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpLCAmYXR0ckxpc3QsICZhdHRyQnVmZmVyLCBzaXpl
b2YoYXR0ckJ1ZmZlciksIEZTT1BUX05PRk9MTE9XKTsKKyAgICBpbnQzMl90IGVycm9yID0gZ2V0
YXR0cmxpc3QoRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEo
KSwgJmF0dHJMaXN0LCAmYXR0ckJ1ZmZlciwgc2l6ZW9mKGF0dHJCdWZmZXIpLCBGU09QVF9OT0ZP
TExPVyk7CiAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdv
cmssICJVbmFibGUgdG8gZ2V0IGNhY2hlIGRpcmVjdG9yeSBwcm90ZWN0aW9uIGNsYXNzLCBkaXNh
YmxpbmcgdXNlIG9mIHNoYXJlZCBtYXBwZWQgbWVtb3J5Iik7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlRmlsZVN5c3RlbS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmgKaW5kZXggN2RjY2U2YzRjMzY3MjhlOTMxNTgzM2E1MzI5
YmQ1NmQ1YzQxMmI4YS4uMTgzMWEzNTFjOWIwZmY1MDVkZjlhZGM3ZjdjMDNhZjcwMWQ2Yzg4MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVGaWxlU3lzdGVtLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmgKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNl
CiAKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5
c3RlbS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVJT0NoYW5uZWxDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlSU9DaGFubmVsQ29jb2EubW0KaW5kZXggMzY5YmNmOTczZjJkY2VlMGEzZDQz
OTYzNDUzNzBiNjQ2MjFlOWYwOC4uYzY1MjE2NGNhMTg4YTA3ZGE1N2JjZGU3NWYzYTIyNTJlMTgy
ZjA4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVJT0NoYW5uZWxDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbENvY29hLm1tCkBAIC00MSw3ICs0MSw3IEBA
IElPQ2hhbm5lbDo6SU9DaGFubmVsKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIFR5cGUgdHlwZSkK
ICAgICA6IG1fcGF0aChmaWxlUGF0aCkKICAgICAsIG1fdHlwZSh0eXBlKQogewotICAgIGF1dG8g
cGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWxl
UGF0aCk7CisgICAgYXV0byBwYXRoID0gRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKGZpbGVQYXRoKTsKICAgICBpbnQgb2ZsYWc7CiAgICAgbW9kZV90IG1vZGU7CiAgICAgYm9v
bCB1c2VMb3dJT1ByaW9yaXR5ID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbFNvdXAuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxTb3VwLmNw
cAppbmRleCA1MzkyYzc5MDU2OWZkNjY1N2EyMWEyNjIwY2IwNTFlZmJlZWYwNDU5Li5iNTZmOTY1
NTMxMmNkYWQwYzEwOGRjY2M2ZWYxNzI5OTVhZWQxYTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbFNvdXAuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFu
bmVsU291cC5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgSU9DaGFubmVsOjpJT0NoYW5uZWwoY29uc3Qg
U3RyaW5nJiBmaWxlUGF0aCwgVHlwZSB0eXBlKQogICAgIDogbV9wYXRoKGZpbGVQYXRoKQogICAg
ICwgbV90eXBlKHR5cGUpCiB7Ci0gICAgYXV0byBwYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVQYXRoKTsKKyAgICBhdXRvIHBhdGggPSBGaWxl
U3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZVBhdGgpOwogICAgIEdSZWZQdHI8
R0ZpbGU+IGZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0aChwYXRoLmRhdGEoKSkp
OwogICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgY2FzZSBUeXBlOjpDcmVhdGU6IHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3Rh
dGlzdGljcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZVN0YXRpc3RpY3MuY3BwCmluZGV4IGI0YTEzMTRlYjRiMTVlZTAzMzJmNzRlOTIxZTJmYzg3
MTkwNjRjMzcuLjYxYmVmMWUxMWMzY2Y4Mzc1ZjczOTI1YjcyM2I5MTZmYjMxZWIzN2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3Rh
dGlzdGljcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTdGF0aXN0aWNzLmNwcApAQCAtNzcsNyArNzcsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8
U3RhdGlzdGljcz4gU3RhdGlzdGljczo6b3BlbihDYWNoZSYgY2FjaGUsIGNvbnN0IFN0cmluZyYg
Y2FjaGVQYQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBTdHJpbmcg
ZGF0YWJhc2VQYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KGNhY2hlUGF0aCwgU3RhdGlzdGljc0RhdGFiYXNlTmFtZSk7CisgICAgU3RyaW5nIGRhdGFi
YXNlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChjYWNoZVBhdGgs
IFN0YXRpc3RpY3NEYXRhYmFzZU5hbWUpOwogICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFN0
YXRpc3RpY3M+KGNhY2hlLCBkYXRhYmFzZVBhdGgpOwogfQogCkBAIC05OCw3ICs5OCw3IEBAIHZv
aWQgU3RhdGlzdGljczo6aW5pdGlhbGl6ZShjb25zdCBTdHJpbmcmIGRhdGFiYXNlUGF0aCkKICAg
ICBzZXJpYWxCYWNrZ3JvdW5kSU9RdWV1ZSgpLmRpc3BhdGNoKFt0aGlzLCBkYXRhYmFzZVBhdGgg
PSBkYXRhYmFzZVBhdGguaXNvbGF0ZWRDb3B5KCksIG5ldHdvcmtDYWNoZVBhdGggPSBtX2NhY2hl
LnJlY29yZHNQYXRoKCksIHN0YXJ0VGltZV0gewogICAgICAgICBXZWJDb3JlOjpTUUxpdGVUcmFu
c2FjdGlvbkluUHJvZ3Jlc3NBdXRvQ291bnRlciB0cmFuc2FjdGlvbkNvdW50ZXI7CiAKLSAgICAg
ICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoV2ViQ29yZTo6
RmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShkYXRhYmFzZVBhdGgpKSkKKyAgICAgICAgaWYgKCFG
aWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoRmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShk
YXRhYmFzZVBhdGgpKSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBMT0coTmV0d29y
a0NhY2hlLCAiKE5ldHdvcmtQcm9jZXNzKSBPcGVuaW5nIG5ldHdvcmsgY2FjaGUgc3RhdGlzdGlj
cyBkYXRhYmFzZSBhdCAlcy4uLiIsIGRhdGFiYXNlUGF0aC51dGY4KCkuZGF0YSgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3Rv
cmFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZVN0b3JhZ2UuY3BwCmluZGV4IDRlYTc0MzBmYTIwNDRlOTAxNGE4OTkwNGQ1YmJjMWViNjViNzlj
YzYuLmMyNmFhMWI5NmM3MTNhODAwMzdmZDFjNTc4NjVkYjk3MmI2NGFlZWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVT
dG9yYWdlLmNwcApAQCAtMTQ1LDI5ICsxNDUsMjkgQEAgcHVibGljOgogc3RhdGljIFN0cmluZyBt
YWtlVmVyc2lvbmVkRGlyZWN0b3J5UGF0aChjb25zdCBTdHJpbmcmIGJhc2VEaXJlY3RvcnlQYXRo
KQogewogICAgIFN0cmluZyB2ZXJzaW9uU3ViZGlyZWN0b3J5ID0gdmVyc2lvbkRpcmVjdG9yeVBy
ZWZpeCArIFN0cmluZzo6bnVtYmVyKFN0b3JhZ2U6OnZlcnNpb24pOwotICAgIHJldHVybiBXZWJD
b3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoYmFzZURpcmVjdG9yeVBh
dGgsIHZlcnNpb25TdWJkaXJlY3RvcnkpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQoYmFzZURpcmVjdG9yeVBhdGgsIHZlcnNpb25TdWJkaXJlY3Rvcnkp
OwogfQogCiBzdGF0aWMgU3RyaW5nIG1ha2VSZWNvcmRzRGlyZWN0b3J5UGF0aChjb25zdCBTdHJp
bmcmIGJhc2VEaXJlY3RvcnlQYXRoKQogewotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobWFrZVZlcnNpb25lZERpcmVjdG9yeVBhdGgoYmFz
ZURpcmVjdG9yeVBhdGgpLCByZWNvcmRzRGlyZWN0b3J5TmFtZSk7CisgICAgcmV0dXJuIEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtYWtlVmVyc2lvbmVkRGlyZWN0b3J5UGF0
aChiYXNlRGlyZWN0b3J5UGF0aCksIHJlY29yZHNEaXJlY3RvcnlOYW1lKTsKIH0KIAogc3RhdGlj
IFN0cmluZyBtYWtlQmxvYkRpcmVjdG9yeVBhdGgoY29uc3QgU3RyaW5nJiBiYXNlRGlyZWN0b3J5
UGF0aCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KG1ha2VWZXJzaW9uZWREaXJlY3RvcnlQYXRoKGJhc2VEaXJlY3RvcnlQYXRoKSwg
YmxvYnNEaXJlY3RvcnlOYW1lKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KG1ha2VWZXJzaW9uZWREaXJlY3RvcnlQYXRoKGJhc2VEaXJlY3RvcnlQYXRo
KSwgYmxvYnNEaXJlY3RvcnlOYW1lKTsKIH0KIAogc3RhdGljIFN0cmluZyBtYWtlU2FsdEZpbGVQ
YXRoKGNvbnN0IFN0cmluZyYgYmFzZURpcmVjdG9yeVBhdGgpCiB7Ci0gICAgcmV0dXJuIFdlYkNv
cmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtYWtlVmVyc2lvbmVkRGly
ZWN0b3J5UGF0aChiYXNlRGlyZWN0b3J5UGF0aCksIHNhbHRGaWxlTmFtZSk7CisgICAgcmV0dXJu
IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtYWtlVmVyc2lvbmVkRGlyZWN0
b3J5UGF0aChiYXNlRGlyZWN0b3J5UGF0aCksIHNhbHRGaWxlTmFtZSk7CiB9CiAKIFJlZlB0cjxT
dG9yYWdlPiBTdG9yYWdlOjpvcGVuKGNvbnN0IFN0cmluZyYgY2FjaGVQYXRoLCBNb2RlIG1vZGUp
CiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIGlmICghV2ViQ29yZTo6
RmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKG1ha2VWZXJzaW9uZWREaXJlY3RvcnlQYXRo
KGNhY2hlUGF0aCkpKQorICAgIGlmICghRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKG1h
a2VWZXJzaW9uZWREaXJlY3RvcnlQYXRoKGNhY2hlUGF0aCkpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICBhdXRvIHNhbHQgPSByZWFkT3JNYWtlU2FsdChtYWtlU2FsdEZpbGVQYXRoKGNh
Y2hlUGF0aCkpOwogICAgIGlmICghc2FsdCkKQEAgLTE4MCwxMyArMTgwLDEzIEBAIHZvaWQgdHJh
dmVyc2VSZWNvcmRzRmlsZXMoY29uc3QgU3RyaW5nJiByZWNvcmRzUGF0aCwgY29uc3QgU3RyaW5n
JiBleHBlY3RlZFR5cGUsCiAgICAgdHJhdmVyc2VEaXJlY3RvcnkocmVjb3Jkc1BhdGgsIFsmXShj
b25zdCBTdHJpbmcmIHBhcnRpdGlvbk5hbWUsIERpcmVjdG9yeUVudHJ5VHlwZSBlbnRyeVR5cGUp
IHsKICAgICAgICAgaWYgKGVudHJ5VHlwZSAhPSBEaXJlY3RvcnlFbnRyeVR5cGU6OkRpcmVjdG9y
eSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgU3RyaW5nIHBhcnRpdGlvblBhdGggPSBX
ZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3Jkc1BhdGgs
IHBhcnRpdGlvbk5hbWUpOworICAgICAgICBTdHJpbmcgcGFydGl0aW9uUGF0aCA9IEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmRzUGF0aCwgcGFydGl0aW9uTmFtZSk7
CiAgICAgICAgIHRyYXZlcnNlRGlyZWN0b3J5KHBhcnRpdGlvblBhdGgsIFsmXShjb25zdCBTdHJp
bmcmIGFjdHVhbFR5cGUsIERpcmVjdG9yeUVudHJ5VHlwZSBlbnRyeVR5cGUpIHsKICAgICAgICAg
ICAgIGlmIChlbnRyeVR5cGUgIT0gRGlyZWN0b3J5RW50cnlUeXBlOjpEaXJlY3RvcnkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgaWYgKCFleHBlY3RlZFR5cGUuaXNFbXB0
eSgpICYmIGV4cGVjdGVkVHlwZSAhPSBhY3R1YWxUeXBlKQogICAgICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgICAgIFN0cmluZyByZWNvcmREaXJlY3RvcnlQYXRoID0gV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhcnRpdGlvblBhdGgsIGFjdHVhbFR5
cGUpOworICAgICAgICAgICAgU3RyaW5nIHJlY29yZERpcmVjdG9yeVBhdGggPSBGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGFydGl0aW9uUGF0aCwgYWN0dWFsVHlwZSk7CiAg
ICAgICAgICAgICB0cmF2ZXJzZURpcmVjdG9yeShyZWNvcmREaXJlY3RvcnlQYXRoLCBbJmZ1bmN0
aW9uLCAmcmVjb3JkRGlyZWN0b3J5UGF0aCwgJmFjdHVhbFR5cGVdKGNvbnN0IFN0cmluZyYgZmls
ZU5hbWUsIERpcmVjdG9yeUVudHJ5VHlwZSBlbnRyeVR5cGUpIHsKICAgICAgICAgICAgICAgICBp
ZiAoZW50cnlUeXBlICE9IERpcmVjdG9yeUVudHJ5VHlwZTo6RmlsZSB8fCBmaWxlTmFtZS5sZW5n
dGgoKSA8IEtleTo6aGFzaFN0cmluZ0xlbmd0aCgpKQogICAgICAgICAgICAgICAgICAgICByZXR1
cm47CkBAIC0yMDYsMTggKzIwNiwxOCBAQCBzdGF0aWMgdm9pZCBkZWxldGVFbXB0eVJlY29yZHNE
aXJlY3Rvcmllcyhjb25zdCBTdHJpbmcmIHJlY29yZHNQYXRoKQogICAgICAgICAgICAgcmV0dXJu
OwogCiAgICAgICAgIC8vIERlbGV0ZSBbdHlwZV0gc3ViLWZvbGRlcnMuCi0gICAgICAgIFN0cmlu
ZyBwYXJ0aXRpb25QYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KHJlY29yZHNQYXRoLCBwYXJ0aXRpb25OYW1lKTsKKyAgICAgICAgU3RyaW5nIHBhcnRp
dGlvblBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3Jkc1Bh
dGgsIHBhcnRpdGlvbk5hbWUpOwogICAgICAgICB0cmF2ZXJzZURpcmVjdG9yeShwYXJ0aXRpb25Q
YXRoLCBbJnBhcnRpdGlvblBhdGhdKGNvbnN0IFN0cmluZyYgc3ViZGlyTmFtZSwgRGlyZWN0b3J5
RW50cnlUeXBlIGVudHJ5VHlwZSkgewogICAgICAgICAgICAgaWYgKGVudHJ5VHlwZSAhPSBEaXJl
Y3RvcnlFbnRyeVR5cGU6OkRpcmVjdG9yeSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAg
ICAgICAgICAgIC8vIExldCBzeXN0ZW0gZmlndXJlIG91dCBpZiBpdCBpcyByZWFsbHkgZW1wdHku
Ci0gICAgICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShX
ZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGFydGl0aW9uUGF0
aCwgc3ViZGlyTmFtZSkpOworICAgICAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJl
Y3RvcnkoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhcnRpdGlvblBhdGgs
IHN1YmRpck5hbWUpKTsKICAgICAgICAgfSk7CiAKICAgICAgICAgLy8gRGVsZXRlIFtQYXJ0aXRp
b25dIGZvbGRlcnMuCiAgICAgICAgIC8vIExldCBzeXN0ZW0gZmlndXJlIG91dCBpZiBpdCBpcyBy
ZWFsbHkgZW1wdHkuCi0gICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGly
ZWN0b3J5KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNv
cmRzUGF0aCwgcGFydGl0aW9uTmFtZSkpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVFbXB0
eURpcmVjdG9yeShGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3Jkc1Bh
dGgsIHBhcnRpdGlvbk5hbWUpKTsKICAgICB9KTsKIH0KIApAQCAtMzAwLDExICszMDAsMTEgQEAg
dm9pZCBTdG9yYWdlOjpzeW5jaHJvbml6ZSgpCiAKICAgICAgICAgU3RyaW5nIGFueVR5cGU7CiAg
ICAgICAgIHRyYXZlcnNlUmVjb3Jkc0ZpbGVzKHJlY29yZHNQYXRoKCksIGFueVR5cGUsIFsmXShj
b25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIGhhc2hTdHJpbmcsIGNvbnN0IFN0
cmluZyYgdHlwZSwgYm9vbCBpc0Jsb2IsIGNvbnN0IFN0cmluZyYgcmVjb3JkRGlyZWN0b3J5UGF0
aCkgewotICAgICAgICAgICAgYXV0byBmaWxlUGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmREaXJlY3RvcnlQYXRoLCBmaWxlTmFtZSk7Cisg
ICAgICAgICAgICBhdXRvIGZpbGVQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KHJlY29yZERpcmVjdG9yeVBhdGgsIGZpbGVOYW1lKTsKIAogICAgICAgICAgICAgS2V5
OjpIYXNoVHlwZSBoYXNoOwogICAgICAgICAgICAgaWYgKCFLZXk6OnN0cmluZ1RvSGFzaChoYXNo
U3RyaW5nLCBoYXNoKSkgewotICAgICAgICAgICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRl
bGV0ZUZpbGUoZmlsZVBhdGgpOworICAgICAgICAgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZp
bGUoZmlsZVBhdGgpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIApA
QCAtMzE4LDcgKzMxOCw3IEBAIHZvaWQgU3RvcmFnZTo6c3luY2hyb25pemUoKQogCiAgICAgICAg
ICAgICBpZiAoc2hvdWxkQ29tcHV0ZUV4YWN0UmVjb3Jkc1NpemUpIHsKICAgICAgICAgICAgICAg
ICBsb25nIGxvbmcgZmlsZVNpemUgPSAwOwotICAgICAgICAgICAgICAgIFdlYkNvcmU6OkZpbGVT
eXN0ZW06OmdldEZpbGVTaXplKGZpbGVQYXRoLCBmaWxlU2l6ZSk7CisgICAgICAgICAgICAgICAg
RmlsZVN5c3RlbTo6Z2V0RmlsZVNpemUoZmlsZVBhdGgsIGZpbGVTaXplKTsKICAgICAgICAgICAg
ICAgICByZWNvcmRzU2l6ZSArPSBmaWxlU2l6ZTsKICAgICAgICAgICAgIH0KIApAQCAtMzgxLDEy
ICszODEsMTIgQEAgYm9vbCBTdG9yYWdlOjptYXlDb250YWluQmxvYihjb25zdCBLZXkmIGtleSkg
Y29uc3QKIFN0cmluZyBTdG9yYWdlOjpyZWNvcmREaXJlY3RvcnlQYXRoRm9yS2V5KGNvbnN0IEtl
eSYga2V5KSBjb25zdAogewogICAgIEFTU0VSVCgha2V5LnR5cGUoKS5pc0VtcHR5KCkpOwotICAg
IHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZHNQYXRoKCks
IGtleS5wYXJ0aXRpb25IYXNoQXNTdHJpbmcoKSksIGtleS50eXBlKCkpOworICAgIHJldHVybiBG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KHJlY29yZHNQYXRoKCksIGtleS5wYXJ0aXRpb25IYXNoQXNTdHJpbmco
KSksIGtleS50eXBlKCkpOwogfQogCiBTdHJpbmcgU3RvcmFnZTo6cmVjb3JkUGF0aEZvcktleShj
b25zdCBLZXkmIGtleSkgY29uc3QKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZERpcmVjdG9yeVBhdGhGb3JLZXkoa2V5KSwg
a2V5Lmhhc2hBc1N0cmluZygpKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KHJlY29yZERpcmVjdG9yeVBhdGhGb3JLZXkoa2V5KSwga2V5Lmhhc2hBc1N0
cmluZygpKTsKIH0KIAogc3RhdGljIFN0cmluZyBibG9iUGF0aEZvclJlY29yZFBhdGgoY29uc3Qg
U3RyaW5nJiByZWNvcmRQYXRoKQpAQCAtNjI5LDcgKzYyOSw3IEBAIHZvaWQgU3RvcmFnZTo6ZGVs
ZXRlRmlsZXMoY29uc3QgS2V5JiBrZXkpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4o
KSk7CiAKLSAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVGaWxlKHJlY29yZFBhdGhGb3JL
ZXkoa2V5KSk7CisgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShyZWNvcmRQYXRoRm9yS2V5KGtl
eSkpOwogICAgIG1fYmxvYlN0b3JhZ2UucmVtb3ZlKGJsb2JQYXRoRm9yS2V5KGtleSkpOwogfQog
CkBAIC04MDksNyArODA5LDcgQEAgdm9pZCBTdG9yYWdlOjpkaXNwYXRjaFdyaXRlT3BlcmF0aW9u
KHN0ZDo6dW5pcXVlX3B0cjxXcml0ZU9wZXJhdGlvbj4gd3JpdGVPcGVyYXQKICAgICAgICAgYXV0
byByZWNvcmREaXJlY3RvclBhdGggPSByZWNvcmREaXJlY3RvcnlQYXRoRm9yS2V5KHdyaXRlT3Bl
cmF0aW9uLnJlY29yZC5rZXkpOwogICAgICAgICBhdXRvIHJlY29yZFBhdGggPSByZWNvcmRQYXRo
Rm9yS2V5KHdyaXRlT3BlcmF0aW9uLnJlY29yZC5rZXkpOwogCi0gICAgICAgIFdlYkNvcmU6OkZp
bGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhyZWNvcmREaXJlY3RvclBhdGgpOworICAgICAg
ICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMocmVjb3JkRGlyZWN0b3JQYXRoKTsKIAog
ICAgICAgICArK3dyaXRlT3BlcmF0aW9uLmFjdGl2ZUNvdW50OwogCkBAIC05MTcsNyArOTE3LDcg
QEAgdm9pZCBTdG9yYWdlOjp0cmF2ZXJzZShjb25zdCBTdHJpbmcmIHR5cGUsIE9wdGlvblNldDxU
cmF2ZXJzZUZsYWc+IGZsYWdzLCBUcmF2ZXIKICAgICAgICAgICAgIGlmIChpc0Jsb2IpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICBhdXRvIHJlY29yZFBhdGggPSBXZWJD
b3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3JkRGlyZWN0b3J5
UGF0aCwgZmlsZU5hbWUpOworICAgICAgICAgICAgYXV0byByZWNvcmRQYXRoID0gRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZERpcmVjdG9yeVBhdGgsIGZpbGVOYW1l
KTsKIAogICAgICAgICAgICAgZG91YmxlIHdvcnRoID0gLTE7CiAgICAgICAgICAgICBpZiAodHJh
dmVyc2VPcGVyYXRpb24uZmxhZ3MgJiBUcmF2ZXJzZUZsYWc6OkNvbXB1dGVXb3J0aCkKQEAgLTEw
MDksMTMgKzEwMDksMTMgQEAgdm9pZCBTdG9yYWdlOjpjbGVhcihjb25zdCBTdHJpbmcmIHR5cGUs
IFdhbGxUaW1lIG1vZGlmaWVkU2luY2VUaW1lLCBDb21wbGV0aW9uSGEKICAgICBpb1F1ZXVlKCku
ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbW9kaWZpZWRT
aW5jZVRpbWUsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciks
IHR5cGUgPSB0eXBlLmlzb2xhdGVkQ29weSgpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgYXV0byBy
ZWNvcmRzUGF0aCA9IHRoaXMtPnJlY29yZHNQYXRoKCk7CiAgICAgICAgIHRyYXZlcnNlUmVjb3Jk
c0ZpbGVzKHJlY29yZHNQYXRoLCB0eXBlLCBbbW9kaWZpZWRTaW5jZVRpbWVdKGNvbnN0IFN0cmlu
ZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgaGFzaFN0cmluZywgY29uc3QgU3RyaW5nJiB0eXBl
LCBib29sIGlzQmxvYiwgY29uc3QgU3RyaW5nJiByZWNvcmREaXJlY3RvcnlQYXRoKSB7Ci0gICAg
ICAgICAgICBhdXRvIGZpbGVQYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KHJlY29yZERpcmVjdG9yeVBhdGgsIGZpbGVOYW1lKTsKKyAgICAgICAgICAg
IGF1dG8gZmlsZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVj
b3JkRGlyZWN0b3J5UGF0aCwgZmlsZU5hbWUpOwogICAgICAgICAgICAgaWYgKG1vZGlmaWVkU2lu
Y2VUaW1lID4gLVdhbGxUaW1lOjppbmZpbml0eSgpKSB7CiAgICAgICAgICAgICAgICAgYXV0byB0
aW1lcyA9IGZpbGVUaW1lcyhmaWxlUGF0aCk7CiAgICAgICAgICAgICAgICAgaWYgKHRpbWVzLm1v
ZGlmaWNhdGlvbiA8IG1vZGlmaWVkU2luY2VUaW1lKQogICAgICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxl
dGVGaWxlKGZpbGVQYXRoKTsKKyAgICAgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZmls
ZVBhdGgpOwogICAgICAgICB9KTsKIAogICAgICAgICBkZWxldGVFbXB0eVJlY29yZHNEaXJlY3Rv
cmllcyhyZWNvcmRzUGF0aCk7CkBAIC0xMDg5LDcgKzEwODksNyBAQCB2b2lkIFN0b3JhZ2U6OnNo
cmluaygpCiAgICAgICAgICAgICBpZiAoaXNCbG9iKQogICAgICAgICAgICAgICAgIHJldHVybjsK
IAotICAgICAgICAgICAgYXV0byByZWNvcmRQYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZERpcmVjdG9yeVBhdGgsIGZpbGVOYW1lKTsKKyAg
ICAgICAgICAgIGF1dG8gcmVjb3JkUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChyZWNvcmREaXJlY3RvcnlQYXRoLCBmaWxlTmFtZSk7CiAgICAgICAgICAgICBhdXRv
IGJsb2JQYXRoID0gYmxvYlBhdGhGb3JSZWNvcmRQYXRoKHJlY29yZFBhdGgpOwogCiAgICAgICAg
ICAgICBhdXRvIHRpbWVzID0gZmlsZVRpbWVzKHJlY29yZFBhdGgpOwpAQCAtMTEwMSw3ICsxMTAx
LDcgQEAgdm9pZCBTdG9yYWdlOjpzaHJpbmsoKQogICAgICAgICAgICAgTE9HKE5ldHdvcmtDYWNo
ZVN0b3JhZ2UsICJEZWxldGlvbiBwcm9iYWJpbGl0eT0lZiBib2R5TGlua0NvdW50PSVkIHNob3Vs
ZERlbGV0ZT0lZCIsIHByb2JhYmlsaXR5LCBib2R5U2hhcmVDb3VudCwgc2hvdWxkRGVsZXRlKTsK
IAogICAgICAgICAgICAgaWYgKHNob3VsZERlbGV0ZSkgewotICAgICAgICAgICAgICAgIFdlYkNv
cmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUocmVjb3JkUGF0aCk7CisgICAgICAgICAgICAgICAg
RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShyZWNvcmRQYXRoKTsKICAgICAgICAgICAgICAgICBtX2Js
b2JTdG9yYWdlLnJlbW92ZShibG9iUGF0aCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0pOwpA
QCAtMTEzNyw3ICsxMTM3LDcgQEAgdm9pZCBTdG9yYWdlOjpkZWxldGVPbGRWZXJzaW9ucygpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogI2VuZGlmCiAKLSAgICAgICAgICAgIGF1dG8gb2xkVmVy
c2lvblBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
Y2FjaGVQYXRoLCBzdWJkaXJOYW1lKTsKKyAgICAgICAgICAgIGF1dG8gb2xkVmVyc2lvblBhdGgg
PSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY2FjaGVQYXRoLCBzdWJkaXJO
YW1lKTsKICAgICAgICAgICAgIExPRyhOZXR3b3JrQ2FjaGVTdG9yYWdlLCAiKE5ldHdvcmtQcm9j
ZXNzKSBkZWxldGluZyBvbGQgY2FjaGUgdmVyc2lvbiwgcGF0aCAlcyIsIG9sZFZlcnNpb25QYXRo
LnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgICAgICAgICBkZWxldGVEaXJlY3RvcnlSZWN1cnNpdmVs
eShvbGRWZXJzaW9uUGF0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQppbmRleCBmOGFjMjBhY2QxYzMz
YTViZGI4ODQwZGMxMWRlYmQ4OGJhYzAxN2I4Li4zZGI5MGExMjBjMTI2ZWY5YjYwMGUzODNjMDMz
NGU0MzdiYzY1ZjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KQEAgLTM2LDExICszNiwxMSBAQAog
I2ltcG9ydCAiTmV0d29ya1Nlc3Npb25Db2NvYS5oIgogI2ltcG9ydCAiV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+Ci0j
aW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPFdlYkNvcmUvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5l
dHdvcmtTUEkuaD4KKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDx3dGYvTWFp
blRocmVhZC5oPgogI2ltcG9ydCA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KICNpbXBvcnQgPHd0
Zi90ZXh0L0Jhc2U2NC5oPgpAQCAtNDAwLDggKzQwMCw4IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNr
Q29jb2E6OnNldFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBmaWxl
bmFtCiAKICAgICBtX3Rhc2suZ2V0KCkuX3BhdGhUb0Rvd25sb2FkVGFza0ZpbGUgPSBtX3BlbmRp
bmdEb3dubG9hZExvY2F0aW9uOwogCi0gICAgaWYgKGFsbG93T3ZlcndyaXRlICYmIFdlYkNvcmU6
OkZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobV9wZW5kaW5nRG93bmxvYWRMb2NhdGlvbikpCi0gICAg
ICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZmlsZW5hbWUpOworICAgIGlmIChh
bGxvd092ZXJ3cml0ZSAmJiBGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG1fcGVuZGluZ0Rvd25sb2Fk
TG9jYXRpb24pKQorICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGZpbGVuYW1lKTsKIH0K
IAogYm9vbCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6dHJ5UGFzc3dvcmRCYXNlZEF1dGhlbnRpY2F0
aW9uKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UsIENo
YWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5t
bSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2Nv
YS5tbQppbmRleCAwZWNkODg2ZWI0MGYwODAyYjExMmNiNzc3OTYxNTJmNTE4OTM3NDQyLi43ZWFk
ZmRlNjBhMDRhMTE4NjQxNjU5Njg3ZDg3OWM3YjRjMzg2ZGVkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1t
CkBAIC03NzcsNyArNzc3LDcgQEAgLSAodm9pZClVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilz
ZXNzaW9uIGRhdGFUYXNrOihOU1VSTFNlc3Npb25EYXRhVGFzayAqKWRhdGEKICAgICAgICAgYXV0
byYgZG93bmxvYWRNYW5hZ2VyID0gX3Nlc3Npb24tPm5ldHdvcmtQcm9jZXNzKCkuZG93bmxvYWRN
YW5hZ2VyKCk7CiAgICAgICAgIGF1dG8gZG93bmxvYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktp
dDo6RG93bmxvYWQ+KGRvd25sb2FkTWFuYWdlciwgZG93bmxvYWRJRCwgZG93bmxvYWRUYXNrLCBf
c2Vzc2lvbi0+c2Vzc2lvbklEKCksIG5ldHdvcmtEYXRhVGFzay0+c3VnZ2VzdGVkRmlsZW5hbWUo
KSk7CiAgICAgICAgIG5ldHdvcmtEYXRhVGFzay0+dHJhbnNmZXJTYW5kYm94RXh0ZW5zaW9uVG9E
b3dubG9hZCgqZG93bmxvYWQpOwotICAgICAgICBBU1NFUlQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6
ZmlsZUV4aXN0cyhuZXR3b3JrRGF0YVRhc2stPnBlbmRpbmdEb3dubG9hZExvY2F0aW9uKCkpKTsK
KyAgICAgICAgQVNTRVJUKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobmV0d29ya0RhdGFUYXNrLT5w
ZW5kaW5nRG93bmxvYWRMb2NhdGlvbigpKSk7CiAgICAgICAgIGRvd25sb2FkLT5kaWRDcmVhdGVE
ZXN0aW5hdGlvbihuZXR3b3JrRGF0YVRhc2stPnBlbmRpbmdEb3dubG9hZExvY2F0aW9uKCkpOwog
ICAgICAgICBkb3dubG9hZE1hbmFnZXIuZGF0YVRhc2tCZWNhbWVEb3dubG9hZFRhc2soZG93bmxv
YWRJRCwgV1RGTW92ZShkb3dubG9hZCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUHJvY2Vzc01hYy5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzTWFjLm1tCmluZGV4IDM3ZjNiN2Y3MmFhNTAy
YjMyYmE4MTFlYzliYTA4ZjVlMjU1ODYzYjIuLmY1YmYwNGFlNDY1ZjYyYjc0ZDJiMThhODE3NTkw
MWExNmVhNTU1ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvbWFj
L05ldHdvcmtQcm9jZXNzTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
bWFjL05ldHdvcmtQcm9jZXNzTWFjLm1tCkBAIC0zOCwxMiArMzgsMTIgQEAKICNpbXBvcnQgIlN0
cmluZ1V0aWxpdGllcy5oIgogI2ltcG9ydCAiV0tGb3VuZGF0aW9uLmgiCiAjaW1wb3J0IDxXZWJD
b3JlL0NlcnRpZmljYXRlSW5mby5oPgotI2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3MuaD4KICNpbXBvcnQgPG5vdGlmeS5oPgog
I2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29j
b2EvTGF1bmNoU2VydmljZXNTUEkuaD4KICNpbXBvcnQgPHN5c2V4aXRzLmg+CisjaW1wb3J0IDx3
dGYvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8d3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5oPgog
I2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKaW5kZXggODgy
YjE0NWY3ZmNiMTM0MzA0MjhhMmNiZTczYTU1MzE5NmE4YTQ4NC4uMWQwOWY4MmIzMDcyMzUyZGMz
YjcyMzEzOWVhOTgxYWE0MTYzMmE2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKQEAgLTMyLDEyICszMiwx
MiBAQAogI2luY2x1ZGUgIlJlc291cmNlQ2FjaGVzVG9DbGVhci5oIgogI2luY2x1ZGUgIldlYkNv
b2tpZU1hbmFnZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NlcnRpZmljYXRlSW5mby5oPgotI2lu
Y2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NvdXBO
ZXR3b3JrU2Vzc2lvbi5oPgogI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgorI2luY2x1ZGUgPHd0
Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL1JBTVNpemUuaD4KICNpbmNsdWRlIDx3dGYv
Z2xpYi9HUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgpAQCAtMTA5
LDcgKzEwOSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdv
cmtQcm9jZXNzKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpCiAgICAgQVNTRVJUKCFwYXJhbWV0
ZXJzLmRpc2tDYWNoZURpcmVjdG9yeS5pc0VtcHR5KCkpOwogICAgIG1fZGlza0NhY2hlRGlyZWN0
b3J5ID0gcGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3Rvcnk7CiAKLSAgICBTb3VwTmV0d29ya1Nl
c3Npb246OmNsZWFyT2xkU291cENhY2hlKFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRpcmVjdG9yeU5h
bWUobV9kaXNrQ2FjaGVEaXJlY3RvcnkpKTsKKyAgICBTb3VwTmV0d29ya1Nlc3Npb246OmNsZWFy
T2xkU291cENhY2hlKEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUobV9kaXNrQ2FjaGVEaXJlY3Rv
cnkpKTsKIAogICAgIE9wdGlvblNldDxOZXR3b3JrQ2FjaGU6OkNhY2hlOjpPcHRpb24+IGNhY2hl
T3B0aW9ucyB7IE5ldHdvcmtDYWNoZTo6Q2FjaGU6Ok9wdGlvbjo6UmVnaXN0ZXJOb3RpZnkgfTsK
ICAgICBpZiAocGFyYW1ldGVycy5zaG91bGRFbmFibGVOZXR3b3JrQ2FjaGVFZmZpY2FjeUxvZ2dp
bmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvdW5peC9QbHVnaW5Q
cm9jZXNzTWFpblVuaXguY3BwIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL3VuaXgvUGx1
Z2luUHJvY2Vzc01haW5Vbml4LmNwcAppbmRleCAyYmQyZWQ1OWFlNmEyZTI0YjA3NDhiMDNjZWJj
MzU2M2M2NjcxODNlLi4zYWRlNGM5NDNmMDliNTFkM2NjM2JlYzJjYTk2MzNmNzNkMTM0OTZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvdW5peC9QbHVnaW5Qcm9jZXNz
TWFpblVuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy91bml4L1BsdWdp
blByb2Nlc3NNYWluVW5peC5jcHAKQEAgLTM0LDggKzM0LDggQEAKICNpbmNsdWRlICJMb2dnaW5n
LmgiCiAjaW5jbHVkZSAiTmV0c2NhcGVQbHVnaW4uaCIKICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNz
LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+
CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogI2lmIFBMQVRGT1JNKEdUSykKICNpbmNs
dWRlIDxndGsvZ3RrLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QZXJzaXN0
ZW5jeVV0aWxzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BlcnNpc3RlbmN5VXRpbHMuY3Bw
CmluZGV4IDVkYmE5NjhiZDdlMGIzOGMzZDIyNjk0ZDZkNWQyZTZiMDY5ZDJhODEuLmVjYTk2NDFk
MjA1MzQ1YzgxODk2ZWI1NjVkZjYyN2Y5NWUzYzUxN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1BlcnNpc3RlbmN5VXRpbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1BlcnNpc3RlbmN5VXRpbHMuY3BwCkBAIC0yNyw4ICsyNyw4IEBACiAjaW5jbHVkZSAiUGVyc2lz
dGVuY3lVdGlscy5oIgogCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUgPFdlYkNvcmUv
RmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CisjaW5jbHVk
ZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTmV0
c2NhcGUvdW5peC9OZXRzY2FwZVBsdWdpbk1vZHVsZVVuaXguY3BwIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvUGx1Z2lucy9OZXRzY2FwZS91bml4L05ldHNjYXBlUGx1Z2luTW9kdWxlVW5peC5jcHAK
aW5kZXggZmIxZDlkYzkyNmZkNjc2NzkzZjQ1NGE3NGZhNTUxYWVlNTcwYzhlNS4uZWVjNDc2MTE1
Yzg0MDNmMTMzYjM5MzYwNTkyYjhmMGExMDNjMzQ0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS91bml4L05ldHNjYXBlUGx1Z2luTW9kdWxlVW5peC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS91bml4L05ldHNj
YXBlUGx1Z2luTW9kdWxlVW5peC5jcHAKQEAgLTMwLDEyICszMCwxMiBAQAogCiAjaW5jbHVkZSAi
TmV0c2NhcGVCcm93c2VyRnVuY3MuaCIKICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzUHJveHkuaCIK
LSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxlcnJuby5oPgogI2lu
Y2x1ZGUgPGZjbnRsLmg+CiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KICNpbmNsdWRlIDxzeXMvdHlw
ZXMuaD4KICNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL3VuaXgvUGx1Z2luU2Vh
cmNoUGF0aC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL3VuaXgvUGx1Z2luU2Vh
cmNoUGF0aC5jcHAKaW5kZXggZThhZjk2MDRjZTU1OTVhNDQ0ZmU4Y2E1MDQ1ZDNhNjE3YWIyMzY0
YS4uMmJkNTQ5YTk1ZGZhNjc1Y2U0N2Y1NmQ3OGE1OWI0ZjczMTVhMTFhYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy91bml4L1BsdWdpblNlYXJjaFBhdGguY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvdW5peC9QbHVnaW5TZWFyY2hQYXRoLmNw
cApAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlBsdWdp
blNlYXJjaFBhdGguaCIKIAotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgorI2luY2x1
ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJNZW1vcnlT
YW1wbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJNZW1vcnlTYW1wbGVyLmgKaW5kZXgg
ODA4MTNmZWEwNTBmMjA0OTFiZDFjOGI1MGU5MGIxY2JiYmNhYTM0NC4uNzIxY2RiZjM4OTIyNjRi
YzlmZDc5MmI1MDgzODMwZmY1MTlmYzliZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViTWVtb3J5U2FtcGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYk1lbW9y
eVNhbXBsZXIuaApAQCAtNTIsOCArNTIsOCBAQAogI2lmIEVOQUJMRShNRU1PUllfU0FNUExFUikK
IAogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVT
eXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVT
eXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtODcsNyArODcsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgaW5pdGlhbGl6ZVRpbWVycyhkb3VibGUpOwogICAgIHZvaWQgc2FtcGxlVGlt
ZXJGaXJlZCgpOwogICAgIHZvaWQgc3RvcFRpbWVyRmlyZWQoKTsKLSAgICB2b2lkIGFwcGVuZEN1
cnJlbnRNZW1vcnlVc2FnZVRvRmlsZShXZWJDb3JlOjpGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVI
YW5kbGUmKTsKKyAgICB2b2lkIGFwcGVuZEN1cnJlbnRNZW1vcnlVc2FnZVRvRmlsZShGaWxlU3lz
dGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUmKTsKICAgICB2b2lkIHNlbmRNZW1vcnlQcmVzc3VyZUV2
ZW50KCk7CiAgICAgCiAgICAgU3lzdGVtTWFsbG9jU3RhdHMgc2FtcGxlU3lzdGVtTWFsbG9jKCkg
Y29uc3Q7CkBAIC05NSw3ICs5NSw3IEBAIHByaXZhdGU6CiAgICAgV2ViTWVtb3J5U3RhdGlzdGlj
cyBzYW1wbGVXZWJLaXQoKSBjb25zdDsKICAgICBTdHJpbmcgcHJvY2Vzc05hbWUoKSBjb25zdDsK
ICAgICAKLSAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgbV9zYW1w
bGVMb2dGaWxlIHsgV2ViQ29yZTo6RmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRs
ZSB9OworICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBtX3NhbXBsZUxvZ0ZpbGUg
eyBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlIH07CiAgICAgU3RyaW5nIG1f
c2FtcGxlTG9nRmlsZVBhdGg7CiAgICAgV2ViQ29yZTo6VGltZXIgbV9zYW1wbGVUaW1lcjsKICAg
ICBXZWJDb3JlOjpUaW1lciBtX3N0b3BUaW1lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL2dsaWIvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoR0xpYi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9nbGliL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aEdMaWIuY3BwCmluZGV4IGE3MGI0MWEw
OWE5MzBiYmRjM2I1NDFjZTZhNzA4YWQ4OWJiYzJmNGIuLjhkOTlmY2EyNTYyNWRkODJiZGNmY2Mw
ZTY3NDE0NmUxOTZiZTUzNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2dsaWIv
UHJvY2Vzc0V4ZWN1dGFibGVQYXRoR0xpYi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
Z2xpYi9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhHTGliLmNwcApAQCAtMjcsOCArMjcsOCBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlByb2Nlc3NFeGVjdXRhYmxlUGF0aC5oIgogCi0j
aW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8Z2xpYi5oPgorI2luY2x1
ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR0xpYlV0aWxpdGllcy5o
PgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L2lvcy9DaGlsZFByb2Nlc3NJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvQ2hpbGRQ
cm9jZXNzSU9TLm1tCmluZGV4IDgxZDU0ZjNiZjAwOWVmYWYwNWQ0MDJkNmY1Y2ZlYThkMTBmNGI1
NjcuLjY5ZDUzY2ZmMzE0YTk1Y2JjNGE4MDdhYjk4YzllY2E4MmZlMmJlMjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9DaGlsZFByb2Nlc3NJT1MubW0KKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvaW9zL0NoaWxkUHJvY2Vzc0lPUy5tbQpAQCAtMzEsNyArMzEsNiBAQAog
CiAjaW1wb3J0ICJTYW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzLmgiCiAjaW1wb3J0ICJY
UENTZXJ2aWNlRW50cnlQb2ludC5oIgotI2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0Zsb2F0aW5nUG9pbnRFbnZpcm9ubWVudC5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9TeXN0ZW1WZXJzaW9uLmg+CiAjaW1wb3J0IDxtYWNoL21hY2guaD4KQEAgLTM5LDYgKzM4
LDcgQEAKICNpbXBvcnQgPHB3ZC5oPgogI2ltcG9ydCA8c3RkbGliLmg+CiAjaW1wb3J0IDxzeXNl
eGl0cy5oPgorI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogI2lmIEVOQUJMRShNQU5VQUxf
U0FOREJPWElORykKICNpbXBvcnQgPHd0Zi9zcGkvZGFyd2luL1NhbmRib3hTUEkuaD4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9DaGlsZFByb2Nlc3NNYWMubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9tYWMvQ2hpbGRQcm9jZXNzTWFjLm1tCmluZGV4IDIwYzRhOWMxYTQy
Nzc2ZTY2NzExMGI2MTYwYTg4MjU5MzM4OGY1YTEuLjJlYzVmZjYwYjJmNWEyYTAyOWQ3YTJlNDU3
NGEzMTQ3MDM5MDQ4MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9DaGls
ZFByb2Nlc3NNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0NoaWxkUHJvY2Vz
c01hYy5tbQpAQCAtMzUsNyArMzUsNiBAQAogI2ltcG9ydCAiV0tGb3VuZGF0aW9uLmgiCiAjaW1w
b3J0ICJYUENTZXJ2aWNlRW50cnlQb2ludC5oIgogI2ltcG9ydCA8V2ViQ29yZS9GaWxlSGFuZGxl
Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPFdlYkNvcmUvU3lz
dGVtVmVyc2lvbi5oPgogI2ltcG9ydCA8bWFjaC1vL2R5bGQuaD4KICNpbXBvcnQgPG1hY2gvbWFj
aC5oPgpAQCAtNDYsNiArNDUsNyBAQAogI2ltcG9ydCA8c3lzL3N5c2N0bC5oPgogI2ltcG9ydCA8
c3lzZXhpdHMuaD4KICNpbXBvcnQgPHd0Zi9EYXRhTG9nLmg+CisjaW1wb3J0IDx3dGYvRmlsZVN5
c3RlbS5oPgogI2ltcG9ydCA8d3RmL1JhbmRvbU51bWJlci5oPgogI2ltcG9ydCA8d3RmL1Njb3Bl
Lmg+CiAjaW1wb3J0IDx3dGYvU3lzdGVtVHJhY2luZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvbWFjL1NhbmRib3hFeHRlbnNpb25NYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9tYWMvU2FuZGJveEV4dGVuc2lvbk1hYy5tbQppbmRleCAwY2VjOTg1Yzc4NWM3NzM2NTk3
NzJkMjRmMWI2ZDU3NmQ3MWQ3NWUxLi5hZThjN2ViMDIyMTQ3NzhhMDViNzE2OWIzOTQ3ZmViZjFm
OTk1MmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvU2FuZGJveEV4dGVu
c2lvbk1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvU2FuZGJveEV4dGVuc2lv
bk1hYy5tbQpAQCAtMzEsOCArMzEsOCBAQAogI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgogI2lt
cG9ydCAiRGVjb2Rlci5oIgogI2ltcG9ydCAiRW5jb2Rlci5oIgotI2ltcG9ydCA8V2ViQ29yZS9G
aWxlU3lzdGVtLmg+CiAjaW1wb3J0IDxzeXMvc3RhdC5oPgorI2ltcG9ydCA8d3RmL0ZpbGVTeXN0
ZW0uaD4KICNpbXBvcnQgPHd0Zi9zcGkvZGFyd2luL1NhbmRib3hTUEkuaD4KICNpbXBvcnQgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKaW5kZXggMzhmNDJjYjkxYTUzOGVkZTY4
ZTIyNTk0MTA1MGY5NmFmNjdiOTY5OC4uMDVhZTQxNjAwZjA2YmJiMTUwYzk4YzRiMDJmMTY5ZDEx
NzhiNjk5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRl
bnRSdWxlTGlzdFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
Q29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCkBAIC00OCw3ICs0OCw3IEBACiAKIG5hbWVzcGFjZSBB
UEkgewogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDo6TmV0d29ya0NhY2hlOwotdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU6OkZpbGVTeXN0ZW07Cit1c2luZyBuYW1lc3BhY2UgV1RGOjpGaWxlU3lzdGVt
OwogCiBDb250ZW50UnVsZUxpc3RTdG9yZSYgQ29udGVudFJ1bGVMaXN0U3RvcmU6OmxlZ2FjeURl
ZmF1bHRTdG9yZSgpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvQVBJV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQppbmRleCA0YTJlYzM4NzIz
N2ZmZGM4Y2E4OTQ3MTg2ZmZlZDBkNWNhNGVhNzU0Li4zODg0ZjQzYzFlMjBhMTI5OGJhODg1N2Vi
MWIwOTE1NWE5OGIwMDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvQVBJV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9BUElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KQEAgLTI4LDkgKzI4
LDggQEAKIAogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlICJTYW5kYm94
VXRpbGl0aWVzLmgiCi0KICNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KLSNpbmNs
dWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgog
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxp
Y2F0aW9uQ2hlY2tzLmg+CkBAIC0xNjksNyArMTY4LDcgQEAgV1RGOjpTdHJpbmcgV2Vic2l0ZURh
dGFTdG9yZTo6bGVnYWN5RGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkKICAgICAv
LyBDdXJyZW50bHksIHRoZSB0b3AgbGV2ZWwgb2YgdGhhdCBkaXJlY3RvcnkgY29udGFpbnMgZW50
aXRpZXMgcmVsYXRlZCB0byBXZWJTUUwgZGF0YWJhc2VzLgogICAgIC8vIFdlIHNob3VsZCBmaXgg
dGhpcywgYW5kIG1vdmUgV2ViU1FMIGludG8gYSBzdWJkaXJlY3RvcnkgKGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ4MDcpCiAgICAgLy8gSW4gdGhlIG1lYW50aW1l
LCBhbiBlbnRpdHkgbmFtZSBwcmVmaXhlZCB3aXRoIHRocmVlIHVuZGVyc2NvcmVzIHdpbGwgbm90
IGNvbmZsaWN0IHdpdGggYW55IFdlYlNRTCBlbnRpdGllcy4KLSAgICByZXR1cm4gV2ViQ29yZTo6
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGxlZ2FjeURlZmF1bHRXZWJTUUxE
YXRhYmFzZURpcmVjdG9yeSgpLCAiX19fSW5kZXhlZERCIik7CisgICAgcmV0dXJuIEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChsZWdhY3lEZWZhdWx0V2ViU1FMRGF0YWJhc2VE
aXJlY3RvcnkoKSwgIl9fX0luZGV4ZWREQiIpOwogfQogCiBXVEY6OlN0cmluZyBXZWJzaXRlRGF0
YVN0b3JlOjpsZWdhY3lEZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGli
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3Rv
cmVHTGliLmNwcAppbmRleCBlMWM0NTI5YjNkMjFlZTU4YmZlZmI1YzE4ZmVmYjUxMTIyYzAxNjBm
Li5mNWFiOTMxY2JlZDNiNzcxYmYzY2VjODEyY2I3NDJlNDliYjY4NTMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRlRGF0YVN0b3JlR0xpYi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvQVBJV2Vic2l0ZURhdGFT
dG9yZUdMaWIuY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgogCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lz
dGVtLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9H
VW5pcXVlUHRyLmg+CiAKICNpZiBQTEFURk9STShHVEspCkBAIC00NiwxMiArNDYsMTIgQEAgV1RG
OjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rv
cnkoKQogLy8gV2h5IGlzIG9ubHkgdGhpcyBkaXJlY3RvcnkgbmFtZXNwYWNlZCB0byBhIHBhcnRp
Y3VsYXIgYXBwbGljYXRpb24/CiBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZ19nZXRfcHJnbmFtZSgpKSwgIldlYktpdENhY2hlIikpOworICAgIHJldHVybiBj
YWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihnX2dldF9wcmduYW1lKCkpLCAiV2ViS2l0Q2FjaGUiKSk7CiB9CiAKIFdURjo6U3Ry
aW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKQogewot
ICAgIHJldHVybiBjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihnX2dldF9wcmduYW1lKCkpLCAi
Q2FjaGVTdG9yYWdlIikpOworICAgIHJldHVybiBjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3Rl
bTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihnX2dldF9wcmduYW1lKCkpLCAi
Q2FjaGVTdG9yYWdlIikpOwogfQogCiBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKQpAQCAtOTEsMTkgKzkxLDE5IEBAIFdURjo6
U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGly
ZWN0b3J5KCkKIAogV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6Y2FjaGVEaXJlY3RvcnlG
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgV1RGOjpTdHJpbmcmIGRpcmVjdG9yeU5hbWUp
CiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKGdfZ2V0X3VzZXJfY2FjaGVfZGlyKCkpLCBkaXJlY3RvcnlOYW1lKTsKKyAgICByZXR1cm4g
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0cmluZ0Zy
b21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfdXNlcl9jYWNoZV9kaXIoKSksIGRpcmVj
dG9yeU5hbWUpOwogfQogCiBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjp3ZWJzaXRlRGF0
YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGly
ZWN0b3J5TmFtZSkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oZ19nZXRfdXNlcl9kYXRhX2RpcigpKSwgZGlyZWN0b3J5TmFtZSk7Cisg
ICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVt
OjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGdfZ2V0X3VzZXJfZGF0YV9kaXIo
KSksIGRpcmVjdG9yeU5hbWUpOwogfQogCiBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjps
ZWdhY3lEZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpCiB7CiAjaWYgUExBVEZPUk0o
V1BFKQogICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGNhY2hlRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5h
bWUoZ19nZXRfdXNlcl9jYWNoZV9kaXIoKSwgIndwZSIsICJhcHBjYWNoZSIsIG51bGxwdHIpKTsK
LSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihjYWNoZURpcmVjdG9yeS5nZXQoKSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06
OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY2FjaGVEaXJlY3RvcnkuZ2V0KCkp
OwogI2VuZGlmCiAgICAgcmV0dXJuIGRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCk7
CiB9CkBAIC0xMTIsNyArMTEyLDcgQEAgV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVn
YWN5RGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpCiB7CiAjaWYgUExBVEZPUk0oV1BFKQog
ICAgIEdVbmlxdWVQdHI8Y2hhcj4gZGlza0NhY2hlRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUo
Z19nZXRfdXNlcl9jYWNoZV9kaXIoKSwgIndwZSIsICJjYWNoZSIsIG51bGxwdHIpKTsKLSAgICBy
ZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihkaXNrQ2FjaGVEaXJlY3RvcnkuZ2V0KCkpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpz
dHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRpc2tDYWNoZURpcmVjdG9yeS5nZXQo
KSk7CiAjZW5kaWYKICAgICByZXR1cm4gZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpOwog
fQpAQCAtMTIxLDcgKzEyMSw3IEBAIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2Fj
eURlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpCiB7CiAjaWYgUExBVEZPUk0oV1BFKQog
ICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGRhdGFiYXNlRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUo
Z19nZXRfdXNlcl9kYXRhX2RpcigpLCAid3BlIiwgImRhdGFiYXNlcyIsIG51bGxwdHIpKTsKLSAg
ICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihkYXRhYmFzZURpcmVjdG9yeS5nZXQoKSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06
OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGF0YWJhc2VEaXJlY3RvcnkuZ2V0
KCkpOwogI2VuZGlmCiAgICAgcmV0dXJuIGRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgp
OwogfQpAQCAtMTMwLDcgKzEzMCw3IEBAIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6Omxl
Z2FjeURlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpCiB7CiAjaWYgUExBVEZPUk0o
V1BFKQogICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KGdf
YnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9kYXRhX2RpcigpLCAid3BlIiwgImRhdGFiYXNlcyIs
ICJpbmRleGVkZGIiLCBudWxscHRyKSk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06
OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oaW5kZXhlZERCRGF0YWJhc2VEaXJl
Y3RvcnkuZ2V0KCkpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKGluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5LmdldCgpKTsKICNlbmRp
ZgogICAgIHJldHVybiBkZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKTsKIH0KQEAg
LTEzOSw3ICsxMzksNyBAQCBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZh
dWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkKIHsKICNpZiBQTEFURk9STShXUEUpCiAgICAgR1Vu
aXF1ZVB0cjxnY2hhcj4gc3RvcmFnZURpcmVjdG9yeShnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3Vz
ZXJfZGF0YV9kaXIoKSwgIndwZSIsICJsb2NhbHN0b3JhZ2UiLCBudWxscHRyKSk7Ci0gICAgcmV0
dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oc3RvcmFnZURpcmVjdG9yeS5nZXQoKSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnN0cmlu
Z0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oc3RvcmFnZURpcmVjdG9yeS5nZXQoKSk7CiAj
ZW5kaWYKICAgICByZXR1cm4gZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpOwogfQpAQCAt
MTQ4LDcgKzE0OCw3IEBAIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1
bHRNZWRpYUNhY2hlRGlyZWN0b3J5KCkKIHsKICNpZiBQTEFURk9STShXUEUpCiAgICAgR1VuaXF1
ZVB0cjxnY2hhcj4gY2FjaGVEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFtZShnX2dldF91c2VyX2Nh
Y2hlX2RpcigpLCAid3BlIiwgIm1lZGlhY2FjaGUiLCBudWxscHRyKSk7Ci0gICAgcmV0dXJuIFdl
YkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY2Fj
aGVEaXJlY3RvcnkuZ2V0KCkpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNhY2hlRGlyZWN0b3J5LmdldCgpKTsKICNlbmRpZgogICAg
IHJldHVybiBkZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpOwogfQpAQCAtMTU3LDcgKzE1Nyw3
IEBAIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRNZWRpYUtleXNT
dG9yYWdlRGlyZWN0b3J5KCkKIHsKICNpZiBQTEFURk9STShXUEUpCiAgICAgR1VuaXF1ZVB0cjxn
Y2hhcj4gbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeShnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3Vz
ZXJfZGF0YV9kaXIoKSwgIndwZSIsICJtZWRpYWtleXMiLCBudWxscHRyKSk7Ci0gICAgcmV0dXJu
IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeS5nZXQoKSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06
OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24obWVkaWFLZXlzU3RvcmFnZURpcmVj
dG9yeS5nZXQoKSk7CiAjZW5kaWYKICAgICByZXR1cm4gZGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VE
aXJlY3RvcnkoKTsKIH0KQEAgLTE2Niw3ICsxNjYsNyBAQCBTdHJpbmcgV2Vic2l0ZURhdGFTdG9y
ZTo6bGVnYWN5RGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpCiB7CiAj
aWYgUExBVEZPUk0oV1BFKQogICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGRldmljZUlkSGFzaFNhbHRz
U3RvcmFnZURpcmVjdG9yeShnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfZGF0YV9kaXIoKSwg
IndwZSIsICJkZXZpY2VpZGhhc2hzYWx0cyIsIG51bGxwdHIpKTsKLSAgICByZXR1cm4gV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihkZXZpY2VJ
ZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkuZ2V0KCkpOworICAgIHJldHVybiBGaWxlU3lzdGVt
OjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRldmljZUlkSGFzaFNhbHRzU3Rv
cmFnZURpcmVjdG9yeS5nZXQoKSk7CiAjZW5kaWYKICAgICByZXR1cm4gZGVmYXVsdERldmljZUlk
SGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpOwogfQpAQCAtMTc0LDcgKzE3NCw3IEBAIFN0cmlu
ZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdl
RGlyZWN0b3J5KCkKIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRK
YXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpCiB7CiAgICAgR1VuaXF1ZVB0cjxnY2hh
cj4gamF2YVNjcmlwdENvcmVDb25maWdEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFtZShnX2dldF91
c2VyX2RhdGFfZGlyKCksIEJBU0VfRElSRUNUT1JZLCAiSmF2YVNjcmlwdENvcmVEZWJ1ZyIsIG51
bGxwdHIpKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihqYXZhU2NyaXB0Q29yZUNvbmZpZ0RpcmVjdG9yeS5nZXQoKSk7
CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oamF2YVNjcmlwdENvcmVDb25maWdEaXJlY3RvcnkuZ2V0KCkpOwogfQogCiBSZWY8V2ViS2l0
OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4gV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dERhdGFTdG9yZUNvbmZpZ3VyYXRpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAKaW5kZXggNjc0YTVkYjA0M2M4YTYwZjM2MjBhYTdi
YTAxOGMxZjk4NWVkZjhhOS4uYjA0NjZlOTE0MDkwYmMwNTU5NjZlNmI5ZGYzMTllYTMwNGRiMjM1
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFi
YXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJh
c2UuY3BwCkBAIC0yOSwxMSArMjksMTEgQEAKIAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL0JpdG1hcEltYWdlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVt
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRl
U3RhdGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVUcmFuc2FjdGlvbi5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0u
aD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZhdmljb25EYXRhYmFzZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGYXZpY29uRGF0YWJhc2UuY3Bw
CmluZGV4IDliZTcyNTNmODVlOTFkYTExYjk1ZWQyODA5ZWI0NGI1YTM3MTVhNWEuLmUwMTY0ODY4
MTcxYTVkOGJlZThhM2UxODZhYzY4MjVjNDkxZDk3MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZhdmljb25EYXRhYmFzZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcApA
QCAtMjMsMTIgKzIzLDEyIEBACiAjaW5jbHVkZSAiSWNvbkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAi
V2ViS2l0RmF2aWNvbkRhdGFiYXNlUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYlByZWZlcmVuY2Vz
LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9J
bWFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50U2l6ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
UmVmUHRyQ2Fpcm8uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1
ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNs
dWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9TZXRGb3JTY29wZS5oPgogI2luY2x1
ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KQEAgLTI3Myw3ICsyNzMsNyBAQCB2b2lkIHdlYmtpdEZh
dmljb25EYXRhYmFzZU9wZW4oV2ViS2l0RmF2aWNvbkRhdGFiYXNlKiBkYXRhYmFzZSwgY29uc3Qg
U3RyaW5nJiBwYQogICAgIHByaXYtPmljb25EYXRhYmFzZS0+c2V0RW5hYmxlZCh0cnVlKTsKICAg
ICBwcml2LT5pY29uRGF0YWJhc2UtPnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoV2ViUHJlZmVy
ZW5jZXM6OmFueVBhZ2VzQXJlVXNpbmdQcml2YXRlQnJvd3NpbmcoKSk7CiAKLSAgICBpZiAoIXBy
aXYtPmljb25EYXRhYmFzZS0+b3BlbihXZWJDb3JlOjpGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1l
KHBhdGgpLCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUocGF0aCkpKSB7Cisg
ICAgaWYgKCFwcml2LT5pY29uRGF0YWJhc2UtPm9wZW4oRmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFt
ZShwYXRoKSwgRmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKHBhdGgpKSkgewogICAgICAgICBw
cml2LT5pY29uRGF0YWJhc2UgPSBudWxscHRyOwogICAgICAgICBJY29uRGF0YWJhc2U6OmFsbG93
RGF0YWJhc2VDbGVhbnVwKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZpbGVDaG9vc2VyUmVxdWVzdC5jcHAKaW5kZXgg
MzdlNmNjYTBjZWJjZTkxNDczMGUzYzZkNDI1YzVmZWY3N2ZiNDg1Zi4uMDk5ODBhYWUwNjk5ZWJj
ZTlkMzNlOWM1YTY5N2EwMmRlMDQ3MDNkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3QuY3BwCkBA
IC0yNSw5ICsyNSw5IEBACiAjaW5jbHVkZSAiQVBJU3RyaW5nLmgiCiAjaW5jbHVkZSAiV2ViS2l0
RmlsZUNob29zZXJSZXF1ZXN0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYk9wZW5QYW5lbFJlc3Vs
dExpc3RlbmVyUHJveHkuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1RleHRFbmNvZGluZy5oPgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+
CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5j
bHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIu
aD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdl
YkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vi
Q29udGV4dC5jcHAKaW5kZXggMGYzOWUxMjVmM2RhNmM0ODM5NmE0MGM5Y2RmZThmNGM0MWQ5Njlh
ZS4uNjZkODNhNzE4OGU2Y2RhNzBlZjJiNDlmMjYzOTk3YWM0ZWY2OTUwYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAK
QEAgLTMzMywyMCArMzMzLDIwIEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYkNvbnRleHRDb25zdHJ1
Y3RlZChHT2JqZWN0KiBvYmplY3QpCiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBidW5kbGVGaWxlbmFt
ZShnX2J1aWxkX2ZpbGVuYW1lKGluamVjdGVkQnVuZGxlRGlyZWN0b3J5KCksIElOSkVDVEVEX0JV
TkRMRV9GSUxFTkFNRSwgbnVsbHB0cikpOwogCiAgICAgQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24gY29uZmlndXJhdGlvbjsKLSAgICBjb25maWd1cmF0aW9uLnNldEluamVjdGVkQnVuZGxl
UGF0aChXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKGJ1bmRsZUZpbGVuYW1lLmdldCgpKSk7CisgICAgY29uZmlndXJhdGlvbi5zZXRJbmplY3Rl
ZEJ1bmRsZVBhdGgoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihidW5kbGVGaWxlbmFtZS5nZXQoKSkpOwogICAgIGNvbmZpZ3VyYXRpb24uc2V0TWF4aW11bVBy
b2Nlc3NDb3VudCgxKTsKICAgICBjb25maWd1cmF0aW9uLnNldERpc2tDYWNoZVNwZWN1bGF0aXZl
VmFsaWRhdGlvbkVuYWJsZWQodHJ1ZSk7CiAKICAgICBXZWJLaXRXZWJDb250ZXh0KiB3ZWJDb250
ZXh0ID0gV0VCS0lUX1dFQl9DT05URVhUKG9iamVjdCk7CiAgICAgV2ViS2l0V2ViQ29udGV4dFBy
aXZhdGUqIHByaXYgPSB3ZWJDb250ZXh0LT5wcml2OwogICAgIGlmIChwcml2LT53ZWJzaXRlRGF0
YU1hbmFnZXIgJiYgIXdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9pc19lcGhlbWVyYWwocHJp
di0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSkgewotICAgICAgICBjb25maWd1cmF0aW9uLnNl
dExvY2FsU3RvcmFnZURpcmVjdG9yeShXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfbG9j
YWxfc3RvcmFnZV9kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSkpOwot
ICAgICAgICBjb25maWd1cmF0aW9uLnNldERpc2tDYWNoZURpcmVjdG9yeShXZWJDb3JlOjpGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3Ry
aW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFn
ZXJfZ2V0X2Rpc2tfY2FjaGVfZGlyZWN0b3J5KHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQo
KSkpLCBuZXR3b3JrQ2FjaGVTdWJkaXJlY3RvcnkpKTsKLSAgICAgICAgY29uZmlndXJhdGlvbi5z
ZXRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zy
b21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dl
dF9vZmZsaW5lX2FwcGxpY2F0aW9uX2NhY2hlX2RpcmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1h
bmFnZXIuZ2V0KCkpKSk7Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0SW5kZXhlZERCRGF0YWJh
c2VEaXJlY3RvcnkoV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2luZGV4ZWRkYl9kaXJl
Y3RvcnkocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSkpOwotICAgICAgICBjb25maWd1
cmF0aW9uLnNldFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0
cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0X3dlYnNpdGVfZGF0YV9tYW5h
Z2VyX2dldF93ZWJzcWxfZGlyZWN0b3J5KHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkp
KTsKKyAgICAgICAgY29uZmlndXJhdGlvbi5zZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoRmlsZVN5
c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vic2l0ZV9k
YXRhX21hbmFnZXJfZ2V0X2xvY2FsX3N0b3JhZ2VfZGlyZWN0b3J5KHByaXYtPndlYnNpdGVEYXRh
TWFuYWdlci5nZXQoKSkpKTsKKyAgICAgICAgY29uZmlndXJhdGlvbi5zZXREaXNrQ2FjaGVEaXJl
Y3RvcnkoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0
cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0X3dlYnNpdGVfZGF0YV9tYW5h
Z2VyX2dldF9kaXNrX2NhY2hlX2RpcmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0
KCkpKSwgbmV0d29ya0NhY2hlU3ViZGlyZWN0b3J5KSk7CisgICAgICAgIGNvbmZpZ3VyYXRpb24u
c2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeShGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfb2ZmbGlu
ZV9hcHBsaWNhdGlvbl9jYWNoZV9kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdl
dCgpKSkpOworICAgICAgICBjb25maWd1cmF0aW9uLnNldEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0
b3J5KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0
X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9pbmRleGVkZGJfZGlyZWN0b3J5KHByaXYtPndlYnNp
dGVEYXRhTWFuYWdlci5nZXQoKSkpKTsKKyAgICAgICAgY29uZmlndXJhdGlvbi5zZXRXZWJTUUxE
YXRhYmFzZURpcmVjdG9yeShGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfd2Vic3FsX2RpcmVjdG9yeShw
cml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSk7CiAgICAgfSBlbHNlIGlmICghcHJpdi0+
bG9jYWxTdG9yYWdlRGlyZWN0b3J5LmlzTnVsbCgpKQotICAgICAgICBjb25maWd1cmF0aW9uLnNl
dExvY2FsU3RvcmFnZURpcmVjdG9yeShXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPmxvY2FsU3RvcmFnZURpcmVjdG9yeS5kYXRhKCkp
KTsKKyAgICAgICAgY29uZmlndXJhdGlvbi5zZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoRmlsZVN5
c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5sb2NhbFN0b3Jh
Z2VEaXJlY3RvcnkuZGF0YSgpKSk7CiAKICAgICBwcml2LT5wcm9jZXNzUG9vbCA9IFdlYlByb2Nl
c3NQb29sOjpjcmVhdGUoY29uZmlndXJhdGlvbik7CiAKQEAgLTkyNCw3ICs5MjQsNyBAQCB2b2lk
IHdlYmtpdF93ZWJfY29udGV4dF9zZXRfZmF2aWNvbl9kYXRhYmFzZV9kaXJlY3RvcnkoV2ViS2l0
V2ViQ29udGV4dCogY29udGV4dAogICAgIFdlYktpdFdlYkNvbnRleHRQcml2YXRlKiBwcml2ID0g
Y29udGV4dC0+cHJpdjsKICAgICBlbnN1cmVGYXZpY29uRGF0YWJhc2UoY29udGV4dCk7CiAKLSAg
ICBTdHJpbmcgZGlyZWN0b3J5UGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21G
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisgICAgU3RyaW5nIGRpcmVjdG9yeVBhdGgg
PSBGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwog
ICAgIC8vIFVzZSBkZWZhdWx0IGlmIG51bGxwdHIgaXMgcGFzc2VkIGFzIHBhcmFtZXRlci4KICAg
ICBpZiAoZGlyZWN0b3J5UGF0aC5pc0VtcHR5KCkpIHsKICNpZiBQTEFURk9STShHVEspCkBAIC05
MzMsNyArOTMzLDcgQEAgdm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2Zhdmljb25fZGF0YWJh
c2VfZGlyZWN0b3J5KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQKICAgICAgICAgY29uc3QgY2hh
ciogcG9ydERpcmVjdG9yeSA9ICJ3cGUiOwogI2VuZGlmCiAgICAgICAgIEdVbmlxdWVQdHI8Z2No
YXI+IGRhdGFiYXNlRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9jYWNoZV9k
aXIoKSwgcG9ydERpcmVjdG9yeSwgImljb25kYXRhYmFzZSIsIG51bGxwdHIpKTsKLSAgICAgICAg
ZGlyZWN0b3J5UGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oZGF0YWJhc2VEaXJlY3RvcnkuZ2V0KCkpOworICAgICAgICBkaXJlY3Rv
cnlQYXRoID0gRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihk
YXRhYmFzZURpcmVjdG9yeS5nZXQoKSk7CiAgICAgfQogICAgIHByaXYtPmZhdmljb25EYXRhYmFz
ZURpcmVjdG9yeSA9IGRpcmVjdG9yeVBhdGgudXRmOCgpOwogCkBAIC05NDIsNyArOTQyLDcgQEAg
dm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2Zhdmljb25fZGF0YWJhc2VfZGlyZWN0b3J5KFdl
YktpdFdlYkNvbnRleHQqIGNvbnRleHQKICAgICAgICAgIldlYnBhZ2VJY29ucy5kYiIsIG51bGxw
dHIpKTsKIAogICAgIC8vIFNldHRpbmcgdGhlIHBhdGggd2lsbCBjYXVzZSB0aGUgaWNvbiBkYXRh
YmFzZSB0byBiZSBvcGVuZWQuCi0gICAgd2Via2l0RmF2aWNvbkRhdGFiYXNlT3Blbihwcml2LT5m
YXZpY29uRGF0YWJhc2UuZ2V0KCksIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oZmF2aWNvbkRhdGFiYXNlUGF0aC5nZXQoKSkpOworICAgIHdl
YmtpdEZhdmljb25EYXRhYmFzZU9wZW4ocHJpdi0+ZmF2aWNvbkRhdGFiYXNlLmdldCgpLCBGaWxl
U3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZhdmljb25EYXRhYmFz
ZVBhdGguZ2V0KCkpKTsKIAogICAgIGlmICh3ZWJraXRfd2ViX2NvbnRleHRfaXNfZXBoZW1lcmFs
KGNvbnRleHQpKQogICAgICAgICB3ZWJraXRGYXZpY29uRGF0YWJhc2VTZXRQcml2YXRlQnJvd3Np
bmdFbmFibGVkKHByaXYtPmZhdmljb25EYXRhYmFzZS5nZXQoKSwgdHJ1ZSk7CkBAIC0xMDI2LDcg
KzEwMjYsNyBAQCB2b2lkIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfYWRkaXRpb25hbF9wbHVnaW5z
X2RpcmVjdG9yeShXZWJLaXRXZWJDb250ZXh0KiBjb250ZQogICAgIGdfcmV0dXJuX2lmX2ZhaWwo
ZGlyZWN0b3J5KTsKIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQotICAgIGNvbnRl
eHQtPnByaXYtPnByb2Nlc3NQb29sLT5zZXRBZGRpdGlvbmFsUGx1Z2luc0RpcmVjdG9yeShXZWJD
b3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRpcmVj
dG9yeSkpOworICAgIGNvbnRleHQtPnByaXYtPnByb2Nlc3NQb29sLT5zZXRBZGRpdGlvbmFsUGx1
Z2luc0RpcmVjdG9yeShGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKGRpcmVjdG9yeSkpOwogI2VuZGlmCiB9CiAKQEAgLTE0MTgsNyArMTQxOCw3IEBAIHZvaWQg
d2Via2l0X3dlYl9jb250ZXh0X3NldF9kaXNrX2NhY2hlX2RpcmVjdG9yeShXZWJLaXRXZWJDb250
ZXh0KiBjb250ZXh0LCBjb25zCiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX0NP
TlRFWFQoY29udGV4dCkpOwogICAgIGdfcmV0dXJuX2lmX2ZhaWwoZGlyZWN0b3J5KTsKIAotICAg
IGNvbnRleHQtPnByaXYtPnByb2Nlc3NQb29sLT5jb25maWd1cmF0aW9uKCkuc2V0RGlza0NhY2hl
RGlyZWN0b3J5KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChX
ZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRp
cmVjdG9yeSksIG5ldHdvcmtDYWNoZVN1YmRpcmVjdG9yeSkpOworICAgIGNvbnRleHQtPnByaXYt
PnByb2Nlc3NQb29sLT5jb25maWd1cmF0aW9uKCkuc2V0RGlza0NhY2hlRGlyZWN0b3J5KEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRpcmVjdG9yeSksIG5ldHdvcmtDYWNoZVN1YmRpcmVjdG9y
eSkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuY3BwCmluZGV4IDdlMWQxNGI2
N2I5NTM4ZjQ3NWUwZjhhZjQ1MGFhYmRlZjJlMjE1NWUuLjFjYzA2NTQxMWU3MzFmYTY3MmM0MzRm
M2IzYzBhYmU5YTU2OTNlYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmNwcApAQCAtMjYsOCAr
MjYsOCBAQAogI2luY2x1ZGUgIldlYktpdFdlYnNpdGVEYXRhTWFuYWdlclByaXZhdGUuaCIKICNp
bmNsdWRlICJXZWJLaXRXZWJzaXRlRGF0YVByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0
YUZldGNoT3B0aW9uLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVk
ZSA8Z2xpYi9naTE4bi1saWIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1
ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9XVEZHVHlwZS5o
PgogCkBAIC0zNjMsMTMgKzM2MywxMyBAQCBBUEk6OldlYnNpdGVEYXRhU3RvcmUmIHdlYmtpdFdl
YnNpdGVEYXRhTWFuYWdlckdldERhdGFTdG9yZShXZWJLaXRXZWJzaXRlRGF0YU1hbgogICAgIGlm
ICghcHJpdi0+d2Vic2l0ZURhdGFTdG9yZSkgewogICAgICAgICBhdXRvIGNvbmZpZ3VyYXRpb24g
PSBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7CiAgICAgICAgIGNvbmZp
Z3VyYXRpb24tPnNldExvY2FsU3RvcmFnZURpcmVjdG9yeSghcHJpdi0+bG9jYWxTdG9yYWdlRGly
ZWN0b3J5ID8KLSAgICAgICAgICAgIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2Fs
U3RvcmFnZURpcmVjdG9yeSgpIDogV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkuZ2V0KCkpKTsK
KyAgICAgICAgICAgIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURp
cmVjdG9yeSgpIDogRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihwcml2LT5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkuZ2V0KCkpKTsKICAgICAgICAgY29uZmlndXJh
dGlvbi0+c2V0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCFwcml2LT5kaXNrQ2FjaGVEaXJlY3Rvcnkg
PwotICAgICAgICAgICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hl
RGlyZWN0b3J5KCkgOiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihwcml2LT5kaXNrQ2FjaGVEaXJlY3RvcnkuZ2V0KCkpLCBuZXR3b3JrQ2FjaGVTdWJkaXJlY3Rv
cnkpKTsKKyAgICAgICAgICAgIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5ldHdvcmtD
YWNoZURpcmVjdG9yeSgpIDogRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZp
bGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+ZGlza0Nh
Y2hlRGlyZWN0b3J5LmdldCgpKSwgbmV0d29ya0NhY2hlU3ViZGlyZWN0b3J5KSk7CiAgICAgICAg
IGNvbmZpZ3VyYXRpb24tPnNldEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoIXByaXYtPmFwcGxp
Y2F0aW9uQ2FjaGVEaXJlY3RvcnkgPwotICAgICAgICAgICAgQVBJOjpXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpIDogV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5hcHBsaWNhdGlvbkNh
Y2hlRGlyZWN0b3J5LmdldCgpKSk7CisgICAgICAgICAgICBBUEk6OldlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkgOiBGaWxlU3lzdGVtOjpzdHJpbmdG
cm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rv
cnkuZ2V0KCkpKTsKICAgICAgICAgY29uZmlndXJhdGlvbi0+c2V0V2ViU1FMRGF0YWJhc2VEaXJl
Y3RvcnkoIXByaXYtPndlYlNRTERpcmVjdG9yeSA/Ci0gICAgICAgICAgICBBUEk6OldlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpIDogV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT53ZWJTUUxE
aXJlY3RvcnkuZ2V0KCkpKTsKKyAgICAgICAgICAgIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkgOiBGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPndlYlNRTERpcmVjdG9yeS5nZXQoKSkpOwogICAg
ICAgICBjb25maWd1cmF0aW9uLT5zZXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KEFQSTo6V2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSk7CiAgICAg
ICAgIHByaXYtPndlYnNpdGVEYXRhU3RvcmUgPSBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0
ZUxlZ2FjeShXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsKICAgICB9CkBAIC01MzIsNyArNTMyLDcg
QEAgY29uc3QgZ2NoYXIqIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfZGlza19jYWNo
ZV9kaXJlY3RvcnkoV2ViS2l0V2Vic2l0ZUQKIAogICAgIGlmICghcHJpdi0+ZGlza0NhY2hlRGly
ZWN0b3J5KSB7CiAgICAgICAgIC8vIFRoZSBkZWZhdWx0IGRpcmVjdG9yeSBhbHJlYWR5IGhhcyB0
aGUgc3ViZGlyZWN0b3J5LgotICAgICAgICBwcml2LT5kaXNrQ2FjaGVEaXJlY3RvcnkucmVzZXQo
Z19zdHJkdXAoV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShBUEk6OldlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKSkudXRmOCgpLmRhdGEoKSkp
OworICAgICAgICBwcml2LT5kaXNrQ2FjaGVEaXJlY3RvcnkucmVzZXQoZ19zdHJkdXAoRmlsZVN5
c3RlbTo6ZGlyZWN0b3J5TmFtZShBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3b3Jr
Q2FjaGVEaXJlY3RvcnkoKSkudXRmOCgpLmRhdGEoKSkpOwogICAgIH0KICAgICByZXR1cm4gcHJp
di0+ZGlza0NhY2hlRGlyZWN0b3J5LmdldCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL3dpbi9BUElXZWJzaXRlRGF0YVN0b3JlV2luLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS93aW4vQVBJV2Vic2l0ZURhdGFTdG9yZVdpbi5jcHAKaW5kZXgg
MTliZTI4OGQ0ODJkYWFmZGQxOGU0Y2ZkZmVkY2UyMDNhYWM3NWJkZC4uMzIyNWI5MjE3MGQ3Yzk4
YjRiZTg0NWFjY2ZlOGQ4YzFiMzY3ZDdiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL3dpbi9BUElXZWJzaXRlRGF0YVN0b3JlV2luLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvd2luL0FQSVdlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCkBAIC0yNiw0
MyArMjYsNDMgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBUElXZWJzaXRlRGF0
YVN0b3JlLmgiCiAKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDx3
dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1lc3BhY2UgQVBJIHsKIAogU3RyaW5nIFdlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4g
V2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZp
bGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiQXBwbGljYXRp
b25DYWNoZSIpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJBcHBs
aWNhdGlvbkNhY2hlIik7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0Q2Fj
aGVTdG9yYWdlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmxvY2FsVXNlclNw
ZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiQ2FjaGVTdG9yYWdlIik7CisgICAgcmV0dXJuIEZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJT
cGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkNhY2hlU3RvcmFnZSIpOwogfQogCiBTdHJpbmcg
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpCiB7Ci0gICAg
cmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJD
b3JlOjpGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIk5l
dHdvcmtDYWNoZSIpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJO
ZXR3b3JrQ2FjaGUiKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRJbmRl
eGVkREJEYXRhYmFzZURpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpsb2NhbFVz
ZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkluZGV4ZWREQiIpOworICAgIHJldHVybiBG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2Vy
U3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJJbmRleGVkREIiKTsKIH0KIAogU3RyaW5nIFdl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5
KCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVj
dG9yeSgpLCAiU2VydmljZVdvcmtlcnMiKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURp
cmVjdG9yeSgpLCAiU2VydmljZVdvcmtlcnMiKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKQogewotICAgIHJldHVybiBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJMb2NhbFN0b3JhZ2UiKTsK
KyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0
ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiTG9jYWxTdG9yYWdlIik7
CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURp
cmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3Jh
Z2VEaXJlY3RvcnkoKSwgIk1lZGlhS2V5U3RvcmFnZSIpOworICAgIHJldHVybiBGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNT
dG9yYWdlRGlyZWN0b3J5KCksICJNZWRpYUtleVN0b3JhZ2UiKTsKIH0KIAogU3RyaW5nIFdlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKQpA
QCAtNzMsNTcgKzczLDU3IEBAIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGV2aWNl
SWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCkKIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6
OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVt
Ojpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIldlYlNRTCIpOworICAgIHJl
dHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9j
YWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJXZWJTUUwiKTsKIH0KIAogU3RyaW5n
IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5
KCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVj
dG9yeSgpLCAiUmVzb3VyY2VMb2FkU3RhdGlzdGljcyIpOworICAgIHJldHVybiBGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNT
dG9yYWdlRGlyZWN0b3J5KCksICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIik7CiB9CiAKIFN0cmlu
ZyBXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihjb25zdCBTdHJpbmcmIGRpcmVjdG9yeU5hbWUpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjps
b2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgZGlyZWN0b3J5TmFtZSk7CisgICAg
cmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjps
b2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgZGlyZWN0b3J5TmFtZSk7CiB9CiAK
IFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjp3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdG9yeU5hbWUpCiB7Ci0gICAgcmV0dXJu
IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpG
aWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgZGlyZWN0b3J5
TmFtZSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChG
aWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgZGlyZWN0b3J5
TmFtZSk7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0QXBwbGlj
YXRpb25DYWNoZURpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpsb2NhbFVzZXJT
cGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkFwcGxpY2F0aW9uQ2FjaGUiKTsKKyAgICByZXR1
cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2Fs
VXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiQXBwbGljYXRpb25DYWNoZSIpOwogfQog
CiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdE5ldHdvcmtDYWNoZURpcmVj
dG9yeSgpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VE
aXJlY3RvcnkoKSwgIk5ldHdvcmtDYWNoZSIpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdl
RGlyZWN0b3J5KCksICJOZXR3b3JrQ2FjaGUiKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3Rv
cmU6OmxlZ2FjeURlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJu
IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpG
aWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIldlYlNRTCIp
OworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5
c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJXZWJTUUwiKTsKIH0K
IAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRJbmRleGVkREJEYXRhYmFz
ZURpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0
b3JhZ2VEaXJlY3RvcnkoKSwgIkluZGV4ZWREQiIpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9y
YWdlRGlyZWN0b3J5KCksICJJbmRleGVkREIiKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3Rv
cmU6OmxlZ2FjeURlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKQogewotICAgIHJldHVybiBX
ZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJMb2NhbFN0b3Jh
Z2UiKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZp
bGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiTG9jYWxTdG9y
YWdlIik7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0TWVkaWFD
YWNoZURpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZp
Y1N0b3JhZ2VEaXJlY3RvcnkoKSwgIk1lZGlhQ2FjaGUiKTsKKyAgICByZXR1cm4gRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmlj
U3RvcmFnZURpcmVjdG9yeSgpLCAiTWVkaWFDYWNoZSIpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURh
dGFTdG9yZTo6bGVnYWN5RGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKQogewotICAg
IHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJN
ZWRpYUtleVN0b3JhZ2UiKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgp
LCAiTWVkaWFLZXlTdG9yYWdlIik7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdh
Y3lEZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCkKQEAgLTEzNCw3ICsx
MzQsNyBAQCBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdERldmljZUlkSGFz
aFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpCiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdh
Y3lEZWZhdWx0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKQogewotICAgIHJldHVy
biBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6
RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJKYXZhU2Ny
aXB0Q29yZURlYnVnIik7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwg
IkphdmFTY3JpcHRDb3JlRGVidWciKTsKIH0KIAogUmVmPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24+IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmVDb25maWd1
cmF0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24v
V2ViQXV0b21hdGlvblNlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21h
dGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKaW5kZXggODk5NWRjNjEyNWY0NTkzOTBjMTgw
ZWViNTQzYzExNTE2YjFjZWU0MS4uNjAyODdmNzhjZGUxY2I3ZGU0ZTkzNzQ2YTdiZGJkMzMwOWY1
MzNiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJB
dXRvbWF0aW9uU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21h
dGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKQEAgLTgwNCw3ICs4MDQsNyBAQCB2b2lkIFdl
YkF1dG9tYXRpb25TZXNzaW9uOjp3aWxsQ2xvc2VQYWdlKGNvbnN0IFdlYlBhZ2VQcm94eSYgcGFn
ZSkKIAogc3RhdGljIGJvb2wgZmlsZUNhbkJlQWNjZXB0ZWRGb3JVcGxvYWQoY29uc3QgU3RyaW5n
JiBmaWxlbmFtZSwgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBhbGxvd2VkTUlNRVR5cGVzLCBjb25z
dCBIYXNoU2V0PFN0cmluZz4mIGFsbG93ZWRGaWxlRXh0ZW5zaW9ucykKIHsKLSAgICBpZiAoIVdl
YkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZmlsZW5hbWUpKQorICAgIGlmICghRmlsZVN5
c3RlbTo6ZmlsZUV4aXN0cyhmaWxlbmFtZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IGlmIChhbGxvd2VkTUlNRVR5cGVzLmlzRW1wdHkoKSAmJiBhbGxvd2VkRmlsZUV4dGVuc2lvbnMu
aXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvRG93
bmxvYWRDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENs
aWVudC5tbQppbmRleCAzYjQ5NjI4ZmRmNmRmYzVhYWRkMDI5ZDVhMmNiY2I2YmZiNzhjZmMxLi5j
NzI3YmQyM2VmOTU1MjUxZjc5ODA5ZDY5YzU4MjMyMTk3YWYxZWI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbQpAQCAtNDIsMTAgKzQyLDEw
IEBACiAjaW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbXBvcnQgIl9XS0Rvd25sb2FkRGVs
ZWdhdGUuaCIKICNpbXBvcnQgIl9XS0Rvd25sb2FkSW50ZXJuYWwuaCIKLSNpbXBvcnQgPFdlYkNv
cmUvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5o
PgorI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAg
LTE4MSw3ICsxODEsNyBAQCB2b2lkIERvd25sb2FkQ2xpZW50OjpkZWNpZGVEZXN0aW5hdGlvbldp
dGhTdWdnZXN0ZWRGaWxlbmFtZShXZWJQcm9jZXNzUG9vbCYsIERvdwogewogI2lmIFVTRShTWVNU
RU1fUFJFVklFVykKICAgICBpZiAoZG93bmxvYWRQcm94eS5pc1N5c3RlbVByZXZpZXdEb3dubG9h
ZCgpKSB7Ci0gICAgICAgIE5TU3RyaW5nICp0ZW1wb3JhcnlEaXJlY3RvcnkgPSBXZWJDb3JlOjpG
aWxlU3lzdGVtOjpjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoQCJTeXN0ZW1QcmV2aWV3cyIpOwor
ICAgICAgICBOU1N0cmluZyAqdGVtcG9yYXJ5RGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6Y3JlYXRl
VGVtcG9yYXJ5RGlyZWN0b3J5KEAiU3lzdGVtUHJldmlld3MiKTsKICAgICAgICAgTlNTdHJpbmcg
KmRlc3RpbmF0aW9uID0gW3RlbXBvcmFyeURpcmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhD
b21wb25lbnQ6ZmlsZW5hbWVdOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihBbGxvd092ZXJ3
cml0ZTo6WWVzLCBkZXN0aW5hdGlvbik7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCmluZGV4IDU2
Y2YwZmQwNTkwYzYxNTQzZDM0MTBmODRmNjZkMTljN2VkODUxYmYuLjJkYWY3NTU3MWNjYjFhOWQ3
MDViYWEwNTdhZDYyNGE1YTY5OGE0MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQpAQCAtNDMsNyArNDMsNiBAQAogI2lt
cG9ydCAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW1wb3J0ICJXaW5kb3dTZXJ2ZXJDb25uZWN0
aW9uLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0NvbG9yLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0ZpbGVT
eXN0ZW0uaD4KICNpbXBvcnQgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3Jt
UGFzdGVib2FyZC5oPgpAQCAtNTIsNiArNTEsNyBAQAogI2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5l
dHdvcmtTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNLZXllZEFyY2hpdmVyU1BJLmg+
CiAjaW1wb3J0IDxzeXMvcGFyYW0uaD4KKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW1w
b3J0IDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgogI2ltcG9ydCA8d3RmL2NvY29hL0VudGl0bGVt
ZW50cy5oPgogI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vZHlsZFNQSS5oPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCA3ZDJiMTJhMDg4Y2UwZTQy
Y2ZmMzFmYzVlYmFlMjkyM2JjMDgyMGVjLi4zNGM1Njc3N2FlZGQwZTEwMjRiYWNjMjYzYjQ4YTgy
ZjE4YjE5NzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJW
aWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1w
bC5tbQpAQCAtODQsNyArODQsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9EcmFnRGF0YS5oPgogI2lt
cG9ydCA8V2ViQ29yZS9EcmFnSXRlbS5oPgogI2ltcG9ydCA8V2ViQ29yZS9FZGl0b3IuaD4KLSNp
bXBvcnQgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Gb250QXR0cmli
dXRlQ2hhbmdlcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9Gb250QXR0cmlidXRlcy5oPgogI2ltcG9y
dCA8V2ViQ29yZS9LZXlwcmVzc0NvbW1hbmQuaD4KQEAgLTExNSw2ICsxMTQsNyBAQAogI2ltcG9y
dCA8cGFsL3NwaS9tYWMvTlNWaWV3U1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL21hYy9OU1dpbmRv
d1NQSS5oPgogI2ltcG9ydCA8c3lzL3N0YXQuaD4KKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+
CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbXBvcnQgPHd0Zi9Qcm9jZXNzUHJp
dmlsZWdlLmg+CiAjaW1wb3J0IDx3dGYvU2V0Rm9yU2NvcGUuaD4KQEAgLTM5NjIsNyArMzk2Miw3
IEBAIGJvb2wgV2ViVmlld0ltcGw6OnBlcmZvcm1EcmFnT3BlcmF0aW9uKGlkIDxOU0RyYWdnaW5n
SW5mbz4gZHJhZ2dpbmdJbmZvKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9
CiAKLSAgICAgICAgTlNTdHJpbmcgKmRyb3BEZXN0aW5hdGlvblBhdGggPSBXZWJDb3JlOjpGaWxl
U3lzdGVtOjpjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoQCJXZWJLaXREcm9wRGVzdGluYXRpb24i
KTsKKyAgICAgICAgTlNTdHJpbmcgKmRyb3BEZXN0aW5hdGlvblBhdGggPSBGaWxlU3lzdGVtOjpj
cmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoQCJXZWJLaXREcm9wRGVzdGluYXRpb24iKTsKICAgICAg
ICAgaWYgKCFkcm9wRGVzdGluYXRpb25QYXRoKSB7CiAgICAgICAgICAgICBkZWxldGUgZHJhZ0Rh
dGE7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00Mjg0LDcgKzQyODQsNyBAQCBOU0Fy
cmF5ICpXZWJWaWV3SW1wbDo6bmFtZXNPZlByb21pc2VkRmlsZXNEcm9wcGVkQXREZXN0aW5hdGlv
bihOU1VSTCAqZHJvcERlc3RpbgogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUg
aW1hZ2UgZmlsZSB2aWEgLVtOU0ZpbGVXcmFwcGVyIHdyaXRlVG9VUkw6b3B0aW9uczpvcmlnaW5h
bENvbnRlbnRzVVJMOmVycm9yOl0iKTsKIAogICAgIGlmICghbV9wcm9taXNlZFVSTC5pc0VtcHR5
KCkpCi0gICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnNldE1ldGFkYXRhVVJMKFN0cmluZyhw
YXRoKSwgbV9wcm9taXNlZFVSTCk7CisgICAgICAgIEZpbGVTeXN0ZW06OnNldE1ldGFkYXRhVVJM
KFN0cmluZyhwYXRoKSwgbV9wcm9taXNlZFVSTCk7CiAgICAgCiAgICAgcmV0dXJuIFtOU0FycmF5
IGFycmF5V2l0aE9iamVjdDpbcGF0aCBsYXN0UGF0aENvbXBvbmVudF1dOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3BwCmluZGV4
IGU2MGVlM2Y0Zjk0YjAzMmQzOTliN2EzNzdhN2U4ZjljY2EyMzc1MWQuLjE5YTdhMTJjZmEzZjMx
YmYxZTIxMzdjMzVjZDU3ZDBhNTA3YjlhOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5jcHAKQEAgLTI4LDkgKzI4LDkgQEAKIAog
I2luY2x1ZGUgIlBlcnNpc3RlbmN5VXRpbHMuaCIKIAotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5
c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8d3Rm
L0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0
ZW0uaD4KICNpbmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3Au
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHAKaW5kZXggNzUxMDJl
ZTNiMDA0MjRhNDgwOTQxNWYzNmIwNGVkM2I1M2NhZDE0OC4uZTA5MjU0YjAxODcyNDljOTkyZmMy
ZmNkNzI4ODhlNzg0YjE5MzM5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
RG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcApAQCAtMzYsOCArMzYsOCBAQAogI2luY2x1ZGUg
IldlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCiAjaW5j
bHVkZSAiV2ViUHJvdGVjdGlvblNwYWNlLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVt
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NSU1FVHlwZVJlZ2lzdHJ5Lmg+CisjaW5jbHVkZSA8d3Rm
L0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0xhdW5jaGVyL2dsaWIvQnViYmxld3JhcExhdW5jaGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvQnViYmxld3JhcExhdW5jaGVyLmNwcAppbmRleCBlNDM0
ZTAzMzM5ODdhOTI3NDljMDBkZGM1YjUzMzYwOTA0ZGVmMWJlLi4xNjcyM2RmZGRhNGZhZGJiOTJh
YTdlYTBhOGU2YWU1ODg0ZjJkMDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9MYXVuY2hlci9nbGliL0J1YmJsZXdyYXBMYXVuY2hlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9CdWJibGV3cmFwTGF1bmNoZXIuY3BwCkBAIC0yMCwx
MiArMjAsMTIgQEAKIAogI2lmIEVOQUJMRShCVUJCTEVXUkFQX1NBTkRCT1gpCiAKLSNpbmNsdWRl
IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtRGlzcGxh
eS5oPgogI2luY2x1ZGUgPGZjbnRsLmg+CiAjaW5jbHVkZSA8Z2xpYi5oPgogI2luY2x1ZGUgPHNl
Y2NvbXAuaD4KICNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3Rl
bS5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dMaWJVdGlsaXRpZXMuaD4KICNpbmNsdWRlIDx3dGYv
Z2xpYi9HUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9Qcm9jZXNzTGF1bmNo
ZXJHTGliLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvUHJvY2Vz
c0xhdW5jaGVyR0xpYi5jcHAKaW5kZXggYzU2NjE4NzNhMDVlNzEwOWI1MTdlYTc1YmRmYWJjY2Q4
ZjIzZmI4Ni4uMDA4ODQ5YWIzMWMxZWNlOGM4Mzc5NzBiNjk0YzQyZmI0YjVkY2RiNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9Qcm9jZXNzTGF1bmNo
ZXJHTGliLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9nbGliL1By
b2Nlc3NMYXVuY2hlckdMaWIuY3BwCkBAIC0zMSwxMCArMzEsMTAgQEAKICNpbmNsdWRlICJDb25u
ZWN0aW9uLmgiCiAjaW5jbHVkZSAiRmxhdHBha0xhdW5jaGVyLmgiCiAjaW5jbHVkZSAiUHJvY2Vz
c0V4ZWN1dGFibGVQYXRoLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5j
bHVkZSA8ZXJybm8uaD4KICNpbmNsdWRlIDxmY250bC5oPgogI2luY2x1ZGUgPGdsaWIuaD4KKyNp
bmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5j
bHVkZSA8d3RmL1VuaVN0ZEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dMaWJVdGlsaXRp
ZXMuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1Bs
dWdpbkluZm9DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL2d0ay9Q
bHVnaW5JbmZvQ2FjaGUuY3BwCmluZGV4IDgwNjQ3ZWIxMmVlNTI1MTFhMTE5ZTg1ZmRlMmY1OWM0
ZTIzNzc4ODUuLmEyOGEwMGEzODZjYWZlY2IzNzgyYTQxMTAzN2NhOWE1MzVkYzIyMDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1BsdWdpbkluZm9DYWNo
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9ndGsvUGx1Z2luSW5m
b0NhY2hlLmNwcApAQCAtMjksOCArMjksOCBAQAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5f
QVBJKQogCiAjaW5jbHVkZSAiTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaCIKLSNpbmNsdWRlIDxXZWJD
b3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtRGlzcGxheS5oPgor
I2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTY2LDEwICs2NiwxMCBAQCBQbHVnaW5JbmZvQ2Fj
aGU6OlBsdWdpbkluZm9DYWNoZSgpCiAgICAgbV9zYXZlVG9GaWxlSWRsZS5zZXRQcmlvcml0eShH
X1BSSU9SSVRZX0RFRkFVTFRfSURMRSk7CiAKICAgICBHVW5pcXVlUHRyPGNoYXI+IGNhY2hlRGly
ZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9jYWNoZV9kaXIoKSwgIndlYmtpdGd0
ayIsIG51bGxwdHIpKTsKLSAgICBpZiAoV2ViQ29yZTo6RmlsZVN5c3RlbTo6bWFrZUFsbERpcmVj
dG9yaWVzKGNhY2hlRGlyZWN0b3J5LmdldCgpKSkgeworICAgIGlmIChGaWxlU3lzdGVtOjptYWtl
QWxsRGlyZWN0b3JpZXMoY2FjaGVEaXJlY3RvcnkuZ2V0KCkpKSB7CiAgICAgICAgIC8vIERlbGV0
ZSBvbGQgY2FjaGUgZmlsZS4KICAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBvbGRDYWNoZVBhdGgo
Z19idWlsZF9maWxlbmFtZShjYWNoZURpcmVjdG9yeS5nZXQoKSwgInBsdWdpbnMiLCBudWxscHRy
KSk7Ci0gICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihvbGRDYWNoZVBhdGgu
Z2V0KCkpKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShGaWxlU3lzdGVtOjpzdHJp
bmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKG9sZENhY2hlUGF0aC5nZXQoKSkpOwogCiAg
ICAgICAgIG1fY2FjaGVQYXRoLnJlc2V0KGdfYnVpbGRfZmlsZW5hbWUoY2FjaGVEaXJlY3Rvcnku
Z2V0KCksIGNhY2hlRmlsZW5hbWVGb3JDdXJyZW50RGlzcGxheSgpLCBudWxscHRyKSk7CiAgICAg
ICAgIGdfa2V5X2ZpbGVfbG9hZF9mcm9tX2ZpbGUobV9jYWNoZUZpbGUuZ2V0KCksIG1fY2FjaGVQ
YXRoLmdldCgpLCBHX0tFWV9GSUxFX05PTkUsIG51bGxwdHIpOwpAQCAtMTEyLDcgKzExMiw3IEBA
IGJvb2wgUGx1Z2luSW5mb0NhY2hlOjpnZXRQbHVnaW5JbmZvKGNvbnN0IFN0cmluZyYgcGx1Z2lu
UGF0aCwgUGx1Z2luTW9kdWxlSW5mbyYKICAgICBpZiAoIWdfa2V5X2ZpbGVfaGFzX2dyb3VwKG1f
Y2FjaGVGaWxlLmdldCgpLCBwbHVnaW5Hcm91cC5kYXRhKCkpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBhdXRvIGxhc3RNb2RpZmllZFRpbWUgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpn
ZXRGaWxlTW9kaWZpY2F0aW9uVGltZShwbHVnaW5QYXRoKTsKKyAgICBhdXRvIGxhc3RNb2RpZmll
ZFRpbWUgPSBGaWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShwbHVnaW5QYXRoKTsK
ICAgICBpZiAoIWxhc3RNb2RpZmllZFRpbWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB0
aW1lX3QgY2FjaGVkTGFzdE1vZGlmaWVkID0gc3RhdGljX2Nhc3Q8dGltZV90PihnX2tleV9maWxl
X2dldF91aW50NjQobV9jYWNoZUZpbGUuZ2V0KCksIHBsdWdpbkdyb3VwLmRhdGEoKSwgIm10aW1l
IiwgbnVsbHB0cikpOwpAQCAtMTIwLDcgKzEyMCw3IEBAIGJvb2wgUGx1Z2luSW5mb0NhY2hlOjpn
ZXRQbHVnaW5JbmZvKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgUGx1Z2luTW9kdWxlSW5mbyYK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcGx1Z2luLnBhdGggPSBwbHVnaW5QYXRoOwot
ICAgIHBsdWdpbi5pbmZvLmZpbGUgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5h
bWUocGx1Z2luUGF0aCk7CisgICAgcGx1Z2luLmluZm8uZmlsZSA9IEZpbGVTeXN0ZW06OnBhdGhH
ZXRGaWxlTmFtZShwbHVnaW5QYXRoKTsKIAogICAgIEdVbmlxdWVQdHI8Y2hhcj4gc3RyaW5nVmFs
dWUoZ19rZXlfZmlsZV9nZXRfc3RyaW5nKG1fY2FjaGVGaWxlLmdldCgpLCBwbHVnaW5Hcm91cC5k
YXRhKCksICJuYW1lIiwgbnVsbHB0cikpOwogICAgIHBsdWdpbi5pbmZvLm5hbWUgPSBTdHJpbmc6
OmZyb21VVEY4KHN0cmluZ1ZhbHVlLmdldCgpKTsKQEAgLTE0MCw3ICsxNDAsNyBAQCBib29sIFBs
dWdpbkluZm9DYWNoZTo6Z2V0UGx1Z2luSW5mbyhjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIFBs
dWdpbk1vZHVsZUluZm8mCiAKIHZvaWQgUGx1Z2luSW5mb0NhY2hlOjp1cGRhdGVQbHVnaW5JbmZv
KGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYgcGx1Z2lu
KQogewotICAgIGF1dG8gbGFzdE1vZGlmaWVkVGltZSA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06Omdl
dEZpbGVNb2RpZmljYXRpb25UaW1lKHBsdWdpblBhdGgpOworICAgIGF1dG8gbGFzdE1vZGlmaWVk
VGltZSA9IEZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKHBsdWdpblBhdGgpOwog
ICAgIGlmICghbGFzdE1vZGlmaWVkVGltZSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5Qcm9jZXNzUHJveHlN
YWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5Qcm9jZXNz
UHJveHlNYWMubW0KaW5kZXggODlmYWI1ZWNiNjY2ZDJiNDRmY2MyMjM5ZWJlNWJhNWVlMWFjNjNk
OC4uZjEyYTYxZWY2NjlmMzU3MzBkZWE3YTRiNWY1YjE2NDU1NTJjMTE0MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2luUHJvY2Vzc1Byb3h5TWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvbWFjL1BsdWdpblByb2Nl
c3NQcm94eU1hYy5tbQpAQCAtMzMsMTEgKzMzLDExIEBACiAjaW1wb3J0ICJQbHVnaW5Qcm9jZXNz
TWVzc2FnZXMuaCIKICNpbXBvcnQgIlNhbmRib3hVdGlsaXRpZXMuaCIKICNpbXBvcnQgPFF1YXJ0
ekNvcmUvQ0FSZW1vdGVMYXllclNlcnZlci5oPgotI2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVt
Lmg+CiAjaW1wb3J0IDxjcnRfZXh0ZXJucy5oPgogI2ltcG9ydCA8bWFjaC1vL2R5bGQuaD4KICNp
bXBvcnQgPHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg+CiAjaW1wb3J0IDxzcGF3bi5oPgorI2lt
cG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0Zi9Qcm9jZXNzUHJpdmlsZWdlLmg+
CiAjaW1wb3J0IDx3dGYvVVJMLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luSW5mb1N0
b3JlVW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2lu
SW5mb1N0b3JlVW5peC5jcHAKaW5kZXggMWRmZDgwN2MxMjM5YzMwNzllZjkyNDA3NDUwYjg5ZWM5
MTE5Y2YwYy4uYWEwOTQ3MzY4MTY1NGE5ZWY2NDQwNmIyYzY0MzkwM2Y3ZTAxMjYzZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpbkluZm9TdG9y
ZVVuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVn
aW5JbmZvU3RvcmVVbml4LmNwcApAQCAtMzQsMTAgKzM0LDEwIEBACiAjaW5jbHVkZSAiTmV0c2Nh
cGVQbHVnaW5Nb2R1bGUuaCIKICNpbmNsdWRlICJQbHVnaW5TZWFyY2hQYXRoLmgiCiAjaW5jbHVk
ZSAiUHJvY2Vzc0V4ZWN1dGFibGVQYXRoLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVt
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybURpc3BsYXkuaD4KICNpbmNsdWRlIDxsaW1p
dHMuaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgog
CiAjaWYgUExBVEZPUk0oR1RLKQogI2luY2x1ZGUgIlBsdWdpbkluZm9DYWNoZS5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpblByb2Nlc3NQ
cm94eVVuaXguY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdp
blByb2Nlc3NQcm94eVVuaXguY3BwCmluZGV4IGY4OTYxMjE3MGQwMTExNjA0MzJlZWVlYTNkOWI4
OGEzNTM4YjcxMjIuLmM1MDBjMGZjZWE2Mjc4ODZiYWRkZGMzZmM5NTBjNmM0ZWEzOGJjMGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9j
ZXNzUHJveHlVbml4LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL3Vu
aXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAKQEAgLTMyLDkgKzMyLDkgQEAKIAogI2luY2x1
ZGUgIlBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJQcm9jZXNz
RXhlY3V0YWJsZVBhdGguaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1BsYXRmb3JtRGlzcGxheS5oPgogI2luY2x1ZGUgPHN5cy93YWl0Lmg+Cisj
aW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5jcHAKaW5kZXggNzI2ODgz
YjNjZjgwZjQ4ZjJkYmZhNTYzZmM5YmY3YzU1ZDU3MDA2Zi4uNWJjZGE2M2E4NmIwZTFmOGU5NjQ2
MTk0MzA5OTI2Y2JhNTFmMmQxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
U2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgU2Vydmlj
ZVdvcmtlclByb2Nlc3NQcm94eTo6flNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkoKQogYm9vbCBT
ZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5OjpoYXNSZWdpc3RlcmVkU2VydmljZVdvcmtlcnMoY29u
c3QgU3RyaW5nJiBzZXJ2aWNlV29ya2VyRGlyZWN0b3J5KQogewogICAgIFN0cmluZyByZWdpc3Ry
YXRpb25GaWxlID0gV2ViQ29yZTo6c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGFiYXNlRmls
ZW5hbWUoc2VydmljZVdvcmtlckRpcmVjdG9yeSk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVT
eXN0ZW06OmZpbGVFeGlzdHMocmVnaXN0cmF0aW9uRmlsZSk7CisgICAgcmV0dXJuIEZpbGVTeXN0
ZW06OmZpbGVFeGlzdHMocmVnaXN0cmF0aW9uRmlsZSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtl
clByb2Nlc3NQcm94eTo6Z2V0TGF1bmNoT3B0aW9ucyhQcm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9w
dGlvbnMmIGxhdW5jaE9wdGlvbnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwCmluZGV4IDBjMjVkNjU3
ZTk3NzZhNzQ3NGQyMDU1ZmRmNTQ4NzJhMDBkOGVkZGIuLjQ2ZmI2Yzc3Mjk0ZjNjNjMxZDRmZmZk
ZmMyNGExNDhmNzA4YTQ0Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwCkBAIC0yNywxMiArMjcs
MTIgQEAKICNpbmNsdWRlICJMb2NhbFN0b3JhZ2VEYXRhYmFzZS5oIgogCiAjaW5jbHVkZSAiTG9j
YWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVt
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVTdGF0ZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1NRTGl0ZVRyYW5zYWN0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdp
bi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3RvcmFnZU1hcC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U3VkZGVuVGVybWluYXRpb24uaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nSGFzaC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3Bw
CmluZGV4IGFmZmQ3ZThhY2FlMmRlY2I1Yzg0NGU4NzNiNTZmN2QxNTNkMGFjOTYuLmMzNzgxZGY2
NzY5MDBjNjk0YmUxNGJmZTZhZTM2NDliYzE4ODkwYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFi
YXNlVHJhY2tlci5jcHAKQEAgLTI3LDEwICsyNywxMCBAQAogI2luY2x1ZGUgIkxvY2FsU3RvcmFn
ZURhdGFiYXNlVHJhY2tlci5oIgogCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUgPFdl
YkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlRmlsZVN5c3RlbS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlU3RhdGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9UZXh0RW5jb2RpbmcuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUg
PHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRlIDx3
dGYvV29ya1F1ZXVlLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KaW5kZXgg
MDY5ZDRiOWIwYWMzNjZmMmFkODAwODNhZDhjZTUxOGFhZjU2OWZhYy4uYjI0YzAxMjQxZmIzOWRl
MTk2YjgyOWNmYzlkNWQ5Yjg1YjIwNGM3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVD
b2NvYS5tbQpAQCAtMzAsMTAgKzMwLDEwIEBACiAjaW1wb3J0ICJTdG9yYWdlTWFuYWdlci5oIgog
I2ltcG9ydCAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCiAjaW1wb3J0ICJXZWJz
aXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oIgotI2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgogI2ltcG9ydCA8
V2ViQ29yZS9TZWFyY2hQb3B1cE1lbnVDb2NvYS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5l
dHdvcmtTUEkuaD4KKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KICNpbXBvcnQgPHd0Zi9Qcm9jZXNzUHJpdmlsZWdlLmg+CiAKQEAgLTEy
MSw3ICsxMjEsNyBAQCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0b3Jl
OjpwYXJhbWV0ZXJzKCkKICAgICBwYXJhbWV0ZXJzLnBlbmRpbmdDb29raWVzID0gY29weVRvVmVj
dG9yKG1fcGVuZGluZ0Nvb2tpZXMpOwogCiAgICAgaWYgKCFjb29raWVGaWxlLmlzRW1wdHkoKSkK
LSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0
b3J5KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUoY29va2llRmlsZSksIHBhcmFt
ZXRlcnMuY29va2llU3RvcmFnZVBhdGhFeHRlbnNpb25IYW5kbGUpOworICAgICAgICBTYW5kYm94
RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkoRmlsZVN5c3RlbTo6
ZGlyZWN0b3J5TmFtZShjb29raWVGaWxlKSwgcGFyYW1ldGVycy5jb29raWVTdG9yYWdlUGF0aEV4
dGVuc2lvbkhhbmRsZSk7CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICBwYXJh
bWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSA9IHJlc29sdmVkSW5kZXhlZERhdGFiYXNl
RGlyZWN0b3J5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IGY3NTg1MWIxYzZhZTgyY2VjOWE4Yzk1
MzBhZWIyYjk0YzJiYTQ3ZmQuLmY4N2I2MDhiMWM0N2NiMjI3ZmI5NGU2ODQ4MGMzZmM4MTVlYWJj
ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC00NCw3ICs0NCw2IEBACiAjaW5jbHVkZSAiV2Vic2l0
ZURhdGFTdG9yZVBhcmFtZXRlcnMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0FwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EYXRhYmFzZVRyYWNrZXIuaD4KLSNpbmNs
dWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxNZWRpYUVs
ZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL09yaWdpbkxvY2suaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1NlY3VyaXR5T3JpZ2luLmg+CkBAIC01Miw2ICs1MSw3IEBACiAjaW5jbHVkZSA8d3RmL0Nh
bGxiYWNrQWdncmVnYXRvci5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgog
I2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZENvcGllci5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lz
dGVtLmg+CiAjaW5jbHVkZSA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KICNpbmNsdWRlIDx3dGYv
UnVuTG9vcC5oPgogCkBAIC0xOTEsOCArMTkxLDggQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpy
ZXNvbHZlRGlyZWN0b3JpZXNJZk5lY2Vzc2FyeSgpCiAKICAgICAvLyBSZXNvbHZlIGRpcmVjdG9y
aWVzIGZvciBmaWxlIHBhdGhzLgogICAgIGlmICghbV9jb25maWd1cmF0aW9uLT5jb29raWVTdG9y
YWdlRmlsZSgpLmlzRW1wdHkoKSkgewotICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+
c2V0Q29va2llU3RvcmFnZUZpbGUocmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZv
clNhbmRib3hFeHRlbnNpb24oV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShtX2Nv
bmZpZ3VyYXRpb24tPmNvb2tpZVN0b3JhZ2VGaWxlKCkpKSk7Ci0gICAgICAgIG1fcmVzb2x2ZWRD
b25maWd1cmF0aW9uLT5zZXRDb29raWVTdG9yYWdlRmlsZShXZWJDb3JlOjpGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPmNvb2tpZVN0
b3JhZ2VGaWxlKCksIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShtX2NvbmZp
Z3VyYXRpb24tPmNvb2tpZVN0b3JhZ2VGaWxlKCkpKSk7CisgICAgICAgIG1fcmVzb2x2ZWRDb25m
aWd1cmF0aW9uLT5zZXRDb29raWVTdG9yYWdlRmlsZShyZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRl
RGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKG1f
Y29uZmlndXJhdGlvbi0+Y29va2llU3RvcmFnZUZpbGUoKSkpKTsKKyAgICAgICAgbV9yZXNvbHZl
ZENvbmZpZ3VyYXRpb24tPnNldENvb2tpZVN0b3JhZ2VGaWxlKEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+Y29va2llU3RvcmFnZUZp
bGUoKSwgRmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKG1fY29uZmlndXJhdGlvbi0+Y29va2ll
U3RvcmFnZUZpbGUoKSkpKTsKICAgICB9CiB9CiAKQEAgLTE0ODMsNyArMTQ4Myw3IEBAIFZlY3Rv
cjxQbHVnaW5Nb2R1bGVJbmZvPiBXZWJzaXRlRGF0YVN0b3JlOjpwbHVnaW5zKCkgY29uc3QKIAog
c3RhdGljIFN0cmluZyBjb21wdXRlTWVkaWFLZXlGaWxlKGNvbnN0IFN0cmluZyYgbWVkaWFLZXlE
aXJlY3RvcnkpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChtZWRpYUtleURpcmVjdG9yeSwgIlNlY3VyZVN0b3AucGxpc3QiKTsKKyAg
ICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1lZGlhS2V5RGly
ZWN0b3J5LCAiU2VjdXJlU3RvcC5wbGlzdCIpOwogfQogCiBWZWN0b3I8V2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhPiBXZWJzaXRlRGF0YVN0b3JlOjptZWRpYUtleU9yaWdpbnMoY29uc3QgU3Ry
aW5nJiBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KQpAQCAtMTQ5MiwxMiArMTQ5MiwxMiBAQCBW
ZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBXZWJzaXRlRGF0YVN0b3JlOjptZWRp
YUtleU9yaWdpbnMoY29uc3QgU3RyaQogCiAgICAgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YT4gb3JpZ2luczsKIAotICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2luUGF0aCA6IFdl
YkNvcmU6OkZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobWVkaWFLZXlzU3RvcmFnZURpcmVjdG9y
eSwgIioiKSkgeworICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2luUGF0aCA6IEZpbGVTeXN0ZW06
Omxpc3REaXJlY3RvcnkobWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSwgIioiKSkgewogICAgICAg
ICBhdXRvIG1lZGlhS2V5RmlsZSA9IGNvbXB1dGVNZWRpYUtleUZpbGUob3JpZ2luUGF0aCk7Ci0g
ICAgICAgIGlmICghV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhtZWRpYUtleUZpbGUp
KQorICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobWVkaWFLZXlGaWxlKSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGF1dG8gbWVkaWFLZXlJZGVudGlmaWVyID0g
V2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKG9yaWdpblBhdGgpOworICAgICAg
ICBhdXRvIG1lZGlhS2V5SWRlbnRpZmllciA9IEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShv
cmlnaW5QYXRoKTsKIAogICAgICAgICBpZiAoYXV0byBzZWN1cml0eU9yaWdpbiA9IFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmllcihtZWRpYUtleUlkZW50
aWZpZXIpKQogICAgICAgICAgICAgb3JpZ2lucy5hcHBlbmQoKnNlY3VyaXR5T3JpZ2luKTsKQEAg
LTE1MTAsMTggKzE1MTAsMTggQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVNZWRpYUtl
eXMoY29uc3QgU3RyaW5nJiBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5LAogewogICAgIEFTU0VS
VCghbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpOwogCi0gICAgZm9yIChjb25z
dCBhdXRvJiBtZWRpYUtleURpcmVjdG9yeSA6IFdlYkNvcmU6OkZpbGVTeXN0ZW06Omxpc3REaXJl
Y3RvcnkobWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSwgIioiKSkgeworICAgIGZvciAoY29uc3Qg
YXV0byYgbWVkaWFLZXlEaXJlY3RvcnkgOiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KG1lZGlh
S2V5c1N0b3JhZ2VEaXJlY3RvcnksICIqIikpIHsKICAgICAgICAgYXV0byBtZWRpYUtleUZpbGUg
PSBjb21wdXRlTWVkaWFLZXlGaWxlKG1lZGlhS2V5RGlyZWN0b3J5KTsKIAotICAgICAgICBhdXRv
IG1vZGlmaWNhdGlvblRpbWUgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0
aW9uVGltZShtZWRpYUtleUZpbGUpOworICAgICAgICBhdXRvIG1vZGlmaWNhdGlvblRpbWUgPSBG
aWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShtZWRpYUtleUZpbGUpOwogICAgICAg
ICBpZiAoIW1vZGlmaWNhdGlvblRpbWUpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAg
ICBpZiAobW9kaWZpY2F0aW9uVGltZS52YWx1ZSgpIDwgbW9kaWZpZWRTaW5jZSkKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCi0gICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUo
bWVkaWFLZXlGaWxlKTsKLSAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlE
aXJlY3RvcnkobWVkaWFLZXlEaXJlY3RvcnkpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVG
aWxlKG1lZGlhS2V5RmlsZSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0
b3J5KG1lZGlhS2V5RGlyZWN0b3J5KTsKICAgICB9CiB9CiAKQEAgLTE1MzAsMTEgKzE1MzAsMTEg
QEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVNZWRpYUtleXMoY29uc3QgU3RyaW5nJiBt
ZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5LAogICAgIEFTU0VSVCghbWVkaWFLZXlzU3RvcmFnZURp
cmVjdG9yeS5pc0VtcHR5KCkpOwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBvcmlnaW4gOiBvcmln
aW5zKSB7Ci0gICAgICAgIGF1dG8gbWVkaWFLZXlEaXJlY3RvcnkgPSBXZWJDb3JlOjpGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSwg
b3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICAgICAgYXV0byBtZWRpYUtleURpcmVj
dG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtZWRpYUtleXNTdG9y
YWdlRGlyZWN0b3J5LCBvcmlnaW4uZGF0YWJhc2VJZGVudGlmaWVyKCkpOwogICAgICAgICBhdXRv
IG1lZGlhS2V5RmlsZSA9IGNvbXB1dGVNZWRpYUtleUZpbGUobWVkaWFLZXlEaXJlY3RvcnkpOwog
Ci0gICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobWVkaWFLZXlGaWxlKTsK
LSAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkobWVkaWFL
ZXlEaXJlY3RvcnkpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1lZGlhS2V5Rmls
ZSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KG1lZGlhS2V5RGly
ZWN0b3J5KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2dsaWIvV2ViUHJvY2Vzc1Byb3h5R0xpYi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9n
bGliL1dlYlByb2Nlc3NQcm94eUdMaWIuY3BwCmluZGV4IDhmNWZhMDNmZjQ2NTMyZjZiNTgyNTc5
ZTk5YjAxN2IwNjU0MGFlYTUuLjE2OWVhMjAxMjViMDMwNjM3ZmFmYzA3NDdjYTg2OTg1ODU0OTVi
OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1By
b3h5R0xpYi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNz
UHJveHlHTGliLmNwcApAQCAtMzEsOCArMzEsOCBAQAogI2VuZGlmCiAjaW5jbHVkZSAiV2ViUHJv
Y2Vzc1Bvb2wuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCi0jaW5jbHVkZSA8V2Vi
Q29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybURpc3BsYXkuaD4K
KyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Z3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0
ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAKaW5kZXggY2ExODdhNjQyMzQxMTJlODU3OWJkODYx
NjJkOWI4M2ZiNDI5YzgzYS4uMTZiMDJhNDM1NzZlNTZmMWFlMjI2M2EwZGY0ZjA2NzMyMzRkYmUw
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYkluc3BlY3RvclBy
b3h5R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9y
UHJveHlHdGsuY3BwCkBAIC00Miw5ICs0Miw5IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wu
aCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NlcnRp
ZmljYXRlSW5mby5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvR3RrVXRpbGl0aWVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRl
ZC5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc1Bvb2xHdGsuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NQb29sR3RrLmNwcAppbmRleCA2MjQwNDE1
ZjE1NzI3OWU0YmZjMGM1NmEyY2RhOGI2MjI1OTA2OWY2Li42YjIzNTc0MDRlMDNhZTMwMjFhZTg4
MGI2M2E4Y2VjMGVlODZmMGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9n
dGsvV2ViUHJvY2Vzc1Bvb2xHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0
ay9XZWJQcm9jZXNzUG9vbEd0ay5jcHAKQEAgLTM0LDEwICszNCwxMCBAQAogI2luY2x1ZGUgIldl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2Fn
ZXMuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9SZW1vdGVJbnNwZWN0b3JTZXJ2ZXIuaD4K
LSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dTdHJl
YW1lckNvbW1vbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1NjaGVtZVJlZ2lzdHJ5Lmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0u
aD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCBlODZiNjI5YzdmZWQ0OTQ3YWZkZWU0NGYy
MjBjYzJmMjZhNGFiNzYzLi4yMjBlMTE1OGJjNGUyNjNlYjdmNTc3MzVlYWFiZDIxYWMzNmQ1Zjk2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24ubW0KQEAgLTU2NjAsNyArNTY2MCw3IEBAIC0gKHZvaWQpX3ByZXBhcmVU
b0RyYWdQcm9taXNlZEF0dGFjaG1lbnQ6KGNvbnN0IFdlYkNvcmU6OlByb21pc2VkQXR0YWNobWVu
dEluZm8mCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBOU1N0cmlu
ZyAqdGVtcG9yYXJ5QmxvYkRpcmVjdG9yeSA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmNyZWF0ZVRl
bXBvcmFyeURpcmVjdG9yeShAImJsb2JzIik7CisgICAgICAgIE5TU3RyaW5nICp0ZW1wb3JhcnlC
bG9iRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KEAiYmxv
YnMiKTsKICAgICAgICAgTlNVUkwgKmRlc3RpbmF0aW9uVVJMID0gW05TVVJMIGZpbGVVUkxXaXRo
UGF0aDpbdGVtcG9yYXJ5QmxvYkRpcmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25l
bnQ6W05TVVVJRCBVVUlEXS5VVUlEU3RyaW5nXSBpc0RpcmVjdG9yeTpOT107CiAKICAgICAgICAg
YXV0byBhdHRhY2htZW50ID0gc3Ryb25nU2VsZi0+X3BhZ2UtPmF0dGFjaG1lbnRGb3JJZGVudGlm
aWVyKGluZm8uYXR0YWNobWVudElkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRmlsZVVwbG9hZFBhbmVsLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRmlsZVVwbG9hZFBhbmVsLm1tCmluZGV4IDY4MDE2NDZk
MDhmOWQwOWZlM2U3Mzk4Mzg0NTcyOWJlMjExZDVhYTYuLjg3NzExNGZjZjI2NmU5OTJhZWJkZDkw
MzYwNDA2YTFkODk3NTFkZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9mb3Jtcy9XS0ZpbGVVcGxvYWRQYW5lbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvZm9ybXMvV0tGaWxlVXBsb2FkUGFuZWwubW0KQEAgLTYyMCw3ICs2MjAsNyBAQCAtICh2
b2lkKV91cGxvYWRJdGVtRm9ySW1hZ2VEYXRhOihOU0RhdGEgKilpbWFnZURhdGEgaW1hZ2VOYW1l
OihOU1N0cmluZyAqKWltYWdlTgogICAgIE5TU3RyaW5nICogY29uc3Qga1RlbXBvcmFyeURpcmVj
dG9yeU5hbWUgPSBAIldLV2ViRmlsZVVwbG9hZCI7CiAKICAgICAvLyBCdWlsZCB0ZW1wb3Jhcnkg
ZmlsZSBwYXRoLgotICAgIE5TU3RyaW5nICp0ZW1wb3JhcnlEaXJlY3RvcnkgPSBXZWJDb3JlOjpG
aWxlU3lzdGVtOjpjcmVhdGVUZW1wb3JhcnlEaXJlY3Rvcnkoa1RlbXBvcmFyeURpcmVjdG9yeU5h
bWUpOworICAgIE5TU3RyaW5nICp0ZW1wb3JhcnlEaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpjcmVh
dGVUZW1wb3JhcnlEaXJlY3Rvcnkoa1RlbXBvcmFyeURpcmVjdG9yeU5hbWUpOwogICAgIE5TU3Ry
aW5nICpmaWxlUGF0aCA9IFt0ZW1wb3JhcnlEaXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdQYXRo
Q29tcG9uZW50OmltYWdlTmFtZV07CiAgICAgaWYgKCFmaWxlUGF0aCkgewogICAgICAgICBMT0df
RVJST1IoIldLRmlsZVVwbG9hZFBhbmVsOiBGYWlsZWQgdG8gY3JlYXRlIHRlbXBvcmFyeSBkaXJl
Y3RvcnkgdG8gc2F2ZSBpbWFnZSIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9X
ZWJQYWdlUHJveHlNYWMubW0KaW5kZXggNjJiZTQxMGYyM2IwZTJjMzMwMzBiYjA5YzFlNjJmMWM4
YjIwZTFjMC4uODMwMDRkNzBhODE3NzcxNjE4Mzg0ZDRkOGYyODE1Y2YyMTFhNzc2YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCkBAIC00OTUs
NyArNDk1LDcgQEAgc3RhdGljIE5TU3RyaW5nICpwYXRoVG9QREZPbkRpc2soY29uc3QgU3RyaW5n
JiBzdWdnZXN0ZWRGaWxlbmFtZSkKIAogdm9pZCBXZWJQYWdlUHJveHk6OnNhdmVQREZUb1RlbXBv
cmFyeUZvbGRlckFuZE9wZW5XaXRoTmF0aXZlQXBwbGljYXRpb25SYXcoY29uc3QgU3RyaW5nJiBz
dWdnZXN0ZWRGaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBvcmlnaW5hdGluZ1VSTFN0cmluZywgY29u
c3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbG9uZyBzaXplLCBjb25zdCBTdHJpbmcmIHBkZlVV
SUQpCiB7Ci0gICAgLy8gRklYTUU6IFdyaXRlIG9yaWdpbmF0aW5nVVJMU3RyaW5nIHRvIHRoZSBm
aWxlJ3Mgb3JpZ2luYXRpbmcgVVJMIG1ldGFkYXRhIChwZXJoYXBzIFdlYkNvcmU6OkZpbGVTeXN0
ZW06OnNldE1ldGFkYXRhVVJMKCk/KS4KKyAgICAvLyBGSVhNRTogV3JpdGUgb3JpZ2luYXRpbmdV
UkxTdHJpbmcgdG8gdGhlIGZpbGUncyBvcmlnaW5hdGluZyBVUkwgbWV0YWRhdGEgKHBlcmhhcHMg
RmlsZVN5c3RlbTo6c2V0TWV0YWRhdGFVUkwoKT8pLgogICAgIFVOVVNFRF9QQVJBTShvcmlnaW5h
dGluZ1VSTFN0cmluZyk7CiAKICAgICBpZiAoIXN1Z2dlc3RlZEZpbGVuYW1lLmVuZHNXaXRoSWdu
b3JpbmdBU0NJSUNhc2UoIi5wZGYiKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3Mvd2luL1dlYlByb2Nlc3NQb29sV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L3dpbi9XZWJQcm9jZXNzUG9vbFdpbi5jcHAKaW5kZXggMTAxNWZmMDYwNmNmNGJiNGNmNTYyYTA3
ODkyODg3MzM2NTZmOWVkNi4uMzkwYTBjOTAxOTIxOTQzM2M1ZmE0OWQzZTM4NDRhMWI4MzU1Mjhj
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlByb2Nlc3NQb29s
V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1Bvb2xX
aW4uY3BwCkBAIC0yOCw4ICsyOCw4IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKIAog
I2luY2x1ZGUgIldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKLSNpbmNsdWRlIDxXZWJD
b3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+Cisj
aW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcAppbmRleCBlZjc5MTljNzIwZmU3MTdiNTkw
OTE5YmI4NWI0NTgxODViYTUwZmIxLi4wZjlmOWQ0ZWZkNTI4NmM2MjY4NDNhYzNhMDRjZDJlNmJk
OTQ5OWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCkBAIC00NCw3
ICs0NCw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9CaXRtYXBJbmZvLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9DdXJzb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0VkaXRvci5oPgotI2luY2x1ZGUgPFdl
YkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9IV25kREMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KQEAg
LTU1LDYgKzU0LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1dpbmRvd3NUb3VjaC5oPgogI2luY2x1
ZGUgPGNhaXJvLXdpbjMyLmg+CiAjaW5jbHVkZSA8Y2Fpcm8uaD4KKyNpbmNsdWRlIDx3dGYvRmls
ZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9Tb2Z0TGlua2luZy5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0J1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dwZS9XZWJQcm9jZXNzUG9vbFdQ
RS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93cGUvV2ViUHJvY2Vzc1Bvb2xXUEUuY3Bw
CmluZGV4IDYyNTVjNDI3YjdhMWJhNWNmZWVkMGNiMzdkZTVjMDJjMGJjY2U1ZDEuLmY1MTAxN2E4
Y2EyOWVkMDc5OTRkN2QyMDdjOTU3MTQxMTJhMzhiZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL3dwZS9XZWJQcm9jZXNzUG9vbFdQRS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3Mvd3BlL1dlYlByb2Nlc3NQb29sV1BFLmNwcApAQCAtMzQsMTAgKzM0LDEwIEBA
CiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgot
I2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1w
bGVtZW50ZWQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NjaGVtZVJlZ2lzdHJ5Lmg+CiAjaW5jbHVk
ZSA8Y3N0ZGxpYj4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiAjaWYgRU5BQkxFKFJF
TU9URV9JTlNQRUNUT1IpCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUmVtb3RlSW5zcGVjdG9y
U2VydmVyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2dsaWIvV2ViS2l0RXh0ZW5zaW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0RXh0ZW5zaW9uTWFuYWdl
ci5jcHAKaW5kZXggYWFjMjgyODBjYTUyMGJmODM5NjViNzk0YzNlMzRmZWFmYzYxZWU3NS4uNGNj
ZWM2MmVmMGUxMTMxZmExM2Y3ZmIwNjBjODBlMDdlZTQyNTFhZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdEV4dGVuc2lv
bk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ2xpYi9XZWJLaXRFeHRlbnNpb25NYW5hZ2VyLmNwcApAQCAtMjMsOCArMjMsOCBAQAog
I2luY2x1ZGUgIkFQSVN0cmluZy5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlLmgiCiAjaW5j
bHVkZSAiV2ViS2l0V2ViRXh0ZW5zaW9uUHJpdmF0ZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRmls
ZVN5c3RlbS5oPgogI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBA
IC00MSw5ICs0MSw5IEBAIFdlYktpdEV4dGVuc2lvbk1hbmFnZXI6OldlYktpdEV4dGVuc2lvbk1h
bmFnZXIoKQogCiB2b2lkIFdlYktpdEV4dGVuc2lvbk1hbmFnZXI6OnNjYW5Nb2R1bGVzKGNvbnN0
IFN0cmluZyYgd2ViRXh0ZW5zaW9uc0RpcmVjdG9yeSwgVmVjdG9yPFN0cmluZz4mIG1vZHVsZXMp
CiB7Ci0gICAgVmVjdG9yPFN0cmluZz4gbW9kdWxlUGF0aHMgPSBXZWJDb3JlOjpGaWxlU3lzdGVt
OjpsaXN0RGlyZWN0b3J5KHdlYkV4dGVuc2lvbnNEaXJlY3RvcnksIFN0cmluZygiKi5zbyIpKTsK
KyAgICBWZWN0b3I8U3RyaW5nPiBtb2R1bGVQYXRocyA9IEZpbGVTeXN0ZW06Omxpc3REaXJlY3Rv
cnkod2ViRXh0ZW5zaW9uc0RpcmVjdG9yeSwgU3RyaW5nKCIqLnNvIikpOwogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbW9kdWxlUGF0aHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKFdl
YkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobW9kdWxlUGF0aHNbaV0pKQorICAgICAgICBp
ZiAoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhtb2R1bGVQYXRoc1tpXSkpCiAgICAgICAgICAgICBt
b2R1bGVzLmFwcGVuZChtb2R1bGVQYXRoc1tpXSk7CiAgICAgfQogfQpAQCAtNjMsNyArNjMsNyBA
QCBzdGF0aWMgdm9pZCBwYXJzZVVzZXJEYXRhKEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgU3RyaW5n
JiB3ZWJFeHRlbnNpb25zRGlyZWN0b3J5LAogICAgIEdWYXJpYW50KiBkYXRhID0gbnVsbHB0cjsK
ICAgICBnX3ZhcmlhbnRfZ2V0KHZhcmlhbnQuZ2V0KCksICIobSZzbXYpIiwgJmRpcmVjdG9yeSwg
JmRhdGEpOwogCi0gICAgd2ViRXh0ZW5zaW9uc0RpcmVjdG9yeSA9IFdlYkNvcmU6OkZpbGVTeXN0
ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGlyZWN0b3J5KTsKKyAgICB3
ZWJFeHRlbnNpb25zRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihkaXJlY3RvcnkpOwogICAgIGluaXRpYWxpemF0aW9uVXNlckRhdGEgPSBh
ZG9wdEdSZWYoZGF0YSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9nbGliL0luamVjdGVkQnVuZGxlR2xpYi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvZ2xpYi9JbmplY3RlZEJ1bmRsZUdsaWIuY3Bw
CmluZGV4IDBhODYwNjUyZjAwZGFkOTMyOGNmMzU1ZDQwNTEzZmU4MGY1ZWY2NTguLjU1N2ZlNjhk
ZTExZGEwMmUwOTY1NWFiYjZiYzM2YmJhY2MyYmI3MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9nbGliL0luamVjdGVkQnVuZGxlR2xpYi5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL2dsaWIvSW5qZWN0
ZWRCdW5kbGVHbGliLmNwcApAQCAtMjksNyArMjksNyBAQAogCiAjaW5jbHVkZSAiV0tCdW5kbGVB
UElDYXN0LmgiCiAjaW5jbHVkZSAiV0tCdW5kbGVJbml0aWFsaXplLmgiCi0jaW5jbHVkZSA8V2Vi
Q29yZS9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFu
YWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtl
eVN0b3JhZ2VNYW5hZ2VyLmNwcAppbmRleCA0YmY0OGQwZTk0ZWVmNzYwNjZjYTMwZWE5Y2YzNTcw
NGFiM2RlYWViLi5iZDM5ODI0MjZjNjZlNjM1YjZjNTYwNWNiZTVhM2IwNTAyNWQzYTFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0
b3JhZ2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFDYWNo
ZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmNwcApAQCAtMjcsOSArMjcsOSBAQAogI2luY2x1
ZGUgIldlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuaCIKIAogI2luY2x1ZGUgIldlYlByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1
cml0eU9yaWdpbkRhdGEuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5T
dHJlYW0uaAppbmRleCBiYjZhNWIwOGM3Y2NlNWRkZWQ4OTkzNjBmN2FiODM0MGYwMzk1ZTc0Li4z
ZWRjZWM2YTcyY2NjM2FhNjRkODE5ZmE5MzM3ZjQzZTYyZTdkNzZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVh
bS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNj
YXBlUGx1Z2luU3RyZWFtLmgKQEAgLTI3LDkgKzI3LDkgQEAKIAogI2lmIEVOQUJMRShORVRTQ0FQ
RV9QTFVHSU5fQVBJKQogCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9ucHJ1bnRpbWVfaW50ZXJuYWwuaD4KICNpbmNsdWRlIDxtZW1vcnk+CisjaW5j
bHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtODksNyAr
ODksNyBAQCBwcml2YXRlOgogICAgIGludDMyX3QgbV9vZmZzZXQ7CiAKICAgICBTdHJpbmcgbV9m
aWxlUGF0aDsKLSAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgbV9m
aWxlSGFuZGxlOworICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBtX2ZpbGVIYW5k
bGU7CiAgICAgCiAgICAgLy8gV2hldGhlciBOUFBfTmV3U3RyZWFtIGhhcyBzdWNjZXNzZnVsbHkg
YmVlbiBjYWxsZWQuCiAgICAgYm9vbCBtX2lzU3RhcnRlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmNw
cAppbmRleCAwMWM1M2YzZDg0M2RkMWQyNDMxNGY1Y2MwYzEyZTkwOTY0ZWZiYmU0Li5mMjAyYmY5
MDI4NGFmMDZhNWNjN2IzMmRiNWQzMGQzMjA0ZjFkYTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24u
Y3BwCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUg
IldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNP
YmplY3QuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYv
RmlsZVN5c3RlbS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwCmluZGV4IDYzYzM2YTNkYjY5
YTgyYWQzYmVhNjYwZjZiMDZkZmU3NjNjNTU2MTcuLjFkODE2NmEwN2UzZmQ5Nzg4MWNiN2Y0NGY0
YTZiZWZmODViYmZlNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAKQEAg
LTI4LDkgKzI4LDkgQEAKIAogI2luY2x1ZGUgIlNlc3Npb25TdGF0ZS5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvQmxvYkRhdGEuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0Zvcm1EYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IaXN0b3J5SXRlbS5o
PgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9ndGsvV2ViSW5zcGVjdG9yVUlHdGsuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYkluc3BlY3RvclVJR3RrLmNwcAppbmRleCA4OWMzYmExYWE4
OTM5Y2ZhNTFmNmZiMjIxYTczYjM4ZDc4MDMyN2EzLi5kYmIyYTkxODA0YmUxMzI2NDhjOWFkMzNl
NmYwMjdiZGQzZjExMGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9ndGsvV2ViSW5zcGVjdG9yVUlHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2d0ay9XZWJJbnNwZWN0b3JVSUd0ay5jcHAKQEAgLTI4LDggKzI4LDggQEAK
ICNpbmNsdWRlICJXZWJJbnNwZWN0b3JVSS5oIgogI2luY2x1ZGUgIlJlbW90ZVdlYkluc3BlY3Rv
clVJLmgiCiAKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxnbGli
Lmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS93aW4vV2ViSW5zcGVjdG9yVUlXaW4uY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL1dlYkluc3BlY3RvclVJV2luLmNwcAppbmRleCA2
YTdhZjNjNWQ2NDljNTA0ZWVkYWQ0OWM5MWExZmI0NDM1ZTRhMThjLi40NzExMTRjYWZhMTRhN2Qx
ZjMzZmZhMmMxZThhZmJiYmVkMmUwM2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS93aW4vV2ViSW5zcGVjdG9yVUlXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9XZWJJbnNwZWN0b3JVSVdpbi5jcHAKQEAgLTI4LDgg
KzI4LDggQEAKIAogI2luY2x1ZGUgIlJlbW90ZVdlYkluc3BlY3RvclVJLmgiCiAKLSNpbmNsdWRl
IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1dlYkNvcmVCdW5kbGVX
aW4uaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCmluZGV4IGE0NDY4MWM3NzI3MWMwNGE3
OTZmMDdiYmNjYWMzYmVjYzQ4MWY3NWEuLjM1ZDU3ZDVjZTY3YjY1ODc2MDc5M2RjYzdjNDA5MTY5
Zjg1ODBhZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQ
cm9jZXNzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlBy
b2Nlc3NDb2NvYS5tbQpAQCAtNTEsNyArNTEsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9BWE9iamVj
dENhY2hlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NQVU1vbml0b3IuaD4KICNpbXBvcnQgPFdlYkNv
cmUvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5oPgotI2ltcG9ydCA8V2ViQ29yZS9GaWxl
U3lzdGVtLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZvbnRDYWNoZS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9Gb250Q2FzY2FkZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9IaXN0b3J5Q29udHJvbGxlci5oPgpA
QCAtNzIsNiArNzEsNyBAQAogI2ltcG9ydCA8cGFsL3NwaS9tYWMvTlNBY2Nlc3NpYmlsaXR5U1BJ
Lmg+CiAjaW1wb3J0IDxwYWwvc3BpL21hYy9OU0FwcGxpY2F0aW9uU1BJLmg+CiAjaW1wb3J0IDxz
dGRpby5oPgorI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0Zi9jb2NvYS9O
U1VSTEV4dHJhcy5oPgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHAKaW5kZXggNDAzOTk2MGIxNDBm
Y2I5YzYzYTc2ZDZkMDc3MTNhM2EzMTgyYzVhNC4uMTdkNDg5NDk0ZDdlMDkwZDNmZjczNWVmZjI2
NDQ1ZWZlYzZiOTI5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0
b3JhZ2VBcmVhU3luYy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3Jh
Z2VBcmVhU3luYy5jcHAKQEAgLTI4LDExICsyOCwxMSBAQAogI2luY2x1ZGUgIlN0b3JhZ2VBcmVh
SW1wbC5oIgogI2luY2x1ZGUgIlN0b3JhZ2VTeW5jTWFuYWdlci5oIgogI2luY2x1ZGUgIlN0b3Jh
Z2VUcmFja2VyLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TUUxpdGVEYXRhYmFzZVRyYWNrZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0
ZVN0YXRlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlVHJhbnNhY3Rpb24uaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1N1ZGRlblRlcm1pbmF0aW9uLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVT
eXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdl
U3luY01hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VTeW5j
TWFuYWdlci5jcHAKaW5kZXggM2U4ZmY2NWVlNjBmMjc0ZGM5MDRlYjU4YzExNzRlZDVjYzFhNTc0
Yy4uMzY5MDk1Y2RhZDFkMzQ3MTFhMDY3NmQ4NzM2YTkwZTE5M2UyOTA1ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5jcHAKQEAgLTI2
LDcgKzI2LDcgQEAKICNpbmNsdWRlICJTdG9yYWdlU3luY01hbmFnZXIuaCIKIAogI2luY2x1ZGUg
IlN0b3JhZ2VUaHJlYWQuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KKyNpbmNs
dWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9y
YWdlL1N0b3JhZ2VUcmFja2VyLmNwcAppbmRleCA3MTAxNDBiMWIxMzNhMmViNTkzOTZkNzY3NDg2
ZDIxODNlYzkwNDg0Li5iOTM0ZDFhM2IxYmFhODMxYWRkZjNhYmU1ZTA3NzBhYjFjZjc3ZmEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAKQEAg
LTI4LDEzICsyOCwxMyBAQAogI2luY2x1ZGUgIlN0b3JhZ2VUaHJlYWQuaCIKICNpbmNsdWRlICJT
dG9yYWdlVHJhY2tlckNsaWVudC5oIgogI2luY2x1ZGUgIldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92
aWRlci5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUGFnZUdyb3VwLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVEYXRhYmFzZVRyYWNrZXIu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZVN0YXRlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0
YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dEVuY29kaW5nLmg+CisjaW5jbHVkZSA8d3RmL0Zp
bGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9T
dGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TRmlsZU1hbmFnZXJFeHRyYXMubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TRmlsZU1hbmFnZXJFeHRyYXMubW0KaW5kZXgg
OTA1MTc0ZGE3NTZkZDYyOGJlZGVmZDUwYzJiMjM3MjllNTMzNTAyYi4uYzU0MTNlODFjNmEzZWNi
MmVjOTc4MWY2YjhiZmQ2YzJiMmEwNWRmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvTWlzYy9XZWJOU0ZpbGVNYW5hZ2VyRXh0cmFzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL01pc2MvV2ViTlNGaWxlTWFuYWdlckV4dHJhcy5tbQpAQCAtMzAsMTAgKzMwLDEw
IEBACiAKICNpbXBvcnQgIldlYktpdE5TU3RyaW5nRXh0cmFzLmgiCiAjaW1wb3J0ICJXZWJOU1VS
TEV4dHJhcy5oIgotI2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0xvYWRlck5TVVJMRXh0cmFzLmg+CiAjaW1wb3J0IDxzeXMvc3RhdC5oPgogI2ltcG9ydCA8
d3RmL0Fzc2VydGlvbnMuaD4KKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDx3
dGYvT2JqQ1J1bnRpbWVFeHRyYXMuaD4KIAogQGltcGxlbWVudGF0aW9uIE5TRmlsZU1hbmFnZXIg
KFdlYk5TRmlsZU1hbmFnZXJFeHRyYXMpCkBAIC00NCw3ICs0NCw3IEBAIC0gKHZvaWQpX3dlYmtp
dF9zZXRNZXRhZGF0YVVSTDooTlNTdHJpbmcgKilVUkxTdHJpbmcgcmVmZXJyZXI6KE5TU3RyaW5n
ICopcmVmZXJyCiB7CiAgICAgQVNTRVJUKFVSTFN0cmluZyk7CiAgICAgQVNTRVJUKHBhdGgpOwot
ICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnNldE1ldGFkYXRhVVJMKHBhdGgsIFVSTFN0cmluZywg
cmVmZXJyZXIpOworICAgIEZpbGVTeXN0ZW06OnNldE1ldGFkYXRhVVJMKHBhdGgsIFVSTFN0cmlu
ZywgcmVmZXJyZXIpOwogfQogCiAjZW5kaWYgLy8gIVBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC05
Myw3ICs5Myw3IEBAIC0gKE5TU3RyaW5nICopX3dlYmtpdF9wYXRoV2l0aFVuaXF1ZUZpbGVuYW1l
Rm9yUGF0aDooTlNTdHJpbmcgKilwYXRoCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0gKE5T
U3RyaW5nICopX3dlYmtpdF9jcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnlXaXRoVGVtcGxhdGVQcmVm
aXg6KE5TU3RyaW5nICopcHJlZml4CiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06
OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShwcmVmaXgpOworICAgIHJldHVybiBGaWxlU3lzdGVt
OjpjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkocHJlZml4KTsKIH0KICNlbmRpZgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlUHJvdmlkZXIu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlUHJvdmlkZXIu
bW0KaW5kZXggNzQ5NWIxNzVmZmY0NWRjNWE1NGIwMTRmOGQ1YmYwM2U1NDM5NDNjYy4uYWRjNGMz
OTg4NGM0Y2IyZDJhM2JlYjZiMTk1YmNkYTAwMDg5YzE3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZVByb3ZpZGVyLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VQcm92aWRlci5tbQpAQCAtMjYs
MTYgKzI2LDE2IEBACiAjaW1wb3J0ICJXZWJEYXRhYmFzZVByb3ZpZGVyLmgiCiAjaW1wb3J0ICJX
ZWJEYXRhYmFzZU1hbmFnZXJQcml2YXRlLmgiCiAKLSNpbXBvcnQgPFdlYkNvcmUvRmlsZVN5c3Rl
bS5oPgorI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogU3RyaW5nIFdlYkRhdGFiYXNlUHJv
dmlkZXI6OmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeVBhdGgoKQogewogICAgIE5TVXNlckRlZmF1
bHRzICpkZWZhdWx0cyA9IFtOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c107CiAg
ICAgTlNTdHJpbmcgKmRhdGFiYXNlc0RpcmVjdG9yeSA9IFtkZWZhdWx0cyBvYmplY3RGb3JLZXk6
V2ViRGF0YWJhc2VEaXJlY3RvcnlEZWZhdWx0c0tleV07CiAgICAgaWYgKCFkYXRhYmFzZXNEaXJl
Y3RvcnkgfHwgIVtkYXRhYmFzZXNEaXJlY3RvcnkgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xh
c3NdXSkKLSAgICAgICAgZGF0YWJhc2VzRGlyZWN0b3J5ID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KCJ+L0xpYnJhcnkvV2ViS2l0L0RhdGFiYXNlcy9fX19J
bmRleGVkREIiX3MsIFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl0pOwor
ICAgICAgICBkYXRhYmFzZXNEaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQoIn4vTGlicmFyeS9XZWJLaXQvRGF0YWJhc2VzL19fX0luZGV4ZWREQiJfcywgW1tO
U0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlmaWVyXSk7CiAgICAgZWxzZQotICAgICAg
ICBkYXRhYmFzZXNEaXJlY3RvcnkgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoZGF0YWJhc2VzRGlyZWN0b3J5LCAiX19fSW5kZXhlZERCIl9zKTsKKyAgICAg
ICAgZGF0YWJhc2VzRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KGRhdGFiYXNlc0RpcmVjdG9yeSwgIl9fX0luZGV4ZWREQiJfcyk7CiAgICAgCiAgICAgcmV0
dXJuIFtkYXRhYmFzZXNEaXJlY3Rvcnkgc3RyaW5nQnlTdGFuZGFyZGl6aW5nUGF0aF07CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggOWRkZTdkZGUx
YTdhZDdmZDZmMjE4MjU0ZjBiMTdkMzJlYmY3YmIzYS4uZGUyOGFkMDUyMjU3YjAyZTc4NDg0NzU4
Yzc0YWRkODg4YWEyMDc2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
Vmlldy5tbQpAQCAtMTQ4LDcgKzE0OCw2IEBACiAjaW1wb3J0IDxXZWJDb3JlL0VkaXRvci5oPgog
I2ltcG9ydCA8V2ViQ29yZS9FdmVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9FdmVudEhhbmRsZXIu
aD4KLSNpbXBvcnQgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Gb2N1
c0NvbnRyb2xsZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRm9udEF0dHJpYnV0ZXMuaD4KICNpbXBv
cnQgPFdlYkNvcmUvRm9udENhY2hlLmg+CkBAIC0yMzEsNiArMjMwLDcgQEAKICNpbXBvcnQgPHBh
bC9zcGkvbWFjL05TU3BlbGxDaGVja2VyU1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL21hYy9OU1dp
bmRvd1NQSS5oPgogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbXBvcnQgPHd0Zi9GaWxl
U3lzdGVtLmg+CiAjaW1wb3J0IDx3dGYvSGFzaFRyYWl0cy5oPgogI2ltcG9ydCA8d3RmL01haW5U
aHJlYWQuaD4KICNpbXBvcnQgPHd0Zi9PYmpDUnVudGltZUV4dHJhcy5oPgpAQCAtNjg4NSw3ICs2
ODg1LDcgQEAgLSAoQk9PTClwZXJmb3JtRHJhZ09wZXJhdGlvbjooaWQgPE5TRHJhZ2dpbmdJbmZv
PilkcmFnZ2luZ0luZm8KICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCi0g
ICAgICAgIE5TU3RyaW5nICpkcm9wRGVzdGluYXRpb25QYXRoID0gV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KEAiV2ViS2l0RHJvcERlc3RpbmF0aW9uIik7Cisg
ICAgICAgIE5TU3RyaW5nICpkcm9wRGVzdGluYXRpb25QYXRoID0gRmlsZVN5c3RlbTo6Y3JlYXRl
VGVtcG9yYXJ5RGlyZWN0b3J5KEAiV2ViS2l0RHJvcERlc3RpbmF0aW9uIik7CiAgICAgICAgIGlm
ICghZHJvcERlc3RpbmF0aW9uUGF0aCkgewogICAgICAgICAgICAgZGVsZXRlIGRyYWdEYXRhOwog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcAppbmRleCBiYzc5ZDg5YmQ0NDZjNTZlYTFiYTlk
NTdjNzVhZTM5OWFhOGYwNGNmLi5iYmViZTE4N2VkZjM0YjdiN2VjMjAwOGVkMWZhZGQzNTkyNjU5
NjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRh
dGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRh
dGFiYXNlLmNwcApAQCAtMzMsNyArMzMsOCBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fTUVUQURBVEFfQ0FDSEUpCi0jaW5jbHVk
ZSAiRmlsZVN5c3RlbS5oIgorCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNlbmRpZgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9QbHVnaW5zL1BsdWdpblBhY2thZ2UuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdp
bnMvUGx1Z2luUGFja2FnZS5oCmluZGV4IGI0ODgzZGVhOTk3NmRiNTBjZGU1Mjg2MGFhOWI5MmI1
YmIxMDEwZGYuLjg5ODdhM2QzNTNjNzZjMGFhNDQ2ZWFiMzkwODM3MzMzOWQ1MTdkMzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luUGFja2FnZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luUGFja2FnZS5oCkBAIC0y
OSw4ICsyOSw4IEBACiAKICNpbmNsdWRlICJQbGF0Zm9ybU1vZHVsZS5oIgogI2luY2x1ZGUgIlBs
dWdpblF1aXJrU2V0LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9UaW1lci5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1BsdWdpbnMvUGx1Z2luU3RyZWFtLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVn
aW5zL1BsdWdpblN0cmVhbS5oCmluZGV4IGMxYjlmODdhYzRlNjIyZmJiMmUyZTIwNWQxNjQ1OWMw
YzE5NGU3YjYuLjQzMWIzNjMwMzYyYzllNTIxMTE4ZGQwMzI3M2E2Y2Q5YzI4Y2M0NjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luU3RyZWFtLmgKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5TdHJlYW0uaApAQCAtMjcs
MTIgKzI3LDEyIEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlBsdWdpblF1aXJrU2V0Lmgi
Ci0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9OZXRz
Y2FwZVBsdWdJblN0cmVhbUxvYWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1
ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9UaW1lci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvbnBydW50aW1lX2ludGVybmFsLmg+
CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXBwbGljYXRpb25DYWNoZS5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcHBsaWNhdGlvbkNhY2hlLmNwcAppbmRleCBiODVk
ZDE1NDQwYTZlYTU0MDRhOGE0ODUyMTQzZTU5MTc4ZmVjMTJkLi45MGJlMWZjZTc1MWI0ZjFiNWQ5
NGIxYmI2NzRjMzZiM2VjNTY5ZmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJBcHBsaWNhdGlvbkNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJBcHBsaWNhdGlvbkNhY2hlLmNwcApAQCAtMzAsMTMgKzMwLDEzIEBACiAjaW5jbHVkZSAiTWFy
c2hhbGxpbmdIZWxwZXJzLmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKICNpbmNsdWRl
ICJXZWJTZWN1cml0eU9yaWdpbi5oIgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0FwcGxpY2F0aW9uQ2FjaGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0FwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DT01QdHIuaD4KLSNpbmNs
dWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3Jp
Z2luLmg+CiAjaW5jbHVkZSA8Y29tdXRpbC5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+
CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YWJhc2VNYW5hZ2Vy
LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAKaW5k
ZXggM2Y2YzM4YjA2MjhkYjRiYWNmOWM0MTM1N2I1OTFhN2RlYzlhY2Q0MS4uZjk5NjNmMWMwNjg5
NmQ3YTJjYjJkNzMzYTE4ZWZhYWFmM2NlNDgwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCkBAIC0zOSw5ICszOSw5IEBACiAjaW5jbHVkZSA8
V2ViQ29yZS9DT01QdHIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RhdGFiYXNlTWFuYWdlci5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvRGF0YWJhc2VUcmFja2VyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9G
aWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0
ZW0uaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCiAjaWYgRU5BQkxFKElOREVYRURf
REFUQUJBU0UpCkBAIC00MzYsNyArNDM2LDcgQEAgc3RhdGljIFdURjo6U3RyaW5nIGRhdGFiYXNl
c0RpcmVjdG9yeSgpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oZGly
ZWN0b3J5UHJlZi5nZXQoKSk7CiAjZW5kaWYKIAotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6bG9jYWxV
c2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJEYXRhYmFzZXMiKTsKKyAgICByZXR1cm4g
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNl
clNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiRGF0YWJhc2VzIik7CiB9CiAKIHZvaWQgV2Vi
S2l0SW5pdGlhbGl6ZVdlYkRhdGFiYXNlc0lmTmVjZXNzYXJ5KCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkQ3VybC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJEb3dubG9hZEN1cmwuY3BwCmluZGV4IDIwZDRmNDA4MzVmNzI0MTM4ZjE3MjNh
OGRjMmY5NGI4OTUyZWVlZDcuLjk5YjYyN2YxYWFjMDNhZWRmNTA2ODdmYzdmMzM2YmI5NWQ5Y2Rk
MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkQ3VybC5j
cHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWRDdXJsLmNwcApAQCAt
MzUsMjIgKzM1LDE5IEBACiAjaW5jbHVkZSAiV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uu
aCIKICNpbmNsdWRlICJXZWJVUkxDcmVkZW50aWFsLmgiCiAjaW5jbHVkZSAiV2ViVVJMUmVzcG9u
c2UuaCIKLQotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLQotI2luY2x1ZGUgPGlvLmg+
Ci0jaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLQogI2luY2x1
ZGUgPFdlYkNvcmUvQlN0cmluZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ3VybERvd25sb2FkLmg+
Ci0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJ
bXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNl
UmVxdWVzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvVGV4dEVuY29kaW5nLmg+CisjaW5jbHVkZSA8aW8uaD4KKyNpbmNsdWRlIDxz
eXMvc3RhdC5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lz
dGVtLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVy
ZW5jZXMuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCmlu
ZGV4IDU5YmUwYzQ0M2Y0ZmQ2NjU4Yjg0MThiNWNhMzMxNDEwMjkwYzE1ZmQuLjIxNTA1ZDU4Yzc0
NTM4ZDQ0MGE4YzEyZDE3ZTg5YzU1NjE0MjMyYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJQcmVmZXJlbmNlcy5jcHAKQEAgLTM3LDEzICszNywxMyBAQAogCiAjaW5jbHVkZSA8Q29y
ZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NPTVB0ci5o
PgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRm9u
dENhc2NhZGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3MuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgogI2luY2x1ZGUgPGxpbWl0cz4K
ICNpbmNsdWRlIDxzaGxvYmouaD4KICNpbmNsdWRlIDx3Y2hhci5oPgorI2luY2x1ZGUgPHd0Zi9G
aWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlZpZXcuY3BwCmluZGV4IGZlYjJkZjNkZDQ3NjA5ZTFiM2Y2NDA5ZWNkMjYwZDI4
ZDIyOGRiYTguLjVlY2U4MDY0MGRkZTdjY2YyZWFmYzI2NGVjMDgxN2RjYzBhODAzMzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCkBAIC05Niw3ICs5Niw2IEBACiAjaW5jbHVkZSA8
V2ViQ29yZS9FZGl0b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0V2ZW50SGFuZGxlci5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvRXZlbnROYW1lcy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3Rl
bS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRRdWFkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9G
b2N1c0NvbnRyb2xsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZvbnQuaD4KQEAgLTE3MSw2ICsx
NzAsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvV2luZG93c1RvdWNoLmg+CiAjaW5jbHVkZSA8Y29t
ZGVmLmg+CiAjaW5jbHVkZSA8ZDJkMS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAj
aW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvUHJvY2Vzc1ByaXZpbGVn
ZS5oPgogI2luY2x1ZGUgPHd0Zi9SQU1TaXplLmg+CkBAIC01MTMsNyArNTEzLDcgQEAgdm9pZCBX
ZWJWaWV3OjpzZXRDYWNoZU1vZGVsKFdlYkNhY2hlTW9kZWwgY2FjaGVNb2RlbCkKICAgICAgICAg
aWYgKHByZWZlcmVuY2UgJiYgKENGU3RyaW5nR2V0VHlwZUlEKCkgPT0gQ0ZHZXRUeXBlSUQocHJl
ZmVyZW5jZS5nZXQoKSkpKQogICAgICAgICAgICAgY2Z1cmxDYWNoZURpcmVjdG9yeSA9IGFkb3B0
Q0Yoc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KHByZWZlcmVuY2UubGVha1JlZigpKSk7CiAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIGNmdXJsQ2FjaGVEaXJlY3RvcnkgPSBXZWJDb3JlOjpGaWxl
U3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKS5jcmVhdGVDRlN0cmlu
ZygpOworICAgICAgICAgICAgY2Z1cmxDYWNoZURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OmxvY2Fs
VXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLmNyZWF0ZUNGU3RyaW5nKCk7CiAgICAgfQog
ICAgIGNhY2hlRGlyZWN0b3J5ID0gU3RyaW5nKGNmdXJsQ2FjaGVEaXJlY3RvcnkuZ2V0KCkpOwog
ICAgIENGSW5kZXggY2FjaGVNZW1vcnlDYXBhY2l0eSA9IDA7CmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZTk0NTBlYTA5M2UyNmYyMWFkNzcxN2Vm
MjY0ZjhmNDE4NTQxYzA5OS4uZWJkOTQzZGNhNDQ5MDA1MGRlOWZiZTNkOWRkOTQ4Yzg0NzA1MjNi
NyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI1IEBACisyMDE5LTAxLTE4ICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bz
b255LmNvbT4KKworICAgICAgICBNb3ZlIEZpbGVTeXN0ZW0gdG8gV1RGCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM2MDIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9E
dW1wUmVuZGVyVHJlZS5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1BsYXRmb3JtR1RLLmNtYWtlOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvUGxhdGZvcm1XUEUuY21ha2U6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHA6IFJlbmFtZWQgZnJvbSBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZVN5c3RlbS5jcHAuCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNwcDoKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2VjdXJpdHlPcmlnaW4uY3BwOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmNwcDoKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvRGF0YWJhc2VUcmFja2VyVGVzdC5t
bToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY3VybC9Db29raWVzLmNw
cDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1t
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWRQcm9n
cmVzcy5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL3dpbi9QbGF0Zm9ybVV0aWxpdGllc1dp
bi5jcHA6CisKIDIwMTktMDEtMTggIFpoaWZlaSBGQU5HICA8emhpZmVpX2ZhbmdAYXBwbGUuY29t
PgogCiAgICAgICAgIERpc2FibGUgdGhlIHJ1bi1qc2Mtc3RyZXNzLXRlc3QgcmVtb3RlIGhvc3Qg
a2V5IGNoZWNrIFtzZWNvbmQgcm91bmRdLgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1w
UmVuZGVyVHJlZS5jcHAKaW5kZXggYTRiNWM3NzA3MDg5MGE1Y2YxNDJkMmQ5YzhiM2MzMzg2NDgz
ZTZlZC4uYTBiNjg1Yzc1ZjlkYWYwZmViN2VhYWUxYmIzMmEyZTk1MmQyMjZmNCAxMDA2NDQKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcAorKysgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCkBAIC00Niw3ICs0Niw2IEBA
CiAKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL1Rlc3RSdW5uZXJVdGlscy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmls
ZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYktpdExlZ2FjeS9XZWJLaXQuaD4KICNpbmNsdWRlIDxX
ZWJLaXRMZWdhY3kvV2ViS2l0Q09NQVBJLmg+CiAjaW5jbHVkZSA8Y29tdXRpbC5oPgpAQCAtNjAs
NiArNTksNyBAQAogI2luY2x1ZGUgPHNobHdhcGkuaD4KICNpbmNsdWRlIDx0Y2hhci5oPgogI2lu
Y2x1ZGUgPHdpbmRvd3MuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUg
PHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgpAQCAtMjIyLDcgKzIyMiw3IEBAIHN0YXRpYyBTdHJpbmcgbGli
cmFyeVBhdGhGb3JEdW1wUmVuZGVyVHJlZSgpCiAgICAgICAgIHJldHVybiBTdHJpbmcgKHBhdGgu
ZGF0YSgpLCBwYXRoLmxlbmd0aCgpKTsKICAgICB9CiAKLSAgICByZXR1cm4gV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCk7CisgICAgcmV0dXJu
IEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpOwogfQogI2Vu
ZGlmCiAKQEAgLTkzMSw5ICs5MzEsOSBAQCBzdGF0aWMgdm9pZCBzZXREZWZhdWx0c1RvQ29uc2lz
dGVudFZhbHVlc0ZvclRlc3RpbmcoKQogICAgIFN0cmluZyBsaWJyYXJ5UGF0aCA9IGxpYnJhcnlQ
YXRoRm9yRHVtcFJlbmRlclRyZWUoKTsKIAogICAgIC8vIFNldCB1cCB0aGVzZSB2YWx1ZXMgYmVm
b3JlIGNyZWF0aW5nIHRoZSBXZWJWaWV3IHNvIHRoYXQgdGhlIHZhcmlvdXMgaW5pdGlhbGl6YXRp
b25zIHdpbGwgc2VlIHRoZXNlIHByZWZlcnJlZCB2YWx1ZXMuCi0gICAgQ0ZQcmVmZXJlbmNlc1Nl
dEFwcFZhbHVlKFdlYkRhdGFiYXNlRGlyZWN0b3J5RGVmYXVsdHNLZXksIFdlYkNvcmU6OkZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChsaWJyYXJ5UGF0aCwgIkRhdGFiYXNlcyIp
LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGFwcElkLmdldCgpKTsKLSAgICBDRlByZWZlcmVuY2Vz
U2V0QXBwVmFsdWUoV2ViU3RvcmFnZURpcmVjdG9yeURlZmF1bHRzS2V5LCBXZWJDb3JlOjpGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobGlicmFyeVBhdGgsICJMb2NhbFN0b3Jh
Z2UiKS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBhcHBJZC5nZXQoKSk7Ci0gICAgQ0ZQcmVmZXJl
bmNlc1NldEFwcFZhbHVlKFdlYktpdExvY2FsQ2FjaGVEZWZhdWx0c0tleSwgV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGxpYnJhcnlQYXRoLCAiTG9jYWxDYWNo
ZSIpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGFwcElkLmdldCgpKTsKKyAgICBDRlByZWZlcmVu
Y2VzU2V0QXBwVmFsdWUoV2ViRGF0YWJhc2VEaXJlY3RvcnlEZWZhdWx0c0tleSwgRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGxpYnJhcnlQYXRoLCAiRGF0YWJhc2VzIikuY3Jl
YXRlQ0ZTdHJpbmcoKS5nZXQoKSwgYXBwSWQuZ2V0KCkpOworICAgIENGUHJlZmVyZW5jZXNTZXRB
cHBWYWx1ZShXZWJTdG9yYWdlRGlyZWN0b3J5RGVmYXVsdHNLZXksIEZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChsaWJyYXJ5UGF0aCwgIkxvY2FsU3RvcmFnZSIpLmNyZWF0ZUNG
U3RyaW5nKCkuZ2V0KCksIGFwcElkLmdldCgpKTsKKyAgICBDRlByZWZlcmVuY2VzU2V0QXBwVmFs
dWUoV2ViS2l0TG9jYWxDYWNoZURlZmF1bHRzS2V5LCBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQobGlicmFyeVBhdGgsICJMb2NhbENhY2hlIikuY3JlYXRlQ0ZTdHJpbmcoKS5n
ZXQoKSwgYXBwSWQuZ2V0KCkpOwogI2VuZGlmCiB9CiAKQEAgLTEwMzUsNyArMTAzNSw3IEBAIHN0
YXRpYyB2b2lkIHNpemVXZWJWaWV3Rm9yQ3VycmVudFRlc3QoKQogCiBzdGF0aWMgU3RyaW5nIGZp
bmRGb250RmFsbGJhY2soY29uc3QgY2hhciogcGF0aE9yVXJsKQogewotICAgIFN0cmluZyBwYXRo
VG9Gb250RmFsbGJhY2sgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKHBhdGhP
clVybCk7CisgICAgU3RyaW5nIHBhdGhUb0ZvbnRGYWxsYmFjayA9IEZpbGVTeXN0ZW06OmRpcmVj
dG9yeU5hbWUocGF0aE9yVXJsKTsKIAogICAgIHdjaGFyX3QgZnVsbFBhdGhbX01BWF9QQVRIXTsK
ICAgICBpZiAoIV93ZnVsbHBhdGgoZnVsbFBhdGgsIHBhdGhUb0ZvbnRGYWxsYmFjay5jaGFyYWN0
ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSwgX01BWF9QQVRIKSkKQEAgLTEwNTQsMjAg
KzEwNTQsMjAgQEAgc3RhdGljIFN0cmluZyBmaW5kRm9udEZhbGxiYWNrKGNvbnN0IGNoYXIqIHBh
dGhPclVybCkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKICAgICBTdHJpbmcgcGF0
aFRvVGVzdCA9IHBhdGhUb0NoZWNrLnN1YnN0cmluZyhsb2NhdGlvbiArIGxheW91dFRlc3RzLmxl
bmd0aCgpICsgMSk7Ci0gICAgU3RyaW5nIHBvc3NpYmxlUGF0aFRvTG9ndWUgPSBXZWJDb3JlOjpG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGF0aFRvQ2hlY2suc3Vic3RyaW5n
KDAsIGxvY2F0aW9uICsgbGF5b3V0VGVzdHMubGVuZ3RoKCkgKyAxKSwgInBsYXRmb3JtXFx3aW4i
KTsKKyAgICBTdHJpbmcgcG9zc2libGVQYXRoVG9Mb2d1ZSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChwYXRoVG9DaGVjay5zdWJzdHJpbmcoMCwgbG9jYXRpb24gKyBsYXlv
dXRUZXN0cy5sZW5ndGgoKSArIDEpLCAicGxhdGZvcm1cXHdpbiIpOwogCiAgICAgVmVjdG9yPFN0
cmluZz4gcG9zc2libGVQYXRoczsKLSAgICBwb3NzaWJsZVBhdGhzLmFwcGVuZChXZWJDb3JlOjpG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocG9zc2libGVQYXRoVG9Mb2d1ZSwg
cGF0aFRvVGVzdCkpOworICAgIHBvc3NpYmxlUGF0aHMuYXBwZW5kKEZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChwb3NzaWJsZVBhdGhUb0xvZ3VlLCBwYXRoVG9UZXN0KSk7CiAK
ICAgICBzaXplX3QgbmV4dENhbmRpZGF0ZUVuZCA9IHBhdGhUb1Rlc3QucmV2ZXJzZUZpbmQoJ1xc
Jyk7CiAgICAgd2hpbGUgKG5leHRDYW5kaWRhdGVFbmQgJiYgbmV4dENhbmRpZGF0ZUVuZCAhPSBX
VEY6Om5vdEZvdW5kKSB7CiAgICAgICAgIHBhdGhUb1Rlc3QgPSBwYXRoVG9UZXN0LnN1YnN0cmlu
ZygwLCBuZXh0Q2FuZGlkYXRlRW5kKTsKLSAgICAgICAgcG9zc2libGVQYXRocy5hcHBlbmQoV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBvc3NpYmxlUGF0aFRv
TG9ndWUsIHBhdGhUb1Rlc3QpKTsKKyAgICAgICAgcG9zc2libGVQYXRocy5hcHBlbmQoRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBvc3NpYmxlUGF0aFRvTG9ndWUsIHBhdGhU
b1Rlc3QpKTsKICAgICAgICAgbmV4dENhbmRpZGF0ZUVuZCA9IHBhdGhUb1Rlc3QucmV2ZXJzZUZp
bmQoJ1xcJyk7CiAgICAgfQogCiAgICAgZm9yIChWZWN0b3I8U3RyaW5nPjo6aXRlcmF0b3IgcG9z
ID0gcG9zc2libGVQYXRocy5iZWdpbigpOyBwb3MgIT0gcG9zc2libGVQYXRocy5lbmQoKTsgKytw
b3MpIHsKLSAgICAgICAgcGF0aFRvRm9udEZhbGxiYWNrID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KCpwb3MsICJyZXNvdXJjZXNcXCIpOworICAgICAgICBw
YXRoVG9Gb250RmFsbGJhY2sgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
KnBvcywgInJlc291cmNlc1xcIik7CiAKICAgICAgICAgaWYgKDo6UGF0aElzRGlyZWN0b3J5Vyhw
YXRoVG9Gb250RmFsbGJhY2suY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkp
KQogICAgICAgICAgICAgcmV0dXJuIHBhdGhUb0ZvbnRGYWxsYmFjazsKQEAgLTEwODEsNyArMTA4
MSw3IEBAIHN0YXRpYyB2b2lkIGFkZEZvbnRGYWxsYmFja0lmUHJlc2VudChjb25zdCBTdHJpbmcm
IGZvbnRGYWxsYmFja1BhdGgpCiAgICAgaWYgKGZvbnRGYWxsYmFja1BhdGguaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBTdHJpbmcgZm9udEZhbGxiYWNrID0gV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGZvbnRGYWxsYmFja1BhdGgsICJNYWMt
Y29tcGF0aWJsZS1mb250LWZhbGxiYWNrLmNzcyIpOworICAgIFN0cmluZyBmb250RmFsbGJhY2sg
PSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZm9udEZhbGxiYWNrUGF0aCwg
Ik1hYy1jb21wYXRpYmxlLWZvbnQtZmFsbGJhY2suY3NzIik7CiAKICAgICBpZiAoITo6UGF0aEZp
bGVFeGlzdHNXKGZvbnRGYWxsYmFjay5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRh
dGEoKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTEwOTQsNyArMTA5NCw3IEBAIHN0YXRpYyB2b2lk
IHJlbW92ZUZvbnRGYWxsYmFja0lmUHJlc2VudChjb25zdCBTdHJpbmcmIGZvbnRGYWxsYmFja1Bh
dGgpCiAgICAgaWYgKGZvbnRGYWxsYmFja1BhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBTdHJpbmcgZm9udEZhbGxiYWNrID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KGZvbnRGYWxsYmFja1BhdGgsICJNYWMtY29tcGF0aWJsZS1mb250
LWZhbGxiYWNrLmNzcyIpOworICAgIFN0cmluZyBmb250RmFsbGJhY2sgPSBGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZm9udEZhbGxiYWNrUGF0aCwgIk1hYy1jb21wYXRpYmxl
LWZvbnQtZmFsbGJhY2suY3NzIik7CiAKICAgICBpZiAoITo6UGF0aEZpbGVFeGlzdHNXKGZvbnRG
YWxsYmFjay5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSkpCiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CmluZGV4IGIyNDkwMDg5OGIzZmM1
YWY4OWM0OTAzMzgwYzNmZDdjMWRjMGQ3MDUuLjQxMGE0OWZhNDljNzUyYzhiZmNiZDZhYWU2MzBh
ZDJiMzY2ZTAxMjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50
eHQKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dApAQCAtMTIyLDYgKzEy
Miw3IEBAIHNldChUZXN0V1RGX1NPVVJDRVMKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0
cy9XVEYvRGF0ZU1hdGguY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL0Rl
cXVlLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9FbnVtVHJhaXRzLmNw
cAorICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcAogICAg
ICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9FeHBlY3RlZC5jcHAKICAgICAke1RFU1RX
RUJLSVRBUElfRElSfS9UZXN0cy9XVEYvRnVuY3Rpb24uY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJ
X0RJUn0vVGVzdHMvV1RGL0hhc2hDb3VudGVkU2V0LmNwcApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9QbGF0Zm9ybUdUSy5jbWFrZSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZv
cm1HVEsuY21ha2UKaW5kZXggYzM0ZmFlMDdjZjNjNmIwYTM5YzM5OWZlZTMyY2QyNWMzYTBhYTdm
NC4uY2U4MjFlNjFiMDU2NDM1YjJlZWVlNWUwZTU2YmEyMzU3NzI1ODg1ZSAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC05Myw3ICs5Myw2IEBAIGFkZF9leGVjdXRhYmxl
KFRlc3RXZWJDb3JlCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV2ViQ29yZS9Db21w
bGV4VGV4dENvbnRyb2xsZXIuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV2Vi
Q29yZS9ETlMuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV2ViQ29yZS9GaWxl
TW9uaXRvci5jcHAKLSAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL0ZpbGVT
eXN0ZW0uY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV2ViQ29yZS9nc3RyZWFt
ZXIvR3N0TWFwcGVkQnVmZmVyLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dl
YkNvcmUvZ3N0cmVhbWVyL0dTdHJlYW1lclRlc3QuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJ
Un0vVGVzdHMvV2ViQ29yZS9HcmlkUG9zaXRpb24uY3BwCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1BsYXRmb3JtV1BFLmNtYWtlIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9y
bVdQRS5jbWFrZQppbmRleCBiNjg3NzU5OGQ4NzdkZTZjOGRhODZiNGViNTdjYzg2ZmYwYTJmN2Vm
Li40MjY3ZGEyMGQwNzBjNDdiYzgxZTQ2ZWMyYjdmMmQxM2MwNzk5ZDc2IDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtV1BFLmNtYWtlCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvUGxhdGZvcm1XUEUuY21ha2UKQEAgLTYwLDcgKzYwLDYgQEAgYWRkX2V4ZWN1dGFibGUo
VGVzdFdlYkNvcmUKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9nbGliL1V0aWxpdGllc0dMaWIu
Y3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHNDb250cm9sbGVyLmNwcAogICAgICR7
VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUvRmlsZU1vbml0b3IuY3BwCi0gICAgJHtU
RVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV2ViQ29yZS9GaWxlU3lzdGVtLmNwcAogICAgICR7VEVT
VFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUvZ3N0cmVhbWVyL0dzdE1hcHBlZEJ1ZmZlci5j
cHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL2dzdHJlYW1lci9HU3Ry
ZWFtZXJUZXN0LmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUvSFRN
TFBhcnNlcklkaW9tcy5jcHAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdl
YktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggN2ExMDcyYWNkYWEy
YzJhYTUwN2NkYjJmYzI5NzA4MTA4NDVjM2YwYS4uZjY1MjY4ZTVmZDNiNDFkMzZiNmZjNDZkNWY3
ZWIyZmMxZDFlMmMwOCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQyNyw3ICs0MjcsNiBA
QAogCQk3QzgzRTA0QzFEMEE2NDE4MDBGRUJDRjMgLyogV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEODlEMDM4MUM0
RURCMkEwMDA0MEEwNCAvKiBXZWJDb3JlTlNVUkxTZXNzaW9uLm1tICovOyB9OwogCQk3QzgzRTA0
RDFEMEE2NDE4MDBGRUJDRjMgLyogREZBQ29tYmluZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjYwQkE1NzgxQjFEMkU3QjAwNEZBMDdDIC8qIERG
QUNvbWJpbmVyLmNwcCAqLzsgfTsKIAkJN0M4M0UwNEUxRDBBNjQxODAwRkVCQ0YzIC8qIERGQU1p
bmltaXplci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyNkY2RTFFRjFBREM3NDlCMDBERTY5NkIgLyogREZBTWluaW1pemVyLmNwcCAqLzsgfTsKLQkJ
N0M4M0UwNEYxRDBBNjQxODAwRkVCQ0YzIC8qIEZpbGVTeXN0ZW0uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5NzNCNUExQUYyMjg2QTAwNkM3QjM2
IC8qIEZpbGVTeXN0ZW0uY3BwICovOyB9OwogCQk3QzgzRTA1MDFEMEE2NDE4MDBGRUJDRjMgLyog
SFRNTFBhcnNlcklkaW9tcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4M0I4OEEzMzFDODAwNTZEMDBCQjI0MTggLyogSFRNTFBhcnNlcklkaW9tcy5j
cHAgKi87IH07CiAJCTdDODNFMDUxMUQwQTY0MTgwMEZFQkNGMyAvKiBQYXJzZWRDb250ZW50UmFu
Z2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Qy
MjVDMDcxQzQ1QTY5MjAwMTQwNzYxIC8qIFBhcnNlZENvbnRlbnRSYW5nZS5jcHAgKi87IH07CiAJ
CTdDODNFMDUyMUQwQTY0MTgwMEZFQkNGMyAvKiBTaGFyZWRCdWZmZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5NzNCNUMxQUYyMjg3NTAwNkM3
QjM2IC8qIFNoYXJlZEJ1ZmZlci5jcHAgKi87IH07CkBAIC02ODksNiArNjg4LDcgQEAKIAkJQTFD
NEZCNzMxQkFDRDFDQTAwMzc0MkQwIC8qIHBhZ2VzLnBhZ2VzIGluIENvcHkgUmVzb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQzRGQjcyMUJBQ0QxQjcwMDM3NDJE
MCAvKiBwYWdlcy5wYWdlcyAqLzsgfTsKIAkJQTFERjc0MzIxQzQxQjY1ODAwQTJGNEQwIC8qIEFs
d2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEExREY3NDMwMUM0MUI2NTgwMEEyRjREMCAvKiBBbHdheXNSZXZh
bGlkYXRlZFVSTFNjaGVtZXMubW0gKi87IH07CiAJCUExRUMxMTg4MUY0MjU0MTIwMEQwMTQ2RSAv
KiBQcmV2aWV3TG9hZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEExRUMxMTg3MUY0MjU0MTIwMEQwMTQ2RSAvKiBQcmV2aWV3TG9hZGVyLmNwcCAq
LzsgfTsKKwkJQTMxMDgyNzIyMUYyOTZGRjAwQzI4Qjk3IC8qIEZpbGVTeXN0ZW0uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTMxMDgyNzEyMUYyOTZF
QzAwQzI4Qjk3IC8qIEZpbGVTeXN0ZW0uY3BwICovOyB9OwogCQlBNTdBMzRGMjE2QUY2QjJCMDBD
MjUwMUYgLyogUGFnZVZpc2liaWxpdHlTdGF0ZVdpdGhXaW5kb3dDaGFuZ2VzLmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3QTM0RjEx
NkFGNjlFMjAwQzI1MDFGIC8qIFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlcy5o
dG1sICovOyB9OwogCQlBNTdENTRGMzFGMzM4QzM2MDBBOTdBQTcgLyogTmV2ZXJEZXN0cm95ZWQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3RDU0
RjIxRjMzOEMzNjAwQTk3QUE3IC8qIE5ldmVyRGVzdHJveWVkLmNwcCAqLzsgfTsKIAkJQTU3RDU0
RjYxRjMzOTVEMDAwQTk3QUE3IC8qIExvZ2dlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTdENTRGNDFGMzM5NUQwMDBBOTdBQTcgLyogTG9nZ2Vy
LmNwcCAqLzsgfTsKQEAgLTE1MjAsNyArMTUyMCw2IEBACiAJCTQxMzVGQjgzMjAxMUZBQTMwMDMz
MjEzOSAvKiBJbmplY3RJbnRlcm5hbHNfQnVuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IEluamVjdEludGVybmFsc19CdW5kbGUuY3BwOyBwYXRoID0gVGVzdHMv
SW5qZWN0SW50ZXJuYWxzX0J1bmRsZS5jcHA7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsK
IAkJNDEzNUZCODYyMDExRkFCRjAwMzMyMTM5IC8qIGxpYldlYkNvcmVUZXN0U3VwcG9ydC5keWxp
YiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBp
bGVkLm1hY2gtby5keWxpYiI7IHBhdGggPSBsaWJXZWJDb3JlVGVzdFN1cHBvcnQuZHlsaWI7IHNv
dXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTQxODgyRjAyMjEwMTBBNzAwMDJG
RjI4OCAvKiBQcm9jZXNzUHJlV2FybWluZy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFByb2Nlc3NQcmVXYXJtaW5nLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk0MTk3M0I1QTFBRjIyODZBMDA2QzdCMzYgLyogRmlsZVN5c3RlbS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxlU3lzdGVtLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE5NzNCNUMxQUYyMjg3NTAwNkM3QjM2IC8qIFNoYXJlZEJ1
ZmZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFyZWRCdWZm
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NDJCQkY2ODFDOTFDQUQ5MDAx
NzA4N0YgLyogUmVmTG9nZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFJlZkxvZ2dlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0MzNBMzk1
MjA4MDQ0MTMwMDkxRUQ1NyAvKiBTeW5jaHJvbm91c1RpbWVvdXRUZXN0cy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFN5bmNocm9ub3VzVGltZW91dFRlc3RzLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTkxNyw2ICsxOTE2LDcgQEAKIAkJQTFE
Rjc0MzAxQzQxQjY1ODAwQTJGNEQwIC8qIEFsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lcy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFsd2F5c1JldmFsaWRhdGVk
VVJMU2NoZW1lcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFFQzExODcxRjQy
NTQxMjAwRDAxNDZFIC8qIFByZXZpZXdMb2FkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJl
dmlld0xvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExRkRGRDJFMTlD
Mjg4QkIwMDUxNDhBNCAvKiBXS0ltYWdlQ3JlYXRlQ0dJbWFnZUNyYXNoLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLSW1hZ2VDcmVhdGVDR0ltYWdlQ3Jhc2guY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMzEwODI3MTIxRjI5NkVDMDBDMjhCOTcg
LyogRmlsZVN5c3RlbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBG
aWxlU3lzdGVtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU3QTM0RUYxNkFG
Njc3MjAwQzI1MDFGIC8qIFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlcy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBhZ2VWaXNpYmlsaXR5U3Rh
dGVXaXRoV2luZG93Q2hhbmdlcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU3
QTM0RjExNkFGNjlFMjAwQzI1MDFGIC8qIFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hh
bmdlcy5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gUGFnZVZpc2liaWxpdHlTdGF0
ZVdpdGhXaW5kb3dDaGFuZ2VzLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1
N0Q1NEYyMUYzMzhDMzYwMEE5N0FBNyAvKiBOZXZlckRlc3Ryb3llZC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBOZXZlckRlc3Ryb3llZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0yNjc3LDcgKzI2NzcsNiBAQAogCQkJCTU3OTY1MUU2MjE2QkZENTMwMDZFQkZFNSAvKiBGaWRv
SGlkTWVzc2FnZVRlc3QuY3BwICovLAogCQkJCTU3MkI0MDM1MjE3NkEwMjkwMDBBRDQzRSAvKiBG
aWRvVGVzdERhdGEuaCAqLywKIAkJCQk3QTMyRDc0OTFGMDIxNTE1MDAxNjJDNDQgLyogRmlsZU1v
bml0b3IuY3BwICovLAotCQkJCTQxOTczQjVBMUFGMjI4NkEwMDZDN0IzNiAvKiBGaWxlU3lzdGVt
LmNwcCAqLywKIAkJCQk3QTkwOUE3MDFEODc3NDc1MDA3RTEwRjggLyogRmxvYXRQb2ludC5jcHAg
Ki8sCiAJCQkJN0E5MDlBNzExRDg3NzQ3NTAwN0UxMEY4IC8qIEZsb2F0UmVjdC5jcHAgKi8sCiAJ
CQkJN0E5MDlBNzIxRDg3NzQ3NTAwN0UxMEY4IC8qIEZsb2F0U2l6ZS5jcHAgKi8sCkBAIC0zMTg3
LDYgKzMxODYsNyBAQAogCQkJCUU0QTc1N0QzMTc4QUVBNUIwMEI1RDdBNCAvKiBEZXF1ZS5jcHAg
Ki8sCiAJCQkJMUFGN0IyMUQxRDZDRDEyRTAwOEMxMjZDIC8qIEVudW1UcmFpdHMuY3BwICovLAog
CQkJCUFEN0M0MzRDMUREMkE1NDcwMDI2ODg4QiAvKiBFeHBlY3RlZC5jcHAgKi8sCisJCQkJQTMx
MDgyNzEyMUYyOTZFQzAwQzI4Qjk3IC8qIEZpbGVTeXN0ZW0uY3BwICovLAogCQkJCTkzMTBDRDM2
MUVGNzA4RkIwMDUwRkZFMCAvKiBGdW5jdGlvbi5jcHAgKi8sCiAJCQkJODNEQjc5NjcxRUY2M0Iz
QzAwQkZBNUU1IC8qIEZ1bmN0aW9uLmNwcCAqLywKIAkJCQk3QTM4RDdFNTFDNzUyRDVGMDA0RjE1
N0QgLyogSGFzaENvdW50ZWRTZXQuY3BwICovLApAQCAtMzc5NSw2ICszNzk1LDcgQEAKIAkJCQk3
QzgzREVBRDFEMEE1OTBDMDBGRUJDRjMgLyogRGVxdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MUFGN0IyMUYxRDZDRDE0RDAwOEMxMjZDIC8qIEVudW1UcmFpdHMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQUQ3QzQzNEQxREQyQTU0RTAwMjY4ODhCIC8qIEV4cGVjdGVkLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCUEzMTA4MjcyMjFGMjk2RkYwMEMyOEI5NyAvKiBGaWxlU3lzdGVtLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTkzMTBDRDM4MUVGNzA4RkIwMDUwRkZFMCAvKiBGdW5jdGlvbi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk2QkZEMjk0QzFENUU2QzFEMDA4RUM5NjggLyogSGFzaENvdW50
ZWRTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzRDYzMUQxRkNCNzYyMDAwMzJFQ0Q2IC8q
IEhhc2hlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTM5OTgsNyArMzk5OSw2IEBACiAJCQkJN0ND
RTdFRjExQTQxMUFFNjAwNDQ3QzRDIC8qIEZhaWxlZExvYWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNTc5NjUxRTcyMTZCRkRFRDAwNkVCRkU1IC8qIEZpZG9IaWRNZXNzYWdlVGVzdC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk3QTMyRDc0QTFGMDIxNTE1MDAxNjJDNDQgLyogRmlsZU1vbml0b3Iu
Y3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJN0M4M0UwNEYxRDBBNjQxODAwRkVCQ0YzIC8qIEZpbGVT
eXN0ZW0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFRjMxQTQxMUFFNjAwNDQ3QzRDIC8q
IEZpbmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0UwQkIxRDBBNjUwMDAwRkVCQ0YzIC8q
IEZpbmRJblBhZ2UubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VGNDFBNDExQUU2MDA0NDdD
NEMgLyogRmluZE1hdGNoZXMubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWJhYzAxODhmNTY4NDUxMDM4
NjQyZWUyNTc0YWQwNWM3YzExNmZkMgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCkBAIC0wLDAgKzEsMTUwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIlRlc3QuaCIKKyNpbmNsdWRlIDx3
dGYvRmlsZU1ldGFkYXRhLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRl
IDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMuaD4KKwordXNp
bmcgbmFtZXNwYWNlIFdURjsKKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitjb25zdCBj
aGFyKiBGaWxlU3lzdGVtVGVzdERhdGEgPSAiVGhpcyBpcyBhIHRlc3QiOworCisvLyBGSVhNRTog
UmVmYWN0b3IgRmlsZVN5c3RlbVRlc3QgYW5kIFNoYXJlZEJ1ZmZlclRlc3QgYXMgYSBzaW5nbGUg
Y2xhc3MuCitjbGFzcyBGaWxlU3lzdGVtVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK3B1
YmxpYzoKKyAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIFdURjo6aW5p
dGlhbGl6ZU1haW5UaHJlYWQoKTsKKworICAgICAgICAvLyBjcmVhdGUgdGVtcCBmaWxlCisgICAg
ICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGU7CisgICAgICAgIG1fdGVt
cEZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoInRlbXBUZXN0RmlsZSIs
IGhhbmRsZSk7CisgICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhhbmRsZSwgRmlsZVN5
c3RlbVRlc3REYXRhLCBzdHJsZW4oRmlsZVN5c3RlbVRlc3REYXRhKSk7CisgICAgICAgIEZpbGVT
eXN0ZW06OmNsb3NlRmlsZShoYW5kbGUpOworCisgICAgICAgIG1fdGVtcEZpbGVTeW1saW5rUGF0
aCA9IG1fdGVtcEZpbGVQYXRoICsgIi1zeW1saW5rIjsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y3Jl
YXRlU3ltYm9saWNMaW5rKG1fdGVtcEZpbGVQYXRoLCBtX3RlbXBGaWxlU3ltbGlua1BhdGgpOwor
CisgICAgICAgIG1fdGVtcEVtcHR5RmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5
RmlsZSgidGVtcEVtcHR5VGVzdEZpbGUiLCBoYW5kbGUpOworICAgICAgICBGaWxlU3lzdGVtOjpj
bG9zZUZpbGUoaGFuZGxlKTsKKworICAgICAgICBtX3NwYWNlQ29udGFpbmluZ0ZpbGVQYXRoID0g
RmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoInRlbXAgRW1wdHkgVGVzdCBGaWxlIiwgaGFu
ZGxlKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CisKKyAgICAgICAg
bV9iYW5nQ29udGFpbmluZ0ZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUo
InRlbXAhRW1wdHkhVGVzdCFGaWxlIiwgaGFuZGxlKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xv
c2VGaWxlKGhhbmRsZSk7CisKKyAgICAgICAgbV9xdW90ZUNvbnRhaW5pbmdGaWxlUGF0aCA9IEZp
bGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wXCJFbXB0eVwiVGVzdEZpbGUiLCBoYW5k
bGUpOworICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKKyAgICB9CisKKyAg
ICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIEZpbGVTeXN0ZW06OmRl
bGV0ZUZpbGUobV90ZW1wRmlsZVBhdGgpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxl
KG1fdGVtcEZpbGVTeW1saW5rUGF0aCk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUo
bV90ZW1wRW1wdHlGaWxlUGF0aCk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9z
cGFjZUNvbnRhaW5pbmdGaWxlUGF0aCk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUo
bV9iYW5nQ29udGFpbmluZ0ZpbGVQYXRoKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmls
ZShtX3F1b3RlQ29udGFpbmluZ0ZpbGVQYXRoKTsKKyAgICB9CisKKyAgICBjb25zdCBTdHJpbmcm
IHRlbXBGaWxlUGF0aCgpIHsgcmV0dXJuIG1fdGVtcEZpbGVQYXRoOyB9CisgICAgY29uc3QgU3Ry
aW5nJiB0ZW1wRmlsZVN5bWxpbmtQYXRoKCkgeyByZXR1cm4gbV90ZW1wRmlsZVN5bWxpbmtQYXRo
OyB9CisgICAgY29uc3QgU3RyaW5nJiB0ZW1wRW1wdHlGaWxlUGF0aCgpIHsgcmV0dXJuIG1fdGVt
cEVtcHR5RmlsZVBhdGg7IH0KKyAgICBjb25zdCBTdHJpbmcmIHNwYWNlQ29udGFpbmluZ0ZpbGVQ
YXRoKCkgeyByZXR1cm4gbV9zcGFjZUNvbnRhaW5pbmdGaWxlUGF0aDsgfQorICAgIGNvbnN0IFN0
cmluZyYgYmFuZ0NvbnRhaW5pbmdGaWxlUGF0aCgpIHsgcmV0dXJuIG1fYmFuZ0NvbnRhaW5pbmdG
aWxlUGF0aDsgfQorICAgIGNvbnN0IFN0cmluZyYgcXVvdGVDb250YWluaW5nRmlsZVBhdGgoKSB7
IHJldHVybiBtX3F1b3RlQ29udGFpbmluZ0ZpbGVQYXRoOyB9CisKK3ByaXZhdGU6CisgICAgU3Ry
aW5nIG1fdGVtcEZpbGVQYXRoOworICAgIFN0cmluZyBtX3RlbXBGaWxlU3ltbGlua1BhdGg7Cisg
ICAgU3RyaW5nIG1fdGVtcEVtcHR5RmlsZVBhdGg7CisgICAgU3RyaW5nIG1fc3BhY2VDb250YWlu
aW5nRmlsZVBhdGg7CisgICAgU3RyaW5nIG1fYmFuZ0NvbnRhaW5pbmdGaWxlUGF0aDsKKyAgICBT
dHJpbmcgbV9xdW90ZUNvbnRhaW5pbmdGaWxlUGF0aDsKK307CisKK1RFU1RfRihGaWxlU3lzdGVt
VGVzdCwgTWFwcGluZ01pc3NpbmdGaWxlKQoreworICAgIGJvb2wgc3VjY2VzczsKKyAgICBGaWxl
U3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YShTdHJpbmcoIm5vdF9leGlzdGlu
Z19maWxlIiksIHN1Y2Nlc3MpOworICAgIEVYUEVDVF9GQUxTRShzdWNjZXNzKTsKKyAgICBFWFBF
Q1RfVFJVRSghbWFwcGVkRmlsZURhdGEpOworfQorCitURVNUX0YoRmlsZVN5c3RlbVRlc3QsIE1h
cHBpbmdFeGlzdGluZ0ZpbGUpCit7CisgICAgYm9vbCBzdWNjZXNzOworICAgIEZpbGVTeXN0ZW06
Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKHRlbXBGaWxlUGF0aCgpLCBzdWNjZXNzKTsK
KyAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKKyAgICBFWFBFQ1RfVFJVRSghIW1hcHBlZEZpbGVE
YXRhKTsKKyAgICBFWFBFQ1RfVFJVRShtYXBwZWRGaWxlRGF0YS5zaXplKCkgPT0gc3RybGVuKEZp
bGVTeXN0ZW1UZXN0RGF0YSkpOworICAgIEVYUEVDVF9UUlVFKHN0cm5zdHIoRmlsZVN5c3RlbVRl
c3REYXRhLCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obWFwcGVkRmlsZURhdGEuZGF0YSgpKSwg
bWFwcGVkRmlsZURhdGEuc2l6ZSgpKSk7Cit9CisKK1RFU1RfRihGaWxlU3lzdGVtVGVzdCwgTWFw
cGluZ0V4aXN0aW5nRW1wdHlGaWxlKQoreworICAgIGJvb2wgc3VjY2VzczsKKyAgICBGaWxlU3lz
dGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YSh0ZW1wRW1wdHlGaWxlUGF0aCgpLCBz
dWNjZXNzKTsKKyAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKKyAgICBFWFBFQ1RfVFJVRSghbWFw
cGVkRmlsZURhdGEpOworfQorCitURVNUX0YoRmlsZVN5c3RlbVRlc3QsIEZpbGVzSGF2ZVNhbWVW
b2x1bWUpCit7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZXNIYXZlU2FtZVZvbHVt
ZSh0ZW1wRmlsZVBhdGgoKSwgc3BhY2VDb250YWluaW5nRmlsZVBhdGgoKSkpOworICAgIEVYUEVD
VF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVzSGF2ZVNhbWVWb2x1bWUoc3BhY2VDb250YWluaW5nRmls
ZVBhdGgoKSwgYmFuZ0NvbnRhaW5pbmdGaWxlUGF0aCgpKSk7CisgICAgRVhQRUNUX1RSVUUoRmls
ZVN5c3RlbTo6ZmlsZXNIYXZlU2FtZVZvbHVtZShiYW5nQ29udGFpbmluZ0ZpbGVQYXRoKCksIHF1
b3RlQ29udGFpbmluZ0ZpbGVQYXRoKCkpKTsKK30KKworVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBH
ZXRGaWxlTWV0YWRhdGFTeW1saW5rKQoreworICAgIGF1dG8gc3ltbGlua01ldGFkYXRhID0gRmls
ZVN5c3RlbTo6ZmlsZU1ldGFkYXRhKHRlbXBGaWxlU3ltbGlua1BhdGgoKSk7CisgICAgQVNTRVJU
X1RSVUUoc3ltbGlua01ldGFkYXRhLmhhc1ZhbHVlKCkpOworICAgIEVYUEVDVF9UUlVFKHN5bWxp
bmtNZXRhZGF0YS52YWx1ZSgpLnR5cGUgPT0gRmlsZU1ldGFkYXRhOjpUeXBlOjpTeW1ib2xpY0xp
bmspOworICAgIEVYUEVDVF9GQUxTRShzdGF0aWNfY2FzdDxzaXplX3Q+KHN5bWxpbmtNZXRhZGF0
YS52YWx1ZSgpLmxlbmd0aCkgPT0gc3RybGVuKEZpbGVTeXN0ZW1UZXN0RGF0YSkpOworCisgICAg
YXV0byB0YXJnZXRNZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0YUZvbGxvd2luZ1N5
bWxpbmtzKHRlbXBGaWxlU3ltbGlua1BhdGgoKSk7CisgICAgQVNTRVJUX1RSVUUodGFyZ2V0TWV0
YWRhdGEuaGFzVmFsdWUoKSk7CisgICAgRVhQRUNUX1RSVUUodGFyZ2V0TWV0YWRhdGEudmFsdWUo
KS50eXBlID09IEZpbGVNZXRhZGF0YTo6VHlwZTo6RmlsZSk7CisgICAgRVhQRUNUX0VRKHN0cmxl
bihGaWxlU3lzdGVtVGVzdERhdGEpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KHRhcmdldE1ldGFkYXRh
LnZhbHVlKCkubGVuZ3RoKSk7Cit9CisKK1RFU1RfRihGaWxlU3lzdGVtVGVzdCwgVW5pY29kZURp
cmVjdG9yeU5hbWUpCit7CisgICAgU3RyaW5nIHBhdGggPSBTdHJpbmc6OmZyb21VVEY4KCIvdGVz
dC9hXHUwMzA4bG8vdGVzdC50eHQiKTsKKyAgICBTdHJpbmcgZGlyZWN0b3J5TmFtZSA9IEZpbGVT
eXN0ZW06OmRpcmVjdG9yeU5hbWUocGF0aCk7CisgICAgU3RyaW5nIGV4cGVjdGVkRGlyZWN0b3J5
TmFtZSA9IFN0cmluZzo6ZnJvbVVURjgoIi90ZXN0L2FcdTAzMDhsbyIpOworICAgIEVYUEVDVF9U
UlVFKGV4cGVjdGVkRGlyZWN0b3J5TmFtZSA9PSBkaXJlY3RvcnlOYW1lKTsKK30KKworfQpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNw
cCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRvci5jcHAKaW5k
ZXggNWYxZGM4YjJlNGQ1MjRkMzUyNjgwNGJkNmNkOWNlOThhMzcxMWZlOC4uZTAwMmRmMWVmMDk0
ZjViM2YwMGQxNmU5YzZiZTZkNDlkNWU2YWYyNCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZU1vbml0b3IuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5j
bHVkZSAiVGVzdC5oIgogI2luY2x1ZGUgIldURlN0cmluZ1V0aWxpdGllcy5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvRmlsZU1vbml0b3IuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4K
KyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+
CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlU3lzdGVtLmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlU3lzdGVtLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzY2MjUwMjUzMDk3MjdlYTYwNWNiNTJjZmM5ZWNkNGIz
M2U3Nzg3NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZVN5c3RlbS5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSwxNTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0K
LSNpbmNsdWRlICJUZXN0LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlTWV0YWRhdGEuaD4KLSNp
bmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KLSNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5o
PgotI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7Ci0KLW5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKLQotY29uc3QgY2hhciogRmlsZVN5c3Rl
bVRlc3REYXRhID0gIlRoaXMgaXMgYSB0ZXN0IjsKLQotLy8gRklYTUU6IFJlZmFjdG9yIEZpbGVT
eXN0ZW1UZXN0IGFuZCBTaGFyZWRCdWZmZXJUZXN0IGFzIGEgc2luZ2xlIGNsYXNzLgotY2xhc3Mg
RmlsZVN5c3RlbVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci1wdWJsaWM6Ci0gICAgdm9p
ZCBTZXRVcCgpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhy
ZWFkKCk7Ci0gICAgICAgIAotICAgICAgICAvLyBjcmVhdGUgdGVtcCBmaWxlCi0gICAgICAgIEZp
bGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGU7Ci0gICAgICAgIG1fdGVtcEZpbGVQ
YXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoInRlbXBUZXN0RmlsZSIsIGhhbmRs
ZSk7Ci0gICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhhbmRsZSwgRmlsZVN5c3RlbVRl
c3REYXRhLCBzdHJsZW4oRmlsZVN5c3RlbVRlc3REYXRhKSk7Ci0gICAgICAgIEZpbGVTeXN0ZW06
OmNsb3NlRmlsZShoYW5kbGUpOwotCi0gICAgICAgIG1fdGVtcEZpbGVTeW1saW5rUGF0aCA9IG1f
dGVtcEZpbGVQYXRoICsgIi1zeW1saW5rIjsKLSAgICAgICAgRmlsZVN5c3RlbTo6Y3JlYXRlU3lt
Ym9saWNMaW5rKG1fdGVtcEZpbGVQYXRoLCBtX3RlbXBGaWxlU3ltbGlua1BhdGgpOwotCi0gICAg
ICAgIG1fdGVtcEVtcHR5RmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgi
dGVtcEVtcHR5VGVzdEZpbGUiLCBoYW5kbGUpOwotICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZp
bGUoaGFuZGxlKTsKLQotICAgICAgICBtX3NwYWNlQ29udGFpbmluZ0ZpbGVQYXRoID0gRmlsZVN5
c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoInRlbXAgRW1wdHkgVGVzdCBGaWxlIiwgaGFuZGxlKTsK
LSAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7Ci0KLSAgICAgICAgbV9iYW5n
Q29udGFpbmluZ0ZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoInRlbXAh
RW1wdHkhVGVzdCFGaWxlIiwgaGFuZGxlKTsKLSAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxl
KGhhbmRsZSk7Ci0KLSAgICAgICAgbV9xdW90ZUNvbnRhaW5pbmdGaWxlUGF0aCA9IEZpbGVTeXN0
ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wXCJFbXB0eVwiVGVzdEZpbGUiLCBoYW5kbGUpOwot
ICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKLSAgICB9Ci0KLSAgICB2b2lk
IFRlYXJEb3duKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZp
bGUobV90ZW1wRmlsZVBhdGgpOwotICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fdGVt
cEZpbGVTeW1saW5rUGF0aCk7Ci0gICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV90ZW1w
RW1wdHlGaWxlUGF0aCk7Ci0gICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9zcGFjZUNv
bnRhaW5pbmdGaWxlUGF0aCk7Ci0gICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9iYW5n
Q29udGFpbmluZ0ZpbGVQYXRoKTsKLSAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX3F1
b3RlQ29udGFpbmluZ0ZpbGVQYXRoKTsKLSAgICB9Ci0KLSAgICBjb25zdCBTdHJpbmcmIHRlbXBG
aWxlUGF0aCgpIHsgcmV0dXJuIG1fdGVtcEZpbGVQYXRoOyB9Ci0gICAgY29uc3QgU3RyaW5nJiB0
ZW1wRmlsZVN5bWxpbmtQYXRoKCkgeyByZXR1cm4gbV90ZW1wRmlsZVN5bWxpbmtQYXRoOyB9Ci0g
ICAgY29uc3QgU3RyaW5nJiB0ZW1wRW1wdHlGaWxlUGF0aCgpIHsgcmV0dXJuIG1fdGVtcEVtcHR5
RmlsZVBhdGg7IH0KLSAgICBjb25zdCBTdHJpbmcmIHNwYWNlQ29udGFpbmluZ0ZpbGVQYXRoKCkg
eyByZXR1cm4gbV9zcGFjZUNvbnRhaW5pbmdGaWxlUGF0aDsgfQotICAgIGNvbnN0IFN0cmluZyYg
YmFuZ0NvbnRhaW5pbmdGaWxlUGF0aCgpIHsgcmV0dXJuIG1fYmFuZ0NvbnRhaW5pbmdGaWxlUGF0
aDsgfQotICAgIGNvbnN0IFN0cmluZyYgcXVvdGVDb250YWluaW5nRmlsZVBhdGgoKSB7IHJldHVy
biBtX3F1b3RlQ29udGFpbmluZ0ZpbGVQYXRoOyB9Ci0KLXByaXZhdGU6Ci0gICAgU3RyaW5nIG1f
dGVtcEZpbGVQYXRoOwotICAgIFN0cmluZyBtX3RlbXBGaWxlU3ltbGlua1BhdGg7Ci0gICAgU3Ry
aW5nIG1fdGVtcEVtcHR5RmlsZVBhdGg7Ci0gICAgU3RyaW5nIG1fc3BhY2VDb250YWluaW5nRmls
ZVBhdGg7Ci0gICAgU3RyaW5nIG1fYmFuZ0NvbnRhaW5pbmdGaWxlUGF0aDsKLSAgICBTdHJpbmcg
bV9xdW90ZUNvbnRhaW5pbmdGaWxlUGF0aDsKLX07Ci0KLVRFU1RfRihGaWxlU3lzdGVtVGVzdCwg
TWFwcGluZ01pc3NpbmdGaWxlKQotewotICAgIGJvb2wgc3VjY2VzczsKLSAgICBGaWxlU3lzdGVt
OjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YShTdHJpbmcoIm5vdF9leGlzdGluZ19maWxl
IiksIHN1Y2Nlc3MpOwotICAgIEVYUEVDVF9GQUxTRShzdWNjZXNzKTsKLSAgICBFWFBFQ1RfVFJV
RSghbWFwcGVkRmlsZURhdGEpOwotfQotCi1URVNUX0YoRmlsZVN5c3RlbVRlc3QsIE1hcHBpbmdF
eGlzdGluZ0ZpbGUpCi17Ci0gICAgYm9vbCBzdWNjZXNzOwotICAgIEZpbGVTeXN0ZW06Ok1hcHBl
ZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKHRlbXBGaWxlUGF0aCgpLCBzdWNjZXNzKTsKLSAgICBF
WFBFQ1RfVFJVRShzdWNjZXNzKTsKLSAgICBFWFBFQ1RfVFJVRSghIW1hcHBlZEZpbGVEYXRhKTsK
LSAgICBFWFBFQ1RfVFJVRShtYXBwZWRGaWxlRGF0YS5zaXplKCkgPT0gc3RybGVuKEZpbGVTeXN0
ZW1UZXN0RGF0YSkpOwotICAgIEVYUEVDVF9UUlVFKHN0cm5zdHIoRmlsZVN5c3RlbVRlc3REYXRh
LCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obWFwcGVkRmlsZURhdGEuZGF0YSgpKSwgbWFwcGVk
RmlsZURhdGEuc2l6ZSgpKSk7Ci19Ci0KLVRFU1RfRihGaWxlU3lzdGVtVGVzdCwgTWFwcGluZ0V4
aXN0aW5nRW1wdHlGaWxlKQotewotICAgIGJvb2wgc3VjY2VzczsKLSAgICBGaWxlU3lzdGVtOjpN
YXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YSh0ZW1wRW1wdHlGaWxlUGF0aCgpLCBzdWNjZXNz
KTsKLSAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKLSAgICBFWFBFQ1RfVFJVRSghbWFwcGVkRmls
ZURhdGEpOwotfQotCi1URVNUX0YoRmlsZVN5c3RlbVRlc3QsIEZpbGVzSGF2ZVNhbWVWb2x1bWUp
Ci17Ci0gICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZXNIYXZlU2FtZVZvbHVtZSh0ZW1w
RmlsZVBhdGgoKSwgc3BhY2VDb250YWluaW5nRmlsZVBhdGgoKSkpOwotICAgIEVYUEVDVF9UUlVF
KEZpbGVTeXN0ZW06OmZpbGVzSGF2ZVNhbWVWb2x1bWUoc3BhY2VDb250YWluaW5nRmlsZVBhdGgo
KSwgYmFuZ0NvbnRhaW5pbmdGaWxlUGF0aCgpKSk7Ci0gICAgRVhQRUNUX1RSVUUoRmlsZVN5c3Rl
bTo6ZmlsZXNIYXZlU2FtZVZvbHVtZShiYW5nQ29udGFpbmluZ0ZpbGVQYXRoKCksIHF1b3RlQ29u
dGFpbmluZ0ZpbGVQYXRoKCkpKTsKLX0KLQotVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBHZXRGaWxl
TWV0YWRhdGFTeW1saW5rKQotewotICAgIGF1dG8gc3ltbGlua01ldGFkYXRhID0gRmlsZVN5c3Rl
bTo6ZmlsZU1ldGFkYXRhKHRlbXBGaWxlU3ltbGlua1BhdGgoKSk7Ci0gICAgQVNTRVJUX1RSVUUo
c3ltbGlua01ldGFkYXRhLmhhc1ZhbHVlKCkpOwotICAgIEVYUEVDVF9UUlVFKHN5bWxpbmtNZXRh
ZGF0YS52YWx1ZSgpLnR5cGUgPT0gRmlsZU1ldGFkYXRhOjpUeXBlOjpTeW1ib2xpY0xpbmspOwot
ICAgIEVYUEVDVF9GQUxTRShzdGF0aWNfY2FzdDxzaXplX3Q+KHN5bWxpbmtNZXRhZGF0YS52YWx1
ZSgpLmxlbmd0aCkgPT0gc3RybGVuKEZpbGVTeXN0ZW1UZXN0RGF0YSkpOwotCi0gICAgYXV0byB0
YXJnZXRNZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0YUZvbGxvd2luZ1N5bWxpbmtz
KHRlbXBGaWxlU3ltbGlua1BhdGgoKSk7Ci0gICAgQVNTRVJUX1RSVUUodGFyZ2V0TWV0YWRhdGEu
aGFzVmFsdWUoKSk7Ci0gICAgRVhQRUNUX1RSVUUodGFyZ2V0TWV0YWRhdGEudmFsdWUoKS50eXBl
ID09IEZpbGVNZXRhZGF0YTo6VHlwZTo6RmlsZSk7Ci0gICAgRVhQRUNUX0VRKHN0cmxlbihGaWxl
U3lzdGVtVGVzdERhdGEpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KHRhcmdldE1ldGFkYXRhLnZhbHVl
KCkubGVuZ3RoKSk7Ci19Ci0KLVRFU1RfRihGaWxlU3lzdGVtVGVzdCwgVW5pY29kZURpcmVjdG9y
eU5hbWUpCi17Ci0gICAgU3RyaW5nIHBhdGggPSBTdHJpbmc6OmZyb21VVEY4KCIvdGVzdC9hXHUw
MzA4bG8vdGVzdC50eHQiKTsKLSAgICBTdHJpbmcgZGlyZWN0b3J5TmFtZSA9IEZpbGVTeXN0ZW06
OmRpcmVjdG9yeU5hbWUocGF0aCk7Ci0gICAgU3RyaW5nIGV4cGVjdGVkRGlyZWN0b3J5TmFtZSA9
IFN0cmluZzo6ZnJvbVVURjgoIi90ZXN0L2FcdTAzMDhsbyIpOwotICAgIEVYUEVDVF9UUlVFKGV4
cGVjdGVkRGlyZWN0b3J5TmFtZSA9PSBkaXJlY3RvcnlOYW1lKTsKLX0KLQotfQpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TZWN1cml0eU9yaWdpbi5jcHAKaW5k
ZXggZGE1ZjRmZjU4OThhOWYwOWM4YjgzOTVhNTVkZTczOGYxNjhjOTA5Zi4uYTQxYWI0YmNhMzcx
ZDQ1ZGU4Y2I0NTg2ODViYzk3NGUzMGY0MDZmMyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmNwcAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2VjdXJpdHlPcmlnaW4uY3BwCkBAIC0yNiw4ICsyNiw4IEBA
CiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXVEZTdHJpbmdVdGlsaXRpZXMuaCIK
LSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3Vy
aXR5T3JpZ2luLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYv
TWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIApkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuY3BwIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuY3BwCmluZGV4IDhm
ZTM1NjdjMWUxMTM2OTFkODViN2M1NWExZjk2NjU5ZGU5ZDFmMjQuLjliOGIxM2E3NWQ1MmZmOTUx
ZWFkMTgxODVkNTZjMzc5MWIyZDdiZWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5jcHAKQEAgLTI2LDExICsyNiw5IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyVGVzdC5oIgogCi0j
aW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0u
aD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCi11c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKLQogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiB2b2lkIFNoYXJlZEJ1ZmZlclRlc3Q6
OlNldFVwKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9j
b2NvYS9EYXRhYmFzZVRyYWNrZXJUZXN0Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL2NvY29hL0RhdGFiYXNlVHJhY2tlclRlc3QubW0KaW5kZXggNmEzYzcwMjgwYTRlZGUw
MDkxMDJlZTk5NzZiMzY3YzI2YWI3ZmVlNy4uMjIxNzE1NmY2ZTU2OTE1YTc1ZDQ0ODg0ZWFkNTE3
MTlhN2M1MjkxMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L2NvY29hL0RhdGFiYXNlVHJhY2tlclRlc3QubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL2NvY29hL0RhdGFiYXNlVHJhY2tlclRlc3QubW0KQEAgLTI2LDExICsyNiwx
MSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaW5jbHVkZSA8V2ViQ29yZS9EYXRhYmFzZVRy
YWNrZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJD
b3JlL09yaWdpbkxvY2suaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZURhdGFiYXNlLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVTdGF0ZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Nl
Y3VyaXR5T3JpZ2luRGF0YS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvY3VybC9Db29raWVzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9jdXJsL0Nvb2tpZXMuY3BwCmluZGV4IDFiOGQ3ZmMzY2RlNTAyOTllMzBhZDZjNmQ4
Y2ExNjI3ZjIzOTBjMWYuLmI0MGIwZDVhMGE1ZTVmYjVmNDkxOWEzZGEyYzJmZWQ2ZmNiYzFjNGUg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jdXJsL0Nvb2tp
ZXMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jdXJsL0Nvb2tp
ZXMuY3BwCkBAIC0yOSw4ICsyOSw4IEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZUphckRC
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db29raWVVdGlsLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9G
aWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVt
Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbQppbmRleCA2MGNjOTNiMzQwZGQ2ODA5
NDFjNDFhMmE1YWEwYmE5MjNiNWFlYzY0Li42ODFiMDJjYTljODdkYWVjMzcyNjIyNDYxN2QxYzU5
MjA4OGQ3YTZjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0Rvd25sb2FkLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvRG93bmxvYWQubW0KQEAgLTMzLDcgKzMzLDYgQEAKICNpbXBvcnQgIlRlc3QuaCIKICNpbXBv
cnQgIlRlc3RQcm90b2NvbC5oIgogI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgotI2ltcG9ydCA8
V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLRG93bmxvYWQuaD4KICNp
bXBvcnQgPFdlYktpdC9fV0tEb3dubG9hZERlbGVnYXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tO
YXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlLmg+CkBAIC00MSw2ICs0MCw3IEBACiAjaW1wb3J0IDxX
ZWJLaXQvV0tVSURlbGVnYXRlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlldy5o
PgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb24uaD4KKyNpbXBvcnQgPHd0
Zi9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgogI2ltcG9ydCA8d3Rm
L1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC05NCwxMCAr
OTQsMTAgQEAgSUdOT1JFX1dBUk5JTkdTX0VORAogICAgIEVYUEVDVF9UUlVFKGhhc1JlY2VpdmVk
UmVzcG9uc2UpOwogICAgIEVYUEVDVF9FUShfZG93bmxvYWQsIGRvd25sb2FkKTsKIAotICAgIFdl
YkNvcmU6OkZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlSGFuZGxlOwotICAgIF9k
ZXN0aW5hdGlvblBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgi
VGVzdFdlYktpdEFQSSIsIGZpbGVIYW5kbGUpOwotICAgIEVYUEVDVF9UUlVFKGZpbGVIYW5kbGUg
IT0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7Ci0gICAg
V2ViQ29yZTo6RmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOworICAgIEZpbGVTeXN0
ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlSGFuZGxlOworICAgIF9kZXN0aW5hdGlvblBhdGgg
PSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiVGVzdFdlYktpdEFQSSIsIGZpbGVIYW5k
bGUpOworICAgIEVYUEVDVF9UUlVFKGZpbGVIYW5kbGUgIT0gRmlsZVN5c3RlbTo6aW52YWxpZFBs
YXRmb3JtRmlsZUhhbmRsZSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUp
OwogCiAgICAgKmFsbG93T3ZlcndyaXRlID0gWUVTOwogICAgIHJldHVybiBfZGVzdGluYXRpb25Q
YXRoOwpAQCAtMTA5LDcgKzEwOSw3IEBAIC0gKHZvaWQpX2Rvd25sb2FkRGlkRmluaXNoOihfV0tE
b3dubG9hZCAqKWRvd25sb2FkCiAgICAgRVhQRUNUX0VRKGV4cGVjdGVkVXNlckluaXRpYXRlZFN0
YXRlLCBkb3dubG9hZC53YXNVc2VySW5pdGlhdGVkKTsKICAgICBFWFBFQ1RfVFJVRShfZXhwZWN0
ZWRDb250ZW50TGVuZ3RoID09IE5TVVJMUmVzcG9uc2VVbmtub3duTGVuZ3RoIHx8IHN0YXRpY19j
YXN0PHVpbnQ2NF90PihfZXhwZWN0ZWRDb250ZW50TGVuZ3RoKSA9PSBfcmVjZWl2ZWRDb250ZW50
TGVuZ3RoKTsKICAgICBFWFBFQ1RfVFJVRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJd
IGNvbnRlbnRzRXF1YWxBdFBhdGg6X2Rlc3RpbmF0aW9uUGF0aCBhbmRQYXRoOltzb3VyY2VVUkwg
cGF0aF1dKTsKLSAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVGaWxlKF9kZXN0aW5hdGlv
blBhdGgpOworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoX2Rlc3RpbmF0aW9uUGF0aCk7CiAg
ICAgaXNEb25lID0gdHJ1ZTsKIH0KIApAQCAtMzk3LDEwICszOTcsMTAgQEAgSUdOT1JFX1dBUk5J
TkdTX0VORAogICAgIEVYUEVDVF9UUlVFKGhhc1JlY2VpdmVkUmVzcG9uc2UpOwogICAgIEVYUEVD
VF9FUShfZG93bmxvYWQsIGRvd25sb2FkKTsKIAotICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OlBs
YXRmb3JtRmlsZUhhbmRsZSBmaWxlSGFuZGxlOwotICAgIF9kZXN0aW5hdGlvblBhdGggPSBXZWJD
b3JlOjpGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiVGVzdFdlYktpdEFQSSIsIGZpbGVI
YW5kbGUpOwotICAgIEVYUEVDVF9UUlVFKGZpbGVIYW5kbGUgIT0gV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7Ci0gICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6
Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOworICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRs
ZSBmaWxlSGFuZGxlOworICAgIF9kZXN0aW5hdGlvblBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVt
cG9yYXJ5RmlsZSgiVGVzdFdlYktpdEFQSSIsIGZpbGVIYW5kbGUpOworICAgIEVYUEVDVF9UUlVF
KGZpbGVIYW5kbGUgIT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7Cisg
ICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOwogCiAgICAgKmFsbG93T3Zlcndy
aXRlID0gWUVTOwogICAgIHJldHVybiBfZGVzdGluYXRpb25QYXRoOwpAQCAtNDE0LDcgKzQxNCw3
IEBAIC0gKHZvaWQpX2Rvd25sb2FkRGlkRmluaXNoOihfV0tEb3dubG9hZCAqKWRvd25sb2FkCiAg
ICAgTlNTdHJpbmcqIGV4cGVjdGVkQ29udGVudCA9IEAie1wieFwiOjQyLFwic1wiOlwiaGVsbG8s
IHdvcmxkXCJ9IjsKICAgICBOU0RhdGEqIGV4cGVjdGVkRGF0YSA9IFtleHBlY3RlZENvbnRlbnQg
ZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOwogICAgIEVYUEVDVF9UUlVF
KFtbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNvbnRlbnRzQXRQYXRoOl9kZXN0aW5h
dGlvblBhdGhdIGlzRXF1YWxUb0RhdGE6ZXhwZWN0ZWREYXRhXSk7Ci0gICAgV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6ZGVsZXRlRmlsZShfZGVzdGluYXRpb25QYXRoKTsKKyAgICBGaWxlU3lzdGVtOjpk
ZWxldGVGaWxlKF9kZXN0aW5hdGlvblBhdGgpOwogICAgIGlzRG9uZSA9IHRydWU7CiB9CiAKQEAg
LTQ1NywxMCArNDU3LDEwIEBAIElHTk9SRV9XQVJOSU5HU19CRUdJTigiZGVwcmVjYXRlZC1pbXBs
ZW1lbnRhdGlvbnMiKQogLSAoTlNTdHJpbmcgKilfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93
bmxvYWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6KE5TU3RyaW5nICop
ZmlsZW5hbWUgYWxsb3dPdmVyd3JpdGU6KEJPT0wgKilhbGxvd092ZXJ3cml0ZQogSUdOT1JFX1dB
Uk5JTkdTX0VORAogewotICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRs
ZSBmaWxlSGFuZGxlOwotICAgIF9kZXN0aW5hdGlvblBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVt
OjpvcGVuVGVtcG9yYXJ5RmlsZSgiVGVzdFdlYktpdEFQSSIsIGZpbGVIYW5kbGUpOwotICAgIEVY
UEVDVF9UUlVFKGZpbGVIYW5kbGUgIT0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6aW52YWxpZFBsYXRm
b3JtRmlsZUhhbmRsZSk7Ci0gICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVI
YW5kbGUpOworICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlSGFuZGxlOwor
ICAgIF9kZXN0aW5hdGlvblBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiVGVz
dFdlYktpdEFQSSIsIGZpbGVIYW5kbGUpOworICAgIEVYUEVDVF9UUlVFKGZpbGVIYW5kbGUgIT0g
RmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7CisgICAgRmlsZVN5c3RlbTo6
Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOwogICAgICphbGxvd092ZXJ3cml0ZSA9IFlFUzsKICAgICBy
ZXR1cm4gX2Rlc3RpbmF0aW9uUGF0aDsKIH0KQEAgLTQ4Nyw3ICs0ODcsNyBAQCAtICh2b2lkKV9k
b3dubG9hZERpZEZpbmlzaDooX1dLRG93bmxvYWQgKilkb3dubG9hZAogICAgIGlmIChyZWRpcmVj
dENoYWluLmNvdW50ID4gMikKICAgICAgICAgRVhQRUNUX1NUUkVRKCJodHRwOi8vcGFzcy8iLCBb
cmVkaXJlY3RDaGFpblsyXS5hYnNvbHV0ZVN0cmluZyBVVEY4U3RyaW5nXSk7CiAKLSAgICBXZWJD
b3JlOjpGaWxlU3lzdGVtOjpkZWxldGVGaWxlKF9kZXN0aW5hdGlvblBhdGgpOworICAgIEZpbGVT
eXN0ZW06OmRlbGV0ZUZpbGUoX2Rlc3RpbmF0aW9uUGF0aCk7CiAgICAgaXNEb25lID0gdHJ1ZTsK
IH0KIApAQCAtNjMyLDE3ICs2MzIsMTcgQEAgLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2Fk
ICopZG93bmxvYWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUKIHsKICAg
ICBFWFBFQ1RfVFJVRShbZmlsZW5hbWUgaGFzU3VmZml4OkAiLnVzZHoiXSk7CiAKLSAgICBXZWJD
b3JlOjpGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRsZTsKLSAgICBfZGVz
dGluYXRpb25QYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoZmls
ZW5hbWUsIGZpbGVIYW5kbGUpOwotICAgIEVYUEVDVF9UUlVFKGZpbGVIYW5kbGUgIT0gV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7Ci0gICAgV2ViQ29yZTo6
RmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOworICAgIEZpbGVTeXN0ZW06OlBsYXRm
b3JtRmlsZUhhbmRsZSBmaWxlSGFuZGxlOworICAgIF9kZXN0aW5hdGlvblBhdGggPSBGaWxlU3lz
dGVtOjpvcGVuVGVtcG9yYXJ5RmlsZShmaWxlbmFtZSwgZmlsZUhhbmRsZSk7CisgICAgRVhQRUNU
X1RSVUUoZmlsZUhhbmRsZSAhPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxl
KTsKKyAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CiAKICAgICBjb21wbGV0
aW9uSGFuZGxlcihZRVMsIF9kZXN0aW5hdGlvblBhdGgpOwogfQogCiAtICh2b2lkKV9kb3dubG9h
ZERpZEZpbmlzaDooX1dLRG93bmxvYWQgKilkb3dubG9hZAogewotICAgIFdlYkNvcmU6OkZpbGVT
eXN0ZW06OmRlbGV0ZUZpbGUoX2Rlc3RpbmF0aW9uUGF0aCk7CisgICAgRmlsZVN5c3RlbTo6ZGVs
ZXRlRmlsZShfZGVzdGluYXRpb25QYXRoKTsKICAgICBpc0RvbmUgPSB0cnVlOwogfQogCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkUHJv
Z3Jlc3MubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2Fk
UHJvZ3Jlc3MubW0KaW5kZXggZjU2MGRmM2Y0YzQyZTI0ZTY1YjNiZjYyODcxYjVmYWRjMTlhNWY2
NS4uM2ViMDNmMDRhMWRkOGE4ZTE3Njc4M2Q1ZWZmZDQ4MzQ3YTkwZGEwMCAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZFByb2dyZXNzLm1t
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWRQcm9n
cmVzcy5tbQpAQCAtMjgsNyArMjgsNiBAQAogI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgogI2lt
cG9ydCAiVXRpbGl0aWVzLmgiCiAjaW1wb3J0IDxGb3VuZGF0aW9uL05TUHJvZ3Jlc3MuaD4KLSNp
bXBvcnQgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLQnJvd3NpbmdD
b250ZXh0Q29udHJvbGxlci5oPgogI2ltcG9ydCA8V2ViS2l0L1dLTmF2aWdhdGlvbkRlbGVnYXRl
UHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg+CkBAIC0z
Nyw2ICszNiw3IEBACiAjaW1wb3J0IDxXZWJLaXQvX1dLRG93bmxvYWREZWxlZ2F0ZS5oPgogI2lt
cG9ydCA8cGFsL3NwaS9jb2NvYS9OU1Byb2dyZXNzU1BJLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQ
dHIuaD4KKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRy
Lmg+CiAjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KIApAQCAtMzgwLDEwICszODAsMTAgQEAg
LSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGVjaWRlRGVzdGluYXRp
b25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUKIHsKICAgICBFWFBFQ1RfRVEoZG93bmxvYWQsIG1fZG93
bmxvYWQuZ2V0KCkpOwogCi0gICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFu
ZGxlIGZpbGVIYW5kbGU7Ci0gICAgUmV0YWluUHRyPE5TU3RyaW5nPiBwYXRoID0gKE5TU3RyaW5n
ICopV2ViQ29yZTo6RmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoIlRlc3RXZWJLaXRBUEki
LCBmaWxlSGFuZGxlKTsKLSAgICBFWFBFQ1RfVFJVRShmaWxlSGFuZGxlICE9IFdlYkNvcmU6OkZp
bGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpOwotICAgIFdlYkNvcmU6OkZpbGVT
eXN0ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZp
bGVIYW5kbGUgZmlsZUhhbmRsZTsKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IHBhdGggPSAoTlNT
dHJpbmcgKilGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiVGVzdFdlYktpdEFQSSIsIGZp
bGVIYW5kbGUpOworICAgIEVYUEVDVF9UUlVFKGZpbGVIYW5kbGUgIT0gRmlsZVN5c3RlbTo6aW52
YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVI
YW5kbGUpOwogCiAgICAgY29tcGxldGlvbkhhbmRsZXIoWUVTLCBwYXRoLmdldCgpKTsKIH0KZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL1BsYXRmb3JtVXRpbGl0aWVzV2luLmNw
cCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL1BsYXRmb3JtVXRpbGl0aWVzV2luLmNwcAppbmRl
eCAwNTZiZmY3NzgyOTUyOGIxMjkwZjEyZTM5YWIyMzhiMGY2ODY4Yjg2Li4zNWYyMmUyYThiMWJm
ZTUwYTQ3MDU5MDkxODM0NzIzNjc5YTNkN2ZkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL3dpbi9QbGF0Zm9ybVV0aWxpdGllc1dpbi5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS93aW4vUGxhdGZvcm1VdGlsaXRpZXNXaW4uY3BwCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVk
ZSAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKIAogI2luY2x1ZGUgPFNobHdhcGkuaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRy
YXMuaD4KIApAQCAtNDAsMTkgKzQwLDE5IEBAIHN0YXRpYyBTdHJpbmcgbW9kdWxlRGlyZWN0b3J5
KCkKICAgICB3Y2hhcl90IGZpbGVuYW1lW2J1ZmZlckxlbmd0aF07CiAgICAgYXV0byBsZW4gPSBH
ZXRNb2R1bGVGaWxlTmFtZShudWxscHRyLCBmaWxlbmFtZSwgYnVmZmVyTGVuZ3RoKTsKICAgICBB
U1NFUlQobGVuID4gMCk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRpcmVjdG9y
eU5hbWUod2NoYXJUb1N0cmluZyhmaWxlbmFtZSwgbGVuKSk7CisgICAgcmV0dXJuIEZpbGVTeXN0
ZW06OmRpcmVjdG9yeU5hbWUod2NoYXJUb1N0cmluZyhmaWxlbmFtZSwgbGVuKSk7CiB9CiAKIFdL
U3RyaW5nUmVmIGNyZWF0ZUluamVjdGVkQnVuZGxlUGF0aCgpCiB7Ci0gICAgYXV0byBwYXRoID0g
V2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1vZHVsZURpcmVj
dG9yeSgpLCBTdHJpbmcoTCJUZXN0V2ViS2l0QVBJSW5qZWN0ZWRCdW5kbGUuZGxsIikpOworICAg
IGF1dG8gcGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtb2R1bGVE
aXJlY3RvcnkoKSwgU3RyaW5nKEwiVGVzdFdlYktpdEFQSUluamVjdGVkQnVuZGxlLmRsbCIpKTsK
ICAgICByZXR1cm4gV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcocGF0aC51dGY4KCkuZGF0
YSgpKTsKIH0KIAogV0tVUkxSZWYgY3JlYXRlVVJMRm9yUmVzb3VyY2UoY29uc3QgY2hhciogcmVz
b3VyY2UsIGNvbnN0IGNoYXIqIGV4dGVuc2lvbikKIHsKICAgICBTdHJpbmcgZmlsZW5hbWUgPSBT
dHJpbmc6OmZvcm1hdCgiLi5cXC4uXFwuLlxcVG9vbHNcXFRlc3RXZWJLaXRBUElcXFRlc3RzXFxX
ZWJLaXRcXCVzLiVzIiwgcmVzb3VyY2UsIGV4dGVuc2lvbik7Ci0gICAgYXV0byB1cmwgPSBVUkw6
OmZpbGVVUkxXaXRoRmlsZVN5c3RlbVBhdGgoV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KG1vZHVsZURpcmVjdG9yeSgpLCBmaWxlbmFtZSkpOworICAgIGF1dG8g
dXJsID0gVVJMOjpmaWxlVVJMV2l0aEZpbGVTeXN0ZW1QYXRoKEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChtb2R1bGVEaXJlY3RvcnkoKSwgZmlsZW5hbWUpKTsKICAgICByZXR1
cm4gV0tVUkxDcmVhdGVXaXRoVVRGOENTdHJpbmcodXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359718</attachid>
            <date>2019-01-21 19:07:39 -0800</date>
            <delta_ts>2019-01-21 22:07:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193602-20190121190738.patch</filename>
            <type>text/plain</type>
            <size>436195</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwMjQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDU3NzE0ZTEzMWI1ZDM1MDM3MTkwYWQw
MDhlNjI4ZmFmNmQxODhlMWUuLmRlNWVlODBkNjJjOWU5NDViNDE2NjEyYmJiMTk2ZGQ0NzcxOGE5
YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTktMDEtMjEgIFJvc3MgS2lyc2xpbmcgIDxyb3Nz
LmtpcnNsaW5nQHNvbnkuY29tPgorCisgICAgICAgIE1vdmUgRmlsZVN5c3RlbSB0byBXVEYKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzYwMgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV1RGLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0OgorICAg
ICAgICAqIHd0Zi9GaWxlTWV0YWRhdGEuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0ZpbGVNZXRhZGF0YS5oLgorICAgICAgICAqIHd0Zi9GaWxlU3lzdGVtLmNwcDogUmVu
YW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwLgorICAgICAg
ICAqIHd0Zi9GaWxlU3lzdGVtLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9GaWxlU3lzdGVtLmguCisgICAgICAgICogd3RmL1BsYXRmb3JtR1RLLmNtYWtlOgorICAgICAg
ICAqIHd0Zi9QbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1QbGF5U3Rh
dGlvbi5jbWFrZToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1XUEUuY21ha2U6CisgICAgICAgICog
d3RmL1BsYXRmb3JtV2luLmNtYWtlOgorICAgICAgICAqIHd0Zi9jZi9GaWxlU3lzdGVtQ0YuY3Bw
OiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvRmlsZVN5c3RlbUNGLmNw
cC4KKyAgICAgICAgKiB3dGYvY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tOiBSZW5hbWVkIGZyb20g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tLgorICAgICAg
ICAqIHd0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwLgorICAgICAgICAqIHd0Zi9tYWMv
RmlsZVN5c3RlbU1hYy5tbTogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9GaWxlU3lzdGVtTWFjLm1tLgorICAgICAgICAqIHd0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVgu
Y3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3Rl
bVBPU0lYLmNwcC4KKyAgICAgICAgKiB3dGYvc3BpL21hYy9NZXRhZGF0YVNQSS5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvbWFjL01ldGFkYXRhU1BJLmguCisgICAg
ICAgICogd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2luLmNwcC4KKyAgICAgICAgKiB3dGYvd2luL1Bh
dGhXYWxrZXIuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bh
dGhXYWxrZXIuY3BwLgorICAgICAgICAqIHd0Zi93aW4vUGF0aFdhbGtlci5oOiBSZW5hbWVkIGZy
b20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BhdGhXYWxrZXIuaC4KKwogMjAxOS0wMS0y
MSAgQ2xhdWRpbyBTYWF2ZWRyYSAgPGNzYWF2ZWRyYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtH
VEtdIFNwZWN1bGF0aXZlIGJ1aWxkIGZpeCBmb3IgVWJ1bnR1IExUUwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDJl
NGViM2EyY2Y5NDI3YzU1Y2I0M2IwZTI3YjE3YzQwY2Y2OTYxOTAuLjUyMTE5MTBhNzYzZjU1NjM3
NzQ3MzMzZjE2MmNlMDZjMzIwODFhZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4MSBAQAorMjAx
OS0wMS0yMSAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CisKKyAgICAg
ICAgTW92ZSBGaWxlU3lzdGVtIHRvIFdURgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTkzNjAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHA6CisgICAg
ICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9u
LmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHA6Cisg
ICAgICAgICogTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1FbnRyeS5jcHA6CisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmNwcDoKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcDoKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCVHJhbnNhY3Rpb24uY3Bw
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIu
Y3BwOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcDoK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL09yaWdpbkxvY2suY3BwOgorICAgICAgICAq
IE1vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luTG9jay5oOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
ZGF0YWJhc2UvY29jb2EvRGF0YWJhc2VNYW5hZ2VyQ29jb2EubW06CisgICAgICAgICogUGxhdGZv
cm1NYWMuY21ha2U6CisgICAgICAgICogUGxhdGZvcm1QbGF5U3RhdGlvbi5jbWFrZToKKyAgICAg
ICAgKiBQbGF0Zm9ybVdpbi5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAg
KiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAqIGRvbS9EYXRhVHJhbnNmZXJJdGVtLmNwcDoKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL1dl
YkNvbnRlbnRSZWFkZXJDb2NvYS5tbToKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGUuY3BwOgorICAg
ICAgICAqIGZpbGVhcGkvRmlsZUNvY29hLm1tOgorICAgICAgICAqIGh0bWwvRmlsZUlucHV0VHlw
ZS5jcHA6CisgICAgICAgICogaHRtbC9GaWxlTGlzdENyZWF0b3IuY3BwOgorICAgICAgICAqIGxv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHA6CisgICAgICAgICogbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKiBwYWdlL1Bh
Z2UuY3BwOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwOgorICAgICAgICAqIHBh
Z2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlSGFuZGxl
Lmg6CisgICAgICAgICogcGxhdGZvcm0vRmlsZVN0cmVhbS5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vRmlsZVN0cmVhbS5oOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL1NvdXJjZXNHTGliLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2Nv
YS9GaWxlTW9uaXRvckNvY29hLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvRmlsZU1vbml0
b3JHTGliLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Np
b25BVkNvbnRlbnRLZXlTZXNzaW9uLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVlN0cmVhbVNlc3Npb24ubW06CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbk1lZGlhU291cmNl
QVZGT2JqQy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW06CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5tbToKKyAgICAgICAgKiBwbGF0Zm9y
bS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9t
ZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW06Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvRm9ybURhdGEuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2Yv
Rm9ybURhdGFTdHJlYW1DRk5ldC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2Nv
YS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ29va2llSmFyREIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
Q2FjaGVFbnRyeS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVN
YW5hZ2VyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybEZvcm1EYXRh
U3RyZWFtLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0Lmg6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1
cmwuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1
cmwuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL0Jsb2JEYXRhRmlsZVJlZmVy
ZW5jZU1hYy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5k
bGVTb3VwLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtT
ZXNzaW9uLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQT1NJWC5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGliSHlwaGVuLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51REIuY3BwOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJUaGVtZS5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lR3Rr
LmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwOgorICAgICAgICAq
IHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwOgorCiAyMDE5
LTAxLTIxICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIElt
cGxlbWVudCBtZXNzYWdlIGhhbmRsZXJzIGZvciBOZXR3b3JrUHJvY2Vzcy1iYXNlZCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCBlNzhmMTI1YjRlZTc2NDZmZjZk
NWU2NTVlNmEzMDliOGJhNmI3MWVhLi40ZWIzZGEwZDEzNDVmODcwMGMwZWI0NzQyNjk0OWQxMTAy
MzIxM2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxOS0wMS0yMSAg
Um9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CisKKyAgICAgICAgTW92ZSBG
aWxlU3lzdGVtIHRvIFdURgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTkzNjAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBQQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwYWwv
UGxhdGZvcm1NYWMuY21ha2U6CisKIDIwMTktMDEtMjEgIERhdmlkIEtpbHplciAgPGRka2lsemVy
QGFwcGxlLmNvbT4KIAogICAgICAgICBTb3J0IFBBTCBYY29kZSBwcm9qZWN0IGZpbGUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
aW5kZXggYTVhNDMyMTdlMjllMTAzYTcyYzJlYmZlYjA2ZThjMWU4NjZmZWYzNi4uZmQxNTYyZWI1
ZmVjNzU0ZDMxNDYyMDM2NjA0YWMzZjFiNThhMTVkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4MiBA
QAorMjAxOS0wMS0yMSAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CisK
KyAgICAgICAgTW92ZSBGaWxlU3lzdGVtIHRvIFdURgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzNjAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5jcHA6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VFbmdpbmUuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hl
U3RvcmFnZUVuZ2luZUNhY2hlcy5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVCbG9iU3RvcmFnZS5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlRGF0YS5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlRmlsZVN5c3RlbS5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlRmlsZVN5c3RlbS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZUlPQ2hhbm5lbENvY29hLm1tOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbFNvdXAuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0YXRpc3RpY3MuY3BwOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW06CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzTWFjLm1tOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcDoKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL3Vu
aXgvUGx1Z2luUHJvY2Vzc01haW5Vbml4LmNwcDoKKyAgICAgICAgKiBTaGFyZWQvUGVyc2lzdGVu
Y3lVdGlscy5jcHA6CisgICAgICAgICogU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvdW5peC9OZXRz
Y2FwZVBsdWdpbk1vZHVsZVVuaXguY3BwOgorICAgICAgICAqIFNoYXJlZC9QbHVnaW5zL3VuaXgv
UGx1Z2luU2VhcmNoUGF0aC5jcHA6CisgICAgICAgICogU2hhcmVkL1dlYk1lbW9yeVNhbXBsZXIu
aDoKKyAgICAgICAgKiBTaGFyZWQvZ2xpYi9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhHTGliLmNwcDoK
KyAgICAgICAgKiBTaGFyZWQvaW9zL0NoaWxkUHJvY2Vzc0lPUy5tbToKKyAgICAgICAgKiBTaGFy
ZWQvbWFjL0NoaWxkUHJvY2Vzc01hYy5tbToKKyAgICAgICAgKiBTaGFyZWQvbWFjL1NhbmRib3hF
eHRlbnNpb25NYWMubW06CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxp
c3RTdG9yZS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElXZWJzaXRlRGF0
YVN0b3JlQ29jb2EubW06CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVE
YXRhU3RvcmVHTGliLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFi
YXNlLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmF2aWNvbkRhdGFi
YXNlLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmlsZUNob29zZXJS
ZXF1ZXN0LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4
dC5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRhTWFu
YWdlci5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93aW4vQVBJV2Vic2l0ZURhdGFTdG9y
ZVdpbi5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNl
c3Npb24uY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW06CisgICAgICAgICogVUlQcm9jZXNz
L0RldmljZUlkSGFzaFNhbHRTdG9yYWdlLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvRG93bmxv
YWRzL0Rvd25sb2FkUHJveHkuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9nbGli
L0J1YmJsZXdyYXBMYXVuY2hlci5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL2ds
aWIvUHJvY2Vzc0xhdW5jaGVyR0xpYi5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMv
Z3RrL1BsdWdpbkluZm9DYWNoZS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvbWFj
L1BsdWdpblByb2Nlc3NQcm94eU1hYy5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy91
bml4L1BsdWdpbkluZm9TdG9yZVVuaXguY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5z
L3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1Nl
cnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJTdG9y
YWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViU3Rv
cmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3BwOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW06CisgICAgICAgICog
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQcm94eUdMaWIuY3BwOgorICAgICAgICAqIFVJUHJvY2Vz
cy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsv
V2ViUHJvY2Vzc1Bvb2xHdGsuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGaWxl
VXBsb2FkUGFuZWwubW06CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMu
bW06CisgICAgICAgICogVUlQcm9jZXNzL3dpbi9XZWJQcm9jZXNzUG9vbFdpbi5jcHA6CisgICAg
ICAgICogVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3Mvd3Bl
L1dlYlByb2Nlc3NQb29sV1BFLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9nbGliL1dlYktpdEV4dGVuc2lvbk1hbmFnZXIuY3BwOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvZ2xpYi9JbmplY3RlZEJ1bmRsZUdsaWIuY3BwOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmNwcDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJl
YW0uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b24uY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRl
Q29udmVyc2lvbi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJJbnNw
ZWN0b3JVSUd0ay5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9XZWJJbnNw
ZWN0b3JVSVdpbi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29j
b2EubW06CisKIDIwMTktMDEtMjEgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+
CiAKICAgICAgICAgSW1wbGVtZW50IG1lc3NhZ2UgaGFuZGxlcnMgZm9yIE5ldHdvcmtQcm9jZXNz
LWJhc2VkIFJlc291cmNlTG9hZFN0YXRpc3RpY3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKaW5kZXggOWE3
N2ZkMzQwNzQyZTRjMDAyMGEzNWQxZjJlMjVmMTZkMDRkZDUyNi4uNzczYmM1ZmI2MjBiNjU2YWE2
ZTViYTQzMzIyMGZhZDNhYzczZGQwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NCBAQAorMjAxOS0wMS0yMSAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+
CisKKyAgICAgICAgTW92ZSBGaWxlU3lzdGVtIHRvIFdURgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzNjAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHA6
CisgICAgICAgICogU3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIuY3BwOgorICAgICAgICAqIFN0
b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwOgorCiAyMDE5LTAxLTE1ICBEYXJpbiBBZGxlciAgPGRh
cmluQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgcmVmZXJlbmNlcyByYXRoZXIgdGhhbiBwb2lu
dGVycyBmb3IgcmVnaXN0ZXIvdW5yZWdpc3RlciBmdW5jdGlvbnMsIGFuZCBtb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggOTg4N2RlMmI1ZDBlNjhhY2QwYTdjMmQ3YzI4ODAyYjMy
NGZmMTNiMC4uMDRkNzc3ZjNhNWNkNTRjMzRkZTg4NjY4ZThlZjAzZTBjYmUyZDBkYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE5LTAxLTIxICBSb3Nz
IEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KKworICAgICAgICBNb3ZlIEZpbGVT
eXN0ZW0gdG8gV1RGCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTM2MDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIE1pc2MvV2ViTlNGaWxlTWFuYWdlckV4dHJhcy5tbToKKyAgICAgICAgKiBTdG9yYWdl
L1dlYkRhdGFiYXNlUHJvdmlkZXIubW06CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgor
CiAyMDE5LTAxLTE1ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBV
c2UgcmVmZXJlbmNlcyByYXRoZXIgdGhhbiBwb2ludGVycyBmb3IgcmVnaXN0ZXIvdW5yZWdpc3Rl
ciBmdW5jdGlvbnMsIGFuZCBtb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggMTVj
NzFkNzEwZjI5ZDhlMDExZmQ3ODIyOTRhMmRjM2U0NTBiNTU1Ni4uYTE0NTVmZmY2OGJiYzZiMTYx
OWEwZDcyYzEzMTRmYWM1MWQyMmE4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE5IEBACisyMDE5LTAxLTIxICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bz
b255LmNvbT4KKworICAgICAgICBNb3ZlIEZpbGVTeXN0ZW0gdG8gV1RGCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM2MDIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsdWdpbnMvUGx1Z2luRGF0YWJh
c2UuY3BwOgorICAgICAgICAqIFBsdWdpbnMvUGx1Z2luUGFja2FnZS5oOgorICAgICAgICAqIFBs
dWdpbnMvUGx1Z2luU3RyZWFtLmg6CisgICAgICAgICogV2ViQXBwbGljYXRpb25DYWNoZS5jcHA6
CisgICAgICAgICogV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBXZWJEb3dubG9h
ZEN1cmwuY3BwOgorICAgICAgICAqIFdlYlByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKiBXZWJW
aWV3LmNwcDoKKwogMjAxOS0wMS0xNSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgVXNlIHJlZmVyZW5jZXMgcmF0aGVyIHRoYW4gcG9pbnRlcnMgZm9yIHJlZ2lzdGVy
L3VucmVnaXN0ZXIgZnVuY3Rpb25zLCBhbmQgbW9yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9X
VEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggYTIyMzk0OTBkMTEyZGNhNDZhNWFhNGJjZGVkMzVmZGJjYWFl
YzllOS4uZDA4Yzc5ZjJiODNhOGUxM2ZlZGRiOWNjMTE5ZjMxYTFhOWY5NzY3YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04OSw2ICs4OSwxMSBAQAogCQk5
MzkzNEJENTE4QTFGMTY5MDBEMEQ2QTEgLyogU3RyaW5nVmlld0NGLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzOTM0QkQ0MThBMUYxNjkwMEQwRDZB
MSAvKiBTdHJpbmdWaWV3Q0YuY3BwICovOyB9OwogCQk5M0YxOTkzRTE5RDc5NThEMDBDMjM5MEIg
LyogU3RyaW5nVmlldy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5M0YxOTkzRDE5RDc5NThEMDBDMjM5MEIgLyogU3RyaW5nVmlldy5jcHAgKi87IH07
CiAJCTlCQzcwRjA1MTc2QzM3OUQwMDEwMURFQyAvKiBBdG9taWNTdHJpbmdUYWJsZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QkM3MEYwNDE3NkMz
NzlEMDAxMDFERUMgLyogQXRvbWljU3RyaW5nVGFibGUuY3BwICovOyB9OworCQlBMzMxRDk1QjIx
RjI0OTkyMDA5RjAyQUEgLyogRmlsZVN5c3RlbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMzMxRDk1QTIxRjI0OTkyMDA5RjAyQUEgLyogRmlsZVN5
c3RlbS5jcHAgKi87IH07CisJCUEzMzFEOTVEMjFGMjQ5RTQwMDlGMDJBQSAvKiBGaWxlU3lzdGVt
Q0YuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTMz
MUQ5NUMyMUYyNDlFNDAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1DRi5jcHAgKi87IH07CisJCUEzMzFE
OTVGMjFGMjQ5RjYwMDlGMDJBQSAvKiBGaWxlU3lzdGVtQ29jb2EubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMzMxRDk1RTIxRjI0OUY2MDA5RjAyQUEg
LyogRmlsZVN5c3RlbUNvY29hLm1tICovOyB9OworCQlBMzMxRDk2MTIxRjI0QTBBMDA5RjAyQUEg
LyogRmlsZVN5c3RlbU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEEzMzFEOTYwMjFGMjRBMEEwMDlGMDJBQSAvKiBGaWxlU3lzdGVtTWFjLm1tICov
OyB9OworCQlBMzMxRDk2NzIxRjI0QUJEMDA5RjAyQUEgLyogRmlsZVN5c3RlbVBPU0lYLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzMzFEOTY2MjFG
MjRBQkQwMDlGMDJBQSAvKiBGaWxlU3lzdGVtUE9TSVguY3BwICovOyB9OwogCQlBM0I3MjVFQzk4
NzQ0NkFEOTNGMUE0NDAgLyogUmFuZG9tRGV2aWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM4RjU5N0NBMkE1NzQxN0ZCQUI5MkZENiAvKiBSYW5k
b21EZXZpY2UuY3BwICovOyB9OwogCQlBM0U0REQ5MzFGM0E4MDM0MDBERUQwQjQgLyogVGV4dFN0
cmVhbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
M0U0REQ5MTFGM0E4MDM0MDBERUQwQjQgLyogVGV4dFN0cmVhbS5jcHAgKi87IH07CiAJCUE1QkEx
NUYzMTgyNDMzQTkwMEE4MkU2OSAvKiBTdHJpbmdDb2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QkExNUYyMTgyNDMzQTkwMEE4MkU2OSAvKiBT
dHJpbmdDb2NvYS5tbSAqLzsgfTsKQEAgLTQzMCw4ICs0MzUsMTYgQEAKIAkJOUM2N0M1NDI1ODkz
NDhFMjg1QjQ5Njk5IC8qIEluZGV4ZWRDb250YWluZXJJdGVyYXRvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBJbmRleGVkQ29udGFpbmVySXRlcmF0b3IuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTMwRDQxMkMxRjBERTBCQTAwQjcxOTU0IC8qIFNvZnRMaW5r
aW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvZnRMaW5raW5nLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzMEQ0MTJEMUYwREUxM0YwMEI3MTk1NCAvKiBT
b2Z0TGlua2luZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb2Z0TGlua2lu
Zy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMzMxRDk1ODIxRjI0OTc4MDA5RjAy
QUEgLyogRmlsZU1ldGFkYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZp
bGVNZXRhZGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMzMxRDk1OTIxRjI0
OTkyMDA5RjAyQUEgLyogRmlsZVN5c3RlbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBGaWxlU3lzdGVtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEzMzFEOTVB
MjFGMjQ5OTIwMDlGMDJBQSAvKiBGaWxlU3lzdGVtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEZpbGVTeXN0ZW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlBMzMxRDk1QzIxRjI0OUU0MDA5RjAyQUEgLyogRmlsZVN5c3RlbUNGLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZpbGVTeXN0ZW1DRi5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUEzMzFEOTVFMjFGMjQ5RjYwMDlGMDJBQSAvKiBGaWxlU3lz
dGVtQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBGaWxl
U3lzdGVtQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEzMzFEOTYwMjFG
MjRBMEEwMDlGMDJBQSAvKiBGaWxlU3lzdGVtTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gRmlsZVN5c3RlbU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTMzMUQ5NjYyMUYyNEFCRDAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1QT1NJWC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxlU3lzdGVtUE9TSVguY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMzZFMTZGNzIxNkZGODI4MDA4REQ4N0Ug
LyogV1RGU2VtYXBob3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdURlNl
bWFwaG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBM0FCNkU2QTFGM0UxQUQ2
MDA5QzE0QjEgLyogVmFsdWVUb1N0cmluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBWYWx1ZVRvU3RyaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEzRDI3
M0I5MjFGMkVFOTEwMDg2Njk3MSAvKiBNZXRhZGF0YVNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBNZXRhZGF0YVNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBM0U0REQ5MTFGM0E4MDM0MDBERUQwQjQgLyogVGV4dFN0cmVhbS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXh0U3RyZWFtLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTNFNEREOTIxRjNBODAzNDAwREVEMEI0IC8qIFRleHRTdHJlYW0uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dFN0cmVhbS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBNTA5OEFGRjFDMTY5RTA3MDAwODc3OTcgLyogU2FuZGJveFNQ
SS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTYW5kYm94U1BJLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MTcsNiArNzMwLDcgQEAKIAkJCWNoaWxkcmVuID0g
KAogCQkJCTVDMUYwNTkxMjE2NDM1NkIwMDM5MzAyQyAvKiBDRlVSTEV4dHJhcy5jcHAgKi8sCiAJ
CQkJNUMxRjA1OTIyMTY0MzU2QjAwMzkzMDJDIC8qIENGVVJMRXh0cmFzLmggKi8sCisJCQkJQTMz
MUQ5NUMyMUYyNDlFNDAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1DRi5jcHAgKi8sCiAJCQkJQzJCQ0ZD
NDExRjYxRDYxNjAwQzkyMjJDIC8qIExhbmd1YWdlQ0YuY3BwICovLAogCQkJCTJDREVEMEVFMTgx
MTVDMzgwMDREQkE3MCAvKiBSdW5Mb29wQ0YuY3BwICovLAogCQkJCTFBRkRFNjQ3MTk1MjAxQzMw
MEM0OEZGQSAvKiBUeXBlQ2FzdHNDRi5oICovLApAQCAtNzc0LDYgKzc4OCwyMiBAQAogCQkJbmFt
ZSA9IFNvdXJjZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCUEzMzFEOTYz
MjFGMjRBMkUwMDlGMDJBQSAvKiBwb3NpeCAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJ
Y2hpbGRyZW4gPSAoCisJCQkJQTMzMUQ5NjYyMUYyNEFCRDAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1Q
T1NJWC5jcHAgKi8sCisJCQkpOworCQkJcGF0aCA9IHBvc2l4OworCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKKwkJfTsKKwkJQTNEMjczQjgyMUYyRUU3QjAwODY2OTcxIC8qIG1hYyAqLyA9IHsK
KwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQTNEMjczQjkyMUYyRUU5
MTAwODY2OTcxIC8qIE1ldGFkYXRhU1BJLmggKi8sCisJCQkpOworCQkJcGF0aCA9IG1hYzsKKwkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCUE1QkExNUYxMTgyNDMzOUYwMEE4MkU2
OSAvKiBjb2NvYSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBA
IC04MDcsNiArODM3LDcgQEAKIAkJCQkxRkE0N0M4NzE1MjUwMkRBMDA1NjhEMUIgLyogaW9zICov
LAogCQkJCUE4QTQ3MkM0MTUxQTgyNUEwMDQxMjNGRiAvKiBtYWMgKi8sCiAJCQkJRTQzQTQ2ODUx
RTIyOEI1NzAwMjc2QjA1IC8qIHBlcnNpc3RlbmNlICovLAorCQkJCUEzMzFEOTYzMjFGMjRBMkUw
MDlGMDJBQSAvKiBwb3NpeCAqLywKIAkJCQlDRUY0ODIwQzE5REEzNDc2MDBDQzA0QjggLyogc3Bp
ICovLAogCQkJCUE4QTQ3MzFCMTUxQTgyNUIwMDQxMjNGRiAvKiB0ZXh0ICovLAogCQkJCUE4QTQ3
MzM5MTUxQTgyNUIwMDQxMjNGRiAvKiB0aHJlYWRzICovLApAQCAtODk0LDggKzkyNSwxMSBAQAog
CQkJCUE4QTQ3MkEyMTUxQTgyNUEwMDQxMjNGRiAvKiBGYXN0TWFsbG9jLmggKi8sCiAJCQkJMEY3
OUM3QzMxRTczNTExODAwRUIzNEQxIC8qIEZhc3RUTFMuaCAqLywKIAkJCQlCMzhGRDdCQzE2ODk1
M0U4MDA2NUM5NjkgLyogRmVhdHVyZURlZmluZXMuaCAqLywKKwkJCQlBMzMxRDk1ODIxRjI0OTc4
MDA5RjAyQUEgLyogRmlsZU1ldGFkYXRhLmggKi8sCiAJCQkJMEY5RDMzNUIxNjVEQkE3MzAwNUFE
Mzg3IC8qIEZpbGVQcmludFN0cmVhbS5jcHAgKi8sCiAJCQkJMEY5RDMzNUMxNjVEQkE3MzAwNUFE
Mzg3IC8qIEZpbGVQcmludFN0cmVhbS5oICovLAorCQkJCUEzMzFEOTVBMjFGMjQ5OTIwMDlGMDJB
QSAvKiBGaWxlU3lzdGVtLmNwcCAqLywKKwkJCQlBMzMxRDk1OTIxRjI0OTkyMDA5RjAyQUEgLyog
RmlsZVN5c3RlbS5oICovLAogCQkJCTBGMkI2NkE1MTdCNkI0RjcwMEE3QUUzRiAvKiBGbGlwQnl0
ZXMuaCAqLywKIAkJCQlGRTg2QTg3NDFFNTk0NDAyMDAxMTFCQkYgLyogRm9yYmlkSGVhcEFsbG9j
YXRpb24uaCAqLywKIAkJCQlBOEE0NzJBNjE1MUE4MjVBMDA0MTIzRkYgLyogRm9yd2FyZC5oICov
LApAQCAtMTE5MCw2ICsxMjI0LDcgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTFBNDI4QjhCMUM4
Rjg5REQwMDUxRTlFQiAvKiBBcHBLaXRDb21wYXRpYmlsaXR5RGVjbGFyYXRpb25zLmggKi8sCiAJ
CQkJMUFDQUREODIxODg0NDgwMTAwRDhCNzFEIC8qIERlcHJlY2F0ZWRTeW1ib2xzVXNlZEJ5U2Fm
YXJpLm1tICovLAorCQkJCUEzMzFEOTYwMjFGMjRBMEEwMDlGMDJBQSAvKiBGaWxlU3lzdGVtTWFj
Lm1tICovLAogCQkJCTUzNTM0RjI5MUVDMEUxMEUwMDE0MUIyRiAvKiBNYWNoRXhjZXB0aW9ucy5k
ZWZzICovLAogCQkJKTsKIAkJCXBhdGggPSBtYWM7CkBAIC0xMzE3LDYgKzEzNTIsNyBAQAogCQkJ
CURDRUUyMUY5MUNFQTc1MkYwMDBDMjM5NiAvKiBjZiAqLywKIAkJCQlDRTQ2NTE2QzE5REIxRkI0
MDAzRUNBMDUgLyogY29jb2EgKi8sCiAJCQkJQ0U3M0UwMjMxOURDQjdBQjAwNTgwRDVDIC8qIGRh
cndpbiAqLywKKwkJCQlBM0QyNzNCODIxRjJFRTdCMDA4NjY5NzEgLyogbWFjICovLAogCQkJKTsK
IAkJCXBhdGggPSBzcGk7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMTM1MSw2ICsx
Mzg3LDcgQEAKIAkJCQlFMzhDNDEyNDFFQjRFMDRDMDA0Mjk1N0QgLyogQ1BVVGltZUNvY29hLmNw
cCAqLywKIAkJCQkxNDNEREU5NzIwQzhCRTk5MDA3Rjc2RkEgLyogRW50aXRsZW1lbnRzLmggKi8s
CiAJCQkJMTQzRERFOTUyMEM4QkMzNzAwN0Y3NkZBIC8qIEVudGl0bGVtZW50cy5tbSAqLywKKwkJ
CQlBMzMxRDk1RTIxRjI0OUY2MDA5RjAyQUEgLyogRmlsZVN5c3RlbUNvY29hLm1tICovLAogCQkJ
CTdBNkVCQTMzMjA3NDZDMzQwMDRGOUM0NCAvKiBNYWNoU2VuZFJpZ2h0LmNwcCAqLywKIAkJCQlB
OEE0NzJDNTE1MUE4MjVBMDA0MTIzRkYgLyogTWFpblRocmVhZENvY29hLm1tICovLAogCQkJCUFE
RjJDRTY1MUUzOUYxMDYwMDY4ODlEQiAvKiBNZW1vcnlGb290cHJpbnRDb2NvYS5jcHAgKi8sCkBA
IC0xNDc2LDYgKzE1MTMsMTEgQEAKIAkJCQkwRjdDNUZCNjFEODg1Q0YyMDA0NEY1RTIgLyogRmFz
dEJpdFZlY3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNDMzE1MUE4MjVCMDA0MTIz
RkYgLyogRmFzdE1hbGxvYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjlEMzM2MDE2NURCQTcz
MDA1QUQzODcgLyogRmlsZVByaW50U3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUEzMzFE
OTVCMjFGMjQ5OTIwMDlGMDJBQSAvKiBGaWxlU3lzdGVtLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUEzMzFEOTVEMjFGMjQ5RTQwMDlGMDJBQSAvKiBGaWxlU3lzdGVtQ0YuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJQTMzMUQ5NUYyMUYyNDlGNjAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1Db2NvYS5tbSBp
biBTb3VyY2VzICovLAorCQkJCUEzMzFEOTYxMjFGMjRBMEEwMDlGMDJBQSAvKiBGaWxlU3lzdGVt
TWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQTMzMUQ5NjcyMUYyNEFCRDAwOUYwMkFBIC8qIEZp
bGVTeXN0ZW1QT1NJWC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNCNTE1MUE4MjVCMDA0
MTIzRkYgLyogZml4ZWQtZHRvYS5jYyBpbiBTb3VyY2VzICovLAogCQkJCTFBMUQ4QjlFMTczMTg3
OTgwMDE0MURBNCAvKiBGdW5jdGlvbkRpc3BhdGNoZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEY1QkYxNzYxRjIzRDQ5QTAwMjlEOTFEIC8qIEdpZ2FjYWdlLmNwcCBpbiBTb3VyY2VzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV1RGL3d0
Zi9DTWFrZUxpc3RzLnR4dAppbmRleCBjZWUxY2NlMWU1NzE4NGQxM2JkMmNkNTE5ZWY2YTIwZGZm
YjFhOTZhLi43ZDg1ODMzMjBmNDljNjEwNDAxYzdiOGFiNDQ2Mzk2ZDg4YzE1MGUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9D
TWFrZUxpc3RzLnR4dApAQCAtNjEsNyArNjEsOSBAQCBzZXQoV1RGX1BVQkxJQ19IRUFERVJTCiAg
ICAgRmFzdE1hbGxvYy5oCiAgICAgRmFzdFRMUy5oCiAgICAgRmVhdHVyZURlZmluZXMuaAorICAg
IEZpbGVNZXRhZGF0YS5oCiAgICAgRmlsZVByaW50U3RyZWFtLmgKKyAgICBGaWxlU3lzdGVtLmgK
ICAgICBGbGlwQnl0ZXMuaAogICAgIEZvcmJpZEhlYXBBbGxvY2F0aW9uLmgKICAgICBGb3J3YXJk
LmgKQEAgLTM1Myw2ICszNTUsNyBAQCBzZXQoV1RGX1NPVVJDRVMKICAgICBGYXN0Qml0VmVjdG9y
LmNwcAogICAgIEZhc3RNYWxsb2MuY3BwCiAgICAgRmlsZVByaW50U3RyZWFtLmNwcAorICAgIEZp
bGVTeXN0ZW0uY3BwCiAgICAgRnVuY3Rpb25EaXNwYXRjaGVyLmNwcAogICAgIEdpZ2FjYWdlLmNw
cAogICAgIEdsb2JhbFZlcnNpb24uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxl
TWV0YWRhdGEuaCBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVNZXRhZGF0YS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBi
Yjg4ZmM4NGY5NGFmNGNjZjFjNTgwZTBkNTZhMmI2NTgxMTBmOTgKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9GaWxlTWV0YWRhdGEuaApAQCAtMCwwICsxLDUyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3N0
cnVjdCBGaWxlTWV0YWRhdGEgeworICAgIC8vIFRoZSBsYXN0IG1vZGlmaWNhdGlvbiB0aW1lIG9m
IHRoZSBmaWxlLCBpbiBzZWNvbmRzLgorICAgIFdhbGxUaW1lIG1vZGlmaWNhdGlvblRpbWU7CisK
KyAgICAvLyBUaGUgbGVuZ3RoIG9mIHRoZSBmaWxlIGluIGJ5dGVzLgorICAgIGxvbmcgbG9uZyBs
ZW5ndGg7CisKKyAgICBib29sIGlzSGlkZGVuOworCisgICAgZW51bSBjbGFzcyBUeXBlIHsgRmls
ZSwgRGlyZWN0b3J5LCBTeW1ib2xpY0xpbmsgfTsKKyAgICBUeXBlIHR5cGU7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpGaWxlTWV0YWRhdGE7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0u
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjE1ZjdiYjAzYmEwMTc5OTdlM2M5OTVmMzg4NTI5NmE2ZjRhMjE3MDMK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcApAQCAtMCww
ICsxLDM2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
KyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHd0Zi9G
aWxlU3lzdGVtLmg+CisKKyNpbmNsdWRlIDx3dGYvRmlsZU1ldGFkYXRhLmg+CisjaW5jbHVkZSA8
d3RmL0hleE51bWJlci5oPgorI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisKKyNp
ZiAhT1MoV0lORE9XUykKKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPHN5cy9tbWFuLmg+
CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgorCitu
YW1lc3BhY2UgV1RGIHsKKworbmFtZXNwYWNlIEZpbGVTeXN0ZW0geworCisvLyBUaGUgZm9sbG93
aW5nIGxvd2VyLUFTQ0lJIGNoYXJhY3RlcnMgbmVlZCBlc2NhcGluZyB0byBiZSB1c2VkIGluIGEg
ZmlsZW5hbWUKKy8vIGFjcm9zcyBhbGwgc3lzdGVtcywgaW5jbHVkaW5nIFdpbmRvd3M6CisvLyAg
ICAgLSBVbnByaW50YWJsZSBBU0NJSSAoMDAtMUYpCisvLyAgICAgLSBTcGFjZSAgICAgICAgICAg
ICAoMjApCisvLyAgICAgLSBEb3VibGUgcXVvdGUgICAgICAoMjIpCisvLyAgICAgLSBQZXJjZW50
ICAgICAgICAgICAoMjUpIChlc2NhcGVkIGJlY2F1c2UgaXQgaXMgb3VyIGVzY2FwZSBjaGFyYWN0
ZXIpCisvLyAgICAgLSBBc3RlcmlzayAgICAgICAgICAoMkEpCisvLyAgICAgLSBTbGFzaCAgICAg
ICAgICAgICAoMkYpCisvLyAgICAgLSBDb2xvbiAgICAgICAgICAgICAoM0EpCisvLyAgICAgLSBM
ZXNzLXRoYW4gICAgICAgICAoM0MpCisvLyAgICAgLSBHcmVhdGVyLXRoYW4gICAgICAoM0UpCisv
LyAgICAgLSBRdWVzdGlvbiBNYXJrICAgICAoM0YpCisvLyAgICAgLSBCYWNrc2xhc2ggICAgICAg
ICAoNUMpCisvLyAgICAgLSBQaXBlICAgICAgICAgICAgICAoN0MpCisvLyAgICAgLSBEZWxldGUg
ICAgICAgICAgICAoN0YpCisKK3N0YXRpYyBjb25zdCBib29sIG5lZWRzRXNjYXBpbmdbMTI4XSA9
IHsKKyAgICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAg
dHJ1ZSwgIC8qIDAwLTA3ICovCisgICAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUs
ICB0cnVlLCAgdHJ1ZSwgIHRydWUsICAvKiAwOC0wRiAqLworCisgICAgdHJ1ZSwgIHRydWUsICB0
cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICAvKiAxMC0xNyAqLworICAg
IHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAg
LyogMTgtMUYgKi8KKworICAgIHRydWUsICBmYWxzZSwgdHJ1ZSwgIGZhbHNlLCBmYWxzZSwgdHJ1
ZSwgIGZhbHNlLCBmYWxzZSwgLyogMjAtMjcgKi8KKyAgICBmYWxzZSwgZmFsc2UsIHRydWUsICBm
YWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgIC8qIDI4LTJGICovCisKKyAgICBmYWxz
ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIC8qIDMw
LTM3ICovCisgICAgZmFsc2UsIGZhbHNlLCB0cnVlLCAgZmFsc2UsIHRydWUsICBmYWxzZSwgdHJ1
ZSwgIHRydWUsICAvKiAzOC0zRiAqLworCisgICAgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2Us
IGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAvKiA0MC00NyAqLworICAgIGZhbHNlLCBmYWxz
ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgLyogNDgtNEYgKi8K
KworICAgIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBm
YWxzZSwgLyogNTAtNTcgKi8KKyAgICBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwg
IGZhbHNlLCBmYWxzZSwgZmFsc2UsIC8qIDU4LTVGICovCisKKyAgICBmYWxzZSwgZmFsc2UsIGZh
bHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIC8qIDYwLTY3ICovCisgICAg
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAv
KiA2OC02RiAqLworCisgICAgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxz
ZSwgZmFsc2UsIGZhbHNlLCAvKiA3MC03NyAqLworICAgIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZh
bHNlLCB0cnVlLCAgZmFsc2UsIGZhbHNlLCB0cnVlLCAgLyogNzgtN0YgKi8KK307CisKK3N0YXRp
YyBpbmxpbmUgYm9vbCBzaG91bGRFc2NhcGVVQ2hhcihVQ2hhciBjaGFyYWN0ZXIsIFVDaGFyIHBy
ZXZpb3VzQ2hhcmFjdGVyLCBVQ2hhciBuZXh0Q2hhcmFjdGVyKQoreworICAgIGlmIChjaGFyYWN0
ZXIgPD0gMTI3KQorICAgICAgICByZXR1cm4gbmVlZHNFc2NhcGluZ1tjaGFyYWN0ZXJdOworCisg
ICAgaWYgKFUxNl9JU19MRUFEKGNoYXJhY3RlcikgJiYgIVUxNl9JU19UUkFJTChuZXh0Q2hhcmFj
dGVyKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAoVTE2X0lTX1RSQUlMKGNoYXJh
Y3RlcikgJiYgIVUxNl9JU19MRUFEKHByZXZpb3VzQ2hhcmFjdGVyKSkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1N0cmluZyBlbmNvZGVGb3JGaWxlTmFt
ZShjb25zdCBTdHJpbmcmIGlucHV0U3RyaW5nKQoreworICAgIHVuc2lnbmVkIGxlbmd0aCA9IGlu
cHV0U3RyaW5nLmxlbmd0aCgpOworICAgIGlmICghbGVuZ3RoKQorICAgICAgICByZXR1cm4gaW5w
dXRTdHJpbmc7CisKKyAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKKyAgICByZXN1bHQucmVzZXJ2
ZUNhcGFjaXR5KGxlbmd0aCk7CisKKyAgICBVQ2hhciBwcmV2aW91c0NoYXJhY3RlcjsKKyAgICBV
Q2hhciBjaGFyYWN0ZXIgPSAwOworICAgIFVDaGFyIG5leHRDaGFyYWN0ZXIgPSBpbnB1dFN0cmlu
Z1swXTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAg
ICAgcHJldmlvdXNDaGFyYWN0ZXIgPSBjaGFyYWN0ZXI7CisgICAgICAgIGNoYXJhY3RlciA9IG5l
eHRDaGFyYWN0ZXI7CisgICAgICAgIG5leHRDaGFyYWN0ZXIgPSBpICsgMSA8IGxlbmd0aCA/IGlu
cHV0U3RyaW5nW2kgKyAxXSA6IDA7CisKKyAgICAgICAgaWYgKHNob3VsZEVzY2FwZVVDaGFyKGNo
YXJhY3RlciwgcHJldmlvdXNDaGFyYWN0ZXIsIG5leHRDaGFyYWN0ZXIpKSB7CisgICAgICAgICAg
ICBpZiAoY2hhcmFjdGVyIDw9IDI1NSkgeworICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
JyUnKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRCeXRlQXNIZXgoY2hhcmFjdGVyLCByZXN1bHQp
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0
ZXJhbCgiJSsiKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRCeXRlQXNIZXgoY2hhcmFjdGVyID4+
IDgsIHJlc3VsdCk7CisgICAgICAgICAgICAgICAgYXBwZW5kQnl0ZUFzSGV4KGNoYXJhY3Rlciwg
cmVzdWx0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKGNoYXJhY3Rlcik7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdC50b1N0cmlu
ZygpOworfQorCitTdHJpbmcgZGVjb2RlRnJvbUZpbGVuYW1lKGNvbnN0IFN0cmluZyYgaW5wdXRT
dHJpbmcpCit7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gaW5wdXRTdHJpbmcubGVuZ3RoKCk7Cisg
ICAgaWYgKCFsZW5ndGgpCisgICAgICAgIHJldHVybiBpbnB1dFN0cmluZzsKKworICAgIFN0cmlu
Z0J1aWxkZXIgcmVzdWx0OworICAgIHJlc3VsdC5yZXNlcnZlQ2FwYWNpdHkobGVuZ3RoKTsKKwor
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICBpZiAo
aW5wdXRTdHJpbmdbaV0gIT0gJyUnKSB7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGlucHV0
U3RyaW5nW2ldKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAg
Ly8gSWYgdGhlIGlucHV0IHN0cmluZyBpcyBhIHZhbGlkIGVuY29kZWQgZmlsZW5hbWUsIGl0IG11
c3QgYmUgYXQgbGVhc3QgMiBjaGFyYWN0ZXJzIGxvbmdlcgorICAgICAgICAvLyB0aGFuIHRoZSBj
dXJyZW50IGluZGV4IHRvIGFjY291bnQgZm9yIHRoaXMgcGVyY2VudCBlbmNvZGVkIHZhbHVlLgor
ICAgICAgICBpZiAoaSArIDIgPj0gbGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuIHsgfTsKKwor
ICAgICAgICBpZiAoaW5wdXRTdHJpbmdbaSsxXSAhPSAnKycpIHsKKyAgICAgICAgICAgIGlmICgh
aXNBU0NJSUhleERpZ2l0KGlucHV0U3RyaW5nW2kgKyAxXSkpCisgICAgICAgICAgICAgICAgcmV0
dXJuIHsgfTsKKyAgICAgICAgICAgIGlmICghaXNBU0NJSUhleERpZ2l0KGlucHV0U3RyaW5nW2kg
KyAyXSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQodG9BU0NJSUhleFZhbHVlKGlucHV0U3RyaW5nW2kgKyAxXSwgaW5wdXRTdHJpbmdbaSAr
IDJdKSk7CisgICAgICAgICAgICBpICs9IDI7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgfQorCisgICAgICAgIC8vIElmIHRoZSBpbnB1dCBzdHJpbmcgaXMgYSB2YWxpZCBlbmNvZGVk
IGZpbGVuYW1lLCBpdCBtdXN0IGJlIGF0IGxlYXN0IDUgY2hhcmFjdGVycyBsb25nZXIKKyAgICAg
ICAgLy8gdGhhbiB0aGUgY3VycmVudCBpbmRleCB0byBhY2NvdW50IGZvciB0aGlzIHBlcmNlbnQg
ZW5jb2RlZCB2YWx1ZS4KKyAgICAgICAgaWYgKGkgKyA1ID49IGxlbmd0aCkKKyAgICAgICAgICAg
IHJldHVybiB7IH07CisKKyAgICAgICAgaWYgKCFpc0FTQ0lJSGV4RGlnaXQoaW5wdXRTdHJpbmdb
aSArIDJdKSkKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIGlmICghaXNBU0NJSUhl
eERpZ2l0KGlucHV0U3RyaW5nW2kgKyAzXSkpCisgICAgICAgICAgICByZXR1cm4geyB9OworICAg
ICAgICBpZiAoIWlzQVNDSUlIZXhEaWdpdChpbnB1dFN0cmluZ1tpICsgNF0pKQorICAgICAgICAg
ICAgcmV0dXJuIHsgfTsKKyAgICAgICAgaWYgKCFpc0FTQ0lJSGV4RGlnaXQoaW5wdXRTdHJpbmdb
aSArIDVdKSkKKyAgICAgICAgICAgIHJldHVybiB7IH07CisKKyAgICAgICAgcmVzdWx0LmFwcGVu
ZCh0b0FTQ0lJSGV4VmFsdWUoaW5wdXRTdHJpbmdbaSArIDJdLCBpbnB1dFN0cmluZ1tpICsgM10p
IDw8IDggfCB0b0FTQ0lJSGV4VmFsdWUoaW5wdXRTdHJpbmdbaSArIDRdLCBpbnB1dFN0cmluZ1tp
ICsgNV0pKTsKKyAgICAgICAgaSArPSA1OworICAgIH0KKworICAgIHJldHVybiByZXN1bHQudG9T
dHJpbmcoKTsKK30KKworU3RyaW5nIGxhc3RDb21wb25lbnRPZlBhdGhJZ25vcmluZ1RyYWlsaW5n
U2xhc2goY29uc3QgU3RyaW5nJiBwYXRoKQoreworI2lmIE9TKFdJTkRPV1MpCisgICAgY2hhciBw
YXRoU2VwYXJhdG9yID0gJ1xcJzsKKyNlbHNlCisgICAgY2hhciBwYXRoU2VwYXJhdG9yID0gJy8n
OworI2VuZGlmCisKKyAgICBhdXRvIHBvc2l0aW9uID0gcGF0aC5yZXZlcnNlRmluZChwYXRoU2Vw
YXJhdG9yKTsKKyAgICBpZiAocG9zaXRpb24gPT0gbm90Rm91bmQpCisgICAgICAgIHJldHVybiBw
YXRoOworCisgICAgc2l6ZV90IGVuZE9mU3Vic3RyaW5nID0gcGF0aC5sZW5ndGgoKSAtIDE7Cisg
ICAgaWYgKHBvc2l0aW9uID09IGVuZE9mU3Vic3RyaW5nKSB7CisgICAgICAgIC0tZW5kT2ZTdWJz
dHJpbmc7CisgICAgICAgIHBvc2l0aW9uID0gcGF0aC5yZXZlcnNlRmluZChwYXRoU2VwYXJhdG9y
LCBlbmRPZlN1YnN0cmluZyk7CisgICAgfQorCisgICAgcmV0dXJuIHBhdGguc3Vic3RyaW5nKHBv
c2l0aW9uICsgMSwgZW5kT2ZTdWJzdHJpbmcgLSBwb3NpdGlvbik7Cit9CisKK2Jvb2wgYXBwZW5k
RmlsZUNvbnRlbnRzVG9GaWxlSGFuZGxlKGNvbnN0IFN0cmluZyYgcGF0aCwgUGxhdGZvcm1GaWxl
SGFuZGxlJiB0YXJnZXQpCit7CisgICAgYXV0byBzb3VyY2UgPSBvcGVuRmlsZShwYXRoLCBGaWxl
T3Blbk1vZGU6OlJlYWQpOworCisgICAgaWYgKCFpc0hhbmRsZVZhbGlkKHNvdXJjZSkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIHN0YXRpYyBpbnQgYnVmZmVyU2l6ZSA9IDEgPDwgMTk7
CisgICAgVmVjdG9yPGNoYXI+IGJ1ZmZlcihidWZmZXJTaXplKTsKKworICAgIGF1dG8gZmlsZUNs
b3NlciA9IFdURjo6bWFrZVNjb3BlRXhpdChbc291cmNlXSgpIHsKKyAgICAgICAgUGxhdGZvcm1G
aWxlSGFuZGxlIGhhbmRsZSA9IHNvdXJjZTsKKyAgICAgICAgY2xvc2VGaWxlKGhhbmRsZSk7Cisg
ICAgfSk7CisKKyAgICBkbyB7CisgICAgICAgIGludCByZWFkQnl0ZXMgPSByZWFkRnJvbUZpbGUo
c291cmNlLCBidWZmZXIuZGF0YSgpLCBidWZmZXJTaXplKTsKKworICAgICAgICBpZiAocmVhZEJ5
dGVzIDwgMCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBpZiAod3JpdGVU
b0ZpbGUodGFyZ2V0LCBidWZmZXIuZGF0YSgpLCByZWFkQnl0ZXMpICE9IHJlYWRCeXRlcykKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBpZiAocmVhZEJ5dGVzIDwgYnVmZmVy
U2l6ZSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0gd2hpbGUgKHRydWUpOworCisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKKworYm9vbCBmaWxlc0hhdmVTYW1lVm9sdW1l
KGNvbnN0IFN0cmluZyYgZmlsZUEsIGNvbnN0IFN0cmluZyYgZmlsZUIpCit7CisgICAgYXV0byBm
c1JlcEZpbGVBID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVBKTsKKyAgICBhdXRvIGZz
UmVwRmlsZUIgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZUIpOworCisgICAgaWYgKGZz
UmVwRmlsZUEuaXNOdWxsKCkgfHwgZnNSZXBGaWxlQi5pc051bGwoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKKworICAgIGF1dG8gZmlsZUFEZXYg
PSBnZXRGaWxlRGV2aWNlSWQoZnNSZXBGaWxlQSk7CisgICAgYXV0byBmaWxlQkRldiA9IGdldEZp
bGVEZXZpY2VJZChmc1JlcEZpbGVCKTsKKworICAgIGlmIChmaWxlQURldiAmJiBmaWxlQkRldikK
KyAgICAgICAgcmVzdWx0ID0gKGZpbGVBRGV2ID09IGZpbGVCRGV2KTsKKworICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKKyNpZiAhUExBVEZPUk0oTUFDKQorCit2b2lkIHNldE1ldGFkYXRhVVJMKGNv
bnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpCit7Cit9CisKK2Jvb2wg
Y2FuRXhjbHVkZUZyb21CYWNrdXAoKQoreworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBl
eGNsdWRlRnJvbUJhY2t1cChjb25zdCBTdHJpbmcmKQoreworICAgIHJldHVybiBmYWxzZTsKK30K
KworI2VuZGlmCisKK01hcHBlZEZpbGVEYXRhOjp+TWFwcGVkRmlsZURhdGEoKQoreworI2lmICFP
UyhXSU5ET1dTKQorICAgIGlmICghbV9maWxlRGF0YSkKKyAgICAgICAgcmV0dXJuOworICAgIG11
bm1hcChtX2ZpbGVEYXRhLCBtX2ZpbGVTaXplKTsKKyNlbmRpZgorfQorCitNYXBwZWRGaWxlRGF0
YTo6TWFwcGVkRmlsZURhdGEoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgYm9vbCYgc3VjY2VzcykK
K3sKKyNpZiBPUyhXSU5ET1dTKQorICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgbWFwcGluZworICAg
IHN1Y2Nlc3MgPSBmYWxzZTsKKyNlbHNlCisgICAgQ1N0cmluZyBmc1JlcCA9IGZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihmaWxlUGF0aCk7CisgICAgaW50IGZkID0gIWZzUmVwLmlzTnVsbCgpID8g
b3Blbihmc1JlcC5kYXRhKCksIE9fUkRPTkxZKSA6IC0xOworICAgIGlmIChmZCA8IDApIHsKKyAg
ICAgICAgc3VjY2VzcyA9IGZhbHNlOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc3Ry
dWN0IHN0YXQgZmlsZVN0YXQ7CisgICAgaWYgKGZzdGF0KGZkLCAmZmlsZVN0YXQpKSB7CisgICAg
ICAgIGNsb3NlKGZkKTsKKyAgICAgICAgc3VjY2VzcyA9IGZhbHNlOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgdW5zaWduZWQgc2l6ZTsKKyAgICBpZiAoIVdURjo6Y29udmVydFNhZmVs
eShmaWxlU3RhdC5zdF9zaXplLCBzaXplKSkgeworICAgICAgICBjbG9zZShmZCk7CisgICAgICAg
IHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghc2l6
ZSkgeworICAgICAgICBjbG9zZShmZCk7CisgICAgICAgIHN1Y2Nlc3MgPSB0cnVlOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgdm9pZCogZGF0YSA9IG1tYXAoMCwgc2l6ZSwgUFJPVF9S
RUFELCBNQVBfRklMRSB8IE1BUF9TSEFSRUQsIGZkLCAwKTsKKyAgICBjbG9zZShmZCk7CisKKyAg
ICBpZiAoZGF0YSA9PSBNQVBfRkFJTEVEKSB7CisgICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHN1Y2Nlc3MgPSB0cnVlOworICAgIG1fZmlsZURh
dGEgPSBkYXRhOworICAgIG1fZmlsZVNpemUgPSBzaXplOworI2VuZGlmCit9CisKK1BsYXRmb3Jt
RmlsZUhhbmRsZSBvcGVuQW5kTG9ja0ZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1v
ZGUgb3Blbk1vZGUsIE9wdGlvblNldDxGaWxlTG9ja01vZGU+IGxvY2tNb2RlKQoreworICAgIGF1
dG8gaGFuZGxlID0gb3BlbkZpbGUocGF0aCwgb3Blbk1vZGUpOworICAgIGlmIChoYW5kbGUgPT0g
aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKKyAgICAgICAgcmV0dXJuIGludmFsaWRQbGF0Zm9y
bUZpbGVIYW5kbGU7CisKKyNpZiBVU0UoRklMRV9MT0NLKQorICAgIGJvb2wgbG9ja2VkID0gbG9j
a0ZpbGUoaGFuZGxlLCBsb2NrTW9kZSk7CisgICAgQVNTRVJUX1VOVVNFRChsb2NrZWQsIGxvY2tl
ZCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShsb2NrTW9kZSk7CisjZW5kaWYKKworICAgIHJl
dHVybiBoYW5kbGU7Cit9CisKK3ZvaWQgdW5sb2NrQW5kQ2xvc2VGaWxlKFBsYXRmb3JtRmlsZUhh
bmRsZSBoYW5kbGUpCit7CisjaWYgVVNFKEZJTEVfTE9DSykKKyAgICBib29sIHVubG9ja2VkID0g
dW5sb2NrRmlsZShoYW5kbGUpOworICAgIEFTU0VSVF9VTlVTRUQodW5sb2NrZWQsIHVubG9ja2Vk
KTsKKyNlbmRpZgorICAgIGNsb3NlRmlsZShoYW5kbGUpOworfQorCitib29sIGZpbGVJc0RpcmVj
dG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIFNob3VsZEZvbGxvd1N5bWJvbGljTGlua3Mgc2hvdWxk
Rm9sbG93U3ltYm9saWNMaW5rcykKK3sKKyAgICBhdXRvIG1ldGFkYXRhID0gc2hvdWxkRm9sbG93
U3ltYm9saWNMaW5rcyA9PSBTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpZZXMgPyBmaWxlTWV0
YWRhdGFGb2xsb3dpbmdTeW1saW5rcyhwYXRoKSA6IGZpbGVNZXRhZGF0YShwYXRoKTsKKyAgICBp
ZiAoIW1ldGFkYXRhKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIG1ldGFkYXRh
LnZhbHVlKCkudHlwZSA9PSBGaWxlTWV0YWRhdGE6OlR5cGU6OkRpcmVjdG9yeTsKK30KKworfSAv
LyBuYW1lc3BhY2UgRmlsZVN5c3RlbQorfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZmE0YjFmODgzYjk3NTYwMTg4ZDJmZGYxMWIyN2U0MDFjMjE2NjY2NQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaApAQCAtMCwwICsxLDIy
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBDb2xsYWJvcmEsIEx0ZC4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBv
ZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICog
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHRpbWUuaD4KKyNpbmNsdWRlIDx1dGlsaXR5Pgor
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgorI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworI2lmIFVTRShDRikKKyNpbmNsdWRlIDx3dGYvUmV0
YWluUHRyLmg+CisjZW5kaWYKKworI2lmIFVTRShDRikKK3R5cGVkZWYgY29uc3Qgc3RydWN0IF9f
Q0ZEYXRhKiBDRkRhdGFSZWY7CisjZW5kaWYKKworT0JKQ19DTEFTUyBOU1N0cmluZzsKKworI2lm
IFBMQVRGT1JNKFdJTikKK3R5cGVkZWYgdm9pZCAqSEFORExFOworI2VuZGlmCisKKyNpZiBVU0Uo
R0xJQikKK3R5cGVkZWYgc3RydWN0IF9HRmlsZUlPU3RyZWFtIEdGaWxlSU9TdHJlYW07CisjZW5k
aWYKKworbmFtZXNwYWNlIFdURiB7CisKK3N0cnVjdCBGaWxlTWV0YWRhdGE7CisKK25hbWVzcGFj
ZSBGaWxlU3lzdGVtIHsKKworLy8gUGxhdGZvcm1GaWxlSGFuZGxlCisjaWYgVVNFKEdMSUIpICYm
ICFQTEFURk9STShXSU4pCit0eXBlZGVmIEdGaWxlSU9TdHJlYW0qIFBsYXRmb3JtRmlsZUhhbmRs
ZTsKK2NvbnN0IFBsYXRmb3JtRmlsZUhhbmRsZSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlID0g
MDsKKyNlbGlmIFBMQVRGT1JNKFdJTikKK3R5cGVkZWYgSEFORExFIFBsYXRmb3JtRmlsZUhhbmRs
ZTsKKy8vIEZJWE1FOiAtMSBpcyBJTlZBTElEX0hBTkRMRV9WQUxVRSwgZGVmaW5lZCBpbiA8d2lu
YmFzZS5oPi4gQ2hyb21pdW0gdHJpZXMgdG8KKy8vIGF2b2lkIHVzaW5nIFdpbmRvd3MgaGVhZGVy
cyBpbiBoZWFkZXJzLiBXZSdkIHJhdGhlciBtb3ZlIHRoaXMgaW50byB0aGUgLmNwcC4KK2NvbnN0
IFBsYXRmb3JtRmlsZUhhbmRsZSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlID0gcmVpbnRlcnBy
ZXRfY2FzdDxIQU5ETEU+KC0xKTsKKyNlbHNlCit0eXBlZGVmIGludCBQbGF0Zm9ybUZpbGVIYW5k
bGU7Citjb25zdCBQbGF0Zm9ybUZpbGVIYW5kbGUgaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSA9
IC0xOworI2VuZGlmCisKK2VudW0gY2xhc3MgRmlsZU9wZW5Nb2RlIHsKKyAgICBSZWFkLAorICAg
IFdyaXRlLAorI2lmIE9TKERBUldJTikKKyAgICBFdmVudHNPbmx5LAorI2VuZGlmCit9OworCitl
bnVtIGNsYXNzIEZpbGVTZWVrT3JpZ2luIHsKKyAgICBCZWdpbm5pbmcsCisgICAgQ3VycmVudCwK
KyAgICBFbmQsCit9OworCitlbnVtIGNsYXNzIEZpbGVMb2NrTW9kZSB7CisgICAgU2hhcmVkID0g
MSA8PCAwLAorICAgIEV4Y2x1c2l2ZSA9IDEgPDwgMSwKKyAgICBOb25ibG9ja2luZyA9IDEgPDwg
MiwKK307CisKK2VudW0gY2xhc3MgU2hvdWxkRm9sbG93U3ltYm9saWNMaW5rcyB7IE5vLCBZZXMg
fTsKKworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZmlsZUV4aXN0cyhjb25zdCBTdHJpbmcmKTsK
K1dURl9FWFBPUlRfUFJJVkFURSBib29sIGRlbGV0ZUZpbGUoY29uc3QgU3RyaW5nJik7CitXVEZf
RVhQT1JUX1BSSVZBVEUgYm9vbCBkZWxldGVFbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsK
K1dURl9FWFBPUlRfUFJJVkFURSBib29sIG1vdmVGaWxlKGNvbnN0IFN0cmluZyYgb2xkUGF0aCwg
Y29uc3QgU3RyaW5nJiBuZXdQYXRoKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGdldEZpbGVT
aXplKGNvbnN0IFN0cmluZyYsIGxvbmcgbG9uZyYgcmVzdWx0KTsKK1dURl9FWFBPUlRfUFJJVkFU
RSBib29sIGdldEZpbGVTaXplKFBsYXRmb3JtRmlsZUhhbmRsZSwgbG9uZyBsb25nJiByZXN1bHQp
OworV1RGX0VYUE9SVF9QUklWQVRFIE9wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlTW9kaWZpY2F0
aW9uVGltZShjb25zdCBTdHJpbmcmKTsKK1dURl9FWFBPUlRfUFJJVkFURSBPcHRpb25hbDxXYWxs
VGltZT4gZ2V0RmlsZUNyZWF0aW9uVGltZShjb25zdCBTdHJpbmcmKTsgLy8gTm90IGFsbCBwbGF0
Zm9ybXMgc3RvcmUgZmlsZSBjcmVhdGlvbiB0aW1lLgorV1RGX0VYUE9SVF9QUklWQVRFIE9wdGlv
bmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYgcGF0aCk7CitXVEZf
RVhQT1JUX1BSSVZBVEUgT3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGFGb2xsb3dp
bmdTeW1saW5rcyhjb25zdCBTdHJpbmcmIHBhdGgpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wg
ZmlsZUlzRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYsIFNob3VsZEZvbGxvd1N5bWJvbGljTGlua3Mp
OworV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY29u
c3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGNvbXBvbmVudCk7CitXVEZfRVhQT1JUX1BS
SVZBVEUgU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMoU3RyaW5nVmlldyBwYXRoLCBj
b25zdCBWZWN0b3I8U3RyaW5nVmlldz4mIGNvbXBvbmVudHMpOworV1RGX0VYUE9SVF9QUklWQVRF
IFN0cmluZyBsYXN0Q29tcG9uZW50T2ZQYXRoSWdub3JpbmdUcmFpbGluZ1NsYXNoKGNvbnN0IFN0
cmluZyYgcGF0aCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBtYWtlQWxsRGlyZWN0b3JpZXMo
Y29uc3QgU3RyaW5nJiBwYXRoKTsKK1dURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgaG9tZURpcmVj
dG9yeVBhdGgoKTsKK1dURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcGF0aEdldEZpbGVOYW1lKGNv
bnN0IFN0cmluZyYpOworV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBkaXJlY3RvcnlOYW1lKGNv
bnN0IFN0cmluZyYpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZ2V0Vm9sdW1lRnJlZVNwYWNl
KGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90Jik7CitXVEZfRVhQT1JUX1BSSVZBVEUgT3B0aW9uYWw8
aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0IENTdHJpbmcmKTsKK1dURl9FWFBPUlRfUFJJ
VkFURSBib29sIGNyZWF0ZVN5bWJvbGljTGluayhjb25zdCBTdHJpbmcmIHRhcmdldFBhdGgsIGNv
bnN0IFN0cmluZyYgc3ltYm9saWNMaW5rUGF0aCk7CisKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lk
IHNldE1ldGFkYXRhVVJMKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiB1cmxTdHJp
bmcsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIgPSB7IH0pOworCitib29sIGNhbkV4Y2x1ZGVGcm9t
QmFja3VwKCk7IC8vIFJldHVybnMgdHJ1ZSBpZiBhbnkgZmlsZSBjYW4gZXZlciBiZSBleGNsdWRl
ZCBmcm9tIGJhY2t1cC4KK2Jvb2wgZXhjbHVkZUZyb21CYWNrdXAoY29uc3QgU3RyaW5nJik7IC8v
IFJldHVybnMgdHJ1ZSBpZiBzdWNjZXNzZnVsLgorCitXVEZfRVhQT1JUX1BSSVZBVEUgVmVjdG9y
PFN0cmluZz4gbGlzdERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYg
ZmlsdGVyID0gU3RyaW5nKCkpOworCitXVEZfRVhQT1JUX1BSSVZBVEUgQ1N0cmluZyBmaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJik7CitTdHJpbmcgc3RyaW5nRnJvbUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBjaGFyKik7CisKK2lubGluZSBib29sIGlzSGFuZGxl
VmFsaWQoY29uc3QgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpIHsgcmV0dXJuIGhhbmRsZSAh
PSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOyB9CisKKy8vIFByZWZpeCBpcyB3aGF0IHRoZSBm
aWxlbmFtZSBzaG91bGQgYmUgcHJlZml4ZWQgd2l0aCwgbm90IHRoZSBmdWxsIHBhdGguCitXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJl
Zml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmKTsKK1dURl9FWFBPUlRfUFJJVkFURSBQbGF0Zm9ybUZp
bGVIYW5kbGUgb3BlbkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUpOworV1RG
X0VYUE9SVF9QUklWQVRFIHZvaWQgY2xvc2VGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSYpOworLy8g
UmV0dXJucyB0aGUgcmVzdWx0aW5nIG9mZnNldCBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZp
bGUgaWYgc3VjY2Vzc2Z1bCwgLTEgb3RoZXJ3aXNlLgorV1RGX0VYUE9SVF9QUklWQVRFIGxvbmcg
bG9uZyBzZWVrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQsIEZpbGVT
ZWVrT3JpZ2luKTsKK2Jvb2wgdHJ1bmNhdGVGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgbG9uZyBs
b25nIG9mZnNldCk7CisvLyBSZXR1cm5zIG51bWJlciBvZiBieXRlcyBhY3R1YWxseSByZWFkIGlm
IHN1Y2Nlc3NmdWwsIC0xIG90aGVyd2lzZS4KK1dURl9FWFBPUlRfUFJJVkFURSBpbnQgd3JpdGVU
b0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsK
Ky8vIFJldHVybnMgbnVtYmVyIG9mIGJ5dGVzIGFjdHVhbGx5IHdyaXR0ZW4gaWYgc3VjY2Vzc2Z1
bCwgLTEgb3RoZXJ3aXNlLgorV1RGX0VYUE9SVF9QUklWQVRFIGludCByZWFkRnJvbUZpbGUoUGxh
dGZvcm1GaWxlSGFuZGxlLCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsKKworV1RGX0VYUE9SVF9Q
UklWQVRFIFBsYXRmb3JtRmlsZUhhbmRsZSBvcGVuQW5kTG9ja0ZpbGUoY29uc3QgU3RyaW5nJiwg
RmlsZU9wZW5Nb2RlLCBPcHRpb25TZXQ8RmlsZUxvY2tNb2RlPiA9IEZpbGVMb2NrTW9kZTo6RXhj
bHVzaXZlKTsKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIHVubG9ja0FuZENsb3NlRmlsZShQbGF0
Zm9ybUZpbGVIYW5kbGUpOworCisvLyBBcHBlbmRzIHRoZSBjb250ZW50cyBvZiB0aGUgZmlsZSBm
b3VuZCBhdCAncGF0aCcgdG8gdGhlIG9wZW4gUGxhdGZvcm1GaWxlSGFuZGxlLgorLy8gUmV0dXJu
cyB0cnVlIGlmIHRoZSB3cml0ZSB3YXMgc3VjY2Vzc2Z1bCwgZmFsc2UgaWYgaXQgd2FzIG5vdC4K
K1dURl9FWFBPUlRfUFJJVkFURSBib29sIGFwcGVuZEZpbGVDb250ZW50c1RvRmlsZUhhbmRsZShj
b25zdCBTdHJpbmcmIHBhdGgsIFBsYXRmb3JtRmlsZUhhbmRsZSYpOworCisvLyBIYXJkIGxpbmtz
IGEgZmlsZSBpZiBwb3NzaWJsZSwgY29waWVzIGl0IGlmIG5vdC4KK1dURl9FWFBPUlRfUFJJVkFU
RSBib29sIGhhcmRMaW5rT3JDb3B5RmlsZShjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgU3Ry
aW5nJiBkZXN0aW5hdGlvbik7CisKKyNpZiBVU0UoRklMRV9MT0NLKQorV1RGX0VYUE9SVF9QUklW
QVRFIGJvb2wgbG9ja0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBPcHRpb25TZXQ8RmlsZUxvY2tN
b2RlPik7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCB1bmxvY2tGaWxlKFBsYXRmb3JtRmlsZUhh
bmRsZSk7CisjZW5kaWYKKworLy8gRW5jb2RlIGEgc3RyaW5nIGZvciB1c2Ugd2l0aGluIGEgZmls
ZSBuYW1lLgorV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBlbmNvZGVGb3JGaWxlTmFtZShjb25z
dCBTdHJpbmcmKTsKK1dURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgZGVjb2RlRnJvbUZpbGVuYW1l
KGNvbnN0IFN0cmluZyYpOworCitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBmaWxlc0hhdmVTYW1l
Vm9sdW1lKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOworCisjaWYgVVNFKENGKQorV1RG
X0VYUE9SVF9QUklWQVRFIFJldGFpblB0cjxDRlVSTFJlZj4gcGF0aEFzVVJMKGNvbnN0IFN0cmlu
ZyYpOworI2VuZGlmCisKKyNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKK1N0cmlu
ZyBmaWxlbmFtZUZvckRpc3BsYXkoY29uc3QgU3RyaW5nJik7CisjZW5kaWYKKworI2lmIFBMQVRG
T1JNKFdJTikKK1dURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgbG9jYWxVc2VyU3BlY2lmaWNTdG9y
YWdlRGlyZWN0b3J5KCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHJvYW1pbmdVc2VyU3Bl
Y2lmaWNTdG9yYWdlRGlyZWN0b3J5KCk7CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKENPQ09BKQor
V1RGX0VYUE9SVF9QUklWQVRFIE5TU3RyaW5nICpjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoTlNT
dHJpbmcgKmRpcmVjdG9yeVByZWZpeCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBkZWxldGVO
b25FbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKKyNlbmRpZgorCisjaWYgUExBVEZPUk0o
V0lOX0NBSVJPKQorV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlEaXJl
Y3RvcnkoKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5
KGNvbnN0IFN0cmluZyYpOworI2VuZGlmCisKK1dURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcmVh
bFBhdGgoY29uc3QgU3RyaW5nJik7CisKK2NsYXNzIE1hcHBlZEZpbGVEYXRhIHsKK3B1YmxpYzoK
KyAgICBNYXBwZWRGaWxlRGF0YSgpIHsgfQorICAgIE1hcHBlZEZpbGVEYXRhKE1hcHBlZEZpbGVE
YXRhJiYpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBNYXBwZWRGaWxlRGF0YShjb25zdCBTdHJp
bmcmIGZpbGVQYXRoLCBib29sJiBzdWNjZXNzKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgfk1h
cHBlZEZpbGVEYXRhKCk7CisgICAgTWFwcGVkRmlsZURhdGEmIG9wZXJhdG9yPShNYXBwZWRGaWxl
RGF0YSYmKTsKKworICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAh
IW1fZmlsZURhdGE7IH0KKyAgICBjb25zdCB2b2lkKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9m
aWxlRGF0YTsgfQorICAgIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX2ZpbGVTaXpl
OyB9CisKK3ByaXZhdGU6CisgICAgdm9pZCogbV9maWxlRGF0YSB7IG51bGxwdHIgfTsKKyAgICB1
bnNpZ25lZCBtX2ZpbGVTaXplIHsgMCB9OworfTsKKworaW5saW5lIE1hcHBlZEZpbGVEYXRhOjpN
YXBwZWRGaWxlRGF0YShNYXBwZWRGaWxlRGF0YSYmIG90aGVyKQorICAgIDogbV9maWxlRGF0YShz
dGQ6OmV4Y2hhbmdlKG90aGVyLm1fZmlsZURhdGEsIG51bGxwdHIpKQorICAgICwgbV9maWxlU2l6
ZShzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fZmlsZVNpemUsIDApKQoreworfQorCitpbmxpbmUgTWFw
cGVkRmlsZURhdGEmIE1hcHBlZEZpbGVEYXRhOjpvcGVyYXRvcj0oTWFwcGVkRmlsZURhdGEmJiBv
dGhlcikKK3sKKyAgICBtX2ZpbGVEYXRhID0gc3RkOjpleGNoYW5nZShvdGhlci5tX2ZpbGVEYXRh
LCBudWxscHRyKTsKKyAgICBtX2ZpbGVTaXplID0gc3RkOjpleGNoYW5nZShvdGhlci5tX2ZpbGVT
aXplLCAwKTsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK30gLy8gbmFtZXNwYWNlIEZpbGVTeXN0
ZW0KK30gLy8gbmFtZXNwYWNlIFdURgorCituYW1lc3BhY2UgRmlsZVN5c3RlbSA9IFdURjo6Rmls
ZVN5c3RlbTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtR1RLLmNtYWtlIGIv
U291cmNlL1dURi93dGYvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggNjczZjAyZDBkNTk2ODU0NWFj
ODdhOGE4ZTU3YjI3NzM0ZDczOTg5Yy4uN2ZlYzEyZGMyZmMzMTViYzUxNjhmMDJiM2JmNzY0NzBj
MGQ5Y2JhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1HVEsuY21ha2UKKysr
IGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTIyLDYgKzIyLDcgQEAgbGlz
dChBUFBFTkQgV1RGX1NPVVJDRVMKICAgICBnZW5lcmljL01haW5UaHJlYWRHZW5lcmljLmNwcAog
ICAgIGdlbmVyaWMvV29ya1F1ZXVlR2VuZXJpYy5jcHAKIAorICAgIGdsaWIvRmlsZVN5c3RlbUds
aWIuY3BwCiAgICAgZ2xpYi9HTGliVXRpbGl0aWVzLmNwcAogICAgIGdsaWIvR1JlZlB0ci5jcHAK
ICAgICBnbGliL1J1bkxvb3BHTGliLmNwcApAQCAtNTUsNSArNTYsNiBAQCBsaXN0KEFQUEVORCBX
VEZfTElCUkFSSUVTCiApCiAKIGxpc3QoQVBQRU5EIFdURl9TWVNURU1fSU5DTFVERV9ESVJFQ1RP
UklFUworICAgICR7R0lPX1VOSVhfSU5DTFVERV9ESVJTfQogICAgICR7R0xJQl9JTkNMVURFX0RJ
UlN9CiApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybU1hYy5jbWFrZSBiL1Nv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IGZjMWU1N2I5Y2IyNmI2ZjJiNmFi
YTYxNDNiZDE4YWViYmIxNmI1MzQuLjBlM2UxNDE2MDkxMmI3ODYxNzczNDM1MGE5MjVkOTlkYmEy
Y2RhMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBi
L1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC0zMiw2ICszMiw4IEBAIGxpc3Qo
QVBQRU5EIFdURl9QVUJMSUNfSEVBREVSUwogICAgIHNwaS9kYXJ3aW4vWFBDU1BJLmgKICAgICBz
cGkvZGFyd2luL2R5bGRTUEkuaAogCisgICAgc3BpL21hYy9NZXRhZGF0YVNQSS5oCisKICAgICB0
ZXh0L2NmL1RleHRCcmVha0l0ZXJhdG9yQ0YuaAogKQogCkBAIC00Miw2ICs0NCw3IEBAIGxpc3Qo
QVBQRU5EIFdURl9TT1VSQ0VTCiAgICAgU2NoZWR1bGVQYWlyTWFjLm1tCiAKICAgICBjZi9DRlVS
TEV4dHJhcy5jcHAKKyAgICBjZi9GaWxlU3lzdGVtQ0YuY3BwCiAgICAgY2YvTGFuZ3VhZ2VDRi5j
cHAKICAgICBjZi9SdW5Mb29wQ0YuY3BwCiAgICAgY2YvVVJMQ0YuY3BwCkBAIC00OSw2ICs1Miw3
IEBAIGxpc3QoQVBQRU5EIFdURl9TT1VSQ0VTCiAgICAgY29jb2EvQXV0b2RyYWluZWRQb29sLmNw
cAogICAgIGNvY29hL0NQVVRpbWVDb2NvYS5jcHAKICAgICBjb2NvYS9FbnRpdGxlbWVudHMubW0K
KyAgICBjb2NvYS9GaWxlU3lzdGVtQ29jb2EubW0KICAgICBjb2NvYS9NYWNoU2VuZFJpZ2h0LmNw
cAogICAgIGNvY29hL01haW5UaHJlYWRDb2NvYS5tbQogICAgIGNvY29hL01lbW9yeUZvb3Rwcmlu
dENvY29hLmNwcApAQCAtNTgsNiArNjIsOSBAQCBsaXN0KEFQUEVORCBXVEZfU09VUkNFUwogICAg
IGNvY29hL1dvcmtRdWV1ZUNvY29hLmNwcAogCiAgICAgbWFjL0RlcHJlY2F0ZWRTeW1ib2xzVXNl
ZEJ5U2FmYXJpLm1tCisgICAgbWFjL0ZpbGVTeXN0ZW1NYWMubW0KKworICAgIHBvc2l4L0ZpbGVT
eXN0ZW1QT1NJWC5jcHAKIAogICAgIHRleHQvY2YvQXRvbWljU3RyaW5nSW1wbENGLmNwcAogICAg
IHRleHQvY2YvU3RyaW5nQ0YuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bVBsYXlTdGF0aW9uLmNtYWtlIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1QbGF5U3RhdGlvbi5j
bWFrZQppbmRleCBiOTdmZWM0MGVkMzBiMTc3YjJmNTM1YjYyMTYwZWYxZWVlMmRlNTZlLi4zZTll
NzVjOTI4YTZjOTQ2MDViNGJmY2FhN2ZiYjJiOWY0MmY4MzkwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9QbGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtlCisrKyBiL1NvdXJjZS9XVEYvd3RmL1Bs
YXRmb3JtUGxheVN0YXRpb24uY21ha2UKQEAgLTUsNiArNSw4IEBAIGxpc3QoQVBQRU5EIFdURl9T
T1VSQ0VTCiAgICAgZ2VuZXJpYy9SdW5Mb29wR2VuZXJpYy5jcHAKICAgICBnZW5lcmljL1dvcmtR
dWV1ZUdlbmVyaWMuY3BwCiAKKyAgICBwb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCisKICAgICB0
ZXh0L3VuaXgvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVVVuaXguY3BwCiAKICAgICB1bml4
L0NQVVRpbWVVbml4LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1XUEUu
Y21ha2UgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdQRS5jbWFrZQppbmRleCA0NzNjZmQ2MDI2
YjA2NTJjMmYwMmQyYjI4NTM5MmIxZDgwMmYwYmJjLi4wODZhZGQzYWE5MTlmYzQ5MjM5ZDcxYzFj
Yzg2ODVjNWZjNzM5YmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdQRS5j
bWFrZQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdQRS5jbWFrZQpAQCAtMTYsNiArMTYs
NyBAQCBsaXN0KEFQUEVORCBXVEZfU09VUkNFUwogICAgIGdlbmVyaWMvTWFpblRocmVhZEdlbmVy
aWMuY3BwCiAgICAgZ2VuZXJpYy9Xb3JrUXVldWVHZW5lcmljLmNwcAogCisgICAgZ2xpYi9GaWxl
U3lzdGVtR2xpYi5jcHAKICAgICBnbGliL0dMaWJVdGlsaXRpZXMuY3BwCiAgICAgZ2xpYi9HUmVm
UHRyLmNwcAogICAgIGdsaWIvUnVuTG9vcEdMaWIuY3BwCkBAIC00MCw1ICs0MSw2IEBAIGxpc3Qo
QVBQRU5EIFdURl9MSUJSQVJJRVMKICkKIAogbGlzdChBUFBFTkQgV1RGX1NZU1RFTV9JTkNMVURF
X0RJUkVDVE9SSUVTCisgICAgJHtHSU9fVU5JWF9JTkNMVURFX0RJUlN9CiAgICAgJHtHTElCX0lO
Q0xVREVfRElSU30KICkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV2luLmNt
YWtlIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1XaW4uY21ha2UKaW5kZXggMmI4YjVmODI3MGVi
NWYyNDY3NjA3MmRkMTI0NTc2ZGE5MzAxZjBlYS4uYjZjMGFjNmY0ZGU1ZTA1ZjI3ZDRkOWFjMGZm
YmQ1Y2M0MDk3YTZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1XaW4uY21h
a2UKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1XaW4uY21ha2UKQEAgLTEyLDE0ICsxMiwy
MCBAQCBsaXN0KEFQUEVORCBXVEZfU09VUkNFUwogCiAgICAgd2luL0NQVVRpbWVXaW4uY3BwCiAg
ICAgd2luL0RiZ0hlbHBlcldpbi5jcHAKKyAgICB3aW4vRmlsZVN5c3RlbVdpbi5jcHAKICAgICB3
aW4vTGFuZ3VhZ2VXaW4uY3BwCiAgICAgd2luL01haW5UaHJlYWRXaW4uY3BwCiAgICAgd2luL01l
bW9yeUZvb3RwcmludFdpbi5jcHAKICAgICB3aW4vTWVtb3J5UHJlc3N1cmVIYW5kbGVyV2luLmNw
cAorICAgIHdpbi9QYXRoV2Fsa2VyLmNwcAogICAgIHdpbi9SdW5Mb29wV2luLmNwcAogICAgIHdp
bi9Xb3JrUXVldWVXaW4uY3BwCiApCiAKK2xpc3QoQVBQRU5EIFdURl9MSUJSQVJJRVMKKyAgICBz
aGx3YXBpCispCisKIGlmIChVU0VfQ0YpCiAgICAgbGlzdChBUFBFTkQgV1RGX1BVQkxJQ19IRUFE
RVJTCiAgICAgICAgIGNmL0NGVVJMRXh0cmFzLmgKQEAgLTI5LDYgKzM1LDcgQEAgaWYgKFVTRV9D
RikKICAgICApCiAgICAgbGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKICAgICAgICAgY2YvQ0ZVUkxF
eHRyYXMuY3BwCisgICAgICAgIGNmL0ZpbGVTeXN0ZW1DRi5jcHAKICAgICAgICAgY2YvVVJMQ0Yu
Y3BwCiAKICAgICAgICAgdGV4dC9jZi9BdG9taWNTdHJpbmdJbXBsQ0YuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9jZi9GaWxlU3lzdGVtQ0YuY3BwIGIvU291cmNlL1dURi93dGYvY2Yv
RmlsZVN5c3RlbUNGLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MTJkNjVmY2FkMjk2YjM5NjNmNjBhNDQ5NGI2
ZDdlOTJkNGFjNTBjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvY2YvRmlsZVN5
c3RlbUNGLmNwcApAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAy
MDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
IDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFt
ZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDx3
dGYvRmlsZVN5c3RlbS5oPgorCisjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZTdHJpbmcuaD4K
KyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV1RGIHsKKwor
Q1N0cmluZyBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5n
JiBwYXRoKQoreworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZTdHJpbmcgPSBwYXRoLmNy
ZWF0ZUNGU3RyaW5nKCk7CisKKyAgICBpZiAoIWNmU3RyaW5nKQorICAgICAgICByZXR1cm4gQ1N0
cmluZygpOworCisgICAgQ0ZJbmRleCBzaXplID0gQ0ZTdHJpbmdHZXRNYXhpbXVtU2l6ZU9mRmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNmU3RyaW5nLmdldCgpKTsKKworICAgIFZlY3RvcjxjaGFy
PiBidWZmZXIoc2l6ZSk7CisKKyAgICBpZiAoIUNGU3RyaW5nR2V0RmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKGNmU3RyaW5nLmdldCgpLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKSkgewor
ICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBnZXQgZmlsZXN5c3RlbSByZXByZXNlbnRhdGlv
biB0byBjcmVhdGUgQ1N0cmluZyBmcm9tIGNmU3RyaW5nIik7CisgICAgICAgIHJldHVybiBDU3Ry
aW5nKCk7CisgICAgfQorCisgICAgcmV0dXJuIENTdHJpbmcoYnVmZmVyLmRhdGEoKSwgc3RybGVu
KGJ1ZmZlci5kYXRhKCkpKTsKK30KKworU3RyaW5nIEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgY2hhciogZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KQoreworICAgIHJldHVybiBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24p
KS5nZXQoKTsKK30KKworUmV0YWluUHRyPENGVVJMUmVmPiBGaWxlU3lzdGVtOjpwYXRoQXNVUkwo
Y29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIENGVVJMUGF0aFN0eWxlIHBhdGhTdHlsZTsKKyNp
ZiBQTEFURk9STShXSU4pCisgICAgcGF0aFN0eWxlID0ga0NGVVJMV2luZG93c1BhdGhTdHlsZTsK
KyNlbHNlCisgICAgcGF0aFN0eWxlID0ga0NGVVJMUE9TSVhQYXRoU3R5bGU7CisjZW5kaWYKKyAg
ICByZXR1cm4gYWRvcHRDRihDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aCgwLCBwYXRoLmNy
ZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIHBhdGhTdHlsZSwgRkFMU0UpKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9GaWxlU3lzdGVtQ29j
b2EubW0gYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9GaWxlU3lzdGVtQ29jb2EubW0KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYjM4NTc0NjljZTA0Njk2YmFhYTMyNjM3NDM4ZDEzMTY2YmYwNGZmOAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL0ZpbGVTeXN0ZW1Db2NvYS5tbQpAQCAtMCwwICsx
LDE0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1l
IG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisg
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KKworQGlu
dGVyZmFjZSBXVEZXZWJGaWxlTWFuYWdlckRlbGVnYXRlIDogTlNPYmplY3QgPE5TRmlsZU1hbmFn
ZXJEZWxlZ2F0ZT4KK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdURldlYkZpbGVNYW5hZ2VyRGVs
ZWdhdGUKKworLSAoQk9PTClmaWxlTWFuYWdlcjooTlNGaWxlTWFuYWdlciAqKWZpbGVNYW5hZ2Vy
IHNob3VsZFByb2NlZWRBZnRlckVycm9yOihOU0Vycm9yICopZXJyb3IgbW92aW5nSXRlbUF0VVJM
OihOU1VSTCAqKXNyY1VSTCB0b1VSTDooTlNVUkwgKilkc3RVUkwKK3sKKyAgICBVTlVTRURfUEFS
QU0oZmlsZU1hbmFnZXIpOworICAgIFVOVVNFRF9QQVJBTShzcmNVUkwpOworICAgIFVOVVNFRF9Q
QVJBTShkc3RVUkwpOworICAgIHJldHVybiBlcnJvci5jb2RlID09IE5TRmlsZVdyaXRlRmlsZUV4
aXN0c0Vycm9yOworfQorCitAZW5kCisKK25hbWVzcGFjZSBXVEYgeworCituYW1lc3BhY2UgRmls
ZVN5c3RlbSB7CisKK1N0cmluZyBob21lRGlyZWN0b3J5UGF0aCgpCit7CisgICAgcmV0dXJuIE5T
SG9tZURpcmVjdG9yeSgpOworfQorCitTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3Ry
aW5nJiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYgcGxhdGZvcm1GaWxlSGFuZGxlKQorewor
ICAgIHBsYXRmb3JtRmlsZUhhbmRsZSA9IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7CisKKyAg
ICBWZWN0b3I8Y2hhcj4gdGVtcG9yYXJ5RmlsZVBhdGgoUEFUSF9NQVgpOworICAgIGlmICghY29u
ZnN0cihfQ1NfREFSV0lOX1VTRVJfVEVNUF9ESVIsIHRlbXBvcmFyeUZpbGVQYXRoLmRhdGEoKSwg
dGVtcG9yYXJ5RmlsZVBhdGguc2l6ZSgpKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisg
ICAgLy8gU2hyaW5rIHRoZSB2ZWN0b3IuCisgICAgdGVtcG9yYXJ5RmlsZVBhdGguc2hyaW5rKHN0
cmxlbih0ZW1wb3JhcnlGaWxlUGF0aC5kYXRhKCkpKTsKKworICAgIC8vIEZJWE1FOiBDaGFuZ2Ug
dG8gYSBydW50aW1lIGFzc2VydGlvbiB0aGF0IHRoZSBwYXRoIGVuZHMgd2l0aCBhIHNsYXNoIG9u
Y2UgPHJkYXI6Ly9wcm9ibGVtLzIzNTc5MDc3PiBpcworICAgIC8vIGZpeGVkIGluIGFsbCBpT1Mg
U2ltdWxhdG9yIHZlcnNpb25zIHRoYXQgd2UgdXNlLgorICAgIGlmICh0ZW1wb3JhcnlGaWxlUGF0
aC5sYXN0KCkgIT0gJy8nKQorICAgICAgICB0ZW1wb3JhcnlGaWxlUGF0aC5hcHBlbmQoJy8nKTsK
KworICAgIC8vIEFwcGVuZCB0aGUgZmlsZSBuYW1lLgorICAgIENTdHJpbmcgcHJlZml4VXRmOCA9
IHByZWZpeC51dGY4KCk7CisgICAgdGVtcG9yYXJ5RmlsZVBhdGguYXBwZW5kKHByZWZpeFV0Zjgu
ZGF0YSgpLCBwcmVmaXhVdGY4Lmxlbmd0aCgpKTsKKyAgICB0ZW1wb3JhcnlGaWxlUGF0aC5hcHBl
bmQoIlhYWFhYWCIsIDYpOworICAgIHRlbXBvcmFyeUZpbGVQYXRoLmFwcGVuZCgnXDAnKTsKKwor
ICAgIHBsYXRmb3JtRmlsZUhhbmRsZSA9IG1rc3RlbXAodGVtcG9yYXJ5RmlsZVBhdGguZGF0YSgp
KTsKKyAgICBpZiAocGxhdGZvcm1GaWxlSGFuZGxlID09IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5k
bGUpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIHJldHVybiBTdHJpbmc6OmZyb21V
VEY4KHRlbXBvcmFyeUZpbGVQYXRoLmRhdGEoKSk7Cit9CisKK2Jvb2wgbW92ZUZpbGUoY29uc3Qg
U3RyaW5nJiBvbGRQYXRoLCBjb25zdCBTdHJpbmcmIG5ld1BhdGgpCit7CisgICAgLy8gT3Zlcndy
aXRlIGV4aXN0aW5nIGZpbGVzLgorICAgIGF1dG8gbWFuYWdlciA9IGFkb3B0TlMoW1tOU0ZpbGVN
YW5hZ2VyIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tXVEZX
ZWJGaWxlTWFuYWdlckRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgW21hbmFnZXIgc2V0RGVs
ZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworCisgICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7CisgICAg
Ym9vbCBzdWNjZXNzID0gW21hbmFnZXIgbW92ZUl0ZW1BdFVSTDpbTlNVUkwgZmlsZVVSTFdpdGhQ
YXRoOm9sZFBhdGhdIHRvVVJMOltOU1VSTCBmaWxlVVJMV2l0aFBhdGg6bmV3UGF0aF0gZXJyb3I6
JmVycm9yXTsKKyAgICBpZiAoIXN1Y2Nlc3MpCisgICAgICAgIE5TTG9nKEAiRXJyb3IgaW4gbW92
ZUZpbGU6ICVAIiwgZXJyb3IpOworICAgIHJldHVybiBzdWNjZXNzOworfQorCitib29sIGdldFZv
bHVtZUZyZWVTcGFjZShjb25zdCBTdHJpbmcmIHBhdGgsIHVpbnQ2NF90JiBmcmVlU3BhY2UpCit7
CisgICAgTlNEaWN0aW9uYXJ5ICpmaWxlU3lzdGVtQXR0cmlidXRlc0RpY3Rpb25hcnkgPSBbW05T
RmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGF0dHJpYnV0ZXNPZkZpbGVTeXN0ZW1Gb3JQYXRo
OihOU1N0cmluZyAqKXBhdGggZXJyb3I6TlVMTF07CisgICAgaWYgKCFmaWxlU3lzdGVtQXR0cmli
dXRlc0RpY3Rpb25hcnkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBmcmVlU3BhY2UgPSBb
W2ZpbGVTeXN0ZW1BdHRyaWJ1dGVzRGljdGlvbmFyeSBvYmplY3RGb3JLZXk6TlNGaWxlU3lzdGVt
RnJlZVNpemVdIHVuc2lnbmVkTG9uZ0xvbmdWYWx1ZV07CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K05TU3RyaW5nICpjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoTlNTdHJpbmcgKmRpcmVjdG9yeVBy
ZWZpeCkKK3sKKyAgICBOU1N0cmluZyAqdGVtcERpcmVjdG9yeSA9IE5TVGVtcG9yYXJ5RGlyZWN0
b3J5KCk7CisgICAgaWYgKCF0ZW1wRGlyZWN0b3J5IHx8ICFbdGVtcERpcmVjdG9yeSBsZW5ndGhd
KQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgaWYgKCFkaXJlY3RvcnlQcmVmaXggfHwgIVtk
aXJlY3RvcnlQcmVmaXggbGVuZ3RoXSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIE5TU3Ry
aW5nICp0ZW1wRGlyZWN0b3J5Q29tcG9uZW50ID0gW2RpcmVjdG9yeVByZWZpeCBzdHJpbmdCeUFw
cGVuZGluZ1N0cmluZzpAIi1YWFhYWFhYWCJdOworICAgIGNvbnN0IGNoYXIqIHRlbXBEaXJlY3Rv
cnlDU3RyaW5nID0gW1t0ZW1wRGlyZWN0b3J5IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVu
dDp0ZW1wRGlyZWN0b3J5Q29tcG9uZW50XSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb25dOworICAg
IGlmICghdGVtcERpcmVjdG9yeUNTdHJpbmcpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBj
b25zdCBzaXplX3QgbGVuZ3RoID0gc3RybGVuKHRlbXBEaXJlY3RvcnlDU3RyaW5nKTsKKyAgICBB
U1NFUlQobGVuZ3RoIDw9IE1BWFBBVEhMRU4pOworICAgIGlmIChsZW5ndGggPiBNQVhQQVRITEVO
KQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgY29uc3Qgc2l6ZV90IGxlbmd0aFBsdXNOdWxs
VGVybWluYXRvciA9IGxlbmd0aCArIDE7CisgICAgVmVjdG9yPGNoYXIsIE1BWFBBVEhMRU4gKyAx
PiBwYXRoKGxlbmd0aFBsdXNOdWxsVGVybWluYXRvcik7CisgICAgbWVtY3B5KHBhdGguZGF0YSgp
LCB0ZW1wRGlyZWN0b3J5Q1N0cmluZywgbGVuZ3RoUGx1c051bGxUZXJtaW5hdG9yKTsKKworICAg
IGlmICghbWtkdGVtcChwYXRoLmRhdGEoKSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBy
ZXR1cm4gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBzdHJpbmdXaXRoRmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uOnBhdGguZGF0YSgpIGxlbmd0aDpsZW5ndGhdOworfQorCitib29sIGRl
bGV0ZU5vbkVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICByZXR1cm4g
W1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSByZW1vdmVJdGVtQXRQYXRoOnBhdGggZXJy
b3I6bmlsXTsKK30KKworfSAvLyBuYW1lc3BhY2UgRmlsZVN5c3RlbQorfSAvLyBuYW1lc3BhY2Ug
V1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcCBi
L1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJmZjZi
ZDNmYTU0ODJhNWEwZjg0MGM5Njc4NDJjNDViOGFlMTIyY2YKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcApAQCAtMCwwICsxLDQ2OSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOSBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhl
cgorICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSwgTHRkLgorICogQ29weXJpZ2h0IChD
KSAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFBvcnRpb25zIENvcHly
aWdodCAoYykgMjAxMCBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
CisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CisKKyNp
bmNsdWRlIDxnaW8vZ2ZpbGVkZXNjcmlwdG9yYmFzZWQuaD4KKyNpbmNsdWRlIDxnaW8vZ2lvLmg+
CisjaW5jbHVkZSA8Z2xpYi5oPgorI2luY2x1ZGUgPGdsaWIvZ3N0ZGlvLmg+CisjaW5jbHVkZSA8
c3lzL2ZpbGUuaD4KKyNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgorI2luY2x1ZGUgPHd0Zi9G
aWxlTWV0YWRhdGEuaD4KKyNpbmNsdWRlIDx3dGYvVVVJRC5oPgorI2luY2x1ZGUgPHd0Zi9nbGli
L0dMaWJVdGlsaXRpZXMuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXVEYgeworCituYW1lc3BhY2UgRmlsZVN5c3RlbSB7
CisKKy8qIE9uIGxpbnV4IGZpbGUgbmFtZXMgYXJlIGp1c3QgcmF3IGJ5dGVzLCBzbyBhbHNvIHN0
cmluZ3MgdGhhdCBjYW5ub3QgYmUgZW5jb2RlZCBpbiBhbnkgd2F5CisgKiBhcmUgdmFsaWQgZmls
ZSBuYW1lcy4gVGhpcyBtZWFuIHRoYXQgd2UgY2Fubm90IGp1c3Qgc3RvcmUgYSBmaWxlIG5hbWUg
YXMtaXMgaW4gYSBTdHJpbmcKKyAqIGJ1dCB3ZSBoYXZlIHRvIGVzY2FwZSBpdC4KKyAqIE9uIFdp
bmRvd3MgdGhlIEdMaWIgZmlsZSBuYW1lIGVuY29kaW5nIGlzIGFsd2F5cyBVVEYtOCBzbyB3ZSBj
YW4gb3B0aW1pemUgdGhpcyBjYXNlLiAqLworU3RyaW5nIHN0cmluZ0Zyb21GaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oY29uc3QgY2hhciogZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKQoreworICAg
IGlmICghZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7
CisKKyNpZiBPUyhXSU5ET1dTKQorICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbik7CisjZWxzZQorICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGVzY2FwZWRT
dHJpbmcoZ191cmlfZXNjYXBlX3N0cmluZyhmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24sICIvOiIs
IEZBTFNFKSk7CisgICAgcmV0dXJuIGVzY2FwZWRTdHJpbmcuZ2V0KCk7CisjZW5kaWYKK30KKwor
c3RhdGljIEdVbmlxdWVQdHI8Y2hhcj4gdW5lc2NhcGVkRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBw
YXRoKQoreworICAgIGlmIChwYXRoLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisjaWYgT1MoV0lORE9XUykKKyAgICByZXR1cm4gR1VuaXF1ZVB0cjxjaGFyPihnX3N0cmR1cChw
YXRoLnV0ZjgoKS5kYXRhKCkpKTsKKyNlbHNlCisgICAgcmV0dXJuIEdVbmlxdWVQdHI8Y2hhcj4o
Z191cmlfdW5lc2NhcGVfc3RyaW5nKHBhdGgudXRmOCgpLmRhdGEoKSwgbnVsbHB0cikpOworI2Vu
ZGlmCit9CisKK0NTdHJpbmcgZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYg
cGF0aCkKK3sKKyNpZiBPUyhXSU5ET1dTKQorICAgIHJldHVybiBwYXRoLnV0ZjgoKTsKKyNlbHNl
CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShwYXRo
KTsKKyAgICByZXR1cm4gZmlsZW5hbWUuZ2V0KCk7CisjZW5kaWYKK30KKworLy8gQ29udmVydHMg
YSBzdHJpbmcgdG8gc29tZXRoaW5nIHN1aXRhYmxlIHRvIGJlIGRpc3BsYXllZCB0byB0aGUgdXNl
ci4KK1N0cmluZyBmaWxlbmFtZUZvckRpc3BsYXkoY29uc3QgU3RyaW5nJiBzdHJpbmcpCit7Cisj
aWYgT1MoV0lORE9XUykKKyAgICByZXR1cm4gc3RyaW5nOworI2Vsc2UKKyAgICBHVW5pcXVlUHRy
PGdjaGFyPiBmaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHN0cmluZyk7CisgICAgaWYgKCFm
aWxlbmFtZSkKKyAgICAgICAgcmV0dXJuIHN0cmluZzsKKworICAgIEdVbmlxdWVQdHI8Z2NoYXI+
IGRpc3BsYXkoZ19maWxlbmFtZV90b191dGY4KGZpbGVuYW1lLmdldCgpLCAtMSwgbnVsbHB0ciwg
bnVsbHB0ciwgbnVsbHB0cikpOworICAgIGlmICghZGlzcGxheSkKKyAgICAgICAgcmV0dXJuIHN0
cmluZzsKKworICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGRpc3BsYXkuZ2V0KCkpOworI2Vu
ZGlmCit9CisKK2Jvb2wgZmlsZUV4aXN0cyhjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgR1Vu
aXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShwYXRoKTsKKyAgICBy
ZXR1cm4gZmlsZW5hbWUgPyBnX2ZpbGVfdGVzdChmaWxlbmFtZS5nZXQoKSwgR19GSUxFX1RFU1Rf
RVhJU1RTKSA6IGZhbHNlOworfQorCitib29sIGRlbGV0ZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRo
KQoreworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUo
cGF0aCk7CisgICAgcmV0dXJuIGZpbGVuYW1lID8gZ19yZW1vdmUoZmlsZW5hbWUuZ2V0KCkpICE9
IC0xIDogZmFsc2U7Cit9CisKK2Jvb2wgZGVsZXRlRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5n
JiBwYXRoKQoreworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2NhcGVkRmls
ZW5hbWUocGF0aCk7CisgICAgcmV0dXJuIGZpbGVuYW1lID8gZ19ybWRpcihmaWxlbmFtZS5nZXQo
KSkgIT0gLTEgOiBmYWxzZTsKK30KKworc3RhdGljIGJvb2wgZ2V0RmlsZVN0YXQoY29uc3QgU3Ry
aW5nJiBwYXRoLCBHU3RhdEJ1Ziogc3RhdEJ1ZmZlcikKK3sKKyAgICBHVW5pcXVlUHRyPGdjaGFy
PiBmaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGgpOworICAgIGlmICghZmlsZW5hbWUp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBnX3N0YXQoZmlsZW5hbWUuZ2V0
KCksIHN0YXRCdWZmZXIpICE9IC0xOworfQorCitzdGF0aWMgYm9vbCBnZXRGaWxlTFN0YXQoY29u
c3QgU3RyaW5nJiBwYXRoLCBHU3RhdEJ1Ziogc3RhdEJ1ZmZlcikKK3sKKyAgICBHVW5pcXVlUHRy
PGdjaGFyPiBmaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGgpOworICAgIGlmICghZmls
ZW5hbWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBnX2xzdGF0KGZpbGVu
YW1lLmdldCgpLCBzdGF0QnVmZmVyKSAhPSAtMTsKK30KKworYm9vbCBnZXRGaWxlU2l6ZShjb25z
dCBTdHJpbmcmIHBhdGgsIGxvbmcgbG9uZyYgcmVzdWx0U2l6ZSkKK3sKKyAgICBHU3RhdEJ1ZiBz
dGF0UmVzdWx0OworICAgIGlmICghZ2V0RmlsZVN0YXQocGF0aCwgJnN0YXRSZXN1bHQpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXN1bHRTaXplID0gc3RhdFJlc3VsdC5zdF9zaXpl
OworICAgIHJldHVybiB0cnVlOworfQorCitib29sIGdldEZpbGVTaXplKFBsYXRmb3JtRmlsZUhh
bmRsZSBoYW5kbGUsIGxvbmcgbG9uZyYgcmVzdWx0U2l6ZSkKK3sKKyAgICBhdXRvIGluZm8gPSBn
X2ZpbGVfaW9fc3RyZWFtX3F1ZXJ5X2luZm8oaGFuZGxlLCBHX0ZJTEVfQVRUUklCVVRFX1NUQU5E
QVJEX1NJWkUsIG51bGxwdHIsIG51bGxwdHIpOworICAgIGlmICghaW5mbykKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgcmVzdWx0U2l6ZSA9IGdfZmlsZV9pbmZvX2dldF9zaXplKGluZm8p
OworICAgIHJldHVybiB0cnVlOworfQorCitPcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZUNyZWF0
aW9uVGltZShjb25zdCBTdHJpbmcmKQoreworICAgIC8vIEZJWE1FOiBJcyB0aGVyZSBhIHdheSB0
byByZXRyaWV2ZSBmaWxlIGNyZWF0aW9uIHRpbWUgd2l0aCBHdGsgb24gcGxhdGZvcm1zIHRoYXQg
c3VwcG9ydCBpdD8KKyAgICByZXR1cm4gV1RGOjpudWxsb3B0OworfQorCitPcHRpb25hbDxXYWxs
VGltZT4gZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAg
IEdTdGF0QnVmIHN0YXRSZXN1bHQ7CisgICAgaWYgKCFnZXRGaWxlU3RhdChwYXRoLCAmc3RhdFJl
c3VsdCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gV2FsbFRp
bWU6OmZyb21SYXdTZWNvbmRzKHN0YXRSZXN1bHQuc3RfbXRpbWUpOworfQorCitzdGF0aWMgRmls
ZU1ldGFkYXRhOjpUeXBlIHRvRmlsZU1ldGF0YVR5cGUoR1N0YXRCdWYgc3RhdFJlc3VsdCkKK3sK
KyAgICBpZiAoU19JU0RJUihzdGF0UmVzdWx0LnN0X21vZGUpKQorICAgICAgICByZXR1cm4gRmls
ZU1ldGFkYXRhOjpUeXBlOjpEaXJlY3Rvcnk7CisgICAgaWYgKFNfSVNMTksoc3RhdFJlc3VsdC5z
dF9tb2RlKSkKKyAgICAgICAgcmV0dXJuIEZpbGVNZXRhZGF0YTo6VHlwZTo6U3ltYm9saWNMaW5r
OworICAgIHJldHVybiBGaWxlTWV0YWRhdGE6OlR5cGU6OkZpbGU7Cit9CisKK3N0YXRpYyBPcHRp
b25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YVVzaW5nRnVuY3Rpb24oY29uc3QgU3RyaW5n
JiBwYXRoLCBib29sICgqc3RhdEZ1bmMpKGNvbnN0IFN0cmluZyYsIEdTdGF0QnVmKikpCit7Cisg
ICAgR1N0YXRCdWYgc3RhdFJlc3VsdDsKKyAgICBpZiAoIXN0YXRGdW5jKHBhdGgsICZzdGF0UmVz
dWx0KSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIFN0cmluZyBmaWxlbmFt
ZSA9IHBhdGhHZXRGaWxlTmFtZShwYXRoKTsKKyAgICBib29sIGlzSGlkZGVuID0gIWZpbGVuYW1l
LmlzRW1wdHkoKSAmJiBmaWxlbmFtZVswXSA9PSAnLic7CisKKyAgICByZXR1cm4gRmlsZU1ldGFk
YXRhIHsKKyAgICAgICAgV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKHN0YXRSZXN1bHQuc3RfbXRp
bWUpLAorICAgICAgICBzdGF0UmVzdWx0LnN0X3NpemUsCisgICAgICAgIGlzSGlkZGVuLAorICAg
ICAgICB0b0ZpbGVNZXRhdGFUeXBlKHN0YXRSZXN1bHQpCisgICAgfTsKK30KKworT3B0aW9uYWw8
RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIHJl
dHVybiBmaWxlTWV0YWRhdGFVc2luZ0Z1bmN0aW9uKHBhdGgsICZnZXRGaWxlTFN0YXQpOworfQor
CitPcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YUZvbGxvd2luZ1N5bWxpbmtzKGNv
bnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICByZXR1cm4gZmlsZU1ldGFkYXRhVXNpbmdGdW5jdGlv
bihwYXRoLCAmZ2V0RmlsZVN0YXQpOworfQorCitTdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb21wb25lbnQpCit7CisgICAg
aWYgKHBhdGguZW5kc1dpdGgoR19ESVJfU0VQQVJBVE9SX1MpKQorICAgICAgICByZXR1cm4gcGF0
aCArIGNvbXBvbmVudDsKKyAgICByZXR1cm4gcGF0aCArIEdfRElSX1NFUEFSQVRPUl9TICsgY29t
cG9uZW50OworfQorCitTdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhTdHJpbmdWaWV3
IHBhdGgsIGNvbnN0IFZlY3RvcjxTdHJpbmdWaWV3PiYgY29tcG9uZW50cykKK3sKKyAgICBTdHJp
bmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQocGF0aCk7CisgICAgZm9yIChh
dXRvJiBjb21wb25lbnQgOiBjb21wb25lbnRzKSB7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKEdf
RElSX1NFUEFSQVRPUl9TKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoY29tcG9uZW50KTsKKyAg
ICB9CisgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKK30KKworYm9vbCBtYWtlQWxsRGly
ZWN0b3JpZXMoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZp
bGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUocGF0aCk7CisgICAgcmV0dXJuIGZpbGVuYW1lID8g
Z19ta2Rpcl93aXRoX3BhcmVudHMoZmlsZW5hbWUuZ2V0KCksIFNfSVJXWFUpICE9IC0xIDogZmFs
c2U7Cit9CisKK1N0cmluZyBob21lRGlyZWN0b3J5UGF0aCgpCit7CisgICAgcmV0dXJuIHN0cmlu
Z0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfaG9tZV9kaXIoKSk7Cit9CisKK2Jv
b2wgY3JlYXRlU3ltYm9saWNMaW5rKGNvbnN0IFN0cmluZyYgdGFyZ2V0UGF0aCwgY29uc3QgU3Ry
aW5nJiBzeW1ib2xpY0xpbmtQYXRoKQoreworICAgIENTdHJpbmcgdGFyZ2V0UGF0aEZTUmVwID0g
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHRhcmdldFBhdGgpOworICAgIGlmICghdGFyZ2V0UGF0
aEZTUmVwLmRhdGEoKSB8fCB0YXJnZXRQYXRoRlNSZXAuZGF0YSgpWzBdID09ICdcMCcpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIENTdHJpbmcgc3ltYm9saWNMaW5rUGF0aEZTUmVwID0g
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHN5bWJvbGljTGlua1BhdGgpOworICAgIGlmICghc3lt
Ym9saWNMaW5rUGF0aEZTUmVwLmRhdGEoKSB8fCBzeW1ib2xpY0xpbmtQYXRoRlNSZXAuZGF0YSgp
WzBdID09ICdcMCcpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiAhc3ltbGlu
ayh0YXJnZXRQYXRoRlNSZXAuZGF0YSgpLCBzeW1ib2xpY0xpbmtQYXRoRlNSZXAuZGF0YSgpKTsK
K30KKworU3RyaW5nIHBhdGhHZXRGaWxlTmFtZShjb25zdCBTdHJpbmcmIHBhdGhOYW1lKQorewor
ICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHRtcEZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUocGF0
aE5hbWUpOworICAgIGlmICghdG1wRmlsZW5hbWUpCisgICAgICAgIHJldHVybiBwYXRoTmFtZTsK
KworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGJhc2VOYW1lKGdfcGF0aF9nZXRfYmFzZW5hbWUodG1w
RmlsZW5hbWUuZ2V0KCkpKTsKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChiYXNlTmFtZS5n
ZXQoKSk7Cit9CisKK2Jvb2wgZ2V0Vm9sdW1lRnJlZVNwYWNlKGNvbnN0IFN0cmluZyYgcGF0aCwg
dWludDY0X3QmIGZyZWVTcGFjZSkKK3sKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZSA9
IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGgpOworICAgIGlmICghZmlsZW5hbWUpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIEdSZWZQdHI8R0ZpbGU+IGZpbGUgPSBhZG9wdEdSZWYoZ19maWxl
X25ld19mb3JfcGF0aChmaWxlbmFtZS5nZXQoKSkpOworICAgIEdSZWZQdHI8R0ZpbGVJbmZvPiBm
aWxlSW5mbyA9IGFkb3B0R1JlZihnX2ZpbGVfcXVlcnlfZmlsZXN5c3RlbV9pbmZvKGZpbGUuZ2V0
KCksIEdfRklMRV9BVFRSSUJVVEVfRklMRVNZU1RFTV9GUkVFLCAwLCAwKSk7CisgICAgaWYgKCFm
aWxlSW5mbykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZnJlZVNwYWNlID0gZ19maWxl
X2luZm9fZ2V0X2F0dHJpYnV0ZV91aW50NjQoZmlsZUluZm8uZ2V0KCksIEdfRklMRV9BVFRSSUJV
VEVfRklMRVNZU1RFTV9GUkVFKTsKKyAgICByZXR1cm4gISFmcmVlU3BhY2U7Cit9CisKK1N0cmlu
ZyBkaXJlY3RvcnlOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBHVW5pcXVlUHRyPGdj
aGFyPiBmaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGgpOworICAgIGlmICghZmlsZW5h
bWUpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIEdVbmlxdWVQdHI8Y2hhcj4gZGly
bmFtZShnX3BhdGhfZ2V0X2Rpcm5hbWUoZmlsZW5hbWUuZ2V0KCkpKTsKKyAgICByZXR1cm4gU3Ry
aW5nOjpmcm9tVVRGOChkaXJuYW1lLmdldCgpKTsKK30KKworVmVjdG9yPFN0cmluZz4gbGlzdERp
cmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgZmlsdGVyKQoreworICAg
IFZlY3RvcjxTdHJpbmc+IGVudHJpZXM7CisKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFt
ZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGgpOworICAgIGlmICghZmlsZW5hbWUpCisgICAgICAg
IHJldHVybiBlbnRyaWVzOworCisgICAgR1VuaXF1ZVB0cjxHRGlyPiBkaXIoZ19kaXJfb3Blbihm
aWxlbmFtZS5nZXQoKSwgMCwgbnVsbHB0cikpOworICAgIGlmICghZGlyKQorICAgICAgICByZXR1
cm4gZW50cmllczsKKworICAgIEdVbmlxdWVQdHI8R1BhdHRlcm5TcGVjPiBwc3BlYyhnX3BhdHRl
cm5fc3BlY19uZXcoKGZpbHRlci51dGY4KCkpLmRhdGEoKSkpOworICAgIHdoaWxlIChjb25zdCBj
aGFyKiBuYW1lID0gZ19kaXJfcmVhZF9uYW1lKGRpci5nZXQoKSkpIHsKKyAgICAgICAgaWYgKCFn
X3BhdHRlcm5fbWF0Y2hfc3RyaW5nKHBzcGVjLmdldCgpLCBuYW1lKSkKKyAgICAgICAgICAgIGNv
bnRpbnVlOworCisgICAgICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGVudHJ5KGdfYnVpbGRfZmlsZW5h
bWUoZmlsZW5hbWUuZ2V0KCksIG5hbWUsIG51bGxwdHIpKTsKKyAgICAgICAgZW50cmllcy5hcHBl
bmQoc3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihlbnRyeS5nZXQoKSkpOworICAg
IH0KKworICAgIHJldHVybiBlbnRyaWVzOworfQorCitTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUo
Y29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKQoreworICAg
IEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lKGdfc3RyZHVwX3ByaW50ZigiJXMlcyIsIHByZWZp
eC51dGY4KCkuZGF0YSgpLCBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkudXRmOCgpLmRhdGEo
KSkpOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHRlbXBQYXRoKGdfYnVpbGRfZmlsZW5hbWUoZ19n
ZXRfdG1wX2RpcigpLCBmaWxlbmFtZS5nZXQoKSwgTlVMTCkpOworICAgIEdSZWZQdHI8R0ZpbGU+
IGZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0aCh0ZW1wUGF0aC5nZXQoKSkpOwor
CisgICAgaGFuZGxlID0gZ19maWxlX2NyZWF0ZV9yZWFkd3JpdGUoZmlsZS5nZXQoKSwgR19GSUxF
X0NSRUFURV9OT05FLCAwLCAwKTsKKyAgICBpZiAoIWlzSGFuZGxlVmFsaWQoaGFuZGxlKSkKKyAg
ICAgICAgcmV0dXJuIFN0cmluZygpOworICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KHRlbXBQ
YXRoLmdldCgpKTsKK30KKworUGxhdGZvcm1GaWxlSGFuZGxlIG9wZW5GaWxlKGNvbnN0IFN0cmlu
ZyYgcGF0aCwgRmlsZU9wZW5Nb2RlIG1vZGUpCit7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmls
ZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShwYXRoKTsKKyAgICBpZiAoIWZpbGVuYW1lKQorICAg
ICAgICByZXR1cm4gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKKworICAgIEdSZWZQdHI8R0Zp
bGU+IGZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0aChmaWxlbmFtZS5nZXQoKSkp
OworICAgIEdGaWxlSU9TdHJlYW0qIGlvU3RyZWFtID0gMDsKKyAgICBpZiAobW9kZSA9PSBGaWxl
T3Blbk1vZGU6OlJlYWQpCisgICAgICAgIGlvU3RyZWFtID0gZ19maWxlX29wZW5fcmVhZHdyaXRl
KGZpbGUuZ2V0KCksIDAsIDApOworICAgIGVsc2UgaWYgKG1vZGUgPT0gRmlsZU9wZW5Nb2RlOjpX
cml0ZSkgeworICAgICAgICBpZiAoZ19maWxlX3Rlc3QoZmlsZW5hbWUuZ2V0KCksIHN0YXRpY19j
YXN0PEdGaWxlVGVzdD4oR19GSUxFX1RFU1RfRVhJU1RTIHwgR19GSUxFX1RFU1RfSVNfUkVHVUxB
UikpKQorICAgICAgICAgICAgaW9TdHJlYW0gPSBnX2ZpbGVfb3Blbl9yZWFkd3JpdGUoZmlsZS5n
ZXQoKSwgMCwgMCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGlvU3RyZWFtID0gZ19maWxl
X2NyZWF0ZV9yZWFkd3JpdGUoZmlsZS5nZXQoKSwgR19GSUxFX0NSRUFURV9OT05FLCAwLCAwKTsK
KyAgICB9CisKKyAgICByZXR1cm4gaW9TdHJlYW07Cit9CisKK3ZvaWQgY2xvc2VGaWxlKFBsYXRm
b3JtRmlsZUhhbmRsZSYgaGFuZGxlKQoreworICAgIGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUp
KQorICAgICAgICByZXR1cm47CisKKyAgICBnX2lvX3N0cmVhbV9jbG9zZShHX0lPX1NUUkVBTSho
YW5kbGUpLCAwLCAwKTsKKyAgICBnX29iamVjdF91bnJlZihoYW5kbGUpOworICAgIGhhbmRsZSA9
IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7Cit9CisKK2xvbmcgbG9uZyBzZWVrRmlsZShQbGF0
Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0LCBGaWxlU2Vla09yaWdpbiBv
cmlnaW4pCit7CisgICAgR1NlZWtUeXBlIHNlZWtUeXBlID0gR19TRUVLX1NFVDsKKyAgICBzd2l0
Y2ggKG9yaWdpbikgeworICAgIGNhc2UgRmlsZVNlZWtPcmlnaW46OkJlZ2lubmluZzoKKyAgICAg
ICAgc2Vla1R5cGUgPSBHX1NFRUtfU0VUOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZpbGVT
ZWVrT3JpZ2luOjpDdXJyZW50OgorICAgICAgICBzZWVrVHlwZSA9IEdfU0VFS19DVVI7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgRmlsZVNlZWtPcmlnaW46OkVuZDoKKyAgICAgICAgc2Vla1R5
cGUgPSBHX1NFRUtfRU5EOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisKKyAgICBpZiAoIWdfc2Vla2FibGVfc2VlayhH
X1NFRUtBQkxFKGdfaW9fc3RyZWFtX2dldF9pbnB1dF9zdHJlYW0oR19JT19TVFJFQU0oaGFuZGxl
KSkpLAorICAgICAgICBvZmZzZXQsIHNlZWtUeXBlLCAwLCAwKSkKKyAgICB7CisgICAgICAgIHJl
dHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuIGdfc2Vla2FibGVfdGVsbChHX1NFRUtBQkxFKGdf
aW9fc3RyZWFtX2dldF9pbnB1dF9zdHJlYW0oR19JT19TVFJFQU0oaGFuZGxlKSkpKTsKK30KKwor
aW50IHdyaXRlVG9GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNvbnN0IGNoYXIqIGRh
dGEsIGludCBsZW5ndGgpCit7CisgICAgZ3NpemUgYnl0ZXNXcml0dGVuOworICAgIGdfb3V0cHV0
X3N0cmVhbV93cml0ZV9hbGwoZ19pb19zdHJlYW1fZ2V0X291dHB1dF9zdHJlYW0oR19JT19TVFJF
QU0oaGFuZGxlKSksCisgICAgICAgIGRhdGEsIGxlbmd0aCwgJmJ5dGVzV3JpdHRlbiwgMCwgMCk7
CisgICAgcmV0dXJuIGJ5dGVzV3JpdHRlbjsKK30KKworaW50IHJlYWRGcm9tRmlsZShQbGF0Zm9y
bUZpbGVIYW5kbGUgaGFuZGxlLCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQoreworICAgIEdVbmlx
dWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBkbyB7CisgICAgICAgIGdzc2l6ZSBieXRlc1Jl
YWQgPSBnX2lucHV0X3N0cmVhbV9yZWFkKGdfaW9fc3RyZWFtX2dldF9pbnB1dF9zdHJlYW0oR19J
T19TVFJFQU0oaGFuZGxlKSksCisgICAgICAgICAgICBkYXRhLCBsZW5ndGgsIDAsICZlcnJvci5v
dXRQdHIoKSk7CisgICAgICAgIGlmIChieXRlc1JlYWQgPj0gMCkKKyAgICAgICAgICAgIHJldHVy
biBieXRlc1JlYWQ7CisgICAgfSB3aGlsZSAoZXJyb3IgJiYgZXJyb3ItPmNvZGUgPT0gR19GSUxF
X0VSUk9SX0lOVFIpOworICAgIHJldHVybiAtMTsKK30KKworYm9vbCBtb3ZlRmlsZShjb25zdCBT
dHJpbmcmIG9sZFBhdGgsIGNvbnN0IFN0cmluZyYgbmV3UGF0aCkKK3sKKyAgICBHVW5pcXVlUHRy
PGdjaGFyPiBvbGRGaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKG9sZFBhdGgpOworICAgIGlm
ICghb2xkRmlsZW5hbWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEdVbmlxdWVQdHI8
Z2NoYXI+IG5ld0ZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUobmV3UGF0aCk7CisgICAgaWYg
KCFuZXdGaWxlbmFtZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgR1JlZlB0cjxHRmls
ZT4gb2xkRmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKG9sZEZpbGVuYW1lLmdl
dCgpKSk7CisgICAgR1JlZlB0cjxHRmlsZT4gbmV3RmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3
X2Zvcl9wYXRoKG5ld0ZpbGVuYW1lLmdldCgpKSk7CisKKyAgICByZXR1cm4gZ19maWxlX21vdmUo
b2xkRmlsZS5nZXQoKSwgbmV3RmlsZS5nZXQoKSwgR19GSUxFX0NPUFlfT1ZFUldSSVRFLCBudWxs
cHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKTsKK30KKworYm9vbCBoYXJkTGlua09yQ29w
eUZpbGUoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb24pCit7
CisjaWYgT1MoV0lORE9XUykKKyAgICByZXR1cm4gISE6OkNvcHlGaWxlKHNvdXJjZS5jaGFyYWN0
ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSwgZGVzdGluYXRpb24uY2hhcmFjdGVyc1dp
dGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCksIFRSVUUpOworI2Vsc2UKKyAgICBHVW5pcXVlUHRy
PGdjaGFyPiBzb3VyY2VGaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHNvdXJjZSk7CisgICAg
aWYgKCFzb3VyY2VGaWxlbmFtZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgR1VuaXF1
ZVB0cjxnY2hhcj4gZGVzdGluYXRpb25GaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKGRlc3Rp
bmF0aW9uKTsKKyAgICBpZiAoIWRlc3RpbmF0aW9uRmlsZW5hbWUpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIGlmICghbGluayhzb3VyY2VGaWxlbmFtZS5nZXQoKSwgZGVzdGluYXRpb25G
aWxlbmFtZS5nZXQoKSkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gSGFyZCBsaW5r
IGZhaWxlZC4gUGVyZm9ybSBhIGNvcHkgaW5zdGVhZC4KKyAgICBHUmVmUHRyPEdGaWxlPiBzb3Vy
Y2VGaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoc291cmNlRmlsZW5hbWUuZ2V0
KCkpKTsKKyAgICBHUmVmUHRyPEdGaWxlPiBkZXN0aW5hdGlvbkZpbGUgPSBhZG9wdEdSZWYoZ19m
aWxlX25ld19mb3JfcGF0aChkZXN0aW5hdGlvbkZpbGVuYW1lLmdldCgpKSk7CisgICAgcmV0dXJu
IGdfZmlsZV9jb3B5KHNvdXJjZUZpbGUuZ2V0KCksIGRlc3RpbmF0aW9uRmlsZS5nZXQoKSwgR19G
SUxFX0NPUFlfTk9ORSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cik7CisjZW5k
aWYKK30KKworT3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0IENTdHJpbmcm
IGZzRmlsZSkKK3sKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZSA9IHVuZXNjYXBlZEZp
bGVuYW1lKGZzRmlsZS5kYXRhKCkpOworICAgIGlmICghZmlsZW5hbWUpCisgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisKKyAgICBHUmVmUHRyPEdGaWxlPiBmaWxlID0gYWRvcHRHUmVmKGdf
ZmlsZV9uZXdfZm9yX3BhdGgoZmlsZW5hbWUuZ2V0KCkpKTsKKyAgICBHUmVmUHRyPEdGaWxlSW5m
bz4gZmlsZUluZm8gPSBhZG9wdEdSZWYoZ19maWxlX3F1ZXJ5X2ZpbGVzeXN0ZW1faW5mbyhmaWxl
LmdldCgpLCBHX0ZJTEVfQVRUUklCVVRFX1VOSVhfREVWSUNFLCBudWxscHRyLCBudWxscHRyKSk7
CisgICAgaWYgKCFmaWxlSW5mbykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAg
IHJldHVybiBnX2ZpbGVfaW5mb19nZXRfYXR0cmlidXRlX3VpbnQzMihmaWxlSW5mby5nZXQoKSwg
R19GSUxFX0FUVFJJQlVURV9VTklYX0RFVklDRSk7Cit9CisKKyNpZiBVU0UoRklMRV9MT0NLKQor
Ym9vbCBsb2NrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBPcHRpb25TZXQ8RmlsZUxv
Y2tNb2RlPiBsb2NrTW9kZSkKK3sKKyAgICBDT01QSUxFX0FTU0VSVChMT0NLX1NIID09IFdURjo6
ZW51bVRvVW5kZXJseWluZ1R5cGUoRmlsZUxvY2tNb2RlOjpTaGFyZWQpLCBMb2NrU2hhcmVkRW5j
b2RpbmdJc0FzRXhwZWN0ZWQpOworICAgIENPTVBJTEVfQVNTRVJUKExPQ0tfRVggPT0gV1RGOjpl
bnVtVG9VbmRlcmx5aW5nVHlwZShGaWxlTG9ja01vZGU6OkV4Y2x1c2l2ZSksIExvY2tFeGNsdXNp
dmVFbmNvZGluZ0lzQXNFeHBlY3RlZCk7CisgICAgQ09NUElMRV9BU1NFUlQoTE9DS19OQiA9PSBX
VEY6OmVudW1Ub1VuZGVybHlpbmdUeXBlKEZpbGVMb2NrTW9kZTo6Tm9uYmxvY2tpbmcpLCBMb2Nr
Tm9uYmxvY2tpbmdFbmNvZGluZ0lzQXNFeHBlY3RlZCk7CisgICAgYXV0byogaW5wdXRTdHJlYW0g
PSBnX2lvX3N0cmVhbV9nZXRfaW5wdXRfc3RyZWFtKEdfSU9fU1RSRUFNKGhhbmRsZSkpOworICAg
IGludCByZXN1bHQgPSBmbG9jayhnX2ZpbGVfZGVzY3JpcHRvcl9iYXNlZF9nZXRfZmQoR19GSUxF
X0RFU0NSSVBUT1JfQkFTRUQoaW5wdXRTdHJlYW0pKSwgbG9ja01vZGUudG9SYXcoKSk7CisgICAg
cmV0dXJuIHJlc3VsdCAhPSAtMTsKK30KKworYm9vbCB1bmxvY2tGaWxlKFBsYXRmb3JtRmlsZUhh
bmRsZSBoYW5kbGUpCit7CisgICAgYXV0byogaW5wdXRTdHJlYW0gPSBnX2lvX3N0cmVhbV9nZXRf
aW5wdXRfc3RyZWFtKEdfSU9fU1RSRUFNKGhhbmRsZSkpOworICAgIGludCByZXN1bHQgPSBmbG9j
ayhnX2ZpbGVfZGVzY3JpcHRvcl9iYXNlZF9nZXRfZmQoR19GSUxFX0RFU0NSSVBUT1JfQkFTRUQo
aW5wdXRTdHJlYW0pKSwgTE9DS19VTik7CisgICAgcmV0dXJuIHJlc3VsdCAhPSAtMTsKK30KKyNl
bmRpZiAvLyBVU0UoRklMRV9MT0NLKQorCit9IC8vIG5hbWVzcGFjZSBGaWxlU3lzdGVtCit9IC8v
IG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL21hYy9GaWxlU3lzdGVt
TWFjLm1tIGIvU291cmNlL1dURi93dGYvbWFjL0ZpbGVTeXN0ZW1NYWMubW0KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OTI2OTJhMTZmYmE1YjE1Mjc4Yzc3MmY3NTZlNTUzYTExMDc1NWYyYgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XVEYvd3RmL21hYy9GaWxlU3lzdGVtTWFjLm1tCkBAIC0wLDAgKzEsODggQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCA8d3RmL0ZpbGVT
eXN0ZW0uaD4KKworI2lmIFBMQVRGT1JNKE1BQykKKworI2ltcG9ydCA8d3RmL2NvY29hL05TVVJM
RXh0cmFzLmg+CisjaW1wb3J0IDx3dGYvc3BpL21hYy9NZXRhZGF0YVNQSS5oPgorI2ltcG9ydCA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXVEYgeworCitib29sIEZpbGVTeXN0
ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBhdXRv
IGZpbGVNYW5hZ2VyID0gYWRvcHROUyhbW05TRmlsZU1hbmFnZXIgYWxsb2NdIGluaXRdKTsKKwor
ICAgIGlmIChOU0FycmF5ICpkaXJlY3RvcnlDb250ZW50cyA9IFtmaWxlTWFuYWdlciBjb250ZW50
c09mRGlyZWN0b3J5QXRQYXRoOnBhdGggZXJyb3I6bnVsbHB0cl0pIHsKKyAgICAgICAgLy8gRXhw
bGljaXRseSBsb29rIGZvciBhbmQgZGVsZXRlIC5EU19TdG9yZSBmaWxlcy4KKyAgICAgICAgaWYg
KGRpcmVjdG9yeUNvbnRlbnRzLmNvdW50ID09IDEgJiYgW2RpcmVjdG9yeUNvbnRlbnRzLmZpcnN0
T2JqZWN0IGlzRXF1YWxUb1N0cmluZzpAIi5EU19TdG9yZSJdKQorICAgICAgICAgICAgW2ZpbGVN
YW5hZ2VyIHJlbW92ZUl0ZW1BdFBhdGg6W3BhdGggc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9u
ZW50OmRpcmVjdG9yeUNvbnRlbnRzLmZpcnN0T2JqZWN0XSBlcnJvcjpudWxscHRyXTsKKyAgICB9
CisKKyAgICAvLyBybWRpciguLi4pIHJldHVybnMgMCBvbiBzdWNjZXNzZnVsIGRlbGV0aW9uIG9m
IHRoZSBwYXRoIGFuZCBub24temVybyBpbiBhbnkgb3RoZXIgY2FzZSAoaW5jbHVkaW5nIGludmFs
aWQgcGVybWlzc2lvbnMgb3Igbm9uLWV4aXN0ZW50IGZpbGUpCisgICAgcmV0dXJuICFybWRpcihG
aWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpKTsKK30KKwor
dm9pZCBGaWxlU3lzdGVtOjpzZXRNZXRhZGF0YVVSTChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0
IFN0cmluZyYgbWV0YWRhdGFVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpCit7Cisg
ICAgU3RyaW5nIHVybFN0cmluZzsKKyAgICBpZiAoTlNVUkwgKnVybCA9IFVSTFdpdGhVc2VyVHlw
ZWRTdHJpbmcobWV0YWRhdGFVUkxTdHJpbmcsIG5pbCkpCisgICAgICAgIHVybFN0cmluZyA9IFdU
Rjo6dXNlclZpc2libGVTdHJpbmcoV1RGOjpVUkxCeVJlbW92aW5nVXNlckluZm8odXJsKSk7Cisg
ICAgZWxzZQorICAgICAgICB1cmxTdHJpbmcgPSBtZXRhZGF0YVVSTFN0cmluZzsKKworICAgIC8v
IENhbGwgTWV0YWRhdGEgQVBJIG9uIGEgYmFja2dyb3VuZCBxdWV1ZSBiZWNhdXNlIGl0IGNhbiB0
YWtlIHNvbWUgdGltZS4KKyAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1
ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApLCBbcGF0aCA9IHBhdGguaXNv
bGF0ZWRDb3B5KCksIHVybFN0cmluZyA9IHVybFN0cmluZy5pc29sYXRlZENvcHkoKSwgcmVmZXJy
ZXIgPSByZWZlcnJlci5pc29sYXRlZENvcHkoKV0geworICAgICAgICBhdXRvIGl0ZW0gPSBhZG9w
dENGKE1ESXRlbUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBwYXRoLmNyZWF0ZUNGU3RyaW5n
KCkuZ2V0KCkpKTsKKyAgICAgICAgaWYgKCFpdGVtKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIGF1dG8gd2hlcmVGcm9tQXR0cmlidXRlID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5
IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6dXJsU3RyaW5nLCBuaWxdKTsKKyAgICAgICAgaWYgKCFy
ZWZlcnJlci5pc051bGwoKSkKKyAgICAgICAgICAgIFt3aGVyZUZyb21BdHRyaWJ1dGUgYWRkT2Jq
ZWN0OnJlZmVycmVyXTsKKworICAgICAgICBNREl0ZW1TZXRBdHRyaWJ1dGUoaXRlbS5nZXQoKSwg
a01ESXRlbVdoZXJlRnJvbXMsIChfX2JyaWRnZSBDRkFycmF5UmVmKXdoZXJlRnJvbUF0dHJpYnV0
ZS5nZXQoKSk7CisgICAgICAgIE1ESXRlbVNldEF0dHJpYnV0ZShpdGVtLmdldCgpLCBrTURJdGVt
RG93bmxvYWRlZERhdGUsIChfX2JyaWRnZSBDRkFycmF5UmVmKUBbIFtOU0RhdGUgZGF0ZV0gXSk7
CisgICAgfSk7Cit9CisKK2Jvb2wgRmlsZVN5c3RlbTo6Y2FuRXhjbHVkZUZyb21CYWNrdXAoKQor
eworICAgIHJldHVybiB0cnVlOworfQorCitib29sIEZpbGVTeXN0ZW06OmV4Y2x1ZGVGcm9tQmFj
a3VwKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICAvLyBJdCBpcyBjcml0aWNhbCB0byBwYXNz
IEZBTFNFIGZvciBleGNsdWRlQnlQYXRoIGJlY2F1c2UgZXhjbHVkaW5nIGJ5IHBhdGggcmVxdWly
ZXMgcm9vdCBwcml2aWxlZ2VzLgorICAgIENTQmFja3VwU2V0SXRlbUV4Y2x1ZGVkKEZpbGVTeXN0
ZW06OnBhdGhBc1VSTChwYXRoKS5nZXQoKSwgVFJVRSwgRkFMU0UpOworICAgIHJldHVybiB0cnVl
OworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKKworI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAgYi9Tb3Vy
Y2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM2MGVjYjE1
ODYzOTIwZmE0MzYxZmMxNGRiOGVlNmQzZmZlMmU0ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCkBAIC0wLDAgKzEsNDk2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUg
SW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAg
ICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CisKKyNpbmNsdWRlIDxk
aXJlbnQuaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVk
ZSA8Zm5tYXRjaC5oPgorI2luY2x1ZGUgPGxpYmdlbi5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+Cisj
aW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpbmNsdWRlIDxzeXMvc3RhdHZmcy5oPgorI2luY2x1ZGUg
PHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHd0Zi9FbnVtVHJh
aXRzLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVNZXRhZGF0YS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXVEYgeworCituYW1lc3BhY2Ug
RmlsZVN5c3RlbSB7CisKK2Jvb2wgZmlsZUV4aXN0cyhjb25zdCBTdHJpbmcmIHBhdGgpCit7Cisg
ICAgaWYgKHBhdGguaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIENTdHJp
bmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisKKyAgICBpZiAoIWZz
UmVwLmRhdGEoKSB8fCBmc1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgcmV0dXJuIGFjY2Vzcyhmc1JlcC5kYXRhKCksIEZfT0spICE9IC0xOworfQor
Citib29sIGRlbGV0ZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIENTdHJpbmcgZnNS
ZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisKKyAgICBpZiAoIWZzUmVwLmRh
dGEoKSB8fCBmc1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgLy8gdW5saW5rKC4uLikgcmV0dXJucyAwIG9uIHN1Y2Nlc3NmdWwgZGVsZXRpb24gb2Yg
dGhlIHBhdGggYW5kIG5vbi16ZXJvIGluIGFueSBvdGhlciBjYXNlIChpbmNsdWRpbmcgaW52YWxp
ZCBwZXJtaXNzaW9ucyBvciBub24tZXhpc3RlbnQgZmlsZSkKKyAgICByZXR1cm4gIXVubGluayhm
c1JlcC5kYXRhKCkpOworfQorCitQbGF0Zm9ybUZpbGVIYW5kbGUgb3BlbkZpbGUoY29uc3QgU3Ry
aW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUgbW9kZSkKK3sKKyAgICBDU3RyaW5nIGZzUmVwID0gZmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworCisgICAgaWYgKGZzUmVwLmlzTnVsbCgpKQor
ICAgICAgICByZXR1cm4gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKKworICAgIGludCBwbGF0
Zm9ybUZsYWcgPSAwOworICAgIGlmIChtb2RlID09IEZpbGVPcGVuTW9kZTo6UmVhZCkKKyAgICAg
ICAgcGxhdGZvcm1GbGFnIHw9IE9fUkRPTkxZOworICAgIGVsc2UgaWYgKG1vZGUgPT0gRmlsZU9w
ZW5Nb2RlOjpXcml0ZSkKKyAgICAgICAgcGxhdGZvcm1GbGFnIHw9IChPX1dST05MWSB8IE9fQ1JF
QVQgfCBPX1RSVU5DKTsKKyNpZiBPUyhEQVJXSU4pCisgICAgZWxzZSBpZiAobW9kZSA9PSBGaWxl
T3Blbk1vZGU6OkV2ZW50c09ubHkpCisgICAgICAgIHBsYXRmb3JtRmxhZyB8PSBPX0VWVE9OTFk7
CisjZW5kaWYKKworICAgIHJldHVybiBvcGVuKGZzUmVwLmRhdGEoKSwgcGxhdGZvcm1GbGFnLCAw
NjY2KTsKK30KKwordm9pZCBjbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpCit7
CisgICAgaWYgKGlzSGFuZGxlVmFsaWQoaGFuZGxlKSkgeworICAgICAgICBjbG9zZShoYW5kbGUp
OworICAgICAgICBoYW5kbGUgPSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOworICAgIH0KK30K
KworbG9uZyBsb25nIHNlZWtGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGxvbmcgbG9u
ZyBvZmZzZXQsIEZpbGVTZWVrT3JpZ2luIG9yaWdpbikKK3sKKyAgICBpbnQgd2hlbmNlID0gU0VF
S19TRVQ7CisgICAgc3dpdGNoIChvcmlnaW4pIHsKKyAgICBjYXNlIEZpbGVTZWVrT3JpZ2luOjpC
ZWdpbm5pbmc6CisgICAgICAgIHdoZW5jZSA9IFNFRUtfU0VUOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIEZpbGVTZWVrT3JpZ2luOjpDdXJyZW50OgorICAgICAgICB3aGVuY2UgPSBTRUVLX0NV
UjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGaWxlU2Vla09yaWdpbjo6RW5kOgorICAgICAg
ICB3aGVuY2UgPSBTRUVLX0VORDsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIHJldHVybiBzdGF0aWNfY2FzdDxs
b25nIGxvbmc+KGxzZWVrKGhhbmRsZSwgb2Zmc2V0LCB3aGVuY2UpKTsKK30KKworYm9vbCB0cnVu
Y2F0ZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCkKK3sK
KyAgICAvLyBmdHJ1bmNhdGUgcmV0dXJucyAwIHRvIGluZGljYXRlIHRoZSBzdWNjZXNzLgorICAg
IHJldHVybiAhZnRydW5jYXRlKGhhbmRsZSwgb2Zmc2V0KTsKK30KKworaW50IHdyaXRlVG9GaWxl
KFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgp
Cit7CisgICAgZG8geworICAgICAgICBpbnQgYnl0ZXNXcml0dGVuID0gd3JpdGUoaGFuZGxlLCBk
YXRhLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkpOworICAgICAgICBpZiAoYnl0ZXNXcml0
dGVuID49IDApCisgICAgICAgICAgICByZXR1cm4gYnl0ZXNXcml0dGVuOworICAgIH0gd2hpbGUg
KGVycm5vID09IEVJTlRSKTsKKyAgICByZXR1cm4gLTE7Cit9CisKK2ludCByZWFkRnJvbUZpbGUo
UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKK3sKKyAg
ICBkbyB7CisgICAgICAgIGludCBieXRlc1JlYWQgPSByZWFkKGhhbmRsZSwgZGF0YSwgc3RhdGlj
X2Nhc3Q8c2l6ZV90PihsZW5ndGgpKTsKKyAgICAgICAgaWYgKGJ5dGVzUmVhZCA+PSAwKQorICAg
ICAgICAgICAgcmV0dXJuIGJ5dGVzUmVhZDsKKyAgICB9IHdoaWxlIChlcnJubyA9PSBFSU5UUik7
CisgICAgcmV0dXJuIC0xOworfQorCisjaWYgVVNFKEZJTEVfTE9DSykKK2Jvb2wgbG9ja0ZpbGUo
UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgT3B0aW9uU2V0PEZpbGVMb2NrTW9kZT4gbG9ja01v
ZGUpCit7CisgICAgQ09NUElMRV9BU1NFUlQoTE9DS19TSCA9PSBXVEY6OmVudW1Ub1VuZGVybHlp
bmdUeXBlKEZpbGVMb2NrTW9kZTo6U2hhcmVkKSwgTG9ja1NoYXJlZEVuY29kaW5nSXNBc0V4cGVj
dGVkKTsKKyAgICBDT01QSUxFX0FTU0VSVChMT0NLX0VYID09IFdURjo6ZW51bVRvVW5kZXJseWlu
Z1R5cGUoRmlsZUxvY2tNb2RlOjpFeGNsdXNpdmUpLCBMb2NrRXhjbHVzaXZlRW5jb2RpbmdJc0Fz
RXhwZWN0ZWQpOworICAgIENPTVBJTEVfQVNTRVJUKExPQ0tfTkIgPT0gV1RGOjplbnVtVG9VbmRl
cmx5aW5nVHlwZShGaWxlTG9ja01vZGU6Ok5vbmJsb2NraW5nKSwgTG9ja05vbmJsb2NraW5nRW5j
b2RpbmdJc0FzRXhwZWN0ZWQpOworICAgIGludCByZXN1bHQgPSBmbG9jayhoYW5kbGUsIGxvY2tN
b2RlLnRvUmF3KCkpOworICAgIHJldHVybiAocmVzdWx0ICE9IC0xKTsKK30KKworYm9vbCB1bmxv
Y2tGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUpCit7CisgICAgaW50IHJlc3VsdCA9IGZs
b2NrKGhhbmRsZSwgTE9DS19VTik7CisgICAgcmV0dXJuIChyZXN1bHQgIT0gLTEpOworfQorI2Vu
ZGlmCisKKyNpZiAhUExBVEZPUk0oTUFDKQorYm9vbCBkZWxldGVFbXB0eURpcmVjdG9yeShjb25z
dCBTdHJpbmcmIHBhdGgpCit7CisgICAgQ1N0cmluZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihwYXRoKTsKKworICAgIGlmICghZnNSZXAuZGF0YSgpIHx8IGZzUmVwLmRhdGEoKVsw
XSA9PSAnXDAnKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBybWRpciguLi4pIHJl
dHVybnMgMCBvbiBzdWNjZXNzZnVsIGRlbGV0aW9uIG9mIHRoZSBwYXRoIGFuZCBub24temVybyBp
biBhbnkgb3RoZXIgY2FzZSAoaW5jbHVkaW5nIGludmFsaWQgcGVybWlzc2lvbnMgb3Igbm9uLWV4
aXN0ZW50IGZpbGUpCisgICAgcmV0dXJuICFybWRpcihmc1JlcC5kYXRhKCkpOworfQorI2VuZGlm
CisKK2Jvb2wgZ2V0RmlsZVNpemUoY29uc3QgU3RyaW5nJiBwYXRoLCBsb25nIGxvbmcmIHJlc3Vs
dCkKK3sKKyAgICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgp
OworCisgICAgaWYgKCFmc1JlcC5kYXRhKCkgfHwgZnNSZXAuZGF0YSgpWzBdID09ICdcMCcpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHN0cnVjdCBzdGF0IGZpbGVJbmZvOworCisgICAg
aWYgKHN0YXQoZnNSZXAuZGF0YSgpLCAmZmlsZUluZm8pKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICByZXN1bHQgPSBmaWxlSW5mby5zdF9zaXplOworICAgIHJldHVybiB0cnVlOworfQor
Citib29sIGdldEZpbGVTaXplKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGxvbmcgbG9uZyYg
cmVzdWx0KQoreworICAgIHN0cnVjdCBzdGF0IGZpbGVJbmZvOworICAgIGlmIChmc3RhdChoYW5k
bGUsICZmaWxlSW5mbykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJlc3VsdCA9IGZp
bGVJbmZvLnN0X3NpemU7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK09wdGlvbmFsPFdhbGxUaW1l
PiBnZXRGaWxlQ3JlYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyNpZiBPUyhEQVJX
SU4pIHx8IE9TKE9QRU5CU0QpIHx8IE9TKE5FVEJTRCkgfHwgT1MoRlJFRUJTRCkKKyAgICBDU3Ry
aW5nIGZzUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworCisgICAgaWYgKCFm
c1JlcC5kYXRhKCkgfHwgZnNSZXAuZGF0YSgpWzBdID09ICdcMCcpCisgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisKKyAgICBzdHJ1Y3Qgc3RhdCBmaWxlSW5mbzsKKworICAgIGlmIChzdGF0
KGZzUmVwLmRhdGEoKSwgJmZpbGVJbmZvKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KworICAgIHJldHVybiBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoZmlsZUluZm8uc3RfYmlydGh0
aW1lKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHBhdGgpOworICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisjZW5kaWYKK30KKworT3B0aW9uYWw8V2FsbFRpbWU+IGdldEZpbGVNb2RpZmljYXRp
b25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworCisgICAgaWYgKCFmc1JlcC5kYXRhKCkgfHwgZnNS
ZXAuZGF0YSgpWzBdID09ICdcMCcpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAg
ICBzdHJ1Y3Qgc3RhdCBmaWxlSW5mbzsKKworICAgIGlmIChzdGF0KGZzUmVwLmRhdGEoKSwgJmZp
bGVJbmZvKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiBXYWxs
VGltZTo6ZnJvbVJhd1NlY29uZHMoZmlsZUluZm8uc3RfbXRpbWUpOworfQorCitzdGF0aWMgRmls
ZU1ldGFkYXRhOjpUeXBlIHRvRmlsZU1ldGF0YVR5cGUoc3RydWN0IHN0YXQgZmlsZUluZm8pCit7
CisgICAgaWYgKFNfSVNESVIoZmlsZUluZm8uc3RfbW9kZSkpCisgICAgICAgIHJldHVybiBGaWxl
TWV0YWRhdGE6OlR5cGU6OkRpcmVjdG9yeTsKKyAgICBpZiAoU19JU0xOSyhmaWxlSW5mby5zdF9t
b2RlKSkKKyAgICAgICAgcmV0dXJuIEZpbGVNZXRhZGF0YTo6VHlwZTo6U3ltYm9saWNMaW5rOwor
ICAgIHJldHVybiBGaWxlTWV0YWRhdGE6OlR5cGU6OkZpbGU7Cit9CisKK3N0YXRpYyBPcHRpb25h
bDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YVVzaW5nRnVuY3Rpb24oY29uc3QgU3RyaW5nJiBw
YXRoLCBpbnQgKCpzdGF0RnVuYykoY29uc3QgY2hhciosIHN0cnVjdCBzdGF0KikpCit7CisgICAg
Q1N0cmluZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKKworICAgIGlm
ICghZnNSZXAuZGF0YSgpIHx8IGZzUmVwLmRhdGEoKVswXSA9PSAnXDAnKQorICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworCisgICAgc3RydWN0IHN0YXQgZmlsZUluZm87CisgICAgaWYgKHN0
YXRGdW5jKGZzUmVwLmRhdGEoKSwgJmZpbGVJbmZvKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKworICAgIFN0cmluZyBmaWxlbmFtZSA9IHBhdGhHZXRGaWxlTmFtZShwYXRoKTsKKyAg
ICBib29sIGlzSGlkZGVuID0gIWZpbGVuYW1lLmlzRW1wdHkoKSAmJiBmaWxlbmFtZVswXSA9PSAn
Lic7CisgICAgcmV0dXJuIEZpbGVNZXRhZGF0YSB7CisgICAgICAgIFdhbGxUaW1lOjpmcm9tUmF3
U2Vjb25kcyhmaWxlSW5mby5zdF9tdGltZSksCisgICAgICAgIGZpbGVJbmZvLnN0X3NpemUsCisg
ICAgICAgIGlzSGlkZGVuLAorICAgICAgICB0b0ZpbGVNZXRhdGFUeXBlKGZpbGVJbmZvKQorICAg
IH07Cit9CisKK09wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhKGNvbnN0IFN0cmlu
ZyYgcGF0aCkKK3sKKyAgICByZXR1cm4gZmlsZU1ldGFkYXRhVXNpbmdGdW5jdGlvbihwYXRoLCAm
bHN0YXQpOworfQorCitPcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YUZvbGxvd2lu
Z1N5bWxpbmtzKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICByZXR1cm4gZmlsZU1ldGFkYXRh
VXNpbmdGdW5jdGlvbihwYXRoLCAmc3RhdCk7Cit9CisKK2Jvb2wgY3JlYXRlU3ltYm9saWNMaW5r
KGNvbnN0IFN0cmluZyYgdGFyZ2V0UGF0aCwgY29uc3QgU3RyaW5nJiBzeW1ib2xpY0xpbmtQYXRo
KQoreworICAgIENTdHJpbmcgdGFyZ2V0UGF0aEZTUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKHRhcmdldFBhdGgpOworICAgIGlmICghdGFyZ2V0UGF0aEZTUmVwLmRhdGEoKSB8fCB0YXJn
ZXRQYXRoRlNSZXAuZGF0YSgpWzBdID09ICdcMCcpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIENTdHJpbmcgc3ltYm9saWNMaW5rUGF0aEZTUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKHN5bWJvbGljTGlua1BhdGgpOworICAgIGlmICghc3ltYm9saWNMaW5rUGF0aEZTUmVwLmRh
dGEoKSB8fCBzeW1ib2xpY0xpbmtQYXRoRlNSZXAuZGF0YSgpWzBdID09ICdcMCcpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiAhc3ltbGluayh0YXJnZXRQYXRoRlNSZXAuZGF0
YSgpLCBzeW1ib2xpY0xpbmtQYXRoRlNSZXAuZGF0YSgpKTsKK30KKworU3RyaW5nIHBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29tcG9u
ZW50KQoreworICAgIGlmIChwYXRoLmVuZHNXaXRoKCcvJykpCisgICAgICAgIHJldHVybiBwYXRo
ICsgY29tcG9uZW50OworICAgIHJldHVybiBwYXRoICsgIi8iICsgY29tcG9uZW50OworfQorCitT
dHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhTdHJpbmdWaWV3IHBhdGgsIGNvbnN0IFZl
Y3RvcjxTdHJpbmdWaWV3PiYgY29tcG9uZW50cykKK3sKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxk
ZXI7CisgICAgYnVpbGRlci5hcHBlbmQocGF0aCk7CisgICAgZm9yIChhdXRvJiBjb21wb25lbnQg
OiBjb21wb25lbnRzKSB7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcvJyk7CisgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKGNvbXBvbmVudCk7CisgICAgfQorICAgIHJldHVybiBidWlsZGVyLnRvU3Ry
aW5nKCk7Cit9CisKK2Jvb2wgbWFrZUFsbERpcmVjdG9yaWVzKGNvbnN0IFN0cmluZyYgcGF0aCkK
K3sKKyAgICBDU3RyaW5nIGZ1bGxQYXRoID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgp
OworICAgIGlmICghYWNjZXNzKGZ1bGxQYXRoLmRhdGEoKSwgRl9PSykpCisgICAgICAgIHJldHVy
biB0cnVlOworCisgICAgY2hhciogcCA9IGZ1bGxQYXRoLm11dGFibGVEYXRhKCkgKyAxOworICAg
IGludCBsZW5ndGggPSBmdWxsUGF0aC5sZW5ndGgoKTsKKworICAgIGlmIChwW2xlbmd0aCAtIDFd
ID09ICcvJykKKyAgICAgICAgcFtsZW5ndGggLSAxXSA9ICdcMCc7CisgICAgZm9yICg7ICpwOyAr
K3ApIHsKKyAgICAgICAgaWYgKCpwID09ICcvJykgeworICAgICAgICAgICAgKnAgPSAnXDAnOwor
ICAgICAgICAgICAgaWYgKGFjY2VzcyhmdWxsUGF0aC5kYXRhKCksIEZfT0spKSB7CisgICAgICAg
ICAgICAgICAgaWYgKG1rZGlyKGZ1bGxQYXRoLmRhdGEoKSwgU19JUldYVSkpCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICpwID0g
Jy8nOworICAgICAgICB9CisgICAgfQorICAgIGlmIChhY2Nlc3MoZnVsbFBhdGguZGF0YSgpLCBG
X09LKSkgeworICAgICAgICBpZiAobWtkaXIoZnVsbFBhdGguZGF0YSgpLCBTX0lSV1hVKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
U3RyaW5nIHBhdGhHZXRGaWxlTmFtZShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgcmV0dXJu
IHBhdGguc3Vic3RyaW5nKHBhdGgucmV2ZXJzZUZpbmQoJy8nKSArIDEpOworfQorCitTdHJpbmcg
ZGlyZWN0b3J5TmFtZShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgQ1N0cmluZyBmc1JlcCA9
IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKKworICAgIGlmICghZnNSZXAuZGF0YSgp
IHx8IGZzUmVwLmRhdGEoKVswXSA9PSAnXDAnKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisK
KyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChkaXJuYW1lKGZzUmVwLm11dGFibGVEYXRhKCkp
KTsKK30KKworVmVjdG9yPFN0cmluZz4gbGlzdERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgs
IGNvbnN0IFN0cmluZyYgZmlsdGVyKQoreworICAgIFZlY3RvcjxTdHJpbmc+IGVudHJpZXM7Cisg
ICAgQ1N0cmluZyBjcGF0aCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKKyAgICBD
U3RyaW5nIGNmaWx0ZXIgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsdGVyKTsKKyAgICBE
SVIqIGRpciA9IG9wZW5kaXIoY3BhdGguZGF0YSgpKTsKKyAgICBpZiAoZGlyKSB7CisgICAgICAg
IHN0cnVjdCBkaXJlbnQqIGRwOworICAgICAgICB3aGlsZSAoKGRwID0gcmVhZGRpcihkaXIpKSkg
eworICAgICAgICAgICAgY29uc3QgY2hhciogbmFtZSA9IGRwLT5kX25hbWU7CisgICAgICAgICAg
ICBpZiAoIXN0cmNtcChuYW1lLCAiLiIpIHx8ICFzdHJjbXAobmFtZSwgIi4uIikpCisgICAgICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAoZm5tYXRjaChjZmlsdGVyLmRhdGEo
KSwgbmFtZSwgMCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBjaGFy
IGZpbGVQYXRoW1BBVEhfTUFYXTsKKyAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxpbnQ+KHNp
emVvZihmaWxlUGF0aCkgLSAxKSA8IHNucHJpbnRmKGZpbGVQYXRoLCBzaXplb2YoZmlsZVBhdGgp
LCAiJXMvJXMiLCBjcGF0aC5kYXRhKCksIG5hbWUpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVl
OyAvLyBidWZmZXIgb3ZlcmZsb3cKKworICAgICAgICAgICAgYXV0byBzdHJpbmcgPSBzdHJpbmdG
cm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVQYXRoKTsKKworICAgICAgICAgICAgLy8g
U29tZSBmaWxlIHN5c3RlbSByZXByZXNlbnRhdGlvbnMgY2Fubm90IGJlIHJlcHJlc2VudGVkIGFz
IGEgVVRGLTE2IHN0cmluZywKKyAgICAgICAgICAgIC8vIHNvIHRoaXMgc3RyaW5nIG1pZ2h0IGJl
IG51bGwuCisgICAgICAgICAgICBpZiAoIXN0cmluZy5pc051bGwoKSkKKyAgICAgICAgICAgICAg
ICBlbnRyaWVzLmFwcGVuZChXVEZNb3ZlKHN0cmluZykpOworICAgICAgICB9CisgICAgICAgIGNs
b3NlZGlyKGRpcik7CisgICAgfQorICAgIHJldHVybiBlbnRyaWVzOworfQorCisjaWYgIVBMQVRG
T1JNKENPQ09BKQorU3RyaW5nIHN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29u
c3QgY2hhciogcGF0aCkKK3sKKyAgICBpZiAoIXBhdGgpCisgICAgICAgIHJldHVybiBTdHJpbmco
KTsKKworICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KHBhdGgpOworfQorCitDU3RyaW5nIGZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgcmV0dXJu
IHBhdGgudXRmOCgpOworfQorCitib29sIG1vdmVGaWxlKGNvbnN0IFN0cmluZyYgb2xkUGF0aCwg
Y29uc3QgU3RyaW5nJiBuZXdQYXRoKQoreworICAgIGF1dG8gb2xkRmlsZW5hbWUgPSBmaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24ob2xkUGF0aCk7CisgICAgaWYgKG9sZEZpbGVuYW1lLmlzTnVsbCgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIG5ld0ZpbGVuYW1lID0gZmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKG5ld1BhdGgpOworICAgIGlmIChuZXdGaWxlbmFtZS5pc051bGwo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHJlbmFtZShvbGRGaWxlbmFt
ZS5kYXRhKCksIG5ld0ZpbGVuYW1lLmRhdGEoKSkgIT0gLTE7Cit9CisKK2Jvb2wgZ2V0Vm9sdW1l
RnJlZVNwYWNlKGNvbnN0IFN0cmluZyYgcGF0aCwgdWludDY0X3QmIGZyZWVTcGFjZSkKK3sKKyAg
ICBzdHJ1Y3Qgc3RhdHZmcyBmaWxlU3lzdGVtU3RhdDsKKyAgICBpZiAoc3RhdHZmcyhmaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpLCAmZmlsZVN5c3RlbVN0YXQpKSB7CisgICAg
ICAgIGZyZWVTcGFjZSA9IGZpbGVTeXN0ZW1TdGF0LmZfYmF2YWlsICogZmlsZVN5c3RlbVN0YXQu
Zl9mcnNpemU7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7
Cit9CisjZW5kaWYKKworI2lmICFPUyhEQVJXSU4pCitTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUo
Y29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKQoreworICAg
IGNoYXIgYnVmZmVyW1BBVEhfTUFYXTsKKyAgICBjb25zdCBjaGFyKiB0bXBEaXIgPSBnZXRlbnYo
IlRNUERJUiIpOworCisgICAgaWYgKCF0bXBEaXIpCisgICAgICAgIHRtcERpciA9ICIvdG1wIjsK
KworICAgIGlmIChzbnByaW50ZihidWZmZXIsIFBBVEhfTUFYLCAiJXMvJXNYWFhYWFgiLCB0bXBE
aXIsIHByZWZpeC51dGY4KCkuZGF0YSgpKSA+PSBQQVRIX01BWCkKKyAgICAgICAgZ290byBlbmQ7
CisKKyAgICBoYW5kbGUgPSBta3N0ZW1wKGJ1ZmZlcik7CisgICAgaWYgKGhhbmRsZSA8IDApCisg
ICAgICAgIGdvdG8gZW5kOworCisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyKTsK
KworZW5kOgorICAgIGhhbmRsZSA9IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7CisgICAgcmV0
dXJuIFN0cmluZygpOworfQorI2VuZGlmCisKK2Jvb2wgaGFyZExpbmtPckNvcHlGaWxlKGNvbnN0
IFN0cmluZyYgc291cmNlLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uKQoreworICAgIGlmIChz
b3VyY2UuaXNFbXB0eSgpIHx8IGRlc3RpbmF0aW9uLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgQ1N0cmluZyBmc1NvdXJjZSA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihzb3VyY2UpOworICAgIGlmICghZnNTb3VyY2UuZGF0YSgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBDU3RyaW5nIGZzRGVzdGluYXRpb24gPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oZGVzdGluYXRpb24pOworICAgIGlmICghZnNEZXN0aW5hdGlvbi5kYXRhKCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGlmICghbGluayhmc1NvdXJjZS5kYXRhKCksIGZzRGVzdGlu
YXRpb24uZGF0YSgpKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBIYXJkIGxpbmsg
ZmFpbGVkLiBQZXJmb3JtIGEgY29weSBpbnN0ZWFkLgorICAgIGF1dG8gaGFuZGxlID0gb3Blbihm
c0Rlc3RpbmF0aW9uLmRhdGEoKSwgT19XUk9OTFkgfCBPX0NSRUFUIHwgT19FWENMLCAwNjY2KTsK
KyAgICBpZiAoaGFuZGxlID09IC0xKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBib29s
IGFwcGVuZFJlc3VsdCA9IGFwcGVuZEZpbGVDb250ZW50c1RvRmlsZUhhbmRsZShzb3VyY2UsIGhh
bmRsZSk7CisgICAgY2xvc2UoaGFuZGxlKTsKKworICAgIC8vIElmIHRoZSBjb3B5IGZhaWxlZCwg
ZGVsZXRlIHRoZSB1bnVzYWJsZSBmaWxlLgorICAgIGlmICghYXBwZW5kUmVzdWx0KQorICAgICAg
ICB1bmxpbmsoZnNEZXN0aW5hdGlvbi5kYXRhKCkpOworCisgICAgcmV0dXJuIGFwcGVuZFJlc3Vs
dDsKK30KKworT3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0IENTdHJpbmcm
IGZzRmlsZSkKK3sKKyAgICBzdHJ1Y3Qgc3RhdCBmaWxlU3RhdDsKKyAgICBpZiAoc3RhdChmc0Zp
bGUuZGF0YSgpLCAmZmlsZVN0YXQpID09IC0xKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworCisgICAgcmV0dXJuIGZpbGVTdGF0LnN0X2RldjsKK30KKworU3RyaW5nIHJlYWxQYXRoKGNv
bnN0IFN0cmluZyYgZmlsZVBhdGgpCit7CisgICAgQ1N0cmluZyBmc1JlcCA9IGZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihmaWxlUGF0aCk7CisgICAgY2hhciByZXNvbHZlZE5hbWVbUEFUSF9NQVhd
OworICAgIGNvbnN0IGNoYXIqIHJlc3VsdCA9IHJlYWxwYXRoKGZzUmVwLmRhdGEoKSwgcmVzb2x2
ZWROYW1lKTsKKyAgICByZXR1cm4gcmVzdWx0ID8gU3RyaW5nOjpmcm9tVVRGOChyZXN1bHQpIDog
ZmlsZVBhdGg7Cit9CisKK30gLy8gbmFtZXNwYWNlIEZpbGVTeXN0ZW0KK30gLy8gbmFtZXNwYWNl
IFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvc3BpL21hYy9NZXRhZGF0YVNQSS5oIGIv
U291cmNlL1dURi93dGYvc3BpL21hYy9NZXRhZGF0YVNQSS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgxNTU0N2M2
Yjg1MTBlMzA2MThlMjI4MmFkNWI3ODQwMTZjYTM3MjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9zcGkvbWFjL01ldGFkYXRhU1BJLmgKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKworI2lu
Y2x1ZGUgPENvcmVTZXJ2aWNlcy9Db3JlU2VydmljZXNQcml2Lmg+CisKKyNlbmRpZgorCitXVEZf
RVhURVJOX0NfQkVHSU4KKworQm9vbGVhbiBNREl0ZW1TZXRBdHRyaWJ1dGUoTURJdGVtUmVmLCBD
RlN0cmluZ1JlZiBuYW1lLCBDRlR5cGVSZWYgYXR0cik7CisKK1dURl9FWFRFUk5fQ19FTkQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcCBiL1NvdXJjZS9X
VEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMTY0NzJjZGQzZjViYTA3
N2I5NzI0NTYwMDhhNDk0MDk0NmVlZGU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93
dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCkBAIC0wLDAgKzEsNTg2IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA3LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSwgTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFw
cGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CisKKyNpbmNsdWRlIDxpby5oPgorI2lu
Y2x1ZGUgPHNobG9iai5oPgorI2luY2x1ZGUgPHNobHdhcGkuaD4KKyNpbmNsdWRlIDxzeXMvc3Rh
dC5oPgorI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY2Fs
bHlSYW5kb21OdW1iZXIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZU1ldGFkYXRhLmg+CisjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hh
clN0cmluZ0V4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi93aW4vUGF0aFdhbGtlci5oPgorCituYW1l
c3BhY2UgV1RGIHsKKworbmFtZXNwYWNlIEZpbGVTeXN0ZW0geworCitzdGF0aWMgY29uc3QgVUxP
TkdMT05HIGtTZWNvbmRzRnJvbUZpbGVUaW1lVG9UaW1ldCA9IDExNjQ0NDczNjAwOworCitzdGF0
aWMgYm9vbCBnZXRGaW5kRGF0YShTdHJpbmcgcGF0aCwgV0lOMzJfRklORF9EQVRBVyYgZmluZERh
dGEpCit7CisgICAgSEFORExFIGhhbmRsZSA9IEZpbmRGaXJzdEZpbGVXKHN0cmluZ1RvTnVsbFRl
cm1pbmF0ZWRXQ2hhcihwYXRoKS5kYXRhKCksICZmaW5kRGF0YSk7CisgICAgaWYgKGhhbmRsZSA9
PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIEZpbmRD
bG9zZShoYW5kbGUpOworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgYm9vbCBnZXRGaWxl
U2l6ZUZyb21GaW5kRGF0YShjb25zdCBXSU4zMl9GSU5EX0RBVEFXJiBmaW5kRGF0YSwgbG9uZyBs
b25nJiBzaXplKQoreworICAgIFVMQVJHRV9JTlRFR0VSIGZpbGVTaXplOworICAgIGZpbGVTaXpl
LkhpZ2hQYXJ0ID0gZmluZERhdGEubkZpbGVTaXplSGlnaDsKKyAgICBmaWxlU2l6ZS5Mb3dQYXJ0
ID0gZmluZERhdGEubkZpbGVTaXplTG93OworCisgICAgaWYgKGZpbGVTaXplLlF1YWRQYXJ0ID4g
c3RhdGljX2Nhc3Q8VUxPTkdMT05HPihzdGQ6Om51bWVyaWNfbGltaXRzPGxvbmcgbG9uZz46Om1h
eCgpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgc2l6ZSA9IGZpbGVTaXplLlF1YWRQ
YXJ0OworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgYm9vbCBnZXRGaWxlU2l6ZUZyb21C
eUhhbmRsZUZpbGVJbmZvcm1hdGlvblN0cnVjdHVyZShjb25zdCBCWV9IQU5ETEVfRklMRV9JTkZP
Uk1BVElPTiYgZmlsZUluZm9ybWF0aW9uLCBsb25nIGxvbmcmIHNpemUpCit7CisgICAgVUxBUkdF
X0lOVEVHRVIgZmlsZVNpemU7CisgICAgZmlsZVNpemUuSGlnaFBhcnQgPSBmaWxlSW5mb3JtYXRp
b24ubkZpbGVTaXplSGlnaDsKKyAgICBmaWxlU2l6ZS5Mb3dQYXJ0ID0gZmlsZUluZm9ybWF0aW9u
Lm5GaWxlU2l6ZUxvdzsKKworICAgIGlmIChmaWxlU2l6ZS5RdWFkUGFydCA+IHN0YXRpY19jYXN0
PFVMT05HTE9ORz4oc3RkOjpudW1lcmljX2xpbWl0czxsb25nIGxvbmc+OjptYXgoKSkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIHNpemUgPSBmaWxlU2l6ZS5RdWFkUGFydDsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIHZvaWQgZ2V0RmlsZUNyZWF0aW9uVGltZUZyb21GaW5k
RGF0YShjb25zdCBXSU4zMl9GSU5EX0RBVEFXJiBmaW5kRGF0YSwgdGltZV90JiB0aW1lKQorewor
ICAgIFVMQVJHRV9JTlRFR0VSIGZpbGVUaW1lOworICAgIGZpbGVUaW1lLkhpZ2hQYXJ0ID0gZmlu
ZERhdGEuZnRDcmVhdGlvblRpbWUuZHdIaWdoRGF0ZVRpbWU7CisgICAgZmlsZVRpbWUuTG93UGFy
dCA9IGZpbmREYXRhLmZ0Q3JlYXRpb25UaW1lLmR3TG93RGF0ZVRpbWU7CisKKyAgICAvLyBJbmZv
cm1hdGlvbiBhYm91dCBjb252ZXJ0aW5nIHRpbWVfdCB0byBGaWxlVGltZSBpcyBhdmFpbGFibGUg
YXQgaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L21zNzI0MjI4JTI4dj12
cy44NSUyOS5hc3B4CisgICAgdGltZSA9IGZpbGVUaW1lLlF1YWRQYXJ0IC8gMTAwMDAwMDAgLSBr
U2Vjb25kc0Zyb21GaWxlVGltZVRvVGltZXQ7Cit9CisKKworc3RhdGljIHZvaWQgZ2V0RmlsZU1v
ZGlmaWNhdGlvblRpbWVGcm9tRmluZERhdGEoY29uc3QgV0lOMzJfRklORF9EQVRBVyYgZmluZERh
dGEsIHRpbWVfdCYgdGltZSkKK3sKKyAgICBVTEFSR0VfSU5URUdFUiBmaWxlVGltZTsKKyAgICBm
aWxlVGltZS5IaWdoUGFydCA9IGZpbmREYXRhLmZ0TGFzdFdyaXRlVGltZS5kd0hpZ2hEYXRlVGlt
ZTsKKyAgICBmaWxlVGltZS5Mb3dQYXJ0ID0gZmluZERhdGEuZnRMYXN0V3JpdGVUaW1lLmR3TG93
RGF0ZVRpbWU7CisKKyAgICAvLyBJbmZvcm1hdGlvbiBhYm91dCBjb252ZXJ0aW5nIHRpbWVfdCB0
byBGaWxlVGltZSBpcyBhdmFpbGFibGUgYXQgaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11
cy9saWJyYXJ5L21zNzI0MjI4JTI4dj12cy44NSUyOS5hc3B4CisgICAgdGltZSA9IGZpbGVUaW1l
LlF1YWRQYXJ0IC8gMTAwMDAwMDAgLSBrU2Vjb25kc0Zyb21GaWxlVGltZVRvVGltZXQ7Cit9CisK
K2Jvb2wgZ2V0RmlsZVNpemUoY29uc3QgU3RyaW5nJiBwYXRoLCBsb25nIGxvbmcmIHNpemUpCit7
CisgICAgV0lOMzJfRklORF9EQVRBVyBmaW5kRGF0YTsKKyAgICBpZiAoIWdldEZpbmREYXRhKHBh
dGgsIGZpbmREYXRhKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGdldEZp
bGVTaXplRnJvbUZpbmREYXRhKGZpbmREYXRhLCBzaXplKTsKK30KKworYm9vbCBnZXRGaWxlU2l6
ZShQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRsZSwgbG9uZyBsb25nJiBzaXplKQoreworICAg
IEJZX0hBTkRMRV9GSUxFX0lORk9STUFUSU9OIGZpbGVJbmZvcm1hdGlvbjsKKyAgICBpZiAoITo6
R2V0RmlsZUluZm9ybWF0aW9uQnlIYW5kbGUoZmlsZUhhbmRsZSwgJmZpbGVJbmZvcm1hdGlvbikp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBnZXRGaWxlU2l6ZUZyb21CeUhh
bmRsZUZpbGVJbmZvcm1hdGlvblN0cnVjdHVyZShmaWxlSW5mb3JtYXRpb24sIHNpemUpOworfQor
CitPcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5n
JiBwYXRoKQoreworICAgIFdJTjMyX0ZJTkRfREFUQVcgZmluZERhdGE7CisgICAgaWYgKCFnZXRG
aW5kRGF0YShwYXRoLCBmaW5kRGF0YSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisK
KyAgICB0aW1lX3QgdGltZSA9IDA7CisgICAgZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWVGcm9tRmlu
ZERhdGEoZmluZERhdGEsIHRpbWUpOworICAgIHJldHVybiBXYWxsVGltZTo6ZnJvbVJhd1NlY29u
ZHModGltZSk7Cit9CisKK09wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlQ3JlYXRpb25UaW1lKGNv
bnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBXSU4zMl9GSU5EX0RBVEFXIGZpbmREYXRhOworICAg
IGlmICghZ2V0RmluZERhdGEocGF0aCwgZmluZERhdGEpKQorICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworCisgICAgdGltZV90IHRpbWUgPSAwOworICAgIGdldEZpbGVDcmVhdGlvblRpbWVG
cm9tRmluZERhdGEoZmluZERhdGEsIHRpbWUpOworICAgIHJldHVybiBXYWxsVGltZTo6ZnJvbVJh
d1NlY29uZHModGltZSk7Cit9CisKK3N0YXRpYyBTdHJpbmcgZ2V0RmluYWxQYXRoTmFtZShjb25z
dCBTdHJpbmcmIHBhdGgpCit7CisgICAgYXV0byBoYW5kbGUgPSBvcGVuRmlsZShwYXRoLCBGaWxl
T3Blbk1vZGU6OlJlYWQpOworICAgIGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUpKQorICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBWZWN0b3I8VUNoYXI+IGJ1ZmZlcihNQVhfUEFUSCk7
CisgICAgaWYgKDo6R2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlVyhoYW5kbGUsIGJ1ZmZlci5kYXRh
KCksIGJ1ZmZlci5zaXplKCksIFZPTFVNRV9OQU1FX05UKSA+PSBNQVhfUEFUSCkgeworICAgICAg
ICBjbG9zZUZpbGUoaGFuZGxlKTsKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgIH0KKyAg
ICBjbG9zZUZpbGUoaGFuZGxlKTsKKworICAgIGJ1ZmZlci5zaHJpbmsod2NzbGVuKGJ1ZmZlci5k
YXRhKCkpKTsKKyAgICByZXR1cm4gU3RyaW5nOjphZG9wdChXVEZNb3ZlKGJ1ZmZlcikpOworfQor
CitzdGF0aWMgaW5saW5lIGJvb2wgaXNTeW1ib2xpY0xpbmsoV0lOMzJfRklORF9EQVRBVyBmaW5k
RGF0YSkKK3sKKyAgICByZXR1cm4gZmluZERhdGEuZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRU
UklCVVRFX1JFUEFSU0VfUE9JTlQgJiYgZmluZERhdGEuZHdSZXNlcnZlZDAgPT0gSU9fUkVQQVJT
RV9UQUdfU1lNTElOSzsKK30KKworc3RhdGljIEZpbGVNZXRhZGF0YTo6VHlwZSB0b0ZpbGVNZXRh
ZGF0YVR5cGUoV0lOMzJfRklORF9EQVRBVyBmaW5kRGF0YSkKK3sKKyAgICBpZiAoZmluZERhdGEu
ZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWSkKKyAgICAgICAgcmV0
dXJuIEZpbGVNZXRhZGF0YTo6VHlwZTo6RGlyZWN0b3J5OworICAgIGlmIChpc1N5bWJvbGljTGlu
ayhmaW5kRGF0YSkpCisgICAgICAgIHJldHVybiBGaWxlTWV0YWRhdGE6OlR5cGU6OlN5bWJvbGlj
TGluazsKKyAgICByZXR1cm4gRmlsZU1ldGFkYXRhOjpUeXBlOjpGaWxlOworfQorCitzdGF0aWMg
T3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaW5kRGF0YVRvRmlsZU1ldGFkYXRhKFdJTjMyX0ZJTkRf
REFUQVcgZmluZERhdGEpCit7CisgICAgbG9uZyBsb25nIGxlbmd0aDsKKyAgICBpZiAoIWdldEZp
bGVTaXplRnJvbUZpbmREYXRhKGZpbmREYXRhLCBsZW5ndGgpKQorICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworCisgICAgdGltZV90IG1vZGlmaWNhdGlvblRpbWU7CisgICAgZ2V0RmlsZU1v
ZGlmaWNhdGlvblRpbWVGcm9tRmluZERhdGEoZmluZERhdGEsIG1vZGlmaWNhdGlvblRpbWUpOwor
CisgICAgcmV0dXJuIEZpbGVNZXRhZGF0YSB7CisgICAgICAgIFdhbGxUaW1lOjpmcm9tUmF3U2Vj
b25kcyhtb2RpZmljYXRpb25UaW1lKSwKKyAgICAgICAgbGVuZ3RoLAorICAgICAgICBzdGF0aWNf
Y2FzdDxib29sPihmaW5kRGF0YS5kd0ZpbGVBdHRyaWJ1dGVzICYgRklMRV9BVFRSSUJVVEVfSElE
REVOKSwKKyAgICAgICAgdG9GaWxlTWV0YWRhdGFUeXBlKGZpbmREYXRhKQorICAgIH07Cit9CisK
K09wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYgcGF0aCkK
K3sKKyAgICBXSU4zMl9GSU5EX0RBVEFXIGZpbmREYXRhOworICAgIGlmICghZ2V0RmluZERhdGEo
cGF0aCwgZmluZERhdGEpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0
dXJuIGZpbmREYXRhVG9GaWxlTWV0YWRhdGEoZmluZERhdGEpOworfQorCitPcHRpb25hbDxGaWxl
TWV0YWRhdGE+IGZpbGVNZXRhZGF0YUZvbGxvd2luZ1N5bWxpbmtzKGNvbnN0IFN0cmluZyYgcGF0
aCkKK3sKKyAgICBXSU4zMl9GSU5EX0RBVEFXIGZpbmREYXRhOworICAgIGlmICghZ2V0RmluZERh
dGEocGF0aCwgZmluZERhdGEpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAg
aWYgKGlzU3ltYm9saWNMaW5rKGZpbmREYXRhKSkgeworICAgICAgICBTdHJpbmcgdGFyZ2V0UGF0
aCA9IGdldEZpbmFsUGF0aE5hbWUocGF0aCk7CisgICAgICAgIGlmICh0YXJnZXRQYXRoLmlzTnVs
bCgpKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgaWYgKCFnZXRG
aW5kRGF0YSh0YXJnZXRQYXRoLCBmaW5kRGF0YSkpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgIH0KKworICAgIHJldHVybiBmaW5kRGF0YVRvRmlsZU1ldGFkYXRhKGZpbmRE
YXRhKTsKK30KKworYm9vbCBjcmVhdGVTeW1ib2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQ
YXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGljTGlua1BhdGgpCit7CisgICAgcmV0dXJuICE6OkNy
ZWF0ZVN5bWJvbGljTGlua1coc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKHN5bWJvbGljTGlu
a1BhdGgpLmRhdGEoKSwgc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKHRhcmdldFBhdGgpLmRh
dGEoKSwgMCk7Cit9CisKK2Jvb2wgZmlsZUV4aXN0cyhjb25zdCBTdHJpbmcmIHBhdGgpCit7Cisg
ICAgV0lOMzJfRklORF9EQVRBVyBmaW5kRGF0YTsKKyAgICByZXR1cm4gZ2V0RmluZERhdGEocGF0
aCwgZmluZERhdGEpOworfQorCitib29sIGRlbGV0ZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQor
eworICAgIFN0cmluZyBmaWxlbmFtZSA9IHBhdGg7CisgICAgcmV0dXJuICEhRGVsZXRlRmlsZVco
c3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGZpbGVuYW1lKS5kYXRhKCkpOworfQorCitib29s
IGRlbGV0ZUVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBTdHJpbmcg
ZmlsZW5hbWUgPSBwYXRoOworICAgIHJldHVybiAhIVJlbW92ZURpcmVjdG9yeVcoc3RyaW5nVG9O
dWxsVGVybWluYXRlZFdDaGFyKGZpbGVuYW1lKS5kYXRhKCkpOworfQorCitib29sIG1vdmVGaWxl
KGNvbnN0IFN0cmluZyYgb2xkUGF0aCwgY29uc3QgU3RyaW5nJiBuZXdQYXRoKQoreworICAgIFN0
cmluZyBvbGRGaWxlbmFtZSA9IG9sZFBhdGg7CisgICAgU3RyaW5nIG5ld0ZpbGVuYW1lID0gbmV3
UGF0aDsKKyAgICByZXR1cm4gISE6Ok1vdmVGaWxlRXgoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdD
aGFyKG9sZEZpbGVuYW1lKS5kYXRhKCksIHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihuZXdG
aWxlbmFtZSkuZGF0YSgpLCBNT1ZFRklMRV9DT1BZX0FMTE9XRUQgfCBNT1ZFRklMRV9SRVBMQUNF
X0VYSVNUSU5HKTsKK30KKworU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChjb25zdCBT
dHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29tcG9uZW50KQoreworICAgIFZlY3RvcjxVQ2hh
cj4gYnVmZmVyKE1BWF9QQVRIKTsKKworICAgIGlmIChwYXRoLmxlbmd0aCgpICsgMSA+IGJ1ZmZl
ci5zaXplKCkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIFN0cmluZ1ZpZXcocGF0
aCkuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoYnVmZmVyLmRhdGEoKSk7CisgICAgYnVmZmVy
W3BhdGgubGVuZ3RoKCldID0gJ1wwJzsKKworICAgIGlmICghUGF0aEFwcGVuZFcoYnVmZmVyLmRh
dGEoKSwgc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGNvbXBvbmVudCkuZGF0YSgpKSkKKyAg
ICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgYnVmZmVyLnNocmluayh3Y3NsZW4oYnVmZmVy
LmRhdGEoKSkpOworCisgICAgcmV0dXJuIFN0cmluZzo6YWRvcHQoV1RGTW92ZShidWZmZXIpKTsK
K30KKworU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMoU3RyaW5nVmlldyBwYXRoLCBj
b25zdCBWZWN0b3I8U3RyaW5nVmlldz4mIGNvbXBvbmVudHMpCit7CisgICAgU3RyaW5nIHJlc3Vs
dCA9IHBhdGgudG9TdHJpbmcoKTsKKyAgICBmb3IgKGF1dG8mIGNvbXBvbmVudCA6IGNvbXBvbmVu
dHMpCisgICAgICAgIHJlc3VsdCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZXN1bHQsIGNv
bXBvbmVudC50b1N0cmluZygpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisjaWYgIVVTRShD
RikKKworQ1N0cmluZyBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBwYXRo
KQoreworICAgIGF1dG8gdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzID0gcGF0aC51cGNvbnZlcnRlZENo
YXJhY3RlcnMoKTsKKworICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzID0gdXBjb252ZXJ0ZWRD
aGFyYWN0ZXJzOworICAgIGludCBzaXplID0gV2lkZUNoYXJUb011bHRpQnl0ZShDUF9BQ1AsIDAs
IGNoYXJhY3RlcnMsIHBhdGgubGVuZ3RoKCksIDAsIDAsIDAsIDApIC0gMTsKKworICAgIGNoYXIq
IGJ1ZmZlcjsKKyAgICBDU3RyaW5nIHN0cmluZyA9IENTdHJpbmc6Om5ld1VuaW5pdGlhbGl6ZWQo
c2l6ZSwgYnVmZmVyKTsKKworICAgIFdpZGVDaGFyVG9NdWx0aUJ5dGUoQ1BfQUNQLCAwLCBjaGFy
YWN0ZXJzLCBwYXRoLmxlbmd0aCgpLCBidWZmZXIsIHNpemUsIDAsIDApOworCisgICAgcmV0dXJu
IHN0cmluZzsKK30KKworI2VuZGlmIC8vICFVU0UoQ0YpCisKK2Jvb2wgbWFrZUFsbERpcmVjdG9y
aWVzKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBTdHJpbmcgZnVsbFBhdGggPSBwYXRoOwor
ICAgIGlmIChTSENyZWF0ZURpcmVjdG9yeUV4KDAsIHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hh
cihmdWxsUGF0aCkuZGF0YSgpLCAwKSAhPSBFUlJPUl9TVUNDRVNTKSB7CisgICAgICAgIERXT1JE
IGVycm9yID0gR2V0TGFzdEVycm9yKCk7CisgICAgICAgIGlmIChlcnJvciAhPSBFUlJPUl9GSUxF
X0VYSVNUUyAmJiBlcnJvciAhPSBFUlJPUl9BTFJFQURZX0VYSVNUUykgeworICAgICAgICAgICAg
TE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIHBhdGggJXMiLCBwYXRoLmFzY2lpKCkuZGF0YSgp
KTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworU3RyaW5nIGhvbWVEaXJlY3RvcnlQYXRoKCkKK3sKKyAgICByZXR1cm4g
IiI7Cit9CisKK1N0cmluZyBwYXRoR2V0RmlsZU5hbWUoY29uc3QgU3RyaW5nJiBwYXRoKQorewor
ICAgIHJldHVybiBudWxsVGVybWluYXRlZFdDaGFyVG9TdHJpbmcoOjpQYXRoRmluZEZpbGVOYW1l
KHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihwYXRoKS5kYXRhKCkpKTsKK30KKworU3RyaW5n
IGRpcmVjdG9yeU5hbWUoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIFN0cmluZyBuYW1lID0g
cGF0aC5sZWZ0KHBhdGgubGVuZ3RoKCkgLSBwYXRoR2V0RmlsZU5hbWUocGF0aCkubGVuZ3RoKCkp
OworICAgIGlmIChuYW1lLmNoYXJhY3RlclN0YXJ0aW5nQXQobmFtZS5sZW5ndGgoKSAtIDEpID09
ICdcXCcpIHsKKyAgICAgICAgLy8gUmVtb3ZlIGFueSB0cmFpbGluZyAiXCIuCisgICAgICAgIG5h
bWUudHJ1bmNhdGUobmFtZS5sZW5ndGgoKSAtIDEpOworICAgIH0KKyAgICByZXR1cm4gbmFtZTsK
K30KKworc3RhdGljIFN0cmluZyBidW5kbGVOYW1lKCkKK3sKKyAgICBzdGF0aWMgY29uc3QgTmV2
ZXJEZXN0cm95ZWQ8U3RyaW5nPiBuYW1lID0gW10geworICAgICAgICBTdHJpbmcgbmFtZSB7ICJX
ZWJLaXQiX3MgfTsKKworI2lmIFVTRShDRikKKyAgICAgICAgaWYgKENGQnVuZGxlUmVmIGJ1bmRs
ZSA9IENGQnVuZGxlR2V0TWFpbkJ1bmRsZSgpKSB7CisgICAgICAgICAgICBpZiAoQ0ZUeXBlUmVm
IGJ1bmRsZUV4ZWN1dGFibGUgPSBDRkJ1bmRsZUdldFZhbHVlRm9ySW5mb0RpY3Rpb25hcnlLZXko
YnVuZGxlLCBrQ0ZCdW5kbGVFeGVjdXRhYmxlS2V5KSkgeworICAgICAgICAgICAgICAgIGlmIChD
RkdldFR5cGVJRChidW5kbGVFeGVjdXRhYmxlKSA9PSBDRlN0cmluZ0dldFR5cGVJRCgpKQorICAg
ICAgICAgICAgICAgICAgICBuYW1lID0gcmVpbnRlcnByZXRfY2FzdDxDRlN0cmluZ1JlZj4oYnVu
ZGxlRXhlY3V0YWJsZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyNlbmRpZgorCisgICAg
ICAgIHJldHVybiBuYW1lOworICAgIH0oKTsKKworICAgIHJldHVybiBuYW1lOworfQorCitzdGF0
aWMgU3RyaW5nIHN0b3JhZ2VEaXJlY3RvcnkoRFdPUkQgcGF0aElkZW50aWZpZXIpCit7CisgICAg
VmVjdG9yPFVDaGFyPiBidWZmZXIoTUFYX1BBVEgpOworICAgIGlmIChGQUlMRUQoU0hHZXRGb2xk
ZXJQYXRoVygwLCBwYXRoSWRlbnRpZmllciB8IENTSURMX0ZMQUdfQ1JFQVRFLCAwLCAwLCBidWZm
ZXIuZGF0YSgpKSkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICBidWZmZXIucmVzaXpl
KHdjc2xlbihidWZmZXIuZGF0YSgpKSk7CisgICAgU3RyaW5nIGRpcmVjdG9yeSA9IFN0cmluZzo6
YWRvcHQoV1RGTW92ZShidWZmZXIpKTsKKworICAgIGRpcmVjdG9yeSA9IHBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChkaXJlY3RvcnksICJBcHBsZSBDb21wdXRlclxcIiArIGJ1bmRsZU5hbWUoKSk7
CisgICAgaWYgKCFtYWtlQWxsRGlyZWN0b3JpZXMoZGlyZWN0b3J5KSkKKyAgICAgICAgcmV0dXJu
IFN0cmluZygpOworCisgICAgcmV0dXJuIGRpcmVjdG9yeTsKK30KKworc3RhdGljIFN0cmluZyBj
YWNoZWRTdG9yYWdlRGlyZWN0b3J5KERXT1JEIHBhdGhJZGVudGlmaWVyKQoreworICAgIHN0YXRp
YyBIYXNoTWFwPERXT1JELCBTdHJpbmc+IGRpcmVjdG9yaWVzOworCisgICAgSGFzaE1hcDxEV09S
RCwgU3RyaW5nPjo6aXRlcmF0b3IgaXQgPSBkaXJlY3Rvcmllcy5maW5kKHBhdGhJZGVudGlmaWVy
KTsKKyAgICBpZiAoaXQgIT0gZGlyZWN0b3JpZXMuZW5kKCkpCisgICAgICAgIHJldHVybiBpdC0+
dmFsdWU7CisKKyAgICBTdHJpbmcgZGlyZWN0b3J5ID0gc3RvcmFnZURpcmVjdG9yeShwYXRoSWRl
bnRpZmllcik7CisgICAgZGlyZWN0b3JpZXMuYWRkKHBhdGhJZGVudGlmaWVyLCBkaXJlY3Rvcnkp
OworCisgICAgcmV0dXJuIGRpcmVjdG9yeTsKK30KKworc3RhdGljIFN0cmluZyBnZW5lcmF0ZVRl
bXBvcmFyeVBhdGgoY29uc3QgRnVuY3Rpb248Ym9vbChjb25zdCBTdHJpbmcmKT4mIGFjdGlvbikK
K3sKKyAgICB3Y2hhcl90IHRlbXBQYXRoW01BWF9QQVRIXTsKKyAgICBpbnQgdGVtcFBhdGhMZW5n
dGggPSA6OkdldFRlbXBQYXRoVyhXVEZfQVJSQVlfTEVOR1RIKHRlbXBQYXRoKSwgdGVtcFBhdGgp
OworICAgIGlmICh0ZW1wUGF0aExlbmd0aCA8PSAwIHx8IHRlbXBQYXRoTGVuZ3RoID4gV1RGX0FS
UkFZX0xFTkdUSCh0ZW1wUGF0aCkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIFN0
cmluZyBwcm9wb3NlZFBhdGg7CisgICAgZG8geworICAgICAgICB3Y2hhcl90IHRlbXBGaWxlW10g
PSBMIlhYWFhYWFhYLnRtcCI7IC8vIFVzZSA4LjMgc3R5bGUgbmFtZSAobW9yZSBjaGFyYWN0ZXJz
IGFyZW4ndCBoZWxwZnVsIGR1ZSB0byA4LjMgc2hvcnQgZmlsZSBuYW1lcykKKyAgICAgICAgY29u
c3QgaW50IHJhbmRvbVBhcnRMZW5ndGggPSA4OworICAgICAgICBjcnlwdG9ncmFwaGljYWxseVJh
bmRvbVZhbHVlcyh0ZW1wRmlsZSwgcmFuZG9tUGFydExlbmd0aCAqIHNpemVvZih3Y2hhcl90KSk7
CisKKyAgICAgICAgLy8gTGltaXQgdG8gdmFsaWQgZmlsZXN5c3RlbSBjaGFyYWN0ZXJzLCBhbHNv
IGV4Y2x1ZGluZyBvdGhlcnMgdGhhdCBjb3VsZCBiZSBwcm9ibGVtYXRpYywgbGlrZSBwdW5jdHVh
dGlvbi4KKyAgICAgICAgLy8gZG9uJ3QgaW5jbHVkZSBib3RoIHVwcGVyIGFuZCBsb3dlcmNhc2Ug
c2luY2UgV2luZG93cyBmaWxlIHN5c3RlbXMgYXJlIHR5cGljYWxseSBub3QgY2FzZSBzZW5zaXRp
dmUuCisgICAgICAgIGNvbnN0IGNoYXIgdmFsaWRDaGFyc1tdID0gIjAxMjM0NTY3ODlhYmNkZWZn
aGlqa2xtbm9wcXJzdHV2d3h5eiI7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmFuZG9t
UGFydExlbmd0aDsgKytpKQorICAgICAgICAgICAgdGVtcEZpbGVbaV0gPSB2YWxpZENoYXJzW3Rl
bXBGaWxlW2ldICUgKHNpemVvZih2YWxpZENoYXJzKSAtIDEpXTsKKworICAgICAgICBBU1NFUlQo
d2NzbGVuKHRlbXBGaWxlKSA9PSBXVEZfQVJSQVlfTEVOR1RIKHRlbXBGaWxlKSAtIDEpOworCisg
ICAgICAgIHByb3Bvc2VkUGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChudWxsVGVybWlu
YXRlZFdDaGFyVG9TdHJpbmcodGVtcFBhdGgpLCBudWxsVGVybWluYXRlZFdDaGFyVG9TdHJpbmco
dGVtcEZpbGUpKTsKKyAgICAgICAgaWYgKHByb3Bvc2VkUGF0aC5pc0VtcHR5KCkpCisgICAgICAg
ICAgICBicmVhazsKKyAgICB9IHdoaWxlICghYWN0aW9uKHByb3Bvc2VkUGF0aCkpOworCisgICAg
cmV0dXJuIHByb3Bvc2VkUGF0aDsKK30KKworU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0
IFN0cmluZyYsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKQoreworICAgIGhhbmRsZSA9IElO
VkFMSURfSEFORExFX1ZBTFVFOworCisgICAgU3RyaW5nIHByb3Bvc2VkUGF0aCA9IGdlbmVyYXRl
VGVtcG9yYXJ5UGF0aChbJmhhbmRsZV0oY29uc3QgU3RyaW5nJiBwcm9wb3NlZFBhdGgpIHsKKyAg
ICAgICAgLy8gdXNlIENSRUFURV9ORVcgdG8gYXZvaWQgb3ZlcndyaXRpbmcgYW4gZXhpc3Rpbmcg
ZmlsZSB3aXRoIHRoZSBzYW1lIG5hbWUKKyAgICAgICAgaGFuZGxlID0gOjpDcmVhdGVGaWxlVyhz
dHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIocHJvcG9zZWRQYXRoKS5kYXRhKCksIEdFTkVSSUNf
UkVBRCB8IEdFTkVSSUNfV1JJVEUsIDAsIDAsIENSRUFURV9ORVcsIEZJTEVfQVRUUklCVVRFX05P
Uk1BTCwgMCk7CisKKyAgICAgICAgcmV0dXJuIGlzSGFuZGxlVmFsaWQoaGFuZGxlKSB8fCBHZXRM
YXN0RXJyb3IoKSA9PSBFUlJPUl9BTFJFQURZX0VYSVNUUzsKKyAgICB9KTsKKworICAgIGlmICgh
aXNIYW5kbGVWYWxpZChoYW5kbGUpKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBy
ZXR1cm4gcHJvcG9zZWRQYXRoOworfQorCitQbGF0Zm9ybUZpbGVIYW5kbGUgb3BlbkZpbGUoY29u
c3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUgbW9kZSkKK3sKKyAgICBEV09SRCBkZXNpcmVk
QWNjZXNzID0gMDsKKyAgICBEV09SRCBjcmVhdGlvbkRpc3Bvc2l0aW9uID0gMDsKKyAgICBEV09S
RCBzaGFyZU1vZGUgPSAwOworICAgIHN3aXRjaCAobW9kZSkgeworICAgIGNhc2UgRmlsZU9wZW5N
b2RlOjpSZWFkOgorICAgICAgICBkZXNpcmVkQWNjZXNzID0gR0VORVJJQ19SRUFEOworICAgICAg
ICBjcmVhdGlvbkRpc3Bvc2l0aW9uID0gT1BFTl9FWElTVElORzsKKyAgICAgICAgc2hhcmVNb2Rl
ID0gRklMRV9TSEFSRV9SRUFEOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZpbGVPcGVuTW9k
ZTo6V3JpdGU6CisgICAgICAgIGRlc2lyZWRBY2Nlc3MgPSBHRU5FUklDX1dSSVRFOworICAgICAg
ICBjcmVhdGlvbkRpc3Bvc2l0aW9uID0gQ1JFQVRFX0FMV0FZUzsKKyAgICAgICAgYnJlYWs7Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCisgICAg
U3RyaW5nIGRlc3RpbmF0aW9uID0gcGF0aDsKKyAgICByZXR1cm4gQ3JlYXRlRmlsZShzdHJpbmdU
b051bGxUZXJtaW5hdGVkV0NoYXIoZGVzdGluYXRpb24pLmRhdGEoKSwgZGVzaXJlZEFjY2Vzcywg
c2hhcmVNb2RlLCAwLCBjcmVhdGlvbkRpc3Bvc2l0aW9uLCBGSUxFX0FUVFJJQlVURV9OT1JNQUws
IDApOworfQorCit2b2lkIGNsb3NlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKK3sK
KyAgICBpZiAoaXNIYW5kbGVWYWxpZChoYW5kbGUpKSB7CisgICAgICAgIDo6Q2xvc2VIYW5kbGUo
aGFuZGxlKTsKKyAgICAgICAgaGFuZGxlID0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKKyAg
ICB9Cit9CisKK2xvbmcgbG9uZyBzZWVrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBs
b25nIGxvbmcgb2Zmc2V0LCBGaWxlU2Vla09yaWdpbiBvcmlnaW4pCit7CisgICAgRFdPUkQgbW92
ZU1ldGhvZCA9IEZJTEVfQkVHSU47CisKKyAgICBpZiAob3JpZ2luID09IEZpbGVTZWVrT3JpZ2lu
OjpDdXJyZW50KQorICAgICAgICBtb3ZlTWV0aG9kID0gRklMRV9DVVJSRU5UOworICAgIGVsc2Ug
aWYgKG9yaWdpbiA9PSBGaWxlU2Vla09yaWdpbjo6RW5kKQorICAgICAgICBtb3ZlTWV0aG9kID0g
RklMRV9FTkQ7CisKKyAgICBMQVJHRV9JTlRFR0VSIGxhcmdlT2Zmc2V0OworICAgIGxhcmdlT2Zm
c2V0LlF1YWRQYXJ0ID0gb2Zmc2V0OworCisgICAgbGFyZ2VPZmZzZXQuTG93UGFydCA9IFNldEZp
bGVQb2ludGVyKGhhbmRsZSwgbGFyZ2VPZmZzZXQuTG93UGFydCwgJmxhcmdlT2Zmc2V0LkhpZ2hQ
YXJ0LCBtb3ZlTWV0aG9kKTsKKworICAgIGlmIChsYXJnZU9mZnNldC5Mb3dQYXJ0ID09IElOVkFM
SURfU0VUX0ZJTEVfUE9JTlRFUiAmJiBHZXRMYXN0RXJyb3IoKSAhPSBOT19FUlJPUikKKyAgICAg
ICAgcmV0dXJuIC0xOworCisgICAgcmV0dXJuIGxhcmdlT2Zmc2V0LlF1YWRQYXJ0OworfQorCitp
bnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY29uc3QgY2hhciogZGF0
YSwgaW50IGxlbmd0aCkKK3sKKyAgICBpZiAoIWlzSGFuZGxlVmFsaWQoaGFuZGxlKSkKKyAgICAg
ICAgcmV0dXJuIC0xOworCisgICAgRFdPUkQgYnl0ZXNXcml0dGVuOworICAgIGJvb2wgc3VjY2Vz
cyA9IFdyaXRlRmlsZShoYW5kbGUsIGRhdGEsIGxlbmd0aCwgJmJ5dGVzV3JpdHRlbiwgMCk7CisK
KyAgICBpZiAoIXN1Y2Nlc3MpCisgICAgICAgIHJldHVybiAtMTsKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8aW50PihieXRlc1dyaXR0ZW4pOworfQorCitpbnQgcmVhZEZyb21GaWxlKFBsYXRmb3Jt
RmlsZUhhbmRsZSBoYW5kbGUsIGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCit7CisgICAgaWYgKCFp
c0hhbmRsZVZhbGlkKGhhbmRsZSkpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIERXT1JEIGJ5
dGVzUmVhZDsKKyAgICBib29sIHN1Y2Nlc3MgPSA6OlJlYWRGaWxlKGhhbmRsZSwgZGF0YSwgbGVu
Z3RoLCAmYnl0ZXNSZWFkLCAwKTsKKworICAgIGlmICghc3VjY2VzcykKKyAgICAgICAgcmV0dXJu
IC0xOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KGJ5dGVzUmVhZCk7Cit9CisKK2Jvb2wg
aGFyZExpbmtPckNvcHlGaWxlKGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBTdHJpbmcmIGRl
c3RpbmF0aW9uKQoreworICAgIHJldHVybiAhITo6Q29weUZpbGUoc3RyaW5nVG9OdWxsVGVybWlu
YXRlZFdDaGFyKHNvdXJjZSkuZGF0YSgpLCBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoZGVz
dGluYXRpb24pLmRhdGEoKSwgVFJVRSk7Cit9CisKK1N0cmluZyBsb2NhbFVzZXJTcGVjaWZpY1N0
b3JhZ2VEaXJlY3RvcnkoKQoreworICAgIHJldHVybiBjYWNoZWRTdG9yYWdlRGlyZWN0b3J5KENT
SURMX0xPQ0FMX0FQUERBVEEpOworfQorCitTdHJpbmcgcm9hbWluZ1VzZXJTcGVjaWZpY1N0b3Jh
Z2VEaXJlY3RvcnkoKQoreworICAgIHJldHVybiBjYWNoZWRTdG9yYWdlRGlyZWN0b3J5KENTSURM
X0FQUERBVEEpOworfQorCitWZWN0b3I8U3RyaW5nPiBsaXN0RGlyZWN0b3J5KGNvbnN0IFN0cmlu
ZyYgZGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIGZpbHRlcikKK3sKKyAgICBWZWN0b3I8U3RyaW5n
PiBlbnRyaWVzOworCisgICAgUGF0aFdhbGtlciB3YWxrZXIoZGlyZWN0b3J5LCBmaWx0ZXIpOwor
ICAgIGlmICghd2Fsa2VyLmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIGVudHJpZXM7CisKKyAg
ICBkbyB7CisgICAgICAgIGlmICh3YWxrZXIuZGF0YSgpLmR3RmlsZUF0dHJpYnV0ZXMgJiBGSUxF
X0FUVFJJQlVURV9ESVJFQ1RPUlkKKyAgICAgICAgICAgICYmICghd2NzY21wKHdhbGtlci5kYXRh
KCkuY0ZpbGVOYW1lLCBMIi4iKSB8fCAhd2NzY21wKHdhbGtlci5kYXRhKCkuY0ZpbGVOYW1lLCBM
Ii4uIikpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgZW50cmllcy5hcHBlbmQo
ZGlyZWN0b3J5ICsgIlxcIiArIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPih3YWxrZXIu
ZGF0YSgpLmNGaWxlTmFtZSkpOworICAgIH0gd2hpbGUgKHdhbGtlci5zdGVwKCkpOworCisgICAg
cmV0dXJuIGVudHJpZXM7Cit9CisKK2Jvb2wgZ2V0Vm9sdW1lRnJlZVNwYWNlKGNvbnN0IFN0cmlu
ZyYsIHVpbnQ2NF90JikKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK09wdGlvbmFsPGludDMy
X3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCit7CisgICAgYXV0byBo
YW5kbGUgPSBvcGVuRmlsZShmc0ZpbGUuZGF0YSgpLCBGaWxlT3Blbk1vZGU6OlJlYWQpOworICAg
IGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworCisgICAgQllfSEFORExFX0ZJTEVfSU5GT1JNQVRJT04gZmlsZUluZm9ybWF0aW9uID0geyB9
OworICAgIGlmICghOjpHZXRGaWxlSW5mb3JtYXRpb25CeUhhbmRsZShoYW5kbGUsICZmaWxlSW5m
b3JtYXRpb24pKSB7CisgICAgICAgIGNsb3NlRmlsZShoYW5kbGUpOworICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgIH0KKworICAgIGNsb3NlRmlsZShoYW5kbGUpOworCisgICAgcmV0
dXJuIGZpbGVJbmZvcm1hdGlvbi5kd1ZvbHVtZVNlcmlhbE51bWJlcjsKK30KKworU3RyaW5nIHJl
YWxQYXRoKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCit7CisgICAgcmV0dXJuIGdldEZpbmFsUGF0
aE5hbWUoZmlsZVBhdGgpOworfQorCitTdHJpbmcgY3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KCkK
K3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUZW1wb3JhcnlQYXRoKFtdKGNvbnN0IFN0cmluZyYgcHJv
cG9zZWRQYXRoKSB7CisgICAgICAgIHJldHVybiBtYWtlQWxsRGlyZWN0b3JpZXMocHJvcG9zZWRQ
YXRoKTsKKyAgICB9KTsKK30KKworYm9vbCBkZWxldGVOb25FbXB0eURpcmVjdG9yeShjb25zdCBT
dHJpbmcmIGRpcmVjdG9yeVBhdGgpCit7CisgICAgU0hGSUxFT1BTVFJVQ1QgZGVsZXRlT3BlcmF0
aW9uID0geworICAgICAgICBudWxscHRyLAorICAgICAgICBGT19ERUxFVEUsCisgICAgICAgIHN0
cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihkaXJlY3RvcnlQYXRoKS5kYXRhKCksCisgICAgICAg
IEwiIiwKKyAgICAgICAgRk9GX05PQ09ORklSTUFUSU9OIHwgRk9GX05PRVJST1JVSSB8IEZPRl9T
SUxFTlQsCisgICAgICAgIGZhbHNlLAorICAgICAgICAwLAorICAgICAgICBMIiIKKyAgICB9Owor
ICAgIHJldHVybiAhU0hGaWxlT3BlcmF0aW9uKCZkZWxldGVPcGVyYXRpb24pOworfQorCit9IC8v
IG5hbWVzcGFjZSBGaWxlU3lzdGVtCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL3dpbi9QYXRoV2Fsa2VyLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9QYXRo
V2Fsa2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNmQzZjk3MDYwNDljYjEzYzllZjYzNTVlYmI2M2E1MDc5
ODUwMjIxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvd2luL1BhdGhXYWxrZXIu
Y3BwCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSA8d3RmL3dpbi9QYXRoV2Fsa2VyLmg+CisKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaD4KKwor
bmFtZXNwYWNlIFdURiB7CisKK1BhdGhXYWxrZXI6OlBhdGhXYWxrZXIoY29uc3QgU3RyaW5nJiBk
aXJlY3RvcnksIGNvbnN0IFN0cmluZyYgcGF0dGVybikKK3sKKyAgICBTdHJpbmcgcGF0aCA9IGRp
cmVjdG9yeSArICJcXCIgKyBwYXR0ZXJuOworICAgIG1faGFuZGxlID0gOjpGaW5kRmlyc3RGaWxl
VyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIocGF0aCkuZGF0YSgpLCAmbV9kYXRhKTsKK30K
KworUGF0aFdhbGtlcjo6flBhdGhXYWxrZXIoKQoreworICAgIGlmICghaXNWYWxpZCgpKQorICAg
ICAgICByZXR1cm47CisgICAgOjpGaW5kQ2xvc2UobV9oYW5kbGUpOworfQorCitib29sIFBhdGhX
YWxrZXI6OnN0ZXAoKQoreworICAgIHJldHVybiA6OkZpbmROZXh0RmlsZVcobV9oYW5kbGUsICZt
X2RhdGEpOworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL3dpbi9QYXRoV2Fsa2VyLmggYi9Tb3VyY2UvV1RGL3d0Zi93aW4vUGF0aFdhbGtlci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjk1M2FlMmU2YWU4NTYxYWYzNDU0ZTIxODM4OGRmODkwMDVlYTMzYmMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vUGF0aFdhbGtlci5oCkBAIC0wLDAgKzEs
NDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlIDxXaW5kb3dzLmg+CisjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKworbmFtZXNwYWNl
IFdURiB7CisKK2NsYXNzIFBhdGhXYWxrZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBh
dGhXYWxrZXIpOworcHVibGljOgorICAgIFBhdGhXYWxrZXIoY29uc3QgV1RGOjpTdHJpbmcmIGRp
cmVjdG9yeSwgY29uc3QgV1RGOjpTdHJpbmcmIHBhdHRlcm4pOworICAgIH5QYXRoV2Fsa2VyKCk7
CisKKyAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2hhbmRsZSAhPSBJTlZBTElE
X0hBTkRMRV9WQUxVRTsgfQorICAgIGNvbnN0IFdJTjMyX0ZJTkRfREFUQVcmIGRhdGEoKSBjb25z
dCB7IHJldHVybiBtX2RhdGE7IH0KKworICAgIGJvb2wgc3RlcCgpOworCitwcml2YXRlOgorICAg
IEhBTkRMRSBtX2hhbmRsZTsKKyAgICBXSU4zMl9GSU5EX0RBVEFXIG1fZGF0YTsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9DRE0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9DRE0uY3BwCmluZGV4IDkzNTY2NTAxYTk5ZTE5ODg4YjFiZDM5NTQ1Mjg4MWM0NzQ1NTdkZjYu
LjgxOGYyMjRiZDU2NDgzYzhhZDY2MDJiMzAyZDZhZTBiNzJkZWQxYTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAKQEAgLTMxLDcgKzMxLDYgQEAK
ICNpbmNsdWRlICJDRE1GYWN0b3J5LmgiCiAjaW5jbHVkZSAiQ0RNUHJpdmF0ZS5oIgogI2luY2x1
ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkluaXRE
YXRhUmVnaXN0cnkuaCIKICNpbmNsdWRlICJNZWRpYUtleXNSZXF1aXJlbWVudC5oIgogI2luY2x1
ZGUgIk1lZGlhUGxheWVyLmgiCkBAIC00Miw2ICs0MSw3IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlP
cmlnaW4uaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbkRhdGEuaCIKICNpbmNsdWRlICJTZXR0
aW5ncy5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5U2Vzc2lv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJL
aXRNZWRpYUtleVNlc3Npb24uY3BwCmluZGV4IGU2NjZjZTk3OTM2NzQ1ZWRhMDEwNjYwNzk3OGY2
ZTk4MDlmZjBiMzkuLjY1ZWRkYTE2Zjc5NTBkMjQ5YmNmNzMxNjI4NjE1MDg1NGVmMjgxZDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dl
YktpdE1lZGlhS2V5U2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmNwcApAQCAtMzAsMTMgKzMw
LDEzIEBACiAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIK
LSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlNl
Y3VyaXR5T3JpZ2luRGF0YS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiV2Vi
S2l0TWVkaWFLZXlFcnJvci5oIgogI2luY2x1ZGUgIldlYktpdE1lZGlhS2V5TWVzc2FnZUV2ZW50
LmgiCiAjaW5jbHVkZSAiV2ViS2l0TWVkaWFLZXlzLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0
ZW0uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHAKaW5kZXggNmRkNDE3MTMwOGFkNDY3
ZjJhNGMyN2M5Y2U5NzcyOWIzZmFkOGNmOS4uMzY4Nzk0ZWY1YzFhMGZlNzk4YjJhMWJhNTA4ODZj
MGI0ZmViY2I5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBp
L0RPTUZpbGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2Fw
aS9ET01GaWxlU3lzdGVtLmNwcApAQCAtMjcsMTIgKzI3LDEyIEBACiAjaW5jbHVkZSAiRE9NRmls
ZVN5c3RlbS5oIgogCiAjaW5jbHVkZSAiRmlsZS5oIgotI2luY2x1ZGUgIkZpbGVNZXRhZGF0YS5o
IgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtRGlyZWN0b3J5
RW50cnkuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtRmlsZUVudHJ5LmgiCiAjaW5jbHVkZSAiU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZENvcGllci5o
PgorI2luY2x1ZGUgPHd0Zi9GaWxlTWV0YWRhdGEuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3Rl
bS5oPgogI2luY2x1ZGUgPHd0Zi9VVUlELmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkv
RmlsZVN5c3RlbUVudHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9G
aWxlU3lzdGVtRW50cnkuY3BwCmluZGV4IGRjY2I1YTExODYzZDliYjEwZjI4N2Q1N2ZkYzEzOWEw
YjliMWIxMTEuLjQyNGNjYTI2Y2Q0YzdiODYxMDNmZDUyMGYxZmY3MGYwZGEwMzUxZWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRW50cnku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRW50
cnkuY3BwCkBAIC0yOSwxMCArMjksMTAgQEAKICNpbmNsdWRlICJET01FeGNlcHRpb24uaCIKICNp
bmNsdWRlICJET01GaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiRXJyb3JDYWxsYmFjay5oIgotI2lu
Y2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnku
aCIKICNpbmNsdWRlICJGaWxlU3lzdGVtRW50cnlDYWxsYmFjay5oIgogI2luY2x1ZGUgIlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuY3BwCmluZGV4IGM3ZmRmZDBkZDY1NDVm
OGM2ZmU1MzQyZmIzNjQ2ZmU5YTg0Njk0YjkuLmI0MjliM2YyNmI5MzQ2ZmJiMWRhZTdlYzY1MGU0
NmUyNTZkZmM4YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkRhdGFiYXNlSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmNwcApAQCAtMjgsOCArMjgsOCBAQAogCiAj
aWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAj
aW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgog
I2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0
ZUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAppbmRleCAyMTc4Y2M0MmE5YjUxMTQzY2U1
ZDg1ZjRkMTFmN2FiMjYwOTI0ZWM3Li4yODVkNTAyZGFlODFhOWE3NjhhYTM0YTFkMjU2ZGY1MDQ3
ZDYxYmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcApAQCAtMjgsNyArMjgs
NiBAQAogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKLSNpbmNsdWRlICJGaWxlU3lz
dGVtLmgiCiAjaW5jbHVkZSAiSURCQmluZGluZ1V0aWxpdGllcy5oIgogI2luY2x1ZGUgIklEQkdl
dEFsbFJlY29yZHNEYXRhLmgiCiAjaW5jbHVkZSAiSURCR2V0QWxsUmVzdWx0LmgiCkBAIC01NCw2
ICs1Myw3IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNHbG9iYWxPYmplY3QuaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJvbmdJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvU3RydWN0dXJlSW5saW5lcy5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+
CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxp
dGVJREJUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvU1FMaXRlSURCVHJhbnNhY3Rpb24uY3BwCmluZGV4IDc4MWI3OWY2M2EwNjFkNThkMWM5
MmE0MTNjMjFhZmRlNjU2NDkzNmUuLmJlZWE2YjE2NzA2MjRlNWM5ODBmMzE2NjM0YzAzNjVkZmRl
YmM2Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQlRyYW5zYWN0aW9uLmNwcApAQCAtMjcsMTMgKzI3LDEz
IEBACiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAotI2luY2x1ZGUgIkZpbGVTeXN0
ZW0uaCIKICNpbmNsdWRlICJJREJDdXJzb3JJbmZvLmgiCiAjaW5jbHVkZSAiSW5kZXhlZERCLmgi
CiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlNRTGl0ZUlEQkJhY2tpbmdTdG9yZS5o
IgogI2luY2x1ZGUgIlNRTGl0ZUlEQkN1cnNvci5oIgogI2luY2x1ZGUgIlNRTGl0ZVRyYW5zYWN0
aW9uLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogbmFtZXNwYWNlIElEQlNlcnZlciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCmluZGV4
IDYxYWViOGY3ZDcwMTUxYjk0MjI4NWFjZGNjZjgxYmZiMWVhNDI2MjYuLmRkOWY1YWQyOTMxN2M1
Y2RjNzU4ODMyYWM2YTM3MGJkZjk1ZGQ4OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3Bw
CkBAIC0yOCw3ICsyOCw2IEBACiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAotI2lu
Y2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJJREJDb25uZWN0aW9uVG9DbGllbnQuaCIK
ICNpbmNsdWRlICJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuaCIKICNpbmNsdWRlICJJREJDdXJzb3JJ
bmZvLmgiCkBAIC00MCw2ICszOSw3IEBACiAjaW5jbHVkZSAiSURCUmVzdWx0RGF0YS5oIgogI2lu
Y2x1ZGUgIklEQlZhbHVlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgPHd0Zi9G
aWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZVRyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZVRyYWNrZXIuY3BwCmluZGV4IGQ5NjU0MWVkNDlmNjkzODI0ZWQxZGZjNTI1MDg4ZGFjMzJi
YzU5YzUuLjQwOGY2MjIxMmFlMmIxN2IzOGFjMTkwOTg5NTFhMGYwOTJkNGIwNDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tl
ci5jcHAKQEAgLTM0LDcgKzM0LDYgQEAKICNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKICNp
bmNsdWRlICJEYXRhYmFzZU1hbmFnZXJDbGllbnQuaCIKICNpbmNsdWRlICJEYXRhYmFzZVRocmVh
ZC5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5j
bHVkZSAiT3JpZ2luTG9jay5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCkBAIC00Myw2
ICs0Miw3IEBACiAjaW5jbHVkZSAiU1FMaXRlRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIlNRTGl0
ZVN0YXRlbWVudC5oIgogI2luY2x1ZGUgIlNRTGl0ZVRyYW5zYWN0aW9uLmgiCisjaW5jbHVkZSA8
d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luTG9jay5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL09yaWdpbkxvY2suY3BwCmlu
ZGV4IDQyM2IyZTY2ZGRmYTEyY2MzNDBmNjBmY2U1OWQzNTNkZjk5ODY3ZjQuLmEyMWJjZGI3ODM4
NmM4MTBlYzU5OTQxYzI3NWY0ZWZiYWZmMjNmYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luTG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5Mb2NrLmNwcApAQCAtMjYsOCArMjYsNiBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk9yaWdpbkxvY2suaCIKIAotI2luY2x1ZGUgIkZp
bGVTeXN0ZW0uaCIKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTdHJpbmcgT3JpZ2luTG9jazo6
bG9ja0ZpbGVOYW1lRm9yUGF0aChTdHJpbmcgb3JpZ2luUGF0aCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luTG9jay5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5Mb2NrLmgKaW5kZXggYTE2ZTg0ZjE0ODlkYWYy
ZWU4ZjUwNDYxOWQxMzk5M2I4ZDM3NWUxMC4uZWNjMjllODkwMjViZGY2MjkzOTJiMTA1OWVmODg3
MGU2ZjhmOTJmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9PcmlnaW5Mb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9P
cmlnaW5Mb2NrLmgKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRl
ICJGaWxlU3lzdGVtLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3
dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9jb2NvYS9EYXRhYmFzZU1hbmFnZXJDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvY29jb2EvRGF0YWJhc2VNYW5hZ2VyQ29jb2EubW0K
aW5kZXggN2NmZTlmYjA2MzI2OTE4MWQ0NGYxM2MzODM2ODI1MzNkNGU0ZGZjOS4uOGQzMjUwNzNi
MDRhY2ExZDMyODQ5NmUxODI4MzM4ZGZlYmNhYmZmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9jb2NvYS9EYXRhYmFzZU1hbmFnZXJDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL2NvY29hL0RhdGFiYXNlTWFuYWdl
ckNvY29hLm1tCkBAIC0yOSw3ICsyOSw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQg
IkRhdGFiYXNlTWFuYWdlci5oIgogCi0jaW1wb3J0ICJGaWxlU3lzdGVtLmgiCisjaW1wb3J0IDx3
dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmMDU0NjVkMDMx
NzkwMzlhNTdjZDg4NmI2YTM3YTk1ODAyNGM1OGQ0Li44ZTNjYjIwYzc4NTEwNDY3ZjE3MWVhNWZj
MzM3N2RjZDQ0YzUxY2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzEsNyArMTMxLDYgQEAKIAkJQTExNzVCNTcxRjZCNDcw
NTAwQzRCOUYwIC8qIERlZmF1bHRTZWFyY2hQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTExNzVCNTUxRjZCNDcwNTAwQzRCOUYwIC8qIERl
ZmF1bHRTZWFyY2hQcm92aWRlci5oICovOyB9OwogCQlBMTE3NUI1ODFGNkI0NzA1MDBDNEI5RjAg
LyogRGVmYXVsdFNlYXJjaFByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEExMTc1QjU2MUY2QjQ3MDUwMEM0QjlGMCAvKiBEZWZhdWx0U2Vh
cmNoUHJvdmlkZXIuY3BwICovOyB9OwogCQlBMTE3NUI1QTFGNkI0QTg0MDBDNEI5RjAgLyogTlNT
Y3JvbGxWaWV3U1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBMTE3NUI1OTFGNkI0QTg0MDBDNEI5RjAgLyogTlNTY3JvbGxWaWV3U1BJLmggKi87IH07
Ci0JCUExRjU1RENGMUY1NTI4RUMwMEVEQjc1RiAvKiBNZXRhZGF0YVNQSS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFGNTVEQ0UxRjU1MjhFQzAwRURC
NzVGIC8qIE1ldGFkYXRhU1BJLmggKi87IH07CiAJCUExRjYzQzlGMjFBNERCRjcwMDZGQjQzQiAv
KiBQYXNzS2l0U29mdExpbmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEExRjYzQzlEMjFBNERCRjcwMDZGQjQzQiAvKiBQYXNzS2l0U29mdExpbmsuaCAq
LzsgfTsKIAkJQTFGNjNDQTAyMUE0REJGNzAwNkZCNDNCIC8qIFBhc3NLaXRTb2Z0TGluay5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRjYzQzlFMjFB
NERCRjcwMDZGQjQzQiAvKiBQYXNzS2l0U29mdExpbmsubW0gKi87IH07CiAJCUEzMEQ0MTIxMUYw
REQwRUEwMEI3MTk1NCAvKiBLaWxsUmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTMwRDQxMUUxRjBERDBFQTAwQjcxOTU0IC8qIEtpbGxSaW5nLmgg
Ki87IH07CkBAIC0yOTAsNyArMjg5LDYgQEAKIAkJQTExNzVCNTUxRjZCNDcwNTAwQzRCOUYwIC8q
IERlZmF1bHRTZWFyY2hQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZWZhdWx0U2VhcmNoUHJv
dmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTExNzVCNTYxRjZCNDcwNTAw
QzRCOUYwIC8qIERlZmF1bHRTZWFyY2hQcm92aWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBE
ZWZhdWx0U2VhcmNoUHJvdmlkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
MTE3NUI1OTFGNkI0QTg0MDBDNEI5RjAgLyogTlNTY3JvbGxWaWV3U1BJLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE5TU2Nyb2xsVmlld1NQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBMUY1
NURDRTFGNTUyOEVDMDBFREI3NUYgLyogTWV0YWRhdGFTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWV0
YWRhdGFTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFGNjNDOUQyMUE0REJG
NzAwNkZCNDNCIC8qIFBhc3NLaXRTb2Z0TGluay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYXNzS2l0U29m
dExpbmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFGNjNDOUUyMUE0REJGNzAw
NkZCNDNCIC8qIFBhc3NLaXRTb2Z0TGluay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBhc3NL
aXRTb2Z0TGluay5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTMwRDQxMUUxRjBE
RDBFQTAwQjcxOTU0IC8qIEtpbGxSaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEtpbGxSaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NDUsNyArNDQz
LDYgQEAKIAkJCQlBMTAyNjU4ODFGNTY3NDdBMDBCNEM4NDQgLyogSElUb29sYm94U1BJLmggKi8s
CiAJCQkJMEM3Nzg1NzIxRjQ1MTMwRjAwRjRFQkI2IC8qIExvb2t1cFNQSS5oICovLAogCQkJCTBD
Nzc4NTczMUY0NTEzMEYwMEY0RUJCNiAvKiBNZWRpYVJlbW90ZVNQSS5oICovLAotCQkJCUExRjU1
RENFMUY1NTI4RUMwMEVEQjc1RiAvKiBNZXRhZGF0YVNQSS5oICovLAogCQkJCTBDNzc4NTc0MUY0
NTEzMEYwMEY0RUJCNiAvKiBOU0FjY2Vzc2liaWxpdHlTUEkuaCAqLywKIAkJCQkxQ0NFRTRGNjIw
RDg3NDNGMDA0N0IwOTcgLyogTlNBcHBlYXJhbmNlU1BJLmggKi8sCiAJCQkJMEM3Nzg1NzUxRjQ1
MTMwRjAwRjRFQkI2IC8qIE5TQXBwbGljYXRpb25TUEkuaCAqLywKQEAgLTY5NSw3ICs2OTIsNiBA
QAogCQkJCTBDNUFGOTFEMUY0M0E0QzcwMDJFQUMwMiAvKiBNZWRpYVBsYXllclNQSS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEM3Nzg1OEMxRjQ1MTMwRjAwRjRFQkI2IC8qIE1lZGlhUmVtb3RlU1BJ
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzAwQ0ZENDFGNjhDRTQ2MDBBQUMyNkQgLyogTWVkaWFU
aW1lQVZGb3VuZGF0aW9uLmggaW4gSGVhZGVycyAqLywKLQkJCQlBMUY1NURDRjFGNTUyOEVDMDBF
REI3NUYgLyogTWV0YWRhdGFTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBDNUFGOTFFMUY0M0E0
QzcwMDJFQUMwMiAvKiBNb2JpbGVHZXN0YWx0U1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzJE
QTE0OTFGM0JFQjQ5MDBEQkMzMTcgLyogTkVGaWx0ZXJTb3VyY2VTUEkuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBDNzc4NThEMUY0NTEzMEYwMEY0RUJCNiAvKiBOU0FjY2Vzc2liaWxpdHlTUEkuaCBp
biBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9QbGF0Zm9y
bU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvUGxhdGZvcm1NYWMuY21ha2UKaW5k
ZXggNmIxYmQyNTkyNmY0MmJkNjQ2MDMyYWQ5MDRhNzg3ZTY5Yjc1MGFjOS4uZjEzMDc2ODQzZjg4
MzE2YmMzOGJkODBkYTcyZjQ4OWE4MjM3NjI4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1Bs
YXRmb3JtTWFjLmNtYWtlCkBAIC01OCw3ICs1OCw2IEBAIGxpc3QoQVBQRU5EIFBBTF9QVUJMSUNf
SEVBREVSUwogICAgIHNwaS9tYWMvSElUb29sYm94U1BJLmgKICAgICBzcGkvbWFjL0xvb2t1cFNQ
SS5oCiAgICAgc3BpL21hYy9NZWRpYVJlbW90ZVNQSS5oCi0gICAgc3BpL21hYy9NZXRhZGF0YVNQ
SS5oCiAgICAgc3BpL21hYy9OU0FjY2Vzc2liaWxpdHlTUEkuaAogICAgIHNwaS9tYWMvTlNBcHBl
YXJhbmNlU1BJLmgKICAgICBzcGkvbWFjL05TQXBwbGljYXRpb25TUEkuaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvbWFjL01ldGFkYXRhU1BJLmggYi9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL3NwaS9tYWMvTWV0YWRhdGFTUEkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggODE1NTQ3YzZiODUxMGUzMDYxOGUyMjgyYWQ1Yjc4NDAxNmNhMzcyMS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL3NwaS9tYWMvTWV0YWRhdGFTUEkuaAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9T
REspCi0KLSNpbmNsdWRlIDxDb3JlU2VydmljZXMvQ29yZVNlcnZpY2VzUHJpdi5oPgotCi0jZW5k
aWYKLQotV1RGX0VYVEVSTl9DX0JFR0lOCi0KLUJvb2xlYW4gTURJdGVtU2V0QXR0cmlidXRlKE1E
SXRlbVJlZiwgQ0ZTdHJpbmdSZWYgbmFtZSwgQ0ZUeXBlUmVmIGF0dHIpOwotCi1XVEZfRVhURVJO
X0NfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1Nv
dXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IDg2NmVhNmE1NGI5YTQyZjg3OGQ0
ZTE5YjY1MGEyYzNjM2JhMjA5YTkuLjRkNzJmOWRlZWY4MGViNmU0NDU2Nzk3M2Q1YzZkY2ZmNjkw
NTViODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC0xODksNyArMTg5LDYgQEAgbGlz
dChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vYXVkaW8vbWFjL0NBUmluZ0J1
ZmZlci5jcHAKICAgICBwbGF0Zm9ybS9hdWRpby9tYWMvRkZURnJhbWVNYWMuY3BwCiAKLSAgICBw
bGF0Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3BwCiAgICAgcGxhdGZvcm0vY2YvS2V5ZWREZWNvZGVy
Q0YuY3BwCiAgICAgcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCiAgICAgcGxhdGZvcm0v
Y2YvTWFpblRocmVhZFNoYXJlZFRpbWVyQ0YuY3BwCkBAIC0yMDAsNyArMTk5LDYgQEAgbGlzdChB
UFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vY29jb2EvQ29udGVudEZpbHRlclVu
YmxvY2tIYW5kbGVyQ29jb2EubW0KICAgICBwbGF0Zm9ybS9jb2NvYS9Db3JlVmlkZW9Tb2Z0TGlu
ay5jcHAKICAgICBwbGF0Zm9ybS9jb2NvYS9GaWxlTW9uaXRvckNvY29hLm1tCi0gICAgcGxhdGZv
cm0vY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tCiAgICAgcGxhdGZvcm0vY29jb2EvS2V5RXZlbnRD
b2NvYS5tbQogICAgIHBsYXRmb3JtL2NvY29hL0xvY2FsaXplZFN0cmluZ3NDb2NvYS5tbQogICAg
IHBsYXRmb3JtL2NvY29hL01JTUVUeXBlUmVnaXN0cnlDb2NvYS5tbQpAQCAtMzQ3LDcgKzM0NSw2
IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL21hYy9EcmFnRGF0
YU1hYy5tbQogICAgIHBsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW0KICAgICBwbGF0Zm9ybS9t
YWMvRXZlbnRMb29wTWFjLm1tCi0gICAgcGxhdGZvcm0vbWFjL0ZpbGVTeXN0ZW1NYWMubW0KICAg
ICBwbGF0Zm9ybS9tYWMvS2V5RXZlbnRNYWMubW0KICAgICBwbGF0Zm9ybS9tYWMvTG9jYWxDdXJy
ZW50R3JhcGhpY3NDb250ZXh0Lm1tCiAgICAgcGxhdGZvcm0vbWFjL0xvZ2dpbmdNYWMubW0KQEAg
LTQxOCw4ICs0MTUsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9y
bS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdh
dGUubW0KICAgICBwbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0KIAot
ICAgIHBsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKLQogICAgIHBsYXRmb3JtL3Rl
eHQvY2YvSHlwaGVuYXRpb25DRi5jcHAKIAogICAgIHBsYXRmb3JtL3RleHQvbWFjL0xvY2FsZU1h
Yy5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1QbGF5U3RhdGlvbi5jbWFr
ZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtUGxheVN0YXRpb24uY21ha2UKaW5kZXggOTAzNzYw
MzliOTY5NmUxM2Y5ZGViYzljNDczMGE3OTAzOTk3OTU1MS4uNmQ0NDUzNWQ5NTk4NGJlNTg4MzNl
ODhmOTcxZTZhNzJmMmRiYWIyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1Q
bGF5U3RhdGlvbi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVBsYXlTdGF0aW9u
LmNtYWtlCkBAIC02Myw3ICs2Myw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAg
IHBsYXRmb3JtL3BsYXlzdGF0aW9uL1Njcm9sbGJhclRoZW1lUGxheVN0YXRpb24uY3BwCiAgICAg
cGxhdGZvcm0vcGxheXN0YXRpb24vVXNlckFnZW50UGxheVN0YXRpb24uY3BwCiAKLSAgICBwbGF0
Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCiAgICAgcGxhdGZvcm0vcG9zaXgvU2hhcmVk
QnVmZmVyUE9TSVguY3BwCiAKICAgICBwbGF0Zm9ybS90ZXh0L0h5cGhlbmF0aW9uLmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW4uY21ha2UgYi9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybVdpbi5jbWFrZQppbmRleCA0ZmFiMzA4MjYwZTA5YzgwNTQxOWM4NGM3Y2E4MzRk
ODFmYjk1YzY1Li5mY2I1N2E0NWE1ZjQxZWYzYmY2NzAzODRmZGEyM2YzY2RhODYxNGQwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybVdpbi5jbWFrZQpAQCAtODQsNyArODQsNiBAQCBsaXN0KEFQUEVORCBXZWJD
b3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS93aW4vRHJhZ0RhdGFXaW4uY3BwCiAgICAgcGxhdGZv
cm0vd2luL0RyYWdJbWFnZVdpbi5jcHAKICAgICBwbGF0Zm9ybS93aW4vRXZlbnRMb29wV2luLmNw
cAotICAgIHBsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2luLmNwcAogICAgIHBsYXRmb3JtL3dpbi9H
RElPYmplY3RDb3VudGVyLmNwcAogICAgIHBsYXRmb3JtL3dpbi9HRElVdGlsaXRpZXMuY3BwCiAg
ICAgcGxhdGZvcm0vd2luL0tleUV2ZW50V2luLmNwcApAQCAtOTMsNyArOTIsNiBAQCBsaXN0KEFQ
UEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3RyeVdp
bi5jcHAKICAgICBwbGF0Zm9ybS93aW4vTWFpblRocmVhZFNoYXJlZFRpbWVyV2luLmNwcAogICAg
IHBsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAotICAgIHBsYXRmb3JtL3dpbi9QYXRoV2Fs
a2VyLmNwcAogICAgIHBsYXRmb3JtL3dpbi9QbGF0Zm9ybU1vdXNlRXZlbnRXaW4uY3BwCiAgICAg
cGxhdGZvcm0vd2luL1BsYXRmb3JtU2NyZWVuV2luLmNwcAogICAgIHBsYXRmb3JtL3dpbi9Qb3B1
cE1lbnVXaW4uY3BwCkBAIC0yNDgsNyArMjQ2LDYgQEAgaWYgKFVTRV9DRikKICAgICBsaXN0KEFQ
UEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICAgICAgbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2Vi
QXJjaGl2ZS5jcHAKIAotICAgICAgICBwbGF0Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3BwCiAgICAg
ICAgIHBsYXRmb3JtL2NmL0tleWVkRGVjb2RlckNGLmNwcAogICAgICAgICBwbGF0Zm9ybS9jZi9L
ZXllZEVuY29kZXJDRi5jcHAKICAgICAgICAgcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0CmluZGV4IDI3NGIwODgwMGU2YmRlNDNmYTdiNTFhZmFmNzY0Y2ExYTk0NzBk
NmMuLjBhMWQ2OTg3MGMwYTk0NjY5ZWU3ZWM5ZjFiYTdkMmM3NzgxM2M3MGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMu
dHh0CkBAIC0xNjAwLDcgKzE2MDAsNiBAQCBwbGF0Zm9ybS9GaWxlQ2hvb3Nlci5jcHAKIHBsYXRm
b3JtL0ZpbGVIYW5kbGUuY3BwCiBwbGF0Zm9ybS9GaWxlTW9uaXRvci5jcHAKIHBsYXRmb3JtL0Zp
bGVTdHJlYW0uY3BwCi1wbGF0Zm9ybS9GaWxlU3lzdGVtLmNwcAogcGxhdGZvcm0vR2VuZXJpY1Rh
c2tRdWV1ZS5jcHAKIHBsYXRmb3JtL0xheW91dFVuaXQuY3BwCiBwbGF0Zm9ybS9MZW5ndGguY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dl
YkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCBjNzI4MjVhZWU1M2NjNDFlZTNhZjc4M2EwMTBi
Njc5ODVmZTliYTA0Li41MTQxN2U0ZDI0M2RjMjYzODFlZmYzOWYzZDBmMWE5MTA1N2JmNmMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTE4MSw3ICsxODEsNiBAQCBwbGF0Zm9ybS9hdWRp
by9tYWMvQXVkaW9TZXNzaW9uTWFjLmNwcAogcGxhdGZvcm0vYXVkaW8vbWFjL0NBUmluZ0J1ZmZl
ci5jcHAKIHBsYXRmb3JtL2F1ZGlvL21hYy9GRlRGcmFtZU1hYy5jcHAKIAotcGxhdGZvcm0vY2Yv
RmlsZVN5c3RlbUNGLmNwcAogcGxhdGZvcm0vY2YvS2V5ZWREZWNvZGVyQ0YuY3BwCiBwbGF0Zm9y
bS9jZi9LZXllZEVuY29kZXJDRi5jcHAKIHBsYXRmb3JtL2NmL01haW5UaHJlYWRTaGFyZWRUaW1l
ckNGLmNwcApAQCAtMTkzLDcgKzE5Miw2IEBAIHBsYXRmb3JtL2NvY29hL0NvbnRlbnRGaWx0ZXJV
bmJsb2NrSGFuZGxlckNvY29hLm1tIEBuby11bmlmeQogcGxhdGZvcm0vY29jb2EvQ29yZVZpZGVv
U29mdExpbmsuY3BwCiBwbGF0Zm9ybS9jb2NvYS9EYXRhRGV0ZWN0b3JzQ29yZVNvZnRMaW5rLm1t
CiBwbGF0Zm9ybS9jb2NvYS9GaWxlTW9uaXRvckNvY29hLm1tCi1wbGF0Zm9ybS9jb2NvYS9GaWxl
U3lzdGVtQ29jb2EubW0KIHBsYXRmb3JtL2NvY29hL0tleUV2ZW50Q29jb2EubW0KIHBsYXRmb3Jt
L2NvY29hL0xvY2FsaXplZFN0cmluZ3NDb2NvYS5tbQogcGxhdGZvcm0vY29jb2EvTUlNRVR5cGVS
ZWdpc3RyeUNvY29hLm1tCkBAIC00NDcsNyArNDQ1LDYgQEAgcGxhdGZvcm0vbWFjL0N1cnNvck1h
Yy5tbQogcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tCiBwbGF0Zm9ybS9tYWMvRHJhZ0ltYWdl
TWFjLm1tCiBwbGF0Zm9ybS9tYWMvRXZlbnRMb29wTWFjLm1tCi1wbGF0Zm9ybS9tYWMvRmlsZVN5
c3RlbU1hYy5tbQogcGxhdGZvcm0vbWFjL0tleUV2ZW50TWFjLm1tIEBuby11bmlmeQogcGxhdGZv
cm0vbWFjL1BsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5tbSBAbm8tdW5pZnkKIHBsYXRmb3Jt
L21hYy9Mb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQubW0KQEAgLTU0Miw4ICs1MzksNiBAQCBw
bGF0Zm9ybS9uZXR3b3JrL21hYy9VVElVdGlsaXRpZXMubW0KIHBsYXRmb3JtL25ldHdvcmsvbWFj
L1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQogcGxhdGZv
cm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tCiAKLXBsYXRmb3JtL3Bvc2l4L0Zp
bGVTeXN0ZW1QT1NJWC5jcHAKLQogcGxhdGZvcm0vdGV4dC9jZi9IeXBoZW5hdGlvbkNGLmNwcAog
CiBwbGF0Zm9ybS90ZXh0L2lvcy9Mb2NhbGl6ZWREYXRlQ2FjaGUubW0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0ZjY2YjFhZjE0
OWM1ZWFmZjk3YjVlNDc4ZDkzZWViNTM0MGIzMmJkLi42MmM0NGI5YWQ4Njg1MzBkYTNhZGE2MGZj
OWYyYzhlMjcwNDdhYmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjQ3LDcgKzEyNDcsNiBAQAogCQk0NjczMDIwMjFDNEVG
RTc4MDBCQ0IzNTcgLyogSWdub3JlT3BlbnNEdXJpbmdVbmxvYWRDb3VudEluY3JlbWVudGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjczMDIwMTFD
NEVGRTY2MDBCQ0IzNTcgLyogSWdub3JlT3BlbnNEdXJpbmdVbmxvYWRDb3VudEluY3JlbWVudGVy
LmggKi87IH07CiAJCTQ2ODJEMjAwMUY3OTc4MzAwMEM4NjNEQiAvKiBTdG9yZWRDcmVkZW50aWFs
c1BvbGljeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDY4MkQxRkYxRjc5NzgyMzAwQzg2M0RCIC8qIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY4MzQ0RTAx
RURERkFBQTAwQjc3OTVCIC8qIERPTVJlY3RMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgzNDRERTFFRERGQTVGMDBCNzc5NUIgLyogRE9NUmVj
dExpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owot
CQk0Njg5RjFBRjEyNjdCQUUxMDBFOEQzODAgLyogRmlsZU1ldGFkYXRhLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0Njg5RjFBRTEyNjdCQUUxMDBFOEQz
ODAgLyogRmlsZU1ldGFkYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNDZCNjNGNkMxQzZFOEQxOTAwMkU5MTRCIC8qIEpTRXZlbnRUYXJnZXRD
dXN0b20uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
QjYzRjZCMUM2RThDREYwMDJFOTE0QiAvKiBKU0V2ZW50VGFyZ2V0Q3VzdG9tLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZCOTUxOTUyMDdENjMz
NDAwQTdEMkREIC8qIEFic3RyYWN0RE9NV2luZG93LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkI5NTE4QTIwN0Q2MzI4MDBBN0QyREQgLyogQWJzdHJh
Y3RET01XaW5kb3cuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk0NkI5NTE5NjIwN0Q2MzNBMDBBN0QyREQgLyogQWJzdHJhY3RGcmFtZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCOTUxOEYyMDdENjMy
QjAwQTdEMkREIC8qIEFic3RyYWN0RnJhbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTQzOSw3ICsxNDM4LDYgQEAKIAkJNTE0M0IyNjMxRERE
MTUyMDAwMTRGQUM2IC8qIExpbmtJY29uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MTQzQjI2MjFEREQxNDkwMDAxNEZBQzYgLyogTGlua0ljb24uaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTQ1QjEw
QTFCQzQ4RTJFMDBFODYyMTkgLyogSURCUmVzb3VyY2VJZGVudGlmaWVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTQ1QjEwODFCQzQ4OTBCMDBFODYy
MTkgLyogSURCUmVzb3VyY2VJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE0ODQ1M0YxQkI5RDA3RTAwNkE3MkVEIC8qIElEQkVy
cm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTQ4
NDUzRDFCQjlEMDc2MDA2QTcyRUQgLyogSURCRXJyb3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk1MTRCM0Y3MzBDNzIyMDQ3MDAwNTMwREYgLyog
RmlsZVN5c3RlbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTE0QjNGNzIwQzcyMjA0NzAwMDUzMERGIC8qIEZpbGVTeXN0ZW0uaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTRDNzY0QzBDRTkyMzRFMDA3
RUYzQ0QgLyogQXV0aGVudGljYXRpb25NYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEM3NjQyMENFOTIzNEUwMDdFRjNDRCAvKiBBdXRoZW50aWNh
dGlvbk1hYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTUxNEM3NjRFMENFOTIzNEUwMDdFRjNDRCAvKiBGb3JtRGF0YVN0cmVhbU1hYy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0Qzc2NDQwQ0U5MjM0
RTAwN0VGM0NEIC8qIEZvcm1EYXRhU3RyZWFtTWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE0Qzc2NkUwQ0U5MjNBMTAwN0VGM0NEIC8qIENy
ZWRlbnRpYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxNEM3NjU5MENFOTIzQTEwMDdFRjNDRCAvKiBDcmVkZW50aWFsLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTc3MTEsNyArNzcwOSw2IEBACiAJ
CTQ2ODM0NERDMUVEREZBNUYwMEI3Nzk1QiAvKiBET01SZWN0TGlzdC5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRE9NUmVj
dExpc3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjgzNDRERDFFRERGQTVG
MDBCNzc5NUIgLyogRE9NUmVjdExpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NUmVjdExp
c3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjgzNDRERTFFRERGQTVGMDBC
Nzc5NUIgLyogRE9NUmVjdExpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NUmVjdExpc3QuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDY4OUYxQUUxMjY3QkFFMTAwRThEMzgwIC8qIEZp
bGVNZXRhZGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaWxlTWV0YWRh
dGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZCNjNGNkIxQzZFOENERjAwMkU5
MTRCIC8qIEpTRXZlbnRUYXJnZXRDdXN0b20uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNFdmVudFRhcmdldEN1c3RvbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NkI5NTE4QTIwN0Q2MzI4MDBBN0QyREQgLyogQWJzdHJhY3RET01XaW5kb3cuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWJzdHJhY3RET01XaW5kb3cuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZCOTUxOEMyMDdENjMyOTAwQTdEMkREIC8qIFJlbW90ZUZy
YW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUZyYW1l
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTgxMTQsOCArODExMSw2IEBACiAJ
CTUxNDVCMTA4MUJDNDg5MEIwMEU4NjIxOSAvKiBJREJSZXNvdXJjZUlkZW50aWZpZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSURCUmVzb3VyY2VJZGVudGlmaWVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNDg0NTNDMUJCOUQwNzYwMDZBNzJFRCAvKiBJ
REJFcnJvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJREJFcnJv
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNDg0NTNEMUJCOUQwNzYwMDZB
NzJFRCAvKiBJREJFcnJvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJREJF
cnJvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MTRCM0Y3MjBDNzIyMDQ3MDAw
NTMwREYgLyogRmlsZVN5c3RlbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBG
aWxlU3lzdGVtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUxNEIzRjc1MEM3MjIw
NTUwMDA1MzBERiAvKiBGaWxlU3lzdGVtQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBGaWxlU3lzdGVtQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUxNEM3NjM1MENFOTIyNUUwMDdFRjNDRCAvKiBKU1NRTEVycm9yLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU1FMRXJyb3IuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MTRDNzYzNjBDRTkyMjVFMDA3RUYzQ0QgLyogSlNTUUxU
cmFuc2FjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1NR
TFRyYW5zYWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0Qzc2NDIw
Q0U5MjM0RTAwN0VGM0NEIC8qIEF1dGhlbnRpY2F0aW9uTWFjLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEF1dGhlbnRpY2F0aW9uTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC04MTU0LDggKzgxNDksNiBAQAogCQk1MTVFMzdGNDFGQUE5Mzg4MDBEN0YyMkEg
LyogU2VydmljZVdvcmtlclR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNlcnZpY2VXb3JrZXJUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTVG
Nzk1MTFDRkNBM0M3MDBDQ0VEOTMgLyogV2ViQ29yZUNyb3NzVGhyZWFkQ29waWVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkNvcmVDcm9zc1RocmVhZENvcGll
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNUY3OTUyMUNGQ0EzQzcwMEND
RUQ5MyAvKiBXZWJDb3JlQ3Jvc3NUaHJlYWRDb3BpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViQ29yZUNyb3NzVGhyZWFkQ29waWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTUxNjAzMDBBMENDNDI1MTIwMEM4QUMyNSAvKiBGaWxlU3lzdGVtUE9TSVgu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmlsZVN5c3RlbVBPU0lY
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTE2MDMwNkIwQ0M0MzYyMzAwQzhB
QzI1IC8qIEZpbGVTeXN0ZW1DRi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBGaWxlU3lzdGVtQ0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTYw
NzEyQjFCRDgzMDUzMDBEQkM0RjIgLyogVHJhbnNhY3Rpb25PcGVyYXRpb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHJhbnNhY3Rpb25PcGVyYXRpb24uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE2MDcxMkMxQkQ4MzA3MjAwREJDNEYyIC8qIElEQk9iamVj
dFN0b3JlSW5mby5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJREJP
YmplY3RTdG9yZUluZm8uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTYwNzEy
RDFCRDgzMDcyMDBEQkM0RjIgLyogSURCT2JqZWN0U3RvcmVJbmZvLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IElEQk9iamVjdFN0b3JlSW5mby5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTEyNTcsNyArMTEyNTAsNiBAQAogCQlBMUMyQzU3NTFGQTI4NTE2MDBC
QTQ2RkEgLyogUGF5bWVudFNlc3Npb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGF5bWVudFNl
c3Npb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMUM3RkFBMTEzM0E1RDM1
MDBENjczMkQgLyogSlNYUGF0aFJlc3VsdEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU1hQYXRoUmVzdWx0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTFDQkVGNjMxRjlGMTEyOTAwMjhERTdDIC8qIE1vY2tQYXltZW50TWV0
aG9kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vY2tQYXltZW50TWV0aG9kLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUExQ0MxMTYyMUU0OTNEMDEwMEVGQTY5QyAvKiBGaWxlU3lzdGVtTWFj
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRmlsZVN5c3RlbU1h
Yy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFDQzU2NEMxRjQ2MTQ1MDAwQTQ1
NTVCIC8qIEpTUGF5bWVudE1ldGhvZERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNQYXltZW50TWV0aG9kRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBMUNDNTY0RDFGNDYxNDUxMDBBNDU1NUIgLyogSlNQYXltZW50TWV0aG9kRGF0YS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1BheW1lbnRNZXRob2REYXRhLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFDQzU2NEUxRjQ2MTQ1MjAwQTQ1NTVC
IC8qIEpTUGF5bWVudENvbXBsZXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTUGF5bWVudENvbXBsZXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzQ0
NCw3ICsxMzQzNiw2IEBACiAJCUM1NTkyRjc3MUE5MkFBMjgwMDFGODg2MiAvKiBDaGFyYWN0ZXJQ
cm9wZXJ0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENoYXJhY3RlclBy
b3BlcnRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzU1QzdCQTAxNzE4QUZC
QTAwMTMyN0U0IC8qIFJlbmRlclRoZW1lSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gUmVuZGVyVGhlbWVJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUM1NzJFRTFEMTIwMUM5QkMwMDdEOEY4MiAvKiBKU0lEQkluZGV4LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSURCSW5kZXguaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJQzU3RkVERTAxMjEyRUU5QzAwOTdCRTY1IC8qIEZpbGVTeXN0ZW0uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmlsZVN5c3RlbS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1ODVBNjYwMTFENEZBQzUwMDRDM0U0QiAvKiBJREJC
aW5kaW5nVXRpbGl0aWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IElEQkJpbmRpbmdVdGlsaXRpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
NTg1QTY2MTExRDRGQUM1MDA0QzNFNEIgLyogSURCQmluZGluZ1V0aWxpdGllcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJREJCaW5kaW5nVXRpbGl0aWVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1ODVBNjZCMTFENEZCMDcwMDRDM0U0QiAvKiBKU0lEQkRh
dGFiYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSURCRGF0YWJhc2Uu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2Nzc4LDcgKzE2NzY5LDYgQEAKIAkJ
MUFFNDJGNjcwQUE0QjhDQjAwQzg2MTJEIC8qIGNmICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKLQkJCQk1MTYwMzA2QjBDQzQzNjIzMDBDOEFDMjUgLyogRmlsZVN5
c3RlbUNGLmNwcCAqLywKIAkJCQk1MTdBNjNCRjFCNzQzMTdFMDBFN0RDREMgLyogS2V5ZWREZWNv
ZGVyQ0YuY3BwICovLAogCQkJCTUxN0E2M0MwMUI3NDMxN0UwMEU3RENEQyAvKiBLZXllZERlY29k
ZXJDRi5oICovLAogCQkJCTUxN0E2M0MxMUI3NDMxN0UwMEU3RENEQyAvKiBLZXllZEVuY29kZXJD
Ri5jcHAgKi8sCkBAIC0xNzE3MywxMCArMTcxNjMsMTAgQEAKIAkJCQkxQ0VDQjNCNjIxRjUwQUM3
MDBGNDQ1NDIgLyogV0hMU0xNZXRhbENvZGVHZW5lcmF0b3IuaCAqLywKIAkJCQkxQ0VDQjNCODIx
RjUwRDEwMDBGNDQ1NDIgLyogV0hMU0xOYXRpdmVGdW5jdGlvbldyaXRlci5jcHAgKi8sCiAJCQkJ
MUNFQ0IzQjkyMUY1MEQxMDAwRjQ0NTQyIC8qIFdITFNMTmF0aXZlRnVuY3Rpb25Xcml0ZXIuaCAq
LywKLQkJCQkxQ0VDQjNCMTIxRjJCOTg1MDBGNDQ1NDIgLyogV0hMU0xUeXBlTmFtZXIuY3BwICov
LAotCQkJCTFDRUNCM0IwMjFGMkI5ODUwMEY0NDU0MiAvKiBXSExTTFR5cGVOYW1lci5oICovLAog
CQkJCTFDRUNCM0M2MjFGNTlDODcwMEY0NDU0MiAvKiBXSExTTE5hdGl2ZVR5cGVXcml0ZXIuY3Bw
ICovLAogCQkJCTFDRUNCM0M3MjFGNTlDODcwMEY0NDU0MiAvKiBXSExTTE5hdGl2ZVR5cGVXcml0
ZXIuaCAqLywKKwkJCQkxQ0VDQjNCMTIxRjJCOTg1MDBGNDQ1NDIgLyogV0hMU0xUeXBlTmFtZXIu
Y3BwICovLAorCQkJCTFDRUNCM0IwMjFGMkI5ODUwMEY0NDU0MiAvKiBXSExTTFR5cGVOYW1lci5o
ICovLAogCQkJKTsKIAkJCXBhdGggPSBNZXRhbDsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
CkBAIC0xODc0MCwxNCArMTg3MzAsNiBAQAogCQkJcGF0aCA9IG1hYzsKIAkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CiAJCX07Ci0JCTUxNjAzMDA5MENDNDI0NTQwMEM4QUMyNSAvKiBwb3NpeCAq
LyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJNTE2MDMwMEEw
Q0M0MjUxMjAwQzhBQzI1IC8qIEZpbGVTeXN0ZW1QT1NJWC5jcHAgKi8sCi0JCQkpOwotCQkJcGF0
aCA9IHBvc2l4OwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsKIAkJNTE2MEY0OTIw
QjBBQTcxNTAwQzFEMkFGIC8qIG1hYyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCkBAIC0yMDEwOCw3ICsyMDA5MCw2IEBACiAJCQkJQTdDRkIzRDQwQjdFRDExODAw
NzBDMzJEIC8qIERyYWdJbWFnZU1hYy5tbSAqLywKIAkJCQlFMUJBNjZGMDE3NDJCRDg2MDBDMjAy
NTEgLyogRHluYW1pY0xpbmtlckludGVycG9zaW5nLmggKi8sCiAJCQkJMUNBMTlFMDMwREMyNTU5
NTAwNjVBOTk0IC8qIEV2ZW50TG9vcE1hYy5tbSAqLywKLQkJCQlBMUNDMTE2MjFFNDkzRDAxMDBF
RkE2OUMgLyogRmlsZVN5c3RlbU1hYy5tbSAqLywKIAkJCQk5MzVDNDc2RTA5QUM0RDczMDBBNkFB
QjQgLyogS2V5RXZlbnRNYWMubW0gKi8sCiAJCQkJRjQ0QTVGNTcxRkVEMzgzMDAwN0Y1OTQ0IC8q
IExlZ2FjeU5TUGFzdGVib2FyZFR5cGVzLmggKi8sCiAJCQkJMDZFODFFRDYwQUI1RDVFOTAwQzg3
ODM3IC8qIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5oICovLApAQCAtMjI1NTgsNyArMjI1
MzksNiBAQAogCQkJCTdDNzk0MUUzMUM1NkMyOTMwMEE0QzU4RSAvKiBEYXRhRGV0ZWN0b3JzQ29y
ZVNvZnRMaW5rLmggKi8sCiAJCQkJN0M3OTQxRTIxQzU2QzI5MzAwQTRDNThFIC8qIERhdGFEZXRl
Y3RvcnNDb3JlU29mdExpbmsubW0gKi8sCiAJCQkJN0EwOUNFRjAxRjAxRDFGNzAwRTkzQkRCIC8q
IEZpbGVNb25pdG9yQ29jb2EubW0gKi8sCi0JCQkJNTE0QjNGNzUwQzcyMjA1NTAwMDUzMERGIC8q
IEZpbGVTeXN0ZW1Db2NvYS5tbSAqLywKIAkJCQlBNUM5NzRDRjExNDg1RkYxMDA2NkYyQUIgLyog
S2V5RXZlbnRDb2NvYS5oICovLAogCQkJCUE1Qzk3NEQwMTE0ODVGRjEwMDY2RjJBQiAvKiBLZXlF
dmVudENvY29hLm1tICovLAogCQkJCTFBNDgzMkIyMUE5NTNCQTYwMDhCNERGRSAvKiBMb2NhbGl6
ZWRTdHJpbmdzQ29jb2EubW0gKi8sCkBAIC0yNTQwMSw3ICsyNTM4MSw2IEBACiAJCQkJMDcyMjFC
OTIxN0NGMEFENDAwODQ4RTUxIC8qIG1lZGlhc3RyZWFtICovLAogCQkJCTU5Qzc3RjEwMTA1NDU5
MUMwMDUwNjEwNCAvKiBtb2NrICovLAogCQkJCTY1NkI4NEQ3MEFFQTFDRTkwMEEwOTVCNCAvKiBu
ZXR3b3JrICovLAotCQkJCTUxNjAzMDA5MENDNDI0NTQwMEM4QUMyNSAvKiBwb3NpeCAqLywKIAkJ
CQkxQTJFNkU1NjBDQzU1MUUwMDA0QTIwNjIgLyogc3FsICovLAogCQkJCUIyQzNEOUVDMEQwMDZD
MUQwMEVGNkYyNiAvKiB0ZXh0ICovLAogCQkJCUUxODgyMzVGMjAzMUY1MEYwMEI0MkRGMyAvKiB2
ciAqLywKQEAgLTI1NDQ2LDE0ICsyNTQyNSwxMSBAQAogCQkJCTA2NkM3NzJBMEFCNjAzQjcwMDIz
OENDNCAvKiBGaWxlQ2hvb3Nlci5oICovLAogCQkJCTUzNTFENEFFMURGOTE2QUMwMDgwMTBDRCAv
KiBGaWxlSGFuZGxlLmNwcCAqLywKIAkJCQk1MzUxRDRBRjFERjkxNkFDMDA4MDEwQ0QgLyogRmls
ZUhhbmRsZS5oICovLAotCQkJCTQ2ODlGMUFFMTI2N0JBRTEwMEU4RDM4MCAvKiBGaWxlTWV0YWRh
dGEuaCAqLywKIAkJCQk3QTA5Q0VFQjFGMDFDQzkzMDBFOTNCREIgLyogRmlsZU1vbml0b3IuY3Bw
ICovLAogCQkJCTdBMDlDRUVDMUYwMUNDOTMwMEU5M0JEQiAvKiBGaWxlTW9uaXRvci5oICovLAog
CQkJCTJFRjFCRkU4MTIxQzlGNDIwMEMyNzYyNyAvKiBGaWxlU3RyZWFtLmNwcCAqLywKIAkJCQky
RUYxQkZFOTEyMUM5RjQyMDBDMjc2MjcgLyogRmlsZVN0cmVhbS5oICovLAogCQkJCTJFRjFCRkY4
MTIxQ0IwQ0UwMEMyNzYyNyAvKiBGaWxlU3RyZWFtQ2xpZW50LmggKi8sCi0JCQkJQzU3RkVERTAx
MjEyRUU5QzAwOTdCRTY1IC8qIEZpbGVTeXN0ZW0uY3BwICovLAotCQkJCTUxNEIzRjcyMEM3MjIw
NDcwMDA1MzBERiAvKiBGaWxlU3lzdGVtLmggKi8sCiAJCQkJQkMwNzNCQTkwQzM5OUIxRjAwMEY1
OTc5IC8qIEZsb2F0Q29udmVyc2lvbi5oICovLAogCQkJCUNENEJFNTI5MUNFMTM0MjUwMDlEODdE
QSAvKiBHZW5lcmljVGFza1F1ZXVlLmNwcCAqLywKIAkJCQlDRDYyRkI5NDFBRjAxOEU3MDAxMkVE
N0QgLyogR2VuZXJpY1Rhc2tRdWV1ZS5oICovLApAQCAtMjkxNDIsNyArMjkxMTgsNiBAQAogCQkJ
CUY1NUIzREJFMTI1MUYxMkQwMDNFRjI2OSAvKiBGaWxlSW5wdXRUeXBlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk5NzZENkM4NjEyMkI4QTNEMDAxRkQxRjcgLyogRmlsZUxpc3QuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTgzNUQ1NEM1MUY0REU1MzgwMEU2MDY3MSAvKiBGaWxlTGlzdENyZWF0b3IuaCBp
biBIZWFkZXJzICovLAotCQkJCTQ2ODlGMUFGMTI2N0JBRTEwMEU4RDM4MCAvKiBGaWxlTWV0YWRh
dGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTdBMDlDRUYxMUYwMjA2OUIwMEU5M0JEQiAvKiBGaWxl
TW9uaXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc2RDZDODkxMjJCOEEzRDAwMUZEMUY3IC8q
IEZpbGVSZWFkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTJFNzU4NDFFMTI3NzlBREEwMDYyNjI4
QiAvKiBGaWxlUmVhZGVyTG9hZGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTI5MTUwLDcgKzI5MTI1
LDYgQEAKIAkJCQkyRURGMzY5RDEyMkM5NEI0MDAyRjdENEUgLyogRmlsZVJlYWRlclN5bmMuaCBp
biBIZWFkZXJzICovLAogCQkJCTJFRjFCRkVCMTIxQzlGNDIwMEMyNzYyNyAvKiBGaWxlU3RyZWFt
LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRUYxQkZGOTEyMUNCMENFMDBDMjc2MjcgLyogRmlsZVN0
cmVhbUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTE0QjNGNzMwQzcyMjA0NzAwMDUzMERG
IC8qIEZpbGVTeXN0ZW0uaCBpbiBIZWFkZXJzICovLAogCQkJCTgzRkIzMzcxMUY1MDhBNTQwMDk4
NkU1NCAvKiBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTgz
MDMzNTAyMUY1NDkwNTcwMDRERjcwNyAvKiBGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQk4MzAzMzUwMzFGNTQ5MDVBMDA0REY3MDcgLyogRmlsZVN5c3RlbUVu
dHJpZXNDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvR0NDb250cm9sbGVyLmNwcAppbmRleCBkMjUxZDJlY2UxZjE4YjI0MGE4OGJiZmIzYTIyYzJj
MjRmODBmNmNkLi44YTgzYzRiNmY2ZjU5NjA3ZGZhNzcwNDg0MjlkMDJiMWU0Mjk3MzNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5jcHAKQEAgLTI3LDcgKzI3
LDYgQEAKICNpbmNsdWRlICJHQ0NvbnRyb2xsZXIuaCIKIAogI2luY2x1ZGUgIkNvbW1vblZNLmgi
Ci0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkpTSFRNTERvY3VtZW50LmgiCiAj
aW5jbHVkZSAiTG9jYXRpb24uaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwLmg+CkBA
IC0zNiw2ICszNSw3IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVk0uaD4KICNpbmNsdWRl
IDxwYWwvTG9nZ2luZy5oPgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisjaW5jbHVkZSA8
d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNs
dWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9EYXRhVHJhbnNmZXJJdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJ
dGVtLmNwcAppbmRleCBhM2VjYzVhNWM5ZTBmMzBkNzYwMzI4MTdmMGQ0NjM5NjMzZmYxYThiLi41
OWY5Nzg2ZWQ4Y2ZhNjQ5ZTA3ZGRiN2Q4ODRhYzkyNDMyOTc2MzljIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RhdGFUcmFuc2Zlckl0ZW0uY3BwCkBAIC0zNiwxMSArMzYsMTEgQEAKICNpbmNsdWRlICJE
YXRhVHJhbnNmZXJJdGVtTGlzdC5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAi
RmlsZS5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtRGly
ZWN0b3J5RW50cnkuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtRmlsZUVudHJ5LmgiCiAjaW5jbHVk
ZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlN0cmluZ0NhbGxiYWNrLmgi
CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJD
b2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNv
Y29hLm1tCmluZGV4IDk3MjE3ZjFkNzVkMGU1NDZmY2Y4NDMxZTJkNGFmOGJhNTQzYWI2MWMuLjI1
NGEzNjhmYTc3NGFkNjM3MmQ0NmYxNTNjNWE5NWM0ZWUyNDI4YzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCkBAIC0z
Nyw3ICszNyw2IEBACiAjaW1wb3J0ICJFZGl0b3IuaCIKICNpbXBvcnQgIkVkaXRvckNsaWVudC5o
IgogI2ltcG9ydCAiRmlsZS5oIgotI2ltcG9ydCAiRmlsZVN5c3RlbS5oIgogI2ltcG9ydCAiRnJh
bWUuaCIKICNpbXBvcnQgIkZyYW1lTG9hZGVyLmgiCiAjaW1wb3J0ICJGcmFtZUxvYWRlckNsaWVu
dC5oIgpAQCAtNjUsNiArNjQsNyBAQAogI2ltcG9ydCAiV2ViTlNBdHRyaWJ1dGVkU3RyaW5nRXh0
cmFzLmgiCiAjaW1wb3J0ICJtYXJrdXAuaCIKICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNBdHRy
aWJ1dGVkU3RyaW5nU1BJLmg+CisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8
d3RmL1NvZnRMaW5raW5nLmg+CiAjaW1wb3J0IDx3dGYvVVJMUGFyc2VyLmg+CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0ZpbGUuY3BwCmluZGV4IGI3M2ZjZGU3OWY0NjA3OTJjOTI2YzA3NWZiYWFmNjY0OGE3MjQx
MzEuLmFkYjMwYzkzM2NhMmZiMjVjZWY1ZDBjYTQxMzY1NjBiYmE2ZDgxMTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9GaWxlLmNwcApAQCAtMjcsMTEgKzI3LDExIEBACiAjaW5jbHVkZSAiRmlsZS5oIgogCiAj
aW5jbHVkZSAiQmxvYlVSTC5oIgotI2luY2x1ZGUgIkZpbGVNZXRhZGF0YS5oIgotI2luY2x1ZGUg
IkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAi
VGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oIgogI2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5oPgorI2lu
Y2x1ZGUgPHd0Zi9GaWxlTWV0YWRhdGEuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvRmlsZUNvY29hLm1tCmluZGV4IDIwYmU2ZjdhZWRlY2E3NTM0ODM1NjNi
MWJlNGY5MDYyZmE0MzhhMDMuLjY2NGY5YTUzNjEzZGYyNmNhMTdjNzA3YzIxYjUwYzY0NjQ1MjA0
ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZUNvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZUNvY29hLm1tCkBAIC0yOCw3ICsyOCw3IEBACiAK
ICNpZiBFTkFCTEUoRklMRV9SRVBMQUNFTUVOVCkKIAotI2ltcG9ydCAiRmlsZVN5c3RlbS5oIgor
I2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAj
aW1wb3J0IDxNb2JpbGVDb3JlU2VydmljZXMvTW9iaWxlQ29yZVNlcnZpY2VzLmg+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcAppbmRleCAwM2FmM2E5NjM0OTRmYWYwMDEyZTIxYTkz
OGY1MTkxNzgwMzA4NTA4Li45OThmOWVmYTk0ZTJhNzUyMTZiYjRmMzlhNzk2ODY0OWMxMzE3ZGQ5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKQEAgLTMwLDcgKzMwLDYgQEAK
ICNpbmNsdWRlICJGaWxlLmgiCiAjaW5jbHVkZSAiRmlsZUxpc3QuaCIKICNpbmNsdWRlICJGaWxl
TGlzdENyZWF0b3IuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiRm9ybUNv
bnRyb2xsZXIuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1l
bnQuaCIKQEAgLTQzLDYgKzQyLDcgQEAKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUg
IlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgorI2luY2x1
ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4K
ICNpbmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlTGlzdENyZWF0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlTGlzdENyZWF0b3IuY3BwCmluZGV4IDc2ZjU2
NTk3MGFkMWRkOGQ4MTA2YzI1YTU3OWU0NTkxYmFiZDQ5YjguLjE1NTZmYzI5OWNiMjM3M2IwYzU5
ODk1MjBhNzJjMzExNmNlMzllYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmls
ZUxpc3RDcmVhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVMaXN0Q3JlYXRv
ci5jcHAKQEAgLTI4LDkgKzI4LDkgQEAKIAogI2luY2x1ZGUgIkZpbGVDaG9vc2VyLmgiCiAjaW5j
bHVkZSAiRmlsZUxpc3QuaCIKLSNpbmNsdWRlICJGaWxlTWV0YWRhdGEuaCIKLSNpbmNsdWRlICJG
aWxlU3lzdGVtLmgiCiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkQ29waWVyLmg+CisjaW5jbHVk
ZSA8d3RmL0ZpbGVNZXRhZGF0YS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKaW5kZXggNzU1ZjFhMjlhZDdjNTdjY2Mz
YmVhNWVmYTI1NWI2NTZiYmRjYzMwOS4uOGEzM2U4ODcwY2MzNmJjNmRlMmZjYThkMWQ1OGM0Y2Nh
NmI4ZjNlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAiRG9j
dW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJET01BcHBsaWNhdGlvbkNhY2hlLmgiCiAjaW5jbHVk
ZSAiRXZlbnROYW1lcy5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJGcmFt
ZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGll
bnQuaCIKQEAgLTQ0LDYgKzQzLDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNp
bmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlN1YnJlc291cmNlTG9hZGVyLmgiCisjaW5j
bHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvVVVJRC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAppbmRleCBlODE0ODNjMzYyM2NkMDM0MjQ0
NDg0Y2QwZjVmZGM5MjQ5NTVhZTMyLi44MmFkZmYzMDMzNWEyZTJiYjljYWE3YjRmNjY4ODRkMDkw
ZTc5NTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKQEAgLTMwLDEyICszMCwxMiBAQAogI2luY2x1
ZGUgIkFwcGxpY2F0aW9uQ2FjaGVHcm91cC5oIgogI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVI
b3N0LmgiCiAjaW5jbHVkZSAiQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmgiCi0jaW5jbHVkZSAi
RmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIlNRTGl0ZURhdGFiYXNlVHJhY2tlci5oIgogI2luY2x1
ZGUgIlNRTGl0ZVN0YXRlbWVudC5oIgogI2luY2x1ZGUgIlNRTGl0ZVRyYW5zYWN0aW9uLmgiCiAj
aW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbkRhdGEu
aCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRy
YXMuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1VVSUQuaD4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwCmluZGV4IGRiMTc3ZThkYWU4YzYwZTZlNzE4MjI5ZmIzYzAzZDM2ZGZmZDU0NTIu
LjI2YTI1ODE5YzFhNzc0MWQxMmNkOTY0NjI5YWQxNTk3OTk4NmQwZDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcApAQCAtNTEsNyArNTEsNiBAQAogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRXZl
bnROYW1lcy5oIgogI2luY2x1ZGUgIkV4dGVuc2lvblN0eWxlU2hlZXRzLmgiCi0jaW5jbHVkZSAi
RmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkZvY3VzQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkZy
YW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKQEAgLTEyMiw2ICsx
MjEsNyBAQAogI2luY2x1ZGUgIldlYkdMU3RhdGVUcmFja2VyLmgiCiAjaW5jbHVkZSAiV2hlZWxF
dmVudERlbHRhRmlsdGVyLmgiCiAjaW5jbHVkZSAiV2lkZ2V0LmgiCisjaW5jbHVkZSA8d3RmL0Zp
bGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+CiAjaW5j
bHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcAppbmRleCBiNThmYWFhMTY3YTk2NzI2
YWEyMTFmZTFmMDI3NGJjNjZlOTYxNjViLi4zYWQ5MjFjYzU0ZGUxZmVmZTNkMTU3MWYyMmUyNTMy
MTJhOGRlMjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2lu
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcApAQCAtMzAs
MTUgKzMwLDE1IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKIAogI2luY2x1ZGUgIkJs
b2JVUkwuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCi0jaW5jbHVkZSA8d3RmL1VSTC5oPgog
I2luY2x1ZGUgIlNjaGVtZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlQb2xpY3kuaCIK
ICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlQmxvYlJlZ2lz
dHJ5LmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTWFpblRo
cmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9T
dGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQnVpbGRlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAKaW5kZXggMDVmOGIxOWRhZTU4NzlkMGNkZmRhN2M3
NjQ5ZWNhMmI0NGMzOThhNi4uNDMwY2I4YjBiM2FjMzZjY2E5NjExZTBhMWYwOWUzNWFlMTBiMGQ5
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcApAQCAtMjcs
OSArMjcsOSBAQAogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luRGF0YS5oIgogCiAjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIK
ICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMu
aD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVIYW5kbGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVIYW5kbGUuaAppbmRleCBkMTE4MzA4Njk2M2QyMTIz
N2I5MGIxYTgyNTg1Yjc2NWJiYzEzZGYyLi41MGQ4MjRjYWVlOWJhMTI0MDk4NDM1ZWE3MjE1ZDE1
MTc4N2RiY2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlSGFuZGxl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUhhbmRsZS5oCkBAIC0yOCw5ICsy
OCw4IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgotCiAjaW5j
bHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0ZpbGVNZXRhZGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZU1ldGFkYXRhLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkODg0OTUzZTc2NzVkOTJjMDYzOGRlY2Fk
ODU3Y2Q0MWE1OWM1NjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZU1ldGFkYXRhLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw1MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
Ci0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
Ci0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlIDx3dGYvV2FsbFRpbWUu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1Y3QgRmlsZU1ldGFkYXRhIHsKLSAgICAv
LyBUaGUgbGFzdCBtb2RpZmljYXRpb24gdGltZSBvZiB0aGUgZmlsZSwgaW4gc2Vjb25kcy4KLSAg
ICBXYWxsVGltZSBtb2RpZmljYXRpb25UaW1lOwotCi0gICAgLy8gVGhlIGxlbmd0aCBvZiB0aGUg
ZmlsZSBpbiBieXRlcy4KLSAgICBsb25nIGxvbmcgbGVuZ3RoOwotCi0gICAgYm9vbCBpc0hpZGRl
bjsKLQotICAgIGVudW0gY2xhc3MgVHlwZSB7IEZpbGUsIERpcmVjdG9yeSwgU3ltYm9saWNMaW5r
IH07Ci0gICAgVHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9GaWxlU3RyZWFtLmNwcAppbmRleCBlYTkxNzM3NGI0YzhiNGE0ZWEwNDNj
MjlhYmY1NDMxNTkyMmE4OWUyLi44OTNiYjMzOTQ3NmNlZmRhOGRmMTBiYzkyMGMwYjM1ODI1MTkx
NTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3RyZWFtLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3RyZWFtLmNwcApAQCAtMjksMTAgKzI5
LDggQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0KICNpbmNsdWRlICJGaWxlU3RyZWFt
LmgiCiAKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0ZpbGVTdHJlYW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJl
YW0uaAppbmRleCBhYTAxMWVhMjNlMTg1NGM0YjkwMjA1OTYyNTM3NjEzYTFhYjZlMTJiLi5hMmZi
OGU1ZmFhMjU0YmM4ZTVjY2U5ZTFiNGM2NjMxYjhkMWEwNTRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vRmlsZVN0cmVhbS5oCkBAIC0yOCwxMCArMjgsOSBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci0jaWZuZGVmIEZpbGVTdHJlYW1faAotI2RlZmluZSBGaWxlU3RyZWFtX2gKKyNwcmFnbWEgb25j
ZQogCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjQsNSArNjMsMyBAQCBwcml2YXRlOgogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRmlsZVN0cmVhbV9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBlZDlkMzdhYWExMzE2MjgzZGE3ZWYyMjQ2YjNjYTk0MTBhZDI1ZDIyLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0ZpbGVTeXN0ZW0uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMzY3ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDctMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0g
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCi0KLSNpbmNs
dWRlICJGaWxlTWV0YWRhdGEuaCIKLSNpbmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+Ci0jaW5jbHVk
ZSA8d3RmL1Njb3BlLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KLQotI2lmICFPUyhXSU5ET1dTKQotI2luY2x1ZGUg
PGZjbnRsLmg+Ci0jaW5jbHVkZSA8c3lzL21tYW4uaD4KLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgot
I2luY2x1ZGUgPHVuaXN0ZC5oPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFt
ZXNwYWNlIEZpbGVTeXN0ZW0gewotCi0vLyBUaGUgZm9sbG93aW5nIGxvd2VyLUFTQ0lJIGNoYXJh
Y3RlcnMgbmVlZCBlc2NhcGluZyB0byBiZSB1c2VkIGluIGEgZmlsZW5hbWUKLS8vIGFjcm9zcyBh
bGwgc3lzdGVtcywgaW5jbHVkaW5nIFdpbmRvd3M6Ci0vLyAgICAgLSBVbnByaW50YWJsZSBBU0NJ
SSAoMDAtMUYpCi0vLyAgICAgLSBTcGFjZSAgICAgICAgICAgICAoMjApCi0vLyAgICAgLSBEb3Vi
bGUgcXVvdGUgICAgICAoMjIpCi0vLyAgICAgLSBQZXJjZW50ICAgICAgICAgICAoMjUpIChlc2Nh
cGVkIGJlY2F1c2UgaXQgaXMgb3VyIGVzY2FwZSBjaGFyYWN0ZXIpCi0vLyAgICAgLSBBc3Rlcmlz
ayAgICAgICAgICAoMkEpCi0vLyAgICAgLSBTbGFzaCAgICAgICAgICAgICAoMkYpCi0vLyAgICAg
LSBDb2xvbiAgICAgICAgICAgICAoM0EpCi0vLyAgICAgLSBMZXNzLXRoYW4gICAgICAgICAoM0Mp
Ci0vLyAgICAgLSBHcmVhdGVyLXRoYW4gICAgICAoM0UpCi0vLyAgICAgLSBRdWVzdGlvbiBNYXJr
ICAgICAoM0YpCi0vLyAgICAgLSBCYWNrc2xhc2ggICAgICAgICAoNUMpCi0vLyAgICAgLSBQaXBl
ICAgICAgICAgICAgICAoN0MpCi0vLyAgICAgLSBEZWxldGUgICAgICAgICAgICAoN0YpCi0KLXN0
YXRpYyBjb25zdCBib29sIG5lZWRzRXNjYXBpbmdbMTI4XSA9IHsKLSAgICAvKiAwMC0wNyAqLyB0
cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgCi0g
ICAgLyogMDgtMEYgKi8gdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAg
dHJ1ZSwgIHRydWUsIAotCi0gICAgLyogMTAtMTcgKi8gdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1
ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsIAotICAgIC8qIDE4LTFGICovIHRydWUsICB0
cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAKLQotICAgIC8q
IDIwLTI3ICovIHRydWUsICBmYWxzZSwgdHJ1ZSwgIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgIGZhbHNl
LCBmYWxzZSwgCi0gICAgLyogMjgtMkYgKi8gZmFsc2UsIGZhbHNlLCB0cnVlLCAgZmFsc2UsIGZh
bHNlLCBmYWxzZSwgZmFsc2UsIHRydWUsIAotICAgIAotICAgIC8qIDMwLTM3ICovIGZhbHNlLCBm
YWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgCi0gICAgLyog
MzgtM0YgKi8gZmFsc2UsIGZhbHNlLCB0cnVlLCAgZmFsc2UsIHRydWUsICBmYWxzZSwgdHJ1ZSwg
IHRydWUsIAotICAgIAotICAgIC8qIDQwLTQ3ICovIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNl
LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgCi0gICAgLyogNDgtNEYgKi8gZmFsc2UsIGZh
bHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLAotICAgIAotICAg
IC8qIDUwLTU3ICovIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZh
bHNlLCBmYWxzZSwgCi0gICAgLyogNTgtNUYgKi8gZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2Us
IHRydWUsICBmYWxzZSwgZmFsc2UsIGZhbHNlLAotICAgIAotICAgIC8qIDYwLTY3ICovIGZhbHNl
LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgCi0gICAg
LyogNjgtNkYgKi8gZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFs
c2UsIGZhbHNlLAotICAgIAotICAgIC8qIDcwLTc3ICovIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZh
bHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgCi0gICAgLyogNzgtN0YgKi8gZmFsc2Us
IGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUsICBmYWxzZSwgZmFsc2UsIHRydWUsIAotfTsKLQot
c3RhdGljIGlubGluZSBib29sIHNob3VsZEVzY2FwZVVDaGFyKFVDaGFyIGNoYXJhY3RlciwgVUNo
YXIgcHJldmlvdXNDaGFyYWN0ZXIsIFVDaGFyIG5leHRDaGFyYWN0ZXIpCi17Ci0gICAgaWYgKGNo
YXJhY3RlciA8PSAxMjcpCi0gICAgICAgIHJldHVybiBuZWVkc0VzY2FwaW5nW2NoYXJhY3Rlcl07
Ci0KLSAgICBpZiAoVTE2X0lTX0xFQUQoY2hhcmFjdGVyKSAmJiAhVTE2X0lTX1RSQUlMKG5leHRD
aGFyYWN0ZXIpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIGlmIChVMTZfSVNfVFJBSUwo
Y2hhcmFjdGVyKSAmJiAhVTE2X0lTX0xFQUQocHJldmlvdXNDaGFyYWN0ZXIpKQotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotU3RyaW5nIGVuY29kZUZvckZp
bGVOYW1lKGNvbnN0IFN0cmluZyYgaW5wdXRTdHJpbmcpCi17Ci0gICAgdW5zaWduZWQgbGVuZ3Ro
ID0gaW5wdXRTdHJpbmcubGVuZ3RoKCk7Ci0gICAgaWYgKCFsZW5ndGgpCi0gICAgICAgIHJldHVy
biBpbnB1dFN0cmluZzsKLQotICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OwotICAgIHJlc3VsdC5y
ZXNlcnZlQ2FwYWNpdHkobGVuZ3RoKTsKLQotICAgIFVDaGFyIHByZXZpb3VzQ2hhcmFjdGVyOwot
ICAgIFVDaGFyIGNoYXJhY3RlciA9IDA7Ci0gICAgVUNoYXIgbmV4dENoYXJhY3RlciA9IGlucHV0
U3RyaW5nWzBdOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewot
ICAgICAgICBwcmV2aW91c0NoYXJhY3RlciA9IGNoYXJhY3RlcjsKLSAgICAgICAgY2hhcmFjdGVy
ID0gbmV4dENoYXJhY3RlcjsKLSAgICAgICAgbmV4dENoYXJhY3RlciA9IGkgKyAxIDwgbGVuZ3Ro
ID8gaW5wdXRTdHJpbmdbaSArIDFdIDogMDsKLQotICAgICAgICBpZiAoc2hvdWxkRXNjYXBlVUNo
YXIoY2hhcmFjdGVyLCBwcmV2aW91c0NoYXJhY3RlciwgbmV4dENoYXJhY3RlcikpIHsKLSAgICAg
ICAgICAgIGlmIChjaGFyYWN0ZXIgPD0gMjU1KSB7Ci0gICAgICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZCgnJScpOwotICAgICAgICAgICAgICAgIGFwcGVuZEJ5dGVBc0hleChjaGFyYWN0ZXIsIHJl
c3VsdCk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmRMaXRlcmFsKCIlKyIpOwotICAgICAgICAgICAgICAgIGFwcGVuZEJ5dGVBc0hleChjaGFyYWN0
ZXIgPj4gOCwgcmVzdWx0KTsKLSAgICAgICAgICAgICAgICBhcHBlbmRCeXRlQXNIZXgoY2hhcmFj
dGVyLCByZXN1bHQpOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoY2hhcmFjdGVyKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0LnRv
U3RyaW5nKCk7Ci19Ci0KLVN0cmluZyBkZWNvZGVGcm9tRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBp
bnB1dFN0cmluZykKLXsKLSAgICB1bnNpZ25lZCBsZW5ndGggPSBpbnB1dFN0cmluZy5sZW5ndGgo
KTsKLSAgICBpZiAoIWxlbmd0aCkKLSAgICAgICAgcmV0dXJuIGlucHV0U3RyaW5nOwotCi0gICAg
U3RyaW5nQnVpbGRlciByZXN1bHQ7Ci0gICAgcmVzdWx0LnJlc2VydmVDYXBhY2l0eShsZW5ndGgp
OwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAg
IGlmIChpbnB1dFN0cmluZ1tpXSAhPSAnJScpIHsKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
aW5wdXRTdHJpbmdbaV0pOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAg
ICAgICAvLyBJZiB0aGUgaW5wdXQgc3RyaW5nIGlzIGEgdmFsaWQgZW5jb2RlZCBmaWxlbmFtZSwg
aXQgbXVzdCBiZSBhdCBsZWFzdCAyIGNoYXJhY3RlcnMgbG9uZ2VyCi0gICAgICAgIC8vIHRoYW4g
dGhlIGN1cnJlbnQgaW5kZXggdG8gYWNjb3VudCBmb3IgdGhpcyBwZXJjZW50IGVuY29kZWQgdmFs
dWUuCi0gICAgICAgIGlmIChpICsgMiA+PSBsZW5ndGgpCi0gICAgICAgICAgICByZXR1cm4geyB9
OwotCi0gICAgICAgIGlmIChpbnB1dFN0cmluZ1tpKzFdICE9ICcrJykgewotICAgICAgICAgICAg
aWYgKCFpc0FTQ0lJSGV4RGlnaXQoaW5wdXRTdHJpbmdbaSArIDFdKSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4geyB9OwotICAgICAgICAgICAgaWYgKCFpc0FTQ0lJSGV4RGlnaXQoaW5wdXRTdHJp
bmdbaSArIDJdKSkKLSAgICAgICAgICAgICAgICByZXR1cm4geyB9OwotICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZCh0b0FTQ0lJSGV4VmFsdWUoaW5wdXRTdHJpbmdbaSArIDFdLCBpbnB1dFN0cmlu
Z1tpICsgMl0pKTsKLSAgICAgICAgICAgIGkgKz0gMjsKLSAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICB9Ci0KLSAgICAgICAgLy8gSWYgdGhlIGlucHV0IHN0cmluZyBpcyBhIHZhbGlkIGVu
Y29kZWQgZmlsZW5hbWUsIGl0IG11c3QgYmUgYXQgbGVhc3QgNSBjaGFyYWN0ZXJzIGxvbmdlcgot
ICAgICAgICAvLyB0aGFuIHRoZSBjdXJyZW50IGluZGV4IHRvIGFjY291bnQgZm9yIHRoaXMgcGVy
Y2VudCBlbmNvZGVkIHZhbHVlLgotICAgICAgICBpZiAoaSArIDUgPj0gbGVuZ3RoKQotICAgICAg
ICAgICAgcmV0dXJuIHsgfTsKLQotICAgICAgICBpZiAoIWlzQVNDSUlIZXhEaWdpdChpbnB1dFN0
cmluZ1tpICsgMl0pKQotICAgICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICAgICAgaWYgKCFpc0FT
Q0lJSGV4RGlnaXQoaW5wdXRTdHJpbmdbaSArIDNdKSkKLSAgICAgICAgICAgIHJldHVybiB7IH07
Ci0gICAgICAgIGlmICghaXNBU0NJSUhleERpZ2l0KGlucHV0U3RyaW5nW2kgKyA0XSkpCi0gICAg
ICAgICAgICByZXR1cm4geyB9OwotICAgICAgICBpZiAoIWlzQVNDSUlIZXhEaWdpdChpbnB1dFN0
cmluZ1tpICsgNV0pKQotICAgICAgICAgICAgcmV0dXJuIHsgfTsKLQotICAgICAgICByZXN1bHQu
YXBwZW5kKHRvQVNDSUlIZXhWYWx1ZShpbnB1dFN0cmluZ1tpICsgMl0sIGlucHV0U3RyaW5nW2kg
KyAzXSkgPDwgOCB8IHRvQVNDSUlIZXhWYWx1ZShpbnB1dFN0cmluZ1tpICsgNF0sIGlucHV0U3Ry
aW5nW2kgKyA1XSkpOwotICAgICAgICBpICs9IDU7Ci0gICAgfQotCi0gICAgcmV0dXJuIHJlc3Vs
dC50b1N0cmluZygpOwotfQotCi1TdHJpbmcgbGFzdENvbXBvbmVudE9mUGF0aElnbm9yaW5nVHJh
aWxpbmdTbGFzaChjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0jaWYgT1MoV0lORE9XUykKLSAgICBj
aGFyIHBhdGhTZXBhcmF0b3IgPSAnXFwnOwotI2Vsc2UKLSAgICBjaGFyIHBhdGhTZXBhcmF0b3Ig
PSAnLyc7Ci0jZW5kaWYKLQotICAgIGF1dG8gcG9zaXRpb24gPSBwYXRoLnJldmVyc2VGaW5kKHBh
dGhTZXBhcmF0b3IpOwotICAgIGlmIChwb3NpdGlvbiA9PSBub3RGb3VuZCkKLSAgICAgICAgcmV0
dXJuIHBhdGg7Ci0KLSAgICBzaXplX3QgZW5kT2ZTdWJzdHJpbmcgPSBwYXRoLmxlbmd0aCgpIC0g
MTsKLSAgICBpZiAocG9zaXRpb24gPT0gZW5kT2ZTdWJzdHJpbmcpIHsKLSAgICAgICAgLS1lbmRP
ZlN1YnN0cmluZzsKLSAgICAgICAgcG9zaXRpb24gPSBwYXRoLnJldmVyc2VGaW5kKHBhdGhTZXBh
cmF0b3IsIGVuZE9mU3Vic3RyaW5nKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gcGF0aC5zdWJzdHJp
bmcocG9zaXRpb24gKyAxLCBlbmRPZlN1YnN0cmluZyAtIHBvc2l0aW9uKTsKLX0KLQotYm9vbCBh
cHBlbmRGaWxlQ29udGVudHNUb0ZpbGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBQbGF0Zm9y
bUZpbGVIYW5kbGUmIHRhcmdldCkKLXsKLSAgICBhdXRvIHNvdXJjZSA9IG9wZW5GaWxlKHBhdGgs
IEZpbGVPcGVuTW9kZTo6UmVhZCk7Ci0KLSAgICBpZiAoIWlzSGFuZGxlVmFsaWQoc291cmNlKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgc3RhdGljIGludCBidWZmZXJTaXplID0gMSA8
PCAxOTsKLSAgICBWZWN0b3I8Y2hhcj4gYnVmZmVyKGJ1ZmZlclNpemUpOwotCi0gICAgYXV0byBm
aWxlQ2xvc2VyID0gV1RGOjptYWtlU2NvcGVFeGl0KFtzb3VyY2VdKCkgewotICAgICAgICBQbGF0
Zm9ybUZpbGVIYW5kbGUgaGFuZGxlID0gc291cmNlOwotICAgICAgICBjbG9zZUZpbGUoaGFuZGxl
KTsKLSAgICB9KTsKLQotICAgIGRvIHsKLSAgICAgICAgaW50IHJlYWRCeXRlcyA9IHJlYWRGcm9t
RmlsZShzb3VyY2UsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlclNpemUpOwotICAgICAgICAKLSAgICAg
ICAgaWYgKHJlYWRCeXRlcyA8IDApCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAg
ICAgaWYgKHdyaXRlVG9GaWxlKHRhcmdldCwgYnVmZmVyLmRhdGEoKSwgcmVhZEJ5dGVzKSAhPSBy
ZWFkQnl0ZXMpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgaWYgKHJlYWRC
eXRlcyA8IGJ1ZmZlclNpemUpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9IHdoaWxl
ICh0cnVlKTsKLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi0gICAgCi1ib29sIGZp
bGVzSGF2ZVNhbWVWb2x1bWUoY29uc3QgU3RyaW5nJiBmaWxlQSwgY29uc3QgU3RyaW5nJiBmaWxl
QikKLXsKLSAgICBhdXRvIGZzUmVwRmlsZUEgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmls
ZUEpOwotICAgIGF1dG8gZnNSZXBGaWxlQiA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWxl
Qik7Ci0gICAgCi0gICAgaWYgKGZzUmVwRmlsZUEuaXNOdWxsKCkgfHwgZnNSZXBGaWxlQi5pc051
bGwoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYm9vbCByZXN1bHQgPSBmYWxzZTsK
LQotICAgIGF1dG8gZmlsZUFEZXYgPSBnZXRGaWxlRGV2aWNlSWQoZnNSZXBGaWxlQSk7Ci0gICAg
YXV0byBmaWxlQkRldiA9IGdldEZpbGVEZXZpY2VJZChmc1JlcEZpbGVCKTsKLQotICAgIGlmIChm
aWxlQURldiAmJiBmaWxlQkRldikKLSAgICAgICAgcmVzdWx0ID0gKGZpbGVBRGV2ID09IGZpbGVC
RGV2KTsKLSAgICAKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0jaWYgIVBMQVRGT1JNKE1BQykK
LQotdm9pZCBzZXRNZXRhZGF0YVVSTChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmKQotewotfQotCi1ib29sIGNhbkV4Y2x1ZGVGcm9tQmFja3VwKCkKLXsKLSAgICBy
ZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgZXhjbHVkZUZyb21CYWNrdXAoY29uc3QgU3RyaW5nJikK
LXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLSNlbmRpZgotCi1NYXBwZWRGaWxlRGF0YTo6fk1h
cHBlZEZpbGVEYXRhKCkKLXsKLSNpZiAhT1MoV0lORE9XUykKLSAgICBpZiAoIW1fZmlsZURhdGEp
Ci0gICAgICAgIHJldHVybjsKLSAgICBtdW5tYXAobV9maWxlRGF0YSwgbV9maWxlU2l6ZSk7Ci0j
ZW5kaWYKLX0KLQotTWFwcGVkRmlsZURhdGE6Ok1hcHBlZEZpbGVEYXRhKGNvbnN0IFN0cmluZyYg
ZmlsZVBhdGgsIGJvb2wmIHN1Y2Nlc3MpCi17Ci0jaWYgT1MoV0lORE9XUykKLSAgICAvLyBGSVhN
RTogSW1wbGVtZW50IG1hcHBpbmcKLSAgICBzdWNjZXNzID0gZmFsc2U7Ci0jZWxzZQotICAgIENT
dHJpbmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZVBhdGgpOwotICAgIGlu
dCBmZCA9ICFmc1JlcC5pc051bGwoKSA/IG9wZW4oZnNSZXAuZGF0YSgpLCBPX1JET05MWSkgOiAt
MTsKLSAgICBpZiAoZmQgPCAwKSB7Ci0gICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIHN0cnVjdCBzdGF0IGZpbGVTdGF0OwotICAgIGlmIChmc3Rh
dChmZCwgJmZpbGVTdGF0KSkgewotICAgICAgICBjbG9zZShmZCk7Ci0gICAgICAgIHN1Y2Nlc3Mg
PSBmYWxzZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHVuc2lnbmVkIHNpemU7Ci0g
ICAgaWYgKCFXVEY6OmNvbnZlcnRTYWZlbHkoZmlsZVN0YXQuc3Rfc2l6ZSwgc2l6ZSkpIHsKLSAg
ICAgICAgY2xvc2UoZmQpOwotICAgICAgICBzdWNjZXNzID0gZmFsc2U7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBpZiAoIXNpemUpIHsKLSAgICAgICAgY2xvc2UoZmQpOwotICAgICAg
ICBzdWNjZXNzID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHZvaWQqIGRh
dGEgPSBtbWFwKDAsIHNpemUsIFBST1RfUkVBRCwgTUFQX0ZJTEUgfCBNQVBfU0hBUkVELCBmZCwg
MCk7Ci0gICAgY2xvc2UoZmQpOwotCi0gICAgaWYgKGRhdGEgPT0gTUFQX0ZBSUxFRCkgewotICAg
ICAgICBzdWNjZXNzID0gZmFsc2U7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBzdWNj
ZXNzID0gdHJ1ZTsKLSAgICBtX2ZpbGVEYXRhID0gZGF0YTsKLSAgICBtX2ZpbGVTaXplID0gc2l6
ZTsKLSNlbmRpZgotfQotCi1QbGF0Zm9ybUZpbGVIYW5kbGUgb3BlbkFuZExvY2tGaWxlKGNvbnN0
IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlIG9wZW5Nb2RlLCBPcHRpb25TZXQ8RmlsZUxvY2tN
b2RlPiBsb2NrTW9kZSkKLXsKLSAgICBhdXRvIGhhbmRsZSA9IG9wZW5GaWxlKHBhdGgsIG9wZW5N
b2RlKTsKLSAgICBpZiAoaGFuZGxlID09IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCi0gICAg
ICAgIHJldHVybiBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOwotCi0jaWYgVVNFKEZJTEVfTE9D
SykKLSAgICBib29sIGxvY2tlZCA9IGxvY2tGaWxlKGhhbmRsZSwgbG9ja01vZGUpOwotICAgIEFT
U0VSVF9VTlVTRUQobG9ja2VkLCBsb2NrZWQpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0obG9j
a01vZGUpOwotI2VuZGlmCi0KLSAgICByZXR1cm4gaGFuZGxlOwotfQotCi12b2lkIHVubG9ja0Fu
ZENsb3NlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlKQotewotI2lmIFVTRShGSUxFX0xP
Q0spCi0gICAgYm9vbCB1bmxvY2tlZCA9IHVubG9ja0ZpbGUoaGFuZGxlKTsKLSAgICBBU1NFUlRf
VU5VU0VEKHVubG9ja2VkLCB1bmxvY2tlZCk7Ci0jZW5kaWYKLSAgICBjbG9zZUZpbGUoaGFuZGxl
KTsKLX0KLQotYm9vbCBmaWxlSXNEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBTaG91bGRG
b2xsb3dTeW1ib2xpY0xpbmtzIHNob3VsZEZvbGxvd1N5bWJvbGljTGlua3MpCi17Ci0gICAgYXV0
byBtZXRhZGF0YSA9IHNob3VsZEZvbGxvd1N5bWJvbGljTGlua3MgPT0gU2hvdWxkRm9sbG93U3lt
Ym9saWNMaW5rczo6WWVzID8gZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3MocGF0aCkgOiBm
aWxlTWV0YWRhdGEocGF0aCk7Ci0gICAgaWYgKCFtZXRhZGF0YSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIHJldHVybiBtZXRhZGF0YS52YWx1ZSgpLnR5cGUgPT0gRmlsZU1ldGFkYXRhOjpU
eXBlOjpEaXJlY3Rvcnk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEZpbGVTeXN0ZW0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVT
eXN0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggM2NlYmNhYTA1MzliNTlkOTNlNzJlMDk4NDBiMjNiMWRhYzYz
ODExYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyMjUg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNy0yMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwOCBDb2xsYWJvcmEsIEx0ZC4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKLSAqIDMuICBOZWl0aGVyIHRoZSBu
YW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLiAKLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgPHRpbWUuaD4KLSNpbmNsdWRlIDx1dGls
aXR5PgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL09wdGlvblNldC5o
PgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KLSNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotI2lmIFVTRShDRikKLSNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+Ci0jZW5kaWYKLQotI2lmIFVTRShDRikKLXR5cGVkZWYgY29uc3Qgc3Ry
dWN0IF9fQ0ZEYXRhKiBDRkRhdGFSZWY7Ci0jZW5kaWYKLQotT0JKQ19DTEFTUyBOU1N0cmluZzsK
LQotI2lmIFBMQVRGT1JNKFdJTikKLXR5cGVkZWYgdm9pZCAqSEFORExFOwotI2VuZGlmCi0KLSNp
ZiBVU0UoR0xJQikKLXR5cGVkZWYgc3RydWN0IF9HRmlsZUlPU3RyZWFtIEdGaWxlSU9TdHJlYW07
Ci0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1Y3QgRmlsZU1ldGFkYXRhOwot
Ci1uYW1lc3BhY2UgRmlsZVN5c3RlbSB7Ci0KLS8vIFBsYXRmb3JtRmlsZUhhbmRsZQotI2lmIFVT
RShHTElCKSAmJiAhUExBVEZPUk0oV0lOKQotdHlwZWRlZiBHRmlsZUlPU3RyZWFtKiBQbGF0Zm9y
bUZpbGVIYW5kbGU7Ci1jb25zdCBQbGF0Zm9ybUZpbGVIYW5kbGUgaW52YWxpZFBsYXRmb3JtRmls
ZUhhbmRsZSA9IDA7Ci0jZWxpZiBQTEFURk9STShXSU4pCi10eXBlZGVmIEhBTkRMRSBQbGF0Zm9y
bUZpbGVIYW5kbGU7Ci0vLyBGSVhNRTogLTEgaXMgSU5WQUxJRF9IQU5ETEVfVkFMVUUsIGRlZmlu
ZWQgaW4gPHdpbmJhc2UuaD4uIENocm9taXVtIHRyaWVzIHRvCi0vLyBhdm9pZCB1c2luZyBXaW5k
b3dzIGhlYWRlcnMgaW4gaGVhZGVycy4gIFdlJ2QgcmF0aGVyIG1vdmUgdGhpcyBpbnRvIHRoZSAu
Y3BwLgotY29uc3QgUGxhdGZvcm1GaWxlSGFuZGxlIGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUg
PSByZWludGVycHJldF9jYXN0PEhBTkRMRT4oLTEpOwotI2Vsc2UKLXR5cGVkZWYgaW50IFBsYXRm
b3JtRmlsZUhhbmRsZTsKLWNvbnN0IFBsYXRmb3JtRmlsZUhhbmRsZSBpbnZhbGlkUGxhdGZvcm1G
aWxlSGFuZGxlID0gLTE7Ci0jZW5kaWYKLQotZW51bSBjbGFzcyBGaWxlT3Blbk1vZGUgewotICAg
IFJlYWQsCi0gICAgV3JpdGUsCi0jaWYgT1MoREFSV0lOKQotICAgIEV2ZW50c09ubHksCi0jZW5k
aWYKLX07Ci0KLWVudW0gY2xhc3MgRmlsZVNlZWtPcmlnaW4gewotICAgIEJlZ2lubmluZywKLSAg
ICBDdXJyZW50LAotICAgIEVuZCwKLX07Ci0KLWVudW0gY2xhc3MgRmlsZUxvY2tNb2RlIHsKLSAg
ICBTaGFyZWQgPSAxIDw8IDAsCi0gICAgRXhjbHVzaXZlID0gMSA8PCAxLAotICAgIE5vbmJsb2Nr
aW5nID0gMSA8PCAyLAotfTsKLQotZW51bSBjbGFzcyBTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtz
IHsgTm8sIFllcyB9OwotCi1XRUJDT1JFX0VYUE9SVCBib29sIGZpbGVFeGlzdHMoY29uc3QgU3Ry
aW5nJik7Ci1XRUJDT1JFX0VYUE9SVCBib29sIGRlbGV0ZUZpbGUoY29uc3QgU3RyaW5nJik7Ci1X
RUJDT1JFX0VYUE9SVCBib29sIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpOwot
V0VCQ09SRV9FWFBPUlQgYm9vbCBtb3ZlRmlsZShjb25zdCBTdHJpbmcmIG9sZFBhdGgsIGNvbnN0
IFN0cmluZyYgbmV3UGF0aCk7Ci1XRUJDT1JFX0VYUE9SVCBib29sIGdldEZpbGVTaXplKGNvbnN0
IFN0cmluZyYsIGxvbmcgbG9uZyYgcmVzdWx0KTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgZ2V0Rmls
ZVNpemUoUGxhdGZvcm1GaWxlSGFuZGxlLCBsb25nIGxvbmcmIHJlc3VsdCk7Ci1XRUJDT1JFX0VY
UE9SVCBPcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3Ry
aW5nJik7Ci1XRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZUNyZWF0aW9u
VGltZShjb25zdCBTdHJpbmcmKTsgLy8gTm90IGFsbCBwbGF0Zm9ybXMgc3RvcmUgZmlsZSBjcmVh
dGlvbiB0aW1lLgotV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0
YWRhdGEoY29uc3QgU3RyaW5nJiBwYXRoKTsKLVdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPEZpbGVN
ZXRhZGF0YT4gZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3MoY29uc3QgU3RyaW5nJiBwYXRo
KTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgZmlsZUlzRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYsIFNo
b3VsZEZvbGxvd1N5bWJvbGljTGlua3MpOwotV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29tcG9u
ZW50KTsKLVN0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKFN0cmluZ1ZpZXcgcGF0aCwg
Y29uc3QgVmVjdG9yPFN0cmluZ1ZpZXc+JiBjb21wb25lbnRzKTsKLVN0cmluZyBsYXN0Q29tcG9u
ZW50T2ZQYXRoSWdub3JpbmdUcmFpbGluZ1NsYXNoKGNvbnN0IFN0cmluZyYgcGF0aCk7Ci1XRUJD
T1JFX0VYUE9SVCBib29sIG1ha2VBbGxEaXJlY3Rvcmllcyhjb25zdCBTdHJpbmcmIHBhdGgpOwot
U3RyaW5nIGhvbWVEaXJlY3RvcnlQYXRoKCk7Ci1XRUJDT1JFX0VYUE9SVCBTdHJpbmcgcGF0aEdl
dEZpbGVOYW1lKGNvbnN0IFN0cmluZyYpOwotV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGRpcmVjdG9y
eU5hbWUoY29uc3QgU3RyaW5nJik7Ci1XRUJDT1JFX0VYUE9SVCBib29sIGdldFZvbHVtZUZyZWVT
cGFjZShjb25zdCBTdHJpbmcmLCB1aW50NjRfdCYpOwotV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8
aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0IENTdHJpbmcmKTsKLVdFQkNPUkVfRVhQT1JU
IGJvb2wgY3JlYXRlU3ltYm9saWNMaW5rKGNvbnN0IFN0cmluZyYgdGFyZ2V0UGF0aCwgY29uc3Qg
U3RyaW5nJiBzeW1ib2xpY0xpbmtQYXRoKTsKLQotV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNZXRh
ZGF0YVVSTChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25z
dCBTdHJpbmcmIHJlZmVycmVyID0geyB9KTsKLQotYm9vbCBjYW5FeGNsdWRlRnJvbUJhY2t1cCgp
OyAvLyBSZXR1cm5zIHRydWUgaWYgYW55IGZpbGUgY2FuIGV2ZXIgYmUgZXhjbHVkZWQgZnJvbSBi
YWNrdXAuCi1ib29sIGV4Y2x1ZGVGcm9tQmFja3VwKGNvbnN0IFN0cmluZyYpOyAvLyBSZXR1cm5z
IHRydWUgaWYgc3VjY2Vzc2Z1bC4KLQotV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFN0cmluZz4gbGlz
dERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgZmlsdGVyID0gU3Ry
aW5nKCkpOwotCi1XRUJDT1JFX0VYUE9SVCBDU3RyaW5nIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihjb25zdCBTdHJpbmcmKTsKLVN0cmluZyBzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKGNvbnN0IGNoYXIqKTsKLQotaW5saW5lIGJvb2wgaXNIYW5kbGVWYWxpZChjb25zdCBQbGF0
Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkgeyByZXR1cm4gaGFuZGxlICE9IGludmFsaWRQbGF0Zm9y
bUZpbGVIYW5kbGU7IH0KLQotLy8gUHJlZml4IGlzIHdoYXQgdGhlIGZpbGVuYW1lIHNob3VsZCBi
ZSBwcmVmaXhlZCB3aXRoLCBub3QgdGhlIGZ1bGwgcGF0aC4KLVdFQkNPUkVfRVhQT1JUIFN0cmlu
ZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFu
ZGxlJik7Ci1XRUJDT1JFX0VYUE9SVCBQbGF0Zm9ybUZpbGVIYW5kbGUgb3BlbkZpbGUoY29uc3Qg
U3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUpOwotV0VCQ09SRV9FWFBPUlQgdm9pZCBjbG9zZUZp
bGUoUGxhdGZvcm1GaWxlSGFuZGxlJik7Ci0vLyBSZXR1cm5zIHRoZSByZXN1bHRpbmcgb2Zmc2V0
IGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlsZSBpZiBzdWNjZXNzZnVsLCAtMSBvdGhlcndp
c2UuCi1XRUJDT1JFX0VYUE9SVCBsb25nIGxvbmcgc2Vla0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxl
LCBsb25nIGxvbmcgb2Zmc2V0LCBGaWxlU2Vla09yaWdpbik7Ci1ib29sIHRydW5jYXRlRmlsZShQ
bGF0Zm9ybUZpbGVIYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQpOwotLy8gUmV0dXJucyBudW1iZXIg
b2YgYnl0ZXMgYWN0dWFsbHkgcmVhZCBpZiBzdWNjZXNzZnVsLCAtMSBvdGhlcndpc2UuCi1XRUJD
T1JFX0VYUE9SVCBpbnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBjb25zdCBjaGFy
KiBkYXRhLCBpbnQgbGVuZ3RoKTsKLS8vIFJldHVybnMgbnVtYmVyIG9mIGJ5dGVzIGFjdHVhbGx5
IHdyaXR0ZW4gaWYgc3VjY2Vzc2Z1bCwgLTEgb3RoZXJ3aXNlLgotV0VCQ09SRV9FWFBPUlQgaW50
IHJlYWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUsIGNoYXIqIGRhdGEsIGludCBsZW5ndGgp
OwotCi1XRUJDT1JFX0VYUE9SVCBQbGF0Zm9ybUZpbGVIYW5kbGUgb3BlbkFuZExvY2tGaWxlKGNv
bnN0IFN0cmluZyYsIEZpbGVPcGVuTW9kZSwgT3B0aW9uU2V0PEZpbGVMb2NrTW9kZT4gPSBGaWxl
TG9ja01vZGU6OkV4Y2x1c2l2ZSk7Ci1XRUJDT1JFX0VYUE9SVCB2b2lkIHVubG9ja0FuZENsb3Nl
RmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUpOwotCi0vLyBBcHBlbmRzIHRoZSBjb250ZW50cyBvZiB0
aGUgZmlsZSBmb3VuZCBhdCAncGF0aCcgdG8gdGhlIG9wZW4gUGxhdGZvcm1GaWxlSGFuZGxlLgot
Ly8gUmV0dXJucyB0cnVlIGlmIHRoZSB3cml0ZSB3YXMgc3VjY2Vzc2Z1bCwgZmFsc2UgaWYgaXQg
d2FzIG5vdC4KLWJvb2wgYXBwZW5kRmlsZUNvbnRlbnRzVG9GaWxlSGFuZGxlKGNvbnN0IFN0cmlu
ZyYgcGF0aCwgUGxhdGZvcm1GaWxlSGFuZGxlJik7Ci0KLS8vIEhhcmQgbGlua3MgYSBmaWxlIGlm
IHBvc3NpYmxlLCBjb3BpZXMgaXQgaWYgbm90LgotYm9vbCBoYXJkTGlua09yQ29weUZpbGUoY29u
c3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb24pOwotCi0jaWYgVVNF
KEZJTEVfTE9DSykKLVdFQkNPUkVfRVhQT1JUIGJvb2wgbG9ja0ZpbGUoUGxhdGZvcm1GaWxlSGFu
ZGxlLCBPcHRpb25TZXQ8RmlsZUxvY2tNb2RlPik7Ci1XRUJDT1JFX0VYUE9SVCBib29sIHVubG9j
a0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlKTsKLSNlbmRpZgotCi0vLyBFbmNvZGUgYSBzdHJpbmcg
Zm9yIHVzZSB3aXRoaW4gYSBmaWxlIG5hbWUuCi1XRUJDT1JFX0VYUE9SVCBTdHJpbmcgZW5jb2Rl
Rm9yRmlsZU5hbWUoY29uc3QgU3RyaW5nJik7Ci1XRUJDT1JFX0VYUE9SVCBTdHJpbmcgZGVjb2Rl
RnJvbUZpbGVuYW1lKGNvbnN0IFN0cmluZyYpOwotCi1XRUJDT1JFX0VYUE9SVCBib29sIGZpbGVz
SGF2ZVNhbWVWb2x1bWUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7Ci0KLSNpZiBVU0Uo
Q0YpCi1SZXRhaW5QdHI8Q0ZVUkxSZWY+IHBhdGhBc1VSTChjb25zdCBTdHJpbmcmKTsKLSNlbmRp
ZgotCi0jaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCi1TdHJpbmcgZmlsZW5hbWVG
b3JEaXNwbGF5KGNvbnN0IFN0cmluZyYpOwotI2VuZGlmCi0KLSNpZiBQTEFURk9STShXSU4pCi1X
RUJDT1JFX0VYUE9SVCBTdHJpbmcgbG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCk7
Ci1TdHJpbmcgcm9hbWluZ1VzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKTsKLSNlbmRpZgot
Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi1XRUJDT1JFX0VYUE9SVCBOU1N0cmluZyAqY3JlYXRlVGVt
cG9yYXJ5RGlyZWN0b3J5KE5TU3RyaW5nICpkaXJlY3RvcnlQcmVmaXgpOwotV0VCQ09SRV9FWFBP
UlQgYm9vbCBkZWxldGVOb25FbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKLSNlbmRpZgot
Ci0jaWYgUExBVEZPUk0oV0lOX0NBSVJPKQotV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGNyZWF0ZVRl
bXBvcmFyeURpcmVjdG9yeSgpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCBkZWxldGVOb25FbXB0eURp
cmVjdG9yeShjb25zdCBTdHJpbmcmKTsKLSNlbmRpZgotCi1XRUJDT1JFX0VYUE9SVCBTdHJpbmcg
cmVhbFBhdGgoY29uc3QgU3RyaW5nJik7Ci0KLWNsYXNzIE1hcHBlZEZpbGVEYXRhIHsKLXB1Ymxp
YzoKLSAgICBNYXBwZWRGaWxlRGF0YSgpIHsgfQotICAgIE1hcHBlZEZpbGVEYXRhKE1hcHBlZEZp
bGVEYXRhJiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIE1hcHBlZEZpbGVEYXRhKGNvbnN0IFN0cmlu
ZyYgZmlsZVBhdGgsIGJvb2wmIHN1Y2Nlc3MpOwotICAgIFdFQkNPUkVfRVhQT1JUIH5NYXBwZWRG
aWxlRGF0YSgpOwotICAgIE1hcHBlZEZpbGVEYXRhJiBvcGVyYXRvcj0oTWFwcGVkRmlsZURhdGEm
Jik7Ci0KLSAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISFtX2Zp
bGVEYXRhOyB9Ci0gICAgY29uc3Qgdm9pZCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsZURh
dGE7IH0KLSAgICB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9maWxlU2l6ZTsgfQot
Ci1wcml2YXRlOgotICAgIHZvaWQqIG1fZmlsZURhdGEgeyBudWxscHRyIH07Ci0gICAgdW5zaWdu
ZWQgbV9maWxlU2l6ZSB7IDAgfTsKLX07Ci0KLWlubGluZSBNYXBwZWRGaWxlRGF0YTo6TWFwcGVk
RmlsZURhdGEoTWFwcGVkRmlsZURhdGEmJiBvdGhlcikKLSAgICA6IG1fZmlsZURhdGEoc3RkOjpl
eGNoYW5nZShvdGhlci5tX2ZpbGVEYXRhLCBudWxscHRyKSkKLSAgICAsIG1fZmlsZVNpemUoc3Rk
OjpleGNoYW5nZShvdGhlci5tX2ZpbGVTaXplLCAwKSkKLXsKLX0KLQotaW5saW5lIE1hcHBlZEZp
bGVEYXRhJiBNYXBwZWRGaWxlRGF0YTo6b3BlcmF0b3I9KE1hcHBlZEZpbGVEYXRhJiYgb3RoZXIp
Ci17Ci0gICAgbV9maWxlRGF0YSA9IHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9maWxlRGF0YSwgbnVs
bHB0cik7Ci0gICAgbV9maWxlU2l6ZSA9IHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9maWxlU2l6ZSwg
MCk7Ci0gICAgcmV0dXJuICp0aGlzOwotfQotCi19IC8vIG5hbWVzcGFjZSBGaWxlU3lzdGVtCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVy
LmgKaW5kZXggODEzMThlOGIyOWFlNWEwZjViOTYwM2M4MjU1NzkxY2RiYzIwYTRlMS4uZWMzNzEz
NDFhYjk0OTViN2QzNTc2MTM1MWIyYjA5YjEzNWEzZWYzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmgKQEAgLTI2LDggKzI2LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNp
bmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQXJyYXlCdWZm
ZXIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NvdXJj
ZXNHTGliLnR4dCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NvdXJjZXNHTGliLnR4dAppbmRl
eCAyNzczYzJhMDg4YjYwZmIxMzk2OTJkNWY0MGQwYmVmYzNmZWMzY2M0Li4wOTBiODRhNDhjMTAz
ZDNkNTkzMTQxZDkwZTJiYmI0YWJmMmM1YmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Tb3VyY2VzR0xpYi50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU291
cmNlc0dMaWIudHh0CkBAIC0yNSw3ICsyNSw2IEBAIHBsYXRmb3JtL2F1ZGlvL2dsaWIvQXVkaW9C
dXNHTGliLmNwcAogCiBwbGF0Zm9ybS9nbGliL0V2ZW50TG9vcEdsaWIuY3BwCiBwbGF0Zm9ybS9n
bGliL0ZpbGVNb25pdG9yR0xpYi5jcHAKLXBsYXRmb3JtL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3Bw
CiBwbGF0Zm9ybS9nbGliL0tleWVkRGVjb2RlckdsaWIuY3BwCiBwbGF0Zm9ybS9nbGliL0tleWVk
RW5jb2RlckdsaWIuY3BwCiBwbGF0Zm9ybS9nbGliL0xvd1Bvd2VyTW9kZU5vdGlmaWVyR0xpYi5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0ZpbGVTeXN0ZW1DRi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwODQ3MGEwOGZhNWQyZjQ1MmU2YzkzODcwMWM2ZDkyNmNh
NjA5ZjAzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0ZpbGVTeXN0ZW1DRi5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSw3NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDExIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVy
IHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAg
ICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgi
Ci0KLSNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9DRlN0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotQ1N0cmluZyBGaWxl
U3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBwYXRoKQotewot
ICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZTdHJpbmcgPSBwYXRoLmNyZWF0ZUNGU3RyaW5n
KCk7Ci0KLSAgICBpZiAoIWNmU3RyaW5nKQotICAgICAgICByZXR1cm4gQ1N0cmluZygpOwotCi0g
ICAgQ0ZJbmRleCBzaXplID0gQ0ZTdHJpbmdHZXRNYXhpbXVtU2l6ZU9mRmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGNmU3RyaW5nLmdldCgpKTsKLQotICAgIFZlY3RvcjxjaGFyPiBidWZmZXIoc2l6
ZSk7Ci0KLSAgICBpZiAoIUNGU3RyaW5nR2V0RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNmU3Ry
aW5nLmdldCgpLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKSkgewotICAgICAgICBMT0df
RVJST1IoIkZhaWxlZCB0byBnZXQgZmlsZXN5c3RlbSByZXByZXNlbnRhdGlvbiB0byBjcmVhdGUg
Q1N0cmluZyBmcm9tIGNmU3RyaW5nIik7Ci0gICAgICAgIHJldHVybiBDU3RyaW5nKCk7Ci0gICAg
fQotCi0gICAgcmV0dXJuIENTdHJpbmcoYnVmZmVyLmRhdGEoKSwgc3RybGVuKGJ1ZmZlci5kYXRh
KCkpKTsKLX0KLQotU3RyaW5nIEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oY29uc3QgY2hhciogZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKQotewotICAgIHJl
dHVybiBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24pKS5nZXQoKTsKLX0K
LQotUmV0YWluUHRyPENGVVJMUmVmPiBGaWxlU3lzdGVtOjpwYXRoQXNVUkwoY29uc3QgU3RyaW5n
JiBwYXRoKQotewotICAgIENGVVJMUGF0aFN0eWxlIHBhdGhTdHlsZTsKLSNpZiBQTEFURk9STShX
SU4pCi0gICAgcGF0aFN0eWxlID0ga0NGVVJMV2luZG93c1BhdGhTdHlsZTsKLSNlbHNlCi0gICAg
cGF0aFN0eWxlID0ga0NGVVJMUE9TSVhQYXRoU3R5bGU7Ci0jZW5kaWYKLSAgICByZXR1cm4gYWRv
cHRDRihDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aCgwLCBwYXRoLmNyZWF0ZUNGU3RyaW5n
KCkuZ2V0KCksIHBhdGhTdHlsZSwgRkFMU0UpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRmlsZU1vbml0b3JD
b2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0ZpbGVNb25pdG9yQ29jb2Eu
bW0KaW5kZXggMWFiM2MzMzRjNjlkZmZhMzY0OGFiMDBhNDU1OGQ5ZjI3ZTQzMDYwMC4uY2M3ZmU2
YjZjZGUxMGVkNGNhNDU2ZTQ2YmUyOGEwNGY2ODcyNDc0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvRmlsZU1vbml0b3JDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9GaWxlTW9uaXRvckNvY29hLm1tCkBAIC0yNiw5ICsyNiw5IEBA
CiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkZpbGVNb25pdG9yLmgiCiAKLSNpbXBvcnQg
IkZpbGVTeXN0ZW0uaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgPHd0Zi9CbG9ja1B0
ci5oPgorI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRmlsZVN5c3Rl
bUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRmlsZVN5c3RlbUNvY29h
Lm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMzhiMGM4MzAzZTdiYTEwZDQwNTMz
Y2JjZDE1ZGEzM2IwOTY5ZTNjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0ZpbGVTeXN0ZW1Db2NvYS5t
bQorKysgL2Rldi9udWxsCkBAIC0xLDE0MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDA3LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4gCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4gCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3Ig
dGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1w
b3J0ICJGaWxlU3lzdGVtLmgiCi0KLUBpbnRlcmZhY2UgV2ViRmlsZU1hbmFnZXJEZWxlZ2F0ZSA6
IE5TT2JqZWN0IDxOU0ZpbGVNYW5hZ2VyRGVsZWdhdGU+Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlv
biBXZWJGaWxlTWFuYWdlckRlbGVnYXRlCi0KLS0gKEJPT0wpZmlsZU1hbmFnZXI6KE5TRmlsZU1h
bmFnZXIgKilmaWxlTWFuYWdlciBzaG91bGRQcm9jZWVkQWZ0ZXJFcnJvcjooTlNFcnJvciAqKWVy
cm9yIG1vdmluZ0l0ZW1BdFVSTDooTlNVUkwgKilzcmNVUkwgdG9VUkw6KE5TVVJMICopZHN0VVJM
Ci17Ci0gICAgVU5VU0VEX1BBUkFNKGZpbGVNYW5hZ2VyKTsKLSAgICBVTlVTRURfUEFSQU0oc3Jj
VVJMKTsKLSAgICBVTlVTRURfUEFSQU0oZHN0VVJMKTsgICAgCi0gICAgcmV0dXJuIGVycm9yLmNv
ZGUgPT0gTlNGaWxlV3JpdGVGaWxlRXhpc3RzRXJyb3I7Ci19Ci0KLUBlbmQKLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1uYW1lc3BhY2UgRmlsZVN5c3RlbSB7Ci0KLVN0cmluZyBob21lRGlyZWN0
b3J5UGF0aCgpCi17Ci0gICAgcmV0dXJuIE5TSG9tZURpcmVjdG9yeSgpOwotfQotCi1TdHJpbmcg
b3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRs
ZSYgcGxhdGZvcm1GaWxlSGFuZGxlKQotewotICAgIHBsYXRmb3JtRmlsZUhhbmRsZSA9IGludmFs
aWRQbGF0Zm9ybUZpbGVIYW5kbGU7Ci0gICAgCi0gICAgVmVjdG9yPGNoYXI+IHRlbXBvcmFyeUZp
bGVQYXRoKFBBVEhfTUFYKTsKLSAgICBpZiAoIWNvbmZzdHIoX0NTX0RBUldJTl9VU0VSX1RFTVBf
RElSLCB0ZW1wb3JhcnlGaWxlUGF0aC5kYXRhKCksIHRlbXBvcmFyeUZpbGVQYXRoLnNpemUoKSkp
Ci0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIC8vIFNocmluayB0aGUgdmVjdG9yLiAg
IAotICAgIHRlbXBvcmFyeUZpbGVQYXRoLnNocmluayhzdHJsZW4odGVtcG9yYXJ5RmlsZVBhdGgu
ZGF0YSgpKSk7Ci0KLSAgICAvLyBGSVhNRTogQ2hhbmdlIHRvIGEgcnVudGltZSBhc3NlcnRpb24g
dGhhdCB0aGUgcGF0aCBlbmRzIHdpdGggYSBzbGFzaCBvbmNlIDxyZGFyOi8vcHJvYmxlbS8yMzU3
OTA3Nz4gaXMKLSAgICAvLyBmaXhlZCBpbiBhbGwgaU9TIFNpbXVsYXRvciB2ZXJzaW9ucyB0aGF0
IHdlIHVzZS4KLSAgICBpZiAodGVtcG9yYXJ5RmlsZVBhdGgubGFzdCgpICE9ICcvJykKLSAgICAg
ICAgdGVtcG9yYXJ5RmlsZVBhdGguYXBwZW5kKCcvJyk7Ci0KLSAgICAvLyBBcHBlbmQgdGhlIGZp
bGUgbmFtZS4KLSAgICBDU3RyaW5nIHByZWZpeFV0ZjggPSBwcmVmaXgudXRmOCgpOwotICAgIHRl
bXBvcmFyeUZpbGVQYXRoLmFwcGVuZChwcmVmaXhVdGY4LmRhdGEoKSwgcHJlZml4VXRmOC5sZW5n
dGgoKSk7Ci0gICAgdGVtcG9yYXJ5RmlsZVBhdGguYXBwZW5kKCJYWFhYWFgiLCA2KTsKLSAgICB0
ZW1wb3JhcnlGaWxlUGF0aC5hcHBlbmQoJ1wwJyk7Ci0KLSAgICBwbGF0Zm9ybUZpbGVIYW5kbGUg
PSBta3N0ZW1wKHRlbXBvcmFyeUZpbGVQYXRoLmRhdGEoKSk7Ci0gICAgaWYgKHBsYXRmb3JtRmls
ZUhhbmRsZSA9PSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQotICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7Ci0KLSAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOCh0ZW1wb3JhcnlGaWxlUGF0aC5k
YXRhKCkpOwotfQotCi1ib29sIG1vdmVGaWxlKGNvbnN0IFN0cmluZyYgb2xkUGF0aCwgY29uc3Qg
U3RyaW5nJiBuZXdQYXRoKQotewotICAgIC8vIE92ZXJ3cml0ZSBleGlzdGluZyBmaWxlcy4KLSAg
ICBhdXRvIG1hbmFnZXIgPSBhZG9wdE5TKFtbTlNGaWxlTWFuYWdlciBhbGxvY10gaW5pdF0pOwot
ICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbV2ViRmlsZU1hbmFnZXJEZWxlZ2F0ZSBhbGxv
Y10gaW5pdF0pOwotICAgIFttYW5hZ2VyIHNldERlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKLSAg
ICAKLSAgICBOU0Vycm9yICplcnJvciA9IG5pbDsKLSAgICBib29sIHN1Y2Nlc3MgPSBbbWFuYWdl
ciBtb3ZlSXRlbUF0VVJMOltOU1VSTCBmaWxlVVJMV2l0aFBhdGg6b2xkUGF0aF0gdG9VUkw6W05T
VVJMIGZpbGVVUkxXaXRoUGF0aDpuZXdQYXRoXSBlcnJvcjomZXJyb3JdOwotICAgIGlmICghc3Vj
Y2VzcykKLSAgICAgICAgTlNMb2coQCJFcnJvciBpbiBtb3ZlRmlsZTogJUAiLCBlcnJvcik7Ci0g
ICAgcmV0dXJuIHN1Y2Nlc3M7Ci19Ci0KLWJvb2wgZ2V0Vm9sdW1lRnJlZVNwYWNlKGNvbnN0IFN0
cmluZyYgcGF0aCwgdWludDY0X3QmIGZyZWVTcGFjZSkKLXsKLSAgICBOU0RpY3Rpb25hcnkgKmZp
bGVTeXN0ZW1BdHRyaWJ1dGVzRGljdGlvbmFyeSA9IFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFu
YWdlcl0gYXR0cmlidXRlc09mRmlsZVN5c3RlbUZvclBhdGg6KE5TU3RyaW5nICopcGF0aCBlcnJv
cjpOVUxMXTsKLSAgICBpZiAoIWZpbGVTeXN0ZW1BdHRyaWJ1dGVzRGljdGlvbmFyeSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIGZyZWVTcGFjZSA9IFtbZmlsZVN5c3RlbUF0dHJpYnV0ZXNE
aWN0aW9uYXJ5IG9iamVjdEZvcktleTpOU0ZpbGVTeXN0ZW1GcmVlU2l6ZV0gdW5zaWduZWRMb25n
TG9uZ1ZhbHVlXTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotTlNTdHJpbmcgKmNyZWF0ZVRlbXBv
cmFyeURpcmVjdG9yeShOU1N0cmluZyAqZGlyZWN0b3J5UHJlZml4KQotewotICAgIE5TU3RyaW5n
ICp0ZW1wRGlyZWN0b3J5ID0gTlNUZW1wb3JhcnlEaXJlY3RvcnkoKTsKLSAgICBpZiAoIXRlbXBE
aXJlY3RvcnkgfHwgIVt0ZW1wRGlyZWN0b3J5IGxlbmd0aF0pCi0gICAgICAgIHJldHVybiBuaWw7
Ci0KLSAgICBpZiAoIWRpcmVjdG9yeVByZWZpeCB8fCAhW2RpcmVjdG9yeVByZWZpeCBsZW5ndGhd
KQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgTlNTdHJpbmcgKnRlbXBEaXJlY3RvcnlDb21w
b25lbnQgPSBbZGlyZWN0b3J5UHJlZml4IHN0cmluZ0J5QXBwZW5kaW5nU3RyaW5nOkAiLVhYWFhY
WFhYIl07Ci0gICAgY29uc3QgY2hhciogdGVtcERpcmVjdG9yeUNTdHJpbmcgPSBbW3RlbXBEaXJl
Y3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OnRlbXBEaXJlY3RvcnlDb21wb25l
bnRdIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbl07Ci0gICAgaWYgKCF0ZW1wRGlyZWN0b3J5Q1N0
cmluZykKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIGNvbnN0IHNpemVfdCBsZW5ndGggPSBz
dHJsZW4odGVtcERpcmVjdG9yeUNTdHJpbmcpOwotICAgIEFTU0VSVChsZW5ndGggPD0gTUFYUEFU
SExFTik7Ci0gICAgaWYgKGxlbmd0aCA+IE1BWFBBVEhMRU4pCi0gICAgICAgIHJldHVybiBuaWw7
Ci0KLSAgICBjb25zdCBzaXplX3QgbGVuZ3RoUGx1c051bGxUZXJtaW5hdG9yID0gbGVuZ3RoICsg
MTsKLSAgICBWZWN0b3I8Y2hhciwgTUFYUEFUSExFTiArIDE+IHBhdGgobGVuZ3RoUGx1c051bGxU
ZXJtaW5hdG9yKTsKLSAgICBtZW1jcHkocGF0aC5kYXRhKCksIHRlbXBEaXJlY3RvcnlDU3RyaW5n
LCBsZW5ndGhQbHVzTnVsbFRlcm1pbmF0b3IpOwotCi0gICAgaWYgKCFta2R0ZW1wKHBhdGguZGF0
YSgpKSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIHJldHVybiBbW05TRmlsZU1hbmFnZXIg
ZGVmYXVsdE1hbmFnZXJdIHN0cmluZ1dpdGhGaWxlU3lzdGVtUmVwcmVzZW50YXRpb246cGF0aC5k
YXRhKCkgbGVuZ3RoOmxlbmd0aF07Ci19Ci0KLWJvb2wgZGVsZXRlTm9uRW1wdHlEaXJlY3Rvcnko
Y29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIHJldHVybiBbW05TRmlsZU1hbmFnZXIgZGVmYXVs
dE1hbmFnZXJdIHJlbW92ZUl0ZW1BdFBhdGg6cGF0aCBlcnJvcjpuaWxdOwotfQotCi19IC8vIG5h
bWVzcGFjZSBGaWxlU3lzdGVtCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0ZpbGVNb25pdG9yR0xpYi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nbGliL0ZpbGVNb25pdG9yR0xpYi5jcHAKaW5kZXggNDYzZjMyNzZj
MjRlMjUxYmViNGFhMDhiMGI5ODk4NmU4Y2M5NjkyMy4uNWE5ODJmNDk0OTIzN2NiMjBhOWY1NGNm
ODhlMmFkZWU0OGQ0Zjk2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xp
Yi9GaWxlTW9uaXRvckdMaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIv
RmlsZU1vbml0b3JHTGliLmNwcApAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkZpbGVNb25pdG9yLmgiCiAKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCisj
aW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGNhNmMzZGY5NGRkMzIyMTM0MzAwYzdiYmQyNmJiYjA4OTA0NjU2
MzEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSw0NzAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOSBIb2xnZXIg
SGFucyBQZXRlciBGcmV5dGhlcgotICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSwgTHRk
LgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAxMCBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkZpbGVT
eXN0ZW0uaCIKLQotI2luY2x1ZGUgIkZpbGVNZXRhZGF0YS5oIgotI2luY2x1ZGUgIk5vdEltcGxl
bWVudGVkLmgiCi0jaW5jbHVkZSA8Z2lvL2dmaWxlZGVzY3JpcHRvcmJhc2VkLmg+Ci0jaW5jbHVk
ZSA8Z2lvL2dpby5oPgotI2luY2x1ZGUgPGdsaWIuaD4KLSNpbmNsdWRlIDxnbGliL2dzdGRpby5o
PgotI2luY2x1ZGUgPHN5cy9maWxlLmg+Ci0jaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KLSNp
bmNsdWRlIDx3dGYvVVVJRC5oPgotI2luY2x1ZGUgPHd0Zi9nbGliL0dMaWJVdGlsaXRpZXMuaD4K
LSNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1
ZVB0ci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdCdWlsZGVyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIEZpbGVTeXN0ZW0gewotCi0vKiBPbiBsaW51
eCBmaWxlIG5hbWVzIGFyZSBqdXN0IHJhdyBieXRlcywgc28gYWxzbyBzdHJpbmdzIHRoYXQgY2Fu
bm90IGJlIGVuY29kZWQgaW4gYW55IHdheQotICogYXJlIHZhbGlkIGZpbGUgbmFtZXMuIFRoaXMg
bWVhbiB0aGF0IHdlIGNhbm5vdCBqdXN0IHN0b3JlIGEgZmlsZSBuYW1lIGFzLWlzIGluIGEgU3Ry
aW5nCi0gKiBidXQgd2UgaGF2ZSB0byBlc2NhcGUgaXQuCi0gKiBPbiBXaW5kb3dzIHRoZSBHTGli
IGZpbGUgbmFtZSBlbmNvZGluZyBpcyBhbHdheXMgVVRGLTggc28gd2UgY2FuIG9wdGltaXplIHRo
aXMgY2FzZS4gKi8KLVN0cmluZyBzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNv
bnN0IGNoYXIqIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbikKLXsKLSAgICBpZiAoIWZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbikKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0jaWYgT1MoV0lO
RE9XUykKLSAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24pOwotI2Vsc2UKLSAgICBHVW5pcXVlUHRyPGdjaGFyPiBlc2NhcGVkU3RyaW5nKGdfdXJpX2Vz
Y2FwZV9zdHJpbmcoZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uLCAiLzoiLCBGQUxTRSkpOwotICAg
IHJldHVybiBlc2NhcGVkU3RyaW5nLmdldCgpOwotI2VuZGlmCi19Ci0KLXN0YXRpYyBHVW5pcXVl
UHRyPGNoYXI+IHVuZXNjYXBlZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBp
ZiAocGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotI2lmIE9TKFdJTkRP
V1MpCi0gICAgcmV0dXJuIEdVbmlxdWVQdHI8Y2hhcj4oZ19zdHJkdXAocGF0aC51dGY4KCkuZGF0
YSgpKSk7Ci0jZWxzZQotICAgIHJldHVybiBHVW5pcXVlUHRyPGNoYXI+KGdfdXJpX3VuZXNjYXBl
X3N0cmluZyhwYXRoLnV0ZjgoKS5kYXRhKCksIG51bGxwdHIpKTsKLSNlbmRpZgotfQotCi1DU3Ry
aW5nIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0jaWYg
T1MoV0lORE9XUykKLSAgICByZXR1cm4gcGF0aC51dGY4KCk7Ci0jZWxzZQotICAgIEdVbmlxdWVQ
dHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUocGF0aCk7Ci0gICAgcmV0dXJu
IGZpbGVuYW1lLmdldCgpOwotI2VuZGlmCi19Ci0KLS8vIENvbnZlcnRzIGEgc3RyaW5nIHRvIHNv
bWV0aGluZyBzdWl0YWJsZSB0byBiZSBkaXNwbGF5ZWQgdG8gdGhlIHVzZXIuCi1TdHJpbmcgZmls
ZW5hbWVGb3JEaXNwbGF5KGNvbnN0IFN0cmluZyYgc3RyaW5nKQotewotI2lmIE9TKFdJTkRPV1Mp
Ci0gICAgcmV0dXJuIHN0cmluZzsKLSNlbHNlCi0gICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5h
bWUgPSB1bmVzY2FwZWRGaWxlbmFtZShzdHJpbmcpOwotICAgIGlmICghZmlsZW5hbWUpCi0gICAg
ICAgIHJldHVybiBzdHJpbmc7Ci0KLSAgICBHVW5pcXVlUHRyPGdjaGFyPiBkaXNwbGF5KGdfZmls
ZW5hbWVfdG9fdXRmOChmaWxlbmFtZS5nZXQoKSwgLTEsIG51bGxwdHIsIG51bGxwdHIsIG51bGxw
dHIpKTsKLSAgICBpZiAoIWRpc3BsYXkpCi0gICAgICAgIHJldHVybiBzdHJpbmc7Ci0KLSAgICBy
ZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChkaXNwbGF5LmdldCgpKTsKLSNlbmRpZgotfQotCi1ib29s
IGZpbGVFeGlzdHMoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIEdVbmlxdWVQdHI8Z2NoYXI+
IGZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUocGF0aCk7Ci0gICAgcmV0dXJuIGZpbGVuYW1l
ID8gZ19maWxlX3Rlc3QoZmlsZW5hbWUuZ2V0KCksIEdfRklMRV9URVNUX0VYSVNUUykgOiBmYWxz
ZTsKLX0KLQotYm9vbCBkZWxldGVGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBHVW5p
cXVlUHRyPGdjaGFyPiBmaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGgpOwotICAgIHJl
dHVybiBmaWxlbmFtZSA/IGdfcmVtb3ZlKGZpbGVuYW1lLmdldCgpKSAhPSAtMSA6IGZhbHNlOwot
fQotCi1ib29sIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAg
ICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGgpOwot
ICAgIHJldHVybiBmaWxlbmFtZSA/IGdfcm1kaXIoZmlsZW5hbWUuZ2V0KCkpICE9IC0xIDogZmFs
c2U7Ci19Ci0KLXN0YXRpYyBib29sIGdldEZpbGVTdGF0KGNvbnN0IFN0cmluZyYgcGF0aCwgR1N0
YXRCdWYqIHN0YXRCdWZmZXIpCi17Ci0gICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUgPSB1
bmVzY2FwZWRGaWxlbmFtZShwYXRoKTsKLSAgICBpZiAoIWZpbGVuYW1lKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gZ19zdGF0KGZpbGVuYW1lLmdldCgpLCBzdGF0QnVmZmVy
KSAhPSAtMTsKLX0KLQotc3RhdGljIGJvb2wgZ2V0RmlsZUxTdGF0KGNvbnN0IFN0cmluZyYgcGF0
aCwgR1N0YXRCdWYqIHN0YXRCdWZmZXIpCi17Ci0gICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5h
bWUgPSB1bmVzY2FwZWRGaWxlbmFtZShwYXRoKTsKLSAgICBpZiAoIWZpbGVuYW1lKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gZ19sc3RhdChmaWxlbmFtZS5nZXQoKSwgc3Rh
dEJ1ZmZlcikgIT0gLTE7Ci19Ci0KLWJvb2wgZ2V0RmlsZVNpemUoY29uc3QgU3RyaW5nJiBwYXRo
LCBsb25nIGxvbmcmIHJlc3VsdFNpemUpCi17Ci0gICAgR1N0YXRCdWYgc3RhdFJlc3VsdDsKLSAg
ICBpZiAoIWdldEZpbGVTdGF0KHBhdGgsICZzdGF0UmVzdWx0KSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgcmVzdWx0U2l6ZSA9IHN0YXRSZXN1bHQuc3Rfc2l6ZTsKLSAgICByZXR1cm4g
dHJ1ZTsKLX0KLQotYm9vbCBnZXRGaWxlU2l6ZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBs
b25nIGxvbmcmIHJlc3VsdFNpemUpCi17Ci0gICAgYXV0byBpbmZvID0gZ19maWxlX2lvX3N0cmVh
bV9xdWVyeV9pbmZvKGhhbmRsZSwgR19GSUxFX0FUVFJJQlVURV9TVEFOREFSRF9TSVpFLCBudWxs
cHRyLCBudWxscHRyKTsKLSAgICBpZiAoIWluZm8pCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQot
ICAgIHJlc3VsdFNpemUgPSBnX2ZpbGVfaW5mb19nZXRfc2l6ZShpbmZvKTsKLSAgICByZXR1cm4g
dHJ1ZTsKLX0KLQotT3B0aW9uYWw8V2FsbFRpbWU+IGdldEZpbGVDcmVhdGlvblRpbWUoY29uc3Qg
U3RyaW5nJikKLXsKLSAgICAvLyBGSVhNRTogSXMgdGhlcmUgYSB3YXkgdG8gcmV0cmlldmUgZmls
ZSBjcmVhdGlvbiB0aW1lIHdpdGggR3RrIG9uIHBsYXRmb3JtcyB0aGF0IHN1cHBvcnQgaXQ/Ci0g
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLX0KLQotT3B0aW9uYWw8V2FsbFRpbWU+IGdldEZpbGVN
b2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBHU3RhdEJ1ZiBzdGF0
UmVzdWx0OwotICAgIGlmICghZ2V0RmlsZVN0YXQocGF0aCwgJnN0YXRSZXN1bHQpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgcmV0dXJuIFdhbGxUaW1lOjpmcm9tUmF3U2Vj
b25kcyhzdGF0UmVzdWx0LnN0X210aW1lKTsKLX0KLQotc3RhdGljIEZpbGVNZXRhZGF0YTo6VHlw
ZSB0b0ZpbGVNZXRhdGFUeXBlKEdTdGF0QnVmIHN0YXRSZXN1bHQpCi17Ci0gICAgaWYgKFNfSVNE
SVIoc3RhdFJlc3VsdC5zdF9tb2RlKSkKLSAgICAgICAgcmV0dXJuIEZpbGVNZXRhZGF0YTo6VHlw
ZTo6RGlyZWN0b3J5OwotICAgIGlmIChTX0lTTE5LKHN0YXRSZXN1bHQuc3RfbW9kZSkpCi0gICAg
ICAgIHJldHVybiBGaWxlTWV0YWRhdGE6OlR5cGU6OlN5bWJvbGljTGluazsKLSAgICByZXR1cm4g
RmlsZU1ldGFkYXRhOjpUeXBlOjpGaWxlOwotfQotCi1zdGF0aWMgT3B0aW9uYWw8RmlsZU1ldGFk
YXRhPiBmaWxlTWV0YWRhdGFVc2luZ0Z1bmN0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCwgYm9vbCAo
KnN0YXRGdW5jKShjb25zdCBTdHJpbmcmLCBHU3RhdEJ1ZiopKQotewotICAgIEdTdGF0QnVmIHN0
YXRSZXN1bHQ7Ci0gICAgaWYgKCFzdGF0RnVuYyhwYXRoLCAmc3RhdFJlc3VsdCkpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBTdHJpbmcgZmlsZW5hbWUgPSBwYXRoR2V0Rmls
ZU5hbWUocGF0aCk7Ci0gICAgYm9vbCBpc0hpZGRlbiA9ICFmaWxlbmFtZS5pc0VtcHR5KCkgJiYg
ZmlsZW5hbWVbMF0gPT0gJy4nOwotCi0gICAgcmV0dXJuIEZpbGVNZXRhZGF0YSB7Ci0gICAgICAg
IFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhzdGF0UmVzdWx0LnN0X210aW1lKSwKLSAgICAgICAg
c3RhdFJlc3VsdC5zdF9zaXplLAotICAgICAgICBpc0hpZGRlbiwKLSAgICAgICAgdG9GaWxlTWV0
YXRhVHlwZShzdGF0UmVzdWx0KQotICAgIH07Ci19Ci0KLU9wdGlvbmFsPEZpbGVNZXRhZGF0YT4g
ZmlsZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICByZXR1cm4gZmlsZU1ldGFk
YXRhVXNpbmdGdW5jdGlvbihwYXRoLCAmZ2V0RmlsZUxTdGF0KTsKLX0KLQotT3B0aW9uYWw8Rmls
ZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyhjb25zdCBTdHJpbmcmIHBh
dGgpCi17Ci0gICAgcmV0dXJuIGZpbGVNZXRhZGF0YVVzaW5nRnVuY3Rpb24ocGF0aCwgJmdldEZp
bGVTdGF0KTsKLX0KLQotU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChjb25zdCBTdHJp
bmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29tcG9uZW50KQotewotICAgIGlmIChwYXRoLmVuZHNX
aXRoKEdfRElSX1NFUEFSQVRPUl9TKSkKLSAgICAgICAgcmV0dXJuIHBhdGggKyBjb21wb25lbnQ7
Ci0gICAgcmV0dXJuIHBhdGggKyBHX0RJUl9TRVBBUkFUT1JfUyArIGNvbXBvbmVudDsKLX0KLQot
U3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMoU3RyaW5nVmlldyBwYXRoLCBjb25zdCBW
ZWN0b3I8U3RyaW5nVmlldz4mIGNvbXBvbmVudHMpCi17Ci0gICAgU3RyaW5nQnVpbGRlciBidWls
ZGVyOwotICAgIGJ1aWxkZXIuYXBwZW5kKHBhdGgpOwotICAgIGZvciAoYXV0byYgY29tcG9uZW50
IDogY29tcG9uZW50cykgewotICAgICAgICBidWlsZGVyLmFwcGVuZChHX0RJUl9TRVBBUkFUT1Jf
Uyk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKGNvbXBvbmVudCk7Ci0gICAgfQotICAgIHJldHVy
biBidWlsZGVyLnRvU3RyaW5nKCk7Ci19Ci0KLWJvb2wgbWFrZUFsbERpcmVjdG9yaWVzKGNvbnN0
IFN0cmluZyYgcGF0aCkKLXsKLSAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZSA9IHVuZXNj
YXBlZEZpbGVuYW1lKHBhdGgpOwotICAgIHJldHVybiBmaWxlbmFtZSA/IGdfbWtkaXJfd2l0aF9w
YXJlbnRzKGZpbGVuYW1lLmdldCgpLCBTX0lSV1hVKSAhPSAtMSA6IGZhbHNlOwotfQotCi1TdHJp
bmcgaG9tZURpcmVjdG9yeVBhdGgoKQotewotICAgIHJldHVybiBzdHJpbmdGcm9tRmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKGdfZ2V0X2hvbWVfZGlyKCkpOwotfQotCi1ib29sIGNyZWF0ZVN5bWJv
bGljTGluayhjb25zdCBTdHJpbmcmIHRhcmdldFBhdGgsIGNvbnN0IFN0cmluZyYgc3ltYm9saWNM
aW5rUGF0aCkKLXsKLSAgICBDU3RyaW5nIHRhcmdldFBhdGhGU1JlcCA9IGZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbih0YXJnZXRQYXRoKTsKLSAgICBpZiAoIXRhcmdldFBhdGhGU1JlcC5kYXRhKCkg
fHwgdGFyZ2V0UGF0aEZTUmVwLmRhdGEoKVswXSA9PSAnXDAnKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICBDU3RyaW5nIHN5bWJvbGljTGlua1BhdGhGU1JlcCA9IGZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihzeW1ib2xpY0xpbmtQYXRoKTsKLSAgICBpZiAoIXN5bWJvbGljTGlua1BhdGhG
U1JlcC5kYXRhKCkgfHwgc3ltYm9saWNMaW5rUGF0aEZTUmVwLmRhdGEoKVswXSA9PSAnXDAnKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gIXN5bWxpbmsodGFyZ2V0UGF0aEZT
UmVwLmRhdGEoKSwgc3ltYm9saWNMaW5rUGF0aEZTUmVwLmRhdGEoKSk7Ci19Ci0KLVN0cmluZyBw
YXRoR2V0RmlsZU5hbWUoY29uc3QgU3RyaW5nJiBwYXRoTmFtZSkKLXsKLSAgICBHVW5pcXVlUHRy
PGdjaGFyPiB0bXBGaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGhOYW1lKTsKLSAgICBp
ZiAoIXRtcEZpbGVuYW1lKQotICAgICAgICByZXR1cm4gcGF0aE5hbWU7Ci0KLSAgICBHVW5pcXVl
UHRyPGdjaGFyPiBiYXNlTmFtZShnX3BhdGhfZ2V0X2Jhc2VuYW1lKHRtcEZpbGVuYW1lLmdldCgp
KSk7Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoYmFzZU5hbWUuZ2V0KCkpOwotfQotCi1i
b29sIGdldFZvbHVtZUZyZWVTcGFjZShjb25zdCBTdHJpbmcmIHBhdGgsIHVpbnQ2NF90JiBmcmVl
U3BhY2UpCi17Ci0gICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxl
bmFtZShwYXRoKTsKLSAgICBpZiAoIWZpbGVuYW1lKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICBHUmVmUHRyPEdGaWxlPiBmaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgo
ZmlsZW5hbWUuZ2V0KCkpKTsKLSAgICBHUmVmUHRyPEdGaWxlSW5mbz4gZmlsZUluZm8gPSBhZG9w
dEdSZWYoZ19maWxlX3F1ZXJ5X2ZpbGVzeXN0ZW1faW5mbyhmaWxlLmdldCgpLCBHX0ZJTEVfQVRU
UklCVVRFX0ZJTEVTWVNURU1fRlJFRSwgMCwgMCkpOwotICAgIGlmICghZmlsZUluZm8pCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIGZyZWVTcGFjZSA9IGdfZmlsZV9pbmZvX2dldF9hdHRy
aWJ1dGVfdWludDY0KGZpbGVJbmZvLmdldCgpLCBHX0ZJTEVfQVRUUklCVVRFX0ZJTEVTWVNURU1f
RlJFRSk7Ci0gICAgcmV0dXJuICEhZnJlZVNwYWNlOwotfQotCi1TdHJpbmcgZGlyZWN0b3J5TmFt
ZShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUg
PSB1bmVzY2FwZWRGaWxlbmFtZShwYXRoKTsKLSAgICBpZiAoIWZpbGVuYW1lKQotICAgICAgICBy
ZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICBHVW5pcXVlUHRyPGNoYXI+IGRpcm5hbWUoZ19wYXRoX2dl
dF9kaXJuYW1lKGZpbGVuYW1lLmdldCgpKSk7Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgo
ZGlybmFtZS5nZXQoKSk7Ci19Ci0KLVZlY3RvcjxTdHJpbmc+IGxpc3REaXJlY3RvcnkoY29uc3Qg
U3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGZpbHRlcikKLXsKLSAgICBWZWN0b3I8U3RyaW5n
PiBlbnRyaWVzOwotCi0gICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUgPSB1bmVzY2FwZWRG
aWxlbmFtZShwYXRoKTsKLSAgICBpZiAoIWZpbGVuYW1lKQotICAgICAgICByZXR1cm4gZW50cmll
czsKLQotICAgIEdVbmlxdWVQdHI8R0Rpcj4gZGlyKGdfZGlyX29wZW4oZmlsZW5hbWUuZ2V0KCks
IDAsIG51bGxwdHIpKTsKLSAgICBpZiAoIWRpcikKLSAgICAgICAgcmV0dXJuIGVudHJpZXM7Ci0K
LSAgICBHVW5pcXVlUHRyPEdQYXR0ZXJuU3BlYz4gcHNwZWMoZ19wYXR0ZXJuX3NwZWNfbmV3KChm
aWx0ZXIudXRmOCgpKS5kYXRhKCkpKTsKLSAgICB3aGlsZSAoY29uc3QgY2hhciogbmFtZSA9IGdf
ZGlyX3JlYWRfbmFtZShkaXIuZ2V0KCkpKSB7Ci0gICAgICAgIGlmICghZ19wYXR0ZXJuX21hdGNo
X3N0cmluZyhwc3BlYy5nZXQoKSwgbmFtZSkpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAg
ICAgICBHVW5pcXVlUHRyPGdjaGFyPiBlbnRyeShnX2J1aWxkX2ZpbGVuYW1lKGZpbGVuYW1lLmdl
dCgpLCBuYW1lLCBudWxscHRyKSk7Ci0gICAgICAgIGVudHJpZXMuYXBwZW5kKHN0cmluZ0Zyb21G
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZW50cnkuZ2V0KCkpKTsKLSAgICB9Ci0KLSAgICByZXR1
cm4gZW50cmllczsKLX0KLQotU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYg
cHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKLXsKLSAgICBHVW5pcXVlUHRyPGdj
aGFyPiBmaWxlbmFtZShnX3N0cmR1cF9wcmludGYoIiVzJXMiLCBwcmVmaXgudXRmOCgpLmRhdGEo
KSwgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLnV0ZjgoKS5kYXRhKCkpKTsKLSAgICBHVW5p
cXVlUHRyPGdjaGFyPiB0ZW1wUGF0aChnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3RtcF9kaXIoKSwg
ZmlsZW5hbWUuZ2V0KCksIE5VTEwpKTsKLSAgICBHUmVmUHRyPEdGaWxlPiBmaWxlID0gYWRvcHRH
UmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgodGVtcFBhdGguZ2V0KCkpKTsKLQotICAgIGhhbmRsZSA9
IGdfZmlsZV9jcmVhdGVfcmVhZHdyaXRlKGZpbGUuZ2V0KCksIEdfRklMRV9DUkVBVEVfTk9ORSwg
MCwgMCk7Ci0gICAgaWYgKCFpc0hhbmRsZVZhbGlkKGhhbmRsZSkpCi0gICAgICAgIHJldHVybiBT
dHJpbmcoKTsKLSAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOCh0ZW1wUGF0aC5nZXQoKSk7Ci19
Ci0KLVBsYXRmb3JtRmlsZUhhbmRsZSBvcGVuRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVP
cGVuTW9kZSBtb2RlKQotewotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2Nh
cGVkRmlsZW5hbWUocGF0aCk7Ci0gICAgaWYgKCFmaWxlbmFtZSkKLSAgICAgICAgcmV0dXJuIGlu
dmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7Ci0KLSAgICBHUmVmUHRyPEdGaWxlPiBmaWxlID0gYWRv
cHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoZmlsZW5hbWUuZ2V0KCkpKTsKLSAgICBHRmlsZUlP
U3RyZWFtKiBpb1N0cmVhbSA9IDA7Ci0gICAgaWYgKG1vZGUgPT0gRmlsZU9wZW5Nb2RlOjpSZWFk
KQotICAgICAgICBpb1N0cmVhbSA9IGdfZmlsZV9vcGVuX3JlYWR3cml0ZShmaWxlLmdldCgpLCAw
LCAwKTsKLSAgICBlbHNlIGlmIChtb2RlID09IEZpbGVPcGVuTW9kZTo6V3JpdGUpIHsKLSAgICAg
ICAgaWYgKGdfZmlsZV90ZXN0KGZpbGVuYW1lLmdldCgpLCBzdGF0aWNfY2FzdDxHRmlsZVRlc3Q+
KEdfRklMRV9URVNUX0VYSVNUUyB8IEdfRklMRV9URVNUX0lTX1JFR1VMQVIpKSkKLSAgICAgICAg
ICAgIGlvU3RyZWFtID0gZ19maWxlX29wZW5fcmVhZHdyaXRlKGZpbGUuZ2V0KCksIDAsIDApOwot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBpb1N0cmVhbSA9IGdfZmlsZV9jcmVhdGVfcmVhZHdy
aXRlKGZpbGUuZ2V0KCksIEdfRklMRV9DUkVBVEVfTk9ORSwgMCwgMCk7Ci0gICAgfQotCi0gICAg
cmV0dXJuIGlvU3RyZWFtOwotfQotCi12b2lkIGNsb3NlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUm
IGhhbmRsZSkKLXsKLSAgICBpZiAoIWlzSGFuZGxlVmFsaWQoaGFuZGxlKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgZ19pb19zdHJlYW1fY2xvc2UoR19JT19TVFJFQU0oaGFuZGxlKSwgMCwgMCk7
Ci0gICAgZ19vYmplY3RfdW5yZWYoaGFuZGxlKTsKLSAgICBoYW5kbGUgPSBpbnZhbGlkUGxhdGZv
cm1GaWxlSGFuZGxlOwotfQotCi1sb25nIGxvbmcgc2Vla0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxl
IGhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCwgRmlsZVNlZWtPcmlnaW4gb3JpZ2luKQotewotICAg
IEdTZWVrVHlwZSBzZWVrVHlwZSA9IEdfU0VFS19TRVQ7Ci0gICAgc3dpdGNoIChvcmlnaW4pIHsK
LSAgICBjYXNlIEZpbGVTZWVrT3JpZ2luOjpCZWdpbm5pbmc6Ci0gICAgICAgIHNlZWtUeXBlID0g
R19TRUVLX1NFVDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGaWxlU2Vla09yaWdpbjo6Q3Vy
cmVudDoKLSAgICAgICAgc2Vla1R5cGUgPSBHX1NFRUtfQ1VSOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIEZpbGVTZWVrT3JpZ2luOjpFbmQ6Ci0gICAgICAgIHNlZWtUeXBlID0gR19TRUVLX0VO
RDsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgfQotCi0gICAgaWYgKCFnX3NlZWthYmxlX3NlZWsoR19TRUVLQUJMRShnX2lv
X3N0cmVhbV9nZXRfaW5wdXRfc3RyZWFtKEdfSU9fU1RSRUFNKGhhbmRsZSkpKSwKLSAgICAgICAg
b2Zmc2V0LCBzZWVrVHlwZSwgMCwgMCkpCi0gICAgewotICAgICAgICByZXR1cm4gLTE7Ci0gICAg
fQotICAgIHJldHVybiBnX3NlZWthYmxlX3RlbGwoR19TRUVLQUJMRShnX2lvX3N0cmVhbV9nZXRf
aW5wdXRfc3RyZWFtKEdfSU9fU1RSRUFNKGhhbmRsZSkpKSk7Ci19Ci0KLWludCB3cml0ZVRvRmls
ZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3Ro
KQotewotICAgIGdzaXplIGJ5dGVzV3JpdHRlbjsKLSAgICBnX291dHB1dF9zdHJlYW1fd3JpdGVf
YWxsKGdfaW9fc3RyZWFtX2dldF9vdXRwdXRfc3RyZWFtKEdfSU9fU1RSRUFNKGhhbmRsZSkpLAot
ICAgICAgICBkYXRhLCBsZW5ndGgsICZieXRlc1dyaXR0ZW4sIDAsIDApOwotICAgIHJldHVybiBi
eXRlc1dyaXR0ZW47Ci19Ci0KLWludCByZWFkRnJvbUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhh
bmRsZSwgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKLXsKLSAgICBHVW5pcXVlT3V0UHRyPEdFcnJv
cj4gZXJyb3I7Ci0gICAgZG8gewotICAgICAgICBnc3NpemUgYnl0ZXNSZWFkID0gZ19pbnB1dF9z
dHJlYW1fcmVhZChnX2lvX3N0cmVhbV9nZXRfaW5wdXRfc3RyZWFtKEdfSU9fU1RSRUFNKGhhbmRs
ZSkpLAotICAgICAgICAgICAgZGF0YSwgbGVuZ3RoLCAwLCAmZXJyb3Iub3V0UHRyKCkpOwotICAg
ICAgICBpZiAoYnl0ZXNSZWFkID49IDApCi0gICAgICAgICAgICByZXR1cm4gYnl0ZXNSZWFkOwot
ICAgIH0gd2hpbGUgKGVycm9yICYmIGVycm9yLT5jb2RlID09IEdfRklMRV9FUlJPUl9JTlRSKTsK
LSAgICByZXR1cm4gLTE7Ci19Ci0KLWJvb2wgbW92ZUZpbGUoY29uc3QgU3RyaW5nJiBvbGRQYXRo
LCBjb25zdCBTdHJpbmcmIG5ld1BhdGgpCi17Ci0gICAgR1VuaXF1ZVB0cjxnY2hhcj4gb2xkRmls
ZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShvbGRQYXRoKTsKLSAgICBpZiAoIW9sZEZpbGVuYW1l
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBHVW5pcXVlUHRyPGdjaGFyPiBuZXdGaWxl
bmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKG5ld1BhdGgpOwotICAgIGlmICghbmV3RmlsZW5hbWUp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIEdSZWZQdHI8R0ZpbGU+IG9sZEZpbGUgPSBh
ZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0aChvbGRGaWxlbmFtZS5nZXQoKSkpOwotICAgIEdS
ZWZQdHI8R0ZpbGU+IG5ld0ZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0aChuZXdG
aWxlbmFtZS5nZXQoKSkpOwotCi0gICAgcmV0dXJuIGdfZmlsZV9tb3ZlKG9sZEZpbGUuZ2V0KCks
IG5ld0ZpbGUuZ2V0KCksIEdfRklMRV9DT1BZX09WRVJXUklURSwgbnVsbHB0ciwgbnVsbHB0ciwg
bnVsbHB0ciwgbnVsbHB0cik7Ci19Ci0KLWJvb2wgaGFyZExpbmtPckNvcHlGaWxlKGNvbnN0IFN0
cmluZyYgc291cmNlLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uKQotewotI2lmIE9TKFdJTkRP
V1MpCi0gICAgcmV0dXJuICEhOjpDb3B5RmlsZShzb3VyY2UuY2hhcmFjdGVyc1dpdGhOdWxsVGVy
bWluYXRpb24oKS5kYXRhKCksIGRlc3RpbmF0aW9uLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0
aW9uKCkuZGF0YSgpLCBUUlVFKTsKLSNlbHNlCi0gICAgR1VuaXF1ZVB0cjxnY2hhcj4gc291cmNl
RmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShzb3VyY2UpOwotICAgIGlmICghc291cmNlRmls
ZW5hbWUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGRl
c3RpbmF0aW9uRmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShkZXN0aW5hdGlvbik7Ci0gICAg
aWYgKCFkZXN0aW5hdGlvbkZpbGVuYW1lKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBp
ZiAoIWxpbmsoc291cmNlRmlsZW5hbWUuZ2V0KCksIGRlc3RpbmF0aW9uRmlsZW5hbWUuZ2V0KCkp
KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIC8vIEhhcmQgbGluayBmYWlsZWQuIFBlcmZv
cm0gYSBjb3B5IGluc3RlYWQuCi0gICAgR1JlZlB0cjxHRmlsZT4gc291cmNlRmlsZSA9IGFkb3B0
R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKHNvdXJjZUZpbGVuYW1lLmdldCgpKSk7Ci0gICAgR1Jl
ZlB0cjxHRmlsZT4gZGVzdGluYXRpb25GaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3Bh
dGgoZGVzdGluYXRpb25GaWxlbmFtZS5nZXQoKSkpOwotICAgIHJldHVybiBnX2ZpbGVfY29weShz
b3VyY2VGaWxlLmdldCgpLCBkZXN0aW5hdGlvbkZpbGUuZ2V0KCksIEdfRklMRV9DT1BZX05PTkUs
IG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpOwotI2VuZGlmCi19Ci0KLU9wdGlv
bmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCi17Ci0g
ICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShmc0ZpbGUu
ZGF0YSgpKTsKLSAgICBpZiAoIWZpbGVuYW1lKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OwotCi0gICAgR1JlZlB0cjxHRmlsZT4gZmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9w
YXRoKGZpbGVuYW1lLmdldCgpKSk7Ci0gICAgR1JlZlB0cjxHRmlsZUluZm8+IGZpbGVJbmZvID0g
YWRvcHRHUmVmKGdfZmlsZV9xdWVyeV9maWxlc3lzdGVtX2luZm8oZmlsZS5nZXQoKSwgR19GSUxF
X0FUVFJJQlVURV9VTklYX0RFVklDRSwgbnVsbHB0ciwgbnVsbHB0cikpOwotICAgIGlmICghZmls
ZUluZm8pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICByZXR1cm4gZ19maWxl
X2luZm9fZ2V0X2F0dHJpYnV0ZV91aW50MzIoZmlsZUluZm8uZ2V0KCksIEdfRklMRV9BVFRSSUJV
VEVfVU5JWF9ERVZJQ0UpOwotfQotCi0jaWYgVVNFKEZJTEVfTE9DSykKLWJvb2wgbG9ja0ZpbGUo
UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgT3B0aW9uU2V0PEZpbGVMb2NrTW9kZT4gbG9ja01v
ZGUpCi17Ci0gICAgQ09NUElMRV9BU1NFUlQoTE9DS19TSCA9PSBXVEY6OmVudW1Ub1VuZGVybHlp
bmdUeXBlKEZpbGVMb2NrTW9kZTo6U2hhcmVkKSwgTG9ja1NoYXJlZEVuY29kaW5nSXNBc0V4cGVj
dGVkKTsKLSAgICBDT01QSUxFX0FTU0VSVChMT0NLX0VYID09IFdURjo6ZW51bVRvVW5kZXJseWlu
Z1R5cGUoRmlsZUxvY2tNb2RlOjpFeGNsdXNpdmUpLCBMb2NrRXhjbHVzaXZlRW5jb2RpbmdJc0Fz
RXhwZWN0ZWQpOwotICAgIENPTVBJTEVfQVNTRVJUKExPQ0tfTkIgPT0gV1RGOjplbnVtVG9VbmRl
cmx5aW5nVHlwZShGaWxlTG9ja01vZGU6Ok5vbmJsb2NraW5nKSwgTG9ja05vbmJsb2NraW5nRW5j
b2RpbmdJc0FzRXhwZWN0ZWQpOwotICAgIGF1dG8qIGlucHV0U3RyZWFtID0gZ19pb19zdHJlYW1f
Z2V0X2lucHV0X3N0cmVhbShHX0lPX1NUUkVBTShoYW5kbGUpKTsKLSAgICBpbnQgcmVzdWx0ID0g
ZmxvY2soZ19maWxlX2Rlc2NyaXB0b3JfYmFzZWRfZ2V0X2ZkKEdfRklMRV9ERVNDUklQVE9SX0JB
U0VEKGlucHV0U3RyZWFtKSksIGxvY2tNb2RlLnRvUmF3KCkpOwotICAgIHJldHVybiByZXN1bHQg
IT0gLTE7Ci19Ci0KLWJvb2wgdW5sb2NrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlKQot
ewotICAgIGF1dG8qIGlucHV0U3RyZWFtID0gZ19pb19zdHJlYW1fZ2V0X2lucHV0X3N0cmVhbShH
X0lPX1NUUkVBTShoYW5kbGUpKTsKLSAgICBpbnQgcmVzdWx0ID0gZmxvY2soZ19maWxlX2Rlc2Ny
aXB0b3JfYmFzZWRfZ2V0X2ZkKEdfRklMRV9ERVNDUklQVE9SX0JBU0VEKGlucHV0U3RyZWFtKSks
IExPQ0tfVU4pOwotICAgIHJldHVybiByZXN1bHQgIT0gLTE7Ci19Ci0jZW5kaWYgLy8gVVNFKEZJ
TEVfTE9DSykKLQotfSAvLyBuYW1lc3BhY2UgRmlsZVN5c3RlbQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZm
ZXJHbGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xp
Yi5jcHAKaW5kZXggYjQ4OTZjMDg1NDYwZTdjMGJlNTY0MDg0ZWM4OGVmMjJhZjYwYjg0NC4uZTBh
ODU5ZTNlZWEzZDlmNzNkODc4YTMwMDRlYmQ4MTdlMWI5OTI4YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwCkBAIC0xOSw3ICsxOSw3
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAKLSNp
bmNsdWRlICJGaWxlU3lzdGVtLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNs
dWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRl
bnRLZXlTZXNzaW9uLm1tCmluZGV4IGU4ZGQzYjVhZWM4MjkzY2Q1ZWQ5NmU5OGYxMDM1ZWU1M2Uy
OGM3YjQuLjI0Zjk1ZTg0NDEzNjdlMjIxOWNhMjI2NDQ1ZTg2MjI4ZjU3OTQ4MmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NE
TVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNz
aW9uLm1tCkBAIC0yOSw3ICsyOSw2IEBACiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVE
SUEpICYmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiAKICNpbXBvcnQgIkNETVByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakMuaCIKLSNpbXBvcnQgIkZpbGVTeXN0ZW0uaCIKICNpbXBvcnQgIkxlZ2FjeUNE
TS5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiTWVkaWFQbGF5ZXIuaCIKQEAgLTM5
LDYgKzM4LDcgQEAKICNpbXBvcnQgPENvcmVNZWRpYS9DTUJhc2UuaD4KICNpbXBvcnQgPEphdmFT
Y3JpcHRDb3JlL1R5cGVkQXJyYXlJbmxpbmVzLmg+CiAjaW1wb3J0IDxvYmpjL29iamMtcnVudGlt
ZS5oPgorI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2lu
Zy5oPgogCiBTT0ZUX0xJTktfRlJBTUVXT1JLX09QVElPTkFMKEFWRm91bmRhdGlvbikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0NETVNlc3Npb25BVlN0cmVhbVNlc3Npb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLm1tCmlu
ZGV4IDk5Mjk0MzE1ZDg2MjQxYjE2OGYyOGFhNzJlZGRlMGQ5N2NmNGE3OGMuLmMzNTczZTVjNjA4
MWM5OWIxNDA0ZTBlNDFjNTBlMDQ5ZTI5MWEyMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVlN0cmVhbVNl
c3Npb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbi5tbQpAQCAtMjksNyArMjksNiBAQAog
I2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSAmJiBFTkFCTEUoTUVESUFfU09VUkNF
KQogCiAjaW1wb3J0ICJDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgiCi0jaW1wb3J0ICJG
aWxlU3lzdGVtLmgiCiAjaW1wb3J0ICJMZWdhY3lDRE0uaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIK
ICNpbXBvcnQgIk1lZGlhUGxheWVyLmgiCkBAIC00MCw2ICszOSw3IEBACiAjaW1wb3J0IDxKYXZh
U2NyaXB0Q29yZS9UeXBlZEFycmF5SW5saW5lcy5oPgogI2ltcG9ydCA8b2JqYy9vYmpjLXJ1bnRp
bWUuaD4KICNpbXBvcnQgPHBhbC9zcGkvbWFjL0FWRm91bmRhdGlvblNQSS5oPgorI2ltcG9ydCA8
d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgogI2ltcG9ydCA8
d3RmL1VVSUQuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Np
b25NZWRpYVNvdXJjZUFWRk9iakMubW0KaW5kZXggMmNiMmQ2ZmEwY2Q4ZWZhNDIzMTg5MWEwOTgx
OTgzYzliOGMwNzdlNC4uZWM1ODM3OGE4YmViNmE1NzUzZDAyZGE0OWZlZGFiNjZlZWI1OTdjMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3Vy
Y2VBVkZPYmpDLm1tCkBAIC0yOSw5ICsyOSw5IEBACiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBU
RURfTUVESUEpICYmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiAKICNpbXBvcnQgIkNETVByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMuaCIKLSNpbXBvcnQgIkZpbGVTeXN0ZW0uaCIKICNpbXBvcnQgIldl
YkNvcmVOU0Vycm9yRXh0cmFzLmgiCiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZFcnJvci5oPgor
I2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMubW0KaW5kZXggNWUzNmRkMDA2OTMwNzUwMTEyYjcxM2ZkYzRlNWFl
YTRkMTBhOWMwOS4uZDZkNWU4MmIyMzc3NmZkNjI3N2UyOWI2OWRlYjY2MjlmOGM5MThjNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQpAQCAtMzEsNyArMzEsNiBAQAogI2ltcG9ydCAiQVZB
c3NldFRyYWNrVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJBVkZvdW5kYXRpb25NSU1FVHlwZUNhY2hl
LmgiCiAjaW1wb3J0ICJDRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLmgiCi0jaW1wb3J0ICJGaWxl
U3lzdGVtLmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRDRy5oIgogI2ltcG9ydCAiTG9nZ2lu
Zy5oIgogI2ltcG9ydCAiTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5oIgpAQCAtNDksNiArNDgs
NyBAQAogI2ltcG9ydCA8cGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uaD4K
ICNpbXBvcnQgPHBhbC9zcGkvbWFjL0FWRm91bmRhdGlvblNQSS5oPgogI2ltcG9ydCA8d3RmL0Rl
cXVlLmg+CisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJl
YWQuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDBmMDVlYjkxOTlkYmYzZTQ5
ZTFhMTJlMDc1NjZlZWM0ODkxZGUxNzcuLjQxNDBjMTFiMGVhNDc5OGU2NjBkNjQ5NTgwZmVjYWFk
M2MyNmQ0YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RS
RUFNRVIpCiAKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiR1N0cmVhbWVyQ29t
bW9uLmgiCiAjaW5jbHVkZSAiSFRUUEhlYWRlck5hbWVzLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVS
ZWdpc3RyeS5oIgpAQCAtNDIsNiArNDEsNyBAQAogI2luY2x1ZGUgPGdzdC9nc3QuaD4KICNpbmNs
dWRlIDxnc3QvcGJ1dGlscy9taXNzaW5nLXBsdWdpbnMuaD4KICNpbmNsdWRlIDxsaW1pdHM+Cisj
aW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+CiAj
aW5jbHVkZSA8d3RmL01lZGlhVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9RdWlja0xvb2subW0KaW5kZXggYTAyNzdmNTA5
YjJmMzA1NTFlYzIzNGY2ZmYxOGE1ZTM0NGVlZDY0MC4uMDczNzQwNjcwNTc3ZTFlZmRkMDMzZTFi
YWNkOGMxNDhiY2RjYWRkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1F1aWNrTG9vay5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29r
Lm1tCkBAIC0yOCwxMSArMjgsMTEgQEAKIAogI2lmIFVTRShRVUlDS19MT09LKQogCi0jaW1wb3J0
ICJGaWxlU3lzdGVtLmgiCiAjaW1wb3J0ICJQcmV2aWV3Q29udmVydGVyLmgiCiAjaW1wb3J0ICJS
ZXNvdXJjZVJlcXVlc3QuaCIKICNpbXBvcnQgIlNjaGVtZVJlZ2lzdHJ5LmgiCiAjaW1wb3J0IDxw
YWwvc3BpL2NvY29hL05TRmlsZU1hbmFnZXJTUEkuaD4KKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVt
Lmg+CiAjaW1wb3J0IDx3dGYvTG9jay5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlk
ZXJQYXN0ZWJvYXJkLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92
aWRlclBhc3RlYm9hcmQubW0KaW5kZXggYmY4MjE4Mzk5MTVlODBkNTg5OWE5NDg5OTlmMmYwMjA2
ZDhjZmYzYS4uMzU0NWQ3ZWZjYWM4Njc2NDhmNDlhNDc0ZThhMDIwYjUxYzg4ZDRkYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9h
cmQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBh
c3RlYm9hcmQubW0KQEAgLTM0LDExICszNCwxMSBAQAogI2ltcG9ydCA8VUlLaXQvTlNJdGVtUHJv
dmlkZXIrVUlLaXRBZGRpdGlvbnMuaD4KICNpbXBvcnQgPFVJS2l0L1VJQ29sb3IuaD4KICNpbXBv
cnQgPFVJS2l0L1VJSW1hZ2UuaD4KLSNpbXBvcnQgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2lt
cG9ydCA8V2ViQ29yZS9QYXN0ZWJvYXJkLmg+CiAjaW1wb3J0IDxwYWwvaW9zL1VJS2l0U29mdExp
bmsuaD4KICNpbXBvcnQgPHBhbC9zcGkvaW9zL1VJS2l0U1BJLmg+CiAjaW1wb3J0IDx3dGYvQmxv
Y2tQdHIuaD4KKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDx3dGYvT1NPYmpl
Y3RQdHIuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIApAQCAtNjk0LDcgKzY5NCw3IEBA
IHN0YXRpYyBOU1VSTCAqbGlua1RlbXBvcmFyeUl0ZW1Qcm92aWRlckZpbGVzVG9Ecm9wU3RhZ2lu
Z0RpcmVjdG9yeShOU1VSTCAqdXJsLCBOCiAgICAgaWYgKCF1cmwpCiAgICAgICAgIHJldHVybiBu
aWw7CiAKLSAgICBOU1N0cmluZyAqdGVtcG9yYXJ5RGF0YUludGVyYWN0aW9uRGlyZWN0b3J5ID0g
V2ViQ29yZTo6RmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KGRhdGFJbnRlcmFj
dGlvbkRpcmVjdG9yeVByZWZpeCk7CisgICAgTlNTdHJpbmcgKnRlbXBvcmFyeURhdGFJbnRlcmFj
dGlvbkRpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShkYXRh
SW50ZXJhY3Rpb25EaXJlY3RvcnlQcmVmaXgpOwogICAgIGlmICghdGVtcG9yYXJ5RGF0YUludGVy
YWN0aW9uRGlyZWN0b3J5KQogICAgICAgICByZXR1cm4gbmlsOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRmlsZVN5c3RlbU1hYy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9GaWxlU3lzdGVtTWFjLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA4ZWQ3NTFhN2VjMGU1ZDBiYWY3NzRmOTg2MTBhY2IwNDVjZDJiMDA0Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9GaWxlU3lzdGVtTWFjLm1tCisrKyAvZGV2L251bGwKQEAgLTEsODggKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwNy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJGaWxlU3lzdGVt
LmgiCi0KLSNpZiBQTEFURk9STShNQUMpCi0KLSNpbXBvcnQgPHBhbC9zcGkvbWFjL01ldGFkYXRh
U1BJLmg+Ci0jaW1wb3J0IDx3dGYvY29jb2EvTlNVUkxFeHRyYXMuaD4KLSNpbXBvcnQgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWJvb2wgRmlsZVN5c3Rl
bTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIGF1dG8g
ZmlsZU1hbmFnZXIgPSBhZG9wdE5TKFtbTlNGaWxlTWFuYWdlciBhbGxvY10gaW5pdF0pOwotCi0g
ICAgaWYgKE5TQXJyYXkgKmRpcmVjdG9yeUNvbnRlbnRzID0gW2ZpbGVNYW5hZ2VyIGNvbnRlbnRz
T2ZEaXJlY3RvcnlBdFBhdGg6cGF0aCBlcnJvcjpudWxscHRyXSkgewotICAgICAgICAvLyBFeHBs
aWNpdGx5IGxvb2sgZm9yIGFuZCBkZWxldGUgLkRTX1N0b3JlIGZpbGVzLgotICAgICAgICBpZiAo
ZGlyZWN0b3J5Q29udGVudHMuY291bnQgPT0gMSAmJiBbZGlyZWN0b3J5Q29udGVudHMuZmlyc3RP
YmplY3QgaXNFcXVhbFRvU3RyaW5nOkAiLkRTX1N0b3JlIl0pCi0gICAgICAgICAgICBbZmlsZU1h
bmFnZXIgcmVtb3ZlSXRlbUF0UGF0aDpbcGF0aCBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25l
bnQ6ZGlyZWN0b3J5Q29udGVudHMuZmlyc3RPYmplY3RdIGVycm9yOm51bGxwdHJdOwotICAgIH0K
LQotICAgIC8vIHJtZGlyKC4uLikgcmV0dXJucyAwIG9uIHN1Y2Nlc3NmdWwgZGVsZXRpb24gb2Yg
dGhlIHBhdGggYW5kIG5vbi16ZXJvIGluIGFueSBvdGhlciBjYXNlIChpbmNsdWRpbmcgaW52YWxp
ZCBwZXJtaXNzaW9ucyBvciBub24tZXhpc3RlbnQgZmlsZSkKLSAgICByZXR1cm4gIXJtZGlyKEZp
bGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCkpOwotfQotCi12
b2lkIEZpbGVTeXN0ZW06OnNldE1ldGFkYXRhVVJMKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3Qg
U3RyaW5nJiBtZXRhZGF0YVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiByZWZlcnJlcikKLXsKLSAg
ICBTdHJpbmcgdXJsU3RyaW5nOwotICAgIGlmIChOU1VSTCAqdXJsID0gVVJMV2l0aFVzZXJUeXBl
ZFN0cmluZyhtZXRhZGF0YVVSTFN0cmluZywgbmlsKSkKLSAgICAgICAgdXJsU3RyaW5nID0gV1RG
Ojp1c2VyVmlzaWJsZVN0cmluZyhXVEY6OlVSTEJ5UmVtb3ZpbmdVc2VySW5mbyh1cmwpKTsKLSAg
ICBlbHNlCi0gICAgICAgIHVybFN0cmluZyA9IG1ldGFkYXRhVVJMU3RyaW5nOwotCi0gICAgLy8g
Q2FsbCBNZXRhZGF0YSBBUEkgb24gYSBiYWNrZ3JvdW5kIHF1ZXVlIGJlY2F1c2UgaXQgY2FuIHRh
a2Ugc29tZSB0aW1lLgotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9nbG9iYWxfcXVl
dWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVGQVVMVCwgMCksIFtwYXRoID0gcGF0aC5pc29s
YXRlZENvcHkoKSwgdXJsU3RyaW5nID0gdXJsU3RyaW5nLmlzb2xhdGVkQ29weSgpLCByZWZlcnJl
ciA9IHJlZmVycmVyLmlzb2xhdGVkQ29weSgpXSB7Ci0gICAgICAgIGF1dG8gaXRlbSA9IGFkb3B0
Q0YoTURJdGVtQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHBhdGguY3JlYXRlQ0ZTdHJpbmco
KS5nZXQoKSkpOwotICAgICAgICBpZiAoIWl0ZW0pCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAg
ICAgICAgYXV0byB3aGVyZUZyb21BdHRyaWJ1dGUgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkg
YWxsb2NdIGluaXRXaXRoT2JqZWN0czp1cmxTdHJpbmcsIG5pbF0pOwotICAgICAgICBpZiAoIXJl
ZmVycmVyLmlzTnVsbCgpKQotICAgICAgICAgICAgW3doZXJlRnJvbUF0dHJpYnV0ZSBhZGRPYmpl
Y3Q6cmVmZXJyZXJdOwotCi0gICAgICAgIE1ESXRlbVNldEF0dHJpYnV0ZShpdGVtLmdldCgpLCBr
TURJdGVtV2hlcmVGcm9tcywgKF9fYnJpZGdlIENGQXJyYXlSZWYpd2hlcmVGcm9tQXR0cmlidXRl
LmdldCgpKTsKLSAgICAgICAgTURJdGVtU2V0QXR0cmlidXRlKGl0ZW0uZ2V0KCksIGtNREl0ZW1E
b3dubG9hZGVkRGF0ZSwgKF9fYnJpZGdlIENGQXJyYXlSZWYpQFsgW05TRGF0ZSBkYXRlXSBdKTsK
LSAgICB9KTsKLX0KLQotYm9vbCBGaWxlU3lzdGVtOjpjYW5FeGNsdWRlRnJvbUJhY2t1cCgpCi17
Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgRmlsZVN5c3RlbTo6ZXhjbHVkZUZyb21CYWNr
dXAoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIC8vIEl0IGlzIGNyaXRpY2FsIHRvIHBhc3Mg
RkFMU0UgZm9yIGV4Y2x1ZGVCeVBhdGggYmVjYXVzZSBleGNsdWRpbmcgYnkgcGF0aCByZXF1aXJl
cyByb290IHByaXZpbGVnZXMuCi0gICAgQ1NCYWNrdXBTZXRJdGVtRXhjbHVkZWQoRmlsZVN5c3Rl
bTo6cGF0aEFzVVJMKHBhdGgpLmdldCgpLCBUUlVFLCBGQUxTRSk7Ci0gICAgcmV0dXJuIHRydWU7
Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2Ev
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5t
bQppbmRleCBkN2UzZjM5YTY3YjM3M2I4Mzg3OWM4NDA5YzU4YjA4OThkMzQ3OWVjLi5kNzllMmY2
MGM2MDk0MDNhYmRmYzAyYWViZjcwYTI2YmNjZGYyZjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9j
b2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCkBAIC0yOSwxMyArMjksMTMg
QEAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9OKQogCiAjaW5j
bHVkZSAiQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIK
ICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUu
aCIKICNpbmNsdWRlICJXZWJBdWRpb0J1ZmZlckxpc3QuaCIKICNpbmNsdWRlIDxBVkZvdW5kYXRp
b24vQVZBc3NldFdyaXRlci5oPgogI2luY2x1ZGUgPEFWRm91bmRhdGlvbi9BVkFzc2V0V3JpdGVy
SW5wdXQuaD4KICNpbmNsdWRlIDxwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaD4KKyNpbmNsdWRl
IDx3dGYvRmlsZVN5c3RlbS5oPgogCiB0eXBlZGVmIEFWQXNzZXRXcml0ZXIgQVZBc3NldFdyaXRl
clR5cGU7CiB0eXBlZGVmIEFWQXNzZXRXcml0ZXJJbnB1dCBBVkFzc2V0V3JpdGVySW5wdXRUeXBl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZp
bGVSZWZlcmVuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0
YUZpbGVSZWZlcmVuY2UuY3BwCmluZGV4IGI2M2YwNjEyYWJmY2I4NjZkYTBjZWQwYTIzNWRjMTU1
OTNmZjA1ZWQuLjVhYmZkNzVjYjQ5NDU2ZTQyZDM5ZDQ0ZDNiYzIyNTlhYWZmYTUyMjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJl
bmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmls
ZVJlZmVyZW5jZS5jcHAKQEAgLTI3LDggKzI3LDggQEAKICNpbmNsdWRlICJCbG9iRGF0YUZpbGVS
ZWZlcmVuY2UuaCIKIAogI2luY2x1ZGUgIkZpbGUuaCIKLSNpbmNsdWRlICJGaWxlTWV0YWRhdGEu
aCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVNZXRhZGF0YS5o
PgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1w
bC5jcHAKaW5kZXggODBiNDFlOTc1ZTRkNjE0M2FmNGM5OTYxMTc1NDdiYjg5MmVkYTMxOC4uMWM3
MDZhYTM0NmNhZGRlYTM5ZTUwMGQ4MDMwNGNkNDk0YmQ4MjY4MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCkBAIC0zNSwx
MyArMzUsMTMgQEAKICNpbmNsdWRlICJCbG9iRGF0YS5oIgogI2luY2x1ZGUgIkJsb2JQYXJ0Lmgi
CiAjaW5jbHVkZSAiQmxvYlJlc291cmNlSGFuZGxlLmgiCi0jaW5jbHVkZSAiRmlsZU1ldGFkYXRh
LmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIK
ICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5o
IgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlv
bkhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZU1ldGFkYXRhLmg+CisjaW5jbHVkZSA8d3Rm
L0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCmlu
ZGV4IGM5NGUzOTQ5NGI4ZTMyNmRiNGExMmEyNzIwMWE0NjIzOGRlMThjNGIuLmNjNjdjZTY4OGYz
YmNhMjIyNjkwYjQzZjEwNTg3OGJhOWUzYzI4ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAKQEAgLTM1LDE5ICsz
NSwxOSBAQAogI2luY2x1ZGUgIkFzeW5jRmlsZVN0cmVhbS5oIgogI2luY2x1ZGUgIkJsb2JEYXRh
LmgiCiAjaW5jbHVkZSAiRmlsZVN0cmVhbS5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNp
bmNsdWRlICJIVFRQSGVhZGVyTmFtZXMuaCIKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgogI2lu
Y2x1ZGUgIlBhcnNlZENvbnRlbnRSYW5nZS5oIgotI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNs
dWRlICJSZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVDbGllbnQuaCIK
ICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNl
LmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25I
YW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTWFp
blRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9Gb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0Zvcm1EYXRhLmNwcAppbmRleCA1NGU0YWMwNDk2MmEyMjE5MDdlM2I3ZDgwYTRmYmFjYmUyNTRi
Mzk5Li43Yjc2YTVlZWRlOTlmOTQ5YzgxZTY5Y2ZlMWJkYmI4OTZjY2MyNjdlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcApAQCAtMjksMTIgKzI5LDEy
IEBACiAjaW5jbHVkZSAiRE9NRm9ybURhdGEuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2lu
Y2x1ZGUgIkZpbGUuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiRm9ybURh
dGFCdWlsZGVyLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5o
IgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVCbG9iUmVn
aXN0cnkuaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0xpbmVFbmRpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAK
aW5kZXggOWUyZDg4MWQ2MzU0OTE1MjVkNzFhZjQ1NmMyZDE5NWZkMTNiOTRkNi4uYTc0YWU1YWFj
OWNiMjYyM2RjOWNhNWE4YWE0MGFjMzQwMjEyZjJkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCkBA
IC0zMCwxMSArMzAsMTEgQEAKICNpbmNsdWRlICJGb3JtRGF0YVN0cmVhbUNGTmV0LmgiCiAKICNp
bmNsdWRlICJCbG9iRGF0YS5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJG
b3JtRGF0YS5oIgogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+
CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5o
PgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4K
ICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQppbmRl
eCAyN2ZmOWQxY2E4ZWZhMWZkZDZlZGYyODg2NDg2NDc5NDlmODgxYTk2Li4yZmVjMWYzODM0ZTQx
MTZhMWRkNGNlYjFmNjMyODk4ZDVlY2UxNDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0K
QEAgLTI4LDEzICsyOCwxMyBAQAogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAKLSNpbXBvcnQgIkZp
bGVTeXN0ZW0uaCIKICNpbXBvcnQgIkZvcm1EYXRhU3RyZWFtTWFjLmgiCiAjaW1wb3J0ICJIVFRQ
SGVhZGVyTmFtZXMuaCIKICNpbXBvcnQgIlJlc291cmNlUmVxdWVzdENGTmV0LmgiCiAjaW1wb3J0
ICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRh
dGlvbi5oPgogI2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4KKyNpbXBvcnQgPHd0
Zi9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9Db29raWVKYXJEQi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ29va2llSmFyREIuY3BwCmluZGV4IGMyM2ZkNzJmMTkxNzEwMjA4MmUxMjFlNDRkNThlZGQ4
YTMyZDFlNzEuLjI2MzYyMjg4Yjg2OWQ4YzdiYjM0MTdmNzZmNDBiNjNjYzU3ZjdhNzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRC
LmNwcApAQCAtMjYsMTAgKzI2LDkgQEAKICNpbmNsdWRlICJDb29raWVKYXJEQi5oIgogCiAjaW5j
bHVkZSAiQ29va2llVXRpbC5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJM
b2dnaW5nLmgiCiAjaW5jbHVkZSAiU1FMaXRlRmlsZVN5c3RlbS5oIgotCisjaW5jbHVkZSA8d3Rm
L0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTW9ub3RvbmljVGltZS5oPgogI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxDYWNoZUVudHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybENhY2hlRW50cnkuaAppbmRleCBjYmM0NWZlZDJiNjM4ZWE2MmQ5MTJlYzdlZDJk
NjYxNDNiOGY5ZDZiLi4xMTAyN2NlM2IzY2Y2Mzg4Zjk5NTRhYWY0OWM0OTAzZmU5M2ZkZmY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hl
RW50cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENh
Y2hlRW50cnkuaApAQCAtMjYsMTEgKzI2LDExIEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVk
ZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkhUVFBIZWFkZXJNYXAuaCIKICNpbmNsdWRlICJS
ZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUg
IlJlc291cmNlUmVzcG9uc2UuaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3
dGYvTGlzdEhhc2hTZXQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcAppbmRleCA0M2JjMmU3YmZmZjRmOWJk
NmY3MTAyODVkNmQzZDg2MzFiYjc3ODNhLi5mYTVjOGQyZDIxYjYyNzM4MTVkMDIzYTRmMjA0NTUw
MTZlOTYzOGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybENhY2hlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCkBAIC0zMCwxMiArMzAsMTIgQEAKIAogI2lu
Y2x1ZGUgIkN1cmxDYWNoZU1hbmFnZXIuaCIKIAotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNp
bmNsdWRlICJIVFRQSGVhZGVyTWFwLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUg
IlJlc291cmNlSGFuZGxlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVJbnRlcm5h
bC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lz
dGVtLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0
cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybEZvcm1EYXRhU3RyZWFtLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybEZvcm1EYXRhU3RyZWFtLmgK
aW5kZXggYzhlZjMzM2UwZDhjMGUwMjhlY2Q4YTQ2ZDgyNmI5MDY3MWEwMGUwYy4uMDllN2ZkYmI0
YTJjZmFiNGI5MDczMmYwNjExNGJlMDgxMTNiYjUxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxGb3JtRGF0YVN0cmVhbS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRm9ybURhdGFTdHJlYW0uaApAQCAt
MjYsOCArMjYsOCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIK
ICNpbmNsdWRlICJGb3JtRGF0YS5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oCmluZGV4IGZkYzRi
NTkwYzE0MmNmNmRjOTgwNzdkOWY3NWQ3ODY1NjM2MTk2OWQuLjkzY2E2MTAzZmU2M2Q1ZmYwMzEw
NTVjODI1ZDgwMjgyNzY0YWVkYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oCkBAIC0zMiwxMCArMzIsMTAgQEAKICNpbmNsdWRl
ICJDdXJsUmVxdWVzdFNjaGVkdWxlckNsaWVudC5oIgogI2luY2x1ZGUgIkN1cmxSZXNwb25zZS5o
IgogI2luY2x1ZGUgIkN1cmxTU0xWZXJpZmllci5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIK
ICNpbmNsdWRlICJOZXR3b3JrTG9hZE1ldHJpY3MuaCIKICNpbmNsdWRlICJQcm90ZWN0aW9uU3Bh
Y2UuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5
c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9NZXNzYWdlUXVldWUuaD4KICNpbmNsdWRlIDx3dGYvTW9u
b3RvbmljVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lv
bkN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtT
dG9yYWdlU2Vzc2lvbkN1cmwuY3BwCmluZGV4IGNlOWEyZmZhNDM2ZjY1Mjk1M2EyMDdiNDEwNzRj
MTkyOTQ3ZjMyZTIuLjAwZTNkMDhiY2Q0N2IxZjVmYWYwNzU1ZDJiZmM1YzNmMjFhZjZjNTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3Rv
cmFnZVNlc3Npb25DdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAKQEAgLTMzLDEwICszMyw5IEBACiAj
aW5jbHVkZSAiQ29va2llSmFyREIuaCIKICNpbmNsdWRlICJDb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRQcm94eS5oIgogI2luY2x1ZGUgIkN1cmxDb250ZXh0LmgiCi0jaW5jbHVkZSAiRmlsZVN5c3Rl
bS5oIgogI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VI
YW5kbGUuaCIKLQorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL01h
aW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3
dGYvVVJMLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCmluZGV4IDBlZWU4ODMxYTUzMGUwZDhiODBm
YjMyMjYwNWQwNGZiZTVlMjhhM2IuLjAzMmQ0ZGQ4OGZmZjc2YTEwN2JhN2E4NTIzNTQzN2FhNDc3
ZTgwYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9S
ZXNvdXJjZUhhbmRsZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCkBAIC0zOCw3ICszOCw2IEBACiAjaW5jbHVk
ZSAiQ3VybENhY2hlTWFuYWdlci5oIgogI2luY2x1ZGUgIkN1cmxDb250ZXh0LmgiCiAjaW5jbHVk
ZSAiQ3VybFJlcXVlc3QuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiSFRU
UFBhcnNlcnMuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLmgiCkBAIC00OCw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiU3luY2hyb25vdXNMb2Fk
ZXJDbGllbnQuaCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKICNpbmNsdWRlIDx3dGYvQ29t
cGxldGlvbkhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L0Jhc2U2NC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9CbG9iRGF0YUZpbGVSZWZlcmVuY2VN
YWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9CbG9iRGF0YUZpbGVS
ZWZlcmVuY2VNYWMubW0KaW5kZXggZmNmNTVkNzZlYTQ1ZWJiMDY3MDQzZWNkZmM4Y2YwOGNjOTI0
NmEyOS4uYjY5MjkyMGIyMWZjNjYzOWQ1NzQ1ZDFjMDQ0ZThiNzg3ODIzNTBkMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQmxvYkRhdGFGaWxlUmVmZXJl
bmNlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Jsb2JE
YXRhRmlsZVJlZmVyZW5jZU1hYy5tbQpAQCAtMjgsOCArMjgsOCBAQAogCiAjaWYgRU5BQkxFKEZJ
TEVfUkVQTEFDRU1FTlQpCiAKLSNpbmNsdWRlICJGaWxlTWV0YWRhdGEuaCIKLSNpbmNsdWRlICJG
aWxlU3lzdGVtLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVNZXRhZGF0YS5oPgorI2luY2x1ZGUgPHd0
Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL1NvZnRMaW5raW5nLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCmluZGV4IDYzNzM0YzY3
NGM1MmVlOTVkYzZjOWU0MjFjNDY2MGY0MTg0MDBiYWEuLjA4MTVlYTY4OGU3NjY5MjdlNjYzZDQw
NTYxNDlkYmQzNjhlNjQ2Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCkBAIC0zMiw3ICszMiw2
IEBACiAjaWYgVVNFKFNPVVApCiAKICNpbmNsdWRlICJDcmVkZW50aWFsU3RvcmFnZS5oIgotI2lu
Y2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJHVW5pcXVlUHRyU291cC5oIgogI2luY2x1
ZGUgIkhUVFBQYXJzZXJzLmgiCiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgpAQCAtNTcs
NiArNTYsNyBAQAogI2luY2x1ZGUgPHVuaXN0ZC5oPgogI2VuZGlmCiAjaW5jbHVkZSA8d3RmL0Nv
bXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRl
IDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvUnVuTG9vcFNvdXJjZVBy
aW9yaXR5Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9u
LmNwcAppbmRleCAzNDNmYWViOWZlYjIxOTRjY2MzZWY3NzlkNzdkM2Y2YjRkMWVkYzg3Li5iOTY3
Nzk1OTgwZWU4ZmE0Yzk5NTAwZmZkZjM0YjQyMDJlYjJhMmRiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9u
LmNwcApAQCAtMzAsMTMgKzMwLDEzIEBACiAjaW5jbHVkZSAiU291cE5ldHdvcmtTZXNzaW9uLmgi
CiAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgotI2luY2x1ZGUgIkZpbGVT
eXN0ZW0uaCIKICNpbmNsdWRlICJHVW5pcXVlUHRyU291cC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcu
aCIKICNpbmNsdWRlICJTb3VwTmV0d29ya1Byb3h5U2V0dGluZ3MuaCIKICNpbmNsdWRlIDxnbGli
L2dzdGRpby5oPgogI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgogI2luY2x1ZGUgPHBhbC9jcnlw
dG8vQ3J5cHRvRGlnZXN0Lmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRl
IDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bv
c2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0
ODUxMzUyNTE4ZDYwNmJlYTI1ZWVlYTMzNjE4NTI4MDMzNGNmY2MuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9z
aXgvRmlsZVN5c3RlbVBPU0lYLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ5MyArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUg
SW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAg
ICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0g
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKLQotI2luY2x1ZGUgIkZpbGVN
ZXRhZGF0YS5oIgotI2luY2x1ZGUgPGRpcmVudC5oPgotI2luY2x1ZGUgPGVycm5vLmg+Ci0jaW5j
bHVkZSA8ZmNudGwuaD4KLSNpbmNsdWRlIDxmbm1hdGNoLmg+Ci0jaW5jbHVkZSA8bGliZ2VuLmg+
Ci0jaW5jbHVkZSA8c3RkaW8uaD4KLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgotI2luY2x1ZGUgPHN5
cy9zdGF0dmZzLmg+Ci0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaW5jbHVkZSA8dW5pc3RkLmg+
Ci0jaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgotI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBGaWxl
U3lzdGVtIHsKLQotYm9vbCBmaWxlRXhpc3RzKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBp
ZiAocGF0aC5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgQ1N0cmluZyBm
c1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKLQotICAgIGlmICghZnNSZXAu
ZGF0YSgpIHx8IGZzUmVwLmRhdGEoKVswXSA9PSAnXDAnKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICByZXR1cm4gYWNjZXNzKGZzUmVwLmRhdGEoKSwgRl9PSykgIT0gLTE7Ci19Ci0KLWJv
b2wgZGVsZXRlRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgQ1N0cmluZyBmc1JlcCA9
IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKLQotICAgIGlmICghZnNSZXAuZGF0YSgp
IHx8IGZzUmVwLmRhdGEoKVswXSA9PSAnXDAnKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICAvLyB1bmxpbmsoLi4uKSByZXR1cm5zIDAgb24gc3VjY2Vzc2Z1bCBkZWxldGlvbiBvZiB0aGUg
cGF0aCBhbmQgbm9uLXplcm8gaW4gYW55IG90aGVyIGNhc2UgKGluY2x1ZGluZyBpbnZhbGlkIHBl
cm1pc3Npb25zIG9yIG5vbi1leGlzdGVudCBmaWxlKQotICAgIHJldHVybiAhdW5saW5rKGZzUmVw
LmRhdGEoKSk7Ci19Ci0KLVBsYXRmb3JtRmlsZUhhbmRsZSBvcGVuRmlsZShjb25zdCBTdHJpbmcm
IHBhdGgsIEZpbGVPcGVuTW9kZSBtb2RlKQotewotICAgIENTdHJpbmcgZnNSZXAgPSBmaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24ocGF0aCk7Ci0KLSAgICBpZiAoZnNSZXAuaXNOdWxsKCkpCi0gICAg
ICAgIHJldHVybiBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOwotCi0gICAgaW50IHBsYXRmb3Jt
RmxhZyA9IDA7Ci0gICAgaWYgKG1vZGUgPT0gRmlsZU9wZW5Nb2RlOjpSZWFkKQotICAgICAgICBw
bGF0Zm9ybUZsYWcgfD0gT19SRE9OTFk7Ci0gICAgZWxzZSBpZiAobW9kZSA9PSBGaWxlT3Blbk1v
ZGU6OldyaXRlKQotICAgICAgICBwbGF0Zm9ybUZsYWcgfD0gKE9fV1JPTkxZIHwgT19DUkVBVCB8
IE9fVFJVTkMpOwotI2lmIE9TKERBUldJTikKLSAgICBlbHNlIGlmIChtb2RlID09IEZpbGVPcGVu
TW9kZTo6RXZlbnRzT25seSkKLSAgICAgICAgcGxhdGZvcm1GbGFnIHw9IE9fRVZUT05MWTsKLSNl
bmRpZgotCi0gICAgcmV0dXJuIG9wZW4oZnNSZXAuZGF0YSgpLCBwbGF0Zm9ybUZsYWcsIDA2NjYp
OwotfQotCi12b2lkIGNsb3NlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKLXsKLSAg
ICBpZiAoaXNIYW5kbGVWYWxpZChoYW5kbGUpKSB7Ci0gICAgICAgIGNsb3NlKGhhbmRsZSk7Ci0g
ICAgICAgIGhhbmRsZSA9IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7Ci0gICAgfQotfQotCi1s
b25nIGxvbmcgc2Vla0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgbG9uZyBsb25nIG9m
ZnNldCwgRmlsZVNlZWtPcmlnaW4gb3JpZ2luKQotewotICAgIGludCB3aGVuY2UgPSBTRUVLX1NF
VDsKLSAgICBzd2l0Y2ggKG9yaWdpbikgewotICAgIGNhc2UgRmlsZVNlZWtPcmlnaW46OkJlZ2lu
bmluZzoKLSAgICAgICAgd2hlbmNlID0gU0VFS19TRVQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgRmlsZVNlZWtPcmlnaW46OkN1cnJlbnQ6Ci0gICAgICAgIHdoZW5jZSA9IFNFRUtfQ1VSOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIEZpbGVTZWVrT3JpZ2luOjpFbmQ6Ci0gICAgICAgIHdo
ZW5jZSA9IFNFRUtfRU5EOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGxvbmcg
bG9uZz4obHNlZWsoaGFuZGxlLCBvZmZzZXQsIHdoZW5jZSkpOwotfQotCi1ib29sIHRydW5jYXRl
RmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0KQotewotICAg
IC8vIGZ0cnVuY2F0ZSByZXR1cm5zIDAgdG8gaW5kaWNhdGUgdGhlIHN1Y2Nlc3MuCi0gICAgcmV0
dXJuICFmdHJ1bmNhdGUoaGFuZGxlLCBvZmZzZXQpOwotfQotCi1pbnQgd3JpdGVUb0ZpbGUoUGxh
dGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKLXsK
LSAgICBkbyB7Ci0gICAgICAgIGludCBieXRlc1dyaXR0ZW4gPSB3cml0ZShoYW5kbGUsIGRhdGEs
IHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSk7Ci0gICAgICAgIGlmIChieXRlc1dyaXR0ZW4g
Pj0gMCkKLSAgICAgICAgICAgIHJldHVybiBieXRlc1dyaXR0ZW47Ci0gICAgfSB3aGlsZSAoZXJy
bm8gPT0gRUlOVFIpOwotICAgIHJldHVybiAtMTsKLX0KLQotaW50IHJlYWRGcm9tRmlsZShQbGF0
Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQotewotICAgIGRv
IHsKLSAgICAgICAgaW50IGJ5dGVzUmVhZCA9IHJlYWQoaGFuZGxlLCBkYXRhLCBzdGF0aWNfY2Fz
dDxzaXplX3Q+KGxlbmd0aCkpOwotICAgICAgICBpZiAoYnl0ZXNSZWFkID49IDApCi0gICAgICAg
ICAgICByZXR1cm4gYnl0ZXNSZWFkOwotICAgIH0gd2hpbGUgKGVycm5vID09IEVJTlRSKTsKLSAg
ICByZXR1cm4gLTE7Ci19Ci0KLSNpZiBVU0UoRklMRV9MT0NLKQotYm9vbCBsb2NrRmlsZShQbGF0
Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBPcHRpb25TZXQ8RmlsZUxvY2tNb2RlPiBsb2NrTW9kZSkK
LXsKLSAgICBDT01QSUxFX0FTU0VSVChMT0NLX1NIID09IFdURjo6ZW51bVRvVW5kZXJseWluZ1R5
cGUoRmlsZUxvY2tNb2RlOjpTaGFyZWQpLCBMb2NrU2hhcmVkRW5jb2RpbmdJc0FzRXhwZWN0ZWQp
OwotICAgIENPTVBJTEVfQVNTRVJUKExPQ0tfRVggPT0gV1RGOjplbnVtVG9VbmRlcmx5aW5nVHlw
ZShGaWxlTG9ja01vZGU6OkV4Y2x1c2l2ZSksIExvY2tFeGNsdXNpdmVFbmNvZGluZ0lzQXNFeHBl
Y3RlZCk7Ci0gICAgQ09NUElMRV9BU1NFUlQoTE9DS19OQiA9PSBXVEY6OmVudW1Ub1VuZGVybHlp
bmdUeXBlKEZpbGVMb2NrTW9kZTo6Tm9uYmxvY2tpbmcpLCBMb2NrTm9uYmxvY2tpbmdFbmNvZGlu
Z0lzQXNFeHBlY3RlZCk7Ci0gICAgaW50IHJlc3VsdCA9IGZsb2NrKGhhbmRsZSwgbG9ja01vZGUu
dG9SYXcoKSk7Ci0gICAgcmV0dXJuIChyZXN1bHQgIT0gLTEpOwotfQotCi1ib29sIHVubG9ja0Zp
bGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSkKLXsKLSAgICBpbnQgcmVzdWx0ID0gZmxvY2so
aGFuZGxlLCBMT0NLX1VOKTsKLSAgICByZXR1cm4gKHJlc3VsdCAhPSAtMSk7Ci19Ci0jZW5kaWYK
LQotI2lmICFQTEFURk9STShNQUMpCi1ib29sIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0
cmluZyYgcGF0aCkKLXsKLSAgICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKHBhdGgpOwotCi0gICAgaWYgKCFmc1JlcC5kYXRhKCkgfHwgZnNSZXAuZGF0YSgpWzBdID09
ICdcMCcpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIHJtZGlyKC4uLikgcmV0dXJu
cyAwIG9uIHN1Y2Nlc3NmdWwgZGVsZXRpb24gb2YgdGhlIHBhdGggYW5kIG5vbi16ZXJvIGluIGFu
eSBvdGhlciBjYXNlIChpbmNsdWRpbmcgaW52YWxpZCBwZXJtaXNzaW9ucyBvciBub24tZXhpc3Rl
bnQgZmlsZSkKLSAgICByZXR1cm4gIXJtZGlyKGZzUmVwLmRhdGEoKSk7Ci19Ci0jZW5kaWYKLQot
Ym9vbCBnZXRGaWxlU2l6ZShjb25zdCBTdHJpbmcmIHBhdGgsIGxvbmcgbG9uZyYgcmVzdWx0KQot
ewotICAgIENTdHJpbmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7Ci0K
LSAgICBpZiAoIWZzUmVwLmRhdGEoKSB8fCBmc1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgc3RydWN0IHN0YXQgZmlsZUluZm87Ci0KLSAgICBpZiAo
c3RhdChmc1JlcC5kYXRhKCksICZmaWxlSW5mbykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQot
ICAgIHJlc3VsdCA9IGZpbGVJbmZvLnN0X3NpemU7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJv
b2wgZ2V0RmlsZVNpemUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgbG9uZyBsb25nJiByZXN1
bHQpCi17Ci0gICAgc3RydWN0IHN0YXQgZmlsZUluZm87Ci0gICAgaWYgKGZzdGF0KGhhbmRsZSwg
JmZpbGVJbmZvKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmVzdWx0ID0gZmlsZUlu
Zm8uc3Rfc2l6ZTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotT3B0aW9uYWw8V2FsbFRpbWU+IGdl
dEZpbGVDcmVhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoKQotewotI2lmIE9TKERBUldJTikg
fHwgT1MoT1BFTkJTRCkgfHwgT1MoTkVUQlNEKSB8fCBPUyhGUkVFQlNEKQotICAgIENTdHJpbmcg
ZnNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7Ci0KLSAgICBpZiAoIWZzUmVw
LmRhdGEoKSB8fCBmc1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKLQotICAgIHN0cnVjdCBzdGF0IGZpbGVJbmZvOwotCi0gICAgaWYgKHN0YXQoZnNS
ZXAuZGF0YSgpLCAmZmlsZUluZm8pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0g
ICAgcmV0dXJuIFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhmaWxlSW5mby5zdF9iaXJ0aHRpbWUp
OwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0ocGF0aCk7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKLSNlbmRpZgotfQotCi1PcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZU1vZGlmaWNhdGlvblRp
bWUoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIENTdHJpbmcgZnNSZXAgPSBmaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24ocGF0aCk7Ci0KLSAgICBpZiAoIWZzUmVwLmRhdGEoKSB8fCBmc1JlcC5k
YXRhKClbMF0gPT0gJ1wwJykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIHN0
cnVjdCBzdGF0IGZpbGVJbmZvOwotCi0gICAgaWYgKHN0YXQoZnNSZXAuZGF0YSgpLCAmZmlsZUlu
Zm8pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgcmV0dXJuIFdhbGxUaW1l
Ojpmcm9tUmF3U2Vjb25kcyhmaWxlSW5mby5zdF9tdGltZSk7Ci19Ci0KLXN0YXRpYyBGaWxlTWV0
YWRhdGE6OlR5cGUgdG9GaWxlTWV0YXRhVHlwZShzdHJ1Y3Qgc3RhdCBmaWxlSW5mbykKLXsKLSAg
ICBpZiAoU19JU0RJUihmaWxlSW5mby5zdF9tb2RlKSkKLSAgICAgICAgcmV0dXJuIEZpbGVNZXRh
ZGF0YTo6VHlwZTo6RGlyZWN0b3J5OwotICAgIGlmIChTX0lTTE5LKGZpbGVJbmZvLnN0X21vZGUp
KQotICAgICAgICByZXR1cm4gRmlsZU1ldGFkYXRhOjpUeXBlOjpTeW1ib2xpY0xpbms7Ci0gICAg
cmV0dXJuIEZpbGVNZXRhZGF0YTo6VHlwZTo6RmlsZTsKLX0KLQotc3RhdGljIE9wdGlvbmFsPEZp
bGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhVXNpbmdGdW5jdGlvbihjb25zdCBTdHJpbmcmIHBhdGgs
IGludCAoKnN0YXRGdW5jKShjb25zdCBjaGFyKiwgc3RydWN0IHN0YXQqKSkKLXsKLSAgICBDU3Ry
aW5nIGZzUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwotCi0gICAgaWYgKCFm
c1JlcC5kYXRhKCkgfHwgZnNSZXAuZGF0YSgpWzBdID09ICdcMCcpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7Ci0KLSAgICBzdHJ1Y3Qgc3RhdCBmaWxlSW5mbzsKLSAgICBpZiAoc3RhdEZ1
bmMoZnNSZXAuZGF0YSgpLCAmZmlsZUluZm8pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OwotCi0gICAgU3RyaW5nIGZpbGVuYW1lID0gcGF0aEdldEZpbGVOYW1lKHBhdGgpOwotICAgIGJv
b2wgaXNIaWRkZW4gPSAhZmlsZW5hbWUuaXNFbXB0eSgpICYmIGZpbGVuYW1lWzBdID09ICcuJzsK
LSAgICByZXR1cm4gRmlsZU1ldGFkYXRhIHsKLSAgICAgICAgV2FsbFRpbWU6OmZyb21SYXdTZWNv
bmRzKGZpbGVJbmZvLnN0X210aW1lKSwKLSAgICAgICAgZmlsZUluZm8uc3Rfc2l6ZSwKLSAgICAg
ICAgaXNIaWRkZW4sCi0gICAgICAgIHRvRmlsZU1ldGF0YVR5cGUoZmlsZUluZm8pCi0gICAgfTsK
LX0KLQotT3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBw
YXRoKQotewotICAgIHJldHVybiBmaWxlTWV0YWRhdGFVc2luZ0Z1bmN0aW9uKHBhdGgsICZsc3Rh
dCk7Ci19Ci0KLU9wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhRm9sbG93aW5nU3lt
bGlua3MoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIHJldHVybiBmaWxlTWV0YWRhdGFVc2lu
Z0Z1bmN0aW9uKHBhdGgsICZzdGF0KTsKLX0KLQotYm9vbCBjcmVhdGVTeW1ib2xpY0xpbmsoY29u
c3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGljTGlua1BhdGgpCi17
Ci0gICAgQ1N0cmluZyB0YXJnZXRQYXRoRlNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
dGFyZ2V0UGF0aCk7Ci0gICAgaWYgKCF0YXJnZXRQYXRoRlNSZXAuZGF0YSgpIHx8IHRhcmdldFBh
dGhGU1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
Q1N0cmluZyBzeW1ib2xpY0xpbmtQYXRoRlNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
c3ltYm9saWNMaW5rUGF0aCk7Ci0gICAgaWYgKCFzeW1ib2xpY0xpbmtQYXRoRlNSZXAuZGF0YSgp
IHx8IHN5bWJvbGljTGlua1BhdGhGU1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuICFzeW1saW5rKHRhcmdldFBhdGhGU1JlcC5kYXRhKCks
IHN5bWJvbGljTGlua1BhdGhGU1JlcC5kYXRhKCkpOwotfQotCi1TdHJpbmcgcGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb21wb25lbnQp
Ci17Ci0gICAgaWYgKHBhdGguZW5kc1dpdGgoJy8nKSkKLSAgICAgICAgcmV0dXJuIHBhdGggKyBj
b21wb25lbnQ7Ci0gICAgcmV0dXJuIHBhdGggKyAiLyIgKyBjb21wb25lbnQ7Ci19Ci0KLVN0cmlu
ZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKFN0cmluZ1ZpZXcgcGF0aCwgY29uc3QgVmVjdG9y
PFN0cmluZ1ZpZXc+JiBjb21wb25lbnRzKQotewotICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsK
LSAgICBidWlsZGVyLmFwcGVuZChwYXRoKTsKLSAgICBmb3IgKGF1dG8mIGNvbXBvbmVudCA6IGNv
bXBvbmVudHMpIHsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoJy8nKTsKLSAgICAgICAgYnVpbGRl
ci5hcHBlbmQoY29tcG9uZW50KTsKLSAgICB9Ci0gICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmco
KTsKLX0KLQotYm9vbCBtYWtlQWxsRGlyZWN0b3JpZXMoY29uc3QgU3RyaW5nJiBwYXRoKQotewot
ICAgIENTdHJpbmcgZnVsbFBhdGggPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7Ci0g
ICAgaWYgKCFhY2Nlc3MoZnVsbFBhdGguZGF0YSgpLCBGX09LKSkKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0KLSAgICBjaGFyKiBwID0gZnVsbFBhdGgubXV0YWJsZURhdGEoKSArIDE7Ci0gICAgaW50
IGxlbmd0aCA9IGZ1bGxQYXRoLmxlbmd0aCgpOwotCi0gICAgaWYocFtsZW5ndGggLSAxXSA9PSAn
LycpCi0gICAgICAgIHBbbGVuZ3RoIC0gMV0gPSAnXDAnOwotICAgIGZvciAoOyAqcDsgKytwKQot
ICAgICAgICBpZiAoKnAgPT0gJy8nKSB7Ci0gICAgICAgICAgICAqcCA9ICdcMCc7Ci0gICAgICAg
ICAgICBpZiAoYWNjZXNzKGZ1bGxQYXRoLmRhdGEoKSwgRl9PSykpCi0gICAgICAgICAgICAgICAg
aWYgKG1rZGlyKGZ1bGxQYXRoLmRhdGEoKSwgU19JUldYVSkpCi0gICAgICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICpwID0gJy8nOwotICAgICAgICB9Ci0gICAgaWYg
KGFjY2VzcyhmdWxsUGF0aC5kYXRhKCksIEZfT0spKQotICAgICAgICBpZiAobWtkaXIoZnVsbFBh
dGguZGF0YSgpLCBTX0lSV1hVKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJl
dHVybiB0cnVlOwotfQotCi1TdHJpbmcgcGF0aEdldEZpbGVOYW1lKGNvbnN0IFN0cmluZyYgcGF0
aCkKLXsKLSAgICByZXR1cm4gcGF0aC5zdWJzdHJpbmcocGF0aC5yZXZlcnNlRmluZCgnLycpICsg
MSk7Ci19Ci0KLVN0cmluZyBkaXJlY3RvcnlOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAg
ICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwotCi0gICAg
aWYgKCFmc1JlcC5kYXRhKCkgfHwgZnNSZXAuZGF0YSgpWzBdID09ICdcMCcpCi0gICAgICAgIHJl
dHVybiBTdHJpbmcoKTsKLQotICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGRpcm5hbWUoZnNS
ZXAubXV0YWJsZURhdGEoKSkpOwotfQotCi1WZWN0b3I8U3RyaW5nPiBsaXN0RGlyZWN0b3J5KGNv
bnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBmaWx0ZXIpCi17Ci0gICAgVmVjdG9yPFN0
cmluZz4gZW50cmllczsKLSAgICBDU3RyaW5nIGNwYXRoID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKHBhdGgpOwotICAgIENTdHJpbmcgY2ZpbHRlciA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihmaWx0ZXIpOwotICAgIERJUiogZGlyID0gb3BlbmRpcihjcGF0aC5kYXRhKCkpOwotICAgIGlm
IChkaXIpIHsKLSAgICAgICAgc3RydWN0IGRpcmVudCogZHA7Ci0gICAgICAgIHdoaWxlICgoZHAg
PSByZWFkZGlyKGRpcikpKSB7Ci0gICAgICAgICAgICBjb25zdCBjaGFyKiBuYW1lID0gZHAtPmRf
bmFtZTsKLSAgICAgICAgICAgIGlmICghc3RyY21wKG5hbWUsICIuIikgfHwgIXN0cmNtcChuYW1l
LCAiLi4iKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGlmIChmbm1h
dGNoKGNmaWx0ZXIuZGF0YSgpLCBuYW1lLCAwKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgICAgIGNoYXIgZmlsZVBhdGhbUEFUSF9NQVhdOwotICAgICAgICAgICAgaWYgKHN0
YXRpY19jYXN0PGludD4oc2l6ZW9mKGZpbGVQYXRoKSAtIDEpIDwgc25wcmludGYoZmlsZVBhdGgs
IHNpemVvZihmaWxlUGF0aCksICIlcy8lcyIsIGNwYXRoLmRhdGEoKSwgbmFtZSkpCi0gICAgICAg
ICAgICAgICAgY29udGludWU7IC8vIGJ1ZmZlciBvdmVyZmxvdwotCi0gICAgICAgICAgICBhdXRv
IHN0cmluZyA9IHN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZVBhdGgpOwot
Ci0gICAgICAgICAgICAvLyBTb21lIGZpbGUgc3lzdGVtIHJlcHJlc2VudGF0aW9ucyBjYW5ub3Qg
YmUgcmVwcmVzZW50ZWQgYXMgYSBVVEYtMTYgc3RyaW5nLAotICAgICAgICAgICAgLy8gc28gdGhp
cyBzdHJpbmcgbWlnaHQgYmUgbnVsbC4KLSAgICAgICAgICAgIGlmICghc3RyaW5nLmlzTnVsbCgp
KQotICAgICAgICAgICAgICAgIGVudHJpZXMuYXBwZW5kKFdURk1vdmUoc3RyaW5nKSk7Ci0gICAg
ICAgIH0KLSAgICAgICAgY2xvc2VkaXIoZGlyKTsKLSAgICB9Ci0gICAgcmV0dXJuIGVudHJpZXM7
Ci19Ci0KLSNpZiAhUExBVEZPUk0oQ09DT0EpCi1TdHJpbmcgc3RyaW5nRnJvbUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihjb25zdCBjaGFyKiBwYXRoKQotewotICAgIGlmICghcGF0aCkKLSAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgocGF0aCk7
Ci19Ci0KLUNTdHJpbmcgZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgcGF0
aCkKLXsKLSAgICByZXR1cm4gcGF0aC51dGY4KCk7Ci19Ci0KLWJvb2wgbW92ZUZpbGUoY29uc3Qg
U3RyaW5nJiBvbGRQYXRoLCBjb25zdCBTdHJpbmcmIG5ld1BhdGgpCi17Ci0gICAgYXV0byBvbGRG
aWxlbmFtZSA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihvbGRQYXRoKTsKLSAgICBpZiAob2xk
RmlsZW5hbWUuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8gbmV3
RmlsZW5hbWUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24obmV3UGF0aCk7Ci0gICAgaWYgKG5l
d0ZpbGVuYW1lLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4g
cmVuYW1lKG9sZEZpbGVuYW1lLmRhdGEoKSwgbmV3RmlsZW5hbWUuZGF0YSgpKSAhPSAtMTsKLX0K
LQotYm9vbCBnZXRWb2x1bWVGcmVlU3BhY2UoY29uc3QgU3RyaW5nJiBwYXRoLCB1aW50NjRfdCYg
ZnJlZVNwYWNlKQotewotICAgIHN0cnVjdCBzdGF0dmZzIGZpbGVTeXN0ZW1TdGF0OwotICAgIGlm
IChzdGF0dmZzKGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCksICZmaWxlU3lz
dGVtU3RhdCkpIHsKLSAgICAgICAgZnJlZVNwYWNlID0gZmlsZVN5c3RlbVN0YXQuZl9iYXZhaWwg
KiBmaWxlU3lzdGVtU3RhdC5mX2Zyc2l6ZTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQot
ICAgIHJldHVybiBmYWxzZTsKLX0KLSNlbmRpZgotCi0jaWYgIU9TKERBUldJTikKLVN0cmluZyBv
cGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxl
JiBoYW5kbGUpCi17Ci0gICAgY2hhciBidWZmZXJbUEFUSF9NQVhdOwotICAgIGNvbnN0IGNoYXIq
IHRtcERpciA9IGdldGVudigiVE1QRElSIik7Ci0KLSAgICBpZiAoIXRtcERpcikKLSAgICAgICAg
dG1wRGlyID0gIi90bXAiOwotCi0gICAgaWYgKHNucHJpbnRmKGJ1ZmZlciwgUEFUSF9NQVgsICIl
cy8lc1hYWFhYWCIsIHRtcERpciwgcHJlZml4LnV0ZjgoKS5kYXRhKCkpID49IFBBVEhfTUFYKQot
ICAgICAgICBnb3RvIGVuZDsKLQotICAgIGhhbmRsZSA9IG1rc3RlbXAoYnVmZmVyKTsKLSAgICBp
ZiAoaGFuZGxlIDwgMCkKLSAgICAgICAgZ290byBlbmQ7Ci0KLSAgICByZXR1cm4gU3RyaW5nOjpm
cm9tVVRGOChidWZmZXIpOwotCi1lbmQ6Ci0gICAgaGFuZGxlID0gaW52YWxpZFBsYXRmb3JtRmls
ZUhhbmRsZTsKLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0jZW5kaWYKLQotYm9vbCBoYXJkTGlu
a09yQ29weUZpbGUoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRp
b24pCi17Ci0gICAgaWYgKHNvdXJjZS5pc0VtcHR5KCkgfHwgZGVzdGluYXRpb24uaXNFbXB0eSgp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBDU3RyaW5nIGZzU291cmNlID0gZmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKHNvdXJjZSk7Ci0gICAgaWYgKCFmc1NvdXJjZS5kYXRhKCkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIENTdHJpbmcgZnNEZXN0aW5hdGlvbiA9IGZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihkZXN0aW5hdGlvbik7Ci0gICAgaWYgKCFmc0Rlc3RpbmF0aW9u
LmRhdGEoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFsaW5rKGZzU291cmNl
LmRhdGEoKSwgZnNEZXN0aW5hdGlvbi5kYXRhKCkpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQot
ICAgIC8vIEhhcmQgbGluayBmYWlsZWQuIFBlcmZvcm0gYSBjb3B5IGluc3RlYWQuCi0gICAgYXV0
byBoYW5kbGUgPSBvcGVuKGZzRGVzdGluYXRpb24uZGF0YSgpLCBPX1dST05MWSB8IE9fQ1JFQVQg
fCBPX0VYQ0wsIDA2NjYpOwotICAgIGlmIChoYW5kbGUgPT0gLTEpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIGJvb2wgYXBwZW5kUmVzdWx0ID0gYXBwZW5kRmlsZUNvbnRlbnRzVG9GaWxl
SGFuZGxlKHNvdXJjZSwgaGFuZGxlKTsKLSAgICBjbG9zZShoYW5kbGUpOwotCi0gICAgLy8gSWYg
dGhlIGNvcHkgZmFpbGVkLCBkZWxldGUgdGhlIHVudXNhYmxlIGZpbGUuCi0gICAgaWYgKCFhcHBl
bmRSZXN1bHQpCi0gICAgICAgIHVubGluayhmc0Rlc3RpbmF0aW9uLmRhdGEoKSk7Ci0KLSAgICBy
ZXR1cm4gYXBwZW5kUmVzdWx0OwotfQotCi1PcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNl
SWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQotewotICAgIHN0cnVjdCBzdGF0IGZpbGVTdGF0Owot
ICAgIGlmIChzdGF0KGZzRmlsZS5kYXRhKCksICZmaWxlU3RhdCkgPT0gLTEpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICByZXR1cm4gZmlsZVN0YXQuc3RfZGV2OwotfQotCi1T
dHJpbmcgcmVhbFBhdGgoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKLXsKLSAgICBDU3RyaW5nIGZz
UmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVQYXRoKTsKLSAgICBjaGFyIHJlc29s
dmVkTmFtZVtQQVRIX01BWF07Ci0gICAgY29uc3QgY2hhciogcmVzdWx0ID0gcmVhbHBhdGgoZnNS
ZXAuZGF0YSgpLCByZXNvbHZlZE5hbWUpOwotICAgIHJldHVybiByZXN1bHQgPyBTdHJpbmc6OmZy
b21VVEY4KHJlc3VsdCkgOiBmaWxlUGF0aDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgRmlsZVN5c3Rl
bQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVyUE9TSVguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vcG9zaXgvU2hhcmVkQnVmZmVyUE9TSVguY3BwCmluZGV4IDUxMzM3NWQyNDVlZjQ1YzE5NmE4
NTQ2MTVjZTcwYjc4YTkwY2VjZmYuLjhlZDU3MTc0Nzc4Y2I3YmRhZGNhMzY1MTdmZDc5NDQ1NzM4
YzUyZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L1NoYXJlZEJ1
ZmZlclBPU0lYLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9TaGFyZWRC
dWZmZXJQT1NJWC5jcHAKQEAgLTI2LDExICsyNiwxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgotCiAj
aW5jbHVkZSA8ZmNudGwuaD4KICNpbmNsdWRlIDxzeXMvc3RhdC5oPgogI2luY2x1ZGUgPHVuaXN0
ZC5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5jcHAKaW5kZXggOTBjMjBjN2JjZTZhNjdiNjdkNTNk
NWM0MDUzNzc2YmYxNGM3ZTVlNS4uMzY0YmZmNzEwNzQ5Nzg5NmY3YjFkNzU3YTdkOWE1ZmMzYWQz
ZjY0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVT
eXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lz
dGVtLmNwcApAQCAtMzEsMTAgKzMxLDEwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiU1FMaXRlRmlsZVN5c3RlbS5oIgogCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1
ZGUgIlNRTGl0ZURhdGFiYXNlLmgiCiAjaW5jbHVkZSAiU1FMaXRlU3RhdGVtZW50LmgiCiAjaW5j
bHVkZSA8c3FsaXRlMy5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKICNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogI2luY2x1ZGUgPHBhbC9zcGkvaW9zL1NRTGl0ZTNTUEkuaD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaHlwaGVuL0h5cGhlbmF0aW9u
TGliSHlwaGVuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaHlwaGVuL0h5cGhl
bmF0aW9uTGliSHlwaGVuLmNwcAppbmRleCAyZDdiNjZkOTM3OTA1ZGNjMjJmNGExM2U5NWEwYWYw
NmJiNDhiN2FmLi41ZWViOWJmYTc0MDBmNzIxNWMwMjZjNTUyZDgyYWEzOGE3NjNmOTQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxp
Ykh5cGhlbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9oeXBoZW4vSHlw
aGVuYXRpb25MaWJIeXBoZW4uY3BwCkBAIC0yOSwxMCArMjksMTAgQEAKIAogI2lmIFVTRShMSUJI
WVBIRU4pCiAKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSA8aHlwaGVuLmg+CiAj
aW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHd0Zi9GaWxl
U3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvVGlueUxSVUNhY2hlLmg+CkBAIC0yMjQsNyArMjI0
LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJlZlB0cjxXZWJDb3JlOjpIeXBoZW5hdGlvbkRp
Y3Rpb25hcnk+IGNyZWF0ZVZhbHVlRm9yS2V5KGNvbnN0IEF0b21pY1N0cmluZyYgZGljdGlvbmFy
eVBhdGgpCiAgICAgewotICAgICAgICByZXR1cm4gV2ViQ29yZTo6SHlwaGVuYXRpb25EaWN0aW9u
YXJ5OjpjcmVhdGUoV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KGRpY3Rpb25hcnlQYXRoLnN0cmluZygpKSk7CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpIeXBo
ZW5hdGlvbkRpY3Rpb25hcnk6OmNyZWF0ZShGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oZGljdGlvbmFyeVBhdGguc3RyaW5nKCkpKTsKICAgICB9CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdpbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdpbi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGJiNzAyY2IwMTIwYWJiZjI1ODUyOWZhZjk0MzEwZGRmZmZkZjYwODQuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNTg5
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhLCBMdGQuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKLSAqIDMuICBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBp
dHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgot
Ci0jaW5jbHVkZSAiRmlsZU1ldGFkYXRhLmgiCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIK
LSNpbmNsdWRlICJQYXRoV2Fsa2VyLmgiCi0jaW5jbHVkZSA8aW8uaD4KLSNpbmNsdWRlIDxzaGxv
YmouaD4KLSNpbmNsdWRlIDxzaGx3YXBpLmg+Ci0jaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSNpbmNs
dWRlIDx3aW5kb3dzLmg+Ci0jaW5jbHVkZSA8d3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVt
YmVyLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgotI2luY2x1ZGUgPHd0
Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LW5hbWVzcGFjZSBGaWxlU3lzdGVtIHsKLQotc3RhdGljIGNvbnN0IFVMT05HTE9ORyBrU2Vjb25k
c0Zyb21GaWxlVGltZVRvVGltZXQgPSAxMTY0NDQ3MzYwMDsKLQotc3RhdGljIGJvb2wgZ2V0Rmlu
ZERhdGEoU3RyaW5nIHBhdGgsIFdJTjMyX0ZJTkRfREFUQVcmIGZpbmREYXRhKQotewotICAgIEhB
TkRMRSBoYW5kbGUgPSBGaW5kRmlyc3RGaWxlVyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIo
cGF0aCkuZGF0YSgpLCAmZmluZERhdGEpOwotICAgIGlmIChoYW5kbGUgPT0gSU5WQUxJRF9IQU5E
TEVfVkFMVUUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBGaW5kQ2xvc2UoaGFuZGxlKTsK
LSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotc3RhdGljIGJvb2wgZ2V0RmlsZVNpemVGcm9tRmluZERh
dGEoY29uc3QgV0lOMzJfRklORF9EQVRBVyYgZmluZERhdGEsIGxvbmcgbG9uZyYgc2l6ZSkKLXsK
LSAgICBVTEFSR0VfSU5URUdFUiBmaWxlU2l6ZTsKLSAgICBmaWxlU2l6ZS5IaWdoUGFydCA9IGZp
bmREYXRhLm5GaWxlU2l6ZUhpZ2g7Ci0gICAgZmlsZVNpemUuTG93UGFydCA9IGZpbmREYXRhLm5G
aWxlU2l6ZUxvdzsKLQotICAgIGlmIChmaWxlU2l6ZS5RdWFkUGFydCA+IHN0YXRpY19jYXN0PFVM
T05HTE9ORz4oc3RkOjpudW1lcmljX2xpbWl0czxsb25nIGxvbmc+OjptYXgoKSkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgIHNpemUgPSBmaWxlU2l6ZS5RdWFkUGFydDsKLSAgICByZXR1
cm4gdHJ1ZTsKLX0KLQotc3RhdGljIGJvb2wgZ2V0RmlsZVNpemVGcm9tQnlIYW5kbGVGaWxlSW5m
b3JtYXRpb25TdHJ1Y3R1cmUoY29uc3QgQllfSEFORExFX0ZJTEVfSU5GT1JNQVRJT04mIGZpbGVJ
bmZvcm1hdGlvbiwgbG9uZyBsb25nJiBzaXplKQotewotICAgIFVMQVJHRV9JTlRFR0VSIGZpbGVT
aXplOwotICAgIGZpbGVTaXplLkhpZ2hQYXJ0ID0gZmlsZUluZm9ybWF0aW9uLm5GaWxlU2l6ZUhp
Z2g7Ci0gICAgZmlsZVNpemUuTG93UGFydCA9IGZpbGVJbmZvcm1hdGlvbi5uRmlsZVNpemVMb3c7
Ci0KLSAgICBpZiAoZmlsZVNpemUuUXVhZFBhcnQgPiBzdGF0aWNfY2FzdDxVTE9OR0xPTkc+KHN0
ZDo6bnVtZXJpY19saW1pdHM8bG9uZyBsb25nPjo6bWF4KCkpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICBzaXplID0gZmlsZVNpemUuUXVhZFBhcnQ7Ci0gICAgcmV0dXJuIHRydWU7Ci19
Ci0KLXN0YXRpYyB2b2lkIGdldEZpbGVDcmVhdGlvblRpbWVGcm9tRmluZERhdGEoY29uc3QgV0lO
MzJfRklORF9EQVRBVyYgZmluZERhdGEsIHRpbWVfdCYgdGltZSkKLXsKLSAgICBVTEFSR0VfSU5U
RUdFUiBmaWxlVGltZTsKLSAgICBmaWxlVGltZS5IaWdoUGFydCA9IGZpbmREYXRhLmZ0Q3JlYXRp
b25UaW1lLmR3SGlnaERhdGVUaW1lOwotICAgIGZpbGVUaW1lLkxvd1BhcnQgPSBmaW5kRGF0YS5m
dENyZWF0aW9uVGltZS5kd0xvd0RhdGVUaW1lOwotCi0gICAgLy8gSW5mb3JtYXRpb24gYWJvdXQg
Y29udmVydGluZyB0aW1lX3QgdG8gRmlsZVRpbWUgaXMgYXZhaWxhYmxlIGF0IGh0dHA6Ly9tc2Ru
Lm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9tczcyNDIyOCUyOHY9dnMuODUlMjkuYXNweAot
ICAgIHRpbWUgPSBmaWxlVGltZS5RdWFkUGFydCAvIDEwMDAwMDAwIC0ga1NlY29uZHNGcm9tRmls
ZVRpbWVUb1RpbWV0OwotfQotCi0KLXN0YXRpYyB2b2lkIGdldEZpbGVNb2RpZmljYXRpb25UaW1l
RnJvbUZpbmREYXRhKGNvbnN0IFdJTjMyX0ZJTkRfREFUQVcmIGZpbmREYXRhLCB0aW1lX3QmIHRp
bWUpCi17Ci0gICAgVUxBUkdFX0lOVEVHRVIgZmlsZVRpbWU7Ci0gICAgZmlsZVRpbWUuSGlnaFBh
cnQgPSBmaW5kRGF0YS5mdExhc3RXcml0ZVRpbWUuZHdIaWdoRGF0ZVRpbWU7Ci0gICAgZmlsZVRp
bWUuTG93UGFydCA9IGZpbmREYXRhLmZ0TGFzdFdyaXRlVGltZS5kd0xvd0RhdGVUaW1lOwotCi0g
ICAgLy8gSW5mb3JtYXRpb24gYWJvdXQgY29udmVydGluZyB0aW1lX3QgdG8gRmlsZVRpbWUgaXMg
YXZhaWxhYmxlIGF0IGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9tczcy
NDIyOCUyOHY9dnMuODUlMjkuYXNweAotICAgIHRpbWUgPSBmaWxlVGltZS5RdWFkUGFydCAvIDEw
MDAwMDAwIC0ga1NlY29uZHNGcm9tRmlsZVRpbWVUb1RpbWV0OwotfQotCi1ib29sIGdldEZpbGVT
aXplKGNvbnN0IFN0cmluZyYgcGF0aCwgbG9uZyBsb25nJiBzaXplKQotewotICAgIFdJTjMyX0ZJ
TkRfREFUQVcgZmluZERhdGE7Ci0gICAgaWYgKCFnZXRGaW5kRGF0YShwYXRoLCBmaW5kRGF0YSkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBnZXRGaWxlU2l6ZUZyb21GaW5k
RGF0YShmaW5kRGF0YSwgc2l6ZSk7Ci19Ci0KLWJvb2wgZ2V0RmlsZVNpemUoUGxhdGZvcm1GaWxl
SGFuZGxlIGZpbGVIYW5kbGUsIGxvbmcgbG9uZyYgc2l6ZSkKLXsKLSAgICBCWV9IQU5ETEVfRklM
RV9JTkZPUk1BVElPTiBmaWxlSW5mb3JtYXRpb247Ci0gICAgaWYgKCE6OkdldEZpbGVJbmZvcm1h
dGlvbkJ5SGFuZGxlKGZpbGVIYW5kbGUsICZmaWxlSW5mb3JtYXRpb24pKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gZ2V0RmlsZVNpemVGcm9tQnlIYW5kbGVGaWxlSW5mb3Jt
YXRpb25TdHJ1Y3R1cmUoZmlsZUluZm9ybWF0aW9uLCBzaXplKTsKLX0KLQotT3B0aW9uYWw8V2Fs
bFRpbWU+IGdldEZpbGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAg
ICBXSU4zMl9GSU5EX0RBVEFXIGZpbmREYXRhOwotICAgIGlmICghZ2V0RmluZERhdGEocGF0aCwg
ZmluZERhdGEpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgdGltZV90IHRp
bWUgPSAwOwotICAgIGdldEZpbGVNb2RpZmljYXRpb25UaW1lRnJvbUZpbmREYXRhKGZpbmREYXRh
LCB0aW1lKTsKLSAgICByZXR1cm4gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKHRpbWUpOwotfQot
Ci1PcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZUNyZWF0aW9uVGltZShjb25zdCBTdHJpbmcmIHBh
dGgpCi17Ci0gICAgV0lOMzJfRklORF9EQVRBVyBmaW5kRGF0YTsKLSAgICBpZiAoIWdldEZpbmRE
YXRhKHBhdGgsIGZpbmREYXRhKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAg
IHRpbWVfdCB0aW1lID0gMDsKLSAgICBnZXRGaWxlQ3JlYXRpb25UaW1lRnJvbUZpbmREYXRhKGZp
bmREYXRhLCB0aW1lKTsKLSAgICByZXR1cm4gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKHRpbWUp
OwotfQotCi1zdGF0aWMgU3RyaW5nIGdldEZpbmFsUGF0aE5hbWUoY29uc3QgU3RyaW5nJiBwYXRo
KQotewotICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUocGF0aCwgRmlsZU9wZW5Nb2RlOjpSZWFk
KTsKLSAgICBpZiAoIWlzSGFuZGxlVmFsaWQoaGFuZGxlKSkKLSAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOwotCi0gICAgVmVjdG9yPFVDaGFyPiBidWZmZXIoTUFYX1BBVEgpOwotICAgIGlmICg6Okdl
dEZpbmFsUGF0aE5hbWVCeUhhbmRsZVcoaGFuZGxlLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6
ZSgpLCBWT0xVTUVfTkFNRV9OVCkgPj0gTUFYX1BBVEgpIHsKLSAgICAgICAgY2xvc2VGaWxlKGhh
bmRsZSk7Ci0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICB9Ci0gICAgY2xvc2VGaWxlKGhh
bmRsZSk7Ci0KLSAgICBidWZmZXIuc2hyaW5rKHdjc2xlbihidWZmZXIuZGF0YSgpKSk7Ci0gICAg
cmV0dXJuIFN0cmluZzo6YWRvcHQoV1RGTW92ZShidWZmZXIpKTsKLX0KLQotc3RhdGljIGlubGlu
ZSBib29sIGlzU3ltYm9saWNMaW5rKFdJTjMyX0ZJTkRfREFUQVcgZmluZERhdGEpCi17Ci0gICAg
cmV0dXJuIGZpbmREYXRhLmR3RmlsZUF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9SRVBBUlNF
X1BPSU5UICYmIGZpbmREYXRhLmR3UmVzZXJ2ZWQwID09IElPX1JFUEFSU0VfVEFHX1NZTUxJTks7
Ci19Ci0KLXN0YXRpYyBGaWxlTWV0YWRhdGE6OlR5cGUgdG9GaWxlTWV0YWRhdGFUeXBlKFdJTjMy
X0ZJTkRfREFUQVcgZmluZERhdGEpCi17Ci0gICAgaWYgKGZpbmREYXRhLmR3RmlsZUF0dHJpYnV0
ZXMgJiBGSUxFX0FUVFJJQlVURV9ESVJFQ1RPUlkpCi0gICAgICAgIHJldHVybiBGaWxlTWV0YWRh
dGE6OlR5cGU6OkRpcmVjdG9yeTsKLSAgICBpZiAoaXNTeW1ib2xpY0xpbmsoZmluZERhdGEpKQot
ICAgICAgICByZXR1cm4gRmlsZU1ldGFkYXRhOjpUeXBlOjpTeW1ib2xpY0xpbms7Ci0gICAgcmV0
dXJuIEZpbGVNZXRhZGF0YTo6VHlwZTo6RmlsZTsKLX0KLQotc3RhdGljIE9wdGlvbmFsPEZpbGVN
ZXRhZGF0YT4gZmluZERhdGFUb0ZpbGVNZXRhZGF0YShXSU4zMl9GSU5EX0RBVEFXIGZpbmREYXRh
KQotewotICAgIGxvbmcgbG9uZyBsZW5ndGg7Ci0gICAgaWYgKCFnZXRGaWxlU2l6ZUZyb21GaW5k
RGF0YShmaW5kRGF0YSwgbGVuZ3RoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQot
ICAgIHRpbWVfdCBtb2RpZmljYXRpb25UaW1lOwotICAgIGdldEZpbGVNb2RpZmljYXRpb25UaW1l
RnJvbUZpbmREYXRhKGZpbmREYXRhLCBtb2RpZmljYXRpb25UaW1lKTsKLQotICAgIHJldHVybiBG
aWxlTWV0YWRhdGEgewotICAgICAgICBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMobW9kaWZpY2F0
aW9uVGltZSksCi0gICAgICAgIGxlbmd0aCwKLSAgICAgICAgc3RhdGljX2Nhc3Q8Ym9vbD4oZmlu
ZERhdGEuZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX0hJRERFTiksCi0gICAgICAg
IHRvRmlsZU1ldGFkYXRhVHlwZShmaW5kRGF0YSkKLSAgICB9OwotfQotCi1PcHRpb25hbDxGaWxl
TWV0YWRhdGE+IGZpbGVNZXRhZGF0YShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgV0lOMzJf
RklORF9EQVRBVyBmaW5kRGF0YTsKLSAgICBpZiAoIWdldEZpbmREYXRhKHBhdGgsIGZpbmREYXRh
KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIHJldHVybiBmaW5kRGF0YVRv
RmlsZU1ldGFkYXRhKGZpbmREYXRhKTsKLX0KLQotT3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxl
TWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyhjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgV0lO
MzJfRklORF9EQVRBVyBmaW5kRGF0YTsKLSAgICBpZiAoIWdldEZpbmREYXRhKHBhdGgsIGZpbmRE
YXRhKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIGlmIChpc1N5bWJvbGlj
TGluayhmaW5kRGF0YSkpIHsKLSAgICAgICAgU3RyaW5nIHRhcmdldFBhdGggPSBnZXRGaW5hbFBh
dGhOYW1lKHBhdGgpOwotICAgICAgICBpZiAodGFyZ2V0UGF0aC5pc051bGwoKSkKLSAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgICAgIGlmICghZ2V0RmluZERhdGEodGFyZ2V0
UGF0aCwgZmluZERhdGEpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICB9
Ci0KLSAgICByZXR1cm4gZmluZERhdGFUb0ZpbGVNZXRhZGF0YShmaW5kRGF0YSk7Ci19Ci0KLWJv
b2wgY3JlYXRlU3ltYm9saWNMaW5rKGNvbnN0IFN0cmluZyYgdGFyZ2V0UGF0aCwgY29uc3QgU3Ry
aW5nJiBzeW1ib2xpY0xpbmtQYXRoKQotewotICAgIHJldHVybiAhOjpDcmVhdGVTeW1ib2xpY0xp
bmtXKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihzeW1ib2xpY0xpbmtQYXRoKS5kYXRhKCks
IHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcih0YXJnZXRQYXRoKS5kYXRhKCksIDApOwotfQot
Ci1ib29sIGZpbGVFeGlzdHMoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIFdJTjMyX0ZJTkRf
REFUQVcgZmluZERhdGE7Ci0gICAgcmV0dXJuIGdldEZpbmREYXRhKHBhdGgsIGZpbmREYXRhKTsK
LX0KLQotYm9vbCBkZWxldGVGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBTdHJpbmcg
ZmlsZW5hbWUgPSBwYXRoOwotICAgIHJldHVybiAhIURlbGV0ZUZpbGVXKHN0cmluZ1RvTnVsbFRl
cm1pbmF0ZWRXQ2hhcihmaWxlbmFtZSkuZGF0YSgpKTsKLX0KLQotYm9vbCBkZWxldGVFbXB0eURp
cmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgU3RyaW5nIGZpbGVuYW1lID0gcGF0
aDsKLSAgICByZXR1cm4gISFSZW1vdmVEaXJlY3RvcnlXKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRX
Q2hhcihmaWxlbmFtZSkuZGF0YSgpKTsKLX0KLQotYm9vbCBtb3ZlRmlsZShjb25zdCBTdHJpbmcm
IG9sZFBhdGgsIGNvbnN0IFN0cmluZyYgbmV3UGF0aCkKLXsKLSAgICBTdHJpbmcgb2xkRmlsZW5h
bWUgPSBvbGRQYXRoOwotICAgIFN0cmluZyBuZXdGaWxlbmFtZSA9IG5ld1BhdGg7Ci0gICAgcmV0
dXJuICEhOjpNb3ZlRmlsZUV4KHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihvbGRGaWxlbmFt
ZSkuZGF0YSgpLCBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIobmV3RmlsZW5hbWUpLmRhdGEo
KSwgTU9WRUZJTEVfQ09QWV9BTExPV0VEIHwgTU9WRUZJTEVfUkVQTEFDRV9FWElTVElORyk7Ci19
Ci0KLVN0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY29uc3QgU3RyaW5nJiBwYXRoLCBj
b25zdCBTdHJpbmcmIGNvbXBvbmVudCkKLXsKLSAgICBWZWN0b3I8VUNoYXI+IGJ1ZmZlcihNQVhf
UEFUSCk7Ci0KLSAgICBpZiAocGF0aC5sZW5ndGgoKSArIDEgPiBidWZmZXIuc2l6ZSgpKQotICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICBTdHJpbmdWaWV3KHBhdGgpLmdldENoYXJhY3Rl
cnNXaXRoVXBjb252ZXJ0KGJ1ZmZlci5kYXRhKCkpOwotICAgIGJ1ZmZlcltwYXRoLmxlbmd0aCgp
XSA9ICdcMCc7Ci0KLSAgICBpZiAoIVBhdGhBcHBlbmRXKGJ1ZmZlci5kYXRhKCksIHN0cmluZ1Rv
TnVsbFRlcm1pbmF0ZWRXQ2hhcihjb21wb25lbnQpLmRhdGEoKSkpCi0gICAgICAgIHJldHVybiBT
dHJpbmcoKTsKLQotICAgIGJ1ZmZlci5zaHJpbmsod2NzbGVuKGJ1ZmZlci5kYXRhKCkpKTsKLQot
ICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KFdURk1vdmUoYnVmZmVyKSk7Ci19Ci0KLVN0cmluZyBw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKFN0cmluZ1ZpZXcgcGF0aCwgY29uc3QgVmVjdG9yPFN0
cmluZ1ZpZXc+JiBjb21wb25lbnRzKQotewotICAgIFN0cmluZyByZXN1bHQgPSBwYXRoLnRvU3Ry
aW5nKCk7Ci0gICAgZm9yIChhdXRvJiBjb21wb25lbnQgOiBjb21wb25lbnRzKQotICAgICAgICBy
ZXN1bHQgPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVzdWx0LCBjb21wb25lbnQudG9TdHJp
bmcoKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotI2lmICFVU0UoQ0YpCi0KLUNTdHJpbmcg
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBhdXRv
IHVwY29udmVydGVkQ2hhcmFjdGVycyA9IHBhdGgudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCk7Ci0K
LSAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycyA9IHVwY29udmVydGVkQ2hhcmFjdGVyczsKLSAg
ICBpbnQgc2l6ZSA9IFdpZGVDaGFyVG9NdWx0aUJ5dGUoQ1BfQUNQLCAwLCBjaGFyYWN0ZXJzLCBw
YXRoLmxlbmd0aCgpLCAwLCAwLCAwLCAwKSAtIDE7Ci0KLSAgICBjaGFyKiBidWZmZXI7Ci0gICAg
Q1N0cmluZyBzdHJpbmcgPSBDU3RyaW5nOjpuZXdVbmluaXRpYWxpemVkKHNpemUsIGJ1ZmZlcik7
Ci0KLSAgICBXaWRlQ2hhclRvTXVsdGlCeXRlKENQX0FDUCwgMCwgY2hhcmFjdGVycywgcGF0aC5s
ZW5ndGgoKSwgYnVmZmVyLCBzaXplLCAwLCAwKTsKLQotICAgIHJldHVybiBzdHJpbmc7Ci19Ci0K
LSNlbmRpZiAvLyAhVVNFKENGKQotCi1ib29sIG1ha2VBbGxEaXJlY3Rvcmllcyhjb25zdCBTdHJp
bmcmIHBhdGgpCi17Ci0gICAgU3RyaW5nIGZ1bGxQYXRoID0gcGF0aDsKLSAgICBpZiAoU0hDcmVh
dGVEaXJlY3RvcnlFeCgwLCBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoZnVsbFBhdGgpLmRh
dGEoKSwgMCkgIT0gRVJST1JfU1VDQ0VTUykgewotICAgICAgICBEV09SRCBlcnJvciA9IEdldExh
c3RFcnJvcigpOwotICAgICAgICBpZiAoZXJyb3IgIT0gRVJST1JfRklMRV9FWElTVFMgJiYgZXJy
b3IgIT0gRVJST1JfQUxSRUFEWV9FWElTVFMpIHsKLSAgICAgICAgICAgIExPR19FUlJPUigiRmFp
bGVkIHRvIGNyZWF0ZSBwYXRoICVzIiwgcGF0aC5hc2NpaSgpLmRhdGEoKSk7Ci0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0K
LVN0cmluZyBob21lRGlyZWN0b3J5UGF0aCgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAg
ICByZXR1cm4gIiI7Ci19Ci0KLVN0cmluZyBwYXRoR2V0RmlsZU5hbWUoY29uc3QgU3RyaW5nJiBw
YXRoKQotewotICAgIHJldHVybiBudWxsVGVybWluYXRlZFdDaGFyVG9TdHJpbmcoOjpQYXRoRmlu
ZEZpbGVOYW1lKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihwYXRoKS5kYXRhKCkpKTsKLX0K
LQotU3RyaW5nIGRpcmVjdG9yeU5hbWUoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIFN0cmlu
ZyBuYW1lID0gcGF0aC5sZWZ0KHBhdGgubGVuZ3RoKCkgLSBwYXRoR2V0RmlsZU5hbWUocGF0aCku
bGVuZ3RoKCkpOwotICAgIGlmIChuYW1lLmNoYXJhY3RlclN0YXJ0aW5nQXQobmFtZS5sZW5ndGgo
KSAtIDEpID09ICdcXCcpIHsKLSAgICAgICAgLy8gUmVtb3ZlIGFueSB0cmFpbGluZyAiXCIuCi0g
ICAgICAgIG5hbWUudHJ1bmNhdGUobmFtZS5sZW5ndGgoKSAtIDEpOwotICAgIH0KLSAgICByZXR1
cm4gbmFtZTsKLX0KLQotc3RhdGljIFN0cmluZyBidW5kbGVOYW1lKCkKLXsKLSAgICBzdGF0aWMg
Y29uc3QgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBuYW1lID0gW10gewotICAgICAgICBTdHJpbmcg
bmFtZSB7ICJXZWJLaXQiX3MgfTsKLQotI2lmIFVTRShDRikKLSAgICAgICAgaWYgKENGQnVuZGxl
UmVmIGJ1bmRsZSA9IENGQnVuZGxlR2V0TWFpbkJ1bmRsZSgpKSB7Ci0gICAgICAgICAgICBpZiAo
Q0ZUeXBlUmVmIGJ1bmRsZUV4ZWN1dGFibGUgPSBDRkJ1bmRsZUdldFZhbHVlRm9ySW5mb0RpY3Rp
b25hcnlLZXkoYnVuZGxlLCBrQ0ZCdW5kbGVFeGVjdXRhYmxlS2V5KSkgewotICAgICAgICAgICAg
ICAgIGlmIChDRkdldFR5cGVJRChidW5kbGVFeGVjdXRhYmxlKSA9PSBDRlN0cmluZ0dldFR5cGVJ
RCgpKQotICAgICAgICAgICAgICAgICAgICBuYW1lID0gcmVpbnRlcnByZXRfY2FzdDxDRlN0cmlu
Z1JlZj4oYnVuZGxlRXhlY3V0YWJsZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSNlbmRp
ZgotCi0gICAgICAgIHJldHVybiBuYW1lOwotICAgIH0oKTsKLQotICAgIHJldHVybiBuYW1lOwot
fQotCi1zdGF0aWMgU3RyaW5nIHN0b3JhZ2VEaXJlY3RvcnkoRFdPUkQgcGF0aElkZW50aWZpZXIp
Ci17Ci0gICAgVmVjdG9yPFVDaGFyPiBidWZmZXIoTUFYX1BBVEgpOwotICAgIGlmIChGQUlMRUQo
U0hHZXRGb2xkZXJQYXRoVygwLCBwYXRoSWRlbnRpZmllciB8IENTSURMX0ZMQUdfQ1JFQVRFLCAw
LCAwLCBidWZmZXIuZGF0YSgpKSkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICBidWZm
ZXIucmVzaXplKHdjc2xlbihidWZmZXIuZGF0YSgpKSk7Ci0gICAgU3RyaW5nIGRpcmVjdG9yeSA9
IFN0cmluZzo6YWRvcHQoV1RGTW92ZShidWZmZXIpKTsKLQotICAgIGRpcmVjdG9yeSA9IHBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChkaXJlY3RvcnksICJBcHBsZSBDb21wdXRlclxcIiArIGJ1bmRs
ZU5hbWUoKSk7Ci0gICAgaWYgKCFtYWtlQWxsRGlyZWN0b3JpZXMoZGlyZWN0b3J5KSkKLSAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgcmV0dXJuIGRpcmVjdG9yeTsKLX0KLQotc3RhdGlj
IFN0cmluZyBjYWNoZWRTdG9yYWdlRGlyZWN0b3J5KERXT1JEIHBhdGhJZGVudGlmaWVyKQotewot
ICAgIHN0YXRpYyBIYXNoTWFwPERXT1JELCBTdHJpbmc+IGRpcmVjdG9yaWVzOwotCi0gICAgSGFz
aE1hcDxEV09SRCwgU3RyaW5nPjo6aXRlcmF0b3IgaXQgPSBkaXJlY3Rvcmllcy5maW5kKHBhdGhJ
ZGVudGlmaWVyKTsKLSAgICBpZiAoaXQgIT0gZGlyZWN0b3JpZXMuZW5kKCkpCi0gICAgICAgIHJl
dHVybiBpdC0+dmFsdWU7Ci0KLSAgICBTdHJpbmcgZGlyZWN0b3J5ID0gc3RvcmFnZURpcmVjdG9y
eShwYXRoSWRlbnRpZmllcik7Ci0gICAgZGlyZWN0b3JpZXMuYWRkKHBhdGhJZGVudGlmaWVyLCBk
aXJlY3RvcnkpOwotCi0gICAgcmV0dXJuIGRpcmVjdG9yeTsKLX0KLQotc3RhdGljIFN0cmluZyBn
ZW5lcmF0ZVRlbXBvcmFyeVBhdGgoY29uc3QgRnVuY3Rpb248Ym9vbChjb25zdCBTdHJpbmcmKT4m
IGFjdGlvbikKLXsKLSAgICB3Y2hhcl90IHRlbXBQYXRoW01BWF9QQVRIXTsKLSAgICBpbnQgdGVt
cFBhdGhMZW5ndGggPSA6OkdldFRlbXBQYXRoVyhXVEZfQVJSQVlfTEVOR1RIKHRlbXBQYXRoKSwg
dGVtcFBhdGgpOwotICAgIGlmICh0ZW1wUGF0aExlbmd0aCA8PSAwIHx8IHRlbXBQYXRoTGVuZ3Ro
ID4gV1RGX0FSUkFZX0xFTkdUSCh0ZW1wUGF0aCkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsK
LQotICAgIFN0cmluZyBwcm9wb3NlZFBhdGg7Ci0gICAgZG8gewotICAgICAgICB3Y2hhcl90IHRl
bXBGaWxlW10gPSBMIlhYWFhYWFhYLnRtcCI7IC8vIFVzZSA4LjMgc3R5bGUgbmFtZSAobW9yZSBj
aGFyYWN0ZXJzIGFyZW4ndCBoZWxwZnVsIGR1ZSB0byA4LjMgc2hvcnQgZmlsZSBuYW1lcykKLSAg
ICAgICAgY29uc3QgaW50IHJhbmRvbVBhcnRMZW5ndGggPSA4OwotICAgICAgICBjcnlwdG9ncmFw
aGljYWxseVJhbmRvbVZhbHVlcyh0ZW1wRmlsZSwgcmFuZG9tUGFydExlbmd0aCAqIHNpemVvZih3
Y2hhcl90KSk7Ci0KLSAgICAgICAgLy8gTGltaXQgdG8gdmFsaWQgZmlsZXN5c3RlbSBjaGFyYWN0
ZXJzLCBhbHNvIGV4Y2x1ZGluZyBvdGhlcnMgdGhhdCBjb3VsZCBiZSBwcm9ibGVtYXRpYywgbGlr
ZSBwdW5jdHVhdGlvbi4KLSAgICAgICAgLy8gZG9uJ3QgaW5jbHVkZSBib3RoIHVwcGVyIGFuZCBs
b3dlcmNhc2Ugc2luY2UgV2luZG93cyBmaWxlIHN5c3RlbXMgYXJlIHR5cGljYWxseSBub3QgY2Fz
ZSBzZW5zaXRpdmUuCi0gICAgICAgIGNvbnN0IGNoYXIgdmFsaWRDaGFyc1tdID0gIjAxMjM0NTY3
ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiI7Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgcmFuZG9tUGFydExlbmd0aDsgKytpKQotICAgICAgICAgICAgdGVtcEZpbGVbaV0gPSB2YWxp
ZENoYXJzW3RlbXBGaWxlW2ldICUgKHNpemVvZih2YWxpZENoYXJzKSAtIDEpXTsKLQotICAgICAg
ICBBU1NFUlQod2NzbGVuKHRlbXBGaWxlKSA9PSBXVEZfQVJSQVlfTEVOR1RIKHRlbXBGaWxlKSAt
IDEpOwotCi0gICAgICAgIHByb3Bvc2VkUGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChu
dWxsVGVybWluYXRlZFdDaGFyVG9TdHJpbmcodGVtcFBhdGgpLCBudWxsVGVybWluYXRlZFdDaGFy
VG9TdHJpbmcodGVtcEZpbGUpKTsKLSAgICAgICAgaWYgKHByb3Bvc2VkUGF0aC5pc0VtcHR5KCkp
Ci0gICAgICAgICAgICBicmVhazsKLSAgICB9IHdoaWxlICghYWN0aW9uKHByb3Bvc2VkUGF0aCkp
OwotCi0gICAgcmV0dXJuIHByb3Bvc2VkUGF0aDsKLX0KLQotU3RyaW5nIG9wZW5UZW1wb3JhcnlG
aWxlKGNvbnN0IFN0cmluZyYsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKQotewotICAgIGhh
bmRsZSA9IElOVkFMSURfSEFORExFX1ZBTFVFOwotCi0gICAgU3RyaW5nIHByb3Bvc2VkUGF0aCA9
IGdlbmVyYXRlVGVtcG9yYXJ5UGF0aChbJmhhbmRsZV0oY29uc3QgU3RyaW5nJiBwcm9wb3NlZFBh
dGgpIHsKLSAgICAgICAgLy8gdXNlIENSRUFURV9ORVcgdG8gYXZvaWQgb3ZlcndyaXRpbmcgYW4g
ZXhpc3RpbmcgZmlsZSB3aXRoIHRoZSBzYW1lIG5hbWUKLSAgICAgICAgaGFuZGxlID0gOjpDcmVh
dGVGaWxlVyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIocHJvcG9zZWRQYXRoKS5kYXRhKCks
IEdFTkVSSUNfUkVBRCB8IEdFTkVSSUNfV1JJVEUsIDAsIDAsIENSRUFURV9ORVcsIEZJTEVfQVRU
UklCVVRFX05PUk1BTCwgMCk7Ci0KLSAgICAgICAgcmV0dXJuIGlzSGFuZGxlVmFsaWQoaGFuZGxl
KSB8fCBHZXRMYXN0RXJyb3IoKSA9PSBFUlJPUl9BTFJFQURZX0VYSVNUUzsKLSAgICB9KTsKLQot
ICAgIGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUpKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7
Ci0KLSAgICByZXR1cm4gcHJvcG9zZWRQYXRoOwotfQotCi1QbGF0Zm9ybUZpbGVIYW5kbGUgb3Bl
bkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUgbW9kZSkKLXsKLSAgICBEV09S
RCBkZXNpcmVkQWNjZXNzID0gMDsKLSAgICBEV09SRCBjcmVhdGlvbkRpc3Bvc2l0aW9uID0gMDsK
LSAgICBEV09SRCBzaGFyZU1vZGUgPSAwOwotICAgIHN3aXRjaCAobW9kZSkgewotICAgIGNhc2Ug
RmlsZU9wZW5Nb2RlOjpSZWFkOgotICAgICAgICBkZXNpcmVkQWNjZXNzID0gR0VORVJJQ19SRUFE
OwotICAgICAgICBjcmVhdGlvbkRpc3Bvc2l0aW9uID0gT1BFTl9FWElTVElORzsKLSAgICAgICAg
c2hhcmVNb2RlID0gRklMRV9TSEFSRV9SRUFEOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEZp
bGVPcGVuTW9kZTo6V3JpdGU6Ci0gICAgICAgIGRlc2lyZWRBY2Nlc3MgPSBHRU5FUklDX1dSSVRF
OwotICAgICAgICBjcmVhdGlvbkRpc3Bvc2l0aW9uID0gQ1JFQVRFX0FMV0FZUzsKLSAgICAgICAg
YnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
fQotCi0gICAgU3RyaW5nIGRlc3RpbmF0aW9uID0gcGF0aDsKLSAgICByZXR1cm4gQ3JlYXRlRmls
ZShzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoZGVzdGluYXRpb24pLmRhdGEoKSwgZGVzaXJl
ZEFjY2Vzcywgc2hhcmVNb2RlLCAwLCBjcmVhdGlvbkRpc3Bvc2l0aW9uLCBGSUxFX0FUVFJJQlVU
RV9OT1JNQUwsIDApOwotfQotCi12b2lkIGNsb3NlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUmIGhh
bmRsZSkKLXsKLSAgICBpZiAoaXNIYW5kbGVWYWxpZChoYW5kbGUpKSB7Ci0gICAgICAgIDo6Q2xv
c2VIYW5kbGUoaGFuZGxlKTsKLSAgICAgICAgaGFuZGxlID0gaW52YWxpZFBsYXRmb3JtRmlsZUhh
bmRsZTsKLSAgICB9Ci19Ci0KLWxvbmcgbG9uZyBzZWVrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUg
aGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0LCBGaWxlU2Vla09yaWdpbiBvcmlnaW4pCi17Ci0gICAg
RFdPUkQgbW92ZU1ldGhvZCA9IEZJTEVfQkVHSU47Ci0KLSAgICBpZiAob3JpZ2luID09IEZpbGVT
ZWVrT3JpZ2luOjpDdXJyZW50KQotICAgICAgICBtb3ZlTWV0aG9kID0gRklMRV9DVVJSRU5UOwot
ICAgIGVsc2UgaWYgKG9yaWdpbiA9PSBGaWxlU2Vla09yaWdpbjo6RW5kKQotICAgICAgICBtb3Zl
TWV0aG9kID0gRklMRV9FTkQ7Ci0KLSAgICBMQVJHRV9JTlRFR0VSIGxhcmdlT2Zmc2V0OwotICAg
IGxhcmdlT2Zmc2V0LlF1YWRQYXJ0ID0gb2Zmc2V0OwotCi0gICAgbGFyZ2VPZmZzZXQuTG93UGFy
dCA9IFNldEZpbGVQb2ludGVyKGhhbmRsZSwgbGFyZ2VPZmZzZXQuTG93UGFydCwgJmxhcmdlT2Zm
c2V0LkhpZ2hQYXJ0LCBtb3ZlTWV0aG9kKTsKLQotICAgIGlmIChsYXJnZU9mZnNldC5Mb3dQYXJ0
ID09IElOVkFMSURfU0VUX0ZJTEVfUE9JTlRFUiAmJiBHZXRMYXN0RXJyb3IoKSAhPSBOT19FUlJP
UikKLSAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgcmV0dXJuIGxhcmdlT2Zmc2V0LlF1YWRQYXJ0
OwotfQotCi1pbnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY29uc3Qg
Y2hhciogZGF0YSwgaW50IGxlbmd0aCkKLXsKLSAgICBpZiAoIWlzSGFuZGxlVmFsaWQoaGFuZGxl
KSkKLSAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgRFdPUkQgYnl0ZXNXcml0dGVuOwotICAgIGJv
b2wgc3VjY2VzcyA9IFdyaXRlRmlsZShoYW5kbGUsIGRhdGEsIGxlbmd0aCwgJmJ5dGVzV3JpdHRl
biwgMCk7Ci0KLSAgICBpZiAoIXN1Y2Nlc3MpCi0gICAgICAgIHJldHVybiAtMTsKLSAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8aW50PihieXRlc1dyaXR0ZW4pOwotfQotCi1pbnQgcmVhZEZyb21GaWxl
KFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCi17Ci0g
ICAgaWYgKCFpc0hhbmRsZVZhbGlkKGhhbmRsZSkpCi0gICAgICAgIHJldHVybiAtMTsKLQotICAg
IERXT1JEIGJ5dGVzUmVhZDsKLSAgICBib29sIHN1Y2Nlc3MgPSA6OlJlYWRGaWxlKGhhbmRsZSwg
ZGF0YSwgbGVuZ3RoLCAmYnl0ZXNSZWFkLCAwKTsKLQotICAgIGlmICghc3VjY2VzcykKLSAgICAg
ICAgcmV0dXJuIC0xOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KGJ5dGVzUmVhZCk7Ci19
Ci0KLWJvb2wgaGFyZExpbmtPckNvcHlGaWxlKGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBT
dHJpbmcmIGRlc3RpbmF0aW9uKQotewotICAgIHJldHVybiAhITo6Q29weUZpbGUoc3RyaW5nVG9O
dWxsVGVybWluYXRlZFdDaGFyKHNvdXJjZSkuZGF0YSgpLCBzdHJpbmdUb051bGxUZXJtaW5hdGVk
V0NoYXIoZGVzdGluYXRpb24pLmRhdGEoKSwgVFJVRSk7Ci19Ci0KLVN0cmluZyBsb2NhbFVzZXJT
cGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKQotewotICAgIHJldHVybiBjYWNoZWRTdG9yYWdlRGly
ZWN0b3J5KENTSURMX0xPQ0FMX0FQUERBVEEpOwotfQotCi1TdHJpbmcgcm9hbWluZ1VzZXJTcGVj
aWZpY1N0b3JhZ2VEaXJlY3RvcnkoKQotewotICAgIHJldHVybiBjYWNoZWRTdG9yYWdlRGlyZWN0
b3J5KENTSURMX0FQUERBVEEpOwotfQotCi1WZWN0b3I8U3RyaW5nPiBsaXN0RGlyZWN0b3J5KGNv
bnN0IFN0cmluZyYgZGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIGZpbHRlcikKLXsKLSAgICBWZWN0
b3I8U3RyaW5nPiBlbnRyaWVzOwotCi0gICAgUGF0aFdhbGtlciB3YWxrZXIoZGlyZWN0b3J5LCBm
aWx0ZXIpOwotICAgIGlmICghd2Fsa2VyLmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIGVudHJp
ZXM7Ci0KLSAgICBkbyB7Ci0gICAgICAgIGlmICh3YWxrZXIuZGF0YSgpLmR3RmlsZUF0dHJpYnV0
ZXMgJiBGSUxFX0FUVFJJQlVURV9ESVJFQ1RPUlkKLSAgICAgICAgICAgICYmICghd2NzY21wKHdh
bGtlci5kYXRhKCkuY0ZpbGVOYW1lLCBMIi4iKSB8fCAhd2NzY21wKHdhbGtlci5kYXRhKCkuY0Zp
bGVOYW1lLCBMIi4uIikpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgZW50cmll
cy5hcHBlbmQoZGlyZWN0b3J5ICsgIlxcIiArIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIq
Pih3YWxrZXIuZGF0YSgpLmNGaWxlTmFtZSkpOwotICAgIH0gd2hpbGUgKHdhbGtlci5zdGVwKCkp
OwotCi0gICAgcmV0dXJuIGVudHJpZXM7Ci19Ci0KLWJvb2wgZ2V0Vm9sdW1lRnJlZVNwYWNlKGNv
bnN0IFN0cmluZyYsIHVpbnQ2NF90JikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJl
dHVybiBmYWxzZTsKLX0KLQotT3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0
IENTdHJpbmcmIGZzRmlsZSkKLXsKLSAgICBhdXRvIGhhbmRsZSA9IG9wZW5GaWxlKGZzRmlsZS5k
YXRhKCksIEZpbGVPcGVuTW9kZTo6UmVhZCk7Ci0gICAgaWYgKCFpc0hhbmRsZVZhbGlkKGhhbmRs
ZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBCWV9IQU5ETEVfRklMRV9J
TkZPUk1BVElPTiBmaWxlSW5mb3JtYXRpb24gPSB7IH07Ci0gICAgaWYgKCE6OkdldEZpbGVJbmZv
cm1hdGlvbkJ5SGFuZGxlKGhhbmRsZSwgJmZpbGVJbmZvcm1hdGlvbikpIHsKLSAgICAgICAgY2xv
c2VGaWxlKGhhbmRsZSk7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgfQotCi0g
ICAgY2xvc2VGaWxlKGhhbmRsZSk7Ci0KLSAgICByZXR1cm4gZmlsZUluZm9ybWF0aW9uLmR3Vm9s
dW1lU2VyaWFsTnVtYmVyOwotfQotCi1TdHJpbmcgcmVhbFBhdGgoY29uc3QgU3RyaW5nJiBmaWxl
UGF0aCkKLXsKLSAgICByZXR1cm4gZ2V0RmluYWxQYXRoTmFtZShmaWxlUGF0aCk7Ci19Ci0KLVN0
cmluZyBjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoKQotewotICAgIHJldHVybiBnZW5lcmF0ZVRl
bXBvcmFyeVBhdGgoW10oY29uc3QgU3RyaW5nJiBwcm9wb3NlZFBhdGgpIHsKLSAgICAgICAgcmV0
dXJuIG1ha2VBbGxEaXJlY3Rvcmllcyhwcm9wb3NlZFBhdGgpOwotICAgIH0pOwotfQotCi1ib29s
IGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5UGF0aCkKLXsK
LSAgICBTSEZJTEVPUFNUUlVDVCBkZWxldGVPcGVyYXRpb24gPSB7Ci0gICAgICAgIG51bGxwdHIs
Ci0gICAgICAgIEZPX0RFTEVURSwKLSAgICAgICAgc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFy
KGRpcmVjdG9yeVBhdGgpLmRhdGEoKSwKLSAgICAgICAgTCIiLAotICAgICAgICBGT0ZfTk9DT05G
SVJNQVRJT04gfCBGT0ZfTk9FUlJPUlVJIHwgRk9GX1NJTEVOVCwKLSAgICAgICAgZmFsc2UsCi0g
ICAgICAgIDAsCi0gICAgICAgIEwiIgotICAgIH07Ci0gICAgcmV0dXJuICFTSEZpbGVPcGVyYXRp
b24oJmRlbGV0ZU9wZXJhdGlvbik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEZpbGVTeXN0ZW0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9QYXRoV2Fsa2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXRoV2Fs
a2VyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjIwNDA3YjFjZmVhNjI0ZjNh
MTU2OWE4ZmQ2NzY4YTVkZWJlZDM2My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGF0aFdhbGtlci5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIlBhdGhXYWxrZXIuaCIKLQotI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5oPgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVBhdGhXYWxrZXI6OlBhdGhXYWxrZXIoY29uc3QgU3Ry
aW5nJiBkaXJlY3RvcnksIGNvbnN0IFN0cmluZyYgcGF0dGVybikKLXsKLSAgICBTdHJpbmcgcGF0
aCA9IGRpcmVjdG9yeSArICJcXCIgKyBwYXR0ZXJuOwotICAgIG1faGFuZGxlID0gOjpGaW5kRmly
c3RGaWxlVyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIocGF0aCkuZGF0YSgpLCAmbV9kYXRh
KTsKLX0KLQotUGF0aFdhbGtlcjo6flBhdGhXYWxrZXIoKQotewotICAgIGlmICghaXNWYWxpZCgp
KQotICAgICAgICByZXR1cm47Ci0gICAgOjpGaW5kQ2xvc2UobV9oYW5kbGUpOwotfQotCi1ib29s
IFBhdGhXYWxrZXI6OnN0ZXAoKQotewotICAgIHJldHVybiA6OkZpbmROZXh0RmlsZVcobV9oYW5k
bGUsICZtX2RhdGEpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGF0aFdhbGtlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1BhdGhXYWxrZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZmM1OWQ2NzMxODExYjhjYTE1ODdhNGExMmE3ZGExZTFhMTU5M2Q4NC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vUGF0aFdhbGtlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgPFdpbmRvd3MuaD4KLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgot
I2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNs
YXNzIFBhdGhXYWxrZXIgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBhdGhXYWxrZXIpOwot
cHVibGljOgotICAgIFBhdGhXYWxrZXIoY29uc3QgV1RGOjpTdHJpbmcmIGRpcmVjdG9yeSwgY29u
c3QgV1RGOjpTdHJpbmcmIHBhdHRlcm4pOwotICAgIH5QYXRoV2Fsa2VyKCk7Ci0KLSAgICBib29s
IGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2hhbmRsZSAhPSBJTlZBTElEX0hBTkRMRV9WQUxV
RTsgfQotICAgIGNvbnN0IFdJTjMyX0ZJTkRfREFUQVcmIGRhdGEoKSBjb25zdCB7IHJldHVybiBt
X2RhdGE7IH0KLQotICAgIGJvb2wgc3RlcCgpOwotCi1wcml2YXRlOgotICAgIEhBTkRMRSBtX2hh
bmRsZTsKLSAgICBXSU4zMl9GSU5EX0RBVEFXIG1fZGF0YTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQ
b3B1cE1lbnVEQi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBN
ZW51REIuY3BwCmluZGV4IDllNmU0YzUyZDdiOTgzOGExZjA3YmRkNTlmNDA5ZDgxNjVmZTU2NjYu
LmU1NzMwYjMwY2NmM2YwM2VlZmRmZjlhMzMxYzA4ZWQwZTIyZTU4YmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVEQi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudURCLmNwcApAQCAtMjUsOSAr
MjUsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNlYXJjaFBvcHVwTWVudURC
LmgiCiAKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiU1FMaXRlRmlsZVN5c3Rl
bS5oIgogI2luY2x1ZGUgIlNRTGl0ZVRyYW5zYWN0aW9uLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVT
eXN0ZW0uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lLmNwcAppbmRleCA3NmM5YzVjNzhkNTZkM2U4ZDk3ZDQyMWY0ZGZhYTRhYjFi
ZDllY2MwLi5jNGZhMzU2NzBiOTU0NzY3NmI3YzRmYjlhODEyYjNkNmU2ZWM5OWU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKQEAgLTI1LDcgKzI1LDYgQEAKICNp
bmNsdWRlICJDb250cm9sU3RhdGVzLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJGaWxlTGlzdC5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJGbG9hdENv
bnZlcnNpb24uaCIKICNpbmNsdWRlICJGbG9hdFJvdW5kZWRSZWN0LmgiCiAjaW5jbHVkZSAiRm9j
dXNDb250cm9sbGVyLmgiCkBAIC00NSw2ICs0NCw3IEBACiAjaW5jbHVkZSAiU3BpbkJ1dHRvbkVs
ZW1lbnQuaCIKICNpbmNsdWRlICJTdHJpbmdUcnVuY2F0b3IuaCIKICNpbmNsdWRlICJUZXh0Q29u
dHJvbElubmVyRWxlbWVudHMuaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1
ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiAjaWYgRU5BQkxFKE1FVEVSX0VMRU1FTlQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lR3RrLmNwcAppbmRleCBiNjk2ZWFj
OGZiMTA1ZTJiNzA5NjIwNjk0NzM5NzNlMTNlYjlmYjY2Li5iMjU5NjZjYjUzMzI3Njg1OWVlODE5
NjcxYWQyNWZkZjc3ZTAzZWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZUd0ay5jcHAKQEAgLTI3LDcgKzI3LDYgQEAKIAogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29y
ZHMuaCIKICNpbmNsdWRlICJGaWxlTGlzdC5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNp
bmNsdWRlICJGbG9hdFJvdW5kZWRSZWN0LmgiCiAjaW5jbHVkZSAiRm9udERlc2NyaXB0aW9uLmgi
CiAjaW5jbHVkZSAiR1JlZlB0ckd0ay5oIgpAQCAtNTUsNiArNTQsNyBAQAogI2luY2x1ZGUgPGdk
ay9nZGsuaD4KICNpbmNsdWRlIDxnbGliLmg+CiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgorI2luY2x1
ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmNwcAppbmRleCBl
ZWI5OTg1ZTYyZjVjOWEzNDgyNDNlOGRkZTllY2NjMGE5YmRiZmI1Li4yMTk2NTdlMWYyNGFhYmEw
NTgyNWEyYTYyYjA4MDRjN2ZiYjNmMzM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZVdpbi5jcHAKQEAgLTI0LDcgKzI0LDYgQEAKIAogI2luY2x1ZGUgIkNTU1ZhbHVl
S2V5d29yZHMuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5o
IgogI2luY2x1ZGUgIkZvbnRNZXRyaWNzLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRl
ICJGcmFtZVNlbGVjdGlvbi5oIgpAQCAtMzgsNiArMzcsNyBAQAogI2luY2x1ZGUgIlN5c3RlbUlu
Zm8uaCIKICNpbmNsdWRlICJVc2VyQWdlbnRTdHlsZVNoZWV0cy5oIgogI2luY2x1ZGUgIldlYkNv
cmVCdW5kbGVXaW4uaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0
Zi9Tb2Z0TGlua2luZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25E
YXRhYmFzZS5jcHAKaW5kZXggNjBlZWI4Y2MyYzBmNDEyY2EyYmNlZDk4MmFlOTI3ZmZiMWQ2YTQ2
OC4uMWFmNDM3ODhmZmZiYWFhOTEyZTFhZDk3YmJkOThiMTcyZGUzZjBlMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3Ry
YXRpb25EYXRhYmFzZS5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKIAotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgi
CiAjaW5jbHVkZSAiUmVnaXN0cmF0aW9uU3RvcmUuaCIKICNpbmNsdWRlICJTUUxpdGVEYXRhYmFz
ZS5oIgpAQCAtMzksNiArMzgsNyBAQAogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5j
bHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFk
Q29waWVyLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTWFp
blRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0
Zi9TY29wZS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1BlcnNpc3RlbnRTdG9yYWdlLmNwcAppbmRleCBjMjEwZWNhYzhhNDc0NmU0MTQwZDQwNjQyZTBj
MzcwYTBlNWE3ZWQwLi4xMDVkZDAyODg2MDc1MDcwOTc3Y2FlODdkMmM0YTRmNDBiYmZlZmI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3Rl
bnRTdG9yYWdlLmNwcApAQCAtMzMsOSArMzMsOSBAQAogI2luY2x1ZGUgIlJlc291cmNlTG9hZFN0
YXRpc3RpY3NNZW1vcnlTdG9yZS5oIgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZU1vbml0b3IuaD4KLSNpbmNsdWRlIDxX
ZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0tleWVkQ29kaW5nLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3Rl
bS5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5o
PgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRh
VGFza0Jsb2IuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNr
QmxvYi5oCmluZGV4IDc1ZDMxYTYxYTRmNzQyZjM4N2Y5YjVlYTJkNGY2MDI5NDM2MTI4N2MuLmVi
Nzk0NDcyNTk1YjU2ZWRkNjIwYmUyNTc2ZWQyMTgxODA1ZDBkODUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5oCkBAIC0zMyw3ICsz
Myw3IEBACiAKICNpbmNsdWRlICJOZXR3b3JrRGF0YVRhc2suaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L0ZpbGVTdHJlYW1DbGllbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KKyNp
bmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBB
c3luY0ZpbGVTdHJlYW07CkBAIC0xMTMsNyArMTEzLDcgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25l
ZCBtX3NpemVJdGVtQ291bnQgeyAwIH07CiAgICAgdW5zaWduZWQgbV9yZWFkSXRlbUNvdW50IHsg
MCB9OwogICAgIGJvb2wgbV9maWxlT3BlbmVkIHsgZmFsc2UgfTsKLSAgICBXZWJDb3JlOjpGaWxl
U3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgbV9kb3dubG9hZEZpbGUgeyBXZWJDb3JlOjpGaWxl
U3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlIH07CisgICAgRmlsZVN5c3RlbTo6UGxh
dGZvcm1GaWxlSGFuZGxlIG1fZG93bmxvYWRGaWxlIHsgRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRm
b3JtRmlsZUhhbmRsZSB9OwogCiAgICAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZp
bGVSZWZlcmVuY2U+PiBtX2ZpbGVSZWZlcmVuY2VzOwogICAgIFJlZlB0cjxTYW5kYm94RXh0ZW5z
aW9uPiBtX3NhbmRib3hFeHRlbnNpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDJhOThiMzA0YTEzYzZjNjljNGE0MDc1ZmNlMDU4
MTFlMTE3NmZhMWUuLmExMjliMjYxZTU0MjRjZDg0NWU1OWJhMWFkOWViZDkxOGRkODM5YWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBA
IC0xNTIwLDcgKzE1MjAsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRDYWNoZU1vZGVsKENh
Y2hlTW9kZWwgY2FjaGVNb2RlbCkKICAgICB1bnNpZ25lZCB1cmxDYWNoZU1lbW9yeUNhcGFjaXR5
ID0gMDsKICAgICB1aW50NjRfdCB1cmxDYWNoZURpc2tDYXBhY2l0eSA9IDA7CiAgICAgdWludDY0
X3QgZGlza0ZyZWVTaXplID0gMDsKLSAgICBpZiAoV2ViQ29yZTo6RmlsZVN5c3RlbTo6Z2V0Vm9s
dW1lRnJlZVNwYWNlKG1fZGlza0NhY2hlRGlyZWN0b3J5LCBkaXNrRnJlZVNpemUpKSB7CisgICAg
aWYgKEZpbGVTeXN0ZW06OmdldFZvbHVtZUZyZWVTcGFjZShtX2Rpc2tDYWNoZURpcmVjdG9yeSwg
ZGlza0ZyZWVTaXplKSkgewogICAgICAgICAvLyBBcyBhIGZ1ZGdlIGZhY3RvciwgdXNlIDEwMDAg
aW5zdGVhZCBvZiAxMDI0LCBpbiBjYXNlIHRoZSByZXBvcnRlZCBieXRlCiAgICAgICAgIC8vIGNv
dW50IGRvZXNuJ3QgYWxpZ24gZXhhY3RseSB0byBhIG1lZ2FieXRlIGJvdW5kYXJ5LgogICAgICAg
ICBkaXNrRnJlZVNpemUgLz0gS0IgKiAxMDAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCmluZGV4IGYxN2Zk
OWY5MmJlNWQyYTUwNTQ1YzA3OTllMzdkOWFlMGNmM2VmYmQuLjFlM2UxMWIxOThjMzUyNzIwYTAz
ZjU3OWQyOTk0N2Y5YmVlZmRiNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKQEAgLTUyLDcgKzUyLDcg
QEAgU3RyaW5nIEVuZ2luZTo6Y2FjaGVzUm9vdFBhdGgoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3Jp
Z2luJiBvcmlnaW4pCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICBLZXkga2V5KG9yaWdpbi50
b3BPcmlnaW4udG9TdHJpbmcoKSwgb3JpZ2luLmNsaWVudE9yaWdpbi50b1N0cmluZygpLCB7IH0s
IHsgfSwgc2FsdCgpKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KHJvb3RQYXRoKCksIGtleS5oYXNoQXNTdHJpbmcoKSk7CisgICAgcmV0
dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyb290UGF0aCgpLCBrZXku
aGFzaEFzU3RyaW5nKCkpOwogfQogCiBFbmdpbmU6On5FbmdpbmUoKQpAQCAtMjkxLDkgKzI5MSw5
IEBAIHZvaWQgRW5naW5lOjppbml0aWFsaXplKENvbXBsZXRpb25DYWxsYmFjayYmIGNhbGxiYWNr
KQogICAgIGlmICghc2hvdWxkQ29tcHV0ZVNhbHQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0
cmluZyBzYWx0UGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChtX3Jvb3RQYXRoLCAic2FsdCJfcyk7CisgICAgU3RyaW5nIHNhbHRQYXRoID0gRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fcm9vdFBhdGgsICJzYWx0Il9zKTsKICAg
ICBtX2lvUXVldWUtPmRpc3BhdGNoKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMp
LCBzYWx0UGF0aCA9IFdURk1vdmUoc2FsdFBhdGgpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKG1fcm9vdFBhdGgpOworICAgICAg
ICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMobV9yb290UGF0aCk7CiAgICAgICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlz
KSwgc2FsdCA9IHJlYWRPck1ha2VTYWx0KHNhbHRQYXRoKV0oKSBtdXRhYmxlIHsKICAgICAgICAg
ICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzgzLDkgKzM4
Myw5IEBAIHZvaWQgRW5naW5lOjp3cml0ZUZpbGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgTmV0
d29ya0NhY2hlOjpEYXRhJiYgZGF0YSwgV2ViQ29yCiAgICAgbV9wZW5kaW5nV3JpdGVDYWxsYmFj
a3MuYWRkKCsrbV9wZW5kaW5nQ2FsbGJhY2tzQ291bnRlciwgV1RGTW92ZShjYWxsYmFjaykpOwog
ICAgIG1faW9RdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhp
cyksIGlkZW50aWZpZXIgPSBtX3BlbmRpbmdDYWxsYmFja3NDb3VudGVyLCBkYXRhID0gV1RGTW92
ZShkYXRhKSwgZmlsZW5hbWUgPSBmaWxlbmFtZS5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsK
IAotICAgICAgICBTdHJpbmcgZGlyZWN0b3J5UGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRp
cmVjdG9yeU5hbWUoZmlsZW5hbWUpOwotICAgICAgICBpZiAoIVdlYkNvcmU6OkZpbGVTeXN0ZW06
OmZpbGVFeGlzdHMoZGlyZWN0b3J5UGF0aCkpCi0gICAgICAgICAgICBXZWJDb3JlOjpGaWxlU3lz
dGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoZGlyZWN0b3J5UGF0aCk7CisgICAgICAgIFN0cmluZyBk
aXJlY3RvcnlQYXRoID0gRmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShmaWxlbmFtZSk7CisgICAg
ICAgIGlmICghRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhkaXJlY3RvcnlQYXRoKSkKKyAgICAgICAg
ICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhkaXJlY3RvcnlQYXRoKTsKIAogICAg
ICAgICBhdXRvIGNoYW5uZWwgPSBJT0NoYW5uZWw6Om9wZW4oZmlsZW5hbWUsIElPQ2hhbm5lbDo6
VHlwZTo6Q3JlYXRlKTsKICAgICAgICAgY2hhbm5lbC0+d3JpdGUoMCwgZGF0YSwgbnVsbHB0ciwg
W3RoaXMsIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIGlkZW50aWZpZXJdKGludCBlcnJv
cikgbXV0YWJsZSB7CkBAIC00NDUsNyArNDQ1LDcgQEAgdm9pZCBFbmdpbmU6OnJlbW92ZUZpbGUo
Y29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9pb1F1ZXVl
LT5kaXNwYXRjaChbZmlsZW5hbWUgPSBmaWxlbmFtZS5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxl
IHsKLSAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShmaWxlbmFtZSk7Cisg
ICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZmlsZW5hbWUpOwogICAgIH0pOwogfQogCkBA
IC00ODcsOCArNDg3LDggQEAgdm9pZCBFbmdpbmU6OmZldGNoRW50cmllcyhib29sIHNob3VsZENv
bXB1dGVTaXplLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmUKICAgICB9CiAKICAgICBh
dXRvIHRhc2tDb3VudGVyID0gUmVhZE9yaWdpbnNUYXNrQ291bnRlcjo6Y3JlYXRlKFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICBmb3IgKGF1dG8mIGZvbGRlclBhdGggOiBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KG1fcm9vdFBhdGgsICIqIikpIHsKLSAgICAgICAg
aWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlSXNEaXJlY3RvcnkoZm9sZGVyUGF0aCwgV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6U2hvdWxkRm9sbG93U3ltYm9saWNMaW5rczo6Tm8pKQorICAgIGZv
ciAoYXV0byYgZm9sZGVyUGF0aCA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobV9yb290UGF0
aCwgIioiKSkgeworICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVJc0RpcmVjdG9yeShmb2xk
ZXJQYXRoLCBGaWxlU3lzdGVtOjpTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpObykpCiAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgQ2FjaGVzOjpyZXRyaWV2ZU9yaWdpbkZyb21EaXJl
Y3RvcnkoZm9sZGVyUGF0aCwgKm1faW9RdWV1ZSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgc2hvdWxkQ29tcHV0ZVNpemUsIHRhc2tDb3VudGVyID0gdGFza0NvdW50ZXIuY29weVJl
ZigpXSAoYXV0byYmIG9yaWdpbikgbXV0YWJsZSB7CiAgICAgICAgICAgICBBU1NFUlQoUnVuTG9v
cDo6aXNNYWluKCkpOwpAQCAtNTMxLDggKzUzMSw4IEBAIHZvaWQgRW5naW5lOjpjbGVhckFsbENh
Y2hlc0Zyb21EaXNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIG1faW9RdWV1ZS0+ZGlzcGF0
Y2goW3BhdGggPSBtX3Jvb3RQYXRoLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICBmb3IgKGF1
dG8mIGZpbGVuYW1lIDogV2ViQ29yZTo6RmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShwYXRoLCAi
KiIpKSB7Ci0gICAgICAgICAgICBpZiAoV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZUlzRGlyZWN0
b3J5KGZpbGVuYW1lLCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpTaG91bGRGb2xsb3dTeW1ib2xpY0xp
bmtzOjpObykpCisgICAgICAgIGZvciAoYXV0byYgZmlsZW5hbWUgOiBGaWxlU3lzdGVtOjpsaXN0
RGlyZWN0b3J5KHBhdGgsICIqIikpIHsKKyAgICAgICAgICAgIGlmIChGaWxlU3lzdGVtOjpmaWxl
SXNEaXJlY3RvcnkoZmlsZW5hbWUsIEZpbGVTeXN0ZW06OlNob3VsZEZvbGxvd1N5bWJvbGljTGlu
a3M6Ok5vKSkKICAgICAgICAgICAgICAgICBkZWxldGVEaXJlY3RvcnlSZWN1cnNpdmVseShmaWxl
bmFtZSk7CiAgICAgICAgIH0KICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKQEAgLTU2Miw4ICs1NjIsOCBAQCB2b2lkIEVuZ2luZTo6
Y2xlYXJDYWNoZXNGb3JPcmlnaW5Gcm9tRGlzayhjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEmIG9yaQogCiAgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3Jl
Z2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAKLSAgICBmb3IgKGF1
dG8mIGZvbGRlclBhdGggOiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KG1fcm9v
dFBhdGgsICIqIikpIHsKLSAgICAgICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlSXNE
aXJlY3RvcnkoZm9sZGVyUGF0aCwgV2ViQ29yZTo6RmlsZVN5c3RlbTo6U2hvdWxkRm9sbG93U3lt
Ym9saWNMaW5rczo6Tm8pKQorICAgIGZvciAoYXV0byYgZm9sZGVyUGF0aCA6IEZpbGVTeXN0ZW06
Omxpc3REaXJlY3RvcnkobV9yb290UGF0aCwgIioiKSkgeworICAgICAgICBpZiAoIUZpbGVTeXN0
ZW06OmZpbGVJc0RpcmVjdG9yeShmb2xkZXJQYXRoLCBGaWxlU3lzdGVtOjpTaG91bGRGb2xsb3dT
eW1ib2xpY0xpbmtzOjpObykpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgQ2FjaGVz
OjpyZXRyaWV2ZU9yaWdpbkZyb21EaXJlY3RvcnkoZm9sZGVyUGF0aCwgKm1faW9RdWV1ZSwgW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgb3JpZ2luLCBjYWxsYmFja0FnZ3Jl
Z2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpLCBmb2xkZXJQYXRoXSAoT3B0aW9u
YWw8V2ViQ29yZTo6Q2xpZW50T3JpZ2luPiYmIGZvbGRlck9yaWdpbikgbXV0YWJsZSB7CiAgICAg
ICAgICAgICBpZiAoIWZvbGRlck9yaWdpbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcApp
bmRleCAxOTEzNDcwY2RkMjIwY2UzYmU5NzVkZjk5MDBlZjM1MGQwNzE3NjNjLi4xZjYwOGNmNTI1
Zjk5NmIyNGVhNDExMzYwMGU4ZTI5Y2IyODdjMjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNo
ZXMuY3BwCkBAIC00MiwxMiArNDIsMTIgQEAgdXNpbmcgbmFtZXNwYWNlIE5ldHdvcmtDYWNoZTsK
IAogc3RhdGljIGlubGluZSBTdHJpbmcgY2FjaGVzTGlzdEZpbGVuYW1lKGNvbnN0IFN0cmluZyYg
Y2FjaGVzUm9vdFBhdGgpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChjYWNoZXNSb290UGF0aCwgImNhY2hlc2xpc3QiX3MpOworICAg
IHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY2FjaGVzUm9vdFBh
dGgsICJjYWNoZXNsaXN0Il9zKTsKIH0KIAogc3RhdGljIGlubGluZSBTdHJpbmcgY2FjaGVzT3Jp
Z2luRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBjYWNoZXNSb290UGF0aCkKIHsKLSAgICByZXR1cm4g
V2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNhY2hlc1Jvb3RQ
YXRoLCAib3JpZ2luIl9zKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KGNhY2hlc1Jvb3RQYXRoLCAib3JpZ2luIl9zKTsKIH0KIAogQ2FjaGVzOjp+Q2Fj
aGVzKCkKQEAgLTU4LDcgKzU4LDcgQEAgQ2FjaGVzOjp+Q2FjaGVzKCkKIHZvaWQgQ2FjaGVzOjpy
ZXRyaWV2ZU9yaWdpbkZyb21EaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBmb2xkZXJQYXRoLCBXb3Jr
UXVldWUmIHF1ZXVlLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29y
ZTo6Q2xpZW50T3JpZ2luPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBxdWV1ZS5k
aXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwg
ZmlsZW5hbWUgPSBjYWNoZXNPcmlnaW5GaWxlbmFtZShmb2xkZXJQYXRoKV0oKSBtdXRhYmxlIHsK
LSAgICAgICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGZpbGVuYW1lKSkg
eworICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZmlsZW5hbWUpKSB7CiAgICAg
ICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0KTsKICAgICAgICAgICAgIH0pOwpAQCAtNDA4LDcg
KzQwOCw3IEBAIHZvaWQgQ2FjaGVzOjpyZWFkQ2FjaGVzRnJvbURpc2soV1RGOjpGdW5jdGlvbjx2
b2lkKEV4cGVjdGVkPFZlY3RvcjxDYWNoZT4sIEVycm9yCiAgICAgfQogCiAgICAgYXV0byBmaWxl
bmFtZSA9IGNhY2hlc0xpc3RGaWxlbmFtZShtX3Jvb3RQYXRoKTsKLSAgICBpZiAoIVdlYkNvcmU6
OkZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZmlsZW5hbWUpKSB7CisgICAgaWYgKCFGaWxlU3lzdGVt
OjpmaWxlRXhpc3RzKGZpbGVuYW1lKSkgewogICAgICAgICBjYWxsYmFjayhWZWN0b3I8Q2FjaGU+
IHsgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKaW5kZXggOWRiN2Q3NjhjNjNjZjhi
NGY1YmI3M2ViZmM2MDg0OGM4YzU4MTk2OS4uMTI0MGZiNDVkMjQwOGZkZGI1MDU2MjVkMGIyYWZh
Mzg3YzI1NGYzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlLmNwcApAQCAtMzEsMTMgKzMxLDEzIEBACiAjaW5jbHVkZSAiTmV0d29y
a0NhY2hlU3RhdGlzdGljcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtDYWNoZVN0b3JhZ2UuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL0NhY2hlVmFsaWRhdGlvbi5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmls
ZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSFRUUEhlYWRlck5hbWVzLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9Mb3dQb3dlck1vZGVOb3RpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3Qu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1NoYXJlZEJ1ZmZlci5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVk
ZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNp
bmNsdWRlIDx3dGYvUnVuTG9vcC5oPgpAQCAtNTAsNyArNTAsNyBAQAogbmFtZXNwYWNlIFdlYktp
dCB7CiBuYW1lc3BhY2UgTmV0d29ya0NhY2hlIHsKIAotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU6
OkZpbGVTeXN0ZW07Cit1c2luZyBuYW1lc3BhY2UgV1RGOjpGaWxlU3lzdGVtOwogCiBzdGF0aWMg
Y29uc3QgQXRvbWljU3RyaW5nJiByZXNvdXJjZVR5cGUoKQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVCbG9iU3RvcmFnZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUJsb2JTdG9y
YWdlLmNwcAppbmRleCBmNzNjNTBkYTE5NDc5MzM2NWQ2ZjUxZTA2MTQxYjUyMzcyN2U3MWVlLi45
NTM4ZGE2NDFiNDI3NDAwMmIyNzlhZGFhODdjMTU0MmQzNmEwMjdmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUJsb2JTdG9yYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUJs
b2JTdG9yYWdlLmNwcApAQCAtMjgsOCArMjgsOCBAQAogCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgog
I2luY2x1ZGUgIk5ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0Zp
bGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVt
Lmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYvU0hBMS5oPgogCkBA
IC01NywxNSArNTcsMTUgQEAgdm9pZCBCbG9iU3RvcmFnZTo6c3luY2hyb25pemUoKQogewogICAg
IEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6
bWFrZUFsbERpcmVjdG9yaWVzKGJsb2JEaXJlY3RvcnlQYXRoKCkpOworICAgIEZpbGVTeXN0ZW06
Om1ha2VBbGxEaXJlY3RvcmllcyhibG9iRGlyZWN0b3J5UGF0aCgpKTsKIAogICAgIG1fYXBwcm94
aW1hdGVTaXplID0gMDsKICAgICBhdXRvIGJsb2JEaXJlY3RvcnkgPSBibG9iRGlyZWN0b3J5UGF0
aCgpOwogICAgIHRyYXZlcnNlRGlyZWN0b3J5KGJsb2JEaXJlY3RvcnksIFt0aGlzLCAmYmxvYkRp
cmVjdG9yeV0oY29uc3QgU3RyaW5nJiBuYW1lLCBEaXJlY3RvcnlFbnRyeVR5cGUgdHlwZSkgewog
ICAgICAgICBpZiAodHlwZSAhPSBEaXJlY3RvcnlFbnRyeVR5cGU6OkZpbGUpCiAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIGF1dG8gcGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChibG9iRGlyZWN0b3J5LCBuYW1lKTsKLSAgICAgICAgYXV0byBm
aWxlUGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihw
YXRoKTsKKyAgICAgICAgYXV0byBwYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KGJsb2JEaXJlY3RvcnksIG5hbWUpOworICAgICAgICBhdXRvIGZpbGVQYXRoID0gRmls
ZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwogICAgICAgICBzdHJ1Y3Qg
c3RhdCBzdGF0OwogICAgICAgICA6OnN0YXQoZmlsZVBhdGguZGF0YSgpLCAmc3RhdCk7CiAgICAg
ICAgIC8vIE5vIGNsaWVudHMgbGVmdCBmb3IgdGhpcyBibG9iLgpAQCAtODEsNyArODEsNyBAQCB2
b2lkIEJsb2JTdG9yYWdlOjpzeW5jaHJvbml6ZSgpCiBTdHJpbmcgQmxvYlN0b3JhZ2U6OmJsb2JQ
YXRoRm9ySGFzaChjb25zdCBTSEExOjpEaWdlc3QmIGhhc2gpIGNvbnN0CiB7CiAgICAgYXV0byBo
YXNoQXNTdHJpbmcgPSBTSEExOjpoZXhEaWdlc3QoaGFzaCk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6
OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChibG9iRGlyZWN0b3J5UGF0aCgp
LCBTdHJpbmc6OmZyb21VVEY4KGhhc2hBc1N0cmluZykpOworICAgIHJldHVybiBGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoYmxvYkRpcmVjdG9yeVBhdGgoKSwgU3RyaW5nOjpm
cm9tVVRGOChoYXNoQXNTdHJpbmcpKTsKIH0KIAogQmxvYlN0b3JhZ2U6OkJsb2IgQmxvYlN0b3Jh
Z2U6OmFkZChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IERhdGEmIGRhdGEpCkBAIC05Myw4ICs5
Myw4IEBAIEJsb2JTdG9yYWdlOjpCbG9iIEJsb2JTdG9yYWdlOjphZGQoY29uc3QgU3RyaW5nJiBw
YXRoLCBjb25zdCBEYXRhJiBkYXRhKQogICAgIGlmIChkYXRhLmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuIHsgZGF0YSwgaGFzaCB9OwogCi0gICAgYXV0byBibG9iUGF0aCA9IFdlYkNvcmU6OkZp
bGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihibG9iUGF0aEZvckhhc2goaGFzaCkp
OwotICAgIGF1dG8gbGlua1BhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24ocGF0aCk7CisgICAgYXV0byBibG9iUGF0aCA9IEZpbGVTeXN0ZW06OmZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihibG9iUGF0aEZvckhhc2goaGFzaCkpOworICAgIGF1dG8gbGlu
a1BhdGggPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAgICAg
dW5saW5rKGxpbmtQYXRoLmRhdGEoKSk7CiAKICAgICBib29sIGJsb2JFeGlzdHMgPSBhY2Nlc3Mo
YmxvYlBhdGguZGF0YSgpLCBGX09LKSAhPSAtMTsKQEAgLTEyNyw3ICsxMjcsNyBAQCBCbG9iU3Rv
cmFnZTo6QmxvYiBCbG9iU3RvcmFnZTo6Z2V0KGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBB
U1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIGF1dG8gbGlua1BhdGggPSBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisgICAgYXV0byBs
aW5rUGF0aCA9IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKICAg
ICBhdXRvIGRhdGEgPSBtYXBGaWxlKGxpbmtQYXRoLmRhdGEoKSk7CiAKICAgICByZXR1cm4geyBk
YXRhLCBjb21wdXRlU0hBMShkYXRhLCBtX3NhbHQpIH07CkBAIC0xMzcsNyArMTM3LDcgQEAgdm9p
ZCBCbG9iU3RvcmFnZTo6cmVtb3ZlKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBBU1NFUlQo
IVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIGF1dG8gbGlua1BhdGggPSBXZWJDb3JlOjpGaWxl
U3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisgICAgYXV0byBsaW5rUGF0
aCA9IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKICAgICB1bmxp
bmsobGlua1BhdGguZGF0YSgpKTsKIH0KIApAQCAtMTQ1LDcgKzE0NSw3IEBAIHVuc2lnbmVkIEJs
b2JTdG9yYWdlOjpzaGFyZUNvdW50KGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBBU1NFUlQo
IVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIGF1dG8gbGlua1BhdGggPSBXZWJDb3JlOjpGaWxl
U3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisgICAgYXV0byBsaW5rUGF0
aCA9IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKICAgICBzdHJ1
Y3Qgc3RhdCBzdGF0OwogICAgIGlmICg6OnN0YXQobGlua1BhdGguZGF0YSgpLCAmc3RhdCkgPCAw
KQogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuY3BwCmluZGV4IDllMzE4OTQzZDdjNjEzOGNh
YTFjMWRjMzBmM2EyZjM1ZjMzMDI5ZjIuLjFhMzJhYTlhMGU1M2I0Njk1N2FhOGViM2JiMjM4NTZm
MGE4OTlmMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcApAQCAtMjYsOSArMjYsOSBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtDYWNoZURhdGEuaCIKIAotI2luY2x1ZGUgPFdlYkNv
cmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPGZjbnRsLmg+CiAjaW5jbHVkZSA8d3RmL0NyeXB0
b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4K
IAogI2lmICFPUyhXSU5ET1dTKQogI2luY2x1ZGUgPHN5cy9tbWFuLmg+CkBAIC0xNTYsNyArMTU2
LDcgQEAgc3RhdGljIFNhbHQgbWFrZVNhbHQoKQogT3B0aW9uYWw8U2FsdD4gcmVhZE9yTWFrZVNh
bHQoY29uc3QgU3RyaW5nJiBwYXRoKQogewogI2lmICFPUyhXSU5ET1dTKQotICAgIGF1dG8gY3Bh
dGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7
CisgICAgYXV0byBjcGF0aCA9IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihw
YXRoKTsKICAgICBhdXRvIGZkID0gb3BlbihjcGF0aC5kYXRhKCksIE9fUkRPTkxZLCAwKTsKICAg
ICBTYWx0IHNhbHQ7CiAgICAgYXV0byBieXRlc1JlYWQgPSByZWFkKGZkLCBzYWx0LmRhdGEoKSwg
c2FsdC5zaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5jcHAKaW5kZXggMjViZWY3ZjkyZThl
YjM2NmE5NGY0YmNkMzc5ODNiMTZhOWRlMzUwOC4uYjBiMmU3MTVlNjVkZDNhOTEzY2Y3MGQ3MDM2
NWE0NTBiYmViOTk2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uY3BwCkBAIC0yNyw4ICsyNyw4
IEBACiAjaW5jbHVkZSAiTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5oIgogCiAjaW5jbHVkZSAiTG9n
Z2luZy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9B
c3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYv
RnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKQEAgLTcwLDcgKzcw
LDcgQEAgc3RhdGljIERpcmVjdG9yeUVudHJ5VHlwZSBkaXJlY3RvcnlFbnRyeVR5cGUodWludDhf
dCBkdHlwZSkKIHZvaWQgdHJhdmVyc2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25z
dCBGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBEaXJlY3RvcnlFbnRyeVR5cGUpPiYgZnVu
Y3Rpb24pCiB7CiAjaWYgIU9TKFdJTkRPV1MpCi0gICAgRElSKiBkaXIgPSBvcGVuZGlyKFdlYkNv
cmU6OkZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCkpOwor
ICAgIERJUiogZGlyID0gb3BlbmRpcihGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24ocGF0aCkuZGF0YSgpKTsKICAgICBpZiAoIWRpcikKICAgICAgICAgcmV0dXJuOwogICAgIGRp
cmVudCogZHA7CkBAIC05NCwxMCArOTQsMTAgQEAgdm9pZCB0cmF2ZXJzZURpcmVjdG9yeShjb25z
dCBTdHJpbmcmIHBhdGgsIGNvbnN0IEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIEQKIHZv
aWQgZGVsZXRlRGlyZWN0b3J5UmVjdXJzaXZlbHkoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAg
IHRyYXZlcnNlRGlyZWN0b3J5KHBhdGgsIFsmcGF0aF0oY29uc3QgU3RyaW5nJiBuYW1lLCBEaXJl
Y3RvcnlFbnRyeVR5cGUgdHlwZSkgewotICAgICAgICBTdHJpbmcgZW50cnlQYXRoID0gV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhdGgsIG5hbWUpOworICAg
ICAgICBTdHJpbmcgZW50cnlQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KHBhdGgsIG5hbWUpOwogICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgICAgY2FzZSBE
aXJlY3RvcnlFbnRyeVR5cGU6OkZpbGU6Ci0gICAgICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVt
OjpkZWxldGVGaWxlKGVudHJ5UGF0aCk7CisgICAgICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVG
aWxlKGVudHJ5UGF0aCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBEaXJlY3Rv
cnlFbnRyeVR5cGU6OkRpcmVjdG9yeToKICAgICAgICAgICAgIGRlbGV0ZURpcmVjdG9yeVJlY3Vy
c2l2ZWx5KGVudHJ5UGF0aCk7CkBAIC0xMDUsMTkgKzEwNSwxOSBAQCB2b2lkIGRlbGV0ZURpcmVj
dG9yeVJlY3Vyc2l2ZWx5KGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICAgICAgLy8gVGhpcyBkb2Vz
bid0IGZvbGxvdyBzeW1saW5rcy4KICAgICAgICAgfQogICAgIH0pOwotICAgIFdlYkNvcmU6OkZp
bGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KHBhdGgpOworICAgIEZpbGVTeXN0ZW06OmRl
bGV0ZUVtcHR5RGlyZWN0b3J5KHBhdGgpOwogfQogCiBGaWxlVGltZXMgZmlsZVRpbWVzKGNvbnN0
IFN0cmluZyYgcGF0aCkKIHsKICNpZiBIQVZFKFNUQVRfQklSVEhUSU1FKQogICAgIHN0cnVjdCBz
dGF0IGZpbGVJbmZvOwotICAgIGlmIChzdGF0KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCksICZmaWxlSW5mbykpCisgICAgaWYgKHN0YXQo
RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSwgJmZpbGVJ
bmZvKSkKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICByZXR1cm4geyBXYWxsVGltZTo6ZnJvbVJh
d1NlY29uZHMoZmlsZUluZm8uc3RfYmlydGh0aW1lKSwgV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRz
KGZpbGVJbmZvLnN0X210aW1lKSB9OwogI2VsaWYgVVNFKFNPVVApCiAgICAgLy8gVGhlcmUncyBu
byBzdF9iaXJ0aHRpbWUgaW4gc29tZSBvcGVyYXRpbmcgc3lzdGVtcyBsaWtlIExpbnV4LCBzbyB3
ZSB1c2UgeGF0dHJzIHRvIHNldC9nZXQgdGhlIGNyZWF0aW9uIHRpbWUuCi0gICAgR1JlZlB0cjxH
RmlsZT4gZmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKFdlYkNvcmU6OkZpbGVT
eXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCkpKTsKKyAgICBHUmVm
UHRyPEdGaWxlPiBmaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoRmlsZVN5c3Rl
bTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSkpOwogICAgIEdSZWZQdHI8
R0ZpbGVJbmZvPiBmaWxlSW5mbyA9IGFkb3B0R1JlZihnX2ZpbGVfcXVlcnlfaW5mbyhmaWxlLmdl
dCgpLCAieGF0dHI6OmJpcnRodGltZSx0aW1lOjptb2RpZmllZCIsIEdfRklMRV9RVUVSWV9JTkZP
X05PTkUsIG51bGxwdHIsIG51bGxwdHIpKTsKICAgICBpZiAoIWZpbGVJbmZvKQogICAgICAgICBy
ZXR1cm4geyB9OwpAQCAtMTQxLDcgKzE0MSw3IEBAIHZvaWQgdXBkYXRlRmlsZU1vZGlmaWNhdGlv
blRpbWVJZk5lZWRlZChjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgfQogI2lmICFPUyhXSU5ET1dT
KQogICAgIC8vIFRoaXMgcmVhbGx5IHVwZGF0ZXMgYm90aCB0aGUgYWNjZXNzIHRpbWUgYW5kIHRo
ZSBtb2RpZmljYXRpb24gdGltZS4KLSAgICB1dGltZXMoV2ViQ29yZTo6RmlsZVN5c3RlbTo6Zmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSwgbnVsbHB0cik7CisgICAgdXRpbWVz
KEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCksIG51bGxw
dHIpOwogI2VuZGlmCiB9CiAKQEAgLTE1Niw3ICsxNTYsNyBAQCBib29sIGlzU2FmZVRvVXNlTWVt
b3J5TWFwRm9yUGF0aChjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgYXR0cmxpc3QgYXR0ckxpc3Qg
PSB7IH07CiAgICAgYXR0ckxpc3QuYml0bWFwY291bnQgPSBBVFRSX0JJVF9NQVBfQ09VTlQ7CiAg
ICAgYXR0ckxpc3QuY29tbW9uYXR0ciA9IEFUVFJfQ01OX0RBVEFfUFJPVEVDVF9GTEFHUzsKLSAg
ICBpbnQzMl90IGVycm9yID0gZ2V0YXR0cmxpc3QoV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSwgJmF0dHJMaXN0LCAmYXR0ckJ1ZmZlciwg
c2l6ZW9mKGF0dHJCdWZmZXIpLCBGU09QVF9OT0ZPTExPVyk7CisgICAgaW50MzJfdCBlcnJvciA9
IGdldGF0dHJsaXN0KEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5k
YXRhKCksICZhdHRyTGlzdCwgJmF0dHJCdWZmZXIsIHNpemVvZihhdHRyQnVmZmVyKSwgRlNPUFRf
Tk9GT0xMT1cpOwogICAgIGlmIChlcnJvcikgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihO
ZXR3b3JrLCAiVW5hYmxlIHRvIGdldCBjYWNoZSBkaXJlY3RvcnkgcHJvdGVjdGlvbiBjbGFzcywg
ZGlzYWJsaW5nIHVzZSBvZiBzaGFyZWQgbWFwcGVkIG1lbW9yeSIpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZUZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5oCmluZGV4IDdkY2NlNmM0YzM2NzI4ZTkzMTU4MzNh
NTMyOWJkNTZkNWM0MTJiOGEuLjE4MzFhMzUxYzliMGZmNTA1ZGY5YWRjN2Y3YzAzYWY3MDFkNmM4
ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlRmlsZVN5c3RlbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5oCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEg
b25jZQogCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8d3RmL0Zp
bGVTeXN0ZW0uaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiBuYW1lc3BhY2UgTmV0d29ya0NhY2hl
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlSU9DaGFubmVsQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbENvY29hLm1tCmluZGV4IDM2OWJjZjk3M2YyZGNlZTBh
M2Q0Mzk2MzQ1MzcwYjY0NjIxZTlmMDguLmM2NTIxNjRjYTE4OGEwN2RhNTdiY2RlNzVmM2EyMjUy
ZTE4MmYwODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlSU9DaGFubmVsQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxDb2NvYS5tbQpAQCAtNDEsNyArNDEs
NyBAQCBJT0NoYW5uZWw6OklPQ2hhbm5lbChjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBUeXBlIHR5
cGUpCiAgICAgOiBtX3BhdGgoZmlsZVBhdGgpCiAgICAgLCBtX3R5cGUodHlwZSkKIHsKLSAgICBh
dXRvIHBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
ZmlsZVBhdGgpOworICAgIGF1dG8gcGF0aCA9IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihmaWxlUGF0aCk7CiAgICAgaW50IG9mbGFnOwogICAgIG1vZGVfdCBtb2RlOwogICAg
IGJvb2wgdXNlTG93SU9Qcmlvcml0eSA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxTb3VwLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsU291
cC5jcHAKaW5kZXggNTM5MmM3OTA1NjlmZDY2NTdhMjFhMjYyMGNiMDUxZWZiZWVmMDQ1OS4uYjU2
Zjk2NTUzMTJjZGFkMGMxMDhkY2NjNmVmMTcyOTk1YWVkMWE1YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxTb3VwLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlP
Q2hhbm5lbFNvdXAuY3BwCkBAIC00MSw3ICs0MSw3IEBAIElPQ2hhbm5lbDo6SU9DaGFubmVsKGNv
bnN0IFN0cmluZyYgZmlsZVBhdGgsIFR5cGUgdHlwZSkKICAgICA6IG1fcGF0aChmaWxlUGF0aCkK
ICAgICAsIG1fdHlwZSh0eXBlKQogewotICAgIGF1dG8gcGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0
ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWxlUGF0aCk7CisgICAgYXV0byBwYXRoID0g
RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVQYXRoKTsKICAgICBHUmVm
UHRyPEdGaWxlPiBmaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgocGF0aC5kYXRh
KCkpKTsKICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAgIGNhc2UgVHlwZTo6Q3JlYXRlOiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZVN0YXRpc3RpY3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTdGF0aXN0aWNzLmNwcAppbmRleCBiNGExMzE0ZWI0YjE1ZWUwMzMyZjc0ZTkyMWUy
ZmM4NzE5MDY0YzM3Li42MWJlZjFlMTFjM2NmODM3NWY3MzkyNWI3MjNiOTE2ZmIzMWViMzdlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZVN0YXRpc3RpY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3RhdGlzdGljcy5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgc3RkOjp1bmlxdWVf
cHRyPFN0YXRpc3RpY3M+IFN0YXRpc3RpY3M6Om9wZW4oQ2FjaGUmIGNhY2hlLCBjb25zdCBTdHJp
bmcmIGNhY2hlUGEKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgU3Ry
aW5nIGRhdGFiYXNlUGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChjYWNoZVBhdGgsIFN0YXRpc3RpY3NEYXRhYmFzZU5hbWUpOworICAgIFN0cmluZyBk
YXRhYmFzZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY2FjaGVQ
YXRoLCBTdGF0aXN0aWNzRGF0YWJhc2VOYW1lKTsKICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxTdGF0aXN0aWNzPihjYWNoZSwgZGF0YWJhc2VQYXRoKTsKIH0KIApAQCAtOTgsNyArOTgsNyBA
QCB2b2lkIFN0YXRpc3RpY3M6OmluaXRpYWxpemUoY29uc3QgU3RyaW5nJiBkYXRhYmFzZVBhdGgp
CiAgICAgc2VyaWFsQmFja2dyb3VuZElPUXVldWUoKS5kaXNwYXRjaChbdGhpcywgZGF0YWJhc2VQ
YXRoID0gZGF0YWJhc2VQYXRoLmlzb2xhdGVkQ29weSgpLCBuZXR3b3JrQ2FjaGVQYXRoID0gbV9j
YWNoZS5yZWNvcmRzUGF0aCgpLCBzdGFydFRpbWVdIHsKICAgICAgICAgV2ViQ29yZTo6U1FMaXRl
VHJhbnNhY3Rpb25JblByb2dyZXNzQXV0b0NvdW50ZXIgdHJhbnNhY3Rpb25Db3VudGVyOwogCi0g
ICAgICAgIGlmICghV2ViQ29yZTo6RmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKFdlYkNv
cmU6OkZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUoZGF0YWJhc2VQYXRoKSkpCisgICAgICAgIGlm
ICghRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5h
bWUoZGF0YWJhc2VQYXRoKSkpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgTE9HKE5l
dHdvcmtDYWNoZSwgIihOZXR3b3JrUHJvY2VzcykgT3BlbmluZyBuZXR3b3JrIGNhY2hlIHN0YXRp
c3RpY3MgZGF0YWJhc2UgYXQgJXMuLi4iLCBkYXRhYmFzZVBhdGgudXRmOCgpLmRhdGEoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVTdG9yYWdlLmNwcAppbmRleCA0ZWE3NDMwZmEyMDQ0ZTkwMTRhODk5MDRkNWJiYzFlYjY1
Yjc5Y2M2Li5jMjZhYTFiOTZjNzEzYTgwMDM3ZmQxYzU3ODY1ZGI5NzJiNjRhZWVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3Jh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlU3RvcmFnZS5jcHAKQEAgLTE0NSwyOSArMTQ1LDI5IEBAIHB1YmxpYzoKIHN0YXRpYyBTdHJp
bmcgbWFrZVZlcnNpb25lZERpcmVjdG9yeVBhdGgoY29uc3QgU3RyaW5nJiBiYXNlRGlyZWN0b3J5
UGF0aCkKIHsKICAgICBTdHJpbmcgdmVyc2lvblN1YmRpcmVjdG9yeSA9IHZlcnNpb25EaXJlY3Rv
cnlQcmVmaXggKyBTdHJpbmc6Om51bWJlcihTdG9yYWdlOjp2ZXJzaW9uKTsKLSAgICByZXR1cm4g
V2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGJhc2VEaXJlY3Rv
cnlQYXRoLCB2ZXJzaW9uU3ViZGlyZWN0b3J5KTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGJhc2VEaXJlY3RvcnlQYXRoLCB2ZXJzaW9uU3ViZGlyZWN0
b3J5KTsKIH0KIAogc3RhdGljIFN0cmluZyBtYWtlUmVjb3Jkc0RpcmVjdG9yeVBhdGgoY29uc3Qg
U3RyaW5nJiBiYXNlRGlyZWN0b3J5UGF0aCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1ha2VWZXJzaW9uZWREaXJlY3RvcnlQYXRo
KGJhc2VEaXJlY3RvcnlQYXRoKSwgcmVjb3Jkc0RpcmVjdG9yeU5hbWUpOworICAgIHJldHVybiBG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobWFrZVZlcnNpb25lZERpcmVjdG9y
eVBhdGgoYmFzZURpcmVjdG9yeVBhdGgpLCByZWNvcmRzRGlyZWN0b3J5TmFtZSk7CiB9CiAKIHN0
YXRpYyBTdHJpbmcgbWFrZUJsb2JEaXJlY3RvcnlQYXRoKGNvbnN0IFN0cmluZyYgYmFzZURpcmVj
dG9yeVBhdGgpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChtYWtlVmVyc2lvbmVkRGlyZWN0b3J5UGF0aChiYXNlRGlyZWN0b3J5UGF0
aCksIGJsb2JzRGlyZWN0b3J5TmFtZSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChtYWtlVmVyc2lvbmVkRGlyZWN0b3J5UGF0aChiYXNlRGlyZWN0b3J5
UGF0aCksIGJsb2JzRGlyZWN0b3J5TmFtZSk7CiB9CiAKIHN0YXRpYyBTdHJpbmcgbWFrZVNhbHRG
aWxlUGF0aChjb25zdCBTdHJpbmcmIGJhc2VEaXJlY3RvcnlQYXRoKQogewotICAgIHJldHVybiBX
ZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobWFrZVZlcnNpb25l
ZERpcmVjdG9yeVBhdGgoYmFzZURpcmVjdG9yeVBhdGgpLCBzYWx0RmlsZU5hbWUpOworICAgIHJl
dHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobWFrZVZlcnNpb25lZERp
cmVjdG9yeVBhdGgoYmFzZURpcmVjdG9yeVBhdGgpLCBzYWx0RmlsZU5hbWUpOwogfQogCiBSZWZQ
dHI8U3RvcmFnZT4gU3RvcmFnZTo6b3Blbihjb25zdCBTdHJpbmcmIGNhY2hlUGF0aCwgTW9kZSBt
b2RlKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBpZiAoIVdlYkNv
cmU6OkZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhtYWtlVmVyc2lvbmVkRGlyZWN0b3J5
UGF0aChjYWNoZVBhdGgpKSkKKyAgICBpZiAoIUZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3Rvcmll
cyhtYWtlVmVyc2lvbmVkRGlyZWN0b3J5UGF0aChjYWNoZVBhdGgpKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgYXV0byBzYWx0ID0gcmVhZE9yTWFrZVNhbHQobWFrZVNhbHRGaWxlUGF0
aChjYWNoZVBhdGgpKTsKICAgICBpZiAoIXNhbHQpCkBAIC0xODAsMTMgKzE4MCwxMyBAQCB2b2lk
IHRyYXZlcnNlUmVjb3Jkc0ZpbGVzKGNvbnN0IFN0cmluZyYgcmVjb3Jkc1BhdGgsIGNvbnN0IFN0
cmluZyYgZXhwZWN0ZWRUeXBlLAogICAgIHRyYXZlcnNlRGlyZWN0b3J5KHJlY29yZHNQYXRoLCBb
Jl0oY29uc3QgU3RyaW5nJiBwYXJ0aXRpb25OYW1lLCBEaXJlY3RvcnlFbnRyeVR5cGUgZW50cnlU
eXBlKSB7CiAgICAgICAgIGlmIChlbnRyeVR5cGUgIT0gRGlyZWN0b3J5RW50cnlUeXBlOjpEaXJl
Y3RvcnkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIFN0cmluZyBwYXJ0aXRpb25QYXRo
ID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZHNQ
YXRoLCBwYXJ0aXRpb25OYW1lKTsKKyAgICAgICAgU3RyaW5nIHBhcnRpdGlvblBhdGggPSBGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3Jkc1BhdGgsIHBhcnRpdGlvbk5h
bWUpOwogICAgICAgICB0cmF2ZXJzZURpcmVjdG9yeShwYXJ0aXRpb25QYXRoLCBbJl0oY29uc3Qg
U3RyaW5nJiBhY3R1YWxUeXBlLCBEaXJlY3RvcnlFbnRyeVR5cGUgZW50cnlUeXBlKSB7CiAgICAg
ICAgICAgICBpZiAoZW50cnlUeXBlICE9IERpcmVjdG9yeUVudHJ5VHlwZTo6RGlyZWN0b3J5KQog
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGlmICghZXhwZWN0ZWRUeXBlLmlz
RW1wdHkoKSAmJiBleHBlY3RlZFR5cGUgIT0gYWN0dWFsVHlwZSkKICAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgICAgICBTdHJpbmcgcmVjb3JkRGlyZWN0b3J5UGF0aCA9IFdlYkNvcmU6
OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXJ0aXRpb25QYXRoLCBhY3R1
YWxUeXBlKTsKKyAgICAgICAgICAgIFN0cmluZyByZWNvcmREaXJlY3RvcnlQYXRoID0gRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhcnRpdGlvblBhdGgsIGFjdHVhbFR5cGUp
OwogICAgICAgICAgICAgdHJhdmVyc2VEaXJlY3RvcnkocmVjb3JkRGlyZWN0b3J5UGF0aCwgWyZm
dW5jdGlvbiwgJnJlY29yZERpcmVjdG9yeVBhdGgsICZhY3R1YWxUeXBlXShjb25zdCBTdHJpbmcm
IGZpbGVOYW1lLCBEaXJlY3RvcnlFbnRyeVR5cGUgZW50cnlUeXBlKSB7CiAgICAgICAgICAgICAg
ICAgaWYgKGVudHJ5VHlwZSAhPSBEaXJlY3RvcnlFbnRyeVR5cGU6OkZpbGUgfHwgZmlsZU5hbWUu
bGVuZ3RoKCkgPCBLZXk6Omhhc2hTdHJpbmdMZW5ndGgoKSkKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOwpAQCAtMjA2LDE4ICsyMDYsMTggQEAgc3RhdGljIHZvaWQgZGVsZXRlRW1wdHlSZWNv
cmRzRGlyZWN0b3JpZXMoY29uc3QgU3RyaW5nJiByZWNvcmRzUGF0aCkKICAgICAgICAgICAgIHJl
dHVybjsKIAogICAgICAgICAvLyBEZWxldGUgW3R5cGVdIHN1Yi1mb2xkZXJzLgotICAgICAgICBT
dHJpbmcgcGFydGl0aW9uUGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChyZWNvcmRzUGF0aCwgcGFydGl0aW9uTmFtZSk7CisgICAgICAgIFN0cmluZyBw
YXJ0aXRpb25QYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29y
ZHNQYXRoLCBwYXJ0aXRpb25OYW1lKTsKICAgICAgICAgdHJhdmVyc2VEaXJlY3RvcnkocGFydGl0
aW9uUGF0aCwgWyZwYXJ0aXRpb25QYXRoXShjb25zdCBTdHJpbmcmIHN1YmRpck5hbWUsIERpcmVj
dG9yeUVudHJ5VHlwZSBlbnRyeVR5cGUpIHsKICAgICAgICAgICAgIGlmIChlbnRyeVR5cGUgIT0g
RGlyZWN0b3J5RW50cnlUeXBlOjpEaXJlY3RvcnkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
CiAgICAgICAgICAgICAvLyBMZXQgc3lzdGVtIGZpZ3VyZSBvdXQgaWYgaXQgaXMgcmVhbGx5IGVt
cHR5LgotICAgICAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3Rv
cnkoV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhcnRpdGlv
blBhdGgsIHN1YmRpck5hbWUpKTsKKyAgICAgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5
RGlyZWN0b3J5KEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXJ0aXRpb25Q
YXRoLCBzdWJkaXJOYW1lKSk7CiAgICAgICAgIH0pOwogCiAgICAgICAgIC8vIERlbGV0ZSBbUGFy
dGl0aW9uXSBmb2xkZXJzLgogICAgICAgICAvLyBMZXQgc3lzdGVtIGZpZ3VyZSBvdXQgaWYgaXQg
aXMgcmVhbGx5IGVtcHR5LgotICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVFbXB0
eURpcmVjdG9yeShXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
cmVjb3Jkc1BhdGgsIHBhcnRpdGlvbk5hbWUpKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRl
RW1wdHlEaXJlY3RvcnkoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29y
ZHNQYXRoLCBwYXJ0aXRpb25OYW1lKSk7CiAgICAgfSk7CiB9CiAKQEAgLTMwMCwxMSArMzAwLDEx
IEBAIHZvaWQgU3RvcmFnZTo6c3luY2hyb25pemUoKQogCiAgICAgICAgIFN0cmluZyBhbnlUeXBl
OwogICAgICAgICB0cmF2ZXJzZVJlY29yZHNGaWxlcyhyZWNvcmRzUGF0aCgpLCBhbnlUeXBlLCBb
Jl0oY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBoYXNoU3RyaW5nLCBjb25z
dCBTdHJpbmcmIHR5cGUsIGJvb2wgaXNCbG9iLCBjb25zdCBTdHJpbmcmIHJlY29yZERpcmVjdG9y
eVBhdGgpIHsKLSAgICAgICAgICAgIGF1dG8gZmlsZVBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3JkRGlyZWN0b3J5UGF0aCwgZmlsZU5hbWUp
OworICAgICAgICAgICAgYXV0byBmaWxlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChyZWNvcmREaXJlY3RvcnlQYXRoLCBmaWxlTmFtZSk7CiAKICAgICAgICAgICAg
IEtleTo6SGFzaFR5cGUgaGFzaDsKICAgICAgICAgICAgIGlmICghS2V5OjpzdHJpbmdUb0hhc2go
aGFzaFN0cmluZywgaGFzaCkpIHsKLSAgICAgICAgICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVt
OjpkZWxldGVGaWxlKGZpbGVQYXRoKTsKKyAgICAgICAgICAgICAgICBGaWxlU3lzdGVtOjpkZWxl
dGVGaWxlKGZpbGVQYXRoKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9
CiAKQEAgLTMxOCw3ICszMTgsNyBAQCB2b2lkIFN0b3JhZ2U6OnN5bmNocm9uaXplKCkKIAogICAg
ICAgICAgICAgaWYgKHNob3VsZENvbXB1dGVFeGFjdFJlY29yZHNTaXplKSB7CiAgICAgICAgICAg
ICAgICAgbG9uZyBsb25nIGZpbGVTaXplID0gMDsKLSAgICAgICAgICAgICAgICBXZWJDb3JlOjpG
aWxlU3lzdGVtOjpnZXRGaWxlU2l6ZShmaWxlUGF0aCwgZmlsZVNpemUpOworICAgICAgICAgICAg
ICAgIEZpbGVTeXN0ZW06OmdldEZpbGVTaXplKGZpbGVQYXRoLCBmaWxlU2l6ZSk7CiAgICAgICAg
ICAgICAgICAgcmVjb3Jkc1NpemUgKz0gZmlsZVNpemU7CiAgICAgICAgICAgICB9CiAKQEAgLTM4
MSwxMiArMzgxLDEyIEBAIGJvb2wgU3RvcmFnZTo6bWF5Q29udGFpbkJsb2IoY29uc3QgS2V5JiBr
ZXkpIGNvbnN0CiBTdHJpbmcgU3RvcmFnZTo6cmVjb3JkRGlyZWN0b3J5UGF0aEZvcktleShjb25z
dCBLZXkmIGtleSkgY29uc3QKIHsKICAgICBBU1NFUlQoIWtleS50eXBlKCkuaXNFbXB0eSgpKTsK
LSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmRzUGF0
aCgpLCBrZXkucGFydGl0aW9uSGFzaEFzU3RyaW5nKCkpLCBrZXkudHlwZSgpKTsKKyAgICByZXR1
cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmRzUGF0aCgpLCBrZXkucGFydGl0aW9uSGFzaEFzU3Ry
aW5nKCkpLCBrZXkudHlwZSgpKTsKIH0KIAogU3RyaW5nIFN0b3JhZ2U6OnJlY29yZFBhdGhGb3JL
ZXkoY29uc3QgS2V5JiBrZXkpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmREaXJlY3RvcnlQYXRoRm9yS2V5KGtl
eSksIGtleS5oYXNoQXNTdHJpbmcoKSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChyZWNvcmREaXJlY3RvcnlQYXRoRm9yS2V5KGtleSksIGtleS5oYXNo
QXNTdHJpbmcoKSk7CiB9CiAKIHN0YXRpYyBTdHJpbmcgYmxvYlBhdGhGb3JSZWNvcmRQYXRoKGNv
bnN0IFN0cmluZyYgcmVjb3JkUGF0aCkKQEAgLTYyOSw3ICs2MjksNyBAQCB2b2lkIFN0b3JhZ2U6
OmRlbGV0ZUZpbGVzKGNvbnN0IEtleSYga2V5KQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNN
YWluKCkpOwogCi0gICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShyZWNvcmRQYXRo
Rm9yS2V5KGtleSkpOworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUocmVjb3JkUGF0aEZvcktl
eShrZXkpKTsKICAgICBtX2Jsb2JTdG9yYWdlLnJlbW92ZShibG9iUGF0aEZvcktleShrZXkpKTsK
IH0KIApAQCAtODA5LDcgKzgwOSw3IEBAIHZvaWQgU3RvcmFnZTo6ZGlzcGF0Y2hXcml0ZU9wZXJh
dGlvbihzdGQ6OnVuaXF1ZV9wdHI8V3JpdGVPcGVyYXRpb24+IHdyaXRlT3BlcmF0CiAgICAgICAg
IGF1dG8gcmVjb3JkRGlyZWN0b3JQYXRoID0gcmVjb3JkRGlyZWN0b3J5UGF0aEZvcktleSh3cml0
ZU9wZXJhdGlvbi5yZWNvcmQua2V5KTsKICAgICAgICAgYXV0byByZWNvcmRQYXRoID0gcmVjb3Jk
UGF0aEZvcktleSh3cml0ZU9wZXJhdGlvbi5yZWNvcmQua2V5KTsKIAotICAgICAgICBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMocmVjb3JkRGlyZWN0b3JQYXRoKTsKKyAg
ICAgICAgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKHJlY29yZERpcmVjdG9yUGF0aCk7
CiAKICAgICAgICAgKyt3cml0ZU9wZXJhdGlvbi5hY3RpdmVDb3VudDsKIApAQCAtOTE3LDcgKzkx
Nyw3IEBAIHZvaWQgU3RvcmFnZTo6dHJhdmVyc2UoY29uc3QgU3RyaW5nJiB0eXBlLCBPcHRpb25T
ZXQ8VHJhdmVyc2VGbGFnPiBmbGFncywgVHJhdmVyCiAgICAgICAgICAgICBpZiAoaXNCbG9iKQog
ICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgYXV0byByZWNvcmRQYXRoID0g
V2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZERpcmVj
dG9yeVBhdGgsIGZpbGVOYW1lKTsKKyAgICAgICAgICAgIGF1dG8gcmVjb3JkUGF0aCA9IEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmREaXJlY3RvcnlQYXRoLCBmaWxl
TmFtZSk7CiAKICAgICAgICAgICAgIGRvdWJsZSB3b3J0aCA9IC0xOwogICAgICAgICAgICAgaWYg
KHRyYXZlcnNlT3BlcmF0aW9uLmZsYWdzICYgVHJhdmVyc2VGbGFnOjpDb21wdXRlV29ydGgpCkBA
IC0xMDA5LDEzICsxMDA5LDEzIEBAIHZvaWQgU3RvcmFnZTo6Y2xlYXIoY29uc3QgU3RyaW5nJiB0
eXBlLCBXYWxsVGltZSBtb2RpZmllZFNpbmNlVGltZSwgQ29tcGxldGlvbkhhCiAgICAgaW9RdWV1
ZSgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG1vZGlm
aWVkU2luY2VUaW1lLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpLCB0eXBlID0gdHlwZS5pc29sYXRlZENvcHkoKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGF1
dG8gcmVjb3Jkc1BhdGggPSB0aGlzLT5yZWNvcmRzUGF0aCgpOwogICAgICAgICB0cmF2ZXJzZVJl
Y29yZHNGaWxlcyhyZWNvcmRzUGF0aCwgdHlwZSwgW21vZGlmaWVkU2luY2VUaW1lXShjb25zdCBT
dHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIGhhc2hTdHJpbmcsIGNvbnN0IFN0cmluZyYg
dHlwZSwgYm9vbCBpc0Jsb2IsIGNvbnN0IFN0cmluZyYgcmVjb3JkRGlyZWN0b3J5UGF0aCkgewot
ICAgICAgICAgICAgYXV0byBmaWxlUGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChyZWNvcmREaXJlY3RvcnlQYXRoLCBmaWxlTmFtZSk7CisgICAgICAg
ICAgICBhdXRvIGZpbGVQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KHJlY29yZERpcmVjdG9yeVBhdGgsIGZpbGVOYW1lKTsKICAgICAgICAgICAgIGlmIChtb2RpZmll
ZFNpbmNlVGltZSA+IC1XYWxsVGltZTo6aW5maW5pdHkoKSkgewogICAgICAgICAgICAgICAgIGF1
dG8gdGltZXMgPSBmaWxlVGltZXMoZmlsZVBhdGgpOwogICAgICAgICAgICAgICAgIGlmICh0aW1l
cy5tb2RpZmljYXRpb24gPCBtb2RpZmllZFNpbmNlVGltZSkKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6
ZGVsZXRlRmlsZShmaWxlUGF0aCk7CisgICAgICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxl
KGZpbGVQYXRoKTsKICAgICAgICAgfSk7CiAKICAgICAgICAgZGVsZXRlRW1wdHlSZWNvcmRzRGly
ZWN0b3JpZXMocmVjb3Jkc1BhdGgpOwpAQCAtMTA4OSw3ICsxMDg5LDcgQEAgdm9pZCBTdG9yYWdl
OjpzaHJpbmsoKQogICAgICAgICAgICAgaWYgKGlzQmxvYikKICAgICAgICAgICAgICAgICByZXR1
cm47CiAKLSAgICAgICAgICAgIGF1dG8gcmVjb3JkUGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmREaXJlY3RvcnlQYXRoLCBmaWxlTmFtZSk7
CisgICAgICAgICAgICBhdXRvIHJlY29yZFBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQocmVjb3JkRGlyZWN0b3J5UGF0aCwgZmlsZU5hbWUpOwogICAgICAgICAgICAg
YXV0byBibG9iUGF0aCA9IGJsb2JQYXRoRm9yUmVjb3JkUGF0aChyZWNvcmRQYXRoKTsKIAogICAg
ICAgICAgICAgYXV0byB0aW1lcyA9IGZpbGVUaW1lcyhyZWNvcmRQYXRoKTsKQEAgLTExMDEsNyAr
MTEwMSw3IEBAIHZvaWQgU3RvcmFnZTo6c2hyaW5rKCkKICAgICAgICAgICAgIExPRyhOZXR3b3Jr
Q2FjaGVTdG9yYWdlLCAiRGVsZXRpb24gcHJvYmFiaWxpdHk9JWYgYm9keUxpbmtDb3VudD0lZCBz
aG91bGREZWxldGU9JWQiLCBwcm9iYWJpbGl0eSwgYm9keVNoYXJlQ291bnQsIHNob3VsZERlbGV0
ZSk7CiAKICAgICAgICAgICAgIGlmIChzaG91bGREZWxldGUpIHsKLSAgICAgICAgICAgICAgICBX
ZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVGaWxlKHJlY29yZFBhdGgpOworICAgICAgICAgICAg
ICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUocmVjb3JkUGF0aCk7CiAgICAgICAgICAgICAgICAg
bV9ibG9iU3RvcmFnZS5yZW1vdmUoYmxvYlBhdGgpOwogICAgICAgICAgICAgfQogICAgICAgICB9
KTsKQEAgLTExMzcsNyArMTEzNyw3IEBAIHZvaWQgU3RvcmFnZTo6ZGVsZXRlT2xkVmVyc2lvbnMo
KQogICAgICAgICAgICAgICAgIHJldHVybjsKICNlbmRpZgogCi0gICAgICAgICAgICBhdXRvIG9s
ZFZlcnNpb25QYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KGNhY2hlUGF0aCwgc3ViZGlyTmFtZSk7CisgICAgICAgICAgICBhdXRvIG9sZFZlcnNpb25Q
YXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNhY2hlUGF0aCwgc3Vi
ZGlyTmFtZSk7CiAgICAgICAgICAgICBMT0coTmV0d29ya0NhY2hlU3RvcmFnZSwgIihOZXR3b3Jr
UHJvY2VzcykgZGVsZXRpbmcgb2xkIGNhY2hlIHZlcnNpb24sIHBhdGggJXMiLCBvbGRWZXJzaW9u
UGF0aC51dGY4KCkuZGF0YSgpKTsKIAogICAgICAgICAgICAgZGVsZXRlRGlyZWN0b3J5UmVjdXJz
aXZlbHkob2xkVmVyc2lvblBhdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KaW5kZXggYTYxZjkzODVh
Njc3NGJkMGI3NWM1Mzk2OWNlMTMyODc4YjNiOTczZi4uZjQ3YmQ4MTk4ODMyNjZhYTY3OGM0ODdm
NmIzNTM4ZWM1ZGFiYmU0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCkBAIC0zNiwxMSArMzYsMTEg
QEAKICNpbXBvcnQgIk5ldHdvcmtTZXNzaW9uQ29jb2EuaCIKICNpbXBvcnQgIldlYkNvcmVBcmd1
bWVudENvZGVycy5oIgogI2ltcG9ydCA8V2ViQ29yZS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5o
PgotI2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgog
I2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbXBvcnQgPHBhbC9zcGkvY2Yv
Q0ZOZXR3b3JrU1BJLmg+CisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8d3Rm
L01haW5UaHJlYWQuaD4KICNpbXBvcnQgPHd0Zi9Qcm9jZXNzUHJpdmlsZWdlLmg+CiAjaW1wb3J0
IDx3dGYvdGV4dC9CYXNlNjQuaD4KQEAgLTQwMyw4ICs0MDMsOCBAQCB2b2lkIE5ldHdvcmtEYXRh
VGFza0NvY29hOjpzZXRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbihjb25zdCBXVEY6OlN0cmluZyYg
ZmlsZW5hbQogCiAgICAgbV90YXNrLmdldCgpLl9wYXRoVG9Eb3dubG9hZFRhc2tGaWxlID0gbV9w
ZW5kaW5nRG93bmxvYWRMb2NhdGlvbjsKIAotICAgIGlmIChhbGxvd092ZXJ3cml0ZSAmJiBXZWJD
b3JlOjpGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRpb24pKQot
ICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGZpbGVuYW1lKTsKKyAgICBp
ZiAoYWxsb3dPdmVyd3JpdGUgJiYgRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhtX3BlbmRpbmdEb3du
bG9hZExvY2F0aW9uKSkKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShmaWxlbmFtZSk7
CiB9CiAKIGJvb2wgTmV0d29ya0RhdGFUYXNrQ29jb2E6OnRyeVBhc3N3b3JkQmFzZWRBdXRoZW50
aWNhdGlvbihjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdl
LCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29j
b2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9u
Q29jb2EubW0KaW5kZXggOTMyOTM1ZDg5NWJkYjg5MzIxZjdjOGFiODIxNDE5M2I0MmNlNWE1Ny4u
NDUyMWJmNzg1MDRjZTRiNzRkNDk5NTRhMWM0Y2NkZWE1N2E1OWMxOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2Nv
YS5tbQpAQCAtNzc5LDcgKzc3OSw3IEBAIC0gKHZvaWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9u
ICopc2Vzc2lvbiBkYXRhVGFzazooTlNVUkxTZXNzaW9uRGF0YVRhc2sgKilkYXRhCiAgICAgICAg
IGF1dG8mIGRvd25sb2FkTWFuYWdlciA9IF9zZXNzaW9uLT5uZXR3b3JrUHJvY2VzcygpLmRvd25s
b2FkTWFuYWdlcigpOwogICAgICAgICBhdXRvIGRvd25sb2FkID0gc3RkOjptYWtlX3VuaXF1ZTxX
ZWJLaXQ6OkRvd25sb2FkPihkb3dubG9hZE1hbmFnZXIsIGRvd25sb2FkSUQsIGRvd25sb2FkVGFz
aywgX3Nlc3Npb24tPnNlc3Npb25JRCgpLCBuZXR3b3JrRGF0YVRhc2stPnN1Z2dlc3RlZEZpbGVu
YW1lKCkpOwogICAgICAgICBuZXR3b3JrRGF0YVRhc2stPnRyYW5zZmVyU2FuZGJveEV4dGVuc2lv
blRvRG93bmxvYWQoKmRvd25sb2FkKTsKLSAgICAgICAgQVNTRVJUKFdlYkNvcmU6OkZpbGVTeXN0
ZW06OmZpbGVFeGlzdHMobmV0d29ya0RhdGFUYXNrLT5wZW5kaW5nRG93bmxvYWRMb2NhdGlvbigp
KSk7CisgICAgICAgIEFTU0VSVChGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG5ldHdvcmtEYXRhVGFz
ay0+cGVuZGluZ0Rvd25sb2FkTG9jYXRpb24oKSkpOwogICAgICAgICBkb3dubG9hZC0+ZGlkQ3Jl
YXRlRGVzdGluYXRpb24obmV0d29ya0RhdGFUYXNrLT5wZW5kaW5nRG93bmxvYWRMb2NhdGlvbigp
KTsKICAgICAgICAgZG93bmxvYWRNYW5hZ2VyLmRhdGFUYXNrQmVjYW1lRG93bmxvYWRUYXNrKGRv
d25sb2FkSUQsIFdURk1vdmUoZG93bmxvYWQpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nlc3NNYWMubW0gYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUHJvY2Vzc01hYy5tbQppbmRleCAzN2YzYjdmNzJh
YTUwMmIzMmJhODExZWM5YmEwOGY1ZTI1NTg2M2IyLi5mNWJmMDRhZTQ2NWY2MmI3NGQyYjE4YTgx
NzU5MDFhMTZlYTU1NWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L21hYy9OZXR3b3JrUHJvY2Vzc01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL21hYy9OZXR3b3JrUHJvY2Vzc01hYy5tbQpAQCAtMzgsMTIgKzM4LDEyIEBACiAjaW1wb3J0
ICJTdHJpbmdVdGlsaXRpZXMuaCIKICNpbXBvcnQgIldLRm91bmRhdGlvbi5oIgogI2ltcG9ydCA8
V2ViQ29yZS9DZXJ0aWZpY2F0ZUluZm8uaD4KLSNpbXBvcnQgPFdlYkNvcmUvRmlsZVN5c3RlbS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+CiAjaW1wb3J0IDxub3RpZnku
aD4KICNpbXBvcnQgPHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg+CiAjaW1wb3J0IDxwYWwvc3Bp
L2NvY29hL0xhdW5jaFNlcnZpY2VzU1BJLmg+CiAjaW1wb3J0IDxzeXNleGl0cy5oPgorI2ltcG9y
dCA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIu
aD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCmluZGV4
IDg4MmIxNDVmN2ZjYjEzNDMwNDI4YTJjYmU3M2E1NTMxOTZhOGE0ODQuLjFkMDlmODJiMzA3MjM1
MmRjM2I3MjMxMzllYTk4MWFhNDE2MzJhNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCkBAIC0zMiwxMiAr
MzIsMTIgQEAKICNpbmNsdWRlICJSZXNvdXJjZUNhY2hlc1RvQ2xlYXIuaCIKICNpbmNsdWRlICJX
ZWJDb29raWVNYW5hZ2VyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DZXJ0aWZpY2F0ZUluZm8uaD4K
LSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
b3VwTmV0d29ya1Nlc3Npb24uaD4KICNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KKyNpbmNsdWRl
IDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9SQU1TaXplLmg+CiAjaW5jbHVkZSA8
d3RmL2dsaWIvR1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KQEAg
LTEwOSw3ICsxMDksNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVO
ZXR3b3JrUHJvY2Vzcyhjb25zdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aQogICAgIEFTU0VSVCghcGFy
YW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnkuaXNFbXB0eSgpKTsKICAgICBtX2Rpc2tDYWNoZURp
cmVjdG9yeSA9IHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5OwogCi0gICAgU291cE5ldHdv
cmtTZXNzaW9uOjpjbGVhck9sZFNvdXBDYWNoZShXZWJDb3JlOjpGaWxlU3lzdGVtOjpkaXJlY3Rv
cnlOYW1lKG1fZGlza0NhY2hlRGlyZWN0b3J5KSk7CisgICAgU291cE5ldHdvcmtTZXNzaW9uOjpj
bGVhck9sZFNvdXBDYWNoZShGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKG1fZGlza0NhY2hlRGly
ZWN0b3J5KSk7CiAKICAgICBPcHRpb25TZXQ8TmV0d29ya0NhY2hlOjpDYWNoZTo6T3B0aW9uPiBj
YWNoZU9wdGlvbnMgeyBOZXR3b3JrQ2FjaGU6OkNhY2hlOjpPcHRpb246OlJlZ2lzdGVyTm90aWZ5
IH07CiAgICAgaWYgKHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlTmV0d29ya0NhY2hlRWZmaWNhY3lM
b2dnaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL3VuaXgvUGx1
Z2luUHJvY2Vzc01haW5Vbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy91bml4
L1BsdWdpblByb2Nlc3NNYWluVW5peC5jcHAKaW5kZXggMmJkMmVkNTlhZTZhMmUyNGIwNzQ4YjAz
Y2ViYzM1NjNjNjY3MTgzZS4uM2FkZTRjOTQzZjA5YjUxZDNjYzNiZWMyY2E5NjMzZjczZDEzNDk2
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJv
Y2Vzc01haW5Vbml4LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvdW5peC9Q
bHVnaW5Qcm9jZXNzTWFpblVuaXguY3BwCkBAIC0zNCw4ICszNCw4IEBACiAjaW5jbHVkZSAiTG9n
Z2luZy5oIgogI2luY2x1ZGUgIk5ldHNjYXBlUGx1Z2luLmgiCiAjaW5jbHVkZSAiUGx1Z2luUHJv
Y2Vzcy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHN0ZGxp
Yi5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKICNpZiBQTEFURk9STShHVEspCiAj
aW5jbHVkZSA8Z3RrL2d0ay5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGVy
c2lzdGVuY3lVdGlscy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QZXJzaXN0ZW5jeVV0aWxz
LmNwcAppbmRleCA1ZGJhOTY4YmQ3ZTBiMzhjM2QyMjY5NGQ2ZDVkMmU2YjA2OWQyYTgxLi5lY2E5
NjQxZDIwNTM0NWM4MTg5NmViNTY1ZGY2MjdmOTVlM2M1MTdhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9QZXJzaXN0ZW5jeVV0aWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9QZXJzaXN0ZW5jeVV0aWxzLmNwcApAQCAtMjcsOCArMjcsOCBAQAogI2luY2x1ZGUgIlBl
cnNpc3RlbmN5VXRpbHMuaCIKIAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlIDxXZWJD
b3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgorI2lu
Y2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KIAogbmFt
ZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5z
L05ldHNjYXBlL3VuaXgvTmV0c2NhcGVQbHVnaW5Nb2R1bGVVbml4LmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvdW5peC9OZXRzY2FwZVBsdWdpbk1vZHVsZVVuaXgu
Y3BwCmluZGV4IGZiMWQ5ZGM5MjZmZDY3Njc5M2Y0NTRhNzRmYTU1MWFlZTU3MGM4ZTUuLjJhNjVk
YTlmYmNiMmYzM2ExZmY1NDEwYmU4ODk4Y2VmMTM3OTkxMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvdW5peC9OZXRzY2FwZVBsdWdpbk1vZHVsZVVu
aXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvdW5peC9O
ZXRzY2FwZVBsdWdpbk1vZHVsZVVuaXguY3BwCkBAIC0zMCwxNiArMzAsMTUgQEAKIAogI2luY2x1
ZGUgIk5ldHNjYXBlQnJvd3NlckZ1bmNzLmgiCiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc1Byb3h5
LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8ZXJybm8uaD4K
ICNpbmNsdWRlIDxmY250bC5oPgogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAjaW5jbHVkZSA8c3lz
L3R5cGVzLmg+CiAjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0u
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIGNsYXNzIFN0ZG91dERldk51bGxSZWRp
cmVjdG9yIHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdp
bnMvdW5peC9QbHVnaW5TZWFyY2hQYXRoLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdp
bnMvdW5peC9QbHVnaW5TZWFyY2hQYXRoLmNwcAppbmRleCBlOGFmOTYwNGNlNTU5NWE0NDRmZThj
YTUwNDVkM2E2MTdhYjIzNjRhLi4yYmQ1NDlhOTVkZmE2NzVjZTQ3ZjU2ZDc4YTU5YjRmNzMxNWEx
MWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL3VuaXgvUGx1Z2lu
U2VhcmNoUGF0aC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy91bml4L1Bs
dWdpblNlYXJjaFBhdGguY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiUGx1Z2luU2VhcmNoUGF0aC5oIgogCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxl
U3lzdGVtLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogbmFtZXNwYWNlIFdlYktp
dCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYk1lbW9yeVNhbXBsZXIuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYk1lbW9y
eVNhbXBsZXIuaAppbmRleCA4MDgxM2ZlYTA1MGYyMDQ5MWJkMWM4YjUwZTkwYjFjYmJiY2FhMzQ0
Li43MjFjZGJmMzg5MjI2NGJjOWZkNzkyYjUwODM4MzBmZjUxOWZjOWJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJNZW1vcnlTYW1wbGVyLmgKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5oCkBAIC01Miw4ICs1Miw4IEBACiAjaWYgRU5BQkxF
KE1FTU9SWV9TQU1QTEVSKQogCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgotI2luY2x1
ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KKyNp
bmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC04Nyw3
ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbml0aWFsaXplVGltZXJzKGRvdWJsZSk7CiAg
ICAgdm9pZCBzYW1wbGVUaW1lckZpcmVkKCk7CiAgICAgdm9pZCBzdG9wVGltZXJGaXJlZCgpOwot
ICAgIHZvaWQgYXBwZW5kQ3VycmVudE1lbW9yeVVzYWdlVG9GaWxlKFdlYkNvcmU6OkZpbGVTeXN0
ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSYpOworICAgIHZvaWQgYXBwZW5kQ3VycmVudE1lbW9yeVVz
YWdlVG9GaWxlKEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSYpOwogICAgIHZvaWQgc2Vu
ZE1lbW9yeVByZXNzdXJlRXZlbnQoKTsKICAgICAKICAgICBTeXN0ZW1NYWxsb2NTdGF0cyBzYW1w
bGVTeXN0ZW1NYWxsb2MoKSBjb25zdDsKQEAgLTk1LDcgKzk1LDcgQEAgcHJpdmF0ZToKICAgICBX
ZWJNZW1vcnlTdGF0aXN0aWNzIHNhbXBsZVdlYktpdCgpIGNvbnN0OwogICAgIFN0cmluZyBwcm9j
ZXNzTmFtZSgpIGNvbnN0OwogICAgIAotICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OlBsYXRmb3Jt
RmlsZUhhbmRsZSBtX3NhbXBsZUxvZ0ZpbGUgeyBXZWJDb3JlOjpGaWxlU3lzdGVtOjppbnZhbGlk
UGxhdGZvcm1GaWxlSGFuZGxlIH07CisgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxl
IG1fc2FtcGxlTG9nRmlsZSB7IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUg
fTsKICAgICBTdHJpbmcgbV9zYW1wbGVMb2dGaWxlUGF0aDsKICAgICBXZWJDb3JlOjpUaW1lciBt
X3NhbXBsZVRpbWVyOwogICAgIFdlYkNvcmU6OlRpbWVyIG1fc3RvcFRpbWVyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ2xpYi9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhHTGliLmNw
cCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2dsaWIvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoR0xpYi5j
cHAKaW5kZXggYTcwYjQxYTA5YTkzMGJiZGMzYjU0MWNlNmE3MDhhZDg5YmJjMmY0Yi4uNGZmMzVk
MzFkZTFkNTcyMzFhNmY2ZTEwMTVhODU1ZDQwZjhjOGMzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvZ2xpYi9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhHTGliLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9nbGliL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aEdMaWIuY3BwCkBAIC0y
NywxMiArMjcsMTEgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQcm9jZXNzRXhl
Y3V0YWJsZVBhdGguaCIKIAotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1
ZGUgPGdsaWIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9n
bGliL0dMaWJVdGlsaXRpZXMuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7Ci11c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAogI2lmIEVOQUJMRShERVZFTE9QRVJfTU9ERSkKIHN0YXRpYyBTdHJpbmcg
Z2V0RXhlY3V0YWJsZVBhdGgoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvaW9z
L0NoaWxkUHJvY2Vzc0lPUy5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9DaGlsZFByb2Nl
c3NJT1MubW0KaW5kZXggODFkNTRmM2JmMDA5ZWZhZjA1ZDQwMmQ2ZjVjZmVhOGQxMGY0YjU2Ny4u
NjlkNTNjZmYzMTRhOTVjYmM0YTgwN2FiOThjOWVjYTgyZmUyYmUyMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvaW9zL0NoaWxkUHJvY2Vzc0lPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9pb3MvQ2hpbGRQcm9jZXNzSU9TLm1tCkBAIC0zMSw3ICszMSw2IEBACiAKICNp
bXBvcnQgIlNhbmRib3hJbml0aWFsaXphdGlvblBhcmFtZXRlcnMuaCIKICNpbXBvcnQgIlhQQ1Nl
cnZpY2VFbnRyeVBvaW50LmgiCi0jaW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbXBv
cnQgPFdlYkNvcmUvRmxvYXRpbmdQb2ludEVudmlyb25tZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1N5c3RlbVZlcnNpb24uaD4KICNpbXBvcnQgPG1hY2gvbWFjaC5oPgpAQCAtMzksNiArMzgsNyBA
QAogI2ltcG9ydCA8cHdkLmg+CiAjaW1wb3J0IDxzdGRsaWIuaD4KICNpbXBvcnQgPHN5c2V4aXRz
Lmg+CisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogCiAjaWYgRU5BQkxFKE1BTlVBTF9TQU5E
Qk9YSU5HKQogI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0NoaWxkUHJvY2Vzc01hYy5tbSBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL21hYy9DaGlsZFByb2Nlc3NNYWMubW0KaW5kZXggM2MzOTRjYzkxNmMwOTky
MGQwMzMzZjJjNGEyNThlNDdmMWU3Yzk3OS4uNzg1MzZhYWU2MGJjZjAyYzkyNjYwYzMyODExYThk
MGY1OGVmZjZmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0NoaWxkUHJv
Y2Vzc01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQ2hpbGRQcm9jZXNzTWFj
Lm1tCkBAIC0zNSw3ICszNSw2IEBACiAjaW1wb3J0ICJXS0ZvdW5kYXRpb24uaCIKICNpbXBvcnQg
IlhQQ1NlcnZpY2VFbnRyeVBvaW50LmgiCiAjaW1wb3J0IDxXZWJDb3JlL0ZpbGVIYW5kbGUuaD4K
LSNpbXBvcnQgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TeXN0ZW1W
ZXJzaW9uLmg+CiAjaW1wb3J0IDxtYWNoLW8vZHlsZC5oPgogI2ltcG9ydCA8bWFjaC9tYWNoLmg+
CkBAIC00Nyw2ICs0Niw3IEBACiAjaW1wb3J0IDxzeXMvc3lzY3RsLmg+CiAjaW1wb3J0IDxzeXNl
eGl0cy5oPgogI2ltcG9ydCA8d3RmL0RhdGFMb2cuaD4KKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVt
Lmg+CiAjaW1wb3J0IDx3dGYvUmFuZG9tTnVtYmVyLmg+CiAjaW1wb3J0IDx3dGYvU2NvcGUuaD4K
ICNpbXBvcnQgPHd0Zi9TeXN0ZW1UcmFjaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9tYWMvU2FuZGJveEV4dGVuc2lvbk1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L21hYy9TYW5kYm94RXh0ZW5zaW9uTWFjLm1tCmluZGV4IDBjZWM5ODVjNzg1Yzc3MzY1OTc3MmQy
NGYxYjZkNTc2ZDcxZDc1ZTEuLmFmYmM2YjJhMTRlNWJmZjBjMTY2NTZiN2MyMDg3N2NiY2RkZDQ1
NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9TYW5kYm94RXh0ZW5zaW9u
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9TYW5kYm94RXh0ZW5zaW9uTWFj
Lm1tCkBAIC0zMSwxMyArMzEsMTIgQEAKICNpbXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIKICNpbXBv
cnQgIkRlY29kZXIuaCIKICNpbXBvcnQgIkVuY29kZXIuaCIKLSNpbXBvcnQgPFdlYkNvcmUvRmls
ZVN5c3RlbS5oPgogI2ltcG9ydCA8c3lzL3N0YXQuaD4KKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVt
Lmg+CiAjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJLmg+CiAjaW1wb3J0IDx3dGYv
dGV4dC9DU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewotdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKIGNsYXNzIFNhbmRib3hFeHRlbnNpb25JbXBsIHsKIHB1YmxpYzoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUu
Y3BwCmluZGV4IDM4ZjQyY2I5MWE1MzhlZGU2OGUyMjU5NDEwNTBmOTZhZjY3Yjk2OTguLjc0MjZi
ZDJiNDU1NGYzZWZlY2NhYmZhNjg5OTZlNTVhYmZlZGExMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcApAQCAt
MzksNiArMzksNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUXVhbGlmaWVkTmFtZS5oPgogI2luY2x1
ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKyNpbmNsdWRl
IDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgpAQCAtNDgs
NyArNDksNyBAQAogCiBuYW1lc3BhY2UgQVBJIHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ6Ok5l
dHdvcmtDYWNoZTsKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOjpGaWxlU3lzdGVtOwordXNpbmcg
bmFtZXNwYWNlIFdURjo6RmlsZVN5c3RlbTsKIAogQ29udGVudFJ1bGVMaXN0U3RvcmUmIENvbnRl
bnRSdWxlTGlzdFN0b3JlOjpsZWdhY3lEZWZhdWx0U3RvcmUoKQogewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElXZWJzaXRlRGF0YVN0b3Jl
Q29jb2EubW0KaW5kZXggNGEyZWMzODcyMzdmZmRjOGNhODk0NzE4NmZmZWQwZDVjYTRlYTc1NC4u
Mzg4NGY0M2MxZTIwYTEyOThiYTg4NTdlYjFiMDkxNTVhOThiMDA3NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJV2Vic2l0ZURhdGFT
dG9yZUNvY29hLm1tCkBAIC0yOCw5ICsyOCw4IEBACiAKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5z
aW9uLmgiCiAjaW5jbHVkZSAiU2FuZGJveFV0aWxpdGllcy5oIgotCiAjaW5jbHVkZSA8Rm91bmRh
dGlvbi9Gb3VuZGF0aW9uLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CisjaW5j
bHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW1w
b3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgpAQCAtMTY5LDcgKzE2OCw3
IEBAIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRJbmRleGVkREJE
YXRhYmFzZURpcmVjdG9yeSgpCiAgICAgLy8gQ3VycmVudGx5LCB0aGUgdG9wIGxldmVsIG9mIHRo
YXQgZGlyZWN0b3J5IGNvbnRhaW5zIGVudGl0aWVzIHJlbGF0ZWQgdG8gV2ViU1FMIGRhdGFiYXNl
cy4KICAgICAvLyBXZSBzaG91bGQgZml4IHRoaXMsIGFuZCBtb3ZlIFdlYlNRTCBpbnRvIGEgc3Vi
ZGlyZWN0b3J5IChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0ODA3
KQogICAgIC8vIEluIHRoZSBtZWFudGltZSwgYW4gZW50aXR5IG5hbWUgcHJlZml4ZWQgd2l0aCB0
aHJlZSB1bmRlcnNjb3JlcyB3aWxsIG5vdCBjb25mbGljdCB3aXRoIGFueSBXZWJTUUwgZW50aXRp
ZXMuCi0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChsZWdhY3lEZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKSwgIl9fX0luZGV4ZWRE
QiIpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobGVn
YWN5RGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCksICJfX19JbmRleGVkREIiKTsKIH0K
IAogV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdExvY2FsU3RvcmFn
ZURpcmVjdG9yeSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9BUElXZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9BUElXZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHAKaW5kZXggZTFjNDUyOWIzZDIxZWU1
OGJmZWZiNWMxOGZlZmI1MTEyMmMwMTYwZi4uZjVhYjkzMWNiZWQzYjc3MWJmM2NlYzgxMmNiNzQy
ZTQ5YmI2ODUzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
QVBJV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcApAQCAtMjYsNyArMjYsNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKIAot
I2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVt
Lmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgogCiAjaWYgUExBVEZPUk0oR1RL
KQpAQCAtNDYsMTIgKzQ2LDEyIEBAIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkKIC8vIFdoeSBpcyBvbmx5IHRoaXMgZGlyZWN0
b3J5IG5hbWVzcGFjZWQgdG8gYSBwYXJ0aWN1bGFyIGFwcGxpY2F0aW9uPwogV1RGOjpTdHJpbmcg
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpCiB7Ci0gICAg
cmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKFdlYkNvcmU6OkZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpz
dHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGdfZ2V0X3ByZ25hbWUoKSksICJXZWJL
aXRDYWNoZSIpKTsKKyAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0
cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfcHJnbmFtZSgpKSwgIldlYktp
dENhY2hlIikpOwogfQogCiBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0Q2Fj
aGVTdG9yYWdlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oZ19nZXRfcHJnbmFtZSgpKSwgIkNhY2hlU3RvcmFnZSIpKTsKKyAgICByZXR1cm4gY2Fj
aGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oRmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oZ19nZXRfcHJnbmFtZSgpKSwgIkNhY2hlU3RvcmFnZSIpKTsKIH0KIAogV1RGOjpTdHJp
bmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkK
QEAgLTkxLDE5ICs5MSwxOSBAQCBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpCiAKIFdURjo6U3RyaW5nIFdlYnNpdGVE
YXRhU3RvcmU6OmNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFdU
Rjo6U3RyaW5nJiBkaXJlY3RvcnlOYW1lKQogewotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5n
RnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihnX2dldF91c2VyX2NhY2hlX2RpcigpKSwgZGly
ZWN0b3J5TmFtZSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGdfZ2V0
X3VzZXJfY2FjaGVfZGlyKCkpLCBkaXJlY3RvcnlOYW1lKTsKIH0KIAogV1RGOjpTdHJpbmcgV2Vi
c2l0ZURhdGFTdG9yZTo6d2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oY29uc3QgV1RGOjpTdHJpbmcmIGRpcmVjdG9yeU5hbWUpCiB7Ci0gICAgcmV0dXJuIFdlYkNv
cmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lz
dGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGdfZ2V0X3VzZXJfZGF0YV9k
aXIoKSksIGRpcmVjdG9yeU5hbWUpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihnX2dldF91c2VyX2RhdGFfZGlyKCkpLCBkaXJlY3RvcnlOYW1lKTsKIH0KIAogV1RGOjpT
dHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJl
Y3RvcnkoKQogewogI2lmIFBMQVRGT1JNKFdQRSkKICAgICBHVW5pcXVlUHRyPGdjaGFyPiBjYWNo
ZURpcmVjdG9yeShnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfY2FjaGVfZGlyKCksICJ3cGUi
LCAiYXBwY2FjaGUiLCBudWxscHRyKSk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06
OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY2FjaGVEaXJlY3RvcnkuZ2V0KCkp
OworICAgIHJldHVybiBGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKGNhY2hlRGlyZWN0b3J5LmdldCgpKTsKICNlbmRpZgogICAgIHJldHVybiBkZWZhdWx0QXBw
bGljYXRpb25DYWNoZURpcmVjdG9yeSgpOwogfQpAQCAtMTEyLDcgKzExMiw3IEBAIFdURjo6U3Ry
aW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3Rvcnko
KQogewogI2lmIFBMQVRGT1JNKFdQRSkKICAgICBHVW5pcXVlUHRyPGNoYXI+IGRpc2tDYWNoZURp
cmVjdG9yeShnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfY2FjaGVfZGlyKCksICJ3cGUiLCAi
Y2FjaGUiLCBudWxscHRyKSk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmlu
Z0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGlza0NhY2hlRGlyZWN0b3J5LmdldCgpKTsK
KyAgICByZXR1cm4gRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihkaXNrQ2FjaGVEaXJlY3RvcnkuZ2V0KCkpOwogI2VuZGlmCiAgICAgcmV0dXJuIGRlZmF1bHRO
ZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKTsKIH0KQEAgLTEyMSw3ICsxMjEsNyBAQCBXVEY6OlN0cmlu
ZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnko
KQogewogI2lmIFBMQVRGT1JNKFdQRSkKICAgICBHVW5pcXVlUHRyPGdjaGFyPiBkYXRhYmFzZURp
cmVjdG9yeShnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfZGF0YV9kaXIoKSwgIndwZSIsICJk
YXRhYmFzZXMiLCBudWxscHRyKSk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0
cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGF0YWJhc2VEaXJlY3RvcnkuZ2V0KCkp
OworICAgIHJldHVybiBGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKGRhdGFiYXNlRGlyZWN0b3J5LmdldCgpKTsKICNlbmRpZgogICAgIHJldHVybiBkZWZhdWx0
V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKTsKIH0KQEAgLTEzMCw3ICsxMzAsNyBAQCBXVEY6OlN0
cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJl
Y3RvcnkoKQogewogI2lmIFBMQVRGT1JNKFdQRSkKICAgICBHVW5pcXVlUHRyPGdjaGFyPiBpbmRl
eGVkREJEYXRhYmFzZURpcmVjdG9yeShnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfZGF0YV9k
aXIoKSwgIndwZSIsICJkYXRhYmFzZXMiLCAiaW5kZXhlZGRiIiwgbnVsbHB0cikpOwotICAgIHJl
dHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKGluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5LmdldCgpKTsKKyAgICByZXR1cm4gRmlsZVN5
c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihpbmRleGVkREJEYXRhYmFz
ZURpcmVjdG9yeS5nZXQoKSk7CiAjZW5kaWYKICAgICByZXR1cm4gZGVmYXVsdEluZGV4ZWREQkRh
dGFiYXNlRGlyZWN0b3J5KCk7CiB9CkBAIC0xMzksNyArMTM5LDcgQEAgV1RGOjpTdHJpbmcgV2Vi
c2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpCiB7CiAj
aWYgUExBVEZPUk0oV1BFKQogICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHN0b3JhZ2VEaXJlY3Rvcnko
Z19idWlsZF9maWxlbmFtZShnX2dldF91c2VyX2RhdGFfZGlyKCksICJ3cGUiLCAibG9jYWxzdG9y
YWdlIiwgbnVsbHB0cikpOwotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdG
cm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHN0b3JhZ2VEaXJlY3RvcnkuZ2V0KCkpOworICAg
IHJldHVybiBGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHN0
b3JhZ2VEaXJlY3RvcnkuZ2V0KCkpOwogI2VuZGlmCiAgICAgcmV0dXJuIGRlZmF1bHRMb2NhbFN0
b3JhZ2VEaXJlY3RvcnkoKTsKIH0KQEAgLTE0OCw3ICsxNDgsNyBAQCBXVEY6OlN0cmluZyBXZWJz
aXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpCiB7CiAjaWYg
UExBVEZPUk0oV1BFKQogICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGNhY2hlRGlyZWN0b3J5KGdfYnVp
bGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9jYWNoZV9kaXIoKSwgIndwZSIsICJtZWRpYWNhY2hlIiwg
bnVsbHB0cikpOwotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNhY2hlRGlyZWN0b3J5LmdldCgpKTsKKyAgICByZXR1cm4g
RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjYWNoZURpcmVj
dG9yeS5nZXQoKSk7CiAjZW5kaWYKICAgICByZXR1cm4gZGVmYXVsdE1lZGlhQ2FjaGVEaXJlY3Rv
cnkoKTsKIH0KQEAgLTE1Nyw3ICsxNTcsNyBAQCBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3Jl
OjpsZWdhY3lEZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpCiB7CiAjaWYgUExBVEZP
Uk0oV1BFKQogICAgIEdVbmlxdWVQdHI8Z2NoYXI+IG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnko
Z19idWlsZF9maWxlbmFtZShnX2dldF91c2VyX2RhdGFfZGlyKCksICJ3cGUiLCAibWVkaWFrZXlz
IiwgbnVsbHB0cikpOwotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9t
RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkuZ2V0KCkp
OworICAgIHJldHVybiBGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkuZ2V0KCkpOwogI2VuZGlmCiAgICAgcmV0dXJu
IGRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCk7CiB9CkBAIC0xNjYsNyArMTY2LDcg
QEAgU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHREZXZpY2VJZEhhc2hTYWx0
c1N0b3JhZ2VEaXJlY3RvcnkoKQogewogI2lmIFBMQVRGT1JNKFdQRSkKICAgICBHVW5pcXVlUHRy
PGdjaGFyPiBkZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFt
ZShnX2dldF91c2VyX2RhdGFfZGlyKCksICJ3cGUiLCAiZGV2aWNlaWRoYXNoc2FsdHMiLCBudWxs
cHRyKSk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5LmdldCgp
KTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihkZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkuZ2V0KCkpOwogI2VuZGlmCiAg
ICAgcmV0dXJuIGRlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKTsKIH0K
QEAgLTE3NCw3ICsxNzQsNyBAQCBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVs
dERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpCiBXVEY6OlN0cmluZyBXZWJzaXRl
RGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3Rvcnko
KQogewogICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGphdmFTY3JpcHRDb3JlQ29uZmlnRGlyZWN0b3J5
KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9kYXRhX2RpcigpLCBCQVNFX0RJUkVDVE9SWSwg
IkphdmFTY3JpcHRDb3JlRGVidWciLCBudWxscHRyKSk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZp
bGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oamF2YVNjcmlwdENv
cmVDb25maWdEaXJlY3RvcnkuZ2V0KCkpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpzdHJpbmdG
cm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGphdmFTY3JpcHRDb3JlQ29uZmlnRGlyZWN0b3J5
LmdldCgpKTsKIH0KIAogUmVmPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+
IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCmluZGV4
IDY3NGE1ZGIwNDNjOGE2MGYzNjIwYWE3YmEwMThjMWY5ODVlZGY4YTkuLmIwNDY2ZTkxNDA5MGJj
MDU1OTY2ZTZiOWRmMzE5ZWEzMDRkYjIzNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcApAQCAtMjksMTEgKzI5LDExIEBACiAKICNp
bmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9CaXRtYXBJbWFnZS5oPgotI2lu
Y2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2UuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZVN0YXRlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U1FMaXRlVHJhbnNhY3Rpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgor
I2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4K
ICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0
cmFzLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRGYXZpY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcAppbmRleCA5YmU3MjUzZjg1ZTkxZGExMWI5NWVkMjgw
OWViNDRiNWEzNzE1YTVhLi5lMDE2NDg2ODE3MWE1ZDhiZWU4YTNlMTg2YWM2ODI1YzQ5MWQ5NzAw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGYXZp
Y29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdEZhdmljb25EYXRhYmFzZS5jcHAKQEAgLTIzLDEyICsyMywxMiBAQAogI2luY2x1ZGUgIklj
b25EYXRhYmFzZS5oIgogI2luY2x1ZGUgIldlYktpdEZhdmljb25EYXRhYmFzZVByaXZhdGUuaCIK
ICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlcy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3Rl
bS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ludFNp
emUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlZlB0ckNhaXJvLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgorI2luY2x1ZGUg
PHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRlIDx3
dGYvU2V0Rm9yU2NvcGUuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CkBAIC0yNzMs
NyArMjczLDcgQEAgdm9pZCB3ZWJraXRGYXZpY29uRGF0YWJhc2VPcGVuKFdlYktpdEZhdmljb25E
YXRhYmFzZSogZGF0YWJhc2UsIGNvbnN0IFN0cmluZyYgcGEKICAgICBwcml2LT5pY29uRGF0YWJh
c2UtPnNldEVuYWJsZWQodHJ1ZSk7CiAgICAgcHJpdi0+aWNvbkRhdGFiYXNlLT5zZXRQcml2YXRl
QnJvd3NpbmdFbmFibGVkKFdlYlByZWZlcmVuY2VzOjphbnlQYWdlc0FyZVVzaW5nUHJpdmF0ZUJy
b3dzaW5nKCkpOwogCi0gICAgaWYgKCFwcml2LT5pY29uRGF0YWJhc2UtPm9wZW4oV2ViQ29yZTo6
RmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShwYXRoKSwgV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0
aEdldEZpbGVOYW1lKHBhdGgpKSkgeworICAgIGlmICghcHJpdi0+aWNvbkRhdGFiYXNlLT5vcGVu
KEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUocGF0aCksIEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxl
TmFtZShwYXRoKSkpIHsKICAgICAgICAgcHJpdi0+aWNvbkRhdGFiYXNlID0gbnVsbHB0cjsKICAg
ICAgICAgSWNvbkRhdGFiYXNlOjphbGxvd0RhdGFiYXNlQ2xlYW51cCgpOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZpbGVDaG9vc2Vy
UmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGaWxl
Q2hvb3NlclJlcXVlc3QuY3BwCmluZGV4IDM3ZTZjY2EwY2ViY2U5MTQ3MzBlM2M2ZDQyNWM1ZmVm
NzdmYjQ4NWYuLjA5OTgwYWFlMDY5OWViY2U5ZDMzZTljNWE2OTdhMDJkZTA0NzAzZDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZpbGVDaG9vc2Vy
UmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
RmlsZUNob29zZXJSZXF1ZXN0LmNwcApAQCAtMjUsOSArMjUsOSBAQAogI2luY2x1ZGUgIkFQSVN0
cmluZy5oIgogI2luY2x1ZGUgIldlYktpdEZpbGVDaG9vc2VyUmVxdWVzdFByaXZhdGUuaCIKICNp
bmNsdWRlICJXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmgiCi0jaW5jbHVkZSA8V2Vi
Q29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0RW5jb2RpbmcuaD4KICNp
bmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAj
aW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KICNpbmNs
dWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCmluZGV4IDBmMzllMTI1ZjNkYTZj
NDgzOTZhNDBjOWNkZmU4ZjRjNDFkOTY5YWUuLjY2ZDgzYTcxODhlNmNkYTcwZWYyYjQ5ZjI2Mzk5
N2FjNGVmNjk1MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFdlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdFdlYkNvbnRleHQuY3BwCkBAIC0zMzMsMjAgKzMzMywyMCBAQCBzdGF0aWMgdm9p
ZCB3ZWJraXRXZWJDb250ZXh0Q29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQogICAgIEdVbmlx
dWVQdHI8Y2hhcj4gYnVuZGxlRmlsZW5hbWUoZ19idWlsZF9maWxlbmFtZShpbmplY3RlZEJ1bmRs
ZURpcmVjdG9yeSgpLCBJTkpFQ1RFRF9CVU5ETEVfRklMRU5BTUUsIG51bGxwdHIpKTsKIAogICAg
IEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247Ci0gICAgY29uZmln
dXJhdGlvbi5zZXRJbmplY3RlZEJ1bmRsZVBhdGgoV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5n
RnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihidW5kbGVGaWxlbmFtZS5nZXQoKSkpOworICAg
IGNvbmZpZ3VyYXRpb24uc2V0SW5qZWN0ZWRCdW5kbGVQYXRoKEZpbGVTeXN0ZW06OnN0cmluZ0Zy
b21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oYnVuZGxlRmlsZW5hbWUuZ2V0KCkpKTsKICAgICBj
b25maWd1cmF0aW9uLnNldE1heGltdW1Qcm9jZXNzQ291bnQoMSk7CiAgICAgY29uZmlndXJhdGlv
bi5zZXREaXNrQ2FjaGVTcGVjdWxhdGl2ZVZhbGlkYXRpb25FbmFibGVkKHRydWUpOwogCiAgICAg
V2ViS2l0V2ViQ29udGV4dCogd2ViQ29udGV4dCA9IFdFQktJVF9XRUJfQ09OVEVYVChvYmplY3Qp
OwogICAgIFdlYktpdFdlYkNvbnRleHRQcml2YXRlKiBwcml2ID0gd2ViQ29udGV4dC0+cHJpdjsK
ICAgICBpZiAocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyICYmICF3ZWJraXRfd2Vic2l0ZV9kYXRh
X21hbmFnZXJfaXNfZXBoZW1lcmFsKHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpIHsK
LSAgICAgICAgY29uZmlndXJhdGlvbi5zZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoV2ViQ29yZTo6
RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vi
c2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2xvY2FsX3N0b3JhZ2VfZGlyZWN0b3J5KHByaXYtPndlYnNp
dGVEYXRhTWFuYWdlci5nZXQoKSkpKTsKLSAgICAgICAgY29uZmlndXJhdGlvbi5zZXREaXNrQ2Fj
aGVEaXJlY3RvcnkoV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
d2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9kaXNrX2NhY2hlX2RpcmVjdG9yeShwcml2
LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSwgbmV0d29ya0NhY2hlU3ViZGlyZWN0b3J5KSk7
Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeShXZWJD
b3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHdlYmtp
dF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfb2ZmbGluZV9hcHBsaWNhdGlvbl9jYWNoZV9kaXJl
Y3RvcnkocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSkpOwotICAgICAgICBjb25maWd1
cmF0aW9uLnNldEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KFdlYkNvcmU6OkZpbGVTeXN0ZW06
OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0X3dlYnNpdGVfZGF0YV9t
YW5hZ2VyX2dldF9pbmRleGVkZGJfZGlyZWN0b3J5KHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5n
ZXQoKSkpKTsKLSAgICAgICAgY29uZmlndXJhdGlvbi5zZXRXZWJTUUxEYXRhYmFzZURpcmVjdG9y
eShXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfd2Vic3FsX2RpcmVjdG9yeShwcml2LT53
ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSk7CisgICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0TG9j
YWxTdG9yYWdlRGlyZWN0b3J5KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24od2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9sb2NhbF9zdG9yYWdlX2Rp
cmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSk7CisgICAgICAgIGNvbmZp
Z3VyYXRpb24uc2V0RGlza0NhY2hlRGlyZWN0b3J5KEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfZGlza19jYWNoZV9kaXJlY3RvcnkocHJp
di0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSksIG5ldHdvcmtDYWNoZVN1YmRpcmVjdG9yeSkp
OworICAgICAgICBjb25maWd1cmF0aW9uLnNldEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoRmls
ZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vic2l0
ZV9kYXRhX21hbmFnZXJfZ2V0X29mZmxpbmVfYXBwbGljYXRpb25fY2FjaGVfZGlyZWN0b3J5KHBy
aXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpKTsKKyAgICAgICAgY29uZmlndXJhdGlvbi5z
ZXRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeShGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfaW5kZXhl
ZGRiX2RpcmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSk7CisgICAgICAg
IGNvbmZpZ3VyYXRpb24uc2V0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoRmlsZVN5c3RlbTo6c3Ry
aW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFn
ZXJfZ2V0X3dlYnNxbF9kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSkp
OwogICAgIH0gZWxzZSBpZiAoIXByaXYtPmxvY2FsU3RvcmFnZURpcmVjdG9yeS5pc051bGwoKSkK
LSAgICAgICAgY29uZmlndXJhdGlvbi5zZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoV2ViQ29yZTo6
RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5sb2Nh
bFN0b3JhZ2VEaXJlY3RvcnkuZGF0YSgpKSk7CisgICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0TG9j
YWxTdG9yYWdlRGlyZWN0b3J5KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24ocHJpdi0+bG9jYWxTdG9yYWdlRGlyZWN0b3J5LmRhdGEoKSkpOwogCiAgICAgcHJp
di0+cHJvY2Vzc1Bvb2wgPSBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlKGNvbmZpZ3VyYXRpb24pOwog
CkBAIC05MjQsNyArOTI0LDcgQEAgdm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2Zhdmljb25f
ZGF0YWJhc2VfZGlyZWN0b3J5KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQKICAgICBXZWJLaXRX
ZWJDb250ZXh0UHJpdmF0ZSogcHJpdiA9IGNvbnRleHQtPnByaXY7CiAgICAgZW5zdXJlRmF2aWNv
bkRhdGFiYXNlKGNvbnRleHQpOwogCi0gICAgU3RyaW5nIGRpcmVjdG9yeVBhdGggPSBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwor
ICAgIFN0cmluZyBkaXJlY3RvcnlQYXRoID0gRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKICAgICAvLyBVc2UgZGVmYXVsdCBpZiBudWxscHRyIGlz
IHBhc3NlZCBhcyBwYXJhbWV0ZXIuCiAgICAgaWYgKGRpcmVjdG9yeVBhdGguaXNFbXB0eSgpKSB7
CiAjaWYgUExBVEZPUk0oR1RLKQpAQCAtOTMzLDcgKzkzMyw3IEBAIHZvaWQgd2Via2l0X3dlYl9j
b250ZXh0X3NldF9mYXZpY29uX2RhdGFiYXNlX2RpcmVjdG9yeShXZWJLaXRXZWJDb250ZXh0KiBj
b250ZXh0CiAgICAgICAgIGNvbnN0IGNoYXIqIHBvcnREaXJlY3RvcnkgPSAid3BlIjsKICNlbmRp
ZgogICAgICAgICBHVW5pcXVlUHRyPGdjaGFyPiBkYXRhYmFzZURpcmVjdG9yeShnX2J1aWxkX2Zp
bGVuYW1lKGdfZ2V0X3VzZXJfY2FjaGVfZGlyKCksIHBvcnREaXJlY3RvcnksICJpY29uZGF0YWJh
c2UiLCBudWxscHRyKSk7Ci0gICAgICAgIGRpcmVjdG9yeVBhdGggPSBXZWJDb3JlOjpGaWxlU3lz
dGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRhdGFiYXNlRGlyZWN0b3J5
LmdldCgpKTsKKyAgICAgICAgZGlyZWN0b3J5UGF0aCA9IEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21G
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGF0YWJhc2VEaXJlY3RvcnkuZ2V0KCkpOwogICAgIH0K
ICAgICBwcml2LT5mYXZpY29uRGF0YWJhc2VEaXJlY3RvcnkgPSBkaXJlY3RvcnlQYXRoLnV0Zjgo
KTsKIApAQCAtOTQyLDcgKzk0Miw3IEBAIHZvaWQgd2Via2l0X3dlYl9jb250ZXh0X3NldF9mYXZp
Y29uX2RhdGFiYXNlX2RpcmVjdG9yeShXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0CiAgICAgICAg
ICJXZWJwYWdlSWNvbnMuZGIiLCBudWxscHRyKSk7CiAKICAgICAvLyBTZXR0aW5nIHRoZSBwYXRo
IHdpbGwgY2F1c2UgdGhlIGljb24gZGF0YWJhc2UgdG8gYmUgb3BlbmVkLgotICAgIHdlYmtpdEZh
dmljb25EYXRhYmFzZU9wZW4ocHJpdi0+ZmF2aWNvbkRhdGFiYXNlLmdldCgpLCBXZWJDb3JlOjpG
aWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZhdmljb25EYXRh
YmFzZVBhdGguZ2V0KCkpKTsKKyAgICB3ZWJraXRGYXZpY29uRGF0YWJhc2VPcGVuKHByaXYtPmZh
dmljb25EYXRhYmFzZS5nZXQoKSwgRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihmYXZpY29uRGF0YWJhc2VQYXRoLmdldCgpKSk7CiAKICAgICBpZiAod2Via2l0
X3dlYl9jb250ZXh0X2lzX2VwaGVtZXJhbChjb250ZXh0KSkKICAgICAgICAgd2Via2l0RmF2aWNv
bkRhdGFiYXNlU2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChwcml2LT5mYXZpY29uRGF0YWJhc2Uu
Z2V0KCksIHRydWUpOwpAQCAtMTAyNiw3ICsxMDI2LDcgQEAgdm9pZCB3ZWJraXRfd2ViX2NvbnRl
eHRfc2V0X2FkZGl0aW9uYWxfcGx1Z2luc19kaXJlY3RvcnkoV2ViS2l0V2ViQ29udGV4dCogY29u
dGUKICAgICBnX3JldHVybl9pZl9mYWlsKGRpcmVjdG9yeSk7CiAKICNpZiBFTkFCTEUoTkVUU0NB
UEVfUExVR0lOX0FQSSkKLSAgICBjb250ZXh0LT5wcml2LT5wcm9jZXNzUG9vbC0+c2V0QWRkaXRp
b25hbFBsdWdpbnNEaXJlY3RvcnkoV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihkaXJlY3RvcnkpKTsKKyAgICBjb250ZXh0LT5wcml2LT5wcm9j
ZXNzUG9vbC0+c2V0QWRkaXRpb25hbFBsdWdpbnNEaXJlY3RvcnkoRmlsZVN5c3RlbTo6c3RyaW5n
RnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihkaXJlY3RvcnkpKTsKICNlbmRpZgogfQogCkBA
IC0xNDE4LDcgKzE0MTgsNyBAQCB2b2lkIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfZGlza19jYWNo
ZV9kaXJlY3RvcnkoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCwgY29ucwogICAgIGdfcmV0dXJu
X2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9DT05URVhUKGNvbnRleHQpKTsKICAgICBnX3JldHVybl9p
Zl9mYWlsKGRpcmVjdG9yeSk7CiAKLSAgICBjb250ZXh0LT5wcml2LT5wcm9jZXNzUG9vbC0+Y29u
ZmlndXJhdGlvbigpLnNldERpc2tDYWNoZURpcmVjdG9yeShXZWJDb3JlOjpGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihkaXJlY3RvcnkpLCBuZXR3b3JrQ2FjaGVTdWJkaXJlY3Rv
cnkpKTsKKyAgICBjb250ZXh0LT5wcml2LT5wcm9jZXNzUG9vbC0+Y29uZmlndXJhdGlvbigpLnNl
dERpc2tDYWNoZURpcmVjdG9yeShGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihkaXJlY3Rvcnkp
LCBuZXR3b3JrQ2FjaGVTdWJkaXJlY3RvcnkpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGFN
YW5hZ2VyLmNwcAppbmRleCA3ZTFkMTRiNjdiOTUzOGY0NzVlMGY4YWY0NTBhYWJkZWYyZTIxNTVl
Li4xY2MwNjU0MTFlNzMxZmE2NzJjNDM0ZjNiM2MwYWJlOWE1NjkzZWJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVE
YXRhTWFuYWdlci5jcHAKQEAgLTI2LDggKzI2LDggQEAKICNpbmNsdWRlICJXZWJLaXRXZWJzaXRl
RGF0YU1hbmFnZXJQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2Vic2l0ZURhdGFQcml2YXRl
LmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFGZXRjaE9wdGlvbi5oIgotI2luY2x1ZGUgPFdlYkNv
cmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisjaW5jbHVkZSA8
d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL2dsaWIvV1RGR1R5cGUuaD4KIApAQCAtMzYzLDEzICszNjMsMTMgQEAgQVBJOjpX
ZWJzaXRlRGF0YVN0b3JlJiB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJHZXREYXRhU3RvcmUoV2Vi
S2l0V2Vic2l0ZURhdGFNYW4KICAgICBpZiAoIXByaXYtPndlYnNpdGVEYXRhU3RvcmUpIHsKICAg
ICAgICAgYXV0byBjb25maWd1cmF0aW9uID0gV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246
OmNyZWF0ZSgpOwogICAgICAgICBjb25maWd1cmF0aW9uLT5zZXRMb2NhbFN0b3JhZ2VEaXJlY3Rv
cnkoIXByaXYtPmxvY2FsU3RvcmFnZURpcmVjdG9yeSA/Ci0gICAgICAgICAgICBBUEk6OldlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSA6IFdlYkNvcmU6OkZp
bGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+bG9jYWxT
dG9yYWdlRGlyZWN0b3J5LmdldCgpKSk7CisgICAgICAgICAgICBBUEk6OldlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSA6IEZpbGVTeXN0ZW06OnN0cmluZ0Zy
b21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+bG9jYWxTdG9yYWdlRGlyZWN0b3J5Lmdl
dCgpKSk7CiAgICAgICAgIGNvbmZpZ3VyYXRpb24tPnNldE5ldHdvcmtDYWNoZURpcmVjdG9yeSgh
cHJpdi0+ZGlza0NhY2hlRGlyZWN0b3J5ID8KLSAgICAgICAgICAgIEFQSTo6V2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpIDogV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zy
b21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+ZGlza0NhY2hlRGlyZWN0b3J5LmdldCgp
KSwgbmV0d29ya0NhY2hlU3ViZGlyZWN0b3J5KSk7CisgICAgICAgICAgICBBUEk6OldlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKSA6IEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKHByaXYtPmRpc2tDYWNoZURpcmVjdG9yeS5nZXQoKSksIG5ldHdvcmtDYWNo
ZVN1YmRpcmVjdG9yeSkpOwogICAgICAgICBjb25maWd1cmF0aW9uLT5zZXRBcHBsaWNhdGlvbkNh
Y2hlRGlyZWN0b3J5KCFwcml2LT5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID8KLSAgICAgICAg
ICAgIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rv
cnkoKSA6IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24ocHJpdi0+YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeS5nZXQoKSkpOworICAgICAgICAg
ICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9y
eSgpIDogRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2
LT5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5LmdldCgpKSk7CiAgICAgICAgIGNvbmZpZ3VyYXRp
b24tPnNldFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCFwcml2LT53ZWJTUUxEaXJlY3RvcnkgPwot
ICAgICAgICAgICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0V2ViU1FMRGF0YWJhc2VE
aXJlY3RvcnkoKSA6IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24ocHJpdi0+d2ViU1FMRGlyZWN0b3J5LmdldCgpKSk7CisgICAgICAgICAgICBB
UEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpIDog
RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT53ZWJT
UUxEaXJlY3RvcnkuZ2V0KCkpKTsKICAgICAgICAgY29uZmlndXJhdGlvbi0+c2V0TWVkaWFLZXlz
U3RvcmFnZURpcmVjdG9yeShBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtleXNT
dG9yYWdlRGlyZWN0b3J5KCkpOwogICAgICAgICBwcml2LT53ZWJzaXRlRGF0YVN0b3JlID0gQVBJ
OjpXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGVMZWdhY3koV1RGTW92ZShjb25maWd1cmF0aW9uKSk7
CiAgICAgfQpAQCAtNTMyLDcgKzUzMiw3IEBAIGNvbnN0IGdjaGFyKiB3ZWJraXRfd2Vic2l0ZV9k
YXRhX21hbmFnZXJfZ2V0X2Rpc2tfY2FjaGVfZGlyZWN0b3J5KFdlYktpdFdlYnNpdGVECiAKICAg
ICBpZiAoIXByaXYtPmRpc2tDYWNoZURpcmVjdG9yeSkgewogICAgICAgICAvLyBUaGUgZGVmYXVs
dCBkaXJlY3RvcnkgYWxyZWFkeSBoYXMgdGhlIHN1YmRpcmVjdG9yeS4KLSAgICAgICAgcHJpdi0+
ZGlza0NhY2hlRGlyZWN0b3J5LnJlc2V0KGdfc3RyZHVwKFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRp
cmVjdG9yeU5hbWUoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hlRGly
ZWN0b3J5KCkpLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICAgICAgcHJpdi0+ZGlza0NhY2hlRGlyZWN0
b3J5LnJlc2V0KGdfc3RyZHVwKEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUoQVBJOjpXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkpLnV0ZjgoKS5kYXRhKCkp
KTsKICAgICB9CiAgICAgcmV0dXJuIHByaXYtPmRpc2tDYWNoZURpcmVjdG9yeS5nZXQoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93aW4vQVBJV2Vic2l0ZURh
dGFTdG9yZVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd2luL0FQSVdlYnNp
dGVEYXRhU3RvcmVXaW4uY3BwCmluZGV4IDE5YmUyODhkNDgyZGFhZmRkMThlNGNmZGZlZGNlMjAz
YWFjNzViZGQuLjMyMjViOTIxNzBkN2M5OGI0YmU4NDVhY2NmZThkOGMxYjM2N2Q3YjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93aW4vQVBJV2Vic2l0ZURhdGFTdG9y
ZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dpbi9BUElXZWJzaXRl
RGF0YVN0b3JlV2luLmNwcApAQCAtMjYsNDMgKzI2LDQzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgogCi0jaW5jbHVkZSA8V2ViQ29yZS9G
aWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogbmFtZXNwYWNlIEFQ
SSB7CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRpb25DYWNoZURp
cmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3Jh
Z2VEaXJlY3RvcnkoKSwgIkFwcGxpY2F0aW9uQ2FjaGUiKTsKKyAgICByZXR1cm4gRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmlj
U3RvcmFnZURpcmVjdG9yeSgpLCAiQXBwbGljYXRpb25DYWNoZSIpOwogfQogCiBTdHJpbmcgV2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSgpCiB7Ci0gICAgcmV0
dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkNhY2hl
U3RvcmFnZSIpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJDYWNo
ZVN0b3JhZ2UiKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3b3Jr
Q2FjaGVEaXJlY3RvcnkoKQogewotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lm
aWNTdG9yYWdlRGlyZWN0b3J5KCksICJOZXR3b3JrQ2FjaGUiKTsKKyAgICByZXR1cm4gRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNp
ZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiTmV0d29ya0NhY2hlIik7CiB9CiAKIFN0cmluZyBXZWJz
aXRlRGF0YVN0b3JlOjpkZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKQogewotICAg
IHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJJ
bmRleGVkREIiKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiSW5k
ZXhlZERCIik7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0U2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpsb2Nh
bFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIlNlcnZpY2VXb3JrZXJzIik7CisgICAg
cmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjps
b2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIlNlcnZpY2VXb3JrZXJzIik7CiB9
CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5
KCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVj
dG9yeSgpLCAiTG9jYWxTdG9yYWdlIik7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJl
Y3RvcnkoKSwgIkxvY2FsU3RvcmFnZSIpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKQogewotICAgIHJldHVybiBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJNZWRpYUtleVN0b3JhZ2Ui
KTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVT
eXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiTWVkaWFLZXlTdG9y
YWdlIik7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGV2aWNlSWRIYXNo
U2FsdHNTdG9yYWdlRGlyZWN0b3J5KCkKQEAgLTczLDU3ICs3Myw1NyBAQCBTdHJpbmcgV2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpCiAK
IFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnko
KQogewotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0
b3J5KCksICJXZWJTUUwiKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgp
LCAiV2ViU1FMIik7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpsb2Nh
bFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIlJlc291cmNlTG9hZFN0YXRpc3RpY3Mi
KTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVT
eXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyIpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6Y2FjaGVEaXJlY3Rv
cnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBkaXJlY3RvcnlOYW1lKQog
ewotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5
KCksIGRpcmVjdG9yeU5hbWUpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5
KCksIGRpcmVjdG9yeU5hbWUpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6d2Vic2l0
ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBkaXJl
Y3RvcnlOYW1lKQogewotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9y
YWdlRGlyZWN0b3J5KCksIGRpcmVjdG9yeU5hbWUpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9y
YWdlRGlyZWN0b3J5KCksIGRpcmVjdG9yeU5hbWUpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFT
dG9yZTo6bGVnYWN5RGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKQogewotICAgIHJl
dHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJBcHBs
aWNhdGlvbkNhY2hlIik7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwg
IkFwcGxpY2F0aW9uQ2FjaGUiKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2Fj
eURlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKQogewotICAgIHJldHVybiBXZWJDb3JlOjpG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6
bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJOZXR3b3JrQ2FjaGUiKTsKKyAg
ICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06
OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiTmV0d29ya0NhY2hlIik7CiB9
CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0V2ViU1FMRGF0YWJhc2VE
aXJlY3RvcnkoKQogewotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9y
YWdlRGlyZWN0b3J5KCksICJXZWJTUUwiKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURp
cmVjdG9yeSgpLCAiV2ViU1FMIik7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdh
Y3lEZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKQogewotICAgIHJldHVybiBXZWJD
b3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5
c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJJbmRleGVkREIiKTsK
KyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0
ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiSW5kZXhlZERCIik7CiB9
CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0TG9jYWxTdG9yYWdlRGly
ZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFn
ZURpcmVjdG9yeSgpLCAiTG9jYWxTdG9yYWdlIik7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3Jh
Z2VEaXJlY3RvcnkoKSwgIkxvY2FsU3RvcmFnZSIpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFT
dG9yZTo6bGVnYWN5RGVmYXVsdE1lZGlhQ2FjaGVEaXJlY3RvcnkoKQogewotICAgIHJldHVybiBX
ZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJNZWRpYUNhY2hl
Iik7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxl
U3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIk1lZGlhQ2FjaGUi
KTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRNZWRpYUtleXNT
dG9yYWdlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNp
ZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiTWVkaWFLZXlTdG9yYWdlIik7CisgICAgcmV0dXJuIEZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJT
cGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIk1lZGlhS2V5U3RvcmFnZSIpOwogfQogCiBTdHJp
bmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFn
ZURpcmVjdG9yeSgpCkBAIC0xMzQsNyArMTM0LDcgQEAgU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6
OmxlZ2FjeURlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKQogCiBTdHJp
bmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdEphdmFTY3JpcHRDb25maWd1cmF0aW9u
RGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3Rv
cmFnZURpcmVjdG9yeSgpLCAiSmF2YVNjcmlwdENvcmVEZWJ1ZyIpOworICAgIHJldHVybiBGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3Bl
Y2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJKYXZhU2NyaXB0Q29yZURlYnVnIik7CiB9CiAKIFJl
ZjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiBXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCmlu
ZGV4IDgwNTQ3ZTZiZTEzODY1NWYwNzk4YjY3NmRjMTJkYzlhYjMzYWNmMWIuLmY4ODQ0YWZlNmQy
MmU0Y2Q1ZWUyMDgxNDhiNGY0OTJmN2NjNjMxMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCkBA
IC04MDYsNyArODA2LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6d2lsbENsb3NlUGFn
ZShjb25zdCBXZWJQYWdlUHJveHkmIHBhZ2UpCiAKIHN0YXRpYyBib29sIGZpbGVDYW5CZUFjY2Vw
dGVkRm9yVXBsb2FkKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IEhhc2hTZXQ8U3RyaW5n
PiYgYWxsb3dlZE1JTUVUeXBlcywgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBhbGxvd2VkRmlsZUV4
dGVuc2lvbnMpCiB7Ci0gICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGZp
bGVuYW1lKSkKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZmlsZW5hbWUpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoYWxsb3dlZE1JTUVUeXBlcy5pc0VtcHR5KCkg
JiYgYWxsb3dlZEZpbGVFeHRlbnNpb25zLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQubW0KaW5kZXggM2I0OTYyOGZkZjZkZmM1YWFk
ZDAyOWQ1YTJjYmNiNmJmYjc4Y2ZjMS4uYzcyN2JkMjNlZjk1NTI1MWY3OTgwOWQ2OWM1ODIzMjE5
N2FmMWViNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvRG93bmxv
YWRDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRD
bGllbnQubW0KQEAgLTQyLDEwICs0MiwxMCBAQAogI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5Lmgi
CiAjaW1wb3J0ICJfV0tEb3dubG9hZERlbGVnYXRlLmgiCiAjaW1wb3J0ICJfV0tEb3dubG9hZElu
dGVybmFsLmgiCi0jaW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPFdlYkNv
cmUvUmVzb3VyY2VFcnJvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+
CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC0xODEsNyArMTgxLDcgQEAgdm9pZCBEb3dubG9hZENs
aWVudDo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV2ViUHJvY2Vzc1Bv
b2wmLCBEb3cKIHsKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCiAgICAgaWYgKGRvd25sb2FkUHJv
eHkuaXNTeXN0ZW1QcmV2aWV3RG93bmxvYWQoKSkgewotICAgICAgICBOU1N0cmluZyAqdGVtcG9y
YXJ5RGlyZWN0b3J5ID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0
b3J5KEAiU3lzdGVtUHJldmlld3MiKTsKKyAgICAgICAgTlNTdHJpbmcgKnRlbXBvcmFyeURpcmVj
dG9yeSA9IEZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShAIlN5c3RlbVByZXZp
ZXdzIik7CiAgICAgICAgIE5TU3RyaW5nICpkZXN0aW5hdGlvbiA9IFt0ZW1wb3JhcnlEaXJlY3Rv
cnkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmZpbGVuYW1lXTsKICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoQWxsb3dPdmVyd3JpdGU6OlllcywgZGVzdGluYXRpb24pOwogICAgICAg
ICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQ
cm9jZXNzUG9vbENvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJv
Y2Vzc1Bvb2xDb2NvYS5tbQppbmRleCA1NmNmMGZkMDU5MGM2MTU0M2QzNDEwZjg0ZjY2ZDE5Yzdl
ZDg1MWJmLi4yZGFmNzU1NzFjY2IxYTlkNzA1YmFhMDU3YWQ2MjRhNWE2OThhNDM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2Eu
bW0KQEAgLTQzLDcgKzQzLDYgQEAKICNpbXBvcnQgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2lt
cG9ydCAiV2luZG93U2VydmVyQ29ubmVjdGlvbi5oIgogI2ltcG9ydCA8V2ViQ29yZS9Db2xvci5o
PgotI2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgog
I2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybVBhc3RlYm9hcmQuaD4KQEAgLTUyLDYgKzUxLDcgQEAK
ICNpbXBvcnQgPHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2Nv
Y29hL05TS2V5ZWRBcmNoaXZlclNQSS5oPgogI2ltcG9ydCA8c3lzL3BhcmFtLmg+CisjaW1wb3J0
IDx3dGYvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KICNp
bXBvcnQgPHd0Zi9jb2NvYS9FbnRpdGxlbWVudHMuaD4KICNpbXBvcnQgPHd0Zi9zcGkvZGFyd2lu
L2R5bGRTUEkuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwu
bW0KaW5kZXggMDY0ZTBkZmQ5MGZmNmJiOWRkYzNhYjQ0MmVjOGNkYTY5YWEyZDk2ZC4uMTYwOTVh
OGJkMTU2NDg4NDljNmFlYjEzMTE2NWU2Mzc0ZmUwZThiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTg0LDcgKzg0LDYgQEAKICNpbXBvcnQg
PFdlYkNvcmUvRHJhZ0RhdGEuaD4KICNpbXBvcnQgPFdlYkNvcmUvRHJhZ0l0ZW0uaD4KICNpbXBv
cnQgPFdlYkNvcmUvRWRpdG9yLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNp
bXBvcnQgPFdlYkNvcmUvRm9udEF0dHJpYnV0ZUNoYW5nZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUv
Rm9udEF0dHJpYnV0ZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvS2V5cHJlc3NDb21tYW5kLmg+CkBA
IC0xMTUsNiArMTE0LDcgQEAKICNpbXBvcnQgPHBhbC9zcGkvbWFjL05TVmlld1NQSS5oPgogI2lt
cG9ydCA8cGFsL3NwaS9tYWMvTlNXaW5kb3dTUEkuaD4KICNpbXBvcnQgPHN5cy9zdGF0Lmg+Cisj
aW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CiAjaW1wb3J0IDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgogI2ltcG9ydCA8d3RmL1NldEZvclNj
b3BlLmg+CkBAIC0zOTY5LDcgKzM5NjksNyBAQCBib29sIFdlYlZpZXdJbXBsOjpwZXJmb3JtRHJh
Z09wZXJhdGlvbihpZCA8TlNEcmFnZ2luZ0luZm8+IGRyYWdnaW5nSW5mbykKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCi0gICAgICAgIE5TU3RyaW5nICpkcm9wRGVzdGlu
YXRpb25QYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5
KEAiV2ViS2l0RHJvcERlc3RpbmF0aW9uIik7CisgICAgICAgIE5TU3RyaW5nICpkcm9wRGVzdGlu
YXRpb25QYXRoID0gRmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KEAiV2ViS2l0
RHJvcERlc3RpbmF0aW9uIik7CiAgICAgICAgIGlmICghZHJvcERlc3RpbmF0aW9uUGF0aCkgewog
ICAgICAgICAgICAgZGVsZXRlIGRyYWdEYXRhOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtNDI5MSw3ICs0MjkxLDcgQEAgTlNBcnJheSAqV2ViVmlld0ltcGw6Om5hbWVzT2ZQcm9taXNl
ZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRpb24oTlNVUkwgKmRyb3BEZXN0aW4KICAgICAgICAgTE9H
X0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIGltYWdlIGZpbGUgdmlhIC1bTlNGaWxlV3JhcHBlciB3
cml0ZVRvVVJMOm9wdGlvbnM6b3JpZ2luYWxDb250ZW50c1VSTDplcnJvcjpdIik7CiAKICAgICBp
ZiAoIW1fcHJvbWlzZWRVUkwuaXNFbXB0eSgpKQotICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVt
OjpzZXRNZXRhZGF0YVVSTChTdHJpbmcocGF0aCksIG1fcHJvbWlzZWRVUkwpOworICAgICAgICBG
aWxlU3lzdGVtOjpzZXRNZXRhZGF0YVVSTChTdHJpbmcocGF0aCksIG1fcHJvbWlzZWRVUkwpOwog
ICAgIAogICAgIHJldHVybiBbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6W3BhdGggbGFzdFBhdGhD
b21wb25lbnRdXTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rldmlj
ZUlkSGFzaFNhbHRTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RldmljZUlk
SGFzaFNhbHRTdG9yYWdlLmNwcAppbmRleCBlNjBlZTNmNGY5NGIwMzJkMzk5YjdhMzc3YTdlOGY5
Y2NhMjM3NTFkLi4xOWE3YTEyY2ZhM2YzMWJmMWUyMTM3YzM1Y2Q1N2QwYTUwN2I5YTlmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2Uu
Y3BwCkBAIC0yOCw5ICsyOCw5IEBACiAKICNpbmNsdWRlICJQZXJzaXN0ZW5jeVV0aWxzLmgiCiAK
LSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJl
ZEJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5o
PgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL0hleE51bWJlci5o
PgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkUHJveHkuY3BwCmluZGV4IDc1MTAyZWUzYjAwNDI0YTQ4MDk0MTVmMzZiMDRlZDNiNTNjYWQx
NDguLmUwOTI1NGIwMTg3MjQ5Yzk5MmZjMmZjZDcyODg4ZTc4NGIxOTMzOTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHAKQEAg
LTM2LDggKzM2LDggQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJXZWJQcm9jZXNzUG9vbC5oIgogI2luY2x1ZGUgIldlYlByb3RlY3Rpb25TcGFjZS5oIgotI2lu
Y2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTUlNRVR5cGVS
ZWdpc3RyeS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9nbGliL0J1YmJsZXdyYXBMYXVu
Y2hlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9nbGliL0J1YmJsZXdy
YXBMYXVuY2hlci5jcHAKaW5kZXggZTQzNGUwMzMzOTg3YTkyNzQ5YzAwZGRjNWI1MzM2MDkwNGRl
ZjFiZS4uMTY3MjNkZmRkYTRmYWRiYjkyYWE3ZWEwYThlNmFlNTg4NGYyZDA2OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9CdWJibGV3cmFwTGF1bmNo
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvQnViYmxl
d3JhcExhdW5jaGVyLmNwcApAQCAtMjAsMTIgKzIwLDEyIEBACiAKICNpZiBFTkFCTEUoQlVCQkxF
V1JBUF9TQU5EQk9YKQogCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9QbGF0Zm9ybURpc3BsYXkuaD4KICNpbmNsdWRlIDxmY250bC5oPgogI2luY2x1
ZGUgPGdsaWIuaD4KICNpbmNsdWRlIDxzZWNjb21wLmg+CiAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+
CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HTGliVXRp
bGl0aWVzLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9n
bGliL0dVbmlxdWVQdHIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xh
dW5jaGVyL2dsaWIvUHJvY2Vzc0xhdW5jaGVyR0xpYi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9MYXVuY2hlci9nbGliL1Byb2Nlc3NMYXVuY2hlckdMaWIuY3BwCmluZGV4IGM1NjYxODcz
YTA1ZTcxMDliNTE3ZWE3NWJkZmFiY2NkOGYyM2ZiODYuLjBjMzkwNzNmZTFkZTdhZGFmNTMxMjY4
M2Q4MTY0NjJmNjRkM2VjNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xh
dW5jaGVyL2dsaWIvUHJvY2Vzc0xhdW5jaGVyR0xpYi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9Qcm9jZXNzTGF1bmNoZXJHTGliLmNwcApAQCAtMzEsMTAg
KzMxLDEwIEBACiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkZsYXRwYWtMYXVu
Y2hlci5oIgogI2luY2x1ZGUgIlByb2Nlc3NFeGVjdXRhYmxlUGF0aC5oIgotI2luY2x1ZGUgPFdl
YkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPGVycm5vLmg+CiAjaW5jbHVkZSA8ZmNudGwu
aD4KICNpbmNsdWRlIDxnbGliLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNs
dWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9VbmlTdGRFeHRyYXMuaD4KICNpbmNs
dWRlIDx3dGYvZ2xpYi9HTGliVXRpbGl0aWVzLmg+CkBAIC00Nyw3ICs0Nyw2IEBACiAjZW5kaWYK
IAogbmFtZXNwYWNlIFdlYktpdCB7Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogc3RhdGlj
IHZvaWQgY2hpbGRTZXR1cEZ1bmN0aW9uKGdwb2ludGVyIHVzZXJEYXRhKQogewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9ndGsvUGx1Z2luSW5mb0NhY2hlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1BsdWdpbkluZm9DYWNoZS5j
cHAKaW5kZXggODA2NDdlYjEyZWU1MjUxMWExMTllODVmZGUyZjU5YzRlMjM3Nzg4NS4uYTI4YTAw
YTM4NmNhZmVjYjM3ODJhNDExMDM3Y2E5YTUzNWRjMjIwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUGx1Z2lucy9ndGsvUGx1Z2luSW5mb0NhY2hlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL2d0ay9QbHVnaW5JbmZvQ2FjaGUuY3BwCkBAIC0y
OSw4ICsyOSw4IEBACiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAKICNpbmNsdWRl
ICJOZXRzY2FwZVBsdWdpbk1vZHVsZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1EaXNwbGF5Lmg+CisjaW5jbHVkZSA8d3RmL0Zp
bGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewpAQCAtNjYsMTAgKzY2LDEwIEBAIFBsdWdpbkluZm9DYWNoZTo6UGx1Z2luSW5mb0Nh
Y2hlKCkKICAgICBtX3NhdmVUb0ZpbGVJZGxlLnNldFByaW9yaXR5KEdfUFJJT1JJVFlfREVGQVVM
VF9JRExFKTsKIAogICAgIEdVbmlxdWVQdHI8Y2hhcj4gY2FjaGVEaXJlY3RvcnkoZ19idWlsZF9m
aWxlbmFtZShnX2dldF91c2VyX2NhY2hlX2RpcigpLCAid2Via2l0Z3RrIiwgbnVsbHB0cikpOwot
ICAgIGlmIChXZWJDb3JlOjpGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoY2FjaGVEaXJl
Y3RvcnkuZ2V0KCkpKSB7CisgICAgaWYgKEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3Rvcmllcyhj
YWNoZURpcmVjdG9yeS5nZXQoKSkpIHsKICAgICAgICAgLy8gRGVsZXRlIG9sZCBjYWNoZSBmaWxl
LgogICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IG9sZENhY2hlUGF0aChnX2J1aWxkX2ZpbGVuYW1l
KGNhY2hlRGlyZWN0b3J5LmdldCgpLCAicGx1Z2lucyIsIG51bGxwdHIpKTsKLSAgICAgICAgV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdG
cm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKG9sZENhY2hlUGF0aC5nZXQoKSkpOworICAgICAg
ICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24ob2xkQ2FjaGVQYXRoLmdldCgpKSk7CiAKICAgICAgICAgbV9jYWNoZVBh
dGgucmVzZXQoZ19idWlsZF9maWxlbmFtZShjYWNoZURpcmVjdG9yeS5nZXQoKSwgY2FjaGVGaWxl
bmFtZUZvckN1cnJlbnREaXNwbGF5KCksIG51bGxwdHIpKTsKICAgICAgICAgZ19rZXlfZmlsZV9s
b2FkX2Zyb21fZmlsZShtX2NhY2hlRmlsZS5nZXQoKSwgbV9jYWNoZVBhdGguZ2V0KCksIEdfS0VZ
X0ZJTEVfTk9ORSwgbnVsbHB0cik7CkBAIC0xMTIsNyArMTEyLDcgQEAgYm9vbCBQbHVnaW5JbmZv
Q2FjaGU6OmdldFBsdWdpbkluZm8oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBQbHVnaW5Nb2R1
bGVJbmZvJgogICAgIGlmICghZ19rZXlfZmlsZV9oYXNfZ3JvdXAobV9jYWNoZUZpbGUuZ2V0KCks
IHBsdWdpbkdyb3VwLmRhdGEoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8g
bGFzdE1vZGlmaWVkVGltZSA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmljYXRp
b25UaW1lKHBsdWdpblBhdGgpOworICAgIGF1dG8gbGFzdE1vZGlmaWVkVGltZSA9IEZpbGVTeXN0
ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKHBsdWdpblBhdGgpOwogICAgIGlmICghbGFzdE1v
ZGlmaWVkVGltZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHRpbWVfdCBjYWNoZWRMYXN0
TW9kaWZpZWQgPSBzdGF0aWNfY2FzdDx0aW1lX3Q+KGdfa2V5X2ZpbGVfZ2V0X3VpbnQ2NChtX2Nh
Y2hlRmlsZS5nZXQoKSwgcGx1Z2luR3JvdXAuZGF0YSgpLCAibXRpbWUiLCBudWxscHRyKSk7CkBA
IC0xMjAsNyArMTIwLDcgQEAgYm9vbCBQbHVnaW5JbmZvQ2FjaGU6OmdldFBsdWdpbkluZm8oY29u
c3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBQbHVnaW5Nb2R1bGVJbmZvJgogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICBwbHVnaW4ucGF0aCA9IHBsdWdpblBhdGg7Ci0gICAgcGx1Z2luLmluZm8u
ZmlsZSA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShwbHVnaW5QYXRoKTsK
KyAgICBwbHVnaW4uaW5mby5maWxlID0gRmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKHBsdWdp
blBhdGgpOwogCiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBzdHJpbmdWYWx1ZShnX2tleV9maWxlX2dl
dF9zdHJpbmcobV9jYWNoZUZpbGUuZ2V0KCksIHBsdWdpbkdyb3VwLmRhdGEoKSwgIm5hbWUiLCBu
dWxscHRyKSk7CiAgICAgcGx1Z2luLmluZm8ubmFtZSA9IFN0cmluZzo6ZnJvbVVURjgoc3RyaW5n
VmFsdWUuZ2V0KCkpOwpAQCAtMTQwLDcgKzE0MCw3IEBAIGJvb2wgUGx1Z2luSW5mb0NhY2hlOjpn
ZXRQbHVnaW5JbmZvKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgUGx1Z2luTW9kdWxlSW5mbyYK
IAogdm9pZCBQbHVnaW5JbmZvQ2FjaGU6OnVwZGF0ZVBsdWdpbkluZm8oY29uc3QgU3RyaW5nJiBw
bHVnaW5QYXRoLCBjb25zdCBQbHVnaW5Nb2R1bGVJbmZvJiBwbHVnaW4pCiB7Ci0gICAgYXV0byBs
YXN0TW9kaWZpZWRUaW1lID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6Z2V0RmlsZU1vZGlmaWNhdGlv
blRpbWUocGx1Z2luUGF0aCk7CisgICAgYXV0byBsYXN0TW9kaWZpZWRUaW1lID0gRmlsZVN5c3Rl
bTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUocGx1Z2luUGF0aCk7CiAgICAgaWYgKCFsYXN0TW9k
aWZpZWRUaW1lKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1BsdWdpbnMvbWFjL1BsdWdpblByb2Nlc3NQcm94eU1hYy5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvbWFjL1BsdWdpblByb2Nlc3NQcm94eU1hYy5tbQppbmRl
eCA4OWZhYjVlY2I2NjZkMmI0NGZjYzIyMzllYmU1YmE1ZWUxYWM2M2Q4Li4zNjMzYzJhYjA3MDYw
MTFlYmQ3YmMxM2YxYTBiZmRhNWFkNmRkOWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5Qcm9jZXNzUHJveHlNYWMubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2luUHJvY2Vzc1Byb3h5TWFjLm1tCkBA
IC0zMywxMSArMzMsMTEgQEAKICNpbXBvcnQgIlBsdWdpblByb2Nlc3NNZXNzYWdlcy5oIgogI2lt
cG9ydCAiU2FuZGJveFV0aWxpdGllcy5oIgogI2ltcG9ydCA8UXVhcnR6Q29yZS9DQVJlbW90ZUxh
eWVyU2VydmVyLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPGNy
dF9leHRlcm5zLmg+CiAjaW1wb3J0IDxtYWNoLW8vZHlsZC5oPgogI2ltcG9ydCA8cGFsL3NwaS9j
Zi9DRk5ldHdvcmtTUEkuaD4KICNpbXBvcnQgPHNwYXduLmg+CisjaW1wb3J0IDx3dGYvRmlsZVN5
c3RlbS5oPgogI2ltcG9ydCA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KICNpbXBvcnQgPHd0Zi9V
UkwuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTU3LDggKzU3LDYgQEAgLSAo
Qk9PTClfd2FudHNVc2VyQXR0ZW50aW9uCiBAZW5kCiAKIG5hbWVzcGFjZSBXZWJLaXQgewotdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KICAgICAKIHZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5Ojpw
bGF0Zm9ybUdldExhdW5jaE9wdGlvbnNXaXRoQXR0cmlidXRlcyhQcm9jZXNzTGF1bmNoZXI6Okxh
dW5jaE9wdGlvbnMmIGxhdW5jaE9wdGlvbnMsIGNvbnN0IFBsdWdpblByb2Nlc3NBdHRyaWJ1dGVz
JiBwbHVnaW5Qcm9jZXNzQXR0cmlidXRlcykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5JbmZvU3RvcmVVbml4LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5JbmZvU3RvcmVVbml4LmNwcAppbmRl
eCAxZGZkODA3YzEyMzljMzA3OWVmOTI0MDc0NTBiODllYzkxMTljZjBjLi5hYTA5NDczNjgxNjU0
YTllZjY0NDA2YjJjNjQzOTAzZjdlMDEyNjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luSW5mb1N0b3JlVW5peC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpbkluZm9TdG9yZVVuaXguY3BwCkBA
IC0zNCwxMCArMzQsMTAgQEAKICNpbmNsdWRlICJOZXRzY2FwZVBsdWdpbk1vZHVsZS5oIgogI2lu
Y2x1ZGUgIlBsdWdpblNlYXJjaFBhdGguaCIKICNpbmNsdWRlICJQcm9jZXNzRXhlY3V0YWJsZVBh
dGguaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1BsYXRmb3JtRGlzcGxheS5oPgogI2luY2x1ZGUgPGxpbWl0cy5oPgogI2luY2x1ZGUgPHN0ZGxp
Yi5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKICNpZiBQTEFURk9STShHVEspCiAj
aW5jbHVkZSAiUGx1Z2luSW5mb0NhY2hlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAK
aW5kZXggZjg5NjEyMTcwZDAxMTE2MDQzMmVlZWVhM2Q5Yjg4YTM1MzhiNzEyMi4uYzUwMGMwZmNl
YTYyNzg4NmJhZGRkYzNmYzk1MGM2YzRlYTM4YmMwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJveHlV
bml4LmNwcApAQCAtMzIsOSArMzIsOSBAQAogCiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIlByb2Nlc3NFeGVjdXRhYmxlUGF0aC5oIgotI2lu
Y2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1E
aXNwbGF5Lmg+CiAjaW5jbHVkZSA8c3lzL3dhaXQuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3Rl
bS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2Vydmlj
ZVdvcmtlclByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA3MjY4ODNiM2NmODBmNDhmMmRiZmE1NjNmYzli
ZjdjNTVkNTcwMDZmLi41YmNkYTYzYTg2YjBlMWY4ZTk2NDYxOTQzMDk5MjZjYmE1MWYyZDE3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1By
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vz
c1Byb3h5LmNwcApAQCAtNjQsNyArNjQsNyBAQCBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5Ojp+
U2VydmljZVdvcmtlclByb2Nlc3NQcm94eSgpCiBib29sIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJv
eHk6Omhhc1JlZ2lzdGVyZWRTZXJ2aWNlV29ya2Vycyhjb25zdCBTdHJpbmcmIHNlcnZpY2VXb3Jr
ZXJEaXJlY3RvcnkpCiB7CiAgICAgU3RyaW5nIHJlZ2lzdHJhdGlvbkZpbGUgPSBXZWJDb3JlOjpz
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YWJhc2VGaWxlbmFtZShzZXJ2aWNlV29ya2VyRGly
ZWN0b3J5KTsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhyZWdp
c3RyYXRpb25GaWxlKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhyZWdpc3Ry
YXRpb25GaWxlKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5OjpnZXRMYXVu
Y2hPcHRpb25zKFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9ucyYgbGF1bmNoT3B0aW9ucykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9y
YWdlRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2Nh
bFN0b3JhZ2VEYXRhYmFzZS5jcHAKaW5kZXggMGMyNWQ2NTdlOTc3NmE3NDc0ZDIwNTVmZGY1NDg3
MmEwMGQ4ZWRkYi4uNDZmYjZjNzcyOTRmM2M2MzFkNGZmZmRmYzI0YTE0OGY3MDhhNDRjZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VE
YXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2Nh
bFN0b3JhZ2VEYXRhYmFzZS5jcHAKQEAgLTI3LDEyICsyNywxMiBAQAogI2luY2x1ZGUgIkxvY2Fs
U3RvcmFnZURhdGFiYXNlLmgiCiAKICNpbmNsdWRlICJMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNr
ZXIuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1NRTGl0ZVN0YXRlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlVHJhbnNhY3Rpb24u
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9TdG9yYWdlTWFwLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TdWRkZW5UZXJtaW5hdGlvbi5oPgor
I2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3Rv
cmFnZURhdGFiYXNlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJTdG9y
YWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5jcHAKaW5kZXggYWZmZDdlOGFjYWUyZGVj
YjVjODQ0ZTg3M2I1NmY3ZDE1M2QwYWM5Ni4uYzM3ODFkZjY3NjkwMGM2OTRiZTE0YmZlNmFlMzY0
OWJjMTg4OTBjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViU3RvcmFn
ZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNwcApAQCAtMjcs
MTAgKzI3LDEwIEBACiAjaW5jbHVkZSAiTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmgiCiAK
ICNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVGaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
UUxpdGVTdGF0ZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHRFbmNvZGluZy5oPgorI2lu
Y2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNp
bmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVE
YXRhU3RvcmVDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0Nv
Y29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQppbmRleCA0MjdhOWM4NWEzYjk4NDVhZTRmNzU0
ZmI0YzdhMzkyNjNjOGMxN2M5Li42MTkwMDUwMDA1OGQ1YThlMDc0OGNiMzYyYzFmNzZiNDQ1NGUy
YjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2Nv
YS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCkBAIC0zMCwxMCArMzAs
MTAgQEAKICNpbXBvcnQgIlN0b3JhZ2VNYW5hZ2VyLmgiCiAjaW1wb3J0ICJXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuaCIKICNpbXBvcnQgIldlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJz
LmgiCi0jaW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPFdlYkNvcmUvUnVu
dGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NlYXJjaFBvcHVwTWVu
dUNvY29hLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oPgorI2ltcG9ydCA8
d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2ltcG9y
dCA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KIApAQCAtMTIxLDcgKzEyMSw3IEBAIFdlYnNpdGVE
YXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMoKQogICAgIHBh
cmFtZXRlcnMucGVuZGluZ0Nvb2tpZXMgPSBjb3B5VG9WZWN0b3IobV9wZW5kaW5nQ29va2llcyk7
CiAKICAgICBpZiAoIWNvb2tpZUZpbGUuaXNFbXB0eSgpKQotICAgICAgICBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkoV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6ZGlyZWN0b3J5TmFtZShjb29raWVGaWxlKSwgcGFyYW1ldGVycy5jb29raWVTdG9yYWdlUGF0
aEV4dGVuc2lvbkhhbmRsZSk7CisgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRs
ZUZvclJlYWRXcml0ZURpcmVjdG9yeShGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKGNvb2tpZUZp
bGUpLCBwYXJhbWV0ZXJzLmNvb2tpZVN0b3JhZ2VQYXRoRXh0ZW5zaW9uSGFuZGxlKTsKIAogI2lm
IEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogICAgIHBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNl
RGlyZWN0b3J5ID0gcmVzb2x2ZWRJbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZS5jcHAKaW5kZXggMjFjMjdiODMxODEwNWZjNjFiYWFmNmYwMDY2M2I2ZTI1ZTY2OTBmYS4uNGY4
OTY0MTQ4MGEzMTQxOTdlNDUxMDZjMWY1NGEwODBhOGVkZWQ1MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAK
QEAgLTQ0LDcgKzQ0LDYgQEAKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0RhdGFiYXNlVHJhY2tlci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3Rl
bS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSFRNTE1lZGlhRWxlbWVudC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvT3JpZ2luTG9jay5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4K
QEAgLTUyLDYgKzUxLDcgQEAKICNpbmNsdWRlIDx3dGYvQ2FsbGJhY2tBZ2dyZWdhdG9yLmg+CiAj
aW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhy
ZWFkQ29waWVyLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYv
UHJvY2Vzc1ByaXZpbGVnZS5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKQEAgLTE5Myw4
ICsxOTMsOCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlc29sdmVEaXJlY3Rvcmllc0lmTmVj
ZXNzYXJ5KCkKIAogICAgIC8vIFJlc29sdmUgZGlyZWN0b3JpZXMgZm9yIGZpbGUgcGF0aHMuCiAg
ICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24tPmNvb2tpZVN0b3JhZ2VGaWxlKCkuaXNFbXB0eSgpKSB7
Ci0gICAgICAgIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5zZXRDb29raWVTdG9yYWdlRmlsZShy
ZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihXZWJD
b3JlOjpGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKG1fY29uZmlndXJhdGlvbi0+Y29va2llU3Rv
cmFnZUZpbGUoKSkpKTsKLSAgICAgICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPnNldENvb2tp
ZVN0b3JhZ2VGaWxlKFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+Y29va2llU3RvcmFnZUZpbGUoKSwgV2ViQ29yZTo6
RmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKG1fY29uZmlndXJhdGlvbi0+Y29va2llU3RvcmFn
ZUZpbGUoKSkpKTsKKyAgICAgICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPnNldENvb2tpZVN0
b3JhZ2VGaWxlKHJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0
ZW5zaW9uKEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUobV9jb25maWd1cmF0aW9uLT5jb29raWVT
dG9yYWdlRmlsZSgpKSkpOworICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+c2V0Q29v
a2llU3RvcmFnZUZpbGUoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fcmVz
b2x2ZWRDb25maWd1cmF0aW9uLT5jb29raWVTdG9yYWdlRmlsZSgpLCBGaWxlU3lzdGVtOjpwYXRo
R2V0RmlsZU5hbWUobV9jb25maWd1cmF0aW9uLT5jb29raWVTdG9yYWdlRmlsZSgpKSkpOwogICAg
IH0KIH0KIApAQCAtMjI1OSw3ICsyMjU5LDcgQEAgVmVjdG9yPFBsdWdpbk1vZHVsZUluZm8+IFdl
YnNpdGVEYXRhU3RvcmU6OnBsdWdpbnMoKSBjb25zdAogCiBzdGF0aWMgU3RyaW5nIGNvbXB1dGVN
ZWRpYUtleUZpbGUoY29uc3QgU3RyaW5nJiBtZWRpYUtleURpcmVjdG9yeSkKIHsKLSAgICByZXR1
cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1lZGlhS2V5
RGlyZWN0b3J5LCAiU2VjdXJlU3RvcC5wbGlzdCIpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQobWVkaWFLZXlEaXJlY3RvcnksICJTZWN1cmVTdG9wLnBs
aXN0Iik7CiB9CiAKIFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IFdlYnNpdGVE
YXRhU3RvcmU6Om1lZGlhS2V5T3JpZ2lucyhjb25zdCBTdHJpbmcmIG1lZGlhS2V5c1N0b3JhZ2VE
aXJlY3RvcnkpCkBAIC0yMjY4LDEyICsyMjY4LDEyIEBAIFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGE+IFdlYnNpdGVEYXRhU3RvcmU6Om1lZGlhS2V5T3JpZ2lucyhjb25zdCBTdHJp
CiAKICAgICBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBvcmlnaW5zOwogCi0g
ICAgZm9yIChjb25zdCBhdXRvJiBvcmlnaW5QYXRoIDogV2ViQ29yZTo6RmlsZVN5c3RlbTo6bGlz
dERpcmVjdG9yeShtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5LCAiKiIpKSB7CisgICAgZm9yIChj
b25zdCBhdXRvJiBvcmlnaW5QYXRoIDogRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShtZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5LCAiKiIpKSB7CiAgICAgICAgIGF1dG8gbWVkaWFLZXlGaWxlID0g
Y29tcHV0ZU1lZGlhS2V5RmlsZShvcmlnaW5QYXRoKTsKLSAgICAgICAgaWYgKCFXZWJDb3JlOjpG
aWxlU3lzdGVtOjpmaWxlRXhpc3RzKG1lZGlhS2V5RmlsZSkpCisgICAgICAgIGlmICghRmlsZVN5
c3RlbTo6ZmlsZUV4aXN0cyhtZWRpYUtleUZpbGUpKQogICAgICAgICAgICAgY29udGludWU7CiAK
LSAgICAgICAgYXV0byBtZWRpYUtleUlkZW50aWZpZXIgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpw
YXRoR2V0RmlsZU5hbWUob3JpZ2luUGF0aCk7CisgICAgICAgIGF1dG8gbWVkaWFLZXlJZGVudGlm
aWVyID0gRmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKG9yaWdpblBhdGgpOwogCiAgICAgICAg
IGlmIChhdXRvIHNlY3VyaXR5T3JpZ2luID0gV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpm
cm9tRGF0YWJhc2VJZGVudGlmaWVyKG1lZGlhS2V5SWRlbnRpZmllcikpCiAgICAgICAgICAgICBv
cmlnaW5zLmFwcGVuZCgqc2VjdXJpdHlPcmlnaW4pOwpAQCAtMjI4NiwxOCArMjI4NiwxOCBAQCB2
b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZU1lZGlhS2V5cyhjb25zdCBTdHJpbmcmIG1lZGlh
S2V5c1N0b3JhZ2VEaXJlY3RvcnksCiB7CiAgICAgQVNTRVJUKCFtZWRpYUtleXNTdG9yYWdlRGly
ZWN0b3J5LmlzRW1wdHkoKSk7CiAKLSAgICBmb3IgKGNvbnN0IGF1dG8mIG1lZGlhS2V5RGlyZWN0
b3J5IDogV2ViQ29yZTo6RmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShtZWRpYUtleXNTdG9yYWdl
RGlyZWN0b3J5LCAiKiIpKSB7CisgICAgZm9yIChjb25zdCBhdXRvJiBtZWRpYUtleURpcmVjdG9y
eSA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSwg
IioiKSkgewogICAgICAgICBhdXRvIG1lZGlhS2V5RmlsZSA9IGNvbXB1dGVNZWRpYUtleUZpbGUo
bWVkaWFLZXlEaXJlY3RvcnkpOwogCi0gICAgICAgIGF1dG8gbW9kaWZpY2F0aW9uVGltZSA9IFdl
YkNvcmU6OkZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKG1lZGlhS2V5RmlsZSk7
CisgICAgICAgIGF1dG8gbW9kaWZpY2F0aW9uVGltZSA9IEZpbGVTeXN0ZW06OmdldEZpbGVNb2Rp
ZmljYXRpb25UaW1lKG1lZGlhS2V5RmlsZSk7CiAgICAgICAgIGlmICghbW9kaWZpY2F0aW9uVGlt
ZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGlmIChtb2RpZmljYXRpb25UaW1l
LnZhbHVlKCkgPCBtb2RpZmllZFNpbmNlKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAg
ICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtZWRpYUtleUZpbGUpOwotICAgICAg
ICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShtZWRpYUtleURpcmVj
dG9yeSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobWVkaWFLZXlGaWxlKTsKKyAg
ICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkobWVkaWFLZXlEaXJlY3Rvcnkp
OwogICAgIH0KIH0KIApAQCAtMjMwNiwxMSArMjMwNiwxMSBAQCB2b2lkIFdlYnNpdGVEYXRhU3Rv
cmU6OnJlbW92ZU1lZGlhS2V5cyhjb25zdCBTdHJpbmcmIG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rv
cnksCiAgICAgQVNTRVJUKCFtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5LmlzRW1wdHkoKSk7CiAK
ICAgICBmb3IgKGNvbnN0IGF1dG8mIG9yaWdpbiA6IG9yaWdpbnMpIHsKLSAgICAgICAgYXV0byBt
ZWRpYUtleURpcmVjdG9yeSA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5LCBvcmlnaW4uZGF0YWJhc2VJZGVudGlm
aWVyKCkpOworICAgICAgICBhdXRvIG1lZGlhS2V5RGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnksIG9yaWdpbi5k
YXRhYmFzZUlkZW50aWZpZXIoKSk7CiAgICAgICAgIGF1dG8gbWVkaWFLZXlGaWxlID0gY29tcHV0
ZU1lZGlhS2V5RmlsZShtZWRpYUtleURpcmVjdG9yeSk7CiAKLSAgICAgICAgV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6ZGVsZXRlRmlsZShtZWRpYUtleUZpbGUpOwotICAgICAgICBXZWJDb3JlOjpGaWxl
U3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShtZWRpYUtleURpcmVjdG9yeSk7CisgICAgICAg
IEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobWVkaWFLZXlGaWxlKTsKKyAgICAgICAgRmlsZVN5c3Rl
bTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkobWVkaWFLZXlEaXJlY3RvcnkpOwogICAgIH0KIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUHJveHlH
TGliLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Byb3h5R0xp
Yi5jcHAKaW5kZXggOGY1ZmEwM2ZmNDY1MzJmNmI1ODI1NzllOTliMDE3YjA2NTQwYWVhNS4uMTY5
ZWEyMDEyNWIwMzA2MzdmYWZjMDc0N2NhODY5ODU4NTQ5NWI5YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUHJveHlHTGliLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQcm94eUdMaWIuY3BwCkBAIC0zMSw4
ICszMSw4IEBACiAjZW5kaWYKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgogI2luY2x1ZGUg
IldlYnNpdGVEYXRhU3RvcmUuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtRGlzcGxheS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lz
dGVtLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlH
dGsuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYkluc3BlY3RvclByb3h5R3Rr
LmNwcAppbmRleCBjYTE4N2E2NDIzNDExMmU4NTc5YmQ4NjE2MmQ5YjgzZmI0MjljODNhLi4xNmIw
MmE0MzU3NmU1NmYxYWUyMjYzYTBkZjRmMDY3MzIzNGRiZTA1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAKQEAgLTQyLDkg
KzQyLDkgQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgogI2luY2x1ZGUgIldlYlByb2Nl
c3NQcm94eS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ2VydGlmaWNhdGVJbmZvLmg+Ci0jaW5jbHVk
ZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HdGtVdGlsaXRpZXMu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW5jbHVkZSA8d3RmL0Zp
bGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2d0ay9XZWJQcm9jZXNzUG9vbEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsv
V2ViUHJvY2Vzc1Bvb2xHdGsuY3BwCmluZGV4IDYyNDA0MTVmMTU3Mjc5ZTRiZmMwYzU2YTJjZGE4
YjYyMjU5MDY5ZjYuLjZiMjM1NzQwNGUwM2FlMzAyMWFlODgwYjYzYThjZWMwZWU4NmYwZjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQcm9jZXNzUG9vbEd0ay5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NQb29sR3RrLmNw
cApAQCAtMzQsMTAgKzM0LDEwIEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL1JlbW90ZUluc3BlY3RvclNlcnZlci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmls
ZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR1N0cmVhbWVyQ29tbW9uLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2NoZW1lUmVn
aXN0cnkuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9nbGli
L0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
Lm1tCmluZGV4IDgwMzhhOTIwNDcwOTQwM2M2MmQ5MDEyZDA5NDRmNDdiN2Q1NzBlYWMuLmZlYjJj
YTgzMjE4NTQzODc2NDczZDJlMmIyMzMwYmZhNDkwNDJmNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAt
NTY3MSw3ICs1NjcxLDcgQEAgLSAodm9pZClfcHJlcGFyZVRvRHJhZ1Byb21pc2VkQXR0YWNobWVu
dDooY29uc3QgV2ViQ29yZTo6UHJvbWlzZWRBdHRhY2htZW50SW5mbyYKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCi0gICAgICAgIE5TU3RyaW5nICp0ZW1wb3JhcnlCbG9iRGlyZWN0
b3J5ID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KEAiYmxv
YnMiKTsKKyAgICAgICAgTlNTdHJpbmcgKnRlbXBvcmFyeUJsb2JEaXJlY3RvcnkgPSBGaWxlU3lz
dGVtOjpjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoQCJibG9icyIpOwogICAgICAgICBOU1VSTCAq
ZGVzdGluYXRpb25VUkwgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOlt0ZW1wb3JhcnlCbG9iRGly
ZWN0b3J5IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpbTlNVVUlEIFVVSURdLlVVSURT
dHJpbmddIGlzRGlyZWN0b3J5Ok5PXTsKIAogICAgICAgICBhdXRvIGF0dGFjaG1lbnQgPSBzdHJv
bmdTZWxmLT5fcGFnZS0+YXR0YWNobWVudEZvcklkZW50aWZpZXIoaW5mby5hdHRhY2htZW50SWRl
bnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMv
V0tGaWxlVXBsb2FkUGFuZWwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMv
V0tGaWxlVXBsb2FkUGFuZWwubW0KaW5kZXggNjgwMTY0NmQwOGY5ZDA5ZmUzZTczOTgzODQ1NzI5
YmUyMTFkNWFhNi4uODc3MTE0ZmNmMjY2ZTk5MmFlYmRkOTAzNjA0MDZhMWQ4OTc1MWRmNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRmlsZVVwbG9hZFBh
bmVsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0ZpbGVVcGxv
YWRQYW5lbC5tbQpAQCAtNjIwLDcgKzYyMCw3IEBAIC0gKHZvaWQpX3VwbG9hZEl0ZW1Gb3JJbWFn
ZURhdGE6KE5TRGF0YSAqKWltYWdlRGF0YSBpbWFnZU5hbWU6KE5TU3RyaW5nICopaW1hZ2VOCiAg
ICAgTlNTdHJpbmcgKiBjb25zdCBrVGVtcG9yYXJ5RGlyZWN0b3J5TmFtZSA9IEAiV0tXZWJGaWxl
VXBsb2FkIjsKIAogICAgIC8vIEJ1aWxkIHRlbXBvcmFyeSBmaWxlIHBhdGguCi0gICAgTlNTdHJp
bmcgKnRlbXBvcmFyeURpcmVjdG9yeSA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBv
cmFyeURpcmVjdG9yeShrVGVtcG9yYXJ5RGlyZWN0b3J5TmFtZSk7CisgICAgTlNTdHJpbmcgKnRl
bXBvcmFyeURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShr
VGVtcG9yYXJ5RGlyZWN0b3J5TmFtZSk7CiAgICAgTlNTdHJpbmcgKmZpbGVQYXRoID0gW3RlbXBv
cmFyeURpcmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6aW1hZ2VOYW1lXTsK
ICAgICBpZiAoIWZpbGVQYXRoKSB7CiAgICAgICAgIExPR19FUlJPUigiV0tGaWxlVXBsb2FkUGFu
ZWw6IEZhaWxlZCB0byBjcmVhdGUgdGVtcG9yYXJ5IGRpcmVjdG9yeSB0byBzYXZlIGltYWdlIik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFj
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRl
eCA2MmJlNDEwZjIzYjBlMmMzMzAzMGJiMDljMWU2MmYxYzhiMjBlMWMwLi44MzAwNGQ3MGE4MTc3
NzE2MTgzODRkNGQ4ZjI4MTVjZjIxMWE3NzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KQEAgLTQ5NSw3ICs0OTUsNyBAQCBzdGF0aWMgTlNT
dHJpbmcgKnBhdGhUb1BERk9uRGlzayhjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lKQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6c2F2ZVBERlRvVGVtcG9yYXJ5Rm9sZGVyQW5kT3BlbldpdGhO
YXRpdmVBcHBsaWNhdGlvblJhdyhjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25z
dCBTdHJpbmcmIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBjb25zdCB1aW50OF90KiBkYXRhLCB1bnNp
Z25lZCBsb25nIHNpemUsIGNvbnN0IFN0cmluZyYgcGRmVVVJRCkKIHsKLSAgICAvLyBGSVhNRTog
V3JpdGUgb3JpZ2luYXRpbmdVUkxTdHJpbmcgdG8gdGhlIGZpbGUncyBvcmlnaW5hdGluZyBVUkwg
bWV0YWRhdGEgKHBlcmhhcHMgV2ViQ29yZTo6RmlsZVN5c3RlbTo6c2V0TWV0YWRhdGFVUkwoKT8p
LgorICAgIC8vIEZJWE1FOiBXcml0ZSBvcmlnaW5hdGluZ1VSTFN0cmluZyB0byB0aGUgZmlsZSdz
IG9yaWdpbmF0aW5nIFVSTCBtZXRhZGF0YSAocGVyaGFwcyBGaWxlU3lzdGVtOjpzZXRNZXRhZGF0
YVVSTCgpPykuCiAgICAgVU5VU0VEX1BBUkFNKG9yaWdpbmF0aW5nVVJMU3RyaW5nKTsKIAogICAg
IGlmICghc3VnZ2VzdGVkRmlsZW5hbWUuZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgiLnBkZiIp
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1Bv
b2xXaW4uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlByb2Nlc3NQb29sV2lu
LmNwcAppbmRleCAxMDE1ZmYwNjA2Y2Y0YmI0Y2Y1NjJhMDc4OTI4ODczMzY1NmY5ZWQ2Li4zOTBh
MGM5MDE5MjE5NDMzYzVmYTQ5ZDNlMzg0NGExYjgzNTUyOGNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1Bvb2xXaW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJQcm9jZXNzUG9vbFdpbi5jcHAKQEAgLTI4LDggKzI4LDgg
QEAKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgogCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3Rl
bS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dl
YlZpZXcuY3BwCmluZGV4IGVmNzkxOWM3MjBmZTcxN2I1OTA5MTliYjg1YjQ1ODE4NWJhNTBmYjEu
LjBmOWY5ZDRlZmQ1Mjg2YzYyNjg0M2FjM2EwNGNkMmU2YmQ5NDk5ZTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKQEAgLTQ0LDcgKzQ0LDYgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL0JpdG1hcEluZm8uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0N1cnNvci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvRWRpdG9yLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hXbmREQy5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgpAQCAtNTUsNiArNTQsNyBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvV2luZG93c1RvdWNoLmg+CiAjaW5jbHVkZSA8Y2Fpcm8td2luMzIuaD4KICNp
bmNsdWRlIDxjYWlyby5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8
d3RmL1NvZnRMaW5raW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVmZmVyLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3Mvd3BlL1dlYlByb2Nlc3NQb29sV1BFLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL3dwZS9XZWJQcm9jZXNzUG9vbFdQRS5jcHAKaW5kZXggNjI1NWM0MjdiN2ExYmE1
Y2ZlZWQwY2IzN2RlNWMwMmMwYmNjZTVkMS4uZjUxMDE3YThjYTI5ZWQwNzk5NGQ3ZDIwN2M5NTcx
NDExMmEzOGJmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd3BlL1dlYlBy
b2Nlc3NQb29sV1BFLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93cGUvV2ViUHJv
Y2Vzc1Bvb2xXUEUuY3BwCkBAIC0zNCwxMCArMzQsMTAgQEAKICNpbmNsdWRlICJXZWJDb29raWVN
YW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgi
CiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxl
U3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU2NoZW1lUmVnaXN0cnkuaD4KICNpbmNsdWRlIDxjc3RkbGliPgorI2luY2x1ZGUg
PHd0Zi9GaWxlU3lzdGVtLmg+CiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9SZW1vdGVJbnNwZWN0b3JTZXJ2ZXIuaD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRF
eHRlbnNpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ2xpYi9XZWJLaXRFeHRlbnNpb25NYW5hZ2VyLmNwcAppbmRleCBhYWMyODI4MGNh
NTIwYmY4Mzk2NWI3OTRjM2UzNGZlYWZjNjFlZTc1Li40Y2NlYzYyZWYwZTExMzFmYTEzZjdmYjA2
MGM4MGUwN2VlNDI1MWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0RXh0ZW5zaW9uTWFuYWdlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdEV4dGVu
c2lvbk1hbmFnZXIuY3BwCkBAIC0yMyw4ICsyMyw4IEBACiAjaW5jbHVkZSAiQVBJU3RyaW5nLmgi
CiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJFeHRlbnNp
b25Qcml2YXRlLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8
bWVtb3J5PgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTQxLDkgKzQxLDkgQEAgV2ViS2l0
RXh0ZW5zaW9uTWFuYWdlcjo6V2ViS2l0RXh0ZW5zaW9uTWFuYWdlcigpCiAKIHZvaWQgV2ViS2l0
RXh0ZW5zaW9uTWFuYWdlcjo6c2Nhbk1vZHVsZXMoY29uc3QgU3RyaW5nJiB3ZWJFeHRlbnNpb25z
RGlyZWN0b3J5LCBWZWN0b3I8U3RyaW5nPiYgbW9kdWxlcykKIHsKLSAgICBWZWN0b3I8U3RyaW5n
PiBtb2R1bGVQYXRocyA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06Omxpc3REaXJlY3Rvcnkod2ViRXh0
ZW5zaW9uc0RpcmVjdG9yeSwgU3RyaW5nKCIqLnNvIikpOworICAgIFZlY3RvcjxTdHJpbmc+IG1v
ZHVsZVBhdGhzID0gRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeSh3ZWJFeHRlbnNpb25zRGlyZWN0
b3J5LCBTdHJpbmcoIiouc28iKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtb2R1bGVQ
YXRocy5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAoV2ViQ29yZTo6RmlsZVN5c3RlbTo6Zmls
ZUV4aXN0cyhtb2R1bGVQYXRoc1tpXSkpCisgICAgICAgIGlmIChGaWxlU3lzdGVtOjpmaWxlRXhp
c3RzKG1vZHVsZVBhdGhzW2ldKSkKICAgICAgICAgICAgIG1vZHVsZXMuYXBwZW5kKG1vZHVsZVBh
dGhzW2ldKTsKICAgICB9CiB9CkBAIC02Myw3ICs2Myw3IEBAIHN0YXRpYyB2b2lkIHBhcnNlVXNl
ckRhdGEoQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBTdHJpbmcmIHdlYkV4dGVuc2lvbnNEaXJlY3Rv
cnksCiAgICAgR1ZhcmlhbnQqIGRhdGEgPSBudWxscHRyOwogICAgIGdfdmFyaWFudF9nZXQodmFy
aWFudC5nZXQoKSwgIihtJnNtdikiLCAmZGlyZWN0b3J5LCAmZGF0YSk7CiAKLSAgICB3ZWJFeHRl
bnNpb25zRGlyZWN0b3J5ID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihkaXJlY3RvcnkpOworICAgIHdlYkV4dGVuc2lvbnNEaXJlY3Rvcnkg
PSBGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRpcmVjdG9y
eSk7CiAgICAgaW5pdGlhbGl6YXRpb25Vc2VyRGF0YSA9IGFkb3B0R1JlZihkYXRhKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL2dsaWIv
SW5qZWN0ZWRCdW5kbGVHbGliLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9nbGliL0luamVjdGVkQnVuZGxlR2xpYi5jcHAKaW5kZXggMGE4NjA2NTJmMDBkYWQ5
MzI4Y2YzNTVkNDA1MTNmZTgwZjVlZjY1OC4uZWQ5NjU4Y2ExZjQ2YTRjNzdjYzcyNjAzMzBkMTYw
YWFkMjg4Mjc2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL2dsaWIvSW5qZWN0ZWRCdW5kbGVHbGliLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvZ2xpYi9JbmplY3RlZEJ1bmRsZUdsaWIuY3BwCkBAIC0y
OSwxMSArMjksMTAgQEAKIAogI2luY2x1ZGUgIldLQnVuZGxlQVBJQ2FzdC5oIgogI2luY2x1ZGUg
IldLQnVuZGxlSW5pdGlhbGl6ZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgor
I2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBib29s
IEluamVjdGVkQnVuZGxlOjppbml0aWFsaXplKGNvbnN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMmLCBBUEk6Ok9iamVjdCogaW5pdGlhbGl6YXRpb25Vc2VyRGF0YSkKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFn
ZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVk
aWFLZXlTdG9yYWdlTWFuYWdlci5jcHAKaW5kZXggNGJmNDhkMGU5NGVlZjc2MDY2Y2EzMGVhOWNm
MzU3MDRhYjNkZWFlYi4uYmQzOTgyNDI2YzY2ZTYzNWI2YzU2MDVjYmU1YTNiMDUwMjVkM2ExYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFL
ZXlTdG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlh
Q2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5jcHAKQEAgLTI3LDkgKzI3LDkgQEAKICNp
bmNsdWRlICJXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmgiCiAKICNpbmNsdWRlICJXZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U2VjdXJpdHlPcmlnaW5EYXRhLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNs
dWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0u
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1
Z2luU3RyZWFtLmgKaW5kZXggYmI2YTViMDhjN2NjZTVkZGVkODk5MzYwZjdhYjgzNDBmMDM5NWU3
NC4uM2VkY2VjNmE3MmNjYzNhYTY0ZDgxOWZhOTMzN2Y0M2U2MmU3ZDc2ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5T
dHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9O
ZXRzY2FwZVBsdWdpblN0cmVhbS5oCkBAIC0yNyw5ICsyNyw5IEBACiAKICNpZiBFTkFCTEUoTkVU
U0NBUEVfUExVR0lOX0FQSSkKIAotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvbnBydW50aW1lX2ludGVybmFsLmg+CiAjaW5jbHVkZSA8bWVtb3J5Pgor
I2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTg5
LDcgKzg5LDcgQEAgcHJpdmF0ZToKICAgICBpbnQzMl90IG1fb2Zmc2V0OwogCiAgICAgU3RyaW5n
IG1fZmlsZVBhdGg7Ci0gICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxl
IG1fZmlsZUhhbmRsZTsKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgbV9maWxl
SGFuZGxlOwogICAgIAogICAgIC8vIFdoZXRoZXIgTlBQX05ld1N0cmVhbSBoYXMgc3VjY2Vzc2Z1
bGx5IGJlZW4gY2FsbGVkLgogICAgIGJvb2wgbV9pc1N0YXJ0ZWQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bi5jcHAKaW5kZXggMDFjNTNmM2Q4NDNkZDFkMjQzMTRmNWNjMGMxMmU5MDk2NGVmYmJlNC4uMjZk
NmQ1MDBlNjlhMDE5M2IxZGY1ZjQwM2YxZjNmMThjMmM4ZWQ1ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0
aW9uLmNwcApAQCAtMzYsMTAgKzM2LDkgQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5j
bHVkZSAiV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU09iamVjdC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUg
PHd0Zi9GaWxlU3lzdGVtLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewotdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpQbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbihQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIqIHBsdWdpblByb2Nlc3NDb25uZWN0
aW9uTWFuYWdlciwgdWludDY0X3QgcGx1Z2luUHJvY2Vzc1Rva2VuLCBJUEM6OkNvbm5lY3Rpb246
OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIsIGJvb2wgc3VwcG9ydHNBc3luY2hyb25v
dXNQbHVnaW5Jbml0aWFsaXphdGlvbikKICAgICA6IG1fcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25N
YW5hZ2VyKHBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9u
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3Rh
dGVDb252ZXJzaW9uLmNwcAppbmRleCA2M2MzNmEzZGI2OWE4MmFkM2JlYTY2MGY2YjA2ZGZlNzYz
YzU1NjE3Li4xZDgxNjZhMDdlM2ZkOTc4ODFjYjdmNDRmNGE2YmVmZjg1YmJmZTVjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRl
Q29udmVyc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwCkBAIC0yOCw5ICsyOCw5IEBACiAKICNpbmNs
dWRlICJTZXNzaW9uU3RhdGUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Jsb2JEYXRhLmg+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Gb3JtRGF0YS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvSGlzdG9yeUl0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5
c3RlbS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYkluc3Bl
Y3RvclVJR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJJ
bnNwZWN0b3JVSUd0ay5jcHAKaW5kZXggODljM2JhMWFhODkzOWNmYTUxZjZmYjIyMWE3M2IzOGQ3
ODAzMjdhMy4uZGJiMmE5MTgwNGJlMTMyNjQ4YzlhZDMzZTZmMDI3YmRkM2YxMTBmMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYkluc3BlY3RvclVJ
R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViSW5z
cGVjdG9yVUlHdGsuY3BwCkBAIC0yOCw4ICsyOCw4IEBACiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9y
VUkuaCIKICNpbmNsdWRlICJSZW1vdGVXZWJJbnNwZWN0b3JVSS5oIgogCi0jaW5jbHVkZSA8V2Vi
Q29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8Z2xpYi5oPgorI2luY2x1ZGUgPHd0Zi9GaWxl
U3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2lu
L1dlYkluc3BlY3RvclVJV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L3dpbi9XZWJJbnNwZWN0b3JVSVdpbi5jcHAKaW5kZXggNmE3YWYzYzVkNjQ5YzUwNGVlZGFkNDlj
OTFhMWZiNDQzNWU0YTE4Yy4uNDcxMTE0Y2FmYTE0YTdkMWYzM2ZmYTJjMWU4YWZiYmJlZDJlMDNh
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL1dlYklu
c3BlY3RvclVJV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93
aW4vV2ViSW5zcGVjdG9yVUlXaW4uY3BwCkBAIC0yOCw4ICsyOCw4IEBACiAKICNpbmNsdWRlICJS
ZW1vdGVXZWJJbnNwZWN0b3JVSS5oIgogCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9XZWJDb3JlQnVuZGxlV2luLmg+CisjaW5jbHVkZSA8d3RmL0Zp
bGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNl
IFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2Vi
UHJvY2Vzc0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nl
c3NDb2NvYS5tbQppbmRleCBhNDQ2ODFjNzcyNzFjMDRhNzk2ZjA3YmJjY2FjM2JlY2M0ODFmNzVh
Li4zNWQ1N2Q1Y2U2N2I2NTg3NjA3OTNkY2M3YzQwOTE2OWY4NTgwYWY1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KQEAgLTUxLDcg
KzUxLDYgQEAKICNpbXBvcnQgPFdlYkNvcmUvQVhPYmplY3RDYWNoZS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9DUFVNb25pdG9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Rpc3BsYXlSZWZyZXNoTW9uaXRv
ck1hbmFnZXIuaD4KLSNpbXBvcnQgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9Gb250Q2FjaGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvRm9udENhc2NhZGUuaD4KICNpbXBv
cnQgPFdlYkNvcmUvSGlzdG9yeUNvbnRyb2xsZXIuaD4KQEAgLTcyLDYgKzcxLDcgQEAKICNpbXBv
cnQgPHBhbC9zcGkvbWFjL05TQWNjZXNzaWJpbGl0eVNQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9t
YWMvTlNBcHBsaWNhdGlvblNQSS5oPgogI2ltcG9ydCA8c3RkaW8uaD4KKyNpbXBvcnQgPHd0Zi9G
aWxlU3lzdGVtLmg+CiAjaW1wb3J0IDx3dGYvY29jb2EvTlNVUkxFeHRyYXMuaD4KIAogI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3Jh
Z2UvU3RvcmFnZUFyZWFTeW5jLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9y
YWdlQXJlYVN5bmMuY3BwCmluZGV4IDQwMzk5NjBiMTQwZmNiOWM2M2E3NmQ2ZDA3NzEzYTNhMzE4
MmM1YTQuLjE3ZDQ4OTQ5NGQ3ZTA5MGQzZmY3MzVlZmYyNjQ0NWVmZWM2YjkyOTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuY3BwCkBAIC0yOCwx
MSArMjgsMTEgQEAKICNpbmNsdWRlICJTdG9yYWdlQXJlYUltcGwuaCIKICNpbmNsdWRlICJTdG9y
YWdlU3luY01hbmFnZXIuaCIKICNpbmNsdWRlICJTdG9yYWdlVHJhY2tlci5oIgotI2luY2x1ZGUg
PFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlRGF0YWJhc2VU
cmFja2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVTdGF0ZW1lbnQuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1NRTGl0ZVRyYW5zYWN0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TdWRkZW5U
ZXJtaW5hdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3Rm
L01haW5UaHJlYWQuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIuY3BwCmluZGV4IDNlOGZm
NjVlZTYwZjI3NGRjOTA0ZWI1OGMxMTc0ZWQ1Y2MxYTU3NGMuLjM2OTA5NWNkYWQxZDM0NzExYTA2
NzZkODczNmE5MGUxOTNlMjkwNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3Rv
cmFnZS9TdG9yYWdlU3luY01hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3Rv
cmFnZS9TdG9yYWdlU3luY01hbmFnZXIuY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAi
U3RvcmFnZVN5bmNNYW5hZ2VyLmgiCiAKICNpbmNsdWRlICJTdG9yYWdlVGhyZWFkLmgiCi0jaW5j
bHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4K
ICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFj
a2VyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAK
aW5kZXggNzEwMTQwYjFiMTMzYTJlYjU5Mzk2ZDc2NzQ4NmQyMTgzZWM5MDQ4NC4uYjkzNGQxYTNi
MWJhYTgzMWFkZGYzYWJlNWUwNzcwYWIxY2Y3N2ZhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCkBAIC0yOCwxMyArMjgsMTMgQEAKICNpbmNs
dWRlICJTdG9yYWdlVGhyZWFkLmgiCiAjaW5jbHVkZSAiU3RvcmFnZVRyYWNrZXJDbGllbnQuaCIK
ICNpbmNsdWRlICJXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaCIKLSNpbmNsdWRlIDxXZWJD
b3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VHcm91cC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU1FMaXRlRGF0YWJhc2VUcmFja2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
UUxpdGVTdGF0ZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1RleHRFbmNvZGluZy5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8
d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlz
Yy9XZWJOU0ZpbGVNYW5hZ2VyRXh0cmFzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlz
Yy9XZWJOU0ZpbGVNYW5hZ2VyRXh0cmFzLm1tCmluZGV4IDkwNTE3NGRhNzU2ZGQ2MjhiZWRlZmQ1
MGMyYjIzNzI5ZTUzMzUwMmIuLmM1NDEzZTgxYzZhM2VjYjJlYzk3ODFmNmI4YmZkNmMyYjJhMDVk
ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNGaWxlTWFu
YWdlckV4dHJhcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TRmls
ZU1hbmFnZXJFeHRyYXMubW0KQEAgLTMwLDEwICszMCwxMCBAQAogCiAjaW1wb3J0ICJXZWJLaXRO
U1N0cmluZ0V4dHJhcy5oIgogI2ltcG9ydCAiV2ViTlNVUkxFeHRyYXMuaCIKLSNpbXBvcnQgPFdl
YkNvcmUvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Mb2FkZXJOU1VSTEV4dHJhcy5o
PgogI2ltcG9ydCA8c3lzL3N0YXQuaD4KICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW1w
b3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8d3RmL09iakNSdW50aW1lRXh0cmFzLmg+
CiAKIEBpbXBsZW1lbnRhdGlvbiBOU0ZpbGVNYW5hZ2VyIChXZWJOU0ZpbGVNYW5hZ2VyRXh0cmFz
KQpAQCAtNDQsNyArNDQsNyBAQCAtICh2b2lkKV93ZWJraXRfc2V0TWV0YWRhdGFVUkw6KE5TU3Ry
aW5nICopVVJMU3RyaW5nIHJlZmVycmVyOihOU1N0cmluZyAqKXJlZmVycgogewogICAgIEFTU0VS
VChVUkxTdHJpbmcpOwogICAgIEFTU0VSVChwYXRoKTsKLSAgICBXZWJDb3JlOjpGaWxlU3lzdGVt
OjpzZXRNZXRhZGF0YVVSTChwYXRoLCBVUkxTdHJpbmcsIHJlZmVycmVyKTsKKyAgICBGaWxlU3lz
dGVtOjpzZXRNZXRhZGF0YVVSTChwYXRoLCBVUkxTdHJpbmcsIHJlZmVycmVyKTsKIH0KIAogI2Vu
ZGlmIC8vICFQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtOTMsNyArOTMsNyBAQCAtIChOU1N0cmlu
ZyAqKV93ZWJraXRfcGF0aFdpdGhVbmlxdWVGaWxlbmFtZUZvclBhdGg6KE5TU3RyaW5nICopcGF0
aAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAtIChOU1N0cmluZyAqKV93ZWJraXRfY3JlYXRl
VGVtcG9yYXJ5RGlyZWN0b3J5V2l0aFRlbXBsYXRlUHJlZml4OihOU1N0cmluZyAqKXByZWZpeAog
ewotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpjcmVhdGVUZW1wb3JhcnlEaXJlY3Rv
cnkocHJlZml4KTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0
b3J5KHByZWZpeCk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZVByb3ZpZGVyLm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZVByb3ZpZGVyLm1tCmluZGV4IDc0OTViMTc1ZmZmNDVk
YzVhNTRiMDE0ZjhkNWJmMDNlNTQzOTQzY2MuLmFkYzRjMzk4ODRjNGNiMmQyYTNiZWI2YjE5NWJj
ZGEwMDA4OWMxNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2Uv
V2ViRGF0YWJhc2VQcm92aWRlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9y
YWdlL1dlYkRhdGFiYXNlUHJvdmlkZXIubW0KQEAgLTI2LDE2ICsyNiwxNiBAQAogI2ltcG9ydCAi
V2ViRGF0YWJhc2VQcm92aWRlci5oIgogI2ltcG9ydCAiV2ViRGF0YWJhc2VNYW5hZ2VyUHJpdmF0
ZS5oIgogCi0jaW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KKyNpbXBvcnQgPHd0Zi9GaWxl
U3lzdGVtLmg+CiAKIFN0cmluZyBXZWJEYXRhYmFzZVByb3ZpZGVyOjppbmRleGVkRGF0YWJhc2VE
aXJlY3RvcnlQYXRoKCkKIHsKICAgICBOU1VzZXJEZWZhdWx0cyAqZGVmYXVsdHMgPSBbTlNVc2Vy
RGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdOwogICAgIE5TU3RyaW5nICpkYXRhYmFzZXNE
aXJlY3RvcnkgPSBbZGVmYXVsdHMgb2JqZWN0Rm9yS2V5OldlYkRhdGFiYXNlRGlyZWN0b3J5RGVm
YXVsdHNLZXldOwogICAgIGlmICghZGF0YWJhc2VzRGlyZWN0b3J5IHx8ICFbZGF0YWJhc2VzRGly
ZWN0b3J5IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCi0gICAgICAgIGRhdGFiYXNl
c0RpcmVjdG9yeSA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dCgifi9MaWJyYXJ5L1dlYktpdC9EYXRhYmFzZXMvX19fSW5kZXhlZERCIl9zLCBbW05TQnVuZGxl
IG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdKTsKKyAgICAgICAgZGF0YWJhc2VzRGlyZWN0
b3J5ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KCJ+L0xpYnJhcnkvV2Vi
S2l0L0RhdGFiYXNlcy9fX19JbmRleGVkREIiX3MsIFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVu
ZGxlSWRlbnRpZmllcl0pOwogICAgIGVsc2UKLSAgICAgICAgZGF0YWJhc2VzRGlyZWN0b3J5ID0g
V2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlc0Rp
cmVjdG9yeSwgIl9fX0luZGV4ZWREQiJfcyk7CisgICAgICAgIGRhdGFiYXNlc0RpcmVjdG9yeSA9
IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZXNEaXJlY3Rvcnks
ICJfX19JbmRleGVkREIiX3MpOwogICAgIAogICAgIHJldHVybiBbZGF0YWJhc2VzRGlyZWN0b3J5
IHN0cmluZ0J5U3RhbmRhcmRpemluZ1BhdGhdOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDJkZTAzYWMzNmNjNWNlNDU1ZDc1N2VkNzYzMDg4YTU2
YThkNGY5MDIuLjdiMmMzMzE0MjJlYzAxYTc0MmYwMzg3N2Q5OGJlODYzZDkyNDc5NjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTE0OCw3ICsxNDgs
NiBAQAogI2ltcG9ydCA8V2ViQ29yZS9FZGl0b3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvRXZlbnQu
aD4KICNpbXBvcnQgPFdlYkNvcmUvRXZlbnRIYW5kbGVyLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0Zp
bGVTeXN0ZW0uaD4KICNpbXBvcnQgPFdlYkNvcmUvRm9jdXNDb250cm9sbGVyLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0ZvbnRBdHRyaWJ1dGVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZvbnRDYWNoZS5o
PgpAQCAtMjMxLDYgKzIzMCw3IEBACiAjaW1wb3J0IDxwYWwvc3BpL21hYy9OU1NwZWxsQ2hlY2tl
clNQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9tYWMvTlNXaW5kb3dTUEkuaD4KICNpbXBvcnQgPHd0
Zi9Bc3NlcnRpb25zLmg+CisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8d3Rm
L0hhc2hUcmFpdHMuaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW1wb3J0IDx3dGYv
T2JqQ1J1bnRpbWVFeHRyYXMuaD4KQEAgLTY4ODMsNyArNjg4Myw3IEBAIC0gKEJPT0wpcGVyZm9y
bURyYWdPcGVyYXRpb246KGlkIDxOU0RyYWdnaW5nSW5mbz4pZHJhZ2dpbmdJbmZvCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAotICAgICAgICBOU1N0cmluZyAqZHJvcERl
c3RpbmF0aW9uUGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVj
dG9yeShAIldlYktpdERyb3BEZXN0aW5hdGlvbiIpOworICAgICAgICBOU1N0cmluZyAqZHJvcERl
c3RpbmF0aW9uUGF0aCA9IEZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShAIldl
YktpdERyb3BEZXN0aW5hdGlvbiIpOwogICAgICAgICBpZiAoIWRyb3BEZXN0aW5hdGlvblBhdGgp
IHsKICAgICAgICAgICAgIGRlbGV0ZSBkcmFnRGF0YTsKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0
YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFz
ZS5jcHAKaW5kZXggYmM3OWQ4OWJkNDQ2YzU2ZWExYmE5ZDU3Yzc1YWUzOTlhYThmMDRjZi4uNjQx
YWMzNTRjMzQxOTY3ZWE2Y2VkNjkwZDVlNmQ0NWM2YzJjMmExYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKQEAgLTMzLDcgKzMz
LDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKICNpZiBFTkFCTEUoTkVUU0NB
UEVfUExVR0lOX01FVEFEQVRBX0NBQ0hFKQotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKKyNpbmNs
dWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luUGFja2FnZS5o
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5QYWNrYWdlLmgKaW5kZXgg
YjQ4ODNkZWE5OTc2ZGI1MGNkZTUyODYwYWE5YjkyYjViYjEwMTBkZi4uODk4N2EzZDM1M2M3NmMw
YWE0NDZlYWIzOTA4MzczMzM5ZDUxN2QzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vUGx1Z2lucy9QbHVnaW5QYWNrYWdlLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vUGx1Z2lucy9QbHVnaW5QYWNrYWdlLmgKQEAgLTI5LDggKzI5LDggQEAKIAogI2luY2x1ZGUg
IlBsYXRmb3JtTW9kdWxlLmgiCiAjaW5jbHVkZSAiUGx1Z2luUXVpcmtTZXQuaCIKLSNpbmNsdWRl
IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+CisjaW5j
bHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5TdHJlYW0u
aCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luU3RyZWFtLmgKaW5kZXgg
YzFiOWY4N2FjNGU2MjJmYmIyZTJlMjA1ZDE2NDU5YzBjMTk0ZTdiNi4uNDMxYjM2MzAzNjJjOWU1
MjExMThkZDAzMjczYTZjZDljMjhjYzQ2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vUGx1Z2lucy9QbHVnaW5TdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9QbHVnaW5zL1BsdWdpblN0cmVhbS5oCkBAIC0yNywxMiArMjcsMTIgQEAKICNwcmFnbWEgb25j
ZQogCiAjaW5jbHVkZSAiUGx1Z2luUXVpcmtTZXQuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVT
eXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1Jlc291cmNlUmVzcG9uc2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9ucHJ1bnRpbWVfaW50ZXJuYWwuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3Rl
bS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJBcHBsaWNhdGlvbkNhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkFwcGxpY2F0aW9uQ2FjaGUuY3BwCmluZGV4IGI4NWRkMTU0NDBhNmVhNTQwNGE4YTQ4NTIxNDNl
NTkxNzhmZWMxMmQuLjkwYmUxZmNlNzUxYjRmMWI1ZDk0YjFiYjY3NGMzNmIzZWM1NjlmY2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFwcGxpY2F0aW9uQ2FjaGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFwcGxpY2F0aW9uQ2FjaGUuY3BwCkBA
IC0zMCwxMyArMzAsMTMgQEAKICNpbmNsdWRlICJNYXJzaGFsbGluZ0hlbHBlcnMuaCIKICNpbmNs
dWRlICJXZWJQcmVmZXJlbmNlcy5oIgogI2luY2x1ZGUgIldlYlNlY3VyaXR5T3JpZ2luLmgiCi0j
aW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQXBwbGljYXRpb25D
YWNoZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0NPTVB0ci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbmNsdWRlIDxjb211dGls
Lmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRy
Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcAppbmRleCAzZjZjMzhiMDYyOGRiNGJhY2Y5YzQx
MzU3YjU5MWE3ZGVjOWFjZDQxLi5mOTk2M2YxYzA2ODk2ZDdhMmNiMmQ3MzNhMThlZmFhYWYzY2U0
ODA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFn
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5j
cHAKQEAgLTM5LDkgKzM5LDkgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0NPTVB0ci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvRGF0YWJhc2VNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EYXRhYmFz
ZVRyYWNrZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdp
bkRhdGEuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9NYWlu
VGhyZWFkLmg+CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKQEAgLTQzNiw3ICs0MzYs
NyBAQCBzdGF0aWMgV1RGOjpTdHJpbmcgZGF0YWJhc2VzRGlyZWN0b3J5KCkKICAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihkaXJlY3RvcnlQcmVmLmdldCgpKTsKICNlbmRp
ZgogCi0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3Rv
cnkoKSwgIkRhdGFiYXNlcyIpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5
KCksICJEYXRhYmFzZXMiKTsKIH0KIAogdm9pZCBXZWJLaXRJbml0aWFsaXplV2ViRGF0YWJhc2Vz
SWZOZWNlc3NhcnkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93
bmxvYWRDdXJsLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkQ3VybC5j
cHAKaW5kZXggMjBkNGY0MDgzNWY3MjQxMzhmMTcyM2E4ZGMyZjk0Yjg5NTJlZWVkNy4uOTliNjI3
ZjFhYWMwM2FlZGY1MDY4N2ZjN2YzMzZiYjk1ZDljZGQyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWRDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJEb3dubG9hZEN1cmwuY3BwCkBAIC0zNSwyMiArMzUsMTkgQEAKICNpbmNsdWRl
ICJXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgogI2luY2x1ZGUgIldlYlVSTENyZWRl
bnRpYWwuaCIKICNpbmNsdWRlICJXZWJVUkxSZXNwb25zZS5oIgotCi0jaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgotCi0jaW5jbHVkZSA8aW8uaD4KLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgot
I2luY2x1ZGUgPHN5cy90eXBlcy5oPgotCiAjaW5jbHVkZSA8V2ViQ29yZS9CU3RyaW5nLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9DdXJsRG93bmxvYWQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVT
eXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUhhbmRs
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0RW5jb2Rpbmcu
aD4KKyNpbmNsdWRlIDxpby5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5jbHVkZSA8c3lz
L3R5cGVzLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKaW5kZXggNTliZTBjNDQzZjRmZDY2NThiODQx
OGI1Y2EzMzE0MTAyOTBjMTVmZC4uMjE1MDVkNThjNzQ1MzhkNDQwYThjMTJkMTdlODljNTU2MTQy
MzJiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcApAQCAt
MzcsMTMgKzM3LDEzIEBACiAKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlv
bi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ09NUHRyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9GaWxl
U3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Gb250Q2FzY2FkZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvTG9jYWxpemVkU3RyaW5ncy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLmg+CiAjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPHNobG9iai5oPgogI2lu
Y2x1ZGUgPHdjaGFyLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUg
PHd0Zi9TdGRMaWJFeHRyYXMuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKaW5kZXgg
ZTc2MTc0NGUwZDFiODVhZmZkMTBiNzc3Y2RkMzc5MWE0ZjcxYjMxZS4uZTMzMTA2M2EwYmYwZWJk
ODIwMDkxNTA0MDc2MjZkZTlhMTQwZTUyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5j
cHAKQEAgLTk2LDcgKzk2LDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0VkaXRvci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvRXZlbnRIYW5kbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FdmVudE5hbWVz
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9G
bG9hdFF1YWQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZvY3VzQ29udHJvbGxlci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvRm9udC5oPgpAQCAtMTcxLDYgKzE3MCw3IEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9XaW5kb3dzVG91Y2guaD4KICNpbmNsdWRlIDxjb21kZWYuaD4KICNpbmNsdWRlIDxkMmQxLmg+
CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5o
PgogI2luY2x1ZGUgPHd0Zi9Qcm9jZXNzUHJpdmlsZWdlLmg+CiAjaW5jbHVkZSA8d3RmL1JBTVNp
emUuaD4KQEAgLTUxMyw3ICs1MTMsNyBAQCB2b2lkIFdlYlZpZXc6OnNldENhY2hlTW9kZWwoV2Vi
Q2FjaGVNb2RlbCBjYWNoZU1vZGVsKQogICAgICAgICBpZiAocHJlZmVyZW5jZSAmJiAoQ0ZTdHJp
bmdHZXRUeXBlSUQoKSA9PSBDRkdldFR5cGVJRChwcmVmZXJlbmNlLmdldCgpKSkpCiAgICAgICAg
ICAgICBjZnVybENhY2hlRGlyZWN0b3J5ID0gYWRvcHRDRihzdGF0aWNfY2FzdDxDRlN0cmluZ1Jl
Zj4ocHJlZmVyZW5jZS5sZWFrUmVmKCkpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgY2Z1
cmxDYWNoZURpcmVjdG9yeSA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmlj
U3RvcmFnZURpcmVjdG9yeSgpLmNyZWF0ZUNGU3RyaW5nKCk7CisgICAgICAgICAgICBjZnVybENh
Y2hlRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0
b3J5KCkuY3JlYXRlQ0ZTdHJpbmcoKTsKICAgICB9CiAgICAgY2FjaGVEaXJlY3RvcnkgPSBTdHJp
bmcoY2Z1cmxDYWNoZURpcmVjdG9yeS5nZXQoKSk7CiAgICAgQ0ZJbmRleCBjYWNoZU1lbW9yeUNh
cGFjaXR5ID0gMDsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCBiMGUzY2MyYmI5YzAwZWM1YzUxODA1YzE0YTM1NzQzZDU0NGYyZjMyLi4yMTJkZGE0
ZDk3ZTZlMDg2ZTVkODhiNGU0ZjI0MjQ2OWY5NmUzYTlmIDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTktMDEtMjEg
IFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgorCisgICAgICAgIE1vdmUg
RmlsZVN5c3RlbSB0byBXVEYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE5MzYwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcDoKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVdQ
RS5jbWFrZToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxl
U3lzdGVtLmNwcDogUmVuYW1lZCBmcm9tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9GaWxlU3lzdGVtLmNwcC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
RmlsZU1vbml0b3IuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9T
ZWN1cml0eU9yaWdpbi5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L1NoYXJlZEJ1ZmZlclRlc3QuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9jb2NvYS9EYXRhYmFzZVRyYWNrZXJUZXN0Lm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9jdXJsL0Nvb2tpZXMuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW06CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZFByb2dyZXNzLm1tOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvd2luL1BsYXRmb3JtVXRpbGl0aWVzV2luLmNwcDoKKwogMjAxOS0wMS0yMSAgWmFs
YW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0Zsb2F0c10gVGFr
ZSBmbG9hdCB0b3AgcG9zaXRpb24gaW50byBhY2NvdW50IHdoZW4gY29tcHV0aW5nIGNvbnRhaW5p
bmcgYmxvY2sgaGVpZ2h0LgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1
bXBSZW5kZXJUcmVlLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJl
ZS5jcHAKaW5kZXggYTRiNWM3NzA3MDg5MGE1Y2YxNDJkMmQ5YzhiM2MzMzg2NDgzZTZlZC4uYTBi
Njg1Yzc1ZjlkYWYwZmViN2VhYWUxYmIzMmEyZTk1MmQyMjZmNCAxMDA2NDQKLS0tIGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcAorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCkBAIC00Niw3ICs0Niw2IEBACiAKICNpbmNs
dWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL1Rlc3RSdW5uZXJVdGlscy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5o
PgogI2luY2x1ZGUgPFdlYktpdExlZ2FjeS9XZWJLaXQuaD4KICNpbmNsdWRlIDxXZWJLaXRMZWdh
Y3kvV2ViS2l0Q09NQVBJLmg+CiAjaW5jbHVkZSA8Y29tdXRpbC5oPgpAQCAtNjAsNiArNTksNyBA
QAogI2luY2x1ZGUgPHNobHdhcGkuaD4KICNpbmNsdWRlIDx0Y2hhci5oPgogI2luY2x1ZGUgPHdp
bmRvd3MuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgpAQCAtMjIyLDcgKzIyMiw3IEBAIHN0YXRpYyBTdHJpbmcgbGlicmFyeVBhdGhG
b3JEdW1wUmVuZGVyVHJlZSgpCiAgICAgICAgIHJldHVybiBTdHJpbmcgKHBhdGguZGF0YSgpLCBw
YXRoLmxlbmd0aCgpKTsKICAgICB9CiAKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6
bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCk7CisgICAgcmV0dXJuIEZpbGVTeXN0
ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpOwogfQogI2VuZGlmCiAKQEAg
LTkzMSw5ICs5MzEsOSBAQCBzdGF0aWMgdm9pZCBzZXREZWZhdWx0c1RvQ29uc2lzdGVudFZhbHVl
c0ZvclRlc3RpbmcoKQogICAgIFN0cmluZyBsaWJyYXJ5UGF0aCA9IGxpYnJhcnlQYXRoRm9yRHVt
cFJlbmRlclRyZWUoKTsKIAogICAgIC8vIFNldCB1cCB0aGVzZSB2YWx1ZXMgYmVmb3JlIGNyZWF0
aW5nIHRoZSBXZWJWaWV3IHNvIHRoYXQgdGhlIHZhcmlvdXMgaW5pdGlhbGl6YXRpb25zIHdpbGwg
c2VlIHRoZXNlIHByZWZlcnJlZCB2YWx1ZXMuCi0gICAgQ0ZQcmVmZXJlbmNlc1NldEFwcFZhbHVl
KFdlYkRhdGFiYXNlRGlyZWN0b3J5RGVmYXVsdHNLZXksIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChsaWJyYXJ5UGF0aCwgIkRhdGFiYXNlcyIpLmNyZWF0ZUNG
U3RyaW5nKCkuZ2V0KCksIGFwcElkLmdldCgpKTsKLSAgICBDRlByZWZlcmVuY2VzU2V0QXBwVmFs
dWUoV2ViU3RvcmFnZURpcmVjdG9yeURlZmF1bHRzS2V5LCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQobGlicmFyeVBhdGgsICJMb2NhbFN0b3JhZ2UiKS5jcmVh
dGVDRlN0cmluZygpLmdldCgpLCBhcHBJZC5nZXQoKSk7Ci0gICAgQ0ZQcmVmZXJlbmNlc1NldEFw
cFZhbHVlKFdlYktpdExvY2FsQ2FjaGVEZWZhdWx0c0tleSwgV2ViQ29yZTo6RmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGxpYnJhcnlQYXRoLCAiTG9jYWxDYWNoZSIpLmNyZWF0
ZUNGU3RyaW5nKCkuZ2V0KCksIGFwcElkLmdldCgpKTsKKyAgICBDRlByZWZlcmVuY2VzU2V0QXBw
VmFsdWUoV2ViRGF0YWJhc2VEaXJlY3RvcnlEZWZhdWx0c0tleSwgRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KGxpYnJhcnlQYXRoLCAiRGF0YWJhc2VzIikuY3JlYXRlQ0ZTdHJp
bmcoKS5nZXQoKSwgYXBwSWQuZ2V0KCkpOworICAgIENGUHJlZmVyZW5jZXNTZXRBcHBWYWx1ZShX
ZWJTdG9yYWdlRGlyZWN0b3J5RGVmYXVsdHNLZXksIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChsaWJyYXJ5UGF0aCwgIkxvY2FsU3RvcmFnZSIpLmNyZWF0ZUNGU3RyaW5nKCku
Z2V0KCksIGFwcElkLmdldCgpKTsKKyAgICBDRlByZWZlcmVuY2VzU2V0QXBwVmFsdWUoV2ViS2l0
TG9jYWxDYWNoZURlZmF1bHRzS2V5LCBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQobGlicmFyeVBhdGgsICJMb2NhbENhY2hlIikuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgYXBw
SWQuZ2V0KCkpOwogI2VuZGlmCiB9CiAKQEAgLTEwMzUsNyArMTAzNSw3IEBAIHN0YXRpYyB2b2lk
IHNpemVXZWJWaWV3Rm9yQ3VycmVudFRlc3QoKQogCiBzdGF0aWMgU3RyaW5nIGZpbmRGb250RmFs
bGJhY2soY29uc3QgY2hhciogcGF0aE9yVXJsKQogewotICAgIFN0cmluZyBwYXRoVG9Gb250RmFs
bGJhY2sgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKHBhdGhPclVybCk7Cisg
ICAgU3RyaW5nIHBhdGhUb0ZvbnRGYWxsYmFjayA9IEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUo
cGF0aE9yVXJsKTsKIAogICAgIHdjaGFyX3QgZnVsbFBhdGhbX01BWF9QQVRIXTsKICAgICBpZiAo
IV93ZnVsbHBhdGgoZnVsbFBhdGgsIHBhdGhUb0ZvbnRGYWxsYmFjay5jaGFyYWN0ZXJzV2l0aE51
bGxUZXJtaW5hdGlvbigpLmRhdGEoKSwgX01BWF9QQVRIKSkKQEAgLTEwNTQsMjAgKzEwNTQsMjAg
QEAgc3RhdGljIFN0cmluZyBmaW5kRm9udEZhbGxiYWNrKGNvbnN0IGNoYXIqIHBhdGhPclVybCkK
ICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKICAgICBTdHJpbmcgcGF0aFRvVGVzdCA9
IHBhdGhUb0NoZWNrLnN1YnN0cmluZyhsb2NhdGlvbiArIGxheW91dFRlc3RzLmxlbmd0aCgpICsg
MSk7Ci0gICAgU3RyaW5nIHBvc3NpYmxlUGF0aFRvTG9ndWUgPSBXZWJDb3JlOjpGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGF0aFRvQ2hlY2suc3Vic3RyaW5nKDAsIGxvY2F0
aW9uICsgbGF5b3V0VGVzdHMubGVuZ3RoKCkgKyAxKSwgInBsYXRmb3JtXFx3aW4iKTsKKyAgICBT
dHJpbmcgcG9zc2libGVQYXRoVG9Mb2d1ZSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChwYXRoVG9DaGVjay5zdWJzdHJpbmcoMCwgbG9jYXRpb24gKyBsYXlvdXRUZXN0cy5s
ZW5ndGgoKSArIDEpLCAicGxhdGZvcm1cXHdpbiIpOwogCiAgICAgVmVjdG9yPFN0cmluZz4gcG9z
c2libGVQYXRoczsKLSAgICBwb3NzaWJsZVBhdGhzLmFwcGVuZChXZWJDb3JlOjpGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocG9zc2libGVQYXRoVG9Mb2d1ZSwgcGF0aFRvVGVz
dCkpOworICAgIHBvc3NpYmxlUGF0aHMuYXBwZW5kKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChwb3NzaWJsZVBhdGhUb0xvZ3VlLCBwYXRoVG9UZXN0KSk7CiAKICAgICBzaXpl
X3QgbmV4dENhbmRpZGF0ZUVuZCA9IHBhdGhUb1Rlc3QucmV2ZXJzZUZpbmQoJ1xcJyk7CiAgICAg
d2hpbGUgKG5leHRDYW5kaWRhdGVFbmQgJiYgbmV4dENhbmRpZGF0ZUVuZCAhPSBXVEY6Om5vdEZv
dW5kKSB7CiAgICAgICAgIHBhdGhUb1Rlc3QgPSBwYXRoVG9UZXN0LnN1YnN0cmluZygwLCBuZXh0
Q2FuZGlkYXRlRW5kKTsKLSAgICAgICAgcG9zc2libGVQYXRocy5hcHBlbmQoV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBvc3NpYmxlUGF0aFRvTG9ndWUsIHBh
dGhUb1Rlc3QpKTsKKyAgICAgICAgcG9zc2libGVQYXRocy5hcHBlbmQoRmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBvc3NpYmxlUGF0aFRvTG9ndWUsIHBhdGhUb1Rlc3QpKTsK
ICAgICAgICAgbmV4dENhbmRpZGF0ZUVuZCA9IHBhdGhUb1Rlc3QucmV2ZXJzZUZpbmQoJ1xcJyk7
CiAgICAgfQogCiAgICAgZm9yIChWZWN0b3I8U3RyaW5nPjo6aXRlcmF0b3IgcG9zID0gcG9zc2li
bGVQYXRocy5iZWdpbigpOyBwb3MgIT0gcG9zc2libGVQYXRocy5lbmQoKTsgKytwb3MpIHsKLSAg
ICAgICAgcGF0aFRvRm9udEZhbGxiYWNrID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KCpwb3MsICJyZXNvdXJjZXNcXCIpOworICAgICAgICBwYXRoVG9Gb250
RmFsbGJhY2sgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoKnBvcywgInJl
c291cmNlc1xcIik7CiAKICAgICAgICAgaWYgKDo6UGF0aElzRGlyZWN0b3J5VyhwYXRoVG9Gb250
RmFsbGJhY2suY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpKQogICAgICAg
ICAgICAgcmV0dXJuIHBhdGhUb0ZvbnRGYWxsYmFjazsKQEAgLTEwODEsNyArMTA4MSw3IEBAIHN0
YXRpYyB2b2lkIGFkZEZvbnRGYWxsYmFja0lmUHJlc2VudChjb25zdCBTdHJpbmcmIGZvbnRGYWxs
YmFja1BhdGgpCiAgICAgaWYgKGZvbnRGYWxsYmFja1BhdGguaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBTdHJpbmcgZm9udEZhbGxiYWNrID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGZvbnRGYWxsYmFja1BhdGgsICJNYWMtY29tcGF0aWJs
ZS1mb250LWZhbGxiYWNrLmNzcyIpOworICAgIFN0cmluZyBmb250RmFsbGJhY2sgPSBGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZm9udEZhbGxiYWNrUGF0aCwgIk1hYy1jb21w
YXRpYmxlLWZvbnQtZmFsbGJhY2suY3NzIik7CiAKICAgICBpZiAoITo6UGF0aEZpbGVFeGlzdHNX
KGZvbnRGYWxsYmFjay5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSkpCiAg
ICAgICAgIHJldHVybjsKQEAgLTEwOTQsNyArMTA5NCw3IEBAIHN0YXRpYyB2b2lkIHJlbW92ZUZv
bnRGYWxsYmFja0lmUHJlc2VudChjb25zdCBTdHJpbmcmIGZvbnRGYWxsYmFja1BhdGgpCiAgICAg
aWYgKGZvbnRGYWxsYmFja1BhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBT
dHJpbmcgZm9udEZhbGxiYWNrID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KGZvbnRGYWxsYmFja1BhdGgsICJNYWMtY29tcGF0aWJsZS1mb250LWZhbGxiYWNr
LmNzcyIpOworICAgIFN0cmluZyBmb250RmFsbGJhY2sgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoZm9udEZhbGxiYWNrUGF0aCwgIk1hYy1jb21wYXRpYmxlLWZvbnQtZmFs
bGJhY2suY3NzIik7CiAKICAgICBpZiAoITo6UGF0aEZpbGVFeGlzdHNXKGZvbnRGYWxsYmFjay5j
aGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSkpCiAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CmluZGV4IGIyNDkwMDg5OGIzZmM1YWY4OWM0OTAz
MzgwYzNmZDdjMWRjMGQ3MDUuLjQxMGE0OWZhNDljNzUyYzhiZmNiZDZhYWU2MzBhZDJiMzY2ZTAx
MjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dApAQCAtMTIyLDYgKzEyMiw3IEBAIHNl
dChUZXN0V1RGX1NPVVJDRVMKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvRGF0
ZU1hdGguY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL0RlcXVlLmNwcAog
ICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9FbnVtVHJhaXRzLmNwcAorICAgICR7
VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcAogICAgICR7VEVTVFdF
QktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9FeHBlY3RlZC5jcHAKICAgICAke1RFU1RXRUJLSVRBUElf
RElSfS9UZXN0cy9XVEYvRnVuY3Rpb24uY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVz
dHMvV1RGL0hhc2hDb3VudGVkU2V0LmNwcApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9QbGF0Zm9ybUdUSy5jbWFrZSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1HVEsuY21h
a2UKaW5kZXggYzM0ZmFlMDdjZjNjNmIwYTM5YzM5OWZlZTMyY2QyNWMzYTBhYTdmNC4uY2U4MjFl
NjFiMDU2NDM1YjJlZWVlNWUwZTU2YmEyMzU3NzI1ODg1ZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Bs
YXRmb3JtR1RLLmNtYWtlCkBAIC05Myw3ICs5Myw2IEBAIGFkZF9leGVjdXRhYmxlKFRlc3RXZWJD
b3JlCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV2ViQ29yZS9Db21wbGV4VGV4dENv
bnRyb2xsZXIuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV2ViQ29yZS9ETlMu
Y3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRvci5j
cHAKLSAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL0ZpbGVTeXN0ZW0uY3Bw
CiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV2ViQ29yZS9nc3RyZWFtZXIvR3N0TWFw
cGVkQnVmZmVyLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUvZ3N0
cmVhbWVyL0dTdHJlYW1lclRlc3QuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMv
V2ViQ29yZS9HcmlkUG9zaXRpb24uY3BwCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1BsYXRmb3JtV1BFLmNtYWtlIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVdQRS5jbWFr
ZQppbmRleCBiNjg3NzU5OGQ4NzdkZTZjOGRhODZiNGViNTdjYzg2ZmYwYTJmN2VmLi40MjY3ZGEy
MGQwNzBjNDdiYzgxZTQ2ZWMyYjdmMmQxM2MwNzk5ZDc2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1BsYXRmb3JtV1BFLmNtYWtlCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxh
dGZvcm1XUEUuY21ha2UKQEAgLTYwLDcgKzYwLDYgQEAgYWRkX2V4ZWN1dGFibGUoVGVzdFdlYkNv
cmUKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9nbGliL1V0aWxpdGllc0dMaWIuY3BwCiAgICAg
JHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHNDb250cm9sbGVyLmNwcAogICAgICR7VEVTVFdFQktJ
VEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUvRmlsZU1vbml0b3IuY3BwCi0gICAgJHtURVNUV0VCS0lU
QVBJX0RJUn0vVGVzdHMvV2ViQ29yZS9GaWxlU3lzdGVtLmNwcAogICAgICR7VEVTVFdFQktJVEFQ
SV9ESVJ9L1Rlc3RzL1dlYkNvcmUvZ3N0cmVhbWVyL0dzdE1hcHBlZEJ1ZmZlci5jcHAKICAgICAk
e1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL2dzdHJlYW1lci9HU3RyZWFtZXJUZXN0
LmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUvSFRNTFBhcnNlcklk
aW9tcy5jcHAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggN2ExMDcyYWNkYWEyYzJhYTUwN2Nk
YjJmYzI5NzA4MTA4NDVjM2YwYS4uZjY1MjY4ZTVmZDNiNDFkMzZiNmZjNDZkNWY3ZWIyZmMxZDFl
MmMwOCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQyNyw3ICs0MjcsNiBAQAogCQk3Qzgz
RTA0QzFEMEE2NDE4MDBGRUJDRjMgLyogV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEODlEMDM4MUM0RURCMkEwMDA0
MEEwNCAvKiBXZWJDb3JlTlNVUkxTZXNzaW9uLm1tICovOyB9OwogCQk3QzgzRTA0RDFEMEE2NDE4
MDBGRUJDRjMgLyogREZBQ29tYmluZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMjYwQkE1NzgxQjFEMkU3QjAwNEZBMDdDIC8qIERGQUNvbWJpbmVy
LmNwcCAqLzsgfTsKIAkJN0M4M0UwNEUxRDBBNjQxODAwRkVCQ0YzIC8qIERGQU1pbmltaXplci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNkY2RTFF
RjFBREM3NDlCMDBERTY5NkIgLyogREZBTWluaW1pemVyLmNwcCAqLzsgfTsKLQkJN0M4M0UwNEYx
RDBBNjQxODAwRkVCQ0YzIC8qIEZpbGVTeXN0ZW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5NzNCNUExQUYyMjg2QTAwNkM3QjM2IC8qIEZpbGVT
eXN0ZW0uY3BwICovOyB9OwogCQk3QzgzRTA1MDFEMEE2NDE4MDBGRUJDRjMgLyogSFRNTFBhcnNl
cklkaW9tcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4M0I4OEEzMzFDODAwNTZEMDBCQjI0MTggLyogSFRNTFBhcnNlcklkaW9tcy5jcHAgKi87IH07
CiAJCTdDODNFMDUxMUQwQTY0MTgwMEZFQkNGMyAvKiBQYXJzZWRDb250ZW50UmFuZ2UuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QyMjVDMDcxQzQ1
QTY5MjAwMTQwNzYxIC8qIFBhcnNlZENvbnRlbnRSYW5nZS5jcHAgKi87IH07CiAJCTdDODNFMDUy
MUQwQTY0MTgwMEZFQkNGMyAvKiBTaGFyZWRCdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5NzNCNUMxQUYyMjg3NTAwNkM3QjM2IC8qIFNo
YXJlZEJ1ZmZlci5jcHAgKi87IH07CkBAIC02ODksNiArNjg4LDcgQEAKIAkJQTFDNEZCNzMxQkFD
RDFDQTAwMzc0MkQwIC8qIHBhZ2VzLnBhZ2VzIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQzRGQjcyMUJBQ0QxQjcwMDM3NDJEMCAvKiBwYWdl
cy5wYWdlcyAqLzsgfTsKIAkJQTFERjc0MzIxQzQxQjY1ODAwQTJGNEQwIC8qIEFsd2F5c1JldmFs
aWRhdGVkVVJMU2NoZW1lcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEExREY3NDMwMUM0MUI2NTgwMEEyRjREMCAvKiBBbHdheXNSZXZhbGlkYXRlZFVS
TFNjaGVtZXMubW0gKi87IH07CiAJCUExRUMxMTg4MUY0MjU0MTIwMEQwMTQ2RSAvKiBQcmV2aWV3
TG9hZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEExRUMxMTg3MUY0MjU0MTIwMEQwMTQ2RSAvKiBQcmV2aWV3TG9hZGVyLmNwcCAqLzsgfTsKKwkJ
QTMxMDgyNzIyMUYyOTZGRjAwQzI4Qjk3IC8qIEZpbGVTeXN0ZW0uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTMxMDgyNzEyMUYyOTZFQzAwQzI4Qjk3
IC8qIEZpbGVTeXN0ZW0uY3BwICovOyB9OwogCQlBNTdBMzRGMjE2QUY2QjJCMDBDMjUwMUYgLyog
UGFnZVZpc2liaWxpdHlTdGF0ZVdpdGhXaW5kb3dDaGFuZ2VzLmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3QTM0RjExNkFGNjlFMjAw
QzI1MDFGIC8qIFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlcy5odG1sICovOyB9
OwogCQlBNTdENTRGMzFGMzM4QzM2MDBBOTdBQTcgLyogTmV2ZXJEZXN0cm95ZWQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3RDU0RjIxRjMzOEMz
NjAwQTk3QUE3IC8qIE5ldmVyRGVzdHJveWVkLmNwcCAqLzsgfTsKIAkJQTU3RDU0RjYxRjMzOTVE
MDAwQTk3QUE3IC8qIExvZ2dlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNTdENTRGNDFGMzM5NUQwMDBBOTdBQTcgLyogTG9nZ2VyLmNwcCAqLzsg
fTsKQEAgLTE1MjAsNyArMTUyMCw2IEBACiAJCTQxMzVGQjgzMjAxMUZBQTMwMDMzMjEzOSAvKiBJ
bmplY3RJbnRlcm5hbHNfQnVuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IEluamVjdEludGVybmFsc19CdW5kbGUuY3BwOyBwYXRoID0gVGVzdHMvSW5qZWN0SW50
ZXJuYWxzX0J1bmRsZS5jcHA7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJNDEzNUZC
ODYyMDExRkFCRjAwMzMyMTM5IC8qIGxpYldlYkNvcmVUZXN0U3VwcG9ydC5keWxpYiAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gt
by5keWxpYiI7IHBhdGggPSBsaWJXZWJDb3JlVGVzdFN1cHBvcnQuZHlsaWI7IHNvdXJjZVRyZWUg
PSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTQxODgyRjAyMjEwMTBBNzAwMDJGRjI4OCAvKiBQ
cm9jZXNzUHJlV2FybWluZy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFByb2Nlc3NQcmVXYXJtaW5nLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0
MTk3M0I1QTFBRjIyODZBMDA2QzdCMzYgLyogRmlsZVN5c3RlbS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxlU3lzdGVtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDE5NzNCNUMxQUYyMjg3NTAwNkM3QjM2IC8qIFNoYXJlZEJ1ZmZlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFyZWRCdWZmZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NDJCQkY2ODFDOTFDQUQ5MDAxNzA4N0YgLyog
UmVmTG9nZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlZkxv
Z2dlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0MzNBMzk1MjA4MDQ0MTMw
MDkxRUQ1NyAvKiBTeW5jaHJvbm91c1RpbWVvdXRUZXN0cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFN5bmNocm9ub3VzVGltZW91dFRlc3RzLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTkxNyw2ICsxOTE2LDcgQEAKIAkJQTFERjc0MzAxQzQx
QjY1ODAwQTJGNEQwIC8qIEFsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lcy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1l
cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFFQzExODcxRjQyNTQxMjAwRDAx
NDZFIC8qIFByZXZpZXdMb2FkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJldmlld0xvYWRl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExRkRGRDJFMTlDMjg4QkIwMDUx
NDhBNCAvKiBXS0ltYWdlQ3JlYXRlQ0dJbWFnZUNyYXNoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdLSW1hZ2VDcmVhdGVDR0ltYWdlQ3Jhc2guY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlBMzEwODI3MTIxRjI5NkVDMDBDMjhCOTcgLyogRmlsZVN5
c3RlbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxlU3lzdGVt
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU3QTM0RUYxNkFGNjc3MjAwQzI1
MDFGIC8qIFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlcy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2lu
ZG93Q2hhbmdlcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU3QTM0RjExNkFG
NjlFMjAwQzI1MDFGIC8qIFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlcy5odG1s
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gUGFnZVZpc2liaWxpdHlTdGF0ZVdpdGhXaW5k
b3dDaGFuZ2VzLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1N0Q1NEYyMUYz
MzhDMzYwMEE5N0FBNyAvKiBOZXZlckRlc3Ryb3llZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBO
ZXZlckRlc3Ryb3llZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNjc3LDcg
KzI2NzcsNiBAQAogCQkJCTU3OTY1MUU2MjE2QkZENTMwMDZFQkZFNSAvKiBGaWRvSGlkTWVzc2Fn
ZVRlc3QuY3BwICovLAogCQkJCTU3MkI0MDM1MjE3NkEwMjkwMDBBRDQzRSAvKiBGaWRvVGVzdERh
dGEuaCAqLywKIAkJCQk3QTMyRDc0OTFGMDIxNTE1MDAxNjJDNDQgLyogRmlsZU1vbml0b3IuY3Bw
ICovLAotCQkJCTQxOTczQjVBMUFGMjI4NkEwMDZDN0IzNiAvKiBGaWxlU3lzdGVtLmNwcCAqLywK
IAkJCQk3QTkwOUE3MDFEODc3NDc1MDA3RTEwRjggLyogRmxvYXRQb2ludC5jcHAgKi8sCiAJCQkJ
N0E5MDlBNzExRDg3NzQ3NTAwN0UxMEY4IC8qIEZsb2F0UmVjdC5jcHAgKi8sCiAJCQkJN0E5MDlB
NzIxRDg3NzQ3NTAwN0UxMEY4IC8qIEZsb2F0U2l6ZS5jcHAgKi8sCkBAIC0zMTg3LDYgKzMxODYs
NyBAQAogCQkJCUU0QTc1N0QzMTc4QUVBNUIwMEI1RDdBNCAvKiBEZXF1ZS5jcHAgKi8sCiAJCQkJ
MUFGN0IyMUQxRDZDRDEyRTAwOEMxMjZDIC8qIEVudW1UcmFpdHMuY3BwICovLAogCQkJCUFEN0M0
MzRDMUREMkE1NDcwMDI2ODg4QiAvKiBFeHBlY3RlZC5jcHAgKi8sCisJCQkJQTMxMDgyNzEyMUYy
OTZFQzAwQzI4Qjk3IC8qIEZpbGVTeXN0ZW0uY3BwICovLAogCQkJCTkzMTBDRDM2MUVGNzA4RkIw
MDUwRkZFMCAvKiBGdW5jdGlvbi5jcHAgKi8sCiAJCQkJODNEQjc5NjcxRUY2M0IzQzAwQkZBNUU1
IC8qIEZ1bmN0aW9uLmNwcCAqLywKIAkJCQk3QTM4RDdFNTFDNzUyRDVGMDA0RjE1N0QgLyogSGFz
aENvdW50ZWRTZXQuY3BwICovLApAQCAtMzc5NSw2ICszNzk1LDcgQEAKIAkJCQk3QzgzREVBRDFE
MEE1OTBDMDBGRUJDRjMgLyogRGVxdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFGN0IyMUYx
RDZDRDE0RDAwOEMxMjZDIC8qIEVudW1UcmFpdHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQUQ3
QzQzNEQxREQyQTU0RTAwMjY4ODhCIC8qIEV4cGVjdGVkLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUEzMTA4MjcyMjFGMjk2RkYwMEMyOEI5NyAvKiBGaWxlU3lzdGVtLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTkzMTBDRDM4MUVGNzA4RkIwMDUwRkZFMCAvKiBGdW5jdGlvbi5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk2QkZEMjk0QzFENUU2QzFEMDA4RUM5NjggLyogSGFzaENvdW50ZWRTZXQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzRDYzMUQxRkNCNzYyMDAwMzJFQ0Q2IC8qIEhhc2hlci5j
cHAgaW4gU291cmNlcyAqLywKQEAgLTM5OTgsNyArMzk5OSw2IEBACiAJCQkJN0NDRTdFRjExQTQx
MUFFNjAwNDQ3QzRDIC8qIEZhaWxlZExvYWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTc5NjUx
RTcyMTZCRkRFRDAwNkVCRkU1IC8qIEZpZG9IaWRNZXNzYWdlVGVzdC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk3QTMyRDc0QTFGMDIxNTE1MDAxNjJDNDQgLyogRmlsZU1vbml0b3IuY3BwIGluIFNv
dXJjZXMgKi8sCi0JCQkJN0M4M0UwNEYxRDBBNjQxODAwRkVCQ0YzIC8qIEZpbGVTeXN0ZW0uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFRjMxQTQxMUFFNjAwNDQ3QzRDIC8qIEZpbmQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0UwQkIxRDBBNjUwMDAwRkVCQ0YzIC8qIEZpbmRJblBh
Z2UubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VGNDFBNDExQUU2MDA0NDdDNEMgLyogRmlu
ZE1hdGNoZXMubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvRmlsZVN5c3RlbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDU3ZGY2MTQyOTdmMGEyMzcyMzk1Yzc2YmY0
YzU5MTVhNTc1NzVmYQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCkBAIC0wLDAgKzEsMTQ4IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIlRlc3QuaCIKKyNpbmNsdWRlIDx3dGYvRmlsZU1l
dGFkYXRhLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvTWFp
blRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMuaD4KKworbmFtZXNwYWNlIFRl
c3RXZWJLaXRBUEkgeworCitjb25zdCBjaGFyKiBGaWxlU3lzdGVtVGVzdERhdGEgPSAiVGhpcyBp
cyBhIHRlc3QiOworCisvLyBGSVhNRTogUmVmYWN0b3IgRmlsZVN5c3RlbVRlc3QgYW5kIFNoYXJl
ZEJ1ZmZlclRlc3QgYXMgYSBzaW5nbGUgY2xhc3MuCitjbGFzcyBGaWxlU3lzdGVtVGVzdCA6IHB1
YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK3B1YmxpYzoKKyAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUK
KyAgICB7CisgICAgICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKKworICAgICAgICAv
LyBjcmVhdGUgdGVtcCBmaWxlCisgICAgICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRs
ZSBoYW5kbGU7CisgICAgICAgIG1fdGVtcEZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBv
cmFyeUZpbGUoInRlbXBUZXN0RmlsZSIsIGhhbmRsZSk7CisgICAgICAgIEZpbGVTeXN0ZW06Ondy
aXRlVG9GaWxlKGhhbmRsZSwgRmlsZVN5c3RlbVRlc3REYXRhLCBzdHJsZW4oRmlsZVN5c3RlbVRl
c3REYXRhKSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUpOworCisgICAg
ICAgIG1fdGVtcEZpbGVTeW1saW5rUGF0aCA9IG1fdGVtcEZpbGVQYXRoICsgIi1zeW1saW5rIjsK
KyAgICAgICAgRmlsZVN5c3RlbTo6Y3JlYXRlU3ltYm9saWNMaW5rKG1fdGVtcEZpbGVQYXRoLCBt
X3RlbXBGaWxlU3ltbGlua1BhdGgpOworCisgICAgICAgIG1fdGVtcEVtcHR5RmlsZVBhdGggPSBG
aWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcEVtcHR5VGVzdEZpbGUiLCBoYW5kbGUp
OworICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKKworICAgICAgICBtX3Nw
YWNlQ29udGFpbmluZ0ZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoInRl
bXAgRW1wdHkgVGVzdCBGaWxlIiwgaGFuZGxlKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VG
aWxlKGhhbmRsZSk7CisKKyAgICAgICAgbV9iYW5nQ29udGFpbmluZ0ZpbGVQYXRoID0gRmlsZVN5
c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoInRlbXAhRW1wdHkhVGVzdCFGaWxlIiwgaGFuZGxlKTsK
KyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CisKKyAgICAgICAgbV9xdW90
ZUNvbnRhaW5pbmdGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1w
XCJFbXB0eVwiVGVzdEZpbGUiLCBoYW5kbGUpOworICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZp
bGUoaGFuZGxlKTsKKyAgICB9CisKKyAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKKyAgICB7
CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV90ZW1wRmlsZVBhdGgpOworICAgICAg
ICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fdGVtcEZpbGVTeW1saW5rUGF0aCk7CisgICAgICAg
IEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV90ZW1wRW1wdHlGaWxlUGF0aCk7CisgICAgICAgIEZp
bGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9zcGFjZUNvbnRhaW5pbmdGaWxlUGF0aCk7CisgICAgICAg
IEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9iYW5nQ29udGFpbmluZ0ZpbGVQYXRoKTsKKyAgICAg
ICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX3F1b3RlQ29udGFpbmluZ0ZpbGVQYXRoKTsKKyAg
ICB9CisKKyAgICBjb25zdCBTdHJpbmcmIHRlbXBGaWxlUGF0aCgpIHsgcmV0dXJuIG1fdGVtcEZp
bGVQYXRoOyB9CisgICAgY29uc3QgU3RyaW5nJiB0ZW1wRmlsZVN5bWxpbmtQYXRoKCkgeyByZXR1
cm4gbV90ZW1wRmlsZVN5bWxpbmtQYXRoOyB9CisgICAgY29uc3QgU3RyaW5nJiB0ZW1wRW1wdHlG
aWxlUGF0aCgpIHsgcmV0dXJuIG1fdGVtcEVtcHR5RmlsZVBhdGg7IH0KKyAgICBjb25zdCBTdHJp
bmcmIHNwYWNlQ29udGFpbmluZ0ZpbGVQYXRoKCkgeyByZXR1cm4gbV9zcGFjZUNvbnRhaW5pbmdG
aWxlUGF0aDsgfQorICAgIGNvbnN0IFN0cmluZyYgYmFuZ0NvbnRhaW5pbmdGaWxlUGF0aCgpIHsg
cmV0dXJuIG1fYmFuZ0NvbnRhaW5pbmdGaWxlUGF0aDsgfQorICAgIGNvbnN0IFN0cmluZyYgcXVv
dGVDb250YWluaW5nRmlsZVBhdGgoKSB7IHJldHVybiBtX3F1b3RlQ29udGFpbmluZ0ZpbGVQYXRo
OyB9CisKK3ByaXZhdGU6CisgICAgU3RyaW5nIG1fdGVtcEZpbGVQYXRoOworICAgIFN0cmluZyBt
X3RlbXBGaWxlU3ltbGlua1BhdGg7CisgICAgU3RyaW5nIG1fdGVtcEVtcHR5RmlsZVBhdGg7Cisg
ICAgU3RyaW5nIG1fc3BhY2VDb250YWluaW5nRmlsZVBhdGg7CisgICAgU3RyaW5nIG1fYmFuZ0Nv
bnRhaW5pbmdGaWxlUGF0aDsKKyAgICBTdHJpbmcgbV9xdW90ZUNvbnRhaW5pbmdGaWxlUGF0aDsK
K307CisKK1RFU1RfRihGaWxlU3lzdGVtVGVzdCwgTWFwcGluZ01pc3NpbmdGaWxlKQoreworICAg
IGJvb2wgc3VjY2VzczsKKyAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxl
RGF0YShTdHJpbmcoIm5vdF9leGlzdGluZ19maWxlIiksIHN1Y2Nlc3MpOworICAgIEVYUEVDVF9G
QUxTRShzdWNjZXNzKTsKKyAgICBFWFBFQ1RfVFJVRSghbWFwcGVkRmlsZURhdGEpOworfQorCitU
RVNUX0YoRmlsZVN5c3RlbVRlc3QsIE1hcHBpbmdFeGlzdGluZ0ZpbGUpCit7CisgICAgYm9vbCBz
dWNjZXNzOworICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKHRl
bXBGaWxlUGF0aCgpLCBzdWNjZXNzKTsKKyAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKKyAgICBF
WFBFQ1RfVFJVRSghIW1hcHBlZEZpbGVEYXRhKTsKKyAgICBFWFBFQ1RfVFJVRShtYXBwZWRGaWxl
RGF0YS5zaXplKCkgPT0gc3RybGVuKEZpbGVTeXN0ZW1UZXN0RGF0YSkpOworICAgIEVYUEVDVF9U
UlVFKHN0cm5zdHIoRmlsZVN5c3RlbVRlc3REYXRhLCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4o
bWFwcGVkRmlsZURhdGEuZGF0YSgpKSwgbWFwcGVkRmlsZURhdGEuc2l6ZSgpKSk7Cit9CisKK1RF
U1RfRihGaWxlU3lzdGVtVGVzdCwgTWFwcGluZ0V4aXN0aW5nRW1wdHlGaWxlKQoreworICAgIGJv
b2wgc3VjY2VzczsKKyAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0
YSh0ZW1wRW1wdHlGaWxlUGF0aCgpLCBzdWNjZXNzKTsKKyAgICBFWFBFQ1RfVFJVRShzdWNjZXNz
KTsKKyAgICBFWFBFQ1RfVFJVRSghbWFwcGVkRmlsZURhdGEpOworfQorCitURVNUX0YoRmlsZVN5
c3RlbVRlc3QsIEZpbGVzSGF2ZVNhbWVWb2x1bWUpCit7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5
c3RlbTo6ZmlsZXNIYXZlU2FtZVZvbHVtZSh0ZW1wRmlsZVBhdGgoKSwgc3BhY2VDb250YWluaW5n
RmlsZVBhdGgoKSkpOworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVzSGF2ZVNhbWVW
b2x1bWUoc3BhY2VDb250YWluaW5nRmlsZVBhdGgoKSwgYmFuZ0NvbnRhaW5pbmdGaWxlUGF0aCgp
KSk7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZXNIYXZlU2FtZVZvbHVtZShiYW5n
Q29udGFpbmluZ0ZpbGVQYXRoKCksIHF1b3RlQ29udGFpbmluZ0ZpbGVQYXRoKCkpKTsKK30KKwor
VEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBHZXRGaWxlTWV0YWRhdGFTeW1saW5rKQoreworICAgIGF1
dG8gc3ltbGlua01ldGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhKHRlbXBGaWxlU3lt
bGlua1BhdGgoKSk7CisgICAgQVNTRVJUX1RSVUUoc3ltbGlua01ldGFkYXRhLmhhc1ZhbHVlKCkp
OworICAgIEVYUEVDVF9UUlVFKHN5bWxpbmtNZXRhZGF0YS52YWx1ZSgpLnR5cGUgPT0gRmlsZU1l
dGFkYXRhOjpUeXBlOjpTeW1ib2xpY0xpbmspOworICAgIEVYUEVDVF9GQUxTRShzdGF0aWNfY2Fz
dDxzaXplX3Q+KHN5bWxpbmtNZXRhZGF0YS52YWx1ZSgpLmxlbmd0aCkgPT0gc3RybGVuKEZpbGVT
eXN0ZW1UZXN0RGF0YSkpOworCisgICAgYXV0byB0YXJnZXRNZXRhZGF0YSA9IEZpbGVTeXN0ZW06
OmZpbGVNZXRhZGF0YUZvbGxvd2luZ1N5bWxpbmtzKHRlbXBGaWxlU3ltbGlua1BhdGgoKSk7Cisg
ICAgQVNTRVJUX1RSVUUodGFyZ2V0TWV0YWRhdGEuaGFzVmFsdWUoKSk7CisgICAgRVhQRUNUX1RS
VUUodGFyZ2V0TWV0YWRhdGEudmFsdWUoKS50eXBlID09IEZpbGVNZXRhZGF0YTo6VHlwZTo6Rmls
ZSk7CisgICAgRVhQRUNUX0VRKHN0cmxlbihGaWxlU3lzdGVtVGVzdERhdGEpLCBzdGF0aWNfY2Fz
dDxzaXplX3Q+KHRhcmdldE1ldGFkYXRhLnZhbHVlKCkubGVuZ3RoKSk7Cit9CisKK1RFU1RfRihG
aWxlU3lzdGVtVGVzdCwgVW5pY29kZURpcmVjdG9yeU5hbWUpCit7CisgICAgU3RyaW5nIHBhdGgg
PSBTdHJpbmc6OmZyb21VVEY4KCIvdGVzdC9hXHUwMzA4bG8vdGVzdC50eHQiKTsKKyAgICBTdHJp
bmcgZGlyZWN0b3J5TmFtZSA9IEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUocGF0aCk7CisgICAg
U3RyaW5nIGV4cGVjdGVkRGlyZWN0b3J5TmFtZSA9IFN0cmluZzo6ZnJvbVVURjgoIi90ZXN0L2Fc
dTAzMDhsbyIpOworICAgIEVYUEVDVF9UUlVFKGV4cGVjdGVkRGlyZWN0b3J5TmFtZSA9PSBkaXJl
Y3RvcnlOYW1lKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9GaWxlTW9uaXRvci5jcHAKaW5kZXggNWYxZGM4YjJlNGQ1MjRkMzUyNjgwNGJkNmNkOWNl
OThhMzcxMWZlOC4uZTAwMmRmMWVmMDk0ZjViM2YwMGQxNmU5YzZiZTZkNDlkNWU2YWYyNCAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNw
cAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZU1vbml0b3IuY3Bw
CkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiVGVzdC5oIgogI2luY2x1ZGUgIldURlN0cmlu
Z1V0aWxpdGllcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZU1vbml0b3IuaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2lu
Y2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNs
dWRlIDx3dGYvU2NvcGUuaD4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9GaWxlU3lzdGVtLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9GaWxlU3lzdGVtLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzY2MjUwMjUz
MDk3MjdlYTYwNWNiNTJjZmM5ZWNkNGIzM2U3Nzg3NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
RmlsZVN5c3RlbS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTAgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRlICJUZXN0LmgiCi0jaW5jbHVkZSA8V2Vi
Q29yZS9GaWxlTWV0YWRhdGEuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KLSNp
bmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgotI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMuaD4K
LQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsK
LQotY29uc3QgY2hhciogRmlsZVN5c3RlbVRlc3REYXRhID0gIlRoaXMgaXMgYSB0ZXN0IjsKLQot
Ly8gRklYTUU6IFJlZmFjdG9yIEZpbGVTeXN0ZW1UZXN0IGFuZCBTaGFyZWRCdWZmZXJUZXN0IGFz
IGEgc2luZ2xlIGNsYXNzLgotY2xhc3MgRmlsZVN5c3RlbVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6
VGVzdCB7Ci1wdWJsaWM6Ci0gICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCi0gICAgewotICAgICAg
ICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7Ci0gICAgICAgIAotICAgICAgICAvLyBjcmVh
dGUgdGVtcCBmaWxlCi0gICAgICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBoYW5k
bGU7Ci0gICAgICAgIG1fdGVtcEZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZp
bGUoInRlbXBUZXN0RmlsZSIsIGhhbmRsZSk7Ci0gICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9G
aWxlKGhhbmRsZSwgRmlsZVN5c3RlbVRlc3REYXRhLCBzdHJsZW4oRmlsZVN5c3RlbVRlc3REYXRh
KSk7Ci0gICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUpOwotCi0gICAgICAgIG1f
dGVtcEZpbGVTeW1saW5rUGF0aCA9IG1fdGVtcEZpbGVQYXRoICsgIi1zeW1saW5rIjsKLSAgICAg
ICAgRmlsZVN5c3RlbTo6Y3JlYXRlU3ltYm9saWNMaW5rKG1fdGVtcEZpbGVQYXRoLCBtX3RlbXBG
aWxlU3ltbGlua1BhdGgpOwotCi0gICAgICAgIG1fdGVtcEVtcHR5RmlsZVBhdGggPSBGaWxlU3lz
dGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcEVtcHR5VGVzdEZpbGUiLCBoYW5kbGUpOwotICAg
ICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKLQotICAgICAgICBtX3NwYWNlQ29u
dGFpbmluZ0ZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoInRlbXAgRW1w
dHkgVGVzdCBGaWxlIiwgaGFuZGxlKTsKLSAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhh
bmRsZSk7Ci0KLSAgICAgICAgbV9iYW5nQ29udGFpbmluZ0ZpbGVQYXRoID0gRmlsZVN5c3RlbTo6
b3BlblRlbXBvcmFyeUZpbGUoInRlbXAhRW1wdHkhVGVzdCFGaWxlIiwgaGFuZGxlKTsKLSAgICAg
ICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7Ci0KLSAgICAgICAgbV9xdW90ZUNvbnRh
aW5pbmdGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wXCJFbXB0
eVwiVGVzdEZpbGUiLCBoYW5kbGUpOwotICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFu
ZGxlKTsKLSAgICB9Ci0KLSAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAg
ICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV90ZW1wRmlsZVBhdGgpOwotICAgICAgICBGaWxl
U3lzdGVtOjpkZWxldGVGaWxlKG1fdGVtcEZpbGVTeW1saW5rUGF0aCk7Ci0gICAgICAgIEZpbGVT
eXN0ZW06OmRlbGV0ZUZpbGUobV90ZW1wRW1wdHlGaWxlUGF0aCk7Ci0gICAgICAgIEZpbGVTeXN0
ZW06OmRlbGV0ZUZpbGUobV9zcGFjZUNvbnRhaW5pbmdGaWxlUGF0aCk7Ci0gICAgICAgIEZpbGVT
eXN0ZW06OmRlbGV0ZUZpbGUobV9iYW5nQ29udGFpbmluZ0ZpbGVQYXRoKTsKLSAgICAgICAgRmls
ZVN5c3RlbTo6ZGVsZXRlRmlsZShtX3F1b3RlQ29udGFpbmluZ0ZpbGVQYXRoKTsKLSAgICB9Ci0K
LSAgICBjb25zdCBTdHJpbmcmIHRlbXBGaWxlUGF0aCgpIHsgcmV0dXJuIG1fdGVtcEZpbGVQYXRo
OyB9Ci0gICAgY29uc3QgU3RyaW5nJiB0ZW1wRmlsZVN5bWxpbmtQYXRoKCkgeyByZXR1cm4gbV90
ZW1wRmlsZVN5bWxpbmtQYXRoOyB9Ci0gICAgY29uc3QgU3RyaW5nJiB0ZW1wRW1wdHlGaWxlUGF0
aCgpIHsgcmV0dXJuIG1fdGVtcEVtcHR5RmlsZVBhdGg7IH0KLSAgICBjb25zdCBTdHJpbmcmIHNw
YWNlQ29udGFpbmluZ0ZpbGVQYXRoKCkgeyByZXR1cm4gbV9zcGFjZUNvbnRhaW5pbmdGaWxlUGF0
aDsgfQotICAgIGNvbnN0IFN0cmluZyYgYmFuZ0NvbnRhaW5pbmdGaWxlUGF0aCgpIHsgcmV0dXJu
IG1fYmFuZ0NvbnRhaW5pbmdGaWxlUGF0aDsgfQotICAgIGNvbnN0IFN0cmluZyYgcXVvdGVDb250
YWluaW5nRmlsZVBhdGgoKSB7IHJldHVybiBtX3F1b3RlQ29udGFpbmluZ0ZpbGVQYXRoOyB9Ci0K
LXByaXZhdGU6Ci0gICAgU3RyaW5nIG1fdGVtcEZpbGVQYXRoOwotICAgIFN0cmluZyBtX3RlbXBG
aWxlU3ltbGlua1BhdGg7Ci0gICAgU3RyaW5nIG1fdGVtcEVtcHR5RmlsZVBhdGg7Ci0gICAgU3Ry
aW5nIG1fc3BhY2VDb250YWluaW5nRmlsZVBhdGg7Ci0gICAgU3RyaW5nIG1fYmFuZ0NvbnRhaW5p
bmdGaWxlUGF0aDsKLSAgICBTdHJpbmcgbV9xdW90ZUNvbnRhaW5pbmdGaWxlUGF0aDsKLX07Ci0K
LVRFU1RfRihGaWxlU3lzdGVtVGVzdCwgTWFwcGluZ01pc3NpbmdGaWxlKQotewotICAgIGJvb2wg
c3VjY2VzczsKLSAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YShT
dHJpbmcoIm5vdF9leGlzdGluZ19maWxlIiksIHN1Y2Nlc3MpOwotICAgIEVYUEVDVF9GQUxTRShz
dWNjZXNzKTsKLSAgICBFWFBFQ1RfVFJVRSghbWFwcGVkRmlsZURhdGEpOwotfQotCi1URVNUX0Yo
RmlsZVN5c3RlbVRlc3QsIE1hcHBpbmdFeGlzdGluZ0ZpbGUpCi17Ci0gICAgYm9vbCBzdWNjZXNz
OwotICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKHRlbXBGaWxl
UGF0aCgpLCBzdWNjZXNzKTsKLSAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKLSAgICBFWFBFQ1Rf
VFJVRSghIW1hcHBlZEZpbGVEYXRhKTsKLSAgICBFWFBFQ1RfVFJVRShtYXBwZWRGaWxlRGF0YS5z
aXplKCkgPT0gc3RybGVuKEZpbGVTeXN0ZW1UZXN0RGF0YSkpOwotICAgIEVYUEVDVF9UUlVFKHN0
cm5zdHIoRmlsZVN5c3RlbVRlc3REYXRhLCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obWFwcGVk
RmlsZURhdGEuZGF0YSgpKSwgbWFwcGVkRmlsZURhdGEuc2l6ZSgpKSk7Ci19Ci0KLVRFU1RfRihG
aWxlU3lzdGVtVGVzdCwgTWFwcGluZ0V4aXN0aW5nRW1wdHlGaWxlKQotewotICAgIGJvb2wgc3Vj
Y2VzczsKLSAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YSh0ZW1w
RW1wdHlGaWxlUGF0aCgpLCBzdWNjZXNzKTsKLSAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKLSAg
ICBFWFBFQ1RfVFJVRSghbWFwcGVkRmlsZURhdGEpOwotfQotCi1URVNUX0YoRmlsZVN5c3RlbVRl
c3QsIEZpbGVzSGF2ZVNhbWVWb2x1bWUpCi17Ci0gICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6
ZmlsZXNIYXZlU2FtZVZvbHVtZSh0ZW1wRmlsZVBhdGgoKSwgc3BhY2VDb250YWluaW5nRmlsZVBh
dGgoKSkpOwotICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVzSGF2ZVNhbWVWb2x1bWUo
c3BhY2VDb250YWluaW5nRmlsZVBhdGgoKSwgYmFuZ0NvbnRhaW5pbmdGaWxlUGF0aCgpKSk7Ci0g
ICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZXNIYXZlU2FtZVZvbHVtZShiYW5nQ29udGFp
bmluZ0ZpbGVQYXRoKCksIHF1b3RlQ29udGFpbmluZ0ZpbGVQYXRoKCkpKTsKLX0KLQotVEVTVF9G
KEZpbGVTeXN0ZW1UZXN0LCBHZXRGaWxlTWV0YWRhdGFTeW1saW5rKQotewotICAgIGF1dG8gc3lt
bGlua01ldGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhKHRlbXBGaWxlU3ltbGlua1Bh
dGgoKSk7Ci0gICAgQVNTRVJUX1RSVUUoc3ltbGlua01ldGFkYXRhLmhhc1ZhbHVlKCkpOwotICAg
IEVYUEVDVF9UUlVFKHN5bWxpbmtNZXRhZGF0YS52YWx1ZSgpLnR5cGUgPT0gRmlsZU1ldGFkYXRh
OjpUeXBlOjpTeW1ib2xpY0xpbmspOwotICAgIEVYUEVDVF9GQUxTRShzdGF0aWNfY2FzdDxzaXpl
X3Q+KHN5bWxpbmtNZXRhZGF0YS52YWx1ZSgpLmxlbmd0aCkgPT0gc3RybGVuKEZpbGVTeXN0ZW1U
ZXN0RGF0YSkpOwotCi0gICAgYXV0byB0YXJnZXRNZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVN
ZXRhZGF0YUZvbGxvd2luZ1N5bWxpbmtzKHRlbXBGaWxlU3ltbGlua1BhdGgoKSk7Ci0gICAgQVNT
RVJUX1RSVUUodGFyZ2V0TWV0YWRhdGEuaGFzVmFsdWUoKSk7Ci0gICAgRVhQRUNUX1RSVUUodGFy
Z2V0TWV0YWRhdGEudmFsdWUoKS50eXBlID09IEZpbGVNZXRhZGF0YTo6VHlwZTo6RmlsZSk7Ci0g
ICAgRVhQRUNUX0VRKHN0cmxlbihGaWxlU3lzdGVtVGVzdERhdGEpLCBzdGF0aWNfY2FzdDxzaXpl
X3Q+KHRhcmdldE1ldGFkYXRhLnZhbHVlKCkubGVuZ3RoKSk7Ci19Ci0KLVRFU1RfRihGaWxlU3lz
dGVtVGVzdCwgVW5pY29kZURpcmVjdG9yeU5hbWUpCi17Ci0gICAgU3RyaW5nIHBhdGggPSBTdHJp
bmc6OmZyb21VVEY4KCIvdGVzdC9hXHUwMzA4bG8vdGVzdC50eHQiKTsKLSAgICBTdHJpbmcgZGly
ZWN0b3J5TmFtZSA9IEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUocGF0aCk7Ci0gICAgU3RyaW5n
IGV4cGVjdGVkRGlyZWN0b3J5TmFtZSA9IFN0cmluZzo6ZnJvbVVURjgoIi90ZXN0L2FcdTAzMDhs
byIpOwotICAgIEVYUEVDVF9UUlVFKGV4cGVjdGVkRGlyZWN0b3J5TmFtZSA9PSBkaXJlY3RvcnlO
YW1lKTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL1NlY3VyaXR5T3JpZ2luLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9TZWN1cml0eU9yaWdpbi5jcHAKaW5kZXggZGE1ZjRmZjU4OThhOWYwOWM4YjgzOTVhNTVkZTcz
OGYxNjhjOTA5Zi4uYTQxYWI0YmNhMzcxZDQ1ZGU4Y2I0NTg2ODViYzk3NGUzMGY0MDZmMyAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NlY3VyaXR5T3JpZ2lu
LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2VjdXJpdHlPcmln
aW4uY3BwCkBAIC0yNiw4ICsyNiw4IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJXVEZTdHJpbmdVdGlsaXRpZXMuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVT
eXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9VUkwu
aD4KIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJl
ZEJ1ZmZlclRlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJl
ZEJ1ZmZlclRlc3QuY3BwCmluZGV4IDhmZTM1NjdjMWUxMTM2OTFkODViN2M1NWExZjk2NjU5ZGU5
ZDFmMjQuLjliOGIxM2E3NWQ1MmZmOTUxZWFkMTgxODVkNTZjMzc5MWIyZDdiZWQgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmNw
cAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVz
dC5jcHAKQEAgLTI2LDExICsyNiw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
U2hhcmVkQnVmZmVyVGVzdC5oIgogCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+Cisj
aW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgog
Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewog
CiB2b2lkIFNoYXJlZEJ1ZmZlclRlc3Q6OlNldFVwKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9EYXRhYmFzZVRyYWNrZXJUZXN0Lm1tIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL0RhdGFiYXNlVHJhY2tlclRlc3Qu
bW0KaW5kZXggNmEzYzcwMjgwYTRlZGUwMDkxMDJlZTk5NzZiMzY3YzI2YWI3ZmVlNy4uMjIxNzE1
NmY2ZTU2OTE1YTc1ZDQ0ODg0ZWFkNTE3MTlhN2M1MjkxMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL0RhdGFiYXNlVHJhY2tlclRlc3QubW0KKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL0RhdGFiYXNlVHJhY2tl
clRlc3QubW0KQEAgLTI2LDExICsyNiwxMSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaW5j
bHVkZSA8V2ViQ29yZS9EYXRhYmFzZVRyYWNrZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVT
eXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL09yaWdpbkxvY2suaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1NRTGl0ZURhdGFiYXNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVTdGF0ZW1lbnQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgorI2luY2x1ZGUgPHd0
Zi9GaWxlU3lzdGVtLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY3VybC9Db29raWVzLmNwcCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jdXJsL0Nvb2tpZXMuY3BwCmluZGV4IDFi
OGQ3ZmMzY2RlNTAyOTllMzBhZDZjNmQ4Y2ExNjI3ZjIzOTBjMWYuLmI0MGIwZDVhMGE1ZTVmYjVm
NDkxOWEzZGEyYzJmZWQ2ZmNiYzFjNGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9jdXJsL0Nvb2tpZXMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9jdXJsL0Nvb2tpZXMuY3BwCkBAIC0yOSw4ICsyOSw4IEBACiAKICNpbmNs
dWRlIDxXZWJDb3JlL0Nvb2tpZUphckRCLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db29raWVVdGls
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8bWVtb3J5Pgor
I2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25s
b2FkLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5t
bQppbmRleCA2MGNjOTNiMzQwZGQ2ODA5NDFjNDFhMmE1YWEwYmE5MjNiNWFlYzY0Li42ODFiMDJj
YTljODdkYWVjMzcyNjIyNDYxN2QxYzU5MjA4OGQ3YTZjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0KQEAgLTMzLDcgKzMzLDYgQEAK
ICNpbXBvcnQgIlRlc3QuaCIKICNpbXBvcnQgIlRlc3RQcm90b2NvbC5oIgogI2ltcG9ydCAiVGVz
dFdLV2ViVmlldy5oIgotI2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDxX
ZWJLaXQvX1dLRG93bmxvYWQuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tEb3dubG9hZERlbGVnYXRl
Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlLmg+CkBAIC00
MSw2ICs0MCw3IEBACiAjaW1wb3J0IDxXZWJLaXQvV0tVSURlbGVnYXRlUHJpdmF0ZS5oPgogI2lt
cG9ydCA8V2ViS2l0L1dLV2ViVmlldy5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZp
Z3VyYXRpb24uaD4KKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDx3dGYvTWFp
blRocmVhZC5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CkBAIC05NCwxMCArOTQsMTAgQEAgSUdOT1JFX1dBUk5JTkdTX0VORAogICAg
IEVYUEVDVF9UUlVFKGhhc1JlY2VpdmVkUmVzcG9uc2UpOwogICAgIEVYUEVDVF9FUShfZG93bmxv
YWQsIGRvd25sb2FkKTsKIAotICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhh
bmRsZSBmaWxlSGFuZGxlOwotICAgIF9kZXN0aW5hdGlvblBhdGggPSBXZWJDb3JlOjpGaWxlU3lz
dGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiVGVzdFdlYktpdEFQSSIsIGZpbGVIYW5kbGUpOwotICAg
IEVYUEVDVF9UUlVFKGZpbGVIYW5kbGUgIT0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6aW52YWxpZFBs
YXRmb3JtRmlsZUhhbmRsZSk7Ci0gICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZp
bGVIYW5kbGUpOworICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlSGFuZGxl
OworICAgIF9kZXN0aW5hdGlvblBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgi
VGVzdFdlYktpdEFQSSIsIGZpbGVIYW5kbGUpOworICAgIEVYUEVDVF9UUlVFKGZpbGVIYW5kbGUg
IT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7CisgICAgRmlsZVN5c3Rl
bTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOwogCiAgICAgKmFsbG93T3ZlcndyaXRlID0gWUVTOwog
ICAgIHJldHVybiBfZGVzdGluYXRpb25QYXRoOwpAQCAtMTA5LDcgKzEwOSw3IEBAIC0gKHZvaWQp
X2Rvd25sb2FkRGlkRmluaXNoOihfV0tEb3dubG9hZCAqKWRvd25sb2FkCiAgICAgRVhQRUNUX0VR
KGV4cGVjdGVkVXNlckluaXRpYXRlZFN0YXRlLCBkb3dubG9hZC53YXNVc2VySW5pdGlhdGVkKTsK
ICAgICBFWFBFQ1RfVFJVRShfZXhwZWN0ZWRDb250ZW50TGVuZ3RoID09IE5TVVJMUmVzcG9uc2VV
bmtub3duTGVuZ3RoIHx8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihfZXhwZWN0ZWRDb250ZW50TGVu
Z3RoKSA9PSBfcmVjZWl2ZWRDb250ZW50TGVuZ3RoKTsKICAgICBFWFBFQ1RfVFJVRShbW05TRmls
ZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNvbnRlbnRzRXF1YWxBdFBhdGg6X2Rlc3RpbmF0aW9u
UGF0aCBhbmRQYXRoOltzb3VyY2VVUkwgcGF0aF1dKTsKLSAgICBXZWJDb3JlOjpGaWxlU3lzdGVt
OjpkZWxldGVGaWxlKF9kZXN0aW5hdGlvblBhdGgpOworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZp
bGUoX2Rlc3RpbmF0aW9uUGF0aCk7CiAgICAgaXNEb25lID0gdHJ1ZTsKIH0KIApAQCAtMzk3LDEw
ICszOTcsMTAgQEAgSUdOT1JFX1dBUk5JTkdTX0VORAogICAgIEVYUEVDVF9UUlVFKGhhc1JlY2Vp
dmVkUmVzcG9uc2UpOwogICAgIEVYUEVDVF9FUShfZG93bmxvYWQsIGRvd25sb2FkKTsKIAotICAg
IFdlYkNvcmU6OkZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlSGFuZGxlOwotICAg
IF9kZXN0aW5hdGlvblBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5Rmls
ZSgiVGVzdFdlYktpdEFQSSIsIGZpbGVIYW5kbGUpOwotICAgIEVYUEVDVF9UUlVFKGZpbGVIYW5k
bGUgIT0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7Ci0g
ICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOworICAgIEZpbGVT
eXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlSGFuZGxlOworICAgIF9kZXN0aW5hdGlvblBh
dGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiVGVzdFdlYktpdEFQSSIsIGZpbGVI
YW5kbGUpOworICAgIEVYUEVDVF9UUlVFKGZpbGVIYW5kbGUgIT0gRmlsZVN5c3RlbTo6aW52YWxp
ZFBsYXRmb3JtRmlsZUhhbmRsZSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5k
bGUpOwogCiAgICAgKmFsbG93T3ZlcndyaXRlID0gWUVTOwogICAgIHJldHVybiBfZGVzdGluYXRp
b25QYXRoOwpAQCAtNDE0LDcgKzQxNCw3IEBAIC0gKHZvaWQpX2Rvd25sb2FkRGlkRmluaXNoOihf
V0tEb3dubG9hZCAqKWRvd25sb2FkCiAgICAgTlNTdHJpbmcqIGV4cGVjdGVkQ29udGVudCA9IEAi
e1wieFwiOjQyLFwic1wiOlwiaGVsbG8sIHdvcmxkXCJ9IjsKICAgICBOU0RhdGEqIGV4cGVjdGVk
RGF0YSA9IFtleHBlY3RlZENvbnRlbnQgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5j
b2RpbmddOwogICAgIEVYUEVDVF9UUlVFKFtbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJd
IGNvbnRlbnRzQXRQYXRoOl9kZXN0aW5hdGlvblBhdGhdIGlzRXF1YWxUb0RhdGE6ZXhwZWN0ZWRE
YXRhXSk7Ci0gICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShfZGVzdGluYXRpb25Q
YXRoKTsKKyAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKF9kZXN0aW5hdGlvblBhdGgpOwogICAg
IGlzRG9uZSA9IHRydWU7CiB9CiAKQEAgLTQ1NywxMCArNDU3LDEwIEBAIElHTk9SRV9XQVJOSU5H
U19CRUdJTigiZGVwcmVjYXRlZC1pbXBsZW1lbnRhdGlvbnMiKQogLSAoTlNTdHJpbmcgKilfZG93
bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2Vz
dGVkRmlsZW5hbWU6KE5TU3RyaW5nICopZmlsZW5hbWUgYWxsb3dPdmVyd3JpdGU6KEJPT0wgKilh
bGxvd092ZXJ3cml0ZQogSUdOT1JFX1dBUk5JTkdTX0VORAogewotICAgIFdlYkNvcmU6OkZpbGVT
eXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlSGFuZGxlOwotICAgIF9kZXN0aW5hdGlvblBh
dGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiVGVzdFdlYktpdEFQ
SSIsIGZpbGVIYW5kbGUpOwotICAgIEVYUEVDVF9UUlVFKGZpbGVIYW5kbGUgIT0gV2ViQ29yZTo6
RmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7Ci0gICAgV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOworICAgIEZpbGVTeXN0ZW06OlBsYXRmb3Jt
RmlsZUhhbmRsZSBmaWxlSGFuZGxlOworICAgIF9kZXN0aW5hdGlvblBhdGggPSBGaWxlU3lzdGVt
OjpvcGVuVGVtcG9yYXJ5RmlsZSgiVGVzdFdlYktpdEFQSSIsIGZpbGVIYW5kbGUpOworICAgIEVY
UEVDVF9UUlVFKGZpbGVIYW5kbGUgIT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhh
bmRsZSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOwogICAgICphbGxv
d092ZXJ3cml0ZSA9IFlFUzsKICAgICByZXR1cm4gX2Rlc3RpbmF0aW9uUGF0aDsKIH0KQEAgLTQ4
Nyw3ICs0ODcsNyBAQCAtICh2b2lkKV9kb3dubG9hZERpZEZpbmlzaDooX1dLRG93bmxvYWQgKilk
b3dubG9hZAogICAgIGlmIChyZWRpcmVjdENoYWluLmNvdW50ID4gMikKICAgICAgICAgRVhQRUNU
X1NUUkVRKCJodHRwOi8vcGFzcy8iLCBbcmVkaXJlY3RDaGFpblsyXS5hYnNvbHV0ZVN0cmluZyBV
VEY4U3RyaW5nXSk7CiAKLSAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVGaWxlKF9kZXN0
aW5hdGlvblBhdGgpOworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoX2Rlc3RpbmF0aW9uUGF0
aCk7CiAgICAgaXNEb25lID0gdHJ1ZTsKIH0KIApAQCAtNjMyLDE3ICs2MzIsMTcgQEAgLSAodm9p
ZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGVjaWRlRGVzdGluYXRpb25XaXRo
U3VnZ2VzdGVkRmlsZW5hbWUKIHsKICAgICBFWFBFQ1RfVFJVRShbZmlsZW5hbWUgaGFzU3VmZml4
OkAiLnVzZHoiXSk7CiAKLSAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5k
bGUgZmlsZUhhbmRsZTsKLSAgICBfZGVzdGluYXRpb25QYXRoID0gV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6b3BlblRlbXBvcmFyeUZpbGUoZmlsZW5hbWUsIGZpbGVIYW5kbGUpOwotICAgIEVYUEVDVF9U
UlVFKGZpbGVIYW5kbGUgIT0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmls
ZUhhbmRsZSk7Ci0gICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUp
OworICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlSGFuZGxlOworICAgIF9k
ZXN0aW5hdGlvblBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZShmaWxlbmFtZSwg
ZmlsZUhhbmRsZSk7CisgICAgRVhQRUNUX1RSVUUoZmlsZUhhbmRsZSAhPSBGaWxlU3lzdGVtOjpp
bnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKTsKKyAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmls
ZUhhbmRsZSk7CiAKICAgICBjb21wbGV0aW9uSGFuZGxlcihZRVMsIF9kZXN0aW5hdGlvblBhdGgp
OwogfQogCiAtICh2b2lkKV9kb3dubG9hZERpZEZpbmlzaDooX1dLRG93bmxvYWQgKilkb3dubG9h
ZAogewotICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoX2Rlc3RpbmF0aW9uUGF0
aCk7CisgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShfZGVzdGluYXRpb25QYXRoKTsKICAgICBp
c0RvbmUgPSB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0Rvd25sb2FkUHJvZ3Jlc3MubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0Rvd25sb2FkUHJvZ3Jlc3MubW0KaW5kZXggZjU2MGRmM2Y0YzQyZTI0
ZTY1YjNiZjYyODcxYjVmYWRjMTlhNWY2NS4uM2ViMDNmMDRhMWRkOGE4ZTE3Njc4M2Q1ZWZmZDQ4
MzQ3YTkwZGEwMCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9Eb3dubG9hZFByb2dyZXNzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvRG93bmxvYWRQcm9ncmVzcy5tbQpAQCAtMjgsNyArMjgsNiBAQAogI2ltcG9y
dCAiVGVzdFdLV2ViVmlldy5oIgogI2ltcG9ydCAiVXRpbGl0aWVzLmgiCiAjaW1wb3J0IDxGb3Vu
ZGF0aW9uL05TUHJvZ3Jlc3MuaD4KLSNpbXBvcnQgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2lt
cG9ydCA8V2ViS2l0L1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5oPgogI2ltcG9ydCA8V2Vi
S2l0L1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLUHJv
Y2Vzc1Bvb2xQcml2YXRlLmg+CkBAIC0zNyw2ICszNiw3IEBACiAjaW1wb3J0IDxXZWJLaXQvX1dL
RG93bmxvYWREZWxlZ2F0ZS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU1Byb2dyZXNzU1BJ
Lmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+
CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4K
IApAQCAtMzgwLDEwICszODAsMTAgQEAgLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICop
ZG93bmxvYWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUKIHsKICAgICBF
WFBFQ1RfRVEoZG93bmxvYWQsIG1fZG93bmxvYWQuZ2V0KCkpOwogCi0gICAgV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGVIYW5kbGU7Ci0gICAgUmV0YWluUHRyPE5T
U3RyaW5nPiBwYXRoID0gKE5TU3RyaW5nICopV2ViQ29yZTo6RmlsZVN5c3RlbTo6b3BlblRlbXBv
cmFyeUZpbGUoIlRlc3RXZWJLaXRBUEkiLCBmaWxlSGFuZGxlKTsKLSAgICBFWFBFQ1RfVFJVRShm
aWxlSGFuZGxlICE9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5k
bGUpOwotICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsKKyAg
ICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRsZTsKKyAgICBSZXRhaW5Q
dHI8TlNTdHJpbmc+IHBhdGggPSAoTlNTdHJpbmcgKilGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5
RmlsZSgiVGVzdFdlYktpdEFQSSIsIGZpbGVIYW5kbGUpOworICAgIEVYUEVDVF9UUlVFKGZpbGVI
YW5kbGUgIT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7CisgICAgRmls
ZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOwogCiAgICAgY29tcGxldGlvbkhhbmRsZXIo
WUVTLCBwYXRoLmdldCgpKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvd2lu
L1BsYXRmb3JtVXRpbGl0aWVzV2luLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL1BsYXRm
b3JtVXRpbGl0aWVzV2luLmNwcAppbmRleCAwNTZiZmY3NzgyOTUyOGIxMjkwZjEyZTM5YWIyMzhi
MGY2ODY4Yjg2Li4zNWYyMmUyYThiMWJmZTUwYTQ3MDU5MDkxODM0NzIzNjc5YTNkN2ZkIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL3dpbi9QbGF0Zm9ybVV0aWxpdGllc1dpbi5jcHAK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS93aW4vUGxhdGZvcm1VdGlsaXRpZXNXaW4uY3BwCkBA
IC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKIAogI2luY2x1
ZGUgPFNobHdhcGkuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRl
IDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaD4KIApAQCAtNDAsMTkgKzQwLDE5IEBAIHN0YXRp
YyBTdHJpbmcgbW9kdWxlRGlyZWN0b3J5KCkKICAgICB3Y2hhcl90IGZpbGVuYW1lW2J1ZmZlckxl
bmd0aF07CiAgICAgYXV0byBsZW4gPSBHZXRNb2R1bGVGaWxlTmFtZShudWxscHRyLCBmaWxlbmFt
ZSwgYnVmZmVyTGVuZ3RoKTsKICAgICBBU1NFUlQobGVuID4gMCk7Ci0gICAgcmV0dXJuIFdlYkNv
cmU6OkZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUod2NoYXJUb1N0cmluZyhmaWxlbmFtZSwgbGVu
KSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUod2NoYXJUb1N0cmluZyhm
aWxlbmFtZSwgbGVuKSk7CiB9CiAKIFdLU3RyaW5nUmVmIGNyZWF0ZUluamVjdGVkQnVuZGxlUGF0
aCgpCiB7Ci0gICAgYXV0byBwYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KG1vZHVsZURpcmVjdG9yeSgpLCBTdHJpbmcoTCJUZXN0V2ViS2l0QVBJSW5q
ZWN0ZWRCdW5kbGUuZGxsIikpOworICAgIGF1dG8gcGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChtb2R1bGVEaXJlY3RvcnkoKSwgU3RyaW5nKEwiVGVzdFdlYktpdEFQ
SUluamVjdGVkQnVuZGxlLmRsbCIpKTsKICAgICByZXR1cm4gV0tTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcocGF0aC51dGY4KCkuZGF0YSgpKTsKIH0KIAogV0tVUkxSZWYgY3JlYXRlVVJMRm9y
UmVzb3VyY2UoY29uc3QgY2hhciogcmVzb3VyY2UsIGNvbnN0IGNoYXIqIGV4dGVuc2lvbikKIHsK
ICAgICBTdHJpbmcgZmlsZW5hbWUgPSBTdHJpbmc6OmZvcm1hdCgiLi5cXC4uXFwuLlxcVG9vbHNc
XFRlc3RXZWJLaXRBUElcXFRlc3RzXFxXZWJLaXRcXCVzLiVzIiwgcmVzb3VyY2UsIGV4dGVuc2lv
bik7Ci0gICAgYXV0byB1cmwgPSBVUkw6OmZpbGVVUkxXaXRoRmlsZVN5c3RlbVBhdGgoV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1vZHVsZURpcmVjdG9yeSgp
LCBmaWxlbmFtZSkpOworICAgIGF1dG8gdXJsID0gVVJMOjpmaWxlVVJMV2l0aEZpbGVTeXN0ZW1Q
YXRoKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtb2R1bGVEaXJlY3Rvcnko
KSwgZmlsZW5hbWUpKTsKICAgICByZXR1cm4gV0tVUkxDcmVhdGVXaXRoVVRGOENTdHJpbmcodXJs
LnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359719</attachid>
            <date>2019-01-21 22:07:32 -0800</date>
            <delta_ts>2019-01-22 18:03:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193602-20190121220731.patch</filename>
            <type>text/plain</type>
            <size>436613</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwMjQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDU3NzE0ZTEzMWI1ZDM1MDM3MTkwYWQw
MDhlNjI4ZmFmNmQxODhlMWUuLmRlNWVlODBkNjJjOWU5NDViNDE2NjEyYmJiMTk2ZGQ0NzcxOGE5
YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTktMDEtMjEgIFJvc3MgS2lyc2xpbmcgIDxyb3Nz
LmtpcnNsaW5nQHNvbnkuY29tPgorCisgICAgICAgIE1vdmUgRmlsZVN5c3RlbSB0byBXVEYKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzYwMgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV1RGLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0OgorICAg
ICAgICAqIHd0Zi9GaWxlTWV0YWRhdGEuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0ZpbGVNZXRhZGF0YS5oLgorICAgICAgICAqIHd0Zi9GaWxlU3lzdGVtLmNwcDogUmVu
YW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwLgorICAgICAg
ICAqIHd0Zi9GaWxlU3lzdGVtLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9GaWxlU3lzdGVtLmguCisgICAgICAgICogd3RmL1BsYXRmb3JtR1RLLmNtYWtlOgorICAgICAg
ICAqIHd0Zi9QbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1QbGF5U3Rh
dGlvbi5jbWFrZToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1XUEUuY21ha2U6CisgICAgICAgICog
d3RmL1BsYXRmb3JtV2luLmNtYWtlOgorICAgICAgICAqIHd0Zi9jZi9GaWxlU3lzdGVtQ0YuY3Bw
OiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvRmlsZVN5c3RlbUNGLmNw
cC4KKyAgICAgICAgKiB3dGYvY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tOiBSZW5hbWVkIGZyb20g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tLgorICAgICAg
ICAqIHd0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwLgorICAgICAgICAqIHd0Zi9tYWMv
RmlsZVN5c3RlbU1hYy5tbTogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9GaWxlU3lzdGVtTWFjLm1tLgorICAgICAgICAqIHd0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVgu
Y3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3Rl
bVBPU0lYLmNwcC4KKyAgICAgICAgKiB3dGYvc3BpL21hYy9NZXRhZGF0YVNQSS5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvbWFjL01ldGFkYXRhU1BJLmguCisgICAg
ICAgICogd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2luLmNwcC4KKyAgICAgICAgKiB3dGYvd2luL1Bh
dGhXYWxrZXIuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bh
dGhXYWxrZXIuY3BwLgorICAgICAgICAqIHd0Zi93aW4vUGF0aFdhbGtlci5oOiBSZW5hbWVkIGZy
b20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BhdGhXYWxrZXIuaC4KKwogMjAxOS0wMS0y
MSAgQ2xhdWRpbyBTYWF2ZWRyYSAgPGNzYWF2ZWRyYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtH
VEtdIFNwZWN1bGF0aXZlIGJ1aWxkIGZpeCBmb3IgVWJ1bnR1IExUUwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDJl
NGViM2EyY2Y5NDI3YzU1Y2I0M2IwZTI3YjE3YzQwY2Y2OTYxOTAuLjRmZjIzOWY0YzA4MDg2NjVk
OGQ0YmJlMmRlMDE1MjVhNmZjODg1MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4MiBAQAorMjAx
OS0wMS0yMSAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CisKKyAgICAg
ICAgTW92ZSBGaWxlU3lzdGVtIHRvIFdURgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTkzNjAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHA6CisgICAg
ICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9u
LmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHA6Cisg
ICAgICAgICogTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1FbnRyeS5jcHA6CisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmNwcDoKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcDoKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCVHJhbnNhY3Rpb24uY3Bw
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIu
Y3BwOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcDoK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL09yaWdpbkxvY2suY3BwOgorICAgICAgICAq
IE1vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luTG9jay5oOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
ZGF0YWJhc2UvY29jb2EvRGF0YWJhc2VNYW5hZ2VyQ29jb2EubW06CisgICAgICAgICogUGxhdGZv
cm1NYWMuY21ha2U6CisgICAgICAgICogUGxhdGZvcm1QbGF5U3RhdGlvbi5jbWFrZToKKyAgICAg
ICAgKiBQbGF0Zm9ybVdpbi5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAg
KiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAqIGRvbS9EYXRhVHJhbnNmZXJJdGVtLmNwcDoKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXQu
Y3BwOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tOgor
ICAgICAgICAqIGZpbGVhcGkvRmlsZS5jcHA6CisgICAgICAgICogZmlsZWFwaS9GaWxlQ29jb2Eu
bW06CisgICAgICAgICogaHRtbC9GaWxlSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKiBodG1sL0Zp
bGVMaXN0Q3JlYXRvci5jcHA6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVIb3N0LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2UuY3BwOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgICogcGFnZS9T
ZWN1cml0eU9yaWdpbi5jcHA6CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL0ZpbGVIYW5kbGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9G
aWxlU3RyZWFtLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlU3RyZWFtLmg6CisgICAgICAg
ICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vU291cmNlc0dM
aWIudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL0ZpbGVNb25pdG9yQ29jb2EubW06Cisg
ICAgICAgICogcGxhdGZvcm0vZ2xpYi9GaWxlTW9uaXRvckdMaWIuY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW06
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lv
bkFWU3RyZWFtU2Vzc2lvbi5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLm1tOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mv
UXVpY2tMb29rLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0
ZWJvYXJkLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9C
bG9iUmVnaXN0cnlJbXBsLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNv
dXJjZUhhbmRsZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1t
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5Lmg6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRm9ybURhdGFTdHJlYW0uaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9tYWMvQmxvYkRhdGFGaWxlUmVmZXJlbmNlTWFjLm1tOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9z
cWwvU1FMaXRlRmlsZVN5c3RlbS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9oeXBoZW4v
SHlwaGVuYXRpb25MaWJIeXBoZW4uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TZWFyY2hQ
b3B1cE1lbnVEQi5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsuY3BwOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJUaGVtZVdpbi5jcHA6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9S
ZWdpc3RyYXRpb25EYXRhYmFzZS5jcHA6CisKIDIwMTktMDEtMjEgIEJyZW50IEZ1bGdoYW0gIDxi
ZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IG1lc3NhZ2UgaGFuZGxlcnMg
Zm9yIE5ldHdvcmtQcm9jZXNzLWJhc2VkIFJlc291cmNlTG9hZFN0YXRpc3RpY3MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hh
bmdlTG9nCmluZGV4IGU3OGYxMjViNGVlNzY0NmZmNmQ1ZTY1NWU2YTMwOWI4YmE2YjcxZWEuLjRl
YjNkYTBkMTM0NWY4NzAwYzBlYjQ3NDI2OTQ5ZDExMDIzMjEzZTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEzIEBACisyMDE5LTAxLTIxICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJz
bGluZ0Bzb255LmNvbT4KKworICAgICAgICBNb3ZlIEZpbGVTeXN0ZW0gdG8gV1RGCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM2MDIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBBTC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhbC9QbGF0Zm9ybU1hYy5jbWFrZToKKwogMjAx
OS0wMS0yMSAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFNv
cnQgUEFMIFhjb2RlIHByb2plY3QgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBhNWE0MzIxN2UyOWUxMDNhNzJj
MmViZmViMDZlOGMxZTg2NmZlZjM2Li5mZDE1NjJlYjVmZWM3NTRkMzE0NjIwMzY2MDRhYzNmMWI1
OGExNWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDE5LTAxLTIxICBSb3NzIEtpcnNs
aW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KKworICAgICAgICBNb3ZlIEZpbGVTeXN0ZW0g
dG8gV1RGCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTM2MDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3Rl
bnRTdG9yYWdlLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tC
bG9iLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHA6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUJsb2JTdG9yYWdlLmNwcDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmNwcDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmg6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsQ29jb2Eu
bW06CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVs
U291cC5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3Rh
dGlzdGljcy5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3RvcmFnZS5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFU
YXNrQ29jb2EubW06CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Np
b25Db2NvYS5tbToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nlc3NN
YWMubW06CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAu
Y3BwOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvdW5peC9QbHVnaW5Qcm9jZXNzTWFpblVuaXgu
Y3BwOgorICAgICAgICAqIFNoYXJlZC9QZXJzaXN0ZW5jeVV0aWxzLmNwcDoKKyAgICAgICAgKiBT
aGFyZWQvUGx1Z2lucy9OZXRzY2FwZS91bml4L05ldHNjYXBlUGx1Z2luTW9kdWxlVW5peC5jcHA6
CisgICAgICAgICogU2hhcmVkL1BsdWdpbnMvdW5peC9QbHVnaW5TZWFyY2hQYXRoLmNwcDoKKyAg
ICAgICAgKiBTaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5oOgorICAgICAgICAqIFNoYXJlZC9nbGli
L1Byb2Nlc3NFeGVjdXRhYmxlUGF0aEdMaWIuY3BwOgorICAgICAgICAqIFNoYXJlZC9pb3MvQ2hp
bGRQcm9jZXNzSU9TLm1tOgorICAgICAgICAqIFNoYXJlZC9tYWMvQ2hpbGRQcm9jZXNzTWFjLm1t
OgorICAgICAgICAqIFNoYXJlZC9tYWMvU2FuZGJveEV4dGVuc2lvbk1hYy5tbToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2dsaWIvQVBJV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3QuY3BwOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL3dpbi9BUElXZWJzaXRlRGF0YVN0b3JlV2luLmNwcDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHA6CisgICAgICAgICogVUlQ
cm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2Nv
YS9XZWJQcm9jZXNzUG9vbENvY29hLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJW
aWV3SW1wbC5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2Uu
Y3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHA6Cisg
ICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvQnViYmxld3JhcExhdW5jaGVyLmNwcDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9Qcm9jZXNzTGF1bmNoZXJHTGliLmNw
cDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9ndGsvUGx1Z2luSW5mb0NhY2hlLmNwcDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2luUHJvY2Vzc1Byb3h5TWFjLm1t
OgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luSW5mb1N0b3JlVW5peC5j
cHA6CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJveHlV
bml4LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5j
cHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2Uu
Y3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNl
VHJhY2tlci5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNp
dGVEYXRhU3RvcmVDb2NvYS5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1By
b3h5R0xpYi5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0
ay5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJQcm9jZXNzUG9vbEd0ay5jcHA6Cisg
ICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAg
ICAgICogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0ZpbGVVcGxvYWRQYW5lbC5tbToKKyAgICAgICAg
KiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
d2luL1dlYlByb2Nlc3NQb29sV2luLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3Mvd2luL1dlYlZp
ZXcuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy93cGUvV2ViUHJvY2Vzc1Bvb2xXUEUuY3BwOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0RXh0ZW5z
aW9uTWFuYWdlci5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9nbGli
L0luamVjdGVkQnVuZGxlR2xpYi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9NZWRpYUNhY2hl
L1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYkluc3BlY3RvclVJR3RrLmNwcDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL1dlYkluc3BlY3RvclVJV2luLmNwcDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbToKKwogMjAxOS0wMS0yMSAgQnJl
bnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgbWVz
c2FnZSBoYW5kbGVycyBmb3IgTmV0d29ya1Byb2Nlc3MtYmFzZWQgUmVzb3VyY2VMb2FkU3RhdGlz
dGljcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L0NoYW5nZUxvZwppbmRleCA5YTc3ZmQzNDA3NDJlNGMwMDIwYTM1ZDFmMmUy
NWYxNmQwNGRkNTI2Li43NzNiYzVmYjYyMGI2NTZhYTZlNWJhNDMzMjIwZmFkM2FjNzNkZDAzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE5LTAxLTIxICBSb3NzIEtp
cnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KKworICAgICAgICBNb3ZlIEZpbGVTeXN0
ZW0gdG8gV1RGCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTM2MDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFN0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcDoKKyAgICAgICAgKiBTdG9yYWdlL1N0b3Jh
Z2VTeW5jTWFuYWdlci5jcHA6CisgICAgICAgICogU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHA6
CisKIDIwMTktMDEtMTUgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFVzZSByZWZlcmVuY2VzIHJhdGhlciB0aGFuIHBvaW50ZXJzIGZvciByZWdpc3Rlci91bnJlZ2lz
dGVyIGZ1bmN0aW9ucywgYW5kIG1vcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA5
ODg3ZGUyYjVkMGU2OGFjZDBhN2MyZDdjMjg4MDJiMzI0ZmYxM2IwLi4wNGQ3NzdmM2E1Y2Q1NGMz
NGRlODg2NjhlOGVmMDNlMGNiZTJkMGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMTktMDEtMjEgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5n
QHNvbnkuY29tPgorCisgICAgICAgIE1vdmUgRmlsZVN5c3RlbSB0byBXVEYKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzYwMgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWlzYy9XZWJOU0ZpbGVNYW5h
Z2VyRXh0cmFzLm1tOgorICAgICAgICAqIFN0b3JhZ2UvV2ViRGF0YWJhc2VQcm92aWRlci5tbToK
KyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisKIDIwMTktMDEtMTUgIERhcmluIEFkbGVy
ICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSByZWZlcmVuY2VzIHJhdGhlciB0aGFu
IHBvaW50ZXJzIGZvciByZWdpc3Rlci91bnJlZ2lzdGVyIGZ1bmN0aW9ucywgYW5kIG1vcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCAxNWM3MWQ3MTBmMjlkOGUwMTFmZDc4MjI5NGEy
ZGMzZTQ1MGI1NTU2Li5hMTQ1NWZmZjY4YmJjNmIxNjE5YTBkNzJjMTMxNGZhYzUxZDIyYTg1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTktMDEtMjEg
IFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgorCisgICAgICAgIE1vdmUg
RmlsZVN5c3RlbSB0byBXVEYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE5MzYwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHA6CisgICAgICAgICogUGx1Z2lu
cy9QbHVnaW5QYWNrYWdlLmg6CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5TdHJlYW0uaDoKKyAg
ICAgICAgKiBXZWJBcHBsaWNhdGlvbkNhY2hlLmNwcDoKKyAgICAgICAgKiBXZWJEYXRhYmFzZU1h
bmFnZXIuY3BwOgorICAgICAgICAqIFdlYkRvd25sb2FkQ3VybC5jcHA6CisgICAgICAgICogV2Vi
UHJlZmVyZW5jZXMuY3BwOgorICAgICAgICAqIFdlYlZpZXcuY3BwOgorCiAyMDE5LTAxLTE1ICBE
YXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgcmVmZXJlbmNlcyBy
YXRoZXIgdGhhbiBwb2ludGVycyBmb3IgcmVnaXN0ZXIvdW5yZWdpc3RlciBmdW5jdGlvbnMsIGFu
ZCBtb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhMjIz
OTQ5MGQxMTJkY2E0NmE1YWE0YmNkZWQzNWZkYmNhYWVjOWU5Li5kMDhjNzlmMmI4M2E4ZTEzZmVk
ZGI5Y2MxMTlmMzFhMWE5Zjk3NjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTg5LDYgKzg5LDExIEBACiAJCTkzOTM0QkQ1MThBMUYxNjkwMEQwRDZBMSAv
KiBTdHJpbmdWaWV3Q0YuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTM5MzRCRDQxOEExRjE2OTAwRDBENkExIC8qIFN0cmluZ1ZpZXdDRi5jcHAgKi87
IH07CiAJCTkzRjE5OTNFMTlENzk1OEQwMEMyMzkwQiAvKiBTdHJpbmdWaWV3LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjE5OTNEMTlENzk1OEQw
MEMyMzkwQiAvKiBTdHJpbmdWaWV3LmNwcCAqLzsgfTsKIAkJOUJDNzBGMDUxNzZDMzc5RDAwMTAx
REVDIC8qIEF0b21pY1N0cmluZ1RhYmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDlCQzcwRjA0MTc2QzM3OUQwMDEwMURFQyAvKiBBdG9taWNTdHJp
bmdUYWJsZS5jcHAgKi87IH07CisJCUEzMzFEOTVCMjFGMjQ5OTIwMDlGMDJBQSAvKiBGaWxlU3lz
dGVtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEz
MzFEOTVBMjFGMjQ5OTIwMDlGMDJBQSAvKiBGaWxlU3lzdGVtLmNwcCAqLzsgfTsKKwkJQTMzMUQ5
NUQyMUYyNDlFNDAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1DRi5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMzMxRDk1QzIxRjI0OUU0MDA5RjAyQUEgLyog
RmlsZVN5c3RlbUNGLmNwcCAqLzsgfTsKKwkJQTMzMUQ5NUYyMUYyNDlGNjAwOUYwMkFBIC8qIEZp
bGVTeXN0ZW1Db2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEEzMzFEOTVFMjFGMjQ5RjYwMDlGMDJBQSAvKiBGaWxlU3lzdGVtQ29jb2EubW0gKi87
IH07CisJCUEzMzFEOTYxMjFGMjRBMEEwMDlGMDJBQSAvKiBGaWxlU3lzdGVtTWFjLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTMzMUQ5NjAyMUYyNEEw
QTAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1NYWMubW0gKi87IH07CisJCUEzMzFEOTY3MjFGMjRBQkQw
MDlGMDJBQSAvKiBGaWxlU3lzdGVtUE9TSVguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTMzMUQ5NjYyMUYyNEFCRDAwOUYwMkFBIC8qIEZpbGVTeXN0
ZW1QT1NJWC5jcHAgKi87IH07CiAJCUEzQjcyNUVDOTg3NDQ2QUQ5M0YxQTQ0MCAvKiBSYW5kb21E
ZXZpY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QzhGNTk3Q0EyQTU3NDE3RkJBQjkyRkQ2IC8qIFJhbmRvbURldmljZS5jcHAgKi87IH07CiAJCUEz
RTRERDkzMUYzQTgwMzQwMERFRDBCNCAvKiBUZXh0U3RyZWFtLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzRTRERDkxMUYzQTgwMzQwMERFRDBCNCAv
KiBUZXh0U3RyZWFtLmNwcCAqLzsgfTsKIAkJQTVCQTE1RjMxODI0MzNBOTAwQTgyRTY5IC8qIFN0
cmluZ0NvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTVCQTE1RjIxODI0MzNBOTAwQTgyRTY5IC8qIFN0cmluZ0NvY29hLm1tICovOyB9OwpAQCAt
NDMwLDggKzQzNSwxNiBAQAogCQk5QzY3QzU0MjU4OTM0OEUyODVCNDk2OTkgLyogSW5kZXhlZENv
bnRhaW5lckl0ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluZGV4
ZWRDb250YWluZXJJdGVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMzBE
NDEyQzFGMERFMEJBMDBCNzE5NTQgLyogU29mdExpbmtpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU29mdExpbmtpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQTMwRDQxMkQxRjBERTEzRjAwQjcxOTU0IC8qIFNvZnRMaW5raW5nLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvZnRMaW5raW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUEzMzFEOTU4MjFGMjQ5NzgwMDlGMDJBQSAvKiBGaWxlTWV0YWRhdGEuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmlsZU1ldGFkYXRhLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUEzMzFEOTU5MjFGMjQ5OTIwMDlGMDJBQSAvKiBGaWxlU3lzdGVt
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbGVTeXN0ZW0uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTMzMUQ5NUEyMUYyNDk5MjAwOUYwMkFBIC8qIEZpbGVT
eXN0ZW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmlsZVN5c3Rl
bS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEzMzFEOTVDMjFGMjQ5RTQwMDlG
MDJBQSAvKiBGaWxlU3lzdGVtQ0YuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRmlsZVN5c3RlbUNGLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTMz
MUQ5NUUyMUYyNDlGNjAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1Db2NvYS5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZpbGVTeXN0ZW1Db2NvYS5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTMzMUQ5NjAyMUYyNEEwQTAwOUYwMkFBIC8qIEZpbGVTeXN0
ZW1NYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBGaWxlU3lz
dGVtTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMzMxRDk2NjIxRjI0QUJE
MDA5RjAyQUEgLyogRmlsZVN5c3RlbVBPU0lYLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEZpbGVTeXN0ZW1QT1NJWC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUEzNkUxNkY3MjE2RkY4MjgwMDhERDg3RSAvKiBXVEZTZW1hcGhvcmUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV1RGU2VtYXBob3JlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUEzQUI2RTZBMUYzRTFBRDYwMDlDMTRCMSAvKiBWYWx1ZVRvU3RyaW5n
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZhbHVlVG9TdHJpbmcuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTNEMjczQjkyMUYyRUU5MTAwODY2OTcxIC8qIE1l
dGFkYXRhU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1ldGFkYXRhU1BJ
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzRTRERDkxMUYzQTgwMzQwMERFRDBC
NCAvKiBUZXh0U3RyZWFtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFRleHRTdHJlYW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBM0U0REQ5MjFG
M0E4MDM0MDBERUQwQjQgLyogVGV4dFN0cmVhbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBUZXh0U3RyZWFtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1MDk4
QUZGMUMxNjlFMDcwMDA4Nzc5NyAvKiBTYW5kYm94U1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNhbmRib3hTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTcxNyw2ICs3MzAsNyBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJNUMxRjA1OTEyMTY0MzU2QjAw
MzkzMDJDIC8qIENGVVJMRXh0cmFzLmNwcCAqLywKIAkJCQk1QzFGMDU5MjIxNjQzNTZCMDAzOTMw
MkMgLyogQ0ZVUkxFeHRyYXMuaCAqLywKKwkJCQlBMzMxRDk1QzIxRjI0OUU0MDA5RjAyQUEgLyog
RmlsZVN5c3RlbUNGLmNwcCAqLywKIAkJCQlDMkJDRkM0MTFGNjFENjE2MDBDOTIyMkMgLyogTGFu
Z3VhZ2VDRi5jcHAgKi8sCiAJCQkJMkNERUQwRUUxODExNUMzODAwNERCQTcwIC8qIFJ1bkxvb3BD
Ri5jcHAgKi8sCiAJCQkJMUFGREU2NDcxOTUyMDFDMzAwQzQ4RkZBIC8qIFR5cGVDYXN0c0NGLmgg
Ki8sCkBAIC03NzQsNiArNzg4LDIyIEBACiAJCQluYW1lID0gU291cmNlOwogCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJQTMzMUQ5NjMyMUYyNEEyRTAwOUYwMkFBIC8qIHBvc2l4
ICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlBMzMxRDk2
NjIxRjI0QUJEMDA5RjAyQUEgLyogRmlsZVN5c3RlbVBPU0lYLmNwcCAqLywKKwkJCSk7CisJCQlw
YXRoID0gcG9zaXg7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQlBM0QyNzNC
ODIxRjJFRTdCMDA4NjY5NzEgLyogbWFjICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQlj
aGlsZHJlbiA9ICgKKwkJCQlBM0QyNzNCOTIxRjJFRTkxMDA4NjY5NzEgLyogTWV0YWRhdGFTUEku
aCAqLywKKwkJCSk7CisJCQlwYXRoID0gbWFjOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
KwkJfTsKIAkJQTVCQTE1RjExODI0MzM5RjAwQTgyRTY5IC8qIGNvY29hICovID0gewogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTgwNyw2ICs4MzcsNyBAQAogCQkJCTFG
QTQ3Qzg3MTUyNTAyREEwMDU2OEQxQiAvKiBpb3MgKi8sCiAJCQkJQThBNDcyQzQxNTFBODI1QTAw
NDEyM0ZGIC8qIG1hYyAqLywKIAkJCQlFNDNBNDY4NTFFMjI4QjU3MDAyNzZCMDUgLyogcGVyc2lz
dGVuY2UgKi8sCisJCQkJQTMzMUQ5NjMyMUYyNEEyRTAwOUYwMkFBIC8qIHBvc2l4ICovLAogCQkJ
CUNFRjQ4MjBDMTlEQTM0NzYwMENDMDRCOCAvKiBzcGkgKi8sCiAJCQkJQThBNDczMUIxNTFBODI1
QjAwNDEyM0ZGIC8qIHRleHQgKi8sCiAJCQkJQThBNDczMzkxNTFBODI1QjAwNDEyM0ZGIC8qIHRo
cmVhZHMgKi8sCkBAIC04OTQsOCArOTI1LDExIEBACiAJCQkJQThBNDcyQTIxNTFBODI1QTAwNDEy
M0ZGIC8qIEZhc3RNYWxsb2MuaCAqLywKIAkJCQkwRjc5QzdDMzFFNzM1MTE4MDBFQjM0RDEgLyog
RmFzdFRMUy5oICovLAogCQkJCUIzOEZEN0JDMTY4OTUzRTgwMDY1Qzk2OSAvKiBGZWF0dXJlRGVm
aW5lcy5oICovLAorCQkJCUEzMzFEOTU4MjFGMjQ5NzgwMDlGMDJBQSAvKiBGaWxlTWV0YWRhdGEu
aCAqLywKIAkJCQkwRjlEMzM1QjE2NURCQTczMDA1QUQzODcgLyogRmlsZVByaW50U3RyZWFtLmNw
cCAqLywKIAkJCQkwRjlEMzM1QzE2NURCQTczMDA1QUQzODcgLyogRmlsZVByaW50U3RyZWFtLmgg
Ki8sCisJCQkJQTMzMUQ5NUEyMUYyNDk5MjAwOUYwMkFBIC8qIEZpbGVTeXN0ZW0uY3BwICovLAor
CQkJCUEzMzFEOTU5MjFGMjQ5OTIwMDlGMDJBQSAvKiBGaWxlU3lzdGVtLmggKi8sCiAJCQkJMEYy
QjY2QTUxN0I2QjRGNzAwQTdBRTNGIC8qIEZsaXBCeXRlcy5oICovLAogCQkJCUZFODZBODc0MUU1
OTQ0MDIwMDExMUJCRiAvKiBGb3JiaWRIZWFwQWxsb2NhdGlvbi5oICovLAogCQkJCUE4QTQ3MkE2
MTUxQTgyNUEwMDQxMjNGRiAvKiBGb3J3YXJkLmggKi8sCkBAIC0xMTkwLDYgKzEyMjQsNyBAQAog
CQkJY2hpbGRyZW4gPSAoCiAJCQkJMUE0MjhCOEIxQzhGODlERDAwNTFFOUVCIC8qIEFwcEtpdENv
bXBhdGliaWxpdHlEZWNsYXJhdGlvbnMuaCAqLywKIAkJCQkxQUNBREQ4MjE4ODQ0ODAxMDBEOEI3
MUQgLyogRGVwcmVjYXRlZFN5bWJvbHNVc2VkQnlTYWZhcmkubW0gKi8sCisJCQkJQTMzMUQ5NjAy
MUYyNEEwQTAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1NYWMubW0gKi8sCiAJCQkJNTM1MzRGMjkxRUMw
RTEwRTAwMTQxQjJGIC8qIE1hY2hFeGNlcHRpb25zLmRlZnMgKi8sCiAJCQkpOwogCQkJcGF0aCA9
IG1hYzsKQEAgLTEzMTcsNiArMTM1Miw3IEBACiAJCQkJRENFRTIxRjkxQ0VBNzUyRjAwMEMyMzk2
IC8qIGNmICovLAogCQkJCUNFNDY1MTZDMTlEQjFGQjQwMDNFQ0EwNSAvKiBjb2NvYSAqLywKIAkJ
CQlDRTczRTAyMzE5RENCN0FCMDA1ODBENUMgLyogZGFyd2luICovLAorCQkJCUEzRDI3M0I4MjFG
MkVFN0IwMDg2Njk3MSAvKiBtYWMgKi8sCiAJCQkpOwogCQkJcGF0aCA9IHNwaTsKIAkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xMzUxLDYgKzEzODcsNyBAQAogCQkJCUUzOEM0MTI0MUVC
NEUwNEMwMDQyOTU3RCAvKiBDUFVUaW1lQ29jb2EuY3BwICovLAogCQkJCTE0M0RERTk3MjBDOEJF
OTkwMDdGNzZGQSAvKiBFbnRpdGxlbWVudHMuaCAqLywKIAkJCQkxNDNEREU5NTIwQzhCQzM3MDA3
Rjc2RkEgLyogRW50aXRsZW1lbnRzLm1tICovLAorCQkJCUEzMzFEOTVFMjFGMjQ5RjYwMDlGMDJB
QSAvKiBGaWxlU3lzdGVtQ29jb2EubW0gKi8sCiAJCQkJN0E2RUJBMzMyMDc0NkMzNDAwNEY5QzQ0
IC8qIE1hY2hTZW5kUmlnaHQuY3BwICovLAogCQkJCUE4QTQ3MkM1MTUxQTgyNUEwMDQxMjNGRiAv
KiBNYWluVGhyZWFkQ29jb2EubW0gKi8sCiAJCQkJQURGMkNFNjUxRTM5RjEwNjAwNjg4OURCIC8q
IE1lbW9yeUZvb3RwcmludENvY29hLmNwcCAqLywKQEAgLTE0NzYsNiArMTUxMywxMSBAQAogCQkJ
CTBGN0M1RkI2MUQ4ODVDRjIwMDQ0RjVFMiAvKiBGYXN0Qml0VmVjdG9yLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUE4QTQ3M0MzMTUxQTgyNUIwMDQxMjNGRiAvKiBGYXN0TWFsbG9jLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGOUQzMzYwMTY1REJBNzMwMDVBRDM4NyAvKiBGaWxlUHJpbnRTdHJl
YW0uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTMzMUQ5NUIyMUYyNDk5MjAwOUYwMkFBIC8qIEZp
bGVTeXN0ZW0uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTMzMUQ5NUQyMUYyNDlFNDAwOUYwMkFB
IC8qIEZpbGVTeXN0ZW1DRi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBMzMxRDk1RjIxRjI0OUY2
MDA5RjAyQUEgLyogRmlsZVN5c3RlbUNvY29hLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQTMzMUQ5
NjEyMUYyNEEwQTAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1NYWMubW0gaW4gU291cmNlcyAqLywKKwkJ
CQlBMzMxRDk2NzIxRjI0QUJEMDA5RjAyQUEgLyogRmlsZVN5c3RlbVBPU0lYLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUE4QTQ3M0I1MTUxQTgyNUIwMDQxMjNGRiAvKiBmaXhlZC1kdG9hLmNjIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMUExRDhCOUUxNzMxODc5ODAwMTQxREE0IC8qIEZ1bmN0aW9uRGlz
cGF0Y2hlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjVCRjE3NjFGMjNENDlBMDAyOUQ5MUQg
LyogR2lnYWNhZ2UuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CmluZGV4IGNl
ZTFjY2UxZTU3MTg0ZDEzYmQyY2Q1MTllZjZhMjBkZmZiMWE5NmEuLjdkODU4MzMyMGY0OWM2MTA0
MDFjN2I4YWI0NDYzOTZkODhjMTUwZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtl
TGlzdHMudHh0CisrKyBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CkBAIC02MSw3ICs2
MSw5IEBAIHNldChXVEZfUFVCTElDX0hFQURFUlMKICAgICBGYXN0TWFsbG9jLmgKICAgICBGYXN0
VExTLmgKICAgICBGZWF0dXJlRGVmaW5lcy5oCisgICAgRmlsZU1ldGFkYXRhLmgKICAgICBGaWxl
UHJpbnRTdHJlYW0uaAorICAgIEZpbGVTeXN0ZW0uaAogICAgIEZsaXBCeXRlcy5oCiAgICAgRm9y
YmlkSGVhcEFsbG9jYXRpb24uaAogICAgIEZvcndhcmQuaApAQCAtMzUzLDYgKzM1NSw3IEBAIHNl
dChXVEZfU09VUkNFUwogICAgIEZhc3RCaXRWZWN0b3IuY3BwCiAgICAgRmFzdE1hbGxvYy5jcHAK
ICAgICBGaWxlUHJpbnRTdHJlYW0uY3BwCisgICAgRmlsZVN5c3RlbS5jcHAKICAgICBGdW5jdGlv
bkRpc3BhdGNoZXIuY3BwCiAgICAgR2lnYWNhZ2UuY3BwCiAgICAgR2xvYmFsVmVyc2lvbi5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVNZXRhZGF0YS5oIGIvU291cmNlL1dURi93
dGYvRmlsZU1ldGFkYXRhLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGJiODhmYzg0Zjk0YWY0Y2NmMWM1ODBlMGQ1
NmEyYjY1ODExMGY5OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVNZXRh
ZGF0YS5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9XYWxs
VGltZS5oPgorCituYW1lc3BhY2UgV1RGIHsKKworc3RydWN0IEZpbGVNZXRhZGF0YSB7CisgICAg
Ly8gVGhlIGxhc3QgbW9kaWZpY2F0aW9uIHRpbWUgb2YgdGhlIGZpbGUsIGluIHNlY29uZHMuCisg
ICAgV2FsbFRpbWUgbW9kaWZpY2F0aW9uVGltZTsKKworICAgIC8vIFRoZSBsZW5ndGggb2YgdGhl
IGZpbGUgaW4gYnl0ZXMuCisgICAgbG9uZyBsb25nIGxlbmd0aDsKKworICAgIGJvb2wgaXNIaWRk
ZW47CisKKyAgICBlbnVtIGNsYXNzIFR5cGUgeyBGaWxlLCBEaXJlY3RvcnksIFN5bWJvbGljTGlu
ayB9OworICAgIFR5cGUgdHlwZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgorCit1c2luZyBX
VEY6OkZpbGVNZXRhZGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0u
Y3BwIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTVmN2JiMDNi
YTAxNzk5N2UzYzk5NWYzODg1Mjk2YTZmNGEyMTcwMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwCkBAIC0wLDAgKzEsMzY3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA3LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KKworI2luY2x1ZGUg
PHd0Zi9GaWxlTWV0YWRhdGEuaD4KKyNpbmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+CisjaW5jbHVk
ZSA8d3RmL1Njb3BlLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKworI2lmICFPUyhXSU5ET1dTKQorI2luY2x1ZGUg
PGZjbnRsLmg+CisjaW5jbHVkZSA8c3lzL21tYW4uaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgor
I2luY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXVEYgeworCituYW1lc3Bh
Y2UgRmlsZVN5c3RlbSB7CisKKy8vIFRoZSBmb2xsb3dpbmcgbG93ZXItQVNDSUkgY2hhcmFjdGVy
cyBuZWVkIGVzY2FwaW5nIHRvIGJlIHVzZWQgaW4gYSBmaWxlbmFtZQorLy8gYWNyb3NzIGFsbCBz
eXN0ZW1zLCBpbmNsdWRpbmcgV2luZG93czoKKy8vICAgICAtIFVucHJpbnRhYmxlIEFTQ0lJICgw
MC0xRikKKy8vICAgICAtIFNwYWNlICAgICAgICAgICAgICgyMCkKKy8vICAgICAtIERvdWJsZSBx
dW90ZSAgICAgICgyMikKKy8vICAgICAtIFBlcmNlbnQgICAgICAgICAgICgyNSkgKGVzY2FwZWQg
YmVjYXVzZSBpdCBpcyBvdXIgZXNjYXBlIGNoYXJhY3RlcikKKy8vICAgICAtIEFzdGVyaXNrICAg
ICAgICAgICgyQSkKKy8vICAgICAtIFNsYXNoICAgICAgICAgICAgICgyRikKKy8vICAgICAtIENv
bG9uICAgICAgICAgICAgICgzQSkKKy8vICAgICAtIExlc3MtdGhhbiAgICAgICAgICgzQykKKy8v
ICAgICAtIEdyZWF0ZXItdGhhbiAgICAgICgzRSkKKy8vICAgICAtIFF1ZXN0aW9uIE1hcmsgICAg
ICgzRikKKy8vICAgICAtIEJhY2tzbGFzaCAgICAgICAgICg1QykKKy8vICAgICAtIFBpcGUgICAg
ICAgICAgICAgICg3QykKKy8vICAgICAtIERlbGV0ZSAgICAgICAgICAgICg3RikKKworc3RhdGlj
IGNvbnN0IGJvb2wgbmVlZHNFc2NhcGluZ1sxMjhdID0geworICAgIHRydWUsICB0cnVlLCAgdHJ1
ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgLyogMDAtMDcgKi8KKyAgICB0
cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIC8q
IDA4LTBGICovCisKKyAgICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUs
ICB0cnVlLCAgdHJ1ZSwgIC8qIDEwLTE3ICovCisgICAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1
ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICAvKiAxOC0xRiAqLworCisgICAgdHJ1ZSwg
IGZhbHNlLCB0cnVlLCAgZmFsc2UsIGZhbHNlLCB0cnVlLCAgZmFsc2UsIGZhbHNlLCAvKiAyMC0y
NyAqLworICAgIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNl
LCB0cnVlLCAgLyogMjgtMkYgKi8KKworICAgIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBm
YWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgLyogMzAtMzcgKi8KKyAgICBmYWxzZSwgZmFsc2Us
IHRydWUsICBmYWxzZSwgdHJ1ZSwgIGZhbHNlLCB0cnVlLCAgdHJ1ZSwgIC8qIDM4LTNGICovCisK
KyAgICBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFs
c2UsIC8qIDQwLTQ3ICovCisgICAgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBm
YWxzZSwgZmFsc2UsIGZhbHNlLCAvKiA0OC00RiAqLworCisgICAgZmFsc2UsIGZhbHNlLCBmYWxz
ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAvKiA1MC01NyAqLworICAgIGZh
bHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCAgZmFsc2UsIGZhbHNlLCBmYWxzZSwgLyog
NTgtNUYgKi8KKworICAgIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2Us
IGZhbHNlLCBmYWxzZSwgLyogNjAtNjcgKi8KKyAgICBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxz
ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIC8qIDY4LTZGICovCisKKyAgICBmYWxzZSwg
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIC8qIDcwLTc3
ICovCisgICAgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUsICBmYWxzZSwgZmFsc2Us
IHRydWUsICAvKiA3OC03RiAqLworfTsKKworc3RhdGljIGlubGluZSBib29sIHNob3VsZEVzY2Fw
ZVVDaGFyKFVDaGFyIGNoYXJhY3RlciwgVUNoYXIgcHJldmlvdXNDaGFyYWN0ZXIsIFVDaGFyIG5l
eHRDaGFyYWN0ZXIpCit7CisgICAgaWYgKGNoYXJhY3RlciA8PSAxMjcpCisgICAgICAgIHJldHVy
biBuZWVkc0VzY2FwaW5nW2NoYXJhY3Rlcl07CisKKyAgICBpZiAoVTE2X0lTX0xFQUQoY2hhcmFj
dGVyKSAmJiAhVTE2X0lTX1RSQUlMKG5leHRDaGFyYWN0ZXIpKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKworICAgIGlmIChVMTZfSVNfVFJBSUwoY2hhcmFjdGVyKSAmJiAhVTE2X0lTX0xFQUQocHJl
dmlvdXNDaGFyYWN0ZXIpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiBmYWxz
ZTsKK30KKworU3RyaW5nIGVuY29kZUZvckZpbGVOYW1lKGNvbnN0IFN0cmluZyYgaW5wdXRTdHJp
bmcpCit7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gaW5wdXRTdHJpbmcubGVuZ3RoKCk7CisgICAg
aWYgKCFsZW5ndGgpCisgICAgICAgIHJldHVybiBpbnB1dFN0cmluZzsKKworICAgIFN0cmluZ0J1
aWxkZXIgcmVzdWx0OworICAgIHJlc3VsdC5yZXNlcnZlQ2FwYWNpdHkobGVuZ3RoKTsKKworICAg
IFVDaGFyIHByZXZpb3VzQ2hhcmFjdGVyOworICAgIFVDaGFyIGNoYXJhY3RlciA9IDA7CisgICAg
VUNoYXIgbmV4dENoYXJhY3RlciA9IGlucHV0U3RyaW5nWzBdOworICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICBwcmV2aW91c0NoYXJhY3RlciA9IGNo
YXJhY3RlcjsKKyAgICAgICAgY2hhcmFjdGVyID0gbmV4dENoYXJhY3RlcjsKKyAgICAgICAgbmV4
dENoYXJhY3RlciA9IGkgKyAxIDwgbGVuZ3RoID8gaW5wdXRTdHJpbmdbaSArIDFdIDogMDsKKwor
ICAgICAgICBpZiAoc2hvdWxkRXNjYXBlVUNoYXIoY2hhcmFjdGVyLCBwcmV2aW91c0NoYXJhY3Rl
ciwgbmV4dENoYXJhY3RlcikpIHsKKyAgICAgICAgICAgIGlmIChjaGFyYWN0ZXIgPD0gMjU1KSB7
CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnJScpOworICAgICAgICAgICAgICAgIGFw
cGVuZEJ5dGVBc0hleChjaGFyYWN0ZXIsIHJlc3VsdCk7CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCIlKyIpOworICAgICAgICAgICAg
ICAgIGFwcGVuZEJ5dGVBc0hleChjaGFyYWN0ZXIgPj4gOCwgcmVzdWx0KTsKKyAgICAgICAgICAg
ICAgICBhcHBlbmRCeXRlQXNIZXgoY2hhcmFjdGVyLCByZXN1bHQpOworICAgICAgICAgICAgfQor
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoY2hhcmFjdGVyKTsKKyAg
ICB9CisKKyAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7Cit9CisKK1N0cmluZyBkZWNvZGVG
cm9tRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBpbnB1dFN0cmluZykKK3sKKyAgICB1bnNpZ25lZCBs
ZW5ndGggPSBpbnB1dFN0cmluZy5sZW5ndGgoKTsKKyAgICBpZiAoIWxlbmd0aCkKKyAgICAgICAg
cmV0dXJuIGlucHV0U3RyaW5nOworCisgICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7CisgICAgcmVz
dWx0LnJlc2VydmVDYXBhY2l0eShsZW5ndGgpOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgIGlmIChpbnB1dFN0cmluZ1tpXSAhPSAnJScpIHsK
KyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoaW5wdXRTdHJpbmdbaV0pOworICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIH0KKworICAgICAgICAvLyBJZiB0aGUgaW5wdXQgc3RyaW5nIGlz
IGEgdmFsaWQgZW5jb2RlZCBmaWxlbmFtZSwgaXQgbXVzdCBiZSBhdCBsZWFzdCAyIGNoYXJhY3Rl
cnMgbG9uZ2VyCisgICAgICAgIC8vIHRoYW4gdGhlIGN1cnJlbnQgaW5kZXggdG8gYWNjb3VudCBm
b3IgdGhpcyBwZXJjZW50IGVuY29kZWQgdmFsdWUuCisgICAgICAgIGlmIChpICsgMiA+PSBsZW5n
dGgpCisgICAgICAgICAgICByZXR1cm4geyB9OworCisgICAgICAgIGlmIChpbnB1dFN0cmluZ1tp
KzFdICE9ICcrJykgeworICAgICAgICAgICAgaWYgKCFpc0FTQ0lJSGV4RGlnaXQoaW5wdXRTdHJp
bmdbaSArIDFdKSkKKyAgICAgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICAgICAgaWYg
KCFpc0FTQ0lJSGV4RGlnaXQoaW5wdXRTdHJpbmdbaSArIDJdKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4geyB9OworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh0b0FTQ0lJSGV4VmFsdWUoaW5w
dXRTdHJpbmdbaSArIDFdLCBpbnB1dFN0cmluZ1tpICsgMl0pKTsKKyAgICAgICAgICAgIGkgKz0g
MjsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgdGhl
IGlucHV0IHN0cmluZyBpcyBhIHZhbGlkIGVuY29kZWQgZmlsZW5hbWUsIGl0IG11c3QgYmUgYXQg
bGVhc3QgNSBjaGFyYWN0ZXJzIGxvbmdlcgorICAgICAgICAvLyB0aGFuIHRoZSBjdXJyZW50IGlu
ZGV4IHRvIGFjY291bnQgZm9yIHRoaXMgcGVyY2VudCBlbmNvZGVkIHZhbHVlLgorICAgICAgICBp
ZiAoaSArIDUgPj0gbGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuIHsgfTsKKworICAgICAgICBp
ZiAoIWlzQVNDSUlIZXhEaWdpdChpbnB1dFN0cmluZ1tpICsgMl0pKQorICAgICAgICAgICAgcmV0
dXJuIHsgfTsKKyAgICAgICAgaWYgKCFpc0FTQ0lJSGV4RGlnaXQoaW5wdXRTdHJpbmdbaSArIDNd
KSkKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIGlmICghaXNBU0NJSUhleERpZ2l0
KGlucHV0U3RyaW5nW2kgKyA0XSkpCisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICBp
ZiAoIWlzQVNDSUlIZXhEaWdpdChpbnB1dFN0cmluZ1tpICsgNV0pKQorICAgICAgICAgICAgcmV0
dXJuIHsgfTsKKworICAgICAgICByZXN1bHQuYXBwZW5kKHRvQVNDSUlIZXhWYWx1ZShpbnB1dFN0
cmluZ1tpICsgMl0sIGlucHV0U3RyaW5nW2kgKyAzXSkgPDwgOCB8IHRvQVNDSUlIZXhWYWx1ZShp
bnB1dFN0cmluZ1tpICsgNF0sIGlucHV0U3RyaW5nW2kgKyA1XSkpOworICAgICAgICBpICs9IDU7
CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOworfQorCitTdHJpbmcgbGFz
dENvbXBvbmVudE9mUGF0aElnbm9yaW5nVHJhaWxpbmdTbGFzaChjb25zdCBTdHJpbmcmIHBhdGgp
Cit7CisjaWYgT1MoV0lORE9XUykKKyAgICBjaGFyIHBhdGhTZXBhcmF0b3IgPSAnXFwnOworI2Vs
c2UKKyAgICBjaGFyIHBhdGhTZXBhcmF0b3IgPSAnLyc7CisjZW5kaWYKKworICAgIGF1dG8gcG9z
aXRpb24gPSBwYXRoLnJldmVyc2VGaW5kKHBhdGhTZXBhcmF0b3IpOworICAgIGlmIChwb3NpdGlv
biA9PSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJuIHBhdGg7CisKKyAgICBzaXplX3QgZW5kT2ZT
dWJzdHJpbmcgPSBwYXRoLmxlbmd0aCgpIC0gMTsKKyAgICBpZiAocG9zaXRpb24gPT0gZW5kT2ZT
dWJzdHJpbmcpIHsKKyAgICAgICAgLS1lbmRPZlN1YnN0cmluZzsKKyAgICAgICAgcG9zaXRpb24g
PSBwYXRoLnJldmVyc2VGaW5kKHBhdGhTZXBhcmF0b3IsIGVuZE9mU3Vic3RyaW5nKTsKKyAgICB9
CisKKyAgICByZXR1cm4gcGF0aC5zdWJzdHJpbmcocG9zaXRpb24gKyAxLCBlbmRPZlN1YnN0cmlu
ZyAtIHBvc2l0aW9uKTsKK30KKworYm9vbCBhcHBlbmRGaWxlQ29udGVudHNUb0ZpbGVIYW5kbGUo
Y29uc3QgU3RyaW5nJiBwYXRoLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHRhcmdldCkKK3sKKyAgICBh
dXRvIHNvdXJjZSA9IG9wZW5GaWxlKHBhdGgsIEZpbGVPcGVuTW9kZTo6UmVhZCk7CisKKyAgICBp
ZiAoIWlzSGFuZGxlVmFsaWQoc291cmNlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
c3RhdGljIGludCBidWZmZXJTaXplID0gMSA8PCAxOTsKKyAgICBWZWN0b3I8Y2hhcj4gYnVmZmVy
KGJ1ZmZlclNpemUpOworCisgICAgYXV0byBmaWxlQ2xvc2VyID0gV1RGOjptYWtlU2NvcGVFeGl0
KFtzb3VyY2VdKCkgeworICAgICAgICBQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlID0gc291cmNl
OworICAgICAgICBjbG9zZUZpbGUoaGFuZGxlKTsKKyAgICB9KTsKKworICAgIGRvIHsKKyAgICAg
ICAgaW50IHJlYWRCeXRlcyA9IHJlYWRGcm9tRmlsZShzb3VyY2UsIGJ1ZmZlci5kYXRhKCksIGJ1
ZmZlclNpemUpOworCisgICAgICAgIGlmIChyZWFkQnl0ZXMgPCAwKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgICAgIGlmICh3cml0ZVRvRmlsZSh0YXJnZXQsIGJ1ZmZlci5kYXRh
KCksIHJlYWRCeXRlcykgIT0gcmVhZEJ5dGVzKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgICAgIGlmIChyZWFkQnl0ZXMgPCBidWZmZXJTaXplKQorICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfSB3aGlsZSAodHJ1ZSk7CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
K30KKworCitib29sIGZpbGVzSGF2ZVNhbWVWb2x1bWUoY29uc3QgU3RyaW5nJiBmaWxlQSwgY29u
c3QgU3RyaW5nJiBmaWxlQikKK3sKKyAgICBhdXRvIGZzUmVwRmlsZUEgPSBmaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oZmlsZUEpOworICAgIGF1dG8gZnNSZXBGaWxlQiA9IGZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihmaWxlQik7CisKKyAgICBpZiAoZnNSZXBGaWxlQS5pc051bGwoKSB8fCBmc1Jl
cEZpbGVCLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBib29sIHJlc3Vs
dCA9IGZhbHNlOworCisgICAgYXV0byBmaWxlQURldiA9IGdldEZpbGVEZXZpY2VJZChmc1JlcEZp
bGVBKTsKKyAgICBhdXRvIGZpbGVCRGV2ID0gZ2V0RmlsZURldmljZUlkKGZzUmVwRmlsZUIpOwor
CisgICAgaWYgKGZpbGVBRGV2ICYmIGZpbGVCRGV2KQorICAgICAgICByZXN1bHQgPSAoZmlsZUFE
ZXYgPT0gZmlsZUJEZXYpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworI2lmICFQTEFURk9S
TShNQUMpCisKK3ZvaWQgc2V0TWV0YWRhdGFVUkwoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJikKK3sKK30KKworYm9vbCBjYW5FeGNsdWRlRnJvbUJhY2t1cCgpCit7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIGV4Y2x1ZGVGcm9tQmFja3VwKGNvbnN0IFN0
cmluZyYpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCisjZW5kaWYKKworTWFwcGVkRmlsZURh
dGE6On5NYXBwZWRGaWxlRGF0YSgpCit7CisjaWYgIU9TKFdJTkRPV1MpCisgICAgaWYgKCFtX2Zp
bGVEYXRhKQorICAgICAgICByZXR1cm47CisgICAgbXVubWFwKG1fZmlsZURhdGEsIG1fZmlsZVNp
emUpOworI2VuZGlmCit9CisKK01hcHBlZEZpbGVEYXRhOjpNYXBwZWRGaWxlRGF0YShjb25zdCBT
dHJpbmcmIGZpbGVQYXRoLCBib29sJiBzdWNjZXNzKQoreworI2lmIE9TKFdJTkRPV1MpCisgICAg
Ly8gRklYTUU6IEltcGxlbWVudCBtYXBwaW5nCisgICAgc3VjY2VzcyA9IGZhbHNlOworI2Vsc2UK
KyAgICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVQYXRoKTsK
KyAgICBpbnQgZmQgPSAhZnNSZXAuaXNOdWxsKCkgPyBvcGVuKGZzUmVwLmRhdGEoKSwgT19SRE9O
TFkpIDogLTE7CisgICAgaWYgKGZkIDwgMCkgeworICAgICAgICBzdWNjZXNzID0gZmFsc2U7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzdHJ1Y3Qgc3RhdCBmaWxlU3RhdDsKKyAgICBp
ZiAoZnN0YXQoZmQsICZmaWxlU3RhdCkpIHsKKyAgICAgICAgY2xvc2UoZmQpOworICAgICAgICBz
dWNjZXNzID0gZmFsc2U7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBz
aXplOworICAgIGlmICghV1RGOjpjb252ZXJ0U2FmZWx5KGZpbGVTdGF0LnN0X3NpemUsIHNpemUp
KSB7CisgICAgICAgIGNsb3NlKGZkKTsKKyAgICAgICAgc3VjY2VzcyA9IGZhbHNlOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFzaXplKSB7CisgICAgICAgIGNsb3NlKGZkKTsK
KyAgICAgICAgc3VjY2VzcyA9IHRydWU7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB2
b2lkKiBkYXRhID0gbW1hcCgwLCBzaXplLCBQUk9UX1JFQUQsIE1BUF9GSUxFIHwgTUFQX1NIQVJF
RCwgZmQsIDApOworICAgIGNsb3NlKGZkKTsKKworICAgIGlmIChkYXRhID09IE1BUF9GQUlMRUQp
IHsKKyAgICAgICAgc3VjY2VzcyA9IGZhbHNlOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgc3VjY2VzcyA9IHRydWU7CisgICAgbV9maWxlRGF0YSA9IGRhdGE7CisgICAgbV9maWxlU2l6
ZSA9IHNpemU7CisjZW5kaWYKK30KKworUGxhdGZvcm1GaWxlSGFuZGxlIG9wZW5BbmRMb2NrRmls
ZShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVPcGVuTW9kZSBvcGVuTW9kZSwgT3B0aW9uU2V0PEZp
bGVMb2NrTW9kZT4gbG9ja01vZGUpCit7CisgICAgYXV0byBoYW5kbGUgPSBvcGVuRmlsZShwYXRo
LCBvcGVuTW9kZSk7CisgICAgaWYgKGhhbmRsZSA9PSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxl
KQorICAgICAgICByZXR1cm4gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKKworI2lmIFVTRShG
SUxFX0xPQ0spCisgICAgYm9vbCBsb2NrZWQgPSBsb2NrRmlsZShoYW5kbGUsIGxvY2tNb2RlKTsK
KyAgICBBU1NFUlRfVU5VU0VEKGxvY2tlZCwgbG9ja2VkKTsKKyNlbHNlCisgICAgVU5VU0VEX1BB
UkFNKGxvY2tNb2RlKTsKKyNlbmRpZgorCisgICAgcmV0dXJuIGhhbmRsZTsKK30KKwordm9pZCB1
bmxvY2tBbmRDbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSkKK3sKKyNpZiBVU0Uo
RklMRV9MT0NLKQorICAgIGJvb2wgdW5sb2NrZWQgPSB1bmxvY2tGaWxlKGhhbmRsZSk7CisgICAg
QVNTRVJUX1VOVVNFRCh1bmxvY2tlZCwgdW5sb2NrZWQpOworI2VuZGlmCisgICAgY2xvc2VGaWxl
KGhhbmRsZSk7Cit9CisKK2Jvb2wgZmlsZUlzRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwg
U2hvdWxkRm9sbG93U3ltYm9saWNMaW5rcyBzaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzKQorewor
ICAgIGF1dG8gbWV0YWRhdGEgPSBzaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzID09IFNob3VsZEZv
bGxvd1N5bWJvbGljTGlua3M6OlllcyA/IGZpbGVNZXRhZGF0YUZvbGxvd2luZ1N5bWxpbmtzKHBh
dGgpIDogZmlsZU1ldGFkYXRhKHBhdGgpOworICAgIGlmICghbWV0YWRhdGEpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICByZXR1cm4gbWV0YWRhdGEudmFsdWUoKS50eXBlID09IEZpbGVNZXRh
ZGF0YTo6VHlwZTo6RGlyZWN0b3J5OworfQorCit9IC8vIG5hbWVzcGFjZSBGaWxlU3lzdGVtCit9
IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0u
aCBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYTRiMWY4ODNiOTc1
NjAxODhkMmZkZjExYjI3ZTQwMWMyMTY2NjY1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dU
Ri93dGYvRmlsZVN5c3RlbS5oCkBAIC0wLDAgKzEsMjI2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA3LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA4IENvbGxhYm9yYSwgTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5v
ciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSA8dGltZS5oPgorI2luY2x1ZGUgPHV0aWxpdHk+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
KyNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2lu
Y2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgor
CisjaWYgVVNFKENGKQorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNlbmRpZgorCisjaWYg
VVNFKENGKQordHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DRkRhdGEqIENGRGF0YVJlZjsKKyNlbmRp
ZgorCitPQkpDX0NMQVNTIE5TU3RyaW5nOworCisjaWYgUExBVEZPUk0oV0lOKQordHlwZWRlZiB2
b2lkICpIQU5ETEU7CisjZW5kaWYKKworI2lmIFVTRShHTElCKQordHlwZWRlZiBzdHJ1Y3QgX0dG
aWxlSU9TdHJlYW0gR0ZpbGVJT1N0cmVhbTsKKyNlbmRpZgorCituYW1lc3BhY2UgV1RGIHsKKwor
c3RydWN0IEZpbGVNZXRhZGF0YTsKKworbmFtZXNwYWNlIEZpbGVTeXN0ZW0geworCisvLyBQbGF0
Zm9ybUZpbGVIYW5kbGUKKyNpZiBVU0UoR0xJQikgJiYgIVBMQVRGT1JNKFdJTikKK3R5cGVkZWYg
R0ZpbGVJT1N0cmVhbSogUGxhdGZvcm1GaWxlSGFuZGxlOworY29uc3QgUGxhdGZvcm1GaWxlSGFu
ZGxlIGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUgPSAwOworI2VsaWYgUExBVEZPUk0oV0lOKQor
dHlwZWRlZiBIQU5ETEUgUGxhdGZvcm1GaWxlSGFuZGxlOworLy8gRklYTUU6IC0xIGlzIElOVkFM
SURfSEFORExFX1ZBTFVFLCBkZWZpbmVkIGluIDx3aW5iYXNlLmg+LiBDaHJvbWl1bSB0cmllcyB0
bworLy8gYXZvaWQgdXNpbmcgV2luZG93cyBoZWFkZXJzIGluIGhlYWRlcnMuIFdlJ2QgcmF0aGVy
IG1vdmUgdGhpcyBpbnRvIHRoZSAuY3BwLgorY29uc3QgUGxhdGZvcm1GaWxlSGFuZGxlIGludmFs
aWRQbGF0Zm9ybUZpbGVIYW5kbGUgPSByZWludGVycHJldF9jYXN0PEhBTkRMRT4oLTEpOworI2Vs
c2UKK3R5cGVkZWYgaW50IFBsYXRmb3JtRmlsZUhhbmRsZTsKK2NvbnN0IFBsYXRmb3JtRmlsZUhh
bmRsZSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlID0gLTE7CisjZW5kaWYKKworZW51bSBjbGFz
cyBGaWxlT3Blbk1vZGUgeworICAgIFJlYWQsCisgICAgV3JpdGUsCisjaWYgT1MoREFSV0lOKQor
ICAgIEV2ZW50c09ubHksCisjZW5kaWYKK307CisKK2VudW0gY2xhc3MgRmlsZVNlZWtPcmlnaW4g
eworICAgIEJlZ2lubmluZywKKyAgICBDdXJyZW50LAorICAgIEVuZCwKK307CisKK2VudW0gY2xh
c3MgRmlsZUxvY2tNb2RlIHsKKyAgICBTaGFyZWQgPSAxIDw8IDAsCisgICAgRXhjbHVzaXZlID0g
MSA8PCAxLAorICAgIE5vbmJsb2NraW5nID0gMSA8PCAyLAorfTsKKworZW51bSBjbGFzcyBTaG91
bGRGb2xsb3dTeW1ib2xpY0xpbmtzIHsgTm8sIFllcyB9OworCitXVEZfRVhQT1JUX1BSSVZBVEUg
Ym9vbCBmaWxlRXhpc3RzKGNvbnN0IFN0cmluZyYpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wg
ZGVsZXRlRmlsZShjb25zdCBTdHJpbmcmKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGRlbGV0
ZUVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wg
bW92ZUZpbGUoY29uc3QgU3RyaW5nJiBvbGRQYXRoLCBjb25zdCBTdHJpbmcmIG5ld1BhdGgpOwor
V1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZ2V0RmlsZVNpemUoY29uc3QgU3RyaW5nJiwgbG9uZyBs
b25nJiByZXN1bHQpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZ2V0RmlsZVNpemUoUGxhdGZv
cm1GaWxlSGFuZGxlLCBsb25nIGxvbmcmIHJlc3VsdCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgT3B0
aW9uYWw8V2FsbFRpbWU+IGdldEZpbGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYpOwor
V1RGX0VYUE9SVF9QUklWQVRFIE9wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlQ3JlYXRpb25UaW1l
KGNvbnN0IFN0cmluZyYpOyAvLyBOb3QgYWxsIHBsYXRmb3JtcyBzdG9yZSBmaWxlIGNyZWF0aW9u
IHRpbWUuCitXVEZfRVhQT1JUX1BSSVZBVEUgT3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0
YWRhdGEoY29uc3QgU3RyaW5nJiBwYXRoKTsKK1dURl9FWFBPUlRfUFJJVkFURSBPcHRpb25hbDxG
aWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YUZvbGxvd2luZ1N5bWxpbmtzKGNvbnN0IFN0cmluZyYg
cGF0aCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBmaWxlSXNEaXJlY3RvcnkoY29uc3QgU3Ry
aW5nJiwgU2hvdWxkRm9sbG93U3ltYm9saWNMaW5rcyk7CitXVEZfRVhQT1JUX1BSSVZBVEUgU3Ry
aW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0
cmluZyYgY29tcG9uZW50KTsKK1dURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50cyhTdHJpbmdWaWV3IHBhdGgsIGNvbnN0IFZlY3RvcjxTdHJpbmdWaWV3PiYg
Y29tcG9uZW50cyk7CitXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGxhc3RDb21wb25lbnRPZlBh
dGhJZ25vcmluZ1RyYWlsaW5nU2xhc2goY29uc3QgU3RyaW5nJiBwYXRoKTsKK1dURl9FWFBPUlRf
UFJJVkFURSBib29sIG1ha2VBbGxEaXJlY3Rvcmllcyhjb25zdCBTdHJpbmcmIHBhdGgpOworV1RG
X0VYUE9SVF9QUklWQVRFIFN0cmluZyBob21lRGlyZWN0b3J5UGF0aCgpOworV1RGX0VYUE9SVF9Q
UklWQVRFIFN0cmluZyBwYXRoR2V0RmlsZU5hbWUoY29uc3QgU3RyaW5nJik7CitXVEZfRVhQT1JU
X1BSSVZBVEUgU3RyaW5nIGRpcmVjdG9yeU5hbWUoY29uc3QgU3RyaW5nJik7CitXVEZfRVhQT1JU
X1BSSVZBVEUgYm9vbCBnZXRWb2x1bWVGcmVlU3BhY2UoY29uc3QgU3RyaW5nJiwgdWludDY0X3Qm
KTsKK1dURl9FWFBPUlRfUFJJVkFURSBPcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQo
Y29uc3QgQ1N0cmluZyYpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgY3JlYXRlU3ltYm9saWNM
aW5rKGNvbnN0IFN0cmluZyYgdGFyZ2V0UGF0aCwgY29uc3QgU3RyaW5nJiBzeW1ib2xpY0xpbmtQ
YXRoKTsKKworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0TWV0YWRhdGFVUkwoY29uc3QgU3Ry
aW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiByZWZlcnJl
ciA9IHsgfSk7CisKK2Jvb2wgY2FuRXhjbHVkZUZyb21CYWNrdXAoKTsgLy8gUmV0dXJucyB0cnVl
IGlmIGFueSBmaWxlIGNhbiBldmVyIGJlIGV4Y2x1ZGVkIGZyb20gYmFja3VwLgorYm9vbCBleGNs
dWRlRnJvbUJhY2t1cChjb25zdCBTdHJpbmcmKTsgLy8gUmV0dXJucyB0cnVlIGlmIHN1Y2Nlc3Nm
dWwuCisKK1dURl9FWFBPUlRfUFJJVkFURSBWZWN0b3I8U3RyaW5nPiBsaXN0RGlyZWN0b3J5KGNv
bnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBmaWx0ZXIgPSBTdHJpbmcoKSk7CisKK1dU
Rl9FWFBPUlRfUFJJVkFURSBDU3RyaW5nIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBT
dHJpbmcmKTsKK1N0cmluZyBzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0
IGNoYXIqKTsKKworaW5saW5lIGJvb2wgaXNIYW5kbGVWYWxpZChjb25zdCBQbGF0Zm9ybUZpbGVI
YW5kbGUmIGhhbmRsZSkgeyByZXR1cm4gaGFuZGxlICE9IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5k
bGU7IH0KKworLy8gUHJlZml4IGlzIHdoYXQgdGhlIGZpbGVuYW1lIHNob3VsZCBiZSBwcmVmaXhl
ZCB3aXRoLCBub3QgdGhlIGZ1bGwgcGF0aC4KK1dURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgb3Bl
blRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYp
OworV1RGX0VYUE9SVF9QUklWQVRFIFBsYXRmb3JtRmlsZUhhbmRsZSBvcGVuRmlsZShjb25zdCBT
dHJpbmcmIHBhdGgsIEZpbGVPcGVuTW9kZSk7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBjbG9z
ZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlJik7CisvLyBSZXR1cm5zIHRoZSByZXN1bHRpbmcgb2Zm
c2V0IGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlsZSBpZiBzdWNjZXNzZnVsLCAtMSBvdGhl
cndpc2UuCitXVEZfRVhQT1JUX1BSSVZBVEUgbG9uZyBsb25nIHNlZWtGaWxlKFBsYXRmb3JtRmls
ZUhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCwgRmlsZVNlZWtPcmlnaW4pOworYm9vbCB0cnVuY2F0
ZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0KTsKKy8vIFJldHVybnMg
bnVtYmVyIG9mIGJ5dGVzIGFjdHVhbGx5IHJlYWQgaWYgc3VjY2Vzc2Z1bCwgLTEgb3RoZXJ3aXNl
LgorV1RGX0VYUE9SVF9QUklWQVRFIGludCB3cml0ZVRvRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUs
IGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpOworLy8gUmV0dXJucyBudW1iZXIgb2YgYnl0
ZXMgYWN0dWFsbHkgd3JpdHRlbiBpZiBzdWNjZXNzZnVsLCAtMSBvdGhlcndpc2UuCitXVEZfRVhQ
T1JUX1BSSVZBVEUgaW50IHJlYWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUsIGNoYXIqIGRh
dGEsIGludCBsZW5ndGgpOworCitXVEZfRVhQT1JUX1BSSVZBVEUgUGxhdGZvcm1GaWxlSGFuZGxl
IG9wZW5BbmRMb2NrRmlsZShjb25zdCBTdHJpbmcmLCBGaWxlT3Blbk1vZGUsIE9wdGlvblNldDxG
aWxlTG9ja01vZGU+ID0gRmlsZUxvY2tNb2RlOjpFeGNsdXNpdmUpOworV1RGX0VYUE9SVF9QUklW
QVRFIHZvaWQgdW5sb2NrQW5kQ2xvc2VGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSk7CisKKy8vIEFw
cGVuZHMgdGhlIGNvbnRlbnRzIG9mIHRoZSBmaWxlIGZvdW5kIGF0ICdwYXRoJyB0byB0aGUgb3Bl
biBQbGF0Zm9ybUZpbGVIYW5kbGUuCisvLyBSZXR1cm5zIHRydWUgaWYgdGhlIHdyaXRlIHdhcyBz
dWNjZXNzZnVsLCBmYWxzZSBpZiBpdCB3YXMgbm90LgorV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wg
YXBwZW5kRmlsZUNvbnRlbnRzVG9GaWxlSGFuZGxlKGNvbnN0IFN0cmluZyYgcGF0aCwgUGxhdGZv
cm1GaWxlSGFuZGxlJik7CisKKy8vIEhhcmQgbGlua3MgYSBmaWxlIGlmIHBvc3NpYmxlLCBjb3Bp
ZXMgaXQgaWYgbm90LgorV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaGFyZExpbmtPckNvcHlGaWxl
KGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uKTsKKworI2lm
IFVTRShGSUxFX0xPQ0spCitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBsb2NrRmlsZShQbGF0Zm9y
bUZpbGVIYW5kbGUsIE9wdGlvblNldDxGaWxlTG9ja01vZGU+KTsKK1dURl9FWFBPUlRfUFJJVkFU
RSBib29sIHVubG9ja0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlKTsKKyNlbmRpZgorCisvLyBFbmNv
ZGUgYSBzdHJpbmcgZm9yIHVzZSB3aXRoaW4gYSBmaWxlIG5hbWUuCitXVEZfRVhQT1JUX1BSSVZB
VEUgU3RyaW5nIGVuY29kZUZvckZpbGVOYW1lKGNvbnN0IFN0cmluZyYpOworV1RGX0VYUE9SVF9Q
UklWQVRFIFN0cmluZyBkZWNvZGVGcm9tRmlsZW5hbWUoY29uc3QgU3RyaW5nJik7CisKK1dURl9F
WFBPUlRfUFJJVkFURSBib29sIGZpbGVzSGF2ZVNhbWVWb2x1bWUoY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJik7CisKKyNpZiBVU0UoQ0YpCitXVEZfRVhQT1JUX1BSSVZBVEUgUmV0YWluUHRy
PENGVVJMUmVmPiBwYXRoQXNVUkwoY29uc3QgU3RyaW5nJik7CisjZW5kaWYKKworI2lmIFBMQVRG
T1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQorU3RyaW5nIGZpbGVuYW1lRm9yRGlzcGxheShjb25z
dCBTdHJpbmcmKTsKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oV0lOKQorV1RGX0VYUE9SVF9QUklW
QVRFIFN0cmluZyBsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKTsKK1dURl9FWFBP
UlRfUFJJVkFURSBTdHJpbmcgcm9hbWluZ1VzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKTsK
KyNlbmRpZgorCisjaWYgUExBVEZPUk0oQ09DT0EpCitXVEZfRVhQT1JUX1BSSVZBVEUgTlNTdHJp
bmcgKmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShOU1N0cmluZyAqZGlyZWN0b3J5UHJlZml4KTsK
K1dURl9FWFBPUlRfUFJJVkFURSBib29sIGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0
cmluZyYpOworI2VuZGlmCisKKyNpZiBQTEFURk9STShXSU5fQ0FJUk8pCitXVEZfRVhQT1JUX1BS
SVZBVEUgU3RyaW5nIGNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeSgpOworV1RGX0VYUE9SVF9QUklW
QVRFIGJvb2wgZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7CisjZW5kaWYK
KworV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyByZWFsUGF0aChjb25zdCBTdHJpbmcmKTsKKwor
Y2xhc3MgTWFwcGVkRmlsZURhdGEgeworcHVibGljOgorICAgIE1hcHBlZEZpbGVEYXRhKCkgeyB9
CisgICAgTWFwcGVkRmlsZURhdGEoTWFwcGVkRmlsZURhdGEmJik7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIE1hcHBlZEZpbGVEYXRhKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIGJvb2wmIHN1Y2Nl
c3MpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB+TWFwcGVkRmlsZURhdGEoKTsKKyAgICBNYXBw
ZWRGaWxlRGF0YSYgb3BlcmF0b3I9KE1hcHBlZEZpbGVEYXRhJiYpOworCisgICAgZXhwbGljaXQg
b3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9maWxlRGF0YTsgfQorICAgIGNvbnN0
IHZvaWQqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2ZpbGVEYXRhOyB9CisgICAgdW5zaWduZWQg
c2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsZVNpemU7IH0KKworcHJpdmF0ZToKKyAgICB2b2lk
KiBtX2ZpbGVEYXRhIHsgbnVsbHB0ciB9OworICAgIHVuc2lnbmVkIG1fZmlsZVNpemUgeyAwIH07
Cit9OworCitpbmxpbmUgTWFwcGVkRmlsZURhdGE6Ok1hcHBlZEZpbGVEYXRhKE1hcHBlZEZpbGVE
YXRhJiYgb3RoZXIpCisgICAgOiBtX2ZpbGVEYXRhKHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9maWxl
RGF0YSwgbnVsbHB0cikpCisgICAgLCBtX2ZpbGVTaXplKHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9m
aWxlU2l6ZSwgMCkpCit7Cit9CisKK2lubGluZSBNYXBwZWRGaWxlRGF0YSYgTWFwcGVkRmlsZURh
dGE6Om9wZXJhdG9yPShNYXBwZWRGaWxlRGF0YSYmIG90aGVyKQoreworICAgIG1fZmlsZURhdGEg
PSBzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fZmlsZURhdGEsIG51bGxwdHIpOworICAgIG1fZmlsZVNp
emUgPSBzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fZmlsZVNpemUsIDApOworICAgIHJldHVybiAqdGhp
czsKK30KKworfSAvLyBuYW1lc3BhY2UgRmlsZVN5c3RlbQorfSAvLyBuYW1lc3BhY2UgV1RGCisK
K25hbWVzcGFjZSBGaWxlU3lzdGVtID0gV1RGOjpGaWxlU3lzdGVtOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUdU
Sy5jbWFrZQppbmRleCA2NzNmMDJkMGQ1OTY4NTQ1YWM4N2E4YThlNTdiMjc3MzRkNzM5ODljLi43
ZmVjMTJkYzJmYzMxNWJjNTE2OGYwMmIzYmY3NjQ3MGMwZDljYmFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bUdUSy5jbWFrZQpAQCAtMjIsNiArMjIsNyBAQCBsaXN0KEFQUEVORCBXVEZfU09VUkNFUwogICAg
IGdlbmVyaWMvTWFpblRocmVhZEdlbmVyaWMuY3BwCiAgICAgZ2VuZXJpYy9Xb3JrUXVldWVHZW5l
cmljLmNwcAogCisgICAgZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKICAgICBnbGliL0dMaWJVdGls
aXRpZXMuY3BwCiAgICAgZ2xpYi9HUmVmUHRyLmNwcAogICAgIGdsaWIvUnVuTG9vcEdMaWIuY3Bw
CkBAIC01NSw1ICs1Niw2IEBAIGxpc3QoQVBQRU5EIFdURl9MSUJSQVJJRVMKICkKIAogbGlzdChB
UFBFTkQgV1RGX1NZU1RFTV9JTkNMVURFX0RJUkVDVE9SSUVTCisgICAgJHtHSU9fVU5JWF9JTkNM
VURFX0RJUlN9CiAgICAgJHtHTElCX0lOQ0xVREVfRElSU30KICkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1NYWMu
Y21ha2UKaW5kZXggZmMxZTU3YjljYjI2YjZmMmI2YWJhNjE0M2JkMThhZWJiYjE2YjUzNC4uMGUz
ZTE0MTYwOTEyYjc4NjE3NzM0MzUwYTkyNWQ5OWRiYTJjZGEwMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1N
YWMuY21ha2UKQEAgLTMyLDYgKzMyLDggQEAgbGlzdChBUFBFTkQgV1RGX1BVQkxJQ19IRUFERVJT
CiAgICAgc3BpL2Rhcndpbi9YUENTUEkuaAogICAgIHNwaS9kYXJ3aW4vZHlsZFNQSS5oCiAKKyAg
ICBzcGkvbWFjL01ldGFkYXRhU1BJLmgKKwogICAgIHRleHQvY2YvVGV4dEJyZWFrSXRlcmF0b3JD
Ri5oCiApCiAKQEAgLTQyLDYgKzQ0LDcgQEAgbGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKICAgICBT
Y2hlZHVsZVBhaXJNYWMubW0KIAogICAgIGNmL0NGVVJMRXh0cmFzLmNwcAorICAgIGNmL0ZpbGVT
eXN0ZW1DRi5jcHAKICAgICBjZi9MYW5ndWFnZUNGLmNwcAogICAgIGNmL1J1bkxvb3BDRi5jcHAK
ICAgICBjZi9VUkxDRi5jcHAKQEAgLTQ5LDYgKzUyLDcgQEAgbGlzdChBUFBFTkQgV1RGX1NPVVJD
RVMKICAgICBjb2NvYS9BdXRvZHJhaW5lZFBvb2wuY3BwCiAgICAgY29jb2EvQ1BVVGltZUNvY29h
LmNwcAogICAgIGNvY29hL0VudGl0bGVtZW50cy5tbQorICAgIGNvY29hL0ZpbGVTeXN0ZW1Db2Nv
YS5tbQogICAgIGNvY29hL01hY2hTZW5kUmlnaHQuY3BwCiAgICAgY29jb2EvTWFpblRocmVhZENv
Y29hLm1tCiAgICAgY29jb2EvTWVtb3J5Rm9vdHByaW50Q29jb2EuY3BwCkBAIC01OCw2ICs2Miw5
IEBAIGxpc3QoQVBQRU5EIFdURl9TT1VSQ0VTCiAgICAgY29jb2EvV29ya1F1ZXVlQ29jb2EuY3Bw
CiAKICAgICBtYWMvRGVwcmVjYXRlZFN5bWJvbHNVc2VkQnlTYWZhcmkubW0KKyAgICBtYWMvRmls
ZVN5c3RlbU1hYy5tbQorCisgICAgcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcAogCiAgICAgdGV4
dC9jZi9BdG9taWNTdHJpbmdJbXBsQ0YuY3BwCiAgICAgdGV4dC9jZi9TdHJpbmdDRi5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtUGxheVN0YXRpb24uY21ha2UgYi9Tb3Vy
Y2UvV1RGL3d0Zi9QbGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtlCmluZGV4IGI5N2ZlYzQwZWQzMGIx
NzdiMmY1MzViNjIxNjBlZjFlZWUyZGU1NmUuLjNlOWU3NWM5MjhhNmM5NDYwNWI0YmZjYWE3ZmJi
MmI5ZjQyZjgzOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtUGxheVN0YXRp
b24uY21ha2UKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1QbGF5U3RhdGlvbi5jbWFrZQpA
QCAtNSw2ICs1LDggQEAgbGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKICAgICBnZW5lcmljL1J1bkxv
b3BHZW5lcmljLmNwcAogICAgIGdlbmVyaWMvV29ya1F1ZXVlR2VuZXJpYy5jcHAKIAorICAgIHBv
c2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKwogICAgIHRleHQvdW5peC9UZXh0QnJlYWtJdGVyYXRv
ckludGVybmFsSUNVVW5peC5jcHAKIAogICAgIHVuaXgvQ1BVVGltZVVuaXguY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdQRS5jbWFrZSBiL1NvdXJjZS9XVEYvd3RmL1Bs
YXRmb3JtV1BFLmNtYWtlCmluZGV4IDQ3M2NmZDYwMjZiMDY1MmMyZjAyZDJiMjg1MzkyYjFkODAy
ZjBiYmMuLjA4NmFkZDNhYTkxOWZjNDkyMzlkNzFjMWNjODY4NWM1ZmM3MzliZDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV1BFLmNtYWtlCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L1BsYXRmb3JtV1BFLmNtYWtlCkBAIC0xNiw2ICsxNiw3IEBAIGxpc3QoQVBQRU5EIFdURl9TT1VS
Q0VTCiAgICAgZ2VuZXJpYy9NYWluVGhyZWFkR2VuZXJpYy5jcHAKICAgICBnZW5lcmljL1dvcmtR
dWV1ZUdlbmVyaWMuY3BwCiAKKyAgICBnbGliL0ZpbGVTeXN0ZW1HbGliLmNwcAogICAgIGdsaWIv
R0xpYlV0aWxpdGllcy5jcHAKICAgICBnbGliL0dSZWZQdHIuY3BwCiAgICAgZ2xpYi9SdW5Mb29w
R0xpYi5jcHAKQEAgLTQwLDUgKzQxLDYgQEAgbGlzdChBUFBFTkQgV1RGX0xJQlJBUklFUwogKQog
CiBsaXN0KEFQUEVORCBXVEZfU1lTVEVNX0lOQ0xVREVfRElSRUNUT1JJRVMKKyAgICAke0dJT19V
TklYX0lOQ0xVREVfRElSU30KICAgICAke0dMSUJfSU5DTFVERV9ESVJTfQogKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1XaW4uY21ha2UgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybVdpbi5jbWFrZQppbmRleCAyYjhiNWY4MjcwZWI1ZjI0Njc2MDcyZGQxMjQ1NzZkYTkzMDFm
MGVhLi5iNmMwYWM2ZjRkZTVlMDVmMjdkNGQ5YWMwZmZiZDVjYzQwOTdhNmUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Q
bGF0Zm9ybVdpbi5jbWFrZQpAQCAtMTIsMTQgKzEyLDIwIEBAIGxpc3QoQVBQRU5EIFdURl9TT1VS
Q0VTCiAKICAgICB3aW4vQ1BVVGltZVdpbi5jcHAKICAgICB3aW4vRGJnSGVscGVyV2luLmNwcAor
ICAgIHdpbi9GaWxlU3lzdGVtV2luLmNwcAogICAgIHdpbi9MYW5ndWFnZVdpbi5jcHAKICAgICB3
aW4vTWFpblRocmVhZFdpbi5jcHAKICAgICB3aW4vTWVtb3J5Rm9vdHByaW50V2luLmNwcAogICAg
IHdpbi9NZW1vcnlQcmVzc3VyZUhhbmRsZXJXaW4uY3BwCisgICAgd2luL1BhdGhXYWxrZXIuY3Bw
CiAgICAgd2luL1J1bkxvb3BXaW4uY3BwCiAgICAgd2luL1dvcmtRdWV1ZVdpbi5jcHAKICkKIAor
bGlzdChBUFBFTkQgV1RGX0xJQlJBUklFUworICAgIHNobHdhcGkKKykKKwogaWYgKFVTRV9DRikK
ICAgICBsaXN0KEFQUEVORCBXVEZfUFVCTElDX0hFQURFUlMKICAgICAgICAgY2YvQ0ZVUkxFeHRy
YXMuaApAQCAtMjksNiArMzUsNyBAQCBpZiAoVVNFX0NGKQogICAgICkKICAgICBsaXN0KEFQUEVO
RCBXVEZfU09VUkNFUwogICAgICAgICBjZi9DRlVSTEV4dHJhcy5jcHAKKyAgICAgICAgY2YvRmls
ZVN5c3RlbUNGLmNwcAogICAgICAgICBjZi9VUkxDRi5jcHAKIAogICAgICAgICB0ZXh0L2NmL0F0
b21pY1N0cmluZ0ltcGxDRi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NmL0ZpbGVT
eXN0ZW1DRi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9jZi9GaWxlU3lzdGVtQ0YuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjcxMmQ2NWZjYWQyOTZiMzk2M2Y2MGE0NDk0YjZkN2U5MmQ0YWM1MGMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jZi9GaWxlU3lzdGVtQ0YuY3BwCkBAIC0wLDAgKzEsNzQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2Yg
QXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQK
KyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CisKKyNpbmNs
dWRlIDxDb3JlRm91bmRhdGlvbi9DRlN0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CisKK25hbWVzcGFjZSBXVEYgeworCitDU3RyaW5nIEZpbGVTeXN0ZW06OmZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgUmV0YWluUHRy
PENGU3RyaW5nUmVmPiBjZlN0cmluZyA9IHBhdGguY3JlYXRlQ0ZTdHJpbmcoKTsKKworICAgIGlm
ICghY2ZTdHJpbmcpCisgICAgICAgIHJldHVybiBDU3RyaW5nKCk7CisKKyAgICBDRkluZGV4IHNp
emUgPSBDRlN0cmluZ0dldE1heGltdW1TaXplT2ZGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY2ZT
dHJpbmcuZ2V0KCkpOworCisgICAgVmVjdG9yPGNoYXI+IGJ1ZmZlcihzaXplKTsKKworICAgIGlm
ICghQ0ZTdHJpbmdHZXRGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY2ZTdHJpbmcuZ2V0KCksIGJ1
ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpKSB7CisgICAgICAgIExPR19FUlJPUigiRmFpbGVk
IHRvIGdldCBmaWxlc3lzdGVtIHJlcHJlc2VudGF0aW9uIHRvIGNyZWF0ZSBDU3RyaW5nIGZyb20g
Y2ZTdHJpbmciKTsKKyAgICAgICAgcmV0dXJuIENTdHJpbmcoKTsKKyAgICB9CisKKyAgICByZXR1
cm4gQ1N0cmluZyhidWZmZXIuZGF0YSgpLCBzdHJsZW4oYnVmZmVyLmRhdGEoKSkpOworfQorCitT
dHJpbmcgRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25z
dCBjaGFyKiBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24pCit7CisgICAgcmV0dXJuIGFkb3B0Q0Yo
Q0ZTdHJpbmdDcmVhdGVXaXRoRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbikpLmdldCgpOworfQorCitSZXRhaW5QdHI8
Q0ZVUkxSZWY+IEZpbGVTeXN0ZW06OnBhdGhBc1VSTChjb25zdCBTdHJpbmcmIHBhdGgpCit7Cisg
ICAgQ0ZVUkxQYXRoU3R5bGUgcGF0aFN0eWxlOworI2lmIFBMQVRGT1JNKFdJTikKKyAgICBwYXRo
U3R5bGUgPSBrQ0ZVUkxXaW5kb3dzUGF0aFN0eWxlOworI2Vsc2UKKyAgICBwYXRoU3R5bGUgPSBr
Q0ZVUkxQT1NJWFBhdGhTdHlsZTsKKyNlbmRpZgorICAgIHJldHVybiBhZG9wdENGKENGVVJMQ3Jl
YXRlV2l0aEZpbGVTeXN0ZW1QYXRoKDAsIHBhdGguY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgcGF0
aFN0eWxlLCBGQUxTRSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL2NvY29hL0ZpbGVTeXN0ZW1Db2NvYS5tbSBiL1NvdXJjZS9XVEYvd3RmL2Nv
Y29hL0ZpbGVTeXN0ZW1Db2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMzg1NzQ2OWNlMDQ2OTZiYWFhMzI2
Mzc0MzhkMTMxNjZiZjA0ZmY4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvY29j
b2EvRmlsZVN5c3RlbUNvY29hLm1tCkBAIC0wLDAgKzEsMTQzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA3LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikg
bm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisj
aW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgorCitAaW50ZXJmYWNlIFdURldlYkZpbGVNYW5hZ2Vy
RGVsZWdhdGUgOiBOU09iamVjdCA8TlNGaWxlTWFuYWdlckRlbGVnYXRlPgorQGVuZAorCitAaW1w
bGVtZW50YXRpb24gV1RGV2ViRmlsZU1hbmFnZXJEZWxlZ2F0ZQorCistIChCT09MKWZpbGVNYW5h
Z2VyOihOU0ZpbGVNYW5hZ2VyICopZmlsZU1hbmFnZXIgc2hvdWxkUHJvY2VlZEFmdGVyRXJyb3I6
KE5TRXJyb3IgKillcnJvciBtb3ZpbmdJdGVtQXRVUkw6KE5TVVJMICopc3JjVVJMIHRvVVJMOihO
U1VSTCAqKWRzdFVSTAoreworICAgIFVOVVNFRF9QQVJBTShmaWxlTWFuYWdlcik7CisgICAgVU5V
U0VEX1BBUkFNKHNyY1VSTCk7CisgICAgVU5VU0VEX1BBUkFNKGRzdFVSTCk7CisgICAgcmV0dXJu
IGVycm9yLmNvZGUgPT0gTlNGaWxlV3JpdGVGaWxlRXhpc3RzRXJyb3I7Cit9CisKK0BlbmQKKwor
bmFtZXNwYWNlIFdURiB7CisKK25hbWVzcGFjZSBGaWxlU3lzdGVtIHsKKworU3RyaW5nIGhvbWVE
aXJlY3RvcnlQYXRoKCkKK3sKKyAgICByZXR1cm4gTlNIb21lRGlyZWN0b3J5KCk7Cit9CisKK1N0
cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxl
SGFuZGxlJiBwbGF0Zm9ybUZpbGVIYW5kbGUpCit7CisgICAgcGxhdGZvcm1GaWxlSGFuZGxlID0g
aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKKworICAgIFZlY3RvcjxjaGFyPiB0ZW1wb3JhcnlG
aWxlUGF0aChQQVRIX01BWCk7CisgICAgaWYgKCFjb25mc3RyKF9DU19EQVJXSU5fVVNFUl9URU1Q
X0RJUiwgdGVtcG9yYXJ5RmlsZVBhdGguZGF0YSgpLCB0ZW1wb3JhcnlGaWxlUGF0aC5zaXplKCkp
KQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICAvLyBTaHJpbmsgdGhlIHZlY3Rvci4K
KyAgICB0ZW1wb3JhcnlGaWxlUGF0aC5zaHJpbmsoc3RybGVuKHRlbXBvcmFyeUZpbGVQYXRoLmRh
dGEoKSkpOworCisgICAgLy8gRklYTUU6IENoYW5nZSB0byBhIHJ1bnRpbWUgYXNzZXJ0aW9uIHRo
YXQgdGhlIHBhdGggZW5kcyB3aXRoIGEgc2xhc2ggb25jZSA8cmRhcjovL3Byb2JsZW0vMjM1Nzkw
Nzc+IGlzCisgICAgLy8gZml4ZWQgaW4gYWxsIGlPUyBTaW11bGF0b3IgdmVyc2lvbnMgdGhhdCB3
ZSB1c2UuCisgICAgaWYgKHRlbXBvcmFyeUZpbGVQYXRoLmxhc3QoKSAhPSAnLycpCisgICAgICAg
IHRlbXBvcmFyeUZpbGVQYXRoLmFwcGVuZCgnLycpOworCisgICAgLy8gQXBwZW5kIHRoZSBmaWxl
IG5hbWUuCisgICAgQ1N0cmluZyBwcmVmaXhVdGY4ID0gcHJlZml4LnV0ZjgoKTsKKyAgICB0ZW1w
b3JhcnlGaWxlUGF0aC5hcHBlbmQocHJlZml4VXRmOC5kYXRhKCksIHByZWZpeFV0ZjgubGVuZ3Ro
KCkpOworICAgIHRlbXBvcmFyeUZpbGVQYXRoLmFwcGVuZCgiWFhYWFhYIiwgNik7CisgICAgdGVt
cG9yYXJ5RmlsZVBhdGguYXBwZW5kKCdcMCcpOworCisgICAgcGxhdGZvcm1GaWxlSGFuZGxlID0g
bWtzdGVtcCh0ZW1wb3JhcnlGaWxlUGF0aC5kYXRhKCkpOworICAgIGlmIChwbGF0Zm9ybUZpbGVI
YW5kbGUgPT0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKKyAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOworCisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgodGVtcG9yYXJ5RmlsZVBhdGguZGF0
YSgpKTsKK30KKworYm9vbCBtb3ZlRmlsZShjb25zdCBTdHJpbmcmIG9sZFBhdGgsIGNvbnN0IFN0
cmluZyYgbmV3UGF0aCkKK3sKKyAgICAvLyBPdmVyd3JpdGUgZXhpc3RpbmcgZmlsZXMuCisgICAg
YXV0byBtYW5hZ2VyID0gYWRvcHROUyhbW05TRmlsZU1hbmFnZXIgYWxsb2NdIGluaXRdKTsKKyAg
ICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1dURldlYkZpbGVNYW5hZ2VyRGVsZWdhdGUgYWxs
b2NdIGluaXRdKTsKKyAgICBbbWFuYWdlciBzZXREZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisK
KyAgICBOU0Vycm9yICplcnJvciA9IG5pbDsKKyAgICBib29sIHN1Y2Nlc3MgPSBbbWFuYWdlciBt
b3ZlSXRlbUF0VVJMOltOU1VSTCBmaWxlVVJMV2l0aFBhdGg6b2xkUGF0aF0gdG9VUkw6W05TVVJM
IGZpbGVVUkxXaXRoUGF0aDpuZXdQYXRoXSBlcnJvcjomZXJyb3JdOworICAgIGlmICghc3VjY2Vz
cykKKyAgICAgICAgTlNMb2coQCJFcnJvciBpbiBtb3ZlRmlsZTogJUAiLCBlcnJvcik7CisgICAg
cmV0dXJuIHN1Y2Nlc3M7Cit9CisKK2Jvb2wgZ2V0Vm9sdW1lRnJlZVNwYWNlKGNvbnN0IFN0cmlu
ZyYgcGF0aCwgdWludDY0X3QmIGZyZWVTcGFjZSkKK3sKKyAgICBOU0RpY3Rpb25hcnkgKmZpbGVT
eXN0ZW1BdHRyaWJ1dGVzRGljdGlvbmFyeSA9IFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdl
cl0gYXR0cmlidXRlc09mRmlsZVN5c3RlbUZvclBhdGg6KE5TU3RyaW5nICopcGF0aCBlcnJvcjpO
VUxMXTsKKyAgICBpZiAoIWZpbGVTeXN0ZW1BdHRyaWJ1dGVzRGljdGlvbmFyeSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIGZyZWVTcGFjZSA9IFtbZmlsZVN5c3RlbUF0dHJpYnV0ZXNEaWN0
aW9uYXJ5IG9iamVjdEZvcktleTpOU0ZpbGVTeXN0ZW1GcmVlU2l6ZV0gdW5zaWduZWRMb25nTG9u
Z1ZhbHVlXTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworTlNTdHJpbmcgKmNyZWF0ZVRlbXBvcmFy
eURpcmVjdG9yeShOU1N0cmluZyAqZGlyZWN0b3J5UHJlZml4KQoreworICAgIE5TU3RyaW5nICp0
ZW1wRGlyZWN0b3J5ID0gTlNUZW1wb3JhcnlEaXJlY3RvcnkoKTsKKyAgICBpZiAoIXRlbXBEaXJl
Y3RvcnkgfHwgIVt0ZW1wRGlyZWN0b3J5IGxlbmd0aF0pCisgICAgICAgIHJldHVybiBuaWw7CisK
KyAgICBpZiAoIWRpcmVjdG9yeVByZWZpeCB8fCAhW2RpcmVjdG9yeVByZWZpeCBsZW5ndGhdKQor
ICAgICAgICByZXR1cm4gbmlsOworCisgICAgTlNTdHJpbmcgKnRlbXBEaXJlY3RvcnlDb21wb25l
bnQgPSBbZGlyZWN0b3J5UHJlZml4IHN0cmluZ0J5QXBwZW5kaW5nU3RyaW5nOkAiLVhYWFhYWFhY
Il07CisgICAgY29uc3QgY2hhciogdGVtcERpcmVjdG9yeUNTdHJpbmcgPSBbW3RlbXBEaXJlY3Rv
cnkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OnRlbXBEaXJlY3RvcnlDb21wb25lbnRd
IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbl07CisgICAgaWYgKCF0ZW1wRGlyZWN0b3J5Q1N0cmlu
ZykKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIGNvbnN0IHNpemVfdCBsZW5ndGggPSBzdHJs
ZW4odGVtcERpcmVjdG9yeUNTdHJpbmcpOworICAgIEFTU0VSVChsZW5ndGggPD0gTUFYUEFUSExF
Tik7CisgICAgaWYgKGxlbmd0aCA+IE1BWFBBVEhMRU4pCisgICAgICAgIHJldHVybiBuaWw7CisK
KyAgICBjb25zdCBzaXplX3QgbGVuZ3RoUGx1c051bGxUZXJtaW5hdG9yID0gbGVuZ3RoICsgMTsK
KyAgICBWZWN0b3I8Y2hhciwgTUFYUEFUSExFTiArIDE+IHBhdGgobGVuZ3RoUGx1c051bGxUZXJt
aW5hdG9yKTsKKyAgICBtZW1jcHkocGF0aC5kYXRhKCksIHRlbXBEaXJlY3RvcnlDU3RyaW5nLCBs
ZW5ndGhQbHVzTnVsbFRlcm1pbmF0b3IpOworCisgICAgaWYgKCFta2R0ZW1wKHBhdGguZGF0YSgp
KSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIHJldHVybiBbW05TRmlsZU1hbmFnZXIgZGVm
YXVsdE1hbmFnZXJdIHN0cmluZ1dpdGhGaWxlU3lzdGVtUmVwcmVzZW50YXRpb246cGF0aC5kYXRh
KCkgbGVuZ3RoOmxlbmd0aF07Cit9CisKK2Jvb2wgZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkoY29u
c3QgU3RyaW5nJiBwYXRoKQoreworICAgIHJldHVybiBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1h
bmFnZXJdIHJlbW92ZUl0ZW1BdFBhdGg6cGF0aCBlcnJvcjpuaWxdOworfQorCit9IC8vIG5hbWVz
cGFjZSBGaWxlU3lzdGVtCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwIGIvU291cmNlL1dURi93dGYvZ2xpYi9GaWxl
U3lzdGVtR2xpYi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmZmNmJkM2ZhNTQ4MmE1YTBmODQwYzk2Nzg0MmM0
NWI4YWUxMjJjZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5
c3RlbUdsaWIuY3BwCkBAIC0wLDAgKzEsNDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3
LCAyMDA5IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgg
Q29sbGFib3JhLCBMdGQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDEwIE1vdG9yb2xhIE1v
YmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisg
KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor
ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KKworI2luY2x1ZGUgPGdpby9nZmlsZWRlc2NyaXB0
b3JiYXNlZC5oPgorI2luY2x1ZGUgPGdpby9naW8uaD4KKyNpbmNsdWRlIDxnbGliLmg+CisjaW5j
bHVkZSA8Z2xpYi9nc3RkaW8uaD4KKyNpbmNsdWRlIDxzeXMvZmlsZS5oPgorI2luY2x1ZGUgPHd0
Zi9FbnVtVHJhaXRzLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVNZXRhZGF0YS5oPgorI2luY2x1ZGUg
PHd0Zi9VVUlELmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR0xpYlV0aWxpdGllcy5oPgorI2luY2x1
ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0J1aWxkZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNl
IFdURiB7CisKK25hbWVzcGFjZSBGaWxlU3lzdGVtIHsKKworLyogT24gbGludXggZmlsZSBuYW1l
cyBhcmUganVzdCByYXcgYnl0ZXMsIHNvIGFsc28gc3RyaW5ncyB0aGF0IGNhbm5vdCBiZSBlbmNv
ZGVkIGluIGFueSB3YXkKKyAqIGFyZSB2YWxpZCBmaWxlIG5hbWVzLiBUaGlzIG1lYW4gdGhhdCB3
ZSBjYW5ub3QganVzdCBzdG9yZSBhIGZpbGUgbmFtZSBhcy1pcyBpbiBhIFN0cmluZworICogYnV0
IHdlIGhhdmUgdG8gZXNjYXBlIGl0LgorICogT24gV2luZG93cyB0aGUgR0xpYiBmaWxlIG5hbWUg
ZW5jb2RpbmcgaXMgYWx3YXlzIFVURi04IHNvIHdlIGNhbiBvcHRpbWl6ZSB0aGlzIGNhc2UuICov
CitTdHJpbmcgc3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBjaGFyKiBm
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24pCit7CisgICAgaWYgKCFmaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24pCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworI2lmIE9TKFdJTkRPV1MpCisgICAg
cmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKTsKKyNlbHNl
CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZXNjYXBlZFN0cmluZyhnX3VyaV9lc2NhcGVfc3RyaW5n
KGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbiwgIi86IiwgRkFMU0UpKTsKKyAgICByZXR1cm4gZXNj
YXBlZFN0cmluZy5nZXQoKTsKKyNlbmRpZgorfQorCitzdGF0aWMgR1VuaXF1ZVB0cjxjaGFyPiB1
bmVzY2FwZWRGaWxlbmFtZShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgaWYgKHBhdGguaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyNpZiBPUyhXSU5ET1dTKQorICAgIHJl
dHVybiBHVW5pcXVlUHRyPGNoYXI+KGdfc3RyZHVwKHBhdGgudXRmOCgpLmRhdGEoKSkpOworI2Vs
c2UKKyAgICByZXR1cm4gR1VuaXF1ZVB0cjxjaGFyPihnX3VyaV91bmVzY2FwZV9zdHJpbmcocGF0
aC51dGY4KCkuZGF0YSgpLCBudWxscHRyKSk7CisjZW5kaWYKK30KKworQ1N0cmluZyBmaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBwYXRoKQoreworI2lmIE9TKFdJTkRPV1Mp
CisgICAgcmV0dXJuIHBhdGgudXRmOCgpOworI2Vsc2UKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBm
aWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGgpOworICAgIHJldHVybiBmaWxlbmFtZS5n
ZXQoKTsKKyNlbmRpZgorfQorCisvLyBDb252ZXJ0cyBhIHN0cmluZyB0byBzb21ldGhpbmcgc3Vp
dGFibGUgdG8gYmUgZGlzcGxheWVkIHRvIHRoZSB1c2VyLgorU3RyaW5nIGZpbGVuYW1lRm9yRGlz
cGxheShjb25zdCBTdHJpbmcmIHN0cmluZykKK3sKKyNpZiBPUyhXSU5ET1dTKQorICAgIHJldHVy
biBzdHJpbmc7CisjZWxzZQorICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2Nh
cGVkRmlsZW5hbWUoc3RyaW5nKTsKKyAgICBpZiAoIWZpbGVuYW1lKQorICAgICAgICByZXR1cm4g
c3RyaW5nOworCisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZGlzcGxheShnX2ZpbGVuYW1lX3RvX3V0
ZjgoZmlsZW5hbWUuZ2V0KCksIC0xLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKSk7CisgICAg
aWYgKCFkaXNwbGF5KQorICAgICAgICByZXR1cm4gc3RyaW5nOworCisgICAgcmV0dXJuIFN0cmlu
Zzo6ZnJvbVVURjgoZGlzcGxheS5nZXQoKSk7CisjZW5kaWYKK30KKworYm9vbCBmaWxlRXhpc3Rz
KGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZSA9
IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGgpOworICAgIHJldHVybiBmaWxlbmFtZSA/IGdfZmlsZV90
ZXN0KGZpbGVuYW1lLmdldCgpLCBHX0ZJTEVfVEVTVF9FWElTVFMpIDogZmFsc2U7Cit9CisKK2Jv
b2wgZGVsZXRlRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgR1VuaXF1ZVB0cjxnY2hh
cj4gZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShwYXRoKTsKKyAgICByZXR1cm4gZmlsZW5h
bWUgPyBnX3JlbW92ZShmaWxlbmFtZS5nZXQoKSkgIT0gLTEgOiBmYWxzZTsKK30KKworYm9vbCBk
ZWxldGVFbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgR1VuaXF1ZVB0
cjxnY2hhcj4gZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShwYXRoKTsKKyAgICByZXR1cm4g
ZmlsZW5hbWUgPyBnX3JtZGlyKGZpbGVuYW1lLmdldCgpKSAhPSAtMSA6IGZhbHNlOworfQorCitz
dGF0aWMgYm9vbCBnZXRGaWxlU3RhdChjb25zdCBTdHJpbmcmIHBhdGgsIEdTdGF0QnVmKiBzdGF0
QnVmZmVyKQoreworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2NhcGVkRmls
ZW5hbWUocGF0aCk7CisgICAgaWYgKCFmaWxlbmFtZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgcmV0dXJuIGdfc3RhdChmaWxlbmFtZS5nZXQoKSwgc3RhdEJ1ZmZlcikgIT0gLTE7Cit9
CisKK3N0YXRpYyBib29sIGdldEZpbGVMU3RhdChjb25zdCBTdHJpbmcmIHBhdGgsIEdTdGF0QnVm
KiBzdGF0QnVmZmVyKQoreworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2Nh
cGVkRmlsZW5hbWUocGF0aCk7CisgICAgaWYgKCFmaWxlbmFtZSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgcmV0dXJuIGdfbHN0YXQoZmlsZW5hbWUuZ2V0KCksIHN0YXRCdWZmZXIpICE9
IC0xOworfQorCitib29sIGdldEZpbGVTaXplKGNvbnN0IFN0cmluZyYgcGF0aCwgbG9uZyBsb25n
JiByZXN1bHRTaXplKQoreworICAgIEdTdGF0QnVmIHN0YXRSZXN1bHQ7CisgICAgaWYgKCFnZXRG
aWxlU3RhdChwYXRoLCAmc3RhdFJlc3VsdCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IHJlc3VsdFNpemUgPSBzdGF0UmVzdWx0LnN0X3NpemU7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K2Jvb2wgZ2V0RmlsZVNpemUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgbG9uZyBsb25nJiBy
ZXN1bHRTaXplKQoreworICAgIGF1dG8gaW5mbyA9IGdfZmlsZV9pb19zdHJlYW1fcXVlcnlfaW5m
byhoYW5kbGUsIEdfRklMRV9BVFRSSUJVVEVfU1RBTkRBUkRfU0laRSwgbnVsbHB0ciwgbnVsbHB0
cik7CisgICAgaWYgKCFpbmZvKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXN1bHRT
aXplID0gZ19maWxlX2luZm9fZ2V0X3NpemUoaW5mbyk7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K09wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlQ3JlYXRpb25UaW1lKGNvbnN0IFN0cmluZyYpCit7
CisgICAgLy8gRklYTUU6IElzIHRoZXJlIGEgd2F5IHRvIHJldHJpZXZlIGZpbGUgY3JlYXRpb24g
dGltZSB3aXRoIEd0ayBvbiBwbGF0Zm9ybXMgdGhhdCBzdXBwb3J0IGl0PworICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7Cit9CisKK09wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlTW9kaWZpY2F0aW9u
VGltZShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgR1N0YXRCdWYgc3RhdFJlc3VsdDsKKyAg
ICBpZiAoIWdldEZpbGVTdGF0KHBhdGgsICZzdGF0UmVzdWx0KSkKKyAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKworICAgIHJldHVybiBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoc3RhdFJl
c3VsdC5zdF9tdGltZSk7Cit9CisKK3N0YXRpYyBGaWxlTWV0YWRhdGE6OlR5cGUgdG9GaWxlTWV0
YXRhVHlwZShHU3RhdEJ1ZiBzdGF0UmVzdWx0KQoreworICAgIGlmIChTX0lTRElSKHN0YXRSZXN1
bHQuc3RfbW9kZSkpCisgICAgICAgIHJldHVybiBGaWxlTWV0YWRhdGE6OlR5cGU6OkRpcmVjdG9y
eTsKKyAgICBpZiAoU19JU0xOSyhzdGF0UmVzdWx0LnN0X21vZGUpKQorICAgICAgICByZXR1cm4g
RmlsZU1ldGFkYXRhOjpUeXBlOjpTeW1ib2xpY0xpbms7CisgICAgcmV0dXJuIEZpbGVNZXRhZGF0
YTo6VHlwZTo6RmlsZTsKK30KKworc3RhdGljIE9wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1l
dGFkYXRhVXNpbmdGdW5jdGlvbihjb25zdCBTdHJpbmcmIHBhdGgsIGJvb2wgKCpzdGF0RnVuYyko
Y29uc3QgU3RyaW5nJiwgR1N0YXRCdWYqKSkKK3sKKyAgICBHU3RhdEJ1ZiBzdGF0UmVzdWx0Owor
ICAgIGlmICghc3RhdEZ1bmMocGF0aCwgJnN0YXRSZXN1bHQpKQorICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworCisgICAgU3RyaW5nIGZpbGVuYW1lID0gcGF0aEdldEZpbGVOYW1lKHBhdGgp
OworICAgIGJvb2wgaXNIaWRkZW4gPSAhZmlsZW5hbWUuaXNFbXB0eSgpICYmIGZpbGVuYW1lWzBd
ID09ICcuJzsKKworICAgIHJldHVybiBGaWxlTWV0YWRhdGEgeworICAgICAgICBXYWxsVGltZTo6
ZnJvbVJhd1NlY29uZHMoc3RhdFJlc3VsdC5zdF9tdGltZSksCisgICAgICAgIHN0YXRSZXN1bHQu
c3Rfc2l6ZSwKKyAgICAgICAgaXNIaWRkZW4sCisgICAgICAgIHRvRmlsZU1ldGF0YVR5cGUoc3Rh
dFJlc3VsdCkKKyAgICB9OworfQorCitPcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0
YShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgcmV0dXJuIGZpbGVNZXRhZGF0YVVzaW5nRnVu
Y3Rpb24ocGF0aCwgJmdldEZpbGVMU3RhdCk7Cit9CisKK09wdGlvbmFsPEZpbGVNZXRhZGF0YT4g
ZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3MoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAg
IHJldHVybiBmaWxlTWV0YWRhdGFVc2luZ0Z1bmN0aW9uKHBhdGgsICZnZXRGaWxlU3RhdCk7Cit9
CisKK1N0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY29uc3QgU3RyaW5nJiBwYXRoLCBj
b25zdCBTdHJpbmcmIGNvbXBvbmVudCkKK3sKKyAgICBpZiAocGF0aC5lbmRzV2l0aChHX0RJUl9T
RVBBUkFUT1JfUykpCisgICAgICAgIHJldHVybiBwYXRoICsgY29tcG9uZW50OworICAgIHJldHVy
biBwYXRoICsgR19ESVJfU0VQQVJBVE9SX1MgKyBjb21wb25lbnQ7Cit9CisKK1N0cmluZyBwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnRzKFN0cmluZ1ZpZXcgcGF0aCwgY29uc3QgVmVjdG9yPFN0cmlu
Z1ZpZXc+JiBjb21wb25lbnRzKQoreworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICBi
dWlsZGVyLmFwcGVuZChwYXRoKTsKKyAgICBmb3IgKGF1dG8mIGNvbXBvbmVudCA6IGNvbXBvbmVu
dHMpIHsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoR19ESVJfU0VQQVJBVE9SX1MpOworICAgICAg
ICBidWlsZGVyLmFwcGVuZChjb21wb25lbnQpOworICAgIH0KKyAgICByZXR1cm4gYnVpbGRlci50
b1N0cmluZygpOworfQorCitib29sIG1ha2VBbGxEaXJlY3Rvcmllcyhjb25zdCBTdHJpbmcmIHBh
dGgpCit7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFt
ZShwYXRoKTsKKyAgICByZXR1cm4gZmlsZW5hbWUgPyBnX21rZGlyX3dpdGhfcGFyZW50cyhmaWxl
bmFtZS5nZXQoKSwgU19JUldYVSkgIT0gLTEgOiBmYWxzZTsKK30KKworU3RyaW5nIGhvbWVEaXJl
Y3RvcnlQYXRoKCkKK3sKKyAgICByZXR1cm4gc3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihnX2dldF9ob21lX2RpcigpKTsKK30KKworYm9vbCBjcmVhdGVTeW1ib2xpY0xpbmsoY29u
c3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGljTGlua1BhdGgpCit7
CisgICAgQ1N0cmluZyB0YXJnZXRQYXRoRlNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
dGFyZ2V0UGF0aCk7CisgICAgaWYgKCF0YXJnZXRQYXRoRlNSZXAuZGF0YSgpIHx8IHRhcmdldFBh
dGhGU1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
Q1N0cmluZyBzeW1ib2xpY0xpbmtQYXRoRlNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
c3ltYm9saWNMaW5rUGF0aCk7CisgICAgaWYgKCFzeW1ib2xpY0xpbmtQYXRoRlNSZXAuZGF0YSgp
IHx8IHN5bWJvbGljTGlua1BhdGhGU1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgcmV0dXJuICFzeW1saW5rKHRhcmdldFBhdGhGU1JlcC5kYXRhKCks
IHN5bWJvbGljTGlua1BhdGhGU1JlcC5kYXRhKCkpOworfQorCitTdHJpbmcgcGF0aEdldEZpbGVO
YW1lKGNvbnN0IFN0cmluZyYgcGF0aE5hbWUpCit7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gdG1w
RmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShwYXRoTmFtZSk7CisgICAgaWYgKCF0bXBGaWxl
bmFtZSkKKyAgICAgICAgcmV0dXJuIHBhdGhOYW1lOworCisgICAgR1VuaXF1ZVB0cjxnY2hhcj4g
YmFzZU5hbWUoZ19wYXRoX2dldF9iYXNlbmFtZSh0bXBGaWxlbmFtZS5nZXQoKSkpOworICAgIHJl
dHVybiBTdHJpbmc6OmZyb21VVEY4KGJhc2VOYW1lLmdldCgpKTsKK30KKworYm9vbCBnZXRWb2x1
bWVGcmVlU3BhY2UoY29uc3QgU3RyaW5nJiBwYXRoLCB1aW50NjRfdCYgZnJlZVNwYWNlKQorewor
ICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUocGF0aCk7
CisgICAgaWYgKCFmaWxlbmFtZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgR1JlZlB0
cjxHRmlsZT4gZmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKGZpbGVuYW1lLmdl
dCgpKSk7CisgICAgR1JlZlB0cjxHRmlsZUluZm8+IGZpbGVJbmZvID0gYWRvcHRHUmVmKGdfZmls
ZV9xdWVyeV9maWxlc3lzdGVtX2luZm8oZmlsZS5nZXQoKSwgR19GSUxFX0FUVFJJQlVURV9GSUxF
U1lTVEVNX0ZSRUUsIDAsIDApKTsKKyAgICBpZiAoIWZpbGVJbmZvKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBmcmVlU3BhY2UgPSBnX2ZpbGVfaW5mb19nZXRfYXR0cmlidXRlX3VpbnQ2
NChmaWxlSW5mby5nZXQoKSwgR19GSUxFX0FUVFJJQlVURV9GSUxFU1lTVEVNX0ZSRUUpOworICAg
IHJldHVybiAhIWZyZWVTcGFjZTsKK30KKworU3RyaW5nIGRpcmVjdG9yeU5hbWUoY29uc3QgU3Ry
aW5nJiBwYXRoKQoreworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2NhcGVk
RmlsZW5hbWUocGF0aCk7CisgICAgaWYgKCFmaWxlbmFtZSkKKyAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOworCisgICAgR1VuaXF1ZVB0cjxjaGFyPiBkaXJuYW1lKGdfcGF0aF9nZXRfZGlybmFtZShm
aWxlbmFtZS5nZXQoKSkpOworICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGRpcm5hbWUuZ2V0
KCkpOworfQorCitWZWN0b3I8U3RyaW5nPiBsaXN0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0
aCwgY29uc3QgU3RyaW5nJiBmaWx0ZXIpCit7CisgICAgVmVjdG9yPFN0cmluZz4gZW50cmllczsK
KworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUocGF0
aCk7CisgICAgaWYgKCFmaWxlbmFtZSkKKyAgICAgICAgcmV0dXJuIGVudHJpZXM7CisKKyAgICBH
VW5pcXVlUHRyPEdEaXI+IGRpcihnX2Rpcl9vcGVuKGZpbGVuYW1lLmdldCgpLCAwLCBudWxscHRy
KSk7CisgICAgaWYgKCFkaXIpCisgICAgICAgIHJldHVybiBlbnRyaWVzOworCisgICAgR1VuaXF1
ZVB0cjxHUGF0dGVyblNwZWM+IHBzcGVjKGdfcGF0dGVybl9zcGVjX25ldygoZmlsdGVyLnV0Zjgo
KSkuZGF0YSgpKSk7CisgICAgd2hpbGUgKGNvbnN0IGNoYXIqIG5hbWUgPSBnX2Rpcl9yZWFkX25h
bWUoZGlyLmdldCgpKSkgeworICAgICAgICBpZiAoIWdfcGF0dGVybl9tYXRjaF9zdHJpbmcocHNw
ZWMuZ2V0KCksIG5hbWUpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgR1VuaXF1
ZVB0cjxnY2hhcj4gZW50cnkoZ19idWlsZF9maWxlbmFtZShmaWxlbmFtZS5nZXQoKSwgbmFtZSwg
bnVsbHB0cikpOworICAgICAgICBlbnRyaWVzLmFwcGVuZChzdHJpbmdGcm9tRmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKGVudHJ5LmdldCgpKSk7CisgICAgfQorCisgICAgcmV0dXJuIGVudHJpZXM7
Cit9CisKK1N0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxh
dGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpCit7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5h
bWUoZ19zdHJkdXBfcHJpbnRmKCIlcyVzIiwgcHJlZml4LnV0ZjgoKS5kYXRhKCksIGNyZWF0ZUNh
bm9uaWNhbFVVSURTdHJpbmcoKS51dGY4KCkuZGF0YSgpKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hh
cj4gdGVtcFBhdGgoZ19idWlsZF9maWxlbmFtZShnX2dldF90bXBfZGlyKCksIGZpbGVuYW1lLmdl
dCgpLCBOVUxMKSk7CisgICAgR1JlZlB0cjxHRmlsZT4gZmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVf
bmV3X2Zvcl9wYXRoKHRlbXBQYXRoLmdldCgpKSk7CisKKyAgICBoYW5kbGUgPSBnX2ZpbGVfY3Jl
YXRlX3JlYWR3cml0ZShmaWxlLmdldCgpLCBHX0ZJTEVfQ1JFQVRFX05PTkUsIDAsIDApOworICAg
IGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUpKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7Cisg
ICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgodGVtcFBhdGguZ2V0KCkpOworfQorCitQbGF0Zm9y
bUZpbGVIYW5kbGUgb3BlbkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUgbW9k
ZSkKK3sKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1l
KHBhdGgpOworICAgIGlmICghZmlsZW5hbWUpCisgICAgICAgIHJldHVybiBpbnZhbGlkUGxhdGZv
cm1GaWxlSGFuZGxlOworCisgICAgR1JlZlB0cjxHRmlsZT4gZmlsZSA9IGFkb3B0R1JlZihnX2Zp
bGVfbmV3X2Zvcl9wYXRoKGZpbGVuYW1lLmdldCgpKSk7CisgICAgR0ZpbGVJT1N0cmVhbSogaW9T
dHJlYW0gPSAwOworICAgIGlmIChtb2RlID09IEZpbGVPcGVuTW9kZTo6UmVhZCkKKyAgICAgICAg
aW9TdHJlYW0gPSBnX2ZpbGVfb3Blbl9yZWFkd3JpdGUoZmlsZS5nZXQoKSwgMCwgMCk7CisgICAg
ZWxzZSBpZiAobW9kZSA9PSBGaWxlT3Blbk1vZGU6OldyaXRlKSB7CisgICAgICAgIGlmIChnX2Zp
bGVfdGVzdChmaWxlbmFtZS5nZXQoKSwgc3RhdGljX2Nhc3Q8R0ZpbGVUZXN0PihHX0ZJTEVfVEVT
VF9FWElTVFMgfCBHX0ZJTEVfVEVTVF9JU19SRUdVTEFSKSkpCisgICAgICAgICAgICBpb1N0cmVh
bSA9IGdfZmlsZV9vcGVuX3JlYWR3cml0ZShmaWxlLmdldCgpLCAwLCAwKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgaW9TdHJlYW0gPSBnX2ZpbGVfY3JlYXRlX3JlYWR3cml0ZShmaWxlLmdl
dCgpLCBHX0ZJTEVfQ1JFQVRFX05PTkUsIDAsIDApOworICAgIH0KKworICAgIHJldHVybiBpb1N0
cmVhbTsKK30KKwordm9pZCBjbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpCit7
CisgICAgaWYgKCFpc0hhbmRsZVZhbGlkKGhhbmRsZSkpCisgICAgICAgIHJldHVybjsKKworICAg
IGdfaW9fc3RyZWFtX2Nsb3NlKEdfSU9fU1RSRUFNKGhhbmRsZSksIDAsIDApOworICAgIGdfb2Jq
ZWN0X3VucmVmKGhhbmRsZSk7CisgICAgaGFuZGxlID0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRs
ZTsKK30KKworbG9uZyBsb25nIHNlZWtGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGxv
bmcgbG9uZyBvZmZzZXQsIEZpbGVTZWVrT3JpZ2luIG9yaWdpbikKK3sKKyAgICBHU2Vla1R5cGUg
c2Vla1R5cGUgPSBHX1NFRUtfU0VUOworICAgIHN3aXRjaCAob3JpZ2luKSB7CisgICAgY2FzZSBG
aWxlU2Vla09yaWdpbjo6QmVnaW5uaW5nOgorICAgICAgICBzZWVrVHlwZSA9IEdfU0VFS19TRVQ7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRmlsZVNlZWtPcmlnaW46OkN1cnJlbnQ6CisgICAg
ICAgIHNlZWtUeXBlID0gR19TRUVLX0NVUjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGaWxl
U2Vla09yaWdpbjo6RW5kOgorICAgICAgICBzZWVrVHlwZSA9IEdfU0VFS19FTkQ7CisgICAgICAg
IGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IH0KKworICAgIGlmICghZ19zZWVrYWJsZV9zZWVrKEdfU0VFS0FCTEUoZ19pb19zdHJlYW1fZ2V0
X2lucHV0X3N0cmVhbShHX0lPX1NUUkVBTShoYW5kbGUpKSksCisgICAgICAgIG9mZnNldCwgc2Vl
a1R5cGUsIDAsIDApKQorICAgIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICByZXR1
cm4gZ19zZWVrYWJsZV90ZWxsKEdfU0VFS0FCTEUoZ19pb19zdHJlYW1fZ2V0X2lucHV0X3N0cmVh
bShHX0lPX1NUUkVBTShoYW5kbGUpKSkpOworfQorCitpbnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1G
aWxlSGFuZGxlIGhhbmRsZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKK3sKKyAgICBn
c2l6ZSBieXRlc1dyaXR0ZW47CisgICAgZ19vdXRwdXRfc3RyZWFtX3dyaXRlX2FsbChnX2lvX3N0
cmVhbV9nZXRfb3V0cHV0X3N0cmVhbShHX0lPX1NUUkVBTShoYW5kbGUpKSwKKyAgICAgICAgZGF0
YSwgbGVuZ3RoLCAmYnl0ZXNXcml0dGVuLCAwLCAwKTsKKyAgICByZXR1cm4gYnl0ZXNXcml0dGVu
OworfQorCitpbnQgcmVhZEZyb21GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNoYXIq
IGRhdGEsIGludCBsZW5ndGgpCit7CisgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwor
ICAgIGRvIHsKKyAgICAgICAgZ3NzaXplIGJ5dGVzUmVhZCA9IGdfaW5wdXRfc3RyZWFtX3JlYWQo
Z19pb19zdHJlYW1fZ2V0X2lucHV0X3N0cmVhbShHX0lPX1NUUkVBTShoYW5kbGUpKSwKKyAgICAg
ICAgICAgIGRhdGEsIGxlbmd0aCwgMCwgJmVycm9yLm91dFB0cigpKTsKKyAgICAgICAgaWYgKGJ5
dGVzUmVhZCA+PSAwKQorICAgICAgICAgICAgcmV0dXJuIGJ5dGVzUmVhZDsKKyAgICB9IHdoaWxl
IChlcnJvciAmJiBlcnJvci0+Y29kZSA9PSBHX0ZJTEVfRVJST1JfSU5UUik7CisgICAgcmV0dXJu
IC0xOworfQorCitib29sIG1vdmVGaWxlKGNvbnN0IFN0cmluZyYgb2xkUGF0aCwgY29uc3QgU3Ry
aW5nJiBuZXdQYXRoKQoreworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IG9sZEZpbGVuYW1lID0gdW5l
c2NhcGVkRmlsZW5hbWUob2xkUGF0aCk7CisgICAgaWYgKCFvbGRGaWxlbmFtZSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gbmV3RmlsZW5hbWUgPSB1bmVz
Y2FwZWRGaWxlbmFtZShuZXdQYXRoKTsKKyAgICBpZiAoIW5ld0ZpbGVuYW1lKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBHUmVmUHRyPEdGaWxlPiBvbGRGaWxlID0gYWRvcHRHUmVmKGdf
ZmlsZV9uZXdfZm9yX3BhdGgob2xkRmlsZW5hbWUuZ2V0KCkpKTsKKyAgICBHUmVmUHRyPEdGaWxl
PiBuZXdGaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgobmV3RmlsZW5hbWUuZ2V0
KCkpKTsKKworICAgIHJldHVybiBnX2ZpbGVfbW92ZShvbGRGaWxlLmdldCgpLCBuZXdGaWxlLmdl
dCgpLCBHX0ZJTEVfQ09QWV9PVkVSV1JJVEUsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51
bGxwdHIpOworfQorCitib29sIGhhcmRMaW5rT3JDb3B5RmlsZShjb25zdCBTdHJpbmcmIHNvdXJj
ZSwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbikKK3sKKyNpZiBPUyhXSU5ET1dTKQorICAgIHJl
dHVybiAhITo6Q29weUZpbGUoc291cmNlLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCku
ZGF0YSgpLCBkZXN0aW5hdGlvbi5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEo
KSwgVFJVRSk7CisjZWxzZQorICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHNvdXJjZUZpbGVuYW1lID0g
dW5lc2NhcGVkRmlsZW5hbWUoc291cmNlKTsKKyAgICBpZiAoIXNvdXJjZUZpbGVuYW1lKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBkZXN0aW5hdGlvbkZp
bGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUoZGVzdGluYXRpb24pOworICAgIGlmICghZGVzdGlu
YXRpb25GaWxlbmFtZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFsaW5rKHNv
dXJjZUZpbGVuYW1lLmdldCgpLCBkZXN0aW5hdGlvbkZpbGVuYW1lLmdldCgpKSkKKyAgICAgICAg
cmV0dXJuIHRydWU7CisKKyAgICAvLyBIYXJkIGxpbmsgZmFpbGVkLiBQZXJmb3JtIGEgY29weSBp
bnN0ZWFkLgorICAgIEdSZWZQdHI8R0ZpbGU+IHNvdXJjZUZpbGUgPSBhZG9wdEdSZWYoZ19maWxl
X25ld19mb3JfcGF0aChzb3VyY2VGaWxlbmFtZS5nZXQoKSkpOworICAgIEdSZWZQdHI8R0ZpbGU+
IGRlc3RpbmF0aW9uRmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKGRlc3RpbmF0
aW9uRmlsZW5hbWUuZ2V0KCkpKTsKKyAgICByZXR1cm4gZ19maWxlX2NvcHkoc291cmNlRmlsZS5n
ZXQoKSwgZGVzdGluYXRpb25GaWxlLmdldCgpLCBHX0ZJTEVfQ09QWV9OT05FLCBudWxscHRyLCBu
dWxscHRyLCBudWxscHRyLCBudWxscHRyKTsKKyNlbmRpZgorfQorCitPcHRpb25hbDxpbnQzMl90
PiBnZXRGaWxlRGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQoreworICAgIEdVbmlxdWVQ
dHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUoZnNGaWxlLmRhdGEoKSk7Cisg
ICAgaWYgKCFmaWxlbmFtZSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIEdS
ZWZQdHI8R0ZpbGU+IGZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0aChmaWxlbmFt
ZS5nZXQoKSkpOworICAgIEdSZWZQdHI8R0ZpbGVJbmZvPiBmaWxlSW5mbyA9IGFkb3B0R1JlZihn
X2ZpbGVfcXVlcnlfZmlsZXN5c3RlbV9pbmZvKGZpbGUuZ2V0KCksIEdfRklMRV9BVFRSSUJVVEVf
VU5JWF9ERVZJQ0UsIG51bGxwdHIsIG51bGxwdHIpKTsKKyAgICBpZiAoIWZpbGVJbmZvKQorICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIGdfZmlsZV9pbmZvX2dldF9h
dHRyaWJ1dGVfdWludDMyKGZpbGVJbmZvLmdldCgpLCBHX0ZJTEVfQVRUUklCVVRFX1VOSVhfREVW
SUNFKTsKK30KKworI2lmIFVTRShGSUxFX0xPQ0spCitib29sIGxvY2tGaWxlKFBsYXRmb3JtRmls
ZUhhbmRsZSBoYW5kbGUsIE9wdGlvblNldDxGaWxlTG9ja01vZGU+IGxvY2tNb2RlKQoreworICAg
IENPTVBJTEVfQVNTRVJUKExPQ0tfU0ggPT0gV1RGOjplbnVtVG9VbmRlcmx5aW5nVHlwZShGaWxl
TG9ja01vZGU6OlNoYXJlZCksIExvY2tTaGFyZWRFbmNvZGluZ0lzQXNFeHBlY3RlZCk7CisgICAg
Q09NUElMRV9BU1NFUlQoTE9DS19FWCA9PSBXVEY6OmVudW1Ub1VuZGVybHlpbmdUeXBlKEZpbGVM
b2NrTW9kZTo6RXhjbHVzaXZlKSwgTG9ja0V4Y2x1c2l2ZUVuY29kaW5nSXNBc0V4cGVjdGVkKTsK
KyAgICBDT01QSUxFX0FTU0VSVChMT0NLX05CID09IFdURjo6ZW51bVRvVW5kZXJseWluZ1R5cGUo
RmlsZUxvY2tNb2RlOjpOb25ibG9ja2luZyksIExvY2tOb25ibG9ja2luZ0VuY29kaW5nSXNBc0V4
cGVjdGVkKTsKKyAgICBhdXRvKiBpbnB1dFN0cmVhbSA9IGdfaW9fc3RyZWFtX2dldF9pbnB1dF9z
dHJlYW0oR19JT19TVFJFQU0oaGFuZGxlKSk7CisgICAgaW50IHJlc3VsdCA9IGZsb2NrKGdfZmls
ZV9kZXNjcmlwdG9yX2Jhc2VkX2dldF9mZChHX0ZJTEVfREVTQ1JJUFRPUl9CQVNFRChpbnB1dFN0
cmVhbSkpLCBsb2NrTW9kZS50b1JhdygpKTsKKyAgICByZXR1cm4gcmVzdWx0ICE9IC0xOworfQor
Citib29sIHVubG9ja0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSkKK3sKKyAgICBhdXRv
KiBpbnB1dFN0cmVhbSA9IGdfaW9fc3RyZWFtX2dldF9pbnB1dF9zdHJlYW0oR19JT19TVFJFQU0o
aGFuZGxlKSk7CisgICAgaW50IHJlc3VsdCA9IGZsb2NrKGdfZmlsZV9kZXNjcmlwdG9yX2Jhc2Vk
X2dldF9mZChHX0ZJTEVfREVTQ1JJUFRPUl9CQVNFRChpbnB1dFN0cmVhbSkpLCBMT0NLX1VOKTsK
KyAgICByZXR1cm4gcmVzdWx0ICE9IC0xOworfQorI2VuZGlmIC8vIFVTRShGSUxFX0xPQ0spCisK
K30gLy8gbmFtZXNwYWNlIEZpbGVTeXN0ZW0KK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvbWFjL0ZpbGVTeXN0ZW1NYWMubW0gYi9Tb3VyY2UvV1RGL3d0Zi9t
YWMvRmlsZVN5c3RlbU1hYy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MjY5MmExNmZiYTViMTUyNzhjNzcyZjc1
NmU1NTNhMTEwNzU1ZjJiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvbWFjL0Zp
bGVTeXN0ZW1NYWMubW0KQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
Ny0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9y
dCAiY29uZmlnLmgiCisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgorCisjaWYgUExBVEZPUk0o
TUFDKQorCisjaW1wb3J0IDx3dGYvY29jb2EvTlNVUkxFeHRyYXMuaD4KKyNpbXBvcnQgPHd0Zi9z
cGkvbWFjL01ldGFkYXRhU1BJLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwor
bmFtZXNwYWNlIFdURiB7CisKK2Jvb2wgRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3Rvcnko
Y29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIGF1dG8gZmlsZU1hbmFnZXIgPSBhZG9wdE5TKFtb
TlNGaWxlTWFuYWdlciBhbGxvY10gaW5pdF0pOworCisgICAgaWYgKE5TQXJyYXkgKmRpcmVjdG9y
eUNvbnRlbnRzID0gW2ZpbGVNYW5hZ2VyIGNvbnRlbnRzT2ZEaXJlY3RvcnlBdFBhdGg6cGF0aCBl
cnJvcjpudWxscHRyXSkgeworICAgICAgICAvLyBFeHBsaWNpdGx5IGxvb2sgZm9yIGFuZCBkZWxl
dGUgLkRTX1N0b3JlIGZpbGVzLgorICAgICAgICBpZiAoZGlyZWN0b3J5Q29udGVudHMuY291bnQg
PT0gMSAmJiBbZGlyZWN0b3J5Q29udGVudHMuZmlyc3RPYmplY3QgaXNFcXVhbFRvU3RyaW5nOkAi
LkRTX1N0b3JlIl0pCisgICAgICAgICAgICBbZmlsZU1hbmFnZXIgcmVtb3ZlSXRlbUF0UGF0aDpb
cGF0aCBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6ZGlyZWN0b3J5Q29udGVudHMuZmly
c3RPYmplY3RdIGVycm9yOm51bGxwdHJdOworICAgIH0KKworICAgIC8vIHJtZGlyKC4uLikgcmV0
dXJucyAwIG9uIHN1Y2Nlc3NmdWwgZGVsZXRpb24gb2YgdGhlIHBhdGggYW5kIG5vbi16ZXJvIGlu
IGFueSBvdGhlciBjYXNlIChpbmNsdWRpbmcgaW52YWxpZCBwZXJtaXNzaW9ucyBvciBub24tZXhp
c3RlbnQgZmlsZSkKKyAgICByZXR1cm4gIXJtZGlyKEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihwYXRoKS5kYXRhKCkpOworfQorCit2b2lkIEZpbGVTeXN0ZW06OnNldE1ldGFk
YXRhVVJMKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBtZXRhZGF0YVVSTFN0cmlu
ZywgY29uc3QgU3RyaW5nJiByZWZlcnJlcikKK3sKKyAgICBTdHJpbmcgdXJsU3RyaW5nOworICAg
IGlmIChOU1VSTCAqdXJsID0gVVJMV2l0aFVzZXJUeXBlZFN0cmluZyhtZXRhZGF0YVVSTFN0cmlu
ZywgbmlsKSkKKyAgICAgICAgdXJsU3RyaW5nID0gV1RGOjp1c2VyVmlzaWJsZVN0cmluZyhXVEY6
OlVSTEJ5UmVtb3ZpbmdVc2VySW5mbyh1cmwpKTsKKyAgICBlbHNlCisgICAgICAgIHVybFN0cmlu
ZyA9IG1ldGFkYXRhVVJMU3RyaW5nOworCisgICAgLy8gQ2FsbCBNZXRhZGF0YSBBUEkgb24gYSBi
YWNrZ3JvdW5kIHF1ZXVlIGJlY2F1c2UgaXQgY2FuIHRha2Ugc29tZSB0aW1lLgorICAgIGRpc3Bh
dGNoX2FzeW5jKGRpc3BhdGNoX2dldF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJ
VFlfREVGQVVMVCwgMCksIFtwYXRoID0gcGF0aC5pc29sYXRlZENvcHkoKSwgdXJsU3RyaW5nID0g
dXJsU3RyaW5nLmlzb2xhdGVkQ29weSgpLCByZWZlcnJlciA9IHJlZmVycmVyLmlzb2xhdGVkQ29w
eSgpXSB7CisgICAgICAgIGF1dG8gaXRlbSA9IGFkb3B0Q0YoTURJdGVtQ3JlYXRlKGtDRkFsbG9j
YXRvckRlZmF1bHQsIHBhdGguY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOworICAgICAgICBpZiAo
IWl0ZW0pCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgYXV0byB3aGVyZUZyb21BdHRy
aWJ1dGUgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czp1
cmxTdHJpbmcsIG5pbF0pOworICAgICAgICBpZiAoIXJlZmVycmVyLmlzTnVsbCgpKQorICAgICAg
ICAgICAgW3doZXJlRnJvbUF0dHJpYnV0ZSBhZGRPYmplY3Q6cmVmZXJyZXJdOworCisgICAgICAg
IE1ESXRlbVNldEF0dHJpYnV0ZShpdGVtLmdldCgpLCBrTURJdGVtV2hlcmVGcm9tcywgKF9fYnJp
ZGdlIENGQXJyYXlSZWYpd2hlcmVGcm9tQXR0cmlidXRlLmdldCgpKTsKKyAgICAgICAgTURJdGVt
U2V0QXR0cmlidXRlKGl0ZW0uZ2V0KCksIGtNREl0ZW1Eb3dubG9hZGVkRGF0ZSwgKF9fYnJpZGdl
IENGQXJyYXlSZWYpQFsgW05TRGF0ZSBkYXRlXSBdKTsKKyAgICB9KTsKK30KKworYm9vbCBGaWxl
U3lzdGVtOjpjYW5FeGNsdWRlRnJvbUJhY2t1cCgpCit7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K2Jvb2wgRmlsZVN5c3RlbTo6ZXhjbHVkZUZyb21CYWNrdXAoY29uc3QgU3RyaW5nJiBwYXRoKQor
eworICAgIC8vIEl0IGlzIGNyaXRpY2FsIHRvIHBhc3MgRkFMU0UgZm9yIGV4Y2x1ZGVCeVBhdGgg
YmVjYXVzZSBleGNsdWRpbmcgYnkgcGF0aCByZXF1aXJlcyByb290IHByaXZpbGVnZXMuCisgICAg
Q1NCYWNrdXBTZXRJdGVtRXhjbHVkZWQoRmlsZVN5c3RlbTo6cGF0aEFzVVJMKHBhdGgpLmdldCgp
LCBUUlVFLCBGQUxTRSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdU
RgorCisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
cG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0
ZW1QT1NJWC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzYwZWNiMTU4NjM5MjBmYTQzNjFmYzE0ZGI4ZWU2ZDNm
ZmUyZTRmMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0
ZW1QT1NJWC5jcHAKQEAgLTAsMCArMSw0OTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDct
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5h
bWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8
d3RmL0ZpbGVTeXN0ZW0uaD4KKworI2luY2x1ZGUgPGRpcmVudC5oPgorI2luY2x1ZGUgPGVycm5v
Lmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDxmbm1hdGNoLmg+CisjaW5jbHVkZSA8
bGliZ2VuLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2lu
Y2x1ZGUgPHN5cy9zdGF0dmZzLmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8
dW5pc3RkLmg+CisjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KKyNpbmNsdWRlIDx3dGYvRmls
ZU1ldGFkYXRhLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
KworbmFtZXNwYWNlIFdURiB7CisKK25hbWVzcGFjZSBGaWxlU3lzdGVtIHsKKworYm9vbCBmaWxl
RXhpc3RzKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBpZiAocGF0aC5pc051bGwoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgQ1N0cmluZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihwYXRoKTsKKworICAgIGlmICghZnNSZXAuZGF0YSgpIHx8IGZzUmVwLmRhdGEo
KVswXSA9PSAnXDAnKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gYWNjZXNz
KGZzUmVwLmRhdGEoKSwgRl9PSykgIT0gLTE7Cit9CisKK2Jvb2wgZGVsZXRlRmlsZShjb25zdCBT
dHJpbmcmIHBhdGgpCit7CisgICAgQ1N0cmluZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihwYXRoKTsKKworICAgIGlmICghZnNSZXAuZGF0YSgpIHx8IGZzUmVwLmRhdGEoKVswXSA9
PSAnXDAnKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyB1bmxpbmsoLi4uKSByZXR1
cm5zIDAgb24gc3VjY2Vzc2Z1bCBkZWxldGlvbiBvZiB0aGUgcGF0aCBhbmQgbm9uLXplcm8gaW4g
YW55IG90aGVyIGNhc2UgKGluY2x1ZGluZyBpbnZhbGlkIHBlcm1pc3Npb25zIG9yIG5vbi1leGlz
dGVudCBmaWxlKQorICAgIHJldHVybiAhdW5saW5rKGZzUmVwLmRhdGEoKSk7Cit9CisKK1BsYXRm
b3JtRmlsZUhhbmRsZSBvcGVuRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVPcGVuTW9kZSBt
b2RlKQoreworICAgIENTdHJpbmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0
aCk7CisKKyAgICBpZiAoZnNSZXAuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBpbnZhbGlkUGxh
dGZvcm1GaWxlSGFuZGxlOworCisgICAgaW50IHBsYXRmb3JtRmxhZyA9IDA7CisgICAgaWYgKG1v
ZGUgPT0gRmlsZU9wZW5Nb2RlOjpSZWFkKQorICAgICAgICBwbGF0Zm9ybUZsYWcgfD0gT19SRE9O
TFk7CisgICAgZWxzZSBpZiAobW9kZSA9PSBGaWxlT3Blbk1vZGU6OldyaXRlKQorICAgICAgICBw
bGF0Zm9ybUZsYWcgfD0gKE9fV1JPTkxZIHwgT19DUkVBVCB8IE9fVFJVTkMpOworI2lmIE9TKERB
UldJTikKKyAgICBlbHNlIGlmIChtb2RlID09IEZpbGVPcGVuTW9kZTo6RXZlbnRzT25seSkKKyAg
ICAgICAgcGxhdGZvcm1GbGFnIHw9IE9fRVZUT05MWTsKKyNlbmRpZgorCisgICAgcmV0dXJuIG9w
ZW4oZnNSZXAuZGF0YSgpLCBwbGF0Zm9ybUZsYWcsIDA2NjYpOworfQorCit2b2lkIGNsb3NlRmls
ZShQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKK3sKKyAgICBpZiAoaXNIYW5kbGVWYWxpZCho
YW5kbGUpKSB7CisgICAgICAgIGNsb3NlKGhhbmRsZSk7CisgICAgICAgIGhhbmRsZSA9IGludmFs
aWRQbGF0Zm9ybUZpbGVIYW5kbGU7CisgICAgfQorfQorCitsb25nIGxvbmcgc2Vla0ZpbGUoUGxh
dGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCwgRmlsZVNlZWtPcmlnaW4g
b3JpZ2luKQoreworICAgIGludCB3aGVuY2UgPSBTRUVLX1NFVDsKKyAgICBzd2l0Y2ggKG9yaWdp
bikgeworICAgIGNhc2UgRmlsZVNlZWtPcmlnaW46OkJlZ2lubmluZzoKKyAgICAgICAgd2hlbmNl
ID0gU0VFS19TRVQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRmlsZVNlZWtPcmlnaW46OkN1
cnJlbnQ6CisgICAgICAgIHdoZW5jZSA9IFNFRUtfQ1VSOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIEZpbGVTZWVrT3JpZ2luOjpFbmQ6CisgICAgICAgIHdoZW5jZSA9IFNFRUtfRU5EOworICAg
ICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICB9CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGxvbmcgbG9uZz4obHNlZWsoaGFuZGxlLCBv
ZmZzZXQsIHdoZW5jZSkpOworfQorCitib29sIHRydW5jYXRlRmlsZShQbGF0Zm9ybUZpbGVIYW5k
bGUgaGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0KQoreworICAgIC8vIGZ0cnVuY2F0ZSByZXR1cm5z
IDAgdG8gaW5kaWNhdGUgdGhlIHN1Y2Nlc3MuCisgICAgcmV0dXJuICFmdHJ1bmNhdGUoaGFuZGxl
LCBvZmZzZXQpOworfQorCitpbnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRs
ZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKK3sKKyAgICBkbyB7CisgICAgICAgIGlu
dCBieXRlc1dyaXR0ZW4gPSB3cml0ZShoYW5kbGUsIGRhdGEsIHN0YXRpY19jYXN0PHNpemVfdD4o
bGVuZ3RoKSk7CisgICAgICAgIGlmIChieXRlc1dyaXR0ZW4gPj0gMCkKKyAgICAgICAgICAgIHJl
dHVybiBieXRlc1dyaXR0ZW47CisgICAgfSB3aGlsZSAoZXJybm8gPT0gRUlOVFIpOworICAgIHJl
dHVybiAtMTsKK30KKworaW50IHJlYWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxl
LCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQoreworICAgIGRvIHsKKyAgICAgICAgaW50IGJ5dGVz
UmVhZCA9IHJlYWQoaGFuZGxlLCBkYXRhLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkpOwor
ICAgICAgICBpZiAoYnl0ZXNSZWFkID49IDApCisgICAgICAgICAgICByZXR1cm4gYnl0ZXNSZWFk
OworICAgIH0gd2hpbGUgKGVycm5vID09IEVJTlRSKTsKKyAgICByZXR1cm4gLTE7Cit9CisKKyNp
ZiBVU0UoRklMRV9MT0NLKQorYm9vbCBsb2NrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxl
LCBPcHRpb25TZXQ8RmlsZUxvY2tNb2RlPiBsb2NrTW9kZSkKK3sKKyAgICBDT01QSUxFX0FTU0VS
VChMT0NLX1NIID09IFdURjo6ZW51bVRvVW5kZXJseWluZ1R5cGUoRmlsZUxvY2tNb2RlOjpTaGFy
ZWQpLCBMb2NrU2hhcmVkRW5jb2RpbmdJc0FzRXhwZWN0ZWQpOworICAgIENPTVBJTEVfQVNTRVJU
KExPQ0tfRVggPT0gV1RGOjplbnVtVG9VbmRlcmx5aW5nVHlwZShGaWxlTG9ja01vZGU6OkV4Y2x1
c2l2ZSksIExvY2tFeGNsdXNpdmVFbmNvZGluZ0lzQXNFeHBlY3RlZCk7CisgICAgQ09NUElMRV9B
U1NFUlQoTE9DS19OQiA9PSBXVEY6OmVudW1Ub1VuZGVybHlpbmdUeXBlKEZpbGVMb2NrTW9kZTo6
Tm9uYmxvY2tpbmcpLCBMb2NrTm9uYmxvY2tpbmdFbmNvZGluZ0lzQXNFeHBlY3RlZCk7CisgICAg
aW50IHJlc3VsdCA9IGZsb2NrKGhhbmRsZSwgbG9ja01vZGUudG9SYXcoKSk7CisgICAgcmV0dXJu
IChyZXN1bHQgIT0gLTEpOworfQorCitib29sIHVubG9ja0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxl
IGhhbmRsZSkKK3sKKyAgICBpbnQgcmVzdWx0ID0gZmxvY2soaGFuZGxlLCBMT0NLX1VOKTsKKyAg
ICByZXR1cm4gKHJlc3VsdCAhPSAtMSk7Cit9CisjZW5kaWYKKworI2lmICFQTEFURk9STShNQUMp
Citib29sIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBD
U3RyaW5nIGZzUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworCisgICAgaWYg
KCFmc1JlcC5kYXRhKCkgfHwgZnNSZXAuZGF0YSgpWzBdID09ICdcMCcpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIC8vIHJtZGlyKC4uLikgcmV0dXJucyAwIG9uIHN1Y2Nlc3NmdWwgZGVs
ZXRpb24gb2YgdGhlIHBhdGggYW5kIG5vbi16ZXJvIGluIGFueSBvdGhlciBjYXNlIChpbmNsdWRp
bmcgaW52YWxpZCBwZXJtaXNzaW9ucyBvciBub24tZXhpc3RlbnQgZmlsZSkKKyAgICByZXR1cm4g
IXJtZGlyKGZzUmVwLmRhdGEoKSk7Cit9CisjZW5kaWYKKworYm9vbCBnZXRGaWxlU2l6ZShjb25z
dCBTdHJpbmcmIHBhdGgsIGxvbmcgbG9uZyYgcmVzdWx0KQoreworICAgIENTdHJpbmcgZnNSZXAg
PSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisKKyAgICBpZiAoIWZzUmVwLmRhdGEo
KSB8fCBmc1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgc3RydWN0IHN0YXQgZmlsZUluZm87CisKKyAgICBpZiAoc3RhdChmc1JlcC5kYXRhKCksICZm
aWxlSW5mbykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJlc3VsdCA9IGZpbGVJbmZv
LnN0X3NpemU7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgZ2V0RmlsZVNpemUoUGxhdGZv
cm1GaWxlSGFuZGxlIGhhbmRsZSwgbG9uZyBsb25nJiByZXN1bHQpCit7CisgICAgc3RydWN0IHN0
YXQgZmlsZUluZm87CisgICAgaWYgKGZzdGF0KGhhbmRsZSwgJmZpbGVJbmZvKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgcmVzdWx0ID0gZmlsZUluZm8uc3Rfc2l6ZTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworT3B0aW9uYWw8V2FsbFRpbWU+IGdldEZpbGVDcmVhdGlvblRpbWUoY29u
c3QgU3RyaW5nJiBwYXRoKQoreworI2lmIE9TKERBUldJTikgfHwgT1MoT1BFTkJTRCkgfHwgT1Mo
TkVUQlNEKSB8fCBPUyhGUkVFQlNEKQorICAgIENTdHJpbmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24ocGF0aCk7CisKKyAgICBpZiAoIWZzUmVwLmRhdGEoKSB8fCBmc1JlcC5kYXRh
KClbMF0gPT0gJ1wwJykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHN0cnVj
dCBzdGF0IGZpbGVJbmZvOworCisgICAgaWYgKHN0YXQoZnNSZXAuZGF0YSgpLCAmZmlsZUluZm8p
KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIFdhbGxUaW1lOjpm
cm9tUmF3U2Vjb25kcyhmaWxlSW5mby5zdF9iaXJ0aHRpbWUpOworI2Vsc2UKKyAgICBVTlVTRURf
UEFSQU0ocGF0aCk7CisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyNlbmRpZgorfQorCitPcHRp
b25hbDxXYWxsVGltZT4gZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRo
KQoreworICAgIENTdHJpbmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7
CisKKyAgICBpZiAoIWZzUmVwLmRhdGEoKSB8fCBmc1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKKyAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHN0cnVjdCBzdGF0IGZpbGVJbmZvOwor
CisgICAgaWYgKHN0YXQoZnNSZXAuZGF0YSgpLCAmZmlsZUluZm8pKQorICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhmaWxl
SW5mby5zdF9tdGltZSk7Cit9CisKK3N0YXRpYyBGaWxlTWV0YWRhdGE6OlR5cGUgdG9GaWxlTWV0
YXRhVHlwZShzdHJ1Y3Qgc3RhdCBmaWxlSW5mbykKK3sKKyAgICBpZiAoU19JU0RJUihmaWxlSW5m
by5zdF9tb2RlKSkKKyAgICAgICAgcmV0dXJuIEZpbGVNZXRhZGF0YTo6VHlwZTo6RGlyZWN0b3J5
OworICAgIGlmIChTX0lTTE5LKGZpbGVJbmZvLnN0X21vZGUpKQorICAgICAgICByZXR1cm4gRmls
ZU1ldGFkYXRhOjpUeXBlOjpTeW1ib2xpY0xpbms7CisgICAgcmV0dXJuIEZpbGVNZXRhZGF0YTo6
VHlwZTo6RmlsZTsKK30KKworc3RhdGljIE9wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFk
YXRhVXNpbmdGdW5jdGlvbihjb25zdCBTdHJpbmcmIHBhdGgsIGludCAoKnN0YXRGdW5jKShjb25z
dCBjaGFyKiwgc3RydWN0IHN0YXQqKSkKK3sKKyAgICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKHBhdGgpOworCisgICAgaWYgKCFmc1JlcC5kYXRhKCkgfHwgZnNSZXAu
ZGF0YSgpWzBdID09ICdcMCcpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBz
dHJ1Y3Qgc3RhdCBmaWxlSW5mbzsKKyAgICBpZiAoc3RhdEZ1bmMoZnNSZXAuZGF0YSgpLCAmZmls
ZUluZm8pKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgU3RyaW5nIGZpbGVu
YW1lID0gcGF0aEdldEZpbGVOYW1lKHBhdGgpOworICAgIGJvb2wgaXNIaWRkZW4gPSAhZmlsZW5h
bWUuaXNFbXB0eSgpICYmIGZpbGVuYW1lWzBdID09ICcuJzsKKyAgICByZXR1cm4gRmlsZU1ldGFk
YXRhIHsKKyAgICAgICAgV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKGZpbGVJbmZvLnN0X210aW1l
KSwKKyAgICAgICAgZmlsZUluZm8uc3Rfc2l6ZSwKKyAgICAgICAgaXNIaWRkZW4sCisgICAgICAg
IHRvRmlsZU1ldGF0YVR5cGUoZmlsZUluZm8pCisgICAgfTsKK30KKworT3B0aW9uYWw8RmlsZU1l
dGFkYXRhPiBmaWxlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIHJldHVybiBm
aWxlTWV0YWRhdGFVc2luZ0Z1bmN0aW9uKHBhdGgsICZsc3RhdCk7Cit9CisKK09wdGlvbmFsPEZp
bGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3MoY29uc3QgU3RyaW5nJiBw
YXRoKQoreworICAgIHJldHVybiBmaWxlTWV0YWRhdGFVc2luZ0Z1bmN0aW9uKHBhdGgsICZzdGF0
KTsKK30KKworYm9vbCBjcmVhdGVTeW1ib2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRo
LCBjb25zdCBTdHJpbmcmIHN5bWJvbGljTGlua1BhdGgpCit7CisgICAgQ1N0cmluZyB0YXJnZXRQ
YXRoRlNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24odGFyZ2V0UGF0aCk7CisgICAgaWYg
KCF0YXJnZXRQYXRoRlNSZXAuZGF0YSgpIHx8IHRhcmdldFBhdGhGU1JlcC5kYXRhKClbMF0gPT0g
J1wwJykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgQ1N0cmluZyBzeW1ib2xpY0xpbmtQ
YXRoRlNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oc3ltYm9saWNMaW5rUGF0aCk7Cisg
ICAgaWYgKCFzeW1ib2xpY0xpbmtQYXRoRlNSZXAuZGF0YSgpIHx8IHN5bWJvbGljTGlua1BhdGhG
U1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0
dXJuICFzeW1saW5rKHRhcmdldFBhdGhGU1JlcC5kYXRhKCksIHN5bWJvbGljTGlua1BhdGhGU1Jl
cC5kYXRhKCkpOworfQorCitTdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNvbnN0IFN0
cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb21wb25lbnQpCit7CisgICAgaWYgKHBhdGguZW5k
c1dpdGgoJy8nKSkKKyAgICAgICAgcmV0dXJuIHBhdGggKyBjb21wb25lbnQ7CisgICAgcmV0dXJu
IHBhdGggKyAiLyIgKyBjb21wb25lbnQ7Cit9CisKK1N0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnRzKFN0cmluZ1ZpZXcgcGF0aCwgY29uc3QgVmVjdG9yPFN0cmluZ1ZpZXc+JiBjb21wb25l
bnRzKQoreworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZChw
YXRoKTsKKyAgICBmb3IgKGF1dG8mIGNvbXBvbmVudCA6IGNvbXBvbmVudHMpIHsKKyAgICAgICAg
YnVpbGRlci5hcHBlbmQoJy8nKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoY29tcG9uZW50KTsK
KyAgICB9CisgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKK30KKworYm9vbCBtYWtlQWxs
RGlyZWN0b3JpZXMoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIENTdHJpbmcgZnVsbFBhdGgg
PSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisgICAgaWYgKCFhY2Nlc3MoZnVsbFBh
dGguZGF0YSgpLCBGX09LKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBjaGFyKiBwID0g
ZnVsbFBhdGgubXV0YWJsZURhdGEoKSArIDE7CisgICAgaW50IGxlbmd0aCA9IGZ1bGxQYXRoLmxl
bmd0aCgpOworCisgICAgaWYgKHBbbGVuZ3RoIC0gMV0gPT0gJy8nKQorICAgICAgICBwW2xlbmd0
aCAtIDFdID0gJ1wwJzsKKyAgICBmb3IgKDsgKnA7ICsrcCkgeworICAgICAgICBpZiAoKnAgPT0g
Jy8nKSB7CisgICAgICAgICAgICAqcCA9ICdcMCc7CisgICAgICAgICAgICBpZiAoYWNjZXNzKGZ1
bGxQYXRoLmRhdGEoKSwgRl9PSykpIHsKKyAgICAgICAgICAgICAgICBpZiAobWtkaXIoZnVsbFBh
dGguZGF0YSgpLCBTX0lSV1hVKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgKnAgPSAnLyc7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgaWYgKGFjY2VzcyhmdWxsUGF0aC5kYXRhKCksIEZfT0spKSB7CisgICAgICAgIGlmIChta2Rp
cihmdWxsUGF0aC5kYXRhKCksIFNfSVJXWFUpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitTdHJpbmcgcGF0aEdldEZpbGVOYW1lKGNv
bnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICByZXR1cm4gcGF0aC5zdWJzdHJpbmcocGF0aC5yZXZl
cnNlRmluZCgnLycpICsgMSk7Cit9CisKK1N0cmluZyBkaXJlY3RvcnlOYW1lKGNvbnN0IFN0cmlu
ZyYgcGF0aCkKK3sKKyAgICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KHBhdGgpOworCisgICAgaWYgKCFmc1JlcC5kYXRhKCkgfHwgZnNSZXAuZGF0YSgpWzBdID09ICdc
MCcpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIHJldHVybiBTdHJpbmc6OmZyb21V
VEY4KGRpcm5hbWUoZnNSZXAubXV0YWJsZURhdGEoKSkpOworfQorCitWZWN0b3I8U3RyaW5nPiBs
aXN0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBmaWx0ZXIpCit7
CisgICAgVmVjdG9yPFN0cmluZz4gZW50cmllczsKKyAgICBDU3RyaW5nIGNwYXRoID0gZmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIENTdHJpbmcgY2ZpbHRlciA9IGZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihmaWx0ZXIpOworICAgIERJUiogZGlyID0gb3BlbmRpcihjcGF0aC5k
YXRhKCkpOworICAgIGlmIChkaXIpIHsKKyAgICAgICAgc3RydWN0IGRpcmVudCogZHA7CisgICAg
ICAgIHdoaWxlICgoZHAgPSByZWFkZGlyKGRpcikpKSB7CisgICAgICAgICAgICBjb25zdCBjaGFy
KiBuYW1lID0gZHAtPmRfbmFtZTsKKyAgICAgICAgICAgIGlmICghc3RyY21wKG5hbWUsICIuIikg
fHwgIXN0cmNtcChuYW1lLCAiLi4iKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgICAgIGlmIChmbm1hdGNoKGNmaWx0ZXIuZGF0YSgpLCBuYW1lLCAwKSkKKyAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGNoYXIgZmlsZVBhdGhbUEFUSF9NQVhdOworICAg
ICAgICAgICAgaWYgKHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKGZpbGVQYXRoKSAtIDEpIDwgc25w
cmludGYoZmlsZVBhdGgsIHNpemVvZihmaWxlUGF0aCksICIlcy8lcyIsIGNwYXRoLmRhdGEoKSwg
bmFtZSkpCisgICAgICAgICAgICAgICAgY29udGludWU7IC8vIGJ1ZmZlciBvdmVyZmxvdworCisg
ICAgICAgICAgICBhdXRvIHN0cmluZyA9IHN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oZmlsZVBhdGgpOworCisgICAgICAgICAgICAvLyBTb21lIGZpbGUgc3lzdGVtIHJlcHJlc2Vu
dGF0aW9ucyBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgYXMgYSBVVEYtMTYgc3RyaW5nLAorICAgICAg
ICAgICAgLy8gc28gdGhpcyBzdHJpbmcgbWlnaHQgYmUgbnVsbC4KKyAgICAgICAgICAgIGlmICgh
c3RyaW5nLmlzTnVsbCgpKQorICAgICAgICAgICAgICAgIGVudHJpZXMuYXBwZW5kKFdURk1vdmUo
c3RyaW5nKSk7CisgICAgICAgIH0KKyAgICAgICAgY2xvc2VkaXIoZGlyKTsKKyAgICB9CisgICAg
cmV0dXJuIGVudHJpZXM7Cit9CisKKyNpZiAhUExBVEZPUk0oQ09DT0EpCitTdHJpbmcgc3RyaW5n
RnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBjaGFyKiBwYXRoKQoreworICAgIGlm
ICghcGF0aCkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgcmV0dXJuIFN0cmluZzo6
ZnJvbVVURjgocGF0aCk7Cit9CisKK0NTdHJpbmcgZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNv
bnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICByZXR1cm4gcGF0aC51dGY4KCk7Cit9CisKK2Jvb2wg
bW92ZUZpbGUoY29uc3QgU3RyaW5nJiBvbGRQYXRoLCBjb25zdCBTdHJpbmcmIG5ld1BhdGgpCit7
CisgICAgYXV0byBvbGRGaWxlbmFtZSA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihvbGRQYXRo
KTsKKyAgICBpZiAob2xkRmlsZW5hbWUuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGF1dG8gbmV3RmlsZW5hbWUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24obmV3UGF0
aCk7CisgICAgaWYgKG5ld0ZpbGVuYW1lLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICByZXR1cm4gcmVuYW1lKG9sZEZpbGVuYW1lLmRhdGEoKSwgbmV3RmlsZW5hbWUuZGF0
YSgpKSAhPSAtMTsKK30KKworYm9vbCBnZXRWb2x1bWVGcmVlU3BhY2UoY29uc3QgU3RyaW5nJiBw
YXRoLCB1aW50NjRfdCYgZnJlZVNwYWNlKQoreworICAgIHN0cnVjdCBzdGF0dmZzIGZpbGVTeXN0
ZW1TdGF0OworICAgIGlmIChzdGF0dmZzKGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5k
YXRhKCksICZmaWxlU3lzdGVtU3RhdCkpIHsKKyAgICAgICAgZnJlZVNwYWNlID0gZmlsZVN5c3Rl
bVN0YXQuZl9iYXZhaWwgKiBmaWxlU3lzdGVtU3RhdC5mX2Zyc2l6ZTsKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKyNlbmRpZgorCisjaWYgIU9TKERB
UldJTikKK1N0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxh
dGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpCit7CisgICAgY2hhciBidWZmZXJbUEFUSF9NQVhdOwor
ICAgIGNvbnN0IGNoYXIqIHRtcERpciA9IGdldGVudigiVE1QRElSIik7CisKKyAgICBpZiAoIXRt
cERpcikKKyAgICAgICAgdG1wRGlyID0gIi90bXAiOworCisgICAgaWYgKHNucHJpbnRmKGJ1ZmZl
ciwgUEFUSF9NQVgsICIlcy8lc1hYWFhYWCIsIHRtcERpciwgcHJlZml4LnV0ZjgoKS5kYXRhKCkp
ID49IFBBVEhfTUFYKQorICAgICAgICBnb3RvIGVuZDsKKworICAgIGhhbmRsZSA9IG1rc3RlbXAo
YnVmZmVyKTsKKyAgICBpZiAoaGFuZGxlIDwgMCkKKyAgICAgICAgZ290byBlbmQ7CisKKyAgICBy
ZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChidWZmZXIpOworCitlbmQ6CisgICAgaGFuZGxlID0gaW52
YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisjZW5kaWYK
KworYm9vbCBoYXJkTGlua09yQ29weUZpbGUoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0
cmluZyYgZGVzdGluYXRpb24pCit7CisgICAgaWYgKHNvdXJjZS5pc0VtcHR5KCkgfHwgZGVzdGlu
YXRpb24uaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBDU3RyaW5nIGZz
U291cmNlID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHNvdXJjZSk7CisgICAgaWYgKCFmc1Nv
dXJjZS5kYXRhKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIENTdHJpbmcgZnNEZXN0
aW5hdGlvbiA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihkZXN0aW5hdGlvbik7CisgICAgaWYg
KCFmc0Rlc3RpbmF0aW9uLmRhdGEoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYg
KCFsaW5rKGZzU291cmNlLmRhdGEoKSwgZnNEZXN0aW5hdGlvbi5kYXRhKCkpKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKworICAgIC8vIEhhcmQgbGluayBmYWlsZWQuIFBlcmZvcm0gYSBjb3B5IGlu
c3RlYWQuCisgICAgYXV0byBoYW5kbGUgPSBvcGVuKGZzRGVzdGluYXRpb24uZGF0YSgpLCBPX1dS
T05MWSB8IE9fQ1JFQVQgfCBPX0VYQ0wsIDA2NjYpOworICAgIGlmIChoYW5kbGUgPT0gLTEpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGJvb2wgYXBwZW5kUmVzdWx0ID0gYXBwZW5kRmls
ZUNvbnRlbnRzVG9GaWxlSGFuZGxlKHNvdXJjZSwgaGFuZGxlKTsKKyAgICBjbG9zZShoYW5kbGUp
OworCisgICAgLy8gSWYgdGhlIGNvcHkgZmFpbGVkLCBkZWxldGUgdGhlIHVudXNhYmxlIGZpbGUu
CisgICAgaWYgKCFhcHBlbmRSZXN1bHQpCisgICAgICAgIHVubGluayhmc0Rlc3RpbmF0aW9uLmRh
dGEoKSk7CisKKyAgICByZXR1cm4gYXBwZW5kUmVzdWx0OworfQorCitPcHRpb25hbDxpbnQzMl90
PiBnZXRGaWxlRGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQoreworICAgIHN0cnVjdCBz
dGF0IGZpbGVTdGF0OworICAgIGlmIChzdGF0KGZzRmlsZS5kYXRhKCksICZmaWxlU3RhdCkgPT0g
LTEpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gZmlsZVN0YXQu
c3RfZGV2OworfQorCitTdHJpbmcgcmVhbFBhdGgoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKK3sK
KyAgICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVQYXRoKTsK
KyAgICBjaGFyIHJlc29sdmVkTmFtZVtQQVRIX01BWF07CisgICAgY29uc3QgY2hhciogcmVzdWx0
ID0gcmVhbHBhdGgoZnNSZXAuZGF0YSgpLCByZXNvbHZlZE5hbWUpOworICAgIHJldHVybiByZXN1
bHQgPyBTdHJpbmc6OmZyb21VVEY4KHJlc3VsdCkgOiBmaWxlUGF0aDsKK30KKworfSAvLyBuYW1l
c3BhY2UgRmlsZVN5c3RlbQorfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9zcGkvbWFjL01ldGFkYXRhU1BJLmggYi9Tb3VyY2UvV1RGL3d0Zi9zcGkvbWFjL01l
dGFkYXRhU1BJLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODE1NTQ3YzZiODUxMGUzMDYxOGUyMjgyYWQ1Yjc4NDAx
NmNhMzcyMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL3NwaS9tYWMvTWV0YWRh
dGFTUEkuaApAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
ZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorCisjaW5jbHVkZSA8Q29yZVNlcnZpY2VzL0NvcmVT
ZXJ2aWNlc1ByaXYuaD4KKworI2VuZGlmCisKK1dURl9FWFRFUk5fQ19CRUdJTgorCitCb29sZWFu
IE1ESXRlbVNldEF0dHJpYnV0ZShNREl0ZW1SZWYsIENGU3RyaW5nUmVmIG5hbWUsIENGVHlwZVJl
ZiBhdHRyKTsKKworV1RGX0VYVEVSTl9DX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
d2luL0ZpbGVTeXN0ZW1XaW4uY3BwIGIvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4u
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmMxNjQ3MmNkZDNmNWJhMDc3Yjk3MjQ1NjAwOGE0OTQwOTQ2ZWVkZTQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAK
QEAgLTAsMCArMSw1ODYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3Jh
LCBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVp
dGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisg
KiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQor
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICog
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVT
eXN0ZW0uaD4KKworI2luY2x1ZGUgPGlvLmg+CisjaW5jbHVkZSA8c2hsb2JqLmg+CisjaW5jbHVk
ZSA8c2hsd2FwaS5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5jbHVkZSA8d2luZG93cy5o
PgorI2luY2x1ZGUgPHd0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5oPgorI2luY2x1
ZGUgPHd0Zi9GaWxlTWV0YWRhdGEuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVy
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+CisjaW5jbHVk
ZSA8d3RmL3dpbi9QYXRoV2Fsa2VyLmg+CisKK25hbWVzcGFjZSBXVEYgeworCituYW1lc3BhY2Ug
RmlsZVN5c3RlbSB7CisKK3N0YXRpYyBjb25zdCBVTE9OR0xPTkcga1NlY29uZHNGcm9tRmlsZVRp
bWVUb1RpbWV0ID0gMTE2NDQ0NzM2MDA7CisKK3N0YXRpYyBib29sIGdldEZpbmREYXRhKFN0cmlu
ZyBwYXRoLCBXSU4zMl9GSU5EX0RBVEFXJiBmaW5kRGF0YSkKK3sKKyAgICBIQU5ETEUgaGFuZGxl
ID0gRmluZEZpcnN0RmlsZVcoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKHBhdGgpLmRhdGEo
KSwgJmZpbmREYXRhKTsKKyAgICBpZiAoaGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgRmluZENsb3NlKGhhbmRsZSk7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK3N0YXRpYyBib29sIGdldEZpbGVTaXplRnJvbUZpbmREYXRhKGNvbnN0IFdJ
TjMyX0ZJTkRfREFUQVcmIGZpbmREYXRhLCBsb25nIGxvbmcmIHNpemUpCit7CisgICAgVUxBUkdF
X0lOVEVHRVIgZmlsZVNpemU7CisgICAgZmlsZVNpemUuSGlnaFBhcnQgPSBmaW5kRGF0YS5uRmls
ZVNpemVIaWdoOworICAgIGZpbGVTaXplLkxvd1BhcnQgPSBmaW5kRGF0YS5uRmlsZVNpemVMb3c7
CisKKyAgICBpZiAoZmlsZVNpemUuUXVhZFBhcnQgPiBzdGF0aWNfY2FzdDxVTE9OR0xPTkc+KHN0
ZDo6bnVtZXJpY19saW1pdHM8bG9uZyBsb25nPjo6bWF4KCkpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBzaXplID0gZmlsZVNpemUuUXVhZFBhcnQ7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK3N0YXRpYyBib29sIGdldEZpbGVTaXplRnJvbUJ5SGFuZGxlRmlsZUluZm9ybWF0aW9uU3Ry
dWN0dXJlKGNvbnN0IEJZX0hBTkRMRV9GSUxFX0lORk9STUFUSU9OJiBmaWxlSW5mb3JtYXRpb24s
IGxvbmcgbG9uZyYgc2l6ZSkKK3sKKyAgICBVTEFSR0VfSU5URUdFUiBmaWxlU2l6ZTsKKyAgICBm
aWxlU2l6ZS5IaWdoUGFydCA9IGZpbGVJbmZvcm1hdGlvbi5uRmlsZVNpemVIaWdoOworICAgIGZp
bGVTaXplLkxvd1BhcnQgPSBmaWxlSW5mb3JtYXRpb24ubkZpbGVTaXplTG93OworCisgICAgaWYg
KGZpbGVTaXplLlF1YWRQYXJ0ID4gc3RhdGljX2Nhc3Q8VUxPTkdMT05HPihzdGQ6Om51bWVyaWNf
bGltaXRzPGxvbmcgbG9uZz46Om1heCgpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
c2l6ZSA9IGZpbGVTaXplLlF1YWRQYXJ0OworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMg
dm9pZCBnZXRGaWxlQ3JlYXRpb25UaW1lRnJvbUZpbmREYXRhKGNvbnN0IFdJTjMyX0ZJTkRfREFU
QVcmIGZpbmREYXRhLCB0aW1lX3QmIHRpbWUpCit7CisgICAgVUxBUkdFX0lOVEVHRVIgZmlsZVRp
bWU7CisgICAgZmlsZVRpbWUuSGlnaFBhcnQgPSBmaW5kRGF0YS5mdENyZWF0aW9uVGltZS5kd0hp
Z2hEYXRlVGltZTsKKyAgICBmaWxlVGltZS5Mb3dQYXJ0ID0gZmluZERhdGEuZnRDcmVhdGlvblRp
bWUuZHdMb3dEYXRlVGltZTsKKworICAgIC8vIEluZm9ybWF0aW9uIGFib3V0IGNvbnZlcnRpbmcg
dGltZV90IHRvIEZpbGVUaW1lIGlzIGF2YWlsYWJsZSBhdCBodHRwOi8vbXNkbi5taWNyb3NvZnQu
Y29tL2VuLXVzL2xpYnJhcnkvbXM3MjQyMjglMjh2PXZzLjg1JTI5LmFzcHgKKyAgICB0aW1lID0g
ZmlsZVRpbWUuUXVhZFBhcnQgLyAxMDAwMDAwMCAtIGtTZWNvbmRzRnJvbUZpbGVUaW1lVG9UaW1l
dDsKK30KKworCitzdGF0aWMgdm9pZCBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZUZyb21GaW5kRGF0
YShjb25zdCBXSU4zMl9GSU5EX0RBVEFXJiBmaW5kRGF0YSwgdGltZV90JiB0aW1lKQoreworICAg
IFVMQVJHRV9JTlRFR0VSIGZpbGVUaW1lOworICAgIGZpbGVUaW1lLkhpZ2hQYXJ0ID0gZmluZERh
dGEuZnRMYXN0V3JpdGVUaW1lLmR3SGlnaERhdGVUaW1lOworICAgIGZpbGVUaW1lLkxvd1BhcnQg
PSBmaW5kRGF0YS5mdExhc3RXcml0ZVRpbWUuZHdMb3dEYXRlVGltZTsKKworICAgIC8vIEluZm9y
bWF0aW9uIGFib3V0IGNvbnZlcnRpbmcgdGltZV90IHRvIEZpbGVUaW1lIGlzIGF2YWlsYWJsZSBh
dCBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvbXM3MjQyMjglMjh2PXZz
Ljg1JTI5LmFzcHgKKyAgICB0aW1lID0gZmlsZVRpbWUuUXVhZFBhcnQgLyAxMDAwMDAwMCAtIGtT
ZWNvbmRzRnJvbUZpbGVUaW1lVG9UaW1ldDsKK30KKworYm9vbCBnZXRGaWxlU2l6ZShjb25zdCBT
dHJpbmcmIHBhdGgsIGxvbmcgbG9uZyYgc2l6ZSkKK3sKKyAgICBXSU4zMl9GSU5EX0RBVEFXIGZp
bmREYXRhOworICAgIGlmICghZ2V0RmluZERhdGEocGF0aCwgZmluZERhdGEpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gZ2V0RmlsZVNpemVGcm9tRmluZERhdGEoZmluZERh
dGEsIHNpemUpOworfQorCitib29sIGdldEZpbGVTaXplKFBsYXRmb3JtRmlsZUhhbmRsZSBmaWxl
SGFuZGxlLCBsb25nIGxvbmcmIHNpemUpCit7CisgICAgQllfSEFORExFX0ZJTEVfSU5GT1JNQVRJ
T04gZmlsZUluZm9ybWF0aW9uOworICAgIGlmICghOjpHZXRGaWxlSW5mb3JtYXRpb25CeUhhbmRs
ZShmaWxlSGFuZGxlLCAmZmlsZUluZm9ybWF0aW9uKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgcmV0dXJuIGdldEZpbGVTaXplRnJvbUJ5SGFuZGxlRmlsZUluZm9ybWF0aW9uU3RydWN0
dXJlKGZpbGVJbmZvcm1hdGlvbiwgc2l6ZSk7Cit9CisKK09wdGlvbmFsPFdhbGxUaW1lPiBnZXRG
aWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgV0lOMzJfRklO
RF9EQVRBVyBmaW5kRGF0YTsKKyAgICBpZiAoIWdldEZpbmREYXRhKHBhdGgsIGZpbmREYXRhKSkK
KyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHRpbWVfdCB0aW1lID0gMDsKKyAg
ICBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZUZyb21GaW5kRGF0YShmaW5kRGF0YSwgdGltZSk7Cisg
ICAgcmV0dXJuIFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyh0aW1lKTsKK30KKworT3B0aW9uYWw8
V2FsbFRpbWU+IGdldEZpbGVDcmVhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAg
IFdJTjMyX0ZJTkRfREFUQVcgZmluZERhdGE7CisgICAgaWYgKCFnZXRGaW5kRGF0YShwYXRoLCBm
aW5kRGF0YSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICB0aW1lX3QgdGlt
ZSA9IDA7CisgICAgZ2V0RmlsZUNyZWF0aW9uVGltZUZyb21GaW5kRGF0YShmaW5kRGF0YSwgdGlt
ZSk7CisgICAgcmV0dXJuIFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyh0aW1lKTsKK30KKworc3Rh
dGljIFN0cmluZyBnZXRGaW5hbFBhdGhOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBh
dXRvIGhhbmRsZSA9IG9wZW5GaWxlKHBhdGgsIEZpbGVPcGVuTW9kZTo6UmVhZCk7CisgICAgaWYg
KCFpc0hhbmRsZVZhbGlkKGhhbmRsZSkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAg
IFZlY3RvcjxVQ2hhcj4gYnVmZmVyKE1BWF9QQVRIKTsKKyAgICBpZiAoOjpHZXRGaW5hbFBhdGhO
YW1lQnlIYW5kbGVXKGhhbmRsZSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSwgVk9MVU1F
X05BTUVfTlQpID49IE1BWF9QQVRIKSB7CisgICAgICAgIGNsb3NlRmlsZShoYW5kbGUpOworICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgfQorICAgIGNsb3NlRmlsZShoYW5kbGUpOworCisg
ICAgYnVmZmVyLnNocmluayh3Y3NsZW4oYnVmZmVyLmRhdGEoKSkpOworICAgIHJldHVybiBTdHJp
bmc6OmFkb3B0KFdURk1vdmUoYnVmZmVyKSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc1N5
bWJvbGljTGluayhXSU4zMl9GSU5EX0RBVEFXIGZpbmREYXRhKQoreworICAgIHJldHVybiBmaW5k
RGF0YS5kd0ZpbGVBdHRyaWJ1dGVzICYgRklMRV9BVFRSSUJVVEVfUkVQQVJTRV9QT0lOVCAmJiBm
aW5kRGF0YS5kd1Jlc2VydmVkMCA9PSBJT19SRVBBUlNFX1RBR19TWU1MSU5LOworfQorCitzdGF0
aWMgRmlsZU1ldGFkYXRhOjpUeXBlIHRvRmlsZU1ldGFkYXRhVHlwZShXSU4zMl9GSU5EX0RBVEFX
IGZpbmREYXRhKQoreworICAgIGlmIChmaW5kRGF0YS5kd0ZpbGVBdHRyaWJ1dGVzICYgRklMRV9B
VFRSSUJVVEVfRElSRUNUT1JZKQorICAgICAgICByZXR1cm4gRmlsZU1ldGFkYXRhOjpUeXBlOjpE
aXJlY3Rvcnk7CisgICAgaWYgKGlzU3ltYm9saWNMaW5rKGZpbmREYXRhKSkKKyAgICAgICAgcmV0
dXJuIEZpbGVNZXRhZGF0YTo6VHlwZTo6U3ltYm9saWNMaW5rOworICAgIHJldHVybiBGaWxlTWV0
YWRhdGE6OlR5cGU6OkZpbGU7Cit9CisKK3N0YXRpYyBPcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZp
bmREYXRhVG9GaWxlTWV0YWRhdGEoV0lOMzJfRklORF9EQVRBVyBmaW5kRGF0YSkKK3sKKyAgICBs
b25nIGxvbmcgbGVuZ3RoOworICAgIGlmICghZ2V0RmlsZVNpemVGcm9tRmluZERhdGEoZmluZERh
dGEsIGxlbmd0aCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICB0aW1lX3Qg
bW9kaWZpY2F0aW9uVGltZTsKKyAgICBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZUZyb21GaW5kRGF0
YShmaW5kRGF0YSwgbW9kaWZpY2F0aW9uVGltZSk7CisKKyAgICByZXR1cm4gRmlsZU1ldGFkYXRh
IHsKKyAgICAgICAgV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKG1vZGlmaWNhdGlvblRpbWUpLAor
ICAgICAgICBsZW5ndGgsCisgICAgICAgIHN0YXRpY19jYXN0PGJvb2w+KGZpbmREYXRhLmR3Rmls
ZUF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9ISURERU4pLAorICAgICAgICB0b0ZpbGVNZXRh
ZGF0YVR5cGUoZmluZERhdGEpCisgICAgfTsKK30KKworT3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBm
aWxlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIFdJTjMyX0ZJTkRfREFUQVcg
ZmluZERhdGE7CisgICAgaWYgKCFnZXRGaW5kRGF0YShwYXRoLCBmaW5kRGF0YSkpCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gZmluZERhdGFUb0ZpbGVNZXRhZGF0
YShmaW5kRGF0YSk7Cit9CisKK09wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhRm9s
bG93aW5nU3ltbGlua3MoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIFdJTjMyX0ZJTkRfREFU
QVcgZmluZERhdGE7CisgICAgaWYgKCFnZXRGaW5kRGF0YShwYXRoLCBmaW5kRGF0YSkpCisgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBpZiAoaXNTeW1ib2xpY0xpbmsoZmluZERh
dGEpKSB7CisgICAgICAgIFN0cmluZyB0YXJnZXRQYXRoID0gZ2V0RmluYWxQYXRoTmFtZShwYXRo
KTsKKyAgICAgICAgaWYgKHRhcmdldFBhdGguaXNOdWxsKCkpCisgICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICBpZiAoIWdldEZpbmREYXRhKHRhcmdldFBhdGgsIGZpbmRE
YXRhKSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgfQorCisgICAgcmV0
dXJuIGZpbmREYXRhVG9GaWxlTWV0YWRhdGEoZmluZERhdGEpOworfQorCitib29sIGNyZWF0ZVN5
bWJvbGljTGluayhjb25zdCBTdHJpbmcmIHRhcmdldFBhdGgsIGNvbnN0IFN0cmluZyYgc3ltYm9s
aWNMaW5rUGF0aCkKK3sKKyAgICByZXR1cm4gITo6Q3JlYXRlU3ltYm9saWNMaW5rVyhzdHJpbmdU
b051bGxUZXJtaW5hdGVkV0NoYXIoc3ltYm9saWNMaW5rUGF0aCkuZGF0YSgpLCBzdHJpbmdUb051
bGxUZXJtaW5hdGVkV0NoYXIodGFyZ2V0UGF0aCkuZGF0YSgpLCAwKTsKK30KKworYm9vbCBmaWxl
RXhpc3RzKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBXSU4zMl9GSU5EX0RBVEFXIGZpbmRE
YXRhOworICAgIHJldHVybiBnZXRGaW5kRGF0YShwYXRoLCBmaW5kRGF0YSk7Cit9CisKK2Jvb2wg
ZGVsZXRlRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgU3RyaW5nIGZpbGVuYW1lID0g
cGF0aDsKKyAgICByZXR1cm4gISFEZWxldGVGaWxlVyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0No
YXIoZmlsZW5hbWUpLmRhdGEoKSk7Cit9CisKK2Jvb2wgZGVsZXRlRW1wdHlEaXJlY3RvcnkoY29u
c3QgU3RyaW5nJiBwYXRoKQoreworICAgIFN0cmluZyBmaWxlbmFtZSA9IHBhdGg7CisgICAgcmV0
dXJuICEhUmVtb3ZlRGlyZWN0b3J5VyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoZmlsZW5h
bWUpLmRhdGEoKSk7Cit9CisKK2Jvb2wgbW92ZUZpbGUoY29uc3QgU3RyaW5nJiBvbGRQYXRoLCBj
b25zdCBTdHJpbmcmIG5ld1BhdGgpCit7CisgICAgU3RyaW5nIG9sZEZpbGVuYW1lID0gb2xkUGF0
aDsKKyAgICBTdHJpbmcgbmV3RmlsZW5hbWUgPSBuZXdQYXRoOworICAgIHJldHVybiAhITo6TW92
ZUZpbGVFeChzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIob2xkRmlsZW5hbWUpLmRhdGEoKSwg
c3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKG5ld0ZpbGVuYW1lKS5kYXRhKCksIE1PVkVGSUxF
X0NPUFlfQUxMT1dFRCB8IE1PVkVGSUxFX1JFUExBQ0VfRVhJU1RJTkcpOworfQorCitTdHJpbmcg
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5n
JiBjb21wb25lbnQpCit7CisgICAgVmVjdG9yPFVDaGFyPiBidWZmZXIoTUFYX1BBVEgpOworCisg
ICAgaWYgKHBhdGgubGVuZ3RoKCkgKyAxID4gYnVmZmVyLnNpemUoKSkKKyAgICAgICAgcmV0dXJu
IFN0cmluZygpOworCisgICAgU3RyaW5nVmlldyhwYXRoKS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29u
dmVydChidWZmZXIuZGF0YSgpKTsKKyAgICBidWZmZXJbcGF0aC5sZW5ndGgoKV0gPSAnXDAnOwor
CisgICAgaWYgKCFQYXRoQXBwZW5kVyhidWZmZXIuZGF0YSgpLCBzdHJpbmdUb051bGxUZXJtaW5h
dGVkV0NoYXIoY29tcG9uZW50KS5kYXRhKCkpKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisK
KyAgICBidWZmZXIuc2hyaW5rKHdjc2xlbihidWZmZXIuZGF0YSgpKSk7CisKKyAgICByZXR1cm4g
U3RyaW5nOjphZG9wdChXVEZNb3ZlKGJ1ZmZlcikpOworfQorCitTdHJpbmcgcGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50cyhTdHJpbmdWaWV3IHBhdGgsIGNvbnN0IFZlY3RvcjxTdHJpbmdWaWV3PiYg
Y29tcG9uZW50cykKK3sKKyAgICBTdHJpbmcgcmVzdWx0ID0gcGF0aC50b1N0cmluZygpOworICAg
IGZvciAoYXV0byYgY29tcG9uZW50IDogY29tcG9uZW50cykKKyAgICAgICAgcmVzdWx0ID0gcGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlc3VsdCwgY29tcG9uZW50LnRvU3RyaW5nKCkpOworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKKyNpZiAhVVNFKENGKQorCitDU3RyaW5nIGZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgYXV0byB1cGNvbnZlcnRl
ZENoYXJhY3RlcnMgPSBwYXRoLnVwY29udmVydGVkQ2hhcmFjdGVycygpOworCisgICAgY29uc3Qg
VUNoYXIqIGNoYXJhY3RlcnMgPSB1cGNvbnZlcnRlZENoYXJhY3RlcnM7CisgICAgaW50IHNpemUg
PSBXaWRlQ2hhclRvTXVsdGlCeXRlKENQX0FDUCwgMCwgY2hhcmFjdGVycywgcGF0aC5sZW5ndGgo
KSwgMCwgMCwgMCwgMCkgLSAxOworCisgICAgY2hhciogYnVmZmVyOworICAgIENTdHJpbmcgc3Ry
aW5nID0gQ1N0cmluZzo6bmV3VW5pbml0aWFsaXplZChzaXplLCBidWZmZXIpOworCisgICAgV2lk
ZUNoYXJUb011bHRpQnl0ZShDUF9BQ1AsIDAsIGNoYXJhY3RlcnMsIHBhdGgubGVuZ3RoKCksIGJ1
ZmZlciwgc2l6ZSwgMCwgMCk7CisKKyAgICByZXR1cm4gc3RyaW5nOworfQorCisjZW5kaWYgLy8g
IVVTRShDRikKKworYm9vbCBtYWtlQWxsRGlyZWN0b3JpZXMoY29uc3QgU3RyaW5nJiBwYXRoKQor
eworICAgIFN0cmluZyBmdWxsUGF0aCA9IHBhdGg7CisgICAgaWYgKFNIQ3JlYXRlRGlyZWN0b3J5
RXgoMCwgc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGZ1bGxQYXRoKS5kYXRhKCksIDApICE9
IEVSUk9SX1NVQ0NFU1MpIHsKKyAgICAgICAgRFdPUkQgZXJyb3IgPSBHZXRMYXN0RXJyb3IoKTsK
KyAgICAgICAgaWYgKGVycm9yICE9IEVSUk9SX0ZJTEVfRVhJU1RTICYmIGVycm9yICE9IEVSUk9S
X0FMUkVBRFlfRVhJU1RTKSB7CisgICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVh
dGUgcGF0aCAlcyIsIHBhdGguYXNjaWkoKS5kYXRhKCkpOworICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitTdHJpbmcgaG9t
ZURpcmVjdG9yeVBhdGgoKQoreworICAgIHJldHVybiAiIjsKK30KKworU3RyaW5nIHBhdGhHZXRG
aWxlTmFtZShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgcmV0dXJuIG51bGxUZXJtaW5hdGVk
V0NoYXJUb1N0cmluZyg6OlBhdGhGaW5kRmlsZU5hbWUoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdD
aGFyKHBhdGgpLmRhdGEoKSkpOworfQorCitTdHJpbmcgZGlyZWN0b3J5TmFtZShjb25zdCBTdHJp
bmcmIHBhdGgpCit7CisgICAgU3RyaW5nIG5hbWUgPSBwYXRoLmxlZnQocGF0aC5sZW5ndGgoKSAt
IHBhdGhHZXRGaWxlTmFtZShwYXRoKS5sZW5ndGgoKSk7CisgICAgaWYgKG5hbWUuY2hhcmFjdGVy
U3RhcnRpbmdBdChuYW1lLmxlbmd0aCgpIC0gMSkgPT0gJ1xcJykgeworICAgICAgICAvLyBSZW1v
dmUgYW55IHRyYWlsaW5nICJcIi4KKyAgICAgICAgbmFtZS50cnVuY2F0ZShuYW1lLmxlbmd0aCgp
IC0gMSk7CisgICAgfQorICAgIHJldHVybiBuYW1lOworfQorCitzdGF0aWMgU3RyaW5nIGJ1bmRs
ZU5hbWUoKQoreworICAgIHN0YXRpYyBjb25zdCBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IG5hbWUg
PSBbXSB7CisgICAgICAgIFN0cmluZyBuYW1lIHsgIldlYktpdCJfcyB9OworCisjaWYgVVNFKENG
KQorICAgICAgICBpZiAoQ0ZCdW5kbGVSZWYgYnVuZGxlID0gQ0ZCdW5kbGVHZXRNYWluQnVuZGxl
KCkpIHsKKyAgICAgICAgICAgIGlmIChDRlR5cGVSZWYgYnVuZGxlRXhlY3V0YWJsZSA9IENGQnVu
ZGxlR2V0VmFsdWVGb3JJbmZvRGljdGlvbmFyeUtleShidW5kbGUsIGtDRkJ1bmRsZUV4ZWN1dGFi
bGVLZXkpKSB7CisgICAgICAgICAgICAgICAgaWYgKENGR2V0VHlwZUlEKGJ1bmRsZUV4ZWN1dGFi
bGUpID09IENGU3RyaW5nR2V0VHlwZUlEKCkpCisgICAgICAgICAgICAgICAgICAgIG5hbWUgPSBy
ZWludGVycHJldF9jYXN0PENGU3RyaW5nUmVmPihidW5kbGVFeGVjdXRhYmxlKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorI2VuZGlmCisKKyAgICAgICAgcmV0dXJuIG5hbWU7CisgICAgfSgp
OworCisgICAgcmV0dXJuIG5hbWU7Cit9CisKK3N0YXRpYyBTdHJpbmcgc3RvcmFnZURpcmVjdG9y
eShEV09SRCBwYXRoSWRlbnRpZmllcikKK3sKKyAgICBWZWN0b3I8VUNoYXI+IGJ1ZmZlcihNQVhf
UEFUSCk7CisgICAgaWYgKEZBSUxFRChTSEdldEZvbGRlclBhdGhXKDAsIHBhdGhJZGVudGlmaWVy
IHwgQ1NJRExfRkxBR19DUkVBVEUsIDAsIDAsIGJ1ZmZlci5kYXRhKCkpKSkKKyAgICAgICAgcmV0
dXJuIFN0cmluZygpOworICAgIGJ1ZmZlci5yZXNpemUod2NzbGVuKGJ1ZmZlci5kYXRhKCkpKTsK
KyAgICBTdHJpbmcgZGlyZWN0b3J5ID0gU3RyaW5nOjphZG9wdChXVEZNb3ZlKGJ1ZmZlcikpOwor
CisgICAgZGlyZWN0b3J5ID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRpcmVjdG9yeSwgIkFw
cGxlIENvbXB1dGVyXFwiICsgYnVuZGxlTmFtZSgpKTsKKyAgICBpZiAoIW1ha2VBbGxEaXJlY3Rv
cmllcyhkaXJlY3RvcnkpKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICByZXR1cm4g
ZGlyZWN0b3J5OworfQorCitzdGF0aWMgU3RyaW5nIGNhY2hlZFN0b3JhZ2VEaXJlY3RvcnkoRFdP
UkQgcGF0aElkZW50aWZpZXIpCit7CisgICAgc3RhdGljIEhhc2hNYXA8RFdPUkQsIFN0cmluZz4g
ZGlyZWN0b3JpZXM7CisKKyAgICBIYXNoTWFwPERXT1JELCBTdHJpbmc+OjppdGVyYXRvciBpdCA9
IGRpcmVjdG9yaWVzLmZpbmQocGF0aElkZW50aWZpZXIpOworICAgIGlmIChpdCAhPSBkaXJlY3Rv
cmllcy5lbmQoKSkKKyAgICAgICAgcmV0dXJuIGl0LT52YWx1ZTsKKworICAgIFN0cmluZyBkaXJl
Y3RvcnkgPSBzdG9yYWdlRGlyZWN0b3J5KHBhdGhJZGVudGlmaWVyKTsKKyAgICBkaXJlY3Rvcmll
cy5hZGQocGF0aElkZW50aWZpZXIsIGRpcmVjdG9yeSk7CisKKyAgICByZXR1cm4gZGlyZWN0b3J5
OworfQorCitzdGF0aWMgU3RyaW5nIGdlbmVyYXRlVGVtcG9yYXJ5UGF0aChjb25zdCBGdW5jdGlv
bjxib29sKGNvbnN0IFN0cmluZyYpPiYgYWN0aW9uKQoreworICAgIHdjaGFyX3QgdGVtcFBhdGhb
TUFYX1BBVEhdOworICAgIGludCB0ZW1wUGF0aExlbmd0aCA9IDo6R2V0VGVtcFBhdGhXKFdURl9B
UlJBWV9MRU5HVEgodGVtcFBhdGgpLCB0ZW1wUGF0aCk7CisgICAgaWYgKHRlbXBQYXRoTGVuZ3Ro
IDw9IDAgfHwgdGVtcFBhdGhMZW5ndGggPiBXVEZfQVJSQVlfTEVOR1RIKHRlbXBQYXRoKSkKKyAg
ICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgU3RyaW5nIHByb3Bvc2VkUGF0aDsKKyAgICBk
byB7CisgICAgICAgIHdjaGFyX3QgdGVtcEZpbGVbXSA9IEwiWFhYWFhYWFgudG1wIjsgLy8gVXNl
IDguMyBzdHlsZSBuYW1lIChtb3JlIGNoYXJhY3RlcnMgYXJlbid0IGhlbHBmdWwgZHVlIHRvIDgu
MyBzaG9ydCBmaWxlIG5hbWVzKQorICAgICAgICBjb25zdCBpbnQgcmFuZG9tUGFydExlbmd0aCA9
IDg7CisgICAgICAgIGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tVmFsdWVzKHRlbXBGaWxlLCByYW5k
b21QYXJ0TGVuZ3RoICogc2l6ZW9mKHdjaGFyX3QpKTsKKworICAgICAgICAvLyBMaW1pdCB0byB2
YWxpZCBmaWxlc3lzdGVtIGNoYXJhY3RlcnMsIGFsc28gZXhjbHVkaW5nIG90aGVycyB0aGF0IGNv
dWxkIGJlIHByb2JsZW1hdGljLCBsaWtlIHB1bmN0dWF0aW9uLgorICAgICAgICAvLyBkb24ndCBp
bmNsdWRlIGJvdGggdXBwZXIgYW5kIGxvd2VyY2FzZSBzaW5jZSBXaW5kb3dzIGZpbGUgc3lzdGVt
cyBhcmUgdHlwaWNhbGx5IG5vdCBjYXNlIHNlbnNpdGl2ZS4KKyAgICAgICAgY29uc3QgY2hhciB2
YWxpZENoYXJzW10gPSAiMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IjsKKyAg
ICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCByYW5kb21QYXJ0TGVuZ3RoOyArK2kpCisgICAgICAg
ICAgICB0ZW1wRmlsZVtpXSA9IHZhbGlkQ2hhcnNbdGVtcEZpbGVbaV0gJSAoc2l6ZW9mKHZhbGlk
Q2hhcnMpIC0gMSldOworCisgICAgICAgIEFTU0VSVCh3Y3NsZW4odGVtcEZpbGUpID09IFdURl9B
UlJBWV9MRU5HVEgodGVtcEZpbGUpIC0gMSk7CisKKyAgICAgICAgcHJvcG9zZWRQYXRoID0gcGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG51bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmluZyh0ZW1wUGF0
aCksIG51bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmluZyh0ZW1wRmlsZSkpOworICAgICAgICBpZiAo
cHJvcG9zZWRQYXRoLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0gd2hpbGUg
KCFhY3Rpb24ocHJvcG9zZWRQYXRoKSk7CisKKyAgICByZXR1cm4gcHJvcG9zZWRQYXRoOworfQor
CitTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiwgUGxhdGZvcm1GaWxlSGFu
ZGxlJiBoYW5kbGUpCit7CisgICAgaGFuZGxlID0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7CisKKyAg
ICBTdHJpbmcgcHJvcG9zZWRQYXRoID0gZ2VuZXJhdGVUZW1wb3JhcnlQYXRoKFsmaGFuZGxlXShj
b25zdCBTdHJpbmcmIHByb3Bvc2VkUGF0aCkgeworICAgICAgICAvLyB1c2UgQ1JFQVRFX05FVyB0
byBhdm9pZCBvdmVyd3JpdGluZyBhbiBleGlzdGluZyBmaWxlIHdpdGggdGhlIHNhbWUgbmFtZQor
ICAgICAgICBoYW5kbGUgPSA6OkNyZWF0ZUZpbGVXKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hh
cihwcm9wb3NlZFBhdGgpLmRhdGEoKSwgR0VORVJJQ19SRUFEIHwgR0VORVJJQ19XUklURSwgMCwg
MCwgQ1JFQVRFX05FVywgRklMRV9BVFRSSUJVVEVfTk9STUFMLCAwKTsKKworICAgICAgICByZXR1
cm4gaXNIYW5kbGVWYWxpZChoYW5kbGUpIHx8IEdldExhc3RFcnJvcigpID09IEVSUk9SX0FMUkVB
RFlfRVhJU1RTOworICAgIH0pOworCisgICAgaWYgKCFpc0hhbmRsZVZhbGlkKGhhbmRsZSkpCisg
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIHJldHVybiBwcm9wb3NlZFBhdGg7Cit9CisK
K1BsYXRmb3JtRmlsZUhhbmRsZSBvcGVuRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVPcGVu
TW9kZSBtb2RlKQoreworICAgIERXT1JEIGRlc2lyZWRBY2Nlc3MgPSAwOworICAgIERXT1JEIGNy
ZWF0aW9uRGlzcG9zaXRpb24gPSAwOworICAgIERXT1JEIHNoYXJlTW9kZSA9IDA7CisgICAgc3dp
dGNoIChtb2RlKSB7CisgICAgY2FzZSBGaWxlT3Blbk1vZGU6OlJlYWQ6CisgICAgICAgIGRlc2ly
ZWRBY2Nlc3MgPSBHRU5FUklDX1JFQUQ7CisgICAgICAgIGNyZWF0aW9uRGlzcG9zaXRpb24gPSBP
UEVOX0VYSVNUSU5HOworICAgICAgICBzaGFyZU1vZGUgPSBGSUxFX1NIQVJFX1JFQUQ7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgRmlsZU9wZW5Nb2RlOjpXcml0ZToKKyAgICAgICAgZGVzaXJl
ZEFjY2VzcyA9IEdFTkVSSUNfV1JJVEU7CisgICAgICAgIGNyZWF0aW9uRGlzcG9zaXRpb24gPSBD
UkVBVEVfQUxXQVlTOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisKKyAgICBTdHJpbmcgZGVzdGluYXRpb24gPSBwYXRo
OworICAgIHJldHVybiBDcmVhdGVGaWxlKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihkZXN0
aW5hdGlvbikuZGF0YSgpLCBkZXNpcmVkQWNjZXNzLCBzaGFyZU1vZGUsIDAsIGNyZWF0aW9uRGlz
cG9zaXRpb24sIEZJTEVfQVRUUklCVVRFX05PUk1BTCwgMCk7Cit9CisKK3ZvaWQgY2xvc2VGaWxl
KFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKQoreworICAgIGlmIChpc0hhbmRsZVZhbGlkKGhh
bmRsZSkpIHsKKyAgICAgICAgOjpDbG9zZUhhbmRsZShoYW5kbGUpOworICAgICAgICBoYW5kbGUg
PSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOworICAgIH0KK30KKworbG9uZyBsb25nIHNlZWtG
aWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQsIEZpbGVTZWVr
T3JpZ2luIG9yaWdpbikKK3sKKyAgICBEV09SRCBtb3ZlTWV0aG9kID0gRklMRV9CRUdJTjsKKwor
ICAgIGlmIChvcmlnaW4gPT0gRmlsZVNlZWtPcmlnaW46OkN1cnJlbnQpCisgICAgICAgIG1vdmVN
ZXRob2QgPSBGSUxFX0NVUlJFTlQ7CisgICAgZWxzZSBpZiAob3JpZ2luID09IEZpbGVTZWVrT3Jp
Z2luOjpFbmQpCisgICAgICAgIG1vdmVNZXRob2QgPSBGSUxFX0VORDsKKworICAgIExBUkdFX0lO
VEVHRVIgbGFyZ2VPZmZzZXQ7CisgICAgbGFyZ2VPZmZzZXQuUXVhZFBhcnQgPSBvZmZzZXQ7CisK
KyAgICBsYXJnZU9mZnNldC5Mb3dQYXJ0ID0gU2V0RmlsZVBvaW50ZXIoaGFuZGxlLCBsYXJnZU9m
ZnNldC5Mb3dQYXJ0LCAmbGFyZ2VPZmZzZXQuSGlnaFBhcnQsIG1vdmVNZXRob2QpOworCisgICAg
aWYgKGxhcmdlT2Zmc2V0Lkxvd1BhcnQgPT0gSU5WQUxJRF9TRVRfRklMRV9QT0lOVEVSICYmIEdl
dExhc3RFcnJvcigpICE9IE5PX0VSUk9SKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICByZXR1
cm4gbGFyZ2VPZmZzZXQuUXVhZFBhcnQ7Cit9CisKK2ludCB3cml0ZVRvRmlsZShQbGF0Zm9ybUZp
bGVIYW5kbGUgaGFuZGxlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQoreworICAgIGlm
ICghaXNIYW5kbGVWYWxpZChoYW5kbGUpKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBEV09S
RCBieXRlc1dyaXR0ZW47CisgICAgYm9vbCBzdWNjZXNzID0gV3JpdGVGaWxlKGhhbmRsZSwgZGF0
YSwgbGVuZ3RoLCAmYnl0ZXNXcml0dGVuLCAwKTsKKworICAgIGlmICghc3VjY2VzcykKKyAgICAg
ICAgcmV0dXJuIC0xOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KGJ5dGVzV3JpdHRlbik7
Cit9CisKK2ludCByZWFkRnJvbUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY2hhciog
ZGF0YSwgaW50IGxlbmd0aCkKK3sKKyAgICBpZiAoIWlzSGFuZGxlVmFsaWQoaGFuZGxlKSkKKyAg
ICAgICAgcmV0dXJuIC0xOworCisgICAgRFdPUkQgYnl0ZXNSZWFkOworICAgIGJvb2wgc3VjY2Vz
cyA9IDo6UmVhZEZpbGUoaGFuZGxlLCBkYXRhLCBsZW5ndGgsICZieXRlc1JlYWQsIDApOworCisg
ICAgaWYgKCFzdWNjZXNzKQorICAgICAgICByZXR1cm4gLTE7CisgICAgcmV0dXJuIHN0YXRpY19j
YXN0PGludD4oYnl0ZXNSZWFkKTsKK30KKworYm9vbCBoYXJkTGlua09yQ29weUZpbGUoY29uc3Qg
U3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb24pCit7CisgICAgcmV0dXJu
ICEhOjpDb3B5RmlsZShzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoc291cmNlKS5kYXRhKCks
IHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihkZXN0aW5hdGlvbikuZGF0YSgpLCBUUlVFKTsK
K30KKworU3RyaW5nIGxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpCit7CisgICAg
cmV0dXJuIGNhY2hlZFN0b3JhZ2VEaXJlY3RvcnkoQ1NJRExfTE9DQUxfQVBQREFUQSk7Cit9CisK
K1N0cmluZyByb2FtaW5nVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpCit7CisgICAgcmV0
dXJuIGNhY2hlZFN0b3JhZ2VEaXJlY3RvcnkoQ1NJRExfQVBQREFUQSk7Cit9CisKK1ZlY3RvcjxT
dHJpbmc+IGxpc3REaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIGNvbnN0IFN0cmlu
ZyYgZmlsdGVyKQoreworICAgIFZlY3RvcjxTdHJpbmc+IGVudHJpZXM7CisKKyAgICBQYXRoV2Fs
a2VyIHdhbGtlcihkaXJlY3RvcnksIGZpbHRlcik7CisgICAgaWYgKCF3YWxrZXIuaXNWYWxpZCgp
KQorICAgICAgICByZXR1cm4gZW50cmllczsKKworICAgIGRvIHsKKyAgICAgICAgaWYgKHdhbGtl
ci5kYXRhKCkuZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWQorICAg
ICAgICAgICAgJiYgKCF3Y3NjbXAod2Fsa2VyLmRhdGEoKS5jRmlsZU5hbWUsIEwiLiIpIHx8ICF3
Y3NjbXAod2Fsa2VyLmRhdGEoKS5jRmlsZU5hbWUsIEwiLi4iKSkpCisgICAgICAgICAgICBjb250
aW51ZTsKKworICAgICAgICBlbnRyaWVzLmFwcGVuZChkaXJlY3RvcnkgKyAiXFwiICsgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBVQ2hhcio+KHdhbGtlci5kYXRhKCkuY0ZpbGVOYW1lKSk7CisgICAg
fSB3aGlsZSAod2Fsa2VyLnN0ZXAoKSk7CisKKyAgICByZXR1cm4gZW50cmllczsKK30KKworYm9v
bCBnZXRWb2x1bWVGcmVlU3BhY2UoY29uc3QgU3RyaW5nJiwgdWludDY0X3QmKQoreworICAgIHJl
dHVybiBmYWxzZTsKK30KKworT3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0
IENTdHJpbmcmIGZzRmlsZSkKK3sKKyAgICBhdXRvIGhhbmRsZSA9IG9wZW5GaWxlKGZzRmlsZS5k
YXRhKCksIEZpbGVPcGVuTW9kZTo6UmVhZCk7CisgICAgaWYgKCFpc0hhbmRsZVZhbGlkKGhhbmRs
ZSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBCWV9IQU5ETEVfRklMRV9J
TkZPUk1BVElPTiBmaWxlSW5mb3JtYXRpb24gPSB7IH07CisgICAgaWYgKCE6OkdldEZpbGVJbmZv
cm1hdGlvbkJ5SGFuZGxlKGhhbmRsZSwgJmZpbGVJbmZvcm1hdGlvbikpIHsKKyAgICAgICAgY2xv
c2VGaWxlKGhhbmRsZSk7CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgfQorCisg
ICAgY2xvc2VGaWxlKGhhbmRsZSk7CisKKyAgICByZXR1cm4gZmlsZUluZm9ybWF0aW9uLmR3Vm9s
dW1lU2VyaWFsTnVtYmVyOworfQorCitTdHJpbmcgcmVhbFBhdGgoY29uc3QgU3RyaW5nJiBmaWxl
UGF0aCkKK3sKKyAgICByZXR1cm4gZ2V0RmluYWxQYXRoTmFtZShmaWxlUGF0aCk7Cit9CisKK1N0
cmluZyBjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoKQoreworICAgIHJldHVybiBnZW5lcmF0ZVRl
bXBvcmFyeVBhdGgoW10oY29uc3QgU3RyaW5nJiBwcm9wb3NlZFBhdGgpIHsKKyAgICAgICAgcmV0
dXJuIG1ha2VBbGxEaXJlY3Rvcmllcyhwcm9wb3NlZFBhdGgpOworICAgIH0pOworfQorCitib29s
IGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5UGF0aCkKK3sK
KyAgICBTSEZJTEVPUFNUUlVDVCBkZWxldGVPcGVyYXRpb24gPSB7CisgICAgICAgIG51bGxwdHIs
CisgICAgICAgIEZPX0RFTEVURSwKKyAgICAgICAgc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFy
KGRpcmVjdG9yeVBhdGgpLmRhdGEoKSwKKyAgICAgICAgTCIiLAorICAgICAgICBGT0ZfTk9DT05G
SVJNQVRJT04gfCBGT0ZfTk9FUlJPUlVJIHwgRk9GX1NJTEVOVCwKKyAgICAgICAgZmFsc2UsCisg
ICAgICAgIDAsCisgICAgICAgIEwiIgorICAgIH07CisgICAgcmV0dXJuICFTSEZpbGVPcGVyYXRp
b24oJmRlbGV0ZU9wZXJhdGlvbik7Cit9CisKK30gLy8gbmFtZXNwYWNlIEZpbGVTeXN0ZW0KK30g
Ly8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvd2luL1BhdGhXYWxr
ZXIuY3BwIGIvU291cmNlL1dURi93dGYvd2luL1BhdGhXYWxrZXIuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM2
ZDNmOTcwNjA0OWNiMTNjOWVmNjM1NWViYjYzYTUwNzk4NTAyMjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi93aW4vUGF0aFdhbGtlci5jcHAKQEAgLTAsMCArMSw1MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDx3dGYvd2luL1BhdGhXYWxr
ZXIuaD4KKworI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5oPgorCituYW1lc3BhY2UgV1RGIHsKKworUGF0aFdh
bGtlcjo6UGF0aFdhbGtlcihjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgY29uc3QgU3RyaW5nJiBw
YXR0ZXJuKQoreworICAgIFN0cmluZyBwYXRoID0gZGlyZWN0b3J5ICsgIlxcIiArIHBhdHRlcm47
CisgICAgbV9oYW5kbGUgPSA6OkZpbmRGaXJzdEZpbGVXKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRX
Q2hhcihwYXRoKS5kYXRhKCksICZtX2RhdGEpOworfQorCitQYXRoV2Fsa2VyOjp+UGF0aFdhbGtl
cigpCit7CisgICAgaWYgKCFpc1ZhbGlkKCkpCisgICAgICAgIHJldHVybjsKKyAgICA6OkZpbmRD
bG9zZShtX2hhbmRsZSk7Cit9CisKK2Jvb2wgUGF0aFdhbGtlcjo6c3RlcCgpCit7CisgICAgcmV0
dXJuIDo6RmluZE5leHRGaWxlVyhtX2hhbmRsZSwgJm1fZGF0YSk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvd2luL1BhdGhXYWxrZXIuaCBiL1Nv
dXJjZS9XVEYvd3RmL3dpbi9QYXRoV2Fsa2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTUzYWUyZTZhZTg1NjFh
ZjM0NTRlMjE4Mzg4ZGY4OTAwNWVhMzNiYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYv
d3RmL3dpbi9QYXRoV2Fsa2VyLmgKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgPFdpbmRvd3MuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZS5oPgorCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3MgUGF0aFdhbGtl
ciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGF0aFdhbGtlcik7CitwdWJsaWM6CisgICAg
UGF0aFdhbGtlcihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5LCBjb25zdCBXVEY6OlN0cmlu
ZyYgcGF0dGVybik7CisgICAgflBhdGhXYWxrZXIoKTsKKworICAgIGJvb2wgaXNWYWxpZCgpIGNv
bnN0IHsgcmV0dXJuIG1faGFuZGxlICE9IElOVkFMSURfSEFORExFX1ZBTFVFOyB9CisgICAgY29u
c3QgV0lOMzJfRklORF9EQVRBVyYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQorCisg
ICAgYm9vbCBzdGVwKCk7CisKK3ByaXZhdGU6CisgICAgSEFORExFIG1faGFuZGxlOworICAgIFdJ
TjMyX0ZJTkRfREFUQVcgbV9kYXRhOworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAKaW5kZXggOTM1NjY1MDFh
OTllMTk4ODhiMWJkMzk1NDUyODgxYzQ3NDU1N2RmNi4uODE4ZjIyNGJkNTY0ODNjOGFkNjYwMmIz
MDJkNmFlMGI3MmRlZDFhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9DRE0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvQ0RNLmNwcApAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIkNETUZhY3RvcnkuaCIK
ICNpbmNsdWRlICJDRE1Qcml2YXRlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRl
ICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiSW5pdERhdGFSZWdpc3RyeS5oIgogI2luY2x1ZGUg
Ik1lZGlhS2V5c1JlcXVpcmVtZW50LmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKQEAgLTQy
LDYgKzQxLDcgQEAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNlY3Vy
aXR5T3JpZ2luRGF0YS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVkZSA8d3RmL0Zp
bGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5U2Vzc2lvbi5jcHAKaW5k
ZXggZTY2NmNlOTc5MzY3NDVlZGEwMTA2NjA3OTc4ZjZlOTgwOWZmMGIzOS4uNjVlZGRhMTZmNzk1
MGQyNDliY2Y3MzE2Mjg2MTUwODU0ZWYyODFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRN
ZWRpYUtleVNlc3Npb24uY3BwCkBAIC0zMCwxMyArMzAsMTMgQEAKIAogI2luY2x1ZGUgIkRvY3Vt
ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIK
ICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5EYXRhLmgiCiAjaW5j
bHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJXZWJLaXRNZWRpYUtleUVycm9yLmgiCiAjaW5j
bHVkZSAiV2ViS2l0TWVkaWFLZXlNZXNzYWdlRXZlbnQuaCIKICNpbmNsdWRlICJXZWJLaXRNZWRp
YUtleXMuaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01G
aWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxl
U3lzdGVtLmNwcAppbmRleCA2ZGQ0MTcxMzA4YWQ0NjdmMmE0YzI3YzljZTk3NzI5YjNmYWQ4Y2Y5
Li4zNjg3OTRlZjVjMWEwZmU3OThiMmExYmE1MDg4NmMwYjRmZWJjYjk0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwCkBAIC0y
NywxMiArMjcsMTIgQEAKICNpbmNsdWRlICJET01GaWxlU3lzdGVtLmgiCiAKICNpbmNsdWRlICJG
aWxlLmgiCi0jaW5jbHVkZSAiRmlsZU1ldGFkYXRhLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5o
IgogI2luY2x1ZGUgIkZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5oIgogI2luY2x1ZGUgIkZpbGVT
eXN0ZW1GaWxlRW50cnkuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAj
aW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkQ29waWVyLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVNZXRh
ZGF0YS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL1VVSUQu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRW50cnkuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1FbnRyeS5jcHAKaW5kZXgg
ZGNjYjVhMTE4NjNkOWJiMTBmMjg3ZDU3ZmRjMTM5YTBiOWIxYjExMS4uNDI0Y2NhMjZjZDRjN2I4
NjEwM2ZkNTIwZjFmZjcwZjBkYTAzNTFlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1FbnRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1FbnRyeS5jcHAKQEAgLTI5LDEwICsyOSwxMCBA
QAogI2luY2x1ZGUgIkRPTUV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIkRPTUZpbGVTeXN0ZW0uaCIK
ICNpbmNsdWRlICJFcnJvckNhbGxiYWNrLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2lu
Y2x1ZGUgIkZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW1F
bnRyeUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2lu
Y2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlm
aWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRl
bnRpZmllci5jcHAKaW5kZXggYzdmZGZkMGRkNjU0NWY4YzZmZTUzNDJmYjM2NDZmZTlhODQ2OTRi
OS4uYjQyOWIzZjI2YjkzNDZmYmIxZGFlN2VjNjUwZTQ2ZTI1NmRmYzhjOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50
aWZpZXIuY3BwCkBAIC0yOCw4ICsyOCw4IEBACiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFT
RSkKIAotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5o
IgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3Rv
cmUuY3BwCmluZGV4IDIxNzhjYzQyYTliNTExNDNjZTVkODVmNGQxMWY3YWIyNjA5MjRlYzcuLjI4
NWQ1MDJkYWU4MWE5YTc2OGFhMzRhMWQyNTZkZjUwNDdkNjFiZmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJ
REJCYWNraW5nU3RvcmUuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpZiBFTkFCTEUoSU5ERVhF
RF9EQVRBQkFTRSkKIAotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJJREJCaW5k
aW5nVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiSURCR2V0QWxsUmVjb3Jkc0RhdGEuaCIKICNpbmNs
dWRlICJJREJHZXRBbGxSZXN1bHQuaCIKQEAgLTU0LDYgKzUzLDcgQEAKICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0dsb2JhbE9iamVjdC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0
cm9uZ0lubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJ1Y3R1cmVJbmxpbmVz
Lmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0
cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQlRyYW5zYWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJUcmFuc2FjdGlv
bi5jcHAKaW5kZXggNzgxYjc5ZjYzYTA2MWQ1OGQxYzkyYTQxM2MyMWFmZGU2NTY0OTM2ZS4uYmVl
YTZiMTY3MDYyNGU1Yzk4MGYzMTY2MzRjMDM2NWRmZGViYzZjYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQlRyYW5zYWN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURC
VHJhbnNhY3Rpb24uY3BwCkBAIC0yNywxMyArMjcsMTMgQEAKIAogI2lmIEVOQUJMRShJTkRFWEVE
X0RBVEFCQVNFKQogCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIklEQkN1cnNv
ckluZm8uaCIKICNpbmNsdWRlICJJbmRleGVkREIuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAj
aW5jbHVkZSAiU1FMaXRlSURCQmFja2luZ1N0b3JlLmgiCiAjaW5jbHVkZSAiU1FMaXRlSURCQ3Vy
c29yLmgiCiAjaW5jbHVkZSAiU1FMaXRlVHJhbnNhY3Rpb24uaCIKKyNpbmNsdWRlIDx3dGYvRmls
ZVN5c3RlbS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgSURCU2VydmVyIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblBy
b2Nlc3NJREJTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hh
cmVkL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAKaW5kZXggNjFhZWI4ZjdkNzAxNTFiOTQyMjg1YWNk
Y2NmODFiZmIxZWE0MjYyNi4uZGQ5ZjVhZDI5MzE3YzVjZGM3NTg4MzJhYzZhMzcwYmRmOTVkZDg5
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lu
UHJvY2Vzc0lEQlNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lm
IEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2lu
Y2x1ZGUgIklEQkNvbm5lY3Rpb25Ub0NsaWVudC5oIgogI2luY2x1ZGUgIklEQkNvbm5lY3Rpb25U
b1NlcnZlci5oIgogI2luY2x1ZGUgIklEQkN1cnNvckluZm8uaCIKQEAgLTQwLDYgKzM5LDcgQEAK
ICNpbmNsdWRlICJJREJSZXN1bHREYXRhLmgiCiAjaW5jbHVkZSAiSURCVmFsdWUuaCIKICNpbmNs
dWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3
dGYvUnVuTG9vcC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKaW5kZXggZDk2
NTQxZWQ0OWY2OTM4MjRlZDFkZmM1MjUwODhkYWMzMmJjNTljNS4uNDA4ZjYyMjEyYWUyYjE3YjM4
YWMxOTA5ODk1MWEwZjA5MmQ0YjA0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcApAQCAtMzQsNyArMzQsNiBAQAog
I2luY2x1ZGUgIkRhdGFiYXNlTWFuYWdlci5oIgogI2luY2x1ZGUgIkRhdGFiYXNlTWFuYWdlckNs
aWVudC5oIgogI2luY2x1ZGUgIkRhdGFiYXNlVGhyZWFkLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3Rl
bS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJPcmlnaW5Mb2NrLmgiCiAjaW5j
bHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKQEAgLTQzLDYgKzQyLDcgQEAKICNpbmNsdWRlICJTUUxp
dGVGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiU1FMaXRlU3RhdGVtZW50LmgiCiAjaW5jbHVkZSAi
U1FMaXRlVHJhbnNhY3Rpb24uaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1
ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAj
aW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5Mb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvT3JpZ2luTG9jay5jcHAKaW5kZXggNDIzYjJlNjZkZGZhMTJjYzM0MGY2
MGZjZTU5ZDM1M2RmOTk4NjdmNC4uYTIxYmNkYjc4Mzg2YzgxMGVjNTk5NDFjMjc1ZjRlZmJhZmYy
M2ZiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9Pcmln
aW5Mb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL09yaWdp
bkxvY2suY3BwCkBAIC0yNiw4ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiT3JpZ2luTG9jay5oIgogCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgotCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIFN0cmluZyBPcmlnaW5Mb2NrOjpsb2NrRmlsZU5hbWVGb3JQYXRoKFN0cmlu
ZyBvcmlnaW5QYXRoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9PcmlnaW5Mb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL09y
aWdpbkxvY2suaAppbmRleCBhMTZlODRmMTQ4OWRhZjJlZThmNTA0NjE5ZDEzOTkzYjhkMzc1ZTEw
Li5lY2MyOWU4OTAyNWJkZjYyOTM5MmIxMDU5ZWY4ODcwZTZmOGY5MmYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL09yaWdpbkxvY2suaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL09yaWdpbkxvY2suaApAQCAtMjUsNyArMjUs
NyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRl
IDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3Rm
L1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL2NvY29hL0Rh
dGFiYXNlTWFuYWdlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9jb2NvYS9EYXRhYmFzZU1hbmFnZXJDb2NvYS5tbQppbmRleCA3Y2ZlOWZiMDYzMjY5MTgxZDQ0
ZjEzYzM4MzY4MjUzM2Q0ZTRkZmM5Li44ZDMyNTA3M2IwNGFjYTFkMzI4NDk2ZTE4MjgzMzhkZmVi
Y2FiZmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL2Nv
Y29hL0RhdGFiYXNlTWFuYWdlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvY29jb2EvRGF0YWJhc2VNYW5hZ2VyQ29jb2EubW0KQEAgLTI5LDcgKzI5LDcg
QEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiRGF0YWJhc2VNYW5hZ2VyLmgiCiAKLSNp
bXBvcnQgIkZpbGVTeXN0ZW0uaCIKKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IGYwNTQ2NWQwMzE3OTAzOWE1N2NkODg2YjZhMzdhOTU4MDI0
YzU4ZDQuLjhlM2NiMjBjNzg1MTA0NjdmMTcxZWE1ZmMzMzc3ZGNkNDRjNTFjZTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEz
MSw3ICsxMzEsNiBAQAogCQlBMTE3NUI1NzFGNkI0NzA1MDBDNEI5RjAgLyogRGVmYXVsdFNlYXJj
aFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBMTE3NUI1NTFGNkI0NzA1MDBDNEI5RjAgLyogRGVmYXVsdFNlYXJjaFByb3ZpZGVyLmggKi87
IH07CiAJCUExMTc1QjU4MUY2QjQ3MDUwMEM0QjlGMCAvKiBEZWZhdWx0U2VhcmNoUHJvdmlkZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTExNzVC
NTYxRjZCNDcwNTAwQzRCOUYwIC8qIERlZmF1bHRTZWFyY2hQcm92aWRlci5jcHAgKi87IH07CiAJ
CUExMTc1QjVBMUY2QjRBODQwMEM0QjlGMCAvKiBOU1Njcm9sbFZpZXdTUEkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMTc1QjU5MUY2QjRBODQwMEM0
QjlGMCAvKiBOU1Njcm9sbFZpZXdTUEkuaCAqLzsgfTsKLQkJQTFGNTVEQ0YxRjU1MjhFQzAwRURC
NzVGIC8qIE1ldGFkYXRhU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBMUY1NURDRTFGNTUyOEVDMDBFREI3NUYgLyogTWV0YWRhdGFTUEkuaCAqLzsg
fTsKIAkJQTFGNjNDOUYyMUE0REJGNzAwNkZCNDNCIC8qIFBhc3NLaXRTb2Z0TGluay5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFGNjNDOUQyMUE0REJG
NzAwNkZCNDNCIC8qIFBhc3NLaXRTb2Z0TGluay5oICovOyB9OwogCQlBMUY2M0NBMDIxQTREQkY3
MDA2RkI0M0IgLyogUGFzc0tpdFNvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTFGNjNDOUUyMUE0REJGNzAwNkZCNDNCIC8qIFBhc3NLaXRT
b2Z0TGluay5tbSAqLzsgfTsKIAkJQTMwRDQxMjExRjBERDBFQTAwQjcxOTU0IC8qIEtpbGxSaW5n
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMzBENDEx
RTFGMEREMEVBMDBCNzE5NTQgLyogS2lsbFJpbmcuaCAqLzsgfTsKQEAgLTI5MCw3ICsyODksNiBA
QAogCQlBMTE3NUI1NTFGNkI0NzA1MDBDNEI5RjAgLyogRGVmYXVsdFNlYXJjaFByb3ZpZGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IERlZmF1bHRTZWFyY2hQcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBMTE3NUI1NjFGNkI0NzA1MDBDNEI5RjAgLyogRGVmYXVsdFNlYXJjaFBy
b3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlZmF1bHRTZWFyY2hQcm92aWRlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExMTc1QjU5MUY2QjRBODQwMEM0QjlGMCAv
KiBOU1Njcm9sbFZpZXdTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTlNTY3JvbGxWaWV3U1BJLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUExRjU1RENFMUY1NTI4RUMwMEVEQjc1RiAvKiBN
ZXRhZGF0YVNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZXRhZGF0YVNQSS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBMUY2M0M5RDIxQTREQkY3MDA2RkI0M0IgLyogUGFzc0tpdFNvZnRM
aW5rLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhc3NLaXRTb2Z0TGluay5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBMUY2M0M5RTIxQTREQkY3MDA2RkI0M0IgLyogUGFzc0tpdFNvZnRMaW5r
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGFzc0tpdFNvZnRMaW5rLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBMzBENDExRTFGMEREMEVBMDBCNzE5NTQgLyogS2lsbFJpbmcu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gS2lsbFJpbmcuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ0NSw3ICs0NDMsNiBAQAogCQkJCUExMDI2NTg4MUY1Njc0
N0EwMEI0Qzg0NCAvKiBISVRvb2xib3hTUEkuaCAqLywKIAkJCQkwQzc3ODU3MjFGNDUxMzBGMDBG
NEVCQjYgLyogTG9va3VwU1BJLmggKi8sCiAJCQkJMEM3Nzg1NzMxRjQ1MTMwRjAwRjRFQkI2IC8q
IE1lZGlhUmVtb3RlU1BJLmggKi8sCi0JCQkJQTFGNTVEQ0UxRjU1MjhFQzAwRURCNzVGIC8qIE1l
dGFkYXRhU1BJLmggKi8sCiAJCQkJMEM3Nzg1NzQxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TQWNjZXNz
aWJpbGl0eVNQSS5oICovLAogCQkJCTFDQ0VFNEY2MjBEODc0M0YwMDQ3QjA5NyAvKiBOU0FwcGVh
cmFuY2VTUEkuaCAqLywKIAkJCQkwQzc3ODU3NTFGNDUxMzBGMDBGNEVCQjYgLyogTlNBcHBsaWNh
dGlvblNQSS5oICovLApAQCAtNjk1LDcgKzY5Miw2IEBACiAJCQkJMEM1QUY5MUQxRjQzQTRDNzAw
MkVBQzAyIC8qIE1lZGlhUGxheWVyU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzc3ODU4QzFG
NDUxMzBGMDBGNEVCQjYgLyogTWVkaWFSZW1vdGVTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBD
MDBDRkQ0MUY2OENFNDYwMEFBQzI2RCAvKiBNZWRpYVRpbWVBVkZvdW5kYXRpb24uaCBpbiBIZWFk
ZXJzICovLAotCQkJCUExRjU1RENGMUY1NTI4RUMwMEVEQjc1RiAvKiBNZXRhZGF0YVNQSS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEM1QUY5MUUxRjQzQTRDNzAwMkVBQzAyIC8qIE1vYmlsZUdlc3Rh
bHRTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBDMkRBMTQ5MUYzQkVCNDkwMERCQzMxNyAvKiBO
RUZpbHRlclNvdXJjZVNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEM3Nzg1OEQxRjQ1MTMwRjAw
RjRFQkI2IC8qIE5TQWNjZXNzaWJpbGl0eVNQSS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCA2YjFiZDI1OTI2ZjQyYmQ2NDYwMzJh
ZDkwNGE3ODdlNjliNzUwYWM5Li5mMTMwNzY4NDNmODgzMTZiYzM4YmQ4MGRhNzJmNDg5YTgyMzc2
MjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3JtTWFjLmNtYWtl
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTU4LDcg
KzU4LDYgQEAgbGlzdChBUFBFTkQgUEFMX1BVQkxJQ19IRUFERVJTCiAgICAgc3BpL21hYy9ISVRv
b2xib3hTUEkuaAogICAgIHNwaS9tYWMvTG9va3VwU1BJLmgKICAgICBzcGkvbWFjL01lZGlhUmVt
b3RlU1BJLmgKLSAgICBzcGkvbWFjL01ldGFkYXRhU1BJLmgKICAgICBzcGkvbWFjL05TQWNjZXNz
aWJpbGl0eVNQSS5oCiAgICAgc3BpL21hYy9OU0FwcGVhcmFuY2VTUEkuaAogICAgIHNwaS9tYWMv
TlNBcHBsaWNhdGlvblNQSS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3Nw
aS9tYWMvTWV0YWRhdGFTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9NZXRh
ZGF0YVNQSS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MTU1NDdjNmI4NTEwZTMw
NjE4ZTIyODJhZDViNzg0MDE2Y2EzNzIxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9NZXRhZGF0YVNQ
SS5oCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLQotI2luY2x1ZGUgPENvcmVTZXJ2
aWNlcy9Db3JlU2VydmljZXNQcml2Lmg+Ci0KLSNlbmRpZgotCi1XVEZfRVhURVJOX0NfQkVHSU4K
LQotQm9vbGVhbiBNREl0ZW1TZXRBdHRyaWJ1dGUoTURJdGVtUmVmLCBDRlN0cmluZ1JlZiBuYW1l
LCBDRlR5cGVSZWYgYXR0cik7Ci0KLVdURl9FWFRFUk5fQ19FTkQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMu
Y21ha2UKaW5kZXggODY2ZWE2YTU0YjlhNDJmODc4ZDRlMTliNjUwYTJjM2MzYmEyMDlhOS4uNGQ3
MmY5ZGVlZjgwZWI2ZTQ0NTY3OTczZDVjNmRjZmY2OTA1NWI4NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1N
YWMuY21ha2UKQEAgLTE4OSw3ICsxODksNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMK
ICAgICBwbGF0Zm9ybS9hdWRpby9tYWMvQ0FSaW5nQnVmZmVyLmNwcAogICAgIHBsYXRmb3JtL2F1
ZGlvL21hYy9GRlRGcmFtZU1hYy5jcHAKIAotICAgIHBsYXRmb3JtL2NmL0ZpbGVTeXN0ZW1DRi5j
cHAKICAgICBwbGF0Zm9ybS9jZi9LZXllZERlY29kZXJDRi5jcHAKICAgICBwbGF0Zm9ybS9jZi9L
ZXllZEVuY29kZXJDRi5jcHAKICAgICBwbGF0Zm9ybS9jZi9NYWluVGhyZWFkU2hhcmVkVGltZXJD
Ri5jcHAKQEAgLTIwMCw3ICsxOTksNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAg
ICBwbGF0Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbQogICAg
IHBsYXRmb3JtL2NvY29hL0NvcmVWaWRlb1NvZnRMaW5rLmNwcAogICAgIHBsYXRmb3JtL2NvY29h
L0ZpbGVNb25pdG9yQ29jb2EubW0KLSAgICBwbGF0Zm9ybS9jb2NvYS9GaWxlU3lzdGVtQ29jb2Eu
bW0KICAgICBwbGF0Zm9ybS9jb2NvYS9LZXlFdmVudENvY29hLm1tCiAgICAgcGxhdGZvcm0vY29j
b2EvTG9jYWxpemVkU3RyaW5nc0NvY29hLm1tCiAgICAgcGxhdGZvcm0vY29jb2EvTUlNRVR5cGVS
ZWdpc3RyeUNvY29hLm1tCkBAIC0zNDcsNyArMzQ1LDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9T
T1VSQ0VTCiAgICAgcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tCiAgICAgcGxhdGZvcm0vbWFj
L0RyYWdJbWFnZU1hYy5tbQogICAgIHBsYXRmb3JtL21hYy9FdmVudExvb3BNYWMubW0KLSAgICBw
bGF0Zm9ybS9tYWMvRmlsZVN5c3RlbU1hYy5tbQogICAgIHBsYXRmb3JtL21hYy9LZXlFdmVudE1h
Yy5tbQogICAgIHBsYXRmb3JtL21hYy9Mb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQubW0KICAg
ICBwbGF0Zm9ybS9tYWMvTG9nZ2luZ01hYy5tbQpAQCAtNDE4LDggKzQxNSw2IEBAIGxpc3QoQVBQ
RU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNv
dXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQogICAgIHBsYXRmb3JtL25ldHdv
cmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbQogCi0gICAgcGxhdGZvcm0vcG9zaXgvRmlsZVN5
c3RlbVBPU0lYLmNwcAotCiAgICAgcGxhdGZvcm0vdGV4dC9jZi9IeXBoZW5hdGlvbkNGLmNwcAog
CiAgICAgcGxhdGZvcm0vdGV4dC9tYWMvTG9jYWxlTWFjLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZv
cm1QbGF5U3RhdGlvbi5jbWFrZQppbmRleCA5MDM3NjAzOWI5Njk2ZTEzZjlkZWJjOWM0NzMwYTc5
MDM5OTc5NTUxLi42ZDQ0NTM1ZDk1OTg0YmU1ODgzM2U4OGY5NzFlNmE3MmYyZGJhYjIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtlCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1BsYXRmb3JtUGxheVN0YXRpb24uY21ha2UKQEAgLTYzLDcgKzYzLDYgQEAg
bGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vcGxheXN0YXRpb24vU2Ny
b2xsYmFyVGhlbWVQbGF5U3RhdGlvbi5jcHAKICAgICBwbGF0Zm9ybS9wbGF5c3RhdGlvbi9Vc2Vy
QWdlbnRQbGF5U3RhdGlvbi5jcHAKIAotICAgIHBsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJ
WC5jcHAKICAgICBwbGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQT1NJWC5jcHAKIAogICAgIHBs
YXRmb3JtL3RleHQvSHlwaGVuYXRpb24uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybVdpbi5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtlCmluZGV4
IDRmYWIzMDgyNjBlMDljODA1NDE5Yzg0YzdjYTgzNGQ4MWZiOTVjNjUuLmZjYjU3YTQ1YTVmNDFl
ZjNiZjY3MDM4NGZkYTIzZjNjZGE4NjE0ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtV2luLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtlCkBA
IC04NCw3ICs4NCw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3Jt
L3dpbi9EcmFnRGF0YVdpbi5jcHAKICAgICBwbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcAog
ICAgIHBsYXRmb3JtL3dpbi9FdmVudExvb3BXaW4uY3BwCi0gICAgcGxhdGZvcm0vd2luL0ZpbGVT
eXN0ZW1XaW4uY3BwCiAgICAgcGxhdGZvcm0vd2luL0dESU9iamVjdENvdW50ZXIuY3BwCiAgICAg
cGxhdGZvcm0vd2luL0dESVV0aWxpdGllcy5jcHAKICAgICBwbGF0Zm9ybS93aW4vS2V5RXZlbnRX
aW4uY3BwCkBAIC05Myw3ICs5Miw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAg
IHBsYXRmb3JtL3dpbi9NSU1FVHlwZVJlZ2lzdHJ5V2luLmNwcAogICAgIHBsYXRmb3JtL3dpbi9N
YWluVGhyZWFkU2hhcmVkVGltZXJXaW4uY3BwCiAgICAgcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRX
aW4uY3BwCi0gICAgcGxhdGZvcm0vd2luL1BhdGhXYWxrZXIuY3BwCiAgICAgcGxhdGZvcm0vd2lu
L1BsYXRmb3JtTW91c2VFdmVudFdpbi5jcHAKICAgICBwbGF0Zm9ybS93aW4vUGxhdGZvcm1TY3Jl
ZW5XaW4uY3BwCiAgICAgcGxhdGZvcm0vd2luL1BvcHVwTWVudVdpbi5jcHAKQEAgLTI0OCw3ICsy
NDYsNiBAQCBpZiAoVVNFX0NGKQogICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAg
ICAgICBsb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAogCi0gICAgICAgIHBs
YXRmb3JtL2NmL0ZpbGVTeXN0ZW1DRi5jcHAKICAgICAgICAgcGxhdGZvcm0vY2YvS2V5ZWREZWNv
ZGVyQ0YuY3BwCiAgICAgICAgIHBsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcAogICAgICAg
ICBwbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggMjc0YjA4
ODAwZTZiZGU0M2ZhN2I1MWFmYWY3NjRjYTFhOTQ3MGQ2Yy4uMGExZDY5ODcwYzBhOTQ2NjllZTdl
YzlmMWJhN2QyYzc3ODEzYzcwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE2MDAsNyArMTYwMCw2IEBA
IHBsYXRmb3JtL0ZpbGVDaG9vc2VyLmNwcAogcGxhdGZvcm0vRmlsZUhhbmRsZS5jcHAKIHBsYXRm
b3JtL0ZpbGVNb25pdG9yLmNwcAogcGxhdGZvcm0vRmlsZVN0cmVhbS5jcHAKLXBsYXRmb3JtL0Zp
bGVTeXN0ZW0uY3BwCiBwbGF0Zm9ybS9HZW5lcmljVGFza1F1ZXVlLmNwcAogcGxhdGZvcm0vTGF5
b3V0VW5pdC5jcHAKIHBsYXRmb3JtL0xlbmd0aC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0Cmlu
ZGV4IGM3MjgyNWFlZTUzY2M0MWVlM2FmNzgzYTAxMGI2Nzk4NWZlOWJhMDQuLjUxNDE3ZTRkMjQz
ZGMyNjM4MWVmZjM5ZjNkMGYxYTkxMDU3YmY2YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApA
QCAtMTgxLDcgKzE4MSw2IEBAIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1Nlc3Npb25NYWMuY3Bw
CiBwbGF0Zm9ybS9hdWRpby9tYWMvQ0FSaW5nQnVmZmVyLmNwcAogcGxhdGZvcm0vYXVkaW8vbWFj
L0ZGVEZyYW1lTWFjLmNwcAogCi1wbGF0Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3BwCiBwbGF0Zm9y
bS9jZi9LZXllZERlY29kZXJDRi5jcHAKIHBsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcAog
cGxhdGZvcm0vY2YvTWFpblRocmVhZFNoYXJlZFRpbWVyQ0YuY3BwCkBAIC0xOTMsNyArMTkyLDYg
QEAgcGxhdGZvcm0vY29jb2EvQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyQ29jb2EubW0gQG5v
LXVuaWZ5CiBwbGF0Zm9ybS9jb2NvYS9Db3JlVmlkZW9Tb2Z0TGluay5jcHAKIHBsYXRmb3JtL2Nv
Y29hL0RhdGFEZXRlY3RvcnNDb3JlU29mdExpbmsubW0KIHBsYXRmb3JtL2NvY29hL0ZpbGVNb25p
dG9yQ29jb2EubW0KLXBsYXRmb3JtL2NvY29hL0ZpbGVTeXN0ZW1Db2NvYS5tbQogcGxhdGZvcm0v
Y29jb2EvS2V5RXZlbnRDb2NvYS5tbQogcGxhdGZvcm0vY29jb2EvTG9jYWxpemVkU3RyaW5nc0Nv
Y29hLm1tCiBwbGF0Zm9ybS9jb2NvYS9NSU1FVHlwZVJlZ2lzdHJ5Q29jb2EubW0KQEAgLTQ0Nyw3
ICs0NDUsNiBAQCBwbGF0Zm9ybS9tYWMvQ3Vyc29yTWFjLm1tCiBwbGF0Zm9ybS9tYWMvRHJhZ0Rh
dGFNYWMubW0KIHBsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW0KIHBsYXRmb3JtL21hYy9FdmVu
dExvb3BNYWMubW0KLXBsYXRmb3JtL21hYy9GaWxlU3lzdGVtTWFjLm1tCiBwbGF0Zm9ybS9tYWMv
S2V5RXZlbnRNYWMubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9tYWMvUGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlTWFjLm1tIEBuby11bmlmeQogcGxhdGZvcm0vbWFjL0xvY2FsQ3VycmVudEdyYXBoaWNz
Q29udGV4dC5tbQpAQCAtNTQyLDggKzUzOSw2IEBAIHBsYXRmb3JtL25ldHdvcmsvbWFjL1VUSVV0
aWxpdGllcy5tbQogcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNP
cGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJM
UmVzcG9uc2UubW0KIAotcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcAotCiBwbGF0
Zm9ybS90ZXh0L2NmL0h5cGhlbmF0aW9uQ0YuY3BwCiAKIHBsYXRmb3JtL3RleHQvaW9zL0xvY2Fs
aXplZERhdGVDYWNoZS5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDRmNjZiMWFmMTQ5YzVlYWZmOTdiNWU0NzhkOTNlZWI1MzQw
YjMyYmQuLjYyYzQ0YjlhZDg2ODUzMGRhM2FkYTYwZmM5ZjJjOGUyNzA0N2FiYzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEy
NDcsNyArMTI0Nyw2IEBACiAJCTQ2NzMwMjAyMUM0RUZFNzgwMEJDQjM1NyAvKiBJZ25vcmVPcGVu
c0R1cmluZ1VubG9hZENvdW50SW5jcmVtZW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NzMwMjAxMUM0RUZFNjYwMEJDQjM1NyAvKiBJZ25vcmVP
cGVuc0R1cmluZ1VubG9hZENvdW50SW5jcmVtZW50ZXIuaCAqLzsgfTsKIAkJNDY4MkQyMDAxRjc5
NzgzMDAwQzg2M0RCIC8qIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgyRDFGRjFGNzk3ODIzMDBDODYzREIg
LyogU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjgzNDRFMDFFRERGQUFBMDBCNzc5NUIgLyogRE9NUmVj
dExpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
ODM0NERFMUVEREZBNUYwMEI3Nzk1QiAvKiBET01SZWN0TGlzdC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTQ2ODlGMUFGMTI2N0JBRTEwMEU4RDM4
MCAvKiBGaWxlTWV0YWRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2ODlGMUFFMTI2N0JBRTEwMEU4RDM4MCAvKiBGaWxlTWV0YWRhdGEuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkI2M0Y2QzFD
NkU4RDE5MDAyRTkxNEIgLyogSlNFdmVudFRhcmdldEN1c3RvbS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCNjNGNkIxQzZFOENERjAwMkU5MTRCIC8q
IEpTRXZlbnRUYXJnZXRDdXN0b20uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk0NkI5NTE5NTIwN0Q2MzM0MDBBN0QyREQgLyogQWJzdHJhY3RET01X
aW5kb3cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
Qjk1MThBMjA3RDYzMjgwMEE3RDJERCAvKiBBYnN0cmFjdERPTVdpbmRvdy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2Qjk1MTk2MjA3RDYzM0Ew
MEE3RDJERCAvKiBBYnN0cmFjdEZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NkI5NTE4RjIwN0Q2MzJCMDBBN0QyREQgLyogQWJzdHJhY3RGcmFt
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0x
NDM5LDcgKzE0MzgsNiBAQAogCQk1MTQzQjI2MzFEREQxNTIwMDAxNEZBQzYgLyogTGlua0ljb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNDNCMjYy
MURERDE0OTAwMDE0RkFDNiAvKiBMaW5rSWNvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxNDVCMTBBMUJDNDhFMkUwMEU4NjIxOSAvKiBJREJS
ZXNvdXJjZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxNDVCMTA4MUJDNDg5MEIwMEU4NjIxOSAvKiBJREJSZXNvdXJjZUlkZW50aWZp
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1
MTQ4NDUzRjFCQjlEMDdFMDA2QTcyRUQgLyogSURCRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNDg0NTNEMUJCOUQwNzYwMDZBNzJFRCAvKiBJ
REJFcnJvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
Ci0JCTUxNEIzRjczMEM3MjIwNDcwMDA1MzBERiAvKiBGaWxlU3lzdGVtLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTRCM0Y3MjBDNzIyMDQ3MDAwNTMw
REYgLyogRmlsZVN5c3RlbS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTUxNEM3NjRDMENFOTIzNEUwMDdFRjNDRCAvKiBBdXRoZW50aWNhdGlvbk1h
Yy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0Qzc2
NDIwQ0U5MjM0RTAwN0VGM0NEIC8qIEF1dGhlbnRpY2F0aW9uTWFjLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE0Qzc2NEUwQ0U5MjM0RTAwN0VG
M0NEIC8qIEZvcm1EYXRhU3RyZWFtTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MTRDNzY0NDBDRTkyMzRFMDA3RUYzQ0QgLyogRm9ybURhdGFTdHJl
YW1NYWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk1MTRDNzY2RTBDRTkyM0ExMDA3RUYzQ0QgLyogQ3JlZGVudGlhbC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0Qzc2NTkwQ0U5MjNBMTAwN0VGM0NE
IC8qIENyZWRlbnRpYWwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwpAQCAtNzcxMSw3ICs3NzA5LDYgQEAKIAkJNDY4MzQ0REMxRURERkE1RjAwQjc3OTVC
IC8qIERPTVJlY3RMaXN0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBET01SZWN0TGlzdC5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQ2ODM0NEREMUVEREZBNUYwMEI3Nzk1QiAvKiBET01SZWN0TGlzdC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01SZWN0TGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ2ODM0NERFMUVEREZBNUYwMEI3Nzk1QiAvKiBET01SZWN0TGlzdC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBET01SZWN0TGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk0Njg5RjFBRTEyNjdCQUUxMDBFOEQzODAgLyogRmlsZU1ldGFkYXRhLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbGVNZXRhZGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0NkI2M0Y2QjFDNkU4Q0RGMDAyRTkxNEIgLyogSlNFdmVudFRhcmdldEN1c3Rv
bS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0V2ZW50VGFyZ2V0Q3VzdG9t
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2Qjk1MThBMjA3RDYzMjgwMEE3RDJE
RCAvKiBBYnN0cmFjdERPTVdpbmRvdy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBBYnN0cmFjdERPTVdpbmRvdy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkI5
NTE4QzIwN0Q2MzI5MDBBN0QyREQgLyogUmVtb3RlRnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlRnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtODExNCw4ICs4MTExLDYgQEAKIAkJNTE0NUIxMDgxQkM0ODkwQjAwRTg2MjE5
IC8qIElEQlJlc291cmNlSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJREJSZXNvdXJjZUlkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTE0ODQ1M0MxQkI5RDA3NjAwNkE3MkVEIC8qIElEQkVycm9yLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElEQkVycm9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTE0ODQ1M0QxQkI5RDA3NjAwNkE3MkVEIC8qIElEQkVycm9yLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElEQkVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTUxNEIzRjcyMEM3MjIwNDcwMDA1MzBERiAvKiBGaWxlU3lzdGVtLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbGVTeXN0ZW0uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJNTE0QjNGNzUwQzcyMjA1NTAwMDUzMERGIC8qIEZpbGVTeXN0ZW1D
b2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZpbGVTeXN0
ZW1Db2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0Qzc2MzUwQ0U5MjI1
RTAwN0VGM0NEIC8qIEpTU1FMRXJyb3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNTUUxFcnJvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUx
NEM3NjM2MENFOTIyNUUwMDdFRjNDRCAvKiBKU1NRTFRyYW5zYWN0aW9uLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU1FMVHJhbnNhY3Rpb24uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MTRDNzY0MjBDRTkyMzRFMDA3RUYzQ0QgLyogQXV0aGVu
dGljYXRpb25NYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXV0aGVudGlj
YXRpb25NYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTgxNTQsOCArODE0OSw2
IEBACiAJCTUxNUUzN0Y0MUZBQTkzODgwMEQ3RjIyQSAvKiBTZXJ2aWNlV29ya2VyVHlwZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VydmljZVdvcmtlclR5cGVzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNUY3OTUxMUNGQ0EzQzcwMENDRUQ5MyAvKiBX
ZWJDb3JlQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV2ViQ29yZUNyb3NzVGhyZWFkQ29waWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTE1Rjc5NTIxQ0ZDQTNDNzAwQ0NFRDkzIC8qIFdlYkNvcmVDcm9zc1RocmVh
ZENvcGllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb3JlQ3Jvc3NU
aHJlYWRDb3BpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTE2MDMwMEEwQ0M0
MjUxMjAwQzhBQzI1IC8qIEZpbGVTeXN0ZW1QT1NJWC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBGaWxlU3lzdGVtUE9TSVguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk1MTYwMzA2QjBDQzQzNjIzMDBDOEFDMjUgLyogRmlsZVN5c3RlbUNGLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZpbGVTeXN0ZW1DRi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNjA3MTJCMUJEODMwNTMwMERCQzRGMiAvKiBU
cmFuc2FjdGlvbk9wZXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBU
cmFuc2FjdGlvbk9wZXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTYw
NzEyQzFCRDgzMDcyMDBEQkM0RjIgLyogSURCT2JqZWN0U3RvcmVJbmZvLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElEQk9iamVjdFN0b3JlSW5mby5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNjA3MTJEMUJEODMwNzIwMERCQzRGMiAvKiBJREJP
YmplY3RTdG9yZUluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSURCT2Jq
ZWN0U3RvcmVJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTI1Nyw3ICsx
MTI1MCw2IEBACiAJCUExQzJDNTc1MUZBMjg1MTYwMEJBNDZGQSAvKiBQYXltZW50U2Vzc2lvbi5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYXltZW50U2Vzc2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUExQzdGQUExMTMzQTVEMzUwMEQ2NzMyRCAvKiBKU1hQYXRoUmVzdWx0
Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTWFBhdGhS
ZXN1bHRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMUNCRUY2MzFG
OUYxMTI5MDAyOERFN0MgLyogTW9ja1BheW1lbnRNZXRob2QuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9j
a1BheW1lbnRNZXRob2QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTFDQzExNjIx
RTQ5M0QwMTAwRUZBNjlDIC8qIEZpbGVTeXN0ZW1NYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBGaWxlU3lzdGVtTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBMUNDNTY0QzFGNDYxNDUwMDBBNDU1NUIgLyogSlNQYXltZW50TWV0aG9kRGF0
YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1BheW1lbnRNZXRob2REYXRh
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExQ0M1NjREMUY0NjE0NTEwMEE0NTU1
QiAvKiBKU1BheW1lbnRNZXRob2REYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTUGF5bWVudE1ldGhvZERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBMUNDNTY0RTFGNDYxNDUyMDBBNDU1NUIgLyogSlNQYXltZW50Q29tcGxldGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQYXltZW50Q29tcGxldGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzNDQ0LDcgKzEzNDM2LDYgQEAKIAkJQzU1OTJG
NzcxQTkyQUEyODAwMUY4ODYyIC8qIENoYXJhY3RlclByb3BlcnRpZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQ2hhcmFjdGVyUHJvcGVydGllcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDNTVDN0JBMDE3MThBRkJBMDAxMzI3RTQgLyogUmVuZGVyVGhlbWVJ
T1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZW5kZXJUaGVt
ZUlPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzU3MkVFMUQxMjAxQzlCQzAw
N0Q4RjgyIC8qIEpTSURCSW5kZXguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNJREJJbmRleC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDNTdGRURFMDEyMTJF
RTlDMDA5N0JFNjUgLyogRmlsZVN5c3RlbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBGaWxlU3lzdGVtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QzU4NUE2NjAxMUQ0RkFDNTAwNEMzRTRCIC8qIElEQkJpbmRpbmdVdGlsaXRpZXMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSURCQmluZGluZ1V0aWxpdGllcy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1ODVBNjYxMTFENEZBQzUwMDRDM0U0QiAv
KiBJREJCaW5kaW5nVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IElEQkJpbmRpbmdVdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzU4
NUE2NkIxMUQ0RkIwNzAwNEMzRTRCIC8qIEpTSURCRGF0YWJhc2UuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNJREJEYXRhYmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTY3NzgsNyArMTY3NjksNiBAQAogCQkxQUU0MkY2NzBBQTRCOENCMDBDODYxMkQg
LyogY2YgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTUx
NjAzMDZCMENDNDM2MjMwMEM4QUMyNSAvKiBGaWxlU3lzdGVtQ0YuY3BwICovLAogCQkJCTUxN0E2
M0JGMUI3NDMxN0UwMEU3RENEQyAvKiBLZXllZERlY29kZXJDRi5jcHAgKi8sCiAJCQkJNTE3QTYz
QzAxQjc0MzE3RTAwRTdEQ0RDIC8qIEtleWVkRGVjb2RlckNGLmggKi8sCiAJCQkJNTE3QTYzQzEx
Qjc0MzE3RTAwRTdEQ0RDIC8qIEtleWVkRW5jb2RlckNGLmNwcCAqLywKQEAgLTE3MTczLDEwICsx
NzE2MywxMCBAQAogCQkJCTFDRUNCM0I2MjFGNTBBQzcwMEY0NDU0MiAvKiBXSExTTE1ldGFsQ29k
ZUdlbmVyYXRvci5oICovLAogCQkJCTFDRUNCM0I4MjFGNTBEMTAwMEY0NDU0MiAvKiBXSExTTE5h
dGl2ZUZ1bmN0aW9uV3JpdGVyLmNwcCAqLywKIAkJCQkxQ0VDQjNCOTIxRjUwRDEwMDBGNDQ1NDIg
LyogV0hMU0xOYXRpdmVGdW5jdGlvbldyaXRlci5oICovLAotCQkJCTFDRUNCM0IxMjFGMkI5ODUw
MEY0NDU0MiAvKiBXSExTTFR5cGVOYW1lci5jcHAgKi8sCi0JCQkJMUNFQ0IzQjAyMUYyQjk4NTAw
RjQ0NTQyIC8qIFdITFNMVHlwZU5hbWVyLmggKi8sCiAJCQkJMUNFQ0IzQzYyMUY1OUM4NzAwRjQ0
NTQyIC8qIFdITFNMTmF0aXZlVHlwZVdyaXRlci5jcHAgKi8sCiAJCQkJMUNFQ0IzQzcyMUY1OUM4
NzAwRjQ0NTQyIC8qIFdITFNMTmF0aXZlVHlwZVdyaXRlci5oICovLAorCQkJCTFDRUNCM0IxMjFG
MkI5ODUwMEY0NDU0MiAvKiBXSExTTFR5cGVOYW1lci5jcHAgKi8sCisJCQkJMUNFQ0IzQjAyMUYy
Qjk4NTAwRjQ0NTQyIC8qIFdITFNMVHlwZU5hbWVyLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IE1l
dGFsOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTE4NzQwLDE0ICsxODczMCw2IEBA
CiAJCQlwYXRoID0gbWFjOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKLQkJNTE2
MDMwMDkwQ0M0MjQ1NDAwQzhBQzI1IC8qIHBvc2l4ICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7
Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQk1MTYwMzAwQTBDQzQyNTEyMDBDOEFDMjUgLyogRmlsZVN5
c3RlbVBPU0lYLmNwcCAqLywKLQkJCSk7Ci0JCQlwYXRoID0gcG9zaXg7Ci0JCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOwotCQl9OwogCQk1MTYwRjQ5MjBCMEFBNzE1MDBDMUQyQUYgLyogbWFjICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTIwMTA4LDcgKzIw
MDkwLDYgQEAKIAkJCQlBN0NGQjNENDBCN0VEMTE4MDA3MEMzMkQgLyogRHJhZ0ltYWdlTWFjLm1t
ICovLAogCQkJCUUxQkE2NkYwMTc0MkJEODYwMEMyMDI1MSAvKiBEeW5hbWljTGlua2VySW50ZXJw
b3NpbmcuaCAqLywKIAkJCQkxQ0ExOUUwMzBEQzI1NTk1MDA2NUE5OTQgLyogRXZlbnRMb29wTWFj
Lm1tICovLAotCQkJCUExQ0MxMTYyMUU0OTNEMDEwMEVGQTY5QyAvKiBGaWxlU3lzdGVtTWFjLm1t
ICovLAogCQkJCTkzNUM0NzZFMDlBQzRENzMwMEE2QUFCNCAvKiBLZXlFdmVudE1hYy5tbSAqLywK
IAkJCQlGNDRBNUY1NzFGRUQzODMwMDA3RjU5NDQgLyogTGVnYWN5TlNQYXN0ZWJvYXJkVHlwZXMu
aCAqLywKIAkJCQkwNkU4MUVENjBBQjVENUU5MDBDODc4MzcgLyogTG9jYWxDdXJyZW50R3JhcGhp
Y3NDb250ZXh0LmggKi8sCkBAIC0yMjU1OCw3ICsyMjUzOSw2IEBACiAJCQkJN0M3OTQxRTMxQzU2
QzI5MzAwQTRDNThFIC8qIERhdGFEZXRlY3RvcnNDb3JlU29mdExpbmsuaCAqLywKIAkJCQk3Qzc5
NDFFMjFDNTZDMjkzMDBBNEM1OEUgLyogRGF0YURldGVjdG9yc0NvcmVTb2Z0TGluay5tbSAqLywK
IAkJCQk3QTA5Q0VGMDFGMDFEMUY3MDBFOTNCREIgLyogRmlsZU1vbml0b3JDb2NvYS5tbSAqLywK
LQkJCQk1MTRCM0Y3NTBDNzIyMDU1MDAwNTMwREYgLyogRmlsZVN5c3RlbUNvY29hLm1tICovLAog
CQkJCUE1Qzk3NENGMTE0ODVGRjEwMDY2RjJBQiAvKiBLZXlFdmVudENvY29hLmggKi8sCiAJCQkJ
QTVDOTc0RDAxMTQ4NUZGMTAwNjZGMkFCIC8qIEtleUV2ZW50Q29jb2EubW0gKi8sCiAJCQkJMUE0
ODMyQjIxQTk1M0JBNjAwOEI0REZFIC8qIExvY2FsaXplZFN0cmluZ3NDb2NvYS5tbSAqLywKQEAg
LTI1NDAxLDcgKzI1MzgxLDYgQEAKIAkJCQkwNzIyMUI5MjE3Q0YwQUQ0MDA4NDhFNTEgLyogbWVk
aWFzdHJlYW0gKi8sCiAJCQkJNTlDNzdGMTAxMDU0NTkxQzAwNTA2MTA0IC8qIG1vY2sgKi8sCiAJ
CQkJNjU2Qjg0RDcwQUVBMUNFOTAwQTA5NUI0IC8qIG5ldHdvcmsgKi8sCi0JCQkJNTE2MDMwMDkw
Q0M0MjQ1NDAwQzhBQzI1IC8qIHBvc2l4ICovLAogCQkJCTFBMkU2RTU2MENDNTUxRTAwMDRBMjA2
MiAvKiBzcWwgKi8sCiAJCQkJQjJDM0Q5RUMwRDAwNkMxRDAwRUY2RjI2IC8qIHRleHQgKi8sCiAJ
CQkJRTE4ODIzNUYyMDMxRjUwRjAwQjQyREYzIC8qIHZyICovLApAQCAtMjU0NDYsMTQgKzI1NDI1
LDExIEBACiAJCQkJMDY2Qzc3MkEwQUI2MDNCNzAwMjM4Q0M0IC8qIEZpbGVDaG9vc2VyLmggKi8s
CiAJCQkJNTM1MUQ0QUUxREY5MTZBQzAwODAxMENEIC8qIEZpbGVIYW5kbGUuY3BwICovLAogCQkJ
CTUzNTFENEFGMURGOTE2QUMwMDgwMTBDRCAvKiBGaWxlSGFuZGxlLmggKi8sCi0JCQkJNDY4OUYx
QUUxMjY3QkFFMTAwRThEMzgwIC8qIEZpbGVNZXRhZGF0YS5oICovLAogCQkJCTdBMDlDRUVCMUYw
MUNDOTMwMEU5M0JEQiAvKiBGaWxlTW9uaXRvci5jcHAgKi8sCiAJCQkJN0EwOUNFRUMxRjAxQ0M5
MzAwRTkzQkRCIC8qIEZpbGVNb25pdG9yLmggKi8sCiAJCQkJMkVGMUJGRTgxMjFDOUY0MjAwQzI3
NjI3IC8qIEZpbGVTdHJlYW0uY3BwICovLAogCQkJCTJFRjFCRkU5MTIxQzlGNDIwMEMyNzYyNyAv
KiBGaWxlU3RyZWFtLmggKi8sCiAJCQkJMkVGMUJGRjgxMjFDQjBDRTAwQzI3NjI3IC8qIEZpbGVT
dHJlYW1DbGllbnQuaCAqLywKLQkJCQlDNTdGRURFMDEyMTJFRTlDMDA5N0JFNjUgLyogRmlsZVN5
c3RlbS5jcHAgKi8sCi0JCQkJNTE0QjNGNzIwQzcyMjA0NzAwMDUzMERGIC8qIEZpbGVTeXN0ZW0u
aCAqLywKIAkJCQlCQzA3M0JBOTBDMzk5QjFGMDAwRjU5NzkgLyogRmxvYXRDb252ZXJzaW9uLmgg
Ki8sCiAJCQkJQ0Q0QkU1MjkxQ0UxMzQyNTAwOUQ4N0RBIC8qIEdlbmVyaWNUYXNrUXVldWUuY3Bw
ICovLAogCQkJCUNENjJGQjk0MUFGMDE4RTcwMDEyRUQ3RCAvKiBHZW5lcmljVGFza1F1ZXVlLmgg
Ki8sCkBAIC0yOTE0Miw3ICsyOTExOCw2IEBACiAJCQkJRjU1QjNEQkUxMjUxRjEyRDAwM0VGMjY5
IC8qIEZpbGVJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3NkQ2Qzg2MTIyQjhBM0Qw
MDFGRDFGNyAvKiBGaWxlTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODM1RDU0QzUxRjRERTUz
ODAwRTYwNjcxIC8qIEZpbGVMaXN0Q3JlYXRvci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDY4OUYx
QUYxMjY3QkFFMTAwRThEMzgwIC8qIEZpbGVNZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
N0EwOUNFRjExRjAyMDY5QjAwRTkzQkRCIC8qIEZpbGVNb25pdG9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQk5NzZENkM4OTEyMkI4QTNEMDAxRkQxRjcgLyogRmlsZVJlYWRlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMkU3NTg0MUUxMjc3OUFEQTAwNjI2MjhCIC8qIEZpbGVSZWFkZXJMb2FkZXIuaCBp
biBIZWFkZXJzICovLApAQCAtMjkxNTAsNyArMjkxMjUsNiBAQAogCQkJCTJFREYzNjlEMTIyQzk0
QjQwMDJGN0Q0RSAvKiBGaWxlUmVhZGVyU3luYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkVGMUJG
RUIxMjFDOUY0MjAwQzI3NjI3IC8qIEZpbGVTdHJlYW0uaCBpbiBIZWFkZXJzICovLAogCQkJCTJF
RjFCRkY5MTIxQ0IwQ0UwMEMyNzYyNyAvKiBGaWxlU3RyZWFtQ2xpZW50LmggaW4gSGVhZGVycyAq
LywKLQkJCQk1MTRCM0Y3MzBDNzIyMDQ3MDAwNTMwREYgLyogRmlsZVN5c3RlbS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJODNGQjMzNzExRjUwOEE1NDAwOTg2RTU0IC8qIEZpbGVTeXN0ZW1EaXJlY3Rv
cnlFbnRyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODMwMzM1MDIxRjU0OTA1NzAwNERGNzA3IC8q
IEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzMDMzNTAz
MUY1NDkwNUEwMDRERjcwNyAvKiBGaWxlU3lzdGVtRW50cmllc0NhbGxiYWNrLmggaW4gSGVhZGVy
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0dDQ29udHJvbGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuY3BwCmluZGV4
IGQyNTFkMmVjZTFmMThiMjQwYTg4YmJmYjNhMjJjMmMyNGY4MGY2Y2QuLjhhODNjNGI2ZjZmNTk2
MDdkZmE3NzA0ODQyOWQwMmIxZTQyOTczM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0dDQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvR0NDb250cm9sbGVyLmNwcApAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUgIkdDQ29udHJv
bGxlci5oIgogCiAjaW5jbHVkZSAiQ29tbW9uVk0uaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgi
CiAjaW5jbHVkZSAiSlNIVE1MRG9jdW1lbnQuaCIKICNpbmNsdWRlICJMb2NhdGlvbi5oIgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXAuaD4KQEAgLTM2LDYgKzM1LDcgQEAKICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9WTS5oPgogI2luY2x1ZGUgPHBhbC9Mb2dnaW5nLmg+CiAjaW5jbHVk
ZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1
ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW0uY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW0uY3BwCmluZGV4IGEzZWNjNWE1Yzll
MGYzMGQ3NjAzMjgxN2YwZDQ2Mzk2MzNmZjFhOGIuLjU5Zjk3ODZlZDhjZmE2NDllMDdkZGI3ZDg4
NGFjOTI0MzI5NzYzOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNm
ZXJJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbS5jcHAK
QEAgLTM2LDExICszNiwxMSBAQAogI2luY2x1ZGUgIkRhdGFUcmFuc2Zlckl0ZW1MaXN0LmgiCiAj
aW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJGaWxlLmgiCi0jaW5jbHVkZSAiRmlsZVN5
c3RlbS5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5oIgogI2luY2x1ZGUg
IkZpbGVTeXN0ZW1GaWxlRW50cnkuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0
LmgiCiAjaW5jbHVkZSAiU3RyaW5nQ2FsbGJhY2suaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3Rl
bS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudFRhcmdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3Bw
CmluZGV4IGMzNzkxMGU2NmZlODMzNDk3YjJlNmEwMzc1ZDBkZTAxYmMyNDJiNjAuLjdhZTUzNDQ5
ZmQwMGVlNjc5ZTc3NDI3ZDdmNjYzNTBjODcyZTdmOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudFRhcmdldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFy
Z2V0LmNwcApAQCAtNTEsOCArNTEsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXVzaW5n
IG5hbWVzcGFjZSBXVEY7Ci0KIGJvb2wgRXZlbnRUYXJnZXQ6OmlzTm9kZSgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2Nv
YS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQppbmRleCA5NzIxN2YxZDc1ZDBlNTQ2ZmNmODQzMWUy
ZDRhZjhiYTU0M2FiNjFjLi4yNTRhMzY4ZmE3NzRhZDYzNzJkNDZmMTUzYzVhOTVjNGVlMjQyOGM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFk
ZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRS
ZWFkZXJDb2NvYS5tbQpAQCAtMzcsNyArMzcsNiBAQAogI2ltcG9ydCAiRWRpdG9yLmgiCiAjaW1w
b3J0ICJFZGl0b3JDbGllbnQuaCIKICNpbXBvcnQgIkZpbGUuaCIKLSNpbXBvcnQgIkZpbGVTeXN0
ZW0uaCIKICNpbXBvcnQgIkZyYW1lLmgiCiAjaW1wb3J0ICJGcmFtZUxvYWRlci5oIgogI2ltcG9y
dCAiRnJhbWVMb2FkZXJDbGllbnQuaCIKQEAgLTY1LDYgKzY0LDcgQEAKICNpbXBvcnQgIldlYk5T
QXR0cmlidXRlZFN0cmluZ0V4dHJhcy5oIgogI2ltcG9ydCAibWFya3VwLmgiCiAjaW1wb3J0IDxw
YWwvc3BpL2NvY29hL05TQXR0cmlidXRlZFN0cmluZ1NQSS5oPgorI2ltcG9ydCA8d3RmL0ZpbGVT
eXN0ZW0uaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgogI2ltcG9ydCA8d3RmL1VSTFBh
cnNlci5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcAppbmRleCBiNzNmY2RlNzlmNDYwNzkyYzky
NmMwNzVmYmFhZjY2NDhhNzI0MTMxLi5hZGIzMGM5MzNjYTJmYjI1Y2VmNWQwY2E0MTM2NTYwYmJh
NmQ4MTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAKQEAgLTI3LDExICsyNywxMSBAQAogI2lu
Y2x1ZGUgIkZpbGUuaCIKIAogI2luY2x1ZGUgIkJsb2JVUkwuaCIKLSNpbmNsdWRlICJGaWxlTWV0
YWRhdGEuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdp
c3RyeS5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVCbG9iUmVnaXN0cnkuaCIKICNpbmNsdWRlIDx3
dGYvRGF0ZU1hdGguaD4KKyNpbmNsdWRlIDx3dGYvRmlsZU1ldGFkYXRhLmg+CisjaW5jbHVkZSA8
d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxl
Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVDb2NvYS5tbQppbmRleCAyMGJl
NmY3YWVkZWNhNzUzNDgzNTYzYjFiZTRmOTA2MmZhNDM4YTAzLi42NjRmOWE1MzYxM2RmMjZjYTE3
YzcwN2MyMWI1MGM2NDY0NTIwNGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0ZpbGVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVDb2NvYS5tbQpA
QCAtMjgsNyArMjgsNyBAQAogCiAjaWYgRU5BQkxFKEZJTEVfUkVQTEFDRU1FTlQpCiAKLSNpbXBv
cnQgIkZpbGVTeXN0ZW0uaCIKKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKICNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCA8TW9iaWxlQ29yZVNlcnZpY2VzL01vYmlsZUNvcmVT
ZXJ2aWNlcy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKaW5kZXggMDNhZjNh
OTYzNDk0ZmFmMDAxMmUyMWE5MzhmNTE5MTc4MDMwODUwOC4uOTk4ZjllZmE5NGUyYTc1MjE2YmI0
ZjM5YTc5Njg2NDljMTMxN2RkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxl
SW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3Bw
CkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiRmlsZS5oIgogI2luY2x1ZGUgIkZpbGVMaXN0
LmgiCiAjaW5jbHVkZSAiRmlsZUxpc3RDcmVhdG9yLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5o
IgogI2luY2x1ZGUgIkZvcm1Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNs
dWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCkBAIC00Myw2ICs0Miw3IEBACiAjaW5jbHVkZSAiU2V0
dGluZ3MuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJ
bmRpY2F0b3IuaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9J
c29NYWxsb2NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvRmlsZUxpc3RDcmVhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUxpc3RDcmVh
dG9yLmNwcAppbmRleCA3NmY1NjU5NzBhZDFkZDhkODEwNmMyNWE1NzllNDU5MWJhYmQ0OWI4Li4x
NTU2ZmMyOTljYjIzNzNiMGM1OTg5NTIwYTcyYzMxMTZjZTM5ZWE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0ZpbGVMaXN0Q3JlYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9GaWxlTGlzdENyZWF0b3IuY3BwCkBAIC0yOCw5ICsyOCw5IEBACiAKICNpbmNsdWRlICJG
aWxlQ2hvb3Nlci5oIgogI2luY2x1ZGUgIkZpbGVMaXN0LmgiCi0jaW5jbHVkZSAiRmlsZU1ldGFk
YXRhLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVh
ZENvcGllci5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlTWV0YWRhdGEuaD4KKyNpbmNsdWRlIDx3dGYv
RmlsZVN5c3RlbS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCmluZGV4
IDc1NWYxYTI5YWQ3YzU3Y2NjM2JlYTVlZmEyNTViNjU2YmJkY2MzMDkuLjhhMzNlODg3MGNjMzZi
YzZkZTJmY2E4ZDFkNThjNGNjYTZiOGYzZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcApAQCAtMzMsNyArMzMs
NiBAQAogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAiRE9NQXBwbGljYXRp
b25DYWNoZS5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVt
LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1
ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCkBAIC00NCw2ICs0Myw3IEBACiAjaW5jbHVkZSAiUmVz
b3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTdWJyZXNv
dXJjZUxvYWRlci5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3Rm
L1VVSUQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKaW5kZXgg
ZTgxNDgzYzM2MjNjZDAzNDI0NDQ4NGNkMGY1ZmRjOTI0OTU1YWUzMi4uODJhZGZmMzAzMzVhMmUy
YmI5Y2FhN2I0ZjY2ODg0ZDA5MGU3OTU2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBAIC0zMCwx
MiArMzAsMTIgQEAKICNpbmNsdWRlICJBcHBsaWNhdGlvbkNhY2hlR3JvdXAuaCIKICNpbmNsdWRl
ICJBcHBsaWNhdGlvbkNhY2hlSG9zdC5oIgogI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZS5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJTUUxpdGVEYXRhYmFz
ZVRyYWNrZXIuaCIKICNpbmNsdWRlICJTUUxpdGVTdGF0ZW1lbnQuaCIKICNpbmNsdWRlICJTUUxp
dGVUcmFuc2FjdGlvbi5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAi
U2VjdXJpdHlPcmlnaW5EYXRhLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNs
dWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUg
PHd0Zi9VVUlELmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCBkYjE3N2U4ZGFlOGM2MGU2ZTcxODIy
OWZiM2MwM2QzNmRmZmQ1NDUyLi4yNmEyNTgxOWMxYTc3NDFkMTJjZDk2NDYyOWFkMTU5Nzk5ODZk
MGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTUxLDcgKzUxLDYgQEAKICNpbmNsdWRlICJFdmVu
dC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJFeHRlbnNpb25TdHlsZVNo
ZWV0cy5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJGb2N1c0NvbnRyb2xs
ZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xp
ZW50LmgiCkBAIC0xMjIsNiArMTIxLDcgQEAKICNpbmNsdWRlICJXZWJHTFN0YXRlVHJhY2tlci5o
IgogI2luY2x1ZGUgIldoZWVsRXZlbnREZWx0YUZpbHRlci5oIgogI2luY2x1ZGUgIldpZGdldC5o
IgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRM
ZWFrQ291bnRlci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9CYXNlNjQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJp
dHlPcmlnaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKaW5k
ZXggYjU4ZmFhYTE2N2E5NjcyNmFhMjExZmUxZjAyNzRiYzY2ZTk2MTY1Yi4uM2FkOTIxY2M1NGRl
MWZlZmUzZDE1NzFmMjJlMjUzMjEyYThkZTIwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0
eU9yaWdpbi5jcHAKQEAgLTMwLDE1ICszMCwxNSBAQAogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2lu
LmgiCiAKICNpbmNsdWRlICJCbG9iVVJMLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgotI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJTY2hlbWVSZWdpc3RyeS5oIgogI2luY2x1ZGUg
IlNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCiAjaW5jbHVkZSAi
VGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAj
aW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwCmluZGV4IDA1Zjhi
MTlkYWU1ODc5ZDBjZGZkYTdjNzY0OWVjYTJiNDRjMzk4YTYuLjQzMGNiOGIwYjNhYzM2Y2NhOTYx
MWUwYTFmMDllMzVhZTEwYjBkOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2Vj
dXJpdHlPcmlnaW5EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3Jp
Z2luRGF0YS5jcHAKQEAgLTI3LDkgKzI3LDkgQEAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbkRh
dGEuaCIKIAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgog
I2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRl
IDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
Q29uY2F0ZW5hdGVOdW1iZXJzLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9GaWxlSGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlSGFuZGxlLmgKaW5k
ZXggZDExODMwODY5NjNkMjEyMzdiOTBiMWE4MjU4NWI3NjViYmMxM2RmMi4uNTBkODI0Y2FlZTli
YTEyNDA5ODQzNWVhNzIxNWQxNTE3ODdkYmNlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vRmlsZUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVI
YW5kbGUuaApAQCAtMjgsOSArMjgsOCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkZp
bGVTeXN0ZW0uaCIKLQogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3Rm
L0ZpbGVTeXN0ZW0uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlTWV0YWRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0ZpbGVNZXRhZGF0YS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZDg4NDk1
M2U3Njc1ZDkyYzA2MzhkZWNhZDg1N2NkNDFhNTljNTYxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVNZXRh
ZGF0YS5oCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0g
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAot
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5j
bHVkZSA8d3RmL1dhbGxUaW1lLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IEZp
bGVNZXRhZGF0YSB7Ci0gICAgLy8gVGhlIGxhc3QgbW9kaWZpY2F0aW9uIHRpbWUgb2YgdGhlIGZp
bGUsIGluIHNlY29uZHMuCi0gICAgV2FsbFRpbWUgbW9kaWZpY2F0aW9uVGltZTsKLQotICAgIC8v
IFRoZSBsZW5ndGggb2YgdGhlIGZpbGUgaW4gYnl0ZXMuCi0gICAgbG9uZyBsb25nIGxlbmd0aDsK
LQotICAgIGJvb2wgaXNIaWRkZW47Ci0KLSAgICBlbnVtIGNsYXNzIFR5cGUgeyBGaWxlLCBEaXJl
Y3RvcnksIFN5bWJvbGljTGluayB9OwotICAgIFR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJl
YW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN0cmVhbS5jcHAKaW5kZXggZWE5
MTczNzRiNGM4YjRhNGVhMDQzYzI5YWJmNTQzMTU5MjJhODllMi4uODkzYmIzMzk0NzZjZWZkYThk
ZjEwYmM5MjBjMGIzNTgyNTE5MTU3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vRmlsZVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN0cmVh
bS5jcHAKQEAgLTI5LDEwICsyOSw4IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotCiAj
aW5jbHVkZSAiRmlsZVN0cmVhbS5oIgogCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9GaWxlU3RyZWFtLmgKaW5kZXggYWEwMTFlYTIzZTE4NTRjNGI5MDIwNTk2MjUz
NzYxM2ExYWI2ZTEyYi4uYTJmYjhlNWZhYTI1NGJjOGU1Y2NlOWUxYjRjNjYzMWI4ZDFhMDU0YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN0cmVhbS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0uaApAQCAtMjgsMTAgKzI4LDkgQEAKICAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBGaWxlU3RyZWFtX2gKLSNkZWZpbmUgRmlsZVN0
cmVhbV9oCisjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRl
IDx3dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTY0LDUgKzYz
LDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8v
IEZpbGVTdHJlYW1faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5
c3RlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWQ5ZDM3YWFhMTMxNjI4M2RhN2VmMjI0NmIzY2E5NDEw
YWQyNWQyMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDM2NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRmls
ZVN5c3RlbS5oIgotCi0jaW5jbHVkZSAiRmlsZU1ldGFkYXRhLmgiCi0jaW5jbHVkZSA8d3RmL0hl
eE51bWJlci5oPgotI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+Ci0KLSNpZiAhT1Mo
V0lORE9XUykKLSNpbmNsdWRlIDxmY250bC5oPgotI2luY2x1ZGUgPHN5cy9tbWFuLmg+Ci0jaW5j
bHVkZSA8c3lzL3N0YXQuaD4KLSNpbmNsdWRlIDx1bmlzdGQuaD4KLSNlbmRpZgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBGaWxlU3lzdGVtIHsKLQotLy8gVGhlIGZvbGxvd2lu
ZyBsb3dlci1BU0NJSSBjaGFyYWN0ZXJzIG5lZWQgZXNjYXBpbmcgdG8gYmUgdXNlZCBpbiBhIGZp
bGVuYW1lCi0vLyBhY3Jvc3MgYWxsIHN5c3RlbXMsIGluY2x1ZGluZyBXaW5kb3dzOgotLy8gICAg
IC0gVW5wcmludGFibGUgQVNDSUkgKDAwLTFGKQotLy8gICAgIC0gU3BhY2UgICAgICAgICAgICAg
KDIwKQotLy8gICAgIC0gRG91YmxlIHF1b3RlICAgICAgKDIyKQotLy8gICAgIC0gUGVyY2VudCAg
ICAgICAgICAgKDI1KSAoZXNjYXBlZCBiZWNhdXNlIGl0IGlzIG91ciBlc2NhcGUgY2hhcmFjdGVy
KQotLy8gICAgIC0gQXN0ZXJpc2sgICAgICAgICAgKDJBKQotLy8gICAgIC0gU2xhc2ggICAgICAg
ICAgICAgKDJGKQotLy8gICAgIC0gQ29sb24gICAgICAgICAgICAgKDNBKQotLy8gICAgIC0gTGVz
cy10aGFuICAgICAgICAgKDNDKQotLy8gICAgIC0gR3JlYXRlci10aGFuICAgICAgKDNFKQotLy8g
ICAgIC0gUXVlc3Rpb24gTWFyayAgICAgKDNGKQotLy8gICAgIC0gQmFja3NsYXNoICAgICAgICAg
KDVDKQotLy8gICAgIC0gUGlwZSAgICAgICAgICAgICAgKDdDKQotLy8gICAgIC0gRGVsZXRlICAg
ICAgICAgICAgKDdGKQotCi1zdGF0aWMgY29uc3QgYm9vbCBuZWVkc0VzY2FwaW5nWzEyOF0gPSB7
Ci0gICAgLyogMDAtMDcgKi8gdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVl
LCAgdHJ1ZSwgIHRydWUsIAotICAgIC8qIDA4LTBGICovIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRy
dWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAKLQotICAgIC8qIDEwLTE3ICovIHRydWUs
ICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAKLSAgICAv
KiAxOC0xRiAqLyB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVl
LCAgdHJ1ZSwgCi0KLSAgICAvKiAyMC0yNyAqLyB0cnVlLCAgZmFsc2UsIHRydWUsICBmYWxzZSwg
ZmFsc2UsIHRydWUsICBmYWxzZSwgZmFsc2UsIAotICAgIC8qIDI4LTJGICovIGZhbHNlLCBmYWxz
ZSwgdHJ1ZSwgIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCAKLSAgICAKLSAgICAv
KiAzMC0zNyAqLyBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxz
ZSwgZmFsc2UsIAotICAgIC8qIDM4LTNGICovIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgIGZhbHNlLCB0
cnVlLCAgZmFsc2UsIHRydWUsICB0cnVlLCAKLSAgICAKLSAgICAvKiA0MC00NyAqLyBmYWxzZSwg
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIAotICAgIC8q
IDQ4LTRGICovIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNl
LCBmYWxzZSwKLSAgICAKLSAgICAvKiA1MC01NyAqLyBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxz
ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIAotICAgIC8qIDU4LTVGICovIGZhbHNlLCBm
YWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCAgZmFsc2UsIGZhbHNlLCBmYWxzZSwKLSAgICAKLSAg
ICAvKiA2MC02NyAqLyBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBm
YWxzZSwgZmFsc2UsIAotICAgIC8qIDY4LTZGICovIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNl
LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKLSAgICAKLSAgICAvKiA3MC03NyAqLyBmYWxz
ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIAotICAg
IC8qIDc4LTdGICovIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCAgZmFsc2UsIGZh
bHNlLCB0cnVlLCAKLX07Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRFc2NhcGVVQ2hhcihV
Q2hhciBjaGFyYWN0ZXIsIFVDaGFyIHByZXZpb3VzQ2hhcmFjdGVyLCBVQ2hhciBuZXh0Q2hhcmFj
dGVyKQotewotICAgIGlmIChjaGFyYWN0ZXIgPD0gMTI3KQotICAgICAgICByZXR1cm4gbmVlZHNF
c2NhcGluZ1tjaGFyYWN0ZXJdOwotCi0gICAgaWYgKFUxNl9JU19MRUFEKGNoYXJhY3RlcikgJiYg
IVUxNl9JU19UUkFJTChuZXh0Q2hhcmFjdGVyKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAg
ICBpZiAoVTE2X0lTX1RSQUlMKGNoYXJhY3RlcikgJiYgIVUxNl9JU19MRUFEKHByZXZpb3VzQ2hh
cmFjdGVyKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0K
LVN0cmluZyBlbmNvZGVGb3JGaWxlTmFtZShjb25zdCBTdHJpbmcmIGlucHV0U3RyaW5nKQotewot
ICAgIHVuc2lnbmVkIGxlbmd0aCA9IGlucHV0U3RyaW5nLmxlbmd0aCgpOwotICAgIGlmICghbGVu
Z3RoKQotICAgICAgICByZXR1cm4gaW5wdXRTdHJpbmc7Ci0KLSAgICBTdHJpbmdCdWlsZGVyIHJl
c3VsdDsKLSAgICByZXN1bHQucmVzZXJ2ZUNhcGFjaXR5KGxlbmd0aCk7Ci0KLSAgICBVQ2hhciBw
cmV2aW91c0NoYXJhY3RlcjsKLSAgICBVQ2hhciBjaGFyYWN0ZXIgPSAwOwotICAgIFVDaGFyIG5l
eHRDaGFyYWN0ZXIgPSBpbnB1dFN0cmluZ1swXTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgcHJldmlvdXNDaGFyYWN0ZXIgPSBjaGFyYWN0ZXI7
Ci0gICAgICAgIGNoYXJhY3RlciA9IG5leHRDaGFyYWN0ZXI7Ci0gICAgICAgIG5leHRDaGFyYWN0
ZXIgPSBpICsgMSA8IGxlbmd0aCA/IGlucHV0U3RyaW5nW2kgKyAxXSA6IDA7Ci0KLSAgICAgICAg
aWYgKHNob3VsZEVzY2FwZVVDaGFyKGNoYXJhY3RlciwgcHJldmlvdXNDaGFyYWN0ZXIsIG5leHRD
aGFyYWN0ZXIpKSB7Ci0gICAgICAgICAgICBpZiAoY2hhcmFjdGVyIDw9IDI1NSkgewotICAgICAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyUnKTsKLSAgICAgICAgICAgICAgICBhcHBlbmRCeXRl
QXNIZXgoY2hhcmFjdGVyLCByZXN1bHQpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiJSsiKTsKLSAgICAgICAgICAgICAgICBhcHBl
bmRCeXRlQXNIZXgoY2hhcmFjdGVyID4+IDgsIHJlc3VsdCk7Ci0gICAgICAgICAgICAgICAgYXBw
ZW5kQnl0ZUFzSGV4KGNoYXJhY3RlciwgcmVzdWx0KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fSBlbHNlCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKGNoYXJhY3Rlcik7Ci0gICAgfQotCi0g
ICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOwotfQotCi1TdHJpbmcgZGVjb2RlRnJvbUZpbGVu
YW1lKGNvbnN0IFN0cmluZyYgaW5wdXRTdHJpbmcpCi17Ci0gICAgdW5zaWduZWQgbGVuZ3RoID0g
aW5wdXRTdHJpbmcubGVuZ3RoKCk7Ci0gICAgaWYgKCFsZW5ndGgpCi0gICAgICAgIHJldHVybiBp
bnB1dFN0cmluZzsKLQotICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OwotICAgIHJlc3VsdC5yZXNl
cnZlQ2FwYWNpdHkobGVuZ3RoKTsKLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5n
dGg7ICsraSkgewotICAgICAgICBpZiAoaW5wdXRTdHJpbmdbaV0gIT0gJyUnKSB7Ci0gICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKGlucHV0U3RyaW5nW2ldKTsKLSAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gSWYgdGhlIGlucHV0IHN0cmluZyBpcyBhIHZhbGlk
IGVuY29kZWQgZmlsZW5hbWUsIGl0IG11c3QgYmUgYXQgbGVhc3QgMiBjaGFyYWN0ZXJzIGxvbmdl
cgotICAgICAgICAvLyB0aGFuIHRoZSBjdXJyZW50IGluZGV4IHRvIGFjY291bnQgZm9yIHRoaXMg
cGVyY2VudCBlbmNvZGVkIHZhbHVlLgotICAgICAgICBpZiAoaSArIDIgPj0gbGVuZ3RoKQotICAg
ICAgICAgICAgcmV0dXJuIHsgfTsKLQotICAgICAgICBpZiAoaW5wdXRTdHJpbmdbaSsxXSAhPSAn
KycpIHsKLSAgICAgICAgICAgIGlmICghaXNBU0NJSUhleERpZ2l0KGlucHV0U3RyaW5nW2kgKyAx
XSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICAgICAgICAgIGlmICghaXNBU0NJ
SUhleERpZ2l0KGlucHV0U3RyaW5nW2kgKyAyXSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHsg
fTsKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQodG9BU0NJSUhleFZhbHVlKGlucHV0U3RyaW5n
W2kgKyAxXSwgaW5wdXRTdHJpbmdbaSArIDJdKSk7Ci0gICAgICAgICAgICBpICs9IDI7Ci0gICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIElmIHRoZSBpbnB1dCBz
dHJpbmcgaXMgYSB2YWxpZCBlbmNvZGVkIGZpbGVuYW1lLCBpdCBtdXN0IGJlIGF0IGxlYXN0IDUg
Y2hhcmFjdGVycyBsb25nZXIKLSAgICAgICAgLy8gdGhhbiB0aGUgY3VycmVudCBpbmRleCB0byBh
Y2NvdW50IGZvciB0aGlzIHBlcmNlbnQgZW5jb2RlZCB2YWx1ZS4KLSAgICAgICAgaWYgKGkgKyA1
ID49IGxlbmd0aCkKLSAgICAgICAgICAgIHJldHVybiB7IH07Ci0KLSAgICAgICAgaWYgKCFpc0FT
Q0lJSGV4RGlnaXQoaW5wdXRTdHJpbmdbaSArIDJdKSkKLSAgICAgICAgICAgIHJldHVybiB7IH07
Ci0gICAgICAgIGlmICghaXNBU0NJSUhleERpZ2l0KGlucHV0U3RyaW5nW2kgKyAzXSkpCi0gICAg
ICAgICAgICByZXR1cm4geyB9OwotICAgICAgICBpZiAoIWlzQVNDSUlIZXhEaWdpdChpbnB1dFN0
cmluZ1tpICsgNF0pKQotICAgICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICAgICAgaWYgKCFpc0FT
Q0lJSGV4RGlnaXQoaW5wdXRTdHJpbmdbaSArIDVdKSkKLSAgICAgICAgICAgIHJldHVybiB7IH07
Ci0KLSAgICAgICAgcmVzdWx0LmFwcGVuZCh0b0FTQ0lJSGV4VmFsdWUoaW5wdXRTdHJpbmdbaSAr
IDJdLCBpbnB1dFN0cmluZ1tpICsgM10pIDw8IDggfCB0b0FTQ0lJSGV4VmFsdWUoaW5wdXRTdHJp
bmdbaSArIDRdLCBpbnB1dFN0cmluZ1tpICsgNV0pKTsKLSAgICAgICAgaSArPSA1OwotICAgIH0K
LQotICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKLX0KLQotU3RyaW5nIGxhc3RDb21wb25l
bnRPZlBhdGhJZ25vcmluZ1RyYWlsaW5nU2xhc2goY29uc3QgU3RyaW5nJiBwYXRoKQotewotI2lm
IE9TKFdJTkRPV1MpCi0gICAgY2hhciBwYXRoU2VwYXJhdG9yID0gJ1xcJzsKLSNlbHNlCi0gICAg
Y2hhciBwYXRoU2VwYXJhdG9yID0gJy8nOwotI2VuZGlmCi0KLSAgICBhdXRvIHBvc2l0aW9uID0g
cGF0aC5yZXZlcnNlRmluZChwYXRoU2VwYXJhdG9yKTsKLSAgICBpZiAocG9zaXRpb24gPT0gbm90
Rm91bmQpCi0gICAgICAgIHJldHVybiBwYXRoOwotCi0gICAgc2l6ZV90IGVuZE9mU3Vic3RyaW5n
ID0gcGF0aC5sZW5ndGgoKSAtIDE7Ci0gICAgaWYgKHBvc2l0aW9uID09IGVuZE9mU3Vic3RyaW5n
KSB7Ci0gICAgICAgIC0tZW5kT2ZTdWJzdHJpbmc7Ci0gICAgICAgIHBvc2l0aW9uID0gcGF0aC5y
ZXZlcnNlRmluZChwYXRoU2VwYXJhdG9yLCBlbmRPZlN1YnN0cmluZyk7Ci0gICAgfQotCi0gICAg
cmV0dXJuIHBhdGguc3Vic3RyaW5nKHBvc2l0aW9uICsgMSwgZW5kT2ZTdWJzdHJpbmcgLSBwb3Np
dGlvbik7Ci19Ci0KLWJvb2wgYXBwZW5kRmlsZUNvbnRlbnRzVG9GaWxlSGFuZGxlKGNvbnN0IFN0
cmluZyYgcGF0aCwgUGxhdGZvcm1GaWxlSGFuZGxlJiB0YXJnZXQpCi17Ci0gICAgYXV0byBzb3Vy
Y2UgPSBvcGVuRmlsZShwYXRoLCBGaWxlT3Blbk1vZGU6OlJlYWQpOwotCi0gICAgaWYgKCFpc0hh
bmRsZVZhbGlkKHNvdXJjZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHN0YXRpYyBp
bnQgYnVmZmVyU2l6ZSA9IDEgPDwgMTk7Ci0gICAgVmVjdG9yPGNoYXI+IGJ1ZmZlcihidWZmZXJT
aXplKTsKLQotICAgIGF1dG8gZmlsZUNsb3NlciA9IFdURjo6bWFrZVNjb3BlRXhpdChbc291cmNl
XSgpIHsKLSAgICAgICAgUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSA9IHNvdXJjZTsKLSAgICAg
ICAgY2xvc2VGaWxlKGhhbmRsZSk7Ci0gICAgfSk7Ci0KLSAgICBkbyB7Ci0gICAgICAgIGludCBy
ZWFkQnl0ZXMgPSByZWFkRnJvbUZpbGUoc291cmNlLCBidWZmZXIuZGF0YSgpLCBidWZmZXJTaXpl
KTsKLSAgICAgICAgCi0gICAgICAgIGlmIChyZWFkQnl0ZXMgPCAwKQotICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgICAgIGlmICh3cml0ZVRvRmlsZSh0YXJnZXQsIGJ1ZmZlci5kYXRh
KCksIHJlYWRCeXRlcykgIT0gcmVhZEJ5dGVzKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgICAgIGlmIChyZWFkQnl0ZXMgPCBidWZmZXJTaXplKQotICAgICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgfSB3aGlsZSAodHJ1ZSk7Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LX0KLQotICAgIAotYm9vbCBmaWxlc0hhdmVTYW1lVm9sdW1lKGNvbnN0IFN0cmluZyYgZmlsZUEs
IGNvbnN0IFN0cmluZyYgZmlsZUIpCi17Ci0gICAgYXV0byBmc1JlcEZpbGVBID0gZmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKGZpbGVBKTsKLSAgICBhdXRvIGZzUmVwRmlsZUIgPSBmaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oZmlsZUIpOwotICAgIAotICAgIGlmIChmc1JlcEZpbGVBLmlzTnVsbCgp
IHx8IGZzUmVwRmlsZUIuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGJv
b2wgcmVzdWx0ID0gZmFsc2U7Ci0KLSAgICBhdXRvIGZpbGVBRGV2ID0gZ2V0RmlsZURldmljZUlk
KGZzUmVwRmlsZUEpOwotICAgIGF1dG8gZmlsZUJEZXYgPSBnZXRGaWxlRGV2aWNlSWQoZnNSZXBG
aWxlQik7Ci0KLSAgICBpZiAoZmlsZUFEZXYgJiYgZmlsZUJEZXYpCi0gICAgICAgIHJlc3VsdCA9
IChmaWxlQURldiA9PSBmaWxlQkRldik7Ci0gICAgCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQot
I2lmICFQTEFURk9STShNQUMpCi0KLXZvaWQgc2V0TWV0YWRhdGFVUkwoY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikKLXsKLX0KLQotYm9vbCBjYW5FeGNsdWRlRnJv
bUJhY2t1cCgpCi17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIGV4Y2x1ZGVGcm9tQmFj
a3VwKGNvbnN0IFN0cmluZyYpCi17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi0jZW5kaWYKLQot
TWFwcGVkRmlsZURhdGE6On5NYXBwZWRGaWxlRGF0YSgpCi17Ci0jaWYgIU9TKFdJTkRPV1MpCi0g
ICAgaWYgKCFtX2ZpbGVEYXRhKQotICAgICAgICByZXR1cm47Ci0gICAgbXVubWFwKG1fZmlsZURh
dGEsIG1fZmlsZVNpemUpOwotI2VuZGlmCi19Ci0KLU1hcHBlZEZpbGVEYXRhOjpNYXBwZWRGaWxl
RGF0YShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBib29sJiBzdWNjZXNzKQotewotI2lmIE9TKFdJ
TkRPV1MpCi0gICAgLy8gRklYTUU6IEltcGxlbWVudCBtYXBwaW5nCi0gICAgc3VjY2VzcyA9IGZh
bHNlOwotI2Vsc2UKLSAgICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KGZpbGVQYXRoKTsKLSAgICBpbnQgZmQgPSAhZnNSZXAuaXNOdWxsKCkgPyBvcGVuKGZzUmVwLmRh
dGEoKSwgT19SRE9OTFkpIDogLTE7Ci0gICAgaWYgKGZkIDwgMCkgewotICAgICAgICBzdWNjZXNz
ID0gZmFsc2U7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBzdHJ1Y3Qgc3RhdCBmaWxl
U3RhdDsKLSAgICBpZiAoZnN0YXQoZmQsICZmaWxlU3RhdCkpIHsKLSAgICAgICAgY2xvc2UoZmQp
OwotICAgICAgICBzdWNjZXNzID0gZmFsc2U7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICB1bnNpZ25lZCBzaXplOwotICAgIGlmICghV1RGOjpjb252ZXJ0U2FmZWx5KGZpbGVTdGF0LnN0
X3NpemUsIHNpemUpKSB7Ci0gICAgICAgIGNsb3NlKGZkKTsKLSAgICAgICAgc3VjY2VzcyA9IGZh
bHNlOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFzaXplKSB7Ci0gICAgICAg
IGNsb3NlKGZkKTsKLSAgICAgICAgc3VjY2VzcyA9IHRydWU7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICB2b2lkKiBkYXRhID0gbW1hcCgwLCBzaXplLCBQUk9UX1JFQUQsIE1BUF9GSUxF
IHwgTUFQX1NIQVJFRCwgZmQsIDApOwotICAgIGNsb3NlKGZkKTsKLQotICAgIGlmIChkYXRhID09
IE1BUF9GQUlMRUQpIHsKLSAgICAgICAgc3VjY2VzcyA9IGZhbHNlOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgc3VjY2VzcyA9IHRydWU7Ci0gICAgbV9maWxlRGF0YSA9IGRhdGE7Ci0g
ICAgbV9maWxlU2l6ZSA9IHNpemU7Ci0jZW5kaWYKLX0KLQotUGxhdGZvcm1GaWxlSGFuZGxlIG9w
ZW5BbmRMb2NrRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVPcGVuTW9kZSBvcGVuTW9kZSwg
T3B0aW9uU2V0PEZpbGVMb2NrTW9kZT4gbG9ja01vZGUpCi17Ci0gICAgYXV0byBoYW5kbGUgPSBv
cGVuRmlsZShwYXRoLCBvcGVuTW9kZSk7Ci0gICAgaWYgKGhhbmRsZSA9PSBpbnZhbGlkUGxhdGZv
cm1GaWxlSGFuZGxlKQotICAgICAgICByZXR1cm4gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsK
LQotI2lmIFVTRShGSUxFX0xPQ0spCi0gICAgYm9vbCBsb2NrZWQgPSBsb2NrRmlsZShoYW5kbGUs
IGxvY2tNb2RlKTsKLSAgICBBU1NFUlRfVU5VU0VEKGxvY2tlZCwgbG9ja2VkKTsKLSNlbHNlCi0g
ICAgVU5VU0VEX1BBUkFNKGxvY2tNb2RlKTsKLSNlbmRpZgotCi0gICAgcmV0dXJuIGhhbmRsZTsK
LX0KLQotdm9pZCB1bmxvY2tBbmRDbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSkK
LXsKLSNpZiBVU0UoRklMRV9MT0NLKQotICAgIGJvb2wgdW5sb2NrZWQgPSB1bmxvY2tGaWxlKGhh
bmRsZSk7Ci0gICAgQVNTRVJUX1VOVVNFRCh1bmxvY2tlZCwgdW5sb2NrZWQpOwotI2VuZGlmCi0g
ICAgY2xvc2VGaWxlKGhhbmRsZSk7Ci19Ci0KLWJvb2wgZmlsZUlzRGlyZWN0b3J5KGNvbnN0IFN0
cmluZyYgcGF0aCwgU2hvdWxkRm9sbG93U3ltYm9saWNMaW5rcyBzaG91bGRGb2xsb3dTeW1ib2xp
Y0xpbmtzKQotewotICAgIGF1dG8gbWV0YWRhdGEgPSBzaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtz
ID09IFNob3VsZEZvbGxvd1N5bWJvbGljTGlua3M6OlllcyA/IGZpbGVNZXRhZGF0YUZvbGxvd2lu
Z1N5bWxpbmtzKHBhdGgpIDogZmlsZU1ldGFkYXRhKHBhdGgpOwotICAgIGlmICghbWV0YWRhdGEp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gbWV0YWRhdGEudmFsdWUoKS50eXBl
ID09IEZpbGVNZXRhZGF0YTo6VHlwZTo6RGlyZWN0b3J5OwotfQotCi19IC8vIG5hbWVzcGFjZSBG
aWxlU3lzdGVtCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxl
U3lzdGVtLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjZWJjYWEwNTM5YjU5ZDkz
ZTcyZTA5ODQwYjIzYjFkYWM2MzgxMWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oCisrKyAv
ZGV2L251bGwKQEAgLTEsMjI1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgg
Q29sbGFib3JhLCBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCi0g
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCi0g
KiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5h
bWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0g
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlIDx0aW1l
Lmg+Ci0jaW5jbHVkZSA8dXRpbGl0eT4KLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1
ZGUgPHd0Zi9PcHRpb25TZXQuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8
d3RmL1dhbGxUaW1lLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLSNpZiBV
U0UoQ0YpCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotI2VuZGlmCi0KLSNpZiBVU0UoQ0Yp
Ci10eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGRGF0YSogQ0ZEYXRhUmVmOwotI2VuZGlmCi0KLU9C
SkNfQ0xBU1MgTlNTdHJpbmc7Ci0KLSNpZiBQTEFURk9STShXSU4pCi10eXBlZGVmIHZvaWQgKkhB
TkRMRTsKLSNlbmRpZgotCi0jaWYgVVNFKEdMSUIpCi10eXBlZGVmIHN0cnVjdCBfR0ZpbGVJT1N0
cmVhbSBHRmlsZUlPU3RyZWFtOwotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3Ry
dWN0IEZpbGVNZXRhZGF0YTsKLQotbmFtZXNwYWNlIEZpbGVTeXN0ZW0gewotCi0vLyBQbGF0Zm9y
bUZpbGVIYW5kbGUKLSNpZiBVU0UoR0xJQikgJiYgIVBMQVRGT1JNKFdJTikKLXR5cGVkZWYgR0Zp
bGVJT1N0cmVhbSogUGxhdGZvcm1GaWxlSGFuZGxlOwotY29uc3QgUGxhdGZvcm1GaWxlSGFuZGxl
IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUgPSAwOwotI2VsaWYgUExBVEZPUk0oV0lOKQotdHlw
ZWRlZiBIQU5ETEUgUGxhdGZvcm1GaWxlSGFuZGxlOwotLy8gRklYTUU6IC0xIGlzIElOVkFMSURf
SEFORExFX1ZBTFVFLCBkZWZpbmVkIGluIDx3aW5iYXNlLmg+LiBDaHJvbWl1bSB0cmllcyB0bwot
Ly8gYXZvaWQgdXNpbmcgV2luZG93cyBoZWFkZXJzIGluIGhlYWRlcnMuICBXZSdkIHJhdGhlciBt
b3ZlIHRoaXMgaW50byB0aGUgLmNwcC4KLWNvbnN0IFBsYXRmb3JtRmlsZUhhbmRsZSBpbnZhbGlk
UGxhdGZvcm1GaWxlSGFuZGxlID0gcmVpbnRlcnByZXRfY2FzdDxIQU5ETEU+KC0xKTsKLSNlbHNl
Ci10eXBlZGVmIGludCBQbGF0Zm9ybUZpbGVIYW5kbGU7Ci1jb25zdCBQbGF0Zm9ybUZpbGVIYW5k
bGUgaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSA9IC0xOwotI2VuZGlmCi0KLWVudW0gY2xhc3Mg
RmlsZU9wZW5Nb2RlIHsKLSAgICBSZWFkLAotICAgIFdyaXRlLAotI2lmIE9TKERBUldJTikKLSAg
ICBFdmVudHNPbmx5LAotI2VuZGlmCi19OwotCi1lbnVtIGNsYXNzIEZpbGVTZWVrT3JpZ2luIHsK
LSAgICBCZWdpbm5pbmcsCi0gICAgQ3VycmVudCwKLSAgICBFbmQsCi19OwotCi1lbnVtIGNsYXNz
IEZpbGVMb2NrTW9kZSB7Ci0gICAgU2hhcmVkID0gMSA8PCAwLAotICAgIEV4Y2x1c2l2ZSA9IDEg
PDwgMSwKLSAgICBOb25ibG9ja2luZyA9IDEgPDwgMiwKLX07Ci0KLWVudW0gY2xhc3MgU2hvdWxk
Rm9sbG93U3ltYm9saWNMaW5rcyB7IE5vLCBZZXMgfTsKLQotV0VCQ09SRV9FWFBPUlQgYm9vbCBm
aWxlRXhpc3RzKGNvbnN0IFN0cmluZyYpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCBkZWxldGVGaWxl
KGNvbnN0IFN0cmluZyYpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCBkZWxldGVFbXB0eURpcmVjdG9y
eShjb25zdCBTdHJpbmcmKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgbW92ZUZpbGUoY29uc3QgU3Ry
aW5nJiBvbGRQYXRoLCBjb25zdCBTdHJpbmcmIG5ld1BhdGgpOwotV0VCQ09SRV9FWFBPUlQgYm9v
bCBnZXRGaWxlU2l6ZShjb25zdCBTdHJpbmcmLCBsb25nIGxvbmcmIHJlc3VsdCk7Ci1XRUJDT1JF
X0VYUE9SVCBib29sIGdldEZpbGVTaXplKFBsYXRmb3JtRmlsZUhhbmRsZSwgbG9uZyBsb25nJiBy
ZXN1bHQpOwotV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8V2FsbFRpbWU+IGdldEZpbGVNb2RpZmlj
YXRpb25UaW1lKGNvbnN0IFN0cmluZyYpOwotV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8V2FsbFRp
bWU+IGdldEZpbGVDcmVhdGlvblRpbWUoY29uc3QgU3RyaW5nJik7IC8vIE5vdCBhbGwgcGxhdGZv
cm1zIHN0b3JlIGZpbGUgY3JlYXRpb24gdGltZS4KLVdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPEZp
bGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYgcGF0aCk7Ci1XRUJDT1JFX0VY
UE9SVCBPcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YUZvbGxvd2luZ1N5bWxpbmtz
KGNvbnN0IFN0cmluZyYgcGF0aCk7Ci1XRUJDT1JFX0VYUE9SVCBib29sIGZpbGVJc0RpcmVjdG9y
eShjb25zdCBTdHJpbmcmLCBTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzKTsKLVdFQkNPUkVfRVhQ
T1JUIFN0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY29uc3QgU3RyaW5nJiBwYXRoLCBj
b25zdCBTdHJpbmcmIGNvbXBvbmVudCk7Ci1TdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
cyhTdHJpbmdWaWV3IHBhdGgsIGNvbnN0IFZlY3RvcjxTdHJpbmdWaWV3PiYgY29tcG9uZW50cyk7
Ci1TdHJpbmcgbGFzdENvbXBvbmVudE9mUGF0aElnbm9yaW5nVHJhaWxpbmdTbGFzaChjb25zdCBT
dHJpbmcmIHBhdGgpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCBtYWtlQWxsRGlyZWN0b3JpZXMoY29u
c3QgU3RyaW5nJiBwYXRoKTsKLVN0cmluZyBob21lRGlyZWN0b3J5UGF0aCgpOwotV0VCQ09SRV9F
WFBPUlQgU3RyaW5nIHBhdGhHZXRGaWxlTmFtZShjb25zdCBTdHJpbmcmKTsKLVdFQkNPUkVfRVhQ
T1JUIFN0cmluZyBkaXJlY3RvcnlOYW1lKGNvbnN0IFN0cmluZyYpOwotV0VCQ09SRV9FWFBPUlQg
Ym9vbCBnZXRWb2x1bWVGcmVlU3BhY2UoY29uc3QgU3RyaW5nJiwgdWludDY0X3QmKTsKLVdFQkNP
UkVfRVhQT1JUIE9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5n
Jik7Ci1XRUJDT1JFX0VYUE9SVCBib29sIGNyZWF0ZVN5bWJvbGljTGluayhjb25zdCBTdHJpbmcm
IHRhcmdldFBhdGgsIGNvbnN0IFN0cmluZyYgc3ltYm9saWNMaW5rUGF0aCk7Ci0KLVdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0TWV0YWRhdGFVUkwoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJp
bmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiByZWZlcnJlciA9IHsgfSk7Ci0KLWJvb2wgY2Fu
RXhjbHVkZUZyb21CYWNrdXAoKTsgLy8gUmV0dXJucyB0cnVlIGlmIGFueSBmaWxlIGNhbiBldmVy
IGJlIGV4Y2x1ZGVkIGZyb20gYmFja3VwLgotYm9vbCBleGNsdWRlRnJvbUJhY2t1cChjb25zdCBT
dHJpbmcmKTsgLy8gUmV0dXJucyB0cnVlIGlmIHN1Y2Nlc3NmdWwuCi0KLVdFQkNPUkVfRVhQT1JU
IFZlY3RvcjxTdHJpbmc+IGxpc3REaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBT
dHJpbmcmIGZpbHRlciA9IFN0cmluZygpKTsKLQotV0VCQ09SRV9FWFBPUlQgQ1N0cmluZyBmaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJik7Ci1TdHJpbmcgc3RyaW5nRnJvbUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBjaGFyKik7Ci0KLWlubGluZSBib29sIGlzSGFu
ZGxlVmFsaWQoY29uc3QgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpIHsgcmV0dXJuIGhhbmRs
ZSAhPSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOyB9Ci0KLS8vIFByZWZpeCBpcyB3aGF0IHRo
ZSBmaWxlbmFtZSBzaG91bGQgYmUgcHJlZml4ZWQgd2l0aCwgbm90IHRoZSBmdWxsIHBhdGguCi1X
RUJDT1JFX0VYUE9SVCBTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVm
aXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYpOwotV0VCQ09SRV9FWFBPUlQgUGxhdGZvcm1GaWxlSGFu
ZGxlIG9wZW5GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlKTsKLVdFQkNPUkVf
RVhQT1JUIHZvaWQgY2xvc2VGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSYpOwotLy8gUmV0dXJucyB0
aGUgcmVzdWx0aW5nIG9mZnNldCBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZpbGUgaWYgc3Vj
Y2Vzc2Z1bCwgLTEgb3RoZXJ3aXNlLgotV0VCQ09SRV9FWFBPUlQgbG9uZyBsb25nIHNlZWtGaWxl
KFBsYXRmb3JtRmlsZUhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCwgRmlsZVNlZWtPcmlnaW4pOwot
Ym9vbCB0cnVuY2F0ZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0KTsK
LS8vIFJldHVybnMgbnVtYmVyIG9mIGJ5dGVzIGFjdHVhbGx5IHJlYWQgaWYgc3VjY2Vzc2Z1bCwg
LTEgb3RoZXJ3aXNlLgotV0VCQ09SRV9FWFBPUlQgaW50IHdyaXRlVG9GaWxlKFBsYXRmb3JtRmls
ZUhhbmRsZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCk7Ci0vLyBSZXR1cm5zIG51bWJl
ciBvZiBieXRlcyBhY3R1YWxseSB3cml0dGVuIGlmIHN1Y2Nlc3NmdWwsIC0xIG90aGVyd2lzZS4K
LVdFQkNPUkVfRVhQT1JUIGludCByZWFkRnJvbUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBjaGFy
KiBkYXRhLCBpbnQgbGVuZ3RoKTsKLQotV0VCQ09SRV9FWFBPUlQgUGxhdGZvcm1GaWxlSGFuZGxl
IG9wZW5BbmRMb2NrRmlsZShjb25zdCBTdHJpbmcmLCBGaWxlT3Blbk1vZGUsIE9wdGlvblNldDxG
aWxlTG9ja01vZGU+ID0gRmlsZUxvY2tNb2RlOjpFeGNsdXNpdmUpOwotV0VCQ09SRV9FWFBPUlQg
dm9pZCB1bmxvY2tBbmRDbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlKTsKLQotLy8gQXBwZW5k
cyB0aGUgY29udGVudHMgb2YgdGhlIGZpbGUgZm91bmQgYXQgJ3BhdGgnIHRvIHRoZSBvcGVuIFBs
YXRmb3JtRmlsZUhhbmRsZS4KLS8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgd3JpdGUgd2FzIHN1Y2Nl
c3NmdWwsIGZhbHNlIGlmIGl0IHdhcyBub3QuCi1ib29sIGFwcGVuZEZpbGVDb250ZW50c1RvRmls
ZUhhbmRsZShjb25zdCBTdHJpbmcmIHBhdGgsIFBsYXRmb3JtRmlsZUhhbmRsZSYpOwotCi0vLyBI
YXJkIGxpbmtzIGEgZmlsZSBpZiBwb3NzaWJsZSwgY29waWVzIGl0IGlmIG5vdC4KLWJvb2wgaGFy
ZExpbmtPckNvcHlGaWxlKGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBTdHJpbmcmIGRlc3Rp
bmF0aW9uKTsKLQotI2lmIFVTRShGSUxFX0xPQ0spCi1XRUJDT1JFX0VYUE9SVCBib29sIGxvY2tG
aWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgT3B0aW9uU2V0PEZpbGVMb2NrTW9kZT4pOwotV0VCQ09S
RV9FWFBPUlQgYm9vbCB1bmxvY2tGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSk7Ci0jZW5kaWYKLQot
Ly8gRW5jb2RlIGEgc3RyaW5nIGZvciB1c2Ugd2l0aGluIGEgZmlsZSBuYW1lLgotV0VCQ09SRV9F
WFBPUlQgU3RyaW5nIGVuY29kZUZvckZpbGVOYW1lKGNvbnN0IFN0cmluZyYpOwotV0VCQ09SRV9F
WFBPUlQgU3RyaW5nIGRlY29kZUZyb21GaWxlbmFtZShjb25zdCBTdHJpbmcmKTsKLQotV0VCQ09S
RV9FWFBPUlQgYm9vbCBmaWxlc0hhdmVTYW1lVm9sdW1lKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYpOwotCi0jaWYgVVNFKENGKQotUmV0YWluUHRyPENGVVJMUmVmPiBwYXRoQXNVUkwoY29u
c3QgU3RyaW5nJik7Ci0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BF
KQotU3RyaW5nIGZpbGVuYW1lRm9yRGlzcGxheShjb25zdCBTdHJpbmcmKTsKLSNlbmRpZgotCi0j
aWYgUExBVEZPUk0oV0lOKQotV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGxvY2FsVXNlclNwZWNpZmlj
U3RvcmFnZURpcmVjdG9yeSgpOwotU3RyaW5nIHJvYW1pbmdVc2VyU3BlY2lmaWNTdG9yYWdlRGly
ZWN0b3J5KCk7Ci0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKENPQ09BKQotV0VCQ09SRV9FWFBPUlQg
TlNTdHJpbmcgKmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShOU1N0cmluZyAqZGlyZWN0b3J5UHJl
Zml4KTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkoY29uc3Qg
U3RyaW5nJik7Ci0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKFdJTl9DQUlSTykKLVdFQkNPUkVfRVhQ
T1JUIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoKTsKLVdFQkNPUkVfRVhQT1JUIGJv
b2wgZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7Ci0jZW5kaWYKLQotV0VC
Q09SRV9FWFBPUlQgU3RyaW5nIHJlYWxQYXRoKGNvbnN0IFN0cmluZyYpOwotCi1jbGFzcyBNYXBw
ZWRGaWxlRGF0YSB7Ci1wdWJsaWM6Ci0gICAgTWFwcGVkRmlsZURhdGEoKSB7IH0KLSAgICBNYXBw
ZWRGaWxlRGF0YShNYXBwZWRGaWxlRGF0YSYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBNYXBwZWRG
aWxlRGF0YShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBib29sJiBzdWNjZXNzKTsKLSAgICBXRUJD
T1JFX0VYUE9SVCB+TWFwcGVkRmlsZURhdGEoKTsKLSAgICBNYXBwZWRGaWxlRGF0YSYgb3BlcmF0
b3I9KE1hcHBlZEZpbGVEYXRhJiYpOwotCi0gICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNv
bnN0IHsgcmV0dXJuICEhbV9maWxlRGF0YTsgfQotICAgIGNvbnN0IHZvaWQqIGRhdGEoKSBjb25z
dCB7IHJldHVybiBtX2ZpbGVEYXRhOyB9Ci0gICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZmlsZVNpemU7IH0KLQotcHJpdmF0ZToKLSAgICB2b2lkKiBtX2ZpbGVEYXRhIHsgbnVs
bHB0ciB9OwotICAgIHVuc2lnbmVkIG1fZmlsZVNpemUgeyAwIH07Ci19OwotCi1pbmxpbmUgTWFw
cGVkRmlsZURhdGE6Ok1hcHBlZEZpbGVEYXRhKE1hcHBlZEZpbGVEYXRhJiYgb3RoZXIpCi0gICAg
OiBtX2ZpbGVEYXRhKHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9maWxlRGF0YSwgbnVsbHB0cikpCi0g
ICAgLCBtX2ZpbGVTaXplKHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9maWxlU2l6ZSwgMCkpCi17Ci19
Ci0KLWlubGluZSBNYXBwZWRGaWxlRGF0YSYgTWFwcGVkRmlsZURhdGE6Om9wZXJhdG9yPShNYXBw
ZWRGaWxlRGF0YSYmIG90aGVyKQotewotICAgIG1fZmlsZURhdGEgPSBzdGQ6OmV4Y2hhbmdlKG90
aGVyLm1fZmlsZURhdGEsIG51bGxwdHIpOwotICAgIG1fZmlsZVNpemUgPSBzdGQ6OmV4Y2hhbmdl
KG90aGVyLm1fZmlsZVNpemUsIDApOwotICAgIHJldHVybiAqdGhpczsKLX0KLQotfSAvLyBuYW1l
c3BhY2UgRmlsZVN5c3RlbQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NoYXJlZEJ1ZmZlci5oCmluZGV4IDgxMzE4ZThiMjlhZTVhMGY1Yjk2MDNjODI1NTc5
MWNkYmMyMGE0ZTEuLmVjMzcxMzQxYWI5NDk1YjdkMzU3NjEzNTFiMmIwOWIxMzVhM2VmM2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCkBAIC0yNiw4ICsyNiw4IEBACiAK
ICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0FycmF5QnVmZmVyLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5j
bHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Tb3VyY2VzR0xpYi50eHQgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
b3VyY2VzR0xpYi50eHQKaW5kZXggMjc3M2MyYTA4OGI2MGZiMTM5NjkyZDVmNDBkMGJlZmMzZmVj
M2NjNC4uMDkwYjg0YTQ4YzEwM2QzZDU5MzE0MWQ5MGUyYmJiNGFiZjJjNWJhNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU291cmNlc0dMaWIudHh0CisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NvdXJjZXNHTGliLnR4dApAQCAtMjUsNyArMjUsNiBAQCBwbGF0Zm9y
bS9hdWRpby9nbGliL0F1ZGlvQnVzR0xpYi5jcHAKIAogcGxhdGZvcm0vZ2xpYi9FdmVudExvb3BH
bGliLmNwcAogcGxhdGZvcm0vZ2xpYi9GaWxlTW9uaXRvckdMaWIuY3BwCi1wbGF0Zm9ybS9nbGli
L0ZpbGVTeXN0ZW1HbGliLmNwcAogcGxhdGZvcm0vZ2xpYi9LZXllZERlY29kZXJHbGliLmNwcAog
cGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcAogcGxhdGZvcm0vZ2xpYi9Mb3dQb3dl
ck1vZGVOb3RpZmllckdMaWIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jZi9GaWxlU3lzdGVtQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvRmlsZVN5
c3RlbUNGLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDg0NzBhMDhmYTVkMmY0
NTJlNmM5Mzg3MDFjNmQ5MjZjYTYwOWYwMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9GaWxlU3lzdGVtQ0Yu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsNzQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwNywgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3Ig
dGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJ
UyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiRmlsZVN5c3RlbS5oIgotCi0jaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZTdHJpbmcu
aD4KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLUNTdHJpbmcgRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0
IFN0cmluZyYgcGF0aCkKLXsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmU3RyaW5nID0g
cGF0aC5jcmVhdGVDRlN0cmluZygpOwotCi0gICAgaWYgKCFjZlN0cmluZykKLSAgICAgICAgcmV0
dXJuIENTdHJpbmcoKTsKLQotICAgIENGSW5kZXggc2l6ZSA9IENGU3RyaW5nR2V0TWF4aW11bVNp
emVPZkZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjZlN0cmluZy5nZXQoKSk7Ci0KLSAgICBWZWN0
b3I8Y2hhcj4gYnVmZmVyKHNpemUpOwotCi0gICAgaWYgKCFDRlN0cmluZ0dldEZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihjZlN0cmluZy5nZXQoKSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUo
KSkpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZ2V0IGZpbGVzeXN0ZW0gcmVwcmVz
ZW50YXRpb24gdG8gY3JlYXRlIENTdHJpbmcgZnJvbSBjZlN0cmluZyIpOwotICAgICAgICByZXR1
cm4gQ1N0cmluZygpOwotICAgIH0KLQotICAgIHJldHVybiBDU3RyaW5nKGJ1ZmZlci5kYXRhKCks
IHN0cmxlbihidWZmZXIuZGF0YSgpKSk7Ci19Ci0KLVN0cmluZyBGaWxlU3lzdGVtOjpzdHJpbmdG
cm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IGNoYXIqIGZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbikKLXsKLSAgICByZXR1cm4gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhGaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oa0NGQWxsb2NhdG9yRGVmYXVsdCwgZmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKSkuZ2V0KCk7Ci19Ci0KLVJldGFpblB0cjxDRlVSTFJlZj4gRmlsZVN5c3RlbTo6cGF0
aEFzVVJMKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBDRlVSTFBhdGhTdHlsZSBwYXRoU3R5
bGU7Ci0jaWYgUExBVEZPUk0oV0lOKQotICAgIHBhdGhTdHlsZSA9IGtDRlVSTFdpbmRvd3NQYXRo
U3R5bGU7Ci0jZWxzZQotICAgIHBhdGhTdHlsZSA9IGtDRlVSTFBPU0lYUGF0aFN0eWxlOwotI2Vu
ZGlmCi0gICAgcmV0dXJuIGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoMCwg
cGF0aC5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBwYXRoU3R5bGUsIEZBTFNFKSk7Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL0ZpbGVNb25pdG9yQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9GaWxlTW9uaXRvckNvY29hLm1tCmluZGV4IDFhYjNjMzM0YzY5ZGZmYTM2NDhhYjAwYTQ1NThk
OWYyN2U0MzA2MDAuLmNjN2ZlNmI2Y2RlMTBlZDRjYTQ1NmU0NmJlMjhhMDRmNjg3MjQ3NGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0ZpbGVNb25pdG9yQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRmlsZU1vbml0b3JDb2NvYS5t
bQpAQCAtMjYsOSArMjYsOSBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJGaWxlTW9u
aXRvci5oIgogCi0jaW1wb3J0ICJGaWxlU3lzdGVtLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAj
aW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL0ZpbGVTeXN0ZW1Db2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL0ZpbGVTeXN0ZW1Db2NvYS5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDM4
YjBjODMwM2U3YmExMGQ0MDUzM2NiY2QxNWRhMzNiMDk2OWUzYy4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9GaWxlU3lzdGVtQ29jb2EubW0KKysrIC9kZXYvbnVsbApAQCAtMSwxNDMgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwNy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuIAotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uIAotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUg
SW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAg
ICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uIAotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwot
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBv
cnQgImNvbmZpZy5oIgotI2ltcG9ydCAiRmlsZVN5c3RlbS5oIgotCi1AaW50ZXJmYWNlIFdlYkZp
bGVNYW5hZ2VyRGVsZWdhdGUgOiBOU09iamVjdCA8TlNGaWxlTWFuYWdlckRlbGVnYXRlPgotQGVu
ZAotCi1AaW1wbGVtZW50YXRpb24gV2ViRmlsZU1hbmFnZXJEZWxlZ2F0ZQotCi0tIChCT09MKWZp
bGVNYW5hZ2VyOihOU0ZpbGVNYW5hZ2VyICopZmlsZU1hbmFnZXIgc2hvdWxkUHJvY2VlZEFmdGVy
RXJyb3I6KE5TRXJyb3IgKillcnJvciBtb3ZpbmdJdGVtQXRVUkw6KE5TVVJMICopc3JjVVJMIHRv
VVJMOihOU1VSTCAqKWRzdFVSTAotewotICAgIFVOVVNFRF9QQVJBTShmaWxlTWFuYWdlcik7Ci0g
ICAgVU5VU0VEX1BBUkFNKHNyY1VSTCk7Ci0gICAgVU5VU0VEX1BBUkFNKGRzdFVSTCk7ICAgIAot
ICAgIHJldHVybiBlcnJvci5jb2RlID09IE5TRmlsZVdyaXRlRmlsZUV4aXN0c0Vycm9yOwotfQot
Ci1AZW5kCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIEZpbGVTeXN0ZW0gewot
Ci1TdHJpbmcgaG9tZURpcmVjdG9yeVBhdGgoKQotewotICAgIHJldHVybiBOU0hvbWVEaXJlY3Rv
cnkoKTsKLX0KLQotU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4
LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHBsYXRmb3JtRmlsZUhhbmRsZSkKLXsKLSAgICBwbGF0Zm9y
bUZpbGVIYW5kbGUgPSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOwotICAgIAotICAgIFZlY3Rv
cjxjaGFyPiB0ZW1wb3JhcnlGaWxlUGF0aChQQVRIX01BWCk7Ci0gICAgaWYgKCFjb25mc3RyKF9D
U19EQVJXSU5fVVNFUl9URU1QX0RJUiwgdGVtcG9yYXJ5RmlsZVBhdGguZGF0YSgpLCB0ZW1wb3Jh
cnlGaWxlUGF0aC5zaXplKCkpKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICAvLyBT
aHJpbmsgdGhlIHZlY3Rvci4gICAKLSAgICB0ZW1wb3JhcnlGaWxlUGF0aC5zaHJpbmsoc3RybGVu
KHRlbXBvcmFyeUZpbGVQYXRoLmRhdGEoKSkpOwotCi0gICAgLy8gRklYTUU6IENoYW5nZSB0byBh
IHJ1bnRpbWUgYXNzZXJ0aW9uIHRoYXQgdGhlIHBhdGggZW5kcyB3aXRoIGEgc2xhc2ggb25jZSA8
cmRhcjovL3Byb2JsZW0vMjM1NzkwNzc+IGlzCi0gICAgLy8gZml4ZWQgaW4gYWxsIGlPUyBTaW11
bGF0b3IgdmVyc2lvbnMgdGhhdCB3ZSB1c2UuCi0gICAgaWYgKHRlbXBvcmFyeUZpbGVQYXRoLmxh
c3QoKSAhPSAnLycpCi0gICAgICAgIHRlbXBvcmFyeUZpbGVQYXRoLmFwcGVuZCgnLycpOwotCi0g
ICAgLy8gQXBwZW5kIHRoZSBmaWxlIG5hbWUuCi0gICAgQ1N0cmluZyBwcmVmaXhVdGY4ID0gcHJl
Zml4LnV0ZjgoKTsKLSAgICB0ZW1wb3JhcnlGaWxlUGF0aC5hcHBlbmQocHJlZml4VXRmOC5kYXRh
KCksIHByZWZpeFV0ZjgubGVuZ3RoKCkpOwotICAgIHRlbXBvcmFyeUZpbGVQYXRoLmFwcGVuZCgi
WFhYWFhYIiwgNik7Ci0gICAgdGVtcG9yYXJ5RmlsZVBhdGguYXBwZW5kKCdcMCcpOwotCi0gICAg
cGxhdGZvcm1GaWxlSGFuZGxlID0gbWtzdGVtcCh0ZW1wb3JhcnlGaWxlUGF0aC5kYXRhKCkpOwot
ICAgIGlmIChwbGF0Zm9ybUZpbGVIYW5kbGUgPT0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkK
LSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgo
dGVtcG9yYXJ5RmlsZVBhdGguZGF0YSgpKTsKLX0KLQotYm9vbCBtb3ZlRmlsZShjb25zdCBTdHJp
bmcmIG9sZFBhdGgsIGNvbnN0IFN0cmluZyYgbmV3UGF0aCkKLXsKLSAgICAvLyBPdmVyd3JpdGUg
ZXhpc3RpbmcgZmlsZXMuCi0gICAgYXV0byBtYW5hZ2VyID0gYWRvcHROUyhbW05TRmlsZU1hbmFn
ZXIgYWxsb2NdIGluaXRdKTsKLSAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1dlYkZpbGVN
YW5hZ2VyRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKLSAgICBbbWFuYWdlciBzZXREZWxlZ2F0ZTpk
ZWxlZ2F0ZS5nZXQoKV07Ci0gICAgCi0gICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7Ci0gICAgYm9v
bCBzdWNjZXNzID0gW21hbmFnZXIgbW92ZUl0ZW1BdFVSTDpbTlNVUkwgZmlsZVVSTFdpdGhQYXRo
Om9sZFBhdGhdIHRvVVJMOltOU1VSTCBmaWxlVVJMV2l0aFBhdGg6bmV3UGF0aF0gZXJyb3I6JmVy
cm9yXTsKLSAgICBpZiAoIXN1Y2Nlc3MpCi0gICAgICAgIE5TTG9nKEAiRXJyb3IgaW4gbW92ZUZp
bGU6ICVAIiwgZXJyb3IpOwotICAgIHJldHVybiBzdWNjZXNzOwotfQotCi1ib29sIGdldFZvbHVt
ZUZyZWVTcGFjZShjb25zdCBTdHJpbmcmIHBhdGgsIHVpbnQ2NF90JiBmcmVlU3BhY2UpCi17Ci0g
ICAgTlNEaWN0aW9uYXJ5ICpmaWxlU3lzdGVtQXR0cmlidXRlc0RpY3Rpb25hcnkgPSBbW05TRmls
ZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGF0dHJpYnV0ZXNPZkZpbGVTeXN0ZW1Gb3JQYXRoOihO
U1N0cmluZyAqKXBhdGggZXJyb3I6TlVMTF07Ci0gICAgaWYgKCFmaWxlU3lzdGVtQXR0cmlidXRl
c0RpY3Rpb25hcnkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBmcmVlU3BhY2UgPSBbW2Zp
bGVTeXN0ZW1BdHRyaWJ1dGVzRGljdGlvbmFyeSBvYmplY3RGb3JLZXk6TlNGaWxlU3lzdGVtRnJl
ZVNpemVdIHVuc2lnbmVkTG9uZ0xvbmdWYWx1ZV07Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLU5T
U3RyaW5nICpjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoTlNTdHJpbmcgKmRpcmVjdG9yeVByZWZp
eCkKLXsKLSAgICBOU1N0cmluZyAqdGVtcERpcmVjdG9yeSA9IE5TVGVtcG9yYXJ5RGlyZWN0b3J5
KCk7Ci0gICAgaWYgKCF0ZW1wRGlyZWN0b3J5IHx8ICFbdGVtcERpcmVjdG9yeSBsZW5ndGhdKQot
ICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgaWYgKCFkaXJlY3RvcnlQcmVmaXggfHwgIVtkaXJl
Y3RvcnlQcmVmaXggbGVuZ3RoXSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIE5TU3RyaW5n
ICp0ZW1wRGlyZWN0b3J5Q29tcG9uZW50ID0gW2RpcmVjdG9yeVByZWZpeCBzdHJpbmdCeUFwcGVu
ZGluZ1N0cmluZzpAIi1YWFhYWFhYWCJdOwotICAgIGNvbnN0IGNoYXIqIHRlbXBEaXJlY3RvcnlD
U3RyaW5nID0gW1t0ZW1wRGlyZWN0b3J5IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDp0
ZW1wRGlyZWN0b3J5Q29tcG9uZW50XSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb25dOwotICAgIGlm
ICghdGVtcERpcmVjdG9yeUNTdHJpbmcpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBjb25z
dCBzaXplX3QgbGVuZ3RoID0gc3RybGVuKHRlbXBEaXJlY3RvcnlDU3RyaW5nKTsKLSAgICBBU1NF
UlQobGVuZ3RoIDw9IE1BWFBBVEhMRU4pOwotICAgIGlmIChsZW5ndGggPiBNQVhQQVRITEVOKQot
ICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgY29uc3Qgc2l6ZV90IGxlbmd0aFBsdXNOdWxsVGVy
bWluYXRvciA9IGxlbmd0aCArIDE7Ci0gICAgVmVjdG9yPGNoYXIsIE1BWFBBVEhMRU4gKyAxPiBw
YXRoKGxlbmd0aFBsdXNOdWxsVGVybWluYXRvcik7Ci0gICAgbWVtY3B5KHBhdGguZGF0YSgpLCB0
ZW1wRGlyZWN0b3J5Q1N0cmluZywgbGVuZ3RoUGx1c051bGxUZXJtaW5hdG9yKTsKLQotICAgIGlm
ICghbWtkdGVtcChwYXRoLmRhdGEoKSkpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICByZXR1
cm4gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBzdHJpbmdXaXRoRmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uOnBhdGguZGF0YSgpIGxlbmd0aDpsZW5ndGhdOwotfQotCi1ib29sIGRlbGV0
ZU5vbkVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICByZXR1cm4gW1tO
U0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSByZW1vdmVJdGVtQXRQYXRoOnBhdGggZXJyb3I6
bmlsXTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgRmlsZVN5c3RlbQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9GaWxlTW9uaXRv
ckdMaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9GaWxlTW9uaXRvckdMaWIu
Y3BwCmluZGV4IDQ2M2YzMjc2YzI0ZTI1MWJlYjRhYTA4YjBiOTg5ODZlOGNjOTY5MjMuLjVhOTgy
ZjQ5NDkyMzdjYjIwYTlmNTRjZjg4ZTJhZGVlNDhkNGY5NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dsaWIvRmlsZU1vbml0b3JHTGliLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nbGliL0ZpbGVNb25pdG9yR0xpYi5jcHAKQEAgLTI2LDcgKzI2LDcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJGaWxlTW9uaXRvci5oIgogCi0jaW5jbHVk
ZSAiRmlsZVN5c3RlbS5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8
d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90aHJlYWRzL0JpbmFyeVNlbWFw
aG9yZS5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0ZpbGVT
eXN0ZW1HbGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvRmlsZVN5c3RlbUds
aWIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYTZjM2RmOTRkZDMyMjEzNDMw
MGM3YmJkMjZiYmIwODkwNDY1NjMxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvRmlsZVN5c3RlbUdsaWIu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDcsIDIwMDkgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIKLSAqIENvcHlyaWdodCAoQykg
MjAwOCBDb2xsYWJvcmEsIEx0ZC4KLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTAgTW90b3Jv
bGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
LSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
LSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCi0KLSNpbmNsdWRlICJGaWxlTWV0YWRhdGEuaCIK
LSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgPGdpby9nZmlsZWRlc2NyaXB0
b3JiYXNlZC5oPgotI2luY2x1ZGUgPGdpby9naW8uaD4KLSNpbmNsdWRlIDxnbGliLmg+Ci0jaW5j
bHVkZSA8Z2xpYi9nc3RkaW8uaD4KLSNpbmNsdWRlIDxzeXMvZmlsZS5oPgotI2luY2x1ZGUgPHd0
Zi9FbnVtVHJhaXRzLmg+Ci0jaW5jbHVkZSA8d3RmL1VVSUQuaD4KLSNpbmNsdWRlIDx3dGYvZ2xp
Yi9HTGliVXRpbGl0aWVzLmg+Ci0jaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgotI2luY2x1
ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBGaWxlU3lz
dGVtIHsKLQotLyogT24gbGludXggZmlsZSBuYW1lcyBhcmUganVzdCByYXcgYnl0ZXMsIHNvIGFs
c28gc3RyaW5ncyB0aGF0IGNhbm5vdCBiZSBlbmNvZGVkIGluIGFueSB3YXkKLSAqIGFyZSB2YWxp
ZCBmaWxlIG5hbWVzLiBUaGlzIG1lYW4gdGhhdCB3ZSBjYW5ub3QganVzdCBzdG9yZSBhIGZpbGUg
bmFtZSBhcy1pcyBpbiBhIFN0cmluZwotICogYnV0IHdlIGhhdmUgdG8gZXNjYXBlIGl0LgotICog
T24gV2luZG93cyB0aGUgR0xpYiBmaWxlIG5hbWUgZW5jb2RpbmcgaXMgYWx3YXlzIFVURi04IHNv
IHdlIGNhbiBvcHRpbWl6ZSB0aGlzIGNhc2UuICovCi1TdHJpbmcgc3RyaW5nRnJvbUZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihjb25zdCBjaGFyKiBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24pCi17
Ci0gICAgaWYgKCFmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24pCi0gICAgICAgIHJldHVybiBTdHJp
bmcoKTsKLQotI2lmIE9TKFdJTkRPV1MpCi0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoZmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKTsKLSNlbHNlCi0gICAgR1VuaXF1ZVB0cjxnY2hhcj4gZXNj
YXBlZFN0cmluZyhnX3VyaV9lc2NhcGVfc3RyaW5nKGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbiwg
Ii86IiwgRkFMU0UpKTsKLSAgICByZXR1cm4gZXNjYXBlZFN0cmluZy5nZXQoKTsKLSNlbmRpZgot
fQotCi1zdGF0aWMgR1VuaXF1ZVB0cjxjaGFyPiB1bmVzY2FwZWRGaWxlbmFtZShjb25zdCBTdHJp
bmcmIHBhdGgpCi17Ci0gICAgaWYgKHBhdGguaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSNpZiBPUyhXSU5ET1dTKQotICAgIHJldHVybiBHVW5pcXVlUHRyPGNoYXI+KGdfc3Ry
ZHVwKHBhdGgudXRmOCgpLmRhdGEoKSkpOwotI2Vsc2UKLSAgICByZXR1cm4gR1VuaXF1ZVB0cjxj
aGFyPihnX3VyaV91bmVzY2FwZV9zdHJpbmcocGF0aC51dGY4KCkuZGF0YSgpLCBudWxscHRyKSk7
Ci0jZW5kaWYKLX0KLQotQ1N0cmluZyBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3Ry
aW5nJiBwYXRoKQotewotI2lmIE9TKFdJTkRPV1MpCi0gICAgcmV0dXJuIHBhdGgudXRmOCgpOwot
I2Vsc2UKLSAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1l
KHBhdGgpOwotICAgIHJldHVybiBmaWxlbmFtZS5nZXQoKTsKLSNlbmRpZgotfQotCi0vLyBDb252
ZXJ0cyBhIHN0cmluZyB0byBzb21ldGhpbmcgc3VpdGFibGUgdG8gYmUgZGlzcGxheWVkIHRvIHRo
ZSB1c2VyLgotU3RyaW5nIGZpbGVuYW1lRm9yRGlzcGxheShjb25zdCBTdHJpbmcmIHN0cmluZykK
LXsKLSNpZiBPUyhXSU5ET1dTKQotICAgIHJldHVybiBzdHJpbmc7Ci0jZWxzZQotICAgIEdVbmlx
dWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUoc3RyaW5nKTsKLSAgICBp
ZiAoIWZpbGVuYW1lKQotICAgICAgICByZXR1cm4gc3RyaW5nOwotCi0gICAgR1VuaXF1ZVB0cjxn
Y2hhcj4gZGlzcGxheShnX2ZpbGVuYW1lX3RvX3V0ZjgoZmlsZW5hbWUuZ2V0KCksIC0xLCBudWxs
cHRyLCBudWxscHRyLCBudWxscHRyKSk7Ci0gICAgaWYgKCFkaXNwbGF5KQotICAgICAgICByZXR1
cm4gc3RyaW5nOwotCi0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoZGlzcGxheS5nZXQoKSk7
Ci0jZW5kaWYKLX0KLQotYm9vbCBmaWxlRXhpc3RzKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAg
ICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGgpOwot
ICAgIHJldHVybiBmaWxlbmFtZSA/IGdfZmlsZV90ZXN0KGZpbGVuYW1lLmdldCgpLCBHX0ZJTEVf
VEVTVF9FWElTVFMpIDogZmFsc2U7Ci19Ci0KLWJvb2wgZGVsZXRlRmlsZShjb25zdCBTdHJpbmcm
IHBhdGgpCi17Ci0gICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxl
bmFtZShwYXRoKTsKLSAgICByZXR1cm4gZmlsZW5hbWUgPyBnX3JlbW92ZShmaWxlbmFtZS5nZXQo
KSkgIT0gLTEgOiBmYWxzZTsKLX0KLQotYm9vbCBkZWxldGVFbXB0eURpcmVjdG9yeShjb25zdCBT
dHJpbmcmIHBhdGgpCi17Ci0gICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUgPSB1bmVzY2Fw
ZWRGaWxlbmFtZShwYXRoKTsKLSAgICByZXR1cm4gZmlsZW5hbWUgPyBnX3JtZGlyKGZpbGVuYW1l
LmdldCgpKSAhPSAtMSA6IGZhbHNlOwotfQotCi1zdGF0aWMgYm9vbCBnZXRGaWxlU3RhdChjb25z
dCBTdHJpbmcmIHBhdGgsIEdTdGF0QnVmKiBzdGF0QnVmZmVyKQotewotICAgIEdVbmlxdWVQdHI8
Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUocGF0aCk7Ci0gICAgaWYgKCFmaWxl
bmFtZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIGdfc3RhdChmaWxlbmFt
ZS5nZXQoKSwgc3RhdEJ1ZmZlcikgIT0gLTE7Ci19Ci0KLXN0YXRpYyBib29sIGdldEZpbGVMU3Rh
dChjb25zdCBTdHJpbmcmIHBhdGgsIEdTdGF0QnVmKiBzdGF0QnVmZmVyKQotewotICAgIEdVbmlx
dWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUocGF0aCk7Ci0gICAgaWYg
KCFmaWxlbmFtZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIGdfbHN0YXQo
ZmlsZW5hbWUuZ2V0KCksIHN0YXRCdWZmZXIpICE9IC0xOwotfQotCi1ib29sIGdldEZpbGVTaXpl
KGNvbnN0IFN0cmluZyYgcGF0aCwgbG9uZyBsb25nJiByZXN1bHRTaXplKQotewotICAgIEdTdGF0
QnVmIHN0YXRSZXN1bHQ7Ci0gICAgaWYgKCFnZXRGaWxlU3RhdChwYXRoLCAmc3RhdFJlc3VsdCkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJlc3VsdFNpemUgPSBzdGF0UmVzdWx0LnN0
X3NpemU7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgZ2V0RmlsZVNpemUoUGxhdGZvcm1G
aWxlSGFuZGxlIGhhbmRsZSwgbG9uZyBsb25nJiByZXN1bHRTaXplKQotewotICAgIGF1dG8gaW5m
byA9IGdfZmlsZV9pb19zdHJlYW1fcXVlcnlfaW5mbyhoYW5kbGUsIEdfRklMRV9BVFRSSUJVVEVf
U1RBTkRBUkRfU0laRSwgbnVsbHB0ciwgbnVsbHB0cik7Ci0gICAgaWYgKCFpbmZvKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXN1bHRTaXplID0gZ19maWxlX2luZm9fZ2V0X3NpemUo
aW5mbyk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLU9wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxl
Q3JlYXRpb25UaW1lKGNvbnN0IFN0cmluZyYpCi17Ci0gICAgLy8gRklYTUU6IElzIHRoZXJlIGEg
d2F5IHRvIHJldHJpZXZlIGZpbGUgY3JlYXRpb24gdGltZSB3aXRoIEd0ayBvbiBwbGF0Zm9ybXMg
dGhhdCBzdXBwb3J0IGl0PwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci19Ci0KLU9wdGlvbmFs
PFdhbGxUaW1lPiBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgpCi17
Ci0gICAgR1N0YXRCdWYgc3RhdFJlc3VsdDsKLSAgICBpZiAoIWdldEZpbGVTdGF0KHBhdGgsICZz
dGF0UmVzdWx0KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIHJldHVybiBX
YWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoc3RhdFJlc3VsdC5zdF9tdGltZSk7Ci19Ci0KLXN0YXRp
YyBGaWxlTWV0YWRhdGE6OlR5cGUgdG9GaWxlTWV0YXRhVHlwZShHU3RhdEJ1ZiBzdGF0UmVzdWx0
KQotewotICAgIGlmIChTX0lTRElSKHN0YXRSZXN1bHQuc3RfbW9kZSkpCi0gICAgICAgIHJldHVy
biBGaWxlTWV0YWRhdGE6OlR5cGU6OkRpcmVjdG9yeTsKLSAgICBpZiAoU19JU0xOSyhzdGF0UmVz
dWx0LnN0X21vZGUpKQotICAgICAgICByZXR1cm4gRmlsZU1ldGFkYXRhOjpUeXBlOjpTeW1ib2xp
Y0xpbms7Ci0gICAgcmV0dXJuIEZpbGVNZXRhZGF0YTo6VHlwZTo6RmlsZTsKLX0KLQotc3RhdGlj
IE9wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhVXNpbmdGdW5jdGlvbihjb25zdCBT
dHJpbmcmIHBhdGgsIGJvb2wgKCpzdGF0RnVuYykoY29uc3QgU3RyaW5nJiwgR1N0YXRCdWYqKSkK
LXsKLSAgICBHU3RhdEJ1ZiBzdGF0UmVzdWx0OwotICAgIGlmICghc3RhdEZ1bmMocGF0aCwgJnN0
YXRSZXN1bHQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgU3RyaW5nIGZp
bGVuYW1lID0gcGF0aEdldEZpbGVOYW1lKHBhdGgpOwotICAgIGJvb2wgaXNIaWRkZW4gPSAhZmls
ZW5hbWUuaXNFbXB0eSgpICYmIGZpbGVuYW1lWzBdID09ICcuJzsKLQotICAgIHJldHVybiBGaWxl
TWV0YWRhdGEgewotICAgICAgICBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoc3RhdFJlc3VsdC5z
dF9tdGltZSksCi0gICAgICAgIHN0YXRSZXN1bHQuc3Rfc2l6ZSwKLSAgICAgICAgaXNIaWRkZW4s
Ci0gICAgICAgIHRvRmlsZU1ldGF0YVR5cGUoc3RhdFJlc3VsdCkKLSAgICB9OwotfQotCi1PcHRp
b25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0g
ICAgcmV0dXJuIGZpbGVNZXRhZGF0YVVzaW5nRnVuY3Rpb24ocGF0aCwgJmdldEZpbGVMU3RhdCk7
Ci19Ci0KLU9wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlu
a3MoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIHJldHVybiBmaWxlTWV0YWRhdGFVc2luZ0Z1
bmN0aW9uKHBhdGgsICZnZXRGaWxlU3RhdCk7Ci19Ci0KLVN0cmluZyBwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGNvbXBvbmVudCkKLXsK
LSAgICBpZiAocGF0aC5lbmRzV2l0aChHX0RJUl9TRVBBUkFUT1JfUykpCi0gICAgICAgIHJldHVy
biBwYXRoICsgY29tcG9uZW50OwotICAgIHJldHVybiBwYXRoICsgR19ESVJfU0VQQVJBVE9SX1Mg
KyBjb21wb25lbnQ7Ci19Ci0KLVN0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKFN0cmlu
Z1ZpZXcgcGF0aCwgY29uc3QgVmVjdG9yPFN0cmluZ1ZpZXc+JiBjb21wb25lbnRzKQotewotICAg
IFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBidWlsZGVyLmFwcGVuZChwYXRoKTsKLSAgICBm
b3IgKGF1dG8mIGNvbXBvbmVudCA6IGNvbXBvbmVudHMpIHsKLSAgICAgICAgYnVpbGRlci5hcHBl
bmQoR19ESVJfU0VQQVJBVE9SX1MpOwotICAgICAgICBidWlsZGVyLmFwcGVuZChjb21wb25lbnQp
OwotICAgIH0KLSAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwotfQotCi1ib29sIG1ha2VB
bGxEaXJlY3Rvcmllcyhjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgR1VuaXF1ZVB0cjxnY2hh
cj4gZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShwYXRoKTsKLSAgICByZXR1cm4gZmlsZW5h
bWUgPyBnX21rZGlyX3dpdGhfcGFyZW50cyhmaWxlbmFtZS5nZXQoKSwgU19JUldYVSkgIT0gLTEg
OiBmYWxzZTsKLX0KLQotU3RyaW5nIGhvbWVEaXJlY3RvcnlQYXRoKCkKLXsKLSAgICByZXR1cm4g
c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihnX2dldF9ob21lX2RpcigpKTsKLX0K
LQotYm9vbCBjcmVhdGVTeW1ib2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25z
dCBTdHJpbmcmIHN5bWJvbGljTGlua1BhdGgpCi17Ci0gICAgQ1N0cmluZyB0YXJnZXRQYXRoRlNS
ZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24odGFyZ2V0UGF0aCk7Ci0gICAgaWYgKCF0YXJn
ZXRQYXRoRlNSZXAuZGF0YSgpIHx8IHRhcmdldFBhdGhGU1JlcC5kYXRhKClbMF0gPT0gJ1wwJykK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgQ1N0cmluZyBzeW1ib2xpY0xpbmtQYXRoRlNS
ZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oc3ltYm9saWNMaW5rUGF0aCk7Ci0gICAgaWYg
KCFzeW1ib2xpY0xpbmtQYXRoRlNSZXAuZGF0YSgpIHx8IHN5bWJvbGljTGlua1BhdGhGU1JlcC5k
YXRhKClbMF0gPT0gJ1wwJykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuICFz
eW1saW5rKHRhcmdldFBhdGhGU1JlcC5kYXRhKCksIHN5bWJvbGljTGlua1BhdGhGU1JlcC5kYXRh
KCkpOwotfQotCi1TdHJpbmcgcGF0aEdldEZpbGVOYW1lKGNvbnN0IFN0cmluZyYgcGF0aE5hbWUp
Ci17Ci0gICAgR1VuaXF1ZVB0cjxnY2hhcj4gdG1wRmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFt
ZShwYXRoTmFtZSk7Ci0gICAgaWYgKCF0bXBGaWxlbmFtZSkKLSAgICAgICAgcmV0dXJuIHBhdGhO
YW1lOwotCi0gICAgR1VuaXF1ZVB0cjxnY2hhcj4gYmFzZU5hbWUoZ19wYXRoX2dldF9iYXNlbmFt
ZSh0bXBGaWxlbmFtZS5nZXQoKSkpOwotICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGJhc2VO
YW1lLmdldCgpKTsKLX0KLQotYm9vbCBnZXRWb2x1bWVGcmVlU3BhY2UoY29uc3QgU3RyaW5nJiBw
YXRoLCB1aW50NjRfdCYgZnJlZVNwYWNlKQotewotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVu
YW1lID0gdW5lc2NhcGVkRmlsZW5hbWUocGF0aCk7Ci0gICAgaWYgKCFmaWxlbmFtZSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgR1JlZlB0cjxHRmlsZT4gZmlsZSA9IGFkb3B0R1JlZihn
X2ZpbGVfbmV3X2Zvcl9wYXRoKGZpbGVuYW1lLmdldCgpKSk7Ci0gICAgR1JlZlB0cjxHRmlsZUlu
Zm8+IGZpbGVJbmZvID0gYWRvcHRHUmVmKGdfZmlsZV9xdWVyeV9maWxlc3lzdGVtX2luZm8oZmls
ZS5nZXQoKSwgR19GSUxFX0FUVFJJQlVURV9GSUxFU1lTVEVNX0ZSRUUsIDAsIDApKTsKLSAgICBp
ZiAoIWZpbGVJbmZvKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBmcmVlU3BhY2UgPSBn
X2ZpbGVfaW5mb19nZXRfYXR0cmlidXRlX3VpbnQ2NChmaWxlSW5mby5nZXQoKSwgR19GSUxFX0FU
VFJJQlVURV9GSUxFU1lTVEVNX0ZSRUUpOwotICAgIHJldHVybiAhIWZyZWVTcGFjZTsKLX0KLQot
U3RyaW5nIGRpcmVjdG9yeU5hbWUoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIEdVbmlxdWVQ
dHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUocGF0aCk7Ci0gICAgaWYgKCFm
aWxlbmFtZSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgR1VuaXF1ZVB0cjxjaGFy
PiBkaXJuYW1lKGdfcGF0aF9nZXRfZGlybmFtZShmaWxlbmFtZS5nZXQoKSkpOwotICAgIHJldHVy
biBTdHJpbmc6OmZyb21VVEY4KGRpcm5hbWUuZ2V0KCkpOwotfQotCi1WZWN0b3I8U3RyaW5nPiBs
aXN0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBmaWx0ZXIpCi17
Ci0gICAgVmVjdG9yPFN0cmluZz4gZW50cmllczsKLQotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZp
bGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUocGF0aCk7Ci0gICAgaWYgKCFmaWxlbmFtZSkKLSAg
ICAgICAgcmV0dXJuIGVudHJpZXM7Ci0KLSAgICBHVW5pcXVlUHRyPEdEaXI+IGRpcihnX2Rpcl9v
cGVuKGZpbGVuYW1lLmdldCgpLCAwLCBudWxscHRyKSk7Ci0gICAgaWYgKCFkaXIpCi0gICAgICAg
IHJldHVybiBlbnRyaWVzOwotCi0gICAgR1VuaXF1ZVB0cjxHUGF0dGVyblNwZWM+IHBzcGVjKGdf
cGF0dGVybl9zcGVjX25ldygoZmlsdGVyLnV0ZjgoKSkuZGF0YSgpKSk7Ci0gICAgd2hpbGUgKGNv
bnN0IGNoYXIqIG5hbWUgPSBnX2Rpcl9yZWFkX25hbWUoZGlyLmdldCgpKSkgewotICAgICAgICBp
ZiAoIWdfcGF0dGVybl9tYXRjaF9zdHJpbmcocHNwZWMuZ2V0KCksIG5hbWUpKQotICAgICAgICAg
ICAgY29udGludWU7Ci0KLSAgICAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZW50cnkoZ19idWlsZF9m
aWxlbmFtZShmaWxlbmFtZS5nZXQoKSwgbmFtZSwgbnVsbHB0cikpOwotICAgICAgICBlbnRyaWVz
LmFwcGVuZChzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGVudHJ5LmdldCgpKSk7
Ci0gICAgfQotCi0gICAgcmV0dXJuIGVudHJpZXM7Ci19Ci0KLVN0cmluZyBvcGVuVGVtcG9yYXJ5
RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpCi17
Ci0gICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUoZ19zdHJkdXBfcHJpbnRmKCIlcyVzIiwg
cHJlZml4LnV0ZjgoKS5kYXRhKCksIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKS51dGY4KCku
ZGF0YSgpKSk7Ci0gICAgR1VuaXF1ZVB0cjxnY2hhcj4gdGVtcFBhdGgoZ19idWlsZF9maWxlbmFt
ZShnX2dldF90bXBfZGlyKCksIGZpbGVuYW1lLmdldCgpLCBOVUxMKSk7Ci0gICAgR1JlZlB0cjxH
RmlsZT4gZmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKHRlbXBQYXRoLmdldCgp
KSk7Ci0KLSAgICBoYW5kbGUgPSBnX2ZpbGVfY3JlYXRlX3JlYWR3cml0ZShmaWxlLmdldCgpLCBH
X0ZJTEVfQ1JFQVRFX05PTkUsIDAsIDApOwotICAgIGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUp
KQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgo
dGVtcFBhdGguZ2V0KCkpOwotfQotCi1QbGF0Zm9ybUZpbGVIYW5kbGUgb3BlbkZpbGUoY29uc3Qg
U3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUgbW9kZSkKLXsKLSAgICBHVW5pcXVlUHRyPGdjaGFy
PiBmaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGgpOwotICAgIGlmICghZmlsZW5hbWUp
Ci0gICAgICAgIHJldHVybiBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOwotCi0gICAgR1JlZlB0
cjxHRmlsZT4gZmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKGZpbGVuYW1lLmdl
dCgpKSk7Ci0gICAgR0ZpbGVJT1N0cmVhbSogaW9TdHJlYW0gPSAwOwotICAgIGlmIChtb2RlID09
IEZpbGVPcGVuTW9kZTo6UmVhZCkKLSAgICAgICAgaW9TdHJlYW0gPSBnX2ZpbGVfb3Blbl9yZWFk
d3JpdGUoZmlsZS5nZXQoKSwgMCwgMCk7Ci0gICAgZWxzZSBpZiAobW9kZSA9PSBGaWxlT3Blbk1v
ZGU6OldyaXRlKSB7Ci0gICAgICAgIGlmIChnX2ZpbGVfdGVzdChmaWxlbmFtZS5nZXQoKSwgc3Rh
dGljX2Nhc3Q8R0ZpbGVUZXN0PihHX0ZJTEVfVEVTVF9FWElTVFMgfCBHX0ZJTEVfVEVTVF9JU19S
RUdVTEFSKSkpCi0gICAgICAgICAgICBpb1N0cmVhbSA9IGdfZmlsZV9vcGVuX3JlYWR3cml0ZShm
aWxlLmdldCgpLCAwLCAwKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgaW9TdHJlYW0gPSBn
X2ZpbGVfY3JlYXRlX3JlYWR3cml0ZShmaWxlLmdldCgpLCBHX0ZJTEVfQ1JFQVRFX05PTkUsIDAs
IDApOwotICAgIH0KLQotICAgIHJldHVybiBpb1N0cmVhbTsKLX0KLQotdm9pZCBjbG9zZUZpbGUo
UGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpCi17Ci0gICAgaWYgKCFpc0hhbmRsZVZhbGlkKGhh
bmRsZSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdfaW9fc3RyZWFtX2Nsb3NlKEdfSU9fU1RS
RUFNKGhhbmRsZSksIDAsIDApOwotICAgIGdfb2JqZWN0X3VucmVmKGhhbmRsZSk7Ci0gICAgaGFu
ZGxlID0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKLX0KLQotbG9uZyBsb25nIHNlZWtGaWxl
KFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQsIEZpbGVTZWVrT3Jp
Z2luIG9yaWdpbikKLXsKLSAgICBHU2Vla1R5cGUgc2Vla1R5cGUgPSBHX1NFRUtfU0VUOwotICAg
IHN3aXRjaCAob3JpZ2luKSB7Ci0gICAgY2FzZSBGaWxlU2Vla09yaWdpbjo6QmVnaW5uaW5nOgot
ICAgICAgICBzZWVrVHlwZSA9IEdfU0VFS19TRVQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
RmlsZVNlZWtPcmlnaW46OkN1cnJlbnQ6Ci0gICAgICAgIHNlZWtUeXBlID0gR19TRUVLX0NVUjsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGaWxlU2Vla09yaWdpbjo6RW5kOgotICAgICAgICBz
ZWVrVHlwZSA9IEdfU0VFS19FTkQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLQotICAgIGlmICghZ19zZWVrYWJsZV9z
ZWVrKEdfU0VFS0FCTEUoZ19pb19zdHJlYW1fZ2V0X2lucHV0X3N0cmVhbShHX0lPX1NUUkVBTSho
YW5kbGUpKSksCi0gICAgICAgIG9mZnNldCwgc2Vla1R5cGUsIDAsIDApKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICByZXR1cm4gZ19zZWVrYWJsZV90ZWxsKEdfU0VFS0FC
TEUoZ19pb19zdHJlYW1fZ2V0X2lucHV0X3N0cmVhbShHX0lPX1NUUkVBTShoYW5kbGUpKSkpOwot
fQotCi1pbnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY29uc3QgY2hh
ciogZGF0YSwgaW50IGxlbmd0aCkKLXsKLSAgICBnc2l6ZSBieXRlc1dyaXR0ZW47Ci0gICAgZ19v
dXRwdXRfc3RyZWFtX3dyaXRlX2FsbChnX2lvX3N0cmVhbV9nZXRfb3V0cHV0X3N0cmVhbShHX0lP
X1NUUkVBTShoYW5kbGUpKSwKLSAgICAgICAgZGF0YSwgbGVuZ3RoLCAmYnl0ZXNXcml0dGVuLCAw
LCAwKTsKLSAgICByZXR1cm4gYnl0ZXNXcml0dGVuOwotfQotCi1pbnQgcmVhZEZyb21GaWxlKFBs
YXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCi17Ci0gICAg
R1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwotICAgIGRvIHsKLSAgICAgICAgZ3NzaXplIGJ5
dGVzUmVhZCA9IGdfaW5wdXRfc3RyZWFtX3JlYWQoZ19pb19zdHJlYW1fZ2V0X2lucHV0X3N0cmVh
bShHX0lPX1NUUkVBTShoYW5kbGUpKSwKLSAgICAgICAgICAgIGRhdGEsIGxlbmd0aCwgMCwgJmVy
cm9yLm91dFB0cigpKTsKLSAgICAgICAgaWYgKGJ5dGVzUmVhZCA+PSAwKQotICAgICAgICAgICAg
cmV0dXJuIGJ5dGVzUmVhZDsKLSAgICB9IHdoaWxlIChlcnJvciAmJiBlcnJvci0+Y29kZSA9PSBH
X0ZJTEVfRVJST1JfSU5UUik7Ci0gICAgcmV0dXJuIC0xOwotfQotCi1ib29sIG1vdmVGaWxlKGNv
bnN0IFN0cmluZyYgb2xkUGF0aCwgY29uc3QgU3RyaW5nJiBuZXdQYXRoKQotewotICAgIEdVbmlx
dWVQdHI8Z2NoYXI+IG9sZEZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUob2xkUGF0aCk7Ci0g
ICAgaWYgKCFvbGRGaWxlbmFtZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgR1VuaXF1
ZVB0cjxnY2hhcj4gbmV3RmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShuZXdQYXRoKTsKLSAg
ICBpZiAoIW5ld0ZpbGVuYW1lKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBHUmVmUHRy
PEdGaWxlPiBvbGRGaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgob2xkRmlsZW5h
bWUuZ2V0KCkpKTsKLSAgICBHUmVmUHRyPEdGaWxlPiBuZXdGaWxlID0gYWRvcHRHUmVmKGdfZmls
ZV9uZXdfZm9yX3BhdGgobmV3RmlsZW5hbWUuZ2V0KCkpKTsKLQotICAgIHJldHVybiBnX2ZpbGVf
bW92ZShvbGRGaWxlLmdldCgpLCBuZXdGaWxlLmdldCgpLCBHX0ZJTEVfQ09QWV9PVkVSV1JJVEUs
IG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpOwotfQotCi1ib29sIGhhcmRMaW5r
T3JDb3B5RmlsZShjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlv
bikKLXsKLSNpZiBPUyhXSU5ET1dTKQotICAgIHJldHVybiAhITo6Q29weUZpbGUoc291cmNlLmNo
YXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpLCBkZXN0aW5hdGlvbi5jaGFyYWN0
ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSwgVFJVRSk7Ci0jZWxzZQotICAgIEdVbmlx
dWVQdHI8Z2NoYXI+IHNvdXJjZUZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUoc291cmNlKTsK
LSAgICBpZiAoIXNvdXJjZUZpbGVuYW1lKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBH
VW5pcXVlUHRyPGdjaGFyPiBkZXN0aW5hdGlvbkZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUo
ZGVzdGluYXRpb24pOwotICAgIGlmICghZGVzdGluYXRpb25GaWxlbmFtZSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgaWYgKCFsaW5rKHNvdXJjZUZpbGVuYW1lLmdldCgpLCBkZXN0aW5h
dGlvbkZpbGVuYW1lLmdldCgpKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAvLyBIYXJk
IGxpbmsgZmFpbGVkLiBQZXJmb3JtIGEgY29weSBpbnN0ZWFkLgotICAgIEdSZWZQdHI8R0ZpbGU+
IHNvdXJjZUZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0aChzb3VyY2VGaWxlbmFt
ZS5nZXQoKSkpOwotICAgIEdSZWZQdHI8R0ZpbGU+IGRlc3RpbmF0aW9uRmlsZSA9IGFkb3B0R1Jl
ZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKGRlc3RpbmF0aW9uRmlsZW5hbWUuZ2V0KCkpKTsKLSAgICBy
ZXR1cm4gZ19maWxlX2NvcHkoc291cmNlRmlsZS5nZXQoKSwgZGVzdGluYXRpb25GaWxlLmdldCgp
LCBHX0ZJTEVfQ09QWV9OT05FLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKTsK
LSNlbmRpZgotfQotCi1PcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29uc3QgQ1N0
cmluZyYgZnNGaWxlKQotewotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2Nh
cGVkRmlsZW5hbWUoZnNGaWxlLmRhdGEoKSk7Ci0gICAgaWYgKCFmaWxlbmFtZSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIEdSZWZQdHI8R0ZpbGU+IGZpbGUgPSBhZG9wdEdS
ZWYoZ19maWxlX25ld19mb3JfcGF0aChmaWxlbmFtZS5nZXQoKSkpOwotICAgIEdSZWZQdHI8R0Zp
bGVJbmZvPiBmaWxlSW5mbyA9IGFkb3B0R1JlZihnX2ZpbGVfcXVlcnlfZmlsZXN5c3RlbV9pbmZv
KGZpbGUuZ2V0KCksIEdfRklMRV9BVFRSSUJVVEVfVU5JWF9ERVZJQ0UsIG51bGxwdHIsIG51bGxw
dHIpKTsKLSAgICBpZiAoIWZpbGVJbmZvKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owot
Ci0gICAgcmV0dXJuIGdfZmlsZV9pbmZvX2dldF9hdHRyaWJ1dGVfdWludDMyKGZpbGVJbmZvLmdl
dCgpLCBHX0ZJTEVfQVRUUklCVVRFX1VOSVhfREVWSUNFKTsKLX0KLQotI2lmIFVTRShGSUxFX0xP
Q0spCi1ib29sIGxvY2tGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIE9wdGlvblNldDxG
aWxlTG9ja01vZGU+IGxvY2tNb2RlKQotewotICAgIENPTVBJTEVfQVNTRVJUKExPQ0tfU0ggPT0g
V1RGOjplbnVtVG9VbmRlcmx5aW5nVHlwZShGaWxlTG9ja01vZGU6OlNoYXJlZCksIExvY2tTaGFy
ZWRFbmNvZGluZ0lzQXNFeHBlY3RlZCk7Ci0gICAgQ09NUElMRV9BU1NFUlQoTE9DS19FWCA9PSBX
VEY6OmVudW1Ub1VuZGVybHlpbmdUeXBlKEZpbGVMb2NrTW9kZTo6RXhjbHVzaXZlKSwgTG9ja0V4
Y2x1c2l2ZUVuY29kaW5nSXNBc0V4cGVjdGVkKTsKLSAgICBDT01QSUxFX0FTU0VSVChMT0NLX05C
ID09IFdURjo6ZW51bVRvVW5kZXJseWluZ1R5cGUoRmlsZUxvY2tNb2RlOjpOb25ibG9ja2luZyks
IExvY2tOb25ibG9ja2luZ0VuY29kaW5nSXNBc0V4cGVjdGVkKTsKLSAgICBhdXRvKiBpbnB1dFN0
cmVhbSA9IGdfaW9fc3RyZWFtX2dldF9pbnB1dF9zdHJlYW0oR19JT19TVFJFQU0oaGFuZGxlKSk7
Ci0gICAgaW50IHJlc3VsdCA9IGZsb2NrKGdfZmlsZV9kZXNjcmlwdG9yX2Jhc2VkX2dldF9mZChH
X0ZJTEVfREVTQ1JJUFRPUl9CQVNFRChpbnB1dFN0cmVhbSkpLCBsb2NrTW9kZS50b1JhdygpKTsK
LSAgICByZXR1cm4gcmVzdWx0ICE9IC0xOwotfQotCi1ib29sIHVubG9ja0ZpbGUoUGxhdGZvcm1G
aWxlSGFuZGxlIGhhbmRsZSkKLXsKLSAgICBhdXRvKiBpbnB1dFN0cmVhbSA9IGdfaW9fc3RyZWFt
X2dldF9pbnB1dF9zdHJlYW0oR19JT19TVFJFQU0oaGFuZGxlKSk7Ci0gICAgaW50IHJlc3VsdCA9
IGZsb2NrKGdfZmlsZV9kZXNjcmlwdG9yX2Jhc2VkX2dldF9mZChHX0ZJTEVfREVTQ1JJUFRPUl9C
QVNFRChpbnB1dFN0cmVhbSkpLCBMT0NLX1VOKTsKLSAgICByZXR1cm4gcmVzdWx0ICE9IC0xOwot
fQotI2VuZGlmIC8vIFVTRShGSUxFX0xPQ0spCi0KLX0gLy8gbmFtZXNwYWNlIEZpbGVTeXN0ZW0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
bGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwCmluZGV4IGI0ODk2YzA4NTQ2MGU3YzBiZTU2NDA4NGVj
ODhlZjIyYWY2MGI4NDQuLmUwYTg1OWUzZWVhM2Q5ZjczZDg3OGEzMDA0ZWJkODE3ZTFiOTkyOGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xp
Yi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGli
LmNwcApAQCAtMTksNyArMTksNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNo
YXJlZEJ1ZmZlci5oIgogCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgorI2luY2x1ZGUgPHd0Zi9G
aWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Np
b24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5tbQppbmRleCBlOGRkM2I1YWVjODI5M2Nk
NWVkOTZlOThmMTAzNWVlNTNlMjhjN2I0Li4yNGY5NWU4NDQxMzY3ZTIyMTljYTIyNjQ0NWU4NjIy
OGY1Nzk0ODJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNz
aW9uQVZDb250ZW50S2V5U2Vzc2lvbi5tbQpAQCAtMjksNyArMjksNiBAQAogI2lmIEVOQUJMRShM
RUdBQ1lfRU5DUllQVEVEX01FRElBKSAmJiBFTkFCTEUoTUVESUFfU09VUkNFKQogCiAjaW1wb3J0
ICJDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgiCi0jaW1wb3J0ICJGaWxlU3lzdGVtLmgi
CiAjaW1wb3J0ICJMZWdhY3lDRE0uaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIk1l
ZGlhUGxheWVyLmgiCkBAIC0zOSw2ICszOCw3IEBACiAjaW1wb3J0IDxDb3JlTWVkaWEvQ01CYXNl
Lmg+CiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9UeXBlZEFycmF5SW5saW5lcy5oPgogI2ltcG9y
dCA8b2JqYy9vYmpjLXJ1bnRpbWUuaD4KKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW1w
b3J0IDx3dGYvU29mdExpbmtpbmcuaD4KIAogU09GVF9MSU5LX0ZSQU1FV09SS19PUFRJT05BTChB
VkZvdW5kYXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFW
U3RyZWFtU2Vzc2lvbi5tbQppbmRleCA5OTI5NDMxNWQ4NjI0MWIxNjhmMjhhYTcyZWRkZTBkOTdj
ZjRhNzhjLi5jMzU3M2U1YzYwODFjOTliMTQwNGUwZTQxYzUwZTA0OWUyOTFhMjJlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9D
RE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVlN0cmVhbVNlc3Npb24ubW0K
QEAgLTI5LDcgKzI5LDYgQEAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYg
RU5BQkxFKE1FRElBX1NPVVJDRSkKIAogI2ltcG9ydCAiQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQy5oIgotI2ltcG9ydCAiRmlsZVN5c3RlbS5oIgogI2ltcG9ydCAiTGVnYWN5Q0RNLmgiCiAj
aW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJNZWRpYVBsYXllci5oIgpAQCAtNDAsNiArMzks
NyBAQAogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvVHlwZWRBcnJheUlubGluZXMuaD4KICNpbXBv
cnQgPG9iamMvb2JqYy1ydW50aW1lLmg+CiAjaW1wb3J0IDxwYWwvc3BpL21hYy9BVkZvdW5kYXRp
b25TUEkuaD4KKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDx3dGYvU29mdExp
bmtpbmcuaD4KICNpbXBvcnQgPHd0Zi9VVUlELmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25NZWRpYVNv
dXJjZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IDJjYjJkNmZh
MGNkOGVmYTQyMzE4OTFhMDk4MTk4M2M5YjhjMDc3ZTQuLmVjNTgzNzhhOGJlYjZhNTc1M2QwMmRh
NDlmZWRhYjY2ZWViNTk3YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
Q0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5tbQpAQCAtMjksOSArMjksOSBAQAogI2lmIEVO
QUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSAmJiBFTkFCTEUoTUVESUFfU09VUkNFKQogCiAj
aW1wb3J0ICJDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgiCi0jaW1wb3J0ICJGaWxlU3lz
dGVtLmgiCiAjaW1wb3J0ICJXZWJDb3JlTlNFcnJvckV4dHJhcy5oIgogI2ltcG9ydCA8QVZGb3Vu
ZGF0aW9uL0FWRXJyb3IuaD4KKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IDVlMzZkZDAwNjkz
MDc1MDExMmI3MTNmZGM0ZTVhZWE0ZDEwYTljMDkuLmQ2ZDVlODJiMjM3NzZmZDYyNzdlMjliNjlk
ZWI2NjI5ZjhjOTE4YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KQEAgLTMxLDcgKzMx
LDYgQEAKICNpbXBvcnQgIkFWQXNzZXRUcmFja1V0aWxpdGllcy5oIgogI2ltcG9ydCAiQVZGb3Vu
ZGF0aW9uTUlNRVR5cGVDYWNoZS5oIgogI2ltcG9ydCAiQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lv
bi5oIgotI2ltcG9ydCAiRmlsZVN5c3RlbS5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0Q0cu
aCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIk1lZGlhU291cmNlUHJpdmF0ZUFWRk9i
akMuaCIKQEAgLTQ5LDYgKzQ4LDcgQEAKICNpbXBvcnQgPHBhbC9hdmZvdW5kYXRpb24vTWVkaWFU
aW1lQVZGb3VuZGF0aW9uLmg+CiAjaW1wb3J0IDxwYWwvc3BpL21hYy9BVkZvdW5kYXRpb25TUEku
aD4KICNpbXBvcnQgPHd0Zi9EZXF1ZS5oPgorI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNp
bXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRl
eCAwZjA1ZWI5MTk5ZGJmM2U0OWUxYTEyZTA3NTY2ZWVjNDg5MWRlMTc3Li40MTQwYzExYjBlYTQ3
OThlNjYwZDY0OTU4MGZlY2FhZDNjMjZkNGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgRU5BQkxF
KFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKQogCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2lu
Y2x1ZGUgIkdTdHJlYW1lckNvbW1vbi5oIgogI2luY2x1ZGUgIkhUVFBIZWFkZXJOYW1lcy5oIgog
I2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKQEAgLTQyLDYgKzQxLDcgQEAKICNpbmNsdWRl
IDxnc3QvZ3N0Lmg+CiAjaW5jbHVkZSA8Z3N0L3BidXRpbHMvbWlzc2luZy1wbHVnaW5zLmg+CiAj
aW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8
d3RmL0hleE51bWJlci5oPgogI2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KICNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9RdWlja0xvb2subW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29r
Lm1tCmluZGV4IGEwMjc3ZjUwOWIyZjMwNTUxZWMyMzRmNmZmMThhNWUzNDRlZWQ2NDAuLjA3Mzc0
MDY3MDU3N2UxZWZkZDAzM2UxYmFjZDhjMTQ4YmNkY2FkZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9RdWlja0xvb2subW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1F1aWNrTG9vay5tbQpAQCAtMjgsMTEgKzI4LDExIEBACiAKICNpZiBVU0UoUVVJ
Q0tfTE9PSykKIAotI2ltcG9ydCAiRmlsZVN5c3RlbS5oIgogI2ltcG9ydCAiUHJldmlld0NvbnZl
cnRlci5oIgogI2ltcG9ydCAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW1wb3J0ICJTY2hlbWVSZWdp
c3RyeS5oIgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0ZpbGVNYW5hZ2VyU1BJLmg+CisjaW1w
b3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8d3RmL0xvY2suaD4KICNpbXBvcnQgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tCmluZGV4IGJmODIxODM5OTE1ZTgw
ZDU4OTlhOTQ4OTk5ZjJmMDIwNmQ4Y2ZmM2EuLjM1NDVkN2VmY2FjODY3NjQ4ZjQ5YTQ3NGU4YTAy
MGI1MWM4OGQ0ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJ
dGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tCkBAIC0zNCwxMSArMzQsMTEgQEAKICNpbXBv
cnQgPFVJS2l0L05TSXRlbVByb3ZpZGVyK1VJS2l0QWRkaXRpb25zLmg+CiAjaW1wb3J0IDxVSUtp
dC9VSUNvbG9yLmg+CiAjaW1wb3J0IDxVSUtpdC9VSUltYWdlLmg+Ci0jaW1wb3J0IDxXZWJDb3Jl
L0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPFdlYkNvcmUvUGFzdGVib2FyZC5oPgogI2ltcG9ydCA8
cGFsL2lvcy9VSUtpdFNvZnRMaW5rLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2lvcy9VSUtpdFNQSS5o
PgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgog
I2ltcG9ydCA8d3RmL09TT2JqZWN0UHRyLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAK
QEAgLTY5NCw3ICs2OTQsNyBAQCBzdGF0aWMgTlNVUkwgKmxpbmtUZW1wb3JhcnlJdGVtUHJvdmlk
ZXJGaWxlc1RvRHJvcFN0YWdpbmdEaXJlY3RvcnkoTlNVUkwgKnVybCwgTgogICAgIGlmICghdXJs
KQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgTlNTdHJpbmcgKnRlbXBvcmFyeURhdGFJbnRl
cmFjdGlvbkRpcmVjdG9yeSA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURp
cmVjdG9yeShkYXRhSW50ZXJhY3Rpb25EaXJlY3RvcnlQcmVmaXgpOworICAgIE5TU3RyaW5nICp0
ZW1wb3JhcnlEYXRhSW50ZXJhY3Rpb25EaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpjcmVhdGVUZW1w
b3JhcnlEaXJlY3RvcnkoZGF0YUludGVyYWN0aW9uRGlyZWN0b3J5UHJlZml4KTsKICAgICBpZiAo
IXRlbXBvcmFyeURhdGFJbnRlcmFjdGlvbkRpcmVjdG9yeSkKICAgICAgICAgcmV0dXJuIG5pbDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0ZpbGVTeXN0ZW1NYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRmlsZVN5c3RlbU1hYy5tbQpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGVkNzUxYTdlYzBlNWQwYmFmNzc0Zjk4NjEwYWNiMDQ1
Y2QyYjAwNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRmlsZVN5c3RlbU1hYy5tbQorKysgL2Rldi9udWxs
CkBAIC0xLDg4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgot
I2ltcG9ydCAiRmlsZVN5c3RlbS5oIgotCi0jaWYgUExBVEZPUk0oTUFDKQotCi0jaW1wb3J0IDxw
YWwvc3BpL21hYy9NZXRhZGF0YVNQSS5oPgotI2ltcG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFz
Lmg+Ci0jaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1ib29sIEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYg
cGF0aCkKLXsKLSAgICBhdXRvIGZpbGVNYW5hZ2VyID0gYWRvcHROUyhbW05TRmlsZU1hbmFnZXIg
YWxsb2NdIGluaXRdKTsKLQotICAgIGlmIChOU0FycmF5ICpkaXJlY3RvcnlDb250ZW50cyA9IFtm
aWxlTWFuYWdlciBjb250ZW50c09mRGlyZWN0b3J5QXRQYXRoOnBhdGggZXJyb3I6bnVsbHB0cl0p
IHsKLSAgICAgICAgLy8gRXhwbGljaXRseSBsb29rIGZvciBhbmQgZGVsZXRlIC5EU19TdG9yZSBm
aWxlcy4KLSAgICAgICAgaWYgKGRpcmVjdG9yeUNvbnRlbnRzLmNvdW50ID09IDEgJiYgW2RpcmVj
dG9yeUNvbnRlbnRzLmZpcnN0T2JqZWN0IGlzRXF1YWxUb1N0cmluZzpAIi5EU19TdG9yZSJdKQot
ICAgICAgICAgICAgW2ZpbGVNYW5hZ2VyIHJlbW92ZUl0ZW1BdFBhdGg6W3BhdGggc3RyaW5nQnlB
cHBlbmRpbmdQYXRoQ29tcG9uZW50OmRpcmVjdG9yeUNvbnRlbnRzLmZpcnN0T2JqZWN0XSBlcnJv
cjpudWxscHRyXTsKLSAgICB9Ci0KLSAgICAvLyBybWRpciguLi4pIHJldHVybnMgMCBvbiBzdWNj
ZXNzZnVsIGRlbGV0aW9uIG9mIHRoZSBwYXRoIGFuZCBub24temVybyBpbiBhbnkgb3RoZXIgY2Fz
ZSAoaW5jbHVkaW5nIGludmFsaWQgcGVybWlzc2lvbnMgb3Igbm9uLWV4aXN0ZW50IGZpbGUpCi0g
ICAgcmV0dXJuICFybWRpcihGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0
aCkuZGF0YSgpKTsKLX0KLQotdm9pZCBGaWxlU3lzdGVtOjpzZXRNZXRhZGF0YVVSTChjb25zdCBT
dHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbWV0YWRhdGFVUkxTdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgcmVmZXJyZXIpCi17Ci0gICAgU3RyaW5nIHVybFN0cmluZzsKLSAgICBpZiAoTlNVUkwgKnVy
bCA9IFVSTFdpdGhVc2VyVHlwZWRTdHJpbmcobWV0YWRhdGFVUkxTdHJpbmcsIG5pbCkpCi0gICAg
ICAgIHVybFN0cmluZyA9IFdURjo6dXNlclZpc2libGVTdHJpbmcoV1RGOjpVUkxCeVJlbW92aW5n
VXNlckluZm8odXJsKSk7Ci0gICAgZWxzZQotICAgICAgICB1cmxTdHJpbmcgPSBtZXRhZGF0YVVS
TFN0cmluZzsKLQotICAgIC8vIENhbGwgTWV0YWRhdGEgQVBJIG9uIGEgYmFja2dyb3VuZCBxdWV1
ZSBiZWNhdXNlIGl0IGNhbiB0YWtlIHNvbWUgdGltZS4KLSAgICBkaXNwYXRjaF9hc3luYyhkaXNw
YXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDAp
LCBbcGF0aCA9IHBhdGguaXNvbGF0ZWRDb3B5KCksIHVybFN0cmluZyA9IHVybFN0cmluZy5pc29s
YXRlZENvcHkoKSwgcmVmZXJyZXIgPSByZWZlcnJlci5pc29sYXRlZENvcHkoKV0gewotICAgICAg
ICBhdXRvIGl0ZW0gPSBhZG9wdENGKE1ESXRlbUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBw
YXRoLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpKTsKLSAgICAgICAgaWYgKCFpdGVtKQotICAgICAg
ICAgICAgcmV0dXJuOwotCi0gICAgICAgIGF1dG8gd2hlcmVGcm9tQXR0cmlidXRlID0gYWRvcHRO
UyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6dXJsU3RyaW5nLCBuaWxd
KTsKLSAgICAgICAgaWYgKCFyZWZlcnJlci5pc051bGwoKSkKLSAgICAgICAgICAgIFt3aGVyZUZy
b21BdHRyaWJ1dGUgYWRkT2JqZWN0OnJlZmVycmVyXTsKLQotICAgICAgICBNREl0ZW1TZXRBdHRy
aWJ1dGUoaXRlbS5nZXQoKSwga01ESXRlbVdoZXJlRnJvbXMsIChfX2JyaWRnZSBDRkFycmF5UmVm
KXdoZXJlRnJvbUF0dHJpYnV0ZS5nZXQoKSk7Ci0gICAgICAgIE1ESXRlbVNldEF0dHJpYnV0ZShp
dGVtLmdldCgpLCBrTURJdGVtRG93bmxvYWRlZERhdGUsIChfX2JyaWRnZSBDRkFycmF5UmVmKUBb
IFtOU0RhdGUgZGF0ZV0gXSk7Ci0gICAgfSk7Ci19Ci0KLWJvb2wgRmlsZVN5c3RlbTo6Y2FuRXhj
bHVkZUZyb21CYWNrdXAoKQotewotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIEZpbGVTeXN0
ZW06OmV4Y2x1ZGVGcm9tQmFja3VwKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICAvLyBJdCBp
cyBjcml0aWNhbCB0byBwYXNzIEZBTFNFIGZvciBleGNsdWRlQnlQYXRoIGJlY2F1c2UgZXhjbHVk
aW5nIGJ5IHBhdGggcmVxdWlyZXMgcm9vdCBwcml2aWxlZ2VzLgotICAgIENTQmFja3VwU2V0SXRl
bUV4Y2x1ZGVkKEZpbGVTeXN0ZW06OnBhdGhBc1VSTChwYXRoKS5nZXQoKSwgVFJVRSwgRkFMU0Up
OwotICAgIHJldHVybiB0cnVlOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRp
ZiAvLyBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyQ29jb2EubW0KaW5kZXggZDdlM2YzOWE2N2IzNzNiODM4NzljODQwOWM1OGIw
ODk4ZDM0NzllYy4uZDc5ZTJmNjBjNjA5NDAzYWJkZmMwMmFlYmY3MGEyNmJjY2RmMmYzZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5t
bQpAQCAtMjksMTMgKzI5LDEzIEBACiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEFW
Rk9VTkRBVElPTikKIAogI2luY2x1ZGUgIkF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaCIKLSNpbmNs
dWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lZGlh
U3RyZWFtVHJhY2tQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViQXVkaW9CdWZmZXJMaXN0LmgiCiAj
aW5jbHVkZSA8QVZGb3VuZGF0aW9uL0FWQXNzZXRXcml0ZXIuaD4KICNpbmNsdWRlIDxBVkZvdW5k
YXRpb24vQVZBc3NldFdyaXRlcklucHV0Lmg+CiAjaW5jbHVkZSA8cGFsL2NmL0NvcmVNZWRpYVNv
ZnRMaW5rLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogdHlwZWRlZiBBVkFzc2V0
V3JpdGVyIEFWQXNzZXRXcml0ZXJUeXBlOwogdHlwZWRlZiBBVkFzc2V0V3JpdGVySW5wdXQgQVZB
c3NldFdyaXRlcklucHV0VHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmNwcAppbmRleCBiNjNmMDYxMmFiZmNi
ODY2ZGEwY2VkMGEyMzVkYzE1NTkzZmYwNWVkLi41YWJmZDc1Y2I0OTQ1NmU0MmQzOWQ0NGQzYmMy
MjU5YWFmZmE1MjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuY3BwCkBAIC0yNyw4ICsyNyw4IEBACiAjaW5j
bHVkZSAiQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmgiCiAKICNpbmNsdWRlICJGaWxlLmgiCi0jaW5j
bHVkZSAiRmlsZU1ldGFkYXRhLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgorI2luY2x1ZGUg
PHd0Zi9GaWxlTWV0YWRhdGEuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCmluZGV4IDgwYjQxZTk3NWU0ZDYxNDNhZjRjOTk2MTE3
NTQ3YmI4OTJlZGEzMTguLjFjNzA2YWEzNDZjYWRkZWEzOWU1MDBkODAzMDRjZDQ5NGJkODI2ODEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0
cnlJbXBsLmNwcApAQCAtMzUsMTMgKzM1LDEzIEBACiAjaW5jbHVkZSAiQmxvYkRhdGEuaCIKICNp
bmNsdWRlICJCbG9iUGFydC5oIgogI2luY2x1ZGUgIkJsb2JSZXNvdXJjZUhhbmRsZS5oIgotI2lu
Y2x1ZGUgIkZpbGVNZXRhZGF0YS5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRl
ICJSZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRl
ICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5j
bHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVNZXRhZGF0
YS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJl
YWQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU2Nv
cGUuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJl
c291cmNlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJl
c291cmNlSGFuZGxlLmNwcAppbmRleCBjOTRlMzk0OTRiOGUzMjZkYjRhMTJhMjcyMDFhNDYyMzhk
ZTE4YzRiLi5jYzY3Y2U2ODhmM2JjYTIyMjY5MGI0M2YxMDU4NzhiYTllM2MyOGY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5k
bGUuY3BwCkBAIC0zNSwxOSArMzUsMTkgQEAKICNpbmNsdWRlICJBc3luY0ZpbGVTdHJlYW0uaCIK
ICNpbmNsdWRlICJCbG9iRGF0YS5oIgogI2luY2x1ZGUgIkZpbGVTdHJlYW0uaCIKLSNpbmNsdWRl
ICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiSFRUUEhlYWRlck5hbWVzLmgiCiAjaW5jbHVkZSAi
SFRUUFBhcnNlcnMuaCIKICNpbmNsdWRlICJQYXJzZWRDb250ZW50UmFuZ2UuaCIKLSNpbmNsdWRl
IDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlJlc291
cmNlSGFuZGxlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVk
ZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1
ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+
CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CisjaW5j
bHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKaW5kZXggNTRlNGFjMDQ5NjJhMjIxOTA3
ZTNiN2Q4MGE0ZmJhY2JlMjU0YjM5OS4uN2I3NmE1ZWVkZTk5Zjk0OWM4MWU2OWNmZTFiZGJiODk2
Y2NjMjY3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3Jt
RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5j
cHAKQEAgLTI5LDEyICsyOSwxMiBAQAogI2luY2x1ZGUgIkRPTUZvcm1EYXRhLmgiCiAjaW5jbHVk
ZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJGaWxlLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5o
IgogI2luY2x1ZGUgIkZvcm1EYXRhQnVpbGRlci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNs
dWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKICNpbmNsdWRl
ICJUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9MaW5lRW5kaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFT
dHJlYW1DRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1E
YXRhU3RyZWFtQ0ZOZXQuY3BwCmluZGV4IDllMmQ4ODFkNjM1NDkxNTI1ZDcxYWY0NTZjMmQxOTVm
ZDEzYjk0ZDYuLmE3NGFlNWFhYzljYjI2MjNkYzljYTVhOGFhNDBhYzM0MDIxMmYyZDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1D
Rk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0
YVN0cmVhbUNGTmV0LmNwcApAQCAtMzAsMTEgKzMwLDExIEBACiAjaW5jbHVkZSAiRm9ybURhdGFT
dHJlYW1DRk5ldC5oIgogCiAjaW5jbHVkZSAiQmxvYkRhdGEuaCIKLSNpbmNsdWRlICJGaWxlU3lz
dGVtLmgiCiAjaW5jbHVkZSAiRm9ybURhdGEuaCIKICNpbmNsdWRlIDxzeXMvc3RhdC5oPgogI2lu
Y2x1ZGUgPHN5cy90eXBlcy5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVk
ZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUg
PHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RD
b2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VS
ZXF1ZXN0Q29jb2EubW0KaW5kZXggMjdmZjlkMWNhOGVmYTFmZGQ2ZWRmMjg4NjQ4NjQ3OTQ5Zjg4
MWE5Ni4uMmZlYzFmMzgzNGU0MTE2YTFkZDRjZWIxZjYzMjg5OGQ1ZWNlMTQwZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291
cmNlUmVxdWVzdENvY29hLm1tCkBAIC0yOCwxMyArMjgsMTMgQEAKIAogI2lmIFBMQVRGT1JNKENP
Q09BKQogCi0jaW1wb3J0ICJGaWxlU3lzdGVtLmgiCiAjaW1wb3J0ICJGb3JtRGF0YVN0cmVhbU1h
Yy5oIgogI2ltcG9ydCAiSFRUUEhlYWRlck5hbWVzLmgiCiAjaW1wb3J0ICJSZXNvdXJjZVJlcXVl
c3RDRk5ldC5oIgogI2ltcG9ydCAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCiAjaW1wb3J0
IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KICNpbXBvcnQgPHBhbC9zcGkvY2YvQ0ZOZXR3b3Jr
U1BJLmg+CisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8d3RmL3RleHQvQ1N0
cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcAppbmRleCBjMjNmZDcyZjE5MTcx
MDIwODJlMTIxZTQ0ZDU4ZWRkOGEzMmQxZTcxLi4yNjM2MjI4OGI4NjlkOGM3YmIzNDE3Zjc2ZjQw
YjYzY2M1N2Y3YTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ29va2llSmFyREIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9Db29raWVKYXJEQi5jcHAKQEAgLTI2LDEwICsyNiw5IEBACiAjaW5jbHVkZSAiQ29v
a2llSmFyREIuaCIKIAogI2luY2x1ZGUgIkNvb2tpZVV0aWwuaCIKLSNpbmNsdWRlICJGaWxlU3lz
dGVtLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlNRTGl0ZUZpbGVTeXN0ZW0u
aCIKLQorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL01vbm90b25p
Y1RpbWUuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmgKaW5kZXggY2JjNDVmZWQy
YjYzOGVhNjJkOTEyZWM3ZWQyZDY2MTQzYjhmOWQ2Yi4uMTEwMjdjZTNiM2NmNjM4OGY5OTU0YWFm
NDljNDkwM2ZlOTNmZGZmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmgKQEAgLTI2LDExICsyNiwxMSBAQAogCiAjcHJh
Z21hIG9uY2UKIAotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJIVFRQSGVhZGVy
TWFwLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJl
cXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCisjaW5jbHVkZSA8d3RmL0Zp
bGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAKaW5k
ZXggNDNiYzJlN2JmZmY0ZjliZDZmNzEwMjg1ZDZkM2Q4NjMxYmI3NzgzYS4uZmE1YzhkMmQyMWI2
MjczODE1ZDAyM2E0ZjIwNDU1MDE2ZTk2MzhhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcApAQCAtMzAs
MTIgKzMwLDEyIEBACiAKICNpbmNsdWRlICJDdXJsQ2FjaGVNYW5hZ2VyLmgiCiAKLSNpbmNsdWRl
ICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiSFRUUEhlYWRlck1hcC5oIgogI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZUNsaWVudC5oIgogI2luY2x1ZGUgIlJl
c291cmNlSGFuZGxlSW50ZXJuYWwuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKKyNp
bmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxG
b3JtRGF0YVN0cmVhbS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxGb3JtRGF0YVN0cmVhbS5oCmluZGV4IGM4ZWYzMzNlMGQ4YzBlMDI4ZWNkOGE0NmQ4MjZiOTA2
NzFhMDBlMGMuLjA5ZTdmZGJiNGEyY2ZhYjRiOTA3MzJmMDYxMTRiZTA4MTEzYmI1MWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRm9ybURhdGFT
dHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybEZv
cm1EYXRhU3RyZWFtLmgKQEAgLTI2LDggKzI2LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNs
dWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiRm9ybURhdGEuaCIKKyNpbmNsdWRlIDx3dGYv
RmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJl
cXVlc3QuaAppbmRleCBmZGM0YjU5MGMxNDJjZjZkYzk4MDc3ZDlmNzVkNzg2NTYzNjE5NjlkLi45
M2NhNjEwM2ZlNjNkNWZmMDMxMDU1YzgyNWQ4MDI4Mjc2NGFlZGJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaApAQCAtMzIsMTAg
KzMyLDEwIEBACiAjaW5jbHVkZSAiQ3VybFJlcXVlc3RTY2hlZHVsZXJDbGllbnQuaCIKICNpbmNs
dWRlICJDdXJsUmVzcG9uc2UuaCIKICNpbmNsdWRlICJDdXJsU1NMVmVyaWZpZXIuaCIKLSNpbmNs
dWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiTmV0d29ya0xvYWRNZXRyaWNzLmgiCiAjaW5j
bHVkZSAiUHJvdGVjdGlvblNwYWNlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCisj
aW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTWVzc2FnZVF1ZXVlLmg+
CiAjaW5jbHVkZSA8d3RmL01vbm90b25pY1RpbWUuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFi
bGUuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcAppbmRleCBjZTlhMmZmYTQz
NmY2NTI5NTNhMjA3YjQxMDc0YzE5Mjk0N2YzMmUyLi4wMGUzZDA4YmNkNDdiMWY1ZmFmMDc1NWQy
YmZjNWMzZjIxYWY2YzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCkBA
IC0zMywxMCArMzMsOSBAQAogI2luY2x1ZGUgIkNvb2tpZUphckRCLmgiCiAjaW5jbHVkZSAiQ29v
a2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkuaCIKICNpbmNsdWRlICJDdXJsQ29udGV4dC5oIgot
I2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgog
I2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCi0KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5o
PgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcAppbmRleCAw
ZWVlODgzMWE1MzBlMGQ4YjgwZmIzMjI2MDVkMDRmYmU1ZTI4YTNiLi4wMzJkNGRkODhmZmY3NmEx
MDdiYTdhODUyMzU0MzdhYTQ3N2U4MGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcApAQCAtMzgs
NyArMzgsNiBAQAogI2luY2x1ZGUgIkN1cmxDYWNoZU1hbmFnZXIuaCIKICNpbmNsdWRlICJDdXJs
Q29udGV4dC5oIgogI2luY2x1ZGUgIkN1cmxSZXF1ZXN0LmgiCi0jaW5jbHVkZSAiRmlsZVN5c3Rl
bS5oIgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2lu
Y2x1ZGUgIk5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIgpAQCAtNDgsNiArNDcsNyBAQAogI2luY2x1
ZGUgIlN5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgi
CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVT
eXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9CYXNlNjQuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQmxv
YkRhdGFGaWxlUmVmZXJlbmNlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9tYWMvQmxvYkRhdGFGaWxlUmVmZXJlbmNlTWFjLm1tCmluZGV4IGZjZjU1ZDc2ZWE0NWViYjA2
NzA0M2VjZGZjOGNmMDhjYzkyNDZhMjkuLmI2OTI5MjBiMjFmYzY2MzlkNTc0NWQxYzA0NGU4Yjc4
NzgyMzUwZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFj
L0Jsb2JEYXRhRmlsZVJlZmVyZW5jZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9CbG9iRGF0YUZpbGVSZWZlcmVuY2VNYWMubW0KQEAgLTI4LDggKzI4LDgg
QEAKIAogI2lmIEVOQUJMRShGSUxFX1JFUExBQ0VNRU5UKQogCi0jaW5jbHVkZSAiRmlsZU1ldGFk
YXRhLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlTWV0YWRh
dGEuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9Tb2Z0TGlu
a2luZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3Vw
LmNwcAppbmRleCA2MzczNGM2NzRjNTJlZTk1ZGM2YzllNDIxYzQ2NjBmNDE4NDAwYmFhLi4wODE1
ZWE2ODhlNzY2OTI3ZTY2M2Q0MDU2MTQ5ZGJkMzY4ZTY0NmNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3Vw
LmNwcApAQCAtMzIsNyArMzIsNiBAQAogI2lmIFVTRShTT1VQKQogCiAjaW5jbHVkZSAiQ3JlZGVu
dGlhbFN0b3JhZ2UuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiR1VuaXF1
ZVB0clNvdXAuaCIKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgogI2luY2x1ZGUgIkxvY2FsaXpl
ZFN0cmluZ3MuaCIKQEAgLTU3LDYgKzU2LDcgQEAKICNpbmNsdWRlIDx1bmlzdGQuaD4KICNlbmRp
ZgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgorI2luY2x1ZGUgPHd0Zi9GaWxl
U3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9n
bGliL1J1bkxvb3BTb3VyY2VQcmlvcml0eS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3Vw
TmV0d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAKaW5kZXggMzQzZmFlYjlmZWIyMTk0Y2NjM2VmNzc5ZDc3
ZDNmNmI0ZDFlZGM4Ny4uYjk2Nzc5NTk4MGVlOGZhNGM5OTUwMGZmZGYzNGI0MjAyZWIyYTJkYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3
b3JrU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAKQEAgLTMwLDEzICszMCwxMyBAQAogI2luY2x1ZGUgIlNv
dXBOZXR3b3JrU2Vzc2lvbi5oIgogCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uu
aCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiR1VuaXF1ZVB0clNvdXAuaCIK
ICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiU291cE5ldHdvcmtQcm94eVNldHRpbmdz
LmgiCiAjaW5jbHVkZSA8Z2xpYi9nc3RkaW8uaD4KICNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4K
ICNpbmNsdWRlIDxwYWwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5oPgorI2luY2x1ZGUgPHd0Zi9GaWxl
U3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9CYXNlNjQuaD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA5NDg1MTM1MjUxOGQ2MDZiZWEyNWVlZWEzMzYxODUyODAzMzRjZmNj
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSw0OTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNy0yMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVy
IHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAg
ICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgi
Ci0KLSNpbmNsdWRlICJGaWxlTWV0YWRhdGEuaCIKLSNpbmNsdWRlIDxkaXJlbnQuaD4KLSNpbmNs
dWRlIDxlcnJuby5oPgotI2luY2x1ZGUgPGZjbnRsLmg+Ci0jaW5jbHVkZSA8Zm5tYXRjaC5oPgot
I2luY2x1ZGUgPGxpYmdlbi5oPgotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8c3lzL3N0
YXQuaD4KLSNpbmNsdWRlIDxzeXMvc3RhdHZmcy5oPgotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgot
I2luY2x1ZGUgPHVuaXN0ZC5oPgotI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+Ci0jaW5jbHVk
ZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIu
aD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1uYW1lc3BhY2UgRmlsZVN5c3RlbSB7Ci0KLWJvb2wgZmlsZUV4aXN0cyhjb25zdCBTdHJp
bmcmIHBhdGgpCi17Ci0gICAgaWYgKHBhdGguaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIENTdHJpbmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7
Ci0KLSAgICBpZiAoIWZzUmVwLmRhdGEoKSB8fCBmc1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIGFjY2Vzcyhmc1JlcC5kYXRhKCksIEZf
T0spICE9IC0xOwotfQotCi1ib29sIGRlbGV0ZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQotewot
ICAgIENTdHJpbmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7Ci0KLSAg
ICBpZiAoIWZzUmVwLmRhdGEoKSB8fCBmc1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgLy8gdW5saW5rKC4uLikgcmV0dXJucyAwIG9uIHN1Y2Nlc3Nm
dWwgZGVsZXRpb24gb2YgdGhlIHBhdGggYW5kIG5vbi16ZXJvIGluIGFueSBvdGhlciBjYXNlIChp
bmNsdWRpbmcgaW52YWxpZCBwZXJtaXNzaW9ucyBvciBub24tZXhpc3RlbnQgZmlsZSkKLSAgICBy
ZXR1cm4gIXVubGluayhmc1JlcC5kYXRhKCkpOwotfQotCi1QbGF0Zm9ybUZpbGVIYW5kbGUgb3Bl
bkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUgbW9kZSkKLXsKLSAgICBDU3Ry
aW5nIGZzUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwotCi0gICAgaWYgKGZz
UmVwLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsK
LQotICAgIGludCBwbGF0Zm9ybUZsYWcgPSAwOwotICAgIGlmIChtb2RlID09IEZpbGVPcGVuTW9k
ZTo6UmVhZCkKLSAgICAgICAgcGxhdGZvcm1GbGFnIHw9IE9fUkRPTkxZOwotICAgIGVsc2UgaWYg
KG1vZGUgPT0gRmlsZU9wZW5Nb2RlOjpXcml0ZSkKLSAgICAgICAgcGxhdGZvcm1GbGFnIHw9IChP
X1dST05MWSB8IE9fQ1JFQVQgfCBPX1RSVU5DKTsKLSNpZiBPUyhEQVJXSU4pCi0gICAgZWxzZSBp
ZiAobW9kZSA9PSBGaWxlT3Blbk1vZGU6OkV2ZW50c09ubHkpCi0gICAgICAgIHBsYXRmb3JtRmxh
ZyB8PSBPX0VWVE9OTFk7Ci0jZW5kaWYKLQotICAgIHJldHVybiBvcGVuKGZzUmVwLmRhdGEoKSwg
cGxhdGZvcm1GbGFnLCAwNjY2KTsKLX0KLQotdm9pZCBjbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFu
ZGxlJiBoYW5kbGUpCi17Ci0gICAgaWYgKGlzSGFuZGxlVmFsaWQoaGFuZGxlKSkgewotICAgICAg
ICBjbG9zZShoYW5kbGUpOwotICAgICAgICBoYW5kbGUgPSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFu
ZGxlOwotICAgIH0KLX0KLQotbG9uZyBsb25nIHNlZWtGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBo
YW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQsIEZpbGVTZWVrT3JpZ2luIG9yaWdpbikKLXsKLSAgICBp
bnQgd2hlbmNlID0gU0VFS19TRVQ7Ci0gICAgc3dpdGNoIChvcmlnaW4pIHsKLSAgICBjYXNlIEZp
bGVTZWVrT3JpZ2luOjpCZWdpbm5pbmc6Ci0gICAgICAgIHdoZW5jZSA9IFNFRUtfU0VUOwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIEZpbGVTZWVrT3JpZ2luOjpDdXJyZW50OgotICAgICAgICB3
aGVuY2UgPSBTRUVLX0NVUjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGaWxlU2Vla09yaWdp
bjo6RW5kOgotICAgICAgICB3aGVuY2UgPSBTRUVLX0VORDsKLSAgICAgICAgYnJlYWs7Ci0gICAg
ZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotICAgIHJldHVy
biBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KGxzZWVrKGhhbmRsZSwgb2Zmc2V0LCB3aGVuY2UpKTsK
LX0KLQotYm9vbCB0cnVuY2F0ZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgbG9uZyBs
b25nIG9mZnNldCkKLXsKLSAgICAvLyBmdHJ1bmNhdGUgcmV0dXJucyAwIHRvIGluZGljYXRlIHRo
ZSBzdWNjZXNzLgotICAgIHJldHVybiAhZnRydW5jYXRlKGhhbmRsZSwgb2Zmc2V0KTsKLX0KLQot
aW50IHdyaXRlVG9GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNvbnN0IGNoYXIqIGRh
dGEsIGludCBsZW5ndGgpCi17Ci0gICAgZG8gewotICAgICAgICBpbnQgYnl0ZXNXcml0dGVuID0g
d3JpdGUoaGFuZGxlLCBkYXRhLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkpOwotICAgICAg
ICBpZiAoYnl0ZXNXcml0dGVuID49IDApCi0gICAgICAgICAgICByZXR1cm4gYnl0ZXNXcml0dGVu
OwotICAgIH0gd2hpbGUgKGVycm5vID09IEVJTlRSKTsKLSAgICByZXR1cm4gLTE7Ci19Ci0KLWlu
dCByZWFkRnJvbUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY2hhciogZGF0YSwgaW50
IGxlbmd0aCkKLXsKLSAgICBkbyB7Ci0gICAgICAgIGludCBieXRlc1JlYWQgPSByZWFkKGhhbmRs
ZSwgZGF0YSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5ndGgpKTsKLSAgICAgICAgaWYgKGJ5dGVz
UmVhZCA+PSAwKQotICAgICAgICAgICAgcmV0dXJuIGJ5dGVzUmVhZDsKLSAgICB9IHdoaWxlIChl
cnJubyA9PSBFSU5UUik7Ci0gICAgcmV0dXJuIC0xOwotfQotCi0jaWYgVVNFKEZJTEVfTE9DSykK
LWJvb2wgbG9ja0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgT3B0aW9uU2V0PEZpbGVM
b2NrTW9kZT4gbG9ja01vZGUpCi17Ci0gICAgQ09NUElMRV9BU1NFUlQoTE9DS19TSCA9PSBXVEY6
OmVudW1Ub1VuZGVybHlpbmdUeXBlKEZpbGVMb2NrTW9kZTo6U2hhcmVkKSwgTG9ja1NoYXJlZEVu
Y29kaW5nSXNBc0V4cGVjdGVkKTsKLSAgICBDT01QSUxFX0FTU0VSVChMT0NLX0VYID09IFdURjo6
ZW51bVRvVW5kZXJseWluZ1R5cGUoRmlsZUxvY2tNb2RlOjpFeGNsdXNpdmUpLCBMb2NrRXhjbHVz
aXZlRW5jb2RpbmdJc0FzRXhwZWN0ZWQpOwotICAgIENPTVBJTEVfQVNTRVJUKExPQ0tfTkIgPT0g
V1RGOjplbnVtVG9VbmRlcmx5aW5nVHlwZShGaWxlTG9ja01vZGU6Ok5vbmJsb2NraW5nKSwgTG9j
a05vbmJsb2NraW5nRW5jb2RpbmdJc0FzRXhwZWN0ZWQpOwotICAgIGludCByZXN1bHQgPSBmbG9j
ayhoYW5kbGUsIGxvY2tNb2RlLnRvUmF3KCkpOwotICAgIHJldHVybiAocmVzdWx0ICE9IC0xKTsK
LX0KLQotYm9vbCB1bmxvY2tGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUpCi17Ci0gICAg
aW50IHJlc3VsdCA9IGZsb2NrKGhhbmRsZSwgTE9DS19VTik7Ci0gICAgcmV0dXJuIChyZXN1bHQg
IT0gLTEpOwotfQotI2VuZGlmCi0KLSNpZiAhUExBVEZPUk0oTUFDKQotYm9vbCBkZWxldGVFbXB0
eURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgQ1N0cmluZyBmc1JlcCA9IGZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKLQotICAgIGlmICghZnNSZXAuZGF0YSgpIHx8
IGZzUmVwLmRhdGEoKVswXSA9PSAnXDAnKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAv
LyBybWRpciguLi4pIHJldHVybnMgMCBvbiBzdWNjZXNzZnVsIGRlbGV0aW9uIG9mIHRoZSBwYXRo
IGFuZCBub24temVybyBpbiBhbnkgb3RoZXIgY2FzZSAoaW5jbHVkaW5nIGludmFsaWQgcGVybWlz
c2lvbnMgb3Igbm9uLWV4aXN0ZW50IGZpbGUpCi0gICAgcmV0dXJuICFybWRpcihmc1JlcC5kYXRh
KCkpOwotfQotI2VuZGlmCi0KLWJvb2wgZ2V0RmlsZVNpemUoY29uc3QgU3RyaW5nJiBwYXRoLCBs
b25nIGxvbmcmIHJlc3VsdCkKLXsKLSAgICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKHBhdGgpOwotCi0gICAgaWYgKCFmc1JlcC5kYXRhKCkgfHwgZnNSZXAuZGF0YSgp
WzBdID09ICdcMCcpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHN0cnVjdCBzdGF0IGZp
bGVJbmZvOwotCi0gICAgaWYgKHN0YXQoZnNSZXAuZGF0YSgpLCAmZmlsZUluZm8pKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXN1bHQgPSBmaWxlSW5mby5zdF9zaXplOwotICAgIHJl
dHVybiB0cnVlOwotfQotCi1ib29sIGdldEZpbGVTaXplKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5k
bGUsIGxvbmcgbG9uZyYgcmVzdWx0KQotewotICAgIHN0cnVjdCBzdGF0IGZpbGVJbmZvOwotICAg
IGlmIChmc3RhdChoYW5kbGUsICZmaWxlSW5mbykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQot
ICAgIHJlc3VsdCA9IGZpbGVJbmZvLnN0X3NpemU7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLU9w
dGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlQ3JlYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCkK
LXsKLSNpZiBPUyhEQVJXSU4pIHx8IE9TKE9QRU5CU0QpIHx8IE9TKE5FVEJTRCkgfHwgT1MoRlJF
RUJTRCkKLSAgICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgp
OwotCi0gICAgaWYgKCFmc1JlcC5kYXRhKCkgfHwgZnNSZXAuZGF0YSgpWzBdID09ICdcMCcpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBzdHJ1Y3Qgc3RhdCBmaWxlSW5mbzsK
LQotICAgIGlmIChzdGF0KGZzUmVwLmRhdGEoKSwgJmZpbGVJbmZvKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKLQotICAgIHJldHVybiBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoZmls
ZUluZm8uc3RfYmlydGh0aW1lKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHBhdGgpOwotICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7Ci0jZW5kaWYKLX0KLQotT3B0aW9uYWw8V2FsbFRpbWU+IGdl
dEZpbGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBDU3RyaW5n
IGZzUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwotCi0gICAgaWYgKCFmc1Jl
cC5kYXRhKCkgfHwgZnNSZXAuZGF0YSgpWzBdID09ICdcMCcpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7Ci0KLSAgICBzdHJ1Y3Qgc3RhdCBmaWxlSW5mbzsKLQotICAgIGlmIChzdGF0KGZz
UmVwLmRhdGEoKSwgJmZpbGVJbmZvKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQot
ICAgIHJldHVybiBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoZmlsZUluZm8uc3RfbXRpbWUpOwot
fQotCi1zdGF0aWMgRmlsZU1ldGFkYXRhOjpUeXBlIHRvRmlsZU1ldGF0YVR5cGUoc3RydWN0IHN0
YXQgZmlsZUluZm8pCi17Ci0gICAgaWYgKFNfSVNESVIoZmlsZUluZm8uc3RfbW9kZSkpCi0gICAg
ICAgIHJldHVybiBGaWxlTWV0YWRhdGE6OlR5cGU6OkRpcmVjdG9yeTsKLSAgICBpZiAoU19JU0xO
SyhmaWxlSW5mby5zdF9tb2RlKSkKLSAgICAgICAgcmV0dXJuIEZpbGVNZXRhZGF0YTo6VHlwZTo6
U3ltYm9saWNMaW5rOwotICAgIHJldHVybiBGaWxlTWV0YWRhdGE6OlR5cGU6OkZpbGU7Ci19Ci0K
LXN0YXRpYyBPcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YVVzaW5nRnVuY3Rpb24o
Y29uc3QgU3RyaW5nJiBwYXRoLCBpbnQgKCpzdGF0RnVuYykoY29uc3QgY2hhciosIHN0cnVjdCBz
dGF0KikpCi17Ci0gICAgQ1N0cmluZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihw
YXRoKTsKLQotICAgIGlmICghZnNSZXAuZGF0YSgpIHx8IGZzUmVwLmRhdGEoKVswXSA9PSAnXDAn
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgc3RydWN0IHN0YXQgZmlsZUlu
Zm87Ci0gICAgaWYgKHN0YXRGdW5jKGZzUmVwLmRhdGEoKSwgJmZpbGVJbmZvKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIFN0cmluZyBmaWxlbmFtZSA9IHBhdGhHZXRGaWxl
TmFtZShwYXRoKTsKLSAgICBib29sIGlzSGlkZGVuID0gIWZpbGVuYW1lLmlzRW1wdHkoKSAmJiBm
aWxlbmFtZVswXSA9PSAnLic7Ci0gICAgcmV0dXJuIEZpbGVNZXRhZGF0YSB7Ci0gICAgICAgIFdh
bGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhmaWxlSW5mby5zdF9tdGltZSksCi0gICAgICAgIGZpbGVJ
bmZvLnN0X3NpemUsCi0gICAgICAgIGlzSGlkZGVuLAotICAgICAgICB0b0ZpbGVNZXRhdGFUeXBl
KGZpbGVJbmZvKQotICAgIH07Ci19Ci0KLU9wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFk
YXRhKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICByZXR1cm4gZmlsZU1ldGFkYXRhVXNpbmdG
dW5jdGlvbihwYXRoLCAmbHN0YXQpOwotfQotCi1PcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVN
ZXRhZGF0YUZvbGxvd2luZ1N5bWxpbmtzKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICByZXR1
cm4gZmlsZU1ldGFkYXRhVXNpbmdGdW5jdGlvbihwYXRoLCAmc3RhdCk7Ci19Ci0KLWJvb2wgY3Jl
YXRlU3ltYm9saWNMaW5rKGNvbnN0IFN0cmluZyYgdGFyZ2V0UGF0aCwgY29uc3QgU3RyaW5nJiBz
eW1ib2xpY0xpbmtQYXRoKQotewotICAgIENTdHJpbmcgdGFyZ2V0UGF0aEZTUmVwID0gZmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKHRhcmdldFBhdGgpOwotICAgIGlmICghdGFyZ2V0UGF0aEZTUmVw
LmRhdGEoKSB8fCB0YXJnZXRQYXRoRlNSZXAuZGF0YSgpWzBdID09ICdcMCcpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIENTdHJpbmcgc3ltYm9saWNMaW5rUGF0aEZTUmVwID0gZmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKHN5bWJvbGljTGlua1BhdGgpOwotICAgIGlmICghc3ltYm9saWNM
aW5rUGF0aEZTUmVwLmRhdGEoKSB8fCBzeW1ib2xpY0xpbmtQYXRoRlNSZXAuZGF0YSgpWzBdID09
ICdcMCcpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiAhc3ltbGluayh0YXJn
ZXRQYXRoRlNSZXAuZGF0YSgpLCBzeW1ib2xpY0xpbmtQYXRoRlNSZXAuZGF0YSgpKTsKLX0KLQot
U3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0
IFN0cmluZyYgY29tcG9uZW50KQotewotICAgIGlmIChwYXRoLmVuZHNXaXRoKCcvJykpCi0gICAg
ICAgIHJldHVybiBwYXRoICsgY29tcG9uZW50OwotICAgIHJldHVybiBwYXRoICsgIi8iICsgY29t
cG9uZW50OwotfQotCi1TdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhTdHJpbmdWaWV3
IHBhdGgsIGNvbnN0IFZlY3RvcjxTdHJpbmdWaWV3PiYgY29tcG9uZW50cykKLXsKLSAgICBTdHJp
bmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5hcHBlbmQocGF0aCk7Ci0gICAgZm9yIChh
dXRvJiBjb21wb25lbnQgOiBjb21wb25lbnRzKSB7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcv
Jyk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKGNvbXBvbmVudCk7Ci0gICAgfQotICAgIHJldHVy
biBidWlsZGVyLnRvU3RyaW5nKCk7Ci19Ci0KLWJvb2wgbWFrZUFsbERpcmVjdG9yaWVzKGNvbnN0
IFN0cmluZyYgcGF0aCkKLXsKLSAgICBDU3RyaW5nIGZ1bGxQYXRoID0gZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKHBhdGgpOwotICAgIGlmICghYWNjZXNzKGZ1bGxQYXRoLmRhdGEoKSwgRl9PSykp
Ci0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgY2hhciogcCA9IGZ1bGxQYXRoLm11dGFibGVE
YXRhKCkgKyAxOwotICAgIGludCBsZW5ndGggPSBmdWxsUGF0aC5sZW5ndGgoKTsKLQotICAgIGlm
KHBbbGVuZ3RoIC0gMV0gPT0gJy8nKQotICAgICAgICBwW2xlbmd0aCAtIDFdID0gJ1wwJzsKLSAg
ICBmb3IgKDsgKnA7ICsrcCkKLSAgICAgICAgaWYgKCpwID09ICcvJykgewotICAgICAgICAgICAg
KnAgPSAnXDAnOwotICAgICAgICAgICAgaWYgKGFjY2VzcyhmdWxsUGF0aC5kYXRhKCksIEZfT0sp
KQotICAgICAgICAgICAgICAgIGlmIChta2RpcihmdWxsUGF0aC5kYXRhKCksIFNfSVJXWFUpKQot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAqcCA9ICcvJzsK
LSAgICAgICAgfQotICAgIGlmIChhY2Nlc3MoZnVsbFBhdGguZGF0YSgpLCBGX09LKSkKLSAgICAg
ICAgaWYgKG1rZGlyKGZ1bGxQYXRoLmRhdGEoKSwgU19JUldYVSkpCi0gICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotU3RyaW5nIHBhdGhHZXRGaWxlTmFt
ZShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgcmV0dXJuIHBhdGguc3Vic3RyaW5nKHBhdGgu
cmV2ZXJzZUZpbmQoJy8nKSArIDEpOwotfQotCi1TdHJpbmcgZGlyZWN0b3J5TmFtZShjb25zdCBT
dHJpbmcmIHBhdGgpCi17Ci0gICAgQ1N0cmluZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihwYXRoKTsKLQotICAgIGlmICghZnNSZXAuZGF0YSgpIHx8IGZzUmVwLmRhdGEoKVswXSA9
PSAnXDAnKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICByZXR1cm4gU3RyaW5nOjpm
cm9tVVRGOChkaXJuYW1lKGZzUmVwLm11dGFibGVEYXRhKCkpKTsKLX0KLQotVmVjdG9yPFN0cmlu
Zz4gbGlzdERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgZmlsdGVy
KQotewotICAgIFZlY3RvcjxTdHJpbmc+IGVudHJpZXM7Ci0gICAgQ1N0cmluZyBjcGF0aCA9IGZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKLSAgICBDU3RyaW5nIGNmaWx0ZXIgPSBmaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oZmlsdGVyKTsKLSAgICBESVIqIGRpciA9IG9wZW5kaXIoY3Bh
dGguZGF0YSgpKTsKLSAgICBpZiAoZGlyKSB7Ci0gICAgICAgIHN0cnVjdCBkaXJlbnQqIGRwOwot
ICAgICAgICB3aGlsZSAoKGRwID0gcmVhZGRpcihkaXIpKSkgewotICAgICAgICAgICAgY29uc3Qg
Y2hhciogbmFtZSA9IGRwLT5kX25hbWU7Ci0gICAgICAgICAgICBpZiAoIXN0cmNtcChuYW1lLCAi
LiIpIHx8ICFzdHJjbXAobmFtZSwgIi4uIikpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgICAgICBpZiAoZm5tYXRjaChjZmlsdGVyLmRhdGEoKSwgbmFtZSwgMCkpCi0gICAgICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBjaGFyIGZpbGVQYXRoW1BBVEhfTUFYXTsK
LSAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihmaWxlUGF0aCkgLSAxKSA8
IHNucHJpbnRmKGZpbGVQYXRoLCBzaXplb2YoZmlsZVBhdGgpLCAiJXMvJXMiLCBjcGF0aC5kYXRh
KCksIG5hbWUpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOyAvLyBidWZmZXIgb3ZlcmZsb3cK
LQotICAgICAgICAgICAgYXV0byBzdHJpbmcgPSBzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKGZpbGVQYXRoKTsKLQotICAgICAgICAgICAgLy8gU29tZSBmaWxlIHN5c3RlbSByZXBy
ZXNlbnRhdGlvbnMgY2Fubm90IGJlIHJlcHJlc2VudGVkIGFzIGEgVVRGLTE2IHN0cmluZywKLSAg
ICAgICAgICAgIC8vIHNvIHRoaXMgc3RyaW5nIG1pZ2h0IGJlIG51bGwuCi0gICAgICAgICAgICBp
ZiAoIXN0cmluZy5pc051bGwoKSkKLSAgICAgICAgICAgICAgICBlbnRyaWVzLmFwcGVuZChXVEZN
b3ZlKHN0cmluZykpOwotICAgICAgICB9Ci0gICAgICAgIGNsb3NlZGlyKGRpcik7Ci0gICAgfQot
ICAgIHJldHVybiBlbnRyaWVzOwotfQotCi0jaWYgIVBMQVRGT1JNKENPQ09BKQotU3RyaW5nIHN0
cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgY2hhciogcGF0aCkKLXsKLSAg
ICBpZiAoIXBhdGgpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIHJldHVybiBTdHJp
bmc6OmZyb21VVEY4KHBhdGgpOwotfQotCi1DU3RyaW5nIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgcmV0dXJuIHBhdGgudXRmOCgpOwotfQotCi1i
b29sIG1vdmVGaWxlKGNvbnN0IFN0cmluZyYgb2xkUGF0aCwgY29uc3QgU3RyaW5nJiBuZXdQYXRo
KQotewotICAgIGF1dG8gb2xkRmlsZW5hbWUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ob2xk
UGF0aCk7Ci0gICAgaWYgKG9sZEZpbGVuYW1lLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICBhdXRvIG5ld0ZpbGVuYW1lID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKG5l
d1BhdGgpOwotICAgIGlmIChuZXdGaWxlbmFtZS5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgcmV0dXJuIHJlbmFtZShvbGRGaWxlbmFtZS5kYXRhKCksIG5ld0ZpbGVuYW1l
LmRhdGEoKSkgIT0gLTE7Ci19Ci0KLWJvb2wgZ2V0Vm9sdW1lRnJlZVNwYWNlKGNvbnN0IFN0cmlu
ZyYgcGF0aCwgdWludDY0X3QmIGZyZWVTcGFjZSkKLXsKLSAgICBzdHJ1Y3Qgc3RhdHZmcyBmaWxl
U3lzdGVtU3RhdDsKLSAgICBpZiAoc3RhdHZmcyhmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0
aCkuZGF0YSgpLCAmZmlsZVN5c3RlbVN0YXQpKSB7Ci0gICAgICAgIGZyZWVTcGFjZSA9IGZpbGVT
eXN0ZW1TdGF0LmZfYmF2YWlsICogZmlsZVN5c3RlbVN0YXQuZl9mcnNpemU7Ci0gICAgICAgIHJl
dHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0jZW5kaWYKLQotI2lmICFP
UyhEQVJXSU4pCi1TdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgs
IFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKQotewotICAgIGNoYXIgYnVmZmVyW1BBVEhfTUFY
XTsKLSAgICBjb25zdCBjaGFyKiB0bXBEaXIgPSBnZXRlbnYoIlRNUERJUiIpOwotCi0gICAgaWYg
KCF0bXBEaXIpCi0gICAgICAgIHRtcERpciA9ICIvdG1wIjsKLQotICAgIGlmIChzbnByaW50Zihi
dWZmZXIsIFBBVEhfTUFYLCAiJXMvJXNYWFhYWFgiLCB0bXBEaXIsIHByZWZpeC51dGY4KCkuZGF0
YSgpKSA+PSBQQVRIX01BWCkKLSAgICAgICAgZ290byBlbmQ7Ci0KLSAgICBoYW5kbGUgPSBta3N0
ZW1wKGJ1ZmZlcik7Ci0gICAgaWYgKGhhbmRsZSA8IDApCi0gICAgICAgIGdvdG8gZW5kOwotCi0g
ICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyKTsKLQotZW5kOgotICAgIGhhbmRsZSA9
IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7Ci0gICAgcmV0dXJuIFN0cmluZygpOwotfQotI2Vu
ZGlmCi0KLWJvb2wgaGFyZExpbmtPckNvcHlGaWxlKGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25z
dCBTdHJpbmcmIGRlc3RpbmF0aW9uKQotewotICAgIGlmIChzb3VyY2UuaXNFbXB0eSgpIHx8IGRl
c3RpbmF0aW9uLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgQ1N0cmlu
ZyBmc1NvdXJjZSA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihzb3VyY2UpOwotICAgIGlmICgh
ZnNTb3VyY2UuZGF0YSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBDU3RyaW5nIGZz
RGVzdGluYXRpb24gPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGVzdGluYXRpb24pOwotICAg
IGlmICghZnNEZXN0aW5hdGlvbi5kYXRhKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IGlmICghbGluayhmc1NvdXJjZS5kYXRhKCksIGZzRGVzdGluYXRpb24uZGF0YSgpKSkKLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0KLSAgICAvLyBIYXJkIGxpbmsgZmFpbGVkLiBQZXJmb3JtIGEgY29w
eSBpbnN0ZWFkLgotICAgIGF1dG8gaGFuZGxlID0gb3Blbihmc0Rlc3RpbmF0aW9uLmRhdGEoKSwg
T19XUk9OTFkgfCBPX0NSRUFUIHwgT19FWENMLCAwNjY2KTsKLSAgICBpZiAoaGFuZGxlID09IC0x
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBib29sIGFwcGVuZFJlc3VsdCA9IGFwcGVu
ZEZpbGVDb250ZW50c1RvRmlsZUhhbmRsZShzb3VyY2UsIGhhbmRsZSk7Ci0gICAgY2xvc2UoaGFu
ZGxlKTsKLQotICAgIC8vIElmIHRoZSBjb3B5IGZhaWxlZCwgZGVsZXRlIHRoZSB1bnVzYWJsZSBm
aWxlLgotICAgIGlmICghYXBwZW5kUmVzdWx0KQotICAgICAgICB1bmxpbmsoZnNEZXN0aW5hdGlv
bi5kYXRhKCkpOwotCi0gICAgcmV0dXJuIGFwcGVuZFJlc3VsdDsKLX0KLQotT3B0aW9uYWw8aW50
MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0IENTdHJpbmcmIGZzRmlsZSkKLXsKLSAgICBzdHJ1
Y3Qgc3RhdCBmaWxlU3RhdDsKLSAgICBpZiAoc3RhdChmc0ZpbGUuZGF0YSgpLCAmZmlsZVN0YXQp
ID09IC0xKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgcmV0dXJuIGZpbGVT
dGF0LnN0X2RldjsKLX0KLQotU3RyaW5nIHJlYWxQYXRoKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgp
Ci17Ci0gICAgQ1N0cmluZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWxlUGF0
aCk7Ci0gICAgY2hhciByZXNvbHZlZE5hbWVbUEFUSF9NQVhdOwotICAgIGNvbnN0IGNoYXIqIHJl
c3VsdCA9IHJlYWxwYXRoKGZzUmVwLmRhdGEoKSwgcmVzb2x2ZWROYW1lKTsKLSAgICByZXR1cm4g
cmVzdWx0ID8gU3RyaW5nOjpmcm9tVVRGOChyZXN1bHQpIDogZmlsZVBhdGg7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIEZpbGVTeXN0ZW0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcAppbmRleCA1
MTMzNzVkMjQ1ZWY0NWMxOTZhODU0NjE1Y2U3MGI3OGE5MGNlY2ZmLi44ZWQ1NzE3NDc3OGNiN2Jk
YWRjYTM2NTE3ZmQ3OTQ0NTczOGM1MmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQT1NJWC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVyUE9TSVguY3BwCkBAIC0yNiwxMSArMjYsMTAgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKIAotI2luY2x1ZGUg
IkZpbGVTeXN0ZW0uaCIKLQogI2luY2x1ZGUgPGZjbnRsLmg+CiAjaW5jbHVkZSA8c3lzL3N0YXQu
aD4KICNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uY3BwCmluZGV4IDkw
YzIwYzdiY2U2YTY3YjY3ZDUzZDVjNDA1Mzc3NmJmMTRjN2U1ZTUuLjM2NGJmZjcxMDc0OTc4OTZm
N2IxZDc1N2E3ZDlhNWZjM2FkM2Y2NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5jcHAKQEAgLTMxLDEwICszMSwxMCBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIlNRTGl0ZUZpbGVTeXN0ZW0uaCIKIAotI2luY2x1ZGUgIkZp
bGVTeXN0ZW0uaCIKICNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZS5oIgogI2luY2x1ZGUgIlNRTGl0
ZVN0YXRlbWVudC5oIgogI2luY2x1ZGUgPHNxbGl0ZTMuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5
c3RlbS5oPgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbmNsdWRlIDxwYWwvc3BpL2lv
cy9TUUxpdGUzU1BJLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAKaW5kZXggMmQ3YjY2ZDkzNzkw
NWRjYzIyZjRhMTNlOTVhMGFmMDZiYjQ4YjdhZi4uNWVlYjliZmE3NDAwZjcyMTVjMDI2YzU1MmQ4
MmFhMzhhNzYzZjk0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9o
eXBoZW4vSHlwaGVuYXRpb25MaWJIeXBoZW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGliSHlwaGVuLmNwcApAQCAtMjksMTAgKzI5LDEw
IEBACiAKICNpZiBVU0UoTElCSFlQSEVOKQogCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2lu
Y2x1ZGUgPGh5cGhlbi5oPgogI2luY2x1ZGUgPGxpbWl0cz4KICNpbmNsdWRlIDxzdGRsaWIuaD4K
KyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAj
aW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1RpbnlMUlVDYWNo
ZS5oPgpAQCAtMjI0LDcgKzIyNCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBSZWZQdHI8V2Vi
Q29yZTo6SHlwaGVuYXRpb25EaWN0aW9uYXJ5PiBjcmVhdGVWYWx1ZUZvcktleShjb25zdCBBdG9t
aWNTdHJpbmcmIGRpY3Rpb25hcnlQYXRoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6
Okh5cGhlbmF0aW9uRGljdGlvbmFyeTo6Y3JlYXRlKFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihkaWN0aW9uYXJ5UGF0aC5zdHJpbmcoKSkpOworICAgICAgICBy
ZXR1cm4gV2ViQ29yZTo6SHlwaGVuYXRpb25EaWN0aW9uYXJ5OjpjcmVhdGUoRmlsZVN5c3RlbTo6
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRpY3Rpb25hcnlQYXRoLnN0cmluZygpKSk7CiAgICAg
fQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0ZpbGVTeXN0
ZW1XaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0ZpbGVTeXN0ZW1XaW4uY3Bw
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYjcwMmNiMDEyMGFiYmYyNTg1MjlmYWY5
NDMxMGRkZmZmZGY2MDg0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2luLmNwcAorKysg
L2Rldi9udWxsCkBAIC0xLDU4OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3LTIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA4
IENvbGxhYm9yYSwgTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4g
Ci0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4g
Ci0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhl
IG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIkZpbGVTeXN0ZW0uaCIKLQotI2luY2x1ZGUgIkZpbGVNZXRhZGF0YS5oIgotI2luY2x1ZGUg
Ik5vdEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSAiUGF0aFdhbGtlci5oIgotI2luY2x1ZGUgPGlv
Lmg+Ci0jaW5jbHVkZSA8c2hsb2JqLmg+Ci0jaW5jbHVkZSA8c2hsd2FwaS5oPgotI2luY2x1ZGUg
PHN5cy9zdGF0Lmg+Ci0jaW5jbHVkZSA8d2luZG93cy5oPgotI2luY2x1ZGUgPHd0Zi9DcnlwdG9n
cmFwaGljYWxseVJhbmRvbU51bWJlci5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxk
ZXIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgRmlsZVN5c3RlbSB7Ci0KLXN0YXRpYyBjb25z
dCBVTE9OR0xPTkcga1NlY29uZHNGcm9tRmlsZVRpbWVUb1RpbWV0ID0gMTE2NDQ0NzM2MDA7Ci0K
LXN0YXRpYyBib29sIGdldEZpbmREYXRhKFN0cmluZyBwYXRoLCBXSU4zMl9GSU5EX0RBVEFXJiBm
aW5kRGF0YSkKLXsKLSAgICBIQU5ETEUgaGFuZGxlID0gRmluZEZpcnN0RmlsZVcoc3RyaW5nVG9O
dWxsVGVybWluYXRlZFdDaGFyKHBhdGgpLmRhdGEoKSwgJmZpbmREYXRhKTsKLSAgICBpZiAoaGFu
ZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
RmluZENsb3NlKGhhbmRsZSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXN0YXRpYyBib29sIGdl
dEZpbGVTaXplRnJvbUZpbmREYXRhKGNvbnN0IFdJTjMyX0ZJTkRfREFUQVcmIGZpbmREYXRhLCBs
b25nIGxvbmcmIHNpemUpCi17Ci0gICAgVUxBUkdFX0lOVEVHRVIgZmlsZVNpemU7Ci0gICAgZmls
ZVNpemUuSGlnaFBhcnQgPSBmaW5kRGF0YS5uRmlsZVNpemVIaWdoOwotICAgIGZpbGVTaXplLkxv
d1BhcnQgPSBmaW5kRGF0YS5uRmlsZVNpemVMb3c7Ci0KLSAgICBpZiAoZmlsZVNpemUuUXVhZFBh
cnQgPiBzdGF0aWNfY2FzdDxVTE9OR0xPTkc+KHN0ZDo6bnVtZXJpY19saW1pdHM8bG9uZyBsb25n
Pjo6bWF4KCkpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBzaXplID0gZmlsZVNpemUu
UXVhZFBhcnQ7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXN0YXRpYyBib29sIGdldEZpbGVTaXpl
RnJvbUJ5SGFuZGxlRmlsZUluZm9ybWF0aW9uU3RydWN0dXJlKGNvbnN0IEJZX0hBTkRMRV9GSUxF
X0lORk9STUFUSU9OJiBmaWxlSW5mb3JtYXRpb24sIGxvbmcgbG9uZyYgc2l6ZSkKLXsKLSAgICBV
TEFSR0VfSU5URUdFUiBmaWxlU2l6ZTsKLSAgICBmaWxlU2l6ZS5IaWdoUGFydCA9IGZpbGVJbmZv
cm1hdGlvbi5uRmlsZVNpemVIaWdoOwotICAgIGZpbGVTaXplLkxvd1BhcnQgPSBmaWxlSW5mb3Jt
YXRpb24ubkZpbGVTaXplTG93OwotCi0gICAgaWYgKGZpbGVTaXplLlF1YWRQYXJ0ID4gc3RhdGlj
X2Nhc3Q8VUxPTkdMT05HPihzdGQ6Om51bWVyaWNfbGltaXRzPGxvbmcgbG9uZz46Om1heCgpKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgc2l6ZSA9IGZpbGVTaXplLlF1YWRQYXJ0Owot
ICAgIHJldHVybiB0cnVlOwotfQotCi1zdGF0aWMgdm9pZCBnZXRGaWxlQ3JlYXRpb25UaW1lRnJv
bUZpbmREYXRhKGNvbnN0IFdJTjMyX0ZJTkRfREFUQVcmIGZpbmREYXRhLCB0aW1lX3QmIHRpbWUp
Ci17Ci0gICAgVUxBUkdFX0lOVEVHRVIgZmlsZVRpbWU7Ci0gICAgZmlsZVRpbWUuSGlnaFBhcnQg
PSBmaW5kRGF0YS5mdENyZWF0aW9uVGltZS5kd0hpZ2hEYXRlVGltZTsKLSAgICBmaWxlVGltZS5M
b3dQYXJ0ID0gZmluZERhdGEuZnRDcmVhdGlvblRpbWUuZHdMb3dEYXRlVGltZTsKLQotICAgIC8v
IEluZm9ybWF0aW9uIGFib3V0IGNvbnZlcnRpbmcgdGltZV90IHRvIEZpbGVUaW1lIGlzIGF2YWls
YWJsZSBhdCBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvbXM3MjQyMjgl
Mjh2PXZzLjg1JTI5LmFzcHgKLSAgICB0aW1lID0gZmlsZVRpbWUuUXVhZFBhcnQgLyAxMDAwMDAw
MCAtIGtTZWNvbmRzRnJvbUZpbGVUaW1lVG9UaW1ldDsKLX0KLQotCi1zdGF0aWMgdm9pZCBnZXRG
aWxlTW9kaWZpY2F0aW9uVGltZUZyb21GaW5kRGF0YShjb25zdCBXSU4zMl9GSU5EX0RBVEFXJiBm
aW5kRGF0YSwgdGltZV90JiB0aW1lKQotewotICAgIFVMQVJHRV9JTlRFR0VSIGZpbGVUaW1lOwot
ICAgIGZpbGVUaW1lLkhpZ2hQYXJ0ID0gZmluZERhdGEuZnRMYXN0V3JpdGVUaW1lLmR3SGlnaERh
dGVUaW1lOwotICAgIGZpbGVUaW1lLkxvd1BhcnQgPSBmaW5kRGF0YS5mdExhc3RXcml0ZVRpbWUu
ZHdMb3dEYXRlVGltZTsKLQotICAgIC8vIEluZm9ybWF0aW9uIGFib3V0IGNvbnZlcnRpbmcgdGlt
ZV90IHRvIEZpbGVUaW1lIGlzIGF2YWlsYWJsZSBhdCBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29t
L2VuLXVzL2xpYnJhcnkvbXM3MjQyMjglMjh2PXZzLjg1JTI5LmFzcHgKLSAgICB0aW1lID0gZmls
ZVRpbWUuUXVhZFBhcnQgLyAxMDAwMDAwMCAtIGtTZWNvbmRzRnJvbUZpbGVUaW1lVG9UaW1ldDsK
LX0KLQotYm9vbCBnZXRGaWxlU2l6ZShjb25zdCBTdHJpbmcmIHBhdGgsIGxvbmcgbG9uZyYgc2l6
ZSkKLXsKLSAgICBXSU4zMl9GSU5EX0RBVEFXIGZpbmREYXRhOwotICAgIGlmICghZ2V0RmluZERh
dGEocGF0aCwgZmluZERhdGEpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4g
Z2V0RmlsZVNpemVGcm9tRmluZERhdGEoZmluZERhdGEsIHNpemUpOwotfQotCi1ib29sIGdldEZp
bGVTaXplKFBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlSGFuZGxlLCBsb25nIGxvbmcmIHNpemUpCi17
Ci0gICAgQllfSEFORExFX0ZJTEVfSU5GT1JNQVRJT04gZmlsZUluZm9ybWF0aW9uOwotICAgIGlm
ICghOjpHZXRGaWxlSW5mb3JtYXRpb25CeUhhbmRsZShmaWxlSGFuZGxlLCAmZmlsZUluZm9ybWF0
aW9uKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIGdldEZpbGVTaXplRnJv
bUJ5SGFuZGxlRmlsZUluZm9ybWF0aW9uU3RydWN0dXJlKGZpbGVJbmZvcm1hdGlvbiwgc2l6ZSk7
Ci19Ci0KLU9wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBT
dHJpbmcmIHBhdGgpCi17Ci0gICAgV0lOMzJfRklORF9EQVRBVyBmaW5kRGF0YTsKLSAgICBpZiAo
IWdldEZpbmREYXRhKHBhdGgsIGZpbmREYXRhKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKLQotICAgIHRpbWVfdCB0aW1lID0gMDsKLSAgICBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZUZy
b21GaW5kRGF0YShmaW5kRGF0YSwgdGltZSk7Ci0gICAgcmV0dXJuIFdhbGxUaW1lOjpmcm9tUmF3
U2Vjb25kcyh0aW1lKTsKLX0KLQotT3B0aW9uYWw8V2FsbFRpbWU+IGdldEZpbGVDcmVhdGlvblRp
bWUoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIFdJTjMyX0ZJTkRfREFUQVcgZmluZERhdGE7
Ci0gICAgaWYgKCFnZXRGaW5kRGF0YShwYXRoLCBmaW5kRGF0YSkpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7Ci0KLSAgICB0aW1lX3QgdGltZSA9IDA7Ci0gICAgZ2V0RmlsZUNyZWF0aW9u
VGltZUZyb21GaW5kRGF0YShmaW5kRGF0YSwgdGltZSk7Ci0gICAgcmV0dXJuIFdhbGxUaW1lOjpm
cm9tUmF3U2Vjb25kcyh0aW1lKTsKLX0KLQotc3RhdGljIFN0cmluZyBnZXRGaW5hbFBhdGhOYW1l
KGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBhdXRvIGhhbmRsZSA9IG9wZW5GaWxlKHBhdGgs
IEZpbGVPcGVuTW9kZTo6UmVhZCk7Ci0gICAgaWYgKCFpc0hhbmRsZVZhbGlkKGhhbmRsZSkpCi0g
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIFZlY3RvcjxVQ2hhcj4gYnVmZmVyKE1BWF9Q
QVRIKTsKLSAgICBpZiAoOjpHZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGVXKGhhbmRsZSwgYnVmZmVy
LmRhdGEoKSwgYnVmZmVyLnNpemUoKSwgVk9MVU1FX05BTUVfTlQpID49IE1BWF9QQVRIKSB7Ci0g
ICAgICAgIGNsb3NlRmlsZShoYW5kbGUpOwotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAg
fQotICAgIGNsb3NlRmlsZShoYW5kbGUpOwotCi0gICAgYnVmZmVyLnNocmluayh3Y3NsZW4oYnVm
ZmVyLmRhdGEoKSkpOwotICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KFdURk1vdmUoYnVmZmVyKSk7
Ci19Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBpc1N5bWJvbGljTGluayhXSU4zMl9GSU5EX0RBVEFX
IGZpbmREYXRhKQotewotICAgIHJldHVybiBmaW5kRGF0YS5kd0ZpbGVBdHRyaWJ1dGVzICYgRklM
RV9BVFRSSUJVVEVfUkVQQVJTRV9QT0lOVCAmJiBmaW5kRGF0YS5kd1Jlc2VydmVkMCA9PSBJT19S
RVBBUlNFX1RBR19TWU1MSU5LOwotfQotCi1zdGF0aWMgRmlsZU1ldGFkYXRhOjpUeXBlIHRvRmls
ZU1ldGFkYXRhVHlwZShXSU4zMl9GSU5EX0RBVEFXIGZpbmREYXRhKQotewotICAgIGlmIChmaW5k
RGF0YS5kd0ZpbGVBdHRyaWJ1dGVzICYgRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZKQotICAgICAg
ICByZXR1cm4gRmlsZU1ldGFkYXRhOjpUeXBlOjpEaXJlY3Rvcnk7Ci0gICAgaWYgKGlzU3ltYm9s
aWNMaW5rKGZpbmREYXRhKSkKLSAgICAgICAgcmV0dXJuIEZpbGVNZXRhZGF0YTo6VHlwZTo6U3lt
Ym9saWNMaW5rOwotICAgIHJldHVybiBGaWxlTWV0YWRhdGE6OlR5cGU6OkZpbGU7Ci19Ci0KLXN0
YXRpYyBPcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbmREYXRhVG9GaWxlTWV0YWRhdGEoV0lOMzJf
RklORF9EQVRBVyBmaW5kRGF0YSkKLXsKLSAgICBsb25nIGxvbmcgbGVuZ3RoOwotICAgIGlmICgh
Z2V0RmlsZVNpemVGcm9tRmluZERhdGEoZmluZERhdGEsIGxlbmd0aCkpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7Ci0KLSAgICB0aW1lX3QgbW9kaWZpY2F0aW9uVGltZTsKLSAgICBnZXRG
aWxlTW9kaWZpY2F0aW9uVGltZUZyb21GaW5kRGF0YShmaW5kRGF0YSwgbW9kaWZpY2F0aW9uVGlt
ZSk7Ci0KLSAgICByZXR1cm4gRmlsZU1ldGFkYXRhIHsKLSAgICAgICAgV2FsbFRpbWU6OmZyb21S
YXdTZWNvbmRzKG1vZGlmaWNhdGlvblRpbWUpLAotICAgICAgICBsZW5ndGgsCi0gICAgICAgIHN0
YXRpY19jYXN0PGJvb2w+KGZpbmREYXRhLmR3RmlsZUF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVU
RV9ISURERU4pLAotICAgICAgICB0b0ZpbGVNZXRhZGF0YVR5cGUoZmluZERhdGEpCi0gICAgfTsK
LX0KLQotT3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBw
YXRoKQotewotICAgIFdJTjMyX0ZJTkRfREFUQVcgZmluZERhdGE7Ci0gICAgaWYgKCFnZXRGaW5k
RGF0YShwYXRoLCBmaW5kRGF0YSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAg
ICByZXR1cm4gZmluZERhdGFUb0ZpbGVNZXRhZGF0YShmaW5kRGF0YSk7Ci19Ci0KLU9wdGlvbmFs
PEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3MoY29uc3QgU3RyaW5n
JiBwYXRoKQotewotICAgIFdJTjMyX0ZJTkRfREFUQVcgZmluZERhdGE7Ci0gICAgaWYgKCFnZXRG
aW5kRGF0YShwYXRoLCBmaW5kRGF0YSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0K
LSAgICBpZiAoaXNTeW1ib2xpY0xpbmsoZmluZERhdGEpKSB7Ci0gICAgICAgIFN0cmluZyB0YXJn
ZXRQYXRoID0gZ2V0RmluYWxQYXRoTmFtZShwYXRoKTsKLSAgICAgICAgaWYgKHRhcmdldFBhdGgu
aXNOdWxsKCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgICAgICBpZiAo
IWdldEZpbmREYXRhKHRhcmdldFBhdGgsIGZpbmREYXRhKSkKLSAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZpbmREYXRhVG9GaWxlTWV0YWRhdGEo
ZmluZERhdGEpOwotfQotCi1ib29sIGNyZWF0ZVN5bWJvbGljTGluayhjb25zdCBTdHJpbmcmIHRh
cmdldFBhdGgsIGNvbnN0IFN0cmluZyYgc3ltYm9saWNMaW5rUGF0aCkKLXsKLSAgICByZXR1cm4g
ITo6Q3JlYXRlU3ltYm9saWNMaW5rVyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoc3ltYm9s
aWNMaW5rUGF0aCkuZGF0YSgpLCBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIodGFyZ2V0UGF0
aCkuZGF0YSgpLCAwKTsKLX0KLQotYm9vbCBmaWxlRXhpc3RzKGNvbnN0IFN0cmluZyYgcGF0aCkK
LXsKLSAgICBXSU4zMl9GSU5EX0RBVEFXIGZpbmREYXRhOwotICAgIHJldHVybiBnZXRGaW5kRGF0
YShwYXRoLCBmaW5kRGF0YSk7Ci19Ci0KLWJvb2wgZGVsZXRlRmlsZShjb25zdCBTdHJpbmcmIHBh
dGgpCi17Ci0gICAgU3RyaW5nIGZpbGVuYW1lID0gcGF0aDsKLSAgICByZXR1cm4gISFEZWxldGVG
aWxlVyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoZmlsZW5hbWUpLmRhdGEoKSk7Ci19Ci0K
LWJvb2wgZGVsZXRlRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIFN0
cmluZyBmaWxlbmFtZSA9IHBhdGg7Ci0gICAgcmV0dXJuICEhUmVtb3ZlRGlyZWN0b3J5VyhzdHJp
bmdUb051bGxUZXJtaW5hdGVkV0NoYXIoZmlsZW5hbWUpLmRhdGEoKSk7Ci19Ci0KLWJvb2wgbW92
ZUZpbGUoY29uc3QgU3RyaW5nJiBvbGRQYXRoLCBjb25zdCBTdHJpbmcmIG5ld1BhdGgpCi17Ci0g
ICAgU3RyaW5nIG9sZEZpbGVuYW1lID0gb2xkUGF0aDsKLSAgICBTdHJpbmcgbmV3RmlsZW5hbWUg
PSBuZXdQYXRoOwotICAgIHJldHVybiAhITo6TW92ZUZpbGVFeChzdHJpbmdUb051bGxUZXJtaW5h
dGVkV0NoYXIob2xkRmlsZW5hbWUpLmRhdGEoKSwgc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFy
KG5ld0ZpbGVuYW1lKS5kYXRhKCksIE1PVkVGSUxFX0NPUFlfQUxMT1dFRCB8IE1PVkVGSUxFX1JF
UExBQ0VfRVhJU1RJTkcpOwotfQotCi1TdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNv
bnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb21wb25lbnQpCi17Ci0gICAgVmVjdG9y
PFVDaGFyPiBidWZmZXIoTUFYX1BBVEgpOwotCi0gICAgaWYgKHBhdGgubGVuZ3RoKCkgKyAxID4g
YnVmZmVyLnNpemUoKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgU3RyaW5nVmll
dyhwYXRoKS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChidWZmZXIuZGF0YSgpKTsKLSAgICBi
dWZmZXJbcGF0aC5sZW5ndGgoKV0gPSAnXDAnOwotCi0gICAgaWYgKCFQYXRoQXBwZW5kVyhidWZm
ZXIuZGF0YSgpLCBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoY29tcG9uZW50KS5kYXRhKCkp
KQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICBidWZmZXIuc2hyaW5rKHdjc2xlbihi
dWZmZXIuZGF0YSgpKSk7Ci0KLSAgICByZXR1cm4gU3RyaW5nOjphZG9wdChXVEZNb3ZlKGJ1ZmZl
cikpOwotfQotCi1TdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhTdHJpbmdWaWV3IHBh
dGgsIGNvbnN0IFZlY3RvcjxTdHJpbmdWaWV3PiYgY29tcG9uZW50cykKLXsKLSAgICBTdHJpbmcg
cmVzdWx0ID0gcGF0aC50b1N0cmluZygpOwotICAgIGZvciAoYXV0byYgY29tcG9uZW50IDogY29t
cG9uZW50cykKLSAgICAgICAgcmVzdWx0ID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlc3Vs
dCwgY29tcG9uZW50LnRvU3RyaW5nKCkpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLSNpZiAh
VVNFKENGKQotCi1DU3RyaW5nIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcm
IHBhdGgpCi17Ci0gICAgYXV0byB1cGNvbnZlcnRlZENoYXJhY3RlcnMgPSBwYXRoLnVwY29udmVy
dGVkQ2hhcmFjdGVycygpOwotCi0gICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMgPSB1cGNvbnZl
cnRlZENoYXJhY3RlcnM7Ci0gICAgaW50IHNpemUgPSBXaWRlQ2hhclRvTXVsdGlCeXRlKENQX0FD
UCwgMCwgY2hhcmFjdGVycywgcGF0aC5sZW5ndGgoKSwgMCwgMCwgMCwgMCkgLSAxOwotCi0gICAg
Y2hhciogYnVmZmVyOwotICAgIENTdHJpbmcgc3RyaW5nID0gQ1N0cmluZzo6bmV3VW5pbml0aWFs
aXplZChzaXplLCBidWZmZXIpOwotCi0gICAgV2lkZUNoYXJUb011bHRpQnl0ZShDUF9BQ1AsIDAs
IGNoYXJhY3RlcnMsIHBhdGgubGVuZ3RoKCksIGJ1ZmZlciwgc2l6ZSwgMCwgMCk7Ci0KLSAgICBy
ZXR1cm4gc3RyaW5nOwotfQotCi0jZW5kaWYgLy8gIVVTRShDRikKLQotYm9vbCBtYWtlQWxsRGly
ZWN0b3JpZXMoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIFN0cmluZyBmdWxsUGF0aCA9IHBh
dGg7Ci0gICAgaWYgKFNIQ3JlYXRlRGlyZWN0b3J5RXgoMCwgc3RyaW5nVG9OdWxsVGVybWluYXRl
ZFdDaGFyKGZ1bGxQYXRoKS5kYXRhKCksIDApICE9IEVSUk9SX1NVQ0NFU1MpIHsKLSAgICAgICAg
RFdPUkQgZXJyb3IgPSBHZXRMYXN0RXJyb3IoKTsKLSAgICAgICAgaWYgKGVycm9yICE9IEVSUk9S
X0ZJTEVfRVhJU1RTICYmIGVycm9yICE9IEVSUk9SX0FMUkVBRFlfRVhJU1RTKSB7Ci0gICAgICAg
ICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgcGF0aCAlcyIsIHBhdGguYXNjaWkoKS5k
YXRhKCkpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotICAg
IHJldHVybiB0cnVlOwotfQotCi1TdHJpbmcgaG9tZURpcmVjdG9yeVBhdGgoKQotewotICAgIG5v
dEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuICIiOwotfQotCi1TdHJpbmcgcGF0aEdldEZpbGVO
YW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICByZXR1cm4gbnVsbFRlcm1pbmF0ZWRXQ2hh
clRvU3RyaW5nKDo6UGF0aEZpbmRGaWxlTmFtZShzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIo
cGF0aCkuZGF0YSgpKSk7Ci19Ci0KLVN0cmluZyBkaXJlY3RvcnlOYW1lKGNvbnN0IFN0cmluZyYg
cGF0aCkKLXsKLSAgICBTdHJpbmcgbmFtZSA9IHBhdGgubGVmdChwYXRoLmxlbmd0aCgpIC0gcGF0
aEdldEZpbGVOYW1lKHBhdGgpLmxlbmd0aCgpKTsKLSAgICBpZiAobmFtZS5jaGFyYWN0ZXJTdGFy
dGluZ0F0KG5hbWUubGVuZ3RoKCkgLSAxKSA9PSAnXFwnKSB7Ci0gICAgICAgIC8vIFJlbW92ZSBh
bnkgdHJhaWxpbmcgIlwiLgotICAgICAgICBuYW1lLnRydW5jYXRlKG5hbWUubGVuZ3RoKCkgLSAx
KTsKLSAgICB9Ci0gICAgcmV0dXJuIG5hbWU7Ci19Ci0KLXN0YXRpYyBTdHJpbmcgYnVuZGxlTmFt
ZSgpCi17Ci0gICAgc3RhdGljIGNvbnN0IE5ldmVyRGVzdHJveWVkPFN0cmluZz4gbmFtZSA9IFtd
IHsKLSAgICAgICAgU3RyaW5nIG5hbWUgeyAiV2ViS2l0Il9zIH07Ci0KLSNpZiBVU0UoQ0YpCi0g
ICAgICAgIGlmIChDRkJ1bmRsZVJlZiBidW5kbGUgPSBDRkJ1bmRsZUdldE1haW5CdW5kbGUoKSkg
ewotICAgICAgICAgICAgaWYgKENGVHlwZVJlZiBidW5kbGVFeGVjdXRhYmxlID0gQ0ZCdW5kbGVH
ZXRWYWx1ZUZvckluZm9EaWN0aW9uYXJ5S2V5KGJ1bmRsZSwga0NGQnVuZGxlRXhlY3V0YWJsZUtl
eSkpIHsKLSAgICAgICAgICAgICAgICBpZiAoQ0ZHZXRUeXBlSUQoYnVuZGxlRXhlY3V0YWJsZSkg
PT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkKLSAgICAgICAgICAgICAgICAgICAgbmFtZSA9IHJlaW50
ZXJwcmV0X2Nhc3Q8Q0ZTdHJpbmdSZWY+KGJ1bmRsZUV4ZWN1dGFibGUpOwotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0jZW5kaWYKLQotICAgICAgICByZXR1cm4gbmFtZTsKLSAgICB9KCk7Ci0K
LSAgICByZXR1cm4gbmFtZTsKLX0KLQotc3RhdGljIFN0cmluZyBzdG9yYWdlRGlyZWN0b3J5KERX
T1JEIHBhdGhJZGVudGlmaWVyKQotewotICAgIFZlY3RvcjxVQ2hhcj4gYnVmZmVyKE1BWF9QQVRI
KTsKLSAgICBpZiAoRkFJTEVEKFNIR2V0Rm9sZGVyUGF0aFcoMCwgcGF0aElkZW50aWZpZXIgfCBD
U0lETF9GTEFHX0NSRUFURSwgMCwgMCwgYnVmZmVyLmRhdGEoKSkpKQotICAgICAgICByZXR1cm4g
U3RyaW5nKCk7Ci0gICAgYnVmZmVyLnJlc2l6ZSh3Y3NsZW4oYnVmZmVyLmRhdGEoKSkpOwotICAg
IFN0cmluZyBkaXJlY3RvcnkgPSBTdHJpbmc6OmFkb3B0KFdURk1vdmUoYnVmZmVyKSk7Ci0KLSAg
ICBkaXJlY3RvcnkgPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGlyZWN0b3J5LCAiQXBwbGUg
Q29tcHV0ZXJcXCIgKyBidW5kbGVOYW1lKCkpOwotICAgIGlmICghbWFrZUFsbERpcmVjdG9yaWVz
KGRpcmVjdG9yeSkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIHJldHVybiBkaXJl
Y3Rvcnk7Ci19Ci0KLXN0YXRpYyBTdHJpbmcgY2FjaGVkU3RvcmFnZURpcmVjdG9yeShEV09SRCBw
YXRoSWRlbnRpZmllcikKLXsKLSAgICBzdGF0aWMgSGFzaE1hcDxEV09SRCwgU3RyaW5nPiBkaXJl
Y3RvcmllczsKLQotICAgIEhhc2hNYXA8RFdPUkQsIFN0cmluZz46Oml0ZXJhdG9yIGl0ID0gZGly
ZWN0b3JpZXMuZmluZChwYXRoSWRlbnRpZmllcik7Ci0gICAgaWYgKGl0ICE9IGRpcmVjdG9yaWVz
LmVuZCgpKQotICAgICAgICByZXR1cm4gaXQtPnZhbHVlOwotCi0gICAgU3RyaW5nIGRpcmVjdG9y
eSA9IHN0b3JhZ2VEaXJlY3RvcnkocGF0aElkZW50aWZpZXIpOwotICAgIGRpcmVjdG9yaWVzLmFk
ZChwYXRoSWRlbnRpZmllciwgZGlyZWN0b3J5KTsKLQotICAgIHJldHVybiBkaXJlY3Rvcnk7Ci19
Ci0KLXN0YXRpYyBTdHJpbmcgZ2VuZXJhdGVUZW1wb3JhcnlQYXRoKGNvbnN0IEZ1bmN0aW9uPGJv
b2woY29uc3QgU3RyaW5nJik+JiBhY3Rpb24pCi17Ci0gICAgd2NoYXJfdCB0ZW1wUGF0aFtNQVhf
UEFUSF07Ci0gICAgaW50IHRlbXBQYXRoTGVuZ3RoID0gOjpHZXRUZW1wUGF0aFcoV1RGX0FSUkFZ
X0xFTkdUSCh0ZW1wUGF0aCksIHRlbXBQYXRoKTsKLSAgICBpZiAodGVtcFBhdGhMZW5ndGggPD0g
MCB8fCB0ZW1wUGF0aExlbmd0aCA+IFdURl9BUlJBWV9MRU5HVEgodGVtcFBhdGgpKQotICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICBTdHJpbmcgcHJvcG9zZWRQYXRoOwotICAgIGRvIHsK
LSAgICAgICAgd2NoYXJfdCB0ZW1wRmlsZVtdID0gTCJYWFhYWFhYWC50bXAiOyAvLyBVc2UgOC4z
IHN0eWxlIG5hbWUgKG1vcmUgY2hhcmFjdGVycyBhcmVuJ3QgaGVscGZ1bCBkdWUgdG8gOC4zIHNo
b3J0IGZpbGUgbmFtZXMpCi0gICAgICAgIGNvbnN0IGludCByYW5kb21QYXJ0TGVuZ3RoID0gODsK
LSAgICAgICAgY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21WYWx1ZXModGVtcEZpbGUsIHJhbmRvbVBh
cnRMZW5ndGggKiBzaXplb2Yod2NoYXJfdCkpOwotCi0gICAgICAgIC8vIExpbWl0IHRvIHZhbGlk
IGZpbGVzeXN0ZW0gY2hhcmFjdGVycywgYWxzbyBleGNsdWRpbmcgb3RoZXJzIHRoYXQgY291bGQg
YmUgcHJvYmxlbWF0aWMsIGxpa2UgcHVuY3R1YXRpb24uCi0gICAgICAgIC8vIGRvbid0IGluY2x1
ZGUgYm90aCB1cHBlciBhbmQgbG93ZXJjYXNlIHNpbmNlIFdpbmRvd3MgZmlsZSBzeXN0ZW1zIGFy
ZSB0eXBpY2FsbHkgbm90IGNhc2Ugc2Vuc2l0aXZlLgotICAgICAgICBjb25zdCBjaGFyIHZhbGlk
Q2hhcnNbXSA9ICIwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiOwotICAgICAg
ICBmb3IgKGludCBpID0gMDsgaSA8IHJhbmRvbVBhcnRMZW5ndGg7ICsraSkKLSAgICAgICAgICAg
IHRlbXBGaWxlW2ldID0gdmFsaWRDaGFyc1t0ZW1wRmlsZVtpXSAlIChzaXplb2YodmFsaWRDaGFy
cykgLSAxKV07Ci0KLSAgICAgICAgQVNTRVJUKHdjc2xlbih0ZW1wRmlsZSkgPT0gV1RGX0FSUkFZ
X0xFTkdUSCh0ZW1wRmlsZSkgLSAxKTsKLQotICAgICAgICBwcm9wb3NlZFBhdGggPSBwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQobnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5nKHRlbXBQYXRoKSwg
bnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5nKHRlbXBGaWxlKSk7Ci0gICAgICAgIGlmIChwcm9w
b3NlZFBhdGguaXNFbXB0eSgpKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfSB3aGlsZSAoIWFj
dGlvbihwcm9wb3NlZFBhdGgpKTsKLQotICAgIHJldHVybiBwcm9wb3NlZFBhdGg7Ci19Ci0KLVN0
cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmLCBQbGF0Zm9ybUZpbGVIYW5kbGUm
IGhhbmRsZSkKLXsKLSAgICBoYW5kbGUgPSBJTlZBTElEX0hBTkRMRV9WQUxVRTsKLQotICAgIFN0
cmluZyBwcm9wb3NlZFBhdGggPSBnZW5lcmF0ZVRlbXBvcmFyeVBhdGgoWyZoYW5kbGVdKGNvbnN0
IFN0cmluZyYgcHJvcG9zZWRQYXRoKSB7Ci0gICAgICAgIC8vIHVzZSBDUkVBVEVfTkVXIHRvIGF2
b2lkIG92ZXJ3cml0aW5nIGFuIGV4aXN0aW5nIGZpbGUgd2l0aCB0aGUgc2FtZSBuYW1lCi0gICAg
ICAgIGhhbmRsZSA9IDo6Q3JlYXRlRmlsZVcoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKHBy
b3Bvc2VkUGF0aCkuZGF0YSgpLCBHRU5FUklDX1JFQUQgfCBHRU5FUklDX1dSSVRFLCAwLCAwLCBD
UkVBVEVfTkVXLCBGSUxFX0FUVFJJQlVURV9OT1JNQUwsIDApOwotCi0gICAgICAgIHJldHVybiBp
c0hhbmRsZVZhbGlkKGhhbmRsZSkgfHwgR2V0TGFzdEVycm9yKCkgPT0gRVJST1JfQUxSRUFEWV9F
WElTVFM7Ci0gICAgfSk7Ci0KLSAgICBpZiAoIWlzSGFuZGxlVmFsaWQoaGFuZGxlKSkKLSAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgcmV0dXJuIHByb3Bvc2VkUGF0aDsKLX0KLQotUGxh
dGZvcm1GaWxlSGFuZGxlIG9wZW5GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2Rl
IG1vZGUpCi17Ci0gICAgRFdPUkQgZGVzaXJlZEFjY2VzcyA9IDA7Ci0gICAgRFdPUkQgY3JlYXRp
b25EaXNwb3NpdGlvbiA9IDA7Ci0gICAgRFdPUkQgc2hhcmVNb2RlID0gMDsKLSAgICBzd2l0Y2gg
KG1vZGUpIHsKLSAgICBjYXNlIEZpbGVPcGVuTW9kZTo6UmVhZDoKLSAgICAgICAgZGVzaXJlZEFj
Y2VzcyA9IEdFTkVSSUNfUkVBRDsKLSAgICAgICAgY3JlYXRpb25EaXNwb3NpdGlvbiA9IE9QRU5f
RVhJU1RJTkc7Ci0gICAgICAgIHNoYXJlTW9kZSA9IEZJTEVfU0hBUkVfUkVBRDsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBGaWxlT3Blbk1vZGU6OldyaXRlOgotICAgICAgICBkZXNpcmVkQWNj
ZXNzID0gR0VORVJJQ19XUklURTsKLSAgICAgICAgY3JlYXRpb25EaXNwb3NpdGlvbiA9IENSRUFU
RV9BTFdBWVM7Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgIH0KLQotICAgIFN0cmluZyBkZXN0aW5hdGlvbiA9IHBhdGg7Ci0g
ICAgcmV0dXJuIENyZWF0ZUZpbGUoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGRlc3RpbmF0
aW9uKS5kYXRhKCksIGRlc2lyZWRBY2Nlc3MsIHNoYXJlTW9kZSwgMCwgY3JlYXRpb25EaXNwb3Np
dGlvbiwgRklMRV9BVFRSSUJVVEVfTk9STUFMLCAwKTsKLX0KLQotdm9pZCBjbG9zZUZpbGUoUGxh
dGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpCi17Ci0gICAgaWYgKGlzSGFuZGxlVmFsaWQoaGFuZGxl
KSkgewotICAgICAgICA6OkNsb3NlSGFuZGxlKGhhbmRsZSk7Ci0gICAgICAgIGhhbmRsZSA9IGlu
dmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7Ci0gICAgfQotfQotCi1sb25nIGxvbmcgc2Vla0ZpbGUo
UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCwgRmlsZVNlZWtPcmln
aW4gb3JpZ2luKQotewotICAgIERXT1JEIG1vdmVNZXRob2QgPSBGSUxFX0JFR0lOOwotCi0gICAg
aWYgKG9yaWdpbiA9PSBGaWxlU2Vla09yaWdpbjo6Q3VycmVudCkKLSAgICAgICAgbW92ZU1ldGhv
ZCA9IEZJTEVfQ1VSUkVOVDsKLSAgICBlbHNlIGlmIChvcmlnaW4gPT0gRmlsZVNlZWtPcmlnaW46
OkVuZCkKLSAgICAgICAgbW92ZU1ldGhvZCA9IEZJTEVfRU5EOwotCi0gICAgTEFSR0VfSU5URUdF
UiBsYXJnZU9mZnNldDsKLSAgICBsYXJnZU9mZnNldC5RdWFkUGFydCA9IG9mZnNldDsKLQotICAg
IGxhcmdlT2Zmc2V0Lkxvd1BhcnQgPSBTZXRGaWxlUG9pbnRlcihoYW5kbGUsIGxhcmdlT2Zmc2V0
Lkxvd1BhcnQsICZsYXJnZU9mZnNldC5IaWdoUGFydCwgbW92ZU1ldGhvZCk7Ci0KLSAgICBpZiAo
bGFyZ2VPZmZzZXQuTG93UGFydCA9PSBJTlZBTElEX1NFVF9GSUxFX1BPSU5URVIgJiYgR2V0TGFz
dEVycm9yKCkgIT0gTk9fRVJST1IpCi0gICAgICAgIHJldHVybiAtMTsKLQotICAgIHJldHVybiBs
YXJnZU9mZnNldC5RdWFkUGFydDsKLX0KLQotaW50IHdyaXRlVG9GaWxlKFBsYXRmb3JtRmlsZUhh
bmRsZSBoYW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCi17Ci0gICAgaWYgKCFp
c0hhbmRsZVZhbGlkKGhhbmRsZSkpCi0gICAgICAgIHJldHVybiAtMTsKLQotICAgIERXT1JEIGJ5
dGVzV3JpdHRlbjsKLSAgICBib29sIHN1Y2Nlc3MgPSBXcml0ZUZpbGUoaGFuZGxlLCBkYXRhLCBs
ZW5ndGgsICZieXRlc1dyaXR0ZW4sIDApOwotCi0gICAgaWYgKCFzdWNjZXNzKQotICAgICAgICBy
ZXR1cm4gLTE7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oYnl0ZXNXcml0dGVuKTsKLX0K
LQotaW50IHJlYWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBjaGFyKiBkYXRh
LCBpbnQgbGVuZ3RoKQotewotICAgIGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUpKQotICAgICAg
ICByZXR1cm4gLTE7Ci0KLSAgICBEV09SRCBieXRlc1JlYWQ7Ci0gICAgYm9vbCBzdWNjZXNzID0g
OjpSZWFkRmlsZShoYW5kbGUsIGRhdGEsIGxlbmd0aCwgJmJ5dGVzUmVhZCwgMCk7Ci0KLSAgICBp
ZiAoIXN1Y2Nlc3MpCi0gICAgICAgIHJldHVybiAtMTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
aW50PihieXRlc1JlYWQpOwotfQotCi1ib29sIGhhcmRMaW5rT3JDb3B5RmlsZShjb25zdCBTdHJp
bmcmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbikKLXsKLSAgICByZXR1cm4gISE6
OkNvcHlGaWxlKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihzb3VyY2UpLmRhdGEoKSwgc3Ry
aW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGRlc3RpbmF0aW9uKS5kYXRhKCksIFRSVUUpOwotfQot
Ci1TdHJpbmcgbG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1
cm4gY2FjaGVkU3RvcmFnZURpcmVjdG9yeShDU0lETF9MT0NBTF9BUFBEQVRBKTsKLX0KLQotU3Ry
aW5nIHJvYW1pbmdVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4g
Y2FjaGVkU3RvcmFnZURpcmVjdG9yeShDU0lETF9BUFBEQVRBKTsKLX0KLQotVmVjdG9yPFN0cmlu
Zz4gbGlzdERpcmVjdG9yeShjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgY29uc3QgU3RyaW5nJiBm
aWx0ZXIpCi17Ci0gICAgVmVjdG9yPFN0cmluZz4gZW50cmllczsKLQotICAgIFBhdGhXYWxrZXIg
d2Fsa2VyKGRpcmVjdG9yeSwgZmlsdGVyKTsKLSAgICBpZiAoIXdhbGtlci5pc1ZhbGlkKCkpCi0g
ICAgICAgIHJldHVybiBlbnRyaWVzOwotCi0gICAgZG8gewotICAgICAgICBpZiAod2Fsa2VyLmRh
dGEoKS5kd0ZpbGVBdHRyaWJ1dGVzICYgRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZCi0gICAgICAg
ICAgICAmJiAoIXdjc2NtcCh3YWxrZXIuZGF0YSgpLmNGaWxlTmFtZSwgTCIuIikgfHwgIXdjc2Nt
cCh3YWxrZXIuZGF0YSgpLmNGaWxlTmFtZSwgTCIuLiIpKSkKLSAgICAgICAgICAgIGNvbnRpbnVl
OwotCi0gICAgICAgIGVudHJpZXMuYXBwZW5kKGRpcmVjdG9yeSArICJcXCIgKyByZWludGVycHJl
dF9jYXN0PGNvbnN0IFVDaGFyKj4od2Fsa2VyLmRhdGEoKS5jRmlsZU5hbWUpKTsKLSAgICB9IHdo
aWxlICh3YWxrZXIuc3RlcCgpKTsKLQotICAgIHJldHVybiBlbnRyaWVzOwotfQotCi1ib29sIGdl
dFZvbHVtZUZyZWVTcGFjZShjb25zdCBTdHJpbmcmLCB1aW50NjRfdCYpCi17Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLU9wdGlvbmFsPGludDMyX3Q+IGdl
dEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCi17Ci0gICAgYXV0byBoYW5kbGUg
PSBvcGVuRmlsZShmc0ZpbGUuZGF0YSgpLCBGaWxlT3Blbk1vZGU6OlJlYWQpOwotICAgIGlmICgh
aXNIYW5kbGVWYWxpZChoYW5kbGUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0g
ICAgQllfSEFORExFX0ZJTEVfSU5GT1JNQVRJT04gZmlsZUluZm9ybWF0aW9uID0geyB9OwotICAg
IGlmICghOjpHZXRGaWxlSW5mb3JtYXRpb25CeUhhbmRsZShoYW5kbGUsICZmaWxlSW5mb3JtYXRp
b24pKSB7Ci0gICAgICAgIGNsb3NlRmlsZShoYW5kbGUpOwotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwotICAgIH0KLQotICAgIGNsb3NlRmlsZShoYW5kbGUpOwotCi0gICAgcmV0dXJuIGZp
bGVJbmZvcm1hdGlvbi5kd1ZvbHVtZVNlcmlhbE51bWJlcjsKLX0KLQotU3RyaW5nIHJlYWxQYXRo
KGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCi17Ci0gICAgcmV0dXJuIGdldEZpbmFsUGF0aE5hbWUo
ZmlsZVBhdGgpOwotfQotCi1TdHJpbmcgY3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KCkKLXsKLSAg
ICByZXR1cm4gZ2VuZXJhdGVUZW1wb3JhcnlQYXRoKFtdKGNvbnN0IFN0cmluZyYgcHJvcG9zZWRQ
YXRoKSB7Ci0gICAgICAgIHJldHVybiBtYWtlQWxsRGlyZWN0b3JpZXMocHJvcG9zZWRQYXRoKTsK
LSAgICB9KTsKLX0KLQotYm9vbCBkZWxldGVOb25FbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcm
IGRpcmVjdG9yeVBhdGgpCi17Ci0gICAgU0hGSUxFT1BTVFJVQ1QgZGVsZXRlT3BlcmF0aW9uID0g
ewotICAgICAgICBudWxscHRyLAotICAgICAgICBGT19ERUxFVEUsCi0gICAgICAgIHN0cmluZ1Rv
TnVsbFRlcm1pbmF0ZWRXQ2hhcihkaXJlY3RvcnlQYXRoKS5kYXRhKCksCi0gICAgICAgIEwiIiwK
LSAgICAgICAgRk9GX05PQ09ORklSTUFUSU9OIHwgRk9GX05PRVJST1JVSSB8IEZPRl9TSUxFTlQs
Ci0gICAgICAgIGZhbHNlLAotICAgICAgICAwLAotICAgICAgICBMIiIKLSAgICB9OwotICAgIHJl
dHVybiAhU0hGaWxlT3BlcmF0aW9uKCZkZWxldGVPcGVyYXRpb24pOwotfQotCi19IC8vIG5hbWVz
cGFjZSBGaWxlU3lzdGVtCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGF0aFdhbGtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vUGF0aFdhbGtlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGYyMDQwN2IxY2ZlYTYyNGYzYTE1NjlhOGZkNjc2OGE1ZGViZWQzNjMuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL1BhdGhXYWxrZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJQYXRoV2Fsa2VyLmgiCi0KLSNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC93aW4vV0No
YXJTdHJpbmdFeHRyYXMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1QYXRoV2Fsa2VyOjpQ
YXRoV2Fsa2VyKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIHBhdHRlcm4p
Ci17Ci0gICAgU3RyaW5nIHBhdGggPSBkaXJlY3RvcnkgKyAiXFwiICsgcGF0dGVybjsKLSAgICBt
X2hhbmRsZSA9IDo6RmluZEZpcnN0RmlsZVcoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKHBh
dGgpLmRhdGEoKSwgJm1fZGF0YSk7Ci19Ci0KLVBhdGhXYWxrZXI6On5QYXRoV2Fsa2VyKCkKLXsK
LSAgICBpZiAoIWlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIDo6RmluZENsb3NlKG1f
aGFuZGxlKTsKLX0KLQotYm9vbCBQYXRoV2Fsa2VyOjpzdGVwKCkKLXsKLSAgICByZXR1cm4gOjpG
aW5kTmV4dEZpbGVXKG1faGFuZGxlLCAmbV9kYXRhKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BhdGhXYWxrZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXRoV2Fsa2VyLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGZjNTlkNjczMTgxMWI4Y2ExNTg3YTRhMTJhN2RhMWUxYTE1OTNk
ODQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL1BhdGhXYWxrZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ4
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlIDxXaW5kb3dzLmg+Ci0jaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1jbGFzcyBQYXRoV2Fsa2VyIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShQYXRoV2Fsa2VyKTsKLXB1YmxpYzoKLSAgICBQYXRoV2Fsa2VyKGNvbnN0IFdURjo6U3Ry
aW5nJiBkaXJlY3RvcnksIGNvbnN0IFdURjo6U3RyaW5nJiBwYXR0ZXJuKTsKLSAgICB+UGF0aFdh
bGtlcigpOwotCi0gICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9oYW5kbGUgIT0g
SU5WQUxJRF9IQU5ETEVfVkFMVUU7IH0KLSAgICBjb25zdCBXSU4zMl9GSU5EX0RBVEFXJiBkYXRh
KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9Ci0KLSAgICBib29sIHN0ZXAoKTsKLQotcHJpdmF0
ZToKLSAgICBIQU5ETEUgbV9oYW5kbGU7Ci0gICAgV0lOMzJfRklORF9EQVRBVyBtX2RhdGE7Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51REIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL1NlYXJjaFBvcHVwTWVudURCLmNwcAppbmRleCA5ZTZlNGM1MmQ3Yjk4MzhhMWYwN2Jk
ZDU5ZjQwOWQ4MTY1ZmU1NjY2Li5lNTczMGIzMGNjZjNmMDNlZWZkZmY5YTMzMWMwOGVkMGUyMmU1
OGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBN
ZW51REIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1l
bnVEQi5jcHAKQEAgLTI1LDkgKzI1LDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJTZWFyY2hQb3B1cE1lbnVEQi5oIgogCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1
ZGUgIlNRTGl0ZUZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJTUUxpdGVUcmFuc2FjdGlvbi5oIgor
I2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKaW5kZXggNzZjOWM1Yzc4ZDU2ZDNl
OGQ5N2Q0MjFmNGRmYWE0YWIxYmQ5ZWNjMC4uYzRmYTM1NjcwYjk1NDc2NzZiN2M0ZmI5YTgxMmIz
ZDZlNmVjOTllOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCkBA
IC0yNSw3ICsyNSw2IEBACiAjaW5jbHVkZSAiQ29udHJvbFN0YXRlcy5oIgogI2luY2x1ZGUgIkRv
Y3VtZW50LmgiCiAjaW5jbHVkZSAiRmlsZUxpc3QuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgi
CiAjaW5jbHVkZSAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW5jbHVkZSAiRmxvYXRSb3VuZGVkUmVj
dC5oIgogI2luY2x1ZGUgIkZvY3VzQ29udHJvbGxlci5oIgpAQCAtNDUsNiArNDQsNyBAQAogI2lu
Y2x1ZGUgIlNwaW5CdXR0b25FbGVtZW50LmgiCiAjaW5jbHVkZSAiU3RyaW5nVHJ1bmNhdG9yLmgi
CiAjaW5jbHVkZSAiVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgiCisjaW5jbHVkZSA8d3RmL0Zp
bGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogI2lmIEVOQUJM
RShNRVRFUl9FTEVNRU5UKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUd0
ay5jcHAKaW5kZXggYjY5NmVhYzhmYjEwNWUyYjcwOTYyMDY5NDczOTczZTEzZWI5ZmI2Ni4uYjI1
OTY2Y2I1MzMyNzY4NTllZTgxOTY3MWFkMjVmZGY3N2UwM2VhMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsuY3BwCkBAIC0yNyw3ICsyNyw2IEBACiAKICNpbmNs
dWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSAiRmlsZUxpc3QuaCIKLSNpbmNsdWRl
ICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiRmxvYXRSb3VuZGVkUmVjdC5oIgogI2luY2x1ZGUg
IkZvbnREZXNjcmlwdGlvbi5oIgogI2luY2x1ZGUgIkdSZWZQdHJHdGsuaCIKQEAgLTU1LDYgKzU0
LDcgQEAKICNpbmNsdWRlIDxnZGsvZ2RrLmg+CiAjaW5jbHVkZSA8Z2xpYi5oPgogI2luY2x1ZGUg
PGd0ay9ndGsuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9n
bGliL0dSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZVdpbi5jcHAKaW5kZXggZWViOTk4NWU2MmY1YzlhMzQ4MjQzZThkZGU5ZWNjYzBhOWJkYmZi
NS4uMjE5NjU3ZTFmMjRhYWJhMDU4MjVhMmE2MmIwODA0YzdmYmIzZjMzOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwCkBAIC0yNCw3ICsyNCw2IEBACiAK
ICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgotI2lu
Y2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJGb250TWV0cmljcy5oIgogI2luY2x1ZGUg
IkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVTZWxlY3Rpb24uaCIKQEAgLTM4LDYgKzM3LDcgQEAK
ICNpbmNsdWRlICJTeXN0ZW1JbmZvLmgiCiAjaW5jbHVkZSAiVXNlckFnZW50U3R5bGVTaGVldHMu
aCIKICNpbmNsdWRlICJXZWJDb3JlQnVuZGxlV2luLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0
ZW0uaD4KICNpbmNsdWRlIDx3dGYvU29mdExpbmtpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFz
Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1Jl
Z2lzdHJhdGlvbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwCmluZGV4IDYwZWViOGNjMmMwZjQxMmNhMmJj
ZWQ5ODJhZTkyN2ZmYjFkNmE0NjguLjFhZjQzNzg4ZmZmYmFhYTkxMmUxYWQ5N2JiZDk4YjE3MmRl
M2YwZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
UmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAK
ICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAj
aW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlJlZ2lzdHJhdGlvblN0b3JlLmgiCiAjaW5j
bHVkZSAiU1FMaXRlRGF0YWJhc2UuaCIKQEAgLTM5LDYgKzM4LDcgQEAKICNpbmNsdWRlICJTZWN1
cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1
ZGUgPHd0Zi9Dcm9zc1RocmVhZENvcGllci5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+
CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KICNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVu
dFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5jcHAKaW5kZXggYzIxMGVjYWM4
YTQ3NDZlNDE0MGQ0MDY0MmUwYzM3MGEwZTVhN2VkMC4uMTA1ZGQwMjg4NjA3NTA3MDk3N2NhZTg3
ZDJjNGE0ZjQwYmJmZWZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5jcHAKQEAgLTMzLDkgKzMzLDkgQEAKICNpbmNs
dWRlICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaCIKICNpbmNsdWRlICJXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVNb25p
dG9yLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9LZXllZENvZGluZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CisjaW5j
bHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1
ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuaAppbmRleCA3NWQzMWE2MWE0Zjc0MmYzODdmOWI1ZWEy
ZDRmNjAyOTQzNjEyODdjLi5lYjc5NDQ3MjU5NWI1NmVkZDYyMGJlMjU3NmVkMjE4MTgwNWQwZDg1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFz
a0Jsb2IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFz
a0Jsb2IuaApAQCAtMzMsNyArMzMsNyBAQAogCiAjaW5jbHVkZSAiTmV0d29ya0RhdGFUYXNrLmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3RyZWFtQ2xpZW50Lmg+Ci0jaW5jbHVkZSA8V2ViQ29y
ZS9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgQXN5bmNGaWxlU3RyZWFtOwpAQCAtMTEzLDcgKzExMyw3IEBAIHBy
aXZhdGU6CiAgICAgdW5zaWduZWQgbV9zaXplSXRlbUNvdW50IHsgMCB9OwogICAgIHVuc2lnbmVk
IG1fcmVhZEl0ZW1Db3VudCB7IDAgfTsKICAgICBib29sIG1fZmlsZU9wZW5lZCB7IGZhbHNlIH07
Ci0gICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIG1fZG93bmxvYWRG
aWxlIHsgV2ViQ29yZTo6RmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSB9Owor
ICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBtX2Rvd25sb2FkRmlsZSB7IEZpbGVT
eXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUgfTsKIAogICAgIFZlY3RvcjxSZWZQdHI8
V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4gbV9maWxlUmVmZXJlbmNlczsKICAgICBS
ZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gbV9zYW5kYm94RXh0ZW5zaW9uOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCAyYTk4YjMwNGEx
M2M2YzY5YzRhNDA3NWZjZTA1ODExZTExNzZmYTFlLi5hMTI5YjI2MWU1NDI0Y2Q4NDVlNTliYTFh
ZDllYmQ5MThkZDgzOWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcApAQCAtMTUyMCw3ICsxNTIwLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
czo6c2V0Q2FjaGVNb2RlbChDYWNoZU1vZGVsIGNhY2hlTW9kZWwpCiAgICAgdW5zaWduZWQgdXJs
Q2FjaGVNZW1vcnlDYXBhY2l0eSA9IDA7CiAgICAgdWludDY0X3QgdXJsQ2FjaGVEaXNrQ2FwYWNp
dHkgPSAwOwogICAgIHVpbnQ2NF90IGRpc2tGcmVlU2l6ZSA9IDA7Ci0gICAgaWYgKFdlYkNvcmU6
OkZpbGVTeXN0ZW06OmdldFZvbHVtZUZyZWVTcGFjZShtX2Rpc2tDYWNoZURpcmVjdG9yeSwgZGlz
a0ZyZWVTaXplKSkgeworICAgIGlmIChGaWxlU3lzdGVtOjpnZXRWb2x1bWVGcmVlU3BhY2UobV9k
aXNrQ2FjaGVEaXJlY3RvcnksIGRpc2tGcmVlU2l6ZSkpIHsKICAgICAgICAgLy8gQXMgYSBmdWRn
ZSBmYWN0b3IsIHVzZSAxMDAwIGluc3RlYWQgb2YgMTAyNCwgaW4gY2FzZSB0aGUgcmVwb3J0ZWQg
Ynl0ZQogICAgICAgICAvLyBjb3VudCBkb2Vzbid0IGFsaWduIGV4YWN0bHkgdG8gYSBtZWdhYnl0
ZSBib3VuZGFyeS4KICAgICAgICAgZGlza0ZyZWVTaXplIC89IEtCICogMTAwMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5l
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5n
aW5lLmNwcAppbmRleCBmMTdmZDlmOTJiZTVkMmE1MDU0NWMwNzk5ZTM3ZDlhZTBjZjNlZmJkLi4x
ZTNlMTFiMTk4YzM1MjcyMGEwM2Y1NzlkMjk5NDdmOWJlZWZkYjVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUu
Y3BwCkBAIC01Miw3ICs1Miw3IEBAIFN0cmluZyBFbmdpbmU6OmNhY2hlc1Jvb3RQYXRoKGNvbnN0
IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luKQogICAgICAgICByZXR1cm4geyB9OwogCiAg
ICAgS2V5IGtleShvcmlnaW4udG9wT3JpZ2luLnRvU3RyaW5nKCksIG9yaWdpbi5jbGllbnRPcmln
aW4udG9TdHJpbmcoKSwgeyB9LCB7IH0sIHNhbHQoKSk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyb290UGF0aCgpLCBrZXkuaGFzaEFz
U3RyaW5nKCkpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQocm9vdFBhdGgoKSwga2V5Lmhhc2hBc1N0cmluZygpKTsKIH0KIAogRW5naW5lOjp+RW5naW5l
KCkKQEAgLTI5MSw5ICsyOTEsOSBAQCB2b2lkIEVuZ2luZTo6aW5pdGlhbGl6ZShDb21wbGV0aW9u
Q2FsbGJhY2smJiBjYWxsYmFjaykKICAgICBpZiAoIXNob3VsZENvbXB1dGVTYWx0KQogICAgICAg
ICByZXR1cm47CiAKLSAgICBTdHJpbmcgc2FsdFBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9yb290UGF0aCwgInNhbHQiX3MpOworICAgIFN0cmlu
ZyBzYWx0UGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3Jvb3RQ
YXRoLCAic2FsdCJfcyk7CiAgICAgbV9pb1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgd2Vha1RoaXMg
PSBtYWtlV2Vha1B0cih0aGlzKSwgc2FsdFBhdGggPSBXVEZNb3ZlKHNhbHRQYXRoKV0gKCkgbXV0
YWJsZSB7Ci0gICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3Rvcmllcyht
X3Jvb3RQYXRoKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKG1fcm9v
dFBhdGgpOwogICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHdlYWtUaGlz
ID0gV1RGTW92ZSh3ZWFrVGhpcyksIHNhbHQgPSByZWFkT3JNYWtlU2FsdChzYWx0UGF0aCldKCkg
bXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHJl
dHVybjsKQEAgLTM4Myw5ICszODMsOSBAQCB2b2lkIEVuZ2luZTo6d3JpdGVGaWxlKGNvbnN0IFN0
cmluZyYgZmlsZW5hbWUsIE5ldHdvcmtDYWNoZTo6RGF0YSYmIGRhdGEsIFdlYkNvcgogICAgIG1f
cGVuZGluZ1dyaXRlQ2FsbGJhY2tzLmFkZCgrK21fcGVuZGluZ0NhbGxiYWNrc0NvdW50ZXIsIFdU
Rk1vdmUoY2FsbGJhY2spKTsKICAgICBtX2lvUXVldWUtPmRpc3BhdGNoKFt0aGlzLCB3ZWFrVGhp
cyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBpZGVudGlmaWVyID0gbV9wZW5kaW5nQ2FsbGJhY2tzQ291
bnRlciwgZGF0YSA9IFdURk1vdmUoZGF0YSksIGZpbGVuYW1lID0gZmlsZW5hbWUuaXNvbGF0ZWRD
b3B5KCldKCkgbXV0YWJsZSB7CiAKLSAgICAgICAgU3RyaW5nIGRpcmVjdG9yeVBhdGggPSBXZWJD
b3JlOjpGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKGZpbGVuYW1lKTsKLSAgICAgICAgaWYgKCFX
ZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGRpcmVjdG9yeVBhdGgpKQotICAgICAgICAg
ICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKGRpcmVjdG9yeVBhdGgp
OworICAgICAgICBTdHJpbmcgZGlyZWN0b3J5UGF0aCA9IEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5h
bWUoZmlsZW5hbWUpOworICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZGlyZWN0
b3J5UGF0aCkpCisgICAgICAgICAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoZGly
ZWN0b3J5UGF0aCk7CiAKICAgICAgICAgYXV0byBjaGFubmVsID0gSU9DaGFubmVsOjpvcGVuKGZp
bGVuYW1lLCBJT0NoYW5uZWw6OlR5cGU6OkNyZWF0ZSk7CiAgICAgICAgIGNoYW5uZWwtPndyaXRl
KDAsIGRhdGEsIG51bGxwdHIsIFt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBp
ZGVudGlmaWVyXShpbnQgZXJyb3IpIG11dGFibGUgewpAQCAtNDQ1LDcgKzQ0NSw3IEBAIHZvaWQg
RW5naW5lOjpyZW1vdmVGaWxlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIG1faW9RdWV1ZS0+ZGlzcGF0Y2goW2ZpbGVuYW1lID0gZmlsZW5hbWUuaXNvbGF0
ZWRDb3B5KCldKCkgbXV0YWJsZSB7Ci0gICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0
ZUZpbGUoZmlsZW5hbWUpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGZpbGVuYW1l
KTsKICAgICB9KTsKIH0KIApAQCAtNDg3LDggKzQ4Nyw4IEBAIHZvaWQgRW5naW5lOjpmZXRjaEVu
dHJpZXMoYm9vbCBzaG91bGRDb21wdXRlU2l6ZSwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFZlCiAgICAgfQogCiAgICAgYXV0byB0YXNrQ291bnRlciA9IFJlYWRPcmlnaW5zVGFza0NvdW50
ZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgZm9yIChhdXRvJiBm
b2xkZXJQYXRoIDogV2ViQ29yZTo6RmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShtX3Jvb3RQYXRo
LCAiKiIpKSB7Ci0gICAgICAgIGlmICghV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZUlzRGlyZWN0
b3J5KGZvbGRlclBhdGgsIFdlYkNvcmU6OkZpbGVTeXN0ZW06OlNob3VsZEZvbGxvd1N5bWJvbGlj
TGlua3M6Ok5vKSkKKyAgICBmb3IgKGF1dG8mIGZvbGRlclBhdGggOiBGaWxlU3lzdGVtOjpsaXN0
RGlyZWN0b3J5KG1fcm9vdFBhdGgsICIqIikpIHsKKyAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjpm
aWxlSXNEaXJlY3RvcnkoZm9sZGVyUGF0aCwgRmlsZVN5c3RlbTo6U2hvdWxkRm9sbG93U3ltYm9s
aWNMaW5rczo6Tm8pKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIENhY2hlczo6cmV0
cmlldmVPcmlnaW5Gcm9tRGlyZWN0b3J5KGZvbGRlclBhdGgsICptX2lvUXVldWUsIFtwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHNob3VsZENvbXB1dGVTaXplLCB0YXNrQ291bnRlciA9
IHRhc2tDb3VudGVyLmNvcHlSZWYoKV0gKGF1dG8mJiBvcmlnaW4pIG11dGFibGUgewogICAgICAg
ICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKQEAgLTUzMSw4ICs1MzEsOCBAQCB2b2lk
IEVuZ2luZTo6Y2xlYXJBbGxDYWNoZXNGcm9tRGlzayhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZQogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKICAg
ICBtX2lvUXVldWUtPmRpc3BhdGNoKFtwYXRoID0gbV9yb290UGF0aC5pc29sYXRlZENvcHkoKSwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxl
IHsKLSAgICAgICAgZm9yIChhdXRvJiBmaWxlbmFtZSA6IFdlYkNvcmU6OkZpbGVTeXN0ZW06Omxp
c3REaXJlY3RvcnkocGF0aCwgIioiKSkgewotICAgICAgICAgICAgaWYgKFdlYkNvcmU6OkZpbGVT
eXN0ZW06OmZpbGVJc0RpcmVjdG9yeShmaWxlbmFtZSwgV2ViQ29yZTo6RmlsZVN5c3RlbTo6U2hv
dWxkRm9sbG93U3ltYm9saWNMaW5rczo6Tm8pKQorICAgICAgICBmb3IgKGF1dG8mIGZpbGVuYW1l
IDogRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShwYXRoLCAiKiIpKSB7CisgICAgICAgICAgICBp
ZiAoRmlsZVN5c3RlbTo6ZmlsZUlzRGlyZWN0b3J5KGZpbGVuYW1lLCBGaWxlU3lzdGVtOjpTaG91
bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpObykpCiAgICAgICAgICAgICAgICAgZGVsZXRlRGlyZWN0
b3J5UmVjdXJzaXZlbHkoZmlsZW5hbWUpOwogICAgICAgICB9CiAgICAgICAgIFJ1bkxvb3A6Om1h
aW4oKS5kaXNwYXRjaChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CkBAIC01NjIsOCArNTYy
LDggQEAgdm9pZCBFbmdpbmU6OmNsZWFyQ2FjaGVzRm9yT3JpZ2luRnJvbURpc2soY29uc3QgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBvcmkKIAogICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdh
dG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwogCi0gICAgZm9yIChhdXRvJiBmb2xkZXJQYXRoIDogV2ViQ29yZTo6RmlsZVN5c3RlbTo6
bGlzdERpcmVjdG9yeShtX3Jvb3RQYXRoLCAiKiIpKSB7Ci0gICAgICAgIGlmICghV2ViQ29yZTo6
RmlsZVN5c3RlbTo6ZmlsZUlzRGlyZWN0b3J5KGZvbGRlclBhdGgsIFdlYkNvcmU6OkZpbGVTeXN0
ZW06OlNob3VsZEZvbGxvd1N5bWJvbGljTGlua3M6Ok5vKSkKKyAgICBmb3IgKGF1dG8mIGZvbGRl
clBhdGggOiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KG1fcm9vdFBhdGgsICIqIikpIHsKKyAg
ICAgICAgaWYgKCFGaWxlU3lzdGVtOjpmaWxlSXNEaXJlY3RvcnkoZm9sZGVyUGF0aCwgRmlsZVN5
c3RlbTo6U2hvdWxkRm9sbG93U3ltYm9saWNMaW5rczo6Tm8pKQogICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIENhY2hlczo6cmV0cmlldmVPcmlnaW5Gcm9tRGlyZWN0b3J5KGZvbGRlclBh
dGgsICptX2lvUXVldWUsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG9y
aWdpbiwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKSwg
Zm9sZGVyUGF0aF0gKE9wdGlvbmFsPFdlYkNvcmU6OkNsaWVudE9yaWdpbj4mJiBmb2xkZXJPcmln
aW4pIG11dGFibGUgewogICAgICAgICAgICAgaWYgKCFmb2xkZXJPcmlnaW4pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNh
Y2hlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFn
ZUVuZ2luZUNhY2hlcy5jcHAKaW5kZXggMTkxMzQ3MGNkZDIyMGNlM2JlOTc1ZGY5OTAwZWYzNTBk
MDcxNzYzYy4uMWY2MDhjZjUyNWY5OTZiMjRlYTQxMTM2MDBlOGUyOWNiMjg3YzI3YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdp
bmVDYWNoZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2Fj
aGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcApAQCAtNDIsMTIgKzQyLDEyIEBAIHVzaW5nIG5hbWVz
cGFjZSBOZXR3b3JrQ2FjaGU7CiAKIHN0YXRpYyBpbmxpbmUgU3RyaW5nIGNhY2hlc0xpc3RGaWxl
bmFtZShjb25zdCBTdHJpbmcmIGNhY2hlc1Jvb3RQYXRoKQogewotICAgIHJldHVybiBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY2FjaGVzUm9vdFBhdGgsICJj
YWNoZXNsaXN0Il9zKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KGNhY2hlc1Jvb3RQYXRoLCAiY2FjaGVzbGlzdCJfcyk7CiB9CiAKIHN0YXRpYyBpbmxp
bmUgU3RyaW5nIGNhY2hlc09yaWdpbkZpbGVuYW1lKGNvbnN0IFN0cmluZyYgY2FjaGVzUm9vdFBh
dGgpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChjYWNoZXNSb290UGF0aCwgIm9yaWdpbiJfcyk7CisgICAgcmV0dXJuIEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChjYWNoZXNSb290UGF0aCwgIm9yaWdpbiJfcyk7
CiB9CiAKIENhY2hlczo6fkNhY2hlcygpCkBAIC01OCw3ICs1OCw3IEBAIENhY2hlczo6fkNhY2hl
cygpCiB2b2lkIENhY2hlczo6cmV0cmlldmVPcmlnaW5Gcm9tRGlyZWN0b3J5KGNvbnN0IFN0cmlu
ZyYgZm9sZGVyUGF0aCwgV29ya1F1ZXVlJiBxdWV1ZSwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKE9wdGlvbmFsPFdlYkNvcmU6OkNsaWVudE9yaWdpbj4mJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgcXVldWUuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlciksIGZpbGVuYW1lID0gY2FjaGVzT3JpZ2luRmlsZW5hbWUoZm9sZGVy
UGF0aCldKCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmICghV2ViQ29yZTo6RmlsZVN5c3RlbTo6Zmls
ZUV4aXN0cyhmaWxlbmFtZSkpIHsKKyAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjpmaWxlRXhpc3Rz
KGZpbGVuYW1lKSkgewogICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewog
ICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCk7CiAgICAgICAg
ICAgICB9KTsKQEAgLTQwOCw3ICs0MDgsNyBAQCB2b2lkIENhY2hlczo6cmVhZENhY2hlc0Zyb21E
aXNrKFdURjo6RnVuY3Rpb248dm9pZChFeHBlY3RlZDxWZWN0b3I8Q2FjaGU+LCBFcnJvcgogICAg
IH0KIAogICAgIGF1dG8gZmlsZW5hbWUgPSBjYWNoZXNMaXN0RmlsZW5hbWUobV9yb290UGF0aCk7
Ci0gICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGZpbGVuYW1lKSkgewor
ICAgIGlmICghRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhmaWxlbmFtZSkpIHsKICAgICAgICAgY2Fs
bGJhY2soVmVjdG9yPENhY2hlPiB7IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCmlu
ZGV4IDlkYjdkNzY4YzYzY2Y4YjRmNWJiNzNlYmZjNjA4NDhjOGM1ODE5NjkuLjEyNDBmYjQ1ZDI0
MDhmZGRiNTA1NjI1ZDBiMmFmYTM4N2MyNTRmMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKQEAgLTMxLDEzICszMSwxMyBA
QAogI2luY2x1ZGUgIk5ldHdvcmtDYWNoZVN0YXRpc3RpY3MuaCIKICNpbmNsdWRlICJOZXR3b3Jr
Q2FjaGVTdG9yYWdlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DYWNoZVZhbGlkYXRpb24uaD4KLSNp
bmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUVFBIZWFk
ZXJOYW1lcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTG93UG93ZXJNb2RlTm90aWZpZXIuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNl
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KKyNpbmNsdWRlIDx3dGYvRmls
ZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL05l
dmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KQEAgLTUwLDcgKzUwLDcg
QEAKIG5hbWVzcGFjZSBXZWJLaXQgewogbmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7CiAKLXVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOjpGaWxlU3lzdGVtOwordXNpbmcgbmFtZXNwYWNlIFdURjo6Rmls
ZVN5c3RlbTsKIAogc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgcmVzb3VyY2VUeXBlKCkKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlQmxvYlN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVCbG9iU3RvcmFnZS5jcHAKaW5kZXggZjczYzUwZGExOTQ3OTMzNjVkNmY1MWUw
NjE0MWI1MjM3MjdlNzFlZS4uOTUzOGRhNjQxYjQyNzQwMDJiMjc5YWRhYTg3YzE1NDJkMzZhMDI3
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVCbG9iU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVCbG9iU3RvcmFnZS5jcHAKQEAgLTI4LDggKzI4LDggQEAKIAogI2lu
Y2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmgiCi0j
aW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNs
dWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVk
ZSA8d3RmL1NIQTEuaD4KIApAQCAtNTcsMTUgKzU3LDE1IEBAIHZvaWQgQmxvYlN0b3JhZ2U6OnN5
bmNocm9uaXplKCkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIFdl
YkNvcmU6OkZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhibG9iRGlyZWN0b3J5UGF0aCgp
KTsKKyAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoYmxvYkRpcmVjdG9yeVBhdGgo
KSk7CiAKICAgICBtX2FwcHJveGltYXRlU2l6ZSA9IDA7CiAgICAgYXV0byBibG9iRGlyZWN0b3J5
ID0gYmxvYkRpcmVjdG9yeVBhdGgoKTsKICAgICB0cmF2ZXJzZURpcmVjdG9yeShibG9iRGlyZWN0
b3J5LCBbdGhpcywgJmJsb2JEaXJlY3RvcnldKGNvbnN0IFN0cmluZyYgbmFtZSwgRGlyZWN0b3J5
RW50cnlUeXBlIHR5cGUpIHsKICAgICAgICAgaWYgKHR5cGUgIT0gRGlyZWN0b3J5RW50cnlUeXBl
OjpGaWxlKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBhdXRvIHBhdGggPSBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoYmxvYkRpcmVjdG9yeSwgbmFt
ZSk7Ci0gICAgICAgIGF1dG8gZmlsZVBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisgICAgICAgIGF1dG8gcGF0aCA9IEZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChibG9iRGlyZWN0b3J5LCBuYW1lKTsKKyAgICAgICAg
YXV0byBmaWxlUGF0aCA9IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRo
KTsKICAgICAgICAgc3RydWN0IHN0YXQgc3RhdDsKICAgICAgICAgOjpzdGF0KGZpbGVQYXRoLmRh
dGEoKSwgJnN0YXQpOwogICAgICAgICAvLyBObyBjbGllbnRzIGxlZnQgZm9yIHRoaXMgYmxvYi4K
QEAgLTgxLDcgKzgxLDcgQEAgdm9pZCBCbG9iU3RvcmFnZTo6c3luY2hyb25pemUoKQogU3RyaW5n
IEJsb2JTdG9yYWdlOjpibG9iUGF0aEZvckhhc2goY29uc3QgU0hBMTo6RGlnZXN0JiBoYXNoKSBj
b25zdAogewogICAgIGF1dG8gaGFzaEFzU3RyaW5nID0gU0hBMTo6aGV4RGlnZXN0KGhhc2gpOwot
ICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
YmxvYkRpcmVjdG9yeVBhdGgoKSwgU3RyaW5nOjpmcm9tVVRGOChoYXNoQXNTdHJpbmcpKTsKKyAg
ICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGJsb2JEaXJlY3Rv
cnlQYXRoKCksIFN0cmluZzo6ZnJvbVVURjgoaGFzaEFzU3RyaW5nKSk7CiB9CiAKIEJsb2JTdG9y
YWdlOjpCbG9iIEJsb2JTdG9yYWdlOjphZGQoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBEYXRh
JiBkYXRhKQpAQCAtOTMsOCArOTMsOCBAQCBCbG9iU3RvcmFnZTo6QmxvYiBCbG9iU3RvcmFnZTo6
YWRkKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgRGF0YSYgZGF0YSkKICAgICBpZiAoZGF0YS5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB7IGRhdGEsIGhhc2ggfTsKIAotICAgIGF1dG8gYmxv
YlBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oYmxv
YlBhdGhGb3JIYXNoKGhhc2gpKTsKLSAgICBhdXRvIGxpbmtQYXRoID0gV2ViQ29yZTo6RmlsZVN5
c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGF1dG8gYmxvYlBhdGgg
PSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oYmxvYlBhdGhGb3JIYXNoKGhh
c2gpKTsKKyAgICBhdXRvIGxpbmtQYXRoID0gRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKHBhdGgpOwogICAgIHVubGluayhsaW5rUGF0aC5kYXRhKCkpOwogCiAgICAgYm9vbCBi
bG9iRXhpc3RzID0gYWNjZXNzKGJsb2JQYXRoLmRhdGEoKSwgRl9PSykgIT0gLTE7CkBAIC0xMjcs
NyArMTI3LDcgQEAgQmxvYlN0b3JhZ2U6OkJsb2IgQmxvYlN0b3JhZ2U6OmdldChjb25zdCBTdHJp
bmcmIHBhdGgpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBhdXRv
IGxpbmtQYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KHBhdGgpOworICAgIGF1dG8gbGlua1BhdGggPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24ocGF0aCk7CiAgICAgYXV0byBkYXRhID0gbWFwRmlsZShsaW5rUGF0aC5kYXRhKCkp
OwogCiAgICAgcmV0dXJuIHsgZGF0YSwgY29tcHV0ZVNIQTEoZGF0YSwgbV9zYWx0KSB9OwpAQCAt
MTM3LDcgKzEzNyw3IEBAIHZvaWQgQmxvYlN0b3JhZ2U6OnJlbW92ZShjb25zdCBTdHJpbmcmIHBh
dGgpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBhdXRvIGxpbmtQ
YXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgp
OworICAgIGF1dG8gbGlua1BhdGggPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24ocGF0aCk7CiAgICAgdW5saW5rKGxpbmtQYXRoLmRhdGEoKSk7CiB9CiAKQEAgLTE0NSw3ICsx
NDUsNyBAQCB1bnNpZ25lZCBCbG9iU3RvcmFnZTo6c2hhcmVDb3VudChjb25zdCBTdHJpbmcmIHBh
dGgpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBhdXRvIGxpbmtQ
YXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgp
OworICAgIGF1dG8gbGlua1BhdGggPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24ocGF0aCk7CiAgICAgc3RydWN0IHN0YXQgc3RhdDsKICAgICBpZiAoOjpzdGF0KGxpbmtQYXRo
LmRhdGEoKSwgJnN0YXQpIDwgMCkKICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcAppbmRl
eCA5ZTMxODk0M2Q3YzYxMzhjYWExYzFkYzMwZjNhMmYzNWYzMzAyOWYyLi4xYTMyYWE5YTBlNTNi
NDY5NTdhYThlYjNiYjIzODU2ZjBhODk5ZjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5jcHAKQEAgLTI2LDkgKzI2
LDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJOZXR3b3JrQ2FjaGVEYXRhLmgi
CiAKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxmY250bC5oPgog
I2luY2x1ZGUgPHd0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5oPgorI2luY2x1ZGUg
PHd0Zi9GaWxlU3lzdGVtLmg+CiAKICNpZiAhT1MoV0lORE9XUykKICNpbmNsdWRlIDxzeXMvbW1h
bi5oPgpAQCAtMTU2LDcgKzE1Niw3IEBAIHN0YXRpYyBTYWx0IG1ha2VTYWx0KCkKIE9wdGlvbmFs
PFNhbHQ+IHJlYWRPck1ha2VTYWx0KGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICNpZiAhT1MoV0lO
RE9XUykKLSAgICBhdXRvIGNwYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKHBhdGgpOworICAgIGF1dG8gY3BhdGggPSBGaWxlU3lzdGVtOjpmaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAgICAgYXV0byBmZCA9IG9wZW4oY3BhdGguZGF0YSgp
LCBPX1JET05MWSwgMCk7CiAgICAgU2FsdCBzYWx0OwogICAgIGF1dG8gYnl0ZXNSZWFkID0gcmVh
ZChmZCwgc2FsdC5kYXRhKCksIHNhbHQuc2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uY3Bw
CmluZGV4IDI1YmVmN2Y5MmU4ZWIzNjZhOTRmNGJjZDM3OTgzYjE2YTlkZTM1MDguLmIwYjJlNzE1
ZTY1ZGQzYTkxM2NmNzBkNzAzNjVhNDUwYmJlYjk5NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVt
LmNwcApAQCAtMjcsOCArMjcsOCBAQAogI2luY2x1ZGUgIk5ldHdvcmtDYWNoZUZpbGVTeXN0ZW0u
aCIKIAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0u
aD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVt
Lmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgogCkBAIC03MCw3ICs3MCw3IEBAIHN0YXRpYyBEaXJlY3RvcnlFbnRyeVR5cGUgZGlyZWN0
b3J5RW50cnlUeXBlKHVpbnQ4X3QgZHR5cGUpCiB2b2lkIHRyYXZlcnNlRGlyZWN0b3J5KGNvbnN0
IFN0cmluZyYgcGF0aCwgY29uc3QgRnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgRGlyZWN0
b3J5RW50cnlUeXBlKT4mIGZ1bmN0aW9uKQogewogI2lmICFPUyhXSU5ET1dTKQotICAgIERJUiog
ZGlyID0gb3BlbmRpcihXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24ocGF0aCkuZGF0YSgpKTsKKyAgICBESVIqIGRpciA9IG9wZW5kaXIoRmlsZVN5c3RlbTo6Zmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSk7CiAgICAgaWYgKCFkaXIpCiAgICAg
ICAgIHJldHVybjsKICAgICBkaXJlbnQqIGRwOwpAQCAtOTQsMTAgKzk0LDEwIEBAIHZvaWQgdHJh
dmVyc2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBGdW5jdGlvbjx2b2lkIChj
b25zdCBTdHJpbmcmLCBECiB2b2lkIGRlbGV0ZURpcmVjdG9yeVJlY3Vyc2l2ZWx5KGNvbnN0IFN0
cmluZyYgcGF0aCkKIHsKICAgICB0cmF2ZXJzZURpcmVjdG9yeShwYXRoLCBbJnBhdGhdKGNvbnN0
IFN0cmluZyYgbmFtZSwgRGlyZWN0b3J5RW50cnlUeXBlIHR5cGUpIHsKLSAgICAgICAgU3RyaW5n
IGVudHJ5UGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChwYXRoLCBuYW1lKTsKKyAgICAgICAgU3RyaW5nIGVudHJ5UGF0aCA9IEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXRoLCBuYW1lKTsKICAgICAgICAgc3dpdGNoICh0eXBl
KSB7CiAgICAgICAgIGNhc2UgRGlyZWN0b3J5RW50cnlUeXBlOjpGaWxlOgotICAgICAgICAgICAg
V2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShlbnRyeVBhdGgpOworICAgICAgICAgICAg
RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShlbnRyeVBhdGgpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgRGlyZWN0b3J5RW50cnlUeXBlOjpEaXJlY3Rvcnk6CiAgICAgICAgICAgICBk
ZWxldGVEaXJlY3RvcnlSZWN1cnNpdmVseShlbnRyeVBhdGgpOwpAQCAtMTA1LDE5ICsxMDUsMTkg
QEAgdm9pZCBkZWxldGVEaXJlY3RvcnlSZWN1cnNpdmVseShjb25zdCBTdHJpbmcmIHBhdGgpCiAg
ICAgICAgIC8vIFRoaXMgZG9lc24ndCBmb2xsb3cgc3ltbGlua3MuCiAgICAgICAgIH0KICAgICB9
KTsKLSAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShwYXRoKTsK
KyAgICBGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShwYXRoKTsKIH0KIAogRmlsZVRp
bWVzIGZpbGVUaW1lcyhjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAjaWYgSEFWRShTVEFUX0JJUlRI
VElNRSkKICAgICBzdHJ1Y3Qgc3RhdCBmaWxlSW5mbzsKLSAgICBpZiAoc3RhdChXZWJDb3JlOjpG
aWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpLCAmZmlsZUlu
Zm8pKQorICAgIGlmIChzdGF0KEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihw
YXRoKS5kYXRhKCksICZmaWxlSW5mbykpCiAgICAgICAgIHJldHVybiB7IH07CiAgICAgcmV0dXJu
IHsgV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKGZpbGVJbmZvLnN0X2JpcnRodGltZSksIFdhbGxU
aW1lOjpmcm9tUmF3U2Vjb25kcyhmaWxlSW5mby5zdF9tdGltZSkgfTsKICNlbGlmIFVTRShTT1VQ
KQogICAgIC8vIFRoZXJlJ3Mgbm8gc3RfYmlydGh0aW1lIGluIHNvbWUgb3BlcmF0aW5nIHN5c3Rl
bXMgbGlrZSBMaW51eCwgc28gd2UgdXNlIHhhdHRycyB0byBzZXQvZ2V0IHRoZSBjcmVhdGlvbiB0
aW1lLgotICAgIEdSZWZQdHI8R0ZpbGU+IGZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3Jf
cGF0aChXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCku
ZGF0YSgpKSk7CisgICAgR1JlZlB0cjxHRmlsZT4gZmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3
X2Zvcl9wYXRoKEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRh
KCkpKTsKICAgICBHUmVmUHRyPEdGaWxlSW5mbz4gZmlsZUluZm8gPSBhZG9wdEdSZWYoZ19maWxl
X3F1ZXJ5X2luZm8oZmlsZS5nZXQoKSwgInhhdHRyOjpiaXJ0aHRpbWUsdGltZTo6bW9kaWZpZWQi
LCBHX0ZJTEVfUVVFUllfSU5GT19OT05FLCBudWxscHRyLCBudWxscHRyKSk7CiAgICAgaWYgKCFm
aWxlSW5mbykKICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lkIHVw
ZGF0ZUZpbGVNb2RpZmljYXRpb25UaW1lSWZOZWVkZWQoY29uc3QgU3RyaW5nJiBwYXRoKQogICAg
IH0KICNpZiAhT1MoV0lORE9XUykKICAgICAvLyBUaGlzIHJlYWxseSB1cGRhdGVzIGJvdGggdGhl
IGFjY2VzcyB0aW1lIGFuZCB0aGUgbW9kaWZpY2F0aW9uIHRpbWUuCi0gICAgdXRpbWVzKFdlYkNv
cmU6OkZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCksIG51
bGxwdHIpOworICAgIHV0aW1lcyhGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
cGF0aCkuZGF0YSgpLCBudWxscHRyKTsKICNlbmRpZgogfQogCkBAIC0xNTYsNyArMTU2LDcgQEAg
Ym9vbCBpc1NhZmVUb1VzZU1lbW9yeU1hcEZvclBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKQogICAg
IGF0dHJsaXN0IGF0dHJMaXN0ID0geyB9OwogICAgIGF0dHJMaXN0LmJpdG1hcGNvdW50ID0gQVRU
Ul9CSVRfTUFQX0NPVU5UOwogICAgIGF0dHJMaXN0LmNvbW1vbmF0dHIgPSBBVFRSX0NNTl9EQVRB
X1BST1RFQ1RfRkxBR1M7Ci0gICAgaW50MzJfdCBlcnJvciA9IGdldGF0dHJsaXN0KFdlYkNvcmU6
OkZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCksICZhdHRy
TGlzdCwgJmF0dHJCdWZmZXIsIHNpemVvZihhdHRyQnVmZmVyKSwgRlNPUFRfTk9GT0xMT1cpOwor
ICAgIGludDMyX3QgZXJyb3IgPSBnZXRhdHRybGlzdChGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24ocGF0aCkuZGF0YSgpLCAmYXR0ckxpc3QsICZhdHRyQnVmZmVyLCBzaXplb2Yo
YXR0ckJ1ZmZlciksIEZTT1BUX05PRk9MTE9XKTsKICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIlVuYWJsZSB0byBnZXQgY2FjaGUgZGlyZWN0b3J5
IHByb3RlY3Rpb24gY2xhc3MsIGRpc2FibGluZyB1c2Ugb2Ygc2hhcmVkIG1hcHBlZCBtZW1vcnki
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uaAppbmRleCA3ZGNj
ZTZjNGMzNjcyOGU5MzE1ODMzYTUzMjliZDU2ZDVjNDEyYjhhLi4xODMxYTM1MWM5YjBmZjUwNWRm
OWFkYzdmN2MwM2FmNzAxZDZjODgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uaApAQCAtMjUsNyAr
MjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5o
PgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogbmFt
ZXNwYWNlIE5ldHdvcmtDYWNoZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbENvY29hLm1tIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxDb2NvYS5tbQppbmRl
eCAzNjliY2Y5NzNmMmRjZWUwYTNkNDM5NjM0NTM3MGI2NDYyMWU5ZjA4Li5jNjUyMTY0Y2ExODhh
MDdkYTU3YmNkZTc1ZjNhMjI1MmUxODJmMDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbENvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsQ29j
b2EubW0KQEAgLTQxLDcgKzQxLDcgQEAgSU9DaGFubmVsOjpJT0NoYW5uZWwoY29uc3QgU3RyaW5n
JiBmaWxlUGF0aCwgVHlwZSB0eXBlKQogICAgIDogbV9wYXRoKGZpbGVQYXRoKQogICAgICwgbV90
eXBlKHR5cGUpCiB7Ci0gICAgYXV0byBwYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVQYXRoKTsKKyAgICBhdXRvIHBhdGggPSBGaWxlU3lzdGVt
OjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZVBhdGgpOwogICAgIGludCBvZmxhZzsKICAg
ICBtb2RlX3QgbW9kZTsKICAgICBib29sIHVzZUxvd0lPUHJpb3JpdHkgPSBmYWxzZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9D
aGFubmVsU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZUlPQ2hhbm5lbFNvdXAuY3BwCmluZGV4IDUzOTJjNzkwNTY5ZmQ2NjU3YTIxYTI2MjBj
YjA1MWVmYmVlZjA0NTkuLmI1NmY5NjU1MzEyY2RhZDBjMTA4ZGNjYzZlZjE3Mjk5NWFlZDFhNWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlSU9DaGFubmVsU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxTb3VwLmNwcApAQCAtNDEsNyArNDEsNyBAQCBJT0No
YW5uZWw6OklPQ2hhbm5lbChjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBUeXBlIHR5cGUpCiAgICAg
OiBtX3BhdGgoZmlsZVBhdGgpCiAgICAgLCBtX3R5cGUodHlwZSkKIHsKLSAgICBhdXRvIHBhdGgg
PSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZVBhdGgp
OworICAgIGF1dG8gcGF0aCA9IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihm
aWxlUGF0aCk7CiAgICAgR1JlZlB0cjxHRmlsZT4gZmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3
X2Zvcl9wYXRoKHBhdGguZGF0YSgpKSk7CiAgICAgc3dpdGNoIChtX3R5cGUpIHsKICAgICBjYXNl
IFR5cGU6OkNyZWF0ZTogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RhdGlzdGljcy5jcHAKaW5kZXggYjRhMTMxNGVi
NGIxNWVlMDMzMmY3NGU5MjFlMmZjODcxOTA2NGMzNy4uNjFiZWYxZTExYzNjZjgzNzVmNzM5MjVi
NzIzYjkxNmZiMzFlYjM3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0YXRpc3RpY3MuY3BwCkBAIC03Nyw3ICs3
Nyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTdGF0aXN0aWNzPiBTdGF0aXN0aWNzOjpvcGVuKENhY2hl
JiBjYWNoZSwgY29uc3QgU3RyaW5nJiBjYWNoZVBhCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6Omlz
TWFpbigpKTsKIAotICAgIFN0cmluZyBkYXRhYmFzZVBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY2FjaGVQYXRoLCBTdGF0aXN0aWNzRGF0YWJhc2VO
YW1lKTsKKyAgICBTdHJpbmcgZGF0YWJhc2VQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KGNhY2hlUGF0aCwgU3RhdGlzdGljc0RhdGFiYXNlTmFtZSk7CiAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8U3RhdGlzdGljcz4oY2FjaGUsIGRhdGFiYXNlUGF0aCk7CiB9
CiAKQEAgLTk4LDcgKzk4LDcgQEAgdm9pZCBTdGF0aXN0aWNzOjppbml0aWFsaXplKGNvbnN0IFN0
cmluZyYgZGF0YWJhc2VQYXRoKQogICAgIHNlcmlhbEJhY2tncm91bmRJT1F1ZXVlKCkuZGlzcGF0
Y2goW3RoaXMsIGRhdGFiYXNlUGF0aCA9IGRhdGFiYXNlUGF0aC5pc29sYXRlZENvcHkoKSwgbmV0
d29ya0NhY2hlUGF0aCA9IG1fY2FjaGUucmVjb3Jkc1BhdGgoKSwgc3RhcnRUaW1lXSB7CiAgICAg
ICAgIFdlYkNvcmU6OlNRTGl0ZVRyYW5zYWN0aW9uSW5Qcm9ncmVzc0F1dG9Db3VudGVyIHRyYW5z
YWN0aW9uQ291bnRlcjsKIAotICAgICAgICBpZiAoIVdlYkNvcmU6OkZpbGVTeXN0ZW06Om1ha2VB
bGxEaXJlY3RvcmllcyhXZWJDb3JlOjpGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKGRhdGFiYXNl
UGF0aCkpKQorICAgICAgICBpZiAoIUZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhGaWxl
U3lzdGVtOjpkaXJlY3RvcnlOYW1lKGRhdGFiYXNlUGF0aCkpKQogICAgICAgICAgICAgcmV0dXJu
OwogCiAgICAgICAgIExPRyhOZXR3b3JrQ2FjaGUsICIoTmV0d29ya1Byb2Nlc3MpIE9wZW5pbmcg
bmV0d29yayBjYWNoZSBzdGF0aXN0aWNzIGRhdGFiYXNlIGF0ICVzLi4uIiwgZGF0YWJhc2VQYXRo
LnV0ZjgoKS5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKaW5kZXggNGVhNzQzMGZhMjA0NGU5
MDE0YTg5OTA0ZDViYmMxZWI2NWI3OWNjNi4uYzI2YWExYjk2YzcxM2E4MDAzN2ZkMWM1Nzg2NWRi
OTcyYjY0YWVlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCkBAIC0xNDUsMjkgKzE0NSwyOSBAQCBw
dWJsaWM6CiBzdGF0aWMgU3RyaW5nIG1ha2VWZXJzaW9uZWREaXJlY3RvcnlQYXRoKGNvbnN0IFN0
cmluZyYgYmFzZURpcmVjdG9yeVBhdGgpCiB7CiAgICAgU3RyaW5nIHZlcnNpb25TdWJkaXJlY3Rv
cnkgPSB2ZXJzaW9uRGlyZWN0b3J5UHJlZml4ICsgU3RyaW5nOjpudW1iZXIoU3RvcmFnZTo6dmVy
c2lvbik7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChiYXNlRGlyZWN0b3J5UGF0aCwgdmVyc2lvblN1YmRpcmVjdG9yeSk7CisgICAgcmV0
dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChiYXNlRGlyZWN0b3J5UGF0
aCwgdmVyc2lvblN1YmRpcmVjdG9yeSk7CiB9CiAKIHN0YXRpYyBTdHJpbmcgbWFrZVJlY29yZHNE
aXJlY3RvcnlQYXRoKGNvbnN0IFN0cmluZyYgYmFzZURpcmVjdG9yeVBhdGgpCiB7Ci0gICAgcmV0
dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtYWtlVmVy
c2lvbmVkRGlyZWN0b3J5UGF0aChiYXNlRGlyZWN0b3J5UGF0aCksIHJlY29yZHNEaXJlY3RvcnlO
YW1lKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1h
a2VWZXJzaW9uZWREaXJlY3RvcnlQYXRoKGJhc2VEaXJlY3RvcnlQYXRoKSwgcmVjb3Jkc0RpcmVj
dG9yeU5hbWUpOwogfQogCiBzdGF0aWMgU3RyaW5nIG1ha2VCbG9iRGlyZWN0b3J5UGF0aChjb25z
dCBTdHJpbmcmIGJhc2VEaXJlY3RvcnlQYXRoKQogewotICAgIHJldHVybiBXZWJDb3JlOjpGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobWFrZVZlcnNpb25lZERpcmVjdG9yeVBh
dGgoYmFzZURpcmVjdG9yeVBhdGgpLCBibG9ic0RpcmVjdG9yeU5hbWUpOworICAgIHJldHVybiBG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobWFrZVZlcnNpb25lZERpcmVjdG9y
eVBhdGgoYmFzZURpcmVjdG9yeVBhdGgpLCBibG9ic0RpcmVjdG9yeU5hbWUpOwogfQogCiBzdGF0
aWMgU3RyaW5nIG1ha2VTYWx0RmlsZVBhdGgoY29uc3QgU3RyaW5nJiBiYXNlRGlyZWN0b3J5UGF0
aCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KG1ha2VWZXJzaW9uZWREaXJlY3RvcnlQYXRoKGJhc2VEaXJlY3RvcnlQYXRoKSwgc2Fs
dEZpbGVOYW1lKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KG1ha2VWZXJzaW9uZWREaXJlY3RvcnlQYXRoKGJhc2VEaXJlY3RvcnlQYXRoKSwgc2FsdEZp
bGVOYW1lKTsKIH0KIAogUmVmUHRyPFN0b3JhZ2U+IFN0b3JhZ2U6Om9wZW4oY29uc3QgU3RyaW5n
JiBjYWNoZVBhdGgsIE1vZGUgbW9kZSkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OwogCi0gICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMobWFr
ZVZlcnNpb25lZERpcmVjdG9yeVBhdGgoY2FjaGVQYXRoKSkpCisgICAgaWYgKCFGaWxlU3lzdGVt
OjptYWtlQWxsRGlyZWN0b3JpZXMobWFrZVZlcnNpb25lZERpcmVjdG9yeVBhdGgoY2FjaGVQYXRo
KSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGF1dG8gc2FsdCA9IHJlYWRPck1ha2VT
YWx0KG1ha2VTYWx0RmlsZVBhdGgoY2FjaGVQYXRoKSk7CiAgICAgaWYgKCFzYWx0KQpAQCAtMTgw
LDEzICsxODAsMTMgQEAgdm9pZCB0cmF2ZXJzZVJlY29yZHNGaWxlcyhjb25zdCBTdHJpbmcmIHJl
Y29yZHNQYXRoLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkVHlwZSwKICAgICB0cmF2ZXJzZURpcmVj
dG9yeShyZWNvcmRzUGF0aCwgWyZdKGNvbnN0IFN0cmluZyYgcGFydGl0aW9uTmFtZSwgRGlyZWN0
b3J5RW50cnlUeXBlIGVudHJ5VHlwZSkgewogICAgICAgICBpZiAoZW50cnlUeXBlICE9IERpcmVj
dG9yeUVudHJ5VHlwZTo6RGlyZWN0b3J5KQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBT
dHJpbmcgcGFydGl0aW9uUGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChyZWNvcmRzUGF0aCwgcGFydGl0aW9uTmFtZSk7CisgICAgICAgIFN0cmluZyBw
YXJ0aXRpb25QYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29y
ZHNQYXRoLCBwYXJ0aXRpb25OYW1lKTsKICAgICAgICAgdHJhdmVyc2VEaXJlY3RvcnkocGFydGl0
aW9uUGF0aCwgWyZdKGNvbnN0IFN0cmluZyYgYWN0dWFsVHlwZSwgRGlyZWN0b3J5RW50cnlUeXBl
IGVudHJ5VHlwZSkgewogICAgICAgICAgICAgaWYgKGVudHJ5VHlwZSAhPSBEaXJlY3RvcnlFbnRy
eVR5cGU6OkRpcmVjdG9yeSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBp
ZiAoIWV4cGVjdGVkVHlwZS5pc0VtcHR5KCkgJiYgZXhwZWN0ZWRUeXBlICE9IGFjdHVhbFR5cGUp
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgU3RyaW5nIHJlY29yZERpcmVj
dG9yeVBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
cGFydGl0aW9uUGF0aCwgYWN0dWFsVHlwZSk7CisgICAgICAgICAgICBTdHJpbmcgcmVjb3JkRGly
ZWN0b3J5UGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXJ0aXRp
b25QYXRoLCBhY3R1YWxUeXBlKTsKICAgICAgICAgICAgIHRyYXZlcnNlRGlyZWN0b3J5KHJlY29y
ZERpcmVjdG9yeVBhdGgsIFsmZnVuY3Rpb24sICZyZWNvcmREaXJlY3RvcnlQYXRoLCAmYWN0dWFs
VHlwZV0oY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgRGlyZWN0b3J5RW50cnlUeXBlIGVudHJ5VHlw
ZSkgewogICAgICAgICAgICAgICAgIGlmIChlbnRyeVR5cGUgIT0gRGlyZWN0b3J5RW50cnlUeXBl
OjpGaWxlIHx8IGZpbGVOYW1lLmxlbmd0aCgpIDwgS2V5OjpoYXNoU3RyaW5nTGVuZ3RoKCkpCiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTIwNiwxOCArMjA2LDE4IEBAIHN0YXRpYyB2
b2lkIGRlbGV0ZUVtcHR5UmVjb3Jkc0RpcmVjdG9yaWVzKGNvbnN0IFN0cmluZyYgcmVjb3Jkc1Bh
dGgpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgLy8gRGVsZXRlIFt0eXBlXSBzdWIt
Zm9sZGVycy4KLSAgICAgICAgU3RyaW5nIHBhcnRpdGlvblBhdGggPSBXZWJDb3JlOjpGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3Jkc1BhdGgsIHBhcnRpdGlvbk5hbWUp
OworICAgICAgICBTdHJpbmcgcGFydGl0aW9uUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChyZWNvcmRzUGF0aCwgcGFydGl0aW9uTmFtZSk7CiAgICAgICAgIHRyYXZl
cnNlRGlyZWN0b3J5KHBhcnRpdGlvblBhdGgsIFsmcGFydGl0aW9uUGF0aF0oY29uc3QgU3RyaW5n
JiBzdWJkaXJOYW1lLCBEaXJlY3RvcnlFbnRyeVR5cGUgZW50cnlUeXBlKSB7CiAgICAgICAgICAg
ICBpZiAoZW50cnlUeXBlICE9IERpcmVjdG9yeUVudHJ5VHlwZTo6RGlyZWN0b3J5KQogICAgICAg
ICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgLy8gTGV0IHN5c3RlbSBmaWd1cmUgb3V0
IGlmIGl0IGlzIHJlYWxseSBlbXB0eS4KLSAgICAgICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06
OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChwYXJ0aXRpb25QYXRoLCBzdWJkaXJOYW1lKSk7CisgICAgICAgICAgICBGaWxl
U3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQocGFydGl0aW9uUGF0aCwgc3ViZGlyTmFtZSkpOwogICAgICAgICB9KTsKIAogICAg
ICAgICAvLyBEZWxldGUgW1BhcnRpdGlvbl0gZm9sZGVycy4KICAgICAgICAgLy8gTGV0IHN5c3Rl
bSBmaWd1cmUgb3V0IGlmIGl0IGlzIHJlYWxseSBlbXB0eS4KLSAgICAgICAgV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkoV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZHNQYXRoLCBwYXJ0aXRpb25OYW1lKSk7CisgICAgICAg
IEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChyZWNvcmRzUGF0aCwgcGFydGl0aW9uTmFtZSkpOwogICAgIH0pOwogfQog
CkBAIC0zMDAsMTEgKzMwMCwxMSBAQCB2b2lkIFN0b3JhZ2U6OnN5bmNocm9uaXplKCkKIAogICAg
ICAgICBTdHJpbmcgYW55VHlwZTsKICAgICAgICAgdHJhdmVyc2VSZWNvcmRzRmlsZXMocmVjb3Jk
c1BhdGgoKSwgYW55VHlwZSwgWyZdKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmlu
ZyYgaGFzaFN0cmluZywgY29uc3QgU3RyaW5nJiB0eXBlLCBib29sIGlzQmxvYiwgY29uc3QgU3Ry
aW5nJiByZWNvcmREaXJlY3RvcnlQYXRoKSB7Ci0gICAgICAgICAgICBhdXRvIGZpbGVQYXRoID0g
V2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZERpcmVj
dG9yeVBhdGgsIGZpbGVOYW1lKTsKKyAgICAgICAgICAgIGF1dG8gZmlsZVBhdGggPSBGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3JkRGlyZWN0b3J5UGF0aCwgZmlsZU5h
bWUpOwogCiAgICAgICAgICAgICBLZXk6Okhhc2hUeXBlIGhhc2g7CiAgICAgICAgICAgICBpZiAo
IUtleTo6c3RyaW5nVG9IYXNoKGhhc2hTdHJpbmcsIGhhc2gpKSB7Ci0gICAgICAgICAgICAgICAg
V2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShmaWxlUGF0aCk7CisgICAgICAgICAgICAg
ICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShmaWxlUGF0aCk7CiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgfQogCkBAIC0zMTgsNyArMzE4LDcgQEAgdm9pZCBTdG9yYWdlOjpz
eW5jaHJvbml6ZSgpCiAKICAgICAgICAgICAgIGlmIChzaG91bGRDb21wdXRlRXhhY3RSZWNvcmRz
U2l6ZSkgewogICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBmaWxlU2l6ZSA9IDA7Ci0gICAgICAg
ICAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6Z2V0RmlsZVNpemUoZmlsZVBhdGgsIGZpbGVT
aXplKTsKKyAgICAgICAgICAgICAgICBGaWxlU3lzdGVtOjpnZXRGaWxlU2l6ZShmaWxlUGF0aCwg
ZmlsZVNpemUpOwogICAgICAgICAgICAgICAgIHJlY29yZHNTaXplICs9IGZpbGVTaXplOwogICAg
ICAgICAgICAgfQogCkBAIC0zODEsMTIgKzM4MSwxMiBAQCBib29sIFN0b3JhZ2U6Om1heUNvbnRh
aW5CbG9iKGNvbnN0IEtleSYga2V5KSBjb25zdAogU3RyaW5nIFN0b3JhZ2U6OnJlY29yZERpcmVj
dG9yeVBhdGhGb3JLZXkoY29uc3QgS2V5JiBrZXkpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFrZXku
dHlwZSgpLmlzRW1wdHkoKSk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQocmVjb3Jkc1BhdGgoKSwga2V5LnBhcnRpdGlvbkhhc2hBc1N0cmluZygpKSwga2V5
LnR5cGUoKSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3Jkc1BhdGgoKSwga2V5
LnBhcnRpdGlvbkhhc2hBc1N0cmluZygpKSwga2V5LnR5cGUoKSk7CiB9CiAKIFN0cmluZyBTdG9y
YWdlOjpyZWNvcmRQYXRoRm9yS2V5KGNvbnN0IEtleSYga2V5KSBjb25zdAogewotICAgIHJldHVy
biBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3JkRGly
ZWN0b3J5UGF0aEZvcktleShrZXkpLCBrZXkuaGFzaEFzU3RyaW5nKCkpOworICAgIHJldHVybiBG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3JkRGlyZWN0b3J5UGF0aEZv
cktleShrZXkpLCBrZXkuaGFzaEFzU3RyaW5nKCkpOwogfQogCiBzdGF0aWMgU3RyaW5nIGJsb2JQ
YXRoRm9yUmVjb3JkUGF0aChjb25zdCBTdHJpbmcmIHJlY29yZFBhdGgpCkBAIC02MjksNyArNjI5
LDcgQEAgdm9pZCBTdG9yYWdlOjpkZWxldGVGaWxlcyhjb25zdCBLZXkmIGtleSkKIHsKICAgICBB
U1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRl
bGV0ZUZpbGUocmVjb3JkUGF0aEZvcktleShrZXkpKTsKKyAgICBGaWxlU3lzdGVtOjpkZWxldGVG
aWxlKHJlY29yZFBhdGhGb3JLZXkoa2V5KSk7CiAgICAgbV9ibG9iU3RvcmFnZS5yZW1vdmUoYmxv
YlBhdGhGb3JLZXkoa2V5KSk7CiB9CiAKQEAgLTgwOSw3ICs4MDksNyBAQCB2b2lkIFN0b3JhZ2U6
OmRpc3BhdGNoV3JpdGVPcGVyYXRpb24oc3RkOjp1bmlxdWVfcHRyPFdyaXRlT3BlcmF0aW9uPiB3
cml0ZU9wZXJhdAogICAgICAgICBhdXRvIHJlY29yZERpcmVjdG9yUGF0aCA9IHJlY29yZERpcmVj
dG9yeVBhdGhGb3JLZXkod3JpdGVPcGVyYXRpb24ucmVjb3JkLmtleSk7CiAgICAgICAgIGF1dG8g
cmVjb3JkUGF0aCA9IHJlY29yZFBhdGhGb3JLZXkod3JpdGVPcGVyYXRpb24ucmVjb3JkLmtleSk7
CiAKLSAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKHJlY29y
ZERpcmVjdG9yUGF0aCk7CisgICAgICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3Rvcmllcyhy
ZWNvcmREaXJlY3RvclBhdGgpOwogCiAgICAgICAgICsrd3JpdGVPcGVyYXRpb24uYWN0aXZlQ291
bnQ7CiAKQEAgLTkxNyw3ICs5MTcsNyBAQCB2b2lkIFN0b3JhZ2U6OnRyYXZlcnNlKGNvbnN0IFN0
cmluZyYgdHlwZSwgT3B0aW9uU2V0PFRyYXZlcnNlRmxhZz4gZmxhZ3MsIFRyYXZlcgogICAgICAg
ICAgICAgaWYgKGlzQmxvYikKICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAg
IGF1dG8gcmVjb3JkUGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChyZWNvcmREaXJlY3RvcnlQYXRoLCBmaWxlTmFtZSk7CisgICAgICAgICAgICBhdXRv
IHJlY29yZFBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3Jk
RGlyZWN0b3J5UGF0aCwgZmlsZU5hbWUpOwogCiAgICAgICAgICAgICBkb3VibGUgd29ydGggPSAt
MTsKICAgICAgICAgICAgIGlmICh0cmF2ZXJzZU9wZXJhdGlvbi5mbGFncyAmIFRyYXZlcnNlRmxh
Zzo6Q29tcHV0ZVdvcnRoKQpAQCAtMTAwOSwxMyArMTAwOSwxMyBAQCB2b2lkIFN0b3JhZ2U6OmNs
ZWFyKGNvbnN0IFN0cmluZyYgdHlwZSwgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZVRpbWUsIENvbXBs
ZXRpb25IYQogICAgIGlvUXVldWUoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCBtb2RpZmllZFNpbmNlVGltZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgdHlwZSA9IHR5cGUuaXNvbGF0ZWRDb3B5KCldICgpIG11
dGFibGUgewogICAgICAgICBhdXRvIHJlY29yZHNQYXRoID0gdGhpcy0+cmVjb3Jkc1BhdGgoKTsK
ICAgICAgICAgdHJhdmVyc2VSZWNvcmRzRmlsZXMocmVjb3Jkc1BhdGgsIHR5cGUsIFttb2RpZmll
ZFNpbmNlVGltZV0oY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBoYXNoU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIHR5cGUsIGJvb2wgaXNCbG9iLCBjb25zdCBTdHJpbmcmIHJlY29y
ZERpcmVjdG9yeVBhdGgpIHsKLSAgICAgICAgICAgIGF1dG8gZmlsZVBhdGggPSBXZWJDb3JlOjpG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3JkRGlyZWN0b3J5UGF0aCwg
ZmlsZU5hbWUpOworICAgICAgICAgICAgYXV0byBmaWxlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmREaXJlY3RvcnlQYXRoLCBmaWxlTmFtZSk7CiAgICAg
ICAgICAgICBpZiAobW9kaWZpZWRTaW5jZVRpbWUgPiAtV2FsbFRpbWU6OmluZmluaXR5KCkpIHsK
ICAgICAgICAgICAgICAgICBhdXRvIHRpbWVzID0gZmlsZVRpbWVzKGZpbGVQYXRoKTsKICAgICAg
ICAgICAgICAgICBpZiAodGltZXMubW9kaWZpY2F0aW9uIDwgbW9kaWZpZWRTaW5jZVRpbWUpCiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFdl
YkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZmlsZVBhdGgpOworICAgICAgICAgICAgRmls
ZVN5c3RlbTo6ZGVsZXRlRmlsZShmaWxlUGF0aCk7CiAgICAgICAgIH0pOwogCiAgICAgICAgIGRl
bGV0ZUVtcHR5UmVjb3Jkc0RpcmVjdG9yaWVzKHJlY29yZHNQYXRoKTsKQEAgLTEwODksNyArMTA4
OSw3IEBAIHZvaWQgU3RvcmFnZTo6c2hyaW5rKCkKICAgICAgICAgICAgIGlmIChpc0Jsb2IpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICBhdXRvIHJlY29yZFBhdGggPSBX
ZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3JkRGlyZWN0
b3J5UGF0aCwgZmlsZU5hbWUpOworICAgICAgICAgICAgYXV0byByZWNvcmRQYXRoID0gRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZERpcmVjdG9yeVBhdGgsIGZpbGVO
YW1lKTsKICAgICAgICAgICAgIGF1dG8gYmxvYlBhdGggPSBibG9iUGF0aEZvclJlY29yZFBhdGgo
cmVjb3JkUGF0aCk7CiAKICAgICAgICAgICAgIGF1dG8gdGltZXMgPSBmaWxlVGltZXMocmVjb3Jk
UGF0aCk7CkBAIC0xMTAxLDcgKzExMDEsNyBAQCB2b2lkIFN0b3JhZ2U6OnNocmluaygpCiAgICAg
ICAgICAgICBMT0coTmV0d29ya0NhY2hlU3RvcmFnZSwgIkRlbGV0aW9uIHByb2JhYmlsaXR5PSVm
IGJvZHlMaW5rQ291bnQ9JWQgc2hvdWxkRGVsZXRlPSVkIiwgcHJvYmFiaWxpdHksIGJvZHlTaGFy
ZUNvdW50LCBzaG91bGREZWxldGUpOwogCiAgICAgICAgICAgICBpZiAoc2hvdWxkRGVsZXRlKSB7
Ci0gICAgICAgICAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShyZWNvcmRQ
YXRoKTsKKyAgICAgICAgICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKHJlY29yZFBhdGgp
OwogICAgICAgICAgICAgICAgIG1fYmxvYlN0b3JhZ2UucmVtb3ZlKGJsb2JQYXRoKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfSk7CkBAIC0xMTM3LDcgKzExMzcsNyBAQCB2b2lkIFN0b3JhZ2U6
OmRlbGV0ZU9sZFZlcnNpb25zKCkKICAgICAgICAgICAgICAgICByZXR1cm47CiAjZW5kaWYKIAot
ICAgICAgICAgICAgYXV0byBvbGRWZXJzaW9uUGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChjYWNoZVBhdGgsIHN1YmRpck5hbWUpOworICAgICAgICAg
ICAgYXV0byBvbGRWZXJzaW9uUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChjYWNoZVBhdGgsIHN1YmRpck5hbWUpOwogICAgICAgICAgICAgTE9HKE5ldHdvcmtDYWNo
ZVN0b3JhZ2UsICIoTmV0d29ya1Byb2Nlc3MpIGRlbGV0aW5nIG9sZCBjYWNoZSB2ZXJzaW9uLCBw
YXRoICVzIiwgb2xkVmVyc2lvblBhdGgudXRmOCgpLmRhdGEoKSk7CiAKICAgICAgICAgICAgIGRl
bGV0ZURpcmVjdG9yeVJlY3Vyc2l2ZWx5KG9sZFZlcnNpb25QYXRoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0g
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29h
Lm1tCmluZGV4IGE2MWY5Mzg1YTY3NzRiZDBiNzVjNTM5NjljZTEzMjg3OGIzYjk3M2YuLmY0N2Jk
ODE5ODgzMjY2YWE2NzhjNDg3ZjZiMzUzOGVjNWRhYmJlNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5t
bQpAQCAtMzYsMTEgKzM2LDExIEBACiAjaW1wb3J0ICJOZXR3b3JrU2Vzc2lvbkNvY29hLmgiCiAj
aW1wb3J0ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbXBvcnQgPFdlYkNvcmUvQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UuaD4KLSNpbXBvcnQgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2lt
cG9ydCA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KICNpbXBvcnQgPFdlYkNvcmUv
Tm90SW1wbGVtZW50ZWQuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAj
aW1wb3J0IDxwYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oPgorI2ltcG9ydCA8d3RmL0ZpbGVTeXN0
ZW0uaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW1wb3J0IDx3dGYvUHJvY2Vzc1By
aXZpbGVnZS5oPgogI2ltcG9ydCA8d3RmL3RleHQvQmFzZTY0Lmg+CkBAIC00MDMsOCArNDAzLDgg
QEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6c2V0UGVuZGluZ0Rvd25sb2FkTG9jYXRpb24o
Y29uc3QgV1RGOjpTdHJpbmcmIGZpbGVuYW0KIAogICAgIG1fdGFzay5nZXQoKS5fcGF0aFRvRG93
bmxvYWRUYXNrRmlsZSA9IG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRpb247CiAKLSAgICBpZiAoYWxs
b3dPdmVyd3JpdGUgJiYgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhtX3BlbmRpbmdE
b3dubG9hZExvY2F0aW9uKSkKLSAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmls
ZShmaWxlbmFtZSk7CisgICAgaWYgKGFsbG93T3ZlcndyaXRlICYmIEZpbGVTeXN0ZW06OmZpbGVF
eGlzdHMobV9wZW5kaW5nRG93bmxvYWRMb2NhdGlvbikpCisgICAgICAgIEZpbGVTeXN0ZW06OmRl
bGV0ZUZpbGUoZmlsZW5hbWUpOwogfQogCiBib29sIE5ldHdvcmtEYXRhVGFza0NvY29hOjp0cnlQ
YXNzd29yZEJhc2VkQXV0aGVudGljYXRpb24oY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25D
aGFsbGVuZ2UmIGNoYWxsZW5nZSwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImIGNvbXBsZXRp
b25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCmluZGV4IDkzMjkzNWQ4OTViZGI4OTMyMWY3Yzhh
YjgyMTQxOTNiNDJjZTVhNTcuLjQ1MjFiZjc4NTA0Y2U0Yjc0ZDQ5OTU0YTFjNGNjZGVhNTdhNTlj
MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a1Nlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtTZXNzaW9uQ29jb2EubW0KQEAgLTc3OSw3ICs3NzksNyBAQCAtICh2b2lkKVVSTFNl
c3Npb246KE5TVVJMU2Vzc2lvbiAqKXNlc3Npb24gZGF0YVRhc2s6KE5TVVJMU2Vzc2lvbkRhdGFU
YXNrICopZGF0YQogICAgICAgICBhdXRvJiBkb3dubG9hZE1hbmFnZXIgPSBfc2Vzc2lvbi0+bmV0
d29ya1Byb2Nlc3MoKS5kb3dubG9hZE1hbmFnZXIoKTsKICAgICAgICAgYXV0byBkb3dubG9hZCA9
IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpEb3dubG9hZD4oZG93bmxvYWRNYW5hZ2VyLCBkb3du
bG9hZElELCBkb3dubG9hZFRhc2ssIF9zZXNzaW9uLT5zZXNzaW9uSUQoKSwgbmV0d29ya0RhdGFU
YXNrLT5zdWdnZXN0ZWRGaWxlbmFtZSgpKTsKICAgICAgICAgbmV0d29ya0RhdGFUYXNrLT50cmFu
c2ZlclNhbmRib3hFeHRlbnNpb25Ub0Rvd25sb2FkKCpkb3dubG9hZCk7Ci0gICAgICAgIEFTU0VS
VChXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG5ldHdvcmtEYXRhVGFzay0+cGVuZGlu
Z0Rvd25sb2FkTG9jYXRpb24oKSkpOworICAgICAgICBBU1NFUlQoRmlsZVN5c3RlbTo6ZmlsZUV4
aXN0cyhuZXR3b3JrRGF0YVRhc2stPnBlbmRpbmdEb3dubG9hZExvY2F0aW9uKCkpKTsKICAgICAg
ICAgZG93bmxvYWQtPmRpZENyZWF0ZURlc3RpbmF0aW9uKG5ldHdvcmtEYXRhVGFzay0+cGVuZGlu
Z0Rvd25sb2FkTG9jYXRpb24oKSk7CiAgICAgICAgIGRvd25sb2FkTWFuYWdlci5kYXRhVGFza0Jl
Y2FtZURvd25sb2FkVGFzayhkb3dubG9hZElELCBXVEZNb3ZlKGRvd25sb2FkKSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzTWFj
Lm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nlc3NNYWMu
bW0KaW5kZXggMzdmM2I3ZjcyYWE1MDJiMzJiYTgxMWVjOWJhMDhmNWUyNTU4NjNiMi4uZjViZjA0
YWU0NjVmNjJiNzRkMmIxOGE4MTc1OTAxYTE2ZWE1NTVkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nlc3NNYWMubW0KKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nlc3NNYWMubW0KQEAgLTM4LDEy
ICszOCwxMiBAQAogI2ltcG9ydCAiU3RyaW5nVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJXS0ZvdW5k
YXRpb24uaCIKICNpbXBvcnQgPFdlYkNvcmUvQ2VydGlmaWNhdGVJbmZvLmg+Ci0jaW1wb3J0IDxX
ZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPFdlYkNvcmUvTG9jYWxpemVkU3RyaW5ncy5o
PgogI2ltcG9ydCA8bm90aWZ5Lmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5o
PgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5oPgogI2ltcG9ydCA8
c3lzZXhpdHMuaD4KKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDx3dGYvTWVt
b3J5UHJlc3N1cmVIYW5kbGVyLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9j
ZXNzU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1By
b2Nlc3NTb3VwLmNwcAppbmRleCA4ODJiMTQ1ZjdmY2IxMzQzMDQyOGEyY2JlNzNhNTUzMTk2YThh
NDg0Li4xZDA5ZjgyYjMwNzIzNTJkYzNiNzIzMTM5ZWE5ODFhYTQxNjMyYTZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NT
b3VwLmNwcApAQCAtMzIsMTIgKzMyLDEyIEBACiAjaW5jbHVkZSAiUmVzb3VyY2VDYWNoZXNUb0Ns
ZWFyLmgiCiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
Q2VydGlmaWNhdGVJbmZvLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvU291cE5ldHdvcmtTZXNzaW9uLmg+CiAjaW5jbHVkZSA8bGlic291
cC9zb3VwLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvUkFN
U2l6ZS5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvZ2xp
Yi9HVW5pcXVlUHRyLmg+CkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVh
dGkKICAgICBBU1NFUlQoIXBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSk7
CiAgICAgbV9kaXNrQ2FjaGVEaXJlY3RvcnkgPSBwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9y
eTsKIAotICAgIFNvdXBOZXR3b3JrU2Vzc2lvbjo6Y2xlYXJPbGRTb3VwQ2FjaGUoV2ViQ29yZTo6
RmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShtX2Rpc2tDYWNoZURpcmVjdG9yeSkpOworICAgIFNv
dXBOZXR3b3JrU2Vzc2lvbjo6Y2xlYXJPbGRTb3VwQ2FjaGUoRmlsZVN5c3RlbTo6ZGlyZWN0b3J5
TmFtZShtX2Rpc2tDYWNoZURpcmVjdG9yeSkpOwogCiAgICAgT3B0aW9uU2V0PE5ldHdvcmtDYWNo
ZTo6Q2FjaGU6Ok9wdGlvbj4gY2FjaGVPcHRpb25zIHsgTmV0d29ya0NhY2hlOjpDYWNoZTo6T3B0
aW9uOjpSZWdpc3Rlck5vdGlmeSB9OwogICAgIGlmIChwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZU5l
dHdvcmtDYWNoZUVmZmljYWN5TG9nZ2luZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGx1
Z2luUHJvY2Vzcy91bml4L1BsdWdpblByb2Nlc3NNYWluVW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1BsdWdpblByb2Nlc3MvdW5peC9QbHVnaW5Qcm9jZXNzTWFpblVuaXguY3BwCmluZGV4IDJiZDJl
ZDU5YWU2YTJlMjRiMDc0OGIwM2NlYmMzNTYzYzY2NzE4M2UuLjNhZGU0Yzk0M2YwOWI1MWQzY2Mz
YmVjMmNhOTYzM2Y3M2QxMzQ5NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJv
Y2Vzcy91bml4L1BsdWdpblByb2Nlc3NNYWluVW5peC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9Q
bHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc01haW5Vbml4LmNwcApAQCAtMzQsOCArMzQs
OCBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXRzY2FwZVBsdWdpbi5oIgog
I2luY2x1ZGUgIlBsdWdpblByb2Nlc3MuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0u
aD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiAj
aWYgUExBVEZPUk0oR1RLKQogI2luY2x1ZGUgPGd0ay9ndGsuaD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1BlcnNpc3RlbmN5VXRpbHMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvUGVyc2lzdGVuY3lVdGlscy5jcHAKaW5kZXggNWRiYTk2OGJkN2UwYjM4YzNkMjI2OTRkNmQ1
ZDJlNmIwNjlkMmE4MS4uZWNhOTY0MWQyMDUzNDVjODE4OTZlYjU2NWRmNjI3Zjk1ZTNjNTE3YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGVyc2lzdGVuY3lVdGlscy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGVyc2lzdGVuY3lVdGlscy5jcHAKQEAgLTI3LDggKzI3
LDggQEAKICNpbmNsdWRlICJQZXJzaXN0ZW5jeVV0aWxzLmgiCiAKICNpbmNsdWRlICJMb2dnaW5n
LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
aGFyZWRCdWZmZXIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0
Zi9SdW5Mb29wLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS91bml4L05ldHNjYXBlUGx1Z2luTW9kdWxlVW5p
eC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL3VuaXgvTmV0c2Nh
cGVQbHVnaW5Nb2R1bGVVbml4LmNwcAppbmRleCBmYjFkOWRjOTI2ZmQ2NzY3OTNmNDU0YTc0ZmE1
NTFhZWU1NzBjOGU1Li4yYTY1ZGE5ZmJjYjJmMzNhMWZmNTQxMGJlODg5OGNlZjEzNzk5MTFmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL3VuaXgvTmV0
c2NhcGVQbHVnaW5Nb2R1bGVVbml4LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVn
aW5zL05ldHNjYXBlL3VuaXgvTmV0c2NhcGVQbHVnaW5Nb2R1bGVVbml4LmNwcApAQCAtMzAsMTYg
KzMwLDE1IEBACiAKICNpbmNsdWRlICJOZXRzY2FwZUJyb3dzZXJGdW5jcy5oIgogI2luY2x1ZGUg
IlBsdWdpblByb2Nlc3NQcm94eS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgog
I2luY2x1ZGUgPGVycm5vLmg+CiAjaW5jbHVkZSA8ZmNudGwuaD4KICNpbmNsdWRlIDxzeXMvc3Rh
dC5oPgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1
ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5o
PgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBjbGFz
cyBTdGRvdXREZXZOdWxsUmVkaXJlY3RvciB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9QbHVnaW5zL3VuaXgvUGx1Z2luU2VhcmNoUGF0aC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9QbHVnaW5zL3VuaXgvUGx1Z2luU2VhcmNoUGF0aC5jcHAKaW5kZXggZThh
Zjk2MDRjZTU1OTVhNDQ0ZmU4Y2E1MDQ1ZDNhNjE3YWIyMzY0YS4uMmJkNTQ5YTk1ZGZhNjc1Y2U0
N2Y1NmQ3OGE1OWI0ZjczMTVhMTFhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
UGx1Z2lucy91bml4L1BsdWdpblNlYXJjaFBhdGguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1BsdWdpbnMvdW5peC9QbHVnaW5TZWFyY2hQYXRoLmNwcApAQCAtMjYsNyArMjYsNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlBsdWdpblNlYXJjaFBhdGguaCIKIAotI2lu
Y2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJNZW1vcnlTYW1wbGVyLmggYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJNZW1vcnlTYW1wbGVyLmgKaW5kZXggODA4MTNmZWEwNTBmMjA0OTFiZDFj
OGI1MGU5MGIxY2JiYmNhYTM0NC4uNzIxY2RiZjM4OTIyNjRiYzlmZDc5MmI1MDgzODMwZmY1MTlm
YzliZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYk1lbW9yeVNhbXBsZXIuaApAQCAtNTIsOCAr
NTIsOCBAQAogI2lmIEVOQUJMRShNRU1PUllfU0FNUExFUikKIAogI2luY2x1ZGUgIlNhbmRib3hF
eHRlbnNpb24uaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1RpbWVyLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3
dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgpAQCAtODcsNyArODcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaW5pdGlhbGl6
ZVRpbWVycyhkb3VibGUpOwogICAgIHZvaWQgc2FtcGxlVGltZXJGaXJlZCgpOwogICAgIHZvaWQg
c3RvcFRpbWVyRmlyZWQoKTsKLSAgICB2b2lkIGFwcGVuZEN1cnJlbnRNZW1vcnlVc2FnZVRvRmls
ZShXZWJDb3JlOjpGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUmKTsKKyAgICB2b2lkIGFw
cGVuZEN1cnJlbnRNZW1vcnlVc2FnZVRvRmlsZShGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5k
bGUmKTsKICAgICB2b2lkIHNlbmRNZW1vcnlQcmVzc3VyZUV2ZW50KCk7CiAgICAgCiAgICAgU3lz
dGVtTWFsbG9jU3RhdHMgc2FtcGxlU3lzdGVtTWFsbG9jKCkgY29uc3Q7CkBAIC05NSw3ICs5NSw3
IEBAIHByaXZhdGU6CiAgICAgV2ViTWVtb3J5U3RhdGlzdGljcyBzYW1wbGVXZWJLaXQoKSBjb25z
dDsKICAgICBTdHJpbmcgcHJvY2Vzc05hbWUoKSBjb25zdDsKICAgICAKLSAgICBXZWJDb3JlOjpG
aWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgbV9zYW1wbGVMb2dGaWxlIHsgV2ViQ29yZTo6
RmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSB9OworICAgIEZpbGVTeXN0ZW06
OlBsYXRmb3JtRmlsZUhhbmRsZSBtX3NhbXBsZUxvZ0ZpbGUgeyBGaWxlU3lzdGVtOjppbnZhbGlk
UGxhdGZvcm1GaWxlSGFuZGxlIH07CiAgICAgU3RyaW5nIG1fc2FtcGxlTG9nRmlsZVBhdGg7CiAg
ICAgV2ViQ29yZTo6VGltZXIgbV9zYW1wbGVUaW1lcjsKICAgICBXZWJDb3JlOjpUaW1lciBtX3N0
b3BUaW1lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2dsaWIvUHJvY2Vzc0V4
ZWN1dGFibGVQYXRoR0xpYi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9nbGliL1Byb2Nlc3NF
eGVjdXRhYmxlUGF0aEdMaWIuY3BwCmluZGV4IGE3MGI0MWEwOWE5MzBiYmRjM2I1NDFjZTZhNzA4
YWQ4OWJiYzJmNGIuLjRmZjM1ZDMxZGUxZDU3MjMxYTZmNmUxMDE1YTg1NWQ0MGY4YzhjMzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2dsaWIvUHJvY2Vzc0V4ZWN1dGFibGVQYXRo
R0xpYi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ2xpYi9Qcm9jZXNzRXhlY3V0YWJs
ZVBhdGhHTGliLmNwcApAQCAtMjcsMTIgKzI3LDExIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiUHJvY2Vzc0V4ZWN1dGFibGVQYXRoLmgiCiAKLSNpbmNsdWRlIDxXZWJDb3JlL0Zp
bGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxnbGliLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0u
aD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HTGliVXRpbGl0aWVzLmg+CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKICNpZiBFTkFCTEUoREVWRUxPUEVSX01P
REUpCiBzdGF0aWMgU3RyaW5nIGdldEV4ZWN1dGFibGVQYXRoKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL2lvcy9DaGlsZFByb2Nlc3NJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9pb3MvQ2hpbGRQcm9jZXNzSU9TLm1tCmluZGV4IDgxZDU0ZjNiZjAwOWVmYWYwNWQ0MDJk
NmY1Y2ZlYThkMTBmNGI1NjcuLjY5ZDUzY2ZmMzE0YTk1Y2JjNGE4MDdhYjk4YzllY2E4MmZlMmJl
MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9DaGlsZFByb2Nlc3NJT1Mu
bW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL0NoaWxkUHJvY2Vzc0lPUy5tbQpAQCAt
MzEsNyArMzEsNiBAQAogCiAjaW1wb3J0ICJTYW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJz
LmgiCiAjaW1wb3J0ICJYUENTZXJ2aWNlRW50cnlQb2ludC5oIgotI2ltcG9ydCA8V2ViQ29yZS9G
aWxlU3lzdGVtLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Zsb2F0aW5nUG9pbnRFbnZpcm9ubWVudC5o
PgogI2ltcG9ydCA8V2ViQ29yZS9TeXN0ZW1WZXJzaW9uLmg+CiAjaW1wb3J0IDxtYWNoL21hY2gu
aD4KQEAgLTM5LDYgKzM4LDcgQEAKICNpbXBvcnQgPHB3ZC5oPgogI2ltcG9ydCA8c3RkbGliLmg+
CiAjaW1wb3J0IDxzeXNleGl0cy5oPgorI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogI2lm
IEVOQUJMRShNQU5VQUxfU0FOREJPWElORykKICNpbXBvcnQgPHd0Zi9zcGkvZGFyd2luL1NhbmRi
b3hTUEkuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9DaGlsZFByb2Nl
c3NNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQ2hpbGRQcm9jZXNzTWFjLm1tCmlu
ZGV4IDNjMzk0Y2M5MTZjMDk5MjBkMDMzM2YyYzRhMjU4ZTQ3ZjFlN2M5NzkuLjc4NTM2YWFlNjBi
Y2YwMmM5MjY2MGMzMjgxMWE4ZDBmNThlZmY2ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL21hYy9DaGlsZFByb2Nlc3NNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
bWFjL0NoaWxkUHJvY2Vzc01hYy5tbQpAQCAtMzUsNyArMzUsNiBAQAogI2ltcG9ydCAiV0tGb3Vu
ZGF0aW9uLmgiCiAjaW1wb3J0ICJYUENTZXJ2aWNlRW50cnlQb2ludC5oIgogI2ltcG9ydCA8V2Vi
Q29yZS9GaWxlSGFuZGxlLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbXBv
cnQgPFdlYkNvcmUvU3lzdGVtVmVyc2lvbi5oPgogI2ltcG9ydCA8bWFjaC1vL2R5bGQuaD4KICNp
bXBvcnQgPG1hY2gvbWFjaC5oPgpAQCAtNDcsNiArNDYsNyBAQAogI2ltcG9ydCA8c3lzL3N5c2N0
bC5oPgogI2ltcG9ydCA8c3lzZXhpdHMuaD4KICNpbXBvcnQgPHd0Zi9EYXRhTG9nLmg+CisjaW1w
b3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8d3RmL1JhbmRvbU51bWJlci5oPgogI2lt
cG9ydCA8d3RmL1Njb3BlLmg+CiAjaW1wb3J0IDx3dGYvU3lzdGVtVHJhY2luZy5oPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1NhbmRib3hFeHRlbnNpb25NYWMubW0gYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvU2FuZGJveEV4dGVuc2lvbk1hYy5tbQppbmRleCAwY2Vj
OTg1Yzc4NWM3NzM2NTk3NzJkMjRmMWI2ZDU3NmQ3MWQ3NWUxLi5hZmJjNmIyYTE0ZTViZmYwYzE2
NjU2YjdjMjA4NzdjYmNkZGQ0NTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9t
YWMvU2FuZGJveEV4dGVuc2lvbk1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMv
U2FuZGJveEV4dGVuc2lvbk1hYy5tbQpAQCAtMzEsMTMgKzMxLDEyIEBACiAjaW1wb3J0ICJEYXRh
UmVmZXJlbmNlLmgiCiAjaW1wb3J0ICJEZWNvZGVyLmgiCiAjaW1wb3J0ICJFbmNvZGVyLmgiCi0j
aW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHN5cy9zdGF0Lmg+CisjaW1w
b3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQ
SS5oPgogI2ltcG9ydCA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
LXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBjbGFzcyBTYW5kYm94RXh0ZW5zaW9uSW1wbCB7
CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29u
dGVudFJ1bGVMaXN0U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNv
bnRlbnRSdWxlTGlzdFN0b3JlLmNwcAppbmRleCAzOGY0MmNiOTFhNTM4ZWRlNjhlMjI1OTQxMDUw
Zjk2YWY2N2I5Njk4Li43NDI2YmQyYjQ1NTRmM2VmZWNjYWJmYTY4OTk2ZTU1YWJmZWRhMTI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0
U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVs
ZUxpc3RTdG9yZS5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1F1YWxp
ZmllZE5hbWUuaD4KICNpbmNsdWRlIDxzdHJpbmc+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25I
YW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9X
b3JrUXVldWUuaD4KQEAgLTQ4LDcgKzQ5LDcgQEAKIAogbmFtZXNwYWNlIEFQSSB7CiB1c2luZyBu
YW1lc3BhY2UgV2ViS2l0OjpOZXR3b3JrQ2FjaGU7Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTo6
RmlsZVN5c3RlbTsKK3VzaW5nIG5hbWVzcGFjZSBXVEY6OkZpbGVTeXN0ZW07CiAKIENvbnRlbnRS
dWxlTGlzdFN0b3JlJiBDb250ZW50UnVsZUxpc3RTdG9yZTo6bGVnYWN5RGVmYXVsdFN0b3JlKCkK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElXZWJz
aXRlRGF0YVN0b3JlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
QVBJV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCmluZGV4IDRhMmVjMzg3MjM3ZmZkYzhjYTg5NDcx
ODZmZmVkMGQ1Y2E0ZWE3NTQuLjM4ODRmNDNjMWUyMGExMjk4YmE4ODU3ZWIxYjA5MTU1YTk4YjAw
NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElXZWJz
aXRlRGF0YVN0b3JlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQpAQCAtMjgsOSArMjgsOCBAQAogCiAjaW5j
bHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIlNhbmRib3hVdGlsaXRpZXMuaCIK
LQogI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgotI2luY2x1ZGUgPFdlYkNvcmUv
RmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogI2ltcG9ydCA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3Mu
aD4KQEAgLTE2OSw3ICsxNjgsNyBAQCBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdh
Y3lEZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKQogICAgIC8vIEN1cnJlbnRseSwg
dGhlIHRvcCBsZXZlbCBvZiB0aGF0IGRpcmVjdG9yeSBjb250YWlucyBlbnRpdGllcyByZWxhdGVk
IHRvIFdlYlNRTCBkYXRhYmFzZXMuCiAgICAgLy8gV2Ugc2hvdWxkIGZpeCB0aGlzLCBhbmQgbW92
ZSBXZWJTUUwgaW50byBhIHN1YmRpcmVjdG9yeSAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEyNDgwNykKICAgICAvLyBJbiB0aGUgbWVhbnRpbWUsIGFuIGVudGl0eSBu
YW1lIHByZWZpeGVkIHdpdGggdGhyZWUgdW5kZXJzY29yZXMgd2lsbCBub3QgY29uZmxpY3Qgd2l0
aCBhbnkgV2ViU1FMIGVudGl0aWVzLgotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQobGVnYWN5RGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0
b3J5KCksICJfX19JbmRleGVkREIiKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KGxlZ2FjeURlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpLCAi
X19fSW5kZXhlZERCIik7CiB9CiAKIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2Fj
eURlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvQVBJV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvQVBJV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwCmlu
ZGV4IGUxYzQ1MjliM2QyMWVlNThiZmVmYjVjMThmZWZiNTExMjJjMDE2MGYuLmY1YWI5MzFjYmVk
M2I3NzFiZjNjZWM4MTJjYjc0MmU0OWJiNjg1MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHAK
QEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBUElXZWJz
aXRlRGF0YVN0b3JlLmgiCiAKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KKyNpbmNs
dWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4K
IAogI2lmIFBMQVRGT1JNKEdUSykKQEAgLTQ2LDEyICs0NiwxMiBAQCBXVEY6OlN0cmluZyBXZWJz
aXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpCiAvLyBXaHkg
aXMgb25seSB0aGlzIGRpcmVjdG9yeSBuYW1lc3BhY2VkIHRvIGEgcGFydGljdWxhciBhcHBsaWNh
dGlvbj8KIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVE
aXJlY3RvcnkoKQogewotICAgIHJldHVybiBjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihnX2dl
dF9wcmduYW1lKCkpLCAiV2ViS2l0Q2FjaGUiKSk7CisgICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5
RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGdfZ2V0
X3ByZ25hbWUoKSksICJXZWJLaXRDYWNoZSIpKTsKIH0KIAogV1RGOjpTdHJpbmcgV2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIGNh
Y2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKFdlYkNvcmU6OkZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9t
RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGdfZ2V0X3ByZ25hbWUoKSksICJDYWNoZVN0b3JhZ2Ui
KSk7CisgICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpzdHJpbmdGcm9t
RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGdfZ2V0X3ByZ25hbWUoKSksICJDYWNoZVN0b3JhZ2Ui
KSk7CiB9CiAKIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRJbmRleGVkREJE
YXRhYmFzZURpcmVjdG9yeSgpCkBAIC05MSwxOSArOTEsMTkgQEAgV1RGOjpTdHJpbmcgV2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKQogCiBX
VEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSkKIHsKLSAgICByZXR1
cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6
OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfdXNl
cl9jYWNoZV9kaXIoKSksIGRpcmVjdG9yeU5hbWUpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihnX2dldF91c2VyX2NhY2hlX2RpcigpKSwgZGlyZWN0b3J5TmFtZSk7CiB9
CiAKIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OndlYnNpdGVEYXRhRGlyZWN0b3J5Rmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3RvcnlOYW1lKQog
ewotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihnX2dldF91c2VyX2RhdGFfZGlyKCkpLCBkaXJlY3RvcnlOYW1lKTsKKyAgICByZXR1cm4gRmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21G
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfdXNlcl9kYXRhX2RpcigpKSwgZGlyZWN0b3J5
TmFtZSk7CiB9CiAKIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRB
cHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkKIHsKICNpZiBQTEFURk9STShXUEUpCiAgICAgR1Vu
aXF1ZVB0cjxnY2hhcj4gY2FjaGVEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFtZShnX2dldF91c2Vy
X2NhY2hlX2RpcigpLCAid3BlIiwgImFwcGNhY2hlIiwgbnVsbHB0cikpOwotICAgIHJldHVybiBX
ZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNh
Y2hlRGlyZWN0b3J5LmdldCgpKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjYWNoZURpcmVjdG9yeS5nZXQoKSk7CiAjZW5kaWYKICAg
ICByZXR1cm4gZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKTsKIH0KQEAgLTExMiw3
ICsxMTIsNyBAQCBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0TmV0
d29ya0NhY2hlRGlyZWN0b3J5KCkKIHsKICNpZiBQTEFURk9STShXUEUpCiAgICAgR1VuaXF1ZVB0
cjxjaGFyPiBkaXNrQ2FjaGVEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFtZShnX2dldF91c2VyX2Nh
Y2hlX2RpcigpLCAid3BlIiwgImNhY2hlIiwgbnVsbHB0cikpOwotICAgIHJldHVybiBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRpc2tDYWNo
ZURpcmVjdG9yeS5nZXQoKSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oZGlza0NhY2hlRGlyZWN0b3J5LmdldCgpKTsKICNlbmRpZgog
ICAgIHJldHVybiBkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCk7CiB9CkBAIC0xMjEsNyAr
MTIxLDcgQEAgV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdFdlYlNR
TERhdGFiYXNlRGlyZWN0b3J5KCkKIHsKICNpZiBQTEFURk9STShXUEUpCiAgICAgR1VuaXF1ZVB0
cjxnY2hhcj4gZGF0YWJhc2VEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFtZShnX2dldF91c2VyX2Rh
dGFfZGlyKCksICJ3cGUiLCAiZGF0YWJhc2VzIiwgbnVsbHB0cikpOwotICAgIHJldHVybiBXZWJD
b3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRhdGFi
YXNlRGlyZWN0b3J5LmdldCgpKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihkYXRhYmFzZURpcmVjdG9yeS5nZXQoKSk7CiAjZW5kaWYK
ICAgICByZXR1cm4gZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCk7CiB9CkBAIC0xMzAs
NyArMTMwLDcgQEAgV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdElu
ZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkKIHsKICNpZiBQTEFURk9STShXUEUpCiAgICAgR1Vu
aXF1ZVB0cjxnY2hhcj4gaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFt
ZShnX2dldF91c2VyX2RhdGFfZGlyKCksICJ3cGUiLCAiZGF0YWJhc2VzIiwgImluZGV4ZWRkYiIs
IG51bGxwdHIpKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihpbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeS5nZXQoKSk7
CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkuZ2V0KCkpOwogI2VuZGlmCiAgICAgcmV0dXJu
IGRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpOwogfQpAQCAtMTM5LDcgKzEzOSw3
IEBAIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRMb2NhbFN0b3Jh
Z2VEaXJlY3RvcnkoKQogewogI2lmIFBMQVRGT1JNKFdQRSkKICAgICBHVW5pcXVlUHRyPGdjaGFy
PiBzdG9yYWdlRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9kYXRhX2Rpcigp
LCAid3BlIiwgImxvY2Fsc3RvcmFnZSIsIG51bGxwdHIpKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6
RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihzdG9yYWdlRGly
ZWN0b3J5LmdldCgpKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihzdG9yYWdlRGlyZWN0b3J5LmdldCgpKTsKICNlbmRpZgogICAgIHJl
dHVybiBkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7CiB9CkBAIC0xNDgsNyArMTQ4LDcg
QEAgV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdE1lZGlhQ2FjaGVE
aXJlY3RvcnkoKQogewogI2lmIFBMQVRGT1JNKFdQRSkKICAgICBHVW5pcXVlUHRyPGdjaGFyPiBj
YWNoZURpcmVjdG9yeShnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfY2FjaGVfZGlyKCksICJ3
cGUiLCAibWVkaWFjYWNoZSIsIG51bGxwdHIpKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5
c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjYWNoZURpcmVjdG9yeS5n
ZXQoKSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oY2FjaGVEaXJlY3RvcnkuZ2V0KCkpOwogI2VuZGlmCiAgICAgcmV0dXJuIGRlZmF1
bHRNZWRpYUNhY2hlRGlyZWN0b3J5KCk7CiB9CkBAIC0xNTcsNyArMTU3LDcgQEAgV1RGOjpTdHJp
bmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rv
cnkoKQogewogI2lmIFBMQVRGT1JNKFdQRSkKICAgICBHVW5pcXVlUHRyPGdjaGFyPiBtZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9kYXRhX2Rpcigp
LCAid3BlIiwgIm1lZGlha2V5cyIsIG51bGxwdHIpKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihtZWRpYUtleXNTdG9y
YWdlRGlyZWN0b3J5LmdldCgpKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5LmdldCgpKTsK
ICNlbmRpZgogICAgIHJldHVybiBkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpOwog
fQpAQCAtMTY2LDcgKzE2Niw3IEBAIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZh
dWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCkKIHsKICNpZiBQTEFURk9STShX
UEUpCiAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0
b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9kYXRhX2RpcigpLCAid3BlIiwgImRldmlj
ZWlkaGFzaHNhbHRzIiwgbnVsbHB0cikpOwotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVt
OjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRldmljZUlkSGFzaFNhbHRzU3Rv
cmFnZURpcmVjdG9yeS5nZXQoKSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21G
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5
LmdldCgpKTsKICNlbmRpZgogICAgIHJldHVybiBkZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9y
YWdlRGlyZWN0b3J5KCk7CiB9CkBAIC0xNzQsNyArMTc0LDcgQEAgU3RyaW5nIFdlYnNpdGVEYXRh
U3RvcmU6OmxlZ2FjeURlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKQog
V1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdEphdmFTY3JpcHRDb25m
aWd1cmF0aW9uRGlyZWN0b3J5KCkKIHsKICAgICBHVW5pcXVlUHRyPGdjaGFyPiBqYXZhU2NyaXB0
Q29yZUNvbmZpZ0RpcmVjdG9yeShnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfZGF0YV9kaXIo
KSwgQkFTRV9ESVJFQ1RPUlksICJKYXZhU2NyaXB0Q29yZURlYnVnIiwgbnVsbHB0cikpOwotICAg
IHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKGphdmFTY3JpcHRDb3JlQ29uZmlnRGlyZWN0b3J5LmdldCgpKTsKKyAgICByZXR1cm4g
RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihqYXZhU2NyaXB0
Q29yZUNvbmZpZ0RpcmVjdG9yeS5nZXQoKSk7CiB9CiAKIFJlZjxXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uPiBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlQ29u
ZmlndXJhdGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9JY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNv
bkRhdGFiYXNlLmNwcAppbmRleCA2NzRhNWRiMDQzYzhhNjBmMzYyMGFhN2JhMDE4YzFmOTg1ZWRm
OGE5Li5iMDQ2NmU5MTQwOTBiYzA1NTk2NmU2YjlkZjMxOWVhMzA0ZGIyMzU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAKQEAgLTI5
LDExICsyOSwxMSBAQAogCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
Qml0bWFwSW1hZ2UuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0ltYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVTdGF0ZW1lbnQuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZVRyYW5zYWN0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9TaGFyZWRCdWZmZXIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUg
PHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5j
bHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZhdmljb25EYXRhYmFzZS5jcHAKaW5kZXggOWJlNzI1
M2Y4NWU5MWRhMTFiOTVlZDI4MDllYjQ0YjVhMzcxNWE1YS4uZTAxNjQ4NjgxNzFhNWQ4YmVlOGEz
ZTE4NmFjNjgyNWM0OTFkOTcwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwCkBAIC0yMywxMiArMjMs
MTIgQEAKICNpbmNsdWRlICJJY29uRGF0YWJhc2UuaCIKICNpbmNsdWRlICJXZWJLaXRGYXZpY29u
RGF0YWJhc2VQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKLSNpbmNsdWRl
IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9JbnRTaXplLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWZQdHJDYWlyby5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8Z2xpYi9naTE4
bi1saWIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9SdW5M
b29wLmg+CiAjaW5jbHVkZSA8d3RmL1NldEZvclNjb3BlLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIv
R1JlZlB0ci5oPgpAQCAtMjczLDcgKzI3Myw3IEBAIHZvaWQgd2Via2l0RmF2aWNvbkRhdGFiYXNl
T3BlbihXZWJLaXRGYXZpY29uRGF0YWJhc2UqIGRhdGFiYXNlLCBjb25zdCBTdHJpbmcmIHBhCiAg
ICAgcHJpdi0+aWNvbkRhdGFiYXNlLT5zZXRFbmFibGVkKHRydWUpOwogICAgIHByaXYtPmljb25E
YXRhYmFzZS0+c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChXZWJQcmVmZXJlbmNlczo6YW55UGFn
ZXNBcmVVc2luZ1ByaXZhdGVCcm93c2luZygpKTsKIAotICAgIGlmICghcHJpdi0+aWNvbkRhdGFi
YXNlLT5vcGVuKFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUocGF0aCksIFdlYkNv
cmU6OkZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShwYXRoKSkpIHsKKyAgICBpZiAoIXByaXYt
Pmljb25EYXRhYmFzZS0+b3BlbihGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKHBhdGgpLCBGaWxl
U3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUocGF0aCkpKSB7CiAgICAgICAgIHByaXYtPmljb25EYXRh
YmFzZSA9IG51bGxwdHI7CiAgICAgICAgIEljb25EYXRhYmFzZTo6YWxsb3dEYXRhYmFzZUNsZWFu
dXAoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0LmNwcAppbmRleCAzN2U2Y2NhMGNlYmNl
OTE0NzMwZTNjNmQ0MjVjNWZlZjc3ZmI0ODVmLi4wOTk4MGFhZTA2OTllYmNlOWQzM2U5YzVhNjk3
YTAyZGUwNDcwM2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdEZpbGVDaG9vc2VyUmVxdWVzdC5jcHAKQEAgLTI1LDkgKzI1LDkg
QEAKICNpbmNsdWRlICJBUElTdHJpbmcuaCIKICNpbmNsdWRlICJXZWJLaXRGaWxlQ2hvb3NlclJl
cXVlc3RQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94
eS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
VGV4dEVuY29kaW5nLmg+CiAjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KKyNpbmNsdWRlIDx3
dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvZ2xp
Yi9HUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcApp
bmRleCAwZjM5ZTEyNWYzZGE2YzQ4Mzk2YTQwYzljZGZlOGY0YzQxZDk2OWFlLi42NmQ4M2E3MTg4
ZTZjZGE3MGVmMmI0OWYyNjM5OTdhYzRlZjY5NTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcApAQCAtMzMzLDIwICsz
MzMsMjAgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViQ29udGV4dENvbnN0cnVjdGVkKEdPYmplY3Qq
IG9iamVjdCkKICAgICBHVW5pcXVlUHRyPGNoYXI+IGJ1bmRsZUZpbGVuYW1lKGdfYnVpbGRfZmls
ZW5hbWUoaW5qZWN0ZWRCdW5kbGVEaXJlY3RvcnkoKSwgSU5KRUNURURfQlVORExFX0ZJTEVOQU1F
LCBudWxscHRyKSk7CiAKICAgICBBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBjb25maWd1
cmF0aW9uOwotICAgIGNvbmZpZ3VyYXRpb24uc2V0SW5qZWN0ZWRCdW5kbGVQYXRoKFdlYkNvcmU6
OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oYnVuZGxlRmls
ZW5hbWUuZ2V0KCkpKTsKKyAgICBjb25maWd1cmF0aW9uLnNldEluamVjdGVkQnVuZGxlUGF0aChG
aWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGJ1bmRsZUZpbGVu
YW1lLmdldCgpKSk7CiAgICAgY29uZmlndXJhdGlvbi5zZXRNYXhpbXVtUHJvY2Vzc0NvdW50KDEp
OwogICAgIGNvbmZpZ3VyYXRpb24uc2V0RGlza0NhY2hlU3BlY3VsYXRpdmVWYWxpZGF0aW9uRW5h
YmxlZCh0cnVlKTsKIAogICAgIFdlYktpdFdlYkNvbnRleHQqIHdlYkNvbnRleHQgPSBXRUJLSVRf
V0VCX0NPTlRFWFQob2JqZWN0KTsKICAgICBXZWJLaXRXZWJDb250ZXh0UHJpdmF0ZSogcHJpdiA9
IHdlYkNvbnRleHQtPnByaXY7CiAgICAgaWYgKHByaXYtPndlYnNpdGVEYXRhTWFuYWdlciAmJiAh
d2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2lzX2VwaGVtZXJhbChwcml2LT53ZWJzaXRlRGF0
YU1hbmFnZXIuZ2V0KCkpKSB7Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0TG9jYWxTdG9yYWdl
RGlyZWN0b3J5KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24od2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9sb2NhbF9zdG9yYWdlX2Rp
cmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSk7Ci0gICAgICAgIGNvbmZp
Z3VyYXRpb24uc2V0RGlza0NhY2hlRGlyZWN0b3J5KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfZGlza19j
YWNoZV9kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSksIG5ldHdvcmtD
YWNoZVN1YmRpcmVjdG9yeSkpOwotICAgICAgICBjb25maWd1cmF0aW9uLnNldEFwcGxpY2F0aW9u
Q2FjaGVEaXJlY3RvcnkoV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X29mZmxpbmVfYXBw
bGljYXRpb25fY2FjaGVfZGlyZWN0b3J5KHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkp
KTsKLSAgICAgICAgY29uZmlndXJhdGlvbi5zZXRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeShX
ZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHdl
YmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfaW5kZXhlZGRiX2RpcmVjdG9yeShwcml2LT53
ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSk7Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0V2Vi
U1FMRGF0YWJhc2VEaXJlY3RvcnkoV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X3dlYnNx
bF9kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSkpOworICAgICAgICBj
b25maWd1cmF0aW9uLnNldExvY2FsU3RvcmFnZURpcmVjdG9yeShGaWxlU3lzdGVtOjpzdHJpbmdG
cm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9n
ZXRfbG9jYWxfc3RvcmFnZV9kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgp
KSkpOworICAgICAgICBjb25maWd1cmF0aW9uLnNldERpc2tDYWNoZURpcmVjdG9yeShGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2Rpc2tf
Y2FjaGVfZGlyZWN0b3J5KHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpLCBuZXR3b3Jr
Q2FjaGVTdWJkaXJlY3RvcnkpKTsKKyAgICAgICAgY29uZmlndXJhdGlvbi5zZXRBcHBsaWNhdGlv
bkNhY2hlRGlyZWN0b3J5KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24od2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9vZmZsaW5lX2FwcGxpY2F0aW9u
X2NhY2hlX2RpcmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSk7CisgICAg
ICAgIGNvbmZpZ3VyYXRpb24uc2V0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoRmlsZVN5c3Rl
bTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vic2l0ZV9kYXRh
X21hbmFnZXJfZ2V0X2luZGV4ZWRkYl9kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2Vy
LmdldCgpKSkpOworICAgICAgICBjb25maWd1cmF0aW9uLnNldFdlYlNRTERhdGFiYXNlRGlyZWN0
b3J5KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0
X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF93ZWJzcWxfZGlyZWN0b3J5KHByaXYtPndlYnNpdGVE
YXRhTWFuYWdlci5nZXQoKSkpKTsKICAgICB9IGVsc2UgaWYgKCFwcml2LT5sb2NhbFN0b3JhZ2VE
aXJlY3RvcnkuaXNOdWxsKCkpCi0gICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0TG9jYWxTdG9yYWdl
RGlyZWN0b3J5KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24ocHJpdi0+bG9jYWxTdG9yYWdlRGlyZWN0b3J5LmRhdGEoKSkpOworICAgICAgICBj
b25maWd1cmF0aW9uLnNldExvY2FsU3RvcmFnZURpcmVjdG9yeShGaWxlU3lzdGVtOjpzdHJpbmdG
cm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPmxvY2FsU3RvcmFnZURpcmVjdG9yeS5k
YXRhKCkpKTsKIAogICAgIHByaXYtPnByb2Nlc3NQb29sID0gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0
ZShjb25maWd1cmF0aW9uKTsKIApAQCAtOTI0LDcgKzkyNCw3IEBAIHZvaWQgd2Via2l0X3dlYl9j
b250ZXh0X3NldF9mYXZpY29uX2RhdGFiYXNlX2RpcmVjdG9yeShXZWJLaXRXZWJDb250ZXh0KiBj
b250ZXh0CiAgICAgV2ViS2l0V2ViQ29udGV4dFByaXZhdGUqIHByaXYgPSBjb250ZXh0LT5wcml2
OwogICAgIGVuc3VyZUZhdmljb25EYXRhYmFzZShjb250ZXh0KTsKIAotICAgIFN0cmluZyBkaXJl
Y3RvcnlQYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihwYXRoKTsKKyAgICBTdHJpbmcgZGlyZWN0b3J5UGF0aCA9IEZpbGVTeXN0ZW06
OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAgICAgLy8gVXNlIGRl
ZmF1bHQgaWYgbnVsbHB0ciBpcyBwYXNzZWQgYXMgcGFyYW1ldGVyLgogICAgIGlmIChkaXJlY3Rv
cnlQYXRoLmlzRW1wdHkoKSkgewogI2lmIFBMQVRGT1JNKEdUSykKQEAgLTkzMyw3ICs5MzMsNyBA
QCB2b2lkIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfZmF2aWNvbl9kYXRhYmFzZV9kaXJlY3Rvcnko
V2ViS2l0V2ViQ29udGV4dCogY29udGV4dAogICAgICAgICBjb25zdCBjaGFyKiBwb3J0RGlyZWN0
b3J5ID0gIndwZSI7CiAjZW5kaWYKICAgICAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZGF0YWJhc2VE
aXJlY3RvcnkoZ19idWlsZF9maWxlbmFtZShnX2dldF91c2VyX2NhY2hlX2RpcigpLCBwb3J0RGly
ZWN0b3J5LCAiaWNvbmRhdGFiYXNlIiwgbnVsbHB0cikpOwotICAgICAgICBkaXJlY3RvcnlQYXRo
ID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihkYXRhYmFzZURpcmVjdG9yeS5nZXQoKSk7CisgICAgICAgIGRpcmVjdG9yeVBhdGggPSBGaWxl
U3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRhdGFiYXNlRGlyZWN0
b3J5LmdldCgpKTsKICAgICB9CiAgICAgcHJpdi0+ZmF2aWNvbkRhdGFiYXNlRGlyZWN0b3J5ID0g
ZGlyZWN0b3J5UGF0aC51dGY4KCk7CiAKQEAgLTk0Miw3ICs5NDIsNyBAQCB2b2lkIHdlYmtpdF93
ZWJfY29udGV4dF9zZXRfZmF2aWNvbl9kYXRhYmFzZV9kaXJlY3RvcnkoV2ViS2l0V2ViQ29udGV4
dCogY29udGV4dAogICAgICAgICAiV2VicGFnZUljb25zLmRiIiwgbnVsbHB0cikpOwogCiAgICAg
Ly8gU2V0dGluZyB0aGUgcGF0aCB3aWxsIGNhdXNlIHRoZSBpY29uIGRhdGFiYXNlIHRvIGJlIG9w
ZW5lZC4KLSAgICB3ZWJraXRGYXZpY29uRGF0YWJhc2VPcGVuKHByaXYtPmZhdmljb25EYXRhYmFz
ZS5nZXQoKSwgV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihmYXZpY29uRGF0YWJhc2VQYXRoLmdldCgpKSk7CisgICAgd2Via2l0RmF2aWNvbkRh
dGFiYXNlT3Blbihwcml2LT5mYXZpY29uRGF0YWJhc2UuZ2V0KCksIEZpbGVTeXN0ZW06OnN0cmlu
Z0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmF2aWNvbkRhdGFiYXNlUGF0aC5nZXQoKSkp
OwogCiAgICAgaWYgKHdlYmtpdF93ZWJfY29udGV4dF9pc19lcGhlbWVyYWwoY29udGV4dCkpCiAg
ICAgICAgIHdlYmtpdEZhdmljb25EYXRhYmFzZVNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQocHJp
di0+ZmF2aWNvbkRhdGFiYXNlLmdldCgpLCB0cnVlKTsKQEAgLTEwMjYsNyArMTAyNiw3IEBAIHZv
aWQgd2Via2l0X3dlYl9jb250ZXh0X3NldF9hZGRpdGlvbmFsX3BsdWdpbnNfZGlyZWN0b3J5KFdl
YktpdFdlYkNvbnRleHQqIGNvbnRlCiAgICAgZ19yZXR1cm5faWZfZmFpbChkaXJlY3RvcnkpOwog
CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0gICAgY29udGV4dC0+cHJpdi0+cHJv
Y2Vzc1Bvb2wtPnNldEFkZGl0aW9uYWxQbHVnaW5zRGlyZWN0b3J5KFdlYkNvcmU6OkZpbGVTeXN0
ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGlyZWN0b3J5KSk7CisgICAg
Y29udGV4dC0+cHJpdi0+cHJvY2Vzc1Bvb2wtPnNldEFkZGl0aW9uYWxQbHVnaW5zRGlyZWN0b3J5
KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGlyZWN0b3J5
KSk7CiAjZW5kaWYKIH0KIApAQCAtMTQxOCw3ICsxNDE4LDcgQEAgdm9pZCB3ZWJraXRfd2ViX2Nv
bnRleHRfc2V0X2Rpc2tfY2FjaGVfZGlyZWN0b3J5KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQs
IGNvbnMKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfQ09OVEVYVChjb250ZXh0
KSk7CiAgICAgZ19yZXR1cm5faWZfZmFpbChkaXJlY3RvcnkpOwogCi0gICAgY29udGV4dC0+cHJp
di0+cHJvY2Vzc1Bvb2wtPmNvbmZpZ3VyYXRpb24oKS5zZXREaXNrQ2FjaGVEaXJlY3RvcnkoV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVT
eXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGlyZWN0b3J5KSwgbmV0
d29ya0NhY2hlU3ViZGlyZWN0b3J5KSk7CisgICAgY29udGV4dC0+cHJpdi0+cHJvY2Vzc1Bvb2wt
PmNvbmZpZ3VyYXRpb24oKS5zZXREaXNrQ2FjaGVEaXJlY3RvcnkoRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZGlyZWN0b3J5KSwgbmV0d29ya0NhY2hlU3ViZGlyZWN0b3J5KSk7CiB9CiAjZW5k
aWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
V2Vic2l0ZURhdGFNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5jcHAKaW5kZXggN2UxZDE0YjY3Yjk1MzhmNDc1ZTBm
OGFmNDUwYWFiZGVmMmUyMTU1ZS4uMWNjMDY1NDExZTczMWZhNjcyYzQzNGYzYjNjMGFiZTlhNTY5
M2ViZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
V2Vic2l0ZURhdGFNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuY3BwCkBAIC0yNiw4ICsyNiw4IEBACiAjaW5j
bHVkZSAiV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktp
dFdlYnNpdGVEYXRhUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhRmV0Y2hPcHRpb24u
aCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxnbGliL2dpMThu
LWxpYi5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIv
R1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL1dURkdUeXBlLmg+CiAKQEAgLTM2Mywx
MyArMzYzLDEzIEBAIEFQSTo6V2Vic2l0ZURhdGFTdG9yZSYgd2Via2l0V2Vic2l0ZURhdGFNYW5h
Z2VyR2V0RGF0YVN0b3JlKFdlYktpdFdlYnNpdGVEYXRhTWFuCiAgICAgaWYgKCFwcml2LT53ZWJz
aXRlRGF0YVN0b3JlKSB7CiAgICAgICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IFdlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKICAgICAgICAgY29uZmlndXJhdGlvbi0+c2V0
TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCFwcml2LT5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPwotICAg
ICAgICAgICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0
b3J5KCkgOiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKHByaXYtPmxvY2FsU3RvcmFnZURpcmVjdG9yeS5nZXQoKSkpOworICAgICAgICAgICAg
QVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkgOiBG
aWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPmxvY2Fs
U3RvcmFnZURpcmVjdG9yeS5nZXQoKSkpOwogICAgICAgICBjb25maWd1cmF0aW9uLT5zZXROZXR3
b3JrQ2FjaGVEaXJlY3RvcnkoIXByaXYtPmRpc2tDYWNoZURpcmVjdG9yeSA/Ci0gICAgICAgICAg
ICBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKSA6
IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpG
aWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPmRpc2tD
YWNoZURpcmVjdG9yeS5nZXQoKSksIG5ldHdvcmtDYWNoZVN1YmRpcmVjdG9yeSkpOworICAgICAg
ICAgICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5
KCkgOiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6c3Ry
aW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5kaXNrQ2FjaGVEaXJlY3Rvcnku
Z2V0KCkpLCBuZXR3b3JrQ2FjaGVTdWJkaXJlY3RvcnkpKTsKICAgICAgICAgY29uZmlndXJhdGlv
bi0+c2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSghcHJpdi0+YXBwbGljYXRpb25DYWNoZURp
cmVjdG9yeSA/Ci0gICAgICAgICAgICBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBs
aWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkgOiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9t
RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnku
Z2V0KCkpKTsKKyAgICAgICAgICAgIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxp
Y2F0aW9uQ2FjaGVEaXJlY3RvcnkoKSA6IEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24ocHJpdi0+YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeS5nZXQoKSkpOwog
ICAgICAgICBjb25maWd1cmF0aW9uLT5zZXRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSghcHJpdi0+
d2ViU1FMRGlyZWN0b3J5ID8KLSAgICAgICAgICAgIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkgOiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJp
bmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPndlYlNRTERpcmVjdG9yeS5nZXQo
KSkpOworICAgICAgICAgICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0V2ViU1FMRGF0
YWJhc2VEaXJlY3RvcnkoKSA6IEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24ocHJpdi0+d2ViU1FMRGlyZWN0b3J5LmdldCgpKSk7CiAgICAgICAgIGNvbmZpZ3Vy
YXRpb24tPnNldE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoQVBJOjpXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpKTsKICAgICAgICAgcHJpdi0+d2Vi
c2l0ZURhdGFTdG9yZSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlTGVnYWN5KFdURk1v
dmUoY29uZmlndXJhdGlvbikpOwogICAgIH0KQEAgLTUzMiw3ICs1MzIsNyBAQCBjb25zdCBnY2hh
ciogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9kaXNrX2NhY2hlX2RpcmVjdG9yeShX
ZWJLaXRXZWJzaXRlRAogCiAgICAgaWYgKCFwcml2LT5kaXNrQ2FjaGVEaXJlY3RvcnkpIHsKICAg
ICAgICAgLy8gVGhlIGRlZmF1bHQgZGlyZWN0b3J5IGFscmVhZHkgaGFzIHRoZSBzdWJkaXJlY3Rv
cnkuCi0gICAgICAgIHByaXYtPmRpc2tDYWNoZURpcmVjdG9yeS5yZXNldChnX3N0cmR1cChXZWJD
b3JlOjpGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpKS51dGY4KCkuZGF0YSgpKSk7CisgICAgICAgIHBy
aXYtPmRpc2tDYWNoZURpcmVjdG9yeS5yZXNldChnX3N0cmR1cChGaWxlU3lzdGVtOjpkaXJlY3Rv
cnlOYW1lKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9y
eSgpKS51dGY4KCkuZGF0YSgpKSk7CiAgICAgfQogICAgIHJldHVybiBwcml2LT5kaXNrQ2FjaGVE
aXJlY3RvcnkuZ2V0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvd2luL0FQSVdlYnNpdGVEYXRhU3RvcmVXaW4uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL3dpbi9BUElXZWJzaXRlRGF0YVN0b3JlV2luLmNwcAppbmRleCAxOWJlMjg4ZDQ4MmRh
YWZkZDE4ZTRjZmRmZWRjZTIwM2FhYzc1YmRkLi4zMjI1YjkyMTcwZDdjOThiNGJlODQ1YWNjZmU4
ZDhjMWIzNjdkN2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd2lu
L0FQSVdlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS93aW4vQVBJV2Vic2l0ZURhdGFTdG9yZVdpbi5jcHAKQEAgLTI2LDQzICsyNiw0MyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKIAot
I2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVt
Lmg+CiAKIG5hbWVzcGFjZSBBUEkgewogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKQogewotICAgIHJldHVybiBXZWJDb3JlOjpGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6bG9j
YWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJBcHBsaWNhdGlvbkNhY2hlIik7Cisg
ICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVt
Ojpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkFwcGxpY2F0aW9uQ2FjaGUi
KTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRDYWNoZVN0b3JhZ2VEaXJl
Y3RvcnkoKQogewotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdl
RGlyZWN0b3J5KCksICJDYWNoZVN0b3JhZ2UiKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFn
ZURpcmVjdG9yeSgpLCAiQ2FjaGVTdG9yYWdlIik7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0
b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0
ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiTmV0d29ya0NhY2hlIik7
CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lz
dGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIk5ldHdvcmtDYWNoZSIp
OwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNl
RGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3Rv
cmFnZURpcmVjdG9yeSgpLCAiSW5kZXhlZERCIik7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3Jh
Z2VEaXJlY3RvcnkoKSwgIkluZGV4ZWREQiIpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKQogewotICAgIHJl
dHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJTZXJ2
aWNlV29ya2VycyIpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJT
ZXJ2aWNlV29ya2VycyIpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExv
Y2FsU3RvcmFnZURpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpsb2NhbFVzZXJT
cGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkxvY2FsU3RvcmFnZSIpOworICAgIHJldHVybiBG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2Vy
U3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJMb2NhbFN0b3JhZ2UiKTsKIH0KIAogU3RyaW5n
IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkKIHsK
LSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgp
LCAiTWVkaWFLZXlTdG9yYWdlIik7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3Rv
cnkoKSwgIk1lZGlhS2V5U3RvcmFnZSIpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpCkBAIC03Myw1NyArNzMs
NTcgQEAgU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0
b3JhZ2VEaXJlY3RvcnkoKQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNR
TERhdGFiYXNlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmxvY2FsVXNlclNw
ZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiV2ViU1FMIik7CisgICAgcmV0dXJuIEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZp
Y1N0b3JhZ2VEaXJlY3RvcnkoKSwgIldlYlNRTCIpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKQogewotICAgIHJl
dHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzIik7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3Rv
cnkoKSwgIlJlc291cmNlTG9hZFN0YXRpc3RpY3MiKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRh
U3RvcmU6OmNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmlu
ZyYgZGlyZWN0b3J5TmFtZSkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNp
ZmljU3RvcmFnZURpcmVjdG9yeSgpLCBkaXJlY3RvcnlOYW1lKTsKKyAgICByZXR1cm4gRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNp
ZmljU3RvcmFnZURpcmVjdG9yeSgpLCBkaXJlY3RvcnlOYW1lKTsKIH0KIAogU3RyaW5nIFdlYnNp
dGVEYXRhU3RvcmU6OndlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5TmFtZSkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06Omxv
Y2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCBkaXJlY3RvcnlOYW1lKTsKKyAgICBy
ZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06Omxv
Y2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCBkaXJlY3RvcnlOYW1lKTsKIH0KIAog
U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGly
ZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFn
ZURpcmVjdG9yeSgpLCAiQXBwbGljYXRpb25DYWNoZSIpOworICAgIHJldHVybiBGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNT
dG9yYWdlRGlyZWN0b3J5KCksICJBcHBsaWNhdGlvbkNhY2hlIik7CiB9CiAKIFN0cmluZyBXZWJz
aXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkKIHsKLSAg
ICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdl
YkNvcmU6OkZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAi
TmV0d29ya0NhY2hlIik7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwg
Ik5ldHdvcmtDYWNoZSIpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVm
YXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06Omxv
Y2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiV2ViU1FMIik7CisgICAgcmV0dXJu
IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVz
ZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIldlYlNRTCIpOwogfQogCiBTdHJpbmcgV2Vi
c2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkK
IHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9y
eSgpLCAiSW5kZXhlZERCIik7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3Rvcnko
KSwgIkluZGV4ZWREQiIpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVm
YXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpsb2Nh
bFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkxvY2FsU3RvcmFnZSIpOworICAgIHJl
dHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9j
YWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJMb2NhbFN0b3JhZ2UiKTsKIH0KIAog
U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5
KCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVj
dG9yeSgpLCAiTWVkaWFDYWNoZSIpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0
b3J5KCksICJNZWRpYUNhY2hlIik7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdh
Y3lEZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIFdlYkNv
cmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lz
dGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIk1lZGlhS2V5U3RvcmFn
ZSIpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmls
ZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJNZWRpYUtleVN0
b3JhZ2UiKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHREZXZp
Y2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKQpAQCAtMTM0LDcgKzEzNCw3IEBAIFN0cmlu
ZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdl
RGlyZWN0b3J5KCkKIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRKYXZh
U2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjps
b2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkphdmFTY3JpcHRDb3JlRGVidWci
KTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVT
eXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiSmF2YVNjcmlwdENv
cmVEZWJ1ZyIpOwogfQogCiBSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bj4gV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24oKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9u
U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9t
YXRpb25TZXNzaW9uLmNwcAppbmRleCA4MDU0N2U2YmUxMzg2NTVmMDc5OGI2NzZkYzEyZGM5YWIz
M2FjZjFiLi5mODg0NGFmZTZkMjJlNGNkNWVlMjA4MTQ4YjRmNDkyZjdjYzYzMTBkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNz
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9t
YXRpb25TZXNzaW9uLmNwcApAQCAtODA2LDcgKzgwNiw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNl
c3Npb246OndpbGxDbG9zZVBhZ2UoY29uc3QgV2ViUGFnZVByb3h5JiBwYWdlKQogCiBzdGF0aWMg
Ym9vbCBmaWxlQ2FuQmVBY2NlcHRlZEZvclVwbG9hZChjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBj
b25zdCBIYXNoU2V0PFN0cmluZz4mIGFsbG93ZWRNSU1FVHlwZXMsIGNvbnN0IEhhc2hTZXQ8U3Ry
aW5nPiYgYWxsb3dlZEZpbGVFeHRlbnNpb25zKQogewotICAgIGlmICghV2ViQ29yZTo6RmlsZVN5
c3RlbTo6ZmlsZUV4aXN0cyhmaWxlbmFtZSkpCisgICAgaWYgKCFGaWxlU3lzdGVtOjpmaWxlRXhp
c3RzKGZpbGVuYW1lKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGFsbG93ZWRN
SU1FVHlwZXMuaXNFbXB0eSgpICYmIGFsbG93ZWRGaWxlRXh0ZW5zaW9ucy5pc0VtcHR5KCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tCmluZGV4
IDNiNDk2MjhmZGY2ZGZjNWFhZGQwMjlkNWEyY2JjYjZiZmI3OGNmYzEuLmM3MjdiZDIzZWY5NTUy
NTFmNzk4MDlkNjljNTgyMzIxOTdhZjFlYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tCkBAIC00MiwxMCArNDIsMTAgQEAKICNpbXBvcnQg
IldlYlByb2Nlc3NQcm94eS5oIgogI2ltcG9ydCAiX1dLRG93bmxvYWREZWxlZ2F0ZS5oIgogI2lt
cG9ydCAiX1dLRG93bmxvYWRJbnRlcm5hbC5oIgotI2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVt
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbXBvcnQgPFdlYkNvcmUv
UmVzb3VyY2VSZXNwb25zZS5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CisjaW1wb3J0IDx3
dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtMTgxLDcgKzE4MSw3
IEBAIHZvaWQgRG93bmxvYWRDbGllbnQ6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZp
bGVuYW1lKFdlYlByb2Nlc3NQb29sJiwgRG93CiB7CiAjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQog
ICAgIGlmIChkb3dubG9hZFByb3h5LmlzU3lzdGVtUHJldmlld0Rvd25sb2FkKCkpIHsKLSAgICAg
ICAgTlNTdHJpbmcgKnRlbXBvcmFyeURpcmVjdG9yeSA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmNy
ZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShAIlN5c3RlbVByZXZpZXdzIik7CisgICAgICAgIE5TU3Ry
aW5nICp0ZW1wb3JhcnlEaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpjcmVhdGVUZW1wb3JhcnlEaXJl
Y3RvcnkoQCJTeXN0ZW1QcmV2aWV3cyIpOwogICAgICAgICBOU1N0cmluZyAqZGVzdGluYXRpb24g
PSBbdGVtcG9yYXJ5RGlyZWN0b3J5IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpmaWxl
bmFtZV07CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKEFsbG93T3ZlcndyaXRlOjpZZXMsIGRl
c3RpbmF0aW9uKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KaW5kZXggNTZjZjBmZDA1OTBjNjE1
NDNkMzQxMGY4NGY2NmQxOWM3ZWQ4NTFiZi4uMmRhZjc1NTcxY2NiMWE5ZDcwNWJhYTA1N2FkNjI0
YTVhNjk4YTQzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2Vi
UHJvY2Vzc1Bvb2xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJQcm9jZXNzUG9vbENvY29hLm1tCkBAIC00Myw3ICs0Myw2IEBACiAjaW1wb3J0ICJXZWJQcm9j
ZXNzTWVzc2FnZXMuaCIKICNpbXBvcnQgIldpbmRvd1NlcnZlckNvbm5lY3Rpb24uaCIKICNpbXBv
cnQgPFdlYkNvcmUvQ29sb3IuaD4KLSNpbXBvcnQgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2lt
cG9ydCA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KICNpbXBvcnQgPFdlYkNvcmUv
Tm90SW1wbGVtZW50ZWQuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1QYXN0ZWJvYXJkLmg+
CkBAIC01Miw2ICs1MSw3IEBACiAjaW1wb3J0IDxwYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oPgog
I2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0tleWVkQXJjaGl2ZXJTUEkuaD4KICNpbXBvcnQgPHN5
cy9wYXJhbS5oPgorI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0Zi9Qcm9j
ZXNzUHJpdmlsZWdlLmg+CiAjaW1wb3J0IDx3dGYvY29jb2EvRW50aXRsZW1lbnRzLmg+CiAjaW1w
b3J0IDx3dGYvc3BpL2Rhcndpbi9keWxkU1BJLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IDA2NGUwZGZkOTBmZjZiYjlkZGMzYWI0NDJlYzhj
ZGE2OWFhMmQ5NmQuLjE2MDk1YThiZDE1NjQ4ODQ5YzZhZWIxMzExNjVlNjM3NGZlMGU4YmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCkBAIC04NCw3
ICs4NCw2IEBACiAjaW1wb3J0IDxXZWJDb3JlL0RyYWdEYXRhLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0RyYWdJdGVtLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0VkaXRvci5oPgotI2ltcG9ydCA8V2ViQ29y
ZS9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZvbnRBdHRyaWJ1dGVDaGFuZ2VzLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0ZvbnRBdHRyaWJ1dGVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0tl
eXByZXNzQ29tbWFuZC5oPgpAQCAtMTE1LDYgKzExNCw3IEBACiAjaW1wb3J0IDxwYWwvc3BpL21h
Yy9OU1ZpZXdTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvbWFjL05TV2luZG93U1BJLmg+CiAjaW1w
b3J0IDxzeXMvc3RhdC5oPgorI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgogI2ltcG9ydCA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KICNp
bXBvcnQgPHd0Zi9TZXRGb3JTY29wZS5oPgpAQCAtMzk2OSw3ICszOTY5LDcgQEAgYm9vbCBXZWJW
aWV3SW1wbDo6cGVyZm9ybURyYWdPcGVyYXRpb24oaWQgPE5TRHJhZ2dpbmdJbmZvPiBkcmFnZ2lu
Z0luZm8pCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAotICAgICAgICBO
U1N0cmluZyAqZHJvcERlc3RpbmF0aW9uUGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmNyZWF0
ZVRlbXBvcmFyeURpcmVjdG9yeShAIldlYktpdERyb3BEZXN0aW5hdGlvbiIpOworICAgICAgICBO
U1N0cmluZyAqZHJvcERlc3RpbmF0aW9uUGF0aCA9IEZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFy
eURpcmVjdG9yeShAIldlYktpdERyb3BEZXN0aW5hdGlvbiIpOwogICAgICAgICBpZiAoIWRyb3BE
ZXN0aW5hdGlvblBhdGgpIHsKICAgICAgICAgICAgIGRlbGV0ZSBkcmFnRGF0YTsKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTQyOTEsNyArNDI5MSw3IEBAIE5TQXJyYXkgKldlYlZpZXdJ
bXBsOjpuYW1lc09mUHJvbWlzZWRGaWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9uKE5TVVJMICpkcm9w
RGVzdGluCiAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBpbWFnZSBmaWxlIHZp
YSAtW05TRmlsZVdyYXBwZXIgd3JpdGVUb1VSTDpvcHRpb25zOm9yaWdpbmFsQ29udGVudHNVUkw6
ZXJyb3I6XSIpOwogCiAgICAgaWYgKCFtX3Byb21pc2VkVVJMLmlzRW1wdHkoKSkKLSAgICAgICAg
V2ViQ29yZTo6RmlsZVN5c3RlbTo6c2V0TWV0YWRhdGFVUkwoU3RyaW5nKHBhdGgpLCBtX3Byb21p
c2VkVVJMKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6c2V0TWV0YWRhdGFVUkwoU3RyaW5nKHBhdGgp
LCBtX3Byb21pc2VkVVJMKTsKICAgICAKICAgICByZXR1cm4gW05TQXJyYXkgYXJyYXlXaXRoT2Jq
ZWN0OltwYXRoIGxhc3RQYXRoQ29tcG9uZW50XV07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5jcHAKaW5kZXggZTYwZWUzZjRmOTRi
MDMyZDM5OWI3YTM3N2E3ZThmOWNjYTIzNzUxZC4uMTlhN2ExMmNmYTNmMzFiZjFlMjEzN2MzNWNk
NTdkMGE1MDdiOWE5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRGV2aWNl
SWRIYXNoU2FsdFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rldmlj
ZUlkSGFzaFNhbHRTdG9yYWdlLmNwcApAQCAtMjgsOSArMjgsOSBAQAogCiAjaW5jbHVkZSAiUGVy
c2lzdGVuY3lVdGlscy5oIgogCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhp
Y2FsbHlSYW5kb21OdW1iZXIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1
ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcAppbmRleCA3NTEwMmVlM2IwMDQyNGE0ODA5
NDE1ZjM2YjA0ZWQzYjUzY2FkMTQ4Li5lMDkyNTRiMDE4NzI0OWM5OTJmYzJmY2Q3Mjg4OGU3ODRi
MTkzMzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkUHJveHkuY3BwCkBAIC0zNiw4ICszNiw4IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01l
c3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNsdWRlICJXZWJQcm90
ZWN0aW9uU3BhY2UuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRl
IDxXZWJDb3JlL01JTUVUeXBlUmVnaXN0cnkuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIv
Z2xpYi9CdWJibGV3cmFwTGF1bmNoZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1
bmNoZXIvZ2xpYi9CdWJibGV3cmFwTGF1bmNoZXIuY3BwCmluZGV4IGU0MzRlMDMzMzk4N2E5Mjc0
OWMwMGRkYzViNTMzNjA5MDRkZWYxYmUuLjE2NzIzZGZkZGE0ZmFkYmI5MmFhN2VhMGE4ZTZhZTU4
ODRmMmQwNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL2ds
aWIvQnViYmxld3JhcExhdW5jaGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9M
YXVuY2hlci9nbGliL0J1YmJsZXdyYXBMYXVuY2hlci5jcHAKQEAgLTIwLDEyICsyMCwxMiBAQAog
CiAjaWYgRU5BQkxFKEJVQkJMRVdSQVBfU0FOREJPWCkKIAotI2luY2x1ZGUgPFdlYkNvcmUvRmls
ZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1EaXNwbGF5Lmg+CiAjaW5jbHVk
ZSA8ZmNudGwuaD4KICNpbmNsdWRlIDxnbGliLmg+CiAjaW5jbHVkZSA8c2VjY29tcC5oPgogI2lu
Y2x1ZGUgPHN5cy9pb2N0bC5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVk
ZSA8d3RmL2dsaWIvR0xpYlV0aWxpdGllcy5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIu
aD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9nbGliL1Byb2Nlc3NMYXVuY2hlckdMaWIuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9Qcm9jZXNzTGF1bmNoZXJHTGli
LmNwcAppbmRleCBjNTY2MTg3M2EwNWU3MTA5YjUxN2VhNzViZGZhYmNjZDhmMjNmYjg2Li4wYzM5
MDczZmUxZGU3YWRhZjUzMTI2ODNkODE2NDYyZjY0ZDNlYzZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9nbGliL1Byb2Nlc3NMYXVuY2hlckdMaWIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvUHJvY2Vzc0xhdW5jaGVy
R0xpYi5jcHAKQEAgLTMxLDEwICszMSwxMCBAQAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNp
bmNsdWRlICJGbGF0cGFrTGF1bmNoZXIuaCIKICNpbmNsdWRlICJQcm9jZXNzRXhlY3V0YWJsZVBh
dGguaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxlcnJuby5o
PgogI2luY2x1ZGUgPGZjbnRsLmg+CiAjaW5jbHVkZSA8Z2xpYi5oPgorI2luY2x1ZGUgPHd0Zi9G
aWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYvVW5p
U3RkRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR0xpYlV0aWxpdGllcy5oPgpAQCAtNDcs
NyArNDcsNiBAQAogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQgewotdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKIHN0YXRpYyB2b2lkIGNoaWxkU2V0dXBGdW5jdGlvbihncG9pbnRlciB1c2Vy
RGF0YSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvZ3Rr
L1BsdWdpbkluZm9DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL2d0
ay9QbHVnaW5JbmZvQ2FjaGUuY3BwCmluZGV4IDgwNjQ3ZWIxMmVlNTI1MTFhMTE5ZTg1ZmRlMmY1
OWM0ZTIzNzc4ODUuLmEyOGEwMGEzODZjYWZlY2IzNzgyYTQxMTAzN2NhOWE1MzVkYzIyMDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1BsdWdpbkluZm9D
YWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9ndGsvUGx1Z2lu
SW5mb0NhY2hlLmNwcApAQCAtMjksOCArMjksOCBAQAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVH
SU5fQVBJKQogCiAjaW5jbHVkZSAiTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaCIKLSNpbmNsdWRlIDxX
ZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtRGlzcGxheS5o
PgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTY2LDEwICs2NiwxMCBAQCBQbHVnaW5JbmZv
Q2FjaGU6OlBsdWdpbkluZm9DYWNoZSgpCiAgICAgbV9zYXZlVG9GaWxlSWRsZS5zZXRQcmlvcml0
eShHX1BSSU9SSVRZX0RFRkFVTFRfSURMRSk7CiAKICAgICBHVW5pcXVlUHRyPGNoYXI+IGNhY2hl
RGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9jYWNoZV9kaXIoKSwgIndlYmtp
dGd0ayIsIG51bGxwdHIpKTsKLSAgICBpZiAoV2ViQ29yZTo6RmlsZVN5c3RlbTo6bWFrZUFsbERp
cmVjdG9yaWVzKGNhY2hlRGlyZWN0b3J5LmdldCgpKSkgeworICAgIGlmIChGaWxlU3lzdGVtOjpt
YWtlQWxsRGlyZWN0b3JpZXMoY2FjaGVEaXJlY3RvcnkuZ2V0KCkpKSB7CiAgICAgICAgIC8vIERl
bGV0ZSBvbGQgY2FjaGUgZmlsZS4KICAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBvbGRDYWNoZVBh
dGgoZ19idWlsZF9maWxlbmFtZShjYWNoZURpcmVjdG9yeS5nZXQoKSwgInBsdWdpbnMiLCBudWxs
cHRyKSk7Ci0gICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoV2ViQ29yZTo6
RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihvbGRDYWNoZVBh
dGguZ2V0KCkpKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShGaWxlU3lzdGVtOjpz
dHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKG9sZENhY2hlUGF0aC5nZXQoKSkpOwog
CiAgICAgICAgIG1fY2FjaGVQYXRoLnJlc2V0KGdfYnVpbGRfZmlsZW5hbWUoY2FjaGVEaXJlY3Rv
cnkuZ2V0KCksIGNhY2hlRmlsZW5hbWVGb3JDdXJyZW50RGlzcGxheSgpLCBudWxscHRyKSk7CiAg
ICAgICAgIGdfa2V5X2ZpbGVfbG9hZF9mcm9tX2ZpbGUobV9jYWNoZUZpbGUuZ2V0KCksIG1fY2Fj
aGVQYXRoLmdldCgpLCBHX0tFWV9GSUxFX05PTkUsIG51bGxwdHIpOwpAQCAtMTEyLDcgKzExMiw3
IEBAIGJvb2wgUGx1Z2luSW5mb0NhY2hlOjpnZXRQbHVnaW5JbmZvKGNvbnN0IFN0cmluZyYgcGx1
Z2luUGF0aCwgUGx1Z2luTW9kdWxlSW5mbyYKICAgICBpZiAoIWdfa2V5X2ZpbGVfaGFzX2dyb3Vw
KG1fY2FjaGVGaWxlLmdldCgpLCBwbHVnaW5Hcm91cC5kYXRhKCkpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICBhdXRvIGxhc3RNb2RpZmllZFRpbWUgPSBXZWJDb3JlOjpGaWxlU3lzdGVt
OjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShwbHVnaW5QYXRoKTsKKyAgICBhdXRvIGxhc3RNb2Rp
ZmllZFRpbWUgPSBGaWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShwbHVnaW5QYXRo
KTsKICAgICBpZiAoIWxhc3RNb2RpZmllZFRpbWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB0aW1lX3QgY2FjaGVkTGFzdE1vZGlmaWVkID0gc3RhdGljX2Nhc3Q8dGltZV90PihnX2tleV9m
aWxlX2dldF91aW50NjQobV9jYWNoZUZpbGUuZ2V0KCksIHBsdWdpbkdyb3VwLmRhdGEoKSwgIm10
aW1lIiwgbnVsbHB0cikpOwpAQCAtMTIwLDcgKzEyMCw3IEBAIGJvb2wgUGx1Z2luSW5mb0NhY2hl
OjpnZXRQbHVnaW5JbmZvKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgUGx1Z2luTW9kdWxlSW5m
byYKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcGx1Z2luLnBhdGggPSBwbHVnaW5QYXRo
OwotICAgIHBsdWdpbi5pbmZvLmZpbGUgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoR2V0Rmls
ZU5hbWUocGx1Z2luUGF0aCk7CisgICAgcGx1Z2luLmluZm8uZmlsZSA9IEZpbGVTeXN0ZW06OnBh
dGhHZXRGaWxlTmFtZShwbHVnaW5QYXRoKTsKIAogICAgIEdVbmlxdWVQdHI8Y2hhcj4gc3RyaW5n
VmFsdWUoZ19rZXlfZmlsZV9nZXRfc3RyaW5nKG1fY2FjaGVGaWxlLmdldCgpLCBwbHVnaW5Hcm91
cC5kYXRhKCksICJuYW1lIiwgbnVsbHB0cikpOwogICAgIHBsdWdpbi5pbmZvLm5hbWUgPSBTdHJp
bmc6OmZyb21VVEY4KHN0cmluZ1ZhbHVlLmdldCgpKTsKQEAgLTE0MCw3ICsxNDAsNyBAQCBib29s
IFBsdWdpbkluZm9DYWNoZTo6Z2V0UGx1Z2luSW5mbyhjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgs
IFBsdWdpbk1vZHVsZUluZm8mCiAKIHZvaWQgUGx1Z2luSW5mb0NhY2hlOjp1cGRhdGVQbHVnaW5J
bmZvKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYgcGx1
Z2luKQogewotICAgIGF1dG8gbGFzdE1vZGlmaWVkVGltZSA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06
OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKHBsdWdpblBhdGgpOworICAgIGF1dG8gbGFzdE1vZGlm
aWVkVGltZSA9IEZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKHBsdWdpblBhdGgp
OwogICAgIGlmICghbGFzdE1vZGlmaWVkVGltZSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5Qcm9jZXNzUHJv
eHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5Qcm9j
ZXNzUHJveHlNYWMubW0KaW5kZXggODlmYWI1ZWNiNjY2ZDJiNDRmY2MyMjM5ZWJlNWJhNWVlMWFj
NjNkOC4uMzYzM2MyYWIwNzA2MDExZWJkN2JjMTNmMWEwYmZkYTVhZDZkZDliYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2luUHJvY2Vzc1Byb3h5
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvbWFjL1BsdWdpblBy
b2Nlc3NQcm94eU1hYy5tbQpAQCAtMzMsMTEgKzMzLDExIEBACiAjaW1wb3J0ICJQbHVnaW5Qcm9j
ZXNzTWVzc2FnZXMuaCIKICNpbXBvcnQgIlNhbmRib3hVdGlsaXRpZXMuaCIKICNpbXBvcnQgPFF1
YXJ0ekNvcmUvQ0FSZW1vdGVMYXllclNlcnZlci5oPgotI2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lz
dGVtLmg+CiAjaW1wb3J0IDxjcnRfZXh0ZXJucy5oPgogI2ltcG9ydCA8bWFjaC1vL2R5bGQuaD4K
ICNpbXBvcnQgPHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg+CiAjaW1wb3J0IDxzcGF3bi5oPgor
I2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0Zi9Qcm9jZXNzUHJpdmlsZWdl
Lmg+CiAjaW1wb3J0IDx3dGYvVVJMLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBA
IC01Nyw4ICs1Nyw2IEBAIC0gKEJPT0wpX3dhbnRzVXNlckF0dGVudGlvbgogQGVuZAogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCiAgICAgCiB2b2lkIFBs
dWdpblByb2Nlc3NQcm94eTo6cGxhdGZvcm1HZXRMYXVuY2hPcHRpb25zV2l0aEF0dHJpYnV0ZXMo
UHJvY2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zJiBsYXVuY2hPcHRpb25zLCBjb25zdCBQbHVn
aW5Qcm9jZXNzQXR0cmlidXRlcyYgcGx1Z2luUHJvY2Vzc0F0dHJpYnV0ZXMpCiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luSW5mb1N0b3Jl
VW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luSW5m
b1N0b3JlVW5peC5jcHAKaW5kZXggMWRmZDgwN2MxMjM5YzMwNzllZjkyNDA3NDUwYjg5ZWM5MTE5
Y2YwYy4uYWEwOTQ3MzY4MTY1NGE5ZWY2NDQwNmIyYzY0MzkwM2Y3ZTAxMjYzZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpbkluZm9TdG9yZVVu
aXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5J
bmZvU3RvcmVVbml4LmNwcApAQCAtMzQsMTAgKzM0LDEwIEBACiAjaW5jbHVkZSAiTmV0c2NhcGVQ
bHVnaW5Nb2R1bGUuaCIKICNpbmNsdWRlICJQbHVnaW5TZWFyY2hQYXRoLmgiCiAjaW5jbHVkZSAi
UHJvY2Vzc0V4ZWN1dGFibGVQYXRoLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybURpc3BsYXkuaD4KICNpbmNsdWRlIDxsaW1pdHMu
aD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiAj
aWYgUExBVEZPUk0oR1RLKQogI2luY2x1ZGUgIlBsdWdpbkluZm9DYWNoZS5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpblByb2Nlc3NQcm94
eVVuaXguY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpblBy
b2Nlc3NQcm94eVVuaXguY3BwCmluZGV4IGY4OTYxMjE3MGQwMTExNjA0MzJlZWVlYTNkOWI4OGEz
NTM4YjcxMjIuLmM1MDBjMGZjZWE2Mjc4ODZiYWRkZGMzZmM5NTBjNmM0ZWEzOGJjMGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNz
UHJveHlVbml4LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgv
UGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAKQEAgLTMyLDkgKzMyLDkgQEAKIAogI2luY2x1ZGUg
IlBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJQcm9jZXNzRXhl
Y3V0YWJsZVBhdGguaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1BsYXRmb3JtRGlzcGxheS5oPgogI2luY2x1ZGUgPHN5cy93YWl0Lmg+CisjaW5j
bHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5jcHAKaW5kZXggNzI2ODgzYjNj
ZjgwZjQ4ZjJkYmZhNTYzZmM5YmY3YzU1ZDU3MDA2Zi4uNWJjZGE2M2E4NmIwZTFmOGU5NjQ2MTk0
MzA5OTI2Y2JhNTFmMmQxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2Vy
dmljZVdvcmtlclByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
U2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgU2VydmljZVdv
cmtlclByb2Nlc3NQcm94eTo6flNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkoKQogYm9vbCBTZXJ2
aWNlV29ya2VyUHJvY2Vzc1Byb3h5OjpoYXNSZWdpc3RlcmVkU2VydmljZVdvcmtlcnMoY29uc3Qg
U3RyaW5nJiBzZXJ2aWNlV29ya2VyRGlyZWN0b3J5KQogewogICAgIFN0cmluZyByZWdpc3RyYXRp
b25GaWxlID0gV2ViQ29yZTo6c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGFiYXNlRmlsZW5h
bWUoc2VydmljZVdvcmtlckRpcmVjdG9yeSk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0
ZW06OmZpbGVFeGlzdHMocmVnaXN0cmF0aW9uRmlsZSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06
OmZpbGVFeGlzdHMocmVnaXN0cmF0aW9uRmlsZSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlclBy
b2Nlc3NQcm94eTo6Z2V0TGF1bmNoT3B0aW9ucyhQcm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlv
bnMmIGxhdW5jaE9wdGlvbnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwCmluZGV4IDBjMjVkNjU3ZTk3
NzZhNzQ3NGQyMDU1ZmRmNTQ4NzJhMDBkOGVkZGIuLjQ2ZmI2Yzc3Mjk0ZjNjNjMxZDRmZmZkZmMy
NGExNDhmNzA4YTQ0Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlN0
b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwCkBAIC0yNywxMiArMjcsMTIg
QEAKICNpbmNsdWRlICJMb2NhbFN0b3JhZ2VEYXRhYmFzZS5oIgogCiAjaW5jbHVkZSAiTG9jYWxT
dG9yYWdlRGF0YWJhc2VUcmFja2VyLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVTdGF0ZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1NRTGl0ZVRyYW5zYWN0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU3RvcmFnZU1hcC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3Vk
ZGVuVGVybWluYXRpb24uaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nSGFzaC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3BwCmlu
ZGV4IGFmZmQ3ZThhY2FlMmRlY2I1Yzg0NGU4NzNiNTZmN2QxNTNkMGFjOTYuLmMzNzgxZGY2NzY5
MDBjNjk0YmUxNGJmZTZhZTM2NDliYzE4ODkwYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNl
VHJhY2tlci5jcHAKQEAgLTI3LDEwICsyNywxMCBAQAogI2luY2x1ZGUgIkxvY2FsU3RvcmFnZURh
dGFiYXNlVHJhY2tlci5oIgogCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUgPFdlYkNv
cmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlRmlsZVN5c3RlbS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlU3RhdGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9U
ZXh0RW5jb2RpbmcuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0
Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYv
V29ya1F1ZXVlLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KaW5kZXggNDI3
YTljODVhM2I5ODQ1YWU0Zjc1NGZiNGM3YTM5MjYzYzhjMTdjOS4uNjE5MDA1MDAwNThkNWE4ZTA3
NDhjYjM2MmMxZjc2YjQ0NTRlMmIyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2Nv
YS5tbQpAQCAtMzAsMTAgKzMwLDEwIEBACiAjaW1wb3J0ICJTdG9yYWdlTWFuYWdlci5oIgogI2lt
cG9ydCAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCiAjaW1wb3J0ICJXZWJzaXRl
RGF0YVN0b3JlUGFyYW1ldGVycy5oIgotI2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9TZWFyY2hQb3B1cE1lbnVDb2NvYS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5ldHdv
cmtTUEkuaD4KKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KICNpbXBvcnQgPHd0Zi9Qcm9jZXNzUHJpdmlsZWdlLmg+CiAKQEAgLTEyMSw3
ICsxMjEsNyBAQCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0b3JlOjpw
YXJhbWV0ZXJzKCkKICAgICBwYXJhbWV0ZXJzLnBlbmRpbmdDb29raWVzID0gY29weVRvVmVjdG9y
KG1fcGVuZGluZ0Nvb2tpZXMpOwogCiAgICAgaWYgKCFjb29raWVGaWxlLmlzRW1wdHkoKSkKLSAg
ICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5
KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUoY29va2llRmlsZSksIHBhcmFtZXRl
cnMuY29va2llU3RvcmFnZVBhdGhFeHRlbnNpb25IYW5kbGUpOworICAgICAgICBTYW5kYm94RXh0
ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkoRmlsZVN5c3RlbTo6ZGly
ZWN0b3J5TmFtZShjb29raWVGaWxlKSwgcGFyYW1ldGVycy5jb29raWVTdG9yYWdlUGF0aEV4dGVu
c2lvbkhhbmRsZSk7CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICBwYXJhbWV0
ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSA9IHJlc29sdmVkSW5kZXhlZERhdGFiYXNlRGly
ZWN0b3J5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IDIxYzI3YjgzMTgxMDVmYzYxYmFhZjZmMDA2
NjNiNmUyNWU2NjkwZmEuLjRmODk2NDE0ODBhMzE0MTk3ZTQ1MTA2YzFmNTRhMDgwYThlZGVkNTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmUuY3BwCkBAIC00NCw3ICs0NCw2IEBACiAjaW5jbHVkZSAiV2Vic2l0ZURh
dGFTdG9yZVBhcmFtZXRlcnMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0FwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EYXRhYmFzZVRyYWNrZXIuaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxNZWRpYUVsZW1l
bnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL09yaWdpbkxvY2suaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1NlY3VyaXR5T3JpZ2luLmg+CkBAIC01Miw2ICs1MSw3IEBACiAjaW5jbHVkZSA8d3RmL0NhbGxi
YWNrQWdncmVnYXRvci5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2lu
Y2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZENvcGllci5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVt
Lmg+CiAjaW5jbHVkZSA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KICNpbmNsdWRlIDx3dGYvUnVu
TG9vcC5oPgogCkBAIC0xOTMsOCArMTkzLDggQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZXNv
bHZlRGlyZWN0b3JpZXNJZk5lY2Vzc2FyeSgpCiAKICAgICAvLyBSZXNvbHZlIGRpcmVjdG9yaWVz
IGZvciBmaWxlIHBhdGhzLgogICAgIGlmICghbV9jb25maWd1cmF0aW9uLT5jb29raWVTdG9yYWdl
RmlsZSgpLmlzRW1wdHkoKSkgewotICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+c2V0
Q29va2llU3RvcmFnZUZpbGUocmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNh
bmRib3hFeHRlbnNpb24oV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShtX2NvbmZp
Z3VyYXRpb24tPmNvb2tpZVN0b3JhZ2VGaWxlKCkpKSk7Ci0gICAgICAgIG1fcmVzb2x2ZWRDb25m
aWd1cmF0aW9uLT5zZXRDb29raWVTdG9yYWdlRmlsZShXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQobV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPmNvb2tpZVN0b3Jh
Z2VGaWxlKCksIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShtX2NvbmZpZ3Vy
YXRpb24tPmNvb2tpZVN0b3JhZ2VGaWxlKCkpKSk7CisgICAgICAgIG1fcmVzb2x2ZWRDb25maWd1
cmF0aW9uLT5zZXRDb29raWVTdG9yYWdlRmlsZShyZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGly
ZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKG1fY29u
ZmlndXJhdGlvbi0+Y29va2llU3RvcmFnZUZpbGUoKSkpKTsKKyAgICAgICAgbV9yZXNvbHZlZENv
bmZpZ3VyYXRpb24tPnNldENvb2tpZVN0b3JhZ2VGaWxlKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+Y29va2llU3RvcmFnZUZpbGUo
KSwgRmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKG1fY29uZmlndXJhdGlvbi0+Y29va2llU3Rv
cmFnZUZpbGUoKSkpKTsKICAgICB9CiB9CiAKQEAgLTIyNTksNyArMjI1OSw3IEBAIFZlY3RvcjxQ
bHVnaW5Nb2R1bGVJbmZvPiBXZWJzaXRlRGF0YVN0b3JlOjpwbHVnaW5zKCkgY29uc3QKIAogc3Rh
dGljIFN0cmluZyBjb21wdXRlTWVkaWFLZXlGaWxlKGNvbnN0IFN0cmluZyYgbWVkaWFLZXlEaXJl
Y3RvcnkpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChtZWRpYUtleURpcmVjdG9yeSwgIlNlY3VyZVN0b3AucGxpc3QiKTsKKyAgICBy
ZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1lZGlhS2V5RGlyZWN0
b3J5LCAiU2VjdXJlU3RvcC5wbGlzdCIpOwogfQogCiBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhPiBXZWJzaXRlRGF0YVN0b3JlOjptZWRpYUtleU9yaWdpbnMoY29uc3QgU3RyaW5n
JiBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KQpAQCAtMjI2OCwxMiArMjI2OCwxMiBAQCBWZWN0
b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBXZWJzaXRlRGF0YVN0b3JlOjptZWRpYUtl
eU9yaWdpbnMoY29uc3QgU3RyaQogCiAgICAgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YT4gb3JpZ2luczsKIAotICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2luUGF0aCA6IFdlYkNv
cmU6OkZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSwg
IioiKSkgeworICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2luUGF0aCA6IEZpbGVTeXN0ZW06Omxp
c3REaXJlY3RvcnkobWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSwgIioiKSkgewogICAgICAgICBh
dXRvIG1lZGlhS2V5RmlsZSA9IGNvbXB1dGVNZWRpYUtleUZpbGUob3JpZ2luUGF0aCk7Ci0gICAg
ICAgIGlmICghV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhtZWRpYUtleUZpbGUpKQor
ICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobWVkaWFLZXlGaWxlKSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGF1dG8gbWVkaWFLZXlJZGVudGlmaWVyID0gV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKG9yaWdpblBhdGgpOworICAgICAgICBh
dXRvIG1lZGlhS2V5SWRlbnRpZmllciA9IEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShvcmln
aW5QYXRoKTsKIAogICAgICAgICBpZiAoYXV0byBzZWN1cml0eU9yaWdpbiA9IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmllcihtZWRpYUtleUlkZW50aWZp
ZXIpKQogICAgICAgICAgICAgb3JpZ2lucy5hcHBlbmQoKnNlY3VyaXR5T3JpZ2luKTsKQEAgLTIy
ODYsMTggKzIyODYsMTggQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVNZWRpYUtleXMo
Y29uc3QgU3RyaW5nJiBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5LAogewogICAgIEFTU0VSVCgh
bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpOwogCi0gICAgZm9yIChjb25zdCBh
dXRvJiBtZWRpYUtleURpcmVjdG9yeSA6IFdlYkNvcmU6OkZpbGVTeXN0ZW06Omxpc3REaXJlY3Rv
cnkobWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSwgIioiKSkgeworICAgIGZvciAoY29uc3QgYXV0
byYgbWVkaWFLZXlEaXJlY3RvcnkgOiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KG1lZGlhS2V5
c1N0b3JhZ2VEaXJlY3RvcnksICIqIikpIHsKICAgICAgICAgYXV0byBtZWRpYUtleUZpbGUgPSBj
b21wdXRlTWVkaWFLZXlGaWxlKG1lZGlhS2V5RGlyZWN0b3J5KTsKIAotICAgICAgICBhdXRvIG1v
ZGlmaWNhdGlvblRpbWUgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9u
VGltZShtZWRpYUtleUZpbGUpOworICAgICAgICBhdXRvIG1vZGlmaWNhdGlvblRpbWUgPSBGaWxl
U3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShtZWRpYUtleUZpbGUpOwogICAgICAgICBp
ZiAoIW1vZGlmaWNhdGlvblRpbWUpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBp
ZiAobW9kaWZpY2F0aW9uVGltZS52YWx1ZSgpIDwgbW9kaWZpZWRTaW5jZSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwogCi0gICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobWVk
aWFLZXlGaWxlKTsKLSAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJl
Y3RvcnkobWVkaWFLZXlEaXJlY3RvcnkpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxl
KG1lZGlhS2V5RmlsZSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5
KG1lZGlhS2V5RGlyZWN0b3J5KTsKICAgICB9CiB9CiAKQEAgLTIzMDYsMTEgKzIzMDYsMTEgQEAg
dm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVNZWRpYUtleXMoY29uc3QgU3RyaW5nJiBtZWRp
YUtleXNTdG9yYWdlRGlyZWN0b3J5LAogICAgIEFTU0VSVCghbWVkaWFLZXlzU3RvcmFnZURpcmVj
dG9yeS5pc0VtcHR5KCkpOwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBvcmlnaW4gOiBvcmlnaW5z
KSB7Ci0gICAgICAgIGF1dG8gbWVkaWFLZXlEaXJlY3RvcnkgPSBXZWJDb3JlOjpGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSwgb3Jp
Z2luLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICAgICAgYXV0byBtZWRpYUtleURpcmVjdG9y
eSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtZWRpYUtleXNTdG9yYWdl
RGlyZWN0b3J5LCBvcmlnaW4uZGF0YWJhc2VJZGVudGlmaWVyKCkpOwogICAgICAgICBhdXRvIG1l
ZGlhS2V5RmlsZSA9IGNvbXB1dGVNZWRpYUtleUZpbGUobWVkaWFLZXlEaXJlY3RvcnkpOwogCi0g
ICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobWVkaWFLZXlGaWxlKTsKLSAg
ICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkobWVkaWFLZXlE
aXJlY3RvcnkpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1lZGlhS2V5RmlsZSk7
CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KG1lZGlhS2V5RGlyZWN0
b3J5KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2ds
aWIvV2ViUHJvY2Vzc1Byb3h5R0xpYi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGli
L1dlYlByb2Nlc3NQcm94eUdMaWIuY3BwCmluZGV4IDhmNWZhMDNmZjQ2NTMyZjZiNTgyNTc5ZTk5
YjAxN2IwNjU0MGFlYTUuLjE2OWVhMjAxMjViMDMwNjM3ZmFmYzA3NDdjYTg2OTg1ODU0OTViOWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Byb3h5
R0xpYi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUHJv
eHlHTGliLmNwcApAQCAtMzEsOCArMzEsOCBAQAogI2VuZGlmCiAjaW5jbHVkZSAiV2ViUHJvY2Vz
c1Bvb2wuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCi0jaW5jbHVkZSA8V2ViQ29y
ZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybURpc3BsYXkuaD4KKyNp
bmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3Rr
L1dlYkluc3BlY3RvclByb3h5R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9X
ZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAKaW5kZXggY2ExODdhNjQyMzQxMTJlODU3OWJkODYxNjJk
OWI4M2ZiNDI5YzgzYS4uMTZiMDJhNDM1NzZlNTZmMWFlMjI2M2EwZGY0ZjA2NzMyMzRkYmUwNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYkluc3BlY3RvclByb3h5
R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJv
eHlHdGsuY3BwCkBAIC00Miw5ICs0Miw5IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIK
ICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NlcnRpZmlj
YXRlSW5mby5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvR3RrVXRpbGl0aWVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5o
PgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc1Bvb2xHdGsuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NQb29sR3RrLmNwcAppbmRleCA2MjQwNDE1ZjE1
NzI3OWU0YmZjMGM1NmEyY2RhOGI2MjI1OTA2OWY2Li42YjIzNTc0MDRlMDNhZTMwMjFhZTg4MGI2
M2E4Y2VjMGVlODZmMGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsv
V2ViUHJvY2Vzc1Bvb2xHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9X
ZWJQcm9jZXNzUG9vbEd0ay5jcHAKQEAgLTM0LDEwICszNCwxMCBAQAogI2luY2x1ZGUgIldlYlBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMu
aCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9SZW1vdGVJbnNwZWN0b3JTZXJ2ZXIuaD4KLSNp
bmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dTdHJlYW1l
ckNvbW1vbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1NjaGVtZVJlZ2lzdHJ5Lmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4K
ICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCA4MDM4YTkyMDQ3MDk0MDNjNjJkOTAxMmQwOTQ0
ZjQ3YjdkNTcwZWFjLi5mZWIyY2E4MzIxODU0Mzg3NjQ3M2QyZTJiMjMzMGJmYTQ5MDQyZjViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb24ubW0KQEAgLTU2NzEsNyArNTY3MSw3IEBAIC0gKHZvaWQpX3ByZXBhcmVUb0Ry
YWdQcm9taXNlZEF0dGFjaG1lbnQ6KGNvbnN0IFdlYkNvcmU6OlByb21pc2VkQXR0YWNobWVudElu
Zm8mCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBOU1N0cmluZyAq
dGVtcG9yYXJ5QmxvYkRpcmVjdG9yeSA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBv
cmFyeURpcmVjdG9yeShAImJsb2JzIik7CisgICAgICAgIE5TU3RyaW5nICp0ZW1wb3JhcnlCbG9i
RGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KEAiYmxvYnMi
KTsKICAgICAgICAgTlNVUkwgKmRlc3RpbmF0aW9uVVJMID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0
aDpbdGVtcG9yYXJ5QmxvYkRpcmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6
W05TVVVJRCBVVUlEXS5VVUlEU3RyaW5nXSBpc0RpcmVjdG9yeTpOT107CiAKICAgICAgICAgYXV0
byBhdHRhY2htZW50ID0gc3Ryb25nU2VsZi0+X3BhZ2UtPmF0dGFjaG1lbnRGb3JJZGVudGlmaWVy
KGluZm8uYXR0YWNobWVudElkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL2Zvcm1zL1dLRmlsZVVwbG9hZFBhbmVsLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL2Zvcm1zL1dLRmlsZVVwbG9hZFBhbmVsLm1tCmluZGV4IDY4MDE2NDZkMDhm
OWQwOWZlM2U3Mzk4Mzg0NTcyOWJlMjExZDVhYTYuLjg3NzExNGZjZjI2NmU5OTJhZWJkZDkwMzYw
NDA2YTFkODk3NTFkZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9m
b3Jtcy9XS0ZpbGVVcGxvYWRQYW5lbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvZm9ybXMvV0tGaWxlVXBsb2FkUGFuZWwubW0KQEAgLTYyMCw3ICs2MjAsNyBAQCAtICh2b2lk
KV91cGxvYWRJdGVtRm9ySW1hZ2VEYXRhOihOU0RhdGEgKilpbWFnZURhdGEgaW1hZ2VOYW1lOihO
U1N0cmluZyAqKWltYWdlTgogICAgIE5TU3RyaW5nICogY29uc3Qga1RlbXBvcmFyeURpcmVjdG9y
eU5hbWUgPSBAIldLV2ViRmlsZVVwbG9hZCI7CiAKICAgICAvLyBCdWlsZCB0ZW1wb3JhcnkgZmls
ZSBwYXRoLgotICAgIE5TU3RyaW5nICp0ZW1wb3JhcnlEaXJlY3RvcnkgPSBXZWJDb3JlOjpGaWxl
U3lzdGVtOjpjcmVhdGVUZW1wb3JhcnlEaXJlY3Rvcnkoa1RlbXBvcmFyeURpcmVjdG9yeU5hbWUp
OworICAgIE5TU3RyaW5nICp0ZW1wb3JhcnlEaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpjcmVhdGVU
ZW1wb3JhcnlEaXJlY3Rvcnkoa1RlbXBvcmFyeURpcmVjdG9yeU5hbWUpOwogICAgIE5TU3RyaW5n
ICpmaWxlUGF0aCA9IFt0ZW1wb3JhcnlEaXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29t
cG9uZW50OmltYWdlTmFtZV07CiAgICAgaWYgKCFmaWxlUGF0aCkgewogICAgICAgICBMT0dfRVJS
T1IoIldLRmlsZVVwbG9hZFBhbmVsOiBGYWlsZWQgdG8gY3JlYXRlIHRlbXBvcmFyeSBkaXJlY3Rv
cnkgdG8gc2F2ZSBpbWFnZSIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQ
YWdlUHJveHlNYWMubW0KaW5kZXggNjJiZTQxMGYyM2IwZTJjMzMwMzBiYjA5YzFlNjJmMWM4YjIw
ZTFjMC4uODMwMDRkNzBhODE3NzcxNjE4Mzg0ZDRkOGYyODE1Y2YyMTFhNzc2YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCkBAIC00OTUsNyAr
NDk1LDcgQEAgc3RhdGljIE5TU3RyaW5nICpwYXRoVG9QREZPbkRpc2soY29uc3QgU3RyaW5nJiBz
dWdnZXN0ZWRGaWxlbmFtZSkKIAogdm9pZCBXZWJQYWdlUHJveHk6OnNhdmVQREZUb1RlbXBvcmFy
eUZvbGRlckFuZE9wZW5XaXRoTmF0aXZlQXBwbGljYXRpb25SYXcoY29uc3QgU3RyaW5nJiBzdWdn
ZXN0ZWRGaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBvcmlnaW5hdGluZ1VSTFN0cmluZywgY29uc3Qg
dWludDhfdCogZGF0YSwgdW5zaWduZWQgbG9uZyBzaXplLCBjb25zdCBTdHJpbmcmIHBkZlVVSUQp
CiB7Ci0gICAgLy8gRklYTUU6IFdyaXRlIG9yaWdpbmF0aW5nVVJMU3RyaW5nIHRvIHRoZSBmaWxl
J3Mgb3JpZ2luYXRpbmcgVVJMIG1ldGFkYXRhIChwZXJoYXBzIFdlYkNvcmU6OkZpbGVTeXN0ZW06
OnNldE1ldGFkYXRhVVJMKCk/KS4KKyAgICAvLyBGSVhNRTogV3JpdGUgb3JpZ2luYXRpbmdVUkxT
dHJpbmcgdG8gdGhlIGZpbGUncyBvcmlnaW5hdGluZyBVUkwgbWV0YWRhdGEgKHBlcmhhcHMgRmls
ZVN5c3RlbTo6c2V0TWV0YWRhdGFVUkwoKT8pLgogICAgIFVOVVNFRF9QQVJBTShvcmlnaW5hdGlu
Z1VSTFN0cmluZyk7CiAKICAgICBpZiAoIXN1Z2dlc3RlZEZpbGVuYW1lLmVuZHNXaXRoSWdub3Jp
bmdBU0NJSUNhc2UoIi5wZGYiKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3Mvd2luL1dlYlByb2Nlc3NQb29sV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dp
bi9XZWJQcm9jZXNzUG9vbFdpbi5jcHAKaW5kZXggMTAxNWZmMDYwNmNmNGJiNGNmNTYyYTA3ODky
ODg3MzM2NTZmOWVkNi4uMzkwYTBjOTAxOTIxOTQzM2M1ZmE0OWQzZTM4NDRhMWI4MzU1MjhjYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlByb2Nlc3NQb29sV2lu
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1Bvb2xXaW4u
Y3BwCkBAIC0yOCw4ICsyOCw4IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKIAogI2lu
Y2x1ZGUgIldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKLSNpbmNsdWRlIDxXZWJDb3Jl
L0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW5j
bHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcAppbmRleCBlZjc5MTljNzIwZmU3MTdiNTkwOTE5
YmI4NWI0NTgxODViYTUwZmIxLi4wZjlmOWQ0ZWZkNTI4NmM2MjY4NDNhYzNhMDRjZDJlNmJkOTQ5
OWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCkBAIC00NCw3ICs0
NCw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9CaXRtYXBJbmZvLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9DdXJzb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0VkaXRvci5oPgotI2luY2x1ZGUgPFdlYkNv
cmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9IV25kREMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KQEAgLTU1
LDYgKzU0LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1dpbmRvd3NUb3VjaC5oPgogI2luY2x1ZGUg
PGNhaXJvLXdpbjMyLmg+CiAjaW5jbHVkZSA8Y2Fpcm8uaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5
c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9Tb2Z0TGlua2luZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0J1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dwZS9XZWJQcm9jZXNzUG9vbFdQRS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93cGUvV2ViUHJvY2Vzc1Bvb2xXUEUuY3BwCmlu
ZGV4IDYyNTVjNDI3YjdhMWJhNWNmZWVkMGNiMzdkZTVjMDJjMGJjY2U1ZDEuLmY1MTAxN2E4Y2Ey
OWVkMDc5OTRkN2QyMDdjOTU3MTQxMTJhMzhiZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL3dwZS9XZWJQcm9jZXNzUG9vbFdQRS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3Mvd3BlL1dlYlByb2Nlc3NQb29sV1BFLmNwcApAQCAtMzQsMTAgKzM0LDEwIEBACiAj
aW5jbHVkZSAiV2ViQ29va2llTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgotI2lu
Y2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVt
ZW50ZWQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NjaGVtZVJlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8
Y3N0ZGxpYj4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiAjaWYgRU5BQkxFKFJFTU9U
RV9JTlNQRUNUT1IpCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUmVtb3RlSW5zcGVjdG9yU2Vy
dmVyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2dsaWIvV2ViS2l0RXh0ZW5zaW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0RXh0ZW5zaW9uTWFuYWdlci5j
cHAKaW5kZXggYWFjMjgyODBjYTUyMGJmODM5NjViNzk0YzNlMzRmZWFmYzYxZWU3NS4uNGNjZWM2
MmVmMGUxMTMxZmExM2Y3ZmIwNjBjODBlMDdlZTQyNTFhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdEV4dGVuc2lvbk1h
bmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ2xpYi9XZWJLaXRFeHRlbnNpb25NYW5hZ2VyLmNwcApAQCAtMjMsOCArMjMsOCBAQAogI2lu
Y2x1ZGUgIkFQSVN0cmluZy5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlLmgiCiAjaW5jbHVk
ZSAiV2ViS2l0V2ViRXh0ZW5zaW9uUHJpdmF0ZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5
c3RlbS5oPgogI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00
MSw5ICs0MSw5IEBAIFdlYktpdEV4dGVuc2lvbk1hbmFnZXI6OldlYktpdEV4dGVuc2lvbk1hbmFn
ZXIoKQogCiB2b2lkIFdlYktpdEV4dGVuc2lvbk1hbmFnZXI6OnNjYW5Nb2R1bGVzKGNvbnN0IFN0
cmluZyYgd2ViRXh0ZW5zaW9uc0RpcmVjdG9yeSwgVmVjdG9yPFN0cmluZz4mIG1vZHVsZXMpCiB7
Ci0gICAgVmVjdG9yPFN0cmluZz4gbW9kdWxlUGF0aHMgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjps
aXN0RGlyZWN0b3J5KHdlYkV4dGVuc2lvbnNEaXJlY3RvcnksIFN0cmluZygiKi5zbyIpKTsKKyAg
ICBWZWN0b3I8U3RyaW5nPiBtb2R1bGVQYXRocyA9IEZpbGVTeXN0ZW06Omxpc3REaXJlY3Rvcnko
d2ViRXh0ZW5zaW9uc0RpcmVjdG9yeSwgU3RyaW5nKCIqLnNvIikpOwogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbW9kdWxlUGF0aHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKFdlYkNv
cmU6OkZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobW9kdWxlUGF0aHNbaV0pKQorICAgICAgICBpZiAo
RmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhtb2R1bGVQYXRoc1tpXSkpCiAgICAgICAgICAgICBtb2R1
bGVzLmFwcGVuZChtb2R1bGVQYXRoc1tpXSk7CiAgICAgfQogfQpAQCAtNjMsNyArNjMsNyBAQCBz
dGF0aWMgdm9pZCBwYXJzZVVzZXJEYXRhKEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgU3RyaW5nJiB3
ZWJFeHRlbnNpb25zRGlyZWN0b3J5LAogICAgIEdWYXJpYW50KiBkYXRhID0gbnVsbHB0cjsKICAg
ICBnX3ZhcmlhbnRfZ2V0KHZhcmlhbnQuZ2V0KCksICIobSZzbXYpIiwgJmRpcmVjdG9yeSwgJmRh
dGEpOwogCi0gICAgd2ViRXh0ZW5zaW9uc0RpcmVjdG9yeSA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06
OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGlyZWN0b3J5KTsKKyAgICB3ZWJF
eHRlbnNpb25zRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihkaXJlY3RvcnkpOwogICAgIGluaXRpYWxpemF0aW9uVXNlckRhdGEgPSBhZG9w
dEdSZWYoZGF0YSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9nbGliL0luamVjdGVkQnVuZGxlR2xpYi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvZ2xpYi9JbmplY3RlZEJ1bmRsZUdsaWIuY3BwCmlu
ZGV4IDBhODYwNjUyZjAwZGFkOTMyOGNmMzU1ZDQwNTEzZmU4MGY1ZWY2NTguLmVkOTY1OGNhMWY0
NmE0Yzc3Y2M3MjYwMzMwZDE2MGFhZDI4ODI3NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9nbGliL0luamVjdGVkQnVuZGxlR2xpYi5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL2dsaWIvSW5qZWN0ZWRC
dW5kbGVHbGliLmNwcApAQCAtMjksMTEgKzI5LDEwIEBACiAKICNpbmNsdWRlICJXS0J1bmRsZUFQ
SUNhc3QuaCIKICNpbmNsdWRlICJXS0J1bmRsZUluaXRpYWxpemUuaCIKLSNpbmNsdWRlIDxXZWJD
b3JlL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7Ci11c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAogYm9vbCBJbmplY3RlZEJ1bmRsZTo6aW5pdGlhbGl6ZShjb25zdCBXZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiwgQVBJOjpPYmplY3QqIGluaXRpYWxpemF0aW9uVXNl
ckRhdGEpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFDYWNo
ZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IDRiZjQ4ZDBl
OTRlZWY3NjA2NmNhMzBlYTljZjM1NzA0YWIzZGVhZWIuLmJkMzk4MjQyNmM2NmU2MzViNmM1NjA1
Y2JlNWEzYjA1MDI1ZDNhMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9N
ZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuY3BwCkBA
IC0yNyw5ICsyNyw5IEBACiAjaW5jbHVkZSAiV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5oIgog
CiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgotI2luY2x1ZGUgPFdl
YkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgorI2luY2x1ZGUgPHd0Zi9G
aWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05l
dHNjYXBlUGx1Z2luU3RyZWFtLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5oCmluZGV4IGJiNmE1YjA4YzdjY2U1ZGRlZDg5
OTM2MGY3YWI4MzQwZjAzOTVlNzQuLjNlZGNlYzZhNzJjY2MzYWE2NGQ4MTlmYTkzMzdmNDNlNjJl
N2Q3NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uaApAQCAtMjcsOSArMjcsOSBA
QAogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAKLSNpbmNsdWRlIDxXZWJDb3Jl
L0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL25wcnVudGltZV9pbnRlcm5hbC5oPgog
I2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CkBAIC04OSw3ICs4OSw3IEBAIHByaXZhdGU6CiAgICAgaW50MzJfdCBtX29m
ZnNldDsKIAogICAgIFN0cmluZyBtX2ZpbGVQYXRoOwotICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06
OlBsYXRmb3JtRmlsZUhhbmRsZSBtX2ZpbGVIYW5kbGU7CisgICAgRmlsZVN5c3RlbTo6UGxhdGZv
cm1GaWxlSGFuZGxlIG1fZmlsZUhhbmRsZTsKICAgICAKICAgICAvLyBXaGV0aGVyIE5QUF9OZXdT
dHJlYW0gaGFzIHN1Y2Nlc3NmdWxseSBiZWVuIGNhbGxlZC4KICAgICBib29sIG1faXNTdGFydGVk
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDAxYzUzZjNkODQzZGQxZDI0MzE0ZjVjYzBj
MTJlOTA5NjRlZmJiZTQuLjI2ZDZkNTAwZTY5YTAxOTNiMWRmNWY0MDNmMWYzZjE4YzJjOGVkNWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nl
c3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTM2LDEwICszNiw5IEBACiAjaW5jbHVkZSAi
V2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNPYmplY3QuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVT
eXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKiBw
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIsIHVpbnQ2NF90IHBsdWdpblByb2Nlc3NUb2tl
biwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyLCBib29s
IHN1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb24pCiAgICAgOiBtX3BsdWdp
blByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcihwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vz
c2lvblN0YXRlQ29udmVyc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAKaW5kZXggNjNjMzZhM2RiNjlhODJh
ZDNiZWE2NjBmNmIwNmRmZTc2M2M1NTYxNy4uMWQ4MTY2YTA3ZTNmZDk3ODgxY2I3ZjQ0ZjRhNmJl
ZmY4NWJiZmU1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcApAQCAtMjgs
OSArMjgsOSBAQAogCiAjaW5jbHVkZSAiU2Vzc2lvblN0YXRlLmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9CbG9iRGF0YS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvRm9ybURhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hpc3RvcnlJdGVtLmg+Cisj
aW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2d0ay9XZWJJbnNwZWN0b3JVSUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9ndGsvV2ViSW5zcGVjdG9yVUlHdGsuY3BwCmluZGV4IDg5YzNiYTFhYTg5Mzlj
ZmE1MWY2ZmIyMjFhNzNiMzhkNzgwMzI3YTMuLmRiYjJhOTE4MDRiZTEzMjY0OGM5YWQzM2U2ZjAy
N2JkZDNmMTEwZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L2d0ay9XZWJJbnNwZWN0b3JVSUd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvZ3RrL1dlYkluc3BlY3RvclVJR3RrLmNwcApAQCAtMjgsOCArMjgsOCBAQAogI2lu
Y2x1ZGUgIldlYkluc3BlY3RvclVJLmgiCiAjaW5jbHVkZSAiUmVtb3RlV2ViSW5zcGVjdG9yVUku
aCIKIAotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPGdsaWIuaD4K
KyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL3dpbi9XZWJJbnNwZWN0b3JVSVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS93aW4vV2ViSW5zcGVjdG9yVUlXaW4uY3BwCmluZGV4IDZhN2Fm
M2M1ZDY0OWM1MDRlZWRhZDQ5YzkxYTFmYjQ0MzVlNGExOGMuLjQ3MTExNGNhZmExNGE3ZDFmMzNm
ZmEyYzFlOGFmYmJiZWQyZTAzYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL3dpbi9XZWJJbnNwZWN0b3JVSVdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL1dlYkluc3BlY3RvclVJV2luLmNwcApAQCAtMjgsOCArMjgs
OCBAQAogCiAjaW5jbHVkZSAiUmVtb3RlV2ViSW5zcGVjdG9yVUkuaCIKIAotI2luY2x1ZGUgPFdl
YkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvV2ViQ29yZUJ1bmRsZVdpbi5o
PgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KaW5kZXggYTQ0NjgxYzc3MjcxYzA0YTc5NmYw
N2JiY2NhYzNiZWNjNDgxZjc1YS4uMzVkNTdkNWNlNjdiNjU4NzYwNzkzZGNjN2M0MDkxNjlmODU4
MGFmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nl
c3NDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vz
c0NvY29hLm1tCkBAIC01MSw3ICs1MSw2IEBACiAjaW1wb3J0IDxXZWJDb3JlL0FYT2JqZWN0Q2Fj
aGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ1BVTW9uaXRvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9E
aXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0
ZW0uaD4KICNpbXBvcnQgPFdlYkNvcmUvRm9udENhY2hlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Zv
bnRDYXNjYWRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hpc3RvcnlDb250cm9sbGVyLmg+CkBAIC03
Miw2ICs3MSw3IEBACiAjaW1wb3J0IDxwYWwvc3BpL21hYy9OU0FjY2Vzc2liaWxpdHlTUEkuaD4K
ICNpbXBvcnQgPHBhbC9zcGkvbWFjL05TQXBwbGljYXRpb25TUEkuaD4KICNpbXBvcnQgPHN0ZGlv
Lmg+CisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8d3RmL2NvY29hL05TVVJM
RXh0cmFzLmg+CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcAppbmRleCA0MDM5OTYwYjE0MGZjYjlj
NjNhNzZkNmQwNzcxM2EzYTMxODJjNWE0Li4xN2Q0ODk0OTRkN2UwOTBkM2ZmNzM1ZWZmMjY0NDVl
ZmVjNmI5Mjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFn
ZUFyZWFTeW5jLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFy
ZWFTeW5jLmNwcApAQCAtMjgsMTEgKzI4LDExIEBACiAjaW5jbHVkZSAiU3RvcmFnZUFyZWFJbXBs
LmgiCiAjaW5jbHVkZSAiU3RvcmFnZVN5bmNNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU3RvcmFnZVRy
YWNrZXIuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1NRTGl0ZURhdGFiYXNlVHJhY2tlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlU3Rh
dGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVUcmFuc2FjdGlvbi5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU3VkZGVuVGVybWluYXRpb24uaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3Rl
bS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VTeW5j
TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVN5bmNNYW5h
Z2VyLmNwcAppbmRleCAzZThmZjY1ZWU2MGYyNzRkYzkwNGViNThjMTE3NGVkNWNjMWE1NzRjLi4z
NjkwOTVjZGFkMWQzNDcxMWEwNjc2ZDg3MzZhOTBlMTkzZTI5MDVlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmNwcApAQCAtMjYsNyAr
MjYsNyBAQAogI2luY2x1ZGUgIlN0b3JhZ2VTeW5jTWFuYWdlci5oIgogCiAjaW5jbHVkZSAiU3Rv
cmFnZVRocmVhZC5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUg
PHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
U3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2Uv
U3RvcmFnZVRyYWNrZXIuY3BwCmluZGV4IDcxMDE0MGIxYjEzM2EyZWI1OTM5NmQ3Njc0ODZkMjE4
M2VjOTA0ODQuLmI5MzRkMWEzYjFiYWE4MzFhZGRmM2FiZTVlMDc3MGFiMWNmNzdmYTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcApAQCAtMjgs
MTMgKzI4LDEzIEBACiAjaW5jbHVkZSAiU3RvcmFnZVRocmVhZC5oIgogI2luY2x1ZGUgIlN0b3Jh
Z2VUcmFja2VyQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVy
LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Q
YWdlR3JvdXAuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZURhdGFiYXNlVHJhY2tlci5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlU3RhdGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
ZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0RW5jb2RpbmcuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5
c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNGaWxlTWFuYWdlckV4dHJhcy5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNGaWxlTWFuYWdlckV4dHJhcy5tbQppbmRleCA5MDUx
NzRkYTc1NmRkNjI4YmVkZWZkNTBjMmIyMzcyOWU1MzM1MDJiLi5jNTQxM2U4MWM2YTNlY2IyZWM5
NzgxZjZiOGJmZDZjMmIyYTA1ZGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9NaXNjL1dlYk5TRmlsZU1hbmFnZXJFeHRyYXMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvTWlzYy9XZWJOU0ZpbGVNYW5hZ2VyRXh0cmFzLm1tCkBAIC0zMCwxMCArMzAsMTAgQEAK
IAogI2ltcG9ydCAiV2ViS2l0TlNTdHJpbmdFeHRyYXMuaCIKICNpbXBvcnQgIldlYk5TVVJMRXh0
cmFzLmgiCi0jaW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPFdlYkNvcmUv
TG9hZGVyTlNVUkxFeHRyYXMuaD4KICNpbXBvcnQgPHN5cy9zdGF0Lmg+CiAjaW1wb3J0IDx3dGYv
QXNzZXJ0aW9ucy5oPgorI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0Zi9P
YmpDUnVudGltZUV4dHJhcy5oPgogCiBAaW1wbGVtZW50YXRpb24gTlNGaWxlTWFuYWdlciAoV2Vi
TlNGaWxlTWFuYWdlckV4dHJhcykKQEAgLTQ0LDcgKzQ0LDcgQEAgLSAodm9pZClfd2Via2l0X3Nl
dE1ldGFkYXRhVVJMOihOU1N0cmluZyAqKVVSTFN0cmluZyByZWZlcnJlcjooTlNTdHJpbmcgKily
ZWZlcnIKIHsKICAgICBBU1NFUlQoVVJMU3RyaW5nKTsKICAgICBBU1NFUlQocGF0aCk7Ci0gICAg
V2ViQ29yZTo6RmlsZVN5c3RlbTo6c2V0TWV0YWRhdGFVUkwocGF0aCwgVVJMU3RyaW5nLCByZWZl
cnJlcik7CisgICAgRmlsZVN5c3RlbTo6c2V0TWV0YWRhdGFVUkwocGF0aCwgVVJMU3RyaW5nLCBy
ZWZlcnJlcik7CiB9CiAKICNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTkzLDcg
KzkzLDcgQEAgLSAoTlNTdHJpbmcgKilfd2Via2l0X3BhdGhXaXRoVW5pcXVlRmlsZW5hbWVGb3JQ
YXRoOihOU1N0cmluZyAqKXBhdGgKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogLSAoTlNTdHJp
bmcgKilfd2Via2l0X2NyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeVdpdGhUZW1wbGF0ZVByZWZpeDoo
TlNTdHJpbmcgKilwcmVmaXgKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6Y3Jl
YXRlVGVtcG9yYXJ5RGlyZWN0b3J5KHByZWZpeCk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OmNy
ZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShwcmVmaXgpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VQcm92aWRlci5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VQcm92aWRlci5tbQpp
bmRleCA3NDk1YjE3NWZmZjQ1ZGM1YTU0YjAxNGY4ZDViZjAzZTU0Mzk0M2NjLi5hZGM0YzM5ODg0
YzRjYjJkMmEzYmViNmIxOTViY2RhMDAwODljMTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlUHJvdmlkZXIubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZVByb3ZpZGVyLm1tCkBAIC0yNiwxNiAr
MjYsMTYgQEAKICNpbXBvcnQgIldlYkRhdGFiYXNlUHJvdmlkZXIuaCIKICNpbXBvcnQgIldlYkRh
dGFiYXNlTWFuYWdlclByaXZhdGUuaCIKIAotI2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+
CisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogCiBTdHJpbmcgV2ViRGF0YWJhc2VQcm92aWRl
cjo6aW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5UGF0aCgpCiB7CiAgICAgTlNVc2VyRGVmYXVsdHMg
KmRlZmF1bHRzID0gW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXTsKICAgICBO
U1N0cmluZyAqZGF0YWJhc2VzRGlyZWN0b3J5ID0gW2RlZmF1bHRzIG9iamVjdEZvcktleTpXZWJE
YXRhYmFzZURpcmVjdG9yeURlZmF1bHRzS2V5XTsKICAgICBpZiAoIWRhdGFiYXNlc0RpcmVjdG9y
eSB8fCAhW2RhdGFiYXNlc0RpcmVjdG9yeSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11d
KQotICAgICAgICBkYXRhYmFzZXNEaXJlY3RvcnkgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoIn4vTGlicmFyeS9XZWJLaXQvRGF0YWJhc2VzL19fX0luZGV4
ZWREQiJfcywgW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlmaWVyXSk7CisgICAg
ICAgIGRhdGFiYXNlc0RpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudCgifi9MaWJyYXJ5L1dlYktpdC9EYXRhYmFzZXMvX19fSW5kZXhlZERCIl9zLCBbW05TQnVu
ZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdKTsKICAgICBlbHNlCi0gICAgICAgIGRh
dGFiYXNlc0RpcmVjdG9yeSA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChkYXRhYmFzZXNEaXJlY3RvcnksICJfX19JbmRleGVkREIiX3MpOworICAgICAgICBk
YXRhYmFzZXNEaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
ZGF0YWJhc2VzRGlyZWN0b3J5LCAiX19fSW5kZXhlZERCIl9zKTsKICAgICAKICAgICByZXR1cm4g
W2RhdGFiYXNlc0RpcmVjdG9yeSBzdHJpbmdCeVN0YW5kYXJkaXppbmdQYXRoXTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCAyZGUwM2FjMzZjYzVj
ZTQ1NWQ3NTdlZDc2MzA4OGE1NmE4ZDRmOTAyLi43YjJjMzMxNDIyZWMwMWE3NDJmMDM4NzdkOThi
ZTg2M2Q5MjQ3OTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tCkBAIC0xNDgsNyArMTQ4LDYgQEAKICNpbXBvcnQgPFdlYkNvcmUvRWRpdG9yLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL0V2ZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0V2ZW50SGFuZGxlci5oPgot
I2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZvY3VzQ29u
dHJvbGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9Gb250QXR0cmlidXRlcy5oPgogI2ltcG9ydCA8
V2ViQ29yZS9Gb250Q2FjaGUuaD4KQEAgLTIzMSw2ICsyMzAsNyBAQAogI2ltcG9ydCA8cGFsL3Nw
aS9tYWMvTlNTcGVsbENoZWNrZXJTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvbWFjL05TV2luZG93
U1BJLmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgorI2ltcG9ydCA8d3RmL0ZpbGVTeXN0
ZW0uaD4KICNpbXBvcnQgPHd0Zi9IYXNoVHJhaXRzLmg+CiAjaW1wb3J0IDx3dGYvTWFpblRocmVh
ZC5oPgogI2ltcG9ydCA8d3RmL09iakNSdW50aW1lRXh0cmFzLmg+CkBAIC02ODgzLDcgKzY4ODMs
NyBAQCAtIChCT09MKXBlcmZvcm1EcmFnT3BlcmF0aW9uOihpZCA8TlNEcmFnZ2luZ0luZm8+KWRy
YWdnaW5nSW5mbwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKLSAgICAg
ICAgTlNTdHJpbmcgKmRyb3BEZXN0aW5hdGlvblBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpj
cmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoQCJXZWJLaXREcm9wRGVzdGluYXRpb24iKTsKKyAgICAg
ICAgTlNTdHJpbmcgKmRyb3BEZXN0aW5hdGlvblBhdGggPSBGaWxlU3lzdGVtOjpjcmVhdGVUZW1w
b3JhcnlEaXJlY3RvcnkoQCJXZWJLaXREcm9wRGVzdGluYXRpb24iKTsKICAgICAgICAgaWYgKCFk
cm9wRGVzdGluYXRpb25QYXRoKSB7CiAgICAgICAgICAgICBkZWxldGUgZHJhZ0RhdGE7CiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1Bs
dWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCmluZGV4IGJjNzlkODliZDQ0NmM1NmVhMWJhOWQ1N2M3
NWFlMzk5YWE4ZjA0Y2YuLjY0MWFjMzU0YzM0MTk2N2VhNmNlZDY5MGQ1ZTZkNDVjNmMyYzJhMWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJh
c2UuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgog
CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9NRVRBREFUQV9DQUNIRSkKLSNpbmNsdWRlICJG
aWxlU3lzdGVtLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNlbmRpZgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVn
aW5zL1BsdWdpblBhY2thZ2UuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1
Z2luUGFja2FnZS5oCmluZGV4IGI0ODgzZGVhOTk3NmRiNTBjZGU1Mjg2MGFhOWI5MmI1YmIxMDEw
ZGYuLjg5ODdhM2QzNTNjNzZjMGFhNDQ2ZWFiMzkwODM3MzMzOWQ1MTdkMzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luUGFja2FnZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luUGFja2FnZS5oCkBAIC0yOSw4ICsy
OSw4IEBACiAKICNpbmNsdWRlICJQbGF0Zm9ybU1vZHVsZS5oIgogI2luY2x1ZGUgIlBsdWdpblF1
aXJrU2V0LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9UaW1lci5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0hhc2guaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1Bs
dWdpbnMvUGx1Z2luU3RyZWFtLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1Bs
dWdpblN0cmVhbS5oCmluZGV4IGMxYjlmODdhYzRlNjIyZmJiMmUyZTIwNWQxNjQ1OWMwYzE5NGU3
YjYuLjQzMWIzNjMwMzYyYzllNTIxMTE4ZGQwMzI3M2E2Y2Q5YzI4Y2M0NjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luU3RyZWFtLmgKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5TdHJlYW0uaApAQCAtMjcsMTIgKzI3
LDEyIEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlBsdWdpblF1aXJrU2V0LmgiCi0jaW5j
bHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9OZXRzY2FwZVBs
dWdJblN0cmVhbUxvYWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9UaW1lci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvbnBydW50aW1lX2ludGVybmFsLmg+CisjaW5j
bHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXBwbGljYXRpb25DYWNoZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJBcHBsaWNhdGlvbkNhY2hlLmNwcAppbmRleCBiODVkZDE1NDQw
YTZlYTU0MDRhOGE0ODUyMTQzZTU5MTc4ZmVjMTJkLi45MGJlMWZjZTc1MWI0ZjFiNWQ5NGIxYmI2
NzRjMzZiM2VjNTY5ZmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJB
cHBsaWNhdGlvbkNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcHBs
aWNhdGlvbkNhY2hlLmNwcApAQCAtMzAsMTMgKzMwLDEzIEBACiAjaW5jbHVkZSAiTWFyc2hhbGxp
bmdIZWxwZXJzLmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKICNpbmNsdWRlICJXZWJT
ZWN1cml0eU9yaWdpbi5oIgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0FwcGxpY2F0aW9uQ2FjaGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0FwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DT01QdHIuaD4KLSNpbmNsdWRlIDxX
ZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+
CiAjaW5jbHVkZSA8Y29tdXRpbC5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CisjaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAKaW5kZXggM2Y2
YzM4YjA2MjhkYjRiYWNmOWM0MTM1N2I1OTFhN2RlYzlhY2Q0MS4uZjk5NjNmMWMwNjg5NmQ3YTJj
YjJkNzMzYTE4ZWZhYWFmM2NlNDgwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJEYXRhYmFzZU1hbmFnZXIuY3BwCkBAIC0zOSw5ICszOSw5IEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9DT01QdHIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RhdGFiYXNlTWFuYWdlci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvRGF0YWJhc2VUcmFja2VyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lz
dGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4K
ICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJB
U0UpCkBAIC00MzYsNyArNDM2LDcgQEAgc3RhdGljIFdURjo6U3RyaW5nIGRhdGFiYXNlc0RpcmVj
dG9yeSgpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oZGlyZWN0b3J5
UHJlZi5nZXQoKSk7CiAjZW5kaWYKIAotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3Bl
Y2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJEYXRhYmFzZXMiKTsKKyAgICByZXR1cm4gRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNp
ZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiRGF0YWJhc2VzIik7CiB9CiAKIHZvaWQgV2ViS2l0SW5p
dGlhbGl6ZVdlYkRhdGFiYXNlc0lmTmVjZXNzYXJ5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkRvd25sb2FkQ3VybC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJEb3dubG9hZEN1cmwuY3BwCmluZGV4IDIwZDRmNDA4MzVmNzI0MTM4ZjE3MjNhOGRjMmY5
NGI4OTUyZWVlZDcuLjk5YjYyN2YxYWFjMDNhZWRmNTA2ODdmYzdmMzM2YmI5NWQ5Y2RkMjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkQ3VybC5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWRDdXJsLmNwcApAQCAtMzUsMjIg
KzM1LDE5IEBACiAjaW5jbHVkZSAiV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKICNp
bmNsdWRlICJXZWJVUkxDcmVkZW50aWFsLmgiCiAjaW5jbHVkZSAiV2ViVVJMUmVzcG9uc2UuaCIK
LQotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLQotI2luY2x1ZGUgPGlvLmg+Ci0jaW5j
bHVkZSA8c3lzL3N0YXQuaD4KLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLQogI2luY2x1ZGUgPFdl
YkNvcmUvQlN0cmluZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ3VybERvd25sb2FkLmg+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1l
bnRlZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUmVzb3VyY2VIYW5kbGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVz
dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvVGV4dEVuY29kaW5nLmg+CisjaW5jbHVkZSA8aW8uaD4KKyNpbmNsdWRlIDxzeXMvc3Rh
dC5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMu
Y3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCmluZGV4IDU5
YmUwYzQ0M2Y0ZmQ2NjU4Yjg0MThiNWNhMzMxNDEwMjkwYzE1ZmQuLjIxNTA1ZDU4Yzc0NTM4ZDQ0
MGE4YzEyZDE3ZTg5YzU1NjE0MjMyYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYlByZWZlcmVuY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQ
cmVmZXJlbmNlcy5jcHAKQEAgLTM3LDEzICszNywxMyBAQAogCiAjaW5jbHVkZSA8Q29yZUZvdW5k
YXRpb24vQ29yZUZvdW5kYXRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NPTVB0ci5oPgotI2lu
Y2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRm9udENhc2Nh
ZGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3MuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgogI2luY2x1ZGUgPGxpbWl0cz4KICNpbmNs
dWRlIDxzaGxvYmouaD4KICNpbmNsdWRlIDx3Y2hhci5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lz
dGVtLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0
cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlZpZXcuY3BwCmluZGV4IGU3NjE3NDRlMGQxYjg1YWZmZDEwYjc3N2NkZDM3OTFhNGY3MWIz
MWUuLmUzMzEwNjNhMGJmMGViZDgyMDA5MTUwNDA3NjI2ZGU5YTE0MGU1MmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlZpZXcuY3BwCkBAIC05Niw3ICs5Niw2IEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9FZGl0b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0V2ZW50SGFuZGxlci5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvRXZlbnROYW1lcy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRRdWFkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Gb2N1c0Nv
bnRyb2xsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZvbnQuaD4KQEAgLTE3MSw2ICsxNzAsNyBA
QAogI2luY2x1ZGUgPFdlYkNvcmUvV2luZG93c1RvdWNoLmg+CiAjaW5jbHVkZSA8Y29tZGVmLmg+
CiAjaW5jbHVkZSA8ZDJkMS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVk
ZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgog
I2luY2x1ZGUgPHd0Zi9SQU1TaXplLmg+CkBAIC01MTMsNyArNTEzLDcgQEAgdm9pZCBXZWJWaWV3
OjpzZXRDYWNoZU1vZGVsKFdlYkNhY2hlTW9kZWwgY2FjaGVNb2RlbCkKICAgICAgICAgaWYgKHBy
ZWZlcmVuY2UgJiYgKENGU3RyaW5nR2V0VHlwZUlEKCkgPT0gQ0ZHZXRUeXBlSUQocHJlZmVyZW5j
ZS5nZXQoKSkpKQogICAgICAgICAgICAgY2Z1cmxDYWNoZURpcmVjdG9yeSA9IGFkb3B0Q0Yoc3Rh
dGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KHByZWZlcmVuY2UubGVha1JlZigpKSk7CiAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgIGNmdXJsQ2FjaGVEaXJlY3RvcnkgPSBXZWJDb3JlOjpGaWxlU3lzdGVt
Ojpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKS5jcmVhdGVDRlN0cmluZygpOwor
ICAgICAgICAgICAgY2Z1cmxDYWNoZURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OmxvY2FsVXNlclNw
ZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLmNyZWF0ZUNGU3RyaW5nKCk7CiAgICAgfQogICAgIGNh
Y2hlRGlyZWN0b3J5ID0gU3RyaW5nKGNmdXJsQ2FjaGVEaXJlY3RvcnkuZ2V0KCkpOwogICAgIENG
SW5kZXggY2FjaGVNZW1vcnlDYXBhY2l0eSA9IDA7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYjBlM2NjMmJiOWMwMGVjNWM1MTgwNWMxNGEzNTc0
M2Q1NDRmMmYzMi4uMjEyZGRhNGQ5N2U2ZTA4NmU1ZDg4YjRlNGYyNDI0NjlmOTZlM2E5ZiAxMDA2
NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDI1IEBACisyMDE5LTAxLTIxICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNv
bT4KKworICAgICAgICBNb3ZlIEZpbGVTeXN0ZW0gdG8gV1RGCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM2MDIKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVu
ZGVyVHJlZS5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dDoKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1BsYXRmb3JtR1RLLmNtYWtlOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvUGxhdGZvcm1XUEUuY21ha2U6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHA6IFJlbmFtZWQgZnJvbSBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZVN5c3RlbS5jcHAuCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvU2VjdXJpdHlPcmlnaW4uY3BwOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmNwcDoKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvRGF0YWJhc2VUcmFja2VyVGVzdC5tbToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY3VybC9Db29raWVzLmNwcDoKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWRQcm9ncmVzcy5t
bToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL3dpbi9QbGF0Zm9ybVV0aWxpdGllc1dpbi5jcHA6
CisKIDIwMTktMDEtMjEgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbTEZDXVtGbG9hdHNdIFRha2UgZmxvYXQgdG9wIHBvc2l0aW9uIGludG8gYWNjb3VudCB3aGVu
IGNvbXB1dGluZyBjb250YWluaW5nIGJsb2NrIGhlaWdodC4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCmluZGV4IGE0YjVjNzcwNzA4OTBhNWNmMTQyZDJkOWM4
YjNjMzM4NjQ4M2U2ZWQuLmEwYjY4NWM3NWY5ZGFmMGZlYjdlYWFlMWJiMzJhMmU5NTJkMjI2ZjQg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAK
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcApAQCAtNDYs
NyArNDYsNiBAQAogCiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9UZXN0UnVubmVyVXRpbHMuaD4KLSNpbmNsdWRlIDxX
ZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJLaXRMZWdhY3kvV2ViS2l0Lmg+CiAj
aW5jbHVkZSA8V2ViS2l0TGVnYWN5L1dlYktpdENPTUFQSS5oPgogI2luY2x1ZGUgPGNvbXV0aWwu
aD4KQEAgLTYwLDYgKzU5LDcgQEAKICNpbmNsdWRlIDxzaGx3YXBpLmg+CiAjaW5jbHVkZSA8dGNo
YXIuaD4KICNpbmNsdWRlIDx3aW5kb3dzLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4K
ICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTIyMiw3ICsyMjIsNyBAQCBzdGF0aWMg
U3RyaW5nIGxpYnJhcnlQYXRoRm9yRHVtcFJlbmRlclRyZWUoKQogICAgICAgICByZXR1cm4gU3Ry
aW5nIChwYXRoLmRhdGEoKSwgcGF0aC5sZW5ndGgoKSk7CiAgICAgfQogCi0gICAgcmV0dXJuIFdl
YkNvcmU6OkZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpOwor
ICAgIHJldHVybiBGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3Rvcnko
KTsKIH0KICNlbmRpZgogCkBAIC05MzEsOSArOTMxLDkgQEAgc3RhdGljIHZvaWQgc2V0RGVmYXVs
dHNUb0NvbnNpc3RlbnRWYWx1ZXNGb3JUZXN0aW5nKCkKICAgICBTdHJpbmcgbGlicmFyeVBhdGgg
PSBsaWJyYXJ5UGF0aEZvckR1bXBSZW5kZXJUcmVlKCk7CiAKICAgICAvLyBTZXQgdXAgdGhlc2Ug
dmFsdWVzIGJlZm9yZSBjcmVhdGluZyB0aGUgV2ViVmlldyBzbyB0aGF0IHRoZSB2YXJpb3VzIGlu
aXRpYWxpemF0aW9ucyB3aWxsIHNlZSB0aGVzZSBwcmVmZXJyZWQgdmFsdWVzLgotICAgIENGUHJl
ZmVyZW5jZXNTZXRBcHBWYWx1ZShXZWJEYXRhYmFzZURpcmVjdG9yeURlZmF1bHRzS2V5LCBXZWJD
b3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobGlicmFyeVBhdGgsICJE
YXRhYmFzZXMiKS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBhcHBJZC5nZXQoKSk7Ci0gICAgQ0ZQ
cmVmZXJlbmNlc1NldEFwcFZhbHVlKFdlYlN0b3JhZ2VEaXJlY3RvcnlEZWZhdWx0c0tleSwgV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGxpYnJhcnlQYXRoLCAi
TG9jYWxTdG9yYWdlIikuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgYXBwSWQuZ2V0KCkpOwotICAg
IENGUHJlZmVyZW5jZXNTZXRBcHBWYWx1ZShXZWJLaXRMb2NhbENhY2hlRGVmYXVsdHNLZXksIFdl
YkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChsaWJyYXJ5UGF0aCwg
IkxvY2FsQ2FjaGUiKS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBhcHBJZC5nZXQoKSk7CisgICAg
Q0ZQcmVmZXJlbmNlc1NldEFwcFZhbHVlKFdlYkRhdGFiYXNlRGlyZWN0b3J5RGVmYXVsdHNLZXks
IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChsaWJyYXJ5UGF0aCwgIkRhdGFi
YXNlcyIpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGFwcElkLmdldCgpKTsKKyAgICBDRlByZWZl
cmVuY2VzU2V0QXBwVmFsdWUoV2ViU3RvcmFnZURpcmVjdG9yeURlZmF1bHRzS2V5LCBGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobGlicmFyeVBhdGgsICJMb2NhbFN0b3JhZ2Ui
KS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBhcHBJZC5nZXQoKSk7CisgICAgQ0ZQcmVmZXJlbmNl
c1NldEFwcFZhbHVlKFdlYktpdExvY2FsQ2FjaGVEZWZhdWx0c0tleSwgRmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGxpYnJhcnlQYXRoLCAiTG9jYWxDYWNoZSIpLmNyZWF0ZUNG
U3RyaW5nKCkuZ2V0KCksIGFwcElkLmdldCgpKTsKICNlbmRpZgogfQogCkBAIC0xMDM1LDcgKzEw
MzUsNyBAQCBzdGF0aWMgdm9pZCBzaXplV2ViVmlld0ZvckN1cnJlbnRUZXN0KCkKIAogc3RhdGlj
IFN0cmluZyBmaW5kRm9udEZhbGxiYWNrKGNvbnN0IGNoYXIqIHBhdGhPclVybCkKIHsKLSAgICBT
dHJpbmcgcGF0aFRvRm9udEZhbGxiYWNrID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGlyZWN0b3J5
TmFtZShwYXRoT3JVcmwpOworICAgIFN0cmluZyBwYXRoVG9Gb250RmFsbGJhY2sgPSBGaWxlU3lz
dGVtOjpkaXJlY3RvcnlOYW1lKHBhdGhPclVybCk7CiAKICAgICB3Y2hhcl90IGZ1bGxQYXRoW19N
QVhfUEFUSF07CiAgICAgaWYgKCFfd2Z1bGxwYXRoKGZ1bGxQYXRoLCBwYXRoVG9Gb250RmFsbGJh
Y2suY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCksIF9NQVhfUEFUSCkpCkBA
IC0xMDU0LDIwICsxMDU0LDIwIEBAIHN0YXRpYyBTdHJpbmcgZmluZEZvbnRGYWxsYmFjayhjb25z
dCBjaGFyKiBwYXRoT3JVcmwpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCiAgICAg
U3RyaW5nIHBhdGhUb1Rlc3QgPSBwYXRoVG9DaGVjay5zdWJzdHJpbmcobG9jYXRpb24gKyBsYXlv
dXRUZXN0cy5sZW5ndGgoKSArIDEpOwotICAgIFN0cmluZyBwb3NzaWJsZVBhdGhUb0xvZ3VlID0g
V2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhdGhUb0NoZWNr
LnN1YnN0cmluZygwLCBsb2NhdGlvbiArIGxheW91dFRlc3RzLmxlbmd0aCgpICsgMSksICJwbGF0
Zm9ybVxcd2luIik7CisgICAgU3RyaW5nIHBvc3NpYmxlUGF0aFRvTG9ndWUgPSBGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGF0aFRvQ2hlY2suc3Vic3RyaW5nKDAsIGxvY2F0
aW9uICsgbGF5b3V0VGVzdHMubGVuZ3RoKCkgKyAxKSwgInBsYXRmb3JtXFx3aW4iKTsKIAogICAg
IFZlY3RvcjxTdHJpbmc+IHBvc3NpYmxlUGF0aHM7Ci0gICAgcG9zc2libGVQYXRocy5hcHBlbmQo
V2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBvc3NpYmxlUGF0
aFRvTG9ndWUsIHBhdGhUb1Rlc3QpKTsKKyAgICBwb3NzaWJsZVBhdGhzLmFwcGVuZChGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocG9zc2libGVQYXRoVG9Mb2d1ZSwgcGF0aFRv
VGVzdCkpOwogCiAgICAgc2l6ZV90IG5leHRDYW5kaWRhdGVFbmQgPSBwYXRoVG9UZXN0LnJldmVy
c2VGaW5kKCdcXCcpOwogICAgIHdoaWxlIChuZXh0Q2FuZGlkYXRlRW5kICYmIG5leHRDYW5kaWRh
dGVFbmQgIT0gV1RGOjpub3RGb3VuZCkgewogICAgICAgICBwYXRoVG9UZXN0ID0gcGF0aFRvVGVz
dC5zdWJzdHJpbmcoMCwgbmV4dENhbmRpZGF0ZUVuZCk7Ci0gICAgICAgIHBvc3NpYmxlUGF0aHMu
YXBwZW5kKFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwb3Nz
aWJsZVBhdGhUb0xvZ3VlLCBwYXRoVG9UZXN0KSk7CisgICAgICAgIHBvc3NpYmxlUGF0aHMuYXBw
ZW5kKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwb3NzaWJsZVBhdGhUb0xv
Z3VlLCBwYXRoVG9UZXN0KSk7CiAgICAgICAgIG5leHRDYW5kaWRhdGVFbmQgPSBwYXRoVG9UZXN0
LnJldmVyc2VGaW5kKCdcXCcpOwogICAgIH0KIAogICAgIGZvciAoVmVjdG9yPFN0cmluZz46Oml0
ZXJhdG9yIHBvcyA9IHBvc3NpYmxlUGF0aHMuYmVnaW4oKTsgcG9zICE9IHBvc3NpYmxlUGF0aHMu
ZW5kKCk7ICsrcG9zKSB7Ci0gICAgICAgIHBhdGhUb0ZvbnRGYWxsYmFjayA9IFdlYkNvcmU6OkZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCgqcG9zLCAicmVzb3VyY2VzXFwiKTsK
KyAgICAgICAgcGF0aFRvRm9udEZhbGxiYWNrID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KCpwb3MsICJyZXNvdXJjZXNcXCIpOwogCiAgICAgICAgIGlmICg6OlBhdGhJc0Rp
cmVjdG9yeVcocGF0aFRvRm9udEZhbGxiYWNrLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9u
KCkuZGF0YSgpKSkKICAgICAgICAgICAgIHJldHVybiBwYXRoVG9Gb250RmFsbGJhY2s7CkBAIC0x
MDgxLDcgKzEwODEsNyBAQCBzdGF0aWMgdm9pZCBhZGRGb250RmFsbGJhY2tJZlByZXNlbnQoY29u
c3QgU3RyaW5nJiBmb250RmFsbGJhY2tQYXRoKQogICAgIGlmIChmb250RmFsbGJhY2tQYXRoLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3RyaW5nIGZvbnRGYWxsYmFjayA9IFdl
YkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChmb250RmFsbGJhY2tQ
YXRoLCAiTWFjLWNvbXBhdGlibGUtZm9udC1mYWxsYmFjay5jc3MiKTsKKyAgICBTdHJpbmcgZm9u
dEZhbGxiYWNrID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGZvbnRGYWxs
YmFja1BhdGgsICJNYWMtY29tcGF0aWJsZS1mb250LWZhbGxiYWNrLmNzcyIpOwogCiAgICAgaWYg
KCE6OlBhdGhGaWxlRXhpc3RzVyhmb250RmFsbGJhY2suY2hhcmFjdGVyc1dpdGhOdWxsVGVybWlu
YXRpb24oKS5kYXRhKCkpKQogICAgICAgICByZXR1cm47CkBAIC0xMDk0LDcgKzEwOTQsNyBAQCBz
dGF0aWMgdm9pZCByZW1vdmVGb250RmFsbGJhY2tJZlByZXNlbnQoY29uc3QgU3RyaW5nJiBmb250
RmFsbGJhY2tQYXRoKQogICAgIGlmIChmb250RmFsbGJhY2tQYXRoLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgU3RyaW5nIGZvbnRGYWxsYmFjayA9IFdlYkNvcmU6OkZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChmb250RmFsbGJhY2tQYXRoLCAiTWFjLWNvbXBh
dGlibGUtZm9udC1mYWxsYmFjay5jc3MiKTsKKyAgICBTdHJpbmcgZm9udEZhbGxiYWNrID0gRmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGZvbnRGYWxsYmFja1BhdGgsICJNYWMt
Y29tcGF0aWJsZS1mb250LWZhbGxiYWNrLmNzcyIpOwogCiAgICAgaWYgKCE6OlBhdGhGaWxlRXhp
c3RzVyhmb250RmFsbGJhY2suY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkp
KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtl
TGlzdHMudHh0IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAppbmRleCBiMjQ5
MDA4OThiM2ZjNWFmODljNDkwMzM4MGMzZmQ3YzFkYzBkNzA1Li40MTBhNDlmYTQ5Yzc1MmM4YmZj
YmQ2YWFlNjMwYWQyYjM2NmUwMTI4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NN
YWtlTGlzdHMudHh0CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKQEAg
LTEyMiw2ICsxMjIsNyBAQCBzZXQoVGVzdFdURl9TT1VSQ0VTCiAgICAgJHtURVNUV0VCS0lUQVBJ
X0RJUn0vVGVzdHMvV1RGL0RhdGVNYXRoLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rl
c3RzL1dURi9EZXF1ZS5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvRW51
bVRyYWl0cy5jcHAKKyAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvRmlsZVN5c3Rl
bS5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvRXhwZWN0ZWQuY3BwCiAg
ICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL0Z1bmN0aW9uLmNwcAogICAgICR7VEVT
VFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9IYXNoQ291bnRlZFNldC5jcHAKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1HVEsuY21ha2UgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IGMzNGZhZTA3Y2YzYzZiMGEzOWMzOTlmZWUzMmNk
MjVjM2EwYWE3ZjQuLmNlODIxZTYxYjA1NjQzNWIyZWVlZTVlMGU1NmJhMjM1NzcyNTg4NWUgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtOTMsNyArOTMsNiBAQCBhZGRf
ZXhlY3V0YWJsZShUZXN0V2ViQ29yZQogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dl
YkNvcmUvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9
L1Rlc3RzL1dlYkNvcmUvRE5TLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dl
YkNvcmUvRmlsZU1vbml0b3IuY3BwCi0gICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV2Vi
Q29yZS9GaWxlU3lzdGVtLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNv
cmUvZ3N0cmVhbWVyL0dzdE1hcHBlZEJ1ZmZlci5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElS
fS9UZXN0cy9XZWJDb3JlL2dzdHJlYW1lci9HU3RyZWFtZXJUZXN0LmNwcAogICAgICR7VEVTVFdF
QktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUvR3JpZFBvc2l0aW9uLmNwcApkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVdQRS5jbWFrZSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvUGxhdGZvcm1XUEUuY21ha2UKaW5kZXggYjY4Nzc1OThkODc3ZGU2YzhkYTg2YjRlYjU3Y2M4
NmZmMGEyZjdlZi4uNDI2N2RhMjBkMDcwYzQ3YmM4MWU0NmVjMmI3ZjJkMTNjMDc5OWQ3NiAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVdQRS5jbWFrZQorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtV1BFLmNtYWtlCkBAIC02MCw3ICs2MCw2IEBAIGFkZF9l
eGVjdXRhYmxlKFRlc3RXZWJDb3JlCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vZ2xpYi9VdGls
aXRpZXNHTGliLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzQ29udHJvbGxlci5j
cHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNw
cAotICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUvRmlsZVN5c3RlbS5jcHAK
ICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL2dzdHJlYW1lci9Hc3RNYXBw
ZWRCdWZmZXIuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV2ViQ29yZS9nc3Ry
ZWFtZXIvR1N0cmVhbWVyVGVzdC5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9X
ZWJDb3JlL0hUTUxQYXJzZXJJZGlvbXMuY3BwCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDdh
MTA3MmFjZGFhMmMyYWE1MDdjZGIyZmMyOTcwODEwODQ1YzNmMGEuLmY2NTI2OGU1ZmQzYjQxZDM2
YjZmYzQ2ZDVmN2ViMmZjMWQxZTJjMDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00Mjcs
NyArNDI3LDYgQEAKIAkJN0M4M0UwNEMxRDBBNjQxODAwRkVCQ0YzIC8qIFdlYkNvcmVOU1VSTFNl
c3Npb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
RDg5RDAzODFDNEVEQjJBMDAwNDBBMDQgLyogV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbSAqLzsgfTsK
IAkJN0M4M0UwNEQxRDBBNjQxODAwRkVCQ0YzIC8qIERGQUNvbWJpbmVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2MEJBNTc4MUIxRDJFN0IwMDRG
QTA3QyAvKiBERkFDb21iaW5lci5jcHAgKi87IH07CiAJCTdDODNFMDRFMUQwQTY0MTgwMEZFQkNG
MyAvKiBERkFNaW5pbWl6ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMjZGNkUxRUYxQURDNzQ5QjAwREU2OTZCIC8qIERGQU1pbmltaXplci5jcHAg
Ki87IH07Ci0JCTdDODNFMDRGMUQwQTY0MTgwMEZFQkNGMyAvKiBGaWxlU3lzdGVtLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOTczQjVBMUFGMjI4
NkEwMDZDN0IzNiAvKiBGaWxlU3lzdGVtLmNwcCAqLzsgfTsKIAkJN0M4M0UwNTAxRDBBNjQxODAw
RkVCQ0YzIC8qIEhUTUxQYXJzZXJJZGlvbXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODNCODhBMzMxQzgwMDU2RDAwQkIyNDE4IC8qIEhUTUxQYXJz
ZXJJZGlvbXMuY3BwICovOyB9OwogCQk3QzgzRTA1MTFEMEE2NDE4MDBGRUJDRjMgLyogUGFyc2Vk
Q29udGVudFJhbmdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENEMjI1QzA3MUM0NUE2OTIwMDE0MDc2MSAvKiBQYXJzZWRDb250ZW50UmFuZ2UuY3Bw
ICovOyB9OwogCQk3QzgzRTA1MjFEMEE2NDE4MDBGRUJDRjMgLyogU2hhcmVkQnVmZmVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOTczQjVDMUFG
MjI4NzUwMDZDN0IzNiAvKiBTaGFyZWRCdWZmZXIuY3BwICovOyB9OwpAQCAtNjg5LDYgKzY4OCw3
IEBACiAJCUExQzRGQjczMUJBQ0QxQ0EwMDM3NDJEMCAvKiBwYWdlcy5wYWdlcyBpbiBDb3B5IFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUM0RkI3MjFCQUNE
MUI3MDAzNzQyRDAgLyogcGFnZXMucGFnZXMgKi87IH07CiAJCUExREY3NDMyMUM0MUI2NTgwMEEy
RjREMCAvKiBBbHdheXNSZXZhbGlkYXRlZFVSTFNjaGVtZXMubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMURGNzQzMDFDNDFCNjU4MDBBMkY0RDAgLyog
QWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzLm1tICovOyB9OwogCQlBMUVDMTE4ODFGNDI1NDEy
MDBEMDE0NkUgLyogUHJldmlld0xvYWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBMUVDMTE4NzFGNDI1NDEyMDBEMDE0NkUgLyogUHJldmlld0xv
YWRlci5jcHAgKi87IH07CisJCUEzMTA4MjcyMjFGMjk2RkYwMEMyOEI5NyAvKiBGaWxlU3lzdGVt
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzMTA4
MjcxMjFGMjk2RUMwMEMyOEI5NyAvKiBGaWxlU3lzdGVtLmNwcCAqLzsgfTsKIAkJQTU3QTM0RjIx
NkFGNkIyQjAwQzI1MDFGIC8qIFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlcy5o
dG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE1N0EzNEYxMTZBRjY5RTIwMEMyNTAxRiAvKiBQYWdlVmlzaWJpbGl0eVN0YXRlV2l0aFdpbmRv
d0NoYW5nZXMuaHRtbCAqLzsgfTsKIAkJQTU3RDU0RjMxRjMzOEMzNjAwQTk3QUE3IC8qIE5ldmVy
RGVzdHJveWVkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE1N0Q1NEYyMUYzMzhDMzYwMEE5N0FBNyAvKiBOZXZlckRlc3Ryb3llZC5jcHAgKi87IH07
CiAJCUE1N0Q1NEY2MUYzMzk1RDAwMEE5N0FBNyAvKiBMb2dnZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3RDU0RjQxRjMzOTVEMDAwQTk3QUE3
IC8qIExvZ2dlci5jcHAgKi87IH07CkBAIC0xNTIwLDcgKzE1MjAsNiBAQAogCQk0MTM1RkI4MzIw
MTFGQUEzMDAzMzIxMzkgLyogSW5qZWN0SW50ZXJuYWxzX0J1bmRsZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBJbmplY3RJbnRlcm5hbHNfQnVuZGxlLmNwcDsgcGF0
aCA9IFRlc3RzL0luamVjdEludGVybmFsc19CdW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gU09VUkNF
X1JPT1Q7IH07CiAJCTQxMzVGQjg2MjAxMUZBQkYwMDMzMjEzOSAvKiBsaWJXZWJDb3JlVGVzdFN1
cHBvcnQuZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlw
ZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIiOyBwYXRoID0gbGliV2ViQ29yZVRlc3RTdXBwb3J0
LmR5bGliOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk0MTg4MkYwMjIx
MDEwQTcwMDAyRkYyODggLyogUHJvY2Vzc1ByZVdhcm1pbmcubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQcm9jZXNzUHJlV2FybWluZy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJNDE5NzNCNUExQUYyMjg2QTAwNkM3QjM2IC8qIEZpbGVTeXN0ZW0u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmlsZVN5c3RlbS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxOTczQjVDMUFGMjI4NzUwMDZDN0IzNiAv
KiBTaGFyZWRCdWZmZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U2hhcmVkQnVmZmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDQyQkJGNjgx
QzkxQ0FEOTAwMTcwODdGIC8qIFJlZkxvZ2dlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBSZWZMb2dnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NDMzQTM5NTIwODA0NDEzMDA5MUVENTcgLyogU3luY2hyb25vdXNUaW1lb3V0VGVzdHMubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTeW5jaHJvbm91c1RpbWVv
dXRUZXN0cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5MTcsNiArMTkxNiw3
IEBACiAJCUExREY3NDMwMUM0MUI2NTgwMEEyRjREMCAvKiBBbHdheXNSZXZhbGlkYXRlZFVSTFNj
aGVtZXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBbHdheXNS
ZXZhbGlkYXRlZFVSTFNjaGVtZXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEx
RUMxMTg3MUY0MjU0MTIwMEQwMTQ2RSAvKiBQcmV2aWV3TG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFByZXZpZXdMb2FkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
MUZERkQyRTE5QzI4OEJCMDA1MTQ4QTQgLyogV0tJbWFnZUNyZWF0ZUNHSW1hZ2VDcmFzaC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS0ltYWdlQ3JlYXRlQ0dJbWFn
ZUNyYXNoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTMxMDgyNzEyMUYyOTZF
QzAwQzI4Qjk3IC8qIEZpbGVTeXN0ZW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gRmlsZVN5c3RlbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1
N0EzNEVGMTZBRjY3NzIwMEMyNTAxRiAvKiBQYWdlVmlzaWJpbGl0eVN0YXRlV2l0aFdpbmRvd0No
YW5nZXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQYWdlVmlz
aWJpbGl0eVN0YXRlV2l0aFdpbmRvd0NoYW5nZXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE1N0EzNEYxMTZBRjY5RTIwMEMyNTAxRiAvKiBQYWdlVmlzaWJpbGl0eVN0YXRlV2l0
aFdpbmRvd0NoYW5nZXMuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IFBhZ2VWaXNp
YmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlcy5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBNTdENTRGMjFGMzM4QzM2MDBBOTdBQTcgLyogTmV2ZXJEZXN0cm95ZWQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTmV2ZXJEZXN0cm95ZWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMjY3Nyw3ICsyNjc3LDYgQEAKIAkJCQk1Nzk2NTFFNjIxNkJGRDUzMDA2RUJG
RTUgLyogRmlkb0hpZE1lc3NhZ2VUZXN0LmNwcCAqLywKIAkJCQk1NzJCNDAzNTIxNzZBMDI5MDAw
QUQ0M0UgLyogRmlkb1Rlc3REYXRhLmggKi8sCiAJCQkJN0EzMkQ3NDkxRjAyMTUxNTAwMTYyQzQ0
IC8qIEZpbGVNb25pdG9yLmNwcCAqLywKLQkJCQk0MTk3M0I1QTFBRjIyODZBMDA2QzdCMzYgLyog
RmlsZVN5c3RlbS5jcHAgKi8sCiAJCQkJN0E5MDlBNzAxRDg3NzQ3NTAwN0UxMEY4IC8qIEZsb2F0
UG9pbnQuY3BwICovLAogCQkJCTdBOTA5QTcxMUQ4Nzc0NzUwMDdFMTBGOCAvKiBGbG9hdFJlY3Qu
Y3BwICovLAogCQkJCTdBOTA5QTcyMUQ4Nzc0NzUwMDdFMTBGOCAvKiBGbG9hdFNpemUuY3BwICov
LApAQCAtMzE4Nyw2ICszMTg2LDcgQEAKIAkJCQlFNEE3NTdEMzE3OEFFQTVCMDBCNUQ3QTQgLyog
RGVxdWUuY3BwICovLAogCQkJCTFBRjdCMjFEMUQ2Q0QxMkUwMDhDMTI2QyAvKiBFbnVtVHJhaXRz
LmNwcCAqLywKIAkJCQlBRDdDNDM0QzFERDJBNTQ3MDAyNjg4OEIgLyogRXhwZWN0ZWQuY3BwICov
LAorCQkJCUEzMTA4MjcxMjFGMjk2RUMwMEMyOEI5NyAvKiBGaWxlU3lzdGVtLmNwcCAqLywKIAkJ
CQk5MzEwQ0QzNjFFRjcwOEZCMDA1MEZGRTAgLyogRnVuY3Rpb24uY3BwICovLAogCQkJCTgzREI3
OTY3MUVGNjNCM0MwMEJGQTVFNSAvKiBGdW5jdGlvbi5jcHAgKi8sCiAJCQkJN0EzOEQ3RTUxQzc1
MkQ1RjAwNEYxNTdEIC8qIEhhc2hDb3VudGVkU2V0LmNwcCAqLywKQEAgLTM3OTUsNiArMzc5NSw3
IEBACiAJCQkJN0M4M0RFQUQxRDBBNTkwQzAwRkVCQ0YzIC8qIERlcXVlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTFBRjdCMjFGMUQ2Q0QxNEQwMDhDMTI2QyAvKiBFbnVtVHJhaXRzLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUFEN0M0MzREMUREMkE1NEUwMDI2ODg4QiAvKiBFeHBlY3RlZC5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlBMzEwODI3MjIxRjI5NkZGMDBDMjhCOTcgLyogRmlsZVN5c3Rl
bS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzEwQ0QzODFFRjcwOEZCMDA1MEZGRTAgLyogRnVu
Y3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNkJGRDI5NEMxRDVFNkMxRDAwOEVDOTY4IC8q
IEhhc2hDb3VudGVkU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzM0Q2MzFEMUZDQjc2MjAw
MDMyRUNENiAvKiBIYXNoZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zOTk4LDcgKzM5OTksNiBA
QAogCQkJCTdDQ0U3RUYxMUE0MTFBRTYwMDQ0N0M0QyAvKiBGYWlsZWRMb2FkLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTU3OTY1MUU3MjE2QkZERUQwMDZFQkZFNSAvKiBGaWRvSGlkTWVzc2FnZVRl
c3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0EzMkQ3NEExRjAyMTUxNTAwMTYyQzQ0IC8qIEZp
bGVNb25pdG9yLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTdDODNFMDRGMUQwQTY0MTgwMEZFQkNG
MyAvKiBGaWxlU3lzdGVtLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUYzMUE0MTFBRTYw
MDQ0N0M0QyAvKiBGaW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNFMEJCMUQwQTY1MDAw
MEZFQkNGMyAvKiBGaW5kSW5QYWdlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFRjQxQTQx
MUFFNjAwNDQ3QzRDIC8qIEZpbmRNYXRjaGVzLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ1N2RmNjE0
Mjk3ZjBhMjM3MjM5NWM3NmJmNGM1OTE1YTU3NTc1ZmEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcApAQCAtMCwwICsxLDE0OCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJUZXN0LmgiCisj
aW5jbHVkZSA8d3RmL0ZpbGVNZXRhZGF0YS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+
CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvU3RyaW5nRXh0cmFz
Lmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworY29uc3QgY2hhciogRmlsZVN5c3Rl
bVRlc3REYXRhID0gIlRoaXMgaXMgYSB0ZXN0IjsKKworLy8gRklYTUU6IFJlZmFjdG9yIEZpbGVT
eXN0ZW1UZXN0IGFuZCBTaGFyZWRCdWZmZXJUZXN0IGFzIGEgc2luZ2xlIGNsYXNzLgorY2xhc3Mg
RmlsZVN5c3RlbVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CitwdWJsaWM6CisgICAgdm9p
ZCBTZXRVcCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhy
ZWFkKCk7CisKKyAgICAgICAgLy8gY3JlYXRlIHRlbXAgZmlsZQorICAgICAgICBGaWxlU3lzdGVt
OjpQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlOworICAgICAgICBtX3RlbXBGaWxlUGF0aCA9IEZp
bGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wVGVzdEZpbGUiLCBoYW5kbGUpOworICAg
ICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShoYW5kbGUsIEZpbGVTeXN0ZW1UZXN0RGF0YSwg
c3RybGVuKEZpbGVTeXN0ZW1UZXN0RGF0YSkpOworICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZp
bGUoaGFuZGxlKTsKKworICAgICAgICBtX3RlbXBGaWxlU3ltbGlua1BhdGggPSBtX3RlbXBGaWxl
UGF0aCArICItc3ltbGluayI7CisgICAgICAgIEZpbGVTeXN0ZW06OmNyZWF0ZVN5bWJvbGljTGlu
ayhtX3RlbXBGaWxlUGF0aCwgbV90ZW1wRmlsZVN5bWxpbmtQYXRoKTsKKworICAgICAgICBtX3Rl
bXBFbXB0eUZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoInRlbXBFbXB0
eVRlc3RGaWxlIiwgaGFuZGxlKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRs
ZSk7CisKKyAgICAgICAgbV9zcGFjZUNvbnRhaW5pbmdGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9w
ZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wIEVtcHR5IFRlc3QgRmlsZSIsIGhhbmRsZSk7CisgICAgICAg
IEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUpOworCisgICAgICAgIG1fYmFuZ0NvbnRhaW5p
bmdGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wIUVtcHR5IVRl
c3QhRmlsZSIsIGhhbmRsZSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUp
OworCisgICAgICAgIG1fcXVvdGVDb250YWluaW5nRmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVu
VGVtcG9yYXJ5RmlsZSgidGVtcFwiRW1wdHlcIlRlc3RGaWxlIiwgaGFuZGxlKTsKKyAgICAgICAg
RmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CisgICAgfQorCisgICAgdm9pZCBUZWFyRG93
bigpIG92ZXJyaWRlCisgICAgeworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fdGVt
cEZpbGVQYXRoKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX3RlbXBGaWxlU3lt
bGlua1BhdGgpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fdGVtcEVtcHR5Rmls
ZVBhdGgpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fc3BhY2VDb250YWluaW5n
RmlsZVBhdGgpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fYmFuZ0NvbnRhaW5p
bmdGaWxlUGF0aCk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9xdW90ZUNvbnRh
aW5pbmdGaWxlUGF0aCk7CisgICAgfQorCisgICAgY29uc3QgU3RyaW5nJiB0ZW1wRmlsZVBhdGgo
KSB7IHJldHVybiBtX3RlbXBGaWxlUGF0aDsgfQorICAgIGNvbnN0IFN0cmluZyYgdGVtcEZpbGVT
eW1saW5rUGF0aCgpIHsgcmV0dXJuIG1fdGVtcEZpbGVTeW1saW5rUGF0aDsgfQorICAgIGNvbnN0
IFN0cmluZyYgdGVtcEVtcHR5RmlsZVBhdGgoKSB7IHJldHVybiBtX3RlbXBFbXB0eUZpbGVQYXRo
OyB9CisgICAgY29uc3QgU3RyaW5nJiBzcGFjZUNvbnRhaW5pbmdGaWxlUGF0aCgpIHsgcmV0dXJu
IG1fc3BhY2VDb250YWluaW5nRmlsZVBhdGg7IH0KKyAgICBjb25zdCBTdHJpbmcmIGJhbmdDb250
YWluaW5nRmlsZVBhdGgoKSB7IHJldHVybiBtX2JhbmdDb250YWluaW5nRmlsZVBhdGg7IH0KKyAg
ICBjb25zdCBTdHJpbmcmIHF1b3RlQ29udGFpbmluZ0ZpbGVQYXRoKCkgeyByZXR1cm4gbV9xdW90
ZUNvbnRhaW5pbmdGaWxlUGF0aDsgfQorCitwcml2YXRlOgorICAgIFN0cmluZyBtX3RlbXBGaWxl
UGF0aDsKKyAgICBTdHJpbmcgbV90ZW1wRmlsZVN5bWxpbmtQYXRoOworICAgIFN0cmluZyBtX3Rl
bXBFbXB0eUZpbGVQYXRoOworICAgIFN0cmluZyBtX3NwYWNlQ29udGFpbmluZ0ZpbGVQYXRoOwor
ICAgIFN0cmluZyBtX2JhbmdDb250YWluaW5nRmlsZVBhdGg7CisgICAgU3RyaW5nIG1fcXVvdGVD
b250YWluaW5nRmlsZVBhdGg7Cit9OworCitURVNUX0YoRmlsZVN5c3RlbVRlc3QsIE1hcHBpbmdN
aXNzaW5nRmlsZSkKK3sKKyAgICBib29sIHN1Y2Nlc3M7CisgICAgRmlsZVN5c3RlbTo6TWFwcGVk
RmlsZURhdGEgbWFwcGVkRmlsZURhdGEoU3RyaW5nKCJub3RfZXhpc3RpbmdfZmlsZSIpLCBzdWNj
ZXNzKTsKKyAgICBFWFBFQ1RfRkFMU0Uoc3VjY2Vzcyk7CisgICAgRVhQRUNUX1RSVUUoIW1hcHBl
ZEZpbGVEYXRhKTsKK30KKworVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBNYXBwaW5nRXhpc3RpbmdG
aWxlKQoreworICAgIGJvb2wgc3VjY2VzczsKKyAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0
YSBtYXBwZWRGaWxlRGF0YSh0ZW1wRmlsZVBhdGgoKSwgc3VjY2Vzcyk7CisgICAgRVhQRUNUX1RS
VUUoc3VjY2Vzcyk7CisgICAgRVhQRUNUX1RSVUUoISFtYXBwZWRGaWxlRGF0YSk7CisgICAgRVhQ
RUNUX1RSVUUobWFwcGVkRmlsZURhdGEuc2l6ZSgpID09IHN0cmxlbihGaWxlU3lzdGVtVGVzdERh
dGEpKTsKKyAgICBFWFBFQ1RfVFJVRShzdHJuc3RyKEZpbGVTeXN0ZW1UZXN0RGF0YSwgc3RhdGlj
X2Nhc3Q8Y29uc3QgY2hhcio+KG1hcHBlZEZpbGVEYXRhLmRhdGEoKSksIG1hcHBlZEZpbGVEYXRh
LnNpemUoKSkpOworfQorCitURVNUX0YoRmlsZVN5c3RlbVRlc3QsIE1hcHBpbmdFeGlzdGluZ0Vt
cHR5RmlsZSkKK3sKKyAgICBib29sIHN1Y2Nlc3M7CisgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmls
ZURhdGEgbWFwcGVkRmlsZURhdGEodGVtcEVtcHR5RmlsZVBhdGgoKSwgc3VjY2Vzcyk7CisgICAg
RVhQRUNUX1RSVUUoc3VjY2Vzcyk7CisgICAgRVhQRUNUX1RSVUUoIW1hcHBlZEZpbGVEYXRhKTsK
K30KKworVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBGaWxlc0hhdmVTYW1lVm9sdW1lKQoreworICAg
IEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVzSGF2ZVNhbWVWb2x1bWUodGVtcEZpbGVQYXRo
KCksIHNwYWNlQ29udGFpbmluZ0ZpbGVQYXRoKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lz
dGVtOjpmaWxlc0hhdmVTYW1lVm9sdW1lKHNwYWNlQ29udGFpbmluZ0ZpbGVQYXRoKCksIGJhbmdD
b250YWluaW5nRmlsZVBhdGgoKSkpOworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVz
SGF2ZVNhbWVWb2x1bWUoYmFuZ0NvbnRhaW5pbmdGaWxlUGF0aCgpLCBxdW90ZUNvbnRhaW5pbmdG
aWxlUGF0aCgpKSk7Cit9CisKK1RFU1RfRihGaWxlU3lzdGVtVGVzdCwgR2V0RmlsZU1ldGFkYXRh
U3ltbGluaykKK3sKKyAgICBhdXRvIHN5bWxpbmtNZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVN
ZXRhZGF0YSh0ZW1wRmlsZVN5bWxpbmtQYXRoKCkpOworICAgIEFTU0VSVF9UUlVFKHN5bWxpbmtN
ZXRhZGF0YS5oYXNWYWx1ZSgpKTsKKyAgICBFWFBFQ1RfVFJVRShzeW1saW5rTWV0YWRhdGEudmFs
dWUoKS50eXBlID09IEZpbGVNZXRhZGF0YTo6VHlwZTo6U3ltYm9saWNMaW5rKTsKKyAgICBFWFBF
Q1RfRkFMU0Uoc3RhdGljX2Nhc3Q8c2l6ZV90PihzeW1saW5rTWV0YWRhdGEudmFsdWUoKS5sZW5n
dGgpID09IHN0cmxlbihGaWxlU3lzdGVtVGVzdERhdGEpKTsKKworICAgIGF1dG8gdGFyZ2V0TWV0
YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyh0ZW1wRmls
ZVN5bWxpbmtQYXRoKCkpOworICAgIEFTU0VSVF9UUlVFKHRhcmdldE1ldGFkYXRhLmhhc1ZhbHVl
KCkpOworICAgIEVYUEVDVF9UUlVFKHRhcmdldE1ldGFkYXRhLnZhbHVlKCkudHlwZSA9PSBGaWxl
TWV0YWRhdGE6OlR5cGU6OkZpbGUpOworICAgIEVYUEVDVF9FUShzdHJsZW4oRmlsZVN5c3RlbVRl
c3REYXRhKSwgc3RhdGljX2Nhc3Q8c2l6ZV90Pih0YXJnZXRNZXRhZGF0YS52YWx1ZSgpLmxlbmd0
aCkpOworfQorCitURVNUX0YoRmlsZVN5c3RlbVRlc3QsIFVuaWNvZGVEaXJlY3RvcnlOYW1lKQor
eworICAgIFN0cmluZyBwYXRoID0gU3RyaW5nOjpmcm9tVVRGOCgiL3Rlc3QvYVx1MDMwOGxvL3Rl
c3QudHh0Iik7CisgICAgU3RyaW5nIGRpcmVjdG9yeU5hbWUgPSBGaWxlU3lzdGVtOjpkaXJlY3Rv
cnlOYW1lKHBhdGgpOworICAgIFN0cmluZyBleHBlY3RlZERpcmVjdG9yeU5hbWUgPSBTdHJpbmc6
OmZyb21VVEY4KCIvdGVzdC9hXHUwMzA4bG8iKTsKKyAgICBFWFBFQ1RfVFJVRShleHBlY3RlZERp
cmVjdG9yeU5hbWUgPT0gZGlyZWN0b3J5TmFtZSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRvci5jcHAgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZU1vbml0b3IuY3BwCmluZGV4IDVmMWRjOGIyZTRk
NTI0ZDM1MjY4MDRiZDZjZDljZTk4YTM3MTFmZTguLmUwMDJkZjFlZjA5NGY1YjNmMDBkMTZlOWM2
YmU2ZDQ5ZDVlNmFmMjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9GaWxlTW9uaXRvci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL0ZpbGVNb25pdG9yLmNwcApAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgIlRlc3QuaCIK
ICNpbmNsdWRlICJXVEZTdHJpbmdVdGlsaXRpZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVN
b25pdG9yLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8d3Rm
L0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0
Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3RmL1Njb3BlLmg+CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZVN5c3RlbS5jcHAgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZVN5c3RlbS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDc2NjI1MDI1MzA5NzI3ZWE2MDVjYjUyY2ZjOWVjZDRiMzNlNzc4NzUuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVTeXN0ZW0uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTUw
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaW5jbHVkZSAiVGVz
dC5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZU1ldGFkYXRhLmg+Ci0jaW5jbHVkZSA8V2ViQ29y
ZS9GaWxlU3lzdGVtLmg+Ci0jaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KLSNpbmNsdWRlIDx3
dGYvU3RyaW5nRXh0cmFzLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3Bh
Y2UgVGVzdFdlYktpdEFQSSB7Ci0KLWNvbnN0IGNoYXIqIEZpbGVTeXN0ZW1UZXN0RGF0YSA9ICJU
aGlzIGlzIGEgdGVzdCI7Ci0KLS8vIEZJWE1FOiBSZWZhY3RvciBGaWxlU3lzdGVtVGVzdCBhbmQg
U2hhcmVkQnVmZmVyVGVzdCBhcyBhIHNpbmdsZSBjbGFzcy4KLWNsYXNzIEZpbGVTeXN0ZW1UZXN0
IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotcHVibGljOgotICAgIHZvaWQgU2V0VXAoKSBvdmVy
cmlkZQotICAgIHsKLSAgICAgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZCgpOwotICAgICAg
ICAKLSAgICAgICAgLy8gY3JlYXRlIHRlbXAgZmlsZQotICAgICAgICBGaWxlU3lzdGVtOjpQbGF0
Zm9ybUZpbGVIYW5kbGUgaGFuZGxlOwotICAgICAgICBtX3RlbXBGaWxlUGF0aCA9IEZpbGVTeXN0
ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wVGVzdEZpbGUiLCBoYW5kbGUpOwotICAgICAgICBG
aWxlU3lzdGVtOjp3cml0ZVRvRmlsZShoYW5kbGUsIEZpbGVTeXN0ZW1UZXN0RGF0YSwgc3RybGVu
KEZpbGVTeXN0ZW1UZXN0RGF0YSkpOwotICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFu
ZGxlKTsKLQotICAgICAgICBtX3RlbXBGaWxlU3ltbGlua1BhdGggPSBtX3RlbXBGaWxlUGF0aCAr
ICItc3ltbGluayI7Ci0gICAgICAgIEZpbGVTeXN0ZW06OmNyZWF0ZVN5bWJvbGljTGluayhtX3Rl
bXBGaWxlUGF0aCwgbV90ZW1wRmlsZVN5bWxpbmtQYXRoKTsKLQotICAgICAgICBtX3RlbXBFbXB0
eUZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoInRlbXBFbXB0eVRlc3RG
aWxlIiwgaGFuZGxlKTsKLSAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7Ci0K
LSAgICAgICAgbV9zcGFjZUNvbnRhaW5pbmdGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1w
b3JhcnlGaWxlKCJ0ZW1wIEVtcHR5IFRlc3QgRmlsZSIsIGhhbmRsZSk7Ci0gICAgICAgIEZpbGVT
eXN0ZW06OmNsb3NlRmlsZShoYW5kbGUpOwotCi0gICAgICAgIG1fYmFuZ0NvbnRhaW5pbmdGaWxl
UGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wIUVtcHR5IVRlc3QhRmls
ZSIsIGhhbmRsZSk7Ci0gICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUpOwotCi0g
ICAgICAgIG1fcXVvdGVDb250YWluaW5nRmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9y
YXJ5RmlsZSgidGVtcFwiRW1wdHlcIlRlc3RGaWxlIiwgaGFuZGxlKTsKLSAgICAgICAgRmlsZVN5
c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7Ci0gICAgfQotCi0gICAgdm9pZCBUZWFyRG93bigpIG92
ZXJyaWRlCi0gICAgewotICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fdGVtcEZpbGVQ
YXRoKTsKLSAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX3RlbXBGaWxlU3ltbGlua1Bh
dGgpOwotICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fdGVtcEVtcHR5RmlsZVBhdGgp
OwotICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fc3BhY2VDb250YWluaW5nRmlsZVBh
dGgpOwotICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fYmFuZ0NvbnRhaW5pbmdGaWxl
UGF0aCk7Ci0gICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9xdW90ZUNvbnRhaW5pbmdG
aWxlUGF0aCk7Ci0gICAgfQotCi0gICAgY29uc3QgU3RyaW5nJiB0ZW1wRmlsZVBhdGgoKSB7IHJl
dHVybiBtX3RlbXBGaWxlUGF0aDsgfQotICAgIGNvbnN0IFN0cmluZyYgdGVtcEZpbGVTeW1saW5r
UGF0aCgpIHsgcmV0dXJuIG1fdGVtcEZpbGVTeW1saW5rUGF0aDsgfQotICAgIGNvbnN0IFN0cmlu
ZyYgdGVtcEVtcHR5RmlsZVBhdGgoKSB7IHJldHVybiBtX3RlbXBFbXB0eUZpbGVQYXRoOyB9Ci0g
ICAgY29uc3QgU3RyaW5nJiBzcGFjZUNvbnRhaW5pbmdGaWxlUGF0aCgpIHsgcmV0dXJuIG1fc3Bh
Y2VDb250YWluaW5nRmlsZVBhdGg7IH0KLSAgICBjb25zdCBTdHJpbmcmIGJhbmdDb250YWluaW5n
RmlsZVBhdGgoKSB7IHJldHVybiBtX2JhbmdDb250YWluaW5nRmlsZVBhdGg7IH0KLSAgICBjb25z
dCBTdHJpbmcmIHF1b3RlQ29udGFpbmluZ0ZpbGVQYXRoKCkgeyByZXR1cm4gbV9xdW90ZUNvbnRh
aW5pbmdGaWxlUGF0aDsgfQotCi1wcml2YXRlOgotICAgIFN0cmluZyBtX3RlbXBGaWxlUGF0aDsK
LSAgICBTdHJpbmcgbV90ZW1wRmlsZVN5bWxpbmtQYXRoOwotICAgIFN0cmluZyBtX3RlbXBFbXB0
eUZpbGVQYXRoOwotICAgIFN0cmluZyBtX3NwYWNlQ29udGFpbmluZ0ZpbGVQYXRoOwotICAgIFN0
cmluZyBtX2JhbmdDb250YWluaW5nRmlsZVBhdGg7Ci0gICAgU3RyaW5nIG1fcXVvdGVDb250YWlu
aW5nRmlsZVBhdGg7Ci19OwotCi1URVNUX0YoRmlsZVN5c3RlbVRlc3QsIE1hcHBpbmdNaXNzaW5n
RmlsZSkKLXsKLSAgICBib29sIHN1Y2Nlc3M7Ci0gICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURh
dGEgbWFwcGVkRmlsZURhdGEoU3RyaW5nKCJub3RfZXhpc3RpbmdfZmlsZSIpLCBzdWNjZXNzKTsK
LSAgICBFWFBFQ1RfRkFMU0Uoc3VjY2Vzcyk7Ci0gICAgRVhQRUNUX1RSVUUoIW1hcHBlZEZpbGVE
YXRhKTsKLX0KLQotVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBNYXBwaW5nRXhpc3RpbmdGaWxlKQot
ewotICAgIGJvb2wgc3VjY2VzczsKLSAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBw
ZWRGaWxlRGF0YSh0ZW1wRmlsZVBhdGgoKSwgc3VjY2Vzcyk7Ci0gICAgRVhQRUNUX1RSVUUoc3Vj
Y2Vzcyk7Ci0gICAgRVhQRUNUX1RSVUUoISFtYXBwZWRGaWxlRGF0YSk7Ci0gICAgRVhQRUNUX1RS
VUUobWFwcGVkRmlsZURhdGEuc2l6ZSgpID09IHN0cmxlbihGaWxlU3lzdGVtVGVzdERhdGEpKTsK
LSAgICBFWFBFQ1RfVFJVRShzdHJuc3RyKEZpbGVTeXN0ZW1UZXN0RGF0YSwgc3RhdGljX2Nhc3Q8
Y29uc3QgY2hhcio+KG1hcHBlZEZpbGVEYXRhLmRhdGEoKSksIG1hcHBlZEZpbGVEYXRhLnNpemUo
KSkpOwotfQotCi1URVNUX0YoRmlsZVN5c3RlbVRlc3QsIE1hcHBpbmdFeGlzdGluZ0VtcHR5Rmls
ZSkKLXsKLSAgICBib29sIHN1Y2Nlc3M7Ci0gICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEg
bWFwcGVkRmlsZURhdGEodGVtcEVtcHR5RmlsZVBhdGgoKSwgc3VjY2Vzcyk7Ci0gICAgRVhQRUNU
X1RSVUUoc3VjY2Vzcyk7Ci0gICAgRVhQRUNUX1RSVUUoIW1hcHBlZEZpbGVEYXRhKTsKLX0KLQot
VEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBGaWxlc0hhdmVTYW1lVm9sdW1lKQotewotICAgIEVYUEVD
VF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVzSGF2ZVNhbWVWb2x1bWUodGVtcEZpbGVQYXRoKCksIHNw
YWNlQ29udGFpbmluZ0ZpbGVQYXRoKCkpKTsKLSAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpm
aWxlc0hhdmVTYW1lVm9sdW1lKHNwYWNlQ29udGFpbmluZ0ZpbGVQYXRoKCksIGJhbmdDb250YWlu
aW5nRmlsZVBhdGgoKSkpOwotICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVzSGF2ZVNh
bWVWb2x1bWUoYmFuZ0NvbnRhaW5pbmdGaWxlUGF0aCgpLCBxdW90ZUNvbnRhaW5pbmdGaWxlUGF0
aCgpKSk7Ci19Ci0KLVRFU1RfRihGaWxlU3lzdGVtVGVzdCwgR2V0RmlsZU1ldGFkYXRhU3ltbGlu
aykKLXsKLSAgICBhdXRvIHN5bWxpbmtNZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0
YSh0ZW1wRmlsZVN5bWxpbmtQYXRoKCkpOwotICAgIEFTU0VSVF9UUlVFKHN5bWxpbmtNZXRhZGF0
YS5oYXNWYWx1ZSgpKTsKLSAgICBFWFBFQ1RfVFJVRShzeW1saW5rTWV0YWRhdGEudmFsdWUoKS50
eXBlID09IEZpbGVNZXRhZGF0YTo6VHlwZTo6U3ltYm9saWNMaW5rKTsKLSAgICBFWFBFQ1RfRkFM
U0Uoc3RhdGljX2Nhc3Q8c2l6ZV90PihzeW1saW5rTWV0YWRhdGEudmFsdWUoKS5sZW5ndGgpID09
IHN0cmxlbihGaWxlU3lzdGVtVGVzdERhdGEpKTsKLQotICAgIGF1dG8gdGFyZ2V0TWV0YWRhdGEg
PSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyh0ZW1wRmlsZVN5bWxp
bmtQYXRoKCkpOwotICAgIEFTU0VSVF9UUlVFKHRhcmdldE1ldGFkYXRhLmhhc1ZhbHVlKCkpOwot
ICAgIEVYUEVDVF9UUlVFKHRhcmdldE1ldGFkYXRhLnZhbHVlKCkudHlwZSA9PSBGaWxlTWV0YWRh
dGE6OlR5cGU6OkZpbGUpOwotICAgIEVYUEVDVF9FUShzdHJsZW4oRmlsZVN5c3RlbVRlc3REYXRh
KSwgc3RhdGljX2Nhc3Q8c2l6ZV90Pih0YXJnZXRNZXRhZGF0YS52YWx1ZSgpLmxlbmd0aCkpOwot
fQotCi1URVNUX0YoRmlsZVN5c3RlbVRlc3QsIFVuaWNvZGVEaXJlY3RvcnlOYW1lKQotewotICAg
IFN0cmluZyBwYXRoID0gU3RyaW5nOjpmcm9tVVRGOCgiL3Rlc3QvYVx1MDMwOGxvL3Rlc3QudHh0
Iik7Ci0gICAgU3RyaW5nIGRpcmVjdG9yeU5hbWUgPSBGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1l
KHBhdGgpOwotICAgIFN0cmluZyBleHBlY3RlZERpcmVjdG9yeU5hbWUgPSBTdHJpbmc6OmZyb21V
VEY4KCIvdGVzdC9hXHUwMzA4bG8iKTsKLSAgICBFWFBFQ1RfVFJVRShleHBlY3RlZERpcmVjdG9y
eU5hbWUgPT0gZGlyZWN0b3J5TmFtZSk7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TZWN1cml0eU9yaWdpbi5jcHAgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2VjdXJpdHlPcmlnaW4uY3BwCmluZGV4IGRhNWY0ZmY1ODk4
YTlmMDljOGI4Mzk1YTU1ZGU3MzhmMTY4YzkwOWYuLmE0MWFiNGJjYTM3MWQ0NWRlOGNiNDU4Njg1
YmM5NzRlMzBmNDA2ZjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9TZWN1cml0eU9yaWdpbi5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmNwcApAQCAtMjYsOCArMjYsOCBAQAogCiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiV1RGU3RyaW5nVXRpbGl0aWVzLmgiCi0jaW5jbHVkZSA8V2Vi
Q29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgor
I2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4K
ICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmNwcAppbmRleCA4ZmUzNTY3YzFlMTEzNjkx
ZDg1YjdjNTVhMWY5NjY1OWRlOWQxZjI0Li45YjhiMTNhNzVkNTJmZjk1MWVhZDE4MTg1ZDU2YzM3
OTFiMmQ3YmVkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
U2hhcmVkQnVmZmVyVGVzdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL1NoYXJlZEJ1ZmZlclRlc3QuY3BwCkBAIC0yNiwxMSArMjYsOSBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlclRlc3QuaCIKIAotI2luY2x1ZGUgPFdlYkNv
cmUvRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8
d3RmL01haW5UaHJlYWQuaD4KIAotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KIG5hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJIHsKIAogdm9pZCBTaGFyZWRCdWZmZXJUZXN0OjpTZXRVcCgpCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvRGF0YWJhc2VU
cmFja2VyVGVzdC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9E
YXRhYmFzZVRyYWNrZXJUZXN0Lm1tCmluZGV4IDZhM2M3MDI4MGE0ZWRlMDA5MTAyZWU5OTc2YjM2
N2MyNmFiN2ZlZTcuLjIyMTcxNTZmNmU1NjkxNWE3NWQ0NDg4NGVhZDUxNzE5YTdjNTI5MTEgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9EYXRhYmFz
ZVRyYWNrZXJUZXN0Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9j
b2NvYS9EYXRhYmFzZVRyYWNrZXJUZXN0Lm1tCkBAIC0yNiwxMSArMjYsMTEgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKIAogI2luY2x1ZGUgPFdlYkNvcmUvRGF0YWJhc2VUcmFja2VyLmg+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9PcmlnaW5Mb2Nr
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVEYXRhYmFzZS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvU1FMaXRlU3RhdGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRh
dGEuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2N1
cmwvQ29va2llcy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY3VybC9D
b29raWVzLmNwcAppbmRleCAxYjhkN2ZjM2NkZTUwMjk5ZTMwYWQ2YzZkOGNhMTYyN2YyMzkwYzFm
Li5iNDBiMGQ1YTBhNWU1ZmI1ZjQ5MTlhM2RhMmMyZmVkNmZjYmMxYzRlIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY3VybC9Db29raWVzLmNwcAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY3VybC9Db29raWVzLmNwcApAQCAtMjks
OCArMjksOCBAQAogCiAjaW5jbHVkZSA8V2ViQ29yZS9Db29raWVKYXJEQi5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvQ29va2llVXRpbC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgog
I2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvRG93bmxvYWQubW0KaW5kZXggNjBjYzkzYjM0MGRkNjgwOTQxYzQxYTJhNWFhMGJh
OTIzYjVhZWM2NC4uNjgxYjAyY2E5Yzg3ZGFlYzM3MjYyMjQ2MTdkMWM1OTIwODhkN2E2YyAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5t
bQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1t
CkBAIC0zMyw3ICszMyw2IEBACiAjaW1wb3J0ICJUZXN0LmgiCiAjaW1wb3J0ICJUZXN0UHJvdG9j
b2wuaCIKICNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKLSNpbXBvcnQgPFdlYkNvcmUvRmlsZVN5
c3RlbS5oPgogI2ltcG9ydCA8V2ViS2l0L19XS0Rvd25sb2FkLmg+CiAjaW1wb3J0IDxXZWJLaXQv
X1dLRG93bmxvYWREZWxlZ2F0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLTmF2aWdhdGlvbkRlbGVn
YXRlUHJpdmF0ZS5oPgpAQCAtNDEsNiArNDAsNyBAQAogI2ltcG9ydCA8V2ViS2l0L1dLVUlEZWxl
Z2F0ZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXcuaD4KICNpbXBvcnQgPFdl
YktpdC9XS1dlYlZpZXdDb25maWd1cmF0aW9uLmg+CisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5o
PgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4K
ICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtOTQsMTAgKzk0LDEwIEBAIElHTk9S
RV9XQVJOSU5HU19FTkQKICAgICBFWFBFQ1RfVFJVRShoYXNSZWNlaXZlZFJlc3BvbnNlKTsKICAg
ICBFWFBFQ1RfRVEoX2Rvd25sb2FkLCBkb3dubG9hZCk7CiAKLSAgICBXZWJDb3JlOjpGaWxlU3lz
dGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRsZTsKLSAgICBfZGVzdGluYXRpb25QYXRo
ID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoIlRlc3RXZWJLaXRBUEki
LCBmaWxlSGFuZGxlKTsKLSAgICBFWFBFQ1RfVFJVRShmaWxlSGFuZGxlICE9IFdlYkNvcmU6OkZp
bGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpOwotICAgIFdlYkNvcmU6OkZpbGVT
eXN0ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZp
bGVIYW5kbGUgZmlsZUhhbmRsZTsKKyAgICBfZGVzdGluYXRpb25QYXRoID0gRmlsZVN5c3RlbTo6
b3BlblRlbXBvcmFyeUZpbGUoIlRlc3RXZWJLaXRBUEkiLCBmaWxlSGFuZGxlKTsKKyAgICBFWFBF
Q1RfVFJVRShmaWxlSGFuZGxlICE9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5k
bGUpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsKIAogICAgICphbGxv
d092ZXJ3cml0ZSA9IFlFUzsKICAgICByZXR1cm4gX2Rlc3RpbmF0aW9uUGF0aDsKQEAgLTEwOSw3
ICsxMDksNyBAQCAtICh2b2lkKV9kb3dubG9hZERpZEZpbmlzaDooX1dLRG93bmxvYWQgKilkb3du
bG9hZAogICAgIEVYUEVDVF9FUShleHBlY3RlZFVzZXJJbml0aWF0ZWRTdGF0ZSwgZG93bmxvYWQu
d2FzVXNlckluaXRpYXRlZCk7CiAgICAgRVhQRUNUX1RSVUUoX2V4cGVjdGVkQ29udGVudExlbmd0
aCA9PSBOU1VSTFJlc3BvbnNlVW5rbm93bkxlbmd0aCB8fCBzdGF0aWNfY2FzdDx1aW50NjRfdD4o
X2V4cGVjdGVkQ29udGVudExlbmd0aCkgPT0gX3JlY2VpdmVkQ29udGVudExlbmd0aCk7CiAgICAg
RVhQRUNUX1RSVUUoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjb250ZW50c0VxdWFs
QXRQYXRoOl9kZXN0aW5hdGlvblBhdGggYW5kUGF0aDpbc291cmNlVVJMIHBhdGhdXSk7Ci0gICAg
V2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShfZGVzdGluYXRpb25QYXRoKTsKKyAgICBG
aWxlU3lzdGVtOjpkZWxldGVGaWxlKF9kZXN0aW5hdGlvblBhdGgpOwogICAgIGlzRG9uZSA9IHRy
dWU7CiB9CiAKQEAgLTM5NywxMCArMzk3LDEwIEBAIElHTk9SRV9XQVJOSU5HU19FTkQKICAgICBF
WFBFQ1RfVFJVRShoYXNSZWNlaXZlZFJlc3BvbnNlKTsKICAgICBFWFBFQ1RfRVEoX2Rvd25sb2Fk
LCBkb3dubG9hZCk7CiAKLSAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5k
bGUgZmlsZUhhbmRsZTsKLSAgICBfZGVzdGluYXRpb25QYXRoID0gV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6b3BlblRlbXBvcmFyeUZpbGUoIlRlc3RXZWJLaXRBUEkiLCBmaWxlSGFuZGxlKTsKLSAgICBF
WFBFQ1RfVFJVRShmaWxlSGFuZGxlICE9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmludmFsaWRQbGF0
Zm9ybUZpbGVIYW5kbGUpOwotICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxl
SGFuZGxlKTsKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRsZTsK
KyAgICBfZGVzdGluYXRpb25QYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoIlRl
c3RXZWJLaXRBUEkiLCBmaWxlSGFuZGxlKTsKKyAgICBFWFBFQ1RfVFJVRShmaWxlSGFuZGxlICE9
IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpOworICAgIEZpbGVTeXN0ZW06
OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsKIAogICAgICphbGxvd092ZXJ3cml0ZSA9IFlFUzsKICAg
ICByZXR1cm4gX2Rlc3RpbmF0aW9uUGF0aDsKQEAgLTQxNCw3ICs0MTQsNyBAQCAtICh2b2lkKV9k
b3dubG9hZERpZEZpbmlzaDooX1dLRG93bmxvYWQgKilkb3dubG9hZAogICAgIE5TU3RyaW5nKiBl
eHBlY3RlZENvbnRlbnQgPSBAIntcInhcIjo0MixcInNcIjpcImhlbGxvLCB3b3JsZFwifSI7CiAg
ICAgTlNEYXRhKiBleHBlY3RlZERhdGEgPSBbZXhwZWN0ZWRDb250ZW50IGRhdGFVc2luZ0VuY29k
aW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKICAgICBFWFBFQ1RfVFJVRShbW1tOU0ZpbGVNYW5h
Z2VyIGRlZmF1bHRNYW5hZ2VyXSBjb250ZW50c0F0UGF0aDpfZGVzdGluYXRpb25QYXRoXSBpc0Vx
dWFsVG9EYXRhOmV4cGVjdGVkRGF0YV0pOwotICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0
ZUZpbGUoX2Rlc3RpbmF0aW9uUGF0aCk7CisgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShfZGVz
dGluYXRpb25QYXRoKTsKICAgICBpc0RvbmUgPSB0cnVlOwogfQogCkBAIC00NTcsMTAgKzQ1Nywx
MCBAQCBJR05PUkVfV0FSTklOR1NfQkVHSU4oImRlcHJlY2F0ZWQtaW1wbGVtZW50YXRpb25zIikK
IC0gKE5TU3RyaW5nICopX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRlY2lkZURl
c3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOihOU1N0cmluZyAqKWZpbGVuYW1lIGFsbG93
T3ZlcndyaXRlOihCT09MICopYWxsb3dPdmVyd3JpdGUKIElHTk9SRV9XQVJOSU5HU19FTkQKIHsK
LSAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRsZTsK
LSAgICBfZGVzdGluYXRpb25QYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6b3BlblRlbXBvcmFy
eUZpbGUoIlRlc3RXZWJLaXRBUEkiLCBmaWxlSGFuZGxlKTsKLSAgICBFWFBFQ1RfVFJVRShmaWxl
SGFuZGxlICE9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUp
OwotICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsKKyAgICBG
aWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRsZTsKKyAgICBfZGVzdGluYXRp
b25QYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoIlRlc3RXZWJLaXRBUEkiLCBm
aWxlSGFuZGxlKTsKKyAgICBFWFBFQ1RfVFJVRShmaWxlSGFuZGxlICE9IEZpbGVTeXN0ZW06Omlu
dmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxl
SGFuZGxlKTsKICAgICAqYWxsb3dPdmVyd3JpdGUgPSBZRVM7CiAgICAgcmV0dXJuIF9kZXN0aW5h
dGlvblBhdGg7CiB9CkBAIC00ODcsNyArNDg3LDcgQEAgLSAodm9pZClfZG93bmxvYWREaWRGaW5p
c2g6KF9XS0Rvd25sb2FkICopZG93bmxvYWQKICAgICBpZiAocmVkaXJlY3RDaGFpbi5jb3VudCA+
IDIpCiAgICAgICAgIEVYUEVDVF9TVFJFUSgiaHR0cDovL3Bhc3MvIiwgW3JlZGlyZWN0Q2hhaW5b
Ml0uYWJzb2x1dGVTdHJpbmcgVVRGOFN0cmluZ10pOwogCi0gICAgV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6ZGVsZXRlRmlsZShfZGVzdGluYXRpb25QYXRoKTsKKyAgICBGaWxlU3lzdGVtOjpkZWxldGVG
aWxlKF9kZXN0aW5hdGlvblBhdGgpOwogICAgIGlzRG9uZSA9IHRydWU7CiB9CiAKQEAgLTYzMiwx
NyArNjMyLDE3IEBAIC0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRl
Y2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lCiB7CiAgICAgRVhQRUNUX1RSVUUo
W2ZpbGVuYW1lIGhhc1N1ZmZpeDpAIi51c2R6Il0pOwogCi0gICAgV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGVIYW5kbGU7Ci0gICAgX2Rlc3RpbmF0aW9uUGF0aCA9
IFdlYkNvcmU6OkZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKGZpbGVuYW1lLCBmaWxlSGFu
ZGxlKTsKLSAgICBFWFBFQ1RfVFJVRShmaWxlSGFuZGxlICE9IFdlYkNvcmU6OkZpbGVTeXN0ZW06
OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpOwotICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmNs
b3NlRmlsZShmaWxlSGFuZGxlKTsKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUg
ZmlsZUhhbmRsZTsKKyAgICBfZGVzdGluYXRpb25QYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBv
cmFyeUZpbGUoZmlsZW5hbWUsIGZpbGVIYW5kbGUpOworICAgIEVYUEVDVF9UUlVFKGZpbGVIYW5k
bGUgIT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7CisgICAgRmlsZVN5
c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOwogCiAgICAgY29tcGxldGlvbkhhbmRsZXIoWUVT
LCBfZGVzdGluYXRpb25QYXRoKTsKIH0KIAogLSAodm9pZClfZG93bmxvYWREaWRGaW5pc2g6KF9X
S0Rvd25sb2FkICopZG93bmxvYWQKIHsKLSAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVG
aWxlKF9kZXN0aW5hdGlvblBhdGgpOworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoX2Rlc3Rp
bmF0aW9uUGF0aCk7CiAgICAgaXNEb25lID0gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZFByb2dyZXNzLm1tIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZFByb2dyZXNzLm1tCmlu
ZGV4IGY1NjBkZjNmNGM0MmUyNGU2NWIzYmY2Mjg3MWI1ZmFkYzE5YTVmNjUuLjNlYjAzZjA0YTFk
ZDhhOGUxNzY3ODNkNWVmZmQ0ODM0N2E5MGRhMDAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWRQcm9ncmVzcy5tbQorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkUHJvZ3Jlc3MubW0KQEAgLTI4
LDcgKzI4LDYgQEAKICNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKICNpbXBvcnQgIlV0aWxpdGll
cy5oIgogI2ltcG9ydCA8Rm91bmRhdGlvbi9OU1Byb2dyZXNzLmg+Ci0jaW1wb3J0IDxXZWJDb3Jl
L0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPFdlYktpdC9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xs
ZXIuaD4KICNpbXBvcnQgPFdlYktpdC9XS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaD4KICNp
bXBvcnQgPFdlYktpdC9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oPgpAQCAtMzcsNiArMzYsNyBAQAog
I2ltcG9ydCA8V2ViS2l0L19XS0Rvd25sb2FkRGVsZWdhdGUuaD4KICNpbXBvcnQgPHBhbC9zcGkv
Y29jb2EvTlNQcm9ncmVzc1NQSS5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CisjaW1wb3J0
IDx3dGYvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8
d3RmL1dlYWtPYmpDUHRyLmg+CiAKQEAgLTM4MCwxMCArMzgwLDEwIEBAIC0gKHZvaWQpX2Rvd25s
b2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3Rl
ZEZpbGVuYW1lCiB7CiAgICAgRVhQRUNUX0VRKGRvd25sb2FkLCBtX2Rvd25sb2FkLmdldCgpKTsK
IAotICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlSGFuZGxl
OwotICAgIFJldGFpblB0cjxOU1N0cmluZz4gcGF0aCA9IChOU1N0cmluZyAqKVdlYkNvcmU6OkZp
bGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJUZXN0V2ViS2l0QVBJIiwgZmlsZUhhbmRsZSk7
Ci0gICAgRVhQRUNUX1RSVUUoZmlsZUhhbmRsZSAhPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjppbnZh
bGlkUGxhdGZvcm1GaWxlSGFuZGxlKTsKLSAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpjbG9zZUZp
bGUoZmlsZUhhbmRsZSk7CisgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGVI
YW5kbGU7CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBwYXRoID0gKE5TU3RyaW5nICopRmlsZVN5
c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoIlRlc3RXZWJLaXRBUEkiLCBmaWxlSGFuZGxlKTsKKyAg
ICBFWFBFQ1RfVFJVRShmaWxlSGFuZGxlICE9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZp
bGVIYW5kbGUpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsKIAogICAg
IGNvbXBsZXRpb25IYW5kbGVyKFlFUywgcGF0aC5nZXQoKSk7CiB9CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL3dpbi9QbGF0Zm9ybVV0aWxpdGllc1dpbi5jcHAgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL3dpbi9QbGF0Zm9ybVV0aWxpdGllc1dpbi5jcHAKaW5kZXggMDU2YmZmNzc4Mjk1
MjhiMTI5MGYxMmUzOWFiMjM4YjBmNjg2OGI4Ni4uMzVmMjJlMmE4YjFiZmU1MGE0NzA1OTA5MTgz
NDcyMzY3OWEzZDdmZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS93aW4vUGxhdGZv
cm1VdGlsaXRpZXNXaW4uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL1BsYXRmb3Jt
VXRpbGl0aWVzV2luLmNwcApAQCAtMjcsNyArMjcsNyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtVXRp
bGl0aWVzLmgiCiAKICNpbmNsdWRlIDxTaGx3YXBpLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9GaWxl
U3lzdGVtLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvVVJM
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+CiAKQEAgLTQw
LDE5ICs0MCwxOSBAQCBzdGF0aWMgU3RyaW5nIG1vZHVsZURpcmVjdG9yeSgpCiAgICAgd2NoYXJf
dCBmaWxlbmFtZVtidWZmZXJMZW5ndGhdOwogICAgIGF1dG8gbGVuID0gR2V0TW9kdWxlRmlsZU5h
bWUobnVsbHB0ciwgZmlsZW5hbWUsIGJ1ZmZlckxlbmd0aCk7CiAgICAgQVNTRVJUKGxlbiA+IDAp
OwotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKHdjaGFyVG9T
dHJpbmcoZmlsZW5hbWUsIGxlbikpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpkaXJlY3RvcnlO
YW1lKHdjaGFyVG9TdHJpbmcoZmlsZW5hbWUsIGxlbikpOwogfQogCiBXS1N0cmluZ1JlZiBjcmVh
dGVJbmplY3RlZEJ1bmRsZVBhdGgoKQogewotICAgIGF1dG8gcGF0aCA9IFdlYkNvcmU6OkZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtb2R1bGVEaXJlY3RvcnkoKSwgU3RyaW5n
KEwiVGVzdFdlYktpdEFQSUluamVjdGVkQnVuZGxlLmRsbCIpKTsKKyAgICBhdXRvIHBhdGggPSBG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobW9kdWxlRGlyZWN0b3J5KCksIFN0
cmluZyhMIlRlc3RXZWJLaXRBUElJbmplY3RlZEJ1bmRsZS5kbGwiKSk7CiAgICAgcmV0dXJuIFdL
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHBhdGgudXRmOCgpLmRhdGEoKSk7CiB9CiAKIFdL
VVJMUmVmIGNyZWF0ZVVSTEZvclJlc291cmNlKGNvbnN0IGNoYXIqIHJlc291cmNlLCBjb25zdCBj
aGFyKiBleHRlbnNpb24pCiB7CiAgICAgU3RyaW5nIGZpbGVuYW1lID0gU3RyaW5nOjpmb3JtYXQo
Ii4uXFwuLlxcLi5cXFRvb2xzXFxUZXN0V2ViS2l0QVBJXFxUZXN0c1xcV2ViS2l0XFwlcy4lcyIs
IHJlc291cmNlLCBleHRlbnNpb24pOwotICAgIGF1dG8gdXJsID0gVVJMOjpmaWxlVVJMV2l0aEZp
bGVTeXN0ZW1QYXRoKFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChtb2R1bGVEaXJlY3RvcnkoKSwgZmlsZW5hbWUpKTsKKyAgICBhdXRvIHVybCA9IFVSTDo6Zmls
ZVVSTFdpdGhGaWxlU3lzdGVtUGF0aChGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQobW9kdWxlRGlyZWN0b3J5KCksIGZpbGVuYW1lKSk7CiAgICAgcmV0dXJuIFdLVVJMQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKHVybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359827</attachid>
            <date>2019-01-22 18:03:06 -0800</date>
            <delta_ts>2019-01-22 18:17:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193602-20190122180305.patch</filename>
            <type>text/plain</type>
            <size>437279</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwMzExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDE3YjJmOWRmY2FmNDM2MGJmOWZlMjQ2
ZDQ4ZmFkYmNmNTIyYTUwZjcuLjllODc5NmM0MGQ0ZGRjNDYwMWUyZWI0ODc1ZDVjZTA3ZTUxMTE4
ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTktMDEtMjIgIFJvc3MgS2lyc2xpbmcgIDxyb3Nz
LmtpcnNsaW5nQHNvbnkuY29tPgorCisgICAgICAgIE1vdmUgRmlsZVN5c3RlbSB0byBXVEYKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzYwMgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV1RGLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0OgorICAg
ICAgICAqIHd0Zi9GaWxlTWV0YWRhdGEuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0ZpbGVNZXRhZGF0YS5oLgorICAgICAgICAqIHd0Zi9GaWxlU3lzdGVtLmNwcDogUmVu
YW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwLgorICAgICAg
ICAqIHd0Zi9GaWxlU3lzdGVtLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9GaWxlU3lzdGVtLmguCisgICAgICAgICogd3RmL1BsYXRmb3JtR1RLLmNtYWtlOgorICAgICAg
ICAqIHd0Zi9QbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1QbGF5U3Rh
dGlvbi5jbWFrZToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1XUEUuY21ha2U6CisgICAgICAgICog
d3RmL1BsYXRmb3JtV2luLmNtYWtlOgorICAgICAgICAqIHd0Zi9jZi9GaWxlU3lzdGVtQ0YuY3Bw
OiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvRmlsZVN5c3RlbUNGLmNw
cC4KKyAgICAgICAgKiB3dGYvY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tOiBSZW5hbWVkIGZyb20g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tLgorICAgICAg
ICAqIHd0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwLgorICAgICAgICAqIHd0Zi9tYWMv
RmlsZVN5c3RlbU1hYy5tbTogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9GaWxlU3lzdGVtTWFjLm1tLgorICAgICAgICAqIHd0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVgu
Y3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3Rl
bVBPU0lYLmNwcC4KKyAgICAgICAgKiB3dGYvc3BpL21hYy9NZXRhZGF0YVNQSS5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvbWFjL01ldGFkYXRhU1BJLmguCisgICAg
ICAgICogd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2luLmNwcC4KKyAgICAgICAgKiB3dGYvd2luL1Bh
dGhXYWxrZXIuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bh
dGhXYWxrZXIuY3BwLgorICAgICAgICAqIHd0Zi93aW4vUGF0aFdhbGtlci5oOiBSZW5hbWVkIGZy
b20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BhdGhXYWxrZXIuaC4KKwogMjAxOS0wMS0y
MiAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNvbT4KIAogICAgICAgICBDYWNoZSBi
eXRlY29kZSB0byBkaXNrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmEyNWZjOThmMjMzYzViMzNlNjU0NzhkY2Vi
ODAxMjVjNWZiZTQ1YS4uN2Q5ZDBmMDIwZDFhYTkwZTNiM2JiODQyNzJkYTIzYWQwM2M2ZjE2OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDgxIEBACisyMDE5LTAxLTIyICBSb3NzIEtpcnNsaW5nICA8
cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KKworICAgICAgICBNb3ZlIEZpbGVTeXN0ZW0gdG8gV1RG
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM2MDIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNlc3Npb24uY3BwOgorICAgICAgICAqIE1vZHVsZXMv
ZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2VudHJpZXNh
cGkvRmlsZVN5c3RlbUVudHJ5LmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZUlkZW50aWZpZXIuY3BwOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5jcHA6CisgICAgICAgICogTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0
YWJhc2UvT3JpZ2luTG9jay5jcHA6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9Pcmln
aW5Mb2NrLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9jb2NvYS9EYXRhYmFzZU1h
bmFnZXJDb2NvYS5tbToKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiBQ
bGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtV2luLmNtYWtlOgor
ICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0dDQ29udHJvbGxlci5jcHA6CisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlckl0ZW0u
Y3BwOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tOgor
ICAgICAgICAqIGZpbGVhcGkvRmlsZS5jcHA6CisgICAgICAgICogZmlsZWFwaS9GaWxlQ29jb2Eu
bW06CisgICAgICAgICogaHRtbC9GaWxlSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKiBodG1sL0Zp
bGVMaXN0Q3JlYXRvci5jcHA6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVIb3N0LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2UuY3BwOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgICogcGFnZS9T
ZWN1cml0eU9yaWdpbi5jcHA6CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL0ZpbGVIYW5kbGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9G
aWxlU3RyZWFtLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlU3RyZWFtLmg6CisgICAgICAg
ICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vU291cmNlc0dM
aWIudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL0ZpbGVNb25pdG9yQ29jb2EubW06Cisg
ICAgICAgICogcGxhdGZvcm0vZ2xpYi9GaWxlTW9uaXRvckdMaWIuY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW06
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lv
bkFWU3RyZWFtU2Vzc2lvbi5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLm1tOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mv
UXVpY2tMb29rLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0
ZWJvYXJkLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9C
bG9iUmVnaXN0cnlJbXBsLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNv
dXJjZUhhbmRsZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1t
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5Lmg6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRm9ybURhdGFTdHJlYW0uaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9tYWMvQmxvYkRhdGFGaWxlUmVmZXJlbmNlTWFjLm1tOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9z
cWwvU1FMaXRlRmlsZVN5c3RlbS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9oeXBoZW4v
SHlwaGVuYXRpb25MaWJIeXBoZW4uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TZWFyY2hQ
b3B1cE1lbnVEQi5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsuY3BwOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJUaGVtZVdpbi5jcHA6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9S
ZWdpc3RyYXRpb25EYXRhYmFzZS5jcHA6CisKIDIwMTktMDEtMjIgIE1pY2hhZWwgQ2F0YW56YXJv
ICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGZpeCAtV3Np
Z24tY29tcGFyZSB3YXJuaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCAzOWQ4NGNmYjcyYjRlNDI1
YmQ5NzNjOTdiNDY4ODlhZjVhYWQ1OTI1Li40MWE1ZmQ4ZmRmODQxZDM3YTE5OTk3NGE1ZmMyMzFi
MDk3ZTg2ZGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxOS0wMS0y
MiAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CisKKyAgICAgICAgTW92
ZSBGaWxlU3lzdGVtIHRvIFdURgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTkzNjAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBQQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBw
YWwvUGxhdGZvcm1NYWMuY21ha2U6CisKIDIwMTktMDEtMjIgIERhdmlkIEtpbHplciAgPGRka2ls
emVyQGFwcGxlLmNvbT4KIAogICAgICAgICBTd2l0Y2ggcmVtYWluaW5nIFF1aWNrTG9vayBzb2Z0
LWxpbmtpbmcgaW4gV2ViQ29yZSwgV2ViS2l0IG92ZXIgdG8gUXVpY2tMb29rU29mdExpbmsue2Nw
cCxofQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCBmODg0Njk3ZTYxNTQxMGNlOWJmOTMwZjEzOTIzMDI0MjFlNGQ2ZDRk
Li41ZDM1OWRhNjdjNWUzZGE3ODAzMDg1NzE4MzQ0ZWYxMzFhOTE4YTQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDgyIEBACisyMDE5LTAxLTIyICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bz
b255LmNvbT4KKworICAgICAgICBNb3ZlIEZpbGVTeXN0ZW0gdG8gV1RGCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM2MDIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmg6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZUJsb2JTdG9yYWdlLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsQ29jb2EubW06CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsU291cC5jcHA6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RhdGlzdGljcy5jcHA6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHA6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW06CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nlc3NNYWMubW06CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwOgorICAgICAgICAqIFBsdWdp
blByb2Nlc3MvdW5peC9QbHVnaW5Qcm9jZXNzTWFpblVuaXguY3BwOgorICAgICAgICAqIFNoYXJl
ZC9QZXJzaXN0ZW5jeVV0aWxzLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvUGx1Z2lucy9OZXRzY2Fw
ZS91bml4L05ldHNjYXBlUGx1Z2luTW9kdWxlVW5peC5jcHA6CisgICAgICAgICogU2hhcmVkL1Bs
dWdpbnMvdW5peC9QbHVnaW5TZWFyY2hQYXRoLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvV2ViTWVt
b3J5U2FtcGxlci5oOgorICAgICAgICAqIFNoYXJlZC9nbGliL1Byb2Nlc3NFeGVjdXRhYmxlUGF0
aEdMaWIuY3BwOgorICAgICAgICAqIFNoYXJlZC9pb3MvQ2hpbGRQcm9jZXNzSU9TLm1tOgorICAg
ICAgICAqIFNoYXJlZC9tYWMvQ2hpbGRQcm9jZXNzTWFjLm1tOgorICAgICAgICAqIFNoYXJlZC9t
YWMvU2FuZGJveEV4dGVuc2lvbk1hYy5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUNv
bnRlbnRSdWxlTGlzdFN0b3JlLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL0FQ
SVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIv
QVBJV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xp
Yi9JY29uRGF0YWJhc2UuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRG
YXZpY29uRGF0YWJhc2UuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRG
aWxlQ2hvb3NlclJlcXVlc3QuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRXZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vi
c2l0ZURhdGFNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dpbi9BUElXZWJz
aXRlRGF0YVN0b3JlV2luLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJB
dXRvbWF0aW9uU2Vzc2lvbi5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL0Rvd25sb2Fk
Q2xpZW50Lm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29h
Lm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAgICAg
KiBVSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3BwOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0xh
dW5jaGVyL2dsaWIvQnViYmxld3JhcExhdW5jaGVyLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
TGF1bmNoZXIvZ2xpYi9Qcm9jZXNzTGF1bmNoZXJHTGliLmNwcDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvUGx1Z2lucy9ndGsvUGx1Z2luSW5mb0NhY2hlLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
UGx1Z2lucy9tYWMvUGx1Z2luUHJvY2Vzc1Byb3h5TWFjLm1tOgorICAgICAgICAqIFVJUHJvY2Vz
cy9QbHVnaW5zL3VuaXgvUGx1Z2luSW5mb1N0b3JlVW5peC5jcHA6CisgICAgICAgICogVUlQcm9j
ZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJveHlVbml4LmNwcDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5jcHA6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6Cisg
ICAgICAgICogVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Byb3h5R0xpYi5jcHA6CisgICAgICAg
ICogVUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHA6CisgICAgICAgICogVUlQ
cm9jZXNzL2d0ay9XZWJQcm9jZXNzUG9vbEd0ay5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9m
b3Jtcy9XS0ZpbGVVcGxvYWRQYW5lbC5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlBh
Z2VQcm94eU1hYy5tbToKKyAgICAgICAgKiBVSVByb2Nlc3Mvd2luL1dlYlByb2Nlc3NQb29sV2lu
LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwOgorICAgICAgICAqIFVJ
UHJvY2Vzcy93cGUvV2ViUHJvY2Vzc1Bvb2xXUEUuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0RXh0ZW5zaW9uTWFuYWdlci5jcHA6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9nbGliL0luamVjdGVkQnVuZGxlR2xpYi5j
cHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1h
bmFnZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZVBsdWdpblN0cmVhbS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9T
ZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
Z3RrL1dlYkluc3BlY3RvclVJR3RrLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
d2luL1dlYkluc3BlY3RvclVJV2luLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dl
YlByb2Nlc3NDb2NvYS5tbToKKwogMjAxOS0wMS0yMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCBhbiBpbnRlcm5hbCBidWlsZCBmYWls
dXJlIGFmdGVyIHIyNDAyOTIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKaW5kZXggODdmZThjM2E4YzYxNmEw
NDc1ZDRhZjM3NDY5NGQ0MjZlYzZmZWY4NC4uNTUxNjRhMTk4NDk0ZTYwZTVlNzNlYTFhMDlhYjk2
OTE4NGY3ZjY1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxOS0w
MS0yMiAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CisKKyAgICAgICAg
TW92ZSBGaWxlU3lzdGVtIHRvIFdURgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTkzNjAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHA6CisgICAgICAgICog
U3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIuY3BwOgorICAgICAgICAqIFN0b3JhZ2UvU3RvcmFn
ZVRyYWNrZXIuY3BwOgorCiAyMDE5LTAxLTIyICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVu
c2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRml4IHNvbWUgYnVpbGRzIGFmdGVyIHIyNDAyOTIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBjMDdmNDBmMmJhYjVkODkxZmZmMzg3Njgy
YTU0YWE3MTk5NTdkMjI1Li40NjQ4ZGIwOTQxNTA3NzFhNjU1NWYyNzMwMjk2OTY4Nzk1ZDY4MDA2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTktMDEt
MjIgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgorCisgICAgICAgIE1v
dmUgRmlsZVN5c3RlbSB0byBXVEYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5MzYwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogTWlzYy9XZWJOU0ZpbGVNYW5hZ2VyRXh0cmFzLm1tOgorICAgICAgICAq
IFN0b3JhZ2UvV2ViRGF0YWJhc2VQcm92aWRlci5tbToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZp
ZXcubW06CisKIDIwMTktMDEtMjIgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Vi
a2l0Lm9yZz4KIAogICAgICAgICBNb3ZlIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiBvd25lcnNoaXAg
dG8gTmV0d29ya1Byb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCA0YTZjOTAz
YmFmMGVlMjFmNmQ4NDE1MzYyOGNmY2FlNTg2ZWNkMTVkLi5iMWViNjU3NDYyYzc2ODVmYTllZjM3
YjFhNGUxODAxZjYxZjQwODA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTkgQEAKKzIwMTktMDEtMjIgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnku
Y29tPgorCisgICAgICAgIE1vdmUgRmlsZVN5c3RlbSB0byBXVEYKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzYwMgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5j
cHA6CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5QYWNrYWdlLmg6CisgICAgICAgICogUGx1Z2lu
cy9QbHVnaW5TdHJlYW0uaDoKKyAgICAgICAgKiBXZWJBcHBsaWNhdGlvbkNhY2hlLmNwcDoKKyAg
ICAgICAgKiBXZWJEYXRhYmFzZU1hbmFnZXIuY3BwOgorICAgICAgICAqIFdlYkRvd25sb2FkQ3Vy
bC5jcHA6CisgICAgICAgICogV2ViUHJlZmVyZW5jZXMuY3BwOgorICAgICAgICAqIFdlYlZpZXcu
Y3BwOgorCiAyMDE5LTAxLTIyICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgTW92ZSBOZXR3b3JrU3RvcmFnZVNlc3Npb24gb3duZXJzaGlwIHRv
IE5ldHdvcmtQcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCBhMjIzOTQ5MGQxMTJkY2E0NmE1YWE0YmNkZWQzNWZkYmNhYWVjOWU5Li5kMDhjNzlmMmI4
M2E4ZTEzZmVkZGI5Y2MxMTlmMzFhMWE5Zjk3NjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dU
Ri54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTg5LDYgKzg5LDExIEBACiAJCTkzOTM0QkQ1MThBMUYxNjkw
MEQwRDZBMSAvKiBTdHJpbmdWaWV3Q0YuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTM5MzRCRDQxOEExRjE2OTAwRDBENkExIC8qIFN0cmluZ1ZpZXdD
Ri5jcHAgKi87IH07CiAJCTkzRjE5OTNFMTlENzk1OEQwMEMyMzkwQiAvKiBTdHJpbmdWaWV3LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjE5OTNE
MTlENzk1OEQwMEMyMzkwQiAvKiBTdHJpbmdWaWV3LmNwcCAqLzsgfTsKIAkJOUJDNzBGMDUxNzZD
Mzc5RDAwMTAxREVDIC8qIEF0b21pY1N0cmluZ1RhYmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCQzcwRjA0MTc2QzM3OUQwMDEwMURFQyAvKiBB
dG9taWNTdHJpbmdUYWJsZS5jcHAgKi87IH07CisJCUEzMzFEOTVCMjFGMjQ5OTIwMDlGMDJBQSAv
KiBGaWxlU3lzdGVtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEEzMzFEOTVBMjFGMjQ5OTIwMDlGMDJBQSAvKiBGaWxlU3lzdGVtLmNwcCAqLzsgfTsK
KwkJQTMzMUQ5NUQyMUYyNDlFNDAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1DRi5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMzMxRDk1QzIxRjI0OUU0MDA5
RjAyQUEgLyogRmlsZVN5c3RlbUNGLmNwcCAqLzsgfTsKKwkJQTMzMUQ5NUYyMUYyNDlGNjAwOUYw
MkFBIC8qIEZpbGVTeXN0ZW1Db2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEEzMzFEOTVFMjFGMjQ5RjYwMDlGMDJBQSAvKiBGaWxlU3lzdGVtQ29j
b2EubW0gKi87IH07CisJCUEzMzFEOTYxMjFGMjRBMEEwMDlGMDJBQSAvKiBGaWxlU3lzdGVtTWFj
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTMzMUQ5
NjAyMUYyNEEwQTAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1NYWMubW0gKi87IH07CisJCUEzMzFEOTY3
MjFGMjRBQkQwMDlGMDJBQSAvKiBGaWxlU3lzdGVtUE9TSVguY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTMzMUQ5NjYyMUYyNEFCRDAwOUYwMkFBIC8q
IEZpbGVTeXN0ZW1QT1NJWC5jcHAgKi87IH07CiAJCUEzQjcyNUVDOTg3NDQ2QUQ5M0YxQTQ0MCAv
KiBSYW5kb21EZXZpY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQzhGNTk3Q0EyQTU3NDE3RkJBQjkyRkQ2IC8qIFJhbmRvbURldmljZS5jcHAgKi87
IH07CiAJCUEzRTRERDkzMUYzQTgwMzQwMERFRDBCNCAvKiBUZXh0U3RyZWFtLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzRTRERDkxMUYzQTgwMzQw
MERFRDBCNCAvKiBUZXh0U3RyZWFtLmNwcCAqLzsgfTsKIAkJQTVCQTE1RjMxODI0MzNBOTAwQTgy
RTY5IC8qIFN0cmluZ0NvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTVCQTE1RjIxODI0MzNBOTAwQTgyRTY5IC8qIFN0cmluZ0NvY29hLm1tICov
OyB9OwpAQCAtNDMwLDggKzQzNSwxNiBAQAogCQk5QzY3QzU0MjU4OTM0OEUyODVCNDk2OTkgLyog
SW5kZXhlZENvbnRhaW5lckl0ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEluZGV4ZWRDb250YWluZXJJdGVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBMzBENDEyQzFGMERFMEJBMDBCNzE5NTQgLyogU29mdExpbmtpbmcuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU29mdExpbmtpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQTMwRDQxMkQxRjBERTEzRjAwQjcxOTU0IC8qIFNvZnRMaW5raW5nLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvZnRMaW5raW5nLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUEzMzFEOTU4MjFGMjQ5NzgwMDlGMDJBQSAvKiBGaWxlTWV0YWRh
dGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmlsZU1ldGFkYXRhLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEzMzFEOTU5MjFGMjQ5OTIwMDlGMDJBQSAvKiBG
aWxlU3lzdGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbGVTeXN0ZW0u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTMzMUQ5NUEyMUYyNDk5MjAwOUYwMkFB
IC8qIEZpbGVTeXN0ZW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
RmlsZVN5c3RlbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEzMzFEOTVDMjFG
MjQ5RTQwMDlGMDJBQSAvKiBGaWxlU3lzdGVtQ0YuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRmlsZVN5c3RlbUNGLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQTMzMUQ5NUUyMUYyNDlGNjAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1Db2NvYS5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZpbGVTeXN0ZW1Db2NvYS5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTMzMUQ5NjAyMUYyNEEwQTAwOUYwMkFBIC8q
IEZpbGVTeXN0ZW1NYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBGaWxlU3lzdGVtTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMzMxRDk2
NjIxRjI0QUJEMDA5RjAyQUEgLyogRmlsZVN5c3RlbVBPU0lYLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZpbGVTeXN0ZW1QT1NJWC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUEzNkUxNkY3MjE2RkY4MjgwMDhERDg3RSAvKiBXVEZTZW1hcGhvcmUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV1RGU2VtYXBob3JlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzQUI2RTZBMUYzRTFBRDYwMDlDMTRCMSAvKiBWYWx1
ZVRvU3RyaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZhbHVlVG9TdHJp
bmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTNEMjczQjkyMUYyRUU5MTAwODY2
OTcxIC8qIE1ldGFkYXRhU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1l
dGFkYXRhU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzRTRERDkxMUYzQTgw
MzQwMERFRDBCNCAvKiBUZXh0U3RyZWFtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFRleHRTdHJlYW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
M0U0REQ5MjFGM0E4MDM0MDBERUQwQjQgLyogVGV4dFN0cmVhbS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBUZXh0U3RyZWFtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUE1MDk4QUZGMUMxNjlFMDcwMDA4Nzc5NyAvKiBTYW5kYm94U1BJLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNhbmRib3hTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTcxNyw2ICs3MzAsNyBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJNUMxRjA1OTEy
MTY0MzU2QjAwMzkzMDJDIC8qIENGVVJMRXh0cmFzLmNwcCAqLywKIAkJCQk1QzFGMDU5MjIxNjQz
NTZCMDAzOTMwMkMgLyogQ0ZVUkxFeHRyYXMuaCAqLywKKwkJCQlBMzMxRDk1QzIxRjI0OUU0MDA5
RjAyQUEgLyogRmlsZVN5c3RlbUNGLmNwcCAqLywKIAkJCQlDMkJDRkM0MTFGNjFENjE2MDBDOTIy
MkMgLyogTGFuZ3VhZ2VDRi5jcHAgKi8sCiAJCQkJMkNERUQwRUUxODExNUMzODAwNERCQTcwIC8q
IFJ1bkxvb3BDRi5jcHAgKi8sCiAJCQkJMUFGREU2NDcxOTUyMDFDMzAwQzQ4RkZBIC8qIFR5cGVD
YXN0c0NGLmggKi8sCkBAIC03NzQsNiArNzg4LDIyIEBACiAJCQluYW1lID0gU291cmNlOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJQTMzMUQ5NjMyMUYyNEEyRTAwOUYwMkFB
IC8qIHBvc2l4ICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJ
CQlBMzMxRDk2NjIxRjI0QUJEMDA5RjAyQUEgLyogRmlsZVN5c3RlbVBPU0lYLmNwcCAqLywKKwkJ
CSk7CisJCQlwYXRoID0gcG9zaXg7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9Owor
CQlBM0QyNzNCODIxRjJFRTdCMDA4NjY5NzEgLyogbWFjICovID0geworCQkJaXNhID0gUEJYR3Jv
dXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlBM0QyNzNCOTIxRjJFRTkxMDA4NjY5NzEgLyogTWV0
YWRhdGFTUEkuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gbWFjOworCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKKwkJfTsKIAkJQTVCQTE1RjExODI0MzM5RjAwQTgyRTY5IC8qIGNvY29hICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTgwNyw2ICs4MzcsNyBA
QAogCQkJCTFGQTQ3Qzg3MTUyNTAyREEwMDU2OEQxQiAvKiBpb3MgKi8sCiAJCQkJQThBNDcyQzQx
NTFBODI1QTAwNDEyM0ZGIC8qIG1hYyAqLywKIAkJCQlFNDNBNDY4NTFFMjI4QjU3MDAyNzZCMDUg
LyogcGVyc2lzdGVuY2UgKi8sCisJCQkJQTMzMUQ5NjMyMUYyNEEyRTAwOUYwMkFBIC8qIHBvc2l4
ICovLAogCQkJCUNFRjQ4MjBDMTlEQTM0NzYwMENDMDRCOCAvKiBzcGkgKi8sCiAJCQkJQThBNDcz
MUIxNTFBODI1QjAwNDEyM0ZGIC8qIHRleHQgKi8sCiAJCQkJQThBNDczMzkxNTFBODI1QjAwNDEy
M0ZGIC8qIHRocmVhZHMgKi8sCkBAIC04OTQsOCArOTI1LDExIEBACiAJCQkJQThBNDcyQTIxNTFB
ODI1QTAwNDEyM0ZGIC8qIEZhc3RNYWxsb2MuaCAqLywKIAkJCQkwRjc5QzdDMzFFNzM1MTE4MDBF
QjM0RDEgLyogRmFzdFRMUy5oICovLAogCQkJCUIzOEZEN0JDMTY4OTUzRTgwMDY1Qzk2OSAvKiBG
ZWF0dXJlRGVmaW5lcy5oICovLAorCQkJCUEzMzFEOTU4MjFGMjQ5NzgwMDlGMDJBQSAvKiBGaWxl
TWV0YWRhdGEuaCAqLywKIAkJCQkwRjlEMzM1QjE2NURCQTczMDA1QUQzODcgLyogRmlsZVByaW50
U3RyZWFtLmNwcCAqLywKIAkJCQkwRjlEMzM1QzE2NURCQTczMDA1QUQzODcgLyogRmlsZVByaW50
U3RyZWFtLmggKi8sCisJCQkJQTMzMUQ5NUEyMUYyNDk5MjAwOUYwMkFBIC8qIEZpbGVTeXN0ZW0u
Y3BwICovLAorCQkJCUEzMzFEOTU5MjFGMjQ5OTIwMDlGMDJBQSAvKiBGaWxlU3lzdGVtLmggKi8s
CiAJCQkJMEYyQjY2QTUxN0I2QjRGNzAwQTdBRTNGIC8qIEZsaXBCeXRlcy5oICovLAogCQkJCUZF
ODZBODc0MUU1OTQ0MDIwMDExMUJCRiAvKiBGb3JiaWRIZWFwQWxsb2NhdGlvbi5oICovLAogCQkJ
CUE4QTQ3MkE2MTUxQTgyNUEwMDQxMjNGRiAvKiBGb3J3YXJkLmggKi8sCkBAIC0xMTkwLDYgKzEy
MjQsNyBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMUE0MjhCOEIxQzhGODlERDAwNTFFOUVCIC8q
IEFwcEtpdENvbXBhdGliaWxpdHlEZWNsYXJhdGlvbnMuaCAqLywKIAkJCQkxQUNBREQ4MjE4ODQ0
ODAxMDBEOEI3MUQgLyogRGVwcmVjYXRlZFN5bWJvbHNVc2VkQnlTYWZhcmkubW0gKi8sCisJCQkJ
QTMzMUQ5NjAyMUYyNEEwQTAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1NYWMubW0gKi8sCiAJCQkJNTM1
MzRGMjkxRUMwRTEwRTAwMTQxQjJGIC8qIE1hY2hFeGNlcHRpb25zLmRlZnMgKi8sCiAJCQkpOwog
CQkJcGF0aCA9IG1hYzsKQEAgLTEzMTcsNiArMTM1Miw3IEBACiAJCQkJRENFRTIxRjkxQ0VBNzUy
RjAwMEMyMzk2IC8qIGNmICovLAogCQkJCUNFNDY1MTZDMTlEQjFGQjQwMDNFQ0EwNSAvKiBjb2Nv
YSAqLywKIAkJCQlDRTczRTAyMzE5RENCN0FCMDA1ODBENUMgLyogZGFyd2luICovLAorCQkJCUEz
RDI3M0I4MjFGMkVFN0IwMDg2Njk3MSAvKiBtYWMgKi8sCiAJCQkpOwogCQkJcGF0aCA9IHNwaTsK
IAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xMzUxLDYgKzEzODcsNyBAQAogCQkJCUUz
OEM0MTI0MUVCNEUwNEMwMDQyOTU3RCAvKiBDUFVUaW1lQ29jb2EuY3BwICovLAogCQkJCTE0M0RE
RTk3MjBDOEJFOTkwMDdGNzZGQSAvKiBFbnRpdGxlbWVudHMuaCAqLywKIAkJCQkxNDNEREU5NTIw
QzhCQzM3MDA3Rjc2RkEgLyogRW50aXRsZW1lbnRzLm1tICovLAorCQkJCUEzMzFEOTVFMjFGMjQ5
RjYwMDlGMDJBQSAvKiBGaWxlU3lzdGVtQ29jb2EubW0gKi8sCiAJCQkJN0E2RUJBMzMyMDc0NkMz
NDAwNEY5QzQ0IC8qIE1hY2hTZW5kUmlnaHQuY3BwICovLAogCQkJCUE4QTQ3MkM1MTUxQTgyNUEw
MDQxMjNGRiAvKiBNYWluVGhyZWFkQ29jb2EubW0gKi8sCiAJCQkJQURGMkNFNjUxRTM5RjEwNjAw
Njg4OURCIC8qIE1lbW9yeUZvb3RwcmludENvY29hLmNwcCAqLywKQEAgLTE0NzYsNiArMTUxMywx
MSBAQAogCQkJCTBGN0M1RkI2MUQ4ODVDRjIwMDQ0RjVFMiAvKiBGYXN0Qml0VmVjdG9yLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0MzMTUxQTgyNUIwMDQxMjNGRiAvKiBGYXN0TWFsbG9j
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOUQzMzYwMTY1REJBNzMwMDVBRDM4NyAvKiBGaWxl
UHJpbnRTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTMzMUQ5NUIyMUYyNDk5MjAwOUYw
MkFBIC8qIEZpbGVTeXN0ZW0uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTMzMUQ5NUQyMUYyNDlF
NDAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1DRi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBMzMxRDk1
RjIxRjI0OUY2MDA5RjAyQUEgLyogRmlsZVN5c3RlbUNvY29hLm1tIGluIFNvdXJjZXMgKi8sCisJ
CQkJQTMzMUQ5NjEyMUYyNEEwQTAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1NYWMubW0gaW4gU291cmNl
cyAqLywKKwkJCQlBMzMxRDk2NzIxRjI0QUJEMDA5RjAyQUEgLyogRmlsZVN5c3RlbVBPU0lYLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0I1MTUxQTgyNUIwMDQxMjNGRiAvKiBmaXhlZC1k
dG9hLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJMUExRDhCOUUxNzMxODc5ODAwMTQxREE0IC8qIEZ1
bmN0aW9uRGlzcGF0Y2hlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjVCRjE3NjFGMjNENDlB
MDAyOUQ5MUQgLyogR2lnYWNhZ2UuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0
CmluZGV4IGNlZTFjY2UxZTU3MTg0ZDEzYmQyY2Q1MTllZjZhMjBkZmZiMWE5NmEuLjdkODU4MzMy
MGY0OWM2MTA0MDFjN2I4YWI0NDYzOTZkODhjMTUwZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CkBA
IC02MSw3ICs2MSw5IEBAIHNldChXVEZfUFVCTElDX0hFQURFUlMKICAgICBGYXN0TWFsbG9jLmgK
ICAgICBGYXN0VExTLmgKICAgICBGZWF0dXJlRGVmaW5lcy5oCisgICAgRmlsZU1ldGFkYXRhLmgK
ICAgICBGaWxlUHJpbnRTdHJlYW0uaAorICAgIEZpbGVTeXN0ZW0uaAogICAgIEZsaXBCeXRlcy5o
CiAgICAgRm9yYmlkSGVhcEFsbG9jYXRpb24uaAogICAgIEZvcndhcmQuaApAQCAtMzUzLDYgKzM1
NSw3IEBAIHNldChXVEZfU09VUkNFUwogICAgIEZhc3RCaXRWZWN0b3IuY3BwCiAgICAgRmFzdE1h
bGxvYy5jcHAKICAgICBGaWxlUHJpbnRTdHJlYW0uY3BwCisgICAgRmlsZVN5c3RlbS5jcHAKICAg
ICBGdW5jdGlvbkRpc3BhdGNoZXIuY3BwCiAgICAgR2lnYWNhZ2UuY3BwCiAgICAgR2xvYmFsVmVy
c2lvbi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVNZXRhZGF0YS5oIGIvU291
cmNlL1dURi93dGYvRmlsZU1ldGFkYXRhLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGJiODhmYzg0Zjk0YWY0Y2Nm
MWM1ODBlMGQ1NmEyYjY1ODExMGY5OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L0ZpbGVNZXRhZGF0YS5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
PHd0Zi9XYWxsVGltZS5oPgorCituYW1lc3BhY2UgV1RGIHsKKworc3RydWN0IEZpbGVNZXRhZGF0
YSB7CisgICAgLy8gVGhlIGxhc3QgbW9kaWZpY2F0aW9uIHRpbWUgb2YgdGhlIGZpbGUsIGluIHNl
Y29uZHMuCisgICAgV2FsbFRpbWUgbW9kaWZpY2F0aW9uVGltZTsKKworICAgIC8vIFRoZSBsZW5n
dGggb2YgdGhlIGZpbGUgaW4gYnl0ZXMuCisgICAgbG9uZyBsb25nIGxlbmd0aDsKKworICAgIGJv
b2wgaXNIaWRkZW47CisKKyAgICBlbnVtIGNsYXNzIFR5cGUgeyBGaWxlLCBEaXJlY3RvcnksIFN5
bWJvbGljTGluayB9OworICAgIFR5cGUgdHlwZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgor
Cit1c2luZyBXVEY6OkZpbGVNZXRhZGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Zp
bGVTeXN0ZW0uY3BwIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTVmN2JiMDNiYTAxNzk5N2UzYzk5NWYzODg1Mjk2YTZmNGEyMTcwMwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwCkBAIC0wLDAgKzEsMzY3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAor
ICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KKwor
I2luY2x1ZGUgPHd0Zi9GaWxlTWV0YWRhdGEuaD4KKyNpbmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+
CisjaW5jbHVkZSA8d3RmL1Njb3BlLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKworI2lmICFPUyhXSU5ET1dTKQor
I2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8c3lzL21tYW4uaD4KKyNpbmNsdWRlIDxzeXMv
c3RhdC5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXVEYgewor
CituYW1lc3BhY2UgRmlsZVN5c3RlbSB7CisKKy8vIFRoZSBmb2xsb3dpbmcgbG93ZXItQVNDSUkg
Y2hhcmFjdGVycyBuZWVkIGVzY2FwaW5nIHRvIGJlIHVzZWQgaW4gYSBmaWxlbmFtZQorLy8gYWNy
b3NzIGFsbCBzeXN0ZW1zLCBpbmNsdWRpbmcgV2luZG93czoKKy8vICAgICAtIFVucHJpbnRhYmxl
IEFTQ0lJICgwMC0xRikKKy8vICAgICAtIFNwYWNlICAgICAgICAgICAgICgyMCkKKy8vICAgICAt
IERvdWJsZSBxdW90ZSAgICAgICgyMikKKy8vICAgICAtIFBlcmNlbnQgICAgICAgICAgICgyNSkg
KGVzY2FwZWQgYmVjYXVzZSBpdCBpcyBvdXIgZXNjYXBlIGNoYXJhY3RlcikKKy8vICAgICAtIEFz
dGVyaXNrICAgICAgICAgICgyQSkKKy8vICAgICAtIFNsYXNoICAgICAgICAgICAgICgyRikKKy8v
ICAgICAtIENvbG9uICAgICAgICAgICAgICgzQSkKKy8vICAgICAtIExlc3MtdGhhbiAgICAgICAg
ICgzQykKKy8vICAgICAtIEdyZWF0ZXItdGhhbiAgICAgICgzRSkKKy8vICAgICAtIFF1ZXN0aW9u
IE1hcmsgICAgICgzRikKKy8vICAgICAtIEJhY2tzbGFzaCAgICAgICAgICg1QykKKy8vICAgICAt
IFBpcGUgICAgICAgICAgICAgICg3QykKKy8vICAgICAtIERlbGV0ZSAgICAgICAgICAgICg3RikK
Kworc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNFc2NhcGluZ1sxMjhdID0geworICAgIHRydWUsICB0
cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgLyogMDAtMDcg
Ki8KKyAgICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAg
dHJ1ZSwgIC8qIDA4LTBGICovCisKKyAgICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1
ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIC8qIDEwLTE3ICovCisgICAgdHJ1ZSwgIHRydWUsICB0
cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICAvKiAxOC0xRiAqLworCisg
ICAgdHJ1ZSwgIGZhbHNlLCB0cnVlLCAgZmFsc2UsIGZhbHNlLCB0cnVlLCAgZmFsc2UsIGZhbHNl
LCAvKiAyMC0yNyAqLworICAgIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgIGZhbHNlLCBmYWxzZSwgZmFs
c2UsIGZhbHNlLCB0cnVlLCAgLyogMjgtMkYgKi8KKworICAgIGZhbHNlLCBmYWxzZSwgZmFsc2Us
IGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgLyogMzAtMzcgKi8KKyAgICBmYWxz
ZSwgZmFsc2UsIHRydWUsICBmYWxzZSwgdHJ1ZSwgIGZhbHNlLCB0cnVlLCAgdHJ1ZSwgIC8qIDM4
LTNGICovCisKKyAgICBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBm
YWxzZSwgZmFsc2UsIC8qIDQwLTQ3ICovCisgICAgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2Us
IGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAvKiA0OC00RiAqLworCisgICAgZmFsc2UsIGZh
bHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAvKiA1MC01NyAq
LworICAgIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCAgZmFsc2UsIGZhbHNlLCBm
YWxzZSwgLyogNTgtNUYgKi8KKworICAgIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxz
ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgLyogNjAtNjcgKi8KKyAgICBmYWxzZSwgZmFsc2UsIGZh
bHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIC8qIDY4LTZGICovCisKKyAg
ICBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2Us
IC8qIDcwLTc3ICovCisgICAgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUsICBmYWxz
ZSwgZmFsc2UsIHRydWUsICAvKiA3OC03RiAqLworfTsKKworc3RhdGljIGlubGluZSBib29sIHNo
b3VsZEVzY2FwZVVDaGFyKFVDaGFyIGNoYXJhY3RlciwgVUNoYXIgcHJldmlvdXNDaGFyYWN0ZXIs
IFVDaGFyIG5leHRDaGFyYWN0ZXIpCit7CisgICAgaWYgKGNoYXJhY3RlciA8PSAxMjcpCisgICAg
ICAgIHJldHVybiBuZWVkc0VzY2FwaW5nW2NoYXJhY3Rlcl07CisKKyAgICBpZiAoVTE2X0lTX0xF
QUQoY2hhcmFjdGVyKSAmJiAhVTE2X0lTX1RSQUlMKG5leHRDaGFyYWN0ZXIpKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKworICAgIGlmIChVMTZfSVNfVFJBSUwoY2hhcmFjdGVyKSAmJiAhVTE2X0lT
X0xFQUQocHJldmlvdXNDaGFyYWN0ZXIpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHJl
dHVybiBmYWxzZTsKK30KKworU3RyaW5nIGVuY29kZUZvckZpbGVOYW1lKGNvbnN0IFN0cmluZyYg
aW5wdXRTdHJpbmcpCit7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gaW5wdXRTdHJpbmcubGVuZ3Ro
KCk7CisgICAgaWYgKCFsZW5ndGgpCisgICAgICAgIHJldHVybiBpbnB1dFN0cmluZzsKKworICAg
IFN0cmluZ0J1aWxkZXIgcmVzdWx0OworICAgIHJlc3VsdC5yZXNlcnZlQ2FwYWNpdHkobGVuZ3Ro
KTsKKworICAgIFVDaGFyIHByZXZpb3VzQ2hhcmFjdGVyOworICAgIFVDaGFyIGNoYXJhY3RlciA9
IDA7CisgICAgVUNoYXIgbmV4dENoYXJhY3RlciA9IGlucHV0U3RyaW5nWzBdOworICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICBwcmV2aW91c0NoYXJh
Y3RlciA9IGNoYXJhY3RlcjsKKyAgICAgICAgY2hhcmFjdGVyID0gbmV4dENoYXJhY3RlcjsKKyAg
ICAgICAgbmV4dENoYXJhY3RlciA9IGkgKyAxIDwgbGVuZ3RoID8gaW5wdXRTdHJpbmdbaSArIDFd
IDogMDsKKworICAgICAgICBpZiAoc2hvdWxkRXNjYXBlVUNoYXIoY2hhcmFjdGVyLCBwcmV2aW91
c0NoYXJhY3RlciwgbmV4dENoYXJhY3RlcikpIHsKKyAgICAgICAgICAgIGlmIChjaGFyYWN0ZXIg
PD0gMjU1KSB7CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnJScpOworICAgICAgICAg
ICAgICAgIGFwcGVuZEJ5dGVBc0hleChjaGFyYWN0ZXIsIHJlc3VsdCk7CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCIlKyIpOworICAg
ICAgICAgICAgICAgIGFwcGVuZEJ5dGVBc0hleChjaGFyYWN0ZXIgPj4gOCwgcmVzdWx0KTsKKyAg
ICAgICAgICAgICAgICBhcHBlbmRCeXRlQXNIZXgoY2hhcmFjdGVyLCByZXN1bHQpOworICAgICAg
ICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoY2hhcmFj
dGVyKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7Cit9CisKK1N0cmlu
ZyBkZWNvZGVGcm9tRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBpbnB1dFN0cmluZykKK3sKKyAgICB1
bnNpZ25lZCBsZW5ndGggPSBpbnB1dFN0cmluZy5sZW5ndGgoKTsKKyAgICBpZiAoIWxlbmd0aCkK
KyAgICAgICAgcmV0dXJuIGlucHV0U3RyaW5nOworCisgICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7
CisgICAgcmVzdWx0LnJlc2VydmVDYXBhY2l0eShsZW5ndGgpOworCisgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgIGlmIChpbnB1dFN0cmluZ1tpXSAh
PSAnJScpIHsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoaW5wdXRTdHJpbmdbaV0pOworICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICAvLyBJZiB0aGUgaW5wdXQg
c3RyaW5nIGlzIGEgdmFsaWQgZW5jb2RlZCBmaWxlbmFtZSwgaXQgbXVzdCBiZSBhdCBsZWFzdCAy
IGNoYXJhY3RlcnMgbG9uZ2VyCisgICAgICAgIC8vIHRoYW4gdGhlIGN1cnJlbnQgaW5kZXggdG8g
YWNjb3VudCBmb3IgdGhpcyBwZXJjZW50IGVuY29kZWQgdmFsdWUuCisgICAgICAgIGlmIChpICsg
MiA+PSBsZW5ndGgpCisgICAgICAgICAgICByZXR1cm4geyB9OworCisgICAgICAgIGlmIChpbnB1
dFN0cmluZ1tpKzFdICE9ICcrJykgeworICAgICAgICAgICAgaWYgKCFpc0FTQ0lJSGV4RGlnaXQo
aW5wdXRTdHJpbmdbaSArIDFdKSkKKyAgICAgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAg
ICAgICAgaWYgKCFpc0FTQ0lJSGV4RGlnaXQoaW5wdXRTdHJpbmdbaSArIDJdKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4geyB9OworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh0b0FTQ0lJSGV4
VmFsdWUoaW5wdXRTdHJpbmdbaSArIDFdLCBpbnB1dFN0cmluZ1tpICsgMl0pKTsKKyAgICAgICAg
ICAgIGkgKz0gMjsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAg
Ly8gSWYgdGhlIGlucHV0IHN0cmluZyBpcyBhIHZhbGlkIGVuY29kZWQgZmlsZW5hbWUsIGl0IG11
c3QgYmUgYXQgbGVhc3QgNSBjaGFyYWN0ZXJzIGxvbmdlcgorICAgICAgICAvLyB0aGFuIHRoZSBj
dXJyZW50IGluZGV4IHRvIGFjY291bnQgZm9yIHRoaXMgcGVyY2VudCBlbmNvZGVkIHZhbHVlLgor
ICAgICAgICBpZiAoaSArIDUgPj0gbGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuIHsgfTsKKwor
ICAgICAgICBpZiAoIWlzQVNDSUlIZXhEaWdpdChpbnB1dFN0cmluZ1tpICsgMl0pKQorICAgICAg
ICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgaWYgKCFpc0FTQ0lJSGV4RGlnaXQoaW5wdXRTdHJp
bmdbaSArIDNdKSkKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIGlmICghaXNBU0NJ
SUhleERpZ2l0KGlucHV0U3RyaW5nW2kgKyA0XSkpCisgICAgICAgICAgICByZXR1cm4geyB9Owor
ICAgICAgICBpZiAoIWlzQVNDSUlIZXhEaWdpdChpbnB1dFN0cmluZ1tpICsgNV0pKQorICAgICAg
ICAgICAgcmV0dXJuIHsgfTsKKworICAgICAgICByZXN1bHQuYXBwZW5kKHRvQVNDSUlIZXhWYWx1
ZShpbnB1dFN0cmluZ1tpICsgMl0sIGlucHV0U3RyaW5nW2kgKyAzXSkgPDwgOCB8IHRvQVNDSUlI
ZXhWYWx1ZShpbnB1dFN0cmluZ1tpICsgNF0sIGlucHV0U3RyaW5nW2kgKyA1XSkpOworICAgICAg
ICBpICs9IDU7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOworfQorCitT
dHJpbmcgbGFzdENvbXBvbmVudE9mUGF0aElnbm9yaW5nVHJhaWxpbmdTbGFzaChjb25zdCBTdHJp
bmcmIHBhdGgpCit7CisjaWYgT1MoV0lORE9XUykKKyAgICBjaGFyIHBhdGhTZXBhcmF0b3IgPSAn
XFwnOworI2Vsc2UKKyAgICBjaGFyIHBhdGhTZXBhcmF0b3IgPSAnLyc7CisjZW5kaWYKKworICAg
IGF1dG8gcG9zaXRpb24gPSBwYXRoLnJldmVyc2VGaW5kKHBhdGhTZXBhcmF0b3IpOworICAgIGlm
IChwb3NpdGlvbiA9PSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJuIHBhdGg7CisKKyAgICBzaXpl
X3QgZW5kT2ZTdWJzdHJpbmcgPSBwYXRoLmxlbmd0aCgpIC0gMTsKKyAgICBpZiAocG9zaXRpb24g
PT0gZW5kT2ZTdWJzdHJpbmcpIHsKKyAgICAgICAgLS1lbmRPZlN1YnN0cmluZzsKKyAgICAgICAg
cG9zaXRpb24gPSBwYXRoLnJldmVyc2VGaW5kKHBhdGhTZXBhcmF0b3IsIGVuZE9mU3Vic3RyaW5n
KTsKKyAgICB9CisKKyAgICByZXR1cm4gcGF0aC5zdWJzdHJpbmcocG9zaXRpb24gKyAxLCBlbmRP
ZlN1YnN0cmluZyAtIHBvc2l0aW9uKTsKK30KKworYm9vbCBhcHBlbmRGaWxlQ29udGVudHNUb0Zp
bGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHRhcmdldCkK
K3sKKyAgICBhdXRvIHNvdXJjZSA9IG9wZW5GaWxlKHBhdGgsIEZpbGVPcGVuTW9kZTo6UmVhZCk7
CisKKyAgICBpZiAoIWlzSGFuZGxlVmFsaWQoc291cmNlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgc3RhdGljIGludCBidWZmZXJTaXplID0gMSA8PCAxOTsKKyAgICBWZWN0b3I8Y2hh
cj4gYnVmZmVyKGJ1ZmZlclNpemUpOworCisgICAgYXV0byBmaWxlQ2xvc2VyID0gV1RGOjptYWtl
U2NvcGVFeGl0KFtzb3VyY2VdKCkgeworICAgICAgICBQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxl
ID0gc291cmNlOworICAgICAgICBjbG9zZUZpbGUoaGFuZGxlKTsKKyAgICB9KTsKKworICAgIGRv
IHsKKyAgICAgICAgaW50IHJlYWRCeXRlcyA9IHJlYWRGcm9tRmlsZShzb3VyY2UsIGJ1ZmZlci5k
YXRhKCksIGJ1ZmZlclNpemUpOworCisgICAgICAgIGlmIChyZWFkQnl0ZXMgPCAwKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGlmICh3cml0ZVRvRmlsZSh0YXJnZXQsIGJ1
ZmZlci5kYXRhKCksIHJlYWRCeXRlcykgIT0gcmVhZEJ5dGVzKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgICAgIGlmIChyZWFkQnl0ZXMgPCBidWZmZXJTaXplKQorICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfSB3aGlsZSAodHJ1ZSk7CisKKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKK30KKworCitib29sIGZpbGVzSGF2ZVNhbWVWb2x1bWUoY29uc3QgU3RyaW5nJiBm
aWxlQSwgY29uc3QgU3RyaW5nJiBmaWxlQikKK3sKKyAgICBhdXRvIGZzUmVwRmlsZUEgPSBmaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZUEpOworICAgIGF1dG8gZnNSZXBGaWxlQiA9IGZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihmaWxlQik7CisKKyAgICBpZiAoZnNSZXBGaWxlQS5pc051bGwo
KSB8fCBmc1JlcEZpbGVCLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBi
b29sIHJlc3VsdCA9IGZhbHNlOworCisgICAgYXV0byBmaWxlQURldiA9IGdldEZpbGVEZXZpY2VJ
ZChmc1JlcEZpbGVBKTsKKyAgICBhdXRvIGZpbGVCRGV2ID0gZ2V0RmlsZURldmljZUlkKGZzUmVw
RmlsZUIpOworCisgICAgaWYgKGZpbGVBRGV2ICYmIGZpbGVCRGV2KQorICAgICAgICByZXN1bHQg
PSAoZmlsZUFEZXYgPT0gZmlsZUJEZXYpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworI2lm
ICFQTEFURk9STShNQUMpCisKK3ZvaWQgc2V0TWV0YWRhdGFVUkwoY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikKK3sKK30KKworYm9vbCBjYW5FeGNsdWRlRnJvbUJh
Y2t1cCgpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIGV4Y2x1ZGVGcm9tQmFja3Vw
KGNvbnN0IFN0cmluZyYpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCisjZW5kaWYKKworTWFw
cGVkRmlsZURhdGE6On5NYXBwZWRGaWxlRGF0YSgpCit7CisjaWYgIU9TKFdJTkRPV1MpCisgICAg
aWYgKCFtX2ZpbGVEYXRhKQorICAgICAgICByZXR1cm47CisgICAgbXVubWFwKG1fZmlsZURhdGEs
IG1fZmlsZVNpemUpOworI2VuZGlmCit9CisKK01hcHBlZEZpbGVEYXRhOjpNYXBwZWRGaWxlRGF0
YShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBib29sJiBzdWNjZXNzKQoreworI2lmIE9TKFdJTkRP
V1MpCisgICAgLy8gRklYTUU6IEltcGxlbWVudCBtYXBwaW5nCisgICAgc3VjY2VzcyA9IGZhbHNl
OworI2Vsc2UKKyAgICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZp
bGVQYXRoKTsKKyAgICBpbnQgZmQgPSAhZnNSZXAuaXNOdWxsKCkgPyBvcGVuKGZzUmVwLmRhdGEo
KSwgT19SRE9OTFkpIDogLTE7CisgICAgaWYgKGZkIDwgMCkgeworICAgICAgICBzdWNjZXNzID0g
ZmFsc2U7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzdHJ1Y3Qgc3RhdCBmaWxlU3Rh
dDsKKyAgICBpZiAoZnN0YXQoZmQsICZmaWxlU3RhdCkpIHsKKyAgICAgICAgY2xvc2UoZmQpOwor
ICAgICAgICBzdWNjZXNzID0gZmFsc2U7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB1
bnNpZ25lZCBzaXplOworICAgIGlmICghV1RGOjpjb252ZXJ0U2FmZWx5KGZpbGVTdGF0LnN0X3Np
emUsIHNpemUpKSB7CisgICAgICAgIGNsb3NlKGZkKTsKKyAgICAgICAgc3VjY2VzcyA9IGZhbHNl
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFzaXplKSB7CisgICAgICAgIGNs
b3NlKGZkKTsKKyAgICAgICAgc3VjY2VzcyA9IHRydWU7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICB2b2lkKiBkYXRhID0gbW1hcCgwLCBzaXplLCBQUk9UX1JFQUQsIE1BUF9GSUxFIHwg
TUFQX1NIQVJFRCwgZmQsIDApOworICAgIGNsb3NlKGZkKTsKKworICAgIGlmIChkYXRhID09IE1B
UF9GQUlMRUQpIHsKKyAgICAgICAgc3VjY2VzcyA9IGZhbHNlOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgc3VjY2VzcyA9IHRydWU7CisgICAgbV9maWxlRGF0YSA9IGRhdGE7CisgICAg
bV9maWxlU2l6ZSA9IHNpemU7CisjZW5kaWYKK30KKworUGxhdGZvcm1GaWxlSGFuZGxlIG9wZW5B
bmRMb2NrRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVPcGVuTW9kZSBvcGVuTW9kZSwgT3B0
aW9uU2V0PEZpbGVMb2NrTW9kZT4gbG9ja01vZGUpCit7CisgICAgYXV0byBoYW5kbGUgPSBvcGVu
RmlsZShwYXRoLCBvcGVuTW9kZSk7CisgICAgaWYgKGhhbmRsZSA9PSBpbnZhbGlkUGxhdGZvcm1G
aWxlSGFuZGxlKQorICAgICAgICByZXR1cm4gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKKwor
I2lmIFVTRShGSUxFX0xPQ0spCisgICAgYm9vbCBsb2NrZWQgPSBsb2NrRmlsZShoYW5kbGUsIGxv
Y2tNb2RlKTsKKyAgICBBU1NFUlRfVU5VU0VEKGxvY2tlZCwgbG9ja2VkKTsKKyNlbHNlCisgICAg
VU5VU0VEX1BBUkFNKGxvY2tNb2RlKTsKKyNlbmRpZgorCisgICAgcmV0dXJuIGhhbmRsZTsKK30K
Kwordm9pZCB1bmxvY2tBbmRDbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSkKK3sK
KyNpZiBVU0UoRklMRV9MT0NLKQorICAgIGJvb2wgdW5sb2NrZWQgPSB1bmxvY2tGaWxlKGhhbmRs
ZSk7CisgICAgQVNTRVJUX1VOVVNFRCh1bmxvY2tlZCwgdW5sb2NrZWQpOworI2VuZGlmCisgICAg
Y2xvc2VGaWxlKGhhbmRsZSk7Cit9CisKK2Jvb2wgZmlsZUlzRGlyZWN0b3J5KGNvbnN0IFN0cmlu
ZyYgcGF0aCwgU2hvdWxkRm9sbG93U3ltYm9saWNMaW5rcyBzaG91bGRGb2xsb3dTeW1ib2xpY0xp
bmtzKQoreworICAgIGF1dG8gbWV0YWRhdGEgPSBzaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzID09
IFNob3VsZEZvbGxvd1N5bWJvbGljTGlua3M6OlllcyA/IGZpbGVNZXRhZGF0YUZvbGxvd2luZ1N5
bWxpbmtzKHBhdGgpIDogZmlsZU1ldGFkYXRhKHBhdGgpOworICAgIGlmICghbWV0YWRhdGEpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gbWV0YWRhdGEudmFsdWUoKS50eXBlID09
IEZpbGVNZXRhZGF0YTo6VHlwZTo6RGlyZWN0b3J5OworfQorCit9IC8vIG5hbWVzcGFjZSBGaWxl
U3lzdGVtCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Zp
bGVTeXN0ZW0uaCBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYTRi
MWY4ODNiOTc1NjAxODhkMmZkZjExYjI3ZTQwMWMyMTY2NjY1Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCkBAIC0wLDAgKzEsMjI2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA3LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSwgTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJB
cHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSA8dGltZS5oPgorI2luY2x1ZGUgPHV0aWxpdHk+CisjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgorI2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgorCisjaWYgVVNFKENGKQorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNlbmRp
ZgorCisjaWYgVVNFKENGKQordHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DRkRhdGEqIENGRGF0YVJl
ZjsKKyNlbmRpZgorCitPQkpDX0NMQVNTIE5TU3RyaW5nOworCisjaWYgUExBVEZPUk0oV0lOKQor
dHlwZWRlZiB2b2lkICpIQU5ETEU7CisjZW5kaWYKKworI2lmIFVTRShHTElCKQordHlwZWRlZiBz
dHJ1Y3QgX0dGaWxlSU9TdHJlYW0gR0ZpbGVJT1N0cmVhbTsKKyNlbmRpZgorCituYW1lc3BhY2Ug
V1RGIHsKKworc3RydWN0IEZpbGVNZXRhZGF0YTsKKworbmFtZXNwYWNlIEZpbGVTeXN0ZW0gewor
CisvLyBQbGF0Zm9ybUZpbGVIYW5kbGUKKyNpZiBVU0UoR0xJQikgJiYgIVBMQVRGT1JNKFdJTikK
K3R5cGVkZWYgR0ZpbGVJT1N0cmVhbSogUGxhdGZvcm1GaWxlSGFuZGxlOworY29uc3QgUGxhdGZv
cm1GaWxlSGFuZGxlIGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUgPSAwOworI2VsaWYgUExBVEZP
Uk0oV0lOKQordHlwZWRlZiBIQU5ETEUgUGxhdGZvcm1GaWxlSGFuZGxlOworLy8gRklYTUU6IC0x
IGlzIElOVkFMSURfSEFORExFX1ZBTFVFLCBkZWZpbmVkIGluIDx3aW5iYXNlLmg+LiBDaHJvbWl1
bSB0cmllcyB0bworLy8gYXZvaWQgdXNpbmcgV2luZG93cyBoZWFkZXJzIGluIGhlYWRlcnMuIFdl
J2QgcmF0aGVyIG1vdmUgdGhpcyBpbnRvIHRoZSAuY3BwLgorY29uc3QgUGxhdGZvcm1GaWxlSGFu
ZGxlIGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUgPSByZWludGVycHJldF9jYXN0PEhBTkRMRT4o
LTEpOworI2Vsc2UKK3R5cGVkZWYgaW50IFBsYXRmb3JtRmlsZUhhbmRsZTsKK2NvbnN0IFBsYXRm
b3JtRmlsZUhhbmRsZSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlID0gLTE7CisjZW5kaWYKKwor
ZW51bSBjbGFzcyBGaWxlT3Blbk1vZGUgeworICAgIFJlYWQsCisgICAgV3JpdGUsCisjaWYgT1Mo
REFSV0lOKQorICAgIEV2ZW50c09ubHksCisjZW5kaWYKK307CisKK2VudW0gY2xhc3MgRmlsZVNl
ZWtPcmlnaW4geworICAgIEJlZ2lubmluZywKKyAgICBDdXJyZW50LAorICAgIEVuZCwKK307CisK
K2VudW0gY2xhc3MgRmlsZUxvY2tNb2RlIHsKKyAgICBTaGFyZWQgPSAxIDw8IDAsCisgICAgRXhj
bHVzaXZlID0gMSA8PCAxLAorICAgIE5vbmJsb2NraW5nID0gMSA8PCAyLAorfTsKKworZW51bSBj
bGFzcyBTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzIHsgTm8sIFllcyB9OworCitXVEZfRVhQT1JU
X1BSSVZBVEUgYm9vbCBmaWxlRXhpc3RzKGNvbnN0IFN0cmluZyYpOworV1RGX0VYUE9SVF9QUklW
QVRFIGJvb2wgZGVsZXRlRmlsZShjb25zdCBTdHJpbmcmKTsKK1dURl9FWFBPUlRfUFJJVkFURSBi
b29sIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpOworV1RGX0VYUE9SVF9QUklW
QVRFIGJvb2wgbW92ZUZpbGUoY29uc3QgU3RyaW5nJiBvbGRQYXRoLCBjb25zdCBTdHJpbmcmIG5l
d1BhdGgpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZ2V0RmlsZVNpemUoY29uc3QgU3RyaW5n
JiwgbG9uZyBsb25nJiByZXN1bHQpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZ2V0RmlsZVNp
emUoUGxhdGZvcm1GaWxlSGFuZGxlLCBsb25nIGxvbmcmIHJlc3VsdCk7CitXVEZfRVhQT1JUX1BS
SVZBVEUgT3B0aW9uYWw8V2FsbFRpbWU+IGdldEZpbGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0
cmluZyYpOworV1RGX0VYUE9SVF9QUklWQVRFIE9wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlQ3Jl
YXRpb25UaW1lKGNvbnN0IFN0cmluZyYpOyAvLyBOb3QgYWxsIHBsYXRmb3JtcyBzdG9yZSBmaWxl
IGNyZWF0aW9uIHRpbWUuCitXVEZfRVhQT1JUX1BSSVZBVEUgT3B0aW9uYWw8RmlsZU1ldGFkYXRh
PiBmaWxlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBwYXRoKTsKK1dURl9FWFBPUlRfUFJJVkFURSBP
cHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YUZvbGxvd2luZ1N5bWxpbmtzKGNvbnN0
IFN0cmluZyYgcGF0aCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBmaWxlSXNEaXJlY3Rvcnko
Y29uc3QgU3RyaW5nJiwgU2hvdWxkRm9sbG93U3ltYm9saWNMaW5rcyk7CitXVEZfRVhQT1JUX1BS
SVZBVEUgU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChjb25zdCBTdHJpbmcmIHBhdGgs
IGNvbnN0IFN0cmluZyYgY29tcG9uZW50KTsKK1dURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhTdHJpbmdWaWV3IHBhdGgsIGNvbnN0IFZlY3RvcjxTdHJp
bmdWaWV3PiYgY29tcG9uZW50cyk7CitXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGxhc3RDb21w
b25lbnRPZlBhdGhJZ25vcmluZ1RyYWlsaW5nU2xhc2goY29uc3QgU3RyaW5nJiBwYXRoKTsKK1dU
Rl9FWFBPUlRfUFJJVkFURSBib29sIG1ha2VBbGxEaXJlY3Rvcmllcyhjb25zdCBTdHJpbmcmIHBh
dGgpOworV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBob21lRGlyZWN0b3J5UGF0aCgpOworV1RG
X0VYUE9SVF9QUklWQVRFIFN0cmluZyBwYXRoR2V0RmlsZU5hbWUoY29uc3QgU3RyaW5nJik7CitX
VEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGRpcmVjdG9yeU5hbWUoY29uc3QgU3RyaW5nJik7CitX
VEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBnZXRWb2x1bWVGcmVlU3BhY2UoY29uc3QgU3RyaW5nJiwg
dWludDY0X3QmKTsKK1dURl9FWFBPUlRfUFJJVkFURSBPcHRpb25hbDxpbnQzMl90PiBnZXRGaWxl
RGV2aWNlSWQoY29uc3QgQ1N0cmluZyYpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgY3JlYXRl
U3ltYm9saWNMaW5rKGNvbnN0IFN0cmluZyYgdGFyZ2V0UGF0aCwgY29uc3QgU3RyaW5nJiBzeW1i
b2xpY0xpbmtQYXRoKTsKKworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0TWV0YWRhdGFVUkwo
Y29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5n
JiByZWZlcnJlciA9IHsgfSk7CisKK2Jvb2wgY2FuRXhjbHVkZUZyb21CYWNrdXAoKTsgLy8gUmV0
dXJucyB0cnVlIGlmIGFueSBmaWxlIGNhbiBldmVyIGJlIGV4Y2x1ZGVkIGZyb20gYmFja3VwLgor
Ym9vbCBleGNsdWRlRnJvbUJhY2t1cChjb25zdCBTdHJpbmcmKTsgLy8gUmV0dXJucyB0cnVlIGlm
IHN1Y2Nlc3NmdWwuCisKK1dURl9FWFBPUlRfUFJJVkFURSBWZWN0b3I8U3RyaW5nPiBsaXN0RGly
ZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBmaWx0ZXIgPSBTdHJpbmco
KSk7CisKK1dURl9FWFBPUlRfUFJJVkFURSBDU3RyaW5nIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihjb25zdCBTdHJpbmcmKTsKK1N0cmluZyBzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKGNvbnN0IGNoYXIqKTsKKworaW5saW5lIGJvb2wgaXNIYW5kbGVWYWxpZChjb25zdCBQbGF0
Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkgeyByZXR1cm4gaGFuZGxlICE9IGludmFsaWRQbGF0Zm9y
bUZpbGVIYW5kbGU7IH0KKworLy8gUHJlZml4IGlzIHdoYXQgdGhlIGZpbGVuYW1lIHNob3VsZCBi
ZSBwcmVmaXhlZCB3aXRoLCBub3QgdGhlIGZ1bGwgcGF0aC4KK1dURl9FWFBPUlRfUFJJVkFURSBT
dHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmls
ZUhhbmRsZSYpOworV1RGX0VYUE9SVF9QUklWQVRFIFBsYXRmb3JtRmlsZUhhbmRsZSBvcGVuRmls
ZShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVPcGVuTW9kZSk7CitXVEZfRVhQT1JUX1BSSVZBVEUg
dm9pZCBjbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlJik7CisvLyBSZXR1cm5zIHRoZSByZXN1
bHRpbmcgb2Zmc2V0IGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlsZSBpZiBzdWNjZXNzZnVs
LCAtMSBvdGhlcndpc2UuCitXVEZfRVhQT1JUX1BSSVZBVEUgbG9uZyBsb25nIHNlZWtGaWxlKFBs
YXRmb3JtRmlsZUhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCwgRmlsZVNlZWtPcmlnaW4pOworYm9v
bCB0cnVuY2F0ZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0KTsKKy8v
IFJldHVybnMgbnVtYmVyIG9mIGJ5dGVzIGFjdHVhbGx5IHJlYWQgaWYgc3VjY2Vzc2Z1bCwgLTEg
b3RoZXJ3aXNlLgorV1RGX0VYUE9SVF9QUklWQVRFIGludCB3cml0ZVRvRmlsZShQbGF0Zm9ybUZp
bGVIYW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpOworLy8gUmV0dXJucyBudW1i
ZXIgb2YgYnl0ZXMgYWN0dWFsbHkgd3JpdHRlbiBpZiBzdWNjZXNzZnVsLCAtMSBvdGhlcndpc2Uu
CitXVEZfRVhQT1JUX1BSSVZBVEUgaW50IHJlYWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUs
IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpOworCitXVEZfRVhQT1JUX1BSSVZBVEUgUGxhdGZvcm1G
aWxlSGFuZGxlIG9wZW5BbmRMb2NrRmlsZShjb25zdCBTdHJpbmcmLCBGaWxlT3Blbk1vZGUsIE9w
dGlvblNldDxGaWxlTG9ja01vZGU+ID0gRmlsZUxvY2tNb2RlOjpFeGNsdXNpdmUpOworV1RGX0VY
UE9SVF9QUklWQVRFIHZvaWQgdW5sb2NrQW5kQ2xvc2VGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSk7
CisKKy8vIEFwcGVuZHMgdGhlIGNvbnRlbnRzIG9mIHRoZSBmaWxlIGZvdW5kIGF0ICdwYXRoJyB0
byB0aGUgb3BlbiBQbGF0Zm9ybUZpbGVIYW5kbGUuCisvLyBSZXR1cm5zIHRydWUgaWYgdGhlIHdy
aXRlIHdhcyBzdWNjZXNzZnVsLCBmYWxzZSBpZiBpdCB3YXMgbm90LgorV1RGX0VYUE9SVF9QUklW
QVRFIGJvb2wgYXBwZW5kRmlsZUNvbnRlbnRzVG9GaWxlSGFuZGxlKGNvbnN0IFN0cmluZyYgcGF0
aCwgUGxhdGZvcm1GaWxlSGFuZGxlJik7CisKKy8vIEhhcmQgbGlua3MgYSBmaWxlIGlmIHBvc3Np
YmxlLCBjb3BpZXMgaXQgaWYgbm90LgorV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaGFyZExpbmtP
ckNvcHlGaWxlKGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9u
KTsKKworI2lmIFVTRShGSUxFX0xPQ0spCitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBsb2NrRmls
ZShQbGF0Zm9ybUZpbGVIYW5kbGUsIE9wdGlvblNldDxGaWxlTG9ja01vZGU+KTsKK1dURl9FWFBP
UlRfUFJJVkFURSBib29sIHVubG9ja0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlKTsKKyNlbmRpZgor
CisvLyBFbmNvZGUgYSBzdHJpbmcgZm9yIHVzZSB3aXRoaW4gYSBmaWxlIG5hbWUuCitXVEZfRVhQ
T1JUX1BSSVZBVEUgU3RyaW5nIGVuY29kZUZvckZpbGVOYW1lKGNvbnN0IFN0cmluZyYpOworV1RG
X0VYUE9SVF9QUklWQVRFIFN0cmluZyBkZWNvZGVGcm9tRmlsZW5hbWUoY29uc3QgU3RyaW5nJik7
CisKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGZpbGVzSGF2ZVNhbWVWb2x1bWUoY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJik7CisKKyNpZiBVU0UoQ0YpCitXVEZfRVhQT1JUX1BSSVZBVEUg
UmV0YWluUHRyPENGVVJMUmVmPiBwYXRoQXNVUkwoY29uc3QgU3RyaW5nJik7CisjZW5kaWYKKwor
I2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQorU3RyaW5nIGZpbGVuYW1lRm9yRGlz
cGxheShjb25zdCBTdHJpbmcmKTsKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oV0lOKQorV1RGX0VY
UE9SVF9QUklWQVRFIFN0cmluZyBsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKTsK
K1dURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcm9hbWluZ1VzZXJTcGVjaWZpY1N0b3JhZ2VEaXJl
Y3RvcnkoKTsKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oQ09DT0EpCitXVEZfRVhQT1JUX1BSSVZB
VEUgTlNTdHJpbmcgKmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShOU1N0cmluZyAqZGlyZWN0b3J5
UHJlZml4KTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5
KGNvbnN0IFN0cmluZyYpOworI2VuZGlmCisKKyNpZiBQTEFURk9STShXSU5fQ0FJUk8pCitXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nIGNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeSgpOworV1RGX0VY
UE9SVF9QUklWQVRFIGJvb2wgZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7
CisjZW5kaWYKKworV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyByZWFsUGF0aChjb25zdCBTdHJp
bmcmKTsKKworY2xhc3MgTWFwcGVkRmlsZURhdGEgeworcHVibGljOgorICAgIE1hcHBlZEZpbGVE
YXRhKCkgeyB9CisgICAgTWFwcGVkRmlsZURhdGEoTWFwcGVkRmlsZURhdGEmJik7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIE1hcHBlZEZpbGVEYXRhKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIGJv
b2wmIHN1Y2Nlc3MpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB+TWFwcGVkRmlsZURhdGEoKTsK
KyAgICBNYXBwZWRGaWxlRGF0YSYgb3BlcmF0b3I9KE1hcHBlZEZpbGVEYXRhJiYpOworCisgICAg
ZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9maWxlRGF0YTsgfQor
ICAgIGNvbnN0IHZvaWQqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2ZpbGVEYXRhOyB9CisgICAg
dW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsZVNpemU7IH0KKworcHJpdmF0ZToK
KyAgICB2b2lkKiBtX2ZpbGVEYXRhIHsgbnVsbHB0ciB9OworICAgIHVuc2lnbmVkIG1fZmlsZVNp
emUgeyAwIH07Cit9OworCitpbmxpbmUgTWFwcGVkRmlsZURhdGE6Ok1hcHBlZEZpbGVEYXRhKE1h
cHBlZEZpbGVEYXRhJiYgb3RoZXIpCisgICAgOiBtX2ZpbGVEYXRhKHN0ZDo6ZXhjaGFuZ2Uob3Ro
ZXIubV9maWxlRGF0YSwgbnVsbHB0cikpCisgICAgLCBtX2ZpbGVTaXplKHN0ZDo6ZXhjaGFuZ2Uo
b3RoZXIubV9maWxlU2l6ZSwgMCkpCit7Cit9CisKK2lubGluZSBNYXBwZWRGaWxlRGF0YSYgTWFw
cGVkRmlsZURhdGE6Om9wZXJhdG9yPShNYXBwZWRGaWxlRGF0YSYmIG90aGVyKQoreworICAgIG1f
ZmlsZURhdGEgPSBzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fZmlsZURhdGEsIG51bGxwdHIpOworICAg
IG1fZmlsZVNpemUgPSBzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fZmlsZVNpemUsIDApOworICAgIHJl
dHVybiAqdGhpczsKK30KKworfSAvLyBuYW1lc3BhY2UgRmlsZVN5c3RlbQorfSAvLyBuYW1lc3Bh
Y2UgV1RGCisKK25hbWVzcGFjZSBGaWxlU3lzdGVtID0gV1RGOjpGaWxlU3lzdGVtOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV1RGL3d0Zi9Q
bGF0Zm9ybUdUSy5jbWFrZQppbmRleCA2NzNmMDJkMGQ1OTY4NTQ1YWM4N2E4YThlNTdiMjc3MzRk
NzM5ODljLi43ZmVjMTJkYzJmYzMxNWJjNTE2OGYwMmIzYmY3NjQ3MGMwZDljYmFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtMjIsNiArMjIsNyBAQCBsaXN0KEFQUEVORCBXVEZfU09V
UkNFUwogICAgIGdlbmVyaWMvTWFpblRocmVhZEdlbmVyaWMuY3BwCiAgICAgZ2VuZXJpYy9Xb3Jr
UXVldWVHZW5lcmljLmNwcAogCisgICAgZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKICAgICBnbGli
L0dMaWJVdGlsaXRpZXMuY3BwCiAgICAgZ2xpYi9HUmVmUHRyLmNwcAogICAgIGdsaWIvUnVuTG9v
cEdMaWIuY3BwCkBAIC01NSw1ICs1Niw2IEBAIGxpc3QoQVBQRU5EIFdURl9MSUJSQVJJRVMKICkK
IAogbGlzdChBUFBFTkQgV1RGX1NZU1RFTV9JTkNMVURFX0RJUkVDVE9SSUVTCisgICAgJHtHSU9f
VU5JWF9JTkNMVURFX0RJUlN9CiAgICAgJHtHTElCX0lOQ0xVREVfRElSU30KICkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dURi93dGYvUGxh
dGZvcm1NYWMuY21ha2UKaW5kZXggZmMxZTU3YjljYjI2YjZmMmI2YWJhNjE0M2JkMThhZWJiYjE2
YjUzNC4uMGUzZTE0MTYwOTEyYjc4NjE3NzM0MzUwYTkyNWQ5OWRiYTJjZGEwMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dURi93dGYv
UGxhdGZvcm1NYWMuY21ha2UKQEAgLTMyLDYgKzMyLDggQEAgbGlzdChBUFBFTkQgV1RGX1BVQkxJ
Q19IRUFERVJTCiAgICAgc3BpL2Rhcndpbi9YUENTUEkuaAogICAgIHNwaS9kYXJ3aW4vZHlsZFNQ
SS5oCiAKKyAgICBzcGkvbWFjL01ldGFkYXRhU1BJLmgKKwogICAgIHRleHQvY2YvVGV4dEJyZWFr
SXRlcmF0b3JDRi5oCiApCiAKQEAgLTQyLDYgKzQ0LDcgQEAgbGlzdChBUFBFTkQgV1RGX1NPVVJD
RVMKICAgICBTY2hlZHVsZVBhaXJNYWMubW0KIAogICAgIGNmL0NGVVJMRXh0cmFzLmNwcAorICAg
IGNmL0ZpbGVTeXN0ZW1DRi5jcHAKICAgICBjZi9MYW5ndWFnZUNGLmNwcAogICAgIGNmL1J1bkxv
b3BDRi5jcHAKICAgICBjZi9VUkxDRi5jcHAKQEAgLTQ5LDYgKzUyLDcgQEAgbGlzdChBUFBFTkQg
V1RGX1NPVVJDRVMKICAgICBjb2NvYS9BdXRvZHJhaW5lZFBvb2wuY3BwCiAgICAgY29jb2EvQ1BV
VGltZUNvY29hLmNwcAogICAgIGNvY29hL0VudGl0bGVtZW50cy5tbQorICAgIGNvY29hL0ZpbGVT
eXN0ZW1Db2NvYS5tbQogICAgIGNvY29hL01hY2hTZW5kUmlnaHQuY3BwCiAgICAgY29jb2EvTWFp
blRocmVhZENvY29hLm1tCiAgICAgY29jb2EvTWVtb3J5Rm9vdHByaW50Q29jb2EuY3BwCkBAIC01
OCw2ICs2Miw5IEBAIGxpc3QoQVBQRU5EIFdURl9TT1VSQ0VTCiAgICAgY29jb2EvV29ya1F1ZXVl
Q29jb2EuY3BwCiAKICAgICBtYWMvRGVwcmVjYXRlZFN5bWJvbHNVc2VkQnlTYWZhcmkubW0KKyAg
ICBtYWMvRmlsZVN5c3RlbU1hYy5tbQorCisgICAgcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcAog
CiAgICAgdGV4dC9jZi9BdG9taWNTdHJpbmdJbXBsQ0YuY3BwCiAgICAgdGV4dC9jZi9TdHJpbmdD
Ri5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtUGxheVN0YXRpb24uY21h
a2UgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtlCmluZGV4IGI5N2Zl
YzQwZWQzMGIxNzdiMmY1MzViNjIxNjBlZjFlZWUyZGU1NmUuLjNlOWU3NWM5MjhhNmM5NDYwNWI0
YmZjYWE3ZmJiMmI5ZjQyZjgzOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3Jt
UGxheVN0YXRpb24uY21ha2UKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1QbGF5U3RhdGlv
bi5jbWFrZQpAQCAtNSw2ICs1LDggQEAgbGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKICAgICBnZW5l
cmljL1J1bkxvb3BHZW5lcmljLmNwcAogICAgIGdlbmVyaWMvV29ya1F1ZXVlR2VuZXJpYy5jcHAK
IAorICAgIHBvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKwogICAgIHRleHQvdW5peC9UZXh0QnJl
YWtJdGVyYXRvckludGVybmFsSUNVVW5peC5jcHAKIAogICAgIHVuaXgvQ1BVVGltZVVuaXguY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdQRS5jbWFrZSBiL1NvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtV1BFLmNtYWtlCmluZGV4IDQ3M2NmZDYwMjZiMDY1MmMyZjAyZDJiMjg1
MzkyYjFkODAyZjBiYmMuLjA4NmFkZDNhYTkxOWZjNDkyMzlkNzFjMWNjODY4NWM1ZmM3MzliZDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV1BFLmNtYWtlCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL1BsYXRmb3JtV1BFLmNtYWtlCkBAIC0xNiw2ICsxNiw3IEBAIGxpc3QoQVBQRU5E
IFdURl9TT1VSQ0VTCiAgICAgZ2VuZXJpYy9NYWluVGhyZWFkR2VuZXJpYy5jcHAKICAgICBnZW5l
cmljL1dvcmtRdWV1ZUdlbmVyaWMuY3BwCiAKKyAgICBnbGliL0ZpbGVTeXN0ZW1HbGliLmNwcAog
ICAgIGdsaWIvR0xpYlV0aWxpdGllcy5jcHAKICAgICBnbGliL0dSZWZQdHIuY3BwCiAgICAgZ2xp
Yi9SdW5Mb29wR0xpYi5jcHAKQEAgLTQwLDUgKzQxLDYgQEAgbGlzdChBUFBFTkQgV1RGX0xJQlJB
UklFUwogKQogCiBsaXN0KEFQUEVORCBXVEZfU1lTVEVNX0lOQ0xVREVfRElSRUNUT1JJRVMKKyAg
ICAke0dJT19VTklYX0lOQ0xVREVfRElSU30KICAgICAke0dMSUJfSU5DTFVERV9ESVJTfQogKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1XaW4uY21ha2UgYi9Tb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybVdpbi5jbWFrZQppbmRleCAyYjhiNWY4MjcwZWI1ZjI0Njc2MDcyZGQxMjQ1
NzZkYTkzMDFmMGVhLi5iNmMwYWM2ZjRkZTVlMDVmMjdkNGQ5YWMwZmZiZDVjYzQwOTdhNmUzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdpbi5jbWFrZQorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9QbGF0Zm9ybVdpbi5jbWFrZQpAQCAtMTIsMTQgKzEyLDIwIEBAIGxpc3QoQVBQRU5E
IFdURl9TT1VSQ0VTCiAKICAgICB3aW4vQ1BVVGltZVdpbi5jcHAKICAgICB3aW4vRGJnSGVscGVy
V2luLmNwcAorICAgIHdpbi9GaWxlU3lzdGVtV2luLmNwcAogICAgIHdpbi9MYW5ndWFnZVdpbi5j
cHAKICAgICB3aW4vTWFpblRocmVhZFdpbi5jcHAKICAgICB3aW4vTWVtb3J5Rm9vdHByaW50V2lu
LmNwcAogICAgIHdpbi9NZW1vcnlQcmVzc3VyZUhhbmRsZXJXaW4uY3BwCisgICAgd2luL1BhdGhX
YWxrZXIuY3BwCiAgICAgd2luL1J1bkxvb3BXaW4uY3BwCiAgICAgd2luL1dvcmtRdWV1ZVdpbi5j
cHAKICkKIAorbGlzdChBUFBFTkQgV1RGX0xJQlJBUklFUworICAgIHNobHdhcGkKKykKKwogaWYg
KFVTRV9DRikKICAgICBsaXN0KEFQUEVORCBXVEZfUFVCTElDX0hFQURFUlMKICAgICAgICAgY2Yv
Q0ZVUkxFeHRyYXMuaApAQCAtMjksNiArMzUsNyBAQCBpZiAoVVNFX0NGKQogICAgICkKICAgICBs
aXN0KEFQUEVORCBXVEZfU09VUkNFUwogICAgICAgICBjZi9DRlVSTEV4dHJhcy5jcHAKKyAgICAg
ICAgY2YvRmlsZVN5c3RlbUNGLmNwcAogICAgICAgICBjZi9VUkxDRi5jcHAKIAogICAgICAgICB0
ZXh0L2NmL0F0b21pY1N0cmluZ0ltcGxDRi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L2NmL0ZpbGVTeXN0ZW1DRi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9jZi9GaWxlU3lzdGVtQ0YuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjcxMmQ2NWZjYWQyOTZiMzk2M2Y2MGE0NDk0YjZkN2U5MmQ0YWM1MGMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jZi9GaWxlU3lzdGVtQ0YuY3BwCkBAIC0w
LDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMTEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhl
IG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0
cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+
CisKKyNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9DRlN0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXVEYgeworCitDU3RyaW5nIEZpbGVTeXN0
ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAg
UmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZlN0cmluZyA9IHBhdGguY3JlYXRlQ0ZTdHJpbmcoKTsK
KworICAgIGlmICghY2ZTdHJpbmcpCisgICAgICAgIHJldHVybiBDU3RyaW5nKCk7CisKKyAgICBD
RkluZGV4IHNpemUgPSBDRlN0cmluZ0dldE1heGltdW1TaXplT2ZGaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oY2ZTdHJpbmcuZ2V0KCkpOworCisgICAgVmVjdG9yPGNoYXI+IGJ1ZmZlcihzaXplKTsK
KworICAgIGlmICghQ0ZTdHJpbmdHZXRGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY2ZTdHJpbmcu
Z2V0KCksIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpKSB7CisgICAgICAgIExPR19FUlJP
UigiRmFpbGVkIHRvIGdldCBmaWxlc3lzdGVtIHJlcHJlc2VudGF0aW9uIHRvIGNyZWF0ZSBDU3Ry
aW5nIGZyb20gY2ZTdHJpbmciKTsKKyAgICAgICAgcmV0dXJuIENTdHJpbmcoKTsKKyAgICB9CisK
KyAgICByZXR1cm4gQ1N0cmluZyhidWZmZXIuZGF0YSgpLCBzdHJsZW4oYnVmZmVyLmRhdGEoKSkp
OworfQorCitTdHJpbmcgRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihjb25zdCBjaGFyKiBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24pCit7CisgICAgcmV0dXJu
IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGtDRkFs
bG9jYXRvckRlZmF1bHQsIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbikpLmdldCgpOworfQorCitS
ZXRhaW5QdHI8Q0ZVUkxSZWY+IEZpbGVTeXN0ZW06OnBhdGhBc1VSTChjb25zdCBTdHJpbmcmIHBh
dGgpCit7CisgICAgQ0ZVUkxQYXRoU3R5bGUgcGF0aFN0eWxlOworI2lmIFBMQVRGT1JNKFdJTikK
KyAgICBwYXRoU3R5bGUgPSBrQ0ZVUkxXaW5kb3dzUGF0aFN0eWxlOworI2Vsc2UKKyAgICBwYXRo
U3R5bGUgPSBrQ0ZVUkxQT1NJWFBhdGhTdHlsZTsKKyNlbmRpZgorICAgIHJldHVybiBhZG9wdENG
KENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKDAsIHBhdGguY3JlYXRlQ0ZTdHJpbmcoKS5n
ZXQoKSwgcGF0aFN0eWxlLCBGQUxTRSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL0ZpbGVTeXN0ZW1Db2NvYS5tbSBiL1NvdXJjZS9X
VEYvd3RmL2NvY29hL0ZpbGVTeXN0ZW1Db2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMzg1NzQ2OWNlMDQ2
OTZiYWFhMzI2Mzc0MzhkMTMxNjZiZjA0ZmY4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dU
Ri93dGYvY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tCkBAIC0wLDAgKzEsMTQzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA3LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAo
IkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9t
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29u
ZmlnLmgiCisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgorCitAaW50ZXJmYWNlIFdURldlYkZp
bGVNYW5hZ2VyRGVsZWdhdGUgOiBOU09iamVjdCA8TlNGaWxlTWFuYWdlckRlbGVnYXRlPgorQGVu
ZAorCitAaW1wbGVtZW50YXRpb24gV1RGV2ViRmlsZU1hbmFnZXJEZWxlZ2F0ZQorCistIChCT09M
KWZpbGVNYW5hZ2VyOihOU0ZpbGVNYW5hZ2VyICopZmlsZU1hbmFnZXIgc2hvdWxkUHJvY2VlZEFm
dGVyRXJyb3I6KE5TRXJyb3IgKillcnJvciBtb3ZpbmdJdGVtQXRVUkw6KE5TVVJMICopc3JjVVJM
IHRvVVJMOihOU1VSTCAqKWRzdFVSTAoreworICAgIFVOVVNFRF9QQVJBTShmaWxlTWFuYWdlcik7
CisgICAgVU5VU0VEX1BBUkFNKHNyY1VSTCk7CisgICAgVU5VU0VEX1BBUkFNKGRzdFVSTCk7Cisg
ICAgcmV0dXJuIGVycm9yLmNvZGUgPT0gTlNGaWxlV3JpdGVGaWxlRXhpc3RzRXJyb3I7Cit9CisK
K0BlbmQKKworbmFtZXNwYWNlIFdURiB7CisKK25hbWVzcGFjZSBGaWxlU3lzdGVtIHsKKworU3Ry
aW5nIGhvbWVEaXJlY3RvcnlQYXRoKCkKK3sKKyAgICByZXR1cm4gTlNIb21lRGlyZWN0b3J5KCk7
Cit9CisKK1N0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxh
dGZvcm1GaWxlSGFuZGxlJiBwbGF0Zm9ybUZpbGVIYW5kbGUpCit7CisgICAgcGxhdGZvcm1GaWxl
SGFuZGxlID0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKKworICAgIFZlY3RvcjxjaGFyPiB0
ZW1wb3JhcnlGaWxlUGF0aChQQVRIX01BWCk7CisgICAgaWYgKCFjb25mc3RyKF9DU19EQVJXSU5f
VVNFUl9URU1QX0RJUiwgdGVtcG9yYXJ5RmlsZVBhdGguZGF0YSgpLCB0ZW1wb3JhcnlGaWxlUGF0
aC5zaXplKCkpKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICAvLyBTaHJpbmsgdGhl
IHZlY3Rvci4KKyAgICB0ZW1wb3JhcnlGaWxlUGF0aC5zaHJpbmsoc3RybGVuKHRlbXBvcmFyeUZp
bGVQYXRoLmRhdGEoKSkpOworCisgICAgLy8gRklYTUU6IENoYW5nZSB0byBhIHJ1bnRpbWUgYXNz
ZXJ0aW9uIHRoYXQgdGhlIHBhdGggZW5kcyB3aXRoIGEgc2xhc2ggb25jZSA8cmRhcjovL3Byb2Js
ZW0vMjM1NzkwNzc+IGlzCisgICAgLy8gZml4ZWQgaW4gYWxsIGlPUyBTaW11bGF0b3IgdmVyc2lv
bnMgdGhhdCB3ZSB1c2UuCisgICAgaWYgKHRlbXBvcmFyeUZpbGVQYXRoLmxhc3QoKSAhPSAnLycp
CisgICAgICAgIHRlbXBvcmFyeUZpbGVQYXRoLmFwcGVuZCgnLycpOworCisgICAgLy8gQXBwZW5k
IHRoZSBmaWxlIG5hbWUuCisgICAgQ1N0cmluZyBwcmVmaXhVdGY4ID0gcHJlZml4LnV0ZjgoKTsK
KyAgICB0ZW1wb3JhcnlGaWxlUGF0aC5hcHBlbmQocHJlZml4VXRmOC5kYXRhKCksIHByZWZpeFV0
ZjgubGVuZ3RoKCkpOworICAgIHRlbXBvcmFyeUZpbGVQYXRoLmFwcGVuZCgiWFhYWFhYIiwgNik7
CisgICAgdGVtcG9yYXJ5RmlsZVBhdGguYXBwZW5kKCdcMCcpOworCisgICAgcGxhdGZvcm1GaWxl
SGFuZGxlID0gbWtzdGVtcCh0ZW1wb3JhcnlGaWxlUGF0aC5kYXRhKCkpOworICAgIGlmIChwbGF0
Zm9ybUZpbGVIYW5kbGUgPT0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKKyAgICAgICAgcmV0
dXJuIFN0cmluZygpOworCisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgodGVtcG9yYXJ5Rmls
ZVBhdGguZGF0YSgpKTsKK30KKworYm9vbCBtb3ZlRmlsZShjb25zdCBTdHJpbmcmIG9sZFBhdGgs
IGNvbnN0IFN0cmluZyYgbmV3UGF0aCkKK3sKKyAgICAvLyBPdmVyd3JpdGUgZXhpc3RpbmcgZmls
ZXMuCisgICAgYXV0byBtYW5hZ2VyID0gYWRvcHROUyhbW05TRmlsZU1hbmFnZXIgYWxsb2NdIGlu
aXRdKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1dURldlYkZpbGVNYW5hZ2VyRGVs
ZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBbbWFuYWdlciBzZXREZWxlZ2F0ZTpkZWxlZ2F0ZS5n
ZXQoKV07CisKKyAgICBOU0Vycm9yICplcnJvciA9IG5pbDsKKyAgICBib29sIHN1Y2Nlc3MgPSBb
bWFuYWdlciBtb3ZlSXRlbUF0VVJMOltOU1VSTCBmaWxlVVJMV2l0aFBhdGg6b2xkUGF0aF0gdG9V
Ukw6W05TVVJMIGZpbGVVUkxXaXRoUGF0aDpuZXdQYXRoXSBlcnJvcjomZXJyb3JdOworICAgIGlm
ICghc3VjY2VzcykKKyAgICAgICAgTlNMb2coQCJFcnJvciBpbiBtb3ZlRmlsZTogJUAiLCBlcnJv
cik7CisgICAgcmV0dXJuIHN1Y2Nlc3M7Cit9CisKK2Jvb2wgZ2V0Vm9sdW1lRnJlZVNwYWNlKGNv
bnN0IFN0cmluZyYgcGF0aCwgdWludDY0X3QmIGZyZWVTcGFjZSkKK3sKKyAgICBOU0RpY3Rpb25h
cnkgKmZpbGVTeXN0ZW1BdHRyaWJ1dGVzRGljdGlvbmFyeSA9IFtbTlNGaWxlTWFuYWdlciBkZWZh
dWx0TWFuYWdlcl0gYXR0cmlidXRlc09mRmlsZVN5c3RlbUZvclBhdGg6KE5TU3RyaW5nICopcGF0
aCBlcnJvcjpOVUxMXTsKKyAgICBpZiAoIWZpbGVTeXN0ZW1BdHRyaWJ1dGVzRGljdGlvbmFyeSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGZyZWVTcGFjZSA9IFtbZmlsZVN5c3RlbUF0dHJp
YnV0ZXNEaWN0aW9uYXJ5IG9iamVjdEZvcktleTpOU0ZpbGVTeXN0ZW1GcmVlU2l6ZV0gdW5zaWdu
ZWRMb25nTG9uZ1ZhbHVlXTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworTlNTdHJpbmcgKmNyZWF0
ZVRlbXBvcmFyeURpcmVjdG9yeShOU1N0cmluZyAqZGlyZWN0b3J5UHJlZml4KQoreworICAgIE5T
U3RyaW5nICp0ZW1wRGlyZWN0b3J5ID0gTlNUZW1wb3JhcnlEaXJlY3RvcnkoKTsKKyAgICBpZiAo
IXRlbXBEaXJlY3RvcnkgfHwgIVt0ZW1wRGlyZWN0b3J5IGxlbmd0aF0pCisgICAgICAgIHJldHVy
biBuaWw7CisKKyAgICBpZiAoIWRpcmVjdG9yeVByZWZpeCB8fCAhW2RpcmVjdG9yeVByZWZpeCBs
ZW5ndGhdKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgTlNTdHJpbmcgKnRlbXBEaXJlY3Rv
cnlDb21wb25lbnQgPSBbZGlyZWN0b3J5UHJlZml4IHN0cmluZ0J5QXBwZW5kaW5nU3RyaW5nOkAi
LVhYWFhYWFhYIl07CisgICAgY29uc3QgY2hhciogdGVtcERpcmVjdG9yeUNTdHJpbmcgPSBbW3Rl
bXBEaXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OnRlbXBEaXJlY3RvcnlD
b21wb25lbnRdIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbl07CisgICAgaWYgKCF0ZW1wRGlyZWN0
b3J5Q1N0cmluZykKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIGNvbnN0IHNpemVfdCBsZW5n
dGggPSBzdHJsZW4odGVtcERpcmVjdG9yeUNTdHJpbmcpOworICAgIEFTU0VSVChsZW5ndGggPD0g
TUFYUEFUSExFTik7CisgICAgaWYgKGxlbmd0aCA+IE1BWFBBVEhMRU4pCisgICAgICAgIHJldHVy
biBuaWw7CisKKyAgICBjb25zdCBzaXplX3QgbGVuZ3RoUGx1c051bGxUZXJtaW5hdG9yID0gbGVu
Z3RoICsgMTsKKyAgICBWZWN0b3I8Y2hhciwgTUFYUEFUSExFTiArIDE+IHBhdGgobGVuZ3RoUGx1
c051bGxUZXJtaW5hdG9yKTsKKyAgICBtZW1jcHkocGF0aC5kYXRhKCksIHRlbXBEaXJlY3RvcnlD
U3RyaW5nLCBsZW5ndGhQbHVzTnVsbFRlcm1pbmF0b3IpOworCisgICAgaWYgKCFta2R0ZW1wKHBh
dGguZGF0YSgpKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIHJldHVybiBbW05TRmlsZU1h
bmFnZXIgZGVmYXVsdE1hbmFnZXJdIHN0cmluZ1dpdGhGaWxlU3lzdGVtUmVwcmVzZW50YXRpb246
cGF0aC5kYXRhKCkgbGVuZ3RoOmxlbmd0aF07Cit9CisKK2Jvb2wgZGVsZXRlTm9uRW1wdHlEaXJl
Y3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIHJldHVybiBbW05TRmlsZU1hbmFnZXIg
ZGVmYXVsdE1hbmFnZXJdIHJlbW92ZUl0ZW1BdFBhdGg6cGF0aCBlcnJvcjpuaWxdOworfQorCit9
IC8vIG5hbWVzcGFjZSBGaWxlU3lzdGVtCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwIGIvU291cmNlL1dURi93dGYv
Z2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmZmNmJkM2ZhNTQ4MmE1YTBmODQw
Yzk2Nzg0MmM0NWI4YWUxMjJjZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL2ds
aWIvRmlsZVN5c3RlbUdsaWIuY3BwCkBAIC0wLDAgKzEsNDY5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA3LCAyMDA5IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDggQ29sbGFib3JhLCBMdGQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDEwIE1v
dG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KKworI2luY2x1ZGUgPGdpby9nZmls
ZWRlc2NyaXB0b3JiYXNlZC5oPgorI2luY2x1ZGUgPGdpby9naW8uaD4KKyNpbmNsdWRlIDxnbGli
Lmg+CisjaW5jbHVkZSA8Z2xpYi9nc3RkaW8uaD4KKyNpbmNsdWRlIDxzeXMvZmlsZS5oPgorI2lu
Y2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVNZXRhZGF0YS5oPgor
I2luY2x1ZGUgPHd0Zi9VVUlELmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR0xpYlV0aWxpdGllcy5o
PgorI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5p
cXVlUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwor
bmFtZXNwYWNlIFdURiB7CisKK25hbWVzcGFjZSBGaWxlU3lzdGVtIHsKKworLyogT24gbGludXgg
ZmlsZSBuYW1lcyBhcmUganVzdCByYXcgYnl0ZXMsIHNvIGFsc28gc3RyaW5ncyB0aGF0IGNhbm5v
dCBiZSBlbmNvZGVkIGluIGFueSB3YXkKKyAqIGFyZSB2YWxpZCBmaWxlIG5hbWVzLiBUaGlzIG1l
YW4gdGhhdCB3ZSBjYW5ub3QganVzdCBzdG9yZSBhIGZpbGUgbmFtZSBhcy1pcyBpbiBhIFN0cmlu
ZworICogYnV0IHdlIGhhdmUgdG8gZXNjYXBlIGl0LgorICogT24gV2luZG93cyB0aGUgR0xpYiBm
aWxlIG5hbWUgZW5jb2RpbmcgaXMgYWx3YXlzIFVURi04IHNvIHdlIGNhbiBvcHRpbWl6ZSB0aGlz
IGNhc2UuICovCitTdHJpbmcgc3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25z
dCBjaGFyKiBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24pCit7CisgICAgaWYgKCFmaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24pCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworI2lmIE9TKFdJTkRP
V1MpCisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KTsKKyNlbHNlCisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZXNjYXBlZFN0cmluZyhnX3VyaV9lc2Nh
cGVfc3RyaW5nKGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbiwgIi86IiwgRkFMU0UpKTsKKyAgICBy
ZXR1cm4gZXNjYXBlZFN0cmluZy5nZXQoKTsKKyNlbmRpZgorfQorCitzdGF0aWMgR1VuaXF1ZVB0
cjxjaGFyPiB1bmVzY2FwZWRGaWxlbmFtZShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgaWYg
KHBhdGguaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyNpZiBPUyhXSU5ET1dT
KQorICAgIHJldHVybiBHVW5pcXVlUHRyPGNoYXI+KGdfc3RyZHVwKHBhdGgudXRmOCgpLmRhdGEo
KSkpOworI2Vsc2UKKyAgICByZXR1cm4gR1VuaXF1ZVB0cjxjaGFyPihnX3VyaV91bmVzY2FwZV9z
dHJpbmcocGF0aC51dGY4KCkuZGF0YSgpLCBudWxscHRyKSk7CisjZW5kaWYKK30KKworQ1N0cmlu
ZyBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBwYXRoKQoreworI2lmIE9T
KFdJTkRPV1MpCisgICAgcmV0dXJuIHBhdGgudXRmOCgpOworI2Vsc2UKKyAgICBHVW5pcXVlUHRy
PGdjaGFyPiBmaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGgpOworICAgIHJldHVybiBm
aWxlbmFtZS5nZXQoKTsKKyNlbmRpZgorfQorCisvLyBDb252ZXJ0cyBhIHN0cmluZyB0byBzb21l
dGhpbmcgc3VpdGFibGUgdG8gYmUgZGlzcGxheWVkIHRvIHRoZSB1c2VyLgorU3RyaW5nIGZpbGVu
YW1lRm9yRGlzcGxheShjb25zdCBTdHJpbmcmIHN0cmluZykKK3sKKyNpZiBPUyhXSU5ET1dTKQor
ICAgIHJldHVybiBzdHJpbmc7CisjZWxzZQorICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1l
ID0gdW5lc2NhcGVkRmlsZW5hbWUoc3RyaW5nKTsKKyAgICBpZiAoIWZpbGVuYW1lKQorICAgICAg
ICByZXR1cm4gc3RyaW5nOworCisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZGlzcGxheShnX2ZpbGVu
YW1lX3RvX3V0ZjgoZmlsZW5hbWUuZ2V0KCksIC0xLCBudWxscHRyLCBudWxscHRyLCBudWxscHRy
KSk7CisgICAgaWYgKCFkaXNwbGF5KQorICAgICAgICByZXR1cm4gc3RyaW5nOworCisgICAgcmV0
dXJuIFN0cmluZzo6ZnJvbVVURjgoZGlzcGxheS5nZXQoKSk7CisjZW5kaWYKK30KKworYm9vbCBm
aWxlRXhpc3RzKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBm
aWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGgpOworICAgIHJldHVybiBmaWxlbmFtZSA/
IGdfZmlsZV90ZXN0KGZpbGVuYW1lLmdldCgpLCBHX0ZJTEVfVEVTVF9FWElTVFMpIDogZmFsc2U7
Cit9CisKK2Jvb2wgZGVsZXRlRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgR1VuaXF1
ZVB0cjxnY2hhcj4gZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShwYXRoKTsKKyAgICByZXR1
cm4gZmlsZW5hbWUgPyBnX3JlbW92ZShmaWxlbmFtZS5nZXQoKSkgIT0gLTEgOiBmYWxzZTsKK30K
KworYm9vbCBkZWxldGVFbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAg
R1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShwYXRoKTsKKyAg
ICByZXR1cm4gZmlsZW5hbWUgPyBnX3JtZGlyKGZpbGVuYW1lLmdldCgpKSAhPSAtMSA6IGZhbHNl
OworfQorCitzdGF0aWMgYm9vbCBnZXRGaWxlU3RhdChjb25zdCBTdHJpbmcmIHBhdGgsIEdTdGF0
QnVmKiBzdGF0QnVmZmVyKQoreworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5l
c2NhcGVkRmlsZW5hbWUocGF0aCk7CisgICAgaWYgKCFmaWxlbmFtZSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgcmV0dXJuIGdfc3RhdChmaWxlbmFtZS5nZXQoKSwgc3RhdEJ1ZmZlcikg
IT0gLTE7Cit9CisKK3N0YXRpYyBib29sIGdldEZpbGVMU3RhdChjb25zdCBTdHJpbmcmIHBhdGgs
IEdTdGF0QnVmKiBzdGF0QnVmZmVyKQoreworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1l
ID0gdW5lc2NhcGVkRmlsZW5hbWUocGF0aCk7CisgICAgaWYgKCFmaWxlbmFtZSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGdfbHN0YXQoZmlsZW5hbWUuZ2V0KCksIHN0YXRC
dWZmZXIpICE9IC0xOworfQorCitib29sIGdldEZpbGVTaXplKGNvbnN0IFN0cmluZyYgcGF0aCwg
bG9uZyBsb25nJiByZXN1bHRTaXplKQoreworICAgIEdTdGF0QnVmIHN0YXRSZXN1bHQ7CisgICAg
aWYgKCFnZXRGaWxlU3RhdChwYXRoLCAmc3RhdFJlc3VsdCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIHJlc3VsdFNpemUgPSBzdGF0UmVzdWx0LnN0X3NpemU7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK2Jvb2wgZ2V0RmlsZVNpemUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgbG9u
ZyBsb25nJiByZXN1bHRTaXplKQoreworICAgIGF1dG8gaW5mbyA9IGdfZmlsZV9pb19zdHJlYW1f
cXVlcnlfaW5mbyhoYW5kbGUsIEdfRklMRV9BVFRSSUJVVEVfU1RBTkRBUkRfU0laRSwgbnVsbHB0
ciwgbnVsbHB0cik7CisgICAgaWYgKCFpbmZvKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICByZXN1bHRTaXplID0gZ19maWxlX2luZm9fZ2V0X3NpemUoaW5mbyk7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK09wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlQ3JlYXRpb25UaW1lKGNvbnN0IFN0
cmluZyYpCit7CisgICAgLy8gRklYTUU6IElzIHRoZXJlIGEgd2F5IHRvIHJldHJpZXZlIGZpbGUg
Y3JlYXRpb24gdGltZSB3aXRoIEd0ayBvbiBwbGF0Zm9ybXMgdGhhdCBzdXBwb3J0IGl0PworICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7Cit9CisKK09wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlTW9k
aWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgR1N0YXRCdWYgc3RhdFJl
c3VsdDsKKyAgICBpZiAoIWdldEZpbGVTdGF0KHBhdGgsICZzdGF0UmVzdWx0KSkKKyAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiBXYWxsVGltZTo6ZnJvbVJhd1NlY29u
ZHMoc3RhdFJlc3VsdC5zdF9tdGltZSk7Cit9CisKK3N0YXRpYyBGaWxlTWV0YWRhdGE6OlR5cGUg
dG9GaWxlTWV0YXRhVHlwZShHU3RhdEJ1ZiBzdGF0UmVzdWx0KQoreworICAgIGlmIChTX0lTRElS
KHN0YXRSZXN1bHQuc3RfbW9kZSkpCisgICAgICAgIHJldHVybiBGaWxlTWV0YWRhdGE6OlR5cGU6
OkRpcmVjdG9yeTsKKyAgICBpZiAoU19JU0xOSyhzdGF0UmVzdWx0LnN0X21vZGUpKQorICAgICAg
ICByZXR1cm4gRmlsZU1ldGFkYXRhOjpUeXBlOjpTeW1ib2xpY0xpbms7CisgICAgcmV0dXJuIEZp
bGVNZXRhZGF0YTo6VHlwZTo6RmlsZTsKK30KKworc3RhdGljIE9wdGlvbmFsPEZpbGVNZXRhZGF0
YT4gZmlsZU1ldGFkYXRhVXNpbmdGdW5jdGlvbihjb25zdCBTdHJpbmcmIHBhdGgsIGJvb2wgKCpz
dGF0RnVuYykoY29uc3QgU3RyaW5nJiwgR1N0YXRCdWYqKSkKK3sKKyAgICBHU3RhdEJ1ZiBzdGF0
UmVzdWx0OworICAgIGlmICghc3RhdEZ1bmMocGF0aCwgJnN0YXRSZXN1bHQpKQorICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgU3RyaW5nIGZpbGVuYW1lID0gcGF0aEdldEZpbGVO
YW1lKHBhdGgpOworICAgIGJvb2wgaXNIaWRkZW4gPSAhZmlsZW5hbWUuaXNFbXB0eSgpICYmIGZp
bGVuYW1lWzBdID09ICcuJzsKKworICAgIHJldHVybiBGaWxlTWV0YWRhdGEgeworICAgICAgICBX
YWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoc3RhdFJlc3VsdC5zdF9tdGltZSksCisgICAgICAgIHN0
YXRSZXN1bHQuc3Rfc2l6ZSwKKyAgICAgICAgaXNIaWRkZW4sCisgICAgICAgIHRvRmlsZU1ldGF0
YVR5cGUoc3RhdFJlc3VsdCkKKyAgICB9OworfQorCitPcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZp
bGVNZXRhZGF0YShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgcmV0dXJuIGZpbGVNZXRhZGF0
YVVzaW5nRnVuY3Rpb24ocGF0aCwgJmdldEZpbGVMU3RhdCk7Cit9CisKK09wdGlvbmFsPEZpbGVN
ZXRhZGF0YT4gZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3MoY29uc3QgU3RyaW5nJiBwYXRo
KQoreworICAgIHJldHVybiBmaWxlTWV0YWRhdGFVc2luZ0Z1bmN0aW9uKHBhdGgsICZnZXRGaWxl
U3RhdCk7Cit9CisKK1N0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY29uc3QgU3RyaW5n
JiBwYXRoLCBjb25zdCBTdHJpbmcmIGNvbXBvbmVudCkKK3sKKyAgICBpZiAocGF0aC5lbmRzV2l0
aChHX0RJUl9TRVBBUkFUT1JfUykpCisgICAgICAgIHJldHVybiBwYXRoICsgY29tcG9uZW50Owor
ICAgIHJldHVybiBwYXRoICsgR19ESVJfU0VQQVJBVE9SX1MgKyBjb21wb25lbnQ7Cit9CisKK1N0
cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKFN0cmluZ1ZpZXcgcGF0aCwgY29uc3QgVmVj
dG9yPFN0cmluZ1ZpZXc+JiBjb21wb25lbnRzKQoreworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRl
cjsKKyAgICBidWlsZGVyLmFwcGVuZChwYXRoKTsKKyAgICBmb3IgKGF1dG8mIGNvbXBvbmVudCA6
IGNvbXBvbmVudHMpIHsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoR19ESVJfU0VQQVJBVE9SX1Mp
OworICAgICAgICBidWlsZGVyLmFwcGVuZChjb21wb25lbnQpOworICAgIH0KKyAgICByZXR1cm4g
YnVpbGRlci50b1N0cmluZygpOworfQorCitib29sIG1ha2VBbGxEaXJlY3Rvcmllcyhjb25zdCBT
dHJpbmcmIHBhdGgpCit7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUgPSB1bmVzY2Fw
ZWRGaWxlbmFtZShwYXRoKTsKKyAgICByZXR1cm4gZmlsZW5hbWUgPyBnX21rZGlyX3dpdGhfcGFy
ZW50cyhmaWxlbmFtZS5nZXQoKSwgU19JUldYVSkgIT0gLTEgOiBmYWxzZTsKK30KKworU3RyaW5n
IGhvbWVEaXJlY3RvcnlQYXRoKCkKK3sKKyAgICByZXR1cm4gc3RyaW5nRnJvbUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihnX2dldF9ob21lX2RpcigpKTsKK30KKworYm9vbCBjcmVhdGVTeW1ib2xp
Y0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGljTGlu
a1BhdGgpCit7CisgICAgQ1N0cmluZyB0YXJnZXRQYXRoRlNSZXAgPSBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24odGFyZ2V0UGF0aCk7CisgICAgaWYgKCF0YXJnZXRQYXRoRlNSZXAuZGF0YSgpIHx8
IHRhcmdldFBhdGhGU1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgQ1N0cmluZyBzeW1ib2xpY0xpbmtQYXRoRlNSZXAgPSBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oc3ltYm9saWNMaW5rUGF0aCk7CisgICAgaWYgKCFzeW1ib2xpY0xpbmtQYXRoRlNS
ZXAuZGF0YSgpIHx8IHN5bWJvbGljTGlua1BhdGhGU1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuICFzeW1saW5rKHRhcmdldFBhdGhGU1Jl
cC5kYXRhKCksIHN5bWJvbGljTGlua1BhdGhGU1JlcC5kYXRhKCkpOworfQorCitTdHJpbmcgcGF0
aEdldEZpbGVOYW1lKGNvbnN0IFN0cmluZyYgcGF0aE5hbWUpCit7CisgICAgR1VuaXF1ZVB0cjxn
Y2hhcj4gdG1wRmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShwYXRoTmFtZSk7CisgICAgaWYg
KCF0bXBGaWxlbmFtZSkKKyAgICAgICAgcmV0dXJuIHBhdGhOYW1lOworCisgICAgR1VuaXF1ZVB0
cjxnY2hhcj4gYmFzZU5hbWUoZ19wYXRoX2dldF9iYXNlbmFtZSh0bXBGaWxlbmFtZS5nZXQoKSkp
OworICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGJhc2VOYW1lLmdldCgpKTsKK30KKworYm9v
bCBnZXRWb2x1bWVGcmVlU3BhY2UoY29uc3QgU3RyaW5nJiBwYXRoLCB1aW50NjRfdCYgZnJlZVNw
YWNlKQoreworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5h
bWUocGF0aCk7CisgICAgaWYgKCFmaWxlbmFtZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgR1JlZlB0cjxHRmlsZT4gZmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKGZp
bGVuYW1lLmdldCgpKSk7CisgICAgR1JlZlB0cjxHRmlsZUluZm8+IGZpbGVJbmZvID0gYWRvcHRH
UmVmKGdfZmlsZV9xdWVyeV9maWxlc3lzdGVtX2luZm8oZmlsZS5nZXQoKSwgR19GSUxFX0FUVFJJ
QlVURV9GSUxFU1lTVEVNX0ZSRUUsIDAsIDApKTsKKyAgICBpZiAoIWZpbGVJbmZvKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBmcmVlU3BhY2UgPSBnX2ZpbGVfaW5mb19nZXRfYXR0cmli
dXRlX3VpbnQ2NChmaWxlSW5mby5nZXQoKSwgR19GSUxFX0FUVFJJQlVURV9GSUxFU1lTVEVNX0ZS
RUUpOworICAgIHJldHVybiAhIWZyZWVTcGFjZTsKK30KKworU3RyaW5nIGRpcmVjdG9yeU5hbWUo
Y29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0g
dW5lc2NhcGVkRmlsZW5hbWUocGF0aCk7CisgICAgaWYgKCFmaWxlbmFtZSkKKyAgICAgICAgcmV0
dXJuIFN0cmluZygpOworCisgICAgR1VuaXF1ZVB0cjxjaGFyPiBkaXJuYW1lKGdfcGF0aF9nZXRf
ZGlybmFtZShmaWxlbmFtZS5nZXQoKSkpOworICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGRp
cm5hbWUuZ2V0KCkpOworfQorCitWZWN0b3I8U3RyaW5nPiBsaXN0RGlyZWN0b3J5KGNvbnN0IFN0
cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBmaWx0ZXIpCit7CisgICAgVmVjdG9yPFN0cmluZz4g
ZW50cmllczsKKworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2NhcGVkRmls
ZW5hbWUocGF0aCk7CisgICAgaWYgKCFmaWxlbmFtZSkKKyAgICAgICAgcmV0dXJuIGVudHJpZXM7
CisKKyAgICBHVW5pcXVlUHRyPEdEaXI+IGRpcihnX2Rpcl9vcGVuKGZpbGVuYW1lLmdldCgpLCAw
LCBudWxscHRyKSk7CisgICAgaWYgKCFkaXIpCisgICAgICAgIHJldHVybiBlbnRyaWVzOworCisg
ICAgR1VuaXF1ZVB0cjxHUGF0dGVyblNwZWM+IHBzcGVjKGdfcGF0dGVybl9zcGVjX25ldygoZmls
dGVyLnV0ZjgoKSkuZGF0YSgpKSk7CisgICAgd2hpbGUgKGNvbnN0IGNoYXIqIG5hbWUgPSBnX2Rp
cl9yZWFkX25hbWUoZGlyLmdldCgpKSkgeworICAgICAgICBpZiAoIWdfcGF0dGVybl9tYXRjaF9z
dHJpbmcocHNwZWMuZ2V0KCksIG5hbWUpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAg
ICAgR1VuaXF1ZVB0cjxnY2hhcj4gZW50cnkoZ19idWlsZF9maWxlbmFtZShmaWxlbmFtZS5nZXQo
KSwgbmFtZSwgbnVsbHB0cikpOworICAgICAgICBlbnRyaWVzLmFwcGVuZChzdHJpbmdGcm9tRmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKGVudHJ5LmdldCgpKSk7CisgICAgfQorCisgICAgcmV0dXJu
IGVudHJpZXM7Cit9CisKK1N0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHBy
ZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpCit7CisgICAgR1VuaXF1ZVB0cjxnY2hh
cj4gZmlsZW5hbWUoZ19zdHJkdXBfcHJpbnRmKCIlcyVzIiwgcHJlZml4LnV0ZjgoKS5kYXRhKCks
IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKS51dGY4KCkuZGF0YSgpKSk7CisgICAgR1VuaXF1
ZVB0cjxnY2hhcj4gdGVtcFBhdGgoZ19idWlsZF9maWxlbmFtZShnX2dldF90bXBfZGlyKCksIGZp
bGVuYW1lLmdldCgpLCBOVUxMKSk7CisgICAgR1JlZlB0cjxHRmlsZT4gZmlsZSA9IGFkb3B0R1Jl
ZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKHRlbXBQYXRoLmdldCgpKSk7CisKKyAgICBoYW5kbGUgPSBn
X2ZpbGVfY3JlYXRlX3JlYWR3cml0ZShmaWxlLmdldCgpLCBHX0ZJTEVfQ1JFQVRFX05PTkUsIDAs
IDApOworICAgIGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUpKQorICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7CisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgodGVtcFBhdGguZ2V0KCkpOworfQor
CitQbGF0Zm9ybUZpbGVIYW5kbGUgb3BlbkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Bl
bk1vZGUgbW9kZSkKK3sKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZSA9IHVuZXNjYXBl
ZEZpbGVuYW1lKHBhdGgpOworICAgIGlmICghZmlsZW5hbWUpCisgICAgICAgIHJldHVybiBpbnZh
bGlkUGxhdGZvcm1GaWxlSGFuZGxlOworCisgICAgR1JlZlB0cjxHRmlsZT4gZmlsZSA9IGFkb3B0
R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKGZpbGVuYW1lLmdldCgpKSk7CisgICAgR0ZpbGVJT1N0
cmVhbSogaW9TdHJlYW0gPSAwOworICAgIGlmIChtb2RlID09IEZpbGVPcGVuTW9kZTo6UmVhZCkK
KyAgICAgICAgaW9TdHJlYW0gPSBnX2ZpbGVfb3Blbl9yZWFkd3JpdGUoZmlsZS5nZXQoKSwgMCwg
MCk7CisgICAgZWxzZSBpZiAobW9kZSA9PSBGaWxlT3Blbk1vZGU6OldyaXRlKSB7CisgICAgICAg
IGlmIChnX2ZpbGVfdGVzdChmaWxlbmFtZS5nZXQoKSwgc3RhdGljX2Nhc3Q8R0ZpbGVUZXN0PihH
X0ZJTEVfVEVTVF9FWElTVFMgfCBHX0ZJTEVfVEVTVF9JU19SRUdVTEFSKSkpCisgICAgICAgICAg
ICBpb1N0cmVhbSA9IGdfZmlsZV9vcGVuX3JlYWR3cml0ZShmaWxlLmdldCgpLCAwLCAwKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgaW9TdHJlYW0gPSBnX2ZpbGVfY3JlYXRlX3JlYWR3cml0
ZShmaWxlLmdldCgpLCBHX0ZJTEVfQ1JFQVRFX05PTkUsIDAsIDApOworICAgIH0KKworICAgIHJl
dHVybiBpb1N0cmVhbTsKK30KKwordm9pZCBjbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlJiBo
YW5kbGUpCit7CisgICAgaWYgKCFpc0hhbmRsZVZhbGlkKGhhbmRsZSkpCisgICAgICAgIHJldHVy
bjsKKworICAgIGdfaW9fc3RyZWFtX2Nsb3NlKEdfSU9fU1RSRUFNKGhhbmRsZSksIDAsIDApOwor
ICAgIGdfb2JqZWN0X3VucmVmKGhhbmRsZSk7CisgICAgaGFuZGxlID0gaW52YWxpZFBsYXRmb3Jt
RmlsZUhhbmRsZTsKK30KKworbG9uZyBsb25nIHNlZWtGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBo
YW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQsIEZpbGVTZWVrT3JpZ2luIG9yaWdpbikKK3sKKyAgICBH
U2Vla1R5cGUgc2Vla1R5cGUgPSBHX1NFRUtfU0VUOworICAgIHN3aXRjaCAob3JpZ2luKSB7Cisg
ICAgY2FzZSBGaWxlU2Vla09yaWdpbjo6QmVnaW5uaW5nOgorICAgICAgICBzZWVrVHlwZSA9IEdf
U0VFS19TRVQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRmlsZVNlZWtPcmlnaW46OkN1cnJl
bnQ6CisgICAgICAgIHNlZWtUeXBlID0gR19TRUVLX0NVUjsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBGaWxlU2Vla09yaWdpbjo6RW5kOgorICAgICAgICBzZWVrVHlwZSA9IEdfU0VFS19FTkQ7
CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIH0KKworICAgIGlmICghZ19zZWVrYWJsZV9zZWVrKEdfU0VFS0FCTEUoZ19pb19z
dHJlYW1fZ2V0X2lucHV0X3N0cmVhbShHX0lPX1NUUkVBTShoYW5kbGUpKSksCisgICAgICAgIG9m
ZnNldCwgc2Vla1R5cGUsIDAsIDApKQorICAgIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0K
KyAgICByZXR1cm4gZ19zZWVrYWJsZV90ZWxsKEdfU0VFS0FCTEUoZ19pb19zdHJlYW1fZ2V0X2lu
cHV0X3N0cmVhbShHX0lPX1NUUkVBTShoYW5kbGUpKSkpOworfQorCitpbnQgd3JpdGVUb0ZpbGUo
UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkK
K3sKKyAgICBnc2l6ZSBieXRlc1dyaXR0ZW47CisgICAgZ19vdXRwdXRfc3RyZWFtX3dyaXRlX2Fs
bChnX2lvX3N0cmVhbV9nZXRfb3V0cHV0X3N0cmVhbShHX0lPX1NUUkVBTShoYW5kbGUpKSwKKyAg
ICAgICAgZGF0YSwgbGVuZ3RoLCAmYnl0ZXNXcml0dGVuLCAwLCAwKTsKKyAgICByZXR1cm4gYnl0
ZXNXcml0dGVuOworfQorCitpbnQgcmVhZEZyb21GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5k
bGUsIGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCit7CisgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+
IGVycm9yOworICAgIGRvIHsKKyAgICAgICAgZ3NzaXplIGJ5dGVzUmVhZCA9IGdfaW5wdXRfc3Ry
ZWFtX3JlYWQoZ19pb19zdHJlYW1fZ2V0X2lucHV0X3N0cmVhbShHX0lPX1NUUkVBTShoYW5kbGUp
KSwKKyAgICAgICAgICAgIGRhdGEsIGxlbmd0aCwgMCwgJmVycm9yLm91dFB0cigpKTsKKyAgICAg
ICAgaWYgKGJ5dGVzUmVhZCA+PSAwKQorICAgICAgICAgICAgcmV0dXJuIGJ5dGVzUmVhZDsKKyAg
ICB9IHdoaWxlIChlcnJvciAmJiBlcnJvci0+Y29kZSA9PSBHX0ZJTEVfRVJST1JfSU5UUik7Cisg
ICAgcmV0dXJuIC0xOworfQorCitib29sIG1vdmVGaWxlKGNvbnN0IFN0cmluZyYgb2xkUGF0aCwg
Y29uc3QgU3RyaW5nJiBuZXdQYXRoKQoreworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IG9sZEZpbGVu
YW1lID0gdW5lc2NhcGVkRmlsZW5hbWUob2xkUGF0aCk7CisgICAgaWYgKCFvbGRGaWxlbmFtZSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gbmV3RmlsZW5h
bWUgPSB1bmVzY2FwZWRGaWxlbmFtZShuZXdQYXRoKTsKKyAgICBpZiAoIW5ld0ZpbGVuYW1lKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBHUmVmUHRyPEdGaWxlPiBvbGRGaWxlID0gYWRv
cHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgob2xkRmlsZW5hbWUuZ2V0KCkpKTsKKyAgICBHUmVm
UHRyPEdGaWxlPiBuZXdGaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgobmV3Rmls
ZW5hbWUuZ2V0KCkpKTsKKworICAgIHJldHVybiBnX2ZpbGVfbW92ZShvbGRGaWxlLmdldCgpLCBu
ZXdGaWxlLmdldCgpLCBHX0ZJTEVfQ09QWV9PVkVSV1JJVEUsIG51bGxwdHIsIG51bGxwdHIsIG51
bGxwdHIsIG51bGxwdHIpOworfQorCitib29sIGhhcmRMaW5rT3JDb3B5RmlsZShjb25zdCBTdHJp
bmcmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbikKK3sKKyNpZiBPUyhXSU5ET1dT
KQorICAgIHJldHVybiAhITo6Q29weUZpbGUoc291cmNlLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1p
bmF0aW9uKCkuZGF0YSgpLCBkZXN0aW5hdGlvbi5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlv
bigpLmRhdGEoKSwgVFJVRSk7CisjZWxzZQorICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHNvdXJjZUZp
bGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUoc291cmNlKTsKKyAgICBpZiAoIXNvdXJjZUZpbGVu
YW1lKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBkZXN0
aW5hdGlvbkZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUoZGVzdGluYXRpb24pOworICAgIGlm
ICghZGVzdGluYXRpb25GaWxlbmFtZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYg
KCFsaW5rKHNvdXJjZUZpbGVuYW1lLmdldCgpLCBkZXN0aW5hdGlvbkZpbGVuYW1lLmdldCgpKSkK
KyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBIYXJkIGxpbmsgZmFpbGVkLiBQZXJmb3Jt
IGEgY29weSBpbnN0ZWFkLgorICAgIEdSZWZQdHI8R0ZpbGU+IHNvdXJjZUZpbGUgPSBhZG9wdEdS
ZWYoZ19maWxlX25ld19mb3JfcGF0aChzb3VyY2VGaWxlbmFtZS5nZXQoKSkpOworICAgIEdSZWZQ
dHI8R0ZpbGU+IGRlc3RpbmF0aW9uRmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRo
KGRlc3RpbmF0aW9uRmlsZW5hbWUuZ2V0KCkpKTsKKyAgICByZXR1cm4gZ19maWxlX2NvcHkoc291
cmNlRmlsZS5nZXQoKSwgZGVzdGluYXRpb25GaWxlLmdldCgpLCBHX0ZJTEVfQ09QWV9OT05FLCBu
dWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKTsKKyNlbmRpZgorfQorCitPcHRpb25h
bDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQoreworICAg
IEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUoZnNGaWxlLmRh
dGEoKSk7CisgICAgaWYgKCFmaWxlbmFtZSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KworICAgIEdSZWZQdHI8R0ZpbGU+IGZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0
aChmaWxlbmFtZS5nZXQoKSkpOworICAgIEdSZWZQdHI8R0ZpbGVJbmZvPiBmaWxlSW5mbyA9IGFk
b3B0R1JlZihnX2ZpbGVfcXVlcnlfZmlsZXN5c3RlbV9pbmZvKGZpbGUuZ2V0KCksIEdfRklMRV9B
VFRSSUJVVEVfVU5JWF9ERVZJQ0UsIG51bGxwdHIsIG51bGxwdHIpKTsKKyAgICBpZiAoIWZpbGVJ
bmZvKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIGdfZmlsZV9p
bmZvX2dldF9hdHRyaWJ1dGVfdWludDMyKGZpbGVJbmZvLmdldCgpLCBHX0ZJTEVfQVRUUklCVVRF
X1VOSVhfREVWSUNFKTsKK30KKworI2lmIFVTRShGSUxFX0xPQ0spCitib29sIGxvY2tGaWxlKFBs
YXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIE9wdGlvblNldDxGaWxlTG9ja01vZGU+IGxvY2tNb2Rl
KQoreworICAgIENPTVBJTEVfQVNTRVJUKExPQ0tfU0ggPT0gV1RGOjplbnVtVG9VbmRlcmx5aW5n
VHlwZShGaWxlTG9ja01vZGU6OlNoYXJlZCksIExvY2tTaGFyZWRFbmNvZGluZ0lzQXNFeHBlY3Rl
ZCk7CisgICAgQ09NUElMRV9BU1NFUlQoTE9DS19FWCA9PSBXVEY6OmVudW1Ub1VuZGVybHlpbmdU
eXBlKEZpbGVMb2NrTW9kZTo6RXhjbHVzaXZlKSwgTG9ja0V4Y2x1c2l2ZUVuY29kaW5nSXNBc0V4
cGVjdGVkKTsKKyAgICBDT01QSUxFX0FTU0VSVChMT0NLX05CID09IFdURjo6ZW51bVRvVW5kZXJs
eWluZ1R5cGUoRmlsZUxvY2tNb2RlOjpOb25ibG9ja2luZyksIExvY2tOb25ibG9ja2luZ0VuY29k
aW5nSXNBc0V4cGVjdGVkKTsKKyAgICBhdXRvKiBpbnB1dFN0cmVhbSA9IGdfaW9fc3RyZWFtX2dl
dF9pbnB1dF9zdHJlYW0oR19JT19TVFJFQU0oaGFuZGxlKSk7CisgICAgaW50IHJlc3VsdCA9IGZs
b2NrKGdfZmlsZV9kZXNjcmlwdG9yX2Jhc2VkX2dldF9mZChHX0ZJTEVfREVTQ1JJUFRPUl9CQVNF
RChpbnB1dFN0cmVhbSkpLCBsb2NrTW9kZS50b1JhdygpKTsKKyAgICByZXR1cm4gcmVzdWx0ICE9
IC0xOworfQorCitib29sIHVubG9ja0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSkKK3sK
KyAgICBhdXRvKiBpbnB1dFN0cmVhbSA9IGdfaW9fc3RyZWFtX2dldF9pbnB1dF9zdHJlYW0oR19J
T19TVFJFQU0oaGFuZGxlKSk7CisgICAgaW50IHJlc3VsdCA9IGZsb2NrKGdfZmlsZV9kZXNjcmlw
dG9yX2Jhc2VkX2dldF9mZChHX0ZJTEVfREVTQ1JJUFRPUl9CQVNFRChpbnB1dFN0cmVhbSkpLCBM
T0NLX1VOKTsKKyAgICByZXR1cm4gcmVzdWx0ICE9IC0xOworfQorI2VuZGlmIC8vIFVTRShGSUxF
X0xPQ0spCisKK30gLy8gbmFtZXNwYWNlIEZpbGVTeXN0ZW0KK30gLy8gbmFtZXNwYWNlIFdURgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvbWFjL0ZpbGVTeXN0ZW1NYWMubW0gYi9Tb3VyY2Uv
V1RGL3d0Zi9tYWMvRmlsZVN5c3RlbU1hYy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MjY5MmExNmZiYTViMTUy
NzhjNzcyZjc1NmU1NTNhMTEwNzU1ZjJiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93
dGYvbWFjL0ZpbGVTeXN0ZW1NYWMubW0KQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwNy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgorCisjaWYg
UExBVEZPUk0oTUFDKQorCisjaW1wb3J0IDx3dGYvY29jb2EvTlNVUkxFeHRyYXMuaD4KKyNpbXBv
cnQgPHd0Zi9zcGkvbWFjL01ldGFkYXRhU1BJLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK2Jvb2wgRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlE
aXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIGF1dG8gZmlsZU1hbmFnZXIgPSBh
ZG9wdE5TKFtbTlNGaWxlTWFuYWdlciBhbGxvY10gaW5pdF0pOworCisgICAgaWYgKE5TQXJyYXkg
KmRpcmVjdG9yeUNvbnRlbnRzID0gW2ZpbGVNYW5hZ2VyIGNvbnRlbnRzT2ZEaXJlY3RvcnlBdFBh
dGg6cGF0aCBlcnJvcjpudWxscHRyXSkgeworICAgICAgICAvLyBFeHBsaWNpdGx5IGxvb2sgZm9y
IGFuZCBkZWxldGUgLkRTX1N0b3JlIGZpbGVzLgorICAgICAgICBpZiAoZGlyZWN0b3J5Q29udGVu
dHMuY291bnQgPT0gMSAmJiBbZGlyZWN0b3J5Q29udGVudHMuZmlyc3RPYmplY3QgaXNFcXVhbFRv
U3RyaW5nOkAiLkRTX1N0b3JlIl0pCisgICAgICAgICAgICBbZmlsZU1hbmFnZXIgcmVtb3ZlSXRl
bUF0UGF0aDpbcGF0aCBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6ZGlyZWN0b3J5Q29u
dGVudHMuZmlyc3RPYmplY3RdIGVycm9yOm51bGxwdHJdOworICAgIH0KKworICAgIC8vIHJtZGly
KC4uLikgcmV0dXJucyAwIG9uIHN1Y2Nlc3NmdWwgZGVsZXRpb24gb2YgdGhlIHBhdGggYW5kIG5v
bi16ZXJvIGluIGFueSBvdGhlciBjYXNlIChpbmNsdWRpbmcgaW52YWxpZCBwZXJtaXNzaW9ucyBv
ciBub24tZXhpc3RlbnQgZmlsZSkKKyAgICByZXR1cm4gIXJtZGlyKEZpbGVTeXN0ZW06OmZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCkpOworfQorCit2b2lkIEZpbGVTeXN0ZW06
OnNldE1ldGFkYXRhVVJMKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBtZXRhZGF0
YVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiByZWZlcnJlcikKK3sKKyAgICBTdHJpbmcgdXJsU3Ry
aW5nOworICAgIGlmIChOU1VSTCAqdXJsID0gVVJMV2l0aFVzZXJUeXBlZFN0cmluZyhtZXRhZGF0
YVVSTFN0cmluZywgbmlsKSkKKyAgICAgICAgdXJsU3RyaW5nID0gV1RGOjp1c2VyVmlzaWJsZVN0
cmluZyhXVEY6OlVSTEJ5UmVtb3ZpbmdVc2VySW5mbyh1cmwpKTsKKyAgICBlbHNlCisgICAgICAg
IHVybFN0cmluZyA9IG1ldGFkYXRhVVJMU3RyaW5nOworCisgICAgLy8gQ2FsbCBNZXRhZGF0YSBB
UEkgb24gYSBiYWNrZ3JvdW5kIHF1ZXVlIGJlY2F1c2UgaXQgY2FuIHRha2Ugc29tZSB0aW1lLgor
ICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVF
VUVfUFJJT1JJVFlfREVGQVVMVCwgMCksIFtwYXRoID0gcGF0aC5pc29sYXRlZENvcHkoKSwgdXJs
U3RyaW5nID0gdXJsU3RyaW5nLmlzb2xhdGVkQ29weSgpLCByZWZlcnJlciA9IHJlZmVycmVyLmlz
b2xhdGVkQ29weSgpXSB7CisgICAgICAgIGF1dG8gaXRlbSA9IGFkb3B0Q0YoTURJdGVtQ3JlYXRl
KGtDRkFsbG9jYXRvckRlZmF1bHQsIHBhdGguY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOworICAg
ICAgICBpZiAoIWl0ZW0pCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgYXV0byB3aGVy
ZUZyb21BdHRyaWJ1dGUgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRo
T2JqZWN0czp1cmxTdHJpbmcsIG5pbF0pOworICAgICAgICBpZiAoIXJlZmVycmVyLmlzTnVsbCgp
KQorICAgICAgICAgICAgW3doZXJlRnJvbUF0dHJpYnV0ZSBhZGRPYmplY3Q6cmVmZXJyZXJdOwor
CisgICAgICAgIE1ESXRlbVNldEF0dHJpYnV0ZShpdGVtLmdldCgpLCBrTURJdGVtV2hlcmVGcm9t
cywgKF9fYnJpZGdlIENGQXJyYXlSZWYpd2hlcmVGcm9tQXR0cmlidXRlLmdldCgpKTsKKyAgICAg
ICAgTURJdGVtU2V0QXR0cmlidXRlKGl0ZW0uZ2V0KCksIGtNREl0ZW1Eb3dubG9hZGVkRGF0ZSwg
KF9fYnJpZGdlIENGQXJyYXlSZWYpQFsgW05TRGF0ZSBkYXRlXSBdKTsKKyAgICB9KTsKK30KKwor
Ym9vbCBGaWxlU3lzdGVtOjpjYW5FeGNsdWRlRnJvbUJhY2t1cCgpCit7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK2Jvb2wgRmlsZVN5c3RlbTo6ZXhjbHVkZUZyb21CYWNrdXAoY29uc3QgU3RyaW5n
JiBwYXRoKQoreworICAgIC8vIEl0IGlzIGNyaXRpY2FsIHRvIHBhc3MgRkFMU0UgZm9yIGV4Y2x1
ZGVCeVBhdGggYmVjYXVzZSBleGNsdWRpbmcgYnkgcGF0aCByZXF1aXJlcyByb290IHByaXZpbGVn
ZXMuCisgICAgQ1NCYWNrdXBTZXRJdGVtRXhjbHVkZWQoRmlsZVN5c3RlbTo6cGF0aEFzVVJMKHBh
dGgpLmdldCgpLCBUUlVFLCBGQUxTRSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdURgorCisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4
L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzYwZWNiMTU4NjM5MjBmYTQzNjFmYzE0
ZGI4ZWU2ZDNmZmUyZTRmMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4
L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKQEAgLTAsMCArMSw0OTYgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDctMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBu
b3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KKworI2luY2x1ZGUgPGRpcmVudC5oPgorI2luY2x1
ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDxmbm1hdGNoLmg+Cisj
aW5jbHVkZSA8bGliZ2VuLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzeXMvc3Rh
dC5oPgorI2luY2x1ZGUgPHN5cy9zdGF0dmZzLmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Cisj
aW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KKyNpbmNsdWRl
IDx3dGYvRmlsZU1ldGFkYXRhLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK25hbWVzcGFjZSBGaWxlU3lzdGVtIHsKKwor
Ym9vbCBmaWxlRXhpc3RzKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBpZiAocGF0aC5pc051
bGwoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgQ1N0cmluZyBmc1JlcCA9IGZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKKworICAgIGlmICghZnNSZXAuZGF0YSgpIHx8IGZz
UmVwLmRhdGEoKVswXSA9PSAnXDAnKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1
cm4gYWNjZXNzKGZzUmVwLmRhdGEoKSwgRl9PSykgIT0gLTE7Cit9CisKK2Jvb2wgZGVsZXRlRmls
ZShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgQ1N0cmluZyBmc1JlcCA9IGZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihwYXRoKTsKKworICAgIGlmICghZnNSZXAuZGF0YSgpIHx8IGZzUmVwLmRh
dGEoKVswXSA9PSAnXDAnKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyB1bmxpbmso
Li4uKSByZXR1cm5zIDAgb24gc3VjY2Vzc2Z1bCBkZWxldGlvbiBvZiB0aGUgcGF0aCBhbmQgbm9u
LXplcm8gaW4gYW55IG90aGVyIGNhc2UgKGluY2x1ZGluZyBpbnZhbGlkIHBlcm1pc3Npb25zIG9y
IG5vbi1leGlzdGVudCBmaWxlKQorICAgIHJldHVybiAhdW5saW5rKGZzUmVwLmRhdGEoKSk7Cit9
CisKK1BsYXRmb3JtRmlsZUhhbmRsZSBvcGVuRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVP
cGVuTW9kZSBtb2RlKQoreworICAgIENTdHJpbmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24ocGF0aCk7CisKKyAgICBpZiAoZnNSZXAuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBp
bnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOworCisgICAgaW50IHBsYXRmb3JtRmxhZyA9IDA7Cisg
ICAgaWYgKG1vZGUgPT0gRmlsZU9wZW5Nb2RlOjpSZWFkKQorICAgICAgICBwbGF0Zm9ybUZsYWcg
fD0gT19SRE9OTFk7CisgICAgZWxzZSBpZiAobW9kZSA9PSBGaWxlT3Blbk1vZGU6OldyaXRlKQor
ICAgICAgICBwbGF0Zm9ybUZsYWcgfD0gKE9fV1JPTkxZIHwgT19DUkVBVCB8IE9fVFJVTkMpOwor
I2lmIE9TKERBUldJTikKKyAgICBlbHNlIGlmIChtb2RlID09IEZpbGVPcGVuTW9kZTo6RXZlbnRz
T25seSkKKyAgICAgICAgcGxhdGZvcm1GbGFnIHw9IE9fRVZUT05MWTsKKyNlbmRpZgorCisgICAg
cmV0dXJuIG9wZW4oZnNSZXAuZGF0YSgpLCBwbGF0Zm9ybUZsYWcsIDA2NjYpOworfQorCit2b2lk
IGNsb3NlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKK3sKKyAgICBpZiAoaXNIYW5k
bGVWYWxpZChoYW5kbGUpKSB7CisgICAgICAgIGNsb3NlKGhhbmRsZSk7CisgICAgICAgIGhhbmRs
ZSA9IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7CisgICAgfQorfQorCitsb25nIGxvbmcgc2Vl
a0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCwgRmlsZVNl
ZWtPcmlnaW4gb3JpZ2luKQoreworICAgIGludCB3aGVuY2UgPSBTRUVLX1NFVDsKKyAgICBzd2l0
Y2ggKG9yaWdpbikgeworICAgIGNhc2UgRmlsZVNlZWtPcmlnaW46OkJlZ2lubmluZzoKKyAgICAg
ICAgd2hlbmNlID0gU0VFS19TRVQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRmlsZVNlZWtP
cmlnaW46OkN1cnJlbnQ6CisgICAgICAgIHdoZW5jZSA9IFNFRUtfQ1VSOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIEZpbGVTZWVrT3JpZ2luOjpFbmQ6CisgICAgICAgIHdoZW5jZSA9IFNFRUtf
RU5EOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICB9CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGxvbmcgbG9uZz4obHNlZWso
aGFuZGxlLCBvZmZzZXQsIHdoZW5jZSkpOworfQorCitib29sIHRydW5jYXRlRmlsZShQbGF0Zm9y
bUZpbGVIYW5kbGUgaGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0KQoreworICAgIC8vIGZ0cnVuY2F0
ZSByZXR1cm5zIDAgdG8gaW5kaWNhdGUgdGhlIHN1Y2Nlc3MuCisgICAgcmV0dXJuICFmdHJ1bmNh
dGUoaGFuZGxlLCBvZmZzZXQpOworfQorCitpbnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxlSGFu
ZGxlIGhhbmRsZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKK3sKKyAgICBkbyB7Cisg
ICAgICAgIGludCBieXRlc1dyaXR0ZW4gPSB3cml0ZShoYW5kbGUsIGRhdGEsIHN0YXRpY19jYXN0
PHNpemVfdD4obGVuZ3RoKSk7CisgICAgICAgIGlmIChieXRlc1dyaXR0ZW4gPj0gMCkKKyAgICAg
ICAgICAgIHJldHVybiBieXRlc1dyaXR0ZW47CisgICAgfSB3aGlsZSAoZXJybm8gPT0gRUlOVFIp
OworICAgIHJldHVybiAtMTsKK30KKworaW50IHJlYWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5k
bGUgaGFuZGxlLCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQoreworICAgIGRvIHsKKyAgICAgICAg
aW50IGJ5dGVzUmVhZCA9IHJlYWQoaGFuZGxlLCBkYXRhLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGxl
bmd0aCkpOworICAgICAgICBpZiAoYnl0ZXNSZWFkID49IDApCisgICAgICAgICAgICByZXR1cm4g
Ynl0ZXNSZWFkOworICAgIH0gd2hpbGUgKGVycm5vID09IEVJTlRSKTsKKyAgICByZXR1cm4gLTE7
Cit9CisKKyNpZiBVU0UoRklMRV9MT0NLKQorYm9vbCBsb2NrRmlsZShQbGF0Zm9ybUZpbGVIYW5k
bGUgaGFuZGxlLCBPcHRpb25TZXQ8RmlsZUxvY2tNb2RlPiBsb2NrTW9kZSkKK3sKKyAgICBDT01Q
SUxFX0FTU0VSVChMT0NLX1NIID09IFdURjo6ZW51bVRvVW5kZXJseWluZ1R5cGUoRmlsZUxvY2tN
b2RlOjpTaGFyZWQpLCBMb2NrU2hhcmVkRW5jb2RpbmdJc0FzRXhwZWN0ZWQpOworICAgIENPTVBJ
TEVfQVNTRVJUKExPQ0tfRVggPT0gV1RGOjplbnVtVG9VbmRlcmx5aW5nVHlwZShGaWxlTG9ja01v
ZGU6OkV4Y2x1c2l2ZSksIExvY2tFeGNsdXNpdmVFbmNvZGluZ0lzQXNFeHBlY3RlZCk7CisgICAg
Q09NUElMRV9BU1NFUlQoTE9DS19OQiA9PSBXVEY6OmVudW1Ub1VuZGVybHlpbmdUeXBlKEZpbGVM
b2NrTW9kZTo6Tm9uYmxvY2tpbmcpLCBMb2NrTm9uYmxvY2tpbmdFbmNvZGluZ0lzQXNFeHBlY3Rl
ZCk7CisgICAgaW50IHJlc3VsdCA9IGZsb2NrKGhhbmRsZSwgbG9ja01vZGUudG9SYXcoKSk7Cisg
ICAgcmV0dXJuIChyZXN1bHQgIT0gLTEpOworfQorCitib29sIHVubG9ja0ZpbGUoUGxhdGZvcm1G
aWxlSGFuZGxlIGhhbmRsZSkKK3sKKyAgICBpbnQgcmVzdWx0ID0gZmxvY2soaGFuZGxlLCBMT0NL
X1VOKTsKKyAgICByZXR1cm4gKHJlc3VsdCAhPSAtMSk7Cit9CisjZW5kaWYKKworI2lmICFQTEFU
Rk9STShNQUMpCitib29sIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkK
K3sKKyAgICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwor
CisgICAgaWYgKCFmc1JlcC5kYXRhKCkgfHwgZnNSZXAuZGF0YSgpWzBdID09ICdcMCcpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIHJtZGlyKC4uLikgcmV0dXJucyAwIG9uIHN1Y2Nl
c3NmdWwgZGVsZXRpb24gb2YgdGhlIHBhdGggYW5kIG5vbi16ZXJvIGluIGFueSBvdGhlciBjYXNl
IChpbmNsdWRpbmcgaW52YWxpZCBwZXJtaXNzaW9ucyBvciBub24tZXhpc3RlbnQgZmlsZSkKKyAg
ICByZXR1cm4gIXJtZGlyKGZzUmVwLmRhdGEoKSk7Cit9CisjZW5kaWYKKworYm9vbCBnZXRGaWxl
U2l6ZShjb25zdCBTdHJpbmcmIHBhdGgsIGxvbmcgbG9uZyYgcmVzdWx0KQoreworICAgIENTdHJp
bmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisKKyAgICBpZiAoIWZz
UmVwLmRhdGEoKSB8fCBmc1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgc3RydWN0IHN0YXQgZmlsZUluZm87CisKKyAgICBpZiAoc3RhdChmc1JlcC5k
YXRhKCksICZmaWxlSW5mbykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJlc3VsdCA9
IGZpbGVJbmZvLnN0X3NpemU7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgZ2V0RmlsZVNp
emUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgbG9uZyBsb25nJiByZXN1bHQpCit7CisgICAg
c3RydWN0IHN0YXQgZmlsZUluZm87CisgICAgaWYgKGZzdGF0KGhhbmRsZSwgJmZpbGVJbmZvKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmVzdWx0ID0gZmlsZUluZm8uc3Rfc2l6ZTsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworT3B0aW9uYWw8V2FsbFRpbWU+IGdldEZpbGVDcmVhdGlv
blRpbWUoY29uc3QgU3RyaW5nJiBwYXRoKQoreworI2lmIE9TKERBUldJTikgfHwgT1MoT1BFTkJT
RCkgfHwgT1MoTkVUQlNEKSB8fCBPUyhGUkVFQlNEKQorICAgIENTdHJpbmcgZnNSZXAgPSBmaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisKKyAgICBpZiAoIWZzUmVwLmRhdGEoKSB8fCBm
c1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwor
ICAgIHN0cnVjdCBzdGF0IGZpbGVJbmZvOworCisgICAgaWYgKHN0YXQoZnNSZXAuZGF0YSgpLCAm
ZmlsZUluZm8pKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIFdh
bGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhmaWxlSW5mby5zdF9iaXJ0aHRpbWUpOworI2Vsc2UKKyAg
ICBVTlVTRURfUEFSQU0ocGF0aCk7CisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyNlbmRpZgor
fQorCitPcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3Ry
aW5nJiBwYXRoKQoreworICAgIENTdHJpbmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24ocGF0aCk7CisKKyAgICBpZiAoIWZzUmVwLmRhdGEoKSB8fCBmc1JlcC5kYXRhKClbMF0gPT0g
J1wwJykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHN0cnVjdCBzdGF0IGZp
bGVJbmZvOworCisgICAgaWYgKHN0YXQoZnNSZXAuZGF0YSgpLCAmZmlsZUluZm8pKQorICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIFdhbGxUaW1lOjpmcm9tUmF3U2Vj
b25kcyhmaWxlSW5mby5zdF9tdGltZSk7Cit9CisKK3N0YXRpYyBGaWxlTWV0YWRhdGE6OlR5cGUg
dG9GaWxlTWV0YXRhVHlwZShzdHJ1Y3Qgc3RhdCBmaWxlSW5mbykKK3sKKyAgICBpZiAoU19JU0RJ
UihmaWxlSW5mby5zdF9tb2RlKSkKKyAgICAgICAgcmV0dXJuIEZpbGVNZXRhZGF0YTo6VHlwZTo6
RGlyZWN0b3J5OworICAgIGlmIChTX0lTTE5LKGZpbGVJbmZvLnN0X21vZGUpKQorICAgICAgICBy
ZXR1cm4gRmlsZU1ldGFkYXRhOjpUeXBlOjpTeW1ib2xpY0xpbms7CisgICAgcmV0dXJuIEZpbGVN
ZXRhZGF0YTo6VHlwZTo6RmlsZTsKK30KKworc3RhdGljIE9wdGlvbmFsPEZpbGVNZXRhZGF0YT4g
ZmlsZU1ldGFkYXRhVXNpbmdGdW5jdGlvbihjb25zdCBTdHJpbmcmIHBhdGgsIGludCAoKnN0YXRG
dW5jKShjb25zdCBjaGFyKiwgc3RydWN0IHN0YXQqKSkKK3sKKyAgICBDU3RyaW5nIGZzUmVwID0g
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworCisgICAgaWYgKCFmc1JlcC5kYXRhKCkg
fHwgZnNSZXAuZGF0YSgpWzBdID09ICdcMCcpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisKKyAgICBzdHJ1Y3Qgc3RhdCBmaWxlSW5mbzsKKyAgICBpZiAoc3RhdEZ1bmMoZnNSZXAuZGF0
YSgpLCAmZmlsZUluZm8pKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgU3Ry
aW5nIGZpbGVuYW1lID0gcGF0aEdldEZpbGVOYW1lKHBhdGgpOworICAgIGJvb2wgaXNIaWRkZW4g
PSAhZmlsZW5hbWUuaXNFbXB0eSgpICYmIGZpbGVuYW1lWzBdID09ICcuJzsKKyAgICByZXR1cm4g
RmlsZU1ldGFkYXRhIHsKKyAgICAgICAgV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKGZpbGVJbmZv
LnN0X210aW1lKSwKKyAgICAgICAgZmlsZUluZm8uc3Rfc2l6ZSwKKyAgICAgICAgaXNIaWRkZW4s
CisgICAgICAgIHRvRmlsZU1ldGF0YVR5cGUoZmlsZUluZm8pCisgICAgfTsKK30KKworT3B0aW9u
YWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAg
IHJldHVybiBmaWxlTWV0YWRhdGFVc2luZ0Z1bmN0aW9uKHBhdGgsICZsc3RhdCk7Cit9CisKK09w
dGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3MoY29uc3Qg
U3RyaW5nJiBwYXRoKQoreworICAgIHJldHVybiBmaWxlTWV0YWRhdGFVc2luZ0Z1bmN0aW9uKHBh
dGgsICZzdGF0KTsKK30KKworYm9vbCBjcmVhdGVTeW1ib2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0
YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGljTGlua1BhdGgpCit7CisgICAgQ1N0cmlu
ZyB0YXJnZXRQYXRoRlNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24odGFyZ2V0UGF0aCk7
CisgICAgaWYgKCF0YXJnZXRQYXRoRlNSZXAuZGF0YSgpIHx8IHRhcmdldFBhdGhGU1JlcC5kYXRh
KClbMF0gPT0gJ1wwJykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgQ1N0cmluZyBzeW1i
b2xpY0xpbmtQYXRoRlNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oc3ltYm9saWNMaW5r
UGF0aCk7CisgICAgaWYgKCFzeW1ib2xpY0xpbmtQYXRoRlNSZXAuZGF0YSgpIHx8IHN5bWJvbGlj
TGlua1BhdGhGU1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgcmV0dXJuICFzeW1saW5rKHRhcmdldFBhdGhGU1JlcC5kYXRhKCksIHN5bWJvbGljTGlu
a1BhdGhGU1JlcC5kYXRhKCkpOworfQorCitTdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb21wb25lbnQpCit7CisgICAgaWYg
KHBhdGguZW5kc1dpdGgoJy8nKSkKKyAgICAgICAgcmV0dXJuIHBhdGggKyBjb21wb25lbnQ7Cisg
ICAgcmV0dXJuIHBhdGggKyAiLyIgKyBjb21wb25lbnQ7Cit9CisKK1N0cmluZyBwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnRzKFN0cmluZ1ZpZXcgcGF0aCwgY29uc3QgVmVjdG9yPFN0cmluZ1ZpZXc+
JiBjb21wb25lbnRzKQoreworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVy
LmFwcGVuZChwYXRoKTsKKyAgICBmb3IgKGF1dG8mIGNvbXBvbmVudCA6IGNvbXBvbmVudHMpIHsK
KyAgICAgICAgYnVpbGRlci5hcHBlbmQoJy8nKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoY29t
cG9uZW50KTsKKyAgICB9CisgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKK30KKworYm9v
bCBtYWtlQWxsRGlyZWN0b3JpZXMoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIENTdHJpbmcg
ZnVsbFBhdGggPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisgICAgaWYgKCFhY2Nl
c3MoZnVsbFBhdGguZGF0YSgpLCBGX09LKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBj
aGFyKiBwID0gZnVsbFBhdGgubXV0YWJsZURhdGEoKSArIDE7CisgICAgaW50IGxlbmd0aCA9IGZ1
bGxQYXRoLmxlbmd0aCgpOworCisgICAgaWYgKHBbbGVuZ3RoIC0gMV0gPT0gJy8nKQorICAgICAg
ICBwW2xlbmd0aCAtIDFdID0gJ1wwJzsKKyAgICBmb3IgKDsgKnA7ICsrcCkgeworICAgICAgICBp
ZiAoKnAgPT0gJy8nKSB7CisgICAgICAgICAgICAqcCA9ICdcMCc7CisgICAgICAgICAgICBpZiAo
YWNjZXNzKGZ1bGxQYXRoLmRhdGEoKSwgRl9PSykpIHsKKyAgICAgICAgICAgICAgICBpZiAobWtk
aXIoZnVsbFBhdGguZGF0YSgpLCBTX0lSV1hVKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgKnAgPSAnLyc7CisgICAgICAgIH0K
KyAgICB9CisgICAgaWYgKGFjY2VzcyhmdWxsUGF0aC5kYXRhKCksIEZfT0spKSB7CisgICAgICAg
IGlmIChta2RpcihmdWxsUGF0aC5kYXRhKCksIFNfSVJXWFUpKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitTdHJpbmcgcGF0aEdldEZp
bGVOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICByZXR1cm4gcGF0aC5zdWJzdHJpbmco
cGF0aC5yZXZlcnNlRmluZCgnLycpICsgMSk7Cit9CisKK1N0cmluZyBkaXJlY3RvcnlOYW1lKGNv
bnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKHBhdGgpOworCisgICAgaWYgKCFmc1JlcC5kYXRhKCkgfHwgZnNSZXAuZGF0YSgp
WzBdID09ICdcMCcpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIHJldHVybiBTdHJp
bmc6OmZyb21VVEY4KGRpcm5hbWUoZnNSZXAubXV0YWJsZURhdGEoKSkpOworfQorCitWZWN0b3I8
U3RyaW5nPiBsaXN0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBm
aWx0ZXIpCit7CisgICAgVmVjdG9yPFN0cmluZz4gZW50cmllczsKKyAgICBDU3RyaW5nIGNwYXRo
ID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIENTdHJpbmcgY2ZpbHRlciA9
IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWx0ZXIpOworICAgIERJUiogZGlyID0gb3BlbmRp
cihjcGF0aC5kYXRhKCkpOworICAgIGlmIChkaXIpIHsKKyAgICAgICAgc3RydWN0IGRpcmVudCog
ZHA7CisgICAgICAgIHdoaWxlICgoZHAgPSByZWFkZGlyKGRpcikpKSB7CisgICAgICAgICAgICBj
b25zdCBjaGFyKiBuYW1lID0gZHAtPmRfbmFtZTsKKyAgICAgICAgICAgIGlmICghc3RyY21wKG5h
bWUsICIuIikgfHwgIXN0cmNtcChuYW1lLCAiLi4iKSkKKyAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgICAgIGlmIChmbm1hdGNoKGNmaWx0ZXIuZGF0YSgpLCBuYW1lLCAwKSkKKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGNoYXIgZmlsZVBhdGhbUEFUSF9N
QVhdOworICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKGZpbGVQYXRoKSAt
IDEpIDwgc25wcmludGYoZmlsZVBhdGgsIHNpemVvZihmaWxlUGF0aCksICIlcy8lcyIsIGNwYXRo
LmRhdGEoKSwgbmFtZSkpCisgICAgICAgICAgICAgICAgY29udGludWU7IC8vIGJ1ZmZlciBvdmVy
ZmxvdworCisgICAgICAgICAgICBhdXRvIHN0cmluZyA9IHN0cmluZ0Zyb21GaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oZmlsZVBhdGgpOworCisgICAgICAgICAgICAvLyBTb21lIGZpbGUgc3lzdGVt
IHJlcHJlc2VudGF0aW9ucyBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgYXMgYSBVVEYtMTYgc3RyaW5n
LAorICAgICAgICAgICAgLy8gc28gdGhpcyBzdHJpbmcgbWlnaHQgYmUgbnVsbC4KKyAgICAgICAg
ICAgIGlmICghc3RyaW5nLmlzTnVsbCgpKQorICAgICAgICAgICAgICAgIGVudHJpZXMuYXBwZW5k
KFdURk1vdmUoc3RyaW5nKSk7CisgICAgICAgIH0KKyAgICAgICAgY2xvc2VkaXIoZGlyKTsKKyAg
ICB9CisgICAgcmV0dXJuIGVudHJpZXM7Cit9CisKKyNpZiAhUExBVEZPUk0oQ09DT0EpCitTdHJp
bmcgc3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBjaGFyKiBwYXRoKQor
eworICAgIGlmICghcGF0aCkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgcmV0dXJu
IFN0cmluZzo6ZnJvbVVURjgocGF0aCk7Cit9CisKK0NTdHJpbmcgZmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICByZXR1cm4gcGF0aC51dGY4KCk7Cit9
CisKK2Jvb2wgbW92ZUZpbGUoY29uc3QgU3RyaW5nJiBvbGRQYXRoLCBjb25zdCBTdHJpbmcmIG5l
d1BhdGgpCit7CisgICAgYXV0byBvbGRGaWxlbmFtZSA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihvbGRQYXRoKTsKKyAgICBpZiAob2xkRmlsZW5hbWUuaXNOdWxsKCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGF1dG8gbmV3RmlsZW5hbWUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24obmV3UGF0aCk7CisgICAgaWYgKG5ld0ZpbGVuYW1lLmlzTnVsbCgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICByZXR1cm4gcmVuYW1lKG9sZEZpbGVuYW1lLmRhdGEoKSwgbmV3Rmls
ZW5hbWUuZGF0YSgpKSAhPSAtMTsKK30KKworYm9vbCBnZXRWb2x1bWVGcmVlU3BhY2UoY29uc3Qg
U3RyaW5nJiBwYXRoLCB1aW50NjRfdCYgZnJlZVNwYWNlKQoreworICAgIHN0cnVjdCBzdGF0dmZz
IGZpbGVTeXN0ZW1TdGF0OworICAgIGlmIChzdGF0dmZzKGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihwYXRoKS5kYXRhKCksICZmaWxlU3lzdGVtU3RhdCkpIHsKKyAgICAgICAgZnJlZVNwYWNlID0g
ZmlsZVN5c3RlbVN0YXQuZl9iYXZhaWwgKiBmaWxlU3lzdGVtU3RhdC5mX2Zyc2l6ZTsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKyNlbmRpZgorCisj
aWYgIU9TKERBUldJTikKK1N0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHBy
ZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpCit7CisgICAgY2hhciBidWZmZXJbUEFU
SF9NQVhdOworICAgIGNvbnN0IGNoYXIqIHRtcERpciA9IGdldGVudigiVE1QRElSIik7CisKKyAg
ICBpZiAoIXRtcERpcikKKyAgICAgICAgdG1wRGlyID0gIi90bXAiOworCisgICAgaWYgKHNucHJp
bnRmKGJ1ZmZlciwgUEFUSF9NQVgsICIlcy8lc1hYWFhYWCIsIHRtcERpciwgcHJlZml4LnV0Zjgo
KS5kYXRhKCkpID49IFBBVEhfTUFYKQorICAgICAgICBnb3RvIGVuZDsKKworICAgIGhhbmRsZSA9
IG1rc3RlbXAoYnVmZmVyKTsKKyAgICBpZiAoaGFuZGxlIDwgMCkKKyAgICAgICAgZ290byBlbmQ7
CisKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChidWZmZXIpOworCitlbmQ6CisgICAgaGFu
ZGxlID0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9
CisjZW5kaWYKKworYm9vbCBoYXJkTGlua09yQ29weUZpbGUoY29uc3QgU3RyaW5nJiBzb3VyY2Us
IGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb24pCit7CisgICAgaWYgKHNvdXJjZS5pc0VtcHR5KCkg
fHwgZGVzdGluYXRpb24uaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBD
U3RyaW5nIGZzU291cmNlID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHNvdXJjZSk7CisgICAg
aWYgKCFmc1NvdXJjZS5kYXRhKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIENTdHJp
bmcgZnNEZXN0aW5hdGlvbiA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihkZXN0aW5hdGlvbik7
CisgICAgaWYgKCFmc0Rlc3RpbmF0aW9uLmRhdGEoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgaWYgKCFsaW5rKGZzU291cmNlLmRhdGEoKSwgZnNEZXN0aW5hdGlvbi5kYXRhKCkpKQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIEhhcmQgbGluayBmYWlsZWQuIFBlcmZvcm0g
YSBjb3B5IGluc3RlYWQuCisgICAgYXV0byBoYW5kbGUgPSBvcGVuKGZzRGVzdGluYXRpb24uZGF0
YSgpLCBPX1dST05MWSB8IE9fQ1JFQVQgfCBPX0VYQ0wsIDA2NjYpOworICAgIGlmIChoYW5kbGUg
PT0gLTEpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGJvb2wgYXBwZW5kUmVzdWx0ID0g
YXBwZW5kRmlsZUNvbnRlbnRzVG9GaWxlSGFuZGxlKHNvdXJjZSwgaGFuZGxlKTsKKyAgICBjbG9z
ZShoYW5kbGUpOworCisgICAgLy8gSWYgdGhlIGNvcHkgZmFpbGVkLCBkZWxldGUgdGhlIHVudXNh
YmxlIGZpbGUuCisgICAgaWYgKCFhcHBlbmRSZXN1bHQpCisgICAgICAgIHVubGluayhmc0Rlc3Rp
bmF0aW9uLmRhdGEoKSk7CisKKyAgICByZXR1cm4gYXBwZW5kUmVzdWx0OworfQorCitPcHRpb25h
bDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQoreworICAg
IHN0cnVjdCBzdGF0IGZpbGVTdGF0OworICAgIGlmIChzdGF0KGZzRmlsZS5kYXRhKCksICZmaWxl
U3RhdCkgPT0gLTEpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4g
ZmlsZVN0YXQuc3RfZGV2OworfQorCitTdHJpbmcgcmVhbFBhdGgoY29uc3QgU3RyaW5nJiBmaWxl
UGF0aCkKK3sKKyAgICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZp
bGVQYXRoKTsKKyAgICBjaGFyIHJlc29sdmVkTmFtZVtQQVRIX01BWF07CisgICAgY29uc3QgY2hh
ciogcmVzdWx0ID0gcmVhbHBhdGgoZnNSZXAuZGF0YSgpLCByZXNvbHZlZE5hbWUpOworICAgIHJl
dHVybiByZXN1bHQgPyBTdHJpbmc6OmZyb21VVEY4KHJlc3VsdCkgOiBmaWxlUGF0aDsKK30KKwor
fSAvLyBuYW1lc3BhY2UgRmlsZVN5c3RlbQorfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9zcGkvbWFjL01ldGFkYXRhU1BJLmggYi9Tb3VyY2UvV1RGL3d0Zi9z
cGkvbWFjL01ldGFkYXRhU1BJLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODE1NTQ3YzZiODUxMGUzMDYxOGUyMjgy
YWQ1Yjc4NDAxNmNhMzcyMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL3NwaS9t
YWMvTWV0YWRhdGFTUEkuaApAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorCisjaW5jbHVkZSA8Q29yZVNlcnZp
Y2VzL0NvcmVTZXJ2aWNlc1ByaXYuaD4KKworI2VuZGlmCisKK1dURl9FWFRFUk5fQ19CRUdJTgor
CitCb29sZWFuIE1ESXRlbVNldEF0dHJpYnV0ZShNREl0ZW1SZWYsIENGU3RyaW5nUmVmIG5hbWUs
IENGVHlwZVJlZiBhdHRyKTsKKworV1RGX0VYVEVSTl9DX0VORApkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwIGIvU291cmNlL1dURi93dGYvd2luL0ZpbGVT
eXN0ZW1XaW4uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMxNjQ3MmNkZDNmNWJhMDc3Yjk3MjQ1NjAwOGE0OTQw
OTQ2ZWVkZTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3Rl
bVdpbi5jcHAKQEAgLTAsMCArMSw1ODYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgg
Q29sbGFib3JhLCBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5h
bWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8
d3RmL0ZpbGVTeXN0ZW0uaD4KKworI2luY2x1ZGUgPGlvLmg+CisjaW5jbHVkZSA8c2hsb2JqLmg+
CisjaW5jbHVkZSA8c2hsd2FwaS5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5jbHVkZSA8
d2luZG93cy5oPgorI2luY2x1ZGUgPHd0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5o
PgorI2luY2x1ZGUgPHd0Zi9GaWxlTWV0YWRhdGEuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdCdWlsZGVyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+
CisjaW5jbHVkZSA8d3RmL3dpbi9QYXRoV2Fsa2VyLmg+CisKK25hbWVzcGFjZSBXVEYgeworCitu
YW1lc3BhY2UgRmlsZVN5c3RlbSB7CisKK3N0YXRpYyBjb25zdCBVTE9OR0xPTkcga1NlY29uZHNG
cm9tRmlsZVRpbWVUb1RpbWV0ID0gMTE2NDQ0NzM2MDA7CisKK3N0YXRpYyBib29sIGdldEZpbmRE
YXRhKFN0cmluZyBwYXRoLCBXSU4zMl9GSU5EX0RBVEFXJiBmaW5kRGF0YSkKK3sKKyAgICBIQU5E
TEUgaGFuZGxlID0gRmluZEZpcnN0RmlsZVcoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKHBh
dGgpLmRhdGEoKSwgJmZpbmREYXRhKTsKKyAgICBpZiAoaGFuZGxlID09IElOVkFMSURfSEFORExF
X1ZBTFVFKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgRmluZENsb3NlKGhhbmRsZSk7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBib29sIGdldEZpbGVTaXplRnJvbUZpbmREYXRh
KGNvbnN0IFdJTjMyX0ZJTkRfREFUQVcmIGZpbmREYXRhLCBsb25nIGxvbmcmIHNpemUpCit7Cisg
ICAgVUxBUkdFX0lOVEVHRVIgZmlsZVNpemU7CisgICAgZmlsZVNpemUuSGlnaFBhcnQgPSBmaW5k
RGF0YS5uRmlsZVNpemVIaWdoOworICAgIGZpbGVTaXplLkxvd1BhcnQgPSBmaW5kRGF0YS5uRmls
ZVNpemVMb3c7CisKKyAgICBpZiAoZmlsZVNpemUuUXVhZFBhcnQgPiBzdGF0aWNfY2FzdDxVTE9O
R0xPTkc+KHN0ZDo6bnVtZXJpY19saW1pdHM8bG9uZyBsb25nPjo6bWF4KCkpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBzaXplID0gZmlsZVNpemUuUXVhZFBhcnQ7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK3N0YXRpYyBib29sIGdldEZpbGVTaXplRnJvbUJ5SGFuZGxlRmlsZUluZm9y
bWF0aW9uU3RydWN0dXJlKGNvbnN0IEJZX0hBTkRMRV9GSUxFX0lORk9STUFUSU9OJiBmaWxlSW5m
b3JtYXRpb24sIGxvbmcgbG9uZyYgc2l6ZSkKK3sKKyAgICBVTEFSR0VfSU5URUdFUiBmaWxlU2l6
ZTsKKyAgICBmaWxlU2l6ZS5IaWdoUGFydCA9IGZpbGVJbmZvcm1hdGlvbi5uRmlsZVNpemVIaWdo
OworICAgIGZpbGVTaXplLkxvd1BhcnQgPSBmaWxlSW5mb3JtYXRpb24ubkZpbGVTaXplTG93Owor
CisgICAgaWYgKGZpbGVTaXplLlF1YWRQYXJ0ID4gc3RhdGljX2Nhc3Q8VUxPTkdMT05HPihzdGQ6
Om51bWVyaWNfbGltaXRzPGxvbmcgbG9uZz46Om1heCgpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgc2l6ZSA9IGZpbGVTaXplLlF1YWRQYXJ0OworICAgIHJldHVybiB0cnVlOworfQor
CitzdGF0aWMgdm9pZCBnZXRGaWxlQ3JlYXRpb25UaW1lRnJvbUZpbmREYXRhKGNvbnN0IFdJTjMy
X0ZJTkRfREFUQVcmIGZpbmREYXRhLCB0aW1lX3QmIHRpbWUpCit7CisgICAgVUxBUkdFX0lOVEVH
RVIgZmlsZVRpbWU7CisgICAgZmlsZVRpbWUuSGlnaFBhcnQgPSBmaW5kRGF0YS5mdENyZWF0aW9u
VGltZS5kd0hpZ2hEYXRlVGltZTsKKyAgICBmaWxlVGltZS5Mb3dQYXJ0ID0gZmluZERhdGEuZnRD
cmVhdGlvblRpbWUuZHdMb3dEYXRlVGltZTsKKworICAgIC8vIEluZm9ybWF0aW9uIGFib3V0IGNv
bnZlcnRpbmcgdGltZV90IHRvIEZpbGVUaW1lIGlzIGF2YWlsYWJsZSBhdCBodHRwOi8vbXNkbi5t
aWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvbXM3MjQyMjglMjh2PXZzLjg1JTI5LmFzcHgKKyAg
ICB0aW1lID0gZmlsZVRpbWUuUXVhZFBhcnQgLyAxMDAwMDAwMCAtIGtTZWNvbmRzRnJvbUZpbGVU
aW1lVG9UaW1ldDsKK30KKworCitzdGF0aWMgdm9pZCBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZUZy
b21GaW5kRGF0YShjb25zdCBXSU4zMl9GSU5EX0RBVEFXJiBmaW5kRGF0YSwgdGltZV90JiB0aW1l
KQoreworICAgIFVMQVJHRV9JTlRFR0VSIGZpbGVUaW1lOworICAgIGZpbGVUaW1lLkhpZ2hQYXJ0
ID0gZmluZERhdGEuZnRMYXN0V3JpdGVUaW1lLmR3SGlnaERhdGVUaW1lOworICAgIGZpbGVUaW1l
Lkxvd1BhcnQgPSBmaW5kRGF0YS5mdExhc3RXcml0ZVRpbWUuZHdMb3dEYXRlVGltZTsKKworICAg
IC8vIEluZm9ybWF0aW9uIGFib3V0IGNvbnZlcnRpbmcgdGltZV90IHRvIEZpbGVUaW1lIGlzIGF2
YWlsYWJsZSBhdCBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvbXM3MjQy
MjglMjh2PXZzLjg1JTI5LmFzcHgKKyAgICB0aW1lID0gZmlsZVRpbWUuUXVhZFBhcnQgLyAxMDAw
MDAwMCAtIGtTZWNvbmRzRnJvbUZpbGVUaW1lVG9UaW1ldDsKK30KKworYm9vbCBnZXRGaWxlU2l6
ZShjb25zdCBTdHJpbmcmIHBhdGgsIGxvbmcgbG9uZyYgc2l6ZSkKK3sKKyAgICBXSU4zMl9GSU5E
X0RBVEFXIGZpbmREYXRhOworICAgIGlmICghZ2V0RmluZERhdGEocGF0aCwgZmluZERhdGEpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gZ2V0RmlsZVNpemVGcm9tRmluZERh
dGEoZmluZERhdGEsIHNpemUpOworfQorCitib29sIGdldEZpbGVTaXplKFBsYXRmb3JtRmlsZUhh
bmRsZSBmaWxlSGFuZGxlLCBsb25nIGxvbmcmIHNpemUpCit7CisgICAgQllfSEFORExFX0ZJTEVf
SU5GT1JNQVRJT04gZmlsZUluZm9ybWF0aW9uOworICAgIGlmICghOjpHZXRGaWxlSW5mb3JtYXRp
b25CeUhhbmRsZShmaWxlSGFuZGxlLCAmZmlsZUluZm9ybWF0aW9uKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgcmV0dXJuIGdldEZpbGVTaXplRnJvbUJ5SGFuZGxlRmlsZUluZm9ybWF0
aW9uU3RydWN0dXJlKGZpbGVJbmZvcm1hdGlvbiwgc2l6ZSk7Cit9CisKK09wdGlvbmFsPFdhbGxU
aW1lPiBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAg
V0lOMzJfRklORF9EQVRBVyBmaW5kRGF0YTsKKyAgICBpZiAoIWdldEZpbmREYXRhKHBhdGgsIGZp
bmREYXRhKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHRpbWVfdCB0aW1l
ID0gMDsKKyAgICBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZUZyb21GaW5kRGF0YShmaW5kRGF0YSwg
dGltZSk7CisgICAgcmV0dXJuIFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyh0aW1lKTsKK30KKwor
T3B0aW9uYWw8V2FsbFRpbWU+IGdldEZpbGVDcmVhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRo
KQoreworICAgIFdJTjMyX0ZJTkRfREFUQVcgZmluZERhdGE7CisgICAgaWYgKCFnZXRGaW5kRGF0
YShwYXRoLCBmaW5kRGF0YSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICB0
aW1lX3QgdGltZSA9IDA7CisgICAgZ2V0RmlsZUNyZWF0aW9uVGltZUZyb21GaW5kRGF0YShmaW5k
RGF0YSwgdGltZSk7CisgICAgcmV0dXJuIFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyh0aW1lKTsK
K30KKworc3RhdGljIFN0cmluZyBnZXRGaW5hbFBhdGhOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCkK
K3sKKyAgICBhdXRvIGhhbmRsZSA9IG9wZW5GaWxlKHBhdGgsIEZpbGVPcGVuTW9kZTo6UmVhZCk7
CisgICAgaWYgKCFpc0hhbmRsZVZhbGlkKGhhbmRsZSkpCisgICAgICAgIHJldHVybiBTdHJpbmco
KTsKKworICAgIFZlY3RvcjxVQ2hhcj4gYnVmZmVyKE1BWF9QQVRIKTsKKyAgICBpZiAoOjpHZXRG
aW5hbFBhdGhOYW1lQnlIYW5kbGVXKGhhbmRsZSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUo
KSwgVk9MVU1FX05BTUVfTlQpID49IE1BWF9QQVRIKSB7CisgICAgICAgIGNsb3NlRmlsZShoYW5k
bGUpOworICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgfQorICAgIGNsb3NlRmlsZShoYW5k
bGUpOworCisgICAgYnVmZmVyLnNocmluayh3Y3NsZW4oYnVmZmVyLmRhdGEoKSkpOworICAgIHJl
dHVybiBTdHJpbmc6OmFkb3B0KFdURk1vdmUoYnVmZmVyKSk7Cit9CisKK3N0YXRpYyBpbmxpbmUg
Ym9vbCBpc1N5bWJvbGljTGluayhXSU4zMl9GSU5EX0RBVEFXIGZpbmREYXRhKQoreworICAgIHJl
dHVybiBmaW5kRGF0YS5kd0ZpbGVBdHRyaWJ1dGVzICYgRklMRV9BVFRSSUJVVEVfUkVQQVJTRV9Q
T0lOVCAmJiBmaW5kRGF0YS5kd1Jlc2VydmVkMCA9PSBJT19SRVBBUlNFX1RBR19TWU1MSU5LOwor
fQorCitzdGF0aWMgRmlsZU1ldGFkYXRhOjpUeXBlIHRvRmlsZU1ldGFkYXRhVHlwZShXSU4zMl9G
SU5EX0RBVEFXIGZpbmREYXRhKQoreworICAgIGlmIChmaW5kRGF0YS5kd0ZpbGVBdHRyaWJ1dGVz
ICYgRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZKQorICAgICAgICByZXR1cm4gRmlsZU1ldGFkYXRh
OjpUeXBlOjpEaXJlY3Rvcnk7CisgICAgaWYgKGlzU3ltYm9saWNMaW5rKGZpbmREYXRhKSkKKyAg
ICAgICAgcmV0dXJuIEZpbGVNZXRhZGF0YTo6VHlwZTo6U3ltYm9saWNMaW5rOworICAgIHJldHVy
biBGaWxlTWV0YWRhdGE6OlR5cGU6OkZpbGU7Cit9CisKK3N0YXRpYyBPcHRpb25hbDxGaWxlTWV0
YWRhdGE+IGZpbmREYXRhVG9GaWxlTWV0YWRhdGEoV0lOMzJfRklORF9EQVRBVyBmaW5kRGF0YSkK
K3sKKyAgICBsb25nIGxvbmcgbGVuZ3RoOworICAgIGlmICghZ2V0RmlsZVNpemVGcm9tRmluZERh
dGEoZmluZERhdGEsIGxlbmd0aCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAg
ICB0aW1lX3QgbW9kaWZpY2F0aW9uVGltZTsKKyAgICBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZUZy
b21GaW5kRGF0YShmaW5kRGF0YSwgbW9kaWZpY2F0aW9uVGltZSk7CisKKyAgICByZXR1cm4gRmls
ZU1ldGFkYXRhIHsKKyAgICAgICAgV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKG1vZGlmaWNhdGlv
blRpbWUpLAorICAgICAgICBsZW5ndGgsCisgICAgICAgIHN0YXRpY19jYXN0PGJvb2w+KGZpbmRE
YXRhLmR3RmlsZUF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9ISURERU4pLAorICAgICAgICB0
b0ZpbGVNZXRhZGF0YVR5cGUoZmluZERhdGEpCisgICAgfTsKK30KKworT3B0aW9uYWw8RmlsZU1l
dGFkYXRhPiBmaWxlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIFdJTjMyX0ZJ
TkRfREFUQVcgZmluZERhdGE7CisgICAgaWYgKCFnZXRGaW5kRGF0YShwYXRoLCBmaW5kRGF0YSkp
CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gZmluZERhdGFUb0Zp
bGVNZXRhZGF0YShmaW5kRGF0YSk7Cit9CisKK09wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1l
dGFkYXRhRm9sbG93aW5nU3ltbGlua3MoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIFdJTjMy
X0ZJTkRfREFUQVcgZmluZERhdGE7CisgICAgaWYgKCFnZXRGaW5kRGF0YShwYXRoLCBmaW5kRGF0
YSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBpZiAoaXNTeW1ib2xpY0xp
bmsoZmluZERhdGEpKSB7CisgICAgICAgIFN0cmluZyB0YXJnZXRQYXRoID0gZ2V0RmluYWxQYXRo
TmFtZShwYXRoKTsKKyAgICAgICAgaWYgKHRhcmdldFBhdGguaXNOdWxsKCkpCisgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBpZiAoIWdldEZpbmREYXRhKHRhcmdldFBh
dGgsIGZpbmREYXRhKSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgfQor
CisgICAgcmV0dXJuIGZpbmREYXRhVG9GaWxlTWV0YWRhdGEoZmluZERhdGEpOworfQorCitib29s
IGNyZWF0ZVN5bWJvbGljTGluayhjb25zdCBTdHJpbmcmIHRhcmdldFBhdGgsIGNvbnN0IFN0cmlu
ZyYgc3ltYm9saWNMaW5rUGF0aCkKK3sKKyAgICByZXR1cm4gITo6Q3JlYXRlU3ltYm9saWNMaW5r
VyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoc3ltYm9saWNMaW5rUGF0aCkuZGF0YSgpLCBz
dHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIodGFyZ2V0UGF0aCkuZGF0YSgpLCAwKTsKK30KKwor
Ym9vbCBmaWxlRXhpc3RzKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBXSU4zMl9GSU5EX0RB
VEFXIGZpbmREYXRhOworICAgIHJldHVybiBnZXRGaW5kRGF0YShwYXRoLCBmaW5kRGF0YSk7Cit9
CisKK2Jvb2wgZGVsZXRlRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgU3RyaW5nIGZp
bGVuYW1lID0gcGF0aDsKKyAgICByZXR1cm4gISFEZWxldGVGaWxlVyhzdHJpbmdUb051bGxUZXJt
aW5hdGVkV0NoYXIoZmlsZW5hbWUpLmRhdGEoKSk7Cit9CisKK2Jvb2wgZGVsZXRlRW1wdHlEaXJl
Y3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIFN0cmluZyBmaWxlbmFtZSA9IHBhdGg7
CisgICAgcmV0dXJuICEhUmVtb3ZlRGlyZWN0b3J5VyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0No
YXIoZmlsZW5hbWUpLmRhdGEoKSk7Cit9CisKK2Jvb2wgbW92ZUZpbGUoY29uc3QgU3RyaW5nJiBv
bGRQYXRoLCBjb25zdCBTdHJpbmcmIG5ld1BhdGgpCit7CisgICAgU3RyaW5nIG9sZEZpbGVuYW1l
ID0gb2xkUGF0aDsKKyAgICBTdHJpbmcgbmV3RmlsZW5hbWUgPSBuZXdQYXRoOworICAgIHJldHVy
biAhITo6TW92ZUZpbGVFeChzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIob2xkRmlsZW5hbWUp
LmRhdGEoKSwgc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKG5ld0ZpbGVuYW1lKS5kYXRhKCks
IE1PVkVGSUxFX0NPUFlfQUxMT1dFRCB8IE1PVkVGSUxFX1JFUExBQ0VfRVhJU1RJTkcpOworfQor
CitTdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNvbnN0IFN0cmluZyYgcGF0aCwgY29u
c3QgU3RyaW5nJiBjb21wb25lbnQpCit7CisgICAgVmVjdG9yPFVDaGFyPiBidWZmZXIoTUFYX1BB
VEgpOworCisgICAgaWYgKHBhdGgubGVuZ3RoKCkgKyAxID4gYnVmZmVyLnNpemUoKSkKKyAgICAg
ICAgcmV0dXJuIFN0cmluZygpOworCisgICAgU3RyaW5nVmlldyhwYXRoKS5nZXRDaGFyYWN0ZXJz
V2l0aFVwY29udmVydChidWZmZXIuZGF0YSgpKTsKKyAgICBidWZmZXJbcGF0aC5sZW5ndGgoKV0g
PSAnXDAnOworCisgICAgaWYgKCFQYXRoQXBwZW5kVyhidWZmZXIuZGF0YSgpLCBzdHJpbmdUb051
bGxUZXJtaW5hdGVkV0NoYXIoY29tcG9uZW50KS5kYXRhKCkpKQorICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7CisKKyAgICBidWZmZXIuc2hyaW5rKHdjc2xlbihidWZmZXIuZGF0YSgpKSk7CisKKyAg
ICByZXR1cm4gU3RyaW5nOjphZG9wdChXVEZNb3ZlKGJ1ZmZlcikpOworfQorCitTdHJpbmcgcGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhTdHJpbmdWaWV3IHBhdGgsIGNvbnN0IFZlY3RvcjxTdHJp
bmdWaWV3PiYgY29tcG9uZW50cykKK3sKKyAgICBTdHJpbmcgcmVzdWx0ID0gcGF0aC50b1N0cmlu
ZygpOworICAgIGZvciAoYXV0byYgY29tcG9uZW50IDogY29tcG9uZW50cykKKyAgICAgICAgcmVz
dWx0ID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlc3VsdCwgY29tcG9uZW50LnRvU3RyaW5n
KCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKyNpZiAhVVNFKENGKQorCitDU3RyaW5nIGZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgYXV0byB1
cGNvbnZlcnRlZENoYXJhY3RlcnMgPSBwYXRoLnVwY29udmVydGVkQ2hhcmFjdGVycygpOworCisg
ICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMgPSB1cGNvbnZlcnRlZENoYXJhY3RlcnM7CisgICAg
aW50IHNpemUgPSBXaWRlQ2hhclRvTXVsdGlCeXRlKENQX0FDUCwgMCwgY2hhcmFjdGVycywgcGF0
aC5sZW5ndGgoKSwgMCwgMCwgMCwgMCkgLSAxOworCisgICAgY2hhciogYnVmZmVyOworICAgIENT
dHJpbmcgc3RyaW5nID0gQ1N0cmluZzo6bmV3VW5pbml0aWFsaXplZChzaXplLCBidWZmZXIpOwor
CisgICAgV2lkZUNoYXJUb011bHRpQnl0ZShDUF9BQ1AsIDAsIGNoYXJhY3RlcnMsIHBhdGgubGVu
Z3RoKCksIGJ1ZmZlciwgc2l6ZSwgMCwgMCk7CisKKyAgICByZXR1cm4gc3RyaW5nOworfQorCisj
ZW5kaWYgLy8gIVVTRShDRikKKworYm9vbCBtYWtlQWxsRGlyZWN0b3JpZXMoY29uc3QgU3RyaW5n
JiBwYXRoKQoreworICAgIFN0cmluZyBmdWxsUGF0aCA9IHBhdGg7CisgICAgaWYgKFNIQ3JlYXRl
RGlyZWN0b3J5RXgoMCwgc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGZ1bGxQYXRoKS5kYXRh
KCksIDApICE9IEVSUk9SX1NVQ0NFU1MpIHsKKyAgICAgICAgRFdPUkQgZXJyb3IgPSBHZXRMYXN0
RXJyb3IoKTsKKyAgICAgICAgaWYgKGVycm9yICE9IEVSUk9SX0ZJTEVfRVhJU1RTICYmIGVycm9y
ICE9IEVSUk9SX0FMUkVBRFlfRVhJU1RTKSB7CisgICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxl
ZCB0byBjcmVhdGUgcGF0aCAlcyIsIHBhdGguYXNjaWkoKS5kYXRhKCkpOworICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitT
dHJpbmcgaG9tZURpcmVjdG9yeVBhdGgoKQoreworICAgIHJldHVybiAiIjsKK30KKworU3RyaW5n
IHBhdGhHZXRGaWxlTmFtZShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgcmV0dXJuIG51bGxU
ZXJtaW5hdGVkV0NoYXJUb1N0cmluZyg6OlBhdGhGaW5kRmlsZU5hbWUoc3RyaW5nVG9OdWxsVGVy
bWluYXRlZFdDaGFyKHBhdGgpLmRhdGEoKSkpOworfQorCitTdHJpbmcgZGlyZWN0b3J5TmFtZShj
b25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgU3RyaW5nIG5hbWUgPSBwYXRoLmxlZnQocGF0aC5s
ZW5ndGgoKSAtIHBhdGhHZXRGaWxlTmFtZShwYXRoKS5sZW5ndGgoKSk7CisgICAgaWYgKG5hbWUu
Y2hhcmFjdGVyU3RhcnRpbmdBdChuYW1lLmxlbmd0aCgpIC0gMSkgPT0gJ1xcJykgeworICAgICAg
ICAvLyBSZW1vdmUgYW55IHRyYWlsaW5nICJcIi4KKyAgICAgICAgbmFtZS50cnVuY2F0ZShuYW1l
Lmxlbmd0aCgpIC0gMSk7CisgICAgfQorICAgIHJldHVybiBuYW1lOworfQorCitzdGF0aWMgU3Ry
aW5nIGJ1bmRsZU5hbWUoKQoreworICAgIHN0YXRpYyBjb25zdCBOZXZlckRlc3Ryb3llZDxTdHJp
bmc+IG5hbWUgPSBbXSB7CisgICAgICAgIFN0cmluZyBuYW1lIHsgIldlYktpdCJfcyB9OworCisj
aWYgVVNFKENGKQorICAgICAgICBpZiAoQ0ZCdW5kbGVSZWYgYnVuZGxlID0gQ0ZCdW5kbGVHZXRN
YWluQnVuZGxlKCkpIHsKKyAgICAgICAgICAgIGlmIChDRlR5cGVSZWYgYnVuZGxlRXhlY3V0YWJs
ZSA9IENGQnVuZGxlR2V0VmFsdWVGb3JJbmZvRGljdGlvbmFyeUtleShidW5kbGUsIGtDRkJ1bmRs
ZUV4ZWN1dGFibGVLZXkpKSB7CisgICAgICAgICAgICAgICAgaWYgKENGR2V0VHlwZUlEKGJ1bmRs
ZUV4ZWN1dGFibGUpID09IENGU3RyaW5nR2V0VHlwZUlEKCkpCisgICAgICAgICAgICAgICAgICAg
IG5hbWUgPSByZWludGVycHJldF9jYXN0PENGU3RyaW5nUmVmPihidW5kbGVFeGVjdXRhYmxlKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorI2VuZGlmCisKKyAgICAgICAgcmV0dXJuIG5hbWU7
CisgICAgfSgpOworCisgICAgcmV0dXJuIG5hbWU7Cit9CisKK3N0YXRpYyBTdHJpbmcgc3RvcmFn
ZURpcmVjdG9yeShEV09SRCBwYXRoSWRlbnRpZmllcikKK3sKKyAgICBWZWN0b3I8VUNoYXI+IGJ1
ZmZlcihNQVhfUEFUSCk7CisgICAgaWYgKEZBSUxFRChTSEdldEZvbGRlclBhdGhXKDAsIHBhdGhJ
ZGVudGlmaWVyIHwgQ1NJRExfRkxBR19DUkVBVEUsIDAsIDAsIGJ1ZmZlci5kYXRhKCkpKSkKKyAg
ICAgICAgcmV0dXJuIFN0cmluZygpOworICAgIGJ1ZmZlci5yZXNpemUod2NzbGVuKGJ1ZmZlci5k
YXRhKCkpKTsKKyAgICBTdHJpbmcgZGlyZWN0b3J5ID0gU3RyaW5nOjphZG9wdChXVEZNb3ZlKGJ1
ZmZlcikpOworCisgICAgZGlyZWN0b3J5ID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRpcmVj
dG9yeSwgIkFwcGxlIENvbXB1dGVyXFwiICsgYnVuZGxlTmFtZSgpKTsKKyAgICBpZiAoIW1ha2VB
bGxEaXJlY3RvcmllcyhkaXJlY3RvcnkpKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAg
ICByZXR1cm4gZGlyZWN0b3J5OworfQorCitzdGF0aWMgU3RyaW5nIGNhY2hlZFN0b3JhZ2VEaXJl
Y3RvcnkoRFdPUkQgcGF0aElkZW50aWZpZXIpCit7CisgICAgc3RhdGljIEhhc2hNYXA8RFdPUkQs
IFN0cmluZz4gZGlyZWN0b3JpZXM7CisKKyAgICBIYXNoTWFwPERXT1JELCBTdHJpbmc+OjppdGVy
YXRvciBpdCA9IGRpcmVjdG9yaWVzLmZpbmQocGF0aElkZW50aWZpZXIpOworICAgIGlmIChpdCAh
PSBkaXJlY3Rvcmllcy5lbmQoKSkKKyAgICAgICAgcmV0dXJuIGl0LT52YWx1ZTsKKworICAgIFN0
cmluZyBkaXJlY3RvcnkgPSBzdG9yYWdlRGlyZWN0b3J5KHBhdGhJZGVudGlmaWVyKTsKKyAgICBk
aXJlY3Rvcmllcy5hZGQocGF0aElkZW50aWZpZXIsIGRpcmVjdG9yeSk7CisKKyAgICByZXR1cm4g
ZGlyZWN0b3J5OworfQorCitzdGF0aWMgU3RyaW5nIGdlbmVyYXRlVGVtcG9yYXJ5UGF0aChjb25z
dCBGdW5jdGlvbjxib29sKGNvbnN0IFN0cmluZyYpPiYgYWN0aW9uKQoreworICAgIHdjaGFyX3Qg
dGVtcFBhdGhbTUFYX1BBVEhdOworICAgIGludCB0ZW1wUGF0aExlbmd0aCA9IDo6R2V0VGVtcFBh
dGhXKFdURl9BUlJBWV9MRU5HVEgodGVtcFBhdGgpLCB0ZW1wUGF0aCk7CisgICAgaWYgKHRlbXBQ
YXRoTGVuZ3RoIDw9IDAgfHwgdGVtcFBhdGhMZW5ndGggPiBXVEZfQVJSQVlfTEVOR1RIKHRlbXBQ
YXRoKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgU3RyaW5nIHByb3Bvc2VkUGF0
aDsKKyAgICBkbyB7CisgICAgICAgIHdjaGFyX3QgdGVtcEZpbGVbXSA9IEwiWFhYWFhYWFgudG1w
IjsgLy8gVXNlIDguMyBzdHlsZSBuYW1lIChtb3JlIGNoYXJhY3RlcnMgYXJlbid0IGhlbHBmdWwg
ZHVlIHRvIDguMyBzaG9ydCBmaWxlIG5hbWVzKQorICAgICAgICBjb25zdCBpbnQgcmFuZG9tUGFy
dExlbmd0aCA9IDg7CisgICAgICAgIGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tVmFsdWVzKHRlbXBG
aWxlLCByYW5kb21QYXJ0TGVuZ3RoICogc2l6ZW9mKHdjaGFyX3QpKTsKKworICAgICAgICAvLyBM
aW1pdCB0byB2YWxpZCBmaWxlc3lzdGVtIGNoYXJhY3RlcnMsIGFsc28gZXhjbHVkaW5nIG90aGVy
cyB0aGF0IGNvdWxkIGJlIHByb2JsZW1hdGljLCBsaWtlIHB1bmN0dWF0aW9uLgorICAgICAgICAv
LyBkb24ndCBpbmNsdWRlIGJvdGggdXBwZXIgYW5kIGxvd2VyY2FzZSBzaW5jZSBXaW5kb3dzIGZp
bGUgc3lzdGVtcyBhcmUgdHlwaWNhbGx5IG5vdCBjYXNlIHNlbnNpdGl2ZS4KKyAgICAgICAgY29u
c3QgY2hhciB2YWxpZENoYXJzW10gPSAiMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3
eHl6IjsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCByYW5kb21QYXJ0TGVuZ3RoOyArK2kp
CisgICAgICAgICAgICB0ZW1wRmlsZVtpXSA9IHZhbGlkQ2hhcnNbdGVtcEZpbGVbaV0gJSAoc2l6
ZW9mKHZhbGlkQ2hhcnMpIC0gMSldOworCisgICAgICAgIEFTU0VSVCh3Y3NsZW4odGVtcEZpbGUp
ID09IFdURl9BUlJBWV9MRU5HVEgodGVtcEZpbGUpIC0gMSk7CisKKyAgICAgICAgcHJvcG9zZWRQ
YXRoID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG51bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmlu
Zyh0ZW1wUGF0aCksIG51bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmluZyh0ZW1wRmlsZSkpOworICAg
ICAgICBpZiAocHJvcG9zZWRQYXRoLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGJyZWFrOworICAg
IH0gd2hpbGUgKCFhY3Rpb24ocHJvcG9zZWRQYXRoKSk7CisKKyAgICByZXR1cm4gcHJvcG9zZWRQ
YXRoOworfQorCitTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiwgUGxhdGZv
cm1GaWxlSGFuZGxlJiBoYW5kbGUpCit7CisgICAgaGFuZGxlID0gSU5WQUxJRF9IQU5ETEVfVkFM
VUU7CisKKyAgICBTdHJpbmcgcHJvcG9zZWRQYXRoID0gZ2VuZXJhdGVUZW1wb3JhcnlQYXRoKFsm
aGFuZGxlXShjb25zdCBTdHJpbmcmIHByb3Bvc2VkUGF0aCkgeworICAgICAgICAvLyB1c2UgQ1JF
QVRFX05FVyB0byBhdm9pZCBvdmVyd3JpdGluZyBhbiBleGlzdGluZyBmaWxlIHdpdGggdGhlIHNh
bWUgbmFtZQorICAgICAgICBoYW5kbGUgPSA6OkNyZWF0ZUZpbGVXKHN0cmluZ1RvTnVsbFRlcm1p
bmF0ZWRXQ2hhcihwcm9wb3NlZFBhdGgpLmRhdGEoKSwgR0VORVJJQ19SRUFEIHwgR0VORVJJQ19X
UklURSwgMCwgMCwgQ1JFQVRFX05FVywgRklMRV9BVFRSSUJVVEVfTk9STUFMLCAwKTsKKworICAg
ICAgICByZXR1cm4gaXNIYW5kbGVWYWxpZChoYW5kbGUpIHx8IEdldExhc3RFcnJvcigpID09IEVS
Uk9SX0FMUkVBRFlfRVhJU1RTOworICAgIH0pOworCisgICAgaWYgKCFpc0hhbmRsZVZhbGlkKGhh
bmRsZSkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIHJldHVybiBwcm9wb3NlZFBh
dGg7Cit9CisKK1BsYXRmb3JtRmlsZUhhbmRsZSBvcGVuRmlsZShjb25zdCBTdHJpbmcmIHBhdGgs
IEZpbGVPcGVuTW9kZSBtb2RlKQoreworICAgIERXT1JEIGRlc2lyZWRBY2Nlc3MgPSAwOworICAg
IERXT1JEIGNyZWF0aW9uRGlzcG9zaXRpb24gPSAwOworICAgIERXT1JEIHNoYXJlTW9kZSA9IDA7
CisgICAgc3dpdGNoIChtb2RlKSB7CisgICAgY2FzZSBGaWxlT3Blbk1vZGU6OlJlYWQ6CisgICAg
ICAgIGRlc2lyZWRBY2Nlc3MgPSBHRU5FUklDX1JFQUQ7CisgICAgICAgIGNyZWF0aW9uRGlzcG9z
aXRpb24gPSBPUEVOX0VYSVNUSU5HOworICAgICAgICBzaGFyZU1vZGUgPSBGSUxFX1NIQVJFX1JF
QUQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRmlsZU9wZW5Nb2RlOjpXcml0ZToKKyAgICAg
ICAgZGVzaXJlZEFjY2VzcyA9IEdFTkVSSUNfV1JJVEU7CisgICAgICAgIGNyZWF0aW9uRGlzcG9z
aXRpb24gPSBDUkVBVEVfQUxXQVlTOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisKKyAgICBTdHJpbmcgZGVzdGluYXRp
b24gPSBwYXRoOworICAgIHJldHVybiBDcmVhdGVGaWxlKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRX
Q2hhcihkZXN0aW5hdGlvbikuZGF0YSgpLCBkZXNpcmVkQWNjZXNzLCBzaGFyZU1vZGUsIDAsIGNy
ZWF0aW9uRGlzcG9zaXRpb24sIEZJTEVfQVRUUklCVVRFX05PUk1BTCwgMCk7Cit9CisKK3ZvaWQg
Y2xvc2VGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKQoreworICAgIGlmIChpc0hhbmRs
ZVZhbGlkKGhhbmRsZSkpIHsKKyAgICAgICAgOjpDbG9zZUhhbmRsZShoYW5kbGUpOworICAgICAg
ICBoYW5kbGUgPSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOworICAgIH0KK30KKworbG9uZyBs
b25nIHNlZWtGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQs
IEZpbGVTZWVrT3JpZ2luIG9yaWdpbikKK3sKKyAgICBEV09SRCBtb3ZlTWV0aG9kID0gRklMRV9C
RUdJTjsKKworICAgIGlmIChvcmlnaW4gPT0gRmlsZVNlZWtPcmlnaW46OkN1cnJlbnQpCisgICAg
ICAgIG1vdmVNZXRob2QgPSBGSUxFX0NVUlJFTlQ7CisgICAgZWxzZSBpZiAob3JpZ2luID09IEZp
bGVTZWVrT3JpZ2luOjpFbmQpCisgICAgICAgIG1vdmVNZXRob2QgPSBGSUxFX0VORDsKKworICAg
IExBUkdFX0lOVEVHRVIgbGFyZ2VPZmZzZXQ7CisgICAgbGFyZ2VPZmZzZXQuUXVhZFBhcnQgPSBv
ZmZzZXQ7CisKKyAgICBsYXJnZU9mZnNldC5Mb3dQYXJ0ID0gU2V0RmlsZVBvaW50ZXIoaGFuZGxl
LCBsYXJnZU9mZnNldC5Mb3dQYXJ0LCAmbGFyZ2VPZmZzZXQuSGlnaFBhcnQsIG1vdmVNZXRob2Qp
OworCisgICAgaWYgKGxhcmdlT2Zmc2V0Lkxvd1BhcnQgPT0gSU5WQUxJRF9TRVRfRklMRV9QT0lO
VEVSICYmIEdldExhc3RFcnJvcigpICE9IE5PX0VSUk9SKQorICAgICAgICByZXR1cm4gLTE7CisK
KyAgICByZXR1cm4gbGFyZ2VPZmZzZXQuUXVhZFBhcnQ7Cit9CisKK2ludCB3cml0ZVRvRmlsZShQ
bGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQor
eworICAgIGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUpKQorICAgICAgICByZXR1cm4gLTE7CisK
KyAgICBEV09SRCBieXRlc1dyaXR0ZW47CisgICAgYm9vbCBzdWNjZXNzID0gV3JpdGVGaWxlKGhh
bmRsZSwgZGF0YSwgbGVuZ3RoLCAmYnl0ZXNXcml0dGVuLCAwKTsKKworICAgIGlmICghc3VjY2Vz
cykKKyAgICAgICAgcmV0dXJuIC0xOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KGJ5dGVz
V3JpdHRlbik7Cit9CisKK2ludCByZWFkRnJvbUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRs
ZSwgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKK3sKKyAgICBpZiAoIWlzSGFuZGxlVmFsaWQoaGFu
ZGxlKSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgRFdPUkQgYnl0ZXNSZWFkOworICAgIGJv
b2wgc3VjY2VzcyA9IDo6UmVhZEZpbGUoaGFuZGxlLCBkYXRhLCBsZW5ndGgsICZieXRlc1JlYWQs
IDApOworCisgICAgaWYgKCFzdWNjZXNzKQorICAgICAgICByZXR1cm4gLTE7CisgICAgcmV0dXJu
IHN0YXRpY19jYXN0PGludD4oYnl0ZXNSZWFkKTsKK30KKworYm9vbCBoYXJkTGlua09yQ29weUZp
bGUoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb24pCit7Cisg
ICAgcmV0dXJuICEhOjpDb3B5RmlsZShzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoc291cmNl
KS5kYXRhKCksIHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihkZXN0aW5hdGlvbikuZGF0YSgp
LCBUUlVFKTsKK30KKworU3RyaW5nIGxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgp
Cit7CisgICAgcmV0dXJuIGNhY2hlZFN0b3JhZ2VEaXJlY3RvcnkoQ1NJRExfTE9DQUxfQVBQREFU
QSk7Cit9CisKK1N0cmluZyByb2FtaW5nVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpCit7
CisgICAgcmV0dXJuIGNhY2hlZFN0b3JhZ2VEaXJlY3RvcnkoQ1NJRExfQVBQREFUQSk7Cit9CisK
K1ZlY3RvcjxTdHJpbmc+IGxpc3REaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIGNv
bnN0IFN0cmluZyYgZmlsdGVyKQoreworICAgIFZlY3RvcjxTdHJpbmc+IGVudHJpZXM7CisKKyAg
ICBQYXRoV2Fsa2VyIHdhbGtlcihkaXJlY3RvcnksIGZpbHRlcik7CisgICAgaWYgKCF3YWxrZXIu
aXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gZW50cmllczsKKworICAgIGRvIHsKKyAgICAgICAg
aWYgKHdhbGtlci5kYXRhKCkuZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX0RJUkVD
VE9SWQorICAgICAgICAgICAgJiYgKCF3Y3NjbXAod2Fsa2VyLmRhdGEoKS5jRmlsZU5hbWUsIEwi
LiIpIHx8ICF3Y3NjbXAod2Fsa2VyLmRhdGEoKS5jRmlsZU5hbWUsIEwiLi4iKSkpCisgICAgICAg
ICAgICBjb250aW51ZTsKKworICAgICAgICBlbnRyaWVzLmFwcGVuZChkaXJlY3RvcnkgKyAiXFwi
ICsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVQ2hhcio+KHdhbGtlci5kYXRhKCkuY0ZpbGVOYW1l
KSk7CisgICAgfSB3aGlsZSAod2Fsa2VyLnN0ZXAoKSk7CisKKyAgICByZXR1cm4gZW50cmllczsK
K30KKworYm9vbCBnZXRWb2x1bWVGcmVlU3BhY2UoY29uc3QgU3RyaW5nJiwgdWludDY0X3QmKQor
eworICAgIHJldHVybiBmYWxzZTsKK30KKworT3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmlj
ZUlkKGNvbnN0IENTdHJpbmcmIGZzRmlsZSkKK3sKKyAgICBhdXRvIGhhbmRsZSA9IG9wZW5GaWxl
KGZzRmlsZS5kYXRhKCksIEZpbGVPcGVuTW9kZTo6UmVhZCk7CisgICAgaWYgKCFpc0hhbmRsZVZh
bGlkKGhhbmRsZSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBCWV9IQU5E
TEVfRklMRV9JTkZPUk1BVElPTiBmaWxlSW5mb3JtYXRpb24gPSB7IH07CisgICAgaWYgKCE6Okdl
dEZpbGVJbmZvcm1hdGlvbkJ5SGFuZGxlKGhhbmRsZSwgJmZpbGVJbmZvcm1hdGlvbikpIHsKKyAg
ICAgICAgY2xvc2VGaWxlKGhhbmRsZSk7CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgfQorCisgICAgY2xvc2VGaWxlKGhhbmRsZSk7CisKKyAgICByZXR1cm4gZmlsZUluZm9ybWF0
aW9uLmR3Vm9sdW1lU2VyaWFsTnVtYmVyOworfQorCitTdHJpbmcgcmVhbFBhdGgoY29uc3QgU3Ry
aW5nJiBmaWxlUGF0aCkKK3sKKyAgICByZXR1cm4gZ2V0RmluYWxQYXRoTmFtZShmaWxlUGF0aCk7
Cit9CisKK1N0cmluZyBjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoKQoreworICAgIHJldHVybiBn
ZW5lcmF0ZVRlbXBvcmFyeVBhdGgoW10oY29uc3QgU3RyaW5nJiBwcm9wb3NlZFBhdGgpIHsKKyAg
ICAgICAgcmV0dXJuIG1ha2VBbGxEaXJlY3Rvcmllcyhwcm9wb3NlZFBhdGgpOworICAgIH0pOwor
fQorCitib29sIGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5
UGF0aCkKK3sKKyAgICBTSEZJTEVPUFNUUlVDVCBkZWxldGVPcGVyYXRpb24gPSB7CisgICAgICAg
IG51bGxwdHIsCisgICAgICAgIEZPX0RFTEVURSwKKyAgICAgICAgc3RyaW5nVG9OdWxsVGVybWlu
YXRlZFdDaGFyKGRpcmVjdG9yeVBhdGgpLmRhdGEoKSwKKyAgICAgICAgTCIiLAorICAgICAgICBG
T0ZfTk9DT05GSVJNQVRJT04gfCBGT0ZfTk9FUlJPUlVJIHwgRk9GX1NJTEVOVCwKKyAgICAgICAg
ZmFsc2UsCisgICAgICAgIDAsCisgICAgICAgIEwiIgorICAgIH07CisgICAgcmV0dXJuICFTSEZp
bGVPcGVyYXRpb24oJmRlbGV0ZU9wZXJhdGlvbik7Cit9CisKK30gLy8gbmFtZXNwYWNlIEZpbGVT
eXN0ZW0KK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvd2lu
L1BhdGhXYWxrZXIuY3BwIGIvU291cmNlL1dURi93dGYvd2luL1BhdGhXYWxrZXIuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmM2ZDNmOTcwNjA0OWNiMTNjOWVmNjM1NWViYjYzYTUwNzk4NTAyMjEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vUGF0aFdhbGtlci5jcHAKQEAgLTAsMCArMSw1
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDx3dGYvd2lu
L1BhdGhXYWxrZXIuaD4KKworI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5oPgorCituYW1lc3BhY2UgV1RGIHsK
KworUGF0aFdhbGtlcjo6UGF0aFdhbGtlcihjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgY29uc3Qg
U3RyaW5nJiBwYXR0ZXJuKQoreworICAgIFN0cmluZyBwYXRoID0gZGlyZWN0b3J5ICsgIlxcIiAr
IHBhdHRlcm47CisgICAgbV9oYW5kbGUgPSA6OkZpbmRGaXJzdEZpbGVXKHN0cmluZ1RvTnVsbFRl
cm1pbmF0ZWRXQ2hhcihwYXRoKS5kYXRhKCksICZtX2RhdGEpOworfQorCitQYXRoV2Fsa2VyOjp+
UGF0aFdhbGtlcigpCit7CisgICAgaWYgKCFpc1ZhbGlkKCkpCisgICAgICAgIHJldHVybjsKKyAg
ICA6OkZpbmRDbG9zZShtX2hhbmRsZSk7Cit9CisKK2Jvb2wgUGF0aFdhbGtlcjo6c3RlcCgpCit7
CisgICAgcmV0dXJuIDo6RmluZE5leHRGaWxlVyhtX2hhbmRsZSwgJm1fZGF0YSk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvd2luL1BhdGhXYWxr
ZXIuaCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9QYXRoV2Fsa2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTUzYWUy
ZTZhZTg1NjFhZjM0NTRlMjE4Mzg4ZGY4OTAwNWVhMzNiYwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL3dpbi9QYXRoV2Fsa2VyLmgKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgPFdpbmRvd3MuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgor
I2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3Mg
UGF0aFdhbGtlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGF0aFdhbGtlcik7CitwdWJs
aWM6CisgICAgUGF0aFdhbGtlcihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5LCBjb25zdCBX
VEY6OlN0cmluZyYgcGF0dGVybik7CisgICAgflBhdGhXYWxrZXIoKTsKKworICAgIGJvb2wgaXNW
YWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1faGFuZGxlICE9IElOVkFMSURfSEFORExFX1ZBTFVFOyB9
CisgICAgY29uc3QgV0lOMzJfRklORF9EQVRBVyYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0
YTsgfQorCisgICAgYm9vbCBzdGVwKCk7CisKK3ByaXZhdGU6CisgICAgSEFORExFIG1faGFuZGxl
OworICAgIFdJTjMyX0ZJTkRfREFUQVcgbV9kYXRhOworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RG
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAKaW5kZXgg
OTM1NjY1MDFhOTllMTk4ODhiMWJkMzk1NDUyODgxYzQ3NDU1N2RmNi4uODE4ZjIyNGJkNTY0ODNj
OGFkNjYwMmIzMDJkNmFlMGI3MmRlZDFhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcApAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIkNETUZh
Y3RvcnkuaCIKICNpbmNsdWRlICJDRE1Qcml2YXRlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIK
LSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiSW5pdERhdGFSZWdpc3RyeS5oIgog
I2luY2x1ZGUgIk1lZGlhS2V5c1JlcXVpcmVtZW50LmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIu
aCIKQEAgLTQyLDYgKzQxLDcgQEAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1
ZGUgIlNlY3VyaXR5T3JpZ2luRGF0YS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVk
ZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5U2Vzc2lv
bi5jcHAKaW5kZXggZTY2NmNlOTc5MzY3NDVlZGEwMTA2NjA3OTc4ZjZlOTgwOWZmMGIzOS4uNjVl
ZGRhMTZmNzk1MGQyNDliY2Y3MzE2Mjg2MTUwODU0ZWYyODFkNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNz
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2Fj
eS9XZWJLaXRNZWRpYUtleVNlc3Npb24uY3BwCkBAIC0zMCwxMyArMzAsMTMgQEAKIAogI2luY2x1
ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgotI2luY2x1ZGUgIkZpbGVT
eXN0ZW0uaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5EYXRh
LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJXZWJLaXRNZWRpYUtleUVycm9y
LmgiCiAjaW5jbHVkZSAiV2ViS2l0TWVkaWFLZXlNZXNzYWdlRXZlbnQuaCIKICNpbmNsdWRlICJX
ZWJLaXRNZWRpYUtleXMuaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmll
c2FwaS9ET01GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2Fw
aS9ET01GaWxlU3lzdGVtLmNwcAppbmRleCA2ZGQ0MTcxMzA4YWQ0NjdmMmE0YzI3YzljZTk3NzI5
YjNmYWQ4Y2Y5Li4zNjg3OTRlZjVjMWEwZmU3OThiMmExYmE1MDg4NmMwYjRmZWJjYjk0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0u
Y3BwCkBAIC0yNywxMiArMjcsMTIgQEAKICNpbmNsdWRlICJET01GaWxlU3lzdGVtLmgiCiAKICNp
bmNsdWRlICJGaWxlLmgiCi0jaW5jbHVkZSAiRmlsZU1ldGFkYXRhLmgiCi0jaW5jbHVkZSAiRmls
ZVN5c3RlbS5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5oIgogI2luY2x1
ZGUgIkZpbGVTeXN0ZW1GaWxlRW50cnkuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250
ZXh0LmgiCiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkQ29waWVyLmg+CisjaW5jbHVkZSA8d3Rm
L0ZpbGVNZXRhZGF0YS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8
d3RmL1VVSUQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRW50cnku
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1FbnRyeS5j
cHAKaW5kZXggZGNjYjVhMTE4NjNkOWJiMTBmMjg3ZDU3ZmRjMTM5YTBiOWIxYjExMS4uNDI0Y2Nh
MjZjZDRjN2I4NjEwM2ZkNTIwZjFmZjcwZjBkYTAzNTFlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1FbnRyeS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1FbnRyeS5jcHAKQEAgLTI5LDEw
ICsyOSwxMCBAQAogI2luY2x1ZGUgIkRPTUV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIkRPTUZpbGVT
eXN0ZW0uaCIKICNpbmNsdWRlICJFcnJvckNhbGxiYWNrLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3Rl
bS5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5oIgogI2luY2x1ZGUgIkZp
bGVTeXN0ZW1FbnRyeUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJh
c2VJZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRh
dGFiYXNlSWRlbnRpZmllci5jcHAKaW5kZXggYzdmZGZkMGRkNjU0NWY4YzZmZTUzNDJmYjM2NDZm
ZTlhODQ2OTRiOS4uYjQyOWIzZjI2YjkzNDZmYmIxZGFlN2VjNjUwZTQ2ZTI1NmRmYzhjOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVu
dGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZUlkZW50aWZpZXIuY3BwCkBAIC0yOCw4ICsyOCw4IEBACiAKICNpZiBFTkFCTEUoSU5ERVhF
RF9EQVRBQkFTRSkKIAotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJTZWN1cml0
eU9yaWdpbi5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
Zi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3Jl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJC
YWNraW5nU3RvcmUuY3BwCmluZGV4IDIxNzhjYzQyYTliNTExNDNjZTVkODVmNGQxMWY3YWIyNjA5
MjRlYzcuLjI4NWQ1MDJkYWU4MWE5YTc2OGFhMzRhMWQyNTZkZjUwNDdkNjFiZmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNr
aW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpZiBFTkFC
TEUoSU5ERVhFRF9EQVRBQkFTRSkKIAotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRl
ICJJREJCaW5kaW5nVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiSURCR2V0QWxsUmVjb3Jkc0RhdGEu
aCIKICNpbmNsdWRlICJJREJHZXRBbGxSZXN1bHQuaCIKQEAgLTU0LDYgKzUzLDcgQEAKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU0dsb2JhbE9iamVjdC5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL1N0cm9uZ0lubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJ1Y3R1
cmVJbmxpbmVzLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQlRyYW5zYWN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJU
cmFuc2FjdGlvbi5jcHAKaW5kZXggNzgxYjc5ZjYzYTA2MWQ1OGQxYzkyYTQxM2MyMWFmZGU2NTY0
OTM2ZS4uYmVlYTZiMTY3MDYyNGU1Yzk4MGYzMTY2MzRjMDM2NWRmZGViYzZjYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQlRyYW5z
YWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
U1FMaXRlSURCVHJhbnNhY3Rpb24uY3BwCkBAIC0yNywxMyArMjcsMTMgQEAKIAogI2lmIEVOQUJM
RShJTkRFWEVEX0RBVEFCQVNFKQogCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUg
IklEQkN1cnNvckluZm8uaCIKICNpbmNsdWRlICJJbmRleGVkREIuaCIKICNpbmNsdWRlICJMb2dn
aW5nLmgiCiAjaW5jbHVkZSAiU1FMaXRlSURCQmFja2luZ1N0b3JlLmgiCiAjaW5jbHVkZSAiU1FM
aXRlSURCQ3Vyc29yLmgiCiAjaW5jbHVkZSAiU1FMaXRlVHJhbnNhY3Rpb24uaCIKKyNpbmNsdWRl
IDx3dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgSURC
U2VydmVyIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3No
YXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAKaW5kZXggNjFhZWI4ZjdkNzAxNTFi
OTQyMjg1YWNkY2NmODFiZmIxZWE0MjYyNi4uZGQ5ZjVhZDI5MzE3YzVjZGM3NTg4MzJhYzZhMzcw
YmRmOTVkZDg5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAKQEAgLTI4LDcgKzI4LDYg
QEAKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCi0jaW5jbHVkZSAiRmlsZVN5c3Rl
bS5oIgogI2luY2x1ZGUgIklEQkNvbm5lY3Rpb25Ub0NsaWVudC5oIgogI2luY2x1ZGUgIklEQkNv
bm5lY3Rpb25Ub1NlcnZlci5oIgogI2luY2x1ZGUgIklEQkN1cnNvckluZm8uaCIKQEAgLTQwLDYg
KzM5LDcgQEAKICNpbmNsdWRlICJJREJSZXN1bHREYXRhLmgiCiAjaW5jbHVkZSAiSURCVmFsdWUu
aCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNp
bmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAK
aW5kZXggZDk2NTQxZWQ0OWY2OTM4MjRlZDFkZmM1MjUwODhkYWMzMmJjNTljNS4uNDA4ZjYyMjEy
YWUyYjE3YjM4YWMxOTA5ODk1MWEwZjA5MmQ0YjA0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcApAQCAtMzQsNyAr
MzQsNiBAQAogI2luY2x1ZGUgIkRhdGFiYXNlTWFuYWdlci5oIgogI2luY2x1ZGUgIkRhdGFiYXNl
TWFuYWdlckNsaWVudC5oIgogI2luY2x1ZGUgIkRhdGFiYXNlVGhyZWFkLmgiCi0jaW5jbHVkZSAi
RmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJPcmlnaW5Mb2Nr
LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKQEAgLTQzLDYgKzQyLDcgQEAKICNpbmNs
dWRlICJTUUxpdGVGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiU1FMaXRlU3RhdGVtZW50LmgiCiAj
aW5jbHVkZSAiU1FMaXRlVHJhbnNhY3Rpb24uaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5o
PgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5Mb2NrLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luTG9jay5jcHAKaW5kZXggNDIzYjJlNjZkZGZh
MTJjYzM0MGY2MGZjZTU5ZDM1M2RmOTk4NjdmNC4uYTIxYmNkYjc4Mzg2YzgxMGVjNTk5NDFjMjc1
ZjRlZmJhZmYyM2ZiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9PcmlnaW5Mb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL09yaWdpbkxvY2suY3BwCkBAIC0yNiw4ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiT3JpZ2luTG9jay5oIgogCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgotCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIFN0cmluZyBPcmlnaW5Mb2NrOjpsb2NrRmlsZU5hbWVGb3JQ
YXRoKFN0cmluZyBvcmlnaW5QYXRoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9PcmlnaW5Mb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL09yaWdpbkxvY2suaAppbmRleCBhMTZlODRmMTQ4OWRhZjJlZThmNTA0NjE5ZDEzOTkz
YjhkMzc1ZTEwLi5lY2MyOWU4OTAyNWJkZjYyOTM5MmIxMDU5ZWY4ODcwZTZmOGY5MmYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL09yaWdpbkxvY2suaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL09yaWdpbkxvY2suaApAQCAt
MjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIK
KyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5j
bHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L2NvY29hL0RhdGFiYXNlTWFuYWdlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9jb2NvYS9EYXRhYmFzZU1hbmFnZXJDb2NvYS5tbQppbmRleCA3Y2ZlOWZiMDYz
MjY5MTgxZDQ0ZjEzYzM4MzY4MjUzM2Q0ZTRkZmM5Li44ZDMyNTA3M2IwNGFjYTFkMzI4NDk2ZTE4
MjgzMzhkZmViY2FiZmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL2NvY29hL0RhdGFiYXNlTWFuYWdlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvY29jb2EvRGF0YWJhc2VNYW5hZ2VyQ29jb2EubW0KQEAgLTI5
LDcgKzI5LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiRGF0YWJhc2VNYW5hZ2Vy
LmgiCiAKLSNpbXBvcnQgIkZpbGVTeXN0ZW0uaCIKKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFM
L1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvUEFML1BBTC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDRmYmRkZTM5YTRhYzc2MjI4MGRjMjk3N2Fj
MWZhZDY3OTQwZGZjNjIuLmQxNjRhNGM3MmFkYjhkNWRjMGQ2MDRkZThiNmQxZTU1NWM3NTIxNWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTEzMyw3ICsxMzMsNiBAQAogCQlBMTE3NUI1NzFGNkI0NzA1MDBDNEI5RjAgLyogRGVm
YXVsdFNlYXJjaFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBMTE3NUI1NTFGNkI0NzA1MDBDNEI5RjAgLyogRGVmYXVsdFNlYXJjaFByb3Zp
ZGVyLmggKi87IH07CiAJCUExMTc1QjU4MUY2QjQ3MDUwMEM0QjlGMCAvKiBEZWZhdWx0U2VhcmNo
UHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTExNzVCNTYxRjZCNDcwNTAwQzRCOUYwIC8qIERlZmF1bHRTZWFyY2hQcm92aWRlci5jcHAg
Ki87IH07CiAJCUExMTc1QjVBMUY2QjRBODQwMEM0QjlGMCAvKiBOU1Njcm9sbFZpZXdTUEkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMTc1QjU5MUY2
QjRBODQwMEM0QjlGMCAvKiBOU1Njcm9sbFZpZXdTUEkuaCAqLzsgfTsKLQkJQTFGNTVEQ0YxRjU1
MjhFQzAwRURCNzVGIC8qIE1ldGFkYXRhU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBMUY1NURDRTFGNTUyOEVDMDBFREI3NUYgLyogTWV0YWRhdGFT
UEkuaCAqLzsgfTsKIAkJQTFGNjNDOUYyMUE0REJGNzAwNkZCNDNCIC8qIFBhc3NLaXRTb2Z0TGlu
ay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFGNjND
OUQyMUE0REJGNzAwNkZCNDNCIC8qIFBhc3NLaXRTb2Z0TGluay5oICovOyB9OwogCQlBMUY2M0NB
MDIxQTREQkY3MDA2RkI0M0IgLyogUGFzc0tpdFNvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFGNjNDOUUyMUE0REJGNzAwNkZCNDNCIC8q
IFBhc3NLaXRTb2Z0TGluay5tbSAqLzsgfTsKIAkJQTMwRDQxMjExRjBERDBFQTAwQjcxOTU0IC8q
IEtpbGxSaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBMzBENDExRTFGMEREMEVBMDBCNzE5NTQgLyogS2lsbFJpbmcuaCAqLzsgfTsKQEAgLTI5NCw3
ICsyOTMsNiBAQAogCQlBMTE3NUI1NTFGNkI0NzA1MDBDNEI5RjAgLyogRGVmYXVsdFNlYXJjaFBy
b3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlZmF1bHRTZWFyY2hQcm92aWRlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBMTE3NUI1NjFGNkI0NzA1MDBDNEI5RjAgLyogRGVmYXVs
dFNlYXJjaFByb3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlZmF1bHRTZWFyY2hQcm92
aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExMTc1QjU5MUY2QjRBODQw
MEM0QjlGMCAvKiBOU1Njcm9sbFZpZXdTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTlNTY3JvbGxWaWV3
U1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUExRjU1RENFMUY1NTI4RUMwMEVE
Qjc1RiAvKiBNZXRhZGF0YVNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZXRhZGF0YVNQSS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMUY2M0M5RDIxQTREQkY3MDA2RkI0M0IgLyogUGFz
c0tpdFNvZnRMaW5rLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhc3NLaXRTb2Z0TGluay5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBMUY2M0M5RTIxQTREQkY3MDA2RkI0M0IgLyogUGFzc0tp
dFNvZnRMaW5rLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGFzc0tpdFNvZnRMaW5rLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMzBENDExRTFGMEREMEVBMDBCNzE5NTQgLyog
S2lsbFJpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gS2lsbFJpbmcuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ0OSw3ICs0NDcsNiBAQAogCQkJCUExMDI2
NTg4MUY1Njc0N0EwMEI0Qzg0NCAvKiBISVRvb2xib3hTUEkuaCAqLywKIAkJCQkwQzc3ODU3MjFG
NDUxMzBGMDBGNEVCQjYgLyogTG9va3VwU1BJLmggKi8sCiAJCQkJMEM3Nzg1NzMxRjQ1MTMwRjAw
RjRFQkI2IC8qIE1lZGlhUmVtb3RlU1BJLmggKi8sCi0JCQkJQTFGNTVEQ0UxRjU1MjhFQzAwRURC
NzVGIC8qIE1ldGFkYXRhU1BJLmggKi8sCiAJCQkJMEM3Nzg1NzQxRjQ1MTMwRjAwRjRFQkI2IC8q
IE5TQWNjZXNzaWJpbGl0eVNQSS5oICovLAogCQkJCTFDQ0VFNEY2MjBEODc0M0YwMDQ3QjA5NyAv
KiBOU0FwcGVhcmFuY2VTUEkuaCAqLywKIAkJCQkwQzc3ODU3NTFGNDUxMzBGMDBGNEVCQjYgLyog
TlNBcHBsaWNhdGlvblNQSS5oICovLApAQCAtNzAxLDcgKzY5OCw2IEBACiAJCQkJMEM1QUY5MUQx
RjQzQTRDNzAwMkVBQzAyIC8qIE1lZGlhUGxheWVyU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
Qzc3ODU4QzFGNDUxMzBGMDBGNEVCQjYgLyogTWVkaWFSZW1vdGVTUEkuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBDMDBDRkQ0MUY2OENFNDYwMEFBQzI2RCAvKiBNZWRpYVRpbWVBVkZvdW5kYXRpb24u
aCBpbiBIZWFkZXJzICovLAotCQkJCUExRjU1RENGMUY1NTI4RUMwMEVEQjc1RiAvKiBNZXRhZGF0
YVNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEM1QUY5MUUxRjQzQTRDNzAwMkVBQzAyIC8qIE1v
YmlsZUdlc3RhbHRTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBDMkRBMTQ5MUYzQkVCNDkwMERC
QzMxNyAvKiBORUZpbHRlclNvdXJjZVNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEM3Nzg1OEQx
RjQ1MTMwRjAwRjRFQkI2IC8qIE5TQWNjZXNzaWJpbGl0eVNQSS5oIGluIEhlYWRlcnMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291
cmNlL1dlYkNvcmUvUEFML3BhbC9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCA2YjFiZDI1OTI2ZjQy
YmQ2NDYwMzJhZDkwNGE3ODdlNjliNzUwYWM5Li5mMTMwNzY4NDNmODgzMTZiYzM4YmQ4MGRhNzJm
NDg5YTgyMzc2MjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3Jt
TWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvUGxhdGZvcm1NYWMuY21ha2UK
QEAgLTU4LDcgKzU4LDYgQEAgbGlzdChBUFBFTkQgUEFMX1BVQkxJQ19IRUFERVJTCiAgICAgc3Bp
L21hYy9ISVRvb2xib3hTUEkuaAogICAgIHNwaS9tYWMvTG9va3VwU1BJLmgKICAgICBzcGkvbWFj
L01lZGlhUmVtb3RlU1BJLmgKLSAgICBzcGkvbWFjL01ldGFkYXRhU1BJLmgKICAgICBzcGkvbWFj
L05TQWNjZXNzaWJpbGl0eVNQSS5oCiAgICAgc3BpL21hYy9OU0FwcGVhcmFuY2VTUEkuaAogICAg
IHNwaS9tYWMvTlNBcHBsaWNhdGlvblNQSS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL3NwaS9tYWMvTWV0YWRhdGFTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3Bp
L21hYy9NZXRhZGF0YVNQSS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MTU1NDdj
NmI4NTEwZTMwNjE4ZTIyODJhZDViNzg0MDE2Y2EzNzIxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9N
ZXRhZGF0YVNQSS5oCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNwcmFnbWEgb25jZQotCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLQotI2luY2x1ZGUg
PENvcmVTZXJ2aWNlcy9Db3JlU2VydmljZXNQcml2Lmg+Ci0KLSNlbmRpZgotCi1XVEZfRVhURVJO
X0NfQkVHSU4KLQotQm9vbGVhbiBNREl0ZW1TZXRBdHRyaWJ1dGUoTURJdGVtUmVmLCBDRlN0cmlu
Z1JlZiBuYW1lLCBDRlR5cGVSZWYgYXR0cik7Ci0KLVdURl9FWFRFUk5fQ19FTkQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1NYWMuY21ha2UKaW5kZXggODY2ZWE2YTU0YjlhNDJmODc4ZDRlMTliNjUwYTJjM2MzYmEy
MDlhOS4uNGQ3MmY5ZGVlZjgwZWI2ZTQ0NTY3OTczZDVjNmRjZmY2OTA1NWI4NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1NYWMuY21ha2UKQEAgLTE4OSw3ICsxODksNiBAQCBsaXN0KEFQUEVORCBXZWJDb3Jl
X1NPVVJDRVMKICAgICBwbGF0Zm9ybS9hdWRpby9tYWMvQ0FSaW5nQnVmZmVyLmNwcAogICAgIHBs
YXRmb3JtL2F1ZGlvL21hYy9GRlRGcmFtZU1hYy5jcHAKIAotICAgIHBsYXRmb3JtL2NmL0ZpbGVT
eXN0ZW1DRi5jcHAKICAgICBwbGF0Zm9ybS9jZi9LZXllZERlY29kZXJDRi5jcHAKICAgICBwbGF0
Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAKICAgICBwbGF0Zm9ybS9jZi9NYWluVGhyZWFkU2hh
cmVkVGltZXJDRi5jcHAKQEAgLTIwMCw3ICsxOTksNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NP
VVJDRVMKICAgICBwbGF0Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2Nv
YS5tbQogICAgIHBsYXRmb3JtL2NvY29hL0NvcmVWaWRlb1NvZnRMaW5rLmNwcAogICAgIHBsYXRm
b3JtL2NvY29hL0ZpbGVNb25pdG9yQ29jb2EubW0KLSAgICBwbGF0Zm9ybS9jb2NvYS9GaWxlU3lz
dGVtQ29jb2EubW0KICAgICBwbGF0Zm9ybS9jb2NvYS9LZXlFdmVudENvY29hLm1tCiAgICAgcGxh
dGZvcm0vY29jb2EvTG9jYWxpemVkU3RyaW5nc0NvY29hLm1tCiAgICAgcGxhdGZvcm0vY29jb2Ev
TUlNRVR5cGVSZWdpc3RyeUNvY29hLm1tCkBAIC0zNDcsNyArMzQ1LDYgQEAgbGlzdChBUFBFTkQg
V2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tCiAgICAgcGxh
dGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbQogICAgIHBsYXRmb3JtL21hYy9FdmVudExvb3BNYWMu
bW0KLSAgICBwbGF0Zm9ybS9tYWMvRmlsZVN5c3RlbU1hYy5tbQogICAgIHBsYXRmb3JtL21hYy9L
ZXlFdmVudE1hYy5tbQogICAgIHBsYXRmb3JtL21hYy9Mb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRl
eHQubW0KICAgICBwbGF0Zm9ybS9tYWMvTG9nZ2luZ01hYy5tbQpAQCAtNDE4LDggKzQxNSw2IEBA
IGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dl
YkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQogICAgIHBsYXRm
b3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbQogCi0gICAgcGxhdGZvcm0vcG9z
aXgvRmlsZVN5c3RlbVBPU0lYLmNwcAotCiAgICAgcGxhdGZvcm0vdGV4dC9jZi9IeXBoZW5hdGlv
bkNGLmNwcAogCiAgICAgcGxhdGZvcm0vdGV4dC9tYWMvTG9jYWxlTWFjLm1tCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtlIGIvU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1QbGF5U3RhdGlvbi5jbWFrZQppbmRleCA5MDM3NjAzOWI5Njk2ZTEzZjlkZWJj
OWM0NzMwYTc5MDM5OTc5NTUxLi42ZDQ0NTM1ZDk1OTg0YmU1ODgzM2U4OGY5NzFlNmE3MmYyZGJh
YjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtl
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtUGxheVN0YXRpb24uY21ha2UKQEAgLTYzLDcg
KzYzLDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vcGxheXN0
YXRpb24vU2Nyb2xsYmFyVGhlbWVQbGF5U3RhdGlvbi5jcHAKICAgICBwbGF0Zm9ybS9wbGF5c3Rh
dGlvbi9Vc2VyQWdlbnRQbGF5U3RhdGlvbi5jcHAKIAotICAgIHBsYXRmb3JtL3Bvc2l4L0ZpbGVT
eXN0ZW1QT1NJWC5jcHAKICAgICBwbGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQT1NJWC5jcHAK
IAogICAgIHBsYXRmb3JtL3RleHQvSHlwaGVuYXRpb24uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luLmNt
YWtlCmluZGV4IDRmYWIzMDgyNjBlMDljODA1NDE5Yzg0YzdjYTgzNGQ4MWZiOTVjNjUuLmZjYjU3
YTQ1YTVmNDFlZjNiZjY3MDM4NGZkYTIzZjNjZGE4NjE0ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2lu
LmNtYWtlCkBAIC04NCw3ICs4NCw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAg
IHBsYXRmb3JtL3dpbi9EcmFnRGF0YVdpbi5jcHAKICAgICBwbGF0Zm9ybS93aW4vRHJhZ0ltYWdl
V2luLmNwcAogICAgIHBsYXRmb3JtL3dpbi9FdmVudExvb3BXaW4uY3BwCi0gICAgcGxhdGZvcm0v
d2luL0ZpbGVTeXN0ZW1XaW4uY3BwCiAgICAgcGxhdGZvcm0vd2luL0dESU9iamVjdENvdW50ZXIu
Y3BwCiAgICAgcGxhdGZvcm0vd2luL0dESVV0aWxpdGllcy5jcHAKICAgICBwbGF0Zm9ybS93aW4v
S2V5RXZlbnRXaW4uY3BwCkBAIC05Myw3ICs5Miw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09V
UkNFUwogICAgIHBsYXRmb3JtL3dpbi9NSU1FVHlwZVJlZ2lzdHJ5V2luLmNwcAogICAgIHBsYXRm
b3JtL3dpbi9NYWluVGhyZWFkU2hhcmVkVGltZXJXaW4uY3BwCiAgICAgcGxhdGZvcm0vd2luL1Bh
c3RlYm9hcmRXaW4uY3BwCi0gICAgcGxhdGZvcm0vd2luL1BhdGhXYWxrZXIuY3BwCiAgICAgcGxh
dGZvcm0vd2luL1BsYXRmb3JtTW91c2VFdmVudFdpbi5jcHAKICAgICBwbGF0Zm9ybS93aW4vUGxh
dGZvcm1TY3JlZW5XaW4uY3BwCiAgICAgcGxhdGZvcm0vd2luL1BvcHVwTWVudVdpbi5jcHAKQEAg
LTI0OCw3ICsyNDYsNiBAQCBpZiAoVVNFX0NGKQogICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09V
UkNFUwogICAgICAgICBsb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAogCi0g
ICAgICAgIHBsYXRmb3JtL2NmL0ZpbGVTeXN0ZW1DRi5jcHAKICAgICAgICAgcGxhdGZvcm0vY2Yv
S2V5ZWREZWNvZGVyQ0YuY3BwCiAgICAgICAgIHBsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNw
cAogICAgICAgICBwbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5k
ZXggMjc0YjA4ODAwZTZiZGU0M2ZhN2I1MWFmYWY3NjRjYTFhOTQ3MGQ2Yy4uMGExZDY5ODcwYzBh
OTQ2NjllZTdlYzlmMWJhN2QyYzc3ODEzYzcwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE2MDAsNyAr
MTYwMCw2IEBAIHBsYXRmb3JtL0ZpbGVDaG9vc2VyLmNwcAogcGxhdGZvcm0vRmlsZUhhbmRsZS5j
cHAKIHBsYXRmb3JtL0ZpbGVNb25pdG9yLmNwcAogcGxhdGZvcm0vRmlsZVN0cmVhbS5jcHAKLXBs
YXRmb3JtL0ZpbGVTeXN0ZW0uY3BwCiBwbGF0Zm9ybS9HZW5lcmljVGFza1F1ZXVlLmNwcAogcGxh
dGZvcm0vTGF5b3V0VW5pdC5jcHAKIHBsYXRmb3JtL0xlbmd0aC5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29j
b2EudHh0CmluZGV4IDBlMTViOTA0ZWFkMmQ5ZDg1OTNlNTBmYTQyMDA4MzVhNDMwYjk1NjguLmMy
NDE4NWYxNGVlN2FmNjYwOGQyYTQzY2UwNjY0OWNhMWYwNTUyZGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0Nv
Y29hLnR4dApAQCAtMTgxLDcgKzE4MSw2IEBAIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1Nlc3Np
b25NYWMuY3BwCiBwbGF0Zm9ybS9hdWRpby9tYWMvQ0FSaW5nQnVmZmVyLmNwcAogcGxhdGZvcm0v
YXVkaW8vbWFjL0ZGVEZyYW1lTWFjLmNwcAogCi1wbGF0Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3Bw
CiBwbGF0Zm9ybS9jZi9LZXllZERlY29kZXJDRi5jcHAKIHBsYXRmb3JtL2NmL0tleWVkRW5jb2Rl
ckNGLmNwcAogcGxhdGZvcm0vY2YvTWFpblRocmVhZFNoYXJlZFRpbWVyQ0YuY3BwCkBAIC0xOTMs
NyArMTkyLDYgQEAgcGxhdGZvcm0vY29jb2EvQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyQ29j
b2EubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9jb2NvYS9Db3JlVmlkZW9Tb2Z0TGluay5jcHAKIHBs
YXRmb3JtL2NvY29hL0RhdGFEZXRlY3RvcnNDb3JlU29mdExpbmsubW0KIHBsYXRmb3JtL2NvY29h
L0ZpbGVNb25pdG9yQ29jb2EubW0KLXBsYXRmb3JtL2NvY29hL0ZpbGVTeXN0ZW1Db2NvYS5tbQog
cGxhdGZvcm0vY29jb2EvS2V5RXZlbnRDb2NvYS5tbQogcGxhdGZvcm0vY29jb2EvTG9jYWxpemVk
U3RyaW5nc0NvY29hLm1tCiBwbGF0Zm9ybS9jb2NvYS9NSU1FVHlwZVJlZ2lzdHJ5Q29jb2EubW0K
QEAgLTQ0Niw3ICs0NDQsNiBAQCBwbGF0Zm9ybS9tYWMvQ3Vyc29yTWFjLm1tCiBwbGF0Zm9ybS9t
YWMvRHJhZ0RhdGFNYWMubW0KIHBsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW0KIHBsYXRmb3Jt
L21hYy9FdmVudExvb3BNYWMubW0KLXBsYXRmb3JtL21hYy9GaWxlU3lzdGVtTWFjLm1tCiBwbGF0
Zm9ybS9tYWMvS2V5RXZlbnRNYWMubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9tYWMvUGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlTWFjLm1tIEBuby11bmlmeQogcGxhdGZvcm0vbWFjL0xvY2FsQ3VycmVu
dEdyYXBoaWNzQ29udGV4dC5tbQpAQCAtNTQxLDggKzUzOCw2IEBAIHBsYXRmb3JtL25ldHdvcmsv
bWFjL1VUSVV0aWxpdGllcy5tbQogcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNl
SGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9X
ZWJDb3JlVVJMUmVzcG9uc2UubW0KIAotcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNw
cAotCiBwbGF0Zm9ybS90ZXh0L2NmL0h5cGhlbmF0aW9uQ0YuY3BwCiAKIHBsYXRmb3JtL3RleHQv
aW9zL0xvY2FsaXplZERhdGVDYWNoZS5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDJjNDZiM2RlZTU3NDhmZWY1OWIwZDM0ZDQ5
NTMyNzA5YTNiYTZjYTQuLmEzNWYwMmY0ZTQwMTdhYzYyYTJhMWI5MDU5MWUxYzczZGRjNTA4MDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTEyNDUsNyArMTI0NSw2IEBACiAJCTQ2NzMwMjAyMUM0RUZFNzgwMEJDQjM1NyAvKiBJ
Z25vcmVPcGVuc0R1cmluZ1VubG9hZENvdW50SW5jcmVtZW50ZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NzMwMjAxMUM0RUZFNjYwMEJDQjM1NyAv
KiBJZ25vcmVPcGVuc0R1cmluZ1VubG9hZENvdW50SW5jcmVtZW50ZXIuaCAqLzsgfTsKIAkJNDY4
MkQyMDAxRjc5NzgzMDAwQzg2M0RCIC8qIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgyRDFGRjFGNzk3ODIz
MDBDODYzREIgLyogU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjgzNDRFMDFFRERGQUFBMDBCNzc5NUIg
LyogRE9NUmVjdExpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ2ODM0NERFMUVEREZBNUYwMEI3Nzk1QiAvKiBET01SZWN0TGlzdC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTQ2ODlGMUFGMTI2N0JB
RTEwMEU4RDM4MCAvKiBGaWxlTWV0YWRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODlGMUFFMTI2N0JBRTEwMEU4RDM4MCAvKiBGaWxlTWV0YWRh
dGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0
NkI2M0Y2QzFDNkU4RDE5MDAyRTkxNEIgLyogSlNFdmVudFRhcmdldEN1c3RvbS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCNjNGNkIxQzZFOENERjAw
MkU5MTRCIC8qIEpTRXZlbnRUYXJnZXRDdXN0b20uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkI5NTE5NTIwN0Q2MzM0MDBBN0QyREQgLyogQWJz
dHJhY3RET01XaW5kb3cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ2Qjk1MThBMjA3RDYzMjgwMEE3RDJERCAvKiBBYnN0cmFjdERPTVdpbmRvdy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2Qjk1MTk2
MjA3RDYzM0EwMEE3RDJERCAvKiBBYnN0cmFjdEZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkI5NTE4RjIwN0Q2MzJCMDBBN0QyREQgLyogQWJz
dHJhY3RGcmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC0xNDM3LDcgKzE0MzYsNiBAQAogCQk1MTQzQjI2MzFEREQxNTIwMDAxNEZBQzYgLyog
TGlua0ljb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxNDNCMjYyMURERDE0OTAwMDE0RkFDNiAvKiBMaW5rSWNvbi5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxNDVCMTBBMUJDNDhFMkUwMEU4NjIx
OSAvKiBJREJSZXNvdXJjZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxNDVCMTA4MUJDNDg5MEIwMEU4NjIxOSAvKiBJREJSZXNvdXJj
ZUlkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk1MTQ4NDUzRjFCQjlEMDdFMDA2QTcyRUQgLyogSURCRXJyb3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNDg0NTNEMUJCOUQwNzYwMDZB
NzJFRCAvKiBJREJFcnJvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07Ci0JCTUxNEIzRjczMEM3MjIwNDcwMDA1MzBERiAvKiBGaWxlU3lzdGVtLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTRCM0Y3MjBDNzIy
MDQ3MDAwNTMwREYgLyogRmlsZVN5c3RlbS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTUxNEM3NjRDMENFOTIzNEUwMDdFRjNDRCAvKiBBdXRoZW50
aWNhdGlvbk1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTE0Qzc2NDIwQ0U5MjM0RTAwN0VGM0NEIC8qIEF1dGhlbnRpY2F0aW9uTWFjLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE0Qzc2NEUwQ0U5
MjM0RTAwN0VGM0NEIC8qIEZvcm1EYXRhU3RyZWFtTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTRDNzY0NDBDRTkyMzRFMDA3RUYzQ0QgLyogRm9y
bURhdGFTdHJlYW1NYWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk1MTRDNzY2RTBDRTkyM0ExMDA3RUYzQ0QgLyogQ3JlZGVudGlhbC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0Qzc2NTkwQ0U5MjNB
MTAwN0VGM0NEIC8qIENyZWRlbnRpYWwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtNzcwNyw3ICs3NzA1LDYgQEAKIAkJNDY4MzQ0REMxRURERkE1
RjAwQjc3OTVCIC8qIERPTVJlY3RMaXN0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBET01SZWN0TGlzdC5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODM0NEREMUVEREZBNUYwMEI3Nzk1QiAvKiBET01S
ZWN0TGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01SZWN0TGlzdC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODM0NERFMUVEREZBNUYwMEI3Nzk1QiAvKiBET01SZWN0
TGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBET01SZWN0TGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk0Njg5RjFBRTEyNjdCQUUxMDBFOEQzODAgLyogRmlsZU1ldGFkYXRhLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbGVNZXRhZGF0YS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0NkI2M0Y2QjFDNkU4Q0RGMDAyRTkxNEIgLyogSlNFdmVudFRh
cmdldEN1c3RvbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0V2ZW50VGFy
Z2V0Q3VzdG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2Qjk1MThBMjA3RDYz
MjgwMEE3RDJERCAvKiBBYnN0cmFjdERPTVdpbmRvdy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBBYnN0cmFjdERPTVdpbmRvdy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0NkI5NTE4QzIwN0Q2MzI5MDBBN0QyREQgLyogUmVtb3RlRnJhbWUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlRnJhbWUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtODExMCw4ICs4MTA3LDYgQEAKIAkJNTE0NUIxMDgxQkM0ODkw
QjAwRTg2MjE5IC8qIElEQlJlc291cmNlSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBJREJSZXNvdXJjZUlkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTE0ODQ1M0MxQkI5RDA3NjAwNkE3MkVEIC8qIElEQkVycm9yLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElEQkVycm9yLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0ODQ1M0QxQkI5RDA3NjAwNkE3MkVEIC8qIElEQkVycm9y
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElEQkVycm9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUxNEIzRjcyMEM3MjIwNDcwMDA1MzBERiAvKiBGaWxlU3lz
dGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbGVTeXN0ZW0uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTE0QjNGNzUwQzcyMjA1NTAwMDUzMERGIC8qIEZp
bGVTeXN0ZW1Db2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IEZpbGVTeXN0ZW1Db2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0Qzc2
MzUwQ0U5MjI1RTAwN0VGM0NEIC8qIEpTU1FMRXJyb3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNTUUxFcnJvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUxNEM3NjM2MENFOTIyNUUwMDdFRjNDRCAvKiBKU1NRTFRyYW5zYWN0aW9uLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU1FMVHJhbnNhY3Rpb24uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTRDNzY0MjBDRTkyMzRFMDA3RUYzQ0Qg
LyogQXV0aGVudGljYXRpb25NYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
QXV0aGVudGljYXRpb25NYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTgxNTAs
OCArODE0NSw2IEBACiAJCTUxNUUzN0Y0MUZBQTkzODgwMEQ3RjIyQSAvKiBTZXJ2aWNlV29ya2Vy
VHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VydmljZVdvcmtlclR5
cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNUY3OTUxMUNGQ0EzQzcwMEND
RUQ5MyAvKiBXZWJDb3JlQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV2ViQ29yZUNyb3NzVGhyZWFkQ29waWVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE1Rjc5NTIxQ0ZDQTNDNzAwQ0NFRDkzIC8qIFdlYkNvcmVD
cm9zc1RocmVhZENvcGllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJD
b3JlQ3Jvc3NUaHJlYWRDb3BpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTE2
MDMwMEEwQ0M0MjUxMjAwQzhBQzI1IC8qIEZpbGVTeXN0ZW1QT1NJWC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxlU3lzdGVtUE9TSVguY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk1MTYwMzA2QjBDQzQzNjIzMDBDOEFDMjUgLyogRmlsZVN5c3Rl
bUNGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZpbGVTeXN0ZW1D
Ri5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNjA3MTJCMUJEODMwNTMwMERC
QzRGMiAvKiBUcmFuc2FjdGlvbk9wZXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBUcmFuc2FjdGlvbk9wZXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1MTYwNzEyQzFCRDgzMDcyMDBEQkM0RjIgLyogSURCT2JqZWN0U3RvcmVJbmZvLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElEQk9iamVjdFN0b3JlSW5mby5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNjA3MTJEMUJEODMwNzIwMERCQzRG
MiAvKiBJREJPYmplY3RTdG9yZUluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSURCT2JqZWN0U3RvcmVJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
MTI1Myw3ICsxMTI0Niw2IEBACiAJCUExQzJDNTc1MUZBMjg1MTYwMEJBNDZGQSAvKiBQYXltZW50
U2Vzc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYXltZW50U2Vzc2lvbi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExQzdGQUExMTMzQTVEMzUwMEQ2NzMyRCAvKiBKU1hQ
YXRoUmVzdWx0Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTWFBhdGhSZXN1bHRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
MUNCRUY2MzFGOUYxMTI5MDAyOERFN0MgLyogTW9ja1BheW1lbnRNZXRob2QuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTW9ja1BheW1lbnRNZXRob2QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
QTFDQzExNjIxRTQ5M0QwMTAwRUZBNjlDIC8qIEZpbGVTeXN0ZW1NYWMubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBGaWxlU3lzdGVtTWFjLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBMUNDNTY0QzFGNDYxNDUwMDBBNDU1NUIgLyogSlNQYXltZW50
TWV0aG9kRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1BheW1lbnRN
ZXRob2REYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExQ0M1NjREMUY0NjE0
NTEwMEE0NTU1QiAvKiBKU1BheW1lbnRNZXRob2REYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTUGF5bWVudE1ldGhvZERhdGEuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBMUNDNTY0RTFGNDYxNDUyMDBBNDU1NUIgLyogSlNQYXltZW50Q29t
cGxldGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQYXltZW50Q29tcGxl
dGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzNDQwLDcgKzEzNDMyLDYgQEAK
IAkJQzU1OTJGNzcxQTkyQUEyODAwMUY4ODYyIC8qIENoYXJhY3RlclByb3BlcnRpZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2hhcmFjdGVyUHJvcGVydGllcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNTVDN0JBMDE3MThBRkJBMDAxMzI3RTQgLyogUmVu
ZGVyVGhlbWVJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBS
ZW5kZXJUaGVtZUlPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzU3MkVFMUQx
MjAxQzlCQzAwN0Q4RjgyIC8qIEpTSURCSW5kZXguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNJREJJbmRleC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDNTdG
RURFMDEyMTJFRTlDMDA5N0JFNjUgLyogRmlsZVN5c3RlbS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBGaWxlU3lzdGVtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQzU4NUE2NjAxMUQ0RkFDNTAwNEMzRTRCIC8qIElEQkJpbmRpbmdVdGlsaXRpZXMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSURCQmluZGluZ1V0aWxp
dGllcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1ODVBNjYxMTFENEZBQzUw
MDRDM0U0QiAvKiBJREJCaW5kaW5nVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IElEQkJpbmRpbmdVdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQzU4NUE2NkIxMUQ0RkIwNzAwNEMzRTRCIC8qIEpTSURCRGF0YWJhc2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNJREJEYXRhYmFzZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTY3NzQsNyArMTY3NjUsNiBAQAogCQkxQUU0MkY2NzBBQTRCOENC
MDBDODYxMkQgLyogY2YgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KAotCQkJCTUxNjAzMDZCMENDNDM2MjMwMEM4QUMyNSAvKiBGaWxlU3lzdGVtQ0YuY3BwICovLAog
CQkJCTUxN0E2M0JGMUI3NDMxN0UwMEU3RENEQyAvKiBLZXllZERlY29kZXJDRi5jcHAgKi8sCiAJ
CQkJNTE3QTYzQzAxQjc0MzE3RTAwRTdEQ0RDIC8qIEtleWVkRGVjb2RlckNGLmggKi8sCiAJCQkJ
NTE3QTYzQzExQjc0MzE3RTAwRTdEQ0RDIC8qIEtleWVkRW5jb2RlckNGLmNwcCAqLywKQEAgLTE3
MTY5LDEwICsxNzE1OSwxMCBAQAogCQkJCTFDRUNCM0I2MjFGNTBBQzcwMEY0NDU0MiAvKiBXSExT
TE1ldGFsQ29kZUdlbmVyYXRvci5oICovLAogCQkJCTFDRUNCM0I4MjFGNTBEMTAwMEY0NDU0MiAv
KiBXSExTTE5hdGl2ZUZ1bmN0aW9uV3JpdGVyLmNwcCAqLywKIAkJCQkxQ0VDQjNCOTIxRjUwRDEw
MDBGNDQ1NDIgLyogV0hMU0xOYXRpdmVGdW5jdGlvbldyaXRlci5oICovLAotCQkJCTFDRUNCM0Ix
MjFGMkI5ODUwMEY0NDU0MiAvKiBXSExTTFR5cGVOYW1lci5jcHAgKi8sCi0JCQkJMUNFQ0IzQjAy
MUYyQjk4NTAwRjQ0NTQyIC8qIFdITFNMVHlwZU5hbWVyLmggKi8sCiAJCQkJMUNFQ0IzQzYyMUY1
OUM4NzAwRjQ0NTQyIC8qIFdITFNMTmF0aXZlVHlwZVdyaXRlci5jcHAgKi8sCiAJCQkJMUNFQ0Iz
QzcyMUY1OUM4NzAwRjQ0NTQyIC8qIFdITFNMTmF0aXZlVHlwZVdyaXRlci5oICovLAorCQkJCTFD
RUNCM0IxMjFGMkI5ODUwMEY0NDU0MiAvKiBXSExTTFR5cGVOYW1lci5jcHAgKi8sCisJCQkJMUNF
Q0IzQjAyMUYyQjk4NTAwRjQ0NTQyIC8qIFdITFNMVHlwZU5hbWVyLmggKi8sCiAJCQkpOwogCQkJ
cGF0aCA9IE1ldGFsOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTE4NzM2LDE0ICsx
ODcyNiw2IEBACiAJCQlwYXRoID0gbWFjOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJ
fTsKLQkJNTE2MDMwMDkwQ0M0MjQ1NDAwQzhBQzI1IC8qIHBvc2l4ICovID0gewotCQkJaXNhID0g
UEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQk1MTYwMzAwQTBDQzQyNTEyMDBDOEFDMjUg
LyogRmlsZVN5c3RlbVBPU0lYLmNwcCAqLywKLQkJCSk7Ci0JCQlwYXRoID0gcG9zaXg7Ci0JCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9OwogCQk1MTYwRjQ5MjBCMEFBNzE1MDBDMUQyQUYg
LyogbWFjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTIw
MTA0LDcgKzIwMDg2LDYgQEAKIAkJCQlBN0NGQjNENDBCN0VEMTE4MDA3MEMzMkQgLyogRHJhZ0lt
YWdlTWFjLm1tICovLAogCQkJCUUxQkE2NkYwMTc0MkJEODYwMEMyMDI1MSAvKiBEeW5hbWljTGlu
a2VySW50ZXJwb3NpbmcuaCAqLywKIAkJCQkxQ0ExOUUwMzBEQzI1NTk1MDA2NUE5OTQgLyogRXZl
bnRMb29wTWFjLm1tICovLAotCQkJCUExQ0MxMTYyMUU0OTNEMDEwMEVGQTY5QyAvKiBGaWxlU3lz
dGVtTWFjLm1tICovLAogCQkJCTkzNUM0NzZFMDlBQzRENzMwMEE2QUFCNCAvKiBLZXlFdmVudE1h
Yy5tbSAqLywKIAkJCQlGNDRBNUY1NzFGRUQzODMwMDA3RjU5NDQgLyogTGVnYWN5TlNQYXN0ZWJv
YXJkVHlwZXMuaCAqLywKIAkJCQkwNkU4MUVENjBBQjVENUU5MDBDODc4MzcgLyogTG9jYWxDdXJy
ZW50R3JhcGhpY3NDb250ZXh0LmggKi8sCkBAIC0yMjU1Miw3ICsyMjUzMyw2IEBACiAJCQkJN0M3
OTQxRTMxQzU2QzI5MzAwQTRDNThFIC8qIERhdGFEZXRlY3RvcnNDb3JlU29mdExpbmsuaCAqLywK
IAkJCQk3Qzc5NDFFMjFDNTZDMjkzMDBBNEM1OEUgLyogRGF0YURldGVjdG9yc0NvcmVTb2Z0TGlu
ay5tbSAqLywKIAkJCQk3QTA5Q0VGMDFGMDFEMUY3MDBFOTNCREIgLyogRmlsZU1vbml0b3JDb2Nv
YS5tbSAqLywKLQkJCQk1MTRCM0Y3NTBDNzIyMDU1MDAwNTMwREYgLyogRmlsZVN5c3RlbUNvY29h
Lm1tICovLAogCQkJCUE1Qzk3NENGMTE0ODVGRjEwMDY2RjJBQiAvKiBLZXlFdmVudENvY29hLmgg
Ki8sCiAJCQkJQTVDOTc0RDAxMTQ4NUZGMTAwNjZGMkFCIC8qIEtleUV2ZW50Q29jb2EubW0gKi8s
CiAJCQkJMUE0ODMyQjIxQTk1M0JBNjAwOEI0REZFIC8qIExvY2FsaXplZFN0cmluZ3NDb2NvYS5t
bSAqLywKQEAgLTI1Mzk1LDcgKzI1Mzc1LDYgQEAKIAkJCQkwNzIyMUI5MjE3Q0YwQUQ0MDA4NDhF
NTEgLyogbWVkaWFzdHJlYW0gKi8sCiAJCQkJNTlDNzdGMTAxMDU0NTkxQzAwNTA2MTA0IC8qIG1v
Y2sgKi8sCiAJCQkJNjU2Qjg0RDcwQUVBMUNFOTAwQTA5NUI0IC8qIG5ldHdvcmsgKi8sCi0JCQkJ
NTE2MDMwMDkwQ0M0MjQ1NDAwQzhBQzI1IC8qIHBvc2l4ICovLAogCQkJCTFBMkU2RTU2MENDNTUx
RTAwMDRBMjA2MiAvKiBzcWwgKi8sCiAJCQkJQjJDM0Q5RUMwRDAwNkMxRDAwRUY2RjI2IC8qIHRl
eHQgKi8sCiAJCQkJRTE4ODIzNUYyMDMxRjUwRjAwQjQyREYzIC8qIHZyICovLApAQCAtMjU0NDAs
MTQgKzI1NDE5LDExIEBACiAJCQkJMDY2Qzc3MkEwQUI2MDNCNzAwMjM4Q0M0IC8qIEZpbGVDaG9v
c2VyLmggKi8sCiAJCQkJNTM1MUQ0QUUxREY5MTZBQzAwODAxMENEIC8qIEZpbGVIYW5kbGUuY3Bw
ICovLAogCQkJCTUzNTFENEFGMURGOTE2QUMwMDgwMTBDRCAvKiBGaWxlSGFuZGxlLmggKi8sCi0J
CQkJNDY4OUYxQUUxMjY3QkFFMTAwRThEMzgwIC8qIEZpbGVNZXRhZGF0YS5oICovLAogCQkJCTdB
MDlDRUVCMUYwMUNDOTMwMEU5M0JEQiAvKiBGaWxlTW9uaXRvci5jcHAgKi8sCiAJCQkJN0EwOUNF
RUMxRjAxQ0M5MzAwRTkzQkRCIC8qIEZpbGVNb25pdG9yLmggKi8sCiAJCQkJMkVGMUJGRTgxMjFD
OUY0MjAwQzI3NjI3IC8qIEZpbGVTdHJlYW0uY3BwICovLAogCQkJCTJFRjFCRkU5MTIxQzlGNDIw
MEMyNzYyNyAvKiBGaWxlU3RyZWFtLmggKi8sCiAJCQkJMkVGMUJGRjgxMjFDQjBDRTAwQzI3NjI3
IC8qIEZpbGVTdHJlYW1DbGllbnQuaCAqLywKLQkJCQlDNTdGRURFMDEyMTJFRTlDMDA5N0JFNjUg
LyogRmlsZVN5c3RlbS5jcHAgKi8sCi0JCQkJNTE0QjNGNzIwQzcyMjA0NzAwMDUzMERGIC8qIEZp
bGVTeXN0ZW0uaCAqLywKIAkJCQlCQzA3M0JBOTBDMzk5QjFGMDAwRjU5NzkgLyogRmxvYXRDb252
ZXJzaW9uLmggKi8sCiAJCQkJQ0Q0QkU1MjkxQ0UxMzQyNTAwOUQ4N0RBIC8qIEdlbmVyaWNUYXNr
UXVldWUuY3BwICovLAogCQkJCUNENjJGQjk0MUFGMDE4RTcwMDEyRUQ3RCAvKiBHZW5lcmljVGFz
a1F1ZXVlLmggKi8sCkBAIC0yOTEzNiw3ICsyOTExMiw2IEBACiAJCQkJRjU1QjNEQkUxMjUxRjEy
RDAwM0VGMjY5IC8qIEZpbGVJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3NkQ2Qzg2
MTIyQjhBM0QwMDFGRDFGNyAvKiBGaWxlTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODM1RDU0
QzUxRjRERTUzODAwRTYwNjcxIC8qIEZpbGVMaXN0Q3JlYXRvci5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJNDY4OUYxQUYxMjY3QkFFMTAwRThEMzgwIC8qIEZpbGVNZXRhZGF0YS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJN0EwOUNFRjExRjAyMDY5QjAwRTkzQkRCIC8qIEZpbGVNb25pdG9yLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5NzZENkM4OTEyMkI4QTNEMDAxRkQxRjcgLyogRmlsZVJlYWRlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMkU3NTg0MUUxMjc3OUFEQTAwNjI2MjhCIC8qIEZpbGVSZWFkZXJM
b2FkZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMjkxNDQsNyArMjkxMTksNiBAQAogCQkJCTJFREYz
NjlEMTIyQzk0QjQwMDJGN0Q0RSAvKiBGaWxlUmVhZGVyU3luYy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMkVGMUJGRUIxMjFDOUY0MjAwQzI3NjI3IC8qIEZpbGVTdHJlYW0uaCBpbiBIZWFkZXJzICov
LAogCQkJCTJFRjFCRkY5MTIxQ0IwQ0UwMEMyNzYyNyAvKiBGaWxlU3RyZWFtQ2xpZW50LmggaW4g
SGVhZGVycyAqLywKLQkJCQk1MTRCM0Y3MzBDNzIyMDQ3MDAwNTMwREYgLyogRmlsZVN5c3RlbS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJODNGQjMzNzExRjUwOEE1NDAwOTg2RTU0IC8qIEZpbGVTeXN0
ZW1EaXJlY3RvcnlFbnRyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODMwMzM1MDIxRjU0OTA1NzAw
NERGNzA3IC8qIEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTgzMDMzNTAzMUY1NDkwNUEwMDRERjcwNyAvKiBGaWxlU3lzdGVtRW50cmllc0NhbGxiYWNrLmgg
aW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0dD
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIu
Y3BwCmluZGV4IGQyNTFkMmVjZTFmMThiMjQwYTg4YmJmYjNhMjJjMmMyNGY4MGY2Y2QuLjhhODNj
NGI2ZjZmNTk2MDdkZmE3NzA0ODQyOWQwMmIxZTQyOTczM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvR0NDb250cm9sbGVyLmNwcApAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUg
IkdDQ29udHJvbGxlci5oIgogCiAjaW5jbHVkZSAiQ29tbW9uVk0uaCIKLSNpbmNsdWRlICJGaWxl
U3lzdGVtLmgiCiAjaW5jbHVkZSAiSlNIVE1MRG9jdW1lbnQuaCIKICNpbmNsdWRlICJMb2NhdGlv
bi5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXAuaD4KQEAgLTM2LDYgKzM1LDcgQEAK
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9WTS5oPgogI2luY2x1ZGUgPHBhbC9Mb2dnaW5nLmg+
CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5o
PgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJF
eHRyYXMuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0
ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW0uY3BwCmluZGV4IGEz
ZWNjNWE1YzllMGYzMGQ3NjAzMjgxN2YwZDQ2Mzk2MzNmZjFhOGIuLjU5Zjk3ODZlZDhjZmE2NDll
MDdkZGI3ZDg4NGFjOTI0MzI5NzYzOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
YXRhVHJhbnNmZXJJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVy
SXRlbS5jcHAKQEAgLTM2LDExICszNiwxMSBAQAogI2luY2x1ZGUgIkRhdGFUcmFuc2Zlckl0ZW1M
aXN0LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJGaWxlLmgiCi0jaW5jbHVk
ZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5oIgog
I2luY2x1ZGUgIkZpbGVTeXN0ZW1GaWxlRW50cnkuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRp
b25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU3RyaW5nQ2FsbGJhY2suaCIKKyNpbmNsdWRlIDx3dGYv
RmlsZVN5c3RlbS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KaW5kZXggOTcy
MTdmMWQ3NWQwZTU0NmZjZjg0MzFlMmQ0YWY4YmE1NDNhYjYxYy4uMjU0YTM2OGZhNzc0YWQ2Mzcy
ZDQ2ZjE1M2M1YTk1YzRlZTI0MjhjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KQEAgLTM3LDcgKzM3LDYgQEAKICNp
bXBvcnQgIkVkaXRvci5oIgogI2ltcG9ydCAiRWRpdG9yQ2xpZW50LmgiCiAjaW1wb3J0ICJGaWxl
LmgiCi0jaW1wb3J0ICJGaWxlU3lzdGVtLmgiCiAjaW1wb3J0ICJGcmFtZS5oIgogI2ltcG9ydCAi
RnJhbWVMb2FkZXIuaCIKICNpbXBvcnQgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCkBAIC02NSw2ICs2
NCw3IEBACiAjaW1wb3J0ICJXZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMuaCIKICNpbXBvcnQg
Im1hcmt1cC5oIgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0F0dHJpYnV0ZWRTdHJpbmdTUEku
aD4KKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcu
aD4KICNpbXBvcnQgPHd0Zi9VUkxQYXJzZXIuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9GaWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAKaW5k
ZXggYjczZmNkZTc5ZjQ2MDc5MmM5MjZjMDc1ZmJhYWY2NjQ4YTcyNDEzMS4uYWRiMzBjOTMzY2Ey
ZmIyNWNlZjVkMGNhNDEzNjU2MGJiYTZkODExNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9GaWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwCkBA
IC0yNywxMSArMjcsMTEgQEAKICNpbmNsdWRlICJGaWxlLmgiCiAKICNpbmNsdWRlICJCbG9iVVJM
LmgiCi0jaW5jbHVkZSAiRmlsZU1ldGFkYXRhLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgog
I2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlQmxvYlJl
Z2lzdHJ5LmgiCiAjaW5jbHVkZSA8d3RmL0RhdGVNYXRoLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVN
ZXRhZGF0YS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9G
aWxlQ29jb2EubW0KaW5kZXggMjBiZTZmN2FlZGVjYTc1MzQ4MzU2M2IxYmU0ZjkwNjJmYTQzOGEw
My4uNjY0ZjlhNTM2MTNkZjI2Y2ExN2M3MDdjMjFiNTBjNjQ2NDUyMDRlNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9GaWxlQ29jb2EubW0KQEAgLTI4LDcgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShGSUxF
X1JFUExBQ0VNRU5UKQogCi0jaW1wb3J0ICJGaWxlU3lzdGVtLmgiCisjaW1wb3J0IDx3dGYvRmls
ZVN5c3RlbS5oPgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgPE1vYmlsZUNv
cmVTZXJ2aWNlcy9Nb2JpbGVDb3JlU2VydmljZXMuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1
dFR5cGUuY3BwCmluZGV4IDAzYWYzYTk2MzQ5NGZhZjAwMTJlMjFhOTM4ZjUxOTE3ODAzMDg1MDgu
Ljk5OGY5ZWZhOTRlMmE3NTIxNmJiNGYzOWE3OTY4NjQ5YzEzMTdkZDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9GaWxlSW5wdXRUeXBlLmNwcApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIkZpbGUu
aCIKICNpbmNsdWRlICJGaWxlTGlzdC5oIgogI2luY2x1ZGUgIkZpbGVMaXN0Q3JlYXRvci5oIgot
I2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJGb3JtQ29udHJvbGxlci5oIgogI2lu
Y2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgpAQCAtNDMsNiAr
NDIsNyBAQAogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgog
I2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0
ZW0uaD4KICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9U
eXBlQ2FzdHMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVMaXN0Q3JlYXRvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0ZpbGVMaXN0Q3JlYXRvci5jcHAKaW5kZXggNzZmNTY1OTcwYWQxZGQ4ZDgxMDZj
MjVhNTc5ZTQ1OTFiYWJkNDliOC4uMTU1NmZjMjk5Y2IyMzczYjBjNTk4OTUyMGE3MmMzMTE2Y2Uz
OWVhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlTGlzdENyZWF0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUxpc3RDcmVhdG9yLmNwcApAQCAtMjgsOSAr
MjgsOSBAQAogCiAjaW5jbHVkZSAiRmlsZUNob29zZXIuaCIKICNpbmNsdWRlICJGaWxlTGlzdC5o
IgotI2luY2x1ZGUgIkZpbGVNZXRhZGF0YS5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNp
bmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZU1ldGFk
YXRhLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVIb3N0LmNwcAppbmRleCA3NTVmMWEyOWFkN2M1N2NjYzNiZWE1ZWZhMjU1YjY1NmJi
ZGNjMzA5Li44YTMzZTg4NzBjYzM2YmM2ZGUyZmNhOGQxZDU4YzRjY2E2YjhmM2VmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
SG9zdC5jcHAKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgog
I2luY2x1ZGUgIkRPTUFwcGxpY2F0aW9uQ2FjaGUuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgi
Ci0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAi
RnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgpAQCAtNDQsNiAr
NDMsNyBAQAogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlNldHRpbmdz
LmgiCiAjaW5jbHVkZSAiU3VicmVzb3VyY2VMb2FkZXIuaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5
c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9VVUlELmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UuY3BwCmluZGV4IGU4MTQ4M2MzNjIzY2QwMzQyNDQ0ODRjZDBmNWZkYzkyNDk1
NWFlMzIuLjgyYWRmZjMwMzM1YTJlMmJiOWNhYTdiNGY2Njg4NGQwOTBlNzk1NjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlLmNwcApAQCAtMzAsMTIgKzMwLDEyIEBACiAjaW5jbHVkZSAiQXBwbGljYXRpb25D
YWNoZUdyb3VwLmgiCiAjaW5jbHVkZSAiQXBwbGljYXRpb25DYWNoZUhvc3QuaCIKICNpbmNsdWRl
ICJBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAj
aW5jbHVkZSAiU1FMaXRlRGF0YWJhc2VUcmFja2VyLmgiCiAjaW5jbHVkZSAiU1FMaXRlU3RhdGVt
ZW50LmgiCiAjaW5jbHVkZSAiU1FMaXRlVHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlICJTZWN1cml0
eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luRGF0YS5oIgorI2luY2x1ZGUgPHd0
Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVVVJRC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXgg
ZGIxNzdlOGRhZThjNjBlNmU3MTgyMjlmYjNjMDNkMzZkZmZkNTQ1Mi4uMjZhMjU4MTljMWE3NzQx
ZDEyY2Q5NjQ2MjlhZDE1OTc5OTg2ZDBkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC01MSw3ICs1
MSw2IEBACiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5j
bHVkZSAiRXh0ZW5zaW9uU3R5bGVTaGVldHMuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAj
aW5jbHVkZSAiRm9jdXNDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNp
bmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgpAQCAtMTIyLDYgKzEyMSw3IEBACiAjaW5jbHVk
ZSAiV2ViR0xTdGF0ZVRyYWNrZXIuaCIKICNpbmNsdWRlICJXaGVlbEV2ZW50RGVsdGFGaWx0ZXIu
aCIKICNpbmNsdWRlICJXaWRnZXQuaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGli
RXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2VjdXJpdHlPcmlnaW4uY3BwCmluZGV4IGI1OGZhYWExNjdhOTY3MjZhYTIxMWZlMWYwMjc0YmM2
NmU5NjE2NWIuLjNhZDkyMWNjNTRkZTFmZWZlM2QxNTcxZjIyZTI1MzIxMmE4ZGUyMGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCkBAIC0zMCwxNSArMzAsMTUgQEAKICNp
bmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogCiAjaW5jbHVkZSAiQmxvYlVSTC5oIgotI2luY2x1
ZGUgIkZpbGVTeXN0ZW0uaCIKLSNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiU2NoZW1l
UmVnaXN0cnkuaCIKICNpbmNsdWRlICJTZWN1cml0eVBvbGljeS5oIgogI2luY2x1ZGUgIlRleHRF
bmNvZGluZy5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVCbG9iUmVnaXN0cnkuaCIKKyNpbmNsdWRl
IDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVk
ZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgor
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2VjdXJpdHlPcmlnaW5EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmln
aW5EYXRhLmNwcAppbmRleCAwNWY4YjE5ZGFlNTg3OWQwY2RmZGE3Yzc2NDllY2EyYjQ0YzM5OGE2
Li40MzBjYjhiMGIzYWMzNmNjYTk2MTFlMGExZjA5ZTM1YWUxMGIwZDljIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwCkBAIC0yNyw5ICsyNyw5IEBACiAjaW5j
bHVkZSAiU2VjdXJpdHlPcmlnaW5EYXRhLmgiCiAKICNpbmNsdWRlICJEb2N1bWVudC5oIgotI2lu
Y2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIlNlY3Vy
aXR5T3JpZ2luLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUhhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vRmlsZUhhbmRsZS5oCmluZGV4IGQxMTgzMDg2OTYzZDIxMjM3YjkwYjFhODI1ODViNzY1
YmJjMTNkZjIuLjUwZDgyNGNhZWU5YmExMjQwOTg0MzVlYTcyMTVkMTUxNzg3ZGJjZTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVIYW5kbGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9GaWxlSGFuZGxlLmgKQEAgLTI4LDkgKzI4LDggQEAKIAogI3ByYWdt
YSBvbmNlCiAKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCi0KICNpbmNsdWRlIDx3dGYvQXNzZXJ0
aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZU1ldGFkYXRhLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlTWV0YWRhdGEuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggN2Q4ODQ5NTNlNzY3NWQ5MmMwNjM4ZGVjYWQ4NTdjZDQxYTU5YzU2MS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9GaWxlTWV0YWRhdGEuaAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0g
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLXN0cnVjdCBGaWxlTWV0YWRhdGEgewotICAgIC8vIFRoZSBsYXN0IG1vZGlm
aWNhdGlvbiB0aW1lIG9mIHRoZSBmaWxlLCBpbiBzZWNvbmRzLgotICAgIFdhbGxUaW1lIG1vZGlm
aWNhdGlvblRpbWU7Ci0KLSAgICAvLyBUaGUgbGVuZ3RoIG9mIHRoZSBmaWxlIGluIGJ5dGVzLgot
ICAgIGxvbmcgbG9uZyBsZW5ndGg7Ci0KLSAgICBib29sIGlzSGlkZGVuOwotCi0gICAgZW51bSBj
bGFzcyBUeXBlIHsgRmlsZSwgRGlyZWN0b3J5LCBTeW1ib2xpY0xpbmsgfTsKLSAgICBUeXBlIHR5
cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9GaWxlU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Zp
bGVTdHJlYW0uY3BwCmluZGV4IGVhOTE3Mzc0YjRjOGI0YTRlYTA0M2MyOWFiZjU0MzE1OTIyYTg5
ZTIuLjg5M2JiMzM5NDc2Y2VmZGE4ZGYxMGJjOTIwYzBiMzU4MjUxOTE1N2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0uY3BwCkBAIC0yOSwxMCArMjksOCBAQAogICovCiAKICNp
bmNsdWRlICJjb25maWcuaCIKLQogI2luY2x1ZGUgIkZpbGVTdHJlYW0uaCIKIAotI2luY2x1ZGUg
IkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN0
cmVhbS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN0cmVhbS5oCmluZGV4IGFhMDEx
ZWEyM2UxODU0YzRiOTAyMDU5NjI1Mzc2MTNhMWFiNmUxMmIuLmEyZmI4ZTVmYWEyNTRiYzhlNWNj
ZTllMWI0YzY2MzFiOGQxYTA1NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0ZpbGVTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3RyZWFtLmgK
QEAgLTI4LDEwICsyOCw5IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgRmlsZVN0
cmVhbV9oCi0jZGVmaW5lIEZpbGVTdHJlYW1faAorI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJG
aWxlU3lzdGVtLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkBAIC02NCw1ICs2MywzIEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBGaWxlU3RyZWFtX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
RmlsZVN5c3RlbS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVkOWQzN2FhYTEz
MTYyODNkYTdlZjIyNDZiM2NhOTQxMGFkMjVkMjIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNjcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwNy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAo
QykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKLQotI2luY2x1ZGUgIkZpbGVNZXRhZGF0
YS5oIgotI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KLSNpbmNsdWRlIDx3dGYvU2NvcGUuaD4K
LSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
QnVpbGRlci5oPgotCi0jaWYgIU9TKFdJTkRPV1MpCi0jaW5jbHVkZSA8ZmNudGwuaD4KLSNpbmNs
dWRlIDxzeXMvbW1hbi5oPgotI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0jaW5jbHVkZSA8dW5pc3Rk
Lmg+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgRmlsZVN5c3Rl
bSB7Ci0KLS8vIFRoZSBmb2xsb3dpbmcgbG93ZXItQVNDSUkgY2hhcmFjdGVycyBuZWVkIGVzY2Fw
aW5nIHRvIGJlIHVzZWQgaW4gYSBmaWxlbmFtZQotLy8gYWNyb3NzIGFsbCBzeXN0ZW1zLCBpbmNs
dWRpbmcgV2luZG93czoKLS8vICAgICAtIFVucHJpbnRhYmxlIEFTQ0lJICgwMC0xRikKLS8vICAg
ICAtIFNwYWNlICAgICAgICAgICAgICgyMCkKLS8vICAgICAtIERvdWJsZSBxdW90ZSAgICAgICgy
MikKLS8vICAgICAtIFBlcmNlbnQgICAgICAgICAgICgyNSkgKGVzY2FwZWQgYmVjYXVzZSBpdCBp
cyBvdXIgZXNjYXBlIGNoYXJhY3RlcikKLS8vICAgICAtIEFzdGVyaXNrICAgICAgICAgICgyQSkK
LS8vICAgICAtIFNsYXNoICAgICAgICAgICAgICgyRikKLS8vICAgICAtIENvbG9uICAgICAgICAg
ICAgICgzQSkKLS8vICAgICAtIExlc3MtdGhhbiAgICAgICAgICgzQykKLS8vICAgICAtIEdyZWF0
ZXItdGhhbiAgICAgICgzRSkKLS8vICAgICAtIFF1ZXN0aW9uIE1hcmsgICAgICgzRikKLS8vICAg
ICAtIEJhY2tzbGFzaCAgICAgICAgICg1QykKLS8vICAgICAtIFBpcGUgICAgICAgICAgICAgICg3
QykKLS8vICAgICAtIERlbGV0ZSAgICAgICAgICAgICg3RikKLQotc3RhdGljIGNvbnN0IGJvb2wg
bmVlZHNFc2NhcGluZ1sxMjhdID0gewotICAgIC8qIDAwLTA3ICovIHRydWUsICB0cnVlLCAgdHJ1
ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAKLSAgICAvKiAwOC0wRiAqLyB0
cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgCi0K
LSAgICAvKiAxMC0xNyAqLyB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUs
ICB0cnVlLCAgdHJ1ZSwgCi0gICAgLyogMTgtMUYgKi8gdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1
ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsIAotCi0gICAgLyogMjAtMjcgKi8gdHJ1ZSwg
IGZhbHNlLCB0cnVlLCAgZmFsc2UsIGZhbHNlLCB0cnVlLCAgZmFsc2UsIGZhbHNlLCAKLSAgICAv
KiAyOC0yRiAqLyBmYWxzZSwgZmFsc2UsIHRydWUsICBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxz
ZSwgdHJ1ZSwgCi0gICAgCi0gICAgLyogMzAtMzcgKi8gZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFs
c2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAKLSAgICAvKiAzOC0zRiAqLyBmYWxzZSwg
ZmFsc2UsIHRydWUsICBmYWxzZSwgdHJ1ZSwgIGZhbHNlLCB0cnVlLCAgdHJ1ZSwgCi0gICAgCi0g
ICAgLyogNDAtNDcgKi8gZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwg
ZmFsc2UsIGZhbHNlLCAKLSAgICAvKiA0OC00RiAqLyBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxz
ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsCi0gICAgCi0gICAgLyogNTAtNTcgKi8gZmFs
c2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAKLSAg
ICAvKiA1OC01RiAqLyBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgIGZhbHNlLCBm
YWxzZSwgZmFsc2UsCi0gICAgCi0gICAgLyogNjAtNjcgKi8gZmFsc2UsIGZhbHNlLCBmYWxzZSwg
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAKLSAgICAvKiA2OC02RiAqLyBmYWxz
ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsCi0gICAg
Ci0gICAgLyogNzAtNzcgKi8gZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxz
ZSwgZmFsc2UsIGZhbHNlLCAKLSAgICAvKiA3OC03RiAqLyBmYWxzZSwgZmFsc2UsIGZhbHNlLCBm
YWxzZSwgdHJ1ZSwgIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgCi19OwotCi1zdGF0aWMgaW5saW5lIGJv
b2wgc2hvdWxkRXNjYXBlVUNoYXIoVUNoYXIgY2hhcmFjdGVyLCBVQ2hhciBwcmV2aW91c0NoYXJh
Y3RlciwgVUNoYXIgbmV4dENoYXJhY3RlcikKLXsKLSAgICBpZiAoY2hhcmFjdGVyIDw9IDEyNykK
LSAgICAgICAgcmV0dXJuIG5lZWRzRXNjYXBpbmdbY2hhcmFjdGVyXTsKLQotICAgIGlmIChVMTZf
SVNfTEVBRChjaGFyYWN0ZXIpICYmICFVMTZfSVNfVFJBSUwobmV4dENoYXJhY3RlcikpCi0gICAg
ICAgIHJldHVybiB0cnVlOwotCi0gICAgaWYgKFUxNl9JU19UUkFJTChjaGFyYWN0ZXIpICYmICFV
MTZfSVNfTEVBRChwcmV2aW91c0NoYXJhY3RlcikpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0g
ICAgcmV0dXJuIGZhbHNlOwotfQotCi1TdHJpbmcgZW5jb2RlRm9yRmlsZU5hbWUoY29uc3QgU3Ry
aW5nJiBpbnB1dFN0cmluZykKLXsKLSAgICB1bnNpZ25lZCBsZW5ndGggPSBpbnB1dFN0cmluZy5s
ZW5ndGgoKTsKLSAgICBpZiAoIWxlbmd0aCkKLSAgICAgICAgcmV0dXJuIGlucHV0U3RyaW5nOwot
Ci0gICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7Ci0gICAgcmVzdWx0LnJlc2VydmVDYXBhY2l0eShs
ZW5ndGgpOwotCi0gICAgVUNoYXIgcHJldmlvdXNDaGFyYWN0ZXI7Ci0gICAgVUNoYXIgY2hhcmFj
dGVyID0gMDsKLSAgICBVQ2hhciBuZXh0Q2hhcmFjdGVyID0gaW5wdXRTdHJpbmdbMF07Ci0gICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIHByZXZpb3Vz
Q2hhcmFjdGVyID0gY2hhcmFjdGVyOwotICAgICAgICBjaGFyYWN0ZXIgPSBuZXh0Q2hhcmFjdGVy
OwotICAgICAgICBuZXh0Q2hhcmFjdGVyID0gaSArIDEgPCBsZW5ndGggPyBpbnB1dFN0cmluZ1tp
ICsgMV0gOiAwOwotCi0gICAgICAgIGlmIChzaG91bGRFc2NhcGVVQ2hhcihjaGFyYWN0ZXIsIHBy
ZXZpb3VzQ2hhcmFjdGVyLCBuZXh0Q2hhcmFjdGVyKSkgewotICAgICAgICAgICAgaWYgKGNoYXJh
Y3RlciA8PSAyNTUpIHsKLSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCclJyk7Ci0gICAg
ICAgICAgICAgICAgYXBwZW5kQnl0ZUFzSGV4KGNoYXJhY3RlciwgcmVzdWx0KTsKLSAgICAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiUrIik7
Ci0gICAgICAgICAgICAgICAgYXBwZW5kQnl0ZUFzSGV4KGNoYXJhY3RlciA+PiA4LCByZXN1bHQp
OwotICAgICAgICAgICAgICAgIGFwcGVuZEJ5dGVBc0hleChjaGFyYWN0ZXIsIHJlc3VsdCk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChj
aGFyYWN0ZXIpOwotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKLX0KLQot
U3RyaW5nIGRlY29kZUZyb21GaWxlbmFtZShjb25zdCBTdHJpbmcmIGlucHV0U3RyaW5nKQotewot
ICAgIHVuc2lnbmVkIGxlbmd0aCA9IGlucHV0U3RyaW5nLmxlbmd0aCgpOwotICAgIGlmICghbGVu
Z3RoKQotICAgICAgICByZXR1cm4gaW5wdXRTdHJpbmc7Ci0KLSAgICBTdHJpbmdCdWlsZGVyIHJl
c3VsdDsKLSAgICByZXN1bHQucmVzZXJ2ZUNhcGFjaXR5KGxlbmd0aCk7Ci0KLSAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgaWYgKGlucHV0U3RyaW5n
W2ldICE9ICclJykgewotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChpbnB1dFN0cmluZ1tpXSk7
Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIElmIHRoZSBp
bnB1dCBzdHJpbmcgaXMgYSB2YWxpZCBlbmNvZGVkIGZpbGVuYW1lLCBpdCBtdXN0IGJlIGF0IGxl
YXN0IDIgY2hhcmFjdGVycyBsb25nZXIKLSAgICAgICAgLy8gdGhhbiB0aGUgY3VycmVudCBpbmRl
eCB0byBhY2NvdW50IGZvciB0aGlzIHBlcmNlbnQgZW5jb2RlZCB2YWx1ZS4KLSAgICAgICAgaWYg
KGkgKyAyID49IGxlbmd0aCkKLSAgICAgICAgICAgIHJldHVybiB7IH07Ci0KLSAgICAgICAgaWYg
KGlucHV0U3RyaW5nW2krMV0gIT0gJysnKSB7Ci0gICAgICAgICAgICBpZiAoIWlzQVNDSUlIZXhE
aWdpdChpbnB1dFN0cmluZ1tpICsgMV0pKQotICAgICAgICAgICAgICAgIHJldHVybiB7IH07Ci0g
ICAgICAgICAgICBpZiAoIWlzQVNDSUlIZXhEaWdpdChpbnB1dFN0cmluZ1tpICsgMl0pKQotICAg
ICAgICAgICAgICAgIHJldHVybiB7IH07Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKHRvQVND
SUlIZXhWYWx1ZShpbnB1dFN0cmluZ1tpICsgMV0sIGlucHV0U3RyaW5nW2kgKyAyXSkpOwotICAg
ICAgICAgICAgaSArPSAyOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAg
ICAgICAvLyBJZiB0aGUgaW5wdXQgc3RyaW5nIGlzIGEgdmFsaWQgZW5jb2RlZCBmaWxlbmFtZSwg
aXQgbXVzdCBiZSBhdCBsZWFzdCA1IGNoYXJhY3RlcnMgbG9uZ2VyCi0gICAgICAgIC8vIHRoYW4g
dGhlIGN1cnJlbnQgaW5kZXggdG8gYWNjb3VudCBmb3IgdGhpcyBwZXJjZW50IGVuY29kZWQgdmFs
dWUuCi0gICAgICAgIGlmIChpICsgNSA+PSBsZW5ndGgpCi0gICAgICAgICAgICByZXR1cm4geyB9
OwotCi0gICAgICAgIGlmICghaXNBU0NJSUhleERpZ2l0KGlucHV0U3RyaW5nW2kgKyAyXSkpCi0g
ICAgICAgICAgICByZXR1cm4geyB9OwotICAgICAgICBpZiAoIWlzQVNDSUlIZXhEaWdpdChpbnB1
dFN0cmluZ1tpICsgM10pKQotICAgICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICAgICAgaWYgKCFp
c0FTQ0lJSGV4RGlnaXQoaW5wdXRTdHJpbmdbaSArIDRdKSkKLSAgICAgICAgICAgIHJldHVybiB7
IH07Ci0gICAgICAgIGlmICghaXNBU0NJSUhleERpZ2l0KGlucHV0U3RyaW5nW2kgKyA1XSkpCi0g
ICAgICAgICAgICByZXR1cm4geyB9OwotCi0gICAgICAgIHJlc3VsdC5hcHBlbmQodG9BU0NJSUhl
eFZhbHVlKGlucHV0U3RyaW5nW2kgKyAyXSwgaW5wdXRTdHJpbmdbaSArIDNdKSA8PCA4IHwgdG9B
U0NJSUhleFZhbHVlKGlucHV0U3RyaW5nW2kgKyA0XSwgaW5wdXRTdHJpbmdbaSArIDVdKSk7Ci0g
ICAgICAgIGkgKz0gNTsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7Ci19
Ci0KLVN0cmluZyBsYXN0Q29tcG9uZW50T2ZQYXRoSWdub3JpbmdUcmFpbGluZ1NsYXNoKGNvbnN0
IFN0cmluZyYgcGF0aCkKLXsKLSNpZiBPUyhXSU5ET1dTKQotICAgIGNoYXIgcGF0aFNlcGFyYXRv
ciA9ICdcXCc7Ci0jZWxzZQotICAgIGNoYXIgcGF0aFNlcGFyYXRvciA9ICcvJzsKLSNlbmRpZgot
Ci0gICAgYXV0byBwb3NpdGlvbiA9IHBhdGgucmV2ZXJzZUZpbmQocGF0aFNlcGFyYXRvcik7Ci0g
ICAgaWYgKHBvc2l0aW9uID09IG5vdEZvdW5kKQotICAgICAgICByZXR1cm4gcGF0aDsKLQotICAg
IHNpemVfdCBlbmRPZlN1YnN0cmluZyA9IHBhdGgubGVuZ3RoKCkgLSAxOwotICAgIGlmIChwb3Np
dGlvbiA9PSBlbmRPZlN1YnN0cmluZykgewotICAgICAgICAtLWVuZE9mU3Vic3RyaW5nOwotICAg
ICAgICBwb3NpdGlvbiA9IHBhdGgucmV2ZXJzZUZpbmQocGF0aFNlcGFyYXRvciwgZW5kT2ZTdWJz
dHJpbmcpOwotICAgIH0KLQotICAgIHJldHVybiBwYXRoLnN1YnN0cmluZyhwb3NpdGlvbiArIDEs
IGVuZE9mU3Vic3RyaW5nIC0gcG9zaXRpb24pOwotfQotCi1ib29sIGFwcGVuZEZpbGVDb250ZW50
c1RvRmlsZUhhbmRsZShjb25zdCBTdHJpbmcmIHBhdGgsIFBsYXRmb3JtRmlsZUhhbmRsZSYgdGFy
Z2V0KQotewotICAgIGF1dG8gc291cmNlID0gb3BlbkZpbGUocGF0aCwgRmlsZU9wZW5Nb2RlOjpS
ZWFkKTsKLQotICAgIGlmICghaXNIYW5kbGVWYWxpZChzb3VyY2UpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICBzdGF0aWMgaW50IGJ1ZmZlclNpemUgPSAxIDw8IDE5OwotICAgIFZlY3Rv
cjxjaGFyPiBidWZmZXIoYnVmZmVyU2l6ZSk7Ci0KLSAgICBhdXRvIGZpbGVDbG9zZXIgPSBXVEY6
Om1ha2VTY29wZUV4aXQoW3NvdXJjZV0oKSB7Ci0gICAgICAgIFBsYXRmb3JtRmlsZUhhbmRsZSBo
YW5kbGUgPSBzb3VyY2U7Ci0gICAgICAgIGNsb3NlRmlsZShoYW5kbGUpOwotICAgIH0pOwotCi0g
ICAgZG8gewotICAgICAgICBpbnQgcmVhZEJ5dGVzID0gcmVhZEZyb21GaWxlKHNvdXJjZSwgYnVm
ZmVyLmRhdGEoKSwgYnVmZmVyU2l6ZSk7Ci0gICAgICAgIAotICAgICAgICBpZiAocmVhZEJ5dGVz
IDwgMCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBpZiAod3JpdGVUb0Zp
bGUodGFyZ2V0LCBidWZmZXIuZGF0YSgpLCByZWFkQnl0ZXMpICE9IHJlYWRCeXRlcykKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBpZiAocmVhZEJ5dGVzIDwgYnVmZmVyU2l6
ZSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0gd2hpbGUgKHRydWUpOwotCi0gICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLSAgICAKLWJvb2wgZmlsZXNIYXZlU2FtZVZvbHVt
ZShjb25zdCBTdHJpbmcmIGZpbGVBLCBjb25zdCBTdHJpbmcmIGZpbGVCKQotewotICAgIGF1dG8g
ZnNSZXBGaWxlQSA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWxlQSk7Ci0gICAgYXV0byBm
c1JlcEZpbGVCID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVCKTsKLSAgICAKLSAgICBp
ZiAoZnNSZXBGaWxlQS5pc051bGwoKSB8fCBmc1JlcEZpbGVCLmlzTnVsbCgpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICBib29sIHJlc3VsdCA9IGZhbHNlOwotCi0gICAgYXV0byBmaWxl
QURldiA9IGdldEZpbGVEZXZpY2VJZChmc1JlcEZpbGVBKTsKLSAgICBhdXRvIGZpbGVCRGV2ID0g
Z2V0RmlsZURldmljZUlkKGZzUmVwRmlsZUIpOwotCi0gICAgaWYgKGZpbGVBRGV2ICYmIGZpbGVC
RGV2KQotICAgICAgICByZXN1bHQgPSAoZmlsZUFEZXYgPT0gZmlsZUJEZXYpOwotICAgIAotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci0KLSNpZiAhUExBVEZPUk0oTUFDKQotCi12b2lkIHNldE1ldGFk
YXRhVVJMKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpCi17Ci19
Ci0KLWJvb2wgY2FuRXhjbHVkZUZyb21CYWNrdXAoKQotewotICAgIHJldHVybiBmYWxzZTsKLX0K
LQotYm9vbCBleGNsdWRlRnJvbUJhY2t1cChjb25zdCBTdHJpbmcmKQotewotICAgIHJldHVybiBm
YWxzZTsKLX0KLQotI2VuZGlmCi0KLU1hcHBlZEZpbGVEYXRhOjp+TWFwcGVkRmlsZURhdGEoKQot
ewotI2lmICFPUyhXSU5ET1dTKQotICAgIGlmICghbV9maWxlRGF0YSkKLSAgICAgICAgcmV0dXJu
OwotICAgIG11bm1hcChtX2ZpbGVEYXRhLCBtX2ZpbGVTaXplKTsKLSNlbmRpZgotfQotCi1NYXBw
ZWRGaWxlRGF0YTo6TWFwcGVkRmlsZURhdGEoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgYm9vbCYg
c3VjY2VzcykKLXsKLSNpZiBPUyhXSU5ET1dTKQotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgbWFw
cGluZwotICAgIHN1Y2Nlc3MgPSBmYWxzZTsKLSNlbHNlCi0gICAgQ1N0cmluZyBmc1JlcCA9IGZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWxlUGF0aCk7Ci0gICAgaW50IGZkID0gIWZzUmVwLmlz
TnVsbCgpID8gb3Blbihmc1JlcC5kYXRhKCksIE9fUkRPTkxZKSA6IC0xOwotICAgIGlmIChmZCA8
IDApIHsKLSAgICAgICAgc3VjY2VzcyA9IGZhbHNlOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgc3RydWN0IHN0YXQgZmlsZVN0YXQ7Ci0gICAgaWYgKGZzdGF0KGZkLCAmZmlsZVN0YXQp
KSB7Ci0gICAgICAgIGNsb3NlKGZkKTsKLSAgICAgICAgc3VjY2VzcyA9IGZhbHNlOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgdW5zaWduZWQgc2l6ZTsKLSAgICBpZiAoIVdURjo6Y29u
dmVydFNhZmVseShmaWxlU3RhdC5zdF9zaXplLCBzaXplKSkgewotICAgICAgICBjbG9zZShmZCk7
Ci0gICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IGlmICghc2l6ZSkgewotICAgICAgICBjbG9zZShmZCk7Ci0gICAgICAgIHN1Y2Nlc3MgPSB0cnVl
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgdm9pZCogZGF0YSA9IG1tYXAoMCwgc2l6
ZSwgUFJPVF9SRUFELCBNQVBfRklMRSB8IE1BUF9TSEFSRUQsIGZkLCAwKTsKLSAgICBjbG9zZShm
ZCk7Ci0KLSAgICBpZiAoZGF0YSA9PSBNQVBfRkFJTEVEKSB7Ci0gICAgICAgIHN1Y2Nlc3MgPSBm
YWxzZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHN1Y2Nlc3MgPSB0cnVlOwotICAg
IG1fZmlsZURhdGEgPSBkYXRhOwotICAgIG1fZmlsZVNpemUgPSBzaXplOwotI2VuZGlmCi19Ci0K
LVBsYXRmb3JtRmlsZUhhbmRsZSBvcGVuQW5kTG9ja0ZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBG
aWxlT3Blbk1vZGUgb3Blbk1vZGUsIE9wdGlvblNldDxGaWxlTG9ja01vZGU+IGxvY2tNb2RlKQot
ewotICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUocGF0aCwgb3Blbk1vZGUpOwotICAgIGlmICho
YW5kbGUgPT0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKLSAgICAgICAgcmV0dXJuIGludmFs
aWRQbGF0Zm9ybUZpbGVIYW5kbGU7Ci0KLSNpZiBVU0UoRklMRV9MT0NLKQotICAgIGJvb2wgbG9j
a2VkID0gbG9ja0ZpbGUoaGFuZGxlLCBsb2NrTW9kZSk7Ci0gICAgQVNTRVJUX1VOVVNFRChsb2Nr
ZWQsIGxvY2tlZCk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShsb2NrTW9kZSk7Ci0jZW5kaWYK
LQotICAgIHJldHVybiBoYW5kbGU7Ci19Ci0KLXZvaWQgdW5sb2NrQW5kQ2xvc2VGaWxlKFBsYXRm
b3JtRmlsZUhhbmRsZSBoYW5kbGUpCi17Ci0jaWYgVVNFKEZJTEVfTE9DSykKLSAgICBib29sIHVu
bG9ja2VkID0gdW5sb2NrRmlsZShoYW5kbGUpOwotICAgIEFTU0VSVF9VTlVTRUQodW5sb2NrZWQs
IHVubG9ja2VkKTsKLSNlbmRpZgotICAgIGNsb3NlRmlsZShoYW5kbGUpOwotfQotCi1ib29sIGZp
bGVJc0RpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIFNob3VsZEZvbGxvd1N5bWJvbGljTGlu
a3Mgc2hvdWxkRm9sbG93U3ltYm9saWNMaW5rcykKLXsKLSAgICBhdXRvIG1ldGFkYXRhID0gc2hv
dWxkRm9sbG93U3ltYm9saWNMaW5rcyA9PSBTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpZZXMg
PyBmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyhwYXRoKSA6IGZpbGVNZXRhZGF0YShwYXRo
KTsKLSAgICBpZiAoIW1ldGFkYXRhKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJu
IG1ldGFkYXRhLnZhbHVlKCkudHlwZSA9PSBGaWxlTWV0YWRhdGE6OlR5cGU6OkRpcmVjdG9yeTsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgRmlsZVN5c3RlbQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAzY2ViY2FhMDUzOWI1OWQ5M2U3MmUwOTg0MGIyM2IxZGFjNjM4MTFiLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0ZpbGVTeXN0ZW0uaAorKysgL2Rldi9udWxsCkBAIC0xLDIyNSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDA3LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSwgTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICogQ29weXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuIAotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uIAotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5j
LiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBm
cm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uIAotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaW5jbHVkZSA8dGltZS5oPgotI2luY2x1ZGUgPHV0aWxpdHk+Ci0jaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+Ci0jaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgotCi0jaWYgVVNFKENGKQotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
LSNlbmRpZgotCi0jaWYgVVNFKENGKQotdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DRkRhdGEqIENG
RGF0YVJlZjsKLSNlbmRpZgotCi1PQkpDX0NMQVNTIE5TU3RyaW5nOwotCi0jaWYgUExBVEZPUk0o
V0lOKQotdHlwZWRlZiB2b2lkICpIQU5ETEU7Ci0jZW5kaWYKLQotI2lmIFVTRShHTElCKQotdHlw
ZWRlZiBzdHJ1Y3QgX0dGaWxlSU9TdHJlYW0gR0ZpbGVJT1N0cmVhbTsKLSNlbmRpZgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBGaWxlTWV0YWRhdGE7Ci0KLW5hbWVzcGFjZSBGaWxl
U3lzdGVtIHsKLQotLy8gUGxhdGZvcm1GaWxlSGFuZGxlCi0jaWYgVVNFKEdMSUIpICYmICFQTEFU
Rk9STShXSU4pCi10eXBlZGVmIEdGaWxlSU9TdHJlYW0qIFBsYXRmb3JtRmlsZUhhbmRsZTsKLWNv
bnN0IFBsYXRmb3JtRmlsZUhhbmRsZSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlID0gMDsKLSNl
bGlmIFBMQVRGT1JNKFdJTikKLXR5cGVkZWYgSEFORExFIFBsYXRmb3JtRmlsZUhhbmRsZTsKLS8v
IEZJWE1FOiAtMSBpcyBJTlZBTElEX0hBTkRMRV9WQUxVRSwgZGVmaW5lZCBpbiA8d2luYmFzZS5o
Pi4gQ2hyb21pdW0gdHJpZXMgdG8KLS8vIGF2b2lkIHVzaW5nIFdpbmRvd3MgaGVhZGVycyBpbiBo
ZWFkZXJzLiAgV2UnZCByYXRoZXIgbW92ZSB0aGlzIGludG8gdGhlIC5jcHAuCi1jb25zdCBQbGF0
Zm9ybUZpbGVIYW5kbGUgaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSA9IHJlaW50ZXJwcmV0X2Nh
c3Q8SEFORExFPigtMSk7Ci0jZWxzZQotdHlwZWRlZiBpbnQgUGxhdGZvcm1GaWxlSGFuZGxlOwot
Y29uc3QgUGxhdGZvcm1GaWxlSGFuZGxlIGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUgPSAtMTsK
LSNlbmRpZgotCi1lbnVtIGNsYXNzIEZpbGVPcGVuTW9kZSB7Ci0gICAgUmVhZCwKLSAgICBXcml0
ZSwKLSNpZiBPUyhEQVJXSU4pCi0gICAgRXZlbnRzT25seSwKLSNlbmRpZgotfTsKLQotZW51bSBj
bGFzcyBGaWxlU2Vla09yaWdpbiB7Ci0gICAgQmVnaW5uaW5nLAotICAgIEN1cnJlbnQsCi0gICAg
RW5kLAotfTsKLQotZW51bSBjbGFzcyBGaWxlTG9ja01vZGUgewotICAgIFNoYXJlZCA9IDEgPDwg
MCwKLSAgICBFeGNsdXNpdmUgPSAxIDw8IDEsCi0gICAgTm9uYmxvY2tpbmcgPSAxIDw8IDIsCi19
OwotCi1lbnVtIGNsYXNzIFNob3VsZEZvbGxvd1N5bWJvbGljTGlua3MgeyBObywgWWVzIH07Ci0K
LVdFQkNPUkVfRVhQT1JUIGJvb2wgZmlsZUV4aXN0cyhjb25zdCBTdHJpbmcmKTsKLVdFQkNPUkVf
RVhQT1JUIGJvb2wgZGVsZXRlRmlsZShjb25zdCBTdHJpbmcmKTsKLVdFQkNPUkVfRVhQT1JUIGJv
b2wgZGVsZXRlRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7Ci1XRUJDT1JFX0VYUE9SVCBi
b29sIG1vdmVGaWxlKGNvbnN0IFN0cmluZyYgb2xkUGF0aCwgY29uc3QgU3RyaW5nJiBuZXdQYXRo
KTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgZ2V0RmlsZVNpemUoY29uc3QgU3RyaW5nJiwgbG9uZyBs
b25nJiByZXN1bHQpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCBnZXRGaWxlU2l6ZShQbGF0Zm9ybUZp
bGVIYW5kbGUsIGxvbmcgbG9uZyYgcmVzdWx0KTsKLVdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPFdh
bGxUaW1lPiBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmKTsKLVdFQkNPUkVf
RVhQT1JUIE9wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlQ3JlYXRpb25UaW1lKGNvbnN0IFN0cmlu
ZyYpOyAvLyBOb3QgYWxsIHBsYXRmb3JtcyBzdG9yZSBmaWxlIGNyZWF0aW9uIHRpbWUuCi1XRUJD
T1JFX0VYUE9SVCBPcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YShjb25zdCBTdHJp
bmcmIHBhdGgpOwotV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0
YWRhdGFGb2xsb3dpbmdTeW1saW5rcyhjb25zdCBTdHJpbmcmIHBhdGgpOwotV0VCQ09SRV9FWFBP
UlQgYm9vbCBmaWxlSXNEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiwgU2hvdWxkRm9sbG93U3ltYm9s
aWNMaW5rcyk7Ci1XRUJDT1JFX0VYUE9SVCBTdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb21wb25lbnQpOwotU3RyaW5nIHBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudHMoU3RyaW5nVmlldyBwYXRoLCBjb25zdCBWZWN0b3I8U3Ry
aW5nVmlldz4mIGNvbXBvbmVudHMpOwotU3RyaW5nIGxhc3RDb21wb25lbnRPZlBhdGhJZ25vcmlu
Z1RyYWlsaW5nU2xhc2goY29uc3QgU3RyaW5nJiBwYXRoKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wg
bWFrZUFsbERpcmVjdG9yaWVzKGNvbnN0IFN0cmluZyYgcGF0aCk7Ci1TdHJpbmcgaG9tZURpcmVj
dG9yeVBhdGgoKTsKLVdFQkNPUkVfRVhQT1JUIFN0cmluZyBwYXRoR2V0RmlsZU5hbWUoY29uc3Qg
U3RyaW5nJik7Ci1XRUJDT1JFX0VYUE9SVCBTdHJpbmcgZGlyZWN0b3J5TmFtZShjb25zdCBTdHJp
bmcmKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgZ2V0Vm9sdW1lRnJlZVNwYWNlKGNvbnN0IFN0cmlu
ZyYsIHVpbnQ2NF90Jik7Ci1XRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxpbnQzMl90PiBnZXRGaWxl
RGV2aWNlSWQoY29uc3QgQ1N0cmluZyYpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCBjcmVhdGVTeW1i
b2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGlj
TGlua1BhdGgpOwotCi1XRUJDT1JFX0VYUE9SVCB2b2lkIHNldE1ldGFkYXRhVVJMKGNvbnN0IFN0
cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVmZXJy
ZXIgPSB7IH0pOwotCi1ib29sIGNhbkV4Y2x1ZGVGcm9tQmFja3VwKCk7IC8vIFJldHVybnMgdHJ1
ZSBpZiBhbnkgZmlsZSBjYW4gZXZlciBiZSBleGNsdWRlZCBmcm9tIGJhY2t1cC4KLWJvb2wgZXhj
bHVkZUZyb21CYWNrdXAoY29uc3QgU3RyaW5nJik7IC8vIFJldHVybnMgdHJ1ZSBpZiBzdWNjZXNz
ZnVsLgotCi1XRUJDT1JFX0VYUE9SVCBWZWN0b3I8U3RyaW5nPiBsaXN0RGlyZWN0b3J5KGNvbnN0
IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBmaWx0ZXIgPSBTdHJpbmcoKSk7Ci0KLVdFQkNP
UkVfRVhQT1JUIENTdHJpbmcgZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYp
OwotU3RyaW5nIHN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgY2hhciop
OwotCi1pbmxpbmUgYm9vbCBpc0hhbmRsZVZhbGlkKGNvbnN0IFBsYXRmb3JtRmlsZUhhbmRsZSYg
aGFuZGxlKSB7IHJldHVybiBoYW5kbGUgIT0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsgfQot
Ci0vLyBQcmVmaXggaXMgd2hhdCB0aGUgZmlsZW5hbWUgc2hvdWxkIGJlIHByZWZpeGVkIHdpdGgs
IG5vdCB0aGUgZnVsbCBwYXRoLgotV0VCQ09SRV9FWFBPUlQgU3RyaW5nIG9wZW5UZW1wb3JhcnlG
aWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmKTsKLVdFQkNPUkVf
RVhQT1JUIFBsYXRmb3JtRmlsZUhhbmRsZSBvcGVuRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIEZp
bGVPcGVuTW9kZSk7Ci1XRUJDT1JFX0VYUE9SVCB2b2lkIGNsb3NlRmlsZShQbGF0Zm9ybUZpbGVI
YW5kbGUmKTsKLS8vIFJldHVybnMgdGhlIHJlc3VsdGluZyBvZmZzZXQgZnJvbSB0aGUgYmVnaW5u
aW5nIG9mIHRoZSBmaWxlIGlmIHN1Y2Nlc3NmdWwsIC0xIG90aGVyd2lzZS4KLVdFQkNPUkVfRVhQ
T1JUIGxvbmcgbG9uZyBzZWVrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUsIGxvbmcgbG9uZyBvZmZz
ZXQsIEZpbGVTZWVrT3JpZ2luKTsKLWJvb2wgdHJ1bmNhdGVGaWxlKFBsYXRmb3JtRmlsZUhhbmRs
ZSwgbG9uZyBsb25nIG9mZnNldCk7Ci0vLyBSZXR1cm5zIG51bWJlciBvZiBieXRlcyBhY3R1YWxs
eSByZWFkIGlmIHN1Y2Nlc3NmdWwsIC0xIG90aGVyd2lzZS4KLVdFQkNPUkVfRVhQT1JUIGludCB3
cml0ZVRvRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5n
dGgpOwotLy8gUmV0dXJucyBudW1iZXIgb2YgYnl0ZXMgYWN0dWFsbHkgd3JpdHRlbiBpZiBzdWNj
ZXNzZnVsLCAtMSBvdGhlcndpc2UuCi1XRUJDT1JFX0VYUE9SVCBpbnQgcmVhZEZyb21GaWxlKFBs
YXRmb3JtRmlsZUhhbmRsZSwgY2hhciogZGF0YSwgaW50IGxlbmd0aCk7Ci0KLVdFQkNPUkVfRVhQ
T1JUIFBsYXRmb3JtRmlsZUhhbmRsZSBvcGVuQW5kTG9ja0ZpbGUoY29uc3QgU3RyaW5nJiwgRmls
ZU9wZW5Nb2RlLCBPcHRpb25TZXQ8RmlsZUxvY2tNb2RlPiA9IEZpbGVMb2NrTW9kZTo6RXhjbHVz
aXZlKTsKLVdFQkNPUkVfRVhQT1JUIHZvaWQgdW5sb2NrQW5kQ2xvc2VGaWxlKFBsYXRmb3JtRmls
ZUhhbmRsZSk7Ci0KLS8vIEFwcGVuZHMgdGhlIGNvbnRlbnRzIG9mIHRoZSBmaWxlIGZvdW5kIGF0
ICdwYXRoJyB0byB0aGUgb3BlbiBQbGF0Zm9ybUZpbGVIYW5kbGUuCi0vLyBSZXR1cm5zIHRydWUg
aWYgdGhlIHdyaXRlIHdhcyBzdWNjZXNzZnVsLCBmYWxzZSBpZiBpdCB3YXMgbm90LgotYm9vbCBh
cHBlbmRGaWxlQ29udGVudHNUb0ZpbGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBQbGF0Zm9y
bUZpbGVIYW5kbGUmKTsKLQotLy8gSGFyZCBsaW5rcyBhIGZpbGUgaWYgcG9zc2libGUsIGNvcGll
cyBpdCBpZiBub3QuCi1ib29sIGhhcmRMaW5rT3JDb3B5RmlsZShjb25zdCBTdHJpbmcmIHNvdXJj
ZSwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbik7Ci0KLSNpZiBVU0UoRklMRV9MT0NLKQotV0VC
Q09SRV9FWFBPUlQgYm9vbCBsb2NrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUsIE9wdGlvblNldDxG
aWxlTG9ja01vZGU+KTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgdW5sb2NrRmlsZShQbGF0Zm9ybUZp
bGVIYW5kbGUpOwotI2VuZGlmCi0KLS8vIEVuY29kZSBhIHN0cmluZyBmb3IgdXNlIHdpdGhpbiBh
IGZpbGUgbmFtZS4KLVdFQkNPUkVfRVhQT1JUIFN0cmluZyBlbmNvZGVGb3JGaWxlTmFtZShjb25z
dCBTdHJpbmcmKTsKLVdFQkNPUkVfRVhQT1JUIFN0cmluZyBkZWNvZGVGcm9tRmlsZW5hbWUoY29u
c3QgU3RyaW5nJik7Ci0KLVdFQkNPUkVfRVhQT1JUIGJvb2wgZmlsZXNIYXZlU2FtZVZvbHVtZShj
b25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKLQotI2lmIFVTRShDRikKLVJldGFpblB0cjxD
RlVSTFJlZj4gcGF0aEFzVVJMKGNvbnN0IFN0cmluZyYpOwotI2VuZGlmCi0KLSNpZiBQTEFURk9S
TShHVEspIHx8IFBMQVRGT1JNKFdQRSkKLVN0cmluZyBmaWxlbmFtZUZvckRpc3BsYXkoY29uc3Qg
U3RyaW5nJik7Ci0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKFdJTikKLVdFQkNPUkVfRVhQT1JUIFN0
cmluZyBsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKTsKLVN0cmluZyByb2FtaW5n
VXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpOwotI2VuZGlmCi0KLSNpZiBQTEFURk9STShD
T0NPQSkKLVdFQkNPUkVfRVhQT1JUIE5TU3RyaW5nICpjcmVhdGVUZW1wb3JhcnlEaXJlY3Rvcnko
TlNTdHJpbmcgKmRpcmVjdG9yeVByZWZpeCk7Ci1XRUJDT1JFX0VYUE9SVCBib29sIGRlbGV0ZU5v
bkVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpOwotI2VuZGlmCi0KLSNpZiBQTEFURk9STShX
SU5fQ0FJUk8pCi1XRUJDT1JFX0VYUE9SVCBTdHJpbmcgY3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5
KCk7Ci1XRUJDT1JFX0VYUE9SVCBib29sIGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0
cmluZyYpOwotI2VuZGlmCi0KLVdFQkNPUkVfRVhQT1JUIFN0cmluZyByZWFsUGF0aChjb25zdCBT
dHJpbmcmKTsKLQotY2xhc3MgTWFwcGVkRmlsZURhdGEgewotcHVibGljOgotICAgIE1hcHBlZEZp
bGVEYXRhKCkgeyB9Ci0gICAgTWFwcGVkRmlsZURhdGEoTWFwcGVkRmlsZURhdGEmJik7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgTWFwcGVkRmlsZURhdGEoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgYm9v
bCYgc3VjY2Vzcyk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgfk1hcHBlZEZpbGVEYXRhKCk7Ci0gICAg
TWFwcGVkRmlsZURhdGEmIG9wZXJhdG9yPShNYXBwZWRGaWxlRGF0YSYmKTsKLQotICAgIGV4cGxp
Y2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhIW1fZmlsZURhdGE7IH0KLSAgICBj
b25zdCB2b2lkKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9maWxlRGF0YTsgfQotICAgIHVuc2ln
bmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX2ZpbGVTaXplOyB9Ci0KLXByaXZhdGU6Ci0gICAg
dm9pZCogbV9maWxlRGF0YSB7IG51bGxwdHIgfTsKLSAgICB1bnNpZ25lZCBtX2ZpbGVTaXplIHsg
MCB9OwotfTsKLQotaW5saW5lIE1hcHBlZEZpbGVEYXRhOjpNYXBwZWRGaWxlRGF0YShNYXBwZWRG
aWxlRGF0YSYmIG90aGVyKQotICAgIDogbV9maWxlRGF0YShzdGQ6OmV4Y2hhbmdlKG90aGVyLm1f
ZmlsZURhdGEsIG51bGxwdHIpKQotICAgICwgbV9maWxlU2l6ZShzdGQ6OmV4Y2hhbmdlKG90aGVy
Lm1fZmlsZVNpemUsIDApKQotewotfQotCi1pbmxpbmUgTWFwcGVkRmlsZURhdGEmIE1hcHBlZEZp
bGVEYXRhOjpvcGVyYXRvcj0oTWFwcGVkRmlsZURhdGEmJiBvdGhlcikKLXsKLSAgICBtX2ZpbGVE
YXRhID0gc3RkOjpleGNoYW5nZShvdGhlci5tX2ZpbGVEYXRhLCBudWxscHRyKTsKLSAgICBtX2Zp
bGVTaXplID0gc3RkOjpleGNoYW5nZShvdGhlci5tX2ZpbGVTaXplLCAwKTsKLSAgICByZXR1cm4g
KnRoaXM7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEZpbGVTeXN0ZW0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAppbmRleCA4MTMxOGU4
YjI5YWU1YTBmNWI5NjAzYzgyNTU3OTFjZGJjMjBhNGUxLi5lYzM3MTM0MWFiOTQ5NWI3ZDM1NzYx
MzUxYjJiMDliMTM1YTNlZjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
aGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIu
aApAQCAtMjYsOCArMjYsOCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkZpbGVTeXN0
ZW0uaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BcnJheUJ1ZmZlci5oPgorI2luY2x1ZGUg
PHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU291cmNlc0dMaWIudHh0IGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU291cmNlc0dMaWIudHh0CmluZGV4IDI3NzNjMmEwODhiNjBm
YjEzOTY5MmQ1ZjQwZDBiZWZjM2ZlYzNjYzQuLjA5MGI4NGE0OGMxMDNkM2Q1OTMxNDFkOTBlMmJi
YjRhYmYyYzViYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NvdXJjZXNH
TGliLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Tb3VyY2VzR0xpYi50eHQKQEAg
LTI1LDcgKzI1LDYgQEAgcGxhdGZvcm0vYXVkaW8vZ2xpYi9BdWRpb0J1c0dMaWIuY3BwCiAKIHBs
YXRmb3JtL2dsaWIvRXZlbnRMb29wR2xpYi5jcHAKIHBsYXRmb3JtL2dsaWIvRmlsZU1vbml0b3JH
TGliLmNwcAotcGxhdGZvcm0vZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKIHBsYXRmb3JtL2dsaWIv
S2V5ZWREZWNvZGVyR2xpYi5jcHAKIHBsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAK
IHBsYXRmb3JtL2dsaWIvTG93UG93ZXJNb2RlTm90aWZpZXJHTGliLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvRmlsZVN5c3RlbUNGLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NmL0ZpbGVTeXN0ZW1DRi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDA4NDcwYTA4ZmE1ZDJmNDUyZTZjOTM4NzAxYzZkOTI2Y2E2MDlmMDMuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2YvRmlsZVN5c3RlbUNGLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDc0ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoK
LSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBw
bGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAq
ICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
Ci0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKLQotI2luY2x1ZGUgPENv
cmVGb3VuZGF0aW9uL0NGU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1DU3RyaW5nIEZpbGVTeXN0ZW06OmZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiBjZlN0cmluZyA9IHBhdGguY3JlYXRlQ0ZTdHJpbmcoKTsKLQotICAgIGlmICgh
Y2ZTdHJpbmcpCi0gICAgICAgIHJldHVybiBDU3RyaW5nKCk7Ci0KLSAgICBDRkluZGV4IHNpemUg
PSBDRlN0cmluZ0dldE1heGltdW1TaXplT2ZGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY2ZTdHJp
bmcuZ2V0KCkpOwotCi0gICAgVmVjdG9yPGNoYXI+IGJ1ZmZlcihzaXplKTsKLQotICAgIGlmICgh
Q0ZTdHJpbmdHZXRGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY2ZTdHJpbmcuZ2V0KCksIGJ1ZmZl
ci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpKSB7Ci0gICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRv
IGdldCBmaWxlc3lzdGVtIHJlcHJlc2VudGF0aW9uIHRvIGNyZWF0ZSBDU3RyaW5nIGZyb20gY2ZT
dHJpbmciKTsKLSAgICAgICAgcmV0dXJuIENTdHJpbmcoKTsKLSAgICB9Ci0KLSAgICByZXR1cm4g
Q1N0cmluZyhidWZmZXIuZGF0YSgpLCBzdHJsZW4oYnVmZmVyLmRhdGEoKSkpOwotfQotCi1TdHJp
bmcgRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBj
aGFyKiBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24pCi17Ci0gICAgcmV0dXJuIGFkb3B0Q0YoQ0ZT
dHJpbmdDcmVhdGVXaXRoRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGtDRkFsbG9jYXRvckRlZmF1
bHQsIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbikpLmdldCgpOwotfQotCi1SZXRhaW5QdHI8Q0ZV
UkxSZWY+IEZpbGVTeXN0ZW06OnBhdGhBc1VSTChjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAg
Q0ZVUkxQYXRoU3R5bGUgcGF0aFN0eWxlOwotI2lmIFBMQVRGT1JNKFdJTikKLSAgICBwYXRoU3R5
bGUgPSBrQ0ZVUkxXaW5kb3dzUGF0aFN0eWxlOwotI2Vsc2UKLSAgICBwYXRoU3R5bGUgPSBrQ0ZV
UkxQT1NJWFBhdGhTdHlsZTsKLSNlbmRpZgotICAgIHJldHVybiBhZG9wdENGKENGVVJMQ3JlYXRl
V2l0aEZpbGVTeXN0ZW1QYXRoKDAsIHBhdGguY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgcGF0aFN0
eWxlLCBGQUxTRSkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9GaWxlTW9uaXRvckNvY29hLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRmlsZU1vbml0b3JDb2NvYS5tbQppbmRleCAxYWIzYzMz
NGM2OWRmZmEzNjQ4YWIwMGE0NTU4ZDlmMjdlNDMwNjAwLi5jYzdmZTZiNmNkZTEwZWQ0Y2E0NTZl
NDZiZTI4YTA0ZjY4NzI0NzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9GaWxlTW9uaXRvckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL0ZpbGVNb25pdG9yQ29jb2EubW0KQEAgLTI2LDkgKzI2LDkgQEAKICNpbXBvcnQgImNvbmZp
Zy5oIgogI2ltcG9ydCAiRmlsZU1vbml0b3IuaCIKIAotI2ltcG9ydCAiRmlsZVN5c3RlbS5oIgog
I2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CisjaW1wb3J0IDx3
dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9GaWxlU3lzdGVtQ29jb2EubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9GaWxlU3lzdGVtQ29jb2EubW0KZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGQzOGIwYzgzMDNlN2JhMTBkNDA1MzNjYmNkMTVkYTMzYjA5Njll
M2MuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tCisrKyAvZGV2L251bGwK
QEAgLTEsMTQzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKLSAqIDMuICBOZWl0
aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAq
ICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQot
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICog
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkZpbGVTeXN0ZW0u
aCIKLQotQGludGVyZmFjZSBXZWJGaWxlTWFuYWdlckRlbGVnYXRlIDogTlNPYmplY3QgPE5TRmls
ZU1hbmFnZXJEZWxlZ2F0ZT4KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIFdlYkZpbGVNYW5hZ2Vy
RGVsZWdhdGUKLQotLSAoQk9PTClmaWxlTWFuYWdlcjooTlNGaWxlTWFuYWdlciAqKWZpbGVNYW5h
Z2VyIHNob3VsZFByb2NlZWRBZnRlckVycm9yOihOU0Vycm9yICopZXJyb3IgbW92aW5nSXRlbUF0
VVJMOihOU1VSTCAqKXNyY1VSTCB0b1VSTDooTlNVUkwgKilkc3RVUkwKLXsKLSAgICBVTlVTRURf
UEFSQU0oZmlsZU1hbmFnZXIpOwotICAgIFVOVVNFRF9QQVJBTShzcmNVUkwpOwotICAgIFVOVVNF
RF9QQVJBTShkc3RVUkwpOyAgICAKLSAgICByZXR1cm4gZXJyb3IuY29kZSA9PSBOU0ZpbGVXcml0
ZUZpbGVFeGlzdHNFcnJvcjsKLX0KLQotQGVuZAotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5h
bWVzcGFjZSBGaWxlU3lzdGVtIHsKLQotU3RyaW5nIGhvbWVEaXJlY3RvcnlQYXRoKCkKLXsKLSAg
ICByZXR1cm4gTlNIb21lRGlyZWN0b3J5KCk7Ci19Ci0KLVN0cmluZyBvcGVuVGVtcG9yYXJ5Rmls
ZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiBwbGF0Zm9ybUZpbGVI
YW5kbGUpCi17Ci0gICAgcGxhdGZvcm1GaWxlSGFuZGxlID0gaW52YWxpZFBsYXRmb3JtRmlsZUhh
bmRsZTsKLSAgICAKLSAgICBWZWN0b3I8Y2hhcj4gdGVtcG9yYXJ5RmlsZVBhdGgoUEFUSF9NQVgp
OwotICAgIGlmICghY29uZnN0cihfQ1NfREFSV0lOX1VTRVJfVEVNUF9ESVIsIHRlbXBvcmFyeUZp
bGVQYXRoLmRhdGEoKSwgdGVtcG9yYXJ5RmlsZVBhdGguc2l6ZSgpKSkKLSAgICAgICAgcmV0dXJu
IFN0cmluZygpOwotCi0gICAgLy8gU2hyaW5rIHRoZSB2ZWN0b3IuICAgCi0gICAgdGVtcG9yYXJ5
RmlsZVBhdGguc2hyaW5rKHN0cmxlbih0ZW1wb3JhcnlGaWxlUGF0aC5kYXRhKCkpKTsKLQotICAg
IC8vIEZJWE1FOiBDaGFuZ2UgdG8gYSBydW50aW1lIGFzc2VydGlvbiB0aGF0IHRoZSBwYXRoIGVu
ZHMgd2l0aCBhIHNsYXNoIG9uY2UgPHJkYXI6Ly9wcm9ibGVtLzIzNTc5MDc3PiBpcwotICAgIC8v
IGZpeGVkIGluIGFsbCBpT1MgU2ltdWxhdG9yIHZlcnNpb25zIHRoYXQgd2UgdXNlLgotICAgIGlm
ICh0ZW1wb3JhcnlGaWxlUGF0aC5sYXN0KCkgIT0gJy8nKQotICAgICAgICB0ZW1wb3JhcnlGaWxl
UGF0aC5hcHBlbmQoJy8nKTsKLQotICAgIC8vIEFwcGVuZCB0aGUgZmlsZSBuYW1lLgotICAgIENT
dHJpbmcgcHJlZml4VXRmOCA9IHByZWZpeC51dGY4KCk7Ci0gICAgdGVtcG9yYXJ5RmlsZVBhdGgu
YXBwZW5kKHByZWZpeFV0ZjguZGF0YSgpLCBwcmVmaXhVdGY4Lmxlbmd0aCgpKTsKLSAgICB0ZW1w
b3JhcnlGaWxlUGF0aC5hcHBlbmQoIlhYWFhYWCIsIDYpOwotICAgIHRlbXBvcmFyeUZpbGVQYXRo
LmFwcGVuZCgnXDAnKTsKLQotICAgIHBsYXRmb3JtRmlsZUhhbmRsZSA9IG1rc3RlbXAodGVtcG9y
YXJ5RmlsZVBhdGguZGF0YSgpKTsKLSAgICBpZiAocGxhdGZvcm1GaWxlSGFuZGxlID09IGludmFs
aWRQbGF0Zm9ybUZpbGVIYW5kbGUpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIHJl
dHVybiBTdHJpbmc6OmZyb21VVEY4KHRlbXBvcmFyeUZpbGVQYXRoLmRhdGEoKSk7Ci19Ci0KLWJv
b2wgbW92ZUZpbGUoY29uc3QgU3RyaW5nJiBvbGRQYXRoLCBjb25zdCBTdHJpbmcmIG5ld1BhdGgp
Ci17Ci0gICAgLy8gT3ZlcndyaXRlIGV4aXN0aW5nIGZpbGVzLgotICAgIGF1dG8gbWFuYWdlciA9
IGFkb3B0TlMoW1tOU0ZpbGVNYW5hZ2VyIGFsbG9jXSBpbml0XSk7Ci0gICAgYXV0byBkZWxlZ2F0
ZSA9IGFkb3B0TlMoW1tXZWJGaWxlTWFuYWdlckRlbGVnYXRlIGFsbG9jXSBpbml0XSk7Ci0gICAg
W21hbmFnZXIgc2V0RGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwotICAgIAotICAgIE5TRXJyb3Ig
KmVycm9yID0gbmlsOwotICAgIGJvb2wgc3VjY2VzcyA9IFttYW5hZ2VyIG1vdmVJdGVtQXRVUkw6
W05TVVJMIGZpbGVVUkxXaXRoUGF0aDpvbGRQYXRoXSB0b1VSTDpbTlNVUkwgZmlsZVVSTFdpdGhQ
YXRoOm5ld1BhdGhdIGVycm9yOiZlcnJvcl07Ci0gICAgaWYgKCFzdWNjZXNzKQotICAgICAgICBO
U0xvZyhAIkVycm9yIGluIG1vdmVGaWxlOiAlQCIsIGVycm9yKTsKLSAgICByZXR1cm4gc3VjY2Vz
czsKLX0KLQotYm9vbCBnZXRWb2x1bWVGcmVlU3BhY2UoY29uc3QgU3RyaW5nJiBwYXRoLCB1aW50
NjRfdCYgZnJlZVNwYWNlKQotewotICAgIE5TRGljdGlvbmFyeSAqZmlsZVN5c3RlbUF0dHJpYnV0
ZXNEaWN0aW9uYXJ5ID0gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBhdHRyaWJ1dGVz
T2ZGaWxlU3lzdGVtRm9yUGF0aDooTlNTdHJpbmcgKilwYXRoIGVycm9yOk5VTExdOwotICAgIGlm
ICghZmlsZVN5c3RlbUF0dHJpYnV0ZXNEaWN0aW9uYXJ5KQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgZnJlZVNwYWNlID0gW1tmaWxlU3lzdGVtQXR0cmlidXRlc0RpY3Rpb25hcnkgb2JqZWN0
Rm9yS2V5Ok5TRmlsZVN5c3RlbUZyZWVTaXplXSB1bnNpZ25lZExvbmdMb25nVmFsdWVdOwotICAg
IHJldHVybiB0cnVlOwotfQotCi1OU1N0cmluZyAqY3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KE5T
U3RyaW5nICpkaXJlY3RvcnlQcmVmaXgpCi17Ci0gICAgTlNTdHJpbmcgKnRlbXBEaXJlY3Rvcnkg
PSBOU1RlbXBvcmFyeURpcmVjdG9yeSgpOwotICAgIGlmICghdGVtcERpcmVjdG9yeSB8fCAhW3Rl
bXBEaXJlY3RvcnkgbGVuZ3RoXSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIGlmICghZGly
ZWN0b3J5UHJlZml4IHx8ICFbZGlyZWN0b3J5UHJlZml4IGxlbmd0aF0pCi0gICAgICAgIHJldHVy
biBuaWw7Ci0KLSAgICBOU1N0cmluZyAqdGVtcERpcmVjdG9yeUNvbXBvbmVudCA9IFtkaXJlY3Rv
cnlQcmVmaXggc3RyaW5nQnlBcHBlbmRpbmdTdHJpbmc6QCItWFhYWFhYWFgiXTsKLSAgICBjb25z
dCBjaGFyKiB0ZW1wRGlyZWN0b3J5Q1N0cmluZyA9IFtbdGVtcERpcmVjdG9yeSBzdHJpbmdCeUFw
cGVuZGluZ1BhdGhDb21wb25lbnQ6dGVtcERpcmVjdG9yeUNvbXBvbmVudF0gZmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uXTsKLSAgICBpZiAoIXRlbXBEaXJlY3RvcnlDU3RyaW5nKQotICAgICAgICBy
ZXR1cm4gbmlsOwotCi0gICAgY29uc3Qgc2l6ZV90IGxlbmd0aCA9IHN0cmxlbih0ZW1wRGlyZWN0
b3J5Q1N0cmluZyk7Ci0gICAgQVNTRVJUKGxlbmd0aCA8PSBNQVhQQVRITEVOKTsKLSAgICBpZiAo
bGVuZ3RoID4gTUFYUEFUSExFTikKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIGNvbnN0IHNp
emVfdCBsZW5ndGhQbHVzTnVsbFRlcm1pbmF0b3IgPSBsZW5ndGggKyAxOwotICAgIFZlY3Rvcjxj
aGFyLCBNQVhQQVRITEVOICsgMT4gcGF0aChsZW5ndGhQbHVzTnVsbFRlcm1pbmF0b3IpOwotICAg
IG1lbWNweShwYXRoLmRhdGEoKSwgdGVtcERpcmVjdG9yeUNTdHJpbmcsIGxlbmd0aFBsdXNOdWxs
VGVybWluYXRvcik7Ci0KLSAgICBpZiAoIW1rZHRlbXAocGF0aC5kYXRhKCkpKQotICAgICAgICBy
ZXR1cm4gbmlsOwotCi0gICAgcmV0dXJuIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0g
c3RyaW5nV2l0aEZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbjpwYXRoLmRhdGEoKSBsZW5ndGg6bGVu
Z3RoXTsKLX0KLQotYm9vbCBkZWxldGVOb25FbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBh
dGgpCi17Ci0gICAgcmV0dXJuIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gcmVtb3Zl
SXRlbUF0UGF0aDpwYXRoIGVycm9yOm5pbF07Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEZpbGVTeXN0
ZW0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dsaWIvRmlsZU1vbml0b3JHTGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dsaWIvRmlsZU1vbml0b3JHTGliLmNwcAppbmRleCA0NjNmMzI3NmMyNGUyNTFiZWI0YWEwOGIw
Yjk4OTg2ZThjYzk2OTIzLi41YTk4MmY0OTQ5MjM3Y2IyMGE5ZjU0Y2Y4OGUyYWRlZTQ4ZDRmOTZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0ZpbGVNb25pdG9yR0xp
Yi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9GaWxlTW9uaXRvckdMaWIu
Y3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRmls
ZU1vbml0b3IuaCIKIAotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlIDx3dGYvRmls
ZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3
dGYvdGhyZWFkcy9CaW5hcnlTZW1hcGhvcmUuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggY2E2YzNkZjk0ZGQzMjIxMzQzMDBjN2JiZDI2YmJiMDg5MDQ2NTYzMS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ3MCArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA5IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0
aGVyCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhLCBMdGQuCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogUG9ydGlvbnMgQ29w
eXJpZ2h0IChjKSAyMDEwIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgotCi0jaW5j
bHVkZSAiRmlsZU1ldGFkYXRhLmgiCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNs
dWRlIDxnaW8vZ2ZpbGVkZXNjcmlwdG9yYmFzZWQuaD4KLSNpbmNsdWRlIDxnaW8vZ2lvLmg+Ci0j
aW5jbHVkZSA8Z2xpYi5oPgotI2luY2x1ZGUgPGdsaWIvZ3N0ZGlvLmg+Ci0jaW5jbHVkZSA8c3lz
L2ZpbGUuaD4KLSNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgotI2luY2x1ZGUgPHd0Zi9VVUlE
Lmg+Ci0jaW5jbHVkZSA8d3RmL2dsaWIvR0xpYlV0aWxpdGllcy5oPgotI2luY2x1ZGUgPHd0Zi9n
bGliL0dSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+Ci0jaW5jbHVk
ZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIu
aD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1uYW1lc3BhY2UgRmlsZVN5c3RlbSB7Ci0KLS8qIE9uIGxpbnV4IGZpbGUgbmFtZXMgYXJl
IGp1c3QgcmF3IGJ5dGVzLCBzbyBhbHNvIHN0cmluZ3MgdGhhdCBjYW5ub3QgYmUgZW5jb2RlZCBp
biBhbnkgd2F5Ci0gKiBhcmUgdmFsaWQgZmlsZSBuYW1lcy4gVGhpcyBtZWFuIHRoYXQgd2UgY2Fu
bm90IGp1c3Qgc3RvcmUgYSBmaWxlIG5hbWUgYXMtaXMgaW4gYSBTdHJpbmcKLSAqIGJ1dCB3ZSBo
YXZlIHRvIGVzY2FwZSBpdC4KLSAqIE9uIFdpbmRvd3MgdGhlIEdMaWIgZmlsZSBuYW1lIGVuY29k
aW5nIGlzIGFsd2F5cyBVVEYtOCBzbyB3ZSBjYW4gb3B0aW1pemUgdGhpcyBjYXNlLiAqLwotU3Ry
aW5nIHN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgY2hhciogZmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKQotewotICAgIGlmICghZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSNpZiBPUyhXSU5ET1dTKQotICAgIHJldHVy
biBTdHJpbmc6OmZyb21VVEY4KGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbik7Ci0jZWxzZQotICAg
IEdVbmlxdWVQdHI8Z2NoYXI+IGVzY2FwZWRTdHJpbmcoZ191cmlfZXNjYXBlX3N0cmluZyhmaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24sICIvOiIsIEZBTFNFKSk7Ci0gICAgcmV0dXJuIGVzY2FwZWRT
dHJpbmcuZ2V0KCk7Ci0jZW5kaWYKLX0KLQotc3RhdGljIEdVbmlxdWVQdHI8Y2hhcj4gdW5lc2Nh
cGVkRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIGlmIChwYXRoLmlzRW1wdHko
KSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0jaWYgT1MoV0lORE9XUykKLSAgICByZXR1cm4g
R1VuaXF1ZVB0cjxjaGFyPihnX3N0cmR1cChwYXRoLnV0ZjgoKS5kYXRhKCkpKTsKLSNlbHNlCi0g
ICAgcmV0dXJuIEdVbmlxdWVQdHI8Y2hhcj4oZ191cmlfdW5lc2NhcGVfc3RyaW5nKHBhdGgudXRm
OCgpLmRhdGEoKSwgbnVsbHB0cikpOwotI2VuZGlmCi19Ci0KLUNTdHJpbmcgZmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSNpZiBPUyhXSU5ET1dTKQotICAg
IHJldHVybiBwYXRoLnV0ZjgoKTsKLSNlbHNlCi0gICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5h
bWUgPSB1bmVzY2FwZWRGaWxlbmFtZShwYXRoKTsKLSAgICByZXR1cm4gZmlsZW5hbWUuZ2V0KCk7
Ci0jZW5kaWYKLX0KLQotLy8gQ29udmVydHMgYSBzdHJpbmcgdG8gc29tZXRoaW5nIHN1aXRhYmxl
IHRvIGJlIGRpc3BsYXllZCB0byB0aGUgdXNlci4KLVN0cmluZyBmaWxlbmFtZUZvckRpc3BsYXko
Y29uc3QgU3RyaW5nJiBzdHJpbmcpCi17Ci0jaWYgT1MoV0lORE9XUykKLSAgICByZXR1cm4gc3Ry
aW5nOwotI2Vsc2UKLSAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZSA9IHVuZXNjYXBlZEZp
bGVuYW1lKHN0cmluZyk7Ci0gICAgaWYgKCFmaWxlbmFtZSkKLSAgICAgICAgcmV0dXJuIHN0cmlu
ZzsKLQotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGRpc3BsYXkoZ19maWxlbmFtZV90b191dGY4KGZp
bGVuYW1lLmdldCgpLCAtMSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikpOwotICAgIGlmICgh
ZGlzcGxheSkKLSAgICAgICAgcmV0dXJuIHN0cmluZzsKLQotICAgIHJldHVybiBTdHJpbmc6OmZy
b21VVEY4KGRpc3BsYXkuZ2V0KCkpOwotI2VuZGlmCi19Ci0KLWJvb2wgZmlsZUV4aXN0cyhjb25z
dCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUgPSB1bmVz
Y2FwZWRGaWxlbmFtZShwYXRoKTsKLSAgICByZXR1cm4gZmlsZW5hbWUgPyBnX2ZpbGVfdGVzdChm
aWxlbmFtZS5nZXQoKSwgR19GSUxFX1RFU1RfRVhJU1RTKSA6IGZhbHNlOwotfQotCi1ib29sIGRl
bGV0ZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZp
bGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUocGF0aCk7Ci0gICAgcmV0dXJuIGZpbGVuYW1lID8g
Z19yZW1vdmUoZmlsZW5hbWUuZ2V0KCkpICE9IC0xIDogZmFsc2U7Ci19Ci0KLWJvb2wgZGVsZXRl
RW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIEdVbmlxdWVQdHI8Z2No
YXI+IGZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUocGF0aCk7Ci0gICAgcmV0dXJuIGZpbGVu
YW1lID8gZ19ybWRpcihmaWxlbmFtZS5nZXQoKSkgIT0gLTEgOiBmYWxzZTsKLX0KLQotc3RhdGlj
IGJvb2wgZ2V0RmlsZVN0YXQoY29uc3QgU3RyaW5nJiBwYXRoLCBHU3RhdEJ1Ziogc3RhdEJ1ZmZl
cikKLXsKLSAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1l
KHBhdGgpOwotICAgIGlmICghZmlsZW5hbWUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IHJldHVybiBnX3N0YXQoZmlsZW5hbWUuZ2V0KCksIHN0YXRCdWZmZXIpICE9IC0xOwotfQotCi1z
dGF0aWMgYm9vbCBnZXRGaWxlTFN0YXQoY29uc3QgU3RyaW5nJiBwYXRoLCBHU3RhdEJ1Ziogc3Rh
dEJ1ZmZlcikKLXsKLSAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZSA9IHVuZXNjYXBlZEZp
bGVuYW1lKHBhdGgpOwotICAgIGlmICghZmlsZW5hbWUpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIHJldHVybiBnX2xzdGF0KGZpbGVuYW1lLmdldCgpLCBzdGF0QnVmZmVyKSAhPSAtMTsK
LX0KLQotYm9vbCBnZXRGaWxlU2l6ZShjb25zdCBTdHJpbmcmIHBhdGgsIGxvbmcgbG9uZyYgcmVz
dWx0U2l6ZSkKLXsKLSAgICBHU3RhdEJ1ZiBzdGF0UmVzdWx0OwotICAgIGlmICghZ2V0RmlsZVN0
YXQocGF0aCwgJnN0YXRSZXN1bHQpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXN1
bHRTaXplID0gc3RhdFJlc3VsdC5zdF9zaXplOwotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29s
IGdldEZpbGVTaXplKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGxvbmcgbG9uZyYgcmVzdWx0
U2l6ZSkKLXsKLSAgICBhdXRvIGluZm8gPSBnX2ZpbGVfaW9fc3RyZWFtX3F1ZXJ5X2luZm8oaGFu
ZGxlLCBHX0ZJTEVfQVRUUklCVVRFX1NUQU5EQVJEX1NJWkUsIG51bGxwdHIsIG51bGxwdHIpOwot
ICAgIGlmICghaW5mbykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmVzdWx0U2l6ZSA9
IGdfZmlsZV9pbmZvX2dldF9zaXplKGluZm8pOwotICAgIHJldHVybiB0cnVlOwotfQotCi1PcHRp
b25hbDxXYWxsVGltZT4gZ2V0RmlsZUNyZWF0aW9uVGltZShjb25zdCBTdHJpbmcmKQotewotICAg
IC8vIEZJWE1FOiBJcyB0aGVyZSBhIHdheSB0byByZXRyaWV2ZSBmaWxlIGNyZWF0aW9uIHRpbWUg
d2l0aCBHdGsgb24gcGxhdGZvcm1zIHRoYXQgc3VwcG9ydCBpdD8KLSAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwotfQotCi1PcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUo
Y29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIEdTdGF0QnVmIHN0YXRSZXN1bHQ7Ci0gICAgaWYg
KCFnZXRGaWxlU3RhdChwYXRoLCAmc3RhdFJlc3VsdCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7Ci0KLSAgICByZXR1cm4gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKHN0YXRSZXN1bHQu
c3RfbXRpbWUpOwotfQotCi1zdGF0aWMgRmlsZU1ldGFkYXRhOjpUeXBlIHRvRmlsZU1ldGF0YVR5
cGUoR1N0YXRCdWYgc3RhdFJlc3VsdCkKLXsKLSAgICBpZiAoU19JU0RJUihzdGF0UmVzdWx0LnN0
X21vZGUpKQotICAgICAgICByZXR1cm4gRmlsZU1ldGFkYXRhOjpUeXBlOjpEaXJlY3Rvcnk7Ci0g
ICAgaWYgKFNfSVNMTksoc3RhdFJlc3VsdC5zdF9tb2RlKSkKLSAgICAgICAgcmV0dXJuIEZpbGVN
ZXRhZGF0YTo6VHlwZTo6U3ltYm9saWNMaW5rOwotICAgIHJldHVybiBGaWxlTWV0YWRhdGE6OlR5
cGU6OkZpbGU7Ci19Ci0KLXN0YXRpYyBPcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0
YVVzaW5nRnVuY3Rpb24oY29uc3QgU3RyaW5nJiBwYXRoLCBib29sICgqc3RhdEZ1bmMpKGNvbnN0
IFN0cmluZyYsIEdTdGF0QnVmKikpCi17Ci0gICAgR1N0YXRCdWYgc3RhdFJlc3VsdDsKLSAgICBp
ZiAoIXN0YXRGdW5jKHBhdGgsICZzdGF0UmVzdWx0KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKLQotICAgIFN0cmluZyBmaWxlbmFtZSA9IHBhdGhHZXRGaWxlTmFtZShwYXRoKTsKLSAg
ICBib29sIGlzSGlkZGVuID0gIWZpbGVuYW1lLmlzRW1wdHkoKSAmJiBmaWxlbmFtZVswXSA9PSAn
Lic7Ci0KLSAgICByZXR1cm4gRmlsZU1ldGFkYXRhIHsKLSAgICAgICAgV2FsbFRpbWU6OmZyb21S
YXdTZWNvbmRzKHN0YXRSZXN1bHQuc3RfbXRpbWUpLAotICAgICAgICBzdGF0UmVzdWx0LnN0X3Np
emUsCi0gICAgICAgIGlzSGlkZGVuLAotICAgICAgICB0b0ZpbGVNZXRhdGFUeXBlKHN0YXRSZXN1
bHQpCi0gICAgfTsKLX0KLQotT3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGEoY29u
c3QgU3RyaW5nJiBwYXRoKQotewotICAgIHJldHVybiBmaWxlTWV0YWRhdGFVc2luZ0Z1bmN0aW9u
KHBhdGgsICZnZXRGaWxlTFN0YXQpOwotfQotCi1PcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVN
ZXRhZGF0YUZvbGxvd2luZ1N5bWxpbmtzKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICByZXR1
cm4gZmlsZU1ldGFkYXRhVXNpbmdGdW5jdGlvbihwYXRoLCAmZ2V0RmlsZVN0YXQpOwotfQotCi1T
dHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3Qg
U3RyaW5nJiBjb21wb25lbnQpCi17Ci0gICAgaWYgKHBhdGguZW5kc1dpdGgoR19ESVJfU0VQQVJB
VE9SX1MpKQotICAgICAgICByZXR1cm4gcGF0aCArIGNvbXBvbmVudDsKLSAgICByZXR1cm4gcGF0
aCArIEdfRElSX1NFUEFSQVRPUl9TICsgY29tcG9uZW50OwotfQotCi1TdHJpbmcgcGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50cyhTdHJpbmdWaWV3IHBhdGgsIGNvbnN0IFZlY3RvcjxTdHJpbmdWaWV3
PiYgY29tcG9uZW50cykKLXsKLSAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgYnVpbGRl
ci5hcHBlbmQocGF0aCk7Ci0gICAgZm9yIChhdXRvJiBjb21wb25lbnQgOiBjb21wb25lbnRzKSB7
Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKEdfRElSX1NFUEFSQVRPUl9TKTsKLSAgICAgICAgYnVp
bGRlci5hcHBlbmQoY29tcG9uZW50KTsKLSAgICB9Ci0gICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJp
bmcoKTsKLX0KLQotYm9vbCBtYWtlQWxsRGlyZWN0b3JpZXMoY29uc3QgU3RyaW5nJiBwYXRoKQot
ewotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUocGF0
aCk7Ci0gICAgcmV0dXJuIGZpbGVuYW1lID8gZ19ta2Rpcl93aXRoX3BhcmVudHMoZmlsZW5hbWUu
Z2V0KCksIFNfSVJXWFUpICE9IC0xIDogZmFsc2U7Ci19Ci0KLVN0cmluZyBob21lRGlyZWN0b3J5
UGF0aCgpCi17Ci0gICAgcmV0dXJuIHN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
Z19nZXRfaG9tZV9kaXIoKSk7Ci19Ci0KLWJvb2wgY3JlYXRlU3ltYm9saWNMaW5rKGNvbnN0IFN0
cmluZyYgdGFyZ2V0UGF0aCwgY29uc3QgU3RyaW5nJiBzeW1ib2xpY0xpbmtQYXRoKQotewotICAg
IENTdHJpbmcgdGFyZ2V0UGF0aEZTUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHRhcmdl
dFBhdGgpOwotICAgIGlmICghdGFyZ2V0UGF0aEZTUmVwLmRhdGEoKSB8fCB0YXJnZXRQYXRoRlNS
ZXAuZGF0YSgpWzBdID09ICdcMCcpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIENTdHJp
bmcgc3ltYm9saWNMaW5rUGF0aEZTUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHN5bWJv
bGljTGlua1BhdGgpOwotICAgIGlmICghc3ltYm9saWNMaW5rUGF0aEZTUmVwLmRhdGEoKSB8fCBz
eW1ib2xpY0xpbmtQYXRoRlNSZXAuZGF0YSgpWzBdID09ICdcMCcpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIHJldHVybiAhc3ltbGluayh0YXJnZXRQYXRoRlNSZXAuZGF0YSgpLCBzeW1i
b2xpY0xpbmtQYXRoRlNSZXAuZGF0YSgpKTsKLX0KLQotU3RyaW5nIHBhdGhHZXRGaWxlTmFtZShj
b25zdCBTdHJpbmcmIHBhdGhOYW1lKQotewotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHRtcEZpbGVu
YW1lID0gdW5lc2NhcGVkRmlsZW5hbWUocGF0aE5hbWUpOwotICAgIGlmICghdG1wRmlsZW5hbWUp
Ci0gICAgICAgIHJldHVybiBwYXRoTmFtZTsKLQotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGJhc2VO
YW1lKGdfcGF0aF9nZXRfYmFzZW5hbWUodG1wRmlsZW5hbWUuZ2V0KCkpKTsKLSAgICByZXR1cm4g
U3RyaW5nOjpmcm9tVVRGOChiYXNlTmFtZS5nZXQoKSk7Ci19Ci0KLWJvb2wgZ2V0Vm9sdW1lRnJl
ZVNwYWNlKGNvbnN0IFN0cmluZyYgcGF0aCwgdWludDY0X3QmIGZyZWVTcGFjZSkKLXsKLSAgICBH
VW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGgpOwotICAg
IGlmICghZmlsZW5hbWUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIEdSZWZQdHI8R0Zp
bGU+IGZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0aChmaWxlbmFtZS5nZXQoKSkp
OwotICAgIEdSZWZQdHI8R0ZpbGVJbmZvPiBmaWxlSW5mbyA9IGFkb3B0R1JlZihnX2ZpbGVfcXVl
cnlfZmlsZXN5c3RlbV9pbmZvKGZpbGUuZ2V0KCksIEdfRklMRV9BVFRSSUJVVEVfRklMRVNZU1RF
TV9GUkVFLCAwLCAwKSk7Ci0gICAgaWYgKCFmaWxlSW5mbykKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgZnJlZVNwYWNlID0gZ19maWxlX2luZm9fZ2V0X2F0dHJpYnV0ZV91aW50NjQoZmls
ZUluZm8uZ2V0KCksIEdfRklMRV9BVFRSSUJVVEVfRklMRVNZU1RFTV9GUkVFKTsKLSAgICByZXR1
cm4gISFmcmVlU3BhY2U7Ci19Ci0KLVN0cmluZyBkaXJlY3RvcnlOYW1lKGNvbnN0IFN0cmluZyYg
cGF0aCkKLXsKLSAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVu
YW1lKHBhdGgpOwotICAgIGlmICghZmlsZW5hbWUpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsK
LQotICAgIEdVbmlxdWVQdHI8Y2hhcj4gZGlybmFtZShnX3BhdGhfZ2V0X2Rpcm5hbWUoZmlsZW5h
bWUuZ2V0KCkpKTsKLSAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChkaXJuYW1lLmdldCgpKTsK
LX0KLQotVmVjdG9yPFN0cmluZz4gbGlzdERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIGNv
bnN0IFN0cmluZyYgZmlsdGVyKQotewotICAgIFZlY3RvcjxTdHJpbmc+IGVudHJpZXM7Ci0KLSAg
ICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGgpOwot
ICAgIGlmICghZmlsZW5hbWUpCi0gICAgICAgIHJldHVybiBlbnRyaWVzOwotCi0gICAgR1VuaXF1
ZVB0cjxHRGlyPiBkaXIoZ19kaXJfb3BlbihmaWxlbmFtZS5nZXQoKSwgMCwgbnVsbHB0cikpOwot
ICAgIGlmICghZGlyKQotICAgICAgICByZXR1cm4gZW50cmllczsKLQotICAgIEdVbmlxdWVQdHI8
R1BhdHRlcm5TcGVjPiBwc3BlYyhnX3BhdHRlcm5fc3BlY19uZXcoKGZpbHRlci51dGY4KCkpLmRh
dGEoKSkpOwotICAgIHdoaWxlIChjb25zdCBjaGFyKiBuYW1lID0gZ19kaXJfcmVhZF9uYW1lKGRp
ci5nZXQoKSkpIHsKLSAgICAgICAgaWYgKCFnX3BhdHRlcm5fbWF0Y2hfc3RyaW5nKHBzcGVjLmdl
dCgpLCBuYW1lKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIEdVbmlxdWVQdHI8
Z2NoYXI+IGVudHJ5KGdfYnVpbGRfZmlsZW5hbWUoZmlsZW5hbWUuZ2V0KCksIG5hbWUsIG51bGxw
dHIpKTsKLSAgICAgICAgZW50cmllcy5hcHBlbmQoc3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihlbnRyeS5nZXQoKSkpOwotICAgIH0KLQotICAgIHJldHVybiBlbnRyaWVzOwotfQot
Ci1TdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3Jt
RmlsZUhhbmRsZSYgaGFuZGxlKQotewotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lKGdf
c3RyZHVwX3ByaW50ZigiJXMlcyIsIHByZWZpeC51dGY4KCkuZGF0YSgpLCBjcmVhdGVDYW5vbmlj
YWxVVUlEU3RyaW5nKCkudXRmOCgpLmRhdGEoKSkpOwotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHRl
bXBQYXRoKGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdG1wX2RpcigpLCBmaWxlbmFtZS5nZXQoKSwg
TlVMTCkpOwotICAgIEdSZWZQdHI8R0ZpbGU+IGZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19m
b3JfcGF0aCh0ZW1wUGF0aC5nZXQoKSkpOwotCi0gICAgaGFuZGxlID0gZ19maWxlX2NyZWF0ZV9y
ZWFkd3JpdGUoZmlsZS5nZXQoKSwgR19GSUxFX0NSRUFURV9OT05FLCAwLCAwKTsKLSAgICBpZiAo
IWlzSGFuZGxlVmFsaWQoaGFuZGxlKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIHJl
dHVybiBTdHJpbmc6OmZyb21VVEY4KHRlbXBQYXRoLmdldCgpKTsKLX0KLQotUGxhdGZvcm1GaWxl
SGFuZGxlIG9wZW5GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlIG1vZGUpCi17
Ci0gICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShwYXRo
KTsKLSAgICBpZiAoIWZpbGVuYW1lKQotICAgICAgICByZXR1cm4gaW52YWxpZFBsYXRmb3JtRmls
ZUhhbmRsZTsKLQotICAgIEdSZWZQdHI8R0ZpbGU+IGZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25l
d19mb3JfcGF0aChmaWxlbmFtZS5nZXQoKSkpOwotICAgIEdGaWxlSU9TdHJlYW0qIGlvU3RyZWFt
ID0gMDsKLSAgICBpZiAobW9kZSA9PSBGaWxlT3Blbk1vZGU6OlJlYWQpCi0gICAgICAgIGlvU3Ry
ZWFtID0gZ19maWxlX29wZW5fcmVhZHdyaXRlKGZpbGUuZ2V0KCksIDAsIDApOwotICAgIGVsc2Ug
aWYgKG1vZGUgPT0gRmlsZU9wZW5Nb2RlOjpXcml0ZSkgewotICAgICAgICBpZiAoZ19maWxlX3Rl
c3QoZmlsZW5hbWUuZ2V0KCksIHN0YXRpY19jYXN0PEdGaWxlVGVzdD4oR19GSUxFX1RFU1RfRVhJ
U1RTIHwgR19GSUxFX1RFU1RfSVNfUkVHVUxBUikpKQotICAgICAgICAgICAgaW9TdHJlYW0gPSBn
X2ZpbGVfb3Blbl9yZWFkd3JpdGUoZmlsZS5nZXQoKSwgMCwgMCk7Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIGlvU3RyZWFtID0gZ19maWxlX2NyZWF0ZV9yZWFkd3JpdGUoZmlsZS5nZXQoKSwg
R19GSUxFX0NSRUFURV9OT05FLCAwLCAwKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gaW9TdHJlYW07
Ci19Ci0KLXZvaWQgY2xvc2VGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKQotewotICAg
IGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnX2lv
X3N0cmVhbV9jbG9zZShHX0lPX1NUUkVBTShoYW5kbGUpLCAwLCAwKTsKLSAgICBnX29iamVjdF91
bnJlZihoYW5kbGUpOwotICAgIGhhbmRsZSA9IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7Ci19
Ci0KLWxvbmcgbG9uZyBzZWVrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBsb25nIGxv
bmcgb2Zmc2V0LCBGaWxlU2Vla09yaWdpbiBvcmlnaW4pCi17Ci0gICAgR1NlZWtUeXBlIHNlZWtU
eXBlID0gR19TRUVLX1NFVDsKLSAgICBzd2l0Y2ggKG9yaWdpbikgewotICAgIGNhc2UgRmlsZVNl
ZWtPcmlnaW46OkJlZ2lubmluZzoKLSAgICAgICAgc2Vla1R5cGUgPSBHX1NFRUtfU0VUOwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIEZpbGVTZWVrT3JpZ2luOjpDdXJyZW50OgotICAgICAgICBz
ZWVrVHlwZSA9IEdfU0VFS19DVVI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRmlsZVNlZWtP
cmlnaW46OkVuZDoKLSAgICAgICAgc2Vla1R5cGUgPSBHX1NFRUtfRU5EOwotICAgICAgICBicmVh
azsKLSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci0K
LSAgICBpZiAoIWdfc2Vla2FibGVfc2VlayhHX1NFRUtBQkxFKGdfaW9fc3RyZWFtX2dldF9pbnB1
dF9zdHJlYW0oR19JT19TVFJFQU0oaGFuZGxlKSkpLAotICAgICAgICBvZmZzZXQsIHNlZWtUeXBl
LCAwLCAwKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgcmV0dXJuIGdf
c2Vla2FibGVfdGVsbChHX1NFRUtBQkxFKGdfaW9fc3RyZWFtX2dldF9pbnB1dF9zdHJlYW0oR19J
T19TVFJFQU0oaGFuZGxlKSkpKTsKLX0KLQotaW50IHdyaXRlVG9GaWxlKFBsYXRmb3JtRmlsZUhh
bmRsZSBoYW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCi17Ci0gICAgZ3NpemUg
Ynl0ZXNXcml0dGVuOwotICAgIGdfb3V0cHV0X3N0cmVhbV93cml0ZV9hbGwoZ19pb19zdHJlYW1f
Z2V0X291dHB1dF9zdHJlYW0oR19JT19TVFJFQU0oaGFuZGxlKSksCi0gICAgICAgIGRhdGEsIGxl
bmd0aCwgJmJ5dGVzV3JpdHRlbiwgMCwgMCk7Ci0gICAgcmV0dXJuIGJ5dGVzV3JpdHRlbjsKLX0K
LQotaW50IHJlYWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBjaGFyKiBkYXRh
LCBpbnQgbGVuZ3RoKQotewotICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKLSAgICBk
byB7Ci0gICAgICAgIGdzc2l6ZSBieXRlc1JlYWQgPSBnX2lucHV0X3N0cmVhbV9yZWFkKGdfaW9f
c3RyZWFtX2dldF9pbnB1dF9zdHJlYW0oR19JT19TVFJFQU0oaGFuZGxlKSksCi0gICAgICAgICAg
ICBkYXRhLCBsZW5ndGgsIDAsICZlcnJvci5vdXRQdHIoKSk7Ci0gICAgICAgIGlmIChieXRlc1Jl
YWQgPj0gMCkKLSAgICAgICAgICAgIHJldHVybiBieXRlc1JlYWQ7Ci0gICAgfSB3aGlsZSAoZXJy
b3IgJiYgZXJyb3ItPmNvZGUgPT0gR19GSUxFX0VSUk9SX0lOVFIpOwotICAgIHJldHVybiAtMTsK
LX0KLQotYm9vbCBtb3ZlRmlsZShjb25zdCBTdHJpbmcmIG9sZFBhdGgsIGNvbnN0IFN0cmluZyYg
bmV3UGF0aCkKLXsKLSAgICBHVW5pcXVlUHRyPGdjaGFyPiBvbGRGaWxlbmFtZSA9IHVuZXNjYXBl
ZEZpbGVuYW1lKG9sZFBhdGgpOwotICAgIGlmICghb2xkRmlsZW5hbWUpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IG5ld0ZpbGVuYW1lID0gdW5lc2NhcGVk
RmlsZW5hbWUobmV3UGF0aCk7Ci0gICAgaWYgKCFuZXdGaWxlbmFtZSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgR1JlZlB0cjxHRmlsZT4gb2xkRmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVf
bmV3X2Zvcl9wYXRoKG9sZEZpbGVuYW1lLmdldCgpKSk7Ci0gICAgR1JlZlB0cjxHRmlsZT4gbmV3
RmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKG5ld0ZpbGVuYW1lLmdldCgpKSk7
Ci0KLSAgICByZXR1cm4gZ19maWxlX21vdmUob2xkRmlsZS5nZXQoKSwgbmV3RmlsZS5nZXQoKSwg
R19GSUxFX0NPUFlfT1ZFUldSSVRFLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRy
KTsKLX0KLQotYm9vbCBoYXJkTGlua09yQ29weUZpbGUoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNv
bnN0IFN0cmluZyYgZGVzdGluYXRpb24pCi17Ci0jaWYgT1MoV0lORE9XUykKLSAgICByZXR1cm4g
ISE6OkNvcHlGaWxlKHNvdXJjZS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEo
KSwgZGVzdGluYXRpb24uY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCksIFRS
VUUpOwotI2Vsc2UKLSAgICBHVW5pcXVlUHRyPGdjaGFyPiBzb3VyY2VGaWxlbmFtZSA9IHVuZXNj
YXBlZEZpbGVuYW1lKHNvdXJjZSk7Ci0gICAgaWYgKCFzb3VyY2VGaWxlbmFtZSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgR1VuaXF1ZVB0cjxnY2hhcj4gZGVzdGluYXRpb25GaWxlbmFt
ZSA9IHVuZXNjYXBlZEZpbGVuYW1lKGRlc3RpbmF0aW9uKTsKLSAgICBpZiAoIWRlc3RpbmF0aW9u
RmlsZW5hbWUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmICghbGluayhzb3VyY2VG
aWxlbmFtZS5nZXQoKSwgZGVzdGluYXRpb25GaWxlbmFtZS5nZXQoKSkpCi0gICAgICAgIHJldHVy
biB0cnVlOwotCi0gICAgLy8gSGFyZCBsaW5rIGZhaWxlZC4gUGVyZm9ybSBhIGNvcHkgaW5zdGVh
ZC4KLSAgICBHUmVmUHRyPEdGaWxlPiBzb3VyY2VGaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdf
Zm9yX3BhdGgoc291cmNlRmlsZW5hbWUuZ2V0KCkpKTsKLSAgICBHUmVmUHRyPEdGaWxlPiBkZXN0
aW5hdGlvbkZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0aChkZXN0aW5hdGlvbkZp
bGVuYW1lLmdldCgpKSk7Ci0gICAgcmV0dXJuIGdfZmlsZV9jb3B5KHNvdXJjZUZpbGUuZ2V0KCks
IGRlc3RpbmF0aW9uRmlsZS5nZXQoKSwgR19GSUxFX0NPUFlfTk9ORSwgbnVsbHB0ciwgbnVsbHB0
ciwgbnVsbHB0ciwgbnVsbHB0cik7Ci0jZW5kaWYKLX0KLQotT3B0aW9uYWw8aW50MzJfdD4gZ2V0
RmlsZURldmljZUlkKGNvbnN0IENTdHJpbmcmIGZzRmlsZSkKLXsKLSAgICBHVW5pcXVlUHRyPGdj
aGFyPiBmaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKGZzRmlsZS5kYXRhKCkpOwotICAgIGlm
ICghZmlsZW5hbWUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBHUmVmUHRy
PEdGaWxlPiBmaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoZmlsZW5hbWUuZ2V0
KCkpKTsKLSAgICBHUmVmUHRyPEdGaWxlSW5mbz4gZmlsZUluZm8gPSBhZG9wdEdSZWYoZ19maWxl
X3F1ZXJ5X2ZpbGVzeXN0ZW1faW5mbyhmaWxlLmdldCgpLCBHX0ZJTEVfQVRUUklCVVRFX1VOSVhf
REVWSUNFLCBudWxscHRyLCBudWxscHRyKSk7Ci0gICAgaWYgKCFmaWxlSW5mbykKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIHJldHVybiBnX2ZpbGVfaW5mb19nZXRfYXR0cmli
dXRlX3VpbnQzMihmaWxlSW5mby5nZXQoKSwgR19GSUxFX0FUVFJJQlVURV9VTklYX0RFVklDRSk7
Ci19Ci0KLSNpZiBVU0UoRklMRV9MT0NLKQotYm9vbCBsb2NrRmlsZShQbGF0Zm9ybUZpbGVIYW5k
bGUgaGFuZGxlLCBPcHRpb25TZXQ8RmlsZUxvY2tNb2RlPiBsb2NrTW9kZSkKLXsKLSAgICBDT01Q
SUxFX0FTU0VSVChMT0NLX1NIID09IFdURjo6ZW51bVRvVW5kZXJseWluZ1R5cGUoRmlsZUxvY2tN
b2RlOjpTaGFyZWQpLCBMb2NrU2hhcmVkRW5jb2RpbmdJc0FzRXhwZWN0ZWQpOwotICAgIENPTVBJ
TEVfQVNTRVJUKExPQ0tfRVggPT0gV1RGOjplbnVtVG9VbmRlcmx5aW5nVHlwZShGaWxlTG9ja01v
ZGU6OkV4Y2x1c2l2ZSksIExvY2tFeGNsdXNpdmVFbmNvZGluZ0lzQXNFeHBlY3RlZCk7Ci0gICAg
Q09NUElMRV9BU1NFUlQoTE9DS19OQiA9PSBXVEY6OmVudW1Ub1VuZGVybHlpbmdUeXBlKEZpbGVM
b2NrTW9kZTo6Tm9uYmxvY2tpbmcpLCBMb2NrTm9uYmxvY2tpbmdFbmNvZGluZ0lzQXNFeHBlY3Rl
ZCk7Ci0gICAgYXV0byogaW5wdXRTdHJlYW0gPSBnX2lvX3N0cmVhbV9nZXRfaW5wdXRfc3RyZWFt
KEdfSU9fU1RSRUFNKGhhbmRsZSkpOwotICAgIGludCByZXN1bHQgPSBmbG9jayhnX2ZpbGVfZGVz
Y3JpcHRvcl9iYXNlZF9nZXRfZmQoR19GSUxFX0RFU0NSSVBUT1JfQkFTRUQoaW5wdXRTdHJlYW0p
KSwgbG9ja01vZGUudG9SYXcoKSk7Ci0gICAgcmV0dXJuIHJlc3VsdCAhPSAtMTsKLX0KLQotYm9v
bCB1bmxvY2tGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUpCi17Ci0gICAgYXV0byogaW5w
dXRTdHJlYW0gPSBnX2lvX3N0cmVhbV9nZXRfaW5wdXRfc3RyZWFtKEdfSU9fU1RSRUFNKGhhbmRs
ZSkpOwotICAgIGludCByZXN1bHQgPSBmbG9jayhnX2ZpbGVfZGVzY3JpcHRvcl9iYXNlZF9nZXRf
ZmQoR19GSUxFX0RFU0NSSVBUT1JfQkFTRUQoaW5wdXRTdHJlYW0pKSwgTE9DS19VTik7Ci0gICAg
cmV0dXJuIHJlc3VsdCAhPSAtMTsKLX0KLSNlbmRpZiAvLyBVU0UoRklMRV9MT0NLKQotCi19IC8v
IG5hbWVzcGFjZSBGaWxlU3lzdGVtCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcAppbmRleCBiNDg5
NmMwODU0NjBlN2MwYmU1NjQwODRlYzg4ZWYyMmFmNjBiODQ0Li5jNzQ3MzU3NTMwN2Y2ZjdkZDRh
OWYyMzYxYWVmMjVjYTM2OTc2ZTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAKQEAgLTE5LDcgKzE5LDYgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKIAotI2luY2x1ZGUgIkZpbGVTeXN0
ZW0uaCIKICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNl
c3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLm1tCmluZGV4IGU4ZGQzYjVhZWM4MjkzY2Q1ZWQ5NmU5
OGYxMDM1ZWU1M2UyOGM3YjQuLjI0Zjk1ZTg0NDEzNjdlMjIxOWNhMjI2NDQ1ZTg2MjI4ZjU3OTQ4
MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNv
bnRlbnRLZXlTZXNzaW9uLm1tCkBAIC0yOSw3ICsyOSw2IEBACiAjaWYgRU5BQkxFKExFR0FDWV9F
TkNSWVBURURfTUVESUEpICYmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiAKICNpbXBvcnQgIkNETVBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCIKLSNpbXBvcnQgIkZpbGVTeXN0ZW0uaCIKICNpbXBv
cnQgIkxlZ2FjeUNETS5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiTWVkaWFQbGF5
ZXIuaCIKQEAgLTM5LDYgKzM4LDcgQEAKICNpbXBvcnQgPENvcmVNZWRpYS9DTUJhc2UuaD4KICNp
bXBvcnQgPEphdmFTY3JpcHRDb3JlL1R5cGVkQXJyYXlJbmxpbmVzLmg+CiAjaW1wb3J0IDxvYmpj
L29iamMtcnVudGltZS5oPgorI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0
Zi9Tb2Z0TGlua2luZy5oPgogCiBTT0ZUX0xJTktfRlJBTUVXT1JLX09QVElPTkFMKEFWRm91bmRh
dGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVlN0cmVhbVNlc3Npb24ubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZTdHJlYW1T
ZXNzaW9uLm1tCmluZGV4IDk5Mjk0MzE1ZDg2MjQxYjE2OGYyOGFhNzJlZGRlMGQ5N2NmNGE3OGMu
LmMzNTczZTVjNjA4MWM5OWIxNDA0ZTBlNDFjNTBlMDQ5ZTI5MWEyMmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Np
b25BVlN0cmVhbVNlc3Npb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbi5tbQpAQCAtMjks
NyArMjksNiBAQAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSAmJiBFTkFCTEUo
TUVESUFfU09VUkNFKQogCiAjaW1wb3J0ICJDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgi
Ci0jaW1wb3J0ICJGaWxlU3lzdGVtLmgiCiAjaW1wb3J0ICJMZWdhY3lDRE0uaCIKICNpbXBvcnQg
IkxvZ2dpbmcuaCIKICNpbXBvcnQgIk1lZGlhUGxheWVyLmgiCkBAIC00MCw2ICszOSw3IEBACiAj
aW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9UeXBlZEFycmF5SW5saW5lcy5oPgogI2ltcG9ydCA8b2Jq
Yy9vYmpjLXJ1bnRpbWUuaD4KICNpbXBvcnQgPHBhbC9zcGkvbWFjL0FWRm91bmRhdGlvblNQSS5o
PgorI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5o
PgogI2ltcG9ydCA8d3RmL1VVSUQuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZG
T2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0NETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMubW0KaW5kZXggMmNiMmQ2ZmEwY2Q4ZWZh
NDIzMTg5MWEwOTgxOTgzYzliOGMwNzdlNC4uZWM1ODM3OGE4YmViNmE1NzUzZDAyZGE0OWZlZGFi
NjZlZWI1OTdjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNz
aW9uTWVkaWFTb3VyY2VBVkZPYmpDLm1tCkBAIC0yOSw5ICsyOSw5IEBACiAjaWYgRU5BQkxFKExF
R0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiAKICNpbXBvcnQg
IkNETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCIKLSNpbXBvcnQgIkZpbGVTeXN0ZW0uaCIK
ICNpbXBvcnQgIldlYkNvcmVOU0Vycm9yRXh0cmFzLmgiCiAjaW1wb3J0IDxBVkZvdW5kYXRpb24v
QVZFcnJvci5oPgorI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KaW5kZXggNWUzNmRkMDA2OTMwNzUwMTEy
YjcxM2ZkYzRlNWFlYTRkMTBhOWMwOS4uZDZkNWU4MmIyMzc3NmZkNjI3N2UyOWI2OWRlYjY2Mjlm
OGM5MThjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQpAQCAtMzEsNyArMzEsNiBAQAog
I2ltcG9ydCAiQVZBc3NldFRyYWNrVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJBVkZvdW5kYXRpb25N
SU1FVHlwZUNhY2hlLmgiCiAjaW1wb3J0ICJDRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLmgiCi0j
aW1wb3J0ICJGaWxlU3lzdGVtLmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRDRy5oIgogI2lt
cG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5oIgpA
QCAtNDksNiArNDgsNyBAQAogI2ltcG9ydCA8cGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZv
dW5kYXRpb24uaD4KICNpbXBvcnQgPHBhbC9zcGkvbWFjL0FWRm91bmRhdGlvblNQSS5oPgogI2lt
cG9ydCA8d3RmL0RlcXVlLmg+CisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8
d3RmL01haW5UaHJlYWQuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDBmMDVl
YjkxOTlkYmYzZTQ5ZTFhMTJlMDc1NjZlZWM0ODkxZGUxNzcuLjQxNDBjMTFiMGVhNDc5OGU2NjBk
NjQ5NTgwZmVjYWFkM2MyNmQ0YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpZiBFTkFCTEUoVklERU8p
ICYmIFVTRShHU1RSRUFNRVIpCiAKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAi
R1N0cmVhbWVyQ29tbW9uLmgiCiAjaW5jbHVkZSAiSFRUUEhlYWRlck5hbWVzLmgiCiAjaW5jbHVk
ZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgpAQCAtNDIsNiArNDEsNyBAQAogI2luY2x1ZGUgPGdzdC9n
c3QuaD4KICNpbmNsdWRlIDxnc3QvcGJ1dGlscy9taXNzaW5nLXBsdWdpbnMuaD4KICNpbmNsdWRl
IDxsaW1pdHM+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvSGV4
TnVtYmVyLmg+CiAjaW5jbHVkZSA8d3RmL01lZGlhVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1F1
aWNrTG9vay5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9RdWlja0xvb2subW0KaW5k
ZXggN2JmOTFiMmZhZGMzMTJhYjNiN2U4NjJhNTgzNTBlYzU0OGQwMWJiNy4uYTlkOWU0NzEwNTAx
N2Q2NGQ4MmUzN2M4YWEzMWNlNjQ2OTAyNTY4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1F1aWNrTG9vay5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvUXVpY2tMb29rLm1tCkBAIC0yOCwxMiArMjgsMTIgQEAKIAogI2lmIFVTRShRVUlDS19MT09L
KQogCi0jaW1wb3J0ICJGaWxlU3lzdGVtLmgiCiAjaW1wb3J0ICJQcmV2aWV3Q29udmVydGVyLmgi
CiAjaW1wb3J0ICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbXBvcnQgIlNjaGVtZVJlZ2lzdHJ5Lmgi
CiAjaW1wb3J0IDxwYWwvaW9zL1F1aWNrTG9va1NvZnRMaW5rLmg+CiAjaW1wb3J0IDxwYWwvc3Bp
L2NvY29hL05TRmlsZU1hbmFnZXJTUEkuaD4KKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAj
aW1wb3J0IDx3dGYvTG9jay5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0
ZWJvYXJkLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBh
c3RlYm9hcmQubW0KaW5kZXggYmY4MjE4Mzk5MTVlODBkNTg5OWE5NDg5OTlmMmYwMjA2ZDhjZmYz
YS4uMzU0NWQ3ZWZjYWM4Njc2NDhmNDlhNDc0ZThhMDIwYjUxYzg4ZDRkYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9h
cmQubW0KQEAgLTM0LDExICszNCwxMSBAQAogI2ltcG9ydCA8VUlLaXQvTlNJdGVtUHJvdmlkZXIr
VUlLaXRBZGRpdGlvbnMuaD4KICNpbXBvcnQgPFVJS2l0L1VJQ29sb3IuaD4KICNpbXBvcnQgPFVJ
S2l0L1VJSW1hZ2UuaD4KLSNpbXBvcnQgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9QYXN0ZWJvYXJkLmg+CiAjaW1wb3J0IDxwYWwvaW9zL1VJS2l0U29mdExpbmsuaD4K
ICNpbXBvcnQgPHBhbC9zcGkvaW9zL1VJS2l0U1BJLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIu
aD4KKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDx3dGYvT1NPYmplY3RQdHIu
aD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIApAQCAtNjk0LDcgKzY5NCw3IEBAIHN0YXRp
YyBOU1VSTCAqbGlua1RlbXBvcmFyeUl0ZW1Qcm92aWRlckZpbGVzVG9Ecm9wU3RhZ2luZ0RpcmVj
dG9yeShOU1VSTCAqdXJsLCBOCiAgICAgaWYgKCF1cmwpCiAgICAgICAgIHJldHVybiBuaWw7CiAK
LSAgICBOU1N0cmluZyAqdGVtcG9yYXJ5RGF0YUludGVyYWN0aW9uRGlyZWN0b3J5ID0gV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KGRhdGFJbnRlcmFjdGlvbkRp
cmVjdG9yeVByZWZpeCk7CisgICAgTlNTdHJpbmcgKnRlbXBvcmFyeURhdGFJbnRlcmFjdGlvbkRp
cmVjdG9yeSA9IEZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShkYXRhSW50ZXJh
Y3Rpb25EaXJlY3RvcnlQcmVmaXgpOwogICAgIGlmICghdGVtcG9yYXJ5RGF0YUludGVyYWN0aW9u
RGlyZWN0b3J5KQogICAgICAgICByZXR1cm4gbmlsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvRmlsZVN5c3RlbU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9GaWxlU3lzdGVtTWFjLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4
ZWQ3NTFhN2VjMGU1ZDBiYWY3NzRmOTg2MTBhY2IwNDVjZDJiMDA0Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9GaWxlU3lzdGVtTWFjLm1tCisrKyAvZGV2L251bGwKQEAgLTEsODggKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwNy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJGaWxlU3lzdGVtLmgiCi0K
LSNpZiBQTEFURk9STShNQUMpCi0KLSNpbXBvcnQgPHBhbC9zcGkvbWFjL01ldGFkYXRhU1BJLmg+
Ci0jaW1wb3J0IDx3dGYvY29jb2EvTlNVUkxFeHRyYXMuaD4KLSNpbXBvcnQgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWJvb2wgRmlsZVN5c3RlbTo6ZGVs
ZXRlRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIGF1dG8gZmlsZU1h
bmFnZXIgPSBhZG9wdE5TKFtbTlNGaWxlTWFuYWdlciBhbGxvY10gaW5pdF0pOwotCi0gICAgaWYg
KE5TQXJyYXkgKmRpcmVjdG9yeUNvbnRlbnRzID0gW2ZpbGVNYW5hZ2VyIGNvbnRlbnRzT2ZEaXJl
Y3RvcnlBdFBhdGg6cGF0aCBlcnJvcjpudWxscHRyXSkgewotICAgICAgICAvLyBFeHBsaWNpdGx5
IGxvb2sgZm9yIGFuZCBkZWxldGUgLkRTX1N0b3JlIGZpbGVzLgotICAgICAgICBpZiAoZGlyZWN0
b3J5Q29udGVudHMuY291bnQgPT0gMSAmJiBbZGlyZWN0b3J5Q29udGVudHMuZmlyc3RPYmplY3Qg
aXNFcXVhbFRvU3RyaW5nOkAiLkRTX1N0b3JlIl0pCi0gICAgICAgICAgICBbZmlsZU1hbmFnZXIg
cmVtb3ZlSXRlbUF0UGF0aDpbcGF0aCBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6ZGly
ZWN0b3J5Q29udGVudHMuZmlyc3RPYmplY3RdIGVycm9yOm51bGxwdHJdOwotICAgIH0KLQotICAg
IC8vIHJtZGlyKC4uLikgcmV0dXJucyAwIG9uIHN1Y2Nlc3NmdWwgZGVsZXRpb24gb2YgdGhlIHBh
dGggYW5kIG5vbi16ZXJvIGluIGFueSBvdGhlciBjYXNlIChpbmNsdWRpbmcgaW52YWxpZCBwZXJt
aXNzaW9ucyBvciBub24tZXhpc3RlbnQgZmlsZSkKLSAgICByZXR1cm4gIXJtZGlyKEZpbGVTeXN0
ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCkpOwotfQotCi12b2lkIEZp
bGVTeXN0ZW06OnNldE1ldGFkYXRhVVJMKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5n
JiBtZXRhZGF0YVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiByZWZlcnJlcikKLXsKLSAgICBTdHJp
bmcgdXJsU3RyaW5nOwotICAgIGlmIChOU1VSTCAqdXJsID0gVVJMV2l0aFVzZXJUeXBlZFN0cmlu
ZyhtZXRhZGF0YVVSTFN0cmluZywgbmlsKSkKLSAgICAgICAgdXJsU3RyaW5nID0gV1RGOjp1c2Vy
VmlzaWJsZVN0cmluZyhXVEY6OlVSTEJ5UmVtb3ZpbmdVc2VySW5mbyh1cmwpKTsKLSAgICBlbHNl
Ci0gICAgICAgIHVybFN0cmluZyA9IG1ldGFkYXRhVVJMU3RyaW5nOwotCi0gICAgLy8gQ2FsbCBN
ZXRhZGF0YSBBUEkgb24gYSBiYWNrZ3JvdW5kIHF1ZXVlIGJlY2F1c2UgaXQgY2FuIHRha2Ugc29t
ZSB0aW1lLgotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9nbG9iYWxfcXVldWUoRElT
UEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVGQVVMVCwgMCksIFtwYXRoID0gcGF0aC5pc29sYXRlZENv
cHkoKSwgdXJsU3RyaW5nID0gdXJsU3RyaW5nLmlzb2xhdGVkQ29weSgpLCByZWZlcnJlciA9IHJl
ZmVycmVyLmlzb2xhdGVkQ29weSgpXSB7Ci0gICAgICAgIGF1dG8gaXRlbSA9IGFkb3B0Q0YoTURJ
dGVtQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHBhdGguY3JlYXRlQ0ZTdHJpbmcoKS5nZXQo
KSkpOwotICAgICAgICBpZiAoIWl0ZW0pCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAg
YXV0byB3aGVyZUZyb21BdHRyaWJ1dGUgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2Nd
IGluaXRXaXRoT2JqZWN0czp1cmxTdHJpbmcsIG5pbF0pOwotICAgICAgICBpZiAoIXJlZmVycmVy
LmlzTnVsbCgpKQotICAgICAgICAgICAgW3doZXJlRnJvbUF0dHJpYnV0ZSBhZGRPYmplY3Q6cmVm
ZXJyZXJdOwotCi0gICAgICAgIE1ESXRlbVNldEF0dHJpYnV0ZShpdGVtLmdldCgpLCBrTURJdGVt
V2hlcmVGcm9tcywgKF9fYnJpZGdlIENGQXJyYXlSZWYpd2hlcmVGcm9tQXR0cmlidXRlLmdldCgp
KTsKLSAgICAgICAgTURJdGVtU2V0QXR0cmlidXRlKGl0ZW0uZ2V0KCksIGtNREl0ZW1Eb3dubG9h
ZGVkRGF0ZSwgKF9fYnJpZGdlIENGQXJyYXlSZWYpQFsgW05TRGF0ZSBkYXRlXSBdKTsKLSAgICB9
KTsKLX0KLQotYm9vbCBGaWxlU3lzdGVtOjpjYW5FeGNsdWRlRnJvbUJhY2t1cCgpCi17Ci0gICAg
cmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgRmlsZVN5c3RlbTo6ZXhjbHVkZUZyb21CYWNrdXAoY29u
c3QgU3RyaW5nJiBwYXRoKQotewotICAgIC8vIEl0IGlzIGNyaXRpY2FsIHRvIHBhc3MgRkFMU0Ug
Zm9yIGV4Y2x1ZGVCeVBhdGggYmVjYXVzZSBleGNsdWRpbmcgYnkgcGF0aCByZXF1aXJlcyByb290
IHByaXZpbGVnZXMuCi0gICAgQ1NCYWNrdXBTZXRJdGVtRXhjbHVkZWQoRmlsZVN5c3RlbTo6cGF0
aEFzVVJMKHBhdGgpLmdldCgpLCBUUlVFLCBGQUxTRSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQppbmRl
eCBkN2UzZjM5YTY3YjM3M2I4Mzg3OWM4NDA5YzU4YjA4OThkMzQ3OWVjLi5kNzllMmY2MGM2MDk0
MDNhYmRmYzAyYWViZjcwYTI2YmNjZGYyZjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9N
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCkBAIC0yOSwxMyArMjksMTMgQEAKICNp
ZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9OKQogCiAjaW5jbHVkZSAi
QXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNs
dWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuaCIKICNp
bmNsdWRlICJXZWJBdWRpb0J1ZmZlckxpc3QuaCIKICNpbmNsdWRlIDxBVkZvdW5kYXRpb24vQVZB
c3NldFdyaXRlci5oPgogI2luY2x1ZGUgPEFWRm91bmRhdGlvbi9BVkFzc2V0V3JpdGVySW5wdXQu
aD4KICNpbmNsdWRlIDxwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaD4KKyNpbmNsdWRlIDx3dGYv
RmlsZVN5c3RlbS5oPgogCiB0eXBlZGVmIEFWQXNzZXRXcml0ZXIgQVZBc3NldFdyaXRlclR5cGU7
CiB0eXBlZGVmIEFWQXNzZXRXcml0ZXJJbnB1dCBBVkFzc2V0V3JpdGVySW5wdXRUeXBlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZl
cmVuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVS
ZWZlcmVuY2UuY3BwCmluZGV4IGI2M2YwNjEyYWJmY2I4NjZkYTBjZWQwYTIzNWRjMTU1OTNmZjA1
ZWQuLjVhYmZkNzVjYjQ5NDU2ZTQyZDM5ZDQ0ZDNiYzIyNTlhYWZmYTUyMjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVy
ZW5jZS5jcHAKQEAgLTI3LDggKzI3LDggQEAKICNpbmNsdWRlICJCbG9iRGF0YUZpbGVSZWZlcmVu
Y2UuaCIKIAogI2luY2x1ZGUgIkZpbGUuaCIKLSNpbmNsdWRlICJGaWxlTWV0YWRhdGEuaCIKLSNp
bmNsdWRlICJGaWxlU3lzdGVtLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVNZXRhZGF0YS5oPgorI2lu
Y2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAK
aW5kZXggODBiNDFlOTc1ZTRkNjE0M2FmNGM5OTYxMTc1NDdiYjg5MmVkYTMxOC4uMWM3MDZhYTM0
NmNhZGRlYTM5ZTUwMGQ4MDMwNGNkNDk0YmQ4MjY4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCkBAIC0zNSwxMyArMzUs
MTMgQEAKICNpbmNsdWRlICJCbG9iRGF0YS5oIgogI2luY2x1ZGUgIkJsb2JQYXJ0LmgiCiAjaW5j
bHVkZSAiQmxvYlJlc291cmNlSGFuZGxlLmgiCi0jaW5jbHVkZSAiRmlsZU1ldGFkYXRhLmgiCi0j
aW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNpbmNs
dWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2lu
Y2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRs
ZXIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZU1ldGFkYXRhLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVT
eXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCmluZGV4IGM5
NGUzOTQ5NGI4ZTMyNmRiNGExMmEyNzIwMWE0NjIzOGRlMThjNGIuLmNjNjdjZTY4OGYzYmNhMjIy
NjkwYjQzZjEwNTg3OGJhOWUzYzI4ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAKQEAgLTM1LDE5ICszNSwxOSBA
QAogI2luY2x1ZGUgIkFzeW5jRmlsZVN0cmVhbS5oIgogI2luY2x1ZGUgIkJsb2JEYXRhLmgiCiAj
aW5jbHVkZSAiRmlsZVN0cmVhbS5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRl
ICJIVFRQSGVhZGVyTmFtZXMuaCIKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgogI2luY2x1ZGUg
IlBhcnNlZENvbnRlbnRSYW5nZS5oIgotI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJS
ZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVDbGllbnQuaCIKICNpbmNs
dWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAj
aW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVy
Lmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVh
ZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Gb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1E
YXRhLmNwcAppbmRleCA1NGU0YWMwNDk2MmEyMjE5MDdlM2I3ZDgwYTRmYmFjYmUyNTRiMzk5Li43
Yjc2YTVlZWRlOTlmOTQ5YzgxZTY5Y2ZlMWJkYmI4OTZjY2MyNjdlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcApAQCAtMjksMTIgKzI5LDEyIEBACiAj
aW5jbHVkZSAiRE9NRm9ybURhdGEuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUg
IkZpbGUuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiRm9ybURhdGFCdWls
ZGVyLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2lu
Y2x1ZGUgIlRleHRFbmNvZGluZy5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVCbG9iUmVnaXN0cnku
aCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0xpbmVF
bmRpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAKaW5kZXgg
OWUyZDg4MWQ2MzU0OTE1MjVkNzFhZjQ1NmMyZDE5NWZkMTNiOTRkNi4uYTc0YWU1YWFjOWNiMjYy
M2RjOWNhNWE4YWE0MGFjMzQwMjEyZjJkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCkBAIC0zMCwx
MSArMzAsMTEgQEAKICNpbmNsdWRlICJGb3JtRGF0YVN0cmVhbUNGTmV0LmgiCiAKICNpbmNsdWRl
ICJCbG9iRGF0YS5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJGb3JtRGF0
YS5oIgogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjaW5j
bHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQppbmRleCAyN2Zm
OWQxY2E4ZWZhMWZkZDZlZGYyODg2NDg2NDc5NDlmODgxYTk2Li4yZmVjMWYzODM0ZTQxMTZhMWRk
NGNlYjFmNjMyODk4ZDVlY2UxNDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KQEAgLTI4
LDEzICsyOCwxMyBAQAogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAKLSNpbXBvcnQgIkZpbGVTeXN0
ZW0uaCIKICNpbXBvcnQgIkZvcm1EYXRhU3RyZWFtTWFjLmgiCiAjaW1wb3J0ICJIVFRQSGVhZGVy
TmFtZXMuaCIKICNpbXBvcnQgIlJlc291cmNlUmVxdWVzdENGTmV0LmgiCiAjaW1wb3J0ICJSdW50
aW1lQXBwbGljYXRpb25DaGVja3MuaCIKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5o
PgogI2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4KKyNpbXBvcnQgPHd0Zi9GaWxl
U3lzdGVtLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
b29raWVKYXJEQi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29v
a2llSmFyREIuY3BwCmluZGV4IGMyM2ZkNzJmMTkxNzEwMjA4MmUxMjFlNDRkNThlZGQ4YTMyZDFl
NzEuLjI2MzYyMjg4Yjg2OWQ4YzdiYjM0MTdmNzZmNDBiNjNjYzU3ZjdhNzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcApA
QCAtMjYsMTAgKzI2LDkgQEAKICNpbmNsdWRlICJDb29raWVKYXJEQi5oIgogCiAjaW5jbHVkZSAi
Q29va2llVXRpbC5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJMb2dnaW5n
LmgiCiAjaW5jbHVkZSAiU1FMaXRlRmlsZVN5c3RlbS5oIgotCisjaW5jbHVkZSA8d3RmL0ZpbGVT
eXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTW9ub3RvbmljVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxDYWNoZUVudHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybENhY2hlRW50cnkuaAppbmRleCBjYmM0NWZlZDJiNjM4ZWE2MmQ5MTJlYzdlZDJkNjYxNDNi
OGY5ZDZiLi4xMTAyN2NlM2IzY2Y2Mzg4Zjk5NTRhYWY0OWM0OTAzZmU5M2ZkZmY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnku
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50
cnkuaApAQCAtMjYsMTEgKzI2LDExIEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiRmls
ZVN5c3RlbS5oIgogI2luY2x1ZGUgIkhUVFBIZWFkZXJNYXAuaCIKICNpbmNsdWRlICJSZXNvdXJj
ZUhhbmRsZS5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291
cmNlUmVzcG9uc2UuaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTGlz
dEhhc2hTZXQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcAppbmRleCA0M2JjMmU3YmZmZjRmOWJkNmY3MTAy
ODVkNmQzZDg2MzFiYjc3ODNhLi5mYTVjOGQyZDIxYjYyNzM4MTVkMDIzYTRmMjA0NTUwMTZlOTYz
OGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bENhY2hlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCkBAIC0zMCwxMiArMzAsMTIgQEAKIAogI2luY2x1ZGUg
IkN1cmxDYWNoZU1hbmFnZXIuaCIKIAotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRl
ICJIVFRQSGVhZGVyTWFwLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlJlc291
cmNlSGFuZGxlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oIgog
I2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+
CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybEZvcm1EYXRhU3RyZWFtLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybEZvcm1EYXRhU3RyZWFtLmgKaW5kZXgg
YzhlZjMzM2UwZDhjMGUwMjhlY2Q4YTQ2ZDgyNmI5MDY3MWEwMGUwYy4uMDllN2ZkYmI0YTJjZmFi
NGI5MDczMmYwNjExNGJlMDgxMTNiYjUxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxGb3JtRGF0YVN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRm9ybURhdGFTdHJlYW0uaApAQCAtMjYsOCAr
MjYsOCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNs
dWRlICJGb3JtRGF0YS5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oCmluZGV4IGZkYzRiNTkwYzE0
MmNmNmRjOTgwNzdkOWY3NWQ3ODY1NjM2MTk2OWQuLjkzY2E2MTAzZmU2M2Q1ZmYwMzEwNTVjODI1
ZDgwMjgyNzY0YWVkYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVxdWVzdC5oCkBAIC0zMiwxMCArMzIsMTAgQEAKICNpbmNsdWRlICJDdXJs
UmVxdWVzdFNjaGVkdWxlckNsaWVudC5oIgogI2luY2x1ZGUgIkN1cmxSZXNwb25zZS5oIgogI2lu
Y2x1ZGUgIkN1cmxTU0xWZXJpZmllci5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNs
dWRlICJOZXR3b3JrTG9hZE1ldHJpY3MuaCIKICNpbmNsdWRlICJQcm90ZWN0aW9uU3BhY2UuaCIK
ICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5o
PgogI2luY2x1ZGUgPHd0Zi9NZXNzYWdlUXVldWUuaD4KICNpbmNsdWRlIDx3dGYvTW9ub3Rvbmlj
VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdl
U2Vzc2lvbkN1cmwuY3BwCmluZGV4IGEzNDJlYzVmMGE1NTIxMWFiNzM0N2U0MTEzZTMxNzI1YWM0
MGIyZmQuLjA1YjU2NzIzMmJiZDY2ZjBiZDA3MWRkYjhhMGYwY2RhZmY2ZWZhYTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNl
c3Npb25DdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAKQEAgLTMzLDEwICszMyw5IEBACiAjaW5jbHVk
ZSAiQ29va2llSmFyREIuaCIKICNpbmNsdWRlICJDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94
eS5oIgogI2luY2x1ZGUgIkN1cmxDb250ZXh0LmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgog
I2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUu
aCIKLQorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJl
YWQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvVVJM
Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVz
b3VyY2VIYW5kbGVDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCmluZGV4IGU1MWU3YWJmMGEwNTVhMDhkOGY5NThmNWIx
ZWYxY2EyNjRhOGI3MjYuLjdiZTAwYWQzNGI4ZTU5ODgyZGUwZjUxM2I2YzJkZGY5MDExZjk5ZTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJj
ZUhhbmRsZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCkBAIC0zOCw3ICszOCw2IEBACiAjaW5jbHVkZSAiQ3Vy
bENhY2hlTWFuYWdlci5oIgogI2luY2x1ZGUgIkN1cmxDb250ZXh0LmgiCiAjaW5jbHVkZSAiQ3Vy
bFJlcXVlc3QuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiSFRUUFBhcnNl
cnMuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNz
aW9uLmgiCkBAIC00OCw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiU3luY2hyb25vdXNMb2FkZXJDbGll
bnQuaCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlv
bkhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L0Jhc2U2NC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9CbG9iRGF0YUZpbGVSZWZlcmVuY2VNYWMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9CbG9iRGF0YUZpbGVSZWZlcmVu
Y2VNYWMubW0KaW5kZXggZmNmNTVkNzZlYTQ1ZWJiMDY3MDQzZWNkZmM4Y2YwOGNjOTI0NmEyOS4u
YjY5MjkyMGIyMWZjNjYzOWQ1NzQ1ZDFjMDQ0ZThiNzg3ODIzNTBkMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQmxvYkRhdGFGaWxlUmVmZXJlbmNlTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Jsb2JEYXRhRmls
ZVJlZmVyZW5jZU1hYy5tbQpAQCAtMjgsOCArMjgsOCBAQAogCiAjaWYgRU5BQkxFKEZJTEVfUkVQ
TEFDRU1FTlQpCiAKLSNpbmNsdWRlICJGaWxlTWV0YWRhdGEuaCIKLSNpbmNsdWRlICJGaWxlU3lz
dGVtLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVNZXRhZGF0YS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxl
U3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL1NvZnRMaW5raW5nLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCmluZGV4IDYzNzM0YzY3NGM1MmVl
OTVkYzZjOWU0MjFjNDY2MGY0MTg0MDBiYWEuLjA4MTVlYTY4OGU3NjY5MjdlNjYzZDQwNTYxNDlk
YmQzNjhlNjQ2Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCkBAIC0zMiw3ICszMiw2IEBACiAj
aWYgVVNFKFNPVVApCiAKICNpbmNsdWRlICJDcmVkZW50aWFsU3RvcmFnZS5oIgotI2luY2x1ZGUg
IkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJHVW5pcXVlUHRyU291cC5oIgogI2luY2x1ZGUgIkhU
VFBQYXJzZXJzLmgiCiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgpAQCAtNTcsNiArNTYs
NyBAQAogI2luY2x1ZGUgPHVuaXN0ZC5oPgogI2VuZGlmCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRp
b25IYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYv
Z2xpYi9HUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvUnVuTG9vcFNvdXJjZVByaW9yaXR5
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcApp
bmRleCAzNDNmYWViOWZlYjIxOTRjY2MzZWY3NzlkNzdkM2Y2YjRkMWVkYzg3Li5iOTY3Nzk1OTgw
ZWU4ZmE0Yzk5NTAwZmZkZjM0YjQyMDJlYjJhMmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcApA
QCAtMzAsMTMgKzMwLDEzIEBACiAjaW5jbHVkZSAiU291cE5ldHdvcmtTZXNzaW9uLmgiCiAKICNp
bmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0u
aCIKICNpbmNsdWRlICJHVW5pcXVlUHRyU291cC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNp
bmNsdWRlICJTb3VwTmV0d29ya1Byb3h5U2V0dGluZ3MuaCIKICNpbmNsdWRlIDxnbGliL2dzdGRp
by5oPgogI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgogI2luY2x1ZGUgPHBhbC9jcnlwdG8vQ3J5
cHRvRGlnZXN0Lmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYv
SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L0Jhc2U2NC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9z
aXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L0Zp
bGVTeXN0ZW1QT1NJWC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0ODUxMzUy
NTE4ZDYwNmJlYTI1ZWVlYTMzNjE4NTI4MDMzNGNmY2MuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvRmls
ZVN5c3RlbVBPU0lYLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ5MyArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDA3LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAo
IkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9t
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKLQotI2luY2x1ZGUgIkZpbGVNZXRhZGF0
YS5oIgotI2luY2x1ZGUgPGRpcmVudC5oPgotI2luY2x1ZGUgPGVycm5vLmg+Ci0jaW5jbHVkZSA8
ZmNudGwuaD4KLSNpbmNsdWRlIDxmbm1hdGNoLmg+Ci0jaW5jbHVkZSA8bGliZ2VuLmg+Ci0jaW5j
bHVkZSA8c3RkaW8uaD4KLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgotI2luY2x1ZGUgPHN5cy9zdGF0
dmZzLmg+Ci0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaW5jbHVkZSA8dW5pc3RkLmg+Ci0jaW5j
bHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0j
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBGaWxlU3lzdGVt
IHsKLQotYm9vbCBmaWxlRXhpc3RzKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBpZiAocGF0
aC5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgQ1N0cmluZyBmc1JlcCA9
IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKLQotICAgIGlmICghZnNSZXAuZGF0YSgp
IHx8IGZzUmVwLmRhdGEoKVswXSA9PSAnXDAnKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICByZXR1cm4gYWNjZXNzKGZzUmVwLmRhdGEoKSwgRl9PSykgIT0gLTE7Ci19Ci0KLWJvb2wgZGVs
ZXRlRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgQ1N0cmluZyBmc1JlcCA9IGZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKLQotICAgIGlmICghZnNSZXAuZGF0YSgpIHx8IGZz
UmVwLmRhdGEoKVswXSA9PSAnXDAnKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyB1
bmxpbmsoLi4uKSByZXR1cm5zIDAgb24gc3VjY2Vzc2Z1bCBkZWxldGlvbiBvZiB0aGUgcGF0aCBh
bmQgbm9uLXplcm8gaW4gYW55IG90aGVyIGNhc2UgKGluY2x1ZGluZyBpbnZhbGlkIHBlcm1pc3Np
b25zIG9yIG5vbi1leGlzdGVudCBmaWxlKQotICAgIHJldHVybiAhdW5saW5rKGZzUmVwLmRhdGEo
KSk7Ci19Ci0KLVBsYXRmb3JtRmlsZUhhbmRsZSBvcGVuRmlsZShjb25zdCBTdHJpbmcmIHBhdGgs
IEZpbGVPcGVuTW9kZSBtb2RlKQotewotICAgIENTdHJpbmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24ocGF0aCk7Ci0KLSAgICBpZiAoZnNSZXAuaXNOdWxsKCkpCi0gICAgICAgIHJl
dHVybiBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOwotCi0gICAgaW50IHBsYXRmb3JtRmxhZyA9
IDA7Ci0gICAgaWYgKG1vZGUgPT0gRmlsZU9wZW5Nb2RlOjpSZWFkKQotICAgICAgICBwbGF0Zm9y
bUZsYWcgfD0gT19SRE9OTFk7Ci0gICAgZWxzZSBpZiAobW9kZSA9PSBGaWxlT3Blbk1vZGU6Oldy
aXRlKQotICAgICAgICBwbGF0Zm9ybUZsYWcgfD0gKE9fV1JPTkxZIHwgT19DUkVBVCB8IE9fVFJV
TkMpOwotI2lmIE9TKERBUldJTikKLSAgICBlbHNlIGlmIChtb2RlID09IEZpbGVPcGVuTW9kZTo6
RXZlbnRzT25seSkKLSAgICAgICAgcGxhdGZvcm1GbGFnIHw9IE9fRVZUT05MWTsKLSNlbmRpZgot
Ci0gICAgcmV0dXJuIG9wZW4oZnNSZXAuZGF0YSgpLCBwbGF0Zm9ybUZsYWcsIDA2NjYpOwotfQot
Ci12b2lkIGNsb3NlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKLXsKLSAgICBpZiAo
aXNIYW5kbGVWYWxpZChoYW5kbGUpKSB7Ci0gICAgICAgIGNsb3NlKGhhbmRsZSk7Ci0gICAgICAg
IGhhbmRsZSA9IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7Ci0gICAgfQotfQotCi1sb25nIGxv
bmcgc2Vla0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCwg
RmlsZVNlZWtPcmlnaW4gb3JpZ2luKQotewotICAgIGludCB3aGVuY2UgPSBTRUVLX1NFVDsKLSAg
ICBzd2l0Y2ggKG9yaWdpbikgewotICAgIGNhc2UgRmlsZVNlZWtPcmlnaW46OkJlZ2lubmluZzoK
LSAgICAgICAgd2hlbmNlID0gU0VFS19TRVQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRmls
ZVNlZWtPcmlnaW46OkN1cnJlbnQ6Ci0gICAgICAgIHdoZW5jZSA9IFNFRUtfQ1VSOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIEZpbGVTZWVrT3JpZ2luOjpFbmQ6Ci0gICAgICAgIHdoZW5jZSA9
IFNFRUtfRU5EOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICB9Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGxvbmcgbG9uZz4o
bHNlZWsoaGFuZGxlLCBvZmZzZXQsIHdoZW5jZSkpOwotfQotCi1ib29sIHRydW5jYXRlRmlsZShQ
bGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0KQotewotICAgIC8vIGZ0
cnVuY2F0ZSByZXR1cm5zIDAgdG8gaW5kaWNhdGUgdGhlIHN1Y2Nlc3MuCi0gICAgcmV0dXJuICFm
dHJ1bmNhdGUoaGFuZGxlLCBvZmZzZXQpOwotfQotCi1pbnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1G
aWxlSGFuZGxlIGhhbmRsZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKLXsKLSAgICBk
byB7Ci0gICAgICAgIGludCBieXRlc1dyaXR0ZW4gPSB3cml0ZShoYW5kbGUsIGRhdGEsIHN0YXRp
Y19jYXN0PHNpemVfdD4obGVuZ3RoKSk7Ci0gICAgICAgIGlmIChieXRlc1dyaXR0ZW4gPj0gMCkK
LSAgICAgICAgICAgIHJldHVybiBieXRlc1dyaXR0ZW47Ci0gICAgfSB3aGlsZSAoZXJybm8gPT0g
RUlOVFIpOwotICAgIHJldHVybiAtMTsKLX0KLQotaW50IHJlYWRGcm9tRmlsZShQbGF0Zm9ybUZp
bGVIYW5kbGUgaGFuZGxlLCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQotewotICAgIGRvIHsKLSAg
ICAgICAgaW50IGJ5dGVzUmVhZCA9IHJlYWQoaGFuZGxlLCBkYXRhLCBzdGF0aWNfY2FzdDxzaXpl
X3Q+KGxlbmd0aCkpOwotICAgICAgICBpZiAoYnl0ZXNSZWFkID49IDApCi0gICAgICAgICAgICBy
ZXR1cm4gYnl0ZXNSZWFkOwotICAgIH0gd2hpbGUgKGVycm5vID09IEVJTlRSKTsKLSAgICByZXR1
cm4gLTE7Ci19Ci0KLSNpZiBVU0UoRklMRV9MT0NLKQotYm9vbCBsb2NrRmlsZShQbGF0Zm9ybUZp
bGVIYW5kbGUgaGFuZGxlLCBPcHRpb25TZXQ8RmlsZUxvY2tNb2RlPiBsb2NrTW9kZSkKLXsKLSAg
ICBDT01QSUxFX0FTU0VSVChMT0NLX1NIID09IFdURjo6ZW51bVRvVW5kZXJseWluZ1R5cGUoRmls
ZUxvY2tNb2RlOjpTaGFyZWQpLCBMb2NrU2hhcmVkRW5jb2RpbmdJc0FzRXhwZWN0ZWQpOwotICAg
IENPTVBJTEVfQVNTRVJUKExPQ0tfRVggPT0gV1RGOjplbnVtVG9VbmRlcmx5aW5nVHlwZShGaWxl
TG9ja01vZGU6OkV4Y2x1c2l2ZSksIExvY2tFeGNsdXNpdmVFbmNvZGluZ0lzQXNFeHBlY3RlZCk7
Ci0gICAgQ09NUElMRV9BU1NFUlQoTE9DS19OQiA9PSBXVEY6OmVudW1Ub1VuZGVybHlpbmdUeXBl
KEZpbGVMb2NrTW9kZTo6Tm9uYmxvY2tpbmcpLCBMb2NrTm9uYmxvY2tpbmdFbmNvZGluZ0lzQXNF
eHBlY3RlZCk7Ci0gICAgaW50IHJlc3VsdCA9IGZsb2NrKGhhbmRsZSwgbG9ja01vZGUudG9SYXco
KSk7Ci0gICAgcmV0dXJuIChyZXN1bHQgIT0gLTEpOwotfQotCi1ib29sIHVubG9ja0ZpbGUoUGxh
dGZvcm1GaWxlSGFuZGxlIGhhbmRsZSkKLXsKLSAgICBpbnQgcmVzdWx0ID0gZmxvY2soaGFuZGxl
LCBMT0NLX1VOKTsKLSAgICByZXR1cm4gKHJlc3VsdCAhPSAtMSk7Ci19Ci0jZW5kaWYKLQotI2lm
ICFQTEFURk9STShNQUMpCi1ib29sIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYg
cGF0aCkKLXsKLSAgICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBh
dGgpOwotCi0gICAgaWYgKCFmc1JlcC5kYXRhKCkgfHwgZnNSZXAuZGF0YSgpWzBdID09ICdcMCcp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIHJtZGlyKC4uLikgcmV0dXJucyAwIG9u
IHN1Y2Nlc3NmdWwgZGVsZXRpb24gb2YgdGhlIHBhdGggYW5kIG5vbi16ZXJvIGluIGFueSBvdGhl
ciBjYXNlIChpbmNsdWRpbmcgaW52YWxpZCBwZXJtaXNzaW9ucyBvciBub24tZXhpc3RlbnQgZmls
ZSkKLSAgICByZXR1cm4gIXJtZGlyKGZzUmVwLmRhdGEoKSk7Ci19Ci0jZW5kaWYKLQotYm9vbCBn
ZXRGaWxlU2l6ZShjb25zdCBTdHJpbmcmIHBhdGgsIGxvbmcgbG9uZyYgcmVzdWx0KQotewotICAg
IENTdHJpbmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7Ci0KLSAgICBp
ZiAoIWZzUmVwLmRhdGEoKSB8fCBmc1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgc3RydWN0IHN0YXQgZmlsZUluZm87Ci0KLSAgICBpZiAoc3RhdChm
c1JlcC5kYXRhKCksICZmaWxlSW5mbykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJl
c3VsdCA9IGZpbGVJbmZvLnN0X3NpemU7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgZ2V0
RmlsZVNpemUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgbG9uZyBsb25nJiByZXN1bHQpCi17
Ci0gICAgc3RydWN0IHN0YXQgZmlsZUluZm87Ci0gICAgaWYgKGZzdGF0KGhhbmRsZSwgJmZpbGVJ
bmZvKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmVzdWx0ID0gZmlsZUluZm8uc3Rf
c2l6ZTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotT3B0aW9uYWw8V2FsbFRpbWU+IGdldEZpbGVD
cmVhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoKQotewotI2lmIE9TKERBUldJTikgfHwgT1Mo
T1BFTkJTRCkgfHwgT1MoTkVUQlNEKSB8fCBPUyhGUkVFQlNEKQotICAgIENTdHJpbmcgZnNSZXAg
PSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7Ci0KLSAgICBpZiAoIWZzUmVwLmRhdGEo
KSB8fCBmc1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKLQotICAgIHN0cnVjdCBzdGF0IGZpbGVJbmZvOwotCi0gICAgaWYgKHN0YXQoZnNSZXAuZGF0
YSgpLCAmZmlsZUluZm8pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgcmV0
dXJuIFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhmaWxlSW5mby5zdF9iaXJ0aHRpbWUpOwotI2Vs
c2UKLSAgICBVTlVTRURfUEFSQU0ocGF0aCk7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSNl
bmRpZgotfQotCi1PcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoY29u
c3QgU3RyaW5nJiBwYXRoKQotewotICAgIENTdHJpbmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24ocGF0aCk7Ci0KLSAgICBpZiAoIWZzUmVwLmRhdGEoKSB8fCBmc1JlcC5kYXRhKClb
MF0gPT0gJ1wwJykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIHN0cnVjdCBz
dGF0IGZpbGVJbmZvOwotCi0gICAgaWYgKHN0YXQoZnNSZXAuZGF0YSgpLCAmZmlsZUluZm8pKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgcmV0dXJuIFdhbGxUaW1lOjpmcm9t
UmF3U2Vjb25kcyhmaWxlSW5mby5zdF9tdGltZSk7Ci19Ci0KLXN0YXRpYyBGaWxlTWV0YWRhdGE6
OlR5cGUgdG9GaWxlTWV0YXRhVHlwZShzdHJ1Y3Qgc3RhdCBmaWxlSW5mbykKLXsKLSAgICBpZiAo
U19JU0RJUihmaWxlSW5mby5zdF9tb2RlKSkKLSAgICAgICAgcmV0dXJuIEZpbGVNZXRhZGF0YTo6
VHlwZTo6RGlyZWN0b3J5OwotICAgIGlmIChTX0lTTE5LKGZpbGVJbmZvLnN0X21vZGUpKQotICAg
ICAgICByZXR1cm4gRmlsZU1ldGFkYXRhOjpUeXBlOjpTeW1ib2xpY0xpbms7Ci0gICAgcmV0dXJu
IEZpbGVNZXRhZGF0YTo6VHlwZTo6RmlsZTsKLX0KLQotc3RhdGljIE9wdGlvbmFsPEZpbGVNZXRh
ZGF0YT4gZmlsZU1ldGFkYXRhVXNpbmdGdW5jdGlvbihjb25zdCBTdHJpbmcmIHBhdGgsIGludCAo
KnN0YXRGdW5jKShjb25zdCBjaGFyKiwgc3RydWN0IHN0YXQqKSkKLXsKLSAgICBDU3RyaW5nIGZz
UmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwotCi0gICAgaWYgKCFmc1JlcC5k
YXRhKCkgfHwgZnNSZXAuZGF0YSgpWzBdID09ICdcMCcpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7Ci0KLSAgICBzdHJ1Y3Qgc3RhdCBmaWxlSW5mbzsKLSAgICBpZiAoc3RhdEZ1bmMoZnNS
ZXAuZGF0YSgpLCAmZmlsZUluZm8pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0g
ICAgU3RyaW5nIGZpbGVuYW1lID0gcGF0aEdldEZpbGVOYW1lKHBhdGgpOwotICAgIGJvb2wgaXNI
aWRkZW4gPSAhZmlsZW5hbWUuaXNFbXB0eSgpICYmIGZpbGVuYW1lWzBdID09ICcuJzsKLSAgICBy
ZXR1cm4gRmlsZU1ldGFkYXRhIHsKLSAgICAgICAgV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKGZp
bGVJbmZvLnN0X210aW1lKSwKLSAgICAgICAgZmlsZUluZm8uc3Rfc2l6ZSwKLSAgICAgICAgaXNI
aWRkZW4sCi0gICAgICAgIHRvRmlsZU1ldGF0YVR5cGUoZmlsZUluZm8pCi0gICAgfTsKLX0KLQot
T3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBwYXRoKQot
ewotICAgIHJldHVybiBmaWxlTWV0YWRhdGFVc2luZ0Z1bmN0aW9uKHBhdGgsICZsc3RhdCk7Ci19
Ci0KLU9wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3Mo
Y29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIHJldHVybiBmaWxlTWV0YWRhdGFVc2luZ0Z1bmN0
aW9uKHBhdGgsICZzdGF0KTsKLX0KLQotYm9vbCBjcmVhdGVTeW1ib2xpY0xpbmsoY29uc3QgU3Ry
aW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGljTGlua1BhdGgpCi17Ci0gICAg
Q1N0cmluZyB0YXJnZXRQYXRoRlNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24odGFyZ2V0
UGF0aCk7Ci0gICAgaWYgKCF0YXJnZXRQYXRoRlNSZXAuZGF0YSgpIHx8IHRhcmdldFBhdGhGU1Jl
cC5kYXRhKClbMF0gPT0gJ1wwJykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgQ1N0cmlu
ZyBzeW1ib2xpY0xpbmtQYXRoRlNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oc3ltYm9s
aWNMaW5rUGF0aCk7Ci0gICAgaWYgKCFzeW1ib2xpY0xpbmtQYXRoRlNSZXAuZGF0YSgpIHx8IHN5
bWJvbGljTGlua1BhdGhGU1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgcmV0dXJuICFzeW1saW5rKHRhcmdldFBhdGhGU1JlcC5kYXRhKCksIHN5bWJv
bGljTGlua1BhdGhGU1JlcC5kYXRhKCkpOwotfQotCi1TdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb21wb25lbnQpCi17Ci0g
ICAgaWYgKHBhdGguZW5kc1dpdGgoJy8nKSkKLSAgICAgICAgcmV0dXJuIHBhdGggKyBjb21wb25l
bnQ7Ci0gICAgcmV0dXJuIHBhdGggKyAiLyIgKyBjb21wb25lbnQ7Ci19Ci0KLVN0cmluZyBwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnRzKFN0cmluZ1ZpZXcgcGF0aCwgY29uc3QgVmVjdG9yPFN0cmlu
Z1ZpZXc+JiBjb21wb25lbnRzKQotewotICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBi
dWlsZGVyLmFwcGVuZChwYXRoKTsKLSAgICBmb3IgKGF1dG8mIGNvbXBvbmVudCA6IGNvbXBvbmVu
dHMpIHsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoJy8nKTsKLSAgICAgICAgYnVpbGRlci5hcHBl
bmQoY29tcG9uZW50KTsKLSAgICB9Ci0gICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKLX0K
LQotYm9vbCBtYWtlQWxsRGlyZWN0b3JpZXMoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIENT
dHJpbmcgZnVsbFBhdGggPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7Ci0gICAgaWYg
KCFhY2Nlc3MoZnVsbFBhdGguZGF0YSgpLCBGX09LKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0K
LSAgICBjaGFyKiBwID0gZnVsbFBhdGgubXV0YWJsZURhdGEoKSArIDE7Ci0gICAgaW50IGxlbmd0
aCA9IGZ1bGxQYXRoLmxlbmd0aCgpOwotCi0gICAgaWYocFtsZW5ndGggLSAxXSA9PSAnLycpCi0g
ICAgICAgIHBbbGVuZ3RoIC0gMV0gPSAnXDAnOwotICAgIGZvciAoOyAqcDsgKytwKQotICAgICAg
ICBpZiAoKnAgPT0gJy8nKSB7Ci0gICAgICAgICAgICAqcCA9ICdcMCc7Ci0gICAgICAgICAgICBp
ZiAoYWNjZXNzKGZ1bGxQYXRoLmRhdGEoKSwgRl9PSykpCi0gICAgICAgICAgICAgICAgaWYgKG1r
ZGlyKGZ1bGxQYXRoLmRhdGEoKSwgU19JUldYVSkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgICAgICpwID0gJy8nOwotICAgICAgICB9Ci0gICAgaWYgKGFjY2Vz
cyhmdWxsUGF0aC5kYXRhKCksIEZfT0spKQotICAgICAgICBpZiAobWtkaXIoZnVsbFBhdGguZGF0
YSgpLCBTX0lSV1hVKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiB0
cnVlOwotfQotCi1TdHJpbmcgcGF0aEdldEZpbGVOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsK
LSAgICByZXR1cm4gcGF0aC5zdWJzdHJpbmcocGF0aC5yZXZlcnNlRmluZCgnLycpICsgMSk7Ci19
Ci0KLVN0cmluZyBkaXJlY3RvcnlOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBDU3Ry
aW5nIGZzUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwotCi0gICAgaWYgKCFm
c1JlcC5kYXRhKCkgfHwgZnNSZXAuZGF0YSgpWzBdID09ICdcMCcpCi0gICAgICAgIHJldHVybiBT
dHJpbmcoKTsKLQotICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGRpcm5hbWUoZnNSZXAubXV0
YWJsZURhdGEoKSkpOwotfQotCi1WZWN0b3I8U3RyaW5nPiBsaXN0RGlyZWN0b3J5KGNvbnN0IFN0
cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBmaWx0ZXIpCi17Ci0gICAgVmVjdG9yPFN0cmluZz4g
ZW50cmllczsKLSAgICBDU3RyaW5nIGNwYXRoID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBh
dGgpOwotICAgIENTdHJpbmcgY2ZpbHRlciA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWx0
ZXIpOwotICAgIERJUiogZGlyID0gb3BlbmRpcihjcGF0aC5kYXRhKCkpOwotICAgIGlmIChkaXIp
IHsKLSAgICAgICAgc3RydWN0IGRpcmVudCogZHA7Ci0gICAgICAgIHdoaWxlICgoZHAgPSByZWFk
ZGlyKGRpcikpKSB7Ci0gICAgICAgICAgICBjb25zdCBjaGFyKiBuYW1lID0gZHAtPmRfbmFtZTsK
LSAgICAgICAgICAgIGlmICghc3RyY21wKG5hbWUsICIuIikgfHwgIXN0cmNtcChuYW1lLCAiLi4i
KSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGlmIChmbm1hdGNoKGNm
aWx0ZXIuZGF0YSgpLCBuYW1lLCAwKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgICAgIGNoYXIgZmlsZVBhdGhbUEFUSF9NQVhdOwotICAgICAgICAgICAgaWYgKHN0YXRpY19j
YXN0PGludD4oc2l6ZW9mKGZpbGVQYXRoKSAtIDEpIDwgc25wcmludGYoZmlsZVBhdGgsIHNpemVv
ZihmaWxlUGF0aCksICIlcy8lcyIsIGNwYXRoLmRhdGEoKSwgbmFtZSkpCi0gICAgICAgICAgICAg
ICAgY29udGludWU7IC8vIGJ1ZmZlciBvdmVyZmxvdwotCi0gICAgICAgICAgICBhdXRvIHN0cmlu
ZyA9IHN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZVBhdGgpOwotCi0gICAg
ICAgICAgICAvLyBTb21lIGZpbGUgc3lzdGVtIHJlcHJlc2VudGF0aW9ucyBjYW5ub3QgYmUgcmVw
cmVzZW50ZWQgYXMgYSBVVEYtMTYgc3RyaW5nLAotICAgICAgICAgICAgLy8gc28gdGhpcyBzdHJp
bmcgbWlnaHQgYmUgbnVsbC4KLSAgICAgICAgICAgIGlmICghc3RyaW5nLmlzTnVsbCgpKQotICAg
ICAgICAgICAgICAgIGVudHJpZXMuYXBwZW5kKFdURk1vdmUoc3RyaW5nKSk7Ci0gICAgICAgIH0K
LSAgICAgICAgY2xvc2VkaXIoZGlyKTsKLSAgICB9Ci0gICAgcmV0dXJuIGVudHJpZXM7Ci19Ci0K
LSNpZiAhUExBVEZPUk0oQ09DT0EpCi1TdHJpbmcgc3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihjb25zdCBjaGFyKiBwYXRoKQotewotICAgIGlmICghcGF0aCkKLSAgICAgICAgcmV0
dXJuIFN0cmluZygpOwotCi0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgocGF0aCk7Ci19Ci0K
LUNTdHJpbmcgZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsK
LSAgICByZXR1cm4gcGF0aC51dGY4KCk7Ci19Ci0KLWJvb2wgbW92ZUZpbGUoY29uc3QgU3RyaW5n
JiBvbGRQYXRoLCBjb25zdCBTdHJpbmcmIG5ld1BhdGgpCi17Ci0gICAgYXV0byBvbGRGaWxlbmFt
ZSA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihvbGRQYXRoKTsKLSAgICBpZiAob2xkRmlsZW5h
bWUuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8gbmV3RmlsZW5h
bWUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24obmV3UGF0aCk7Ci0gICAgaWYgKG5ld0ZpbGVu
YW1lLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gcmVuYW1l
KG9sZEZpbGVuYW1lLmRhdGEoKSwgbmV3RmlsZW5hbWUuZGF0YSgpKSAhPSAtMTsKLX0KLQotYm9v
bCBnZXRWb2x1bWVGcmVlU3BhY2UoY29uc3QgU3RyaW5nJiBwYXRoLCB1aW50NjRfdCYgZnJlZVNw
YWNlKQotewotICAgIHN0cnVjdCBzdGF0dmZzIGZpbGVTeXN0ZW1TdGF0OwotICAgIGlmIChzdGF0
dmZzKGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCksICZmaWxlU3lzdGVtU3Rh
dCkpIHsKLSAgICAgICAgZnJlZVNwYWNlID0gZmlsZVN5c3RlbVN0YXQuZl9iYXZhaWwgKiBmaWxl
U3lzdGVtU3RhdC5mX2Zyc2l6ZTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJl
dHVybiBmYWxzZTsKLX0KLSNlbmRpZgotCi0jaWYgIU9TKERBUldJTikKLVN0cmluZyBvcGVuVGVt
cG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5k
bGUpCi17Ci0gICAgY2hhciBidWZmZXJbUEFUSF9NQVhdOwotICAgIGNvbnN0IGNoYXIqIHRtcERp
ciA9IGdldGVudigiVE1QRElSIik7Ci0KLSAgICBpZiAoIXRtcERpcikKLSAgICAgICAgdG1wRGly
ID0gIi90bXAiOwotCi0gICAgaWYgKHNucHJpbnRmKGJ1ZmZlciwgUEFUSF9NQVgsICIlcy8lc1hY
WFhYWCIsIHRtcERpciwgcHJlZml4LnV0ZjgoKS5kYXRhKCkpID49IFBBVEhfTUFYKQotICAgICAg
ICBnb3RvIGVuZDsKLQotICAgIGhhbmRsZSA9IG1rc3RlbXAoYnVmZmVyKTsKLSAgICBpZiAoaGFu
ZGxlIDwgMCkKLSAgICAgICAgZ290byBlbmQ7Ci0KLSAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRG
OChidWZmZXIpOwotCi1lbmQ6Ci0gICAgaGFuZGxlID0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRs
ZTsKLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0jZW5kaWYKLQotYm9vbCBoYXJkTGlua09yQ29w
eUZpbGUoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb24pCi17
Ci0gICAgaWYgKHNvdXJjZS5pc0VtcHR5KCkgfHwgZGVzdGluYXRpb24uaXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBDU3RyaW5nIGZzU291cmNlID0gZmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKHNvdXJjZSk7Ci0gICAgaWYgKCFmc1NvdXJjZS5kYXRhKCkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgIENTdHJpbmcgZnNEZXN0aW5hdGlvbiA9IGZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihkZXN0aW5hdGlvbik7Ci0gICAgaWYgKCFmc0Rlc3RpbmF0aW9uLmRhdGEo
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFsaW5rKGZzU291cmNlLmRhdGEo
KSwgZnNEZXN0aW5hdGlvbi5kYXRhKCkpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIC8v
IEhhcmQgbGluayBmYWlsZWQuIFBlcmZvcm0gYSBjb3B5IGluc3RlYWQuCi0gICAgYXV0byBoYW5k
bGUgPSBvcGVuKGZzRGVzdGluYXRpb24uZGF0YSgpLCBPX1dST05MWSB8IE9fQ1JFQVQgfCBPX0VY
Q0wsIDA2NjYpOwotICAgIGlmIChoYW5kbGUgPT0gLTEpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIGJvb2wgYXBwZW5kUmVzdWx0ID0gYXBwZW5kRmlsZUNvbnRlbnRzVG9GaWxlSGFuZGxl
KHNvdXJjZSwgaGFuZGxlKTsKLSAgICBjbG9zZShoYW5kbGUpOwotCi0gICAgLy8gSWYgdGhlIGNv
cHkgZmFpbGVkLCBkZWxldGUgdGhlIHVudXNhYmxlIGZpbGUuCi0gICAgaWYgKCFhcHBlbmRSZXN1
bHQpCi0gICAgICAgIHVubGluayhmc0Rlc3RpbmF0aW9uLmRhdGEoKSk7Ci0KLSAgICByZXR1cm4g
YXBwZW5kUmVzdWx0OwotfQotCi1PcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29u
c3QgQ1N0cmluZyYgZnNGaWxlKQotewotICAgIHN0cnVjdCBzdGF0IGZpbGVTdGF0OwotICAgIGlm
IChzdGF0KGZzRmlsZS5kYXRhKCksICZmaWxlU3RhdCkgPT0gLTEpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7Ci0KLSAgICByZXR1cm4gZmlsZVN0YXQuc3RfZGV2OwotfQotCi1TdHJpbmcg
cmVhbFBhdGgoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKLXsKLSAgICBDU3RyaW5nIGZzUmVwID0g
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVQYXRoKTsKLSAgICBjaGFyIHJlc29sdmVkTmFt
ZVtQQVRIX01BWF07Ci0gICAgY29uc3QgY2hhciogcmVzdWx0ID0gcmVhbHBhdGgoZnNSZXAuZGF0
YSgpLCByZXNvbHZlZE5hbWUpOwotICAgIHJldHVybiByZXN1bHQgPyBTdHJpbmc6OmZyb21VVEY4
KHJlc3VsdCkgOiBmaWxlUGF0aDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgRmlsZVN5c3RlbQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
cG9zaXgvU2hhcmVkQnVmZmVyUE9TSVguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9z
aXgvU2hhcmVkQnVmZmVyUE9TSVguY3BwCmluZGV4IDUxMzM3NWQyNDVlZjQ1YzE5NmE4NTQ2MTVj
ZTcwYjc4YTkwY2VjZmYuLjhlZDU3MTc0Nzc4Y2I3YmRhZGNhMzY1MTdmZDc5NDQ1NzM4YzUyZDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBP
U0lYLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQ
T1NJWC5jcHAKQEAgLTI2LDExICsyNiwxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIlNoYXJlZEJ1ZmZlci5oIgogCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgotCiAjaW5jbHVk
ZSA8ZmNudGwuaD4KICNpbmNsdWRlIDxzeXMvc3RhdC5oPgogI2luY2x1ZGUgPHVuaXN0ZC5oPgor
I2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9z
cWwvU1FMaXRlRmlsZVN5c3RlbS5jcHAKaW5kZXggOTBjMjBjN2JjZTZhNjdiNjdkNTNkNWM0MDUz
Nzc2YmYxNGM3ZTVlNS4uMzY0YmZmNzEwNzQ5Nzg5NmY3YjFkNzU3YTdkOWE1ZmMzYWQzZjY0MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmNw
cApAQCAtMzEsMTAgKzMxLDEwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU1FM
aXRlRmlsZVN5c3RlbS5oIgogCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIlNR
TGl0ZURhdGFiYXNlLmgiCiAjaW5jbHVkZSAiU1FMaXRlU3RhdGVtZW50LmgiCiAjaW5jbHVkZSA8
c3FsaXRlMy5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogI2luY2x1ZGUgPHBhbC9zcGkvaW9zL1NRTGl0ZTNTUEkuaD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGliSHlw
aGVuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaHlwaGVuL0h5cGhlbmF0aW9u
TGliSHlwaGVuLmNwcAppbmRleCAyZDdiNjZkOTM3OTA1ZGNjMjJmNGExM2U5NWEwYWYwNmJiNDhi
N2FmLi41ZWViOWJmYTc0MDBmNzIxNWMwMjZjNTUyZDgyYWEzOGE3NjNmOTQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhl
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9oeXBoZW4vSHlwaGVuYXRp
b25MaWJIeXBoZW4uY3BwCkBAIC0yOSwxMCArMjksMTAgQEAKIAogI2lmIFVTRShMSUJIWVBIRU4p
CiAKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSA8aHlwaGVuLmg+CiAjaW5jbHVk
ZSA8bGltaXRzPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVt
Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KICNpbmNsdWRlIDx3dGYvVGlueUxSVUNhY2hlLmg+CkBAIC0yMjQsNyArMjI0LDcgQEAg
cHVibGljOgogCiAgICAgc3RhdGljIFJlZlB0cjxXZWJDb3JlOjpIeXBoZW5hdGlvbkRpY3Rpb25h
cnk+IGNyZWF0ZVZhbHVlRm9yS2V5KGNvbnN0IEF0b21pY1N0cmluZyYgZGljdGlvbmFyeVBhdGgp
CiAgICAgewotICAgICAgICByZXR1cm4gV2ViQ29yZTo6SHlwaGVuYXRpb25EaWN0aW9uYXJ5Ojpj
cmVhdGUoV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRpY3Rp
b25hcnlQYXRoLnN0cmluZygpKSk7CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpIeXBoZW5hdGlv
bkRpY3Rpb25hcnk6OmNyZWF0ZShGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
ZGljdGlvbmFyeVBhdGguc3RyaW5nKCkpKTsKICAgICB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdpbi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGJiNzAyY2IwMTIwYWJiZjI1ODUyOWZhZjk0MzEwZGRmZmZkZjYwODQuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNTg5ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhLCBMdGQuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1l
IG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLiAKLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAot
ICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgotCi0jaW5j
bHVkZSAiRmlsZU1ldGFkYXRhLmgiCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNs
dWRlICJQYXRoV2Fsa2VyLmgiCi0jaW5jbHVkZSA8aW8uaD4KLSNpbmNsdWRlIDxzaGxvYmouaD4K
LSNpbmNsdWRlIDxzaGx3YXBpLmg+Ci0jaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSNpbmNsdWRlIDx3
aW5kb3dzLmg+Ci0jaW5jbHVkZSA8d3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmg+
Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0
L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVz
cGFjZSBGaWxlU3lzdGVtIHsKLQotc3RhdGljIGNvbnN0IFVMT05HTE9ORyBrU2Vjb25kc0Zyb21G
aWxlVGltZVRvVGltZXQgPSAxMTY0NDQ3MzYwMDsKLQotc3RhdGljIGJvb2wgZ2V0RmluZERhdGEo
U3RyaW5nIHBhdGgsIFdJTjMyX0ZJTkRfREFUQVcmIGZpbmREYXRhKQotewotICAgIEhBTkRMRSBo
YW5kbGUgPSBGaW5kRmlyc3RGaWxlVyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIocGF0aCku
ZGF0YSgpLCAmZmluZERhdGEpOwotICAgIGlmIChoYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFM
VUUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBGaW5kQ2xvc2UoaGFuZGxlKTsKLSAgICBy
ZXR1cm4gdHJ1ZTsKLX0KLQotc3RhdGljIGJvb2wgZ2V0RmlsZVNpemVGcm9tRmluZERhdGEoY29u
c3QgV0lOMzJfRklORF9EQVRBVyYgZmluZERhdGEsIGxvbmcgbG9uZyYgc2l6ZSkKLXsKLSAgICBV
TEFSR0VfSU5URUdFUiBmaWxlU2l6ZTsKLSAgICBmaWxlU2l6ZS5IaWdoUGFydCA9IGZpbmREYXRh
Lm5GaWxlU2l6ZUhpZ2g7Ci0gICAgZmlsZVNpemUuTG93UGFydCA9IGZpbmREYXRhLm5GaWxlU2l6
ZUxvdzsKLQotICAgIGlmIChmaWxlU2l6ZS5RdWFkUGFydCA+IHN0YXRpY19jYXN0PFVMT05HTE9O
Rz4oc3RkOjpudW1lcmljX2xpbWl0czxsb25nIGxvbmc+OjptYXgoKSkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIHNpemUgPSBmaWxlU2l6ZS5RdWFkUGFydDsKLSAgICByZXR1cm4gdHJ1
ZTsKLX0KLQotc3RhdGljIGJvb2wgZ2V0RmlsZVNpemVGcm9tQnlIYW5kbGVGaWxlSW5mb3JtYXRp
b25TdHJ1Y3R1cmUoY29uc3QgQllfSEFORExFX0ZJTEVfSU5GT1JNQVRJT04mIGZpbGVJbmZvcm1h
dGlvbiwgbG9uZyBsb25nJiBzaXplKQotewotICAgIFVMQVJHRV9JTlRFR0VSIGZpbGVTaXplOwot
ICAgIGZpbGVTaXplLkhpZ2hQYXJ0ID0gZmlsZUluZm9ybWF0aW9uLm5GaWxlU2l6ZUhpZ2g7Ci0g
ICAgZmlsZVNpemUuTG93UGFydCA9IGZpbGVJbmZvcm1hdGlvbi5uRmlsZVNpemVMb3c7Ci0KLSAg
ICBpZiAoZmlsZVNpemUuUXVhZFBhcnQgPiBzdGF0aWNfY2FzdDxVTE9OR0xPTkc+KHN0ZDo6bnVt
ZXJpY19saW1pdHM8bG9uZyBsb25nPjo6bWF4KCkpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICBzaXplID0gZmlsZVNpemUuUXVhZFBhcnQ7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXN0
YXRpYyB2b2lkIGdldEZpbGVDcmVhdGlvblRpbWVGcm9tRmluZERhdGEoY29uc3QgV0lOMzJfRklO
RF9EQVRBVyYgZmluZERhdGEsIHRpbWVfdCYgdGltZSkKLXsKLSAgICBVTEFSR0VfSU5URUdFUiBm
aWxlVGltZTsKLSAgICBmaWxlVGltZS5IaWdoUGFydCA9IGZpbmREYXRhLmZ0Q3JlYXRpb25UaW1l
LmR3SGlnaERhdGVUaW1lOwotICAgIGZpbGVUaW1lLkxvd1BhcnQgPSBmaW5kRGF0YS5mdENyZWF0
aW9uVGltZS5kd0xvd0RhdGVUaW1lOwotCi0gICAgLy8gSW5mb3JtYXRpb24gYWJvdXQgY29udmVy
dGluZyB0aW1lX3QgdG8gRmlsZVRpbWUgaXMgYXZhaWxhYmxlIGF0IGh0dHA6Ly9tc2RuLm1pY3Jv
c29mdC5jb20vZW4tdXMvbGlicmFyeS9tczcyNDIyOCUyOHY9dnMuODUlMjkuYXNweAotICAgIHRp
bWUgPSBmaWxlVGltZS5RdWFkUGFydCAvIDEwMDAwMDAwIC0ga1NlY29uZHNGcm9tRmlsZVRpbWVU
b1RpbWV0OwotfQotCi0KLXN0YXRpYyB2b2lkIGdldEZpbGVNb2RpZmljYXRpb25UaW1lRnJvbUZp
bmREYXRhKGNvbnN0IFdJTjMyX0ZJTkRfREFUQVcmIGZpbmREYXRhLCB0aW1lX3QmIHRpbWUpCi17
Ci0gICAgVUxBUkdFX0lOVEVHRVIgZmlsZVRpbWU7Ci0gICAgZmlsZVRpbWUuSGlnaFBhcnQgPSBm
aW5kRGF0YS5mdExhc3RXcml0ZVRpbWUuZHdIaWdoRGF0ZVRpbWU7Ci0gICAgZmlsZVRpbWUuTG93
UGFydCA9IGZpbmREYXRhLmZ0TGFzdFdyaXRlVGltZS5kd0xvd0RhdGVUaW1lOwotCi0gICAgLy8g
SW5mb3JtYXRpb24gYWJvdXQgY29udmVydGluZyB0aW1lX3QgdG8gRmlsZVRpbWUgaXMgYXZhaWxh
YmxlIGF0IGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9tczcyNDIyOCUy
OHY9dnMuODUlMjkuYXNweAotICAgIHRpbWUgPSBmaWxlVGltZS5RdWFkUGFydCAvIDEwMDAwMDAw
IC0ga1NlY29uZHNGcm9tRmlsZVRpbWVUb1RpbWV0OwotfQotCi1ib29sIGdldEZpbGVTaXplKGNv
bnN0IFN0cmluZyYgcGF0aCwgbG9uZyBsb25nJiBzaXplKQotewotICAgIFdJTjMyX0ZJTkRfREFU
QVcgZmluZERhdGE7Ci0gICAgaWYgKCFnZXRGaW5kRGF0YShwYXRoLCBmaW5kRGF0YSkpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBnZXRGaWxlU2l6ZUZyb21GaW5kRGF0YShm
aW5kRGF0YSwgc2l6ZSk7Ci19Ci0KLWJvb2wgZ2V0RmlsZVNpemUoUGxhdGZvcm1GaWxlSGFuZGxl
IGZpbGVIYW5kbGUsIGxvbmcgbG9uZyYgc2l6ZSkKLXsKLSAgICBCWV9IQU5ETEVfRklMRV9JTkZP
Uk1BVElPTiBmaWxlSW5mb3JtYXRpb247Ci0gICAgaWYgKCE6OkdldEZpbGVJbmZvcm1hdGlvbkJ5
SGFuZGxlKGZpbGVIYW5kbGUsICZmaWxlSW5mb3JtYXRpb24pKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICByZXR1cm4gZ2V0RmlsZVNpemVGcm9tQnlIYW5kbGVGaWxlSW5mb3JtYXRpb25T
dHJ1Y3R1cmUoZmlsZUluZm9ybWF0aW9uLCBzaXplKTsKLX0KLQotT3B0aW9uYWw8V2FsbFRpbWU+
IGdldEZpbGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBXSU4z
Ml9GSU5EX0RBVEFXIGZpbmREYXRhOwotICAgIGlmICghZ2V0RmluZERhdGEocGF0aCwgZmluZERh
dGEpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgdGltZV90IHRpbWUgPSAw
OwotICAgIGdldEZpbGVNb2RpZmljYXRpb25UaW1lRnJvbUZpbmREYXRhKGZpbmREYXRhLCB0aW1l
KTsKLSAgICByZXR1cm4gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKHRpbWUpOwotfQotCi1PcHRp
b25hbDxXYWxsVGltZT4gZ2V0RmlsZUNyZWF0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgpCi17
Ci0gICAgV0lOMzJfRklORF9EQVRBVyBmaW5kRGF0YTsKLSAgICBpZiAoIWdldEZpbmREYXRhKHBh
dGgsIGZpbmREYXRhKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIHRpbWVf
dCB0aW1lID0gMDsKLSAgICBnZXRGaWxlQ3JlYXRpb25UaW1lRnJvbUZpbmREYXRhKGZpbmREYXRh
LCB0aW1lKTsKLSAgICByZXR1cm4gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKHRpbWUpOwotfQot
Ci1zdGF0aWMgU3RyaW5nIGdldEZpbmFsUGF0aE5hbWUoY29uc3QgU3RyaW5nJiBwYXRoKQotewot
ICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUocGF0aCwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKLSAg
ICBpZiAoIWlzSGFuZGxlVmFsaWQoaGFuZGxlKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwot
Ci0gICAgVmVjdG9yPFVDaGFyPiBidWZmZXIoTUFYX1BBVEgpOwotICAgIGlmICg6OkdldEZpbmFs
UGF0aE5hbWVCeUhhbmRsZVcoaGFuZGxlLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpLCBW
T0xVTUVfTkFNRV9OVCkgPj0gTUFYX1BBVEgpIHsKLSAgICAgICAgY2xvc2VGaWxlKGhhbmRsZSk7
Ci0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICB9Ci0gICAgY2xvc2VGaWxlKGhhbmRsZSk7
Ci0KLSAgICBidWZmZXIuc2hyaW5rKHdjc2xlbihidWZmZXIuZGF0YSgpKSk7Ci0gICAgcmV0dXJu
IFN0cmluZzo6YWRvcHQoV1RGTW92ZShidWZmZXIpKTsKLX0KLQotc3RhdGljIGlubGluZSBib29s
IGlzU3ltYm9saWNMaW5rKFdJTjMyX0ZJTkRfREFUQVcgZmluZERhdGEpCi17Ci0gICAgcmV0dXJu
IGZpbmREYXRhLmR3RmlsZUF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9SRVBBUlNFX1BPSU5U
ICYmIGZpbmREYXRhLmR3UmVzZXJ2ZWQwID09IElPX1JFUEFSU0VfVEFHX1NZTUxJTks7Ci19Ci0K
LXN0YXRpYyBGaWxlTWV0YWRhdGE6OlR5cGUgdG9GaWxlTWV0YWRhdGFUeXBlKFdJTjMyX0ZJTkRf
REFUQVcgZmluZERhdGEpCi17Ci0gICAgaWYgKGZpbmREYXRhLmR3RmlsZUF0dHJpYnV0ZXMgJiBG
SUxFX0FUVFJJQlVURV9ESVJFQ1RPUlkpCi0gICAgICAgIHJldHVybiBGaWxlTWV0YWRhdGE6OlR5
cGU6OkRpcmVjdG9yeTsKLSAgICBpZiAoaXNTeW1ib2xpY0xpbmsoZmluZERhdGEpKQotICAgICAg
ICByZXR1cm4gRmlsZU1ldGFkYXRhOjpUeXBlOjpTeW1ib2xpY0xpbms7Ci0gICAgcmV0dXJuIEZp
bGVNZXRhZGF0YTo6VHlwZTo6RmlsZTsKLX0KLQotc3RhdGljIE9wdGlvbmFsPEZpbGVNZXRhZGF0
YT4gZmluZERhdGFUb0ZpbGVNZXRhZGF0YShXSU4zMl9GSU5EX0RBVEFXIGZpbmREYXRhKQotewot
ICAgIGxvbmcgbG9uZyBsZW5ndGg7Ci0gICAgaWYgKCFnZXRGaWxlU2l6ZUZyb21GaW5kRGF0YShm
aW5kRGF0YSwgbGVuZ3RoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIHRp
bWVfdCBtb2RpZmljYXRpb25UaW1lOwotICAgIGdldEZpbGVNb2RpZmljYXRpb25UaW1lRnJvbUZp
bmREYXRhKGZpbmREYXRhLCBtb2RpZmljYXRpb25UaW1lKTsKLQotICAgIHJldHVybiBGaWxlTWV0
YWRhdGEgewotICAgICAgICBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMobW9kaWZpY2F0aW9uVGlt
ZSksCi0gICAgICAgIGxlbmd0aCwKLSAgICAgICAgc3RhdGljX2Nhc3Q8Ym9vbD4oZmluZERhdGEu
ZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX0hJRERFTiksCi0gICAgICAgIHRvRmls
ZU1ldGFkYXRhVHlwZShmaW5kRGF0YSkKLSAgICB9OwotfQotCi1PcHRpb25hbDxGaWxlTWV0YWRh
dGE+IGZpbGVNZXRhZGF0YShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgV0lOMzJfRklORF9E
QVRBVyBmaW5kRGF0YTsKLSAgICBpZiAoIWdldEZpbmREYXRhKHBhdGgsIGZpbmREYXRhKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIHJldHVybiBmaW5kRGF0YVRvRmlsZU1l
dGFkYXRhKGZpbmREYXRhKTsKLX0KLQotT3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRh
dGFGb2xsb3dpbmdTeW1saW5rcyhjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgV0lOMzJfRklO
RF9EQVRBVyBmaW5kRGF0YTsKLSAgICBpZiAoIWdldEZpbmREYXRhKHBhdGgsIGZpbmREYXRhKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIGlmIChpc1N5bWJvbGljTGluayhm
aW5kRGF0YSkpIHsKLSAgICAgICAgU3RyaW5nIHRhcmdldFBhdGggPSBnZXRGaW5hbFBhdGhOYW1l
KHBhdGgpOwotICAgICAgICBpZiAodGFyZ2V0UGF0aC5pc051bGwoKSkKLSAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgICAgIGlmICghZ2V0RmluZERhdGEodGFyZ2V0UGF0aCwg
ZmluZERhdGEpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICB9Ci0KLSAg
ICByZXR1cm4gZmluZERhdGFUb0ZpbGVNZXRhZGF0YShmaW5kRGF0YSk7Ci19Ci0KLWJvb2wgY3Jl
YXRlU3ltYm9saWNMaW5rKGNvbnN0IFN0cmluZyYgdGFyZ2V0UGF0aCwgY29uc3QgU3RyaW5nJiBz
eW1ib2xpY0xpbmtQYXRoKQotewotICAgIHJldHVybiAhOjpDcmVhdGVTeW1ib2xpY0xpbmtXKHN0
cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihzeW1ib2xpY0xpbmtQYXRoKS5kYXRhKCksIHN0cmlu
Z1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcih0YXJnZXRQYXRoKS5kYXRhKCksIDApOwotfQotCi1ib29s
IGZpbGVFeGlzdHMoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIFdJTjMyX0ZJTkRfREFUQVcg
ZmluZERhdGE7Ci0gICAgcmV0dXJuIGdldEZpbmREYXRhKHBhdGgsIGZpbmREYXRhKTsKLX0KLQot
Ym9vbCBkZWxldGVGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBTdHJpbmcgZmlsZW5h
bWUgPSBwYXRoOwotICAgIHJldHVybiAhIURlbGV0ZUZpbGVXKHN0cmluZ1RvTnVsbFRlcm1pbmF0
ZWRXQ2hhcihmaWxlbmFtZSkuZGF0YSgpKTsKLX0KLQotYm9vbCBkZWxldGVFbXB0eURpcmVjdG9y
eShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgU3RyaW5nIGZpbGVuYW1lID0gcGF0aDsKLSAg
ICByZXR1cm4gISFSZW1vdmVEaXJlY3RvcnlXKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihm
aWxlbmFtZSkuZGF0YSgpKTsKLX0KLQotYm9vbCBtb3ZlRmlsZShjb25zdCBTdHJpbmcmIG9sZFBh
dGgsIGNvbnN0IFN0cmluZyYgbmV3UGF0aCkKLXsKLSAgICBTdHJpbmcgb2xkRmlsZW5hbWUgPSBv
bGRQYXRoOwotICAgIFN0cmluZyBuZXdGaWxlbmFtZSA9IG5ld1BhdGg7Ci0gICAgcmV0dXJuICEh
OjpNb3ZlRmlsZUV4KHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihvbGRGaWxlbmFtZSkuZGF0
YSgpLCBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIobmV3RmlsZW5hbWUpLmRhdGEoKSwgTU9W
RUZJTEVfQ09QWV9BTExPV0VEIHwgTU9WRUZJTEVfUkVQTEFDRV9FWElTVElORyk7Ci19Ci0KLVN0
cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBT
dHJpbmcmIGNvbXBvbmVudCkKLXsKLSAgICBWZWN0b3I8VUNoYXI+IGJ1ZmZlcihNQVhfUEFUSCk7
Ci0KLSAgICBpZiAocGF0aC5sZW5ndGgoKSArIDEgPiBidWZmZXIuc2l6ZSgpKQotICAgICAgICBy
ZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICBTdHJpbmdWaWV3KHBhdGgpLmdldENoYXJhY3RlcnNXaXRo
VXBjb252ZXJ0KGJ1ZmZlci5kYXRhKCkpOwotICAgIGJ1ZmZlcltwYXRoLmxlbmd0aCgpXSA9ICdc
MCc7Ci0KLSAgICBpZiAoIVBhdGhBcHBlbmRXKGJ1ZmZlci5kYXRhKCksIHN0cmluZ1RvTnVsbFRl
cm1pbmF0ZWRXQ2hhcihjb21wb25lbnQpLmRhdGEoKSkpCi0gICAgICAgIHJldHVybiBTdHJpbmco
KTsKLQotICAgIGJ1ZmZlci5zaHJpbmsod2NzbGVuKGJ1ZmZlci5kYXRhKCkpKTsKLQotICAgIHJl
dHVybiBTdHJpbmc6OmFkb3B0KFdURk1vdmUoYnVmZmVyKSk7Ci19Ci0KLVN0cmluZyBwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnRzKFN0cmluZ1ZpZXcgcGF0aCwgY29uc3QgVmVjdG9yPFN0cmluZ1Zp
ZXc+JiBjb21wb25lbnRzKQotewotICAgIFN0cmluZyByZXN1bHQgPSBwYXRoLnRvU3RyaW5nKCk7
Ci0gICAgZm9yIChhdXRvJiBjb21wb25lbnQgOiBjb21wb25lbnRzKQotICAgICAgICByZXN1bHQg
PSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVzdWx0LCBjb21wb25lbnQudG9TdHJpbmcoKSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotI2lmICFVU0UoQ0YpCi0KLUNTdHJpbmcgZmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBhdXRvIHVwY29u
dmVydGVkQ2hhcmFjdGVycyA9IHBhdGgudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCk7Ci0KLSAgICBj
b25zdCBVQ2hhciogY2hhcmFjdGVycyA9IHVwY29udmVydGVkQ2hhcmFjdGVyczsKLSAgICBpbnQg
c2l6ZSA9IFdpZGVDaGFyVG9NdWx0aUJ5dGUoQ1BfQUNQLCAwLCBjaGFyYWN0ZXJzLCBwYXRoLmxl
bmd0aCgpLCAwLCAwLCAwLCAwKSAtIDE7Ci0KLSAgICBjaGFyKiBidWZmZXI7Ci0gICAgQ1N0cmlu
ZyBzdHJpbmcgPSBDU3RyaW5nOjpuZXdVbmluaXRpYWxpemVkKHNpemUsIGJ1ZmZlcik7Ci0KLSAg
ICBXaWRlQ2hhclRvTXVsdGlCeXRlKENQX0FDUCwgMCwgY2hhcmFjdGVycywgcGF0aC5sZW5ndGgo
KSwgYnVmZmVyLCBzaXplLCAwLCAwKTsKLQotICAgIHJldHVybiBzdHJpbmc7Ci19Ci0KLSNlbmRp
ZiAvLyAhVVNFKENGKQotCi1ib29sIG1ha2VBbGxEaXJlY3Rvcmllcyhjb25zdCBTdHJpbmcmIHBh
dGgpCi17Ci0gICAgU3RyaW5nIGZ1bGxQYXRoID0gcGF0aDsKLSAgICBpZiAoU0hDcmVhdGVEaXJl
Y3RvcnlFeCgwLCBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoZnVsbFBhdGgpLmRhdGEoKSwg
MCkgIT0gRVJST1JfU1VDQ0VTUykgewotICAgICAgICBEV09SRCBlcnJvciA9IEdldExhc3RFcnJv
cigpOwotICAgICAgICBpZiAoZXJyb3IgIT0gRVJST1JfRklMRV9FWElTVFMgJiYgZXJyb3IgIT0g
RVJST1JfQUxSRUFEWV9FWElTVFMpIHsKLSAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRv
IGNyZWF0ZSBwYXRoICVzIiwgcGF0aC5hc2NpaSgpLmRhdGEoKSk7Ci0gICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLVN0cmlu
ZyBob21lRGlyZWN0b3J5UGF0aCgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1
cm4gIiI7Ci19Ci0KLVN0cmluZyBwYXRoR2V0RmlsZU5hbWUoY29uc3QgU3RyaW5nJiBwYXRoKQot
ewotICAgIHJldHVybiBudWxsVGVybWluYXRlZFdDaGFyVG9TdHJpbmcoOjpQYXRoRmluZEZpbGVO
YW1lKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihwYXRoKS5kYXRhKCkpKTsKLX0KLQotU3Ry
aW5nIGRpcmVjdG9yeU5hbWUoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIFN0cmluZyBuYW1l
ID0gcGF0aC5sZWZ0KHBhdGgubGVuZ3RoKCkgLSBwYXRoR2V0RmlsZU5hbWUocGF0aCkubGVuZ3Ro
KCkpOwotICAgIGlmIChuYW1lLmNoYXJhY3RlclN0YXJ0aW5nQXQobmFtZS5sZW5ndGgoKSAtIDEp
ID09ICdcXCcpIHsKLSAgICAgICAgLy8gUmVtb3ZlIGFueSB0cmFpbGluZyAiXCIuCi0gICAgICAg
IG5hbWUudHJ1bmNhdGUobmFtZS5sZW5ndGgoKSAtIDEpOwotICAgIH0KLSAgICByZXR1cm4gbmFt
ZTsKLX0KLQotc3RhdGljIFN0cmluZyBidW5kbGVOYW1lKCkKLXsKLSAgICBzdGF0aWMgY29uc3Qg
TmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBuYW1lID0gW10gewotICAgICAgICBTdHJpbmcgbmFtZSB7
ICJXZWJLaXQiX3MgfTsKLQotI2lmIFVTRShDRikKLSAgICAgICAgaWYgKENGQnVuZGxlUmVmIGJ1
bmRsZSA9IENGQnVuZGxlR2V0TWFpbkJ1bmRsZSgpKSB7Ci0gICAgICAgICAgICBpZiAoQ0ZUeXBl
UmVmIGJ1bmRsZUV4ZWN1dGFibGUgPSBDRkJ1bmRsZUdldFZhbHVlRm9ySW5mb0RpY3Rpb25hcnlL
ZXkoYnVuZGxlLCBrQ0ZCdW5kbGVFeGVjdXRhYmxlS2V5KSkgewotICAgICAgICAgICAgICAgIGlm
IChDRkdldFR5cGVJRChidW5kbGVFeGVjdXRhYmxlKSA9PSBDRlN0cmluZ0dldFR5cGVJRCgpKQot
ICAgICAgICAgICAgICAgICAgICBuYW1lID0gcmVpbnRlcnByZXRfY2FzdDxDRlN0cmluZ1JlZj4o
YnVuZGxlRXhlY3V0YWJsZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSNlbmRpZgotCi0g
ICAgICAgIHJldHVybiBuYW1lOwotICAgIH0oKTsKLQotICAgIHJldHVybiBuYW1lOwotfQotCi1z
dGF0aWMgU3RyaW5nIHN0b3JhZ2VEaXJlY3RvcnkoRFdPUkQgcGF0aElkZW50aWZpZXIpCi17Ci0g
ICAgVmVjdG9yPFVDaGFyPiBidWZmZXIoTUFYX1BBVEgpOwotICAgIGlmIChGQUlMRUQoU0hHZXRG
b2xkZXJQYXRoVygwLCBwYXRoSWRlbnRpZmllciB8IENTSURMX0ZMQUdfQ1JFQVRFLCAwLCAwLCBi
dWZmZXIuZGF0YSgpKSkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICBidWZmZXIucmVz
aXplKHdjc2xlbihidWZmZXIuZGF0YSgpKSk7Ci0gICAgU3RyaW5nIGRpcmVjdG9yeSA9IFN0cmlu
Zzo6YWRvcHQoV1RGTW92ZShidWZmZXIpKTsKLQotICAgIGRpcmVjdG9yeSA9IHBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChkaXJlY3RvcnksICJBcHBsZSBDb21wdXRlclxcIiArIGJ1bmRsZU5hbWUo
KSk7Ci0gICAgaWYgKCFtYWtlQWxsRGlyZWN0b3JpZXMoZGlyZWN0b3J5KSkKLSAgICAgICAgcmV0
dXJuIFN0cmluZygpOwotCi0gICAgcmV0dXJuIGRpcmVjdG9yeTsKLX0KLQotc3RhdGljIFN0cmlu
ZyBjYWNoZWRTdG9yYWdlRGlyZWN0b3J5KERXT1JEIHBhdGhJZGVudGlmaWVyKQotewotICAgIHN0
YXRpYyBIYXNoTWFwPERXT1JELCBTdHJpbmc+IGRpcmVjdG9yaWVzOwotCi0gICAgSGFzaE1hcDxE
V09SRCwgU3RyaW5nPjo6aXRlcmF0b3IgaXQgPSBkaXJlY3Rvcmllcy5maW5kKHBhdGhJZGVudGlm
aWVyKTsKLSAgICBpZiAoaXQgIT0gZGlyZWN0b3JpZXMuZW5kKCkpCi0gICAgICAgIHJldHVybiBp
dC0+dmFsdWU7Ci0KLSAgICBTdHJpbmcgZGlyZWN0b3J5ID0gc3RvcmFnZURpcmVjdG9yeShwYXRo
SWRlbnRpZmllcik7Ci0gICAgZGlyZWN0b3JpZXMuYWRkKHBhdGhJZGVudGlmaWVyLCBkaXJlY3Rv
cnkpOwotCi0gICAgcmV0dXJuIGRpcmVjdG9yeTsKLX0KLQotc3RhdGljIFN0cmluZyBnZW5lcmF0
ZVRlbXBvcmFyeVBhdGgoY29uc3QgRnVuY3Rpb248Ym9vbChjb25zdCBTdHJpbmcmKT4mIGFjdGlv
bikKLXsKLSAgICB3Y2hhcl90IHRlbXBQYXRoW01BWF9QQVRIXTsKLSAgICBpbnQgdGVtcFBhdGhM
ZW5ndGggPSA6OkdldFRlbXBQYXRoVyhXVEZfQVJSQVlfTEVOR1RIKHRlbXBQYXRoKSwgdGVtcFBh
dGgpOwotICAgIGlmICh0ZW1wUGF0aExlbmd0aCA8PSAwIHx8IHRlbXBQYXRoTGVuZ3RoID4gV1RG
X0FSUkFZX0xFTkdUSCh0ZW1wUGF0aCkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAg
IFN0cmluZyBwcm9wb3NlZFBhdGg7Ci0gICAgZG8gewotICAgICAgICB3Y2hhcl90IHRlbXBGaWxl
W10gPSBMIlhYWFhYWFhYLnRtcCI7IC8vIFVzZSA4LjMgc3R5bGUgbmFtZSAobW9yZSBjaGFyYWN0
ZXJzIGFyZW4ndCBoZWxwZnVsIGR1ZSB0byA4LjMgc2hvcnQgZmlsZSBuYW1lcykKLSAgICAgICAg
Y29uc3QgaW50IHJhbmRvbVBhcnRMZW5ndGggPSA4OwotICAgICAgICBjcnlwdG9ncmFwaGljYWxs
eVJhbmRvbVZhbHVlcyh0ZW1wRmlsZSwgcmFuZG9tUGFydExlbmd0aCAqIHNpemVvZih3Y2hhcl90
KSk7Ci0KLSAgICAgICAgLy8gTGltaXQgdG8gdmFsaWQgZmlsZXN5c3RlbSBjaGFyYWN0ZXJzLCBh
bHNvIGV4Y2x1ZGluZyBvdGhlcnMgdGhhdCBjb3VsZCBiZSBwcm9ibGVtYXRpYywgbGlrZSBwdW5j
dHVhdGlvbi4KLSAgICAgICAgLy8gZG9uJ3QgaW5jbHVkZSBib3RoIHVwcGVyIGFuZCBsb3dlcmNh
c2Ugc2luY2UgV2luZG93cyBmaWxlIHN5c3RlbXMgYXJlIHR5cGljYWxseSBub3QgY2FzZSBzZW5z
aXRpdmUuCi0gICAgICAgIGNvbnN0IGNoYXIgdmFsaWRDaGFyc1tdID0gIjAxMjM0NTY3ODlhYmNk
ZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiI7Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmFu
ZG9tUGFydExlbmd0aDsgKytpKQotICAgICAgICAgICAgdGVtcEZpbGVbaV0gPSB2YWxpZENoYXJz
W3RlbXBGaWxlW2ldICUgKHNpemVvZih2YWxpZENoYXJzKSAtIDEpXTsKLQotICAgICAgICBBU1NF
UlQod2NzbGVuKHRlbXBGaWxlKSA9PSBXVEZfQVJSQVlfTEVOR1RIKHRlbXBGaWxlKSAtIDEpOwot
Ci0gICAgICAgIHByb3Bvc2VkUGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChudWxsVGVy
bWluYXRlZFdDaGFyVG9TdHJpbmcodGVtcFBhdGgpLCBudWxsVGVybWluYXRlZFdDaGFyVG9TdHJp
bmcodGVtcEZpbGUpKTsKLSAgICAgICAgaWYgKHByb3Bvc2VkUGF0aC5pc0VtcHR5KCkpCi0gICAg
ICAgICAgICBicmVhazsKLSAgICB9IHdoaWxlICghYWN0aW9uKHByb3Bvc2VkUGF0aCkpOwotCi0g
ICAgcmV0dXJuIHByb3Bvc2VkUGF0aDsKLX0KLQotU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNv
bnN0IFN0cmluZyYsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKQotewotICAgIGhhbmRsZSA9
IElOVkFMSURfSEFORExFX1ZBTFVFOwotCi0gICAgU3RyaW5nIHByb3Bvc2VkUGF0aCA9IGdlbmVy
YXRlVGVtcG9yYXJ5UGF0aChbJmhhbmRsZV0oY29uc3QgU3RyaW5nJiBwcm9wb3NlZFBhdGgpIHsK
LSAgICAgICAgLy8gdXNlIENSRUFURV9ORVcgdG8gYXZvaWQgb3ZlcndyaXRpbmcgYW4gZXhpc3Rp
bmcgZmlsZSB3aXRoIHRoZSBzYW1lIG5hbWUKLSAgICAgICAgaGFuZGxlID0gOjpDcmVhdGVGaWxl
VyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIocHJvcG9zZWRQYXRoKS5kYXRhKCksIEdFTkVS
SUNfUkVBRCB8IEdFTkVSSUNfV1JJVEUsIDAsIDAsIENSRUFURV9ORVcsIEZJTEVfQVRUUklCVVRF
X05PUk1BTCwgMCk7Ci0KLSAgICAgICAgcmV0dXJuIGlzSGFuZGxlVmFsaWQoaGFuZGxlKSB8fCBH
ZXRMYXN0RXJyb3IoKSA9PSBFUlJPUl9BTFJFQURZX0VYSVNUUzsKLSAgICB9KTsKLQotICAgIGlm
ICghaXNIYW5kbGVWYWxpZChoYW5kbGUpKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAg
ICByZXR1cm4gcHJvcG9zZWRQYXRoOwotfQotCi1QbGF0Zm9ybUZpbGVIYW5kbGUgb3BlbkZpbGUo
Y29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUgbW9kZSkKLXsKLSAgICBEV09SRCBkZXNp
cmVkQWNjZXNzID0gMDsKLSAgICBEV09SRCBjcmVhdGlvbkRpc3Bvc2l0aW9uID0gMDsKLSAgICBE
V09SRCBzaGFyZU1vZGUgPSAwOwotICAgIHN3aXRjaCAobW9kZSkgewotICAgIGNhc2UgRmlsZU9w
ZW5Nb2RlOjpSZWFkOgotICAgICAgICBkZXNpcmVkQWNjZXNzID0gR0VORVJJQ19SRUFEOwotICAg
ICAgICBjcmVhdGlvbkRpc3Bvc2l0aW9uID0gT1BFTl9FWElTVElORzsKLSAgICAgICAgc2hhcmVN
b2RlID0gRklMRV9TSEFSRV9SRUFEOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEZpbGVPcGVu
TW9kZTo6V3JpdGU6Ci0gICAgICAgIGRlc2lyZWRBY2Nlc3MgPSBHRU5FUklDX1dSSVRFOwotICAg
ICAgICBjcmVhdGlvbkRpc3Bvc2l0aW9uID0gQ1JFQVRFX0FMV0FZUzsKLSAgICAgICAgYnJlYWs7
Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotCi0g
ICAgU3RyaW5nIGRlc3RpbmF0aW9uID0gcGF0aDsKLSAgICByZXR1cm4gQ3JlYXRlRmlsZShzdHJp
bmdUb051bGxUZXJtaW5hdGVkV0NoYXIoZGVzdGluYXRpb24pLmRhdGEoKSwgZGVzaXJlZEFjY2Vz
cywgc2hhcmVNb2RlLCAwLCBjcmVhdGlvbkRpc3Bvc2l0aW9uLCBGSUxFX0FUVFJJQlVURV9OT1JN
QUwsIDApOwotfQotCi12b2lkIGNsb3NlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkK
LXsKLSAgICBpZiAoaXNIYW5kbGVWYWxpZChoYW5kbGUpKSB7Ci0gICAgICAgIDo6Q2xvc2VIYW5k
bGUoaGFuZGxlKTsKLSAgICAgICAgaGFuZGxlID0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsK
LSAgICB9Ci19Ci0KLWxvbmcgbG9uZyBzZWVrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxl
LCBsb25nIGxvbmcgb2Zmc2V0LCBGaWxlU2Vla09yaWdpbiBvcmlnaW4pCi17Ci0gICAgRFdPUkQg
bW92ZU1ldGhvZCA9IEZJTEVfQkVHSU47Ci0KLSAgICBpZiAob3JpZ2luID09IEZpbGVTZWVrT3Jp
Z2luOjpDdXJyZW50KQotICAgICAgICBtb3ZlTWV0aG9kID0gRklMRV9DVVJSRU5UOwotICAgIGVs
c2UgaWYgKG9yaWdpbiA9PSBGaWxlU2Vla09yaWdpbjo6RW5kKQotICAgICAgICBtb3ZlTWV0aG9k
ID0gRklMRV9FTkQ7Ci0KLSAgICBMQVJHRV9JTlRFR0VSIGxhcmdlT2Zmc2V0OwotICAgIGxhcmdl
T2Zmc2V0LlF1YWRQYXJ0ID0gb2Zmc2V0OwotCi0gICAgbGFyZ2VPZmZzZXQuTG93UGFydCA9IFNl
dEZpbGVQb2ludGVyKGhhbmRsZSwgbGFyZ2VPZmZzZXQuTG93UGFydCwgJmxhcmdlT2Zmc2V0Lkhp
Z2hQYXJ0LCBtb3ZlTWV0aG9kKTsKLQotICAgIGlmIChsYXJnZU9mZnNldC5Mb3dQYXJ0ID09IElO
VkFMSURfU0VUX0ZJTEVfUE9JTlRFUiAmJiBHZXRMYXN0RXJyb3IoKSAhPSBOT19FUlJPUikKLSAg
ICAgICAgcmV0dXJuIC0xOwotCi0gICAgcmV0dXJuIGxhcmdlT2Zmc2V0LlF1YWRQYXJ0OwotfQot
Ci1pbnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY29uc3QgY2hhciog
ZGF0YSwgaW50IGxlbmd0aCkKLXsKLSAgICBpZiAoIWlzSGFuZGxlVmFsaWQoaGFuZGxlKSkKLSAg
ICAgICAgcmV0dXJuIC0xOwotCi0gICAgRFdPUkQgYnl0ZXNXcml0dGVuOwotICAgIGJvb2wgc3Vj
Y2VzcyA9IFdyaXRlRmlsZShoYW5kbGUsIGRhdGEsIGxlbmd0aCwgJmJ5dGVzV3JpdHRlbiwgMCk7
Ci0KLSAgICBpZiAoIXN1Y2Nlc3MpCi0gICAgICAgIHJldHVybiAtMTsKLSAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8aW50PihieXRlc1dyaXR0ZW4pOwotfQotCi1pbnQgcmVhZEZyb21GaWxlKFBsYXRm
b3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCi17Ci0gICAgaWYg
KCFpc0hhbmRsZVZhbGlkKGhhbmRsZSkpCi0gICAgICAgIHJldHVybiAtMTsKLQotICAgIERXT1JE
IGJ5dGVzUmVhZDsKLSAgICBib29sIHN1Y2Nlc3MgPSA6OlJlYWRGaWxlKGhhbmRsZSwgZGF0YSwg
bGVuZ3RoLCAmYnl0ZXNSZWFkLCAwKTsKLQotICAgIGlmICghc3VjY2VzcykKLSAgICAgICAgcmV0
dXJuIC0xOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KGJ5dGVzUmVhZCk7Ci19Ci0KLWJv
b2wgaGFyZExpbmtPckNvcHlGaWxlKGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBTdHJpbmcm
IGRlc3RpbmF0aW9uKQotewotICAgIHJldHVybiAhITo6Q29weUZpbGUoc3RyaW5nVG9OdWxsVGVy
bWluYXRlZFdDaGFyKHNvdXJjZSkuZGF0YSgpLCBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIo
ZGVzdGluYXRpb24pLmRhdGEoKSwgVFJVRSk7Ci19Ci0KLVN0cmluZyBsb2NhbFVzZXJTcGVjaWZp
Y1N0b3JhZ2VEaXJlY3RvcnkoKQotewotICAgIHJldHVybiBjYWNoZWRTdG9yYWdlRGlyZWN0b3J5
KENTSURMX0xPQ0FMX0FQUERBVEEpOwotfQotCi1TdHJpbmcgcm9hbWluZ1VzZXJTcGVjaWZpY1N0
b3JhZ2VEaXJlY3RvcnkoKQotewotICAgIHJldHVybiBjYWNoZWRTdG9yYWdlRGlyZWN0b3J5KENT
SURMX0FQUERBVEEpOwotfQotCi1WZWN0b3I8U3RyaW5nPiBsaXN0RGlyZWN0b3J5KGNvbnN0IFN0
cmluZyYgZGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIGZpbHRlcikKLXsKLSAgICBWZWN0b3I8U3Ry
aW5nPiBlbnRyaWVzOwotCi0gICAgUGF0aFdhbGtlciB3YWxrZXIoZGlyZWN0b3J5LCBmaWx0ZXIp
OwotICAgIGlmICghd2Fsa2VyLmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIGVudHJpZXM7Ci0K
LSAgICBkbyB7Ci0gICAgICAgIGlmICh3YWxrZXIuZGF0YSgpLmR3RmlsZUF0dHJpYnV0ZXMgJiBG
SUxFX0FUVFJJQlVURV9ESVJFQ1RPUlkKLSAgICAgICAgICAgICYmICghd2NzY21wKHdhbGtlci5k
YXRhKCkuY0ZpbGVOYW1lLCBMIi4iKSB8fCAhd2NzY21wKHdhbGtlci5kYXRhKCkuY0ZpbGVOYW1l
LCBMIi4uIikpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgZW50cmllcy5hcHBl
bmQoZGlyZWN0b3J5ICsgIlxcIiArIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPih3YWxr
ZXIuZGF0YSgpLmNGaWxlTmFtZSkpOwotICAgIH0gd2hpbGUgKHdhbGtlci5zdGVwKCkpOwotCi0g
ICAgcmV0dXJuIGVudHJpZXM7Ci19Ci0KLWJvb2wgZ2V0Vm9sdW1lRnJlZVNwYWNlKGNvbnN0IFN0
cmluZyYsIHVpbnQ2NF90JikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBm
YWxzZTsKLX0KLQotT3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0IENTdHJp
bmcmIGZzRmlsZSkKLXsKLSAgICBhdXRvIGhhbmRsZSA9IG9wZW5GaWxlKGZzRmlsZS5kYXRhKCks
IEZpbGVPcGVuTW9kZTo6UmVhZCk7Ci0gICAgaWYgKCFpc0hhbmRsZVZhbGlkKGhhbmRsZSkpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBCWV9IQU5ETEVfRklMRV9JTkZPUk1B
VElPTiBmaWxlSW5mb3JtYXRpb24gPSB7IH07Ci0gICAgaWYgKCE6OkdldEZpbGVJbmZvcm1hdGlv
bkJ5SGFuZGxlKGhhbmRsZSwgJmZpbGVJbmZvcm1hdGlvbikpIHsKLSAgICAgICAgY2xvc2VGaWxl
KGhhbmRsZSk7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgfQotCi0gICAgY2xv
c2VGaWxlKGhhbmRsZSk7Ci0KLSAgICByZXR1cm4gZmlsZUluZm9ybWF0aW9uLmR3Vm9sdW1lU2Vy
aWFsTnVtYmVyOwotfQotCi1TdHJpbmcgcmVhbFBhdGgoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkK
LXsKLSAgICByZXR1cm4gZ2V0RmluYWxQYXRoTmFtZShmaWxlUGF0aCk7Ci19Ci0KLVN0cmluZyBj
cmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoKQotewotICAgIHJldHVybiBnZW5lcmF0ZVRlbXBvcmFy
eVBhdGgoW10oY29uc3QgU3RyaW5nJiBwcm9wb3NlZFBhdGgpIHsKLSAgICAgICAgcmV0dXJuIG1h
a2VBbGxEaXJlY3Rvcmllcyhwcm9wb3NlZFBhdGgpOwotICAgIH0pOwotfQotCi1ib29sIGRlbGV0
ZU5vbkVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5UGF0aCkKLXsKLSAgICBT
SEZJTEVPUFNUUlVDVCBkZWxldGVPcGVyYXRpb24gPSB7Ci0gICAgICAgIG51bGxwdHIsCi0gICAg
ICAgIEZPX0RFTEVURSwKLSAgICAgICAgc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGRpcmVj
dG9yeVBhdGgpLmRhdGEoKSwKLSAgICAgICAgTCIiLAotICAgICAgICBGT0ZfTk9DT05GSVJNQVRJ
T04gfCBGT0ZfTk9FUlJPUlVJIHwgRk9GX1NJTEVOVCwKLSAgICAgICAgZmFsc2UsCi0gICAgICAg
IDAsCi0gICAgICAgIEwiIgotICAgIH07Ci0gICAgcmV0dXJuICFTSEZpbGVPcGVyYXRpb24oJmRl
bGV0ZU9wZXJhdGlvbik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEZpbGVTeXN0ZW0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Q
YXRoV2Fsa2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXRoV2Fsa2VyLmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjIwNDA3YjFjZmVhNjI0ZjNhMTU2OWE4
ZmQ2NzY4YTVkZWJlZDM2My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGF0aFdhbGtlci5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIlBhdGhXYWxrZXIuaCIKLQotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLVBhdGhXYWxrZXI6OlBhdGhXYWxrZXIoY29uc3QgU3RyaW5nJiBk
aXJlY3RvcnksIGNvbnN0IFN0cmluZyYgcGF0dGVybikKLXsKLSAgICBTdHJpbmcgcGF0aCA9IGRp
cmVjdG9yeSArICJcXCIgKyBwYXR0ZXJuOwotICAgIG1faGFuZGxlID0gOjpGaW5kRmlyc3RGaWxl
VyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIocGF0aCkuZGF0YSgpLCAmbV9kYXRhKTsKLX0K
LQotUGF0aFdhbGtlcjo6flBhdGhXYWxrZXIoKQotewotICAgIGlmICghaXNWYWxpZCgpKQotICAg
ICAgICByZXR1cm47Ci0gICAgOjpGaW5kQ2xvc2UobV9oYW5kbGUpOwotfQotCi1ib29sIFBhdGhX
YWxrZXI6OnN0ZXAoKQotewotICAgIHJldHVybiA6OkZpbmROZXh0RmlsZVcobV9oYW5kbGUsICZt
X2RhdGEpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vUGF0aFdhbGtlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL1BhdGhXYWxrZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmM1OWQ2
NzMxODExYjhjYTE1ODdhNGExMmE3ZGExZTFhMTU5M2Q4NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGF0
aFdhbGtlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgPFdpbmRvd3MuaD4KLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFBh
dGhXYWxrZXIgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBhdGhXYWxrZXIpOwotcHVibGlj
OgotICAgIFBhdGhXYWxrZXIoY29uc3QgV1RGOjpTdHJpbmcmIGRpcmVjdG9yeSwgY29uc3QgV1RG
OjpTdHJpbmcmIHBhdHRlcm4pOwotICAgIH5QYXRoV2Fsa2VyKCk7Ci0KLSAgICBib29sIGlzVmFs
aWQoKSBjb25zdCB7IHJldHVybiBtX2hhbmRsZSAhPSBJTlZBTElEX0hBTkRMRV9WQUxVRTsgfQot
ICAgIGNvbnN0IFdJTjMyX0ZJTkRfREFUQVcmIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7
IH0KLQotICAgIGJvb2wgc3RlcCgpOwotCi1wcml2YXRlOgotICAgIEhBTkRMRSBtX2hhbmRsZTsK
LSAgICBXSU4zMl9GSU5EX0RBVEFXIG1fZGF0YTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1l
bnVEQi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51REIu
Y3BwCmluZGV4IDllNmU0YzUyZDdiOTgzOGExZjA3YmRkNTlmNDA5ZDgxNjVmZTU2NjYuLmU1NzMw
YjMwY2NmM2YwM2VlZmRmZjlhMzMxYzA4ZWQwZTIyZTU4YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVEQi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudURCLmNwcApAQCAtMjUsOSArMjUsOSBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNlYXJjaFBvcHVwTWVudURCLmgiCiAK
LSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiU1FMaXRlRmlsZVN5c3RlbS5oIgog
I2luY2x1ZGUgIlNRTGl0ZVRyYW5zYWN0aW9uLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0u
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lLmNwcAppbmRleCA3NmM5YzVjNzhkNTZkM2U4ZDk3ZDQyMWY0ZGZhYTRhYjFiZDllY2Mw
Li5jNGZhMzU2NzBiOTU0NzY3NmI3YzRmYjlhODEyYjNkNmU2ZWM5OWU5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKQEAgLTI1LDcgKzI1LDYgQEAKICNpbmNsdWRl
ICJDb250cm9sU3RhdGVzLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJGaWxl
TGlzdC5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJGbG9hdENvbnZlcnNp
b24uaCIKICNpbmNsdWRlICJGbG9hdFJvdW5kZWRSZWN0LmgiCiAjaW5jbHVkZSAiRm9jdXNDb250
cm9sbGVyLmgiCkBAIC00NSw2ICs0NCw3IEBACiAjaW5jbHVkZSAiU3BpbkJ1dHRvbkVsZW1lbnQu
aCIKICNpbmNsdWRlICJTdHJpbmdUcnVuY2F0b3IuaCIKICNpbmNsdWRlICJUZXh0Q29udHJvbElu
bmVyRWxlbWVudHMuaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgogCiAjaWYgRU5BQkxFKE1FVEVSX0VMRU1FTlQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lR3RrLmNwcAppbmRleCBiNjk2ZWFjOGZiMTA1
ZTJiNzA5NjIwNjk0NzM5NzNlMTNlYjlmYjY2Li5iMjU5NjZjYjUzMzI3Njg1OWVlODE5NjcxYWQy
NWZkZjc3ZTAzZWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUd0
ay5jcHAKQEAgLTI3LDcgKzI3LDYgQEAKIAogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIK
ICNpbmNsdWRlICJGaWxlTGlzdC5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRl
ICJGbG9hdFJvdW5kZWRSZWN0LmgiCiAjaW5jbHVkZSAiRm9udERlc2NyaXB0aW9uLmgiCiAjaW5j
bHVkZSAiR1JlZlB0ckd0ay5oIgpAQCAtNTUsNiArNTQsNyBAQAogI2luY2x1ZGUgPGdkay9nZGsu
aD4KICNpbmNsdWRlIDxnbGliLmg+CiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgorI2luY2x1ZGUgPHd0
Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmNwcAppbmRleCBlZWI5OTg1
ZTYyZjVjOWEzNDgyNDNlOGRkZTllY2NjMGE5YmRiZmI1Li4yMTk2NTdlMWYyNGFhYmEwNTgyNWEy
YTYyYjA4MDRjN2ZiYjNmMzM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZVdpbi5jcHAKQEAgLTI0LDcgKzI0LDYgQEAKIAogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29y
ZHMuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2lu
Y2x1ZGUgIkZvbnRNZXRyaWNzLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFt
ZVNlbGVjdGlvbi5oIgpAQCAtMzgsNiArMzcsNyBAQAogI2luY2x1ZGUgIlN5c3RlbUluZm8uaCIK
ICNpbmNsdWRlICJVc2VyQWdlbnRTdHlsZVNoZWV0cy5oIgogI2luY2x1ZGUgIldlYkNvcmVCdW5k
bGVXaW4uaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9Tb2Z0
TGlua2luZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFz
ZS5jcHAKaW5kZXggNjBlZWI4Y2MyYzBmNDEyY2EyYmNlZDk4MmFlOTI3ZmZiMWQ2YTQ2OC4uMWFm
NDM3ODhmZmZiYWFhOTEyZTFhZDk3YmJkOThiMTcyZGUzZjBlMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25E
YXRhYmFzZS5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKIAotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5j
bHVkZSAiUmVnaXN0cmF0aW9uU3RvcmUuaCIKICNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZS5oIgpA
QCAtMzksNiArMzgsNyBAQAogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSA8
d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkQ29waWVy
Lmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVh
ZC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9TY29w
ZS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNp
c3RlbnRTdG9yYWdlLmNwcAppbmRleCBjMjEwZWNhYzhhNDc0NmU0MTQwZDQwNjQyZTBjMzcwYTBl
NWE3ZWQwLi4xMDVkZDAyODg2MDc1MDcwOTc3Y2FlODdkMmM0YTRmNDBiYmZlZmI3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9y
YWdlLmNwcApAQCAtMzMsOSArMzMsOSBAQAogI2luY2x1ZGUgIlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNZW1vcnlTdG9yZS5oIgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZU1vbml0b3IuaD4KLSNpbmNsdWRlIDxXZWJDb3Jl
L0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0tleWVkQ29kaW5nLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgog
I2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Js
b2IuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5o
CmluZGV4IDc1ZDMxYTYxYTRmNzQyZjM4N2Y5YjVlYTJkNGY2MDI5NDM2MTI4N2MuLmViNzk0NDcy
NTk1YjU2ZWRkNjIwYmUyNTc2ZWQyMTgxODA1ZDBkODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5oCkBAIC0zMyw3ICszMyw3IEBA
CiAKICNpbmNsdWRlICJOZXR3b3JrRGF0YVRhc2suaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVT
dHJlYW1DbGllbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRl
IDx3dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBc3luY0Zp
bGVTdHJlYW07CkBAIC0xMTMsNyArMTEzLDcgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX3Np
emVJdGVtQ291bnQgeyAwIH07CiAgICAgdW5zaWduZWQgbV9yZWFkSXRlbUNvdW50IHsgMCB9Owog
ICAgIGJvb2wgbV9maWxlT3BlbmVkIHsgZmFsc2UgfTsKLSAgICBXZWJDb3JlOjpGaWxlU3lzdGVt
OjpQbGF0Zm9ybUZpbGVIYW5kbGUgbV9kb3dubG9hZEZpbGUgeyBXZWJDb3JlOjpGaWxlU3lzdGVt
OjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlIH07CisgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1G
aWxlSGFuZGxlIG1fZG93bmxvYWRGaWxlIHsgRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmls
ZUhhbmRsZSB9OwogCiAgICAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZl
cmVuY2U+PiBtX2ZpbGVSZWZlcmVuY2VzOwogICAgIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiBt
X3NhbmRib3hFeHRlbnNpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwCmluZGV4IDU5ZjZhMDcwMmQwMjg4ZWI0ODFiMzk1NDMxN2JlMzQwYmJj
YTY0YmUuLjdlZjI1MzIzYzMxYWU4ZjliZTBhM2IzNzdlNmZlOWE4YmZjNTQ0MzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0xNjE5
LDcgKzE2MTksNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRDYWNoZU1vZGVsKENhY2hlTW9k
ZWwgY2FjaGVNb2RlbCkKICAgICB1bnNpZ25lZCB1cmxDYWNoZU1lbW9yeUNhcGFjaXR5ID0gMDsK
ICAgICB1aW50NjRfdCB1cmxDYWNoZURpc2tDYXBhY2l0eSA9IDA7CiAgICAgdWludDY0X3QgZGlz
a0ZyZWVTaXplID0gMDsKLSAgICBpZiAoV2ViQ29yZTo6RmlsZVN5c3RlbTo6Z2V0Vm9sdW1lRnJl
ZVNwYWNlKG1fZGlza0NhY2hlRGlyZWN0b3J5LCBkaXNrRnJlZVNpemUpKSB7CisgICAgaWYgKEZp
bGVTeXN0ZW06OmdldFZvbHVtZUZyZWVTcGFjZShtX2Rpc2tDYWNoZURpcmVjdG9yeSwgZGlza0Zy
ZWVTaXplKSkgewogICAgICAgICAvLyBBcyBhIGZ1ZGdlIGZhY3RvciwgdXNlIDEwMDAgaW5zdGVh
ZCBvZiAxMDI0LCBpbiBjYXNlIHRoZSByZXBvcnRlZCBieXRlCiAgICAgICAgIC8vIGNvdW50IGRv
ZXNuJ3QgYWxpZ24gZXhhY3RseSB0byBhIG1lZ2FieXRlIGJvdW5kYXJ5LgogICAgICAgICBkaXNr
RnJlZVNpemUgLz0gS0IgKiAxMDAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCmluZGV4IGYxN2ZkOWY5MmJl
NWQyYTUwNTQ1YzA3OTllMzdkOWFlMGNmM2VmYmQuLjFlM2UxMWIxOThjMzUyNzIwYTAzZjU3OWQy
OTk0N2Y5YmVlZmRiNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgU3Ry
aW5nIEVuZ2luZTo6Y2FjaGVzUm9vdFBhdGgoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBv
cmlnaW4pCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICBLZXkga2V5KG9yaWdpbi50b3BPcmln
aW4udG9TdHJpbmcoKSwgb3JpZ2luLmNsaWVudE9yaWdpbi50b1N0cmluZygpLCB7IH0sIHsgfSwg
c2FsdCgpKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KHJvb3RQYXRoKCksIGtleS5oYXNoQXNTdHJpbmcoKSk7CisgICAgcmV0dXJuIEZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyb290UGF0aCgpLCBrZXkuaGFzaEFz
U3RyaW5nKCkpOwogfQogCiBFbmdpbmU6On5FbmdpbmUoKQpAQCAtMjkxLDkgKzI5MSw5IEBAIHZv
aWQgRW5naW5lOjppbml0aWFsaXplKENvbXBsZXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKQogICAg
IGlmICghc2hvdWxkQ29tcHV0ZVNhbHQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0cmluZyBz
YWx0UGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCht
X3Jvb3RQYXRoLCAic2FsdCJfcyk7CisgICAgU3RyaW5nIHNhbHRQYXRoID0gRmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fcm9vdFBhdGgsICJzYWx0Il9zKTsKICAgICBtX2lv
UXVldWUtPmRpc3BhdGNoKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBzYWx0
UGF0aCA9IFdURk1vdmUoc2FsdFBhdGgpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgV2ViQ29yZTo6
RmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKG1fcm9vdFBhdGgpOworICAgICAgICBGaWxl
U3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMobV9yb290UGF0aCk7CiAgICAgICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbdGhpcywgd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgc2Fs
dCA9IHJlYWRPck1ha2VTYWx0KHNhbHRQYXRoKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlm
ICghd2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzgzLDkgKzM4Myw5IEBA
IHZvaWQgRW5naW5lOjp3cml0ZUZpbGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgTmV0d29ya0Nh
Y2hlOjpEYXRhJiYgZGF0YSwgV2ViQ29yCiAgICAgbV9wZW5kaW5nV3JpdGVDYWxsYmFja3MuYWRk
KCsrbV9wZW5kaW5nQ2FsbGJhY2tzQ291bnRlciwgV1RGTW92ZShjYWxsYmFjaykpOwogICAgIG1f
aW9RdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGlk
ZW50aWZpZXIgPSBtX3BlbmRpbmdDYWxsYmFja3NDb3VudGVyLCBkYXRhID0gV1RGTW92ZShkYXRh
KSwgZmlsZW5hbWUgPSBmaWxlbmFtZS5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKIAotICAg
ICAgICBTdHJpbmcgZGlyZWN0b3J5UGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRpcmVjdG9y
eU5hbWUoZmlsZW5hbWUpOwotICAgICAgICBpZiAoIVdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVF
eGlzdHMoZGlyZWN0b3J5UGF0aCkpCi0gICAgICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpt
YWtlQWxsRGlyZWN0b3JpZXMoZGlyZWN0b3J5UGF0aCk7CisgICAgICAgIFN0cmluZyBkaXJlY3Rv
cnlQYXRoID0gRmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShmaWxlbmFtZSk7CisgICAgICAgIGlm
ICghRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhkaXJlY3RvcnlQYXRoKSkKKyAgICAgICAgICAgIEZp
bGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhkaXJlY3RvcnlQYXRoKTsKIAogICAgICAgICBh
dXRvIGNoYW5uZWwgPSBJT0NoYW5uZWw6Om9wZW4oZmlsZW5hbWUsIElPQ2hhbm5lbDo6VHlwZTo6
Q3JlYXRlKTsKICAgICAgICAgY2hhbm5lbC0+d3JpdGUoMCwgZGF0YSwgbnVsbHB0ciwgW3RoaXMs
IHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIGlkZW50aWZpZXJdKGludCBlcnJvcikgbXV0
YWJsZSB7CkBAIC00NDUsNyArNDQ1LDcgQEAgdm9pZCBFbmdpbmU6OnJlbW92ZUZpbGUoY29uc3Qg
U3RyaW5nJiBmaWxlbmFtZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9pb1F1ZXVlLT5kaXNw
YXRjaChbZmlsZW5hbWUgPSBmaWxlbmFtZS5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKLSAg
ICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShmaWxlbmFtZSk7CisgICAgICAg
IEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZmlsZW5hbWUpOwogICAgIH0pOwogfQogCkBAIC00ODcs
OCArNDg3LDggQEAgdm9pZCBFbmdpbmU6OmZldGNoRW50cmllcyhib29sIHNob3VsZENvbXB1dGVT
aXplLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmUKICAgICB9CiAKICAgICBhdXRvIHRh
c2tDb3VudGVyID0gUmVhZE9yaWdpbnNUYXNrQ291bnRlcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKLSAgICBmb3IgKGF1dG8mIGZvbGRlclBhdGggOiBXZWJDb3JlOjpGaWxl
U3lzdGVtOjpsaXN0RGlyZWN0b3J5KG1fcm9vdFBhdGgsICIqIikpIHsKLSAgICAgICAgaWYgKCFX
ZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlSXNEaXJlY3RvcnkoZm9sZGVyUGF0aCwgV2ViQ29yZTo6
RmlsZVN5c3RlbTo6U2hvdWxkRm9sbG93U3ltYm9saWNMaW5rczo6Tm8pKQorICAgIGZvciAoYXV0
byYgZm9sZGVyUGF0aCA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobV9yb290UGF0aCwgIioi
KSkgeworICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVJc0RpcmVjdG9yeShmb2xkZXJQYXRo
LCBGaWxlU3lzdGVtOjpTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpObykpCiAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgQ2FjaGVzOjpyZXRyaWV2ZU9yaWdpbkZyb21EaXJlY3Rvcnko
Zm9sZGVyUGF0aCwgKm1faW9RdWV1ZSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
c2hvdWxkQ29tcHV0ZVNpemUsIHRhc2tDb3VudGVyID0gdGFza0NvdW50ZXIuY29weVJlZigpXSAo
YXV0byYmIG9yaWdpbikgbXV0YWJsZSB7CiAgICAgICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNN
YWluKCkpOwpAQCAtNTMxLDggKzUzMSw4IEBAIHZvaWQgRW5naW5lOjpjbGVhckFsbENhY2hlc0Zy
b21EaXNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlCiAgICAg
QVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIG1faW9RdWV1ZS0+ZGlzcGF0Y2goW3Bh
dGggPSBtX3Jvb3RQYXRoLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICBmb3IgKGF1dG8mIGZp
bGVuYW1lIDogV2ViQ29yZTo6RmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShwYXRoLCAiKiIpKSB7
Ci0gICAgICAgICAgICBpZiAoV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZUlzRGlyZWN0b3J5KGZp
bGVuYW1lLCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpO
bykpCisgICAgICAgIGZvciAoYXV0byYgZmlsZW5hbWUgOiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0
b3J5KHBhdGgsICIqIikpIHsKKyAgICAgICAgICAgIGlmIChGaWxlU3lzdGVtOjpmaWxlSXNEaXJl
Y3RvcnkoZmlsZW5hbWUsIEZpbGVTeXN0ZW06OlNob3VsZEZvbGxvd1N5bWJvbGljTGlua3M6Ok5v
KSkKICAgICAgICAgICAgICAgICBkZWxldGVEaXJlY3RvcnlSZWN1cnNpdmVseShmaWxlbmFtZSk7
CiAgICAgICAgIH0KICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKQEAgLTU2Miw4ICs1NjIsOCBAQCB2b2lkIEVuZ2luZTo6Y2xlYXJD
YWNoZXNGb3JPcmlnaW5Gcm9tRGlzayhjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
IG9yaQogCiAgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6
OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAKLSAgICBmb3IgKGF1dG8mIGZv
bGRlclBhdGggOiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KG1fcm9vdFBhdGgs
ICIqIikpIHsKLSAgICAgICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlSXNEaXJlY3Rv
cnkoZm9sZGVyUGF0aCwgV2ViQ29yZTo6RmlsZVN5c3RlbTo6U2hvdWxkRm9sbG93U3ltYm9saWNM
aW5rczo6Tm8pKQorICAgIGZvciAoYXV0byYgZm9sZGVyUGF0aCA6IEZpbGVTeXN0ZW06Omxpc3RE
aXJlY3RvcnkobV9yb290UGF0aCwgIioiKSkgeworICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmZp
bGVJc0RpcmVjdG9yeShmb2xkZXJQYXRoLCBGaWxlU3lzdGVtOjpTaG91bGRGb2xsb3dTeW1ib2xp
Y0xpbmtzOjpObykpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgQ2FjaGVzOjpyZXRy
aWV2ZU9yaWdpbkZyb21EaXJlY3RvcnkoZm9sZGVyUGF0aCwgKm1faW9RdWV1ZSwgW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgb3JpZ2luLCBjYWxsYmFja0FnZ3JlZ2F0b3Ig
PSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpLCBmb2xkZXJQYXRoXSAoT3B0aW9uYWw8V2Vi
Q29yZTo6Q2xpZW50T3JpZ2luPiYmIGZvbGRlck9yaWdpbikgbXV0YWJsZSB7CiAgICAgICAgICAg
ICBpZiAoIWZvbGRlck9yaWdpbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcAppbmRleCAx
OTEzNDcwY2RkMjIwY2UzYmU5NzVkZjk5MDBlZjM1MGQwNzE3NjNjLi4xZjYwOGNmNTI1Zjk5NmIy
NGVhNDExMzYwMGU4ZTI5Y2IyODdjMjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3Bw
CkBAIC00MiwxMiArNDIsMTIgQEAgdXNpbmcgbmFtZXNwYWNlIE5ldHdvcmtDYWNoZTsKIAogc3Rh
dGljIGlubGluZSBTdHJpbmcgY2FjaGVzTGlzdEZpbGVuYW1lKGNvbnN0IFN0cmluZyYgY2FjaGVz
Um9vdFBhdGgpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChjYWNoZXNSb290UGF0aCwgImNhY2hlc2xpc3QiX3MpOworICAgIHJldHVy
biBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY2FjaGVzUm9vdFBhdGgsICJj
YWNoZXNsaXN0Il9zKTsKIH0KIAogc3RhdGljIGlubGluZSBTdHJpbmcgY2FjaGVzT3JpZ2luRmls
ZW5hbWUoY29uc3QgU3RyaW5nJiBjYWNoZXNSb290UGF0aCkKIHsKLSAgICByZXR1cm4gV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNhY2hlc1Jvb3RQYXRoLCAi
b3JpZ2luIl9zKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KGNhY2hlc1Jvb3RQYXRoLCAib3JpZ2luIl9zKTsKIH0KIAogQ2FjaGVzOjp+Q2FjaGVzKCkK
QEAgLTU4LDcgKzU4LDcgQEAgQ2FjaGVzOjp+Q2FjaGVzKCkKIHZvaWQgQ2FjaGVzOjpyZXRyaWV2
ZU9yaWdpbkZyb21EaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBmb2xkZXJQYXRoLCBXb3JrUXVldWUm
IHF1ZXVlLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6Q2xp
ZW50T3JpZ2luPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBxdWV1ZS5kaXNwYXRj
aChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgZmlsZW5h
bWUgPSBjYWNoZXNPcmlnaW5GaWxlbmFtZShmb2xkZXJQYXRoKV0oKSBtdXRhYmxlIHsKLSAgICAg
ICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGZpbGVuYW1lKSkgeworICAg
ICAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZmlsZW5hbWUpKSB7CiAgICAgICAgICAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoV1RGOjpudWxsb3B0KTsKICAgICAgICAgICAgIH0pOwpAQCAtNDA4LDcgKzQwOCw3
IEBAIHZvaWQgQ2FjaGVzOjpyZWFkQ2FjaGVzRnJvbURpc2soV1RGOjpGdW5jdGlvbjx2b2lkKEV4
cGVjdGVkPFZlY3RvcjxDYWNoZT4sIEVycm9yCiAgICAgfQogCiAgICAgYXV0byBmaWxlbmFtZSA9
IGNhY2hlc0xpc3RGaWxlbmFtZShtX3Jvb3RQYXRoKTsKLSAgICBpZiAoIVdlYkNvcmU6OkZpbGVT
eXN0ZW06OmZpbGVFeGlzdHMoZmlsZW5hbWUpKSB7CisgICAgaWYgKCFGaWxlU3lzdGVtOjpmaWxl
RXhpc3RzKGZpbGVuYW1lKSkgewogICAgICAgICBjYWxsYmFjayhWZWN0b3I8Q2FjaGU+IHsgfSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKaW5kZXggZmQyN2NmMDZmZTQzMWZkMzg0Y2Ey
ZjNiN2U0OTFmNmZhYzFkZTA4Ni4uZjY1MTFkODk5YzQyODEyMmM0MjI2ZDhjMmY5MTA4MjMwNTRi
YWVkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlLmNwcApAQCAtMzIsMTMgKzMyLDEzIEBACiAjaW5jbHVkZSAiTmV0d29ya0NhY2hl
U3RvcmFnZS5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9DYWNoZVZhbGlkYXRpb24uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0hUVFBIZWFkZXJOYW1lcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTG93
UG93ZXJNb2RlTm90aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZm
ZXIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhy
ZWFkLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1J1
bkxvb3AuaD4KQEAgLTUxLDcgKzUxLDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogbmFtZXNwYWNl
IE5ldHdvcmtDYWNoZSB7CiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOjpGaWxlU3lzdGVtOwor
dXNpbmcgbmFtZXNwYWNlIFdURjo6RmlsZVN5c3RlbTsKIAogc3RhdGljIGNvbnN0IEF0b21pY1N0
cmluZyYgcmVzb3VyY2VUeXBlKCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQmxvYlN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVCbG9iU3RvcmFnZS5jcHAKaW5kZXgg
ZjczYzUwZGExOTQ3OTMzNjVkNmY1MWUwNjE0MWI1MjM3MjdlNzFlZS4uOTUzOGRhNjQxYjQyNzQw
MDJiMjc5YWRhYTg3YzE1NDJkMzZhMDI3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVCbG9iU3RvcmFnZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVCbG9iU3RvcmFnZS5jcHAK
QEAgLTI4LDggKzI4LDggQEAKIAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXR3
b3JrQ2FjaGVGaWxlU3lzdGVtLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAj
aW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUg
PHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3RmL1NIQTEuaD4KIApAQCAtNTcsMTUgKzU3LDE1
IEBAIHZvaWQgQmxvYlN0b3JhZ2U6OnN5bmNocm9uaXplKCkKIHsKICAgICBBU1NFUlQoIVJ1bkxv
b3A6OmlzTWFpbigpKTsKIAotICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3Rv
cmllcyhibG9iRGlyZWN0b3J5UGF0aCgpKTsKKyAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0
b3JpZXMoYmxvYkRpcmVjdG9yeVBhdGgoKSk7CiAKICAgICBtX2FwcHJveGltYXRlU2l6ZSA9IDA7
CiAgICAgYXV0byBibG9iRGlyZWN0b3J5ID0gYmxvYkRpcmVjdG9yeVBhdGgoKTsKICAgICB0cmF2
ZXJzZURpcmVjdG9yeShibG9iRGlyZWN0b3J5LCBbdGhpcywgJmJsb2JEaXJlY3RvcnldKGNvbnN0
IFN0cmluZyYgbmFtZSwgRGlyZWN0b3J5RW50cnlUeXBlIHR5cGUpIHsKICAgICAgICAgaWYgKHR5
cGUgIT0gRGlyZWN0b3J5RW50cnlUeXBlOjpGaWxlKQogICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICBhdXRvIHBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQoYmxvYkRpcmVjdG9yeSwgbmFtZSk7Ci0gICAgICAgIGF1dG8gZmlsZVBhdGggPSBXZWJD
b3JlOjpGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisgICAgICAg
IGF1dG8gcGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChibG9iRGly
ZWN0b3J5LCBuYW1lKTsKKyAgICAgICAgYXV0byBmaWxlUGF0aCA9IEZpbGVTeXN0ZW06OmZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKICAgICAgICAgc3RydWN0IHN0YXQgc3RhdDsKICAg
ICAgICAgOjpzdGF0KGZpbGVQYXRoLmRhdGEoKSwgJnN0YXQpOwogICAgICAgICAvLyBObyBjbGll
bnRzIGxlZnQgZm9yIHRoaXMgYmxvYi4KQEAgLTgxLDcgKzgxLDcgQEAgdm9pZCBCbG9iU3RvcmFn
ZTo6c3luY2hyb25pemUoKQogU3RyaW5nIEJsb2JTdG9yYWdlOjpibG9iUGF0aEZvckhhc2goY29u
c3QgU0hBMTo6RGlnZXN0JiBoYXNoKSBjb25zdAogewogICAgIGF1dG8gaGFzaEFzU3RyaW5nID0g
U0hBMTo6aGV4RGlnZXN0KGhhc2gpOwotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQoYmxvYkRpcmVjdG9yeVBhdGgoKSwgU3RyaW5nOjpmcm9t
VVRGOChoYXNoQXNTdHJpbmcpKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KGJsb2JEaXJlY3RvcnlQYXRoKCksIFN0cmluZzo6ZnJvbVVURjgoaGFzaEFz
U3RyaW5nKSk7CiB9CiAKIEJsb2JTdG9yYWdlOjpCbG9iIEJsb2JTdG9yYWdlOjphZGQoY29uc3Qg
U3RyaW5nJiBwYXRoLCBjb25zdCBEYXRhJiBkYXRhKQpAQCAtOTMsOCArOTMsOCBAQCBCbG9iU3Rv
cmFnZTo6QmxvYiBCbG9iU3RvcmFnZTo6YWRkKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgRGF0
YSYgZGF0YSkKICAgICBpZiAoZGF0YS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB7IGRhdGEs
IGhhc2ggfTsKIAotICAgIGF1dG8gYmxvYlBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oYmxvYlBhdGhGb3JIYXNoKGhhc2gpKTsKLSAgICBhdXRvIGxp
bmtQYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBh
dGgpOworICAgIGF1dG8gYmxvYlBhdGggPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oYmxvYlBhdGhGb3JIYXNoKGhhc2gpKTsKKyAgICBhdXRvIGxpbmtQYXRoID0gRmlsZVN5
c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwogICAgIHVubGluayhsaW5rUGF0
aC5kYXRhKCkpOwogCiAgICAgYm9vbCBibG9iRXhpc3RzID0gYWNjZXNzKGJsb2JQYXRoLmRhdGEo
KSwgRl9PSykgIT0gLTE7CkBAIC0xMjcsNyArMTI3LDcgQEAgQmxvYlN0b3JhZ2U6OkJsb2IgQmxv
YlN0b3JhZ2U6OmdldChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29w
Ojppc01haW4oKSk7CiAKLSAgICBhdXRvIGxpbmtQYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGF1dG8gbGlua1BhdGggPSBGaWxl
U3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAgICAgYXV0byBkYXRhID0g
bWFwRmlsZShsaW5rUGF0aC5kYXRhKCkpOwogCiAgICAgcmV0dXJuIHsgZGF0YSwgY29tcHV0ZVNI
QTEoZGF0YSwgbV9zYWx0KSB9OwpAQCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQgQmxvYlN0b3JhZ2U6
OnJlbW92ZShjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01h
aW4oKSk7CiAKLSAgICBhdXRvIGxpbmtQYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGF1dG8gbGlua1BhdGggPSBGaWxlU3lzdGVt
OjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAgICAgdW5saW5rKGxpbmtQYXRoLmRh
dGEoKSk7CiB9CiAKQEAgLTE0NSw3ICsxNDUsNyBAQCB1bnNpZ25lZCBCbG9iU3RvcmFnZTo6c2hh
cmVDb3VudChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01h
aW4oKSk7CiAKLSAgICBhdXRvIGxpbmtQYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGF1dG8gbGlua1BhdGggPSBGaWxlU3lzdGVt
OjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAgICAgc3RydWN0IHN0YXQgc3RhdDsK
ICAgICBpZiAoOjpzdGF0KGxpbmtQYXRoLmRhdGEoKSwgJnN0YXQpIDwgMCkKICAgICAgICAgcmV0
dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZURhdGEuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVEYXRhLmNwcAppbmRleCA5ZTMxODk0M2Q3YzYxMzhjYWExYzFkYzMwZjNhMmYz
NWYzMzAyOWYyLi4xYTMyYWE5YTBlNTNiNDY5NTdhYThlYjNiYjIzODU2ZjBhODk5ZjMxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURh
dGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlRGF0YS5jcHAKQEAgLTI2LDkgKzI2LDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJOZXR3b3JrQ2FjaGVEYXRhLmgiCiAKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0u
aD4KICNpbmNsdWRlIDxmY250bC5oPgogI2luY2x1ZGUgPHd0Zi9DcnlwdG9ncmFwaGljYWxseVJh
bmRvbU51bWJlci5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKICNpZiAhT1MoV0lO
RE9XUykKICNpbmNsdWRlIDxzeXMvbW1hbi5oPgpAQCAtMTU2LDcgKzE1Niw3IEBAIHN0YXRpYyBT
YWx0IG1ha2VTYWx0KCkKIE9wdGlvbmFsPFNhbHQ+IHJlYWRPck1ha2VTYWx0KGNvbnN0IFN0cmlu
ZyYgcGF0aCkKIHsKICNpZiAhT1MoV0lORE9XUykKLSAgICBhdXRvIGNwYXRoID0gV2ViQ29yZTo6
RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGF1dG8gY3Bh
dGggPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAgICAgYXV0
byBmZCA9IG9wZW4oY3BhdGguZGF0YSgpLCBPX1JET05MWSwgMCk7CiAgICAgU2FsdCBzYWx0Owog
ICAgIGF1dG8gYnl0ZXNSZWFkID0gcmVhZChmZCwgc2FsdC5kYXRhKCksIHNhbHQuc2l6ZSgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlRmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZUZpbGVTeXN0ZW0uY3BwCmluZGV4IDI1YmVmN2Y5MmU4ZWIzNjZhOTRmNGJjZDM3
OTgzYjE2YTlkZTM1MDguLmIwYjJlNzE1ZTY1ZGQzYTkxM2NmNzBkNzAzNjVhNDUwYmJlYjk5NjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlRmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmNwcApAQCAtMjcsOCArMjcsOCBAQAogI2luY2x1ZGUg
Ik5ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uaCIKIAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNs
dWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgor
I2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCkBAIC03MCw3ICs3MCw3IEBAIHN0YXRpYyBE
aXJlY3RvcnlFbnRyeVR5cGUgZGlyZWN0b3J5RW50cnlUeXBlKHVpbnQ4X3QgZHR5cGUpCiB2b2lk
IHRyYXZlcnNlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgRnVuY3Rpb248dm9p
ZCAoY29uc3QgU3RyaW5nJiwgRGlyZWN0b3J5RW50cnlUeXBlKT4mIGZ1bmN0aW9uKQogewogI2lm
ICFPUyhXSU5ET1dTKQotICAgIERJUiogZGlyID0gb3BlbmRpcihXZWJDb3JlOjpGaWxlU3lzdGVt
OjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpKTsKKyAgICBESVIqIGRpciA9
IG9wZW5kaXIoRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEo
KSk7CiAgICAgaWYgKCFkaXIpCiAgICAgICAgIHJldHVybjsKICAgICBkaXJlbnQqIGRwOwpAQCAt
OTQsMTAgKzk0LDEwIEBAIHZvaWQgdHJhdmVyc2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRo
LCBjb25zdCBGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBECiB2b2lkIGRlbGV0ZURpcmVj
dG9yeVJlY3Vyc2l2ZWx5KGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICB0cmF2ZXJzZURpcmVj
dG9yeShwYXRoLCBbJnBhdGhdKGNvbnN0IFN0cmluZyYgbmFtZSwgRGlyZWN0b3J5RW50cnlUeXBl
IHR5cGUpIHsKLSAgICAgICAgU3RyaW5nIGVudHJ5UGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXRoLCBuYW1lKTsKKyAgICAgICAgU3RyaW5nIGVu
dHJ5UGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXRoLCBuYW1l
KTsKICAgICAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgICAgIGNhc2UgRGlyZWN0b3J5RW50cnlU
eXBlOjpGaWxlOgotICAgICAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShl
bnRyeVBhdGgpOworICAgICAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShlbnRyeVBhdGgp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgRGlyZWN0b3J5RW50cnlUeXBlOjpE
aXJlY3Rvcnk6CiAgICAgICAgICAgICBkZWxldGVEaXJlY3RvcnlSZWN1cnNpdmVseShlbnRyeVBh
dGgpOwpAQCAtMTA1LDE5ICsxMDUsMTkgQEAgdm9pZCBkZWxldGVEaXJlY3RvcnlSZWN1cnNpdmVs
eShjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgICAgIC8vIFRoaXMgZG9lc24ndCBmb2xsb3cgc3lt
bGlua3MuCiAgICAgICAgIH0KICAgICB9KTsKLSAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxl
dGVFbXB0eURpcmVjdG9yeShwYXRoKTsKKyAgICBGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVj
dG9yeShwYXRoKTsKIH0KIAogRmlsZVRpbWVzIGZpbGVUaW1lcyhjb25zdCBTdHJpbmcmIHBhdGgp
CiB7CiAjaWYgSEFWRShTVEFUX0JJUlRIVElNRSkKICAgICBzdHJ1Y3Qgc3RhdCBmaWxlSW5mbzsK
LSAgICBpZiAoc3RhdChXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24ocGF0aCkuZGF0YSgpLCAmZmlsZUluZm8pKQorICAgIGlmIChzdGF0KEZpbGVTeXN0ZW06OmZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCksICZmaWxlSW5mbykpCiAgICAgICAg
IHJldHVybiB7IH07CiAgICAgcmV0dXJuIHsgV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKGZpbGVJ
bmZvLnN0X2JpcnRodGltZSksIFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhmaWxlSW5mby5zdF9t
dGltZSkgfTsKICNlbGlmIFVTRShTT1VQKQogICAgIC8vIFRoZXJlJ3Mgbm8gc3RfYmlydGh0aW1l
IGluIHNvbWUgb3BlcmF0aW5nIHN5c3RlbXMgbGlrZSBMaW51eCwgc28gd2UgdXNlIHhhdHRycyB0
byBzZXQvZ2V0IHRoZSBjcmVhdGlvbiB0aW1lLgotICAgIEdSZWZQdHI8R0ZpbGU+IGZpbGUgPSBh
ZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0aChXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpKSk7CisgICAgR1JlZlB0cjxHRmlsZT4gZmls
ZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCkpKTsKICAgICBHUmVmUHRyPEdGaWxlSW5mbz4gZmls
ZUluZm8gPSBhZG9wdEdSZWYoZ19maWxlX3F1ZXJ5X2luZm8oZmlsZS5nZXQoKSwgInhhdHRyOjpi
aXJ0aHRpbWUsdGltZTo6bW9kaWZpZWQiLCBHX0ZJTEVfUVVFUllfSU5GT19OT05FLCBudWxscHRy
LCBudWxscHRyKSk7CiAgICAgaWYgKCFmaWxlSW5mbykKICAgICAgICAgcmV0dXJuIHsgfTsKQEAg
LTE0MSw3ICsxNDEsNyBAQCB2b2lkIHVwZGF0ZUZpbGVNb2RpZmljYXRpb25UaW1lSWZOZWVkZWQo
Y29uc3QgU3RyaW5nJiBwYXRoKQogICAgIH0KICNpZiAhT1MoV0lORE9XUykKICAgICAvLyBUaGlz
IHJlYWxseSB1cGRhdGVzIGJvdGggdGhlIGFjY2VzcyB0aW1lIGFuZCB0aGUgbW9kaWZpY2F0aW9u
IHRpbWUuCi0gICAgdXRpbWVzKFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihwYXRoKS5kYXRhKCksIG51bGxwdHIpOworICAgIHV0aW1lcyhGaWxlU3lzdGVtOjpm
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpLCBudWxscHRyKTsKICNlbmRpZgog
fQogCkBAIC0xNTYsNyArMTU2LDcgQEAgYm9vbCBpc1NhZmVUb1VzZU1lbW9yeU1hcEZvclBhdGgo
Y29uc3QgU3RyaW5nJiBwYXRoKQogICAgIGF0dHJsaXN0IGF0dHJMaXN0ID0geyB9OwogICAgIGF0
dHJMaXN0LmJpdG1hcGNvdW50ID0gQVRUUl9CSVRfTUFQX0NPVU5UOwogICAgIGF0dHJMaXN0LmNv
bW1vbmF0dHIgPSBBVFRSX0NNTl9EQVRBX1BST1RFQ1RfRkxBR1M7Ci0gICAgaW50MzJfdCBlcnJv
ciA9IGdldGF0dHJsaXN0KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihwYXRoKS5kYXRhKCksICZhdHRyTGlzdCwgJmF0dHJCdWZmZXIsIHNpemVvZihhdHRyQnVm
ZmVyKSwgRlNPUFRfTk9GT0xMT1cpOworICAgIGludDMyX3QgZXJyb3IgPSBnZXRhdHRybGlzdChG
aWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpLCAmYXR0ckxp
c3QsICZhdHRyQnVmZmVyLCBzaXplb2YoYXR0ckJ1ZmZlciksIEZTT1BUX05PRk9MTE9XKTsKICAg
ICBpZiAoZXJyb3IpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIlVuYWJs
ZSB0byBnZXQgY2FjaGUgZGlyZWN0b3J5IHByb3RlY3Rpb24gY2xhc3MsIGRpc2FibGluZyB1c2Ug
b2Ygc2hhcmVkIG1hcHBlZCBtZW1vcnkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxl
U3lzdGVtLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZUZpbGVTeXN0ZW0uaAppbmRleCA3ZGNjZTZjNGMzNjcyOGU5MzE1ODMzYTUzMjliZDU2ZDVjNDEy
YjhhLi4xODMxYTM1MWM5YjBmZjUwNWRmOWFkYzdmN2MwM2FmNzAxZDZjODgzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0
ZW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZUZpbGVTeXN0ZW0uaApAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1
ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogbmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5l
bENvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVJT0NoYW5uZWxDb2NvYS5tbQppbmRleCAzNjliY2Y5NzNmMmRjZWUwYTNkNDM5NjM0NTM3MGI2
NDYyMWU5ZjA4Li5jNjUyMTY0Y2ExODhhMDdkYTU3YmNkZTc1ZjNhMjI1MmUxODJmMDgxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlP
Q2hhbm5lbENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlSU9DaGFubmVsQ29jb2EubW0KQEAgLTQxLDcgKzQxLDcgQEAgSU9DaGFubmVs
OjpJT0NoYW5uZWwoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgVHlwZSB0eXBlKQogICAgIDogbV9w
YXRoKGZpbGVQYXRoKQogICAgICwgbV90eXBlKHR5cGUpCiB7Ci0gICAgYXV0byBwYXRoID0gV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVQYXRoKTsKKyAg
ICBhdXRvIHBhdGggPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZVBh
dGgpOwogICAgIGludCBvZmxhZzsKICAgICBtb2RlX3QgbW9kZTsKICAgICBib29sIHVzZUxvd0lP
UHJpb3JpdHkgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbFNvdXAuY3BwCmluZGV4IDUz
OTJjNzkwNTY5ZmQ2NjU3YTIxYTI2MjBjYjA1MWVmYmVlZjA0NTkuLmI1NmY5NjU1MzEyY2RhZDBj
MTA4ZGNjYzZlZjE3Mjk5NWFlZDFhNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsU291cC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxTb3VwLmNw
cApAQCAtNDEsNyArNDEsNyBAQCBJT0NoYW5uZWw6OklPQ2hhbm5lbChjb25zdCBTdHJpbmcmIGZp
bGVQYXRoLCBUeXBlIHR5cGUpCiAgICAgOiBtX3BhdGgoZmlsZVBhdGgpCiAgICAgLCBtX3R5cGUo
dHlwZSkKIHsKLSAgICBhdXRvIHBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oZmlsZVBhdGgpOworICAgIGF1dG8gcGF0aCA9IEZpbGVTeXN0ZW06OmZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWxlUGF0aCk7CiAgICAgR1JlZlB0cjxHRmlsZT4gZmls
ZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKHBhdGguZGF0YSgpKSk7CiAgICAgc3dp
dGNoIChtX3R5cGUpIHsKICAgICBjYXNlIFR5cGU6OkNyZWF0ZTogewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RhdGlz
dGljcy5jcHAKaW5kZXggYjRhMTMxNGViNGIxNWVlMDMzMmY3NGU5MjFlMmZjODcxOTA2NGMzNy4u
NjFiZWYxZTExYzNjZjgzNzVmNzM5MjViNzIzYjkxNmZiMzFlYjM3ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0
YXRpc3RpY3MuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTdGF0aXN0aWNz
PiBTdGF0aXN0aWNzOjpvcGVuKENhY2hlJiBjYWNoZSwgY29uc3QgU3RyaW5nJiBjYWNoZVBhCiB7
CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIFN0cmluZyBkYXRhYmFzZVBh
dGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY2FjaGVQ
YXRoLCBTdGF0aXN0aWNzRGF0YWJhc2VOYW1lKTsKKyAgICBTdHJpbmcgZGF0YWJhc2VQYXRoID0g
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNhY2hlUGF0aCwgU3RhdGlzdGlj
c0RhdGFiYXNlTmFtZSk7CiAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U3RhdGlzdGljcz4o
Y2FjaGUsIGRhdGFiYXNlUGF0aCk7CiB9CiAKQEAgLTk4LDcgKzk4LDcgQEAgdm9pZCBTdGF0aXN0
aWNzOjppbml0aWFsaXplKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VQYXRoKQogICAgIHNlcmlhbEJh
Y2tncm91bmRJT1F1ZXVlKCkuZGlzcGF0Y2goW3RoaXMsIGRhdGFiYXNlUGF0aCA9IGRhdGFiYXNl
UGF0aC5pc29sYXRlZENvcHkoKSwgbmV0d29ya0NhY2hlUGF0aCA9IG1fY2FjaGUucmVjb3Jkc1Bh
dGgoKSwgc3RhcnRUaW1lXSB7CiAgICAgICAgIFdlYkNvcmU6OlNRTGl0ZVRyYW5zYWN0aW9uSW5Q
cm9ncmVzc0F1dG9Db3VudGVyIHRyYW5zYWN0aW9uQ291bnRlcjsKIAotICAgICAgICBpZiAoIVdl
YkNvcmU6OkZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhXZWJDb3JlOjpGaWxlU3lzdGVt
OjpkaXJlY3RvcnlOYW1lKGRhdGFiYXNlUGF0aCkpKQorICAgICAgICBpZiAoIUZpbGVTeXN0ZW06
Om1ha2VBbGxEaXJlY3RvcmllcyhGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKGRhdGFiYXNlUGF0
aCkpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIExPRyhOZXR3b3JrQ2FjaGUsICIo
TmV0d29ya1Byb2Nlc3MpIE9wZW5pbmcgbmV0d29yayBjYWNoZSBzdGF0aXN0aWNzIGRhdGFiYXNl
IGF0ICVzLi4uIiwgZGF0YWJhc2VQYXRoLnV0ZjgoKS5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5j
cHAKaW5kZXggNGVhNzQzMGZhMjA0NGU5MDE0YTg5OTA0ZDViYmMxZWI2NWI3OWNjNi4uYzI2YWEx
Yjk2YzcxM2E4MDAzN2ZkMWM1Nzg2NWRiOTcyYjY0YWVlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3Bw
CkBAIC0xNDUsMjkgKzE0NSwyOSBAQCBwdWJsaWM6CiBzdGF0aWMgU3RyaW5nIG1ha2VWZXJzaW9u
ZWREaXJlY3RvcnlQYXRoKGNvbnN0IFN0cmluZyYgYmFzZURpcmVjdG9yeVBhdGgpCiB7CiAgICAg
U3RyaW5nIHZlcnNpb25TdWJkaXJlY3RvcnkgPSB2ZXJzaW9uRGlyZWN0b3J5UHJlZml4ICsgU3Ry
aW5nOjpudW1iZXIoU3RvcmFnZTo6dmVyc2lvbik7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChiYXNlRGlyZWN0b3J5UGF0aCwgdmVyc2lv
blN1YmRpcmVjdG9yeSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChiYXNlRGlyZWN0b3J5UGF0aCwgdmVyc2lvblN1YmRpcmVjdG9yeSk7CiB9CiAKIHN0
YXRpYyBTdHJpbmcgbWFrZVJlY29yZHNEaXJlY3RvcnlQYXRoKGNvbnN0IFN0cmluZyYgYmFzZURp
cmVjdG9yeVBhdGgpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChtYWtlVmVyc2lvbmVkRGlyZWN0b3J5UGF0aChiYXNlRGlyZWN0b3J5
UGF0aCksIHJlY29yZHNEaXJlY3RvcnlOYW1lKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1ha2VWZXJzaW9uZWREaXJlY3RvcnlQYXRoKGJhc2VEaXJl
Y3RvcnlQYXRoKSwgcmVjb3Jkc0RpcmVjdG9yeU5hbWUpOwogfQogCiBzdGF0aWMgU3RyaW5nIG1h
a2VCbG9iRGlyZWN0b3J5UGF0aChjb25zdCBTdHJpbmcmIGJhc2VEaXJlY3RvcnlQYXRoKQogewot
ICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
bWFrZVZlcnNpb25lZERpcmVjdG9yeVBhdGgoYmFzZURpcmVjdG9yeVBhdGgpLCBibG9ic0RpcmVj
dG9yeU5hbWUpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQobWFrZVZlcnNpb25lZERpcmVjdG9yeVBhdGgoYmFzZURpcmVjdG9yeVBhdGgpLCBibG9ic0Rp
cmVjdG9yeU5hbWUpOwogfQogCiBzdGF0aWMgU3RyaW5nIG1ha2VTYWx0RmlsZVBhdGgoY29uc3Qg
U3RyaW5nJiBiYXNlRGlyZWN0b3J5UGF0aCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1ha2VWZXJzaW9uZWREaXJlY3RvcnlQYXRo
KGJhc2VEaXJlY3RvcnlQYXRoKSwgc2FsdEZpbGVOYW1lKTsKKyAgICByZXR1cm4gRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1ha2VWZXJzaW9uZWREaXJlY3RvcnlQYXRoKGJh
c2VEaXJlY3RvcnlQYXRoKSwgc2FsdEZpbGVOYW1lKTsKIH0KIAogUmVmUHRyPFN0b3JhZ2U+IFN0
b3JhZ2U6Om9wZW4oY29uc3QgU3RyaW5nJiBjYWNoZVBhdGgsIE1vZGUgbW9kZSkKIHsKICAgICBB
U1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVt
OjptYWtlQWxsRGlyZWN0b3JpZXMobWFrZVZlcnNpb25lZERpcmVjdG9yeVBhdGgoY2FjaGVQYXRo
KSkpCisgICAgaWYgKCFGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMobWFrZVZlcnNpb25l
ZERpcmVjdG9yeVBhdGgoY2FjaGVQYXRoKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IGF1dG8gc2FsdCA9IHJlYWRPck1ha2VTYWx0KG1ha2VTYWx0RmlsZVBhdGgoY2FjaGVQYXRoKSk7
CiAgICAgaWYgKCFzYWx0KQpAQCAtMTgwLDEzICsxODAsMTMgQEAgdm9pZCB0cmF2ZXJzZVJlY29y
ZHNGaWxlcyhjb25zdCBTdHJpbmcmIHJlY29yZHNQYXRoLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVk
VHlwZSwKICAgICB0cmF2ZXJzZURpcmVjdG9yeShyZWNvcmRzUGF0aCwgWyZdKGNvbnN0IFN0cmlu
ZyYgcGFydGl0aW9uTmFtZSwgRGlyZWN0b3J5RW50cnlUeXBlIGVudHJ5VHlwZSkgewogICAgICAg
ICBpZiAoZW50cnlUeXBlICE9IERpcmVjdG9yeUVudHJ5VHlwZTo6RGlyZWN0b3J5KQogICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICBTdHJpbmcgcGFydGl0aW9uUGF0aCA9IFdlYkNvcmU6OkZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmRzUGF0aCwgcGFydGl0aW9u
TmFtZSk7CisgICAgICAgIFN0cmluZyBwYXJ0aXRpb25QYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZHNQYXRoLCBwYXJ0aXRpb25OYW1lKTsKICAgICAgICAg
dHJhdmVyc2VEaXJlY3RvcnkocGFydGl0aW9uUGF0aCwgWyZdKGNvbnN0IFN0cmluZyYgYWN0dWFs
VHlwZSwgRGlyZWN0b3J5RW50cnlUeXBlIGVudHJ5VHlwZSkgewogICAgICAgICAgICAgaWYgKGVu
dHJ5VHlwZSAhPSBEaXJlY3RvcnlFbnRyeVR5cGU6OkRpcmVjdG9yeSkKICAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICBpZiAoIWV4cGVjdGVkVHlwZS5pc0VtcHR5KCkgJiYgZXhw
ZWN0ZWRUeXBlICE9IGFjdHVhbFR5cGUpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgU3RyaW5nIHJlY29yZERpcmVjdG9yeVBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGFydGl0aW9uUGF0aCwgYWN0dWFsVHlwZSk7CisgICAg
ICAgICAgICBTdHJpbmcgcmVjb3JkRGlyZWN0b3J5UGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChwYXJ0aXRpb25QYXRoLCBhY3R1YWxUeXBlKTsKICAgICAgICAgICAg
IHRyYXZlcnNlRGlyZWN0b3J5KHJlY29yZERpcmVjdG9yeVBhdGgsIFsmZnVuY3Rpb24sICZyZWNv
cmREaXJlY3RvcnlQYXRoLCAmYWN0dWFsVHlwZV0oY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgRGly
ZWN0b3J5RW50cnlUeXBlIGVudHJ5VHlwZSkgewogICAgICAgICAgICAgICAgIGlmIChlbnRyeVR5
cGUgIT0gRGlyZWN0b3J5RW50cnlUeXBlOjpGaWxlIHx8IGZpbGVOYW1lLmxlbmd0aCgpIDwgS2V5
OjpoYXNoU3RyaW5nTGVuZ3RoKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTIw
NiwxOCArMjA2LDE4IEBAIHN0YXRpYyB2b2lkIGRlbGV0ZUVtcHR5UmVjb3Jkc0RpcmVjdG9yaWVz
KGNvbnN0IFN0cmluZyYgcmVjb3Jkc1BhdGgpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAg
ICAgLy8gRGVsZXRlIFt0eXBlXSBzdWItZm9sZGVycy4KLSAgICAgICAgU3RyaW5nIHBhcnRpdGlv
blBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVj
b3Jkc1BhdGgsIHBhcnRpdGlvbk5hbWUpOworICAgICAgICBTdHJpbmcgcGFydGl0aW9uUGF0aCA9
IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmRzUGF0aCwgcGFydGl0
aW9uTmFtZSk7CiAgICAgICAgIHRyYXZlcnNlRGlyZWN0b3J5KHBhcnRpdGlvblBhdGgsIFsmcGFy
dGl0aW9uUGF0aF0oY29uc3QgU3RyaW5nJiBzdWJkaXJOYW1lLCBEaXJlY3RvcnlFbnRyeVR5cGUg
ZW50cnlUeXBlKSB7CiAgICAgICAgICAgICBpZiAoZW50cnlUeXBlICE9IERpcmVjdG9yeUVudHJ5
VHlwZTo6RGlyZWN0b3J5KQogICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAg
Ly8gTGV0IHN5c3RlbSBmaWd1cmUgb3V0IGlmIGl0IGlzIHJlYWxseSBlbXB0eS4KLSAgICAgICAg
ICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KFdlYkNvcmU6OkZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXJ0aXRpb25QYXRoLCBzdWJkaXJO
YW1lKSk7CisgICAgICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGFydGl0aW9uUGF0aCwgc3ViZGlyTmFt
ZSkpOwogICAgICAgICB9KTsKIAogICAgICAgICAvLyBEZWxldGUgW1BhcnRpdGlvbl0gZm9sZGVy
cy4KICAgICAgICAgLy8gTGV0IHN5c3RlbSBmaWd1cmUgb3V0IGlmIGl0IGlzIHJlYWxseSBlbXB0
eS4KLSAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkoV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZHNQYXRoLCBw
YXJ0aXRpb25OYW1lKSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5
KEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmRzUGF0aCwgcGFydGl0
aW9uTmFtZSkpOwogICAgIH0pOwogfQogCkBAIC0zMDAsMTEgKzMwMCwxMSBAQCB2b2lkIFN0b3Jh
Z2U6OnN5bmNocm9uaXplKCkKIAogICAgICAgICBTdHJpbmcgYW55VHlwZTsKICAgICAgICAgdHJh
dmVyc2VSZWNvcmRzRmlsZXMocmVjb3Jkc1BhdGgoKSwgYW55VHlwZSwgWyZdKGNvbnN0IFN0cmlu
ZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgaGFzaFN0cmluZywgY29uc3QgU3RyaW5nJiB0eXBl
LCBib29sIGlzQmxvYiwgY29uc3QgU3RyaW5nJiByZWNvcmREaXJlY3RvcnlQYXRoKSB7Ci0gICAg
ICAgICAgICBhdXRvIGZpbGVQYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KHJlY29yZERpcmVjdG9yeVBhdGgsIGZpbGVOYW1lKTsKKyAgICAgICAgICAg
IGF1dG8gZmlsZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVj
b3JkRGlyZWN0b3J5UGF0aCwgZmlsZU5hbWUpOwogCiAgICAgICAgICAgICBLZXk6Okhhc2hUeXBl
IGhhc2g7CiAgICAgICAgICAgICBpZiAoIUtleTo6c3RyaW5nVG9IYXNoKGhhc2hTdHJpbmcsIGhh
c2gpKSB7Ci0gICAgICAgICAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShm
aWxlUGF0aCk7CisgICAgICAgICAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShmaWxlUGF0
aCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCkBAIC0zMTgsNyAr
MzE4LDcgQEAgdm9pZCBTdG9yYWdlOjpzeW5jaHJvbml6ZSgpCiAKICAgICAgICAgICAgIGlmIChz
aG91bGRDb21wdXRlRXhhY3RSZWNvcmRzU2l6ZSkgewogICAgICAgICAgICAgICAgIGxvbmcgbG9u
ZyBmaWxlU2l6ZSA9IDA7Ci0gICAgICAgICAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6Z2V0
RmlsZVNpemUoZmlsZVBhdGgsIGZpbGVTaXplKTsKKyAgICAgICAgICAgICAgICBGaWxlU3lzdGVt
OjpnZXRGaWxlU2l6ZShmaWxlUGF0aCwgZmlsZVNpemUpOwogICAgICAgICAgICAgICAgIHJlY29y
ZHNTaXplICs9IGZpbGVTaXplOwogICAgICAgICAgICAgfQogCkBAIC0zODEsMTIgKzM4MSwxMiBA
QCBib29sIFN0b3JhZ2U6Om1heUNvbnRhaW5CbG9iKGNvbnN0IEtleSYga2V5KSBjb25zdAogU3Ry
aW5nIFN0b3JhZ2U6OnJlY29yZERpcmVjdG9yeVBhdGhGb3JLZXkoY29uc3QgS2V5JiBrZXkpIGNv
bnN0CiB7CiAgICAgQVNTRVJUKCFrZXkudHlwZSgpLmlzRW1wdHkoKSk7Ci0gICAgcmV0dXJuIFdl
YkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3Jkc1BhdGgoKSwga2V5LnBhcnRp
dGlvbkhhc2hBc1N0cmluZygpKSwga2V5LnR5cGUoKSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQocmVjb3Jkc1BhdGgoKSwga2V5LnBhcnRpdGlvbkhhc2hBc1N0cmluZygpKSwga2V5LnR5
cGUoKSk7CiB9CiAKIFN0cmluZyBTdG9yYWdlOjpyZWNvcmRQYXRoRm9yS2V5KGNvbnN0IEtleSYg
a2V5KSBjb25zdAogewotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQocmVjb3JkRGlyZWN0b3J5UGF0aEZvcktleShrZXkpLCBrZXkuaGFzaEFz
U3RyaW5nKCkpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQocmVjb3JkRGlyZWN0b3J5UGF0aEZvcktleShrZXkpLCBrZXkuaGFzaEFzU3RyaW5nKCkpOwog
fQogCiBzdGF0aWMgU3RyaW5nIGJsb2JQYXRoRm9yUmVjb3JkUGF0aChjb25zdCBTdHJpbmcmIHJl
Y29yZFBhdGgpCkBAIC02MjksNyArNjI5LDcgQEAgdm9pZCBTdG9yYWdlOjpkZWxldGVGaWxlcyhj
b25zdCBLZXkmIGtleSkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAg
IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUocmVjb3JkUGF0aEZvcktleShrZXkpKTsK
KyAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKHJlY29yZFBhdGhGb3JLZXkoa2V5KSk7CiAgICAg
bV9ibG9iU3RvcmFnZS5yZW1vdmUoYmxvYlBhdGhGb3JLZXkoa2V5KSk7CiB9CiAKQEAgLTgwOSw3
ICs4MDksNyBAQCB2b2lkIFN0b3JhZ2U6OmRpc3BhdGNoV3JpdGVPcGVyYXRpb24oc3RkOjp1bmlx
dWVfcHRyPFdyaXRlT3BlcmF0aW9uPiB3cml0ZU9wZXJhdAogICAgICAgICBhdXRvIHJlY29yZERp
cmVjdG9yUGF0aCA9IHJlY29yZERpcmVjdG9yeVBhdGhGb3JLZXkod3JpdGVPcGVyYXRpb24ucmVj
b3JkLmtleSk7CiAgICAgICAgIGF1dG8gcmVjb3JkUGF0aCA9IHJlY29yZFBhdGhGb3JLZXkod3Jp
dGVPcGVyYXRpb24ucmVjb3JkLmtleSk7CiAKLSAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6
bWFrZUFsbERpcmVjdG9yaWVzKHJlY29yZERpcmVjdG9yUGF0aCk7CisgICAgICAgIEZpbGVTeXN0
ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhyZWNvcmREaXJlY3RvclBhdGgpOwogCiAgICAgICAgICsr
d3JpdGVPcGVyYXRpb24uYWN0aXZlQ291bnQ7CiAKQEAgLTkxNyw3ICs5MTcsNyBAQCB2b2lkIFN0
b3JhZ2U6OnRyYXZlcnNlKGNvbnN0IFN0cmluZyYgdHlwZSwgT3B0aW9uU2V0PFRyYXZlcnNlRmxh
Zz4gZmxhZ3MsIFRyYXZlcgogICAgICAgICAgICAgaWYgKGlzQmxvYikKICAgICAgICAgICAgICAg
ICByZXR1cm47CiAKLSAgICAgICAgICAgIGF1dG8gcmVjb3JkUGF0aCA9IFdlYkNvcmU6OkZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmREaXJlY3RvcnlQYXRoLCBmaWxl
TmFtZSk7CisgICAgICAgICAgICBhdXRvIHJlY29yZFBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQocmVjb3JkRGlyZWN0b3J5UGF0aCwgZmlsZU5hbWUpOwogCiAgICAg
ICAgICAgICBkb3VibGUgd29ydGggPSAtMTsKICAgICAgICAgICAgIGlmICh0cmF2ZXJzZU9wZXJh
dGlvbi5mbGFncyAmIFRyYXZlcnNlRmxhZzo6Q29tcHV0ZVdvcnRoKQpAQCAtMTAwOSwxMyArMTAw
OSwxMyBAQCB2b2lkIFN0b3JhZ2U6OmNsZWFyKGNvbnN0IFN0cmluZyYgdHlwZSwgV2FsbFRpbWUg
bW9kaWZpZWRTaW5jZVRpbWUsIENvbXBsZXRpb25IYQogICAgIGlvUXVldWUoKS5kaXNwYXRjaChb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtb2RpZmllZFNpbmNlVGltZSwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgdHlwZSA9IHR5
cGUuaXNvbGF0ZWRDb3B5KCldICgpIG11dGFibGUgewogICAgICAgICBhdXRvIHJlY29yZHNQYXRo
ID0gdGhpcy0+cmVjb3Jkc1BhdGgoKTsKICAgICAgICAgdHJhdmVyc2VSZWNvcmRzRmlsZXMocmVj
b3Jkc1BhdGgsIHR5cGUsIFttb2RpZmllZFNpbmNlVGltZV0oY29uc3QgU3RyaW5nJiBmaWxlTmFt
ZSwgY29uc3QgU3RyaW5nJiBoYXNoU3RyaW5nLCBjb25zdCBTdHJpbmcmIHR5cGUsIGJvb2wgaXNC
bG9iLCBjb25zdCBTdHJpbmcmIHJlY29yZERpcmVjdG9yeVBhdGgpIHsKLSAgICAgICAgICAgIGF1
dG8gZmlsZVBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQocmVjb3JkRGlyZWN0b3J5UGF0aCwgZmlsZU5hbWUpOworICAgICAgICAgICAgYXV0byBmaWxl
UGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmREaXJlY3Rv
cnlQYXRoLCBmaWxlTmFtZSk7CiAgICAgICAgICAgICBpZiAobW9kaWZpZWRTaW5jZVRpbWUgPiAt
V2FsbFRpbWU6OmluZmluaXR5KCkpIHsKICAgICAgICAgICAgICAgICBhdXRvIHRpbWVzID0gZmls
ZVRpbWVzKGZpbGVQYXRoKTsKICAgICAgICAgICAgICAgICBpZiAodGltZXMubW9kaWZpY2F0aW9u
IDwgbW9kaWZpZWRTaW5jZVRpbWUpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZmls
ZVBhdGgpOworICAgICAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShmaWxlUGF0aCk7CiAg
ICAgICAgIH0pOwogCiAgICAgICAgIGRlbGV0ZUVtcHR5UmVjb3Jkc0RpcmVjdG9yaWVzKHJlY29y
ZHNQYXRoKTsKQEAgLTEwODksNyArMTA4OSw3IEBAIHZvaWQgU3RvcmFnZTo6c2hyaW5rKCkKICAg
ICAgICAgICAgIGlmIChpc0Jsb2IpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAg
ICAgICBhdXRvIHJlY29yZFBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQocmVjb3JkRGlyZWN0b3J5UGF0aCwgZmlsZU5hbWUpOworICAgICAgICAgICAg
YXV0byByZWNvcmRQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJl
Y29yZERpcmVjdG9yeVBhdGgsIGZpbGVOYW1lKTsKICAgICAgICAgICAgIGF1dG8gYmxvYlBhdGgg
PSBibG9iUGF0aEZvclJlY29yZFBhdGgocmVjb3JkUGF0aCk7CiAKICAgICAgICAgICAgIGF1dG8g
dGltZXMgPSBmaWxlVGltZXMocmVjb3JkUGF0aCk7CkBAIC0xMTAxLDcgKzExMDEsNyBAQCB2b2lk
IFN0b3JhZ2U6OnNocmluaygpCiAgICAgICAgICAgICBMT0coTmV0d29ya0NhY2hlU3RvcmFnZSwg
IkRlbGV0aW9uIHByb2JhYmlsaXR5PSVmIGJvZHlMaW5rQ291bnQ9JWQgc2hvdWxkRGVsZXRlPSVk
IiwgcHJvYmFiaWxpdHksIGJvZHlTaGFyZUNvdW50LCBzaG91bGREZWxldGUpOwogCiAgICAgICAg
ICAgICBpZiAoc2hvdWxkRGVsZXRlKSB7Ci0gICAgICAgICAgICAgICAgV2ViQ29yZTo6RmlsZVN5
c3RlbTo6ZGVsZXRlRmlsZShyZWNvcmRQYXRoKTsKKyAgICAgICAgICAgICAgICBGaWxlU3lzdGVt
OjpkZWxldGVGaWxlKHJlY29yZFBhdGgpOwogICAgICAgICAgICAgICAgIG1fYmxvYlN0b3JhZ2Uu
cmVtb3ZlKGJsb2JQYXRoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSk7CkBAIC0xMTM3LDcg
KzExMzcsNyBAQCB2b2lkIFN0b3JhZ2U6OmRlbGV0ZU9sZFZlcnNpb25zKCkKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAjZW5kaWYKIAotICAgICAgICAgICAgYXV0byBvbGRWZXJzaW9uUGF0aCA9
IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChjYWNoZVBhdGgs
IHN1YmRpck5hbWUpOworICAgICAgICAgICAgYXV0byBvbGRWZXJzaW9uUGF0aCA9IEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChjYWNoZVBhdGgsIHN1YmRpck5hbWUpOwogICAg
ICAgICAgICAgTE9HKE5ldHdvcmtDYWNoZVN0b3JhZ2UsICIoTmV0d29ya1Byb2Nlc3MpIGRlbGV0
aW5nIG9sZCBjYWNoZSB2ZXJzaW9uLCBwYXRoICVzIiwgb2xkVmVyc2lvblBhdGgudXRmOCgpLmRh
dGEoKSk7CiAKICAgICAgICAgICAgIGRlbGV0ZURpcmVjdG9yeVJlY3Vyc2l2ZWx5KG9sZFZlcnNp
b25QYXRoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya0RhdGFUYXNrQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCmluZGV4IGE2MWY5Mzg1YTY3NzRiZDBiNzVjNTM5
NjljZTEzMjg3OGIzYjk3M2YuLmY0N2JkODE5ODgzMjY2YWE2NzhjNDg3ZjZiMzUzOGVjNWRhYmJl
NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a0RhdGFUYXNrQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQpAQCAtMzYsMTEgKzM2LDExIEBACiAjaW1wb3J0ICJO
ZXR3b3JrU2Vzc2lvbkNvY29hLmgiCiAjaW1wb3J0ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIK
ICNpbXBvcnQgPFdlYkNvcmUvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaD4KLSNpbXBvcnQgPFdl
YkNvcmUvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Np
b24uaD4KICNpbXBvcnQgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbXBvcnQgPFdlYkNv
cmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5o
PgorI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+
CiAjaW1wb3J0IDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgogI2ltcG9ydCA8d3RmL3RleHQvQmFz
ZTY0Lmg+CkBAIC00MDMsOCArNDAzLDggQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6c2V0
UGVuZGluZ0Rvd25sb2FkTG9jYXRpb24oY29uc3QgV1RGOjpTdHJpbmcmIGZpbGVuYW0KIAogICAg
IG1fdGFzay5nZXQoKS5fcGF0aFRvRG93bmxvYWRUYXNrRmlsZSA9IG1fcGVuZGluZ0Rvd25sb2Fk
TG9jYXRpb247CiAKLSAgICBpZiAoYWxsb3dPdmVyd3JpdGUgJiYgV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6ZmlsZUV4aXN0cyhtX3BlbmRpbmdEb3dubG9hZExvY2F0aW9uKSkKLSAgICAgICAgV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShmaWxlbmFtZSk7CisgICAgaWYgKGFsbG93T3Zlcndy
aXRlICYmIEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobV9wZW5kaW5nRG93bmxvYWRMb2NhdGlvbikp
CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZmlsZW5hbWUpOwogfQogCiBib29sIE5l
dHdvcmtEYXRhVGFza0NvY29hOjp0cnlQYXNzd29yZEJhc2VkQXV0aGVudGljYXRpb24oY29uc3Qg
V2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSwgQ2hhbGxlbmdlQ29t
cGxldGlvbkhhbmRsZXImIGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCmluZGV4
IGY2YWQ0OWY4YmFjMzVkMDE3Yjk2NTM3OThkNTdhYWEyZjQzOTU2MDguLjRhMWQ3OTIxMGFmYTU5
NmU0YjBmYWZjZTgxOGZmNGY2ODJiMzhiNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KQEAgLTc3OSw3
ICs3NzksNyBAQCAtICh2b2lkKVVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXNlc3Npb24gZGF0
YVRhc2s6KE5TVVJMU2Vzc2lvbkRhdGFUYXNrICopZGF0YQogICAgICAgICBhdXRvJiBkb3dubG9h
ZE1hbmFnZXIgPSBfc2Vzc2lvbi0+bmV0d29ya1Byb2Nlc3MoKS5kb3dubG9hZE1hbmFnZXIoKTsK
ICAgICAgICAgYXV0byBkb3dubG9hZCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpEb3dubG9h
ZD4oZG93bmxvYWRNYW5hZ2VyLCBkb3dubG9hZElELCBkb3dubG9hZFRhc2ssIF9zZXNzaW9uLT5z
ZXNzaW9uSUQoKSwgbmV0d29ya0RhdGFUYXNrLT5zdWdnZXN0ZWRGaWxlbmFtZSgpKTsKICAgICAg
ICAgbmV0d29ya0RhdGFUYXNrLT50cmFuc2ZlclNhbmRib3hFeHRlbnNpb25Ub0Rvd25sb2FkKCpk
b3dubG9hZCk7Ci0gICAgICAgIEFTU0VSVChXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlRXhpc3Rz
KG5ldHdvcmtEYXRhVGFzay0+cGVuZGluZ0Rvd25sb2FkTG9jYXRpb24oKSkpOworICAgICAgICBB
U1NFUlQoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhuZXR3b3JrRGF0YVRhc2stPnBlbmRpbmdEb3du
bG9hZExvY2F0aW9uKCkpKTsKICAgICAgICAgZG93bmxvYWQtPmRpZENyZWF0ZURlc3RpbmF0aW9u
KG5ldHdvcmtEYXRhVGFzay0+cGVuZGluZ0Rvd25sb2FkTG9jYXRpb24oKSk7CiAgICAgICAgIGRv
d25sb2FkTWFuYWdlci5kYXRhVGFza0JlY2FtZURvd25sb2FkVGFzayhkb3dubG9hZElELCBXVEZN
b3ZlKGRvd25sb2FkKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvbWFjL05ldHdvcmtQcm9jZXNzTWFjLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9tYWMvTmV0d29ya1Byb2Nlc3NNYWMubW0KaW5kZXggMzdmM2I3ZjcyYWE1MDJiMzJiYTgxMWVj
OWJhMDhmNWUyNTU4NjNiMi4uZjViZjA0YWU0NjVmNjJiNzRkMmIxOGE4MTc1OTAxYTE2ZWE1NTVk
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1By
b2Nlc3NNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29y
a1Byb2Nlc3NNYWMubW0KQEAgLTM4LDEyICszOCwxMiBAQAogI2ltcG9ydCAiU3RyaW5nVXRpbGl0
aWVzLmgiCiAjaW1wb3J0ICJXS0ZvdW5kYXRpb24uaCIKICNpbXBvcnQgPFdlYkNvcmUvQ2VydGlm
aWNhdGVJbmZvLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPFdl
YkNvcmUvTG9jYWxpemVkU3RyaW5ncy5oPgogI2ltcG9ydCA8bm90aWZ5Lmg+CiAjaW1wb3J0IDxw
YWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9MYXVuY2hT
ZXJ2aWNlc1NQSS5oPgogI2ltcG9ydCA8c3lzZXhpdHMuaD4KKyNpbXBvcnQgPHd0Zi9GaWxlU3lz
dGVtLmg+CiAjaW1wb3J0IDx3dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmg+CiAjaW1wb3J0IDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcAppbmRleCBjN2NlMWQyN2EwMDFi
ZmVkZGVkMjYyMjRlODczN2FjYjQwOWNiOWJjLi5hYTdjNTBjYmYxZTM5OGM5YzNiYTljMDAxOWNm
ZjFlNGRlZTc3OGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3Nv
dXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcApAQCAtMzIsMTIgKzMyLDEyIEBACiAjaW5j
bHVkZSAiUmVzb3VyY2VDYWNoZXNUb0NsZWFyLmgiCiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdl
ci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ2VydGlmaWNhdGVJbmZvLmg+Ci0jaW5jbHVkZSA8V2Vi
Q29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Np
b24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9SZXNvdXJjZUhhbmRsZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU291cE5ldHdvcmtTZXNz
aW9uLmg+CiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0
ZW0uaD4KICNpbmNsdWRlIDx3dGYvUkFNU2l6ZS5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CkBAIC0xMDksNyArMTA5LDcg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3Mo
Y29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGkKICAgICBBU1NFUlQoIXBhcmFtZXRlcnMuZGlza0Nh
Y2hlRGlyZWN0b3J5LmlzRW1wdHkoKSk7CiAgICAgbV9kaXNrQ2FjaGVEaXJlY3RvcnkgPSBwYXJh
bWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeTsKIAotICAgIFNvdXBOZXR3b3JrU2Vzc2lvbjo6Y2xl
YXJPbGRTb3VwQ2FjaGUoV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShtX2Rpc2tD
YWNoZURpcmVjdG9yeSkpOworICAgIFNvdXBOZXR3b3JrU2Vzc2lvbjo6Y2xlYXJPbGRTb3VwQ2Fj
aGUoRmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShtX2Rpc2tDYWNoZURpcmVjdG9yeSkpOwogCiAg
ICAgT3B0aW9uU2V0PE5ldHdvcmtDYWNoZTo6Q2FjaGU6Ok9wdGlvbj4gY2FjaGVPcHRpb25zIHsg
TmV0d29ya0NhY2hlOjpDYWNoZTo6T3B0aW9uOjpSZWdpc3Rlck5vdGlmeSB9OwogICAgIGlmIChw
YXJhbWV0ZXJzLnNob3VsZEVuYWJsZU5ldHdvcmtDYWNoZUVmZmljYWN5TG9nZ2luZykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy91bml4L1BsdWdpblByb2Nlc3NNYWlu
VW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvdW5peC9QbHVnaW5Qcm9jZXNz
TWFpblVuaXguY3BwCmluZGV4IDJiZDJlZDU5YWU2YTJlMjRiMDc0OGIwM2NlYmMzNTYzYzY2NzE4
M2UuLjNhZGU0Yzk0M2YwOWI1MWQzY2MzYmVjMmNhOTYzM2Y3M2QxMzQ5NmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy91bml4L1BsdWdpblByb2Nlc3NNYWluVW5peC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc01h
aW5Vbml4LmNwcApAQCAtMzQsOCArMzQsOCBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNs
dWRlICJOZXRzY2FwZVBsdWdpbi5oIgogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3MuaCIKLSNpbmNs
dWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRl
IDx3dGYvRmlsZVN5c3RlbS5oPgogCiAjaWYgUExBVEZPUk0oR1RLKQogI2luY2x1ZGUgPGd0ay9n
dGsuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BlcnNpc3RlbmN5VXRpbHMu
Y3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGVyc2lzdGVuY3lVdGlscy5jcHAKaW5kZXggNWRi
YTk2OGJkN2UwYjM4YzNkMjI2OTRkNmQ1ZDJlNmIwNjlkMmE4MS4uZWNhOTY0MWQyMDUzNDVjODE4
OTZlYjU2NWRmNjI3Zjk1ZTNjNTE3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
UGVyc2lzdGVuY3lVdGlscy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGVyc2lzdGVu
Y3lVdGlscy5jcHAKQEAgLTI3LDggKzI3LDggQEAKICNpbmNsdWRlICJQZXJzaXN0ZW5jeVV0aWxz
LmgiCiAKICNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVt
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KKyNpbmNsdWRlIDx3dGYvRmls
ZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS91bml4
L05ldHNjYXBlUGx1Z2luTW9kdWxlVW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVn
aW5zL05ldHNjYXBlL3VuaXgvTmV0c2NhcGVQbHVnaW5Nb2R1bGVVbml4LmNwcAppbmRleCBmYjFk
OWRjOTI2ZmQ2NzY3OTNmNDU0YTc0ZmE1NTFhZWU1NzBjOGU1Li4yYTY1ZGE5ZmJjYjJmMzNhMWZm
NTQxMGJlODg5OGNlZjEzNzk5MTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Q
bHVnaW5zL05ldHNjYXBlL3VuaXgvTmV0c2NhcGVQbHVnaW5Nb2R1bGVVbml4LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL3VuaXgvTmV0c2NhcGVQbHVnaW5N
b2R1bGVVbml4LmNwcApAQCAtMzAsMTYgKzMwLDE1IEBACiAKICNpbmNsdWRlICJOZXRzY2FwZUJy
b3dzZXJGdW5jcy5oIgogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NQcm94eS5oIgotI2luY2x1ZGUg
PFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPGVycm5vLmg+CiAjaW5jbHVkZSA8ZmNu
dGwuaD4KICNpbmNsdWRlIDxzeXMvc3RhdC5oPgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2lu
Y2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKLXVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCiBjbGFzcyBTdGRvdXREZXZOdWxsUmVkaXJlY3RvciB7CiBwdWJs
aWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL3VuaXgvUGx1Z2lu
U2VhcmNoUGF0aC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL3VuaXgvUGx1Z2lu
U2VhcmNoUGF0aC5jcHAKaW5kZXggZThhZjk2MDRjZTU1OTVhNDQ0ZmU4Y2E1MDQ1ZDNhNjE3YWIy
MzY0YS4uMmJkNTQ5YTk1ZGZhNjc1Y2U0N2Y1NmQ3OGE1OWI0ZjczMTVhMTFhYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy91bml4L1BsdWdpblNlYXJjaFBhdGguY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvdW5peC9QbHVnaW5TZWFyY2hQYXRo
LmNwcApAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlBs
dWdpblNlYXJjaFBhdGguaCIKIAotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgorI2lu
Y2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJNZW1v
cnlTYW1wbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJNZW1vcnlTYW1wbGVyLmgKaW5k
ZXggODA4MTNmZWEwNTBmMjA0OTFiZDFjOGI1MGU5MGIxY2JiYmNhYTM0NC4uNzIxY2RiZjM4OTIy
NjRiYzlmZDc5MmI1MDgzODMwZmY1MTlmYzliZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViTWVtb3J5U2FtcGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYk1l
bW9yeVNhbXBsZXIuaApAQCAtNTIsOCArNTIsOCBAQAogI2lmIEVOQUJMRShNRU1PUllfU0FNUExF
UikKIAogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0Zp
bGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+CisjaW5jbHVkZSA8d3RmL0Zp
bGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtODcsNyArODcsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgaW5pdGlhbGl6ZVRpbWVycyhkb3VibGUpOwogICAgIHZvaWQgc2FtcGxl
VGltZXJGaXJlZCgpOwogICAgIHZvaWQgc3RvcFRpbWVyRmlyZWQoKTsKLSAgICB2b2lkIGFwcGVu
ZEN1cnJlbnRNZW1vcnlVc2FnZVRvRmlsZShXZWJDb3JlOjpGaWxlU3lzdGVtOjpQbGF0Zm9ybUZp
bGVIYW5kbGUmKTsKKyAgICB2b2lkIGFwcGVuZEN1cnJlbnRNZW1vcnlVc2FnZVRvRmlsZShGaWxl
U3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUmKTsKICAgICB2b2lkIHNlbmRNZW1vcnlQcmVzc3Vy
ZUV2ZW50KCk7CiAgICAgCiAgICAgU3lzdGVtTWFsbG9jU3RhdHMgc2FtcGxlU3lzdGVtTWFsbG9j
KCkgY29uc3Q7CkBAIC05NSw3ICs5NSw3IEBAIHByaXZhdGU6CiAgICAgV2ViTWVtb3J5U3RhdGlz
dGljcyBzYW1wbGVXZWJLaXQoKSBjb25zdDsKICAgICBTdHJpbmcgcHJvY2Vzc05hbWUoKSBjb25z
dDsKICAgICAKLSAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgbV9z
YW1wbGVMb2dGaWxlIHsgV2ViQ29yZTo6RmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhh
bmRsZSB9OworICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBtX3NhbXBsZUxvZ0Zp
bGUgeyBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlIH07CiAgICAgU3RyaW5n
IG1fc2FtcGxlTG9nRmlsZVBhdGg7CiAgICAgV2ViQ29yZTo6VGltZXIgbV9zYW1wbGVUaW1lcjsK
ICAgICBXZWJDb3JlOjpUaW1lciBtX3N0b3BUaW1lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL2dsaWIvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoR0xpYi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9nbGliL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aEdMaWIuY3BwCmluZGV4IGE3MGI0
MWEwOWE5MzBiYmRjM2I1NDFjZTZhNzA4YWQ4OWJiYzJmNGIuLjRmZjM1ZDMxZGUxZDU3MjMxYTZm
NmUxMDE1YTg1NWQ0MGY4YzhjMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2ds
aWIvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoR0xpYi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvZ2xpYi9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhHTGliLmNwcApAQCAtMjcsMTIgKzI3LDExIEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUHJvY2Vzc0V4ZWN1dGFibGVQYXRoLmgi
CiAKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxnbGliLmg+Cisj
aW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HTGliVXRpbGl0
aWVzLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
ICNpZiBFTkFCTEUoREVWRUxPUEVSX01PREUpCiBzdGF0aWMgU3RyaW5nIGdldEV4ZWN1dGFibGVQ
YXRoKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9DaGlsZFByb2Nlc3NJ
T1MubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvQ2hpbGRQcm9jZXNzSU9TLm1tCmluZGV4
IDgxZDU0ZjNiZjAwOWVmYWYwNWQ0MDJkNmY1Y2ZlYThkMTBmNGI1NjcuLjY5ZDUzY2ZmMzE0YTk1
Y2JjNGE4MDdhYjk4YzllY2E4MmZlMmJlMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL2lvcy9DaGlsZFByb2Nlc3NJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvaW9z
L0NoaWxkUHJvY2Vzc0lPUy5tbQpAQCAtMzEsNyArMzEsNiBAQAogCiAjaW1wb3J0ICJTYW5kYm94
SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzLmgiCiAjaW1wb3J0ICJYUENTZXJ2aWNlRW50cnlQb2lu
dC5oIgotI2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Zs
b2F0aW5nUG9pbnRFbnZpcm9ubWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9TeXN0ZW1WZXJzaW9u
Lmg+CiAjaW1wb3J0IDxtYWNoL21hY2guaD4KQEAgLTM5LDYgKzM4LDcgQEAKICNpbXBvcnQgPHB3
ZC5oPgogI2ltcG9ydCA8c3RkbGliLmg+CiAjaW1wb3J0IDxzeXNleGl0cy5oPgorI2ltcG9ydCA8
d3RmL0ZpbGVTeXN0ZW0uaD4KIAogI2lmIEVOQUJMRShNQU5VQUxfU0FOREJPWElORykKICNpbXBv
cnQgPHd0Zi9zcGkvZGFyd2luL1NhbmRib3hTUEkuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL21hYy9DaGlsZFByb2Nlc3NNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9t
YWMvQ2hpbGRQcm9jZXNzTWFjLm1tCmluZGV4IDNjMzk0Y2M5MTZjMDk5MjBkMDMzM2YyYzRhMjU4
ZTQ3ZjFlN2M5NzkuLjc4NTM2YWFlNjBiY2YwMmM5MjY2MGMzMjgxMWE4ZDBmNThlZmY2ZjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9DaGlsZFByb2Nlc3NNYWMubW0KKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0NoaWxkUHJvY2Vzc01hYy5tbQpAQCAtMzUsNyAr
MzUsNiBAQAogI2ltcG9ydCAiV0tGb3VuZGF0aW9uLmgiCiAjaW1wb3J0ICJYUENTZXJ2aWNlRW50
cnlQb2ludC5oIgogI2ltcG9ydCA8V2ViQ29yZS9GaWxlSGFuZGxlLmg+Ci0jaW1wb3J0IDxXZWJD
b3JlL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPFdlYkNvcmUvU3lzdGVtVmVyc2lvbi5oPgogI2lt
cG9ydCA8bWFjaC1vL2R5bGQuaD4KICNpbXBvcnQgPG1hY2gvbWFjaC5oPgpAQCAtNDcsNiArNDYs
NyBAQAogI2ltcG9ydCA8c3lzL3N5c2N0bC5oPgogI2ltcG9ydCA8c3lzZXhpdHMuaD4KICNpbXBv
cnQgPHd0Zi9EYXRhTG9nLmg+CisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8
d3RmL1JhbmRvbU51bWJlci5oPgogI2ltcG9ydCA8d3RmL1Njb3BlLmg+CiAjaW1wb3J0IDx3dGYv
U3lzdGVtVHJhY2luZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1Nh
bmRib3hFeHRlbnNpb25NYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvU2FuZGJveEV4
dGVuc2lvbk1hYy5tbQppbmRleCAwY2VjOTg1Yzc4NWM3NzM2NTk3NzJkMjRmMWI2ZDU3NmQ3MWQ3
NWUxLi5hZmJjNmIyYTE0ZTViZmYwYzE2NjU2YjdjMjA4NzdjYmNkZGQ0NTcxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvU2FuZGJveEV4dGVuc2lvbk1hYy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvU2FuZGJveEV4dGVuc2lvbk1hYy5tbQpAQCAtMzEsMTMg
KzMxLDEyIEBACiAjaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCiAjaW1wb3J0ICJEZWNvZGVyLmgi
CiAjaW1wb3J0ICJFbmNvZGVyLmgiCi0jaW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNp
bXBvcnQgPHN5cy9zdGF0Lmg+CisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8
d3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oPgogI2ltcG9ydCA8d3RmL3RleHQvQ1N0cmluZy5o
PgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBjbGFz
cyBTYW5kYm94RXh0ZW5zaW9uSW1wbCB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAppbmRleCAzOGY0
MmNiOTFhNTM4ZWRlNjhlMjI1OTQxMDUwZjk2YWY2N2I5Njk4Li43NDI2YmQyYjQ1NTRmM2VmZWNj
YWJmYTY4OTk2ZTU1YWJmZWRhMTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKQEAgLTM5LDYgKzM5LDcgQEAK
ICNpbmNsdWRlIDxXZWJDb3JlL1F1YWxpZmllZE5hbWUuaD4KICNpbmNsdWRlIDxzdHJpbmc+CiAj
aW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0
ZW0uaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvUnVu
TG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KQEAgLTQ4LDcgKzQ5LDcgQEAKIAog
bmFtZXNwYWNlIEFQSSB7CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OjpOZXR3b3JrQ2FjaGU7Ci11
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTo6RmlsZVN5c3RlbTsKK3VzaW5nIG5hbWVzcGFjZSBXVEY6
OkZpbGVTeXN0ZW07CiAKIENvbnRlbnRSdWxlTGlzdFN0b3JlJiBDb250ZW50UnVsZUxpc3RTdG9y
ZTo6bGVnYWN5RGVmYXVsdFN0b3JlKCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9BUElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCmluZGV4
IDRhMmVjMzg3MjM3ZmZkYzhjYTg5NDcxODZmZmVkMGQ1Y2E0ZWE3NTQuLjM4ODRmNDNjMWUyMGEx
Mjk4YmE4ODU3ZWIxYjA5MTU1YTk4YjAwNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9BUElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQpA
QCAtMjgsOSArMjgsOCBAQAogCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1
ZGUgIlNhbmRib3hVdGlsaXRpZXMuaCIKLQogI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlv
bi5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxl
U3lzdGVtLmg+CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCA8V2ViQ29yZS9S
dW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KQEAgLTE2OSw3ICsxNjgsNyBAQCBXVEY6OlN0cmlu
ZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rv
cnkoKQogICAgIC8vIEN1cnJlbnRseSwgdGhlIHRvcCBsZXZlbCBvZiB0aGF0IGRpcmVjdG9yeSBj
b250YWlucyBlbnRpdGllcyByZWxhdGVkIHRvIFdlYlNRTCBkYXRhYmFzZXMuCiAgICAgLy8gV2Ug
c2hvdWxkIGZpeCB0aGlzLCBhbmQgbW92ZSBXZWJTUUwgaW50byBhIHN1YmRpcmVjdG9yeSAoaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDgwNykKICAgICAvLyBJbiB0
aGUgbWVhbnRpbWUsIGFuIGVudGl0eSBuYW1lIHByZWZpeGVkIHdpdGggdGhyZWUgdW5kZXJzY29y
ZXMgd2lsbCBub3QgY29uZmxpY3Qgd2l0aCBhbnkgV2ViU1FMIGVudGl0aWVzLgotICAgIHJldHVy
biBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobGVnYWN5RGVm
YXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCksICJfX19JbmRleGVkREIiKTsKKyAgICByZXR1
cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGxlZ2FjeURlZmF1bHRXZWJT
UUxEYXRhYmFzZURpcmVjdG9yeSgpLCAiX19fSW5kZXhlZERCIik7CiB9CiAKIFdURjo6U3RyaW5n
IFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvQVBJV2Vic2l0ZURh
dGFTdG9yZUdMaWIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvQVBJV2Vi
c2l0ZURhdGFTdG9yZUdMaWIuY3BwCmluZGV4IGUxYzQ1MjliM2QyMWVlNThiZmVmYjVjMThmZWZi
NTExMjJjMDE2MGYuLmY1YWI5MzFjYmVkM2I3NzFiZjNjZWM4MTJjYjc0MmU0OWJiNjg1MzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRh
U3RvcmVHTGliLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9BUElX
ZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHAKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCiAKLSNpbmNsdWRlIDxXZWJD
b3JlL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUg
PHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KIAogI2lmIFBMQVRGT1JNKEdUSykKQEAgLTQ2LDEyICs0
NiwxMiBAQCBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRpb25D
YWNoZURpcmVjdG9yeSgpCiAvLyBXaHkgaXMgb25seSB0aGlzIGRpcmVjdG9yeSBuYW1lc3BhY2Vk
IHRvIGEgcGFydGljdWxhciBhcHBsaWNhdGlvbj8KIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKQogewotICAgIHJldHVybiBjYWNoZURp
cmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihnX2dldF9wcmduYW1lKCkpLCAiV2ViS2l0Q2FjaGUiKSk7Cisg
ICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKGdfZ2V0X3ByZ25hbWUoKSksICJXZWJLaXRDYWNoZSIpKTsKIH0K
IAogV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZURpcmVj
dG9yeSgpCiB7Ci0gICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGdfZ2V0X3By
Z25hbWUoKSksICJDYWNoZVN0b3JhZ2UiKSk7CisgICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5Rmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGdfZ2V0X3By
Z25hbWUoKSksICJDYWNoZVN0b3JhZ2UiKSk7CiB9CiAKIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpCkBAIC05MSwxOSArOTEs
MTkgQEAgV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEaXJlY3RvcnkoKQogCiBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpjYWNo
ZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGly
ZWN0b3J5TmFtZSkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oZ19nZXRfdXNlcl9jYWNoZV9kaXIoKSksIGRpcmVjdG9yeU5hbWUpOwor
ICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3Rl
bTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihnX2dldF91c2VyX2NhY2hlX2Rp
cigpKSwgZGlyZWN0b3J5TmFtZSk7CiB9CiAKIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6
OndlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFdURjo6
U3RyaW5nJiBkaXJlY3RvcnlOYW1lKQogewotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJv
bUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihnX2dldF91c2VyX2RhdGFfZGlyKCkpLCBkaXJlY3Rv
cnlOYW1lKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfdXNl
cl9kYXRhX2RpcigpKSwgZGlyZWN0b3J5TmFtZSk7CiB9CiAKIFdURjo6U3RyaW5nIFdlYnNpdGVE
YXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkKIHsKICNp
ZiBQTEFURk9STShXUEUpCiAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gY2FjaGVEaXJlY3RvcnkoZ19i
dWlsZF9maWxlbmFtZShnX2dldF91c2VyX2NhY2hlX2RpcigpLCAid3BlIiwgImFwcGNhY2hlIiwg
bnVsbHB0cikpOwotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNhY2hlRGlyZWN0b3J5LmdldCgpKTsKKyAgICByZXR1cm4g
RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjYWNoZURpcmVj
dG9yeS5nZXQoKSk7CiAjZW5kaWYKICAgICByZXR1cm4gZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVE
aXJlY3RvcnkoKTsKIH0KQEAgLTExMiw3ICsxMTIsNyBAQCBXVEY6OlN0cmluZyBXZWJzaXRlRGF0
YVN0b3JlOjpsZWdhY3lEZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkKIHsKICNpZiBQTEFU
Rk9STShXUEUpCiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBkaXNrQ2FjaGVEaXJlY3RvcnkoZ19idWls
ZF9maWxlbmFtZShnX2dldF91c2VyX2NhY2hlX2RpcigpLCAid3BlIiwgImNhY2hlIiwgbnVsbHB0
cikpOwotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKGRpc2tDYWNoZURpcmVjdG9yeS5nZXQoKSk7CisgICAgcmV0dXJuIEZp
bGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGlza0NhY2hlRGly
ZWN0b3J5LmdldCgpKTsKICNlbmRpZgogICAgIHJldHVybiBkZWZhdWx0TmV0d29ya0NhY2hlRGly
ZWN0b3J5KCk7CiB9CkBAIC0xMjEsNyArMTIxLDcgQEAgV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFT
dG9yZTo6bGVnYWN5RGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkKIHsKICNpZiBQTEFU
Rk9STShXUEUpCiAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZGF0YWJhc2VEaXJlY3RvcnkoZ19idWls
ZF9maWxlbmFtZShnX2dldF91c2VyX2RhdGFfZGlyKCksICJ3cGUiLCAiZGF0YWJhc2VzIiwgbnVs
bHB0cikpOwotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKGRhdGFiYXNlRGlyZWN0b3J5LmdldCgpKTsKKyAgICByZXR1cm4g
RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihkYXRhYmFzZURp
cmVjdG9yeS5nZXQoKSk7CiAjZW5kaWYKICAgICByZXR1cm4gZGVmYXVsdFdlYlNRTERhdGFiYXNl
RGlyZWN0b3J5KCk7CiB9CkBAIC0xMzAsNyArMTMwLDcgQEAgV1RGOjpTdHJpbmcgV2Vic2l0ZURh
dGFTdG9yZTo6bGVnYWN5RGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkKIHsKICNp
ZiBQTEFURk9STShXUEUpCiAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gaW5kZXhlZERCRGF0YWJhc2VE
aXJlY3RvcnkoZ19idWlsZF9maWxlbmFtZShnX2dldF91c2VyX2RhdGFfZGlyKCksICJ3cGUiLCAi
ZGF0YWJhc2VzIiwgImluZGV4ZWRkYiIsIG51bGxwdHIpKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6
RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihpbmRleGVkREJE
YXRhYmFzZURpcmVjdG9yeS5nZXQoKSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnN0cmluZ0Zy
b21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkuZ2V0
KCkpOwogI2VuZGlmCiAgICAgcmV0dXJuIGRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9y
eSgpOwogfQpAQCAtMTM5LDcgKzEzOSw3IEBAIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6
OmxlZ2FjeURlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKQogewogI2lmIFBMQVRGT1JNKFdQ
RSkKICAgICBHVW5pcXVlUHRyPGdjaGFyPiBzdG9yYWdlRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5h
bWUoZ19nZXRfdXNlcl9kYXRhX2RpcigpLCAid3BlIiwgImxvY2Fsc3RvcmFnZSIsIG51bGxwdHIp
KTsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihzdG9yYWdlRGlyZWN0b3J5LmdldCgpKTsKKyAgICByZXR1cm4gRmlsZVN5
c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihzdG9yYWdlRGlyZWN0b3J5
LmdldCgpKTsKICNlbmRpZgogICAgIHJldHVybiBkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5
KCk7CiB9CkBAIC0xNDgsNyArMTQ4LDcgQEAgV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6
bGVnYWN5RGVmYXVsdE1lZGlhQ2FjaGVEaXJlY3RvcnkoKQogewogI2lmIFBMQVRGT1JNKFdQRSkK
ICAgICBHVW5pcXVlUHRyPGdjaGFyPiBjYWNoZURpcmVjdG9yeShnX2J1aWxkX2ZpbGVuYW1lKGdf
Z2V0X3VzZXJfY2FjaGVfZGlyKCksICJ3cGUiLCAibWVkaWFjYWNoZSIsIG51bGxwdHIpKTsKLSAg
ICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihjYWNoZURpcmVjdG9yeS5nZXQoKSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnN0
cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY2FjaGVEaXJlY3RvcnkuZ2V0KCkpOwog
I2VuZGlmCiAgICAgcmV0dXJuIGRlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KCk7CiB9CkBAIC0x
NTcsNyArMTU3LDcgQEAgV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVs
dE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKQogewogI2lmIFBMQVRGT1JNKFdQRSkKICAgICBH
VW5pcXVlUHRyPGdjaGFyPiBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5h
bWUoZ19nZXRfdXNlcl9kYXRhX2RpcigpLCAid3BlIiwgIm1lZGlha2V5cyIsIG51bGxwdHIpKTsK
LSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5LmdldCgpKTsKKyAgICByZXR1cm4g
RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihtZWRpYUtleXNT
dG9yYWdlRGlyZWN0b3J5LmdldCgpKTsKICNlbmRpZgogICAgIHJldHVybiBkZWZhdWx0TWVkaWFL
ZXlzU3RvcmFnZURpcmVjdG9yeSgpOwogfQpAQCAtMTY2LDcgKzE2Niw3IEBAIFN0cmluZyBXZWJz
aXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0
b3J5KCkKIHsKICNpZiBQTEFURk9STShXUEUpCiAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZGV2aWNl
SWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9k
YXRhX2RpcigpLCAid3BlIiwgImRldmljZWlkaGFzaHNhbHRzIiwgbnVsbHB0cikpOwotICAgIHJl
dHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKGRldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeS5nZXQoKSk7CisgICAgcmV0dXJu
IEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGV2aWNlSWRI
YXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5LmdldCgpKTsKICNlbmRpZgogICAgIHJldHVybiBkZWZh
dWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCk7CiB9CkBAIC0xNzQsNyArMTc0
LDcgQEAgU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHREZXZpY2VJZEhhc2hT
YWx0c1N0b3JhZ2VEaXJlY3RvcnkoKQogV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVn
YWN5RGVmYXVsdEphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KCkKIHsKICAgICBHVW5p
cXVlUHRyPGdjaGFyPiBqYXZhU2NyaXB0Q29yZUNvbmZpZ0RpcmVjdG9yeShnX2J1aWxkX2ZpbGVu
YW1lKGdfZ2V0X3VzZXJfZGF0YV9kaXIoKSwgQkFTRV9ESVJFQ1RPUlksICJKYXZhU2NyaXB0Q29y
ZURlYnVnIiwgbnVsbHB0cikpOwotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJp
bmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGphdmFTY3JpcHRDb3JlQ29uZmlnRGlyZWN0
b3J5LmdldCgpKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihqYXZhU2NyaXB0Q29yZUNvbmZpZ0RpcmVjdG9yeS5nZXQoKSk7CiB9CiAK
IFJlZjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiBXZWJzaXRlRGF0YVN0
b3JlOjpkZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcAppbmRleCA2NzRhNWRiMDQzYzhh
NjBmMzYyMGFhN2JhMDE4YzFmOTg1ZWRmOGE5Li5iMDQ2NmU5MTQwOTBiYzA1NTk2NmU2YjlkZjMx
OWVhMzA0ZGIyMzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9JY29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L0ljb25EYXRhYmFzZS5jcHAKQEAgLTI5LDExICsyOSwxMSBAQAogCiAjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQml0bWFwSW1hZ2UuaD4KLSNpbmNsdWRlIDxXZWJDb3Jl
L0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9TUUxpdGVTdGF0ZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZVRyYW5zYWN0
aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KKyNpbmNsdWRlIDx3dGYv
RmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmF2aWNvbkRhdGFi
YXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZhdmljb25E
YXRhYmFzZS5jcHAKaW5kZXggOWJlNzI1M2Y4NWU5MWRhMTFiOTVlZDI4MDllYjQ0YjVhMzcxNWE1
YS4uZTAxNjQ4NjgxNzFhNWQ4YmVlOGEzZTE4NmFjNjgyNWM0OTFkOTcwMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGYXZpY29uRGF0
YWJhc2UuY3BwCkBAIC0yMywxMiArMjMsMTIgQEAKICNpbmNsdWRlICJJY29uRGF0YWJhc2UuaCIK
ICNpbmNsdWRlICJXZWJLaXRGYXZpY29uRGF0YWJhc2VQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2Vi
UHJlZmVyZW5jZXMuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0ltYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRTaXplLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9SZWZQdHJDYWlyby5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVy
Lmg+CiAjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3Rl
bS5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3RmL1NldEZvclNjb3Bl
Lmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgpAQCAtMjczLDcgKzI3Myw3IEBAIHZv
aWQgd2Via2l0RmF2aWNvbkRhdGFiYXNlT3BlbihXZWJLaXRGYXZpY29uRGF0YWJhc2UqIGRhdGFi
YXNlLCBjb25zdCBTdHJpbmcmIHBhCiAgICAgcHJpdi0+aWNvbkRhdGFiYXNlLT5zZXRFbmFibGVk
KHRydWUpOwogICAgIHByaXYtPmljb25EYXRhYmFzZS0+c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZChXZWJQcmVmZXJlbmNlczo6YW55UGFnZXNBcmVVc2luZ1ByaXZhdGVCcm93c2luZygpKTsKIAot
ICAgIGlmICghcHJpdi0+aWNvbkRhdGFiYXNlLT5vcGVuKFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRp
cmVjdG9yeU5hbWUocGF0aCksIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShw
YXRoKSkpIHsKKyAgICBpZiAoIXByaXYtPmljb25EYXRhYmFzZS0+b3BlbihGaWxlU3lzdGVtOjpk
aXJlY3RvcnlOYW1lKHBhdGgpLCBGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUocGF0aCkpKSB7
CiAgICAgICAgIHByaXYtPmljb25EYXRhYmFzZSA9IG51bGxwdHI7CiAgICAgICAgIEljb25EYXRh
YmFzZTo6YWxsb3dEYXRhYmFzZUNsZWFudXAoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3QuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0
LmNwcAppbmRleCAzN2U2Y2NhMGNlYmNlOTE0NzMwZTNjNmQ0MjVjNWZlZjc3ZmI0ODVmLi4wOTk4
MGFhZTA2OTllYmNlOWQzM2U5YzVhNjk3YTAyZGUwNDcwM2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZpbGVDaG9vc2VyUmVx
dWVzdC5jcHAKQEAgLTI1LDkgKzI1LDkgQEAKICNpbmNsdWRlICJBUElTdHJpbmcuaCIKICNpbmNs
dWRlICJXZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3RQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViT3Bl
blBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3Rl
bS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dEVuY29kaW5nLmg+CiAjaW5jbHVkZSA8Z2xpYi9n
aTE4bi1saWIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIv
R1VuaXF1ZVB0ci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0V2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRXZWJDb250ZXh0LmNwcAppbmRleCAwZjM5ZTEyNWYzZGE2YzQ4Mzk2YTQwYzljZGZl
OGY0YzQxZDk2OWFlLi42NmQ4M2E3MTg4ZTZjZGE3MGVmMmI0OWYyNjM5OTdhYzRlZjY5NTBhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJD
b250ZXh0LmNwcApAQCAtMzMzLDIwICszMzMsMjAgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViQ29u
dGV4dENvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKICAgICBHVW5pcXVlUHRyPGNoYXI+IGJ1
bmRsZUZpbGVuYW1lKGdfYnVpbGRfZmlsZW5hbWUoaW5qZWN0ZWRCdW5kbGVEaXJlY3RvcnkoKSwg
SU5KRUNURURfQlVORExFX0ZJTEVOQU1FLCBudWxscHRyKSk7CiAKICAgICBBUEk6OlByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uOwotICAgIGNvbmZpZ3VyYXRpb24uc2V0SW5q
ZWN0ZWRCdW5kbGVQYXRoKFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oYnVuZGxlRmlsZW5hbWUuZ2V0KCkpKTsKKyAgICBjb25maWd1cmF0aW9u
LnNldEluamVjdGVkQnVuZGxlUGF0aChGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKGJ1bmRsZUZpbGVuYW1lLmdldCgpKSk7CiAgICAgY29uZmlndXJhdGlvbi5z
ZXRNYXhpbXVtUHJvY2Vzc0NvdW50KDEpOwogICAgIGNvbmZpZ3VyYXRpb24uc2V0RGlza0NhY2hl
U3BlY3VsYXRpdmVWYWxpZGF0aW9uRW5hYmxlZCh0cnVlKTsKIAogICAgIFdlYktpdFdlYkNvbnRl
eHQqIHdlYkNvbnRleHQgPSBXRUJLSVRfV0VCX0NPTlRFWFQob2JqZWN0KTsKICAgICBXZWJLaXRX
ZWJDb250ZXh0UHJpdmF0ZSogcHJpdiA9IHdlYkNvbnRleHQtPnByaXY7CiAgICAgaWYgKHByaXYt
PndlYnNpdGVEYXRhTWFuYWdlciAmJiAhd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2lzX2Vw
aGVtZXJhbChwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSB7Ci0gICAgICAgIGNvbmZp
Z3VyYXRpb24uc2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0
cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0X3dlYnNpdGVfZGF0YV9tYW5h
Z2VyX2dldF9sb2NhbF9zdG9yYWdlX2RpcmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIu
Z2V0KCkpKSk7Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0RGlza0NhY2hlRGlyZWN0b3J5KFdl
YkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxl
U3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHdlYmtpdF93ZWJzaXRl
X2RhdGFfbWFuYWdlcl9nZXRfZGlza19jYWNoZV9kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURhdGFN
YW5hZ2VyLmdldCgpKSksIG5ldHdvcmtDYWNoZVN1YmRpcmVjdG9yeSkpOwotICAgICAgICBjb25m
aWd1cmF0aW9uLnNldEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vic2l0ZV9kYXRh
X21hbmFnZXJfZ2V0X29mZmxpbmVfYXBwbGljYXRpb25fY2FjaGVfZGlyZWN0b3J5KHByaXYtPndl
YnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpKTsKLSAgICAgICAgY29uZmlndXJhdGlvbi5zZXRJbmRl
eGVkREJEYXRhYmFzZURpcmVjdG9yeShXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfaW5k
ZXhlZGRiX2RpcmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSk7Ci0gICAg
ICAgIGNvbmZpZ3VyYXRpb24uc2V0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vic2l0
ZV9kYXRhX21hbmFnZXJfZ2V0X3dlYnNxbF9kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURhdGFNYW5h
Z2VyLmdldCgpKSkpOworICAgICAgICBjb25maWd1cmF0aW9uLnNldExvY2FsU3RvcmFnZURpcmVj
dG9yeShGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHdlYmtp
dF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfbG9jYWxfc3RvcmFnZV9kaXJlY3RvcnkocHJpdi0+
d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSkpOworICAgICAgICBjb25maWd1cmF0aW9uLnNldERp
c2tDYWNoZURpcmVjdG9yeShGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmls
ZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vic2l0
ZV9kYXRhX21hbmFnZXJfZ2V0X2Rpc2tfY2FjaGVfZGlyZWN0b3J5KHByaXYtPndlYnNpdGVEYXRh
TWFuYWdlci5nZXQoKSkpLCBuZXR3b3JrQ2FjaGVTdWJkaXJlY3RvcnkpKTsKKyAgICAgICAgY29u
ZmlndXJhdGlvbi5zZXRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KEZpbGVTeXN0ZW06OnN0cmlu
Z0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2Vy
X2dldF9vZmZsaW5lX2FwcGxpY2F0aW9uX2NhY2hlX2RpcmVjdG9yeShwcml2LT53ZWJzaXRlRGF0
YU1hbmFnZXIuZ2V0KCkpKSk7CisgICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0SW5kZXhlZERCRGF0
YWJhc2VEaXJlY3RvcnkoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2luZGV4ZWRkYl9kaXJlY3Rvcnko
cHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSkpOworICAgICAgICBjb25maWd1cmF0aW9u
LnNldFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24od2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF93ZWJzcWxf
ZGlyZWN0b3J5KHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpKTsKICAgICB9IGVsc2Ug
aWYgKCFwcml2LT5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkuaXNOdWxsKCkpCi0gICAgICAgIGNvbmZp
Z3VyYXRpb24uc2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0
cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+bG9jYWxTdG9yYWdlRGlyZWN0
b3J5LmRhdGEoKSkpOworICAgICAgICBjb25maWd1cmF0aW9uLnNldExvY2FsU3RvcmFnZURpcmVj
dG9yeShGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYt
PmxvY2FsU3RvcmFnZURpcmVjdG9yeS5kYXRhKCkpKTsKIAogICAgIHByaXYtPnByb2Nlc3NQb29s
ID0gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZShjb25maWd1cmF0aW9uKTsKIApAQCAtOTI0LDcgKzky
NCw3IEBAIHZvaWQgd2Via2l0X3dlYl9jb250ZXh0X3NldF9mYXZpY29uX2RhdGFiYXNlX2RpcmVj
dG9yeShXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0CiAgICAgV2ViS2l0V2ViQ29udGV4dFByaXZh
dGUqIHByaXYgPSBjb250ZXh0LT5wcml2OwogICAgIGVuc3VyZUZhdmljb25EYXRhYmFzZShjb250
ZXh0KTsKIAotICAgIFN0cmluZyBkaXJlY3RvcnlQYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6
c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKKyAgICBTdHJpbmcgZGly
ZWN0b3J5UGF0aCA9IEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24ocGF0aCk7CiAgICAgLy8gVXNlIGRlZmF1bHQgaWYgbnVsbHB0ciBpcyBwYXNzZWQgYXMgcGFy
YW1ldGVyLgogICAgIGlmIChkaXJlY3RvcnlQYXRoLmlzRW1wdHkoKSkgewogI2lmIFBMQVRGT1JN
KEdUSykKQEAgLTkzMyw3ICs5MzMsNyBAQCB2b2lkIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfZmF2
aWNvbl9kYXRhYmFzZV9kaXJlY3RvcnkoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dAogICAgICAg
ICBjb25zdCBjaGFyKiBwb3J0RGlyZWN0b3J5ID0gIndwZSI7CiAjZW5kaWYKICAgICAgICAgR1Vu
aXF1ZVB0cjxnY2hhcj4gZGF0YWJhc2VEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFtZShnX2dldF91
c2VyX2NhY2hlX2RpcigpLCBwb3J0RGlyZWN0b3J5LCAiaWNvbmRhdGFiYXNlIiwgbnVsbHB0cikp
OwotICAgICAgICBkaXJlY3RvcnlQYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJv
bUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihkYXRhYmFzZURpcmVjdG9yeS5nZXQoKSk7CisgICAg
ICAgIGRpcmVjdG9yeVBhdGggPSBGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGRhdGFiYXNlRGlyZWN0b3J5LmdldCgpKTsKICAgICB9CiAgICAgcHJpdi0+ZmF2
aWNvbkRhdGFiYXNlRGlyZWN0b3J5ID0gZGlyZWN0b3J5UGF0aC51dGY4KCk7CiAKQEAgLTk0Miw3
ICs5NDIsNyBAQCB2b2lkIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfZmF2aWNvbl9kYXRhYmFzZV9k
aXJlY3RvcnkoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dAogICAgICAgICAiV2VicGFnZUljb25z
LmRiIiwgbnVsbHB0cikpOwogCiAgICAgLy8gU2V0dGluZyB0aGUgcGF0aCB3aWxsIGNhdXNlIHRo
ZSBpY29uIGRhdGFiYXNlIHRvIGJlIG9wZW5lZC4KLSAgICB3ZWJraXRGYXZpY29uRGF0YWJhc2VP
cGVuKHByaXYtPmZhdmljb25EYXRhYmFzZS5nZXQoKSwgV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3Ry
aW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmYXZpY29uRGF0YWJhc2VQYXRoLmdldCgp
KSk7CisgICAgd2Via2l0RmF2aWNvbkRhdGFiYXNlT3Blbihwcml2LT5mYXZpY29uRGF0YWJhc2Uu
Z2V0KCksIEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmF2
aWNvbkRhdGFiYXNlUGF0aC5nZXQoKSkpOwogCiAgICAgaWYgKHdlYmtpdF93ZWJfY29udGV4dF9p
c19lcGhlbWVyYWwoY29udGV4dCkpCiAgICAgICAgIHdlYmtpdEZhdmljb25EYXRhYmFzZVNldFBy
aXZhdGVCcm93c2luZ0VuYWJsZWQocHJpdi0+ZmF2aWNvbkRhdGFiYXNlLmdldCgpLCB0cnVlKTsK
QEAgLTEwMjYsNyArMTAyNiw3IEBAIHZvaWQgd2Via2l0X3dlYl9jb250ZXh0X3NldF9hZGRpdGlv
bmFsX3BsdWdpbnNfZGlyZWN0b3J5KFdlYktpdFdlYkNvbnRleHQqIGNvbnRlCiAgICAgZ19yZXR1
cm5faWZfZmFpbChkaXJlY3RvcnkpOwogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkp
Ci0gICAgY29udGV4dC0+cHJpdi0+cHJvY2Vzc1Bvb2wtPnNldEFkZGl0aW9uYWxQbHVnaW5zRGly
ZWN0b3J5KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oZGlyZWN0b3J5KSk7CisgICAgY29udGV4dC0+cHJpdi0+cHJvY2Vzc1Bvb2wtPnNldEFk
ZGl0aW9uYWxQbHVnaW5zRGlyZWN0b3J5KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oZGlyZWN0b3J5KSk7CiAjZW5kaWYKIH0KIApAQCAtMTQxOCw3ICsxNDE4
LDcgQEAgdm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2Rpc2tfY2FjaGVfZGlyZWN0b3J5KFdl
YktpdFdlYkNvbnRleHQqIGNvbnRleHQsIGNvbnMKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJ
VF9JU19XRUJfQ09OVEVYVChjb250ZXh0KSk7CiAgICAgZ19yZXR1cm5faWZfZmFpbChkaXJlY3Rv
cnkpOwogCi0gICAgY29udGV4dC0+cHJpdi0+cHJvY2Vzc1Bvb2wtPmNvbmZpZ3VyYXRpb24oKS5z
ZXREaXNrQ2FjaGVEaXJlY3RvcnkoV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZGlyZWN0b3J5KSwgbmV0d29ya0NhY2hlU3ViZGlyZWN0b3J5KSk7CisgICAgY29u
dGV4dC0+cHJpdi0+cHJvY2Vzc1Bvb2wtPmNvbmZpZ3VyYXRpb24oKS5zZXREaXNrQ2FjaGVEaXJl
Y3RvcnkoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0
cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGlyZWN0b3J5KSwgbmV0d29ya0NhY2hl
U3ViZGlyZWN0b3J5KSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5jcHAKaW5k
ZXggN2UxZDE0YjY3Yjk1MzhmNDc1ZTBmOGFmNDUwYWFiZGVmMmUyMTU1ZS4uMWNjMDY1NDExZTcz
MWZhNjcyYzQzNGYzYjNjMGFiZTlhNTY5M2ViZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuY3Bw
CkBAIC0yNiw4ICsyNiw4IEBACiAjaW5jbHVkZSAiV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyUHJp
dmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYnNpdGVEYXRhUHJpdmF0ZS5oIgogI2luY2x1ZGUg
IldlYnNpdGVEYXRhRmV0Y2hPcHRpb24uaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0u
aD4KICNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVt
Lmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nbGli
L1dURkdUeXBlLmg+CiAKQEAgLTM2MywxMyArMzYzLDEzIEBAIEFQSTo6V2Vic2l0ZURhdGFTdG9y
ZSYgd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyR2V0RGF0YVN0b3JlKFdlYktpdFdlYnNpdGVEYXRh
TWFuCiAgICAgaWYgKCFwcml2LT53ZWJzaXRlRGF0YVN0b3JlKSB7CiAgICAgICAgIGF1dG8gY29u
ZmlndXJhdGlvbiA9IFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKICAg
ICAgICAgY29uZmlndXJhdGlvbi0+c2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCFwcml2LT5sb2Nh
bFN0b3JhZ2VEaXJlY3RvcnkgPwotICAgICAgICAgICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkgOiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJp
bmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPmxvY2FsU3RvcmFnZURpcmVjdG9y
eS5nZXQoKSkpOworICAgICAgICAgICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9j
YWxTdG9yYWdlRGlyZWN0b3J5KCkgOiBGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKHByaXYtPmxvY2FsU3RvcmFnZURpcmVjdG9yeS5nZXQoKSkpOwogICAgICAg
ICBjb25maWd1cmF0aW9uLT5zZXROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoIXByaXYtPmRpc2tDYWNo
ZURpcmVjdG9yeSA/Ci0gICAgICAgICAgICBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRO
ZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKSA6IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKHByaXYtPmRpc2tDYWNoZURpcmVjdG9yeS5nZXQoKSksIG5ldHdvcmtDYWNo
ZVN1YmRpcmVjdG9yeSkpOworICAgICAgICAgICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkgOiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihw
cml2LT5kaXNrQ2FjaGVEaXJlY3RvcnkuZ2V0KCkpLCBuZXR3b3JrQ2FjaGVTdWJkaXJlY3Rvcnkp
KTsKICAgICAgICAgY29uZmlndXJhdGlvbi0+c2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgh
cHJpdi0+YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA/Ci0gICAgICAgICAgICBBUEk6OldlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkgOiBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPmFw
cGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkuZ2V0KCkpKTsKKyAgICAgICAgICAgIEFQSTo6V2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKSA6IEZpbGVTeXN0
ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+YXBwbGljYXRpb25D
YWNoZURpcmVjdG9yeS5nZXQoKSkpOwogICAgICAgICBjb25maWd1cmF0aW9uLT5zZXRXZWJTUUxE
YXRhYmFzZURpcmVjdG9yeSghcHJpdi0+d2ViU1FMRGlyZWN0b3J5ID8KLSAgICAgICAgICAgIEFQ
STo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkgOiBX
ZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBy
aXYtPndlYlNRTERpcmVjdG9yeS5nZXQoKSkpOworICAgICAgICAgICAgQVBJOjpXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKSA6IEZpbGVTeXN0ZW06OnN0
cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+d2ViU1FMRGlyZWN0b3J5Lmdl
dCgpKSk7CiAgICAgICAgIGNvbmZpZ3VyYXRpb24tPnNldE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rv
cnkoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9y
eSgpKTsKICAgICAgICAgcHJpdi0+d2Vic2l0ZURhdGFTdG9yZSA9IEFQSTo6V2Vic2l0ZURhdGFT
dG9yZTo6Y3JlYXRlTGVnYWN5KFdURk1vdmUoY29uZmlndXJhdGlvbikpOwogICAgIH0KQEAgLTUz
Miw3ICs1MzIsNyBAQCBjb25zdCBnY2hhciogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dl
dF9kaXNrX2NhY2hlX2RpcmVjdG9yeShXZWJLaXRXZWJzaXRlRAogCiAgICAgaWYgKCFwcml2LT5k
aXNrQ2FjaGVEaXJlY3RvcnkpIHsKICAgICAgICAgLy8gVGhlIGRlZmF1bHQgZGlyZWN0b3J5IGFs
cmVhZHkgaGFzIHRoZSBzdWJkaXJlY3RvcnkuCi0gICAgICAgIHByaXYtPmRpc2tDYWNoZURpcmVj
dG9yeS5yZXNldChnX3N0cmR1cChXZWJDb3JlOjpGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKEFQ
STo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpKS51dGY4
KCkuZGF0YSgpKSk7CisgICAgICAgIHByaXYtPmRpc2tDYWNoZURpcmVjdG9yeS5yZXNldChnX3N0
cmR1cChGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpKS51dGY4KCkuZGF0YSgpKSk7CiAgICAgfQogICAg
IHJldHVybiBwcml2LT5kaXNrQ2FjaGVEaXJlY3RvcnkuZ2V0KCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd2luL0FQSVdlYnNpdGVEYXRhU3RvcmVXaW4uY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dpbi9BUElXZWJzaXRlRGF0YVN0b3JlV2lu
LmNwcAppbmRleCAxOWJlMjg4ZDQ4MmRhYWZkZDE4ZTRjZmRmZWRjZTIwM2FhYzc1YmRkLi4zMjI1
YjkyMTcwZDdjOThiNGJlODQ1YWNjZmU4ZDhjMWIzNjdkN2IzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvd2luL0FQSVdlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93aW4vQVBJV2Vic2l0ZURhdGFTdG9yZVdpbi5j
cHAKQEAgLTI2LDQzICsyNiw0MyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFQ
SVdlYnNpdGVEYXRhU3RvcmUuaCIKIAotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgor
I2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKIG5hbWVzcGFjZSBBUEkgewogCiBTdHJpbmcg
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKQogewot
ICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
V2ViQ29yZTo6RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCks
ICJBcHBsaWNhdGlvbkNhY2hlIik7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3Rv
cnkoKSwgIkFwcGxpY2F0aW9uQ2FjaGUiKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKQogewotICAgIHJldHVybiBXZWJDb3JlOjpG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6
bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJDYWNoZVN0b3JhZ2UiKTsKKyAg
ICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06
OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiQ2FjaGVTdG9yYWdlIik7CiB9
CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5
KCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVj
dG9yeSgpLCAiTmV0d29ya0NhY2hlIik7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJl
Y3RvcnkoKSwgIk5ldHdvcmtDYWNoZSIpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0
ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiSW5kZXhlZERCIik7Cisg
ICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVt
Ojpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkluZGV4ZWREQiIpOwogfQog
CiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25EaXJlY3RvcnkoKQogewotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNT
dG9yYWdlRGlyZWN0b3J5KCksICJTZXJ2aWNlV29ya2VycyIpOworICAgIHJldHVybiBGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lm
aWNTdG9yYWdlRGlyZWN0b3J5KCksICJTZXJ2aWNlV29ya2VycyIpOwogfQogCiBTdHJpbmcgV2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpCiB7Ci0gICAgcmV0
dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkxvY2Fs
U3RvcmFnZSIpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJMb2Nh
bFN0b3JhZ2UiKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmxvY2FsVXNlclNw
ZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiTWVkaWFLZXlTdG9yYWdlIik7CisgICAgcmV0dXJu
IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVz
ZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIk1lZGlhS2V5U3RvcmFnZSIpOwogfQogCiBT
dHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURp
cmVjdG9yeSgpCkBAIC03Myw1NyArNzMsNTcgQEAgU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKQogCiBTdHJpbmcgV2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1
cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6
OkZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiV2ViU1FM
Iik7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxl
U3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIldlYlNRTCIpOwog
fQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEaXJlY3RvcnkoKQogewotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNT
dG9yYWdlRGlyZWN0b3J5KCksICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIik7CisgICAgcmV0dXJu
IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVz
ZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIlJlc291cmNlTG9hZFN0YXRpc3RpY3MiKTsK
IH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5TmFtZSkKIHsKLSAgICByZXR1cm4g
V2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZp
bGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCBkaXJlY3RvcnlO
YW1lKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZp
bGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCBkaXJlY3RvcnlO
YW1lKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OndlYnNpdGVEYXRhRGlyZWN0b3J5
RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5TmFtZSkKIHsK
LSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgp
LCBkaXJlY3RvcnlOYW1lKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgp
LCBkaXJlY3RvcnlOYW1lKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURl
ZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06
OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiQXBwbGljYXRpb25DYWNoZSIp
OworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5
c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJBcHBsaWNhdGlvbkNh
Y2hlIik7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0TmV0d29y
a0NhY2hlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNp
ZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiTmV0d29ya0NhY2hlIik7CisgICAgcmV0dXJuIEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVj
aWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIk5ldHdvcmtDYWNoZSIpOwogfQogCiBTdHJpbmcgV2Vi
c2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkKIHsK
LSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgp
LCAiV2ViU1FMIik7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIldl
YlNRTCIpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdEluZGV4
ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmxvY2FsVXNl
clNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiSW5kZXhlZERCIik7CisgICAgcmV0dXJuIEZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJT
cGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkluZGV4ZWREQiIpOwogfQogCiBTdHJpbmcgV2Vi
c2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpCiB7Ci0g
ICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChX
ZWJDb3JlOjpGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwg
IkxvY2FsU3RvcmFnZSIpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCks
ICJMb2NhbFN0b3JhZ2UiKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURl
ZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmxvY2Fs
VXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiTWVkaWFDYWNoZSIpOworICAgIHJldHVy
biBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxV
c2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJNZWRpYUNhY2hlIik7CiB9CiAKIFN0cmlu
ZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9y
eSgpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJl
Y3RvcnkoKSwgIk1lZGlhS2V5U3RvcmFnZSIpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdl
RGlyZWN0b3J5KCksICJNZWRpYUtleVN0b3JhZ2UiKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRh
U3RvcmU6OmxlZ2FjeURlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKQpA
QCAtMTM0LDcgKzEzNCw3IEBAIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0
RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCkKIAogU3RyaW5nIFdlYnNpdGVEYXRh
U3RvcmU6OmxlZ2FjeURlZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpCiB7
Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChXZWJDb3JlOjpGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3Rvcnko
KSwgIkphdmFTY3JpcHRDb3JlRGVidWciKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURp
cmVjdG9yeSgpLCAiSmF2YVNjcmlwdENvcmVEZWJ1ZyIpOwogfQogCiBSZWY8V2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4gV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFT
dG9yZUNvbmZpZ3VyYXRpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAppbmRleCA4MDU0N2U2YmUx
Mzg2NTVmMDc5OGI2NzZkYzEyZGM5YWIzM2FjZjFiLi5mODg0NGFmZTZkMjJlNGNkNWVlMjA4MTQ4
YjRmNDkyZjdjYzYzMTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRv
bWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcApAQCAtODA2LDcgKzgwNiw3
IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OndpbGxDbG9zZVBhZ2UoY29uc3QgV2ViUGFn
ZVByb3h5JiBwYWdlKQogCiBzdGF0aWMgYm9vbCBmaWxlQ2FuQmVBY2NlcHRlZEZvclVwbG9hZChj
b25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGFsbG93ZWRNSU1F
VHlwZXMsIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgYWxsb3dlZEZpbGVFeHRlbnNpb25zKQogewot
ICAgIGlmICghV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhmaWxlbmFtZSkpCisgICAg
aWYgKCFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGZpbGVuYW1lKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgaWYgKGFsbG93ZWRNSU1FVHlwZXMuaXNFbXB0eSgpICYmIGFsbG93ZWRGaWxl
RXh0ZW5zaW9ucy5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L0Rvd25sb2FkQ2xpZW50Lm1tCmluZGV4IDNiNDk2MjhmZGY2ZGZjNWFhZGQwMjlkNWEyY2JjYjZi
ZmI3OGNmYzEuLmM3MjdiZDIzZWY5NTUyNTFmNzk4MDlkNjljNTgyMzIxOTdhZjFlYjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tCkBAIC00
MiwxMCArNDIsMTAgQEAKICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgogI2ltcG9ydCAiX1dL
RG93bmxvYWREZWxlZ2F0ZS5oIgogI2ltcG9ydCAiX1dLRG93bmxvYWRJbnRlcm5hbC5oIgotI2lt
cG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlRXJy
b3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2ltcG9ydCA8d3Rm
L0Jsb2NrUHRyLmg+CisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIApAQCAtMTgxLDcgKzE4MSw3IEBAIHZvaWQgRG93bmxvYWRDbGllbnQ6OmRlY2lkZURl
c3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdlYlByb2Nlc3NQb29sJiwgRG93CiB7CiAj
aWYgVVNFKFNZU1RFTV9QUkVWSUVXKQogICAgIGlmIChkb3dubG9hZFByb3h5LmlzU3lzdGVtUHJl
dmlld0Rvd25sb2FkKCkpIHsKLSAgICAgICAgTlNTdHJpbmcgKnRlbXBvcmFyeURpcmVjdG9yeSA9
IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShAIlN5c3RlbVBy
ZXZpZXdzIik7CisgICAgICAgIE5TU3RyaW5nICp0ZW1wb3JhcnlEaXJlY3RvcnkgPSBGaWxlU3lz
dGVtOjpjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoQCJTeXN0ZW1QcmV2aWV3cyIpOwogICAgICAg
ICBOU1N0cmluZyAqZGVzdGluYXRpb24gPSBbdGVtcG9yYXJ5RGlyZWN0b3J5IHN0cmluZ0J5QXBw
ZW5kaW5nUGF0aENvbXBvbmVudDpmaWxlbmFtZV07CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KEFsbG93T3ZlcndyaXRlOjpZZXMsIGRlc3RpbmF0aW9uKTsKICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2Eu
bW0KaW5kZXggNTZjZjBmZDA1OTBjNjE1NDNkMzQxMGY4NGY2NmQxOWM3ZWQ4NTFiZi4uMmRhZjc1
NTcxY2NiMWE5ZDcwNWJhYTA1N2FkNjI0YTVhNjk4YTQzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCkBAIC00Myw3ICs0
Myw2IEBACiAjaW1wb3J0ICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbXBvcnQgIldpbmRvd1Nl
cnZlckNvbm5lY3Rpb24uaCIKICNpbXBvcnQgPFdlYkNvcmUvQ29sb3IuaD4KLSNpbXBvcnQgPFdl
YkNvcmUvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Np
b24uaD4KICNpbXBvcnQgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbXBvcnQgPFdlYkNv
cmUvUGxhdGZvcm1QYXN0ZWJvYXJkLmg+CkBAIC01Miw2ICs1MSw3IEBACiAjaW1wb3J0IDxwYWwv
c3BpL2NmL0NGTmV0d29ya1NQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0tleWVkQXJj
aGl2ZXJTUEkuaD4KICNpbXBvcnQgPHN5cy9wYXJhbS5oPgorI2ltcG9ydCA8d3RmL0ZpbGVTeXN0
ZW0uaD4KICNpbXBvcnQgPHd0Zi9Qcm9jZXNzUHJpdmlsZWdlLmg+CiAjaW1wb3J0IDx3dGYvY29j
b2EvRW50aXRsZW1lbnRzLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9keWxkU1BJLmg+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IDA2NGUw
ZGZkOTBmZjZiYjlkZGMzYWI0NDJlYzhjZGE2OWFhMmQ5NmQuLjE2MDk1YThiZDE1NjQ4ODQ5YzZh
ZWIxMzExNjVlNjM3NGZlMGU4YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlZpZXdJbXBsLm1tCkBAIC04NCw3ICs4NCw2IEBACiAjaW1wb3J0IDxXZWJDb3JlL0RyYWdE
YXRhLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RyYWdJdGVtLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Vk
aXRvci5oPgotI2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0ZvbnRBdHRyaWJ1dGVDaGFuZ2VzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZvbnRBdHRyaWJ1dGVz
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0tleXByZXNzQ29tbWFuZC5oPgpAQCAtMTE1LDYgKzExNCw3
IEBACiAjaW1wb3J0IDxwYWwvc3BpL21hYy9OU1ZpZXdTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkv
bWFjL05TV2luZG93U1BJLmg+CiAjaW1wb3J0IDxzeXMvc3RhdC5oPgorI2ltcG9ydCA8d3RmL0Zp
bGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2ltcG9ydCA8d3Rm
L1Byb2Nlc3NQcml2aWxlZ2UuaD4KICNpbXBvcnQgPHd0Zi9TZXRGb3JTY29wZS5oPgpAQCAtMzk2
OSw3ICszOTY5LDcgQEAgYm9vbCBXZWJWaWV3SW1wbDo6cGVyZm9ybURyYWdPcGVyYXRpb24oaWQg
PE5TRHJhZ2dpbmdJbmZvPiBkcmFnZ2luZ0luZm8pCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIH0KIAotICAgICAgICBOU1N0cmluZyAqZHJvcERlc3RpbmF0aW9uUGF0aCA9IFdl
YkNvcmU6OkZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShAIldlYktpdERyb3BE
ZXN0aW5hdGlvbiIpOworICAgICAgICBOU1N0cmluZyAqZHJvcERlc3RpbmF0aW9uUGF0aCA9IEZp
bGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShAIldlYktpdERyb3BEZXN0aW5hdGlv
biIpOwogICAgICAgICBpZiAoIWRyb3BEZXN0aW5hdGlvblBhdGgpIHsKICAgICAgICAgICAgIGRl
bGV0ZSBkcmFnRGF0YTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTQyOTEsNyArNDI5
MSw3IEBAIE5TQXJyYXkgKldlYlZpZXdJbXBsOjpuYW1lc09mUHJvbWlzZWRGaWxlc0Ryb3BwZWRB
dERlc3RpbmF0aW9uKE5TVVJMICpkcm9wRGVzdGluCiAgICAgICAgIExPR19FUlJPUigiRmFpbGVk
IHRvIGNyZWF0ZSBpbWFnZSBmaWxlIHZpYSAtW05TRmlsZVdyYXBwZXIgd3JpdGVUb1VSTDpvcHRp
b25zOm9yaWdpbmFsQ29udGVudHNVUkw6ZXJyb3I6XSIpOwogCiAgICAgaWYgKCFtX3Byb21pc2Vk
VVJMLmlzRW1wdHkoKSkKLSAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6c2V0TWV0YWRhdGFV
UkwoU3RyaW5nKHBhdGgpLCBtX3Byb21pc2VkVVJMKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6c2V0
TWV0YWRhdGFVUkwoU3RyaW5nKHBhdGgpLCBtX3Byb21pc2VkVVJMKTsKICAgICAKICAgICByZXR1
cm4gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0OltwYXRoIGxhc3RQYXRoQ29tcG9uZW50XV07CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3Rv
cmFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFn
ZS5jcHAKaW5kZXggZTYwZWUzZjRmOTRiMDMyZDM5OWI3YTM3N2E3ZThmOWNjYTIzNzUxZC4uMTlh
N2ExMmNmYTNmMzFiZjFlMjEzN2MzNWNkNTdkMGE1MDdiOWE5ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9yYWdlLmNwcApAQCAtMjgsOSAr
MjgsOSBAQAogCiAjaW5jbHVkZSAiUGVyc2lzdGVuY3lVdGlscy5oIgogCi0jaW5jbHVkZSA8V2Vi
Q29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNp
bmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaD4KKyNpbmNsdWRlIDx3
dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KICNpbmNsdWRlIDx3
dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcApp
bmRleCA3NTEwMmVlM2IwMDQyNGE0ODA5NDE1ZjM2YjA0ZWQzYjUzY2FkMTQ4Li5lMDkyNTRiMDE4
NzI0OWM5OTJmYzJmY2Q3Mjg4OGU3ODRiMTkzMzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwCkBAIC0zNiw4ICszNiw4IEBA
CiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bv
b2wuaCIKICNpbmNsdWRlICJXZWJQcm90ZWN0aW9uU3BhY2UuaCIKLSNpbmNsdWRlIDxXZWJDb3Jl
L0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL01JTUVUeXBlUmVnaXN0cnkuaD4KKyNp
bmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9CdWJibGV3cmFwTGF1bmNoZXIuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9CdWJibGV3cmFwTGF1bmNoZXIuY3Bw
CmluZGV4IGU0MzRlMDMzMzk4N2E5Mjc0OWMwMGRkYzViNTMzNjA5MDRkZWYxYmUuLjE2NzIzZGZk
ZGE0ZmFkYmI5MmFhN2VhMGE4ZTZhZTU4ODRmMmQwNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvQnViYmxld3JhcExhdW5jaGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9nbGliL0J1YmJsZXdyYXBMYXVuY2hlci5j
cHAKQEAgLTIwLDEyICsyMCwxMiBAQAogCiAjaWYgRU5BQkxFKEJVQkJMRVdSQVBfU0FOREJPWCkK
IAotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxh
dGZvcm1EaXNwbGF5Lmg+CiAjaW5jbHVkZSA8ZmNudGwuaD4KICNpbmNsdWRlIDxnbGliLmg+CiAj
aW5jbHVkZSA8c2VjY29tcC5oPgogI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgorI2luY2x1ZGUgPHd0
Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR0xpYlV0aWxpdGllcy5oPgogI2lu
Y2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRy
Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9nbGliL1By
b2Nlc3NMYXVuY2hlckdMaWIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIv
Z2xpYi9Qcm9jZXNzTGF1bmNoZXJHTGliLmNwcAppbmRleCBjNTY2MTg3M2EwNWU3MTA5YjUxN2Vh
NzViZGZhYmNjZDhmMjNmYjg2Li4wYzM5MDczZmUxZGU3YWRhZjUzMTI2ODNkODE2NDYyZjY0ZDNl
YzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9nbGliL1By
b2Nlc3NMYXVuY2hlckdMaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5j
aGVyL2dsaWIvUHJvY2Vzc0xhdW5jaGVyR0xpYi5jcHAKQEAgLTMxLDEwICszMSwxMCBAQAogI2lu
Y2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJGbGF0cGFrTGF1bmNoZXIuaCIKICNpbmNs
dWRlICJQcm9jZXNzRXhlY3V0YWJsZVBhdGguaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0
ZW0uaD4KICNpbmNsdWRlIDxlcnJuby5oPgogI2luY2x1ZGUgPGZjbnRsLmg+CiAjaW5jbHVkZSA8
Z2xpYi5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxv
b3AuaD4KICNpbmNsdWRlIDx3dGYvVW5pU3RkRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIv
R0xpYlV0aWxpdGllcy5oPgpAQCAtNDcsNyArNDcsNiBAQAogI2VuZGlmCiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHN0YXRpYyB2b2lkIGNoaWxkU2V0
dXBGdW5jdGlvbihncG9pbnRlciB1c2VyRGF0YSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1BsdWdpbkluZm9DYWNoZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9QbHVnaW5zL2d0ay9QbHVnaW5JbmZvQ2FjaGUuY3BwCmluZGV4IDgwNjQ3
ZWIxMmVlNTI1MTFhMTE5ZTg1ZmRlMmY1OWM0ZTIzNzc4ODUuLmEyOGEwMGEzODZjYWZlY2IzNzgy
YTQxMTAzN2NhOWE1MzVkYzIyMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1BsdWdpbnMvZ3RrL1BsdWdpbkluZm9DYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUGx1Z2lucy9ndGsvUGx1Z2luSW5mb0NhY2hlLmNwcApAQCAtMjksOCArMjksOCBAQAog
I2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogCiAjaW5jbHVkZSAiTmV0c2NhcGVQbHVn
aW5Nb2R1bGUuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1BsYXRmb3JtRGlzcGxheS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTY2
LDEwICs2NiwxMCBAQCBQbHVnaW5JbmZvQ2FjaGU6OlBsdWdpbkluZm9DYWNoZSgpCiAgICAgbV9z
YXZlVG9GaWxlSWRsZS5zZXRQcmlvcml0eShHX1BSSU9SSVRZX0RFRkFVTFRfSURMRSk7CiAKICAg
ICBHVW5pcXVlUHRyPGNoYXI+IGNhY2hlRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRf
dXNlcl9jYWNoZV9kaXIoKSwgIndlYmtpdGd0ayIsIG51bGxwdHIpKTsKLSAgICBpZiAoV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKGNhY2hlRGlyZWN0b3J5LmdldCgpKSkg
eworICAgIGlmIChGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoY2FjaGVEaXJlY3Rvcnku
Z2V0KCkpKSB7CiAgICAgICAgIC8vIERlbGV0ZSBvbGQgY2FjaGUgZmlsZS4KICAgICAgICAgR1Vu
aXF1ZVB0cjxjaGFyPiBvbGRDYWNoZVBhdGgoZ19idWlsZF9maWxlbmFtZShjYWNoZURpcmVjdG9y
eS5nZXQoKSwgInBsdWdpbnMiLCBudWxscHRyKSk7Ci0gICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0
ZW06OmRlbGV0ZUZpbGUoV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihvbGRDYWNoZVBhdGguZ2V0KCkpKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6
ZGVsZXRlRmlsZShGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KG9sZENhY2hlUGF0aC5nZXQoKSkpOwogCiAgICAgICAgIG1fY2FjaGVQYXRoLnJlc2V0KGdfYnVp
bGRfZmlsZW5hbWUoY2FjaGVEaXJlY3RvcnkuZ2V0KCksIGNhY2hlRmlsZW5hbWVGb3JDdXJyZW50
RGlzcGxheSgpLCBudWxscHRyKSk7CiAgICAgICAgIGdfa2V5X2ZpbGVfbG9hZF9mcm9tX2ZpbGUo
bV9jYWNoZUZpbGUuZ2V0KCksIG1fY2FjaGVQYXRoLmdldCgpLCBHX0tFWV9GSUxFX05PTkUsIG51
bGxwdHIpOwpAQCAtMTEyLDcgKzExMiw3IEBAIGJvb2wgUGx1Z2luSW5mb0NhY2hlOjpnZXRQbHVn
aW5JbmZvKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgUGx1Z2luTW9kdWxlSW5mbyYKICAgICBp
ZiAoIWdfa2V5X2ZpbGVfaGFzX2dyb3VwKG1fY2FjaGVGaWxlLmdldCgpLCBwbHVnaW5Hcm91cC5k
YXRhKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIGxhc3RNb2RpZmllZFRp
bWUgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShwbHVnaW5Q
YXRoKTsKKyAgICBhdXRvIGxhc3RNb2RpZmllZFRpbWUgPSBGaWxlU3lzdGVtOjpnZXRGaWxlTW9k
aWZpY2F0aW9uVGltZShwbHVnaW5QYXRoKTsKICAgICBpZiAoIWxhc3RNb2RpZmllZFRpbWUpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB0aW1lX3QgY2FjaGVkTGFzdE1vZGlmaWVkID0gc3Rh
dGljX2Nhc3Q8dGltZV90PihnX2tleV9maWxlX2dldF91aW50NjQobV9jYWNoZUZpbGUuZ2V0KCks
IHBsdWdpbkdyb3VwLmRhdGEoKSwgIm10aW1lIiwgbnVsbHB0cikpOwpAQCAtMTIwLDcgKzEyMCw3
IEBAIGJvb2wgUGx1Z2luSW5mb0NhY2hlOjpnZXRQbHVnaW5JbmZvKGNvbnN0IFN0cmluZyYgcGx1
Z2luUGF0aCwgUGx1Z2luTW9kdWxlSW5mbyYKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
cGx1Z2luLnBhdGggPSBwbHVnaW5QYXRoOwotICAgIHBsdWdpbi5pbmZvLmZpbGUgPSBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUocGx1Z2luUGF0aCk7CisgICAgcGx1Z2luLmlu
Zm8uZmlsZSA9IEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShwbHVnaW5QYXRoKTsKIAogICAg
IEdVbmlxdWVQdHI8Y2hhcj4gc3RyaW5nVmFsdWUoZ19rZXlfZmlsZV9nZXRfc3RyaW5nKG1fY2Fj
aGVGaWxlLmdldCgpLCBwbHVnaW5Hcm91cC5kYXRhKCksICJuYW1lIiwgbnVsbHB0cikpOwogICAg
IHBsdWdpbi5pbmZvLm5hbWUgPSBTdHJpbmc6OmZyb21VVEY4KHN0cmluZ1ZhbHVlLmdldCgpKTsK
QEAgLTE0MCw3ICsxNDAsNyBAQCBib29sIFBsdWdpbkluZm9DYWNoZTo6Z2V0UGx1Z2luSW5mbyhj
b25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIFBsdWdpbk1vZHVsZUluZm8mCiAKIHZvaWQgUGx1Z2lu
SW5mb0NhY2hlOjp1cGRhdGVQbHVnaW5JbmZvKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgY29u
c3QgUGx1Z2luTW9kdWxlSW5mbyYgcGx1Z2luKQogewotICAgIGF1dG8gbGFzdE1vZGlmaWVkVGlt
ZSA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKHBsdWdpblBh
dGgpOworICAgIGF1dG8gbGFzdE1vZGlmaWVkVGltZSA9IEZpbGVTeXN0ZW06OmdldEZpbGVNb2Rp
ZmljYXRpb25UaW1lKHBsdWdpblBhdGgpOwogICAgIGlmICghbGFzdE1vZGlmaWVkVGltZSkKICAg
ICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVn
aW5zL21hYy9QbHVnaW5Qcm9jZXNzUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9QbHVnaW5zL21hYy9QbHVnaW5Qcm9jZXNzUHJveHlNYWMubW0KaW5kZXggODlmYWI1ZWNiNjY2
ZDJiNDRmY2MyMjM5ZWJlNWJhNWVlMWFjNjNkOC4uMzYzM2MyYWIwNzA2MDExZWJkN2JjMTNmMWEw
YmZkYTVhZDZkZDliYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lu
cy9tYWMvUGx1Z2luUHJvY2Vzc1Byb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1BsdWdpbnMvbWFjL1BsdWdpblByb2Nlc3NQcm94eU1hYy5tbQpAQCAtMzMsMTEgKzMzLDEx
IEBACiAjaW1wb3J0ICJQbHVnaW5Qcm9jZXNzTWVzc2FnZXMuaCIKICNpbXBvcnQgIlNhbmRib3hV
dGlsaXRpZXMuaCIKICNpbXBvcnQgPFF1YXJ0ekNvcmUvQ0FSZW1vdGVMYXllclNlcnZlci5oPgot
I2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDxjcnRfZXh0ZXJucy5oPgog
I2ltcG9ydCA8bWFjaC1vL2R5bGQuaD4KICNpbXBvcnQgPHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJ
Lmg+CiAjaW1wb3J0IDxzcGF3bi5oPgorI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbXBv
cnQgPHd0Zi9Qcm9jZXNzUHJpdmlsZWdlLmg+CiAjaW1wb3J0IDx3dGYvVVJMLmg+CiAjaW1wb3J0
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC01Nyw4ICs1Nyw2IEBAIC0gKEJPT0wpX3dhbnRzVXNl
ckF0dGVudGlvbgogQGVuZAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKLXVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwotCiAgICAgCiB2b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6cGxhdGZvcm1HZXRMYXVu
Y2hPcHRpb25zV2l0aEF0dHJpYnV0ZXMoUHJvY2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zJiBs
YXVuY2hPcHRpb25zLCBjb25zdCBQbHVnaW5Qcm9jZXNzQXR0cmlidXRlcyYgcGx1Z2luUHJvY2Vz
c0F0dHJpYnV0ZXMpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVn
aW5zL3VuaXgvUGx1Z2luSW5mb1N0b3JlVW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9QbHVnaW5zL3VuaXgvUGx1Z2luSW5mb1N0b3JlVW5peC5jcHAKaW5kZXggMWRmZDgwN2MxMjM5
YzMwNzllZjkyNDA3NDUwYjg5ZWM5MTE5Y2YwYy4uYWEwOTQ3MzY4MTY1NGE5ZWY2NDQwNmIyYzY0
MzkwM2Y3ZTAxMjYzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lu
cy91bml4L1BsdWdpbkluZm9TdG9yZVVuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5JbmZvU3RvcmVVbml4LmNwcApAQCAtMzQsMTAgKzM0LDEw
IEBACiAjaW5jbHVkZSAiTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaCIKICNpbmNsdWRlICJQbHVnaW5T
ZWFyY2hQYXRoLmgiCiAjaW5jbHVkZSAiUHJvY2Vzc0V4ZWN1dGFibGVQYXRoLmgiCi0jaW5jbHVk
ZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybURpc3Bs
YXkuaD4KICNpbmNsdWRlIDxsaW1pdHMuaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRl
IDx3dGYvRmlsZVN5c3RlbS5oPgogCiAjaWYgUExBVEZPUk0oR1RLKQogI2luY2x1ZGUgIlBsdWdp
bkluZm9DYWNoZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lu
cy91bml4L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUGx1Z2lucy91bml4L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3BwCmluZGV4IGY4OTYxMjE3
MGQwMTExNjA0MzJlZWVlYTNkOWI4OGEzNTM4YjcxMjIuLmM1MDBjMGZjZWE2Mjc4ODZiYWRkZGMz
ZmM5NTBjNmM0ZWEzOGJjMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Bs
dWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJveHlVbml4LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAKQEAgLTMy
LDkgKzMyLDkgQEAKIAogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
aCIKICNpbmNsdWRlICJQcm9jZXNzRXhlY3V0YWJsZVBhdGguaCIKLSNpbmNsdWRlIDxXZWJDb3Jl
L0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtRGlzcGxheS5oPgogI2lu
Y2x1ZGUgPHN5cy93YWl0Lmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNz
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQ
cm94eS5jcHAKaW5kZXggNzI2ODgzYjNjZjgwZjQ4ZjJkYmZhNTYzZmM5YmY3YzU1ZDU3MDA2Zi4u
NWJjZGE2M2E4NmIwZTFmOGU5NjQ2MTk0MzA5OTI2Y2JhNTFmMmQxNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5jcHAKQEAg
LTY0LDcgKzY0LDcgQEAgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eTo6flNlcnZpY2VXb3JrZXJQ
cm9jZXNzUHJveHkoKQogYm9vbCBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5OjpoYXNSZWdpc3Rl
cmVkU2VydmljZVdvcmtlcnMoY29uc3QgU3RyaW5nJiBzZXJ2aWNlV29ya2VyRGlyZWN0b3J5KQog
ewogICAgIFN0cmluZyByZWdpc3RyYXRpb25GaWxlID0gV2ViQ29yZTo6c2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbkRhdGFiYXNlRmlsZW5hbWUoc2VydmljZVdvcmtlckRpcmVjdG9yeSk7Ci0gICAg
cmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVFeGlzdHMocmVnaXN0cmF0aW9uRmlsZSk7
CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMocmVnaXN0cmF0aW9uRmlsZSk7CiB9
CiAKIHZvaWQgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eTo6Z2V0TGF1bmNoT3B0aW9ucyhQcm9j
ZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMmIGxhdW5jaE9wdGlvbnMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJh
c2UuY3BwCmluZGV4IDBjMjVkNjU3ZTk3NzZhNzQ3NGQyMDU1ZmRmNTQ4NzJhMDBkOGVkZGIuLjQ2
ZmI2Yzc3Mjk0ZjNjNjMxZDRmZmZkZmMyNGExNDhmNzA4YTQ0Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJh
c2UuY3BwCkBAIC0yNywxMiArMjcsMTIgQEAKICNpbmNsdWRlICJMb2NhbFN0b3JhZ2VEYXRhYmFz
ZS5oIgogCiAjaW5jbHVkZSAiTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmgiCi0jaW5jbHVk
ZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVTdGF0ZW1l
bnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZVRyYW5zYWN0aW9uLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3RvcmFnZU1hcC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU3VkZGVuVGVybWluYXRpb24uaD4KKyNpbmNsdWRlIDx3dGYv
RmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvV29y
a1F1ZXVlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRy
YWNrZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3Jh
Z2VEYXRhYmFzZVRyYWNrZXIuY3BwCmluZGV4IGFmZmQ3ZThhY2FlMmRlY2I1Yzg0NGU4NzNiNTZm
N2QxNTNkMGFjOTYuLmMzNzgxZGY2NzY5MDBjNjk0YmUxNGJmZTZhZTM2NDliYzE4ODkwYzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdl
RGF0YWJhc2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJTdG9y
YWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5jcHAKQEAgLTI3LDEwICsyNywxMCBAQAog
I2luY2x1ZGUgIkxvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5oIgogCiAjaW5jbHVkZSAiTG9n
Z2luZy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvU1FMaXRlRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlU3RhdGVtZW50
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0RW5jb2RpbmcuaD4KKyNpbmNsdWRlIDx3dGYvRmls
ZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1J1
bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0
YVN0b3JlQ29jb2EubW0KaW5kZXggNDI3YTljODVhM2I5ODQ1YWU0Zjc1NGZiNGM3YTM5MjYzYzhj
MTdjOS4uNjE5MDA1MDAwNThkNWE4ZTA3NDhjYjM2MmMxZjc2YjQ0NTRlMmIyMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFT
dG9yZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0Nv
Y29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQpAQCAtMzAsMTAgKzMwLDEwIEBACiAjaW1wb3J0
ICJTdG9yYWdlTWFuYWdlci5oIgogI2ltcG9ydCAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmgiCiAjaW1wb3J0ICJXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oIgotI2ltcG9ydCA8
V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlv
bkNoZWNrcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZWFyY2hQb3B1cE1lbnVDb2NvYS5oPgogI2lt
cG9ydCA8cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4KKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVt
Lmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbXBvcnQgPHd0Zi9Qcm9jZXNz
UHJpdmlsZWdlLmg+CiAKQEAgLTEyMSw3ICsxMjEsNyBAQCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1l
dGVycyBXZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0ZXJzKCkKICAgICBwYXJhbWV0ZXJzLnBlbmRp
bmdDb29raWVzID0gY29weVRvVmVjdG9yKG1fcGVuZGluZ0Nvb2tpZXMpOwogCiAgICAgaWYgKCFj
b29raWVGaWxlLmlzRW1wdHkoKSkKLSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFu
ZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRpcmVjdG9yeU5h
bWUoY29va2llRmlsZSksIHBhcmFtZXRlcnMuY29va2llU3RvcmFnZVBhdGhFeHRlbnNpb25IYW5k
bGUpOworICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVE
aXJlY3RvcnkoRmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShjb29raWVGaWxlKSwgcGFyYW1ldGVy
cy5jb29raWVTdG9yYWdlUGF0aEV4dGVuc2lvbkhhbmRsZSk7CiAKICNpZiBFTkFCTEUoSU5ERVhF
RF9EQVRBQkFTRSkKICAgICBwYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSA9IHJl
c29sdmVkSW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IGIx
OGZjZTc5MDZmOGUyYmI4YzViZDI0NjQ0NjA2MDhlNGNjZmVhZGQuLjJhNTkwYzRiZDVlMTk4N2U1
NWFlNjE0ODZkYWM4YWNmMzE3MzY2MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC00NCw3ICs0NCw2
IEBACiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EYXRh
YmFzZVRyYWNrZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0hUTUxNZWRpYUVsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL09yaWdpbkxv
Y2suaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CkBAIC01Miw2ICs1MSw3
IEBACiAjaW5jbHVkZSA8d3RmL0NhbGxiYWNrQWdncmVnYXRvci5oPgogI2luY2x1ZGUgPHd0Zi9D
b21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZENvcGllci5oPgor
I2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL1Byb2Nlc3NQcml2aWxl
Z2UuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogCkBAIC0xOTMsOCArMTkzLDggQEAgdm9p
ZCBXZWJzaXRlRGF0YVN0b3JlOjpyZXNvbHZlRGlyZWN0b3JpZXNJZk5lY2Vzc2FyeSgpCiAKICAg
ICAvLyBSZXNvbHZlIGRpcmVjdG9yaWVzIGZvciBmaWxlIHBhdGhzLgogICAgIGlmICghbV9jb25m
aWd1cmF0aW9uLT5jb29raWVTdG9yYWdlRmlsZSgpLmlzRW1wdHkoKSkgewotICAgICAgICBtX3Jl
c29sdmVkQ29uZmlndXJhdGlvbi0+c2V0Q29va2llU3RvcmFnZUZpbGUocmVzb2x2ZUFuZENyZWF0
ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24oV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6ZGlyZWN0b3J5TmFtZShtX2NvbmZpZ3VyYXRpb24tPmNvb2tpZVN0b3JhZ2VGaWxlKCkpKSk7
Ci0gICAgICAgIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5zZXRDb29raWVTdG9yYWdlRmlsZShX
ZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9yZXNvbHZlZENv
bmZpZ3VyYXRpb24tPmNvb2tpZVN0b3JhZ2VGaWxlKCksIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBh
dGhHZXRGaWxlTmFtZShtX2NvbmZpZ3VyYXRpb24tPmNvb2tpZVN0b3JhZ2VGaWxlKCkpKSk7Cisg
ICAgICAgIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5zZXRDb29raWVTdG9yYWdlRmlsZShyZXNv
bHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihGaWxlU3lz
dGVtOjpkaXJlY3RvcnlOYW1lKG1fY29uZmlndXJhdGlvbi0+Y29va2llU3RvcmFnZUZpbGUoKSkp
KTsKKyAgICAgICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPnNldENvb2tpZVN0b3JhZ2VGaWxl
KEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3Jlc29sdmVkQ29uZmlndXJh
dGlvbi0+Y29va2llU3RvcmFnZUZpbGUoKSwgRmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKG1f
Y29uZmlndXJhdGlvbi0+Y29va2llU3RvcmFnZUZpbGUoKSkpKTsKICAgICB9CiB9CiAKQEAgLTIy
NjUsNyArMjI2NSw3IEBAIFZlY3RvcjxQbHVnaW5Nb2R1bGVJbmZvPiBXZWJzaXRlRGF0YVN0b3Jl
OjpwbHVnaW5zKCkgY29uc3QKIAogc3RhdGljIFN0cmluZyBjb21wdXRlTWVkaWFLZXlGaWxlKGNv
bnN0IFN0cmluZyYgbWVkaWFLZXlEaXJlY3RvcnkpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtZWRpYUtleURpcmVjdG9yeSwgIlNl
Y3VyZVN0b3AucGxpc3QiKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KG1lZGlhS2V5RGlyZWN0b3J5LCAiU2VjdXJlU3RvcC5wbGlzdCIpOwogfQogCiBW
ZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBXZWJzaXRlRGF0YVN0b3JlOjptZWRp
YUtleU9yaWdpbnMoY29uc3QgU3RyaW5nJiBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KQpAQCAt
MjI3NCwxMiArMjI3NCwxMiBAQCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBX
ZWJzaXRlRGF0YVN0b3JlOjptZWRpYUtleU9yaWdpbnMoY29uc3QgU3RyaQogCiAgICAgVmVjdG9y
PFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gb3JpZ2luczsKIAotICAgIGZvciAoY29uc3Qg
YXV0byYgb3JpZ2luUGF0aCA6IFdlYkNvcmU6OkZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobWVk
aWFLZXlzU3RvcmFnZURpcmVjdG9yeSwgIioiKSkgeworICAgIGZvciAoY29uc3QgYXV0byYgb3Jp
Z2luUGF0aCA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobWVkaWFLZXlzU3RvcmFnZURpcmVj
dG9yeSwgIioiKSkgewogICAgICAgICBhdXRvIG1lZGlhS2V5RmlsZSA9IGNvbXB1dGVNZWRpYUtl
eUZpbGUob3JpZ2luUGF0aCk7Ci0gICAgICAgIGlmICghV2ViQ29yZTo6RmlsZVN5c3RlbTo6Zmls
ZUV4aXN0cyhtZWRpYUtleUZpbGUpKQorICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVFeGlz
dHMobWVkaWFLZXlGaWxlKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGF1dG8g
bWVkaWFLZXlJZGVudGlmaWVyID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1l
KG9yaWdpblBhdGgpOworICAgICAgICBhdXRvIG1lZGlhS2V5SWRlbnRpZmllciA9IEZpbGVTeXN0
ZW06OnBhdGhHZXRGaWxlTmFtZShvcmlnaW5QYXRoKTsKIAogICAgICAgICBpZiAoYXV0byBzZWN1
cml0eU9yaWdpbiA9IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNlSWRl
bnRpZmllcihtZWRpYUtleUlkZW50aWZpZXIpKQogICAgICAgICAgICAgb3JpZ2lucy5hcHBlbmQo
KnNlY3VyaXR5T3JpZ2luKTsKQEAgLTIyOTIsMTggKzIyOTIsMTggQEAgdm9pZCBXZWJzaXRlRGF0
YVN0b3JlOjpyZW1vdmVNZWRpYUtleXMoY29uc3QgU3RyaW5nJiBtZWRpYUtleXNTdG9yYWdlRGly
ZWN0b3J5LAogewogICAgIEFTU0VSVCghbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5
KCkpOwogCi0gICAgZm9yIChjb25zdCBhdXRvJiBtZWRpYUtleURpcmVjdG9yeSA6IFdlYkNvcmU6
OkZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSwgIioi
KSkgeworICAgIGZvciAoY29uc3QgYXV0byYgbWVkaWFLZXlEaXJlY3RvcnkgOiBGaWxlU3lzdGVt
OjpsaXN0RGlyZWN0b3J5KG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnksICIqIikpIHsKICAgICAg
ICAgYXV0byBtZWRpYUtleUZpbGUgPSBjb21wdXRlTWVkaWFLZXlGaWxlKG1lZGlhS2V5RGlyZWN0
b3J5KTsKIAotICAgICAgICBhdXRvIG1vZGlmaWNhdGlvblRpbWUgPSBXZWJDb3JlOjpGaWxlU3lz
dGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShtZWRpYUtleUZpbGUpOworICAgICAgICBhdXRv
IG1vZGlmaWNhdGlvblRpbWUgPSBGaWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZSht
ZWRpYUtleUZpbGUpOwogICAgICAgICBpZiAoIW1vZGlmaWNhdGlvblRpbWUpCiAgICAgICAgICAg
ICBjb250aW51ZTsKIAogICAgICAgICBpZiAobW9kaWZpY2F0aW9uVGltZS52YWx1ZSgpIDwgbW9k
aWZpZWRTaW5jZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIFdlYkNvcmU6OkZp
bGVTeXN0ZW06OmRlbGV0ZUZpbGUobWVkaWFLZXlGaWxlKTsKLSAgICAgICAgV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkobWVkaWFLZXlEaXJlY3RvcnkpOworICAgICAg
ICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1lZGlhS2V5RmlsZSk7CisgICAgICAgIEZpbGVTeXN0
ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KG1lZGlhS2V5RGlyZWN0b3J5KTsKICAgICB9CiB9CiAK
QEAgLTIzMTIsMTEgKzIzMTIsMTEgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVNZWRp
YUtleXMoY29uc3QgU3RyaW5nJiBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5LAogICAgIEFTU0VS
VCghbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpOwogCiAgICAgZm9yIChjb25z
dCBhdXRvJiBvcmlnaW4gOiBvcmlnaW5zKSB7Ci0gICAgICAgIGF1dG8gbWVkaWFLZXlEaXJlY3Rv
cnkgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobWVkaWFL
ZXlzU3RvcmFnZURpcmVjdG9yeSwgb3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICAg
ICAgYXV0byBtZWRpYUtleURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5LCBvcmlnaW4uZGF0YWJhc2VJZGVudGlm
aWVyKCkpOwogICAgICAgICBhdXRvIG1lZGlhS2V5RmlsZSA9IGNvbXB1dGVNZWRpYUtleUZpbGUo
bWVkaWFLZXlEaXJlY3RvcnkpOwogCi0gICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0
ZUZpbGUobWVkaWFLZXlGaWxlKTsKLSAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRl
RW1wdHlEaXJlY3RvcnkobWVkaWFLZXlEaXJlY3RvcnkpOworICAgICAgICBGaWxlU3lzdGVtOjpk
ZWxldGVGaWxlKG1lZGlhS2V5RmlsZSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5
RGlyZWN0b3J5KG1lZGlhS2V5RGlyZWN0b3J5KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Byb3h5R0xpYi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQcm94eUdMaWIuY3BwCmluZGV4IDhm
NWZhMDNmZjQ2NTMyZjZiNTgyNTc5ZTk5YjAxN2IwNjU0MGFlYTUuLjE2OWVhMjAxMjViMDMwNjM3
ZmFmYzA3NDdjYTg2OTg1ODU0OTViOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2dsaWIvV2ViUHJvY2Vzc1Byb3h5R0xpYi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUHJveHlHTGliLmNwcApAQCAtMzEsOCArMzEsOCBAQAogI2Vu
ZGlmCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0
b3JlLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9QbGF0Zm9ybURpc3BsYXkuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAKaW5kZXggY2Ex
ODdhNjQyMzQxMTJlODU3OWJkODYxNjJkOWI4M2ZiNDI5YzgzYS4uMTZiMDJhNDM1NzZlNTZmMWFl
MjI2M2EwZGY0ZjA2NzMyMzRkYmUwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvZ3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwCkBAIC00Miw5ICs0Miw5IEBACiAjaW5j
bHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL0NlcnRpZmljYXRlSW5mby5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmls
ZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3RrVXRpbGl0aWVzLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViUHJvY2Vz
c1Bvb2xHdGsuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NQb29s
R3RrLmNwcAppbmRleCA2MjQwNDE1ZjE1NzI3OWU0YmZjMGM1NmEyY2RhOGI2MjI1OTA2OWY2Li42
YjIzNTc0MDRlMDNhZTMwMjFhZTg4MGI2M2E4Y2VjMGVlODZmMGY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc1Bvb2xHdGsuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQcm9jZXNzUG9vbEd0ay5jcHAKQEAgLTM0LDEwICsz
NCwxMCBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNs
dWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9SZW1v
dGVJbnNwZWN0b3JTZXJ2ZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0dTdHJlYW1lckNvbW1vbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90
SW1wbGVtZW50ZWQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NjaGVtZVJlZ2lzdHJ5Lmg+CisjaW5j
bHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCA2Njgx
OGM2ZWFlODk3MWM3YTRjMGUyNjA1OTljMzU3ZmYxYTgzNmM4Li45NjQ2NmEyZTNhY2U1YzAyOGUz
MzA4ZWQ3ZDAxZTQzMjJlMzUzMzdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTU2OTAsNyArNTY5MCw3
IEBAIC0gKHZvaWQpX3ByZXBhcmVUb0RyYWdQcm9taXNlZEF0dGFjaG1lbnQ6KGNvbnN0IFdlYkNv
cmU6OlByb21pc2VkQXR0YWNobWVudEluZm8mCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIAotICAgICAgICBOU1N0cmluZyAqdGVtcG9yYXJ5QmxvYkRpcmVjdG9yeSA9IFdlYkNvcmU6
OkZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShAImJsb2JzIik7CisgICAgICAg
IE5TU3RyaW5nICp0ZW1wb3JhcnlCbG9iRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6Y3JlYXRlVGVt
cG9yYXJ5RGlyZWN0b3J5KEAiYmxvYnMiKTsKICAgICAgICAgTlNVUkwgKmRlc3RpbmF0aW9uVVJM
ID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpbdGVtcG9yYXJ5QmxvYkRpcmVjdG9yeSBzdHJpbmdC
eUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6W05TVVVJRCBVVUlEXS5VVUlEU3RyaW5nXSBpc0RpcmVj
dG9yeTpOT107CiAKICAgICAgICAgYXV0byBhdHRhY2htZW50ID0gc3Ryb25nU2VsZi0+X3BhZ2Ut
PmF0dGFjaG1lbnRGb3JJZGVudGlmaWVyKGluZm8uYXR0YWNobWVudElkZW50aWZpZXIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRmlsZVVwbG9hZFBh
bmVsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRmlsZVVwbG9hZFBh
bmVsLm1tCmluZGV4IDY4MDE2NDZkMDhmOWQwOWZlM2U3Mzk4Mzg0NTcyOWJlMjExZDVhYTYuLjg3
NzExNGZjZjI2NmU5OTJhZWJkZDkwMzYwNDA2YTFkODk3NTFkZjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0ZpbGVVcGxvYWRQYW5lbC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGaWxlVXBsb2FkUGFuZWwubW0KQEAg
LTYyMCw3ICs2MjAsNyBAQCAtICh2b2lkKV91cGxvYWRJdGVtRm9ySW1hZ2VEYXRhOihOU0RhdGEg
KilpbWFnZURhdGEgaW1hZ2VOYW1lOihOU1N0cmluZyAqKWltYWdlTgogICAgIE5TU3RyaW5nICog
Y29uc3Qga1RlbXBvcmFyeURpcmVjdG9yeU5hbWUgPSBAIldLV2ViRmlsZVVwbG9hZCI7CiAKICAg
ICAvLyBCdWlsZCB0ZW1wb3JhcnkgZmlsZSBwYXRoLgotICAgIE5TU3RyaW5nICp0ZW1wb3JhcnlE
aXJlY3RvcnkgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpjcmVhdGVUZW1wb3JhcnlEaXJlY3Rvcnko
a1RlbXBvcmFyeURpcmVjdG9yeU5hbWUpOworICAgIE5TU3RyaW5nICp0ZW1wb3JhcnlEaXJlY3Rv
cnkgPSBGaWxlU3lzdGVtOjpjcmVhdGVUZW1wb3JhcnlEaXJlY3Rvcnkoa1RlbXBvcmFyeURpcmVj
dG9yeU5hbWUpOwogICAgIE5TU3RyaW5nICpmaWxlUGF0aCA9IFt0ZW1wb3JhcnlEaXJlY3Rvcnkg
c3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmltYWdlTmFtZV07CiAgICAgaWYgKCFmaWxl
UGF0aCkgewogICAgICAgICBMT0dfRVJST1IoIldLRmlsZVVwbG9hZFBhbmVsOiBGYWlsZWQgdG8g
Y3JlYXRlIHRlbXBvcmFyeSBkaXJlY3RvcnkgdG8gc2F2ZSBpbWFnZSIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KaW5kZXggNjJiZTQxMGYyM2Iw
ZTJjMzMwMzBiYjA5YzFlNjJmMWM4YjIwZTFjMC4uODMwMDRkNzBhODE3NzcxNjE4Mzg0ZDRkOGYy
ODE1Y2YyMTFhNzc2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dl
YlBhZ2VQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFn
ZVByb3h5TWFjLm1tCkBAIC00OTUsNyArNDk1LDcgQEAgc3RhdGljIE5TU3RyaW5nICpwYXRoVG9Q
REZPbkRpc2soY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSkKIAogdm9pZCBXZWJQYWdl
UHJveHk6OnNhdmVQREZUb1RlbXBvcmFyeUZvbGRlckFuZE9wZW5XaXRoTmF0aXZlQXBwbGljYXRp
b25SYXcoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBvcmln
aW5hdGluZ1VSTFN0cmluZywgY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbG9uZyBzaXpl
LCBjb25zdCBTdHJpbmcmIHBkZlVVSUQpCiB7Ci0gICAgLy8gRklYTUU6IFdyaXRlIG9yaWdpbmF0
aW5nVVJMU3RyaW5nIHRvIHRoZSBmaWxlJ3Mgb3JpZ2luYXRpbmcgVVJMIG1ldGFkYXRhIChwZXJo
YXBzIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnNldE1ldGFkYXRhVVJMKCk/KS4KKyAgICAvLyBGSVhN
RTogV3JpdGUgb3JpZ2luYXRpbmdVUkxTdHJpbmcgdG8gdGhlIGZpbGUncyBvcmlnaW5hdGluZyBV
UkwgbWV0YWRhdGEgKHBlcmhhcHMgRmlsZVN5c3RlbTo6c2V0TWV0YWRhdGFVUkwoKT8pLgogICAg
IFVOVVNFRF9QQVJBTShvcmlnaW5hdGluZ1VSTFN0cmluZyk7CiAKICAgICBpZiAoIXN1Z2dlc3Rl
ZEZpbGVuYW1lLmVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoIi5wZGYiKSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlByb2Nlc3NQb29sV2luLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJQcm9jZXNzUG9vbFdpbi5jcHAKaW5kZXggMTAx
NWZmMDYwNmNmNGJiNGNmNTYyYTA3ODkyODg3MzM2NTZmOWVkNi4uMzkwYTBjOTAxOTIxOTQzM2M1
ZmE0OWQzZTM4NDRhMWI4MzU1MjhjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3Mvd2luL1dlYlByb2Nlc3NQb29sV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy93aW4vV2ViUHJvY2Vzc1Bvb2xXaW4uY3BwCkBAIC0yOCw4ICsyOCw4IEBACiAjaW5jbHVkZSAi
V2ViUHJvY2Vzc1Bvb2wuaCIKIAogI2luY2x1ZGUgIldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L05vdEltcGxlbWVudGVkLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9X
ZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcAppbmRl
eCBlZjc5MTljNzIwZmU3MTdiNTkwOTE5YmI4NWI0NTgxODViYTUwZmIxLi4wZjlmOWQ0ZWZkNTI4
NmM2MjY4NDNhYzNhMDRjZDJlNmJkOTQ5OWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2lu
L1dlYlZpZXcuY3BwCkBAIC00NCw3ICs0NCw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9CaXRtYXBJ
bmZvLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DdXJzb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Vk
aXRvci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvRmxvYXRSZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IV25kREMuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0ludFJlY3QuaD4KQEAgLTU1LDYgKzU0LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1dp
bmRvd3NUb3VjaC5oPgogI2luY2x1ZGUgPGNhaXJvLXdpbjMyLmg+CiAjaW5jbHVkZSA8Y2Fpcm8u
aD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9Tb2Z0TGlua2lu
Zy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0J1aWxkZXIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L3dwZS9XZWJQcm9jZXNzUG9vbFdQRS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93cGUv
V2ViUHJvY2Vzc1Bvb2xXUEUuY3BwCmluZGV4IDYyNTVjNDI3YjdhMWJhNWNmZWVkMGNiMzdkZTVj
MDJjMGJjY2U1ZDEuLmY1MTAxN2E4Y2EyOWVkMDc5OTRkN2QyMDdjOTU3MTQxMTJhMzhiZjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dwZS9XZWJQcm9jZXNzUG9vbFdQRS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd3BlL1dlYlByb2Nlc3NQb29sV1BFLmNw
cApAQCAtMzQsMTAgKzM0LDEwIEBACiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlclByb3h5Lmgi
CiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldl
YlByb2Nlc3NNZXNzYWdlcy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NjaGVt
ZVJlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8Y3N0ZGxpYj4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3Rl
bS5oPgogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvUmVtb3RlSW5zcGVjdG9yU2VydmVyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0RXh0ZW5zaW9uTWFuYWdl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIv
V2ViS2l0RXh0ZW5zaW9uTWFuYWdlci5jcHAKaW5kZXggYWFjMjgyODBjYTUyMGJmODM5NjViNzk0
YzNlMzRmZWFmYzYxZWU3NS4uNGNjZWM2MmVmMGUxMTMxZmExM2Y3ZmIwNjBjODBlMDdlZTQyNTFh
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9nbGliL1dlYktpdEV4dGVuc2lvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRFeHRlbnNpb25NYW5hZ2VyLmNw
cApAQCAtMjMsOCArMjMsOCBAQAogI2luY2x1ZGUgIkFQSVN0cmluZy5oIgogI2luY2x1ZGUgIklu
amVjdGVkQnVuZGxlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViRXh0ZW5zaW9uUHJpdmF0ZS5oIgot
I2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNs
dWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAog
bmFtZXNwYWNlIFdlYktpdCB7CkBAIC00MSw5ICs0MSw5IEBAIFdlYktpdEV4dGVuc2lvbk1hbmFn
ZXI6OldlYktpdEV4dGVuc2lvbk1hbmFnZXIoKQogCiB2b2lkIFdlYktpdEV4dGVuc2lvbk1hbmFn
ZXI6OnNjYW5Nb2R1bGVzKGNvbnN0IFN0cmluZyYgd2ViRXh0ZW5zaW9uc0RpcmVjdG9yeSwgVmVj
dG9yPFN0cmluZz4mIG1vZHVsZXMpCiB7Ci0gICAgVmVjdG9yPFN0cmluZz4gbW9kdWxlUGF0aHMg
PSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KHdlYkV4dGVuc2lvbnNEaXJlY3Rv
cnksIFN0cmluZygiKi5zbyIpKTsKKyAgICBWZWN0b3I8U3RyaW5nPiBtb2R1bGVQYXRocyA9IEZp
bGVTeXN0ZW06Omxpc3REaXJlY3Rvcnkod2ViRXh0ZW5zaW9uc0RpcmVjdG9yeSwgU3RyaW5nKCIq
LnNvIikpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbW9kdWxlUGF0aHMuc2l6ZSgpOyAr
K2kpIHsKLSAgICAgICAgaWYgKFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobW9kdWxl
UGF0aHNbaV0pKQorICAgICAgICBpZiAoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhtb2R1bGVQYXRo
c1tpXSkpCiAgICAgICAgICAgICBtb2R1bGVzLmFwcGVuZChtb2R1bGVQYXRoc1tpXSk7CiAgICAg
fQogfQpAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgdm9pZCBwYXJzZVVzZXJEYXRhKEFQSTo6T2Jq
ZWN0KiB1c2VyRGF0YSwgU3RyaW5nJiB3ZWJFeHRlbnNpb25zRGlyZWN0b3J5LAogICAgIEdWYXJp
YW50KiBkYXRhID0gbnVsbHB0cjsKICAgICBnX3ZhcmlhbnRfZ2V0KHZhcmlhbnQuZ2V0KCksICIo
bSZzbXYpIiwgJmRpcmVjdG9yeSwgJmRhdGEpOwogCi0gICAgd2ViRXh0ZW5zaW9uc0RpcmVjdG9y
eSA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oZGlyZWN0b3J5KTsKKyAgICB3ZWJFeHRlbnNpb25zRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6
c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihkaXJlY3RvcnkpOwogICAgIGluaXRp
YWxpemF0aW9uVXNlckRhdGEgPSBhZG9wdEdSZWYoZGF0YSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9nbGliL0luamVjdGVkQnVuZGxl
R2xpYi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvZ2xpYi9J
bmplY3RlZEJ1bmRsZUdsaWIuY3BwCmluZGV4IDBhODYwNjUyZjAwZGFkOTMyOGNmMzU1ZDQwNTEz
ZmU4MGY1ZWY2NTguLmVkOTY1OGNhMWY0NmE0Yzc3Y2M3MjYwMzMwZDE2MGFhZDI4ODI3NmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9nbGliL0lu
amVjdGVkQnVuZGxlR2xpYi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL2dsaWIvSW5qZWN0ZWRCdW5kbGVHbGliLmNwcApAQCAtMjksMTEgKzI5LDEwIEBA
CiAKICNpbmNsdWRlICJXS0J1bmRsZUFQSUNhc3QuaCIKICNpbmNsdWRlICJXS0J1bmRsZUluaXRp
YWxpemUuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYv
RmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogbmFtZXNwYWNl
IFdlYktpdCB7Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogYm9vbCBJbmplY3RlZEJ1bmRs
ZTo6aW5pdGlhbGl6ZShjb25zdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiwgQVBJOjpP
YmplY3QqIGluaXRpYWxpemF0aW9uVXNlckRhdGEpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1h
bmFnZXIuY3BwCmluZGV4IDRiZjQ4ZDBlOTRlZWY3NjA2NmNhMzBlYTljZjM1NzA0YWIzZGVhZWIu
LmJkMzk4MjQyNmM2NmU2MzViNmM1NjA1Y2JlNWEzYjA1MDI1ZDNhMWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFn
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlh
S2V5U3RvcmFnZU1hbmFnZXIuY3BwCkBAIC0yNyw5ICsyNyw5IEBACiAjaW5jbHVkZSAiV2ViTWVk
aWFLZXlTdG9yYWdlTWFuYWdlci5oIgogCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2lu
RGF0YS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5o
PgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5oCmlu
ZGV4IGJiNmE1YjA4YzdjY2U1ZGRlZDg5OTM2MGY3YWI4MzQwZjAzOTVlNzQuLjNlZGNlYzZhNzJj
Y2MzYWE2NGQ4MTlmYTkzMzdmNDNlNjJlN2Q3NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5T
dHJlYW0uaApAQCAtMjcsOSArMjcsOSBAQAogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9B
UEkpCiAKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L25wcnVudGltZV9pbnRlcm5hbC5oPgogI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx3dGYv
RmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC04OSw3ICs4OSw3IEBAIHBy
aXZhdGU6CiAgICAgaW50MzJfdCBtX29mZnNldDsKIAogICAgIFN0cmluZyBtX2ZpbGVQYXRoOwot
ICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBtX2ZpbGVIYW5kbGU7
CisgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIG1fZmlsZUhhbmRsZTsKICAgICAK
ICAgICAvLyBXaGV0aGVyIE5QUF9OZXdTdHJlYW0gaGFzIHN1Y2Nlc3NmdWxseSBiZWVuIGNhbGxl
ZC4KICAgICBib29sIG1faXNTdGFydGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDAx
YzUzZjNkODQzZGQxZDI0MzE0ZjVjYzBjMTJlOTA5NjRlZmJiZTQuLjI2ZDZkNTAwZTY5YTAxOTNi
MWRmNWY0MDNmMWYzZjE4YzJjOGVkNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTM2
LDEwICszNiw5IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIldlYlByb2Nl
c3NQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNPYmplY3QuaD4K
LSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3Rl
bS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBQ
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oUGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKiBwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIsIHVp
bnQ2NF90IHBsdWdpblByb2Nlc3NUb2tlbiwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNv
bm5lY3Rpb25JZGVudGlmaWVyLCBib29sIHN1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlh
bGl6YXRpb24pCiAgICAgOiBtX3BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcihwbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5j
cHAKaW5kZXggNjNjMzZhM2RiNjlhODJhZDNiZWE2NjBmNmIwNmRmZTc2M2M1NTYxNy4uMWQ4MTY2
YTA3ZTNmZDk3ODgxY2I3ZjQ0ZjRhNmJlZmY4NWJiZmU1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3Rh
dGVDb252ZXJzaW9uLmNwcApAQCAtMjgsOSArMjgsOSBAQAogCiAjaW5jbHVkZSAiU2Vzc2lvblN0
YXRlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9CbG9iRGF0YS5oPgotI2luY2x1ZGUgPFdlYkNvcmUv
RmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRm9ybURhdGEuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0hpc3RvcnlJdGVtLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJJbnNwZWN0b3JVSUd0ay5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViSW5zcGVjdG9yVUlHdGsu
Y3BwCmluZGV4IDg5YzNiYTFhYTg5MzljZmE1MWY2ZmIyMjFhNzNiMzhkNzgwMzI3YTMuLmRiYjJh
OTE4MDRiZTEzMjY0OGM5YWQzM2U2ZjAyN2JkZDNmMTEwZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJJbnNwZWN0b3JVSUd0ay5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYkluc3BlY3RvclVJR3RrLmNw
cApAQCAtMjgsOCArMjgsOCBAQAogI2luY2x1ZGUgIldlYkluc3BlY3RvclVJLmgiCiAjaW5jbHVk
ZSAiUmVtb3RlV2ViSW5zcGVjdG9yVUkuaCIKIAotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3Rl
bS5oPgogI2luY2x1ZGUgPGdsaWIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9XZWJJbnNwZWN0b3JV
SVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93aW4vV2ViSW5zcGVj
dG9yVUlXaW4uY3BwCmluZGV4IDZhN2FmM2M1ZDY0OWM1MDRlZWRhZDQ5YzkxYTFmYjQ0MzVlNGEx
OGMuLjQ3MTExNGNhZmExNGE3ZDFmMzNmZmEyYzFlOGFmYmJiZWQyZTAzYTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9XZWJJbnNwZWN0b3JVSVdpbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL1dlYkluc3BlY3Rv
clVJV2luLmNwcApAQCAtMjgsOCArMjgsOCBAQAogCiAjaW5jbHVkZSAiUmVtb3RlV2ViSW5zcGVj
dG9yVUkuaCIKIAotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvV2ViQ29yZUJ1bmRsZVdpbi5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5t
bSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KaW5k
ZXggYTQ0NjgxYzc3MjcxYzA0YTc5NmYwN2JiY2NhYzNiZWNjNDgxZjc1YS4uMzVkNTdkNWNlNjdi
NjU4NzYwNzkzZGNjN2M0MDkxNjlmODU4MGFmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCkBAIC01MSw3ICs1MSw2IEBACiAjaW1w
b3J0IDxXZWJDb3JlL0FYT2JqZWN0Q2FjaGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ1BVTW9uaXRv
ci5oPgogI2ltcG9ydCA8V2ViQ29yZS9EaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyLmg+Ci0j
aW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPFdlYkNvcmUvRm9udENhY2hl
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZvbnRDYXNjYWRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hp
c3RvcnlDb250cm9sbGVyLmg+CkBAIC03Miw2ICs3MSw3IEBACiAjaW1wb3J0IDxwYWwvc3BpL21h
Yy9OU0FjY2Vzc2liaWxpdHlTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvbWFjL05TQXBwbGljYXRp
b25TUEkuaD4KICNpbXBvcnQgPHN0ZGlvLmg+CisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgog
I2ltcG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CiAKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VBcmVh
U3luYy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNw
cAppbmRleCA0MDM5OTYwYjE0MGZjYjljNjNhNzZkNmQwNzcxM2EzYTMxODJjNWE0Li4xN2Q0ODk0
OTRkN2UwOTBkM2ZmNzM1ZWZmMjY0NDVlZmVjNmI5Mjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcApAQCAtMjgsMTEgKzI4LDExIEBACiAj
aW5jbHVkZSAiU3RvcmFnZUFyZWFJbXBsLmgiCiAjaW5jbHVkZSAiU3RvcmFnZVN5bmNNYW5hZ2Vy
LmgiCiAjaW5jbHVkZSAiU3RvcmFnZVRyYWNrZXIuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVT
eXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZURhdGFiYXNlVHJhY2tlci5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU1FMaXRlU3RhdGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TUUxp
dGVUcmFuc2FjdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3VkZGVuVGVybWluYXRpb24uaD4K
KyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+
CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9TdG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L1N0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmNwcAppbmRleCAzZThmZjY1ZWU2MGYyNzRkYzkw
NGViNThjMTE3NGVkNWNjMWE1NzRjLi4zNjkwOTVjZGFkMWQzNDcxMWEwNjc2ZDg3MzZhOTBlMTkz
ZTI5MDVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVN5
bmNNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVN5
bmNNYW5hZ2VyLmNwcApAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgIlN0b3JhZ2VTeW5jTWFu
YWdlci5oIgogCiAjaW5jbHVkZSAiU3RvcmFnZVRocmVhZC5oIgotI2luY2x1ZGUgPFdlYkNvcmUv
RmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3Rm
L01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCmluZGV4IDcxMDE0MGIx
YjEzM2EyZWI1OTM5NmQ3Njc0ODZkMjE4M2VjOTA0ODQuLmI5MzRkMWEzYjFiYWE4MzFhZGRmM2Fi
ZTVlMDc3MGFiMWNmNzdmYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFn
ZS9TdG9yYWdlVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0
b3JhZ2VUcmFja2VyLmNwcApAQCAtMjgsMTMgKzI4LDEzIEBACiAjaW5jbHVkZSAiU3RvcmFnZVRo
cmVhZC5oIgogI2luY2x1ZGUgIlN0b3JhZ2VUcmFja2VyQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2Vi
U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVt
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlR3JvdXAuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NR
TGl0ZURhdGFiYXNlVHJhY2tlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlU3RhdGVtZW50
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0RW5jb2Rpbmcu
aD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFk
Lmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNGaWxlTWFu
YWdlckV4dHJhcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNGaWxlTWFu
YWdlckV4dHJhcy5tbQppbmRleCA5MDUxNzRkYTc1NmRkNjI4YmVkZWZkNTBjMmIyMzcyOWU1MzM1
MDJiLi5jNTQxM2U4MWM2YTNlY2IyZWM5NzgxZjZiOGJmZDZjMmIyYTA1ZGYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TRmlsZU1hbmFnZXJFeHRyYXMubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU0ZpbGVNYW5hZ2VyRXh0cmFz
Lm1tCkBAIC0zMCwxMCArMzAsMTAgQEAKIAogI2ltcG9ydCAiV2ViS2l0TlNTdHJpbmdFeHRyYXMu
aCIKICNpbXBvcnQgIldlYk5TVVJMRXh0cmFzLmgiCi0jaW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0
ZW0uaD4KICNpbXBvcnQgPFdlYkNvcmUvTG9hZGVyTlNVUkxFeHRyYXMuaD4KICNpbXBvcnQgPHN5
cy9zdGF0Lmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgorI2ltcG9ydCA8d3RmL0ZpbGVT
eXN0ZW0uaD4KICNpbXBvcnQgPHd0Zi9PYmpDUnVudGltZUV4dHJhcy5oPgogCiBAaW1wbGVtZW50
YXRpb24gTlNGaWxlTWFuYWdlciAoV2ViTlNGaWxlTWFuYWdlckV4dHJhcykKQEAgLTQ0LDcgKzQ0
LDcgQEAgLSAodm9pZClfd2Via2l0X3NldE1ldGFkYXRhVVJMOihOU1N0cmluZyAqKVVSTFN0cmlu
ZyByZWZlcnJlcjooTlNTdHJpbmcgKilyZWZlcnIKIHsKICAgICBBU1NFUlQoVVJMU3RyaW5nKTsK
ICAgICBBU1NFUlQocGF0aCk7Ci0gICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6c2V0TWV0YWRhdGFV
UkwocGF0aCwgVVJMU3RyaW5nLCByZWZlcnJlcik7CisgICAgRmlsZVN5c3RlbTo6c2V0TWV0YWRh
dGFVUkwocGF0aCwgVVJMU3RyaW5nLCByZWZlcnJlcik7CiB9CiAKICNlbmRpZiAvLyAhUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKQEAgLTkzLDcgKzkzLDcgQEAgLSAoTlNTdHJpbmcgKilfd2Via2l0X3Bh
dGhXaXRoVW5pcXVlRmlsZW5hbWVGb3JQYXRoOihOU1N0cmluZyAqKXBhdGgKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogLSAoTlNTdHJpbmcgKilfd2Via2l0X2NyZWF0ZVRlbXBvcmFyeURpcmVj
dG9yeVdpdGhUZW1wbGF0ZVByZWZpeDooTlNTdHJpbmcgKilwcmVmaXgKIHsKLSAgICByZXR1cm4g
V2ViQ29yZTo6RmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KHByZWZpeCk7Cisg
ICAgcmV0dXJuIEZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShwcmVmaXgpOwog
fQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2Uv
V2ViRGF0YWJhc2VQcm92aWRlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2Uv
V2ViRGF0YWJhc2VQcm92aWRlci5tbQppbmRleCA3NDk1YjE3NWZmZjQ1ZGM1YTU0YjAxNGY4ZDVi
ZjAzZTU0Mzk0M2NjLi5hZGM0YzM5ODg0YzRjYjJkMmEzYmViNmIxOTViY2RhMDAwODljMTcxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlUHJv
dmlkZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFz
ZVByb3ZpZGVyLm1tCkBAIC0yNiwxNiArMjYsMTYgQEAKICNpbXBvcnQgIldlYkRhdGFiYXNlUHJv
dmlkZXIuaCIKICNpbXBvcnQgIldlYkRhdGFiYXNlTWFuYWdlclByaXZhdGUuaCIKIAotI2ltcG9y
dCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogCiBT
dHJpbmcgV2ViRGF0YWJhc2VQcm92aWRlcjo6aW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5UGF0aCgp
CiB7CiAgICAgTlNVc2VyRGVmYXVsdHMgKmRlZmF1bHRzID0gW05TVXNlckRlZmF1bHRzIHN0YW5k
YXJkVXNlckRlZmF1bHRzXTsKICAgICBOU1N0cmluZyAqZGF0YWJhc2VzRGlyZWN0b3J5ID0gW2Rl
ZmF1bHRzIG9iamVjdEZvcktleTpXZWJEYXRhYmFzZURpcmVjdG9yeURlZmF1bHRzS2V5XTsKICAg
ICBpZiAoIWRhdGFiYXNlc0RpcmVjdG9yeSB8fCAhW2RhdGFiYXNlc0RpcmVjdG9yeSBpc0tpbmRP
ZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQotICAgICAgICBkYXRhYmFzZXNEaXJlY3RvcnkgPSBX
ZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoIn4vTGlicmFyeS9X
ZWJLaXQvRGF0YWJhc2VzL19fX0luZGV4ZWREQiJfcywgW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBi
dW5kbGVJZGVudGlmaWVyXSk7CisgICAgICAgIGRhdGFiYXNlc0RpcmVjdG9yeSA9IEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCgifi9MaWJyYXJ5L1dlYktpdC9EYXRhYmFzZXMv
X19fSW5kZXhlZERCIl9zLCBbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJd
KTsKICAgICBlbHNlCi0gICAgICAgIGRhdGFiYXNlc0RpcmVjdG9yeSA9IFdlYkNvcmU6OkZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZXNEaXJlY3RvcnksICJfX19J
bmRleGVkREIiX3MpOworICAgICAgICBkYXRhYmFzZXNEaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGF0YWJhc2VzRGlyZWN0b3J5LCAiX19fSW5kZXhlZERC
Il9zKTsKICAgICAKICAgICByZXR1cm4gW2RhdGFiYXNlc0RpcmVjdG9yeSBzdHJpbmdCeVN0YW5k
YXJkaXppbmdQYXRoXTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbQppbmRleCBlZDBlMGRmNzliMDNkYTY2ZThhMjliY2VkOWNlYWE5M2NkNjY1ZThjLi4wMWM2
MDA1ZWIyYTJjMGQwNjRmMDZmOGRjNDRjMDM1M2Y0NzhmY2VjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC0xNDgsNyArMTQ4LDYgQEAKICNpbXBvcnQg
PFdlYkNvcmUvRWRpdG9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0V2ZW50Lmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0V2ZW50SGFuZGxlci5oPgotI2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0ZvY3VzQ29udHJvbGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9Gb250
QXR0cmlidXRlcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9Gb250Q2FjaGUuaD4KQEAgLTIzMSw2ICsy
MzAsNyBAQAogI2ltcG9ydCA8cGFsL3NwaS9tYWMvTlNTcGVsbENoZWNrZXJTUEkuaD4KICNpbXBv
cnQgPHBhbC9zcGkvbWFjL05TV2luZG93U1BJLmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5o
PgorI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0Zi9IYXNoVHJhaXRzLmg+
CiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgogI2ltcG9ydCA8d3RmL09iakNSdW50aW1lRXh0
cmFzLmg+CkBAIC02ODg1LDcgKzY4ODUsNyBAQCAtIChCT09MKXBlcmZvcm1EcmFnT3BlcmF0aW9u
OihpZCA8TlNEcmFnZ2luZ0luZm8+KWRyYWdnaW5nSW5mbwogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICB9CiAKLSAgICAgICAgTlNTdHJpbmcgKmRyb3BEZXN0aW5hdGlvblBhdGgg
PSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoQCJXZWJLaXRE
cm9wRGVzdGluYXRpb24iKTsKKyAgICAgICAgTlNTdHJpbmcgKmRyb3BEZXN0aW5hdGlvblBhdGgg
PSBGaWxlU3lzdGVtOjpjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoQCJXZWJLaXREcm9wRGVzdGlu
YXRpb24iKTsKICAgICAgICAgaWYgKCFkcm9wRGVzdGluYXRpb25QYXRoKSB7CiAgICAgICAgICAg
ICBkZWxldGUgZHJhZ0RhdGE7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCmluZGV4IGJj
NzlkODliZDQ0NmM1NmVhMWJhOWQ1N2M3NWFlMzk5YWE4ZjA0Y2YuLjY0MWFjMzU0YzM0MTk2N2Vh
NmNlZDY5MGQ1ZTZkNDVjNmMyYzJhMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVk
ZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9NRVRB
REFUQV9DQUNIRSkKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVT
eXN0ZW0uaD4KICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblBhY2thZ2UuaCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luUGFja2FnZS5oCmluZGV4IGI0ODgzZGVhOTk3NmRi
NTBjZGU1Mjg2MGFhOWI5MmI1YmIxMDEwZGYuLjg5ODdhM2QzNTNjNzZjMGFhNDQ2ZWFiMzkwODM3
MzMzOWQ1MTdkMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMv
UGx1Z2luUGFja2FnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1
Z2luUGFja2FnZS5oCkBAIC0yOSw4ICsyOSw4IEBACiAKICNpbmNsdWRlICJQbGF0Zm9ybU1vZHVs
ZS5oIgogI2luY2x1ZGUgIlBsdWdpblF1aXJrU2V0LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxl
U3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgorI2luY2x1ZGUgPHd0Zi9GaWxl
U3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luU3RyZWFtLmggYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblN0cmVhbS5oCmluZGV4IGMxYjlmODdhYzRlNjIy
ZmJiMmUyZTIwNWQxNjQ1OWMwYzE5NGU3YjYuLjQzMWIzNjMwMzYyYzllNTIxMTE4ZGQwMzI3M2E2
Y2Q5YzI4Y2M0NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMv
UGx1Z2luU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVn
aW5TdHJlYW0uaApAQCAtMjcsMTIgKzI3LDEyIEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUg
IlBsdWdpblF1aXJrU2V0LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3Bv
bnNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvbnBy
dW50aW1lX2ludGVybmFsLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8
d3RmL1VSTC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXBwbGlj
YXRpb25DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcHBsaWNhdGlvbkNh
Y2hlLmNwcAppbmRleCBiODVkZDE1NDQwYTZlYTU0MDRhOGE0ODUyMTQzZTU5MTc4ZmVjMTJkLi45
MGJlMWZjZTc1MWI0ZjFiNWQ5NGIxYmI2NzRjMzZiM2VjNTY5ZmNlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcHBsaWNhdGlvbkNhY2hlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJBcHBsaWNhdGlvbkNhY2hlLmNwcApAQCAtMzAsMTMgKzMwLDEz
IEBACiAjaW5jbHVkZSAiTWFyc2hhbGxpbmdIZWxwZXJzLmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVy
ZW5jZXMuaCIKICNpbmNsdWRlICJXZWJTZWN1cml0eU9yaWdpbi5oIgotI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0FwcGxpY2F0aW9uQ2FjaGUuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9DT01QdHIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8Y29tdXRpbC5oPgorI2luY2x1ZGUg
PHd0Zi9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViRGF0YWJhc2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFi
YXNlTWFuYWdlci5jcHAKaW5kZXggM2Y2YzM4YjA2MjhkYjRiYWNmOWM0MTM1N2I1OTFhN2RlYzlh
Y2Q0MS4uZjk5NjNmMWMwNjg5NmQ3YTJjYjJkNzMzYTE4ZWZhYWFmM2NlNDgwOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCkBAIC0zOSw5ICsz
OSw5IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9DT01QdHIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Rh
dGFiYXNlTWFuYWdlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGF0YWJhc2VUcmFja2VyLmg+Ci0j
aW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0
eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+CisjaW5j
bHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCiAj
aWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCkBAIC00MzYsNyArNDM2LDcgQEAgc3RhdGljIFdU
Rjo6U3RyaW5nIGRhdGFiYXNlc0RpcmVjdG9yeSgpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxDRlN0cmluZ1JlZj4oZGlyZWN0b3J5UHJlZi5nZXQoKSk7CiAjZW5kaWYKIAotICAgIHJldHVy
biBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6
RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJEYXRhYmFz
ZXMiKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZp
bGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiRGF0YWJhc2Vz
Iik7CiB9CiAKIHZvaWQgV2ViS2l0SW5pdGlhbGl6ZVdlYkRhdGFiYXNlc0lmTmVjZXNzYXJ5KCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkQ3VybC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZEN1cmwuY3BwCmluZGV4IDIwZDRm
NDA4MzVmNzI0MTM4ZjE3MjNhOGRjMmY5NGI4OTUyZWVlZDcuLjk5YjYyN2YxYWFjMDNhZWRmNTA2
ODdmYzdmMzM2YmI5NWQ5Y2RkMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkRvd25sb2FkQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93
bmxvYWRDdXJsLmNwcApAQCAtMzUsMjIgKzM1LDE5IEBACiAjaW5jbHVkZSAiV2ViVVJMQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UuaCIKICNpbmNsdWRlICJXZWJVUkxDcmVkZW50aWFsLmgiCiAjaW5j
bHVkZSAiV2ViVVJMUmVzcG9uc2UuaCIKLQotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
LQotI2luY2x1ZGUgPGlvLmg+Ci0jaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSNpbmNsdWRlIDxzeXMv
dHlwZXMuaD4KLQogI2luY2x1ZGUgPFdlYkNvcmUvQlN0cmluZy5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvQ3VybERvd25sb2FkLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3Vy
Y2VFcnJvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VS
ZXNwb25zZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dEVuY29kaW5nLmg+CisjaW5jbHVkZSA8
aW8uaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2lu
Y2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgog
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
UHJlZmVyZW5jZXMuY3BwCmluZGV4IGE2MzFiOTE2OTY3NzcyYmI4MGU3YzYzZTBmNWU1N2Y2ZjMy
NWM2OWUuLjAyNWMyMGJlYTIzOGNkNmE0OTVhMjUwZjZjNTUwY2E3ZjUyNzlkNjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKQEAgLTM4LDEzICszOCwxMyBA
QAogCiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0NPTVB0ci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvRm9udENhc2NhZGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xvY2FsaXpl
ZFN0cmluZ3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgog
I2luY2x1ZGUgPGxpbWl0cz4KICNpbmNsdWRlIDxzaGxvYmouaD4KICNpbmNsdWRlIDx3Y2hhci5o
PgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
ICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0
cmFzLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCmluZGV4IGU3NjE3NDRlMGQxYjg1
YWZmZDEwYjc3N2NkZDM3OTFhNGY3MWIzMWUuLmUzMzEwNjNhMGJmMGViZDgyMDA5MTUwNDA3NjI2
ZGU5YTE0MGU1MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCkBAIC05Niw3ICs5
Niw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9FZGl0b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0V2
ZW50SGFuZGxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRXZlbnROYW1lcy5oPgotI2luY2x1ZGUg
PFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRRdWFkLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9Gb2N1c0NvbnRyb2xsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Zv
bnQuaD4KQEAgLTE3MSw2ICsxNzAsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvV2luZG93c1RvdWNo
Lmg+CiAjaW5jbHVkZSA8Y29tZGVmLmg+CiAjaW5jbHVkZSA8ZDJkMS5oPgorI2luY2x1ZGUgPHd0
Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3
dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgogI2luY2x1ZGUgPHd0Zi9SQU1TaXplLmg+CkBAIC01MTMs
NyArNTEzLDcgQEAgdm9pZCBXZWJWaWV3OjpzZXRDYWNoZU1vZGVsKFdlYkNhY2hlTW9kZWwgY2Fj
aGVNb2RlbCkKICAgICAgICAgaWYgKHByZWZlcmVuY2UgJiYgKENGU3RyaW5nR2V0VHlwZUlEKCkg
PT0gQ0ZHZXRUeXBlSUQocHJlZmVyZW5jZS5nZXQoKSkpKQogICAgICAgICAgICAgY2Z1cmxDYWNo
ZURpcmVjdG9yeSA9IGFkb3B0Q0Yoc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KHByZWZlcmVuY2Uu
bGVha1JlZigpKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNmdXJsQ2FjaGVEaXJlY3Rv
cnkgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3Rv
cnkoKS5jcmVhdGVDRlN0cmluZygpOworICAgICAgICAgICAgY2Z1cmxDYWNoZURpcmVjdG9yeSA9
IEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLmNyZWF0ZUNG
U3RyaW5nKCk7CiAgICAgfQogICAgIGNhY2hlRGlyZWN0b3J5ID0gU3RyaW5nKGNmdXJsQ2FjaGVE
aXJlY3RvcnkuZ2V0KCkpOwogICAgIENGSW5kZXggY2FjaGVNZW1vcnlDYXBhY2l0eSA9IDA7CmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMzE2NWJk
NTc4MjVlNGEzMjA4Njk2NzVjY2IwYzQ3Y2RjMTc2MTI2Ni4uN2UzODE2MDc5MTliZjVmZGZlMjQ2
OGJlNjlkYmM2MGUzNjA4MmQyMiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE5LTAxLTIyICBSb3NzIEtpcnNsaW5n
ICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KKworICAgICAgICBNb3ZlIEZpbGVTeXN0ZW0gdG8g
V1RGCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM2
MDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHA6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1BsYXRmb3JtR1RL
LmNtYWtlOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvUGxhdGZvcm1KU0NPbmx5LmNtYWtlOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvUGxhdGZvcm1QbGF5U3RhdGlvbi5jbWFrZToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1BsYXRmb3JtV1BFLmNtYWtlOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwOiBSZW5hbWVkIGZyb20gVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVTeXN0ZW0uY3BwLgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRvci5jcHA6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmNwcDoKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5jcHA6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL0RhdGFiYXNlVHJhY2tlclRl
c3QubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2N1cmwvQ29va2ll
cy5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9h
ZC5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2Fk
UHJvZ3Jlc3MubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS93aW4vUGxhdGZvcm1VdGlsaXRp
ZXNXaW4uY3BwOgorCiAyMDE5LTAxLTIyICBBYWthc2ggSmFpbiAgPGFha2FzaF9qYWluQGFwcGxl
LmNvbT4KIAogICAgICAgICBbZXdzLWFwcF0gZmV0Y2ggbG9vcCBzaG91bGQgbm90IHN0b3Agb24g
bmV0d29yayBpc3N1ZXMKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1w
UmVuZGVyVHJlZS5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUu
Y3BwCmluZGV4IGE0YjVjNzcwNzA4OTBhNWNmMTQyZDJkOWM4YjNjMzM4NjQ4M2U2ZWQuLmEwYjY4
NWM3NWY5ZGFmMGZlYjdlYWFlMWJiMzJhMmU5NTJkMjI2ZjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcApAQCAtNDYsNyArNDYsNiBAQAogCiAjaW5jbHVk
ZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9UZXN0UnVubmVyVXRpbHMuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4K
ICNpbmNsdWRlIDxXZWJLaXRMZWdhY3kvV2ViS2l0Lmg+CiAjaW5jbHVkZSA8V2ViS2l0TGVnYWN5
L1dlYktpdENPTUFQSS5oPgogI2luY2x1ZGUgPGNvbXV0aWwuaD4KQEAgLTYwLDYgKzU5LDcgQEAK
ICNpbmNsdWRlIDxzaGx3YXBpLmg+CiAjaW5jbHVkZSA8dGNoYXIuaD4KICNpbmNsdWRlIDx3aW5k
b3dzLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNl
dC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRh
aW5QdHIuaD4KQEAgLTIyMiw3ICsyMjIsNyBAQCBzdGF0aWMgU3RyaW5nIGxpYnJhcnlQYXRoRm9y
RHVtcFJlbmRlclRyZWUoKQogICAgICAgICByZXR1cm4gU3RyaW5nIChwYXRoLmRhdGEoKSwgcGF0
aC5sZW5ndGgoKSk7CiAgICAgfQogCi0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06Omxv
Y2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpOworICAgIHJldHVybiBGaWxlU3lzdGVt
Ojpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKTsKIH0KICNlbmRpZgogCkBAIC05
MzEsOSArOTMxLDkgQEAgc3RhdGljIHZvaWQgc2V0RGVmYXVsdHNUb0NvbnNpc3RlbnRWYWx1ZXNG
b3JUZXN0aW5nKCkKICAgICBTdHJpbmcgbGlicmFyeVBhdGggPSBsaWJyYXJ5UGF0aEZvckR1bXBS
ZW5kZXJUcmVlKCk7CiAKICAgICAvLyBTZXQgdXAgdGhlc2UgdmFsdWVzIGJlZm9yZSBjcmVhdGlu
ZyB0aGUgV2ViVmlldyBzbyB0aGF0IHRoZSB2YXJpb3VzIGluaXRpYWxpemF0aW9ucyB3aWxsIHNl
ZSB0aGVzZSBwcmVmZXJyZWQgdmFsdWVzLgotICAgIENGUHJlZmVyZW5jZXNTZXRBcHBWYWx1ZShX
ZWJEYXRhYmFzZURpcmVjdG9yeURlZmF1bHRzS2V5LCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQobGlicmFyeVBhdGgsICJEYXRhYmFzZXMiKS5jcmVhdGVDRlN0
cmluZygpLmdldCgpLCBhcHBJZC5nZXQoKSk7Ci0gICAgQ0ZQcmVmZXJlbmNlc1NldEFwcFZhbHVl
KFdlYlN0b3JhZ2VEaXJlY3RvcnlEZWZhdWx0c0tleSwgV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGxpYnJhcnlQYXRoLCAiTG9jYWxTdG9yYWdlIikuY3JlYXRl
Q0ZTdHJpbmcoKS5nZXQoKSwgYXBwSWQuZ2V0KCkpOwotICAgIENGUHJlZmVyZW5jZXNTZXRBcHBW
YWx1ZShXZWJLaXRMb2NhbENhY2hlRGVmYXVsdHNLZXksIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChsaWJyYXJ5UGF0aCwgIkxvY2FsQ2FjaGUiKS5jcmVhdGVD
RlN0cmluZygpLmdldCgpLCBhcHBJZC5nZXQoKSk7CisgICAgQ0ZQcmVmZXJlbmNlc1NldEFwcFZh
bHVlKFdlYkRhdGFiYXNlRGlyZWN0b3J5RGVmYXVsdHNLZXksIEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChsaWJyYXJ5UGF0aCwgIkRhdGFiYXNlcyIpLmNyZWF0ZUNGU3RyaW5n
KCkuZ2V0KCksIGFwcElkLmdldCgpKTsKKyAgICBDRlByZWZlcmVuY2VzU2V0QXBwVmFsdWUoV2Vi
U3RvcmFnZURpcmVjdG9yeURlZmF1bHRzS2V5LCBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQobGlicmFyeVBhdGgsICJMb2NhbFN0b3JhZ2UiKS5jcmVhdGVDRlN0cmluZygpLmdl
dCgpLCBhcHBJZC5nZXQoKSk7CisgICAgQ0ZQcmVmZXJlbmNlc1NldEFwcFZhbHVlKFdlYktpdExv
Y2FsQ2FjaGVEZWZhdWx0c0tleSwgRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KGxpYnJhcnlQYXRoLCAiTG9jYWxDYWNoZSIpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGFwcElk
LmdldCgpKTsKICNlbmRpZgogfQogCkBAIC0xMDM1LDcgKzEwMzUsNyBAQCBzdGF0aWMgdm9pZCBz
aXplV2ViVmlld0ZvckN1cnJlbnRUZXN0KCkKIAogc3RhdGljIFN0cmluZyBmaW5kRm9udEZhbGxi
YWNrKGNvbnN0IGNoYXIqIHBhdGhPclVybCkKIHsKLSAgICBTdHJpbmcgcGF0aFRvRm9udEZhbGxi
YWNrID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShwYXRoT3JVcmwpOworICAg
IFN0cmluZyBwYXRoVG9Gb250RmFsbGJhY2sgPSBGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKHBh
dGhPclVybCk7CiAKICAgICB3Y2hhcl90IGZ1bGxQYXRoW19NQVhfUEFUSF07CiAgICAgaWYgKCFf
d2Z1bGxwYXRoKGZ1bGxQYXRoLCBwYXRoVG9Gb250RmFsbGJhY2suY2hhcmFjdGVyc1dpdGhOdWxs
VGVybWluYXRpb24oKS5kYXRhKCksIF9NQVhfUEFUSCkpCkBAIC0xMDU0LDIwICsxMDU0LDIwIEBA
IHN0YXRpYyBTdHJpbmcgZmluZEZvbnRGYWxsYmFjayhjb25zdCBjaGFyKiBwYXRoT3JVcmwpCiAg
ICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCiAgICAgU3RyaW5nIHBhdGhUb1Rlc3QgPSBw
YXRoVG9DaGVjay5zdWJzdHJpbmcobG9jYXRpb24gKyBsYXlvdXRUZXN0cy5sZW5ndGgoKSArIDEp
OwotICAgIFN0cmluZyBwb3NzaWJsZVBhdGhUb0xvZ3VlID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhdGhUb0NoZWNrLnN1YnN0cmluZygwLCBsb2NhdGlv
biArIGxheW91dFRlc3RzLmxlbmd0aCgpICsgMSksICJwbGF0Zm9ybVxcd2luIik7CisgICAgU3Ry
aW5nIHBvc3NpYmxlUGF0aFRvTG9ndWUgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQocGF0aFRvQ2hlY2suc3Vic3RyaW5nKDAsIGxvY2F0aW9uICsgbGF5b3V0VGVzdHMubGVu
Z3RoKCkgKyAxKSwgInBsYXRmb3JtXFx3aW4iKTsKIAogICAgIFZlY3RvcjxTdHJpbmc+IHBvc3Np
YmxlUGF0aHM7Ci0gICAgcG9zc2libGVQYXRocy5hcHBlbmQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBvc3NpYmxlUGF0aFRvTG9ndWUsIHBhdGhUb1Rlc3Qp
KTsKKyAgICBwb3NzaWJsZVBhdGhzLmFwcGVuZChGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQocG9zc2libGVQYXRoVG9Mb2d1ZSwgcGF0aFRvVGVzdCkpOwogCiAgICAgc2l6ZV90
IG5leHRDYW5kaWRhdGVFbmQgPSBwYXRoVG9UZXN0LnJldmVyc2VGaW5kKCdcXCcpOwogICAgIHdo
aWxlIChuZXh0Q2FuZGlkYXRlRW5kICYmIG5leHRDYW5kaWRhdGVFbmQgIT0gV1RGOjpub3RGb3Vu
ZCkgewogICAgICAgICBwYXRoVG9UZXN0ID0gcGF0aFRvVGVzdC5zdWJzdHJpbmcoMCwgbmV4dENh
bmRpZGF0ZUVuZCk7Ci0gICAgICAgIHBvc3NpYmxlUGF0aHMuYXBwZW5kKFdlYkNvcmU6OkZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwb3NzaWJsZVBhdGhUb0xvZ3VlLCBwYXRo
VG9UZXN0KSk7CisgICAgICAgIHBvc3NpYmxlUGF0aHMuYXBwZW5kKEZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChwb3NzaWJsZVBhdGhUb0xvZ3VlLCBwYXRoVG9UZXN0KSk7CiAg
ICAgICAgIG5leHRDYW5kaWRhdGVFbmQgPSBwYXRoVG9UZXN0LnJldmVyc2VGaW5kKCdcXCcpOwog
ICAgIH0KIAogICAgIGZvciAoVmVjdG9yPFN0cmluZz46Oml0ZXJhdG9yIHBvcyA9IHBvc3NpYmxl
UGF0aHMuYmVnaW4oKTsgcG9zICE9IHBvc3NpYmxlUGF0aHMuZW5kKCk7ICsrcG9zKSB7Ci0gICAg
ICAgIHBhdGhUb0ZvbnRGYWxsYmFjayA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudCgqcG9zLCAicmVzb3VyY2VzXFwiKTsKKyAgICAgICAgcGF0aFRvRm9udEZh
bGxiYWNrID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KCpwb3MsICJyZXNv
dXJjZXNcXCIpOwogCiAgICAgICAgIGlmICg6OlBhdGhJc0RpcmVjdG9yeVcocGF0aFRvRm9udEZh
bGxiYWNrLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSkKICAgICAgICAg
ICAgIHJldHVybiBwYXRoVG9Gb250RmFsbGJhY2s7CkBAIC0xMDgxLDcgKzEwODEsNyBAQCBzdGF0
aWMgdm9pZCBhZGRGb250RmFsbGJhY2tJZlByZXNlbnQoY29uc3QgU3RyaW5nJiBmb250RmFsbGJh
Y2tQYXRoKQogICAgIGlmIChmb250RmFsbGJhY2tQYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgU3RyaW5nIGZvbnRGYWxsYmFjayA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChmb250RmFsbGJhY2tQYXRoLCAiTWFjLWNvbXBhdGlibGUt
Zm9udC1mYWxsYmFjay5jc3MiKTsKKyAgICBTdHJpbmcgZm9udEZhbGxiYWNrID0gRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGZvbnRGYWxsYmFja1BhdGgsICJNYWMtY29tcGF0
aWJsZS1mb250LWZhbGxiYWNrLmNzcyIpOwogCiAgICAgaWYgKCE6OlBhdGhGaWxlRXhpc3RzVyhm
b250RmFsbGJhY2suY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpKQogICAg
ICAgICByZXR1cm47CkBAIC0xMDk0LDcgKzEwOTQsNyBAQCBzdGF0aWMgdm9pZCByZW1vdmVGb250
RmFsbGJhY2tJZlByZXNlbnQoY29uc3QgU3RyaW5nJiBmb250RmFsbGJhY2tQYXRoKQogICAgIGlm
IChmb250RmFsbGJhY2tQYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3Ry
aW5nIGZvbnRGYWxsYmFjayA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChmb250RmFsbGJhY2tQYXRoLCAiTWFjLWNvbXBhdGlibGUtZm9udC1mYWxsYmFjay5j
c3MiKTsKKyAgICBTdHJpbmcgZm9udEZhbGxiYWNrID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KGZvbnRGYWxsYmFja1BhdGgsICJNYWMtY29tcGF0aWJsZS1mb250LWZhbGxi
YWNrLmNzcyIpOwogCiAgICAgaWYgKCE6OlBhdGhGaWxlRXhpc3RzVyhmb250RmFsbGJhY2suY2hh
cmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpKQogICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0IGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAppbmRleCBiMjQ5MDA4OThiM2ZjNWFmODljNDkwMzM4
MGMzZmQ3YzFkYzBkNzA1Li5kOWNlYThmNTgxZjZiMzAxZDI5MzVkNWRiNDViMDc3OTY5ZDRjMGRj
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKQEAgLTE4OCw3ICsxODgsMTQgQEAgc2V0
KFRlc3RXVEZfU09VUkNFUwogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9Xb3Jr
ZXJQb29sLmNwcAogKQogCi0jIEZJWE1FOiBUZXN0cy9XVEYvUnVuTG9vcC5jcHAgaXMgbWlzc2lu
ZyBiZWNhdXNlIGl0IGRvZXNuJ3Qgd29yayBmb3IgV2luZG93cy4KKyMgRklYTUU6IE1ha2UgdGhl
c2Ugd29yayBvbiBXaW5kb3dzIHRvby4KK2lmIChOT1QgV0lOMzIpCisgICAgbGlzdChBUFBFTkQg
VGVzdFdURl9TT1VSQ0VTCisgICAgICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9G
aWxlU3lzdGVtLmNwcAorICAgICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvUnVu
TG9vcC5jcHAKKyAgICApCitlbmRpZiAoKQorCiAjIEZJWE1FOiBQbGF0Zm9ybS1zcGVjaWZpYyBz
b3VyY2VzIGluIFRlc3RzL1dURiBhcmUgbm90IGluY2x1ZGVkIGluIFRlc3RXVEZfU09VUkNFUy4K
IAogV0VCS0lUX0lOQ0xVREVfQ09ORklHX0ZJTEVTX0lGX0VYSVNUUygpCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtR1RLLmNtYWtlIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCBjMzRmYWUwN2NmM2M2YjBhMzljMzk5ZmVlMzJjZDI1
YzNhMGFhN2Y0Li5jZTgyMWU2MWIwNTY0MzViMmVlZWU1ZTBlNTZiYTIzNTc3MjU4ODVlIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTkzLDcgKzkzLDYgQEAgYWRkX2V4
ZWN1dGFibGUoVGVzdFdlYkNvcmUKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJD
b3JlL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9U
ZXN0cy9XZWJDb3JlL0ROUy5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJD
b3JlL0ZpbGVNb25pdG9yLmNwcAotICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNv
cmUvRmlsZVN5c3RlbS5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3Jl
L2dzdHJlYW1lci9Hc3RNYXBwZWRCdWZmZXIuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0v
VGVzdHMvV2ViQ29yZS9nc3RyZWFtZXIvR1N0cmVhbWVyVGVzdC5jcHAKICAgICAke1RFU1RXRUJL
SVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL0dyaWRQb3NpdGlvbi5jcHAKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1KU0NPbmx5LmNtYWtlIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9QbGF0Zm9ybUpTQ09ubHkuY21ha2UKaW5kZXggYTNmYTJkYTk1NWQ1YTM5YzFjMzk2ODBj
MjFlOGNkZTZlOGZiNWM4MC4uYjU1Njk4YmJmYmY5NzMzYWMwOGUzNjkzNWE5OGJiMmI2OWVlMGI3
ZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUpTQ09ubHkuY21ha2UK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUpTQ09ubHkuY21ha2UKQEAgLTIxLDcg
KzIxLDMgQEAgZW5kaWYgKCkKIHNldCh0ZXN0X21haW5fU09VUkNFUwogICAgICR7VEVTVFdFQktJ
VEFQSV9ESVJ9L2dlbmVyaWMvbWFpbi5jcHAKICkKLQotbGlzdChBUFBFTkQgVGVzdFdURl9TT1VS
Q0VTCi0gICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL1J1bkxvb3AuY3BwCi0pCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtUGxheVN0YXRpb24uY21ha2Ug
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtUGxheVN0YXRpb24uY21ha2UKaW5kZXggOWYx
YTJhNjRkNTE4NDA0ZGE5ODZlNjY1MTI3MGY3ODhhMDVkOGU2Yy4uZjFmY2IwNDFjNzViMDcxNWYw
YTMyZmJkNDQwZWFjNGUwMTFjNDE3OSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Q
bGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtlCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZv
cm1QbGF5U3RhdGlvbi5jbWFrZQpAQCAtMTQsNSArMTQsNCBAQCBzZXQodGVzdF9tYWluX1NPVVJD
RVMKIAogbGlzdChBUFBFTkQgVGVzdFdURl9TT1VSQ0VTCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJ
Un0vZ2VuZXJpYy9VdGlsaXRpZXNHZW5lcmljLmNwcAotICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9
L1Rlc3RzL1dURi9SdW5Mb29wLmNwcAogKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9QbGF0Zm9ybVdQRS5jbWFrZSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1XUEUuY21h
a2UKaW5kZXggYjY4Nzc1OThkODc3ZGU2YzhkYTg2YjRlYjU3Y2M4NmZmMGEyZjdlZi4uNDI2N2Rh
MjBkMDcwYzQ3YmM4MWU0NmVjMmI3ZjJkMTNjMDc5OWQ3NiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9QbGF0Zm9ybVdQRS5jbWFrZQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Bs
YXRmb3JtV1BFLmNtYWtlCkBAIC02MCw3ICs2MCw2IEBAIGFkZF9leGVjdXRhYmxlKFRlc3RXZWJD
b3JlCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vZ2xpYi9VdGlsaXRpZXNHTGliLmNwcAogICAg
ICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzQ29udHJvbGxlci5jcHAKICAgICAke1RFU1RXRUJL
SVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNwcAotICAgICR7VEVTVFdFQktJ
VEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUvRmlsZVN5c3RlbS5jcHAKICAgICAke1RFU1RXRUJLSVRB
UElfRElSfS9UZXN0cy9XZWJDb3JlL2dzdHJlYW1lci9Hc3RNYXBwZWRCdWZmZXIuY3BwCiAgICAg
JHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV2ViQ29yZS9nc3RyZWFtZXIvR1N0cmVhbWVyVGVz
dC5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL0hUTUxQYXJzZXJJ
ZGlvbXMuY3BwCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktp
dEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDdhMTA3MmFjZGFhMmMyYWE1MDdj
ZGIyZmMyOTcwODEwODQ1YzNmMGEuLmY2NTI2OGU1ZmQzYjQxZDM2YjZmYzQ2ZDVmN2ViMmZjMWQx
ZTJjMDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktp
dEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00MjcsNyArNDI3LDYgQEAKIAkJN0M4
M0UwNEMxRDBBNjQxODAwRkVCQ0YzIC8qIFdlYkNvcmVOU1VSTFNlc3Npb24ubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDg5RDAzODFDNEVEQjJBMDAw
NDBBMDQgLyogV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbSAqLzsgfTsKIAkJN0M4M0UwNEQxRDBBNjQx
ODAwRkVCQ0YzIC8qIERGQUNvbWJpbmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDI2MEJBNTc4MUIxRDJFN0IwMDRGQTA3QyAvKiBERkFDb21iaW5l
ci5jcHAgKi87IH07CiAJCTdDODNFMDRFMUQwQTY0MTgwMEZFQkNGMyAvKiBERkFNaW5pbWl6ZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjZGNkUx
RUYxQURDNzQ5QjAwREU2OTZCIC8qIERGQU1pbmltaXplci5jcHAgKi87IH07Ci0JCTdDODNFMDRG
MUQwQTY0MTgwMEZFQkNGMyAvKiBGaWxlU3lzdGVtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOTczQjVBMUFGMjI4NkEwMDZDN0IzNiAvKiBGaWxl
U3lzdGVtLmNwcCAqLzsgfTsKIAkJN0M4M0UwNTAxRDBBNjQxODAwRkVCQ0YzIC8qIEhUTUxQYXJz
ZXJJZGlvbXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODNCODhBMzMxQzgwMDU2RDAwQkIyNDE4IC8qIEhUTUxQYXJzZXJJZGlvbXMuY3BwICovOyB9
OwogCQk3QzgzRTA1MTFEMEE2NDE4MDBGRUJDRjMgLyogUGFyc2VkQ29udGVudFJhbmdlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMjI1QzA3MUM0
NUE2OTIwMDE0MDc2MSAvKiBQYXJzZWRDb250ZW50UmFuZ2UuY3BwICovOyB9OwogCQk3QzgzRTA1
MjFEMEE2NDE4MDBGRUJDRjMgLyogU2hhcmVkQnVmZmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOTczQjVDMUFGMjI4NzUwMDZDN0IzNiAvKiBT
aGFyZWRCdWZmZXIuY3BwICovOyB9OwpAQCAtNjg5LDYgKzY4OCw3IEBACiAJCUExQzRGQjczMUJB
Q0QxQ0EwMDM3NDJEMCAvKiBwYWdlcy5wYWdlcyBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUM0RkI3MjFCQUNEMUI3MDAzNzQyRDAgLyogcGFn
ZXMucGFnZXMgKi87IH07CiAJCUExREY3NDMyMUM0MUI2NTgwMEEyRjREMCAvKiBBbHdheXNSZXZh
bGlkYXRlZFVSTFNjaGVtZXMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBMURGNzQzMDFDNDFCNjU4MDBBMkY0RDAgLyogQWx3YXlzUmV2YWxpZGF0ZWRV
UkxTY2hlbWVzLm1tICovOyB9OwogCQlBMUVDMTE4ODFGNDI1NDEyMDBEMDE0NkUgLyogUHJldmll
d0xvYWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBMUVDMTE4NzFGNDI1NDEyMDBEMDE0NkUgLyogUHJldmlld0xvYWRlci5jcHAgKi87IH07CisJ
CUEzMTA4MjcyMjFGMjk2RkYwMEMyOEI5NyAvKiBGaWxlU3lzdGVtLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzMTA4MjcxMjFGMjk2RUMwMEMyOEI5
NyAvKiBGaWxlU3lzdGVtLmNwcCAqLzsgfTsKIAkJQTU3QTM0RjIxNkFGNkIyQjAwQzI1MDFGIC8q
IFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlcy5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1N0EzNEYxMTZBRjY5RTIw
MEMyNTAxRiAvKiBQYWdlVmlzaWJpbGl0eVN0YXRlV2l0aFdpbmRvd0NoYW5nZXMuaHRtbCAqLzsg
fTsKIAkJQTU3RDU0RjMxRjMzOEMzNjAwQTk3QUE3IC8qIE5ldmVyRGVzdHJveWVkLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1N0Q1NEYyMUYzMzhD
MzYwMEE5N0FBNyAvKiBOZXZlckRlc3Ryb3llZC5jcHAgKi87IH07CiAJCUE1N0Q1NEY2MUYzMzk1
RDAwMEE5N0FBNyAvKiBMb2dnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTU3RDU0RjQxRjMzOTVEMDAwQTk3QUE3IC8qIExvZ2dlci5jcHAgKi87
IH07CkBAIC0xNTIwLDcgKzE1MjAsNiBAQAogCQk0MTM1RkI4MzIwMTFGQUEzMDAzMzIxMzkgLyog
SW5qZWN0SW50ZXJuYWxzX0J1bmRsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBJbmplY3RJbnRlcm5hbHNfQnVuZGxlLmNwcDsgcGF0aCA9IFRlc3RzL0luamVjdElu
dGVybmFsc19CdW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTQxMzVG
Qjg2MjAxMUZBQkYwMDMzMjEzOSAvKiBsaWJXZWJDb3JlVGVzdFN1cHBvcnQuZHlsaWIgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNo
LW8uZHlsaWIiOyBwYXRoID0gbGliV2ViQ29yZVRlc3RTdXBwb3J0LmR5bGliOyBzb3VyY2VUcmVl
ID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk0MTg4MkYwMjIxMDEwQTcwMDAyRkYyODggLyog
UHJvY2Vzc1ByZVdhcm1pbmcubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBQcm9jZXNzUHJlV2FybWluZy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
NDE5NzNCNUExQUYyMjg2QTAwNkM3QjM2IC8qIEZpbGVTeXN0ZW0uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmlsZVN5c3RlbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQxOTczQjVDMUFGMjI4NzUwMDZDN0IzNiAvKiBTaGFyZWRCdWZmZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVkQnVmZmVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDQyQkJGNjgxQzkxQ0FEOTAwMTcwODdGIC8q
IFJlZkxvZ2dlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWZM
b2dnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NDMzQTM5NTIwODA0NDEz
MDA5MUVENTcgLyogU3luY2hyb25vdXNUaW1lb3V0VGVzdHMubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTeW5jaHJvbm91c1RpbWVvdXRUZXN0cy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5MTcsNiArMTkxNiw3IEBACiAJCUExREY3NDMwMUM0
MUI2NTgwMEEyRjREMCAvKiBBbHdheXNSZXZhbGlkYXRlZFVSTFNjaGVtZXMubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBbHdheXNSZXZhbGlkYXRlZFVSTFNjaGVt
ZXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExRUMxMTg3MUY0MjU0MTIwMEQw
MTQ2RSAvKiBQcmV2aWV3TG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByZXZpZXdMb2Fk
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMUZERkQyRTE5QzI4OEJCMDA1
MTQ4QTQgLyogV0tJbWFnZUNyZWF0ZUNHSW1hZ2VDcmFzaC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXS0ltYWdlQ3JlYXRlQ0dJbWFnZUNyYXNoLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTMxMDgyNzEyMUYyOTZFQzAwQzI4Qjk3IC8qIEZpbGVT
eXN0ZW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmlsZVN5c3Rl
bS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1N0EzNEVGMTZBRjY3NzIwMEMy
NTAxRiAvKiBQYWdlVmlzaWJpbGl0eVN0YXRlV2l0aFdpbmRvd0NoYW5nZXMubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQYWdlVmlzaWJpbGl0eVN0YXRlV2l0aFdp
bmRvd0NoYW5nZXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1N0EzNEYxMTZB
RjY5RTIwMEMyNTAxRiAvKiBQYWdlVmlzaWJpbGl0eVN0YXRlV2l0aFdpbmRvd0NoYW5nZXMuaHRt
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2lu
ZG93Q2hhbmdlcy5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTdENTRGMjFG
MzM4QzM2MDBBOTdBQTcgLyogTmV2ZXJEZXN0cm95ZWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TmV2ZXJEZXN0cm95ZWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjY3Nyw3
ICsyNjc3LDYgQEAKIAkJCQk1Nzk2NTFFNjIxNkJGRDUzMDA2RUJGRTUgLyogRmlkb0hpZE1lc3Nh
Z2VUZXN0LmNwcCAqLywKIAkJCQk1NzJCNDAzNTIxNzZBMDI5MDAwQUQ0M0UgLyogRmlkb1Rlc3RE
YXRhLmggKi8sCiAJCQkJN0EzMkQ3NDkxRjAyMTUxNTAwMTYyQzQ0IC8qIEZpbGVNb25pdG9yLmNw
cCAqLywKLQkJCQk0MTk3M0I1QTFBRjIyODZBMDA2QzdCMzYgLyogRmlsZVN5c3RlbS5jcHAgKi8s
CiAJCQkJN0E5MDlBNzAxRDg3NzQ3NTAwN0UxMEY4IC8qIEZsb2F0UG9pbnQuY3BwICovLAogCQkJ
CTdBOTA5QTcxMUQ4Nzc0NzUwMDdFMTBGOCAvKiBGbG9hdFJlY3QuY3BwICovLAogCQkJCTdBOTA5
QTcyMUQ4Nzc0NzUwMDdFMTBGOCAvKiBGbG9hdFNpemUuY3BwICovLApAQCAtMzE4Nyw2ICszMTg2
LDcgQEAKIAkJCQlFNEE3NTdEMzE3OEFFQTVCMDBCNUQ3QTQgLyogRGVxdWUuY3BwICovLAogCQkJ
CTFBRjdCMjFEMUQ2Q0QxMkUwMDhDMTI2QyAvKiBFbnVtVHJhaXRzLmNwcCAqLywKIAkJCQlBRDdD
NDM0QzFERDJBNTQ3MDAyNjg4OEIgLyogRXhwZWN0ZWQuY3BwICovLAorCQkJCUEzMTA4MjcxMjFG
Mjk2RUMwMEMyOEI5NyAvKiBGaWxlU3lzdGVtLmNwcCAqLywKIAkJCQk5MzEwQ0QzNjFFRjcwOEZC
MDA1MEZGRTAgLyogRnVuY3Rpb24uY3BwICovLAogCQkJCTgzREI3OTY3MUVGNjNCM0MwMEJGQTVF
NSAvKiBGdW5jdGlvbi5jcHAgKi8sCiAJCQkJN0EzOEQ3RTUxQzc1MkQ1RjAwNEYxNTdEIC8qIEhh
c2hDb3VudGVkU2V0LmNwcCAqLywKQEAgLTM3OTUsNiArMzc5NSw3IEBACiAJCQkJN0M4M0RFQUQx
RDBBNTkwQzAwRkVCQ0YzIC8qIERlcXVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBRjdCMjFG
MUQ2Q0QxNEQwMDhDMTI2QyAvKiBFbnVtVHJhaXRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUFE
N0M0MzREMUREMkE1NEUwMDI2ODg4QiAvKiBFeHBlY3RlZC5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQlBMzEwODI3MjIxRjI5NkZGMDBDMjhCOTcgLyogRmlsZVN5c3RlbS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk5MzEwQ0QzODFFRjcwOEZCMDA1MEZGRTAgLyogRnVuY3Rpb24uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNkJGRDI5NEMxRDVFNkMxRDAwOEVDOTY4IC8qIEhhc2hDb3VudGVkU2V0LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTkzM0Q2MzFEMUZDQjc2MjAwMDMyRUNENiAvKiBIYXNoZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zOTk4LDcgKzM5OTksNiBAQAogCQkJCTdDQ0U3RUYxMUE0
MTFBRTYwMDQ0N0M0QyAvKiBGYWlsZWRMb2FkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTU3OTY1
MUU3MjE2QkZERUQwMDZFQkZFNSAvKiBGaWRvSGlkTWVzc2FnZVRlc3QuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJN0EzMkQ3NEExRjAyMTUxNTAwMTYyQzQ0IC8qIEZpbGVNb25pdG9yLmNwcCBpbiBT
b3VyY2VzICovLAotCQkJCTdDODNFMDRGMUQwQTY0MTgwMEZFQkNGMyAvKiBGaWxlU3lzdGVtLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUYzMUE0MTFBRTYwMDQ0N0M0QyAvKiBGaW5kLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNFMEJCMUQwQTY1MDAwMEZFQkNGMyAvKiBGaW5kSW5Q
YWdlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFRjQxQTQxMUFFNjAwNDQ3QzRDIC8qIEZp
bmRNYXRjaGVzLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL0ZpbGVTeXN0ZW0uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ1N2RmNjE0Mjk3ZjBhMjM3MjM5NWM3NmJm
NGM1OTE1YTU3NTc1ZmEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9GaWxlU3lzdGVtLmNwcApAQCAtMCwwICsxLDE0OCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJUZXN0LmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVN
ZXRhZGF0YS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8d3RmL01h
aW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvU3RyaW5nRXh0cmFzLmg+CisKK25hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJIHsKKworY29uc3QgY2hhciogRmlsZVN5c3RlbVRlc3REYXRhID0gIlRoaXMg
aXMgYSB0ZXN0IjsKKworLy8gRklYTUU6IFJlZmFjdG9yIEZpbGVTeXN0ZW1UZXN0IGFuZCBTaGFy
ZWRCdWZmZXJUZXN0IGFzIGEgc2luZ2xlIGNsYXNzLgorY2xhc3MgRmlsZVN5c3RlbVRlc3QgOiBw
dWJsaWMgdGVzdGluZzo6VGVzdCB7CitwdWJsaWM6CisgICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRl
CisgICAgeworICAgICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CisKKyAgICAgICAg
Ly8gY3JlYXRlIHRlbXAgZmlsZQorICAgICAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5k
bGUgaGFuZGxlOworICAgICAgICBtX3RlbXBGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1w
b3JhcnlGaWxlKCJ0ZW1wVGVzdEZpbGUiLCBoYW5kbGUpOworICAgICAgICBGaWxlU3lzdGVtOjp3
cml0ZVRvRmlsZShoYW5kbGUsIEZpbGVTeXN0ZW1UZXN0RGF0YSwgc3RybGVuKEZpbGVTeXN0ZW1U
ZXN0RGF0YSkpOworICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKKworICAg
ICAgICBtX3RlbXBGaWxlU3ltbGlua1BhdGggPSBtX3RlbXBGaWxlUGF0aCArICItc3ltbGluayI7
CisgICAgICAgIEZpbGVTeXN0ZW06OmNyZWF0ZVN5bWJvbGljTGluayhtX3RlbXBGaWxlUGF0aCwg
bV90ZW1wRmlsZVN5bWxpbmtQYXRoKTsKKworICAgICAgICBtX3RlbXBFbXB0eUZpbGVQYXRoID0g
RmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoInRlbXBFbXB0eVRlc3RGaWxlIiwgaGFuZGxl
KTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CisKKyAgICAgICAgbV9z
cGFjZUNvbnRhaW5pbmdGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0
ZW1wIEVtcHR5IFRlc3QgRmlsZSIsIGhhbmRsZSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmNsb3Nl
RmlsZShoYW5kbGUpOworCisgICAgICAgIG1fYmFuZ0NvbnRhaW5pbmdGaWxlUGF0aCA9IEZpbGVT
eXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wIUVtcHR5IVRlc3QhRmlsZSIsIGhhbmRsZSk7
CisgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUpOworCisgICAgICAgIG1fcXVv
dGVDb250YWluaW5nRmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVt
cFwiRW1wdHlcIlRlc3RGaWxlIiwgaGFuZGxlKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VG
aWxlKGhhbmRsZSk7CisgICAgfQorCisgICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCisgICAg
eworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fdGVtcEZpbGVQYXRoKTsKKyAgICAg
ICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX3RlbXBGaWxlU3ltbGlua1BhdGgpOworICAgICAg
ICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fdGVtcEVtcHR5RmlsZVBhdGgpOworICAgICAgICBG
aWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fc3BhY2VDb250YWluaW5nRmlsZVBhdGgpOworICAgICAg
ICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fYmFuZ0NvbnRhaW5pbmdGaWxlUGF0aCk7CisgICAg
ICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9xdW90ZUNvbnRhaW5pbmdGaWxlUGF0aCk7Cisg
ICAgfQorCisgICAgY29uc3QgU3RyaW5nJiB0ZW1wRmlsZVBhdGgoKSB7IHJldHVybiBtX3RlbXBG
aWxlUGF0aDsgfQorICAgIGNvbnN0IFN0cmluZyYgdGVtcEZpbGVTeW1saW5rUGF0aCgpIHsgcmV0
dXJuIG1fdGVtcEZpbGVTeW1saW5rUGF0aDsgfQorICAgIGNvbnN0IFN0cmluZyYgdGVtcEVtcHR5
RmlsZVBhdGgoKSB7IHJldHVybiBtX3RlbXBFbXB0eUZpbGVQYXRoOyB9CisgICAgY29uc3QgU3Ry
aW5nJiBzcGFjZUNvbnRhaW5pbmdGaWxlUGF0aCgpIHsgcmV0dXJuIG1fc3BhY2VDb250YWluaW5n
RmlsZVBhdGg7IH0KKyAgICBjb25zdCBTdHJpbmcmIGJhbmdDb250YWluaW5nRmlsZVBhdGgoKSB7
IHJldHVybiBtX2JhbmdDb250YWluaW5nRmlsZVBhdGg7IH0KKyAgICBjb25zdCBTdHJpbmcmIHF1
b3RlQ29udGFpbmluZ0ZpbGVQYXRoKCkgeyByZXR1cm4gbV9xdW90ZUNvbnRhaW5pbmdGaWxlUGF0
aDsgfQorCitwcml2YXRlOgorICAgIFN0cmluZyBtX3RlbXBGaWxlUGF0aDsKKyAgICBTdHJpbmcg
bV90ZW1wRmlsZVN5bWxpbmtQYXRoOworICAgIFN0cmluZyBtX3RlbXBFbXB0eUZpbGVQYXRoOwor
ICAgIFN0cmluZyBtX3NwYWNlQ29udGFpbmluZ0ZpbGVQYXRoOworICAgIFN0cmluZyBtX2JhbmdD
b250YWluaW5nRmlsZVBhdGg7CisgICAgU3RyaW5nIG1fcXVvdGVDb250YWluaW5nRmlsZVBhdGg7
Cit9OworCitURVNUX0YoRmlsZVN5c3RlbVRlc3QsIE1hcHBpbmdNaXNzaW5nRmlsZSkKK3sKKyAg
ICBib29sIHN1Y2Nlc3M7CisgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmls
ZURhdGEoU3RyaW5nKCJub3RfZXhpc3RpbmdfZmlsZSIpLCBzdWNjZXNzKTsKKyAgICBFWFBFQ1Rf
RkFMU0Uoc3VjY2Vzcyk7CisgICAgRVhQRUNUX1RSVUUoIW1hcHBlZEZpbGVEYXRhKTsKK30KKwor
VEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBNYXBwaW5nRXhpc3RpbmdGaWxlKQoreworICAgIGJvb2wg
c3VjY2VzczsKKyAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YSh0
ZW1wRmlsZVBhdGgoKSwgc3VjY2Vzcyk7CisgICAgRVhQRUNUX1RSVUUoc3VjY2Vzcyk7CisgICAg
RVhQRUNUX1RSVUUoISFtYXBwZWRGaWxlRGF0YSk7CisgICAgRVhQRUNUX1RSVUUobWFwcGVkRmls
ZURhdGEuc2l6ZSgpID09IHN0cmxlbihGaWxlU3lzdGVtVGVzdERhdGEpKTsKKyAgICBFWFBFQ1Rf
VFJVRShzdHJuc3RyKEZpbGVTeXN0ZW1UZXN0RGF0YSwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+
KG1hcHBlZEZpbGVEYXRhLmRhdGEoKSksIG1hcHBlZEZpbGVEYXRhLnNpemUoKSkpOworfQorCitU
RVNUX0YoRmlsZVN5c3RlbVRlc3QsIE1hcHBpbmdFeGlzdGluZ0VtcHR5RmlsZSkKK3sKKyAgICBi
b29sIHN1Y2Nlc3M7CisgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZURh
dGEodGVtcEVtcHR5RmlsZVBhdGgoKSwgc3VjY2Vzcyk7CisgICAgRVhQRUNUX1RSVUUoc3VjY2Vz
cyk7CisgICAgRVhQRUNUX1RSVUUoIW1hcHBlZEZpbGVEYXRhKTsKK30KKworVEVTVF9GKEZpbGVT
eXN0ZW1UZXN0LCBGaWxlc0hhdmVTYW1lVm9sdW1lKQoreworICAgIEVYUEVDVF9UUlVFKEZpbGVT
eXN0ZW06OmZpbGVzSGF2ZVNhbWVWb2x1bWUodGVtcEZpbGVQYXRoKCksIHNwYWNlQ29udGFpbmlu
Z0ZpbGVQYXRoKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpmaWxlc0hhdmVTYW1l
Vm9sdW1lKHNwYWNlQ29udGFpbmluZ0ZpbGVQYXRoKCksIGJhbmdDb250YWluaW5nRmlsZVBhdGgo
KSkpOworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVzSGF2ZVNhbWVWb2x1bWUoYmFu
Z0NvbnRhaW5pbmdGaWxlUGF0aCgpLCBxdW90ZUNvbnRhaW5pbmdGaWxlUGF0aCgpKSk7Cit9CisK
K1RFU1RfRihGaWxlU3lzdGVtVGVzdCwgR2V0RmlsZU1ldGFkYXRhU3ltbGluaykKK3sKKyAgICBh
dXRvIHN5bWxpbmtNZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0YSh0ZW1wRmlsZVN5
bWxpbmtQYXRoKCkpOworICAgIEFTU0VSVF9UUlVFKHN5bWxpbmtNZXRhZGF0YS5oYXNWYWx1ZSgp
KTsKKyAgICBFWFBFQ1RfVFJVRShzeW1saW5rTWV0YWRhdGEudmFsdWUoKS50eXBlID09IEZpbGVN
ZXRhZGF0YTo6VHlwZTo6U3ltYm9saWNMaW5rKTsKKyAgICBFWFBFQ1RfRkFMU0Uoc3RhdGljX2Nh
c3Q8c2l6ZV90PihzeW1saW5rTWV0YWRhdGEudmFsdWUoKS5sZW5ndGgpID09IHN0cmxlbihGaWxl
U3lzdGVtVGVzdERhdGEpKTsKKworICAgIGF1dG8gdGFyZ2V0TWV0YWRhdGEgPSBGaWxlU3lzdGVt
OjpmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyh0ZW1wRmlsZVN5bWxpbmtQYXRoKCkpOwor
ICAgIEFTU0VSVF9UUlVFKHRhcmdldE1ldGFkYXRhLmhhc1ZhbHVlKCkpOworICAgIEVYUEVDVF9U
UlVFKHRhcmdldE1ldGFkYXRhLnZhbHVlKCkudHlwZSA9PSBGaWxlTWV0YWRhdGE6OlR5cGU6OkZp
bGUpOworICAgIEVYUEVDVF9FUShzdHJsZW4oRmlsZVN5c3RlbVRlc3REYXRhKSwgc3RhdGljX2Nh
c3Q8c2l6ZV90Pih0YXJnZXRNZXRhZGF0YS52YWx1ZSgpLmxlbmd0aCkpOworfQorCitURVNUX0Yo
RmlsZVN5c3RlbVRlc3QsIFVuaWNvZGVEaXJlY3RvcnlOYW1lKQoreworICAgIFN0cmluZyBwYXRo
ID0gU3RyaW5nOjpmcm9tVVRGOCgiL3Rlc3QvYVx1MDMwOGxvL3Rlc3QudHh0Iik7CisgICAgU3Ry
aW5nIGRpcmVjdG9yeU5hbWUgPSBGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKHBhdGgpOworICAg
IFN0cmluZyBleHBlY3RlZERpcmVjdG9yeU5hbWUgPSBTdHJpbmc6OmZyb21VVEY4KCIvdGVzdC9h
XHUwMzA4bG8iKTsKKyAgICBFWFBFQ1RfVFJVRShleHBlY3RlZERpcmVjdG9yeU5hbWUgPT0gZGly
ZWN0b3J5TmFtZSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9GaWxlTW9uaXRvci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvRmlsZU1vbml0b3IuY3BwCmluZGV4IDVmMWRjOGIyZTRkNTI0ZDM1MjY4MDRiZDZjZDlj
ZTk4YTM3MTFmZTguLmUwMDJkZjFlZjA5NGY1YjNmMDBkMTZlOWM2YmU2ZDQ5ZDVlNmFmMjQgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRvci5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNw
cApAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgIlRlc3QuaCIKICNpbmNsdWRlICJXVEZTdHJp
bmdVdGlsaXRpZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVNb25pdG9yLmg+Ci0jaW5jbHVk
ZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNp
bmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5j
bHVkZSA8d3RmL1Njb3BlLmg+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvRmlsZVN5c3RlbS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvRmlsZVN5c3RlbS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2NjI1MDI1
MzA5NzI3ZWE2MDVjYjUyY2ZjOWVjZDRiMzNlNzc4NzUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L0ZpbGVTeXN0ZW0uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTUwICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29w
eXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaW5jbHVkZSAiVGVzdC5oIgotI2luY2x1ZGUgPFdl
YkNvcmUvRmlsZU1ldGFkYXRhLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+Ci0j
aW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KLSNpbmNsdWRlIDx3dGYvU3RyaW5nRXh0cmFzLmg+
Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7
Ci0KLWNvbnN0IGNoYXIqIEZpbGVTeXN0ZW1UZXN0RGF0YSA9ICJUaGlzIGlzIGEgdGVzdCI7Ci0K
LS8vIEZJWE1FOiBSZWZhY3RvciBGaWxlU3lzdGVtVGVzdCBhbmQgU2hhcmVkQnVmZmVyVGVzdCBh
cyBhIHNpbmdsZSBjbGFzcy4KLWNsYXNzIEZpbGVTeXN0ZW1UZXN0IDogcHVibGljIHRlc3Rpbmc6
OlRlc3QgewotcHVibGljOgotICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQotICAgIHsKLSAgICAg
ICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZCgpOwotICAgICAgICAKLSAgICAgICAgLy8gY3Jl
YXRlIHRlbXAgZmlsZQotICAgICAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaGFu
ZGxlOwotICAgICAgICBtX3RlbXBGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlG
aWxlKCJ0ZW1wVGVzdEZpbGUiLCBoYW5kbGUpOwotICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRv
RmlsZShoYW5kbGUsIEZpbGVTeXN0ZW1UZXN0RGF0YSwgc3RybGVuKEZpbGVTeXN0ZW1UZXN0RGF0
YSkpOwotICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKLQotICAgICAgICBt
X3RlbXBGaWxlU3ltbGlua1BhdGggPSBtX3RlbXBGaWxlUGF0aCArICItc3ltbGluayI7Ci0gICAg
ICAgIEZpbGVTeXN0ZW06OmNyZWF0ZVN5bWJvbGljTGluayhtX3RlbXBGaWxlUGF0aCwgbV90ZW1w
RmlsZVN5bWxpbmtQYXRoKTsKLQotICAgICAgICBtX3RlbXBFbXB0eUZpbGVQYXRoID0gRmlsZVN5
c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoInRlbXBFbXB0eVRlc3RGaWxlIiwgaGFuZGxlKTsKLSAg
ICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7Ci0KLSAgICAgICAgbV9zcGFjZUNv
bnRhaW5pbmdGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wIEVt
cHR5IFRlc3QgRmlsZSIsIGhhbmRsZSk7Ci0gICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZSho
YW5kbGUpOwotCi0gICAgICAgIG1fYmFuZ0NvbnRhaW5pbmdGaWxlUGF0aCA9IEZpbGVTeXN0ZW06
Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wIUVtcHR5IVRlc3QhRmlsZSIsIGhhbmRsZSk7Ci0gICAg
ICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUpOwotCi0gICAgICAgIG1fcXVvdGVDb250
YWluaW5nRmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcFwiRW1w
dHlcIlRlc3RGaWxlIiwgaGFuZGxlKTsKLSAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhh
bmRsZSk7Ci0gICAgfQotCi0gICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCi0gICAgewotICAg
ICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fdGVtcEZpbGVQYXRoKTsKLSAgICAgICAgRmls
ZVN5c3RlbTo6ZGVsZXRlRmlsZShtX3RlbXBGaWxlU3ltbGlua1BhdGgpOwotICAgICAgICBGaWxl
U3lzdGVtOjpkZWxldGVGaWxlKG1fdGVtcEVtcHR5RmlsZVBhdGgpOwotICAgICAgICBGaWxlU3lz
dGVtOjpkZWxldGVGaWxlKG1fc3BhY2VDb250YWluaW5nRmlsZVBhdGgpOwotICAgICAgICBGaWxl
U3lzdGVtOjpkZWxldGVGaWxlKG1fYmFuZ0NvbnRhaW5pbmdGaWxlUGF0aCk7Ci0gICAgICAgIEZp
bGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9xdW90ZUNvbnRhaW5pbmdGaWxlUGF0aCk7Ci0gICAgfQot
Ci0gICAgY29uc3QgU3RyaW5nJiB0ZW1wRmlsZVBhdGgoKSB7IHJldHVybiBtX3RlbXBGaWxlUGF0
aDsgfQotICAgIGNvbnN0IFN0cmluZyYgdGVtcEZpbGVTeW1saW5rUGF0aCgpIHsgcmV0dXJuIG1f
dGVtcEZpbGVTeW1saW5rUGF0aDsgfQotICAgIGNvbnN0IFN0cmluZyYgdGVtcEVtcHR5RmlsZVBh
dGgoKSB7IHJldHVybiBtX3RlbXBFbXB0eUZpbGVQYXRoOyB9Ci0gICAgY29uc3QgU3RyaW5nJiBz
cGFjZUNvbnRhaW5pbmdGaWxlUGF0aCgpIHsgcmV0dXJuIG1fc3BhY2VDb250YWluaW5nRmlsZVBh
dGg7IH0KLSAgICBjb25zdCBTdHJpbmcmIGJhbmdDb250YWluaW5nRmlsZVBhdGgoKSB7IHJldHVy
biBtX2JhbmdDb250YWluaW5nRmlsZVBhdGg7IH0KLSAgICBjb25zdCBTdHJpbmcmIHF1b3RlQ29u
dGFpbmluZ0ZpbGVQYXRoKCkgeyByZXR1cm4gbV9xdW90ZUNvbnRhaW5pbmdGaWxlUGF0aDsgfQot
Ci1wcml2YXRlOgotICAgIFN0cmluZyBtX3RlbXBGaWxlUGF0aDsKLSAgICBTdHJpbmcgbV90ZW1w
RmlsZVN5bWxpbmtQYXRoOwotICAgIFN0cmluZyBtX3RlbXBFbXB0eUZpbGVQYXRoOwotICAgIFN0
cmluZyBtX3NwYWNlQ29udGFpbmluZ0ZpbGVQYXRoOwotICAgIFN0cmluZyBtX2JhbmdDb250YWlu
aW5nRmlsZVBhdGg7Ci0gICAgU3RyaW5nIG1fcXVvdGVDb250YWluaW5nRmlsZVBhdGg7Ci19Owot
Ci1URVNUX0YoRmlsZVN5c3RlbVRlc3QsIE1hcHBpbmdNaXNzaW5nRmlsZSkKLXsKLSAgICBib29s
IHN1Y2Nlc3M7Ci0gICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZURhdGEo
U3RyaW5nKCJub3RfZXhpc3RpbmdfZmlsZSIpLCBzdWNjZXNzKTsKLSAgICBFWFBFQ1RfRkFMU0Uo
c3VjY2Vzcyk7Ci0gICAgRVhQRUNUX1RSVUUoIW1hcHBlZEZpbGVEYXRhKTsKLX0KLQotVEVTVF9G
KEZpbGVTeXN0ZW1UZXN0LCBNYXBwaW5nRXhpc3RpbmdGaWxlKQotewotICAgIGJvb2wgc3VjY2Vz
czsKLSAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YSh0ZW1wRmls
ZVBhdGgoKSwgc3VjY2Vzcyk7Ci0gICAgRVhQRUNUX1RSVUUoc3VjY2Vzcyk7Ci0gICAgRVhQRUNU
X1RSVUUoISFtYXBwZWRGaWxlRGF0YSk7Ci0gICAgRVhQRUNUX1RSVUUobWFwcGVkRmlsZURhdGEu
c2l6ZSgpID09IHN0cmxlbihGaWxlU3lzdGVtVGVzdERhdGEpKTsKLSAgICBFWFBFQ1RfVFJVRShz
dHJuc3RyKEZpbGVTeXN0ZW1UZXN0RGF0YSwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1hcHBl
ZEZpbGVEYXRhLmRhdGEoKSksIG1hcHBlZEZpbGVEYXRhLnNpemUoKSkpOwotfQotCi1URVNUX0Yo
RmlsZVN5c3RlbVRlc3QsIE1hcHBpbmdFeGlzdGluZ0VtcHR5RmlsZSkKLXsKLSAgICBib29sIHN1
Y2Nlc3M7Ci0gICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZURhdGEodGVt
cEVtcHR5RmlsZVBhdGgoKSwgc3VjY2Vzcyk7Ci0gICAgRVhQRUNUX1RSVUUoc3VjY2Vzcyk7Ci0g
ICAgRVhQRUNUX1RSVUUoIW1hcHBlZEZpbGVEYXRhKTsKLX0KLQotVEVTVF9GKEZpbGVTeXN0ZW1U
ZXN0LCBGaWxlc0hhdmVTYW1lVm9sdW1lKQotewotICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06
OmZpbGVzSGF2ZVNhbWVWb2x1bWUodGVtcEZpbGVQYXRoKCksIHNwYWNlQ29udGFpbmluZ0ZpbGVQ
YXRoKCkpKTsKLSAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpmaWxlc0hhdmVTYW1lVm9sdW1l
KHNwYWNlQ29udGFpbmluZ0ZpbGVQYXRoKCksIGJhbmdDb250YWluaW5nRmlsZVBhdGgoKSkpOwot
ICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVzSGF2ZVNhbWVWb2x1bWUoYmFuZ0NvbnRh
aW5pbmdGaWxlUGF0aCgpLCBxdW90ZUNvbnRhaW5pbmdGaWxlUGF0aCgpKSk7Ci19Ci0KLVRFU1Rf
RihGaWxlU3lzdGVtVGVzdCwgR2V0RmlsZU1ldGFkYXRhU3ltbGluaykKLXsKLSAgICBhdXRvIHN5
bWxpbmtNZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0YSh0ZW1wRmlsZVN5bWxpbmtQ
YXRoKCkpOwotICAgIEFTU0VSVF9UUlVFKHN5bWxpbmtNZXRhZGF0YS5oYXNWYWx1ZSgpKTsKLSAg
ICBFWFBFQ1RfVFJVRShzeW1saW5rTWV0YWRhdGEudmFsdWUoKS50eXBlID09IEZpbGVNZXRhZGF0
YTo6VHlwZTo6U3ltYm9saWNMaW5rKTsKLSAgICBFWFBFQ1RfRkFMU0Uoc3RhdGljX2Nhc3Q8c2l6
ZV90PihzeW1saW5rTWV0YWRhdGEudmFsdWUoKS5sZW5ndGgpID09IHN0cmxlbihGaWxlU3lzdGVt
VGVzdERhdGEpKTsKLQotICAgIGF1dG8gdGFyZ2V0TWV0YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxl
TWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyh0ZW1wRmlsZVN5bWxpbmtQYXRoKCkpOwotICAgIEFT
U0VSVF9UUlVFKHRhcmdldE1ldGFkYXRhLmhhc1ZhbHVlKCkpOwotICAgIEVYUEVDVF9UUlVFKHRh
cmdldE1ldGFkYXRhLnZhbHVlKCkudHlwZSA9PSBGaWxlTWV0YWRhdGE6OlR5cGU6OkZpbGUpOwot
ICAgIEVYUEVDVF9FUShzdHJsZW4oRmlsZVN5c3RlbVRlc3REYXRhKSwgc3RhdGljX2Nhc3Q8c2l6
ZV90Pih0YXJnZXRNZXRhZGF0YS52YWx1ZSgpLmxlbmd0aCkpOwotfQotCi1URVNUX0YoRmlsZVN5
c3RlbVRlc3QsIFVuaWNvZGVEaXJlY3RvcnlOYW1lKQotewotICAgIFN0cmluZyBwYXRoID0gU3Ry
aW5nOjpmcm9tVVRGOCgiL3Rlc3QvYVx1MDMwOGxvL3Rlc3QudHh0Iik7Ci0gICAgU3RyaW5nIGRp
cmVjdG9yeU5hbWUgPSBGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKHBhdGgpOwotICAgIFN0cmlu
ZyBleHBlY3RlZERpcmVjdG9yeU5hbWUgPSBTdHJpbmc6OmZyb21VVEY4KCIvdGVzdC9hXHUwMzA4
bG8iKTsKLSAgICBFWFBFQ1RfVFJVRShleHBlY3RlZERpcmVjdG9yeU5hbWUgPT0gZGlyZWN0b3J5
TmFtZSk7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9TZWN1cml0eU9yaWdpbi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvU2VjdXJpdHlPcmlnaW4uY3BwCmluZGV4IGRhNWY0ZmY1ODk4YTlmMDljOGI4Mzk1YTU1ZGU3
MzhmMTY4YzkwOWYuLmE0MWFiNGJjYTM3MWQ0NWRlOGNiNDU4Njg1YmM5NzRlMzBmNDA2ZjMgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TZWN1cml0eU9yaWdp
bi5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NlY3VyaXR5T3Jp
Z2luLmNwcApAQCAtMjYsOCArMjYsOCBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiV1RGU3RyaW5nVXRpbGl0aWVzLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgorI2luY2x1ZGUgPHd0Zi9GaWxl
U3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvVVJM
Lmg+CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFy
ZWRCdWZmZXJUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFy
ZWRCdWZmZXJUZXN0LmNwcAppbmRleCA4ZmUzNTY3YzFlMTEzNjkxZDg1YjdjNTVhMWY5NjY1OWRl
OWQxZjI0Li45YjhiMTNhNzVkNTJmZjk1MWVhZDE4MTg1ZDU2YzM3OTFiMmQ3YmVkIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRl
c3QuY3BwCkBAIC0yNiwxMSArMjYsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IlNoYXJlZEJ1ZmZlclRlc3QuaCIKIAotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgor
I2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4K
IAotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsK
IAogdm9pZCBTaGFyZWRCdWZmZXJUZXN0OjpTZXRVcCgpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvRGF0YWJhc2VUcmFja2VyVGVzdC5tbSBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9EYXRhYmFzZVRyYWNrZXJUZXN0
Lm1tCmluZGV4IDZhM2M3MDI4MGE0ZWRlMDA5MTAyZWU5OTc2YjM2N2MyNmFiN2ZlZTcuLjIyMTcx
NTZmNmU1NjkxNWE3NWQ0NDg4NGVhZDUxNzE5YTdjNTI5MTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9EYXRhYmFzZVRyYWNrZXJUZXN0Lm1tCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9EYXRhYmFzZVRyYWNr
ZXJUZXN0Lm1tCkBAIC0yNiwxMSArMjYsMTEgQEAKICNpbmNsdWRlICJjb25maWcuaCIKIAogI2lu
Y2x1ZGUgPFdlYkNvcmUvRGF0YWJhc2VUcmFja2VyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9GaWxl
U3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9PcmlnaW5Mb2NrLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9TUUxpdGVEYXRhYmFzZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlU3RhdGVtZW50
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KKyNpbmNsdWRlIDx3
dGYvRmlsZVN5c3RlbS5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2N1cmwvQ29va2llcy5jcHAgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY3VybC9Db29raWVzLmNwcAppbmRleCAx
YjhkN2ZjM2NkZTUwMjk5ZTMwYWQ2YzZkOGNhMTYyN2YyMzkwYzFmLi5iNDBiMGQ1YTBhNWU1ZmI1
ZjQ5MTlhM2RhMmMyZmVkNmZjYmMxYzRlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvY3VybC9Db29raWVzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvY3VybC9Db29raWVzLmNwcApAQCAtMjksOCArMjksOCBAQAogCiAjaW5j
bHVkZSA8V2ViQ29yZS9Db29raWVKYXJEQi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llVXRp
bC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPG1lbW9yeT4K
KyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3du
bG9hZC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQu
bW0KaW5kZXggNjBjYzkzYjM0MGRkNjgwOTQxYzQxYTJhNWFhMGJhOTIzYjVhZWM2NC4uNjgxYjAy
Y2E5Yzg3ZGFlYzM3MjYyMjQ2MTdkMWM1OTIwODhkN2E2YyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbQorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tCkBAIC0zMyw3ICszMyw2IEBA
CiAjaW1wb3J0ICJUZXN0LmgiCiAjaW1wb3J0ICJUZXN0UHJvdG9jb2wuaCIKICNpbXBvcnQgIlRl
c3RXS1dlYlZpZXcuaCIKLSNpbXBvcnQgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8
V2ViS2l0L19XS0Rvd25sb2FkLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLRG93bmxvYWREZWxlZ2F0
ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5oPgpAQCAt
NDEsNiArNDAsNyBAQAogI2ltcG9ydCA8V2ViS2l0L1dLVUlEZWxlZ2F0ZVByaXZhdGUuaD4KICNp
bXBvcnQgPFdlYktpdC9XS1dlYlZpZXcuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdDb25m
aWd1cmF0aW9uLmg+CisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8d3RmL01h
aW5UaHJlYWQuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgpAQCAtOTQsMTAgKzk0LDEwIEBAIElHTk9SRV9XQVJOSU5HU19FTkQKICAg
ICBFWFBFQ1RfVFJVRShoYXNSZWNlaXZlZFJlc3BvbnNlKTsKICAgICBFWFBFQ1RfRVEoX2Rvd25s
b2FkLCBkb3dubG9hZCk7CiAKLSAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVI
YW5kbGUgZmlsZUhhbmRsZTsKLSAgICBfZGVzdGluYXRpb25QYXRoID0gV2ViQ29yZTo6RmlsZVN5
c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoIlRlc3RXZWJLaXRBUEkiLCBmaWxlSGFuZGxlKTsKLSAg
ICBFWFBFQ1RfVFJVRShmaWxlSGFuZGxlICE9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmludmFsaWRQ
bGF0Zm9ybUZpbGVIYW5kbGUpOwotICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmNsb3NlRmlsZShm
aWxlSGFuZGxlKTsKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRs
ZTsKKyAgICBfZGVzdGluYXRpb25QYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUo
IlRlc3RXZWJLaXRBUEkiLCBmaWxlSGFuZGxlKTsKKyAgICBFWFBFQ1RfVFJVRShmaWxlSGFuZGxl
ICE9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpOworICAgIEZpbGVTeXN0
ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsKIAogICAgICphbGxvd092ZXJ3cml0ZSA9IFlFUzsK
ICAgICByZXR1cm4gX2Rlc3RpbmF0aW9uUGF0aDsKQEAgLTEwOSw3ICsxMDksNyBAQCAtICh2b2lk
KV9kb3dubG9hZERpZEZpbmlzaDooX1dLRG93bmxvYWQgKilkb3dubG9hZAogICAgIEVYUEVDVF9F
UShleHBlY3RlZFVzZXJJbml0aWF0ZWRTdGF0ZSwgZG93bmxvYWQud2FzVXNlckluaXRpYXRlZCk7
CiAgICAgRVhQRUNUX1RSVUUoX2V4cGVjdGVkQ29udGVudExlbmd0aCA9PSBOU1VSTFJlc3BvbnNl
VW5rbm93bkxlbmd0aCB8fCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oX2V4cGVjdGVkQ29udGVudExl
bmd0aCkgPT0gX3JlY2VpdmVkQ29udGVudExlbmd0aCk7CiAgICAgRVhQRUNUX1RSVUUoW1tOU0Zp
bGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjb250ZW50c0VxdWFsQXRQYXRoOl9kZXN0aW5hdGlv
blBhdGggYW5kUGF0aDpbc291cmNlVVJMIHBhdGhdXSk7Ci0gICAgV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6ZGVsZXRlRmlsZShfZGVzdGluYXRpb25QYXRoKTsKKyAgICBGaWxlU3lzdGVtOjpkZWxldGVG
aWxlKF9kZXN0aW5hdGlvblBhdGgpOwogICAgIGlzRG9uZSA9IHRydWU7CiB9CiAKQEAgLTM5Nywx
MCArMzk3LDEwIEBAIElHTk9SRV9XQVJOSU5HU19FTkQKICAgICBFWFBFQ1RfVFJVRShoYXNSZWNl
aXZlZFJlc3BvbnNlKTsKICAgICBFWFBFQ1RfRVEoX2Rvd25sb2FkLCBkb3dubG9hZCk7CiAKLSAg
ICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRsZTsKLSAg
ICBfZGVzdGluYXRpb25QYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZp
bGUoIlRlc3RXZWJLaXRBUEkiLCBmaWxlSGFuZGxlKTsKLSAgICBFWFBFQ1RfVFJVRShmaWxlSGFu
ZGxlICE9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpOwot
ICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsKKyAgICBGaWxl
U3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRsZTsKKyAgICBfZGVzdGluYXRpb25Q
YXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoIlRlc3RXZWJLaXRBUEkiLCBmaWxl
SGFuZGxlKTsKKyAgICBFWFBFQ1RfVFJVRShmaWxlSGFuZGxlICE9IEZpbGVTeXN0ZW06OmludmFs
aWRQbGF0Zm9ybUZpbGVIYW5kbGUpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlSGFu
ZGxlKTsKIAogICAgICphbGxvd092ZXJ3cml0ZSA9IFlFUzsKICAgICByZXR1cm4gX2Rlc3RpbmF0
aW9uUGF0aDsKQEAgLTQxNCw3ICs0MTQsNyBAQCAtICh2b2lkKV9kb3dubG9hZERpZEZpbmlzaDoo
X1dLRG93bmxvYWQgKilkb3dubG9hZAogICAgIE5TU3RyaW5nKiBleHBlY3RlZENvbnRlbnQgPSBA
IntcInhcIjo0MixcInNcIjpcImhlbGxvLCB3b3JsZFwifSI7CiAgICAgTlNEYXRhKiBleHBlY3Rl
ZERhdGEgPSBbZXhwZWN0ZWRDb250ZW50IGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0Vu
Y29kaW5nXTsKICAgICBFWFBFQ1RfVFJVRShbW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2Vy
XSBjb250ZW50c0F0UGF0aDpfZGVzdGluYXRpb25QYXRoXSBpc0VxdWFsVG9EYXRhOmV4cGVjdGVk
RGF0YV0pOwotICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoX2Rlc3RpbmF0aW9u
UGF0aCk7CisgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShfZGVzdGluYXRpb25QYXRoKTsKICAg
ICBpc0RvbmUgPSB0cnVlOwogfQogCkBAIC00NTcsMTAgKzQ1NywxMCBAQCBJR05PUkVfV0FSTklO
R1NfQkVHSU4oImRlcHJlY2F0ZWQtaW1wbGVtZW50YXRpb25zIikKIC0gKE5TU3RyaW5nICopX2Rv
d25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dl
c3RlZEZpbGVuYW1lOihOU1N0cmluZyAqKWZpbGVuYW1lIGFsbG93T3ZlcndyaXRlOihCT09MICop
YWxsb3dPdmVyd3JpdGUKIElHTk9SRV9XQVJOSU5HU19FTkQKIHsKLSAgICBXZWJDb3JlOjpGaWxl
U3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRsZTsKLSAgICBfZGVzdGluYXRpb25Q
YXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoIlRlc3RXZWJLaXRB
UEkiLCBmaWxlSGFuZGxlKTsKLSAgICBFWFBFQ1RfVFJVRShmaWxlSGFuZGxlICE9IFdlYkNvcmU6
OkZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpOwotICAgIFdlYkNvcmU6OkZp
bGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9y
bUZpbGVIYW5kbGUgZmlsZUhhbmRsZTsKKyAgICBfZGVzdGluYXRpb25QYXRoID0gRmlsZVN5c3Rl
bTo6b3BlblRlbXBvcmFyeUZpbGUoIlRlc3RXZWJLaXRBUEkiLCBmaWxlSGFuZGxlKTsKKyAgICBF
WFBFQ1RfVFJVRShmaWxlSGFuZGxlICE9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVI
YW5kbGUpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsKICAgICAqYWxs
b3dPdmVyd3JpdGUgPSBZRVM7CiAgICAgcmV0dXJuIF9kZXN0aW5hdGlvblBhdGg7CiB9CkBAIC00
ODcsNyArNDg3LDcgQEAgLSAodm9pZClfZG93bmxvYWREaWRGaW5pc2g6KF9XS0Rvd25sb2FkICop
ZG93bmxvYWQKICAgICBpZiAocmVkaXJlY3RDaGFpbi5jb3VudCA+IDIpCiAgICAgICAgIEVYUEVD
VF9TVFJFUSgiaHR0cDovL3Bhc3MvIiwgW3JlZGlyZWN0Q2hhaW5bMl0uYWJzb2x1dGVTdHJpbmcg
VVRGOFN0cmluZ10pOwogCi0gICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShfZGVz
dGluYXRpb25QYXRoKTsKKyAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKF9kZXN0aW5hdGlvblBh
dGgpOwogICAgIGlzRG9uZSA9IHRydWU7CiB9CiAKQEAgLTYzMiwxNyArNjMyLDE3IEBAIC0gKHZv
aWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRlY2lkZURlc3RpbmF0aW9uV2l0
aFN1Z2dlc3RlZEZpbGVuYW1lCiB7CiAgICAgRVhQRUNUX1RSVUUoW2ZpbGVuYW1lIGhhc1N1ZmZp
eDpAIi51c2R6Il0pOwogCi0gICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFu
ZGxlIGZpbGVIYW5kbGU7Ci0gICAgX2Rlc3RpbmF0aW9uUGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0
ZW06Om9wZW5UZW1wb3JhcnlGaWxlKGZpbGVuYW1lLCBmaWxlSGFuZGxlKTsKLSAgICBFWFBFQ1Rf
VFJVRShmaWxlSGFuZGxlICE9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZp
bGVIYW5kbGUpOwotICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxl
KTsKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRsZTsKKyAgICBf
ZGVzdGluYXRpb25QYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoZmlsZW5hbWUs
IGZpbGVIYW5kbGUpOworICAgIEVYUEVDVF9UUlVFKGZpbGVIYW5kbGUgIT0gRmlsZVN5c3RlbTo6
aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZp
bGVIYW5kbGUpOwogCiAgICAgY29tcGxldGlvbkhhbmRsZXIoWUVTLCBfZGVzdGluYXRpb25QYXRo
KTsKIH0KIAogLSAodm9pZClfZG93bmxvYWREaWRGaW5pc2g6KF9XS0Rvd25sb2FkICopZG93bmxv
YWQKIHsKLSAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVGaWxlKF9kZXN0aW5hdGlvblBh
dGgpOworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoX2Rlc3RpbmF0aW9uUGF0aCk7CiAgICAg
aXNEb25lID0gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9Eb3dubG9hZFByb2dyZXNzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZFByb2dyZXNzLm1tCmluZGV4IGY1NjBkZjNmNGM0MmUy
NGU2NWIzYmY2Mjg3MWI1ZmFkYzE5YTVmNjUuLjNlYjAzZjA0YTFkZDhhOGUxNzY3ODNkNWVmZmQ0
ODM0N2E5MGRhMDAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvRG93bmxvYWRQcm9ncmVzcy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0Rvd25sb2FkUHJvZ3Jlc3MubW0KQEAgLTI4LDcgKzI4LDYgQEAKICNpbXBv
cnQgIlRlc3RXS1dlYlZpZXcuaCIKICNpbXBvcnQgIlV0aWxpdGllcy5oIgogI2ltcG9ydCA8Rm91
bmRhdGlvbi9OU1Byb2dyZXNzLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNp
bXBvcnQgPFdlYktpdC9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIuaD4KICNpbXBvcnQgPFdl
YktpdC9XS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1By
b2Nlc3NQb29sUHJpdmF0ZS5oPgpAQCAtMzcsNiArMzYsNyBAQAogI2ltcG9ydCA8V2ViS2l0L19X
S0Rvd25sb2FkRGVsZWdhdGUuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNQcm9ncmVzc1NQ
SS5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5o
PgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+
CiAKQEAgLTM4MCwxMCArMzgwLDEwIEBAIC0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAq
KWRvd25sb2FkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lCiB7CiAgICAg
RVhQRUNUX0VRKGRvd25sb2FkLCBtX2Rvd25sb2FkLmdldCgpKTsKIAotICAgIFdlYkNvcmU6OkZp
bGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlSGFuZGxlOwotICAgIFJldGFpblB0cjxO
U1N0cmluZz4gcGF0aCA9IChOU1N0cmluZyAqKVdlYkNvcmU6OkZpbGVTeXN0ZW06Om9wZW5UZW1w
b3JhcnlGaWxlKCJUZXN0V2ViS2l0QVBJIiwgZmlsZUhhbmRsZSk7Ci0gICAgRVhQRUNUX1RSVUUo
ZmlsZUhhbmRsZSAhPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFu
ZGxlKTsKLSAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7Cisg
ICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGVIYW5kbGU7CisgICAgUmV0YWlu
UHRyPE5TU3RyaW5nPiBwYXRoID0gKE5TU3RyaW5nICopRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFy
eUZpbGUoIlRlc3RXZWJLaXRBUEkiLCBmaWxlSGFuZGxlKTsKKyAgICBFWFBFQ1RfVFJVRShmaWxl
SGFuZGxlICE9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpOworICAgIEZp
bGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsKIAogICAgIGNvbXBsZXRpb25IYW5kbGVy
KFlFUywgcGF0aC5nZXQoKSk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL3dp
bi9QbGF0Zm9ybVV0aWxpdGllc1dpbi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL3dpbi9QbGF0
Zm9ybVV0aWxpdGllc1dpbi5jcHAKaW5kZXggMDU2YmZmNzc4Mjk1MjhiMTI5MGYxMmUzOWFiMjM4
YjBmNjg2OGI4Ni4uMzVmMjJlMmE4YjFiZmU1MGE0NzA1OTA5MTgzNDcyMzY3OWEzZDdmZCAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS93aW4vUGxhdGZvcm1VdGlsaXRpZXNXaW4uY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL1BsYXRmb3JtVXRpbGl0aWVzV2luLmNwcApA
QCAtMjcsNyArMjcsNyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAKICNpbmNs
dWRlIDxTaGx3YXBpLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CisjaW5jbHVk
ZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+CiAKQEAgLTQwLDE5ICs0MCwxOSBAQCBzdGF0
aWMgU3RyaW5nIG1vZHVsZURpcmVjdG9yeSgpCiAgICAgd2NoYXJfdCBmaWxlbmFtZVtidWZmZXJM
ZW5ndGhdOwogICAgIGF1dG8gbGVuID0gR2V0TW9kdWxlRmlsZU5hbWUobnVsbHB0ciwgZmlsZW5h
bWUsIGJ1ZmZlckxlbmd0aCk7CiAgICAgQVNTRVJUKGxlbiA+IDApOwotICAgIHJldHVybiBXZWJD
b3JlOjpGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKHdjaGFyVG9TdHJpbmcoZmlsZW5hbWUsIGxl
bikpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKHdjaGFyVG9TdHJpbmco
ZmlsZW5hbWUsIGxlbikpOwogfQogCiBXS1N0cmluZ1JlZiBjcmVhdGVJbmplY3RlZEJ1bmRsZVBh
dGgoKQogewotICAgIGF1dG8gcGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChtb2R1bGVEaXJlY3RvcnkoKSwgU3RyaW5nKEwiVGVzdFdlYktpdEFQSUlu
amVjdGVkQnVuZGxlLmRsbCIpKTsKKyAgICBhdXRvIHBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQobW9kdWxlRGlyZWN0b3J5KCksIFN0cmluZyhMIlRlc3RXZWJLaXRB
UElJbmplY3RlZEJ1bmRsZS5kbGwiKSk7CiAgICAgcmV0dXJuIFdLU3RyaW5nQ3JlYXRlV2l0aFVU
RjhDU3RyaW5nKHBhdGgudXRmOCgpLmRhdGEoKSk7CiB9CiAKIFdLVVJMUmVmIGNyZWF0ZVVSTEZv
clJlc291cmNlKGNvbnN0IGNoYXIqIHJlc291cmNlLCBjb25zdCBjaGFyKiBleHRlbnNpb24pCiB7
CiAgICAgU3RyaW5nIGZpbGVuYW1lID0gU3RyaW5nOjpmb3JtYXQoIi4uXFwuLlxcLi5cXFRvb2xz
XFxUZXN0V2ViS2l0QVBJXFxUZXN0c1xcV2ViS2l0XFwlcy4lcyIsIHJlc291cmNlLCBleHRlbnNp
b24pOwotICAgIGF1dG8gdXJsID0gVVJMOjpmaWxlVVJMV2l0aEZpbGVTeXN0ZW1QYXRoKFdlYkNv
cmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtb2R1bGVEaXJlY3Rvcnko
KSwgZmlsZW5hbWUpKTsKKyAgICBhdXRvIHVybCA9IFVSTDo6ZmlsZVVSTFdpdGhGaWxlU3lzdGVt
UGF0aChGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobW9kdWxlRGlyZWN0b3J5
KCksIGZpbGVuYW1lKSk7CiAgICAgcmV0dXJuIFdLVVJMQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHVy
bC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359830</attachid>
            <date>2019-01-22 18:17:28 -0800</date>
            <delta_ts>2019-01-22 19:41:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193602-20190122181727.patch</filename>
            <type>text/plain</type>
            <size>437354</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwMzE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDE3YjJmOWRmY2FmNDM2MGJmOWZlMjQ2
ZDQ4ZmFkYmNmNTIyYTUwZjcuLjllODc5NmM0MGQ0ZGRjNDYwMWUyZWI0ODc1ZDVjZTA3ZTUxMTE4
ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTktMDEtMjIgIFJvc3MgS2lyc2xpbmcgIDxyb3Nz
LmtpcnNsaW5nQHNvbnkuY29tPgorCisgICAgICAgIE1vdmUgRmlsZVN5c3RlbSB0byBXVEYKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzYwMgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV1RGLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0OgorICAg
ICAgICAqIHd0Zi9GaWxlTWV0YWRhdGEuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0ZpbGVNZXRhZGF0YS5oLgorICAgICAgICAqIHd0Zi9GaWxlU3lzdGVtLmNwcDogUmVu
YW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwLgorICAgICAg
ICAqIHd0Zi9GaWxlU3lzdGVtLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9GaWxlU3lzdGVtLmguCisgICAgICAgICogd3RmL1BsYXRmb3JtR1RLLmNtYWtlOgorICAgICAg
ICAqIHd0Zi9QbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1QbGF5U3Rh
dGlvbi5jbWFrZToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1XUEUuY21ha2U6CisgICAgICAgICog
d3RmL1BsYXRmb3JtV2luLmNtYWtlOgorICAgICAgICAqIHd0Zi9jZi9GaWxlU3lzdGVtQ0YuY3Bw
OiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvRmlsZVN5c3RlbUNGLmNw
cC4KKyAgICAgICAgKiB3dGYvY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tOiBSZW5hbWVkIGZyb20g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tLgorICAgICAg
ICAqIHd0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwLgorICAgICAgICAqIHd0Zi9tYWMv
RmlsZVN5c3RlbU1hYy5tbTogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9GaWxlU3lzdGVtTWFjLm1tLgorICAgICAgICAqIHd0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVgu
Y3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3Rl
bVBPU0lYLmNwcC4KKyAgICAgICAgKiB3dGYvc3BpL21hYy9NZXRhZGF0YVNQSS5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvbWFjL01ldGFkYXRhU1BJLmguCisgICAg
ICAgICogd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2luLmNwcC4KKyAgICAgICAgKiB3dGYvd2luL1Bh
dGhXYWxrZXIuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bh
dGhXYWxrZXIuY3BwLgorICAgICAgICAqIHd0Zi93aW4vUGF0aFdhbGtlci5oOiBSZW5hbWVkIGZy
b20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BhdGhXYWxrZXIuaC4KKwogMjAxOS0wMS0y
MiAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNvbT4KIAogICAgICAgICBDYWNoZSBi
eXRlY29kZSB0byBkaXNrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzU3YzBmYTg3NTJjMzlkNWM4M2UyZDBlNDc4
ZTkyNjllNzY4NmQ3NS4uYTI2YzIwYTg4NzBhYzQwNWU4MDFiOGFiNzRjYzc2MjlkYzE5Yjk2OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDgxIEBACisyMDE5LTAxLTIyICBSb3NzIEtpcnNsaW5nICA8
cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KKworICAgICAgICBNb3ZlIEZpbGVTeXN0ZW0gdG8gV1RG
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM2MDIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNlc3Npb24uY3BwOgorICAgICAgICAqIE1vZHVsZXMv
ZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2VudHJpZXNh
cGkvRmlsZVN5c3RlbUVudHJ5LmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZUlkZW50aWZpZXIuY3BwOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5jcHA6CisgICAgICAgICogTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0
YWJhc2UvT3JpZ2luTG9jay5jcHA6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9Pcmln
aW5Mb2NrLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9jb2NvYS9EYXRhYmFzZU1h
bmFnZXJDb2NvYS5tbToKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiBQ
bGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtV2luLmNtYWtlOgor
ICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0dDQ29udHJvbGxlci5jcHA6CisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlckl0ZW0u
Y3BwOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tOgor
ICAgICAgICAqIGZpbGVhcGkvRmlsZS5jcHA6CisgICAgICAgICogZmlsZWFwaS9GaWxlQ29jb2Eu
bW06CisgICAgICAgICogaHRtbC9GaWxlSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKiBodG1sL0Zp
bGVMaXN0Q3JlYXRvci5jcHA6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVIb3N0LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2UuY3BwOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgICogcGFnZS9T
ZWN1cml0eU9yaWdpbi5jcHA6CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL0ZpbGVIYW5kbGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9G
aWxlU3RyZWFtLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlU3RyZWFtLmg6CisgICAgICAg
ICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vU291cmNlc0dM
aWIudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL0ZpbGVNb25pdG9yQ29jb2EubW06Cisg
ICAgICAgICogcGxhdGZvcm0vZ2xpYi9GaWxlTW9uaXRvckdMaWIuY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW06
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lv
bkFWU3RyZWFtU2Vzc2lvbi5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLm1tOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mv
UXVpY2tMb29rLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0
ZWJvYXJkLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9C
bG9iUmVnaXN0cnlJbXBsLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNv
dXJjZUhhbmRsZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1t
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5Lmg6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRm9ybURhdGFTdHJlYW0uaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9tYWMvQmxvYkRhdGFGaWxlUmVmZXJlbmNlTWFjLm1tOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9z
cWwvU1FMaXRlRmlsZVN5c3RlbS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9oeXBoZW4v
SHlwaGVuYXRpb25MaWJIeXBoZW4uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TZWFyY2hQ
b3B1cE1lbnVEQi5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsuY3BwOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJUaGVtZVdpbi5jcHA6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9S
ZWdpc3RyYXRpb25EYXRhYmFzZS5jcHA6CisKIDIwMTktMDEtMjIgIEZ1amlpIEhpcm9ub3JpICA8
SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAgICAgW1dpbkNhaXJvXVtXZWJLaXRUZXN0
UnVubmVyXSBOdWxsIGRlcmVmZXJlbmNlIG9mIEdyYXBoaWNzQ29udGV4dDo6bV9kYXRhIGluIEdy
YXBoaWNzQ29udGV4dDo6cmVsZWFzZVdpbmRvd3NDb250ZXh0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRl
eCAzOWQ4NGNmYjcyYjRlNDI1YmQ5NzNjOTdiNDY4ODlhZjVhYWQ1OTI1Li40MWE1ZmQ4ZmRmODQx
ZDM3YTE5OTk3NGE1ZmMyMzFiMDk3ZTg2ZGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMyBAQAorMjAxOS0wMS0yMiAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5j
b20+CisKKyAgICAgICAgTW92ZSBGaWxlU3lzdGVtIHRvIFdURgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzNjAyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBwYWwvUGxhdGZvcm1NYWMuY21ha2U6CisKIDIwMTktMDEtMjIgIERh
dmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBTd2l0Y2ggcmVtYWlu
aW5nIFF1aWNrTG9vayBzb2Z0LWxpbmtpbmcgaW4gV2ViQ29yZSwgV2ViS2l0IG92ZXIgdG8gUXVp
Y2tMb29rU29mdExpbmsue2NwcCxofQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBmODg0Njk3ZTYxNTQxMGNlOWJmOTMw
ZjEzOTIzMDI0MjFlNGQ2ZDRkLi41ZDM1OWRhNjdjNWUzZGE3ODAzMDg1NzE4MzQ0ZWYxMzFhOTE4
YTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDE5LTAxLTIyICBSb3NzIEtpcnNsaW5n
ICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KKworICAgICAgICBNb3ZlIEZpbGVTeXN0ZW0gdG8g
V1RGCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM2
MDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRT
dG9yYWdlLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9i
Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHA6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUJsb2JTdG9yYWdlLmNwcDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmNwcDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsQ29jb2EubW06
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsU291
cC5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RhdGlz
dGljcy5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3Rv
cmFnZS5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNr
Q29jb2EubW06CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25D
b2NvYS5tbToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nlc3NNYWMu
bW06CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3Bw
OgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvdW5peC9QbHVnaW5Qcm9jZXNzTWFpblVuaXguY3Bw
OgorICAgICAgICAqIFNoYXJlZC9QZXJzaXN0ZW5jeVV0aWxzLmNwcDoKKyAgICAgICAgKiBTaGFy
ZWQvUGx1Z2lucy9OZXRzY2FwZS91bml4L05ldHNjYXBlUGx1Z2luTW9kdWxlVW5peC5jcHA6Cisg
ICAgICAgICogU2hhcmVkL1BsdWdpbnMvdW5peC9QbHVnaW5TZWFyY2hQYXRoLmNwcDoKKyAgICAg
ICAgKiBTaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5oOgorICAgICAgICAqIFNoYXJlZC9nbGliL1By
b2Nlc3NFeGVjdXRhYmxlUGF0aEdMaWIuY3BwOgorICAgICAgICAqIFNoYXJlZC9pb3MvQ2hpbGRQ
cm9jZXNzSU9TLm1tOgorICAgICAgICAqIFNoYXJlZC9tYWMvQ2hpbGRQcm9jZXNzTWFjLm1tOgor
ICAgICAgICAqIFNoYXJlZC9tYWMvU2FuZGJveEV4dGVuc2lvbk1hYy5tbToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2dsaWIvQVBJV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3QuY3BwOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL3dpbi9BUElXZWJzaXRlRGF0YVN0b3JlV2luLmNwcDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHA6CisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9X
ZWJQcm9jZXNzUG9vbENvY29hLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3
SW1wbC5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3Bw
OgorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHA6CisgICAg
ICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvQnViYmxld3JhcExhdW5jaGVyLmNwcDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9Qcm9jZXNzTGF1bmNoZXJHTGliLmNwcDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9ndGsvUGx1Z2luSW5mb0NhY2hlLmNwcDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2luUHJvY2Vzc1Byb3h5TWFjLm1tOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luSW5mb1N0b3JlVW5peC5jcHA6
CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJveHlVbml4
LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5jcHA6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3Bw
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJh
Y2tlci5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVE
YXRhU3RvcmVDb2NvYS5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Byb3h5
R0xpYi5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5j
cHA6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJQcm9jZXNzUG9vbEd0ay5jcHA6CisgICAg
ICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAg
ICogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0ZpbGVVcGxvYWRQYW5lbC5tbToKKyAgICAgICAgKiBV
SVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAgICAgKiBVSVByb2Nlc3Mvd2lu
L1dlYlByb2Nlc3NQb29sV2luLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3Mvd2luL1dlYlZpZXcu
Y3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy93cGUvV2ViUHJvY2Vzc1Bvb2xXUEUuY3BwOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0RXh0ZW5zaW9u
TWFuYWdlci5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9nbGliL0lu
amVjdGVkQnVuZGxlR2xpYi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dl
Yk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYkluc3BlY3RvclVJR3RrLmNwcDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL1dlYkluc3BlY3RvclVJV2luLmNwcDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbToKKwogMjAxOS0wMS0yMiAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCBhbiBp
bnRlcm5hbCBidWlsZCBmYWlsdXJlIGFmdGVyIHIyNDAyOTIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKaW5k
ZXggODdmZThjM2E4YzYxNmEwNDc1ZDRhZjM3NDY5NGQ0MjZlYzZmZWY4NC4uNTUxNjRhMTk4NDk0
ZTYwZTVlNzNlYTFhMDlhYjk2OTE4NGY3ZjY1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxOS0wMS0yMiAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29u
eS5jb20+CisKKyAgICAgICAgTW92ZSBGaWxlU3lzdGVtIHRvIFdURgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzNjAyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VBcmVhU3lu
Yy5jcHA6CisgICAgICAgICogU3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIuY3BwOgorICAgICAg
ICAqIFN0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwOgorCiAyMDE5LTAxLTIyICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRml4IHNvbWUgYnVp
bGRzIGFmdGVyIHIyNDAyOTIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBjMDdmNDBm
MmJhYjVkODkxZmZmMzg3NjgyYTU0YWE3MTk5NTdkMjI1Li40NjQ4ZGIwOTQxNTA3NzFhNjU1NWYy
NzMwMjk2OTY4Nzk1ZDY4MDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTQgQEAKKzIwMTktMDEtMjIgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnku
Y29tPgorCisgICAgICAgIE1vdmUgRmlsZVN5c3RlbSB0byBXVEYKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzYwMgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWlzYy9XZWJOU0ZpbGVNYW5hZ2VyRXh0
cmFzLm1tOgorICAgICAgICAqIFN0b3JhZ2UvV2ViRGF0YWJhc2VQcm92aWRlci5tbToKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisKIDIwMTktMDEtMjIgIEFsZXggQ2hyaXN0ZW5zZW4g
IDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBNb3ZlIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiBvd25lcnNoaXAgdG8gTmV0d29ya1Byb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5n
ZUxvZwppbmRleCA0YTZjOTAzYmFmMGVlMjFmNmQ4NDE1MzYyOGNmY2FlNTg2ZWNkMTVkLi5iMWVi
NjU3NDYyYzc2ODVmYTllZjM3YjFhNGUxODAxZjYxZjQwODA2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTktMDEtMjIgIFJvc3MgS2lyc2xpbmcgIDxy
b3NzLmtpcnNsaW5nQHNvbnkuY29tPgorCisgICAgICAgIE1vdmUgRmlsZVN5c3RlbSB0byBXVEYK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzYwMgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUGx1Z2lu
cy9QbHVnaW5EYXRhYmFzZS5jcHA6CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5QYWNrYWdlLmg6
CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5TdHJlYW0uaDoKKyAgICAgICAgKiBXZWJBcHBsaWNh
dGlvbkNhY2hlLmNwcDoKKyAgICAgICAgKiBXZWJEYXRhYmFzZU1hbmFnZXIuY3BwOgorICAgICAg
ICAqIFdlYkRvd25sb2FkQ3VybC5jcHA6CisgICAgICAgICogV2ViUHJlZmVyZW5jZXMuY3BwOgor
ICAgICAgICAqIFdlYlZpZXcuY3BwOgorCiAyMDE5LTAxLTIyICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgTW92ZSBOZXR3b3JrU3RvcmFnZVNl
c3Npb24gb3duZXJzaGlwIHRvIE5ldHdvcmtQcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCBhMjIzOTQ5MGQxMTJkY2E0NmE1YWE0YmNkZWQzNWZkYmNh
YWVjOWU5Li5kMDhjNzlmMmI4M2E4ZTEzZmVkZGI5Y2MxMTlmMzFhMWE5Zjk3NjdhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTg5LDYgKzg5LDExIEBACiAJ
CTkzOTM0QkQ1MThBMUYxNjkwMEQwRDZBMSAvKiBTdHJpbmdWaWV3Q0YuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM5MzRCRDQxOEExRjE2OTAwRDBE
NkExIC8qIFN0cmluZ1ZpZXdDRi5jcHAgKi87IH07CiAJCTkzRjE5OTNFMTlENzk1OEQwMEMyMzkw
QiAvKiBTdHJpbmdWaWV3LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDkzRjE5OTNEMTlENzk1OEQwMEMyMzkwQiAvKiBTdHJpbmdWaWV3LmNwcCAqLzsg
fTsKIAkJOUJDNzBGMDUxNzZDMzc5RDAwMTAxREVDIC8qIEF0b21pY1N0cmluZ1RhYmxlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCQzcwRjA0MTc2
QzM3OUQwMDEwMURFQyAvKiBBdG9taWNTdHJpbmdUYWJsZS5jcHAgKi87IH07CisJCUEzMzFEOTVC
MjFGMjQ5OTIwMDlGMDJBQSAvKiBGaWxlU3lzdGVtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzMzFEOTVBMjFGMjQ5OTIwMDlGMDJBQSAvKiBGaWxl
U3lzdGVtLmNwcCAqLzsgfTsKKwkJQTMzMUQ5NUQyMUYyNDlFNDAwOUYwMkFBIC8qIEZpbGVTeXN0
ZW1DRi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
MzMxRDk1QzIxRjI0OUU0MDA5RjAyQUEgLyogRmlsZVN5c3RlbUNGLmNwcCAqLzsgfTsKKwkJQTMz
MUQ5NUYyMUYyNDlGNjAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1Db2NvYS5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzMzFEOTVFMjFGMjQ5RjYwMDlGMDJB
QSAvKiBGaWxlU3lzdGVtQ29jb2EubW0gKi87IH07CisJCUEzMzFEOTYxMjFGMjRBMEEwMDlGMDJB
QSAvKiBGaWxlU3lzdGVtTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTMzMUQ5NjAyMUYyNEEwQTAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1NYWMubW0g
Ki87IH07CisJCUEzMzFEOTY3MjFGMjRBQkQwMDlGMDJBQSAvKiBGaWxlU3lzdGVtUE9TSVguY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTMzMUQ5NjYy
MUYyNEFCRDAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1QT1NJWC5jcHAgKi87IH07CiAJCUEzQjcyNUVD
OTg3NDQ2QUQ5M0YxQTQ0MCAvKiBSYW5kb21EZXZpY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzhGNTk3Q0EyQTU3NDE3RkJBQjkyRkQ2IC8qIFJh
bmRvbURldmljZS5jcHAgKi87IH07CiAJCUEzRTRERDkzMUYzQTgwMzQwMERFRDBCNCAvKiBUZXh0
U3RyZWFtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEEzRTRERDkxMUYzQTgwMzQwMERFRDBCNCAvKiBUZXh0U3RyZWFtLmNwcCAqLzsgfTsKIAkJQTVC
QTE1RjMxODI0MzNBOTAwQTgyRTY5IC8qIFN0cmluZ0NvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVCQTE1RjIxODI0MzNBOTAwQTgyRTY5IC8q
IFN0cmluZ0NvY29hLm1tICovOyB9OwpAQCAtNDMwLDggKzQzNSwxNiBAQAogCQk5QzY3QzU0MjU4
OTM0OEUyODVCNDk2OTkgLyogSW5kZXhlZENvbnRhaW5lckl0ZXJhdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluZGV4ZWRDb250YWluZXJJdGVyYXRvci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBMzBENDEyQzFGMERFMEJBMDBCNzE5NTQgLyogU29mdExp
bmtpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU29mdExpbmtpbmcuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTMwRDQxMkQxRjBERTEzRjAwQjcxOTU0IC8q
IFNvZnRMaW5raW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvZnRMaW5r
aW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEzMzFEOTU4MjFGMjQ5NzgwMDlG
MDJBQSAvKiBGaWxlTWV0YWRhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RmlsZU1ldGFkYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEzMzFEOTU5MjFG
MjQ5OTIwMDlGMDJBQSAvKiBGaWxlU3lzdGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEZpbGVTeXN0ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTMzMUQ5
NUEyMUYyNDk5MjAwOUYwMkFBIC8qIEZpbGVTeXN0ZW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRmlsZVN5c3RlbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUEzMzFEOTVDMjFGMjQ5RTQwMDlGMDJBQSAvKiBGaWxlU3lzdGVtQ0YuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmlsZVN5c3RlbUNGLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTMzMUQ5NUUyMUYyNDlGNjAwOUYwMkFBIC8qIEZpbGVT
eXN0ZW1Db2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZp
bGVTeXN0ZW1Db2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTMzMUQ5NjAy
MUYyNEEwQTAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1NYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBGaWxlU3lzdGVtTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlBMzMxRDk2NjIxRjI0QUJEMDA5RjAyQUEgLyogRmlsZVN5c3RlbVBPU0lYLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZpbGVTeXN0ZW1QT1NJWC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzNkUxNkY3MjE2RkY4MjgwMDhERDg3
RSAvKiBXVEZTZW1hcGhvcmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV1RG
U2VtYXBob3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzQUI2RTZBMUYzRTFB
RDYwMDlDMTRCMSAvKiBWYWx1ZVRvU3RyaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFZhbHVlVG9TdHJpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTNE
MjczQjkyMUYyRUU5MTAwODY2OTcxIC8qIE1ldGFkYXRhU1BJLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE1ldGFkYXRhU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUEzRTRERDkxMUYzQTgwMzQwMERFRDBCNCAvKiBUZXh0U3RyZWFtLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRTdHJlYW0uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBM0U0REQ5MjFGM0E4MDM0MDBERUQwQjQgLyogVGV4dFN0cmVhbS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0U3RyZWFtLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1MDk4QUZGMUMxNjlFMDcwMDA4Nzc5NyAvKiBTYW5kYm94
U1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNhbmRib3hTUEkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcxNyw2ICs3MzAsNyBAQAogCQkJY2hpbGRyZW4g
PSAoCiAJCQkJNUMxRjA1OTEyMTY0MzU2QjAwMzkzMDJDIC8qIENGVVJMRXh0cmFzLmNwcCAqLywK
IAkJCQk1QzFGMDU5MjIxNjQzNTZCMDAzOTMwMkMgLyogQ0ZVUkxFeHRyYXMuaCAqLywKKwkJCQlB
MzMxRDk1QzIxRjI0OUU0MDA5RjAyQUEgLyogRmlsZVN5c3RlbUNGLmNwcCAqLywKIAkJCQlDMkJD
RkM0MTFGNjFENjE2MDBDOTIyMkMgLyogTGFuZ3VhZ2VDRi5jcHAgKi8sCiAJCQkJMkNERUQwRUUx
ODExNUMzODAwNERCQTcwIC8qIFJ1bkxvb3BDRi5jcHAgKi8sCiAJCQkJMUFGREU2NDcxOTUyMDFD
MzAwQzQ4RkZBIC8qIFR5cGVDYXN0c0NGLmggKi8sCkBAIC03NzQsNiArNzg4LDIyIEBACiAJCQlu
YW1lID0gU291cmNlOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJQTMzMUQ5
NjMyMUYyNEEyRTAwOUYwMkFBIC8qIHBvc2l4ICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJ
CQljaGlsZHJlbiA9ICgKKwkJCQlBMzMxRDk2NjIxRjI0QUJEMDA5RjAyQUEgLyogRmlsZVN5c3Rl
bVBPU0lYLmNwcCAqLywKKwkJCSk7CisJCQlwYXRoID0gcG9zaXg7CisJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOworCQl9OworCQlBM0QyNzNCODIxRjJFRTdCMDA4NjY5NzEgLyogbWFjICovID0g
eworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlBM0QyNzNCOTIxRjJF
RTkxMDA4NjY5NzEgLyogTWV0YWRhdGFTUEkuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gbWFjOwor
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJQTVCQTE1RjExODI0MzM5RjAwQTgy
RTY5IC8qIGNvY29hICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
QEAgLTgwNyw2ICs4MzcsNyBAQAogCQkJCTFGQTQ3Qzg3MTUyNTAyREEwMDU2OEQxQiAvKiBpb3Mg
Ki8sCiAJCQkJQThBNDcyQzQxNTFBODI1QTAwNDEyM0ZGIC8qIG1hYyAqLywKIAkJCQlFNDNBNDY4
NTFFMjI4QjU3MDAyNzZCMDUgLyogcGVyc2lzdGVuY2UgKi8sCisJCQkJQTMzMUQ5NjMyMUYyNEEy
RTAwOUYwMkFBIC8qIHBvc2l4ICovLAogCQkJCUNFRjQ4MjBDMTlEQTM0NzYwMENDMDRCOCAvKiBz
cGkgKi8sCiAJCQkJQThBNDczMUIxNTFBODI1QjAwNDEyM0ZGIC8qIHRleHQgKi8sCiAJCQkJQThB
NDczMzkxNTFBODI1QjAwNDEyM0ZGIC8qIHRocmVhZHMgKi8sCkBAIC04OTQsOCArOTI1LDExIEBA
CiAJCQkJQThBNDcyQTIxNTFBODI1QTAwNDEyM0ZGIC8qIEZhc3RNYWxsb2MuaCAqLywKIAkJCQkw
Rjc5QzdDMzFFNzM1MTE4MDBFQjM0RDEgLyogRmFzdFRMUy5oICovLAogCQkJCUIzOEZEN0JDMTY4
OTUzRTgwMDY1Qzk2OSAvKiBGZWF0dXJlRGVmaW5lcy5oICovLAorCQkJCUEzMzFEOTU4MjFGMjQ5
NzgwMDlGMDJBQSAvKiBGaWxlTWV0YWRhdGEuaCAqLywKIAkJCQkwRjlEMzM1QjE2NURCQTczMDA1
QUQzODcgLyogRmlsZVByaW50U3RyZWFtLmNwcCAqLywKIAkJCQkwRjlEMzM1QzE2NURCQTczMDA1
QUQzODcgLyogRmlsZVByaW50U3RyZWFtLmggKi8sCisJCQkJQTMzMUQ5NUEyMUYyNDk5MjAwOUYw
MkFBIC8qIEZpbGVTeXN0ZW0uY3BwICovLAorCQkJCUEzMzFEOTU5MjFGMjQ5OTIwMDlGMDJBQSAv
KiBGaWxlU3lzdGVtLmggKi8sCiAJCQkJMEYyQjY2QTUxN0I2QjRGNzAwQTdBRTNGIC8qIEZsaXBC
eXRlcy5oICovLAogCQkJCUZFODZBODc0MUU1OTQ0MDIwMDExMUJCRiAvKiBGb3JiaWRIZWFwQWxs
b2NhdGlvbi5oICovLAogCQkJCUE4QTQ3MkE2MTUxQTgyNUEwMDQxMjNGRiAvKiBGb3J3YXJkLmgg
Ki8sCkBAIC0xMTkwLDYgKzEyMjQsNyBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMUE0MjhCOEIx
QzhGODlERDAwNTFFOUVCIC8qIEFwcEtpdENvbXBhdGliaWxpdHlEZWNsYXJhdGlvbnMuaCAqLywK
IAkJCQkxQUNBREQ4MjE4ODQ0ODAxMDBEOEI3MUQgLyogRGVwcmVjYXRlZFN5bWJvbHNVc2VkQnlT
YWZhcmkubW0gKi8sCisJCQkJQTMzMUQ5NjAyMUYyNEEwQTAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1N
YWMubW0gKi8sCiAJCQkJNTM1MzRGMjkxRUMwRTEwRTAwMTQxQjJGIC8qIE1hY2hFeGNlcHRpb25z
LmRlZnMgKi8sCiAJCQkpOwogCQkJcGF0aCA9IG1hYzsKQEAgLTEzMTcsNiArMTM1Miw3IEBACiAJ
CQkJRENFRTIxRjkxQ0VBNzUyRjAwMEMyMzk2IC8qIGNmICovLAogCQkJCUNFNDY1MTZDMTlEQjFG
QjQwMDNFQ0EwNSAvKiBjb2NvYSAqLywKIAkJCQlDRTczRTAyMzE5RENCN0FCMDA1ODBENUMgLyog
ZGFyd2luICovLAorCQkJCUEzRDI3M0I4MjFGMkVFN0IwMDg2Njk3MSAvKiBtYWMgKi8sCiAJCQkp
OwogCQkJcGF0aCA9IHNwaTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xMzUxLDYg
KzEzODcsNyBAQAogCQkJCUUzOEM0MTI0MUVCNEUwNEMwMDQyOTU3RCAvKiBDUFVUaW1lQ29jb2Eu
Y3BwICovLAogCQkJCTE0M0RERTk3MjBDOEJFOTkwMDdGNzZGQSAvKiBFbnRpdGxlbWVudHMuaCAq
LywKIAkJCQkxNDNEREU5NTIwQzhCQzM3MDA3Rjc2RkEgLyogRW50aXRsZW1lbnRzLm1tICovLAor
CQkJCUEzMzFEOTVFMjFGMjQ5RjYwMDlGMDJBQSAvKiBGaWxlU3lzdGVtQ29jb2EubW0gKi8sCiAJ
CQkJN0E2RUJBMzMyMDc0NkMzNDAwNEY5QzQ0IC8qIE1hY2hTZW5kUmlnaHQuY3BwICovLAogCQkJ
CUE4QTQ3MkM1MTUxQTgyNUEwMDQxMjNGRiAvKiBNYWluVGhyZWFkQ29jb2EubW0gKi8sCiAJCQkJ
QURGMkNFNjUxRTM5RjEwNjAwNjg4OURCIC8qIE1lbW9yeUZvb3RwcmludENvY29hLmNwcCAqLywK
QEAgLTE0NzYsNiArMTUxMywxMSBAQAogCQkJCTBGN0M1RkI2MUQ4ODVDRjIwMDQ0RjVFMiAvKiBG
YXN0Qml0VmVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0MzMTUxQTgyNUIwMDQx
MjNGRiAvKiBGYXN0TWFsbG9jLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOUQzMzYwMTY1REJB
NzMwMDVBRDM4NyAvKiBGaWxlUHJpbnRTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTMz
MUQ5NUIyMUYyNDk5MjAwOUYwMkFBIC8qIEZpbGVTeXN0ZW0uY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJQTMzMUQ5NUQyMUYyNDlFNDAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1DRi5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQlBMzMxRDk1RjIxRjI0OUY2MDA5RjAyQUEgLyogRmlsZVN5c3RlbUNvY29hLm1t
IGluIFNvdXJjZXMgKi8sCisJCQkJQTMzMUQ5NjEyMUYyNEEwQTAwOUYwMkFBIC8qIEZpbGVTeXN0
ZW1NYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQlBMzMxRDk2NzIxRjI0QUJEMDA5RjAyQUEgLyog
RmlsZVN5c3RlbVBPU0lYLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0I1MTUxQTgyNUIw
MDQxMjNGRiAvKiBmaXhlZC1kdG9hLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJMUExRDhCOUUxNzMx
ODc5ODAwMTQxREE0IC8qIEZ1bmN0aW9uRGlzcGF0Y2hlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRjVCRjE3NjFGMjNENDlBMDAyOUQ5MUQgLyogR2lnYWNhZ2UuY3BwIGluIFNvdXJjZXMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XVEYv
d3RmL0NNYWtlTGlzdHMudHh0CmluZGV4IGNlZTFjY2UxZTU3MTg0ZDEzYmQyY2Q1MTllZjZhMjBk
ZmZiMWE5NmEuLjdkODU4MzMyMGY0OWM2MTA0MDFjN2I4YWI0NDYzOTZkODhjMTUwZTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XVEYvd3Rm
L0NNYWtlTGlzdHMudHh0CkBAIC02MSw3ICs2MSw5IEBAIHNldChXVEZfUFVCTElDX0hFQURFUlMK
ICAgICBGYXN0TWFsbG9jLmgKICAgICBGYXN0VExTLmgKICAgICBGZWF0dXJlRGVmaW5lcy5oCisg
ICAgRmlsZU1ldGFkYXRhLmgKICAgICBGaWxlUHJpbnRTdHJlYW0uaAorICAgIEZpbGVTeXN0ZW0u
aAogICAgIEZsaXBCeXRlcy5oCiAgICAgRm9yYmlkSGVhcEFsbG9jYXRpb24uaAogICAgIEZvcndh
cmQuaApAQCAtMzUzLDYgKzM1NSw3IEBAIHNldChXVEZfU09VUkNFUwogICAgIEZhc3RCaXRWZWN0
b3IuY3BwCiAgICAgRmFzdE1hbGxvYy5jcHAKICAgICBGaWxlUHJpbnRTdHJlYW0uY3BwCisgICAg
RmlsZVN5c3RlbS5jcHAKICAgICBGdW5jdGlvbkRpc3BhdGNoZXIuY3BwCiAgICAgR2lnYWNhZ2Uu
Y3BwCiAgICAgR2xvYmFsVmVyc2lvbi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Zp
bGVNZXRhZGF0YS5oIGIvU291cmNlL1dURi93dGYvRmlsZU1ldGFkYXRhLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MGJiODhmYzg0Zjk0YWY0Y2NmMWM1ODBlMGQ1NmEyYjY1ODExMGY5OAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVNZXRhZGF0YS5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgorCituYW1lc3BhY2UgV1RGIHsKKwor
c3RydWN0IEZpbGVNZXRhZGF0YSB7CisgICAgLy8gVGhlIGxhc3QgbW9kaWZpY2F0aW9uIHRpbWUg
b2YgdGhlIGZpbGUsIGluIHNlY29uZHMuCisgICAgV2FsbFRpbWUgbW9kaWZpY2F0aW9uVGltZTsK
KworICAgIC8vIFRoZSBsZW5ndGggb2YgdGhlIGZpbGUgaW4gYnl0ZXMuCisgICAgbG9uZyBsb25n
IGxlbmd0aDsKKworICAgIGJvb2wgaXNIaWRkZW47CisKKyAgICBlbnVtIGNsYXNzIFR5cGUgeyBG
aWxlLCBEaXJlY3RvcnksIFN5bWJvbGljTGluayB9OworICAgIFR5cGUgdHlwZTsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdURgorCit1c2luZyBXVEY6OkZpbGVNZXRhZGF0YTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3Rl
bS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMTVmN2JiMDNiYTAxNzk5N2UzYzk5NWYzODg1Mjk2YTZmNGEyMTcw
MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwCkBAIC0w
LDAgKzEsMzY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8d3Rm
L0ZpbGVTeXN0ZW0uaD4KKworI2luY2x1ZGUgPHd0Zi9GaWxlTWV0YWRhdGEuaD4KKyNpbmNsdWRl
IDx3dGYvSGV4TnVtYmVyLmg+CisjaW5jbHVkZSA8d3RmL1Njb3BlLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKwor
I2lmICFPUyhXSU5ET1dTKQorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8c3lzL21tYW4u
aD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmCisK
K25hbWVzcGFjZSBXVEYgeworCituYW1lc3BhY2UgRmlsZVN5c3RlbSB7CisKKy8vIFRoZSBmb2xs
b3dpbmcgbG93ZXItQVNDSUkgY2hhcmFjdGVycyBuZWVkIGVzY2FwaW5nIHRvIGJlIHVzZWQgaW4g
YSBmaWxlbmFtZQorLy8gYWNyb3NzIGFsbCBzeXN0ZW1zLCBpbmNsdWRpbmcgV2luZG93czoKKy8v
ICAgICAtIFVucHJpbnRhYmxlIEFTQ0lJICgwMC0xRikKKy8vICAgICAtIFNwYWNlICAgICAgICAg
ICAgICgyMCkKKy8vICAgICAtIERvdWJsZSBxdW90ZSAgICAgICgyMikKKy8vICAgICAtIFBlcmNl
bnQgICAgICAgICAgICgyNSkgKGVzY2FwZWQgYmVjYXVzZSBpdCBpcyBvdXIgZXNjYXBlIGNoYXJh
Y3RlcikKKy8vICAgICAtIEFzdGVyaXNrICAgICAgICAgICgyQSkKKy8vICAgICAtIFNsYXNoICAg
ICAgICAgICAgICgyRikKKy8vICAgICAtIENvbG9uICAgICAgICAgICAgICgzQSkKKy8vICAgICAt
IExlc3MtdGhhbiAgICAgICAgICgzQykKKy8vICAgICAtIEdyZWF0ZXItdGhhbiAgICAgICgzRSkK
Ky8vICAgICAtIFF1ZXN0aW9uIE1hcmsgICAgICgzRikKKy8vICAgICAtIEJhY2tzbGFzaCAgICAg
ICAgICg1QykKKy8vICAgICAtIFBpcGUgICAgICAgICAgICAgICg3QykKKy8vICAgICAtIERlbGV0
ZSAgICAgICAgICAgICg3RikKKworc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNFc2NhcGluZ1sxMjhd
ID0geworICAgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUs
ICB0cnVlLCAgLyogMDAtMDcgKi8KKyAgICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1
ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIC8qIDA4LTBGICovCisKKyAgICB0cnVlLCAgdHJ1ZSwg
IHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIC8qIDEwLTE3ICovCisg
ICAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUs
ICAvKiAxOC0xRiAqLworCisgICAgdHJ1ZSwgIGZhbHNlLCB0cnVlLCAgZmFsc2UsIGZhbHNlLCB0
cnVlLCAgZmFsc2UsIGZhbHNlLCAvKiAyMC0yNyAqLworICAgIGZhbHNlLCBmYWxzZSwgdHJ1ZSwg
IGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCAgLyogMjgtMkYgKi8KKworICAgIGZh
bHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgLyog
MzAtMzcgKi8KKyAgICBmYWxzZSwgZmFsc2UsIHRydWUsICBmYWxzZSwgdHJ1ZSwgIGZhbHNlLCB0
cnVlLCAgdHJ1ZSwgIC8qIDM4LTNGICovCisKKyAgICBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxz
ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIC8qIDQwLTQ3ICovCisgICAgZmFsc2UsIGZh
bHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAvKiA0OC00RiAq
LworCisgICAgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2Us
IGZhbHNlLCAvKiA1MC01NyAqLworICAgIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVl
LCAgZmFsc2UsIGZhbHNlLCBmYWxzZSwgLyogNTgtNUYgKi8KKworICAgIGZhbHNlLCBmYWxzZSwg
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgLyogNjAtNjcgKi8KKyAg
ICBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2Us
IC8qIDY4LTZGICovCisKKyAgICBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZh
bHNlLCBmYWxzZSwgZmFsc2UsIC8qIDcwLTc3ICovCisgICAgZmFsc2UsIGZhbHNlLCBmYWxzZSwg
ZmFsc2UsIHRydWUsICBmYWxzZSwgZmFsc2UsIHRydWUsICAvKiA3OC03RiAqLworfTsKKworc3Rh
dGljIGlubGluZSBib29sIHNob3VsZEVzY2FwZVVDaGFyKFVDaGFyIGNoYXJhY3RlciwgVUNoYXIg
cHJldmlvdXNDaGFyYWN0ZXIsIFVDaGFyIG5leHRDaGFyYWN0ZXIpCit7CisgICAgaWYgKGNoYXJh
Y3RlciA8PSAxMjcpCisgICAgICAgIHJldHVybiBuZWVkc0VzY2FwaW5nW2NoYXJhY3Rlcl07CisK
KyAgICBpZiAoVTE2X0lTX0xFQUQoY2hhcmFjdGVyKSAmJiAhVTE2X0lTX1RSQUlMKG5leHRDaGFy
YWN0ZXIpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmIChVMTZfSVNfVFJBSUwoY2hh
cmFjdGVyKSAmJiAhVTE2X0lTX0xFQUQocHJldmlvdXNDaGFyYWN0ZXIpKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKworU3RyaW5nIGVuY29kZUZvckZpbGVO
YW1lKGNvbnN0IFN0cmluZyYgaW5wdXRTdHJpbmcpCit7CisgICAgdW5zaWduZWQgbGVuZ3RoID0g
aW5wdXRTdHJpbmcubGVuZ3RoKCk7CisgICAgaWYgKCFsZW5ndGgpCisgICAgICAgIHJldHVybiBp
bnB1dFN0cmluZzsKKworICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OworICAgIHJlc3VsdC5yZXNl
cnZlQ2FwYWNpdHkobGVuZ3RoKTsKKworICAgIFVDaGFyIHByZXZpb3VzQ2hhcmFjdGVyOworICAg
IFVDaGFyIGNoYXJhY3RlciA9IDA7CisgICAgVUNoYXIgbmV4dENoYXJhY3RlciA9IGlucHV0U3Ry
aW5nWzBdOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAg
ICAgICBwcmV2aW91c0NoYXJhY3RlciA9IGNoYXJhY3RlcjsKKyAgICAgICAgY2hhcmFjdGVyID0g
bmV4dENoYXJhY3RlcjsKKyAgICAgICAgbmV4dENoYXJhY3RlciA9IGkgKyAxIDwgbGVuZ3RoID8g
aW5wdXRTdHJpbmdbaSArIDFdIDogMDsKKworICAgICAgICBpZiAoc2hvdWxkRXNjYXBlVUNoYXIo
Y2hhcmFjdGVyLCBwcmV2aW91c0NoYXJhY3RlciwgbmV4dENoYXJhY3RlcikpIHsKKyAgICAgICAg
ICAgIGlmIChjaGFyYWN0ZXIgPD0gMjU1KSB7CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZCgnJScpOworICAgICAgICAgICAgICAgIGFwcGVuZEJ5dGVBc0hleChjaGFyYWN0ZXIsIHJlc3Vs
dCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRM
aXRlcmFsKCIlKyIpOworICAgICAgICAgICAgICAgIGFwcGVuZEJ5dGVBc0hleChjaGFyYWN0ZXIg
Pj4gOCwgcmVzdWx0KTsKKyAgICAgICAgICAgICAgICBhcHBlbmRCeXRlQXNIZXgoY2hhcmFjdGVy
LCByZXN1bHQpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoY2hhcmFjdGVyKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0LnRvU3Ry
aW5nKCk7Cit9CisKK1N0cmluZyBkZWNvZGVGcm9tRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBpbnB1
dFN0cmluZykKK3sKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBpbnB1dFN0cmluZy5sZW5ndGgoKTsK
KyAgICBpZiAoIWxlbmd0aCkKKyAgICAgICAgcmV0dXJuIGlucHV0U3RyaW5nOworCisgICAgU3Ry
aW5nQnVpbGRlciByZXN1bHQ7CisgICAgcmVzdWx0LnJlc2VydmVDYXBhY2l0eShsZW5ndGgpOwor
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgIGlm
IChpbnB1dFN0cmluZ1tpXSAhPSAnJScpIHsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoaW5w
dXRTdHJpbmdbaV0pOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAg
ICAvLyBJZiB0aGUgaW5wdXQgc3RyaW5nIGlzIGEgdmFsaWQgZW5jb2RlZCBmaWxlbmFtZSwgaXQg
bXVzdCBiZSBhdCBsZWFzdCAyIGNoYXJhY3RlcnMgbG9uZ2VyCisgICAgICAgIC8vIHRoYW4gdGhl
IGN1cnJlbnQgaW5kZXggdG8gYWNjb3VudCBmb3IgdGhpcyBwZXJjZW50IGVuY29kZWQgdmFsdWUu
CisgICAgICAgIGlmIChpICsgMiA+PSBsZW5ndGgpCisgICAgICAgICAgICByZXR1cm4geyB9Owor
CisgICAgICAgIGlmIChpbnB1dFN0cmluZ1tpKzFdICE9ICcrJykgeworICAgICAgICAgICAgaWYg
KCFpc0FTQ0lJSGV4RGlnaXQoaW5wdXRTdHJpbmdbaSArIDFdKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4geyB9OworICAgICAgICAgICAgaWYgKCFpc0FTQ0lJSGV4RGlnaXQoaW5wdXRTdHJpbmdb
aSArIDJdKSkKKyAgICAgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZCh0b0FTQ0lJSGV4VmFsdWUoaW5wdXRTdHJpbmdbaSArIDFdLCBpbnB1dFN0cmluZ1tp
ICsgMl0pKTsKKyAgICAgICAgICAgIGkgKz0gMjsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICB9CisKKyAgICAgICAgLy8gSWYgdGhlIGlucHV0IHN0cmluZyBpcyBhIHZhbGlkIGVuY29k
ZWQgZmlsZW5hbWUsIGl0IG11c3QgYmUgYXQgbGVhc3QgNSBjaGFyYWN0ZXJzIGxvbmdlcgorICAg
ICAgICAvLyB0aGFuIHRoZSBjdXJyZW50IGluZGV4IHRvIGFjY291bnQgZm9yIHRoaXMgcGVyY2Vu
dCBlbmNvZGVkIHZhbHVlLgorICAgICAgICBpZiAoaSArIDUgPj0gbGVuZ3RoKQorICAgICAgICAg
ICAgcmV0dXJuIHsgfTsKKworICAgICAgICBpZiAoIWlzQVNDSUlIZXhEaWdpdChpbnB1dFN0cmlu
Z1tpICsgMl0pKQorICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgaWYgKCFpc0FTQ0lJ
SGV4RGlnaXQoaW5wdXRTdHJpbmdbaSArIDNdKSkKKyAgICAgICAgICAgIHJldHVybiB7IH07Cisg
ICAgICAgIGlmICghaXNBU0NJSUhleERpZ2l0KGlucHV0U3RyaW5nW2kgKyA0XSkpCisgICAgICAg
ICAgICByZXR1cm4geyB9OworICAgICAgICBpZiAoIWlzQVNDSUlIZXhEaWdpdChpbnB1dFN0cmlu
Z1tpICsgNV0pKQorICAgICAgICAgICAgcmV0dXJuIHsgfTsKKworICAgICAgICByZXN1bHQuYXBw
ZW5kKHRvQVNDSUlIZXhWYWx1ZShpbnB1dFN0cmluZ1tpICsgMl0sIGlucHV0U3RyaW5nW2kgKyAz
XSkgPDwgOCB8IHRvQVNDSUlIZXhWYWx1ZShpbnB1dFN0cmluZ1tpICsgNF0sIGlucHV0U3RyaW5n
W2kgKyA1XSkpOworICAgICAgICBpICs9IDU7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdC50
b1N0cmluZygpOworfQorCitTdHJpbmcgbGFzdENvbXBvbmVudE9mUGF0aElnbm9yaW5nVHJhaWxp
bmdTbGFzaChjb25zdCBTdHJpbmcmIHBhdGgpCit7CisjaWYgT1MoV0lORE9XUykKKyAgICBjaGFy
IHBhdGhTZXBhcmF0b3IgPSAnXFwnOworI2Vsc2UKKyAgICBjaGFyIHBhdGhTZXBhcmF0b3IgPSAn
Lyc7CisjZW5kaWYKKworICAgIGF1dG8gcG9zaXRpb24gPSBwYXRoLnJldmVyc2VGaW5kKHBhdGhT
ZXBhcmF0b3IpOworICAgIGlmIChwb3NpdGlvbiA9PSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJu
IHBhdGg7CisKKyAgICBzaXplX3QgZW5kT2ZTdWJzdHJpbmcgPSBwYXRoLmxlbmd0aCgpIC0gMTsK
KyAgICBpZiAocG9zaXRpb24gPT0gZW5kT2ZTdWJzdHJpbmcpIHsKKyAgICAgICAgLS1lbmRPZlN1
YnN0cmluZzsKKyAgICAgICAgcG9zaXRpb24gPSBwYXRoLnJldmVyc2VGaW5kKHBhdGhTZXBhcmF0
b3IsIGVuZE9mU3Vic3RyaW5nKTsKKyAgICB9CisKKyAgICByZXR1cm4gcGF0aC5zdWJzdHJpbmco
cG9zaXRpb24gKyAxLCBlbmRPZlN1YnN0cmluZyAtIHBvc2l0aW9uKTsKK30KKworYm9vbCBhcHBl
bmRGaWxlQ29udGVudHNUb0ZpbGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBQbGF0Zm9ybUZp
bGVIYW5kbGUmIHRhcmdldCkKK3sKKyAgICBhdXRvIHNvdXJjZSA9IG9wZW5GaWxlKHBhdGgsIEZp
bGVPcGVuTW9kZTo6UmVhZCk7CisKKyAgICBpZiAoIWlzSGFuZGxlVmFsaWQoc291cmNlKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgc3RhdGljIGludCBidWZmZXJTaXplID0gMSA8PCAx
OTsKKyAgICBWZWN0b3I8Y2hhcj4gYnVmZmVyKGJ1ZmZlclNpemUpOworCisgICAgYXV0byBmaWxl
Q2xvc2VyID0gV1RGOjptYWtlU2NvcGVFeGl0KFtzb3VyY2VdKCkgeworICAgICAgICBQbGF0Zm9y
bUZpbGVIYW5kbGUgaGFuZGxlID0gc291cmNlOworICAgICAgICBjbG9zZUZpbGUoaGFuZGxlKTsK
KyAgICB9KTsKKworICAgIGRvIHsKKyAgICAgICAgaW50IHJlYWRCeXRlcyA9IHJlYWRGcm9tRmls
ZShzb3VyY2UsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlclNpemUpOworCisgICAgICAgIGlmIChyZWFk
Qnl0ZXMgPCAwKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGlmICh3cml0
ZVRvRmlsZSh0YXJnZXQsIGJ1ZmZlci5kYXRhKCksIHJlYWRCeXRlcykgIT0gcmVhZEJ5dGVzKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGlmIChyZWFkQnl0ZXMgPCBidWZm
ZXJTaXplKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfSB3aGlsZSAodHJ1ZSk7CisK
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworCitib29sIGZpbGVzSGF2ZVNhbWVWb2x1
bWUoY29uc3QgU3RyaW5nJiBmaWxlQSwgY29uc3QgU3RyaW5nJiBmaWxlQikKK3sKKyAgICBhdXRv
IGZzUmVwRmlsZUEgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZUEpOworICAgIGF1dG8g
ZnNSZXBGaWxlQiA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWxlQik7CisKKyAgICBpZiAo
ZnNSZXBGaWxlQS5pc051bGwoKSB8fCBmc1JlcEZpbGVCLmlzTnVsbCgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBib29sIHJlc3VsdCA9IGZhbHNlOworCisgICAgYXV0byBmaWxlQURl
diA9IGdldEZpbGVEZXZpY2VJZChmc1JlcEZpbGVBKTsKKyAgICBhdXRvIGZpbGVCRGV2ID0gZ2V0
RmlsZURldmljZUlkKGZzUmVwRmlsZUIpOworCisgICAgaWYgKGZpbGVBRGV2ICYmIGZpbGVCRGV2
KQorICAgICAgICByZXN1bHQgPSAoZmlsZUFEZXYgPT0gZmlsZUJEZXYpOworCisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKworI2lmICFQTEFURk9STShNQUMpCisKK3ZvaWQgc2V0TWV0YWRhdGFVUkwo
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikKK3sKK30KKworYm9v
bCBjYW5FeGNsdWRlRnJvbUJhY2t1cCgpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29s
IGV4Y2x1ZGVGcm9tQmFja3VwKGNvbnN0IFN0cmluZyYpCit7CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCisjZW5kaWYKKworTWFwcGVkRmlsZURhdGE6On5NYXBwZWRGaWxlRGF0YSgpCit7CisjaWYg
IU9TKFdJTkRPV1MpCisgICAgaWYgKCFtX2ZpbGVEYXRhKQorICAgICAgICByZXR1cm47CisgICAg
bXVubWFwKG1fZmlsZURhdGEsIG1fZmlsZVNpemUpOworI2VuZGlmCit9CisKK01hcHBlZEZpbGVE
YXRhOjpNYXBwZWRGaWxlRGF0YShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBib29sJiBzdWNjZXNz
KQoreworI2lmIE9TKFdJTkRPV1MpCisgICAgLy8gRklYTUU6IEltcGxlbWVudCBtYXBwaW5nCisg
ICAgc3VjY2VzcyA9IGZhbHNlOworI2Vsc2UKKyAgICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKGZpbGVQYXRoKTsKKyAgICBpbnQgZmQgPSAhZnNSZXAuaXNOdWxsKCkg
PyBvcGVuKGZzUmVwLmRhdGEoKSwgT19SRE9OTFkpIDogLTE7CisgICAgaWYgKGZkIDwgMCkgewor
ICAgICAgICBzdWNjZXNzID0gZmFsc2U7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBz
dHJ1Y3Qgc3RhdCBmaWxlU3RhdDsKKyAgICBpZiAoZnN0YXQoZmQsICZmaWxlU3RhdCkpIHsKKyAg
ICAgICAgY2xvc2UoZmQpOworICAgICAgICBzdWNjZXNzID0gZmFsc2U7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBzaXplOworICAgIGlmICghV1RGOjpjb252ZXJ0U2Fm
ZWx5KGZpbGVTdGF0LnN0X3NpemUsIHNpemUpKSB7CisgICAgICAgIGNsb3NlKGZkKTsKKyAgICAg
ICAgc3VjY2VzcyA9IGZhbHNlOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFz
aXplKSB7CisgICAgICAgIGNsb3NlKGZkKTsKKyAgICAgICAgc3VjY2VzcyA9IHRydWU7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICB2b2lkKiBkYXRhID0gbW1hcCgwLCBzaXplLCBQUk9U
X1JFQUQsIE1BUF9GSUxFIHwgTUFQX1NIQVJFRCwgZmQsIDApOworICAgIGNsb3NlKGZkKTsKKwor
ICAgIGlmIChkYXRhID09IE1BUF9GQUlMRUQpIHsKKyAgICAgICAgc3VjY2VzcyA9IGZhbHNlOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc3VjY2VzcyA9IHRydWU7CisgICAgbV9maWxl
RGF0YSA9IGRhdGE7CisgICAgbV9maWxlU2l6ZSA9IHNpemU7CisjZW5kaWYKK30KKworUGxhdGZv
cm1GaWxlSGFuZGxlIG9wZW5BbmRMb2NrRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVPcGVu
TW9kZSBvcGVuTW9kZSwgT3B0aW9uU2V0PEZpbGVMb2NrTW9kZT4gbG9ja01vZGUpCit7CisgICAg
YXV0byBoYW5kbGUgPSBvcGVuRmlsZShwYXRoLCBvcGVuTW9kZSk7CisgICAgaWYgKGhhbmRsZSA9
PSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQorICAgICAgICByZXR1cm4gaW52YWxpZFBsYXRm
b3JtRmlsZUhhbmRsZTsKKworI2lmIFVTRShGSUxFX0xPQ0spCisgICAgYm9vbCBsb2NrZWQgPSBs
b2NrRmlsZShoYW5kbGUsIGxvY2tNb2RlKTsKKyAgICBBU1NFUlRfVU5VU0VEKGxvY2tlZCwgbG9j
a2VkKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGxvY2tNb2RlKTsKKyNlbmRpZgorCisgICAg
cmV0dXJuIGhhbmRsZTsKK30KKwordm9pZCB1bmxvY2tBbmRDbG9zZUZpbGUoUGxhdGZvcm1GaWxl
SGFuZGxlIGhhbmRsZSkKK3sKKyNpZiBVU0UoRklMRV9MT0NLKQorICAgIGJvb2wgdW5sb2NrZWQg
PSB1bmxvY2tGaWxlKGhhbmRsZSk7CisgICAgQVNTRVJUX1VOVVNFRCh1bmxvY2tlZCwgdW5sb2Nr
ZWQpOworI2VuZGlmCisgICAgY2xvc2VGaWxlKGhhbmRsZSk7Cit9CisKK2Jvb2wgZmlsZUlzRGly
ZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgU2hvdWxkRm9sbG93U3ltYm9saWNMaW5rcyBzaG91
bGRGb2xsb3dTeW1ib2xpY0xpbmtzKQoreworICAgIGF1dG8gbWV0YWRhdGEgPSBzaG91bGRGb2xs
b3dTeW1ib2xpY0xpbmtzID09IFNob3VsZEZvbGxvd1N5bWJvbGljTGlua3M6OlllcyA/IGZpbGVN
ZXRhZGF0YUZvbGxvd2luZ1N5bWxpbmtzKHBhdGgpIDogZmlsZU1ldGFkYXRhKHBhdGgpOworICAg
IGlmICghbWV0YWRhdGEpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gbWV0YWRh
dGEudmFsdWUoKS50eXBlID09IEZpbGVNZXRhZGF0YTo6VHlwZTo6RGlyZWN0b3J5OworfQorCit9
IC8vIG5hbWVzcGFjZSBGaWxlU3lzdGVtCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0u
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mYTRiMWY4ODNiOTc1NjAxODhkMmZkZjExYjI3ZTQwMWMyMTY2NjY1Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCkBAIC0wLDAgKzEs
MjI2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSwgTHRkLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1l
IG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisg
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8dGltZS5oPgorI2luY2x1ZGUgPHV0aWxpdHk+
CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+Cisj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCisjaWYgVVNFKENGKQorI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KKyNlbmRpZgorCisjaWYgVVNFKENGKQordHlwZWRlZiBjb25zdCBzdHJ1Y3Qg
X19DRkRhdGEqIENGRGF0YVJlZjsKKyNlbmRpZgorCitPQkpDX0NMQVNTIE5TU3RyaW5nOworCisj
aWYgUExBVEZPUk0oV0lOKQordHlwZWRlZiB2b2lkICpIQU5ETEU7CisjZW5kaWYKKworI2lmIFVT
RShHTElCKQordHlwZWRlZiBzdHJ1Y3QgX0dGaWxlSU9TdHJlYW0gR0ZpbGVJT1N0cmVhbTsKKyNl
bmRpZgorCituYW1lc3BhY2UgV1RGIHsKKworc3RydWN0IEZpbGVNZXRhZGF0YTsKKworbmFtZXNw
YWNlIEZpbGVTeXN0ZW0geworCisvLyBQbGF0Zm9ybUZpbGVIYW5kbGUKKyNpZiBVU0UoR0xJQikg
JiYgIVBMQVRGT1JNKFdJTikKK3R5cGVkZWYgR0ZpbGVJT1N0cmVhbSogUGxhdGZvcm1GaWxlSGFu
ZGxlOworY29uc3QgUGxhdGZvcm1GaWxlSGFuZGxlIGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUg
PSAwOworI2VsaWYgUExBVEZPUk0oV0lOKQordHlwZWRlZiBIQU5ETEUgUGxhdGZvcm1GaWxlSGFu
ZGxlOworLy8gRklYTUU6IC0xIGlzIElOVkFMSURfSEFORExFX1ZBTFVFLCBkZWZpbmVkIGluIDx3
aW5iYXNlLmg+LiBDaHJvbWl1bSB0cmllcyB0bworLy8gYXZvaWQgdXNpbmcgV2luZG93cyBoZWFk
ZXJzIGluIGhlYWRlcnMuIFdlJ2QgcmF0aGVyIG1vdmUgdGhpcyBpbnRvIHRoZSAuY3BwLgorY29u
c3QgUGxhdGZvcm1GaWxlSGFuZGxlIGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUgPSByZWludGVy
cHJldF9jYXN0PEhBTkRMRT4oLTEpOworI2Vsc2UKK3R5cGVkZWYgaW50IFBsYXRmb3JtRmlsZUhh
bmRsZTsKK2NvbnN0IFBsYXRmb3JtRmlsZUhhbmRsZSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxl
ID0gLTE7CisjZW5kaWYKKworZW51bSBjbGFzcyBGaWxlT3Blbk1vZGUgeworICAgIFJlYWQsCisg
ICAgV3JpdGUsCisjaWYgT1MoREFSV0lOKQorICAgIEV2ZW50c09ubHksCisjZW5kaWYKK307CisK
K2VudW0gY2xhc3MgRmlsZVNlZWtPcmlnaW4geworICAgIEJlZ2lubmluZywKKyAgICBDdXJyZW50
LAorICAgIEVuZCwKK307CisKK2VudW0gY2xhc3MgRmlsZUxvY2tNb2RlIHsKKyAgICBTaGFyZWQg
PSAxIDw8IDAsCisgICAgRXhjbHVzaXZlID0gMSA8PCAxLAorICAgIE5vbmJsb2NraW5nID0gMSA8
PCAyLAorfTsKKworZW51bSBjbGFzcyBTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzIHsgTm8sIFll
cyB9OworCitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBmaWxlRXhpc3RzKGNvbnN0IFN0cmluZyYp
OworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZGVsZXRlRmlsZShjb25zdCBTdHJpbmcmKTsKK1dU
Rl9FWFBPUlRfUFJJVkFURSBib29sIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYp
OworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgbW92ZUZpbGUoY29uc3QgU3RyaW5nJiBvbGRQYXRo
LCBjb25zdCBTdHJpbmcmIG5ld1BhdGgpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZ2V0Rmls
ZVNpemUoY29uc3QgU3RyaW5nJiwgbG9uZyBsb25nJiByZXN1bHQpOworV1RGX0VYUE9SVF9QUklW
QVRFIGJvb2wgZ2V0RmlsZVNpemUoUGxhdGZvcm1GaWxlSGFuZGxlLCBsb25nIGxvbmcmIHJlc3Vs
dCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgT3B0aW9uYWw8V2FsbFRpbWU+IGdldEZpbGVNb2RpZmlj
YXRpb25UaW1lKGNvbnN0IFN0cmluZyYpOworV1RGX0VYUE9SVF9QUklWQVRFIE9wdGlvbmFsPFdh
bGxUaW1lPiBnZXRGaWxlQ3JlYXRpb25UaW1lKGNvbnN0IFN0cmluZyYpOyAvLyBOb3QgYWxsIHBs
YXRmb3JtcyBzdG9yZSBmaWxlIGNyZWF0aW9uIHRpbWUuCitXVEZfRVhQT1JUX1BSSVZBVEUgT3B0
aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBwYXRoKTsKK1dU
Rl9FWFBPUlRfUFJJVkFURSBPcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YUZvbGxv
d2luZ1N5bWxpbmtzKGNvbnN0IFN0cmluZyYgcGF0aCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9v
bCBmaWxlSXNEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiwgU2hvdWxkRm9sbG93U3ltYm9saWNMaW5r
cyk7CitXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChj
b25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29tcG9uZW50KTsKK1dURl9FWFBPUlRf
UFJJVkFURSBTdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhTdHJpbmdWaWV3IHBhdGgs
IGNvbnN0IFZlY3RvcjxTdHJpbmdWaWV3PiYgY29tcG9uZW50cyk7CitXVEZfRVhQT1JUX1BSSVZB
VEUgU3RyaW5nIGxhc3RDb21wb25lbnRPZlBhdGhJZ25vcmluZ1RyYWlsaW5nU2xhc2goY29uc3Qg
U3RyaW5nJiBwYXRoKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIG1ha2VBbGxEaXJlY3Rvcmll
cyhjb25zdCBTdHJpbmcmIHBhdGgpOworV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBob21lRGly
ZWN0b3J5UGF0aCgpOworV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBwYXRoR2V0RmlsZU5hbWUo
Y29uc3QgU3RyaW5nJik7CitXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGRpcmVjdG9yeU5hbWUo
Y29uc3QgU3RyaW5nJik7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBnZXRWb2x1bWVGcmVlU3Bh
Y2UoY29uc3QgU3RyaW5nJiwgdWludDY0X3QmKTsKK1dURl9FWFBPUlRfUFJJVkFURSBPcHRpb25h
bDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29uc3QgQ1N0cmluZyYpOworV1RGX0VYUE9SVF9Q
UklWQVRFIGJvb2wgY3JlYXRlU3ltYm9saWNMaW5rKGNvbnN0IFN0cmluZyYgdGFyZ2V0UGF0aCwg
Y29uc3QgU3RyaW5nJiBzeW1ib2xpY0xpbmtQYXRoKTsKKworV1RGX0VYUE9SVF9QUklWQVRFIHZv
aWQgc2V0TWV0YWRhdGFVUkwoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHVybFN0
cmluZywgY29uc3QgU3RyaW5nJiByZWZlcnJlciA9IHsgfSk7CisKK2Jvb2wgY2FuRXhjbHVkZUZy
b21CYWNrdXAoKTsgLy8gUmV0dXJucyB0cnVlIGlmIGFueSBmaWxlIGNhbiBldmVyIGJlIGV4Y2x1
ZGVkIGZyb20gYmFja3VwLgorYm9vbCBleGNsdWRlRnJvbUJhY2t1cChjb25zdCBTdHJpbmcmKTsg
Ly8gUmV0dXJucyB0cnVlIGlmIHN1Y2Nlc3NmdWwuCisKK1dURl9FWFBPUlRfUFJJVkFURSBWZWN0
b3I8U3RyaW5nPiBsaXN0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5n
JiBmaWx0ZXIgPSBTdHJpbmcoKSk7CisKK1dURl9FWFBPUlRfUFJJVkFURSBDU3RyaW5nIGZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmKTsKK1N0cmluZyBzdHJpbmdGcm9tRmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IGNoYXIqKTsKKworaW5saW5lIGJvb2wgaXNIYW5k
bGVWYWxpZChjb25zdCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkgeyByZXR1cm4gaGFuZGxl
ICE9IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7IH0KKworLy8gUHJlZml4IGlzIHdoYXQgdGhl
IGZpbGVuYW1lIHNob3VsZCBiZSBwcmVmaXhlZCB3aXRoLCBub3QgdGhlIGZ1bGwgcGF0aC4KK1dU
Rl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBw
cmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYpOworV1RGX0VYUE9SVF9QUklWQVRFIFBsYXRmb3Jt
RmlsZUhhbmRsZSBvcGVuRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVPcGVuTW9kZSk7CitX
VEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBjbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlJik7Cisv
LyBSZXR1cm5zIHRoZSByZXN1bHRpbmcgb2Zmc2V0IGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUg
ZmlsZSBpZiBzdWNjZXNzZnVsLCAtMSBvdGhlcndpc2UuCitXVEZfRVhQT1JUX1BSSVZBVEUgbG9u
ZyBsb25nIHNlZWtGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCwgRmls
ZVNlZWtPcmlnaW4pOworYm9vbCB0cnVuY2F0ZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBsb25n
IGxvbmcgb2Zmc2V0KTsKKy8vIFJldHVybnMgbnVtYmVyIG9mIGJ5dGVzIGFjdHVhbGx5IHJlYWQg
aWYgc3VjY2Vzc2Z1bCwgLTEgb3RoZXJ3aXNlLgorV1RGX0VYUE9SVF9QUklWQVRFIGludCB3cml0
ZVRvRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgp
OworLy8gUmV0dXJucyBudW1iZXIgb2YgYnl0ZXMgYWN0dWFsbHkgd3JpdHRlbiBpZiBzdWNjZXNz
ZnVsLCAtMSBvdGhlcndpc2UuCitXVEZfRVhQT1JUX1BSSVZBVEUgaW50IHJlYWRGcm9tRmlsZShQ
bGF0Zm9ybUZpbGVIYW5kbGUsIGNoYXIqIGRhdGEsIGludCBsZW5ndGgpOworCitXVEZfRVhQT1JU
X1BSSVZBVEUgUGxhdGZvcm1GaWxlSGFuZGxlIG9wZW5BbmRMb2NrRmlsZShjb25zdCBTdHJpbmcm
LCBGaWxlT3Blbk1vZGUsIE9wdGlvblNldDxGaWxlTG9ja01vZGU+ID0gRmlsZUxvY2tNb2RlOjpF
eGNsdXNpdmUpOworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgdW5sb2NrQW5kQ2xvc2VGaWxlKFBs
YXRmb3JtRmlsZUhhbmRsZSk7CisKKy8vIEFwcGVuZHMgdGhlIGNvbnRlbnRzIG9mIHRoZSBmaWxl
IGZvdW5kIGF0ICdwYXRoJyB0byB0aGUgb3BlbiBQbGF0Zm9ybUZpbGVIYW5kbGUuCisvLyBSZXR1
cm5zIHRydWUgaWYgdGhlIHdyaXRlIHdhcyBzdWNjZXNzZnVsLCBmYWxzZSBpZiBpdCB3YXMgbm90
LgorV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgYXBwZW5kRmlsZUNvbnRlbnRzVG9GaWxlSGFuZGxl
KGNvbnN0IFN0cmluZyYgcGF0aCwgUGxhdGZvcm1GaWxlSGFuZGxlJik7CisKKy8vIEhhcmQgbGlu
a3MgYSBmaWxlIGlmIHBvc3NpYmxlLCBjb3BpZXMgaXQgaWYgbm90LgorV1RGX0VYUE9SVF9QUklW
QVRFIGJvb2wgaGFyZExpbmtPckNvcHlGaWxlKGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBT
dHJpbmcmIGRlc3RpbmF0aW9uKTsKKworI2lmIFVTRShGSUxFX0xPQ0spCitXVEZfRVhQT1JUX1BS
SVZBVEUgYm9vbCBsb2NrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUsIE9wdGlvblNldDxGaWxlTG9j
a01vZGU+KTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIHVubG9ja0ZpbGUoUGxhdGZvcm1GaWxl
SGFuZGxlKTsKKyNlbmRpZgorCisvLyBFbmNvZGUgYSBzdHJpbmcgZm9yIHVzZSB3aXRoaW4gYSBm
aWxlIG5hbWUuCitXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGVuY29kZUZvckZpbGVOYW1lKGNv
bnN0IFN0cmluZyYpOworV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBkZWNvZGVGcm9tRmlsZW5h
bWUoY29uc3QgU3RyaW5nJik7CisKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGZpbGVzSGF2ZVNh
bWVWb2x1bWUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7CisKKyNpZiBVU0UoQ0YpCitX
VEZfRVhQT1JUX1BSSVZBVEUgUmV0YWluUHRyPENGVVJMUmVmPiBwYXRoQXNVUkwoY29uc3QgU3Ry
aW5nJik7CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQorU3Ry
aW5nIGZpbGVuYW1lRm9yRGlzcGxheShjb25zdCBTdHJpbmcmKTsKKyNlbmRpZgorCisjaWYgUExB
VEZPUk0oV0lOKQorV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBsb2NhbFVzZXJTcGVjaWZpY1N0
b3JhZ2VEaXJlY3RvcnkoKTsKK1dURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcm9hbWluZ1VzZXJT
cGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKTsKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oQ09DT0Ep
CitXVEZfRVhQT1JUX1BSSVZBVEUgTlNTdHJpbmcgKmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShO
U1N0cmluZyAqZGlyZWN0b3J5UHJlZml4KTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGRlbGV0
ZU5vbkVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpOworI2VuZGlmCisKKyNpZiBQTEFURk9S
TShXSU5fQ0FJUk8pCitXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGNyZWF0ZVRlbXBvcmFyeURp
cmVjdG9yeSgpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZGVsZXRlTm9uRW1wdHlEaXJlY3Rv
cnkoY29uc3QgU3RyaW5nJik7CisjZW5kaWYKKworV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBy
ZWFsUGF0aChjb25zdCBTdHJpbmcmKTsKKworY2xhc3MgTWFwcGVkRmlsZURhdGEgeworcHVibGlj
OgorICAgIE1hcHBlZEZpbGVEYXRhKCkgeyB9CisgICAgTWFwcGVkRmlsZURhdGEoTWFwcGVkRmls
ZURhdGEmJik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIE1hcHBlZEZpbGVEYXRhKGNvbnN0IFN0
cmluZyYgZmlsZVBhdGgsIGJvb2wmIHN1Y2Nlc3MpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB+
TWFwcGVkRmlsZURhdGEoKTsKKyAgICBNYXBwZWRGaWxlRGF0YSYgb3BlcmF0b3I9KE1hcHBlZEZp
bGVEYXRhJiYpOworCisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJu
ICEhbV9maWxlRGF0YTsgfQorICAgIGNvbnN0IHZvaWQqIGRhdGEoKSBjb25zdCB7IHJldHVybiBt
X2ZpbGVEYXRhOyB9CisgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsZVNp
emU7IH0KKworcHJpdmF0ZToKKyAgICB2b2lkKiBtX2ZpbGVEYXRhIHsgbnVsbHB0ciB9OworICAg
IHVuc2lnbmVkIG1fZmlsZVNpemUgeyAwIH07Cit9OworCitpbmxpbmUgTWFwcGVkRmlsZURhdGE6
Ok1hcHBlZEZpbGVEYXRhKE1hcHBlZEZpbGVEYXRhJiYgb3RoZXIpCisgICAgOiBtX2ZpbGVEYXRh
KHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9maWxlRGF0YSwgbnVsbHB0cikpCisgICAgLCBtX2ZpbGVT
aXplKHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9maWxlU2l6ZSwgMCkpCit7Cit9CisKK2lubGluZSBN
YXBwZWRGaWxlRGF0YSYgTWFwcGVkRmlsZURhdGE6Om9wZXJhdG9yPShNYXBwZWRGaWxlRGF0YSYm
IG90aGVyKQoreworICAgIG1fZmlsZURhdGEgPSBzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fZmlsZURh
dGEsIG51bGxwdHIpOworICAgIG1fZmlsZVNpemUgPSBzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fZmls
ZVNpemUsIDApOworICAgIHJldHVybiAqdGhpczsKK30KKworfSAvLyBuYW1lc3BhY2UgRmlsZVN5
c3RlbQorfSAvLyBuYW1lc3BhY2UgV1RGCisKK25hbWVzcGFjZSBGaWxlU3lzdGVtID0gV1RGOjpG
aWxlU3lzdGVtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1HVEsuY21ha2Ug
Yi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCA2NzNmMDJkMGQ1OTY4NTQ1
YWM4N2E4YThlNTdiMjc3MzRkNzM5ODljLi43ZmVjMTJkYzJmYzMxNWJjNTE2OGYwMmIzYmY3NjQ3
MGMwZDljYmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUdUSy5jbWFrZQor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtMjIsNiArMjIsNyBAQCBs
aXN0KEFQUEVORCBXVEZfU09VUkNFUwogICAgIGdlbmVyaWMvTWFpblRocmVhZEdlbmVyaWMuY3Bw
CiAgICAgZ2VuZXJpYy9Xb3JrUXVldWVHZW5lcmljLmNwcAogCisgICAgZ2xpYi9GaWxlU3lzdGVt
R2xpYi5jcHAKICAgICBnbGliL0dMaWJVdGlsaXRpZXMuY3BwCiAgICAgZ2xpYi9HUmVmUHRyLmNw
cAogICAgIGdsaWIvUnVuTG9vcEdMaWIuY3BwCkBAIC01NSw1ICs1Niw2IEBAIGxpc3QoQVBQRU5E
IFdURl9MSUJSQVJJRVMKICkKIAogbGlzdChBUFBFTkQgV1RGX1NZU1RFTV9JTkNMVURFX0RJUkVD
VE9SSUVTCisgICAgJHtHSU9fVU5JWF9JTkNMVURFX0RJUlN9CiAgICAgJHtHTElCX0lOQ0xVREVf
RElSU30KICkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtTWFjLmNtYWtlIGIv
U291cmNlL1dURi93dGYvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXggZmMxZTU3YjljYjI2YjZmMmI2
YWJhNjE0M2JkMThhZWJiYjE2YjUzNC4uMGUzZTE0MTYwOTEyYjc4NjE3NzM0MzUwYTkyNWQ5OWRi
YTJjZGEwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1NYWMuY21ha2UKKysr
IGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTMyLDYgKzMyLDggQEAgbGlz
dChBUFBFTkQgV1RGX1BVQkxJQ19IRUFERVJTCiAgICAgc3BpL2Rhcndpbi9YUENTUEkuaAogICAg
IHNwaS9kYXJ3aW4vZHlsZFNQSS5oCiAKKyAgICBzcGkvbWFjL01ldGFkYXRhU1BJLmgKKwogICAg
IHRleHQvY2YvVGV4dEJyZWFrSXRlcmF0b3JDRi5oCiApCiAKQEAgLTQyLDYgKzQ0LDcgQEAgbGlz
dChBUFBFTkQgV1RGX1NPVVJDRVMKICAgICBTY2hlZHVsZVBhaXJNYWMubW0KIAogICAgIGNmL0NG
VVJMRXh0cmFzLmNwcAorICAgIGNmL0ZpbGVTeXN0ZW1DRi5jcHAKICAgICBjZi9MYW5ndWFnZUNG
LmNwcAogICAgIGNmL1J1bkxvb3BDRi5jcHAKICAgICBjZi9VUkxDRi5jcHAKQEAgLTQ5LDYgKzUy
LDcgQEAgbGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKICAgICBjb2NvYS9BdXRvZHJhaW5lZFBvb2wu
Y3BwCiAgICAgY29jb2EvQ1BVVGltZUNvY29hLmNwcAogICAgIGNvY29hL0VudGl0bGVtZW50cy5t
bQorICAgIGNvY29hL0ZpbGVTeXN0ZW1Db2NvYS5tbQogICAgIGNvY29hL01hY2hTZW5kUmlnaHQu
Y3BwCiAgICAgY29jb2EvTWFpblRocmVhZENvY29hLm1tCiAgICAgY29jb2EvTWVtb3J5Rm9vdHBy
aW50Q29jb2EuY3BwCkBAIC01OCw2ICs2Miw5IEBAIGxpc3QoQVBQRU5EIFdURl9TT1VSQ0VTCiAg
ICAgY29jb2EvV29ya1F1ZXVlQ29jb2EuY3BwCiAKICAgICBtYWMvRGVwcmVjYXRlZFN5bWJvbHNV
c2VkQnlTYWZhcmkubW0KKyAgICBtYWMvRmlsZVN5c3RlbU1hYy5tbQorCisgICAgcG9zaXgvRmls
ZVN5c3RlbVBPU0lYLmNwcAogCiAgICAgdGV4dC9jZi9BdG9taWNTdHJpbmdJbXBsQ0YuY3BwCiAg
ICAgdGV4dC9jZi9TdHJpbmdDRi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRm
b3JtUGxheVN0YXRpb24uY21ha2UgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVBsYXlTdGF0aW9u
LmNtYWtlCmluZGV4IGI5N2ZlYzQwZWQzMGIxNzdiMmY1MzViNjIxNjBlZjFlZWUyZGU1NmUuLjNl
OWU3NWM5MjhhNmM5NDYwNWI0YmZjYWE3ZmJiMmI5ZjQyZjgzOTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL1BsYXRmb3JtUGxheVN0YXRpb24uY21ha2UKKysrIGIvU291cmNlL1dURi93dGYv
UGxhdGZvcm1QbGF5U3RhdGlvbi5jbWFrZQpAQCAtNSw2ICs1LDggQEAgbGlzdChBUFBFTkQgV1RG
X1NPVVJDRVMKICAgICBnZW5lcmljL1J1bkxvb3BHZW5lcmljLmNwcAogICAgIGdlbmVyaWMvV29y
a1F1ZXVlR2VuZXJpYy5jcHAKIAorICAgIHBvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKwogICAg
IHRleHQvdW5peC9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVVW5peC5jcHAKIAogICAgIHVu
aXgvQ1BVVGltZVVuaXguY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdQ
RS5jbWFrZSBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV1BFLmNtYWtlCmluZGV4IDQ3M2NmZDYw
MjZiMDY1MmMyZjAyZDJiMjg1MzkyYjFkODAyZjBiYmMuLjA4NmFkZDNhYTkxOWZjNDkyMzlkNzFj
MWNjODY4NWM1ZmM3MzliZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV1BF
LmNtYWtlCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV1BFLmNtYWtlCkBAIC0xNiw2ICsx
Niw3IEBAIGxpc3QoQVBQRU5EIFdURl9TT1VSQ0VTCiAgICAgZ2VuZXJpYy9NYWluVGhyZWFkR2Vu
ZXJpYy5jcHAKICAgICBnZW5lcmljL1dvcmtRdWV1ZUdlbmVyaWMuY3BwCiAKKyAgICBnbGliL0Zp
bGVTeXN0ZW1HbGliLmNwcAogICAgIGdsaWIvR0xpYlV0aWxpdGllcy5jcHAKICAgICBnbGliL0dS
ZWZQdHIuY3BwCiAgICAgZ2xpYi9SdW5Mb29wR0xpYi5jcHAKQEAgLTQwLDUgKzQxLDYgQEAgbGlz
dChBUFBFTkQgV1RGX0xJQlJBUklFUwogKQogCiBsaXN0KEFQUEVORCBXVEZfU1lTVEVNX0lOQ0xV
REVfRElSRUNUT1JJRVMKKyAgICAke0dJT19VTklYX0lOQ0xVREVfRElSU30KICAgICAke0dMSUJf
SU5DTFVERV9ESVJTfQogKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1XaW4u
Y21ha2UgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdpbi5jbWFrZQppbmRleCAyYjhiNWY4Mjcw
ZWI1ZjI0Njc2MDcyZGQxMjQ1NzZkYTkzMDFmMGVhLi5iNmMwYWM2ZjRkZTVlMDVmMjdkNGQ5YWMw
ZmZiZDVjYzQwOTdhNmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdpbi5j
bWFrZQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdpbi5jbWFrZQpAQCAtMTIsMTQgKzEy
LDIwIEBAIGxpc3QoQVBQRU5EIFdURl9TT1VSQ0VTCiAKICAgICB3aW4vQ1BVVGltZVdpbi5jcHAK
ICAgICB3aW4vRGJnSGVscGVyV2luLmNwcAorICAgIHdpbi9GaWxlU3lzdGVtV2luLmNwcAogICAg
IHdpbi9MYW5ndWFnZVdpbi5jcHAKICAgICB3aW4vTWFpblRocmVhZFdpbi5jcHAKICAgICB3aW4v
TWVtb3J5Rm9vdHByaW50V2luLmNwcAogICAgIHdpbi9NZW1vcnlQcmVzc3VyZUhhbmRsZXJXaW4u
Y3BwCisgICAgd2luL1BhdGhXYWxrZXIuY3BwCiAgICAgd2luL1J1bkxvb3BXaW4uY3BwCiAgICAg
d2luL1dvcmtRdWV1ZVdpbi5jcHAKICkKIAorbGlzdChBUFBFTkQgV1RGX0xJQlJBUklFUworICAg
IHNobHdhcGkKKykKKwogaWYgKFVTRV9DRikKICAgICBsaXN0KEFQUEVORCBXVEZfUFVCTElDX0hF
QURFUlMKICAgICAgICAgY2YvQ0ZVUkxFeHRyYXMuaApAQCAtMjksNiArMzUsNyBAQCBpZiAoVVNF
X0NGKQogICAgICkKICAgICBsaXN0KEFQUEVORCBXVEZfU09VUkNFUwogICAgICAgICBjZi9DRlVS
TEV4dHJhcy5jcHAKKyAgICAgICAgY2YvRmlsZVN5c3RlbUNGLmNwcAogICAgICAgICBjZi9VUkxD
Ri5jcHAKIAogICAgICAgICB0ZXh0L2NmL0F0b21pY1N0cmluZ0ltcGxDRi5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL2NmL0ZpbGVTeXN0ZW1DRi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9j
Zi9GaWxlU3lzdGVtQ0YuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcxMmQ2NWZjYWQyOTZiMzk2M2Y2MGE0NDk0
YjZkN2U5MmQ0YWM1MGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jZi9GaWxl
U3lzdGVtQ0YuY3BwCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcs
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBu
YW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
PHd0Zi9GaWxlU3lzdGVtLmg+CisKKyNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9DRlN0cmluZy5o
PgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXVEYgewor
CitDU3RyaW5nIEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJp
bmcmIHBhdGgpCit7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZlN0cmluZyA9IHBhdGgu
Y3JlYXRlQ0ZTdHJpbmcoKTsKKworICAgIGlmICghY2ZTdHJpbmcpCisgICAgICAgIHJldHVybiBD
U3RyaW5nKCk7CisKKyAgICBDRkluZGV4IHNpemUgPSBDRlN0cmluZ0dldE1heGltdW1TaXplT2ZG
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY2ZTdHJpbmcuZ2V0KCkpOworCisgICAgVmVjdG9yPGNo
YXI+IGJ1ZmZlcihzaXplKTsKKworICAgIGlmICghQ0ZTdHJpbmdHZXRGaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oY2ZTdHJpbmcuZ2V0KCksIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpKSB7
CisgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGdldCBmaWxlc3lzdGVtIHJlcHJlc2VudGF0
aW9uIHRvIGNyZWF0ZSBDU3RyaW5nIGZyb20gY2ZTdHJpbmciKTsKKyAgICAgICAgcmV0dXJuIENT
dHJpbmcoKTsKKyAgICB9CisKKyAgICByZXR1cm4gQ1N0cmluZyhidWZmZXIuZGF0YSgpLCBzdHJs
ZW4oYnVmZmVyLmRhdGEoKSkpOworfQorCitTdHJpbmcgRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBjaGFyKiBmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24pCit7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoRmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKGtDRkFsbG9jYXRvckRlZmF1bHQsIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bikpLmdldCgpOworfQorCitSZXRhaW5QdHI8Q0ZVUkxSZWY+IEZpbGVTeXN0ZW06OnBhdGhBc1VS
TChjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgQ0ZVUkxQYXRoU3R5bGUgcGF0aFN0eWxlOwor
I2lmIFBMQVRGT1JNKFdJTikKKyAgICBwYXRoU3R5bGUgPSBrQ0ZVUkxXaW5kb3dzUGF0aFN0eWxl
OworI2Vsc2UKKyAgICBwYXRoU3R5bGUgPSBrQ0ZVUkxQT1NJWFBhdGhTdHlsZTsKKyNlbmRpZgor
ICAgIHJldHVybiBhZG9wdENGKENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKDAsIHBhdGgu
Y3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgcGF0aFN0eWxlLCBGQUxTRSkpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL0ZpbGVTeXN0ZW1D
b2NvYS5tbSBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL0ZpbGVTeXN0ZW1Db2NvYS5tbQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iMzg1NzQ2OWNlMDQ2OTZiYWFhMzI2Mzc0MzhkMTMxNjZiZjA0ZmY4Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dURi93dGYvY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tCkBAIC0wLDAg
KzEsMTQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5h
bWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQK
KyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgorCitA
aW50ZXJmYWNlIFdURldlYkZpbGVNYW5hZ2VyRGVsZWdhdGUgOiBOU09iamVjdCA8TlNGaWxlTWFu
YWdlckRlbGVnYXRlPgorQGVuZAorCitAaW1wbGVtZW50YXRpb24gV1RGV2ViRmlsZU1hbmFnZXJE
ZWxlZ2F0ZQorCistIChCT09MKWZpbGVNYW5hZ2VyOihOU0ZpbGVNYW5hZ2VyICopZmlsZU1hbmFn
ZXIgc2hvdWxkUHJvY2VlZEFmdGVyRXJyb3I6KE5TRXJyb3IgKillcnJvciBtb3ZpbmdJdGVtQXRV
Ukw6KE5TVVJMICopc3JjVVJMIHRvVVJMOihOU1VSTCAqKWRzdFVSTAoreworICAgIFVOVVNFRF9Q
QVJBTShmaWxlTWFuYWdlcik7CisgICAgVU5VU0VEX1BBUkFNKHNyY1VSTCk7CisgICAgVU5VU0VE
X1BBUkFNKGRzdFVSTCk7CisgICAgcmV0dXJuIGVycm9yLmNvZGUgPT0gTlNGaWxlV3JpdGVGaWxl
RXhpc3RzRXJyb3I7Cit9CisKK0BlbmQKKworbmFtZXNwYWNlIFdURiB7CisKK25hbWVzcGFjZSBG
aWxlU3lzdGVtIHsKKworU3RyaW5nIGhvbWVEaXJlY3RvcnlQYXRoKCkKK3sKKyAgICByZXR1cm4g
TlNIb21lRGlyZWN0b3J5KCk7Cit9CisKK1N0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBT
dHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiBwbGF0Zm9ybUZpbGVIYW5kbGUpCit7
CisgICAgcGxhdGZvcm1GaWxlSGFuZGxlID0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKKwor
ICAgIFZlY3RvcjxjaGFyPiB0ZW1wb3JhcnlGaWxlUGF0aChQQVRIX01BWCk7CisgICAgaWYgKCFj
b25mc3RyKF9DU19EQVJXSU5fVVNFUl9URU1QX0RJUiwgdGVtcG9yYXJ5RmlsZVBhdGguZGF0YSgp
LCB0ZW1wb3JhcnlGaWxlUGF0aC5zaXplKCkpKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisK
KyAgICAvLyBTaHJpbmsgdGhlIHZlY3Rvci4KKyAgICB0ZW1wb3JhcnlGaWxlUGF0aC5zaHJpbmso
c3RybGVuKHRlbXBvcmFyeUZpbGVQYXRoLmRhdGEoKSkpOworCisgICAgLy8gRklYTUU6IENoYW5n
ZSB0byBhIHJ1bnRpbWUgYXNzZXJ0aW9uIHRoYXQgdGhlIHBhdGggZW5kcyB3aXRoIGEgc2xhc2gg
b25jZSA8cmRhcjovL3Byb2JsZW0vMjM1NzkwNzc+IGlzCisgICAgLy8gZml4ZWQgaW4gYWxsIGlP
UyBTaW11bGF0b3IgdmVyc2lvbnMgdGhhdCB3ZSB1c2UuCisgICAgaWYgKHRlbXBvcmFyeUZpbGVQ
YXRoLmxhc3QoKSAhPSAnLycpCisgICAgICAgIHRlbXBvcmFyeUZpbGVQYXRoLmFwcGVuZCgnLycp
OworCisgICAgLy8gQXBwZW5kIHRoZSBmaWxlIG5hbWUuCisgICAgQ1N0cmluZyBwcmVmaXhVdGY4
ID0gcHJlZml4LnV0ZjgoKTsKKyAgICB0ZW1wb3JhcnlGaWxlUGF0aC5hcHBlbmQocHJlZml4VXRm
OC5kYXRhKCksIHByZWZpeFV0ZjgubGVuZ3RoKCkpOworICAgIHRlbXBvcmFyeUZpbGVQYXRoLmFw
cGVuZCgiWFhYWFhYIiwgNik7CisgICAgdGVtcG9yYXJ5RmlsZVBhdGguYXBwZW5kKCdcMCcpOwor
CisgICAgcGxhdGZvcm1GaWxlSGFuZGxlID0gbWtzdGVtcCh0ZW1wb3JhcnlGaWxlUGF0aC5kYXRh
KCkpOworICAgIGlmIChwbGF0Zm9ybUZpbGVIYW5kbGUgPT0gaW52YWxpZFBsYXRmb3JtRmlsZUhh
bmRsZSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgcmV0dXJuIFN0cmluZzo6ZnJv
bVVURjgodGVtcG9yYXJ5RmlsZVBhdGguZGF0YSgpKTsKK30KKworYm9vbCBtb3ZlRmlsZShjb25z
dCBTdHJpbmcmIG9sZFBhdGgsIGNvbnN0IFN0cmluZyYgbmV3UGF0aCkKK3sKKyAgICAvLyBPdmVy
d3JpdGUgZXhpc3RpbmcgZmlsZXMuCisgICAgYXV0byBtYW5hZ2VyID0gYWRvcHROUyhbW05TRmls
ZU1hbmFnZXIgYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1dU
RldlYkZpbGVNYW5hZ2VyRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBbbWFuYWdlciBzZXRE
ZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBOU0Vycm9yICplcnJvciA9IG5pbDsKKyAg
ICBib29sIHN1Y2Nlc3MgPSBbbWFuYWdlciBtb3ZlSXRlbUF0VVJMOltOU1VSTCBmaWxlVVJMV2l0
aFBhdGg6b2xkUGF0aF0gdG9VUkw6W05TVVJMIGZpbGVVUkxXaXRoUGF0aDpuZXdQYXRoXSBlcnJv
cjomZXJyb3JdOworICAgIGlmICghc3VjY2VzcykKKyAgICAgICAgTlNMb2coQCJFcnJvciBpbiBt
b3ZlRmlsZTogJUAiLCBlcnJvcik7CisgICAgcmV0dXJuIHN1Y2Nlc3M7Cit9CisKK2Jvb2wgZ2V0
Vm9sdW1lRnJlZVNwYWNlKGNvbnN0IFN0cmluZyYgcGF0aCwgdWludDY0X3QmIGZyZWVTcGFjZSkK
K3sKKyAgICBOU0RpY3Rpb25hcnkgKmZpbGVTeXN0ZW1BdHRyaWJ1dGVzRGljdGlvbmFyeSA9IFtb
TlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gYXR0cmlidXRlc09mRmlsZVN5c3RlbUZvclBh
dGg6KE5TU3RyaW5nICopcGF0aCBlcnJvcjpOVUxMXTsKKyAgICBpZiAoIWZpbGVTeXN0ZW1BdHRy
aWJ1dGVzRGljdGlvbmFyeSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGZyZWVTcGFjZSA9
IFtbZmlsZVN5c3RlbUF0dHJpYnV0ZXNEaWN0aW9uYXJ5IG9iamVjdEZvcktleTpOU0ZpbGVTeXN0
ZW1GcmVlU2l6ZV0gdW5zaWduZWRMb25nTG9uZ1ZhbHVlXTsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworTlNTdHJpbmcgKmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShOU1N0cmluZyAqZGlyZWN0b3J5
UHJlZml4KQoreworICAgIE5TU3RyaW5nICp0ZW1wRGlyZWN0b3J5ID0gTlNUZW1wb3JhcnlEaXJl
Y3RvcnkoKTsKKyAgICBpZiAoIXRlbXBEaXJlY3RvcnkgfHwgIVt0ZW1wRGlyZWN0b3J5IGxlbmd0
aF0pCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBpZiAoIWRpcmVjdG9yeVByZWZpeCB8fCAh
W2RpcmVjdG9yeVByZWZpeCBsZW5ndGhdKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgTlNT
dHJpbmcgKnRlbXBEaXJlY3RvcnlDb21wb25lbnQgPSBbZGlyZWN0b3J5UHJlZml4IHN0cmluZ0J5
QXBwZW5kaW5nU3RyaW5nOkAiLVhYWFhYWFhYIl07CisgICAgY29uc3QgY2hhciogdGVtcERpcmVj
dG9yeUNTdHJpbmcgPSBbW3RlbXBEaXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9u
ZW50OnRlbXBEaXJlY3RvcnlDb21wb25lbnRdIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbl07Cisg
ICAgaWYgKCF0ZW1wRGlyZWN0b3J5Q1N0cmluZykKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAg
IGNvbnN0IHNpemVfdCBsZW5ndGggPSBzdHJsZW4odGVtcERpcmVjdG9yeUNTdHJpbmcpOworICAg
IEFTU0VSVChsZW5ndGggPD0gTUFYUEFUSExFTik7CisgICAgaWYgKGxlbmd0aCA+IE1BWFBBVEhM
RU4pCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBjb25zdCBzaXplX3QgbGVuZ3RoUGx1c051
bGxUZXJtaW5hdG9yID0gbGVuZ3RoICsgMTsKKyAgICBWZWN0b3I8Y2hhciwgTUFYUEFUSExFTiAr
IDE+IHBhdGgobGVuZ3RoUGx1c051bGxUZXJtaW5hdG9yKTsKKyAgICBtZW1jcHkocGF0aC5kYXRh
KCksIHRlbXBEaXJlY3RvcnlDU3RyaW5nLCBsZW5ndGhQbHVzTnVsbFRlcm1pbmF0b3IpOworCisg
ICAgaWYgKCFta2R0ZW1wKHBhdGguZGF0YSgpKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAg
IHJldHVybiBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIHN0cmluZ1dpdGhGaWxlU3lz
dGVtUmVwcmVzZW50YXRpb246cGF0aC5kYXRhKCkgbGVuZ3RoOmxlbmd0aF07Cit9CisKK2Jvb2wg
ZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIHJldHVy
biBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIHJlbW92ZUl0ZW1BdFBhdGg6cGF0aCBl
cnJvcjpuaWxdOworfQorCit9IC8vIG5hbWVzcGFjZSBGaWxlU3lzdGVtCit9IC8vIG5hbWVzcGFj
ZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3Bw
IGIvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmZm
NmJkM2ZhNTQ4MmE1YTBmODQwYzk2Nzg0MmM0NWI4YWUxMjJjZgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCkBAIC0wLDAgKzEsNDY5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA5IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0
aGVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhLCBMdGQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogUG9ydGlvbnMgQ29w
eXJpZ2h0IChjKSAyMDEwIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KKwor
I2luY2x1ZGUgPGdpby9nZmlsZWRlc2NyaXB0b3JiYXNlZC5oPgorI2luY2x1ZGUgPGdpby9naW8u
aD4KKyNpbmNsdWRlIDxnbGliLmg+CisjaW5jbHVkZSA8Z2xpYi9nc3RkaW8uaD4KKyNpbmNsdWRl
IDxzeXMvZmlsZS5oPgorI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CisjaW5jbHVkZSA8d3Rm
L0ZpbGVNZXRhZGF0YS5oPgorI2luY2x1ZGUgPHd0Zi9VVUlELmg+CisjaW5jbHVkZSA8d3RmL2ds
aWIvR0xpYlV0aWxpdGllcy5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KKyNpbmNs
dWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK25hbWVzcGFjZSBGaWxlU3lzdGVt
IHsKKworLyogT24gbGludXggZmlsZSBuYW1lcyBhcmUganVzdCByYXcgYnl0ZXMsIHNvIGFsc28g
c3RyaW5ncyB0aGF0IGNhbm5vdCBiZSBlbmNvZGVkIGluIGFueSB3YXkKKyAqIGFyZSB2YWxpZCBm
aWxlIG5hbWVzLiBUaGlzIG1lYW4gdGhhdCB3ZSBjYW5ub3QganVzdCBzdG9yZSBhIGZpbGUgbmFt
ZSBhcy1pcyBpbiBhIFN0cmluZworICogYnV0IHdlIGhhdmUgdG8gZXNjYXBlIGl0LgorICogT24g
V2luZG93cyB0aGUgR0xpYiBmaWxlIG5hbWUgZW5jb2RpbmcgaXMgYWx3YXlzIFVURi04IHNvIHdl
IGNhbiBvcHRpbWl6ZSB0aGlzIGNhc2UuICovCitTdHJpbmcgc3RyaW5nRnJvbUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihjb25zdCBjaGFyKiBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24pCit7Cisg
ICAgaWYgKCFmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24pCisgICAgICAgIHJldHVybiBTdHJpbmco
KTsKKworI2lmIE9TKFdJTkRPV1MpCisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoZmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKTsKKyNlbHNlCisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZXNjYXBl
ZFN0cmluZyhnX3VyaV9lc2NhcGVfc3RyaW5nKGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbiwgIi86
IiwgRkFMU0UpKTsKKyAgICByZXR1cm4gZXNjYXBlZFN0cmluZy5nZXQoKTsKKyNlbmRpZgorfQor
CitzdGF0aWMgR1VuaXF1ZVB0cjxjaGFyPiB1bmVzY2FwZWRGaWxlbmFtZShjb25zdCBTdHJpbmcm
IHBhdGgpCit7CisgICAgaWYgKHBhdGguaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyNpZiBPUyhXSU5ET1dTKQorICAgIHJldHVybiBHVW5pcXVlUHRyPGNoYXI+KGdfc3RyZHVw
KHBhdGgudXRmOCgpLmRhdGEoKSkpOworI2Vsc2UKKyAgICByZXR1cm4gR1VuaXF1ZVB0cjxjaGFy
PihnX3VyaV91bmVzY2FwZV9zdHJpbmcocGF0aC51dGY4KCkuZGF0YSgpLCBudWxscHRyKSk7Cisj
ZW5kaWYKK30KKworQ1N0cmluZyBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5n
JiBwYXRoKQoreworI2lmIE9TKFdJTkRPV1MpCisgICAgcmV0dXJuIHBhdGgudXRmOCgpOworI2Vs
c2UKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHBh
dGgpOworICAgIHJldHVybiBmaWxlbmFtZS5nZXQoKTsKKyNlbmRpZgorfQorCisvLyBDb252ZXJ0
cyBhIHN0cmluZyB0byBzb21ldGhpbmcgc3VpdGFibGUgdG8gYmUgZGlzcGxheWVkIHRvIHRoZSB1
c2VyLgorU3RyaW5nIGZpbGVuYW1lRm9yRGlzcGxheShjb25zdCBTdHJpbmcmIHN0cmluZykKK3sK
KyNpZiBPUyhXSU5ET1dTKQorICAgIHJldHVybiBzdHJpbmc7CisjZWxzZQorICAgIEdVbmlxdWVQ
dHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUoc3RyaW5nKTsKKyAgICBpZiAo
IWZpbGVuYW1lKQorICAgICAgICByZXR1cm4gc3RyaW5nOworCisgICAgR1VuaXF1ZVB0cjxnY2hh
cj4gZGlzcGxheShnX2ZpbGVuYW1lX3RvX3V0ZjgoZmlsZW5hbWUuZ2V0KCksIC0xLCBudWxscHRy
LCBudWxscHRyLCBudWxscHRyKSk7CisgICAgaWYgKCFkaXNwbGF5KQorICAgICAgICByZXR1cm4g
c3RyaW5nOworCisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoZGlzcGxheS5nZXQoKSk7Cisj
ZW5kaWYKK30KKworYm9vbCBmaWxlRXhpc3RzKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBH
VW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGgpOworICAg
IHJldHVybiBmaWxlbmFtZSA/IGdfZmlsZV90ZXN0KGZpbGVuYW1lLmdldCgpLCBHX0ZJTEVfVEVT
VF9FWElTVFMpIDogZmFsc2U7Cit9CisKK2Jvb2wgZGVsZXRlRmlsZShjb25zdCBTdHJpbmcmIHBh
dGgpCit7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFt
ZShwYXRoKTsKKyAgICByZXR1cm4gZmlsZW5hbWUgPyBnX3JlbW92ZShmaWxlbmFtZS5nZXQoKSkg
IT0gLTEgOiBmYWxzZTsKK30KKworYm9vbCBkZWxldGVFbXB0eURpcmVjdG9yeShjb25zdCBTdHJp
bmcmIHBhdGgpCit7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUgPSB1bmVzY2FwZWRG
aWxlbmFtZShwYXRoKTsKKyAgICByZXR1cm4gZmlsZW5hbWUgPyBnX3JtZGlyKGZpbGVuYW1lLmdl
dCgpKSAhPSAtMSA6IGZhbHNlOworfQorCitzdGF0aWMgYm9vbCBnZXRGaWxlU3RhdChjb25zdCBT
dHJpbmcmIHBhdGgsIEdTdGF0QnVmKiBzdGF0QnVmZmVyKQoreworICAgIEdVbmlxdWVQdHI8Z2No
YXI+IGZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUocGF0aCk7CisgICAgaWYgKCFmaWxlbmFt
ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGdfc3RhdChmaWxlbmFtZS5n
ZXQoKSwgc3RhdEJ1ZmZlcikgIT0gLTE7Cit9CisKK3N0YXRpYyBib29sIGdldEZpbGVMU3RhdChj
b25zdCBTdHJpbmcmIHBhdGgsIEdTdGF0QnVmKiBzdGF0QnVmZmVyKQoreworICAgIEdVbmlxdWVQ
dHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUocGF0aCk7CisgICAgaWYgKCFm
aWxlbmFtZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGdfbHN0YXQoZmls
ZW5hbWUuZ2V0KCksIHN0YXRCdWZmZXIpICE9IC0xOworfQorCitib29sIGdldEZpbGVTaXplKGNv
bnN0IFN0cmluZyYgcGF0aCwgbG9uZyBsb25nJiByZXN1bHRTaXplKQoreworICAgIEdTdGF0QnVm
IHN0YXRSZXN1bHQ7CisgICAgaWYgKCFnZXRGaWxlU3RhdChwYXRoLCAmc3RhdFJlc3VsdCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJlc3VsdFNpemUgPSBzdGF0UmVzdWx0LnN0X3Np
emU7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgZ2V0RmlsZVNpemUoUGxhdGZvcm1GaWxl
SGFuZGxlIGhhbmRsZSwgbG9uZyBsb25nJiByZXN1bHRTaXplKQoreworICAgIGF1dG8gaW5mbyA9
IGdfZmlsZV9pb19zdHJlYW1fcXVlcnlfaW5mbyhoYW5kbGUsIEdfRklMRV9BVFRSSUJVVEVfU1RB
TkRBUkRfU0laRSwgbnVsbHB0ciwgbnVsbHB0cik7CisgICAgaWYgKCFpbmZvKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICByZXN1bHRTaXplID0gZ19maWxlX2luZm9fZ2V0X3NpemUoaW5m
byk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK09wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlQ3Jl
YXRpb25UaW1lKGNvbnN0IFN0cmluZyYpCit7CisgICAgLy8gRklYTUU6IElzIHRoZXJlIGEgd2F5
IHRvIHJldHJpZXZlIGZpbGUgY3JlYXRpb24gdGltZSB3aXRoIEd0ayBvbiBwbGF0Zm9ybXMgdGhh
dCBzdXBwb3J0IGl0PworICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cit9CisKK09wdGlvbmFsPFdh
bGxUaW1lPiBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgpCit7Cisg
ICAgR1N0YXRCdWYgc3RhdFJlc3VsdDsKKyAgICBpZiAoIWdldEZpbGVTdGF0KHBhdGgsICZzdGF0
UmVzdWx0KSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiBXYWxs
VGltZTo6ZnJvbVJhd1NlY29uZHMoc3RhdFJlc3VsdC5zdF9tdGltZSk7Cit9CisKK3N0YXRpYyBG
aWxlTWV0YWRhdGE6OlR5cGUgdG9GaWxlTWV0YXRhVHlwZShHU3RhdEJ1ZiBzdGF0UmVzdWx0KQor
eworICAgIGlmIChTX0lTRElSKHN0YXRSZXN1bHQuc3RfbW9kZSkpCisgICAgICAgIHJldHVybiBG
aWxlTWV0YWRhdGE6OlR5cGU6OkRpcmVjdG9yeTsKKyAgICBpZiAoU19JU0xOSyhzdGF0UmVzdWx0
LnN0X21vZGUpKQorICAgICAgICByZXR1cm4gRmlsZU1ldGFkYXRhOjpUeXBlOjpTeW1ib2xpY0xp
bms7CisgICAgcmV0dXJuIEZpbGVNZXRhZGF0YTo6VHlwZTo6RmlsZTsKK30KKworc3RhdGljIE9w
dGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhVXNpbmdGdW5jdGlvbihjb25zdCBTdHJp
bmcmIHBhdGgsIGJvb2wgKCpzdGF0RnVuYykoY29uc3QgU3RyaW5nJiwgR1N0YXRCdWYqKSkKK3sK
KyAgICBHU3RhdEJ1ZiBzdGF0UmVzdWx0OworICAgIGlmICghc3RhdEZ1bmMocGF0aCwgJnN0YXRS
ZXN1bHQpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgU3RyaW5nIGZpbGVu
YW1lID0gcGF0aEdldEZpbGVOYW1lKHBhdGgpOworICAgIGJvb2wgaXNIaWRkZW4gPSAhZmlsZW5h
bWUuaXNFbXB0eSgpICYmIGZpbGVuYW1lWzBdID09ICcuJzsKKworICAgIHJldHVybiBGaWxlTWV0
YWRhdGEgeworICAgICAgICBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoc3RhdFJlc3VsdC5zdF9t
dGltZSksCisgICAgICAgIHN0YXRSZXN1bHQuc3Rfc2l6ZSwKKyAgICAgICAgaXNIaWRkZW4sCisg
ICAgICAgIHRvRmlsZU1ldGF0YVR5cGUoc3RhdFJlc3VsdCkKKyAgICB9OworfQorCitPcHRpb25h
bDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAg
cmV0dXJuIGZpbGVNZXRhZGF0YVVzaW5nRnVuY3Rpb24ocGF0aCwgJmdldEZpbGVMU3RhdCk7Cit9
CisKK09wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3Mo
Y29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIHJldHVybiBmaWxlTWV0YWRhdGFVc2luZ0Z1bmN0
aW9uKHBhdGgsICZnZXRGaWxlU3RhdCk7Cit9CisKK1N0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGNvbXBvbmVudCkKK3sKKyAg
ICBpZiAocGF0aC5lbmRzV2l0aChHX0RJUl9TRVBBUkFUT1JfUykpCisgICAgICAgIHJldHVybiBw
YXRoICsgY29tcG9uZW50OworICAgIHJldHVybiBwYXRoICsgR19ESVJfU0VQQVJBVE9SX1MgKyBj
b21wb25lbnQ7Cit9CisKK1N0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKFN0cmluZ1Zp
ZXcgcGF0aCwgY29uc3QgVmVjdG9yPFN0cmluZ1ZpZXc+JiBjb21wb25lbnRzKQoreworICAgIFN0
cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZChwYXRoKTsKKyAgICBmb3Ig
KGF1dG8mIGNvbXBvbmVudCA6IGNvbXBvbmVudHMpIHsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQo
R19ESVJfU0VQQVJBVE9SX1MpOworICAgICAgICBidWlsZGVyLmFwcGVuZChjb21wb25lbnQpOwor
ICAgIH0KKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworfQorCitib29sIG1ha2VBbGxE
aXJlY3Rvcmllcyhjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4g
ZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShwYXRoKTsKKyAgICByZXR1cm4gZmlsZW5hbWUg
PyBnX21rZGlyX3dpdGhfcGFyZW50cyhmaWxlbmFtZS5nZXQoKSwgU19JUldYVSkgIT0gLTEgOiBm
YWxzZTsKK30KKworU3RyaW5nIGhvbWVEaXJlY3RvcnlQYXRoKCkKK3sKKyAgICByZXR1cm4gc3Ry
aW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihnX2dldF9ob21lX2RpcigpKTsKK30KKwor
Ym9vbCBjcmVhdGVTeW1ib2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBT
dHJpbmcmIHN5bWJvbGljTGlua1BhdGgpCit7CisgICAgQ1N0cmluZyB0YXJnZXRQYXRoRlNSZXAg
PSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24odGFyZ2V0UGF0aCk7CisgICAgaWYgKCF0YXJnZXRQ
YXRoRlNSZXAuZGF0YSgpIHx8IHRhcmdldFBhdGhGU1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgQ1N0cmluZyBzeW1ib2xpY0xpbmtQYXRoRlNSZXAg
PSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oc3ltYm9saWNMaW5rUGF0aCk7CisgICAgaWYgKCFz
eW1ib2xpY0xpbmtQYXRoRlNSZXAuZGF0YSgpIHx8IHN5bWJvbGljTGlua1BhdGhGU1JlcC5kYXRh
KClbMF0gPT0gJ1wwJykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuICFzeW1s
aW5rKHRhcmdldFBhdGhGU1JlcC5kYXRhKCksIHN5bWJvbGljTGlua1BhdGhGU1JlcC5kYXRhKCkp
OworfQorCitTdHJpbmcgcGF0aEdldEZpbGVOYW1lKGNvbnN0IFN0cmluZyYgcGF0aE5hbWUpCit7
CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gdG1wRmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShw
YXRoTmFtZSk7CisgICAgaWYgKCF0bXBGaWxlbmFtZSkKKyAgICAgICAgcmV0dXJuIHBhdGhOYW1l
OworCisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gYmFzZU5hbWUoZ19wYXRoX2dldF9iYXNlbmFtZSh0
bXBGaWxlbmFtZS5nZXQoKSkpOworICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGJhc2VOYW1l
LmdldCgpKTsKK30KKworYm9vbCBnZXRWb2x1bWVGcmVlU3BhY2UoY29uc3QgU3RyaW5nJiBwYXRo
LCB1aW50NjRfdCYgZnJlZVNwYWNlKQoreworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1l
ID0gdW5lc2NhcGVkRmlsZW5hbWUocGF0aCk7CisgICAgaWYgKCFmaWxlbmFtZSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgR1JlZlB0cjxHRmlsZT4gZmlsZSA9IGFkb3B0R1JlZihnX2Zp
bGVfbmV3X2Zvcl9wYXRoKGZpbGVuYW1lLmdldCgpKSk7CisgICAgR1JlZlB0cjxHRmlsZUluZm8+
IGZpbGVJbmZvID0gYWRvcHRHUmVmKGdfZmlsZV9xdWVyeV9maWxlc3lzdGVtX2luZm8oZmlsZS5n
ZXQoKSwgR19GSUxFX0FUVFJJQlVURV9GSUxFU1lTVEVNX0ZSRUUsIDAsIDApKTsKKyAgICBpZiAo
IWZpbGVJbmZvKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBmcmVlU3BhY2UgPSBnX2Zp
bGVfaW5mb19nZXRfYXR0cmlidXRlX3VpbnQ2NChmaWxlSW5mby5nZXQoKSwgR19GSUxFX0FUVFJJ
QlVURV9GSUxFU1lTVEVNX0ZSRUUpOworICAgIHJldHVybiAhIWZyZWVTcGFjZTsKK30KKworU3Ry
aW5nIGRpcmVjdG9yeU5hbWUoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIEdVbmlxdWVQdHI8
Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUocGF0aCk7CisgICAgaWYgKCFmaWxl
bmFtZSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgR1VuaXF1ZVB0cjxjaGFyPiBk
aXJuYW1lKGdfcGF0aF9nZXRfZGlybmFtZShmaWxlbmFtZS5nZXQoKSkpOworICAgIHJldHVybiBT
dHJpbmc6OmZyb21VVEY4KGRpcm5hbWUuZ2V0KCkpOworfQorCitWZWN0b3I8U3RyaW5nPiBsaXN0
RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBmaWx0ZXIpCit7Cisg
ICAgVmVjdG9yPFN0cmluZz4gZW50cmllczsKKworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVu
YW1lID0gdW5lc2NhcGVkRmlsZW5hbWUocGF0aCk7CisgICAgaWYgKCFmaWxlbmFtZSkKKyAgICAg
ICAgcmV0dXJuIGVudHJpZXM7CisKKyAgICBHVW5pcXVlUHRyPEdEaXI+IGRpcihnX2Rpcl9vcGVu
KGZpbGVuYW1lLmdldCgpLCAwLCBudWxscHRyKSk7CisgICAgaWYgKCFkaXIpCisgICAgICAgIHJl
dHVybiBlbnRyaWVzOworCisgICAgR1VuaXF1ZVB0cjxHUGF0dGVyblNwZWM+IHBzcGVjKGdfcGF0
dGVybl9zcGVjX25ldygoZmlsdGVyLnV0ZjgoKSkuZGF0YSgpKSk7CisgICAgd2hpbGUgKGNvbnN0
IGNoYXIqIG5hbWUgPSBnX2Rpcl9yZWFkX25hbWUoZGlyLmdldCgpKSkgeworICAgICAgICBpZiAo
IWdfcGF0dGVybl9tYXRjaF9zdHJpbmcocHNwZWMuZ2V0KCksIG5hbWUpKQorICAgICAgICAgICAg
Y29udGludWU7CisKKyAgICAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZW50cnkoZ19idWlsZF9maWxl
bmFtZShmaWxlbmFtZS5nZXQoKSwgbmFtZSwgbnVsbHB0cikpOworICAgICAgICBlbnRyaWVzLmFw
cGVuZChzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGVudHJ5LmdldCgpKSk7Cisg
ICAgfQorCisgICAgcmV0dXJuIGVudHJpZXM7Cit9CisKK1N0cmluZyBvcGVuVGVtcG9yYXJ5Rmls
ZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpCit7Cisg
ICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUoZ19zdHJkdXBfcHJpbnRmKCIlcyVzIiwgcHJl
Zml4LnV0ZjgoKS5kYXRhKCksIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKS51dGY4KCkuZGF0
YSgpKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gdGVtcFBhdGgoZ19idWlsZF9maWxlbmFtZShn
X2dldF90bXBfZGlyKCksIGZpbGVuYW1lLmdldCgpLCBOVUxMKSk7CisgICAgR1JlZlB0cjxHRmls
ZT4gZmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKHRlbXBQYXRoLmdldCgpKSk7
CisKKyAgICBoYW5kbGUgPSBnX2ZpbGVfY3JlYXRlX3JlYWR3cml0ZShmaWxlLmdldCgpLCBHX0ZJ
TEVfQ1JFQVRFX05PTkUsIDAsIDApOworICAgIGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUpKQor
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgodGVt
cFBhdGguZ2V0KCkpOworfQorCitQbGF0Zm9ybUZpbGVIYW5kbGUgb3BlbkZpbGUoY29uc3QgU3Ry
aW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUgbW9kZSkKK3sKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBm
aWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGgpOworICAgIGlmICghZmlsZW5hbWUpCisg
ICAgICAgIHJldHVybiBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOworCisgICAgR1JlZlB0cjxH
RmlsZT4gZmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKGZpbGVuYW1lLmdldCgp
KSk7CisgICAgR0ZpbGVJT1N0cmVhbSogaW9TdHJlYW0gPSAwOworICAgIGlmIChtb2RlID09IEZp
bGVPcGVuTW9kZTo6UmVhZCkKKyAgICAgICAgaW9TdHJlYW0gPSBnX2ZpbGVfb3Blbl9yZWFkd3Jp
dGUoZmlsZS5nZXQoKSwgMCwgMCk7CisgICAgZWxzZSBpZiAobW9kZSA9PSBGaWxlT3Blbk1vZGU6
OldyaXRlKSB7CisgICAgICAgIGlmIChnX2ZpbGVfdGVzdChmaWxlbmFtZS5nZXQoKSwgc3RhdGlj
X2Nhc3Q8R0ZpbGVUZXN0PihHX0ZJTEVfVEVTVF9FWElTVFMgfCBHX0ZJTEVfVEVTVF9JU19SRUdV
TEFSKSkpCisgICAgICAgICAgICBpb1N0cmVhbSA9IGdfZmlsZV9vcGVuX3JlYWR3cml0ZShmaWxl
LmdldCgpLCAwLCAwKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaW9TdHJlYW0gPSBnX2Zp
bGVfY3JlYXRlX3JlYWR3cml0ZShmaWxlLmdldCgpLCBHX0ZJTEVfQ1JFQVRFX05PTkUsIDAsIDAp
OworICAgIH0KKworICAgIHJldHVybiBpb1N0cmVhbTsKK30KKwordm9pZCBjbG9zZUZpbGUoUGxh
dGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpCit7CisgICAgaWYgKCFpc0hhbmRsZVZhbGlkKGhhbmRs
ZSkpCisgICAgICAgIHJldHVybjsKKworICAgIGdfaW9fc3RyZWFtX2Nsb3NlKEdfSU9fU1RSRUFN
KGhhbmRsZSksIDAsIDApOworICAgIGdfb2JqZWN0X3VucmVmKGhhbmRsZSk7CisgICAgaGFuZGxl
ID0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKK30KKworbG9uZyBsb25nIHNlZWtGaWxlKFBs
YXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQsIEZpbGVTZWVrT3JpZ2lu
IG9yaWdpbikKK3sKKyAgICBHU2Vla1R5cGUgc2Vla1R5cGUgPSBHX1NFRUtfU0VUOworICAgIHN3
aXRjaCAob3JpZ2luKSB7CisgICAgY2FzZSBGaWxlU2Vla09yaWdpbjo6QmVnaW5uaW5nOgorICAg
ICAgICBzZWVrVHlwZSA9IEdfU0VFS19TRVQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRmls
ZVNlZWtPcmlnaW46OkN1cnJlbnQ6CisgICAgICAgIHNlZWtUeXBlID0gR19TRUVLX0NVUjsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBGaWxlU2Vla09yaWdpbjo6RW5kOgorICAgICAgICBzZWVr
VHlwZSA9IEdfU0VFS19FTkQ7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKworICAgIGlmICghZ19zZWVrYWJsZV9zZWVr
KEdfU0VFS0FCTEUoZ19pb19zdHJlYW1fZ2V0X2lucHV0X3N0cmVhbShHX0lPX1NUUkVBTShoYW5k
bGUpKSksCisgICAgICAgIG9mZnNldCwgc2Vla1R5cGUsIDAsIDApKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIC0xOworICAgIH0KKyAgICByZXR1cm4gZ19zZWVrYWJsZV90ZWxsKEdfU0VFS0FCTEUo
Z19pb19zdHJlYW1fZ2V0X2lucHV0X3N0cmVhbShHX0lPX1NUUkVBTShoYW5kbGUpKSkpOworfQor
CitpbnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY29uc3QgY2hhciog
ZGF0YSwgaW50IGxlbmd0aCkKK3sKKyAgICBnc2l6ZSBieXRlc1dyaXR0ZW47CisgICAgZ19vdXRw
dXRfc3RyZWFtX3dyaXRlX2FsbChnX2lvX3N0cmVhbV9nZXRfb3V0cHV0X3N0cmVhbShHX0lPX1NU
UkVBTShoYW5kbGUpKSwKKyAgICAgICAgZGF0YSwgbGVuZ3RoLCAmYnl0ZXNXcml0dGVuLCAwLCAw
KTsKKyAgICByZXR1cm4gYnl0ZXNXcml0dGVuOworfQorCitpbnQgcmVhZEZyb21GaWxlKFBsYXRm
b3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCit7CisgICAgR1Vu
aXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOworICAgIGRvIHsKKyAgICAgICAgZ3NzaXplIGJ5dGVz
UmVhZCA9IGdfaW5wdXRfc3RyZWFtX3JlYWQoZ19pb19zdHJlYW1fZ2V0X2lucHV0X3N0cmVhbShH
X0lPX1NUUkVBTShoYW5kbGUpKSwKKyAgICAgICAgICAgIGRhdGEsIGxlbmd0aCwgMCwgJmVycm9y
Lm91dFB0cigpKTsKKyAgICAgICAgaWYgKGJ5dGVzUmVhZCA+PSAwKQorICAgICAgICAgICAgcmV0
dXJuIGJ5dGVzUmVhZDsKKyAgICB9IHdoaWxlIChlcnJvciAmJiBlcnJvci0+Y29kZSA9PSBHX0ZJ
TEVfRVJST1JfSU5UUik7CisgICAgcmV0dXJuIC0xOworfQorCitib29sIG1vdmVGaWxlKGNvbnN0
IFN0cmluZyYgb2xkUGF0aCwgY29uc3QgU3RyaW5nJiBuZXdQYXRoKQoreworICAgIEdVbmlxdWVQ
dHI8Z2NoYXI+IG9sZEZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUob2xkUGF0aCk7CisgICAg
aWYgKCFvbGRGaWxlbmFtZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgR1VuaXF1ZVB0
cjxnY2hhcj4gbmV3RmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShuZXdQYXRoKTsKKyAgICBp
ZiAoIW5ld0ZpbGVuYW1lKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBHUmVmUHRyPEdG
aWxlPiBvbGRGaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgob2xkRmlsZW5hbWUu
Z2V0KCkpKTsKKyAgICBHUmVmUHRyPEdGaWxlPiBuZXdGaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9u
ZXdfZm9yX3BhdGgobmV3RmlsZW5hbWUuZ2V0KCkpKTsKKworICAgIHJldHVybiBnX2ZpbGVfbW92
ZShvbGRGaWxlLmdldCgpLCBuZXdGaWxlLmdldCgpLCBHX0ZJTEVfQ09QWV9PVkVSV1JJVEUsIG51
bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpOworfQorCitib29sIGhhcmRMaW5rT3JD
b3B5RmlsZShjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbikK
K3sKKyNpZiBPUyhXSU5ET1dTKQorICAgIHJldHVybiAhITo6Q29weUZpbGUoc291cmNlLmNoYXJh
Y3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpLCBkZXN0aW5hdGlvbi5jaGFyYWN0ZXJz
V2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSwgVFJVRSk7CisjZWxzZQorICAgIEdVbmlxdWVQ
dHI8Z2NoYXI+IHNvdXJjZUZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUoc291cmNlKTsKKyAg
ICBpZiAoIXNvdXJjZUZpbGVuYW1lKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBHVW5p
cXVlUHRyPGdjaGFyPiBkZXN0aW5hdGlvbkZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUoZGVz
dGluYXRpb24pOworICAgIGlmICghZGVzdGluYXRpb25GaWxlbmFtZSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgaWYgKCFsaW5rKHNvdXJjZUZpbGVuYW1lLmdldCgpLCBkZXN0aW5hdGlv
bkZpbGVuYW1lLmdldCgpKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBIYXJkIGxp
bmsgZmFpbGVkLiBQZXJmb3JtIGEgY29weSBpbnN0ZWFkLgorICAgIEdSZWZQdHI8R0ZpbGU+IHNv
dXJjZUZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0aChzb3VyY2VGaWxlbmFtZS5n
ZXQoKSkpOworICAgIEdSZWZQdHI8R0ZpbGU+IGRlc3RpbmF0aW9uRmlsZSA9IGFkb3B0R1JlZihn
X2ZpbGVfbmV3X2Zvcl9wYXRoKGRlc3RpbmF0aW9uRmlsZW5hbWUuZ2V0KCkpKTsKKyAgICByZXR1
cm4gZ19maWxlX2NvcHkoc291cmNlRmlsZS5nZXQoKSwgZGVzdGluYXRpb25GaWxlLmdldCgpLCBH
X0ZJTEVfQ09QWV9OT05FLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKTsKKyNl
bmRpZgorfQorCitPcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29uc3QgQ1N0cmlu
ZyYgZnNGaWxlKQoreworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2NhcGVk
RmlsZW5hbWUoZnNGaWxlLmRhdGEoKSk7CisgICAgaWYgKCFmaWxlbmFtZSkKKyAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKworICAgIEdSZWZQdHI8R0ZpbGU+IGZpbGUgPSBhZG9wdEdSZWYo
Z19maWxlX25ld19mb3JfcGF0aChmaWxlbmFtZS5nZXQoKSkpOworICAgIEdSZWZQdHI8R0ZpbGVJ
bmZvPiBmaWxlSW5mbyA9IGFkb3B0R1JlZihnX2ZpbGVfcXVlcnlfZmlsZXN5c3RlbV9pbmZvKGZp
bGUuZ2V0KCksIEdfRklMRV9BVFRSSUJVVEVfVU5JWF9ERVZJQ0UsIG51bGxwdHIsIG51bGxwdHIp
KTsKKyAgICBpZiAoIWZpbGVJbmZvKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisg
ICAgcmV0dXJuIGdfZmlsZV9pbmZvX2dldF9hdHRyaWJ1dGVfdWludDMyKGZpbGVJbmZvLmdldCgp
LCBHX0ZJTEVfQVRUUklCVVRFX1VOSVhfREVWSUNFKTsKK30KKworI2lmIFVTRShGSUxFX0xPQ0sp
Citib29sIGxvY2tGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIE9wdGlvblNldDxGaWxl
TG9ja01vZGU+IGxvY2tNb2RlKQoreworICAgIENPTVBJTEVfQVNTRVJUKExPQ0tfU0ggPT0gV1RG
OjplbnVtVG9VbmRlcmx5aW5nVHlwZShGaWxlTG9ja01vZGU6OlNoYXJlZCksIExvY2tTaGFyZWRF
bmNvZGluZ0lzQXNFeHBlY3RlZCk7CisgICAgQ09NUElMRV9BU1NFUlQoTE9DS19FWCA9PSBXVEY6
OmVudW1Ub1VuZGVybHlpbmdUeXBlKEZpbGVMb2NrTW9kZTo6RXhjbHVzaXZlKSwgTG9ja0V4Y2x1
c2l2ZUVuY29kaW5nSXNBc0V4cGVjdGVkKTsKKyAgICBDT01QSUxFX0FTU0VSVChMT0NLX05CID09
IFdURjo6ZW51bVRvVW5kZXJseWluZ1R5cGUoRmlsZUxvY2tNb2RlOjpOb25ibG9ja2luZyksIExv
Y2tOb25ibG9ja2luZ0VuY29kaW5nSXNBc0V4cGVjdGVkKTsKKyAgICBhdXRvKiBpbnB1dFN0cmVh
bSA9IGdfaW9fc3RyZWFtX2dldF9pbnB1dF9zdHJlYW0oR19JT19TVFJFQU0oaGFuZGxlKSk7Cisg
ICAgaW50IHJlc3VsdCA9IGZsb2NrKGdfZmlsZV9kZXNjcmlwdG9yX2Jhc2VkX2dldF9mZChHX0ZJ
TEVfREVTQ1JJUFRPUl9CQVNFRChpbnB1dFN0cmVhbSkpLCBsb2NrTW9kZS50b1JhdygpKTsKKyAg
ICByZXR1cm4gcmVzdWx0ICE9IC0xOworfQorCitib29sIHVubG9ja0ZpbGUoUGxhdGZvcm1GaWxl
SGFuZGxlIGhhbmRsZSkKK3sKKyAgICBhdXRvKiBpbnB1dFN0cmVhbSA9IGdfaW9fc3RyZWFtX2dl
dF9pbnB1dF9zdHJlYW0oR19JT19TVFJFQU0oaGFuZGxlKSk7CisgICAgaW50IHJlc3VsdCA9IGZs
b2NrKGdfZmlsZV9kZXNjcmlwdG9yX2Jhc2VkX2dldF9mZChHX0ZJTEVfREVTQ1JJUFRPUl9CQVNF
RChpbnB1dFN0cmVhbSkpLCBMT0NLX1VOKTsKKyAgICByZXR1cm4gcmVzdWx0ICE9IC0xOworfQor
I2VuZGlmIC8vIFVTRShGSUxFX0xPQ0spCisKK30gLy8gbmFtZXNwYWNlIEZpbGVTeXN0ZW0KK30g
Ly8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvbWFjL0ZpbGVTeXN0
ZW1NYWMubW0gYi9Tb3VyY2UvV1RGL3d0Zi9tYWMvRmlsZVN5c3RlbU1hYy5tbQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li45MjY5MmExNmZiYTViMTUyNzhjNzcyZjc1NmU1NTNhMTEwNzU1ZjJiCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dURi93dGYvbWFjL0ZpbGVTeXN0ZW1NYWMubW0KQEAgLTAsMCArMSw4OCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0IDx3dGYvRmls
ZVN5c3RlbS5oPgorCisjaWYgUExBVEZPUk0oTUFDKQorCisjaW1wb3J0IDx3dGYvY29jb2EvTlNV
UkxFeHRyYXMuaD4KKyNpbXBvcnQgPHd0Zi9zcGkvbWFjL01ldGFkYXRhU1BJLmg+CisjaW1wb3J0
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK2Jvb2wgRmlsZVN5
c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIGF1
dG8gZmlsZU1hbmFnZXIgPSBhZG9wdE5TKFtbTlNGaWxlTWFuYWdlciBhbGxvY10gaW5pdF0pOwor
CisgICAgaWYgKE5TQXJyYXkgKmRpcmVjdG9yeUNvbnRlbnRzID0gW2ZpbGVNYW5hZ2VyIGNvbnRl
bnRzT2ZEaXJlY3RvcnlBdFBhdGg6cGF0aCBlcnJvcjpudWxscHRyXSkgeworICAgICAgICAvLyBF
eHBsaWNpdGx5IGxvb2sgZm9yIGFuZCBkZWxldGUgLkRTX1N0b3JlIGZpbGVzLgorICAgICAgICBp
ZiAoZGlyZWN0b3J5Q29udGVudHMuY291bnQgPT0gMSAmJiBbZGlyZWN0b3J5Q29udGVudHMuZmly
c3RPYmplY3QgaXNFcXVhbFRvU3RyaW5nOkAiLkRTX1N0b3JlIl0pCisgICAgICAgICAgICBbZmls
ZU1hbmFnZXIgcmVtb3ZlSXRlbUF0UGF0aDpbcGF0aCBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21w
b25lbnQ6ZGlyZWN0b3J5Q29udGVudHMuZmlyc3RPYmplY3RdIGVycm9yOm51bGxwdHJdOworICAg
IH0KKworICAgIC8vIHJtZGlyKC4uLikgcmV0dXJucyAwIG9uIHN1Y2Nlc3NmdWwgZGVsZXRpb24g
b2YgdGhlIHBhdGggYW5kIG5vbi16ZXJvIGluIGFueSBvdGhlciBjYXNlIChpbmNsdWRpbmcgaW52
YWxpZCBwZXJtaXNzaW9ucyBvciBub24tZXhpc3RlbnQgZmlsZSkKKyAgICByZXR1cm4gIXJtZGly
KEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCkpOworfQor
Cit2b2lkIEZpbGVTeXN0ZW06OnNldE1ldGFkYXRhVVJMKGNvbnN0IFN0cmluZyYgcGF0aCwgY29u
c3QgU3RyaW5nJiBtZXRhZGF0YVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiByZWZlcnJlcikKK3sK
KyAgICBTdHJpbmcgdXJsU3RyaW5nOworICAgIGlmIChOU1VSTCAqdXJsID0gVVJMV2l0aFVzZXJU
eXBlZFN0cmluZyhtZXRhZGF0YVVSTFN0cmluZywgbmlsKSkKKyAgICAgICAgdXJsU3RyaW5nID0g
V1RGOjp1c2VyVmlzaWJsZVN0cmluZyhXVEY6OlVSTEJ5UmVtb3ZpbmdVc2VySW5mbyh1cmwpKTsK
KyAgICBlbHNlCisgICAgICAgIHVybFN0cmluZyA9IG1ldGFkYXRhVVJMU3RyaW5nOworCisgICAg
Ly8gQ2FsbCBNZXRhZGF0YSBBUEkgb24gYSBiYWNrZ3JvdW5kIHF1ZXVlIGJlY2F1c2UgaXQgY2Fu
IHRha2Ugc29tZSB0aW1lLgorICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9nbG9iYWxf
cXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVGQVVMVCwgMCksIFtwYXRoID0gcGF0aC5p
c29sYXRlZENvcHkoKSwgdXJsU3RyaW5nID0gdXJsU3RyaW5nLmlzb2xhdGVkQ29weSgpLCByZWZl
cnJlciA9IHJlZmVycmVyLmlzb2xhdGVkQ29weSgpXSB7CisgICAgICAgIGF1dG8gaXRlbSA9IGFk
b3B0Q0YoTURJdGVtQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHBhdGguY3JlYXRlQ0ZTdHJp
bmcoKS5nZXQoKSkpOworICAgICAgICBpZiAoIWl0ZW0pCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgYXV0byB3aGVyZUZyb21BdHRyaWJ1dGUgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJy
YXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czp1cmxTdHJpbmcsIG5pbF0pOworICAgICAgICBpZiAo
IXJlZmVycmVyLmlzTnVsbCgpKQorICAgICAgICAgICAgW3doZXJlRnJvbUF0dHJpYnV0ZSBhZGRP
YmplY3Q6cmVmZXJyZXJdOworCisgICAgICAgIE1ESXRlbVNldEF0dHJpYnV0ZShpdGVtLmdldCgp
LCBrTURJdGVtV2hlcmVGcm9tcywgKF9fYnJpZGdlIENGQXJyYXlSZWYpd2hlcmVGcm9tQXR0cmli
dXRlLmdldCgpKTsKKyAgICAgICAgTURJdGVtU2V0QXR0cmlidXRlKGl0ZW0uZ2V0KCksIGtNREl0
ZW1Eb3dubG9hZGVkRGF0ZSwgKF9fYnJpZGdlIENGQXJyYXlSZWYpQFsgW05TRGF0ZSBkYXRlXSBd
KTsKKyAgICB9KTsKK30KKworYm9vbCBGaWxlU3lzdGVtOjpjYW5FeGNsdWRlRnJvbUJhY2t1cCgp
Cit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgRmlsZVN5c3RlbTo6ZXhjbHVkZUZyb21C
YWNrdXAoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIC8vIEl0IGlzIGNyaXRpY2FsIHRvIHBh
c3MgRkFMU0UgZm9yIGV4Y2x1ZGVCeVBhdGggYmVjYXVzZSBleGNsdWRpbmcgYnkgcGF0aCByZXF1
aXJlcyByb290IHByaXZpbGVnZXMuCisgICAgQ1NCYWNrdXBTZXRJdGVtRXhjbHVkZWQoRmlsZVN5
c3RlbTo6cGF0aEFzVVJMKHBhdGgpLmdldCgpLCBUUlVFLCBGQUxTRSk7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgorCisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1Nv
dXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzYwZWNi
MTU4NjM5MjBmYTQzNjFmYzE0ZGI4ZWU2ZDNmZmUyZTRmMAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKQEAgLTAsMCArMSw0OTYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBs
ZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICog
ICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KKworI2luY2x1ZGUg
PGRpcmVudC5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNs
dWRlIDxmbm1hdGNoLmg+CisjaW5jbHVkZSA8bGliZ2VuLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4K
KyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2luY2x1ZGUgPHN5cy9zdGF0dmZzLmg+CisjaW5jbHVk
ZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8d3RmL0VudW1U
cmFpdHMuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZU1ldGFkYXRhLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK25hbWVzcGFj
ZSBGaWxlU3lzdGVtIHsKKworYm9vbCBmaWxlRXhpc3RzKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sK
KyAgICBpZiAocGF0aC5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgQ1N0
cmluZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKKworICAgIGlmICgh
ZnNSZXAuZGF0YSgpIHx8IGZzUmVwLmRhdGEoKVswXSA9PSAnXDAnKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICByZXR1cm4gYWNjZXNzKGZzUmVwLmRhdGEoKSwgRl9PSykgIT0gLTE7Cit9
CisKK2Jvb2wgZGVsZXRlRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgQ1N0cmluZyBm
c1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKKworICAgIGlmICghZnNSZXAu
ZGF0YSgpIHx8IGZzUmVwLmRhdGEoKVswXSA9PSAnXDAnKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICAvLyB1bmxpbmsoLi4uKSByZXR1cm5zIDAgb24gc3VjY2Vzc2Z1bCBkZWxldGlvbiBv
ZiB0aGUgcGF0aCBhbmQgbm9uLXplcm8gaW4gYW55IG90aGVyIGNhc2UgKGluY2x1ZGluZyBpbnZh
bGlkIHBlcm1pc3Npb25zIG9yIG5vbi1leGlzdGVudCBmaWxlKQorICAgIHJldHVybiAhdW5saW5r
KGZzUmVwLmRhdGEoKSk7Cit9CisKK1BsYXRmb3JtRmlsZUhhbmRsZSBvcGVuRmlsZShjb25zdCBT
dHJpbmcmIHBhdGgsIEZpbGVPcGVuTW9kZSBtb2RlKQoreworICAgIENTdHJpbmcgZnNSZXAgPSBm
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisKKyAgICBpZiAoZnNSZXAuaXNOdWxsKCkp
CisgICAgICAgIHJldHVybiBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOworCisgICAgaW50IHBs
YXRmb3JtRmxhZyA9IDA7CisgICAgaWYgKG1vZGUgPT0gRmlsZU9wZW5Nb2RlOjpSZWFkKQorICAg
ICAgICBwbGF0Zm9ybUZsYWcgfD0gT19SRE9OTFk7CisgICAgZWxzZSBpZiAobW9kZSA9PSBGaWxl
T3Blbk1vZGU6OldyaXRlKQorICAgICAgICBwbGF0Zm9ybUZsYWcgfD0gKE9fV1JPTkxZIHwgT19D
UkVBVCB8IE9fVFJVTkMpOworI2lmIE9TKERBUldJTikKKyAgICBlbHNlIGlmIChtb2RlID09IEZp
bGVPcGVuTW9kZTo6RXZlbnRzT25seSkKKyAgICAgICAgcGxhdGZvcm1GbGFnIHw9IE9fRVZUT05M
WTsKKyNlbmRpZgorCisgICAgcmV0dXJuIG9wZW4oZnNSZXAuZGF0YSgpLCBwbGF0Zm9ybUZsYWcs
IDA2NjYpOworfQorCit2b2lkIGNsb3NlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkK
K3sKKyAgICBpZiAoaXNIYW5kbGVWYWxpZChoYW5kbGUpKSB7CisgICAgICAgIGNsb3NlKGhhbmRs
ZSk7CisgICAgICAgIGhhbmRsZSA9IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7CisgICAgfQor
fQorCitsb25nIGxvbmcgc2Vla0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgbG9uZyBs
b25nIG9mZnNldCwgRmlsZVNlZWtPcmlnaW4gb3JpZ2luKQoreworICAgIGludCB3aGVuY2UgPSBT
RUVLX1NFVDsKKyAgICBzd2l0Y2ggKG9yaWdpbikgeworICAgIGNhc2UgRmlsZVNlZWtPcmlnaW46
OkJlZ2lubmluZzoKKyAgICAgICAgd2hlbmNlID0gU0VFS19TRVQ7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgRmlsZVNlZWtPcmlnaW46OkN1cnJlbnQ6CisgICAgICAgIHdoZW5jZSA9IFNFRUtf
Q1VSOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZpbGVTZWVrT3JpZ2luOjpFbmQ6CisgICAg
ICAgIHdoZW5jZSA9IFNFRUtfRU5EOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGxvbmcgbG9uZz4obHNlZWsoaGFuZGxlLCBvZmZzZXQsIHdoZW5jZSkpOworfQorCitib29sIHRy
dW5jYXRlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0KQor
eworICAgIC8vIGZ0cnVuY2F0ZSByZXR1cm5zIDAgdG8gaW5kaWNhdGUgdGhlIHN1Y2Nlc3MuCisg
ICAgcmV0dXJuICFmdHJ1bmNhdGUoaGFuZGxlLCBvZmZzZXQpOworfQorCitpbnQgd3JpdGVUb0Zp
bGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0
aCkKK3sKKyAgICBkbyB7CisgICAgICAgIGludCBieXRlc1dyaXR0ZW4gPSB3cml0ZShoYW5kbGUs
IGRhdGEsIHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSk7CisgICAgICAgIGlmIChieXRlc1dy
aXR0ZW4gPj0gMCkKKyAgICAgICAgICAgIHJldHVybiBieXRlc1dyaXR0ZW47CisgICAgfSB3aGls
ZSAoZXJybm8gPT0gRUlOVFIpOworICAgIHJldHVybiAtMTsKK30KKworaW50IHJlYWRGcm9tRmls
ZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQorewor
ICAgIGRvIHsKKyAgICAgICAgaW50IGJ5dGVzUmVhZCA9IHJlYWQoaGFuZGxlLCBkYXRhLCBzdGF0
aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkpOworICAgICAgICBpZiAoYnl0ZXNSZWFkID49IDApCisg
ICAgICAgICAgICByZXR1cm4gYnl0ZXNSZWFkOworICAgIH0gd2hpbGUgKGVycm5vID09IEVJTlRS
KTsKKyAgICByZXR1cm4gLTE7Cit9CisKKyNpZiBVU0UoRklMRV9MT0NLKQorYm9vbCBsb2NrRmls
ZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBPcHRpb25TZXQ8RmlsZUxvY2tNb2RlPiBsb2Nr
TW9kZSkKK3sKKyAgICBDT01QSUxFX0FTU0VSVChMT0NLX1NIID09IFdURjo6ZW51bVRvVW5kZXJs
eWluZ1R5cGUoRmlsZUxvY2tNb2RlOjpTaGFyZWQpLCBMb2NrU2hhcmVkRW5jb2RpbmdJc0FzRXhw
ZWN0ZWQpOworICAgIENPTVBJTEVfQVNTRVJUKExPQ0tfRVggPT0gV1RGOjplbnVtVG9VbmRlcmx5
aW5nVHlwZShGaWxlTG9ja01vZGU6OkV4Y2x1c2l2ZSksIExvY2tFeGNsdXNpdmVFbmNvZGluZ0lz
QXNFeHBlY3RlZCk7CisgICAgQ09NUElMRV9BU1NFUlQoTE9DS19OQiA9PSBXVEY6OmVudW1Ub1Vu
ZGVybHlpbmdUeXBlKEZpbGVMb2NrTW9kZTo6Tm9uYmxvY2tpbmcpLCBMb2NrTm9uYmxvY2tpbmdF
bmNvZGluZ0lzQXNFeHBlY3RlZCk7CisgICAgaW50IHJlc3VsdCA9IGZsb2NrKGhhbmRsZSwgbG9j
a01vZGUudG9SYXcoKSk7CisgICAgcmV0dXJuIChyZXN1bHQgIT0gLTEpOworfQorCitib29sIHVu
bG9ja0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSkKK3sKKyAgICBpbnQgcmVzdWx0ID0g
ZmxvY2soaGFuZGxlLCBMT0NLX1VOKTsKKyAgICByZXR1cm4gKHJlc3VsdCAhPSAtMSk7Cit9Cisj
ZW5kaWYKKworI2lmICFQTEFURk9STShNQUMpCitib29sIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KGNv
bnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKHBhdGgpOworCisgICAgaWYgKCFmc1JlcC5kYXRhKCkgfHwgZnNSZXAuZGF0YSgp
WzBdID09ICdcMCcpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIHJtZGlyKC4uLikg
cmV0dXJucyAwIG9uIHN1Y2Nlc3NmdWwgZGVsZXRpb24gb2YgdGhlIHBhdGggYW5kIG5vbi16ZXJv
IGluIGFueSBvdGhlciBjYXNlIChpbmNsdWRpbmcgaW52YWxpZCBwZXJtaXNzaW9ucyBvciBub24t
ZXhpc3RlbnQgZmlsZSkKKyAgICByZXR1cm4gIXJtZGlyKGZzUmVwLmRhdGEoKSk7Cit9CisjZW5k
aWYKKworYm9vbCBnZXRGaWxlU2l6ZShjb25zdCBTdHJpbmcmIHBhdGgsIGxvbmcgbG9uZyYgcmVz
dWx0KQoreworICAgIENTdHJpbmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0
aCk7CisKKyAgICBpZiAoIWZzUmVwLmRhdGEoKSB8fCBmc1JlcC5kYXRhKClbMF0gPT0gJ1wwJykK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgc3RydWN0IHN0YXQgZmlsZUluZm87CisKKyAg
ICBpZiAoc3RhdChmc1JlcC5kYXRhKCksICZmaWxlSW5mbykpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIHJlc3VsdCA9IGZpbGVJbmZvLnN0X3NpemU7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK2Jvb2wgZ2V0RmlsZVNpemUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgbG9uZyBsb25n
JiByZXN1bHQpCit7CisgICAgc3RydWN0IHN0YXQgZmlsZUluZm87CisgICAgaWYgKGZzdGF0KGhh
bmRsZSwgJmZpbGVJbmZvKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmVzdWx0ID0g
ZmlsZUluZm8uc3Rfc2l6ZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworT3B0aW9uYWw8V2FsbFRp
bWU+IGdldEZpbGVDcmVhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoKQoreworI2lmIE9TKERB
UldJTikgfHwgT1MoT1BFTkJTRCkgfHwgT1MoTkVUQlNEKSB8fCBPUyhGUkVFQlNEKQorICAgIENT
dHJpbmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisKKyAgICBpZiAo
IWZzUmVwLmRhdGEoKSB8fCBmc1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKKyAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKworICAgIHN0cnVjdCBzdGF0IGZpbGVJbmZvOworCisgICAgaWYgKHN0
YXQoZnNSZXAuZGF0YSgpLCAmZmlsZUluZm8pKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworCisgICAgcmV0dXJuIFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhmaWxlSW5mby5zdF9iaXJ0
aHRpbWUpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocGF0aCk7CisgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyNlbmRpZgorfQorCitPcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZU1vZGlmaWNh
dGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIENTdHJpbmcgZnNSZXAgPSBmaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisKKyAgICBpZiAoIWZzUmVwLmRhdGEoKSB8fCBm
c1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwor
ICAgIHN0cnVjdCBzdGF0IGZpbGVJbmZvOworCisgICAgaWYgKHN0YXQoZnNSZXAuZGF0YSgpLCAm
ZmlsZUluZm8pKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIFdh
bGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhmaWxlSW5mby5zdF9tdGltZSk7Cit9CisKK3N0YXRpYyBG
aWxlTWV0YWRhdGE6OlR5cGUgdG9GaWxlTWV0YXRhVHlwZShzdHJ1Y3Qgc3RhdCBmaWxlSW5mbykK
K3sKKyAgICBpZiAoU19JU0RJUihmaWxlSW5mby5zdF9tb2RlKSkKKyAgICAgICAgcmV0dXJuIEZp
bGVNZXRhZGF0YTo6VHlwZTo6RGlyZWN0b3J5OworICAgIGlmIChTX0lTTE5LKGZpbGVJbmZvLnN0
X21vZGUpKQorICAgICAgICByZXR1cm4gRmlsZU1ldGFkYXRhOjpUeXBlOjpTeW1ib2xpY0xpbms7
CisgICAgcmV0dXJuIEZpbGVNZXRhZGF0YTo6VHlwZTo6RmlsZTsKK30KKworc3RhdGljIE9wdGlv
bmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhVXNpbmdGdW5jdGlvbihjb25zdCBTdHJpbmcm
IHBhdGgsIGludCAoKnN0YXRGdW5jKShjb25zdCBjaGFyKiwgc3RydWN0IHN0YXQqKSkKK3sKKyAg
ICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworCisgICAg
aWYgKCFmc1JlcC5kYXRhKCkgfHwgZnNSZXAuZGF0YSgpWzBdID09ICdcMCcpCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBzdHJ1Y3Qgc3RhdCBmaWxlSW5mbzsKKyAgICBpZiAo
c3RhdEZ1bmMoZnNSZXAuZGF0YSgpLCAmZmlsZUluZm8pKQorICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworCisgICAgU3RyaW5nIGZpbGVuYW1lID0gcGF0aEdldEZpbGVOYW1lKHBhdGgpOwor
ICAgIGJvb2wgaXNIaWRkZW4gPSAhZmlsZW5hbWUuaXNFbXB0eSgpICYmIGZpbGVuYW1lWzBdID09
ICcuJzsKKyAgICByZXR1cm4gRmlsZU1ldGFkYXRhIHsKKyAgICAgICAgV2FsbFRpbWU6OmZyb21S
YXdTZWNvbmRzKGZpbGVJbmZvLnN0X210aW1lKSwKKyAgICAgICAgZmlsZUluZm8uc3Rfc2l6ZSwK
KyAgICAgICAgaXNIaWRkZW4sCisgICAgICAgIHRvRmlsZU1ldGF0YVR5cGUoZmlsZUluZm8pCisg
ICAgfTsKK30KKworT3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGEoY29uc3QgU3Ry
aW5nJiBwYXRoKQoreworICAgIHJldHVybiBmaWxlTWV0YWRhdGFVc2luZ0Z1bmN0aW9uKHBhdGgs
ICZsc3RhdCk7Cit9CisKK09wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhRm9sbG93
aW5nU3ltbGlua3MoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIHJldHVybiBmaWxlTWV0YWRh
dGFVc2luZ0Z1bmN0aW9uKHBhdGgsICZzdGF0KTsKK30KKworYm9vbCBjcmVhdGVTeW1ib2xpY0xp
bmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGljTGlua1Bh
dGgpCit7CisgICAgQ1N0cmluZyB0YXJnZXRQYXRoRlNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24odGFyZ2V0UGF0aCk7CisgICAgaWYgKCF0YXJnZXRQYXRoRlNSZXAuZGF0YSgpIHx8IHRh
cmdldFBhdGhGU1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgQ1N0cmluZyBzeW1ib2xpY0xpbmtQYXRoRlNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oc3ltYm9saWNMaW5rUGF0aCk7CisgICAgaWYgKCFzeW1ib2xpY0xpbmtQYXRoRlNSZXAu
ZGF0YSgpIHx8IHN5bWJvbGljTGlua1BhdGhGU1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuICFzeW1saW5rKHRhcmdldFBhdGhGU1JlcC5k
YXRhKCksIHN5bWJvbGljTGlua1BhdGhGU1JlcC5kYXRhKCkpOworfQorCitTdHJpbmcgcGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb21w
b25lbnQpCit7CisgICAgaWYgKHBhdGguZW5kc1dpdGgoJy8nKSkKKyAgICAgICAgcmV0dXJuIHBh
dGggKyBjb21wb25lbnQ7CisgICAgcmV0dXJuIHBhdGggKyAiLyIgKyBjb21wb25lbnQ7Cit9CisK
K1N0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKFN0cmluZ1ZpZXcgcGF0aCwgY29uc3Qg
VmVjdG9yPFN0cmluZ1ZpZXc+JiBjb21wb25lbnRzKQoreworICAgIFN0cmluZ0J1aWxkZXIgYnVp
bGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZChwYXRoKTsKKyAgICBmb3IgKGF1dG8mIGNvbXBvbmVu
dCA6IGNvbXBvbmVudHMpIHsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJy8nKTsKKyAgICAgICAg
YnVpbGRlci5hcHBlbmQoY29tcG9uZW50KTsKKyAgICB9CisgICAgcmV0dXJuIGJ1aWxkZXIudG9T
dHJpbmcoKTsKK30KKworYm9vbCBtYWtlQWxsRGlyZWN0b3JpZXMoY29uc3QgU3RyaW5nJiBwYXRo
KQoreworICAgIENTdHJpbmcgZnVsbFBhdGggPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0
aCk7CisgICAgaWYgKCFhY2Nlc3MoZnVsbFBhdGguZGF0YSgpLCBGX09LKSkKKyAgICAgICAgcmV0
dXJuIHRydWU7CisKKyAgICBjaGFyKiBwID0gZnVsbFBhdGgubXV0YWJsZURhdGEoKSArIDE7Cisg
ICAgaW50IGxlbmd0aCA9IGZ1bGxQYXRoLmxlbmd0aCgpOworCisgICAgaWYgKHBbbGVuZ3RoIC0g
MV0gPT0gJy8nKQorICAgICAgICBwW2xlbmd0aCAtIDFdID0gJ1wwJzsKKyAgICBmb3IgKDsgKnA7
ICsrcCkgeworICAgICAgICBpZiAoKnAgPT0gJy8nKSB7CisgICAgICAgICAgICAqcCA9ICdcMCc7
CisgICAgICAgICAgICBpZiAoYWNjZXNzKGZ1bGxQYXRoLmRhdGEoKSwgRl9PSykpIHsKKyAgICAg
ICAgICAgICAgICBpZiAobWtkaXIoZnVsbFBhdGguZGF0YSgpLCBTX0lSV1hVKSkKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgKnAg
PSAnLyc7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKGFjY2VzcyhmdWxsUGF0aC5kYXRhKCks
IEZfT0spKSB7CisgICAgICAgIGlmIChta2RpcihmdWxsUGF0aC5kYXRhKCksIFNfSVJXWFUpKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQor
CitTdHJpbmcgcGF0aEdldEZpbGVOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICByZXR1
cm4gcGF0aC5zdWJzdHJpbmcocGF0aC5yZXZlcnNlRmluZCgnLycpICsgMSk7Cit9CisKK1N0cmlu
ZyBkaXJlY3RvcnlOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBDU3RyaW5nIGZzUmVw
ID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworCisgICAgaWYgKCFmc1JlcC5kYXRh
KCkgfHwgZnNSZXAuZGF0YSgpWzBdID09ICdcMCcpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsK
KworICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGRpcm5hbWUoZnNSZXAubXV0YWJsZURhdGEo
KSkpOworfQorCitWZWN0b3I8U3RyaW5nPiBsaXN0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0
aCwgY29uc3QgU3RyaW5nJiBmaWx0ZXIpCit7CisgICAgVmVjdG9yPFN0cmluZz4gZW50cmllczsK
KyAgICBDU3RyaW5nIGNwYXRoID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAg
IENTdHJpbmcgY2ZpbHRlciA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWx0ZXIpOworICAg
IERJUiogZGlyID0gb3BlbmRpcihjcGF0aC5kYXRhKCkpOworICAgIGlmIChkaXIpIHsKKyAgICAg
ICAgc3RydWN0IGRpcmVudCogZHA7CisgICAgICAgIHdoaWxlICgoZHAgPSByZWFkZGlyKGRpcikp
KSB7CisgICAgICAgICAgICBjb25zdCBjaGFyKiBuYW1lID0gZHAtPmRfbmFtZTsKKyAgICAgICAg
ICAgIGlmICghc3RyY21wKG5hbWUsICIuIikgfHwgIXN0cmNtcChuYW1lLCAiLi4iKSkKKyAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGlmIChmbm1hdGNoKGNmaWx0ZXIuZGF0
YSgpLCBuYW1lLCAwKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGNo
YXIgZmlsZVBhdGhbUEFUSF9NQVhdOworICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PGludD4o
c2l6ZW9mKGZpbGVQYXRoKSAtIDEpIDwgc25wcmludGYoZmlsZVBhdGgsIHNpemVvZihmaWxlUGF0
aCksICIlcy8lcyIsIGNwYXRoLmRhdGEoKSwgbmFtZSkpCisgICAgICAgICAgICAgICAgY29udGlu
dWU7IC8vIGJ1ZmZlciBvdmVyZmxvdworCisgICAgICAgICAgICBhdXRvIHN0cmluZyA9IHN0cmlu
Z0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZVBhdGgpOworCisgICAgICAgICAgICAv
LyBTb21lIGZpbGUgc3lzdGVtIHJlcHJlc2VudGF0aW9ucyBjYW5ub3QgYmUgcmVwcmVzZW50ZWQg
YXMgYSBVVEYtMTYgc3RyaW5nLAorICAgICAgICAgICAgLy8gc28gdGhpcyBzdHJpbmcgbWlnaHQg
YmUgbnVsbC4KKyAgICAgICAgICAgIGlmICghc3RyaW5nLmlzTnVsbCgpKQorICAgICAgICAgICAg
ICAgIGVudHJpZXMuYXBwZW5kKFdURk1vdmUoc3RyaW5nKSk7CisgICAgICAgIH0KKyAgICAgICAg
Y2xvc2VkaXIoZGlyKTsKKyAgICB9CisgICAgcmV0dXJuIGVudHJpZXM7Cit9CisKKyNpZiAhUExB
VEZPUk0oQ09DT0EpCitTdHJpbmcgc3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihj
b25zdCBjaGFyKiBwYXRoKQoreworICAgIGlmICghcGF0aCkKKyAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOworCisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgocGF0aCk7Cit9CisKK0NTdHJpbmcg
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICByZXR1
cm4gcGF0aC51dGY4KCk7Cit9CisKK2Jvb2wgbW92ZUZpbGUoY29uc3QgU3RyaW5nJiBvbGRQYXRo
LCBjb25zdCBTdHJpbmcmIG5ld1BhdGgpCit7CisgICAgYXV0byBvbGRGaWxlbmFtZSA9IGZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihvbGRQYXRoKTsKKyAgICBpZiAob2xkRmlsZW5hbWUuaXNOdWxs
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8gbmV3RmlsZW5hbWUgPSBmaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24obmV3UGF0aCk7CisgICAgaWYgKG5ld0ZpbGVuYW1lLmlzTnVs
bCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gcmVuYW1lKG9sZEZpbGVu
YW1lLmRhdGEoKSwgbmV3RmlsZW5hbWUuZGF0YSgpKSAhPSAtMTsKK30KKworYm9vbCBnZXRWb2x1
bWVGcmVlU3BhY2UoY29uc3QgU3RyaW5nJiBwYXRoLCB1aW50NjRfdCYgZnJlZVNwYWNlKQorewor
ICAgIHN0cnVjdCBzdGF0dmZzIGZpbGVTeXN0ZW1TdGF0OworICAgIGlmIChzdGF0dmZzKGZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCksICZmaWxlU3lzdGVtU3RhdCkpIHsKKyAg
ICAgICAgZnJlZVNwYWNlID0gZmlsZVN5c3RlbVN0YXQuZl9iYXZhaWwgKiBmaWxlU3lzdGVtU3Rh
dC5mX2Zyc2l6ZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxz
ZTsKK30KKyNlbmRpZgorCisjaWYgIU9TKERBUldJTikKK1N0cmluZyBvcGVuVGVtcG9yYXJ5Rmls
ZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpCit7Cisg
ICAgY2hhciBidWZmZXJbUEFUSF9NQVhdOworICAgIGNvbnN0IGNoYXIqIHRtcERpciA9IGdldGVu
digiVE1QRElSIik7CisKKyAgICBpZiAoIXRtcERpcikKKyAgICAgICAgdG1wRGlyID0gIi90bXAi
OworCisgICAgaWYgKHNucHJpbnRmKGJ1ZmZlciwgUEFUSF9NQVgsICIlcy8lc1hYWFhYWCIsIHRt
cERpciwgcHJlZml4LnV0ZjgoKS5kYXRhKCkpID49IFBBVEhfTUFYKQorICAgICAgICBnb3RvIGVu
ZDsKKworICAgIGhhbmRsZSA9IG1rc3RlbXAoYnVmZmVyKTsKKyAgICBpZiAoaGFuZGxlIDwgMCkK
KyAgICAgICAgZ290byBlbmQ7CisKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChidWZmZXIp
OworCitlbmQ6CisgICAgaGFuZGxlID0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKKyAgICBy
ZXR1cm4gU3RyaW5nKCk7Cit9CisjZW5kaWYKKworYm9vbCBoYXJkTGlua09yQ29weUZpbGUoY29u
c3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb24pCit7CisgICAgaWYg
KHNvdXJjZS5pc0VtcHR5KCkgfHwgZGVzdGluYXRpb24uaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBDU3RyaW5nIGZzU291cmNlID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKHNvdXJjZSk7CisgICAgaWYgKCFmc1NvdXJjZS5kYXRhKCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIENTdHJpbmcgZnNEZXN0aW5hdGlvbiA9IGZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihkZXN0aW5hdGlvbik7CisgICAgaWYgKCFmc0Rlc3RpbmF0aW9uLmRhdGEoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFsaW5rKGZzU291cmNlLmRhdGEoKSwgZnNEZXN0
aW5hdGlvbi5kYXRhKCkpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIEhhcmQgbGlu
ayBmYWlsZWQuIFBlcmZvcm0gYSBjb3B5IGluc3RlYWQuCisgICAgYXV0byBoYW5kbGUgPSBvcGVu
KGZzRGVzdGluYXRpb24uZGF0YSgpLCBPX1dST05MWSB8IE9fQ1JFQVQgfCBPX0VYQ0wsIDA2NjYp
OworICAgIGlmIChoYW5kbGUgPT0gLTEpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGJv
b2wgYXBwZW5kUmVzdWx0ID0gYXBwZW5kRmlsZUNvbnRlbnRzVG9GaWxlSGFuZGxlKHNvdXJjZSwg
aGFuZGxlKTsKKyAgICBjbG9zZShoYW5kbGUpOworCisgICAgLy8gSWYgdGhlIGNvcHkgZmFpbGVk
LCBkZWxldGUgdGhlIHVudXNhYmxlIGZpbGUuCisgICAgaWYgKCFhcHBlbmRSZXN1bHQpCisgICAg
ICAgIHVubGluayhmc0Rlc3RpbmF0aW9uLmRhdGEoKSk7CisKKyAgICByZXR1cm4gYXBwZW5kUmVz
dWx0OworfQorCitPcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29uc3QgQ1N0cmlu
ZyYgZnNGaWxlKQoreworICAgIHN0cnVjdCBzdGF0IGZpbGVTdGF0OworICAgIGlmIChzdGF0KGZz
RmlsZS5kYXRhKCksICZmaWxlU3RhdCkgPT0gLTEpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisKKyAgICByZXR1cm4gZmlsZVN0YXQuc3RfZGV2OworfQorCitTdHJpbmcgcmVhbFBhdGgo
Y29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKK3sKKyAgICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKGZpbGVQYXRoKTsKKyAgICBjaGFyIHJlc29sdmVkTmFtZVtQQVRIX01B
WF07CisgICAgY29uc3QgY2hhciogcmVzdWx0ID0gcmVhbHBhdGgoZnNSZXAuZGF0YSgpLCByZXNv
bHZlZE5hbWUpOworICAgIHJldHVybiByZXN1bHQgPyBTdHJpbmc6OmZyb21VVEY4KHJlc3VsdCkg
OiBmaWxlUGF0aDsKK30KKworfSAvLyBuYW1lc3BhY2UgRmlsZVN5c3RlbQorfSAvLyBuYW1lc3Bh
Y2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9zcGkvbWFjL01ldGFkYXRhU1BJLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9zcGkvbWFjL01ldGFkYXRhU1BJLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODE1NTQ3
YzZiODUxMGUzMDYxOGUyMjgyYWQ1Yjc4NDAxNmNhMzcyMQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL3NwaS9tYWMvTWV0YWRhdGFTUEkuaApAQCAtMCwwICsxLDM4IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorCisj
aW5jbHVkZSA8Q29yZVNlcnZpY2VzL0NvcmVTZXJ2aWNlc1ByaXYuaD4KKworI2VuZGlmCisKK1dU
Rl9FWFRFUk5fQ19CRUdJTgorCitCb29sZWFuIE1ESXRlbVNldEF0dHJpYnV0ZShNREl0ZW1SZWYs
IENGU3RyaW5nUmVmIG5hbWUsIENGVHlwZVJlZiBhdHRyKTsKKworV1RGX0VYVEVSTl9DX0VORApk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwIGIvU291cmNl
L1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMxNjQ3MmNkZDNmNWJh
MDc3Yjk3MjQ1NjAwOGE0OTQwOTQ2ZWVkZTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAKQEAgLTAsMCArMSw1ODYgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDctMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhLCBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgi
QXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KKworI2luY2x1ZGUgPGlvLmg+Cisj
aW5jbHVkZSA8c2hsb2JqLmg+CisjaW5jbHVkZSA8c2hsd2FwaS5oPgorI2luY2x1ZGUgPHN5cy9z
dGF0Lmg+CisjaW5jbHVkZSA8d2luZG93cy5oPgorI2luY2x1ZGUgPHd0Zi9DcnlwdG9ncmFwaGlj
YWxseVJhbmRvbU51bWJlci5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlTWV0YWRhdGEuaD4KKyNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvd2luL1dD
aGFyU3RyaW5nRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL3dpbi9QYXRoV2Fsa2VyLmg+CisKK25h
bWVzcGFjZSBXVEYgeworCituYW1lc3BhY2UgRmlsZVN5c3RlbSB7CisKK3N0YXRpYyBjb25zdCBV
TE9OR0xPTkcga1NlY29uZHNGcm9tRmlsZVRpbWVUb1RpbWV0ID0gMTE2NDQ0NzM2MDA7CisKK3N0
YXRpYyBib29sIGdldEZpbmREYXRhKFN0cmluZyBwYXRoLCBXSU4zMl9GSU5EX0RBVEFXJiBmaW5k
RGF0YSkKK3sKKyAgICBIQU5ETEUgaGFuZGxlID0gRmluZEZpcnN0RmlsZVcoc3RyaW5nVG9OdWxs
VGVybWluYXRlZFdDaGFyKHBhdGgpLmRhdGEoKSwgJmZpbmREYXRhKTsKKyAgICBpZiAoaGFuZGxl
ID09IElOVkFMSURfSEFORExFX1ZBTFVFKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgRmlu
ZENsb3NlKGhhbmRsZSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBib29sIGdldEZp
bGVTaXplRnJvbUZpbmREYXRhKGNvbnN0IFdJTjMyX0ZJTkRfREFUQVcmIGZpbmREYXRhLCBsb25n
IGxvbmcmIHNpemUpCit7CisgICAgVUxBUkdFX0lOVEVHRVIgZmlsZVNpemU7CisgICAgZmlsZVNp
emUuSGlnaFBhcnQgPSBmaW5kRGF0YS5uRmlsZVNpemVIaWdoOworICAgIGZpbGVTaXplLkxvd1Bh
cnQgPSBmaW5kRGF0YS5uRmlsZVNpemVMb3c7CisKKyAgICBpZiAoZmlsZVNpemUuUXVhZFBhcnQg
PiBzdGF0aWNfY2FzdDxVTE9OR0xPTkc+KHN0ZDo6bnVtZXJpY19saW1pdHM8bG9uZyBsb25nPjo6
bWF4KCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzaXplID0gZmlsZVNpemUuUXVh
ZFBhcnQ7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBib29sIGdldEZpbGVTaXplRnJv
bUJ5SGFuZGxlRmlsZUluZm9ybWF0aW9uU3RydWN0dXJlKGNvbnN0IEJZX0hBTkRMRV9GSUxFX0lO
Rk9STUFUSU9OJiBmaWxlSW5mb3JtYXRpb24sIGxvbmcgbG9uZyYgc2l6ZSkKK3sKKyAgICBVTEFS
R0VfSU5URUdFUiBmaWxlU2l6ZTsKKyAgICBmaWxlU2l6ZS5IaWdoUGFydCA9IGZpbGVJbmZvcm1h
dGlvbi5uRmlsZVNpemVIaWdoOworICAgIGZpbGVTaXplLkxvd1BhcnQgPSBmaWxlSW5mb3JtYXRp
b24ubkZpbGVTaXplTG93OworCisgICAgaWYgKGZpbGVTaXplLlF1YWRQYXJ0ID4gc3RhdGljX2Nh
c3Q8VUxPTkdMT05HPihzdGQ6Om51bWVyaWNfbGltaXRzPGxvbmcgbG9uZz46Om1heCgpKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgc2l6ZSA9IGZpbGVTaXplLlF1YWRQYXJ0OworICAg
IHJldHVybiB0cnVlOworfQorCitzdGF0aWMgdm9pZCBnZXRGaWxlQ3JlYXRpb25UaW1lRnJvbUZp
bmREYXRhKGNvbnN0IFdJTjMyX0ZJTkRfREFUQVcmIGZpbmREYXRhLCB0aW1lX3QmIHRpbWUpCit7
CisgICAgVUxBUkdFX0lOVEVHRVIgZmlsZVRpbWU7CisgICAgZmlsZVRpbWUuSGlnaFBhcnQgPSBm
aW5kRGF0YS5mdENyZWF0aW9uVGltZS5kd0hpZ2hEYXRlVGltZTsKKyAgICBmaWxlVGltZS5Mb3dQ
YXJ0ID0gZmluZERhdGEuZnRDcmVhdGlvblRpbWUuZHdMb3dEYXRlVGltZTsKKworICAgIC8vIElu
Zm9ybWF0aW9uIGFib3V0IGNvbnZlcnRpbmcgdGltZV90IHRvIEZpbGVUaW1lIGlzIGF2YWlsYWJs
ZSBhdCBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvbXM3MjQyMjglMjh2
PXZzLjg1JTI5LmFzcHgKKyAgICB0aW1lID0gZmlsZVRpbWUuUXVhZFBhcnQgLyAxMDAwMDAwMCAt
IGtTZWNvbmRzRnJvbUZpbGVUaW1lVG9UaW1ldDsKK30KKworCitzdGF0aWMgdm9pZCBnZXRGaWxl
TW9kaWZpY2F0aW9uVGltZUZyb21GaW5kRGF0YShjb25zdCBXSU4zMl9GSU5EX0RBVEFXJiBmaW5k
RGF0YSwgdGltZV90JiB0aW1lKQoreworICAgIFVMQVJHRV9JTlRFR0VSIGZpbGVUaW1lOworICAg
IGZpbGVUaW1lLkhpZ2hQYXJ0ID0gZmluZERhdGEuZnRMYXN0V3JpdGVUaW1lLmR3SGlnaERhdGVU
aW1lOworICAgIGZpbGVUaW1lLkxvd1BhcnQgPSBmaW5kRGF0YS5mdExhc3RXcml0ZVRpbWUuZHdM
b3dEYXRlVGltZTsKKworICAgIC8vIEluZm9ybWF0aW9uIGFib3V0IGNvbnZlcnRpbmcgdGltZV90
IHRvIEZpbGVUaW1lIGlzIGF2YWlsYWJsZSBhdCBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2Vu
LXVzL2xpYnJhcnkvbXM3MjQyMjglMjh2PXZzLjg1JTI5LmFzcHgKKyAgICB0aW1lID0gZmlsZVRp
bWUuUXVhZFBhcnQgLyAxMDAwMDAwMCAtIGtTZWNvbmRzRnJvbUZpbGVUaW1lVG9UaW1ldDsKK30K
KworYm9vbCBnZXRGaWxlU2l6ZShjb25zdCBTdHJpbmcmIHBhdGgsIGxvbmcgbG9uZyYgc2l6ZSkK
K3sKKyAgICBXSU4zMl9GSU5EX0RBVEFXIGZpbmREYXRhOworICAgIGlmICghZ2V0RmluZERhdGEo
cGF0aCwgZmluZERhdGEpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gZ2V0
RmlsZVNpemVGcm9tRmluZERhdGEoZmluZERhdGEsIHNpemUpOworfQorCitib29sIGdldEZpbGVT
aXplKFBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlSGFuZGxlLCBsb25nIGxvbmcmIHNpemUpCit7Cisg
ICAgQllfSEFORExFX0ZJTEVfSU5GT1JNQVRJT04gZmlsZUluZm9ybWF0aW9uOworICAgIGlmICgh
OjpHZXRGaWxlSW5mb3JtYXRpb25CeUhhbmRsZShmaWxlSGFuZGxlLCAmZmlsZUluZm9ybWF0aW9u
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGdldEZpbGVTaXplRnJvbUJ5
SGFuZGxlRmlsZUluZm9ybWF0aW9uU3RydWN0dXJlKGZpbGVJbmZvcm1hdGlvbiwgc2l6ZSk7Cit9
CisKK09wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJp
bmcmIHBhdGgpCit7CisgICAgV0lOMzJfRklORF9EQVRBVyBmaW5kRGF0YTsKKyAgICBpZiAoIWdl
dEZpbmREYXRhKHBhdGgsIGZpbmREYXRhKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KworICAgIHRpbWVfdCB0aW1lID0gMDsKKyAgICBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZUZyb21G
aW5kRGF0YShmaW5kRGF0YSwgdGltZSk7CisgICAgcmV0dXJuIFdhbGxUaW1lOjpmcm9tUmF3U2Vj
b25kcyh0aW1lKTsKK30KKworT3B0aW9uYWw8V2FsbFRpbWU+IGdldEZpbGVDcmVhdGlvblRpbWUo
Y29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIFdJTjMyX0ZJTkRfREFUQVcgZmluZERhdGE7Cisg
ICAgaWYgKCFnZXRGaW5kRGF0YShwYXRoLCBmaW5kRGF0YSkpCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisKKyAgICB0aW1lX3QgdGltZSA9IDA7CisgICAgZ2V0RmlsZUNyZWF0aW9uVGlt
ZUZyb21GaW5kRGF0YShmaW5kRGF0YSwgdGltZSk7CisgICAgcmV0dXJuIFdhbGxUaW1lOjpmcm9t
UmF3U2Vjb25kcyh0aW1lKTsKK30KKworc3RhdGljIFN0cmluZyBnZXRGaW5hbFBhdGhOYW1lKGNv
bnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBhdXRvIGhhbmRsZSA9IG9wZW5GaWxlKHBhdGgsIEZp
bGVPcGVuTW9kZTo6UmVhZCk7CisgICAgaWYgKCFpc0hhbmRsZVZhbGlkKGhhbmRsZSkpCisgICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIFZlY3RvcjxVQ2hhcj4gYnVmZmVyKE1BWF9QQVRI
KTsKKyAgICBpZiAoOjpHZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGVXKGhhbmRsZSwgYnVmZmVyLmRh
dGEoKSwgYnVmZmVyLnNpemUoKSwgVk9MVU1FX05BTUVfTlQpID49IE1BWF9QQVRIKSB7CisgICAg
ICAgIGNsb3NlRmlsZShoYW5kbGUpOworICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgfQor
ICAgIGNsb3NlRmlsZShoYW5kbGUpOworCisgICAgYnVmZmVyLnNocmluayh3Y3NsZW4oYnVmZmVy
LmRhdGEoKSkpOworICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KFdURk1vdmUoYnVmZmVyKSk7Cit9
CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc1N5bWJvbGljTGluayhXSU4zMl9GSU5EX0RBVEFXIGZp
bmREYXRhKQoreworICAgIHJldHVybiBmaW5kRGF0YS5kd0ZpbGVBdHRyaWJ1dGVzICYgRklMRV9B
VFRSSUJVVEVfUkVQQVJTRV9QT0lOVCAmJiBmaW5kRGF0YS5kd1Jlc2VydmVkMCA9PSBJT19SRVBB
UlNFX1RBR19TWU1MSU5LOworfQorCitzdGF0aWMgRmlsZU1ldGFkYXRhOjpUeXBlIHRvRmlsZU1l
dGFkYXRhVHlwZShXSU4zMl9GSU5EX0RBVEFXIGZpbmREYXRhKQoreworICAgIGlmIChmaW5kRGF0
YS5kd0ZpbGVBdHRyaWJ1dGVzICYgRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZKQorICAgICAgICBy
ZXR1cm4gRmlsZU1ldGFkYXRhOjpUeXBlOjpEaXJlY3Rvcnk7CisgICAgaWYgKGlzU3ltYm9saWNM
aW5rKGZpbmREYXRhKSkKKyAgICAgICAgcmV0dXJuIEZpbGVNZXRhZGF0YTo6VHlwZTo6U3ltYm9s
aWNMaW5rOworICAgIHJldHVybiBGaWxlTWV0YWRhdGE6OlR5cGU6OkZpbGU7Cit9CisKK3N0YXRp
YyBPcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbmREYXRhVG9GaWxlTWV0YWRhdGEoV0lOMzJfRklO
RF9EQVRBVyBmaW5kRGF0YSkKK3sKKyAgICBsb25nIGxvbmcgbGVuZ3RoOworICAgIGlmICghZ2V0
RmlsZVNpemVGcm9tRmluZERhdGEoZmluZERhdGEsIGxlbmd0aCkpCisgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisKKyAgICB0aW1lX3QgbW9kaWZpY2F0aW9uVGltZTsKKyAgICBnZXRGaWxl
TW9kaWZpY2F0aW9uVGltZUZyb21GaW5kRGF0YShmaW5kRGF0YSwgbW9kaWZpY2F0aW9uVGltZSk7
CisKKyAgICByZXR1cm4gRmlsZU1ldGFkYXRhIHsKKyAgICAgICAgV2FsbFRpbWU6OmZyb21SYXdT
ZWNvbmRzKG1vZGlmaWNhdGlvblRpbWUpLAorICAgICAgICBsZW5ndGgsCisgICAgICAgIHN0YXRp
Y19jYXN0PGJvb2w+KGZpbmREYXRhLmR3RmlsZUF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9I
SURERU4pLAorICAgICAgICB0b0ZpbGVNZXRhZGF0YVR5cGUoZmluZERhdGEpCisgICAgfTsKK30K
KworT3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBwYXRo
KQoreworICAgIFdJTjMyX0ZJTkRfREFUQVcgZmluZERhdGE7CisgICAgaWYgKCFnZXRGaW5kRGF0
YShwYXRoLCBmaW5kRGF0YSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBy
ZXR1cm4gZmluZERhdGFUb0ZpbGVNZXRhZGF0YShmaW5kRGF0YSk7Cit9CisKK09wdGlvbmFsPEZp
bGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3MoY29uc3QgU3RyaW5nJiBw
YXRoKQoreworICAgIFdJTjMyX0ZJTkRfREFUQVcgZmluZERhdGE7CisgICAgaWYgKCFnZXRGaW5k
RGF0YShwYXRoLCBmaW5kRGF0YSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAg
ICBpZiAoaXNTeW1ib2xpY0xpbmsoZmluZERhdGEpKSB7CisgICAgICAgIFN0cmluZyB0YXJnZXRQ
YXRoID0gZ2V0RmluYWxQYXRoTmFtZShwYXRoKTsKKyAgICAgICAgaWYgKHRhcmdldFBhdGguaXNO
dWxsKCkpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBpZiAoIWdl
dEZpbmREYXRhKHRhcmdldFBhdGgsIGZpbmREYXRhKSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgfQorCisgICAgcmV0dXJuIGZpbmREYXRhVG9GaWxlTWV0YWRhdGEoZmlu
ZERhdGEpOworfQorCitib29sIGNyZWF0ZVN5bWJvbGljTGluayhjb25zdCBTdHJpbmcmIHRhcmdl
dFBhdGgsIGNvbnN0IFN0cmluZyYgc3ltYm9saWNMaW5rUGF0aCkKK3sKKyAgICByZXR1cm4gITo6
Q3JlYXRlU3ltYm9saWNMaW5rVyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoc3ltYm9saWNM
aW5rUGF0aCkuZGF0YSgpLCBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIodGFyZ2V0UGF0aCku
ZGF0YSgpLCAwKTsKK30KKworYm9vbCBmaWxlRXhpc3RzKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sK
KyAgICBXSU4zMl9GSU5EX0RBVEFXIGZpbmREYXRhOworICAgIHJldHVybiBnZXRGaW5kRGF0YShw
YXRoLCBmaW5kRGF0YSk7Cit9CisKK2Jvb2wgZGVsZXRlRmlsZShjb25zdCBTdHJpbmcmIHBhdGgp
Cit7CisgICAgU3RyaW5nIGZpbGVuYW1lID0gcGF0aDsKKyAgICByZXR1cm4gISFEZWxldGVGaWxl
VyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoZmlsZW5hbWUpLmRhdGEoKSk7Cit9CisKK2Jv
b2wgZGVsZXRlRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIFN0cmlu
ZyBmaWxlbmFtZSA9IHBhdGg7CisgICAgcmV0dXJuICEhUmVtb3ZlRGlyZWN0b3J5VyhzdHJpbmdU
b051bGxUZXJtaW5hdGVkV0NoYXIoZmlsZW5hbWUpLmRhdGEoKSk7Cit9CisKK2Jvb2wgbW92ZUZp
bGUoY29uc3QgU3RyaW5nJiBvbGRQYXRoLCBjb25zdCBTdHJpbmcmIG5ld1BhdGgpCit7CisgICAg
U3RyaW5nIG9sZEZpbGVuYW1lID0gb2xkUGF0aDsKKyAgICBTdHJpbmcgbmV3RmlsZW5hbWUgPSBu
ZXdQYXRoOworICAgIHJldHVybiAhITo6TW92ZUZpbGVFeChzdHJpbmdUb051bGxUZXJtaW5hdGVk
V0NoYXIob2xkRmlsZW5hbWUpLmRhdGEoKSwgc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKG5l
d0ZpbGVuYW1lKS5kYXRhKCksIE1PVkVGSUxFX0NPUFlfQUxMT1dFRCB8IE1PVkVGSUxFX1JFUExB
Q0VfRVhJU1RJTkcpOworfQorCitTdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNvbnN0
IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb21wb25lbnQpCit7CisgICAgVmVjdG9yPFVD
aGFyPiBidWZmZXIoTUFYX1BBVEgpOworCisgICAgaWYgKHBhdGgubGVuZ3RoKCkgKyAxID4gYnVm
ZmVyLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgU3RyaW5nVmlldyhw
YXRoKS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChidWZmZXIuZGF0YSgpKTsKKyAgICBidWZm
ZXJbcGF0aC5sZW5ndGgoKV0gPSAnXDAnOworCisgICAgaWYgKCFQYXRoQXBwZW5kVyhidWZmZXIu
ZGF0YSgpLCBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoY29tcG9uZW50KS5kYXRhKCkpKQor
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBidWZmZXIuc2hyaW5rKHdjc2xlbihidWZm
ZXIuZGF0YSgpKSk7CisKKyAgICByZXR1cm4gU3RyaW5nOjphZG9wdChXVEZNb3ZlKGJ1ZmZlcikp
OworfQorCitTdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhTdHJpbmdWaWV3IHBhdGgs
IGNvbnN0IFZlY3RvcjxTdHJpbmdWaWV3PiYgY29tcG9uZW50cykKK3sKKyAgICBTdHJpbmcgcmVz
dWx0ID0gcGF0aC50b1N0cmluZygpOworICAgIGZvciAoYXV0byYgY29tcG9uZW50IDogY29tcG9u
ZW50cykKKyAgICAgICAgcmVzdWx0ID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlc3VsdCwg
Y29tcG9uZW50LnRvU3RyaW5nKCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKyNpZiAhVVNF
KENGKQorCitDU3RyaW5nIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIHBh
dGgpCit7CisgICAgYXV0byB1cGNvbnZlcnRlZENoYXJhY3RlcnMgPSBwYXRoLnVwY29udmVydGVk
Q2hhcmFjdGVycygpOworCisgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMgPSB1cGNvbnZlcnRl
ZENoYXJhY3RlcnM7CisgICAgaW50IHNpemUgPSBXaWRlQ2hhclRvTXVsdGlCeXRlKENQX0FDUCwg
MCwgY2hhcmFjdGVycywgcGF0aC5sZW5ndGgoKSwgMCwgMCwgMCwgMCkgLSAxOworCisgICAgY2hh
ciogYnVmZmVyOworICAgIENTdHJpbmcgc3RyaW5nID0gQ1N0cmluZzo6bmV3VW5pbml0aWFsaXpl
ZChzaXplLCBidWZmZXIpOworCisgICAgV2lkZUNoYXJUb011bHRpQnl0ZShDUF9BQ1AsIDAsIGNo
YXJhY3RlcnMsIHBhdGgubGVuZ3RoKCksIGJ1ZmZlciwgc2l6ZSwgMCwgMCk7CisKKyAgICByZXR1
cm4gc3RyaW5nOworfQorCisjZW5kaWYgLy8gIVVTRShDRikKKworYm9vbCBtYWtlQWxsRGlyZWN0
b3JpZXMoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIFN0cmluZyBmdWxsUGF0aCA9IHBhdGg7
CisgICAgaWYgKFNIQ3JlYXRlRGlyZWN0b3J5RXgoMCwgc3RyaW5nVG9OdWxsVGVybWluYXRlZFdD
aGFyKGZ1bGxQYXRoKS5kYXRhKCksIDApICE9IEVSUk9SX1NVQ0NFU1MpIHsKKyAgICAgICAgRFdP
UkQgZXJyb3IgPSBHZXRMYXN0RXJyb3IoKTsKKyAgICAgICAgaWYgKGVycm9yICE9IEVSUk9SX0ZJ
TEVfRVhJU1RTICYmIGVycm9yICE9IEVSUk9SX0FMUkVBRFlfRVhJU1RTKSB7CisgICAgICAgICAg
ICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgcGF0aCAlcyIsIHBhdGguYXNjaWkoKS5kYXRh
KCkpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorICAgIHJl
dHVybiB0cnVlOworfQorCitTdHJpbmcgaG9tZURpcmVjdG9yeVBhdGgoKQoreworICAgIHJldHVy
biAiIjsKK30KKworU3RyaW5nIHBhdGhHZXRGaWxlTmFtZShjb25zdCBTdHJpbmcmIHBhdGgpCit7
CisgICAgcmV0dXJuIG51bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmluZyg6OlBhdGhGaW5kRmlsZU5h
bWUoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKHBhdGgpLmRhdGEoKSkpOworfQorCitTdHJp
bmcgZGlyZWN0b3J5TmFtZShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgU3RyaW5nIG5hbWUg
PSBwYXRoLmxlZnQocGF0aC5sZW5ndGgoKSAtIHBhdGhHZXRGaWxlTmFtZShwYXRoKS5sZW5ndGgo
KSk7CisgICAgaWYgKG5hbWUuY2hhcmFjdGVyU3RhcnRpbmdBdChuYW1lLmxlbmd0aCgpIC0gMSkg
PT0gJ1xcJykgeworICAgICAgICAvLyBSZW1vdmUgYW55IHRyYWlsaW5nICJcIi4KKyAgICAgICAg
bmFtZS50cnVuY2F0ZShuYW1lLmxlbmd0aCgpIC0gMSk7CisgICAgfQorICAgIHJldHVybiBuYW1l
OworfQorCitzdGF0aWMgU3RyaW5nIGJ1bmRsZU5hbWUoKQoreworICAgIHN0YXRpYyBjb25zdCBO
ZXZlckRlc3Ryb3llZDxTdHJpbmc+IG5hbWUgPSBbXSB7CisgICAgICAgIFN0cmluZyBuYW1lIHsg
IldlYktpdCJfcyB9OworCisjaWYgVVNFKENGKQorICAgICAgICBpZiAoQ0ZCdW5kbGVSZWYgYnVu
ZGxlID0gQ0ZCdW5kbGVHZXRNYWluQnVuZGxlKCkpIHsKKyAgICAgICAgICAgIGlmIChDRlR5cGVS
ZWYgYnVuZGxlRXhlY3V0YWJsZSA9IENGQnVuZGxlR2V0VmFsdWVGb3JJbmZvRGljdGlvbmFyeUtl
eShidW5kbGUsIGtDRkJ1bmRsZUV4ZWN1dGFibGVLZXkpKSB7CisgICAgICAgICAgICAgICAgaWYg
KENGR2V0VHlwZUlEKGJ1bmRsZUV4ZWN1dGFibGUpID09IENGU3RyaW5nR2V0VHlwZUlEKCkpCisg
ICAgICAgICAgICAgICAgICAgIG5hbWUgPSByZWludGVycHJldF9jYXN0PENGU3RyaW5nUmVmPihi
dW5kbGVFeGVjdXRhYmxlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorI2VuZGlmCisKKyAg
ICAgICAgcmV0dXJuIG5hbWU7CisgICAgfSgpOworCisgICAgcmV0dXJuIG5hbWU7Cit9CisKK3N0
YXRpYyBTdHJpbmcgc3RvcmFnZURpcmVjdG9yeShEV09SRCBwYXRoSWRlbnRpZmllcikKK3sKKyAg
ICBWZWN0b3I8VUNoYXI+IGJ1ZmZlcihNQVhfUEFUSCk7CisgICAgaWYgKEZBSUxFRChTSEdldEZv
bGRlclBhdGhXKDAsIHBhdGhJZGVudGlmaWVyIHwgQ1NJRExfRkxBR19DUkVBVEUsIDAsIDAsIGJ1
ZmZlci5kYXRhKCkpKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgIGJ1ZmZlci5yZXNp
emUod2NzbGVuKGJ1ZmZlci5kYXRhKCkpKTsKKyAgICBTdHJpbmcgZGlyZWN0b3J5ID0gU3RyaW5n
OjphZG9wdChXVEZNb3ZlKGJ1ZmZlcikpOworCisgICAgZGlyZWN0b3J5ID0gcGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KGRpcmVjdG9yeSwgIkFwcGxlIENvbXB1dGVyXFwiICsgYnVuZGxlTmFtZSgp
KTsKKyAgICBpZiAoIW1ha2VBbGxEaXJlY3RvcmllcyhkaXJlY3RvcnkpKQorICAgICAgICByZXR1
cm4gU3RyaW5nKCk7CisKKyAgICByZXR1cm4gZGlyZWN0b3J5OworfQorCitzdGF0aWMgU3RyaW5n
IGNhY2hlZFN0b3JhZ2VEaXJlY3RvcnkoRFdPUkQgcGF0aElkZW50aWZpZXIpCit7CisgICAgc3Rh
dGljIEhhc2hNYXA8RFdPUkQsIFN0cmluZz4gZGlyZWN0b3JpZXM7CisKKyAgICBIYXNoTWFwPERX
T1JELCBTdHJpbmc+OjppdGVyYXRvciBpdCA9IGRpcmVjdG9yaWVzLmZpbmQocGF0aElkZW50aWZp
ZXIpOworICAgIGlmIChpdCAhPSBkaXJlY3Rvcmllcy5lbmQoKSkKKyAgICAgICAgcmV0dXJuIGl0
LT52YWx1ZTsKKworICAgIFN0cmluZyBkaXJlY3RvcnkgPSBzdG9yYWdlRGlyZWN0b3J5KHBhdGhJ
ZGVudGlmaWVyKTsKKyAgICBkaXJlY3Rvcmllcy5hZGQocGF0aElkZW50aWZpZXIsIGRpcmVjdG9y
eSk7CisKKyAgICByZXR1cm4gZGlyZWN0b3J5OworfQorCitzdGF0aWMgU3RyaW5nIGdlbmVyYXRl
VGVtcG9yYXJ5UGF0aChjb25zdCBGdW5jdGlvbjxib29sKGNvbnN0IFN0cmluZyYpPiYgYWN0aW9u
KQoreworICAgIHdjaGFyX3QgdGVtcFBhdGhbTUFYX1BBVEhdOworICAgIGludCB0ZW1wUGF0aExl
bmd0aCA9IDo6R2V0VGVtcFBhdGhXKFdURl9BUlJBWV9MRU5HVEgodGVtcFBhdGgpLCB0ZW1wUGF0
aCk7CisgICAgaWYgKHRlbXBQYXRoTGVuZ3RoIDw9IDAgfHwgdGVtcFBhdGhMZW5ndGggPiBXVEZf
QVJSQVlfTEVOR1RIKHRlbXBQYXRoKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAg
U3RyaW5nIHByb3Bvc2VkUGF0aDsKKyAgICBkbyB7CisgICAgICAgIHdjaGFyX3QgdGVtcEZpbGVb
XSA9IEwiWFhYWFhYWFgudG1wIjsgLy8gVXNlIDguMyBzdHlsZSBuYW1lIChtb3JlIGNoYXJhY3Rl
cnMgYXJlbid0IGhlbHBmdWwgZHVlIHRvIDguMyBzaG9ydCBmaWxlIG5hbWVzKQorICAgICAgICBj
b25zdCBpbnQgcmFuZG9tUGFydExlbmd0aCA9IDg7CisgICAgICAgIGNyeXB0b2dyYXBoaWNhbGx5
UmFuZG9tVmFsdWVzKHRlbXBGaWxlLCByYW5kb21QYXJ0TGVuZ3RoICogc2l6ZW9mKHdjaGFyX3Qp
KTsKKworICAgICAgICAvLyBMaW1pdCB0byB2YWxpZCBmaWxlc3lzdGVtIGNoYXJhY3RlcnMsIGFs
c28gZXhjbHVkaW5nIG90aGVycyB0aGF0IGNvdWxkIGJlIHByb2JsZW1hdGljLCBsaWtlIHB1bmN0
dWF0aW9uLgorICAgICAgICAvLyBkb24ndCBpbmNsdWRlIGJvdGggdXBwZXIgYW5kIGxvd2VyY2Fz
ZSBzaW5jZSBXaW5kb3dzIGZpbGUgc3lzdGVtcyBhcmUgdHlwaWNhbGx5IG5vdCBjYXNlIHNlbnNp
dGl2ZS4KKyAgICAgICAgY29uc3QgY2hhciB2YWxpZENoYXJzW10gPSAiMDEyMzQ1Njc4OWFiY2Rl
ZmdoaWprbG1ub3BxcnN0dXZ3eHl6IjsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCByYW5k
b21QYXJ0TGVuZ3RoOyArK2kpCisgICAgICAgICAgICB0ZW1wRmlsZVtpXSA9IHZhbGlkQ2hhcnNb
dGVtcEZpbGVbaV0gJSAoc2l6ZW9mKHZhbGlkQ2hhcnMpIC0gMSldOworCisgICAgICAgIEFTU0VS
VCh3Y3NsZW4odGVtcEZpbGUpID09IFdURl9BUlJBWV9MRU5HVEgodGVtcEZpbGUpIC0gMSk7CisK
KyAgICAgICAgcHJvcG9zZWRQYXRoID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG51bGxUZXJt
aW5hdGVkV0NoYXJUb1N0cmluZyh0ZW1wUGF0aCksIG51bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmlu
Zyh0ZW1wRmlsZSkpOworICAgICAgICBpZiAocHJvcG9zZWRQYXRoLmlzRW1wdHkoKSkKKyAgICAg
ICAgICAgIGJyZWFrOworICAgIH0gd2hpbGUgKCFhY3Rpb24ocHJvcG9zZWRQYXRoKSk7CisKKyAg
ICByZXR1cm4gcHJvcG9zZWRQYXRoOworfQorCitTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29u
c3QgU3RyaW5nJiwgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpCit7CisgICAgaGFuZGxlID0g
SU5WQUxJRF9IQU5ETEVfVkFMVUU7CisKKyAgICBTdHJpbmcgcHJvcG9zZWRQYXRoID0gZ2VuZXJh
dGVUZW1wb3JhcnlQYXRoKFsmaGFuZGxlXShjb25zdCBTdHJpbmcmIHByb3Bvc2VkUGF0aCkgewor
ICAgICAgICAvLyB1c2UgQ1JFQVRFX05FVyB0byBhdm9pZCBvdmVyd3JpdGluZyBhbiBleGlzdGlu
ZyBmaWxlIHdpdGggdGhlIHNhbWUgbmFtZQorICAgICAgICBoYW5kbGUgPSA6OkNyZWF0ZUZpbGVX
KHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihwcm9wb3NlZFBhdGgpLmRhdGEoKSwgR0VORVJJ
Q19SRUFEIHwgR0VORVJJQ19XUklURSwgMCwgMCwgQ1JFQVRFX05FVywgRklMRV9BVFRSSUJVVEVf
Tk9STUFMLCAwKTsKKworICAgICAgICByZXR1cm4gaXNIYW5kbGVWYWxpZChoYW5kbGUpIHx8IEdl
dExhc3RFcnJvcigpID09IEVSUk9SX0FMUkVBRFlfRVhJU1RTOworICAgIH0pOworCisgICAgaWYg
KCFpc0hhbmRsZVZhbGlkKGhhbmRsZSkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAg
IHJldHVybiBwcm9wb3NlZFBhdGg7Cit9CisKK1BsYXRmb3JtRmlsZUhhbmRsZSBvcGVuRmlsZShj
b25zdCBTdHJpbmcmIHBhdGgsIEZpbGVPcGVuTW9kZSBtb2RlKQoreworICAgIERXT1JEIGRlc2ly
ZWRBY2Nlc3MgPSAwOworICAgIERXT1JEIGNyZWF0aW9uRGlzcG9zaXRpb24gPSAwOworICAgIERX
T1JEIHNoYXJlTW9kZSA9IDA7CisgICAgc3dpdGNoIChtb2RlKSB7CisgICAgY2FzZSBGaWxlT3Bl
bk1vZGU6OlJlYWQ6CisgICAgICAgIGRlc2lyZWRBY2Nlc3MgPSBHRU5FUklDX1JFQUQ7CisgICAg
ICAgIGNyZWF0aW9uRGlzcG9zaXRpb24gPSBPUEVOX0VYSVNUSU5HOworICAgICAgICBzaGFyZU1v
ZGUgPSBGSUxFX1NIQVJFX1JFQUQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRmlsZU9wZW5N
b2RlOjpXcml0ZToKKyAgICAgICAgZGVzaXJlZEFjY2VzcyA9IEdFTkVSSUNfV1JJVEU7CisgICAg
ICAgIGNyZWF0aW9uRGlzcG9zaXRpb24gPSBDUkVBVEVfQUxXQVlTOworICAgICAgICBicmVhazsK
KyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisKKyAg
ICBTdHJpbmcgZGVzdGluYXRpb24gPSBwYXRoOworICAgIHJldHVybiBDcmVhdGVGaWxlKHN0cmlu
Z1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihkZXN0aW5hdGlvbikuZGF0YSgpLCBkZXNpcmVkQWNjZXNz
LCBzaGFyZU1vZGUsIDAsIGNyZWF0aW9uRGlzcG9zaXRpb24sIEZJTEVfQVRUUklCVVRFX05PUk1B
TCwgMCk7Cit9CisKK3ZvaWQgY2xvc2VGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKQor
eworICAgIGlmIChpc0hhbmRsZVZhbGlkKGhhbmRsZSkpIHsKKyAgICAgICAgOjpDbG9zZUhhbmRs
ZShoYW5kbGUpOworICAgICAgICBoYW5kbGUgPSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOwor
ICAgIH0KK30KKworbG9uZyBsb25nIHNlZWtGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUs
IGxvbmcgbG9uZyBvZmZzZXQsIEZpbGVTZWVrT3JpZ2luIG9yaWdpbikKK3sKKyAgICBEV09SRCBt
b3ZlTWV0aG9kID0gRklMRV9CRUdJTjsKKworICAgIGlmIChvcmlnaW4gPT0gRmlsZVNlZWtPcmln
aW46OkN1cnJlbnQpCisgICAgICAgIG1vdmVNZXRob2QgPSBGSUxFX0NVUlJFTlQ7CisgICAgZWxz
ZSBpZiAob3JpZ2luID09IEZpbGVTZWVrT3JpZ2luOjpFbmQpCisgICAgICAgIG1vdmVNZXRob2Qg
PSBGSUxFX0VORDsKKworICAgIExBUkdFX0lOVEVHRVIgbGFyZ2VPZmZzZXQ7CisgICAgbGFyZ2VP
ZmZzZXQuUXVhZFBhcnQgPSBvZmZzZXQ7CisKKyAgICBsYXJnZU9mZnNldC5Mb3dQYXJ0ID0gU2V0
RmlsZVBvaW50ZXIoaGFuZGxlLCBsYXJnZU9mZnNldC5Mb3dQYXJ0LCAmbGFyZ2VPZmZzZXQuSGln
aFBhcnQsIG1vdmVNZXRob2QpOworCisgICAgaWYgKGxhcmdlT2Zmc2V0Lkxvd1BhcnQgPT0gSU5W
QUxJRF9TRVRfRklMRV9QT0lOVEVSICYmIEdldExhc3RFcnJvcigpICE9IE5PX0VSUk9SKQorICAg
ICAgICByZXR1cm4gLTE7CisKKyAgICByZXR1cm4gbGFyZ2VPZmZzZXQuUXVhZFBhcnQ7Cit9CisK
K2ludCB3cml0ZVRvRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBjb25zdCBjaGFyKiBk
YXRhLCBpbnQgbGVuZ3RoKQoreworICAgIGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUpKQorICAg
ICAgICByZXR1cm4gLTE7CisKKyAgICBEV09SRCBieXRlc1dyaXR0ZW47CisgICAgYm9vbCBzdWNj
ZXNzID0gV3JpdGVGaWxlKGhhbmRsZSwgZGF0YSwgbGVuZ3RoLCAmYnl0ZXNXcml0dGVuLCAwKTsK
KworICAgIGlmICghc3VjY2VzcykKKyAgICAgICAgcmV0dXJuIC0xOworICAgIHJldHVybiBzdGF0
aWNfY2FzdDxpbnQ+KGJ5dGVzV3JpdHRlbik7Cit9CisKK2ludCByZWFkRnJvbUZpbGUoUGxhdGZv
cm1GaWxlSGFuZGxlIGhhbmRsZSwgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKK3sKKyAgICBpZiAo
IWlzSGFuZGxlVmFsaWQoaGFuZGxlKSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgRFdPUkQg
Ynl0ZXNSZWFkOworICAgIGJvb2wgc3VjY2VzcyA9IDo6UmVhZEZpbGUoaGFuZGxlLCBkYXRhLCBs
ZW5ndGgsICZieXRlc1JlYWQsIDApOworCisgICAgaWYgKCFzdWNjZXNzKQorICAgICAgICByZXR1
cm4gLTE7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oYnl0ZXNSZWFkKTsKK30KKworYm9v
bCBoYXJkTGlua09yQ29weUZpbGUoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYg
ZGVzdGluYXRpb24pCit7CisgICAgcmV0dXJuICEhOjpDb3B5RmlsZShzdHJpbmdUb051bGxUZXJt
aW5hdGVkV0NoYXIoc291cmNlKS5kYXRhKCksIHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihk
ZXN0aW5hdGlvbikuZGF0YSgpLCBUUlVFKTsKK30KKworU3RyaW5nIGxvY2FsVXNlclNwZWNpZmlj
U3RvcmFnZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIGNhY2hlZFN0b3JhZ2VEaXJlY3Rvcnko
Q1NJRExfTE9DQUxfQVBQREFUQSk7Cit9CisKK1N0cmluZyByb2FtaW5nVXNlclNwZWNpZmljU3Rv
cmFnZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIGNhY2hlZFN0b3JhZ2VEaXJlY3RvcnkoQ1NJ
RExfQVBQREFUQSk7Cit9CisKK1ZlY3RvcjxTdHJpbmc+IGxpc3REaXJlY3RvcnkoY29uc3QgU3Ry
aW5nJiBkaXJlY3RvcnksIGNvbnN0IFN0cmluZyYgZmlsdGVyKQoreworICAgIFZlY3RvcjxTdHJp
bmc+IGVudHJpZXM7CisKKyAgICBQYXRoV2Fsa2VyIHdhbGtlcihkaXJlY3RvcnksIGZpbHRlcik7
CisgICAgaWYgKCF3YWxrZXIuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gZW50cmllczsKKwor
ICAgIGRvIHsKKyAgICAgICAgaWYgKHdhbGtlci5kYXRhKCkuZHdGaWxlQXR0cmlidXRlcyAmIEZJ
TEVfQVRUUklCVVRFX0RJUkVDVE9SWQorICAgICAgICAgICAgJiYgKCF3Y3NjbXAod2Fsa2VyLmRh
dGEoKS5jRmlsZU5hbWUsIEwiLiIpIHx8ICF3Y3NjbXAod2Fsa2VyLmRhdGEoKS5jRmlsZU5hbWUs
IEwiLi4iKSkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBlbnRyaWVzLmFwcGVu
ZChkaXJlY3RvcnkgKyAiXFwiICsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVQ2hhcio+KHdhbGtl
ci5kYXRhKCkuY0ZpbGVOYW1lKSk7CisgICAgfSB3aGlsZSAod2Fsa2VyLnN0ZXAoKSk7CisKKyAg
ICByZXR1cm4gZW50cmllczsKK30KKworYm9vbCBnZXRWb2x1bWVGcmVlU3BhY2UoY29uc3QgU3Ry
aW5nJiwgdWludDY0X3QmKQoreworICAgIHJldHVybiBmYWxzZTsKK30KKworT3B0aW9uYWw8aW50
MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0IENTdHJpbmcmIGZzRmlsZSkKK3sKKyAgICBhdXRv
IGhhbmRsZSA9IG9wZW5GaWxlKGZzRmlsZS5kYXRhKCksIEZpbGVPcGVuTW9kZTo6UmVhZCk7Cisg
ICAgaWYgKCFpc0hhbmRsZVZhbGlkKGhhbmRsZSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisKKyAgICBCWV9IQU5ETEVfRklMRV9JTkZPUk1BVElPTiBmaWxlSW5mb3JtYXRpb24gPSB7
IH07CisgICAgaWYgKCE6OkdldEZpbGVJbmZvcm1hdGlvbkJ5SGFuZGxlKGhhbmRsZSwgJmZpbGVJ
bmZvcm1hdGlvbikpIHsKKyAgICAgICAgY2xvc2VGaWxlKGhhbmRsZSk7CisgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgfQorCisgICAgY2xvc2VGaWxlKGhhbmRsZSk7CisKKyAgICBy
ZXR1cm4gZmlsZUluZm9ybWF0aW9uLmR3Vm9sdW1lU2VyaWFsTnVtYmVyOworfQorCitTdHJpbmcg
cmVhbFBhdGgoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKK3sKKyAgICByZXR1cm4gZ2V0RmluYWxQ
YXRoTmFtZShmaWxlUGF0aCk7Cit9CisKK1N0cmluZyBjcmVhdGVUZW1wb3JhcnlEaXJlY3Rvcnko
KQoreworICAgIHJldHVybiBnZW5lcmF0ZVRlbXBvcmFyeVBhdGgoW10oY29uc3QgU3RyaW5nJiBw
cm9wb3NlZFBhdGgpIHsKKyAgICAgICAgcmV0dXJuIG1ha2VBbGxEaXJlY3Rvcmllcyhwcm9wb3Nl
ZFBhdGgpOworICAgIH0pOworfQorCitib29sIGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KGNvbnN0
IFN0cmluZyYgZGlyZWN0b3J5UGF0aCkKK3sKKyAgICBTSEZJTEVPUFNUUlVDVCBkZWxldGVPcGVy
YXRpb24gPSB7CisgICAgICAgIG51bGxwdHIsCisgICAgICAgIEZPX0RFTEVURSwKKyAgICAgICAg
c3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGRpcmVjdG9yeVBhdGgpLmRhdGEoKSwKKyAgICAg
ICAgTCIiLAorICAgICAgICBGT0ZfTk9DT05GSVJNQVRJT04gfCBGT0ZfTk9FUlJPUlVJIHwgRk9G
X1NJTEVOVCwKKyAgICAgICAgZmFsc2UsCisgICAgICAgIDAsCisgICAgICAgIEwiIgorICAgIH07
CisgICAgcmV0dXJuICFTSEZpbGVPcGVyYXRpb24oJmRlbGV0ZU9wZXJhdGlvbik7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIEZpbGVTeXN0ZW0KK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvd2luL1BhdGhXYWxrZXIuY3BwIGIvU291cmNlL1dURi93dGYvd2luL1Bh
dGhXYWxrZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM2ZDNmOTcwNjA0OWNiMTNjOWVmNjM1NWViYjYzYTUw
Nzk4NTAyMjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vUGF0aFdhbGtl
ci5jcHAKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlIDx3dGYvd2luL1BhdGhXYWxrZXIuaD4KKworI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5oPgor
CituYW1lc3BhY2UgV1RGIHsKKworUGF0aFdhbGtlcjo6UGF0aFdhbGtlcihjb25zdCBTdHJpbmcm
IGRpcmVjdG9yeSwgY29uc3QgU3RyaW5nJiBwYXR0ZXJuKQoreworICAgIFN0cmluZyBwYXRoID0g
ZGlyZWN0b3J5ICsgIlxcIiArIHBhdHRlcm47CisgICAgbV9oYW5kbGUgPSA6OkZpbmRGaXJzdEZp
bGVXKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihwYXRoKS5kYXRhKCksICZtX2RhdGEpOwor
fQorCitQYXRoV2Fsa2VyOjp+UGF0aFdhbGtlcigpCit7CisgICAgaWYgKCFpc1ZhbGlkKCkpCisg
ICAgICAgIHJldHVybjsKKyAgICA6OkZpbmRDbG9zZShtX2hhbmRsZSk7Cit9CisKK2Jvb2wgUGF0
aFdhbGtlcjo6c3RlcCgpCit7CisgICAgcmV0dXJuIDo6RmluZE5leHRGaWxlVyhtX2hhbmRsZSwg
Jm1fZGF0YSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvd2luL1BhdGhXYWxrZXIuaCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9QYXRoV2Fsa2VyLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOTUzYWUyZTZhZTg1NjFhZjM0NTRlMjE4Mzg4ZGY4OTAwNWVhMzNiYwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9QYXRoV2Fsa2VyLmgKQEAgLTAsMCAr
MSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgPFdpbmRvd3MuaD4KKyNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorCituYW1lc3Bh
Y2UgV1RGIHsKKworY2xhc3MgUGF0aFdhbGtlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
UGF0aFdhbGtlcik7CitwdWJsaWM6CisgICAgUGF0aFdhbGtlcihjb25zdCBXVEY6OlN0cmluZyYg
ZGlyZWN0b3J5LCBjb25zdCBXVEY6OlN0cmluZyYgcGF0dGVybik7CisgICAgflBhdGhXYWxrZXIo
KTsKKworICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1faGFuZGxlICE9IElOVkFM
SURfSEFORExFX1ZBTFVFOyB9CisgICAgY29uc3QgV0lOMzJfRklORF9EQVRBVyYgZGF0YSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGF0YTsgfQorCisgICAgYm9vbCBzdGVwKCk7CisKK3ByaXZhdGU6Cisg
ICAgSEFORExFIG1faGFuZGxlOworICAgIFdJTjMyX0ZJTkRfREFUQVcgbV9kYXRhOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL0NETS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL0NETS5jcHAKaW5kZXggOTM1NjY1MDFhOTllMTk4ODhiMWJkMzk1NDUyODgxYzQ3NDU1N2Rm
Ni4uODE4ZjIyNGJkNTY0ODNjOGFkNjYwMmIzMDJkNmFlMGI3MmRlZDFhNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcApAQCAtMzEsNyArMzEsNiBA
QAogI2luY2x1ZGUgIkNETUZhY3RvcnkuaCIKICNpbmNsdWRlICJDRE1Qcml2YXRlLmgiCiAjaW5j
bHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiSW5p
dERhdGFSZWdpc3RyeS5oIgogI2luY2x1ZGUgIk1lZGlhS2V5c1JlcXVpcmVtZW50LmgiCiAjaW5j
bHVkZSAiTWVkaWFQbGF5ZXIuaCIKQEAgLTQyLDYgKzQxLDcgQEAKICNpbmNsdWRlICJTZWN1cml0
eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luRGF0YS5oIgogI2luY2x1ZGUgIlNl
dHRpbmdzLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNz
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dl
YktpdE1lZGlhS2V5U2Vzc2lvbi5jcHAKaW5kZXggZTY2NmNlOTc5MzY3NDVlZGEwMTA2NjA3OTc4
ZjZlOTgwOWZmMGIzOS4uNjVlZGRhMTZmNzk1MGQyNDliY2Y3MzE2Mjg2MTUwODU0ZWYyODFkNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kv
V2ViS2l0TWVkaWFLZXlTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNlc3Npb24uY3BwCkBAIC0zMCwxMyAr
MzAsMTMgQEAKIAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5o
IgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAi
U2VjdXJpdHlPcmlnaW5EYXRhLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJX
ZWJLaXRNZWRpYUtleUVycm9yLmgiCiAjaW5jbHVkZSAiV2ViS2l0TWVkaWFLZXlNZXNzYWdlRXZl
bnQuaCIKICNpbmNsdWRlICJXZWJLaXRNZWRpYUtleXMuaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5
c3RlbS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcAppbmRleCA2ZGQ0MTcxMzA4YWQ0
NjdmMmE0YzI3YzljZTk3NzI5YjNmYWQ4Y2Y5Li4zNjg3OTRlZjVjMWEwZmU3OThiMmExYmE1MDg4
NmMwYjRmZWJjYjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNh
cGkvRE9NRmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVz
YXBpL0RPTUZpbGVTeXN0ZW0uY3BwCkBAIC0yNywxMiArMjcsMTIgQEAKICNpbmNsdWRlICJET01G
aWxlU3lzdGVtLmgiCiAKICNpbmNsdWRlICJGaWxlLmgiCi0jaW5jbHVkZSAiRmlsZU1ldGFkYXRh
LmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW1EaXJlY3Rv
cnlFbnRyeS5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW1GaWxlRW50cnkuaCIKICNpbmNsdWRlICJT
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkQ29waWVy
Lmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVNZXRhZGF0YS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lz
dGVtLmg+CiAjaW5jbHVkZSA8d3RmL1VVSUQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdC
dWlsZGVyLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2Fw
aS9GaWxlU3lzdGVtRW50cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBp
L0ZpbGVTeXN0ZW1FbnRyeS5jcHAKaW5kZXggZGNjYjVhMTE4NjNkOWJiMTBmMjg3ZDU3ZmRjMTM5
YTBiOWIxYjExMS4uNDI0Y2NhMjZjZDRjN2I4NjEwM2ZkNTIwZjFmZjcwZjBkYTAzNTFlYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1FbnRy
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1F
bnRyeS5jcHAKQEAgLTI5LDEwICsyOSwxMCBAQAogI2luY2x1ZGUgIkRPTUV4Y2VwdGlvbi5oIgog
I2luY2x1ZGUgIkRPTUZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJFcnJvckNhbGxiYWNrLmgiCi0j
aW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRy
eS5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW1FbnRyeUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5jcHAKaW5kZXggYzdmZGZkMGRkNjU0
NWY4YzZmZTUzNDJmYjM2NDZmZTlhODQ2OTRiOS4uYjQyOWIzZjI2YjkzNDZmYmIxZGFlN2VjNjUw
ZTQ2ZTI1NmRmYzhjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuY3BwCkBAIC0yOCw4ICsyOCw4IEBACiAK
ICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIK
ICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FM
aXRlSURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDIxNzhjYzQyYTliNTExNDNj
ZTVkODVmNGQxMWY3YWIyNjA5MjRlYzcuLjI4NWQ1MDJkYWU4MWE5YTc2OGFhMzRhMWQyNTZkZjUw
NDdkNjFiZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCkBAIC0yOCw3ICsy
OCw2IEBACiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAotI2luY2x1ZGUgIkZpbGVT
eXN0ZW0uaCIKICNpbmNsdWRlICJJREJCaW5kaW5nVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiSURC
R2V0QWxsUmVjb3Jkc0RhdGEuaCIKICNpbmNsdWRlICJJREJHZXRBbGxSZXN1bHQuaCIKQEAgLTU0
LDYgKzUzLDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0dsb2JhbE9iamVjdC5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZ0lubGluZXMuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9TdHJ1Y3R1cmVJbmxpbmVzLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0u
aD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NR
TGl0ZUlEQlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJUcmFuc2FjdGlvbi5jcHAKaW5kZXggNzgxYjc5ZjYzYTA2MWQ1OGQx
YzkyYTQxM2MyMWFmZGU2NTY0OTM2ZS4uYmVlYTZiMTY3MDYyNGU1Yzk4MGYzMTY2MzRjMDM2NWRm
ZGViYzZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1NRTGl0ZUlEQlRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCVHJhbnNhY3Rpb24uY3BwCkBAIC0yNywxMyArMjcs
MTMgQEAKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCi0jaW5jbHVkZSAiRmlsZVN5
c3RlbS5oIgogI2luY2x1ZGUgIklEQkN1cnNvckluZm8uaCIKICNpbmNsdWRlICJJbmRleGVkREIu
aCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiU1FMaXRlSURCQmFja2luZ1N0b3Jl
LmgiCiAjaW5jbHVkZSAiU1FMaXRlSURCQ3Vyc29yLmgiCiAjaW5jbHVkZSAiU1FMaXRlVHJhbnNh
Y3Rpb24uaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBuYW1lc3BhY2UgSURCU2VydmVyIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAKaW5k
ZXggNjFhZWI4ZjdkNzAxNTFiOTQyMjg1YWNkY2NmODFiZmIxZWE0MjYyNi4uZGQ5ZjVhZDI5MzE3
YzVjZGM3NTg4MzJhYzZhMzcwYmRmOTVkZDg5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5j
cHAKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCi0j
aW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIklEQkNvbm5lY3Rpb25Ub0NsaWVudC5o
IgogI2luY2x1ZGUgIklEQkNvbm5lY3Rpb25Ub1NlcnZlci5oIgogI2luY2x1ZGUgIklEQkN1cnNv
ckluZm8uaCIKQEAgLTQwLDYgKzM5LDcgQEAKICNpbmNsdWRlICJJREJSZXN1bHREYXRhLmgiCiAj
aW5jbHVkZSAiSURCVmFsdWUuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSA8d3Rm
L0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlVHJhY2tlci5jcHAKaW5kZXggZDk2NTQxZWQ0OWY2OTM4MjRlZDFkZmM1MjUwODhkYWMz
MmJjNTljNS4uNDA4ZjYyMjEyYWUyYjE3YjM4YWMxOTA5ODk1MWEwZjA5MmQ0YjA0OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFj
a2VyLmNwcApAQCAtMzQsNyArMzQsNiBAQAogI2luY2x1ZGUgIkRhdGFiYXNlTWFuYWdlci5oIgog
I2luY2x1ZGUgIkRhdGFiYXNlTWFuYWdlckNsaWVudC5oIgogI2luY2x1ZGUgIkRhdGFiYXNlVGhy
ZWFkLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNp
bmNsdWRlICJPcmlnaW5Mb2NrLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKQEAgLTQz
LDYgKzQyLDcgQEAKICNpbmNsdWRlICJTUUxpdGVGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiU1FM
aXRlU3RhdGVtZW50LmgiCiAjaW5jbHVkZSAiU1FMaXRlVHJhbnNhY3Rpb24uaCIKKyNpbmNsdWRl
IDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVk
ZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5Mb2Nr
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luTG9jay5jcHAK
aW5kZXggNDIzYjJlNjZkZGZhMTJjYzM0MGY2MGZjZTU5ZDM1M2RmOTk4NjdmNC4uYTIxYmNkYjc4
Mzg2YzgxMGVjNTk5NDFjMjc1ZjRlZmJhZmYyM2ZiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5Mb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL09yaWdpbkxvY2suY3BwCkBAIC0yNiw4ICsyNiw2IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiT3JpZ2luTG9jay5oIgogCi0jaW5jbHVkZSAi
RmlsZVN5c3RlbS5oIgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFN0cmluZyBPcmlnaW5Mb2Nr
Ojpsb2NrRmlsZU5hbWVGb3JQYXRoKFN0cmluZyBvcmlnaW5QYXRoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5Mb2NrLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL09yaWdpbkxvY2suaAppbmRleCBhMTZlODRmMTQ4OWRh
ZjJlZThmNTA0NjE5ZDEzOTkzYjhkMzc1ZTEwLi5lY2MyOWU4OTAyNWJkZjYyOTM5MmIxMDU5ZWY4
ODcwZTZmOGY5MmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL09yaWdpbkxvY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L09yaWdpbkxvY2suaApAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1
ZGUgIkZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUg
PHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL2NvY29hL0RhdGFiYXNlTWFuYWdlckNvY29hLm1tIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9jb2NvYS9EYXRhYmFzZU1hbmFnZXJDb2NvYS5t
bQppbmRleCA3Y2ZlOWZiMDYzMjY5MTgxZDQ0ZjEzYzM4MzY4MjUzM2Q0ZTRkZmM5Li44ZDMyNTA3
M2IwNGFjYTFkMzI4NDk2ZTE4MjgzMzhkZmViY2FiZmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL2NvY29hL0RhdGFiYXNlTWFuYWdlckNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvY29jb2EvRGF0YWJhc2VNYW5h
Z2VyQ29jb2EubW0KQEAgLTI5LDcgKzI5LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9y
dCAiRGF0YWJhc2VNYW5hZ2VyLmgiCiAKLSNpbXBvcnQgIkZpbGVTeXN0ZW0uaCIKKyNpbXBvcnQg
PHd0Zi9GaWxlU3lzdGVtLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDRmYmRkZTM5
YTRhYzc2MjI4MGRjMjk3N2FjMWZhZDY3OTQwZGZjNjIuLmQxNjRhNGM3MmFkYjhkNWRjMGQ2MDRk
ZThiNmQxZTU1NWM3NTIxNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEzMyw3ICsxMzMsNiBAQAogCQlBMTE3NUI1NzFGNkI0
NzA1MDBDNEI5RjAgLyogRGVmYXVsdFNlYXJjaFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTE3NUI1NTFGNkI0NzA1MDBDNEI5RjAgLyog
RGVmYXVsdFNlYXJjaFByb3ZpZGVyLmggKi87IH07CiAJCUExMTc1QjU4MUY2QjQ3MDUwMEM0QjlG
MCAvKiBEZWZhdWx0U2VhcmNoUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTExNzVCNTYxRjZCNDcwNTAwQzRCOUYwIC8qIERlZmF1bHRT
ZWFyY2hQcm92aWRlci5jcHAgKi87IH07CiAJCUExMTc1QjVBMUY2QjRBODQwMEM0QjlGMCAvKiBO
U1Njcm9sbFZpZXdTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEExMTc1QjU5MUY2QjRBODQwMEM0QjlGMCAvKiBOU1Njcm9sbFZpZXdTUEkuaCAqLzsg
fTsKLQkJQTFGNTVEQ0YxRjU1MjhFQzAwRURCNzVGIC8qIE1ldGFkYXRhU1BJLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUY1NURDRTFGNTUyOEVDMDBF
REI3NUYgLyogTWV0YWRhdGFTUEkuaCAqLzsgfTsKIAkJQTFGNjNDOUYyMUE0REJGNzAwNkZCNDNC
IC8qIFBhc3NLaXRTb2Z0TGluay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTFGNjNDOUQyMUE0REJGNzAwNkZCNDNCIC8qIFBhc3NLaXRTb2Z0TGluay5o
ICovOyB9OwogCQlBMUY2M0NBMDIxQTREQkY3MDA2RkI0M0IgLyogUGFzc0tpdFNvZnRMaW5rLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFGNjNDOUUy
MUE0REJGNzAwNkZCNDNCIC8qIFBhc3NLaXRTb2Z0TGluay5tbSAqLzsgfTsKIAkJQTMwRDQxMjEx
RjBERDBFQTAwQjcxOTU0IC8qIEtpbGxSaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBMzBENDExRTFGMEREMEVBMDBCNzE5NTQgLyogS2lsbFJpbmcu
aCAqLzsgfTsKQEAgLTI5NCw3ICsyOTMsNiBAQAogCQlBMTE3NUI1NTFGNkI0NzA1MDBDNEI5RjAg
LyogRGVmYXVsdFNlYXJjaFByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlZmF1bHRTZWFyY2hQ
cm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTE3NUI1NjFGNkI0NzA1
MDBDNEI5RjAgLyogRGVmYXVsdFNlYXJjaFByb3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IERlZmF1bHRTZWFyY2hQcm92aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUExMTc1QjU5MUY2QjRBODQwMEM0QjlGMCAvKiBOU1Njcm9sbFZpZXdTUEkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTlNTY3JvbGxWaWV3U1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUEx
RjU1RENFMUY1NTI4RUMwMEVEQjc1RiAvKiBNZXRhZGF0YVNQSS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBN
ZXRhZGF0YVNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMUY2M0M5RDIxQTRE
QkY3MDA2RkI0M0IgLyogUGFzc0tpdFNvZnRMaW5rLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhc3NLaXRT
b2Z0TGluay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMUY2M0M5RTIxQTREQkY3
MDA2RkI0M0IgLyogUGFzc0tpdFNvZnRMaW5rLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGFz
c0tpdFNvZnRMaW5rLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMzBENDExRTFG
MEREMEVBMDBCNzE5NTQgLyogS2lsbFJpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gS2lsbFJpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ0OSw3ICs0
NDcsNiBAQAogCQkJCUExMDI2NTg4MUY1Njc0N0EwMEI0Qzg0NCAvKiBISVRvb2xib3hTUEkuaCAq
LywKIAkJCQkwQzc3ODU3MjFGNDUxMzBGMDBGNEVCQjYgLyogTG9va3VwU1BJLmggKi8sCiAJCQkJ
MEM3Nzg1NzMxRjQ1MTMwRjAwRjRFQkI2IC8qIE1lZGlhUmVtb3RlU1BJLmggKi8sCi0JCQkJQTFG
NTVEQ0UxRjU1MjhFQzAwRURCNzVGIC8qIE1ldGFkYXRhU1BJLmggKi8sCiAJCQkJMEM3Nzg1NzQx
RjQ1MTMwRjAwRjRFQkI2IC8qIE5TQWNjZXNzaWJpbGl0eVNQSS5oICovLAogCQkJCTFDQ0VFNEY2
MjBEODc0M0YwMDQ3QjA5NyAvKiBOU0FwcGVhcmFuY2VTUEkuaCAqLywKIAkJCQkwQzc3ODU3NTFG
NDUxMzBGMDBGNEVCQjYgLyogTlNBcHBsaWNhdGlvblNQSS5oICovLApAQCAtNzAxLDcgKzY5OCw2
IEBACiAJCQkJMEM1QUY5MUQxRjQzQTRDNzAwMkVBQzAyIC8qIE1lZGlhUGxheWVyU1BJLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwQzc3ODU4QzFGNDUxMzBGMDBGNEVCQjYgLyogTWVkaWFSZW1vdGVT
UEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBDMDBDRkQ0MUY2OENFNDYwMEFBQzI2RCAvKiBNZWRp
YVRpbWVBVkZvdW5kYXRpb24uaCBpbiBIZWFkZXJzICovLAotCQkJCUExRjU1RENGMUY1NTI4RUMw
MEVEQjc1RiAvKiBNZXRhZGF0YVNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEM1QUY5MUUxRjQz
QTRDNzAwMkVBQzAyIC8qIE1vYmlsZUdlc3RhbHRTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBD
MkRBMTQ5MUYzQkVCNDkwMERCQzMxNyAvKiBORUZpbHRlclNvdXJjZVNQSS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEM3Nzg1OEQxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TQWNjZXNzaWJpbGl0eVNQSS5o
IGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRm
b3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9QbGF0Zm9ybU1hYy5jbWFrZQpp
bmRleCA2YjFiZDI1OTI2ZjQyYmQ2NDYwMzJhZDkwNGE3ODdlNjliNzUwYWM5Li5mMTMwNzY4NDNm
ODgzMTZiYzM4YmQ4MGRhNzJmNDg5YTgyMzc2MjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
UGxhdGZvcm1NYWMuY21ha2UKQEAgLTU4LDcgKzU4LDYgQEAgbGlzdChBUFBFTkQgUEFMX1BVQkxJ
Q19IRUFERVJTCiAgICAgc3BpL21hYy9ISVRvb2xib3hTUEkuaAogICAgIHNwaS9tYWMvTG9va3Vw
U1BJLmgKICAgICBzcGkvbWFjL01lZGlhUmVtb3RlU1BJLmgKLSAgICBzcGkvbWFjL01ldGFkYXRh
U1BJLmgKICAgICBzcGkvbWFjL05TQWNjZXNzaWJpbGl0eVNQSS5oCiAgICAgc3BpL21hYy9OU0Fw
cGVhcmFuY2VTUEkuaAogICAgIHNwaS9tYWMvTlNBcHBsaWNhdGlvblNQSS5oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMvTWV0YWRhdGFTUEkuaCBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9NZXRhZGF0YVNQSS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA4MTU1NDdjNmI4NTEwZTMwNjE4ZTIyODJhZDViNzg0MDE2Y2EzNzIxLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvc3BpL21hYy9NZXRhZGF0YVNQSS5oCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFM
X1NESykKLQotI2luY2x1ZGUgPENvcmVTZXJ2aWNlcy9Db3JlU2VydmljZXNQcml2Lmg+Ci0KLSNl
bmRpZgotCi1XVEZfRVhURVJOX0NfQkVHSU4KLQotQm9vbGVhbiBNREl0ZW1TZXRBdHRyaWJ1dGUo
TURJdGVtUmVmLCBDRlN0cmluZ1JlZiBuYW1lLCBDRlR5cGVSZWYgYXR0cik7Ci0KLVdURl9FWFRF
Uk5fQ19FTkQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlIGIv
U291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXggODY2ZWE2YTU0YjlhNDJmODc4
ZDRlMTliNjUwYTJjM2MzYmEyMDlhOS4uNGQ3MmY5ZGVlZjgwZWI2ZTQ0NTY3OTczZDVjNmRjZmY2
OTA1NWI4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKKysr
IGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTE4OSw3ICsxODksNiBAQCBs
aXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9hdWRpby9tYWMvQ0FSaW5n
QnVmZmVyLmNwcAogICAgIHBsYXRmb3JtL2F1ZGlvL21hYy9GRlRGcmFtZU1hYy5jcHAKIAotICAg
IHBsYXRmb3JtL2NmL0ZpbGVTeXN0ZW1DRi5jcHAKICAgICBwbGF0Zm9ybS9jZi9LZXllZERlY29k
ZXJDRi5jcHAKICAgICBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAKICAgICBwbGF0Zm9y
bS9jZi9NYWluVGhyZWFkU2hhcmVkVGltZXJDRi5jcHAKQEAgLTIwMCw3ICsxOTksNiBAQCBsaXN0
KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVy
VW5ibG9ja0hhbmRsZXJDb2NvYS5tbQogICAgIHBsYXRmb3JtL2NvY29hL0NvcmVWaWRlb1NvZnRM
aW5rLmNwcAogICAgIHBsYXRmb3JtL2NvY29hL0ZpbGVNb25pdG9yQ29jb2EubW0KLSAgICBwbGF0
Zm9ybS9jb2NvYS9GaWxlU3lzdGVtQ29jb2EubW0KICAgICBwbGF0Zm9ybS9jb2NvYS9LZXlFdmVu
dENvY29hLm1tCiAgICAgcGxhdGZvcm0vY29jb2EvTG9jYWxpemVkU3RyaW5nc0NvY29hLm1tCiAg
ICAgcGxhdGZvcm0vY29jb2EvTUlNRVR5cGVSZWdpc3RyeUNvY29hLm1tCkBAIC0zNDcsNyArMzQ1
LDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vbWFjL0RyYWdE
YXRhTWFjLm1tCiAgICAgcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbQogICAgIHBsYXRmb3Jt
L21hYy9FdmVudExvb3BNYWMubW0KLSAgICBwbGF0Zm9ybS9tYWMvRmlsZVN5c3RlbU1hYy5tbQog
ICAgIHBsYXRmb3JtL21hYy9LZXlFdmVudE1hYy5tbQogICAgIHBsYXRmb3JtL21hYy9Mb2NhbEN1
cnJlbnRHcmFwaGljc0NvbnRleHQubW0KICAgICBwbGF0Zm9ybS9tYWMvTG9nZ2luZ01hYy5tbQpA
QCAtNDE4LDggKzQxNSw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRm
b3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxl
Z2F0ZS5tbQogICAgIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbQog
Ci0gICAgcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcAotCiAgICAgcGxhdGZvcm0v
dGV4dC9jZi9IeXBoZW5hdGlvbkNGLmNwcAogCiAgICAgcGxhdGZvcm0vdGV4dC9tYWMvTG9jYWxl
TWFjLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVBsYXlTdGF0aW9uLmNt
YWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1QbGF5U3RhdGlvbi5jbWFrZQppbmRleCA5MDM3
NjAzOWI5Njk2ZTEzZjlkZWJjOWM0NzMwYTc5MDM5OTc5NTUxLi42ZDQ0NTM1ZDk1OTg0YmU1ODgz
M2U4OGY5NzFlNmE3MmYyZGJhYjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bVBsYXlTdGF0aW9uLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtUGxheVN0YXRp
b24uY21ha2UKQEAgLTYzLDcgKzYzLDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAg
ICAgcGxhdGZvcm0vcGxheXN0YXRpb24vU2Nyb2xsYmFyVGhlbWVQbGF5U3RhdGlvbi5jcHAKICAg
ICBwbGF0Zm9ybS9wbGF5c3RhdGlvbi9Vc2VyQWdlbnRQbGF5U3RhdGlvbi5jcHAKIAotICAgIHBs
YXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKICAgICBwbGF0Zm9ybS9wb3NpeC9TaGFy
ZWRCdWZmZXJQT1NJWC5jcHAKIAogICAgIHBsYXRmb3JtL3RleHQvSHlwaGVuYXRpb24uY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFrZSBiL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtV2luLmNtYWtlCmluZGV4IDRmYWIzMDgyNjBlMDljODA1NDE5Yzg0YzdjYTgz
NGQ4MWZiOTVjNjUuLmZjYjU3YTQ1YTVmNDFlZjNiZjY3MDM4NGZkYTIzZjNjZGE4NjE0ZDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtlCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtlCkBAIC04NCw3ICs4NCw2IEBAIGxpc3QoQVBQRU5EIFdl
YkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL3dpbi9EcmFnRGF0YVdpbi5jcHAKICAgICBwbGF0
Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcAogICAgIHBsYXRmb3JtL3dpbi9FdmVudExvb3BXaW4u
Y3BwCi0gICAgcGxhdGZvcm0vd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCiAgICAgcGxhdGZvcm0vd2lu
L0dESU9iamVjdENvdW50ZXIuY3BwCiAgICAgcGxhdGZvcm0vd2luL0dESVV0aWxpdGllcy5jcHAK
ICAgICBwbGF0Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3BwCkBAIC05Myw3ICs5Miw2IEBAIGxpc3Qo
QVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL3dpbi9NSU1FVHlwZVJlZ2lzdHJ5
V2luLmNwcAogICAgIHBsYXRmb3JtL3dpbi9NYWluVGhyZWFkU2hhcmVkVGltZXJXaW4uY3BwCiAg
ICAgcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCi0gICAgcGxhdGZvcm0vd2luL1BhdGhX
YWxrZXIuY3BwCiAgICAgcGxhdGZvcm0vd2luL1BsYXRmb3JtTW91c2VFdmVudFdpbi5jcHAKICAg
ICBwbGF0Zm9ybS93aW4vUGxhdGZvcm1TY3JlZW5XaW4uY3BwCiAgICAgcGxhdGZvcm0vd2luL1Bv
cHVwTWVudVdpbi5jcHAKQEAgLTI0OCw3ICsyNDYsNiBAQCBpZiAoVVNFX0NGKQogICAgIGxpc3Qo
QVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgICAgICBsb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lX
ZWJBcmNoaXZlLmNwcAogCi0gICAgICAgIHBsYXRmb3JtL2NmL0ZpbGVTeXN0ZW1DRi5jcHAKICAg
ICAgICAgcGxhdGZvcm0vY2YvS2V5ZWREZWNvZGVyQ0YuY3BwCiAgICAgICAgIHBsYXRmb3JtL2Nm
L0tleWVkRW5jb2RlckNGLmNwcAogICAgICAgICBwbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQKaW5kZXggMjc0YjA4ODAwZTZiZGU0M2ZhN2I1MWFmYWY3NjRjYTFhOTQ3
MGQ2Yy4uMGExZDY5ODcwYzBhOTQ2NjllZTdlYzlmMWJhN2QyYzc3ODEzYzcwZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQKQEAgLTE2MDAsNyArMTYwMCw2IEBAIHBsYXRmb3JtL0ZpbGVDaG9vc2VyLmNwcAogcGxh
dGZvcm0vRmlsZUhhbmRsZS5jcHAKIHBsYXRmb3JtL0ZpbGVNb25pdG9yLmNwcAogcGxhdGZvcm0v
RmlsZVN0cmVhbS5jcHAKLXBsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwCiBwbGF0Zm9ybS9HZW5lcmlj
VGFza1F1ZXVlLmNwcAogcGxhdGZvcm0vTGF5b3V0VW5pdC5jcHAKIHBsYXRmb3JtL0xlbmd0aC5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDBlMTViOTA0ZWFkMmQ5ZDg1OTNlNTBmYTQy
MDA4MzVhNDMwYjk1NjguLmMyNDE4NWYxNGVlN2FmNjYwOGQyYTQzY2UwNjY0OWNhMWYwNTUyZGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtMTgxLDcgKzE4MSw2IEBAIHBsYXRmb3JtL2F1
ZGlvL21hYy9BdWRpb1Nlc3Npb25NYWMuY3BwCiBwbGF0Zm9ybS9hdWRpby9tYWMvQ0FSaW5nQnVm
ZmVyLmNwcAogcGxhdGZvcm0vYXVkaW8vbWFjL0ZGVEZyYW1lTWFjLmNwcAogCi1wbGF0Zm9ybS9j
Zi9GaWxlU3lzdGVtQ0YuY3BwCiBwbGF0Zm9ybS9jZi9LZXllZERlY29kZXJDRi5jcHAKIHBsYXRm
b3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcAogcGxhdGZvcm0vY2YvTWFpblRocmVhZFNoYXJlZFRp
bWVyQ0YuY3BwCkBAIC0xOTMsNyArMTkyLDYgQEAgcGxhdGZvcm0vY29jb2EvQ29udGVudEZpbHRl
clVuYmxvY2tIYW5kbGVyQ29jb2EubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9jb2NvYS9Db3JlVmlk
ZW9Tb2Z0TGluay5jcHAKIHBsYXRmb3JtL2NvY29hL0RhdGFEZXRlY3RvcnNDb3JlU29mdExpbmsu
bW0KIHBsYXRmb3JtL2NvY29hL0ZpbGVNb25pdG9yQ29jb2EubW0KLXBsYXRmb3JtL2NvY29hL0Zp
bGVTeXN0ZW1Db2NvYS5tbQogcGxhdGZvcm0vY29jb2EvS2V5RXZlbnRDb2NvYS5tbQogcGxhdGZv
cm0vY29jb2EvTG9jYWxpemVkU3RyaW5nc0NvY29hLm1tCiBwbGF0Zm9ybS9jb2NvYS9NSU1FVHlw
ZVJlZ2lzdHJ5Q29jb2EubW0KQEAgLTQ0Niw3ICs0NDQsNiBAQCBwbGF0Zm9ybS9tYWMvQ3Vyc29y
TWFjLm1tCiBwbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0KIHBsYXRmb3JtL21hYy9EcmFnSW1h
Z2VNYWMubW0KIHBsYXRmb3JtL21hYy9FdmVudExvb3BNYWMubW0KLXBsYXRmb3JtL21hYy9GaWxl
U3lzdGVtTWFjLm1tCiBwbGF0Zm9ybS9tYWMvS2V5RXZlbnRNYWMubW0gQG5vLXVuaWZ5CiBwbGF0
Zm9ybS9tYWMvUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjLm1tIEBuby11bmlmeQogcGxhdGZv
cm0vbWFjL0xvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5tbQpAQCAtNTQxLDggKzUzOCw2IEBA
IHBsYXRmb3JtL25ldHdvcmsvbWFjL1VUSVV0aWxpdGllcy5tbQogcGxhdGZvcm0vbmV0d29yay9t
YWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCiBwbGF0
Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0KIAotcGxhdGZvcm0vcG9zaXgv
RmlsZVN5c3RlbVBPU0lYLmNwcAotCiBwbGF0Zm9ybS90ZXh0L2NmL0h5cGhlbmF0aW9uQ0YuY3Bw
CiAKIHBsYXRmb3JtL3RleHQvaW9zL0xvY2FsaXplZERhdGVDYWNoZS5tbQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDJjNDZiM2Rl
ZTU3NDhmZWY1OWIwZDM0ZDQ5NTMyNzA5YTNiYTZjYTQuLmEzNWYwMmY0ZTQwMTdhYzYyYTJhMWI5
MDU5MWUxYzczZGRjNTA4MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyNDUsNyArMTI0NSw2IEBACiAJCTQ2NzMwMjAyMUM0
RUZFNzgwMEJDQjM1NyAvKiBJZ25vcmVPcGVuc0R1cmluZ1VubG9hZENvdW50SW5jcmVtZW50ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NzMwMjAx
MUM0RUZFNjYwMEJDQjM1NyAvKiBJZ25vcmVPcGVuc0R1cmluZ1VubG9hZENvdW50SW5jcmVtZW50
ZXIuaCAqLzsgfTsKIAkJNDY4MkQyMDAxRjc5NzgzMDAwQzg2M0RCIC8qIFN0b3JlZENyZWRlbnRp
YWxzUG9saWN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NjgyRDFGRjFGNzk3ODIzMDBDODYzREIgLyogU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjgzNDRF
MDFFRERGQUFBMDBCNzc5NUIgLyogRE9NUmVjdExpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODM0NERFMUVEREZBNUYwMEI3Nzk1QiAvKiBET01S
ZWN0TGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
Ci0JCTQ2ODlGMUFGMTI2N0JBRTEwMEU4RDM4MCAvKiBGaWxlTWV0YWRhdGEuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODlGMUFFMTI2N0JBRTEwMEU4
RDM4MCAvKiBGaWxlTWV0YWRhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk0NkI2M0Y2QzFDNkU4RDE5MDAyRTkxNEIgLyogSlNFdmVudFRhcmdl
dEN1c3RvbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDZCNjNGNkIxQzZFOENERjAwMkU5MTRCIC8qIEpTRXZlbnRUYXJnZXRDdXN0b20uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkI5NTE5NTIwN0Q2
MzM0MDBBN0QyREQgLyogQWJzdHJhY3RET01XaW5kb3cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Qjk1MThBMjA3RDYzMjgwMEE3RDJERCAvKiBBYnN0
cmFjdERPTVdpbmRvdy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTQ2Qjk1MTk2MjA3RDYzM0EwMEE3RDJERCAvKiBBYnN0cmFjdEZyYW1lLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkI5NTE4RjIwN0Q2
MzJCMDBBN0QyREQgLyogQWJzdHJhY3RGcmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNDM3LDcgKzE0MzYsNiBAQAogCQk1MTQzQjI2MzFE
REQxNTIwMDAxNEZBQzYgLyogTGlua0ljb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxNDNCMjYyMURERDE0OTAwMDE0RkFDNiAvKiBMaW5rSWNvbi5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxNDVC
MTBBMUJDNDhFMkUwMEU4NjIxOSAvKiBJREJSZXNvdXJjZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNDVCMTA4MUJDNDg5MEIwMEU4
NjIxOSAvKiBJREJSZXNvdXJjZUlkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTQ4NDUzRjFCQjlEMDdFMDA2QTcyRUQgLyogSURC
RXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
NDg0NTNEMUJCOUQwNzYwMDZBNzJFRCAvKiBJREJFcnJvci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTUxNEIzRjczMEM3MjIwNDcwMDA1MzBERiAv
KiBGaWxlU3lzdGVtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTRCM0Y3MjBDNzIyMDQ3MDAwNTMwREYgLyogRmlsZVN5c3RlbS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxNEM3NjRDMENFOTIzNEUw
MDdFRjNDRCAvKiBBdXRoZW50aWNhdGlvbk1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0Qzc2NDIwQ0U5MjM0RTAwN0VGM0NEIC8qIEF1dGhlbnRp
Y2F0aW9uTWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNTE0Qzc2NEUwQ0U5MjM0RTAwN0VGM0NEIC8qIEZvcm1EYXRhU3RyZWFtTWFjLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTRDNzY0NDBDRTky
MzRFMDA3RUYzQ0QgLyogRm9ybURhdGFTdHJlYW1NYWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTRDNzY2RTBDRTkyM0ExMDA3RUYzQ0QgLyog
Q3JlZGVudGlhbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTE0Qzc2NTkwQ0U5MjNBMTAwN0VGM0NEIC8qIENyZWRlbnRpYWwuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNzcwNyw3ICs3NzA1LDYgQEAK
IAkJNDY4MzQ0REMxRURERkE1RjAwQjc3OTVCIC8qIERPTVJlY3RMaXN0LmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBET01S
ZWN0TGlzdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODM0NEREMUVEREZB
NUYwMEI3Nzk1QiAvKiBET01SZWN0TGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01SZWN0
TGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODM0NERFMUVEREZBNUYw
MEI3Nzk1QiAvKiBET01SZWN0TGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01SZWN0TGlzdC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0Njg5RjFBRTEyNjdCQUUxMDBFOEQzODAgLyog
RmlsZU1ldGFkYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbGVNZXRh
ZGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkI2M0Y2QjFDNkU4Q0RGMDAy
RTkxNEIgLyogSlNFdmVudFRhcmdldEN1c3RvbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU0V2ZW50VGFyZ2V0Q3VzdG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ2Qjk1MThBMjA3RDYzMjgwMEE3RDJERCAvKiBBYnN0cmFjdERPTVdpbmRvdy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBYnN0cmFjdERPTVdpbmRvdy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0NkI5NTE4QzIwN0Q2MzI5MDBBN0QyREQgLyogUmVtb3Rl
RnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlRnJh
bWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODExMCw4ICs4MTA3LDYgQEAK
IAkJNTE0NUIxMDgxQkM0ODkwQjAwRTg2MjE5IC8qIElEQlJlc291cmNlSWRlbnRpZmllci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJREJSZXNvdXJjZUlkZW50aWZpZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0ODQ1M0MxQkI5RDA3NjAwNkE3MkVEIC8q
IElEQkVycm9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElEQkVy
cm9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0ODQ1M0QxQkI5RDA3NjAw
NkE3MkVEIC8qIElEQkVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElE
QkVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUxNEIzRjcyMEM3MjIwNDcw
MDA1MzBERiAvKiBGaWxlU3lzdGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEZpbGVTeXN0ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTE0QjNGNzUwQzcy
MjA1NTAwMDUzMERGIC8qIEZpbGVTeXN0ZW1Db2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IEZpbGVTeXN0ZW1Db2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTE0Qzc2MzUwQ0U5MjI1RTAwN0VGM0NEIC8qIEpTU1FMRXJyb3IuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTUUxFcnJvci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNEM3NjM2MENFOTIyNUUwMDdFRjNDRCAvKiBKU1NR
TFRyYW5zYWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
U1FMVHJhbnNhY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTRDNzY0
MjBDRTkyMzRFMDA3RUYzQ0QgLyogQXV0aGVudGljYXRpb25NYWMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQXV0aGVudGljYXRpb25NYWMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTgxNTAsOCArODE0NSw2IEBACiAJCTUxNUUzN0Y0MUZBQTkzODgwMEQ3RjIy
QSAvKiBTZXJ2aWNlV29ya2VyVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU2VydmljZVdvcmtlclR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUx
NUY3OTUxMUNGQ0EzQzcwMENDRUQ5MyAvKiBXZWJDb3JlQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQ29yZUNyb3NzVGhyZWFkQ29w
aWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE1Rjc5NTIxQ0ZDQTNDNzAw
Q0NFRDkzIC8qIFdlYkNvcmVDcm9zc1RocmVhZENvcGllci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJDb3JlQ3Jvc3NUaHJlYWRDb3BpZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJNTE2MDMwMEEwQ0M0MjUxMjAwQzhBQzI1IC8qIEZpbGVTeXN0ZW1QT1NJ
WC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxlU3lzdGVtUE9T
SVguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MTYwMzA2QjBDQzQzNjIzMDBD
OEFDMjUgLyogRmlsZVN5c3RlbUNGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEZpbGVTeXN0ZW1DRi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUx
NjA3MTJCMUJEODMwNTMwMERCQzRGMiAvKiBUcmFuc2FjdGlvbk9wZXJhdGlvbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUcmFuc2FjdGlvbk9wZXJhdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MTYwNzEyQzFCRDgzMDcyMDBEQkM0RjIgLyogSURCT2Jq
ZWN0U3RvcmVJbmZvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElE
Qk9iamVjdFN0b3JlSW5mby5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNjA3
MTJEMUJEODMwNzIwMERCQzRGMiAvKiBJREJPYmplY3RTdG9yZUluZm8uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSURCT2JqZWN0U3RvcmVJbmZvLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0xMTI1Myw3ICsxMTI0Niw2IEBACiAJCUExQzJDNTc1MUZBMjg1MTYw
MEJBNDZGQSAvKiBQYXltZW50U2Vzc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYXltZW50
U2Vzc2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExQzdGQUExMTMzQTVE
MzUwMEQ2NzMyRCAvKiBKU1hQYXRoUmVzdWx0Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTWFBhdGhSZXN1bHRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBMUNCRUY2MzFGOUYxMTI5MDAyOERFN0MgLyogTW9ja1BheW1lbnRN
ZXRob2QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9ja1BheW1lbnRNZXRob2QuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJQTFDQzExNjIxRTQ5M0QwMTAwRUZBNjlDIC8qIEZpbGVTeXN0ZW1N
YWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBGaWxlU3lzdGVt
TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMUNDNTY0QzFGNDYxNDUwMDBB
NDU1NUIgLyogSlNQYXltZW50TWV0aG9kRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU1BheW1lbnRNZXRob2REYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUExQ0M1NjREMUY0NjE0NTEwMEE0NTU1QiAvKiBKU1BheW1lbnRNZXRob2REYXRhLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUGF5bWVudE1ldGhvZERhdGEu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMUNDNTY0RTFGNDYxNDUyMDBBNDU1
NUIgLyogSlNQYXltZW50Q29tcGxldGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNQYXltZW50Q29tcGxldGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEz
NDQwLDcgKzEzNDMyLDYgQEAKIAkJQzU1OTJGNzcxQTkyQUEyODAwMUY4ODYyIC8qIENoYXJhY3Rl
clByb3BlcnRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2hhcmFjdGVy
UHJvcGVydGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNTVDN0JBMDE3MThB
RkJBMDAxMzI3RTQgLyogUmVuZGVyVGhlbWVJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBSZW5kZXJUaGVtZUlPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQzU3MkVFMUQxMjAxQzlCQzAwN0Q4RjgyIC8qIEpTSURCSW5kZXguaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNJREJJbmRleC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlDNTdGRURFMDEyMTJFRTlDMDA5N0JFNjUgLyogRmlsZVN5c3RlbS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxlU3lzdGVtLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzU4NUE2NjAxMUQ0RkFDNTAwNEMzRTRCIC8qIElE
QkJpbmRpbmdVdGlsaXRpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSURCQmluZGluZ1V0aWxpdGllcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUM1ODVBNjYxMTFENEZBQzUwMDRDM0U0QiAvKiBJREJCaW5kaW5nVXRpbGl0aWVzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElEQkJpbmRpbmdVdGlsaXRpZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzU4NUE2NkIxMUQ0RkIwNzAwNEMzRTRCIC8qIEpTSURC
RGF0YWJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNJREJEYXRhYmFz
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY3NzQsNyArMTY3NjUsNiBAQAog
CQkxQUU0MkY2NzBBQTRCOENCMDBDODYxMkQgLyogY2YgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTUxNjAzMDZCMENDNDM2MjMwMEM4QUMyNSAvKiBGaWxl
U3lzdGVtQ0YuY3BwICovLAogCQkJCTUxN0E2M0JGMUI3NDMxN0UwMEU3RENEQyAvKiBLZXllZERl
Y29kZXJDRi5jcHAgKi8sCiAJCQkJNTE3QTYzQzAxQjc0MzE3RTAwRTdEQ0RDIC8qIEtleWVkRGVj
b2RlckNGLmggKi8sCiAJCQkJNTE3QTYzQzExQjc0MzE3RTAwRTdEQ0RDIC8qIEtleWVkRW5jb2Rl
ckNGLmNwcCAqLywKQEAgLTE3MTY5LDEwICsxNzE1OSwxMCBAQAogCQkJCTFDRUNCM0I2MjFGNTBB
QzcwMEY0NDU0MiAvKiBXSExTTE1ldGFsQ29kZUdlbmVyYXRvci5oICovLAogCQkJCTFDRUNCM0I4
MjFGNTBEMTAwMEY0NDU0MiAvKiBXSExTTE5hdGl2ZUZ1bmN0aW9uV3JpdGVyLmNwcCAqLywKIAkJ
CQkxQ0VDQjNCOTIxRjUwRDEwMDBGNDQ1NDIgLyogV0hMU0xOYXRpdmVGdW5jdGlvbldyaXRlci5o
ICovLAotCQkJCTFDRUNCM0IxMjFGMkI5ODUwMEY0NDU0MiAvKiBXSExTTFR5cGVOYW1lci5jcHAg
Ki8sCi0JCQkJMUNFQ0IzQjAyMUYyQjk4NTAwRjQ0NTQyIC8qIFdITFNMVHlwZU5hbWVyLmggKi8s
CiAJCQkJMUNFQ0IzQzYyMUY1OUM4NzAwRjQ0NTQyIC8qIFdITFNMTmF0aXZlVHlwZVdyaXRlci5j
cHAgKi8sCiAJCQkJMUNFQ0IzQzcyMUY1OUM4NzAwRjQ0NTQyIC8qIFdITFNMTmF0aXZlVHlwZVdy
aXRlci5oICovLAorCQkJCTFDRUNCM0IxMjFGMkI5ODUwMEY0NDU0MiAvKiBXSExTTFR5cGVOYW1l
ci5jcHAgKi8sCisJCQkJMUNFQ0IzQjAyMUYyQjk4NTAwRjQ0NTQyIC8qIFdITFNMVHlwZU5hbWVy
LmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IE1ldGFsOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKQEAgLTE4NzM2LDE0ICsxODcyNiw2IEBACiAJCQlwYXRoID0gbWFjOwogCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKIAkJfTsKLQkJNTE2MDMwMDkwQ0M0MjQ1NDAwQzhBQzI1IC8qIHBvc2l4
ICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQk1MTYwMzAw
QTBDQzQyNTEyMDBDOEFDMjUgLyogRmlsZVN5c3RlbVBPU0lYLmNwcCAqLywKLQkJCSk7Ci0JCQlw
YXRoID0gcG9zaXg7Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9OwogCQk1MTYwRjQ5
MjBCMEFBNzE1MDBDMUQyQUYgLyogbWFjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKQEAgLTIwMTA0LDcgKzIwMDg2LDYgQEAKIAkJCQlBN0NGQjNENDBCN0VEMTE4
MDA3MEMzMkQgLyogRHJhZ0ltYWdlTWFjLm1tICovLAogCQkJCUUxQkE2NkYwMTc0MkJEODYwMEMy
MDI1MSAvKiBEeW5hbWljTGlua2VySW50ZXJwb3NpbmcuaCAqLywKIAkJCQkxQ0ExOUUwMzBEQzI1
NTk1MDA2NUE5OTQgLyogRXZlbnRMb29wTWFjLm1tICovLAotCQkJCUExQ0MxMTYyMUU0OTNEMDEw
MEVGQTY5QyAvKiBGaWxlU3lzdGVtTWFjLm1tICovLAogCQkJCTkzNUM0NzZFMDlBQzRENzMwMEE2
QUFCNCAvKiBLZXlFdmVudE1hYy5tbSAqLywKIAkJCQlGNDRBNUY1NzFGRUQzODMwMDA3RjU5NDQg
LyogTGVnYWN5TlNQYXN0ZWJvYXJkVHlwZXMuaCAqLywKIAkJCQkwNkU4MUVENjBBQjVENUU5MDBD
ODc4MzcgLyogTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0LmggKi8sCkBAIC0yMjU1Miw3ICsy
MjUzMyw2IEBACiAJCQkJN0M3OTQxRTMxQzU2QzI5MzAwQTRDNThFIC8qIERhdGFEZXRlY3RvcnND
b3JlU29mdExpbmsuaCAqLywKIAkJCQk3Qzc5NDFFMjFDNTZDMjkzMDBBNEM1OEUgLyogRGF0YURl
dGVjdG9yc0NvcmVTb2Z0TGluay5tbSAqLywKIAkJCQk3QTA5Q0VGMDFGMDFEMUY3MDBFOTNCREIg
LyogRmlsZU1vbml0b3JDb2NvYS5tbSAqLywKLQkJCQk1MTRCM0Y3NTBDNzIyMDU1MDAwNTMwREYg
LyogRmlsZVN5c3RlbUNvY29hLm1tICovLAogCQkJCUE1Qzk3NENGMTE0ODVGRjEwMDY2RjJBQiAv
KiBLZXlFdmVudENvY29hLmggKi8sCiAJCQkJQTVDOTc0RDAxMTQ4NUZGMTAwNjZGMkFCIC8qIEtl
eUV2ZW50Q29jb2EubW0gKi8sCiAJCQkJMUE0ODMyQjIxQTk1M0JBNjAwOEI0REZFIC8qIExvY2Fs
aXplZFN0cmluZ3NDb2NvYS5tbSAqLywKQEAgLTI1Mzk1LDcgKzI1Mzc1LDYgQEAKIAkJCQkwNzIy
MUI5MjE3Q0YwQUQ0MDA4NDhFNTEgLyogbWVkaWFzdHJlYW0gKi8sCiAJCQkJNTlDNzdGMTAxMDU0
NTkxQzAwNTA2MTA0IC8qIG1vY2sgKi8sCiAJCQkJNjU2Qjg0RDcwQUVBMUNFOTAwQTA5NUI0IC8q
IG5ldHdvcmsgKi8sCi0JCQkJNTE2MDMwMDkwQ0M0MjQ1NDAwQzhBQzI1IC8qIHBvc2l4ICovLAog
CQkJCTFBMkU2RTU2MENDNTUxRTAwMDRBMjA2MiAvKiBzcWwgKi8sCiAJCQkJQjJDM0Q5RUMwRDAw
NkMxRDAwRUY2RjI2IC8qIHRleHQgKi8sCiAJCQkJRTE4ODIzNUYyMDMxRjUwRjAwQjQyREYzIC8q
IHZyICovLApAQCAtMjU0NDAsMTQgKzI1NDE5LDExIEBACiAJCQkJMDY2Qzc3MkEwQUI2MDNCNzAw
MjM4Q0M0IC8qIEZpbGVDaG9vc2VyLmggKi8sCiAJCQkJNTM1MUQ0QUUxREY5MTZBQzAwODAxMENE
IC8qIEZpbGVIYW5kbGUuY3BwICovLAogCQkJCTUzNTFENEFGMURGOTE2QUMwMDgwMTBDRCAvKiBG
aWxlSGFuZGxlLmggKi8sCi0JCQkJNDY4OUYxQUUxMjY3QkFFMTAwRThEMzgwIC8qIEZpbGVNZXRh
ZGF0YS5oICovLAogCQkJCTdBMDlDRUVCMUYwMUNDOTMwMEU5M0JEQiAvKiBGaWxlTW9uaXRvci5j
cHAgKi8sCiAJCQkJN0EwOUNFRUMxRjAxQ0M5MzAwRTkzQkRCIC8qIEZpbGVNb25pdG9yLmggKi8s
CiAJCQkJMkVGMUJGRTgxMjFDOUY0MjAwQzI3NjI3IC8qIEZpbGVTdHJlYW0uY3BwICovLAogCQkJ
CTJFRjFCRkU5MTIxQzlGNDIwMEMyNzYyNyAvKiBGaWxlU3RyZWFtLmggKi8sCiAJCQkJMkVGMUJG
RjgxMjFDQjBDRTAwQzI3NjI3IC8qIEZpbGVTdHJlYW1DbGllbnQuaCAqLywKLQkJCQlDNTdGRURF
MDEyMTJFRTlDMDA5N0JFNjUgLyogRmlsZVN5c3RlbS5jcHAgKi8sCi0JCQkJNTE0QjNGNzIwQzcy
MjA0NzAwMDUzMERGIC8qIEZpbGVTeXN0ZW0uaCAqLywKIAkJCQlCQzA3M0JBOTBDMzk5QjFGMDAw
RjU5NzkgLyogRmxvYXRDb252ZXJzaW9uLmggKi8sCiAJCQkJQ0Q0QkU1MjkxQ0UxMzQyNTAwOUQ4
N0RBIC8qIEdlbmVyaWNUYXNrUXVldWUuY3BwICovLAogCQkJCUNENjJGQjk0MUFGMDE4RTcwMDEy
RUQ3RCAvKiBHZW5lcmljVGFza1F1ZXVlLmggKi8sCkBAIC0yOTEzNiw3ICsyOTExMiw2IEBACiAJ
CQkJRjU1QjNEQkUxMjUxRjEyRDAwM0VGMjY5IC8qIEZpbGVJbnB1dFR5cGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTk3NkQ2Qzg2MTIyQjhBM0QwMDFGRDFGNyAvKiBGaWxlTGlzdC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJODM1RDU0QzUxRjRERTUzODAwRTYwNjcxIC8qIEZpbGVMaXN0Q3JlYXRvci5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJNDY4OUYxQUYxMjY3QkFFMTAwRThEMzgwIC8qIEZpbGVNZXRh
ZGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0EwOUNFRjExRjAyMDY5QjAwRTkzQkRCIC8qIEZp
bGVNb25pdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzZENkM4OTEyMkI4QTNEMDAxRkQxRjcg
LyogRmlsZVJlYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkU3NTg0MUUxMjc3OUFEQTAwNjI2
MjhCIC8qIEZpbGVSZWFkZXJMb2FkZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMjkxNDQsNyArMjkx
MTksNiBAQAogCQkJCTJFREYzNjlEMTIyQzk0QjQwMDJGN0Q0RSAvKiBGaWxlUmVhZGVyU3luYy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMkVGMUJGRUIxMjFDOUY0MjAwQzI3NjI3IC8qIEZpbGVTdHJl
YW0uaCBpbiBIZWFkZXJzICovLAogCQkJCTJFRjFCRkY5MTIxQ0IwQ0UwMEMyNzYyNyAvKiBGaWxl
U3RyZWFtQ2xpZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTRCM0Y3MzBDNzIyMDQ3MDAwNTMw
REYgLyogRmlsZVN5c3RlbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNGQjMzNzExRjUwOEE1NDAw
OTg2RTU0IC8qIEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
ODMwMzM1MDIxRjU0OTA1NzAwNERGNzA3IC8qIEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTgzMDMzNTAzMUY1NDkwNUEwMDRERjcwNyAvKiBGaWxlU3lzdGVt
RW50cmllc0NhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9HQ0NvbnRyb2xsZXIuY3BwCmluZGV4IGQyNTFkMmVjZTFmMThiMjQwYTg4YmJmYjNhMjJj
MmMyNGY4MGY2Y2QuLjhhODNjNGI2ZjZmNTk2MDdkZmE3NzA0ODQyOWQwMmIxZTQyOTczM2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvR0NDb250cm9sbGVyLmNwcApAQCAtMjcsNyAr
MjcsNiBAQAogI2luY2x1ZGUgIkdDQ29udHJvbGxlci5oIgogCiAjaW5jbHVkZSAiQ29tbW9uVk0u
aCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiSlNIVE1MRG9jdW1lbnQuaCIK
ICNpbmNsdWRlICJMb2NhdGlvbi5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXAuaD4K
QEAgLTM2LDYgKzM1LDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9WTS5oPgogI2luY2x1
ZGUgPHBhbC9Mb2dnaW5nLmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKyNpbmNsdWRl
IDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RhdGFUcmFuc2Zlckl0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zl
ckl0ZW0uY3BwCmluZGV4IGEzZWNjNWE1YzllMGYzMGQ3NjAzMjgxN2YwZDQ2Mzk2MzNmZjFhOGIu
LjU5Zjk3ODZlZDhjZmE2NDllMDdkZGI3ZDg4NGFjOTI0MzI5NzYzOWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRGF0YVRyYW5zZmVySXRlbS5jcHAKQEAgLTM2LDExICszNiwxMSBAQAogI2luY2x1ZGUg
IkRhdGFUcmFuc2Zlckl0ZW1MaXN0LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJGaWxlLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW1E
aXJlY3RvcnlFbnRyeS5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW1GaWxlRW50cnkuaCIKICNpbmNs
dWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU3RyaW5nQ2FsbGJhY2su
aCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRl
ckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVy
Q29jb2EubW0KaW5kZXggOTcyMTdmMWQ3NWQwZTU0NmZjZjg0MzFlMmQ0YWY4YmE1NDNhYjYxYy4u
MjU0YTM2OGZhNzc0YWQ2MzcyZDQ2ZjE1M2M1YTk1YzRlZTI0MjhjNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KQEAg
LTM3LDcgKzM3LDYgQEAKICNpbXBvcnQgIkVkaXRvci5oIgogI2ltcG9ydCAiRWRpdG9yQ2xpZW50
LmgiCiAjaW1wb3J0ICJGaWxlLmgiCi0jaW1wb3J0ICJGaWxlU3lzdGVtLmgiCiAjaW1wb3J0ICJG
cmFtZS5oIgogI2ltcG9ydCAiRnJhbWVMb2FkZXIuaCIKICNpbXBvcnQgIkZyYW1lTG9hZGVyQ2xp
ZW50LmgiCkBAIC02NSw2ICs2NCw3IEBACiAjaW1wb3J0ICJXZWJOU0F0dHJpYnV0ZWRTdHJpbmdF
eHRyYXMuaCIKICNpbXBvcnQgIm1hcmt1cC5oIgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0F0
dHJpYnV0ZWRTdHJpbmdTUEkuaD4KKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0
IDx3dGYvU29mdExpbmtpbmcuaD4KICNpbXBvcnQgPHd0Zi9VUkxQYXJzZXIuaD4KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvRmlsZS5jcHAKaW5kZXggYjczZmNkZTc5ZjQ2MDc5MmM5MjZjMDc1ZmJhYWY2NjQ4YTcy
NDEzMS4uYWRiMzBjOTMzY2EyZmIyNWNlZjVkMGNhNDEzNjU2MGJiYTZkODExNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0ZpbGUuY3BwCkBAIC0yNywxMSArMjcsMTEgQEAKICNpbmNsdWRlICJGaWxlLmgiCiAK
ICNpbmNsdWRlICJCbG9iVVJMLmgiCi0jaW5jbHVkZSAiRmlsZU1ldGFkYXRhLmgiCi0jaW5jbHVk
ZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRl
ICJUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSA8d3RmL0RhdGVNYXRoLmg+Cisj
aW5jbHVkZSA8d3RmL0ZpbGVNZXRhZGF0YS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZUNvY29hLm1tIGIvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9GaWxlQ29jb2EubW0KaW5kZXggMjBiZTZmN2FlZGVjYTc1MzQ4MzU2
M2IxYmU0ZjkwNjJmYTQzOGEwMy4uNjY0ZjlhNTM2MTNkZjI2Y2ExN2M3MDdjMjFiNTBjNjQ2NDUy
MDRlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlQ29jb2EubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlQ29jb2EubW0KQEAgLTI4LDcgKzI4LDcgQEAK
IAogI2lmIEVOQUJMRShGSUxFX1JFUExBQ0VNRU5UKQogCi0jaW1wb3J0ICJGaWxlU3lzdGVtLmgi
CisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICNpbXBvcnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVDb3JlU2VydmljZXMuaD4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCmluZGV4IDAzYWYzYTk2MzQ5NGZhZjAwMTJlMjFh
OTM4ZjUxOTE3ODAzMDg1MDguLjk5OGY5ZWZhOTRlMmE3NTIxNmJiNGYzOWE3OTY4NjQ5YzEzMTdk
ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcApAQCAtMzAsNyArMzAsNiBA
QAogI2luY2x1ZGUgIkZpbGUuaCIKICNpbmNsdWRlICJGaWxlTGlzdC5oIgogI2luY2x1ZGUgIkZp
bGVMaXN0Q3JlYXRvci5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJGb3Jt
Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSFRNTElucHV0RWxl
bWVudC5oIgpAQCAtNDMsNiArNDIsNyBAQAogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVk
ZSAiU2hhZG93Um9vdC5oIgogI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgiCisjaW5j
bHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5o
PgogI2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdC
dWlsZGVyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVMaXN0Q3JlYXRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVMaXN0Q3JlYXRvci5jcHAKaW5kZXggNzZm
NTY1OTcwYWQxZGQ4ZDgxMDZjMjVhNTc5ZTQ1OTFiYWJkNDliOC4uMTU1NmZjMjk5Y2IyMzczYjBj
NTk4OTUyMGE3MmMzMTE2Y2UzOWVhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9G
aWxlTGlzdENyZWF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUxpc3RDcmVh
dG9yLmNwcApAQCAtMjgsOSArMjgsOSBAQAogCiAjaW5jbHVkZSAiRmlsZUNob29zZXIuaCIKICNp
bmNsdWRlICJGaWxlTGlzdC5oIgotI2luY2x1ZGUgIkZpbGVNZXRhZGF0YS5oIgotI2luY2x1ZGUg
IkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuaD4KKyNpbmNs
dWRlIDx3dGYvRmlsZU1ldGFkYXRhLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAppbmRleCA3NTVmMWEyOWFkN2M1N2Nj
YzNiZWE1ZWZhMjU1YjY1NmJiZGNjMzA5Li44YTMzZTg4NzBjYzM2YmM2ZGUyZmNhOGQxZDU4YzRj
Y2E2YjhmM2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlICJE
b2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUgIkRPTUFwcGxpY2F0aW9uQ2FjaGUuaCIKICNpbmNs
dWRlICJFdmVudE5hbWVzLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkZy
YW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNs
aWVudC5oIgpAQCAtNDQsNiArNDMsNyBAQAogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgog
I2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU3VicmVzb3VyY2VMb2FkZXIuaCIKKyNp
bmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9VVUlELmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCmluZGV4IGU4MTQ4M2MzNjIzY2QwMzQy
NDQ0ODRjZDBmNWZkYzkyNDk1NWFlMzIuLjgyYWRmZjMwMzM1YTJlMmJiOWNhYTdiNGY2Njg4NGQw
OTBlNzk1NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcApAQCAtMzAsMTIgKzMwLDEyIEBACiAjaW5j
bHVkZSAiQXBwbGljYXRpb25DYWNoZUdyb3VwLmgiCiAjaW5jbHVkZSAiQXBwbGljYXRpb25DYWNo
ZUhvc3QuaCIKICNpbmNsdWRlICJBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuaCIKLSNpbmNsdWRl
ICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiU1FMaXRlRGF0YWJhc2VUcmFja2VyLmgiCiAjaW5j
bHVkZSAiU1FMaXRlU3RhdGVtZW50LmgiCiAjaW5jbHVkZSAiU1FMaXRlVHJhbnNhY3Rpb24uaCIK
ICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luRGF0
YS5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4
dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVVVJRC5oPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAKaW5kZXggZGIxNzdlOGRhZThjNjBlNmU3MTgyMjlmYjNjMDNkMzZkZmZkNTQ1
Mi4uMjZhMjU4MTljMWE3NzQxZDEyY2Q5NjQ2MjlhZDE1OTc5OTg2ZDBkMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwCkBAIC01MSw3ICs1MSw2IEBACiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJF
dmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXh0ZW5zaW9uU3R5bGVTaGVldHMuaCIKLSNpbmNsdWRl
ICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiRm9jdXNDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAi
RnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgpAQCAtMTIyLDYg
KzEyMSw3IEBACiAjaW5jbHVkZSAiV2ViR0xTdGF0ZVRyYWNrZXIuaCIKICNpbmNsdWRlICJXaGVl
bEV2ZW50RGVsdGFGaWx0ZXIuaCIKICNpbmNsdWRlICJXaWRnZXQuaCIKKyNpbmNsdWRlIDx3dGYv
RmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaD4KICNp
bmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCmluZGV4IGI1OGZhYWExNjdhOTY3
MjZhYTIxMWZlMWYwMjc0YmM2NmU5NjE2NWIuLjNhZDkyMWNjNTRkZTFmZWZlM2QxNTcxZjIyZTI1
MzIxMmE4ZGUyMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmln
aW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCkBAIC0z
MCwxNSArMzAsMTUgQEAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogCiAjaW5jbHVkZSAi
QmxvYlVSTC5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKLSNpbmNsdWRlIDx3dGYvVVJMLmg+
CiAjaW5jbHVkZSAiU2NoZW1lUmVnaXN0cnkuaCIKICNpbmNsdWRlICJTZWN1cml0eVBvbGljeS5o
IgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVCbG9iUmVn
aXN0cnkuaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9NYWlu
VGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcAppbmRleCAwNWY4YjE5ZGFlNTg3OWQwY2RmZGE3
Yzc2NDllY2EyYjQ0YzM5OGE2Li40MzBjYjhiMGIzYWMzNmNjYTk2MTFlMGExZjA5ZTM1YWUxMGIw
ZDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwCkBAIC0y
Nyw5ICsyNyw5IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5EYXRhLmgiCiAKICNpbmNsdWRl
ICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJGcmFtZS5o
IgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0u
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVy
cy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUhhbmRsZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUhhbmRsZS5oCmluZGV4IGQxMTgzMDg2OTYzZDIx
MjM3YjkwYjFhODI1ODViNzY1YmJjMTNkZjIuLjUwZDgyNGNhZWU5YmExMjQwOTg0MzVlYTcyMTVk
MTUxNzg3ZGJjZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVIYW5k
bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlSGFuZGxlLmgKQEAgLTI4LDkg
KzI4LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCi0KICNp
bmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vRmlsZU1ldGFkYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlTWV0YWRhdGEu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2Q4ODQ5NTNlNzY3NWQ5MmMwNjM4ZGVj
YWQ4NTdjZDQxYTU5YzU2MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlTWV0YWRhdGEuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDUwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgot
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgPHd0Zi9XYWxsVGlt
ZS5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBGaWxlTWV0YWRhdGEgewotICAg
IC8vIFRoZSBsYXN0IG1vZGlmaWNhdGlvbiB0aW1lIG9mIHRoZSBmaWxlLCBpbiBzZWNvbmRzLgot
ICAgIFdhbGxUaW1lIG1vZGlmaWNhdGlvblRpbWU7Ci0KLSAgICAvLyBUaGUgbGVuZ3RoIG9mIHRo
ZSBmaWxlIGluIGJ5dGVzLgotICAgIGxvbmcgbG9uZyBsZW5ndGg7Ci0KLSAgICBib29sIGlzSGlk
ZGVuOwotCi0gICAgZW51bSBjbGFzcyBUeXBlIHsgRmlsZSwgRGlyZWN0b3J5LCBTeW1ib2xpY0xp
bmsgfTsKLSAgICBUeXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3RyZWFtLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0uY3BwCmluZGV4IGVhOTE3Mzc0YjRjOGI0YTRlYTA0
M2MyOWFiZjU0MzE1OTIyYTg5ZTIuLjg5M2JiMzM5NDc2Y2VmZGE4ZGYxMGJjOTIwYzBiMzU4MjUx
OTE1N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0uY3BwCkBAIC0yOSwxMCAr
MjksOCBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLQogI2luY2x1ZGUgIkZpbGVTdHJl
YW0uaCIKIAotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vRmlsZVN0cmVhbS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN0
cmVhbS5oCmluZGV4IGFhMDExZWEyM2UxODU0YzRiOTAyMDU5NjI1Mzc2MTNhMWFiNmUxMmIuLmEy
ZmI4ZTVmYWEyNTRiYzhlNWNjZTllMWI0YzY2MzFiOGQxYTA1NGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9GaWxlU3RyZWFtLmgKQEAgLTI4LDEwICsyOCw5IEBACiAgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKLSNpZm5kZWYgRmlsZVN0cmVhbV9oCi0jZGVmaW5lIEZpbGVTdHJlYW1faAorI3ByYWdtYSBv
bmNlCiAKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0u
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02NCw1ICs2MywzIEBAIHByaXZhdGU6CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBGaWxlU3RyZWFtX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGVkOWQzN2FhYTEzMTYyODNkYTdlZjIyNDZiM2NhOTQxMGFkMjVkMjIuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vRmlsZVN5c3RlbS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNjcgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwNy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQK
LSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKLQotI2lu
Y2x1ZGUgIkZpbGVNZXRhZGF0YS5oIgotI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KLSNpbmNs
dWRlIDx3dGYvU2NvcGUuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0jaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgotCi0jaWYgIU9TKFdJTkRPV1MpCi0jaW5jbHVk
ZSA8ZmNudGwuaD4KLSNpbmNsdWRlIDxzeXMvbW1hbi5oPgotI2luY2x1ZGUgPHN5cy9zdGF0Lmg+
Ci0jaW5jbHVkZSA8dW5pc3RkLmg+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1u
YW1lc3BhY2UgRmlsZVN5c3RlbSB7Ci0KLS8vIFRoZSBmb2xsb3dpbmcgbG93ZXItQVNDSUkgY2hh
cmFjdGVycyBuZWVkIGVzY2FwaW5nIHRvIGJlIHVzZWQgaW4gYSBmaWxlbmFtZQotLy8gYWNyb3Nz
IGFsbCBzeXN0ZW1zLCBpbmNsdWRpbmcgV2luZG93czoKLS8vICAgICAtIFVucHJpbnRhYmxlIEFT
Q0lJICgwMC0xRikKLS8vICAgICAtIFNwYWNlICAgICAgICAgICAgICgyMCkKLS8vICAgICAtIERv
dWJsZSBxdW90ZSAgICAgICgyMikKLS8vICAgICAtIFBlcmNlbnQgICAgICAgICAgICgyNSkgKGVz
Y2FwZWQgYmVjYXVzZSBpdCBpcyBvdXIgZXNjYXBlIGNoYXJhY3RlcikKLS8vICAgICAtIEFzdGVy
aXNrICAgICAgICAgICgyQSkKLS8vICAgICAtIFNsYXNoICAgICAgICAgICAgICgyRikKLS8vICAg
ICAtIENvbG9uICAgICAgICAgICAgICgzQSkKLS8vICAgICAtIExlc3MtdGhhbiAgICAgICAgICgz
QykKLS8vICAgICAtIEdyZWF0ZXItdGhhbiAgICAgICgzRSkKLS8vICAgICAtIFF1ZXN0aW9uIE1h
cmsgICAgICgzRikKLS8vICAgICAtIEJhY2tzbGFzaCAgICAgICAgICg1QykKLS8vICAgICAtIFBp
cGUgICAgICAgICAgICAgICg3QykKLS8vICAgICAtIERlbGV0ZSAgICAgICAgICAgICg3RikKLQot
c3RhdGljIGNvbnN0IGJvb2wgbmVlZHNFc2NhcGluZ1sxMjhdID0gewotICAgIC8qIDAwLTA3ICov
IHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAK
LSAgICAvKiAwOC0wRiAqLyB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUs
ICB0cnVlLCAgdHJ1ZSwgCi0KLSAgICAvKiAxMC0xNyAqLyB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0
cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgCi0gICAgLyogMTgtMUYgKi8gdHJ1ZSwg
IHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsIAotCi0gICAg
LyogMjAtMjcgKi8gdHJ1ZSwgIGZhbHNlLCB0cnVlLCAgZmFsc2UsIGZhbHNlLCB0cnVlLCAgZmFs
c2UsIGZhbHNlLCAKLSAgICAvKiAyOC0yRiAqLyBmYWxzZSwgZmFsc2UsIHRydWUsICBmYWxzZSwg
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgCi0gICAgCi0gICAgLyogMzAtMzcgKi8gZmFsc2Us
IGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAKLSAgICAv
KiAzOC0zRiAqLyBmYWxzZSwgZmFsc2UsIHRydWUsICBmYWxzZSwgdHJ1ZSwgIGZhbHNlLCB0cnVl
LCAgdHJ1ZSwgCi0gICAgCi0gICAgLyogNDAtNDcgKi8gZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFs
c2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAKLSAgICAvKiA0OC00RiAqLyBmYWxzZSwg
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsCi0gICAgCi0g
ICAgLyogNTAtNTcgKi8gZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwg
ZmFsc2UsIGZhbHNlLCAKLSAgICAvKiA1OC01RiAqLyBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxz
ZSwgdHJ1ZSwgIGZhbHNlLCBmYWxzZSwgZmFsc2UsCi0gICAgCi0gICAgLyogNjAtNjcgKi8gZmFs
c2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAKLSAg
ICAvKiA2OC02RiAqLyBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBm
YWxzZSwgZmFsc2UsCi0gICAgCi0gICAgLyogNzAtNzcgKi8gZmFsc2UsIGZhbHNlLCBmYWxzZSwg
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAKLSAgICAvKiA3OC03RiAqLyBmYWxz
ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgCi19Owot
Ci1zdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkRXNjYXBlVUNoYXIoVUNoYXIgY2hhcmFjdGVyLCBV
Q2hhciBwcmV2aW91c0NoYXJhY3RlciwgVUNoYXIgbmV4dENoYXJhY3RlcikKLXsKLSAgICBpZiAo
Y2hhcmFjdGVyIDw9IDEyNykKLSAgICAgICAgcmV0dXJuIG5lZWRzRXNjYXBpbmdbY2hhcmFjdGVy
XTsKLQotICAgIGlmIChVMTZfSVNfTEVBRChjaGFyYWN0ZXIpICYmICFVMTZfSVNfVFJBSUwobmV4
dENoYXJhY3RlcikpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgaWYgKFUxNl9JU19UUkFJ
TChjaGFyYWN0ZXIpICYmICFVMTZfSVNfTEVBRChwcmV2aW91c0NoYXJhY3RlcikpCi0gICAgICAg
IHJldHVybiB0cnVlOwotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1TdHJpbmcgZW5jb2RlRm9y
RmlsZU5hbWUoY29uc3QgU3RyaW5nJiBpbnB1dFN0cmluZykKLXsKLSAgICB1bnNpZ25lZCBsZW5n
dGggPSBpbnB1dFN0cmluZy5sZW5ndGgoKTsKLSAgICBpZiAoIWxlbmd0aCkKLSAgICAgICAgcmV0
dXJuIGlucHV0U3RyaW5nOwotCi0gICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7Ci0gICAgcmVzdWx0
LnJlc2VydmVDYXBhY2l0eShsZW5ndGgpOwotCi0gICAgVUNoYXIgcHJldmlvdXNDaGFyYWN0ZXI7
Ci0gICAgVUNoYXIgY2hhcmFjdGVyID0gMDsKLSAgICBVQ2hhciBuZXh0Q2hhcmFjdGVyID0gaW5w
dXRTdHJpbmdbMF07Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7
Ci0gICAgICAgIHByZXZpb3VzQ2hhcmFjdGVyID0gY2hhcmFjdGVyOwotICAgICAgICBjaGFyYWN0
ZXIgPSBuZXh0Q2hhcmFjdGVyOwotICAgICAgICBuZXh0Q2hhcmFjdGVyID0gaSArIDEgPCBsZW5n
dGggPyBpbnB1dFN0cmluZ1tpICsgMV0gOiAwOwotCi0gICAgICAgIGlmIChzaG91bGRFc2NhcGVV
Q2hhcihjaGFyYWN0ZXIsIHByZXZpb3VzQ2hhcmFjdGVyLCBuZXh0Q2hhcmFjdGVyKSkgewotICAg
ICAgICAgICAgaWYgKGNoYXJhY3RlciA8PSAyNTUpIHsKLSAgICAgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKCclJyk7Ci0gICAgICAgICAgICAgICAgYXBwZW5kQnl0ZUFzSGV4KGNoYXJhY3Rlciwg
cmVzdWx0KTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZExpdGVyYWwoIiUrIik7Ci0gICAgICAgICAgICAgICAgYXBwZW5kQnl0ZUFzSGV4KGNoYXJh
Y3RlciA+PiA4LCByZXN1bHQpOwotICAgICAgICAgICAgICAgIGFwcGVuZEJ5dGVBc0hleChjaGFy
YWN0ZXIsIHJlc3VsdCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZChjaGFyYWN0ZXIpOwotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQu
dG9TdHJpbmcoKTsKLX0KLQotU3RyaW5nIGRlY29kZUZyb21GaWxlbmFtZShjb25zdCBTdHJpbmcm
IGlucHV0U3RyaW5nKQotewotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGlucHV0U3RyaW5nLmxlbmd0
aCgpOwotICAgIGlmICghbGVuZ3RoKQotICAgICAgICByZXR1cm4gaW5wdXRTdHJpbmc7Ci0KLSAg
ICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKLSAgICByZXN1bHQucmVzZXJ2ZUNhcGFjaXR5KGxlbmd0
aCk7Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAg
ICAgaWYgKGlucHV0U3RyaW5nW2ldICE9ICclJykgewotICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZChpbnB1dFN0cmluZ1tpXSk7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCi0g
ICAgICAgIC8vIElmIHRoZSBpbnB1dCBzdHJpbmcgaXMgYSB2YWxpZCBlbmNvZGVkIGZpbGVuYW1l
LCBpdCBtdXN0IGJlIGF0IGxlYXN0IDIgY2hhcmFjdGVycyBsb25nZXIKLSAgICAgICAgLy8gdGhh
biB0aGUgY3VycmVudCBpbmRleCB0byBhY2NvdW50IGZvciB0aGlzIHBlcmNlbnQgZW5jb2RlZCB2
YWx1ZS4KLSAgICAgICAgaWYgKGkgKyAyID49IGxlbmd0aCkKLSAgICAgICAgICAgIHJldHVybiB7
IH07Ci0KLSAgICAgICAgaWYgKGlucHV0U3RyaW5nW2krMV0gIT0gJysnKSB7Ci0gICAgICAgICAg
ICBpZiAoIWlzQVNDSUlIZXhEaWdpdChpbnB1dFN0cmluZ1tpICsgMV0pKQotICAgICAgICAgICAg
ICAgIHJldHVybiB7IH07Ci0gICAgICAgICAgICBpZiAoIWlzQVNDSUlIZXhEaWdpdChpbnB1dFN0
cmluZ1tpICsgMl0pKQotICAgICAgICAgICAgICAgIHJldHVybiB7IH07Ci0gICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kKHRvQVNDSUlIZXhWYWx1ZShpbnB1dFN0cmluZ1tpICsgMV0sIGlucHV0U3Ry
aW5nW2kgKyAyXSkpOwotICAgICAgICAgICAgaSArPSAyOwotICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBJZiB0aGUgaW5wdXQgc3RyaW5nIGlzIGEgdmFsaWQg
ZW5jb2RlZCBmaWxlbmFtZSwgaXQgbXVzdCBiZSBhdCBsZWFzdCA1IGNoYXJhY3RlcnMgbG9uZ2Vy
Ci0gICAgICAgIC8vIHRoYW4gdGhlIGN1cnJlbnQgaW5kZXggdG8gYWNjb3VudCBmb3IgdGhpcyBw
ZXJjZW50IGVuY29kZWQgdmFsdWUuCi0gICAgICAgIGlmIChpICsgNSA+PSBsZW5ndGgpCi0gICAg
ICAgICAgICByZXR1cm4geyB9OwotCi0gICAgICAgIGlmICghaXNBU0NJSUhleERpZ2l0KGlucHV0
U3RyaW5nW2kgKyAyXSkpCi0gICAgICAgICAgICByZXR1cm4geyB9OwotICAgICAgICBpZiAoIWlz
QVNDSUlIZXhEaWdpdChpbnB1dFN0cmluZ1tpICsgM10pKQotICAgICAgICAgICAgcmV0dXJuIHsg
fTsKLSAgICAgICAgaWYgKCFpc0FTQ0lJSGV4RGlnaXQoaW5wdXRTdHJpbmdbaSArIDRdKSkKLSAg
ICAgICAgICAgIHJldHVybiB7IH07Ci0gICAgICAgIGlmICghaXNBU0NJSUhleERpZ2l0KGlucHV0
U3RyaW5nW2kgKyA1XSkpCi0gICAgICAgICAgICByZXR1cm4geyB9OwotCi0gICAgICAgIHJlc3Vs
dC5hcHBlbmQodG9BU0NJSUhleFZhbHVlKGlucHV0U3RyaW5nW2kgKyAyXSwgaW5wdXRTdHJpbmdb
aSArIDNdKSA8PCA4IHwgdG9BU0NJSUhleFZhbHVlKGlucHV0U3RyaW5nW2kgKyA0XSwgaW5wdXRT
dHJpbmdbaSArIDVdKSk7Ci0gICAgICAgIGkgKz0gNTsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmVz
dWx0LnRvU3RyaW5nKCk7Ci19Ci0KLVN0cmluZyBsYXN0Q29tcG9uZW50T2ZQYXRoSWdub3JpbmdU
cmFpbGluZ1NsYXNoKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSNpZiBPUyhXSU5ET1dTKQotICAg
IGNoYXIgcGF0aFNlcGFyYXRvciA9ICdcXCc7Ci0jZWxzZQotICAgIGNoYXIgcGF0aFNlcGFyYXRv
ciA9ICcvJzsKLSNlbmRpZgotCi0gICAgYXV0byBwb3NpdGlvbiA9IHBhdGgucmV2ZXJzZUZpbmQo
cGF0aFNlcGFyYXRvcik7Ci0gICAgaWYgKHBvc2l0aW9uID09IG5vdEZvdW5kKQotICAgICAgICBy
ZXR1cm4gcGF0aDsKLQotICAgIHNpemVfdCBlbmRPZlN1YnN0cmluZyA9IHBhdGgubGVuZ3RoKCkg
LSAxOwotICAgIGlmIChwb3NpdGlvbiA9PSBlbmRPZlN1YnN0cmluZykgewotICAgICAgICAtLWVu
ZE9mU3Vic3RyaW5nOwotICAgICAgICBwb3NpdGlvbiA9IHBhdGgucmV2ZXJzZUZpbmQocGF0aFNl
cGFyYXRvciwgZW5kT2ZTdWJzdHJpbmcpOwotICAgIH0KLQotICAgIHJldHVybiBwYXRoLnN1YnN0
cmluZyhwb3NpdGlvbiArIDEsIGVuZE9mU3Vic3RyaW5nIC0gcG9zaXRpb24pOwotfQotCi1ib29s
IGFwcGVuZEZpbGVDb250ZW50c1RvRmlsZUhhbmRsZShjb25zdCBTdHJpbmcmIHBhdGgsIFBsYXRm
b3JtRmlsZUhhbmRsZSYgdGFyZ2V0KQotewotICAgIGF1dG8gc291cmNlID0gb3BlbkZpbGUocGF0
aCwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKLQotICAgIGlmICghaXNIYW5kbGVWYWxpZChzb3VyY2Up
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBzdGF0aWMgaW50IGJ1ZmZlclNpemUgPSAx
IDw8IDE5OwotICAgIFZlY3RvcjxjaGFyPiBidWZmZXIoYnVmZmVyU2l6ZSk7Ci0KLSAgICBhdXRv
IGZpbGVDbG9zZXIgPSBXVEY6Om1ha2VTY29wZUV4aXQoW3NvdXJjZV0oKSB7Ci0gICAgICAgIFBs
YXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUgPSBzb3VyY2U7Ci0gICAgICAgIGNsb3NlRmlsZShoYW5k
bGUpOwotICAgIH0pOwotCi0gICAgZG8gewotICAgICAgICBpbnQgcmVhZEJ5dGVzID0gcmVhZEZy
b21GaWxlKHNvdXJjZSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyU2l6ZSk7Ci0gICAgICAgIAotICAg
ICAgICBpZiAocmVhZEJ5dGVzIDwgMCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
ICAgICBpZiAod3JpdGVUb0ZpbGUodGFyZ2V0LCBidWZmZXIuZGF0YSgpLCByZWFkQnl0ZXMpICE9
IHJlYWRCeXRlcykKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBpZiAocmVh
ZEJ5dGVzIDwgYnVmZmVyU2l6ZSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0gd2hp
bGUgKHRydWUpOwotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLSAgICAKLWJvb2wg
ZmlsZXNIYXZlU2FtZVZvbHVtZShjb25zdCBTdHJpbmcmIGZpbGVBLCBjb25zdCBTdHJpbmcmIGZp
bGVCKQotewotICAgIGF1dG8gZnNSZXBGaWxlQSA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihm
aWxlQSk7Ci0gICAgYXV0byBmc1JlcEZpbGVCID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZp
bGVCKTsKLSAgICAKLSAgICBpZiAoZnNSZXBGaWxlQS5pc051bGwoKSB8fCBmc1JlcEZpbGVCLmlz
TnVsbCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBib29sIHJlc3VsdCA9IGZhbHNl
OwotCi0gICAgYXV0byBmaWxlQURldiA9IGdldEZpbGVEZXZpY2VJZChmc1JlcEZpbGVBKTsKLSAg
ICBhdXRvIGZpbGVCRGV2ID0gZ2V0RmlsZURldmljZUlkKGZzUmVwRmlsZUIpOwotCi0gICAgaWYg
KGZpbGVBRGV2ICYmIGZpbGVCRGV2KQotICAgICAgICByZXN1bHQgPSAoZmlsZUFEZXYgPT0gZmls
ZUJEZXYpOwotICAgIAotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLSNpZiAhUExBVEZPUk0oTUFD
KQotCi12b2lkIHNldE1ldGFkYXRhVVJMKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYpCi17Ci19Ci0KLWJvb2wgY2FuRXhjbHVkZUZyb21CYWNrdXAoKQotewotICAg
IHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBleGNsdWRlRnJvbUJhY2t1cChjb25zdCBTdHJpbmcm
KQotewotICAgIHJldHVybiBmYWxzZTsKLX0KLQotI2VuZGlmCi0KLU1hcHBlZEZpbGVEYXRhOjp+
TWFwcGVkRmlsZURhdGEoKQotewotI2lmICFPUyhXSU5ET1dTKQotICAgIGlmICghbV9maWxlRGF0
YSkKLSAgICAgICAgcmV0dXJuOwotICAgIG11bm1hcChtX2ZpbGVEYXRhLCBtX2ZpbGVTaXplKTsK
LSNlbmRpZgotfQotCi1NYXBwZWRGaWxlRGF0YTo6TWFwcGVkRmlsZURhdGEoY29uc3QgU3RyaW5n
JiBmaWxlUGF0aCwgYm9vbCYgc3VjY2VzcykKLXsKLSNpZiBPUyhXSU5ET1dTKQotICAgIC8vIEZJ
WE1FOiBJbXBsZW1lbnQgbWFwcGluZwotICAgIHN1Y2Nlc3MgPSBmYWxzZTsKLSNlbHNlCi0gICAg
Q1N0cmluZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWxlUGF0aCk7Ci0gICAg
aW50IGZkID0gIWZzUmVwLmlzTnVsbCgpID8gb3Blbihmc1JlcC5kYXRhKCksIE9fUkRPTkxZKSA6
IC0xOwotICAgIGlmIChmZCA8IDApIHsKLSAgICAgICAgc3VjY2VzcyA9IGZhbHNlOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgc3RydWN0IHN0YXQgZmlsZVN0YXQ7Ci0gICAgaWYgKGZz
dGF0KGZkLCAmZmlsZVN0YXQpKSB7Ci0gICAgICAgIGNsb3NlKGZkKTsKLSAgICAgICAgc3VjY2Vz
cyA9IGZhbHNlOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgdW5zaWduZWQgc2l6ZTsK
LSAgICBpZiAoIVdURjo6Y29udmVydFNhZmVseShmaWxlU3RhdC5zdF9zaXplLCBzaXplKSkgewot
ICAgICAgICBjbG9zZShmZCk7Ci0gICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGlmICghc2l6ZSkgewotICAgICAgICBjbG9zZShmZCk7Ci0gICAg
ICAgIHN1Y2Nlc3MgPSB0cnVlOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgdm9pZCog
ZGF0YSA9IG1tYXAoMCwgc2l6ZSwgUFJPVF9SRUFELCBNQVBfRklMRSB8IE1BUF9TSEFSRUQsIGZk
LCAwKTsKLSAgICBjbG9zZShmZCk7Ci0KLSAgICBpZiAoZGF0YSA9PSBNQVBfRkFJTEVEKSB7Ci0g
ICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHN1
Y2Nlc3MgPSB0cnVlOwotICAgIG1fZmlsZURhdGEgPSBkYXRhOwotICAgIG1fZmlsZVNpemUgPSBz
aXplOwotI2VuZGlmCi19Ci0KLVBsYXRmb3JtRmlsZUhhbmRsZSBvcGVuQW5kTG9ja0ZpbGUoY29u
c3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUgb3Blbk1vZGUsIE9wdGlvblNldDxGaWxlTG9j
a01vZGU+IGxvY2tNb2RlKQotewotICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUocGF0aCwgb3Bl
bk1vZGUpOwotICAgIGlmIChoYW5kbGUgPT0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKLSAg
ICAgICAgcmV0dXJuIGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7Ci0KLSNpZiBVU0UoRklMRV9M
T0NLKQotICAgIGJvb2wgbG9ja2VkID0gbG9ja0ZpbGUoaGFuZGxlLCBsb2NrTW9kZSk7Ci0gICAg
QVNTRVJUX1VOVVNFRChsb2NrZWQsIGxvY2tlZCk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShs
b2NrTW9kZSk7Ci0jZW5kaWYKLQotICAgIHJldHVybiBoYW5kbGU7Ci19Ci0KLXZvaWQgdW5sb2Nr
QW5kQ2xvc2VGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUpCi17Ci0jaWYgVVNFKEZJTEVf
TE9DSykKLSAgICBib29sIHVubG9ja2VkID0gdW5sb2NrRmlsZShoYW5kbGUpOwotICAgIEFTU0VS
VF9VTlVTRUQodW5sb2NrZWQsIHVubG9ja2VkKTsKLSNlbmRpZgotICAgIGNsb3NlRmlsZShoYW5k
bGUpOwotfQotCi1ib29sIGZpbGVJc0RpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIFNob3Vs
ZEZvbGxvd1N5bWJvbGljTGlua3Mgc2hvdWxkRm9sbG93U3ltYm9saWNMaW5rcykKLXsKLSAgICBh
dXRvIG1ldGFkYXRhID0gc2hvdWxkRm9sbG93U3ltYm9saWNMaW5rcyA9PSBTaG91bGRGb2xsb3dT
eW1ib2xpY0xpbmtzOjpZZXMgPyBmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyhwYXRoKSA6
IGZpbGVNZXRhZGF0YShwYXRoKTsKLSAgICBpZiAoIW1ldGFkYXRhKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgcmV0dXJuIG1ldGFkYXRhLnZhbHVlKCkudHlwZSA9PSBGaWxlTWV0YWRhdGE6
OlR5cGU6OkRpcmVjdG9yeTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgRmlsZVN5c3RlbQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmls
ZVN5c3RlbS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzY2ViY2FhMDUzOWI1OWQ5M2U3MmUwOTg0MGIyM2IxZGFj
NjM4MTFiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaAorKysgL2Rldi9udWxsCkBAIC0xLDIy
NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSwgTHRkLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAotICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAotICogMy4gIE5laXRoZXIgdGhl
IG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0
cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uIAotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSA8dGltZS5oPgotI2luY2x1ZGUgPHV0
aWxpdHk+Ci0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0
Lmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgot
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi0jaWYgVVNFKENGKQotI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KLSNlbmRpZgotCi0jaWYgVVNFKENGKQotdHlwZWRlZiBjb25zdCBz
dHJ1Y3QgX19DRkRhdGEqIENGRGF0YVJlZjsKLSNlbmRpZgotCi1PQkpDX0NMQVNTIE5TU3RyaW5n
OwotCi0jaWYgUExBVEZPUk0oV0lOKQotdHlwZWRlZiB2b2lkICpIQU5ETEU7Ci0jZW5kaWYKLQot
I2lmIFVTRShHTElCKQotdHlwZWRlZiBzdHJ1Y3QgX0dGaWxlSU9TdHJlYW0gR0ZpbGVJT1N0cmVh
bTsKLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBGaWxlTWV0YWRhdGE7
Ci0KLW5hbWVzcGFjZSBGaWxlU3lzdGVtIHsKLQotLy8gUGxhdGZvcm1GaWxlSGFuZGxlCi0jaWYg
VVNFKEdMSUIpICYmICFQTEFURk9STShXSU4pCi10eXBlZGVmIEdGaWxlSU9TdHJlYW0qIFBsYXRm
b3JtRmlsZUhhbmRsZTsKLWNvbnN0IFBsYXRmb3JtRmlsZUhhbmRsZSBpbnZhbGlkUGxhdGZvcm1G
aWxlSGFuZGxlID0gMDsKLSNlbGlmIFBMQVRGT1JNKFdJTikKLXR5cGVkZWYgSEFORExFIFBsYXRm
b3JtRmlsZUhhbmRsZTsKLS8vIEZJWE1FOiAtMSBpcyBJTlZBTElEX0hBTkRMRV9WQUxVRSwgZGVm
aW5lZCBpbiA8d2luYmFzZS5oPi4gQ2hyb21pdW0gdHJpZXMgdG8KLS8vIGF2b2lkIHVzaW5nIFdp
bmRvd3MgaGVhZGVycyBpbiBoZWFkZXJzLiAgV2UnZCByYXRoZXIgbW92ZSB0aGlzIGludG8gdGhl
IC5jcHAuCi1jb25zdCBQbGF0Zm9ybUZpbGVIYW5kbGUgaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRs
ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8SEFORExFPigtMSk7Ci0jZWxzZQotdHlwZWRlZiBpbnQgUGxh
dGZvcm1GaWxlSGFuZGxlOwotY29uc3QgUGxhdGZvcm1GaWxlSGFuZGxlIGludmFsaWRQbGF0Zm9y
bUZpbGVIYW5kbGUgPSAtMTsKLSNlbmRpZgotCi1lbnVtIGNsYXNzIEZpbGVPcGVuTW9kZSB7Ci0g
ICAgUmVhZCwKLSAgICBXcml0ZSwKLSNpZiBPUyhEQVJXSU4pCi0gICAgRXZlbnRzT25seSwKLSNl
bmRpZgotfTsKLQotZW51bSBjbGFzcyBGaWxlU2Vla09yaWdpbiB7Ci0gICAgQmVnaW5uaW5nLAot
ICAgIEN1cnJlbnQsCi0gICAgRW5kLAotfTsKLQotZW51bSBjbGFzcyBGaWxlTG9ja01vZGUgewot
ICAgIFNoYXJlZCA9IDEgPDwgMCwKLSAgICBFeGNsdXNpdmUgPSAxIDw8IDEsCi0gICAgTm9uYmxv
Y2tpbmcgPSAxIDw8IDIsCi19OwotCi1lbnVtIGNsYXNzIFNob3VsZEZvbGxvd1N5bWJvbGljTGlu
a3MgeyBObywgWWVzIH07Ci0KLVdFQkNPUkVfRVhQT1JUIGJvb2wgZmlsZUV4aXN0cyhjb25zdCBT
dHJpbmcmKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgZGVsZXRlRmlsZShjb25zdCBTdHJpbmcmKTsK
LVdFQkNPUkVfRVhQT1JUIGJvb2wgZGVsZXRlRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7
Ci1XRUJDT1JFX0VYUE9SVCBib29sIG1vdmVGaWxlKGNvbnN0IFN0cmluZyYgb2xkUGF0aCwgY29u
c3QgU3RyaW5nJiBuZXdQYXRoKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgZ2V0RmlsZVNpemUoY29u
c3QgU3RyaW5nJiwgbG9uZyBsb25nJiByZXN1bHQpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCBnZXRG
aWxlU2l6ZShQbGF0Zm9ybUZpbGVIYW5kbGUsIGxvbmcgbG9uZyYgcmVzdWx0KTsKLVdFQkNPUkVf
RVhQT1JUIE9wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBT
dHJpbmcmKTsKLVdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlQ3JlYXRp
b25UaW1lKGNvbnN0IFN0cmluZyYpOyAvLyBOb3QgYWxsIHBsYXRmb3JtcyBzdG9yZSBmaWxlIGNy
ZWF0aW9uIHRpbWUuCi1XRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVN
ZXRhZGF0YShjb25zdCBTdHJpbmcmIHBhdGgpOwotV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8Rmls
ZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyhjb25zdCBTdHJpbmcmIHBh
dGgpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCBmaWxlSXNEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiwg
U2hvdWxkRm9sbG93U3ltYm9saWNMaW5rcyk7Ci1XRUJDT1JFX0VYUE9SVCBTdHJpbmcgcGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb21w
b25lbnQpOwotU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMoU3RyaW5nVmlldyBwYXRo
LCBjb25zdCBWZWN0b3I8U3RyaW5nVmlldz4mIGNvbXBvbmVudHMpOwotU3RyaW5nIGxhc3RDb21w
b25lbnRPZlBhdGhJZ25vcmluZ1RyYWlsaW5nU2xhc2goY29uc3QgU3RyaW5nJiBwYXRoKTsKLVdF
QkNPUkVfRVhQT1JUIGJvb2wgbWFrZUFsbERpcmVjdG9yaWVzKGNvbnN0IFN0cmluZyYgcGF0aCk7
Ci1TdHJpbmcgaG9tZURpcmVjdG9yeVBhdGgoKTsKLVdFQkNPUkVfRVhQT1JUIFN0cmluZyBwYXRo
R2V0RmlsZU5hbWUoY29uc3QgU3RyaW5nJik7Ci1XRUJDT1JFX0VYUE9SVCBTdHJpbmcgZGlyZWN0
b3J5TmFtZShjb25zdCBTdHJpbmcmKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgZ2V0Vm9sdW1lRnJl
ZVNwYWNlKGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90Jik7Ci1XRUJDT1JFX0VYUE9SVCBPcHRpb25h
bDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29uc3QgQ1N0cmluZyYpOwotV0VCQ09SRV9FWFBP
UlQgYm9vbCBjcmVhdGVTeW1ib2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25z
dCBTdHJpbmcmIHN5bWJvbGljTGlua1BhdGgpOwotCi1XRUJDT1JFX0VYUE9SVCB2b2lkIHNldE1l
dGFkYXRhVVJMKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNv
bnN0IFN0cmluZyYgcmVmZXJyZXIgPSB7IH0pOwotCi1ib29sIGNhbkV4Y2x1ZGVGcm9tQmFja3Vw
KCk7IC8vIFJldHVybnMgdHJ1ZSBpZiBhbnkgZmlsZSBjYW4gZXZlciBiZSBleGNsdWRlZCBmcm9t
IGJhY2t1cC4KLWJvb2wgZXhjbHVkZUZyb21CYWNrdXAoY29uc3QgU3RyaW5nJik7IC8vIFJldHVy
bnMgdHJ1ZSBpZiBzdWNjZXNzZnVsLgotCi1XRUJDT1JFX0VYUE9SVCBWZWN0b3I8U3RyaW5nPiBs
aXN0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBmaWx0ZXIgPSBT
dHJpbmcoKSk7Ci0KLVdFQkNPUkVfRVhQT1JUIENTdHJpbmcgZmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKGNvbnN0IFN0cmluZyYpOwotU3RyaW5nIHN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oY29uc3QgY2hhciopOwotCi1pbmxpbmUgYm9vbCBpc0hhbmRsZVZhbGlkKGNvbnN0IFBs
YXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKSB7IHJldHVybiBoYW5kbGUgIT0gaW52YWxpZFBsYXRm
b3JtRmlsZUhhbmRsZTsgfQotCi0vLyBQcmVmaXggaXMgd2hhdCB0aGUgZmlsZW5hbWUgc2hvdWxk
IGJlIHByZWZpeGVkIHdpdGgsIG5vdCB0aGUgZnVsbCBwYXRoLgotV0VCQ09SRV9FWFBPUlQgU3Ry
aW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVI
YW5kbGUmKTsKLVdFQkNPUkVfRVhQT1JUIFBsYXRmb3JtRmlsZUhhbmRsZSBvcGVuRmlsZShjb25z
dCBTdHJpbmcmIHBhdGgsIEZpbGVPcGVuTW9kZSk7Ci1XRUJDT1JFX0VYUE9SVCB2b2lkIGNsb3Nl
RmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUmKTsKLS8vIFJldHVybnMgdGhlIHJlc3VsdGluZyBvZmZz
ZXQgZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaWxlIGlmIHN1Y2Nlc3NmdWwsIC0xIG90aGVy
d2lzZS4KLVdFQkNPUkVfRVhQT1JUIGxvbmcgbG9uZyBzZWVrRmlsZShQbGF0Zm9ybUZpbGVIYW5k
bGUsIGxvbmcgbG9uZyBvZmZzZXQsIEZpbGVTZWVrT3JpZ2luKTsKLWJvb2wgdHJ1bmNhdGVGaWxl
KFBsYXRmb3JtRmlsZUhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCk7Ci0vLyBSZXR1cm5zIG51bWJl
ciBvZiBieXRlcyBhY3R1YWxseSByZWFkIGlmIHN1Y2Nlc3NmdWwsIC0xIG90aGVyd2lzZS4KLVdF
QkNPUkVfRVhQT1JUIGludCB3cml0ZVRvRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUsIGNvbnN0IGNo
YXIqIGRhdGEsIGludCBsZW5ndGgpOwotLy8gUmV0dXJucyBudW1iZXIgb2YgYnl0ZXMgYWN0dWFs
bHkgd3JpdHRlbiBpZiBzdWNjZXNzZnVsLCAtMSBvdGhlcndpc2UuCi1XRUJDT1JFX0VYUE9SVCBp
bnQgcmVhZEZyb21GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgY2hhciogZGF0YSwgaW50IGxlbmd0
aCk7Ci0KLVdFQkNPUkVfRVhQT1JUIFBsYXRmb3JtRmlsZUhhbmRsZSBvcGVuQW5kTG9ja0ZpbGUo
Y29uc3QgU3RyaW5nJiwgRmlsZU9wZW5Nb2RlLCBPcHRpb25TZXQ8RmlsZUxvY2tNb2RlPiA9IEZp
bGVMb2NrTW9kZTo6RXhjbHVzaXZlKTsKLVdFQkNPUkVfRVhQT1JUIHZvaWQgdW5sb2NrQW5kQ2xv
c2VGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSk7Ci0KLS8vIEFwcGVuZHMgdGhlIGNvbnRlbnRzIG9m
IHRoZSBmaWxlIGZvdW5kIGF0ICdwYXRoJyB0byB0aGUgb3BlbiBQbGF0Zm9ybUZpbGVIYW5kbGUu
Ci0vLyBSZXR1cm5zIHRydWUgaWYgdGhlIHdyaXRlIHdhcyBzdWNjZXNzZnVsLCBmYWxzZSBpZiBp
dCB3YXMgbm90LgotYm9vbCBhcHBlbmRGaWxlQ29udGVudHNUb0ZpbGVIYW5kbGUoY29uc3QgU3Ry
aW5nJiBwYXRoLCBQbGF0Zm9ybUZpbGVIYW5kbGUmKTsKLQotLy8gSGFyZCBsaW5rcyBhIGZpbGUg
aWYgcG9zc2libGUsIGNvcGllcyBpdCBpZiBub3QuCi1ib29sIGhhcmRMaW5rT3JDb3B5RmlsZShj
b25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbik7Ci0KLSNpZiBV
U0UoRklMRV9MT0NLKQotV0VCQ09SRV9FWFBPUlQgYm9vbCBsb2NrRmlsZShQbGF0Zm9ybUZpbGVI
YW5kbGUsIE9wdGlvblNldDxGaWxlTG9ja01vZGU+KTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgdW5s
b2NrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUpOwotI2VuZGlmCi0KLS8vIEVuY29kZSBhIHN0cmlu
ZyBmb3IgdXNlIHdpdGhpbiBhIGZpbGUgbmFtZS4KLVdFQkNPUkVfRVhQT1JUIFN0cmluZyBlbmNv
ZGVGb3JGaWxlTmFtZShjb25zdCBTdHJpbmcmKTsKLVdFQkNPUkVfRVhQT1JUIFN0cmluZyBkZWNv
ZGVGcm9tRmlsZW5hbWUoY29uc3QgU3RyaW5nJik7Ci0KLVdFQkNPUkVfRVhQT1JUIGJvb2wgZmls
ZXNIYXZlU2FtZVZvbHVtZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKLQotI2lmIFVT
RShDRikKLVJldGFpblB0cjxDRlVSTFJlZj4gcGF0aEFzVVJMKGNvbnN0IFN0cmluZyYpOwotI2Vu
ZGlmCi0KLSNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKLVN0cmluZyBmaWxlbmFt
ZUZvckRpc3BsYXkoY29uc3QgU3RyaW5nJik7Ci0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKFdJTikK
LVdFQkNPUkVfRVhQT1JUIFN0cmluZyBsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3Rvcnko
KTsKLVN0cmluZyByb2FtaW5nVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpOwotI2VuZGlm
Ci0KLSNpZiBQTEFURk9STShDT0NPQSkKLVdFQkNPUkVfRVhQT1JUIE5TU3RyaW5nICpjcmVhdGVU
ZW1wb3JhcnlEaXJlY3RvcnkoTlNTdHJpbmcgKmRpcmVjdG9yeVByZWZpeCk7Ci1XRUJDT1JFX0VY
UE9SVCBib29sIGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpOwotI2VuZGlm
Ci0KLSNpZiBQTEFURk9STShXSU5fQ0FJUk8pCi1XRUJDT1JFX0VYUE9SVCBTdHJpbmcgY3JlYXRl
VGVtcG9yYXJ5RGlyZWN0b3J5KCk7Ci1XRUJDT1JFX0VYUE9SVCBib29sIGRlbGV0ZU5vbkVtcHR5
RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpOwotI2VuZGlmCi0KLVdFQkNPUkVfRVhQT1JUIFN0cmlu
ZyByZWFsUGF0aChjb25zdCBTdHJpbmcmKTsKLQotY2xhc3MgTWFwcGVkRmlsZURhdGEgewotcHVi
bGljOgotICAgIE1hcHBlZEZpbGVEYXRhKCkgeyB9Ci0gICAgTWFwcGVkRmlsZURhdGEoTWFwcGVk
RmlsZURhdGEmJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgTWFwcGVkRmlsZURhdGEoY29uc3QgU3Ry
aW5nJiBmaWxlUGF0aCwgYm9vbCYgc3VjY2Vzcyk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgfk1hcHBl
ZEZpbGVEYXRhKCk7Ci0gICAgTWFwcGVkRmlsZURhdGEmIG9wZXJhdG9yPShNYXBwZWRGaWxlRGF0
YSYmKTsKLQotICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhIW1f
ZmlsZURhdGE7IH0KLSAgICBjb25zdCB2b2lkKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9maWxl
RGF0YTsgfQotICAgIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX2ZpbGVTaXplOyB9
Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCogbV9maWxlRGF0YSB7IG51bGxwdHIgfTsKLSAgICB1bnNp
Z25lZCBtX2ZpbGVTaXplIHsgMCB9OwotfTsKLQotaW5saW5lIE1hcHBlZEZpbGVEYXRhOjpNYXBw
ZWRGaWxlRGF0YShNYXBwZWRGaWxlRGF0YSYmIG90aGVyKQotICAgIDogbV9maWxlRGF0YShzdGQ6
OmV4Y2hhbmdlKG90aGVyLm1fZmlsZURhdGEsIG51bGxwdHIpKQotICAgICwgbV9maWxlU2l6ZShz
dGQ6OmV4Y2hhbmdlKG90aGVyLm1fZmlsZVNpemUsIDApKQotewotfQotCi1pbmxpbmUgTWFwcGVk
RmlsZURhdGEmIE1hcHBlZEZpbGVEYXRhOjpvcGVyYXRvcj0oTWFwcGVkRmlsZURhdGEmJiBvdGhl
cikKLXsKLSAgICBtX2ZpbGVEYXRhID0gc3RkOjpleGNoYW5nZShvdGhlci5tX2ZpbGVEYXRhLCBu
dWxscHRyKTsKLSAgICBtX2ZpbGVTaXplID0gc3RkOjpleGNoYW5nZShvdGhlci5tX2ZpbGVTaXpl
LCAwKTsKLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEZpbGVTeXN0ZW0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZm
ZXIuaAppbmRleCA4MTMxOGU4YjI5YWU1YTBmNWI5NjAzYzgyNTU3OTFjZGJjMjBhNGUxLi5lYzM3
MTM0MWFiOTQ5NWI3ZDM1NzYxMzUxYjJiMDliMTM1YTNlZjNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TaGFyZWRCdWZmZXIuaApAQCAtMjYsOCArMjYsOCBAQAogCiAjcHJhZ21hIG9uY2UKIAot
I2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BcnJheUJ1
ZmZlci5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRT
YWZlUmVmQ291bnRlZC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU291
cmNlc0dMaWIudHh0IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU291cmNlc0dMaWIudHh0Cmlu
ZGV4IDI3NzNjMmEwODhiNjBmYjEzOTY5MmQ1ZjQwZDBiZWZjM2ZlYzNjYzQuLjA5MGI4NGE0OGMx
MDNkM2Q1OTMxNDFkOTBlMmJiYjRhYmYyYzViYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1NvdXJjZXNHTGliLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
b3VyY2VzR0xpYi50eHQKQEAgLTI1LDcgKzI1LDYgQEAgcGxhdGZvcm0vYXVkaW8vZ2xpYi9BdWRp
b0J1c0dMaWIuY3BwCiAKIHBsYXRmb3JtL2dsaWIvRXZlbnRMb29wR2xpYi5jcHAKIHBsYXRmb3Jt
L2dsaWIvRmlsZU1vbml0b3JHTGliLmNwcAotcGxhdGZvcm0vZ2xpYi9GaWxlU3lzdGVtR2xpYi5j
cHAKIHBsYXRmb3JtL2dsaWIvS2V5ZWREZWNvZGVyR2xpYi5jcHAKIHBsYXRmb3JtL2dsaWIvS2V5
ZWRFbmNvZGVyR2xpYi5jcHAKIHBsYXRmb3JtL2dsaWIvTG93UG93ZXJNb2RlTm90aWZpZXJHTGli
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvRmlsZVN5c3RlbUNG
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0ZpbGVTeXN0ZW1DRi5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA4NDcwYTA4ZmE1ZDJmNDUyZTZjOTM4NzAxYzZkOTI2
Y2E2MDlmMDMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvRmlsZVN5c3RlbUNGLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDc0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMTEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRo
ZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICog
ICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0u
aCIKLQotI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1DU3RyaW5nIEZp
bGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIHBhdGgpCi17
Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZlN0cmluZyA9IHBhdGguY3JlYXRlQ0ZTdHJp
bmcoKTsKLQotICAgIGlmICghY2ZTdHJpbmcpCi0gICAgICAgIHJldHVybiBDU3RyaW5nKCk7Ci0K
LSAgICBDRkluZGV4IHNpemUgPSBDRlN0cmluZ0dldE1heGltdW1TaXplT2ZGaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oY2ZTdHJpbmcuZ2V0KCkpOwotCi0gICAgVmVjdG9yPGNoYXI+IGJ1ZmZlcihz
aXplKTsKLQotICAgIGlmICghQ0ZTdHJpbmdHZXRGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY2ZT
dHJpbmcuZ2V0KCksIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpKSB7Ci0gICAgICAgIExP
R19FUlJPUigiRmFpbGVkIHRvIGdldCBmaWxlc3lzdGVtIHJlcHJlc2VudGF0aW9uIHRvIGNyZWF0
ZSBDU3RyaW5nIGZyb20gY2ZTdHJpbmciKTsKLSAgICAgICAgcmV0dXJuIENTdHJpbmcoKTsKLSAg
ICB9Ci0KLSAgICByZXR1cm4gQ1N0cmluZyhidWZmZXIuZGF0YSgpLCBzdHJsZW4oYnVmZmVyLmRh
dGEoKSkpOwotfQotCi1TdHJpbmcgRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihjb25zdCBjaGFyKiBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24pCi17Ci0gICAg
cmV0dXJuIGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KGtDRkFsbG9jYXRvckRlZmF1bHQsIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbikpLmdldCgpOwot
fQotCi1SZXRhaW5QdHI8Q0ZVUkxSZWY+IEZpbGVTeXN0ZW06OnBhdGhBc1VSTChjb25zdCBTdHJp
bmcmIHBhdGgpCi17Ci0gICAgQ0ZVUkxQYXRoU3R5bGUgcGF0aFN0eWxlOwotI2lmIFBMQVRGT1JN
KFdJTikKLSAgICBwYXRoU3R5bGUgPSBrQ0ZVUkxXaW5kb3dzUGF0aFN0eWxlOwotI2Vsc2UKLSAg
ICBwYXRoU3R5bGUgPSBrQ0ZVUkxQT1NJWFBhdGhTdHlsZTsKLSNlbmRpZgotICAgIHJldHVybiBh
ZG9wdENGKENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKDAsIHBhdGguY3JlYXRlQ0ZTdHJp
bmcoKS5nZXQoKSwgcGF0aFN0eWxlLCBGQUxTRSkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9GaWxlTW9uaXRv
ckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRmlsZU1vbml0b3JDb2Nv
YS5tbQppbmRleCAxYWIzYzMzNGM2OWRmZmEzNjQ4YWIwMGE0NTU4ZDlmMjdlNDMwNjAwLi5jYzdm
ZTZiNmNkZTEwZWQ0Y2E0NTZlNDZiZTI4YTA0ZjY4NzI0NzRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9GaWxlTW9uaXRvckNvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL0ZpbGVNb25pdG9yQ29jb2EubW0KQEAgLTI2LDkgKzI2LDkg
QEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiRmlsZU1vbml0b3IuaCIKIAotI2ltcG9y
dCAiRmlsZVN5c3RlbS5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCA8d3RmL0Jsb2Nr
UHRyLmg+CisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9GaWxlU3lz
dGVtQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9GaWxlU3lzdGVtQ29j
b2EubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzOGIwYzgzMDNlN2JhMTBkNDA1
MzNjYmNkMTVkYTMzYjA5NjllM2MuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRmlsZVN5c3RlbUNvY29h
Lm1tCisrKyAvZGV2L251bGwKQEAgLTEsMTQzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDctMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLiAKLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLiAKLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5v
ciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNp
bXBvcnQgIkZpbGVTeXN0ZW0uaCIKLQotQGludGVyZmFjZSBXZWJGaWxlTWFuYWdlckRlbGVnYXRl
IDogTlNPYmplY3QgPE5TRmlsZU1hbmFnZXJEZWxlZ2F0ZT4KLUBlbmQKLQotQGltcGxlbWVudGF0
aW9uIFdlYkZpbGVNYW5hZ2VyRGVsZWdhdGUKLQotLSAoQk9PTClmaWxlTWFuYWdlcjooTlNGaWxl
TWFuYWdlciAqKWZpbGVNYW5hZ2VyIHNob3VsZFByb2NlZWRBZnRlckVycm9yOihOU0Vycm9yICop
ZXJyb3IgbW92aW5nSXRlbUF0VVJMOihOU1VSTCAqKXNyY1VSTCB0b1VSTDooTlNVUkwgKilkc3RV
UkwKLXsKLSAgICBVTlVTRURfUEFSQU0oZmlsZU1hbmFnZXIpOwotICAgIFVOVVNFRF9QQVJBTShz
cmNVUkwpOwotICAgIFVOVVNFRF9QQVJBTShkc3RVUkwpOyAgICAKLSAgICByZXR1cm4gZXJyb3Iu
Y29kZSA9PSBOU0ZpbGVXcml0ZUZpbGVFeGlzdHNFcnJvcjsKLX0KLQotQGVuZAotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBGaWxlU3lzdGVtIHsKLQotU3RyaW5nIGhvbWVEaXJl
Y3RvcnlQYXRoKCkKLXsKLSAgICByZXR1cm4gTlNIb21lRGlyZWN0b3J5KCk7Ci19Ci0KLVN0cmlu
ZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFu
ZGxlJiBwbGF0Zm9ybUZpbGVIYW5kbGUpCi17Ci0gICAgcGxhdGZvcm1GaWxlSGFuZGxlID0gaW52
YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKLSAgICAKLSAgICBWZWN0b3I8Y2hhcj4gdGVtcG9yYXJ5
RmlsZVBhdGgoUEFUSF9NQVgpOwotICAgIGlmICghY29uZnN0cihfQ1NfREFSV0lOX1VTRVJfVEVN
UF9ESVIsIHRlbXBvcmFyeUZpbGVQYXRoLmRhdGEoKSwgdGVtcG9yYXJ5RmlsZVBhdGguc2l6ZSgp
KSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgLy8gU2hyaW5rIHRoZSB2ZWN0b3Iu
ICAgCi0gICAgdGVtcG9yYXJ5RmlsZVBhdGguc2hyaW5rKHN0cmxlbih0ZW1wb3JhcnlGaWxlUGF0
aC5kYXRhKCkpKTsKLQotICAgIC8vIEZJWE1FOiBDaGFuZ2UgdG8gYSBydW50aW1lIGFzc2VydGlv
biB0aGF0IHRoZSBwYXRoIGVuZHMgd2l0aCBhIHNsYXNoIG9uY2UgPHJkYXI6Ly9wcm9ibGVtLzIz
NTc5MDc3PiBpcwotICAgIC8vIGZpeGVkIGluIGFsbCBpT1MgU2ltdWxhdG9yIHZlcnNpb25zIHRo
YXQgd2UgdXNlLgotICAgIGlmICh0ZW1wb3JhcnlGaWxlUGF0aC5sYXN0KCkgIT0gJy8nKQotICAg
ICAgICB0ZW1wb3JhcnlGaWxlUGF0aC5hcHBlbmQoJy8nKTsKLQotICAgIC8vIEFwcGVuZCB0aGUg
ZmlsZSBuYW1lLgotICAgIENTdHJpbmcgcHJlZml4VXRmOCA9IHByZWZpeC51dGY4KCk7Ci0gICAg
dGVtcG9yYXJ5RmlsZVBhdGguYXBwZW5kKHByZWZpeFV0ZjguZGF0YSgpLCBwcmVmaXhVdGY4Lmxl
bmd0aCgpKTsKLSAgICB0ZW1wb3JhcnlGaWxlUGF0aC5hcHBlbmQoIlhYWFhYWCIsIDYpOwotICAg
IHRlbXBvcmFyeUZpbGVQYXRoLmFwcGVuZCgnXDAnKTsKLQotICAgIHBsYXRmb3JtRmlsZUhhbmRs
ZSA9IG1rc3RlbXAodGVtcG9yYXJ5RmlsZVBhdGguZGF0YSgpKTsKLSAgICBpZiAocGxhdGZvcm1G
aWxlSGFuZGxlID09IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCi0gICAgICAgIHJldHVybiBT
dHJpbmcoKTsKLQotICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KHRlbXBvcmFyeUZpbGVQYXRo
LmRhdGEoKSk7Ci19Ci0KLWJvb2wgbW92ZUZpbGUoY29uc3QgU3RyaW5nJiBvbGRQYXRoLCBjb25z
dCBTdHJpbmcmIG5ld1BhdGgpCi17Ci0gICAgLy8gT3ZlcndyaXRlIGV4aXN0aW5nIGZpbGVzLgot
ICAgIGF1dG8gbWFuYWdlciA9IGFkb3B0TlMoW1tOU0ZpbGVNYW5hZ2VyIGFsbG9jXSBpbml0XSk7
Ci0gICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tXZWJGaWxlTWFuYWdlckRlbGVnYXRlIGFs
bG9jXSBpbml0XSk7Ci0gICAgW21hbmFnZXIgc2V0RGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwot
ICAgIAotICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOwotICAgIGJvb2wgc3VjY2VzcyA9IFttYW5h
Z2VyIG1vdmVJdGVtQXRVUkw6W05TVVJMIGZpbGVVUkxXaXRoUGF0aDpvbGRQYXRoXSB0b1VSTDpb
TlNVUkwgZmlsZVVSTFdpdGhQYXRoOm5ld1BhdGhdIGVycm9yOiZlcnJvcl07Ci0gICAgaWYgKCFz
dWNjZXNzKQotICAgICAgICBOU0xvZyhAIkVycm9yIGluIG1vdmVGaWxlOiAlQCIsIGVycm9yKTsK
LSAgICByZXR1cm4gc3VjY2VzczsKLX0KLQotYm9vbCBnZXRWb2x1bWVGcmVlU3BhY2UoY29uc3Qg
U3RyaW5nJiBwYXRoLCB1aW50NjRfdCYgZnJlZVNwYWNlKQotewotICAgIE5TRGljdGlvbmFyeSAq
ZmlsZVN5c3RlbUF0dHJpYnV0ZXNEaWN0aW9uYXJ5ID0gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRN
YW5hZ2VyXSBhdHRyaWJ1dGVzT2ZGaWxlU3lzdGVtRm9yUGF0aDooTlNTdHJpbmcgKilwYXRoIGVy
cm9yOk5VTExdOwotICAgIGlmICghZmlsZVN5c3RlbUF0dHJpYnV0ZXNEaWN0aW9uYXJ5KQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgZnJlZVNwYWNlID0gW1tmaWxlU3lzdGVtQXR0cmlidXRl
c0RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5Ok5TRmlsZVN5c3RlbUZyZWVTaXplXSB1bnNpZ25lZExv
bmdMb25nVmFsdWVdOwotICAgIHJldHVybiB0cnVlOwotfQotCi1OU1N0cmluZyAqY3JlYXRlVGVt
cG9yYXJ5RGlyZWN0b3J5KE5TU3RyaW5nICpkaXJlY3RvcnlQcmVmaXgpCi17Ci0gICAgTlNTdHJp
bmcgKnRlbXBEaXJlY3RvcnkgPSBOU1RlbXBvcmFyeURpcmVjdG9yeSgpOwotICAgIGlmICghdGVt
cERpcmVjdG9yeSB8fCAhW3RlbXBEaXJlY3RvcnkgbGVuZ3RoXSkKLSAgICAgICAgcmV0dXJuIG5p
bDsKLQotICAgIGlmICghZGlyZWN0b3J5UHJlZml4IHx8ICFbZGlyZWN0b3J5UHJlZml4IGxlbmd0
aF0pCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBOU1N0cmluZyAqdGVtcERpcmVjdG9yeUNv
bXBvbmVudCA9IFtkaXJlY3RvcnlQcmVmaXggc3RyaW5nQnlBcHBlbmRpbmdTdHJpbmc6QCItWFhY
WFhYWFgiXTsKLSAgICBjb25zdCBjaGFyKiB0ZW1wRGlyZWN0b3J5Q1N0cmluZyA9IFtbdGVtcERp
cmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6dGVtcERpcmVjdG9yeUNvbXBv
bmVudF0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uXTsKLSAgICBpZiAoIXRlbXBEaXJlY3RvcnlD
U3RyaW5nKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgY29uc3Qgc2l6ZV90IGxlbmd0aCA9
IHN0cmxlbih0ZW1wRGlyZWN0b3J5Q1N0cmluZyk7Ci0gICAgQVNTRVJUKGxlbmd0aCA8PSBNQVhQ
QVRITEVOKTsKLSAgICBpZiAobGVuZ3RoID4gTUFYUEFUSExFTikKLSAgICAgICAgcmV0dXJuIG5p
bDsKLQotICAgIGNvbnN0IHNpemVfdCBsZW5ndGhQbHVzTnVsbFRlcm1pbmF0b3IgPSBsZW5ndGgg
KyAxOwotICAgIFZlY3RvcjxjaGFyLCBNQVhQQVRITEVOICsgMT4gcGF0aChsZW5ndGhQbHVzTnVs
bFRlcm1pbmF0b3IpOwotICAgIG1lbWNweShwYXRoLmRhdGEoKSwgdGVtcERpcmVjdG9yeUNTdHJp
bmcsIGxlbmd0aFBsdXNOdWxsVGVybWluYXRvcik7Ci0KLSAgICBpZiAoIW1rZHRlbXAocGF0aC5k
YXRhKCkpKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgcmV0dXJuIFtbTlNGaWxlTWFuYWdl
ciBkZWZhdWx0TWFuYWdlcl0gc3RyaW5nV2l0aEZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbjpwYXRo
LmRhdGEoKSBsZW5ndGg6bGVuZ3RoXTsKLX0KLQotYm9vbCBkZWxldGVOb25FbXB0eURpcmVjdG9y
eShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgcmV0dXJuIFtbTlNGaWxlTWFuYWdlciBkZWZh
dWx0TWFuYWdlcl0gcmVtb3ZlSXRlbUF0UGF0aDpwYXRoIGVycm9yOm5pbF07Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIEZpbGVTeXN0ZW0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvRmlsZU1vbml0b3JHTGliLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvRmlsZU1vbml0b3JHTGliLmNwcAppbmRleCA0NjNmMzI3
NmMyNGUyNTFiZWI0YWEwOGIwYjk4OTg2ZThjYzk2OTIzLi41YTk4MmY0OTQ5MjM3Y2IyMGE5ZjU0
Y2Y4OGUyYWRlZTQ4ZDRmOTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
bGliL0ZpbGVNb25pdG9yR0xpYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xp
Yi9GaWxlTW9uaXRvckdMaWIuY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiRmlsZU1vbml0b3IuaCIKIAotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIK
KyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvdGhyZWFkcy9CaW5hcnlTZW1hcGhvcmUuaD4KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggY2E2YzNkZjk0ZGQzMjIxMzQzMDBjN2JiZDI2YmJiMDg5MDQ2
NTYzMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDQ3MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA5IEhvbGdl
ciBIYW5zIFBldGVyIEZyZXl0aGVyCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhLCBM
dGQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDEwIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRmls
ZVN5c3RlbS5oIgotCi0jaW5jbHVkZSAiRmlsZU1ldGFkYXRhLmgiCi0jaW5jbHVkZSAiTm90SW1w
bGVtZW50ZWQuaCIKLSNpbmNsdWRlIDxnaW8vZ2ZpbGVkZXNjcmlwdG9yYmFzZWQuaD4KLSNpbmNs
dWRlIDxnaW8vZ2lvLmg+Ci0jaW5jbHVkZSA8Z2xpYi5oPgotI2luY2x1ZGUgPGdsaWIvZ3N0ZGlv
Lmg+Ci0jaW5jbHVkZSA8c3lzL2ZpbGUuaD4KLSNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgot
I2luY2x1ZGUgPHd0Zi9VVUlELmg+Ci0jaW5jbHVkZSA8d3RmL2dsaWIvR0xpYlV0aWxpdGllcy5o
PgotI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5p
cXVlUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0J1aWxkZXIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgRmlsZVN5c3RlbSB7Ci0KLS8qIE9uIGxp
bnV4IGZpbGUgbmFtZXMgYXJlIGp1c3QgcmF3IGJ5dGVzLCBzbyBhbHNvIHN0cmluZ3MgdGhhdCBj
YW5ub3QgYmUgZW5jb2RlZCBpbiBhbnkgd2F5Ci0gKiBhcmUgdmFsaWQgZmlsZSBuYW1lcy4gVGhp
cyBtZWFuIHRoYXQgd2UgY2Fubm90IGp1c3Qgc3RvcmUgYSBmaWxlIG5hbWUgYXMtaXMgaW4gYSBT
dHJpbmcKLSAqIGJ1dCB3ZSBoYXZlIHRvIGVzY2FwZSBpdC4KLSAqIE9uIFdpbmRvd3MgdGhlIEdM
aWIgZmlsZSBuYW1lIGVuY29kaW5nIGlzIGFsd2F5cyBVVEYtOCBzbyB3ZSBjYW4gb3B0aW1pemUg
dGhpcyBjYXNlLiAqLwotU3RyaW5nIHN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
Y29uc3QgY2hhciogZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKQotewotICAgIGlmICghZmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSNpZiBPUyhX
SU5ET1dTKQotICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbik7Ci0jZWxzZQotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGVzY2FwZWRTdHJpbmcoZ191cmlf
ZXNjYXBlX3N0cmluZyhmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24sICIvOiIsIEZBTFNFKSk7Ci0g
ICAgcmV0dXJuIGVzY2FwZWRTdHJpbmcuZ2V0KCk7Ci0jZW5kaWYKLX0KLQotc3RhdGljIEdVbmlx
dWVQdHI8Y2hhcj4gdW5lc2NhcGVkRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAg
IGlmIChwYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0jaWYgT1MoV0lO
RE9XUykKLSAgICByZXR1cm4gR1VuaXF1ZVB0cjxjaGFyPihnX3N0cmR1cChwYXRoLnV0ZjgoKS5k
YXRhKCkpKTsKLSNlbHNlCi0gICAgcmV0dXJuIEdVbmlxdWVQdHI8Y2hhcj4oZ191cmlfdW5lc2Nh
cGVfc3RyaW5nKHBhdGgudXRmOCgpLmRhdGEoKSwgbnVsbHB0cikpOwotI2VuZGlmCi19Ci0KLUNT
dHJpbmcgZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSNp
ZiBPUyhXSU5ET1dTKQotICAgIHJldHVybiBwYXRoLnV0ZjgoKTsKLSNlbHNlCi0gICAgR1VuaXF1
ZVB0cjxnY2hhcj4gZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShwYXRoKTsKLSAgICByZXR1
cm4gZmlsZW5hbWUuZ2V0KCk7Ci0jZW5kaWYKLX0KLQotLy8gQ29udmVydHMgYSBzdHJpbmcgdG8g
c29tZXRoaW5nIHN1aXRhYmxlIHRvIGJlIGRpc3BsYXllZCB0byB0aGUgdXNlci4KLVN0cmluZyBm
aWxlbmFtZUZvckRpc3BsYXkoY29uc3QgU3RyaW5nJiBzdHJpbmcpCi17Ci0jaWYgT1MoV0lORE9X
UykKLSAgICByZXR1cm4gc3RyaW5nOwotI2Vsc2UKLSAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxl
bmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHN0cmluZyk7Ci0gICAgaWYgKCFmaWxlbmFtZSkKLSAg
ICAgICAgcmV0dXJuIHN0cmluZzsKLQotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGRpc3BsYXkoZ19m
aWxlbmFtZV90b191dGY4KGZpbGVuYW1lLmdldCgpLCAtMSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVs
bHB0cikpOwotICAgIGlmICghZGlzcGxheSkKLSAgICAgICAgcmV0dXJuIHN0cmluZzsKLQotICAg
IHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGRpc3BsYXkuZ2V0KCkpOwotI2VuZGlmCi19Ci0KLWJv
b2wgZmlsZUV4aXN0cyhjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgR1VuaXF1ZVB0cjxnY2hh
cj4gZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShwYXRoKTsKLSAgICByZXR1cm4gZmlsZW5h
bWUgPyBnX2ZpbGVfdGVzdChmaWxlbmFtZS5nZXQoKSwgR19GSUxFX1RFU1RfRVhJU1RTKSA6IGZh
bHNlOwotfQotCi1ib29sIGRlbGV0ZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIEdV
bmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUocGF0aCk7Ci0gICAg
cmV0dXJuIGZpbGVuYW1lID8gZ19yZW1vdmUoZmlsZW5hbWUuZ2V0KCkpICE9IC0xIDogZmFsc2U7
Ci19Ci0KLWJvb2wgZGVsZXRlRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKQotewot
ICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUocGF0aCk7
Ci0gICAgcmV0dXJuIGZpbGVuYW1lID8gZ19ybWRpcihmaWxlbmFtZS5nZXQoKSkgIT0gLTEgOiBm
YWxzZTsKLX0KLQotc3RhdGljIGJvb2wgZ2V0RmlsZVN0YXQoY29uc3QgU3RyaW5nJiBwYXRoLCBH
U3RhdEJ1Ziogc3RhdEJ1ZmZlcikKLXsKLSAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZSA9
IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGgpOwotICAgIGlmICghZmlsZW5hbWUpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIHJldHVybiBnX3N0YXQoZmlsZW5hbWUuZ2V0KCksIHN0YXRCdWZm
ZXIpICE9IC0xOwotfQotCi1zdGF0aWMgYm9vbCBnZXRGaWxlTFN0YXQoY29uc3QgU3RyaW5nJiBw
YXRoLCBHU3RhdEJ1Ziogc3RhdEJ1ZmZlcikKLXsKLSAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxl
bmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGgpOwotICAgIGlmICghZmlsZW5hbWUpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBnX2xzdGF0KGZpbGVuYW1lLmdldCgpLCBz
dGF0QnVmZmVyKSAhPSAtMTsKLX0KLQotYm9vbCBnZXRGaWxlU2l6ZShjb25zdCBTdHJpbmcmIHBh
dGgsIGxvbmcgbG9uZyYgcmVzdWx0U2l6ZSkKLXsKLSAgICBHU3RhdEJ1ZiBzdGF0UmVzdWx0Owot
ICAgIGlmICghZ2V0RmlsZVN0YXQocGF0aCwgJnN0YXRSZXN1bHQpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICByZXN1bHRTaXplID0gc3RhdFJlc3VsdC5zdF9zaXplOwotICAgIHJldHVy
biB0cnVlOwotfQotCi1ib29sIGdldEZpbGVTaXplKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUs
IGxvbmcgbG9uZyYgcmVzdWx0U2l6ZSkKLXsKLSAgICBhdXRvIGluZm8gPSBnX2ZpbGVfaW9fc3Ry
ZWFtX3F1ZXJ5X2luZm8oaGFuZGxlLCBHX0ZJTEVfQVRUUklCVVRFX1NUQU5EQVJEX1NJWkUsIG51
bGxwdHIsIG51bGxwdHIpOwotICAgIGlmICghaW5mbykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgcmVzdWx0U2l6ZSA9IGdfZmlsZV9pbmZvX2dldF9zaXplKGluZm8pOwotICAgIHJldHVy
biB0cnVlOwotfQotCi1PcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZUNyZWF0aW9uVGltZShjb25z
dCBTdHJpbmcmKQotewotICAgIC8vIEZJWE1FOiBJcyB0aGVyZSBhIHdheSB0byByZXRyaWV2ZSBm
aWxlIGNyZWF0aW9uIHRpbWUgd2l0aCBHdGsgb24gcGxhdGZvcm1zIHRoYXQgc3VwcG9ydCBpdD8K
LSAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotfQotCi1PcHRpb25hbDxXYWxsVGltZT4gZ2V0Rmls
ZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIEdTdGF0QnVmIHN0
YXRSZXN1bHQ7Ci0gICAgaWYgKCFnZXRGaWxlU3RhdChwYXRoLCAmc3RhdFJlc3VsdCkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICByZXR1cm4gV2FsbFRpbWU6OmZyb21SYXdT
ZWNvbmRzKHN0YXRSZXN1bHQuc3RfbXRpbWUpOwotfQotCi1zdGF0aWMgRmlsZU1ldGFkYXRhOjpU
eXBlIHRvRmlsZU1ldGF0YVR5cGUoR1N0YXRCdWYgc3RhdFJlc3VsdCkKLXsKLSAgICBpZiAoU19J
U0RJUihzdGF0UmVzdWx0LnN0X21vZGUpKQotICAgICAgICByZXR1cm4gRmlsZU1ldGFkYXRhOjpU
eXBlOjpEaXJlY3Rvcnk7Ci0gICAgaWYgKFNfSVNMTksoc3RhdFJlc3VsdC5zdF9tb2RlKSkKLSAg
ICAgICAgcmV0dXJuIEZpbGVNZXRhZGF0YTo6VHlwZTo6U3ltYm9saWNMaW5rOwotICAgIHJldHVy
biBGaWxlTWV0YWRhdGE6OlR5cGU6OkZpbGU7Ci19Ci0KLXN0YXRpYyBPcHRpb25hbDxGaWxlTWV0
YWRhdGE+IGZpbGVNZXRhZGF0YVVzaW5nRnVuY3Rpb24oY29uc3QgU3RyaW5nJiBwYXRoLCBib29s
ICgqc3RhdEZ1bmMpKGNvbnN0IFN0cmluZyYsIEdTdGF0QnVmKikpCi17Ci0gICAgR1N0YXRCdWYg
c3RhdFJlc3VsdDsKLSAgICBpZiAoIXN0YXRGdW5jKHBhdGgsICZzdGF0UmVzdWx0KSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIFN0cmluZyBmaWxlbmFtZSA9IHBhdGhHZXRG
aWxlTmFtZShwYXRoKTsKLSAgICBib29sIGlzSGlkZGVuID0gIWZpbGVuYW1lLmlzRW1wdHkoKSAm
JiBmaWxlbmFtZVswXSA9PSAnLic7Ci0KLSAgICByZXR1cm4gRmlsZU1ldGFkYXRhIHsKLSAgICAg
ICAgV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKHN0YXRSZXN1bHQuc3RfbXRpbWUpLAotICAgICAg
ICBzdGF0UmVzdWx0LnN0X3NpemUsCi0gICAgICAgIGlzSGlkZGVuLAotICAgICAgICB0b0ZpbGVN
ZXRhdGFUeXBlKHN0YXRSZXN1bHQpCi0gICAgfTsKLX0KLQotT3B0aW9uYWw8RmlsZU1ldGFkYXRh
PiBmaWxlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIHJldHVybiBmaWxlTWV0
YWRhdGFVc2luZ0Z1bmN0aW9uKHBhdGgsICZnZXRGaWxlTFN0YXQpOwotfQotCi1PcHRpb25hbDxG
aWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YUZvbGxvd2luZ1N5bWxpbmtzKGNvbnN0IFN0cmluZyYg
cGF0aCkKLXsKLSAgICByZXR1cm4gZmlsZU1ldGFkYXRhVXNpbmdGdW5jdGlvbihwYXRoLCAmZ2V0
RmlsZVN0YXQpOwotfQotCi1TdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNvbnN0IFN0
cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb21wb25lbnQpCi17Ci0gICAgaWYgKHBhdGguZW5k
c1dpdGgoR19ESVJfU0VQQVJBVE9SX1MpKQotICAgICAgICByZXR1cm4gcGF0aCArIGNvbXBvbmVu
dDsKLSAgICByZXR1cm4gcGF0aCArIEdfRElSX1NFUEFSQVRPUl9TICsgY29tcG9uZW50OwotfQot
Ci1TdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhTdHJpbmdWaWV3IHBhdGgsIGNvbnN0
IFZlY3RvcjxTdHJpbmdWaWV3PiYgY29tcG9uZW50cykKLXsKLSAgICBTdHJpbmdCdWlsZGVyIGJ1
aWxkZXI7Ci0gICAgYnVpbGRlci5hcHBlbmQocGF0aCk7Ci0gICAgZm9yIChhdXRvJiBjb21wb25l
bnQgOiBjb21wb25lbnRzKSB7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKEdfRElSX1NFUEFSQVRP
Ul9TKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoY29tcG9uZW50KTsKLSAgICB9Ci0gICAgcmV0
dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKLX0KLQotYm9vbCBtYWtlQWxsRGlyZWN0b3JpZXMoY29u
c3QgU3RyaW5nJiBwYXRoKQotewotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5l
c2NhcGVkRmlsZW5hbWUocGF0aCk7Ci0gICAgcmV0dXJuIGZpbGVuYW1lID8gZ19ta2Rpcl93aXRo
X3BhcmVudHMoZmlsZW5hbWUuZ2V0KCksIFNfSVJXWFUpICE9IC0xIDogZmFsc2U7Ci19Ci0KLVN0
cmluZyBob21lRGlyZWN0b3J5UGF0aCgpCi17Ci0gICAgcmV0dXJuIHN0cmluZ0Zyb21GaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oZ19nZXRfaG9tZV9kaXIoKSk7Ci19Ci0KLWJvb2wgY3JlYXRlU3lt
Ym9saWNMaW5rKGNvbnN0IFN0cmluZyYgdGFyZ2V0UGF0aCwgY29uc3QgU3RyaW5nJiBzeW1ib2xp
Y0xpbmtQYXRoKQotewotICAgIENTdHJpbmcgdGFyZ2V0UGF0aEZTUmVwID0gZmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKHRhcmdldFBhdGgpOwotICAgIGlmICghdGFyZ2V0UGF0aEZTUmVwLmRhdGEo
KSB8fCB0YXJnZXRQYXRoRlNSZXAuZGF0YSgpWzBdID09ICdcMCcpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIENTdHJpbmcgc3ltYm9saWNMaW5rUGF0aEZTUmVwID0gZmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKHN5bWJvbGljTGlua1BhdGgpOwotICAgIGlmICghc3ltYm9saWNMaW5rUGF0
aEZTUmVwLmRhdGEoKSB8fCBzeW1ib2xpY0xpbmtQYXRoRlNSZXAuZGF0YSgpWzBdID09ICdcMCcp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiAhc3ltbGluayh0YXJnZXRQYXRo
RlNSZXAuZGF0YSgpLCBzeW1ib2xpY0xpbmtQYXRoRlNSZXAuZGF0YSgpKTsKLX0KLQotU3RyaW5n
IHBhdGhHZXRGaWxlTmFtZShjb25zdCBTdHJpbmcmIHBhdGhOYW1lKQotewotICAgIEdVbmlxdWVQ
dHI8Z2NoYXI+IHRtcEZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUocGF0aE5hbWUpOwotICAg
IGlmICghdG1wRmlsZW5hbWUpCi0gICAgICAgIHJldHVybiBwYXRoTmFtZTsKLQotICAgIEdVbmlx
dWVQdHI8Z2NoYXI+IGJhc2VOYW1lKGdfcGF0aF9nZXRfYmFzZW5hbWUodG1wRmlsZW5hbWUuZ2V0
KCkpKTsKLSAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChiYXNlTmFtZS5nZXQoKSk7Ci19Ci0K
LWJvb2wgZ2V0Vm9sdW1lRnJlZVNwYWNlKGNvbnN0IFN0cmluZyYgcGF0aCwgdWludDY0X3QmIGZy
ZWVTcGFjZSkKLXsKLSAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZSA9IHVuZXNjYXBlZEZp
bGVuYW1lKHBhdGgpOwotICAgIGlmICghZmlsZW5hbWUpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIEdSZWZQdHI8R0ZpbGU+IGZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0
aChmaWxlbmFtZS5nZXQoKSkpOwotICAgIEdSZWZQdHI8R0ZpbGVJbmZvPiBmaWxlSW5mbyA9IGFk
b3B0R1JlZihnX2ZpbGVfcXVlcnlfZmlsZXN5c3RlbV9pbmZvKGZpbGUuZ2V0KCksIEdfRklMRV9B
VFRSSUJVVEVfRklMRVNZU1RFTV9GUkVFLCAwLCAwKSk7Ci0gICAgaWYgKCFmaWxlSW5mbykKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgZnJlZVNwYWNlID0gZ19maWxlX2luZm9fZ2V0X2F0
dHJpYnV0ZV91aW50NjQoZmlsZUluZm8uZ2V0KCksIEdfRklMRV9BVFRSSUJVVEVfRklMRVNZU1RF
TV9GUkVFKTsKLSAgICByZXR1cm4gISFmcmVlU3BhY2U7Ci19Ci0KLVN0cmluZyBkaXJlY3RvcnlO
YW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFt
ZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGgpOwotICAgIGlmICghZmlsZW5hbWUpCi0gICAgICAg
IHJldHVybiBTdHJpbmcoKTsKLQotICAgIEdVbmlxdWVQdHI8Y2hhcj4gZGlybmFtZShnX3BhdGhf
Z2V0X2Rpcm5hbWUoZmlsZW5hbWUuZ2V0KCkpKTsKLSAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRG
OChkaXJuYW1lLmdldCgpKTsKLX0KLQotVmVjdG9yPFN0cmluZz4gbGlzdERpcmVjdG9yeShjb25z
dCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgZmlsdGVyKQotewotICAgIFZlY3RvcjxTdHJp
bmc+IGVudHJpZXM7Ci0KLSAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZSA9IHVuZXNjYXBl
ZEZpbGVuYW1lKHBhdGgpOwotICAgIGlmICghZmlsZW5hbWUpCi0gICAgICAgIHJldHVybiBlbnRy
aWVzOwotCi0gICAgR1VuaXF1ZVB0cjxHRGlyPiBkaXIoZ19kaXJfb3BlbihmaWxlbmFtZS5nZXQo
KSwgMCwgbnVsbHB0cikpOwotICAgIGlmICghZGlyKQotICAgICAgICByZXR1cm4gZW50cmllczsK
LQotICAgIEdVbmlxdWVQdHI8R1BhdHRlcm5TcGVjPiBwc3BlYyhnX3BhdHRlcm5fc3BlY19uZXco
KGZpbHRlci51dGY4KCkpLmRhdGEoKSkpOwotICAgIHdoaWxlIChjb25zdCBjaGFyKiBuYW1lID0g
Z19kaXJfcmVhZF9uYW1lKGRpci5nZXQoKSkpIHsKLSAgICAgICAgaWYgKCFnX3BhdHRlcm5fbWF0
Y2hfc3RyaW5nKHBzcGVjLmdldCgpLCBuYW1lKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0g
ICAgICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGVudHJ5KGdfYnVpbGRfZmlsZW5hbWUoZmlsZW5hbWUu
Z2V0KCksIG5hbWUsIG51bGxwdHIpKTsKLSAgICAgICAgZW50cmllcy5hcHBlbmQoc3RyaW5nRnJv
bUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihlbnRyeS5nZXQoKSkpOwotICAgIH0KLQotICAgIHJl
dHVybiBlbnRyaWVzOwotfQotCi1TdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5n
JiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKQotewotICAgIEdVbmlxdWVQdHI8
Z2NoYXI+IGZpbGVuYW1lKGdfc3RyZHVwX3ByaW50ZigiJXMlcyIsIHByZWZpeC51dGY4KCkuZGF0
YSgpLCBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkudXRmOCgpLmRhdGEoKSkpOwotICAgIEdV
bmlxdWVQdHI8Z2NoYXI+IHRlbXBQYXRoKGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdG1wX2Rpcigp
LCBmaWxlbmFtZS5nZXQoKSwgTlVMTCkpOwotICAgIEdSZWZQdHI8R0ZpbGU+IGZpbGUgPSBhZG9w
dEdSZWYoZ19maWxlX25ld19mb3JfcGF0aCh0ZW1wUGF0aC5nZXQoKSkpOwotCi0gICAgaGFuZGxl
ID0gZ19maWxlX2NyZWF0ZV9yZWFkd3JpdGUoZmlsZS5nZXQoKSwgR19GSUxFX0NSRUFURV9OT05F
LCAwLCAwKTsKLSAgICBpZiAoIWlzSGFuZGxlVmFsaWQoaGFuZGxlKSkKLSAgICAgICAgcmV0dXJu
IFN0cmluZygpOwotICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KHRlbXBQYXRoLmdldCgpKTsK
LX0KLQotUGxhdGZvcm1GaWxlSGFuZGxlIG9wZW5GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmls
ZU9wZW5Nb2RlIG1vZGUpCi17Ci0gICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUgPSB1bmVz
Y2FwZWRGaWxlbmFtZShwYXRoKTsKLSAgICBpZiAoIWZpbGVuYW1lKQotICAgICAgICByZXR1cm4g
aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKLQotICAgIEdSZWZQdHI8R0ZpbGU+IGZpbGUgPSBh
ZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0aChmaWxlbmFtZS5nZXQoKSkpOwotICAgIEdGaWxl
SU9TdHJlYW0qIGlvU3RyZWFtID0gMDsKLSAgICBpZiAobW9kZSA9PSBGaWxlT3Blbk1vZGU6OlJl
YWQpCi0gICAgICAgIGlvU3RyZWFtID0gZ19maWxlX29wZW5fcmVhZHdyaXRlKGZpbGUuZ2V0KCks
IDAsIDApOwotICAgIGVsc2UgaWYgKG1vZGUgPT0gRmlsZU9wZW5Nb2RlOjpXcml0ZSkgewotICAg
ICAgICBpZiAoZ19maWxlX3Rlc3QoZmlsZW5hbWUuZ2V0KCksIHN0YXRpY19jYXN0PEdGaWxlVGVz
dD4oR19GSUxFX1RFU1RfRVhJU1RTIHwgR19GSUxFX1RFU1RfSVNfUkVHVUxBUikpKQotICAgICAg
ICAgICAgaW9TdHJlYW0gPSBnX2ZpbGVfb3Blbl9yZWFkd3JpdGUoZmlsZS5nZXQoKSwgMCwgMCk7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGlvU3RyZWFtID0gZ19maWxlX2NyZWF0ZV9yZWFk
d3JpdGUoZmlsZS5nZXQoKSwgR19GSUxFX0NSRUFURV9OT05FLCAwLCAwKTsKLSAgICB9Ci0KLSAg
ICByZXR1cm4gaW9TdHJlYW07Ci19Ci0KLXZvaWQgY2xvc2VGaWxlKFBsYXRmb3JtRmlsZUhhbmRs
ZSYgaGFuZGxlKQotewotICAgIGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBnX2lvX3N0cmVhbV9jbG9zZShHX0lPX1NUUkVBTShoYW5kbGUpLCAwLCAw
KTsKLSAgICBnX29iamVjdF91bnJlZihoYW5kbGUpOwotICAgIGhhbmRsZSA9IGludmFsaWRQbGF0
Zm9ybUZpbGVIYW5kbGU7Ci19Ci0KLWxvbmcgbG9uZyBzZWVrRmlsZShQbGF0Zm9ybUZpbGVIYW5k
bGUgaGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0LCBGaWxlU2Vla09yaWdpbiBvcmlnaW4pCi17Ci0g
ICAgR1NlZWtUeXBlIHNlZWtUeXBlID0gR19TRUVLX1NFVDsKLSAgICBzd2l0Y2ggKG9yaWdpbikg
ewotICAgIGNhc2UgRmlsZVNlZWtPcmlnaW46OkJlZ2lubmluZzoKLSAgICAgICAgc2Vla1R5cGUg
PSBHX1NFRUtfU0VUOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEZpbGVTZWVrT3JpZ2luOjpD
dXJyZW50OgotICAgICAgICBzZWVrVHlwZSA9IEdfU0VFS19DVVI7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgRmlsZVNlZWtPcmlnaW46OkVuZDoKLSAgICAgICAgc2Vla1R5cGUgPSBHX1NFRUtf
RU5EOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICB9Ci0KLSAgICBpZiAoIWdfc2Vla2FibGVfc2VlayhHX1NFRUtBQkxFKGdf
aW9fc3RyZWFtX2dldF9pbnB1dF9zdHJlYW0oR19JT19TVFJFQU0oaGFuZGxlKSkpLAotICAgICAg
ICBvZmZzZXQsIHNlZWtUeXBlLCAwLCAwKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiAtMTsKLSAg
ICB9Ci0gICAgcmV0dXJuIGdfc2Vla2FibGVfdGVsbChHX1NFRUtBQkxFKGdfaW9fc3RyZWFtX2dl
dF9pbnB1dF9zdHJlYW0oR19JT19TVFJFQU0oaGFuZGxlKSkpKTsKLX0KLQotaW50IHdyaXRlVG9G
aWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5n
dGgpCi17Ci0gICAgZ3NpemUgYnl0ZXNXcml0dGVuOwotICAgIGdfb3V0cHV0X3N0cmVhbV93cml0
ZV9hbGwoZ19pb19zdHJlYW1fZ2V0X291dHB1dF9zdHJlYW0oR19JT19TVFJFQU0oaGFuZGxlKSks
Ci0gICAgICAgIGRhdGEsIGxlbmd0aCwgJmJ5dGVzV3JpdHRlbiwgMCwgMCk7Ci0gICAgcmV0dXJu
IGJ5dGVzV3JpdHRlbjsKLX0KLQotaW50IHJlYWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUg
aGFuZGxlLCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQotewotICAgIEdVbmlxdWVPdXRQdHI8R0Vy
cm9yPiBlcnJvcjsKLSAgICBkbyB7Ci0gICAgICAgIGdzc2l6ZSBieXRlc1JlYWQgPSBnX2lucHV0
X3N0cmVhbV9yZWFkKGdfaW9fc3RyZWFtX2dldF9pbnB1dF9zdHJlYW0oR19JT19TVFJFQU0oaGFu
ZGxlKSksCi0gICAgICAgICAgICBkYXRhLCBsZW5ndGgsIDAsICZlcnJvci5vdXRQdHIoKSk7Ci0g
ICAgICAgIGlmIChieXRlc1JlYWQgPj0gMCkKLSAgICAgICAgICAgIHJldHVybiBieXRlc1JlYWQ7
Ci0gICAgfSB3aGlsZSAoZXJyb3IgJiYgZXJyb3ItPmNvZGUgPT0gR19GSUxFX0VSUk9SX0lOVFIp
OwotICAgIHJldHVybiAtMTsKLX0KLQotYm9vbCBtb3ZlRmlsZShjb25zdCBTdHJpbmcmIG9sZFBh
dGgsIGNvbnN0IFN0cmluZyYgbmV3UGF0aCkKLXsKLSAgICBHVW5pcXVlUHRyPGdjaGFyPiBvbGRG
aWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKG9sZFBhdGgpOwotICAgIGlmICghb2xkRmlsZW5h
bWUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IG5ld0Zp
bGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUobmV3UGF0aCk7Ci0gICAgaWYgKCFuZXdGaWxlbmFt
ZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgR1JlZlB0cjxHRmlsZT4gb2xkRmlsZSA9
IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKG9sZEZpbGVuYW1lLmdldCgpKSk7Ci0gICAg
R1JlZlB0cjxHRmlsZT4gbmV3RmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKG5l
d0ZpbGVuYW1lLmdldCgpKSk7Ci0KLSAgICByZXR1cm4gZ19maWxlX21vdmUob2xkRmlsZS5nZXQo
KSwgbmV3RmlsZS5nZXQoKSwgR19GSUxFX0NPUFlfT1ZFUldSSVRFLCBudWxscHRyLCBudWxscHRy
LCBudWxscHRyLCBudWxscHRyKTsKLX0KLQotYm9vbCBoYXJkTGlua09yQ29weUZpbGUoY29uc3Qg
U3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb24pCi17Ci0jaWYgT1MoV0lO
RE9XUykKLSAgICByZXR1cm4gISE6OkNvcHlGaWxlKHNvdXJjZS5jaGFyYWN0ZXJzV2l0aE51bGxU
ZXJtaW5hdGlvbigpLmRhdGEoKSwgZGVzdGluYXRpb24uY2hhcmFjdGVyc1dpdGhOdWxsVGVybWlu
YXRpb24oKS5kYXRhKCksIFRSVUUpOwotI2Vsc2UKLSAgICBHVW5pcXVlUHRyPGdjaGFyPiBzb3Vy
Y2VGaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHNvdXJjZSk7Ci0gICAgaWYgKCFzb3VyY2VG
aWxlbmFtZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgR1VuaXF1ZVB0cjxnY2hhcj4g
ZGVzdGluYXRpb25GaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKGRlc3RpbmF0aW9uKTsKLSAg
ICBpZiAoIWRlc3RpbmF0aW9uRmlsZW5hbWUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IGlmICghbGluayhzb3VyY2VGaWxlbmFtZS5nZXQoKSwgZGVzdGluYXRpb25GaWxlbmFtZS5nZXQo
KSkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgLy8gSGFyZCBsaW5rIGZhaWxlZC4gUGVy
Zm9ybSBhIGNvcHkgaW5zdGVhZC4KLSAgICBHUmVmUHRyPEdGaWxlPiBzb3VyY2VGaWxlID0gYWRv
cHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoc291cmNlRmlsZW5hbWUuZ2V0KCkpKTsKLSAgICBH
UmVmUHRyPEdGaWxlPiBkZXN0aW5hdGlvbkZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3Jf
cGF0aChkZXN0aW5hdGlvbkZpbGVuYW1lLmdldCgpKSk7Ci0gICAgcmV0dXJuIGdfZmlsZV9jb3B5
KHNvdXJjZUZpbGUuZ2V0KCksIGRlc3RpbmF0aW9uRmlsZS5nZXQoKSwgR19GSUxFX0NPUFlfTk9O
RSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cik7Ci0jZW5kaWYKLX0KLQotT3B0
aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0IENTdHJpbmcmIGZzRmlsZSkKLXsK
LSAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKGZzRmls
ZS5kYXRhKCkpOwotICAgIGlmICghZmlsZW5hbWUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7Ci0KLSAgICBHUmVmUHRyPEdGaWxlPiBmaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9y
X3BhdGgoZmlsZW5hbWUuZ2V0KCkpKTsKLSAgICBHUmVmUHRyPEdGaWxlSW5mbz4gZmlsZUluZm8g
PSBhZG9wdEdSZWYoZ19maWxlX3F1ZXJ5X2ZpbGVzeXN0ZW1faW5mbyhmaWxlLmdldCgpLCBHX0ZJ
TEVfQVRUUklCVVRFX1VOSVhfREVWSUNFLCBudWxscHRyLCBudWxscHRyKSk7Ci0gICAgaWYgKCFm
aWxlSW5mbykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIHJldHVybiBnX2Zp
bGVfaW5mb19nZXRfYXR0cmlidXRlX3VpbnQzMihmaWxlSW5mby5nZXQoKSwgR19GSUxFX0FUVFJJ
QlVURV9VTklYX0RFVklDRSk7Ci19Ci0KLSNpZiBVU0UoRklMRV9MT0NLKQotYm9vbCBsb2NrRmls
ZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBPcHRpb25TZXQ8RmlsZUxvY2tNb2RlPiBsb2Nr
TW9kZSkKLXsKLSAgICBDT01QSUxFX0FTU0VSVChMT0NLX1NIID09IFdURjo6ZW51bVRvVW5kZXJs
eWluZ1R5cGUoRmlsZUxvY2tNb2RlOjpTaGFyZWQpLCBMb2NrU2hhcmVkRW5jb2RpbmdJc0FzRXhw
ZWN0ZWQpOwotICAgIENPTVBJTEVfQVNTRVJUKExPQ0tfRVggPT0gV1RGOjplbnVtVG9VbmRlcmx5
aW5nVHlwZShGaWxlTG9ja01vZGU6OkV4Y2x1c2l2ZSksIExvY2tFeGNsdXNpdmVFbmNvZGluZ0lz
QXNFeHBlY3RlZCk7Ci0gICAgQ09NUElMRV9BU1NFUlQoTE9DS19OQiA9PSBXVEY6OmVudW1Ub1Vu
ZGVybHlpbmdUeXBlKEZpbGVMb2NrTW9kZTo6Tm9uYmxvY2tpbmcpLCBMb2NrTm9uYmxvY2tpbmdF
bmNvZGluZ0lzQXNFeHBlY3RlZCk7Ci0gICAgYXV0byogaW5wdXRTdHJlYW0gPSBnX2lvX3N0cmVh
bV9nZXRfaW5wdXRfc3RyZWFtKEdfSU9fU1RSRUFNKGhhbmRsZSkpOwotICAgIGludCByZXN1bHQg
PSBmbG9jayhnX2ZpbGVfZGVzY3JpcHRvcl9iYXNlZF9nZXRfZmQoR19GSUxFX0RFU0NSSVBUT1Jf
QkFTRUQoaW5wdXRTdHJlYW0pKSwgbG9ja01vZGUudG9SYXcoKSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dCAhPSAtMTsKLX0KLQotYm9vbCB1bmxvY2tGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUp
Ci17Ci0gICAgYXV0byogaW5wdXRTdHJlYW0gPSBnX2lvX3N0cmVhbV9nZXRfaW5wdXRfc3RyZWFt
KEdfSU9fU1RSRUFNKGhhbmRsZSkpOwotICAgIGludCByZXN1bHQgPSBmbG9jayhnX2ZpbGVfZGVz
Y3JpcHRvcl9iYXNlZF9nZXRfZmQoR19GSUxFX0RFU0NSSVBUT1JfQkFTRUQoaW5wdXRTdHJlYW0p
KSwgTE9DS19VTik7Ci0gICAgcmV0dXJuIHJlc3VsdCAhPSAtMTsKLX0KLSNlbmRpZiAvLyBVU0Uo
RklMRV9MT0NLKQotCi19IC8vIG5hbWVzcGFjZSBGaWxlU3lzdGVtCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1
ZmZlckdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJH
bGliLmNwcAppbmRleCBiNDg5NmMwODU0NjBlN2MwYmU1NjQwODRlYzg4ZWYyMmFmNjBiODQ0Li5j
NzQ3MzU3NTMwN2Y2ZjdkZDRhOWYyMzYxYWVmMjVjYTM2OTc2ZTNhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAKQEAgLTE5LDcgKzE5
LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKIAot
I2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZDb250
ZW50S2V5U2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLm1tCmluZGV4IGU4ZGQz
YjVhZWM4MjkzY2Q1ZWQ5NmU5OGYxMDM1ZWU1M2UyOGM3YjQuLjI0Zjk1ZTg0NDEzNjdlMjIxOWNh
MjI2NDQ1ZTg2MjI4ZjU3OTQ4MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9u
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLm1tCkBAIC0yOSw3ICsyOSw2IEBACiAj
aWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRShNRURJQV9TT1VSQ0Up
CiAKICNpbXBvcnQgIkNETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCIKLSNpbXBvcnQgIkZp
bGVTeXN0ZW0uaCIKICNpbXBvcnQgIkxlZ2FjeUNETS5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgog
I2ltcG9ydCAiTWVkaWFQbGF5ZXIuaCIKQEAgLTM5LDYgKzM4LDcgQEAKICNpbXBvcnQgPENvcmVN
ZWRpYS9DTUJhc2UuaD4KICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL1R5cGVkQXJyYXlJbmxpbmVz
Lmg+CiAjaW1wb3J0IDxvYmpjL29iamMtcnVudGltZS5oPgorI2ltcG9ydCA8d3RmL0ZpbGVTeXN0
ZW0uaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgogCiBTT0ZUX0xJTktfRlJBTUVXT1JL
X09QVElPTkFMKEFWRm91bmRhdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVlN0cmVhbVNlc3Npb24u
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9D
RE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLm1tCmluZGV4IDk5Mjk0MzE1ZDg2MjQxYjE2OGYyOGFh
NzJlZGRlMGQ5N2NmNGE3OGMuLmMzNTczZTVjNjA4MWM5OWIxNDA0ZTBlNDFjNTBlMDQ5ZTI5MWEy
MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0NETVNlc3Npb25BVlN0cmVhbVNlc3Npb24ubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWU3RyZWFt
U2Vzc2lvbi5tbQpAQCAtMjksNyArMjksNiBAQAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVE
X01FRElBKSAmJiBFTkFCTEUoTUVESUFfU09VUkNFKQogCiAjaW1wb3J0ICJDRE1Qcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLmgiCi0jaW1wb3J0ICJGaWxlU3lzdGVtLmgiCiAjaW1wb3J0ICJMZWdh
Y3lDRE0uaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIk1lZGlhUGxheWVyLmgiCkBA
IC00MCw2ICszOSw3IEBACiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9UeXBlZEFycmF5SW5saW5l
cy5oPgogI2ltcG9ydCA8b2JqYy9vYmpjLXJ1bnRpbWUuaD4KICNpbXBvcnQgPHBhbC9zcGkvbWFj
L0FWRm91bmRhdGlvblNQSS5oPgorI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQg
PHd0Zi9Tb2Z0TGlua2luZy5oPgogI2ltcG9ydCA8d3RmL1VVSUQuaD4KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vz
c2lvbk1lZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMubW0KaW5k
ZXggMmNiMmQ2ZmEwY2Q4ZWZhNDIzMTg5MWEwOTgxOTgzYzliOGMwNzdlNC4uZWM1ODM3OGE4YmVi
NmE1NzUzZDAyZGE0OWZlZGFiNjZlZWI1OTdjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbk1lZGlhU291cmNl
QVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLm1tCkBAIC0yOSw5ICsyOSw5
IEBACiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRShNRURJQV9T
T1VSQ0UpCiAKICNpbXBvcnQgIkNETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCIKLSNpbXBv
cnQgIkZpbGVTeXN0ZW0uaCIKICNpbXBvcnQgIldlYkNvcmVOU0Vycm9yRXh0cmFzLmgiCiAjaW1w
b3J0IDxBVkZvdW5kYXRpb24vQVZFcnJvci5oPgorI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KaW5kZXgg
NWUzNmRkMDA2OTMwNzUwMTEyYjcxM2ZkYzRlNWFlYTRkMTBhOWMwOS4uZDZkNWU4MmIyMzc3NmZk
NjI3N2UyOWI2OWRlYjY2MjlmOGM5MThjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQpA
QCAtMzEsNyArMzEsNiBAQAogI2ltcG9ydCAiQVZBc3NldFRyYWNrVXRpbGl0aWVzLmgiCiAjaW1w
b3J0ICJBVkZvdW5kYXRpb25NSU1FVHlwZUNhY2hlLmgiCiAjaW1wb3J0ICJDRE1TZXNzaW9uQVZT
dHJlYW1TZXNzaW9uLmgiCi0jaW1wb3J0ICJGaWxlU3lzdGVtLmgiCiAjaW1wb3J0ICJHcmFwaGlj
c0NvbnRleHRDRy5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiTWVkaWFTb3VyY2VQ
cml2YXRlQVZGT2JqQy5oIgpAQCAtNDksNiArNDgsNyBAQAogI2ltcG9ydCA8cGFsL2F2Zm91bmRh
dGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uaD4KICNpbXBvcnQgPHBhbC9zcGkvbWFjL0FWRm91
bmRhdGlvblNQSS5oPgogI2ltcG9ydCA8d3RmL0RlcXVlLmg+CisjaW1wb3J0IDx3dGYvRmlsZVN5
c3RlbS5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIuY3BwCmluZGV4IDBmMDVlYjkxOTlkYmYzZTQ5ZTFhMTJlMDc1NjZlZWM0ODkxZGUxNzcuLjQx
NDBjMTFiMGVhNDc5OGU2NjBkNjQ5NTgwZmVjYWFkM2MyNmQ0YzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAK
ICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpCiAKLSNpbmNsdWRlICJGaWxlU3lz
dGVtLmgiCiAjaW5jbHVkZSAiR1N0cmVhbWVyQ29tbW9uLmgiCiAjaW5jbHVkZSAiSFRUUEhlYWRl
ck5hbWVzLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgpAQCAtNDIsNiArNDEsNyBA
QAogI2luY2x1ZGUgPGdzdC9nc3QuaD4KICNpbmNsdWRlIDxnc3QvcGJ1dGlscy9taXNzaW5nLXBs
dWdpbnMuaD4KICNpbmNsdWRlIDxsaW1pdHM+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4K
ICNpbmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+CiAjaW5jbHVkZSA8d3RmL01lZGlhVGltZS5oPgog
I2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9RdWlja0xvb2subW0KaW5kZXggN2JmOTFiMmZhZGMzMTJhYjNiN2U4NjJhNTgzNTBlYzU0OGQw
MWJiNy4uYTlkOWU0NzEwNTAxN2Q2NGQ4MmUzN2M4YWEzMWNlNjQ2OTAyNTY4NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29rLm1tCkBAIC0yOCwxMiArMjgsMTIgQEAKIAog
I2lmIFVTRShRVUlDS19MT09LKQogCi0jaW1wb3J0ICJGaWxlU3lzdGVtLmgiCiAjaW1wb3J0ICJQ
cmV2aWV3Q29udmVydGVyLmgiCiAjaW1wb3J0ICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbXBvcnQg
IlNjaGVtZVJlZ2lzdHJ5LmgiCiAjaW1wb3J0IDxwYWwvaW9zL1F1aWNrTG9va1NvZnRMaW5rLmg+
CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL05TRmlsZU1hbmFnZXJTUEkuaD4KKyNpbXBvcnQgPHd0
Zi9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDx3dGYvTG9jay5oPgogI2ltcG9ydCA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9X
ZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW0KaW5kZXggYmY4MjE4Mzk5MTVlODBkNTg5OWE5
NDg5OTlmMmYwMjA2ZDhjZmYzYS4uMzU0NWQ3ZWZjYWM4Njc2NDhmNDlhNDc0ZThhMDIwYjUxYzg4
ZDRkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92
aWRlclBhc3RlYm9hcmQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0
ZW1Qcm92aWRlclBhc3RlYm9hcmQubW0KQEAgLTM0LDExICszNCwxMSBAQAogI2ltcG9ydCA8VUlL
aXQvTlNJdGVtUHJvdmlkZXIrVUlLaXRBZGRpdGlvbnMuaD4KICNpbXBvcnQgPFVJS2l0L1VJQ29s
b3IuaD4KICNpbXBvcnQgPFVJS2l0L1VJSW1hZ2UuaD4KLSNpbXBvcnQgPFdlYkNvcmUvRmlsZVN5
c3RlbS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYXN0ZWJvYXJkLmg+CiAjaW1wb3J0IDxwYWwvaW9z
L1VJS2l0U29mdExpbmsuaD4KICNpbXBvcnQgPHBhbC9zcGkvaW9zL1VJS2l0U1BJLmg+CiAjaW1w
b3J0IDx3dGYvQmxvY2tQdHIuaD4KKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0
IDx3dGYvT1NPYmplY3RQdHIuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIApAQCAtNjk0
LDcgKzY5NCw3IEBAIHN0YXRpYyBOU1VSTCAqbGlua1RlbXBvcmFyeUl0ZW1Qcm92aWRlckZpbGVz
VG9Ecm9wU3RhZ2luZ0RpcmVjdG9yeShOU1VSTCAqdXJsLCBOCiAgICAgaWYgKCF1cmwpCiAgICAg
ICAgIHJldHVybiBuaWw7CiAKLSAgICBOU1N0cmluZyAqdGVtcG9yYXJ5RGF0YUludGVyYWN0aW9u
RGlyZWN0b3J5ID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5
KGRhdGFJbnRlcmFjdGlvbkRpcmVjdG9yeVByZWZpeCk7CisgICAgTlNTdHJpbmcgKnRlbXBvcmFy
eURhdGFJbnRlcmFjdGlvbkRpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURp
cmVjdG9yeShkYXRhSW50ZXJhY3Rpb25EaXJlY3RvcnlQcmVmaXgpOwogICAgIGlmICghdGVtcG9y
YXJ5RGF0YUludGVyYWN0aW9uRGlyZWN0b3J5KQogICAgICAgICByZXR1cm4gbmlsOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRmlsZVN5c3RlbU1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9GaWxlU3lzdGVtTWFjLm1tCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA4ZWQ3NTFhN2VjMGU1ZDBiYWY3NzRmOTg2MTBhY2IwNDVjZDJiMDA0
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9GaWxlU3lzdGVtTWFjLm1tCisrKyAvZGV2L251bGwKQEAgLTEs
ODggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNy0yMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0
ICJGaWxlU3lzdGVtLmgiCi0KLSNpZiBQTEFURk9STShNQUMpCi0KLSNpbXBvcnQgPHBhbC9zcGkv
bWFjL01ldGFkYXRhU1BJLmg+Ci0jaW1wb3J0IDx3dGYvY29jb2EvTlNVUkxFeHRyYXMuaD4KLSNp
bXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWJv
b2wgRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKQot
ewotICAgIGF1dG8gZmlsZU1hbmFnZXIgPSBhZG9wdE5TKFtbTlNGaWxlTWFuYWdlciBhbGxvY10g
aW5pdF0pOwotCi0gICAgaWYgKE5TQXJyYXkgKmRpcmVjdG9yeUNvbnRlbnRzID0gW2ZpbGVNYW5h
Z2VyIGNvbnRlbnRzT2ZEaXJlY3RvcnlBdFBhdGg6cGF0aCBlcnJvcjpudWxscHRyXSkgewotICAg
ICAgICAvLyBFeHBsaWNpdGx5IGxvb2sgZm9yIGFuZCBkZWxldGUgLkRTX1N0b3JlIGZpbGVzLgot
ICAgICAgICBpZiAoZGlyZWN0b3J5Q29udGVudHMuY291bnQgPT0gMSAmJiBbZGlyZWN0b3J5Q29u
dGVudHMuZmlyc3RPYmplY3QgaXNFcXVhbFRvU3RyaW5nOkAiLkRTX1N0b3JlIl0pCi0gICAgICAg
ICAgICBbZmlsZU1hbmFnZXIgcmVtb3ZlSXRlbUF0UGF0aDpbcGF0aCBzdHJpbmdCeUFwcGVuZGlu
Z1BhdGhDb21wb25lbnQ6ZGlyZWN0b3J5Q29udGVudHMuZmlyc3RPYmplY3RdIGVycm9yOm51bGxw
dHJdOwotICAgIH0KLQotICAgIC8vIHJtZGlyKC4uLikgcmV0dXJucyAwIG9uIHN1Y2Nlc3NmdWwg
ZGVsZXRpb24gb2YgdGhlIHBhdGggYW5kIG5vbi16ZXJvIGluIGFueSBvdGhlciBjYXNlIChpbmNs
dWRpbmcgaW52YWxpZCBwZXJtaXNzaW9ucyBvciBub24tZXhpc3RlbnQgZmlsZSkKLSAgICByZXR1
cm4gIXJtZGlyKEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRh
KCkpOwotfQotCi12b2lkIEZpbGVTeXN0ZW06OnNldE1ldGFkYXRhVVJMKGNvbnN0IFN0cmluZyYg
cGF0aCwgY29uc3QgU3RyaW5nJiBtZXRhZGF0YVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiByZWZl
cnJlcikKLXsKLSAgICBTdHJpbmcgdXJsU3RyaW5nOwotICAgIGlmIChOU1VSTCAqdXJsID0gVVJM
V2l0aFVzZXJUeXBlZFN0cmluZyhtZXRhZGF0YVVSTFN0cmluZywgbmlsKSkKLSAgICAgICAgdXJs
U3RyaW5nID0gV1RGOjp1c2VyVmlzaWJsZVN0cmluZyhXVEY6OlVSTEJ5UmVtb3ZpbmdVc2VySW5m
byh1cmwpKTsKLSAgICBlbHNlCi0gICAgICAgIHVybFN0cmluZyA9IG1ldGFkYXRhVVJMU3RyaW5n
OwotCi0gICAgLy8gQ2FsbCBNZXRhZGF0YSBBUEkgb24gYSBiYWNrZ3JvdW5kIHF1ZXVlIGJlY2F1
c2UgaXQgY2FuIHRha2Ugc29tZSB0aW1lLgotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dl
dF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVGQVVMVCwgMCksIFtwYXRo
ID0gcGF0aC5pc29sYXRlZENvcHkoKSwgdXJsU3RyaW5nID0gdXJsU3RyaW5nLmlzb2xhdGVkQ29w
eSgpLCByZWZlcnJlciA9IHJlZmVycmVyLmlzb2xhdGVkQ29weSgpXSB7Ci0gICAgICAgIGF1dG8g
aXRlbSA9IGFkb3B0Q0YoTURJdGVtQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHBhdGguY3Jl
YXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOwotICAgICAgICBpZiAoIWl0ZW0pCi0gICAgICAgICAgICBy
ZXR1cm47Ci0KLSAgICAgICAgYXV0byB3aGVyZUZyb21BdHRyaWJ1dGUgPSBhZG9wdE5TKFtbTlNN
dXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czp1cmxTdHJpbmcsIG5pbF0pOwotICAg
ICAgICBpZiAoIXJlZmVycmVyLmlzTnVsbCgpKQotICAgICAgICAgICAgW3doZXJlRnJvbUF0dHJp
YnV0ZSBhZGRPYmplY3Q6cmVmZXJyZXJdOwotCi0gICAgICAgIE1ESXRlbVNldEF0dHJpYnV0ZShp
dGVtLmdldCgpLCBrTURJdGVtV2hlcmVGcm9tcywgKF9fYnJpZGdlIENGQXJyYXlSZWYpd2hlcmVG
cm9tQXR0cmlidXRlLmdldCgpKTsKLSAgICAgICAgTURJdGVtU2V0QXR0cmlidXRlKGl0ZW0uZ2V0
KCksIGtNREl0ZW1Eb3dubG9hZGVkRGF0ZSwgKF9fYnJpZGdlIENGQXJyYXlSZWYpQFsgW05TRGF0
ZSBkYXRlXSBdKTsKLSAgICB9KTsKLX0KLQotYm9vbCBGaWxlU3lzdGVtOjpjYW5FeGNsdWRlRnJv
bUJhY2t1cCgpCi17Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgRmlsZVN5c3RlbTo6ZXhj
bHVkZUZyb21CYWNrdXAoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIC8vIEl0IGlzIGNyaXRp
Y2FsIHRvIHBhc3MgRkFMU0UgZm9yIGV4Y2x1ZGVCeVBhdGggYmVjYXVzZSBleGNsdWRpbmcgYnkg
cGF0aCByZXF1aXJlcyByb290IHByaXZpbGVnZXMuCi0gICAgQ1NCYWNrdXBTZXRJdGVtRXhjbHVk
ZWQoRmlsZVN5c3RlbTo6cGF0aEFzVVJMKHBhdGgpLmdldCgpLCBUUlVFLCBGQUxTRSk7Ci0gICAg
cmV0dXJuIHRydWU7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFBM
QVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVj
b3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXJDb2NvYS5tbQppbmRleCBkN2UzZjM5YTY3YjM3M2I4Mzg3OWM4NDA5YzU4YjA4OThkMzQ3
OWVjLi5kNzllMmY2MGM2MDk0MDNhYmRmYzAyYWViZjcwYTI2YmNjZGYyZjNmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCkBAIC0y
OSwxMyArMjksMTMgQEAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFU
SU9OKQogCiAjaW5jbHVkZSAiQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oIgotI2luY2x1ZGUgIkZp
bGVTeXN0ZW0uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1U
cmFja1ByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJBdWRpb0J1ZmZlckxpc3QuaCIKICNpbmNsdWRl
IDxBVkZvdW5kYXRpb24vQVZBc3NldFdyaXRlci5oPgogI2luY2x1ZGUgPEFWRm91bmRhdGlvbi9B
VkFzc2V0V3JpdGVySW5wdXQuaD4KICNpbmNsdWRlIDxwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsu
aD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiB0eXBlZGVmIEFWQXNzZXRXcml0ZXIg
QVZBc3NldFdyaXRlclR5cGU7CiB0eXBlZGVmIEFWQXNzZXRXcml0ZXJJbnB1dCBBVkFzc2V0V3Jp
dGVySW5wdXRUeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuY3BwCmluZGV4IGI2M2YwNjEyYWJmY2I4NjZkYTBj
ZWQwYTIzNWRjMTU1OTNmZjA1ZWQuLjVhYmZkNzVjYjQ5NDU2ZTQyZDM5ZDQ0ZDNiYzIyNTlhYWZm
YTUyMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRh
dGFGaWxlUmVmZXJlbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5jcHAKQEAgLTI3LDggKzI3LDggQEAKICNpbmNsdWRlICJC
bG9iRGF0YUZpbGVSZWZlcmVuY2UuaCIKIAogI2luY2x1ZGUgIkZpbGUuaCIKLSNpbmNsdWRlICJG
aWxlTWV0YWRhdGEuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCisjaW5jbHVkZSA8d3RmL0Zp
bGVNZXRhZGF0YS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9C
bG9iUmVnaXN0cnlJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxv
YlJlZ2lzdHJ5SW1wbC5jcHAKaW5kZXggODBiNDFlOTc1ZTRkNjE0M2FmNGM5OTYxMTc1NDdiYjg5
MmVkYTMxOC4uMWM3MDZhYTM0NmNhZGRlYTM5ZTUwMGQ4MDMwNGNkNDk0YmQ4MjY4MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwu
Y3BwCkBAIC0zNSwxMyArMzUsMTMgQEAKICNpbmNsdWRlICJCbG9iRGF0YS5oIgogI2luY2x1ZGUg
IkJsb2JQYXJ0LmgiCiAjaW5jbHVkZSAiQmxvYlJlc291cmNlSGFuZGxlLmgiCi0jaW5jbHVkZSAi
RmlsZU1ldGFkYXRhLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIlJlc291
cmNlRXJyb3IuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlJlc291
cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlIDx3
dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZU1ldGFkYXRhLmg+Cisj
aW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgog
I2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VI
YW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VI
YW5kbGUuY3BwCmluZGV4IGM5NGUzOTQ5NGI4ZTMyNmRiNGExMmEyNzIwMWE0NjIzOGRlMThjNGIu
LmNjNjdjZTY4OGYzYmNhMjIyNjkwYjQzZjEwNTg3OGJhOWUzYzI4ZjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAK
QEAgLTM1LDE5ICszNSwxOSBAQAogI2luY2x1ZGUgIkFzeW5jRmlsZVN0cmVhbS5oIgogI2luY2x1
ZGUgIkJsb2JEYXRhLmgiCiAjaW5jbHVkZSAiRmlsZVN0cmVhbS5oIgotI2luY2x1ZGUgIkZpbGVT
eXN0ZW0uaCIKICNpbmNsdWRlICJIVFRQSGVhZGVyTmFtZXMuaCIKICNpbmNsdWRlICJIVFRQUGFy
c2Vycy5oIgogI2luY2x1ZGUgIlBhcnNlZENvbnRlbnRSYW5nZS5oIgotI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5k
bGVDbGllbnQuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNv
dXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3Rm
L0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNs
dWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3
dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAppbmRleCA1NGU0YWMwNDk2MmEyMjE5MDdlM2I3ZDgw
YTRmYmFjYmUyNTRiMzk5Li43Yjc2YTVlZWRlOTlmOTQ5YzgxZTY5Y2ZlMWJkYmI4OTZjY2MyNjdl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcApAQCAt
MjksMTIgKzI5LDEyIEBACiAjaW5jbHVkZSAiRE9NRm9ybURhdGEuaCIKICNpbmNsdWRlICJEb2N1
bWVudC5oIgogI2luY2x1ZGUgIkZpbGUuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5j
bHVkZSAiRm9ybURhdGFCdWlsZGVyLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlNo
YXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgogI2luY2x1ZGUgIlRocmVh
ZGFibGVCbG9iUmVnaXN0cnkuaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L0xpbmVFbmRpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNG
TmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJl
YW1DRk5ldC5jcHAKaW5kZXggOWUyZDg4MWQ2MzU0OTE1MjVkNzFhZjQ1NmMyZDE5NWZkMTNiOTRk
Ni4uYTc0YWU1YWFjOWNiMjYyM2RjOWNhNWE4YWE0MGFjMzQwMjEyZjJkNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFt
Q0ZOZXQuY3BwCkBAIC0zMCwxMSArMzAsMTEgQEAKICNpbmNsdWRlICJGb3JtRGF0YVN0cmVhbUNG
TmV0LmgiCiAKICNpbmNsdWRlICJCbG9iRGF0YS5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIK
ICNpbmNsdWRlICJGb3JtRGF0YS5oIgogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAjaW5jbHVkZSA8
c3lzL3R5cGVzLmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYv
RmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL01h
aW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RD
b2NvYS5tbQppbmRleCAyN2ZmOWQxY2E4ZWZhMWZkZDZlZGYyODg2NDg2NDc5NDlmODgxYTk2Li4y
ZmVjMWYzODM0ZTQxMTZhMWRkNGNlYjFmNjMyODk4ZDVlY2UxNDBkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1
ZXN0Q29jb2EubW0KQEAgLTI4LDEzICsyOCwxMyBAQAogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAK
LSNpbXBvcnQgIkZpbGVTeXN0ZW0uaCIKICNpbXBvcnQgIkZvcm1EYXRhU3RyZWFtTWFjLmgiCiAj
aW1wb3J0ICJIVFRQSGVhZGVyTmFtZXMuaCIKICNpbXBvcnQgIlJlc291cmNlUmVxdWVzdENGTmV0
LmgiCiAjaW1wb3J0ICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKICNpbXBvcnQgPEZvdW5k
YXRpb24vRm91bmRhdGlvbi5oPgogI2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4K
KyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwCmluZGV4IGMyM2ZkNzJmMTkxNzEwMjA4MmUx
MjFlNDRkNThlZGQ4YTMyZDFlNzEuLjI2MzYyMjg4Yjg2OWQ4YzdiYjM0MTdmNzZmNDBiNjNjYzU3
ZjdhNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
b29raWVKYXJEQi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0Nvb2tpZUphckRCLmNwcApAQCAtMjYsMTAgKzI2LDkgQEAKICNpbmNsdWRlICJDb29raWVKYXJE
Qi5oIgogCiAjaW5jbHVkZSAiQ29va2llVXRpbC5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIK
ICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiU1FMaXRlRmlsZVN5c3RlbS5oIgotCisj
aW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTW9ub3RvbmljVGltZS5o
PgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuaAppbmRleCBjYmM0NWZlZDJiNjM4ZWE2
MmQ5MTJlYzdlZDJkNjYxNDNiOGY5ZDZiLi4xMTAyN2NlM2IzY2Y2Mzg4Zjk5NTRhYWY0OWM0OTAz
ZmU5M2ZkZmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybENhY2hlRW50cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybENhY2hlRW50cnkuaApAQCAtMjYsMTEgKzI2LDExIEBACiAKICNwcmFnbWEgb25j
ZQogCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkhUVFBIZWFkZXJNYXAuaCIK
ICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5o
IgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3Rl
bS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
ICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcAppbmRleCA0M2Jj
MmU3YmZmZjRmOWJkNmY3MTAyODVkNmQzZDg2MzFiYjc3ODNhLi5mYTVjOGQyZDIxYjYyNzM4MTVk
MDIzYTRmMjA0NTUwMTZlOTYzOGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCkBAIC0zMCwxMiArMzAs
MTIgQEAKIAogI2luY2x1ZGUgIkN1cmxDYWNoZU1hbmFnZXIuaCIKIAotI2luY2x1ZGUgIkZpbGVT
eXN0ZW0uaCIKICNpbmNsdWRlICJIVFRQSGVhZGVyTWFwLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5o
IgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VI
YW5kbGVJbnRlcm5hbC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgorI2luY2x1ZGUg
PHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybEZvcm1EYXRh
U3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybEZvcm1E
YXRhU3RyZWFtLmgKaW5kZXggYzhlZjMzM2UwZDhjMGUwMjhlY2Q4YTQ2ZDgyNmI5MDY3MWEwMGUw
Yy4uMDllN2ZkYmI0YTJjZmFiNGI5MDczMmYwNjExNGJlMDgxMTNiYjUxZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxGb3JtRGF0YVN0cmVhbS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRm9ybURhdGFT
dHJlYW0uaApAQCAtMjYsOCArMjYsOCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkZp
bGVTeXN0ZW0uaCIKICNpbmNsdWRlICJGb3JtRGF0YS5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lz
dGVtLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVl
c3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5o
CmluZGV4IGZkYzRiNTkwYzE0MmNmNmRjOTgwNzdkOWY3NWQ3ODY1NjM2MTk2OWQuLjkzY2E2MTAz
ZmU2M2Q1ZmYwMzEwNTVjODI1ZDgwMjgyNzY0YWVkYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oCkBAIC0zMiwxMCArMzIsMTAg
QEAKICNpbmNsdWRlICJDdXJsUmVxdWVzdFNjaGVkdWxlckNsaWVudC5oIgogI2luY2x1ZGUgIkN1
cmxSZXNwb25zZS5oIgogI2luY2x1ZGUgIkN1cmxTU0xWZXJpZmllci5oIgotI2luY2x1ZGUgIkZp
bGVTeXN0ZW0uaCIKICNpbmNsdWRlICJOZXR3b3JrTG9hZE1ldHJpY3MuaCIKICNpbmNsdWRlICJQ
cm90ZWN0aW9uU3BhY2UuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKKyNpbmNsdWRl
IDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9NZXNzYWdlUXVldWUuaD4KICNpbmNs
dWRlIDx3dGYvTW9ub3RvbmljVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtT
dG9yYWdlU2Vzc2lvbkN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCmluZGV4IGEzNDJlYzVmMGE1NTIxMWFi
NzM0N2U0MTEzZTMxNzI1YWM0MGIyZmQuLjA1YjU2NzIzMmJiZDY2ZjBiZDA3MWRkYjhhMGYwY2Rh
ZmY2ZWZhYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAKQEAgLTMzLDEw
ICszMyw5IEBACiAjaW5jbHVkZSAiQ29va2llSmFyREIuaCIKICNpbmNsdWRlICJDb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRQcm94eS5oIgogI2luY2x1ZGUgIkN1cmxDb250ZXh0LmgiCi0jaW5jbHVk
ZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVk
ZSAiUmVzb3VyY2VIYW5kbGUuaCIKLQorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5j
bHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
ICNpbmNsdWRlIDx3dGYvVVJMLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCmluZGV4IGU1MWU3YWJm
MGEwNTVhMDhkOGY5NThmNWIxZWYxY2EyNjRhOGI3MjYuLjdiZTAwYWQzNGI4ZTU5ODgyZGUwZjUx
M2I2YzJkZGY5MDExZjk5ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCkBAIC0zOCw3ICszOCw2
IEBACiAjaW5jbHVkZSAiQ3VybENhY2hlTWFuYWdlci5oIgogI2luY2x1ZGUgIkN1cmxDb250ZXh0
LmgiCiAjaW5jbHVkZSAiQ3VybFJlcXVlc3QuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAj
aW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAi
TmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgiCkBAIC00OCw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiU3lu
Y2hyb25vdXNMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKICNpbmNs
dWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9CbG9iRGF0YUZp
bGVSZWZlcmVuY2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9C
bG9iRGF0YUZpbGVSZWZlcmVuY2VNYWMubW0KaW5kZXggZmNmNTVkNzZlYTQ1ZWJiMDY3MDQzZWNk
ZmM4Y2YwOGNjOTI0NmEyOS4uYjY5MjkyMGIyMWZjNjYzOWQ1NzQ1ZDFjMDQ0ZThiNzg3ODIzNTBk
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQmxvYkRh
dGFGaWxlUmVmZXJlbmNlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvbWFjL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZU1hYy5tbQpAQCAtMjgsOCArMjgsOCBAQAogCiAj
aWYgRU5BQkxFKEZJTEVfUkVQTEFDRU1FTlQpCiAKLSNpbmNsdWRlICJGaWxlTWV0YWRhdGEuaCIK
LSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVNZXRhZGF0YS5oPgor
I2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL1NvZnRMaW5raW5nLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCmlu
ZGV4IDYzNzM0YzY3NGM1MmVlOTVkYzZjOWU0MjFjNDY2MGY0MTg0MDBiYWEuLjA4MTVlYTY4OGU3
NjY5MjdlNjYzZDQwNTYxNDlkYmQzNjhlNjQ2Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCkBA
IC0zMiw3ICszMiw2IEBACiAjaWYgVVNFKFNPVVApCiAKICNpbmNsdWRlICJDcmVkZW50aWFsU3Rv
cmFnZS5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJHVW5pcXVlUHRyU291
cC5oIgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5n
cy5oIgpAQCAtNTcsNiArNTYsNyBAQAogI2luY2x1ZGUgPHVuaXN0ZC5oPgogI2VuZGlmCiAjaW5j
bHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0u
aD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvUnVu
TG9vcFNvdXJjZVByaW9yaXR5Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3Jr
U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5l
dHdvcmtTZXNzaW9uLmNwcAppbmRleCAzNDNmYWViOWZlYjIxOTRjY2MzZWY3NzlkNzdkM2Y2YjRk
MWVkYzg3Li5iOTY3Nzk1OTgwZWU4ZmE0Yzk5NTAwZmZkZjM0YjQyMDJlYjJhMmRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNz
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5l
dHdvcmtTZXNzaW9uLmNwcApAQCAtMzAsMTMgKzMwLDEzIEBACiAjaW5jbHVkZSAiU291cE5ldHdv
cmtTZXNzaW9uLmgiCiAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgotI2lu
Y2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJHVW5pcXVlUHRyU291cC5oIgogI2luY2x1
ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJTb3VwTmV0d29ya1Byb3h5U2V0dGluZ3MuaCIKICNp
bmNsdWRlIDxnbGliL2dzdGRpby5oPgogI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgogI2luY2x1
ZGUgPHBhbC9jcnlwdG8vQ3J5cHRvRGlnZXN0Lmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0u
aD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3ll
ZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDk0ODUxMzUyNTE4ZDYwNmJlYTI1ZWVlYTMzNjE4NTI4MDMzNGNmY2MuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ5
MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5h
bWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQK
LSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKLQotI2lu
Y2x1ZGUgIkZpbGVNZXRhZGF0YS5oIgotI2luY2x1ZGUgPGRpcmVudC5oPgotI2luY2x1ZGUgPGVy
cm5vLmg+Ci0jaW5jbHVkZSA8ZmNudGwuaD4KLSNpbmNsdWRlIDxmbm1hdGNoLmg+Ci0jaW5jbHVk
ZSA8bGliZ2VuLmg+Ci0jaW5jbHVkZSA8c3RkaW8uaD4KLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgot
I2luY2x1ZGUgPHN5cy9zdGF0dmZzLmg+Ci0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaW5jbHVk
ZSA8dW5pc3RkLmg+Ci0jaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KLSNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgotI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5h
bWVzcGFjZSBGaWxlU3lzdGVtIHsKLQotYm9vbCBmaWxlRXhpc3RzKGNvbnN0IFN0cmluZyYgcGF0
aCkKLXsKLSAgICBpZiAocGF0aC5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgQ1N0cmluZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKLQotICAg
IGlmICghZnNSZXAuZGF0YSgpIHx8IGZzUmVwLmRhdGEoKVswXSA9PSAnXDAnKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gYWNjZXNzKGZzUmVwLmRhdGEoKSwgRl9PSykgIT0g
LTE7Ci19Ci0KLWJvb2wgZGVsZXRlRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgQ1N0
cmluZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKLQotICAgIGlmICgh
ZnNSZXAuZGF0YSgpIHx8IGZzUmVwLmRhdGEoKVswXSA9PSAnXDAnKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICAvLyB1bmxpbmsoLi4uKSByZXR1cm5zIDAgb24gc3VjY2Vzc2Z1bCBkZWxl
dGlvbiBvZiB0aGUgcGF0aCBhbmQgbm9uLXplcm8gaW4gYW55IG90aGVyIGNhc2UgKGluY2x1ZGlu
ZyBpbnZhbGlkIHBlcm1pc3Npb25zIG9yIG5vbi1leGlzdGVudCBmaWxlKQotICAgIHJldHVybiAh
dW5saW5rKGZzUmVwLmRhdGEoKSk7Ci19Ci0KLVBsYXRmb3JtRmlsZUhhbmRsZSBvcGVuRmlsZShj
b25zdCBTdHJpbmcmIHBhdGgsIEZpbGVPcGVuTW9kZSBtb2RlKQotewotICAgIENTdHJpbmcgZnNS
ZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7Ci0KLSAgICBpZiAoZnNSZXAuaXNO
dWxsKCkpCi0gICAgICAgIHJldHVybiBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOwotCi0gICAg
aW50IHBsYXRmb3JtRmxhZyA9IDA7Ci0gICAgaWYgKG1vZGUgPT0gRmlsZU9wZW5Nb2RlOjpSZWFk
KQotICAgICAgICBwbGF0Zm9ybUZsYWcgfD0gT19SRE9OTFk7Ci0gICAgZWxzZSBpZiAobW9kZSA9
PSBGaWxlT3Blbk1vZGU6OldyaXRlKQotICAgICAgICBwbGF0Zm9ybUZsYWcgfD0gKE9fV1JPTkxZ
IHwgT19DUkVBVCB8IE9fVFJVTkMpOwotI2lmIE9TKERBUldJTikKLSAgICBlbHNlIGlmIChtb2Rl
ID09IEZpbGVPcGVuTW9kZTo6RXZlbnRzT25seSkKLSAgICAgICAgcGxhdGZvcm1GbGFnIHw9IE9f
RVZUT05MWTsKLSNlbmRpZgotCi0gICAgcmV0dXJuIG9wZW4oZnNSZXAuZGF0YSgpLCBwbGF0Zm9y
bUZsYWcsIDA2NjYpOwotfQotCi12b2lkIGNsb3NlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUmIGhh
bmRsZSkKLXsKLSAgICBpZiAoaXNIYW5kbGVWYWxpZChoYW5kbGUpKSB7Ci0gICAgICAgIGNsb3Nl
KGhhbmRsZSk7Ci0gICAgICAgIGhhbmRsZSA9IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7Ci0g
ICAgfQotfQotCi1sb25nIGxvbmcgc2Vla0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwg
bG9uZyBsb25nIG9mZnNldCwgRmlsZVNlZWtPcmlnaW4gb3JpZ2luKQotewotICAgIGludCB3aGVu
Y2UgPSBTRUVLX1NFVDsKLSAgICBzd2l0Y2ggKG9yaWdpbikgewotICAgIGNhc2UgRmlsZVNlZWtP
cmlnaW46OkJlZ2lubmluZzoKLSAgICAgICAgd2hlbmNlID0gU0VFS19TRVQ7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgRmlsZVNlZWtPcmlnaW46OkN1cnJlbnQ6Ci0gICAgICAgIHdoZW5jZSA9
IFNFRUtfQ1VSOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEZpbGVTZWVrT3JpZ2luOjpFbmQ6
Ci0gICAgICAgIHdoZW5jZSA9IFNFRUtfRU5EOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0
OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci0gICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGxvbmcgbG9uZz4obHNlZWsoaGFuZGxlLCBvZmZzZXQsIHdoZW5jZSkpOwotfQotCi1i
b29sIHRydW5jYXRlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBsb25nIGxvbmcgb2Zm
c2V0KQotewotICAgIC8vIGZ0cnVuY2F0ZSByZXR1cm5zIDAgdG8gaW5kaWNhdGUgdGhlIHN1Y2Nl
c3MuCi0gICAgcmV0dXJuICFmdHJ1bmNhdGUoaGFuZGxlLCBvZmZzZXQpOwotfQotCi1pbnQgd3Jp
dGVUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY29uc3QgY2hhciogZGF0YSwgaW50
IGxlbmd0aCkKLXsKLSAgICBkbyB7Ci0gICAgICAgIGludCBieXRlc1dyaXR0ZW4gPSB3cml0ZSho
YW5kbGUsIGRhdGEsIHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSk7Ci0gICAgICAgIGlmIChi
eXRlc1dyaXR0ZW4gPj0gMCkKLSAgICAgICAgICAgIHJldHVybiBieXRlc1dyaXR0ZW47Ci0gICAg
fSB3aGlsZSAoZXJybm8gPT0gRUlOVFIpOwotICAgIHJldHVybiAtMTsKLX0KLQotaW50IHJlYWRG
cm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3Ro
KQotewotICAgIGRvIHsKLSAgICAgICAgaW50IGJ5dGVzUmVhZCA9IHJlYWQoaGFuZGxlLCBkYXRh
LCBzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkpOwotICAgICAgICBpZiAoYnl0ZXNSZWFkID49
IDApCi0gICAgICAgICAgICByZXR1cm4gYnl0ZXNSZWFkOwotICAgIH0gd2hpbGUgKGVycm5vID09
IEVJTlRSKTsKLSAgICByZXR1cm4gLTE7Ci19Ci0KLSNpZiBVU0UoRklMRV9MT0NLKQotYm9vbCBs
b2NrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBPcHRpb25TZXQ8RmlsZUxvY2tNb2Rl
PiBsb2NrTW9kZSkKLXsKLSAgICBDT01QSUxFX0FTU0VSVChMT0NLX1NIID09IFdURjo6ZW51bVRv
VW5kZXJseWluZ1R5cGUoRmlsZUxvY2tNb2RlOjpTaGFyZWQpLCBMb2NrU2hhcmVkRW5jb2RpbmdJ
c0FzRXhwZWN0ZWQpOwotICAgIENPTVBJTEVfQVNTRVJUKExPQ0tfRVggPT0gV1RGOjplbnVtVG9V
bmRlcmx5aW5nVHlwZShGaWxlTG9ja01vZGU6OkV4Y2x1c2l2ZSksIExvY2tFeGNsdXNpdmVFbmNv
ZGluZ0lzQXNFeHBlY3RlZCk7Ci0gICAgQ09NUElMRV9BU1NFUlQoTE9DS19OQiA9PSBXVEY6OmVu
dW1Ub1VuZGVybHlpbmdUeXBlKEZpbGVMb2NrTW9kZTo6Tm9uYmxvY2tpbmcpLCBMb2NrTm9uYmxv
Y2tpbmdFbmNvZGluZ0lzQXNFeHBlY3RlZCk7Ci0gICAgaW50IHJlc3VsdCA9IGZsb2NrKGhhbmRs
ZSwgbG9ja01vZGUudG9SYXcoKSk7Ci0gICAgcmV0dXJuIChyZXN1bHQgIT0gLTEpOwotfQotCi1i
b29sIHVubG9ja0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSkKLXsKLSAgICBpbnQgcmVz
dWx0ID0gZmxvY2soaGFuZGxlLCBMT0NLX1VOKTsKLSAgICByZXR1cm4gKHJlc3VsdCAhPSAtMSk7
Ci19Ci0jZW5kaWYKLQotI2lmICFQTEFURk9STShNQUMpCi1ib29sIGRlbGV0ZUVtcHR5RGlyZWN0
b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKHBhdGgpOwotCi0gICAgaWYgKCFmc1JlcC5kYXRhKCkgfHwgZnNSZXAu
ZGF0YSgpWzBdID09ICdcMCcpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIHJtZGly
KC4uLikgcmV0dXJucyAwIG9uIHN1Y2Nlc3NmdWwgZGVsZXRpb24gb2YgdGhlIHBhdGggYW5kIG5v
bi16ZXJvIGluIGFueSBvdGhlciBjYXNlIChpbmNsdWRpbmcgaW52YWxpZCBwZXJtaXNzaW9ucyBv
ciBub24tZXhpc3RlbnQgZmlsZSkKLSAgICByZXR1cm4gIXJtZGlyKGZzUmVwLmRhdGEoKSk7Ci19
Ci0jZW5kaWYKLQotYm9vbCBnZXRGaWxlU2l6ZShjb25zdCBTdHJpbmcmIHBhdGgsIGxvbmcgbG9u
ZyYgcmVzdWx0KQotewotICAgIENTdHJpbmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24ocGF0aCk7Ci0KLSAgICBpZiAoIWZzUmVwLmRhdGEoKSB8fCBmc1JlcC5kYXRhKClbMF0gPT0g
J1wwJykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgc3RydWN0IHN0YXQgZmlsZUluZm87
Ci0KLSAgICBpZiAoc3RhdChmc1JlcC5kYXRhKCksICZmaWxlSW5mbykpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIHJlc3VsdCA9IGZpbGVJbmZvLnN0X3NpemU7Ci0gICAgcmV0dXJuIHRy
dWU7Ci19Ci0KLWJvb2wgZ2V0RmlsZVNpemUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgbG9u
ZyBsb25nJiByZXN1bHQpCi17Ci0gICAgc3RydWN0IHN0YXQgZmlsZUluZm87Ci0gICAgaWYgKGZz
dGF0KGhhbmRsZSwgJmZpbGVJbmZvKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmVz
dWx0ID0gZmlsZUluZm8uc3Rfc2l6ZTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotT3B0aW9uYWw8
V2FsbFRpbWU+IGdldEZpbGVDcmVhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoKQotewotI2lm
IE9TKERBUldJTikgfHwgT1MoT1BFTkJTRCkgfHwgT1MoTkVUQlNEKSB8fCBPUyhGUkVFQlNEKQot
ICAgIENTdHJpbmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7Ci0KLSAg
ICBpZiAoIWZzUmVwLmRhdGEoKSB8fCBmc1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIHN0cnVjdCBzdGF0IGZpbGVJbmZvOwotCi0gICAg
aWYgKHN0YXQoZnNSZXAuZGF0YSgpLCAmZmlsZUluZm8pKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwotCi0gICAgcmV0dXJuIFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhmaWxlSW5mby5z
dF9iaXJ0aHRpbWUpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0ocGF0aCk7Ci0gICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKLSNlbmRpZgotfQotCi1PcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZU1v
ZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIENTdHJpbmcgZnNSZXAg
PSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7Ci0KLSAgICBpZiAoIWZzUmVwLmRhdGEo
KSB8fCBmc1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKLQotICAgIHN0cnVjdCBzdGF0IGZpbGVJbmZvOwotCi0gICAgaWYgKHN0YXQoZnNSZXAuZGF0
YSgpLCAmZmlsZUluZm8pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgcmV0
dXJuIFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhmaWxlSW5mby5zdF9tdGltZSk7Ci19Ci0KLXN0
YXRpYyBGaWxlTWV0YWRhdGE6OlR5cGUgdG9GaWxlTWV0YXRhVHlwZShzdHJ1Y3Qgc3RhdCBmaWxl
SW5mbykKLXsKLSAgICBpZiAoU19JU0RJUihmaWxlSW5mby5zdF9tb2RlKSkKLSAgICAgICAgcmV0
dXJuIEZpbGVNZXRhZGF0YTo6VHlwZTo6RGlyZWN0b3J5OwotICAgIGlmIChTX0lTTE5LKGZpbGVJ
bmZvLnN0X21vZGUpKQotICAgICAgICByZXR1cm4gRmlsZU1ldGFkYXRhOjpUeXBlOjpTeW1ib2xp
Y0xpbms7Ci0gICAgcmV0dXJuIEZpbGVNZXRhZGF0YTo6VHlwZTo6RmlsZTsKLX0KLQotc3RhdGlj
IE9wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhVXNpbmdGdW5jdGlvbihjb25zdCBT
dHJpbmcmIHBhdGgsIGludCAoKnN0YXRGdW5jKShjb25zdCBjaGFyKiwgc3RydWN0IHN0YXQqKSkK
LXsKLSAgICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwot
Ci0gICAgaWYgKCFmc1JlcC5kYXRhKCkgfHwgZnNSZXAuZGF0YSgpWzBdID09ICdcMCcpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBzdHJ1Y3Qgc3RhdCBmaWxlSW5mbzsKLSAg
ICBpZiAoc3RhdEZ1bmMoZnNSZXAuZGF0YSgpLCAmZmlsZUluZm8pKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwotCi0gICAgU3RyaW5nIGZpbGVuYW1lID0gcGF0aEdldEZpbGVOYW1lKHBh
dGgpOwotICAgIGJvb2wgaXNIaWRkZW4gPSAhZmlsZW5hbWUuaXNFbXB0eSgpICYmIGZpbGVuYW1l
WzBdID09ICcuJzsKLSAgICByZXR1cm4gRmlsZU1ldGFkYXRhIHsKLSAgICAgICAgV2FsbFRpbWU6
OmZyb21SYXdTZWNvbmRzKGZpbGVJbmZvLnN0X210aW1lKSwKLSAgICAgICAgZmlsZUluZm8uc3Rf
c2l6ZSwKLSAgICAgICAgaXNIaWRkZW4sCi0gICAgICAgIHRvRmlsZU1ldGF0YVR5cGUoZmlsZUlu
Zm8pCi0gICAgfTsKLX0KLQotT3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGEoY29u
c3QgU3RyaW5nJiBwYXRoKQotewotICAgIHJldHVybiBmaWxlTWV0YWRhdGFVc2luZ0Z1bmN0aW9u
KHBhdGgsICZsc3RhdCk7Ci19Ci0KLU9wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRh
Rm9sbG93aW5nU3ltbGlua3MoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIHJldHVybiBmaWxl
TWV0YWRhdGFVc2luZ0Z1bmN0aW9uKHBhdGgsICZzdGF0KTsKLX0KLQotYm9vbCBjcmVhdGVTeW1i
b2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGlj
TGlua1BhdGgpCi17Ci0gICAgQ1N0cmluZyB0YXJnZXRQYXRoRlNSZXAgPSBmaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24odGFyZ2V0UGF0aCk7Ci0gICAgaWYgKCF0YXJnZXRQYXRoRlNSZXAuZGF0YSgp
IHx8IHRhcmdldFBhdGhGU1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgQ1N0cmluZyBzeW1ib2xpY0xpbmtQYXRoRlNSZXAgPSBmaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oc3ltYm9saWNMaW5rUGF0aCk7Ci0gICAgaWYgKCFzeW1ib2xpY0xpbmtQYXRo
RlNSZXAuZGF0YSgpIHx8IHN5bWJvbGljTGlua1BhdGhGU1JlcC5kYXRhKClbMF0gPT0gJ1wwJykK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuICFzeW1saW5rKHRhcmdldFBhdGhG
U1JlcC5kYXRhKCksIHN5bWJvbGljTGlua1BhdGhGU1JlcC5kYXRhKCkpOwotfQotCi1TdHJpbmcg
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5n
JiBjb21wb25lbnQpCi17Ci0gICAgaWYgKHBhdGguZW5kc1dpdGgoJy8nKSkKLSAgICAgICAgcmV0
dXJuIHBhdGggKyBjb21wb25lbnQ7Ci0gICAgcmV0dXJuIHBhdGggKyAiLyIgKyBjb21wb25lbnQ7
Ci19Ci0KLVN0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKFN0cmluZ1ZpZXcgcGF0aCwg
Y29uc3QgVmVjdG9yPFN0cmluZ1ZpZXc+JiBjb21wb25lbnRzKQotewotICAgIFN0cmluZ0J1aWxk
ZXIgYnVpbGRlcjsKLSAgICBidWlsZGVyLmFwcGVuZChwYXRoKTsKLSAgICBmb3IgKGF1dG8mIGNv
bXBvbmVudCA6IGNvbXBvbmVudHMpIHsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoJy8nKTsKLSAg
ICAgICAgYnVpbGRlci5hcHBlbmQoY29tcG9uZW50KTsKLSAgICB9Ci0gICAgcmV0dXJuIGJ1aWxk
ZXIudG9TdHJpbmcoKTsKLX0KLQotYm9vbCBtYWtlQWxsRGlyZWN0b3JpZXMoY29uc3QgU3RyaW5n
JiBwYXRoKQotewotICAgIENTdHJpbmcgZnVsbFBhdGggPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24ocGF0aCk7Ci0gICAgaWYgKCFhY2Nlc3MoZnVsbFBhdGguZGF0YSgpLCBGX09LKSkKLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0KLSAgICBjaGFyKiBwID0gZnVsbFBhdGgubXV0YWJsZURhdGEoKSAr
IDE7Ci0gICAgaW50IGxlbmd0aCA9IGZ1bGxQYXRoLmxlbmd0aCgpOwotCi0gICAgaWYocFtsZW5n
dGggLSAxXSA9PSAnLycpCi0gICAgICAgIHBbbGVuZ3RoIC0gMV0gPSAnXDAnOwotICAgIGZvciAo
OyAqcDsgKytwKQotICAgICAgICBpZiAoKnAgPT0gJy8nKSB7Ci0gICAgICAgICAgICAqcCA9ICdc
MCc7Ci0gICAgICAgICAgICBpZiAoYWNjZXNzKGZ1bGxQYXRoLmRhdGEoKSwgRl9PSykpCi0gICAg
ICAgICAgICAgICAgaWYgKG1rZGlyKGZ1bGxQYXRoLmRhdGEoKSwgU19JUldYVSkpCi0gICAgICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICpwID0gJy8nOwotICAgICAg
ICB9Ci0gICAgaWYgKGFjY2VzcyhmdWxsUGF0aC5kYXRhKCksIEZfT0spKQotICAgICAgICBpZiAo
bWtkaXIoZnVsbFBhdGguZGF0YSgpLCBTX0lSV1hVKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi1TdHJpbmcgcGF0aEdldEZpbGVOYW1lKGNvbnN0
IFN0cmluZyYgcGF0aCkKLXsKLSAgICByZXR1cm4gcGF0aC5zdWJzdHJpbmcocGF0aC5yZXZlcnNl
RmluZCgnLycpICsgMSk7Ci19Ci0KLVN0cmluZyBkaXJlY3RvcnlOYW1lKGNvbnN0IFN0cmluZyYg
cGF0aCkKLXsKLSAgICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBh
dGgpOwotCi0gICAgaWYgKCFmc1JlcC5kYXRhKCkgfHwgZnNSZXAuZGF0YSgpWzBdID09ICdcMCcp
Ci0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4
KGRpcm5hbWUoZnNSZXAubXV0YWJsZURhdGEoKSkpOwotfQotCi1WZWN0b3I8U3RyaW5nPiBsaXN0
RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBmaWx0ZXIpCi17Ci0g
ICAgVmVjdG9yPFN0cmluZz4gZW50cmllczsKLSAgICBDU3RyaW5nIGNwYXRoID0gZmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKHBhdGgpOwotICAgIENTdHJpbmcgY2ZpbHRlciA9IGZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihmaWx0ZXIpOwotICAgIERJUiogZGlyID0gb3BlbmRpcihjcGF0aC5kYXRh
KCkpOwotICAgIGlmIChkaXIpIHsKLSAgICAgICAgc3RydWN0IGRpcmVudCogZHA7Ci0gICAgICAg
IHdoaWxlICgoZHAgPSByZWFkZGlyKGRpcikpKSB7Ci0gICAgICAgICAgICBjb25zdCBjaGFyKiBu
YW1lID0gZHAtPmRfbmFtZTsKLSAgICAgICAgICAgIGlmICghc3RyY21wKG5hbWUsICIuIikgfHwg
IXN0cmNtcChuYW1lLCAiLi4iKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
ICAgIGlmIChmbm1hdGNoKGNmaWx0ZXIuZGF0YSgpLCBuYW1lLCAwKSkKLSAgICAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgICAgIGNoYXIgZmlsZVBhdGhbUEFUSF9NQVhdOwotICAgICAg
ICAgICAgaWYgKHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKGZpbGVQYXRoKSAtIDEpIDwgc25wcmlu
dGYoZmlsZVBhdGgsIHNpemVvZihmaWxlUGF0aCksICIlcy8lcyIsIGNwYXRoLmRhdGEoKSwgbmFt
ZSkpCi0gICAgICAgICAgICAgICAgY29udGludWU7IC8vIGJ1ZmZlciBvdmVyZmxvdwotCi0gICAg
ICAgICAgICBhdXRvIHN0cmluZyA9IHN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
ZmlsZVBhdGgpOwotCi0gICAgICAgICAgICAvLyBTb21lIGZpbGUgc3lzdGVtIHJlcHJlc2VudGF0
aW9ucyBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgYXMgYSBVVEYtMTYgc3RyaW5nLAotICAgICAgICAg
ICAgLy8gc28gdGhpcyBzdHJpbmcgbWlnaHQgYmUgbnVsbC4KLSAgICAgICAgICAgIGlmICghc3Ry
aW5nLmlzTnVsbCgpKQotICAgICAgICAgICAgICAgIGVudHJpZXMuYXBwZW5kKFdURk1vdmUoc3Ry
aW5nKSk7Ci0gICAgICAgIH0KLSAgICAgICAgY2xvc2VkaXIoZGlyKTsKLSAgICB9Ci0gICAgcmV0
dXJuIGVudHJpZXM7Ci19Ci0KLSNpZiAhUExBVEZPUk0oQ09DT0EpCi1TdHJpbmcgc3RyaW5nRnJv
bUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBjaGFyKiBwYXRoKQotewotICAgIGlmICgh
cGF0aCkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgcmV0dXJuIFN0cmluZzo6ZnJv
bVVURjgocGF0aCk7Ci19Ci0KLUNTdHJpbmcgZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0
IFN0cmluZyYgcGF0aCkKLXsKLSAgICByZXR1cm4gcGF0aC51dGY4KCk7Ci19Ci0KLWJvb2wgbW92
ZUZpbGUoY29uc3QgU3RyaW5nJiBvbGRQYXRoLCBjb25zdCBTdHJpbmcmIG5ld1BhdGgpCi17Ci0g
ICAgYXV0byBvbGRGaWxlbmFtZSA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihvbGRQYXRoKTsK
LSAgICBpZiAob2xkRmlsZW5hbWUuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQot
ICAgIGF1dG8gbmV3RmlsZW5hbWUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24obmV3UGF0aCk7
Ci0gICAgaWYgKG5ld0ZpbGVuYW1lLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICByZXR1cm4gcmVuYW1lKG9sZEZpbGVuYW1lLmRhdGEoKSwgbmV3RmlsZW5hbWUuZGF0YSgp
KSAhPSAtMTsKLX0KLQotYm9vbCBnZXRWb2x1bWVGcmVlU3BhY2UoY29uc3QgU3RyaW5nJiBwYXRo
LCB1aW50NjRfdCYgZnJlZVNwYWNlKQotewotICAgIHN0cnVjdCBzdGF0dmZzIGZpbGVTeXN0ZW1T
dGF0OwotICAgIGlmIChzdGF0dmZzKGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRh
KCksICZmaWxlU3lzdGVtU3RhdCkpIHsKLSAgICAgICAgZnJlZVNwYWNlID0gZmlsZVN5c3RlbVN0
YXQuZl9iYXZhaWwgKiBmaWxlU3lzdGVtU3RhdC5mX2Zyc2l6ZTsKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLSNlbmRpZgotCi0jaWYgIU9TKERBUldJ
TikKLVN0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZv
cm1GaWxlSGFuZGxlJiBoYW5kbGUpCi17Ci0gICAgY2hhciBidWZmZXJbUEFUSF9NQVhdOwotICAg
IGNvbnN0IGNoYXIqIHRtcERpciA9IGdldGVudigiVE1QRElSIik7Ci0KLSAgICBpZiAoIXRtcERp
cikKLSAgICAgICAgdG1wRGlyID0gIi90bXAiOwotCi0gICAgaWYgKHNucHJpbnRmKGJ1ZmZlciwg
UEFUSF9NQVgsICIlcy8lc1hYWFhYWCIsIHRtcERpciwgcHJlZml4LnV0ZjgoKS5kYXRhKCkpID49
IFBBVEhfTUFYKQotICAgICAgICBnb3RvIGVuZDsKLQotICAgIGhhbmRsZSA9IG1rc3RlbXAoYnVm
ZmVyKTsKLSAgICBpZiAoaGFuZGxlIDwgMCkKLSAgICAgICAgZ290byBlbmQ7Ci0KLSAgICByZXR1
cm4gU3RyaW5nOjpmcm9tVVRGOChidWZmZXIpOwotCi1lbmQ6Ci0gICAgaGFuZGxlID0gaW52YWxp
ZFBsYXRmb3JtRmlsZUhhbmRsZTsKLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0jZW5kaWYKLQot
Ym9vbCBoYXJkTGlua09yQ29weUZpbGUoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmlu
ZyYgZGVzdGluYXRpb24pCi17Ci0gICAgaWYgKHNvdXJjZS5pc0VtcHR5KCkgfHwgZGVzdGluYXRp
b24uaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBDU3RyaW5nIGZzU291
cmNlID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHNvdXJjZSk7Ci0gICAgaWYgKCFmc1NvdXJj
ZS5kYXRhKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIENTdHJpbmcgZnNEZXN0aW5h
dGlvbiA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihkZXN0aW5hdGlvbik7Ci0gICAgaWYgKCFm
c0Rlc3RpbmF0aW9uLmRhdGEoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFs
aW5rKGZzU291cmNlLmRhdGEoKSwgZnNEZXN0aW5hdGlvbi5kYXRhKCkpKQotICAgICAgICByZXR1
cm4gdHJ1ZTsKLQotICAgIC8vIEhhcmQgbGluayBmYWlsZWQuIFBlcmZvcm0gYSBjb3B5IGluc3Rl
YWQuCi0gICAgYXV0byBoYW5kbGUgPSBvcGVuKGZzRGVzdGluYXRpb24uZGF0YSgpLCBPX1dST05M
WSB8IE9fQ1JFQVQgfCBPX0VYQ0wsIDA2NjYpOwotICAgIGlmIChoYW5kbGUgPT0gLTEpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIGJvb2wgYXBwZW5kUmVzdWx0ID0gYXBwZW5kRmlsZUNv
bnRlbnRzVG9GaWxlSGFuZGxlKHNvdXJjZSwgaGFuZGxlKTsKLSAgICBjbG9zZShoYW5kbGUpOwot
Ci0gICAgLy8gSWYgdGhlIGNvcHkgZmFpbGVkLCBkZWxldGUgdGhlIHVudXNhYmxlIGZpbGUuCi0g
ICAgaWYgKCFhcHBlbmRSZXN1bHQpCi0gICAgICAgIHVubGluayhmc0Rlc3RpbmF0aW9uLmRhdGEo
KSk7Ci0KLSAgICByZXR1cm4gYXBwZW5kUmVzdWx0OwotfQotCi1PcHRpb25hbDxpbnQzMl90PiBn
ZXRGaWxlRGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQotewotICAgIHN0cnVjdCBzdGF0
IGZpbGVTdGF0OwotICAgIGlmIChzdGF0KGZzRmlsZS5kYXRhKCksICZmaWxlU3RhdCkgPT0gLTEp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICByZXR1cm4gZmlsZVN0YXQuc3Rf
ZGV2OwotfQotCi1TdHJpbmcgcmVhbFBhdGgoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKLXsKLSAg
ICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVQYXRoKTsKLSAg
ICBjaGFyIHJlc29sdmVkTmFtZVtQQVRIX01BWF07Ci0gICAgY29uc3QgY2hhciogcmVzdWx0ID0g
cmVhbHBhdGgoZnNSZXAuZGF0YSgpLCByZXNvbHZlZE5hbWUpOwotICAgIHJldHVybiByZXN1bHQg
PyBTdHJpbmc6OmZyb21VVEY4KHJlc3VsdCkgOiBmaWxlUGF0aDsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgRmlsZVN5c3RlbQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVyUE9TSVguY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVyUE9TSVguY3BwCmluZGV4IDUxMzM3NWQy
NDVlZjQ1YzE5NmE4NTQ2MTVjZTcwYjc4YTkwY2VjZmYuLjhlZDU3MTc0Nzc4Y2I3YmRhZGNhMzY1
MTdmZDc5NDQ1NzM4YzUyZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bv
c2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9w
b3NpeC9TaGFyZWRCdWZmZXJQT1NJWC5jcHAKQEAgLTI2LDExICsyNiwxMCBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogCi0jaW5jbHVkZSAiRmlsZVN5
c3RlbS5oIgotCiAjaW5jbHVkZSA8ZmNudGwuaD4KICNpbmNsdWRlIDxzeXMvc3RhdC5oPgogI2lu
Y2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5jcHAKaW5kZXggOTBjMjBjN2Jj
ZTZhNjdiNjdkNTNkNWM0MDUzNzc2YmYxNGM3ZTVlNS4uMzY0YmZmNzEwNzQ5Nzg5NmY3YjFkNzU3
YTdkOWE1ZmMzYWQzZjY0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3Fs
L1NRTGl0ZUZpbGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9T
UUxpdGVGaWxlU3lzdGVtLmNwcApAQCAtMzEsMTAgKzMxLDEwIEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiU1FMaXRlRmlsZVN5c3RlbS5oIgogCi0jaW5jbHVkZSAiRmlsZVN5c3Rl
bS5oIgogI2luY2x1ZGUgIlNRTGl0ZURhdGFiYXNlLmgiCiAjaW5jbHVkZSAiU1FMaXRlU3RhdGVt
ZW50LmgiCiAjaW5jbHVkZSA8c3FsaXRlMy5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+
CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2luY2x1ZGUgPHBhbC9zcGkvaW9zL1NRTGl0
ZTNTUEkuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaHlwaGVu
L0h5cGhlbmF0aW9uTGliSHlwaGVuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
aHlwaGVuL0h5cGhlbmF0aW9uTGliSHlwaGVuLmNwcAppbmRleCAyZDdiNjZkOTM3OTA1ZGNjMjJm
NGExM2U5NWEwYWYwNmJiNDhiN2FmLi41ZWViOWJmYTc0MDBmNzIxNWMwMjZjNTUyZDgyYWEzOGE3
NjNmOTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2h5cGhlbi9I
eXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9oeXBoZW4vSHlwaGVuYXRpb25MaWJIeXBoZW4uY3BwCkBAIC0yOSwxMCArMjksMTAgQEAKIAog
I2lmIFVTRShMSUJIWVBIRU4pCiAKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSA8
aHlwaGVuLmg+CiAjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1
ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvVGlueUxSVUNhY2hlLmg+CkBA
IC0yMjQsNyArMjI0LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJlZlB0cjxXZWJDb3JlOjpI
eXBoZW5hdGlvbkRpY3Rpb25hcnk+IGNyZWF0ZVZhbHVlRm9yS2V5KGNvbnN0IEF0b21pY1N0cmlu
ZyYgZGljdGlvbmFyeVBhdGgpCiAgICAgewotICAgICAgICByZXR1cm4gV2ViQ29yZTo6SHlwaGVu
YXRpb25EaWN0aW9uYXJ5OjpjcmVhdGUoV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKGRpY3Rpb25hcnlQYXRoLnN0cmluZygpKSk7CisgICAgICAgIHJldHVybiBX
ZWJDb3JlOjpIeXBoZW5hdGlvbkRpY3Rpb25hcnk6OmNyZWF0ZShGaWxlU3lzdGVtOjpmaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oZGljdGlvbmFyeVBhdGguc3RyaW5nKCkpKTsKICAgICB9CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdpbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdpbi5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiNzAyY2IwMTIwYWJiZjI1ODUyOWZhZjk0MzEwZGRm
ZmZkZjYwODQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCisrKyAvZGV2L251
bGwKQEAgLTEsNTg5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFi
b3JhLCBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKLSAqIDMu
ICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMg
b2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRmls
ZVN5c3RlbS5oIgotCi0jaW5jbHVkZSAiRmlsZU1ldGFkYXRhLmgiCi0jaW5jbHVkZSAiTm90SW1w
bGVtZW50ZWQuaCIKLSNpbmNsdWRlICJQYXRoV2Fsa2VyLmgiCi0jaW5jbHVkZSA8aW8uaD4KLSNp
bmNsdWRlIDxzaGxvYmouaD4KLSNpbmNsdWRlIDxzaGx3YXBpLmg+Ci0jaW5jbHVkZSA8c3lzL3N0
YXQuaD4KLSNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0jaW5jbHVkZSA8d3RmL0NyeXB0b2dyYXBoaWNh
bGx5UmFuZG9tTnVtYmVyLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgot
I2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBGaWxlU3lzdGVtIHsKLQotc3RhdGljIGNvbnN0IFVMT05H
TE9ORyBrU2Vjb25kc0Zyb21GaWxlVGltZVRvVGltZXQgPSAxMTY0NDQ3MzYwMDsKLQotc3RhdGlj
IGJvb2wgZ2V0RmluZERhdGEoU3RyaW5nIHBhdGgsIFdJTjMyX0ZJTkRfREFUQVcmIGZpbmREYXRh
KQotewotICAgIEhBTkRMRSBoYW5kbGUgPSBGaW5kRmlyc3RGaWxlVyhzdHJpbmdUb051bGxUZXJt
aW5hdGVkV0NoYXIocGF0aCkuZGF0YSgpLCAmZmluZERhdGEpOwotICAgIGlmIChoYW5kbGUgPT0g
SU5WQUxJRF9IQU5ETEVfVkFMVUUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBGaW5kQ2xv
c2UoaGFuZGxlKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotc3RhdGljIGJvb2wgZ2V0RmlsZVNp
emVGcm9tRmluZERhdGEoY29uc3QgV0lOMzJfRklORF9EQVRBVyYgZmluZERhdGEsIGxvbmcgbG9u
ZyYgc2l6ZSkKLXsKLSAgICBVTEFSR0VfSU5URUdFUiBmaWxlU2l6ZTsKLSAgICBmaWxlU2l6ZS5I
aWdoUGFydCA9IGZpbmREYXRhLm5GaWxlU2l6ZUhpZ2g7Ci0gICAgZmlsZVNpemUuTG93UGFydCA9
IGZpbmREYXRhLm5GaWxlU2l6ZUxvdzsKLQotICAgIGlmIChmaWxlU2l6ZS5RdWFkUGFydCA+IHN0
YXRpY19jYXN0PFVMT05HTE9ORz4oc3RkOjpudW1lcmljX2xpbWl0czxsb25nIGxvbmc+OjptYXgo
KSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHNpemUgPSBmaWxlU2l6ZS5RdWFkUGFy
dDsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotc3RhdGljIGJvb2wgZ2V0RmlsZVNpemVGcm9tQnlI
YW5kbGVGaWxlSW5mb3JtYXRpb25TdHJ1Y3R1cmUoY29uc3QgQllfSEFORExFX0ZJTEVfSU5GT1JN
QVRJT04mIGZpbGVJbmZvcm1hdGlvbiwgbG9uZyBsb25nJiBzaXplKQotewotICAgIFVMQVJHRV9J
TlRFR0VSIGZpbGVTaXplOwotICAgIGZpbGVTaXplLkhpZ2hQYXJ0ID0gZmlsZUluZm9ybWF0aW9u
Lm5GaWxlU2l6ZUhpZ2g7Ci0gICAgZmlsZVNpemUuTG93UGFydCA9IGZpbGVJbmZvcm1hdGlvbi5u
RmlsZVNpemVMb3c7Ci0KLSAgICBpZiAoZmlsZVNpemUuUXVhZFBhcnQgPiBzdGF0aWNfY2FzdDxV
TE9OR0xPTkc+KHN0ZDo6bnVtZXJpY19saW1pdHM8bG9uZyBsb25nPjo6bWF4KCkpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICBzaXplID0gZmlsZVNpemUuUXVhZFBhcnQ7Ci0gICAgcmV0
dXJuIHRydWU7Ci19Ci0KLXN0YXRpYyB2b2lkIGdldEZpbGVDcmVhdGlvblRpbWVGcm9tRmluZERh
dGEoY29uc3QgV0lOMzJfRklORF9EQVRBVyYgZmluZERhdGEsIHRpbWVfdCYgdGltZSkKLXsKLSAg
ICBVTEFSR0VfSU5URUdFUiBmaWxlVGltZTsKLSAgICBmaWxlVGltZS5IaWdoUGFydCA9IGZpbmRE
YXRhLmZ0Q3JlYXRpb25UaW1lLmR3SGlnaERhdGVUaW1lOwotICAgIGZpbGVUaW1lLkxvd1BhcnQg
PSBmaW5kRGF0YS5mdENyZWF0aW9uVGltZS5kd0xvd0RhdGVUaW1lOwotCi0gICAgLy8gSW5mb3Jt
YXRpb24gYWJvdXQgY29udmVydGluZyB0aW1lX3QgdG8gRmlsZVRpbWUgaXMgYXZhaWxhYmxlIGF0
IGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9tczcyNDIyOCUyOHY9dnMu
ODUlMjkuYXNweAotICAgIHRpbWUgPSBmaWxlVGltZS5RdWFkUGFydCAvIDEwMDAwMDAwIC0ga1Nl
Y29uZHNGcm9tRmlsZVRpbWVUb1RpbWV0OwotfQotCi0KLXN0YXRpYyB2b2lkIGdldEZpbGVNb2Rp
ZmljYXRpb25UaW1lRnJvbUZpbmREYXRhKGNvbnN0IFdJTjMyX0ZJTkRfREFUQVcmIGZpbmREYXRh
LCB0aW1lX3QmIHRpbWUpCi17Ci0gICAgVUxBUkdFX0lOVEVHRVIgZmlsZVRpbWU7Ci0gICAgZmls
ZVRpbWUuSGlnaFBhcnQgPSBmaW5kRGF0YS5mdExhc3RXcml0ZVRpbWUuZHdIaWdoRGF0ZVRpbWU7
Ci0gICAgZmlsZVRpbWUuTG93UGFydCA9IGZpbmREYXRhLmZ0TGFzdFdyaXRlVGltZS5kd0xvd0Rh
dGVUaW1lOwotCi0gICAgLy8gSW5mb3JtYXRpb24gYWJvdXQgY29udmVydGluZyB0aW1lX3QgdG8g
RmlsZVRpbWUgaXMgYXZhaWxhYmxlIGF0IGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMv
bGlicmFyeS9tczcyNDIyOCUyOHY9dnMuODUlMjkuYXNweAotICAgIHRpbWUgPSBmaWxlVGltZS5R
dWFkUGFydCAvIDEwMDAwMDAwIC0ga1NlY29uZHNGcm9tRmlsZVRpbWVUb1RpbWV0OwotfQotCi1i
b29sIGdldEZpbGVTaXplKGNvbnN0IFN0cmluZyYgcGF0aCwgbG9uZyBsb25nJiBzaXplKQotewot
ICAgIFdJTjMyX0ZJTkRfREFUQVcgZmluZERhdGE7Ci0gICAgaWYgKCFnZXRGaW5kRGF0YShwYXRo
LCBmaW5kRGF0YSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBnZXRGaWxl
U2l6ZUZyb21GaW5kRGF0YShmaW5kRGF0YSwgc2l6ZSk7Ci19Ci0KLWJvb2wgZ2V0RmlsZVNpemUo
UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGVIYW5kbGUsIGxvbmcgbG9uZyYgc2l6ZSkKLXsKLSAgICBC
WV9IQU5ETEVfRklMRV9JTkZPUk1BVElPTiBmaWxlSW5mb3JtYXRpb247Ci0gICAgaWYgKCE6Okdl
dEZpbGVJbmZvcm1hdGlvbkJ5SGFuZGxlKGZpbGVIYW5kbGUsICZmaWxlSW5mb3JtYXRpb24pKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gZ2V0RmlsZVNpemVGcm9tQnlIYW5k
bGVGaWxlSW5mb3JtYXRpb25TdHJ1Y3R1cmUoZmlsZUluZm9ybWF0aW9uLCBzaXplKTsKLX0KLQot
T3B0aW9uYWw8V2FsbFRpbWU+IGdldEZpbGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYg
cGF0aCkKLXsKLSAgICBXSU4zMl9GSU5EX0RBVEFXIGZpbmREYXRhOwotICAgIGlmICghZ2V0Rmlu
ZERhdGEocGF0aCwgZmluZERhdGEpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0g
ICAgdGltZV90IHRpbWUgPSAwOwotICAgIGdldEZpbGVNb2RpZmljYXRpb25UaW1lRnJvbUZpbmRE
YXRhKGZpbmREYXRhLCB0aW1lKTsKLSAgICByZXR1cm4gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRz
KHRpbWUpOwotfQotCi1PcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZUNyZWF0aW9uVGltZShjb25z
dCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgV0lOMzJfRklORF9EQVRBVyBmaW5kRGF0YTsKLSAgICBp
ZiAoIWdldEZpbmREYXRhKHBhdGgsIGZpbmREYXRhKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKLQotICAgIHRpbWVfdCB0aW1lID0gMDsKLSAgICBnZXRGaWxlQ3JlYXRpb25UaW1lRnJv
bUZpbmREYXRhKGZpbmREYXRhLCB0aW1lKTsKLSAgICByZXR1cm4gV2FsbFRpbWU6OmZyb21SYXdT
ZWNvbmRzKHRpbWUpOwotfQotCi1zdGF0aWMgU3RyaW5nIGdldEZpbmFsUGF0aE5hbWUoY29uc3Qg
U3RyaW5nJiBwYXRoKQotewotICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUocGF0aCwgRmlsZU9w
ZW5Nb2RlOjpSZWFkKTsKLSAgICBpZiAoIWlzSGFuZGxlVmFsaWQoaGFuZGxlKSkKLSAgICAgICAg
cmV0dXJuIFN0cmluZygpOwotCi0gICAgVmVjdG9yPFVDaGFyPiBidWZmZXIoTUFYX1BBVEgpOwot
ICAgIGlmICg6OkdldEZpbmFsUGF0aE5hbWVCeUhhbmRsZVcoaGFuZGxlLCBidWZmZXIuZGF0YSgp
LCBidWZmZXIuc2l6ZSgpLCBWT0xVTUVfTkFNRV9OVCkgPj0gTUFYX1BBVEgpIHsKLSAgICAgICAg
Y2xvc2VGaWxlKGhhbmRsZSk7Ci0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICB9Ci0gICAg
Y2xvc2VGaWxlKGhhbmRsZSk7Ci0KLSAgICBidWZmZXIuc2hyaW5rKHdjc2xlbihidWZmZXIuZGF0
YSgpKSk7Ci0gICAgcmV0dXJuIFN0cmluZzo6YWRvcHQoV1RGTW92ZShidWZmZXIpKTsKLX0KLQot
c3RhdGljIGlubGluZSBib29sIGlzU3ltYm9saWNMaW5rKFdJTjMyX0ZJTkRfREFUQVcgZmluZERh
dGEpCi17Ci0gICAgcmV0dXJuIGZpbmREYXRhLmR3RmlsZUF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJ
QlVURV9SRVBBUlNFX1BPSU5UICYmIGZpbmREYXRhLmR3UmVzZXJ2ZWQwID09IElPX1JFUEFSU0Vf
VEFHX1NZTUxJTks7Ci19Ci0KLXN0YXRpYyBGaWxlTWV0YWRhdGE6OlR5cGUgdG9GaWxlTWV0YWRh
dGFUeXBlKFdJTjMyX0ZJTkRfREFUQVcgZmluZERhdGEpCi17Ci0gICAgaWYgKGZpbmREYXRhLmR3
RmlsZUF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9ESVJFQ1RPUlkpCi0gICAgICAgIHJldHVy
biBGaWxlTWV0YWRhdGE6OlR5cGU6OkRpcmVjdG9yeTsKLSAgICBpZiAoaXNTeW1ib2xpY0xpbmso
ZmluZERhdGEpKQotICAgICAgICByZXR1cm4gRmlsZU1ldGFkYXRhOjpUeXBlOjpTeW1ib2xpY0xp
bms7Ci0gICAgcmV0dXJuIEZpbGVNZXRhZGF0YTo6VHlwZTo6RmlsZTsKLX0KLQotc3RhdGljIE9w
dGlvbmFsPEZpbGVNZXRhZGF0YT4gZmluZERhdGFUb0ZpbGVNZXRhZGF0YShXSU4zMl9GSU5EX0RB
VEFXIGZpbmREYXRhKQotewotICAgIGxvbmcgbG9uZyBsZW5ndGg7Ci0gICAgaWYgKCFnZXRGaWxl
U2l6ZUZyb21GaW5kRGF0YShmaW5kRGF0YSwgbGVuZ3RoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKLQotICAgIHRpbWVfdCBtb2RpZmljYXRpb25UaW1lOwotICAgIGdldEZpbGVNb2Rp
ZmljYXRpb25UaW1lRnJvbUZpbmREYXRhKGZpbmREYXRhLCBtb2RpZmljYXRpb25UaW1lKTsKLQot
ICAgIHJldHVybiBGaWxlTWV0YWRhdGEgewotICAgICAgICBXYWxsVGltZTo6ZnJvbVJhd1NlY29u
ZHMobW9kaWZpY2F0aW9uVGltZSksCi0gICAgICAgIGxlbmd0aCwKLSAgICAgICAgc3RhdGljX2Nh
c3Q8Ym9vbD4oZmluZERhdGEuZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX0hJRERF
TiksCi0gICAgICAgIHRvRmlsZU1ldGFkYXRhVHlwZShmaW5kRGF0YSkKLSAgICB9OwotfQotCi1P
cHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YShjb25zdCBTdHJpbmcmIHBhdGgpCi17
Ci0gICAgV0lOMzJfRklORF9EQVRBVyBmaW5kRGF0YTsKLSAgICBpZiAoIWdldEZpbmREYXRhKHBh
dGgsIGZpbmREYXRhKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIHJldHVy
biBmaW5kRGF0YVRvRmlsZU1ldGFkYXRhKGZpbmREYXRhKTsKLX0KLQotT3B0aW9uYWw8RmlsZU1l
dGFkYXRhPiBmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyhjb25zdCBTdHJpbmcmIHBhdGgp
Ci17Ci0gICAgV0lOMzJfRklORF9EQVRBVyBmaW5kRGF0YTsKLSAgICBpZiAoIWdldEZpbmREYXRh
KHBhdGgsIGZpbmREYXRhKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIGlm
IChpc1N5bWJvbGljTGluayhmaW5kRGF0YSkpIHsKLSAgICAgICAgU3RyaW5nIHRhcmdldFBhdGgg
PSBnZXRGaW5hbFBhdGhOYW1lKHBhdGgpOwotICAgICAgICBpZiAodGFyZ2V0UGF0aC5pc051bGwo
KSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgICAgIGlmICghZ2V0Rmlu
ZERhdGEodGFyZ2V0UGF0aCwgZmluZERhdGEpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKLSAgICB9Ci0KLSAgICByZXR1cm4gZmluZERhdGFUb0ZpbGVNZXRhZGF0YShmaW5kRGF0
YSk7Ci19Ci0KLWJvb2wgY3JlYXRlU3ltYm9saWNMaW5rKGNvbnN0IFN0cmluZyYgdGFyZ2V0UGF0
aCwgY29uc3QgU3RyaW5nJiBzeW1ib2xpY0xpbmtQYXRoKQotewotICAgIHJldHVybiAhOjpDcmVh
dGVTeW1ib2xpY0xpbmtXKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihzeW1ib2xpY0xpbmtQ
YXRoKS5kYXRhKCksIHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcih0YXJnZXRQYXRoKS5kYXRh
KCksIDApOwotfQotCi1ib29sIGZpbGVFeGlzdHMoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAg
IFdJTjMyX0ZJTkRfREFUQVcgZmluZERhdGE7Ci0gICAgcmV0dXJuIGdldEZpbmREYXRhKHBhdGgs
IGZpbmREYXRhKTsKLX0KLQotYm9vbCBkZWxldGVGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsK
LSAgICBTdHJpbmcgZmlsZW5hbWUgPSBwYXRoOwotICAgIHJldHVybiAhIURlbGV0ZUZpbGVXKHN0
cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihmaWxlbmFtZSkuZGF0YSgpKTsKLX0KLQotYm9vbCBk
ZWxldGVFbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgU3RyaW5nIGZp
bGVuYW1lID0gcGF0aDsKLSAgICByZXR1cm4gISFSZW1vdmVEaXJlY3RvcnlXKHN0cmluZ1RvTnVs
bFRlcm1pbmF0ZWRXQ2hhcihmaWxlbmFtZSkuZGF0YSgpKTsKLX0KLQotYm9vbCBtb3ZlRmlsZShj
b25zdCBTdHJpbmcmIG9sZFBhdGgsIGNvbnN0IFN0cmluZyYgbmV3UGF0aCkKLXsKLSAgICBTdHJp
bmcgb2xkRmlsZW5hbWUgPSBvbGRQYXRoOwotICAgIFN0cmluZyBuZXdGaWxlbmFtZSA9IG5ld1Bh
dGg7Ci0gICAgcmV0dXJuICEhOjpNb3ZlRmlsZUV4KHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hh
cihvbGRGaWxlbmFtZSkuZGF0YSgpLCBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIobmV3Rmls
ZW5hbWUpLmRhdGEoKSwgTU9WRUZJTEVfQ09QWV9BTExPV0VEIHwgTU9WRUZJTEVfUkVQTEFDRV9F
WElTVElORyk7Ci19Ci0KLVN0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY29uc3QgU3Ry
aW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGNvbXBvbmVudCkKLXsKLSAgICBWZWN0b3I8VUNoYXI+
IGJ1ZmZlcihNQVhfUEFUSCk7Ci0KLSAgICBpZiAocGF0aC5sZW5ndGgoKSArIDEgPiBidWZmZXIu
c2l6ZSgpKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICBTdHJpbmdWaWV3KHBhdGgp
LmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGJ1ZmZlci5kYXRhKCkpOwotICAgIGJ1ZmZlcltw
YXRoLmxlbmd0aCgpXSA9ICdcMCc7Ci0KLSAgICBpZiAoIVBhdGhBcHBlbmRXKGJ1ZmZlci5kYXRh
KCksIHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihjb21wb25lbnQpLmRhdGEoKSkpCi0gICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIGJ1ZmZlci5zaHJpbmsod2NzbGVuKGJ1ZmZlci5k
YXRhKCkpKTsKLQotICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KFdURk1vdmUoYnVmZmVyKSk7Ci19
Ci0KLVN0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKFN0cmluZ1ZpZXcgcGF0aCwgY29u
c3QgVmVjdG9yPFN0cmluZ1ZpZXc+JiBjb21wb25lbnRzKQotewotICAgIFN0cmluZyByZXN1bHQg
PSBwYXRoLnRvU3RyaW5nKCk7Ci0gICAgZm9yIChhdXRvJiBjb21wb25lbnQgOiBjb21wb25lbnRz
KQotICAgICAgICByZXN1bHQgPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVzdWx0LCBjb21w
b25lbnQudG9TdHJpbmcoKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotI2lmICFVU0UoQ0Yp
Ci0KLUNTdHJpbmcgZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCkK
LXsKLSAgICBhdXRvIHVwY29udmVydGVkQ2hhcmFjdGVycyA9IHBhdGgudXBjb252ZXJ0ZWRDaGFy
YWN0ZXJzKCk7Ci0KLSAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycyA9IHVwY29udmVydGVkQ2hh
cmFjdGVyczsKLSAgICBpbnQgc2l6ZSA9IFdpZGVDaGFyVG9NdWx0aUJ5dGUoQ1BfQUNQLCAwLCBj
aGFyYWN0ZXJzLCBwYXRoLmxlbmd0aCgpLCAwLCAwLCAwLCAwKSAtIDE7Ci0KLSAgICBjaGFyKiBi
dWZmZXI7Ci0gICAgQ1N0cmluZyBzdHJpbmcgPSBDU3RyaW5nOjpuZXdVbmluaXRpYWxpemVkKHNp
emUsIGJ1ZmZlcik7Ci0KLSAgICBXaWRlQ2hhclRvTXVsdGlCeXRlKENQX0FDUCwgMCwgY2hhcmFj
dGVycywgcGF0aC5sZW5ndGgoKSwgYnVmZmVyLCBzaXplLCAwLCAwKTsKLQotICAgIHJldHVybiBz
dHJpbmc7Ci19Ci0KLSNlbmRpZiAvLyAhVVNFKENGKQotCi1ib29sIG1ha2VBbGxEaXJlY3Rvcmll
cyhjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgU3RyaW5nIGZ1bGxQYXRoID0gcGF0aDsKLSAg
ICBpZiAoU0hDcmVhdGVEaXJlY3RvcnlFeCgwLCBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIo
ZnVsbFBhdGgpLmRhdGEoKSwgMCkgIT0gRVJST1JfU1VDQ0VTUykgewotICAgICAgICBEV09SRCBl
cnJvciA9IEdldExhc3RFcnJvcigpOwotICAgICAgICBpZiAoZXJyb3IgIT0gRVJST1JfRklMRV9F
WElTVFMgJiYgZXJyb3IgIT0gRVJST1JfQUxSRUFEWV9FWElTVFMpIHsKLSAgICAgICAgICAgIExP
R19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBwYXRoICVzIiwgcGF0aC5hc2NpaSgpLmRhdGEoKSk7
Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJu
IHRydWU7Ci19Ci0KLVN0cmluZyBob21lRGlyZWN0b3J5UGF0aCgpCi17Ci0gICAgbm90SW1wbGVt
ZW50ZWQoKTsKLSAgICByZXR1cm4gIiI7Ci19Ci0KLVN0cmluZyBwYXRoR2V0RmlsZU5hbWUoY29u
c3QgU3RyaW5nJiBwYXRoKQotewotICAgIHJldHVybiBudWxsVGVybWluYXRlZFdDaGFyVG9TdHJp
bmcoOjpQYXRoRmluZEZpbGVOYW1lKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihwYXRoKS5k
YXRhKCkpKTsKLX0KLQotU3RyaW5nIGRpcmVjdG9yeU5hbWUoY29uc3QgU3RyaW5nJiBwYXRoKQot
ewotICAgIFN0cmluZyBuYW1lID0gcGF0aC5sZWZ0KHBhdGgubGVuZ3RoKCkgLSBwYXRoR2V0Rmls
ZU5hbWUocGF0aCkubGVuZ3RoKCkpOwotICAgIGlmIChuYW1lLmNoYXJhY3RlclN0YXJ0aW5nQXQo
bmFtZS5sZW5ndGgoKSAtIDEpID09ICdcXCcpIHsKLSAgICAgICAgLy8gUmVtb3ZlIGFueSB0cmFp
bGluZyAiXCIuCi0gICAgICAgIG5hbWUudHJ1bmNhdGUobmFtZS5sZW5ndGgoKSAtIDEpOwotICAg
IH0KLSAgICByZXR1cm4gbmFtZTsKLX0KLQotc3RhdGljIFN0cmluZyBidW5kbGVOYW1lKCkKLXsK
LSAgICBzdGF0aWMgY29uc3QgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBuYW1lID0gW10gewotICAg
ICAgICBTdHJpbmcgbmFtZSB7ICJXZWJLaXQiX3MgfTsKLQotI2lmIFVTRShDRikKLSAgICAgICAg
aWYgKENGQnVuZGxlUmVmIGJ1bmRsZSA9IENGQnVuZGxlR2V0TWFpbkJ1bmRsZSgpKSB7Ci0gICAg
ICAgICAgICBpZiAoQ0ZUeXBlUmVmIGJ1bmRsZUV4ZWN1dGFibGUgPSBDRkJ1bmRsZUdldFZhbHVl
Rm9ySW5mb0RpY3Rpb25hcnlLZXkoYnVuZGxlLCBrQ0ZCdW5kbGVFeGVjdXRhYmxlS2V5KSkgewot
ICAgICAgICAgICAgICAgIGlmIChDRkdldFR5cGVJRChidW5kbGVFeGVjdXRhYmxlKSA9PSBDRlN0
cmluZ0dldFR5cGVJRCgpKQotICAgICAgICAgICAgICAgICAgICBuYW1lID0gcmVpbnRlcnByZXRf
Y2FzdDxDRlN0cmluZ1JlZj4oYnVuZGxlRXhlY3V0YWJsZSk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLSNlbmRpZgotCi0gICAgICAgIHJldHVybiBuYW1lOwotICAgIH0oKTsKLQotICAgIHJl
dHVybiBuYW1lOwotfQotCi1zdGF0aWMgU3RyaW5nIHN0b3JhZ2VEaXJlY3RvcnkoRFdPUkQgcGF0
aElkZW50aWZpZXIpCi17Ci0gICAgVmVjdG9yPFVDaGFyPiBidWZmZXIoTUFYX1BBVEgpOwotICAg
IGlmIChGQUlMRUQoU0hHZXRGb2xkZXJQYXRoVygwLCBwYXRoSWRlbnRpZmllciB8IENTSURMX0ZM
QUdfQ1JFQVRFLCAwLCAwLCBidWZmZXIuZGF0YSgpKSkpCi0gICAgICAgIHJldHVybiBTdHJpbmco
KTsKLSAgICBidWZmZXIucmVzaXplKHdjc2xlbihidWZmZXIuZGF0YSgpKSk7Ci0gICAgU3RyaW5n
IGRpcmVjdG9yeSA9IFN0cmluZzo6YWRvcHQoV1RGTW92ZShidWZmZXIpKTsKLQotICAgIGRpcmVj
dG9yeSA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkaXJlY3RvcnksICJBcHBsZSBDb21wdXRl
clxcIiArIGJ1bmRsZU5hbWUoKSk7Ci0gICAgaWYgKCFtYWtlQWxsRGlyZWN0b3JpZXMoZGlyZWN0
b3J5KSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgcmV0dXJuIGRpcmVjdG9yeTsK
LX0KLQotc3RhdGljIFN0cmluZyBjYWNoZWRTdG9yYWdlRGlyZWN0b3J5KERXT1JEIHBhdGhJZGVu
dGlmaWVyKQotewotICAgIHN0YXRpYyBIYXNoTWFwPERXT1JELCBTdHJpbmc+IGRpcmVjdG9yaWVz
OwotCi0gICAgSGFzaE1hcDxEV09SRCwgU3RyaW5nPjo6aXRlcmF0b3IgaXQgPSBkaXJlY3Rvcmll
cy5maW5kKHBhdGhJZGVudGlmaWVyKTsKLSAgICBpZiAoaXQgIT0gZGlyZWN0b3JpZXMuZW5kKCkp
Ci0gICAgICAgIHJldHVybiBpdC0+dmFsdWU7Ci0KLSAgICBTdHJpbmcgZGlyZWN0b3J5ID0gc3Rv
cmFnZURpcmVjdG9yeShwYXRoSWRlbnRpZmllcik7Ci0gICAgZGlyZWN0b3JpZXMuYWRkKHBhdGhJ
ZGVudGlmaWVyLCBkaXJlY3RvcnkpOwotCi0gICAgcmV0dXJuIGRpcmVjdG9yeTsKLX0KLQotc3Rh
dGljIFN0cmluZyBnZW5lcmF0ZVRlbXBvcmFyeVBhdGgoY29uc3QgRnVuY3Rpb248Ym9vbChjb25z
dCBTdHJpbmcmKT4mIGFjdGlvbikKLXsKLSAgICB3Y2hhcl90IHRlbXBQYXRoW01BWF9QQVRIXTsK
LSAgICBpbnQgdGVtcFBhdGhMZW5ndGggPSA6OkdldFRlbXBQYXRoVyhXVEZfQVJSQVlfTEVOR1RI
KHRlbXBQYXRoKSwgdGVtcFBhdGgpOwotICAgIGlmICh0ZW1wUGF0aExlbmd0aCA8PSAwIHx8IHRl
bXBQYXRoTGVuZ3RoID4gV1RGX0FSUkFZX0xFTkdUSCh0ZW1wUGF0aCkpCi0gICAgICAgIHJldHVy
biBTdHJpbmcoKTsKLQotICAgIFN0cmluZyBwcm9wb3NlZFBhdGg7Ci0gICAgZG8gewotICAgICAg
ICB3Y2hhcl90IHRlbXBGaWxlW10gPSBMIlhYWFhYWFhYLnRtcCI7IC8vIFVzZSA4LjMgc3R5bGUg
bmFtZSAobW9yZSBjaGFyYWN0ZXJzIGFyZW4ndCBoZWxwZnVsIGR1ZSB0byA4LjMgc2hvcnQgZmls
ZSBuYW1lcykKLSAgICAgICAgY29uc3QgaW50IHJhbmRvbVBhcnRMZW5ndGggPSA4OwotICAgICAg
ICBjcnlwdG9ncmFwaGljYWxseVJhbmRvbVZhbHVlcyh0ZW1wRmlsZSwgcmFuZG9tUGFydExlbmd0
aCAqIHNpemVvZih3Y2hhcl90KSk7Ci0KLSAgICAgICAgLy8gTGltaXQgdG8gdmFsaWQgZmlsZXN5
c3RlbSBjaGFyYWN0ZXJzLCBhbHNvIGV4Y2x1ZGluZyBvdGhlcnMgdGhhdCBjb3VsZCBiZSBwcm9i
bGVtYXRpYywgbGlrZSBwdW5jdHVhdGlvbi4KLSAgICAgICAgLy8gZG9uJ3QgaW5jbHVkZSBib3Ro
IHVwcGVyIGFuZCBsb3dlcmNhc2Ugc2luY2UgV2luZG93cyBmaWxlIHN5c3RlbXMgYXJlIHR5cGlj
YWxseSBub3QgY2FzZSBzZW5zaXRpdmUuCi0gICAgICAgIGNvbnN0IGNoYXIgdmFsaWRDaGFyc1td
ID0gIjAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiI7Ci0gICAgICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgcmFuZG9tUGFydExlbmd0aDsgKytpKQotICAgICAgICAgICAgdGVtcEZp
bGVbaV0gPSB2YWxpZENoYXJzW3RlbXBGaWxlW2ldICUgKHNpemVvZih2YWxpZENoYXJzKSAtIDEp
XTsKLQotICAgICAgICBBU1NFUlQod2NzbGVuKHRlbXBGaWxlKSA9PSBXVEZfQVJSQVlfTEVOR1RI
KHRlbXBGaWxlKSAtIDEpOwotCi0gICAgICAgIHByb3Bvc2VkUGF0aCA9IHBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChudWxsVGVybWluYXRlZFdDaGFyVG9TdHJpbmcodGVtcFBhdGgpLCBudWxsVGVy
bWluYXRlZFdDaGFyVG9TdHJpbmcodGVtcEZpbGUpKTsKLSAgICAgICAgaWYgKHByb3Bvc2VkUGF0
aC5pc0VtcHR5KCkpCi0gICAgICAgICAgICBicmVhazsKLSAgICB9IHdoaWxlICghYWN0aW9uKHBy
b3Bvc2VkUGF0aCkpOwotCi0gICAgcmV0dXJuIHByb3Bvc2VkUGF0aDsKLX0KLQotU3RyaW5nIG9w
ZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxl
KQotewotICAgIGhhbmRsZSA9IElOVkFMSURfSEFORExFX1ZBTFVFOwotCi0gICAgU3RyaW5nIHBy
b3Bvc2VkUGF0aCA9IGdlbmVyYXRlVGVtcG9yYXJ5UGF0aChbJmhhbmRsZV0oY29uc3QgU3RyaW5n
JiBwcm9wb3NlZFBhdGgpIHsKLSAgICAgICAgLy8gdXNlIENSRUFURV9ORVcgdG8gYXZvaWQgb3Zl
cndyaXRpbmcgYW4gZXhpc3RpbmcgZmlsZSB3aXRoIHRoZSBzYW1lIG5hbWUKLSAgICAgICAgaGFu
ZGxlID0gOjpDcmVhdGVGaWxlVyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIocHJvcG9zZWRQ
YXRoKS5kYXRhKCksIEdFTkVSSUNfUkVBRCB8IEdFTkVSSUNfV1JJVEUsIDAsIDAsIENSRUFURV9O
RVcsIEZJTEVfQVRUUklCVVRFX05PUk1BTCwgMCk7Ci0KLSAgICAgICAgcmV0dXJuIGlzSGFuZGxl
VmFsaWQoaGFuZGxlKSB8fCBHZXRMYXN0RXJyb3IoKSA9PSBFUlJPUl9BTFJFQURZX0VYSVNUUzsK
LSAgICB9KTsKLQotICAgIGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUpKQotICAgICAgICByZXR1
cm4gU3RyaW5nKCk7Ci0KLSAgICByZXR1cm4gcHJvcG9zZWRQYXRoOwotfQotCi1QbGF0Zm9ybUZp
bGVIYW5kbGUgb3BlbkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUgbW9kZSkK
LXsKLSAgICBEV09SRCBkZXNpcmVkQWNjZXNzID0gMDsKLSAgICBEV09SRCBjcmVhdGlvbkRpc3Bv
c2l0aW9uID0gMDsKLSAgICBEV09SRCBzaGFyZU1vZGUgPSAwOwotICAgIHN3aXRjaCAobW9kZSkg
ewotICAgIGNhc2UgRmlsZU9wZW5Nb2RlOjpSZWFkOgotICAgICAgICBkZXNpcmVkQWNjZXNzID0g
R0VORVJJQ19SRUFEOwotICAgICAgICBjcmVhdGlvbkRpc3Bvc2l0aW9uID0gT1BFTl9FWElTVElO
RzsKLSAgICAgICAgc2hhcmVNb2RlID0gRklMRV9TSEFSRV9SRUFEOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIEZpbGVPcGVuTW9kZTo6V3JpdGU6Ci0gICAgICAgIGRlc2lyZWRBY2Nlc3MgPSBH
RU5FUklDX1dSSVRFOwotICAgICAgICBjcmVhdGlvbkRpc3Bvc2l0aW9uID0gQ1JFQVRFX0FMV0FZ
UzsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgfQotCi0gICAgU3RyaW5nIGRlc3RpbmF0aW9uID0gcGF0aDsKLSAgICByZXR1
cm4gQ3JlYXRlRmlsZShzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoZGVzdGluYXRpb24pLmRh
dGEoKSwgZGVzaXJlZEFjY2Vzcywgc2hhcmVNb2RlLCAwLCBjcmVhdGlvbkRpc3Bvc2l0aW9uLCBG
SUxFX0FUVFJJQlVURV9OT1JNQUwsIDApOwotfQotCi12b2lkIGNsb3NlRmlsZShQbGF0Zm9ybUZp
bGVIYW5kbGUmIGhhbmRsZSkKLXsKLSAgICBpZiAoaXNIYW5kbGVWYWxpZChoYW5kbGUpKSB7Ci0g
ICAgICAgIDo6Q2xvc2VIYW5kbGUoaGFuZGxlKTsKLSAgICAgICAgaGFuZGxlID0gaW52YWxpZFBs
YXRmb3JtRmlsZUhhbmRsZTsKLSAgICB9Ci19Ci0KLWxvbmcgbG9uZyBzZWVrRmlsZShQbGF0Zm9y
bUZpbGVIYW5kbGUgaGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0LCBGaWxlU2Vla09yaWdpbiBvcmln
aW4pCi17Ci0gICAgRFdPUkQgbW92ZU1ldGhvZCA9IEZJTEVfQkVHSU47Ci0KLSAgICBpZiAob3Jp
Z2luID09IEZpbGVTZWVrT3JpZ2luOjpDdXJyZW50KQotICAgICAgICBtb3ZlTWV0aG9kID0gRklM
RV9DVVJSRU5UOwotICAgIGVsc2UgaWYgKG9yaWdpbiA9PSBGaWxlU2Vla09yaWdpbjo6RW5kKQot
ICAgICAgICBtb3ZlTWV0aG9kID0gRklMRV9FTkQ7Ci0KLSAgICBMQVJHRV9JTlRFR0VSIGxhcmdl
T2Zmc2V0OwotICAgIGxhcmdlT2Zmc2V0LlF1YWRQYXJ0ID0gb2Zmc2V0OwotCi0gICAgbGFyZ2VP
ZmZzZXQuTG93UGFydCA9IFNldEZpbGVQb2ludGVyKGhhbmRsZSwgbGFyZ2VPZmZzZXQuTG93UGFy
dCwgJmxhcmdlT2Zmc2V0LkhpZ2hQYXJ0LCBtb3ZlTWV0aG9kKTsKLQotICAgIGlmIChsYXJnZU9m
ZnNldC5Mb3dQYXJ0ID09IElOVkFMSURfU0VUX0ZJTEVfUE9JTlRFUiAmJiBHZXRMYXN0RXJyb3Io
KSAhPSBOT19FUlJPUikKLSAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgcmV0dXJuIGxhcmdlT2Zm
c2V0LlF1YWRQYXJ0OwotfQotCi1pbnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhh
bmRsZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKLXsKLSAgICBpZiAoIWlzSGFuZGxl
VmFsaWQoaGFuZGxlKSkKLSAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgRFdPUkQgYnl0ZXNXcml0
dGVuOwotICAgIGJvb2wgc3VjY2VzcyA9IFdyaXRlRmlsZShoYW5kbGUsIGRhdGEsIGxlbmd0aCwg
JmJ5dGVzV3JpdHRlbiwgMCk7Ci0KLSAgICBpZiAoIXN1Y2Nlc3MpCi0gICAgICAgIHJldHVybiAt
MTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihieXRlc1dyaXR0ZW4pOwotfQotCi1pbnQg
cmVhZEZyb21GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNoYXIqIGRhdGEsIGludCBs
ZW5ndGgpCi17Ci0gICAgaWYgKCFpc0hhbmRsZVZhbGlkKGhhbmRsZSkpCi0gICAgICAgIHJldHVy
biAtMTsKLQotICAgIERXT1JEIGJ5dGVzUmVhZDsKLSAgICBib29sIHN1Y2Nlc3MgPSA6OlJlYWRG
aWxlKGhhbmRsZSwgZGF0YSwgbGVuZ3RoLCAmYnl0ZXNSZWFkLCAwKTsKLQotICAgIGlmICghc3Vj
Y2VzcykKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KGJ5
dGVzUmVhZCk7Ci19Ci0KLWJvb2wgaGFyZExpbmtPckNvcHlGaWxlKGNvbnN0IFN0cmluZyYgc291
cmNlLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uKQotewotICAgIHJldHVybiAhITo6Q29weUZp
bGUoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKHNvdXJjZSkuZGF0YSgpLCBzdHJpbmdUb051
bGxUZXJtaW5hdGVkV0NoYXIoZGVzdGluYXRpb24pLmRhdGEoKSwgVFJVRSk7Ci19Ci0KLVN0cmlu
ZyBsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKQotewotICAgIHJldHVybiBjYWNo
ZWRTdG9yYWdlRGlyZWN0b3J5KENTSURMX0xPQ0FMX0FQUERBVEEpOwotfQotCi1TdHJpbmcgcm9h
bWluZ1VzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKQotewotICAgIHJldHVybiBjYWNoZWRT
dG9yYWdlRGlyZWN0b3J5KENTSURMX0FQUERBVEEpOwotfQotCi1WZWN0b3I8U3RyaW5nPiBsaXN0
RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIGZpbHRlcikK
LXsKLSAgICBWZWN0b3I8U3RyaW5nPiBlbnRyaWVzOwotCi0gICAgUGF0aFdhbGtlciB3YWxrZXIo
ZGlyZWN0b3J5LCBmaWx0ZXIpOwotICAgIGlmICghd2Fsa2VyLmlzVmFsaWQoKSkKLSAgICAgICAg
cmV0dXJuIGVudHJpZXM7Ci0KLSAgICBkbyB7Ci0gICAgICAgIGlmICh3YWxrZXIuZGF0YSgpLmR3
RmlsZUF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9ESVJFQ1RPUlkKLSAgICAgICAgICAgICYm
ICghd2NzY21wKHdhbGtlci5kYXRhKCkuY0ZpbGVOYW1lLCBMIi4iKSB8fCAhd2NzY21wKHdhbGtl
ci5kYXRhKCkuY0ZpbGVOYW1lLCBMIi4uIikpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAg
ICAgICAgZW50cmllcy5hcHBlbmQoZGlyZWN0b3J5ICsgIlxcIiArIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgVUNoYXIqPih3YWxrZXIuZGF0YSgpLmNGaWxlTmFtZSkpOwotICAgIH0gd2hpbGUgKHdh
bGtlci5zdGVwKCkpOwotCi0gICAgcmV0dXJuIGVudHJpZXM7Ci19Ci0KLWJvb2wgZ2V0Vm9sdW1l
RnJlZVNwYWNlKGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90JikKLXsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotT3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURl
dmljZUlkKGNvbnN0IENTdHJpbmcmIGZzRmlsZSkKLXsKLSAgICBhdXRvIGhhbmRsZSA9IG9wZW5G
aWxlKGZzRmlsZS5kYXRhKCksIEZpbGVPcGVuTW9kZTo6UmVhZCk7Ci0gICAgaWYgKCFpc0hhbmRs
ZVZhbGlkKGhhbmRsZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBCWV9I
QU5ETEVfRklMRV9JTkZPUk1BVElPTiBmaWxlSW5mb3JtYXRpb24gPSB7IH07Ci0gICAgaWYgKCE6
OkdldEZpbGVJbmZvcm1hdGlvbkJ5SGFuZGxlKGhhbmRsZSwgJmZpbGVJbmZvcm1hdGlvbikpIHsK
LSAgICAgICAgY2xvc2VGaWxlKGhhbmRsZSk7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
Ci0gICAgfQotCi0gICAgY2xvc2VGaWxlKGhhbmRsZSk7Ci0KLSAgICByZXR1cm4gZmlsZUluZm9y
bWF0aW9uLmR3Vm9sdW1lU2VyaWFsTnVtYmVyOwotfQotCi1TdHJpbmcgcmVhbFBhdGgoY29uc3Qg
U3RyaW5nJiBmaWxlUGF0aCkKLXsKLSAgICByZXR1cm4gZ2V0RmluYWxQYXRoTmFtZShmaWxlUGF0
aCk7Ci19Ci0KLVN0cmluZyBjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoKQotewotICAgIHJldHVy
biBnZW5lcmF0ZVRlbXBvcmFyeVBhdGgoW10oY29uc3QgU3RyaW5nJiBwcm9wb3NlZFBhdGgpIHsK
LSAgICAgICAgcmV0dXJuIG1ha2VBbGxEaXJlY3Rvcmllcyhwcm9wb3NlZFBhdGgpOwotICAgIH0p
OwotfQotCi1ib29sIGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgZGlyZWN0
b3J5UGF0aCkKLXsKLSAgICBTSEZJTEVPUFNUUlVDVCBkZWxldGVPcGVyYXRpb24gPSB7Ci0gICAg
ICAgIG51bGxwdHIsCi0gICAgICAgIEZPX0RFTEVURSwKLSAgICAgICAgc3RyaW5nVG9OdWxsVGVy
bWluYXRlZFdDaGFyKGRpcmVjdG9yeVBhdGgpLmRhdGEoKSwKLSAgICAgICAgTCIiLAotICAgICAg
ICBGT0ZfTk9DT05GSVJNQVRJT04gfCBGT0ZfTk9FUlJPUlVJIHwgRk9GX1NJTEVOVCwKLSAgICAg
ICAgZmFsc2UsCi0gICAgICAgIDAsCi0gICAgICAgIEwiIgotICAgIH07Ci0gICAgcmV0dXJuICFT
SEZpbGVPcGVyYXRpb24oJmRlbGV0ZU9wZXJhdGlvbik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEZp
bGVTeXN0ZW0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9QYXRoV2Fsa2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9QYXRoV2Fsa2VyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjIwNDA3
YjFjZmVhNjI0ZjNhMTU2OWE4ZmQ2NzY4YTVkZWJlZDM2My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGF0
aFdhbGtlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlBhdGhXYWxrZXIuaCIKLQotI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmlu
Z0V4dHJhcy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVBhdGhXYWxrZXI6OlBhdGhXYWxr
ZXIoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIGNvbnN0IFN0cmluZyYgcGF0dGVybikKLXsKLSAg
ICBTdHJpbmcgcGF0aCA9IGRpcmVjdG9yeSArICJcXCIgKyBwYXR0ZXJuOwotICAgIG1faGFuZGxl
ID0gOjpGaW5kRmlyc3RGaWxlVyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIocGF0aCkuZGF0
YSgpLCAmbV9kYXRhKTsKLX0KLQotUGF0aFdhbGtlcjo6flBhdGhXYWxrZXIoKQotewotICAgIGlm
ICghaXNWYWxpZCgpKQotICAgICAgICByZXR1cm47Ci0gICAgOjpGaW5kQ2xvc2UobV9oYW5kbGUp
OwotfQotCi1ib29sIFBhdGhXYWxrZXI6OnN0ZXAoKQotewotICAgIHJldHVybiA6OkZpbmROZXh0
RmlsZVcobV9oYW5kbGUsICZtX2RhdGEpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGF0aFdhbGtlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BhdGhXYWxrZXIuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZmM1OWQ2NzMxODExYjhjYTE1ODdhNGExMmE3ZGExZTFhMTU5M2Q4NC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vUGF0aFdhbGtlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgPFdpbmRvd3MuaD4KLSNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLWNsYXNzIFBhdGhXYWxrZXIgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBh
dGhXYWxrZXIpOwotcHVibGljOgotICAgIFBhdGhXYWxrZXIoY29uc3QgV1RGOjpTdHJpbmcmIGRp
cmVjdG9yeSwgY29uc3QgV1RGOjpTdHJpbmcmIHBhdHRlcm4pOwotICAgIH5QYXRoV2Fsa2VyKCk7
Ci0KLSAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2hhbmRsZSAhPSBJTlZBTElE
X0hBTkRMRV9WQUxVRTsgfQotICAgIGNvbnN0IFdJTjMyX0ZJTkRfREFUQVcmIGRhdGEoKSBjb25z
dCB7IHJldHVybiBtX2RhdGE7IH0KLQotICAgIGJvb2wgc3RlcCgpOwotCi1wcml2YXRlOgotICAg
IEhBTkRMRSBtX2hhbmRsZTsKLSAgICBXSU4zMl9GSU5EX0RBVEFXIG1fZGF0YTsKLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9TZWFyY2hQb3B1cE1lbnVEQi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
U2VhcmNoUG9wdXBNZW51REIuY3BwCmluZGV4IDllNmU0YzUyZDdiOTgzOGExZjA3YmRkNTlmNDA5
ZDgxNjVmZTU2NjYuLmU1NzMwYjMwY2NmM2YwM2VlZmRmZjlhMzMxYzA4ZWQwZTIyZTU4YmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVEQi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudURCLmNw
cApAQCAtMjUsOSArMjUsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNlYXJj
aFBvcHVwTWVudURCLmgiCiAKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiU1FM
aXRlRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIlNRTGl0ZVRyYW5zYWN0aW9uLmgiCisjaW5jbHVk
ZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAppbmRleCA3NmM5YzVjNzhkNTZkM2U4ZDk3ZDQy
MWY0ZGZhYTRhYjFiZDllY2MwLi5jNGZhMzU2NzBiOTU0NzY3NmI3YzRmYjlhODEyYjNkNmU2ZWM5
OWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKQEAgLTI1LDcg
KzI1LDYgQEAKICNpbmNsdWRlICJDb250cm9sU3RhdGVzLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQu
aCIKICNpbmNsdWRlICJGaWxlTGlzdC5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNs
dWRlICJGbG9hdENvbnZlcnNpb24uaCIKICNpbmNsdWRlICJGbG9hdFJvdW5kZWRSZWN0LmgiCiAj
aW5jbHVkZSAiRm9jdXNDb250cm9sbGVyLmgiCkBAIC00NSw2ICs0NCw3IEBACiAjaW5jbHVkZSAi
U3BpbkJ1dHRvbkVsZW1lbnQuaCIKICNpbmNsdWRlICJTdHJpbmdUcnVuY2F0b3IuaCIKICNpbmNs
dWRlICJUZXh0Q29udHJvbElubmVyRWxlbWVudHMuaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3Rl
bS5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiAjaWYgRU5BQkxFKE1FVEVS
X0VMRU1FTlQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhl
bWVHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lR3RrLmNwcApp
bmRleCBiNjk2ZWFjOGZiMTA1ZTJiNzA5NjIwNjk0NzM5NzNlMTNlYjlmYjY2Li5iMjU5NjZjYjUz
MzI3Njg1OWVlODE5NjcxYWQyNWZkZjc3ZTAzZWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZUd0ay5jcHAKQEAgLTI3LDcgKzI3LDYgQEAKIAogI2luY2x1ZGUgIkNT
U1ZhbHVlS2V5d29yZHMuaCIKICNpbmNsdWRlICJGaWxlTGlzdC5oIgotI2luY2x1ZGUgIkZpbGVT
eXN0ZW0uaCIKICNpbmNsdWRlICJGbG9hdFJvdW5kZWRSZWN0LmgiCiAjaW5jbHVkZSAiRm9udERl
c2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiR1JlZlB0ckd0ay5oIgpAQCAtNTUsNiArNTQsNyBAQAog
I2luY2x1ZGUgPGdkay9nZGsuaD4KICNpbmNsdWRlIDxnbGliLmg+CiAjaW5jbHVkZSA8Z3RrL2d0
ay5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1Jl
ZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2lu
LmNwcAppbmRleCBlZWI5OTg1ZTYyZjVjOWEzNDgyNDNlOGRkZTllY2NjMGE5YmRiZmI1Li4yMTk2
NTdlMWYyNGFhYmEwNTgyNWEyYTYyYjA4MDRjN2ZiYjNmMzM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHAKQEAgLTI0LDcgKzI0LDYgQEAKIAogI2luY2x1
ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCi0jaW5jbHVkZSAi
RmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkZvbnRNZXRyaWNzLmgiCiAjaW5jbHVkZSAiRnJhbWUu
aCIKICNpbmNsdWRlICJGcmFtZVNlbGVjdGlvbi5oIgpAQCAtMzgsNiArMzcsNyBAQAogI2luY2x1
ZGUgIlN5c3RlbUluZm8uaCIKICNpbmNsdWRlICJVc2VyQWdlbnRTdHlsZVNoZWV0cy5oIgogI2lu
Y2x1ZGUgIldlYkNvcmVCdW5kbGVXaW4uaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgog
I2luY2x1ZGUgPHd0Zi9Tb2Z0TGlua2luZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0
aW9uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9S
ZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKaW5kZXggNjBlZWI4Y2MyYzBmNDEyY2EyYmNlZDk4MmFl
OTI3ZmZiMWQ2YTQ2OC4uMWFmNDM3ODhmZmZiYWFhOTEyZTFhZDk3YmJkOThiMTcyZGUzZjBlMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3Ry
YXRpb25EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lmIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKIAotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRl
ICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUmVnaXN0cmF0aW9uU3RvcmUuaCIKICNpbmNsdWRlICJT
UUxpdGVEYXRhYmFzZS5oIgpAQCAtMzksNiArMzgsNyBAQAogI2luY2x1ZGUgIlNlY3VyaXR5T3Jp
Z2luLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3Rm
L0Nyb3NzVGhyZWFkQ29waWVyLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNs
dWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgog
I2luY2x1ZGUgPHd0Zi9TY29wZS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFn
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcAppbmRleCBjMjEwZWNhYzhhNDc0NmU0
MTQwZDQwNjQyZTBjMzcwYTBlNWE3ZWQwLi4xMDVkZDAyODg2MDc1MDcwOTc3Y2FlODdkMmM0YTRm
NDBiYmZlZmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcApAQCAtMzMsOSArMzMsOSBAQAogI2luY2x1ZGUgIlJl
c291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oIgogI2luY2x1ZGUgIldlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZU1vbml0b3IuaD4K
LSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0tleWVk
Q29kaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KKyNpbmNsdWRlIDx3
dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3Rm
L1dvcmtRdWV1ZS5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtEYXRhVGFza0Jsb2IuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0RhdGFUYXNrQmxvYi5oCmluZGV4IDc1ZDMxYTYxYTRmNzQyZjM4N2Y5YjVlYTJkNGY2MDI5
NDM2MTI4N2MuLmViNzk0NDcyNTk1YjU2ZWRkNjIwYmUyNTc2ZWQyMTgxODA1ZDBkODUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5o
CkBAIC0zMyw3ICszMyw3IEBACiAKICNpbmNsdWRlICJOZXR3b3JrRGF0YVRhc2suaCIKICNpbmNs
dWRlIDxXZWJDb3JlL0ZpbGVTdHJlYW1DbGllbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVT
eXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBBc3luY0ZpbGVTdHJlYW07CkBAIC0xMTMsNyArMTEzLDcgQEAgcHJpdmF0ZToK
ICAgICB1bnNpZ25lZCBtX3NpemVJdGVtQ291bnQgeyAwIH07CiAgICAgdW5zaWduZWQgbV9yZWFk
SXRlbUNvdW50IHsgMCB9OwogICAgIGJvb2wgbV9maWxlT3BlbmVkIHsgZmFsc2UgfTsKLSAgICBX
ZWJDb3JlOjpGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgbV9kb3dubG9hZEZpbGUgeyBX
ZWJDb3JlOjpGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlIH07CisgICAgRmls
ZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIG1fZG93bmxvYWRGaWxlIHsgRmlsZVN5c3RlbTo6
aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSB9OwogCiAgICAgVmVjdG9yPFJlZlB0cjxXZWJDb3Jl
OjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBtX2ZpbGVSZWZlcmVuY2VzOwogICAgIFJlZlB0cjxT
YW5kYm94RXh0ZW5zaW9uPiBtX3NhbmRib3hFeHRlbnNpb247CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDU5ZjZhMDcwMmQwMjg4ZWI0
ODFiMzk1NDMxN2JlMzQwYmJjYTY0YmUuLjdlZjI1MzIzYzMxYWU4ZjliZTBhM2IzNzdlNmZlOWE4
YmZjNTQ0MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwCkBAIC0xNjE5LDcgKzE2MTksNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRD
YWNoZU1vZGVsKENhY2hlTW9kZWwgY2FjaGVNb2RlbCkKICAgICB1bnNpZ25lZCB1cmxDYWNoZU1l
bW9yeUNhcGFjaXR5ID0gMDsKICAgICB1aW50NjRfdCB1cmxDYWNoZURpc2tDYXBhY2l0eSA9IDA7
CiAgICAgdWludDY0X3QgZGlza0ZyZWVTaXplID0gMDsKLSAgICBpZiAoV2ViQ29yZTo6RmlsZVN5
c3RlbTo6Z2V0Vm9sdW1lRnJlZVNwYWNlKG1fZGlza0NhY2hlRGlyZWN0b3J5LCBkaXNrRnJlZVNp
emUpKSB7CisgICAgaWYgKEZpbGVTeXN0ZW06OmdldFZvbHVtZUZyZWVTcGFjZShtX2Rpc2tDYWNo
ZURpcmVjdG9yeSwgZGlza0ZyZWVTaXplKSkgewogICAgICAgICAvLyBBcyBhIGZ1ZGdlIGZhY3Rv
ciwgdXNlIDEwMDAgaW5zdGVhZCBvZiAxMDI0LCBpbiBjYXNlIHRoZSByZXBvcnRlZCBieXRlCiAg
ICAgICAgIC8vIGNvdW50IGRvZXNuJ3QgYWxpZ24gZXhhY3RseSB0byBhIG1lZ2FieXRlIGJvdW5k
YXJ5LgogICAgICAgICBkaXNrRnJlZVNpemUgLz0gS0IgKiAxMDAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3Bw
CmluZGV4IGYxN2ZkOWY5MmJlNWQyYTUwNTQ1YzA3OTllMzdkOWFlMGNmM2VmYmQuLjFlM2UxMWIx
OThjMzUyNzIwYTAzZjU3OWQyOTk0N2Y5YmVlZmRiNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKQEAg
LTUyLDcgKzUyLDcgQEAgU3RyaW5nIEVuZ2luZTo6Y2FjaGVzUm9vdFBhdGgoY29uc3QgV2ViQ29y
ZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4pCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICBLZXkg
a2V5KG9yaWdpbi50b3BPcmlnaW4udG9TdHJpbmcoKSwgb3JpZ2luLmNsaWVudE9yaWdpbi50b1N0
cmluZygpLCB7IH0sIHsgfSwgc2FsdCgpKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJvb3RQYXRoKCksIGtleS5oYXNoQXNTdHJpbmco
KSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyb290
UGF0aCgpLCBrZXkuaGFzaEFzU3RyaW5nKCkpOwogfQogCiBFbmdpbmU6On5FbmdpbmUoKQpAQCAt
MjkxLDkgKzI5MSw5IEBAIHZvaWQgRW5naW5lOjppbml0aWFsaXplKENvbXBsZXRpb25DYWxsYmFj
ayYmIGNhbGxiYWNrKQogICAgIGlmICghc2hvdWxkQ29tcHV0ZVNhbHQpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIFN0cmluZyBzYWx0UGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChtX3Jvb3RQYXRoLCAic2FsdCJfcyk7CisgICAgU3RyaW5nIHNhbHRQ
YXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fcm9vdFBhdGgsICJz
YWx0Il9zKTsKICAgICBtX2lvUXVldWUtPmRpc3BhdGNoKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VX
ZWFrUHRyKHRoaXMpLCBzYWx0UGF0aCA9IFdURk1vdmUoc2FsdFBhdGgpXSAoKSBtdXRhYmxlIHsK
LSAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKG1fcm9vdFBh
dGgpOworICAgICAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMobV9yb290UGF0aCk7
CiAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgd2Vha1RoaXMgPSBXVEZN
b3ZlKHdlYWtUaGlzKSwgc2FsdCA9IHJlYWRPck1ha2VTYWx0KHNhbHRQYXRoKV0oKSBtdXRhYmxl
IHsKICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpA
QCAtMzgzLDkgKzM4Myw5IEBAIHZvaWQgRW5naW5lOjp3cml0ZUZpbGUoY29uc3QgU3RyaW5nJiBm
aWxlbmFtZSwgTmV0d29ya0NhY2hlOjpEYXRhJiYgZGF0YSwgV2ViQ29yCiAgICAgbV9wZW5kaW5n
V3JpdGVDYWxsYmFja3MuYWRkKCsrbV9wZW5kaW5nQ2FsbGJhY2tzQ291bnRlciwgV1RGTW92ZShj
YWxsYmFjaykpOwogICAgIG1faW9RdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHdlYWtUaGlzID0gbWFr
ZVdlYWtQdHIodGhpcyksIGlkZW50aWZpZXIgPSBtX3BlbmRpbmdDYWxsYmFja3NDb3VudGVyLCBk
YXRhID0gV1RGTW92ZShkYXRhKSwgZmlsZW5hbWUgPSBmaWxlbmFtZS5pc29sYXRlZENvcHkoKV0o
KSBtdXRhYmxlIHsKIAotICAgICAgICBTdHJpbmcgZGlyZWN0b3J5UGF0aCA9IFdlYkNvcmU6OkZp
bGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUoZmlsZW5hbWUpOwotICAgICAgICBpZiAoIVdlYkNvcmU6
OkZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZGlyZWN0b3J5UGF0aCkpCi0gICAgICAgICAgICBXZWJD
b3JlOjpGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoZGlyZWN0b3J5UGF0aCk7CisgICAg
ICAgIFN0cmluZyBkaXJlY3RvcnlQYXRoID0gRmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShmaWxl
bmFtZSk7CisgICAgICAgIGlmICghRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhkaXJlY3RvcnlQYXRo
KSkKKyAgICAgICAgICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhkaXJlY3RvcnlQ
YXRoKTsKIAogICAgICAgICBhdXRvIGNoYW5uZWwgPSBJT0NoYW5uZWw6Om9wZW4oZmlsZW5hbWUs
IElPQ2hhbm5lbDo6VHlwZTo6Q3JlYXRlKTsKICAgICAgICAgY2hhbm5lbC0+d3JpdGUoMCwgZGF0
YSwgbnVsbHB0ciwgW3RoaXMsIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIGlkZW50aWZp
ZXJdKGludCBlcnJvcikgbXV0YWJsZSB7CkBAIC00NDUsNyArNDQ1LDcgQEAgdm9pZCBFbmdpbmU6
OnJlbW92ZUZpbGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgbV9pb1F1ZXVlLT5kaXNwYXRjaChbZmlsZW5hbWUgPSBmaWxlbmFtZS5pc29sYXRlZENvcHko
KV0oKSBtdXRhYmxlIHsKLSAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShm
aWxlbmFtZSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZmlsZW5hbWUpOwogICAg
IH0pOwogfQogCkBAIC00ODcsOCArNDg3LDggQEAgdm9pZCBFbmdpbmU6OmZldGNoRW50cmllcyhi
b29sIHNob3VsZENvbXB1dGVTaXplLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmUKICAg
ICB9CiAKICAgICBhdXRvIHRhc2tDb3VudGVyID0gUmVhZE9yaWdpbnNUYXNrQ291bnRlcjo6Y3Jl
YXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICBmb3IgKGF1dG8mIGZvbGRlclBh
dGggOiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KG1fcm9vdFBhdGgsICIqIikp
IHsKLSAgICAgICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlSXNEaXJlY3RvcnkoZm9s
ZGVyUGF0aCwgV2ViQ29yZTo6RmlsZVN5c3RlbTo6U2hvdWxkRm9sbG93U3ltYm9saWNMaW5rczo6
Tm8pKQorICAgIGZvciAoYXV0byYgZm9sZGVyUGF0aCA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3Rv
cnkobV9yb290UGF0aCwgIioiKSkgeworICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVJc0Rp
cmVjdG9yeShmb2xkZXJQYXRoLCBGaWxlU3lzdGVtOjpTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtz
OjpObykpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgQ2FjaGVzOjpyZXRyaWV2ZU9y
aWdpbkZyb21EaXJlY3RvcnkoZm9sZGVyUGF0aCwgKm1faW9RdWV1ZSwgW3Byb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgc2hvdWxkQ29tcHV0ZVNpemUsIHRhc2tDb3VudGVyID0gdGFza0Nv
dW50ZXIuY29weVJlZigpXSAoYXV0byYmIG9yaWdpbikgbXV0YWJsZSB7CiAgICAgICAgICAgICBB
U1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtNTMxLDggKzUzMSw4IEBAIHZvaWQgRW5naW5l
OjpjbGVhckFsbENhY2hlc0Zyb21EaXNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlCiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIG1faW9R
dWV1ZS0+ZGlzcGF0Y2goW3BhdGggPSBtX3Jvb3RQYXRoLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAg
ICAgICBmb3IgKGF1dG8mIGZpbGVuYW1lIDogV2ViQ29yZTo6RmlsZVN5c3RlbTo6bGlzdERpcmVj
dG9yeShwYXRoLCAiKiIpKSB7Ci0gICAgICAgICAgICBpZiAoV2ViQ29yZTo6RmlsZVN5c3RlbTo6
ZmlsZUlzRGlyZWN0b3J5KGZpbGVuYW1lLCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpTaG91bGRGb2xs
b3dTeW1ib2xpY0xpbmtzOjpObykpCisgICAgICAgIGZvciAoYXV0byYgZmlsZW5hbWUgOiBGaWxl
U3lzdGVtOjpsaXN0RGlyZWN0b3J5KHBhdGgsICIqIikpIHsKKyAgICAgICAgICAgIGlmIChGaWxl
U3lzdGVtOjpmaWxlSXNEaXJlY3RvcnkoZmlsZW5hbWUsIEZpbGVTeXN0ZW06OlNob3VsZEZvbGxv
d1N5bWJvbGljTGlua3M6Ok5vKSkKICAgICAgICAgICAgICAgICBkZWxldGVEaXJlY3RvcnlSZWN1
cnNpdmVseShmaWxlbmFtZSk7CiAgICAgICAgIH0KICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRp
c3BhdGNoKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKQEAgLTU2Miw4ICs1NjIsOCBAQCB2
b2lkIEVuZ2luZTo6Y2xlYXJDYWNoZXNGb3JPcmlnaW5Gcm9tRGlzayhjb25zdCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEmIG9yaQogCiAgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBD
YWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAK
LSAgICBmb3IgKGF1dG8mIGZvbGRlclBhdGggOiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpsaXN0RGly
ZWN0b3J5KG1fcm9vdFBhdGgsICIqIikpIHsKLSAgICAgICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lz
dGVtOjpmaWxlSXNEaXJlY3RvcnkoZm9sZGVyUGF0aCwgV2ViQ29yZTo6RmlsZVN5c3RlbTo6U2hv
dWxkRm9sbG93U3ltYm9saWNMaW5rczo6Tm8pKQorICAgIGZvciAoYXV0byYgZm9sZGVyUGF0aCA6
IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobV9yb290UGF0aCwgIioiKSkgeworICAgICAgICBp
ZiAoIUZpbGVTeXN0ZW06OmZpbGVJc0RpcmVjdG9yeShmb2xkZXJQYXRoLCBGaWxlU3lzdGVtOjpT
aG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpObykpCiAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgQ2FjaGVzOjpyZXRyaWV2ZU9yaWdpbkZyb21EaXJlY3RvcnkoZm9sZGVyUGF0aCwgKm1f
aW9RdWV1ZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgb3JpZ2luLCBj
YWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpLCBmb2xkZXJQ
YXRoXSAoT3B0aW9uYWw8V2ViQ29yZTo6Q2xpZW50T3JpZ2luPiYmIGZvbGRlck9yaWdpbikgbXV0
YWJsZSB7CiAgICAgICAgICAgICBpZiAoIWZvbGRlck9yaWdpbikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5l
Q2FjaGVzLmNwcAppbmRleCAxOTEzNDcwY2RkMjIwY2UzYmU5NzVkZjk5MDBlZjM1MGQwNzE3NjNj
Li4xZjYwOGNmNTI1Zjk5NmIyNGVhNDExMzYwMGU4ZTI5Y2IyODdjMjdjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hl
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3Jh
Z2VFbmdpbmVDYWNoZXMuY3BwCkBAIC00MiwxMiArNDIsMTIgQEAgdXNpbmcgbmFtZXNwYWNlIE5l
dHdvcmtDYWNoZTsKIAogc3RhdGljIGlubGluZSBTdHJpbmcgY2FjaGVzTGlzdEZpbGVuYW1lKGNv
bnN0IFN0cmluZyYgY2FjaGVzUm9vdFBhdGgpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChjYWNoZXNSb290UGF0aCwgImNhY2hlc2xp
c3QiX3MpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
Y2FjaGVzUm9vdFBhdGgsICJjYWNoZXNsaXN0Il9zKTsKIH0KIAogc3RhdGljIGlubGluZSBTdHJp
bmcgY2FjaGVzT3JpZ2luRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBjYWNoZXNSb290UGF0aCkKIHsK
LSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KGNhY2hlc1Jvb3RQYXRoLCAib3JpZ2luIl9zKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNhY2hlc1Jvb3RQYXRoLCAib3JpZ2luIl9zKTsKIH0KIAog
Q2FjaGVzOjp+Q2FjaGVzKCkKQEAgLTU4LDcgKzU4LDcgQEAgQ2FjaGVzOjp+Q2FjaGVzKCkKIHZv
aWQgQ2FjaGVzOjpyZXRyaWV2ZU9yaWdpbkZyb21EaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBmb2xk
ZXJQYXRoLCBXb3JrUXVldWUmIHF1ZXVlLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0
aW9uYWw8V2ViQ29yZTo6Q2xpZW50T3JpZ2luPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
ICAgICBxdWV1ZS5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSwgZmlsZW5hbWUgPSBjYWNoZXNPcmlnaW5GaWxlbmFtZShmb2xkZXJQYXRoKV0o
KSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlRXhpc3Rz
KGZpbGVuYW1lKSkgeworICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZmlsZW5h
bWUpKSB7CiAgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0KTsKICAgICAgICAgICAgIH0p
OwpAQCAtNDA4LDcgKzQwOCw3IEBAIHZvaWQgQ2FjaGVzOjpyZWFkQ2FjaGVzRnJvbURpc2soV1RG
OjpGdW5jdGlvbjx2b2lkKEV4cGVjdGVkPFZlY3RvcjxDYWNoZT4sIEVycm9yCiAgICAgfQogCiAg
ICAgYXV0byBmaWxlbmFtZSA9IGNhY2hlc0xpc3RGaWxlbmFtZShtX3Jvb3RQYXRoKTsKLSAgICBp
ZiAoIVdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZmlsZW5hbWUpKSB7CisgICAgaWYg
KCFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGZpbGVuYW1lKSkgewogICAgICAgICBjYWxsYmFjayhW
ZWN0b3I8Q2FjaGU+IHsgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKaW5kZXggZmQy
N2NmMDZmZTQzMWZkMzg0Y2EyZjNiN2U0OTFmNmZhYzFkZTA4Ni4uZjY1MTFkODk5YzQyODEyMmM0
MjI2ZDhjMmY5MTA4MjMwNTRiYWVkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcApAQCAtMzIsMTMgKzMyLDEzIEBACiAjaW5j
bHVkZSAiTmV0d29ya0NhY2hlU3RvcmFnZS5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9DYWNoZVZhbGlkYXRpb24uaD4KLSNpbmNsdWRlIDxXZWJDb3Jl
L0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUVFBIZWFkZXJOYW1lcy5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvTG93UG93ZXJNb2RlTm90aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1
ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2lu
Y2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KQEAgLTUxLDcgKzUxLDcgQEAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogbmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7CiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOjpGaWxlU3lzdGVtOwordXNpbmcgbmFtZXNwYWNlIFdURjo6RmlsZVN5c3RlbTsKIAogc3Rh
dGljIGNvbnN0IEF0b21pY1N0cmluZyYgcmVzb3VyY2VUeXBlKCkKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQmxvYlN0b3JhZ2Uu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVCbG9i
U3RvcmFnZS5jcHAKaW5kZXggZjczYzUwZGExOTQ3OTMzNjVkNmY1MWUwNjE0MWI1MjM3MjdlNzFl
ZS4uOTUzOGRhNjQxYjQyNzQwMDJiMjc5YWRhYTg3YzE1NDJkMzZhMDI3ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVCbG9iU3RvcmFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVCbG9iU3RvcmFnZS5jcHAKQEAgLTI4LDggKzI4LDggQEAKIAogI2luY2x1ZGUgIkxvZ2dpbmcu
aCIKICNpbmNsdWRlICJOZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmgiCi0jaW5jbHVkZSA8V2ViQ29y
ZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5
c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3RmL1NIQTEuaD4K
IApAQCAtNTcsMTUgKzU3LDE1IEBAIHZvaWQgQmxvYlN0b3JhZ2U6OnN5bmNocm9uaXplKCkKIHsK
ICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIFdlYkNvcmU6OkZpbGVTeXN0
ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhibG9iRGlyZWN0b3J5UGF0aCgpKTsKKyAgICBGaWxlU3lz
dGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoYmxvYkRpcmVjdG9yeVBhdGgoKSk7CiAKICAgICBtX2Fw
cHJveGltYXRlU2l6ZSA9IDA7CiAgICAgYXV0byBibG9iRGlyZWN0b3J5ID0gYmxvYkRpcmVjdG9y
eVBhdGgoKTsKICAgICB0cmF2ZXJzZURpcmVjdG9yeShibG9iRGlyZWN0b3J5LCBbdGhpcywgJmJs
b2JEaXJlY3RvcnldKGNvbnN0IFN0cmluZyYgbmFtZSwgRGlyZWN0b3J5RW50cnlUeXBlIHR5cGUp
IHsKICAgICAgICAgaWYgKHR5cGUgIT0gRGlyZWN0b3J5RW50cnlUeXBlOjpGaWxlKQogICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICBhdXRvIHBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQoYmxvYkRpcmVjdG9yeSwgbmFtZSk7Ci0gICAgICAgIGF1
dG8gZmlsZVBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24ocGF0aCk7CisgICAgICAgIGF1dG8gcGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChibG9iRGlyZWN0b3J5LCBuYW1lKTsKKyAgICAgICAgYXV0byBmaWxlUGF0aCA9
IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKICAgICAgICAgc3Ry
dWN0IHN0YXQgc3RhdDsKICAgICAgICAgOjpzdGF0KGZpbGVQYXRoLmRhdGEoKSwgJnN0YXQpOwog
ICAgICAgICAvLyBObyBjbGllbnRzIGxlZnQgZm9yIHRoaXMgYmxvYi4KQEAgLTgxLDcgKzgxLDcg
QEAgdm9pZCBCbG9iU3RvcmFnZTo6c3luY2hyb25pemUoKQogU3RyaW5nIEJsb2JTdG9yYWdlOjpi
bG9iUGF0aEZvckhhc2goY29uc3QgU0hBMTo6RGlnZXN0JiBoYXNoKSBjb25zdAogewogICAgIGF1
dG8gaGFzaEFzU3RyaW5nID0gU0hBMTo6aGV4RGlnZXN0KGhhc2gpOwotICAgIHJldHVybiBXZWJD
b3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoYmxvYkRpcmVjdG9yeVBh
dGgoKSwgU3RyaW5nOjpmcm9tVVRGOChoYXNoQXNTdHJpbmcpKTsKKyAgICByZXR1cm4gRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGJsb2JEaXJlY3RvcnlQYXRoKCksIFN0cmlu
Zzo6ZnJvbVVURjgoaGFzaEFzU3RyaW5nKSk7CiB9CiAKIEJsb2JTdG9yYWdlOjpCbG9iIEJsb2JT
dG9yYWdlOjphZGQoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBEYXRhJiBkYXRhKQpAQCAtOTMs
OCArOTMsOCBAQCBCbG9iU3RvcmFnZTo6QmxvYiBCbG9iU3RvcmFnZTo6YWRkKGNvbnN0IFN0cmlu
ZyYgcGF0aCwgY29uc3QgRGF0YSYgZGF0YSkKICAgICBpZiAoZGF0YS5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiB7IGRhdGEsIGhhc2ggfTsKIAotICAgIGF1dG8gYmxvYlBhdGggPSBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oYmxvYlBhdGhGb3JIYXNoKGhh
c2gpKTsKLSAgICBhdXRvIGxpbmtQYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGF1dG8gYmxvYlBhdGggPSBGaWxlU3lzdGVtOjpm
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oYmxvYlBhdGhGb3JIYXNoKGhhc2gpKTsKKyAgICBhdXRv
IGxpbmtQYXRoID0gRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwog
ICAgIHVubGluayhsaW5rUGF0aC5kYXRhKCkpOwogCiAgICAgYm9vbCBibG9iRXhpc3RzID0gYWNj
ZXNzKGJsb2JQYXRoLmRhdGEoKSwgRl9PSykgIT0gLTE7CkBAIC0xMjcsNyArMTI3LDcgQEAgQmxv
YlN0b3JhZ2U6OkJsb2IgQmxvYlN0b3JhZ2U6OmdldChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAg
ICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBhdXRvIGxpbmtQYXRoID0gV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGF1
dG8gbGlua1BhdGggPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7
CiAgICAgYXV0byBkYXRhID0gbWFwRmlsZShsaW5rUGF0aC5kYXRhKCkpOwogCiAgICAgcmV0dXJu
IHsgZGF0YSwgY29tcHV0ZVNIQTEoZGF0YSwgbV9zYWx0KSB9OwpAQCAtMTM3LDcgKzEzNyw3IEBA
IHZvaWQgQmxvYlN0b3JhZ2U6OnJlbW92ZShjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgQVNT
RVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBhdXRvIGxpbmtQYXRoID0gV2ViQ29yZTo6
RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGF1dG8gbGlu
a1BhdGggPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAgICAg
dW5saW5rKGxpbmtQYXRoLmRhdGEoKSk7CiB9CiAKQEAgLTE0NSw3ICsxNDUsNyBAQCB1bnNpZ25l
ZCBCbG9iU3RvcmFnZTo6c2hhcmVDb3VudChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgQVNT
RVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBhdXRvIGxpbmtQYXRoID0gV2ViQ29yZTo6
RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGF1dG8gbGlu
a1BhdGggPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAgICAg
c3RydWN0IHN0YXQgc3RhdDsKICAgICBpZiAoOjpzdGF0KGxpbmtQYXRoLmRhdGEoKSwgJnN0YXQp
IDwgMCkKICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcAppbmRleCA5ZTMxODk0M2Q3YzYx
MzhjYWExYzFkYzMwZjNhMmYzNWYzMzAyOWYyLi4xYTMyYWE5YTBlNTNiNDY5NTdhYThlYjNiYjIz
ODU2ZjBhODk5ZjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5jcHAKQEAgLTI2LDkgKzI2LDkgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJOZXR3b3JrQ2FjaGVEYXRhLmgiCiAKLSNpbmNsdWRlIDxX
ZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxmY250bC5oPgogI2luY2x1ZGUgPHd0Zi9D
cnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVt
Lmg+CiAKICNpZiAhT1MoV0lORE9XUykKICNpbmNsdWRlIDxzeXMvbW1hbi5oPgpAQCAtMTU2LDcg
KzE1Niw3IEBAIHN0YXRpYyBTYWx0IG1ha2VTYWx0KCkKIE9wdGlvbmFsPFNhbHQ+IHJlYWRPck1h
a2VTYWx0KGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICNpZiAhT1MoV0lORE9XUykKLSAgICBhdXRv
IGNwYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBh
dGgpOworICAgIGF1dG8gY3BhdGggPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24ocGF0aCk7CiAgICAgYXV0byBmZCA9IG9wZW4oY3BhdGguZGF0YSgpLCBPX1JET05MWSwgMCk7
CiAgICAgU2FsdCBzYWx0OwogICAgIGF1dG8gYnl0ZXNSZWFkID0gcmVhZChmZCwgc2FsdC5kYXRh
KCksIHNhbHQuc2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uY3BwCmluZGV4IDI1YmVmN2Y5
MmU4ZWIzNjZhOTRmNGJjZDM3OTgzYjE2YTlkZTM1MDguLmIwYjJlNzE1ZTY1ZGQzYTkxM2NmNzBk
NzAzNjVhNDUwYmJlYjk5NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmNwcApAQCAtMjcsOCAr
MjcsOCBAQAogI2luY2x1ZGUgIk5ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uaCIKIAogI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3
dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8
d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCkBAIC03MCw3
ICs3MCw3IEBAIHN0YXRpYyBEaXJlY3RvcnlFbnRyeVR5cGUgZGlyZWN0b3J5RW50cnlUeXBlKHVp
bnQ4X3QgZHR5cGUpCiB2b2lkIHRyYXZlcnNlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwg
Y29uc3QgRnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgRGlyZWN0b3J5RW50cnlUeXBlKT4m
IGZ1bmN0aW9uKQogewogI2lmICFPUyhXSU5ET1dTKQotICAgIERJUiogZGlyID0gb3BlbmRpcihX
ZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgp
KTsKKyAgICBESVIqIGRpciA9IG9wZW5kaXIoRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKHBhdGgpLmRhdGEoKSk7CiAgICAgaWYgKCFkaXIpCiAgICAgICAgIHJldHVybjsKICAg
ICBkaXJlbnQqIGRwOwpAQCAtOTQsMTAgKzk0LDEwIEBAIHZvaWQgdHJhdmVyc2VEaXJlY3Rvcnko
Y29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBE
CiB2b2lkIGRlbGV0ZURpcmVjdG9yeVJlY3Vyc2l2ZWx5KGNvbnN0IFN0cmluZyYgcGF0aCkKIHsK
ICAgICB0cmF2ZXJzZURpcmVjdG9yeShwYXRoLCBbJnBhdGhdKGNvbnN0IFN0cmluZyYgbmFtZSwg
RGlyZWN0b3J5RW50cnlUeXBlIHR5cGUpIHsKLSAgICAgICAgU3RyaW5nIGVudHJ5UGF0aCA9IFdl
YkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXRoLCBuYW1lKTsK
KyAgICAgICAgU3RyaW5nIGVudHJ5UGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChwYXRoLCBuYW1lKTsKICAgICAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgICAgIGNh
c2UgRGlyZWN0b3J5RW50cnlUeXBlOjpGaWxlOgotICAgICAgICAgICAgV2ViQ29yZTo6RmlsZVN5
c3RlbTo6ZGVsZXRlRmlsZShlbnRyeVBhdGgpOworICAgICAgICAgICAgRmlsZVN5c3RlbTo6ZGVs
ZXRlRmlsZShlbnRyeVBhdGgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgRGly
ZWN0b3J5RW50cnlUeXBlOjpEaXJlY3Rvcnk6CiAgICAgICAgICAgICBkZWxldGVEaXJlY3RvcnlS
ZWN1cnNpdmVseShlbnRyeVBhdGgpOwpAQCAtMTA1LDE5ICsxMDUsMTkgQEAgdm9pZCBkZWxldGVE
aXJlY3RvcnlSZWN1cnNpdmVseShjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgICAgIC8vIFRoaXMg
ZG9lc24ndCBmb2xsb3cgc3ltbGlua3MuCiAgICAgICAgIH0KICAgICB9KTsKLSAgICBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShwYXRoKTsKKyAgICBGaWxlU3lzdGVt
OjpkZWxldGVFbXB0eURpcmVjdG9yeShwYXRoKTsKIH0KIAogRmlsZVRpbWVzIGZpbGVUaW1lcyhj
b25zdCBTdHJpbmcmIHBhdGgpCiB7CiAjaWYgSEFWRShTVEFUX0JJUlRIVElNRSkKICAgICBzdHJ1
Y3Qgc3RhdCBmaWxlSW5mbzsKLSAgICBpZiAoc3RhdChXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpLCAmZmlsZUluZm8pKQorICAgIGlmIChz
dGF0KEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCksICZm
aWxlSW5mbykpCiAgICAgICAgIHJldHVybiB7IH07CiAgICAgcmV0dXJuIHsgV2FsbFRpbWU6OmZy
b21SYXdTZWNvbmRzKGZpbGVJbmZvLnN0X2JpcnRodGltZSksIFdhbGxUaW1lOjpmcm9tUmF3U2Vj
b25kcyhmaWxlSW5mby5zdF9tdGltZSkgfTsKICNlbGlmIFVTRShTT1VQKQogICAgIC8vIFRoZXJl
J3Mgbm8gc3RfYmlydGh0aW1lIGluIHNvbWUgb3BlcmF0aW5nIHN5c3RlbXMgbGlrZSBMaW51eCwg
c28gd2UgdXNlIHhhdHRycyB0byBzZXQvZ2V0IHRoZSBjcmVhdGlvbiB0aW1lLgotICAgIEdSZWZQ
dHI8R0ZpbGU+IGZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0aChXZWJDb3JlOjpG
aWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpKSk7CisgICAg
R1JlZlB0cjxHRmlsZT4gZmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKEZpbGVT
eXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCkpKTsKICAgICBHUmVm
UHRyPEdGaWxlSW5mbz4gZmlsZUluZm8gPSBhZG9wdEdSZWYoZ19maWxlX3F1ZXJ5X2luZm8oZmls
ZS5nZXQoKSwgInhhdHRyOjpiaXJ0aHRpbWUsdGltZTo6bW9kaWZpZWQiLCBHX0ZJTEVfUVVFUllf
SU5GT19OT05FLCBudWxscHRyLCBudWxscHRyKSk7CiAgICAgaWYgKCFmaWxlSW5mbykKICAgICAg
ICAgcmV0dXJuIHsgfTsKQEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lkIHVwZGF0ZUZpbGVNb2RpZmlj
YXRpb25UaW1lSWZOZWVkZWQoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIH0KICNpZiAhT1MoV0lO
RE9XUykKICAgICAvLyBUaGlzIHJlYWxseSB1cGRhdGVzIGJvdGggdGhlIGFjY2VzcyB0aW1lIGFu
ZCB0aGUgbW9kaWZpY2F0aW9uIHRpbWUuCi0gICAgdXRpbWVzKFdlYkNvcmU6OkZpbGVTeXN0ZW06
OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCksIG51bGxwdHIpOworICAgIHV0
aW1lcyhGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpLCBu
dWxscHRyKTsKICNlbmRpZgogfQogCkBAIC0xNTYsNyArMTU2LDcgQEAgYm9vbCBpc1NhZmVUb1Vz
ZU1lbW9yeU1hcEZvclBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIGF0dHJsaXN0IGF0dHJM
aXN0ID0geyB9OwogICAgIGF0dHJMaXN0LmJpdG1hcGNvdW50ID0gQVRUUl9CSVRfTUFQX0NPVU5U
OwogICAgIGF0dHJMaXN0LmNvbW1vbmF0dHIgPSBBVFRSX0NNTl9EQVRBX1BST1RFQ1RfRkxBR1M7
Ci0gICAgaW50MzJfdCBlcnJvciA9IGdldGF0dHJsaXN0KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCksICZhdHRyTGlzdCwgJmF0dHJCdWZm
ZXIsIHNpemVvZihhdHRyQnVmZmVyKSwgRlNPUFRfTk9GT0xMT1cpOworICAgIGludDMyX3QgZXJy
b3IgPSBnZXRhdHRybGlzdChGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0
aCkuZGF0YSgpLCAmYXR0ckxpc3QsICZhdHRyQnVmZmVyLCBzaXplb2YoYXR0ckJ1ZmZlciksIEZT
T1BUX05PRk9MTE9XKTsKICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1IoTmV0d29yaywgIlVuYWJsZSB0byBnZXQgY2FjaGUgZGlyZWN0b3J5IHByb3RlY3Rpb24gY2xh
c3MsIGRpc2FibGluZyB1c2Ugb2Ygc2hhcmVkIG1hcHBlZCBtZW1vcnkiKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uaAppbmRleCA3ZGNjZTZjNGMzNjcyOGU5MzE1
ODMzYTUzMjliZDU2ZDVjNDEyYjhhLi4xODMxYTM1MWM5YjBmZjUwNWRmOWFkYzdmN2MwM2FmNzAx
ZDZjODgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZUZpbGVTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uaApAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJh
Z21hIG9uY2UKIAotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPHd0
Zi9GaWxlU3lzdGVtLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogbmFtZXNwYWNlIE5ldHdvcmtD
YWNoZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZUlPQ2hhbm5lbENvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxDb2NvYS5tbQppbmRleCAzNjliY2Y5NzNmMmRj
ZWUwYTNkNDM5NjM0NTM3MGI2NDYyMWU5ZjA4Li5jNjUyMTY0Y2ExODhhMDdkYTU3YmNkZTc1ZjNh
MjI1MmUxODJmMDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsQ29jb2EubW0KQEAgLTQxLDcg
KzQxLDcgQEAgSU9DaGFubmVsOjpJT0NoYW5uZWwoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgVHlw
ZSB0eXBlKQogICAgIDogbV9wYXRoKGZpbGVQYXRoKQogICAgICwgbV90eXBlKHR5cGUpCiB7Ci0g
ICAgYXV0byBwYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKGZpbGVQYXRoKTsKKyAgICBhdXRvIHBhdGggPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oZmlsZVBhdGgpOwogICAgIGludCBvZmxhZzsKICAgICBtb2RlX3QgbW9kZTsK
ICAgICBib29sIHVzZUxvd0lPUHJpb3JpdHkgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsU291cC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5l
bFNvdXAuY3BwCmluZGV4IDUzOTJjNzkwNTY5ZmQ2NjU3YTIxYTI2MjBjYjA1MWVmYmVlZjA0NTku
LmI1NmY5NjU1MzEyY2RhZDBjMTA4ZGNjYzZlZjE3Mjk5NWFlZDFhNWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsU291
cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVJT0NoYW5uZWxTb3VwLmNwcApAQCAtNDEsNyArNDEsNyBAQCBJT0NoYW5uZWw6OklPQ2hhbm5l
bChjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBUeXBlIHR5cGUpCiAgICAgOiBtX3BhdGgoZmlsZVBh
dGgpCiAgICAgLCBtX3R5cGUodHlwZSkKIHsKLSAgICBhdXRvIHBhdGggPSBXZWJDb3JlOjpGaWxl
U3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZVBhdGgpOworICAgIGF1dG8gcGF0
aCA9IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWxlUGF0aCk7CiAgICAg
R1JlZlB0cjxHRmlsZT4gZmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKHBhdGgu
ZGF0YSgpKSk7CiAgICAgc3dpdGNoIChtX3R5cGUpIHsKICAgICBjYXNlIFR5cGU6OkNyZWF0ZTog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVTdGF0aXN0aWNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3RhdGlzdGljcy5jcHAKaW5kZXggYjRhMTMxNGViNGIxNWVlMDMzMmY3NGU5
MjFlMmZjODcxOTA2NGMzNy4uNjFiZWYxZTExYzNjZjgzNzVmNzM5MjViNzIzYjkxNmZiMzFlYjM3
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVTdGF0aXN0aWNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZVN0YXRpc3RpY3MuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxTdGF0aXN0aWNzPiBTdGF0aXN0aWNzOjpvcGVuKENhY2hlJiBjYWNoZSwgY29uc3Qg
U3RyaW5nJiBjYWNoZVBhCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAg
IFN0cmluZyBkYXRhYmFzZVBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoY2FjaGVQYXRoLCBTdGF0aXN0aWNzRGF0YWJhc2VOYW1lKTsKKyAgICBTdHJp
bmcgZGF0YWJhc2VQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNh
Y2hlUGF0aCwgU3RhdGlzdGljc0RhdGFiYXNlTmFtZSk7CiAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8U3RhdGlzdGljcz4oY2FjaGUsIGRhdGFiYXNlUGF0aCk7CiB9CiAKQEAgLTk4LDcgKzk4
LDcgQEAgdm9pZCBTdGF0aXN0aWNzOjppbml0aWFsaXplKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VQ
YXRoKQogICAgIHNlcmlhbEJhY2tncm91bmRJT1F1ZXVlKCkuZGlzcGF0Y2goW3RoaXMsIGRhdGFi
YXNlUGF0aCA9IGRhdGFiYXNlUGF0aC5pc29sYXRlZENvcHkoKSwgbmV0d29ya0NhY2hlUGF0aCA9
IG1fY2FjaGUucmVjb3Jkc1BhdGgoKSwgc3RhcnRUaW1lXSB7CiAgICAgICAgIFdlYkNvcmU6OlNR
TGl0ZVRyYW5zYWN0aW9uSW5Qcm9ncmVzc0F1dG9Db3VudGVyIHRyYW5zYWN0aW9uQ291bnRlcjsK
IAotICAgICAgICBpZiAoIVdlYkNvcmU6OkZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhX
ZWJDb3JlOjpGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKGRhdGFiYXNlUGF0aCkpKQorICAgICAg
ICBpZiAoIUZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhGaWxlU3lzdGVtOjpkaXJlY3Rv
cnlOYW1lKGRhdGFiYXNlUGF0aCkpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIExP
RyhOZXR3b3JrQ2FjaGUsICIoTmV0d29ya1Byb2Nlc3MpIE9wZW5pbmcgbmV0d29yayBjYWNoZSBz
dGF0aXN0aWNzIGRhdGFiYXNlIGF0ICVzLi4uIiwgZGF0YWJhc2VQYXRoLnV0ZjgoKS5kYXRhKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlU3RvcmFnZS5jcHAKaW5kZXggNGVhNzQzMGZhMjA0NGU5MDE0YTg5OTA0ZDViYmMx
ZWI2NWI3OWNjNi4uYzI2YWExYjk2YzcxM2E4MDAzN2ZkMWM1Nzg2NWRiOTcyYjY0YWVlZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVT
dG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZVN0b3JhZ2UuY3BwCkBAIC0xNDUsMjkgKzE0NSwyOSBAQCBwdWJsaWM6CiBzdGF0aWMg
U3RyaW5nIG1ha2VWZXJzaW9uZWREaXJlY3RvcnlQYXRoKGNvbnN0IFN0cmluZyYgYmFzZURpcmVj
dG9yeVBhdGgpCiB7CiAgICAgU3RyaW5nIHZlcnNpb25TdWJkaXJlY3RvcnkgPSB2ZXJzaW9uRGly
ZWN0b3J5UHJlZml4ICsgU3RyaW5nOjpudW1iZXIoU3RvcmFnZTo6dmVyc2lvbik7Ci0gICAgcmV0
dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChiYXNlRGly
ZWN0b3J5UGF0aCwgdmVyc2lvblN1YmRpcmVjdG9yeSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChiYXNlRGlyZWN0b3J5UGF0aCwgdmVyc2lvblN1YmRp
cmVjdG9yeSk7CiB9CiAKIHN0YXRpYyBTdHJpbmcgbWFrZVJlY29yZHNEaXJlY3RvcnlQYXRoKGNv
bnN0IFN0cmluZyYgYmFzZURpcmVjdG9yeVBhdGgpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtYWtlVmVyc2lvbmVkRGlyZWN0b3J5
UGF0aChiYXNlRGlyZWN0b3J5UGF0aCksIHJlY29yZHNEaXJlY3RvcnlOYW1lKTsKKyAgICByZXR1
cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1ha2VWZXJzaW9uZWREaXJl
Y3RvcnlQYXRoKGJhc2VEaXJlY3RvcnlQYXRoKSwgcmVjb3Jkc0RpcmVjdG9yeU5hbWUpOwogfQog
CiBzdGF0aWMgU3RyaW5nIG1ha2VCbG9iRGlyZWN0b3J5UGF0aChjb25zdCBTdHJpbmcmIGJhc2VE
aXJlY3RvcnlQYXRoKQogewotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQobWFrZVZlcnNpb25lZERpcmVjdG9yeVBhdGgoYmFzZURpcmVjdG9y
eVBhdGgpLCBibG9ic0RpcmVjdG9yeU5hbWUpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQobWFrZVZlcnNpb25lZERpcmVjdG9yeVBhdGgoYmFzZURpcmVj
dG9yeVBhdGgpLCBibG9ic0RpcmVjdG9yeU5hbWUpOwogfQogCiBzdGF0aWMgU3RyaW5nIG1ha2VT
YWx0RmlsZVBhdGgoY29uc3QgU3RyaW5nJiBiYXNlRGlyZWN0b3J5UGF0aCkKIHsKLSAgICByZXR1
cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1ha2VWZXJz
aW9uZWREaXJlY3RvcnlQYXRoKGJhc2VEaXJlY3RvcnlQYXRoKSwgc2FsdEZpbGVOYW1lKTsKKyAg
ICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1ha2VWZXJzaW9u
ZWREaXJlY3RvcnlQYXRoKGJhc2VEaXJlY3RvcnlQYXRoKSwgc2FsdEZpbGVOYW1lKTsKIH0KIAog
UmVmUHRyPFN0b3JhZ2U+IFN0b3JhZ2U6Om9wZW4oY29uc3QgU3RyaW5nJiBjYWNoZVBhdGgsIE1v
ZGUgbW9kZSkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgaWYgKCFX
ZWJDb3JlOjpGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMobWFrZVZlcnNpb25lZERpcmVj
dG9yeVBhdGgoY2FjaGVQYXRoKSkpCisgICAgaWYgKCFGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0
b3JpZXMobWFrZVZlcnNpb25lZERpcmVjdG9yeVBhdGgoY2FjaGVQYXRoKSkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIGF1dG8gc2FsdCA9IHJlYWRPck1ha2VTYWx0KG1ha2VTYWx0Rmls
ZVBhdGgoY2FjaGVQYXRoKSk7CiAgICAgaWYgKCFzYWx0KQpAQCAtMTgwLDEzICsxODAsMTMgQEAg
dm9pZCB0cmF2ZXJzZVJlY29yZHNGaWxlcyhjb25zdCBTdHJpbmcmIHJlY29yZHNQYXRoLCBjb25z
dCBTdHJpbmcmIGV4cGVjdGVkVHlwZSwKICAgICB0cmF2ZXJzZURpcmVjdG9yeShyZWNvcmRzUGF0
aCwgWyZdKGNvbnN0IFN0cmluZyYgcGFydGl0aW9uTmFtZSwgRGlyZWN0b3J5RW50cnlUeXBlIGVu
dHJ5VHlwZSkgewogICAgICAgICBpZiAoZW50cnlUeXBlICE9IERpcmVjdG9yeUVudHJ5VHlwZTo6
RGlyZWN0b3J5KQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBTdHJpbmcgcGFydGl0aW9u
UGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNv
cmRzUGF0aCwgcGFydGl0aW9uTmFtZSk7CisgICAgICAgIFN0cmluZyBwYXJ0aXRpb25QYXRoID0g
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZHNQYXRoLCBwYXJ0aXRp
b25OYW1lKTsKICAgICAgICAgdHJhdmVyc2VEaXJlY3RvcnkocGFydGl0aW9uUGF0aCwgWyZdKGNv
bnN0IFN0cmluZyYgYWN0dWFsVHlwZSwgRGlyZWN0b3J5RW50cnlUeXBlIGVudHJ5VHlwZSkgewog
ICAgICAgICAgICAgaWYgKGVudHJ5VHlwZSAhPSBEaXJlY3RvcnlFbnRyeVR5cGU6OkRpcmVjdG9y
eSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBpZiAoIWV4cGVjdGVkVHlw
ZS5pc0VtcHR5KCkgJiYgZXhwZWN0ZWRUeXBlICE9IGFjdHVhbFR5cGUpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgU3RyaW5nIHJlY29yZERpcmVjdG9yeVBhdGggPSBXZWJD
b3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGFydGl0aW9uUGF0aCwg
YWN0dWFsVHlwZSk7CisgICAgICAgICAgICBTdHJpbmcgcmVjb3JkRGlyZWN0b3J5UGF0aCA9IEZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXJ0aXRpb25QYXRoLCBhY3R1YWxU
eXBlKTsKICAgICAgICAgICAgIHRyYXZlcnNlRGlyZWN0b3J5KHJlY29yZERpcmVjdG9yeVBhdGgs
IFsmZnVuY3Rpb24sICZyZWNvcmREaXJlY3RvcnlQYXRoLCAmYWN0dWFsVHlwZV0oY29uc3QgU3Ry
aW5nJiBmaWxlTmFtZSwgRGlyZWN0b3J5RW50cnlUeXBlIGVudHJ5VHlwZSkgewogICAgICAgICAg
ICAgICAgIGlmIChlbnRyeVR5cGUgIT0gRGlyZWN0b3J5RW50cnlUeXBlOjpGaWxlIHx8IGZpbGVO
YW1lLmxlbmd0aCgpIDwgS2V5OjpoYXNoU3RyaW5nTGVuZ3RoKCkpCiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKQEAgLTIwNiwxOCArMjA2LDE4IEBAIHN0YXRpYyB2b2lkIGRlbGV0ZUVtcHR5
UmVjb3Jkc0RpcmVjdG9yaWVzKGNvbnN0IFN0cmluZyYgcmVjb3Jkc1BhdGgpCiAgICAgICAgICAg
ICByZXR1cm47CiAKICAgICAgICAgLy8gRGVsZXRlIFt0eXBlXSBzdWItZm9sZGVycy4KLSAgICAg
ICAgU3RyaW5nIHBhcnRpdGlvblBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQocmVjb3Jkc1BhdGgsIHBhcnRpdGlvbk5hbWUpOworICAgICAgICBTdHJp
bmcgcGFydGl0aW9uUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChy
ZWNvcmRzUGF0aCwgcGFydGl0aW9uTmFtZSk7CiAgICAgICAgIHRyYXZlcnNlRGlyZWN0b3J5KHBh
cnRpdGlvblBhdGgsIFsmcGFydGl0aW9uUGF0aF0oY29uc3QgU3RyaW5nJiBzdWJkaXJOYW1lLCBE
aXJlY3RvcnlFbnRyeVR5cGUgZW50cnlUeXBlKSB7CiAgICAgICAgICAgICBpZiAoZW50cnlUeXBl
ICE9IERpcmVjdG9yeUVudHJ5VHlwZTo6RGlyZWN0b3J5KQogICAgICAgICAgICAgICAgIHJldHVy
bjsKIAogICAgICAgICAgICAgLy8gTGV0IHN5c3RlbSBmaWd1cmUgb3V0IGlmIGl0IGlzIHJlYWxs
eSBlbXB0eS4KLSAgICAgICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGly
ZWN0b3J5KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXJ0
aXRpb25QYXRoLCBzdWJkaXJOYW1lKSk7CisgICAgICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVF
bXB0eURpcmVjdG9yeShGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGFydGl0
aW9uUGF0aCwgc3ViZGlyTmFtZSkpOwogICAgICAgICB9KTsKIAogICAgICAgICAvLyBEZWxldGUg
W1BhcnRpdGlvbl0gZm9sZGVycy4KICAgICAgICAgLy8gTGV0IHN5c3RlbSBmaWd1cmUgb3V0IGlm
IGl0IGlzIHJlYWxseSBlbXB0eS4KLSAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRl
RW1wdHlEaXJlY3RvcnkoV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KHJlY29yZHNQYXRoLCBwYXJ0aXRpb25OYW1lKSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRl
bGV0ZUVtcHR5RGlyZWN0b3J5KEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChy
ZWNvcmRzUGF0aCwgcGFydGl0aW9uTmFtZSkpOwogICAgIH0pOwogfQogCkBAIC0zMDAsMTEgKzMw
MCwxMSBAQCB2b2lkIFN0b3JhZ2U6OnN5bmNocm9uaXplKCkKIAogICAgICAgICBTdHJpbmcgYW55
VHlwZTsKICAgICAgICAgdHJhdmVyc2VSZWNvcmRzRmlsZXMocmVjb3Jkc1BhdGgoKSwgYW55VHlw
ZSwgWyZdKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgaGFzaFN0cmluZywg
Y29uc3QgU3RyaW5nJiB0eXBlLCBib29sIGlzQmxvYiwgY29uc3QgU3RyaW5nJiByZWNvcmREaXJl
Y3RvcnlQYXRoKSB7Ci0gICAgICAgICAgICBhdXRvIGZpbGVQYXRoID0gV2ViQ29yZTo6RmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZERpcmVjdG9yeVBhdGgsIGZpbGVO
YW1lKTsKKyAgICAgICAgICAgIGF1dG8gZmlsZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQocmVjb3JkRGlyZWN0b3J5UGF0aCwgZmlsZU5hbWUpOwogCiAgICAgICAg
ICAgICBLZXk6Okhhc2hUeXBlIGhhc2g7CiAgICAgICAgICAgICBpZiAoIUtleTo6c3RyaW5nVG9I
YXNoKGhhc2hTdHJpbmcsIGhhc2gpKSB7Ci0gICAgICAgICAgICAgICAgV2ViQ29yZTo6RmlsZVN5
c3RlbTo6ZGVsZXRlRmlsZShmaWxlUGF0aCk7CisgICAgICAgICAgICAgICAgRmlsZVN5c3RlbTo6
ZGVsZXRlRmlsZShmaWxlUGF0aCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgfQogCkBAIC0zMTgsNyArMzE4LDcgQEAgdm9pZCBTdG9yYWdlOjpzeW5jaHJvbml6ZSgpCiAK
ICAgICAgICAgICAgIGlmIChzaG91bGRDb21wdXRlRXhhY3RSZWNvcmRzU2l6ZSkgewogICAgICAg
ICAgICAgICAgIGxvbmcgbG9uZyBmaWxlU2l6ZSA9IDA7Ci0gICAgICAgICAgICAgICAgV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6Z2V0RmlsZVNpemUoZmlsZVBhdGgsIGZpbGVTaXplKTsKKyAgICAgICAg
ICAgICAgICBGaWxlU3lzdGVtOjpnZXRGaWxlU2l6ZShmaWxlUGF0aCwgZmlsZVNpemUpOwogICAg
ICAgICAgICAgICAgIHJlY29yZHNTaXplICs9IGZpbGVTaXplOwogICAgICAgICAgICAgfQogCkBA
IC0zODEsMTIgKzM4MSwxMiBAQCBib29sIFN0b3JhZ2U6Om1heUNvbnRhaW5CbG9iKGNvbnN0IEtl
eSYga2V5KSBjb25zdAogU3RyaW5nIFN0b3JhZ2U6OnJlY29yZERpcmVjdG9yeVBhdGhGb3JLZXko
Y29uc3QgS2V5JiBrZXkpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFrZXkudHlwZSgpLmlzRW1wdHko
KSk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3Jk
c1BhdGgoKSwga2V5LnBhcnRpdGlvbkhhc2hBc1N0cmluZygpKSwga2V5LnR5cGUoKSk7CisgICAg
cmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3Jkc1BhdGgoKSwga2V5LnBhcnRpdGlvbkhhc2hB
c1N0cmluZygpKSwga2V5LnR5cGUoKSk7CiB9CiAKIFN0cmluZyBTdG9yYWdlOjpyZWNvcmRQYXRo
Rm9yS2V5KGNvbnN0IEtleSYga2V5KSBjb25zdAogewotICAgIHJldHVybiBXZWJDb3JlOjpGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3JkRGlyZWN0b3J5UGF0aEZvcktl
eShrZXkpLCBrZXkuaGFzaEFzU3RyaW5nKCkpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3JkRGlyZWN0b3J5UGF0aEZvcktleShrZXkpLCBrZXku
aGFzaEFzU3RyaW5nKCkpOwogfQogCiBzdGF0aWMgU3RyaW5nIGJsb2JQYXRoRm9yUmVjb3JkUGF0
aChjb25zdCBTdHJpbmcmIHJlY29yZFBhdGgpCkBAIC02MjksNyArNjI5LDcgQEAgdm9pZCBTdG9y
YWdlOjpkZWxldGVGaWxlcyhjb25zdCBLZXkmIGtleSkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6
OmlzTWFpbigpKTsKIAotICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUocmVjb3Jk
UGF0aEZvcktleShrZXkpKTsKKyAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKHJlY29yZFBhdGhG
b3JLZXkoa2V5KSk7CiAgICAgbV9ibG9iU3RvcmFnZS5yZW1vdmUoYmxvYlBhdGhGb3JLZXkoa2V5
KSk7CiB9CiAKQEAgLTgwOSw3ICs4MDksNyBAQCB2b2lkIFN0b3JhZ2U6OmRpc3BhdGNoV3JpdGVP
cGVyYXRpb24oc3RkOjp1bmlxdWVfcHRyPFdyaXRlT3BlcmF0aW9uPiB3cml0ZU9wZXJhdAogICAg
ICAgICBhdXRvIHJlY29yZERpcmVjdG9yUGF0aCA9IHJlY29yZERpcmVjdG9yeVBhdGhGb3JLZXko
d3JpdGVPcGVyYXRpb24ucmVjb3JkLmtleSk7CiAgICAgICAgIGF1dG8gcmVjb3JkUGF0aCA9IHJl
Y29yZFBhdGhGb3JLZXkod3JpdGVPcGVyYXRpb24ucmVjb3JkLmtleSk7CiAKLSAgICAgICAgV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKHJlY29yZERpcmVjdG9yUGF0aCk7
CisgICAgICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhyZWNvcmREaXJlY3RvclBh
dGgpOwogCiAgICAgICAgICsrd3JpdGVPcGVyYXRpb24uYWN0aXZlQ291bnQ7CiAKQEAgLTkxNyw3
ICs5MTcsNyBAQCB2b2lkIFN0b3JhZ2U6OnRyYXZlcnNlKGNvbnN0IFN0cmluZyYgdHlwZSwgT3B0
aW9uU2V0PFRyYXZlcnNlRmxhZz4gZmxhZ3MsIFRyYXZlcgogICAgICAgICAgICAgaWYgKGlzQmxv
YikKICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIGF1dG8gcmVjb3JkUGF0
aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmRE
aXJlY3RvcnlQYXRoLCBmaWxlTmFtZSk7CisgICAgICAgICAgICBhdXRvIHJlY29yZFBhdGggPSBG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3JkRGlyZWN0b3J5UGF0aCwg
ZmlsZU5hbWUpOwogCiAgICAgICAgICAgICBkb3VibGUgd29ydGggPSAtMTsKICAgICAgICAgICAg
IGlmICh0cmF2ZXJzZU9wZXJhdGlvbi5mbGFncyAmIFRyYXZlcnNlRmxhZzo6Q29tcHV0ZVdvcnRo
KQpAQCAtMTAwOSwxMyArMTAwOSwxMyBAQCB2b2lkIFN0b3JhZ2U6OmNsZWFyKGNvbnN0IFN0cmlu
ZyYgdHlwZSwgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZVRpbWUsIENvbXBsZXRpb25IYQogICAgIGlv
UXVldWUoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBt
b2RpZmllZFNpbmNlVGltZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSwgdHlwZSA9IHR5cGUuaXNvbGF0ZWRDb3B5KCldICgpIG11dGFibGUgewogICAgICAg
ICBhdXRvIHJlY29yZHNQYXRoID0gdGhpcy0+cmVjb3Jkc1BhdGgoKTsKICAgICAgICAgdHJhdmVy
c2VSZWNvcmRzRmlsZXMocmVjb3Jkc1BhdGgsIHR5cGUsIFttb2RpZmllZFNpbmNlVGltZV0oY29u
c3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBoYXNoU3RyaW5nLCBjb25zdCBTdHJp
bmcmIHR5cGUsIGJvb2wgaXNCbG9iLCBjb25zdCBTdHJpbmcmIHJlY29yZERpcmVjdG9yeVBhdGgp
IHsKLSAgICAgICAgICAgIGF1dG8gZmlsZVBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3JkRGlyZWN0b3J5UGF0aCwgZmlsZU5hbWUpOworICAg
ICAgICAgICAgYXV0byBmaWxlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChyZWNvcmREaXJlY3RvcnlQYXRoLCBmaWxlTmFtZSk7CiAgICAgICAgICAgICBpZiAobW9k
aWZpZWRTaW5jZVRpbWUgPiAtV2FsbFRpbWU6OmluZmluaXR5KCkpIHsKICAgICAgICAgICAgICAg
ICBhdXRvIHRpbWVzID0gZmlsZVRpbWVzKGZpbGVQYXRoKTsKICAgICAgICAgICAgICAgICBpZiAo
dGltZXMubW9kaWZpY2F0aW9uIDwgbW9kaWZpZWRTaW5jZVRpbWUpCiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0
ZW06OmRlbGV0ZUZpbGUoZmlsZVBhdGgpOworICAgICAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRl
RmlsZShmaWxlUGF0aCk7CiAgICAgICAgIH0pOwogCiAgICAgICAgIGRlbGV0ZUVtcHR5UmVjb3Jk
c0RpcmVjdG9yaWVzKHJlY29yZHNQYXRoKTsKQEAgLTEwODksNyArMTA4OSw3IEBAIHZvaWQgU3Rv
cmFnZTo6c2hyaW5rKCkKICAgICAgICAgICAgIGlmIChpc0Jsb2IpCiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogCi0gICAgICAgICAgICBhdXRvIHJlY29yZFBhdGggPSBXZWJDb3JlOjpGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3JkRGlyZWN0b3J5UGF0aCwgZmlsZU5h
bWUpOworICAgICAgICAgICAgYXV0byByZWNvcmRQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KHJlY29yZERpcmVjdG9yeVBhdGgsIGZpbGVOYW1lKTsKICAgICAgICAg
ICAgIGF1dG8gYmxvYlBhdGggPSBibG9iUGF0aEZvclJlY29yZFBhdGgocmVjb3JkUGF0aCk7CiAK
ICAgICAgICAgICAgIGF1dG8gdGltZXMgPSBmaWxlVGltZXMocmVjb3JkUGF0aCk7CkBAIC0xMTAx
LDcgKzExMDEsNyBAQCB2b2lkIFN0b3JhZ2U6OnNocmluaygpCiAgICAgICAgICAgICBMT0coTmV0
d29ya0NhY2hlU3RvcmFnZSwgIkRlbGV0aW9uIHByb2JhYmlsaXR5PSVmIGJvZHlMaW5rQ291bnQ9
JWQgc2hvdWxkRGVsZXRlPSVkIiwgcHJvYmFiaWxpdHksIGJvZHlTaGFyZUNvdW50LCBzaG91bGRE
ZWxldGUpOwogCiAgICAgICAgICAgICBpZiAoc2hvdWxkRGVsZXRlKSB7Ci0gICAgICAgICAgICAg
ICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShyZWNvcmRQYXRoKTsKKyAgICAgICAg
ICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKHJlY29yZFBhdGgpOwogICAgICAgICAgICAg
ICAgIG1fYmxvYlN0b3JhZ2UucmVtb3ZlKGJsb2JQYXRoKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfSk7CkBAIC0xMTM3LDcgKzExMzcsNyBAQCB2b2lkIFN0b3JhZ2U6OmRlbGV0ZU9sZFZlcnNp
b25zKCkKICAgICAgICAgICAgICAgICByZXR1cm47CiAjZW5kaWYKIAotICAgICAgICAgICAgYXV0
byBvbGRWZXJzaW9uUGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChjYWNoZVBhdGgsIHN1YmRpck5hbWUpOworICAgICAgICAgICAgYXV0byBvbGRWZXJz
aW9uUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChjYWNoZVBhdGgs
IHN1YmRpck5hbWUpOwogICAgICAgICAgICAgTE9HKE5ldHdvcmtDYWNoZVN0b3JhZ2UsICIoTmV0
d29ya1Byb2Nlc3MpIGRlbGV0aW5nIG9sZCBjYWNoZSB2ZXJzaW9uLCBwYXRoICVzIiwgb2xkVmVy
c2lvblBhdGgudXRmOCgpLmRhdGEoKSk7CiAKICAgICAgICAgICAgIGRlbGV0ZURpcmVjdG9yeVJl
Y3Vyc2l2ZWx5KG9sZFZlcnNpb25QYXRoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCmluZGV4IGE2MWY5
Mzg1YTY3NzRiZDBiNzVjNTM5NjljZTEzMjg3OGIzYjk3M2YuLmY0N2JkODE5ODgzMjY2YWE2Nzhj
NDg3ZjZiMzUzOGVjNWRhYmJlNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQpAQCAtMzYsMTEgKzM2
LDExIEBACiAjaW1wb3J0ICJOZXR3b3JrU2Vzc2lvbkNvY29hLmgiCiAjaW1wb3J0ICJXZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaCIKICNpbXBvcnQgPFdlYkNvcmUvQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UuaD4KLSNpbXBvcnQgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8V2ViQ29yZS9O
ZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQu
aD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW1wb3J0IDxwYWwvc3Bp
L2NmL0NGTmV0d29ya1NQSS5oPgorI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQg
PHd0Zi9NYWluVGhyZWFkLmg+CiAjaW1wb3J0IDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgogI2lt
cG9ydCA8d3RmL3RleHQvQmFzZTY0Lmg+CkBAIC00MDMsOCArNDAzLDggQEAgdm9pZCBOZXR3b3Jr
RGF0YVRhc2tDb2NvYTo6c2V0UGVuZGluZ0Rvd25sb2FkTG9jYXRpb24oY29uc3QgV1RGOjpTdHJp
bmcmIGZpbGVuYW0KIAogICAgIG1fdGFzay5nZXQoKS5fcGF0aFRvRG93bmxvYWRUYXNrRmlsZSA9
IG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRpb247CiAKLSAgICBpZiAoYWxsb3dPdmVyd3JpdGUgJiYg
V2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhtX3BlbmRpbmdEb3dubG9hZExvY2F0aW9u
KSkKLSAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShmaWxlbmFtZSk7Cisg
ICAgaWYgKGFsbG93T3ZlcndyaXRlICYmIEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobV9wZW5kaW5n
RG93bmxvYWRMb2NhdGlvbikpCisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZmlsZW5h
bWUpOwogfQogCiBib29sIE5ldHdvcmtEYXRhVGFza0NvY29hOjp0cnlQYXNzd29yZEJhc2VkQXV0
aGVudGljYXRpb24oY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxs
ZW5nZSwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImIGNvbXBsZXRpb25IYW5kbGVyKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lv
bkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vz
c2lvbkNvY29hLm1tCmluZGV4IGY2YWQ0OWY4YmFjMzVkMDE3Yjk2NTM3OThkNTdhYWEyZjQzOTU2
MDguLjRhMWQ3OTIxMGFmYTU5NmU0YjBmYWZjZTgxOGZmNGY2ODJiMzhiNGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9u
Q29jb2EubW0KQEAgLTc3OSw3ICs3NzksNyBAQCAtICh2b2lkKVVSTFNlc3Npb246KE5TVVJMU2Vz
c2lvbiAqKXNlc3Npb24gZGF0YVRhc2s6KE5TVVJMU2Vzc2lvbkRhdGFUYXNrICopZGF0YQogICAg
ICAgICBhdXRvJiBkb3dubG9hZE1hbmFnZXIgPSBfc2Vzc2lvbi0+bmV0d29ya1Byb2Nlc3MoKS5k
b3dubG9hZE1hbmFnZXIoKTsKICAgICAgICAgYXV0byBkb3dubG9hZCA9IHN0ZDo6bWFrZV91bmlx
dWU8V2ViS2l0OjpEb3dubG9hZD4oZG93bmxvYWRNYW5hZ2VyLCBkb3dubG9hZElELCBkb3dubG9h
ZFRhc2ssIF9zZXNzaW9uLT5zZXNzaW9uSUQoKSwgbmV0d29ya0RhdGFUYXNrLT5zdWdnZXN0ZWRG
aWxlbmFtZSgpKTsKICAgICAgICAgbmV0d29ya0RhdGFUYXNrLT50cmFuc2ZlclNhbmRib3hFeHRl
bnNpb25Ub0Rvd25sb2FkKCpkb3dubG9hZCk7Ci0gICAgICAgIEFTU0VSVChXZWJDb3JlOjpGaWxl
U3lzdGVtOjpmaWxlRXhpc3RzKG5ldHdvcmtEYXRhVGFzay0+cGVuZGluZ0Rvd25sb2FkTG9jYXRp
b24oKSkpOworICAgICAgICBBU1NFUlQoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhuZXR3b3JrRGF0
YVRhc2stPnBlbmRpbmdEb3dubG9hZExvY2F0aW9uKCkpKTsKICAgICAgICAgZG93bmxvYWQtPmRp
ZENyZWF0ZURlc3RpbmF0aW9uKG5ldHdvcmtEYXRhVGFzay0+cGVuZGluZ0Rvd25sb2FkTG9jYXRp
b24oKSk7CiAgICAgICAgIGRvd25sb2FkTWFuYWdlci5kYXRhVGFza0JlY2FtZURvd25sb2FkVGFz
ayhkb3dubG9hZElELCBXVEZNb3ZlKGRvd25sb2FkKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzTWFjLm1tIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nlc3NNYWMubW0KaW5kZXggMzdmM2I3
ZjcyYWE1MDJiMzJiYTgxMWVjOWJhMDhmNWUyNTU4NjNiMi4uZjViZjA0YWU0NjVmNjJiNzRkMmIx
OGE4MTc1OTAxYTE2ZWE1NTVkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9tYWMvTmV0d29ya1Byb2Nlc3NNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nlc3NNYWMubW0KQEAgLTM4LDEyICszOCwxMiBAQAogI2lt
cG9ydCAiU3RyaW5nVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJXS0ZvdW5kYXRpb24uaCIKICNpbXBv
cnQgPFdlYkNvcmUvQ2VydGlmaWNhdGVJbmZvLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0
ZW0uaD4KICNpbXBvcnQgPFdlYkNvcmUvTG9jYWxpemVkU3RyaW5ncy5oPgogI2ltcG9ydCA8bm90
aWZ5Lmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oPgogI2ltcG9ydCA8cGFs
L3NwaS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5oPgogI2ltcG9ydCA8c3lzZXhpdHMuaD4KKyNp
bXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDx3dGYvTWVtb3J5UHJlc3N1cmVIYW5k
bGVyLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcApp
bmRleCBjN2NlMWQyN2EwMDFiZmVkZGVkMjYyMjRlODczN2FjYjQwOWNiOWJjLi5hYTdjNTBjYmYx
ZTM5OGM5YzNiYTljMDAxOWNmZjFlNGRlZTc3OGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcApAQCAtMzIs
MTIgKzMyLDEyIEBACiAjaW5jbHVkZSAiUmVzb3VyY2VDYWNoZXNUb0NsZWFyLmgiCiAjaW5jbHVk
ZSAiV2ViQ29va2llTWFuYWdlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ2VydGlmaWNhdGVJbmZv
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9O
ZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVk
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvU291cE5ldHdvcmtTZXNzaW9uLmg+CiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+CisjaW5j
bHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvUkFNU2l6ZS5oPgogI2luY2x1
ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+
CkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFs
aXplTmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGkKICAgICBBU1NFUlQo
IXBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSk7CiAgICAgbV9kaXNrQ2Fj
aGVEaXJlY3RvcnkgPSBwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeTsKIAotICAgIFNvdXBO
ZXR3b3JrU2Vzc2lvbjo6Y2xlYXJPbGRTb3VwQ2FjaGUoV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGly
ZWN0b3J5TmFtZShtX2Rpc2tDYWNoZURpcmVjdG9yeSkpOworICAgIFNvdXBOZXR3b3JrU2Vzc2lv
bjo6Y2xlYXJPbGRTb3VwQ2FjaGUoRmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShtX2Rpc2tDYWNo
ZURpcmVjdG9yeSkpOwogCiAgICAgT3B0aW9uU2V0PE5ldHdvcmtDYWNoZTo6Q2FjaGU6Ok9wdGlv
bj4gY2FjaGVPcHRpb25zIHsgTmV0d29ya0NhY2hlOjpDYWNoZTo6T3B0aW9uOjpSZWdpc3Rlck5v
dGlmeSB9OwogICAgIGlmIChwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZU5ldHdvcmtDYWNoZUVmZmlj
YWN5TG9nZ2luZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy91bml4
L1BsdWdpblByb2Nlc3NNYWluVW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3Mv
dW5peC9QbHVnaW5Qcm9jZXNzTWFpblVuaXguY3BwCmluZGV4IDJiZDJlZDU5YWU2YTJlMjRiMDc0
OGIwM2NlYmMzNTYzYzY2NzE4M2UuLjNhZGU0Yzk0M2YwOWI1MWQzY2MzYmVjMmNhOTYzM2Y3M2Qx
MzQ5NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy91bml4L1BsdWdp
blByb2Nlc3NNYWluVW5peC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL3Vu
aXgvUGx1Z2luUHJvY2Vzc01haW5Vbml4LmNwcApAQCAtMzQsOCArMzQsOCBAQAogI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXRzY2FwZVBsdWdpbi5oIgogI2luY2x1ZGUgIlBsdWdp
blByb2Nlc3MuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxz
dGRsaWIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiAjaWYgUExBVEZPUk0oR1RL
KQogI2luY2x1ZGUgPGd0ay9ndGsuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1BlcnNpc3RlbmN5VXRpbHMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGVyc2lzdGVuY3lV
dGlscy5jcHAKaW5kZXggNWRiYTk2OGJkN2UwYjM4YzNkMjI2OTRkNmQ1ZDJlNmIwNjlkMmE4MS4u
ZWNhOTY0MWQyMDUzNDVjODE4OTZlYjU2NWRmNjI3Zjk1ZTNjNTE3YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvUGVyc2lzdGVuY3lVdGlscy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvUGVyc2lzdGVuY3lVdGlscy5jcHAKQEAgLTI3LDggKzI3LDggQEAKICNpbmNsdWRl
ICJQZXJzaXN0ZW5jeVV0aWxzLmgiCiAKICNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSA8
V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4K
KyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1
Z2lucy9OZXRzY2FwZS91bml4L05ldHNjYXBlUGx1Z2luTW9kdWxlVW5peC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL3VuaXgvTmV0c2NhcGVQbHVnaW5Nb2R1bGVV
bml4LmNwcAppbmRleCBmYjFkOWRjOTI2ZmQ2NzY3OTNmNDU0YTc0ZmE1NTFhZWU1NzBjOGU1Li4y
YTY1ZGE5ZmJjYjJmMzNhMWZmNTQxMGJlODg5OGNlZjEzNzk5MTFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL3VuaXgvTmV0c2NhcGVQbHVnaW5Nb2R1
bGVVbml4LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL3Vu
aXgvTmV0c2NhcGVQbHVnaW5Nb2R1bGVVbml4LmNwcApAQCAtMzAsMTYgKzMwLDE1IEBACiAKICNp
bmNsdWRlICJOZXRzY2FwZUJyb3dzZXJGdW5jcy5oIgogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NQ
cm94eS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPGVycm5v
Lmg+CiAjaW5jbHVkZSA8ZmNudGwuaD4KICNpbmNsdWRlIDxzeXMvc3RhdC5oPgogI2luY2x1ZGUg
PHN5cy90eXBlcy5oPgogI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lz
dGVtLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBjbGFzcyBTdGRvdXREZXZOdWxs
UmVkaXJlY3RvciB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Q
bHVnaW5zL3VuaXgvUGx1Z2luU2VhcmNoUGF0aC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Q
bHVnaW5zL3VuaXgvUGx1Z2luU2VhcmNoUGF0aC5jcHAKaW5kZXggZThhZjk2MDRjZTU1OTVhNDQ0
ZmU4Y2E1MDQ1ZDNhNjE3YWIyMzY0YS4uMmJkNTQ5YTk1ZGZhNjc1Y2U0N2Y1NmQ3OGE1OWI0Zjcz
MTVhMTFhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy91bml4L1Bs
dWdpblNlYXJjaFBhdGguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvdW5p
eC9QbHVnaW5TZWFyY2hQYXRoLmNwcApAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIlBsdWdpblNlYXJjaFBhdGguaCIKIAotI2luY2x1ZGUgPFdlYkNvcmUv
RmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJNZW1vcnlTYW1wbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJN
ZW1vcnlTYW1wbGVyLmgKaW5kZXggODA4MTNmZWEwNTBmMjA0OTFiZDFjOGI1MGU5MGIxY2JiYmNh
YTM0NC4uNzIxY2RiZjM4OTIyNjRiYzlmZDc5MmI1MDgzODMwZmY1MTlmYzliZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYk1lbW9yeVNhbXBsZXIuaApAQCAtNTIsOCArNTIsOCBAQAogI2lmIEVO
QUJMRShNRU1PUllfU0FNUExFUikKIAogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKLSNp
bmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+
CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAt
ODcsNyArODcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaW5pdGlhbGl6ZVRpbWVycyhkb3VibGUp
OwogICAgIHZvaWQgc2FtcGxlVGltZXJGaXJlZCgpOwogICAgIHZvaWQgc3RvcFRpbWVyRmlyZWQo
KTsKLSAgICB2b2lkIGFwcGVuZEN1cnJlbnRNZW1vcnlVc2FnZVRvRmlsZShXZWJDb3JlOjpGaWxl
U3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUmKTsKKyAgICB2b2lkIGFwcGVuZEN1cnJlbnRNZW1v
cnlVc2FnZVRvRmlsZShGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUmKTsKICAgICB2b2lk
IHNlbmRNZW1vcnlQcmVzc3VyZUV2ZW50KCk7CiAgICAgCiAgICAgU3lzdGVtTWFsbG9jU3RhdHMg
c2FtcGxlU3lzdGVtTWFsbG9jKCkgY29uc3Q7CkBAIC05NSw3ICs5NSw3IEBAIHByaXZhdGU6CiAg
ICAgV2ViTWVtb3J5U3RhdGlzdGljcyBzYW1wbGVXZWJLaXQoKSBjb25zdDsKICAgICBTdHJpbmcg
cHJvY2Vzc05hbWUoKSBjb25zdDsKICAgICAKLSAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpQbGF0
Zm9ybUZpbGVIYW5kbGUgbV9zYW1wbGVMb2dGaWxlIHsgV2ViQ29yZTo6RmlsZVN5c3RlbTo6aW52
YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSB9OworICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhh
bmRsZSBtX3NhbXBsZUxvZ0ZpbGUgeyBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFu
ZGxlIH07CiAgICAgU3RyaW5nIG1fc2FtcGxlTG9nRmlsZVBhdGg7CiAgICAgV2ViQ29yZTo6VGlt
ZXIgbV9zYW1wbGVUaW1lcjsKICAgICBXZWJDb3JlOjpUaW1lciBtX3N0b3BUaW1lcjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2dsaWIvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoR0xp
Yi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9nbGliL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aEdM
aWIuY3BwCmluZGV4IGE3MGI0MWEwOWE5MzBiYmRjM2I1NDFjZTZhNzA4YWQ4OWJiYzJmNGIuLjRm
ZjM1ZDMxZGUxZDU3MjMxYTZmNmUxMDE1YTg1NWQ0MGY4YzhjMzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL2dsaWIvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoR0xpYi5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvZ2xpYi9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhHTGliLmNwcApA
QCAtMjcsMTIgKzI3LDExIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUHJvY2Vz
c0V4ZWN1dGFibGVQYXRoLmgiCiAKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNp
bmNsdWRlIDxnbGliLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3
dGYvZ2xpYi9HTGliVXRpbGl0aWVzLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewotdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKICNpZiBFTkFCTEUoREVWRUxPUEVSX01PREUpCiBzdGF0aWMgU3Ry
aW5nIGdldEV4ZWN1dGFibGVQYXRoKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L2lvcy9DaGlsZFByb2Nlc3NJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvQ2hpbGRQ
cm9jZXNzSU9TLm1tCmluZGV4IDgxZDU0ZjNiZjAwOWVmYWYwNWQ0MDJkNmY1Y2ZlYThkMTBmNGI1
NjcuLjY5ZDUzY2ZmMzE0YTk1Y2JjNGE4MDdhYjk4YzllY2E4MmZlMmJlMjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9DaGlsZFByb2Nlc3NJT1MubW0KKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvaW9zL0NoaWxkUHJvY2Vzc0lPUy5tbQpAQCAtMzEsNyArMzEsNiBAQAog
CiAjaW1wb3J0ICJTYW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzLmgiCiAjaW1wb3J0ICJY
UENTZXJ2aWNlRW50cnlQb2ludC5oIgotI2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0Zsb2F0aW5nUG9pbnRFbnZpcm9ubWVudC5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9TeXN0ZW1WZXJzaW9uLmg+CiAjaW1wb3J0IDxtYWNoL21hY2guaD4KQEAgLTM5LDYgKzM4
LDcgQEAKICNpbXBvcnQgPHB3ZC5oPgogI2ltcG9ydCA8c3RkbGliLmg+CiAjaW1wb3J0IDxzeXNl
eGl0cy5oPgorI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogI2lmIEVOQUJMRShNQU5VQUxf
U0FOREJPWElORykKICNpbXBvcnQgPHd0Zi9zcGkvZGFyd2luL1NhbmRib3hTUEkuaD4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9DaGlsZFByb2Nlc3NNYWMubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9tYWMvQ2hpbGRQcm9jZXNzTWFjLm1tCmluZGV4IDNjMzk0Y2M5MTZj
MDk5MjBkMDMzM2YyYzRhMjU4ZTQ3ZjFlN2M5NzkuLjc4NTM2YWFlNjBiY2YwMmM5MjY2MGMzMjgx
MWE4ZDBmNThlZmY2ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9DaGls
ZFByb2Nlc3NNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0NoaWxkUHJvY2Vz
c01hYy5tbQpAQCAtMzUsNyArMzUsNiBAQAogI2ltcG9ydCAiV0tGb3VuZGF0aW9uLmgiCiAjaW1w
b3J0ICJYUENTZXJ2aWNlRW50cnlQb2ludC5oIgogI2ltcG9ydCA8V2ViQ29yZS9GaWxlSGFuZGxl
Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPFdlYkNvcmUvU3lz
dGVtVmVyc2lvbi5oPgogI2ltcG9ydCA8bWFjaC1vL2R5bGQuaD4KICNpbXBvcnQgPG1hY2gvbWFj
aC5oPgpAQCAtNDcsNiArNDYsNyBAQAogI2ltcG9ydCA8c3lzL3N5c2N0bC5oPgogI2ltcG9ydCA8
c3lzZXhpdHMuaD4KICNpbXBvcnQgPHd0Zi9EYXRhTG9nLmg+CisjaW1wb3J0IDx3dGYvRmlsZVN5
c3RlbS5oPgogI2ltcG9ydCA8d3RmL1JhbmRvbU51bWJlci5oPgogI2ltcG9ydCA8d3RmL1Njb3Bl
Lmg+CiAjaW1wb3J0IDx3dGYvU3lzdGVtVHJhY2luZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvbWFjL1NhbmRib3hFeHRlbnNpb25NYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9tYWMvU2FuZGJveEV4dGVuc2lvbk1hYy5tbQppbmRleCAwY2VjOTg1Yzc4NWM3NzM2NTk3
NzJkMjRmMWI2ZDU3NmQ3MWQ3NWUxLi5hZmJjNmIyYTE0ZTViZmYwYzE2NjU2YjdjMjA4NzdjYmNk
ZGQ0NTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvU2FuZGJveEV4dGVu
c2lvbk1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvU2FuZGJveEV4dGVuc2lv
bk1hYy5tbQpAQCAtMzEsMTMgKzMxLDEyIEBACiAjaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCiAj
aW1wb3J0ICJEZWNvZGVyLmgiCiAjaW1wb3J0ICJFbmNvZGVyLmgiCi0jaW1wb3J0IDxXZWJDb3Jl
L0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHN5cy9zdGF0Lmg+CisjaW1wb3J0IDx3dGYvRmlsZVN5
c3RlbS5oPgogI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oPgogI2ltcG9ydCA8
d3RmL3RleHQvQ1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKLXVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCiBjbGFzcyBTYW5kYm94RXh0ZW5zaW9uSW1wbCB7CiBwdWJsaWM6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3Rv
cmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0
b3JlLmNwcAppbmRleCAzOGY0MmNiOTFhNTM4ZWRlNjhlMjI1OTQxMDUwZjk2YWY2N2I5Njk4Li43
NDI2YmQyYjQ1NTRmM2VmZWNjYWJmYTY4OTk2ZTU1YWJmZWRhMTI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAK
QEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1F1YWxpZmllZE5hbWUuaD4KICNp
bmNsdWRlIDxzdHJpbmc+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW5j
bHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
ICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KQEAg
LTQ4LDcgKzQ5LDcgQEAKIAogbmFtZXNwYWNlIEFQSSB7CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0
OjpOZXR3b3JrQ2FjaGU7Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTo6RmlsZVN5c3RlbTsKK3Vz
aW5nIG5hbWVzcGFjZSBXVEY6OkZpbGVTeXN0ZW07CiAKIENvbnRlbnRSdWxlTGlzdFN0b3JlJiBD
b250ZW50UnVsZUxpc3RTdG9yZTo6bGVnYWN5RGVmYXVsdFN0b3JlKCkKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElXZWJzaXRlRGF0YVN0b3JlQ29j
b2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJV2Vic2l0ZURhdGFT
dG9yZUNvY29hLm1tCmluZGV4IDRhMmVjMzg3MjM3ZmZkYzhjYTg5NDcxODZmZmVkMGQ1Y2E0ZWE3
NTQuLjM4ODRmNDNjMWUyMGExMjk4YmE4ODU3ZWIxYjA5MTU1YTk4YjAwNzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElXZWJzaXRlRGF0YVN0b3JlQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVE
YXRhU3RvcmVDb2NvYS5tbQpAQCAtMjgsOSArMjgsOCBAQAogCiAjaW5jbHVkZSAiU2FuZGJveEV4
dGVuc2lvbi5oIgogI2luY2x1ZGUgIlNhbmRib3hVdGlsaXRpZXMuaCIKLQogI2luY2x1ZGUgPEZv
dW5kYXRpb24vRm91bmRhdGlvbi5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgor
I2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
I2ltcG9ydCA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KQEAgLTE2OSw3ICsx
NjgsNyBAQCBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0SW5kZXhl
ZERCRGF0YWJhc2VEaXJlY3RvcnkoKQogICAgIC8vIEN1cnJlbnRseSwgdGhlIHRvcCBsZXZlbCBv
ZiB0aGF0IGRpcmVjdG9yeSBjb250YWlucyBlbnRpdGllcyByZWxhdGVkIHRvIFdlYlNRTCBkYXRh
YmFzZXMuCiAgICAgLy8gV2Ugc2hvdWxkIGZpeCB0aGlzLCBhbmQgbW92ZSBXZWJTUUwgaW50byBh
IHN1YmRpcmVjdG9yeSAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEy
NDgwNykKICAgICAvLyBJbiB0aGUgbWVhbnRpbWUsIGFuIGVudGl0eSBuYW1lIHByZWZpeGVkIHdp
dGggdGhyZWUgdW5kZXJzY29yZXMgd2lsbCBub3QgY29uZmxpY3Qgd2l0aCBhbnkgV2ViU1FMIGVu
dGl0aWVzLgotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQobGVnYWN5RGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCksICJfX19JbmRl
eGVkREIiKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KGxlZ2FjeURlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpLCAiX19fSW5kZXhlZERCIik7
CiB9CiAKIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRMb2NhbFN0
b3JhZ2VEaXJlY3RvcnkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvQVBJV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvQVBJV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwCmluZGV4IGUxYzQ1MjliM2Qy
MWVlNThiZmVmYjVjMThmZWZiNTExMjJjMDE2MGYuLmY1YWI5MzFjYmVkM2I3NzFiZjNjZWM4MTJj
Yjc0MmU0OWJiNjg1MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHAKQEAgLTI2LDcgKzI2LDcg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgi
CiAKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5
c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KIAogI2lmIFBMQVRGT1JN
KEdUSykKQEAgLTQ2LDEyICs0NiwxMiBAQCBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpCiAvLyBXaHkgaXMgb25seSB0aGlzIGRp
cmVjdG9yeSBuYW1lc3BhY2VkIHRvIGEgcGFydGljdWxhciBhcHBsaWNhdGlvbj8KIFdURjo6U3Ry
aW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKQogewot
ICAgIHJldHVybiBjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihnX2dldF9wcmduYW1lKCkpLCAi
V2ViS2l0Q2FjaGUiKSk7CisgICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVt
OjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGdfZ2V0X3ByZ25hbWUoKSksICJX
ZWJLaXRDYWNoZSIpKTsKIH0KIAogV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dENhY2hlU3RvcmFnZURpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5Rmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGdfZ2V0X3ByZ25hbWUoKSksICJDYWNoZVN0b3JhZ2UiKSk7CisgICAgcmV0dXJu
IGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGdfZ2V0X3ByZ25hbWUoKSksICJDYWNoZVN0b3JhZ2UiKSk7CiB9CiAKIFdURjo6
U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9y
eSgpCkBAIC05MSwxOSArOTEsMTkgQEAgV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKQogCiBXVEY6OlN0cmluZyBXZWJz
aXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25z
dCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0
cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfdXNlcl9jYWNoZV9kaXIoKSks
IGRpcmVjdG9yeU5hbWUpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihn
X2dldF91c2VyX2NhY2hlX2RpcigpKSwgZGlyZWN0b3J5TmFtZSk7CiB9CiAKIFdURjo6U3RyaW5n
IFdlYnNpdGVEYXRhU3RvcmU6OndlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3RvcnlOYW1lKQogewotICAgIHJldHVybiBX
ZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihnX2dldF91c2VyX2Rh
dGFfZGlyKCkpLCBkaXJlY3RvcnlOYW1lKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZ19nZXRfdXNlcl9kYXRhX2RpcigpKSwgZGlyZWN0b3J5TmFtZSk7CiB9CiAKIFdU
Rjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRBcHBsaWNhdGlvbkNhY2hl
RGlyZWN0b3J5KCkKIHsKICNpZiBQTEFURk9STShXUEUpCiAgICAgR1VuaXF1ZVB0cjxnY2hhcj4g
Y2FjaGVEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFtZShnX2dldF91c2VyX2NhY2hlX2RpcigpLCAi
d3BlIiwgImFwcGNhY2hlIiwgbnVsbHB0cikpOwotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lz
dGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNhY2hlRGlyZWN0b3J5Lmdl
dCgpKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihjYWNoZURpcmVjdG9yeS5nZXQoKSk7CiAjZW5kaWYKICAgICByZXR1cm4gZGVmYXVs
dEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKTsKIH0KQEAgLTExMiw3ICsxMTIsNyBAQCBXVEY6
OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0
b3J5KCkKIHsKICNpZiBQTEFURk9STShXUEUpCiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBkaXNrQ2Fj
aGVEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFtZShnX2dldF91c2VyX2NhY2hlX2RpcigpLCAid3Bl
IiwgImNhY2hlIiwgbnVsbHB0cikpOwotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpz
dHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRpc2tDYWNoZURpcmVjdG9yeS5nZXQo
KSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oZGlza0NhY2hlRGlyZWN0b3J5LmdldCgpKTsKICNlbmRpZgogICAgIHJldHVybiBkZWZh
dWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCk7CiB9CkBAIC0xMjEsNyArMTIxLDcgQEAgV1RGOjpT
dHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0
b3J5KCkKIHsKICNpZiBQTEFURk9STShXUEUpCiAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZGF0YWJh
c2VEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFtZShnX2dldF91c2VyX2RhdGFfZGlyKCksICJ3cGUi
LCAiZGF0YWJhc2VzIiwgbnVsbHB0cikpOwotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVt
OjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRhdGFiYXNlRGlyZWN0b3J5Lmdl
dCgpKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihkYXRhYmFzZURpcmVjdG9yeS5nZXQoKSk7CiAjZW5kaWYKICAgICByZXR1cm4gZGVm
YXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCk7CiB9CkBAIC0xMzAsNyArMTMwLDcgQEAgV1RG
OjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdEluZGV4ZWREQkRhdGFiYXNl
RGlyZWN0b3J5KCkKIHsKICNpZiBQTEFURk9STShXUEUpCiAgICAgR1VuaXF1ZVB0cjxnY2hhcj4g
aW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFtZShnX2dldF91c2VyX2Rh
dGFfZGlyKCksICJ3cGUiLCAiZGF0YWJhc2VzIiwgImluZGV4ZWRkYiIsIG51bGxwdHIpKTsKLSAg
ICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihpbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeS5nZXQoKSk7CisgICAgcmV0dXJuIEZp
bGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oaW5kZXhlZERCRGF0
YWJhc2VEaXJlY3RvcnkuZ2V0KCkpOwogI2VuZGlmCiAgICAgcmV0dXJuIGRlZmF1bHRJbmRleGVk
REJEYXRhYmFzZURpcmVjdG9yeSgpOwogfQpAQCAtMTM5LDcgKzEzOSw3IEBAIFdURjo6U3RyaW5n
IFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKQog
ewogI2lmIFBMQVRGT1JNKFdQRSkKICAgICBHVW5pcXVlUHRyPGdjaGFyPiBzdG9yYWdlRGlyZWN0
b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9kYXRhX2RpcigpLCAid3BlIiwgImxvY2Fs
c3RvcmFnZSIsIG51bGxwdHIpKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3Ry
aW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihzdG9yYWdlRGlyZWN0b3J5LmdldCgpKTsK
KyAgICByZXR1cm4gRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihzdG9yYWdlRGlyZWN0b3J5LmdldCgpKTsKICNlbmRpZgogICAgIHJldHVybiBkZWZhdWx0TG9j
YWxTdG9yYWdlRGlyZWN0b3J5KCk7CiB9CkBAIC0xNDgsNyArMTQ4LDcgQEAgV1RGOjpTdHJpbmcg
V2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdE1lZGlhQ2FjaGVEaXJlY3RvcnkoKQogewog
I2lmIFBMQVRGT1JNKFdQRSkKICAgICBHVW5pcXVlUHRyPGdjaGFyPiBjYWNoZURpcmVjdG9yeShn
X2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfY2FjaGVfZGlyKCksICJ3cGUiLCAibWVkaWFjYWNo
ZSIsIG51bGxwdHIpKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJv
bUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjYWNoZURpcmVjdG9yeS5nZXQoKSk7CisgICAgcmV0
dXJuIEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY2FjaGVE
aXJlY3RvcnkuZ2V0KCkpOwogI2VuZGlmCiAgICAgcmV0dXJuIGRlZmF1bHRNZWRpYUNhY2hlRGly
ZWN0b3J5KCk7CiB9CkBAIC0xNTcsNyArMTU3LDcgQEAgV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFT
dG9yZTo6bGVnYWN5RGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKQogewogI2lmIFBM
QVRGT1JNKFdQRSkKICAgICBHVW5pcXVlUHRyPGdjaGFyPiBtZWRpYUtleXNTdG9yYWdlRGlyZWN0
b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9kYXRhX2RpcigpLCAid3BlIiwgIm1lZGlh
a2V5cyIsIG51bGxwdHIpKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5n
RnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5Lmdl
dCgpKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5LmdldCgpKTsKICNlbmRpZgogICAgIHJl
dHVybiBkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpOwogfQpAQCAtMTY2LDcgKzE2
Niw3IEBAIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0RGV2aWNlSWRIYXNo
U2FsdHNTdG9yYWdlRGlyZWN0b3J5KCkKIHsKICNpZiBQTEFURk9STShXUEUpCiAgICAgR1VuaXF1
ZVB0cjxnY2hhcj4gZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KGdfYnVpbGRfZmls
ZW5hbWUoZ19nZXRfdXNlcl9kYXRhX2RpcigpLCAid3BlIiwgImRldmljZWlkaGFzaHNhbHRzIiwg
bnVsbHB0cikpOwotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeS5n
ZXQoKSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5LmdldCgpKTsKICNlbmRp
ZgogICAgIHJldHVybiBkZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCk7
CiB9CkBAIC0xNzQsNyArMTc0LDcgQEAgU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURl
ZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKQogV1RGOjpTdHJpbmcgV2Vi
c2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdEphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0
b3J5KCkKIHsKICAgICBHVW5pcXVlUHRyPGdjaGFyPiBqYXZhU2NyaXB0Q29yZUNvbmZpZ0RpcmVj
dG9yeShnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfZGF0YV9kaXIoKSwgQkFTRV9ESVJFQ1RP
UlksICJKYXZhU2NyaXB0Q29yZURlYnVnIiwgbnVsbHB0cikpOwotICAgIHJldHVybiBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGphdmFTY3Jp
cHRDb3JlQ29uZmlnRGlyZWN0b3J5LmdldCgpKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6c3Ry
aW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihqYXZhU2NyaXB0Q29yZUNvbmZpZ0RpcmVj
dG9yeS5nZXQoKSk7CiB9CiAKIFJlZjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uPiBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2Uu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcApp
bmRleCA2NzRhNWRiMDQzYzhhNjBmMzYyMGFhN2JhMDE4YzFmOTg1ZWRmOGE5Li5iMDQ2NmU5MTQw
OTBiYzA1NTk2NmU2YjlkZjMxOWVhMzA0ZGIyMzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAKQEAgLTI5LDExICsyOSwxMSBAQAog
CiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQml0bWFwSW1hZ2UuaD4K
LSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdl
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVTdGF0ZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1NRTGl0ZVRyYW5zYWN0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIu
aD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFk
Lmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdEZhdmljb25EYXRhYmFzZS5jcHAKaW5kZXggOWJlNzI1M2Y4NWU5MWRhMTFiOTVl
ZDI4MDllYjQ0YjVhMzcxNWE1YS4uZTAxNjQ4NjgxNzFhNWQ4YmVlOGEzZTE4NmFjNjgyNWM0OTFk
OTcwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
RmF2aWNvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwCkBAIC0yMywxMiArMjMsMTIgQEAKICNpbmNsdWRl
ICJJY29uRGF0YWJhc2UuaCIKICNpbmNsdWRlICJXZWJLaXRGYXZpY29uRGF0YWJhc2VQcml2YXRl
LmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVT
eXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9J
bnRTaXplLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWZQdHJDYWlyby5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KKyNpbmNs
dWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVk
ZSA8d3RmL1NldEZvclNjb3BlLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgpAQCAt
MjczLDcgKzI3Myw3IEBAIHZvaWQgd2Via2l0RmF2aWNvbkRhdGFiYXNlT3BlbihXZWJLaXRGYXZp
Y29uRGF0YWJhc2UqIGRhdGFiYXNlLCBjb25zdCBTdHJpbmcmIHBhCiAgICAgcHJpdi0+aWNvbkRh
dGFiYXNlLT5zZXRFbmFibGVkKHRydWUpOwogICAgIHByaXYtPmljb25EYXRhYmFzZS0+c2V0UHJp
dmF0ZUJyb3dzaW5nRW5hYmxlZChXZWJQcmVmZXJlbmNlczo6YW55UGFnZXNBcmVVc2luZ1ByaXZh
dGVCcm93c2luZygpKTsKIAotICAgIGlmICghcHJpdi0+aWNvbkRhdGFiYXNlLT5vcGVuKFdlYkNv
cmU6OkZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUocGF0aCksIFdlYkNvcmU6OkZpbGVTeXN0ZW06
OnBhdGhHZXRGaWxlTmFtZShwYXRoKSkpIHsKKyAgICBpZiAoIXByaXYtPmljb25EYXRhYmFzZS0+
b3BlbihGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKHBhdGgpLCBGaWxlU3lzdGVtOjpwYXRoR2V0
RmlsZU5hbWUocGF0aCkpKSB7CiAgICAgICAgIHByaXYtPmljb25EYXRhYmFzZSA9IG51bGxwdHI7
CiAgICAgICAgIEljb25EYXRhYmFzZTo6YWxsb3dEYXRhYmFzZUNsZWFudXAoKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGaWxlQ2hv
b3NlclJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
RmlsZUNob29zZXJSZXF1ZXN0LmNwcAppbmRleCAzN2U2Y2NhMGNlYmNlOTE0NzMwZTNjNmQ0MjVj
NWZlZjc3ZmI0ODVmLi4wOTk4MGFhZTA2OTllYmNlOWQzM2U5YzVhNjk3YTAyZGUwNDcwM2Q4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGaWxlQ2hv
b3NlclJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdEZpbGVDaG9vc2VyUmVxdWVzdC5jcHAKQEAgLTI1LDkgKzI1LDkgQEAKICNpbmNsdWRlICJB
UElTdHJpbmcuaCIKICNpbmNsdWRlICJXZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3RQcml2YXRlLmgi
CiAjaW5jbHVkZSAiV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5oIgotI2luY2x1ZGUg
PFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dEVuY29kaW5nLmg+
CiAjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5o
PgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAppbmRleCAwZjM5ZTEyNWYz
ZGE2YzQ4Mzk2YTQwYzljZGZlOGY0YzQxZDk2OWFlLi42NmQ4M2E3MTg4ZTZjZGE3MGVmMmI0OWYy
NjM5OTdhYzRlZjY5NTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcApAQCAtMzMzLDIwICszMzMsMjAgQEAgc3RhdGlj
IHZvaWQgd2Via2l0V2ViQ29udGV4dENvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKICAgICBH
VW5pcXVlUHRyPGNoYXI+IGJ1bmRsZUZpbGVuYW1lKGdfYnVpbGRfZmlsZW5hbWUoaW5qZWN0ZWRC
dW5kbGVEaXJlY3RvcnkoKSwgSU5KRUNURURfQlVORExFX0ZJTEVOQU1FLCBudWxscHRyKSk7CiAK
ICAgICBBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uOwotICAgIGNv
bmZpZ3VyYXRpb24uc2V0SW5qZWN0ZWRCdW5kbGVQYXRoKFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0
cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oYnVuZGxlRmlsZW5hbWUuZ2V0KCkpKTsK
KyAgICBjb25maWd1cmF0aW9uLnNldEluamVjdGVkQnVuZGxlUGF0aChGaWxlU3lzdGVtOjpzdHJp
bmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGJ1bmRsZUZpbGVuYW1lLmdldCgpKSk7CiAg
ICAgY29uZmlndXJhdGlvbi5zZXRNYXhpbXVtUHJvY2Vzc0NvdW50KDEpOwogICAgIGNvbmZpZ3Vy
YXRpb24uc2V0RGlza0NhY2hlU3BlY3VsYXRpdmVWYWxpZGF0aW9uRW5hYmxlZCh0cnVlKTsKIAog
ICAgIFdlYktpdFdlYkNvbnRleHQqIHdlYkNvbnRleHQgPSBXRUJLSVRfV0VCX0NPTlRFWFQob2Jq
ZWN0KTsKICAgICBXZWJLaXRXZWJDb250ZXh0UHJpdmF0ZSogcHJpdiA9IHdlYkNvbnRleHQtPnBy
aXY7CiAgICAgaWYgKHByaXYtPndlYnNpdGVEYXRhTWFuYWdlciAmJiAhd2Via2l0X3dlYnNpdGVf
ZGF0YV9tYW5hZ2VyX2lzX2VwaGVtZXJhbChwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkp
KSB7Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KFdlYkNv
cmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0
X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9sb2NhbF9zdG9yYWdlX2RpcmVjdG9yeShwcml2LT53
ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSk7Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0RGlz
a0NhY2hlRGlyZWN0b3J5KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfZGlza19jYWNoZV9kaXJlY3Rvcnko
cHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSksIG5ldHdvcmtDYWNoZVN1YmRpcmVjdG9y
eSkpOwotICAgICAgICBjb25maWd1cmF0aW9uLnNldEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnko
V2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3
ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X29mZmxpbmVfYXBwbGljYXRpb25fY2FjaGVf
ZGlyZWN0b3J5KHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpKTsKLSAgICAgICAgY29u
ZmlndXJhdGlvbi5zZXRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeShXZWJDb3JlOjpGaWxlU3lz
dGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHdlYmtpdF93ZWJzaXRlX2Rh
dGFfbWFuYWdlcl9nZXRfaW5kZXhlZGRiX2RpcmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1hbmFn
ZXIuZ2V0KCkpKSk7Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0V2ViU1FMRGF0YWJhc2VEaXJl
Y3RvcnkoV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X3dlYnNxbF9kaXJlY3RvcnkocHJp
di0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSkpOworICAgICAgICBjb25maWd1cmF0aW9uLnNl
dExvY2FsU3RvcmFnZURpcmVjdG9yeShGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfbG9jYWxfc3RvcmFn
ZV9kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSkpOworICAgICAgICBj
b25maWd1cmF0aW9uLnNldERpc2tDYWNoZURpcmVjdG9yeShGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2Rpc2tfY2FjaGVfZGlyZWN0b3J5
KHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpLCBuZXR3b3JrQ2FjaGVTdWJkaXJlY3Rv
cnkpKTsKKyAgICAgICAgY29uZmlndXJhdGlvbi5zZXRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5
KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0X3dl
YnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9vZmZsaW5lX2FwcGxpY2F0aW9uX2NhY2hlX2RpcmVjdG9y
eShwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSk7CisgICAgICAgIGNvbmZpZ3VyYXRp
b24uc2V0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2lu
ZGV4ZWRkYl9kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSkpOworICAg
ICAgICBjb25maWd1cmF0aW9uLnNldFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KEZpbGVTeXN0ZW06
OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0X3dlYnNpdGVfZGF0YV9t
YW5hZ2VyX2dldF93ZWJzcWxfZGlyZWN0b3J5KHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQo
KSkpKTsKICAgICB9IGVsc2UgaWYgKCFwcml2LT5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkuaXNOdWxs
KCkpCi0gICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KFdlYkNv
cmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+
bG9jYWxTdG9yYWdlRGlyZWN0b3J5LmRhdGEoKSkpOworICAgICAgICBjb25maWd1cmF0aW9uLnNl
dExvY2FsU3RvcmFnZURpcmVjdG9yeShGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKHByaXYtPmxvY2FsU3RvcmFnZURpcmVjdG9yeS5kYXRhKCkpKTsKIAogICAg
IHByaXYtPnByb2Nlc3NQb29sID0gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZShjb25maWd1cmF0aW9u
KTsKIApAQCAtOTI0LDcgKzkyNCw3IEBAIHZvaWQgd2Via2l0X3dlYl9jb250ZXh0X3NldF9mYXZp
Y29uX2RhdGFiYXNlX2RpcmVjdG9yeShXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0CiAgICAgV2Vi
S2l0V2ViQ29udGV4dFByaXZhdGUqIHByaXYgPSBjb250ZXh0LT5wcml2OwogICAgIGVuc3VyZUZh
dmljb25EYXRhYmFzZShjb250ZXh0KTsKIAotICAgIFN0cmluZyBkaXJlY3RvcnlQYXRoID0gV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRo
KTsKKyAgICBTdHJpbmcgZGlyZWN0b3J5UGF0aCA9IEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAgICAgLy8gVXNlIGRlZmF1bHQgaWYgbnVsbHB0
ciBpcyBwYXNzZWQgYXMgcGFyYW1ldGVyLgogICAgIGlmIChkaXJlY3RvcnlQYXRoLmlzRW1wdHko
KSkgewogI2lmIFBMQVRGT1JNKEdUSykKQEAgLTkzMyw3ICs5MzMsNyBAQCB2b2lkIHdlYmtpdF93
ZWJfY29udGV4dF9zZXRfZmF2aWNvbl9kYXRhYmFzZV9kaXJlY3RvcnkoV2ViS2l0V2ViQ29udGV4
dCogY29udGV4dAogICAgICAgICBjb25zdCBjaGFyKiBwb3J0RGlyZWN0b3J5ID0gIndwZSI7CiAj
ZW5kaWYKICAgICAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZGF0YWJhc2VEaXJlY3RvcnkoZ19idWls
ZF9maWxlbmFtZShnX2dldF91c2VyX2NhY2hlX2RpcigpLCBwb3J0RGlyZWN0b3J5LCAiaWNvbmRh
dGFiYXNlIiwgbnVsbHB0cikpOwotICAgICAgICBkaXJlY3RvcnlQYXRoID0gV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihkYXRhYmFzZURpcmVj
dG9yeS5nZXQoKSk7CisgICAgICAgIGRpcmVjdG9yeVBhdGggPSBGaWxlU3lzdGVtOjpzdHJpbmdG
cm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRhdGFiYXNlRGlyZWN0b3J5LmdldCgpKTsKICAg
ICB9CiAgICAgcHJpdi0+ZmF2aWNvbkRhdGFiYXNlRGlyZWN0b3J5ID0gZGlyZWN0b3J5UGF0aC51
dGY4KCk7CiAKQEAgLTk0Miw3ICs5NDIsNyBAQCB2b2lkIHdlYmtpdF93ZWJfY29udGV4dF9zZXRf
ZmF2aWNvbl9kYXRhYmFzZV9kaXJlY3RvcnkoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dAogICAg
ICAgICAiV2VicGFnZUljb25zLmRiIiwgbnVsbHB0cikpOwogCiAgICAgLy8gU2V0dGluZyB0aGUg
cGF0aCB3aWxsIGNhdXNlIHRoZSBpY29uIGRhdGFiYXNlIHRvIGJlIG9wZW5lZC4KLSAgICB3ZWJr
aXRGYXZpY29uRGF0YWJhc2VPcGVuKHByaXYtPmZhdmljb25EYXRhYmFzZS5nZXQoKSwgV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmYXZpY29u
RGF0YWJhc2VQYXRoLmdldCgpKSk7CisgICAgd2Via2l0RmF2aWNvbkRhdGFiYXNlT3Blbihwcml2
LT5mYXZpY29uRGF0YWJhc2UuZ2V0KCksIEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oZmF2aWNvbkRhdGFiYXNlUGF0aC5nZXQoKSkpOwogCiAgICAgaWYgKHdl
YmtpdF93ZWJfY29udGV4dF9pc19lcGhlbWVyYWwoY29udGV4dCkpCiAgICAgICAgIHdlYmtpdEZh
dmljb25EYXRhYmFzZVNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQocHJpdi0+ZmF2aWNvbkRhdGFi
YXNlLmdldCgpLCB0cnVlKTsKQEAgLTEwMjYsNyArMTAyNiw3IEBAIHZvaWQgd2Via2l0X3dlYl9j
b250ZXh0X3NldF9hZGRpdGlvbmFsX3BsdWdpbnNfZGlyZWN0b3J5KFdlYktpdFdlYkNvbnRleHQq
IGNvbnRlCiAgICAgZ19yZXR1cm5faWZfZmFpbChkaXJlY3RvcnkpOwogCiAjaWYgRU5BQkxFKE5F
VFNDQVBFX1BMVUdJTl9BUEkpCi0gICAgY29udGV4dC0+cHJpdi0+cHJvY2Vzc1Bvb2wtPnNldEFk
ZGl0aW9uYWxQbHVnaW5zRGlyZWN0b3J5KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21G
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGlyZWN0b3J5KSk7CisgICAgY29udGV4dC0+cHJpdi0+
cHJvY2Vzc1Bvb2wtPnNldEFkZGl0aW9uYWxQbHVnaW5zRGlyZWN0b3J5KEZpbGVTeXN0ZW06OnN0
cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGlyZWN0b3J5KSk7CiAjZW5kaWYKIH0K
IApAQCAtMTQxOCw3ICsxNDE4LDcgQEAgdm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2Rpc2tf
Y2FjaGVfZGlyZWN0b3J5KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIGNvbnMKICAgICBnX3Jl
dHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfQ09OVEVYVChjb250ZXh0KSk7CiAgICAgZ19yZXR1
cm5faWZfZmFpbChkaXJlY3RvcnkpOwogCi0gICAgY29udGV4dC0+cHJpdi0+cHJvY2Vzc1Bvb2wt
PmNvbmZpZ3VyYXRpb24oKS5zZXREaXNrQ2FjaGVEaXJlY3RvcnkoV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zy
b21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGlyZWN0b3J5KSwgbmV0d29ya0NhY2hlU3ViZGly
ZWN0b3J5KSk7CisgICAgY29udGV4dC0+cHJpdi0+cHJvY2Vzc1Bvb2wtPmNvbmZpZ3VyYXRpb24o
KS5zZXREaXNrQ2FjaGVEaXJlY3RvcnkoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGlyZWN0
b3J5KSwgbmV0d29ya0NhY2hlU3ViZGlyZWN0b3J5KSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGFNYW5h
Z2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVE
YXRhTWFuYWdlci5jcHAKaW5kZXggN2UxZDE0YjY3Yjk1MzhmNDc1ZTBmOGFmNDUwYWFiZGVmMmUy
MTU1ZS4uMWNjMDY1NDExZTczMWZhNjcyYzQzNGYzYjNjMGFiZTlhNTY5M2ViZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGFNYW5h
Z2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJz
aXRlRGF0YU1hbmFnZXIuY3BwCkBAIC0yNiw4ICsyNiw4IEBACiAjaW5jbHVkZSAiV2ViS2l0V2Vi
c2l0ZURhdGFNYW5hZ2VyUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYnNpdGVEYXRhUHJp
dmF0ZS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhRmV0Y2hPcHRpb24uaCIKLSNpbmNsdWRlIDxX
ZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgorI2luY2x1
ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9nbGliL1dURkdUeXBlLmg+CiAKQEAgLTM2MywxMyArMzYzLDEzIEBAIEFQ
STo6V2Vic2l0ZURhdGFTdG9yZSYgd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyR2V0RGF0YVN0b3Jl
KFdlYktpdFdlYnNpdGVEYXRhTWFuCiAgICAgaWYgKCFwcml2LT53ZWJzaXRlRGF0YVN0b3JlKSB7
CiAgICAgICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uOjpjcmVhdGUoKTsKICAgICAgICAgY29uZmlndXJhdGlvbi0+c2V0TG9jYWxTdG9yYWdlRGly
ZWN0b3J5KCFwcml2LT5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPwotICAgICAgICAgICAgQVBJOjpX
ZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkgOiBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPmxv
Y2FsU3RvcmFnZURpcmVjdG9yeS5nZXQoKSkpOworICAgICAgICAgICAgQVBJOjpXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkgOiBGaWxlU3lzdGVtOjpzdHJp
bmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPmxvY2FsU3RvcmFnZURpcmVjdG9y
eS5nZXQoKSkpOwogICAgICAgICBjb25maWd1cmF0aW9uLT5zZXROZXR3b3JrQ2FjaGVEaXJlY3Rv
cnkoIXByaXYtPmRpc2tDYWNoZURpcmVjdG9yeSA/Ci0gICAgICAgICAgICBBUEk6OldlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKSA6IFdlYkNvcmU6OkZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJp
bmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPmRpc2tDYWNoZURpcmVjdG9yeS5n
ZXQoKSksIG5ldHdvcmtDYWNoZVN1YmRpcmVjdG9yeSkpOworICAgICAgICAgICAgQVBJOjpXZWJz
aXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkgOiBGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihwcml2LT5kaXNrQ2FjaGVEaXJlY3RvcnkuZ2V0KCkpLCBuZXR3b3Jr
Q2FjaGVTdWJkaXJlY3RvcnkpKTsKICAgICAgICAgY29uZmlndXJhdGlvbi0+c2V0QXBwbGljYXRp
b25DYWNoZURpcmVjdG9yeSghcHJpdi0+YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA/Ci0gICAg
ICAgICAgICBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGly
ZWN0b3J5KCkgOiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKHByaXYtPmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkuZ2V0KCkpKTsKKyAgICAg
ICAgICAgIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJl
Y3RvcnkoKSA6IEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
cHJpdi0+YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeS5nZXQoKSkpOwogICAgICAgICBjb25maWd1
cmF0aW9uLT5zZXRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSghcHJpdi0+d2ViU1FMRGlyZWN0b3J5
ID8KLSAgICAgICAgICAgIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFi
YXNlRGlyZWN0b3J5KCkgOiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKHByaXYtPndlYlNRTERpcmVjdG9yeS5nZXQoKSkpOworICAgICAgICAg
ICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnko
KSA6IEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+
d2ViU1FMRGlyZWN0b3J5LmdldCgpKSk7CiAgICAgICAgIGNvbmZpZ3VyYXRpb24tPnNldE1lZGlh
S2V5c1N0b3JhZ2VEaXJlY3RvcnkoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFL
ZXlzU3RvcmFnZURpcmVjdG9yeSgpKTsKICAgICAgICAgcHJpdi0+d2Vic2l0ZURhdGFTdG9yZSA9
IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlTGVnYWN5KFdURk1vdmUoY29uZmlndXJhdGlv
bikpOwogICAgIH0KQEAgLTUzMiw3ICs1MzIsNyBAQCBjb25zdCBnY2hhciogd2Via2l0X3dlYnNp
dGVfZGF0YV9tYW5hZ2VyX2dldF9kaXNrX2NhY2hlX2RpcmVjdG9yeShXZWJLaXRXZWJzaXRlRAog
CiAgICAgaWYgKCFwcml2LT5kaXNrQ2FjaGVEaXJlY3RvcnkpIHsKICAgICAgICAgLy8gVGhlIGRl
ZmF1bHQgZGlyZWN0b3J5IGFscmVhZHkgaGFzIHRoZSBzdWJkaXJlY3RvcnkuCi0gICAgICAgIHBy
aXYtPmRpc2tDYWNoZURpcmVjdG9yeS5yZXNldChnX3N0cmR1cChXZWJDb3JlOjpGaWxlU3lzdGVt
OjpkaXJlY3RvcnlOYW1lKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5ldHdvcmtDYWNo
ZURpcmVjdG9yeSgpKS51dGY4KCkuZGF0YSgpKSk7CisgICAgICAgIHByaXYtPmRpc2tDYWNoZURp
cmVjdG9yeS5yZXNldChnX3N0cmR1cChGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKEFQSTo6V2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpKS51dGY4KCkuZGF0
YSgpKSk7CiAgICAgfQogICAgIHJldHVybiBwcml2LT5kaXNrQ2FjaGVEaXJlY3RvcnkuZ2V0KCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd2luL0FQSVdlYnNp
dGVEYXRhU3RvcmVXaW4uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dpbi9BUElX
ZWJzaXRlRGF0YVN0b3JlV2luLmNwcAppbmRleCAxOWJlMjg4ZDQ4MmRhYWZkZDE4ZTRjZmRmZWRj
ZTIwM2FhYzc1YmRkLi4zMjI1YjkyMTcwZDdjOThiNGJlODQ1YWNjZmU4ZDhjMWIzNjdkN2IzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd2luL0FQSVdlYnNpdGVEYXRh
U3RvcmVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93aW4vQVBJV2Vi
c2l0ZURhdGFTdG9yZVdpbi5jcHAKQEAgLTI2LDQzICsyNiw0MyBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKIAotI2luY2x1ZGUgPFdlYkNv
cmUvRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKIG5hbWVzcGFj
ZSBBUEkgewogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2Fj
aGVEaXJlY3RvcnkoKQogewotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNT
dG9yYWdlRGlyZWN0b3J5KCksICJBcHBsaWNhdGlvbkNhY2hlIik7CisgICAgcmV0dXJuIEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVj
aWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkFwcGxpY2F0aW9uQ2FjaGUiKTsKIH0KIAogU3RyaW5n
IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKQogewotICAg
IHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJD
YWNoZVN0b3JhZ2UiKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAi
Q2FjaGVTdG9yYWdlIik7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0
d29ya0NhY2hlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmxvY2FsVXNlclNw
ZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiTmV0d29ya0NhY2hlIik7CisgICAgcmV0dXJuIEZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJT
cGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIk5ldHdvcmtDYWNoZSIpOwogfQogCiBTdHJpbmcg
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkKIHsK
LSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgp
LCAiSW5kZXhlZERCIik7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwg
IkluZGV4ZWREQiIpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKQogewotICAgIHJldHVybiBXZWJDb3JlOjpG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6
bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJTZXJ2aWNlV29ya2VycyIpOwor
ICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3Rl
bTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJTZXJ2aWNlV29ya2VycyIp
OwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVj
dG9yeSgpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VE
aXJlY3RvcnkoKSwgIkxvY2FsU3RvcmFnZSIpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdl
RGlyZWN0b3J5KCksICJMb2NhbFN0b3JhZ2UiKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVT
eXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiTWVkaWFLZXlTdG9y
YWdlIik7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChG
aWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIk1lZGlhS2V5
U3RvcmFnZSIpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERldmljZUlk
SGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpCkBAIC03Myw1NyArNzMsNTcgQEAgU3RyaW5nIFdl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3Rvcnko
KQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0
b3J5KCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURp
cmVjdG9yeSgpLCAiV2ViU1FMIik7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3Rv
cnkoKSwgIldlYlNRTCIpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKQogewotICAgIHJldHVybiBXZWJDb3JlOjpG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6
bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzIik7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChG
aWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIlJlc291cmNl
TG9hZFN0YXRpc3RpY3MiKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmNhY2hlRGly
ZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5TmFt
ZSkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVj
dG9yeSgpLCBkaXJlY3RvcnlOYW1lKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVj
dG9yeSgpLCBkaXJlY3RvcnlOYW1lKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6Ondl
YnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYg
ZGlyZWN0b3J5TmFtZSkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmlj
U3RvcmFnZURpcmVjdG9yeSgpLCBkaXJlY3RvcnlOYW1lKTsKKyAgICByZXR1cm4gRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmlj
U3RvcmFnZURpcmVjdG9yeSgpLCBkaXJlY3RvcnlOYW1lKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVE
YXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkKIHsKLSAg
ICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdl
YkNvcmU6OkZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAi
QXBwbGljYXRpb25DYWNoZSIpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5
KCksICJBcHBsaWNhdGlvbkNhY2hlIik7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjps
ZWdhY3lEZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0
ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiTmV0d29ya0NhY2hlIik7
CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lz
dGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIk5ldHdvcmtDYWNoZSIp
OwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdFdlYlNRTERhdGFi
YXNlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmlj
U3RvcmFnZURpcmVjdG9yeSgpLCAiV2ViU1FMIik7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3Jh
Z2VEaXJlY3RvcnkoKSwgIldlYlNRTCIpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6
bGVnYWN5RGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4g
V2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZp
bGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiSW5kZXhlZERC
Iik7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxl
U3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkluZGV4ZWREQiIp
OwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdExvY2FsU3RvcmFn
ZURpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0
b3JhZ2VEaXJlY3RvcnkoKSwgIkxvY2FsU3RvcmFnZSIpOworICAgIHJldHVybiBGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNT
dG9yYWdlRGlyZWN0b3J5KCksICJMb2NhbFN0b3JhZ2UiKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVE
YXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1
cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6
OkZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiTWVkaWFD
YWNoZSIpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJNZWRpYUNh
Y2hlIik7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0TWVkaWFL
ZXlzU3RvcmFnZURpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpsb2NhbFVzZXJT
cGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIk1lZGlhS2V5U3RvcmFnZSIpOworICAgIHJldHVy
biBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxV
c2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJNZWRpYUtleVN0b3JhZ2UiKTsKIH0KIAog
U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0
b3JhZ2VEaXJlY3RvcnkoKQpAQCAtMTM0LDcgKzEzNCw3IEBAIFN0cmluZyBXZWJzaXRlRGF0YVN0
b3JlOjpsZWdhY3lEZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCkKIAog
U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJh
dGlvbkRpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZp
Y1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkphdmFTY3JpcHRDb3JlRGVidWciKTsKKyAgICByZXR1cm4g
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNl
clNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiSmF2YVNjcmlwdENvcmVEZWJ1ZyIpOwogfQog
CiBSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4gV2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNw
cAppbmRleCA4MDU0N2U2YmUxMzg2NTVmMDc5OGI2NzZkYzEyZGM5YWIzM2FjZjFiLi5mODg0NGFm
ZTZkMjJlNGNkNWVlMjA4MTQ4YjRmNDkyZjdjYzYzMTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNw
cApAQCAtODA2LDcgKzgwNiw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OndpbGxDbG9z
ZVBhZ2UoY29uc3QgV2ViUGFnZVByb3h5JiBwYWdlKQogCiBzdGF0aWMgYm9vbCBmaWxlQ2FuQmVB
Y2NlcHRlZEZvclVwbG9hZChjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBIYXNoU2V0PFN0
cmluZz4mIGFsbG93ZWRNSU1FVHlwZXMsIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgYWxsb3dlZEZp
bGVFeHRlbnNpb25zKQogewotICAgIGlmICghV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZUV4aXN0
cyhmaWxlbmFtZSkpCisgICAgaWYgKCFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGZpbGVuYW1lKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGFsbG93ZWRNSU1FVHlwZXMuaXNFbXB0
eSgpICYmIGFsbG93ZWRGaWxlRXh0ZW5zaW9ucy5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tCmluZGV4IDNiNDk2MjhmZGY2ZGZj
NWFhZGQwMjlkNWEyY2JjYjZiZmI3OGNmYzEuLmM3MjdiZDIzZWY5NTUyNTFmNzk4MDlkNjljNTgy
MzIxOTdhZjFlYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rv
d25sb2FkQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25s
b2FkQ2xpZW50Lm1tCkBAIC00MiwxMCArNDIsMTAgQEAKICNpbXBvcnQgIldlYlByb2Nlc3NQcm94
eS5oIgogI2ltcG9ydCAiX1dLRG93bmxvYWREZWxlZ2F0ZS5oIgogI2ltcG9ydCAiX1dLRG93bmxv
YWRJbnRlcm5hbC5oIgotI2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25z
ZS5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5o
PgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtMTgxLDcgKzE4MSw3IEBAIHZvaWQgRG93bmxv
YWRDbGllbnQ6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdlYlByb2Nl
c3NQb29sJiwgRG93CiB7CiAjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQogICAgIGlmIChkb3dubG9h
ZFByb3h5LmlzU3lzdGVtUHJldmlld0Rvd25sb2FkKCkpIHsKLSAgICAgICAgTlNTdHJpbmcgKnRl
bXBvcmFyeURpcmVjdG9yeSA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURp
cmVjdG9yeShAIlN5c3RlbVByZXZpZXdzIik7CisgICAgICAgIE5TU3RyaW5nICp0ZW1wb3JhcnlE
aXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoQCJTeXN0ZW1Q
cmV2aWV3cyIpOwogICAgICAgICBOU1N0cmluZyAqZGVzdGluYXRpb24gPSBbdGVtcG9yYXJ5RGly
ZWN0b3J5IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpmaWxlbmFtZV07CiAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKEFsbG93T3ZlcndyaXRlOjpZZXMsIGRlc3RpbmF0aW9uKTsKICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlByb2Nlc3NQb29sQ29jb2EubW0KaW5kZXggNTZjZjBmZDA1OTBjNjE1NDNkMzQxMGY4NGY2NmQx
OWM3ZWQ4NTFiZi4uMmRhZjc1NTcxY2NiMWE5ZDcwNWJhYTA1N2FkNjI0YTVhNjk4YTQzOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENv
Y29hLm1tCkBAIC00Myw3ICs0Myw2IEBACiAjaW1wb3J0ICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIK
ICNpbXBvcnQgIldpbmRvd1NlcnZlckNvbm5lY3Rpb24uaCIKICNpbXBvcnQgPFdlYkNvcmUvQ29s
b3IuaD4KLSNpbXBvcnQgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8V2ViQ29yZS9O
ZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQu
aD4KICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1QYXN0ZWJvYXJkLmg+CkBAIC01Miw2ICs1MSw3
IEBACiAjaW1wb3J0IDxwYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oPgogI2ltcG9ydCA8cGFsL3Nw
aS9jb2NvYS9OU0tleWVkQXJjaGl2ZXJTUEkuaD4KICNpbXBvcnQgPHN5cy9wYXJhbS5oPgorI2lt
cG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0Zi9Qcm9jZXNzUHJpdmlsZWdlLmg+
CiAjaW1wb3J0IDx3dGYvY29jb2EvRW50aXRsZW1lbnRzLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2Rh
cndpbi9keWxkU1BJLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJ
bXBsLm1tCmluZGV4IDA2NGUwZGZkOTBmZjZiYjlkZGMzYWI0NDJlYzhjZGE2OWFhMmQ5NmQuLjE2
MDk1YThiZDE1NjQ4ODQ5YzZhZWIxMzExNjVlNjM3NGZlMGU4YmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCkBAIC04NCw3ICs4NCw2IEBACiAjaW1w
b3J0IDxXZWJDb3JlL0RyYWdEYXRhLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RyYWdJdGVtLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0VkaXRvci5oPgotI2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0ZvbnRBdHRyaWJ1dGVDaGFuZ2VzLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0ZvbnRBdHRyaWJ1dGVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0tleXByZXNzQ29tbWFuZC5o
PgpAQCAtMTE1LDYgKzExNCw3IEBACiAjaW1wb3J0IDxwYWwvc3BpL21hYy9OU1ZpZXdTUEkuaD4K
ICNpbXBvcnQgPHBhbC9zcGkvbWFjL05TV2luZG93U1BJLmg+CiAjaW1wb3J0IDxzeXMvc3RhdC5o
PgorI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3ll
ZC5oPgogI2ltcG9ydCA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KICNpbXBvcnQgPHd0Zi9TZXRG
b3JTY29wZS5oPgpAQCAtMzk2OSw3ICszOTY5LDcgQEAgYm9vbCBXZWJWaWV3SW1wbDo6cGVyZm9y
bURyYWdPcGVyYXRpb24oaWQgPE5TRHJhZ2dpbmdJbmZvPiBkcmFnZ2luZ0luZm8pCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAotICAgICAgICBOU1N0cmluZyAqZHJvcERl
c3RpbmF0aW9uUGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVj
dG9yeShAIldlYktpdERyb3BEZXN0aW5hdGlvbiIpOworICAgICAgICBOU1N0cmluZyAqZHJvcERl
c3RpbmF0aW9uUGF0aCA9IEZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShAIldl
YktpdERyb3BEZXN0aW5hdGlvbiIpOwogICAgICAgICBpZiAoIWRyb3BEZXN0aW5hdGlvblBhdGgp
IHsKICAgICAgICAgICAgIGRlbGV0ZSBkcmFnRGF0YTsKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTQyOTEsNyArNDI5MSw3IEBAIE5TQXJyYXkgKldlYlZpZXdJbXBsOjpuYW1lc09mUHJv
bWlzZWRGaWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9uKE5TVVJMICpkcm9wRGVzdGluCiAgICAgICAg
IExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBpbWFnZSBmaWxlIHZpYSAtW05TRmlsZVdyYXBw
ZXIgd3JpdGVUb1VSTDpvcHRpb25zOm9yaWdpbmFsQ29udGVudHNVUkw6ZXJyb3I6XSIpOwogCiAg
ICAgaWYgKCFtX3Byb21pc2VkVVJMLmlzRW1wdHkoKSkKLSAgICAgICAgV2ViQ29yZTo6RmlsZVN5
c3RlbTo6c2V0TWV0YWRhdGFVUkwoU3RyaW5nKHBhdGgpLCBtX3Byb21pc2VkVVJMKTsKKyAgICAg
ICAgRmlsZVN5c3RlbTo6c2V0TWV0YWRhdGFVUkwoU3RyaW5nKHBhdGgpLCBtX3Byb21pc2VkVVJM
KTsKICAgICAKICAgICByZXR1cm4gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0OltwYXRoIGxhc3RQ
YXRoQ29tcG9uZW50XV07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9E
ZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EZXZp
Y2VJZEhhc2hTYWx0U3RvcmFnZS5jcHAKaW5kZXggZTYwZWUzZjRmOTRiMDMyZDM5OWI3YTM3N2E3
ZThmOWNjYTIzNzUxZC4uMTlhN2ExMmNmYTNmMzFiZjFlMjEzN2MzNWNkNTdkMGE1MDdiOWE5ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0b3Jh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9y
YWdlLmNwcApAQCAtMjgsOSArMjgsOSBAQAogCiAjaW5jbHVkZSAiUGVyc2lzdGVuY3lVdGlscy5o
IgogCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
aGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1i
ZXIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9IZXhOdW1i
ZXIuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0J1aWxkZXIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fk
cy9Eb3dubG9hZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9E
b3dubG9hZFByb3h5LmNwcAppbmRleCA3NTEwMmVlM2IwMDQyNGE0ODA5NDE1ZjM2YjA0ZWQzYjUz
Y2FkMTQ4Li5lMDkyNTRiMDE4NzI0OWM5OTJmYzJmY2Q3Mjg4OGU3ODRiMTkzMzkxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3Bw
CkBAIC0zNiw4ICszNiw4IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5j
bHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNsdWRlICJXZWJQcm90ZWN0aW9uU3BhY2UuaCIK
LSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL01JTUVU
eXBlUmVnaXN0cnkuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9CdWJibGV3cmFw
TGF1bmNoZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9CdWJi
bGV3cmFwTGF1bmNoZXIuY3BwCmluZGV4IGU0MzRlMDMzMzk4N2E5Mjc0OWMwMGRkYzViNTMzNjA5
MDRkZWYxYmUuLjE2NzIzZGZkZGE0ZmFkYmI5MmFhN2VhMGE4ZTZhZTU4ODRmMmQwNjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvQnViYmxld3JhcExh
dW5jaGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9nbGliL0J1
YmJsZXdyYXBMYXVuY2hlci5jcHAKQEAgLTIwLDEyICsyMCwxMiBAQAogCiAjaWYgRU5BQkxFKEJV
QkJMRVdSQVBfU0FOREJPWCkKIAotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1EaXNwbGF5Lmg+CiAjaW5jbHVkZSA8ZmNudGwuaD4KICNp
bmNsdWRlIDxnbGliLmg+CiAjaW5jbHVkZSA8c2VjY29tcC5oPgogI2luY2x1ZGUgPHN5cy9pb2N0
bC5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR0xp
YlV0aWxpdGllcy5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KICNpbmNsdWRlIDx3
dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9MYXVuY2hlci9nbGliL1Byb2Nlc3NMYXVuY2hlckdMaWIuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9Qcm9jZXNzTGF1bmNoZXJHTGliLmNwcAppbmRleCBjNTY2
MTg3M2EwNWU3MTA5YjUxN2VhNzViZGZhYmNjZDhmMjNmYjg2Li4wYzM5MDczZmUxZGU3YWRhZjUz
MTI2ODNkODE2NDYyZjY0ZDNlYzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9MYXVuY2hlci9nbGliL1Byb2Nlc3NMYXVuY2hlckdMaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvUHJvY2Vzc0xhdW5jaGVyR0xpYi5jcHAKQEAgLTMx
LDEwICszMSwxMCBAQAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJGbGF0cGFr
TGF1bmNoZXIuaCIKICNpbmNsdWRlICJQcm9jZXNzRXhlY3V0YWJsZVBhdGguaCIKLSNpbmNsdWRl
IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxlcnJuby5oPgogI2luY2x1ZGUgPGZj
bnRsLmg+CiAjaW5jbHVkZSA8Z2xpYi5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAj
aW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYvVW5pU3RkRXh0cmFzLmg+CiAj
aW5jbHVkZSA8d3RmL2dsaWIvR0xpYlV0aWxpdGllcy5oPgpAQCAtNDcsNyArNDcsNiBAQAogI2Vu
ZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQgewotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHN0
YXRpYyB2b2lkIGNoaWxkU2V0dXBGdW5jdGlvbihncG9pbnRlciB1c2VyRGF0YSkKIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1BsdWdpbkluZm9DYWNo
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL2d0ay9QbHVnaW5JbmZvQ2Fj
aGUuY3BwCmluZGV4IDgwNjQ3ZWIxMmVlNTI1MTFhMTE5ZTg1ZmRlMmY1OWM0ZTIzNzc4ODUuLmEy
OGEwMGEzODZjYWZlY2IzNzgyYTQxMTAzN2NhOWE1MzVkYzIyMDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1BsdWdpbkluZm9DYWNoZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9ndGsvUGx1Z2luSW5mb0NhY2hlLmNwcApA
QCAtMjksOCArMjksOCBAQAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogCiAjaW5j
bHVkZSAiTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0
ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtRGlzcGxheS5oPgorI2luY2x1ZGUgPHd0
Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKQEAgLTY2LDEwICs2NiwxMCBAQCBQbHVnaW5JbmZvQ2FjaGU6OlBsdWdpbklu
Zm9DYWNoZSgpCiAgICAgbV9zYXZlVG9GaWxlSWRsZS5zZXRQcmlvcml0eShHX1BSSU9SSVRZX0RF
RkFVTFRfSURMRSk7CiAKICAgICBHVW5pcXVlUHRyPGNoYXI+IGNhY2hlRGlyZWN0b3J5KGdfYnVp
bGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9jYWNoZV9kaXIoKSwgIndlYmtpdGd0ayIsIG51bGxwdHIp
KTsKLSAgICBpZiAoV2ViQ29yZTo6RmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKGNhY2hl
RGlyZWN0b3J5LmdldCgpKSkgeworICAgIGlmIChGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3Jp
ZXMoY2FjaGVEaXJlY3RvcnkuZ2V0KCkpKSB7CiAgICAgICAgIC8vIERlbGV0ZSBvbGQgY2FjaGUg
ZmlsZS4KICAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBvbGRDYWNoZVBhdGgoZ19idWlsZF9maWxl
bmFtZShjYWNoZURpcmVjdG9yeS5nZXQoKSwgInBsdWdpbnMiLCBudWxscHRyKSk7Ci0gICAgICAg
IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3Ry
aW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihvbGRDYWNoZVBhdGguZ2V0KCkpKTsKKyAg
ICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKG9sZENhY2hlUGF0aC5nZXQoKSkpOwogCiAgICAgICAgIG1fY2Fj
aGVQYXRoLnJlc2V0KGdfYnVpbGRfZmlsZW5hbWUoY2FjaGVEaXJlY3RvcnkuZ2V0KCksIGNhY2hl
RmlsZW5hbWVGb3JDdXJyZW50RGlzcGxheSgpLCBudWxscHRyKSk7CiAgICAgICAgIGdfa2V5X2Zp
bGVfbG9hZF9mcm9tX2ZpbGUobV9jYWNoZUZpbGUuZ2V0KCksIG1fY2FjaGVQYXRoLmdldCgpLCBH
X0tFWV9GSUxFX05PTkUsIG51bGxwdHIpOwpAQCAtMTEyLDcgKzExMiw3IEBAIGJvb2wgUGx1Z2lu
SW5mb0NhY2hlOjpnZXRQbHVnaW5JbmZvKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgUGx1Z2lu
TW9kdWxlSW5mbyYKICAgICBpZiAoIWdfa2V5X2ZpbGVfaGFzX2dyb3VwKG1fY2FjaGVGaWxlLmdl
dCgpLCBwbHVnaW5Hcm91cC5kYXRhKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBh
dXRvIGxhc3RNb2RpZmllZFRpbWUgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZp
Y2F0aW9uVGltZShwbHVnaW5QYXRoKTsKKyAgICBhdXRvIGxhc3RNb2RpZmllZFRpbWUgPSBGaWxl
U3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShwbHVnaW5QYXRoKTsKICAgICBpZiAoIWxh
c3RNb2RpZmllZFRpbWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB0aW1lX3QgY2FjaGVk
TGFzdE1vZGlmaWVkID0gc3RhdGljX2Nhc3Q8dGltZV90PihnX2tleV9maWxlX2dldF91aW50NjQo
bV9jYWNoZUZpbGUuZ2V0KCksIHBsdWdpbkdyb3VwLmRhdGEoKSwgIm10aW1lIiwgbnVsbHB0cikp
OwpAQCAtMTIwLDcgKzEyMCw3IEBAIGJvb2wgUGx1Z2luSW5mb0NhY2hlOjpnZXRQbHVnaW5JbmZv
KGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgUGx1Z2luTW9kdWxlSW5mbyYKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgcGx1Z2luLnBhdGggPSBwbHVnaW5QYXRoOwotICAgIHBsdWdpbi5p
bmZvLmZpbGUgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUocGx1Z2luUGF0
aCk7CisgICAgcGx1Z2luLmluZm8uZmlsZSA9IEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShw
bHVnaW5QYXRoKTsKIAogICAgIEdVbmlxdWVQdHI8Y2hhcj4gc3RyaW5nVmFsdWUoZ19rZXlfZmls
ZV9nZXRfc3RyaW5nKG1fY2FjaGVGaWxlLmdldCgpLCBwbHVnaW5Hcm91cC5kYXRhKCksICJuYW1l
IiwgbnVsbHB0cikpOwogICAgIHBsdWdpbi5pbmZvLm5hbWUgPSBTdHJpbmc6OmZyb21VVEY4KHN0
cmluZ1ZhbHVlLmdldCgpKTsKQEAgLTE0MCw3ICsxNDAsNyBAQCBib29sIFBsdWdpbkluZm9DYWNo
ZTo6Z2V0UGx1Z2luSW5mbyhjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIFBsdWdpbk1vZHVsZUlu
Zm8mCiAKIHZvaWQgUGx1Z2luSW5mb0NhY2hlOjp1cGRhdGVQbHVnaW5JbmZvKGNvbnN0IFN0cmlu
ZyYgcGx1Z2luUGF0aCwgY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYgcGx1Z2luKQogewotICAgIGF1
dG8gbGFzdE1vZGlmaWVkVGltZSA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmlj
YXRpb25UaW1lKHBsdWdpblBhdGgpOworICAgIGF1dG8gbGFzdE1vZGlmaWVkVGltZSA9IEZpbGVT
eXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKHBsdWdpblBhdGgpOwogICAgIGlmICghbGFz
dE1vZGlmaWVkVGltZSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5Qcm9jZXNzUHJveHlNYWMubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5Qcm9jZXNzUHJveHlNYWMubW0K
aW5kZXggODlmYWI1ZWNiNjY2ZDJiNDRmY2MyMjM5ZWJlNWJhNWVlMWFjNjNkOC4uMzYzM2MyYWIw
NzA2MDExZWJkN2JjMTNmMWEwYmZkYTVhZDZkZDliYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2luUHJvY2Vzc1Byb3h5TWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvbWFjL1BsdWdpblByb2Nlc3NQcm94eU1hYy5t
bQpAQCAtMzMsMTEgKzMzLDExIEBACiAjaW1wb3J0ICJQbHVnaW5Qcm9jZXNzTWVzc2FnZXMuaCIK
ICNpbXBvcnQgIlNhbmRib3hVdGlsaXRpZXMuaCIKICNpbXBvcnQgPFF1YXJ0ekNvcmUvQ0FSZW1v
dGVMYXllclNlcnZlci5oPgotI2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0
IDxjcnRfZXh0ZXJucy5oPgogI2ltcG9ydCA8bWFjaC1vL2R5bGQuaD4KICNpbXBvcnQgPHBhbC9z
cGkvY2YvQ0ZOZXR3b3JrU1BJLmg+CiAjaW1wb3J0IDxzcGF3bi5oPgorI2ltcG9ydCA8d3RmL0Zp
bGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0Zi9Qcm9jZXNzUHJpdmlsZWdlLmg+CiAjaW1wb3J0IDx3
dGYvVVJMLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC01Nyw4ICs1Nyw2IEBA
IC0gKEJPT0wpX3dhbnRzVXNlckF0dGVudGlvbgogQGVuZAogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
LXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCiAgICAgCiB2b2lkIFBsdWdpblByb2Nlc3NQcm94
eTo6cGxhdGZvcm1HZXRMYXVuY2hPcHRpb25zV2l0aEF0dHJpYnV0ZXMoUHJvY2Vzc0xhdW5jaGVy
OjpMYXVuY2hPcHRpb25zJiBsYXVuY2hPcHRpb25zLCBjb25zdCBQbHVnaW5Qcm9jZXNzQXR0cmli
dXRlcyYgcGx1Z2luUHJvY2Vzc0F0dHJpYnV0ZXMpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luSW5mb1N0b3JlVW5peC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luSW5mb1N0b3JlVW5peC5jcHAK
aW5kZXggMWRmZDgwN2MxMjM5YzMwNzllZjkyNDA3NDUwYjg5ZWM5MTE5Y2YwYy4uYWEwOTQ3MzY4
MTY1NGE5ZWY2NDQwNmIyYzY0MzkwM2Y3ZTAxMjYzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpbkluZm9TdG9yZVVuaXguY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5JbmZvU3RvcmVVbml4LmNw
cApAQCAtMzQsMTAgKzM0LDEwIEBACiAjaW5jbHVkZSAiTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaCIK
ICNpbmNsdWRlICJQbHVnaW5TZWFyY2hQYXRoLmgiCiAjaW5jbHVkZSAiUHJvY2Vzc0V4ZWN1dGFi
bGVQYXRoLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9QbGF0Zm9ybURpc3BsYXkuaD4KICNpbmNsdWRlIDxsaW1pdHMuaD4KICNpbmNsdWRlIDxz
dGRsaWIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiAjaWYgUExBVEZPUk0oR1RL
KQogI2luY2x1ZGUgIlBsdWdpbkluZm9DYWNoZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpblByb2Nlc3NQcm94eVVuaXgu
Y3BwCmluZGV4IGY4OTYxMjE3MGQwMTExNjA0MzJlZWVlYTNkOWI4OGEzNTM4YjcxMjIuLmM1MDBj
MGZjZWE2Mjc4ODZiYWRkZGMzZmM5NTBjNmM0ZWEzOGJjMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJveHlVbml4LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1By
b3h5VW5peC5jcHAKQEAgLTMyLDkgKzMyLDkgQEAKIAogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJQcm9jZXNzRXhlY3V0YWJsZVBhdGguaCIK
LSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRm
b3JtRGlzcGxheS5oPgogI2luY2x1ZGUgPHN5cy93YWl0Lmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVT
eXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Nl
cnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2Vy
dmljZVdvcmtlclByb2Nlc3NQcm94eS5jcHAKaW5kZXggNzI2ODgzYjNjZjgwZjQ4ZjJkYmZhNTYz
ZmM5YmY3YzU1ZDU3MDA2Zi4uNWJjZGE2M2E4NmIwZTFmOGU5NjQ2MTk0MzA5OTI2Y2JhNTFmMmQx
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nl
c3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclBy
b2Nlc3NQcm94eS5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgU2VydmljZVdvcmtlclByb2Nlc3NQcm94
eTo6flNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkoKQogYm9vbCBTZXJ2aWNlV29ya2VyUHJvY2Vz
c1Byb3h5OjpoYXNSZWdpc3RlcmVkU2VydmljZVdvcmtlcnMoY29uc3QgU3RyaW5nJiBzZXJ2aWNl
V29ya2VyRGlyZWN0b3J5KQogewogICAgIFN0cmluZyByZWdpc3RyYXRpb25GaWxlID0gV2ViQ29y
ZTo6c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGFiYXNlRmlsZW5hbWUoc2VydmljZVdvcmtl
ckRpcmVjdG9yeSk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVFeGlzdHMo
cmVnaXN0cmF0aW9uRmlsZSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMocmVn
aXN0cmF0aW9uRmlsZSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eTo6Z2V0
TGF1bmNoT3B0aW9ucyhQcm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMmIGxhdW5jaE9wdGlv
bnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2Fs
U3RvcmFnZURhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlN0b3JhZ2Uv
TG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwCmluZGV4IDBjMjVkNjU3ZTk3NzZhNzQ3NGQyMDU1ZmRm
NTQ4NzJhMDBkOGVkZGIuLjQ2ZmI2Yzc3Mjk0ZjNjNjMxZDRmZmZkZmMyNGExNDhmNzA4YTQ0Y2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9y
YWdlRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlN0b3JhZ2Uv
TG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwCkBAIC0yNywxMiArMjcsMTIgQEAKICNpbmNsdWRlICJM
b2NhbFN0b3JhZ2VEYXRhYmFzZS5oIgogCiAjaW5jbHVkZSAiTG9jYWxTdG9yYWdlRGF0YWJhc2VU
cmFja2VyLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9TUUxpdGVTdGF0ZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZVRyYW5zYWN0
aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvU3RvcmFnZU1hcC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3VkZGVuVGVybWluYXRpb24u
aD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFz
aC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2Nh
bFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
U3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3BwCmluZGV4IGFmZmQ3ZThhY2Fl
MmRlY2I1Yzg0NGU4NzNiNTZmN2QxNTNkMGFjOTYuLmMzNzgxZGY2NzY5MDBjNjk0YmUxNGJmZTZh
ZTM2NDliYzE4ODkwYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlN0
b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5jcHAKQEAg
LTI3LDEwICsyNywxMCBAQAogI2luY2x1ZGUgIkxvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5o
IgogCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvU1FMaXRlU3RhdGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0RW5jb2RpbmcuaD4K
KyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+
CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJz
aXRlRGF0YVN0b3JlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KaW5kZXggNDI3YTljODVhM2I5ODQ1YWU0
Zjc1NGZiNGM3YTM5MjYzYzhjMTdjOS4uNjE5MDA1MDAwNThkNWE4ZTA3NDhjYjM2MmMxZjc2YjQ0
NTRlMmIyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQpAQCAtMzAsMTAg
KzMwLDEwIEBACiAjaW1wb3J0ICJTdG9yYWdlTWFuYWdlci5oIgogI2ltcG9ydCAiV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCiAjaW1wb3J0ICJXZWJzaXRlRGF0YVN0b3JlUGFyYW1l
dGVycy5oIgotI2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZWFyY2hQb3B1
cE1lbnVDb2NvYS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4KKyNpbXBv
cnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNp
bXBvcnQgPHd0Zi9Qcm9jZXNzUHJpdmlsZWdlLmg+CiAKQEAgLTEyMSw3ICsxMjEsNyBAQCBXZWJz
aXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0ZXJzKCkKICAg
ICBwYXJhbWV0ZXJzLnBlbmRpbmdDb29raWVzID0gY29weVRvVmVjdG9yKG1fcGVuZGluZ0Nvb2tp
ZXMpOwogCiAgICAgaWYgKCFjb29raWVGaWxlLmlzRW1wdHkoKSkKLSAgICAgICAgU2FuZGJveEV4
dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KFdlYkNvcmU6OkZpbGVT
eXN0ZW06OmRpcmVjdG9yeU5hbWUoY29va2llRmlsZSksIHBhcmFtZXRlcnMuY29va2llU3RvcmFn
ZVBhdGhFeHRlbnNpb25IYW5kbGUpOworICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVI
YW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkoRmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShjb29r
aWVGaWxlKSwgcGFyYW1ldGVycy5jb29raWVTdG9yYWdlUGF0aEV4dGVuc2lvbkhhbmRsZSk7CiAK
ICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICBwYXJhbWV0ZXJzLmluZGV4ZWREYXRh
YmFzZURpcmVjdG9yeSA9IHJlc29sdmVkSW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmUuY3BwCmluZGV4IGIxOGZjZTc5MDZmOGUyYmI4YzViZDI0NjQ0NjA2MDhlNGNjZmVhZGQu
LjJhNTkwYzRiZDVlMTk4N2U1NWFlNjE0ODZkYWM4YWNmMzE3MzY2MmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
Y3BwCkBAIC00NCw3ICs0NCw2IEBACiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRl
cnMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9EYXRhYmFzZVRyYWNrZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVT
eXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxNZWRpYUVsZW1lbnQuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL09yaWdpbkxvY2suaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2lu
Lmg+CkBAIC01Miw2ICs1MSw3IEBACiAjaW5jbHVkZSA8d3RmL0NhbGxiYWNrQWdncmVnYXRvci5o
PgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9Dcm9z
c1RocmVhZENvcGllci5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8
d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogCkBAIC0x
OTMsOCArMTkzLDggQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZXNvbHZlRGlyZWN0b3JpZXNJ
Zk5lY2Vzc2FyeSgpCiAKICAgICAvLyBSZXNvbHZlIGRpcmVjdG9yaWVzIGZvciBmaWxlIHBhdGhz
LgogICAgIGlmICghbV9jb25maWd1cmF0aW9uLT5jb29raWVTdG9yYWdlRmlsZSgpLmlzRW1wdHko
KSkgewotICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+c2V0Q29va2llU3RvcmFnZUZp
bGUocmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24o
V2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShtX2NvbmZpZ3VyYXRpb24tPmNvb2tp
ZVN0b3JhZ2VGaWxlKCkpKSk7Ci0gICAgICAgIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5zZXRD
b29raWVTdG9yYWdlRmlsZShXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQobV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPmNvb2tpZVN0b3JhZ2VGaWxlKCksIFdlYkNv
cmU6OkZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShtX2NvbmZpZ3VyYXRpb24tPmNvb2tpZVN0
b3JhZ2VGaWxlKCkpKSk7CisgICAgICAgIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5zZXRDb29r
aWVTdG9yYWdlRmlsZShyZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJv
eEV4dGVuc2lvbihGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKG1fY29uZmlndXJhdGlvbi0+Y29v
a2llU3RvcmFnZUZpbGUoKSkpKTsKKyAgICAgICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPnNl
dENvb2tpZVN0b3JhZ2VGaWxlKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCht
X3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+Y29va2llU3RvcmFnZUZpbGUoKSwgRmlsZVN5c3RlbTo6
cGF0aEdldEZpbGVOYW1lKG1fY29uZmlndXJhdGlvbi0+Y29va2llU3RvcmFnZUZpbGUoKSkpKTsK
ICAgICB9CiB9CiAKQEAgLTIyNjUsNyArMjI2NSw3IEBAIFZlY3RvcjxQbHVnaW5Nb2R1bGVJbmZv
PiBXZWJzaXRlRGF0YVN0b3JlOjpwbHVnaW5zKCkgY29uc3QKIAogc3RhdGljIFN0cmluZyBjb21w
dXRlTWVkaWFLZXlGaWxlKGNvbnN0IFN0cmluZyYgbWVkaWFLZXlEaXJlY3RvcnkpCiB7Ci0gICAg
cmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtZWRp
YUtleURpcmVjdG9yeSwgIlNlY3VyZVN0b3AucGxpc3QiKTsKKyAgICByZXR1cm4gRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1lZGlhS2V5RGlyZWN0b3J5LCAiU2VjdXJlU3Rv
cC5wbGlzdCIpOwogfQogCiBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBXZWJz
aXRlRGF0YVN0b3JlOjptZWRpYUtleU9yaWdpbnMoY29uc3QgU3RyaW5nJiBtZWRpYUtleXNTdG9y
YWdlRGlyZWN0b3J5KQpAQCAtMjI3NCwxMiArMjI3NCwxMiBAQCBWZWN0b3I8V2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhPiBXZWJzaXRlRGF0YVN0b3JlOjptZWRpYUtleU9yaWdpbnMoY29uc3Qg
U3RyaQogCiAgICAgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gb3JpZ2luczsK
IAotICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2luUGF0aCA6IFdlYkNvcmU6OkZpbGVTeXN0ZW06
Omxpc3REaXJlY3RvcnkobWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSwgIioiKSkgeworICAgIGZv
ciAoY29uc3QgYXV0byYgb3JpZ2luUGF0aCA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobWVk
aWFLZXlzU3RvcmFnZURpcmVjdG9yeSwgIioiKSkgewogICAgICAgICBhdXRvIG1lZGlhS2V5Rmls
ZSA9IGNvbXB1dGVNZWRpYUtleUZpbGUob3JpZ2luUGF0aCk7Ci0gICAgICAgIGlmICghV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhtZWRpYUtleUZpbGUpKQorICAgICAgICBpZiAoIUZp
bGVTeXN0ZW06OmZpbGVFeGlzdHMobWVkaWFLZXlGaWxlKSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwogCi0gICAgICAgIGF1dG8gbWVkaWFLZXlJZGVudGlmaWVyID0gV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6cGF0aEdldEZpbGVOYW1lKG9yaWdpblBhdGgpOworICAgICAgICBhdXRvIG1lZGlhS2V5SWRl
bnRpZmllciA9IEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShvcmlnaW5QYXRoKTsKIAogICAg
ICAgICBpZiAoYXV0byBzZWN1cml0eU9yaWdpbiA9IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmllcihtZWRpYUtleUlkZW50aWZpZXIpKQogICAgICAgICAg
ICAgb3JpZ2lucy5hcHBlbmQoKnNlY3VyaXR5T3JpZ2luKTsKQEAgLTIyOTIsMTggKzIyOTIsMTgg
QEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVNZWRpYUtleXMoY29uc3QgU3RyaW5nJiBt
ZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5LAogewogICAgIEFTU0VSVCghbWVkaWFLZXlzU3RvcmFn
ZURpcmVjdG9yeS5pc0VtcHR5KCkpOwogCi0gICAgZm9yIChjb25zdCBhdXRvJiBtZWRpYUtleURp
cmVjdG9yeSA6IFdlYkNvcmU6OkZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobWVkaWFLZXlzU3Rv
cmFnZURpcmVjdG9yeSwgIioiKSkgeworICAgIGZvciAoY29uc3QgYXV0byYgbWVkaWFLZXlEaXJl
Y3RvcnkgOiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rv
cnksICIqIikpIHsKICAgICAgICAgYXV0byBtZWRpYUtleUZpbGUgPSBjb21wdXRlTWVkaWFLZXlG
aWxlKG1lZGlhS2V5RGlyZWN0b3J5KTsKIAotICAgICAgICBhdXRvIG1vZGlmaWNhdGlvblRpbWUg
PSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShtZWRpYUtleUZp
bGUpOworICAgICAgICBhdXRvIG1vZGlmaWNhdGlvblRpbWUgPSBGaWxlU3lzdGVtOjpnZXRGaWxl
TW9kaWZpY2F0aW9uVGltZShtZWRpYUtleUZpbGUpOwogICAgICAgICBpZiAoIW1vZGlmaWNhdGlv
blRpbWUpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBpZiAobW9kaWZpY2F0aW9u
VGltZS52YWx1ZSgpIDwgbW9kaWZpZWRTaW5jZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0g
ICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobWVkaWFLZXlGaWxlKTsKLSAg
ICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkobWVkaWFLZXlE
aXJlY3RvcnkpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1lZGlhS2V5RmlsZSk7
CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KG1lZGlhS2V5RGlyZWN0
b3J5KTsKICAgICB9CiB9CiAKQEAgLTIzMTIsMTEgKzIzMTIsMTEgQEAgdm9pZCBXZWJzaXRlRGF0
YVN0b3JlOjpyZW1vdmVNZWRpYUtleXMoY29uc3QgU3RyaW5nJiBtZWRpYUtleXNTdG9yYWdlRGly
ZWN0b3J5LAogICAgIEFTU0VSVCghbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkp
OwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBvcmlnaW4gOiBvcmlnaW5zKSB7Ci0gICAgICAgIGF1
dG8gbWVkaWFLZXlEaXJlY3RvcnkgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQobWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSwgb3JpZ2luLmRhdGFiYXNlSWRl
bnRpZmllcigpKTsKKyAgICAgICAgYXV0byBtZWRpYUtleURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5LCBvcmln
aW4uZGF0YWJhc2VJZGVudGlmaWVyKCkpOwogICAgICAgICBhdXRvIG1lZGlhS2V5RmlsZSA9IGNv
bXB1dGVNZWRpYUtleUZpbGUobWVkaWFLZXlEaXJlY3RvcnkpOwogCi0gICAgICAgIFdlYkNvcmU6
OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobWVkaWFLZXlGaWxlKTsKLSAgICAgICAgV2ViQ29yZTo6
RmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkobWVkaWFLZXlEaXJlY3RvcnkpOworICAg
ICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1lZGlhS2V5RmlsZSk7CisgICAgICAgIEZpbGVT
eXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KG1lZGlhS2V5RGlyZWN0b3J5KTsKICAgICB9CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1By
b3h5R0xpYi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQcm94
eUdMaWIuY3BwCmluZGV4IDhmNWZhMDNmZjQ2NTMyZjZiNTgyNTc5ZTk5YjAxN2IwNjU0MGFlYTUu
LjE2OWVhMjAxMjViMDMwNjM3ZmFmYzA3NDdjYTg2OTg1ODU0OTViOWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Byb3h5R0xpYi5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUHJveHlHTGliLmNwcApAQCAt
MzEsOCArMzEsOCBAQAogI2VuZGlmCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNs
dWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybURpc3BsYXkuaD4KKyNpbmNsdWRlIDx3dGYvRmls
ZVN5c3RlbS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYkluc3BlY3RvclBy
b3h5R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94
eUd0ay5jcHAKaW5kZXggY2ExODdhNjQyMzQxMTJlODU3OWJkODYxNjJkOWI4M2ZiNDI5YzgzYS4u
MTZiMDJhNDM1NzZlNTZmMWFlMjI2M2EwZGY0ZjA2NzMyMzRkYmUwNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwCkBAIC00
Miw5ICs0Miw5IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNsdWRlICJXZWJQ
cm9jZXNzUHJveHkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NlcnRpZmljYXRlSW5mby5oPgotI2lu
Y2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3RrVXRpbGl0
aWVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorI2luY2x1ZGUgPHd0
Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9ndGsvV2ViUHJvY2Vzc1Bvb2xHdGsuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Z3RrL1dlYlByb2Nlc3NQb29sR3RrLmNwcAppbmRleCA2MjQwNDE1ZjE1NzI3OWU0YmZjMGM1NmEy
Y2RhOGI2MjI1OTA2OWY2Li42YjIzNTc0MDRlMDNhZTMwMjFhZTg4MGI2M2E4Y2VjMGVlODZmMGY2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc1Bvb2xH
dGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQcm9jZXNzUG9vbEd0
ay5jcHAKQEAgLTM0LDEwICszNCwxMCBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9SZW1vdGVJbnNwZWN0b3JTZXJ2ZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3Jl
L0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dTdHJlYW1lckNvbW1vbi5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NjaGVt
ZVJlZ2lzdHJ5Lmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYv
Z2xpYi9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5tbQppbmRleCA2NjgxOGM2ZWFlODk3MWM3YTRjMGUyNjA1OTljMzU3ZmYxYTgzNmM4Li45
NjQ2NmEyZTNhY2U1YzAyOGUzMzA4ZWQ3ZDAxZTQzMjJlMzUzMzdiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0K
QEAgLTU2OTAsNyArNTY5MCw3IEBAIC0gKHZvaWQpX3ByZXBhcmVUb0RyYWdQcm9taXNlZEF0dGFj
aG1lbnQ6KGNvbnN0IFdlYkNvcmU6OlByb21pc2VkQXR0YWNobWVudEluZm8mCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBOU1N0cmluZyAqdGVtcG9yYXJ5QmxvYkRp
cmVjdG9yeSA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShA
ImJsb2JzIik7CisgICAgICAgIE5TU3RyaW5nICp0ZW1wb3JhcnlCbG9iRGlyZWN0b3J5ID0gRmls
ZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KEAiYmxvYnMiKTsKICAgICAgICAgTlNV
UkwgKmRlc3RpbmF0aW9uVVJMID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpbdGVtcG9yYXJ5Qmxv
YkRpcmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6W05TVVVJRCBVVUlEXS5V
VUlEU3RyaW5nXSBpc0RpcmVjdG9yeTpOT107CiAKICAgICAgICAgYXV0byBhdHRhY2htZW50ID0g
c3Ryb25nU2VsZi0+X3BhZ2UtPmF0dGFjaG1lbnRGb3JJZGVudGlmaWVyKGluZm8uYXR0YWNobWVu
dElkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zv
cm1zL1dLRmlsZVVwbG9hZFBhbmVsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zv
cm1zL1dLRmlsZVVwbG9hZFBhbmVsLm1tCmluZGV4IDY4MDE2NDZkMDhmOWQwOWZlM2U3Mzk4Mzg0
NTcyOWJlMjExZDVhYTYuLjg3NzExNGZjZjI2NmU5OTJhZWJkZDkwMzYwNDA2YTFkODk3NTFkZjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0ZpbGVVcGxv
YWRQYW5lbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGaWxl
VXBsb2FkUGFuZWwubW0KQEAgLTYyMCw3ICs2MjAsNyBAQCAtICh2b2lkKV91cGxvYWRJdGVtRm9y
SW1hZ2VEYXRhOihOU0RhdGEgKilpbWFnZURhdGEgaW1hZ2VOYW1lOihOU1N0cmluZyAqKWltYWdl
TgogICAgIE5TU3RyaW5nICogY29uc3Qga1RlbXBvcmFyeURpcmVjdG9yeU5hbWUgPSBAIldLV2Vi
RmlsZVVwbG9hZCI7CiAKICAgICAvLyBCdWlsZCB0ZW1wb3JhcnkgZmlsZSBwYXRoLgotICAgIE5T
U3RyaW5nICp0ZW1wb3JhcnlEaXJlY3RvcnkgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpjcmVhdGVU
ZW1wb3JhcnlEaXJlY3Rvcnkoa1RlbXBvcmFyeURpcmVjdG9yeU5hbWUpOworICAgIE5TU3RyaW5n
ICp0ZW1wb3JhcnlEaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpjcmVhdGVUZW1wb3JhcnlEaXJlY3Rv
cnkoa1RlbXBvcmFyeURpcmVjdG9yeU5hbWUpOwogICAgIE5TU3RyaW5nICpmaWxlUGF0aCA9IFt0
ZW1wb3JhcnlEaXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmltYWdlTmFt
ZV07CiAgICAgaWYgKCFmaWxlUGF0aCkgewogICAgICAgICBMT0dfRVJST1IoIldLRmlsZVVwbG9h
ZFBhbmVsOiBGYWlsZWQgdG8gY3JlYXRlIHRlbXBvcmFyeSBkaXJlY3RvcnkgdG8gc2F2ZSBpbWFn
ZSIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94
eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0K
aW5kZXggNjJiZTQxMGYyM2IwZTJjMzMwMzBiYjA5YzFlNjJmMWM4YjIwZTFjMC4uODMwMDRkNzBh
ODE3NzcxNjE4Mzg0ZDRkOGYyODE1Y2YyMTFhNzc2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCkBAIC00OTUsNyArNDk1LDcgQEAgc3RhdGlj
IE5TU3RyaW5nICpwYXRoVG9QREZPbkRpc2soY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFt
ZSkKIAogdm9pZCBXZWJQYWdlUHJveHk6OnNhdmVQREZUb1RlbXBvcmFyeUZvbGRlckFuZE9wZW5X
aXRoTmF0aXZlQXBwbGljYXRpb25SYXcoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwg
Y29uc3QgU3RyaW5nJiBvcmlnaW5hdGluZ1VSTFN0cmluZywgY29uc3QgdWludDhfdCogZGF0YSwg
dW5zaWduZWQgbG9uZyBzaXplLCBjb25zdCBTdHJpbmcmIHBkZlVVSUQpCiB7Ci0gICAgLy8gRklY
TUU6IFdyaXRlIG9yaWdpbmF0aW5nVVJMU3RyaW5nIHRvIHRoZSBmaWxlJ3Mgb3JpZ2luYXRpbmcg
VVJMIG1ldGFkYXRhIChwZXJoYXBzIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnNldE1ldGFkYXRhVVJM
KCk/KS4KKyAgICAvLyBGSVhNRTogV3JpdGUgb3JpZ2luYXRpbmdVUkxTdHJpbmcgdG8gdGhlIGZp
bGUncyBvcmlnaW5hdGluZyBVUkwgbWV0YWRhdGEgKHBlcmhhcHMgRmlsZVN5c3RlbTo6c2V0TWV0
YWRhdGFVUkwoKT8pLgogICAgIFVOVVNFRF9QQVJBTShvcmlnaW5hdGluZ1VSTFN0cmluZyk7CiAK
ICAgICBpZiAoIXN1Z2dlc3RlZEZpbGVuYW1lLmVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoIi5w
ZGYiKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlByb2Nl
c3NQb29sV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJQcm9jZXNzUG9v
bFdpbi5jcHAKaW5kZXggMTAxNWZmMDYwNmNmNGJiNGNmNTYyYTA3ODkyODg3MzM2NTZmOWVkNi4u
MzkwYTBjOTAxOTIxOTQzM2M1ZmE0OWQzZTM4NDRhMWI4MzU1MjhjYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlByb2Nlc3NQb29sV2luLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1Bvb2xXaW4uY3BwCkBAIC0yOCw4ICsy
OCw4IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKIAogI2luY2x1ZGUgIldlYlByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVT
eXN0ZW0uaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dp
bi9XZWJWaWV3LmNwcAppbmRleCBlZjc5MTljNzIwZmU3MTdiNTkwOTE5YmI4NWI0NTgxODViYTUw
ZmIxLi4wZjlmOWQ0ZWZkNTI4NmM2MjY4NDNhYzNhMDRjZDJlNmJkOTQ5OWU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCkBAIC00NCw3ICs0NCw2IEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9CaXRtYXBJbmZvLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DdXJzb3IuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0VkaXRvci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IV25k
REMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KQEAgLTU1LDYgKzU0LDcgQEAKICNp
bmNsdWRlIDxXZWJDb3JlL1dpbmRvd3NUb3VjaC5oPgogI2luY2x1ZGUgPGNhaXJvLXdpbjMyLmg+
CiAjaW5jbHVkZSA8Y2Fpcm8uaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1
ZGUgPHd0Zi9Tb2Z0TGlua2luZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1ZmZlci5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL3dwZS9XZWJQcm9jZXNzUG9vbFdQRS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy93cGUvV2ViUHJvY2Vzc1Bvb2xXUEUuY3BwCmluZGV4IDYyNTVjNDI3Yjdh
MWJhNWNmZWVkMGNiMzdkZTVjMDJjMGJjY2U1ZDEuLmY1MTAxN2E4Y2EyOWVkMDc5OTRkN2QyMDdj
OTU3MTQxMTJhMzhiZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dwZS9X
ZWJQcm9jZXNzUG9vbFdQRS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd3BlL1dl
YlByb2Nlc3NQb29sV1BFLmNwcApAQCAtMzQsMTAgKzM0LDEwIEBACiAjaW5jbHVkZSAiV2ViQ29v
a2llTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgotI2luY2x1ZGUgPFdlYkNvcmUv
RmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1NjaGVtZVJlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8Y3N0ZGxpYj4KKyNpbmNs
dWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUmVtb3RlSW5zcGVjdG9yU2VydmVyLmg+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2Vi
S2l0RXh0ZW5zaW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0RXh0ZW5zaW9uTWFuYWdlci5jcHAKaW5kZXggYWFjMjgy
ODBjYTUyMGJmODM5NjViNzk0YzNlMzRmZWFmYzYxZWU3NS4uNGNjZWM2MmVmMGUxMTMxZmExM2Y3
ZmIwNjBjODBlMDdlZTQyNTFhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdEV4dGVuc2lvbk1hbmFnZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRF
eHRlbnNpb25NYW5hZ2VyLmNwcApAQCAtMjMsOCArMjMsOCBAQAogI2luY2x1ZGUgIkFQSVN0cmlu
Zy5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViRXh0
ZW5zaW9uUHJpdmF0ZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1
ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00MSw5ICs0MSw5IEBAIFdl
YktpdEV4dGVuc2lvbk1hbmFnZXI6OldlYktpdEV4dGVuc2lvbk1hbmFnZXIoKQogCiB2b2lkIFdl
YktpdEV4dGVuc2lvbk1hbmFnZXI6OnNjYW5Nb2R1bGVzKGNvbnN0IFN0cmluZyYgd2ViRXh0ZW5z
aW9uc0RpcmVjdG9yeSwgVmVjdG9yPFN0cmluZz4mIG1vZHVsZXMpCiB7Ci0gICAgVmVjdG9yPFN0
cmluZz4gbW9kdWxlUGF0aHMgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KHdl
YkV4dGVuc2lvbnNEaXJlY3RvcnksIFN0cmluZygiKi5zbyIpKTsKKyAgICBWZWN0b3I8U3RyaW5n
PiBtb2R1bGVQYXRocyA9IEZpbGVTeXN0ZW06Omxpc3REaXJlY3Rvcnkod2ViRXh0ZW5zaW9uc0Rp
cmVjdG9yeSwgU3RyaW5nKCIqLnNvIikpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbW9k
dWxlUGF0aHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKFdlYkNvcmU6OkZpbGVTeXN0ZW06
OmZpbGVFeGlzdHMobW9kdWxlUGF0aHNbaV0pKQorICAgICAgICBpZiAoRmlsZVN5c3RlbTo6Zmls
ZUV4aXN0cyhtb2R1bGVQYXRoc1tpXSkpCiAgICAgICAgICAgICBtb2R1bGVzLmFwcGVuZChtb2R1
bGVQYXRoc1tpXSk7CiAgICAgfQogfQpAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgdm9pZCBwYXJz
ZVVzZXJEYXRhKEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgU3RyaW5nJiB3ZWJFeHRlbnNpb25zRGly
ZWN0b3J5LAogICAgIEdWYXJpYW50KiBkYXRhID0gbnVsbHB0cjsKICAgICBnX3ZhcmlhbnRfZ2V0
KHZhcmlhbnQuZ2V0KCksICIobSZzbXYpIiwgJmRpcmVjdG9yeSwgJmRhdGEpOwogCi0gICAgd2Vi
RXh0ZW5zaW9uc0RpcmVjdG9yeSA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oZGlyZWN0b3J5KTsKKyAgICB3ZWJFeHRlbnNpb25zRGlyZWN0
b3J5ID0gRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihkaXJl
Y3RvcnkpOwogICAgIGluaXRpYWxpemF0aW9uVXNlckRhdGEgPSBhZG9wdEdSZWYoZGF0YSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9n
bGliL0luamVjdGVkQnVuZGxlR2xpYi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvZ2xpYi9JbmplY3RlZEJ1bmRsZUdsaWIuY3BwCmluZGV4IDBhODYwNjUyZjAw
ZGFkOTMyOGNmMzU1ZDQwNTEzZmU4MGY1ZWY2NTguLmVkOTY1OGNhMWY0NmE0Yzc3Y2M3MjYwMzMw
ZDE2MGFhZDI4ODI3NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9nbGliL0luamVjdGVkQnVuZGxlR2xpYi5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL2dsaWIvSW5qZWN0ZWRCdW5kbGVHbGliLmNwcApA
QCAtMjksMTEgKzI5LDEwIEBACiAKICNpbmNsdWRlICJXS0J1bmRsZUFQSUNhc3QuaCIKICNpbmNs
dWRlICJXS0J1bmRsZUluaXRpYWxpemUuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0u
aD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAog
Ym9vbCBJbmplY3RlZEJ1bmRsZTo6aW5pdGlhbGl6ZShjb25zdCBXZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzJiwgQVBJOjpPYmplY3QqIGluaXRpYWxpemF0aW9uVXNlckRhdGEpCiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0
b3JhZ2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dl
Yk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IDRiZjQ4ZDBlOTRlZWY3NjA2NmNhMzBl
YTljZjM1NzA0YWIzZGVhZWIuLmJkMzk4MjQyNmM2NmU2MzViNmM1NjA1Y2JlNWEzYjA1MDI1ZDNh
MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1l
ZGlhS2V5U3RvcmFnZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9N
ZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuY3BwCkBAIC0yNyw5ICsyNyw5IEBA
CiAjaW5jbHVkZSAiV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5oIgogCiAjaW5jbHVkZSAiV2Vi
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3Rl
bS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAj
aW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3Ry
ZWFtLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZVBsdWdpblN0cmVhbS5oCmluZGV4IGJiNmE1YjA4YzdjY2U1ZGRlZDg5OTM2MGY3YWI4MzQwZjAz
OTVlNzQuLjNlZGNlYzZhNzJjY2MzYWE2NGQ4MTlmYTkzMzdmNDNlNjJlN2Q3NmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1
Z2luU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uaApAQCAtMjcsOSArMjcsOSBAQAogCiAjaWYgRU5BQkxF
KE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL25wcnVudGltZV9pbnRlcm5hbC5oPgogI2luY2x1ZGUgPG1lbW9y
eT4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBA
IC04OSw3ICs4OSw3IEBAIHByaXZhdGU6CiAgICAgaW50MzJfdCBtX29mZnNldDsKIAogICAgIFN0
cmluZyBtX2ZpbGVQYXRoOwotICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhh
bmRsZSBtX2ZpbGVIYW5kbGU7CisgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIG1f
ZmlsZUhhbmRsZTsKICAgICAKICAgICAvLyBXaGV0aGVyIE5QUF9OZXdTdHJlYW0gaGFzIHN1Y2Nl
c3NmdWxseSBiZWVuIGNhbGxlZC4KICAgICBib29sIG1faXNTdGFydGVkOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24u
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb24uY3BwCmluZGV4IDAxYzUzZjNkODQzZGQxZDI0MzE0ZjVjYzBjMTJlOTA5NjRlZmJiZTQu
LjI2ZDZkNTAwZTY5YTAxOTNiMWRmNWY0MDNmMWYzZjE4YzJjOGVkNWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbi5jcHAKQEAgLTM2LDEwICszNiw5IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgog
I2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNPYmplY3QuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KKyNpbmNs
dWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKLXVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCiBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6UGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb24oUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKiBwbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbk1hbmFnZXIsIHVpbnQ2NF90IHBsdWdpblByb2Nlc3NUb2tlbiwgSVBDOjpDb25uZWN0
aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyLCBib29sIHN1cHBvcnRzQXN5bmNo
cm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb24pCiAgICAgOiBtX3BsdWdpblByb2Nlc3NDb25uZWN0
aW9uTWFuYWdlcihwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVy
c2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lv
blN0YXRlQ29udmVyc2lvbi5jcHAKaW5kZXggNjNjMzZhM2RiNjlhODJhZDNiZWE2NjBmNmIwNmRm
ZTc2M2M1NTYxNy4uMWQ4MTY2YTA3ZTNmZDk3ODgxY2I3ZjQ0ZjRhNmJlZmY4NWJiZmU1YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25T
dGF0ZUNvbnZlcnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcApAQCAtMjgsOSArMjgsOSBAQAogCiAj
aW5jbHVkZSAiU2Vzc2lvblN0YXRlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9CbG9iRGF0YS5oPgot
I2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRm9ybURh
dGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hpc3RvcnlJdGVtLmg+CisjaW5jbHVkZSA8d3RmL0Zp
bGVTeXN0ZW0uaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJJ
bnNwZWN0b3JVSUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsv
V2ViSW5zcGVjdG9yVUlHdGsuY3BwCmluZGV4IDg5YzNiYTFhYTg5MzljZmE1MWY2ZmIyMjFhNzNi
MzhkNzgwMzI3YTMuLmRiYjJhOTE4MDRiZTEzMjY0OGM5YWQzM2U2ZjAyN2JkZDNmMTEwZjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJJbnNwZWN0
b3JVSUd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dl
Ykluc3BlY3RvclVJR3RrLmNwcApAQCAtMjgsOCArMjgsOCBAQAogI2luY2x1ZGUgIldlYkluc3Bl
Y3RvclVJLmgiCiAjaW5jbHVkZSAiUmVtb3RlV2ViSW5zcGVjdG9yVUkuaCIKIAotI2luY2x1ZGUg
PFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPGdsaWIuaD4KKyNpbmNsdWRlIDx3dGYv
RmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L3dpbi9XZWJJbnNwZWN0b3JVSVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS93aW4vV2ViSW5zcGVjdG9yVUlXaW4uY3BwCmluZGV4IDZhN2FmM2M1ZDY0OWM1MDRlZWRh
ZDQ5YzkxYTFmYjQ0MzVlNGExOGMuLjQ3MTExNGNhZmExNGE3ZDFmMzNmZmEyYzFlOGFmYmJiZWQy
ZTAzYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9X
ZWJJbnNwZWN0b3JVSVdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2Uvd2luL1dlYkluc3BlY3RvclVJV2luLmNwcApAQCAtMjgsOCArMjgsOCBAQAogCiAjaW5jbHVk
ZSAiUmVtb3RlV2ViSW5zcGVjdG9yVUkuaCIKIAotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3Rl
bS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvV2ViQ29yZUJ1bmRsZVdpbi5oPgorI2luY2x1ZGUgPHd0
Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29h
L1dlYlByb2Nlc3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQ
cm9jZXNzQ29jb2EubW0KaW5kZXggYTQ0NjgxYzc3MjcxYzA0YTc5NmYwN2JiY2NhYzNiZWNjNDgx
Zjc1YS4uMzVkNTdkNWNlNjdiNjU4NzYwNzkzZGNjN2M0MDkxNjlmODU4MGFmNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCkBAIC01
MSw3ICs1MSw2IEBACiAjaW1wb3J0IDxXZWJDb3JlL0FYT2JqZWN0Q2FjaGUuaD4KICNpbXBvcnQg
PFdlYkNvcmUvQ1BVTW9uaXRvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9EaXNwbGF5UmVmcmVzaE1v
bml0b3JNYW5hZ2VyLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQg
PFdlYkNvcmUvRm9udENhY2hlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZvbnRDYXNjYWRlLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0hpc3RvcnlDb250cm9sbGVyLmg+CkBAIC03Miw2ICs3MSw3IEBACiAj
aW1wb3J0IDxwYWwvc3BpL21hYy9OU0FjY2Vzc2liaWxpdHlTUEkuaD4KICNpbXBvcnQgPHBhbC9z
cGkvbWFjL05TQXBwbGljYXRpb25TUEkuaD4KICNpbXBvcnQgPHN0ZGlvLmg+CisjaW1wb3J0IDx3
dGYvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CiAKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9T
dG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2Uv
U3RvcmFnZUFyZWFTeW5jLmNwcAppbmRleCA0MDM5OTYwYjE0MGZjYjljNjNhNzZkNmQwNzcxM2Ez
YTMxODJjNWE0Li4xN2Q0ODk0OTRkN2UwOTBkM2ZmNzM1ZWZmMjY0NDVlZmVjNmI5Mjk5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcApAQCAt
MjgsMTEgKzI4LDExIEBACiAjaW5jbHVkZSAiU3RvcmFnZUFyZWFJbXBsLmgiCiAjaW5jbHVkZSAi
U3RvcmFnZVN5bmNNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU3RvcmFnZVRyYWNrZXIuaCIKLSNpbmNs
dWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZURhdGFi
YXNlVHJhY2tlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlU3RhdGVtZW50Lmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9TUUxpdGVUcmFuc2FjdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3Vk
ZGVuVGVybWluYXRpb24uaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUg
PHd0Zi9NYWluVGhyZWFkLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmNwcAppbmRleCAz
ZThmZjY1ZWU2MGYyNzRkYzkwNGViNThjMTE3NGVkNWNjMWE1NzRjLi4zNjkwOTVjZGFkMWQzNDcx
MWEwNjc2ZDg3MzZhOTBlMTkzZTI5MDVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L1N0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L1N0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmNwcApAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1
ZGUgIlN0b3JhZ2VTeW5jTWFuYWdlci5oIgogCiAjaW5jbHVkZSAiU3RvcmFnZVRocmVhZC5oIgot
I2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVt
Lmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdl
VHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIu
Y3BwCmluZGV4IDcxMDE0MGIxYjEzM2EyZWI1OTM5NmQ3Njc0ODZkMjE4M2VjOTA0ODQuLmI5MzRk
MWEzYjFiYWE4MzFhZGRmM2FiZTVlMDc3MGFiMWNmNzdmYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcApAQCAtMjgsMTMgKzI4LDEzIEBACiAj
aW5jbHVkZSAiU3RvcmFnZVRocmVhZC5oIgogI2luY2x1ZGUgIlN0b3JhZ2VUcmFja2VyQ2xpZW50
LmgiCiAjaW5jbHVkZSAiV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmgiCi0jaW5jbHVkZSA8
V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlR3JvdXAuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1NRTGl0ZURhdGFiYXNlVHJhY2tlci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvU1FMaXRlU3RhdGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9UZXh0RW5jb2RpbmcuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1
ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L01pc2MvV2ViTlNGaWxlTWFuYWdlckV4dHJhcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L01pc2MvV2ViTlNGaWxlTWFuYWdlckV4dHJhcy5tbQppbmRleCA5MDUxNzRkYTc1NmRkNjI4YmVk
ZWZkNTBjMmIyMzcyOWU1MzM1MDJiLi5jNTQxM2U4MWM2YTNlY2IyZWM5NzgxZjZiOGJmZDZjMmIy
YTA1ZGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TRmls
ZU1hbmFnZXJFeHRyYXMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJO
U0ZpbGVNYW5hZ2VyRXh0cmFzLm1tCkBAIC0zMCwxMCArMzAsMTAgQEAKIAogI2ltcG9ydCAiV2Vi
S2l0TlNTdHJpbmdFeHRyYXMuaCIKICNpbXBvcnQgIldlYk5TVVJMRXh0cmFzLmgiCi0jaW1wb3J0
IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPFdlYkNvcmUvTG9hZGVyTlNVUkxFeHRy
YXMuaD4KICNpbXBvcnQgPHN5cy9zdGF0Lmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgor
I2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0Zi9PYmpDUnVudGltZUV4dHJh
cy5oPgogCiBAaW1wbGVtZW50YXRpb24gTlNGaWxlTWFuYWdlciAoV2ViTlNGaWxlTWFuYWdlckV4
dHJhcykKQEAgLTQ0LDcgKzQ0LDcgQEAgLSAodm9pZClfd2Via2l0X3NldE1ldGFkYXRhVVJMOihO
U1N0cmluZyAqKVVSTFN0cmluZyByZWZlcnJlcjooTlNTdHJpbmcgKilyZWZlcnIKIHsKICAgICBB
U1NFUlQoVVJMU3RyaW5nKTsKICAgICBBU1NFUlQocGF0aCk7Ci0gICAgV2ViQ29yZTo6RmlsZVN5
c3RlbTo6c2V0TWV0YWRhdGFVUkwocGF0aCwgVVJMU3RyaW5nLCByZWZlcnJlcik7CisgICAgRmls
ZVN5c3RlbTo6c2V0TWV0YWRhdGFVUkwocGF0aCwgVVJMU3RyaW5nLCByZWZlcnJlcik7CiB9CiAK
ICNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTkzLDcgKzkzLDcgQEAgLSAoTlNT
dHJpbmcgKilfd2Via2l0X3BhdGhXaXRoVW5pcXVlRmlsZW5hbWVGb3JQYXRoOihOU1N0cmluZyAq
KXBhdGgKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogLSAoTlNTdHJpbmcgKilfd2Via2l0X2Ny
ZWF0ZVRlbXBvcmFyeURpcmVjdG9yeVdpdGhUZW1wbGF0ZVByZWZpeDooTlNTdHJpbmcgKilwcmVm
aXgKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGly
ZWN0b3J5KHByZWZpeCk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURp
cmVjdG9yeShwcmVmaXgpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VQcm92aWRlci5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VQcm92aWRlci5tbQppbmRleCA3NDk1YjE3NWZm
ZjQ1ZGM1YTU0YjAxNGY4ZDViZjAzZTU0Mzk0M2NjLi5hZGM0YzM5ODg0YzRjYjJkMmEzYmViNmIx
OTViY2RhMDAwODljMTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9y
YWdlL1dlYkRhdGFiYXNlUHJvdmlkZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
U3RvcmFnZS9XZWJEYXRhYmFzZVByb3ZpZGVyLm1tCkBAIC0yNiwxNiArMjYsMTYgQEAKICNpbXBv
cnQgIldlYkRhdGFiYXNlUHJvdmlkZXIuaCIKICNpbXBvcnQgIldlYkRhdGFiYXNlTWFuYWdlclBy
aXZhdGUuaCIKIAotI2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CisjaW1wb3J0IDx3dGYv
RmlsZVN5c3RlbS5oPgogCiBTdHJpbmcgV2ViRGF0YWJhc2VQcm92aWRlcjo6aW5kZXhlZERhdGFi
YXNlRGlyZWN0b3J5UGF0aCgpCiB7CiAgICAgTlNVc2VyRGVmYXVsdHMgKmRlZmF1bHRzID0gW05T
VXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXTsKICAgICBOU1N0cmluZyAqZGF0YWJh
c2VzRGlyZWN0b3J5ID0gW2RlZmF1bHRzIG9iamVjdEZvcktleTpXZWJEYXRhYmFzZURpcmVjdG9y
eURlZmF1bHRzS2V5XTsKICAgICBpZiAoIWRhdGFiYXNlc0RpcmVjdG9yeSB8fCAhW2RhdGFiYXNl
c0RpcmVjdG9yeSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQotICAgICAgICBkYXRh
YmFzZXNEaXJlY3RvcnkgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQoIn4vTGlicmFyeS9XZWJLaXQvRGF0YWJhc2VzL19fX0luZGV4ZWREQiJfcywgW1tOU0J1
bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlmaWVyXSk7CisgICAgICAgIGRhdGFiYXNlc0Rp
cmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCgifi9MaWJyYXJ5
L1dlYktpdC9EYXRhYmFzZXMvX19fSW5kZXhlZERCIl9zLCBbW05TQnVuZGxlIG1haW5CdW5kbGVd
IGJ1bmRsZUlkZW50aWZpZXJdKTsKICAgICBlbHNlCi0gICAgICAgIGRhdGFiYXNlc0RpcmVjdG9y
eSA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFz
ZXNEaXJlY3RvcnksICJfX19JbmRleGVkREIiX3MpOworICAgICAgICBkYXRhYmFzZXNEaXJlY3Rv
cnkgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGF0YWJhc2VzRGlyZWN0
b3J5LCAiX19fSW5kZXhlZERCIl9zKTsKICAgICAKICAgICByZXR1cm4gW2RhdGFiYXNlc0RpcmVj
dG9yeSBzdHJpbmdCeVN0YW5kYXJkaXppbmdQYXRoXTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCBlZDBlMGRmNzliMDNkYTY2ZThhMjliY2VkOWNl
YWE5M2NkNjY1ZThjLi4wMWM2MDA1ZWIyYTJjMGQwNjRmMDZmOGRjNDRjMDM1M2Y0NzhmY2VjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC0xNDgsNyAr
MTQ4LDYgQEAKICNpbXBvcnQgPFdlYkNvcmUvRWRpdG9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0V2
ZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0V2ZW50SGFuZGxlci5oPgotI2ltcG9ydCA8V2ViQ29y
ZS9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZvY3VzQ29udHJvbGxlci5oPgogI2lt
cG9ydCA8V2ViQ29yZS9Gb250QXR0cmlidXRlcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9Gb250Q2Fj
aGUuaD4KQEAgLTIzMSw2ICsyMzAsNyBAQAogI2ltcG9ydCA8cGFsL3NwaS9tYWMvTlNTcGVsbENo
ZWNrZXJTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvbWFjL05TV2luZG93U1BJLmg+CiAjaW1wb3J0
IDx3dGYvQXNzZXJ0aW9ucy5oPgorI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQg
PHd0Zi9IYXNoVHJhaXRzLmg+CiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgogI2ltcG9ydCA8
d3RmL09iakNSdW50aW1lRXh0cmFzLmg+CkBAIC02ODg1LDcgKzY4ODUsNyBAQCAtIChCT09MKXBl
cmZvcm1EcmFnT3BlcmF0aW9uOihpZCA8TlNEcmFnZ2luZ0luZm8+KWRyYWdnaW5nSW5mbwogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKLSAgICAgICAgTlNTdHJpbmcgKmRy
b3BEZXN0aW5hdGlvblBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpjcmVhdGVUZW1wb3JhcnlE
aXJlY3RvcnkoQCJXZWJLaXREcm9wRGVzdGluYXRpb24iKTsKKyAgICAgICAgTlNTdHJpbmcgKmRy
b3BEZXN0aW5hdGlvblBhdGggPSBGaWxlU3lzdGVtOjpjcmVhdGVUZW1wb3JhcnlEaXJlY3Rvcnko
QCJXZWJLaXREcm9wRGVzdGluYXRpb24iKTsKICAgICAgICAgaWYgKCFkcm9wRGVzdGluYXRpb25Q
YXRoKSB7CiAgICAgICAgICAgICBkZWxldGUgZHJhZ0RhdGE7CiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdp
bkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0
YWJhc2UuY3BwCmluZGV4IGJjNzlkODliZDQ0NmM1NmVhMWJhOWQ1N2M3NWFlMzk5YWE4ZjA0Y2Yu
LjY0MWFjMzU0YzM0MTk2N2VhNmNlZDY5MGQ1ZTZkNDVjNmMyYzJhMWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCkBAIC0zMyw3
ICszMyw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAjaWYgRU5BQkxFKE5F
VFNDQVBFX1BMVUdJTl9NRVRBREFUQV9DQUNIRSkKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCisj
aW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblBhY2th
Z2UuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luUGFja2FnZS5oCmlu
ZGV4IGI0ODgzZGVhOTk3NmRiNTBjZGU1Mjg2MGFhOWI5MmI1YmIxMDEwZGYuLjg5ODdhM2QzNTNj
NzZjMGFhNDQ2ZWFiMzkwODM3MzMzOWQ1MTdkMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luUGFja2FnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1BsdWdpbnMvUGx1Z2luUGFja2FnZS5oCkBAIC0yOSw4ICsyOSw4IEBACiAKICNpbmNs
dWRlICJQbGF0Zm9ybU1vZHVsZS5oIgogI2luY2x1ZGUgIlBsdWdpblF1aXJrU2V0LmgiCi0jaW5j
bHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgor
I2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2gu
aD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luU3Ry
ZWFtLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblN0cmVhbS5oCmlu
ZGV4IGMxYjlmODdhYzRlNjIyZmJiMmUyZTIwNWQxNjQ1OWMwYzE5NGU3YjYuLjQzMWIzNjMwMzYy
YzllNTIxMTE4ZGQwMzI3M2E2Y2Q5YzI4Y2M0NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vUGx1Z2lucy9QbHVnaW5TdHJlYW0uaApAQCAtMjcsMTIgKzI3LDEyIEBACiAjcHJhZ21h
IG9uY2UKIAogI2luY2x1ZGUgIlBsdWdpblF1aXJrU2V0LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9G
aWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRl
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvbnBydW50aW1lX2ludGVybmFsLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVT
eXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQXBwbGljYXRpb25DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJBcHBsaWNhdGlvbkNhY2hlLmNwcAppbmRleCBiODVkZDE1NDQwYTZlYTU0MDRhOGE0ODUy
MTQzZTU5MTc4ZmVjMTJkLi45MGJlMWZjZTc1MWI0ZjFiNWQ5NGIxYmI2NzRjMzZiM2VjNTY5ZmNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcHBsaWNhdGlvbkNhY2hl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcHBsaWNhdGlvbkNhY2hlLmNw
cApAQCAtMzAsMTMgKzMwLDEzIEBACiAjaW5jbHVkZSAiTWFyc2hhbGxpbmdIZWxwZXJzLmgiCiAj
aW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKICNpbmNsdWRlICJXZWJTZWN1cml0eU9yaWdpbi5o
IgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0FwcGxpY2F0
aW9uQ2FjaGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9DT01QdHIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0
ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8Y29t
dXRpbC5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAKaW5kZXggM2Y2YzM4YjA2MjhkYjRiYWNm
OWM0MTM1N2I1OTFhN2RlYzlhY2Q0MS4uZjk5NjNmMWMwNjg5NmQ3YTJjYjJkNzMzYTE4ZWZhYWFm
M2NlNDgwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YWJhc2VN
YW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFn
ZXIuY3BwCkBAIC0zOSw5ICszOSw5IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9DT01QdHIuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0RhdGFiYXNlTWFuYWdlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGF0
YWJhc2VUcmFja2VyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlP
cmlnaW5EYXRhLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYv
TWFpblRocmVhZC5oPgogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCkBAIC00MzYsNyAr
NDM2LDcgQEAgc3RhdGljIFdURjo6U3RyaW5nIGRhdGFiYXNlc0RpcmVjdG9yeSgpCiAgICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oZGlyZWN0b3J5UHJlZi5nZXQoKSk7CiAj
ZW5kaWYKIAotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGly
ZWN0b3J5KCksICJEYXRhYmFzZXMiKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVj
dG9yeSgpLCAiRGF0YWJhc2VzIik7CiB9CiAKIHZvaWQgV2ViS2l0SW5pdGlhbGl6ZVdlYkRhdGFi
YXNlc0lmTmVjZXNzYXJ5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkRvd25sb2FkQ3VybC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZEN1
cmwuY3BwCmluZGV4IDIwZDRmNDA4MzVmNzI0MTM4ZjE3MjNhOGRjMmY5NGI4OTUyZWVlZDcuLjk5
YjYyN2YxYWFjMDNhZWRmNTA2ODdmYzdmMzM2YmI5NWQ5Y2RkMjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViRG93bmxvYWRDdXJsLmNwcApAQCAtMzUsMjIgKzM1LDE5IEBACiAjaW5j
bHVkZSAiV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKICNpbmNsdWRlICJXZWJVUkxD
cmVkZW50aWFsLmgiCiAjaW5jbHVkZSAiV2ViVVJMUmVzcG9uc2UuaCIKLQotI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KLQotI2luY2x1ZGUgPGlvLmg+Ci0jaW5jbHVkZSA8c3lzL3N0YXQu
aD4KLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLQogI2luY2x1ZGUgPFdlYkNvcmUvQlN0cmluZy5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvQ3VybERvd25sb2FkLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9G
aWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VI
YW5kbGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dEVuY29k
aW5nLmg+CisjaW5jbHVkZSA8aW8uaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2luY2x1ZGUg
PHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCmluZGV4IGE2MzFiOTE2OTY3NzcyYmI4
MGU3YzYzZTBmNWU1N2Y2ZjMyNWM2OWUuLjAyNWMyMGJlYTIzOGNkNmE0OTVhMjUwZjZjNTUwY2E3
ZjUyNzlkNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVu
Y2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAK
QEAgLTM4LDEzICszOCwxMyBAQAogCiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5k
YXRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NPTVB0ci5oPgotI2luY2x1ZGUgPFdlYkNvcmUv
RmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRm9udENhc2NhZGUuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtT
dG9yYWdlU2Vzc2lvbi5oPgogI2luY2x1ZGUgPGxpbWl0cz4KICNpbmNsdWRlIDxzaGxvYmouaD4K
ICNpbmNsdWRlIDx3Y2hhci5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNs
dWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCmlu
ZGV4IGU3NjE3NDRlMGQxYjg1YWZmZDEwYjc3N2NkZDM3OTFhNGY3MWIzMWUuLmUzMzEwNjNhMGJm
MGViZDgyMDA5MTUwNDA3NjI2ZGU5YTE0MGU1MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZp
ZXcuY3BwCkBAIC05Niw3ICs5Niw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9FZGl0b3IuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0V2ZW50SGFuZGxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRXZlbnRO
YW1lcy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvRmxvYXRRdWFkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Gb2N1c0NvbnRyb2xsZXIuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0ZvbnQuaD4KQEAgLTE3MSw2ICsxNzAsNyBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvV2luZG93c1RvdWNoLmg+CiAjaW5jbHVkZSA8Y29tZGVmLmg+CiAjaW5jbHVkZSA8ZDJk
MS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJl
YWQuaD4KICNpbmNsdWRlIDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgogI2luY2x1ZGUgPHd0Zi9S
QU1TaXplLmg+CkBAIC01MTMsNyArNTEzLDcgQEAgdm9pZCBXZWJWaWV3OjpzZXRDYWNoZU1vZGVs
KFdlYkNhY2hlTW9kZWwgY2FjaGVNb2RlbCkKICAgICAgICAgaWYgKHByZWZlcmVuY2UgJiYgKENG
U3RyaW5nR2V0VHlwZUlEKCkgPT0gQ0ZHZXRUeXBlSUQocHJlZmVyZW5jZS5nZXQoKSkpKQogICAg
ICAgICAgICAgY2Z1cmxDYWNoZURpcmVjdG9yeSA9IGFkb3B0Q0Yoc3RhdGljX2Nhc3Q8Q0ZTdHJp
bmdSZWY+KHByZWZlcmVuY2UubGVha1JlZigpKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
IGNmdXJsQ2FjaGVEaXJlY3RvcnkgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVj
aWZpY1N0b3JhZ2VEaXJlY3RvcnkoKS5jcmVhdGVDRlN0cmluZygpOworICAgICAgICAgICAgY2Z1
cmxDYWNoZURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURp
cmVjdG9yeSgpLmNyZWF0ZUNGU3RyaW5nKCk7CiAgICAgfQogICAgIGNhY2hlRGlyZWN0b3J5ID0g
U3RyaW5nKGNmdXJsQ2FjaGVEaXJlY3RvcnkuZ2V0KCkpOwogICAgIENGSW5kZXggY2FjaGVNZW1v
cnlDYXBhY2l0eSA9IDA7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFu
Z2VMb2cKaW5kZXggMzE2NWJkNTc4MjVlNGEzMjA4Njk2NzVjY2IwYzQ3Y2RjMTc2MTI2Ni4uN2Uz
ODE2MDc5MTliZjVmZGZlMjQ2OGJlNjlkYmM2MGUzNjA4MmQyMiAxMDA2NDQKLS0tIGEvVG9vbHMv
Q2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE5LTAx
LTIyICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KKworICAgICAgICBN
b3ZlIEZpbGVTeXN0ZW0gdG8gV1RGCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTM2MDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHA6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1BsYXRmb3JtR1RLLmNtYWtlOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvUGxhdGZv
cm1KU0NPbmx5LmNtYWtlOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvUGxhdGZvcm1QbGF5U3Rh
dGlvbi5jbWFrZToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1BsYXRmb3JtV1BFLmNtYWtlOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3Bw
OiBSZW5hbWVkIGZyb20gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVTeXN0
ZW0uY3BwLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRv
ci5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NlY3VyaXR5T3Jp
Z2luLmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVm
ZmVyVGVzdC5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29h
L0RhdGFiYXNlVHJhY2tlclRlc3QubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL2N1cmwvQ29va2llcy5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9Eb3dubG9hZC5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0Rvd25sb2FkUHJvZ3Jlc3MubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS93
aW4vUGxhdGZvcm1VdGlsaXRpZXNXaW4uY3BwOgorCiAyMDE5LTAxLTIyICBBYWthc2ggSmFpbiAg
PGFha2FzaF9qYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBbZXdzLWFwcF0gZmV0Y2ggbG9vcCBz
aG91bGQgbm90IHN0b3Agb24gbmV0d29yayBpc3N1ZXMKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93
aW4vRHVtcFJlbmRlclRyZWUuY3BwCmluZGV4IGE0YjVjNzcwNzA4OTBhNWNmMTQyZDJkOWM4YjNj
MzM4NjQ4M2U2ZWQuLmEwYjY4NWM3NWY5ZGFmMGZlYjdlYWFlMWJiMzJhMmU5NTJkMjI2ZjQgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAKKysr
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcApAQCAtNDYsNyAr
NDYsNiBAQAogCiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9UZXN0UnVubmVyVXRpbHMuaD4KLSNpbmNsdWRlIDxXZWJD
b3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJLaXRMZWdhY3kvV2ViS2l0Lmg+CiAjaW5j
bHVkZSA8V2ViS2l0TGVnYWN5L1dlYktpdENPTUFQSS5oPgogI2luY2x1ZGUgPGNvbXV0aWwuaD4K
QEAgLTYwLDYgKzU5LDcgQEAKICNpbmNsdWRlIDxzaGx3YXBpLmg+CiAjaW5jbHVkZSA8dGNoYXIu
aD4KICNpbmNsdWRlIDx3aW5kb3dzLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNp
bmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgog
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTIyMiw3ICsyMjIsNyBAQCBzdGF0aWMgU3Ry
aW5nIGxpYnJhcnlQYXRoRm9yRHVtcFJlbmRlclRyZWUoKQogICAgICAgICByZXR1cm4gU3RyaW5n
IChwYXRoLmRhdGEoKSwgcGF0aC5sZW5ndGgoKSk7CiAgICAgfQogCi0gICAgcmV0dXJuIFdlYkNv
cmU6OkZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpOworICAg
IHJldHVybiBGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKTsK
IH0KICNlbmRpZgogCkBAIC05MzEsOSArOTMxLDkgQEAgc3RhdGljIHZvaWQgc2V0RGVmYXVsdHNU
b0NvbnNpc3RlbnRWYWx1ZXNGb3JUZXN0aW5nKCkKICAgICBTdHJpbmcgbGlicmFyeVBhdGggPSBs
aWJyYXJ5UGF0aEZvckR1bXBSZW5kZXJUcmVlKCk7CiAKICAgICAvLyBTZXQgdXAgdGhlc2UgdmFs
dWVzIGJlZm9yZSBjcmVhdGluZyB0aGUgV2ViVmlldyBzbyB0aGF0IHRoZSB2YXJpb3VzIGluaXRp
YWxpemF0aW9ucyB3aWxsIHNlZSB0aGVzZSBwcmVmZXJyZWQgdmFsdWVzLgotICAgIENGUHJlZmVy
ZW5jZXNTZXRBcHBWYWx1ZShXZWJEYXRhYmFzZURpcmVjdG9yeURlZmF1bHRzS2V5LCBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobGlicmFyeVBhdGgsICJEYXRh
YmFzZXMiKS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBhcHBJZC5nZXQoKSk7Ci0gICAgQ0ZQcmVm
ZXJlbmNlc1NldEFwcFZhbHVlKFdlYlN0b3JhZ2VEaXJlY3RvcnlEZWZhdWx0c0tleSwgV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGxpYnJhcnlQYXRoLCAiTG9j
YWxTdG9yYWdlIikuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgYXBwSWQuZ2V0KCkpOwotICAgIENG
UHJlZmVyZW5jZXNTZXRBcHBWYWx1ZShXZWJLaXRMb2NhbENhY2hlRGVmYXVsdHNLZXksIFdlYkNv
cmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChsaWJyYXJ5UGF0aCwgIkxv
Y2FsQ2FjaGUiKS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBhcHBJZC5nZXQoKSk7CisgICAgQ0ZQ
cmVmZXJlbmNlc1NldEFwcFZhbHVlKFdlYkRhdGFiYXNlRGlyZWN0b3J5RGVmYXVsdHNLZXksIEZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChsaWJyYXJ5UGF0aCwgIkRhdGFiYXNl
cyIpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGFwcElkLmdldCgpKTsKKyAgICBDRlByZWZlcmVu
Y2VzU2V0QXBwVmFsdWUoV2ViU3RvcmFnZURpcmVjdG9yeURlZmF1bHRzS2V5LCBGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobGlicmFyeVBhdGgsICJMb2NhbFN0b3JhZ2UiKS5j
cmVhdGVDRlN0cmluZygpLmdldCgpLCBhcHBJZC5nZXQoKSk7CisgICAgQ0ZQcmVmZXJlbmNlc1Nl
dEFwcFZhbHVlKFdlYktpdExvY2FsQ2FjaGVEZWZhdWx0c0tleSwgRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KGxpYnJhcnlQYXRoLCAiTG9jYWxDYWNoZSIpLmNyZWF0ZUNGU3Ry
aW5nKCkuZ2V0KCksIGFwcElkLmdldCgpKTsKICNlbmRpZgogfQogCkBAIC0xMDM1LDcgKzEwMzUs
NyBAQCBzdGF0aWMgdm9pZCBzaXplV2ViVmlld0ZvckN1cnJlbnRUZXN0KCkKIAogc3RhdGljIFN0
cmluZyBmaW5kRm9udEZhbGxiYWNrKGNvbnN0IGNoYXIqIHBhdGhPclVybCkKIHsKLSAgICBTdHJp
bmcgcGF0aFRvRm9udEZhbGxiYWNrID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFt
ZShwYXRoT3JVcmwpOworICAgIFN0cmluZyBwYXRoVG9Gb250RmFsbGJhY2sgPSBGaWxlU3lzdGVt
OjpkaXJlY3RvcnlOYW1lKHBhdGhPclVybCk7CiAKICAgICB3Y2hhcl90IGZ1bGxQYXRoW19NQVhf
UEFUSF07CiAgICAgaWYgKCFfd2Z1bGxwYXRoKGZ1bGxQYXRoLCBwYXRoVG9Gb250RmFsbGJhY2su
Y2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCksIF9NQVhfUEFUSCkpCkBAIC0x
MDU0LDIwICsxMDU0LDIwIEBAIHN0YXRpYyBTdHJpbmcgZmluZEZvbnRGYWxsYmFjayhjb25zdCBj
aGFyKiBwYXRoT3JVcmwpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCiAgICAgU3Ry
aW5nIHBhdGhUb1Rlc3QgPSBwYXRoVG9DaGVjay5zdWJzdHJpbmcobG9jYXRpb24gKyBsYXlvdXRU
ZXN0cy5sZW5ndGgoKSArIDEpOwotICAgIFN0cmluZyBwb3NzaWJsZVBhdGhUb0xvZ3VlID0gV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhdGhUb0NoZWNrLnN1
YnN0cmluZygwLCBsb2NhdGlvbiArIGxheW91dFRlc3RzLmxlbmd0aCgpICsgMSksICJwbGF0Zm9y
bVxcd2luIik7CisgICAgU3RyaW5nIHBvc3NpYmxlUGF0aFRvTG9ndWUgPSBGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGF0aFRvQ2hlY2suc3Vic3RyaW5nKDAsIGxvY2F0aW9u
ICsgbGF5b3V0VGVzdHMubGVuZ3RoKCkgKyAxKSwgInBsYXRmb3JtXFx3aW4iKTsKIAogICAgIFZl
Y3RvcjxTdHJpbmc+IHBvc3NpYmxlUGF0aHM7Ci0gICAgcG9zc2libGVQYXRocy5hcHBlbmQoV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBvc3NpYmxlUGF0aFRv
TG9ndWUsIHBhdGhUb1Rlc3QpKTsKKyAgICBwb3NzaWJsZVBhdGhzLmFwcGVuZChGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocG9zc2libGVQYXRoVG9Mb2d1ZSwgcGF0aFRvVGVz
dCkpOwogCiAgICAgc2l6ZV90IG5leHRDYW5kaWRhdGVFbmQgPSBwYXRoVG9UZXN0LnJldmVyc2VG
aW5kKCdcXCcpOwogICAgIHdoaWxlIChuZXh0Q2FuZGlkYXRlRW5kICYmIG5leHRDYW5kaWRhdGVF
bmQgIT0gV1RGOjpub3RGb3VuZCkgewogICAgICAgICBwYXRoVG9UZXN0ID0gcGF0aFRvVGVzdC5z
dWJzdHJpbmcoMCwgbmV4dENhbmRpZGF0ZUVuZCk7Ci0gICAgICAgIHBvc3NpYmxlUGF0aHMuYXBw
ZW5kKFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwb3NzaWJs
ZVBhdGhUb0xvZ3VlLCBwYXRoVG9UZXN0KSk7CisgICAgICAgIHBvc3NpYmxlUGF0aHMuYXBwZW5k
KEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwb3NzaWJsZVBhdGhUb0xvZ3Vl
LCBwYXRoVG9UZXN0KSk7CiAgICAgICAgIG5leHRDYW5kaWRhdGVFbmQgPSBwYXRoVG9UZXN0LnJl
dmVyc2VGaW5kKCdcXCcpOwogICAgIH0KIAogICAgIGZvciAoVmVjdG9yPFN0cmluZz46Oml0ZXJh
dG9yIHBvcyA9IHBvc3NpYmxlUGF0aHMuYmVnaW4oKTsgcG9zICE9IHBvc3NpYmxlUGF0aHMuZW5k
KCk7ICsrcG9zKSB7Ci0gICAgICAgIHBhdGhUb0ZvbnRGYWxsYmFjayA9IFdlYkNvcmU6OkZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCgqcG9zLCAicmVzb3VyY2VzXFwiKTsKKyAg
ICAgICAgcGF0aFRvRm9udEZhbGxiYWNrID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KCpwb3MsICJyZXNvdXJjZXNcXCIpOwogCiAgICAgICAgIGlmICg6OlBhdGhJc0RpcmVj
dG9yeVcocGF0aFRvRm9udEZhbGxiYWNrLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCku
ZGF0YSgpKSkKICAgICAgICAgICAgIHJldHVybiBwYXRoVG9Gb250RmFsbGJhY2s7CkBAIC0xMDgx
LDcgKzEwODEsNyBAQCBzdGF0aWMgdm9pZCBhZGRGb250RmFsbGJhY2tJZlByZXNlbnQoY29uc3Qg
U3RyaW5nJiBmb250RmFsbGJhY2tQYXRoKQogICAgIGlmIChmb250RmFsbGJhY2tQYXRoLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3RyaW5nIGZvbnRGYWxsYmFjayA9IFdlYkNv
cmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChmb250RmFsbGJhY2tQYXRo
LCAiTWFjLWNvbXBhdGlibGUtZm9udC1mYWxsYmFjay5jc3MiKTsKKyAgICBTdHJpbmcgZm9udEZh
bGxiYWNrID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGZvbnRGYWxsYmFj
a1BhdGgsICJNYWMtY29tcGF0aWJsZS1mb250LWZhbGxiYWNrLmNzcyIpOwogCiAgICAgaWYgKCE6
OlBhdGhGaWxlRXhpc3RzVyhmb250RmFsbGJhY2suY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRp
b24oKS5kYXRhKCkpKQogICAgICAgICByZXR1cm47CkBAIC0xMDk0LDcgKzEwOTQsNyBAQCBzdGF0
aWMgdm9pZCByZW1vdmVGb250RmFsbGJhY2tJZlByZXNlbnQoY29uc3QgU3RyaW5nJiBmb250RmFs
bGJhY2tQYXRoKQogICAgIGlmIChmb250RmFsbGJhY2tQYXRoLmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgU3RyaW5nIGZvbnRGYWxsYmFjayA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChmb250RmFsbGJhY2tQYXRoLCAiTWFjLWNvbXBhdGli
bGUtZm9udC1mYWxsYmFjay5jc3MiKTsKKyAgICBTdHJpbmcgZm9udEZhbGxiYWNrID0gRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGZvbnRGYWxsYmFja1BhdGgsICJNYWMtY29t
cGF0aWJsZS1mb250LWZhbGxiYWNrLmNzcyIpOwogCiAgICAgaWYgKCE6OlBhdGhGaWxlRXhpc3Rz
Vyhmb250RmFsbGJhY2suY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpKQog
ICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlz
dHMudHh0IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAppbmRleCBiMjQ5MDA4
OThiM2ZjNWFmODljNDkwMzM4MGMzZmQ3YzFkYzBkNzA1Li5kOWNlYThmNTgxZjZiMzAxZDI5MzVk
NWRiNDViMDc3OTY5ZDRjMGRjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtl
TGlzdHMudHh0CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKQEAgLTE4
OCw3ICsxODgsMTQgQEAgc2V0KFRlc3RXVEZfU09VUkNFUwogICAgICR7VEVTVFdFQktJVEFQSV9E
SVJ9L1Rlc3RzL1dURi9Xb3JrZXJQb29sLmNwcAogKQogCi0jIEZJWE1FOiBUZXN0cy9XVEYvUnVu
TG9vcC5jcHAgaXMgbWlzc2luZyBiZWNhdXNlIGl0IGRvZXNuJ3Qgd29yayBmb3IgV2luZG93cy4K
KyMgRklYTUU6IE1ha2UgdGhlc2Ugd29yayBvbiBXaW5kb3dzIHRvby4KK2lmIChOT1QgV0lOMzIp
CisgICAgbGlzdChBUFBFTkQgVGVzdFdURl9TT1VSQ0VTCisgICAgICAgICR7VEVTVFdFQktJVEFQ
SV9ESVJ9L1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcAorICAgICAgICAke1RFU1RXRUJLSVRBUElf
RElSfS9UZXN0cy9XVEYvUnVuTG9vcC5jcHAKKyAgICApCitlbmRpZiAoKQorCiAjIEZJWE1FOiBQ
bGF0Zm9ybS1zcGVjaWZpYyBzb3VyY2VzIGluIFRlc3RzL1dURiBhcmUgbm90IGluY2x1ZGVkIGlu
IFRlc3RXVEZfU09VUkNFUy4KIAogV0VCS0lUX0lOQ0xVREVfQ09ORklHX0ZJTEVTX0lGX0VYSVNU
UygpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtR1RLLmNtYWtlIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCBjMzRmYWUwN2NmM2M2
YjBhMzljMzk5ZmVlMzJjZDI1YzNhMGFhN2Y0Li5jZTgyMWU2MWIwNTY0MzViMmVlZWU1ZTBlNTZi
YTIzNTc3MjU4ODVlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtR1RL
LmNtYWtlCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTkz
LDcgKzkzLDYgQEAgYWRkX2V4ZWN1dGFibGUoVGVzdFdlYkNvcmUKICAgICAke1RFU1RXRUJLSVRB
UElfRElSfS9UZXN0cy9XZWJDb3JlL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKICAgICAke1RF
U1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL0ROUy5jcHAKICAgICAke1RFU1RXRUJLSVRB
UElfRElSfS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNwcAotICAgICR7VEVTVFdFQktJVEFQ
SV9ESVJ9L1Rlc3RzL1dlYkNvcmUvRmlsZVN5c3RlbS5jcHAKICAgICAke1RFU1RXRUJLSVRBUElf
RElSfS9UZXN0cy9XZWJDb3JlL2dzdHJlYW1lci9Hc3RNYXBwZWRCdWZmZXIuY3BwCiAgICAgJHtU
RVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV2ViQ29yZS9nc3RyZWFtZXIvR1N0cmVhbWVyVGVzdC5j
cHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL0dyaWRQb3NpdGlvbi5j
cHAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1KU0NPbmx5LmNtYWtl
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUpTQ09ubHkuY21ha2UKaW5kZXggYTNmYTJk
YTk1NWQ1YTM5YzFjMzk2ODBjMjFlOGNkZTZlOGZiNWM4MC4uYjU1Njk4YmJmYmY5NzMzYWMwOGUz
NjkzNWE5OGJiMmI2OWVlMGI3ZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0
Zm9ybUpTQ09ubHkuY21ha2UKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUpTQ09u
bHkuY21ha2UKQEAgLTIxLDcgKzIxLDMgQEAgZW5kaWYgKCkKIHNldCh0ZXN0X21haW5fU09VUkNF
UwogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L2dlbmVyaWMvbWFpbi5jcHAKICkKLQotbGlzdChB
UFBFTkQgVGVzdFdURl9TT1VSQ0VTCi0gICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RG
L1J1bkxvb3AuY3BwCi0pCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3Jt
UGxheVN0YXRpb24uY21ha2UgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtUGxheVN0YXRp
b24uY21ha2UKaW5kZXggOWYxYTJhNjRkNTE4NDA0ZGE5ODZlNjY1MTI3MGY3ODhhMDVkOGU2Yy4u
ZjFmY2IwNDFjNzViMDcxNWYwYTMyZmJkNDQwZWFjNGUwMTFjNDE3OSAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtlCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvUGxhdGZvcm1QbGF5U3RhdGlvbi5jbWFrZQpAQCAtMTQsNSArMTQsNCBAQCBz
ZXQodGVzdF9tYWluX1NPVVJDRVMKIAogbGlzdChBUFBFTkQgVGVzdFdURl9TT1VSQ0VTCiAgICAg
JHtURVNUV0VCS0lUQVBJX0RJUn0vZ2VuZXJpYy9VdGlsaXRpZXNHZW5lcmljLmNwcAotICAgICR7
VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9SdW5Mb29wLmNwcAogKQpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVdQRS5jbWFrZSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvUGxhdGZvcm1XUEUuY21ha2UKaW5kZXggYjY4Nzc1OThkODc3ZGU2YzhkYTg2YjRlYjU3Y2M4
NmZmMGEyZjdlZi4uNDI2N2RhMjBkMDcwYzQ3YmM4MWU0NmVjMmI3ZjJkMTNjMDc5OWQ3NiAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVdQRS5jbWFrZQorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtV1BFLmNtYWtlCkBAIC02MCw3ICs2MCw2IEBAIGFkZF9l
eGVjdXRhYmxlKFRlc3RXZWJDb3JlCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vZ2xpYi9VdGls
aXRpZXNHTGliLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzQ29udHJvbGxlci5j
cHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNw
cAotICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUvRmlsZVN5c3RlbS5jcHAK
ICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL2dzdHJlYW1lci9Hc3RNYXBw
ZWRCdWZmZXIuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV2ViQ29yZS9nc3Ry
ZWFtZXIvR1N0cmVhbWVyVGVzdC5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9X
ZWJDb3JlL0hUTUxQYXJzZXJJZGlvbXMuY3BwCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDdh
MTA3MmFjZGFhMmMyYWE1MDdjZGIyZmMyOTcwODEwODQ1YzNmMGEuLmY2NTI2OGU1ZmQzYjQxZDM2
YjZmYzQ2ZDVmN2ViMmZjMWQxZTJjMDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00Mjcs
NyArNDI3LDYgQEAKIAkJN0M4M0UwNEMxRDBBNjQxODAwRkVCQ0YzIC8qIFdlYkNvcmVOU1VSTFNl
c3Npb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
RDg5RDAzODFDNEVEQjJBMDAwNDBBMDQgLyogV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbSAqLzsgfTsK
IAkJN0M4M0UwNEQxRDBBNjQxODAwRkVCQ0YzIC8qIERGQUNvbWJpbmVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2MEJBNTc4MUIxRDJFN0IwMDRG
QTA3QyAvKiBERkFDb21iaW5lci5jcHAgKi87IH07CiAJCTdDODNFMDRFMUQwQTY0MTgwMEZFQkNG
MyAvKiBERkFNaW5pbWl6ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMjZGNkUxRUYxQURDNzQ5QjAwREU2OTZCIC8qIERGQU1pbmltaXplci5jcHAg
Ki87IH07Ci0JCTdDODNFMDRGMUQwQTY0MTgwMEZFQkNGMyAvKiBGaWxlU3lzdGVtLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOTczQjVBMUFGMjI4
NkEwMDZDN0IzNiAvKiBGaWxlU3lzdGVtLmNwcCAqLzsgfTsKIAkJN0M4M0UwNTAxRDBBNjQxODAw
RkVCQ0YzIC8qIEhUTUxQYXJzZXJJZGlvbXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODNCODhBMzMxQzgwMDU2RDAwQkIyNDE4IC8qIEhUTUxQYXJz
ZXJJZGlvbXMuY3BwICovOyB9OwogCQk3QzgzRTA1MTFEMEE2NDE4MDBGRUJDRjMgLyogUGFyc2Vk
Q29udGVudFJhbmdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENEMjI1QzA3MUM0NUE2OTIwMDE0MDc2MSAvKiBQYXJzZWRDb250ZW50UmFuZ2UuY3Bw
ICovOyB9OwogCQk3QzgzRTA1MjFEMEE2NDE4MDBGRUJDRjMgLyogU2hhcmVkQnVmZmVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOTczQjVDMUFG
MjI4NzUwMDZDN0IzNiAvKiBTaGFyZWRCdWZmZXIuY3BwICovOyB9OwpAQCAtNjg5LDYgKzY4OCw3
IEBACiAJCUExQzRGQjczMUJBQ0QxQ0EwMDM3NDJEMCAvKiBwYWdlcy5wYWdlcyBpbiBDb3B5IFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUM0RkI3MjFCQUNE
MUI3MDAzNzQyRDAgLyogcGFnZXMucGFnZXMgKi87IH07CiAJCUExREY3NDMyMUM0MUI2NTgwMEEy
RjREMCAvKiBBbHdheXNSZXZhbGlkYXRlZFVSTFNjaGVtZXMubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMURGNzQzMDFDNDFCNjU4MDBBMkY0RDAgLyog
QWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzLm1tICovOyB9OwogCQlBMUVDMTE4ODFGNDI1NDEy
MDBEMDE0NkUgLyogUHJldmlld0xvYWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBMUVDMTE4NzFGNDI1NDEyMDBEMDE0NkUgLyogUHJldmlld0xv
YWRlci5jcHAgKi87IH07CisJCUEzMTA4MjcyMjFGMjk2RkYwMEMyOEI5NyAvKiBGaWxlU3lzdGVt
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzMTA4
MjcxMjFGMjk2RUMwMEMyOEI5NyAvKiBGaWxlU3lzdGVtLmNwcCAqLzsgfTsKIAkJQTU3QTM0RjIx
NkFGNkIyQjAwQzI1MDFGIC8qIFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlcy5o
dG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE1N0EzNEYxMTZBRjY5RTIwMEMyNTAxRiAvKiBQYWdlVmlzaWJpbGl0eVN0YXRlV2l0aFdpbmRv
d0NoYW5nZXMuaHRtbCAqLzsgfTsKIAkJQTU3RDU0RjMxRjMzOEMzNjAwQTk3QUE3IC8qIE5ldmVy
RGVzdHJveWVkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE1N0Q1NEYyMUYzMzhDMzYwMEE5N0FBNyAvKiBOZXZlckRlc3Ryb3llZC5jcHAgKi87IH07
CiAJCUE1N0Q1NEY2MUYzMzk1RDAwMEE5N0FBNyAvKiBMb2dnZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3RDU0RjQxRjMzOTVEMDAwQTk3QUE3
IC8qIExvZ2dlci5jcHAgKi87IH07CkBAIC0xNTIwLDcgKzE1MjAsNiBAQAogCQk0MTM1RkI4MzIw
MTFGQUEzMDAzMzIxMzkgLyogSW5qZWN0SW50ZXJuYWxzX0J1bmRsZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBJbmplY3RJbnRlcm5hbHNfQnVuZGxlLmNwcDsgcGF0
aCA9IFRlc3RzL0luamVjdEludGVybmFsc19CdW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gU09VUkNF
X1JPT1Q7IH07CiAJCTQxMzVGQjg2MjAxMUZBQkYwMDMzMjEzOSAvKiBsaWJXZWJDb3JlVGVzdFN1
cHBvcnQuZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlw
ZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIiOyBwYXRoID0gbGliV2ViQ29yZVRlc3RTdXBwb3J0
LmR5bGliOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk0MTg4MkYwMjIx
MDEwQTcwMDAyRkYyODggLyogUHJvY2Vzc1ByZVdhcm1pbmcubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQcm9jZXNzUHJlV2FybWluZy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJNDE5NzNCNUExQUYyMjg2QTAwNkM3QjM2IC8qIEZpbGVTeXN0ZW0u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmlsZVN5c3RlbS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxOTczQjVDMUFGMjI4NzUwMDZDN0IzNiAv
KiBTaGFyZWRCdWZmZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U2hhcmVkQnVmZmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDQyQkJGNjgx
QzkxQ0FEOTAwMTcwODdGIC8qIFJlZkxvZ2dlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBSZWZMb2dnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NDMzQTM5NTIwODA0NDEzMDA5MUVENTcgLyogU3luY2hyb25vdXNUaW1lb3V0VGVzdHMubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTeW5jaHJvbm91c1RpbWVv
dXRUZXN0cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5MTcsNiArMTkxNiw3
IEBACiAJCUExREY3NDMwMUM0MUI2NTgwMEEyRjREMCAvKiBBbHdheXNSZXZhbGlkYXRlZFVSTFNj
aGVtZXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBbHdheXNS
ZXZhbGlkYXRlZFVSTFNjaGVtZXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEx
RUMxMTg3MUY0MjU0MTIwMEQwMTQ2RSAvKiBQcmV2aWV3TG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFByZXZpZXdMb2FkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
MUZERkQyRTE5QzI4OEJCMDA1MTQ4QTQgLyogV0tJbWFnZUNyZWF0ZUNHSW1hZ2VDcmFzaC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS0ltYWdlQ3JlYXRlQ0dJbWFn
ZUNyYXNoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTMxMDgyNzEyMUYyOTZF
QzAwQzI4Qjk3IC8qIEZpbGVTeXN0ZW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gRmlsZVN5c3RlbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1
N0EzNEVGMTZBRjY3NzIwMEMyNTAxRiAvKiBQYWdlVmlzaWJpbGl0eVN0YXRlV2l0aFdpbmRvd0No
YW5nZXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQYWdlVmlz
aWJpbGl0eVN0YXRlV2l0aFdpbmRvd0NoYW5nZXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE1N0EzNEYxMTZBRjY5RTIwMEMyNTAxRiAvKiBQYWdlVmlzaWJpbGl0eVN0YXRlV2l0
aFdpbmRvd0NoYW5nZXMuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IFBhZ2VWaXNp
YmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlcy5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBNTdENTRGMjFGMzM4QzM2MDBBOTdBQTcgLyogTmV2ZXJEZXN0cm95ZWQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTmV2ZXJEZXN0cm95ZWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMjY3Nyw3ICsyNjc3LDYgQEAKIAkJCQk1Nzk2NTFFNjIxNkJGRDUzMDA2RUJG
RTUgLyogRmlkb0hpZE1lc3NhZ2VUZXN0LmNwcCAqLywKIAkJCQk1NzJCNDAzNTIxNzZBMDI5MDAw
QUQ0M0UgLyogRmlkb1Rlc3REYXRhLmggKi8sCiAJCQkJN0EzMkQ3NDkxRjAyMTUxNTAwMTYyQzQ0
IC8qIEZpbGVNb25pdG9yLmNwcCAqLywKLQkJCQk0MTk3M0I1QTFBRjIyODZBMDA2QzdCMzYgLyog
RmlsZVN5c3RlbS5jcHAgKi8sCiAJCQkJN0E5MDlBNzAxRDg3NzQ3NTAwN0UxMEY4IC8qIEZsb2F0
UG9pbnQuY3BwICovLAogCQkJCTdBOTA5QTcxMUQ4Nzc0NzUwMDdFMTBGOCAvKiBGbG9hdFJlY3Qu
Y3BwICovLAogCQkJCTdBOTA5QTcyMUQ4Nzc0NzUwMDdFMTBGOCAvKiBGbG9hdFNpemUuY3BwICov
LApAQCAtMzE4Nyw2ICszMTg2LDcgQEAKIAkJCQlFNEE3NTdEMzE3OEFFQTVCMDBCNUQ3QTQgLyog
RGVxdWUuY3BwICovLAogCQkJCTFBRjdCMjFEMUQ2Q0QxMkUwMDhDMTI2QyAvKiBFbnVtVHJhaXRz
LmNwcCAqLywKIAkJCQlBRDdDNDM0QzFERDJBNTQ3MDAyNjg4OEIgLyogRXhwZWN0ZWQuY3BwICov
LAorCQkJCUEzMTA4MjcxMjFGMjk2RUMwMEMyOEI5NyAvKiBGaWxlU3lzdGVtLmNwcCAqLywKIAkJ
CQk5MzEwQ0QzNjFFRjcwOEZCMDA1MEZGRTAgLyogRnVuY3Rpb24uY3BwICovLAogCQkJCTgzREI3
OTY3MUVGNjNCM0MwMEJGQTVFNSAvKiBGdW5jdGlvbi5jcHAgKi8sCiAJCQkJN0EzOEQ3RTUxQzc1
MkQ1RjAwNEYxNTdEIC8qIEhhc2hDb3VudGVkU2V0LmNwcCAqLywKQEAgLTM3OTUsNiArMzc5NSw3
IEBACiAJCQkJN0M4M0RFQUQxRDBBNTkwQzAwRkVCQ0YzIC8qIERlcXVlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTFBRjdCMjFGMUQ2Q0QxNEQwMDhDMTI2QyAvKiBFbnVtVHJhaXRzLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUFEN0M0MzREMUREMkE1NEUwMDI2ODg4QiAvKiBFeHBlY3RlZC5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlBMzEwODI3MjIxRjI5NkZGMDBDMjhCOTcgLyogRmlsZVN5c3Rl
bS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzEwQ0QzODFFRjcwOEZCMDA1MEZGRTAgLyogRnVu
Y3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNkJGRDI5NEMxRDVFNkMxRDAwOEVDOTY4IC8q
IEhhc2hDb3VudGVkU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzM0Q2MzFEMUZDQjc2MjAw
MDMyRUNENiAvKiBIYXNoZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zOTk4LDcgKzM5OTksNiBA
QAogCQkJCTdDQ0U3RUYxMUE0MTFBRTYwMDQ0N0M0QyAvKiBGYWlsZWRMb2FkLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTU3OTY1MUU3MjE2QkZERUQwMDZFQkZFNSAvKiBGaWRvSGlkTWVzc2FnZVRl
c3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0EzMkQ3NEExRjAyMTUxNTAwMTYyQzQ0IC8qIEZp
bGVNb25pdG9yLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTdDODNFMDRGMUQwQTY0MTgwMEZFQkNG
MyAvKiBGaWxlU3lzdGVtLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUYzMUE0MTFBRTYw
MDQ0N0M0QyAvKiBGaW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNFMEJCMUQwQTY1MDAw
MEZFQkNGMyAvKiBGaW5kSW5QYWdlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFRjQxQTQx
MUFFNjAwNDQ3QzRDIC8qIEZpbmRNYXRjaGVzLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ1N2RmNjE0
Mjk3ZjBhMjM3MjM5NWM3NmJmNGM1OTE1YTU3NTc1ZmEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcApAQCAtMCwwICsxLDE0OCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJUZXN0LmgiCisj
aW5jbHVkZSA8d3RmL0ZpbGVNZXRhZGF0YS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+
CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvU3RyaW5nRXh0cmFz
Lmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworY29uc3QgY2hhciogRmlsZVN5c3Rl
bVRlc3REYXRhID0gIlRoaXMgaXMgYSB0ZXN0IjsKKworLy8gRklYTUU6IFJlZmFjdG9yIEZpbGVT
eXN0ZW1UZXN0IGFuZCBTaGFyZWRCdWZmZXJUZXN0IGFzIGEgc2luZ2xlIGNsYXNzLgorY2xhc3Mg
RmlsZVN5c3RlbVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CitwdWJsaWM6CisgICAgdm9p
ZCBTZXRVcCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhy
ZWFkKCk7CisKKyAgICAgICAgLy8gY3JlYXRlIHRlbXAgZmlsZQorICAgICAgICBGaWxlU3lzdGVt
OjpQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlOworICAgICAgICBtX3RlbXBGaWxlUGF0aCA9IEZp
bGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wVGVzdEZpbGUiLCBoYW5kbGUpOworICAg
ICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShoYW5kbGUsIEZpbGVTeXN0ZW1UZXN0RGF0YSwg
c3RybGVuKEZpbGVTeXN0ZW1UZXN0RGF0YSkpOworICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZp
bGUoaGFuZGxlKTsKKworICAgICAgICBtX3RlbXBGaWxlU3ltbGlua1BhdGggPSBtX3RlbXBGaWxl
UGF0aCArICItc3ltbGluayI7CisgICAgICAgIEZpbGVTeXN0ZW06OmNyZWF0ZVN5bWJvbGljTGlu
ayhtX3RlbXBGaWxlUGF0aCwgbV90ZW1wRmlsZVN5bWxpbmtQYXRoKTsKKworICAgICAgICBtX3Rl
bXBFbXB0eUZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoInRlbXBFbXB0
eVRlc3RGaWxlIiwgaGFuZGxlKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRs
ZSk7CisKKyAgICAgICAgbV9zcGFjZUNvbnRhaW5pbmdGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9w
ZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wIEVtcHR5IFRlc3QgRmlsZSIsIGhhbmRsZSk7CisgICAgICAg
IEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUpOworCisgICAgICAgIG1fYmFuZ0NvbnRhaW5p
bmdGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wIUVtcHR5IVRl
c3QhRmlsZSIsIGhhbmRsZSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUp
OworCisgICAgICAgIG1fcXVvdGVDb250YWluaW5nRmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVu
VGVtcG9yYXJ5RmlsZSgidGVtcFwiRW1wdHlcIlRlc3RGaWxlIiwgaGFuZGxlKTsKKyAgICAgICAg
RmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CisgICAgfQorCisgICAgdm9pZCBUZWFyRG93
bigpIG92ZXJyaWRlCisgICAgeworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fdGVt
cEZpbGVQYXRoKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX3RlbXBGaWxlU3lt
bGlua1BhdGgpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fdGVtcEVtcHR5Rmls
ZVBhdGgpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fc3BhY2VDb250YWluaW5n
RmlsZVBhdGgpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fYmFuZ0NvbnRhaW5p
bmdGaWxlUGF0aCk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9xdW90ZUNvbnRh
aW5pbmdGaWxlUGF0aCk7CisgICAgfQorCisgICAgY29uc3QgU3RyaW5nJiB0ZW1wRmlsZVBhdGgo
KSB7IHJldHVybiBtX3RlbXBGaWxlUGF0aDsgfQorICAgIGNvbnN0IFN0cmluZyYgdGVtcEZpbGVT
eW1saW5rUGF0aCgpIHsgcmV0dXJuIG1fdGVtcEZpbGVTeW1saW5rUGF0aDsgfQorICAgIGNvbnN0
IFN0cmluZyYgdGVtcEVtcHR5RmlsZVBhdGgoKSB7IHJldHVybiBtX3RlbXBFbXB0eUZpbGVQYXRo
OyB9CisgICAgY29uc3QgU3RyaW5nJiBzcGFjZUNvbnRhaW5pbmdGaWxlUGF0aCgpIHsgcmV0dXJu
IG1fc3BhY2VDb250YWluaW5nRmlsZVBhdGg7IH0KKyAgICBjb25zdCBTdHJpbmcmIGJhbmdDb250
YWluaW5nRmlsZVBhdGgoKSB7IHJldHVybiBtX2JhbmdDb250YWluaW5nRmlsZVBhdGg7IH0KKyAg
ICBjb25zdCBTdHJpbmcmIHF1b3RlQ29udGFpbmluZ0ZpbGVQYXRoKCkgeyByZXR1cm4gbV9xdW90
ZUNvbnRhaW5pbmdGaWxlUGF0aDsgfQorCitwcml2YXRlOgorICAgIFN0cmluZyBtX3RlbXBGaWxl
UGF0aDsKKyAgICBTdHJpbmcgbV90ZW1wRmlsZVN5bWxpbmtQYXRoOworICAgIFN0cmluZyBtX3Rl
bXBFbXB0eUZpbGVQYXRoOworICAgIFN0cmluZyBtX3NwYWNlQ29udGFpbmluZ0ZpbGVQYXRoOwor
ICAgIFN0cmluZyBtX2JhbmdDb250YWluaW5nRmlsZVBhdGg7CisgICAgU3RyaW5nIG1fcXVvdGVD
b250YWluaW5nRmlsZVBhdGg7Cit9OworCitURVNUX0YoRmlsZVN5c3RlbVRlc3QsIE1hcHBpbmdN
aXNzaW5nRmlsZSkKK3sKKyAgICBib29sIHN1Y2Nlc3M7CisgICAgRmlsZVN5c3RlbTo6TWFwcGVk
RmlsZURhdGEgbWFwcGVkRmlsZURhdGEoU3RyaW5nKCJub3RfZXhpc3RpbmdfZmlsZSIpLCBzdWNj
ZXNzKTsKKyAgICBFWFBFQ1RfRkFMU0Uoc3VjY2Vzcyk7CisgICAgRVhQRUNUX1RSVUUoIW1hcHBl
ZEZpbGVEYXRhKTsKK30KKworVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBNYXBwaW5nRXhpc3RpbmdG
aWxlKQoreworICAgIGJvb2wgc3VjY2VzczsKKyAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0
YSBtYXBwZWRGaWxlRGF0YSh0ZW1wRmlsZVBhdGgoKSwgc3VjY2Vzcyk7CisgICAgRVhQRUNUX1RS
VUUoc3VjY2Vzcyk7CisgICAgRVhQRUNUX1RSVUUoISFtYXBwZWRGaWxlRGF0YSk7CisgICAgRVhQ
RUNUX1RSVUUobWFwcGVkRmlsZURhdGEuc2l6ZSgpID09IHN0cmxlbihGaWxlU3lzdGVtVGVzdERh
dGEpKTsKKyAgICBFWFBFQ1RfVFJVRShzdHJuc3RyKEZpbGVTeXN0ZW1UZXN0RGF0YSwgc3RhdGlj
X2Nhc3Q8Y29uc3QgY2hhcio+KG1hcHBlZEZpbGVEYXRhLmRhdGEoKSksIG1hcHBlZEZpbGVEYXRh
LnNpemUoKSkpOworfQorCitURVNUX0YoRmlsZVN5c3RlbVRlc3QsIE1hcHBpbmdFeGlzdGluZ0Vt
cHR5RmlsZSkKK3sKKyAgICBib29sIHN1Y2Nlc3M7CisgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmls
ZURhdGEgbWFwcGVkRmlsZURhdGEodGVtcEVtcHR5RmlsZVBhdGgoKSwgc3VjY2Vzcyk7CisgICAg
RVhQRUNUX1RSVUUoc3VjY2Vzcyk7CisgICAgRVhQRUNUX1RSVUUoIW1hcHBlZEZpbGVEYXRhKTsK
K30KKworVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBGaWxlc0hhdmVTYW1lVm9sdW1lKQoreworICAg
IEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVzSGF2ZVNhbWVWb2x1bWUodGVtcEZpbGVQYXRo
KCksIHNwYWNlQ29udGFpbmluZ0ZpbGVQYXRoKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lz
dGVtOjpmaWxlc0hhdmVTYW1lVm9sdW1lKHNwYWNlQ29udGFpbmluZ0ZpbGVQYXRoKCksIGJhbmdD
b250YWluaW5nRmlsZVBhdGgoKSkpOworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVz
SGF2ZVNhbWVWb2x1bWUoYmFuZ0NvbnRhaW5pbmdGaWxlUGF0aCgpLCBxdW90ZUNvbnRhaW5pbmdG
aWxlUGF0aCgpKSk7Cit9CisKK1RFU1RfRihGaWxlU3lzdGVtVGVzdCwgR2V0RmlsZU1ldGFkYXRh
U3ltbGluaykKK3sKKyAgICBhdXRvIHN5bWxpbmtNZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVN
ZXRhZGF0YSh0ZW1wRmlsZVN5bWxpbmtQYXRoKCkpOworICAgIEFTU0VSVF9UUlVFKHN5bWxpbmtN
ZXRhZGF0YS5oYXNWYWx1ZSgpKTsKKyAgICBFWFBFQ1RfVFJVRShzeW1saW5rTWV0YWRhdGEudmFs
dWUoKS50eXBlID09IEZpbGVNZXRhZGF0YTo6VHlwZTo6U3ltYm9saWNMaW5rKTsKKyAgICBFWFBF
Q1RfRkFMU0Uoc3RhdGljX2Nhc3Q8c2l6ZV90PihzeW1saW5rTWV0YWRhdGEudmFsdWUoKS5sZW5n
dGgpID09IHN0cmxlbihGaWxlU3lzdGVtVGVzdERhdGEpKTsKKworICAgIGF1dG8gdGFyZ2V0TWV0
YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyh0ZW1wRmls
ZVN5bWxpbmtQYXRoKCkpOworICAgIEFTU0VSVF9UUlVFKHRhcmdldE1ldGFkYXRhLmhhc1ZhbHVl
KCkpOworICAgIEVYUEVDVF9UUlVFKHRhcmdldE1ldGFkYXRhLnZhbHVlKCkudHlwZSA9PSBGaWxl
TWV0YWRhdGE6OlR5cGU6OkZpbGUpOworICAgIEVYUEVDVF9FUShzdHJsZW4oRmlsZVN5c3RlbVRl
c3REYXRhKSwgc3RhdGljX2Nhc3Q8c2l6ZV90Pih0YXJnZXRNZXRhZGF0YS52YWx1ZSgpLmxlbmd0
aCkpOworfQorCitURVNUX0YoRmlsZVN5c3RlbVRlc3QsIFVuaWNvZGVEaXJlY3RvcnlOYW1lKQor
eworICAgIFN0cmluZyBwYXRoID0gU3RyaW5nOjpmcm9tVVRGOCgiL3Rlc3QvYVx1MDMwOGxvL3Rl
c3QudHh0Iik7CisgICAgU3RyaW5nIGRpcmVjdG9yeU5hbWUgPSBGaWxlU3lzdGVtOjpkaXJlY3Rv
cnlOYW1lKHBhdGgpOworICAgIFN0cmluZyBleHBlY3RlZERpcmVjdG9yeU5hbWUgPSBTdHJpbmc6
OmZyb21VVEY4KCIvdGVzdC9hXHUwMzA4bG8iKTsKKyAgICBFWFBFQ1RfVFJVRShleHBlY3RlZERp
cmVjdG9yeU5hbWUgPT0gZGlyZWN0b3J5TmFtZSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRvci5jcHAgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZU1vbml0b3IuY3BwCmluZGV4IDVmMWRjOGIyZTRk
NTI0ZDM1MjY4MDRiZDZjZDljZTk4YTM3MTFmZTguLmUwMDJkZjFlZjA5NGY1YjNmMDBkMTZlOWM2
YmU2ZDQ5ZDVlNmFmMjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9GaWxlTW9uaXRvci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL0ZpbGVNb25pdG9yLmNwcApAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgIlRlc3QuaCIK
ICNpbmNsdWRlICJXVEZTdHJpbmdVdGlsaXRpZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVN
b25pdG9yLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8d3Rm
L0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0
Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3RmL1Njb3BlLmg+CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZVN5c3RlbS5jcHAgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZVN5c3RlbS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDc2NjI1MDI1MzA5NzI3ZWE2MDVjYjUyY2ZjOWVjZDRiMzNlNzc4NzUuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVTeXN0ZW0uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTUw
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaW5jbHVkZSAiVGVz
dC5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZU1ldGFkYXRhLmg+Ci0jaW5jbHVkZSA8V2ViQ29y
ZS9GaWxlU3lzdGVtLmg+Ci0jaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KLSNpbmNsdWRlIDx3
dGYvU3RyaW5nRXh0cmFzLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3Bh
Y2UgVGVzdFdlYktpdEFQSSB7Ci0KLWNvbnN0IGNoYXIqIEZpbGVTeXN0ZW1UZXN0RGF0YSA9ICJU
aGlzIGlzIGEgdGVzdCI7Ci0KLS8vIEZJWE1FOiBSZWZhY3RvciBGaWxlU3lzdGVtVGVzdCBhbmQg
U2hhcmVkQnVmZmVyVGVzdCBhcyBhIHNpbmdsZSBjbGFzcy4KLWNsYXNzIEZpbGVTeXN0ZW1UZXN0
IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotcHVibGljOgotICAgIHZvaWQgU2V0VXAoKSBvdmVy
cmlkZQotICAgIHsKLSAgICAgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZCgpOwotICAgICAg
ICAKLSAgICAgICAgLy8gY3JlYXRlIHRlbXAgZmlsZQotICAgICAgICBGaWxlU3lzdGVtOjpQbGF0
Zm9ybUZpbGVIYW5kbGUgaGFuZGxlOwotICAgICAgICBtX3RlbXBGaWxlUGF0aCA9IEZpbGVTeXN0
ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wVGVzdEZpbGUiLCBoYW5kbGUpOwotICAgICAgICBG
aWxlU3lzdGVtOjp3cml0ZVRvRmlsZShoYW5kbGUsIEZpbGVTeXN0ZW1UZXN0RGF0YSwgc3RybGVu
KEZpbGVTeXN0ZW1UZXN0RGF0YSkpOwotICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFu
ZGxlKTsKLQotICAgICAgICBtX3RlbXBGaWxlU3ltbGlua1BhdGggPSBtX3RlbXBGaWxlUGF0aCAr
ICItc3ltbGluayI7Ci0gICAgICAgIEZpbGVTeXN0ZW06OmNyZWF0ZVN5bWJvbGljTGluayhtX3Rl
bXBGaWxlUGF0aCwgbV90ZW1wRmlsZVN5bWxpbmtQYXRoKTsKLQotICAgICAgICBtX3RlbXBFbXB0
eUZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoInRlbXBFbXB0eVRlc3RG
aWxlIiwgaGFuZGxlKTsKLSAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7Ci0K
LSAgICAgICAgbV9zcGFjZUNvbnRhaW5pbmdGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1w
b3JhcnlGaWxlKCJ0ZW1wIEVtcHR5IFRlc3QgRmlsZSIsIGhhbmRsZSk7Ci0gICAgICAgIEZpbGVT
eXN0ZW06OmNsb3NlRmlsZShoYW5kbGUpOwotCi0gICAgICAgIG1fYmFuZ0NvbnRhaW5pbmdGaWxl
UGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wIUVtcHR5IVRlc3QhRmls
ZSIsIGhhbmRsZSk7Ci0gICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUpOwotCi0g
ICAgICAgIG1fcXVvdGVDb250YWluaW5nRmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9y
YXJ5RmlsZSgidGVtcFwiRW1wdHlcIlRlc3RGaWxlIiwgaGFuZGxlKTsKLSAgICAgICAgRmlsZVN5
c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7Ci0gICAgfQotCi0gICAgdm9pZCBUZWFyRG93bigpIG92
ZXJyaWRlCi0gICAgewotICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fdGVtcEZpbGVQ
YXRoKTsKLSAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX3RlbXBGaWxlU3ltbGlua1Bh
dGgpOwotICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fdGVtcEVtcHR5RmlsZVBhdGgp
OwotICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fc3BhY2VDb250YWluaW5nRmlsZVBh
dGgpOwotICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fYmFuZ0NvbnRhaW5pbmdGaWxl
UGF0aCk7Ci0gICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9xdW90ZUNvbnRhaW5pbmdG
aWxlUGF0aCk7Ci0gICAgfQotCi0gICAgY29uc3QgU3RyaW5nJiB0ZW1wRmlsZVBhdGgoKSB7IHJl
dHVybiBtX3RlbXBGaWxlUGF0aDsgfQotICAgIGNvbnN0IFN0cmluZyYgdGVtcEZpbGVTeW1saW5r
UGF0aCgpIHsgcmV0dXJuIG1fdGVtcEZpbGVTeW1saW5rUGF0aDsgfQotICAgIGNvbnN0IFN0cmlu
ZyYgdGVtcEVtcHR5RmlsZVBhdGgoKSB7IHJldHVybiBtX3RlbXBFbXB0eUZpbGVQYXRoOyB9Ci0g
ICAgY29uc3QgU3RyaW5nJiBzcGFjZUNvbnRhaW5pbmdGaWxlUGF0aCgpIHsgcmV0dXJuIG1fc3Bh
Y2VDb250YWluaW5nRmlsZVBhdGg7IH0KLSAgICBjb25zdCBTdHJpbmcmIGJhbmdDb250YWluaW5n
RmlsZVBhdGgoKSB7IHJldHVybiBtX2JhbmdDb250YWluaW5nRmlsZVBhdGg7IH0KLSAgICBjb25z
dCBTdHJpbmcmIHF1b3RlQ29udGFpbmluZ0ZpbGVQYXRoKCkgeyByZXR1cm4gbV9xdW90ZUNvbnRh
aW5pbmdGaWxlUGF0aDsgfQotCi1wcml2YXRlOgotICAgIFN0cmluZyBtX3RlbXBGaWxlUGF0aDsK
LSAgICBTdHJpbmcgbV90ZW1wRmlsZVN5bWxpbmtQYXRoOwotICAgIFN0cmluZyBtX3RlbXBFbXB0
eUZpbGVQYXRoOwotICAgIFN0cmluZyBtX3NwYWNlQ29udGFpbmluZ0ZpbGVQYXRoOwotICAgIFN0
cmluZyBtX2JhbmdDb250YWluaW5nRmlsZVBhdGg7Ci0gICAgU3RyaW5nIG1fcXVvdGVDb250YWlu
aW5nRmlsZVBhdGg7Ci19OwotCi1URVNUX0YoRmlsZVN5c3RlbVRlc3QsIE1hcHBpbmdNaXNzaW5n
RmlsZSkKLXsKLSAgICBib29sIHN1Y2Nlc3M7Ci0gICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURh
dGEgbWFwcGVkRmlsZURhdGEoU3RyaW5nKCJub3RfZXhpc3RpbmdfZmlsZSIpLCBzdWNjZXNzKTsK
LSAgICBFWFBFQ1RfRkFMU0Uoc3VjY2Vzcyk7Ci0gICAgRVhQRUNUX1RSVUUoIW1hcHBlZEZpbGVE
YXRhKTsKLX0KLQotVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBNYXBwaW5nRXhpc3RpbmdGaWxlKQot
ewotICAgIGJvb2wgc3VjY2VzczsKLSAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBw
ZWRGaWxlRGF0YSh0ZW1wRmlsZVBhdGgoKSwgc3VjY2Vzcyk7Ci0gICAgRVhQRUNUX1RSVUUoc3Vj
Y2Vzcyk7Ci0gICAgRVhQRUNUX1RSVUUoISFtYXBwZWRGaWxlRGF0YSk7Ci0gICAgRVhQRUNUX1RS
VUUobWFwcGVkRmlsZURhdGEuc2l6ZSgpID09IHN0cmxlbihGaWxlU3lzdGVtVGVzdERhdGEpKTsK
LSAgICBFWFBFQ1RfVFJVRShzdHJuc3RyKEZpbGVTeXN0ZW1UZXN0RGF0YSwgc3RhdGljX2Nhc3Q8
Y29uc3QgY2hhcio+KG1hcHBlZEZpbGVEYXRhLmRhdGEoKSksIG1hcHBlZEZpbGVEYXRhLnNpemUo
KSkpOwotfQotCi1URVNUX0YoRmlsZVN5c3RlbVRlc3QsIE1hcHBpbmdFeGlzdGluZ0VtcHR5Rmls
ZSkKLXsKLSAgICBib29sIHN1Y2Nlc3M7Ci0gICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEg
bWFwcGVkRmlsZURhdGEodGVtcEVtcHR5RmlsZVBhdGgoKSwgc3VjY2Vzcyk7Ci0gICAgRVhQRUNU
X1RSVUUoc3VjY2Vzcyk7Ci0gICAgRVhQRUNUX1RSVUUoIW1hcHBlZEZpbGVEYXRhKTsKLX0KLQot
VEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBGaWxlc0hhdmVTYW1lVm9sdW1lKQotewotICAgIEVYUEVD
VF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVzSGF2ZVNhbWVWb2x1bWUodGVtcEZpbGVQYXRoKCksIHNw
YWNlQ29udGFpbmluZ0ZpbGVQYXRoKCkpKTsKLSAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpm
aWxlc0hhdmVTYW1lVm9sdW1lKHNwYWNlQ29udGFpbmluZ0ZpbGVQYXRoKCksIGJhbmdDb250YWlu
aW5nRmlsZVBhdGgoKSkpOwotICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVzSGF2ZVNh
bWVWb2x1bWUoYmFuZ0NvbnRhaW5pbmdGaWxlUGF0aCgpLCBxdW90ZUNvbnRhaW5pbmdGaWxlUGF0
aCgpKSk7Ci19Ci0KLVRFU1RfRihGaWxlU3lzdGVtVGVzdCwgR2V0RmlsZU1ldGFkYXRhU3ltbGlu
aykKLXsKLSAgICBhdXRvIHN5bWxpbmtNZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0
YSh0ZW1wRmlsZVN5bWxpbmtQYXRoKCkpOwotICAgIEFTU0VSVF9UUlVFKHN5bWxpbmtNZXRhZGF0
YS5oYXNWYWx1ZSgpKTsKLSAgICBFWFBFQ1RfVFJVRShzeW1saW5rTWV0YWRhdGEudmFsdWUoKS50
eXBlID09IEZpbGVNZXRhZGF0YTo6VHlwZTo6U3ltYm9saWNMaW5rKTsKLSAgICBFWFBFQ1RfRkFM
U0Uoc3RhdGljX2Nhc3Q8c2l6ZV90PihzeW1saW5rTWV0YWRhdGEudmFsdWUoKS5sZW5ndGgpID09
IHN0cmxlbihGaWxlU3lzdGVtVGVzdERhdGEpKTsKLQotICAgIGF1dG8gdGFyZ2V0TWV0YWRhdGEg
PSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyh0ZW1wRmlsZVN5bWxp
bmtQYXRoKCkpOwotICAgIEFTU0VSVF9UUlVFKHRhcmdldE1ldGFkYXRhLmhhc1ZhbHVlKCkpOwot
ICAgIEVYUEVDVF9UUlVFKHRhcmdldE1ldGFkYXRhLnZhbHVlKCkudHlwZSA9PSBGaWxlTWV0YWRh
dGE6OlR5cGU6OkZpbGUpOwotICAgIEVYUEVDVF9FUShzdHJsZW4oRmlsZVN5c3RlbVRlc3REYXRh
KSwgc3RhdGljX2Nhc3Q8c2l6ZV90Pih0YXJnZXRNZXRhZGF0YS52YWx1ZSgpLmxlbmd0aCkpOwot
fQotCi1URVNUX0YoRmlsZVN5c3RlbVRlc3QsIFVuaWNvZGVEaXJlY3RvcnlOYW1lKQotewotICAg
IFN0cmluZyBwYXRoID0gU3RyaW5nOjpmcm9tVVRGOCgiL3Rlc3QvYVx1MDMwOGxvL3Rlc3QudHh0
Iik7Ci0gICAgU3RyaW5nIGRpcmVjdG9yeU5hbWUgPSBGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1l
KHBhdGgpOwotICAgIFN0cmluZyBleHBlY3RlZERpcmVjdG9yeU5hbWUgPSBTdHJpbmc6OmZyb21V
VEY4KCIvdGVzdC9hXHUwMzA4bG8iKTsKLSAgICBFWFBFQ1RfVFJVRShleHBlY3RlZERpcmVjdG9y
eU5hbWUgPT0gZGlyZWN0b3J5TmFtZSk7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TZWN1cml0eU9yaWdpbi5jcHAgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2VjdXJpdHlPcmlnaW4uY3BwCmluZGV4IGRhNWY0ZmY1ODk4
YTlmMDljOGI4Mzk1YTU1ZGU3MzhmMTY4YzkwOWYuLmE0MWFiNGJjYTM3MWQ0NWRlOGNiNDU4Njg1
YmM5NzRlMzBmNDA2ZjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9TZWN1cml0eU9yaWdpbi5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmNwcApAQCAtMjYsOCArMjYsOCBAQAogCiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiV1RGU3RyaW5nVXRpbGl0aWVzLmgiCi0jaW5jbHVkZSA8V2Vi
Q29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgor
I2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4K
ICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmNwcAppbmRleCA4ZmUzNTY3YzFlMTEzNjkx
ZDg1YjdjNTVhMWY5NjY1OWRlOWQxZjI0Li45YjhiMTNhNzVkNTJmZjk1MWVhZDE4MTg1ZDU2YzM3
OTFiMmQ3YmVkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
U2hhcmVkQnVmZmVyVGVzdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL1NoYXJlZEJ1ZmZlclRlc3QuY3BwCkBAIC0yNiwxMSArMjYsOSBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlclRlc3QuaCIKIAotI2luY2x1ZGUgPFdlYkNv
cmUvRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8
d3RmL01haW5UaHJlYWQuaD4KIAotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KIG5hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJIHsKIAogdm9pZCBTaGFyZWRCdWZmZXJUZXN0OjpTZXRVcCgpCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvRGF0YWJhc2VU
cmFja2VyVGVzdC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9E
YXRhYmFzZVRyYWNrZXJUZXN0Lm1tCmluZGV4IDZhM2M3MDI4MGE0ZWRlMDA5MTAyZWU5OTc2YjM2
N2MyNmFiN2ZlZTcuLjIyMTcxNTZmNmU1NjkxNWE3NWQ0NDg4NGVhZDUxNzE5YTdjNTI5MTEgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9EYXRhYmFz
ZVRyYWNrZXJUZXN0Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9j
b2NvYS9EYXRhYmFzZVRyYWNrZXJUZXN0Lm1tCkBAIC0yNiwxMSArMjYsMTEgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKIAogI2luY2x1ZGUgPFdlYkNvcmUvRGF0YWJhc2VUcmFja2VyLmg+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9PcmlnaW5Mb2Nr
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVEYXRhYmFzZS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvU1FMaXRlU3RhdGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRh
dGEuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2N1
cmwvQ29va2llcy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY3VybC9D
b29raWVzLmNwcAppbmRleCAxYjhkN2ZjM2NkZTUwMjk5ZTMwYWQ2YzZkOGNhMTYyN2YyMzkwYzFm
Li5iNDBiMGQ1YTBhNWU1ZmI1ZjQ5MTlhM2RhMmMyZmVkNmZjYmMxYzRlIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY3VybC9Db29raWVzLmNwcAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY3VybC9Db29raWVzLmNwcApAQCAtMjks
OCArMjksOCBAQAogCiAjaW5jbHVkZSA8V2ViQ29yZS9Db29raWVKYXJEQi5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvQ29va2llVXRpbC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgog
I2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvRG93bmxvYWQubW0KaW5kZXggNjBjYzkzYjM0MGRkNjgwOTQxYzQxYTJhNWFhMGJh
OTIzYjVhZWM2NC4uNjgxYjAyY2E5Yzg3ZGFlYzM3MjYyMjQ2MTdkMWM1OTIwODhkN2E2YyAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5t
bQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1t
CkBAIC0zMyw3ICszMyw2IEBACiAjaW1wb3J0ICJUZXN0LmgiCiAjaW1wb3J0ICJUZXN0UHJvdG9j
b2wuaCIKICNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKLSNpbXBvcnQgPFdlYkNvcmUvRmlsZVN5
c3RlbS5oPgogI2ltcG9ydCA8V2ViS2l0L19XS0Rvd25sb2FkLmg+CiAjaW1wb3J0IDxXZWJLaXQv
X1dLRG93bmxvYWREZWxlZ2F0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLTmF2aWdhdGlvbkRlbGVn
YXRlUHJpdmF0ZS5oPgpAQCAtNDEsNiArNDAsNyBAQAogI2ltcG9ydCA8V2ViS2l0L1dLVUlEZWxl
Z2F0ZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXcuaD4KICNpbXBvcnQgPFdl
YktpdC9XS1dlYlZpZXdDb25maWd1cmF0aW9uLmg+CisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5o
PgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4K
ICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtOTQsMTAgKzk0LDEwIEBAIElHTk9S
RV9XQVJOSU5HU19FTkQKICAgICBFWFBFQ1RfVFJVRShoYXNSZWNlaXZlZFJlc3BvbnNlKTsKICAg
ICBFWFBFQ1RfRVEoX2Rvd25sb2FkLCBkb3dubG9hZCk7CiAKLSAgICBXZWJDb3JlOjpGaWxlU3lz
dGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRsZTsKLSAgICBfZGVzdGluYXRpb25QYXRo
ID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoIlRlc3RXZWJLaXRBUEki
LCBmaWxlSGFuZGxlKTsKLSAgICBFWFBFQ1RfVFJVRShmaWxlSGFuZGxlICE9IFdlYkNvcmU6OkZp
bGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpOwotICAgIFdlYkNvcmU6OkZpbGVT
eXN0ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZp
bGVIYW5kbGUgZmlsZUhhbmRsZTsKKyAgICBfZGVzdGluYXRpb25QYXRoID0gRmlsZVN5c3RlbTo6
b3BlblRlbXBvcmFyeUZpbGUoIlRlc3RXZWJLaXRBUEkiLCBmaWxlSGFuZGxlKTsKKyAgICBFWFBF
Q1RfVFJVRShmaWxlSGFuZGxlICE9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5k
bGUpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsKIAogICAgICphbGxv
d092ZXJ3cml0ZSA9IFlFUzsKICAgICByZXR1cm4gX2Rlc3RpbmF0aW9uUGF0aDsKQEAgLTEwOSw3
ICsxMDksNyBAQCAtICh2b2lkKV9kb3dubG9hZERpZEZpbmlzaDooX1dLRG93bmxvYWQgKilkb3du
bG9hZAogICAgIEVYUEVDVF9FUShleHBlY3RlZFVzZXJJbml0aWF0ZWRTdGF0ZSwgZG93bmxvYWQu
d2FzVXNlckluaXRpYXRlZCk7CiAgICAgRVhQRUNUX1RSVUUoX2V4cGVjdGVkQ29udGVudExlbmd0
aCA9PSBOU1VSTFJlc3BvbnNlVW5rbm93bkxlbmd0aCB8fCBzdGF0aWNfY2FzdDx1aW50NjRfdD4o
X2V4cGVjdGVkQ29udGVudExlbmd0aCkgPT0gX3JlY2VpdmVkQ29udGVudExlbmd0aCk7CiAgICAg
RVhQRUNUX1RSVUUoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjb250ZW50c0VxdWFs
QXRQYXRoOl9kZXN0aW5hdGlvblBhdGggYW5kUGF0aDpbc291cmNlVVJMIHBhdGhdXSk7Ci0gICAg
V2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShfZGVzdGluYXRpb25QYXRoKTsKKyAgICBG
aWxlU3lzdGVtOjpkZWxldGVGaWxlKF9kZXN0aW5hdGlvblBhdGgpOwogICAgIGlzRG9uZSA9IHRy
dWU7CiB9CiAKQEAgLTM5NywxMCArMzk3LDEwIEBAIElHTk9SRV9XQVJOSU5HU19FTkQKICAgICBF
WFBFQ1RfVFJVRShoYXNSZWNlaXZlZFJlc3BvbnNlKTsKICAgICBFWFBFQ1RfRVEoX2Rvd25sb2Fk
LCBkb3dubG9hZCk7CiAKLSAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5k
bGUgZmlsZUhhbmRsZTsKLSAgICBfZGVzdGluYXRpb25QYXRoID0gV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6b3BlblRlbXBvcmFyeUZpbGUoIlRlc3RXZWJLaXRBUEkiLCBmaWxlSGFuZGxlKTsKLSAgICBF
WFBFQ1RfVFJVRShmaWxlSGFuZGxlICE9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmludmFsaWRQbGF0
Zm9ybUZpbGVIYW5kbGUpOwotICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxl
SGFuZGxlKTsKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRsZTsK
KyAgICBfZGVzdGluYXRpb25QYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoIlRl
c3RXZWJLaXRBUEkiLCBmaWxlSGFuZGxlKTsKKyAgICBFWFBFQ1RfVFJVRShmaWxlSGFuZGxlICE9
IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpOworICAgIEZpbGVTeXN0ZW06
OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsKIAogICAgICphbGxvd092ZXJ3cml0ZSA9IFlFUzsKICAg
ICByZXR1cm4gX2Rlc3RpbmF0aW9uUGF0aDsKQEAgLTQxNCw3ICs0MTQsNyBAQCAtICh2b2lkKV9k
b3dubG9hZERpZEZpbmlzaDooX1dLRG93bmxvYWQgKilkb3dubG9hZAogICAgIE5TU3RyaW5nKiBl
eHBlY3RlZENvbnRlbnQgPSBAIntcInhcIjo0MixcInNcIjpcImhlbGxvLCB3b3JsZFwifSI7CiAg
ICAgTlNEYXRhKiBleHBlY3RlZERhdGEgPSBbZXhwZWN0ZWRDb250ZW50IGRhdGFVc2luZ0VuY29k
aW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKICAgICBFWFBFQ1RfVFJVRShbW1tOU0ZpbGVNYW5h
Z2VyIGRlZmF1bHRNYW5hZ2VyXSBjb250ZW50c0F0UGF0aDpfZGVzdGluYXRpb25QYXRoXSBpc0Vx
dWFsVG9EYXRhOmV4cGVjdGVkRGF0YV0pOwotICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0
ZUZpbGUoX2Rlc3RpbmF0aW9uUGF0aCk7CisgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShfZGVz
dGluYXRpb25QYXRoKTsKICAgICBpc0RvbmUgPSB0cnVlOwogfQogCkBAIC00NTcsMTAgKzQ1Nywx
MCBAQCBJR05PUkVfV0FSTklOR1NfQkVHSU4oImRlcHJlY2F0ZWQtaW1wbGVtZW50YXRpb25zIikK
IC0gKE5TU3RyaW5nICopX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRlY2lkZURl
c3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOihOU1N0cmluZyAqKWZpbGVuYW1lIGFsbG93
T3ZlcndyaXRlOihCT09MICopYWxsb3dPdmVyd3JpdGUKIElHTk9SRV9XQVJOSU5HU19FTkQKIHsK
LSAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRsZTsK
LSAgICBfZGVzdGluYXRpb25QYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6b3BlblRlbXBvcmFy
eUZpbGUoIlRlc3RXZWJLaXRBUEkiLCBmaWxlSGFuZGxlKTsKLSAgICBFWFBFQ1RfVFJVRShmaWxl
SGFuZGxlICE9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUp
OwotICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsKKyAgICBG
aWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRsZTsKKyAgICBfZGVzdGluYXRp
b25QYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoIlRlc3RXZWJLaXRBUEkiLCBm
aWxlSGFuZGxlKTsKKyAgICBFWFBFQ1RfVFJVRShmaWxlSGFuZGxlICE9IEZpbGVTeXN0ZW06Omlu
dmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxl
SGFuZGxlKTsKICAgICAqYWxsb3dPdmVyd3JpdGUgPSBZRVM7CiAgICAgcmV0dXJuIF9kZXN0aW5h
dGlvblBhdGg7CiB9CkBAIC00ODcsNyArNDg3LDcgQEAgLSAodm9pZClfZG93bmxvYWREaWRGaW5p
c2g6KF9XS0Rvd25sb2FkICopZG93bmxvYWQKICAgICBpZiAocmVkaXJlY3RDaGFpbi5jb3VudCA+
IDIpCiAgICAgICAgIEVYUEVDVF9TVFJFUSgiaHR0cDovL3Bhc3MvIiwgW3JlZGlyZWN0Q2hhaW5b
Ml0uYWJzb2x1dGVTdHJpbmcgVVRGOFN0cmluZ10pOwogCi0gICAgV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6ZGVsZXRlRmlsZShfZGVzdGluYXRpb25QYXRoKTsKKyAgICBGaWxlU3lzdGVtOjpkZWxldGVG
aWxlKF9kZXN0aW5hdGlvblBhdGgpOwogICAgIGlzRG9uZSA9IHRydWU7CiB9CiAKQEAgLTYzMiwx
NyArNjMyLDE3IEBAIC0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRl
Y2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lCiB7CiAgICAgRVhQRUNUX1RSVUUo
W2ZpbGVuYW1lIGhhc1N1ZmZpeDpAIi51c2R6Il0pOwogCi0gICAgV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGVIYW5kbGU7Ci0gICAgX2Rlc3RpbmF0aW9uUGF0aCA9
IFdlYkNvcmU6OkZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKGZpbGVuYW1lLCBmaWxlSGFu
ZGxlKTsKLSAgICBFWFBFQ1RfVFJVRShmaWxlSGFuZGxlICE9IFdlYkNvcmU6OkZpbGVTeXN0ZW06
OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpOwotICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmNs
b3NlRmlsZShmaWxlSGFuZGxlKTsKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUg
ZmlsZUhhbmRsZTsKKyAgICBfZGVzdGluYXRpb25QYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBv
cmFyeUZpbGUoZmlsZW5hbWUsIGZpbGVIYW5kbGUpOworICAgIEVYUEVDVF9UUlVFKGZpbGVIYW5k
bGUgIT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7CisgICAgRmlsZVN5
c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOwogCiAgICAgY29tcGxldGlvbkhhbmRsZXIoWUVT
LCBfZGVzdGluYXRpb25QYXRoKTsKIH0KIAogLSAodm9pZClfZG93bmxvYWREaWRGaW5pc2g6KF9X
S0Rvd25sb2FkICopZG93bmxvYWQKIHsKLSAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVG
aWxlKF9kZXN0aW5hdGlvblBhdGgpOworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoX2Rlc3Rp
bmF0aW9uUGF0aCk7CiAgICAgaXNEb25lID0gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZFByb2dyZXNzLm1tIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZFByb2dyZXNzLm1tCmlu
ZGV4IGY1NjBkZjNmNGM0MmUyNGU2NWIzYmY2Mjg3MWI1ZmFkYzE5YTVmNjUuLjNlYjAzZjA0YTFk
ZDhhOGUxNzY3ODNkNWVmZmQ0ODM0N2E5MGRhMDAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWRQcm9ncmVzcy5tbQorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkUHJvZ3Jlc3MubW0KQEAgLTI4
LDcgKzI4LDYgQEAKICNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKICNpbXBvcnQgIlV0aWxpdGll
cy5oIgogI2ltcG9ydCA8Rm91bmRhdGlvbi9OU1Byb2dyZXNzLmg+Ci0jaW1wb3J0IDxXZWJDb3Jl
L0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPFdlYktpdC9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xs
ZXIuaD4KICNpbXBvcnQgPFdlYktpdC9XS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaD4KICNp
bXBvcnQgPFdlYktpdC9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oPgpAQCAtMzcsNiArMzYsNyBAQAog
I2ltcG9ydCA8V2ViS2l0L19XS0Rvd25sb2FkRGVsZWdhdGUuaD4KICNpbXBvcnQgPHBhbC9zcGkv
Y29jb2EvTlNQcm9ncmVzc1NQSS5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CisjaW1wb3J0
IDx3dGYvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8
d3RmL1dlYWtPYmpDUHRyLmg+CiAKQEAgLTM4MCwxMCArMzgwLDEwIEBAIC0gKHZvaWQpX2Rvd25s
b2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3Rl
ZEZpbGVuYW1lCiB7CiAgICAgRVhQRUNUX0VRKGRvd25sb2FkLCBtX2Rvd25sb2FkLmdldCgpKTsK
IAotICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlSGFuZGxl
OwotICAgIFJldGFpblB0cjxOU1N0cmluZz4gcGF0aCA9IChOU1N0cmluZyAqKVdlYkNvcmU6OkZp
bGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJUZXN0V2ViS2l0QVBJIiwgZmlsZUhhbmRsZSk7
Ci0gICAgRVhQRUNUX1RSVUUoZmlsZUhhbmRsZSAhPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjppbnZh
bGlkUGxhdGZvcm1GaWxlSGFuZGxlKTsKLSAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpjbG9zZUZp
bGUoZmlsZUhhbmRsZSk7CisgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGVI
YW5kbGU7CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBwYXRoID0gKE5TU3RyaW5nICopRmlsZVN5
c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoIlRlc3RXZWJLaXRBUEkiLCBmaWxlSGFuZGxlKTsKKyAg
ICBFWFBFQ1RfVFJVRShmaWxlSGFuZGxlICE9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZp
bGVIYW5kbGUpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsKIAogICAg
IGNvbXBsZXRpb25IYW5kbGVyKFlFUywgcGF0aC5nZXQoKSk7CiB9CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL3dpbi9QbGF0Zm9ybVV0aWxpdGllc1dpbi5jcHAgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL3dpbi9QbGF0Zm9ybVV0aWxpdGllc1dpbi5jcHAKaW5kZXggMDU2YmZmNzc4Mjk1
MjhiMTI5MGYxMmUzOWFiMjM4YjBmNjg2OGI4Ni4uMzVmMjJlMmE4YjFiZmU1MGE0NzA1OTA5MTgz
NDcyMzY3OWEzZDdmZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS93aW4vUGxhdGZv
cm1VdGlsaXRpZXNXaW4uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL1BsYXRmb3Jt
VXRpbGl0aWVzV2luLmNwcApAQCAtMjcsNyArMjcsNyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtVXRp
bGl0aWVzLmgiCiAKICNpbmNsdWRlIDxTaGx3YXBpLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9GaWxl
U3lzdGVtLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvVVJM
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+CiAKQEAgLTQw
LDE5ICs0MCwxOSBAQCBzdGF0aWMgU3RyaW5nIG1vZHVsZURpcmVjdG9yeSgpCiAgICAgd2NoYXJf
dCBmaWxlbmFtZVtidWZmZXJMZW5ndGhdOwogICAgIGF1dG8gbGVuID0gR2V0TW9kdWxlRmlsZU5h
bWUobnVsbHB0ciwgZmlsZW5hbWUsIGJ1ZmZlckxlbmd0aCk7CiAgICAgQVNTRVJUKGxlbiA+IDAp
OwotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKHdjaGFyVG9T
dHJpbmcoZmlsZW5hbWUsIGxlbikpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpkaXJlY3RvcnlO
YW1lKHdjaGFyVG9TdHJpbmcoZmlsZW5hbWUsIGxlbikpOwogfQogCiBXS1N0cmluZ1JlZiBjcmVh
dGVJbmplY3RlZEJ1bmRsZVBhdGgoKQogewotICAgIGF1dG8gcGF0aCA9IFdlYkNvcmU6OkZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtb2R1bGVEaXJlY3RvcnkoKSwgU3RyaW5n
KEwiVGVzdFdlYktpdEFQSUluamVjdGVkQnVuZGxlLmRsbCIpKTsKKyAgICBhdXRvIHBhdGggPSBG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobW9kdWxlRGlyZWN0b3J5KCksIFN0
cmluZyhMIlRlc3RXZWJLaXRBUElJbmplY3RlZEJ1bmRsZS5kbGwiKSk7CiAgICAgcmV0dXJuIFdL
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHBhdGgudXRmOCgpLmRhdGEoKSk7CiB9CiAKIFdL
VVJMUmVmIGNyZWF0ZVVSTEZvclJlc291cmNlKGNvbnN0IGNoYXIqIHJlc291cmNlLCBjb25zdCBj
aGFyKiBleHRlbnNpb24pCiB7CiAgICAgU3RyaW5nIGZpbGVuYW1lID0gU3RyaW5nOjpmb3JtYXQo
Ii4uXFwuLlxcLi5cXFRvb2xzXFxUZXN0V2ViS2l0QVBJXFxUZXN0c1xcV2ViS2l0XFwlcy4lcyIs
IHJlc291cmNlLCBleHRlbnNpb24pOwotICAgIGF1dG8gdXJsID0gVVJMOjpmaWxlVVJMV2l0aEZp
bGVTeXN0ZW1QYXRoKFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChtb2R1bGVEaXJlY3RvcnkoKSwgZmlsZW5hbWUpKTsKKyAgICBhdXRvIHVybCA9IFVSTDo6Zmls
ZVVSTFdpdGhGaWxlU3lzdGVtUGF0aChGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQobW9kdWxlRGlyZWN0b3J5KCksIGZpbGVuYW1lKSk7CiAgICAgcmV0dXJuIFdLVVJMQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKHVybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359839</attachid>
            <date>2019-01-22 19:41:30 -0800</date>
            <delta_ts>2019-01-23 02:09:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193602-20190122194129.patch</filename>
            <type>text/plain</type>
            <size>436737</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwMzE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDE3YjJmOWRmY2FmNDM2MGJmOWZlMjQ2
ZDQ4ZmFkYmNmNTIyYTUwZjcuLjllODc5NmM0MGQ0ZGRjNDYwMWUyZWI0ODc1ZDVjZTA3ZTUxMTE4
ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTktMDEtMjIgIFJvc3MgS2lyc2xpbmcgIDxyb3Nz
LmtpcnNsaW5nQHNvbnkuY29tPgorCisgICAgICAgIE1vdmUgRmlsZVN5c3RlbSB0byBXVEYKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzYwMgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV1RGLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0OgorICAg
ICAgICAqIHd0Zi9GaWxlTWV0YWRhdGEuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0ZpbGVNZXRhZGF0YS5oLgorICAgICAgICAqIHd0Zi9GaWxlU3lzdGVtLmNwcDogUmVu
YW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwLgorICAgICAg
ICAqIHd0Zi9GaWxlU3lzdGVtLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9GaWxlU3lzdGVtLmguCisgICAgICAgICogd3RmL1BsYXRmb3JtR1RLLmNtYWtlOgorICAgICAg
ICAqIHd0Zi9QbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1QbGF5U3Rh
dGlvbi5jbWFrZToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1XUEUuY21ha2U6CisgICAgICAgICog
d3RmL1BsYXRmb3JtV2luLmNtYWtlOgorICAgICAgICAqIHd0Zi9jZi9GaWxlU3lzdGVtQ0YuY3Bw
OiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvRmlsZVN5c3RlbUNGLmNw
cC4KKyAgICAgICAgKiB3dGYvY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tOiBSZW5hbWVkIGZyb20g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tLgorICAgICAg
ICAqIHd0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwLgorICAgICAgICAqIHd0Zi9tYWMv
RmlsZVN5c3RlbU1hYy5tbTogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9GaWxlU3lzdGVtTWFjLm1tLgorICAgICAgICAqIHd0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVgu
Y3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3Rl
bVBPU0lYLmNwcC4KKyAgICAgICAgKiB3dGYvc3BpL21hYy9NZXRhZGF0YVNQSS5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvbWFjL01ldGFkYXRhU1BJLmguCisgICAg
ICAgICogd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2luLmNwcC4KKyAgICAgICAgKiB3dGYvd2luL1Bh
dGhXYWxrZXIuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bh
dGhXYWxrZXIuY3BwLgorICAgICAgICAqIHd0Zi93aW4vUGF0aFdhbGtlci5oOiBSZW5hbWVkIGZy
b20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BhdGhXYWxrZXIuaC4KKwogMjAxOS0wMS0y
MiAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNvbT4KIAogICAgICAgICBDYWNoZSBi
eXRlY29kZSB0byBkaXNrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWFhYWJiMGIwNDY2M2I2YmYwYWRmMjJlYmFi
M2RmZWYzNmFhYWVjNi4uOGNiMTNkMDhlYjVmMzdhMGZhMzNkODQxOWJkOWUwZDg0ZWVlMmU1NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDgxIEBACisyMDE5LTAxLTIyICBSb3NzIEtpcnNsaW5nICA8
cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KKworICAgICAgICBNb3ZlIEZpbGVTeXN0ZW0gdG8gV1RG
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM2MDIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNlc3Npb24uY3BwOgorICAgICAgICAqIE1vZHVsZXMv
ZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2VudHJpZXNh
cGkvRmlsZVN5c3RlbUVudHJ5LmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZUlkZW50aWZpZXIuY3BwOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5jcHA6CisgICAgICAgICogTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0
YWJhc2UvT3JpZ2luTG9jay5jcHA6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9Pcmln
aW5Mb2NrLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9jb2NvYS9EYXRhYmFzZU1h
bmFnZXJDb2NvYS5tbToKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiBQ
bGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtV2luLmNtYWtlOgor
ICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0dDQ29udHJvbGxlci5jcHA6CisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlckl0ZW0u
Y3BwOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tOgor
ICAgICAgICAqIGZpbGVhcGkvRmlsZS5jcHA6CisgICAgICAgICogZmlsZWFwaS9GaWxlQ29jb2Eu
bW06CisgICAgICAgICogaHRtbC9GaWxlSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKiBodG1sL0Zp
bGVMaXN0Q3JlYXRvci5jcHA6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVIb3N0LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2UuY3BwOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgICogcGFnZS9T
ZWN1cml0eU9yaWdpbi5jcHA6CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL0ZpbGVIYW5kbGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9G
aWxlU3RyZWFtLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlU3RyZWFtLmg6CisgICAgICAg
ICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vU291cmNlc0dM
aWIudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL0ZpbGVNb25pdG9yQ29jb2EubW06Cisg
ICAgICAgICogcGxhdGZvcm0vZ2xpYi9GaWxlTW9uaXRvckdMaWIuY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW06
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lv
bkFWU3RyZWFtU2Vzc2lvbi5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLm1tOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mv
UXVpY2tMb29rLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0
ZWJvYXJkLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9C
bG9iUmVnaXN0cnlJbXBsLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNv
dXJjZUhhbmRsZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1t
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5Lmg6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRm9ybURhdGFTdHJlYW0uaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9tYWMvQmxvYkRhdGFGaWxlUmVmZXJlbmNlTWFjLm1tOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9z
cWwvU1FMaXRlRmlsZVN5c3RlbS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9oeXBoZW4v
SHlwaGVuYXRpb25MaWJIeXBoZW4uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TZWFyY2hQ
b3B1cE1lbnVEQi5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsuY3BwOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJUaGVtZVdpbi5jcHA6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9S
ZWdpc3RyYXRpb25EYXRhYmFzZS5jcHA6CisKIDIwMTktMDEtMjIgIFdlbnNvbiBIc2llaCAgPHdl
bnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHNvbWUgYmluZGluZ3MtcmVsYXRl
ZCBib29ra2VlcGluZyB0byBVbmRvTWFuYWdlciBhbmQgVW5kb0l0ZW0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9n
CmluZGV4IDM5ZDg0Y2ZiNzJiNGU0MjViZDk3M2M5N2I0Njg4OWFmNWFhZDU5MjUuLjQxYTVmZDhm
ZGY4NDFkMzdhMTk5OTc0YTVmYzIzMWIwOTdlODZkYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEzIEBACisyMDE5LTAxLTIyICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bz
b255LmNvbT4KKworICAgICAgICBNb3ZlIEZpbGVTeXN0ZW0gdG8gV1RGCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM2MDIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBBTC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIHBhbC9QbGF0Zm9ybU1hYy5jbWFrZToKKwogMjAxOS0wMS0y
MiAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFN3aXRjaCBy
ZW1haW5pbmcgUXVpY2tMb29rIHNvZnQtbGlua2luZyBpbiBXZWJDb3JlLCBXZWJLaXQgb3ZlciB0
byBRdWlja0xvb2tTb2Z0TGluay57Y3BwLGh9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDE4NTY4ZjdjOGNlMDg2ZGUy
Njk5Mzg3NmQ2MzQ1NzRiN2EzZTkxODcuLjgzZmFkNTczMWVjYThlNDA2YmFjMGE5Mjg3MTAxOWJh
YTA0MWYwMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODIgQEAKKzIwMTktMDEtMjIgIFJvc3MgS2ly
c2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgorCisgICAgICAgIE1vdmUgRmlsZVN5c3Rl
bSB0byBXVEYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5MzYwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lz
dGVudFN0b3JhZ2UuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFz
a0Jsb2IuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3Bw
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHA6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQmxvYlN0b3JhZ2UuY3BwOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuY3BwOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uY3BwOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uaDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxDb2Nv
YS5tbToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5u
ZWxTb3VwLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVT
dGF0aXN0aWNzLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0
YVRhc2tDb2NvYS5tbToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vz
c2lvbkNvY29hLm1tOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUHJvY2Vz
c01hYy5tbToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291
cC5jcHA6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy91bml4L1BsdWdpblByb2Nlc3NNYWluVW5p
eC5jcHA6CisgICAgICAgICogU2hhcmVkL1BlcnNpc3RlbmN5VXRpbHMuY3BwOgorICAgICAgICAq
IFNoYXJlZC9QbHVnaW5zL05ldHNjYXBlL3VuaXgvTmV0c2NhcGVQbHVnaW5Nb2R1bGVVbml4LmNw
cDoKKyAgICAgICAgKiBTaGFyZWQvUGx1Z2lucy91bml4L1BsdWdpblNlYXJjaFBhdGguY3BwOgor
ICAgICAgICAqIFNoYXJlZC9XZWJNZW1vcnlTYW1wbGVyLmg6CisgICAgICAgICogU2hhcmVkL2ds
aWIvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoR0xpYi5jcHA6CisgICAgICAgICogU2hhcmVkL2lvcy9D
aGlsZFByb2Nlc3NJT1MubW06CisgICAgICAgICogU2hhcmVkL21hYy9DaGlsZFByb2Nlc3NNYWMu
bW06CisgICAgICAgICogU2hhcmVkL21hYy9TYW5kYm94RXh0ZW5zaW9uTWFjLm1tOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHA6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHA6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdEZhdmljb25EYXRhYmFzZS5jcHA6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdEZpbGVDaG9vc2VyUmVxdWVzdC5jcHA6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuY3BwOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvd2luL0FQSVdlYnNpdGVEYXRhU3RvcmVXaW4uY3BwOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQubW06CisgICAgICAgICogVUlQcm9jZXNzL0Nv
Y29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW06CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dl
YlZpZXdJbXBsLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFn
ZS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9CdWJibGV3cmFwTGF1bmNoZXIuY3Bw
OgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9nbGliL1Byb2Nlc3NMYXVuY2hlckdMaWIu
Y3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL2d0ay9QbHVnaW5JbmZvQ2FjaGUuY3Bw
OgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5Qcm9jZXNzUHJveHlNYWMu
bW06CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5JbmZvU3RvcmVVbml4
LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpblByb2Nlc3NQcm94
eVVuaXguY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5
LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFz
ZS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJh
c2VUcmFja2VyLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vi
c2l0ZURhdGFTdG9yZUNvY29hLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNz
UHJveHlHTGliLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dlYkluc3BlY3RvclByb3h5
R3RrLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NQb29sR3RrLmNwcDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRmlsZVVwbG9hZFBhbmVsLm1tOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tOgorICAgICAgICAqIFVJUHJvY2Vz
cy93aW4vV2ViUHJvY2Vzc1Bvb2xXaW4uY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy93aW4vV2Vi
Vmlldy5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL3dwZS9XZWJQcm9jZXNzUG9vbFdQRS5jcHA6
CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRFeHRl
bnNpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL2ds
aWIvSW5qZWN0ZWRCdW5kbGVHbGliLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL01lZGlhQ2Fj
aGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViSW5zcGVjdG9yVUlHdGsuY3BwOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS93aW4vV2ViSW5zcGVjdG9yVUlXaW4uY3BwOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tOgorCiAyMDE5LTAxLTIyICBN
ZWdhbiBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CiAKICAgICAgICAgQ2FuY2Vs
IFdlYiBUb3VjaGVzIFByb3Blcmx5IHNvIHRoYXQgbG9uZyBwcmVzc2VzIG9uIFlvdVR1YmUgbGlu
a3MgZG8gbm90IGluY29ycmVjdGx5IHRyaWdnZXIgYSBsb2FkCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCmlu
ZGV4IDg3ZmU4YzNhOGM2MTZhMDQ3NWQ0YWYzNzQ2OTRkNDI2ZWM2ZmVmODQuLjU1MTY0YTE5ODQ5
NGU2MGU1ZTczZWExYTA5YWI5NjkxODRmN2Y2NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTQgQEAKKzIwMTktMDEtMjIgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNv
bnkuY29tPgorCisgICAgICAgIE1vdmUgRmlsZVN5c3RlbSB0byBXVEYKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzYwMgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU3RvcmFnZS9TdG9yYWdlQXJlYVN5
bmMuY3BwOgorICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmNwcDoKKyAgICAg
ICAgKiBTdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcDoKKwogMjAxOS0wMS0yMiAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCBzb21lIGJ1
aWxkcyBhZnRlciByMjQwMjkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggYzA3ZjQw
ZjJiYWI1ZDg5MWZmZjM4NzY4MmE1NGFhNzE5OTU3ZDIyNS4uNDY0OGRiMDk0MTUwNzcxYTY1NTVm
MjczMDI5Njk2ODc5NWQ2ODAwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE0IEBACisyMDE5LTAxLTIyICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255
LmNvbT4KKworICAgICAgICBNb3ZlIEZpbGVTeXN0ZW0gdG8gV1RGCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM2MDIKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1pc2MvV2ViTlNGaWxlTWFuYWdlckV4
dHJhcy5tbToKKyAgICAgICAgKiBTdG9yYWdlL1dlYkRhdGFiYXNlUHJvdmlkZXIubW06CisgICAg
ICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorCiAyMDE5LTAxLTIyICBBbGV4IENocmlzdGVuc2Vu
ICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgTW92ZSBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24gb3duZXJzaGlwIHRvIE5ldHdvcmtQcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFu
Z2VMb2cKaW5kZXggNGE2YzkwM2JhZjBlZTIxZjZkODQxNTM2MjhjZmNhZTU4NmVjZDE1ZC4uYjFl
YjY1NzQ2MmM3Njg1ZmE5ZWYzN2IxYTRlMTgwMWY2MWY0MDgwNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE5LTAxLTIyICBSb3NzIEtpcnNsaW5nICA8
cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KKworICAgICAgICBNb3ZlIEZpbGVTeXN0ZW0gdG8gV1RG
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM2MDIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsdWdp
bnMvUGx1Z2luRGF0YWJhc2UuY3BwOgorICAgICAgICAqIFBsdWdpbnMvUGx1Z2luUGFja2FnZS5o
OgorICAgICAgICAqIFBsdWdpbnMvUGx1Z2luU3RyZWFtLmg6CisgICAgICAgICogV2ViQXBwbGlj
YXRpb25DYWNoZS5jcHA6CisgICAgICAgICogV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcDoKKyAgICAg
ICAgKiBXZWJEb3dubG9hZEN1cmwuY3BwOgorICAgICAgICAqIFdlYlByZWZlcmVuY2VzLmNwcDoK
KyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKwogMjAxOS0wMS0yMiAgQWxleCBDaHJpc3RlbnNlbiAg
PGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIE1vdmUgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uIG93bmVyc2hpcCB0byBOZXR3b3JrUHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggYTIyMzk0OTBkMTEyZGNhNDZhNWFhNGJjZGVkMzVmZGJj
YWFlYzllOS4uZDA4Yzc5ZjJiODNhOGUxM2ZlZGRiOWNjMTE5ZjMxYTFhOWY5NzY3YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04OSw2ICs4OSwxMSBAQAog
CQk5MzkzNEJENTE4QTFGMTY5MDBEMEQ2QTEgLyogU3RyaW5nVmlld0NGLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzOTM0QkQ0MThBMUYxNjkwMEQw
RDZBMSAvKiBTdHJpbmdWaWV3Q0YuY3BwICovOyB9OwogCQk5M0YxOTkzRTE5RDc5NThEMDBDMjM5
MEIgLyogU3RyaW5nVmlldy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5M0YxOTkzRDE5RDc5NThEMDBDMjM5MEIgLyogU3RyaW5nVmlldy5jcHAgKi87
IH07CiAJCTlCQzcwRjA1MTc2QzM3OUQwMDEwMURFQyAvKiBBdG9taWNTdHJpbmdUYWJsZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QkM3MEYwNDE3
NkMzNzlEMDAxMDFERUMgLyogQXRvbWljU3RyaW5nVGFibGUuY3BwICovOyB9OworCQlBMzMxRDk1
QjIxRjI0OTkyMDA5RjAyQUEgLyogRmlsZVN5c3RlbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMzMxRDk1QTIxRjI0OTkyMDA5RjAyQUEgLyogRmls
ZVN5c3RlbS5jcHAgKi87IH07CisJCUEzMzFEOTVEMjFGMjQ5RTQwMDlGMDJBQSAvKiBGaWxlU3lz
dGVtQ0YuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTMzMUQ5NUMyMUYyNDlFNDAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1DRi5jcHAgKi87IH07CisJCUEz
MzFEOTVGMjFGMjQ5RjYwMDlGMDJBQSAvKiBGaWxlU3lzdGVtQ29jb2EubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMzMxRDk1RTIxRjI0OUY2MDA5RjAy
QUEgLyogRmlsZVN5c3RlbUNvY29hLm1tICovOyB9OworCQlBMzMxRDk2MTIxRjI0QTBBMDA5RjAy
QUEgLyogRmlsZVN5c3RlbU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEEzMzFEOTYwMjFGMjRBMEEwMDlGMDJBQSAvKiBGaWxlU3lzdGVtTWFjLm1t
ICovOyB9OworCQlBMzMxRDk2NzIxRjI0QUJEMDA5RjAyQUEgLyogRmlsZVN5c3RlbVBPU0lYLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzMzFEOTY2
MjFGMjRBQkQwMDlGMDJBQSAvKiBGaWxlU3lzdGVtUE9TSVguY3BwICovOyB9OwogCQlBM0I3MjVF
Qzk4NzQ0NkFEOTNGMUE0NDAgLyogUmFuZG9tRGV2aWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM4RjU5N0NBMkE1NzQxN0ZCQUI5MkZENiAvKiBS
YW5kb21EZXZpY2UuY3BwICovOyB9OwogCQlBM0U0REQ5MzFGM0E4MDM0MDBERUQwQjQgLyogVGV4
dFN0cmVhbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBM0U0REQ5MTFGM0E4MDM0MDBERUQwQjQgLyogVGV4dFN0cmVhbS5jcHAgKi87IH07CiAJCUE1
QkExNUYzMTgyNDMzQTkwMEE4MkU2OSAvKiBTdHJpbmdDb2NvYS5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QkExNUYyMTgyNDMzQTkwMEE4MkU2OSAv
KiBTdHJpbmdDb2NvYS5tbSAqLzsgfTsKQEAgLTQzMCw4ICs0MzUsMTYgQEAKIAkJOUM2N0M1NDI1
ODkzNDhFMjg1QjQ5Njk5IC8qIEluZGV4ZWRDb250YWluZXJJdGVyYXRvci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJbmRleGVkQ29udGFpbmVySXRlcmF0b3IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTMwRDQxMkMxRjBERTBCQTAwQjcxOTU0IC8qIFNvZnRM
aW5raW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvZnRMaW5raW5nLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzMEQ0MTJEMUYwREUxM0YwMEI3MTk1NCAv
KiBTb2Z0TGlua2luZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb2Z0TGlu
a2luZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMzMxRDk1ODIxRjI0OTc4MDA5
RjAyQUEgLyogRmlsZU1ldGFkYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEZpbGVNZXRhZGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMzMxRDk1OTIx
RjI0OTkyMDA5RjAyQUEgLyogRmlsZVN5c3RlbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBGaWxlU3lzdGVtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEzMzFE
OTVBMjFGMjQ5OTIwMDlGMDJBQSAvKiBGaWxlU3lzdGVtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEZpbGVTeXN0ZW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBMzMxRDk1QzIxRjI0OUU0MDA5RjAyQUEgLyogRmlsZVN5c3RlbUNGLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZpbGVTeXN0ZW1DRi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEzMzFEOTVFMjFGMjQ5RjYwMDlGMDJBQSAvKiBGaWxl
U3lzdGVtQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBG
aWxlU3lzdGVtQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEzMzFEOTYw
MjFGMjRBMEEwMDlGMDJBQSAvKiBGaWxlU3lzdGVtTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gRmlsZVN5c3RlbU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQTMzMUQ5NjYyMUYyNEFCRDAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1QT1NJWC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxlU3lzdGVtUE9TSVgu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMzZFMTZGNzIxNkZGODI4MDA4REQ4
N0UgLyogV1RGU2VtYXBob3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdU
RlNlbWFwaG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBM0FCNkU2QTFGM0Ux
QUQ2MDA5QzE0QjEgLyogVmFsdWVUb1N0cmluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBWYWx1ZVRvU3RyaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEz
RDI3M0I5MjFGMkVFOTEwMDg2Njk3MSAvKiBNZXRhZGF0YVNQSS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBNZXRhZGF0YVNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBM0U0REQ5MTFGM0E4MDM0MDBERUQwQjQgLyogVGV4dFN0cmVhbS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXh0U3RyZWFtLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTNFNEREOTIxRjNBODAzNDAwREVEMEI0IC8qIFRleHRTdHJlYW0u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dFN0cmVhbS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBNTA5OEFGRjFDMTY5RTA3MDAwODc3OTcgLyogU2FuZGJv
eFNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTYW5kYm94U1BJLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MTcsNiArNzMwLDcgQEAKIAkJCWNoaWxkcmVu
ID0gKAogCQkJCTVDMUYwNTkxMjE2NDM1NkIwMDM5MzAyQyAvKiBDRlVSTEV4dHJhcy5jcHAgKi8s
CiAJCQkJNUMxRjA1OTIyMTY0MzU2QjAwMzkzMDJDIC8qIENGVVJMRXh0cmFzLmggKi8sCisJCQkJ
QTMzMUQ5NUMyMUYyNDlFNDAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1DRi5jcHAgKi8sCiAJCQkJQzJC
Q0ZDNDExRjYxRDYxNjAwQzkyMjJDIC8qIExhbmd1YWdlQ0YuY3BwICovLAogCQkJCTJDREVEMEVF
MTgxMTVDMzgwMDREQkE3MCAvKiBSdW5Mb29wQ0YuY3BwICovLAogCQkJCTFBRkRFNjQ3MTk1MjAx
QzMwMEM0OEZGQSAvKiBUeXBlQ2FzdHNDRi5oICovLApAQCAtNzc0LDYgKzc4OCwyMiBAQAogCQkJ
bmFtZSA9IFNvdXJjZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCUEzMzFE
OTYzMjFGMjRBMkUwMDlGMDJBQSAvKiBwb3NpeCAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOwor
CQkJY2hpbGRyZW4gPSAoCisJCQkJQTMzMUQ5NjYyMUYyNEFCRDAwOUYwMkFBIC8qIEZpbGVTeXN0
ZW1QT1NJWC5jcHAgKi8sCisJCQkpOworCQkJcGF0aCA9IHBvc2l4OworCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKKwkJfTsKKwkJQTNEMjczQjgyMUYyRUU3QjAwODY2OTcxIC8qIG1hYyAqLyA9
IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQTNEMjczQjkyMUYy
RUU5MTAwODY2OTcxIC8qIE1ldGFkYXRhU1BJLmggKi8sCisJCQkpOworCQkJcGF0aCA9IG1hYzsK
KwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCUE1QkExNUYxMTgyNDMzOUYwMEE4
MkU2OSAvKiBjb2NvYSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CkBAIC04MDcsNiArODM3LDcgQEAKIAkJCQkxRkE0N0M4NzE1MjUwMkRBMDA1NjhEMUIgLyogaW9z
ICovLAogCQkJCUE4QTQ3MkM0MTUxQTgyNUEwMDQxMjNGRiAvKiBtYWMgKi8sCiAJCQkJRTQzQTQ2
ODUxRTIyOEI1NzAwMjc2QjA1IC8qIHBlcnNpc3RlbmNlICovLAorCQkJCUEzMzFEOTYzMjFGMjRB
MkUwMDlGMDJBQSAvKiBwb3NpeCAqLywKIAkJCQlDRUY0ODIwQzE5REEzNDc2MDBDQzA0QjggLyog
c3BpICovLAogCQkJCUE4QTQ3MzFCMTUxQTgyNUIwMDQxMjNGRiAvKiB0ZXh0ICovLAogCQkJCUE4
QTQ3MzM5MTUxQTgyNUIwMDQxMjNGRiAvKiB0aHJlYWRzICovLApAQCAtODk0LDggKzkyNSwxMSBA
QAogCQkJCUE4QTQ3MkEyMTUxQTgyNUEwMDQxMjNGRiAvKiBGYXN0TWFsbG9jLmggKi8sCiAJCQkJ
MEY3OUM3QzMxRTczNTExODAwRUIzNEQxIC8qIEZhc3RUTFMuaCAqLywKIAkJCQlCMzhGRDdCQzE2
ODk1M0U4MDA2NUM5NjkgLyogRmVhdHVyZURlZmluZXMuaCAqLywKKwkJCQlBMzMxRDk1ODIxRjI0
OTc4MDA5RjAyQUEgLyogRmlsZU1ldGFkYXRhLmggKi8sCiAJCQkJMEY5RDMzNUIxNjVEQkE3MzAw
NUFEMzg3IC8qIEZpbGVQcmludFN0cmVhbS5jcHAgKi8sCiAJCQkJMEY5RDMzNUMxNjVEQkE3MzAw
NUFEMzg3IC8qIEZpbGVQcmludFN0cmVhbS5oICovLAorCQkJCUEzMzFEOTVBMjFGMjQ5OTIwMDlG
MDJBQSAvKiBGaWxlU3lzdGVtLmNwcCAqLywKKwkJCQlBMzMxRDk1OTIxRjI0OTkyMDA5RjAyQUEg
LyogRmlsZVN5c3RlbS5oICovLAogCQkJCTBGMkI2NkE1MTdCNkI0RjcwMEE3QUUzRiAvKiBGbGlw
Qnl0ZXMuaCAqLywKIAkJCQlGRTg2QTg3NDFFNTk0NDAyMDAxMTFCQkYgLyogRm9yYmlkSGVhcEFs
bG9jYXRpb24uaCAqLywKIAkJCQlBOEE0NzJBNjE1MUE4MjVBMDA0MTIzRkYgLyogRm9yd2FyZC5o
ICovLApAQCAtMTE5MCw2ICsxMjI0LDcgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTFBNDI4QjhC
MUM4Rjg5REQwMDUxRTlFQiAvKiBBcHBLaXRDb21wYXRpYmlsaXR5RGVjbGFyYXRpb25zLmggKi8s
CiAJCQkJMUFDQUREODIxODg0NDgwMTAwRDhCNzFEIC8qIERlcHJlY2F0ZWRTeW1ib2xzVXNlZEJ5
U2FmYXJpLm1tICovLAorCQkJCUEzMzFEOTYwMjFGMjRBMEEwMDlGMDJBQSAvKiBGaWxlU3lzdGVt
TWFjLm1tICovLAogCQkJCTUzNTM0RjI5MUVDMEUxMEUwMDE0MUIyRiAvKiBNYWNoRXhjZXB0aW9u
cy5kZWZzICovLAogCQkJKTsKIAkJCXBhdGggPSBtYWM7CkBAIC0xMzE3LDYgKzEzNTIsNyBAQAog
CQkJCURDRUUyMUY5MUNFQTc1MkYwMDBDMjM5NiAvKiBjZiAqLywKIAkJCQlDRTQ2NTE2QzE5REIx
RkI0MDAzRUNBMDUgLyogY29jb2EgKi8sCiAJCQkJQ0U3M0UwMjMxOURDQjdBQjAwNTgwRDVDIC8q
IGRhcndpbiAqLywKKwkJCQlBM0QyNzNCODIxRjJFRTdCMDA4NjY5NzEgLyogbWFjICovLAogCQkJ
KTsKIAkJCXBhdGggPSBzcGk7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMTM1MSw2
ICsxMzg3LDcgQEAKIAkJCQlFMzhDNDEyNDFFQjRFMDRDMDA0Mjk1N0QgLyogQ1BVVGltZUNvY29h
LmNwcCAqLywKIAkJCQkxNDNEREU5NzIwQzhCRTk5MDA3Rjc2RkEgLyogRW50aXRsZW1lbnRzLmgg
Ki8sCiAJCQkJMTQzRERFOTUyMEM4QkMzNzAwN0Y3NkZBIC8qIEVudGl0bGVtZW50cy5tbSAqLywK
KwkJCQlBMzMxRDk1RTIxRjI0OUY2MDA5RjAyQUEgLyogRmlsZVN5c3RlbUNvY29hLm1tICovLAog
CQkJCTdBNkVCQTMzMjA3NDZDMzQwMDRGOUM0NCAvKiBNYWNoU2VuZFJpZ2h0LmNwcCAqLywKIAkJ
CQlBOEE0NzJDNTE1MUE4MjVBMDA0MTIzRkYgLyogTWFpblRocmVhZENvY29hLm1tICovLAogCQkJ
CUFERjJDRTY1MUUzOUYxMDYwMDY4ODlEQiAvKiBNZW1vcnlGb290cHJpbnRDb2NvYS5jcHAgKi8s
CkBAIC0xNDc2LDYgKzE1MTMsMTEgQEAKIAkJCQkwRjdDNUZCNjFEODg1Q0YyMDA0NEY1RTIgLyog
RmFzdEJpdFZlY3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNDMzE1MUE4MjVCMDA0
MTIzRkYgLyogRmFzdE1hbGxvYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjlEMzM2MDE2NURC
QTczMDA1QUQzODcgLyogRmlsZVByaW50U3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUEz
MzFEOTVCMjFGMjQ5OTIwMDlGMDJBQSAvKiBGaWxlU3lzdGVtLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCUEzMzFEOTVEMjFGMjQ5RTQwMDlGMDJBQSAvKiBGaWxlU3lzdGVtQ0YuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJQTMzMUQ5NUYyMUYyNDlGNjAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1Db2NvYS5t
bSBpbiBTb3VyY2VzICovLAorCQkJCUEzMzFEOTYxMjFGMjRBMEEwMDlGMDJBQSAvKiBGaWxlU3lz
dGVtTWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQTMzMUQ5NjcyMUYyNEFCRDAwOUYwMkFBIC8q
IEZpbGVTeXN0ZW1QT1NJWC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNCNTE1MUE4MjVC
MDA0MTIzRkYgLyogZml4ZWQtZHRvYS5jYyBpbiBTb3VyY2VzICovLAogCQkJCTFBMUQ4QjlFMTcz
MTg3OTgwMDE0MURBNCAvKiBGdW5jdGlvbkRpc3BhdGNoZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEY1QkYxNzYxRjIzRDQ5QTAwMjlEOTFEIC8qIEdpZ2FjYWdlLmNwcCBpbiBTb3VyY2VzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV1RG
L3d0Zi9DTWFrZUxpc3RzLnR4dAppbmRleCBjZWUxY2NlMWU1NzE4NGQxM2JkMmNkNTE5ZWY2YTIw
ZGZmYjFhOTZhLi43ZDg1ODMzMjBmNDljNjEwNDAxYzdiOGFiNDQ2Mzk2ZDg4YzE1MGUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9DTWFrZUxpc3RzLnR4dApAQCAtNjEsNyArNjEsOSBAQCBzZXQoV1RGX1BVQkxJQ19IRUFERVJT
CiAgICAgRmFzdE1hbGxvYy5oCiAgICAgRmFzdFRMUy5oCiAgICAgRmVhdHVyZURlZmluZXMuaAor
ICAgIEZpbGVNZXRhZGF0YS5oCiAgICAgRmlsZVByaW50U3RyZWFtLmgKKyAgICBGaWxlU3lzdGVt
LmgKICAgICBGbGlwQnl0ZXMuaAogICAgIEZvcmJpZEhlYXBBbGxvY2F0aW9uLmgKICAgICBGb3J3
YXJkLmgKQEAgLTM1Myw2ICszNTUsNyBAQCBzZXQoV1RGX1NPVVJDRVMKICAgICBGYXN0Qml0VmVj
dG9yLmNwcAogICAgIEZhc3RNYWxsb2MuY3BwCiAgICAgRmlsZVByaW50U3RyZWFtLmNwcAorICAg
IEZpbGVTeXN0ZW0uY3BwCiAgICAgRnVuY3Rpb25EaXNwYXRjaGVyLmNwcAogICAgIEdpZ2FjYWdl
LmNwcAogICAgIEdsb2JhbFZlcnNpb24uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9G
aWxlTWV0YWRhdGEuaCBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVNZXRhZGF0YS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjBiYjg4ZmM4NGY5NGFmNGNjZjFjNTgwZTBkNTZhMmI2NTgxMTBmOTgKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlTWV0YWRhdGEuaApAQCAtMCwwICsxLDUyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRp
c3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KKworbmFtZXNwYWNlIFdURiB7CisK
K3N0cnVjdCBGaWxlTWV0YWRhdGEgeworICAgIC8vIFRoZSBsYXN0IG1vZGlmaWNhdGlvbiB0aW1l
IG9mIHRoZSBmaWxlLCBpbiBzZWNvbmRzLgorICAgIFdhbGxUaW1lIG1vZGlmaWNhdGlvblRpbWU7
CisKKyAgICAvLyBUaGUgbGVuZ3RoIG9mIHRoZSBmaWxlIGluIGJ5dGVzLgorICAgIGxvbmcgbG9u
ZyBsZW5ndGg7CisKKyAgICBib29sIGlzSGlkZGVuOworCisgICAgZW51bSBjbGFzcyBUeXBlIHsg
RmlsZSwgRGlyZWN0b3J5LCBTeW1ib2xpY0xpbmsgfTsKKyAgICBUeXBlIHR5cGU7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpGaWxlTWV0YWRhdGE7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0
ZW0uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjE1ZjdiYjAzYmEwMTc5OTdlM2M5OTVmMzg4NTI5NmE2ZjRhMjE3
MDMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcApAQCAt
MCwwICsxLDM2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHd0
Zi9GaWxlU3lzdGVtLmg+CisKKyNpbmNsdWRlIDx3dGYvRmlsZU1ldGFkYXRhLmg+CisjaW5jbHVk
ZSA8d3RmL0hleE51bWJlci5oPgorI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisK
KyNpZiAhT1MoV0lORE9XUykKKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPHN5cy9tbWFu
Lmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgor
CituYW1lc3BhY2UgV1RGIHsKKworbmFtZXNwYWNlIEZpbGVTeXN0ZW0geworCisvLyBUaGUgZm9s
bG93aW5nIGxvd2VyLUFTQ0lJIGNoYXJhY3RlcnMgbmVlZCBlc2NhcGluZyB0byBiZSB1c2VkIGlu
IGEgZmlsZW5hbWUKKy8vIGFjcm9zcyBhbGwgc3lzdGVtcywgaW5jbHVkaW5nIFdpbmRvd3M6Cisv
LyAgICAgLSBVbnByaW50YWJsZSBBU0NJSSAoMDAtMUYpCisvLyAgICAgLSBTcGFjZSAgICAgICAg
ICAgICAoMjApCisvLyAgICAgLSBEb3VibGUgcXVvdGUgICAgICAoMjIpCisvLyAgICAgLSBQZXJj
ZW50ICAgICAgICAgICAoMjUpIChlc2NhcGVkIGJlY2F1c2UgaXQgaXMgb3VyIGVzY2FwZSBjaGFy
YWN0ZXIpCisvLyAgICAgLSBBc3RlcmlzayAgICAgICAgICAoMkEpCisvLyAgICAgLSBTbGFzaCAg
ICAgICAgICAgICAoMkYpCisvLyAgICAgLSBDb2xvbiAgICAgICAgICAgICAoM0EpCisvLyAgICAg
LSBMZXNzLXRoYW4gICAgICAgICAoM0MpCisvLyAgICAgLSBHcmVhdGVyLXRoYW4gICAgICAoM0Up
CisvLyAgICAgLSBRdWVzdGlvbiBNYXJrICAgICAoM0YpCisvLyAgICAgLSBCYWNrc2xhc2ggICAg
ICAgICAoNUMpCisvLyAgICAgLSBQaXBlICAgICAgICAgICAgICAoN0MpCisvLyAgICAgLSBEZWxl
dGUgICAgICAgICAgICAoN0YpCisKK3N0YXRpYyBjb25zdCBib29sIG5lZWRzRXNjYXBpbmdbMTI4
XSA9IHsKKyAgICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVl
LCAgdHJ1ZSwgIC8qIDAwLTA3ICovCisgICAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRy
dWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICAvKiAwOC0wRiAqLworCisgICAgdHJ1ZSwgIHRydWUs
ICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICAvKiAxMC0xNyAqLwor
ICAgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVl
LCAgLyogMTgtMUYgKi8KKworICAgIHRydWUsICBmYWxzZSwgdHJ1ZSwgIGZhbHNlLCBmYWxzZSwg
dHJ1ZSwgIGZhbHNlLCBmYWxzZSwgLyogMjAtMjcgKi8KKyAgICBmYWxzZSwgZmFsc2UsIHRydWUs
ICBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgIC8qIDI4LTJGICovCisKKyAgICBm
YWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIC8q
IDMwLTM3ICovCisgICAgZmFsc2UsIGZhbHNlLCB0cnVlLCAgZmFsc2UsIHRydWUsICBmYWxzZSwg
dHJ1ZSwgIHRydWUsICAvKiAzOC0zRiAqLworCisgICAgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFs
c2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAvKiA0MC00NyAqLworICAgIGZhbHNlLCBm
YWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgLyogNDgtNEYg
Ki8KKworICAgIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNl
LCBmYWxzZSwgLyogNTAtNTcgKi8KKyAgICBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1
ZSwgIGZhbHNlLCBmYWxzZSwgZmFsc2UsIC8qIDU4LTVGICovCisKKyAgICBmYWxzZSwgZmFsc2Us
IGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIC8qIDYwLTY3ICovCisg
ICAgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNl
LCAvKiA2OC02RiAqLworCisgICAgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBm
YWxzZSwgZmFsc2UsIGZhbHNlLCAvKiA3MC03NyAqLworICAgIGZhbHNlLCBmYWxzZSwgZmFsc2Us
IGZhbHNlLCB0cnVlLCAgZmFsc2UsIGZhbHNlLCB0cnVlLCAgLyogNzgtN0YgKi8KK307CisKK3N0
YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRFc2NhcGVVQ2hhcihVQ2hhciBjaGFyYWN0ZXIsIFVDaGFy
IHByZXZpb3VzQ2hhcmFjdGVyLCBVQ2hhciBuZXh0Q2hhcmFjdGVyKQoreworICAgIGlmIChjaGFy
YWN0ZXIgPD0gMTI3KQorICAgICAgICByZXR1cm4gbmVlZHNFc2NhcGluZ1tjaGFyYWN0ZXJdOwor
CisgICAgaWYgKFUxNl9JU19MRUFEKGNoYXJhY3RlcikgJiYgIVUxNl9JU19UUkFJTChuZXh0Q2hh
cmFjdGVyKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAoVTE2X0lTX1RSQUlMKGNo
YXJhY3RlcikgJiYgIVUxNl9JU19MRUFEKHByZXZpb3VzQ2hhcmFjdGVyKSkKKyAgICAgICAgcmV0
dXJuIHRydWU7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1N0cmluZyBlbmNvZGVGb3JGaWxl
TmFtZShjb25zdCBTdHJpbmcmIGlucHV0U3RyaW5nKQoreworICAgIHVuc2lnbmVkIGxlbmd0aCA9
IGlucHV0U3RyaW5nLmxlbmd0aCgpOworICAgIGlmICghbGVuZ3RoKQorICAgICAgICByZXR1cm4g
aW5wdXRTdHJpbmc7CisKKyAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKKyAgICByZXN1bHQucmVz
ZXJ2ZUNhcGFjaXR5KGxlbmd0aCk7CisKKyAgICBVQ2hhciBwcmV2aW91c0NoYXJhY3RlcjsKKyAg
ICBVQ2hhciBjaGFyYWN0ZXIgPSAwOworICAgIFVDaGFyIG5leHRDaGFyYWN0ZXIgPSBpbnB1dFN0
cmluZ1swXTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAg
ICAgICAgcHJldmlvdXNDaGFyYWN0ZXIgPSBjaGFyYWN0ZXI7CisgICAgICAgIGNoYXJhY3RlciA9
IG5leHRDaGFyYWN0ZXI7CisgICAgICAgIG5leHRDaGFyYWN0ZXIgPSBpICsgMSA8IGxlbmd0aCA/
IGlucHV0U3RyaW5nW2kgKyAxXSA6IDA7CisKKyAgICAgICAgaWYgKHNob3VsZEVzY2FwZVVDaGFy
KGNoYXJhY3RlciwgcHJldmlvdXNDaGFyYWN0ZXIsIG5leHRDaGFyYWN0ZXIpKSB7CisgICAgICAg
ICAgICBpZiAoY2hhcmFjdGVyIDw9IDI1NSkgeworICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmQoJyUnKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRCeXRlQXNIZXgoY2hhcmFjdGVyLCByZXN1
bHQpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5k
TGl0ZXJhbCgiJSsiKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRCeXRlQXNIZXgoY2hhcmFjdGVy
ID4+IDgsIHJlc3VsdCk7CisgICAgICAgICAgICAgICAgYXBwZW5kQnl0ZUFzSGV4KGNoYXJhY3Rl
ciwgcmVzdWx0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kKGNoYXJhY3Rlcik7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdC50b1N0
cmluZygpOworfQorCitTdHJpbmcgZGVjb2RlRnJvbUZpbGVuYW1lKGNvbnN0IFN0cmluZyYgaW5w
dXRTdHJpbmcpCit7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gaW5wdXRTdHJpbmcubGVuZ3RoKCk7
CisgICAgaWYgKCFsZW5ndGgpCisgICAgICAgIHJldHVybiBpbnB1dFN0cmluZzsKKworICAgIFN0
cmluZ0J1aWxkZXIgcmVzdWx0OworICAgIHJlc3VsdC5yZXNlcnZlQ2FwYWNpdHkobGVuZ3RoKTsK
KworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICBp
ZiAoaW5wdXRTdHJpbmdbaV0gIT0gJyUnKSB7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGlu
cHV0U3RyaW5nW2ldKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAg
ICAgLy8gSWYgdGhlIGlucHV0IHN0cmluZyBpcyBhIHZhbGlkIGVuY29kZWQgZmlsZW5hbWUsIGl0
IG11c3QgYmUgYXQgbGVhc3QgMiBjaGFyYWN0ZXJzIGxvbmdlcgorICAgICAgICAvLyB0aGFuIHRo
ZSBjdXJyZW50IGluZGV4IHRvIGFjY291bnQgZm9yIHRoaXMgcGVyY2VudCBlbmNvZGVkIHZhbHVl
LgorICAgICAgICBpZiAoaSArIDIgPj0gbGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuIHsgfTsK
KworICAgICAgICBpZiAoaW5wdXRTdHJpbmdbaSsxXSAhPSAnKycpIHsKKyAgICAgICAgICAgIGlm
ICghaXNBU0NJSUhleERpZ2l0KGlucHV0U3RyaW5nW2kgKyAxXSkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIHsgfTsKKyAgICAgICAgICAgIGlmICghaXNBU0NJSUhleERpZ2l0KGlucHV0U3RyaW5n
W2kgKyAyXSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQodG9BU0NJSUhleFZhbHVlKGlucHV0U3RyaW5nW2kgKyAxXSwgaW5wdXRTdHJpbmdb
aSArIDJdKSk7CisgICAgICAgICAgICBpICs9IDI7CisgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgfQorCisgICAgICAgIC8vIElmIHRoZSBpbnB1dCBzdHJpbmcgaXMgYSB2YWxpZCBlbmNv
ZGVkIGZpbGVuYW1lLCBpdCBtdXN0IGJlIGF0IGxlYXN0IDUgY2hhcmFjdGVycyBsb25nZXIKKyAg
ICAgICAgLy8gdGhhbiB0aGUgY3VycmVudCBpbmRleCB0byBhY2NvdW50IGZvciB0aGlzIHBlcmNl
bnQgZW5jb2RlZCB2YWx1ZS4KKyAgICAgICAgaWYgKGkgKyA1ID49IGxlbmd0aCkKKyAgICAgICAg
ICAgIHJldHVybiB7IH07CisKKyAgICAgICAgaWYgKCFpc0FTQ0lJSGV4RGlnaXQoaW5wdXRTdHJp
bmdbaSArIDJdKSkKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIGlmICghaXNBU0NJ
SUhleERpZ2l0KGlucHV0U3RyaW5nW2kgKyAzXSkpCisgICAgICAgICAgICByZXR1cm4geyB9Owor
ICAgICAgICBpZiAoIWlzQVNDSUlIZXhEaWdpdChpbnB1dFN0cmluZ1tpICsgNF0pKQorICAgICAg
ICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgaWYgKCFpc0FTQ0lJSGV4RGlnaXQoaW5wdXRTdHJp
bmdbaSArIDVdKSkKKyAgICAgICAgICAgIHJldHVybiB7IH07CisKKyAgICAgICAgcmVzdWx0LmFw
cGVuZCh0b0FTQ0lJSGV4VmFsdWUoaW5wdXRTdHJpbmdbaSArIDJdLCBpbnB1dFN0cmluZ1tpICsg
M10pIDw8IDggfCB0b0FTQ0lJSGV4VmFsdWUoaW5wdXRTdHJpbmdbaSArIDRdLCBpbnB1dFN0cmlu
Z1tpICsgNV0pKTsKKyAgICAgICAgaSArPSA1OworICAgIH0KKworICAgIHJldHVybiByZXN1bHQu
dG9TdHJpbmcoKTsKK30KKworU3RyaW5nIGxhc3RDb21wb25lbnRPZlBhdGhJZ25vcmluZ1RyYWls
aW5nU2xhc2goY29uc3QgU3RyaW5nJiBwYXRoKQoreworI2lmIE9TKFdJTkRPV1MpCisgICAgY2hh
ciBwYXRoU2VwYXJhdG9yID0gJ1xcJzsKKyNlbHNlCisgICAgY2hhciBwYXRoU2VwYXJhdG9yID0g
Jy8nOworI2VuZGlmCisKKyAgICBhdXRvIHBvc2l0aW9uID0gcGF0aC5yZXZlcnNlRmluZChwYXRo
U2VwYXJhdG9yKTsKKyAgICBpZiAocG9zaXRpb24gPT0gbm90Rm91bmQpCisgICAgICAgIHJldHVy
biBwYXRoOworCisgICAgc2l6ZV90IGVuZE9mU3Vic3RyaW5nID0gcGF0aC5sZW5ndGgoKSAtIDE7
CisgICAgaWYgKHBvc2l0aW9uID09IGVuZE9mU3Vic3RyaW5nKSB7CisgICAgICAgIC0tZW5kT2ZT
dWJzdHJpbmc7CisgICAgICAgIHBvc2l0aW9uID0gcGF0aC5yZXZlcnNlRmluZChwYXRoU2VwYXJh
dG9yLCBlbmRPZlN1YnN0cmluZyk7CisgICAgfQorCisgICAgcmV0dXJuIHBhdGguc3Vic3RyaW5n
KHBvc2l0aW9uICsgMSwgZW5kT2ZTdWJzdHJpbmcgLSBwb3NpdGlvbik7Cit9CisKK2Jvb2wgYXBw
ZW5kRmlsZUNvbnRlbnRzVG9GaWxlSGFuZGxlKGNvbnN0IFN0cmluZyYgcGF0aCwgUGxhdGZvcm1G
aWxlSGFuZGxlJiB0YXJnZXQpCit7CisgICAgYXV0byBzb3VyY2UgPSBvcGVuRmlsZShwYXRoLCBG
aWxlT3Blbk1vZGU6OlJlYWQpOworCisgICAgaWYgKCFpc0hhbmRsZVZhbGlkKHNvdXJjZSkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHN0YXRpYyBpbnQgYnVmZmVyU2l6ZSA9IDEgPDwg
MTk7CisgICAgVmVjdG9yPGNoYXI+IGJ1ZmZlcihidWZmZXJTaXplKTsKKworICAgIGF1dG8gZmls
ZUNsb3NlciA9IFdURjo6bWFrZVNjb3BlRXhpdChbc291cmNlXSgpIHsKKyAgICAgICAgUGxhdGZv
cm1GaWxlSGFuZGxlIGhhbmRsZSA9IHNvdXJjZTsKKyAgICAgICAgY2xvc2VGaWxlKGhhbmRsZSk7
CisgICAgfSk7CisKKyAgICBkbyB7CisgICAgICAgIGludCByZWFkQnl0ZXMgPSByZWFkRnJvbUZp
bGUoc291cmNlLCBidWZmZXIuZGF0YSgpLCBidWZmZXJTaXplKTsKKworICAgICAgICBpZiAocmVh
ZEJ5dGVzIDwgMCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBpZiAod3Jp
dGVUb0ZpbGUodGFyZ2V0LCBidWZmZXIuZGF0YSgpLCByZWFkQnl0ZXMpICE9IHJlYWRCeXRlcykK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBpZiAocmVhZEJ5dGVzIDwgYnVm
ZmVyU2l6ZSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0gd2hpbGUgKHRydWUpOwor
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKKworYm9vbCBmaWxlc0hhdmVTYW1lVm9s
dW1lKGNvbnN0IFN0cmluZyYgZmlsZUEsIGNvbnN0IFN0cmluZyYgZmlsZUIpCit7CisgICAgYXV0
byBmc1JlcEZpbGVBID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVBKTsKKyAgICBhdXRv
IGZzUmVwRmlsZUIgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZUIpOworCisgICAgaWYg
KGZzUmVwRmlsZUEuaXNOdWxsKCkgfHwgZnNSZXBGaWxlQi5pc051bGwoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKKworICAgIGF1dG8gZmlsZUFE
ZXYgPSBnZXRGaWxlRGV2aWNlSWQoZnNSZXBGaWxlQSk7CisgICAgYXV0byBmaWxlQkRldiA9IGdl
dEZpbGVEZXZpY2VJZChmc1JlcEZpbGVCKTsKKworICAgIGlmIChmaWxlQURldiAmJiBmaWxlQkRl
dikKKyAgICAgICAgcmVzdWx0ID0gKGZpbGVBRGV2ID09IGZpbGVCRGV2KTsKKworICAgIHJldHVy
biByZXN1bHQ7Cit9CisKKyNpZiAhUExBVEZPUk0oTUFDKQorCit2b2lkIHNldE1ldGFkYXRhVVJM
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpCit7Cit9CisKK2Jv
b2wgY2FuRXhjbHVkZUZyb21CYWNrdXAoKQoreworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9v
bCBleGNsdWRlRnJvbUJhY2t1cChjb25zdCBTdHJpbmcmKQoreworICAgIHJldHVybiBmYWxzZTsK
K30KKworI2VuZGlmCisKK01hcHBlZEZpbGVEYXRhOjp+TWFwcGVkRmlsZURhdGEoKQoreworI2lm
ICFPUyhXSU5ET1dTKQorICAgIGlmICghbV9maWxlRGF0YSkKKyAgICAgICAgcmV0dXJuOworICAg
IG11bm1hcChtX2ZpbGVEYXRhLCBtX2ZpbGVTaXplKTsKKyNlbmRpZgorfQorCitNYXBwZWRGaWxl
RGF0YTo6TWFwcGVkRmlsZURhdGEoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgYm9vbCYgc3VjY2Vz
cykKK3sKKyNpZiBPUyhXSU5ET1dTKQorICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgbWFwcGluZwor
ICAgIHN1Y2Nlc3MgPSBmYWxzZTsKKyNlbHNlCisgICAgQ1N0cmluZyBmc1JlcCA9IGZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihmaWxlUGF0aCk7CisgICAgaW50IGZkID0gIWZzUmVwLmlzTnVsbCgp
ID8gb3Blbihmc1JlcC5kYXRhKCksIE9fUkRPTkxZKSA6IC0xOworICAgIGlmIChmZCA8IDApIHsK
KyAgICAgICAgc3VjY2VzcyA9IGZhbHNlOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
c3RydWN0IHN0YXQgZmlsZVN0YXQ7CisgICAgaWYgKGZzdGF0KGZkLCAmZmlsZVN0YXQpKSB7Cisg
ICAgICAgIGNsb3NlKGZkKTsKKyAgICAgICAgc3VjY2VzcyA9IGZhbHNlOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgdW5zaWduZWQgc2l6ZTsKKyAgICBpZiAoIVdURjo6Y29udmVydFNh
ZmVseShmaWxlU3RhdC5zdF9zaXplLCBzaXplKSkgeworICAgICAgICBjbG9zZShmZCk7CisgICAg
ICAgIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICgh
c2l6ZSkgeworICAgICAgICBjbG9zZShmZCk7CisgICAgICAgIHN1Y2Nlc3MgPSB0cnVlOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgdm9pZCogZGF0YSA9IG1tYXAoMCwgc2l6ZSwgUFJP
VF9SRUFELCBNQVBfRklMRSB8IE1BUF9TSEFSRUQsIGZkLCAwKTsKKyAgICBjbG9zZShmZCk7CisK
KyAgICBpZiAoZGF0YSA9PSBNQVBfRkFJTEVEKSB7CisgICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHN1Y2Nlc3MgPSB0cnVlOworICAgIG1fZmls
ZURhdGEgPSBkYXRhOworICAgIG1fZmlsZVNpemUgPSBzaXplOworI2VuZGlmCit9CisKK1BsYXRm
b3JtRmlsZUhhbmRsZSBvcGVuQW5kTG9ja0ZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Bl
bk1vZGUgb3Blbk1vZGUsIE9wdGlvblNldDxGaWxlTG9ja01vZGU+IGxvY2tNb2RlKQoreworICAg
IGF1dG8gaGFuZGxlID0gb3BlbkZpbGUocGF0aCwgb3Blbk1vZGUpOworICAgIGlmIChoYW5kbGUg
PT0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKKyAgICAgICAgcmV0dXJuIGludmFsaWRQbGF0
Zm9ybUZpbGVIYW5kbGU7CisKKyNpZiBVU0UoRklMRV9MT0NLKQorICAgIGJvb2wgbG9ja2VkID0g
bG9ja0ZpbGUoaGFuZGxlLCBsb2NrTW9kZSk7CisgICAgQVNTRVJUX1VOVVNFRChsb2NrZWQsIGxv
Y2tlZCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShsb2NrTW9kZSk7CisjZW5kaWYKKworICAg
IHJldHVybiBoYW5kbGU7Cit9CisKK3ZvaWQgdW5sb2NrQW5kQ2xvc2VGaWxlKFBsYXRmb3JtRmls
ZUhhbmRsZSBoYW5kbGUpCit7CisjaWYgVVNFKEZJTEVfTE9DSykKKyAgICBib29sIHVubG9ja2Vk
ID0gdW5sb2NrRmlsZShoYW5kbGUpOworICAgIEFTU0VSVF9VTlVTRUQodW5sb2NrZWQsIHVubG9j
a2VkKTsKKyNlbmRpZgorICAgIGNsb3NlRmlsZShoYW5kbGUpOworfQorCitib29sIGZpbGVJc0Rp
cmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIFNob3VsZEZvbGxvd1N5bWJvbGljTGlua3Mgc2hv
dWxkRm9sbG93U3ltYm9saWNMaW5rcykKK3sKKyAgICBhdXRvIG1ldGFkYXRhID0gc2hvdWxkRm9s
bG93U3ltYm9saWNMaW5rcyA9PSBTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpZZXMgPyBmaWxl
TWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyhwYXRoKSA6IGZpbGVNZXRhZGF0YShwYXRoKTsKKyAg
ICBpZiAoIW1ldGFkYXRhKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIG1ldGFk
YXRhLnZhbHVlKCkudHlwZSA9PSBGaWxlTWV0YWRhdGE6OlR5cGU6OkRpcmVjdG9yeTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgRmlsZVN5c3RlbQorfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVt
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZmE0YjFmODgzYjk3NTYwMTg4ZDJmZGYxMWIyN2U0MDFjMjE2NjY2NQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaApAQCAtMCwwICsx
LDIyNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBDb2xsYWJvcmEsIEx0ZC4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFt
ZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAor
ICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHRpbWUuaD4KKyNpbmNsdWRlIDx1dGlsaXR5
PgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgor
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworI2lmIFVTRShDRikKKyNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CisjZW5kaWYKKworI2lmIFVTRShDRikKK3R5cGVkZWYgY29uc3Qgc3RydWN0
IF9fQ0ZEYXRhKiBDRkRhdGFSZWY7CisjZW5kaWYKKworT0JKQ19DTEFTUyBOU1N0cmluZzsKKwor
I2lmIFBMQVRGT1JNKFdJTikKK3R5cGVkZWYgdm9pZCAqSEFORExFOworI2VuZGlmCisKKyNpZiBV
U0UoR0xJQikKK3R5cGVkZWYgc3RydWN0IF9HRmlsZUlPU3RyZWFtIEdGaWxlSU9TdHJlYW07Cisj
ZW5kaWYKKworbmFtZXNwYWNlIFdURiB7CisKK3N0cnVjdCBGaWxlTWV0YWRhdGE7CisKK25hbWVz
cGFjZSBGaWxlU3lzdGVtIHsKKworLy8gUGxhdGZvcm1GaWxlSGFuZGxlCisjaWYgVVNFKEdMSUIp
ICYmICFQTEFURk9STShXSU4pCit0eXBlZGVmIEdGaWxlSU9TdHJlYW0qIFBsYXRmb3JtRmlsZUhh
bmRsZTsKK2NvbnN0IFBsYXRmb3JtRmlsZUhhbmRsZSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxl
ID0gMDsKKyNlbGlmIFBMQVRGT1JNKFdJTikKK3R5cGVkZWYgSEFORExFIFBsYXRmb3JtRmlsZUhh
bmRsZTsKKy8vIEZJWE1FOiAtMSBpcyBJTlZBTElEX0hBTkRMRV9WQUxVRSwgZGVmaW5lZCBpbiA8
d2luYmFzZS5oPi4gQ2hyb21pdW0gdHJpZXMgdG8KKy8vIGF2b2lkIHVzaW5nIFdpbmRvd3MgaGVh
ZGVycyBpbiBoZWFkZXJzLiBXZSdkIHJhdGhlciBtb3ZlIHRoaXMgaW50byB0aGUgLmNwcC4KK2Nv
bnN0IFBsYXRmb3JtRmlsZUhhbmRsZSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlID0gcmVpbnRl
cnByZXRfY2FzdDxIQU5ETEU+KC0xKTsKKyNlbHNlCit0eXBlZGVmIGludCBQbGF0Zm9ybUZpbGVI
YW5kbGU7Citjb25zdCBQbGF0Zm9ybUZpbGVIYW5kbGUgaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRs
ZSA9IC0xOworI2VuZGlmCisKK2VudW0gY2xhc3MgRmlsZU9wZW5Nb2RlIHsKKyAgICBSZWFkLAor
ICAgIFdyaXRlLAorI2lmIE9TKERBUldJTikKKyAgICBFdmVudHNPbmx5LAorI2VuZGlmCit9Owor
CitlbnVtIGNsYXNzIEZpbGVTZWVrT3JpZ2luIHsKKyAgICBCZWdpbm5pbmcsCisgICAgQ3VycmVu
dCwKKyAgICBFbmQsCit9OworCitlbnVtIGNsYXNzIEZpbGVMb2NrTW9kZSB7CisgICAgU2hhcmVk
ID0gMSA8PCAwLAorICAgIEV4Y2x1c2l2ZSA9IDEgPDwgMSwKKyAgICBOb25ibG9ja2luZyA9IDEg
PDwgMiwKK307CisKK2VudW0gY2xhc3MgU2hvdWxkRm9sbG93U3ltYm9saWNMaW5rcyB7IE5vLCBZ
ZXMgfTsKKworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZmlsZUV4aXN0cyhjb25zdCBTdHJpbmcm
KTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGRlbGV0ZUZpbGUoY29uc3QgU3RyaW5nJik7CitX
VEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBkZWxldGVFbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcm
KTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIG1vdmVGaWxlKGNvbnN0IFN0cmluZyYgb2xkUGF0
aCwgY29uc3QgU3RyaW5nJiBuZXdQYXRoKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGdldEZp
bGVTaXplKGNvbnN0IFN0cmluZyYsIGxvbmcgbG9uZyYgcmVzdWx0KTsKK1dURl9FWFBPUlRfUFJJ
VkFURSBib29sIGdldEZpbGVTaXplKFBsYXRmb3JtRmlsZUhhbmRsZSwgbG9uZyBsb25nJiByZXN1
bHQpOworV1RGX0VYUE9SVF9QUklWQVRFIE9wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlTW9kaWZp
Y2F0aW9uVGltZShjb25zdCBTdHJpbmcmKTsKK1dURl9FWFBPUlRfUFJJVkFURSBPcHRpb25hbDxX
YWxsVGltZT4gZ2V0RmlsZUNyZWF0aW9uVGltZShjb25zdCBTdHJpbmcmKTsgLy8gTm90IGFsbCBw
bGF0Zm9ybXMgc3RvcmUgZmlsZSBjcmVhdGlvbiB0aW1lLgorV1RGX0VYUE9SVF9QUklWQVRFIE9w
dGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYgcGF0aCk7CitX
VEZfRVhQT1JUX1BSSVZBVEUgT3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGFGb2xs
b3dpbmdTeW1saW5rcyhjb25zdCBTdHJpbmcmIHBhdGgpOworV1RGX0VYUE9SVF9QUklWQVRFIGJv
b2wgZmlsZUlzRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYsIFNob3VsZEZvbGxvd1N5bWJvbGljTGlu
a3MpOworV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
Y29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGNvbXBvbmVudCk7CitXVEZfRVhQT1JU
X1BSSVZBVEUgU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMoU3RyaW5nVmlldyBwYXRo
LCBjb25zdCBWZWN0b3I8U3RyaW5nVmlldz4mIGNvbXBvbmVudHMpOworV1RGX0VYUE9SVF9QUklW
QVRFIFN0cmluZyBsYXN0Q29tcG9uZW50T2ZQYXRoSWdub3JpbmdUcmFpbGluZ1NsYXNoKGNvbnN0
IFN0cmluZyYgcGF0aCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBtYWtlQWxsRGlyZWN0b3Jp
ZXMoY29uc3QgU3RyaW5nJiBwYXRoKTsKK1dURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgaG9tZURp
cmVjdG9yeVBhdGgoKTsKK1dURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcGF0aEdldEZpbGVOYW1l
KGNvbnN0IFN0cmluZyYpOworV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBkaXJlY3RvcnlOYW1l
KGNvbnN0IFN0cmluZyYpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZ2V0Vm9sdW1lRnJlZVNw
YWNlKGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90Jik7CitXVEZfRVhQT1JUX1BSSVZBVEUgT3B0aW9u
YWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0IENTdHJpbmcmKTsKK1dURl9FWFBPUlRf
UFJJVkFURSBib29sIGNyZWF0ZVN5bWJvbGljTGluayhjb25zdCBTdHJpbmcmIHRhcmdldFBhdGgs
IGNvbnN0IFN0cmluZyYgc3ltYm9saWNMaW5rUGF0aCk7CisKK1dURl9FWFBPUlRfUFJJVkFURSB2
b2lkIHNldE1ldGFkYXRhVVJMKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiB1cmxT
dHJpbmcsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIgPSB7IH0pOworCitib29sIGNhbkV4Y2x1ZGVG
cm9tQmFja3VwKCk7IC8vIFJldHVybnMgdHJ1ZSBpZiBhbnkgZmlsZSBjYW4gZXZlciBiZSBleGNs
dWRlZCBmcm9tIGJhY2t1cC4KK2Jvb2wgZXhjbHVkZUZyb21CYWNrdXAoY29uc3QgU3RyaW5nJik7
IC8vIFJldHVybnMgdHJ1ZSBpZiBzdWNjZXNzZnVsLgorCitXVEZfRVhQT1JUX1BSSVZBVEUgVmVj
dG9yPFN0cmluZz4gbGlzdERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmlu
ZyYgZmlsdGVyID0gU3RyaW5nKCkpOworCitXVEZfRVhQT1JUX1BSSVZBVEUgQ1N0cmluZyBmaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJik7CitTdHJpbmcgc3RyaW5nRnJvbUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBjaGFyKik7CisKK2lubGluZSBib29sIGlzSGFu
ZGxlVmFsaWQoY29uc3QgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpIHsgcmV0dXJuIGhhbmRs
ZSAhPSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOyB9CisKKy8vIFByZWZpeCBpcyB3aGF0IHRo
ZSBmaWxlbmFtZSBzaG91bGQgYmUgcHJlZml4ZWQgd2l0aCwgbm90IHRoZSBmdWxsIHBhdGguCitX
VEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYg
cHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmKTsKK1dURl9FWFBPUlRfUFJJVkFURSBQbGF0Zm9y
bUZpbGVIYW5kbGUgb3BlbkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUpOwor
V1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgY2xvc2VGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSYpOwor
Ly8gUmV0dXJucyB0aGUgcmVzdWx0aW5nIG9mZnNldCBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhl
IGZpbGUgaWYgc3VjY2Vzc2Z1bCwgLTEgb3RoZXJ3aXNlLgorV1RGX0VYUE9SVF9QUklWQVRFIGxv
bmcgbG9uZyBzZWVrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQsIEZp
bGVTZWVrT3JpZ2luKTsKK2Jvb2wgdHJ1bmNhdGVGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgbG9u
ZyBsb25nIG9mZnNldCk7CisvLyBSZXR1cm5zIG51bWJlciBvZiBieXRlcyBhY3R1YWxseSByZWFk
IGlmIHN1Y2Nlc3NmdWwsIC0xIG90aGVyd2lzZS4KK1dURl9FWFBPUlRfUFJJVkFURSBpbnQgd3Jp
dGVUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3Ro
KTsKKy8vIFJldHVybnMgbnVtYmVyIG9mIGJ5dGVzIGFjdHVhbGx5IHdyaXR0ZW4gaWYgc3VjY2Vz
c2Z1bCwgLTEgb3RoZXJ3aXNlLgorV1RGX0VYUE9SVF9QUklWQVRFIGludCByZWFkRnJvbUZpbGUo
UGxhdGZvcm1GaWxlSGFuZGxlLCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsKKworV1RGX0VYUE9S
VF9QUklWQVRFIFBsYXRmb3JtRmlsZUhhbmRsZSBvcGVuQW5kTG9ja0ZpbGUoY29uc3QgU3RyaW5n
JiwgRmlsZU9wZW5Nb2RlLCBPcHRpb25TZXQ8RmlsZUxvY2tNb2RlPiA9IEZpbGVMb2NrTW9kZTo6
RXhjbHVzaXZlKTsKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIHVubG9ja0FuZENsb3NlRmlsZShQ
bGF0Zm9ybUZpbGVIYW5kbGUpOworCisvLyBBcHBlbmRzIHRoZSBjb250ZW50cyBvZiB0aGUgZmls
ZSBmb3VuZCBhdCAncGF0aCcgdG8gdGhlIG9wZW4gUGxhdGZvcm1GaWxlSGFuZGxlLgorLy8gUmV0
dXJucyB0cnVlIGlmIHRoZSB3cml0ZSB3YXMgc3VjY2Vzc2Z1bCwgZmFsc2UgaWYgaXQgd2FzIG5v
dC4KK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGFwcGVuZEZpbGVDb250ZW50c1RvRmlsZUhhbmRs
ZShjb25zdCBTdHJpbmcmIHBhdGgsIFBsYXRmb3JtRmlsZUhhbmRsZSYpOworCisvLyBIYXJkIGxp
bmtzIGEgZmlsZSBpZiBwb3NzaWJsZSwgY29waWVzIGl0IGlmIG5vdC4KK1dURl9FWFBPUlRfUFJJ
VkFURSBib29sIGhhcmRMaW5rT3JDb3B5RmlsZShjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3Qg
U3RyaW5nJiBkZXN0aW5hdGlvbik7CisKKyNpZiBVU0UoRklMRV9MT0NLKQorV1RGX0VYUE9SVF9Q
UklWQVRFIGJvb2wgbG9ja0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBPcHRpb25TZXQ8RmlsZUxv
Y2tNb2RlPik7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCB1bmxvY2tGaWxlKFBsYXRmb3JtRmls
ZUhhbmRsZSk7CisjZW5kaWYKKworLy8gRW5jb2RlIGEgc3RyaW5nIGZvciB1c2Ugd2l0aGluIGEg
ZmlsZSBuYW1lLgorV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBlbmNvZGVGb3JGaWxlTmFtZShj
b25zdCBTdHJpbmcmKTsKK1dURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgZGVjb2RlRnJvbUZpbGVu
YW1lKGNvbnN0IFN0cmluZyYpOworCitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBmaWxlc0hhdmVT
YW1lVm9sdW1lKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOworCisjaWYgVVNFKENGKQor
V1RGX0VYUE9SVF9QUklWQVRFIFJldGFpblB0cjxDRlVSTFJlZj4gcGF0aEFzVVJMKGNvbnN0IFN0
cmluZyYpOworI2VuZGlmCisKKyNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKK1N0
cmluZyBmaWxlbmFtZUZvckRpc3BsYXkoY29uc3QgU3RyaW5nJik7CisjZW5kaWYKKworI2lmIFBM
QVRGT1JNKFdJTikKK1dURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgbG9jYWxVc2VyU3BlY2lmaWNT
dG9yYWdlRGlyZWN0b3J5KCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHJvYW1pbmdVc2Vy
U3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCk7CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKENPQ09B
KQorV1RGX0VYUE9SVF9QUklWQVRFIE5TU3RyaW5nICpjcmVhdGVUZW1wb3JhcnlEaXJlY3Rvcnko
TlNTdHJpbmcgKmRpcmVjdG9yeVByZWZpeCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBkZWxl
dGVOb25FbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKKyNlbmRpZgorCisjaWYgUExBVEZP
Uk0oV0lOX0NBSVJPKQorV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlE
aXJlY3RvcnkoKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGRlbGV0ZU5vbkVtcHR5RGlyZWN0
b3J5KGNvbnN0IFN0cmluZyYpOworI2VuZGlmCisKK1dURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcg
cmVhbFBhdGgoY29uc3QgU3RyaW5nJik7CisKK2NsYXNzIE1hcHBlZEZpbGVEYXRhIHsKK3B1Ymxp
YzoKKyAgICBNYXBwZWRGaWxlRGF0YSgpIHsgfQorICAgIE1hcHBlZEZpbGVEYXRhKE1hcHBlZEZp
bGVEYXRhJiYpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBNYXBwZWRGaWxlRGF0YShjb25zdCBT
dHJpbmcmIGZpbGVQYXRoLCBib29sJiBzdWNjZXNzKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
fk1hcHBlZEZpbGVEYXRhKCk7CisgICAgTWFwcGVkRmlsZURhdGEmIG9wZXJhdG9yPShNYXBwZWRG
aWxlRGF0YSYmKTsKKworICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVy
biAhIW1fZmlsZURhdGE7IH0KKyAgICBjb25zdCB2b2lkKiBkYXRhKCkgY29uc3QgeyByZXR1cm4g
bV9maWxlRGF0YTsgfQorICAgIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX2ZpbGVT
aXplOyB9CisKK3ByaXZhdGU6CisgICAgdm9pZCogbV9maWxlRGF0YSB7IG51bGxwdHIgfTsKKyAg
ICB1bnNpZ25lZCBtX2ZpbGVTaXplIHsgMCB9OworfTsKKworaW5saW5lIE1hcHBlZEZpbGVEYXRh
OjpNYXBwZWRGaWxlRGF0YShNYXBwZWRGaWxlRGF0YSYmIG90aGVyKQorICAgIDogbV9maWxlRGF0
YShzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fZmlsZURhdGEsIG51bGxwdHIpKQorICAgICwgbV9maWxl
U2l6ZShzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fZmlsZVNpemUsIDApKQoreworfQorCitpbmxpbmUg
TWFwcGVkRmlsZURhdGEmIE1hcHBlZEZpbGVEYXRhOjpvcGVyYXRvcj0oTWFwcGVkRmlsZURhdGEm
JiBvdGhlcikKK3sKKyAgICBtX2ZpbGVEYXRhID0gc3RkOjpleGNoYW5nZShvdGhlci5tX2ZpbGVE
YXRhLCBudWxscHRyKTsKKyAgICBtX2ZpbGVTaXplID0gc3RkOjpleGNoYW5nZShvdGhlci5tX2Zp
bGVTaXplLCAwKTsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK30gLy8gbmFtZXNwYWNlIEZpbGVT
eXN0ZW0KK30gLy8gbmFtZXNwYWNlIFdURgorCituYW1lc3BhY2UgRmlsZVN5c3RlbSA9IFdURjo6
RmlsZVN5c3RlbTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtR1RLLmNtYWtl
IGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggNjczZjAyZDBkNTk2ODU0
NWFjODdhOGE4ZTU3YjI3NzM0ZDczOTg5Yy4uN2ZlYzEyZGMyZmMzMTViYzUxNjhmMDJiM2JmNzY0
NzBjMGQ5Y2JhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1HVEsuY21ha2UK
KysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTIyLDYgKzIyLDcgQEAg
bGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKICAgICBnZW5lcmljL01haW5UaHJlYWRHZW5lcmljLmNw
cAogICAgIGdlbmVyaWMvV29ya1F1ZXVlR2VuZXJpYy5jcHAKIAorICAgIGdsaWIvRmlsZVN5c3Rl
bUdsaWIuY3BwCiAgICAgZ2xpYi9HTGliVXRpbGl0aWVzLmNwcAogICAgIGdsaWIvR1JlZlB0ci5j
cHAKICAgICBnbGliL1J1bkxvb3BHTGliLmNwcApAQCAtNTUsNSArNTYsNiBAQCBsaXN0KEFQUEVO
RCBXVEZfTElCUkFSSUVTCiApCiAKIGxpc3QoQVBQRU5EIFdURl9TWVNURU1fSU5DTFVERV9ESVJF
Q1RPUklFUworICAgICR7R0lPX1VOSVhfSU5DTFVERV9ESVJTfQogICAgICR7R0xJQl9JTkNMVURF
X0RJUlN9CiApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybU1hYy5jbWFrZSBi
L1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IGZjMWU1N2I5Y2IyNmI2ZjJi
NmFiYTYxNDNiZDE4YWViYmIxNmI1MzQuLjBlM2UxNDE2MDkxMmI3ODYxNzczNDM1MGE5MjVkOTlk
YmEyY2RhMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtTWFjLmNtYWtlCisr
KyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC0zMiw2ICszMiw4IEBAIGxp
c3QoQVBQRU5EIFdURl9QVUJMSUNfSEVBREVSUwogICAgIHNwaS9kYXJ3aW4vWFBDU1BJLmgKICAg
ICBzcGkvZGFyd2luL2R5bGRTUEkuaAogCisgICAgc3BpL21hYy9NZXRhZGF0YVNQSS5oCisKICAg
ICB0ZXh0L2NmL1RleHRCcmVha0l0ZXJhdG9yQ0YuaAogKQogCkBAIC00Miw2ICs0NCw3IEBAIGxp
c3QoQVBQRU5EIFdURl9TT1VSQ0VTCiAgICAgU2NoZWR1bGVQYWlyTWFjLm1tCiAKICAgICBjZi9D
RlVSTEV4dHJhcy5jcHAKKyAgICBjZi9GaWxlU3lzdGVtQ0YuY3BwCiAgICAgY2YvTGFuZ3VhZ2VD
Ri5jcHAKICAgICBjZi9SdW5Mb29wQ0YuY3BwCiAgICAgY2YvVVJMQ0YuY3BwCkBAIC00OSw2ICs1
Miw3IEBAIGxpc3QoQVBQRU5EIFdURl9TT1VSQ0VTCiAgICAgY29jb2EvQXV0b2RyYWluZWRQb29s
LmNwcAogICAgIGNvY29hL0NQVVRpbWVDb2NvYS5jcHAKICAgICBjb2NvYS9FbnRpdGxlbWVudHMu
bW0KKyAgICBjb2NvYS9GaWxlU3lzdGVtQ29jb2EubW0KICAgICBjb2NvYS9NYWNoU2VuZFJpZ2h0
LmNwcAogICAgIGNvY29hL01haW5UaHJlYWRDb2NvYS5tbQogICAgIGNvY29hL01lbW9yeUZvb3Rw
cmludENvY29hLmNwcApAQCAtNTgsNiArNjIsOSBAQCBsaXN0KEFQUEVORCBXVEZfU09VUkNFUwog
ICAgIGNvY29hL1dvcmtRdWV1ZUNvY29hLmNwcAogCiAgICAgbWFjL0RlcHJlY2F0ZWRTeW1ib2xz
VXNlZEJ5U2FmYXJpLm1tCisgICAgbWFjL0ZpbGVTeXN0ZW1NYWMubW0KKworICAgIHBvc2l4L0Zp
bGVTeXN0ZW1QT1NJWC5jcHAKIAogICAgIHRleHQvY2YvQXRvbWljU3RyaW5nSW1wbENGLmNwcAog
ICAgIHRleHQvY2YvU3RyaW5nQ0YuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybVBsYXlTdGF0aW9uLmNtYWtlIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1QbGF5U3RhdGlv
bi5jbWFrZQppbmRleCBiOTdmZWM0MGVkMzBiMTc3YjJmNTM1YjYyMTYwZWYxZWVlMmRlNTZlLi4z
ZTllNzVjOTI4YTZjOTQ2MDViNGJmY2FhN2ZiYjJiOWY0MmY4MzkwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9QbGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtlCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L1BsYXRmb3JtUGxheVN0YXRpb24uY21ha2UKQEAgLTUsNiArNSw4IEBAIGxpc3QoQVBQRU5EIFdU
Rl9TT1VSQ0VTCiAgICAgZ2VuZXJpYy9SdW5Mb29wR2VuZXJpYy5jcHAKICAgICBnZW5lcmljL1dv
cmtRdWV1ZUdlbmVyaWMuY3BwCiAKKyAgICBwb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCisKICAg
ICB0ZXh0L3VuaXgvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVVVuaXguY3BwCiAKICAgICB1
bml4L0NQVVRpbWVVbml4LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1X
UEUuY21ha2UgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdQRS5jbWFrZQppbmRleCA0NzNjZmQ2
MDI2YjA2NTJjMmYwMmQyYjI4NTM5MmIxZDgwMmYwYmJjLi4wODZhZGQzYWE5MTlmYzQ5MjM5ZDcx
YzFjYzg2ODVjNWZjNzM5YmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdQ
RS5jbWFrZQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdQRS5jbWFrZQpAQCAtMTYsNiAr
MTYsNyBAQCBsaXN0KEFQUEVORCBXVEZfU09VUkNFUwogICAgIGdlbmVyaWMvTWFpblRocmVhZEdl
bmVyaWMuY3BwCiAgICAgZ2VuZXJpYy9Xb3JrUXVldWVHZW5lcmljLmNwcAogCisgICAgZ2xpYi9G
aWxlU3lzdGVtR2xpYi5jcHAKICAgICBnbGliL0dMaWJVdGlsaXRpZXMuY3BwCiAgICAgZ2xpYi9H
UmVmUHRyLmNwcAogICAgIGdsaWIvUnVuTG9vcEdMaWIuY3BwCkBAIC00MCw1ICs0MSw2IEBAIGxp
c3QoQVBQRU5EIFdURl9MSUJSQVJJRVMKICkKIAogbGlzdChBUFBFTkQgV1RGX1NZU1RFTV9JTkNM
VURFX0RJUkVDVE9SSUVTCisgICAgJHtHSU9fVU5JWF9JTkNMVURFX0RJUlN9CiAgICAgJHtHTElC
X0lOQ0xVREVfRElSU30KICkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV2lu
LmNtYWtlIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1XaW4uY21ha2UKaW5kZXggMmI4YjVmODI3
MGViNWYyNDY3NjA3MmRkMTI0NTc2ZGE5MzAxZjBlYS4uYjZjMGFjNmY0ZGU1ZTA1ZjI3ZDRkOWFj
MGZmYmQ1Y2M0MDk3YTZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1XaW4u
Y21ha2UKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1XaW4uY21ha2UKQEAgLTEyLDE0ICsx
MiwyMCBAQCBsaXN0KEFQUEVORCBXVEZfU09VUkNFUwogCiAgICAgd2luL0NQVVRpbWVXaW4uY3Bw
CiAgICAgd2luL0RiZ0hlbHBlcldpbi5jcHAKKyAgICB3aW4vRmlsZVN5c3RlbVdpbi5jcHAKICAg
ICB3aW4vTGFuZ3VhZ2VXaW4uY3BwCiAgICAgd2luL01haW5UaHJlYWRXaW4uY3BwCiAgICAgd2lu
L01lbW9yeUZvb3RwcmludFdpbi5jcHAKICAgICB3aW4vTWVtb3J5UHJlc3N1cmVIYW5kbGVyV2lu
LmNwcAorICAgIHdpbi9QYXRoV2Fsa2VyLmNwcAogICAgIHdpbi9SdW5Mb29wV2luLmNwcAogICAg
IHdpbi9Xb3JrUXVldWVXaW4uY3BwCiApCiAKK2xpc3QoQVBQRU5EIFdURl9MSUJSQVJJRVMKKyAg
ICBzaGx3YXBpCispCisKIGlmIChVU0VfQ0YpCiAgICAgbGlzdChBUFBFTkQgV1RGX1BVQkxJQ19I
RUFERVJTCiAgICAgICAgIGNmL0NGVVJMRXh0cmFzLmgKQEAgLTI5LDYgKzM1LDcgQEAgaWYgKFVT
RV9DRikKICAgICApCiAgICAgbGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKICAgICAgICAgY2YvQ0ZV
UkxFeHRyYXMuY3BwCisgICAgICAgIGNmL0ZpbGVTeXN0ZW1DRi5jcHAKICAgICAgICAgY2YvVVJM
Q0YuY3BwCiAKICAgICAgICAgdGV4dC9jZi9BdG9taWNTdHJpbmdJbXBsQ0YuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9jZi9GaWxlU3lzdGVtQ0YuY3BwIGIvU291cmNlL1dURi93dGYv
Y2YvRmlsZVN5c3RlbUNGLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MTJkNjVmY2FkMjk2YjM5NjNmNjBhNDQ5
NGI2ZDdlOTJkNGFjNTBjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvY2YvRmls
ZVN5c3RlbUNGLmNwcApAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3
LCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUg
bmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
IDx3dGYvRmlsZVN5c3RlbS5oPgorCisjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZTdHJpbmcu
aD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV1RGIHsK
KworQ1N0cmluZyBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3Ry
aW5nJiBwYXRoKQoreworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZTdHJpbmcgPSBwYXRo
LmNyZWF0ZUNGU3RyaW5nKCk7CisKKyAgICBpZiAoIWNmU3RyaW5nKQorICAgICAgICByZXR1cm4g
Q1N0cmluZygpOworCisgICAgQ0ZJbmRleCBzaXplID0gQ0ZTdHJpbmdHZXRNYXhpbXVtU2l6ZU9m
RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNmU3RyaW5nLmdldCgpKTsKKworICAgIFZlY3Rvcjxj
aGFyPiBidWZmZXIoc2l6ZSk7CisKKyAgICBpZiAoIUNGU3RyaW5nR2V0RmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGNmU3RyaW5nLmdldCgpLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKSkg
eworICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBnZXQgZmlsZXN5c3RlbSByZXByZXNlbnRh
dGlvbiB0byBjcmVhdGUgQ1N0cmluZyBmcm9tIGNmU3RyaW5nIik7CisgICAgICAgIHJldHVybiBD
U3RyaW5nKCk7CisgICAgfQorCisgICAgcmV0dXJuIENTdHJpbmcoYnVmZmVyLmRhdGEoKSwgc3Ry
bGVuKGJ1ZmZlci5kYXRhKCkpKTsKK30KKworU3RyaW5nIEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21G
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgY2hhciogZmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKQoreworICAgIHJldHVybiBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24pKS5nZXQoKTsKK30KKworUmV0YWluUHRyPENGVVJMUmVmPiBGaWxlU3lzdGVtOjpwYXRoQXNV
UkwoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIENGVVJMUGF0aFN0eWxlIHBhdGhTdHlsZTsK
KyNpZiBQTEFURk9STShXSU4pCisgICAgcGF0aFN0eWxlID0ga0NGVVJMV2luZG93c1BhdGhTdHls
ZTsKKyNlbHNlCisgICAgcGF0aFN0eWxlID0ga0NGVVJMUE9TSVhQYXRoU3R5bGU7CisjZW5kaWYK
KyAgICByZXR1cm4gYWRvcHRDRihDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aCgwLCBwYXRo
LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIHBhdGhTdHlsZSwgRkFMU0UpKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9GaWxlU3lzdGVt
Q29jb2EubW0gYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9GaWxlU3lzdGVtQ29jb2EubW0KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYjM4NTc0NjljZTA0Njk2YmFhYTMyNjM3NDM4ZDEzMTY2YmYwNGZmOAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL0ZpbGVTeXN0ZW1Db2NvYS5tbQpAQCAtMCww
ICsxLDE0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBu
YW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
CisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KKwor
QGludGVyZmFjZSBXVEZXZWJGaWxlTWFuYWdlckRlbGVnYXRlIDogTlNPYmplY3QgPE5TRmlsZU1h
bmFnZXJEZWxlZ2F0ZT4KK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdURldlYkZpbGVNYW5hZ2Vy
RGVsZWdhdGUKKworLSAoQk9PTClmaWxlTWFuYWdlcjooTlNGaWxlTWFuYWdlciAqKWZpbGVNYW5h
Z2VyIHNob3VsZFByb2NlZWRBZnRlckVycm9yOihOU0Vycm9yICopZXJyb3IgbW92aW5nSXRlbUF0
VVJMOihOU1VSTCAqKXNyY1VSTCB0b1VSTDooTlNVUkwgKilkc3RVUkwKK3sKKyAgICBVTlVTRURf
UEFSQU0oZmlsZU1hbmFnZXIpOworICAgIFVOVVNFRF9QQVJBTShzcmNVUkwpOworICAgIFVOVVNF
RF9QQVJBTShkc3RVUkwpOworICAgIHJldHVybiBlcnJvci5jb2RlID09IE5TRmlsZVdyaXRlRmls
ZUV4aXN0c0Vycm9yOworfQorCitAZW5kCisKK25hbWVzcGFjZSBXVEYgeworCituYW1lc3BhY2Ug
RmlsZVN5c3RlbSB7CisKK1N0cmluZyBob21lRGlyZWN0b3J5UGF0aCgpCit7CisgICAgcmV0dXJu
IE5TSG9tZURpcmVjdG9yeSgpOworfQorCitTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3Qg
U3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYgcGxhdGZvcm1GaWxlSGFuZGxlKQor
eworICAgIHBsYXRmb3JtRmlsZUhhbmRsZSA9IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7CisK
KyAgICBWZWN0b3I8Y2hhcj4gdGVtcG9yYXJ5RmlsZVBhdGgoUEFUSF9NQVgpOworICAgIGlmICgh
Y29uZnN0cihfQ1NfREFSV0lOX1VTRVJfVEVNUF9ESVIsIHRlbXBvcmFyeUZpbGVQYXRoLmRhdGEo
KSwgdGVtcG9yYXJ5RmlsZVBhdGguc2l6ZSgpKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOwor
CisgICAgLy8gU2hyaW5rIHRoZSB2ZWN0b3IuCisgICAgdGVtcG9yYXJ5RmlsZVBhdGguc2hyaW5r
KHN0cmxlbih0ZW1wb3JhcnlGaWxlUGF0aC5kYXRhKCkpKTsKKworICAgIC8vIEZJWE1FOiBDaGFu
Z2UgdG8gYSBydW50aW1lIGFzc2VydGlvbiB0aGF0IHRoZSBwYXRoIGVuZHMgd2l0aCBhIHNsYXNo
IG9uY2UgPHJkYXI6Ly9wcm9ibGVtLzIzNTc5MDc3PiBpcworICAgIC8vIGZpeGVkIGluIGFsbCBp
T1MgU2ltdWxhdG9yIHZlcnNpb25zIHRoYXQgd2UgdXNlLgorICAgIGlmICh0ZW1wb3JhcnlGaWxl
UGF0aC5sYXN0KCkgIT0gJy8nKQorICAgICAgICB0ZW1wb3JhcnlGaWxlUGF0aC5hcHBlbmQoJy8n
KTsKKworICAgIC8vIEFwcGVuZCB0aGUgZmlsZSBuYW1lLgorICAgIENTdHJpbmcgcHJlZml4VXRm
OCA9IHByZWZpeC51dGY4KCk7CisgICAgdGVtcG9yYXJ5RmlsZVBhdGguYXBwZW5kKHByZWZpeFV0
ZjguZGF0YSgpLCBwcmVmaXhVdGY4Lmxlbmd0aCgpKTsKKyAgICB0ZW1wb3JhcnlGaWxlUGF0aC5h
cHBlbmQoIlhYWFhYWCIsIDYpOworICAgIHRlbXBvcmFyeUZpbGVQYXRoLmFwcGVuZCgnXDAnKTsK
KworICAgIHBsYXRmb3JtRmlsZUhhbmRsZSA9IG1rc3RlbXAodGVtcG9yYXJ5RmlsZVBhdGguZGF0
YSgpKTsKKyAgICBpZiAocGxhdGZvcm1GaWxlSGFuZGxlID09IGludmFsaWRQbGF0Zm9ybUZpbGVI
YW5kbGUpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIHJldHVybiBTdHJpbmc6OmZy
b21VVEY4KHRlbXBvcmFyeUZpbGVQYXRoLmRhdGEoKSk7Cit9CisKK2Jvb2wgbW92ZUZpbGUoY29u
c3QgU3RyaW5nJiBvbGRQYXRoLCBjb25zdCBTdHJpbmcmIG5ld1BhdGgpCit7CisgICAgLy8gT3Zl
cndyaXRlIGV4aXN0aW5nIGZpbGVzLgorICAgIGF1dG8gbWFuYWdlciA9IGFkb3B0TlMoW1tOU0Zp
bGVNYW5hZ2VyIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tX
VEZXZWJGaWxlTWFuYWdlckRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgW21hbmFnZXIgc2V0
RGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworCisgICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7Cisg
ICAgYm9vbCBzdWNjZXNzID0gW21hbmFnZXIgbW92ZUl0ZW1BdFVSTDpbTlNVUkwgZmlsZVVSTFdp
dGhQYXRoOm9sZFBhdGhdIHRvVVJMOltOU1VSTCBmaWxlVVJMV2l0aFBhdGg6bmV3UGF0aF0gZXJy
b3I6JmVycm9yXTsKKyAgICBpZiAoIXN1Y2Nlc3MpCisgICAgICAgIE5TTG9nKEAiRXJyb3IgaW4g
bW92ZUZpbGU6ICVAIiwgZXJyb3IpOworICAgIHJldHVybiBzdWNjZXNzOworfQorCitib29sIGdl
dFZvbHVtZUZyZWVTcGFjZShjb25zdCBTdHJpbmcmIHBhdGgsIHVpbnQ2NF90JiBmcmVlU3BhY2Up
Cit7CisgICAgTlNEaWN0aW9uYXJ5ICpmaWxlU3lzdGVtQXR0cmlidXRlc0RpY3Rpb25hcnkgPSBb
W05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGF0dHJpYnV0ZXNPZkZpbGVTeXN0ZW1Gb3JQ
YXRoOihOU1N0cmluZyAqKXBhdGggZXJyb3I6TlVMTF07CisgICAgaWYgKCFmaWxlU3lzdGVtQXR0
cmlidXRlc0RpY3Rpb25hcnkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBmcmVlU3BhY2Ug
PSBbW2ZpbGVTeXN0ZW1BdHRyaWJ1dGVzRGljdGlvbmFyeSBvYmplY3RGb3JLZXk6TlNGaWxlU3lz
dGVtRnJlZVNpemVdIHVuc2lnbmVkTG9uZ0xvbmdWYWx1ZV07CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK05TU3RyaW5nICpjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoTlNTdHJpbmcgKmRpcmVjdG9y
eVByZWZpeCkKK3sKKyAgICBOU1N0cmluZyAqdGVtcERpcmVjdG9yeSA9IE5TVGVtcG9yYXJ5RGly
ZWN0b3J5KCk7CisgICAgaWYgKCF0ZW1wRGlyZWN0b3J5IHx8ICFbdGVtcERpcmVjdG9yeSBsZW5n
dGhdKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgaWYgKCFkaXJlY3RvcnlQcmVmaXggfHwg
IVtkaXJlY3RvcnlQcmVmaXggbGVuZ3RoXSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIE5T
U3RyaW5nICp0ZW1wRGlyZWN0b3J5Q29tcG9uZW50ID0gW2RpcmVjdG9yeVByZWZpeCBzdHJpbmdC
eUFwcGVuZGluZ1N0cmluZzpAIi1YWFhYWFhYWCJdOworICAgIGNvbnN0IGNoYXIqIHRlbXBEaXJl
Y3RvcnlDU3RyaW5nID0gW1t0ZW1wRGlyZWN0b3J5IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBv
bmVudDp0ZW1wRGlyZWN0b3J5Q29tcG9uZW50XSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb25dOwor
ICAgIGlmICghdGVtcERpcmVjdG9yeUNTdHJpbmcpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAg
ICBjb25zdCBzaXplX3QgbGVuZ3RoID0gc3RybGVuKHRlbXBEaXJlY3RvcnlDU3RyaW5nKTsKKyAg
ICBBU1NFUlQobGVuZ3RoIDw9IE1BWFBBVEhMRU4pOworICAgIGlmIChsZW5ndGggPiBNQVhQQVRI
TEVOKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgY29uc3Qgc2l6ZV90IGxlbmd0aFBsdXNO
dWxsVGVybWluYXRvciA9IGxlbmd0aCArIDE7CisgICAgVmVjdG9yPGNoYXIsIE1BWFBBVEhMRU4g
KyAxPiBwYXRoKGxlbmd0aFBsdXNOdWxsVGVybWluYXRvcik7CisgICAgbWVtY3B5KHBhdGguZGF0
YSgpLCB0ZW1wRGlyZWN0b3J5Q1N0cmluZywgbGVuZ3RoUGx1c051bGxUZXJtaW5hdG9yKTsKKwor
ICAgIGlmICghbWtkdGVtcChwYXRoLmRhdGEoKSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAg
ICByZXR1cm4gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBzdHJpbmdXaXRoRmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uOnBhdGguZGF0YSgpIGxlbmd0aDpsZW5ndGhdOworfQorCitib29s
IGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICByZXR1
cm4gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSByZW1vdmVJdGVtQXRQYXRoOnBhdGgg
ZXJyb3I6bmlsXTsKK30KKworfSAvLyBuYW1lc3BhY2UgRmlsZVN5c3RlbQorfSAvLyBuYW1lc3Bh
Y2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNw
cCBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJm
ZjZiZDNmYTU0ODJhNWEwZjg0MGM5Njc4NDJjNDViOGFlMTIyY2YKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcApAQCAtMCwwICsxLDQ2OSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOSBIb2xnZXIgSGFucyBQZXRlciBGcmV5
dGhlcgorICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSwgTHRkLgorICogQ29weXJpZ2h0
IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFBvcnRpb25zIENv
cHlyaWdodCAoYykgMjAxMCBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CisK
KyNpbmNsdWRlIDxnaW8vZ2ZpbGVkZXNjcmlwdG9yYmFzZWQuaD4KKyNpbmNsdWRlIDxnaW8vZ2lv
Lmg+CisjaW5jbHVkZSA8Z2xpYi5oPgorI2luY2x1ZGUgPGdsaWIvZ3N0ZGlvLmg+CisjaW5jbHVk
ZSA8c3lzL2ZpbGUuaD4KKyNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgorI2luY2x1ZGUgPHd0
Zi9GaWxlTWV0YWRhdGEuaD4KKyNpbmNsdWRlIDx3dGYvVVVJRC5oPgorI2luY2x1ZGUgPHd0Zi9n
bGliL0dMaWJVdGlsaXRpZXMuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CisjaW5j
bHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXVEYgeworCituYW1lc3BhY2UgRmlsZVN5c3Rl
bSB7CisKKy8qIE9uIGxpbnV4IGZpbGUgbmFtZXMgYXJlIGp1c3QgcmF3IGJ5dGVzLCBzbyBhbHNv
IHN0cmluZ3MgdGhhdCBjYW5ub3QgYmUgZW5jb2RlZCBpbiBhbnkgd2F5CisgKiBhcmUgdmFsaWQg
ZmlsZSBuYW1lcy4gVGhpcyBtZWFuIHRoYXQgd2UgY2Fubm90IGp1c3Qgc3RvcmUgYSBmaWxlIG5h
bWUgYXMtaXMgaW4gYSBTdHJpbmcKKyAqIGJ1dCB3ZSBoYXZlIHRvIGVzY2FwZSBpdC4KKyAqIE9u
IFdpbmRvd3MgdGhlIEdMaWIgZmlsZSBuYW1lIGVuY29kaW5nIGlzIGFsd2F5cyBVVEYtOCBzbyB3
ZSBjYW4gb3B0aW1pemUgdGhpcyBjYXNlLiAqLworU3RyaW5nIHN0cmluZ0Zyb21GaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oY29uc3QgY2hhciogZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKQorewor
ICAgIGlmICghZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKQorICAgICAgICByZXR1cm4gU3RyaW5n
KCk7CisKKyNpZiBPUyhXSU5ET1dTKQorICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbik7CisjZWxzZQorICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGVzY2Fw
ZWRTdHJpbmcoZ191cmlfZXNjYXBlX3N0cmluZyhmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24sICIv
OiIsIEZBTFNFKSk7CisgICAgcmV0dXJuIGVzY2FwZWRTdHJpbmcuZ2V0KCk7CisjZW5kaWYKK30K
Kworc3RhdGljIEdVbmlxdWVQdHI8Y2hhcj4gdW5lc2NhcGVkRmlsZW5hbWUoY29uc3QgU3RyaW5n
JiBwYXRoKQoreworICAgIGlmIChwYXRoLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisjaWYgT1MoV0lORE9XUykKKyAgICByZXR1cm4gR1VuaXF1ZVB0cjxjaGFyPihnX3N0cmR1
cChwYXRoLnV0ZjgoKS5kYXRhKCkpKTsKKyNlbHNlCisgICAgcmV0dXJuIEdVbmlxdWVQdHI8Y2hh
cj4oZ191cmlfdW5lc2NhcGVfc3RyaW5nKHBhdGgudXRmOCgpLmRhdGEoKSwgbnVsbHB0cikpOwor
I2VuZGlmCit9CisKK0NTdHJpbmcgZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmlu
ZyYgcGF0aCkKK3sKKyNpZiBPUyhXSU5ET1dTKQorICAgIHJldHVybiBwYXRoLnV0ZjgoKTsKKyNl
bHNlCisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShw
YXRoKTsKKyAgICByZXR1cm4gZmlsZW5hbWUuZ2V0KCk7CisjZW5kaWYKK30KKworLy8gQ29udmVy
dHMgYSBzdHJpbmcgdG8gc29tZXRoaW5nIHN1aXRhYmxlIHRvIGJlIGRpc3BsYXllZCB0byB0aGUg
dXNlci4KK1N0cmluZyBmaWxlbmFtZUZvckRpc3BsYXkoY29uc3QgU3RyaW5nJiBzdHJpbmcpCit7
CisjaWYgT1MoV0lORE9XUykKKyAgICByZXR1cm4gc3RyaW5nOworI2Vsc2UKKyAgICBHVW5pcXVl
UHRyPGdjaGFyPiBmaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHN0cmluZyk7CisgICAgaWYg
KCFmaWxlbmFtZSkKKyAgICAgICAgcmV0dXJuIHN0cmluZzsKKworICAgIEdVbmlxdWVQdHI8Z2No
YXI+IGRpc3BsYXkoZ19maWxlbmFtZV90b191dGY4KGZpbGVuYW1lLmdldCgpLCAtMSwgbnVsbHB0
ciwgbnVsbHB0ciwgbnVsbHB0cikpOworICAgIGlmICghZGlzcGxheSkKKyAgICAgICAgcmV0dXJu
IHN0cmluZzsKKworICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGRpc3BsYXkuZ2V0KCkpOwor
I2VuZGlmCit9CisKK2Jvb2wgZmlsZUV4aXN0cyhjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAg
R1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShwYXRoKTsKKyAg
ICByZXR1cm4gZmlsZW5hbWUgPyBnX2ZpbGVfdGVzdChmaWxlbmFtZS5nZXQoKSwgR19GSUxFX1RF
U1RfRVhJU1RTKSA6IGZhbHNlOworfQorCitib29sIGRlbGV0ZUZpbGUoY29uc3QgU3RyaW5nJiBw
YXRoKQoreworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5h
bWUocGF0aCk7CisgICAgcmV0dXJuIGZpbGVuYW1lID8gZ19yZW1vdmUoZmlsZW5hbWUuZ2V0KCkp
ICE9IC0xIDogZmFsc2U7Cit9CisKK2Jvb2wgZGVsZXRlRW1wdHlEaXJlY3RvcnkoY29uc3QgU3Ry
aW5nJiBwYXRoKQoreworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2NhcGVk
RmlsZW5hbWUocGF0aCk7CisgICAgcmV0dXJuIGZpbGVuYW1lID8gZ19ybWRpcihmaWxlbmFtZS5n
ZXQoKSkgIT0gLTEgOiBmYWxzZTsKK30KKworc3RhdGljIGJvb2wgZ2V0RmlsZVN0YXQoY29uc3Qg
U3RyaW5nJiBwYXRoLCBHU3RhdEJ1Ziogc3RhdEJ1ZmZlcikKK3sKKyAgICBHVW5pcXVlUHRyPGdj
aGFyPiBmaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGgpOworICAgIGlmICghZmlsZW5h
bWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBnX3N0YXQoZmlsZW5hbWUu
Z2V0KCksIHN0YXRCdWZmZXIpICE9IC0xOworfQorCitzdGF0aWMgYm9vbCBnZXRGaWxlTFN0YXQo
Y29uc3QgU3RyaW5nJiBwYXRoLCBHU3RhdEJ1Ziogc3RhdEJ1ZmZlcikKK3sKKyAgICBHVW5pcXVl
UHRyPGdjaGFyPiBmaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGgpOworICAgIGlmICgh
ZmlsZW5hbWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBnX2xzdGF0KGZp
bGVuYW1lLmdldCgpLCBzdGF0QnVmZmVyKSAhPSAtMTsKK30KKworYm9vbCBnZXRGaWxlU2l6ZShj
b25zdCBTdHJpbmcmIHBhdGgsIGxvbmcgbG9uZyYgcmVzdWx0U2l6ZSkKK3sKKyAgICBHU3RhdEJ1
ZiBzdGF0UmVzdWx0OworICAgIGlmICghZ2V0RmlsZVN0YXQocGF0aCwgJnN0YXRSZXN1bHQpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXN1bHRTaXplID0gc3RhdFJlc3VsdC5zdF9z
aXplOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIGdldEZpbGVTaXplKFBsYXRmb3JtRmls
ZUhhbmRsZSBoYW5kbGUsIGxvbmcgbG9uZyYgcmVzdWx0U2l6ZSkKK3sKKyAgICBhdXRvIGluZm8g
PSBnX2ZpbGVfaW9fc3RyZWFtX3F1ZXJ5X2luZm8oaGFuZGxlLCBHX0ZJTEVfQVRUUklCVVRFX1NU
QU5EQVJEX1NJWkUsIG51bGxwdHIsIG51bGxwdHIpOworICAgIGlmICghaW5mbykKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgcmVzdWx0U2l6ZSA9IGdfZmlsZV9pbmZvX2dldF9zaXplKGlu
Zm8pOworICAgIHJldHVybiB0cnVlOworfQorCitPcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZUNy
ZWF0aW9uVGltZShjb25zdCBTdHJpbmcmKQoreworICAgIC8vIEZJWE1FOiBJcyB0aGVyZSBhIHdh
eSB0byByZXRyaWV2ZSBmaWxlIGNyZWF0aW9uIHRpbWUgd2l0aCBHdGsgb24gcGxhdGZvcm1zIHRo
YXQgc3VwcG9ydCBpdD8KKyAgICByZXR1cm4gV1RGOjpudWxsb3B0OworfQorCitPcHRpb25hbDxX
YWxsVGltZT4gZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoKQorewor
ICAgIEdTdGF0QnVmIHN0YXRSZXN1bHQ7CisgICAgaWYgKCFnZXRGaWxlU3RhdChwYXRoLCAmc3Rh
dFJlc3VsdCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gV2Fs
bFRpbWU6OmZyb21SYXdTZWNvbmRzKHN0YXRSZXN1bHQuc3RfbXRpbWUpOworfQorCitzdGF0aWMg
RmlsZU1ldGFkYXRhOjpUeXBlIHRvRmlsZU1ldGF0YVR5cGUoR1N0YXRCdWYgc3RhdFJlc3VsdCkK
K3sKKyAgICBpZiAoU19JU0RJUihzdGF0UmVzdWx0LnN0X21vZGUpKQorICAgICAgICByZXR1cm4g
RmlsZU1ldGFkYXRhOjpUeXBlOjpEaXJlY3Rvcnk7CisgICAgaWYgKFNfSVNMTksoc3RhdFJlc3Vs
dC5zdF9tb2RlKSkKKyAgICAgICAgcmV0dXJuIEZpbGVNZXRhZGF0YTo6VHlwZTo6U3ltYm9saWNM
aW5rOworICAgIHJldHVybiBGaWxlTWV0YWRhdGE6OlR5cGU6OkZpbGU7Cit9CisKK3N0YXRpYyBP
cHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YVVzaW5nRnVuY3Rpb24oY29uc3QgU3Ry
aW5nJiBwYXRoLCBib29sICgqc3RhdEZ1bmMpKGNvbnN0IFN0cmluZyYsIEdTdGF0QnVmKikpCit7
CisgICAgR1N0YXRCdWYgc3RhdFJlc3VsdDsKKyAgICBpZiAoIXN0YXRGdW5jKHBhdGgsICZzdGF0
UmVzdWx0KSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIFN0cmluZyBmaWxl
bmFtZSA9IHBhdGhHZXRGaWxlTmFtZShwYXRoKTsKKyAgICBib29sIGlzSGlkZGVuID0gIWZpbGVu
YW1lLmlzRW1wdHkoKSAmJiBmaWxlbmFtZVswXSA9PSAnLic7CisKKyAgICByZXR1cm4gRmlsZU1l
dGFkYXRhIHsKKyAgICAgICAgV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKHN0YXRSZXN1bHQuc3Rf
bXRpbWUpLAorICAgICAgICBzdGF0UmVzdWx0LnN0X3NpemUsCisgICAgICAgIGlzSGlkZGVuLAor
ICAgICAgICB0b0ZpbGVNZXRhdGFUeXBlKHN0YXRSZXN1bHQpCisgICAgfTsKK30KKworT3B0aW9u
YWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAg
IHJldHVybiBmaWxlTWV0YWRhdGFVc2luZ0Z1bmN0aW9uKHBhdGgsICZnZXRGaWxlTFN0YXQpOwor
fQorCitPcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YUZvbGxvd2luZ1N5bWxpbmtz
KGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICByZXR1cm4gZmlsZU1ldGFkYXRhVXNpbmdGdW5j
dGlvbihwYXRoLCAmZ2V0RmlsZVN0YXQpOworfQorCitTdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb21wb25lbnQpCit7Cisg
ICAgaWYgKHBhdGguZW5kc1dpdGgoR19ESVJfU0VQQVJBVE9SX1MpKQorICAgICAgICByZXR1cm4g
cGF0aCArIGNvbXBvbmVudDsKKyAgICByZXR1cm4gcGF0aCArIEdfRElSX1NFUEFSQVRPUl9TICsg
Y29tcG9uZW50OworfQorCitTdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhTdHJpbmdW
aWV3IHBhdGgsIGNvbnN0IFZlY3RvcjxTdHJpbmdWaWV3PiYgY29tcG9uZW50cykKK3sKKyAgICBT
dHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQocGF0aCk7CisgICAgZm9y
IChhdXRvJiBjb21wb25lbnQgOiBjb21wb25lbnRzKSB7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KEdfRElSX1NFUEFSQVRPUl9TKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoY29tcG9uZW50KTsK
KyAgICB9CisgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKK30KKworYm9vbCBtYWtlQWxs
RGlyZWN0b3JpZXMoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIEdVbmlxdWVQdHI8Z2NoYXI+
IGZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUocGF0aCk7CisgICAgcmV0dXJuIGZpbGVuYW1l
ID8gZ19ta2Rpcl93aXRoX3BhcmVudHMoZmlsZW5hbWUuZ2V0KCksIFNfSVJXWFUpICE9IC0xIDog
ZmFsc2U7Cit9CisKK1N0cmluZyBob21lRGlyZWN0b3J5UGF0aCgpCit7CisgICAgcmV0dXJuIHN0
cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfaG9tZV9kaXIoKSk7Cit9CisK
K2Jvb2wgY3JlYXRlU3ltYm9saWNMaW5rKGNvbnN0IFN0cmluZyYgdGFyZ2V0UGF0aCwgY29uc3Qg
U3RyaW5nJiBzeW1ib2xpY0xpbmtQYXRoKQoreworICAgIENTdHJpbmcgdGFyZ2V0UGF0aEZTUmVw
ID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHRhcmdldFBhdGgpOworICAgIGlmICghdGFyZ2V0
UGF0aEZTUmVwLmRhdGEoKSB8fCB0YXJnZXRQYXRoRlNSZXAuZGF0YSgpWzBdID09ICdcMCcpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIENTdHJpbmcgc3ltYm9saWNMaW5rUGF0aEZTUmVw
ID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHN5bWJvbGljTGlua1BhdGgpOworICAgIGlmICgh
c3ltYm9saWNMaW5rUGF0aEZTUmVwLmRhdGEoKSB8fCBzeW1ib2xpY0xpbmtQYXRoRlNSZXAuZGF0
YSgpWzBdID09ICdcMCcpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiAhc3lt
bGluayh0YXJnZXRQYXRoRlNSZXAuZGF0YSgpLCBzeW1ib2xpY0xpbmtQYXRoRlNSZXAuZGF0YSgp
KTsKK30KKworU3RyaW5nIHBhdGhHZXRGaWxlTmFtZShjb25zdCBTdHJpbmcmIHBhdGhOYW1lKQor
eworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHRtcEZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUo
cGF0aE5hbWUpOworICAgIGlmICghdG1wRmlsZW5hbWUpCisgICAgICAgIHJldHVybiBwYXRoTmFt
ZTsKKworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGJhc2VOYW1lKGdfcGF0aF9nZXRfYmFzZW5hbWUo
dG1wRmlsZW5hbWUuZ2V0KCkpKTsKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChiYXNlTmFt
ZS5nZXQoKSk7Cit9CisKK2Jvb2wgZ2V0Vm9sdW1lRnJlZVNwYWNlKGNvbnN0IFN0cmluZyYgcGF0
aCwgdWludDY0X3QmIGZyZWVTcGFjZSkKK3sKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFt
ZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGgpOworICAgIGlmICghZmlsZW5hbWUpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIEdSZWZQdHI8R0ZpbGU+IGZpbGUgPSBhZG9wdEdSZWYoZ19m
aWxlX25ld19mb3JfcGF0aChmaWxlbmFtZS5nZXQoKSkpOworICAgIEdSZWZQdHI8R0ZpbGVJbmZv
PiBmaWxlSW5mbyA9IGFkb3B0R1JlZihnX2ZpbGVfcXVlcnlfZmlsZXN5c3RlbV9pbmZvKGZpbGUu
Z2V0KCksIEdfRklMRV9BVFRSSUJVVEVfRklMRVNZU1RFTV9GUkVFLCAwLCAwKSk7CisgICAgaWYg
KCFmaWxlSW5mbykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZnJlZVNwYWNlID0gZ19m
aWxlX2luZm9fZ2V0X2F0dHJpYnV0ZV91aW50NjQoZmlsZUluZm8uZ2V0KCksIEdfRklMRV9BVFRS
SUJVVEVfRklMRVNZU1RFTV9GUkVFKTsKKyAgICByZXR1cm4gISFmcmVlU3BhY2U7Cit9CisKK1N0
cmluZyBkaXJlY3RvcnlOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBHVW5pcXVlUHRy
PGdjaGFyPiBmaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGgpOworICAgIGlmICghZmls
ZW5hbWUpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIEdVbmlxdWVQdHI8Y2hhcj4g
ZGlybmFtZShnX3BhdGhfZ2V0X2Rpcm5hbWUoZmlsZW5hbWUuZ2V0KCkpKTsKKyAgICByZXR1cm4g
U3RyaW5nOjpmcm9tVVRGOChkaXJuYW1lLmdldCgpKTsKK30KKworVmVjdG9yPFN0cmluZz4gbGlz
dERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgZmlsdGVyKQorewor
ICAgIFZlY3RvcjxTdHJpbmc+IGVudHJpZXM7CisKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxl
bmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGgpOworICAgIGlmICghZmlsZW5hbWUpCisgICAg
ICAgIHJldHVybiBlbnRyaWVzOworCisgICAgR1VuaXF1ZVB0cjxHRGlyPiBkaXIoZ19kaXJfb3Bl
bihmaWxlbmFtZS5nZXQoKSwgMCwgbnVsbHB0cikpOworICAgIGlmICghZGlyKQorICAgICAgICBy
ZXR1cm4gZW50cmllczsKKworICAgIEdVbmlxdWVQdHI8R1BhdHRlcm5TcGVjPiBwc3BlYyhnX3Bh
dHRlcm5fc3BlY19uZXcoKGZpbHRlci51dGY4KCkpLmRhdGEoKSkpOworICAgIHdoaWxlIChjb25z
dCBjaGFyKiBuYW1lID0gZ19kaXJfcmVhZF9uYW1lKGRpci5nZXQoKSkpIHsKKyAgICAgICAgaWYg
KCFnX3BhdHRlcm5fbWF0Y2hfc3RyaW5nKHBzcGVjLmdldCgpLCBuYW1lKSkKKyAgICAgICAgICAg
IGNvbnRpbnVlOworCisgICAgICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGVudHJ5KGdfYnVpbGRfZmls
ZW5hbWUoZmlsZW5hbWUuZ2V0KCksIG5hbWUsIG51bGxwdHIpKTsKKyAgICAgICAgZW50cmllcy5h
cHBlbmQoc3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihlbnRyeS5nZXQoKSkpOwor
ICAgIH0KKworICAgIHJldHVybiBlbnRyaWVzOworfQorCitTdHJpbmcgb3BlblRlbXBvcmFyeUZp
bGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKQorewor
ICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lKGdfc3RyZHVwX3ByaW50ZigiJXMlcyIsIHBy
ZWZpeC51dGY4KCkuZGF0YSgpLCBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkudXRmOCgpLmRh
dGEoKSkpOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHRlbXBQYXRoKGdfYnVpbGRfZmlsZW5hbWUo
Z19nZXRfdG1wX2RpcigpLCBmaWxlbmFtZS5nZXQoKSwgTlVMTCkpOworICAgIEdSZWZQdHI8R0Zp
bGU+IGZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0aCh0ZW1wUGF0aC5nZXQoKSkp
OworCisgICAgaGFuZGxlID0gZ19maWxlX2NyZWF0ZV9yZWFkd3JpdGUoZmlsZS5nZXQoKSwgR19G
SUxFX0NSRUFURV9OT05FLCAwLCAwKTsKKyAgICBpZiAoIWlzSGFuZGxlVmFsaWQoaGFuZGxlKSkK
KyAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KHRl
bXBQYXRoLmdldCgpKTsKK30KKworUGxhdGZvcm1GaWxlSGFuZGxlIG9wZW5GaWxlKGNvbnN0IFN0
cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlIG1vZGUpCit7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4g
ZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShwYXRoKTsKKyAgICBpZiAoIWZpbGVuYW1lKQor
ICAgICAgICByZXR1cm4gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKKworICAgIEdSZWZQdHI8
R0ZpbGU+IGZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0aChmaWxlbmFtZS5nZXQo
KSkpOworICAgIEdGaWxlSU9TdHJlYW0qIGlvU3RyZWFtID0gMDsKKyAgICBpZiAobW9kZSA9PSBG
aWxlT3Blbk1vZGU6OlJlYWQpCisgICAgICAgIGlvU3RyZWFtID0gZ19maWxlX29wZW5fcmVhZHdy
aXRlKGZpbGUuZ2V0KCksIDAsIDApOworICAgIGVsc2UgaWYgKG1vZGUgPT0gRmlsZU9wZW5Nb2Rl
OjpXcml0ZSkgeworICAgICAgICBpZiAoZ19maWxlX3Rlc3QoZmlsZW5hbWUuZ2V0KCksIHN0YXRp
Y19jYXN0PEdGaWxlVGVzdD4oR19GSUxFX1RFU1RfRVhJU1RTIHwgR19GSUxFX1RFU1RfSVNfUkVH
VUxBUikpKQorICAgICAgICAgICAgaW9TdHJlYW0gPSBnX2ZpbGVfb3Blbl9yZWFkd3JpdGUoZmls
ZS5nZXQoKSwgMCwgMCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGlvU3RyZWFtID0gZ19m
aWxlX2NyZWF0ZV9yZWFkd3JpdGUoZmlsZS5nZXQoKSwgR19GSUxFX0NSRUFURV9OT05FLCAwLCAw
KTsKKyAgICB9CisKKyAgICByZXR1cm4gaW9TdHJlYW07Cit9CisKK3ZvaWQgY2xvc2VGaWxlKFBs
YXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKQoreworICAgIGlmICghaXNIYW5kbGVWYWxpZChoYW5k
bGUpKQorICAgICAgICByZXR1cm47CisKKyAgICBnX2lvX3N0cmVhbV9jbG9zZShHX0lPX1NUUkVB
TShoYW5kbGUpLCAwLCAwKTsKKyAgICBnX29iamVjdF91bnJlZihoYW5kbGUpOworICAgIGhhbmRs
ZSA9IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7Cit9CisKK2xvbmcgbG9uZyBzZWVrRmlsZShQ
bGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0LCBGaWxlU2Vla09yaWdp
biBvcmlnaW4pCit7CisgICAgR1NlZWtUeXBlIHNlZWtUeXBlID0gR19TRUVLX1NFVDsKKyAgICBz
d2l0Y2ggKG9yaWdpbikgeworICAgIGNhc2UgRmlsZVNlZWtPcmlnaW46OkJlZ2lubmluZzoKKyAg
ICAgICAgc2Vla1R5cGUgPSBHX1NFRUtfU0VUOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZp
bGVTZWVrT3JpZ2luOjpDdXJyZW50OgorICAgICAgICBzZWVrVHlwZSA9IEdfU0VFS19DVVI7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgRmlsZVNlZWtPcmlnaW46OkVuZDoKKyAgICAgICAgc2Vl
a1R5cGUgPSBHX1NFRUtfRU5EOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisKKyAgICBpZiAoIWdfc2Vla2FibGVfc2Vl
ayhHX1NFRUtBQkxFKGdfaW9fc3RyZWFtX2dldF9pbnB1dF9zdHJlYW0oR19JT19TVFJFQU0oaGFu
ZGxlKSkpLAorICAgICAgICBvZmZzZXQsIHNlZWtUeXBlLCAwLCAwKSkKKyAgICB7CisgICAgICAg
IHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuIGdfc2Vla2FibGVfdGVsbChHX1NFRUtBQkxF
KGdfaW9fc3RyZWFtX2dldF9pbnB1dF9zdHJlYW0oR19JT19TVFJFQU0oaGFuZGxlKSkpKTsKK30K
KworaW50IHdyaXRlVG9GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNvbnN0IGNoYXIq
IGRhdGEsIGludCBsZW5ndGgpCit7CisgICAgZ3NpemUgYnl0ZXNXcml0dGVuOworICAgIGdfb3V0
cHV0X3N0cmVhbV93cml0ZV9hbGwoZ19pb19zdHJlYW1fZ2V0X291dHB1dF9zdHJlYW0oR19JT19T
VFJFQU0oaGFuZGxlKSksCisgICAgICAgIGRhdGEsIGxlbmd0aCwgJmJ5dGVzV3JpdHRlbiwgMCwg
MCk7CisgICAgcmV0dXJuIGJ5dGVzV3JpdHRlbjsKK30KKworaW50IHJlYWRGcm9tRmlsZShQbGF0
Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQoreworICAgIEdV
bmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBkbyB7CisgICAgICAgIGdzc2l6ZSBieXRl
c1JlYWQgPSBnX2lucHV0X3N0cmVhbV9yZWFkKGdfaW9fc3RyZWFtX2dldF9pbnB1dF9zdHJlYW0o
R19JT19TVFJFQU0oaGFuZGxlKSksCisgICAgICAgICAgICBkYXRhLCBsZW5ndGgsIDAsICZlcnJv
ci5vdXRQdHIoKSk7CisgICAgICAgIGlmIChieXRlc1JlYWQgPj0gMCkKKyAgICAgICAgICAgIHJl
dHVybiBieXRlc1JlYWQ7CisgICAgfSB3aGlsZSAoZXJyb3IgJiYgZXJyb3ItPmNvZGUgPT0gR19G
SUxFX0VSUk9SX0lOVFIpOworICAgIHJldHVybiAtMTsKK30KKworYm9vbCBtb3ZlRmlsZShjb25z
dCBTdHJpbmcmIG9sZFBhdGgsIGNvbnN0IFN0cmluZyYgbmV3UGF0aCkKK3sKKyAgICBHVW5pcXVl
UHRyPGdjaGFyPiBvbGRGaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKG9sZFBhdGgpOworICAg
IGlmICghb2xkRmlsZW5hbWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEdVbmlxdWVQ
dHI8Z2NoYXI+IG5ld0ZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUobmV3UGF0aCk7CisgICAg
aWYgKCFuZXdGaWxlbmFtZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgR1JlZlB0cjxH
RmlsZT4gb2xkRmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKG9sZEZpbGVuYW1l
LmdldCgpKSk7CisgICAgR1JlZlB0cjxHRmlsZT4gbmV3RmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVf
bmV3X2Zvcl9wYXRoKG5ld0ZpbGVuYW1lLmdldCgpKSk7CisKKyAgICByZXR1cm4gZ19maWxlX21v
dmUob2xkRmlsZS5nZXQoKSwgbmV3RmlsZS5nZXQoKSwgR19GSUxFX0NPUFlfT1ZFUldSSVRFLCBu
dWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKTsKK30KKworYm9vbCBoYXJkTGlua09y
Q29weUZpbGUoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb24p
Cit7CisjaWYgT1MoV0lORE9XUykKKyAgICByZXR1cm4gISE6OkNvcHlGaWxlKHNvdXJjZS5jaGFy
YWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSwgZGVzdGluYXRpb24uY2hhcmFjdGVy
c1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCksIFRSVUUpOworI2Vsc2UKKyAgICBHVW5pcXVl
UHRyPGdjaGFyPiBzb3VyY2VGaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHNvdXJjZSk7Cisg
ICAgaWYgKCFzb3VyY2VGaWxlbmFtZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgR1Vu
aXF1ZVB0cjxnY2hhcj4gZGVzdGluYXRpb25GaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKGRl
c3RpbmF0aW9uKTsKKyAgICBpZiAoIWRlc3RpbmF0aW9uRmlsZW5hbWUpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGlmICghbGluayhzb3VyY2VGaWxlbmFtZS5nZXQoKSwgZGVzdGluYXRp
b25GaWxlbmFtZS5nZXQoKSkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gSGFyZCBs
aW5rIGZhaWxlZC4gUGVyZm9ybSBhIGNvcHkgaW5zdGVhZC4KKyAgICBHUmVmUHRyPEdGaWxlPiBz
b3VyY2VGaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoc291cmNlRmlsZW5hbWUu
Z2V0KCkpKTsKKyAgICBHUmVmUHRyPEdGaWxlPiBkZXN0aW5hdGlvbkZpbGUgPSBhZG9wdEdSZWYo
Z19maWxlX25ld19mb3JfcGF0aChkZXN0aW5hdGlvbkZpbGVuYW1lLmdldCgpKSk7CisgICAgcmV0
dXJuIGdfZmlsZV9jb3B5KHNvdXJjZUZpbGUuZ2V0KCksIGRlc3RpbmF0aW9uRmlsZS5nZXQoKSwg
R19GSUxFX0NPUFlfTk9ORSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cik7Cisj
ZW5kaWYKK30KKworT3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0IENTdHJp
bmcmIGZzRmlsZSkKK3sKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZSA9IHVuZXNjYXBl
ZEZpbGVuYW1lKGZzRmlsZS5kYXRhKCkpOworICAgIGlmICghZmlsZW5hbWUpCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBHUmVmUHRyPEdGaWxlPiBmaWxlID0gYWRvcHRHUmVm
KGdfZmlsZV9uZXdfZm9yX3BhdGgoZmlsZW5hbWUuZ2V0KCkpKTsKKyAgICBHUmVmUHRyPEdGaWxl
SW5mbz4gZmlsZUluZm8gPSBhZG9wdEdSZWYoZ19maWxlX3F1ZXJ5X2ZpbGVzeXN0ZW1faW5mbyhm
aWxlLmdldCgpLCBHX0ZJTEVfQVRUUklCVVRFX1VOSVhfREVWSUNFLCBudWxscHRyLCBudWxscHRy
KSk7CisgICAgaWYgKCFmaWxlSW5mbykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwor
ICAgIHJldHVybiBnX2ZpbGVfaW5mb19nZXRfYXR0cmlidXRlX3VpbnQzMihmaWxlSW5mby5nZXQo
KSwgR19GSUxFX0FUVFJJQlVURV9VTklYX0RFVklDRSk7Cit9CisKKyNpZiBVU0UoRklMRV9MT0NL
KQorYm9vbCBsb2NrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBPcHRpb25TZXQ8Rmls
ZUxvY2tNb2RlPiBsb2NrTW9kZSkKK3sKKyAgICBDT01QSUxFX0FTU0VSVChMT0NLX1NIID09IFdU
Rjo6ZW51bVRvVW5kZXJseWluZ1R5cGUoRmlsZUxvY2tNb2RlOjpTaGFyZWQpLCBMb2NrU2hhcmVk
RW5jb2RpbmdJc0FzRXhwZWN0ZWQpOworICAgIENPTVBJTEVfQVNTRVJUKExPQ0tfRVggPT0gV1RG
OjplbnVtVG9VbmRlcmx5aW5nVHlwZShGaWxlTG9ja01vZGU6OkV4Y2x1c2l2ZSksIExvY2tFeGNs
dXNpdmVFbmNvZGluZ0lzQXNFeHBlY3RlZCk7CisgICAgQ09NUElMRV9BU1NFUlQoTE9DS19OQiA9
PSBXVEY6OmVudW1Ub1VuZGVybHlpbmdUeXBlKEZpbGVMb2NrTW9kZTo6Tm9uYmxvY2tpbmcpLCBM
b2NrTm9uYmxvY2tpbmdFbmNvZGluZ0lzQXNFeHBlY3RlZCk7CisgICAgYXV0byogaW5wdXRTdHJl
YW0gPSBnX2lvX3N0cmVhbV9nZXRfaW5wdXRfc3RyZWFtKEdfSU9fU1RSRUFNKGhhbmRsZSkpOwor
ICAgIGludCByZXN1bHQgPSBmbG9jayhnX2ZpbGVfZGVzY3JpcHRvcl9iYXNlZF9nZXRfZmQoR19G
SUxFX0RFU0NSSVBUT1JfQkFTRUQoaW5wdXRTdHJlYW0pKSwgbG9ja01vZGUudG9SYXcoKSk7Cisg
ICAgcmV0dXJuIHJlc3VsdCAhPSAtMTsKK30KKworYm9vbCB1bmxvY2tGaWxlKFBsYXRmb3JtRmls
ZUhhbmRsZSBoYW5kbGUpCit7CisgICAgYXV0byogaW5wdXRTdHJlYW0gPSBnX2lvX3N0cmVhbV9n
ZXRfaW5wdXRfc3RyZWFtKEdfSU9fU1RSRUFNKGhhbmRsZSkpOworICAgIGludCByZXN1bHQgPSBm
bG9jayhnX2ZpbGVfZGVzY3JpcHRvcl9iYXNlZF9nZXRfZmQoR19GSUxFX0RFU0NSSVBUT1JfQkFT
RUQoaW5wdXRTdHJlYW0pKSwgTE9DS19VTik7CisgICAgcmV0dXJuIHJlc3VsdCAhPSAtMTsKK30K
KyNlbmRpZiAvLyBVU0UoRklMRV9MT0NLKQorCit9IC8vIG5hbWVzcGFjZSBGaWxlU3lzdGVtCit9
IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL21hYy9GaWxlU3lz
dGVtTWFjLm1tIGIvU291cmNlL1dURi93dGYvbWFjL0ZpbGVTeXN0ZW1NYWMubW0KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOTI2OTJhMTZmYmE1YjE1Mjc4Yzc3MmY3NTZlNTUzYTExMDc1NWYyYgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XVEYvd3RmL21hYy9GaWxlU3lzdGVtTWFjLm1tCkBAIC0wLDAgKzEsODgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCA8d3RmL0Zp
bGVTeXN0ZW0uaD4KKworI2lmIFBMQVRGT1JNKE1BQykKKworI2ltcG9ydCA8d3RmL2NvY29hL05T
VVJMRXh0cmFzLmg+CisjaW1wb3J0IDx3dGYvc3BpL21hYy9NZXRhZGF0YVNQSS5oPgorI2ltcG9y
dCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXVEYgeworCitib29sIEZpbGVT
eXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBh
dXRvIGZpbGVNYW5hZ2VyID0gYWRvcHROUyhbW05TRmlsZU1hbmFnZXIgYWxsb2NdIGluaXRdKTsK
KworICAgIGlmIChOU0FycmF5ICpkaXJlY3RvcnlDb250ZW50cyA9IFtmaWxlTWFuYWdlciBjb250
ZW50c09mRGlyZWN0b3J5QXRQYXRoOnBhdGggZXJyb3I6bnVsbHB0cl0pIHsKKyAgICAgICAgLy8g
RXhwbGljaXRseSBsb29rIGZvciBhbmQgZGVsZXRlIC5EU19TdG9yZSBmaWxlcy4KKyAgICAgICAg
aWYgKGRpcmVjdG9yeUNvbnRlbnRzLmNvdW50ID09IDEgJiYgW2RpcmVjdG9yeUNvbnRlbnRzLmZp
cnN0T2JqZWN0IGlzRXF1YWxUb1N0cmluZzpAIi5EU19TdG9yZSJdKQorICAgICAgICAgICAgW2Zp
bGVNYW5hZ2VyIHJlbW92ZUl0ZW1BdFBhdGg6W3BhdGggc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29t
cG9uZW50OmRpcmVjdG9yeUNvbnRlbnRzLmZpcnN0T2JqZWN0XSBlcnJvcjpudWxscHRyXTsKKyAg
ICB9CisKKyAgICAvLyBybWRpciguLi4pIHJldHVybnMgMCBvbiBzdWNjZXNzZnVsIGRlbGV0aW9u
IG9mIHRoZSBwYXRoIGFuZCBub24temVybyBpbiBhbnkgb3RoZXIgY2FzZSAoaW5jbHVkaW5nIGlu
dmFsaWQgcGVybWlzc2lvbnMgb3Igbm9uLWV4aXN0ZW50IGZpbGUpCisgICAgcmV0dXJuICFybWRp
cihGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpKTsKK30K
Kwordm9pZCBGaWxlU3lzdGVtOjpzZXRNZXRhZGF0YVVSTChjb25zdCBTdHJpbmcmIHBhdGgsIGNv
bnN0IFN0cmluZyYgbWV0YWRhdGFVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpCit7
CisgICAgU3RyaW5nIHVybFN0cmluZzsKKyAgICBpZiAoTlNVUkwgKnVybCA9IFVSTFdpdGhVc2Vy
VHlwZWRTdHJpbmcobWV0YWRhdGFVUkxTdHJpbmcsIG5pbCkpCisgICAgICAgIHVybFN0cmluZyA9
IFdURjo6dXNlclZpc2libGVTdHJpbmcoV1RGOjpVUkxCeVJlbW92aW5nVXNlckluZm8odXJsKSk7
CisgICAgZWxzZQorICAgICAgICB1cmxTdHJpbmcgPSBtZXRhZGF0YVVSTFN0cmluZzsKKworICAg
IC8vIENhbGwgTWV0YWRhdGEgQVBJIG9uIGEgYmFja2dyb3VuZCBxdWV1ZSBiZWNhdXNlIGl0IGNh
biB0YWtlIHNvbWUgdGltZS4KKyAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfZ2xvYmFs
X3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApLCBbcGF0aCA9IHBhdGgu
aXNvbGF0ZWRDb3B5KCksIHVybFN0cmluZyA9IHVybFN0cmluZy5pc29sYXRlZENvcHkoKSwgcmVm
ZXJyZXIgPSByZWZlcnJlci5pc29sYXRlZENvcHkoKV0geworICAgICAgICBhdXRvIGl0ZW0gPSBh
ZG9wdENGKE1ESXRlbUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBwYXRoLmNyZWF0ZUNGU3Ry
aW5nKCkuZ2V0KCkpKTsKKyAgICAgICAgaWYgKCFpdGVtKQorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIGF1dG8gd2hlcmVGcm9tQXR0cmlidXRlID0gYWRvcHROUyhbW05TTXV0YWJsZUFy
cmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6dXJsU3RyaW5nLCBuaWxdKTsKKyAgICAgICAgaWYg
KCFyZWZlcnJlci5pc051bGwoKSkKKyAgICAgICAgICAgIFt3aGVyZUZyb21BdHRyaWJ1dGUgYWRk
T2JqZWN0OnJlZmVycmVyXTsKKworICAgICAgICBNREl0ZW1TZXRBdHRyaWJ1dGUoaXRlbS5nZXQo
KSwga01ESXRlbVdoZXJlRnJvbXMsIChfX2JyaWRnZSBDRkFycmF5UmVmKXdoZXJlRnJvbUF0dHJp
YnV0ZS5nZXQoKSk7CisgICAgICAgIE1ESXRlbVNldEF0dHJpYnV0ZShpdGVtLmdldCgpLCBrTURJ
dGVtRG93bmxvYWRlZERhdGUsIChfX2JyaWRnZSBDRkFycmF5UmVmKUBbIFtOU0RhdGUgZGF0ZV0g
XSk7CisgICAgfSk7Cit9CisKK2Jvb2wgRmlsZVN5c3RlbTo6Y2FuRXhjbHVkZUZyb21CYWNrdXAo
KQoreworICAgIHJldHVybiB0cnVlOworfQorCitib29sIEZpbGVTeXN0ZW06OmV4Y2x1ZGVGcm9t
QmFja3VwKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICAvLyBJdCBpcyBjcml0aWNhbCB0byBw
YXNzIEZBTFNFIGZvciBleGNsdWRlQnlQYXRoIGJlY2F1c2UgZXhjbHVkaW5nIGJ5IHBhdGggcmVx
dWlyZXMgcm9vdCBwcml2aWxlZ2VzLgorICAgIENTQmFja3VwU2V0SXRlbUV4Y2x1ZGVkKEZpbGVT
eXN0ZW06OnBhdGhBc1VSTChwYXRoKS5nZXQoKSwgVFJVRSwgRkFMU0UpOworICAgIHJldHVybiB0
cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKKworI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAgYi9T
b3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM2MGVj
YjE1ODYzOTIwZmE0MzYxZmMxNGRiOGVlNmQzZmZlMmU0ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCkBAIC0wLDAgKzEsNDk2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBw
bGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAq
ICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CisKKyNpbmNsdWRl
IDxkaXJlbnQuaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5j
bHVkZSA8Zm5tYXRjaC5oPgorI2luY2x1ZGUgPGxpYmdlbi5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+
CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpbmNsdWRlIDxzeXMvc3RhdHZmcy5oPgorI2luY2x1
ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHd0Zi9FbnVt
VHJhaXRzLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVNZXRhZGF0YS5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXVEYgeworCituYW1lc3Bh
Y2UgRmlsZVN5c3RlbSB7CisKK2Jvb2wgZmlsZUV4aXN0cyhjb25zdCBTdHJpbmcmIHBhdGgpCit7
CisgICAgaWYgKHBhdGguaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIENT
dHJpbmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisKKyAgICBpZiAo
IWZzUmVwLmRhdGEoKSB8fCBmc1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgcmV0dXJuIGFjY2Vzcyhmc1JlcC5kYXRhKCksIEZfT0spICE9IC0xOwor
fQorCitib29sIGRlbGV0ZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIENTdHJpbmcg
ZnNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisKKyAgICBpZiAoIWZzUmVw
LmRhdGEoKSB8fCBmc1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgLy8gdW5saW5rKC4uLikgcmV0dXJucyAwIG9uIHN1Y2Nlc3NmdWwgZGVsZXRpb24g
b2YgdGhlIHBhdGggYW5kIG5vbi16ZXJvIGluIGFueSBvdGhlciBjYXNlIChpbmNsdWRpbmcgaW52
YWxpZCBwZXJtaXNzaW9ucyBvciBub24tZXhpc3RlbnQgZmlsZSkKKyAgICByZXR1cm4gIXVubGlu
ayhmc1JlcC5kYXRhKCkpOworfQorCitQbGF0Zm9ybUZpbGVIYW5kbGUgb3BlbkZpbGUoY29uc3Qg
U3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUgbW9kZSkKK3sKKyAgICBDU3RyaW5nIGZzUmVwID0g
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworCisgICAgaWYgKGZzUmVwLmlzTnVsbCgp
KQorICAgICAgICByZXR1cm4gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKKworICAgIGludCBw
bGF0Zm9ybUZsYWcgPSAwOworICAgIGlmIChtb2RlID09IEZpbGVPcGVuTW9kZTo6UmVhZCkKKyAg
ICAgICAgcGxhdGZvcm1GbGFnIHw9IE9fUkRPTkxZOworICAgIGVsc2UgaWYgKG1vZGUgPT0gRmls
ZU9wZW5Nb2RlOjpXcml0ZSkKKyAgICAgICAgcGxhdGZvcm1GbGFnIHw9IChPX1dST05MWSB8IE9f
Q1JFQVQgfCBPX1RSVU5DKTsKKyNpZiBPUyhEQVJXSU4pCisgICAgZWxzZSBpZiAobW9kZSA9PSBG
aWxlT3Blbk1vZGU6OkV2ZW50c09ubHkpCisgICAgICAgIHBsYXRmb3JtRmxhZyB8PSBPX0VWVE9O
TFk7CisjZW5kaWYKKworICAgIHJldHVybiBvcGVuKGZzUmVwLmRhdGEoKSwgcGxhdGZvcm1GbGFn
LCAwNjY2KTsKK30KKwordm9pZCBjbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUp
Cit7CisgICAgaWYgKGlzSGFuZGxlVmFsaWQoaGFuZGxlKSkgeworICAgICAgICBjbG9zZShoYW5k
bGUpOworICAgICAgICBoYW5kbGUgPSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOworICAgIH0K
K30KKworbG9uZyBsb25nIHNlZWtGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGxvbmcg
bG9uZyBvZmZzZXQsIEZpbGVTZWVrT3JpZ2luIG9yaWdpbikKK3sKKyAgICBpbnQgd2hlbmNlID0g
U0VFS19TRVQ7CisgICAgc3dpdGNoIChvcmlnaW4pIHsKKyAgICBjYXNlIEZpbGVTZWVrT3JpZ2lu
OjpCZWdpbm5pbmc6CisgICAgICAgIHdoZW5jZSA9IFNFRUtfU0VUOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIEZpbGVTZWVrT3JpZ2luOjpDdXJyZW50OgorICAgICAgICB3aGVuY2UgPSBTRUVL
X0NVUjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGaWxlU2Vla09yaWdpbjo6RW5kOgorICAg
ICAgICB3aGVuY2UgPSBTRUVLX0VORDsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxsb25nIGxvbmc+KGxzZWVrKGhhbmRsZSwgb2Zmc2V0LCB3aGVuY2UpKTsKK30KKworYm9vbCB0
cnVuY2F0ZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCkK
K3sKKyAgICAvLyBmdHJ1bmNhdGUgcmV0dXJucyAwIHRvIGluZGljYXRlIHRoZSBzdWNjZXNzLgor
ICAgIHJldHVybiAhZnRydW5jYXRlKGhhbmRsZSwgb2Zmc2V0KTsKK30KKworaW50IHdyaXRlVG9G
aWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5n
dGgpCit7CisgICAgZG8geworICAgICAgICBpbnQgYnl0ZXNXcml0dGVuID0gd3JpdGUoaGFuZGxl
LCBkYXRhLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkpOworICAgICAgICBpZiAoYnl0ZXNX
cml0dGVuID49IDApCisgICAgICAgICAgICByZXR1cm4gYnl0ZXNXcml0dGVuOworICAgIH0gd2hp
bGUgKGVycm5vID09IEVJTlRSKTsKKyAgICByZXR1cm4gLTE7Cit9CisKK2ludCByZWFkRnJvbUZp
bGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKK3sK
KyAgICBkbyB7CisgICAgICAgIGludCBieXRlc1JlYWQgPSByZWFkKGhhbmRsZSwgZGF0YSwgc3Rh
dGljX2Nhc3Q8c2l6ZV90PihsZW5ndGgpKTsKKyAgICAgICAgaWYgKGJ5dGVzUmVhZCA+PSAwKQor
ICAgICAgICAgICAgcmV0dXJuIGJ5dGVzUmVhZDsKKyAgICB9IHdoaWxlIChlcnJubyA9PSBFSU5U
Uik7CisgICAgcmV0dXJuIC0xOworfQorCisjaWYgVVNFKEZJTEVfTE9DSykKK2Jvb2wgbG9ja0Zp
bGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgT3B0aW9uU2V0PEZpbGVMb2NrTW9kZT4gbG9j
a01vZGUpCit7CisgICAgQ09NUElMRV9BU1NFUlQoTE9DS19TSCA9PSBXVEY6OmVudW1Ub1VuZGVy
bHlpbmdUeXBlKEZpbGVMb2NrTW9kZTo6U2hhcmVkKSwgTG9ja1NoYXJlZEVuY29kaW5nSXNBc0V4
cGVjdGVkKTsKKyAgICBDT01QSUxFX0FTU0VSVChMT0NLX0VYID09IFdURjo6ZW51bVRvVW5kZXJs
eWluZ1R5cGUoRmlsZUxvY2tNb2RlOjpFeGNsdXNpdmUpLCBMb2NrRXhjbHVzaXZlRW5jb2RpbmdJ
c0FzRXhwZWN0ZWQpOworICAgIENPTVBJTEVfQVNTRVJUKExPQ0tfTkIgPT0gV1RGOjplbnVtVG9V
bmRlcmx5aW5nVHlwZShGaWxlTG9ja01vZGU6Ok5vbmJsb2NraW5nKSwgTG9ja05vbmJsb2NraW5n
RW5jb2RpbmdJc0FzRXhwZWN0ZWQpOworICAgIGludCByZXN1bHQgPSBmbG9jayhoYW5kbGUsIGxv
Y2tNb2RlLnRvUmF3KCkpOworICAgIHJldHVybiAocmVzdWx0ICE9IC0xKTsKK30KKworYm9vbCB1
bmxvY2tGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUpCit7CisgICAgaW50IHJlc3VsdCA9
IGZsb2NrKGhhbmRsZSwgTE9DS19VTik7CisgICAgcmV0dXJuIChyZXN1bHQgIT0gLTEpOworfQor
I2VuZGlmCisKKyNpZiAhUExBVEZPUk0oTUFDKQorYm9vbCBkZWxldGVFbXB0eURpcmVjdG9yeShj
b25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgQ1N0cmluZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihwYXRoKTsKKworICAgIGlmICghZnNSZXAuZGF0YSgpIHx8IGZzUmVwLmRhdGEo
KVswXSA9PSAnXDAnKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBybWRpciguLi4p
IHJldHVybnMgMCBvbiBzdWNjZXNzZnVsIGRlbGV0aW9uIG9mIHRoZSBwYXRoIGFuZCBub24temVy
byBpbiBhbnkgb3RoZXIgY2FzZSAoaW5jbHVkaW5nIGludmFsaWQgcGVybWlzc2lvbnMgb3Igbm9u
LWV4aXN0ZW50IGZpbGUpCisgICAgcmV0dXJuICFybWRpcihmc1JlcC5kYXRhKCkpOworfQorI2Vu
ZGlmCisKK2Jvb2wgZ2V0RmlsZVNpemUoY29uc3QgU3RyaW5nJiBwYXRoLCBsb25nIGxvbmcmIHJl
c3VsdCkKK3sKKyAgICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBh
dGgpOworCisgICAgaWYgKCFmc1JlcC5kYXRhKCkgfHwgZnNSZXAuZGF0YSgpWzBdID09ICdcMCcp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHN0cnVjdCBzdGF0IGZpbGVJbmZvOworCisg
ICAgaWYgKHN0YXQoZnNSZXAuZGF0YSgpLCAmZmlsZUluZm8pKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICByZXN1bHQgPSBmaWxlSW5mby5zdF9zaXplOworICAgIHJldHVybiB0cnVlOwor
fQorCitib29sIGdldEZpbGVTaXplKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGxvbmcgbG9u
ZyYgcmVzdWx0KQoreworICAgIHN0cnVjdCBzdGF0IGZpbGVJbmZvOworICAgIGlmIChmc3RhdCho
YW5kbGUsICZmaWxlSW5mbykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJlc3VsdCA9
IGZpbGVJbmZvLnN0X3NpemU7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK09wdGlvbmFsPFdhbGxU
aW1lPiBnZXRGaWxlQ3JlYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyNpZiBPUyhE
QVJXSU4pIHx8IE9TKE9QRU5CU0QpIHx8IE9TKE5FVEJTRCkgfHwgT1MoRlJFRUJTRCkKKyAgICBD
U3RyaW5nIGZzUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworCisgICAgaWYg
KCFmc1JlcC5kYXRhKCkgfHwgZnNSZXAuZGF0YSgpWzBdID09ICdcMCcpCisgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisKKyAgICBzdHJ1Y3Qgc3RhdCBmaWxlSW5mbzsKKworICAgIGlmIChz
dGF0KGZzUmVwLmRhdGEoKSwgJmZpbGVJbmZvKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKworICAgIHJldHVybiBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoZmlsZUluZm8uc3RfYmly
dGh0aW1lKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHBhdGgpOworICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisjZW5kaWYKK30KKworT3B0aW9uYWw8V2FsbFRpbWU+IGdldEZpbGVNb2RpZmlj
YXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBDU3RyaW5nIGZzUmVwID0gZmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworCisgICAgaWYgKCFmc1JlcC5kYXRhKCkgfHwg
ZnNSZXAuZGF0YSgpWzBdID09ICdcMCcpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisK
KyAgICBzdHJ1Y3Qgc3RhdCBmaWxlSW5mbzsKKworICAgIGlmIChzdGF0KGZzUmVwLmRhdGEoKSwg
JmZpbGVJbmZvKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiBX
YWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoZmlsZUluZm8uc3RfbXRpbWUpOworfQorCitzdGF0aWMg
RmlsZU1ldGFkYXRhOjpUeXBlIHRvRmlsZU1ldGF0YVR5cGUoc3RydWN0IHN0YXQgZmlsZUluZm8p
Cit7CisgICAgaWYgKFNfSVNESVIoZmlsZUluZm8uc3RfbW9kZSkpCisgICAgICAgIHJldHVybiBG
aWxlTWV0YWRhdGE6OlR5cGU6OkRpcmVjdG9yeTsKKyAgICBpZiAoU19JU0xOSyhmaWxlSW5mby5z
dF9tb2RlKSkKKyAgICAgICAgcmV0dXJuIEZpbGVNZXRhZGF0YTo6VHlwZTo6U3ltYm9saWNMaW5r
OworICAgIHJldHVybiBGaWxlTWV0YWRhdGE6OlR5cGU6OkZpbGU7Cit9CisKK3N0YXRpYyBPcHRp
b25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YVVzaW5nRnVuY3Rpb24oY29uc3QgU3RyaW5n
JiBwYXRoLCBpbnQgKCpzdGF0RnVuYykoY29uc3QgY2hhciosIHN0cnVjdCBzdGF0KikpCit7Cisg
ICAgQ1N0cmluZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKKworICAg
IGlmICghZnNSZXAuZGF0YSgpIHx8IGZzUmVwLmRhdGEoKVswXSA9PSAnXDAnKQorICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgc3RydWN0IHN0YXQgZmlsZUluZm87CisgICAgaWYg
KHN0YXRGdW5jKGZzUmVwLmRhdGEoKSwgJmZpbGVJbmZvKSkKKyAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKworICAgIFN0cmluZyBmaWxlbmFtZSA9IHBhdGhHZXRGaWxlTmFtZShwYXRoKTsK
KyAgICBib29sIGlzSGlkZGVuID0gIWZpbGVuYW1lLmlzRW1wdHkoKSAmJiBmaWxlbmFtZVswXSA9
PSAnLic7CisgICAgcmV0dXJuIEZpbGVNZXRhZGF0YSB7CisgICAgICAgIFdhbGxUaW1lOjpmcm9t
UmF3U2Vjb25kcyhmaWxlSW5mby5zdF9tdGltZSksCisgICAgICAgIGZpbGVJbmZvLnN0X3NpemUs
CisgICAgICAgIGlzSGlkZGVuLAorICAgICAgICB0b0ZpbGVNZXRhdGFUeXBlKGZpbGVJbmZvKQor
ICAgIH07Cit9CisKK09wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhKGNvbnN0IFN0
cmluZyYgcGF0aCkKK3sKKyAgICByZXR1cm4gZmlsZU1ldGFkYXRhVXNpbmdGdW5jdGlvbihwYXRo
LCAmbHN0YXQpOworfQorCitPcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YUZvbGxv
d2luZ1N5bWxpbmtzKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICByZXR1cm4gZmlsZU1ldGFk
YXRhVXNpbmdGdW5jdGlvbihwYXRoLCAmc3RhdCk7Cit9CisKK2Jvb2wgY3JlYXRlU3ltYm9saWNM
aW5rKGNvbnN0IFN0cmluZyYgdGFyZ2V0UGF0aCwgY29uc3QgU3RyaW5nJiBzeW1ib2xpY0xpbmtQ
YXRoKQoreworICAgIENTdHJpbmcgdGFyZ2V0UGF0aEZTUmVwID0gZmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKHRhcmdldFBhdGgpOworICAgIGlmICghdGFyZ2V0UGF0aEZTUmVwLmRhdGEoKSB8fCB0
YXJnZXRQYXRoRlNSZXAuZGF0YSgpWzBdID09ICdcMCcpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIENTdHJpbmcgc3ltYm9saWNMaW5rUGF0aEZTUmVwID0gZmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKHN5bWJvbGljTGlua1BhdGgpOworICAgIGlmICghc3ltYm9saWNMaW5rUGF0aEZTUmVw
LmRhdGEoKSB8fCBzeW1ib2xpY0xpbmtQYXRoRlNSZXAuZGF0YSgpWzBdID09ICdcMCcpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiAhc3ltbGluayh0YXJnZXRQYXRoRlNSZXAu
ZGF0YSgpLCBzeW1ib2xpY0xpbmtQYXRoRlNSZXAuZGF0YSgpKTsKK30KKworU3RyaW5nIHBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29t
cG9uZW50KQoreworICAgIGlmIChwYXRoLmVuZHNXaXRoKCcvJykpCisgICAgICAgIHJldHVybiBw
YXRoICsgY29tcG9uZW50OworICAgIHJldHVybiBwYXRoICsgIi8iICsgY29tcG9uZW50OworfQor
CitTdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhTdHJpbmdWaWV3IHBhdGgsIGNvbnN0
IFZlY3RvcjxTdHJpbmdWaWV3PiYgY29tcG9uZW50cykKK3sKKyAgICBTdHJpbmdCdWlsZGVyIGJ1
aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQocGF0aCk7CisgICAgZm9yIChhdXRvJiBjb21wb25l
bnQgOiBjb21wb25lbnRzKSB7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcvJyk7CisgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKGNvbXBvbmVudCk7CisgICAgfQorICAgIHJldHVybiBidWlsZGVyLnRv
U3RyaW5nKCk7Cit9CisKK2Jvb2wgbWFrZUFsbERpcmVjdG9yaWVzKGNvbnN0IFN0cmluZyYgcGF0
aCkKK3sKKyAgICBDU3RyaW5nIGZ1bGxQYXRoID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBh
dGgpOworICAgIGlmICghYWNjZXNzKGZ1bGxQYXRoLmRhdGEoKSwgRl9PSykpCisgICAgICAgIHJl
dHVybiB0cnVlOworCisgICAgY2hhciogcCA9IGZ1bGxQYXRoLm11dGFibGVEYXRhKCkgKyAxOwor
ICAgIGludCBsZW5ndGggPSBmdWxsUGF0aC5sZW5ndGgoKTsKKworICAgIGlmIChwW2xlbmd0aCAt
IDFdID09ICcvJykKKyAgICAgICAgcFtsZW5ndGggLSAxXSA9ICdcMCc7CisgICAgZm9yICg7ICpw
OyArK3ApIHsKKyAgICAgICAgaWYgKCpwID09ICcvJykgeworICAgICAgICAgICAgKnAgPSAnXDAn
OworICAgICAgICAgICAgaWYgKGFjY2VzcyhmdWxsUGF0aC5kYXRhKCksIEZfT0spKSB7CisgICAg
ICAgICAgICAgICAgaWYgKG1rZGlyKGZ1bGxQYXRoLmRhdGEoKSwgU19JUldYVSkpCisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICpw
ID0gJy8nOworICAgICAgICB9CisgICAgfQorICAgIGlmIChhY2Nlc3MoZnVsbFBhdGguZGF0YSgp
LCBGX09LKSkgeworICAgICAgICBpZiAobWtkaXIoZnVsbFBhdGguZGF0YSgpLCBTX0lSV1hVKSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworU3RyaW5nIHBhdGhHZXRGaWxlTmFtZShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgcmV0
dXJuIHBhdGguc3Vic3RyaW5nKHBhdGgucmV2ZXJzZUZpbmQoJy8nKSArIDEpOworfQorCitTdHJp
bmcgZGlyZWN0b3J5TmFtZShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgQ1N0cmluZyBmc1Jl
cCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKKworICAgIGlmICghZnNSZXAuZGF0
YSgpIHx8IGZzUmVwLmRhdGEoKVswXSA9PSAnXDAnKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7
CisKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChkaXJuYW1lKGZzUmVwLm11dGFibGVEYXRh
KCkpKTsKK30KKworVmVjdG9yPFN0cmluZz4gbGlzdERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBh
dGgsIGNvbnN0IFN0cmluZyYgZmlsdGVyKQoreworICAgIFZlY3RvcjxTdHJpbmc+IGVudHJpZXM7
CisgICAgQ1N0cmluZyBjcGF0aCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKKyAg
ICBDU3RyaW5nIGNmaWx0ZXIgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsdGVyKTsKKyAg
ICBESVIqIGRpciA9IG9wZW5kaXIoY3BhdGguZGF0YSgpKTsKKyAgICBpZiAoZGlyKSB7CisgICAg
ICAgIHN0cnVjdCBkaXJlbnQqIGRwOworICAgICAgICB3aGlsZSAoKGRwID0gcmVhZGRpcihkaXIp
KSkgeworICAgICAgICAgICAgY29uc3QgY2hhciogbmFtZSA9IGRwLT5kX25hbWU7CisgICAgICAg
ICAgICBpZiAoIXN0cmNtcChuYW1lLCAiLiIpIHx8ICFzdHJjbXAobmFtZSwgIi4uIikpCisgICAg
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAoZm5tYXRjaChjZmlsdGVyLmRh
dGEoKSwgbmFtZSwgMCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBj
aGFyIGZpbGVQYXRoW1BBVEhfTUFYXTsKKyAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxpbnQ+
KHNpemVvZihmaWxlUGF0aCkgLSAxKSA8IHNucHJpbnRmKGZpbGVQYXRoLCBzaXplb2YoZmlsZVBh
dGgpLCAiJXMvJXMiLCBjcGF0aC5kYXRhKCksIG5hbWUpKQorICAgICAgICAgICAgICAgIGNvbnRp
bnVlOyAvLyBidWZmZXIgb3ZlcmZsb3cKKworICAgICAgICAgICAgYXV0byBzdHJpbmcgPSBzdHJp
bmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVQYXRoKTsKKworICAgICAgICAgICAg
Ly8gU29tZSBmaWxlIHN5c3RlbSByZXByZXNlbnRhdGlvbnMgY2Fubm90IGJlIHJlcHJlc2VudGVk
IGFzIGEgVVRGLTE2IHN0cmluZywKKyAgICAgICAgICAgIC8vIHNvIHRoaXMgc3RyaW5nIG1pZ2h0
IGJlIG51bGwuCisgICAgICAgICAgICBpZiAoIXN0cmluZy5pc051bGwoKSkKKyAgICAgICAgICAg
ICAgICBlbnRyaWVzLmFwcGVuZChXVEZNb3ZlKHN0cmluZykpOworICAgICAgICB9CisgICAgICAg
IGNsb3NlZGlyKGRpcik7CisgICAgfQorICAgIHJldHVybiBlbnRyaWVzOworfQorCisjaWYgIVBM
QVRGT1JNKENPQ09BKQorU3RyaW5nIHN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
Y29uc3QgY2hhciogcGF0aCkKK3sKKyAgICBpZiAoIXBhdGgpCisgICAgICAgIHJldHVybiBTdHJp
bmcoKTsKKworICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KHBhdGgpOworfQorCitDU3RyaW5n
IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgcmV0
dXJuIHBhdGgudXRmOCgpOworfQorCitib29sIG1vdmVGaWxlKGNvbnN0IFN0cmluZyYgb2xkUGF0
aCwgY29uc3QgU3RyaW5nJiBuZXdQYXRoKQoreworICAgIGF1dG8gb2xkRmlsZW5hbWUgPSBmaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24ob2xkUGF0aCk7CisgICAgaWYgKG9sZEZpbGVuYW1lLmlzTnVs
bCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIG5ld0ZpbGVuYW1lID0gZmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKG5ld1BhdGgpOworICAgIGlmIChuZXdGaWxlbmFtZS5pc051
bGwoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHJlbmFtZShvbGRGaWxl
bmFtZS5kYXRhKCksIG5ld0ZpbGVuYW1lLmRhdGEoKSkgIT0gLTE7Cit9CisKK2Jvb2wgZ2V0Vm9s
dW1lRnJlZVNwYWNlKGNvbnN0IFN0cmluZyYgcGF0aCwgdWludDY0X3QmIGZyZWVTcGFjZSkKK3sK
KyAgICBzdHJ1Y3Qgc3RhdHZmcyBmaWxlU3lzdGVtU3RhdDsKKyAgICBpZiAoc3RhdHZmcyhmaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpLCAmZmlsZVN5c3RlbVN0YXQpKSB7Cisg
ICAgICAgIGZyZWVTcGFjZSA9IGZpbGVTeXN0ZW1TdGF0LmZfYmF2YWlsICogZmlsZVN5c3RlbVN0
YXQuZl9mcnNpemU7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFs
c2U7Cit9CisjZW5kaWYKKworI2lmICFPUyhEQVJXSU4pCitTdHJpbmcgb3BlblRlbXBvcmFyeUZp
bGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKQorewor
ICAgIGNoYXIgYnVmZmVyW1BBVEhfTUFYXTsKKyAgICBjb25zdCBjaGFyKiB0bXBEaXIgPSBnZXRl
bnYoIlRNUERJUiIpOworCisgICAgaWYgKCF0bXBEaXIpCisgICAgICAgIHRtcERpciA9ICIvdG1w
IjsKKworICAgIGlmIChzbnByaW50ZihidWZmZXIsIFBBVEhfTUFYLCAiJXMvJXNYWFhYWFgiLCB0
bXBEaXIsIHByZWZpeC51dGY4KCkuZGF0YSgpKSA+PSBQQVRIX01BWCkKKyAgICAgICAgZ290byBl
bmQ7CisKKyAgICBoYW5kbGUgPSBta3N0ZW1wKGJ1ZmZlcik7CisgICAgaWYgKGhhbmRsZSA8IDAp
CisgICAgICAgIGdvdG8gZW5kOworCisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoYnVmZmVy
KTsKKworZW5kOgorICAgIGhhbmRsZSA9IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7CisgICAg
cmV0dXJuIFN0cmluZygpOworfQorI2VuZGlmCisKK2Jvb2wgaGFyZExpbmtPckNvcHlGaWxlKGNv
bnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uKQoreworICAgIGlm
IChzb3VyY2UuaXNFbXB0eSgpIHx8IGRlc3RpbmF0aW9uLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgQ1N0cmluZyBmc1NvdXJjZSA9IGZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihzb3VyY2UpOworICAgIGlmICghZnNTb3VyY2UuZGF0YSgpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBDU3RyaW5nIGZzRGVzdGluYXRpb24gPSBmaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oZGVzdGluYXRpb24pOworICAgIGlmICghZnNEZXN0aW5hdGlvbi5kYXRhKCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghbGluayhmc1NvdXJjZS5kYXRhKCksIGZzRGVz
dGluYXRpb24uZGF0YSgpKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBIYXJkIGxp
bmsgZmFpbGVkLiBQZXJmb3JtIGEgY29weSBpbnN0ZWFkLgorICAgIGF1dG8gaGFuZGxlID0gb3Bl
bihmc0Rlc3RpbmF0aW9uLmRhdGEoKSwgT19XUk9OTFkgfCBPX0NSRUFUIHwgT19FWENMLCAwNjY2
KTsKKyAgICBpZiAoaGFuZGxlID09IC0xKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBi
b29sIGFwcGVuZFJlc3VsdCA9IGFwcGVuZEZpbGVDb250ZW50c1RvRmlsZUhhbmRsZShzb3VyY2Us
IGhhbmRsZSk7CisgICAgY2xvc2UoaGFuZGxlKTsKKworICAgIC8vIElmIHRoZSBjb3B5IGZhaWxl
ZCwgZGVsZXRlIHRoZSB1bnVzYWJsZSBmaWxlLgorICAgIGlmICghYXBwZW5kUmVzdWx0KQorICAg
ICAgICB1bmxpbmsoZnNEZXN0aW5hdGlvbi5kYXRhKCkpOworCisgICAgcmV0dXJuIGFwcGVuZFJl
c3VsdDsKK30KKworT3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0IENTdHJp
bmcmIGZzRmlsZSkKK3sKKyAgICBzdHJ1Y3Qgc3RhdCBmaWxlU3RhdDsKKyAgICBpZiAoc3RhdChm
c0ZpbGUuZGF0YSgpLCAmZmlsZVN0YXQpID09IC0xKQorICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworCisgICAgcmV0dXJuIGZpbGVTdGF0LnN0X2RldjsKK30KKworU3RyaW5nIHJlYWxQYXRo
KGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCit7CisgICAgQ1N0cmluZyBmc1JlcCA9IGZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihmaWxlUGF0aCk7CisgICAgY2hhciByZXNvbHZlZE5hbWVbUEFUSF9N
QVhdOworICAgIGNvbnN0IGNoYXIqIHJlc3VsdCA9IHJlYWxwYXRoKGZzUmVwLmRhdGEoKSwgcmVz
b2x2ZWROYW1lKTsKKyAgICByZXR1cm4gcmVzdWx0ID8gU3RyaW5nOjpmcm9tVVRGOChyZXN1bHQp
IDogZmlsZVBhdGg7Cit9CisKK30gLy8gbmFtZXNwYWNlIEZpbGVTeXN0ZW0KK30gLy8gbmFtZXNw
YWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvc3BpL21hYy9NZXRhZGF0YVNQSS5o
IGIvU291cmNlL1dURi93dGYvc3BpL21hYy9NZXRhZGF0YVNQSS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgxNTU0
N2M2Yjg1MTBlMzA2MThlMjI4MmFkNWI3ODQwMTZjYTM3MjEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9zcGkvbWFjL01ldGFkYXRhU1BJLmgKQEAgLTAsMCArMSwzOCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKwor
I2luY2x1ZGUgPENvcmVTZXJ2aWNlcy9Db3JlU2VydmljZXNQcml2Lmg+CisKKyNlbmRpZgorCitX
VEZfRVhURVJOX0NfQkVHSU4KKworQm9vbGVhbiBNREl0ZW1TZXRBdHRyaWJ1dGUoTURJdGVtUmVm
LCBDRlN0cmluZ1JlZiBuYW1lLCBDRlR5cGVSZWYgYXR0cik7CisKK1dURl9FWFRFUk5fQ19FTkQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcCBiL1NvdXJj
ZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMTY0NzJjZGQzZjVi
YTA3N2I5NzI0NTYwMDhhNDk0MDk0NmVlZGU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dU
Ri93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCkBAIC0wLDAgKzEsNTg2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA3LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSwgTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAo
IkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9t
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CisKKyNpbmNsdWRlIDxpby5oPgor
I2luY2x1ZGUgPHNobG9iai5oPgorI2luY2x1ZGUgPHNobHdhcGkuaD4KKyNpbmNsdWRlIDxzeXMv
c3RhdC5oPgorI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhp
Y2FsbHlSYW5kb21OdW1iZXIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZU1ldGFkYXRhLmg+CisjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9X
Q2hhclN0cmluZ0V4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi93aW4vUGF0aFdhbGtlci5oPgorCitu
YW1lc3BhY2UgV1RGIHsKKworbmFtZXNwYWNlIEZpbGVTeXN0ZW0geworCitzdGF0aWMgY29uc3Qg
VUxPTkdMT05HIGtTZWNvbmRzRnJvbUZpbGVUaW1lVG9UaW1ldCA9IDExNjQ0NDczNjAwOworCitz
dGF0aWMgYm9vbCBnZXRGaW5kRGF0YShTdHJpbmcgcGF0aCwgV0lOMzJfRklORF9EQVRBVyYgZmlu
ZERhdGEpCit7CisgICAgSEFORExFIGhhbmRsZSA9IEZpbmRGaXJzdEZpbGVXKHN0cmluZ1RvTnVs
bFRlcm1pbmF0ZWRXQ2hhcihwYXRoKS5kYXRhKCksICZmaW5kRGF0YSk7CisgICAgaWYgKGhhbmRs
ZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIEZp
bmRDbG9zZShoYW5kbGUpOworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgYm9vbCBnZXRG
aWxlU2l6ZUZyb21GaW5kRGF0YShjb25zdCBXSU4zMl9GSU5EX0RBVEFXJiBmaW5kRGF0YSwgbG9u
ZyBsb25nJiBzaXplKQoreworICAgIFVMQVJHRV9JTlRFR0VSIGZpbGVTaXplOworICAgIGZpbGVT
aXplLkhpZ2hQYXJ0ID0gZmluZERhdGEubkZpbGVTaXplSGlnaDsKKyAgICBmaWxlU2l6ZS5Mb3dQ
YXJ0ID0gZmluZERhdGEubkZpbGVTaXplTG93OworCisgICAgaWYgKGZpbGVTaXplLlF1YWRQYXJ0
ID4gc3RhdGljX2Nhc3Q8VUxPTkdMT05HPihzdGQ6Om51bWVyaWNfbGltaXRzPGxvbmcgbG9uZz46
Om1heCgpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgc2l6ZSA9IGZpbGVTaXplLlF1
YWRQYXJ0OworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgYm9vbCBnZXRGaWxlU2l6ZUZy
b21CeUhhbmRsZUZpbGVJbmZvcm1hdGlvblN0cnVjdHVyZShjb25zdCBCWV9IQU5ETEVfRklMRV9J
TkZPUk1BVElPTiYgZmlsZUluZm9ybWF0aW9uLCBsb25nIGxvbmcmIHNpemUpCit7CisgICAgVUxB
UkdFX0lOVEVHRVIgZmlsZVNpemU7CisgICAgZmlsZVNpemUuSGlnaFBhcnQgPSBmaWxlSW5mb3Jt
YXRpb24ubkZpbGVTaXplSGlnaDsKKyAgICBmaWxlU2l6ZS5Mb3dQYXJ0ID0gZmlsZUluZm9ybWF0
aW9uLm5GaWxlU2l6ZUxvdzsKKworICAgIGlmIChmaWxlU2l6ZS5RdWFkUGFydCA+IHN0YXRpY19j
YXN0PFVMT05HTE9ORz4oc3RkOjpudW1lcmljX2xpbWl0czxsb25nIGxvbmc+OjptYXgoKSkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHNpemUgPSBmaWxlU2l6ZS5RdWFkUGFydDsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIHZvaWQgZ2V0RmlsZUNyZWF0aW9uVGltZUZyb21G
aW5kRGF0YShjb25zdCBXSU4zMl9GSU5EX0RBVEFXJiBmaW5kRGF0YSwgdGltZV90JiB0aW1lKQor
eworICAgIFVMQVJHRV9JTlRFR0VSIGZpbGVUaW1lOworICAgIGZpbGVUaW1lLkhpZ2hQYXJ0ID0g
ZmluZERhdGEuZnRDcmVhdGlvblRpbWUuZHdIaWdoRGF0ZVRpbWU7CisgICAgZmlsZVRpbWUuTG93
UGFydCA9IGZpbmREYXRhLmZ0Q3JlYXRpb25UaW1lLmR3TG93RGF0ZVRpbWU7CisKKyAgICAvLyBJ
bmZvcm1hdGlvbiBhYm91dCBjb252ZXJ0aW5nIHRpbWVfdCB0byBGaWxlVGltZSBpcyBhdmFpbGFi
bGUgYXQgaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L21zNzI0MjI4JTI4
dj12cy44NSUyOS5hc3B4CisgICAgdGltZSA9IGZpbGVUaW1lLlF1YWRQYXJ0IC8gMTAwMDAwMDAg
LSBrU2Vjb25kc0Zyb21GaWxlVGltZVRvVGltZXQ7Cit9CisKKworc3RhdGljIHZvaWQgZ2V0Rmls
ZU1vZGlmaWNhdGlvblRpbWVGcm9tRmluZERhdGEoY29uc3QgV0lOMzJfRklORF9EQVRBVyYgZmlu
ZERhdGEsIHRpbWVfdCYgdGltZSkKK3sKKyAgICBVTEFSR0VfSU5URUdFUiBmaWxlVGltZTsKKyAg
ICBmaWxlVGltZS5IaWdoUGFydCA9IGZpbmREYXRhLmZ0TGFzdFdyaXRlVGltZS5kd0hpZ2hEYXRl
VGltZTsKKyAgICBmaWxlVGltZS5Mb3dQYXJ0ID0gZmluZERhdGEuZnRMYXN0V3JpdGVUaW1lLmR3
TG93RGF0ZVRpbWU7CisKKyAgICAvLyBJbmZvcm1hdGlvbiBhYm91dCBjb252ZXJ0aW5nIHRpbWVf
dCB0byBGaWxlVGltZSBpcyBhdmFpbGFibGUgYXQgaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9l
bi11cy9saWJyYXJ5L21zNzI0MjI4JTI4dj12cy44NSUyOS5hc3B4CisgICAgdGltZSA9IGZpbGVU
aW1lLlF1YWRQYXJ0IC8gMTAwMDAwMDAgLSBrU2Vjb25kc0Zyb21GaWxlVGltZVRvVGltZXQ7Cit9
CisKK2Jvb2wgZ2V0RmlsZVNpemUoY29uc3QgU3RyaW5nJiBwYXRoLCBsb25nIGxvbmcmIHNpemUp
Cit7CisgICAgV0lOMzJfRklORF9EQVRBVyBmaW5kRGF0YTsKKyAgICBpZiAoIWdldEZpbmREYXRh
KHBhdGgsIGZpbmREYXRhKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGdl
dEZpbGVTaXplRnJvbUZpbmREYXRhKGZpbmREYXRhLCBzaXplKTsKK30KKworYm9vbCBnZXRGaWxl
U2l6ZShQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRsZSwgbG9uZyBsb25nJiBzaXplKQorewor
ICAgIEJZX0hBTkRMRV9GSUxFX0lORk9STUFUSU9OIGZpbGVJbmZvcm1hdGlvbjsKKyAgICBpZiAo
ITo6R2V0RmlsZUluZm9ybWF0aW9uQnlIYW5kbGUoZmlsZUhhbmRsZSwgJmZpbGVJbmZvcm1hdGlv
bikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBnZXRGaWxlU2l6ZUZyb21C
eUhhbmRsZUZpbGVJbmZvcm1hdGlvblN0cnVjdHVyZShmaWxlSW5mb3JtYXRpb24sIHNpemUpOwor
fQorCitPcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3Ry
aW5nJiBwYXRoKQoreworICAgIFdJTjMyX0ZJTkRfREFUQVcgZmluZERhdGE7CisgICAgaWYgKCFn
ZXRGaW5kRGF0YShwYXRoLCBmaW5kRGF0YSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisKKyAgICB0aW1lX3QgdGltZSA9IDA7CisgICAgZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWVGcm9t
RmluZERhdGEoZmluZERhdGEsIHRpbWUpOworICAgIHJldHVybiBXYWxsVGltZTo6ZnJvbVJhd1Nl
Y29uZHModGltZSk7Cit9CisKK09wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlQ3JlYXRpb25UaW1l
KGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBXSU4zMl9GSU5EX0RBVEFXIGZpbmREYXRhOwor
ICAgIGlmICghZ2V0RmluZERhdGEocGF0aCwgZmluZERhdGEpKQorICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworCisgICAgdGltZV90IHRpbWUgPSAwOworICAgIGdldEZpbGVDcmVhdGlvblRp
bWVGcm9tRmluZERhdGEoZmluZERhdGEsIHRpbWUpOworICAgIHJldHVybiBXYWxsVGltZTo6ZnJv
bVJhd1NlY29uZHModGltZSk7Cit9CisKK3N0YXRpYyBTdHJpbmcgZ2V0RmluYWxQYXRoTmFtZShj
b25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgYXV0byBoYW5kbGUgPSBvcGVuRmlsZShwYXRoLCBG
aWxlT3Blbk1vZGU6OlJlYWQpOworICAgIGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUpKQorICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBWZWN0b3I8VUNoYXI+IGJ1ZmZlcihNQVhfUEFU
SCk7CisgICAgaWYgKDo6R2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlVyhoYW5kbGUsIGJ1ZmZlci5k
YXRhKCksIGJ1ZmZlci5zaXplKCksIFZPTFVNRV9OQU1FX05UKSA+PSBNQVhfUEFUSCkgeworICAg
ICAgICBjbG9zZUZpbGUoaGFuZGxlKTsKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgIH0K
KyAgICBjbG9zZUZpbGUoaGFuZGxlKTsKKworICAgIGJ1ZmZlci5zaHJpbmsod2NzbGVuKGJ1ZmZl
ci5kYXRhKCkpKTsKKyAgICByZXR1cm4gU3RyaW5nOjphZG9wdChXVEZNb3ZlKGJ1ZmZlcikpOwor
fQorCitzdGF0aWMgaW5saW5lIGJvb2wgaXNTeW1ib2xpY0xpbmsoV0lOMzJfRklORF9EQVRBVyBm
aW5kRGF0YSkKK3sKKyAgICByZXR1cm4gZmluZERhdGEuZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVf
QVRUUklCVVRFX1JFUEFSU0VfUE9JTlQgJiYgZmluZERhdGEuZHdSZXNlcnZlZDAgPT0gSU9fUkVQ
QVJTRV9UQUdfU1lNTElOSzsKK30KKworc3RhdGljIEZpbGVNZXRhZGF0YTo6VHlwZSB0b0ZpbGVN
ZXRhZGF0YVR5cGUoV0lOMzJfRklORF9EQVRBVyBmaW5kRGF0YSkKK3sKKyAgICBpZiAoZmluZERh
dGEuZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWSkKKyAgICAgICAg
cmV0dXJuIEZpbGVNZXRhZGF0YTo6VHlwZTo6RGlyZWN0b3J5OworICAgIGlmIChpc1N5bWJvbGlj
TGluayhmaW5kRGF0YSkpCisgICAgICAgIHJldHVybiBGaWxlTWV0YWRhdGE6OlR5cGU6OlN5bWJv
bGljTGluazsKKyAgICByZXR1cm4gRmlsZU1ldGFkYXRhOjpUeXBlOjpGaWxlOworfQorCitzdGF0
aWMgT3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaW5kRGF0YVRvRmlsZU1ldGFkYXRhKFdJTjMyX0ZJ
TkRfREFUQVcgZmluZERhdGEpCit7CisgICAgbG9uZyBsb25nIGxlbmd0aDsKKyAgICBpZiAoIWdl
dEZpbGVTaXplRnJvbUZpbmREYXRhKGZpbmREYXRhLCBsZW5ndGgpKQorICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworCisgICAgdGltZV90IG1vZGlmaWNhdGlvblRpbWU7CisgICAgZ2V0Rmls
ZU1vZGlmaWNhdGlvblRpbWVGcm9tRmluZERhdGEoZmluZERhdGEsIG1vZGlmaWNhdGlvblRpbWUp
OworCisgICAgcmV0dXJuIEZpbGVNZXRhZGF0YSB7CisgICAgICAgIFdhbGxUaW1lOjpmcm9tUmF3
U2Vjb25kcyhtb2RpZmljYXRpb25UaW1lKSwKKyAgICAgICAgbGVuZ3RoLAorICAgICAgICBzdGF0
aWNfY2FzdDxib29sPihmaW5kRGF0YS5kd0ZpbGVBdHRyaWJ1dGVzICYgRklMRV9BVFRSSUJVVEVf
SElEREVOKSwKKyAgICAgICAgdG9GaWxlTWV0YWRhdGFUeXBlKGZpbmREYXRhKQorICAgIH07Cit9
CisKK09wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYgcGF0
aCkKK3sKKyAgICBXSU4zMl9GSU5EX0RBVEFXIGZpbmREYXRhOworICAgIGlmICghZ2V0RmluZERh
dGEocGF0aCwgZmluZERhdGEpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAg
cmV0dXJuIGZpbmREYXRhVG9GaWxlTWV0YWRhdGEoZmluZERhdGEpOworfQorCitPcHRpb25hbDxG
aWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YUZvbGxvd2luZ1N5bWxpbmtzKGNvbnN0IFN0cmluZyYg
cGF0aCkKK3sKKyAgICBXSU4zMl9GSU5EX0RBVEFXIGZpbmREYXRhOworICAgIGlmICghZ2V0Rmlu
ZERhdGEocGF0aCwgZmluZERhdGEpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisg
ICAgaWYgKGlzU3ltYm9saWNMaW5rKGZpbmREYXRhKSkgeworICAgICAgICBTdHJpbmcgdGFyZ2V0
UGF0aCA9IGdldEZpbmFsUGF0aE5hbWUocGF0aCk7CisgICAgICAgIGlmICh0YXJnZXRQYXRoLmlz
TnVsbCgpKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgaWYgKCFn
ZXRGaW5kRGF0YSh0YXJnZXRQYXRoLCBmaW5kRGF0YSkpCisgICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgIH0KKworICAgIHJldHVybiBmaW5kRGF0YVRvRmlsZU1ldGFkYXRhKGZp
bmREYXRhKTsKK30KKworYm9vbCBjcmVhdGVTeW1ib2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJn
ZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGljTGlua1BhdGgpCit7CisgICAgcmV0dXJuICE6
OkNyZWF0ZVN5bWJvbGljTGlua1coc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKHN5bWJvbGlj
TGlua1BhdGgpLmRhdGEoKSwgc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKHRhcmdldFBhdGgp
LmRhdGEoKSwgMCk7Cit9CisKK2Jvb2wgZmlsZUV4aXN0cyhjb25zdCBTdHJpbmcmIHBhdGgpCit7
CisgICAgV0lOMzJfRklORF9EQVRBVyBmaW5kRGF0YTsKKyAgICByZXR1cm4gZ2V0RmluZERhdGEo
cGF0aCwgZmluZERhdGEpOworfQorCitib29sIGRlbGV0ZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRo
KQoreworICAgIFN0cmluZyBmaWxlbmFtZSA9IHBhdGg7CisgICAgcmV0dXJuICEhRGVsZXRlRmls
ZVcoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGZpbGVuYW1lKS5kYXRhKCkpOworfQorCiti
b29sIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBTdHJp
bmcgZmlsZW5hbWUgPSBwYXRoOworICAgIHJldHVybiAhIVJlbW92ZURpcmVjdG9yeVcoc3RyaW5n
VG9OdWxsVGVybWluYXRlZFdDaGFyKGZpbGVuYW1lKS5kYXRhKCkpOworfQorCitib29sIG1vdmVG
aWxlKGNvbnN0IFN0cmluZyYgb2xkUGF0aCwgY29uc3QgU3RyaW5nJiBuZXdQYXRoKQoreworICAg
IFN0cmluZyBvbGRGaWxlbmFtZSA9IG9sZFBhdGg7CisgICAgU3RyaW5nIG5ld0ZpbGVuYW1lID0g
bmV3UGF0aDsKKyAgICByZXR1cm4gISE6Ok1vdmVGaWxlRXgoc3RyaW5nVG9OdWxsVGVybWluYXRl
ZFdDaGFyKG9sZEZpbGVuYW1lKS5kYXRhKCksIHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihu
ZXdGaWxlbmFtZSkuZGF0YSgpLCBNT1ZFRklMRV9DT1BZX0FMTE9XRUQgfCBNT1ZFRklMRV9SRVBM
QUNFX0VYSVNUSU5HKTsKK30KKworU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChjb25z
dCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29tcG9uZW50KQoreworICAgIFZlY3RvcjxV
Q2hhcj4gYnVmZmVyKE1BWF9QQVRIKTsKKworICAgIGlmIChwYXRoLmxlbmd0aCgpICsgMSA+IGJ1
ZmZlci5zaXplKCkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIFN0cmluZ1ZpZXco
cGF0aCkuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoYnVmZmVyLmRhdGEoKSk7CisgICAgYnVm
ZmVyW3BhdGgubGVuZ3RoKCldID0gJ1wwJzsKKworICAgIGlmICghUGF0aEFwcGVuZFcoYnVmZmVy
LmRhdGEoKSwgc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGNvbXBvbmVudCkuZGF0YSgpKSkK
KyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgYnVmZmVyLnNocmluayh3Y3NsZW4oYnVm
ZmVyLmRhdGEoKSkpOworCisgICAgcmV0dXJuIFN0cmluZzo6YWRvcHQoV1RGTW92ZShidWZmZXIp
KTsKK30KKworU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMoU3RyaW5nVmlldyBwYXRo
LCBjb25zdCBWZWN0b3I8U3RyaW5nVmlldz4mIGNvbXBvbmVudHMpCit7CisgICAgU3RyaW5nIHJl
c3VsdCA9IHBhdGgudG9TdHJpbmcoKTsKKyAgICBmb3IgKGF1dG8mIGNvbXBvbmVudCA6IGNvbXBv
bmVudHMpCisgICAgICAgIHJlc3VsdCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZXN1bHQs
IGNvbXBvbmVudC50b1N0cmluZygpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisjaWYgIVVT
RShDRikKKworQ1N0cmluZyBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBw
YXRoKQoreworICAgIGF1dG8gdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzID0gcGF0aC51cGNvbnZlcnRl
ZENoYXJhY3RlcnMoKTsKKworICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzID0gdXBjb252ZXJ0
ZWRDaGFyYWN0ZXJzOworICAgIGludCBzaXplID0gV2lkZUNoYXJUb011bHRpQnl0ZShDUF9BQ1As
IDAsIGNoYXJhY3RlcnMsIHBhdGgubGVuZ3RoKCksIDAsIDAsIDAsIDApIC0gMTsKKworICAgIGNo
YXIqIGJ1ZmZlcjsKKyAgICBDU3RyaW5nIHN0cmluZyA9IENTdHJpbmc6Om5ld1VuaW5pdGlhbGl6
ZWQoc2l6ZSwgYnVmZmVyKTsKKworICAgIFdpZGVDaGFyVG9NdWx0aUJ5dGUoQ1BfQUNQLCAwLCBj
aGFyYWN0ZXJzLCBwYXRoLmxlbmd0aCgpLCBidWZmZXIsIHNpemUsIDAsIDApOworCisgICAgcmV0
dXJuIHN0cmluZzsKK30KKworI2VuZGlmIC8vICFVU0UoQ0YpCisKK2Jvb2wgbWFrZUFsbERpcmVj
dG9yaWVzKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBTdHJpbmcgZnVsbFBhdGggPSBwYXRo
OworICAgIGlmIChTSENyZWF0ZURpcmVjdG9yeUV4KDAsIHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRX
Q2hhcihmdWxsUGF0aCkuZGF0YSgpLCAwKSAhPSBFUlJPUl9TVUNDRVNTKSB7CisgICAgICAgIERX
T1JEIGVycm9yID0gR2V0TGFzdEVycm9yKCk7CisgICAgICAgIGlmIChlcnJvciAhPSBFUlJPUl9G
SUxFX0VYSVNUUyAmJiBlcnJvciAhPSBFUlJPUl9BTFJFQURZX0VYSVNUUykgeworICAgICAgICAg
ICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIHBhdGggJXMiLCBwYXRoLmFzY2lpKCkuZGF0
YSgpKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworU3RyaW5nIGhvbWVEaXJlY3RvcnlQYXRoKCkKK3sKKyAgICByZXR1
cm4gIiI7Cit9CisKK1N0cmluZyBwYXRoR2V0RmlsZU5hbWUoY29uc3QgU3RyaW5nJiBwYXRoKQor
eworICAgIHJldHVybiBudWxsVGVybWluYXRlZFdDaGFyVG9TdHJpbmcoOjpQYXRoRmluZEZpbGVO
YW1lKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihwYXRoKS5kYXRhKCkpKTsKK30KKworU3Ry
aW5nIGRpcmVjdG9yeU5hbWUoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIFN0cmluZyBuYW1l
ID0gcGF0aC5sZWZ0KHBhdGgubGVuZ3RoKCkgLSBwYXRoR2V0RmlsZU5hbWUocGF0aCkubGVuZ3Ro
KCkpOworICAgIGlmIChuYW1lLmNoYXJhY3RlclN0YXJ0aW5nQXQobmFtZS5sZW5ndGgoKSAtIDEp
ID09ICdcXCcpIHsKKyAgICAgICAgLy8gUmVtb3ZlIGFueSB0cmFpbGluZyAiXCIuCisgICAgICAg
IG5hbWUudHJ1bmNhdGUobmFtZS5sZW5ndGgoKSAtIDEpOworICAgIH0KKyAgICByZXR1cm4gbmFt
ZTsKK30KKworc3RhdGljIFN0cmluZyBidW5kbGVOYW1lKCkKK3sKKyAgICBzdGF0aWMgY29uc3Qg
TmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBuYW1lID0gW10geworICAgICAgICBTdHJpbmcgbmFtZSB7
ICJXZWJLaXQiX3MgfTsKKworI2lmIFVTRShDRikKKyAgICAgICAgaWYgKENGQnVuZGxlUmVmIGJ1
bmRsZSA9IENGQnVuZGxlR2V0TWFpbkJ1bmRsZSgpKSB7CisgICAgICAgICAgICBpZiAoQ0ZUeXBl
UmVmIGJ1bmRsZUV4ZWN1dGFibGUgPSBDRkJ1bmRsZUdldFZhbHVlRm9ySW5mb0RpY3Rpb25hcnlL
ZXkoYnVuZGxlLCBrQ0ZCdW5kbGVFeGVjdXRhYmxlS2V5KSkgeworICAgICAgICAgICAgICAgIGlm
IChDRkdldFR5cGVJRChidW5kbGVFeGVjdXRhYmxlKSA9PSBDRlN0cmluZ0dldFR5cGVJRCgpKQor
ICAgICAgICAgICAgICAgICAgICBuYW1lID0gcmVpbnRlcnByZXRfY2FzdDxDRlN0cmluZ1JlZj4o
YnVuZGxlRXhlY3V0YWJsZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyNlbmRpZgorCisg
ICAgICAgIHJldHVybiBuYW1lOworICAgIH0oKTsKKworICAgIHJldHVybiBuYW1lOworfQorCitz
dGF0aWMgU3RyaW5nIHN0b3JhZ2VEaXJlY3RvcnkoRFdPUkQgcGF0aElkZW50aWZpZXIpCit7Cisg
ICAgVmVjdG9yPFVDaGFyPiBidWZmZXIoTUFYX1BBVEgpOworICAgIGlmIChGQUlMRUQoU0hHZXRG
b2xkZXJQYXRoVygwLCBwYXRoSWRlbnRpZmllciB8IENTSURMX0ZMQUdfQ1JFQVRFLCAwLCAwLCBi
dWZmZXIuZGF0YSgpKSkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICBidWZmZXIucmVz
aXplKHdjc2xlbihidWZmZXIuZGF0YSgpKSk7CisgICAgU3RyaW5nIGRpcmVjdG9yeSA9IFN0cmlu
Zzo6YWRvcHQoV1RGTW92ZShidWZmZXIpKTsKKworICAgIGRpcmVjdG9yeSA9IHBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChkaXJlY3RvcnksICJBcHBsZSBDb21wdXRlclxcIiArIGJ1bmRsZU5hbWUo
KSk7CisgICAgaWYgKCFtYWtlQWxsRGlyZWN0b3JpZXMoZGlyZWN0b3J5KSkKKyAgICAgICAgcmV0
dXJuIFN0cmluZygpOworCisgICAgcmV0dXJuIGRpcmVjdG9yeTsKK30KKworc3RhdGljIFN0cmlu
ZyBjYWNoZWRTdG9yYWdlRGlyZWN0b3J5KERXT1JEIHBhdGhJZGVudGlmaWVyKQoreworICAgIHN0
YXRpYyBIYXNoTWFwPERXT1JELCBTdHJpbmc+IGRpcmVjdG9yaWVzOworCisgICAgSGFzaE1hcDxE
V09SRCwgU3RyaW5nPjo6aXRlcmF0b3IgaXQgPSBkaXJlY3Rvcmllcy5maW5kKHBhdGhJZGVudGlm
aWVyKTsKKyAgICBpZiAoaXQgIT0gZGlyZWN0b3JpZXMuZW5kKCkpCisgICAgICAgIHJldHVybiBp
dC0+dmFsdWU7CisKKyAgICBTdHJpbmcgZGlyZWN0b3J5ID0gc3RvcmFnZURpcmVjdG9yeShwYXRo
SWRlbnRpZmllcik7CisgICAgZGlyZWN0b3JpZXMuYWRkKHBhdGhJZGVudGlmaWVyLCBkaXJlY3Rv
cnkpOworCisgICAgcmV0dXJuIGRpcmVjdG9yeTsKK30KKworc3RhdGljIFN0cmluZyBnZW5lcmF0
ZVRlbXBvcmFyeVBhdGgoY29uc3QgRnVuY3Rpb248Ym9vbChjb25zdCBTdHJpbmcmKT4mIGFjdGlv
bikKK3sKKyAgICB3Y2hhcl90IHRlbXBQYXRoW01BWF9QQVRIXTsKKyAgICBpbnQgdGVtcFBhdGhM
ZW5ndGggPSA6OkdldFRlbXBQYXRoVyhXVEZfQVJSQVlfTEVOR1RIKHRlbXBQYXRoKSwgdGVtcFBh
dGgpOworICAgIGlmICh0ZW1wUGF0aExlbmd0aCA8PSAwIHx8IHRlbXBQYXRoTGVuZ3RoID4gV1RG
X0FSUkFZX0xFTkdUSCh0ZW1wUGF0aCkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAg
IFN0cmluZyBwcm9wb3NlZFBhdGg7CisgICAgZG8geworICAgICAgICB3Y2hhcl90IHRlbXBGaWxl
W10gPSBMIlhYWFhYWFhYLnRtcCI7IC8vIFVzZSA4LjMgc3R5bGUgbmFtZSAobW9yZSBjaGFyYWN0
ZXJzIGFyZW4ndCBoZWxwZnVsIGR1ZSB0byA4LjMgc2hvcnQgZmlsZSBuYW1lcykKKyAgICAgICAg
Y29uc3QgaW50IHJhbmRvbVBhcnRMZW5ndGggPSA4OworICAgICAgICBjcnlwdG9ncmFwaGljYWxs
eVJhbmRvbVZhbHVlcyh0ZW1wRmlsZSwgcmFuZG9tUGFydExlbmd0aCAqIHNpemVvZih3Y2hhcl90
KSk7CisKKyAgICAgICAgLy8gTGltaXQgdG8gdmFsaWQgZmlsZXN5c3RlbSBjaGFyYWN0ZXJzLCBh
bHNvIGV4Y2x1ZGluZyBvdGhlcnMgdGhhdCBjb3VsZCBiZSBwcm9ibGVtYXRpYywgbGlrZSBwdW5j
dHVhdGlvbi4KKyAgICAgICAgLy8gZG9uJ3QgaW5jbHVkZSBib3RoIHVwcGVyIGFuZCBsb3dlcmNh
c2Ugc2luY2UgV2luZG93cyBmaWxlIHN5c3RlbXMgYXJlIHR5cGljYWxseSBub3QgY2FzZSBzZW5z
aXRpdmUuCisgICAgICAgIGNvbnN0IGNoYXIgdmFsaWRDaGFyc1tdID0gIjAxMjM0NTY3ODlhYmNk
ZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiI7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmFu
ZG9tUGFydExlbmd0aDsgKytpKQorICAgICAgICAgICAgdGVtcEZpbGVbaV0gPSB2YWxpZENoYXJz
W3RlbXBGaWxlW2ldICUgKHNpemVvZih2YWxpZENoYXJzKSAtIDEpXTsKKworICAgICAgICBBU1NF
UlQod2NzbGVuKHRlbXBGaWxlKSA9PSBXVEZfQVJSQVlfTEVOR1RIKHRlbXBGaWxlKSAtIDEpOwor
CisgICAgICAgIHByb3Bvc2VkUGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChudWxsVGVy
bWluYXRlZFdDaGFyVG9TdHJpbmcodGVtcFBhdGgpLCBudWxsVGVybWluYXRlZFdDaGFyVG9TdHJp
bmcodGVtcEZpbGUpKTsKKyAgICAgICAgaWYgKHByb3Bvc2VkUGF0aC5pc0VtcHR5KCkpCisgICAg
ICAgICAgICBicmVhazsKKyAgICB9IHdoaWxlICghYWN0aW9uKHByb3Bvc2VkUGF0aCkpOworCisg
ICAgcmV0dXJuIHByb3Bvc2VkUGF0aDsKK30KKworU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNv
bnN0IFN0cmluZyYsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKQoreworICAgIGhhbmRsZSA9
IElOVkFMSURfSEFORExFX1ZBTFVFOworCisgICAgU3RyaW5nIHByb3Bvc2VkUGF0aCA9IGdlbmVy
YXRlVGVtcG9yYXJ5UGF0aChbJmhhbmRsZV0oY29uc3QgU3RyaW5nJiBwcm9wb3NlZFBhdGgpIHsK
KyAgICAgICAgLy8gdXNlIENSRUFURV9ORVcgdG8gYXZvaWQgb3ZlcndyaXRpbmcgYW4gZXhpc3Rp
bmcgZmlsZSB3aXRoIHRoZSBzYW1lIG5hbWUKKyAgICAgICAgaGFuZGxlID0gOjpDcmVhdGVGaWxl
VyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIocHJvcG9zZWRQYXRoKS5kYXRhKCksIEdFTkVS
SUNfUkVBRCB8IEdFTkVSSUNfV1JJVEUsIDAsIDAsIENSRUFURV9ORVcsIEZJTEVfQVRUUklCVVRF
X05PUk1BTCwgMCk7CisKKyAgICAgICAgcmV0dXJuIGlzSGFuZGxlVmFsaWQoaGFuZGxlKSB8fCBH
ZXRMYXN0RXJyb3IoKSA9PSBFUlJPUl9BTFJFQURZX0VYSVNUUzsKKyAgICB9KTsKKworICAgIGlm
ICghaXNIYW5kbGVWYWxpZChoYW5kbGUpKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAg
ICByZXR1cm4gcHJvcG9zZWRQYXRoOworfQorCitQbGF0Zm9ybUZpbGVIYW5kbGUgb3BlbkZpbGUo
Y29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUgbW9kZSkKK3sKKyAgICBEV09SRCBkZXNp
cmVkQWNjZXNzID0gMDsKKyAgICBEV09SRCBjcmVhdGlvbkRpc3Bvc2l0aW9uID0gMDsKKyAgICBE
V09SRCBzaGFyZU1vZGUgPSAwOworICAgIHN3aXRjaCAobW9kZSkgeworICAgIGNhc2UgRmlsZU9w
ZW5Nb2RlOjpSZWFkOgorICAgICAgICBkZXNpcmVkQWNjZXNzID0gR0VORVJJQ19SRUFEOworICAg
ICAgICBjcmVhdGlvbkRpc3Bvc2l0aW9uID0gT1BFTl9FWElTVElORzsKKyAgICAgICAgc2hhcmVN
b2RlID0gRklMRV9TSEFSRV9SRUFEOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZpbGVPcGVu
TW9kZTo6V3JpdGU6CisgICAgICAgIGRlc2lyZWRBY2Nlc3MgPSBHRU5FUklDX1dSSVRFOworICAg
ICAgICBjcmVhdGlvbkRpc3Bvc2l0aW9uID0gQ1JFQVRFX0FMV0FZUzsKKyAgICAgICAgYnJlYWs7
CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCisg
ICAgU3RyaW5nIGRlc3RpbmF0aW9uID0gcGF0aDsKKyAgICByZXR1cm4gQ3JlYXRlRmlsZShzdHJp
bmdUb051bGxUZXJtaW5hdGVkV0NoYXIoZGVzdGluYXRpb24pLmRhdGEoKSwgZGVzaXJlZEFjY2Vz
cywgc2hhcmVNb2RlLCAwLCBjcmVhdGlvbkRpc3Bvc2l0aW9uLCBGSUxFX0FUVFJJQlVURV9OT1JN
QUwsIDApOworfQorCit2b2lkIGNsb3NlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkK
K3sKKyAgICBpZiAoaXNIYW5kbGVWYWxpZChoYW5kbGUpKSB7CisgICAgICAgIDo6Q2xvc2VIYW5k
bGUoaGFuZGxlKTsKKyAgICAgICAgaGFuZGxlID0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsK
KyAgICB9Cit9CisKK2xvbmcgbG9uZyBzZWVrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxl
LCBsb25nIGxvbmcgb2Zmc2V0LCBGaWxlU2Vla09yaWdpbiBvcmlnaW4pCit7CisgICAgRFdPUkQg
bW92ZU1ldGhvZCA9IEZJTEVfQkVHSU47CisKKyAgICBpZiAob3JpZ2luID09IEZpbGVTZWVrT3Jp
Z2luOjpDdXJyZW50KQorICAgICAgICBtb3ZlTWV0aG9kID0gRklMRV9DVVJSRU5UOworICAgIGVs
c2UgaWYgKG9yaWdpbiA9PSBGaWxlU2Vla09yaWdpbjo6RW5kKQorICAgICAgICBtb3ZlTWV0aG9k
ID0gRklMRV9FTkQ7CisKKyAgICBMQVJHRV9JTlRFR0VSIGxhcmdlT2Zmc2V0OworICAgIGxhcmdl
T2Zmc2V0LlF1YWRQYXJ0ID0gb2Zmc2V0OworCisgICAgbGFyZ2VPZmZzZXQuTG93UGFydCA9IFNl
dEZpbGVQb2ludGVyKGhhbmRsZSwgbGFyZ2VPZmZzZXQuTG93UGFydCwgJmxhcmdlT2Zmc2V0Lkhp
Z2hQYXJ0LCBtb3ZlTWV0aG9kKTsKKworICAgIGlmIChsYXJnZU9mZnNldC5Mb3dQYXJ0ID09IElO
VkFMSURfU0VUX0ZJTEVfUE9JTlRFUiAmJiBHZXRMYXN0RXJyb3IoKSAhPSBOT19FUlJPUikKKyAg
ICAgICAgcmV0dXJuIC0xOworCisgICAgcmV0dXJuIGxhcmdlT2Zmc2V0LlF1YWRQYXJ0OworfQor
CitpbnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY29uc3QgY2hhciog
ZGF0YSwgaW50IGxlbmd0aCkKK3sKKyAgICBpZiAoIWlzSGFuZGxlVmFsaWQoaGFuZGxlKSkKKyAg
ICAgICAgcmV0dXJuIC0xOworCisgICAgRFdPUkQgYnl0ZXNXcml0dGVuOworICAgIGJvb2wgc3Vj
Y2VzcyA9IFdyaXRlRmlsZShoYW5kbGUsIGRhdGEsIGxlbmd0aCwgJmJ5dGVzV3JpdHRlbiwgMCk7
CisKKyAgICBpZiAoIXN1Y2Nlc3MpCisgICAgICAgIHJldHVybiAtMTsKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8aW50PihieXRlc1dyaXR0ZW4pOworfQorCitpbnQgcmVhZEZyb21GaWxlKFBsYXRm
b3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCit7CisgICAgaWYg
KCFpc0hhbmRsZVZhbGlkKGhhbmRsZSkpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIERXT1JE
IGJ5dGVzUmVhZDsKKyAgICBib29sIHN1Y2Nlc3MgPSA6OlJlYWRGaWxlKGhhbmRsZSwgZGF0YSwg
bGVuZ3RoLCAmYnl0ZXNSZWFkLCAwKTsKKworICAgIGlmICghc3VjY2VzcykKKyAgICAgICAgcmV0
dXJuIC0xOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KGJ5dGVzUmVhZCk7Cit9CisKK2Jv
b2wgaGFyZExpbmtPckNvcHlGaWxlKGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBTdHJpbmcm
IGRlc3RpbmF0aW9uKQoreworICAgIHJldHVybiAhITo6Q29weUZpbGUoc3RyaW5nVG9OdWxsVGVy
bWluYXRlZFdDaGFyKHNvdXJjZSkuZGF0YSgpLCBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIo
ZGVzdGluYXRpb24pLmRhdGEoKSwgVFJVRSk7Cit9CisKK1N0cmluZyBsb2NhbFVzZXJTcGVjaWZp
Y1N0b3JhZ2VEaXJlY3RvcnkoKQoreworICAgIHJldHVybiBjYWNoZWRTdG9yYWdlRGlyZWN0b3J5
KENTSURMX0xPQ0FMX0FQUERBVEEpOworfQorCitTdHJpbmcgcm9hbWluZ1VzZXJTcGVjaWZpY1N0
b3JhZ2VEaXJlY3RvcnkoKQoreworICAgIHJldHVybiBjYWNoZWRTdG9yYWdlRGlyZWN0b3J5KENT
SURMX0FQUERBVEEpOworfQorCitWZWN0b3I8U3RyaW5nPiBsaXN0RGlyZWN0b3J5KGNvbnN0IFN0
cmluZyYgZGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIGZpbHRlcikKK3sKKyAgICBWZWN0b3I8U3Ry
aW5nPiBlbnRyaWVzOworCisgICAgUGF0aFdhbGtlciB3YWxrZXIoZGlyZWN0b3J5LCBmaWx0ZXIp
OworICAgIGlmICghd2Fsa2VyLmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIGVudHJpZXM7CisK
KyAgICBkbyB7CisgICAgICAgIGlmICh3YWxrZXIuZGF0YSgpLmR3RmlsZUF0dHJpYnV0ZXMgJiBG
SUxFX0FUVFJJQlVURV9ESVJFQ1RPUlkKKyAgICAgICAgICAgICYmICghd2NzY21wKHdhbGtlci5k
YXRhKCkuY0ZpbGVOYW1lLCBMIi4iKSB8fCAhd2NzY21wKHdhbGtlci5kYXRhKCkuY0ZpbGVOYW1l
LCBMIi4uIikpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgZW50cmllcy5hcHBl
bmQoZGlyZWN0b3J5ICsgIlxcIiArIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPih3YWxr
ZXIuZGF0YSgpLmNGaWxlTmFtZSkpOworICAgIH0gd2hpbGUgKHdhbGtlci5zdGVwKCkpOworCisg
ICAgcmV0dXJuIGVudHJpZXM7Cit9CisKK2Jvb2wgZ2V0Vm9sdW1lRnJlZVNwYWNlKGNvbnN0IFN0
cmluZyYsIHVpbnQ2NF90JikKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK09wdGlvbmFsPGlu
dDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCit7CisgICAgYXV0
byBoYW5kbGUgPSBvcGVuRmlsZShmc0ZpbGUuZGF0YSgpLCBGaWxlT3Blbk1vZGU6OlJlYWQpOwor
ICAgIGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworCisgICAgQllfSEFORExFX0ZJTEVfSU5GT1JNQVRJT04gZmlsZUluZm9ybWF0aW9uID0g
eyB9OworICAgIGlmICghOjpHZXRGaWxlSW5mb3JtYXRpb25CeUhhbmRsZShoYW5kbGUsICZmaWxl
SW5mb3JtYXRpb24pKSB7CisgICAgICAgIGNsb3NlRmlsZShoYW5kbGUpOworICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgIH0KKworICAgIGNsb3NlRmlsZShoYW5kbGUpOworCisgICAg
cmV0dXJuIGZpbGVJbmZvcm1hdGlvbi5kd1ZvbHVtZVNlcmlhbE51bWJlcjsKK30KKworU3RyaW5n
IHJlYWxQYXRoKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCit7CisgICAgcmV0dXJuIGdldEZpbmFs
UGF0aE5hbWUoZmlsZVBhdGgpOworfQorCitTdHJpbmcgY3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5
KCkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUZW1wb3JhcnlQYXRoKFtdKGNvbnN0IFN0cmluZyYg
cHJvcG9zZWRQYXRoKSB7CisgICAgICAgIHJldHVybiBtYWtlQWxsRGlyZWN0b3JpZXMocHJvcG9z
ZWRQYXRoKTsKKyAgICB9KTsKK30KKworYm9vbCBkZWxldGVOb25FbXB0eURpcmVjdG9yeShjb25z
dCBTdHJpbmcmIGRpcmVjdG9yeVBhdGgpCit7CisgICAgU0hGSUxFT1BTVFJVQ1QgZGVsZXRlT3Bl
cmF0aW9uID0geworICAgICAgICBudWxscHRyLAorICAgICAgICBGT19ERUxFVEUsCisgICAgICAg
IHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihkaXJlY3RvcnlQYXRoKS5kYXRhKCksCisgICAg
ICAgIEwiIiwKKyAgICAgICAgRk9GX05PQ09ORklSTUFUSU9OIHwgRk9GX05PRVJST1JVSSB8IEZP
Rl9TSUxFTlQsCisgICAgICAgIGZhbHNlLAorICAgICAgICAwLAorICAgICAgICBMIiIKKyAgICB9
OworICAgIHJldHVybiAhU0hGaWxlT3BlcmF0aW9uKCZkZWxldGVPcGVyYXRpb24pOworfQorCit9
IC8vIG5hbWVzcGFjZSBGaWxlU3lzdGVtCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL3dpbi9QYXRoV2Fsa2VyLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9Q
YXRoV2Fsa2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNmQzZjk3MDYwNDljYjEzYzllZjYzNTVlYmI2M2E1
MDc5ODUwMjIxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvd2luL1BhdGhXYWxr
ZXIuY3BwCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSA8d3RmL3dpbi9QYXRoV2Fsa2VyLmg+CisKKyNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaD4K
KworbmFtZXNwYWNlIFdURiB7CisKK1BhdGhXYWxrZXI6OlBhdGhXYWxrZXIoY29uc3QgU3RyaW5n
JiBkaXJlY3RvcnksIGNvbnN0IFN0cmluZyYgcGF0dGVybikKK3sKKyAgICBTdHJpbmcgcGF0aCA9
IGRpcmVjdG9yeSArICJcXCIgKyBwYXR0ZXJuOworICAgIG1faGFuZGxlID0gOjpGaW5kRmlyc3RG
aWxlVyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIocGF0aCkuZGF0YSgpLCAmbV9kYXRhKTsK
K30KKworUGF0aFdhbGtlcjo6flBhdGhXYWxrZXIoKQoreworICAgIGlmICghaXNWYWxpZCgpKQor
ICAgICAgICByZXR1cm47CisgICAgOjpGaW5kQ2xvc2UobV9oYW5kbGUpOworfQorCitib29sIFBh
dGhXYWxrZXI6OnN0ZXAoKQoreworICAgIHJldHVybiA6OkZpbmROZXh0RmlsZVcobV9oYW5kbGUs
ICZtX2RhdGEpOworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL3dpbi9QYXRoV2Fsa2VyLmggYi9Tb3VyY2UvV1RGL3d0Zi93aW4vUGF0aFdhbGtlci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjk1M2FlMmU2YWU4NTYxYWYzNDU0ZTIxODM4OGRmODkwMDVlYTMzYmMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vUGF0aFdhbGtlci5oCkBAIC0wLDAg
KzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlIDxXaW5kb3dzLmg+CisjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKworbmFtZXNw
YWNlIFdURiB7CisKK2NsYXNzIFBhdGhXYWxrZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFBhdGhXYWxrZXIpOworcHVibGljOgorICAgIFBhdGhXYWxrZXIoY29uc3QgV1RGOjpTdHJpbmcm
IGRpcmVjdG9yeSwgY29uc3QgV1RGOjpTdHJpbmcmIHBhdHRlcm4pOworICAgIH5QYXRoV2Fsa2Vy
KCk7CisKKyAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2hhbmRsZSAhPSBJTlZB
TElEX0hBTkRMRV9WQUxVRTsgfQorICAgIGNvbnN0IFdJTjMyX0ZJTkRfREFUQVcmIGRhdGEoKSBj
b25zdCB7IHJldHVybiBtX2RhdGE7IH0KKworICAgIGJvb2wgc3RlcCgpOworCitwcml2YXRlOgor
ICAgIEhBTkRMRSBtX2hhbmRsZTsKKyAgICBXSU4zMl9GSU5EX0RBVEFXIG1fZGF0YTsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9DRE0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9DRE0uY3BwCmluZGV4IDkzNTY2NTAxYTk5ZTE5ODg4YjFiZDM5NTQ1Mjg4MWM0NzQ1NTdk
ZjYuLjgxOGYyMjRiZDU2NDgzYzhhZDY2MDJiMzAyZDZhZTBiNzJkZWQxYTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAKQEAgLTMxLDcgKzMxLDYg
QEAKICNpbmNsdWRlICJDRE1GYWN0b3J5LmgiCiAjaW5jbHVkZSAiQ0RNUHJpdmF0ZS5oIgogI2lu
Y2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIklu
aXREYXRhUmVnaXN0cnkuaCIKICNpbmNsdWRlICJNZWRpYUtleXNSZXF1aXJlbWVudC5oIgogI2lu
Y2x1ZGUgIk1lZGlhUGxheWVyLmgiCkBAIC00Miw2ICs0MSw3IEBACiAjaW5jbHVkZSAiU2VjdXJp
dHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbkRhdGEuaCIKICNpbmNsdWRlICJT
ZXR0aW5ncy5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL05l
dmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5U2Vz
c2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9X
ZWJLaXRNZWRpYUtleVNlc3Npb24uY3BwCmluZGV4IGU2NjZjZTk3OTM2NzQ1ZWRhMDEwNjYwNzk3
OGY2ZTk4MDlmZjBiMzkuLjY1ZWRkYTE2Zjc5NTBkMjQ5YmNmNzMxNjI4NjE1MDg1NGVmMjgxZDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5
L1dlYktpdE1lZGlhS2V5U2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmNwcApAQCAtMzAsMTMg
KzMwLDEzIEBACiAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMu
aCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUg
IlNlY3VyaXR5T3JpZ2luRGF0YS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAi
V2ViS2l0TWVkaWFLZXlFcnJvci5oIgogI2luY2x1ZGUgIldlYktpdE1lZGlhS2V5TWVzc2FnZUV2
ZW50LmgiCiAjaW5jbHVkZSAiV2ViS2l0TWVkaWFLZXlzLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVT
eXN0ZW0uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHAKaW5kZXggNmRkNDE3MTMwOGFk
NDY3ZjJhNGMyN2M5Y2U5NzcyOWIzZmFkOGNmOS4uMzY4Nzk0ZWY1YzFhMGZlNzk4YjJhMWJhNTA4
ODZjMGI0ZmViY2I5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVz
YXBpL0RPTUZpbGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmll
c2FwaS9ET01GaWxlU3lzdGVtLmNwcApAQCAtMjcsMTIgKzI3LDEyIEBACiAjaW5jbHVkZSAiRE9N
RmlsZVN5c3RlbS5oIgogCiAjaW5jbHVkZSAiRmlsZS5oIgotI2luY2x1ZGUgIkZpbGVNZXRhZGF0
YS5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtRGlyZWN0
b3J5RW50cnkuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtRmlsZUVudHJ5LmgiCiAjaW5jbHVkZSAi
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZENvcGll
ci5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlTWV0YWRhdGEuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5
c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9VVUlELmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
QnVpbGRlci5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNh
cGkvRmlsZVN5c3RlbUVudHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2Fw
aS9GaWxlU3lzdGVtRW50cnkuY3BwCmluZGV4IGRjY2I1YTExODYzZDliYjEwZjI4N2Q1N2ZkYzEz
OWEwYjliMWIxMTEuLjQyNGNjYTI2Y2Q0YzdiODYxMDNmZDUyMGYxZmY3MGYwZGEwMzUxZWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRW50
cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVt
RW50cnkuY3BwCkBAIC0yOSwxMCArMjksMTAgQEAKICNpbmNsdWRlICJET01FeGNlcHRpb24uaCIK
ICNpbmNsdWRlICJET01GaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiRXJyb3JDYWxsYmFjay5oIgot
I2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtRGlyZWN0b3J5RW50
cnkuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtRW50cnlDYWxsYmFjay5oIgogI2luY2x1ZGUgIlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuY3BwCmluZGV4IGM3ZmRmZDBkZDY1
NDVmOGM2ZmU1MzQyZmIzNjQ2ZmU5YTg0Njk0YjkuLmI0MjliM2YyNmI5MzQ2ZmJiMWRhZTdlYzY1
MGU0NmUyNTZkZmM4YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmNwcApAQCAtMjgsOCArMjgsOCBAQAog
CiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgi
CiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5o
PgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NR
TGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAppbmRleCAyMTc4Y2M0MmE5YjUxMTQz
Y2U1ZDg1ZjRkMTFmN2FiMjYwOTI0ZWM3Li4yODVkNTAyZGFlODFhOWE3NjhhYTM0YTFkMjU2ZGY1
MDQ3ZDYxYmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcApAQCAtMjgsNyAr
MjgsNiBAQAogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKLSNpbmNsdWRlICJGaWxl
U3lzdGVtLmgiCiAjaW5jbHVkZSAiSURCQmluZGluZ1V0aWxpdGllcy5oIgogI2luY2x1ZGUgIklE
QkdldEFsbFJlY29yZHNEYXRhLmgiCiAjaW5jbHVkZSAiSURCR2V0QWxsUmVzdWx0LmgiCkBAIC01
NCw2ICs1Myw3IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNHbG9iYWxPYmplY3QuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJvbmdJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvU3RydWN0dXJlSW5saW5lcy5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVt
Lmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9T
UUxpdGVJREJUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvU1FMaXRlSURCVHJhbnNhY3Rpb24uY3BwCmluZGV4IDc4MWI3OWY2M2EwNjFkNThk
MWM5MmE0MTNjMjFhZmRlNjU2NDkzNmUuLmJlZWE2YjE2NzA2MjRlNWM5ODBmMzE2NjM0YzAzNjVk
ZmRlYmM2Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9TUUxpdGVJREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQlRyYW5zYWN0aW9uLmNwcApAQCAtMjcsMTMgKzI3
LDEzIEBACiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAotI2luY2x1ZGUgIkZpbGVT
eXN0ZW0uaCIKICNpbmNsdWRlICJJREJDdXJzb3JJbmZvLmgiCiAjaW5jbHVkZSAiSW5kZXhlZERC
LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZS5oIgogI2luY2x1ZGUgIlNRTGl0ZUlEQkN1cnNvci5oIgogI2luY2x1ZGUgIlNRTGl0ZVRyYW5z
YWN0aW9uLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogbmFtZXNwYWNlIElEQlNlcnZlciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCmlu
ZGV4IDYxYWViOGY3ZDcwMTUxYjk0MjI4NWFjZGNjZjgxYmZiMWVhNDI2MjYuLmRkOWY1YWQyOTMx
N2M1Y2RjNzU4ODMyYWM2YTM3MGJkZjk1ZGQ4OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIu
Y3BwCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAot
I2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJJREJDb25uZWN0aW9uVG9DbGllbnQu
aCIKICNpbmNsdWRlICJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuaCIKICNpbmNsdWRlICJJREJDdXJz
b3JJbmZvLmgiCkBAIC00MCw2ICszOSw3IEBACiAjaW5jbHVkZSAiSURCUmVzdWx0RGF0YS5oIgog
I2luY2x1ZGUgIklEQlZhbHVlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgPHd0
Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZVRyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZVRyYWNrZXIuY3BwCmluZGV4IGQ5NjU0MWVkNDlmNjkzODI0ZWQxZGZjNTI1MDg4ZGFj
MzJiYzU5YzUuLjQwOGY2MjIxMmFlMmIxN2IzOGFjMTkwOTg5NTFhMGYwOTJkNGIwNDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJh
Y2tlci5jcHAKQEAgLTM0LDcgKzM0LDYgQEAKICNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIK
ICNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXJDbGllbnQuaCIKICNpbmNsdWRlICJEYXRhYmFzZVRo
cmVhZC5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAj
aW5jbHVkZSAiT3JpZ2luTG9jay5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCkBAIC00
Myw2ICs0Miw3IEBACiAjaW5jbHVkZSAiU1FMaXRlRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIlNR
TGl0ZVN0YXRlbWVudC5oIgogI2luY2x1ZGUgIlNRTGl0ZVRyYW5zYWN0aW9uLmgiCisjaW5jbHVk
ZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1
ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luTG9j
ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL09yaWdpbkxvY2suY3Bw
CmluZGV4IDQyM2IyZTY2ZGRmYTEyY2MzNDBmNjBmY2U1OWQzNTNkZjk5ODY3ZjQuLmEyMWJjZGI3
ODM4NmM4MTBlYzU5OTQxYzI3NWY0ZWZiYWZmMjNmYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luTG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5Mb2NrLmNwcApAQCAtMjYsOCArMjYsNiBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk9yaWdpbkxvY2suaCIKIAotI2luY2x1ZGUg
IkZpbGVTeXN0ZW0uaCIKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTdHJpbmcgT3JpZ2luTG9j
azo6bG9ja0ZpbGVOYW1lRm9yUGF0aChTdHJpbmcgb3JpZ2luUGF0aCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luTG9jay5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5Mb2NrLmgKaW5kZXggYTE2ZTg0ZjE0ODlk
YWYyZWU4ZjUwNDYxOWQxMzk5M2I4ZDM3NWUxMC4uZWNjMjllODkwMjViZGY2MjkzOTJiMTA1OWVm
ODg3MGU2ZjhmOTJmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9PcmlnaW5Mb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9PcmlnaW5Mb2NrLmgKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNs
dWRlICJGaWxlU3lzdGVtLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRl
IDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9jb2NvYS9EYXRhYmFzZU1hbmFnZXJDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvY29jb2EvRGF0YWJhc2VNYW5hZ2VyQ29jb2Eu
bW0KaW5kZXggN2NmZTlmYjA2MzI2OTE4MWQ0NGYxM2MzODM2ODI1MzNkNGU0ZGZjOS4uOGQzMjUw
NzNiMDRhY2ExZDMyODQ5NmUxODI4MzM4ZGZlYmNhYmZmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9jb2NvYS9EYXRhYmFzZU1hbmFnZXJDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL2NvY29hL0RhdGFiYXNlTWFu
YWdlckNvY29hLm1tCkBAIC0yOSw3ICsyOSw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBv
cnQgIkRhdGFiYXNlTWFuYWdlci5oIgogCi0jaW1wb3J0ICJGaWxlU3lzdGVtLmgiCisjaW1wb3J0
IDx3dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0ZmJkZGUz
OWE0YWM3NjIyODBkYzI5NzdhYzFmYWQ2Nzk0MGRmYzYyLi5kMTY0YTRjNzJhZGI4ZDVkYzBkNjA0
ZGU4YjZkMWU1NTVjNzUyMTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzMsNyArMTMzLDYgQEAKIAkJQTExNzVCNTcxRjZC
NDcwNTAwQzRCOUYwIC8qIERlZmF1bHRTZWFyY2hQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTExNzVCNTUxRjZCNDcwNTAwQzRCOUYwIC8q
IERlZmF1bHRTZWFyY2hQcm92aWRlci5oICovOyB9OwogCQlBMTE3NUI1ODFGNkI0NzA1MDBDNEI5
RjAgLyogRGVmYXVsdFNlYXJjaFByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMTc1QjU2MUY2QjQ3MDUwMEM0QjlGMCAvKiBEZWZhdWx0
U2VhcmNoUHJvdmlkZXIuY3BwICovOyB9OwogCQlBMTE3NUI1QTFGNkI0QTg0MDBDNEI5RjAgLyog
TlNTY3JvbGxWaWV3U1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMTE3NUI1OTFGNkI0QTg0MDBDNEI5RjAgLyogTlNTY3JvbGxWaWV3U1BJLmggKi87
IH07Ci0JCUExRjU1RENGMUY1NTI4RUMwMEVEQjc1RiAvKiBNZXRhZGF0YVNQSS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFGNTVEQ0UxRjU1MjhFQzAw
RURCNzVGIC8qIE1ldGFkYXRhU1BJLmggKi87IH07CiAJCUExRjYzQzlGMjFBNERCRjcwMDZGQjQz
QiAvKiBQYXNzS2l0U29mdExpbmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEExRjYzQzlEMjFBNERCRjcwMDZGQjQzQiAvKiBQYXNzS2l0U29mdExpbmsu
aCAqLzsgfTsKIAkJQTFGNjNDQTAyMUE0REJGNzAwNkZCNDNCIC8qIFBhc3NLaXRTb2Z0TGluay5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRjYzQzlF
MjFBNERCRjcwMDZGQjQzQiAvKiBQYXNzS2l0U29mdExpbmsubW0gKi87IH07CiAJCUEzMEQ0MTIx
MUYwREQwRUEwMEI3MTk1NCAvKiBLaWxsUmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTMwRDQxMUUxRjBERDBFQTAwQjcxOTU0IC8qIEtpbGxSaW5n
LmggKi87IH07CkBAIC0yOTQsNyArMjkzLDYgQEAKIAkJQTExNzVCNTUxRjZCNDcwNTAwQzRCOUYw
IC8qIERlZmF1bHRTZWFyY2hQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZWZhdWx0U2VhcmNo
UHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTExNzVCNTYxRjZCNDcw
NTAwQzRCOUYwIC8qIERlZmF1bHRTZWFyY2hQcm92aWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBEZWZhdWx0U2VhcmNoUHJvdmlkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBMTE3NUI1OTFGNkI0QTg0MDBDNEI5RjAgLyogTlNTY3JvbGxWaWV3U1BJLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE5TU2Nyb2xsVmlld1NQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlB
MUY1NURDRTFGNTUyOEVDMDBFREI3NUYgLyogTWV0YWRhdGFTUEkuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TWV0YWRhdGFTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFGNjNDOUQyMUE0
REJGNzAwNkZCNDNCIC8qIFBhc3NLaXRTb2Z0TGluay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYXNzS2l0
U29mdExpbmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFGNjNDOUUyMUE0REJG
NzAwNkZCNDNCIC8qIFBhc3NLaXRTb2Z0TGluay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBh
c3NLaXRTb2Z0TGluay5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTMwRDQxMUUx
RjBERDBFQTAwQjcxOTU0IC8qIEtpbGxSaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEtpbGxSaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NDksNyAr
NDQ3LDYgQEAKIAkJCQlBMTAyNjU4ODFGNTY3NDdBMDBCNEM4NDQgLyogSElUb29sYm94U1BJLmgg
Ki8sCiAJCQkJMEM3Nzg1NzIxRjQ1MTMwRjAwRjRFQkI2IC8qIExvb2t1cFNQSS5oICovLAogCQkJ
CTBDNzc4NTczMUY0NTEzMEYwMEY0RUJCNiAvKiBNZWRpYVJlbW90ZVNQSS5oICovLAotCQkJCUEx
RjU1RENFMUY1NTI4RUMwMEVEQjc1RiAvKiBNZXRhZGF0YVNQSS5oICovLAogCQkJCTBDNzc4NTc0
MUY0NTEzMEYwMEY0RUJCNiAvKiBOU0FjY2Vzc2liaWxpdHlTUEkuaCAqLywKIAkJCQkxQ0NFRTRG
NjIwRDg3NDNGMDA0N0IwOTcgLyogTlNBcHBlYXJhbmNlU1BJLmggKi8sCiAJCQkJMEM3Nzg1NzUx
RjQ1MTMwRjAwRjRFQkI2IC8qIE5TQXBwbGljYXRpb25TUEkuaCAqLywKQEAgLTcwMSw3ICs2OTgs
NiBAQAogCQkJCTBDNUFGOTFEMUY0M0E0QzcwMDJFQUMwMiAvKiBNZWRpYVBsYXllclNQSS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEM3Nzg1OEMxRjQ1MTMwRjAwRjRFQkI2IC8qIE1lZGlhUmVtb3Rl
U1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzAwQ0ZENDFGNjhDRTQ2MDBBQUMyNkQgLyogTWVk
aWFUaW1lQVZGb3VuZGF0aW9uLmggaW4gSGVhZGVycyAqLywKLQkJCQlBMUY1NURDRjFGNTUyOEVD
MDBFREI3NUYgLyogTWV0YWRhdGFTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBDNUFGOTFFMUY0
M0E0QzcwMDJFQUMwMiAvKiBNb2JpbGVHZXN0YWx0U1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
QzJEQTE0OTFGM0JFQjQ5MDBEQkMzMTcgLyogTkVGaWx0ZXJTb3VyY2VTUEkuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBDNzc4NThEMUY0NTEzMEYwMEY0RUJCNiAvKiBOU0FjY2Vzc2liaWxpdHlTUEku
aCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9QbGF0
Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvUGxhdGZvcm1NYWMuY21ha2UK
aW5kZXggNmIxYmQyNTkyNmY0MmJkNjQ2MDMyYWQ5MDRhNzg3ZTY5Yjc1MGFjOS4uZjEzMDc2ODQz
Zjg4MzE2YmMzOGJkODBkYTcyZjQ4OWE4MjM3NjI4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L1BsYXRmb3JtTWFjLmNtYWtlCkBAIC01OCw3ICs1OCw2IEBAIGxpc3QoQVBQRU5EIFBBTF9QVUJM
SUNfSEVBREVSUwogICAgIHNwaS9tYWMvSElUb29sYm94U1BJLmgKICAgICBzcGkvbWFjL0xvb2t1
cFNQSS5oCiAgICAgc3BpL21hYy9NZWRpYVJlbW90ZVNQSS5oCi0gICAgc3BpL21hYy9NZXRhZGF0
YVNQSS5oCiAgICAgc3BpL21hYy9OU0FjY2Vzc2liaWxpdHlTUEkuaAogICAgIHNwaS9tYWMvTlNB
cHBlYXJhbmNlU1BJLmgKICAgICBzcGkvbWFjL05TQXBwbGljYXRpb25TUEkuaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvbWFjL01ldGFkYXRhU1BJLmggYi9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMvTWV0YWRhdGFTUEkuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggODE1NTQ3YzZiODUxMGUzMDYxOGUyMjgyYWQ1Yjc4NDAxNmNhMzcyMS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL3NwaS9tYWMvTWV0YWRhdGFTUEkuaAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIFVTRShBUFBMRV9JTlRFUk5B
TF9TREspCi0KLSNpbmNsdWRlIDxDb3JlU2VydmljZXMvQ29yZVNlcnZpY2VzUHJpdi5oPgotCi0j
ZW5kaWYKLQotV1RGX0VYVEVSTl9DX0JFR0lOCi0KLUJvb2xlYW4gTURJdGVtU2V0QXR0cmlidXRl
KE1ESXRlbVJlZiwgQ0ZTdHJpbmdSZWYgbmFtZSwgQ0ZUeXBlUmVmIGF0dHIpOwotCi1XVEZfRVhU
RVJOX0NfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBi
L1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IDg2NmVhNmE1NGI5YTQyZjg3
OGQ0ZTE5YjY1MGEyYzNjM2JhMjA5YTkuLjRkNzJmOWRlZWY4MGViNmU0NDU2Nzk3M2Q1YzZkY2Zm
NjkwNTViODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC0xODksNyArMTg5LDYgQEAg
bGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vYXVkaW8vbWFjL0NBUmlu
Z0J1ZmZlci5jcHAKICAgICBwbGF0Zm9ybS9hdWRpby9tYWMvRkZURnJhbWVNYWMuY3BwCiAKLSAg
ICBwbGF0Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3BwCiAgICAgcGxhdGZvcm0vY2YvS2V5ZWREZWNv
ZGVyQ0YuY3BwCiAgICAgcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCiAgICAgcGxhdGZv
cm0vY2YvTWFpblRocmVhZFNoYXJlZFRpbWVyQ0YuY3BwCkBAIC0yMDAsNyArMTk5LDYgQEAgbGlz
dChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vY29jb2EvQ29udGVudEZpbHRl
clVuYmxvY2tIYW5kbGVyQ29jb2EubW0KICAgICBwbGF0Zm9ybS9jb2NvYS9Db3JlVmlkZW9Tb2Z0
TGluay5jcHAKICAgICBwbGF0Zm9ybS9jb2NvYS9GaWxlTW9uaXRvckNvY29hLm1tCi0gICAgcGxh
dGZvcm0vY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tCiAgICAgcGxhdGZvcm0vY29jb2EvS2V5RXZl
bnRDb2NvYS5tbQogICAgIHBsYXRmb3JtL2NvY29hL0xvY2FsaXplZFN0cmluZ3NDb2NvYS5tbQog
ICAgIHBsYXRmb3JtL2NvY29hL01JTUVUeXBlUmVnaXN0cnlDb2NvYS5tbQpAQCAtMzQ3LDcgKzM0
NSw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL21hYy9EcmFn
RGF0YU1hYy5tbQogICAgIHBsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW0KICAgICBwbGF0Zm9y
bS9tYWMvRXZlbnRMb29wTWFjLm1tCi0gICAgcGxhdGZvcm0vbWFjL0ZpbGVTeXN0ZW1NYWMubW0K
ICAgICBwbGF0Zm9ybS9tYWMvS2V5RXZlbnRNYWMubW0KICAgICBwbGF0Zm9ybS9tYWMvTG9jYWxD
dXJyZW50R3JhcGhpY3NDb250ZXh0Lm1tCiAgICAgcGxhdGZvcm0vbWFjL0xvZ2dpbmdNYWMubW0K
QEAgLTQxOCw4ICs0MTUsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0
Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVs
ZWdhdGUubW0KICAgICBwbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0K
IAotICAgIHBsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKLQogICAgIHBsYXRmb3Jt
L3RleHQvY2YvSHlwaGVuYXRpb25DRi5jcHAKIAogICAgIHBsYXRmb3JtL3RleHQvbWFjL0xvY2Fs
ZU1hYy5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1QbGF5U3RhdGlvbi5j
bWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtUGxheVN0YXRpb24uY21ha2UKaW5kZXggOTAz
NzYwMzliOTY5NmUxM2Y5ZGViYzljNDczMGE3OTAzOTk3OTU1MS4uNmQ0NDUzNWQ5NTk4NGJlNTg4
MzNlODhmOTcxZTZhNzJmMmRiYWIyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZv
cm1QbGF5U3RhdGlvbi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVBsYXlTdGF0
aW9uLmNtYWtlCkBAIC02Myw3ICs2Myw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwog
ICAgIHBsYXRmb3JtL3BsYXlzdGF0aW9uL1Njcm9sbGJhclRoZW1lUGxheVN0YXRpb24uY3BwCiAg
ICAgcGxhdGZvcm0vcGxheXN0YXRpb24vVXNlckFnZW50UGxheVN0YXRpb24uY3BwCiAKLSAgICBw
bGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCiAgICAgcGxhdGZvcm0vcG9zaXgvU2hh
cmVkQnVmZmVyUE9TSVguY3BwCiAKICAgICBwbGF0Zm9ybS90ZXh0L0h5cGhlbmF0aW9uLmNwcApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW4uY21ha2UgYi9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybVdpbi5jbWFrZQppbmRleCA0ZmFiMzA4MjYwZTA5YzgwNTQxOWM4NGM3Y2E4
MzRkODFmYjk1YzY1Li5mY2I1N2E0NWE1ZjQxZWYzYmY2NzAzODRmZGEyM2YzY2RhODYxNGQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFrZQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFrZQpAQCAtODQsNyArODQsNiBAQCBsaXN0KEFQUEVORCBX
ZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS93aW4vRHJhZ0RhdGFXaW4uY3BwCiAgICAgcGxh
dGZvcm0vd2luL0RyYWdJbWFnZVdpbi5jcHAKICAgICBwbGF0Zm9ybS93aW4vRXZlbnRMb29wV2lu
LmNwcAotICAgIHBsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2luLmNwcAogICAgIHBsYXRmb3JtL3dp
bi9HRElPYmplY3RDb3VudGVyLmNwcAogICAgIHBsYXRmb3JtL3dpbi9HRElVdGlsaXRpZXMuY3Bw
CiAgICAgcGxhdGZvcm0vd2luL0tleUV2ZW50V2luLmNwcApAQCAtOTMsNyArOTIsNiBAQCBsaXN0
KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3Ry
eVdpbi5jcHAKICAgICBwbGF0Zm9ybS93aW4vTWFpblRocmVhZFNoYXJlZFRpbWVyV2luLmNwcAog
ICAgIHBsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAotICAgIHBsYXRmb3JtL3dpbi9QYXRo
V2Fsa2VyLmNwcAogICAgIHBsYXRmb3JtL3dpbi9QbGF0Zm9ybU1vdXNlRXZlbnRXaW4uY3BwCiAg
ICAgcGxhdGZvcm0vd2luL1BsYXRmb3JtU2NyZWVuV2luLmNwcAogICAgIHBsYXRmb3JtL3dpbi9Q
b3B1cE1lbnVXaW4uY3BwCkBAIC0yNDgsNyArMjQ2LDYgQEAgaWYgKFVTRV9DRikKICAgICBsaXN0
KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICAgICAgbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5
V2ViQXJjaGl2ZS5jcHAKIAotICAgICAgICBwbGF0Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3BwCiAg
ICAgICAgIHBsYXRmb3JtL2NmL0tleWVkRGVjb2RlckNGLmNwcAogICAgICAgICBwbGF0Zm9ybS9j
Zi9LZXllZEVuY29kZXJDRi5jcHAKICAgICAgICAgcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0Yu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0CmluZGV4IDdjNDg0NDQ4ZjRkM2E2NTk2MGNjYTk0NmQ3NDY0OTgwNWNm
MDgwNDAuLjc4ZWY4ODg4NzkwZTRkZGVhN2Y3YmQzNTVjNGYyNjU3NTI4YzQ0NDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0CkBAIC0xNjAyLDcgKzE2MDIsNiBAQCBwbGF0Zm9ybS9GaWxlQ2hvb3Nlci5jcHAKIHBs
YXRmb3JtL0ZpbGVIYW5kbGUuY3BwCiBwbGF0Zm9ybS9GaWxlTW9uaXRvci5jcHAKIHBsYXRmb3Jt
L0ZpbGVTdHJlYW0uY3BwCi1wbGF0Zm9ybS9GaWxlU3lzdGVtLmNwcAogcGxhdGZvcm0vR2VuZXJp
Y1Rhc2tRdWV1ZS5jcHAKIHBsYXRmb3JtL0xheW91dFVuaXQuY3BwCiBwbGF0Zm9ybS9MZW5ndGgu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNl
L1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCAwZTE1YjkwNGVhZDJkOWQ4NTkzZTUwZmE0
MjAwODM1YTQzMGI5NTY4Li5jMjQxODVmMTRlZTdhZjY2MDhkMmE0M2NlMDY2NDljYTFmMDU1MmRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTE4MSw3ICsxODEsNiBAQCBwbGF0Zm9ybS9h
dWRpby9tYWMvQXVkaW9TZXNzaW9uTWFjLmNwcAogcGxhdGZvcm0vYXVkaW8vbWFjL0NBUmluZ0J1
ZmZlci5jcHAKIHBsYXRmb3JtL2F1ZGlvL21hYy9GRlRGcmFtZU1hYy5jcHAKIAotcGxhdGZvcm0v
Y2YvRmlsZVN5c3RlbUNGLmNwcAogcGxhdGZvcm0vY2YvS2V5ZWREZWNvZGVyQ0YuY3BwCiBwbGF0
Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAKIHBsYXRmb3JtL2NmL01haW5UaHJlYWRTaGFyZWRU
aW1lckNGLmNwcApAQCAtMTkzLDcgKzE5Miw2IEBAIHBsYXRmb3JtL2NvY29hL0NvbnRlbnRGaWx0
ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1tIEBuby11bmlmeQogcGxhdGZvcm0vY29jb2EvQ29yZVZp
ZGVvU29mdExpbmsuY3BwCiBwbGF0Zm9ybS9jb2NvYS9EYXRhRGV0ZWN0b3JzQ29yZVNvZnRMaW5r
Lm1tCiBwbGF0Zm9ybS9jb2NvYS9GaWxlTW9uaXRvckNvY29hLm1tCi1wbGF0Zm9ybS9jb2NvYS9G
aWxlU3lzdGVtQ29jb2EubW0KIHBsYXRmb3JtL2NvY29hL0tleUV2ZW50Q29jb2EubW0KIHBsYXRm
b3JtL2NvY29hL0xvY2FsaXplZFN0cmluZ3NDb2NvYS5tbQogcGxhdGZvcm0vY29jb2EvTUlNRVR5
cGVSZWdpc3RyeUNvY29hLm1tCkBAIC00NDYsNyArNDQ0LDYgQEAgcGxhdGZvcm0vbWFjL0N1cnNv
ck1hYy5tbQogcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tCiBwbGF0Zm9ybS9tYWMvRHJhZ0lt
YWdlTWFjLm1tCiBwbGF0Zm9ybS9tYWMvRXZlbnRMb29wTWFjLm1tCi1wbGF0Zm9ybS9tYWMvRmls
ZVN5c3RlbU1hYy5tbQogcGxhdGZvcm0vbWFjL0tleUV2ZW50TWFjLm1tIEBuby11bmlmeQogcGxh
dGZvcm0vbWFjL1BsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5tbSBAbm8tdW5pZnkKIHBsYXRm
b3JtL21hYy9Mb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQubW0KQEAgLTU0MSw4ICs1MzgsNiBA
QCBwbGF0Zm9ybS9uZXR3b3JrL21hYy9VVElVdGlsaXRpZXMubW0KIHBsYXRmb3JtL25ldHdvcmsv
bWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQogcGxh
dGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tCiAKLXBsYXRmb3JtL3Bvc2l4
L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKLQogcGxhdGZvcm0vdGV4dC9jZi9IeXBoZW5hdGlvbkNGLmNw
cAogCiBwbGF0Zm9ybS90ZXh0L2lvcy9Mb2NhbGl6ZWREYXRlQ2FjaGUubW0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkMTg1MWVi
ZGRmMGZiZDgxNTE3N2NlNGRkZjkzN2U0ZWJlNDk2MmM3Li5lYjg0MWI0YmU0ZjNkN2Y2ODRiNmRi
MmNiNmM5M2RmMTQ5YWM1ODYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjQ1LDcgKzEyNDUsNiBAQAogCQk0NjczMDIwMjFD
NEVGRTc4MDBCQ0IzNTcgLyogSWdub3JlT3BlbnNEdXJpbmdVbmxvYWRDb3VudEluY3JlbWVudGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjczMDIw
MTFDNEVGRTY2MDBCQ0IzNTcgLyogSWdub3JlT3BlbnNEdXJpbmdVbmxvYWRDb3VudEluY3JlbWVu
dGVyLmggKi87IH07CiAJCTQ2ODJEMjAwMUY3OTc4MzAwMEM4NjNEQiAvKiBTdG9yZWRDcmVkZW50
aWFsc1BvbGljeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDY4MkQxRkYxRjc5NzgyMzAwQzg2M0RCIC8qIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY4MzQ0
RTAxRURERkFBQTAwQjc3OTVCIC8qIERPTVJlY3RMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgzNDRERTFFRERGQTVGMDBCNzc5NUIgLyogRE9N
UmVjdExpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwotCQk0Njg5RjFBRjEyNjdCQUUxMDBFOEQzODAgLyogRmlsZU1ldGFkYXRhLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0Njg5RjFBRTEyNjdCQUUxMDBF
OEQzODAgLyogRmlsZU1ldGFkYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNDZCNjNGNkMxQzZFOEQxOTAwMkU5MTRCIC8qIEpTRXZlbnRUYXJn
ZXRDdXN0b20uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ2QjYzRjZCMUM2RThDREYwMDJFOTE0QiAvKiBKU0V2ZW50VGFyZ2V0Q3VzdG9tLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZCOTUxOTUyMDdE
NjMzNDAwQTdEMkREIC8qIEFic3RyYWN0RE9NV2luZG93LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkI5NTE4QTIwN0Q2MzI4MDBBN0QyREQgLyogQWJz
dHJhY3RET01XaW5kb3cuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk0NkI5NTE5NjIwN0Q2MzNBMDBBN0QyREQgLyogQWJzdHJhY3RGcmFtZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCOTUxOEYyMDdE
NjMyQjAwQTdEMkREIC8qIEFic3RyYWN0RnJhbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTQzNyw3ICsxNDM2LDYgQEAKIAkJNTE0M0IyNjMx
REREMTUyMDAwMTRGQUM2IC8qIExpbmtJY29uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTQzQjI2MjFEREQxNDkwMDAxNEZBQzYgLyogTGlua0ljb24u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTQ1
QjEwQTFCQzQ4RTJFMDBFODYyMTkgLyogSURCUmVzb3VyY2VJZGVudGlmaWVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTQ1QjEwODFCQzQ4OTBCMDBF
ODYyMTkgLyogSURCUmVzb3VyY2VJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE0ODQ1M0YxQkI5RDA3RTAwNkE3MkVEIC8qIElE
QkVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTQ4NDUzRDFCQjlEMDc2MDA2QTcyRUQgLyogSURCRXJyb3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk1MTRCM0Y3MzBDNzIyMDQ3MDAwNTMwREYg
LyogRmlsZVN5c3RlbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTE0QjNGNzIwQzcyMjA0NzAwMDUzMERGIC8qIEZpbGVTeXN0ZW0uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTRDNzY0QzBDRTkyMzRF
MDA3RUYzQ0QgLyogQXV0aGVudGljYXRpb25NYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEM3NjQyMENFOTIzNEUwMDdFRjNDRCAvKiBBdXRoZW50
aWNhdGlvbk1hYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTUxNEM3NjRFMENFOTIzNEUwMDdFRjNDRCAvKiBGb3JtRGF0YVN0cmVhbU1hYy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0Qzc2NDQwQ0U5
MjM0RTAwN0VGM0NEIC8qIEZvcm1EYXRhU3RyZWFtTWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE0Qzc2NkUwQ0U5MjNBMTAwN0VGM0NEIC8q
IENyZWRlbnRpYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxNEM3NjU5MENFOTIzQTEwMDdFRjNDRCAvKiBDcmVkZW50aWFsLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTc3MDUsNyArNzcwMyw2IEBA
CiAJCTQ2ODM0NERDMUVEREZBNUYwMEI3Nzk1QiAvKiBET01SZWN0TGlzdC5pZGwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRE9N
UmVjdExpc3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjgzNDRERDFFRERG
QTVGMDBCNzc5NUIgLyogRE9NUmVjdExpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NUmVj
dExpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjgzNDRERTFFRERGQTVG
MDBCNzc5NUIgLyogRE9NUmVjdExpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NUmVjdExpc3QuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDY4OUYxQUUxMjY3QkFFMTAwRThEMzgwIC8q
IEZpbGVNZXRhZGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaWxlTWV0
YWRhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZCNjNGNkIxQzZFOENERjAw
MkU5MTRCIC8qIEpTRXZlbnRUYXJnZXRDdXN0b20uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNFdmVudFRhcmdldEN1c3RvbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0NkI5NTE4QTIwN0Q2MzI4MDBBN0QyREQgLyogQWJzdHJhY3RET01XaW5kb3cuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWJzdHJhY3RET01XaW5kb3cuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZCOTUxOEMyMDdENjMyOTAwQTdEMkREIC8qIFJlbW90
ZUZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUZy
YW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTgxMDgsOCArODEwNSw2IEBA
CiAJCTUxNDVCMTA4MUJDNDg5MEIwMEU4NjIxOSAvKiBJREJSZXNvdXJjZUlkZW50aWZpZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSURCUmVzb3VyY2VJZGVudGlmaWVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNDg0NTNDMUJCOUQwNzYwMDZBNzJFRCAv
KiBJREJFcnJvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJREJF
cnJvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNDg0NTNEMUJCOUQwNzYw
MDZBNzJFRCAvKiBJREJFcnJvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJ
REJFcnJvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MTRCM0Y3MjBDNzIyMDQ3
MDAwNTMwREYgLyogRmlsZVN5c3RlbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBGaWxlU3lzdGVtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUxNEIzRjc1MEM3
MjIwNTUwMDA1MzBERiAvKiBGaWxlU3lzdGVtQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBGaWxlU3lzdGVtQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUxNEM3NjM1MENFOTIyNUUwMDdFRjNDRCAvKiBKU1NRTEVycm9yLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU1FMRXJyb3IuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTRDNzYzNjBDRTkyMjVFMDA3RUYzQ0QgLyogSlNT
UUxUcmFuc2FjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U1NRTFRyYW5zYWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0Qzc2
NDIwQ0U5MjM0RTAwN0VGM0NEIC8qIEF1dGhlbnRpY2F0aW9uTWFjLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEF1dGhlbnRpY2F0aW9uTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC04MTQ4LDggKzgxNDMsNiBAQAogCQk1MTVFMzdGNDFGQUE5Mzg4MDBEN0Yy
MkEgLyogU2VydmljZVdvcmtlclR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNlcnZpY2VXb3JrZXJUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MTVGNzk1MTFDRkNBM0M3MDBDQ0VEOTMgLyogV2ViQ29yZUNyb3NzVGhyZWFkQ29waWVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkNvcmVDcm9zc1RocmVhZENv
cGllci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNUY3OTUyMUNGQ0EzQzcw
MENDRUQ5MyAvKiBXZWJDb3JlQ3Jvc3NUaHJlYWRDb3BpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViQ29yZUNyb3NzVGhyZWFkQ29waWVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTUxNjAzMDBBMENDNDI1MTIwMEM4QUMyNSAvKiBGaWxlU3lzdGVtUE9T
SVguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmlsZVN5c3RlbVBP
U0lYLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTE2MDMwNkIwQ0M0MzYyMzAw
QzhBQzI1IC8qIEZpbGVTeXN0ZW1DRi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBGaWxlU3lzdGVtQ0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MTYwNzEyQjFCRDgzMDUzMDBEQkM0RjIgLyogVHJhbnNhY3Rpb25PcGVyYXRpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHJhbnNhY3Rpb25PcGVyYXRpb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE2MDcxMkMxQkQ4MzA3MjAwREJDNEYyIC8qIElEQk9i
amVjdFN0b3JlSW5mby5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJ
REJPYmplY3RTdG9yZUluZm8uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTYw
NzEyRDFCRDgzMDcyMDBEQkM0RjIgLyogSURCT2JqZWN0U3RvcmVJbmZvLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElEQk9iamVjdFN0b3JlSW5mby5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTEyNTEsNyArMTEyNDQsNiBAQAogCQlBMUMyQzU3NTFGQTI4NTE2
MDBCQTQ2RkEgLyogUGF5bWVudFNlc3Npb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGF5bWVu
dFNlc3Npb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMUM3RkFBMTEzM0E1
RDM1MDBENjczMkQgLyogSlNYUGF0aFJlc3VsdEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU1hQYXRoUmVzdWx0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTFDQkVGNjMxRjlGMTEyOTAwMjhERTdDIC8qIE1vY2tQYXltZW50
TWV0aG9kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vY2tQYXltZW50TWV0aG9kLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUExQ0MxMTYyMUU0OTNEMDEwMEVGQTY5QyAvKiBGaWxlU3lzdGVt
TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRmlsZVN5c3Rl
bU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFDQzU2NEMxRjQ2MTQ1MDAw
QTQ1NTVCIC8qIEpTUGF5bWVudE1ldGhvZERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNQYXltZW50TWV0aG9kRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBMUNDNTY0RDFGNDYxNDUxMDBBNDU1NUIgLyogSlNQYXltZW50TWV0aG9kRGF0YS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1BheW1lbnRNZXRob2REYXRh
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFDQzU2NEUxRjQ2MTQ1MjAwQTQ1
NTVCIC8qIEpTUGF5bWVudENvbXBsZXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTUGF5bWVudENvbXBsZXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
MzQzOCw3ICsxMzQzMCw2IEBACiAJCUM1NTkyRjc3MUE5MkFBMjgwMDFGODg2MiAvKiBDaGFyYWN0
ZXJQcm9wZXJ0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENoYXJhY3Rl
clByb3BlcnRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzU1QzdCQTAxNzE4
QUZCQTAwMTMyN0U0IC8qIFJlbmRlclRoZW1lSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gUmVuZGVyVGhlbWVJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUM1NzJFRTFEMTIwMUM5QkMwMDdEOEY4MiAvKiBKU0lEQkluZGV4LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSURCSW5kZXguaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJQzU3RkVERTAxMjEyRUU5QzAwOTdCRTY1IC8qIEZpbGVTeXN0ZW0uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmlsZVN5c3RlbS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1ODVBNjYwMTFENEZBQzUwMDRDM0U0QiAvKiBJ
REJCaW5kaW5nVXRpbGl0aWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IElEQkJpbmRpbmdVdGlsaXRpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDNTg1QTY2MTExRDRGQUM1MDA0QzNFNEIgLyogSURCQmluZGluZ1V0aWxpdGllcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJREJCaW5kaW5nVXRpbGl0aWVzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1ODVBNjZCMTFENEZCMDcwMDRDM0U0QiAvKiBKU0lE
QkRhdGFiYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSURCRGF0YWJh
c2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2Nzc0LDcgKzE2NzY1LDYgQEAK
IAkJMUFFNDJGNjcwQUE0QjhDQjAwQzg2MTJEIC8qIGNmICovID0gewogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQk1MTYwMzA2QjBDQzQzNjIzMDBDOEFDMjUgLyogRmls
ZVN5c3RlbUNGLmNwcCAqLywKIAkJCQk1MTdBNjNCRjFCNzQzMTdFMDBFN0RDREMgLyogS2V5ZWRE
ZWNvZGVyQ0YuY3BwICovLAogCQkJCTUxN0E2M0MwMUI3NDMxN0UwMEU3RENEQyAvKiBLZXllZERl
Y29kZXJDRi5oICovLAogCQkJCTUxN0E2M0MxMUI3NDMxN0UwMEU3RENEQyAvKiBLZXllZEVuY29k
ZXJDRi5jcHAgKi8sCkBAIC0xODczNiwxNCArMTg3MjYsNiBAQAogCQkJcGF0aCA9IG1hYzsKIAkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07Ci0JCTUxNjAzMDA5MENDNDI0NTQwMEM4QUMy
NSAvKiBwb3NpeCAqLyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4gPSAoCi0J
CQkJNTE2MDMwMEEwQ0M0MjUxMjAwQzhBQzI1IC8qIEZpbGVTeXN0ZW1QT1NJWC5jcHAgKi8sCi0J
CQkpOwotCQkJcGF0aCA9IHBvc2l4OwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsK
IAkJNTE2MEY0OTIwQjBBQTcxNTAwQzFEMkFGIC8qIG1hYyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0yMDEwNCw3ICsyMDA4Niw2IEBACiAJCQkJQTdDRkIz
RDQwQjdFRDExODAwNzBDMzJEIC8qIERyYWdJbWFnZU1hYy5tbSAqLywKIAkJCQlFMUJBNjZGMDE3
NDJCRDg2MDBDMjAyNTEgLyogRHluYW1pY0xpbmtlckludGVycG9zaW5nLmggKi8sCiAJCQkJMUNB
MTlFMDMwREMyNTU5NTAwNjVBOTk0IC8qIEV2ZW50TG9vcE1hYy5tbSAqLywKLQkJCQlBMUNDMTE2
MjFFNDkzRDAxMDBFRkE2OUMgLyogRmlsZVN5c3RlbU1hYy5tbSAqLywKIAkJCQk5MzVDNDc2RTA5
QUM0RDczMDBBNkFBQjQgLyogS2V5RXZlbnRNYWMubW0gKi8sCiAJCQkJRjQ0QTVGNTcxRkVEMzgz
MDAwN0Y1OTQ0IC8qIExlZ2FjeU5TUGFzdGVib2FyZFR5cGVzLmggKi8sCiAJCQkJMDZFODFFRDYw
QUI1RDVFOTAwQzg3ODM3IC8qIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5oICovLApAQCAt
MjI1NTIsNyArMjI1MzMsNiBAQAogCQkJCTdDNzk0MUUzMUM1NkMyOTMwMEE0QzU4RSAvKiBEYXRh
RGV0ZWN0b3JzQ29yZVNvZnRMaW5rLmggKi8sCiAJCQkJN0M3OTQxRTIxQzU2QzI5MzAwQTRDNThF
IC8qIERhdGFEZXRlY3RvcnNDb3JlU29mdExpbmsubW0gKi8sCiAJCQkJN0EwOUNFRjAxRjAxRDFG
NzAwRTkzQkRCIC8qIEZpbGVNb25pdG9yQ29jb2EubW0gKi8sCi0JCQkJNTE0QjNGNzUwQzcyMjA1
NTAwMDUzMERGIC8qIEZpbGVTeXN0ZW1Db2NvYS5tbSAqLywKIAkJCQlBNUM5NzRDRjExNDg1RkYx
MDA2NkYyQUIgLyogS2V5RXZlbnRDb2NvYS5oICovLAogCQkJCUE1Qzk3NEQwMTE0ODVGRjEwMDY2
RjJBQiAvKiBLZXlFdmVudENvY29hLm1tICovLAogCQkJCTFBNDgzMkIyMUE5NTNCQTYwMDhCNERG
RSAvKiBMb2NhbGl6ZWRTdHJpbmdzQ29jb2EubW0gKi8sCkBAIC0yNTM5NSw3ICsyNTM3NSw2IEBA
CiAJCQkJMDcyMjFCOTIxN0NGMEFENDAwODQ4RTUxIC8qIG1lZGlhc3RyZWFtICovLAogCQkJCTU5
Qzc3RjEwMTA1NDU5MUMwMDUwNjEwNCAvKiBtb2NrICovLAogCQkJCTY1NkI4NEQ3MEFFQTFDRTkw
MEEwOTVCNCAvKiBuZXR3b3JrICovLAotCQkJCTUxNjAzMDA5MENDNDI0NTQwMEM4QUMyNSAvKiBw
b3NpeCAqLywKIAkJCQkxQTJFNkU1NjBDQzU1MUUwMDA0QTIwNjIgLyogc3FsICovLAogCQkJCUIy
QzNEOUVDMEQwMDZDMUQwMEVGNkYyNiAvKiB0ZXh0ICovLAogCQkJCUUxODgyMzVGMjAzMUY1MEYw
MEI0MkRGMyAvKiB2ciAqLywKQEAgLTI1NDQwLDE0ICsyNTQxOSwxMSBAQAogCQkJCTA2NkM3NzJB
MEFCNjAzQjcwMDIzOENDNCAvKiBGaWxlQ2hvb3Nlci5oICovLAogCQkJCTUzNTFENEFFMURGOTE2
QUMwMDgwMTBDRCAvKiBGaWxlSGFuZGxlLmNwcCAqLywKIAkJCQk1MzUxRDRBRjFERjkxNkFDMDA4
MDEwQ0QgLyogRmlsZUhhbmRsZS5oICovLAotCQkJCTQ2ODlGMUFFMTI2N0JBRTEwMEU4RDM4MCAv
KiBGaWxlTWV0YWRhdGEuaCAqLywKIAkJCQk3QTA5Q0VFQjFGMDFDQzkzMDBFOTNCREIgLyogRmls
ZU1vbml0b3IuY3BwICovLAogCQkJCTdBMDlDRUVDMUYwMUNDOTMwMEU5M0JEQiAvKiBGaWxlTW9u
aXRvci5oICovLAogCQkJCTJFRjFCRkU4MTIxQzlGNDIwMEMyNzYyNyAvKiBGaWxlU3RyZWFtLmNw
cCAqLywKIAkJCQkyRUYxQkZFOTEyMUM5RjQyMDBDMjc2MjcgLyogRmlsZVN0cmVhbS5oICovLAog
CQkJCTJFRjFCRkY4MTIxQ0IwQ0UwMEMyNzYyNyAvKiBGaWxlU3RyZWFtQ2xpZW50LmggKi8sCi0J
CQkJQzU3RkVERTAxMjEyRUU5QzAwOTdCRTY1IC8qIEZpbGVTeXN0ZW0uY3BwICovLAotCQkJCTUx
NEIzRjcyMEM3MjIwNDcwMDA1MzBERiAvKiBGaWxlU3lzdGVtLmggKi8sCiAJCQkJQkMwNzNCQTkw
QzM5OUIxRjAwMEY1OTc5IC8qIEZsb2F0Q29udmVyc2lvbi5oICovLAogCQkJCUNENEJFNTI5MUNF
MTM0MjUwMDlEODdEQSAvKiBHZW5lcmljVGFza1F1ZXVlLmNwcCAqLywKIAkJCQlDRDYyRkI5NDFB
RjAxOEU3MDAxMkVEN0QgLyogR2VuZXJpY1Rhc2tRdWV1ZS5oICovLApAQCAtMjkxMzYsNyArMjkx
MTIsNiBAQAogCQkJCUY1NUIzREJFMTI1MUYxMkQwMDNFRjI2OSAvKiBGaWxlSW5wdXRUeXBlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5NzZENkM4NjEyMkI4QTNEMDAxRkQxRjcgLyogRmlsZUxpc3Qu
aCBpbiBIZWFkZXJzICovLAogCQkJCTgzNUQ1NEM1MUY0REU1MzgwMEU2MDY3MSAvKiBGaWxlTGlz
dENyZWF0b3IuaCBpbiBIZWFkZXJzICovLAotCQkJCTQ2ODlGMUFGMTI2N0JBRTEwMEU4RDM4MCAv
KiBGaWxlTWV0YWRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTdBMDlDRUYxMUYwMjA2OUIwMEU5
M0JEQiAvKiBGaWxlTW9uaXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc2RDZDODkxMjJCOEEz
RDAwMUZEMUY3IC8qIEZpbGVSZWFkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTJFNzU4NDFFMTI3
NzlBREEwMDYyNjI4QiAvKiBGaWxlUmVhZGVyTG9hZGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTI5
MTQ0LDcgKzI5MTE5LDYgQEAKIAkJCQkyRURGMzY5RDEyMkM5NEI0MDAyRjdENEUgLyogRmlsZVJl
YWRlclN5bmMuaCBpbiBIZWFkZXJzICovLAogCQkJCTJFRjFCRkVCMTIxQzlGNDIwMEMyNzYyNyAv
KiBGaWxlU3RyZWFtLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRUYxQkZGOTEyMUNCMENFMDBDMjc2
MjcgLyogRmlsZVN0cmVhbUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTE0QjNGNzMwQzcy
MjA0NzAwMDUzMERGIC8qIEZpbGVTeXN0ZW0uaCBpbiBIZWFkZXJzICovLAogCQkJCTgzRkIzMzcx
MUY1MDhBNTQwMDk4NkU1NCAvKiBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTgzMDMzNTAyMUY1NDkwNTcwMDRERjcwNyAvKiBGaWxlU3lzdGVtRGlyZWN0b3J5
UmVhZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzAzMzUwMzFGNTQ5MDVBMDA0REY3MDcgLyog
RmlsZVN5c3RlbUVudHJpZXNDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvR0NDb250cm9sbGVyLmNwcAppbmRleCBkMjUxZDJlY2UxZjE4YjI0MGE4
OGJiZmIzYTIyYzJjMjRmODBmNmNkLi44YTgzYzRiNmY2ZjU5NjA3ZGZhNzcwNDg0MjlkMDJiMWU0
Mjk3MzNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9HQ0NvbnRyb2xs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5jcHAK
QEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJHQ0NvbnRyb2xsZXIuaCIKIAogI2luY2x1ZGUg
IkNvbW1vblZNLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkpTSFRNTERv
Y3VtZW50LmgiCiAjaW5jbHVkZSAiTG9jYXRpb24uaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9IZWFwLmg+CkBAIC0zNiw2ICszNSw3IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVk0u
aD4KICNpbmNsdWRlIDxwYWwvTG9nZ2luZy5oPgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+
CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
YXRhVHJhbnNmZXJJdGVtLmNwcAppbmRleCBhM2VjYzVhNWM5ZTBmMzBkNzYwMzI4MTdmMGQ0NjM5
NjMzZmYxYThiLi41OWY5Nzg2ZWQ4Y2ZhNjQ5ZTA3ZGRiN2Q4ODRhYzkyNDMyOTc2MzljIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW0uY3BwCkBAIC0zNiwxMSArMzYsMTEgQEAK
ICNpbmNsdWRlICJEYXRhVHJhbnNmZXJJdGVtTGlzdC5oIgogI2luY2x1ZGUgIkRvY3VtZW50Lmgi
CiAjaW5jbHVkZSAiRmlsZS5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJG
aWxlU3lzdGVtRGlyZWN0b3J5RW50cnkuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtRmlsZUVudHJ5
LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlN0cmlu
Z0NhbGxiYWNrLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNv
bnRlbnRSZWFkZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29u
dGVudFJlYWRlckNvY29hLm1tCmluZGV4IDk3MjE3ZjFkNzVkMGU1NDZmY2Y4NDMxZTJkNGFmOGJh
NTQzYWI2MWMuLjI1NGEzNjhmYTc3NGFkNjM3MmQ0NmYxNTNjNWE5NWM0ZWUyNDI4YzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNv
Y29hLm1tCkBAIC0zNyw3ICszNyw2IEBACiAjaW1wb3J0ICJFZGl0b3IuaCIKICNpbXBvcnQgIkVk
aXRvckNsaWVudC5oIgogI2ltcG9ydCAiRmlsZS5oIgotI2ltcG9ydCAiRmlsZVN5c3RlbS5oIgog
I2ltcG9ydCAiRnJhbWUuaCIKICNpbXBvcnQgIkZyYW1lTG9hZGVyLmgiCiAjaW1wb3J0ICJGcmFt
ZUxvYWRlckNsaWVudC5oIgpAQCAtNjUsNiArNjQsNyBAQAogI2ltcG9ydCAiV2ViTlNBdHRyaWJ1
dGVkU3RyaW5nRXh0cmFzLmgiCiAjaW1wb3J0ICJtYXJrdXAuaCIKICNpbXBvcnQgPHBhbC9zcGkv
Y29jb2EvTlNBdHRyaWJ1dGVkU3RyaW5nU1BJLmg+CisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5o
PgogI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CiAjaW1wb3J0IDx3dGYvVVJMUGFyc2VyLmg+
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwCmluZGV4IGI3M2ZjZGU3OWY0NjA3OTJjOTI2YzA3NWZi
YWFmNjY0OGE3MjQxMzEuLmFkYjMwYzkzM2NhMmZiMjVjZWY1ZDBjYTQxMzY1NjBiYmE2ZDgxMTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcApAQCAtMjcsMTEgKzI3LDExIEBACiAjaW5jbHVkZSAi
RmlsZS5oIgogCiAjaW5jbHVkZSAiQmxvYlVSTC5oIgotI2luY2x1ZGUgIkZpbGVNZXRhZGF0YS5o
IgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5Lmgi
CiAjaW5jbHVkZSAiVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oIgogI2luY2x1ZGUgPHd0Zi9EYXRl
TWF0aC5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlTWV0YWRhdGEuaD4KKyNpbmNsdWRlIDx3dGYvRmls
ZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVDb2NvYS5t
bSBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZUNvY29hLm1tCmluZGV4IDIwYmU2ZjdhZWRl
Y2E3NTM0ODM1NjNiMWJlNGY5MDYyZmE0MzhhMDMuLjY2NGY5YTUzNjEzZGYyNmNhMTdjNzA3YzIx
YjUwYzY0NjQ1MjA0ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZUNv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZUNvY29hLm1tCkBAIC0yOCw3
ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoRklMRV9SRVBMQUNFTUVOVCkKIAotI2ltcG9ydCAiRmls
ZVN5c3RlbS5oIgorI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAjaW1wb3J0IDxNb2JpbGVDb3JlU2VydmljZXMvTW9iaWxlQ29yZVNlcnZpY2Vz
Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcAppbmRleCAwM2FmM2E5NjM0OTRm
YWYwMDEyZTIxYTkzOGY1MTkxNzgwMzA4NTA4Li45OThmOWVmYTk0ZTJhNzUyMTZiYjRmMzlhNzk2
ODY0OWMxMzE3ZGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5
cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKQEAgLTMw
LDcgKzMwLDYgQEAKICNpbmNsdWRlICJGaWxlLmgiCiAjaW5jbHVkZSAiRmlsZUxpc3QuaCIKICNp
bmNsdWRlICJGaWxlTGlzdENyZWF0b3IuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5j
bHVkZSAiRm9ybUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkhU
TUxJbnB1dEVsZW1lbnQuaCIKQEAgLTQzLDYgKzQyLDcgQEAKICNpbmNsdWRlICJTZXR0aW5ncy5o
IgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRv
ci5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxv
Y0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nQnVpbGRlci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxl
TGlzdENyZWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlTGlzdENyZWF0b3IuY3Bw
CmluZGV4IDc2ZjU2NTk3MGFkMWRkOGQ4MTA2YzI1YTU3OWU0NTkxYmFiZDQ5YjguLjE1NTZmYzI5
OWNiMjM3M2IwYzU5ODk1MjBhNzJjMzExNmNlMzllYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvRmlsZUxpc3RDcmVhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zp
bGVMaXN0Q3JlYXRvci5jcHAKQEAgLTI4LDkgKzI4LDkgQEAKIAogI2luY2x1ZGUgIkZpbGVDaG9v
c2VyLmgiCiAjaW5jbHVkZSAiRmlsZUxpc3QuaCIKLSNpbmNsdWRlICJGaWxlTWV0YWRhdGEuaCIK
LSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkQ29waWVy
Lmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVNZXRhZGF0YS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lz
dGVtLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKaW5kZXggNzU1ZjFh
MjlhZDdjNTdjY2MzYmVhNWVmYTI1NWI2NTZiYmRjYzMwOS4uOGEzM2U4ODcwY2MzNmJjNmRlMmZj
YThkMWQ1OGM0Y2NhNmI4ZjNlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCkBAIC0zMyw3ICszMyw2IEBACiAj
aW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJET01BcHBsaWNhdGlvbkNhY2hl
LmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNp
bmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJh
bWVMb2FkZXJDbGllbnQuaCIKQEAgLTQ0LDYgKzQzLDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZVJl
cXVlc3QuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlN1YnJlc291cmNlTG9h
ZGVyLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvVVVJRC5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAppbmRleCBlODE0ODNj
MzYyM2NkMDM0MjQ0NDg0Y2QwZjVmZGM5MjQ5NTVhZTMyLi44MmFkZmYzMDMzNWEyZTJiYjljYWE3
YjRmNjY4ODRkMDkwZTc5NTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKQEAgLTMwLDEyICszMCwx
MiBAQAogI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVHcm91cC5oIgogI2luY2x1ZGUgIkFwcGxp
Y2F0aW9uQ2FjaGVIb3N0LmgiCiAjaW5jbHVkZSAiQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmgi
Ci0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIlNRTGl0ZURhdGFiYXNlVHJhY2tl
ci5oIgogI2luY2x1ZGUgIlNRTGl0ZVN0YXRlbWVudC5oIgogI2luY2x1ZGUgIlNRTGl0ZVRyYW5z
YWN0aW9uLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZWN1cml0
eU9yaWdpbkRhdGEuaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0
Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1VV
SUQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IGRiMTc3ZThkYWU4YzYwZTZlNzE4MjI5ZmIzYzAz
ZDM2ZGZmZDU0NTIuLjI2YTI1ODE5YzFhNzc0MWQxMmNkOTY0NjI5YWQxNTk3OTk4NmQwZDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmNwcApAQCAtNTEsNyArNTEsNiBAQAogI2luY2x1ZGUgIkV2ZW50LmgiCiAj
aW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkV4dGVuc2lvblN0eWxlU2hlZXRzLmgi
Ci0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkZvY3VzQ29udHJvbGxlci5oIgog
I2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIK
QEAgLTEyMiw2ICsxMjEsNyBAQAogI2luY2x1ZGUgIldlYkdMU3RhdGVUcmFja2VyLmgiCiAjaW5j
bHVkZSAiV2hlZWxFdmVudERlbHRhRmlsdGVyLmgiCiAjaW5jbHVkZSAiV2lkZ2V0LmgiCisjaW5j
bHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZExlYWtDb3Vu
dGVyLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0Jhc2U2NC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdp
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcAppbmRleCBiNThm
YWFhMTY3YTk2NzI2YWEyMTFmZTFmMDI3NGJjNjZlOTYxNjViLi4zYWQ5MjFjYzU0ZGUxZmVmZTNk
MTU3MWYyMmUyNTMyMTJhOGRlMjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
Y3VyaXR5T3JpZ2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2lu
LmNwcApAQCAtMzAsMTUgKzMwLDE1IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKIAog
I2luY2x1ZGUgIkJsb2JVUkwuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCi0jaW5jbHVkZSA8
d3RmL1VSTC5oPgogI2luY2x1ZGUgIlNjaGVtZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiU2VjdXJp
dHlQb2xpY3kuaCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKICNpbmNsdWRlICJUaHJlYWRh
YmxlQmxvYlJlZ2lzdHJ5LmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRl
IDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAKaW5kZXggMDVmOGIxOWRhZTU4
NzlkMGNkZmRhN2M3NjQ5ZWNhMmI0NGMzOThhNi4uNDMwY2I4YjBiM2FjMzZjY2E5NjExZTBhMWYw
OWUzNWFlMTBiMGQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9y
aWdpbkRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRh
LmNwcApAQCAtMjcsOSArMjcsOSBAQAogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luRGF0YS5oIgog
CiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVk
ZSAiRnJhbWUuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgPHd0Zi9G
aWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRl
bmF0ZU51bWJlcnMuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVI
YW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVIYW5kbGUuaAppbmRleCBkMTE4
MzA4Njk2M2QyMTIzN2I5MGIxYTgyNTg1Yjc2NWJiYzEzZGYyLi41MGQ4MjRjYWVlOWJhMTI0MDk4
NDM1ZWE3MjE1ZDE1MTc4N2RiY2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9GaWxlSGFuZGxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUhhbmRsZS5o
CkBAIC0yOCw5ICsyOCw4IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiRmlsZVN5c3Rl
bS5oIgotCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5
c3RlbS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0ZpbGVNZXRhZGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmls
ZU1ldGFkYXRhLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkODg0OTUzZTc2NzVk
OTJjMDYzOGRlY2FkODU3Y2Q0MWE1OWM1NjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZU1ldGFkYXRhLmgK
KysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEw
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlIDx3
dGYvV2FsbFRpbWUuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1Y3QgRmlsZU1ldGFk
YXRhIHsKLSAgICAvLyBUaGUgbGFzdCBtb2RpZmljYXRpb24gdGltZSBvZiB0aGUgZmlsZSwgaW4g
c2Vjb25kcy4KLSAgICBXYWxsVGltZSBtb2RpZmljYXRpb25UaW1lOwotCi0gICAgLy8gVGhlIGxl
bmd0aCBvZiB0aGUgZmlsZSBpbiBieXRlcy4KLSAgICBsb25nIGxvbmcgbGVuZ3RoOwotCi0gICAg
Ym9vbCBpc0hpZGRlbjsKLQotICAgIGVudW0gY2xhc3MgVHlwZSB7IEZpbGUsIERpcmVjdG9yeSwg
U3ltYm9saWNMaW5rIH07Ci0gICAgVHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN0cmVhbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3RyZWFtLmNwcAppbmRleCBlYTkxNzM3NGI0
YzhiNGE0ZWEwNDNjMjlhYmY1NDMxNTkyMmE4OWUyLi44OTNiYjMzOTQ3NmNlZmRhOGRmMTBiYzky
MGMwYjM1ODI1MTkxNTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxl
U3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3RyZWFtLmNwcApA
QCAtMjksMTAgKzI5LDggQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0KICNpbmNsdWRl
ICJGaWxlU3RyZWFtLmgiCiAKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0ZpbGVTdHJlYW0uaAppbmRleCBhYTAxMWVhMjNlMTg1NGM0YjkwMjA1OTYyNTM3NjEzYTFh
YjZlMTJiLi5hMmZiOGU1ZmFhMjU0YmM4ZTVjY2U5ZTFiNGM2NjMxYjhkMWEwNTRjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3RyZWFtLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vRmlsZVN0cmVhbS5oCkBAIC0yOCwxMCArMjgsOSBAQAogICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi0jaWZuZGVmIEZpbGVTdHJlYW1faAotI2RlZmluZSBGaWxlU3RyZWFtX2gK
KyNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgorI2luY2x1ZGUgPHd0Zi9G
aWxlU3lzdGVtLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjQsNSArNjMsMyBAQCBw
cml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRmlsZVN0
cmVhbV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBlZDlkMzdhYWExMzE2MjgzZGE3ZWYyMjQ2YjNjYTk0MTBhZDI1ZDIy
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMzY3ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0g
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVt
LmgiCi0KLSNpbmNsdWRlICJGaWxlTWV0YWRhdGEuaCIKLSNpbmNsdWRlIDx3dGYvSGV4TnVtYmVy
Lmg+Ci0jaW5jbHVkZSA8d3RmL1Njb3BlLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KLQotI2lmICFPUyhXSU5ET1dT
KQotI2luY2x1ZGUgPGZjbnRsLmg+Ci0jaW5jbHVkZSA8c3lzL21tYW4uaD4KLSNpbmNsdWRlIDxz
eXMvc3RhdC5oPgotI2luY2x1ZGUgPHVuaXN0ZC5oPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotbmFtZXNwYWNlIEZpbGVTeXN0ZW0gewotCi0vLyBUaGUgZm9sbG93aW5nIGxvd2Vy
LUFTQ0lJIGNoYXJhY3RlcnMgbmVlZCBlc2NhcGluZyB0byBiZSB1c2VkIGluIGEgZmlsZW5hbWUK
LS8vIGFjcm9zcyBhbGwgc3lzdGVtcywgaW5jbHVkaW5nIFdpbmRvd3M6Ci0vLyAgICAgLSBVbnBy
aW50YWJsZSBBU0NJSSAoMDAtMUYpCi0vLyAgICAgLSBTcGFjZSAgICAgICAgICAgICAoMjApCi0v
LyAgICAgLSBEb3VibGUgcXVvdGUgICAgICAoMjIpCi0vLyAgICAgLSBQZXJjZW50ICAgICAgICAg
ICAoMjUpIChlc2NhcGVkIGJlY2F1c2UgaXQgaXMgb3VyIGVzY2FwZSBjaGFyYWN0ZXIpCi0vLyAg
ICAgLSBBc3RlcmlzayAgICAgICAgICAoMkEpCi0vLyAgICAgLSBTbGFzaCAgICAgICAgICAgICAo
MkYpCi0vLyAgICAgLSBDb2xvbiAgICAgICAgICAgICAoM0EpCi0vLyAgICAgLSBMZXNzLXRoYW4g
ICAgICAgICAoM0MpCi0vLyAgICAgLSBHcmVhdGVyLXRoYW4gICAgICAoM0UpCi0vLyAgICAgLSBR
dWVzdGlvbiBNYXJrICAgICAoM0YpCi0vLyAgICAgLSBCYWNrc2xhc2ggICAgICAgICAoNUMpCi0v
LyAgICAgLSBQaXBlICAgICAgICAgICAgICAoN0MpCi0vLyAgICAgLSBEZWxldGUgICAgICAgICAg
ICAoN0YpCi0KLXN0YXRpYyBjb25zdCBib29sIG5lZWRzRXNjYXBpbmdbMTI4XSA9IHsKLSAgICAv
KiAwMC0wNyAqLyB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVl
LCAgdHJ1ZSwgCi0gICAgLyogMDgtMEYgKi8gdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRy
dWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsIAotCi0gICAgLyogMTAtMTcgKi8gdHJ1ZSwgIHRydWUs
ICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsIAotICAgIC8qIDE4LTFG
ICovIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVl
LCAKLQotICAgIC8qIDIwLTI3ICovIHRydWUsICBmYWxzZSwgdHJ1ZSwgIGZhbHNlLCBmYWxzZSwg
dHJ1ZSwgIGZhbHNlLCBmYWxzZSwgCi0gICAgLyogMjgtMkYgKi8gZmFsc2UsIGZhbHNlLCB0cnVl
LCAgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUsIAotICAgIAotICAgIC8qIDMwLTM3
ICovIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxz
ZSwgCi0gICAgLyogMzgtM0YgKi8gZmFsc2UsIGZhbHNlLCB0cnVlLCAgZmFsc2UsIHRydWUsICBm
YWxzZSwgdHJ1ZSwgIHRydWUsIAotICAgIAotICAgIC8qIDQwLTQ3ICovIGZhbHNlLCBmYWxzZSwg
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgCi0gICAgLyogNDgtNEYg
Ki8gZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNl
LAotICAgIAotICAgIC8qIDUwLTU3ICovIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxz
ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgCi0gICAgLyogNTgtNUYgKi8gZmFsc2UsIGZhbHNlLCBm
YWxzZSwgZmFsc2UsIHRydWUsICBmYWxzZSwgZmFsc2UsIGZhbHNlLAotICAgIAotICAgIC8qIDYw
LTY3ICovIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBm
YWxzZSwgCi0gICAgLyogNjgtNkYgKi8gZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNl
LCBmYWxzZSwgZmFsc2UsIGZhbHNlLAotICAgIAotICAgIC8qIDcwLTc3ICovIGZhbHNlLCBmYWxz
ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgCi0gICAgLyogNzgt
N0YgKi8gZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUsICBmYWxzZSwgZmFsc2UsIHRy
dWUsIAotfTsKLQotc3RhdGljIGlubGluZSBib29sIHNob3VsZEVzY2FwZVVDaGFyKFVDaGFyIGNo
YXJhY3RlciwgVUNoYXIgcHJldmlvdXNDaGFyYWN0ZXIsIFVDaGFyIG5leHRDaGFyYWN0ZXIpCi17
Ci0gICAgaWYgKGNoYXJhY3RlciA8PSAxMjcpCi0gICAgICAgIHJldHVybiBuZWVkc0VzY2FwaW5n
W2NoYXJhY3Rlcl07Ci0KLSAgICBpZiAoVTE2X0lTX0xFQUQoY2hhcmFjdGVyKSAmJiAhVTE2X0lT
X1RSQUlMKG5leHRDaGFyYWN0ZXIpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIGlmIChV
MTZfSVNfVFJBSUwoY2hhcmFjdGVyKSAmJiAhVTE2X0lTX0xFQUQocHJldmlvdXNDaGFyYWN0ZXIp
KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotU3RyaW5n
IGVuY29kZUZvckZpbGVOYW1lKGNvbnN0IFN0cmluZyYgaW5wdXRTdHJpbmcpCi17Ci0gICAgdW5z
aWduZWQgbGVuZ3RoID0gaW5wdXRTdHJpbmcubGVuZ3RoKCk7Ci0gICAgaWYgKCFsZW5ndGgpCi0g
ICAgICAgIHJldHVybiBpbnB1dFN0cmluZzsKLQotICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0Owot
ICAgIHJlc3VsdC5yZXNlcnZlQ2FwYWNpdHkobGVuZ3RoKTsKLQotICAgIFVDaGFyIHByZXZpb3Vz
Q2hhcmFjdGVyOwotICAgIFVDaGFyIGNoYXJhY3RlciA9IDA7Ci0gICAgVUNoYXIgbmV4dENoYXJh
Y3RlciA9IGlucHV0U3RyaW5nWzBdOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5n
dGg7ICsraSkgewotICAgICAgICBwcmV2aW91c0NoYXJhY3RlciA9IGNoYXJhY3RlcjsKLSAgICAg
ICAgY2hhcmFjdGVyID0gbmV4dENoYXJhY3RlcjsKLSAgICAgICAgbmV4dENoYXJhY3RlciA9IGkg
KyAxIDwgbGVuZ3RoID8gaW5wdXRTdHJpbmdbaSArIDFdIDogMDsKLQotICAgICAgICBpZiAoc2hv
dWxkRXNjYXBlVUNoYXIoY2hhcmFjdGVyLCBwcmV2aW91c0NoYXJhY3RlciwgbmV4dENoYXJhY3Rl
cikpIHsKLSAgICAgICAgICAgIGlmIChjaGFyYWN0ZXIgPD0gMjU1KSB7Ci0gICAgICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgnJScpOwotICAgICAgICAgICAgICAgIGFwcGVuZEJ5dGVBc0hleChj
aGFyYWN0ZXIsIHJlc3VsdCk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmRMaXRlcmFsKCIlKyIpOwotICAgICAgICAgICAgICAgIGFwcGVuZEJ5dGVB
c0hleChjaGFyYWN0ZXIgPj4gOCwgcmVzdWx0KTsKLSAgICAgICAgICAgICAgICBhcHBlbmRCeXRl
QXNIZXgoY2hhcmFjdGVyLCByZXN1bHQpOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UK
LSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoY2hhcmFjdGVyKTsKLSAgICB9Ci0KLSAgICByZXR1
cm4gcmVzdWx0LnRvU3RyaW5nKCk7Ci19Ci0KLVN0cmluZyBkZWNvZGVGcm9tRmlsZW5hbWUoY29u
c3QgU3RyaW5nJiBpbnB1dFN0cmluZykKLXsKLSAgICB1bnNpZ25lZCBsZW5ndGggPSBpbnB1dFN0
cmluZy5sZW5ndGgoKTsKLSAgICBpZiAoIWxlbmd0aCkKLSAgICAgICAgcmV0dXJuIGlucHV0U3Ry
aW5nOwotCi0gICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7Ci0gICAgcmVzdWx0LnJlc2VydmVDYXBh
Y2l0eShsZW5ndGgpOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytp
KSB7Ci0gICAgICAgIGlmIChpbnB1dFN0cmluZ1tpXSAhPSAnJScpIHsKLSAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoaW5wdXRTdHJpbmdbaV0pOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgIH0KLQotICAgICAgICAvLyBJZiB0aGUgaW5wdXQgc3RyaW5nIGlzIGEgdmFsaWQgZW5jb2Rl
ZCBmaWxlbmFtZSwgaXQgbXVzdCBiZSBhdCBsZWFzdCAyIGNoYXJhY3RlcnMgbG9uZ2VyCi0gICAg
ICAgIC8vIHRoYW4gdGhlIGN1cnJlbnQgaW5kZXggdG8gYWNjb3VudCBmb3IgdGhpcyBwZXJjZW50
IGVuY29kZWQgdmFsdWUuCi0gICAgICAgIGlmIChpICsgMiA+PSBsZW5ndGgpCi0gICAgICAgICAg
ICByZXR1cm4geyB9OwotCi0gICAgICAgIGlmIChpbnB1dFN0cmluZ1tpKzFdICE9ICcrJykgewot
ICAgICAgICAgICAgaWYgKCFpc0FTQ0lJSGV4RGlnaXQoaW5wdXRTdHJpbmdbaSArIDFdKSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4geyB9OwotICAgICAgICAgICAgaWYgKCFpc0FTQ0lJSGV4RGln
aXQoaW5wdXRTdHJpbmdbaSArIDJdKSkKLSAgICAgICAgICAgICAgICByZXR1cm4geyB9OwotICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZCh0b0FTQ0lJSGV4VmFsdWUoaW5wdXRTdHJpbmdbaSArIDFd
LCBpbnB1dFN0cmluZ1tpICsgMl0pKTsKLSAgICAgICAgICAgIGkgKz0gMjsKLSAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gSWYgdGhlIGlucHV0IHN0cmluZyBp
cyBhIHZhbGlkIGVuY29kZWQgZmlsZW5hbWUsIGl0IG11c3QgYmUgYXQgbGVhc3QgNSBjaGFyYWN0
ZXJzIGxvbmdlcgotICAgICAgICAvLyB0aGFuIHRoZSBjdXJyZW50IGluZGV4IHRvIGFjY291bnQg
Zm9yIHRoaXMgcGVyY2VudCBlbmNvZGVkIHZhbHVlLgotICAgICAgICBpZiAoaSArIDUgPj0gbGVu
Z3RoKQotICAgICAgICAgICAgcmV0dXJuIHsgfTsKLQotICAgICAgICBpZiAoIWlzQVNDSUlIZXhE
aWdpdChpbnB1dFN0cmluZ1tpICsgMl0pKQotICAgICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICAg
ICAgaWYgKCFpc0FTQ0lJSGV4RGlnaXQoaW5wdXRTdHJpbmdbaSArIDNdKSkKLSAgICAgICAgICAg
IHJldHVybiB7IH07Ci0gICAgICAgIGlmICghaXNBU0NJSUhleERpZ2l0KGlucHV0U3RyaW5nW2kg
KyA0XSkpCi0gICAgICAgICAgICByZXR1cm4geyB9OwotICAgICAgICBpZiAoIWlzQVNDSUlIZXhE
aWdpdChpbnB1dFN0cmluZ1tpICsgNV0pKQotICAgICAgICAgICAgcmV0dXJuIHsgfTsKLQotICAg
ICAgICByZXN1bHQuYXBwZW5kKHRvQVNDSUlIZXhWYWx1ZShpbnB1dFN0cmluZ1tpICsgMl0sIGlu
cHV0U3RyaW5nW2kgKyAzXSkgPDwgOCB8IHRvQVNDSUlIZXhWYWx1ZShpbnB1dFN0cmluZ1tpICsg
NF0sIGlucHV0U3RyaW5nW2kgKyA1XSkpOwotICAgICAgICBpICs9IDU7Ci0gICAgfQotCi0gICAg
cmV0dXJuIHJlc3VsdC50b1N0cmluZygpOwotfQotCi1TdHJpbmcgbGFzdENvbXBvbmVudE9mUGF0
aElnbm9yaW5nVHJhaWxpbmdTbGFzaChjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0jaWYgT1MoV0lO
RE9XUykKLSAgICBjaGFyIHBhdGhTZXBhcmF0b3IgPSAnXFwnOwotI2Vsc2UKLSAgICBjaGFyIHBh
dGhTZXBhcmF0b3IgPSAnLyc7Ci0jZW5kaWYKLQotICAgIGF1dG8gcG9zaXRpb24gPSBwYXRoLnJl
dmVyc2VGaW5kKHBhdGhTZXBhcmF0b3IpOwotICAgIGlmIChwb3NpdGlvbiA9PSBub3RGb3VuZCkK
LSAgICAgICAgcmV0dXJuIHBhdGg7Ci0KLSAgICBzaXplX3QgZW5kT2ZTdWJzdHJpbmcgPSBwYXRo
Lmxlbmd0aCgpIC0gMTsKLSAgICBpZiAocG9zaXRpb24gPT0gZW5kT2ZTdWJzdHJpbmcpIHsKLSAg
ICAgICAgLS1lbmRPZlN1YnN0cmluZzsKLSAgICAgICAgcG9zaXRpb24gPSBwYXRoLnJldmVyc2VG
aW5kKHBhdGhTZXBhcmF0b3IsIGVuZE9mU3Vic3RyaW5nKTsKLSAgICB9Ci0KLSAgICByZXR1cm4g
cGF0aC5zdWJzdHJpbmcocG9zaXRpb24gKyAxLCBlbmRPZlN1YnN0cmluZyAtIHBvc2l0aW9uKTsK
LX0KLQotYm9vbCBhcHBlbmRGaWxlQ29udGVudHNUb0ZpbGVIYW5kbGUoY29uc3QgU3RyaW5nJiBw
YXRoLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHRhcmdldCkKLXsKLSAgICBhdXRvIHNvdXJjZSA9IG9w
ZW5GaWxlKHBhdGgsIEZpbGVPcGVuTW9kZTo6UmVhZCk7Ci0KLSAgICBpZiAoIWlzSGFuZGxlVmFs
aWQoc291cmNlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgc3RhdGljIGludCBidWZm
ZXJTaXplID0gMSA8PCAxOTsKLSAgICBWZWN0b3I8Y2hhcj4gYnVmZmVyKGJ1ZmZlclNpemUpOwot
Ci0gICAgYXV0byBmaWxlQ2xvc2VyID0gV1RGOjptYWtlU2NvcGVFeGl0KFtzb3VyY2VdKCkgewot
ICAgICAgICBQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlID0gc291cmNlOwotICAgICAgICBjbG9z
ZUZpbGUoaGFuZGxlKTsKLSAgICB9KTsKLQotICAgIGRvIHsKLSAgICAgICAgaW50IHJlYWRCeXRl
cyA9IHJlYWRGcm9tRmlsZShzb3VyY2UsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlclNpemUpOwotICAg
ICAgICAKLSAgICAgICAgaWYgKHJlYWRCeXRlcyA8IDApCi0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICAgICAgaWYgKHdyaXRlVG9GaWxlKHRhcmdldCwgYnVmZmVyLmRhdGEoKSwgcmVh
ZEJ5dGVzKSAhPSByZWFkQnl0ZXMpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAg
ICAgaWYgKHJlYWRCeXRlcyA8IGJ1ZmZlclNpemUpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICB9IHdoaWxlICh0cnVlKTsKLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi0g
ICAgCi1ib29sIGZpbGVzSGF2ZVNhbWVWb2x1bWUoY29uc3QgU3RyaW5nJiBmaWxlQSwgY29uc3Qg
U3RyaW5nJiBmaWxlQikKLXsKLSAgICBhdXRvIGZzUmVwRmlsZUEgPSBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZmlsZUEpOwotICAgIGF1dG8gZnNSZXBGaWxlQiA9IGZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihmaWxlQik7Ci0gICAgCi0gICAgaWYgKGZzUmVwRmlsZUEuaXNOdWxsKCkgfHwgZnNS
ZXBGaWxlQi5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYm9vbCByZXN1
bHQgPSBmYWxzZTsKLQotICAgIGF1dG8gZmlsZUFEZXYgPSBnZXRGaWxlRGV2aWNlSWQoZnNSZXBG
aWxlQSk7Ci0gICAgYXV0byBmaWxlQkRldiA9IGdldEZpbGVEZXZpY2VJZChmc1JlcEZpbGVCKTsK
LQotICAgIGlmIChmaWxlQURldiAmJiBmaWxlQkRldikKLSAgICAgICAgcmVzdWx0ID0gKGZpbGVB
RGV2ID09IGZpbGVCRGV2KTsKLSAgICAKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0jaWYgIVBM
QVRGT1JNKE1BQykKLQotdm9pZCBzZXRNZXRhZGF0YVVSTChjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmKQotewotfQotCi1ib29sIGNhbkV4Y2x1ZGVGcm9tQmFja3Vw
KCkKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgZXhjbHVkZUZyb21CYWNrdXAoY29u
c3QgU3RyaW5nJikKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLSNlbmRpZgotCi1NYXBwZWRG
aWxlRGF0YTo6fk1hcHBlZEZpbGVEYXRhKCkKLXsKLSNpZiAhT1MoV0lORE9XUykKLSAgICBpZiAo
IW1fZmlsZURhdGEpCi0gICAgICAgIHJldHVybjsKLSAgICBtdW5tYXAobV9maWxlRGF0YSwgbV9m
aWxlU2l6ZSk7Ci0jZW5kaWYKLX0KLQotTWFwcGVkRmlsZURhdGE6Ok1hcHBlZEZpbGVEYXRhKGNv
bnN0IFN0cmluZyYgZmlsZVBhdGgsIGJvb2wmIHN1Y2Nlc3MpCi17Ci0jaWYgT1MoV0lORE9XUykK
LSAgICAvLyBGSVhNRTogSW1wbGVtZW50IG1hcHBpbmcKLSAgICBzdWNjZXNzID0gZmFsc2U7Ci0j
ZWxzZQotICAgIENTdHJpbmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZVBh
dGgpOwotICAgIGludCBmZCA9ICFmc1JlcC5pc051bGwoKSA/IG9wZW4oZnNSZXAuZGF0YSgpLCBP
X1JET05MWSkgOiAtMTsKLSAgICBpZiAoZmQgPCAwKSB7Ci0gICAgICAgIHN1Y2Nlc3MgPSBmYWxz
ZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHN0cnVjdCBzdGF0IGZpbGVTdGF0Owot
ICAgIGlmIChmc3RhdChmZCwgJmZpbGVTdGF0KSkgewotICAgICAgICBjbG9zZShmZCk7Ci0gICAg
ICAgIHN1Y2Nlc3MgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHVuc2ln
bmVkIHNpemU7Ci0gICAgaWYgKCFXVEY6OmNvbnZlcnRTYWZlbHkoZmlsZVN0YXQuc3Rfc2l6ZSwg
c2l6ZSkpIHsKLSAgICAgICAgY2xvc2UoZmQpOwotICAgICAgICBzdWNjZXNzID0gZmFsc2U7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIXNpemUpIHsKLSAgICAgICAgY2xvc2Uo
ZmQpOwotICAgICAgICBzdWNjZXNzID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIHZvaWQqIGRhdGEgPSBtbWFwKDAsIHNpemUsIFBST1RfUkVBRCwgTUFQX0ZJTEUgfCBNQVBf
U0hBUkVELCBmZCwgMCk7Ci0gICAgY2xvc2UoZmQpOwotCi0gICAgaWYgKGRhdGEgPT0gTUFQX0ZB
SUxFRCkgewotICAgICAgICBzdWNjZXNzID0gZmFsc2U7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBzdWNjZXNzID0gdHJ1ZTsKLSAgICBtX2ZpbGVEYXRhID0gZGF0YTsKLSAgICBtX2Zp
bGVTaXplID0gc2l6ZTsKLSNlbmRpZgotfQotCi1QbGF0Zm9ybUZpbGVIYW5kbGUgb3BlbkFuZExv
Y2tGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlIG9wZW5Nb2RlLCBPcHRpb25T
ZXQ8RmlsZUxvY2tNb2RlPiBsb2NrTW9kZSkKLXsKLSAgICBhdXRvIGhhbmRsZSA9IG9wZW5GaWxl
KHBhdGgsIG9wZW5Nb2RlKTsKLSAgICBpZiAoaGFuZGxlID09IGludmFsaWRQbGF0Zm9ybUZpbGVI
YW5kbGUpCi0gICAgICAgIHJldHVybiBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOwotCi0jaWYg
VVNFKEZJTEVfTE9DSykKLSAgICBib29sIGxvY2tlZCA9IGxvY2tGaWxlKGhhbmRsZSwgbG9ja01v
ZGUpOwotICAgIEFTU0VSVF9VTlVTRUQobG9ja2VkLCBsb2NrZWQpOwotI2Vsc2UKLSAgICBVTlVT
RURfUEFSQU0obG9ja01vZGUpOwotI2VuZGlmCi0KLSAgICByZXR1cm4gaGFuZGxlOwotfQotCi12
b2lkIHVubG9ja0FuZENsb3NlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlKQotewotI2lm
IFVTRShGSUxFX0xPQ0spCi0gICAgYm9vbCB1bmxvY2tlZCA9IHVubG9ja0ZpbGUoaGFuZGxlKTsK
LSAgICBBU1NFUlRfVU5VU0VEKHVubG9ja2VkLCB1bmxvY2tlZCk7Ci0jZW5kaWYKLSAgICBjbG9z
ZUZpbGUoaGFuZGxlKTsKLX0KLQotYm9vbCBmaWxlSXNEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBw
YXRoLCBTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzIHNob3VsZEZvbGxvd1N5bWJvbGljTGlua3Mp
Ci17Ci0gICAgYXV0byBtZXRhZGF0YSA9IHNob3VsZEZvbGxvd1N5bWJvbGljTGlua3MgPT0gU2hv
dWxkRm9sbG93U3ltYm9saWNMaW5rczo6WWVzID8gZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlu
a3MocGF0aCkgOiBmaWxlTWV0YWRhdGEocGF0aCk7Ci0gICAgaWYgKCFtZXRhZGF0YSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBtZXRhZGF0YS52YWx1ZSgpLnR5cGUgPT0gRmls
ZU1ldGFkYXRhOjpUeXBlOjpEaXJlY3Rvcnk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEZpbGVTeXN0
ZW0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0ZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0u
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2NlYmNhYTA1MzliNTlkOTNlNzJlMDk4
NDBiMjNiMWRhYzYzODExYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgKKysrIC9kZXYvbnVs
bApAQCAtMSwyMjUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNy0yMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwOCBDb2xsYWJv
cmEsIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5v
biBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKLSAqIDMuICBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YK
LSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgot
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgPHRpbWUuaD4KLSNp
bmNsdWRlIDx1dGlsaXR5PgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3Rm
L09wdGlvblNldC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvV2Fs
bFRpbWUuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotI2lmIFVTRShDRikK
LSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0jZW5kaWYKLQotI2lmIFVTRShDRikKLXR5cGVk
ZWYgY29uc3Qgc3RydWN0IF9fQ0ZEYXRhKiBDRkRhdGFSZWY7Ci0jZW5kaWYKLQotT0JKQ19DTEFT
UyBOU1N0cmluZzsKLQotI2lmIFBMQVRGT1JNKFdJTikKLXR5cGVkZWYgdm9pZCAqSEFORExFOwot
I2VuZGlmCi0KLSNpZiBVU0UoR0xJQikKLXR5cGVkZWYgc3RydWN0IF9HRmlsZUlPU3RyZWFtIEdG
aWxlSU9TdHJlYW07Ci0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1Y3QgRmls
ZU1ldGFkYXRhOwotCi1uYW1lc3BhY2UgRmlsZVN5c3RlbSB7Ci0KLS8vIFBsYXRmb3JtRmlsZUhh
bmRsZQotI2lmIFVTRShHTElCKSAmJiAhUExBVEZPUk0oV0lOKQotdHlwZWRlZiBHRmlsZUlPU3Ry
ZWFtKiBQbGF0Zm9ybUZpbGVIYW5kbGU7Ci1jb25zdCBQbGF0Zm9ybUZpbGVIYW5kbGUgaW52YWxp
ZFBsYXRmb3JtRmlsZUhhbmRsZSA9IDA7Ci0jZWxpZiBQTEFURk9STShXSU4pCi10eXBlZGVmIEhB
TkRMRSBQbGF0Zm9ybUZpbGVIYW5kbGU7Ci0vLyBGSVhNRTogLTEgaXMgSU5WQUxJRF9IQU5ETEVf
VkFMVUUsIGRlZmluZWQgaW4gPHdpbmJhc2UuaD4uIENocm9taXVtIHRyaWVzIHRvCi0vLyBhdm9p
ZCB1c2luZyBXaW5kb3dzIGhlYWRlcnMgaW4gaGVhZGVycy4gIFdlJ2QgcmF0aGVyIG1vdmUgdGhp
cyBpbnRvIHRoZSAuY3BwLgotY29uc3QgUGxhdGZvcm1GaWxlSGFuZGxlIGludmFsaWRQbGF0Zm9y
bUZpbGVIYW5kbGUgPSByZWludGVycHJldF9jYXN0PEhBTkRMRT4oLTEpOwotI2Vsc2UKLXR5cGVk
ZWYgaW50IFBsYXRmb3JtRmlsZUhhbmRsZTsKLWNvbnN0IFBsYXRmb3JtRmlsZUhhbmRsZSBpbnZh
bGlkUGxhdGZvcm1GaWxlSGFuZGxlID0gLTE7Ci0jZW5kaWYKLQotZW51bSBjbGFzcyBGaWxlT3Bl
bk1vZGUgewotICAgIFJlYWQsCi0gICAgV3JpdGUsCi0jaWYgT1MoREFSV0lOKQotICAgIEV2ZW50
c09ubHksCi0jZW5kaWYKLX07Ci0KLWVudW0gY2xhc3MgRmlsZVNlZWtPcmlnaW4gewotICAgIEJl
Z2lubmluZywKLSAgICBDdXJyZW50LAotICAgIEVuZCwKLX07Ci0KLWVudW0gY2xhc3MgRmlsZUxv
Y2tNb2RlIHsKLSAgICBTaGFyZWQgPSAxIDw8IDAsCi0gICAgRXhjbHVzaXZlID0gMSA8PCAxLAot
ICAgIE5vbmJsb2NraW5nID0gMSA8PCAyLAotfTsKLQotZW51bSBjbGFzcyBTaG91bGRGb2xsb3dT
eW1ib2xpY0xpbmtzIHsgTm8sIFllcyB9OwotCi1XRUJDT1JFX0VYUE9SVCBib29sIGZpbGVFeGlz
dHMoY29uc3QgU3RyaW5nJik7Ci1XRUJDT1JFX0VYUE9SVCBib29sIGRlbGV0ZUZpbGUoY29uc3Qg
U3RyaW5nJik7Ci1XRUJDT1JFX0VYUE9SVCBib29sIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KGNvbnN0
IFN0cmluZyYpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCBtb3ZlRmlsZShjb25zdCBTdHJpbmcmIG9s
ZFBhdGgsIGNvbnN0IFN0cmluZyYgbmV3UGF0aCk7Ci1XRUJDT1JFX0VYUE9SVCBib29sIGdldEZp
bGVTaXplKGNvbnN0IFN0cmluZyYsIGxvbmcgbG9uZyYgcmVzdWx0KTsKLVdFQkNPUkVfRVhQT1JU
IGJvb2wgZ2V0RmlsZVNpemUoUGxhdGZvcm1GaWxlSGFuZGxlLCBsb25nIGxvbmcmIHJlc3VsdCk7
Ci1XRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZU1vZGlmaWNhdGlvblRp
bWUoY29uc3QgU3RyaW5nJik7Ci1XRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxXYWxsVGltZT4gZ2V0
RmlsZUNyZWF0aW9uVGltZShjb25zdCBTdHJpbmcmKTsgLy8gTm90IGFsbCBwbGF0Zm9ybXMgc3Rv
cmUgZmlsZSBjcmVhdGlvbiB0aW1lLgotV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8RmlsZU1ldGFk
YXRhPiBmaWxlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBwYXRoKTsKLVdFQkNPUkVfRVhQT1JUIE9w
dGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3MoY29uc3Qg
U3RyaW5nJiBwYXRoKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgZmlsZUlzRGlyZWN0b3J5KGNvbnN0
IFN0cmluZyYsIFNob3VsZEZvbGxvd1N5bWJvbGljTGlua3MpOwotV0VCQ09SRV9FWFBPUlQgU3Ry
aW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0
cmluZyYgY29tcG9uZW50KTsKLVN0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKFN0cmlu
Z1ZpZXcgcGF0aCwgY29uc3QgVmVjdG9yPFN0cmluZ1ZpZXc+JiBjb21wb25lbnRzKTsKLVN0cmlu
ZyBsYXN0Q29tcG9uZW50T2ZQYXRoSWdub3JpbmdUcmFpbGluZ1NsYXNoKGNvbnN0IFN0cmluZyYg
cGF0aCk7Ci1XRUJDT1JFX0VYUE9SVCBib29sIG1ha2VBbGxEaXJlY3Rvcmllcyhjb25zdCBTdHJp
bmcmIHBhdGgpOwotU3RyaW5nIGhvbWVEaXJlY3RvcnlQYXRoKCk7Ci1XRUJDT1JFX0VYUE9SVCBT
dHJpbmcgcGF0aEdldEZpbGVOYW1lKGNvbnN0IFN0cmluZyYpOwotV0VCQ09SRV9FWFBPUlQgU3Ry
aW5nIGRpcmVjdG9yeU5hbWUoY29uc3QgU3RyaW5nJik7Ci1XRUJDT1JFX0VYUE9SVCBib29sIGdl
dFZvbHVtZUZyZWVTcGFjZShjb25zdCBTdHJpbmcmLCB1aW50NjRfdCYpOwotV0VCQ09SRV9FWFBP
UlQgT3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0IENTdHJpbmcmKTsKLVdF
QkNPUkVfRVhQT1JUIGJvb2wgY3JlYXRlU3ltYm9saWNMaW5rKGNvbnN0IFN0cmluZyYgdGFyZ2V0
UGF0aCwgY29uc3QgU3RyaW5nJiBzeW1ib2xpY0xpbmtQYXRoKTsKLQotV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRNZXRhZGF0YVVSTChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgdXJs
U3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyID0geyB9KTsKLQotYm9vbCBjYW5FeGNsdWRl
RnJvbUJhY2t1cCgpOyAvLyBSZXR1cm5zIHRydWUgaWYgYW55IGZpbGUgY2FuIGV2ZXIgYmUgZXhj
bHVkZWQgZnJvbSBiYWNrdXAuCi1ib29sIGV4Y2x1ZGVGcm9tQmFja3VwKGNvbnN0IFN0cmluZyYp
OyAvLyBSZXR1cm5zIHRydWUgaWYgc3VjY2Vzc2Z1bC4KLQotV0VCQ09SRV9FWFBPUlQgVmVjdG9y
PFN0cmluZz4gbGlzdERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYg
ZmlsdGVyID0gU3RyaW5nKCkpOwotCi1XRUJDT1JFX0VYUE9SVCBDU3RyaW5nIGZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmKTsKLVN0cmluZyBzdHJpbmdGcm9tRmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKGNvbnN0IGNoYXIqKTsKLQotaW5saW5lIGJvb2wgaXNIYW5kbGVWYWxp
ZChjb25zdCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkgeyByZXR1cm4gaGFuZGxlICE9IGlu
dmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7IH0KLQotLy8gUHJlZml4IGlzIHdoYXQgdGhlIGZpbGVu
YW1lIHNob3VsZCBiZSBwcmVmaXhlZCB3aXRoLCBub3QgdGhlIGZ1bGwgcGF0aC4KLVdFQkNPUkVf
RVhQT1JUIFN0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxh
dGZvcm1GaWxlSGFuZGxlJik7Ci1XRUJDT1JFX0VYUE9SVCBQbGF0Zm9ybUZpbGVIYW5kbGUgb3Bl
bkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUpOwotV0VCQ09SRV9FWFBPUlQg
dm9pZCBjbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlJik7Ci0vLyBSZXR1cm5zIHRoZSByZXN1
bHRpbmcgb2Zmc2V0IGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlsZSBpZiBzdWNjZXNzZnVs
LCAtMSBvdGhlcndpc2UuCi1XRUJDT1JFX0VYUE9SVCBsb25nIGxvbmcgc2Vla0ZpbGUoUGxhdGZv
cm1GaWxlSGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0LCBGaWxlU2Vla09yaWdpbik7Ci1ib29sIHRy
dW5jYXRlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQpOwotLy8gUmV0
dXJucyBudW1iZXIgb2YgYnl0ZXMgYWN0dWFsbHkgcmVhZCBpZiBzdWNjZXNzZnVsLCAtMSBvdGhl
cndpc2UuCi1XRUJDT1JFX0VYUE9SVCBpbnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxl
LCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsKLS8vIFJldHVybnMgbnVtYmVyIG9mIGJ5
dGVzIGFjdHVhbGx5IHdyaXR0ZW4gaWYgc3VjY2Vzc2Z1bCwgLTEgb3RoZXJ3aXNlLgotV0VCQ09S
RV9FWFBPUlQgaW50IHJlYWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUsIGNoYXIqIGRhdGEs
IGludCBsZW5ndGgpOwotCi1XRUJDT1JFX0VYUE9SVCBQbGF0Zm9ybUZpbGVIYW5kbGUgb3BlbkFu
ZExvY2tGaWxlKGNvbnN0IFN0cmluZyYsIEZpbGVPcGVuTW9kZSwgT3B0aW9uU2V0PEZpbGVMb2Nr
TW9kZT4gPSBGaWxlTG9ja01vZGU6OkV4Y2x1c2l2ZSk7Ci1XRUJDT1JFX0VYUE9SVCB2b2lkIHVu
bG9ja0FuZENsb3NlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUpOwotCi0vLyBBcHBlbmRzIHRoZSBj
b250ZW50cyBvZiB0aGUgZmlsZSBmb3VuZCBhdCAncGF0aCcgdG8gdGhlIG9wZW4gUGxhdGZvcm1G
aWxlSGFuZGxlLgotLy8gUmV0dXJucyB0cnVlIGlmIHRoZSB3cml0ZSB3YXMgc3VjY2Vzc2Z1bCwg
ZmFsc2UgaWYgaXQgd2FzIG5vdC4KLWJvb2wgYXBwZW5kRmlsZUNvbnRlbnRzVG9GaWxlSGFuZGxl
KGNvbnN0IFN0cmluZyYgcGF0aCwgUGxhdGZvcm1GaWxlSGFuZGxlJik7Ci0KLS8vIEhhcmQgbGlu
a3MgYSBmaWxlIGlmIHBvc3NpYmxlLCBjb3BpZXMgaXQgaWYgbm90LgotYm9vbCBoYXJkTGlua09y
Q29weUZpbGUoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb24p
OwotCi0jaWYgVVNFKEZJTEVfTE9DSykKLVdFQkNPUkVfRVhQT1JUIGJvb2wgbG9ja0ZpbGUoUGxh
dGZvcm1GaWxlSGFuZGxlLCBPcHRpb25TZXQ8RmlsZUxvY2tNb2RlPik7Ci1XRUJDT1JFX0VYUE9S
VCBib29sIHVubG9ja0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlKTsKLSNlbmRpZgotCi0vLyBFbmNv
ZGUgYSBzdHJpbmcgZm9yIHVzZSB3aXRoaW4gYSBmaWxlIG5hbWUuCi1XRUJDT1JFX0VYUE9SVCBT
dHJpbmcgZW5jb2RlRm9yRmlsZU5hbWUoY29uc3QgU3RyaW5nJik7Ci1XRUJDT1JFX0VYUE9SVCBT
dHJpbmcgZGVjb2RlRnJvbUZpbGVuYW1lKGNvbnN0IFN0cmluZyYpOwotCi1XRUJDT1JFX0VYUE9S
VCBib29sIGZpbGVzSGF2ZVNhbWVWb2x1bWUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7
Ci0KLSNpZiBVU0UoQ0YpCi1SZXRhaW5QdHI8Q0ZVUkxSZWY+IHBhdGhBc1VSTChjb25zdCBTdHJp
bmcmKTsKLSNlbmRpZgotCi0jaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCi1TdHJp
bmcgZmlsZW5hbWVGb3JEaXNwbGF5KGNvbnN0IFN0cmluZyYpOwotI2VuZGlmCi0KLSNpZiBQTEFU
Rk9STShXSU4pCi1XRUJDT1JFX0VYUE9SVCBTdHJpbmcgbG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdl
RGlyZWN0b3J5KCk7Ci1TdHJpbmcgcm9hbWluZ1VzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3Rvcnko
KTsKLSNlbmRpZgotCi0jaWYgUExBVEZPUk0oQ09DT0EpCi1XRUJDT1JFX0VYUE9SVCBOU1N0cmlu
ZyAqY3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KE5TU3RyaW5nICpkaXJlY3RvcnlQcmVmaXgpOwot
V0VCQ09SRV9FWFBPUlQgYm9vbCBkZWxldGVOb25FbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcm
KTsKLSNlbmRpZgotCi0jaWYgUExBVEZPUk0oV0lOX0NBSVJPKQotV0VCQ09SRV9FWFBPUlQgU3Ry
aW5nIGNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeSgpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCBkZWxl
dGVOb25FbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKLSNlbmRpZgotCi1XRUJDT1JFX0VY
UE9SVCBTdHJpbmcgcmVhbFBhdGgoY29uc3QgU3RyaW5nJik7Ci0KLWNsYXNzIE1hcHBlZEZpbGVE
YXRhIHsKLXB1YmxpYzoKLSAgICBNYXBwZWRGaWxlRGF0YSgpIHsgfQotICAgIE1hcHBlZEZpbGVE
YXRhKE1hcHBlZEZpbGVEYXRhJiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIE1hcHBlZEZpbGVEYXRh
KGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIGJvb2wmIHN1Y2Nlc3MpOwotICAgIFdFQkNPUkVfRVhQ
T1JUIH5NYXBwZWRGaWxlRGF0YSgpOwotICAgIE1hcHBlZEZpbGVEYXRhJiBvcGVyYXRvcj0oTWFw
cGVkRmlsZURhdGEmJik7Ci0KLSAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyBy
ZXR1cm4gISFtX2ZpbGVEYXRhOyB9Ci0gICAgY29uc3Qgdm9pZCogZGF0YSgpIGNvbnN0IHsgcmV0
dXJuIG1fZmlsZURhdGE7IH0KLSAgICB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9m
aWxlU2l6ZTsgfQotCi1wcml2YXRlOgotICAgIHZvaWQqIG1fZmlsZURhdGEgeyBudWxscHRyIH07
Ci0gICAgdW5zaWduZWQgbV9maWxlU2l6ZSB7IDAgfTsKLX07Ci0KLWlubGluZSBNYXBwZWRGaWxl
RGF0YTo6TWFwcGVkRmlsZURhdGEoTWFwcGVkRmlsZURhdGEmJiBvdGhlcikKLSAgICA6IG1fZmls
ZURhdGEoc3RkOjpleGNoYW5nZShvdGhlci5tX2ZpbGVEYXRhLCBudWxscHRyKSkKLSAgICAsIG1f
ZmlsZVNpemUoc3RkOjpleGNoYW5nZShvdGhlci5tX2ZpbGVTaXplLCAwKSkKLXsKLX0KLQotaW5s
aW5lIE1hcHBlZEZpbGVEYXRhJiBNYXBwZWRGaWxlRGF0YTo6b3BlcmF0b3I9KE1hcHBlZEZpbGVE
YXRhJiYgb3RoZXIpCi17Ci0gICAgbV9maWxlRGF0YSA9IHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9m
aWxlRGF0YSwgbnVsbHB0cik7Ci0gICAgbV9maWxlU2l6ZSA9IHN0ZDo6ZXhjaGFuZ2Uob3RoZXIu
bV9maWxlU2l6ZSwgMCk7Ci0gICAgcmV0dXJuICp0aGlzOwotfQotCi19IC8vIG5hbWVzcGFjZSBG
aWxlU3lzdGVtCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2hhcmVkQnVmZmVyLmgKaW5kZXggODEzMThlOGIyOWFlNWEwZjViOTYwM2M4MjU1NzkxY2RiYzIw
YTRlMS4uZWMzNzEzNDFhYjk0OTViN2QzNTc2MTM1MWIyYjA5YjEzNWEzZWYzYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTI2LDggKzI2LDggQEAKIAogI3ByYWdt
YSBvbmNlCiAKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvQXJyYXlCdWZmZXIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3
dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NvdXJjZXNHTGliLnR4dCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NvdXJjZXNH
TGliLnR4dAppbmRleCAyNzczYzJhMDg4YjYwZmIxMzk2OTJkNWY0MGQwYmVmYzNmZWMzY2M0Li4w
OTBiODRhNDhjMTAzZDNkNTkzMTQxZDkwZTJiYmI0YWJmMmM1YmE3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Tb3VyY2VzR0xpYi50eHQKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU291cmNlc0dMaWIudHh0CkBAIC0yNSw3ICsyNSw2IEBAIHBsYXRmb3JtL2F1ZGlv
L2dsaWIvQXVkaW9CdXNHTGliLmNwcAogCiBwbGF0Zm9ybS9nbGliL0V2ZW50TG9vcEdsaWIuY3Bw
CiBwbGF0Zm9ybS9nbGliL0ZpbGVNb25pdG9yR0xpYi5jcHAKLXBsYXRmb3JtL2dsaWIvRmlsZVN5
c3RlbUdsaWIuY3BwCiBwbGF0Zm9ybS9nbGliL0tleWVkRGVjb2RlckdsaWIuY3BwCiBwbGF0Zm9y
bS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwCiBwbGF0Zm9ybS9nbGliL0xvd1Bvd2VyTW9kZU5v
dGlmaWVyR0xpYi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0Zp
bGVTeXN0ZW1DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9GaWxlU3lzdGVtQ0Yu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwODQ3MGEwOGZhNWQyZjQ1MmU2Yzkz
ODcwMWM2ZDkyNmNhNjA5ZjAzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0ZpbGVTeXN0ZW1DRi5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSw3NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAy
MDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
IDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFt
ZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJG
aWxlU3lzdGVtLmgiCi0KLSNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9DRlN0cmluZy5oPgotI2lu
Y2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0j
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
Q1N0cmluZyBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5n
JiBwYXRoKQotewotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZTdHJpbmcgPSBwYXRoLmNy
ZWF0ZUNGU3RyaW5nKCk7Ci0KLSAgICBpZiAoIWNmU3RyaW5nKQotICAgICAgICByZXR1cm4gQ1N0
cmluZygpOwotCi0gICAgQ0ZJbmRleCBzaXplID0gQ0ZTdHJpbmdHZXRNYXhpbXVtU2l6ZU9mRmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNmU3RyaW5nLmdldCgpKTsKLQotICAgIFZlY3RvcjxjaGFy
PiBidWZmZXIoc2l6ZSk7Ci0KLSAgICBpZiAoIUNGU3RyaW5nR2V0RmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKGNmU3RyaW5nLmdldCgpLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKSkgewot
ICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBnZXQgZmlsZXN5c3RlbSByZXByZXNlbnRhdGlv
biB0byBjcmVhdGUgQ1N0cmluZyBmcm9tIGNmU3RyaW5nIik7Ci0gICAgICAgIHJldHVybiBDU3Ry
aW5nKCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIENTdHJpbmcoYnVmZmVyLmRhdGEoKSwgc3RybGVu
KGJ1ZmZlci5kYXRhKCkpKTsKLX0KLQotU3RyaW5nIEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgY2hhciogZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KQotewotICAgIHJldHVybiBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24p
KS5nZXQoKTsKLX0KLQotUmV0YWluUHRyPENGVVJMUmVmPiBGaWxlU3lzdGVtOjpwYXRoQXNVUkwo
Y29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIENGVVJMUGF0aFN0eWxlIHBhdGhTdHlsZTsKLSNp
ZiBQTEFURk9STShXSU4pCi0gICAgcGF0aFN0eWxlID0ga0NGVVJMV2luZG93c1BhdGhTdHlsZTsK
LSNlbHNlCi0gICAgcGF0aFN0eWxlID0ga0NGVVJMUE9TSVhQYXRoU3R5bGU7Ci0jZW5kaWYKLSAg
ICByZXR1cm4gYWRvcHRDRihDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aCgwLCBwYXRoLmNy
ZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIHBhdGhTdHlsZSwgRkFMU0UpKTsKLX0KLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
RmlsZU1vbml0b3JDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0ZpbGVN
b25pdG9yQ29jb2EubW0KaW5kZXggMWFiM2MzMzRjNjlkZmZhMzY0OGFiMDBhNDU1OGQ5ZjI3ZTQz
MDYwMC4uY2M3ZmU2YjZjZGUxMGVkNGNhNDU2ZTQ2YmUyOGEwNGY2ODcyNDc0YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRmlsZU1vbml0b3JDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9GaWxlTW9uaXRvckNvY29hLm1tCkBAIC0y
Niw5ICsyNiw5IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkZpbGVNb25pdG9yLmgi
CiAKLSNpbXBvcnQgIkZpbGVTeXN0ZW0uaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQg
PHd0Zi9CbG9ja1B0ci5oPgorI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvRmlsZVN5c3RlbUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRmls
ZVN5c3RlbUNvY29hLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMzhiMGM4MzAz
ZTdiYTEwZDQwNTMzY2JjZDE1ZGEzM2IwOTY5ZTNjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0ZpbGVT
eXN0ZW1Db2NvYS5tbQorKysgL2Rldi9udWxsCkBAIC0xLDE0MyArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDA3LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4gCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4gCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgi
QXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4g
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29u
ZmlnLmgiCi0jaW1wb3J0ICJGaWxlU3lzdGVtLmgiCi0KLUBpbnRlcmZhY2UgV2ViRmlsZU1hbmFn
ZXJEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxOU0ZpbGVNYW5hZ2VyRGVsZWdhdGU+Ci1AZW5kCi0KLUBp
bXBsZW1lbnRhdGlvbiBXZWJGaWxlTWFuYWdlckRlbGVnYXRlCi0KLS0gKEJPT0wpZmlsZU1hbmFn
ZXI6KE5TRmlsZU1hbmFnZXIgKilmaWxlTWFuYWdlciBzaG91bGRQcm9jZWVkQWZ0ZXJFcnJvcjoo
TlNFcnJvciAqKWVycm9yIG1vdmluZ0l0ZW1BdFVSTDooTlNVUkwgKilzcmNVUkwgdG9VUkw6KE5T
VVJMICopZHN0VVJMCi17Ci0gICAgVU5VU0VEX1BBUkFNKGZpbGVNYW5hZ2VyKTsKLSAgICBVTlVT
RURfUEFSQU0oc3JjVVJMKTsKLSAgICBVTlVTRURfUEFSQU0oZHN0VVJMKTsgICAgCi0gICAgcmV0
dXJuIGVycm9yLmNvZGUgPT0gTlNGaWxlV3JpdGVGaWxlRXhpc3RzRXJyb3I7Ci19Ci0KLUBlbmQK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgRmlsZVN5c3RlbSB7Ci0KLVN0cmlu
ZyBob21lRGlyZWN0b3J5UGF0aCgpCi17Ci0gICAgcmV0dXJuIE5TSG9tZURpcmVjdG9yeSgpOwot
fQotCi1TdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRm
b3JtRmlsZUhhbmRsZSYgcGxhdGZvcm1GaWxlSGFuZGxlKQotewotICAgIHBsYXRmb3JtRmlsZUhh
bmRsZSA9IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7Ci0gICAgCi0gICAgVmVjdG9yPGNoYXI+
IHRlbXBvcmFyeUZpbGVQYXRoKFBBVEhfTUFYKTsKLSAgICBpZiAoIWNvbmZzdHIoX0NTX0RBUldJ
Tl9VU0VSX1RFTVBfRElSLCB0ZW1wb3JhcnlGaWxlUGF0aC5kYXRhKCksIHRlbXBvcmFyeUZpbGVQ
YXRoLnNpemUoKSkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIC8vIFNocmluayB0
aGUgdmVjdG9yLiAgIAotICAgIHRlbXBvcmFyeUZpbGVQYXRoLnNocmluayhzdHJsZW4odGVtcG9y
YXJ5RmlsZVBhdGguZGF0YSgpKSk7Ci0KLSAgICAvLyBGSVhNRTogQ2hhbmdlIHRvIGEgcnVudGlt
ZSBhc3NlcnRpb24gdGhhdCB0aGUgcGF0aCBlbmRzIHdpdGggYSBzbGFzaCBvbmNlIDxyZGFyOi8v
cHJvYmxlbS8yMzU3OTA3Nz4gaXMKLSAgICAvLyBmaXhlZCBpbiBhbGwgaU9TIFNpbXVsYXRvciB2
ZXJzaW9ucyB0aGF0IHdlIHVzZS4KLSAgICBpZiAodGVtcG9yYXJ5RmlsZVBhdGgubGFzdCgpICE9
ICcvJykKLSAgICAgICAgdGVtcG9yYXJ5RmlsZVBhdGguYXBwZW5kKCcvJyk7Ci0KLSAgICAvLyBB
cHBlbmQgdGhlIGZpbGUgbmFtZS4KLSAgICBDU3RyaW5nIHByZWZpeFV0ZjggPSBwcmVmaXgudXRm
OCgpOwotICAgIHRlbXBvcmFyeUZpbGVQYXRoLmFwcGVuZChwcmVmaXhVdGY4LmRhdGEoKSwgcHJl
Zml4VXRmOC5sZW5ndGgoKSk7Ci0gICAgdGVtcG9yYXJ5RmlsZVBhdGguYXBwZW5kKCJYWFhYWFgi
LCA2KTsKLSAgICB0ZW1wb3JhcnlGaWxlUGF0aC5hcHBlbmQoJ1wwJyk7Ci0KLSAgICBwbGF0Zm9y
bUZpbGVIYW5kbGUgPSBta3N0ZW1wKHRlbXBvcmFyeUZpbGVQYXRoLmRhdGEoKSk7Ci0gICAgaWYg
KHBsYXRmb3JtRmlsZUhhbmRsZSA9PSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQotICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOCh0ZW1wb3Jh
cnlGaWxlUGF0aC5kYXRhKCkpOwotfQotCi1ib29sIG1vdmVGaWxlKGNvbnN0IFN0cmluZyYgb2xk
UGF0aCwgY29uc3QgU3RyaW5nJiBuZXdQYXRoKQotewotICAgIC8vIE92ZXJ3cml0ZSBleGlzdGlu
ZyBmaWxlcy4KLSAgICBhdXRvIG1hbmFnZXIgPSBhZG9wdE5TKFtbTlNGaWxlTWFuYWdlciBhbGxv
Y10gaW5pdF0pOwotICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbV2ViRmlsZU1hbmFnZXJE
ZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwotICAgIFttYW5hZ2VyIHNldERlbGVnYXRlOmRlbGVnYXRl
LmdldCgpXTsKLSAgICAKLSAgICBOU0Vycm9yICplcnJvciA9IG5pbDsKLSAgICBib29sIHN1Y2Nl
c3MgPSBbbWFuYWdlciBtb3ZlSXRlbUF0VVJMOltOU1VSTCBmaWxlVVJMV2l0aFBhdGg6b2xkUGF0
aF0gdG9VUkw6W05TVVJMIGZpbGVVUkxXaXRoUGF0aDpuZXdQYXRoXSBlcnJvcjomZXJyb3JdOwot
ICAgIGlmICghc3VjY2VzcykKLSAgICAgICAgTlNMb2coQCJFcnJvciBpbiBtb3ZlRmlsZTogJUAi
LCBlcnJvcik7Ci0gICAgcmV0dXJuIHN1Y2Nlc3M7Ci19Ci0KLWJvb2wgZ2V0Vm9sdW1lRnJlZVNw
YWNlKGNvbnN0IFN0cmluZyYgcGF0aCwgdWludDY0X3QmIGZyZWVTcGFjZSkKLXsKLSAgICBOU0Rp
Y3Rpb25hcnkgKmZpbGVTeXN0ZW1BdHRyaWJ1dGVzRGljdGlvbmFyeSA9IFtbTlNGaWxlTWFuYWdl
ciBkZWZhdWx0TWFuYWdlcl0gYXR0cmlidXRlc09mRmlsZVN5c3RlbUZvclBhdGg6KE5TU3RyaW5n
ICopcGF0aCBlcnJvcjpOVUxMXTsKLSAgICBpZiAoIWZpbGVTeXN0ZW1BdHRyaWJ1dGVzRGljdGlv
bmFyeSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGZyZWVTcGFjZSA9IFtbZmlsZVN5c3Rl
bUF0dHJpYnV0ZXNEaWN0aW9uYXJ5IG9iamVjdEZvcktleTpOU0ZpbGVTeXN0ZW1GcmVlU2l6ZV0g
dW5zaWduZWRMb25nTG9uZ1ZhbHVlXTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotTlNTdHJpbmcg
KmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShOU1N0cmluZyAqZGlyZWN0b3J5UHJlZml4KQotewot
ICAgIE5TU3RyaW5nICp0ZW1wRGlyZWN0b3J5ID0gTlNUZW1wb3JhcnlEaXJlY3RvcnkoKTsKLSAg
ICBpZiAoIXRlbXBEaXJlY3RvcnkgfHwgIVt0ZW1wRGlyZWN0b3J5IGxlbmd0aF0pCi0gICAgICAg
IHJldHVybiBuaWw7Ci0KLSAgICBpZiAoIWRpcmVjdG9yeVByZWZpeCB8fCAhW2RpcmVjdG9yeVBy
ZWZpeCBsZW5ndGhdKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgTlNTdHJpbmcgKnRlbXBE
aXJlY3RvcnlDb21wb25lbnQgPSBbZGlyZWN0b3J5UHJlZml4IHN0cmluZ0J5QXBwZW5kaW5nU3Ry
aW5nOkAiLVhYWFhYWFhYIl07Ci0gICAgY29uc3QgY2hhciogdGVtcERpcmVjdG9yeUNTdHJpbmcg
PSBbW3RlbXBEaXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OnRlbXBEaXJl
Y3RvcnlDb21wb25lbnRdIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbl07Ci0gICAgaWYgKCF0ZW1w
RGlyZWN0b3J5Q1N0cmluZykKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIGNvbnN0IHNpemVf
dCBsZW5ndGggPSBzdHJsZW4odGVtcERpcmVjdG9yeUNTdHJpbmcpOwotICAgIEFTU0VSVChsZW5n
dGggPD0gTUFYUEFUSExFTik7Ci0gICAgaWYgKGxlbmd0aCA+IE1BWFBBVEhMRU4pCi0gICAgICAg
IHJldHVybiBuaWw7Ci0KLSAgICBjb25zdCBzaXplX3QgbGVuZ3RoUGx1c051bGxUZXJtaW5hdG9y
ID0gbGVuZ3RoICsgMTsKLSAgICBWZWN0b3I8Y2hhciwgTUFYUEFUSExFTiArIDE+IHBhdGgobGVu
Z3RoUGx1c051bGxUZXJtaW5hdG9yKTsKLSAgICBtZW1jcHkocGF0aC5kYXRhKCksIHRlbXBEaXJl
Y3RvcnlDU3RyaW5nLCBsZW5ndGhQbHVzTnVsbFRlcm1pbmF0b3IpOwotCi0gICAgaWYgKCFta2R0
ZW1wKHBhdGguZGF0YSgpKSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIHJldHVybiBbW05T
RmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIHN0cmluZ1dpdGhGaWxlU3lzdGVtUmVwcmVzZW50
YXRpb246cGF0aC5kYXRhKCkgbGVuZ3RoOmxlbmd0aF07Ci19Ci0KLWJvb2wgZGVsZXRlTm9uRW1w
dHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIHJldHVybiBbW05TRmlsZU1h
bmFnZXIgZGVmYXVsdE1hbmFnZXJdIHJlbW92ZUl0ZW1BdFBhdGg6cGF0aCBlcnJvcjpuaWxdOwot
fQotCi19IC8vIG5hbWVzcGFjZSBGaWxlU3lzdGVtCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0ZpbGVNb25pdG9yR0xpYi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0ZpbGVNb25pdG9yR0xpYi5jcHAKaW5k
ZXggNDYzZjMyNzZjMjRlMjUxYmViNGFhMDhiMGI5ODk4NmU4Y2M5NjkyMy4uNWE5ODJmNDk0OTIz
N2NiMjBhOWY1NGNmODhlMmFkZWU0OGQ0Zjk2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2xpYi9GaWxlTW9uaXRvckdMaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dsaWIvRmlsZU1vbml0b3JHTGliLmNwcApAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkZpbGVNb25pdG9yLmgiCiAKLSNpbmNsdWRlICJGaWxl
U3lzdGVtLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvZ2xp
Yi9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvRmlsZVN5c3RlbUds
aWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhNmMzZGY5NGRkMzIyMTM0MzAwYzdiYmQy
NmJiYjA4OTA0NjU2MzEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSw0NzAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywg
MjAwOSBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlcgotICogQ29weXJpZ2h0IChDKSAyMDA4IENv
bGxhYm9yYSwgTHRkLgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAxMCBNb3Rvcm9sYSBNb2Jp
bGl0eSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICog
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAq
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAq
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIkZpbGVTeXN0ZW0uaCIKLQotI2luY2x1ZGUgIkZpbGVNZXRhZGF0YS5oIgotI2luY2x1
ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSA8Z2lvL2dmaWxlZGVzY3JpcHRvcmJhc2Vk
Lmg+Ci0jaW5jbHVkZSA8Z2lvL2dpby5oPgotI2luY2x1ZGUgPGdsaWIuaD4KLSNpbmNsdWRlIDxn
bGliL2dzdGRpby5oPgotI2luY2x1ZGUgPHN5cy9maWxlLmg+Ci0jaW5jbHVkZSA8d3RmL0VudW1U
cmFpdHMuaD4KLSNpbmNsdWRlIDx3dGYvVVVJRC5oPgotI2luY2x1ZGUgPHd0Zi9nbGliL0dMaWJV
dGlsaXRpZXMuaD4KLSNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3Rm
L2dsaWIvR1VuaXF1ZVB0ci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIEZpbGVTeXN0ZW0gewot
Ci0vKiBPbiBsaW51eCBmaWxlIG5hbWVzIGFyZSBqdXN0IHJhdyBieXRlcywgc28gYWxzbyBzdHJp
bmdzIHRoYXQgY2Fubm90IGJlIGVuY29kZWQgaW4gYW55IHdheQotICogYXJlIHZhbGlkIGZpbGUg
bmFtZXMuIFRoaXMgbWVhbiB0aGF0IHdlIGNhbm5vdCBqdXN0IHN0b3JlIGEgZmlsZSBuYW1lIGFz
LWlzIGluIGEgU3RyaW5nCi0gKiBidXQgd2UgaGF2ZSB0byBlc2NhcGUgaXQuCi0gKiBPbiBXaW5k
b3dzIHRoZSBHTGliIGZpbGUgbmFtZSBlbmNvZGluZyBpcyBhbHdheXMgVVRGLTggc28gd2UgY2Fu
IG9wdGltaXplIHRoaXMgY2FzZS4gKi8KLVN0cmluZyBzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGNvbnN0IGNoYXIqIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbikKLXsKLSAgICBp
ZiAoIWZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbikKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwot
Ci0jaWYgT1MoV0lORE9XUykKLSAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChmaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24pOwotI2Vsc2UKLSAgICBHVW5pcXVlUHRyPGdjaGFyPiBlc2NhcGVkU3Ry
aW5nKGdfdXJpX2VzY2FwZV9zdHJpbmcoZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uLCAiLzoiLCBG
QUxTRSkpOwotICAgIHJldHVybiBlc2NhcGVkU3RyaW5nLmdldCgpOwotI2VuZGlmCi19Ci0KLXN0
YXRpYyBHVW5pcXVlUHRyPGNoYXI+IHVuZXNjYXBlZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYgcGF0
aCkKLXsKLSAgICBpZiAocGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwot
I2lmIE9TKFdJTkRPV1MpCi0gICAgcmV0dXJuIEdVbmlxdWVQdHI8Y2hhcj4oZ19zdHJkdXAocGF0
aC51dGY4KCkuZGF0YSgpKSk7Ci0jZWxzZQotICAgIHJldHVybiBHVW5pcXVlUHRyPGNoYXI+KGdf
dXJpX3VuZXNjYXBlX3N0cmluZyhwYXRoLnV0ZjgoKS5kYXRhKCksIG51bGxwdHIpKTsKLSNlbmRp
ZgotfQotCi1DU3RyaW5nIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIHBh
dGgpCi17Ci0jaWYgT1MoV0lORE9XUykKLSAgICByZXR1cm4gcGF0aC51dGY4KCk7Ci0jZWxzZQot
ICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUocGF0aCk7
Ci0gICAgcmV0dXJuIGZpbGVuYW1lLmdldCgpOwotI2VuZGlmCi19Ci0KLS8vIENvbnZlcnRzIGEg
c3RyaW5nIHRvIHNvbWV0aGluZyBzdWl0YWJsZSB0byBiZSBkaXNwbGF5ZWQgdG8gdGhlIHVzZXIu
Ci1TdHJpbmcgZmlsZW5hbWVGb3JEaXNwbGF5KGNvbnN0IFN0cmluZyYgc3RyaW5nKQotewotI2lm
IE9TKFdJTkRPV1MpCi0gICAgcmV0dXJuIHN0cmluZzsKLSNlbHNlCi0gICAgR1VuaXF1ZVB0cjxn
Y2hhcj4gZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShzdHJpbmcpOwotICAgIGlmICghZmls
ZW5hbWUpCi0gICAgICAgIHJldHVybiBzdHJpbmc7Ci0KLSAgICBHVW5pcXVlUHRyPGdjaGFyPiBk
aXNwbGF5KGdfZmlsZW5hbWVfdG9fdXRmOChmaWxlbmFtZS5nZXQoKSwgLTEsIG51bGxwdHIsIG51
bGxwdHIsIG51bGxwdHIpKTsKLSAgICBpZiAoIWRpc3BsYXkpCi0gICAgICAgIHJldHVybiBzdHJp
bmc7Ci0KLSAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChkaXNwbGF5LmdldCgpKTsKLSNlbmRp
ZgotfQotCi1ib29sIGZpbGVFeGlzdHMoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIEdVbmlx
dWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUocGF0aCk7Ci0gICAgcmV0
dXJuIGZpbGVuYW1lID8gZ19maWxlX3Rlc3QoZmlsZW5hbWUuZ2V0KCksIEdfRklMRV9URVNUX0VY
SVNUUykgOiBmYWxzZTsKLX0KLQotYm9vbCBkZWxldGVGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkK
LXsKLSAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHBh
dGgpOwotICAgIHJldHVybiBmaWxlbmFtZSA/IGdfcmVtb3ZlKGZpbGVuYW1lLmdldCgpKSAhPSAt
MSA6IGZhbHNlOwotfQotCi1ib29sIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYg
cGF0aCkKLXsKLSAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVu
YW1lKHBhdGgpOwotICAgIHJldHVybiBmaWxlbmFtZSA/IGdfcm1kaXIoZmlsZW5hbWUuZ2V0KCkp
ICE9IC0xIDogZmFsc2U7Ci19Ci0KLXN0YXRpYyBib29sIGdldEZpbGVTdGF0KGNvbnN0IFN0cmlu
ZyYgcGF0aCwgR1N0YXRCdWYqIHN0YXRCdWZmZXIpCi17Ci0gICAgR1VuaXF1ZVB0cjxnY2hhcj4g
ZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShwYXRoKTsKLSAgICBpZiAoIWZpbGVuYW1lKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gZ19zdGF0KGZpbGVuYW1lLmdldCgp
LCBzdGF0QnVmZmVyKSAhPSAtMTsKLX0KLQotc3RhdGljIGJvb2wgZ2V0RmlsZUxTdGF0KGNvbnN0
IFN0cmluZyYgcGF0aCwgR1N0YXRCdWYqIHN0YXRCdWZmZXIpCi17Ci0gICAgR1VuaXF1ZVB0cjxn
Y2hhcj4gZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShwYXRoKTsKLSAgICBpZiAoIWZpbGVu
YW1lKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gZ19sc3RhdChmaWxlbmFt
ZS5nZXQoKSwgc3RhdEJ1ZmZlcikgIT0gLTE7Ci19Ci0KLWJvb2wgZ2V0RmlsZVNpemUoY29uc3Qg
U3RyaW5nJiBwYXRoLCBsb25nIGxvbmcmIHJlc3VsdFNpemUpCi17Ci0gICAgR1N0YXRCdWYgc3Rh
dFJlc3VsdDsKLSAgICBpZiAoIWdldEZpbGVTdGF0KHBhdGgsICZzdGF0UmVzdWx0KSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmVzdWx0U2l6ZSA9IHN0YXRSZXN1bHQuc3Rfc2l6ZTsK
LSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBnZXRGaWxlU2l6ZShQbGF0Zm9ybUZpbGVIYW5k
bGUgaGFuZGxlLCBsb25nIGxvbmcmIHJlc3VsdFNpemUpCi17Ci0gICAgYXV0byBpbmZvID0gZ19m
aWxlX2lvX3N0cmVhbV9xdWVyeV9pbmZvKGhhbmRsZSwgR19GSUxFX0FUVFJJQlVURV9TVEFOREFS
RF9TSVpFLCBudWxscHRyLCBudWxscHRyKTsKLSAgICBpZiAoIWluZm8pCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIHJlc3VsdFNpemUgPSBnX2ZpbGVfaW5mb19nZXRfc2l6ZShpbmZvKTsK
LSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotT3B0aW9uYWw8V2FsbFRpbWU+IGdldEZpbGVDcmVhdGlv
blRpbWUoY29uc3QgU3RyaW5nJikKLXsKLSAgICAvLyBGSVhNRTogSXMgdGhlcmUgYSB3YXkgdG8g
cmV0cmlldmUgZmlsZSBjcmVhdGlvbiB0aW1lIHdpdGggR3RrIG9uIHBsYXRmb3JtcyB0aGF0IHN1
cHBvcnQgaXQ/Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLX0KLQotT3B0aW9uYWw8V2FsbFRp
bWU+IGdldEZpbGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBH
U3RhdEJ1ZiBzdGF0UmVzdWx0OwotICAgIGlmICghZ2V0RmlsZVN0YXQocGF0aCwgJnN0YXRSZXN1
bHQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgcmV0dXJuIFdhbGxUaW1l
Ojpmcm9tUmF3U2Vjb25kcyhzdGF0UmVzdWx0LnN0X210aW1lKTsKLX0KLQotc3RhdGljIEZpbGVN
ZXRhZGF0YTo6VHlwZSB0b0ZpbGVNZXRhdGFUeXBlKEdTdGF0QnVmIHN0YXRSZXN1bHQpCi17Ci0g
ICAgaWYgKFNfSVNESVIoc3RhdFJlc3VsdC5zdF9tb2RlKSkKLSAgICAgICAgcmV0dXJuIEZpbGVN
ZXRhZGF0YTo6VHlwZTo6RGlyZWN0b3J5OwotICAgIGlmIChTX0lTTE5LKHN0YXRSZXN1bHQuc3Rf
bW9kZSkpCi0gICAgICAgIHJldHVybiBGaWxlTWV0YWRhdGE6OlR5cGU6OlN5bWJvbGljTGluazsK
LSAgICByZXR1cm4gRmlsZU1ldGFkYXRhOjpUeXBlOjpGaWxlOwotfQotCi1zdGF0aWMgT3B0aW9u
YWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGFVc2luZ0Z1bmN0aW9uKGNvbnN0IFN0cmluZyYg
cGF0aCwgYm9vbCAoKnN0YXRGdW5jKShjb25zdCBTdHJpbmcmLCBHU3RhdEJ1ZiopKQotewotICAg
IEdTdGF0QnVmIHN0YXRSZXN1bHQ7Ci0gICAgaWYgKCFzdGF0RnVuYyhwYXRoLCAmc3RhdFJlc3Vs
dCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBTdHJpbmcgZmlsZW5hbWUg
PSBwYXRoR2V0RmlsZU5hbWUocGF0aCk7Ci0gICAgYm9vbCBpc0hpZGRlbiA9ICFmaWxlbmFtZS5p
c0VtcHR5KCkgJiYgZmlsZW5hbWVbMF0gPT0gJy4nOwotCi0gICAgcmV0dXJuIEZpbGVNZXRhZGF0
YSB7Ci0gICAgICAgIFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhzdGF0UmVzdWx0LnN0X210aW1l
KSwKLSAgICAgICAgc3RhdFJlc3VsdC5zdF9zaXplLAotICAgICAgICBpc0hpZGRlbiwKLSAgICAg
ICAgdG9GaWxlTWV0YXRhVHlwZShzdGF0UmVzdWx0KQotICAgIH07Ci19Ci0KLU9wdGlvbmFsPEZp
bGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICByZXR1
cm4gZmlsZU1ldGFkYXRhVXNpbmdGdW5jdGlvbihwYXRoLCAmZ2V0RmlsZUxTdGF0KTsKLX0KLQot
T3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyhjb25z
dCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgcmV0dXJuIGZpbGVNZXRhZGF0YVVzaW5nRnVuY3Rpb24o
cGF0aCwgJmdldEZpbGVTdGF0KTsKLX0KLQotU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29tcG9uZW50KQotewotICAgIGlm
IChwYXRoLmVuZHNXaXRoKEdfRElSX1NFUEFSQVRPUl9TKSkKLSAgICAgICAgcmV0dXJuIHBhdGgg
KyBjb21wb25lbnQ7Ci0gICAgcmV0dXJuIHBhdGggKyBHX0RJUl9TRVBBUkFUT1JfUyArIGNvbXBv
bmVudDsKLX0KLQotU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMoU3RyaW5nVmlldyBw
YXRoLCBjb25zdCBWZWN0b3I8U3RyaW5nVmlldz4mIGNvbXBvbmVudHMpCi17Ci0gICAgU3RyaW5n
QnVpbGRlciBidWlsZGVyOwotICAgIGJ1aWxkZXIuYXBwZW5kKHBhdGgpOwotICAgIGZvciAoYXV0
byYgY29tcG9uZW50IDogY29tcG9uZW50cykgewotICAgICAgICBidWlsZGVyLmFwcGVuZChHX0RJ
Ul9TRVBBUkFUT1JfUyk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKGNvbXBvbmVudCk7Ci0gICAg
fQotICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Ci19Ci0KLWJvb2wgbWFrZUFsbERpcmVj
dG9yaWVzKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxl
bmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGgpOwotICAgIHJldHVybiBmaWxlbmFtZSA/IGdf
bWtkaXJfd2l0aF9wYXJlbnRzKGZpbGVuYW1lLmdldCgpLCBTX0lSV1hVKSAhPSAtMSA6IGZhbHNl
OwotfQotCi1TdHJpbmcgaG9tZURpcmVjdG9yeVBhdGgoKQotewotICAgIHJldHVybiBzdHJpbmdG
cm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGdfZ2V0X2hvbWVfZGlyKCkpOwotfQotCi1ib29s
IGNyZWF0ZVN5bWJvbGljTGluayhjb25zdCBTdHJpbmcmIHRhcmdldFBhdGgsIGNvbnN0IFN0cmlu
ZyYgc3ltYm9saWNMaW5rUGF0aCkKLXsKLSAgICBDU3RyaW5nIHRhcmdldFBhdGhGU1JlcCA9IGZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbih0YXJnZXRQYXRoKTsKLSAgICBpZiAoIXRhcmdldFBhdGhG
U1JlcC5kYXRhKCkgfHwgdGFyZ2V0UGF0aEZTUmVwLmRhdGEoKVswXSA9PSAnXDAnKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICBDU3RyaW5nIHN5bWJvbGljTGlua1BhdGhGU1JlcCA9IGZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihzeW1ib2xpY0xpbmtQYXRoKTsKLSAgICBpZiAoIXN5bWJv
bGljTGlua1BhdGhGU1JlcC5kYXRhKCkgfHwgc3ltYm9saWNMaW5rUGF0aEZTUmVwLmRhdGEoKVsw
XSA9PSAnXDAnKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gIXN5bWxpbmso
dGFyZ2V0UGF0aEZTUmVwLmRhdGEoKSwgc3ltYm9saWNMaW5rUGF0aEZTUmVwLmRhdGEoKSk7Ci19
Ci0KLVN0cmluZyBwYXRoR2V0RmlsZU5hbWUoY29uc3QgU3RyaW5nJiBwYXRoTmFtZSkKLXsKLSAg
ICBHVW5pcXVlUHRyPGdjaGFyPiB0bXBGaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGhO
YW1lKTsKLSAgICBpZiAoIXRtcEZpbGVuYW1lKQotICAgICAgICByZXR1cm4gcGF0aE5hbWU7Ci0K
LSAgICBHVW5pcXVlUHRyPGdjaGFyPiBiYXNlTmFtZShnX3BhdGhfZ2V0X2Jhc2VuYW1lKHRtcEZp
bGVuYW1lLmdldCgpKSk7Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoYmFzZU5hbWUuZ2V0
KCkpOwotfQotCi1ib29sIGdldFZvbHVtZUZyZWVTcGFjZShjb25zdCBTdHJpbmcmIHBhdGgsIHVp
bnQ2NF90JiBmcmVlU3BhY2UpCi17Ci0gICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUgPSB1
bmVzY2FwZWRGaWxlbmFtZShwYXRoKTsKLSAgICBpZiAoIWZpbGVuYW1lKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICBHUmVmUHRyPEdGaWxlPiBmaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9u
ZXdfZm9yX3BhdGgoZmlsZW5hbWUuZ2V0KCkpKTsKLSAgICBHUmVmUHRyPEdGaWxlSW5mbz4gZmls
ZUluZm8gPSBhZG9wdEdSZWYoZ19maWxlX3F1ZXJ5X2ZpbGVzeXN0ZW1faW5mbyhmaWxlLmdldCgp
LCBHX0ZJTEVfQVRUUklCVVRFX0ZJTEVTWVNURU1fRlJFRSwgMCwgMCkpOwotICAgIGlmICghZmls
ZUluZm8pCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGZyZWVTcGFjZSA9IGdfZmlsZV9p
bmZvX2dldF9hdHRyaWJ1dGVfdWludDY0KGZpbGVJbmZvLmdldCgpLCBHX0ZJTEVfQVRUUklCVVRF
X0ZJTEVTWVNURU1fRlJFRSk7Ci0gICAgcmV0dXJuICEhZnJlZVNwYWNlOwotfQotCi1TdHJpbmcg
ZGlyZWN0b3J5TmFtZShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgR1VuaXF1ZVB0cjxnY2hh
cj4gZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShwYXRoKTsKLSAgICBpZiAoIWZpbGVuYW1l
KQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICBHVW5pcXVlUHRyPGNoYXI+IGRpcm5h
bWUoZ19wYXRoX2dldF9kaXJuYW1lKGZpbGVuYW1lLmdldCgpKSk7Ci0gICAgcmV0dXJuIFN0cmlu
Zzo6ZnJvbVVURjgoZGlybmFtZS5nZXQoKSk7Ci19Ci0KLVZlY3RvcjxTdHJpbmc+IGxpc3REaXJl
Y3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGZpbHRlcikKLXsKLSAgICBW
ZWN0b3I8U3RyaW5nPiBlbnRyaWVzOwotCi0gICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUg
PSB1bmVzY2FwZWRGaWxlbmFtZShwYXRoKTsKLSAgICBpZiAoIWZpbGVuYW1lKQotICAgICAgICBy
ZXR1cm4gZW50cmllczsKLQotICAgIEdVbmlxdWVQdHI8R0Rpcj4gZGlyKGdfZGlyX29wZW4oZmls
ZW5hbWUuZ2V0KCksIDAsIG51bGxwdHIpKTsKLSAgICBpZiAoIWRpcikKLSAgICAgICAgcmV0dXJu
IGVudHJpZXM7Ci0KLSAgICBHVW5pcXVlUHRyPEdQYXR0ZXJuU3BlYz4gcHNwZWMoZ19wYXR0ZXJu
X3NwZWNfbmV3KChmaWx0ZXIudXRmOCgpKS5kYXRhKCkpKTsKLSAgICB3aGlsZSAoY29uc3QgY2hh
ciogbmFtZSA9IGdfZGlyX3JlYWRfbmFtZShkaXIuZ2V0KCkpKSB7Ci0gICAgICAgIGlmICghZ19w
YXR0ZXJuX21hdGNoX3N0cmluZyhwc3BlYy5nZXQoKSwgbmFtZSkpCi0gICAgICAgICAgICBjb250
aW51ZTsKLQotICAgICAgICBHVW5pcXVlUHRyPGdjaGFyPiBlbnRyeShnX2J1aWxkX2ZpbGVuYW1l
KGZpbGVuYW1lLmdldCgpLCBuYW1lLCBudWxscHRyKSk7Ci0gICAgICAgIGVudHJpZXMuYXBwZW5k
KHN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZW50cnkuZ2V0KCkpKTsKLSAgICB9
Ci0KLSAgICByZXR1cm4gZW50cmllczsKLX0KLQotU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNv
bnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKLXsKLSAgICBH
VW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZShnX3N0cmR1cF9wcmludGYoIiVzJXMiLCBwcmVmaXgu
dXRmOCgpLmRhdGEoKSwgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLnV0ZjgoKS5kYXRhKCkp
KTsKLSAgICBHVW5pcXVlUHRyPGdjaGFyPiB0ZW1wUGF0aChnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0
X3RtcF9kaXIoKSwgZmlsZW5hbWUuZ2V0KCksIE5VTEwpKTsKLSAgICBHUmVmUHRyPEdGaWxlPiBm
aWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgodGVtcFBhdGguZ2V0KCkpKTsKLQot
ICAgIGhhbmRsZSA9IGdfZmlsZV9jcmVhdGVfcmVhZHdyaXRlKGZpbGUuZ2V0KCksIEdfRklMRV9D
UkVBVEVfTk9ORSwgMCwgMCk7Ci0gICAgaWYgKCFpc0hhbmRsZVZhbGlkKGhhbmRsZSkpCi0gICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOCh0ZW1wUGF0
aC5nZXQoKSk7Ci19Ci0KLVBsYXRmb3JtRmlsZUhhbmRsZSBvcGVuRmlsZShjb25zdCBTdHJpbmcm
IHBhdGgsIEZpbGVPcGVuTW9kZSBtb2RlKQotewotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVu
YW1lID0gdW5lc2NhcGVkRmlsZW5hbWUocGF0aCk7Ci0gICAgaWYgKCFmaWxlbmFtZSkKLSAgICAg
ICAgcmV0dXJuIGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7Ci0KLSAgICBHUmVmUHRyPEdGaWxl
PiBmaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoZmlsZW5hbWUuZ2V0KCkpKTsK
LSAgICBHRmlsZUlPU3RyZWFtKiBpb1N0cmVhbSA9IDA7Ci0gICAgaWYgKG1vZGUgPT0gRmlsZU9w
ZW5Nb2RlOjpSZWFkKQotICAgICAgICBpb1N0cmVhbSA9IGdfZmlsZV9vcGVuX3JlYWR3cml0ZShm
aWxlLmdldCgpLCAwLCAwKTsKLSAgICBlbHNlIGlmIChtb2RlID09IEZpbGVPcGVuTW9kZTo6V3Jp
dGUpIHsKLSAgICAgICAgaWYgKGdfZmlsZV90ZXN0KGZpbGVuYW1lLmdldCgpLCBzdGF0aWNfY2Fz
dDxHRmlsZVRlc3Q+KEdfRklMRV9URVNUX0VYSVNUUyB8IEdfRklMRV9URVNUX0lTX1JFR1VMQVIp
KSkKLSAgICAgICAgICAgIGlvU3RyZWFtID0gZ19maWxlX29wZW5fcmVhZHdyaXRlKGZpbGUuZ2V0
KCksIDAsIDApOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBpb1N0cmVhbSA9IGdfZmlsZV9j
cmVhdGVfcmVhZHdyaXRlKGZpbGUuZ2V0KCksIEdfRklMRV9DUkVBVEVfTk9ORSwgMCwgMCk7Ci0g
ICAgfQotCi0gICAgcmV0dXJuIGlvU3RyZWFtOwotfQotCi12b2lkIGNsb3NlRmlsZShQbGF0Zm9y
bUZpbGVIYW5kbGUmIGhhbmRsZSkKLXsKLSAgICBpZiAoIWlzSGFuZGxlVmFsaWQoaGFuZGxlKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgZ19pb19zdHJlYW1fY2xvc2UoR19JT19TVFJFQU0oaGFu
ZGxlKSwgMCwgMCk7Ci0gICAgZ19vYmplY3RfdW5yZWYoaGFuZGxlKTsKLSAgICBoYW5kbGUgPSBp
bnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOwotfQotCi1sb25nIGxvbmcgc2Vla0ZpbGUoUGxhdGZv
cm1GaWxlSGFuZGxlIGhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCwgRmlsZVNlZWtPcmlnaW4gb3Jp
Z2luKQotewotICAgIEdTZWVrVHlwZSBzZWVrVHlwZSA9IEdfU0VFS19TRVQ7Ci0gICAgc3dpdGNo
IChvcmlnaW4pIHsKLSAgICBjYXNlIEZpbGVTZWVrT3JpZ2luOjpCZWdpbm5pbmc6Ci0gICAgICAg
IHNlZWtUeXBlID0gR19TRUVLX1NFVDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGaWxlU2Vl
a09yaWdpbjo6Q3VycmVudDoKLSAgICAgICAgc2Vla1R5cGUgPSBHX1NFRUtfQ1VSOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIEZpbGVTZWVrT3JpZ2luOjpFbmQ6Ci0gICAgICAgIHNlZWtUeXBl
ID0gR19TRUVLX0VORDsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotCi0gICAgaWYgKCFnX3NlZWthYmxlX3NlZWsoR19T
RUVLQUJMRShnX2lvX3N0cmVhbV9nZXRfaW5wdXRfc3RyZWFtKEdfSU9fU1RSRUFNKGhhbmRsZSkp
KSwKLSAgICAgICAgb2Zmc2V0LCBzZWVrVHlwZSwgMCwgMCkpCi0gICAgewotICAgICAgICByZXR1
cm4gLTE7Ci0gICAgfQotICAgIHJldHVybiBnX3NlZWthYmxlX3RlbGwoR19TRUVLQUJMRShnX2lv
X3N0cmVhbV9nZXRfaW5wdXRfc3RyZWFtKEdfSU9fU1RSRUFNKGhhbmRsZSkpKSk7Ci19Ci0KLWlu
dCB3cml0ZVRvRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBjb25zdCBjaGFyKiBkYXRh
LCBpbnQgbGVuZ3RoKQotewotICAgIGdzaXplIGJ5dGVzV3JpdHRlbjsKLSAgICBnX291dHB1dF9z
dHJlYW1fd3JpdGVfYWxsKGdfaW9fc3RyZWFtX2dldF9vdXRwdXRfc3RyZWFtKEdfSU9fU1RSRUFN
KGhhbmRsZSkpLAotICAgICAgICBkYXRhLCBsZW5ndGgsICZieXRlc1dyaXR0ZW4sIDAsIDApOwot
ICAgIHJldHVybiBieXRlc1dyaXR0ZW47Ci19Ci0KLWludCByZWFkRnJvbUZpbGUoUGxhdGZvcm1G
aWxlSGFuZGxlIGhhbmRsZSwgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKLXsKLSAgICBHVW5pcXVl
T3V0UHRyPEdFcnJvcj4gZXJyb3I7Ci0gICAgZG8gewotICAgICAgICBnc3NpemUgYnl0ZXNSZWFk
ID0gZ19pbnB1dF9zdHJlYW1fcmVhZChnX2lvX3N0cmVhbV9nZXRfaW5wdXRfc3RyZWFtKEdfSU9f
U1RSRUFNKGhhbmRsZSkpLAotICAgICAgICAgICAgZGF0YSwgbGVuZ3RoLCAwLCAmZXJyb3Iub3V0
UHRyKCkpOwotICAgICAgICBpZiAoYnl0ZXNSZWFkID49IDApCi0gICAgICAgICAgICByZXR1cm4g
Ynl0ZXNSZWFkOwotICAgIH0gd2hpbGUgKGVycm9yICYmIGVycm9yLT5jb2RlID09IEdfRklMRV9F
UlJPUl9JTlRSKTsKLSAgICByZXR1cm4gLTE7Ci19Ci0KLWJvb2wgbW92ZUZpbGUoY29uc3QgU3Ry
aW5nJiBvbGRQYXRoLCBjb25zdCBTdHJpbmcmIG5ld1BhdGgpCi17Ci0gICAgR1VuaXF1ZVB0cjxn
Y2hhcj4gb2xkRmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShvbGRQYXRoKTsKLSAgICBpZiAo
IW9sZEZpbGVuYW1lKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBHVW5pcXVlUHRyPGdj
aGFyPiBuZXdGaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKG5ld1BhdGgpOwotICAgIGlmICgh
bmV3RmlsZW5hbWUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIEdSZWZQdHI8R0ZpbGU+
IG9sZEZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0aChvbGRGaWxlbmFtZS5nZXQo
KSkpOwotICAgIEdSZWZQdHI8R0ZpbGU+IG5ld0ZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19m
b3JfcGF0aChuZXdGaWxlbmFtZS5nZXQoKSkpOwotCi0gICAgcmV0dXJuIGdfZmlsZV9tb3ZlKG9s
ZEZpbGUuZ2V0KCksIG5ld0ZpbGUuZ2V0KCksIEdfRklMRV9DT1BZX09WRVJXUklURSwgbnVsbHB0
ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cik7Ci19Ci0KLWJvb2wgaGFyZExpbmtPckNvcHlG
aWxlKGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uKQotewot
I2lmIE9TKFdJTkRPV1MpCi0gICAgcmV0dXJuICEhOjpDb3B5RmlsZShzb3VyY2UuY2hhcmFjdGVy
c1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCksIGRlc3RpbmF0aW9uLmNoYXJhY3RlcnNXaXRo
TnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpLCBUUlVFKTsKLSNlbHNlCi0gICAgR1VuaXF1ZVB0cjxn
Y2hhcj4gc291cmNlRmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShzb3VyY2UpOwotICAgIGlm
ICghc291cmNlRmlsZW5hbWUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIEdVbmlxdWVQ
dHI8Z2NoYXI+IGRlc3RpbmF0aW9uRmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShkZXN0aW5h
dGlvbik7Ci0gICAgaWYgKCFkZXN0aW5hdGlvbkZpbGVuYW1lKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICBpZiAoIWxpbmsoc291cmNlRmlsZW5hbWUuZ2V0KCksIGRlc3RpbmF0aW9uRmls
ZW5hbWUuZ2V0KCkpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIC8vIEhhcmQgbGluayBm
YWlsZWQuIFBlcmZvcm0gYSBjb3B5IGluc3RlYWQuCi0gICAgR1JlZlB0cjxHRmlsZT4gc291cmNl
RmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKHNvdXJjZUZpbGVuYW1lLmdldCgp
KSk7Ci0gICAgR1JlZlB0cjxHRmlsZT4gZGVzdGluYXRpb25GaWxlID0gYWRvcHRHUmVmKGdfZmls
ZV9uZXdfZm9yX3BhdGgoZGVzdGluYXRpb25GaWxlbmFtZS5nZXQoKSkpOwotICAgIHJldHVybiBn
X2ZpbGVfY29weShzb3VyY2VGaWxlLmdldCgpLCBkZXN0aW5hdGlvbkZpbGUuZ2V0KCksIEdfRklM
RV9DT1BZX05PTkUsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpOwotI2VuZGlm
Ci19Ci0KLU9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBm
c0ZpbGUpCi17Ci0gICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxl
bmFtZShmc0ZpbGUuZGF0YSgpKTsKLSAgICBpZiAoIWZpbGVuYW1lKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwotCi0gICAgR1JlZlB0cjxHRmlsZT4gZmlsZSA9IGFkb3B0R1JlZihnX2Zp
bGVfbmV3X2Zvcl9wYXRoKGZpbGVuYW1lLmdldCgpKSk7Ci0gICAgR1JlZlB0cjxHRmlsZUluZm8+
IGZpbGVJbmZvID0gYWRvcHRHUmVmKGdfZmlsZV9xdWVyeV9maWxlc3lzdGVtX2luZm8oZmlsZS5n
ZXQoKSwgR19GSUxFX0FUVFJJQlVURV9VTklYX0RFVklDRSwgbnVsbHB0ciwgbnVsbHB0cikpOwot
ICAgIGlmICghZmlsZUluZm8pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBy
ZXR1cm4gZ19maWxlX2luZm9fZ2V0X2F0dHJpYnV0ZV91aW50MzIoZmlsZUluZm8uZ2V0KCksIEdf
RklMRV9BVFRSSUJVVEVfVU5JWF9ERVZJQ0UpOwotfQotCi0jaWYgVVNFKEZJTEVfTE9DSykKLWJv
b2wgbG9ja0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgT3B0aW9uU2V0PEZpbGVMb2Nr
TW9kZT4gbG9ja01vZGUpCi17Ci0gICAgQ09NUElMRV9BU1NFUlQoTE9DS19TSCA9PSBXVEY6OmVu
dW1Ub1VuZGVybHlpbmdUeXBlKEZpbGVMb2NrTW9kZTo6U2hhcmVkKSwgTG9ja1NoYXJlZEVuY29k
aW5nSXNBc0V4cGVjdGVkKTsKLSAgICBDT01QSUxFX0FTU0VSVChMT0NLX0VYID09IFdURjo6ZW51
bVRvVW5kZXJseWluZ1R5cGUoRmlsZUxvY2tNb2RlOjpFeGNsdXNpdmUpLCBMb2NrRXhjbHVzaXZl
RW5jb2RpbmdJc0FzRXhwZWN0ZWQpOwotICAgIENPTVBJTEVfQVNTRVJUKExPQ0tfTkIgPT0gV1RG
OjplbnVtVG9VbmRlcmx5aW5nVHlwZShGaWxlTG9ja01vZGU6Ok5vbmJsb2NraW5nKSwgTG9ja05v
bmJsb2NraW5nRW5jb2RpbmdJc0FzRXhwZWN0ZWQpOwotICAgIGF1dG8qIGlucHV0U3RyZWFtID0g
Z19pb19zdHJlYW1fZ2V0X2lucHV0X3N0cmVhbShHX0lPX1NUUkVBTShoYW5kbGUpKTsKLSAgICBp
bnQgcmVzdWx0ID0gZmxvY2soZ19maWxlX2Rlc2NyaXB0b3JfYmFzZWRfZ2V0X2ZkKEdfRklMRV9E
RVNDUklQVE9SX0JBU0VEKGlucHV0U3RyZWFtKSksIGxvY2tNb2RlLnRvUmF3KCkpOwotICAgIHJl
dHVybiByZXN1bHQgIT0gLTE7Ci19Ci0KLWJvb2wgdW5sb2NrRmlsZShQbGF0Zm9ybUZpbGVIYW5k
bGUgaGFuZGxlKQotewotICAgIGF1dG8qIGlucHV0U3RyZWFtID0gZ19pb19zdHJlYW1fZ2V0X2lu
cHV0X3N0cmVhbShHX0lPX1NUUkVBTShoYW5kbGUpKTsKLSAgICBpbnQgcmVzdWx0ID0gZmxvY2so
Z19maWxlX2Rlc2NyaXB0b3JfYmFzZWRfZ2V0X2ZkKEdfRklMRV9ERVNDUklQVE9SX0JBU0VEKGlu
cHV0U3RyZWFtKSksIExPQ0tfVU4pOwotICAgIHJldHVybiByZXN1bHQgIT0gLTE7Ci19Ci0jZW5k
aWYgLy8gVVNFKEZJTEVfTE9DSykKLQotfSAvLyBuYW1lc3BhY2UgRmlsZVN5c3RlbQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xp
Yi9TaGFyZWRCdWZmZXJHbGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hh
cmVkQnVmZmVyR2xpYi5jcHAKaW5kZXggYjQ4OTZjMDg1NDYwZTdjMGJlNTY0MDg0ZWM4OGVmMjJh
ZjYwYjg0NC4uYzc0NzM1NzUzMDdmNmY3ZGQ0YTlmMjM2MWFlZjI1Y2EzNjk3NmUzYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwCkBA
IC0xOSw3ICsxOSw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVm
ZmVyLmgiCiAKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSA8d3RmL2dsaWIvR1Vu
aXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vz
c2lvbkFWQ29udGVudEtleVNlc3Npb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5tbQpp
bmRleCBlOGRkM2I1YWVjODI5M2NkNWVkOTZlOThmMTAzNWVlNTNlMjhjN2I0Li4yNGY5NWU4NDQx
MzY3ZTIyMTljYTIyNjQ0NWU4NjIyOGY1Nzk0ODJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZDb250ZW50
S2V5U2Vzc2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5tbQpAQCAtMjksNyAr
MjksNiBAQAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSAmJiBFTkFCTEUoTUVE
SUFfU09VUkNFKQogCiAjaW1wb3J0ICJDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgiCi0j
aW1wb3J0ICJGaWxlU3lzdGVtLmgiCiAjaW1wb3J0ICJMZWdhY3lDRE0uaCIKICNpbXBvcnQgIkxv
Z2dpbmcuaCIKICNpbXBvcnQgIk1lZGlhUGxheWVyLmgiCkBAIC0zOSw2ICszOCw3IEBACiAjaW1w
b3J0IDxDb3JlTWVkaWEvQ01CYXNlLmg+CiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9UeXBlZEFy
cmF5SW5saW5lcy5oPgogI2ltcG9ydCA8b2JqYy9vYmpjLXJ1bnRpbWUuaD4KKyNpbXBvcnQgPHd0
Zi9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KIAogU09GVF9MSU5L
X0ZSQU1FV09SS19PUFRJT05BTChBVkZvdW5kYXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZTdHJl
YW1TZXNzaW9uLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbi5tbQppbmRleCA5OTI5NDMxNWQ4NjI0
MWIxNjhmMjhhYTcyZWRkZTBkOTdjZjRhNzhjLi5jMzU3M2U1YzYwODFjOTliMTQwNGUwZTQxYzUw
ZTA0OWUyOTFhMjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Np
b25BVlN0cmVhbVNlc3Npb24ubW0KQEAgLTI5LDcgKzI5LDYgQEAKICNpZiBFTkFCTEUoTEVHQUNZ
X0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKE1FRElBX1NPVVJDRSkKIAogI2ltcG9ydCAiQ0RN
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIgotI2ltcG9ydCAiRmlsZVN5c3RlbS5oIgogI2lt
cG9ydCAiTGVnYWN5Q0RNLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJNZWRpYVBs
YXllci5oIgpAQCAtNDAsNiArMzksNyBAQAogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvVHlwZWRB
cnJheUlubGluZXMuaD4KICNpbXBvcnQgPG9iamMvb2JqYy1ydW50aW1lLmg+CiAjaW1wb3J0IDxw
YWwvc3BpL21hYy9BVkZvdW5kYXRpb25TUEkuaD4KKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+
CiAjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KICNpbXBvcnQgPHd0Zi9VVUlELmg+CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0NETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZP
YmpDLm1tCmluZGV4IDJjYjJkNmZhMGNkOGVmYTQyMzE4OTFhMDk4MTk4M2M5YjhjMDc3ZTQuLmVj
NTgzNzhhOGJlYjZhNTc1M2QwMmRhNDlmZWRhYjY2ZWViNTk3YzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25N
ZWRpYVNvdXJjZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5tbQpAQCAt
MjksOSArMjksOSBAQAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSAmJiBFTkFC
TEUoTUVESUFfU09VUkNFKQogCiAjaW1wb3J0ICJDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
LmgiCi0jaW1wb3J0ICJGaWxlU3lzdGVtLmgiCiAjaW1wb3J0ICJXZWJDb3JlTlNFcnJvckV4dHJh
cy5oIgogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWRXJyb3IuaD4KKyNpbXBvcnQgPHd0Zi9GaWxl
U3lzdGVtLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
Lm1tCmluZGV4IDVlMzZkZDAwNjkzMDc1MDExMmI3MTNmZGM0ZTVhZWE0ZDEwYTljMDkuLmQ2ZDVl
ODJiMjM3NzZmZDYyNzdlMjliNjlkZWI2NjI5ZjhjOTE4YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakMubW0KQEAgLTMxLDcgKzMxLDYgQEAKICNpbXBvcnQgIkFWQXNzZXRUcmFja1V0aWxpdGll
cy5oIgogI2ltcG9ydCAiQVZGb3VuZGF0aW9uTUlNRVR5cGVDYWNoZS5oIgogI2ltcG9ydCAiQ0RN
U2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbi5oIgotI2ltcG9ydCAiRmlsZVN5c3RlbS5oIgogI2ltcG9y
dCAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIk1l
ZGlhU291cmNlUHJpdmF0ZUFWRk9iakMuaCIKQEAgLTQ5LDYgKzQ4LDcgQEAKICNpbXBvcnQgPHBh
bC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmg+CiAjaW1wb3J0IDxwYWwvc3Bp
L21hYy9BVkZvdW5kYXRpb25TUEkuaD4KICNpbXBvcnQgPHd0Zi9EZXF1ZS5oPgorI2ltcG9ydCA8
d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW1wb3J0IDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyLmNwcAppbmRleCAwZjA1ZWI5MTk5ZGJmM2U0OWUxYTEyZTA3NTY2ZWVjNDg5
MWRlMTc3Li40MTQwYzExYjBlYTQ3OThlNjYwZDY0OTU4MGZlY2FhZDNjMjZkNGM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMjgsNyAr
MjgsNiBAQAogCiAjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKQogCi0jaW5jbHVk
ZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkdTdHJlYW1lckNvbW1vbi5oIgogI2luY2x1ZGUg
IkhUVFBIZWFkZXJOYW1lcy5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKQEAgLTQy
LDYgKzQxLDcgQEAKICNpbmNsdWRlIDxnc3QvZ3N0Lmg+CiAjaW5jbHVkZSA8Z3N0L3BidXRpbHMv
bWlzc2luZy1wbHVnaW5zLmg+CiAjaW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPHd0Zi9GaWxl
U3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL0hleE51bWJlci5oPgogI2luY2x1ZGUgPHd0Zi9NZWRp
YVRpbWUuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9RdWlja0xvb2subW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvUXVpY2tMb29rLm1tCmluZGV4IDdiZjkxYjJmYWRjMzEyYWIzYjdlODYyYTU4
MzUwZWM1NDhkMDFiYjcuLmE5ZDllNDcxMDUwMTdkNjRkODJlMzdjOGFhMzFjZTY0NjkwMjU2ODUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9RdWlja0xvb2subW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5tbQpAQCAtMjgsMTIgKzI4
LDEyIEBACiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKIAotI2ltcG9ydCAiRmlsZVN5c3RlbS5oIgog
I2ltcG9ydCAiUHJldmlld0NvbnZlcnRlci5oIgogI2ltcG9ydCAiUmVzb3VyY2VSZXF1ZXN0Lmgi
CiAjaW1wb3J0ICJTY2hlbWVSZWdpc3RyeS5oIgogI2ltcG9ydCA8cGFsL2lvcy9RdWlja0xvb2tT
b2Z0TGluay5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0ZpbGVNYW5hZ2VyU1BJLmg+Cisj
aW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8d3RmL0xvY2suaD4KICNpbXBvcnQg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tCmluZGV4IGJmODIxODM5OTE1
ZTgwZDU4OTlhOTQ4OTk5ZjJmMDIwNmQ4Y2ZmM2EuLjM1NDVkN2VmY2FjODY3NjQ4ZjQ5YTQ3NGU4
YTAyMGI1MWM4OGQ0ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9X
ZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tCkBAIC0zNCwxMSArMzQsMTEgQEAKICNp
bXBvcnQgPFVJS2l0L05TSXRlbVByb3ZpZGVyK1VJS2l0QWRkaXRpb25zLmg+CiAjaW1wb3J0IDxV
SUtpdC9VSUNvbG9yLmg+CiAjaW1wb3J0IDxVSUtpdC9VSUltYWdlLmg+Ci0jaW1wb3J0IDxXZWJD
b3JlL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPFdlYkNvcmUvUGFzdGVib2FyZC5oPgogI2ltcG9y
dCA8cGFsL2lvcy9VSUtpdFNvZnRMaW5rLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2lvcy9VSUtpdFNQ
SS5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5o
PgogI2ltcG9ydCA8d3RmL09TT2JqZWN0UHRyLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+
CiAKQEAgLTY5NCw3ICs2OTQsNyBAQCBzdGF0aWMgTlNVUkwgKmxpbmtUZW1wb3JhcnlJdGVtUHJv
dmlkZXJGaWxlc1RvRHJvcFN0YWdpbmdEaXJlY3RvcnkoTlNVUkwgKnVybCwgTgogICAgIGlmICgh
dXJsKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgTlNTdHJpbmcgKnRlbXBvcmFyeURhdGFJ
bnRlcmFjdGlvbkRpcmVjdG9yeSA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFy
eURpcmVjdG9yeShkYXRhSW50ZXJhY3Rpb25EaXJlY3RvcnlQcmVmaXgpOworICAgIE5TU3RyaW5n
ICp0ZW1wb3JhcnlEYXRhSW50ZXJhY3Rpb25EaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpjcmVhdGVU
ZW1wb3JhcnlEaXJlY3RvcnkoZGF0YUludGVyYWN0aW9uRGlyZWN0b3J5UHJlZml4KTsKICAgICBp
ZiAoIXRlbXBvcmFyeURhdGFJbnRlcmFjdGlvbkRpcmVjdG9yeSkKICAgICAgICAgcmV0dXJuIG5p
bDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0ZpbGVTeXN0ZW1N
YWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRmlsZVN5c3RlbU1hYy5tbQpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGVkNzUxYTdlYzBlNWQwYmFmNzc0Zjk4NjEwYWNi
MDQ1Y2QyYjAwNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRmlsZVN5c3RlbU1hYy5tbQorKysgL2Rldi9u
dWxsCkBAIC0xLDg4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5o
IgotI2ltcG9ydCAiRmlsZVN5c3RlbS5oIgotCi0jaWYgUExBVEZPUk0oTUFDKQotCi0jaW1wb3J0
IDxwYWwvc3BpL21hYy9NZXRhZGF0YVNQSS5oPgotI2ltcG9ydCA8d3RmL2NvY29hL05TVVJMRXh0
cmFzLmg+Ci0jaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1ib29sIEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmlu
ZyYgcGF0aCkKLXsKLSAgICBhdXRvIGZpbGVNYW5hZ2VyID0gYWRvcHROUyhbW05TRmlsZU1hbmFn
ZXIgYWxsb2NdIGluaXRdKTsKLQotICAgIGlmIChOU0FycmF5ICpkaXJlY3RvcnlDb250ZW50cyA9
IFtmaWxlTWFuYWdlciBjb250ZW50c09mRGlyZWN0b3J5QXRQYXRoOnBhdGggZXJyb3I6bnVsbHB0
cl0pIHsKLSAgICAgICAgLy8gRXhwbGljaXRseSBsb29rIGZvciBhbmQgZGVsZXRlIC5EU19TdG9y
ZSBmaWxlcy4KLSAgICAgICAgaWYgKGRpcmVjdG9yeUNvbnRlbnRzLmNvdW50ID09IDEgJiYgW2Rp
cmVjdG9yeUNvbnRlbnRzLmZpcnN0T2JqZWN0IGlzRXF1YWxUb1N0cmluZzpAIi5EU19TdG9yZSJd
KQotICAgICAgICAgICAgW2ZpbGVNYW5hZ2VyIHJlbW92ZUl0ZW1BdFBhdGg6W3BhdGggc3RyaW5n
QnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmRpcmVjdG9yeUNvbnRlbnRzLmZpcnN0T2JqZWN0XSBl
cnJvcjpudWxscHRyXTsKLSAgICB9Ci0KLSAgICAvLyBybWRpciguLi4pIHJldHVybnMgMCBvbiBz
dWNjZXNzZnVsIGRlbGV0aW9uIG9mIHRoZSBwYXRoIGFuZCBub24temVybyBpbiBhbnkgb3RoZXIg
Y2FzZSAoaW5jbHVkaW5nIGludmFsaWQgcGVybWlzc2lvbnMgb3Igbm9uLWV4aXN0ZW50IGZpbGUp
Ci0gICAgcmV0dXJuICFybWRpcihGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
cGF0aCkuZGF0YSgpKTsKLX0KLQotdm9pZCBGaWxlU3lzdGVtOjpzZXRNZXRhZGF0YVVSTChjb25z
dCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbWV0YWRhdGFVUkxTdHJpbmcsIGNvbnN0IFN0
cmluZyYgcmVmZXJyZXIpCi17Ci0gICAgU3RyaW5nIHVybFN0cmluZzsKLSAgICBpZiAoTlNVUkwg
KnVybCA9IFVSTFdpdGhVc2VyVHlwZWRTdHJpbmcobWV0YWRhdGFVUkxTdHJpbmcsIG5pbCkpCi0g
ICAgICAgIHVybFN0cmluZyA9IFdURjo6dXNlclZpc2libGVTdHJpbmcoV1RGOjpVUkxCeVJlbW92
aW5nVXNlckluZm8odXJsKSk7Ci0gICAgZWxzZQotICAgICAgICB1cmxTdHJpbmcgPSBtZXRhZGF0
YVVSTFN0cmluZzsKLQotICAgIC8vIENhbGwgTWV0YWRhdGEgQVBJIG9uIGEgYmFja2dyb3VuZCBx
dWV1ZSBiZWNhdXNlIGl0IGNhbiB0YWtlIHNvbWUgdGltZS4KLSAgICBkaXNwYXRjaF9hc3luYyhk
aXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQs
IDApLCBbcGF0aCA9IHBhdGguaXNvbGF0ZWRDb3B5KCksIHVybFN0cmluZyA9IHVybFN0cmluZy5p
c29sYXRlZENvcHkoKSwgcmVmZXJyZXIgPSByZWZlcnJlci5pc29sYXRlZENvcHkoKV0gewotICAg
ICAgICBhdXRvIGl0ZW0gPSBhZG9wdENGKE1ESXRlbUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCBwYXRoLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpKTsKLSAgICAgICAgaWYgKCFpdGVtKQotICAg
ICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGF1dG8gd2hlcmVGcm9tQXR0cmlidXRlID0gYWRv
cHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6dXJsU3RyaW5nLCBu
aWxdKTsKLSAgICAgICAgaWYgKCFyZWZlcnJlci5pc051bGwoKSkKLSAgICAgICAgICAgIFt3aGVy
ZUZyb21BdHRyaWJ1dGUgYWRkT2JqZWN0OnJlZmVycmVyXTsKLQotICAgICAgICBNREl0ZW1TZXRB
dHRyaWJ1dGUoaXRlbS5nZXQoKSwga01ESXRlbVdoZXJlRnJvbXMsIChfX2JyaWRnZSBDRkFycmF5
UmVmKXdoZXJlRnJvbUF0dHJpYnV0ZS5nZXQoKSk7Ci0gICAgICAgIE1ESXRlbVNldEF0dHJpYnV0
ZShpdGVtLmdldCgpLCBrTURJdGVtRG93bmxvYWRlZERhdGUsIChfX2JyaWRnZSBDRkFycmF5UmVm
KUBbIFtOU0RhdGUgZGF0ZV0gXSk7Ci0gICAgfSk7Ci19Ci0KLWJvb2wgRmlsZVN5c3RlbTo6Y2Fu
RXhjbHVkZUZyb21CYWNrdXAoKQotewotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIEZpbGVT
eXN0ZW06OmV4Y2x1ZGVGcm9tQmFja3VwKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICAvLyBJ
dCBpcyBjcml0aWNhbCB0byBwYXNzIEZBTFNFIGZvciBleGNsdWRlQnlQYXRoIGJlY2F1c2UgZXhj
bHVkaW5nIGJ5IHBhdGggcmVxdWlyZXMgcm9vdCBwcml2aWxlZ2VzLgotICAgIENTQmFja3VwU2V0
SXRlbUV4Y2x1ZGVkKEZpbGVTeXN0ZW06OnBhdGhBc1VSTChwYXRoKS5nZXQoKSwgVFJVRSwgRkFM
U0UpOwotICAgIHJldHVybiB0cnVlOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZiAvLyBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KaW5kZXggZDdlM2YzOWE2N2IzNzNiODM4NzljODQwOWM1
OGIwODk4ZDM0NzllYy4uZDc5ZTJmNjBjNjA5NDAzYWJkZmMwMmFlYmY3MGEyNmJjY2RmMmYzZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9N
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2Nv
YS5tbQpAQCAtMjksMTMgKzI5LDEzIEBACiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNF
KEFWRk9VTkRBVElPTikKIAogI2luY2x1ZGUgIkF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaCIKLSNp
bmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViQXVkaW9CdWZmZXJMaXN0Lmgi
CiAjaW5jbHVkZSA8QVZGb3VuZGF0aW9uL0FWQXNzZXRXcml0ZXIuaD4KICNpbmNsdWRlIDxBVkZv
dW5kYXRpb24vQVZBc3NldFdyaXRlcklucHV0Lmg+CiAjaW5jbHVkZSA8cGFsL2NmL0NvcmVNZWRp
YVNvZnRMaW5rLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogdHlwZWRlZiBBVkFz
c2V0V3JpdGVyIEFWQXNzZXRXcml0ZXJUeXBlOwogdHlwZWRlZiBBVkFzc2V0V3JpdGVySW5wdXQg
QVZBc3NldFdyaXRlcklucHV0VHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmNwcAppbmRleCBiNjNmMDYxMmFi
ZmNiODY2ZGEwY2VkMGEyMzVkYzE1NTkzZmYwNWVkLi41YWJmZDc1Y2I0OTQ1NmU0MmQzOWQ0NGQz
YmMyMjU5YWFmZmE1MjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuY3BwCkBAIC0yNyw4ICsyNyw4IEBACiAj
aW5jbHVkZSAiQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmgiCiAKICNpbmNsdWRlICJGaWxlLmgiCi0j
aW5jbHVkZSAiRmlsZU1ldGFkYXRhLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgorI2luY2x1
ZGUgPHd0Zi9GaWxlTWV0YWRhdGEuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCmluZGV4IDgwYjQxZTk3NWU0ZDYxNDNhZjRjOTk2
MTE3NTQ3YmI4OTJlZGEzMTguLjFjNzA2YWEzNDZjYWRkZWEzOWU1MDBkODAzMDRjZDQ5NGJkODI2
ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lz
dHJ5SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVn
aXN0cnlJbXBsLmNwcApAQCAtMzUsMTMgKzM1LDEzIEBACiAjaW5jbHVkZSAiQmxvYkRhdGEuaCIK
ICNpbmNsdWRlICJCbG9iUGFydC5oIgogI2luY2x1ZGUgIkJsb2JSZXNvdXJjZUhhbmRsZS5oIgot
I2luY2x1ZGUgIkZpbGVNZXRhZGF0YS5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNs
dWRlICJSZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNs
dWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAj
aW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVNZXRh
ZGF0YS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL01haW5U
aHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYv
U2NvcGUuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxv
YlJlc291cmNlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxv
YlJlc291cmNlSGFuZGxlLmNwcAppbmRleCBjOTRlMzk0OTRiOGUzMjZkYjRhMTJhMjcyMDFhNDYy
MzhkZTE4YzRiLi5jYzY3Y2U2ODhmM2JjYTIyMjY5MGI0M2YxMDU4NzhiYTllM2MyOGY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRs
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VI
YW5kbGUuY3BwCkBAIC0zNSwxOSArMzUsMTkgQEAKICNpbmNsdWRlICJBc3luY0ZpbGVTdHJlYW0u
aCIKICNpbmNsdWRlICJCbG9iRGF0YS5oIgogI2luY2x1ZGUgIkZpbGVTdHJlYW0uaCIKLSNpbmNs
dWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiSFRUUEhlYWRlck5hbWVzLmgiCiAjaW5jbHVk
ZSAiSFRUUFBhcnNlcnMuaCIKICNpbmNsdWRlICJQYXJzZWRDb250ZW50UmFuZ2UuaCIKLSNpbmNs
dWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlJl
c291cmNlSGFuZGxlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5j
bHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2lu
Y2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVt
Lmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+Cisj
aW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKaW5kZXggNTRlNGFjMDQ5NjJhMjIx
OTA3ZTNiN2Q4MGE0ZmJhY2JlMjU0YjM5OS4uN2I3NmE1ZWVkZTk5Zjk0OWM4MWU2OWNmZTFiZGJi
ODk2Y2NjMjY3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9G
b3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0
YS5jcHAKQEAgLTI5LDEyICsyOSwxMiBAQAogI2luY2x1ZGUgIkRPTUZvcm1EYXRhLmgiCiAjaW5j
bHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJGaWxlLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3Rl
bS5oIgogI2luY2x1ZGUgIkZvcm1EYXRhQnVpbGRlci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNp
bmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKICNpbmNs
dWRlICJUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0u
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9MaW5lRW5kaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURh
dGFTdHJlYW1DRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zv
cm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCmluZGV4IDllMmQ4ODFkNjM1NDkxNTI1ZDcxYWY0NTZjMmQx
OTVmZDEzYjk0ZDYuLmE3NGFlNWFhYzljYjI2MjNkYzljYTVhOGFhNDBhYzM0MDIxMmYyZDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJl
YW1DRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3Jt
RGF0YVN0cmVhbUNGTmV0LmNwcApAQCAtMzAsMTEgKzMwLDExIEBACiAjaW5jbHVkZSAiRm9ybURh
dGFTdHJlYW1DRk5ldC5oIgogCiAjaW5jbHVkZSAiQmxvYkRhdGEuaCIKLSNpbmNsdWRlICJGaWxl
U3lzdGVtLmgiCiAjaW5jbHVkZSAiRm9ybURhdGEuaCIKICNpbmNsdWRlIDxzeXMvc3RhdC5oPgog
I2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5j
bHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1
ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVl
c3RDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3Vy
Y2VSZXF1ZXN0Q29jb2EubW0KaW5kZXggMjdmZjlkMWNhOGVmYTFmZGQ2ZWRmMjg4NjQ4NjQ3OTQ5
Zjg4MWE5Ni4uMmZlYzFmMzgzNGU0MTE2YTFkZDRjZWIxZjYzMjg5OGQ1ZWNlMTQwZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVl
c3RDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jl
c291cmNlUmVxdWVzdENvY29hLm1tCkBAIC0yOCwxMyArMjgsMTMgQEAKIAogI2lmIFBMQVRGT1JN
KENPQ09BKQogCi0jaW1wb3J0ICJGaWxlU3lzdGVtLmgiCiAjaW1wb3J0ICJGb3JtRGF0YVN0cmVh
bU1hYy5oIgogI2ltcG9ydCAiSFRUUEhlYWRlck5hbWVzLmgiCiAjaW1wb3J0ICJSZXNvdXJjZVJl
cXVlc3RDRk5ldC5oIgogI2ltcG9ydCAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCiAjaW1w
b3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KICNpbXBvcnQgPHBhbC9zcGkvY2YvQ0ZOZXR3
b3JrU1BJLmg+CisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8d3RmL3RleHQv
Q1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcAppbmRleCBjMjNmZDcyZjE5
MTcxMDIwODJlMTIxZTQ0ZDU4ZWRkOGEzMmQxZTcxLi4yNjM2MjI4OGI4NjlkOGM3YmIzNDE3Zjc2
ZjQwYjYzY2M1N2Y3YTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ29va2llSmFyREIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKQEAgLTI2LDEwICsyNiw5IEBACiAjaW5jbHVkZSAi
Q29va2llSmFyREIuaCIKIAogI2luY2x1ZGUgIkNvb2tpZVV0aWwuaCIKLSNpbmNsdWRlICJGaWxl
U3lzdGVtLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlNRTGl0ZUZpbGVTeXN0
ZW0uaCIKLQorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL01vbm90
b25pY1RpbWUuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmgKaW5kZXggY2JjNDVm
ZWQyYjYzOGVhNjJkOTEyZWM3ZWQyZDY2MTQzYjhmOWQ2Yi4uMTEwMjdjZTNiM2NmNjM4OGY5OTU0
YWFmNDljNDkwM2ZlOTNmZGZmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmgKQEAgLTI2LDExICsyNiwxMSBAQAogCiAj
cHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJIVFRQSGVh
ZGVyTWFwLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJSZXNvdXJj
ZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCisjaW5jbHVkZSA8d3Rm
L0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAK
aW5kZXggNDNiYzJlN2JmZmY0ZjliZDZmNzEwMjg1ZDZkM2Q4NjMxYmI3NzgzYS4uZmE1YzhkMmQy
MWI2MjczODE1ZDAyM2E0ZjIwNDU1MDE2ZTk2MzhhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcApAQCAt
MzAsMTIgKzMwLDEyIEBACiAKICNpbmNsdWRlICJDdXJsQ2FjaGVNYW5hZ2VyLmgiCiAKLSNpbmNs
dWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiSFRUUEhlYWRlck1hcC5oIgogI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZUNsaWVudC5oIgogI2luY2x1ZGUg
IlJlc291cmNlSGFuZGxlSW50ZXJuYWwuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIK
KyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAj
aW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxGb3JtRGF0YVN0cmVhbS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxGb3JtRGF0YVN0cmVhbS5oCmluZGV4IGM4ZWYzMzNlMGQ4YzBlMDI4ZWNkOGE0NmQ4MjZi
OTA2NzFhMDBlMGMuLjA5ZTdmZGJiNGEyY2ZhYjRiOTA3MzJmMDYxMTRiZTA4MTEzYmI1MWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRm9ybURh
dGFTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bEZvcm1EYXRhU3RyZWFtLmgKQEAgLTI2LDggKzI2LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNp
bmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiRm9ybURhdGEuaCIKKyNpbmNsdWRlIDx3
dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFJlcXVlc3QuaAppbmRleCBmZGM0YjU5MGMxNDJjZjZkYzk4MDc3ZDlmNzVkNzg2NTYzNjE5Njlk
Li45M2NhNjEwM2ZlNjNkNWZmMDMxMDU1YzgyNWQ4MDI4Mjc2NGFlZGJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaApAQCAtMzIs
MTAgKzMyLDEwIEBACiAjaW5jbHVkZSAiQ3VybFJlcXVlc3RTY2hlZHVsZXJDbGllbnQuaCIKICNp
bmNsdWRlICJDdXJsUmVzcG9uc2UuaCIKICNpbmNsdWRlICJDdXJsU1NMVmVyaWZpZXIuaCIKLSNp
bmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiTmV0d29ya0xvYWRNZXRyaWNzLmgiCiAj
aW5jbHVkZSAiUHJvdGVjdGlvblNwYWNlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0Lmgi
CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTWVzc2FnZVF1ZXVl
Lmg+CiAjaW5jbHVkZSA8d3RmL01vbm90b25pY1RpbWUuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29w
eWFibGUuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcAppbmRleCBhMzQyZWM1
ZjBhNTUyMTFhYjczNDdlNDExM2UzMTcyNWFjNDBiMmZkLi4wNWI1NjcyMzJiYmQ2NmYwYmQwNzFk
ZGI4YTBmMGNkYWZmNmVmYWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3Bw
CkBAIC0zMywxMCArMzMsOSBAQAogI2luY2x1ZGUgIkNvb2tpZUphckRCLmgiCiAjaW5jbHVkZSAi
Q29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkuaCIKICNpbmNsdWRlICJDdXJsQ29udGV4dC5o
IgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5o
IgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCi0KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3Rl
bS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcAppbmRl
eCBlNTFlN2FiZjBhMDU1YTA4ZDhmOTU4ZjViMWVmMWNhMjY0YThiNzI2Li43YmUwMGFkMzRiOGU1
OTg4MmRlMGY1MTNiNmMyZGRmOTAxMWY5OWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcApAQCAt
MzgsNyArMzgsNiBAQAogI2luY2x1ZGUgIkN1cmxDYWNoZU1hbmFnZXIuaCIKICNpbmNsdWRlICJD
dXJsQ29udGV4dC5oIgogI2luY2x1ZGUgIkN1cmxSZXF1ZXN0LmgiCi0jaW5jbHVkZSAiRmlsZVN5
c3RlbS5oIgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgog
I2luY2x1ZGUgIk5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIgpAQCAtNDgsNiArNDcsNyBAQAogI2lu
Y2x1ZGUgIlN5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiVGV4dEVuY29kaW5n
LmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL0Zp
bGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9CYXNlNjQuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
QmxvYkRhdGFGaWxlUmVmZXJlbmNlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9tYWMvQmxvYkRhdGFGaWxlUmVmZXJlbmNlTWFjLm1tCmluZGV4IGZjZjU1ZDc2ZWE0NWVi
YjA2NzA0M2VjZGZjOGNmMDhjYzkyNDZhMjkuLmI2OTI5MjBiMjFmYzY2MzlkNTc0NWQxYzA0NGU4
Yjc4NzgyMzUwZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL21hYy9CbG9iRGF0YUZpbGVSZWZlcmVuY2VNYWMubW0KQEAgLTI4LDggKzI4
LDggQEAKIAogI2lmIEVOQUJMRShGSUxFX1JFUExBQ0VNRU5UKQogCi0jaW5jbHVkZSAiRmlsZU1l
dGFkYXRhLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlTWV0
YWRhdGEuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9Tb2Z0
TGlua2luZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVT
b3VwLmNwcAppbmRleCA2MzczNGM2NzRjNTJlZTk1ZGM2YzllNDIxYzQ2NjBmNDE4NDAwYmFhLi4w
ODE1ZWE2ODhlNzY2OTI3ZTY2M2Q0MDU2MTQ5ZGJkMzY4ZTY0NmNiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVT
b3VwLmNwcApAQCAtMzIsNyArMzIsNiBAQAogI2lmIFVTRShTT1VQKQogCiAjaW5jbHVkZSAiQ3Jl
ZGVudGlhbFN0b3JhZ2UuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiR1Vu
aXF1ZVB0clNvdXAuaCIKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgogI2luY2x1ZGUgIkxvY2Fs
aXplZFN0cmluZ3MuaCIKQEAgLTU3LDYgKzU2LDcgQEAKICNpbmNsdWRlIDx1bmlzdGQuaD4KICNl
bmRpZgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgorI2luY2x1ZGUgPHd0Zi9G
aWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9nbGliL1J1bkxvb3BTb3VyY2VQcmlvcml0eS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9T
b3VwTmV0d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAKaW5kZXggMzQzZmFlYjlmZWIyMTk0Y2NjM2VmNzc5
ZDc3ZDNmNmI0ZDFlZGM4Ny4uYjk2Nzc5NTk4MGVlOGZhNGM5OTUwMGZmZGYzNGI0MjAyZWIyYTJk
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBO
ZXR3b3JrU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAKQEAgLTMwLDEzICszMCwxMyBAQAogI2luY2x1ZGUg
IlNvdXBOZXR3b3JrU2Vzc2lvbi5oIgogCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiR1VuaXF1ZVB0clNvdXAu
aCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiU291cE5ldHdvcmtQcm94eVNldHRp
bmdzLmgiCiAjaW5jbHVkZSA8Z2xpYi9nc3RkaW8uaD4KICNpbmNsdWRlIDxsaWJzb3VwL3NvdXAu
aD4KICNpbmNsdWRlIDxwYWwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5oPgorI2luY2x1ZGUgPHd0Zi9G
aWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9CYXNlNjQuaD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA5NDg1MTM1MjUxOGQ2MDZiZWEyNWVlZWEzMzYxODUyODAzMzRj
ZmNjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKysrIC9kZXYvbnVs
bApAQCAtMSw0OTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNy0yMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0
aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAq
ICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0g
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVt
LmgiCi0KLSNpbmNsdWRlICJGaWxlTWV0YWRhdGEuaCIKLSNpbmNsdWRlIDxkaXJlbnQuaD4KLSNp
bmNsdWRlIDxlcnJuby5oPgotI2luY2x1ZGUgPGZjbnRsLmg+Ci0jaW5jbHVkZSA8Zm5tYXRjaC5o
PgotI2luY2x1ZGUgPGxpYmdlbi5oPgotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8c3lz
L3N0YXQuaD4KLSNpbmNsdWRlIDxzeXMvc3RhdHZmcy5oPgotI2luY2x1ZGUgPHN5cy90eXBlcy5o
PgotI2luY2x1ZGUgPHVuaXN0ZC5oPgotI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+Ci0jaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxk
ZXIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1uYW1lc3BhY2UgRmlsZVN5c3RlbSB7Ci0KLWJvb2wgZmlsZUV4aXN0cyhjb25zdCBT
dHJpbmcmIHBhdGgpCi17Ci0gICAgaWYgKHBhdGguaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIENTdHJpbmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0
aCk7Ci0KLSAgICBpZiAoIWZzUmVwLmRhdGEoKSB8fCBmc1JlcC5kYXRhKClbMF0gPT0gJ1wwJykK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIGFjY2Vzcyhmc1JlcC5kYXRhKCks
IEZfT0spICE9IC0xOwotfQotCi1ib29sIGRlbGV0ZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQot
ewotICAgIENTdHJpbmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7Ci0K
LSAgICBpZiAoIWZzUmVwLmRhdGEoKSB8fCBmc1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gdW5saW5rKC4uLikgcmV0dXJucyAwIG9uIHN1Y2Nl
c3NmdWwgZGVsZXRpb24gb2YgdGhlIHBhdGggYW5kIG5vbi16ZXJvIGluIGFueSBvdGhlciBjYXNl
IChpbmNsdWRpbmcgaW52YWxpZCBwZXJtaXNzaW9ucyBvciBub24tZXhpc3RlbnQgZmlsZSkKLSAg
ICByZXR1cm4gIXVubGluayhmc1JlcC5kYXRhKCkpOwotfQotCi1QbGF0Zm9ybUZpbGVIYW5kbGUg
b3BlbkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUgbW9kZSkKLXsKLSAgICBD
U3RyaW5nIGZzUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwotCi0gICAgaWYg
KGZzUmVwLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRs
ZTsKLQotICAgIGludCBwbGF0Zm9ybUZsYWcgPSAwOwotICAgIGlmIChtb2RlID09IEZpbGVPcGVu
TW9kZTo6UmVhZCkKLSAgICAgICAgcGxhdGZvcm1GbGFnIHw9IE9fUkRPTkxZOwotICAgIGVsc2Ug
aWYgKG1vZGUgPT0gRmlsZU9wZW5Nb2RlOjpXcml0ZSkKLSAgICAgICAgcGxhdGZvcm1GbGFnIHw9
IChPX1dST05MWSB8IE9fQ1JFQVQgfCBPX1RSVU5DKTsKLSNpZiBPUyhEQVJXSU4pCi0gICAgZWxz
ZSBpZiAobW9kZSA9PSBGaWxlT3Blbk1vZGU6OkV2ZW50c09ubHkpCi0gICAgICAgIHBsYXRmb3Jt
RmxhZyB8PSBPX0VWVE9OTFk7Ci0jZW5kaWYKLQotICAgIHJldHVybiBvcGVuKGZzUmVwLmRhdGEo
KSwgcGxhdGZvcm1GbGFnLCAwNjY2KTsKLX0KLQotdm9pZCBjbG9zZUZpbGUoUGxhdGZvcm1GaWxl
SGFuZGxlJiBoYW5kbGUpCi17Ci0gICAgaWYgKGlzSGFuZGxlVmFsaWQoaGFuZGxlKSkgewotICAg
ICAgICBjbG9zZShoYW5kbGUpOwotICAgICAgICBoYW5kbGUgPSBpbnZhbGlkUGxhdGZvcm1GaWxl
SGFuZGxlOwotICAgIH0KLX0KLQotbG9uZyBsb25nIHNlZWtGaWxlKFBsYXRmb3JtRmlsZUhhbmRs
ZSBoYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQsIEZpbGVTZWVrT3JpZ2luIG9yaWdpbikKLXsKLSAg
ICBpbnQgd2hlbmNlID0gU0VFS19TRVQ7Ci0gICAgc3dpdGNoIChvcmlnaW4pIHsKLSAgICBjYXNl
IEZpbGVTZWVrT3JpZ2luOjpCZWdpbm5pbmc6Ci0gICAgICAgIHdoZW5jZSA9IFNFRUtfU0VUOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIEZpbGVTZWVrT3JpZ2luOjpDdXJyZW50OgotICAgICAg
ICB3aGVuY2UgPSBTRUVLX0NVUjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGaWxlU2Vla09y
aWdpbjo6RW5kOgotICAgICAgICB3aGVuY2UgPSBTRUVLX0VORDsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KGxzZWVrKGhhbmRsZSwgb2Zmc2V0LCB3aGVuY2Up
KTsKLX0KLQotYm9vbCB0cnVuY2F0ZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgbG9u
ZyBsb25nIG9mZnNldCkKLXsKLSAgICAvLyBmdHJ1bmNhdGUgcmV0dXJucyAwIHRvIGluZGljYXRl
IHRoZSBzdWNjZXNzLgotICAgIHJldHVybiAhZnRydW5jYXRlKGhhbmRsZSwgb2Zmc2V0KTsKLX0K
LQotaW50IHdyaXRlVG9GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNvbnN0IGNoYXIq
IGRhdGEsIGludCBsZW5ndGgpCi17Ci0gICAgZG8gewotICAgICAgICBpbnQgYnl0ZXNXcml0dGVu
ID0gd3JpdGUoaGFuZGxlLCBkYXRhLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkpOwotICAg
ICAgICBpZiAoYnl0ZXNXcml0dGVuID49IDApCi0gICAgICAgICAgICByZXR1cm4gYnl0ZXNXcml0
dGVuOwotICAgIH0gd2hpbGUgKGVycm5vID09IEVJTlRSKTsKLSAgICByZXR1cm4gLTE7Ci19Ci0K
LWludCByZWFkRnJvbUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY2hhciogZGF0YSwg
aW50IGxlbmd0aCkKLXsKLSAgICBkbyB7Ci0gICAgICAgIGludCBieXRlc1JlYWQgPSByZWFkKGhh
bmRsZSwgZGF0YSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5ndGgpKTsKLSAgICAgICAgaWYgKGJ5
dGVzUmVhZCA+PSAwKQotICAgICAgICAgICAgcmV0dXJuIGJ5dGVzUmVhZDsKLSAgICB9IHdoaWxl
IChlcnJubyA9PSBFSU5UUik7Ci0gICAgcmV0dXJuIC0xOwotfQotCi0jaWYgVVNFKEZJTEVfTE9D
SykKLWJvb2wgbG9ja0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgT3B0aW9uU2V0PEZp
bGVMb2NrTW9kZT4gbG9ja01vZGUpCi17Ci0gICAgQ09NUElMRV9BU1NFUlQoTE9DS19TSCA9PSBX
VEY6OmVudW1Ub1VuZGVybHlpbmdUeXBlKEZpbGVMb2NrTW9kZTo6U2hhcmVkKSwgTG9ja1NoYXJl
ZEVuY29kaW5nSXNBc0V4cGVjdGVkKTsKLSAgICBDT01QSUxFX0FTU0VSVChMT0NLX0VYID09IFdU
Rjo6ZW51bVRvVW5kZXJseWluZ1R5cGUoRmlsZUxvY2tNb2RlOjpFeGNsdXNpdmUpLCBMb2NrRXhj
bHVzaXZlRW5jb2RpbmdJc0FzRXhwZWN0ZWQpOwotICAgIENPTVBJTEVfQVNTRVJUKExPQ0tfTkIg
PT0gV1RGOjplbnVtVG9VbmRlcmx5aW5nVHlwZShGaWxlTG9ja01vZGU6Ok5vbmJsb2NraW5nKSwg
TG9ja05vbmJsb2NraW5nRW5jb2RpbmdJc0FzRXhwZWN0ZWQpOwotICAgIGludCByZXN1bHQgPSBm
bG9jayhoYW5kbGUsIGxvY2tNb2RlLnRvUmF3KCkpOwotICAgIHJldHVybiAocmVzdWx0ICE9IC0x
KTsKLX0KLQotYm9vbCB1bmxvY2tGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUpCi17Ci0g
ICAgaW50IHJlc3VsdCA9IGZsb2NrKGhhbmRsZSwgTE9DS19VTik7Ci0gICAgcmV0dXJuIChyZXN1
bHQgIT0gLTEpOwotfQotI2VuZGlmCi0KLSNpZiAhUExBVEZPUk0oTUFDKQotYm9vbCBkZWxldGVF
bXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgQ1N0cmluZyBmc1JlcCA9
IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKLQotICAgIGlmICghZnNSZXAuZGF0YSgp
IHx8IGZzUmVwLmRhdGEoKVswXSA9PSAnXDAnKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICAvLyBybWRpciguLi4pIHJldHVybnMgMCBvbiBzdWNjZXNzZnVsIGRlbGV0aW9uIG9mIHRoZSBw
YXRoIGFuZCBub24temVybyBpbiBhbnkgb3RoZXIgY2FzZSAoaW5jbHVkaW5nIGludmFsaWQgcGVy
bWlzc2lvbnMgb3Igbm9uLWV4aXN0ZW50IGZpbGUpCi0gICAgcmV0dXJuICFybWRpcihmc1JlcC5k
YXRhKCkpOwotfQotI2VuZGlmCi0KLWJvb2wgZ2V0RmlsZVNpemUoY29uc3QgU3RyaW5nJiBwYXRo
LCBsb25nIGxvbmcmIHJlc3VsdCkKLXsKLSAgICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKHBhdGgpOwotCi0gICAgaWYgKCFmc1JlcC5kYXRhKCkgfHwgZnNSZXAuZGF0
YSgpWzBdID09ICdcMCcpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHN0cnVjdCBzdGF0
IGZpbGVJbmZvOwotCi0gICAgaWYgKHN0YXQoZnNSZXAuZGF0YSgpLCAmZmlsZUluZm8pKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXN1bHQgPSBmaWxlSW5mby5zdF9zaXplOwotICAg
IHJldHVybiB0cnVlOwotfQotCi1ib29sIGdldEZpbGVTaXplKFBsYXRmb3JtRmlsZUhhbmRsZSBo
YW5kbGUsIGxvbmcgbG9uZyYgcmVzdWx0KQotewotICAgIHN0cnVjdCBzdGF0IGZpbGVJbmZvOwot
ICAgIGlmIChmc3RhdChoYW5kbGUsICZmaWxlSW5mbykpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIHJlc3VsdCA9IGZpbGVJbmZvLnN0X3NpemU7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0K
LU9wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlQ3JlYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0
aCkKLXsKLSNpZiBPUyhEQVJXSU4pIHx8IE9TKE9QRU5CU0QpIHx8IE9TKE5FVEJTRCkgfHwgT1Mo
RlJFRUJTRCkKLSAgICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBh
dGgpOwotCi0gICAgaWYgKCFmc1JlcC5kYXRhKCkgfHwgZnNSZXAuZGF0YSgpWzBdID09ICdcMCcp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBzdHJ1Y3Qgc3RhdCBmaWxlSW5m
bzsKLQotICAgIGlmIChzdGF0KGZzUmVwLmRhdGEoKSwgJmZpbGVJbmZvKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIHJldHVybiBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMo
ZmlsZUluZm8uc3RfYmlydGh0aW1lKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHBhdGgpOwot
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0jZW5kaWYKLX0KLQotT3B0aW9uYWw8V2FsbFRpbWU+
IGdldEZpbGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBDU3Ry
aW5nIGZzUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwotCi0gICAgaWYgKCFm
c1JlcC5kYXRhKCkgfHwgZnNSZXAuZGF0YSgpWzBdID09ICdcMCcpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7Ci0KLSAgICBzdHJ1Y3Qgc3RhdCBmaWxlSW5mbzsKLQotICAgIGlmIChzdGF0
KGZzUmVwLmRhdGEoKSwgJmZpbGVJbmZvKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
LQotICAgIHJldHVybiBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoZmlsZUluZm8uc3RfbXRpbWUp
OwotfQotCi1zdGF0aWMgRmlsZU1ldGFkYXRhOjpUeXBlIHRvRmlsZU1ldGF0YVR5cGUoc3RydWN0
IHN0YXQgZmlsZUluZm8pCi17Ci0gICAgaWYgKFNfSVNESVIoZmlsZUluZm8uc3RfbW9kZSkpCi0g
ICAgICAgIHJldHVybiBGaWxlTWV0YWRhdGE6OlR5cGU6OkRpcmVjdG9yeTsKLSAgICBpZiAoU19J
U0xOSyhmaWxlSW5mby5zdF9tb2RlKSkKLSAgICAgICAgcmV0dXJuIEZpbGVNZXRhZGF0YTo6VHlw
ZTo6U3ltYm9saWNMaW5rOwotICAgIHJldHVybiBGaWxlTWV0YWRhdGE6OlR5cGU6OkZpbGU7Ci19
Ci0KLXN0YXRpYyBPcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YVVzaW5nRnVuY3Rp
b24oY29uc3QgU3RyaW5nJiBwYXRoLCBpbnQgKCpzdGF0RnVuYykoY29uc3QgY2hhciosIHN0cnVj
dCBzdGF0KikpCi17Ci0gICAgQ1N0cmluZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihwYXRoKTsKLQotICAgIGlmICghZnNSZXAuZGF0YSgpIHx8IGZzUmVwLmRhdGEoKVswXSA9PSAn
XDAnKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgc3RydWN0IHN0YXQgZmls
ZUluZm87Ci0gICAgaWYgKHN0YXRGdW5jKGZzUmVwLmRhdGEoKSwgJmZpbGVJbmZvKSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIFN0cmluZyBmaWxlbmFtZSA9IHBhdGhHZXRG
aWxlTmFtZShwYXRoKTsKLSAgICBib29sIGlzSGlkZGVuID0gIWZpbGVuYW1lLmlzRW1wdHkoKSAm
JiBmaWxlbmFtZVswXSA9PSAnLic7Ci0gICAgcmV0dXJuIEZpbGVNZXRhZGF0YSB7Ci0gICAgICAg
IFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhmaWxlSW5mby5zdF9tdGltZSksCi0gICAgICAgIGZp
bGVJbmZvLnN0X3NpemUsCi0gICAgICAgIGlzSGlkZGVuLAotICAgICAgICB0b0ZpbGVNZXRhdGFU
eXBlKGZpbGVJbmZvKQotICAgIH07Ci19Ci0KLU9wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1l
dGFkYXRhKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICByZXR1cm4gZmlsZU1ldGFkYXRhVXNp
bmdGdW5jdGlvbihwYXRoLCAmbHN0YXQpOwotfQotCi1PcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZp
bGVNZXRhZGF0YUZvbGxvd2luZ1N5bWxpbmtzKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBy
ZXR1cm4gZmlsZU1ldGFkYXRhVXNpbmdGdW5jdGlvbihwYXRoLCAmc3RhdCk7Ci19Ci0KLWJvb2wg
Y3JlYXRlU3ltYm9saWNMaW5rKGNvbnN0IFN0cmluZyYgdGFyZ2V0UGF0aCwgY29uc3QgU3RyaW5n
JiBzeW1ib2xpY0xpbmtQYXRoKQotewotICAgIENTdHJpbmcgdGFyZ2V0UGF0aEZTUmVwID0gZmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKHRhcmdldFBhdGgpOwotICAgIGlmICghdGFyZ2V0UGF0aEZT
UmVwLmRhdGEoKSB8fCB0YXJnZXRQYXRoRlNSZXAuZGF0YSgpWzBdID09ICdcMCcpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgIENTdHJpbmcgc3ltYm9saWNMaW5rUGF0aEZTUmVwID0gZmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKHN5bWJvbGljTGlua1BhdGgpOwotICAgIGlmICghc3ltYm9s
aWNMaW5rUGF0aEZTUmVwLmRhdGEoKSB8fCBzeW1ib2xpY0xpbmtQYXRoRlNSZXAuZGF0YSgpWzBd
ID09ICdcMCcpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiAhc3ltbGluayh0
YXJnZXRQYXRoRlNSZXAuZGF0YSgpLCBzeW1ib2xpY0xpbmtQYXRoRlNSZXAuZGF0YSgpKTsKLX0K
LQotU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChjb25zdCBTdHJpbmcmIHBhdGgsIGNv
bnN0IFN0cmluZyYgY29tcG9uZW50KQotewotICAgIGlmIChwYXRoLmVuZHNXaXRoKCcvJykpCi0g
ICAgICAgIHJldHVybiBwYXRoICsgY29tcG9uZW50OwotICAgIHJldHVybiBwYXRoICsgIi8iICsg
Y29tcG9uZW50OwotfQotCi1TdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhTdHJpbmdW
aWV3IHBhdGgsIGNvbnN0IFZlY3RvcjxTdHJpbmdWaWV3PiYgY29tcG9uZW50cykKLXsKLSAgICBT
dHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5hcHBlbmQocGF0aCk7Ci0gICAgZm9y
IChhdXRvJiBjb21wb25lbnQgOiBjb21wb25lbnRzKSB7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5k
KCcvJyk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKGNvbXBvbmVudCk7Ci0gICAgfQotICAgIHJl
dHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Ci19Ci0KLWJvb2wgbWFrZUFsbERpcmVjdG9yaWVzKGNv
bnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBDU3RyaW5nIGZ1bGxQYXRoID0gZmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKHBhdGgpOwotICAgIGlmICghYWNjZXNzKGZ1bGxQYXRoLmRhdGEoKSwgRl9P
SykpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgY2hhciogcCA9IGZ1bGxQYXRoLm11dGFi
bGVEYXRhKCkgKyAxOwotICAgIGludCBsZW5ndGggPSBmdWxsUGF0aC5sZW5ndGgoKTsKLQotICAg
IGlmKHBbbGVuZ3RoIC0gMV0gPT0gJy8nKQotICAgICAgICBwW2xlbmd0aCAtIDFdID0gJ1wwJzsK
LSAgICBmb3IgKDsgKnA7ICsrcCkKLSAgICAgICAgaWYgKCpwID09ICcvJykgewotICAgICAgICAg
ICAgKnAgPSAnXDAnOwotICAgICAgICAgICAgaWYgKGFjY2VzcyhmdWxsUGF0aC5kYXRhKCksIEZf
T0spKQotICAgICAgICAgICAgICAgIGlmIChta2RpcihmdWxsUGF0aC5kYXRhKCksIFNfSVJXWFUp
KQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAqcCA9ICcv
JzsKLSAgICAgICAgfQotICAgIGlmIChhY2Nlc3MoZnVsbFBhdGguZGF0YSgpLCBGX09LKSkKLSAg
ICAgICAgaWYgKG1rZGlyKGZ1bGxQYXRoLmRhdGEoKSwgU19JUldYVSkpCi0gICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotU3RyaW5nIHBhdGhHZXRGaWxl
TmFtZShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgcmV0dXJuIHBhdGguc3Vic3RyaW5nKHBh
dGgucmV2ZXJzZUZpbmQoJy8nKSArIDEpOwotfQotCi1TdHJpbmcgZGlyZWN0b3J5TmFtZShjb25z
dCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgQ1N0cmluZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihwYXRoKTsKLQotICAgIGlmICghZnNSZXAuZGF0YSgpIHx8IGZzUmVwLmRhdGEoKVsw
XSA9PSAnXDAnKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICByZXR1cm4gU3RyaW5n
Ojpmcm9tVVRGOChkaXJuYW1lKGZzUmVwLm11dGFibGVEYXRhKCkpKTsKLX0KLQotVmVjdG9yPFN0
cmluZz4gbGlzdERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgZmls
dGVyKQotewotICAgIFZlY3RvcjxTdHJpbmc+IGVudHJpZXM7Ci0gICAgQ1N0cmluZyBjcGF0aCA9
IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKLSAgICBDU3RyaW5nIGNmaWx0ZXIgPSBm
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsdGVyKTsKLSAgICBESVIqIGRpciA9IG9wZW5kaXIo
Y3BhdGguZGF0YSgpKTsKLSAgICBpZiAoZGlyKSB7Ci0gICAgICAgIHN0cnVjdCBkaXJlbnQqIGRw
OwotICAgICAgICB3aGlsZSAoKGRwID0gcmVhZGRpcihkaXIpKSkgewotICAgICAgICAgICAgY29u
c3QgY2hhciogbmFtZSA9IGRwLT5kX25hbWU7Ci0gICAgICAgICAgICBpZiAoIXN0cmNtcChuYW1l
LCAiLiIpIHx8ICFzdHJjbXAobmFtZSwgIi4uIikpCi0gICAgICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgICAgICBpZiAoZm5tYXRjaChjZmlsdGVyLmRhdGEoKSwgbmFtZSwgMCkpCi0gICAg
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBjaGFyIGZpbGVQYXRoW1BBVEhfTUFY
XTsKLSAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihmaWxlUGF0aCkgLSAx
KSA8IHNucHJpbnRmKGZpbGVQYXRoLCBzaXplb2YoZmlsZVBhdGgpLCAiJXMvJXMiLCBjcGF0aC5k
YXRhKCksIG5hbWUpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOyAvLyBidWZmZXIgb3ZlcmZs
b3cKLQotICAgICAgICAgICAgYXV0byBzdHJpbmcgPSBzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGZpbGVQYXRoKTsKLQotICAgICAgICAgICAgLy8gU29tZSBmaWxlIHN5c3RlbSBy
ZXByZXNlbnRhdGlvbnMgY2Fubm90IGJlIHJlcHJlc2VudGVkIGFzIGEgVVRGLTE2IHN0cmluZywK
LSAgICAgICAgICAgIC8vIHNvIHRoaXMgc3RyaW5nIG1pZ2h0IGJlIG51bGwuCi0gICAgICAgICAg
ICBpZiAoIXN0cmluZy5pc051bGwoKSkKLSAgICAgICAgICAgICAgICBlbnRyaWVzLmFwcGVuZChX
VEZNb3ZlKHN0cmluZykpOwotICAgICAgICB9Ci0gICAgICAgIGNsb3NlZGlyKGRpcik7Ci0gICAg
fQotICAgIHJldHVybiBlbnRyaWVzOwotfQotCi0jaWYgIVBMQVRGT1JNKENPQ09BKQotU3RyaW5n
IHN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgY2hhciogcGF0aCkKLXsK
LSAgICBpZiAoIXBhdGgpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIHJldHVybiBT
dHJpbmc6OmZyb21VVEY4KHBhdGgpOwotfQotCi1DU3RyaW5nIGZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgcmV0dXJuIHBhdGgudXRmOCgpOwotfQot
Ci1ib29sIG1vdmVGaWxlKGNvbnN0IFN0cmluZyYgb2xkUGF0aCwgY29uc3QgU3RyaW5nJiBuZXdQ
YXRoKQotewotICAgIGF1dG8gb2xkRmlsZW5hbWUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
b2xkUGF0aCk7Ci0gICAgaWYgKG9sZEZpbGVuYW1lLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICBhdXRvIG5ld0ZpbGVuYW1lID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KG5ld1BhdGgpOwotICAgIGlmIChuZXdGaWxlbmFtZS5pc051bGwoKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgcmV0dXJuIHJlbmFtZShvbGRGaWxlbmFtZS5kYXRhKCksIG5ld0ZpbGVu
YW1lLmRhdGEoKSkgIT0gLTE7Ci19Ci0KLWJvb2wgZ2V0Vm9sdW1lRnJlZVNwYWNlKGNvbnN0IFN0
cmluZyYgcGF0aCwgdWludDY0X3QmIGZyZWVTcGFjZSkKLXsKLSAgICBzdHJ1Y3Qgc3RhdHZmcyBm
aWxlU3lzdGVtU3RhdDsKLSAgICBpZiAoc3RhdHZmcyhmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
cGF0aCkuZGF0YSgpLCAmZmlsZVN5c3RlbVN0YXQpKSB7Ci0gICAgICAgIGZyZWVTcGFjZSA9IGZp
bGVTeXN0ZW1TdGF0LmZfYmF2YWlsICogZmlsZVN5c3RlbVN0YXQuZl9mcnNpemU7Ci0gICAgICAg
IHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0jZW5kaWYKLQotI2lm
ICFPUyhEQVJXSU4pCi1TdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVm
aXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKQotewotICAgIGNoYXIgYnVmZmVyW1BBVEhf
TUFYXTsKLSAgICBjb25zdCBjaGFyKiB0bXBEaXIgPSBnZXRlbnYoIlRNUERJUiIpOwotCi0gICAg
aWYgKCF0bXBEaXIpCi0gICAgICAgIHRtcERpciA9ICIvdG1wIjsKLQotICAgIGlmIChzbnByaW50
ZihidWZmZXIsIFBBVEhfTUFYLCAiJXMvJXNYWFhYWFgiLCB0bXBEaXIsIHByZWZpeC51dGY4KCku
ZGF0YSgpKSA+PSBQQVRIX01BWCkKLSAgICAgICAgZ290byBlbmQ7Ci0KLSAgICBoYW5kbGUgPSBt
a3N0ZW1wKGJ1ZmZlcik7Ci0gICAgaWYgKGhhbmRsZSA8IDApCi0gICAgICAgIGdvdG8gZW5kOwot
Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyKTsKLQotZW5kOgotICAgIGhhbmRs
ZSA9IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7Ci0gICAgcmV0dXJuIFN0cmluZygpOwotfQot
I2VuZGlmCi0KLWJvb2wgaGFyZExpbmtPckNvcHlGaWxlKGNvbnN0IFN0cmluZyYgc291cmNlLCBj
b25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uKQotewotICAgIGlmIChzb3VyY2UuaXNFbXB0eSgpIHx8
IGRlc3RpbmF0aW9uLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgQ1N0
cmluZyBmc1NvdXJjZSA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihzb3VyY2UpOwotICAgIGlm
ICghZnNTb3VyY2UuZGF0YSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBDU3RyaW5n
IGZzRGVzdGluYXRpb24gPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGVzdGluYXRpb24pOwot
ICAgIGlmICghZnNEZXN0aW5hdGlvbi5kYXRhKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQot
ICAgIGlmICghbGluayhmc1NvdXJjZS5kYXRhKCksIGZzRGVzdGluYXRpb24uZGF0YSgpKSkKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAvLyBIYXJkIGxpbmsgZmFpbGVkLiBQZXJmb3JtIGEg
Y29weSBpbnN0ZWFkLgotICAgIGF1dG8gaGFuZGxlID0gb3Blbihmc0Rlc3RpbmF0aW9uLmRhdGEo
KSwgT19XUk9OTFkgfCBPX0NSRUFUIHwgT19FWENMLCAwNjY2KTsKLSAgICBpZiAoaGFuZGxlID09
IC0xKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBib29sIGFwcGVuZFJlc3VsdCA9IGFw
cGVuZEZpbGVDb250ZW50c1RvRmlsZUhhbmRsZShzb3VyY2UsIGhhbmRsZSk7Ci0gICAgY2xvc2Uo
aGFuZGxlKTsKLQotICAgIC8vIElmIHRoZSBjb3B5IGZhaWxlZCwgZGVsZXRlIHRoZSB1bnVzYWJs
ZSBmaWxlLgotICAgIGlmICghYXBwZW5kUmVzdWx0KQotICAgICAgICB1bmxpbmsoZnNEZXN0aW5h
dGlvbi5kYXRhKCkpOwotCi0gICAgcmV0dXJuIGFwcGVuZFJlc3VsdDsKLX0KLQotT3B0aW9uYWw8
aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0IENTdHJpbmcmIGZzRmlsZSkKLXsKLSAgICBz
dHJ1Y3Qgc3RhdCBmaWxlU3RhdDsKLSAgICBpZiAoc3RhdChmc0ZpbGUuZGF0YSgpLCAmZmlsZVN0
YXQpID09IC0xKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgcmV0dXJuIGZp
bGVTdGF0LnN0X2RldjsKLX0KLQotU3RyaW5nIHJlYWxQYXRoKGNvbnN0IFN0cmluZyYgZmlsZVBh
dGgpCi17Ci0gICAgQ1N0cmluZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWxl
UGF0aCk7Ci0gICAgY2hhciByZXNvbHZlZE5hbWVbUEFUSF9NQVhdOwotICAgIGNvbnN0IGNoYXIq
IHJlc3VsdCA9IHJlYWxwYXRoKGZzUmVwLmRhdGEoKSwgcmVzb2x2ZWROYW1lKTsKLSAgICByZXR1
cm4gcmVzdWx0ID8gU3RyaW5nOjpmcm9tVVRGOChyZXN1bHQpIDogZmlsZVBhdGg7Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIEZpbGVTeXN0ZW0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcAppbmRl
eCA1MTMzNzVkMjQ1ZWY0NWMxOTZhODU0NjE1Y2U3MGI3OGE5MGNlY2ZmLi44ZWQ1NzE3NDc3OGNi
N2JkYWRjYTM2NTE3ZmQ3OTQ0NTczOGM1MmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQT1NJWC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVyUE9TSVguY3BwCkBAIC0yNiwxMSArMjYsMTAgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKIAotI2luY2x1
ZGUgIkZpbGVTeXN0ZW0uaCIKLQogI2luY2x1ZGUgPGZjbnRsLmg+CiAjaW5jbHVkZSA8c3lzL3N0
YXQuaD4KICNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uY3BwCmluZGV4
IDkwYzIwYzdiY2U2YTY3YjY3ZDUzZDVjNDA1Mzc3NmJmMTRjN2U1ZTUuLjM2NGJmZjcxMDc0OTc4
OTZmN2IxZDc1N2E3ZDlhNWZjM2FkM2Y2NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5jcHAKQEAgLTMxLDEwICszMSwxMCBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNRTGl0ZUZpbGVTeXN0ZW0uaCIKIAotI2luY2x1ZGUg
IkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZS5oIgogI2luY2x1ZGUgIlNR
TGl0ZVN0YXRlbWVudC5oIgogI2luY2x1ZGUgPHNxbGl0ZTMuaD4KKyNpbmNsdWRlIDx3dGYvRmls
ZVN5c3RlbS5oPgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbmNsdWRlIDxwYWwvc3Bp
L2lvcy9TUUxpdGUzU1BJLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAKaW5kZXggMmQ3YjY2ZDkz
NzkwNWRjYzIyZjRhMTNlOTVhMGFmMDZiYjQ4YjdhZi4uNWVlYjliZmE3NDAwZjcyMTVjMDI2YzU1
MmQ4MmFhMzhhNzYzZjk0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9oeXBoZW4vSHlwaGVuYXRpb25MaWJIeXBoZW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGliSHlwaGVuLmNwcApAQCAtMjksMTAgKzI5
LDEwIEBACiAKICNpZiBVU0UoTElCSFlQSEVOKQogCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgog
I2luY2x1ZGUgPGh5cGhlbi5oPgogI2luY2x1ZGUgPGxpbWl0cz4KICNpbmNsdWRlIDxzdGRsaWIu
aD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1RpbnlMUlVD
YWNoZS5oPgpAQCAtMjI0LDcgKzIyNCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBSZWZQdHI8
V2ViQ29yZTo6SHlwaGVuYXRpb25EaWN0aW9uYXJ5PiBjcmVhdGVWYWx1ZUZvcktleShjb25zdCBB
dG9taWNTdHJpbmcmIGRpY3Rpb25hcnlQYXRoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIFdlYkNv
cmU6Okh5cGhlbmF0aW9uRGljdGlvbmFyeTo6Y3JlYXRlKFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihkaWN0aW9uYXJ5UGF0aC5zdHJpbmcoKSkpOworICAgICAg
ICByZXR1cm4gV2ViQ29yZTo6SHlwaGVuYXRpb25EaWN0aW9uYXJ5OjpjcmVhdGUoRmlsZVN5c3Rl
bTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRpY3Rpb25hcnlQYXRoLnN0cmluZygpKSk7CiAg
ICAgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0ZpbGVT
eXN0ZW1XaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0ZpbGVTeXN0ZW1XaW4u
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYjcwMmNiMDEyMGFiYmYyNTg1Mjlm
YWY5NDMxMGRkZmZmZGY2MDg0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2luLmNwcAor
KysgL2Rldi9udWxsCkBAIC0xLDU4OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3
LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAy
MDA4IENvbGxhYm9yYSwgTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4gCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4gCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3Ig
dGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIkZpbGVTeXN0ZW0uaCIKLQotI2luY2x1ZGUgIkZpbGVNZXRhZGF0YS5oIgotI2luY2x1
ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSAiUGF0aFdhbGtlci5oIgotI2luY2x1ZGUg
PGlvLmg+Ci0jaW5jbHVkZSA8c2hsb2JqLmg+Ci0jaW5jbHVkZSA8c2hsd2FwaS5oPgotI2luY2x1
ZGUgPHN5cy9zdGF0Lmg+Ci0jaW5jbHVkZSA8d2luZG93cy5oPgotI2luY2x1ZGUgPHd0Zi9Dcnlw
dG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0j
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgRmlsZVN5c3RlbSB7Ci0KLXN0YXRpYyBj
b25zdCBVTE9OR0xPTkcga1NlY29uZHNGcm9tRmlsZVRpbWVUb1RpbWV0ID0gMTE2NDQ0NzM2MDA7
Ci0KLXN0YXRpYyBib29sIGdldEZpbmREYXRhKFN0cmluZyBwYXRoLCBXSU4zMl9GSU5EX0RBVEFX
JiBmaW5kRGF0YSkKLXsKLSAgICBIQU5ETEUgaGFuZGxlID0gRmluZEZpcnN0RmlsZVcoc3RyaW5n
VG9OdWxsVGVybWluYXRlZFdDaGFyKHBhdGgpLmRhdGEoKSwgJmZpbmREYXRhKTsKLSAgICBpZiAo
aGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgRmluZENsb3NlKGhhbmRsZSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXN0YXRpYyBib29s
IGdldEZpbGVTaXplRnJvbUZpbmREYXRhKGNvbnN0IFdJTjMyX0ZJTkRfREFUQVcmIGZpbmREYXRh
LCBsb25nIGxvbmcmIHNpemUpCi17Ci0gICAgVUxBUkdFX0lOVEVHRVIgZmlsZVNpemU7Ci0gICAg
ZmlsZVNpemUuSGlnaFBhcnQgPSBmaW5kRGF0YS5uRmlsZVNpemVIaWdoOwotICAgIGZpbGVTaXpl
Lkxvd1BhcnQgPSBmaW5kRGF0YS5uRmlsZVNpemVMb3c7Ci0KLSAgICBpZiAoZmlsZVNpemUuUXVh
ZFBhcnQgPiBzdGF0aWNfY2FzdDxVTE9OR0xPTkc+KHN0ZDo6bnVtZXJpY19saW1pdHM8bG9uZyBs
b25nPjo6bWF4KCkpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBzaXplID0gZmlsZVNp
emUuUXVhZFBhcnQ7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXN0YXRpYyBib29sIGdldEZpbGVT
aXplRnJvbUJ5SGFuZGxlRmlsZUluZm9ybWF0aW9uU3RydWN0dXJlKGNvbnN0IEJZX0hBTkRMRV9G
SUxFX0lORk9STUFUSU9OJiBmaWxlSW5mb3JtYXRpb24sIGxvbmcgbG9uZyYgc2l6ZSkKLXsKLSAg
ICBVTEFSR0VfSU5URUdFUiBmaWxlU2l6ZTsKLSAgICBmaWxlU2l6ZS5IaWdoUGFydCA9IGZpbGVJ
bmZvcm1hdGlvbi5uRmlsZVNpemVIaWdoOwotICAgIGZpbGVTaXplLkxvd1BhcnQgPSBmaWxlSW5m
b3JtYXRpb24ubkZpbGVTaXplTG93OwotCi0gICAgaWYgKGZpbGVTaXplLlF1YWRQYXJ0ID4gc3Rh
dGljX2Nhc3Q8VUxPTkdMT05HPihzdGQ6Om51bWVyaWNfbGltaXRzPGxvbmcgbG9uZz46Om1heCgp
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgc2l6ZSA9IGZpbGVTaXplLlF1YWRQYXJ0
OwotICAgIHJldHVybiB0cnVlOwotfQotCi1zdGF0aWMgdm9pZCBnZXRGaWxlQ3JlYXRpb25UaW1l
RnJvbUZpbmREYXRhKGNvbnN0IFdJTjMyX0ZJTkRfREFUQVcmIGZpbmREYXRhLCB0aW1lX3QmIHRp
bWUpCi17Ci0gICAgVUxBUkdFX0lOVEVHRVIgZmlsZVRpbWU7Ci0gICAgZmlsZVRpbWUuSGlnaFBh
cnQgPSBmaW5kRGF0YS5mdENyZWF0aW9uVGltZS5kd0hpZ2hEYXRlVGltZTsKLSAgICBmaWxlVGlt
ZS5Mb3dQYXJ0ID0gZmluZERhdGEuZnRDcmVhdGlvblRpbWUuZHdMb3dEYXRlVGltZTsKLQotICAg
IC8vIEluZm9ybWF0aW9uIGFib3V0IGNvbnZlcnRpbmcgdGltZV90IHRvIEZpbGVUaW1lIGlzIGF2
YWlsYWJsZSBhdCBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvbXM3MjQy
MjglMjh2PXZzLjg1JTI5LmFzcHgKLSAgICB0aW1lID0gZmlsZVRpbWUuUXVhZFBhcnQgLyAxMDAw
MDAwMCAtIGtTZWNvbmRzRnJvbUZpbGVUaW1lVG9UaW1ldDsKLX0KLQotCi1zdGF0aWMgdm9pZCBn
ZXRGaWxlTW9kaWZpY2F0aW9uVGltZUZyb21GaW5kRGF0YShjb25zdCBXSU4zMl9GSU5EX0RBVEFX
JiBmaW5kRGF0YSwgdGltZV90JiB0aW1lKQotewotICAgIFVMQVJHRV9JTlRFR0VSIGZpbGVUaW1l
OwotICAgIGZpbGVUaW1lLkhpZ2hQYXJ0ID0gZmluZERhdGEuZnRMYXN0V3JpdGVUaW1lLmR3SGln
aERhdGVUaW1lOwotICAgIGZpbGVUaW1lLkxvd1BhcnQgPSBmaW5kRGF0YS5mdExhc3RXcml0ZVRp
bWUuZHdMb3dEYXRlVGltZTsKLQotICAgIC8vIEluZm9ybWF0aW9uIGFib3V0IGNvbnZlcnRpbmcg
dGltZV90IHRvIEZpbGVUaW1lIGlzIGF2YWlsYWJsZSBhdCBodHRwOi8vbXNkbi5taWNyb3NvZnQu
Y29tL2VuLXVzL2xpYnJhcnkvbXM3MjQyMjglMjh2PXZzLjg1JTI5LmFzcHgKLSAgICB0aW1lID0g
ZmlsZVRpbWUuUXVhZFBhcnQgLyAxMDAwMDAwMCAtIGtTZWNvbmRzRnJvbUZpbGVUaW1lVG9UaW1l
dDsKLX0KLQotYm9vbCBnZXRGaWxlU2l6ZShjb25zdCBTdHJpbmcmIHBhdGgsIGxvbmcgbG9uZyYg
c2l6ZSkKLXsKLSAgICBXSU4zMl9GSU5EX0RBVEFXIGZpbmREYXRhOwotICAgIGlmICghZ2V0Rmlu
ZERhdGEocGF0aCwgZmluZERhdGEpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1
cm4gZ2V0RmlsZVNpemVGcm9tRmluZERhdGEoZmluZERhdGEsIHNpemUpOwotfQotCi1ib29sIGdl
dEZpbGVTaXplKFBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlSGFuZGxlLCBsb25nIGxvbmcmIHNpemUp
Ci17Ci0gICAgQllfSEFORExFX0ZJTEVfSU5GT1JNQVRJT04gZmlsZUluZm9ybWF0aW9uOwotICAg
IGlmICghOjpHZXRGaWxlSW5mb3JtYXRpb25CeUhhbmRsZShmaWxlSGFuZGxlLCAmZmlsZUluZm9y
bWF0aW9uKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIGdldEZpbGVTaXpl
RnJvbUJ5SGFuZGxlRmlsZUluZm9ybWF0aW9uU3RydWN0dXJlKGZpbGVJbmZvcm1hdGlvbiwgc2l6
ZSk7Ci19Ci0KLU9wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25z
dCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgV0lOMzJfRklORF9EQVRBVyBmaW5kRGF0YTsKLSAgICBp
ZiAoIWdldEZpbmREYXRhKHBhdGgsIGZpbmREYXRhKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKLQotICAgIHRpbWVfdCB0aW1lID0gMDsKLSAgICBnZXRGaWxlTW9kaWZpY2F0aW9uVGlt
ZUZyb21GaW5kRGF0YShmaW5kRGF0YSwgdGltZSk7Ci0gICAgcmV0dXJuIFdhbGxUaW1lOjpmcm9t
UmF3U2Vjb25kcyh0aW1lKTsKLX0KLQotT3B0aW9uYWw8V2FsbFRpbWU+IGdldEZpbGVDcmVhdGlv
blRpbWUoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIFdJTjMyX0ZJTkRfREFUQVcgZmluZERh
dGE7Ci0gICAgaWYgKCFnZXRGaW5kRGF0YShwYXRoLCBmaW5kRGF0YSkpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7Ci0KLSAgICB0aW1lX3QgdGltZSA9IDA7Ci0gICAgZ2V0RmlsZUNyZWF0
aW9uVGltZUZyb21GaW5kRGF0YShmaW5kRGF0YSwgdGltZSk7Ci0gICAgcmV0dXJuIFdhbGxUaW1l
Ojpmcm9tUmF3U2Vjb25kcyh0aW1lKTsKLX0KLQotc3RhdGljIFN0cmluZyBnZXRGaW5hbFBhdGhO
YW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBhdXRvIGhhbmRsZSA9IG9wZW5GaWxlKHBh
dGgsIEZpbGVPcGVuTW9kZTo6UmVhZCk7Ci0gICAgaWYgKCFpc0hhbmRsZVZhbGlkKGhhbmRsZSkp
Ci0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIFZlY3RvcjxVQ2hhcj4gYnVmZmVyKE1B
WF9QQVRIKTsKLSAgICBpZiAoOjpHZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGVXKGhhbmRsZSwgYnVm
ZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSwgVk9MVU1FX05BTUVfTlQpID49IE1BWF9QQVRIKSB7
Ci0gICAgICAgIGNsb3NlRmlsZShoYW5kbGUpOwotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0g
ICAgfQotICAgIGNsb3NlRmlsZShoYW5kbGUpOwotCi0gICAgYnVmZmVyLnNocmluayh3Y3NsZW4o
YnVmZmVyLmRhdGEoKSkpOwotICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KFdURk1vdmUoYnVmZmVy
KSk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBpc1N5bWJvbGljTGluayhXSU4zMl9GSU5EX0RB
VEFXIGZpbmREYXRhKQotewotICAgIHJldHVybiBmaW5kRGF0YS5kd0ZpbGVBdHRyaWJ1dGVzICYg
RklMRV9BVFRSSUJVVEVfUkVQQVJTRV9QT0lOVCAmJiBmaW5kRGF0YS5kd1Jlc2VydmVkMCA9PSBJ
T19SRVBBUlNFX1RBR19TWU1MSU5LOwotfQotCi1zdGF0aWMgRmlsZU1ldGFkYXRhOjpUeXBlIHRv
RmlsZU1ldGFkYXRhVHlwZShXSU4zMl9GSU5EX0RBVEFXIGZpbmREYXRhKQotewotICAgIGlmIChm
aW5kRGF0YS5kd0ZpbGVBdHRyaWJ1dGVzICYgRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZKQotICAg
ICAgICByZXR1cm4gRmlsZU1ldGFkYXRhOjpUeXBlOjpEaXJlY3Rvcnk7Ci0gICAgaWYgKGlzU3lt
Ym9saWNMaW5rKGZpbmREYXRhKSkKLSAgICAgICAgcmV0dXJuIEZpbGVNZXRhZGF0YTo6VHlwZTo6
U3ltYm9saWNMaW5rOwotICAgIHJldHVybiBGaWxlTWV0YWRhdGE6OlR5cGU6OkZpbGU7Ci19Ci0K
LXN0YXRpYyBPcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbmREYXRhVG9GaWxlTWV0YWRhdGEoV0lO
MzJfRklORF9EQVRBVyBmaW5kRGF0YSkKLXsKLSAgICBsb25nIGxvbmcgbGVuZ3RoOwotICAgIGlm
ICghZ2V0RmlsZVNpemVGcm9tRmluZERhdGEoZmluZERhdGEsIGxlbmd0aCkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICB0aW1lX3QgbW9kaWZpY2F0aW9uVGltZTsKLSAgICBn
ZXRGaWxlTW9kaWZpY2F0aW9uVGltZUZyb21GaW5kRGF0YShmaW5kRGF0YSwgbW9kaWZpY2F0aW9u
VGltZSk7Ci0KLSAgICByZXR1cm4gRmlsZU1ldGFkYXRhIHsKLSAgICAgICAgV2FsbFRpbWU6OmZy
b21SYXdTZWNvbmRzKG1vZGlmaWNhdGlvblRpbWUpLAotICAgICAgICBsZW5ndGgsCi0gICAgICAg
IHN0YXRpY19jYXN0PGJvb2w+KGZpbmREYXRhLmR3RmlsZUF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJ
QlVURV9ISURERU4pLAotICAgICAgICB0b0ZpbGVNZXRhZGF0YVR5cGUoZmluZERhdGEpCi0gICAg
fTsKLX0KLQotT3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGEoY29uc3QgU3RyaW5n
JiBwYXRoKQotewotICAgIFdJTjMyX0ZJTkRfREFUQVcgZmluZERhdGE7Ci0gICAgaWYgKCFnZXRG
aW5kRGF0YShwYXRoLCBmaW5kRGF0YSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0K
LSAgICByZXR1cm4gZmluZERhdGFUb0ZpbGVNZXRhZGF0YShmaW5kRGF0YSk7Ci19Ci0KLU9wdGlv
bmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3MoY29uc3QgU3Ry
aW5nJiBwYXRoKQotewotICAgIFdJTjMyX0ZJTkRfREFUQVcgZmluZERhdGE7Ci0gICAgaWYgKCFn
ZXRGaW5kRGF0YShwYXRoLCBmaW5kRGF0YSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
Ci0KLSAgICBpZiAoaXNTeW1ib2xpY0xpbmsoZmluZERhdGEpKSB7Ci0gICAgICAgIFN0cmluZyB0
YXJnZXRQYXRoID0gZ2V0RmluYWxQYXRoTmFtZShwYXRoKTsKLSAgICAgICAgaWYgKHRhcmdldFBh
dGguaXNOdWxsKCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgICAgICBp
ZiAoIWdldEZpbmREYXRhKHRhcmdldFBhdGgsIGZpbmREYXRhKSkKLSAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZpbmREYXRhVG9GaWxlTWV0YWRh
dGEoZmluZERhdGEpOwotfQotCi1ib29sIGNyZWF0ZVN5bWJvbGljTGluayhjb25zdCBTdHJpbmcm
IHRhcmdldFBhdGgsIGNvbnN0IFN0cmluZyYgc3ltYm9saWNMaW5rUGF0aCkKLXsKLSAgICByZXR1
cm4gITo6Q3JlYXRlU3ltYm9saWNMaW5rVyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoc3lt
Ym9saWNMaW5rUGF0aCkuZGF0YSgpLCBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIodGFyZ2V0
UGF0aCkuZGF0YSgpLCAwKTsKLX0KLQotYm9vbCBmaWxlRXhpc3RzKGNvbnN0IFN0cmluZyYgcGF0
aCkKLXsKLSAgICBXSU4zMl9GSU5EX0RBVEFXIGZpbmREYXRhOwotICAgIHJldHVybiBnZXRGaW5k
RGF0YShwYXRoLCBmaW5kRGF0YSk7Ci19Ci0KLWJvb2wgZGVsZXRlRmlsZShjb25zdCBTdHJpbmcm
IHBhdGgpCi17Ci0gICAgU3RyaW5nIGZpbGVuYW1lID0gcGF0aDsKLSAgICByZXR1cm4gISFEZWxl
dGVGaWxlVyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoZmlsZW5hbWUpLmRhdGEoKSk7Ci19
Ci0KLWJvb2wgZGVsZXRlRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAg
IFN0cmluZyBmaWxlbmFtZSA9IHBhdGg7Ci0gICAgcmV0dXJuICEhUmVtb3ZlRGlyZWN0b3J5Vyhz
dHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoZmlsZW5hbWUpLmRhdGEoKSk7Ci19Ci0KLWJvb2wg
bW92ZUZpbGUoY29uc3QgU3RyaW5nJiBvbGRQYXRoLCBjb25zdCBTdHJpbmcmIG5ld1BhdGgpCi17
Ci0gICAgU3RyaW5nIG9sZEZpbGVuYW1lID0gb2xkUGF0aDsKLSAgICBTdHJpbmcgbmV3RmlsZW5h
bWUgPSBuZXdQYXRoOwotICAgIHJldHVybiAhITo6TW92ZUZpbGVFeChzdHJpbmdUb051bGxUZXJt
aW5hdGVkV0NoYXIob2xkRmlsZW5hbWUpLmRhdGEoKSwgc3RyaW5nVG9OdWxsVGVybWluYXRlZFdD
aGFyKG5ld0ZpbGVuYW1lKS5kYXRhKCksIE1PVkVGSUxFX0NPUFlfQUxMT1dFRCB8IE1PVkVGSUxF
X1JFUExBQ0VfRVhJU1RJTkcpOwotfQotCi1TdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb21wb25lbnQpCi17Ci0gICAgVmVj
dG9yPFVDaGFyPiBidWZmZXIoTUFYX1BBVEgpOwotCi0gICAgaWYgKHBhdGgubGVuZ3RoKCkgKyAx
ID4gYnVmZmVyLnNpemUoKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgU3RyaW5n
VmlldyhwYXRoKS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChidWZmZXIuZGF0YSgpKTsKLSAg
ICBidWZmZXJbcGF0aC5sZW5ndGgoKV0gPSAnXDAnOwotCi0gICAgaWYgKCFQYXRoQXBwZW5kVyhi
dWZmZXIuZGF0YSgpLCBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoY29tcG9uZW50KS5kYXRh
KCkpKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICBidWZmZXIuc2hyaW5rKHdjc2xl
bihidWZmZXIuZGF0YSgpKSk7Ci0KLSAgICByZXR1cm4gU3RyaW5nOjphZG9wdChXVEZNb3ZlKGJ1
ZmZlcikpOwotfQotCi1TdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhTdHJpbmdWaWV3
IHBhdGgsIGNvbnN0IFZlY3RvcjxTdHJpbmdWaWV3PiYgY29tcG9uZW50cykKLXsKLSAgICBTdHJp
bmcgcmVzdWx0ID0gcGF0aC50b1N0cmluZygpOwotICAgIGZvciAoYXV0byYgY29tcG9uZW50IDog
Y29tcG9uZW50cykKLSAgICAgICAgcmVzdWx0ID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJl
c3VsdCwgY29tcG9uZW50LnRvU3RyaW5nKCkpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLSNp
ZiAhVVNFKENGKQotCi1DU3RyaW5nIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJp
bmcmIHBhdGgpCi17Ci0gICAgYXV0byB1cGNvbnZlcnRlZENoYXJhY3RlcnMgPSBwYXRoLnVwY29u
dmVydGVkQ2hhcmFjdGVycygpOwotCi0gICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMgPSB1cGNv
bnZlcnRlZENoYXJhY3RlcnM7Ci0gICAgaW50IHNpemUgPSBXaWRlQ2hhclRvTXVsdGlCeXRlKENQ
X0FDUCwgMCwgY2hhcmFjdGVycywgcGF0aC5sZW5ndGgoKSwgMCwgMCwgMCwgMCkgLSAxOwotCi0g
ICAgY2hhciogYnVmZmVyOwotICAgIENTdHJpbmcgc3RyaW5nID0gQ1N0cmluZzo6bmV3VW5pbml0
aWFsaXplZChzaXplLCBidWZmZXIpOwotCi0gICAgV2lkZUNoYXJUb011bHRpQnl0ZShDUF9BQ1As
IDAsIGNoYXJhY3RlcnMsIHBhdGgubGVuZ3RoKCksIGJ1ZmZlciwgc2l6ZSwgMCwgMCk7Ci0KLSAg
ICByZXR1cm4gc3RyaW5nOwotfQotCi0jZW5kaWYgLy8gIVVTRShDRikKLQotYm9vbCBtYWtlQWxs
RGlyZWN0b3JpZXMoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIFN0cmluZyBmdWxsUGF0aCA9
IHBhdGg7Ci0gICAgaWYgKFNIQ3JlYXRlRGlyZWN0b3J5RXgoMCwgc3RyaW5nVG9OdWxsVGVybWlu
YXRlZFdDaGFyKGZ1bGxQYXRoKS5kYXRhKCksIDApICE9IEVSUk9SX1NVQ0NFU1MpIHsKLSAgICAg
ICAgRFdPUkQgZXJyb3IgPSBHZXRMYXN0RXJyb3IoKTsKLSAgICAgICAgaWYgKGVycm9yICE9IEVS
Uk9SX0ZJTEVfRVhJU1RTICYmIGVycm9yICE9IEVSUk9SX0FMUkVBRFlfRVhJU1RTKSB7Ci0gICAg
ICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgcGF0aCAlcyIsIHBhdGguYXNjaWko
KS5kYXRhKCkpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQot
ICAgIHJldHVybiB0cnVlOwotfQotCi1TdHJpbmcgaG9tZURpcmVjdG9yeVBhdGgoKQotewotICAg
IG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuICIiOwotfQotCi1TdHJpbmcgcGF0aEdldEZp
bGVOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICByZXR1cm4gbnVsbFRlcm1pbmF0ZWRX
Q2hhclRvU3RyaW5nKDo6UGF0aEZpbmRGaWxlTmFtZShzdHJpbmdUb051bGxUZXJtaW5hdGVkV0No
YXIocGF0aCkuZGF0YSgpKSk7Ci19Ci0KLVN0cmluZyBkaXJlY3RvcnlOYW1lKGNvbnN0IFN0cmlu
ZyYgcGF0aCkKLXsKLSAgICBTdHJpbmcgbmFtZSA9IHBhdGgubGVmdChwYXRoLmxlbmd0aCgpIC0g
cGF0aEdldEZpbGVOYW1lKHBhdGgpLmxlbmd0aCgpKTsKLSAgICBpZiAobmFtZS5jaGFyYWN0ZXJT
dGFydGluZ0F0KG5hbWUubGVuZ3RoKCkgLSAxKSA9PSAnXFwnKSB7Ci0gICAgICAgIC8vIFJlbW92
ZSBhbnkgdHJhaWxpbmcgIlwiLgotICAgICAgICBuYW1lLnRydW5jYXRlKG5hbWUubGVuZ3RoKCkg
LSAxKTsKLSAgICB9Ci0gICAgcmV0dXJuIG5hbWU7Ci19Ci0KLXN0YXRpYyBTdHJpbmcgYnVuZGxl
TmFtZSgpCi17Ci0gICAgc3RhdGljIGNvbnN0IE5ldmVyRGVzdHJveWVkPFN0cmluZz4gbmFtZSA9
IFtdIHsKLSAgICAgICAgU3RyaW5nIG5hbWUgeyAiV2ViS2l0Il9zIH07Ci0KLSNpZiBVU0UoQ0Yp
Ci0gICAgICAgIGlmIChDRkJ1bmRsZVJlZiBidW5kbGUgPSBDRkJ1bmRsZUdldE1haW5CdW5kbGUo
KSkgewotICAgICAgICAgICAgaWYgKENGVHlwZVJlZiBidW5kbGVFeGVjdXRhYmxlID0gQ0ZCdW5k
bGVHZXRWYWx1ZUZvckluZm9EaWN0aW9uYXJ5S2V5KGJ1bmRsZSwga0NGQnVuZGxlRXhlY3V0YWJs
ZUtleSkpIHsKLSAgICAgICAgICAgICAgICBpZiAoQ0ZHZXRUeXBlSUQoYnVuZGxlRXhlY3V0YWJs
ZSkgPT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkKLSAgICAgICAgICAgICAgICAgICAgbmFtZSA9IHJl
aW50ZXJwcmV0X2Nhc3Q8Q0ZTdHJpbmdSZWY+KGJ1bmRsZUV4ZWN1dGFibGUpOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0jZW5kaWYKLQotICAgICAgICByZXR1cm4gbmFtZTsKLSAgICB9KCk7
Ci0KLSAgICByZXR1cm4gbmFtZTsKLX0KLQotc3RhdGljIFN0cmluZyBzdG9yYWdlRGlyZWN0b3J5
KERXT1JEIHBhdGhJZGVudGlmaWVyKQotewotICAgIFZlY3RvcjxVQ2hhcj4gYnVmZmVyKE1BWF9Q
QVRIKTsKLSAgICBpZiAoRkFJTEVEKFNIR2V0Rm9sZGVyUGF0aFcoMCwgcGF0aElkZW50aWZpZXIg
fCBDU0lETF9GTEFHX0NSRUFURSwgMCwgMCwgYnVmZmVyLmRhdGEoKSkpKQotICAgICAgICByZXR1
cm4gU3RyaW5nKCk7Ci0gICAgYnVmZmVyLnJlc2l6ZSh3Y3NsZW4oYnVmZmVyLmRhdGEoKSkpOwot
ICAgIFN0cmluZyBkaXJlY3RvcnkgPSBTdHJpbmc6OmFkb3B0KFdURk1vdmUoYnVmZmVyKSk7Ci0K
LSAgICBkaXJlY3RvcnkgPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGlyZWN0b3J5LCAiQXBw
bGUgQ29tcHV0ZXJcXCIgKyBidW5kbGVOYW1lKCkpOwotICAgIGlmICghbWFrZUFsbERpcmVjdG9y
aWVzKGRpcmVjdG9yeSkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIHJldHVybiBk
aXJlY3Rvcnk7Ci19Ci0KLXN0YXRpYyBTdHJpbmcgY2FjaGVkU3RvcmFnZURpcmVjdG9yeShEV09S
RCBwYXRoSWRlbnRpZmllcikKLXsKLSAgICBzdGF0aWMgSGFzaE1hcDxEV09SRCwgU3RyaW5nPiBk
aXJlY3RvcmllczsKLQotICAgIEhhc2hNYXA8RFdPUkQsIFN0cmluZz46Oml0ZXJhdG9yIGl0ID0g
ZGlyZWN0b3JpZXMuZmluZChwYXRoSWRlbnRpZmllcik7Ci0gICAgaWYgKGl0ICE9IGRpcmVjdG9y
aWVzLmVuZCgpKQotICAgICAgICByZXR1cm4gaXQtPnZhbHVlOwotCi0gICAgU3RyaW5nIGRpcmVj
dG9yeSA9IHN0b3JhZ2VEaXJlY3RvcnkocGF0aElkZW50aWZpZXIpOwotICAgIGRpcmVjdG9yaWVz
LmFkZChwYXRoSWRlbnRpZmllciwgZGlyZWN0b3J5KTsKLQotICAgIHJldHVybiBkaXJlY3Rvcnk7
Ci19Ci0KLXN0YXRpYyBTdHJpbmcgZ2VuZXJhdGVUZW1wb3JhcnlQYXRoKGNvbnN0IEZ1bmN0aW9u
PGJvb2woY29uc3QgU3RyaW5nJik+JiBhY3Rpb24pCi17Ci0gICAgd2NoYXJfdCB0ZW1wUGF0aFtN
QVhfUEFUSF07Ci0gICAgaW50IHRlbXBQYXRoTGVuZ3RoID0gOjpHZXRUZW1wUGF0aFcoV1RGX0FS
UkFZX0xFTkdUSCh0ZW1wUGF0aCksIHRlbXBQYXRoKTsKLSAgICBpZiAodGVtcFBhdGhMZW5ndGgg
PD0gMCB8fCB0ZW1wUGF0aExlbmd0aCA+IFdURl9BUlJBWV9MRU5HVEgodGVtcFBhdGgpKQotICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICBTdHJpbmcgcHJvcG9zZWRQYXRoOwotICAgIGRv
IHsKLSAgICAgICAgd2NoYXJfdCB0ZW1wRmlsZVtdID0gTCJYWFhYWFhYWC50bXAiOyAvLyBVc2Ug
OC4zIHN0eWxlIG5hbWUgKG1vcmUgY2hhcmFjdGVycyBhcmVuJ3QgaGVscGZ1bCBkdWUgdG8gOC4z
IHNob3J0IGZpbGUgbmFtZXMpCi0gICAgICAgIGNvbnN0IGludCByYW5kb21QYXJ0TGVuZ3RoID0g
ODsKLSAgICAgICAgY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21WYWx1ZXModGVtcEZpbGUsIHJhbmRv
bVBhcnRMZW5ndGggKiBzaXplb2Yod2NoYXJfdCkpOwotCi0gICAgICAgIC8vIExpbWl0IHRvIHZh
bGlkIGZpbGVzeXN0ZW0gY2hhcmFjdGVycywgYWxzbyBleGNsdWRpbmcgb3RoZXJzIHRoYXQgY291
bGQgYmUgcHJvYmxlbWF0aWMsIGxpa2UgcHVuY3R1YXRpb24uCi0gICAgICAgIC8vIGRvbid0IGlu
Y2x1ZGUgYm90aCB1cHBlciBhbmQgbG93ZXJjYXNlIHNpbmNlIFdpbmRvd3MgZmlsZSBzeXN0ZW1z
IGFyZSB0eXBpY2FsbHkgbm90IGNhc2Ugc2Vuc2l0aXZlLgotICAgICAgICBjb25zdCBjaGFyIHZh
bGlkQ2hhcnNbXSA9ICIwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiOwotICAg
ICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJhbmRvbVBhcnRMZW5ndGg7ICsraSkKLSAgICAgICAg
ICAgIHRlbXBGaWxlW2ldID0gdmFsaWRDaGFyc1t0ZW1wRmlsZVtpXSAlIChzaXplb2YodmFsaWRD
aGFycykgLSAxKV07Ci0KLSAgICAgICAgQVNTRVJUKHdjc2xlbih0ZW1wRmlsZSkgPT0gV1RGX0FS
UkFZX0xFTkdUSCh0ZW1wRmlsZSkgLSAxKTsKLQotICAgICAgICBwcm9wb3NlZFBhdGggPSBwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQobnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5nKHRlbXBQYXRo
KSwgbnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5nKHRlbXBGaWxlKSk7Ci0gICAgICAgIGlmIChw
cm9wb3NlZFBhdGguaXNFbXB0eSgpKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfSB3aGlsZSAo
IWFjdGlvbihwcm9wb3NlZFBhdGgpKTsKLQotICAgIHJldHVybiBwcm9wb3NlZFBhdGg7Ci19Ci0K
LVN0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmLCBQbGF0Zm9ybUZpbGVIYW5k
bGUmIGhhbmRsZSkKLXsKLSAgICBoYW5kbGUgPSBJTlZBTElEX0hBTkRMRV9WQUxVRTsKLQotICAg
IFN0cmluZyBwcm9wb3NlZFBhdGggPSBnZW5lcmF0ZVRlbXBvcmFyeVBhdGgoWyZoYW5kbGVdKGNv
bnN0IFN0cmluZyYgcHJvcG9zZWRQYXRoKSB7Ci0gICAgICAgIC8vIHVzZSBDUkVBVEVfTkVXIHRv
IGF2b2lkIG92ZXJ3cml0aW5nIGFuIGV4aXN0aW5nIGZpbGUgd2l0aCB0aGUgc2FtZSBuYW1lCi0g
ICAgICAgIGhhbmRsZSA9IDo6Q3JlYXRlRmlsZVcoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFy
KHByb3Bvc2VkUGF0aCkuZGF0YSgpLCBHRU5FUklDX1JFQUQgfCBHRU5FUklDX1dSSVRFLCAwLCAw
LCBDUkVBVEVfTkVXLCBGSUxFX0FUVFJJQlVURV9OT1JNQUwsIDApOwotCi0gICAgICAgIHJldHVy
biBpc0hhbmRsZVZhbGlkKGhhbmRsZSkgfHwgR2V0TGFzdEVycm9yKCkgPT0gRVJST1JfQUxSRUFE
WV9FWElTVFM7Ci0gICAgfSk7Ci0KLSAgICBpZiAoIWlzSGFuZGxlVmFsaWQoaGFuZGxlKSkKLSAg
ICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgcmV0dXJuIHByb3Bvc2VkUGF0aDsKLX0KLQot
UGxhdGZvcm1GaWxlSGFuZGxlIG9wZW5GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5N
b2RlIG1vZGUpCi17Ci0gICAgRFdPUkQgZGVzaXJlZEFjY2VzcyA9IDA7Ci0gICAgRFdPUkQgY3Jl
YXRpb25EaXNwb3NpdGlvbiA9IDA7Ci0gICAgRFdPUkQgc2hhcmVNb2RlID0gMDsKLSAgICBzd2l0
Y2ggKG1vZGUpIHsKLSAgICBjYXNlIEZpbGVPcGVuTW9kZTo6UmVhZDoKLSAgICAgICAgZGVzaXJl
ZEFjY2VzcyA9IEdFTkVSSUNfUkVBRDsKLSAgICAgICAgY3JlYXRpb25EaXNwb3NpdGlvbiA9IE9Q
RU5fRVhJU1RJTkc7Ci0gICAgICAgIHNoYXJlTW9kZSA9IEZJTEVfU0hBUkVfUkVBRDsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBGaWxlT3Blbk1vZGU6OldyaXRlOgotICAgICAgICBkZXNpcmVk
QWNjZXNzID0gR0VORVJJQ19XUklURTsKLSAgICAgICAgY3JlYXRpb25EaXNwb3NpdGlvbiA9IENS
RUFURV9BTFdBWVM7Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLQotICAgIFN0cmluZyBkZXN0aW5hdGlvbiA9IHBhdGg7
Ci0gICAgcmV0dXJuIENyZWF0ZUZpbGUoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGRlc3Rp
bmF0aW9uKS5kYXRhKCksIGRlc2lyZWRBY2Nlc3MsIHNoYXJlTW9kZSwgMCwgY3JlYXRpb25EaXNw
b3NpdGlvbiwgRklMRV9BVFRSSUJVVEVfTk9STUFMLCAwKTsKLX0KLQotdm9pZCBjbG9zZUZpbGUo
UGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpCi17Ci0gICAgaWYgKGlzSGFuZGxlVmFsaWQoaGFu
ZGxlKSkgewotICAgICAgICA6OkNsb3NlSGFuZGxlKGhhbmRsZSk7Ci0gICAgICAgIGhhbmRsZSA9
IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7Ci0gICAgfQotfQotCi1sb25nIGxvbmcgc2Vla0Zp
bGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCwgRmlsZVNlZWtP
cmlnaW4gb3JpZ2luKQotewotICAgIERXT1JEIG1vdmVNZXRob2QgPSBGSUxFX0JFR0lOOwotCi0g
ICAgaWYgKG9yaWdpbiA9PSBGaWxlU2Vla09yaWdpbjo6Q3VycmVudCkKLSAgICAgICAgbW92ZU1l
dGhvZCA9IEZJTEVfQ1VSUkVOVDsKLSAgICBlbHNlIGlmIChvcmlnaW4gPT0gRmlsZVNlZWtPcmln
aW46OkVuZCkKLSAgICAgICAgbW92ZU1ldGhvZCA9IEZJTEVfRU5EOwotCi0gICAgTEFSR0VfSU5U
RUdFUiBsYXJnZU9mZnNldDsKLSAgICBsYXJnZU9mZnNldC5RdWFkUGFydCA9IG9mZnNldDsKLQot
ICAgIGxhcmdlT2Zmc2V0Lkxvd1BhcnQgPSBTZXRGaWxlUG9pbnRlcihoYW5kbGUsIGxhcmdlT2Zm
c2V0Lkxvd1BhcnQsICZsYXJnZU9mZnNldC5IaWdoUGFydCwgbW92ZU1ldGhvZCk7Ci0KLSAgICBp
ZiAobGFyZ2VPZmZzZXQuTG93UGFydCA9PSBJTlZBTElEX1NFVF9GSUxFX1BPSU5URVIgJiYgR2V0
TGFzdEVycm9yKCkgIT0gTk9fRVJST1IpCi0gICAgICAgIHJldHVybiAtMTsKLQotICAgIHJldHVy
biBsYXJnZU9mZnNldC5RdWFkUGFydDsKLX0KLQotaW50IHdyaXRlVG9GaWxlKFBsYXRmb3JtRmls
ZUhhbmRsZSBoYW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCi17Ci0gICAgaWYg
KCFpc0hhbmRsZVZhbGlkKGhhbmRsZSkpCi0gICAgICAgIHJldHVybiAtMTsKLQotICAgIERXT1JE
IGJ5dGVzV3JpdHRlbjsKLSAgICBib29sIHN1Y2Nlc3MgPSBXcml0ZUZpbGUoaGFuZGxlLCBkYXRh
LCBsZW5ndGgsICZieXRlc1dyaXR0ZW4sIDApOwotCi0gICAgaWYgKCFzdWNjZXNzKQotICAgICAg
ICByZXR1cm4gLTE7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oYnl0ZXNXcml0dGVuKTsK
LX0KLQotaW50IHJlYWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBjaGFyKiBk
YXRhLCBpbnQgbGVuZ3RoKQotewotICAgIGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUpKQotICAg
ICAgICByZXR1cm4gLTE7Ci0KLSAgICBEV09SRCBieXRlc1JlYWQ7Ci0gICAgYm9vbCBzdWNjZXNz
ID0gOjpSZWFkRmlsZShoYW5kbGUsIGRhdGEsIGxlbmd0aCwgJmJ5dGVzUmVhZCwgMCk7Ci0KLSAg
ICBpZiAoIXN1Y2Nlc3MpCi0gICAgICAgIHJldHVybiAtMTsKLSAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8aW50PihieXRlc1JlYWQpOwotfQotCi1ib29sIGhhcmRMaW5rT3JDb3B5RmlsZShjb25zdCBT
dHJpbmcmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbikKLXsKLSAgICByZXR1cm4g
ISE6OkNvcHlGaWxlKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihzb3VyY2UpLmRhdGEoKSwg
c3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGRlc3RpbmF0aW9uKS5kYXRhKCksIFRSVUUpOwot
fQotCi1TdHJpbmcgbG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCkKLXsKLSAgICBy
ZXR1cm4gY2FjaGVkU3RvcmFnZURpcmVjdG9yeShDU0lETF9MT0NBTF9BUFBEQVRBKTsKLX0KLQot
U3RyaW5nIHJvYW1pbmdVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1
cm4gY2FjaGVkU3RvcmFnZURpcmVjdG9yeShDU0lETF9BUFBEQVRBKTsKLX0KLQotVmVjdG9yPFN0
cmluZz4gbGlzdERpcmVjdG9yeShjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgY29uc3QgU3RyaW5n
JiBmaWx0ZXIpCi17Ci0gICAgVmVjdG9yPFN0cmluZz4gZW50cmllczsKLQotICAgIFBhdGhXYWxr
ZXIgd2Fsa2VyKGRpcmVjdG9yeSwgZmlsdGVyKTsKLSAgICBpZiAoIXdhbGtlci5pc1ZhbGlkKCkp
Ci0gICAgICAgIHJldHVybiBlbnRyaWVzOwotCi0gICAgZG8gewotICAgICAgICBpZiAod2Fsa2Vy
LmRhdGEoKS5kd0ZpbGVBdHRyaWJ1dGVzICYgRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZCi0gICAg
ICAgICAgICAmJiAoIXdjc2NtcCh3YWxrZXIuZGF0YSgpLmNGaWxlTmFtZSwgTCIuIikgfHwgIXdj
c2NtcCh3YWxrZXIuZGF0YSgpLmNGaWxlTmFtZSwgTCIuLiIpKSkKLSAgICAgICAgICAgIGNvbnRp
bnVlOwotCi0gICAgICAgIGVudHJpZXMuYXBwZW5kKGRpcmVjdG9yeSArICJcXCIgKyByZWludGVy
cHJldF9jYXN0PGNvbnN0IFVDaGFyKj4od2Fsa2VyLmRhdGEoKS5jRmlsZU5hbWUpKTsKLSAgICB9
IHdoaWxlICh3YWxrZXIuc3RlcCgpKTsKLQotICAgIHJldHVybiBlbnRyaWVzOwotfQotCi1ib29s
IGdldFZvbHVtZUZyZWVTcGFjZShjb25zdCBTdHJpbmcmLCB1aW50NjRfdCYpCi17Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLU9wdGlvbmFsPGludDMyX3Q+
IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCi17Ci0gICAgYXV0byBoYW5k
bGUgPSBvcGVuRmlsZShmc0ZpbGUuZGF0YSgpLCBGaWxlT3Blbk1vZGU6OlJlYWQpOwotICAgIGlm
ICghaXNIYW5kbGVWYWxpZChoYW5kbGUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owot
Ci0gICAgQllfSEFORExFX0ZJTEVfSU5GT1JNQVRJT04gZmlsZUluZm9ybWF0aW9uID0geyB9Owot
ICAgIGlmICghOjpHZXRGaWxlSW5mb3JtYXRpb25CeUhhbmRsZShoYW5kbGUsICZmaWxlSW5mb3Jt
YXRpb24pKSB7Ci0gICAgICAgIGNsb3NlRmlsZShoYW5kbGUpOwotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwotICAgIH0KLQotICAgIGNsb3NlRmlsZShoYW5kbGUpOwotCi0gICAgcmV0dXJu
IGZpbGVJbmZvcm1hdGlvbi5kd1ZvbHVtZVNlcmlhbE51bWJlcjsKLX0KLQotU3RyaW5nIHJlYWxQ
YXRoKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCi17Ci0gICAgcmV0dXJuIGdldEZpbmFsUGF0aE5h
bWUoZmlsZVBhdGgpOwotfQotCi1TdHJpbmcgY3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KCkKLXsK
LSAgICByZXR1cm4gZ2VuZXJhdGVUZW1wb3JhcnlQYXRoKFtdKGNvbnN0IFN0cmluZyYgcHJvcG9z
ZWRQYXRoKSB7Ci0gICAgICAgIHJldHVybiBtYWtlQWxsRGlyZWN0b3JpZXMocHJvcG9zZWRQYXRo
KTsKLSAgICB9KTsKLX0KLQotYm9vbCBkZWxldGVOb25FbXB0eURpcmVjdG9yeShjb25zdCBTdHJp
bmcmIGRpcmVjdG9yeVBhdGgpCi17Ci0gICAgU0hGSUxFT1BTVFJVQ1QgZGVsZXRlT3BlcmF0aW9u
ID0gewotICAgICAgICBudWxscHRyLAotICAgICAgICBGT19ERUxFVEUsCi0gICAgICAgIHN0cmlu
Z1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihkaXJlY3RvcnlQYXRoKS5kYXRhKCksCi0gICAgICAgIEwi
IiwKLSAgICAgICAgRk9GX05PQ09ORklSTUFUSU9OIHwgRk9GX05PRVJST1JVSSB8IEZPRl9TSUxF
TlQsCi0gICAgICAgIGZhbHNlLAotICAgICAgICAwLAotICAgICAgICBMIiIKLSAgICB9OwotICAg
IHJldHVybiAhU0hGaWxlT3BlcmF0aW9uKCZkZWxldGVPcGVyYXRpb24pOwotfQotCi19IC8vIG5h
bWVzcGFjZSBGaWxlU3lzdGVtCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGF0aFdhbGtlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vUGF0aFdhbGtlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGYyMDQwN2IxY2ZlYTYyNGYzYTE1NjlhOGZkNjc2OGE1ZGViZWQzNjMuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL1BhdGhXYWxrZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJQYXRoV2Fsa2VyLmgiCi0K
LSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC93aW4v
V0NoYXJTdHJpbmdFeHRyYXMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1QYXRoV2Fsa2Vy
OjpQYXRoV2Fsa2VyKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIHBhdHRl
cm4pCi17Ci0gICAgU3RyaW5nIHBhdGggPSBkaXJlY3RvcnkgKyAiXFwiICsgcGF0dGVybjsKLSAg
ICBtX2hhbmRsZSA9IDo6RmluZEZpcnN0RmlsZVcoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFy
KHBhdGgpLmRhdGEoKSwgJm1fZGF0YSk7Ci19Ci0KLVBhdGhXYWxrZXI6On5QYXRoV2Fsa2VyKCkK
LXsKLSAgICBpZiAoIWlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIDo6RmluZENsb3Nl
KG1faGFuZGxlKTsKLX0KLQotYm9vbCBQYXRoV2Fsa2VyOjpzdGVwKCkKLXsKLSAgICByZXR1cm4g
OjpGaW5kTmV4dEZpbGVXKG1faGFuZGxlLCAmbV9kYXRhKTsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BhdGhXYWxr
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXRoV2Fsa2VyLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZjNTlkNjczMTgxMWI4Y2ExNTg3YTRhMTJhN2RhMWUxYTE1
OTNkODQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BhdGhXYWxrZXIuaAorKysgL2Rldi9udWxsCkBAIC0x
LDQ4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlIDxXaW5kb3dzLmg+Ci0jaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBQYXRoV2Fsa2VyIHsKLSAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShQYXRoV2Fsa2VyKTsKLXB1YmxpYzoKLSAgICBQYXRoV2Fsa2VyKGNvbnN0IFdURjo6
U3RyaW5nJiBkaXJlY3RvcnksIGNvbnN0IFdURjo6U3RyaW5nJiBwYXR0ZXJuKTsKLSAgICB+UGF0
aFdhbGtlcigpOwotCi0gICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9oYW5kbGUg
IT0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7IH0KLSAgICBjb25zdCBXSU4zMl9GSU5EX0RBVEFXJiBk
YXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9Ci0KLSAgICBib29sIHN0ZXAoKTsKLQotcHJp
dmF0ZToKLSAgICBIQU5ETEUgbV9oYW5kbGU7Ci0gICAgV0lOMzJfRklORF9EQVRBVyBtX2RhdGE7
Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51REIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudURCLmNwcAppbmRleCA5ZTZlNGM1MmQ3Yjk4MzhhMWYw
N2JkZDU5ZjQwOWQ4MTY1ZmU1NjY2Li5lNTczMGIzMGNjZjNmMDNlZWZkZmY5YTMzMWMwOGVkMGUy
MmU1OGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9w
dXBNZW51REIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1
cE1lbnVEQi5jcHAKQEAgLTI1LDkgKzI1LDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJTZWFyY2hQb3B1cE1lbnVEQi5oIgogCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2lu
Y2x1ZGUgIlNRTGl0ZUZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJTUUxpdGVUcmFuc2FjdGlvbi5o
IgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKaW5kZXggNzZjOWM1Yzc4ZDU2
ZDNlOGQ5N2Q0MjFmNGRmYWE0YWIxYmQ5ZWNjMC4uYzRmYTM1NjcwYjk1NDc2NzZiN2M0ZmI5YTgx
MmIzZDZlNmVjOTllOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3Bw
CkBAIC0yNSw3ICsyNSw2IEBACiAjaW5jbHVkZSAiQ29udHJvbFN0YXRlcy5oIgogI2luY2x1ZGUg
IkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRmlsZUxpc3QuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVt
LmgiCiAjaW5jbHVkZSAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW5jbHVkZSAiRmxvYXRSb3VuZGVk
UmVjdC5oIgogI2luY2x1ZGUgIkZvY3VzQ29udHJvbGxlci5oIgpAQCAtNDUsNiArNDQsNyBAQAog
I2luY2x1ZGUgIlNwaW5CdXR0b25FbGVtZW50LmgiCiAjaW5jbHVkZSAiU3RyaW5nVHJ1bmNhdG9y
LmgiCiAjaW5jbHVkZSAiVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgiCisjaW5jbHVkZSA8d3Rm
L0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogI2lmIEVO
QUJMRShNRVRFUl9FTEVNRU5UKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZUd0ay5jcHAKaW5kZXggYjY5NmVhYzhmYjEwNWUyYjcwOTYyMDY5NDczOTczZTEzZWI5ZmI2Ni4u
YjI1OTY2Y2I1MzMyNzY4NTllZTgxOTY3MWFkMjVmZGY3N2UwM2VhMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lR3RrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsuY3BwCkBAIC0yNyw3ICsyNyw2IEBACiAKICNp
bmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSAiRmlsZUxpc3QuaCIKLSNpbmNs
dWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiRmxvYXRSb3VuZGVkUmVjdC5oIgogI2luY2x1
ZGUgIkZvbnREZXNjcmlwdGlvbi5oIgogI2luY2x1ZGUgIkdSZWZQdHJHdGsuaCIKQEAgLTU1LDYg
KzU0LDcgQEAKICNpbmNsdWRlIDxnZGsvZ2RrLmg+CiAjaW5jbHVkZSA8Z2xpYi5oPgogI2luY2x1
ZGUgPGd0ay9ndGsuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0
Zi9nbGliL0dSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZVdpbi5jcHAKaW5kZXggZWViOTk4NWU2MmY1YzlhMzQ4MjQzZThkZGU5ZWNjYzBhOWJk
YmZiNS4uMjE5NjU3ZTFmMjRhYWJhMDU4MjVhMmE2MmIwODA0YzdmYmIzZjMzOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwCkBAIC0yNCw3ICsyNCw2IEBA
CiAKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgot
I2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJGb250TWV0cmljcy5oIgogI2luY2x1
ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVTZWxlY3Rpb24uaCIKQEAgLTM4LDYgKzM3LDcg
QEAKICNpbmNsdWRlICJTeXN0ZW1JbmZvLmgiCiAjaW5jbHVkZSAiVXNlckFnZW50U3R5bGVTaGVl
dHMuaCIKICNpbmNsdWRlICJXZWJDb3JlQnVuZGxlV2luLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVT
eXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvU29mdExpbmtpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0
cmFzLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwCmluZGV4IDYwZWViOGNjMmMwZjQxMmNh
MmJjZWQ5ODJhZTkyN2ZmYjFkNmE0NjguLjFhZjQzNzg4ZmZmYmFhYTkxMmUxYWQ5N2JiZDk4YjE3
MmRlM2YwZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwCkBAIC0yOCw3ICsyOCw2IEBA
CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgi
CiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlJlZ2lzdHJhdGlvblN0b3JlLmgiCiAj
aW5jbHVkZSAiU1FMaXRlRGF0YWJhc2UuaCIKQEAgLTM5LDYgKzM4LDcgQEAKICNpbmNsdWRlICJT
ZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2lu
Y2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZENvcGllci5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVt
Lmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0
cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lz
dGVudFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5jcHAKaW5kZXggYzIxMGVj
YWM4YTQ3NDZlNDE0MGQ0MDY0MmUwYzM3MGEwZTVhN2VkMC4uMTA1ZGQwMjg4NjA3NTA3MDk3N2Nh
ZTg3ZDJjNGE0ZjQwYmJmZWZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5jcHAKQEAgLTMzLDkgKzMzLDkgQEAKICNp
bmNsdWRlICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaCIKICNpbmNsdWRlICJX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVN
b25pdG9yLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9LZXllZENvZGluZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+Cisj
aW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2lu
Y2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuaAppbmRleCA3NWQzMWE2MWE0Zjc0MmYzODdmOWI1
ZWEyZDRmNjAyOTQzNjEyODdjLi5lYjc5NDQ3MjU5NWI1NmVkZDYyMGJlMjU3NmVkMjE4MTgwNWQw
ZDg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRh
VGFza0Jsb2IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRh
VGFza0Jsb2IuaApAQCAtMzMsNyArMzMsNyBAQAogCiAjaW5jbHVkZSAiTmV0d29ya0RhdGFUYXNr
LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3RyZWFtQ2xpZW50Lmg+Ci0jaW5jbHVkZSA8V2Vi
Q29yZS9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgQXN5bmNGaWxlU3RyZWFtOwpAQCAtMTEzLDcgKzExMyw3IEBA
IHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9zaXplSXRlbUNvdW50IHsgMCB9OwogICAgIHVuc2ln
bmVkIG1fcmVhZEl0ZW1Db3VudCB7IDAgfTsKICAgICBib29sIG1fZmlsZU9wZW5lZCB7IGZhbHNl
IH07Ci0gICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIG1fZG93bmxv
YWRGaWxlIHsgV2ViQ29yZTo6RmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSB9
OworICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBtX2Rvd25sb2FkRmlsZSB7IEZp
bGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUgfTsKIAogICAgIFZlY3RvcjxSZWZQ
dHI8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4gbV9maWxlUmVmZXJlbmNlczsKICAg
ICBSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gbV9zYW5kYm94RXh0ZW5zaW9uOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCA1OWY2YTA3
MDJkMDI4OGViNDgxYjM5NTQzMTdiZTM0MGJiY2E2NGJlLi43ZWYyNTMyM2MzMWFlOGY5YmUwYTNi
Mzc3ZTZmZTlhOGJmYzU0NDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMTYxOSw3ICsxNjE5LDcgQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6c2V0Q2FjaGVNb2RlbChDYWNoZU1vZGVsIGNhY2hlTW9kZWwpCiAgICAgdW5zaWduZWQg
dXJsQ2FjaGVNZW1vcnlDYXBhY2l0eSA9IDA7CiAgICAgdWludDY0X3QgdXJsQ2FjaGVEaXNrQ2Fw
YWNpdHkgPSAwOwogICAgIHVpbnQ2NF90IGRpc2tGcmVlU2l6ZSA9IDA7Ci0gICAgaWYgKFdlYkNv
cmU6OkZpbGVTeXN0ZW06OmdldFZvbHVtZUZyZWVTcGFjZShtX2Rpc2tDYWNoZURpcmVjdG9yeSwg
ZGlza0ZyZWVTaXplKSkgeworICAgIGlmIChGaWxlU3lzdGVtOjpnZXRWb2x1bWVGcmVlU3BhY2Uo
bV9kaXNrQ2FjaGVEaXJlY3RvcnksIGRpc2tGcmVlU2l6ZSkpIHsKICAgICAgICAgLy8gQXMgYSBm
dWRnZSBmYWN0b3IsIHVzZSAxMDAwIGluc3RlYWQgb2YgMTAyNCwgaW4gY2FzZSB0aGUgcmVwb3J0
ZWQgYnl0ZQogICAgICAgICAvLyBjb3VudCBkb2Vzbid0IGFsaWduIGV4YWN0bHkgdG8gYSBtZWdh
Ynl0ZSBib3VuZGFyeS4KICAgICAgICAgZGlza0ZyZWVTaXplIC89IEtCICogMTAwMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5n
aW5lLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdl
RW5naW5lLmNwcAppbmRleCBmMTdmZDlmOTJiZTVkMmE1MDU0NWMwNzk5ZTM3ZDlhZTBjZjNlZmJk
Li4xZTNlMTFiMTk4YzM1MjcyMGEwM2Y1NzlkMjk5NDdmOWJlZWZkYjVmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdp
bmUuY3BwCkBAIC01Miw3ICs1Miw3IEBAIFN0cmluZyBFbmdpbmU6OmNhY2hlc1Jvb3RQYXRoKGNv
bnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luKQogICAgICAgICByZXR1cm4geyB9Owog
CiAgICAgS2V5IGtleShvcmlnaW4udG9wT3JpZ2luLnRvU3RyaW5nKCksIG9yaWdpbi5jbGllbnRP
cmlnaW4udG9TdHJpbmcoKSwgeyB9LCB7IH0sIHNhbHQoKSk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6
OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyb290UGF0aCgpLCBrZXkuaGFz
aEFzU3RyaW5nKCkpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQocm9vdFBhdGgoKSwga2V5Lmhhc2hBc1N0cmluZygpKTsKIH0KIAogRW5naW5lOjp+RW5n
aW5lKCkKQEAgLTI5MSw5ICsyOTEsOSBAQCB2b2lkIEVuZ2luZTo6aW5pdGlhbGl6ZShDb21wbGV0
aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKICAgICBpZiAoIXNob3VsZENvbXB1dGVTYWx0KQogICAg
ICAgICByZXR1cm47CiAKLSAgICBTdHJpbmcgc2FsdFBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9yb290UGF0aCwgInNhbHQiX3MpOworICAgIFN0
cmluZyBzYWx0UGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3Jv
b3RQYXRoLCAic2FsdCJfcyk7CiAgICAgbV9pb1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgd2Vha1Ro
aXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgc2FsdFBhdGggPSBXVEZNb3ZlKHNhbHRQYXRoKV0gKCkg
bXV0YWJsZSB7Ci0gICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3Rvcmll
cyhtX3Jvb3RQYXRoKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKG1f
cm9vdFBhdGgpOwogICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHdlYWtU
aGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIHNhbHQgPSByZWFkT3JNYWtlU2FsdChzYWx0UGF0aCld
KCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAg
IHJldHVybjsKQEAgLTM4Myw5ICszODMsOSBAQCB2b2lkIEVuZ2luZTo6d3JpdGVGaWxlKGNvbnN0
IFN0cmluZyYgZmlsZW5hbWUsIE5ldHdvcmtDYWNoZTo6RGF0YSYmIGRhdGEsIFdlYkNvcgogICAg
IG1fcGVuZGluZ1dyaXRlQ2FsbGJhY2tzLmFkZCgrK21fcGVuZGluZ0NhbGxiYWNrc0NvdW50ZXIs
IFdURk1vdmUoY2FsbGJhY2spKTsKICAgICBtX2lvUXVldWUtPmRpc3BhdGNoKFt0aGlzLCB3ZWFr
VGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBpZGVudGlmaWVyID0gbV9wZW5kaW5nQ2FsbGJhY2tz
Q291bnRlciwgZGF0YSA9IFdURk1vdmUoZGF0YSksIGZpbGVuYW1lID0gZmlsZW5hbWUuaXNvbGF0
ZWRDb3B5KCldKCkgbXV0YWJsZSB7CiAKLSAgICAgICAgU3RyaW5nIGRpcmVjdG9yeVBhdGggPSBX
ZWJDb3JlOjpGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKGZpbGVuYW1lKTsKLSAgICAgICAgaWYg
KCFXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGRpcmVjdG9yeVBhdGgpKQotICAgICAg
ICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKGRpcmVjdG9yeVBh
dGgpOworICAgICAgICBTdHJpbmcgZGlyZWN0b3J5UGF0aCA9IEZpbGVTeXN0ZW06OmRpcmVjdG9y
eU5hbWUoZmlsZW5hbWUpOworICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZGly
ZWN0b3J5UGF0aCkpCisgICAgICAgICAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMo
ZGlyZWN0b3J5UGF0aCk7CiAKICAgICAgICAgYXV0byBjaGFubmVsID0gSU9DaGFubmVsOjpvcGVu
KGZpbGVuYW1lLCBJT0NoYW5uZWw6OlR5cGU6OkNyZWF0ZSk7CiAgICAgICAgIGNoYW5uZWwtPndy
aXRlKDAsIGRhdGEsIG51bGxwdHIsIFt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMp
LCBpZGVudGlmaWVyXShpbnQgZXJyb3IpIG11dGFibGUgewpAQCAtNDQ1LDcgKzQ0NSw3IEBAIHZv
aWQgRW5naW5lOjpyZW1vdmVGaWxlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIG1faW9RdWV1ZS0+ZGlzcGF0Y2goW2ZpbGVuYW1lID0gZmlsZW5hbWUuaXNv
bGF0ZWRDb3B5KCldKCkgbXV0YWJsZSB7Ci0gICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRl
bGV0ZUZpbGUoZmlsZW5hbWUpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGZpbGVu
YW1lKTsKICAgICB9KTsKIH0KIApAQCAtNDg3LDggKzQ4Nyw4IEBAIHZvaWQgRW5naW5lOjpmZXRj
aEVudHJpZXMoYm9vbCBzaG91bGRDb21wdXRlU2l6ZSwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFZlCiAgICAgfQogCiAgICAgYXV0byB0YXNrQ291bnRlciA9IFJlYWRPcmlnaW5zVGFza0Nv
dW50ZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgZm9yIChhdXRv
JiBmb2xkZXJQYXRoIDogV2ViQ29yZTo6RmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShtX3Jvb3RQ
YXRoLCAiKiIpKSB7Ci0gICAgICAgIGlmICghV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZUlzRGly
ZWN0b3J5KGZvbGRlclBhdGgsIFdlYkNvcmU6OkZpbGVTeXN0ZW06OlNob3VsZEZvbGxvd1N5bWJv
bGljTGlua3M6Ok5vKSkKKyAgICBmb3IgKGF1dG8mIGZvbGRlclBhdGggOiBGaWxlU3lzdGVtOjps
aXN0RGlyZWN0b3J5KG1fcm9vdFBhdGgsICIqIikpIHsKKyAgICAgICAgaWYgKCFGaWxlU3lzdGVt
OjpmaWxlSXNEaXJlY3RvcnkoZm9sZGVyUGF0aCwgRmlsZVN5c3RlbTo6U2hvdWxkRm9sbG93U3lt
Ym9saWNMaW5rczo6Tm8pKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIENhY2hlczo6
cmV0cmlldmVPcmlnaW5Gcm9tRGlyZWN0b3J5KGZvbGRlclBhdGgsICptX2lvUXVldWUsIFtwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHNob3VsZENvbXB1dGVTaXplLCB0YXNrQ291bnRl
ciA9IHRhc2tDb3VudGVyLmNvcHlSZWYoKV0gKGF1dG8mJiBvcmlnaW4pIG11dGFibGUgewogICAg
ICAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKQEAgLTUzMSw4ICs1MzEsOCBAQCB2
b2lkIEVuZ2luZTo6Y2xlYXJBbGxDYWNoZXNGcm9tRGlzayhDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZQogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAK
ICAgICBtX2lvUXVldWUtPmRpc3BhdGNoKFtwYXRoID0gbV9yb290UGF0aC5pc29sYXRlZENvcHko
KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRh
YmxlIHsKLSAgICAgICAgZm9yIChhdXRvJiBmaWxlbmFtZSA6IFdlYkNvcmU6OkZpbGVTeXN0ZW06
Omxpc3REaXJlY3RvcnkocGF0aCwgIioiKSkgewotICAgICAgICAgICAgaWYgKFdlYkNvcmU6OkZp
bGVTeXN0ZW06OmZpbGVJc0RpcmVjdG9yeShmaWxlbmFtZSwgV2ViQ29yZTo6RmlsZVN5c3RlbTo6
U2hvdWxkRm9sbG93U3ltYm9saWNMaW5rczo6Tm8pKQorICAgICAgICBmb3IgKGF1dG8mIGZpbGVu
YW1lIDogRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShwYXRoLCAiKiIpKSB7CisgICAgICAgICAg
ICBpZiAoRmlsZVN5c3RlbTo6ZmlsZUlzRGlyZWN0b3J5KGZpbGVuYW1lLCBGaWxlU3lzdGVtOjpT
aG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpObykpCiAgICAgICAgICAgICAgICAgZGVsZXRlRGly
ZWN0b3J5UmVjdXJzaXZlbHkoZmlsZW5hbWUpOwogICAgICAgICB9CiAgICAgICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CkBAIC01NjIsOCAr
NTYyLDggQEAgdm9pZCBFbmdpbmU6OmNsZWFyQ2FjaGVzRm9yT3JpZ2luRnJvbURpc2soY29uc3Qg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBvcmkKIAogICAgIGF1dG8gY2FsbGJhY2tBZ2dy
ZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOwogCi0gICAgZm9yIChhdXRvJiBmb2xkZXJQYXRoIDogV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6bGlzdERpcmVjdG9yeShtX3Jvb3RQYXRoLCAiKiIpKSB7Ci0gICAgICAgIGlmICghV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6ZmlsZUlzRGlyZWN0b3J5KGZvbGRlclBhdGgsIFdlYkNvcmU6OkZpbGVT
eXN0ZW06OlNob3VsZEZvbGxvd1N5bWJvbGljTGlua3M6Ok5vKSkKKyAgICBmb3IgKGF1dG8mIGZv
bGRlclBhdGggOiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KG1fcm9vdFBhdGgsICIqIikpIHsK
KyAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjpmaWxlSXNEaXJlY3RvcnkoZm9sZGVyUGF0aCwgRmls
ZVN5c3RlbTo6U2hvdWxkRm9sbG93U3ltYm9saWNMaW5rczo6Tm8pKQogICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgIENhY2hlczo6cmV0cmlldmVPcmlnaW5Gcm9tRGlyZWN0b3J5KGZvbGRl
clBhdGgsICptX2lvUXVldWUsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IG9yaWdpbiwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYo
KSwgZm9sZGVyUGF0aF0gKE9wdGlvbmFsPFdlYkNvcmU6OkNsaWVudE9yaWdpbj4mJiBmb2xkZXJP
cmlnaW4pIG11dGFibGUgewogICAgICAgICAgICAgaWYgKCFmb2xkZXJPcmlnaW4pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2lu
ZUNhY2hlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3Rv
cmFnZUVuZ2luZUNhY2hlcy5jcHAKaW5kZXggMTkxMzQ3MGNkZDIyMGNlM2JlOTc1ZGY5OTAwZWYz
NTBkMDcxNzYzYy4uMWY2MDhjZjUyNWY5OTZiMjRlYTQxMTM2MDBlOGUyOWNiMjg3YzI3YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VF
bmdpbmVDYWNoZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
Q2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcApAQCAtNDIsMTIgKzQyLDEyIEBAIHVzaW5nIG5h
bWVzcGFjZSBOZXR3b3JrQ2FjaGU7CiAKIHN0YXRpYyBpbmxpbmUgU3RyaW5nIGNhY2hlc0xpc3RG
aWxlbmFtZShjb25zdCBTdHJpbmcmIGNhY2hlc1Jvb3RQYXRoKQogewotICAgIHJldHVybiBXZWJD
b3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY2FjaGVzUm9vdFBhdGgs
ICJjYWNoZXNsaXN0Il9zKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KGNhY2hlc1Jvb3RQYXRoLCAiY2FjaGVzbGlzdCJfcyk7CiB9CiAKIHN0YXRpYyBp
bmxpbmUgU3RyaW5nIGNhY2hlc09yaWdpbkZpbGVuYW1lKGNvbnN0IFN0cmluZyYgY2FjaGVzUm9v
dFBhdGgpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChjYWNoZXNSb290UGF0aCwgIm9yaWdpbiJfcyk7CisgICAgcmV0dXJuIEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChjYWNoZXNSb290UGF0aCwgIm9yaWdpbiJf
cyk7CiB9CiAKIENhY2hlczo6fkNhY2hlcygpCkBAIC01OCw3ICs1OCw3IEBAIENhY2hlczo6fkNh
Y2hlcygpCiB2b2lkIENhY2hlczo6cmV0cmlldmVPcmlnaW5Gcm9tRGlyZWN0b3J5KGNvbnN0IFN0
cmluZyYgZm9sZGVyUGF0aCwgV29ya1F1ZXVlJiBxdWV1ZSwgV1RGOjpDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6OkNsaWVudE9yaWdpbj4mJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgcXVldWUuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlciksIGZpbGVuYW1lID0gY2FjaGVzT3JpZ2luRmlsZW5hbWUoZm9s
ZGVyUGF0aCldKCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmICghV2ViQ29yZTo6RmlsZVN5c3RlbTo6
ZmlsZUV4aXN0cyhmaWxlbmFtZSkpIHsKKyAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjpmaWxlRXhp
c3RzKGZpbGVuYW1lKSkgewogICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUg
ewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCk7CiAgICAg
ICAgICAgICB9KTsKQEAgLTQwOCw3ICs0MDgsNyBAQCB2b2lkIENhY2hlczo6cmVhZENhY2hlc0Zy
b21EaXNrKFdURjo6RnVuY3Rpb248dm9pZChFeHBlY3RlZDxWZWN0b3I8Q2FjaGU+LCBFcnJvcgog
ICAgIH0KIAogICAgIGF1dG8gZmlsZW5hbWUgPSBjYWNoZXNMaXN0RmlsZW5hbWUobV9yb290UGF0
aCk7Ci0gICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGZpbGVuYW1lKSkg
eworICAgIGlmICghRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhmaWxlbmFtZSkpIHsKICAgICAgICAg
Y2FsbGJhY2soVmVjdG9yPENhY2hlPiB7IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3Bw
CmluZGV4IGZkMjdjZjA2ZmU0MzFmZDM4NGNhMmYzYjdlNDkxZjZmYWMxZGUwODYuLmY2NTExZDg5
OWM0MjgxMjJjNDIyNmQ4YzJmOTEwODIzMDU0YmFlZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKQEAgLTMyLDEzICszMiwx
MyBAQAogI2luY2x1ZGUgIk5ldHdvcmtDYWNoZVN0b3JhZ2UuaCIKICNpbmNsdWRlICJOZXR3b3Jr
UHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ2FjaGVWYWxpZGF0aW9uLmg+Ci0jaW5jbHVk
ZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVFRQSGVhZGVyTmFt
ZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xvd1Bvd2VyTW9kZU5vdGlmaWVyLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jl
c291cmNlUmVxdWVzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0
ZW0uaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CkBAIC01MSw3ICs1MSw3IEBACiBu
YW1lc3BhY2UgV2ViS2l0IHsKIG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUgewogCi11c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTo6RmlsZVN5c3RlbTsKK3VzaW5nIG5hbWVzcGFjZSBXVEY6OkZpbGVTeXN0
ZW07CiAKIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHJlc291cmNlVHlwZSgpCiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUJs
b2JTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlQmxvYlN0b3JhZ2UuY3BwCmluZGV4IGY3M2M1MGRhMTk0NzkzMzY1ZDZmNTFlMDYxNDFi
NTIzNzI3ZTcxZWUuLjk1MzhkYTY0MWI0Mjc0MDAyYjI3OWFkYWE4N2MxNTQyZDM2YTAyN2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
QmxvYlN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlQmxvYlN0b3JhZ2UuY3BwCkBAIC0yOCw4ICsyOCw4IEBACiAKICNpbmNsdWRl
ICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5oIgotI2luY2x1
ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8
d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0
Zi9TSEExLmg+CiAKQEAgLTU3LDE1ICs1NywxNSBAQCB2b2lkIEJsb2JTdG9yYWdlOjpzeW5jaHJv
bml6ZSgpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoYmxvYkRpcmVjdG9yeVBhdGgoKSk7Cisg
ICAgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKGJsb2JEaXJlY3RvcnlQYXRoKCkpOwog
CiAgICAgbV9hcHByb3hpbWF0ZVNpemUgPSAwOwogICAgIGF1dG8gYmxvYkRpcmVjdG9yeSA9IGJs
b2JEaXJlY3RvcnlQYXRoKCk7CiAgICAgdHJhdmVyc2VEaXJlY3RvcnkoYmxvYkRpcmVjdG9yeSwg
W3RoaXMsICZibG9iRGlyZWN0b3J5XShjb25zdCBTdHJpbmcmIG5hbWUsIERpcmVjdG9yeUVudHJ5
VHlwZSB0eXBlKSB7CiAgICAgICAgIGlmICh0eXBlICE9IERpcmVjdG9yeUVudHJ5VHlwZTo6Rmls
ZSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgYXV0byBwYXRoID0gV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGJsb2JEaXJlY3RvcnksIG5hbWUpOwot
ICAgICAgICBhdXRvIGZpbGVQYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKHBhdGgpOworICAgICAgICBhdXRvIHBhdGggPSBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoYmxvYkRpcmVjdG9yeSwgbmFtZSk7CisgICAgICAgIGF1dG8g
ZmlsZVBhdGggPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAg
ICAgICAgIHN0cnVjdCBzdGF0IHN0YXQ7CiAgICAgICAgIDo6c3RhdChmaWxlUGF0aC5kYXRhKCks
ICZzdGF0KTsKICAgICAgICAgLy8gTm8gY2xpZW50cyBsZWZ0IGZvciB0aGlzIGJsb2IuCkBAIC04
MSw3ICs4MSw3IEBAIHZvaWQgQmxvYlN0b3JhZ2U6OnN5bmNocm9uaXplKCkKIFN0cmluZyBCbG9i
U3RvcmFnZTo6YmxvYlBhdGhGb3JIYXNoKGNvbnN0IFNIQTE6OkRpZ2VzdCYgaGFzaCkgY29uc3QK
IHsKICAgICBhdXRvIGhhc2hBc1N0cmluZyA9IFNIQTE6OmhleERpZ2VzdChoYXNoKTsKLSAgICBy
ZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGJsb2JE
aXJlY3RvcnlQYXRoKCksIFN0cmluZzo6ZnJvbVVURjgoaGFzaEFzU3RyaW5nKSk7CisgICAgcmV0
dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChibG9iRGlyZWN0b3J5UGF0
aCgpLCBTdHJpbmc6OmZyb21VVEY4KGhhc2hBc1N0cmluZykpOwogfQogCiBCbG9iU3RvcmFnZTo6
QmxvYiBCbG9iU3RvcmFnZTo6YWRkKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgRGF0YSYgZGF0
YSkKQEAgLTkzLDggKzkzLDggQEAgQmxvYlN0b3JhZ2U6OkJsb2IgQmxvYlN0b3JhZ2U6OmFkZChj
b25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IERhdGEmIGRhdGEpCiAgICAgaWYgKGRhdGEuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4geyBkYXRhLCBoYXNoIH07CiAKLSAgICBhdXRvIGJsb2JQYXRo
ID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGJsb2JQYXRo
Rm9ySGFzaChoYXNoKSk7Ci0gICAgYXV0byBsaW5rUGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06
OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKKyAgICBhdXRvIGJsb2JQYXRoID0gRmls
ZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGJsb2JQYXRoRm9ySGFzaChoYXNoKSk7
CisgICAgYXV0byBsaW5rUGF0aCA9IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihwYXRoKTsKICAgICB1bmxpbmsobGlua1BhdGguZGF0YSgpKTsKIAogICAgIGJvb2wgYmxvYkV4
aXN0cyA9IGFjY2VzcyhibG9iUGF0aC5kYXRhKCksIEZfT0spICE9IC0xOwpAQCAtMTI3LDcgKzEy
Nyw3IEBAIEJsb2JTdG9yYWdlOjpCbG9iIEJsb2JTdG9yYWdlOjpnZXQoY29uc3QgU3RyaW5nJiBw
YXRoKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgYXV0byBsaW5r
UGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRo
KTsKKyAgICBhdXRvIGxpbmtQYXRoID0gRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKHBhdGgpOwogICAgIGF1dG8gZGF0YSA9IG1hcEZpbGUobGlua1BhdGguZGF0YSgpKTsKIAog
ICAgIHJldHVybiB7IGRhdGEsIGNvbXB1dGVTSEExKGRhdGEsIG1fc2FsdCkgfTsKQEAgLTEzNyw3
ICsxMzcsNyBAQCB2b2lkIEJsb2JTdG9yYWdlOjpyZW1vdmUoY29uc3QgU3RyaW5nJiBwYXRoKQog
ewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgYXV0byBsaW5rUGF0aCA9
IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKKyAg
ICBhdXRvIGxpbmtQYXRoID0gRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBh
dGgpOwogICAgIHVubGluayhsaW5rUGF0aC5kYXRhKCkpOwogfQogCkBAIC0xNDUsNyArMTQ1LDcg
QEAgdW5zaWduZWQgQmxvYlN0b3JhZ2U6OnNoYXJlQ291bnQoY29uc3QgU3RyaW5nJiBwYXRoKQog
ewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgYXV0byBsaW5rUGF0aCA9
IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKKyAg
ICBhdXRvIGxpbmtQYXRoID0gRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBh
dGgpOwogICAgIHN0cnVjdCBzdGF0IHN0YXQ7CiAgICAgaWYgKDo6c3RhdChsaW5rUGF0aC5kYXRh
KCksICZzdGF0KSA8IDApCiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5jcHAKaW5kZXggOWUz
MTg5NDNkN2M2MTM4Y2FhMWMxZGMzMGYzYTJmMzVmMzMwMjlmMi4uMWEzMmFhOWEwZTUzYjQ2OTU3
YWE4ZWIzYmIyMzg1NmYwYTg5OWYzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuY3BwCkBAIC0yNiw5ICsyNiw5IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTmV0d29ya0NhY2hlRGF0YS5oIgogCi0j
aW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8ZmNudGwuaD4KICNpbmNs
dWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaD4KKyNpbmNsdWRlIDx3dGYv
RmlsZVN5c3RlbS5oPgogCiAjaWYgIU9TKFdJTkRPV1MpCiAjaW5jbHVkZSA8c3lzL21tYW4uaD4K
QEAgLTE1Niw3ICsxNTYsNyBAQCBzdGF0aWMgU2FsdCBtYWtlU2FsdCgpCiBPcHRpb25hbDxTYWx0
PiByZWFkT3JNYWtlU2FsdChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAjaWYgIU9TKFdJTkRPV1Mp
Ci0gICAgYXV0byBjcGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihwYXRoKTsKKyAgICBhdXRvIGNwYXRoID0gRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKHBhdGgpOwogICAgIGF1dG8gZmQgPSBvcGVuKGNwYXRoLmRhdGEoKSwgT19S
RE9OTFksIDApOwogICAgIFNhbHQgc2FsdDsKICAgICBhdXRvIGJ5dGVzUmVhZCA9IHJlYWQoZmQs
IHNhbHQuZGF0YSgpLCBzYWx0LnNpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmNwcAppbmRl
eCAyNWJlZjdmOTJlOGViMzY2YTk0ZjRiY2QzNzk4M2IxNmE5ZGUzNTA4Li5iMGIyZTcxNWU2NWRk
M2E5MTNjZjcwZDcwMzY1YTQ1MGJiZWI5OTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5jcHAK
QEAgLTI3LDggKzI3LDggQEAKICNpbmNsdWRlICJOZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmgiCiAK
ICNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAj
aW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgog
I2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
IApAQCAtNzAsNyArNzAsNyBAQCBzdGF0aWMgRGlyZWN0b3J5RW50cnlUeXBlIGRpcmVjdG9yeUVu
dHJ5VHlwZSh1aW50OF90IGR0eXBlKQogdm9pZCB0cmF2ZXJzZURpcmVjdG9yeShjb25zdCBTdHJp
bmcmIHBhdGgsIGNvbnN0IEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIERpcmVjdG9yeUVu
dHJ5VHlwZSk+JiBmdW5jdGlvbikKIHsKICNpZiAhT1MoV0lORE9XUykKLSAgICBESVIqIGRpciA9
IG9wZW5kaXIoV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBh
dGgpLmRhdGEoKSk7CisgICAgRElSKiBkaXIgPSBvcGVuZGlyKEZpbGVTeXN0ZW06OmZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCkpOwogICAgIGlmICghZGlyKQogICAgICAgICBy
ZXR1cm47CiAgICAgZGlyZW50KiBkcDsKQEAgLTk0LDEwICs5NCwxMCBAQCB2b2lkIHRyYXZlcnNl
RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgRnVuY3Rpb248dm9pZCAoY29uc3Qg
U3RyaW5nJiwgRAogdm9pZCBkZWxldGVEaXJlY3RvcnlSZWN1cnNpdmVseShjb25zdCBTdHJpbmcm
IHBhdGgpCiB7CiAgICAgdHJhdmVyc2VEaXJlY3RvcnkocGF0aCwgWyZwYXRoXShjb25zdCBTdHJp
bmcmIG5hbWUsIERpcmVjdG9yeUVudHJ5VHlwZSB0eXBlKSB7Ci0gICAgICAgIFN0cmluZyBlbnRy
eVBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGF0
aCwgbmFtZSk7CisgICAgICAgIFN0cmluZyBlbnRyeVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQocGF0aCwgbmFtZSk7CiAgICAgICAgIHN3aXRjaCAodHlwZSkgewog
ICAgICAgICBjYXNlIERpcmVjdG9yeUVudHJ5VHlwZTo6RmlsZToKLSAgICAgICAgICAgIFdlYkNv
cmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZW50cnlQYXRoKTsKKyAgICAgICAgICAgIEZpbGVT
eXN0ZW06OmRlbGV0ZUZpbGUoZW50cnlQYXRoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIERpcmVjdG9yeUVudHJ5VHlwZTo6RGlyZWN0b3J5OgogICAgICAgICAgICAgZGVsZXRl
RGlyZWN0b3J5UmVjdXJzaXZlbHkoZW50cnlQYXRoKTsKQEAgLTEwNSwxOSArMTA1LDE5IEBAIHZv
aWQgZGVsZXRlRGlyZWN0b3J5UmVjdXJzaXZlbHkoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgICAg
ICAvLyBUaGlzIGRvZXNuJ3QgZm9sbG93IHN5bWxpbmtzLgogICAgICAgICB9CiAgICAgfSk7Ci0g
ICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkocGF0aCk7CisgICAg
RmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkocGF0aCk7CiB9CiAKIEZpbGVUaW1lcyBm
aWxlVGltZXMoY29uc3QgU3RyaW5nJiBwYXRoKQogewogI2lmIEhBVkUoU1RBVF9CSVJUSFRJTUUp
CiAgICAgc3RydWN0IHN0YXQgZmlsZUluZm87Ci0gICAgaWYgKHN0YXQoV2ViQ29yZTo6RmlsZVN5
c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSwgJmZpbGVJbmZvKSkK
KyAgICBpZiAoc3RhdChGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCku
ZGF0YSgpLCAmZmlsZUluZm8pKQogICAgICAgICByZXR1cm4geyB9OwogICAgIHJldHVybiB7IFdh
bGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhmaWxlSW5mby5zdF9iaXJ0aHRpbWUpLCBXYWxsVGltZTo6
ZnJvbVJhd1NlY29uZHMoZmlsZUluZm8uc3RfbXRpbWUpIH07CiAjZWxpZiBVU0UoU09VUCkKICAg
ICAvLyBUaGVyZSdzIG5vIHN0X2JpcnRodGltZSBpbiBzb21lIG9wZXJhdGluZyBzeXN0ZW1zIGxp
a2UgTGludXgsIHNvIHdlIHVzZSB4YXR0cnMgdG8gc2V0L2dldCB0aGUgY3JlYXRpb24gdGltZS4K
LSAgICBHUmVmUHRyPEdGaWxlPiBmaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgo
V2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEo
KSkpOworICAgIEdSZWZQdHI8R0ZpbGU+IGZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3Jf
cGF0aChGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpKSk7
CiAgICAgR1JlZlB0cjxHRmlsZUluZm8+IGZpbGVJbmZvID0gYWRvcHRHUmVmKGdfZmlsZV9xdWVy
eV9pbmZvKGZpbGUuZ2V0KCksICJ4YXR0cjo6YmlydGh0aW1lLHRpbWU6Om1vZGlmaWVkIiwgR19G
SUxFX1FVRVJZX0lORk9fTk9ORSwgbnVsbHB0ciwgbnVsbHB0cikpOwogICAgIGlmICghZmlsZUlu
Zm8pCiAgICAgICAgIHJldHVybiB7IH07CkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCB1cGRhdGVG
aWxlTW9kaWZpY2F0aW9uVGltZUlmTmVlZGVkKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICB9CiAj
aWYgIU9TKFdJTkRPV1MpCiAgICAgLy8gVGhpcyByZWFsbHkgdXBkYXRlcyBib3RoIHRoZSBhY2Nl
c3MgdGltZSBhbmQgdGhlIG1vZGlmaWNhdGlvbiB0aW1lLgotICAgIHV0aW1lcyhXZWJDb3JlOjpG
aWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpLCBudWxscHRy
KTsKKyAgICB1dGltZXMoRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgp
LmRhdGEoKSwgbnVsbHB0cik7CiAjZW5kaWYKIH0KIApAQCAtMTU2LDcgKzE1Niw3IEBAIGJvb2wg
aXNTYWZlVG9Vc2VNZW1vcnlNYXBGb3JQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICBhdHRy
bGlzdCBhdHRyTGlzdCA9IHsgfTsKICAgICBhdHRyTGlzdC5iaXRtYXBjb3VudCA9IEFUVFJfQklU
X01BUF9DT1VOVDsKICAgICBhdHRyTGlzdC5jb21tb25hdHRyID0gQVRUUl9DTU5fREFUQV9QUk9U
RUNUX0ZMQUdTOwotICAgIGludDMyX3QgZXJyb3IgPSBnZXRhdHRybGlzdChXZWJDb3JlOjpGaWxl
U3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpLCAmYXR0ckxpc3Qs
ICZhdHRyQnVmZmVyLCBzaXplb2YoYXR0ckJ1ZmZlciksIEZTT1BUX05PRk9MTE9XKTsKKyAgICBp
bnQzMl90IGVycm9yID0gZ2V0YXR0cmxpc3QoRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKHBhdGgpLmRhdGEoKSwgJmF0dHJMaXN0LCAmYXR0ckJ1ZmZlciwgc2l6ZW9mKGF0dHJC
dWZmZXIpLCBGU09QVF9OT0ZPTExPVyk7CiAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SKE5ldHdvcmssICJVbmFibGUgdG8gZ2V0IGNhY2hlIGRpcmVjdG9yeSBwcm90
ZWN0aW9uIGNsYXNzLCBkaXNhYmxpbmcgdXNlIG9mIHNoYXJlZCBtYXBwZWQgbWVtb3J5Iik7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmgKaW5kZXggN2RjY2U2YzRj
MzY3MjhlOTMxNTgzM2E1MzI5YmQ1NmQ1YzQxMmI4YS4uMTgzMWEzNTFjOWIwZmY1MDVkZjlhZGM3
ZjdjMDNhZjcwMWQ2Yzg4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmgKQEAgLTI1LDcgKzI1LDcg
QEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KKyNp
bmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIG5hbWVzcGFj
ZSBOZXR3b3JrQ2FjaGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsQ29jb2EubW0KaW5kZXggMzY5
YmNmOTczZjJkY2VlMGEzZDQzOTYzNDUzNzBiNjQ2MjFlOWYwOC4uYzY1MjE2NGNhMTg4YTA3ZGE1
N2JjZGU3NWYzYTIyNTJlMTgyZjA4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbENvY29hLm1t
CkBAIC00MSw3ICs0MSw3IEBAIElPQ2hhbm5lbDo6SU9DaGFubmVsKGNvbnN0IFN0cmluZyYgZmls
ZVBhdGgsIFR5cGUgdHlwZSkKICAgICA6IG1fcGF0aChmaWxlUGF0aCkKICAgICAsIG1fdHlwZSh0
eXBlKQogewotICAgIGF1dG8gcGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihmaWxlUGF0aCk7CisgICAgYXV0byBwYXRoID0gRmlsZVN5c3RlbTo6Zmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVQYXRoKTsKICAgICBpbnQgb2ZsYWc7CiAgICAgbW9k
ZV90IG1vZGU7CiAgICAgYm9vbCB1c2VMb3dJT1ByaW9yaXR5ID0gZmFsc2U7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5l
bFNvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVJT0NoYW5uZWxTb3VwLmNwcAppbmRleCA1MzkyYzc5MDU2OWZkNjY1N2EyMWEyNjIwY2IwNTFl
ZmJlZWYwNDU5Li5iNTZmOTY1NTMxMmNkYWQwYzEwOGRjY2M2ZWYxNzI5OTVhZWQxYTViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlP
Q2hhbm5lbFNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlSU9DaGFubmVsU291cC5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgSU9DaGFubmVs
OjpJT0NoYW5uZWwoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgVHlwZSB0eXBlKQogICAgIDogbV9w
YXRoKGZpbGVQYXRoKQogICAgICwgbV90eXBlKHR5cGUpCiB7Ci0gICAgYXV0byBwYXRoID0gV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVQYXRoKTsKKyAg
ICBhdXRvIHBhdGggPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZVBh
dGgpOwogICAgIEdSZWZQdHI8R0ZpbGU+IGZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3Jf
cGF0aChwYXRoLmRhdGEoKSkpOwogICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgY2FzZSBUeXBl
OjpDcmVhdGU6IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3RhdGlzdGljcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0YXRpc3RpY3MuY3BwCmluZGV4IGI0YTEzMTRlYjRiMTVl
ZTAzMzJmNzRlOTIxZTJmYzg3MTkwNjRjMzcuLjYxYmVmMWUxMWMzY2Y4Mzc1ZjczOTI1YjcyM2I5
MTZmYjMxZWIzN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3RhdGlzdGljcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmNwcApAQCAtNzcsNyArNzcsNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8U3RhdGlzdGljcz4gU3RhdGlzdGljczo6b3BlbihDYWNoZSYgY2Fj
aGUsIGNvbnN0IFN0cmluZyYgY2FjaGVQYQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4o
KSk7CiAKLSAgICBTdHJpbmcgZGF0YWJhc2VQYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNhY2hlUGF0aCwgU3RhdGlzdGljc0RhdGFiYXNlTmFtZSk7
CisgICAgU3RyaW5nIGRhdGFiYXNlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChjYWNoZVBhdGgsIFN0YXRpc3RpY3NEYXRhYmFzZU5hbWUpOwogICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFN0YXRpc3RpY3M+KGNhY2hlLCBkYXRhYmFzZVBhdGgpOwogfQogCkBA
IC05OCw3ICs5OCw3IEBAIHZvaWQgU3RhdGlzdGljczo6aW5pdGlhbGl6ZShjb25zdCBTdHJpbmcm
IGRhdGFiYXNlUGF0aCkKICAgICBzZXJpYWxCYWNrZ3JvdW5kSU9RdWV1ZSgpLmRpc3BhdGNoKFt0
aGlzLCBkYXRhYmFzZVBhdGggPSBkYXRhYmFzZVBhdGguaXNvbGF0ZWRDb3B5KCksIG5ldHdvcmtD
YWNoZVBhdGggPSBtX2NhY2hlLnJlY29yZHNQYXRoKCksIHN0YXJ0VGltZV0gewogICAgICAgICBX
ZWJDb3JlOjpTUUxpdGVUcmFuc2FjdGlvbkluUHJvZ3Jlc3NBdXRvQ291bnRlciB0cmFuc2FjdGlv
bkNvdW50ZXI7CiAKLSAgICAgICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVtOjptYWtlQWxsRGly
ZWN0b3JpZXMoV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShkYXRhYmFzZVBhdGgp
KSkKKyAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoRmlsZVN5c3Rl
bTo6ZGlyZWN0b3J5TmFtZShkYXRhYmFzZVBhdGgpKSkKICAgICAgICAgICAgIHJldHVybjsKIAog
ICAgICAgICBMT0coTmV0d29ya0NhY2hlLCAiKE5ldHdvcmtQcm9jZXNzKSBPcGVuaW5nIG5ldHdv
cmsgY2FjaGUgc3RhdGlzdGljcyBkYXRhYmFzZSBhdCAlcy4uLiIsIGRhdGFiYXNlUGF0aC51dGY4
KCkuZGF0YSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCmluZGV4IDRlYTc0MzBmYTIwNDRlOTAxNGE4
OTkwNGQ1YmJjMWViNjViNzljYzYuLmMyNmFhMWI5NmM3MTNhODAwMzdmZDFjNTc4NjVkYjk3MmI2
NGFlZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcApAQCAtMTQ1LDI5ICsxNDUsMjkgQEAgcHVibGlj
Ogogc3RhdGljIFN0cmluZyBtYWtlVmVyc2lvbmVkRGlyZWN0b3J5UGF0aChjb25zdCBTdHJpbmcm
IGJhc2VEaXJlY3RvcnlQYXRoKQogewogICAgIFN0cmluZyB2ZXJzaW9uU3ViZGlyZWN0b3J5ID0g
dmVyc2lvbkRpcmVjdG9yeVByZWZpeCArIFN0cmluZzo6bnVtYmVyKFN0b3JhZ2U6OnZlcnNpb24p
OwotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoYmFzZURpcmVjdG9yeVBhdGgsIHZlcnNpb25TdWJkaXJlY3RvcnkpOworICAgIHJldHVybiBG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoYmFzZURpcmVjdG9yeVBhdGgsIHZl
cnNpb25TdWJkaXJlY3RvcnkpOwogfQogCiBzdGF0aWMgU3RyaW5nIG1ha2VSZWNvcmRzRGlyZWN0
b3J5UGF0aChjb25zdCBTdHJpbmcmIGJhc2VEaXJlY3RvcnlQYXRoKQogewotICAgIHJldHVybiBX
ZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobWFrZVZlcnNpb25l
ZERpcmVjdG9yeVBhdGgoYmFzZURpcmVjdG9yeVBhdGgpLCByZWNvcmRzRGlyZWN0b3J5TmFtZSk7
CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtYWtlVmVy
c2lvbmVkRGlyZWN0b3J5UGF0aChiYXNlRGlyZWN0b3J5UGF0aCksIHJlY29yZHNEaXJlY3RvcnlO
YW1lKTsKIH0KIAogc3RhdGljIFN0cmluZyBtYWtlQmxvYkRpcmVjdG9yeVBhdGgoY29uc3QgU3Ry
aW5nJiBiYXNlRGlyZWN0b3J5UGF0aCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1ha2VWZXJzaW9uZWREaXJlY3RvcnlQYXRoKGJh
c2VEaXJlY3RvcnlQYXRoKSwgYmxvYnNEaXJlY3RvcnlOYW1lKTsKKyAgICByZXR1cm4gRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1ha2VWZXJzaW9uZWREaXJlY3RvcnlQYXRo
KGJhc2VEaXJlY3RvcnlQYXRoKSwgYmxvYnNEaXJlY3RvcnlOYW1lKTsKIH0KIAogc3RhdGljIFN0
cmluZyBtYWtlU2FsdEZpbGVQYXRoKGNvbnN0IFN0cmluZyYgYmFzZURpcmVjdG9yeVBhdGgpCiB7
Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChtYWtlVmVyc2lvbmVkRGlyZWN0b3J5UGF0aChiYXNlRGlyZWN0b3J5UGF0aCksIHNhbHRGaWxl
TmFtZSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCht
YWtlVmVyc2lvbmVkRGlyZWN0b3J5UGF0aChiYXNlRGlyZWN0b3J5UGF0aCksIHNhbHRGaWxlTmFt
ZSk7CiB9CiAKIFJlZlB0cjxTdG9yYWdlPiBTdG9yYWdlOjpvcGVuKGNvbnN0IFN0cmluZyYgY2Fj
aGVQYXRoLCBNb2RlIG1vZGUpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAot
ICAgIGlmICghV2ViQ29yZTo6RmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKG1ha2VWZXJz
aW9uZWREaXJlY3RvcnlQYXRoKGNhY2hlUGF0aCkpKQorICAgIGlmICghRmlsZVN5c3RlbTo6bWFr
ZUFsbERpcmVjdG9yaWVzKG1ha2VWZXJzaW9uZWREaXJlY3RvcnlQYXRoKGNhY2hlUGF0aCkpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBhdXRvIHNhbHQgPSByZWFkT3JNYWtlU2FsdCht
YWtlU2FsdEZpbGVQYXRoKGNhY2hlUGF0aCkpOwogICAgIGlmICghc2FsdCkKQEAgLTE4MCwxMyAr
MTgwLDEzIEBAIHZvaWQgdHJhdmVyc2VSZWNvcmRzRmlsZXMoY29uc3QgU3RyaW5nJiByZWNvcmRz
UGF0aCwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFR5cGUsCiAgICAgdHJhdmVyc2VEaXJlY3Rvcnko
cmVjb3Jkc1BhdGgsIFsmXShjb25zdCBTdHJpbmcmIHBhcnRpdGlvbk5hbWUsIERpcmVjdG9yeUVu
dHJ5VHlwZSBlbnRyeVR5cGUpIHsKICAgICAgICAgaWYgKGVudHJ5VHlwZSAhPSBEaXJlY3RvcnlF
bnRyeVR5cGU6OkRpcmVjdG9yeSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgU3RyaW5n
IHBhcnRpdGlvblBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQocmVjb3Jkc1BhdGgsIHBhcnRpdGlvbk5hbWUpOworICAgICAgICBTdHJpbmcgcGFydGl0
aW9uUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmRzUGF0
aCwgcGFydGl0aW9uTmFtZSk7CiAgICAgICAgIHRyYXZlcnNlRGlyZWN0b3J5KHBhcnRpdGlvblBh
dGgsIFsmXShjb25zdCBTdHJpbmcmIGFjdHVhbFR5cGUsIERpcmVjdG9yeUVudHJ5VHlwZSBlbnRy
eVR5cGUpIHsKICAgICAgICAgICAgIGlmIChlbnRyeVR5cGUgIT0gRGlyZWN0b3J5RW50cnlUeXBl
OjpEaXJlY3RvcnkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgaWYgKCFl
eHBlY3RlZFR5cGUuaXNFbXB0eSgpICYmIGV4cGVjdGVkVHlwZSAhPSBhY3R1YWxUeXBlKQogICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIFN0cmluZyByZWNvcmREaXJlY3RvcnlQ
YXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhcnRp
dGlvblBhdGgsIGFjdHVhbFR5cGUpOworICAgICAgICAgICAgU3RyaW5nIHJlY29yZERpcmVjdG9y
eVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGFydGl0aW9uUGF0
aCwgYWN0dWFsVHlwZSk7CiAgICAgICAgICAgICB0cmF2ZXJzZURpcmVjdG9yeShyZWNvcmREaXJl
Y3RvcnlQYXRoLCBbJmZ1bmN0aW9uLCAmcmVjb3JkRGlyZWN0b3J5UGF0aCwgJmFjdHVhbFR5cGVd
KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIERpcmVjdG9yeUVudHJ5VHlwZSBlbnRyeVR5cGUpIHsK
ICAgICAgICAgICAgICAgICBpZiAoZW50cnlUeXBlICE9IERpcmVjdG9yeUVudHJ5VHlwZTo6Rmls
ZSB8fCBmaWxlTmFtZS5sZW5ndGgoKSA8IEtleTo6aGFzaFN0cmluZ0xlbmd0aCgpKQogICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CkBAIC0yMDYsMTggKzIwNiwxOCBAQCBzdGF0aWMgdm9pZCBk
ZWxldGVFbXB0eVJlY29yZHNEaXJlY3Rvcmllcyhjb25zdCBTdHJpbmcmIHJlY29yZHNQYXRoKQog
ICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIC8vIERlbGV0ZSBbdHlwZV0gc3ViLWZvbGRl
cnMuCi0gICAgICAgIFN0cmluZyBwYXJ0aXRpb25QYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZHNQYXRoLCBwYXJ0aXRpb25OYW1lKTsKKyAg
ICAgICAgU3RyaW5nIHBhcnRpdGlvblBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQocmVjb3Jkc1BhdGgsIHBhcnRpdGlvbk5hbWUpOwogICAgICAgICB0cmF2ZXJzZURp
cmVjdG9yeShwYXJ0aXRpb25QYXRoLCBbJnBhcnRpdGlvblBhdGhdKGNvbnN0IFN0cmluZyYgc3Vi
ZGlyTmFtZSwgRGlyZWN0b3J5RW50cnlUeXBlIGVudHJ5VHlwZSkgewogICAgICAgICAgICAgaWYg
KGVudHJ5VHlwZSAhPSBEaXJlY3RvcnlFbnRyeVR5cGU6OkRpcmVjdG9yeSkKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAKICAgICAgICAgICAgIC8vIExldCBzeXN0ZW0gZmlndXJlIG91dCBpZiBp
dCBpcyByZWFsbHkgZW1wdHkuCi0gICAgICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxl
dGVFbXB0eURpcmVjdG9yeShXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQocGFydGl0aW9uUGF0aCwgc3ViZGlyTmFtZSkpOworICAgICAgICAgICAgRmlsZVN5c3Rl
bTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KHBhcnRpdGlvblBhdGgsIHN1YmRpck5hbWUpKTsKICAgICAgICAgfSk7CiAKICAgICAgICAg
Ly8gRGVsZXRlIFtQYXJ0aXRpb25dIGZvbGRlcnMuCiAgICAgICAgIC8vIExldCBzeXN0ZW0gZmln
dXJlIG91dCBpZiBpdCBpcyByZWFsbHkgZW1wdHkuCi0gICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0
ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChyZWNvcmRzUGF0aCwgcGFydGl0aW9uTmFtZSkpOworICAgICAgICBGaWxl
U3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQocmVjb3Jkc1BhdGgsIHBhcnRpdGlvbk5hbWUpKTsKICAgICB9KTsKIH0KIApAQCAt
MzAwLDExICszMDAsMTEgQEAgdm9pZCBTdG9yYWdlOjpzeW5jaHJvbml6ZSgpCiAKICAgICAgICAg
U3RyaW5nIGFueVR5cGU7CiAgICAgICAgIHRyYXZlcnNlUmVjb3Jkc0ZpbGVzKHJlY29yZHNQYXRo
KCksIGFueVR5cGUsIFsmXShjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIGhh
c2hTdHJpbmcsIGNvbnN0IFN0cmluZyYgdHlwZSwgYm9vbCBpc0Jsb2IsIGNvbnN0IFN0cmluZyYg
cmVjb3JkRGlyZWN0b3J5UGF0aCkgewotICAgICAgICAgICAgYXV0byBmaWxlUGF0aCA9IFdlYkNv
cmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmREaXJlY3RvcnlQ
YXRoLCBmaWxlTmFtZSk7CisgICAgICAgICAgICBhdXRvIGZpbGVQYXRoID0gRmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZERpcmVjdG9yeVBhdGgsIGZpbGVOYW1lKTsK
IAogICAgICAgICAgICAgS2V5OjpIYXNoVHlwZSBoYXNoOwogICAgICAgICAgICAgaWYgKCFLZXk6
OnN0cmluZ1RvSGFzaChoYXNoU3RyaW5nLCBoYXNoKSkgewotICAgICAgICAgICAgICAgIFdlYkNv
cmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZmlsZVBhdGgpOworICAgICAgICAgICAgICAgIEZp
bGVTeXN0ZW06OmRlbGV0ZUZpbGUoZmlsZVBhdGgpOwogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIH0KIApAQCAtMzE4LDcgKzMxOCw3IEBAIHZvaWQgU3RvcmFnZTo6c3luY2hy
b25pemUoKQogCiAgICAgICAgICAgICBpZiAoc2hvdWxkQ29tcHV0ZUV4YWN0UmVjb3Jkc1NpemUp
IHsKICAgICAgICAgICAgICAgICBsb25nIGxvbmcgZmlsZVNpemUgPSAwOwotICAgICAgICAgICAg
ICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmdldEZpbGVTaXplKGZpbGVQYXRoLCBmaWxlU2l6ZSk7
CisgICAgICAgICAgICAgICAgRmlsZVN5c3RlbTo6Z2V0RmlsZVNpemUoZmlsZVBhdGgsIGZpbGVT
aXplKTsKICAgICAgICAgICAgICAgICByZWNvcmRzU2l6ZSArPSBmaWxlU2l6ZTsKICAgICAgICAg
ICAgIH0KIApAQCAtMzgxLDEyICszODEsMTIgQEAgYm9vbCBTdG9yYWdlOjptYXlDb250YWluQmxv
Yihjb25zdCBLZXkmIGtleSkgY29uc3QKIFN0cmluZyBTdG9yYWdlOjpyZWNvcmREaXJlY3RvcnlQ
YXRoRm9yS2V5KGNvbnN0IEtleSYga2V5KSBjb25zdAogewogICAgIEFTU0VSVCgha2V5LnR5cGUo
KS5pc0VtcHR5KCkpOwotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KHJlY29yZHNQYXRoKCksIGtleS5wYXJ0aXRpb25IYXNoQXNTdHJpbmcoKSksIGtleS50eXBl
KCkpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZHNQYXRoKCksIGtleS5wYXJ0
aXRpb25IYXNoQXNTdHJpbmcoKSksIGtleS50eXBlKCkpOwogfQogCiBTdHJpbmcgU3RvcmFnZTo6
cmVjb3JkUGF0aEZvcktleShjb25zdCBLZXkmIGtleSkgY29uc3QKIHsKLSAgICByZXR1cm4gV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZERpcmVjdG9y
eVBhdGhGb3JLZXkoa2V5KSwga2V5Lmhhc2hBc1N0cmluZygpKTsKKyAgICByZXR1cm4gRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZERpcmVjdG9yeVBhdGhGb3JLZXko
a2V5KSwga2V5Lmhhc2hBc1N0cmluZygpKTsKIH0KIAogc3RhdGljIFN0cmluZyBibG9iUGF0aEZv
clJlY29yZFBhdGgoY29uc3QgU3RyaW5nJiByZWNvcmRQYXRoKQpAQCAtNjI5LDcgKzYyOSw3IEBA
IHZvaWQgU3RvcmFnZTo6ZGVsZXRlRmlsZXMoY29uc3QgS2V5JiBrZXkpCiB7CiAgICAgQVNTRVJU
KCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVG
aWxlKHJlY29yZFBhdGhGb3JLZXkoa2V5KSk7CisgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShy
ZWNvcmRQYXRoRm9yS2V5KGtleSkpOwogICAgIG1fYmxvYlN0b3JhZ2UucmVtb3ZlKGJsb2JQYXRo
Rm9yS2V5KGtleSkpOwogfQogCkBAIC04MDksNyArODA5LDcgQEAgdm9pZCBTdG9yYWdlOjpkaXNw
YXRjaFdyaXRlT3BlcmF0aW9uKHN0ZDo6dW5pcXVlX3B0cjxXcml0ZU9wZXJhdGlvbj4gd3JpdGVP
cGVyYXQKICAgICAgICAgYXV0byByZWNvcmREaXJlY3RvclBhdGggPSByZWNvcmREaXJlY3RvcnlQ
YXRoRm9yS2V5KHdyaXRlT3BlcmF0aW9uLnJlY29yZC5rZXkpOwogICAgICAgICBhdXRvIHJlY29y
ZFBhdGggPSByZWNvcmRQYXRoRm9yS2V5KHdyaXRlT3BlcmF0aW9uLnJlY29yZC5rZXkpOwogCi0g
ICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhyZWNvcmREaXJl
Y3RvclBhdGgpOworICAgICAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMocmVjb3Jk
RGlyZWN0b3JQYXRoKTsKIAogICAgICAgICArK3dyaXRlT3BlcmF0aW9uLmFjdGl2ZUNvdW50Owog
CkBAIC05MTcsNyArOTE3LDcgQEAgdm9pZCBTdG9yYWdlOjp0cmF2ZXJzZShjb25zdCBTdHJpbmcm
IHR5cGUsIE9wdGlvblNldDxUcmF2ZXJzZUZsYWc+IGZsYWdzLCBUcmF2ZXIKICAgICAgICAgICAg
IGlmIChpc0Jsb2IpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICBhdXRv
IHJlY29yZFBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQocmVjb3JkRGlyZWN0b3J5UGF0aCwgZmlsZU5hbWUpOworICAgICAgICAgICAgYXV0byByZWNv
cmRQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZERpcmVj
dG9yeVBhdGgsIGZpbGVOYW1lKTsKIAogICAgICAgICAgICAgZG91YmxlIHdvcnRoID0gLTE7CiAg
ICAgICAgICAgICBpZiAodHJhdmVyc2VPcGVyYXRpb24uZmxhZ3MgJiBUcmF2ZXJzZUZsYWc6OkNv
bXB1dGVXb3J0aCkKQEAgLTEwMDksMTMgKzEwMDksMTMgQEAgdm9pZCBTdG9yYWdlOjpjbGVhcihj
b25zdCBTdHJpbmcmIHR5cGUsIFdhbGxUaW1lIG1vZGlmaWVkU2luY2VUaW1lLCBDb21wbGV0aW9u
SGEKICAgICBpb1F1ZXVlKCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgbW9kaWZpZWRTaW5jZVRpbWUsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlciksIHR5cGUgPSB0eXBlLmlzb2xhdGVkQ29weSgpXSAoKSBtdXRhYmxl
IHsKICAgICAgICAgYXV0byByZWNvcmRzUGF0aCA9IHRoaXMtPnJlY29yZHNQYXRoKCk7CiAgICAg
ICAgIHRyYXZlcnNlUmVjb3Jkc0ZpbGVzKHJlY29yZHNQYXRoLCB0eXBlLCBbbW9kaWZpZWRTaW5j
ZVRpbWVdKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgaGFzaFN0cmluZywg
Y29uc3QgU3RyaW5nJiB0eXBlLCBib29sIGlzQmxvYiwgY29uc3QgU3RyaW5nJiByZWNvcmREaXJl
Y3RvcnlQYXRoKSB7Ci0gICAgICAgICAgICBhdXRvIGZpbGVQYXRoID0gV2ViQ29yZTo6RmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZERpcmVjdG9yeVBhdGgsIGZpbGVO
YW1lKTsKKyAgICAgICAgICAgIGF1dG8gZmlsZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQocmVjb3JkRGlyZWN0b3J5UGF0aCwgZmlsZU5hbWUpOwogICAgICAgICAg
ICAgaWYgKG1vZGlmaWVkU2luY2VUaW1lID4gLVdhbGxUaW1lOjppbmZpbml0eSgpKSB7CiAgICAg
ICAgICAgICAgICAgYXV0byB0aW1lcyA9IGZpbGVUaW1lcyhmaWxlUGF0aCk7CiAgICAgICAgICAg
ICAgICAgaWYgKHRpbWVzLm1vZGlmaWNhdGlvbiA8IG1vZGlmaWVkU2luY2VUaW1lKQogICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGZpbGVQYXRoKTsKKyAgICAgICAgICAgIEZpbGVTeXN0
ZW06OmRlbGV0ZUZpbGUoZmlsZVBhdGgpOwogICAgICAgICB9KTsKIAogICAgICAgICBkZWxldGVF
bXB0eVJlY29yZHNEaXJlY3RvcmllcyhyZWNvcmRzUGF0aCk7CkBAIC0xMDg5LDcgKzEwODksNyBA
QCB2b2lkIFN0b3JhZ2U6OnNocmluaygpCiAgICAgICAgICAgICBpZiAoaXNCbG9iKQogICAgICAg
ICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgYXV0byByZWNvcmRQYXRoID0gV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZERpcmVjdG9yeVBh
dGgsIGZpbGVOYW1lKTsKKyAgICAgICAgICAgIGF1dG8gcmVjb3JkUGF0aCA9IEZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmREaXJlY3RvcnlQYXRoLCBmaWxlTmFtZSk7
CiAgICAgICAgICAgICBhdXRvIGJsb2JQYXRoID0gYmxvYlBhdGhGb3JSZWNvcmRQYXRoKHJlY29y
ZFBhdGgpOwogCiAgICAgICAgICAgICBhdXRvIHRpbWVzID0gZmlsZVRpbWVzKHJlY29yZFBhdGgp
OwpAQCAtMTEwMSw3ICsxMTAxLDcgQEAgdm9pZCBTdG9yYWdlOjpzaHJpbmsoKQogICAgICAgICAg
ICAgTE9HKE5ldHdvcmtDYWNoZVN0b3JhZ2UsICJEZWxldGlvbiBwcm9iYWJpbGl0eT0lZiBib2R5
TGlua0NvdW50PSVkIHNob3VsZERlbGV0ZT0lZCIsIHByb2JhYmlsaXR5LCBib2R5U2hhcmVDb3Vu
dCwgc2hvdWxkRGVsZXRlKTsKIAogICAgICAgICAgICAgaWYgKHNob3VsZERlbGV0ZSkgewotICAg
ICAgICAgICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUocmVjb3JkUGF0aCk7
CisgICAgICAgICAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShyZWNvcmRQYXRoKTsKICAg
ICAgICAgICAgICAgICBtX2Jsb2JTdG9yYWdlLnJlbW92ZShibG9iUGF0aCk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0pOwpAQCAtMTEzNyw3ICsxMTM3LDcgQEAgdm9pZCBTdG9yYWdlOjpkZWxl
dGVPbGRWZXJzaW9ucygpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogI2VuZGlmCiAKLSAgICAg
ICAgICAgIGF1dG8gb2xkVmVyc2lvblBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQoY2FjaGVQYXRoLCBzdWJkaXJOYW1lKTsKKyAgICAgICAgICAgIGF1
dG8gb2xkVmVyc2lvblBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
Y2FjaGVQYXRoLCBzdWJkaXJOYW1lKTsKICAgICAgICAgICAgIExPRyhOZXR3b3JrQ2FjaGVTdG9y
YWdlLCAiKE5ldHdvcmtQcm9jZXNzKSBkZWxldGluZyBvbGQgY2FjaGUgdmVyc2lvbiwgcGF0aCAl
cyIsIG9sZFZlcnNpb25QYXRoLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgICAgICAgICBkZWxldGVE
aXJlY3RvcnlSZWN1cnNpdmVseShvbGRWZXJzaW9uUGF0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQpp
bmRleCBhNjFmOTM4NWE2Nzc0YmQwYjc1YzUzOTY5Y2UxMzI4NzhiM2I5NzNmLi5mNDdiZDgxOTg4
MzI2NmFhNjc4YzQ4N2Y2YjM1MzhlYzVkYWJiZTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KQEAg
LTM2LDExICszNiwxMSBAQAogI2ltcG9ydCAiTmV0d29ya1Nlc3Npb25Db2NvYS5oIgogI2ltcG9y
dCAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0F1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQg
PFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vdElt
cGxlbWVudGVkLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2ltcG9y
dCA8cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4KKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+
CiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgogI2ltcG9ydCA8d3RmL1Byb2Nlc3NQcml2aWxl
Z2UuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0Jhc2U2NC5oPgpAQCAtNDAzLDggKzQwMyw4IEBAIHZv
aWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OnNldFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKGNvbnN0
IFdURjo6U3RyaW5nJiBmaWxlbmFtCiAKICAgICBtX3Rhc2suZ2V0KCkuX3BhdGhUb0Rvd25sb2Fk
VGFza0ZpbGUgPSBtX3BlbmRpbmdEb3dubG9hZExvY2F0aW9uOwogCi0gICAgaWYgKGFsbG93T3Zl
cndyaXRlICYmIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobV9wZW5kaW5nRG93bmxv
YWRMb2NhdGlvbikpCi0gICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZmls
ZW5hbWUpOworICAgIGlmIChhbGxvd092ZXJ3cml0ZSAmJiBGaWxlU3lzdGVtOjpmaWxlRXhpc3Rz
KG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRpb24pKQorICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVG
aWxlKGZpbGVuYW1lKTsKIH0KIAogYm9vbCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6dHJ5UGFzc3dv
cmRCYXNlZEF1dGhlbnRpY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlJiBjaGFsbGVuZ2UsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiBjb21wbGV0aW9uSGFu
ZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya1Nlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya1Nlc3Npb25Db2NvYS5tbQppbmRleCBmNmFkNDlmOGJhYzM1ZDAxN2I5NjUzNzk4ZDU3
YWFhMmY0Mzk1NjA4Li40YTFkNzkyMTBhZmE1OTZlNGIwZmFmY2U4MThmZjRmNjgyYjM4YjRhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNz
aW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrU2Vzc2lvbkNvY29hLm1tCkBAIC03NzksNyArNzc5LDcgQEAgLSAodm9pZClVUkxTZXNzaW9u
OihOU1VSTFNlc3Npb24gKilzZXNzaW9uIGRhdGFUYXNrOihOU1VSTFNlc3Npb25EYXRhVGFzayAq
KWRhdGEKICAgICAgICAgYXV0byYgZG93bmxvYWRNYW5hZ2VyID0gX3Nlc3Npb24tPm5ldHdvcmtQ
cm9jZXNzKCkuZG93bmxvYWRNYW5hZ2VyKCk7CiAgICAgICAgIGF1dG8gZG93bmxvYWQgPSBzdGQ6
Om1ha2VfdW5pcXVlPFdlYktpdDo6RG93bmxvYWQ+KGRvd25sb2FkTWFuYWdlciwgZG93bmxvYWRJ
RCwgZG93bmxvYWRUYXNrLCBfc2Vzc2lvbi0+c2Vzc2lvbklEKCksIG5ldHdvcmtEYXRhVGFzay0+
c3VnZ2VzdGVkRmlsZW5hbWUoKSk7CiAgICAgICAgIG5ldHdvcmtEYXRhVGFzay0+dHJhbnNmZXJT
YW5kYm94RXh0ZW5zaW9uVG9Eb3dubG9hZCgqZG93bmxvYWQpOwotICAgICAgICBBU1NFUlQoV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhuZXR3b3JrRGF0YVRhc2stPnBlbmRpbmdEb3du
bG9hZExvY2F0aW9uKCkpKTsKKyAgICAgICAgQVNTRVJUKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMo
bmV0d29ya0RhdGFUYXNrLT5wZW5kaW5nRG93bmxvYWRMb2NhdGlvbigpKSk7CiAgICAgICAgIGRv
d25sb2FkLT5kaWRDcmVhdGVEZXN0aW5hdGlvbihuZXR3b3JrRGF0YVRhc2stPnBlbmRpbmdEb3du
bG9hZExvY2F0aW9uKCkpOwogICAgICAgICBkb3dubG9hZE1hbmFnZXIuZGF0YVRhc2tCZWNhbWVE
b3dubG9hZFRhc2soZG93bmxvYWRJRCwgV1RGTW92ZShkb3dubG9hZCkpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUHJvY2Vzc01hYy5tbSBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzTWFjLm1tCmlu
ZGV4IDM3ZjNiN2Y3MmFhNTAyYjMyYmE4MTFlYzliYTA4ZjVlMjU1ODYzYjIuLmY1YmYwNGFlNDY1
ZjYyYjc0ZDJiMThhODE3NTkwMWExNmVhNTU1ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzTWFjLm1tCkBAIC0zOCwxMiArMzgs
MTIgQEAKICNpbXBvcnQgIlN0cmluZ1V0aWxpdGllcy5oIgogI2ltcG9ydCAiV0tGb3VuZGF0aW9u
LmgiCiAjaW1wb3J0IDxXZWJDb3JlL0NlcnRpZmljYXRlSW5mby5oPgotI2ltcG9ydCA8V2ViQ29y
ZS9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3MuaD4KICNp
bXBvcnQgPG5vdGlmeS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4KICNp
bXBvcnQgPHBhbC9zcGkvY29jb2EvTGF1bmNoU2VydmljZXNTUEkuaD4KICNpbXBvcnQgPHN5c2V4
aXRzLmg+CisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8d3RmL01lbW9yeVBy
ZXNzdXJlSGFuZGxlci5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1Nv
dXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNz
U291cC5jcHAKaW5kZXggYzdjZTFkMjdhMDAxYmZlZGRlZDI2MjI0ZTg3MzdhY2I0MDljYjliYy4u
YWE3YzUwY2JmMWUzOThjOWMzYmE5YzAwMTljZmYxZTRkZWU3NzhiMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5j
cHAKQEAgLTMyLDEyICszMiwxMiBAQAogI2luY2x1ZGUgIlJlc291cmNlQ2FjaGVzVG9DbGVhci5o
IgogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NlcnRp
ZmljYXRlSW5mby5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJ
bXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1NvdXBOZXR3b3JrU2Vzc2lvbi5oPgogI2luY2x1ZGUgPGxpYnNvdXAvc291
cC5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL1JBTVNpemUu
aD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1Vu
aXF1ZVB0ci5oPgpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRm
b3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpCiAg
ICAgQVNTRVJUKCFwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeS5pc0VtcHR5KCkpOwogICAg
IG1fZGlza0NhY2hlRGlyZWN0b3J5ID0gcGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3Rvcnk7CiAK
LSAgICBTb3VwTmV0d29ya1Nlc3Npb246OmNsZWFyT2xkU291cENhY2hlKFdlYkNvcmU6OkZpbGVT
eXN0ZW06OmRpcmVjdG9yeU5hbWUobV9kaXNrQ2FjaGVEaXJlY3RvcnkpKTsKKyAgICBTb3VwTmV0
d29ya1Nlc3Npb246OmNsZWFyT2xkU291cENhY2hlKEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUo
bV9kaXNrQ2FjaGVEaXJlY3RvcnkpKTsKIAogICAgIE9wdGlvblNldDxOZXR3b3JrQ2FjaGU6OkNh
Y2hlOjpPcHRpb24+IGNhY2hlT3B0aW9ucyB7IE5ldHdvcmtDYWNoZTo6Q2FjaGU6Ok9wdGlvbjo6
UmVnaXN0ZXJOb3RpZnkgfTsKICAgICBpZiAocGFyYW1ldGVycy5zaG91bGRFbmFibGVOZXR3b3Jr
Q2FjaGVFZmZpY2FjeUxvZ2dpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblBy
b2Nlc3MvdW5peC9QbHVnaW5Qcm9jZXNzTWFpblVuaXguY3BwIGIvU291cmNlL1dlYktpdC9QbHVn
aW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc01haW5Vbml4LmNwcAppbmRleCAyYmQyZWQ1OWFl
NmEyZTI0YjA3NDhiMDNjZWJjMzU2M2M2NjcxODNlLi4zYWRlNGM5NDNmMDliNTFkM2NjM2JlYzJj
YTk2MzNmNzNkMTM0OTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3Mv
dW5peC9QbHVnaW5Qcm9jZXNzTWFpblVuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGx1Z2lu
UHJvY2Vzcy91bml4L1BsdWdpblByb2Nlc3NNYWluVW5peC5jcHAKQEAgLTM0LDggKzM0LDggQEAK
ICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0c2NhcGVQbHVnaW4uaCIKICNpbmNs
dWRlICJQbHVnaW5Qcm9jZXNzLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAj
aW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogI2lmIFBM
QVRGT1JNKEdUSykKICNpbmNsdWRlIDxndGsvZ3RrLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9QZXJzaXN0ZW5jeVV0aWxzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Bl
cnNpc3RlbmN5VXRpbHMuY3BwCmluZGV4IDVkYmE5NjhiZDdlMGIzOGMzZDIyNjk0ZDZkNWQyZTZi
MDY5ZDJhODEuLmVjYTk2NDFkMjA1MzQ1YzgxODk2ZWI1NjVkZjYyN2Y5NWUzYzUxN2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BlcnNpc3RlbmN5VXRpbHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1BlcnNpc3RlbmN5VXRpbHMuY3BwCkBAIC0yNyw4ICsyNyw4IEBA
CiAjaW5jbHVkZSAiUGVyc2lzdGVuY3lVdGlscy5oIgogCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgot
I2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVk
QnVmZmVyLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvUnVu
TG9vcC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvdW5peC9OZXRzY2FwZVBsdWdpbk1vZHVsZVVuaXguY3Bw
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS91bml4L05ldHNjYXBlUGx1
Z2luTW9kdWxlVW5peC5jcHAKaW5kZXggZmIxZDlkYzkyNmZkNjc2NzkzZjQ1NGE3NGZhNTUxYWVl
NTcwYzhlNS4uMmE2NWRhOWZiY2IyZjMzYTFmZjU0MTBiZTg4OThjZWYxMzc5OTExZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS91bml4L05ldHNjYXBl
UGx1Z2luTW9kdWxlVW5peC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9O
ZXRzY2FwZS91bml4L05ldHNjYXBlUGx1Z2luTW9kdWxlVW5peC5jcHAKQEAgLTMwLDE2ICszMCwx
NSBAQAogCiAjaW5jbHVkZSAiTmV0c2NhcGVCcm93c2VyRnVuY3MuaCIKICNpbmNsdWRlICJQbHVn
aW5Qcm9jZXNzUHJveHkuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNs
dWRlIDxlcnJuby5oPgogI2luY2x1ZGUgPGZjbnRsLmg+CiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4K
ICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDx3
dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAog
bmFtZXNwYWNlIFdlYktpdCB7Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogY2xhc3MgU3Rk
b3V0RGV2TnVsbFJlZGlyZWN0b3IgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvUGx1Z2lucy91bml4L1BsdWdpblNlYXJjaFBhdGguY3BwIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvUGx1Z2lucy91bml4L1BsdWdpblNlYXJjaFBhdGguY3BwCmluZGV4IGU4YWY5NjA0
Y2U1NTk1YTQ0NGZlOGNhNTA0NWQzYTYxN2FiMjM2NGEuLjJiZDU0OWE5NWRmYTY3NWNlNDdmNTZk
NzhhNTliNGY3MzE1YTExYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdp
bnMvdW5peC9QbHVnaW5TZWFyY2hQYXRoLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Q
bHVnaW5zL3VuaXgvUGx1Z2luU2VhcmNoUGF0aC5jcHAKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQbHVnaW5TZWFyY2hQYXRoLmgiCiAKLSNpbmNsdWRl
IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5oIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViTWVtb3J5U2FtcGxlci5oCmluZGV4IDgwODEzZmVhMDUwZjIwNDkxYmQxYzhiNTBl
OTBiMWNiYmJjYWEzNDQuLjcyMWNkYmYzODkyMjY0YmM5ZmQ3OTJiNTA4MzgzMGZmNTE5ZmM5YmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYk1lbW9yeVNhbXBsZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJNZW1vcnlTYW1wbGVyLmgKQEAgLTUyLDggKzUyLDgg
QEAKICNpZiBFTkFCTEUoTUVNT1JZX1NBTVBMRVIpCiAKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5z
aW9uLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9UaW1lci5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KQEAgLTg3LDcgKzg3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGluaXRpYWxpemVUaW1l
cnMoZG91YmxlKTsKICAgICB2b2lkIHNhbXBsZVRpbWVyRmlyZWQoKTsKICAgICB2b2lkIHN0b3BU
aW1lckZpcmVkKCk7Ci0gICAgdm9pZCBhcHBlbmRDdXJyZW50TWVtb3J5VXNhZ2VUb0ZpbGUoV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlJik7CisgICAgdm9pZCBhcHBlbmRD
dXJyZW50TWVtb3J5VXNhZ2VUb0ZpbGUoRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlJik7
CiAgICAgdm9pZCBzZW5kTWVtb3J5UHJlc3N1cmVFdmVudCgpOwogICAgIAogICAgIFN5c3RlbU1h
bGxvY1N0YXRzIHNhbXBsZVN5c3RlbU1hbGxvYygpIGNvbnN0OwpAQCAtOTUsNyArOTUsNyBAQCBw
cml2YXRlOgogICAgIFdlYk1lbW9yeVN0YXRpc3RpY3Mgc2FtcGxlV2ViS2l0KCkgY29uc3Q7CiAg
ICAgU3RyaW5nIHByb2Nlc3NOYW1lKCkgY29uc3Q7CiAgICAgCi0gICAgV2ViQ29yZTo6RmlsZVN5
c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIG1fc2FtcGxlTG9nRmlsZSB7IFdlYkNvcmU6OkZpbGVT
eXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUgfTsKKyAgICBGaWxlU3lzdGVtOjpQbGF0
Zm9ybUZpbGVIYW5kbGUgbV9zYW1wbGVMb2dGaWxlIHsgRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRm
b3JtRmlsZUhhbmRsZSB9OwogICAgIFN0cmluZyBtX3NhbXBsZUxvZ0ZpbGVQYXRoOwogICAgIFdl
YkNvcmU6OlRpbWVyIG1fc2FtcGxlVGltZXI7CiAgICAgV2ViQ29yZTo6VGltZXIgbV9zdG9wVGlt
ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9nbGliL1Byb2Nlc3NFeGVjdXRh
YmxlUGF0aEdMaWIuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ2xpYi9Qcm9jZXNzRXhlY3V0
YWJsZVBhdGhHTGliLmNwcAppbmRleCBhNzBiNDFhMDlhOTMwYmJkYzNiNTQxY2U2YTcwOGFkODli
YmMyZjRiLi40ZmYzNWQzMWRlMWQ1NzIzMWE2ZjZlMTAxNWE4NTVkNDBmOGM4YzM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9nbGliL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aEdMaWIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2dsaWIvUHJvY2Vzc0V4ZWN1dGFibGVQYXRo
R0xpYi5jcHAKQEAgLTI3LDEyICsyNywxMSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIlByb2Nlc3NFeGVjdXRhYmxlUGF0aC5oIgogCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lz
dGVtLmg+CiAjaW5jbHVkZSA8Z2xpYi5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAj
aW5jbHVkZSA8d3RmL2dsaWIvR0xpYlV0aWxpdGllcy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
LXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiAjaWYgRU5BQkxFKERFVkVMT1BFUl9NT0RFKQog
c3RhdGljIFN0cmluZyBnZXRFeGVjdXRhYmxlUGF0aCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9pb3MvQ2hpbGRQcm9jZXNzSU9TLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
aW9zL0NoaWxkUHJvY2Vzc0lPUy5tbQppbmRleCA4MWQ1NGYzYmYwMDllZmFmMDVkNDAyZDZmNWNm
ZWE4ZDEwZjRiNTY3Li42OWQ1M2NmZjMxNGE5NWNiYzRhODA3YWI5OGM5ZWNhODJmZTJiZTIxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvQ2hpbGRQcm9jZXNzSU9TLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9DaGlsZFByb2Nlc3NJT1MubW0KQEAgLTMxLDcg
KzMxLDYgQEAKIAogI2ltcG9ydCAiU2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1ldGVycy5oIgog
I2ltcG9ydCAiWFBDU2VydmljZUVudHJ5UG9pbnQuaCIKLSNpbXBvcnQgPFdlYkNvcmUvRmlsZVN5
c3RlbS5oPgogI2ltcG9ydCA8V2ViQ29yZS9GbG9hdGluZ1BvaW50RW52aXJvbm1lbnQuaD4KICNp
bXBvcnQgPFdlYkNvcmUvU3lzdGVtVmVyc2lvbi5oPgogI2ltcG9ydCA8bWFjaC9tYWNoLmg+CkBA
IC0zOSw2ICszOCw3IEBACiAjaW1wb3J0IDxwd2QuaD4KICNpbXBvcnQgPHN0ZGxpYi5oPgogI2lt
cG9ydCA8c3lzZXhpdHMuaD4KKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKICNpZiBFTkFC
TEUoTUFOVUFMX1NBTkRCT1hJTkcpCiAjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJ
Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQ2hpbGRQcm9jZXNzTWFj
Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0NoaWxkUHJvY2Vzc01hYy5tbQppbmRleCAz
YzM5NGNjOTE2YzA5OTIwZDAzMzNmMmM0YTI1OGU0N2YxZTdjOTc5Li43ODUzNmFhZTYwYmNmMDJj
OTI2NjBjMzI4MTFhOGQwZjU4ZWZmNmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9tYWMvQ2hpbGRQcm9jZXNzTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9D
aGlsZFByb2Nlc3NNYWMubW0KQEAgLTM1LDcgKzM1LDYgQEAKICNpbXBvcnQgIldLRm91bmRhdGlv
bi5oIgogI2ltcG9ydCAiWFBDU2VydmljZUVudHJ5UG9pbnQuaCIKICNpbXBvcnQgPFdlYkNvcmUv
RmlsZUhhbmRsZS5oPgotI2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1N5c3RlbVZlcnNpb24uaD4KICNpbXBvcnQgPG1hY2gtby9keWxkLmg+CiAjaW1wb3J0
IDxtYWNoL21hY2guaD4KQEAgLTQ3LDYgKzQ2LDcgQEAKICNpbXBvcnQgPHN5cy9zeXNjdGwuaD4K
ICNpbXBvcnQgPHN5c2V4aXRzLmg+CiAjaW1wb3J0IDx3dGYvRGF0YUxvZy5oPgorI2ltcG9ydCA8
d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0Zi9SYW5kb21OdW1iZXIuaD4KICNpbXBvcnQg
PHd0Zi9TY29wZS5oPgogI2ltcG9ydCA8d3RmL1N5c3RlbVRyYWNpbmcuaD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9TYW5kYm94RXh0ZW5zaW9uTWFjLm1tIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvbWFjL1NhbmRib3hFeHRlbnNpb25NYWMubW0KaW5kZXggMGNlYzk4NWM3
ODVjNzczNjU5NzcyZDI0ZjFiNmQ1NzZkNzFkNzVlMS4uYWZiYzZiMmExNGU1YmZmMGMxNjY1NmI3
YzIwODc3Y2JjZGRkNDU3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1Nh
bmRib3hFeHRlbnNpb25NYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1NhbmRi
b3hFeHRlbnNpb25NYWMubW0KQEAgLTMxLDEzICszMSwxMiBAQAogI2ltcG9ydCAiRGF0YVJlZmVy
ZW5jZS5oIgogI2ltcG9ydCAiRGVjb2Rlci5oIgogI2ltcG9ydCAiRW5jb2Rlci5oIgotI2ltcG9y
dCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDxzeXMvc3RhdC5oPgorI2ltcG9ydCA8
d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0Zi9zcGkvZGFyd2luL1NhbmRib3hTUEkuaD4K
ICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7Ci11c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogY2xhc3MgU2FuZGJveEV4dGVuc2lvbkltcGwgewogcHVi
bGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRS
dWxlTGlzdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50
UnVsZUxpc3RTdG9yZS5jcHAKaW5kZXggMzhmNDJjYjkxYTUzOGVkZTY4ZTIyNTk0MTA1MGY5NmFm
NjdiOTY5OC4uNzQyNmJkMmI0NTU0ZjNlZmVjY2FiZmE2ODk5NmU1NWFiZmVkYTEyOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3Jl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0
U3RvcmUuY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9RdWFsaWZpZWRO
YW1lLmg+CiAjaW5jbHVkZSA8c3RyaW5nPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxl
ci5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYvV29ya1F1
ZXVlLmg+CkBAIC00OCw3ICs0OSw3IEBACiAKIG5hbWVzcGFjZSBBUEkgewogdXNpbmcgbmFtZXNw
YWNlIFdlYktpdDo6TmV0d29ya0NhY2hlOwotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU6OkZpbGVT
eXN0ZW07Cit1c2luZyBuYW1lc3BhY2UgV1RGOjpGaWxlU3lzdGVtOwogCiBDb250ZW50UnVsZUxp
c3RTdG9yZSYgQ29udGVudFJ1bGVMaXN0U3RvcmU6OmxlZ2FjeURlZmF1bHRTdG9yZSgpCiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJV2Vic2l0ZURh
dGFTdG9yZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdl
YnNpdGVEYXRhU3RvcmVDb2NvYS5tbQppbmRleCA0YTJlYzM4NzIzN2ZmZGM4Y2E4OTQ3MTg2ZmZl
ZDBkNWNhNGVhNzU0Li4zODg0ZjQzYzFlMjBhMTI5OGJhODg1N2ViMWIwOTE1NWE5OGIwMDc3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJV2Vic2l0ZURh
dGFTdG9yZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9B
UElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KQEAgLTI4LDkgKzI4LDggQEAKIAogI2luY2x1ZGUg
IlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlICJTYW5kYm94VXRpbGl0aWVzLmgiCi0KICNp
bmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVT
eXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiAjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+CkBA
IC0xNjksNyArMTY4LDcgQEAgV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVm
YXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkKICAgICAvLyBDdXJyZW50bHksIHRoZSB0
b3AgbGV2ZWwgb2YgdGhhdCBkaXJlY3RvcnkgY29udGFpbnMgZW50aXRpZXMgcmVsYXRlZCB0byBX
ZWJTUUwgZGF0YWJhc2VzLgogICAgIC8vIFdlIHNob3VsZCBmaXggdGhpcywgYW5kIG1vdmUgV2Vi
U1FMIGludG8gYSBzdWJkaXJlY3RvcnkgKGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMjQ4MDcpCiAgICAgLy8gSW4gdGhlIG1lYW50aW1lLCBhbiBlbnRpdHkgbmFtZSBw
cmVmaXhlZCB3aXRoIHRocmVlIHVuZGVyc2NvcmVzIHdpbGwgbm90IGNvbmZsaWN0IHdpdGggYW55
IFdlYlNRTCBlbnRpdGllcy4KLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KGxlZ2FjeURlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgp
LCAiX19fSW5kZXhlZERCIik7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChsZWdhY3lEZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKSwgIl9fX0lu
ZGV4ZWREQiIpOwogfQogCiBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZh
dWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcAppbmRleCBl
MWM0NTI5YjNkMjFlZTU4YmZlZmI1YzE4ZmVmYjUxMTIyYzAxNjBmLi5mNWFiOTMxY2JlZDNiNzcx
YmYzY2VjODEyY2I3NDJlNDliYjY4NTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvQVBJV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwCkBAIC0y
Niw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQVBJV2Vic2l0ZURh
dGFTdG9yZS5oIgogCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8
d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CiAKICNp
ZiBQTEFURk9STShHVEspCkBAIC00NiwxMiArNDYsMTIgQEAgV1RGOjpTdHJpbmcgV2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKQogLy8gV2h5IGlzIG9u
bHkgdGhpcyBkaXJlY3RvcnkgbmFtZXNwYWNlZCB0byBhIHBhcnRpY3VsYXIgYXBwbGljYXRpb24/
CiBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0
b3J5KCkKIHsKLSAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6
OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfcHJn
bmFtZSgpKSwgIldlYktpdENhY2hlIikpOworICAgIHJldHVybiBjYWNoZURpcmVjdG9yeUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihnX2dldF9wcmdu
YW1lKCkpLCAiV2ViS2l0Q2FjaGUiKSk7CiB9CiAKIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKQogewotICAgIHJldHVybiBjYWNoZURp
cmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihnX2dldF9wcmduYW1lKCkpLCAiQ2FjaGVTdG9yYWdlIikpOwor
ICAgIHJldHVybiBjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihnX2dldF9wcmduYW1lKCkpLCAiQ2FjaGVTdG9yYWdlIikpOwog
fQogCiBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SW5kZXhlZERCRGF0YWJh
c2VEaXJlY3RvcnkoKQpAQCAtOTEsMTkgKzkxLDE5IEBAIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkKIAogV1RGOjpT
dHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6Y2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oY29uc3QgV1RGOjpTdHJpbmcmIGRpcmVjdG9yeU5hbWUpCiB7Ci0gICAgcmV0dXJuIFdl
YkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxl
U3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGdfZ2V0X3VzZXJfY2Fj
aGVfZGlyKCkpLCBkaXJlY3RvcnlOYW1lKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZ19nZXRfdXNlcl9jYWNoZV9kaXIoKSksIGRpcmVjdG9yeU5hbWUpOwogfQogCiBX
VEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjp3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSkKIHsKLSAg
ICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdl
YkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19n
ZXRfdXNlcl9kYXRhX2RpcigpKSwgZGlyZWN0b3J5TmFtZSk7CisgICAgcmV0dXJuIEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKGdfZ2V0X3VzZXJfZGF0YV9kaXIoKSksIGRpcmVjdG9yeU5hbWUp
OwogfQogCiBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0QXBwbGlj
YXRpb25DYWNoZURpcmVjdG9yeSgpCiB7CiAjaWYgUExBVEZPUk0oV1BFKQogICAgIEdVbmlxdWVQ
dHI8Z2NoYXI+IGNhY2hlRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9jYWNo
ZV9kaXIoKSwgIndwZSIsICJhcHBjYWNoZSIsIG51bGxwdHIpKTsKLSAgICByZXR1cm4gV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjYWNoZURp
cmVjdG9yeS5nZXQoKSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oY2FjaGVEaXJlY3RvcnkuZ2V0KCkpOwogI2VuZGlmCiAgICAgcmV0
dXJuIGRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCk7CiB9CkBAIC0xMTIsNyArMTEy
LDcgQEAgV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdE5ldHdvcmtD
YWNoZURpcmVjdG9yeSgpCiB7CiAjaWYgUExBVEZPUk0oV1BFKQogICAgIEdVbmlxdWVQdHI8Y2hh
cj4gZGlza0NhY2hlRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9jYWNoZV9k
aXIoKSwgIndwZSIsICJjYWNoZSIsIG51bGxwdHIpKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihkaXNrQ2FjaGVEaXJl
Y3RvcnkuZ2V0KCkpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKGRpc2tDYWNoZURpcmVjdG9yeS5nZXQoKSk7CiAjZW5kaWYKICAgICBy
ZXR1cm4gZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpOwogfQpAQCAtMTIxLDcgKzEyMSw3
IEBAIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRXZWJTUUxEYXRh
YmFzZURpcmVjdG9yeSgpCiB7CiAjaWYgUExBVEZPUk0oV1BFKQogICAgIEdVbmlxdWVQdHI8Z2No
YXI+IGRhdGFiYXNlRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9kYXRhX2Rp
cigpLCAid3BlIiwgImRhdGFiYXNlcyIsIG51bGxwdHIpKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6
RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihkYXRhYmFzZURp
cmVjdG9yeS5nZXQoKSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oZGF0YWJhc2VEaXJlY3RvcnkuZ2V0KCkpOwogI2VuZGlmCiAgICAg
cmV0dXJuIGRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpOwogfQpAQCAtMTMwLDcgKzEz
MCw3IEBAIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRJbmRleGVk
REJEYXRhYmFzZURpcmVjdG9yeSgpCiB7CiAjaWYgUExBVEZPUk0oV1BFKQogICAgIEdVbmlxdWVQ
dHI8Z2NoYXI+IGluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19n
ZXRfdXNlcl9kYXRhX2RpcigpLCAid3BlIiwgImRhdGFiYXNlcyIsICJpbmRleGVkZGIiLCBudWxs
cHRyKSk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkuZ2V0KCkpOworICAg
IHJldHVybiBGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGlu
ZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5LmdldCgpKTsKICNlbmRpZgogICAgIHJldHVybiBkZWZh
dWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKTsKIH0KQEAgLTEzOSw3ICsxMzksNyBAQCBX
VEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0TG9jYWxTdG9yYWdlRGly
ZWN0b3J5KCkKIHsKICNpZiBQTEFURk9STShXUEUpCiAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gc3Rv
cmFnZURpcmVjdG9yeShnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfZGF0YV9kaXIoKSwgIndw
ZSIsICJsb2NhbHN0b3JhZ2UiLCBudWxscHRyKSk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVT
eXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oc3RvcmFnZURpcmVjdG9y
eS5nZXQoKSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oc3RvcmFnZURpcmVjdG9yeS5nZXQoKSk7CiAjZW5kaWYKICAgICByZXR1cm4g
ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpOwogfQpAQCAtMTQ4LDcgKzE0OCw3IEBAIFdU
Rjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRNZWRpYUNhY2hlRGlyZWN0
b3J5KCkKIHsKICNpZiBQTEFURk9STShXUEUpCiAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gY2FjaGVE
aXJlY3RvcnkoZ19idWlsZF9maWxlbmFtZShnX2dldF91c2VyX2NhY2hlX2RpcigpLCAid3BlIiwg
Im1lZGlhY2FjaGUiLCBudWxscHRyKSk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06
OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY2FjaGVEaXJlY3RvcnkuZ2V0KCkp
OworICAgIHJldHVybiBGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKGNhY2hlRGlyZWN0b3J5LmdldCgpKTsKICNlbmRpZgogICAgIHJldHVybiBkZWZhdWx0TWVk
aWFDYWNoZURpcmVjdG9yeSgpOwogfQpAQCAtMTU3LDcgKzE1Nyw3IEBAIFdURjo6U3RyaW5nIFdl
YnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkK
IHsKICNpZiBQTEFURk9STShXUEUpCiAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gbWVkaWFLZXlzU3Rv
cmFnZURpcmVjdG9yeShnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfZGF0YV9kaXIoKSwgIndw
ZSIsICJtZWRpYWtleXMiLCBudWxscHRyKSk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0
ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24obWVkaWFLZXlzU3RvcmFnZURp
cmVjdG9yeS5nZXQoKSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24obWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeS5nZXQoKSk7CiAjZW5k
aWYKICAgICByZXR1cm4gZGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKTsKIH0KQEAg
LTE2Niw3ICsxNjYsNyBAQCBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdERl
dmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpCiB7CiAjaWYgUExBVEZPUk0oV1BFKQog
ICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGRldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeShn
X2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfZGF0YV9kaXIoKSwgIndwZSIsICJkZXZpY2VpZGhh
c2hzYWx0cyIsIG51bGxwdHIpKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3Ry
aW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihkZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VE
aXJlY3RvcnkuZ2V0KCkpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKGRldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeS5nZXQo
KSk7CiAjZW5kaWYKICAgICByZXR1cm4gZGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURp
cmVjdG9yeSgpOwogfQpAQCAtMTc0LDcgKzE3NCw3IEBAIFN0cmluZyBXZWJzaXRlRGF0YVN0b3Jl
OjpsZWdhY3lEZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCkKIFdURjo6
U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJh
dGlvbkRpcmVjdG9yeSgpCiB7CiAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gamF2YVNjcmlwdENvcmVD
b25maWdEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFtZShnX2dldF91c2VyX2RhdGFfZGlyKCksIEJB
U0VfRElSRUNUT1JZLCAiSmF2YVNjcmlwdENvcmVEZWJ1ZyIsIG51bGxwdHIpKTsKLSAgICByZXR1
cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihqYXZhU2NyaXB0Q29yZUNvbmZpZ0RpcmVjdG9yeS5nZXQoKSk7CisgICAgcmV0dXJuIEZpbGVT
eXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oamF2YVNjcmlwdENvcmVD
b25maWdEaXJlY3RvcnkuZ2V0KCkpOwogfQogCiBSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbj4gV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNv
bkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRh
YmFzZS5jcHAKaW5kZXggNjc0YTVkYjA0M2M4YTYwZjM2MjBhYTdiYTAxOGMxZjk4NWVkZjhhOS4u
YjA0NjZlOTE0MDkwYmMwNTU5NjZlNmI5ZGYzMTllYTMwNGRiMjM1NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCkBAIC0yOSwxMSAr
MjksMTEgQEAKIAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0JpdG1h
cEltYWdlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9JbWFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlU3RhdGVtZW50Lmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9TUUxpdGVUcmFuc2FjdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2hh
cmVkQnVmZmVyLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYv
TWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUg
PHd0Zi9TdGRMaWJFeHRyYXMuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdEZhdmljb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwCmluZGV4IDliZTcyNTNmODVl
OTFkYTExYjk1ZWQyODA5ZWI0NGI1YTM3MTVhNWEuLmUwMTY0ODY4MTcxYTVkOGJlZThhM2UxODZh
YzY4MjVjNDkxZDk3MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdEZhdmljb25EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcApAQCAtMjMsMTIgKzIzLDEyIEBA
CiAjaW5jbHVkZSAiSWNvbkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiV2ViS2l0RmF2aWNvbkRhdGFi
YXNlUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzLmgiCi0jaW5jbHVkZSA8V2Vi
Q29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvSW50U2l6ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVmUHRyQ2Fpcm8uaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGli
Lmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5o
PgogI2luY2x1ZGUgPHd0Zi9TZXRGb3JTY29wZS5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQ
dHIuaD4KQEAgLTI3Myw3ICsyNzMsNyBAQCB2b2lkIHdlYmtpdEZhdmljb25EYXRhYmFzZU9wZW4o
V2ViS2l0RmF2aWNvbkRhdGFiYXNlKiBkYXRhYmFzZSwgY29uc3QgU3RyaW5nJiBwYQogICAgIHBy
aXYtPmljb25EYXRhYmFzZS0+c2V0RW5hYmxlZCh0cnVlKTsKICAgICBwcml2LT5pY29uRGF0YWJh
c2UtPnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoV2ViUHJlZmVyZW5jZXM6OmFueVBhZ2VzQXJl
VXNpbmdQcml2YXRlQnJvd3NpbmcoKSk7CiAKLSAgICBpZiAoIXByaXYtPmljb25EYXRhYmFzZS0+
b3BlbihXZWJDb3JlOjpGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKHBhdGgpLCBXZWJDb3JlOjpG
aWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUocGF0aCkpKSB7CisgICAgaWYgKCFwcml2LT5pY29u
RGF0YWJhc2UtPm9wZW4oRmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShwYXRoKSwgRmlsZVN5c3Rl
bTo6cGF0aEdldEZpbGVOYW1lKHBhdGgpKSkgewogICAgICAgICBwcml2LT5pY29uRGF0YWJhc2Ug
PSBudWxscHRyOwogICAgICAgICBJY29uRGF0YWJhc2U6OmFsbG93RGF0YWJhc2VDbGVhbnVwKCk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0RmlsZUNob29zZXJSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdEZpbGVDaG9vc2VyUmVxdWVzdC5jcHAKaW5kZXggMzdlNmNjYTBjZWJjZTkxNDcz
MGUzYzZkNDI1YzVmZWY3N2ZiNDg1Zi4uMDk5ODBhYWUwNjk5ZWJjZTlkMzNlOWM1YTY5N2EwMmRl
MDQ3MDNkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0RmlsZUNob29zZXJSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3QuY3BwCkBAIC0yNSw5ICsyNSw5IEBACiAj
aW5jbHVkZSAiQVBJU3RyaW5nLmgiCiAjaW5jbHVkZSAiV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0
UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuaCIK
LSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHRF
bmNvZGluZy5oPgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisjaW5jbHVkZSA8d3RmL0Zp
bGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1Jl
ZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKaW5kZXgg
MGYzOWUxMjVmM2RhNmM0ODM5NmE0MGM5Y2RmZThmNGM0MWQ5NjlhZS4uNjZkODNhNzE4OGU2Y2Rh
NzBlZjJiNDlmMjYzOTk3YWM0ZWY2OTUwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKQEAgLTMzMywyMCArMzMzLDIw
IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYkNvbnRleHRDb25zdHJ1Y3RlZChHT2JqZWN0KiBvYmpl
Y3QpCiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBidW5kbGVGaWxlbmFtZShnX2J1aWxkX2ZpbGVuYW1l
KGluamVjdGVkQnVuZGxlRGlyZWN0b3J5KCksIElOSkVDVEVEX0JVTkRMRV9GSUxFTkFNRSwgbnVs
bHB0cikpOwogCiAgICAgQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlv
bjsKLSAgICBjb25maWd1cmF0aW9uLnNldEluamVjdGVkQnVuZGxlUGF0aChXZWJDb3JlOjpGaWxl
U3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGJ1bmRsZUZpbGVuYW1l
LmdldCgpKSk7CisgICAgY29uZmlndXJhdGlvbi5zZXRJbmplY3RlZEJ1bmRsZVBhdGgoRmlsZVN5
c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihidW5kbGVGaWxlbmFtZS5n
ZXQoKSkpOwogICAgIGNvbmZpZ3VyYXRpb24uc2V0TWF4aW11bVByb2Nlc3NDb3VudCgxKTsKICAg
ICBjb25maWd1cmF0aW9uLnNldERpc2tDYWNoZVNwZWN1bGF0aXZlVmFsaWRhdGlvbkVuYWJsZWQo
dHJ1ZSk7CiAKICAgICBXZWJLaXRXZWJDb250ZXh0KiB3ZWJDb250ZXh0ID0gV0VCS0lUX1dFQl9D
T05URVhUKG9iamVjdCk7CiAgICAgV2ViS2l0V2ViQ29udGV4dFByaXZhdGUqIHByaXYgPSB3ZWJD
b250ZXh0LT5wcml2OwogICAgIGlmIChwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIgJiYgIXdlYmtp
dF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9pc19lcGhlbWVyYWwocHJpdi0+d2Vic2l0ZURhdGFNYW5h
Z2VyLmdldCgpKSkgewotICAgICAgICBjb25maWd1cmF0aW9uLnNldExvY2FsU3RvcmFnZURpcmVj
dG9yeShXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfbG9jYWxfc3RvcmFnZV9kaXJlY3Rv
cnkocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSkpOwotICAgICAgICBjb25maWd1cmF0
aW9uLnNldERpc2tDYWNoZURpcmVjdG9yeShXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2Rpc2tfY2FjaGVf
ZGlyZWN0b3J5KHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpLCBuZXR3b3JrQ2FjaGVT
dWJkaXJlY3RvcnkpKTsKLSAgICAgICAgY29uZmlndXJhdGlvbi5zZXRBcHBsaWNhdGlvbkNhY2hl
RGlyZWN0b3J5KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24od2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9vZmZsaW5lX2FwcGxpY2F0
aW9uX2NhY2hlX2RpcmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSk7Ci0g
ICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRf
d2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2luZGV4ZWRkYl9kaXJlY3RvcnkocHJpdi0+d2Vic2l0
ZURhdGFNYW5hZ2VyLmdldCgpKSkpOwotICAgICAgICBjb25maWd1cmF0aW9uLnNldFdlYlNRTERh
dGFiYXNlRGlyZWN0b3J5KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24od2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF93ZWJzcWxfZGly
ZWN0b3J5KHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpKTsKKyAgICAgICAgY29uZmln
dXJhdGlvbi5zZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2xv
Y2FsX3N0b3JhZ2VfZGlyZWN0b3J5KHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpKTsK
KyAgICAgICAgY29uZmlndXJhdGlvbi5zZXREaXNrQ2FjaGVEaXJlY3RvcnkoRmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24od2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9kaXNrX2NhY2hl
X2RpcmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSwgbmV0d29ya0NhY2hl
U3ViZGlyZWN0b3J5KSk7CisgICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0QXBwbGljYXRpb25DYWNo
ZURpcmVjdG9yeShGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfb2ZmbGluZV9hcHBsaWNhdGlvbl9jYWNo
ZV9kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSkpOworICAgICAgICBj
b25maWd1cmF0aW9uLnNldEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KEZpbGVTeXN0ZW06OnN0
cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0X3dlYnNpdGVfZGF0YV9tYW5h
Z2VyX2dldF9pbmRleGVkZGJfZGlyZWN0b3J5KHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQo
KSkpKTsKKyAgICAgICAgY29uZmlndXJhdGlvbi5zZXRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeShG
aWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHdlYmtpdF93ZWJz
aXRlX2RhdGFfbWFuYWdlcl9nZXRfd2Vic3FsX2RpcmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1h
bmFnZXIuZ2V0KCkpKSk7CiAgICAgfSBlbHNlIGlmICghcHJpdi0+bG9jYWxTdG9yYWdlRGlyZWN0
b3J5LmlzTnVsbCgpKQotICAgICAgICBjb25maWd1cmF0aW9uLnNldExvY2FsU3RvcmFnZURpcmVj
dG9yeShXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKHByaXYtPmxvY2FsU3RvcmFnZURpcmVjdG9yeS5kYXRhKCkpKTsKKyAgICAgICAgY29uZmln
dXJhdGlvbi5zZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkuZGF0YSgp
KSk7CiAKICAgICBwcml2LT5wcm9jZXNzUG9vbCA9IFdlYlByb2Nlc3NQb29sOjpjcmVhdGUoY29u
ZmlndXJhdGlvbik7CiAKQEAgLTkyNCw3ICs5MjQsNyBAQCB2b2lkIHdlYmtpdF93ZWJfY29udGV4
dF9zZXRfZmF2aWNvbl9kYXRhYmFzZV9kaXJlY3RvcnkoV2ViS2l0V2ViQ29udGV4dCogY29udGV4
dAogICAgIFdlYktpdFdlYkNvbnRleHRQcml2YXRlKiBwcml2ID0gY29udGV4dC0+cHJpdjsKICAg
ICBlbnN1cmVGYXZpY29uRGF0YWJhc2UoY29udGV4dCk7CiAKLSAgICBTdHJpbmcgZGlyZWN0b3J5
UGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24ocGF0aCk7CisgICAgU3RyaW5nIGRpcmVjdG9yeVBhdGggPSBGaWxlU3lzdGVtOjpzdHJp
bmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwogICAgIC8vIFVzZSBkZWZhdWx0
IGlmIG51bGxwdHIgaXMgcGFzc2VkIGFzIHBhcmFtZXRlci4KICAgICBpZiAoZGlyZWN0b3J5UGF0
aC5pc0VtcHR5KCkpIHsKICNpZiBQTEFURk9STShHVEspCkBAIC05MzMsNyArOTMzLDcgQEAgdm9p
ZCB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2Zhdmljb25fZGF0YWJhc2VfZGlyZWN0b3J5KFdlYktp
dFdlYkNvbnRleHQqIGNvbnRleHQKICAgICAgICAgY29uc3QgY2hhciogcG9ydERpcmVjdG9yeSA9
ICJ3cGUiOwogI2VuZGlmCiAgICAgICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGRhdGFiYXNlRGlyZWN0
b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9jYWNoZV9kaXIoKSwgcG9ydERpcmVjdG9y
eSwgImljb25kYXRhYmFzZSIsIG51bGxwdHIpKTsKLSAgICAgICAgZGlyZWN0b3J5UGF0aCA9IFdl
YkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGF0
YWJhc2VEaXJlY3RvcnkuZ2V0KCkpOworICAgICAgICBkaXJlY3RvcnlQYXRoID0gRmlsZVN5c3Rl
bTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihkYXRhYmFzZURpcmVjdG9yeS5n
ZXQoKSk7CiAgICAgfQogICAgIHByaXYtPmZhdmljb25EYXRhYmFzZURpcmVjdG9yeSA9IGRpcmVj
dG9yeVBhdGgudXRmOCgpOwogCkBAIC05NDIsNyArOTQyLDcgQEAgdm9pZCB3ZWJraXRfd2ViX2Nv
bnRleHRfc2V0X2Zhdmljb25fZGF0YWJhc2VfZGlyZWN0b3J5KFdlYktpdFdlYkNvbnRleHQqIGNv
bnRleHQKICAgICAgICAgIldlYnBhZ2VJY29ucy5kYiIsIG51bGxwdHIpKTsKIAogICAgIC8vIFNl
dHRpbmcgdGhlIHBhdGggd2lsbCBjYXVzZSB0aGUgaWNvbiBkYXRhYmFzZSB0byBiZSBvcGVuZWQu
Ci0gICAgd2Via2l0RmF2aWNvbkRhdGFiYXNlT3Blbihwcml2LT5mYXZpY29uRGF0YWJhc2UuZ2V0
KCksIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oZmF2aWNvbkRhdGFiYXNlUGF0aC5nZXQoKSkpOworICAgIHdlYmtpdEZhdmljb25EYXRhYmFz
ZU9wZW4ocHJpdi0+ZmF2aWNvbkRhdGFiYXNlLmdldCgpLCBGaWxlU3lzdGVtOjpzdHJpbmdGcm9t
RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZhdmljb25EYXRhYmFzZVBhdGguZ2V0KCkpKTsKIAog
ICAgIGlmICh3ZWJraXRfd2ViX2NvbnRleHRfaXNfZXBoZW1lcmFsKGNvbnRleHQpKQogICAgICAg
ICB3ZWJraXRGYXZpY29uRGF0YWJhc2VTZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKHByaXYtPmZh
dmljb25EYXRhYmFzZS5nZXQoKSwgdHJ1ZSk7CkBAIC0xMDI2LDcgKzEwMjYsNyBAQCB2b2lkIHdl
YmtpdF93ZWJfY29udGV4dF9zZXRfYWRkaXRpb25hbF9wbHVnaW5zX2RpcmVjdG9yeShXZWJLaXRX
ZWJDb250ZXh0KiBjb250ZQogICAgIGdfcmV0dXJuX2lmX2ZhaWwoZGlyZWN0b3J5KTsKIAogI2lm
IEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQotICAgIGNvbnRleHQtPnByaXYtPnByb2Nlc3NQ
b29sLT5zZXRBZGRpdGlvbmFsUGx1Z2luc0RpcmVjdG9yeShXZWJDb3JlOjpGaWxlU3lzdGVtOjpz
dHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRpcmVjdG9yeSkpOworICAgIGNvbnRl
eHQtPnByaXYtPnByb2Nlc3NQb29sLT5zZXRBZGRpdGlvbmFsUGx1Z2luc0RpcmVjdG9yeShGaWxl
U3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRpcmVjdG9yeSkpOwog
I2VuZGlmCiB9CiAKQEAgLTE0MTgsNyArMTQxOCw3IEBAIHZvaWQgd2Via2l0X3dlYl9jb250ZXh0
X3NldF9kaXNrX2NhY2hlX2RpcmVjdG9yeShXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCBjb25z
CiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX0NPTlRFWFQoY29udGV4dCkpOwog
ICAgIGdfcmV0dXJuX2lmX2ZhaWwoZGlyZWN0b3J5KTsKIAotICAgIGNvbnRleHQtPnByaXYtPnBy
b2Nlc3NQb29sLT5jb25maWd1cmF0aW9uKCkuc2V0RGlza0NhY2hlRGlyZWN0b3J5KFdlYkNvcmU6
OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVt
OjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRpcmVjdG9yeSksIG5ldHdvcmtD
YWNoZVN1YmRpcmVjdG9yeSkpOworICAgIGNvbnRleHQtPnByaXYtPnByb2Nlc3NQb29sLT5jb25m
aWd1cmF0aW9uKCkuc2V0RGlza0NhY2hlRGlyZWN0b3J5KEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKGRpcmVjdG9yeSksIG5ldHdvcmtDYWNoZVN1YmRpcmVjdG9yeSkpOwogfQogI2VuZGlmCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNp
dGVEYXRhTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRXZWJzaXRlRGF0YU1hbmFnZXIuY3BwCmluZGV4IDdlMWQxNGI2N2I5NTM4ZjQ3NWUwZjhhZjQ1
MGFhYmRlZjJlMjE1NWUuLjFjYzA2NTQxMWU3MzFmYTY3MmM0MzRmM2IzYzBhYmU5YTU2OTNlYmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNp
dGVEYXRhTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmNwcApAQCAtMjYsOCArMjYsOCBAQAogI2luY2x1ZGUg
IldlYktpdFdlYnNpdGVEYXRhTWFuYWdlclByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJz
aXRlRGF0YVByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YUZldGNoT3B0aW9uLmgiCi0j
aW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIu
aD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlx
dWVQdHIuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9XVEZHVHlwZS5oPgogCkBAIC0zNjMsMTMgKzM2
MywxMyBAQCBBUEk6OldlYnNpdGVEYXRhU3RvcmUmIHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckdl
dERhdGFTdG9yZShXZWJLaXRXZWJzaXRlRGF0YU1hbgogICAgIGlmICghcHJpdi0+d2Vic2l0ZURh
dGFTdG9yZSkgewogICAgICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBXZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7CiAgICAgICAgIGNvbmZpZ3VyYXRpb24tPnNldExvY2Fs
U3RvcmFnZURpcmVjdG9yeSghcHJpdi0+bG9jYWxTdG9yYWdlRGlyZWN0b3J5ID8KLSAgICAgICAg
ICAgIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgp
IDogV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihwcml2LT5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkuZ2V0KCkpKTsKKyAgICAgICAgICAgIEFQSTo6
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpIDogRmlsZVN5
c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5sb2NhbFN0b3Jh
Z2VEaXJlY3RvcnkuZ2V0KCkpKTsKICAgICAgICAgY29uZmlndXJhdGlvbi0+c2V0TmV0d29ya0Nh
Y2hlRGlyZWN0b3J5KCFwcml2LT5kaXNrQ2FjaGVEaXJlY3RvcnkgPwotICAgICAgICAgICAgQVBJ
OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkgOiBXZWJD
b3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5
c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5kaXNrQ2FjaGVE
aXJlY3RvcnkuZ2V0KCkpLCBuZXR3b3JrQ2FjaGVTdWJkaXJlY3RvcnkpKTsKKyAgICAgICAgICAg
IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpIDog
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0cmluZ0Zy
b21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+ZGlza0NhY2hlRGlyZWN0b3J5LmdldCgp
KSwgbmV0d29ya0NhY2hlU3ViZGlyZWN0b3J5KSk7CiAgICAgICAgIGNvbmZpZ3VyYXRpb24tPnNl
dEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoIXByaXYtPmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rv
cnkgPwotICAgICAgICAgICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRp
b25DYWNoZURpcmVjdG9yeSgpIDogV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5LmdldCgp
KSk7CisgICAgICAgICAgICBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlv
bkNhY2hlRGlyZWN0b3J5KCkgOiBGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKHByaXYtPmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkuZ2V0KCkpKTsKICAgICAg
ICAgY29uZmlndXJhdGlvbi0+c2V0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoIXByaXYtPndlYlNR
TERpcmVjdG9yeSA/Ci0gICAgICAgICAgICBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRX
ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpIDogV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJv
bUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT53ZWJTUUxEaXJlY3RvcnkuZ2V0KCkpKTsK
KyAgICAgICAgICAgIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNl
RGlyZWN0b3J5KCkgOiBGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKHByaXYtPndlYlNRTERpcmVjdG9yeS5nZXQoKSkpOwogICAgICAgICBjb25maWd1cmF0aW9u
LT5zZXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSk7CiAgICAgICAgIHByaXYtPndlYnNpdGVE
YXRhU3RvcmUgPSBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZUxlZ2FjeShXVEZNb3ZlKGNv
bmZpZ3VyYXRpb24pKTsKICAgICB9CkBAIC01MzIsNyArNTMyLDcgQEAgY29uc3QgZ2NoYXIqIHdl
YmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfZGlza19jYWNoZV9kaXJlY3RvcnkoV2ViS2l0
V2Vic2l0ZUQKIAogICAgIGlmICghcHJpdi0+ZGlza0NhY2hlRGlyZWN0b3J5KSB7CiAgICAgICAg
IC8vIFRoZSBkZWZhdWx0IGRpcmVjdG9yeSBhbHJlYWR5IGhhcyB0aGUgc3ViZGlyZWN0b3J5Lgot
ICAgICAgICBwcml2LT5kaXNrQ2FjaGVEaXJlY3RvcnkucmVzZXQoZ19zdHJkdXAoV2ViQ29yZTo6
RmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRO
ZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKSkudXRmOCgpLmRhdGEoKSkpOworICAgICAgICBwcml2LT5k
aXNrQ2FjaGVEaXJlY3RvcnkucmVzZXQoZ19zdHJkdXAoRmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFt
ZShBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKSku
dXRmOCgpLmRhdGEoKSkpOwogICAgIH0KICAgICByZXR1cm4gcHJpdi0+ZGlza0NhY2hlRGlyZWN0
b3J5LmdldCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dp
bi9BUElXZWJzaXRlRGF0YVN0b3JlV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS93aW4vQVBJV2Vic2l0ZURhdGFTdG9yZVdpbi5jcHAKaW5kZXggMTliZTI4OGQ0ODJkYWFmZGQx
OGU0Y2ZkZmVkY2UyMDNhYWM3NWJkZC4uMzIyNWI5MjE3MGQ3Yzk4YjRiZTg0NWFjY2ZlOGQ4YzFi
MzY3ZDdiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dpbi9BUElX
ZWJzaXRlRGF0YVN0b3JlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
d2luL0FQSVdlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCkBAIC0yNiw0MyArMjYsNDMgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCiAKLSNpbmNs
dWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgog
CiBuYW1lc3BhY2UgQVBJIHsKIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBs
aWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmxvY2FsVXNl
clNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiQXBwbGljYXRpb25DYWNoZSIpOworICAgIHJl
dHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9j
YWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJBcHBsaWNhdGlvbkNhY2hlIik7CiB9
CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5
KCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVj
dG9yeSgpLCAiQ2FjaGVTdG9yYWdlIik7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJl
Y3RvcnkoKSwgIkNhY2hlU3RvcmFnZSIpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjps
b2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIk5ldHdvcmtDYWNoZSIpOworICAg
IHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6
bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJOZXR3b3JrQ2FjaGUiKTsKIH0K
IAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVj
dG9yeSgpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VE
aXJlY3RvcnkoKSwgIkluZGV4ZWREQiIpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGly
ZWN0b3J5KCksICJJbmRleGVkREIiKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4g
V2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZp
bGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiU2VydmljZVdv
cmtlcnMiKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiU2Vydmlj
ZVdvcmtlcnMiKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRMb2NhbFN0
b3JhZ2VEaXJlY3RvcnkoKQogewotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lm
aWNTdG9yYWdlRGlyZWN0b3J5KCksICJMb2NhbFN0b3JhZ2UiKTsKKyAgICByZXR1cm4gRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNp
ZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiTG9jYWxTdG9yYWdlIik7CiB9CiAKIFN0cmluZyBXZWJz
aXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpCiB7Ci0gICAg
cmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJD
b3JlOjpGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIk1l
ZGlhS2V5U3RvcmFnZSIpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCks
ICJNZWRpYUtleVN0b3JhZ2UiKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKQpAQCAtNzMsNTcgKzczLDU3IEBA
IFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdl
RGlyZWN0b3J5KCkKIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxEYXRh
YmFzZURpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZp
Y1N0b3JhZ2VEaXJlY3RvcnkoKSwgIldlYlNRTCIpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9y
YWdlRGlyZWN0b3J5KCksICJXZWJTUUwiKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4g
V2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZp
bGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiUmVzb3VyY2VM
b2FkU3RhdGlzdGljcyIpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCks
ICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIik7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3Jl
OjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIGRp
cmVjdG9yeU5hbWUpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0
b3JhZ2VEaXJlY3RvcnkoKSwgZGlyZWN0b3J5TmFtZSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0
b3JhZ2VEaXJlY3RvcnkoKSwgZGlyZWN0b3J5TmFtZSk7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0
YVN0b3JlOjp3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25z
dCBTdHJpbmcmIGRpcmVjdG9yeU5hbWUpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpsb2NhbFVz
ZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgZGlyZWN0b3J5TmFtZSk7CisgICAgcmV0dXJu
IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVz
ZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgZGlyZWN0b3J5TmFtZSk7CiB9CiAKIFN0cmlu
ZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9y
eSgpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJl
Y3RvcnkoKSwgIkFwcGxpY2F0aW9uQ2FjaGUiKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFn
ZURpcmVjdG9yeSgpLCAiQXBwbGljYXRpb25DYWNoZSIpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURh
dGFTdG9yZTo6bGVnYWN5RGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpCiB7Ci0gICAgcmV0
dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIk5ldHdv
cmtDYWNoZSIpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJOZXR3
b3JrQ2FjaGUiKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRX
ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpsb2NhbFVz
ZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIldlYlNRTCIpOworICAgIHJldHVybiBGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3Bl
Y2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJXZWJTUUwiKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVE
YXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpCiB7Ci0g
ICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChX
ZWJDb3JlOjpGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwg
IkluZGV4ZWREQiIpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJJ
bmRleGVkREIiKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRM
b2NhbFN0b3JhZ2VEaXJlY3RvcnkoKQogewotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6bG9jYWxVc2Vy
U3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJMb2NhbFN0b3JhZ2UiKTsKKyAgICByZXR1cm4g
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNl
clNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiTG9jYWxTdG9yYWdlIik7CiB9CiAKIFN0cmlu
ZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpCiB7
Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChXZWJDb3JlOjpGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3Rvcnko
KSwgIk1lZGlhQ2FjaGUiKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgp
LCAiTWVkaWFDYWNoZSIpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVm
YXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKQogewotICAgIHJldHVybiBXZWJDb3JlOjpG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6
bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJNZWRpYUtleVN0b3JhZ2UiKTsK
KyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0
ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiTWVkaWFLZXlTdG9yYWdl
Iik7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0RGV2aWNlSWRI
YXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCkKQEAgLTEzNCw3ICsxMzQsNyBAQCBTdHJpbmcgV2Vi
c2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVj
dG9yeSgpCiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0SmF2YVNjcmlw
dENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKQogewotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6bG9jYWxV
c2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJKYXZhU2NyaXB0Q29yZURlYnVnIik7Cisg
ICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVt
Ojpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkphdmFTY3JpcHRDb3JlRGVi
dWciKTsKIH0KIAogUmVmPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+IFdl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Np
b24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9u
U2Vzc2lvbi5jcHAKaW5kZXggODA1NDdlNmJlMTM4NjU1ZjA3OThiNjc2ZGMxMmRjOWFiMzNhY2Yx
Yi4uZjg4NDRhZmU2ZDIyZTRjZDVlZTIwODE0OGI0ZjQ5MmY3Y2M2MzEwZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9u
U2Vzc2lvbi5jcHAKQEAgLTgwNiw3ICs4MDYsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9u
Ojp3aWxsQ2xvc2VQYWdlKGNvbnN0IFdlYlBhZ2VQcm94eSYgcGFnZSkKIAogc3RhdGljIGJvb2wg
ZmlsZUNhbkJlQWNjZXB0ZWRGb3JVcGxvYWQoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3Qg
SGFzaFNldDxTdHJpbmc+JiBhbGxvd2VkTUlNRVR5cGVzLCBjb25zdCBIYXNoU2V0PFN0cmluZz4m
IGFsbG93ZWRGaWxlRXh0ZW5zaW9ucykKIHsKLSAgICBpZiAoIVdlYkNvcmU6OkZpbGVTeXN0ZW06
OmZpbGVFeGlzdHMoZmlsZW5hbWUpKQorICAgIGlmICghRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhm
aWxlbmFtZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChhbGxvd2VkTUlNRVR5
cGVzLmlzRW1wdHkoKSAmJiBhbGxvd2VkRmlsZUV4dGVuc2lvbnMuaXNFbXB0eSgpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbQppbmRleCAzYjQ5
NjI4ZmRmNmRmYzVhYWRkMDI5ZDVhMmNiY2I2YmZiNzhjZmMxLi5jNzI3YmQyM2VmOTU1MjUxZjc5
ODA5ZDY5YzU4MjMyMTk3YWYxZWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9Eb3dubG9hZENsaWVudC5tbQpAQCAtNDIsMTAgKzQyLDEwIEBACiAjaW1wb3J0ICJXZWJQ
cm9jZXNzUHJveHkuaCIKICNpbXBvcnQgIl9XS0Rvd25sb2FkRGVsZWdhdGUuaCIKICNpbXBvcnQg
Il9XS0Rvd25sb2FkSW50ZXJuYWwuaCIKLSNpbXBvcnQgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgog
I2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291
cmNlUmVzcG9uc2UuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgorI2ltcG9ydCA8d3RmL0Zp
bGVTeXN0ZW0uaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTE4MSw3ICsxODEsNyBAQCB2
b2lkIERvd25sb2FkQ2xpZW50OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFt
ZShXZWJQcm9jZXNzUG9vbCYsIERvdwogewogI2lmIFVTRShTWVNURU1fUFJFVklFVykKICAgICBp
ZiAoZG93bmxvYWRQcm94eS5pc1N5c3RlbVByZXZpZXdEb3dubG9hZCgpKSB7Ci0gICAgICAgIE5T
U3RyaW5nICp0ZW1wb3JhcnlEaXJlY3RvcnkgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpjcmVhdGVU
ZW1wb3JhcnlEaXJlY3RvcnkoQCJTeXN0ZW1QcmV2aWV3cyIpOworICAgICAgICBOU1N0cmluZyAq
dGVtcG9yYXJ5RGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5
KEAiU3lzdGVtUHJldmlld3MiKTsKICAgICAgICAgTlNTdHJpbmcgKmRlc3RpbmF0aW9uID0gW3Rl
bXBvcmFyeURpcmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6ZmlsZW5hbWVd
OwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihBbGxvd092ZXJ3cml0ZTo6WWVzLCBkZXN0aW5h
dGlvbik7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCmluZGV4IDU2Y2YwZmQwNTkwYzYxNTQzZDM0
MTBmODRmNjZkMTljN2VkODUxYmYuLjJkYWY3NTU3MWNjYjFhOWQ3MDViYWEwNTdhZDYyNGE1YTY5
OGE0MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nl
c3NQb29sQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJv
Y2Vzc1Bvb2xDb2NvYS5tbQpAQCAtNDMsNyArNDMsNiBAQAogI2ltcG9ydCAiV2ViUHJvY2Vzc01l
c3NhZ2VzLmgiCiAjaW1wb3J0ICJXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uLmgiCiAjaW1wb3J0IDxX
ZWJDb3JlL0NvbG9yLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQg
PFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vdElt
cGxlbWVudGVkLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtUGFzdGVib2FyZC5oPgpAQCAt
NTIsNiArNTEsNyBAQAogI2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4KICNpbXBv
cnQgPHBhbC9zcGkvY29jb2EvTlNLZXllZEFyY2hpdmVyU1BJLmg+CiAjaW1wb3J0IDxzeXMvcGFy
YW0uaD4KKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDx3dGYvUHJvY2Vzc1By
aXZpbGVnZS5oPgogI2ltcG9ydCA8d3RmL2NvY29hL0VudGl0bGVtZW50cy5oPgogI2ltcG9ydCA8
d3RmL3NwaS9kYXJ3aW4vZHlsZFNQSS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJWaWV3SW1wbC5tbQppbmRleCAwNjRlMGRmZDkwZmY2YmI5ZGRjM2FiNDQyZWM4Y2RhNjlh
YTJkOTZkLi4xNjA5NWE4YmQxNTY0ODg0OWM2YWViMTMxMTY1ZTYzNzRmZTBlOGJlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAtODQsNyArODQs
NiBAQAogI2ltcG9ydCA8V2ViQ29yZS9EcmFnRGF0YS5oPgogI2ltcG9ydCA8V2ViQ29yZS9EcmFn
SXRlbS5oPgogI2ltcG9ydCA8V2ViQ29yZS9FZGl0b3IuaD4KLSNpbXBvcnQgPFdlYkNvcmUvRmls
ZVN5c3RlbS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Gb250QXR0cmlidXRlQ2hhbmdlcy5oPgogI2lt
cG9ydCA8V2ViQ29yZS9Gb250QXR0cmlidXRlcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9LZXlwcmVz
c0NvbW1hbmQuaD4KQEAgLTExNSw2ICsxMTQsNyBAQAogI2ltcG9ydCA8cGFsL3NwaS9tYWMvTlNW
aWV3U1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL21hYy9OU1dpbmRvd1NQSS5oPgogI2ltcG9ydCA8
c3lzL3N0YXQuaD4KKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KICNpbXBvcnQgPHd0Zi9Qcm9jZXNzUHJpdmlsZWdlLmg+CiAjaW1wb3J0
IDx3dGYvU2V0Rm9yU2NvcGUuaD4KQEAgLTM5NjksNyArMzk2OSw3IEBAIGJvb2wgV2ViVmlld0lt
cGw6OnBlcmZvcm1EcmFnT3BlcmF0aW9uKGlkIDxOU0RyYWdnaW5nSW5mbz4gZHJhZ2dpbmdJbmZv
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKLSAgICAgICAgTlNTdHJp
bmcgKmRyb3BEZXN0aW5hdGlvblBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpjcmVhdGVUZW1w
b3JhcnlEaXJlY3RvcnkoQCJXZWJLaXREcm9wRGVzdGluYXRpb24iKTsKKyAgICAgICAgTlNTdHJp
bmcgKmRyb3BEZXN0aW5hdGlvblBhdGggPSBGaWxlU3lzdGVtOjpjcmVhdGVUZW1wb3JhcnlEaXJl
Y3RvcnkoQCJXZWJLaXREcm9wRGVzdGluYXRpb24iKTsKICAgICAgICAgaWYgKCFkcm9wRGVzdGlu
YXRpb25QYXRoKSB7CiAgICAgICAgICAgICBkZWxldGUgZHJhZ0RhdGE7CiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC00MjkxLDcgKzQyOTEsNyBAQCBOU0FycmF5ICpXZWJWaWV3SW1wbDo6
bmFtZXNPZlByb21pc2VkRmlsZXNEcm9wcGVkQXREZXN0aW5hdGlvbihOU1VSTCAqZHJvcERlc3Rp
bgogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgaW1hZ2UgZmlsZSB2aWEgLVtO
U0ZpbGVXcmFwcGVyIHdyaXRlVG9VUkw6b3B0aW9uczpvcmlnaW5hbENvbnRlbnRzVVJMOmVycm9y
Ol0iKTsKIAogICAgIGlmICghbV9wcm9taXNlZFVSTC5pc0VtcHR5KCkpCi0gICAgICAgIFdlYkNv
cmU6OkZpbGVTeXN0ZW06OnNldE1ldGFkYXRhVVJMKFN0cmluZyhwYXRoKSwgbV9wcm9taXNlZFVS
TCk7CisgICAgICAgIEZpbGVTeXN0ZW06OnNldE1ldGFkYXRhVVJMKFN0cmluZyhwYXRoKSwgbV9w
cm9taXNlZFVSTCk7CiAgICAgCiAgICAgcmV0dXJuIFtOU0FycmF5IGFycmF5V2l0aE9iamVjdDpb
cGF0aCBsYXN0UGF0aENvbXBvbmVudF1dOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3BwCmluZGV4IGU2MGVlM2Y0Zjk0YjAzMmQz
OTliN2EzNzdhN2U4ZjljY2EyMzc1MWQuLjE5YTdhMTJjZmEzZjMxYmYxZTIxMzdjMzVjZDU3ZDBh
NTA3YjlhOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RldmljZUlkSGFz
aFNhbHRTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EZXZpY2VJZEhh
c2hTYWx0U3RvcmFnZS5jcHAKQEAgLTI4LDkgKzI4LDkgQEAKIAogI2luY2x1ZGUgIlBlcnNpc3Rl
bmN5VXRpbHMuaCIKIAotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL0NyeXB0b2dyYXBoaWNhbGx5
UmFuZG9tTnVtYmVyLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3
dGYvSGV4TnVtYmVyLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdCdWlsZGVyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9E
b3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHAKaW5kZXggNzUxMDJlZTNiMDA0MjRhNDgwOTQxNWYz
NmIwNGVkM2I1M2NhZDE0OC4uZTA5MjU0YjAxODcyNDljOTkyZmMyZmNkNzI4ODhlNzg0YjE5MzM5
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZFByb3h5LmNwcApAQCAtMzYsOCArMzYsOCBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdl
cy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCiAjaW5jbHVkZSAiV2ViUHJvdGVjdGlv
blNwYWNlLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9NSU1FVHlwZVJlZ2lzdHJ5Lmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIv
QnViYmxld3JhcExhdW5jaGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVy
L2dsaWIvQnViYmxld3JhcExhdW5jaGVyLmNwcAppbmRleCBlNDM0ZTAzMzM5ODdhOTI3NDljMDBk
ZGM1YjUzMzYwOTA0ZGVmMWJlLi4xNjcyM2RmZGRhNGZhZGJiOTJhYTdlYTBhOGU2YWU1ODg0ZjJk
MDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9nbGliL0J1
YmJsZXdyYXBMYXVuY2hlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNo
ZXIvZ2xpYi9CdWJibGV3cmFwTGF1bmNoZXIuY3BwCkBAIC0yMCwxMiArMjAsMTIgQEAKIAogI2lm
IEVOQUJMRShCVUJCTEVXUkFQX1NBTkRCT1gpCiAKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0
ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtRGlzcGxheS5oPgogI2luY2x1ZGUgPGZj
bnRsLmg+CiAjaW5jbHVkZSA8Z2xpYi5oPgogI2luY2x1ZGUgPHNlY2NvbXAuaD4KICNpbmNsdWRl
IDxzeXMvaW9jdGwuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0
Zi9nbGliL0dMaWJVdGlsaXRpZXMuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9Qcm9jZXNzTGF1bmNoZXJHTGliLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvUHJvY2Vzc0xhdW5jaGVyR0xpYi5jcHAK
aW5kZXggYzU2NjE4NzNhMDVlNzEwOWI1MTdlYTc1YmRmYWJjY2Q4ZjIzZmI4Ni4uMGMzOTA3M2Zl
MWRlN2FkYWY1MzEyNjgzZDgxNjQ2MmY2NGQzZWM2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9Qcm9jZXNzTGF1bmNoZXJHTGliLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9nbGliL1Byb2Nlc3NMYXVuY2hlckdMaWIu
Y3BwCkBAIC0zMSwxMCArMzEsMTAgQEAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVk
ZSAiRmxhdHBha0xhdW5jaGVyLmgiCiAjaW5jbHVkZSAiUHJvY2Vzc0V4ZWN1dGFibGVQYXRoLmgi
Ci0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8ZXJybm8uaD4KICNp
bmNsdWRlIDxmY250bC5oPgogI2luY2x1ZGUgPGdsaWIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5
c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3RmL1VuaVN0ZEV4
dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dMaWJVdGlsaXRpZXMuaD4KQEAgLTQ3LDcgKzQ3
LDYgQEAKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKLXVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCiBzdGF0aWMgdm9pZCBjaGlsZFNldHVwRnVuY3Rpb24oZ3BvaW50ZXIgdXNlckRhdGEp
CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL2d0ay9QbHVn
aW5JbmZvQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9ndGsvUGx1
Z2luSW5mb0NhY2hlLmNwcAppbmRleCA4MDY0N2ViMTJlZTUyNTExYTExOWU4NWZkZTJmNTljNGUy
Mzc3ODg1Li5hMjhhMDBhMzg2Y2FmZWNiMzc4MmE0MTEwMzdjYTlhNTM1ZGMyMjAzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL2d0ay9QbHVnaW5JbmZvQ2FjaGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1BsdWdpbkluZm9D
YWNoZS5jcHAKQEAgLTI5LDggKzI5LDggQEAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQ
SSkKIAogI2luY2x1ZGUgIk5ldHNjYXBlUGx1Z2luTW9kdWxlLmgiCi0jaW5jbHVkZSA8V2ViQ29y
ZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybURpc3BsYXkuaD4KKyNp
bmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
IAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC02NiwxMCArNjYsMTAgQEAgUGx1Z2luSW5mb0NhY2hl
OjpQbHVnaW5JbmZvQ2FjaGUoKQogICAgIG1fc2F2ZVRvRmlsZUlkbGUuc2V0UHJpb3JpdHkoR19Q
UklPUklUWV9ERUZBVUxUX0lETEUpOwogCiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBjYWNoZURpcmVj
dG9yeShnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfY2FjaGVfZGlyKCksICJ3ZWJraXRndGsi
LCBudWxscHRyKSk7Ci0gICAgaWYgKFdlYkNvcmU6OkZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3Rv
cmllcyhjYWNoZURpcmVjdG9yeS5nZXQoKSkpIHsKKyAgICBpZiAoRmlsZVN5c3RlbTo6bWFrZUFs
bERpcmVjdG9yaWVzKGNhY2hlRGlyZWN0b3J5LmdldCgpKSkgewogICAgICAgICAvLyBEZWxldGUg
b2xkIGNhY2hlIGZpbGUuCiAgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gb2xkQ2FjaGVQYXRoKGdf
YnVpbGRfZmlsZW5hbWUoY2FjaGVEaXJlY3RvcnkuZ2V0KCksICJwbHVnaW5zIiwgbnVsbHB0cikp
OwotICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVGaWxlKFdlYkNvcmU6OkZpbGVT
eXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ob2xkQ2FjaGVQYXRoLmdl
dCgpKSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoRmlsZVN5c3RlbTo6c3RyaW5n
RnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihvbGRDYWNoZVBhdGguZ2V0KCkpKTsKIAogICAg
ICAgICBtX2NhY2hlUGF0aC5yZXNldChnX2J1aWxkX2ZpbGVuYW1lKGNhY2hlRGlyZWN0b3J5Lmdl
dCgpLCBjYWNoZUZpbGVuYW1lRm9yQ3VycmVudERpc3BsYXkoKSwgbnVsbHB0cikpOwogICAgICAg
ICBnX2tleV9maWxlX2xvYWRfZnJvbV9maWxlKG1fY2FjaGVGaWxlLmdldCgpLCBtX2NhY2hlUGF0
aC5nZXQoKSwgR19LRVlfRklMRV9OT05FLCBudWxscHRyKTsKQEAgLTExMiw3ICsxMTIsNyBAQCBi
b29sIFBsdWdpbkluZm9DYWNoZTo6Z2V0UGx1Z2luSW5mbyhjb25zdCBTdHJpbmcmIHBsdWdpblBh
dGgsIFBsdWdpbk1vZHVsZUluZm8mCiAgICAgaWYgKCFnX2tleV9maWxlX2hhc19ncm91cChtX2Nh
Y2hlRmlsZS5nZXQoKSwgcGx1Z2luR3JvdXAuZGF0YSgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgYXV0byBsYXN0TW9kaWZpZWRUaW1lID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6Z2V0
RmlsZU1vZGlmaWNhdGlvblRpbWUocGx1Z2luUGF0aCk7CisgICAgYXV0byBsYXN0TW9kaWZpZWRU
aW1lID0gRmlsZVN5c3RlbTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUocGx1Z2luUGF0aCk7CiAg
ICAgaWYgKCFsYXN0TW9kaWZpZWRUaW1lKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgdGlt
ZV90IGNhY2hlZExhc3RNb2RpZmllZCA9IHN0YXRpY19jYXN0PHRpbWVfdD4oZ19rZXlfZmlsZV9n
ZXRfdWludDY0KG1fY2FjaGVGaWxlLmdldCgpLCBwbHVnaW5Hcm91cC5kYXRhKCksICJtdGltZSIs
IG51bGxwdHIpKTsKQEAgLTEyMCw3ICsxMjAsNyBAQCBib29sIFBsdWdpbkluZm9DYWNoZTo6Z2V0
UGx1Z2luSW5mbyhjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIFBsdWdpbk1vZHVsZUluZm8mCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHBsdWdpbi5wYXRoID0gcGx1Z2luUGF0aDsKLSAg
ICBwbHVnaW4uaW5mby5maWxlID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1l
KHBsdWdpblBhdGgpOworICAgIHBsdWdpbi5pbmZvLmZpbGUgPSBGaWxlU3lzdGVtOjpwYXRoR2V0
RmlsZU5hbWUocGx1Z2luUGF0aCk7CiAKICAgICBHVW5pcXVlUHRyPGNoYXI+IHN0cmluZ1ZhbHVl
KGdfa2V5X2ZpbGVfZ2V0X3N0cmluZyhtX2NhY2hlRmlsZS5nZXQoKSwgcGx1Z2luR3JvdXAuZGF0
YSgpLCAibmFtZSIsIG51bGxwdHIpKTsKICAgICBwbHVnaW4uaW5mby5uYW1lID0gU3RyaW5nOjpm
cm9tVVRGOChzdHJpbmdWYWx1ZS5nZXQoKSk7CkBAIC0xNDAsNyArMTQwLDcgQEAgYm9vbCBQbHVn
aW5JbmZvQ2FjaGU6OmdldFBsdWdpbkluZm8oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBQbHVn
aW5Nb2R1bGVJbmZvJgogCiB2b2lkIFBsdWdpbkluZm9DYWNoZTo6dXBkYXRlUGx1Z2luSW5mbyhj
b25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbikK
IHsKLSAgICBhdXRvIGxhc3RNb2RpZmllZFRpbWUgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpnZXRG
aWxlTW9kaWZpY2F0aW9uVGltZShwbHVnaW5QYXRoKTsKKyAgICBhdXRvIGxhc3RNb2RpZmllZFRp
bWUgPSBGaWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShwbHVnaW5QYXRoKTsKICAg
ICBpZiAoIWxhc3RNb2RpZmllZFRpbWUpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2luUHJvY2Vzc1Byb3h5TWFj
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2luUHJvY2Vzc1By
b3h5TWFjLm1tCmluZGV4IDg5ZmFiNWVjYjY2NmQyYjQ0ZmNjMjIzOWViZTViYTVlZTFhYzYzZDgu
LjM2MzNjMmFiMDcwNjAxMWViZDdiYzEzZjFhMGJmZGE1YWQ2ZGQ5YmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvbWFjL1BsdWdpblByb2Nlc3NQcm94eU1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5Qcm9jZXNz
UHJveHlNYWMubW0KQEAgLTMzLDExICszMywxMSBAQAogI2ltcG9ydCAiUGx1Z2luUHJvY2Vzc01l
c3NhZ2VzLmgiCiAjaW1wb3J0ICJTYW5kYm94VXRpbGl0aWVzLmgiCiAjaW1wb3J0IDxRdWFydHpD
b3JlL0NBUmVtb3RlTGF5ZXJTZXJ2ZXIuaD4KLSNpbXBvcnQgPFdlYkNvcmUvRmlsZVN5c3RlbS5o
PgogI2ltcG9ydCA8Y3J0X2V4dGVybnMuaD4KICNpbXBvcnQgPG1hY2gtby9keWxkLmg+CiAjaW1w
b3J0IDxwYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oPgogI2ltcG9ydCA8c3Bhd24uaD4KKyNpbXBv
cnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgog
I2ltcG9ydCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtNTcs
OCArNTcsNiBAQCAtIChCT09MKV93YW50c1VzZXJBdHRlbnRpb24KIEBlbmQKIAogbmFtZXNwYWNl
IFdlYktpdCB7Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQogICAgIAogdm9pZCBQbHVnaW5Q
cm9jZXNzUHJveHk6OnBsYXRmb3JtR2V0TGF1bmNoT3B0aW9uc1dpdGhBdHRyaWJ1dGVzKFByb2Nl
c3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9ucyYgbGF1bmNoT3B0aW9ucywgY29uc3QgUGx1Z2luUHJv
Y2Vzc0F0dHJpYnV0ZXMmIHBsdWdpblByb2Nlc3NBdHRyaWJ1dGVzKQogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpbkluZm9TdG9yZVVuaXgu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpbkluZm9TdG9y
ZVVuaXguY3BwCmluZGV4IDFkZmQ4MDdjMTIzOWMzMDc5ZWY5MjQwNzQ1MGI4OWVjOTExOWNmMGMu
LmFhMDk0NzM2ODE2NTRhOWVmNjQ0MDZiMmM2NDM5MDNmN2UwMTI2M2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5JbmZvU3RvcmVVbml4LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luSW5mb1N0
b3JlVW5peC5jcHAKQEAgLTM0LDEwICszNCwxMCBAQAogI2luY2x1ZGUgIk5ldHNjYXBlUGx1Z2lu
TW9kdWxlLmgiCiAjaW5jbHVkZSAiUGx1Z2luU2VhcmNoUGF0aC5oIgogI2luY2x1ZGUgIlByb2Nl
c3NFeGVjdXRhYmxlUGF0aC5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1EaXNwbGF5Lmg+CiAjaW5jbHVkZSA8bGltaXRzLmg+CiAj
aW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogI2lmIFBM
QVRGT1JNKEdUSykKICNpbmNsdWRlICJQbHVnaW5JbmZvQ2FjaGUuaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJveHlVbml4
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNz
UHJveHlVbml4LmNwcAppbmRleCBmODk2MTIxNzBkMDExMTYwNDMyZWVlZWEzZDliODhhMzUzOGI3
MTIyLi5jNTAwYzBmY2VhNjI3ODg2YmFkZGRjM2ZjOTUwYzZjNGVhMzhiYzBiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5
VW5peC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdp
blByb2Nlc3NQcm94eVVuaXguY3BwCkBAIC0zMiw5ICszMiw5IEBACiAKICNpbmNsdWRlICJQbHVn
aW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiUHJvY2Vzc0V4ZWN1dGFi
bGVQYXRoLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9QbGF0Zm9ybURpc3BsYXkuaD4KICNpbmNsdWRlIDxzeXMvd2FpdC5oPgorI2luY2x1ZGUg
PHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuY3BwCmluZGV4IDcyNjg4M2IzY2Y4MGY0
OGYyZGJmYTU2M2ZjOWJmN2M1NWQ1NzAwNmYuLjViY2RhNjNhODZiMGUxZjhlOTY0NjE5NDMwOTky
NmNiYTUxZjJkMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VX
b3JrZXJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZp
Y2VXb3JrZXJQcm9jZXNzUHJveHkuY3BwCkBAIC02NCw3ICs2NCw3IEBAIFNlcnZpY2VXb3JrZXJQ
cm9jZXNzUHJveHk6On5TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KCkKIGJvb2wgU2VydmljZVdv
cmtlclByb2Nlc3NQcm94eTo6aGFzUmVnaXN0ZXJlZFNlcnZpY2VXb3JrZXJzKGNvbnN0IFN0cmlu
ZyYgc2VydmljZVdvcmtlckRpcmVjdG9yeSkKIHsKICAgICBTdHJpbmcgcmVnaXN0cmF0aW9uRmls
ZSA9IFdlYkNvcmU6OnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhYmFzZUZpbGVuYW1lKHNl
cnZpY2VXb3JrZXJEaXJlY3RvcnkpOwotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpm
aWxlRXhpc3RzKHJlZ2lzdHJhdGlvbkZpbGUpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpmaWxl
RXhpc3RzKHJlZ2lzdHJhdGlvbkZpbGUpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJQcm9jZXNz
UHJveHk6OmdldExhdW5jaE9wdGlvbnMoUHJvY2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zJiBs
YXVuY2hPcHRpb25zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViU3Rv
cmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcAppbmRleCAwYzI1ZDY1N2U5Nzc2YTc0
NzRkMjA1NWZkZjU0ODcyYTAwZDhlZGRiLi40NmZiNmM3NzI5NGYzYzYzMWQ0ZmZmZGZjMjRhMTQ4
ZjcwOGE0NGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJTdG9yYWdl
L0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcApAQCAtMjcsMTIgKzI3LDEyIEBACiAj
aW5jbHVkZSAiTG9jYWxTdG9yYWdlRGF0YWJhc2UuaCIKIAogI2luY2x1ZGUgIkxvY2FsU3RvcmFn
ZURhdGFiYXNlVHJhY2tlci5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU1FMaXRlU3RhdGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TUUxp
dGVUcmFuc2FjdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1N0b3JhZ2VNYXAuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1N1ZGRlblRl
cm1pbmF0aW9uLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0hhc2guaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlN0
b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNwcAppbmRleCBh
ZmZkN2U4YWNhZTJkZWNiNWM4NDRlODczYjU2ZjdkMTUzZDBhYzk2Li5jMzc4MWRmNjc2OTAwYzY5
NGJlMTRiZmU2YWUzNjQ5YmMxODg5MGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNr
ZXIuY3BwCkBAIC0yNywxMCArMjcsMTAgQEAKICNpbmNsdWRlICJMb2NhbFN0b3JhZ2VEYXRhYmFz
ZVRyYWNrZXIuaCIKIAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0Zp
bGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZUZpbGVTeXN0ZW0uaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1NRTGl0ZVN0YXRlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dEVu
Y29kaW5nLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTWFp
blRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3RmL1dvcmtR
dWV1ZS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCmluZGV4IDQyN2E5Yzg1
YTNiOTg0NWFlNGY3NTRmYjRjN2EzOTI2M2M4YzE3YzkuLjYxOTAwNTAwMDU4ZDVhOGUwNzQ4Y2Iz
NjJjMWY3NmI0NDU0ZTJiMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0K
QEAgLTMwLDEwICszMCwxMCBAQAogI2ltcG9ydCAiU3RvcmFnZU1hbmFnZXIuaCIKICNpbXBvcnQg
IldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgogI2ltcG9ydCAiV2Vic2l0ZURhdGFT
dG9yZVBhcmFtZXRlcnMuaCIKLSNpbXBvcnQgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KICNpbXBvcnQgPFdlYkNvcmUv
U2VhcmNoUG9wdXBNZW51Q29jb2EuaD4KICNpbXBvcnQgPHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJ
Lmg+CisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CiAjaW1wb3J0IDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgogCkBAIC0xMjEsNyArMTIx
LDcgQEAgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgV2Vic2l0ZURhdGFTdG9yZTo6cGFyYW1l
dGVycygpCiAgICAgcGFyYW1ldGVycy5wZW5kaW5nQ29va2llcyA9IGNvcHlUb1ZlY3RvcihtX3Bl
bmRpbmdDb29raWVzKTsKIAogICAgIGlmICghY29va2llRmlsZS5pc0VtcHR5KCkpCi0gICAgICAg
IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShXZWJD
b3JlOjpGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKGNvb2tpZUZpbGUpLCBwYXJhbWV0ZXJzLmNv
b2tpZVN0b3JhZ2VQYXRoRXh0ZW5zaW9uSGFuZGxlKTsKKyAgICAgICAgU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KEZpbGVTeXN0ZW06OmRpcmVjdG9y
eU5hbWUoY29va2llRmlsZSksIHBhcmFtZXRlcnMuY29va2llU3RvcmFnZVBhdGhFeHRlbnNpb25I
YW5kbGUpOwogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAgICAgcGFyYW1ldGVycy5p
bmRleGVkRGF0YWJhc2VEaXJlY3RvcnkgPSByZXNvbHZlZEluZGV4ZWREYXRhYmFzZURpcmVjdG9y
eSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCBiMThmY2U3OTA2ZjhlMmJiOGM1YmQyNDY0NDYwNjA4
ZTRjY2ZlYWRkLi4yYTU5MGM0YmQ1ZTE5ODdlNTVhZTYxNDg2ZGFjOGFjZjMxNzM2NjJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmNwcApAQCAtNDQsNyArNDQsNiBAQAogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3Rv
cmVQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGF0YWJhc2VUcmFja2VyLmg+Ci0jaW5jbHVkZSA8V2Vi
Q29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MTWVkaWFFbGVtZW50Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9PcmlnaW5Mb2NrLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1
cml0eU9yaWdpbi5oPgpAQCAtNTIsNiArNTEsNyBAQAogI2luY2x1ZGUgPHd0Zi9DYWxsYmFja0Fn
Z3JlZ2F0b3IuaD4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRl
IDx3dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgog
I2luY2x1ZGUgPHd0Zi9Qcm9jZXNzUHJpdmlsZWdlLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3Au
aD4KIApAQCAtMTkzLDggKzE5Myw4IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVzb2x2ZURp
cmVjdG9yaWVzSWZOZWNlc3NhcnkoKQogCiAgICAgLy8gUmVzb2x2ZSBkaXJlY3RvcmllcyBmb3Ig
ZmlsZSBwYXRocy4KICAgICBpZiAoIW1fY29uZmlndXJhdGlvbi0+Y29va2llU3RvcmFnZUZpbGUo
KS5pc0VtcHR5KCkpIHsKLSAgICAgICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPnNldENvb2tp
ZVN0b3JhZ2VGaWxlKHJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94
RXh0ZW5zaW9uKFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUobV9jb25maWd1cmF0
aW9uLT5jb29raWVTdG9yYWdlRmlsZSgpKSkpOwotICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJh
dGlvbi0+c2V0Q29va2llU3RvcmFnZUZpbGUoV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5jb29raWVTdG9yYWdlRmls
ZSgpLCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUobV9jb25maWd1cmF0aW9u
LT5jb29raWVTdG9yYWdlRmlsZSgpKSkpOworICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlv
bi0+c2V0Q29va2llU3RvcmFnZUZpbGUocmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9y
eUZvclNhbmRib3hFeHRlbnNpb24oRmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShtX2NvbmZpZ3Vy
YXRpb24tPmNvb2tpZVN0b3JhZ2VGaWxlKCkpKSk7CisgICAgICAgIG1fcmVzb2x2ZWRDb25maWd1
cmF0aW9uLT5zZXRDb29raWVTdG9yYWdlRmlsZShGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQobV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPmNvb2tpZVN0b3JhZ2VGaWxlKCksIEZp
bGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShtX2NvbmZpZ3VyYXRpb24tPmNvb2tpZVN0b3JhZ2VG
aWxlKCkpKSk7CiAgICAgfQogfQogCkBAIC0yMjY1LDcgKzIyNjUsNyBAQCBWZWN0b3I8UGx1Z2lu
TW9kdWxlSW5mbz4gV2Vic2l0ZURhdGFTdG9yZTo6cGx1Z2lucygpIGNvbnN0CiAKIHN0YXRpYyBT
dHJpbmcgY29tcHV0ZU1lZGlhS2V5RmlsZShjb25zdCBTdHJpbmcmIG1lZGlhS2V5RGlyZWN0b3J5
KQogewotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQobWVkaWFLZXlEaXJlY3RvcnksICJTZWN1cmVTdG9wLnBsaXN0Iik7CisgICAgcmV0dXJu
IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtZWRpYUtleURpcmVjdG9yeSwg
IlNlY3VyZVN0b3AucGxpc3QiKTsKIH0KIAogVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YT4gV2Vic2l0ZURhdGFTdG9yZTo6bWVkaWFLZXlPcmlnaW5zKGNvbnN0IFN0cmluZyYgbWVk
aWFLZXlzU3RvcmFnZURpcmVjdG9yeSkKQEAgLTIyNzQsMTIgKzIyNzQsMTIgQEAgVmVjdG9yPFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gV2Vic2l0ZURhdGFTdG9yZTo6bWVkaWFLZXlPcmln
aW5zKGNvbnN0IFN0cmkKIAogICAgIFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+
IG9yaWdpbnM7CiAKLSAgICBmb3IgKGNvbnN0IGF1dG8mIG9yaWdpblBhdGggOiBXZWJDb3JlOjpG
aWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnksICIqIikp
IHsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIG9yaWdpblBhdGggOiBGaWxlU3lzdGVtOjpsaXN0RGly
ZWN0b3J5KG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnksICIqIikpIHsKICAgICAgICAgYXV0byBt
ZWRpYUtleUZpbGUgPSBjb21wdXRlTWVkaWFLZXlGaWxlKG9yaWdpblBhdGgpOwotICAgICAgICBp
ZiAoIVdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobWVkaWFLZXlGaWxlKSkKKyAgICAg
ICAgaWYgKCFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG1lZGlhS2V5RmlsZSkpCiAgICAgICAgICAg
ICBjb250aW51ZTsKIAotICAgICAgICBhdXRvIG1lZGlhS2V5SWRlbnRpZmllciA9IFdlYkNvcmU6
OkZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShvcmlnaW5QYXRoKTsKKyAgICAgICAgYXV0byBt
ZWRpYUtleUlkZW50aWZpZXIgPSBGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUob3JpZ2luUGF0
aCk7CiAKICAgICAgICAgaWYgKGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZpZXIobWVkaWFLZXlJZGVudGlmaWVyKSkK
ICAgICAgICAgICAgIG9yaWdpbnMuYXBwZW5kKCpzZWN1cml0eU9yaWdpbik7CkBAIC0yMjkyLDE4
ICsyMjkyLDE4IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVtb3ZlTWVkaWFLZXlzKGNvbnN0
IFN0cmluZyYgbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSwKIHsKICAgICBBU1NFUlQoIW1lZGlh
S2V5c1N0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKTsKIAotICAgIGZvciAoY29uc3QgYXV0byYg
bWVkaWFLZXlEaXJlY3RvcnkgOiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KG1l
ZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnksICIqIikpIHsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIG1l
ZGlhS2V5RGlyZWN0b3J5IDogRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShtZWRpYUtleXNTdG9y
YWdlRGlyZWN0b3J5LCAiKiIpKSB7CiAgICAgICAgIGF1dG8gbWVkaWFLZXlGaWxlID0gY29tcHV0
ZU1lZGlhS2V5RmlsZShtZWRpYUtleURpcmVjdG9yeSk7CiAKLSAgICAgICAgYXV0byBtb2RpZmlj
YXRpb25UaW1lID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUo
bWVkaWFLZXlGaWxlKTsKKyAgICAgICAgYXV0byBtb2RpZmljYXRpb25UaW1lID0gRmlsZVN5c3Rl
bTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUobWVkaWFLZXlGaWxlKTsKICAgICAgICAgaWYgKCFt
b2RpZmljYXRpb25UaW1lKQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgaWYgKG1v
ZGlmaWNhdGlvblRpbWUudmFsdWUoKSA8IG1vZGlmaWVkU2luY2UpCiAgICAgICAgICAgICBjb250
aW51ZTsKIAotICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1lZGlhS2V5
RmlsZSk7Ci0gICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5
KG1lZGlhS2V5RGlyZWN0b3J5KTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtZWRp
YUtleUZpbGUpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShtZWRp
YUtleURpcmVjdG9yeSk7CiAgICAgfQogfQogCkBAIC0yMzEyLDExICsyMzEyLDExIEBAIHZvaWQg
V2Vic2l0ZURhdGFTdG9yZTo6cmVtb3ZlTWVkaWFLZXlzKGNvbnN0IFN0cmluZyYgbWVkaWFLZXlz
U3RvcmFnZURpcmVjdG9yeSwKICAgICBBU1NFUlQoIW1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnku
aXNFbXB0eSgpKTsKIAogICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2luIDogb3JpZ2lucykgewot
ICAgICAgICBhdXRvIG1lZGlhS2V5RGlyZWN0b3J5ID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnksIG9yaWdpbi5k
YXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgICAgIGF1dG8gbWVkaWFLZXlEaXJlY3RvcnkgPSBG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobWVkaWFLZXlzU3RvcmFnZURpcmVj
dG9yeSwgb3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKICAgICAgICAgYXV0byBtZWRpYUtl
eUZpbGUgPSBjb21wdXRlTWVkaWFLZXlGaWxlKG1lZGlhS2V5RGlyZWN0b3J5KTsKIAotICAgICAg
ICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1lZGlhS2V5RmlsZSk7Ci0gICAgICAg
IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KG1lZGlhS2V5RGlyZWN0
b3J5KTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtZWRpYUtleUZpbGUpOworICAg
ICAgICBGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShtZWRpYUtleURpcmVjdG9yeSk7
CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dl
YlByb2Nlc3NQcm94eUdMaWIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJQ
cm9jZXNzUHJveHlHTGliLmNwcAppbmRleCA4ZjVmYTAzZmY0NjUzMmY2YjU4MjU3OWU5OWIwMTdi
MDY1NDBhZWE1Li4xNjllYTIwMTI1YjAzMDYzN2ZhZmMwNzQ3Y2E4Njk4NTg1NDk1YjliIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQcm94eUdMaWIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Byb3h5R0xp
Yi5jcHAKQEAgLTMxLDggKzMxLDggQEAKICNlbmRpZgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29s
LmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRmls
ZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1EaXNwbGF5Lmg+CisjaW5jbHVk
ZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJJ
bnNwZWN0b3JQcm94eUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViSW5z
cGVjdG9yUHJveHlHdGsuY3BwCmluZGV4IGNhMTg3YTY0MjM0MTEyZTg1NzliZDg2MTYyZDliODNm
YjQyOWM4M2EuLjE2YjAyYTQzNTc2ZTU2ZjFhZTIyNjNhMGRmNGYwNjczMjM0ZGJlMDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYkluc3BlY3RvclByb3h5R3Rr
LmNwcApAQCAtNDIsOSArNDIsOSBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCiAjaW5j
bHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DZXJ0aWZpY2F0ZUlu
Zm8uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0d0a1V0aWxpdGllcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKyNp
bmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NQb29sR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2d0ay9XZWJQcm9jZXNzUG9vbEd0ay5jcHAKaW5kZXggNjI0MDQxNWYxNTcyNzll
NGJmYzBjNTZhMmNkYThiNjIyNTkwNjlmNi4uNmIyMzU3NDA0ZTAzYWUzMDIxYWU4ODBiNjNhOGNl
YzBlZTg2ZjBmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlBy
b2Nlc3NQb29sR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViUHJv
Y2Vzc1Bvb2xHdGsuY3BwCkBAIC0zNCwxMCArMzQsMTAgQEAKICNpbmNsdWRlICJXZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUmVtb3RlSW5zcGVjdG9yU2VydmVyLmg+Ci0jaW5jbHVk
ZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HU3RyZWFtZXJDb21t
b24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9TY2hlbWVSZWdpc3RyeS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5j
bHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggZDNmOWYxMmVmYzY5NDNiYzBhNDE5ODViMmZhYTA3Nzll
ZjM0YjUzNS4uN2QxZGVjNTM0N2Q0ZWIzNmMwMjZkMzczNDlhOGZhN2NmZTdmZWM0NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLm1tCkBAIC01Njk4LDcgKzU2OTgsNyBAQCAtICh2b2lkKV9wcmVwYXJlVG9EcmFnUHJv
bWlzZWRBdHRhY2htZW50Oihjb25zdCBXZWJDb3JlOjpQcm9taXNlZEF0dGFjaG1lbnRJbmZvJgog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgTlNTdHJpbmcgKnRlbXBv
cmFyeUJsb2JEaXJlY3RvcnkgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpjcmVhdGVUZW1wb3JhcnlE
aXJlY3RvcnkoQCJibG9icyIpOworICAgICAgICBOU1N0cmluZyAqdGVtcG9yYXJ5QmxvYkRpcmVj
dG9yeSA9IEZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShAImJsb2JzIik7CiAg
ICAgICAgIE5TVVJMICpkZXN0aW5hdGlvblVSTCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6W3Rl
bXBvcmFyeUJsb2JEaXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OltOU1VV
SUQgVVVJRF0uVVVJRFN0cmluZ10gaXNEaXJlY3Rvcnk6Tk9dOwogCiAgICAgICAgIGF1dG8gYXR0
YWNobWVudCA9IHN0cm9uZ1NlbGYtPl9wYWdlLT5hdHRhY2htZW50Rm9ySWRlbnRpZmllcihpbmZv
LmF0dGFjaG1lbnRJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9mb3Jtcy9XS0ZpbGVVcGxvYWRQYW5lbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9mb3Jtcy9XS0ZpbGVVcGxvYWRQYW5lbC5tbQppbmRleCA2ODAxNjQ2ZDA4ZjlkMDlm
ZTNlNzM5ODM4NDU3MjliZTIxMWQ1YWE2Li44NzcxMTRmY2YyNjZlOTkyYWViZGQ5MDM2MDQwNmEx
ZDg5NzUxZGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMv
V0tGaWxlVXBsb2FkUGFuZWwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zv
cm1zL1dLRmlsZVVwbG9hZFBhbmVsLm1tCkBAIC02MjAsNyArNjIwLDcgQEAgLSAodm9pZClfdXBs
b2FkSXRlbUZvckltYWdlRGF0YTooTlNEYXRhICopaW1hZ2VEYXRhIGltYWdlTmFtZTooTlNTdHJp
bmcgKilpbWFnZU4KICAgICBOU1N0cmluZyAqIGNvbnN0IGtUZW1wb3JhcnlEaXJlY3RvcnlOYW1l
ID0gQCJXS1dlYkZpbGVVcGxvYWQiOwogCiAgICAgLy8gQnVpbGQgdGVtcG9yYXJ5IGZpbGUgcGF0
aC4KLSAgICBOU1N0cmluZyAqdGVtcG9yYXJ5RGlyZWN0b3J5ID0gV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KGtUZW1wb3JhcnlEaXJlY3RvcnlOYW1lKTsKKyAg
ICBOU1N0cmluZyAqdGVtcG9yYXJ5RGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9y
YXJ5RGlyZWN0b3J5KGtUZW1wb3JhcnlEaXJlY3RvcnlOYW1lKTsKICAgICBOU1N0cmluZyAqZmls
ZVBhdGggPSBbdGVtcG9yYXJ5RGlyZWN0b3J5IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVu
dDppbWFnZU5hbWVdOwogICAgIGlmICghZmlsZVBhdGgpIHsKICAgICAgICAgTE9HX0VSUk9SKCJX
S0ZpbGVVcGxvYWRQYW5lbDogRmFpbGVkIHRvIGNyZWF0ZSB0ZW1wb3JhcnkgZGlyZWN0b3J5IHRv
IHNhdmUgaW1hZ2UiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9X
ZWJQYWdlUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVBy
b3h5TWFjLm1tCmluZGV4IDYyYmU0MTBmMjNiMGUyYzMzMDMwYmIwOWMxZTYyZjFjOGIyMGUxYzAu
LjgzMDA0ZDcwYTgxNzc3MTYxODM4NGQ0ZDhmMjgxNWNmMjExYTc3NmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpAQCAtNDk1LDcgKzQ5NSw3
IEBAIHN0YXRpYyBOU1N0cmluZyAqcGF0aFRvUERGT25EaXNrKGNvbnN0IFN0cmluZyYgc3VnZ2Vz
dGVkRmlsZW5hbWUpCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzYXZlUERGVG9UZW1wb3JhcnlGb2xk
ZXJBbmRPcGVuV2l0aE5hdGl2ZUFwcGxpY2F0aW9uUmF3KGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVk
RmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgb3JpZ2luYXRpbmdVUkxTdHJpbmcsIGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHVuc2lnbmVkIGxvbmcgc2l6ZSwgY29uc3QgU3RyaW5nJiBwZGZVVUlEKQogewot
ICAgIC8vIEZJWE1FOiBXcml0ZSBvcmlnaW5hdGluZ1VSTFN0cmluZyB0byB0aGUgZmlsZSdzIG9y
aWdpbmF0aW5nIFVSTCBtZXRhZGF0YSAocGVyaGFwcyBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzZXRN
ZXRhZGF0YVVSTCgpPykuCisgICAgLy8gRklYTUU6IFdyaXRlIG9yaWdpbmF0aW5nVVJMU3RyaW5n
IHRvIHRoZSBmaWxlJ3Mgb3JpZ2luYXRpbmcgVVJMIG1ldGFkYXRhIChwZXJoYXBzIEZpbGVTeXN0
ZW06OnNldE1ldGFkYXRhVVJMKCk/KS4KICAgICBVTlVTRURfUEFSQU0ob3JpZ2luYXRpbmdVUkxT
dHJpbmcpOwogCiAgICAgaWYgKCFzdWdnZXN0ZWRGaWxlbmFtZS5lbmRzV2l0aElnbm9yaW5nQVND
SUlDYXNlKCIucGRmIikpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dp
bi9XZWJQcm9jZXNzUG9vbFdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2Vi
UHJvY2Vzc1Bvb2xXaW4uY3BwCmluZGV4IDEwMTVmZjA2MDZjZjRiYjRjZjU2MmEwNzg5Mjg4NzMz
NjU2ZjllZDYuLjM5MGEwYzkwMTkyMTk0MzNjNWZhNDlkM2UzODQ0YTFiODM1NTI4Y2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJQcm9jZXNzUG9vbFdpbi5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlByb2Nlc3NQb29sV2luLmNwcApA
QCAtMjgsOCArMjgsOCBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCiAKICNpbmNsdWRl
ICJXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxl
U3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorI2luY2x1ZGUg
PHd0Zi9GaWxlU3lzdGVtLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKaW5kZXggZWY3OTE5YzcyMGZlNzE3YjU5MDkxOWJiODVi
NDU4MTg1YmE1MGZiMS4uMGY5ZjlkNGVmZDUyODZjNjI2ODQzYWMzYTA0Y2QyZTZiZDk0OTllNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcApAQCAtNDQsNyArNDQsNiBA
QAogI2luY2x1ZGUgPFdlYkNvcmUvQml0bWFwSW5mby5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ3Vy
c29yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FZGl0b3IuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0Zp
bGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvSFduZERDLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+CkBAIC01NSw2ICs1
NCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dzVG91Y2guaD4KICNpbmNsdWRlIDxjYWly
by13aW4zMi5oPgogI2luY2x1ZGUgPGNhaXJvLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0u
aD4KICNpbmNsdWRlIDx3dGYvU29mdExpbmtpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93cGUvV2ViUHJvY2Vzc1Bvb2xXUEUuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd3BlL1dlYlByb2Nlc3NQb29sV1BFLmNwcAppbmRleCA2
MjU1YzQyN2I3YTFiYTVjZmVlZDBjYjM3ZGU1YzAyYzBiY2NlNWQxLi5mNTEwMTdhOGNhMjllZDA3
OTk0ZDdkMjA3Yzk1NzE0MTEyYTM4YmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy93cGUvV2ViUHJvY2Vzc1Bvb2xXUEUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL3dwZS9XZWJQcm9jZXNzUG9vbFdQRS5jcHAKQEAgLTM0LDEwICszNCwxMCBAQAogI2luY2x1
ZGUgIldlYkNvb2tpZU1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKLSNpbmNsdWRl
IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVk
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY2hlbWVSZWdpc3RyeS5oPgogI2luY2x1ZGUgPGNzdGRs
aWI+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogI2lmIEVOQUJMRShSRU1PVEVfSU5T
UEVDVE9SKQogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1JlbW90ZUluc3BlY3RvclNlcnZlci5o
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9nbGliL1dlYktpdEV4dGVuc2lvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdEV4dGVuc2lvbk1hbmFnZXIuY3BwCmlu
ZGV4IGFhYzI4MjgwY2E1MjBiZjgzOTY1Yjc5NGMzZTM0ZmVhZmM2MWVlNzUuLjRjY2VjNjJlZjBl
MTEzMWZhMTNmN2ZiMDYwYzgwZTA3ZWU0MjUxYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRFeHRlbnNpb25NYW5hZ2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2ds
aWIvV2ViS2l0RXh0ZW5zaW9uTWFuYWdlci5jcHAKQEAgLTIzLDggKzIzLDggQEAKICNpbmNsdWRl
ICJBUElTdHJpbmcuaCIKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZS5oIgogI2luY2x1ZGUgIldl
YktpdFdlYkV4dGVuc2lvblByaXZhdGUuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0u
aD4KICNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDEsOSAr
NDEsOSBAQCBXZWJLaXRFeHRlbnNpb25NYW5hZ2VyOjpXZWJLaXRFeHRlbnNpb25NYW5hZ2VyKCkK
IAogdm9pZCBXZWJLaXRFeHRlbnNpb25NYW5hZ2VyOjpzY2FuTW9kdWxlcyhjb25zdCBTdHJpbmcm
IHdlYkV4dGVuc2lvbnNEaXJlY3RvcnksIFZlY3RvcjxTdHJpbmc+JiBtb2R1bGVzKQogewotICAg
IFZlY3RvcjxTdHJpbmc+IG1vZHVsZVBhdGhzID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6bGlzdERp
cmVjdG9yeSh3ZWJFeHRlbnNpb25zRGlyZWN0b3J5LCBTdHJpbmcoIiouc28iKSk7CisgICAgVmVj
dG9yPFN0cmluZz4gbW9kdWxlUGF0aHMgPSBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KHdlYkV4
dGVuc2lvbnNEaXJlY3RvcnksIFN0cmluZygiKi5zbyIpKTsKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG1vZHVsZVBhdGhzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmIChXZWJDb3JlOjpG
aWxlU3lzdGVtOjpmaWxlRXhpc3RzKG1vZHVsZVBhdGhzW2ldKSkKKyAgICAgICAgaWYgKEZpbGVT
eXN0ZW06OmZpbGVFeGlzdHMobW9kdWxlUGF0aHNbaV0pKQogICAgICAgICAgICAgbW9kdWxlcy5h
cHBlbmQobW9kdWxlUGF0aHNbaV0pOwogICAgIH0KIH0KQEAgLTYzLDcgKzYzLDcgQEAgc3RhdGlj
IHZvaWQgcGFyc2VVc2VyRGF0YShBUEk6Ok9iamVjdCogdXNlckRhdGEsIFN0cmluZyYgd2ViRXh0
ZW5zaW9uc0RpcmVjdG9yeSwKICAgICBHVmFyaWFudCogZGF0YSA9IG51bGxwdHI7CiAgICAgZ192
YXJpYW50X2dldCh2YXJpYW50LmdldCgpLCAiKG0mc212KSIsICZkaXJlY3RvcnksICZkYXRhKTsK
IAotICAgIHdlYkV4dGVuc2lvbnNEaXJlY3RvcnkgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJp
bmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRpcmVjdG9yeSk7CisgICAgd2ViRXh0ZW5z
aW9uc0RpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oZGlyZWN0b3J5KTsKICAgICBpbml0aWFsaXphdGlvblVzZXJEYXRhID0gYWRvcHRHUmVm
KGRhdGEpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvZ2xpYi9JbmplY3RlZEJ1bmRsZUdsaWIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL2dsaWIvSW5qZWN0ZWRCdW5kbGVHbGliLmNwcAppbmRleCAw
YTg2MDY1MmYwMGRhZDkzMjhjZjM1NWQ0MDUxM2ZlODBmNWVmNjU4Li5lZDk2NThjYTFmNDZhNGM3
N2NjNzI2MDMzMGQxNjBhYWQyODgyNzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvZ2xpYi9JbmplY3RlZEJ1bmRsZUdsaWIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9nbGliL0luamVjdGVkQnVuZGxl
R2xpYi5jcHAKQEAgLTI5LDExICsyOSwxMCBAQAogCiAjaW5jbHVkZSAiV0tCdW5kbGVBUElDYXN0
LmgiCiAjaW5jbHVkZSAiV0tCdW5kbGVJbml0aWFsaXplLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9G
aWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewotdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKIGJvb2wgSW5qZWN0ZWRCdW5kbGU6OmluaXRpYWxpemUoY29uc3QgV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycyYsIEFQSTo6T2JqZWN0KiBpbml0aWFsaXphdGlvblVzZXJEYXRh
KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2Vi
TWVkaWFLZXlTdG9yYWdlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVk
aWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmNwcAppbmRleCA0YmY0OGQwZTk0ZWVm
NzYwNjZjYTMwZWE5Y2YzNTcwNGFiM2RlYWViLi5iZDM5ODI0MjZjNjZlNjM1YjZjNTYwNWNiZTVh
M2IwNTAyNWQzYTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFD
YWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmNwcApAQCAtMjcs
OSArMjcsOSBAQAogI2luY2x1ZGUgIldlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuaCIKIAogI2lu
Y2x1ZGUgIldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKLSNpbmNsdWRlIDxXZWJDb3Jl
L0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5
c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZVBsdWdpblN0cmVhbS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uaAppbmRleCBiYjZhNWIwOGM3Y2NlNWRkZWQ4OTkzNjBm
N2FiODM0MGYwMzk1ZTc0Li4zZWRjZWM2YTcyY2NjM2FhNjRkODE5ZmE5MzM3ZjQzZTYyZTdkNzZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9O
ZXRzY2FwZVBsdWdpblN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmgKQEAgLTI3LDkgKzI3LDkgQEAKIAog
I2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxl
U3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9ucHJ1bnRpbWVfaW50ZXJuYWwuaD4KICNpbmNs
dWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgpAQCAtODksNyArODksNyBAQCBwcml2YXRlOgogICAgIGludDMyX3QgbV9vZmZzZXQ7
CiAKICAgICBTdHJpbmcgbV9maWxlUGF0aDsKLSAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpQbGF0
Zm9ybUZpbGVIYW5kbGUgbV9maWxlSGFuZGxlOworICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmls
ZUhhbmRsZSBtX2ZpbGVIYW5kbGU7CiAgICAgCiAgICAgLy8gV2hldGhlciBOUFBfTmV3U3RyZWFt
IGhhcyBzdWNjZXNzZnVsbHkgYmVlbiBjYWxsZWQuCiAgICAgYm9vbCBtX2lzU3RhcnRlZDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3ND
b25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCAwMWM1M2YzZDg0M2RkMWQyNDMxNGY1Y2MwYzEyZTkw
OTY0ZWZiYmU0Li4yNmQ2ZDUwMGU2OWEwMTkzYjFkZjVmNDAzZjFmM2YxOGMyYzhlZDVlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0zNiwxMCArMzYsOSBAQAogI2luY2x1ZGUgIldlYlBy
b2Nlc3MuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVt
Lmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7Ci11
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OlBsdWdp
blByb2Nlc3NDb25uZWN0aW9uKFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlciogcGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLCB1aW50NjRfdCBwbHVnaW5Qcm9jZXNzVG9rZW4sIElQ
Qzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllciwgYm9vbCBzdXBw
b3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uKQogICAgIDogbV9wbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbk1hbmFnZXIocGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25T
dGF0ZUNvbnZlcnNpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwCmluZGV4IDYzYzM2YTNkYjY5YTgyYWQzYmVh
NjYwZjZiMDZkZmU3NjNjNTU2MTcuLjFkODE2NmEwN2UzZmQ5Nzg4MWNiN2Y0NGY0YTZiZWZmODVi
YmZlNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAKQEAgLTI4LDkgKzI4
LDkgQEAKIAogI2luY2x1ZGUgIlNlc3Npb25TdGF0ZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQmxv
YkRhdGEuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0Zvcm1EYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IaXN0b3J5SXRlbS5oPgorI2luY2x1
ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9ndGsvV2ViSW5zcGVjdG9yVUlHdGsuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvZ3RrL1dlYkluc3BlY3RvclVJR3RrLmNwcAppbmRleCA4OWMzYmExYWE4OTM5Y2ZhNTFm
NmZiMjIxYTczYjM4ZDc4MDMyN2EzLi5kYmIyYTkxODA0YmUxMzI2NDhjOWFkMzNlNmYwMjdiZGQz
ZjExMGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsv
V2ViSW5zcGVjdG9yVUlHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2d0ay9XZWJJbnNwZWN0b3JVSUd0ay5jcHAKQEAgLTI4LDggKzI4LDggQEAKICNpbmNsdWRl
ICJXZWJJbnNwZWN0b3JVSS5oIgogI2luY2x1ZGUgIlJlbW90ZVdlYkluc3BlY3RvclVJLmgiCiAK
LSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxnbGliLmg+CisjaW5j
bHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS93aW4vV2ViSW5zcGVjdG9yVUlXaW4uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2Uvd2luL1dlYkluc3BlY3RvclVJV2luLmNwcAppbmRleCA2YTdhZjNjNWQ2
NDljNTA0ZWVkYWQ0OWM5MWExZmI0NDM1ZTRhMThjLi40NzExMTRjYWZhMTRhN2QxZjMzZmZhMmMx
ZThhZmJiYmVkMmUwM2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS93aW4vV2ViSW5zcGVjdG9yVUlXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL3dpbi9XZWJJbnNwZWN0b3JVSVdpbi5jcHAKQEAgLTI4LDggKzI4LDggQEAK
IAogI2luY2x1ZGUgIlJlbW90ZVdlYkluc3BlY3RvclVJLmgiCiAKLSNpbmNsdWRlIDxXZWJDb3Jl
L0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1dlYkNvcmVCdW5kbGVXaW4uaD4KKyNp
bmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Y29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCmluZGV4IGE0NDY4MWM3NzI3MWMwNGE3OTZmMDdiYmNj
YWMzYmVjYzQ4MWY3NWEuLjM1ZDU3ZDVjZTY3YjY1ODc2MDc5M2RjYzdjNDA5MTY5Zjg1ODBhZjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2Nv
YS5tbQpAQCAtNTEsNyArNTEsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9BWE9iamVjdENhY2hlLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0NQVU1vbml0b3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvRGlzcGxh
eVJlZnJlc2hNb25pdG9yTWFuYWdlci5oPgotI2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0ZvbnRDYWNoZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Gb250Q2Fz
Y2FkZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9IaXN0b3J5Q29udHJvbGxlci5oPgpAQCAtNzIsNiAr
NzEsNyBAQAogI2ltcG9ydCA8cGFsL3NwaS9tYWMvTlNBY2Nlc3NpYmlsaXR5U1BJLmg+CiAjaW1w
b3J0IDxwYWwvc3BpL21hYy9OU0FwcGxpY2F0aW9uU1BJLmg+CiAjaW1wb3J0IDxzdGRpby5oPgor
I2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJh
cy5oPgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuY3BwIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9TdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHAKaW5kZXggNDAzOTk2MGIxNDBmY2I5YzYzYTc2
ZDZkMDc3MTNhM2EzMTgyYzVhNC4uMTdkNDg5NDk0ZDdlMDkwZDNmZjczNWVmZjI2NDQ1ZWZlYzZi
OTI5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VBcmVh
U3luYy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VBcmVhU3lu
Yy5jcHAKQEAgLTI4LDExICsyOCwxMSBAQAogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhSW1wbC5oIgog
I2luY2x1ZGUgIlN0b3JhZ2VTeW5jTWFuYWdlci5oIgogI2luY2x1ZGUgIlN0b3JhZ2VUcmFja2Vy
LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
UUxpdGVEYXRhYmFzZVRyYWNrZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZVN0YXRlbWVu
dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlVHJhbnNhY3Rpb24uaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1N1ZGRlblRlcm1pbmF0aW9uLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4K
ICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlU3luY01hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5j
cHAKaW5kZXggM2U4ZmY2NWVlNjBmMjc0ZGM5MDRlYjU4YzExNzRlZDVjYzFhNTc0Yy4uMzY5MDk1
Y2RhZDFkMzQ3MTFhMDY3NmQ4NzM2YTkwZTE5M2UyOTA1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5jcHAKQEAgLTI2LDcgKzI2LDcg
QEAKICNpbmNsdWRlICJTdG9yYWdlU3luY01hbmFnZXIuaCIKIAogI2luY2x1ZGUgIlN0b3JhZ2VU
aHJlYWQuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYv
RmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3Jh
Z2UvU3RvcmFnZVRyYWNrZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3Jh
Z2VUcmFja2VyLmNwcAppbmRleCA3MTAxNDBiMWIxMzNhMmViNTkzOTZkNzY3NDg2ZDIxODNlYzkw
NDg0Li5iOTM0ZDFhM2IxYmFhODMxYWRkZjNhYmU1ZTA3NzBhYjFjZjc3ZmEyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAKQEAgLTI4LDEzICsy
OCwxMyBAQAogI2luY2x1ZGUgIlN0b3JhZ2VUaHJlYWQuaCIKICNpbmNsdWRlICJTdG9yYWdlVHJh
Y2tlckNsaWVudC5oIgogI2luY2x1ZGUgIldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oIgot
I2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUdy
b3VwLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVEYXRhYmFzZVRyYWNrZXIuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1NRTGl0ZVN0YXRlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJp
dHlPcmlnaW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvVGV4dEVuY29kaW5nLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0u
aD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRy
YXMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9NaXNjL1dlYk5TRmlsZU1hbmFnZXJFeHRyYXMubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9NaXNjL1dlYk5TRmlsZU1hbmFnZXJFeHRyYXMubW0KaW5kZXggOTA1MTc0ZGE3
NTZkZDYyOGJlZGVmZDUwYzJiMjM3MjllNTMzNTAyYi4uYzU0MTNlODFjNmEzZWNiMmVjOTc4MWY2
YjhiZmQ2YzJiMmEwNWRmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlz
Yy9XZWJOU0ZpbGVNYW5hZ2VyRXh0cmFzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L01pc2MvV2ViTlNGaWxlTWFuYWdlckV4dHJhcy5tbQpAQCAtMzAsMTAgKzMwLDEwIEBACiAKICNp
bXBvcnQgIldlYktpdE5TU3RyaW5nRXh0cmFzLmgiCiAjaW1wb3J0ICJXZWJOU1VSTEV4dHJhcy5o
IgotI2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0xvYWRl
ck5TVVJMRXh0cmFzLmg+CiAjaW1wb3J0IDxzeXMvc3RhdC5oPgogI2ltcG9ydCA8d3RmL0Fzc2Vy
dGlvbnMuaD4KKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDx3dGYvT2JqQ1J1
bnRpbWVFeHRyYXMuaD4KIAogQGltcGxlbWVudGF0aW9uIE5TRmlsZU1hbmFnZXIgKFdlYk5TRmls
ZU1hbmFnZXJFeHRyYXMpCkBAIC00NCw3ICs0NCw3IEBAIC0gKHZvaWQpX3dlYmtpdF9zZXRNZXRh
ZGF0YVVSTDooTlNTdHJpbmcgKilVUkxTdHJpbmcgcmVmZXJyZXI6KE5TU3RyaW5nICopcmVmZXJy
CiB7CiAgICAgQVNTRVJUKFVSTFN0cmluZyk7CiAgICAgQVNTRVJUKHBhdGgpOwotICAgIFdlYkNv
cmU6OkZpbGVTeXN0ZW06OnNldE1ldGFkYXRhVVJMKHBhdGgsIFVSTFN0cmluZywgcmVmZXJyZXIp
OworICAgIEZpbGVTeXN0ZW06OnNldE1ldGFkYXRhVVJMKHBhdGgsIFVSTFN0cmluZywgcmVmZXJy
ZXIpOwogfQogCiAjZW5kaWYgLy8gIVBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC05Myw3ICs5Myw3
IEBAIC0gKE5TU3RyaW5nICopX3dlYmtpdF9wYXRoV2l0aFVuaXF1ZUZpbGVuYW1lRm9yUGF0aDoo
TlNTdHJpbmcgKilwYXRoCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0gKE5TU3RyaW5nICop
X3dlYmtpdF9jcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnlXaXRoVGVtcGxhdGVQcmVmaXg6KE5TU3Ry
aW5nICopcHJlZml4CiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmNyZWF0ZVRl
bXBvcmFyeURpcmVjdG9yeShwcmVmaXgpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpjcmVhdGVU
ZW1wb3JhcnlEaXJlY3RvcnkocHJlZml4KTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlUHJvdmlkZXIubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlUHJvdmlkZXIubW0KaW5kZXgg
NzQ5NWIxNzVmZmY0NWRjNWE1NGIwMTRmOGQ1YmYwM2U1NDM5NDNjYy4uYWRjNGMzOTg4NGM0Y2Iy
ZDJhM2JlYjZiMTk1YmNkYTAwMDg5YzE3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZVByb3ZpZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VQcm92aWRlci5tbQpAQCAtMjYsMTYgKzI2LDE2
IEBACiAjaW1wb3J0ICJXZWJEYXRhYmFzZVByb3ZpZGVyLmgiCiAjaW1wb3J0ICJXZWJEYXRhYmFz
ZU1hbmFnZXJQcml2YXRlLmgiCiAKLSNpbXBvcnQgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgorI2lt
cG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogU3RyaW5nIFdlYkRhdGFiYXNlUHJvdmlkZXI6Omlu
ZGV4ZWREYXRhYmFzZURpcmVjdG9yeVBhdGgoKQogewogICAgIE5TVXNlckRlZmF1bHRzICpkZWZh
dWx0cyA9IFtOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c107CiAgICAgTlNTdHJp
bmcgKmRhdGFiYXNlc0RpcmVjdG9yeSA9IFtkZWZhdWx0cyBvYmplY3RGb3JLZXk6V2ViRGF0YWJh
c2VEaXJlY3RvcnlEZWZhdWx0c0tleV07CiAgICAgaWYgKCFkYXRhYmFzZXNEaXJlY3RvcnkgfHwg
IVtkYXRhYmFzZXNEaXJlY3RvcnkgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkKLSAg
ICAgICAgZGF0YWJhc2VzRGlyZWN0b3J5ID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KCJ+L0xpYnJhcnkvV2ViS2l0L0RhdGFiYXNlcy9fX19JbmRleGVkREIi
X3MsIFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl0pOworICAgICAgICBk
YXRhYmFzZXNEaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
In4vTGlicmFyeS9XZWJLaXQvRGF0YWJhc2VzL19fX0luZGV4ZWREQiJfcywgW1tOU0J1bmRsZSBt
YWluQnVuZGxlXSBidW5kbGVJZGVudGlmaWVyXSk7CiAgICAgZWxzZQotICAgICAgICBkYXRhYmFz
ZXNEaXJlY3RvcnkgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoZGF0YWJhc2VzRGlyZWN0b3J5LCAiX19fSW5kZXhlZERCIl9zKTsKKyAgICAgICAgZGF0YWJh
c2VzRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFi
YXNlc0RpcmVjdG9yeSwgIl9fX0luZGV4ZWREQiJfcyk7CiAgICAgCiAgICAgcmV0dXJuIFtkYXRh
YmFzZXNEaXJlY3Rvcnkgc3RyaW5nQnlTdGFuZGFyZGl6aW5nUGF0aF07CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggZWQwZTBkZjc5YjAzZGE2NmU4
YTI5YmNlZDljZWFhOTNjZDY2NWU4Yy4uMDFjNjAwNWViMmEyYzBkMDY0ZjA2ZjhkYzQ0YzAzNTNm
NDc4ZmNlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJW
aWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpA
QCAtMTQ4LDcgKzE0OCw2IEBACiAjaW1wb3J0IDxXZWJDb3JlL0VkaXRvci5oPgogI2ltcG9ydCA8
V2ViQ29yZS9FdmVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9FdmVudEhhbmRsZXIuaD4KLSNpbXBv
cnQgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Gb2N1c0NvbnRyb2xs
ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRm9udEF0dHJpYnV0ZXMuaD4KICNpbXBvcnQgPFdlYkNv
cmUvRm9udENhY2hlLmg+CkBAIC0yMzEsNiArMjMwLDcgQEAKICNpbXBvcnQgPHBhbC9zcGkvbWFj
L05TU3BlbGxDaGVja2VyU1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL21hYy9OU1dpbmRvd1NQSS5o
PgogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+
CiAjaW1wb3J0IDx3dGYvSGFzaFRyYWl0cy5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4K
ICNpbXBvcnQgPHd0Zi9PYmpDUnVudGltZUV4dHJhcy5oPgpAQCAtNjg4NSw3ICs2ODg1LDcgQEAg
LSAoQk9PTClwZXJmb3JtRHJhZ09wZXJhdGlvbjooaWQgPE5TRHJhZ2dpbmdJbmZvPilkcmFnZ2lu
Z0luZm8KICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCi0gICAgICAgIE5T
U3RyaW5nICpkcm9wRGVzdGluYXRpb25QYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6Y3JlYXRl
VGVtcG9yYXJ5RGlyZWN0b3J5KEAiV2ViS2l0RHJvcERlc3RpbmF0aW9uIik7CisgICAgICAgIE5T
U3RyaW5nICpkcm9wRGVzdGluYXRpb25QYXRoID0gRmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5
RGlyZWN0b3J5KEAiV2ViS2l0RHJvcERlc3RpbmF0aW9uIik7CiAgICAgICAgIGlmICghZHJvcERl
c3RpbmF0aW9uUGF0aCkgewogICAgICAgICAgICAgZGVsZXRlIGRyYWdEYXRhOwogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1
Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5z
L1BsdWdpbkRhdGFiYXNlLmNwcAppbmRleCBiYzc5ZDg5YmQ0NDZjNTZlYTFiYTlkNTdjNzVhZTM5
OWFhOGYwNGNmLi42NDFhYzM1NGMzNDE5NjdlYTZjZWQ2OTBkNWU2ZDQ1YzZjMmMyYTFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNw
cApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogI2lm
IEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fTUVUQURBVEFfQ0FDSEUpCi0jaW5jbHVkZSAiRmlsZVN5
c3RlbS5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjZW5kaWYKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9Q
bHVnaW5QYWNrYWdlLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblBh
Y2thZ2UuaAppbmRleCBiNDg4M2RlYTk5NzZkYjUwY2RlNTI4NjBhYTliOTJiNWJiMTAxMGRmLi44
OTg3YTNkMzUzYzc2YzBhYTQ0NmVhYjM5MDgzNzMzMzlkNTE3ZDMyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblBhY2thZ2UuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblBhY2thZ2UuaApAQCAtMjksOCArMjksOCBA
QAogCiAjaW5jbHVkZSAiUGxhdGZvcm1Nb2R1bGUuaCIKICNpbmNsdWRlICJQbHVnaW5RdWlya1Nl
dC5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
VGltZXIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdIYXNoLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5z
L1BsdWdpblN0cmVhbS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5T
dHJlYW0uaAppbmRleCBjMWI5Zjg3YWM0ZTYyMmZiYjJlMmUyMDVkMTY0NTljMGMxOTRlN2I2Li40
MzFiMzYzMDM2MmM5ZTUyMTExOGRkMDMyNzNhNmNkOWMyOGNjNDY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblN0cmVhbS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luU3RyZWFtLmgKQEAgLTI3LDEyICsyNywxMiBA
QAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJQbHVnaW5RdWlya1NldC5oIgotI2luY2x1ZGUg
PFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0c2NhcGVQbHVnSW5T
dHJlYW1Mb2FkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGlt
ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL25wcnVudGltZV9pbnRlcm5hbC5oPgorI2luY2x1ZGUg
PHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFwcGxpY2F0aW9uQ2FjaGUuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQXBwbGljYXRpb25DYWNoZS5jcHAKaW5kZXggYjg1ZGQxNTQ0MGE2ZWE1
NDA0YThhNDg1MjE0M2U1OTE3OGZlYzEyZC4uOTBiZTFmY2U3NTFiNGYxYjVkOTRiMWJiNjc0YzM2
YjNlYzU2OWZjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXBwbGlj
YXRpb25DYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXBwbGljYXRp
b25DYWNoZS5jcHAKQEAgLTMwLDEzICszMCwxMyBAQAogI2luY2x1ZGUgIk1hcnNoYWxsaW5nSGVs
cGVycy5oIgogI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzLmgiCiAjaW5jbHVkZSAiV2ViU2VjdXJp
dHlPcmlnaW4uaCIKLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9BcHBsaWNhdGlvbkNhY2hlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9BcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ09NUHRyLmg+Ci0jaW5jbHVkZSA8V2ViQ29y
ZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2lu
Y2x1ZGUgPGNvbXV0aWwuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCmluZGV4IDNmNmMzOGIw
NjI4ZGI0YmFjZjljNDEzNTdiNTkxYTdkZWM5YWNkNDEuLmY5OTYzZjFjMDY4OTZkN2EyY2IyZDcz
M2ExOGVmYWFhZjNjZTQ4MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkRhdGFiYXNlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0
YWJhc2VNYW5hZ2VyLmNwcApAQCAtMzksOSArMzksOSBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQ09N
UHRyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EYXRhYmFzZU1hbmFnZXIuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0RhdGFiYXNlVHJhY2tlci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1NlY3VyaXR5T3JpZ2luRGF0YS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5j
bHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpA
QCAtNDM2LDcgKzQzNiw3IEBAIHN0YXRpYyBXVEY6OlN0cmluZyBkYXRhYmFzZXNEaXJlY3Rvcnko
KQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KGRpcmVjdG9yeVByZWYu
Z2V0KCkpOwogI2VuZGlmCiAKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmlj
U3RvcmFnZURpcmVjdG9yeSgpLCAiRGF0YWJhc2VzIik7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0
b3JhZ2VEaXJlY3RvcnkoKSwgIkRhdGFiYXNlcyIpOwogfQogCiB2b2lkIFdlYktpdEluaXRpYWxp
emVXZWJEYXRhYmFzZXNJZk5lY2Vzc2FyeSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJEb3dubG9hZEN1cmwuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
RG93bmxvYWRDdXJsLmNwcAppbmRleCAyMGQ0ZjQwODM1ZjcyNDEzOGYxNzIzYThkYzJmOTRiODk1
MmVlZWQ3Li45OWI2MjdmMWFhYzAzYWVkZjUwNjg3ZmM3ZjMzNmJiOTVkOWNkZDIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZEN1cmwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkQ3VybC5jcHAKQEAgLTM1LDIyICszNSwx
OSBAQAogI2luY2x1ZGUgIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgiCiAjaW5jbHVk
ZSAiV2ViVVJMQ3JlZGVudGlhbC5oIgogI2luY2x1ZGUgIldlYlVSTFJlc3BvbnNlLmgiCi0KLSNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0KLSNpbmNsdWRlIDxpby5oPgotI2luY2x1ZGUg
PHN5cy9zdGF0Lmg+Ci0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0KICNpbmNsdWRlIDxXZWJDb3Jl
L0JTdHJpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0N1cmxEb3dubG9hZC5oPgotI2luY2x1ZGUg
PFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1Jlc291cmNlSGFuZGxlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1RleHRFbmNvZGluZy5oPgorI2luY2x1ZGUgPGlvLmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4K
KyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcAppbmRleCBhNjMxYjkx
Njk2Nzc3MmJiODBlN2M2M2UwZjVlNTdmNmYzMjVjNjllLi4wMjVjMjBiZWEyMzhjZDZhNDk1YTI1
MGY2YzU1MGNhN2Y1Mjc5ZDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJQcmVmZXJlbmNlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVy
ZW5jZXMuY3BwCkBAIC0zOCwxMyArMzgsMTMgQEAKIAogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9u
L0NvcmVGb3VuZGF0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DT01QdHIuaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZvbnRDYXNjYWRlLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KICNpbmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8
c2hsb2JqLmg+CiAjaW5jbHVkZSA8d2NoYXIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5o
PgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVk
Lmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJW
aWV3LmNwcAppbmRleCBlNzYxNzQ0ZTBkMWI4NWFmZmQxMGI3NzdjZGQzNzkxYTRmNzFiMzFlLi5l
MzMxMDYzYTBiZjBlYmQ4MjAwOTE1MDQwNzYyNmRlOWExNDBlNTJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJWaWV3LmNwcApAQCAtOTYsNyArOTYsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRWRp
dG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FdmVudEhhbmRsZXIuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0V2ZW50TmFtZXMuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0Zsb2F0UXVhZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRm9jdXNDb250cm9s
bGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Gb250Lmg+CkBAIC0xNzEsNiArMTcwLDcgQEAKICNp
bmNsdWRlIDxXZWJDb3JlL1dpbmRvd3NUb3VjaC5oPgogI2luY2x1ZGUgPGNvbWRlZi5oPgogI2lu
Y2x1ZGUgPGQyZDEuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0
Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KICNpbmNs
dWRlIDx3dGYvUkFNU2l6ZS5oPgpAQCAtNTEzLDcgKzUxMyw3IEBAIHZvaWQgV2ViVmlldzo6c2V0
Q2FjaGVNb2RlbChXZWJDYWNoZU1vZGVsIGNhY2hlTW9kZWwpCiAgICAgICAgIGlmIChwcmVmZXJl
bmNlICYmIChDRlN0cmluZ0dldFR5cGVJRCgpID09IENGR2V0VHlwZUlEKHByZWZlcmVuY2UuZ2V0
KCkpKSkKICAgICAgICAgICAgIGNmdXJsQ2FjaGVEaXJlY3RvcnkgPSBhZG9wdENGKHN0YXRpY19j
YXN0PENGU3RyaW5nUmVmPihwcmVmZXJlbmNlLmxlYWtSZWYoKSkpOwogICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBjZnVybENhY2hlRGlyZWN0b3J5ID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6bG9j
YWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCkuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICAg
ICAgICAgIGNmdXJsQ2FjaGVEaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZp
Y1N0b3JhZ2VEaXJlY3RvcnkoKS5jcmVhdGVDRlN0cmluZygpOwogICAgIH0KICAgICBjYWNoZURp
cmVjdG9yeSA9IFN0cmluZyhjZnVybENhY2hlRGlyZWN0b3J5LmdldCgpKTsKICAgICBDRkluZGV4
IGNhY2hlTWVtb3J5Q2FwYWNpdHkgPSAwOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDMxNjViZDU3ODI1ZTRhMzIwODY5Njc1Y2NiMGM0N2NkYzE3
NjEyNjYuLjdlMzgxNjA3OTE5YmY1ZmRmZTI0NjhiZTY5ZGJjNjBlMzYwODJkMjIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBA
QAorMjAxOS0wMS0yMiAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CisK
KyAgICAgICAgTW92ZSBGaWxlU3lzdGVtIHRvIFdURgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzNjAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRy
ZWUuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQ6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1BsYXRmb3JtSlNDT25seS5jbWFrZToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1BsYXRm
b3JtUGxheVN0YXRpb24uY21ha2U6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVdQ
RS5jbWFrZToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxl
U3lzdGVtLmNwcDogUmVuYW1lZCBmcm9tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9GaWxlU3lzdGVtLmNwcC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
RmlsZU1vbml0b3IuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9T
ZWN1cml0eU9yaWdpbi5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L1NoYXJlZEJ1ZmZlclRlc3QuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9jb2NvYS9EYXRhYmFzZVRyYWNrZXJUZXN0Lm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9jdXJsL0Nvb2tpZXMuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW06CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZFByb2dyZXNzLm1tOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvd2luL1BsYXRmb3JtVXRpbGl0aWVzV2luLmNwcDoKKwogMjAxOS0wMS0yMiAgQWFr
YXNoIEphaW4gIDxhYWthc2hfamFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgW2V3cy1hcHBdIGZl
dGNoIGxvb3Agc2hvdWxkIG5vdCBzdG9wIG9uIG5ldHdvcmsgaXNzdWVzCmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcAppbmRleCBhNGI1Yzc3MDcwODkwYTVjZjE0
MmQyZDljOGIzYzMzODY0ODNlNmVkLi5hMGI2ODVjNzVmOWRhZjBmZWI3ZWFhZTFiYjMyYTJlOTUy
ZDIyNmY0IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRy
ZWUuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAK
QEAgLTQ2LDcgKzQ2LDYgQEAKIAogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0
aW9uLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVGVzdFJ1bm5lclV0aWxzLmg+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViS2l0TGVnYWN5L1dlYktp
dC5oPgogI2luY2x1ZGUgPFdlYktpdExlZ2FjeS9XZWJLaXRDT01BUEkuaD4KICNpbmNsdWRlIDxj
b211dGlsLmg+CkBAIC02MCw2ICs1OSw3IEBACiAjaW5jbHVkZSA8c2hsd2FwaS5oPgogI2luY2x1
ZGUgPHRjaGFyLmg+CiAjaW5jbHVkZSA8d2luZG93cy5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lz
dGVtLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0
cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CkBAIC0yMjIsNyArMjIyLDcgQEAg
c3RhdGljIFN0cmluZyBsaWJyYXJ5UGF0aEZvckR1bXBSZW5kZXJUcmVlKCkKICAgICAgICAgcmV0
dXJuIFN0cmluZyAocGF0aC5kYXRhKCksIHBhdGgubGVuZ3RoKCkpOwogICAgIH0KIAotICAgIHJl
dHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3Rv
cnkoKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGly
ZWN0b3J5KCk7CiB9CiAjZW5kaWYKIApAQCAtOTMxLDkgKzkzMSw5IEBAIHN0YXRpYyB2b2lkIHNl
dERlZmF1bHRzVG9Db25zaXN0ZW50VmFsdWVzRm9yVGVzdGluZygpCiAgICAgU3RyaW5nIGxpYnJh
cnlQYXRoID0gbGlicmFyeVBhdGhGb3JEdW1wUmVuZGVyVHJlZSgpOwogCiAgICAgLy8gU2V0IHVw
IHRoZXNlIHZhbHVlcyBiZWZvcmUgY3JlYXRpbmcgdGhlIFdlYlZpZXcgc28gdGhhdCB0aGUgdmFy
aW91cyBpbml0aWFsaXphdGlvbnMgd2lsbCBzZWUgdGhlc2UgcHJlZmVycmVkIHZhbHVlcy4KLSAg
ICBDRlByZWZlcmVuY2VzU2V0QXBwVmFsdWUoV2ViRGF0YWJhc2VEaXJlY3RvcnlEZWZhdWx0c0tl
eSwgV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGxpYnJhcnlQ
YXRoLCAiRGF0YWJhc2VzIikuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgYXBwSWQuZ2V0KCkpOwot
ICAgIENGUHJlZmVyZW5jZXNTZXRBcHBWYWx1ZShXZWJTdG9yYWdlRGlyZWN0b3J5RGVmYXVsdHNL
ZXksIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChsaWJyYXJ5
UGF0aCwgIkxvY2FsU3RvcmFnZSIpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGFwcElkLmdldCgp
KTsKLSAgICBDRlByZWZlcmVuY2VzU2V0QXBwVmFsdWUoV2ViS2l0TG9jYWxDYWNoZURlZmF1bHRz
S2V5LCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobGlicmFy
eVBhdGgsICJMb2NhbENhY2hlIikuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgYXBwSWQuZ2V0KCkp
OworICAgIENGUHJlZmVyZW5jZXNTZXRBcHBWYWx1ZShXZWJEYXRhYmFzZURpcmVjdG9yeURlZmF1
bHRzS2V5LCBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobGlicmFyeVBhdGgs
ICJEYXRhYmFzZXMiKS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBhcHBJZC5nZXQoKSk7CisgICAg
Q0ZQcmVmZXJlbmNlc1NldEFwcFZhbHVlKFdlYlN0b3JhZ2VEaXJlY3RvcnlEZWZhdWx0c0tleSwg
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGxpYnJhcnlQYXRoLCAiTG9jYWxT
dG9yYWdlIikuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgYXBwSWQuZ2V0KCkpOworICAgIENGUHJl
ZmVyZW5jZXNTZXRBcHBWYWx1ZShXZWJLaXRMb2NhbENhY2hlRGVmYXVsdHNLZXksIEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChsaWJyYXJ5UGF0aCwgIkxvY2FsQ2FjaGUiKS5j
cmVhdGVDRlN0cmluZygpLmdldCgpLCBhcHBJZC5nZXQoKSk7CiAjZW5kaWYKIH0KIApAQCAtMTAz
NSw3ICsxMDM1LDcgQEAgc3RhdGljIHZvaWQgc2l6ZVdlYlZpZXdGb3JDdXJyZW50VGVzdCgpCiAK
IHN0YXRpYyBTdHJpbmcgZmluZEZvbnRGYWxsYmFjayhjb25zdCBjaGFyKiBwYXRoT3JVcmwpCiB7
Ci0gICAgU3RyaW5nIHBhdGhUb0ZvbnRGYWxsYmFjayA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRp
cmVjdG9yeU5hbWUocGF0aE9yVXJsKTsKKyAgICBTdHJpbmcgcGF0aFRvRm9udEZhbGxiYWNrID0g
RmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShwYXRoT3JVcmwpOwogCiAgICAgd2NoYXJfdCBmdWxs
UGF0aFtfTUFYX1BBVEhdOwogICAgIGlmICghX3dmdWxscGF0aChmdWxsUGF0aCwgcGF0aFRvRm9u
dEZhbGxiYWNrLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpLCBfTUFYX1BB
VEgpKQpAQCAtMTA1NCwyMCArMTA1NCwyMCBAQCBzdGF0aWMgU3RyaW5nIGZpbmRGb250RmFsbGJh
Y2soY29uc3QgY2hhciogcGF0aE9yVXJsKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsK
IAogICAgIFN0cmluZyBwYXRoVG9UZXN0ID0gcGF0aFRvQ2hlY2suc3Vic3RyaW5nKGxvY2F0aW9u
ICsgbGF5b3V0VGVzdHMubGVuZ3RoKCkgKyAxKTsKLSAgICBTdHJpbmcgcG9zc2libGVQYXRoVG9M
b2d1ZSA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXRo
VG9DaGVjay5zdWJzdHJpbmcoMCwgbG9jYXRpb24gKyBsYXlvdXRUZXN0cy5sZW5ndGgoKSArIDEp
LCAicGxhdGZvcm1cXHdpbiIpOworICAgIFN0cmluZyBwb3NzaWJsZVBhdGhUb0xvZ3VlID0gRmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhdGhUb0NoZWNrLnN1YnN0cmluZygw
LCBsb2NhdGlvbiArIGxheW91dFRlc3RzLmxlbmd0aCgpICsgMSksICJwbGF0Zm9ybVxcd2luIik7
CiAKICAgICBWZWN0b3I8U3RyaW5nPiBwb3NzaWJsZVBhdGhzOwotICAgIHBvc3NpYmxlUGF0aHMu
YXBwZW5kKFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwb3Nz
aWJsZVBhdGhUb0xvZ3VlLCBwYXRoVG9UZXN0KSk7CisgICAgcG9zc2libGVQYXRocy5hcHBlbmQo
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBvc3NpYmxlUGF0aFRvTG9ndWUs
IHBhdGhUb1Rlc3QpKTsKIAogICAgIHNpemVfdCBuZXh0Q2FuZGlkYXRlRW5kID0gcGF0aFRvVGVz
dC5yZXZlcnNlRmluZCgnXFwnKTsKICAgICB3aGlsZSAobmV4dENhbmRpZGF0ZUVuZCAmJiBuZXh0
Q2FuZGlkYXRlRW5kICE9IFdURjo6bm90Rm91bmQpIHsKICAgICAgICAgcGF0aFRvVGVzdCA9IHBh
dGhUb1Rlc3Quc3Vic3RyaW5nKDAsIG5leHRDYW5kaWRhdGVFbmQpOwotICAgICAgICBwb3NzaWJs
ZVBhdGhzLmFwcGVuZChXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQocG9zc2libGVQYXRoVG9Mb2d1ZSwgcGF0aFRvVGVzdCkpOworICAgICAgICBwb3NzaWJsZVBh
dGhzLmFwcGVuZChGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocG9zc2libGVQ
YXRoVG9Mb2d1ZSwgcGF0aFRvVGVzdCkpOwogICAgICAgICBuZXh0Q2FuZGlkYXRlRW5kID0gcGF0
aFRvVGVzdC5yZXZlcnNlRmluZCgnXFwnKTsKICAgICB9CiAKICAgICBmb3IgKFZlY3RvcjxTdHJp
bmc+OjppdGVyYXRvciBwb3MgPSBwb3NzaWJsZVBhdGhzLmJlZ2luKCk7IHBvcyAhPSBwb3NzaWJs
ZVBhdGhzLmVuZCgpOyArK3BvcykgewotICAgICAgICBwYXRoVG9Gb250RmFsbGJhY2sgPSBXZWJD
b3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoKnBvcywgInJlc291cmNl
c1xcIik7CisgICAgICAgIHBhdGhUb0ZvbnRGYWxsYmFjayA9IEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudCgqcG9zLCAicmVzb3VyY2VzXFwiKTsKIAogICAgICAgICBpZiAoOjpQ
YXRoSXNEaXJlY3RvcnlXKHBhdGhUb0ZvbnRGYWxsYmFjay5jaGFyYWN0ZXJzV2l0aE51bGxUZXJt
aW5hdGlvbigpLmRhdGEoKSkpCiAgICAgICAgICAgICByZXR1cm4gcGF0aFRvRm9udEZhbGxiYWNr
OwpAQCAtMTA4MSw3ICsxMDgxLDcgQEAgc3RhdGljIHZvaWQgYWRkRm9udEZhbGxiYWNrSWZQcmVz
ZW50KGNvbnN0IFN0cmluZyYgZm9udEZhbGxiYWNrUGF0aCkKICAgICBpZiAoZm9udEZhbGxiYWNr
UGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0cmluZyBmb250RmFsbGJh
Y2sgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZm9udEZh
bGxiYWNrUGF0aCwgIk1hYy1jb21wYXRpYmxlLWZvbnQtZmFsbGJhY2suY3NzIik7CisgICAgU3Ry
aW5nIGZvbnRGYWxsYmFjayA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChm
b250RmFsbGJhY2tQYXRoLCAiTWFjLWNvbXBhdGlibGUtZm9udC1mYWxsYmFjay5jc3MiKTsKIAog
ICAgIGlmICghOjpQYXRoRmlsZUV4aXN0c1coZm9udEZhbGxiYWNrLmNoYXJhY3RlcnNXaXRoTnVs
bFRlcm1pbmF0aW9uKCkuZGF0YSgpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTA5NCw3ICsxMDk0
LDcgQEAgc3RhdGljIHZvaWQgcmVtb3ZlRm9udEZhbGxiYWNrSWZQcmVzZW50KGNvbnN0IFN0cmlu
ZyYgZm9udEZhbGxiYWNrUGF0aCkKICAgICBpZiAoZm9udEZhbGxiYWNrUGF0aC5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIFN0cmluZyBmb250RmFsbGJhY2sgPSBXZWJDb3JlOjpG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZm9udEZhbGxiYWNrUGF0aCwgIk1h
Yy1jb21wYXRpYmxlLWZvbnQtZmFsbGJhY2suY3NzIik7CisgICAgU3RyaW5nIGZvbnRGYWxsYmFj
ayA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChmb250RmFsbGJhY2tQYXRo
LCAiTWFjLWNvbXBhdGlibGUtZm9udC1mYWxsYmFjay5jc3MiKTsKIAogICAgIGlmICghOjpQYXRo
RmlsZUV4aXN0c1coZm9udEZhbGxiYWNrLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCku
ZGF0YSgpKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9DTWFrZUxpc3RzLnR4dCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKaW5k
ZXggYjI0OTAwODk4YjNmYzVhZjg5YzQ5MDMzODBjM2ZkN2MxZGMwZDcwNS4uZDljZWE4ZjU4MWY2
YjMwMWQyOTM1ZDVkYjQ1YjA3Nzk2OWQ0YzBkYyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9DTWFrZUxpc3RzLnR4dAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMu
dHh0CkBAIC0xODgsNyArMTg4LDE0IEBAIHNldChUZXN0V1RGX1NPVVJDRVMKICAgICAke1RFU1RX
RUJLSVRBUElfRElSfS9UZXN0cy9XVEYvV29ya2VyUG9vbC5jcHAKICkKIAotIyBGSVhNRTogVGVz
dHMvV1RGL1J1bkxvb3AuY3BwIGlzIG1pc3NpbmcgYmVjYXVzZSBpdCBkb2Vzbid0IHdvcmsgZm9y
IFdpbmRvd3MuCisjIEZJWE1FOiBNYWtlIHRoZXNlIHdvcmsgb24gV2luZG93cyB0b28uCitpZiAo
Tk9UIFdJTjMyKQorICAgIGxpc3QoQVBQRU5EIFRlc3RXVEZfU09VUkNFUworICAgICAgICAke1RF
U1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAKKyAgICAgICAgJHtURVNU
V0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL1J1bkxvb3AuY3BwCisgICAgKQorZW5kaWYgKCkKKwog
IyBGSVhNRTogUGxhdGZvcm0tc3BlY2lmaWMgc291cmNlcyBpbiBUZXN0cy9XVEYgYXJlIG5vdCBp
bmNsdWRlZCBpbiBUZXN0V1RGX1NPVVJDRVMuCiAKIFdFQktJVF9JTkNMVURFX0NPTkZJR19GSUxF
U19JRl9FWElTVFMoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUdU
Sy5jbWFrZSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggYzM0
ZmFlMDdjZjNjNmIwYTM5YzM5OWZlZTMyY2QyNWMzYTBhYTdmNC4uY2U4MjFlNjFiMDU2NDM1YjJl
ZWVlNWUwZTU2YmEyMzU3NzI1ODg1ZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Q
bGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtR1RLLmNt
YWtlCkBAIC05Myw3ICs5Myw2IEBAIGFkZF9leGVjdXRhYmxlKFRlc3RXZWJDb3JlCiAgICAgJHtU
RVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV2ViQ29yZS9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3Bw
CiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV2ViQ29yZS9ETlMuY3BwCiAgICAgJHtU
RVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRvci5jcHAKLSAgICAke1RF
U1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL0ZpbGVTeXN0ZW0uY3BwCiAgICAgJHtURVNU
V0VCS0lUQVBJX0RJUn0vVGVzdHMvV2ViQ29yZS9nc3RyZWFtZXIvR3N0TWFwcGVkQnVmZmVyLmNw
cAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUvZ3N0cmVhbWVyL0dTdHJl
YW1lclRlc3QuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV2ViQ29yZS9Hcmlk
UG9zaXRpb24uY3BwCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtSlND
T25seS5jbWFrZSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1KU0NPbmx5LmNtYWtlCmlu
ZGV4IGEzZmEyZGE5NTVkNWEzOWMxYzM5NjgwYzIxZThjZGU2ZThmYjVjODAuLmI1NTY5OGJiZmJm
OTczM2FjMDhlMzY5MzVhOThiYjJiNjllZTBiN2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvUGxhdGZvcm1KU0NPbmx5LmNtYWtlCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxh
dGZvcm1KU0NPbmx5LmNtYWtlCkBAIC0yMSw3ICsyMSwzIEBAIGVuZGlmICgpCiBzZXQodGVzdF9t
YWluX1NPVVJDRVMKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9nZW5lcmljL21haW4uY3BwCiAp
Ci0KLWxpc3QoQVBQRU5EIFRlc3RXVEZfU09VUkNFUwotICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9
L1Rlc3RzL1dURi9SdW5Mb29wLmNwcAotKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9QbGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtlIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9y
bVBsYXlTdGF0aW9uLmNtYWtlCmluZGV4IDlmMWEyYTY0ZDUxODQwNGRhOTg2ZTY2NTEyNzBmNzg4
YTA1ZDhlNmMuLmYxZmNiMDQxYzc1YjA3MTVmMGEzMmZiZDQ0MGVhYzRlMDExYzQxNzkgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1QbGF5U3RhdGlvbi5jbWFrZQorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtUGxheVN0YXRpb24uY21ha2UKQEAgLTE0LDUg
KzE0LDQgQEAgc2V0KHRlc3RfbWFpbl9TT1VSQ0VTCiAKIGxpc3QoQVBQRU5EIFRlc3RXVEZfU09V
UkNFUwogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L2dlbmVyaWMvVXRpbGl0aWVzR2VuZXJpYy5j
cHAKLSAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvUnVuTG9vcC5jcHAKICkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1XUEUuY21ha2UgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1BsYXRmb3JtV1BFLmNtYWtlCmluZGV4IGI2ODc3NTk4ZDg3N2RlNmM4ZGE4
NmI0ZWI1N2NjODZmZjBhMmY3ZWYuLjQyNjdkYTIwZDA3MGM0N2JjODFlNDZlYzJiN2YyZDEzYzA3
OTlkNzYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1XUEUuY21ha2UK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVdQRS5jbWFrZQpAQCAtNjAsNyArNjAs
NiBAQCBhZGRfZXhlY3V0YWJsZShUZXN0V2ViQ29yZQogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9
L2dsaWIvVXRpbGl0aWVzR0xpYi5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0c0Nv
bnRyb2xsZXIuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV2ViQ29yZS9GaWxl
TW9uaXRvci5jcHAKLSAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL0ZpbGVT
eXN0ZW0uY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV2ViQ29yZS9nc3RyZWFt
ZXIvR3N0TWFwcGVkQnVmZmVyLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dl
YkNvcmUvZ3N0cmVhbWVyL0dTdHJlYW1lclRlc3QuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJ
Un0vVGVzdHMvV2ViQ29yZS9IVE1MUGFyc2VySWRpb21zLmNwcApkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCA3YTEwNzJhY2RhYTJjMmFhNTA3Y2RiMmZjMjk3MDgxMDg0NWMzZjBhLi5mNjUyNjhl
NWZkM2I0MWQzNmI2ZmM0NmQ1ZjdlYjJmYzFkMWUyYzA4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtNDI3LDcgKzQyNyw2IEBACiAJCTdDODNFMDRDMUQwQTY0MTgwMEZFQkNGMyAvKiBXZWJD
b3JlTlNVUkxTZXNzaW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0Q4OUQwMzgxQzRFREIyQTAwMDQwQTA0IC8qIFdlYkNvcmVOU1VSTFNlc3Npb24u
bW0gKi87IH07CiAJCTdDODNFMDREMUQwQTY0MTgwMEZFQkNGMyAvKiBERkFDb21iaW5lci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNjBCQTU3ODFC
MUQyRTdCMDA0RkEwN0MgLyogREZBQ29tYmluZXIuY3BwICovOyB9OwogCQk3QzgzRTA0RTFEMEE2
NDE4MDBGRUJDRjMgLyogREZBTWluaW1pemVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2RjZFMUVGMUFEQzc0OUIwMERFNjk2QiAvKiBERkFNaW5p
bWl6ZXIuY3BwICovOyB9OwotCQk3QzgzRTA0RjFEMEE2NDE4MDBGRUJDRjMgLyogRmlsZVN5c3Rl
bS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTk3
M0I1QTFBRjIyODZBMDA2QzdCMzYgLyogRmlsZVN5c3RlbS5jcHAgKi87IH07CiAJCTdDODNFMDUw
MUQwQTY0MTgwMEZFQkNGMyAvKiBIVE1MUGFyc2VySWRpb21zLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQjg4QTMzMUM4MDA1NkQwMEJCMjQxOCAv
KiBIVE1MUGFyc2VySWRpb21zLmNwcCAqLzsgfTsKIAkJN0M4M0UwNTExRDBBNjQxODAwRkVCQ0Yz
IC8qIFBhcnNlZENvbnRlbnRSYW5nZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRDIyNUMwNzFDNDVBNjkyMDAxNDA3NjEgLyogUGFyc2VkQ29udGVu
dFJhbmdlLmNwcCAqLzsgfTsKIAkJN0M4M0UwNTIxRDBBNjQxODAwRkVCQ0YzIC8qIFNoYXJlZEJ1
ZmZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MTk3M0I1QzFBRjIyODc1MDA2QzdCMzYgLyogU2hhcmVkQnVmZmVyLmNwcCAqLzsgfTsKQEAgLTY4
OSw2ICs2ODgsNyBAQAogCQlBMUM0RkI3MzFCQUNEMUNBMDAzNzQyRDAgLyogcGFnZXMucGFnZXMg
aW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFD
NEZCNzIxQkFDRDFCNzAwMzc0MkQwIC8qIHBhZ2VzLnBhZ2VzICovOyB9OwogCQlBMURGNzQzMjFD
NDFCNjU4MDBBMkY0RDAgLyogQWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFERjc0MzAxQzQxQjY1ODAw
QTJGNEQwIC8qIEFsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lcy5tbSAqLzsgfTsKIAkJQTFFQzEx
ODgxRjQyNTQxMjAwRDAxNDZFIC8qIFByZXZpZXdMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFFQzExODcxRjQyNTQxMjAwRDAxNDZFIC8q
IFByZXZpZXdMb2FkZXIuY3BwICovOyB9OworCQlBMzEwODI3MjIxRjI5NkZGMDBDMjhCOTcgLyog
RmlsZVN5c3RlbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBMzEwODI3MTIxRjI5NkVDMDBDMjhCOTcgLyogRmlsZVN5c3RlbS5jcHAgKi87IH07CiAJ
CUE1N0EzNEYyMTZBRjZCMkIwMEMyNTAxRiAvKiBQYWdlVmlzaWJpbGl0eVN0YXRlV2l0aFdpbmRv
d0NoYW5nZXMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNTdBMzRGMTE2QUY2OUUyMDBDMjUwMUYgLyogUGFnZVZpc2liaWxpdHlTdGF0
ZVdpdGhXaW5kb3dDaGFuZ2VzLmh0bWwgKi87IH07CiAJCUE1N0Q1NEYzMUYzMzhDMzYwMEE5N0FB
NyAvKiBOZXZlckRlc3Ryb3llZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNTdENTRGMjFGMzM4QzM2MDBBOTdBQTcgLyogTmV2ZXJEZXN0cm95ZWQu
Y3BwICovOyB9OwogCQlBNTdENTRGNjFGMzM5NUQwMDBBOTdBQTcgLyogTG9nZ2VyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1N0Q1NEY0MUYzMzk1
RDAwMEE5N0FBNyAvKiBMb2dnZXIuY3BwICovOyB9OwpAQCAtMTUyMCw3ICsxNTIwLDYgQEAKIAkJ
NDEzNUZCODMyMDExRkFBMzAwMzMyMTM5IC8qIEluamVjdEludGVybmFsc19CdW5kbGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSW5qZWN0SW50ZXJuYWxzX0J1bmRs
ZS5jcHA7IHBhdGggPSBUZXN0cy9JbmplY3RJbnRlcm5hbHNfQnVuZGxlLmNwcDsgc291cmNlVHJl
ZSA9IFNPVVJDRV9ST09UOyB9OwogCQk0MTM1RkI4NjIwMTFGQUJGMDAzMzIxMzkgLyogbGliV2Vi
Q29yZVRlc3RTdXBwb3J0LmR5bGliICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxp
Y2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGliIjsgcGF0aCA9IGxpYldlYkNvcmVU
ZXN0U3VwcG9ydC5keWxpYjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJ
NDE4ODJGMDIyMTAxMEE3MDAwMkZGMjg4IC8qIFByb2Nlc3NQcmVXYXJtaW5nLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUHJvY2Vzc1ByZVdhcm1pbmcubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQxOTczQjVBMUFGMjI4NkEwMDZDN0IzNiAvKiBG
aWxlU3lzdGVtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZpbGVT
eXN0ZW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTk3M0I1QzFBRjIyODc1
MDA2QzdCMzYgLyogU2hhcmVkQnVmZmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFNoYXJlZEJ1ZmZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQ0MkJCRjY4MUM5MUNBRDkwMDE3MDg3RiAvKiBSZWZMb2dnZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVmTG9nZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDQzM0EzOTUyMDgwNDQxMzAwOTFFRDU3IC8qIFN5bmNocm9ub3VzVGltZW91
dFRlc3RzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU3luY2hy
b25vdXNUaW1lb3V0VGVzdHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xOTE3
LDYgKzE5MTYsNyBAQAogCQlBMURGNzQzMDFDNDFCNjU4MDBBMkY0RDAgLyogQWx3YXlzUmV2YWxp
ZGF0ZWRVUkxTY2hlbWVzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gQWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBMUVDMTE4NzFGNDI1NDEyMDBEMDE0NkUgLyogUHJldmlld0xvYWRlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBQcmV2aWV3TG9hZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTFGREZEMkUxOUMyODhCQjAwNTE0OEE0IC8qIFdLSW1hZ2VDcmVhdGVDR0ltYWdl
Q3Jhc2guY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tJbWFnZUNy
ZWF0ZUNHSW1hZ2VDcmFzaC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEzMTA4
MjcxMjFGMjk2RUMwMEMyOEI5NyAvKiBGaWxlU3lzdGVtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEZpbGVTeXN0ZW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBNTdBMzRFRjE2QUY2NzcyMDBDMjUwMUYgLyogUGFnZVZpc2liaWxpdHlTdGF0ZVdp
dGhXaW5kb3dDaGFuZ2VzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gUGFnZVZpc2liaWxpdHlTdGF0ZVdpdGhXaW5kb3dDaGFuZ2VzLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBNTdBMzRGMTE2QUY2OUUyMDBDMjUwMUYgLyogUGFnZVZpc2liaWxp
dHlTdGF0ZVdpdGhXaW5kb3dDaGFuZ2VzLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGgg
PSBQYWdlVmlzaWJpbGl0eVN0YXRlV2l0aFdpbmRvd0NoYW5nZXMuaHRtbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTU3RDU0RjIxRjMzOEMzNjAwQTk3QUE3IC8qIE5ldmVyRGVzdHJv
eWVkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldmVyRGVzdHJveWVkLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI2NzcsNyArMjY3Nyw2IEBACiAJCQkJNTc5NjUxRTYyMTZC
RkQ1MzAwNkVCRkU1IC8qIEZpZG9IaWRNZXNzYWdlVGVzdC5jcHAgKi8sCiAJCQkJNTcyQjQwMzUy
MTc2QTAyOTAwMEFENDNFIC8qIEZpZG9UZXN0RGF0YS5oICovLAogCQkJCTdBMzJENzQ5MUYwMjE1
MTUwMDE2MkM0NCAvKiBGaWxlTW9uaXRvci5jcHAgKi8sCi0JCQkJNDE5NzNCNUExQUYyMjg2QTAw
NkM3QjM2IC8qIEZpbGVTeXN0ZW0uY3BwICovLAogCQkJCTdBOTA5QTcwMUQ4Nzc0NzUwMDdFMTBG
OCAvKiBGbG9hdFBvaW50LmNwcCAqLywKIAkJCQk3QTkwOUE3MTFEODc3NDc1MDA3RTEwRjggLyog
RmxvYXRSZWN0LmNwcCAqLywKIAkJCQk3QTkwOUE3MjFEODc3NDc1MDA3RTEwRjggLyogRmxvYXRT
aXplLmNwcCAqLywKQEAgLTMxODcsNiArMzE4Niw3IEBACiAJCQkJRTRBNzU3RDMxNzhBRUE1QjAw
QjVEN0E0IC8qIERlcXVlLmNwcCAqLywKIAkJCQkxQUY3QjIxRDFENkNEMTJFMDA4QzEyNkMgLyog
RW51bVRyYWl0cy5jcHAgKi8sCiAJCQkJQUQ3QzQzNEMxREQyQTU0NzAwMjY4ODhCIC8qIEV4cGVj
dGVkLmNwcCAqLywKKwkJCQlBMzEwODI3MTIxRjI5NkVDMDBDMjhCOTcgLyogRmlsZVN5c3RlbS5j
cHAgKi8sCiAJCQkJOTMxMENEMzYxRUY3MDhGQjAwNTBGRkUwIC8qIEZ1bmN0aW9uLmNwcCAqLywK
IAkJCQk4M0RCNzk2NzFFRjYzQjNDMDBCRkE1RTUgLyogRnVuY3Rpb24uY3BwICovLAogCQkJCTdB
MzhEN0U1MUM3NTJENUYwMDRGMTU3RCAvKiBIYXNoQ291bnRlZFNldC5jcHAgKi8sCkBAIC0zNzk1
LDYgKzM3OTUsNyBAQAogCQkJCTdDODNERUFEMUQwQTU5MEMwMEZFQkNGMyAvKiBEZXF1ZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkxQUY3QjIxRjFENkNEMTREMDA4QzEyNkMgLyogRW51bVRyYWl0
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBRDdDNDM0RDFERDJBNTRFMDAyNjg4OEIgLyogRXhw
ZWN0ZWQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTMxMDgyNzIyMUYyOTZGRjAwQzI4Qjk3IC8q
IEZpbGVTeXN0ZW0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMxMENEMzgxRUY3MDhGQjAwNTBG
RkUwIC8qIEZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTZCRkQyOTRDMUQ1RTZDMUQw
MDhFQzk2OCAvKiBIYXNoQ291bnRlZFNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzNENjMx
RDFGQ0I3NjIwMDAzMkVDRDYgLyogSGFzaGVyLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzk5OCw3
ICszOTk5LDYgQEAKIAkJCQk3Q0NFN0VGMTFBNDExQUU2MDA0NDdDNEMgLyogRmFpbGVkTG9hZC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk1Nzk2NTFFNzIxNkJGREVEMDA2RUJGRTUgLyogRmlkb0hp
ZE1lc3NhZ2VUZXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdBMzJENzRBMUYwMjE1MTUwMDE2
MkM0NCAvKiBGaWxlTW9uaXRvci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk3QzgzRTA0RjFEMEE2
NDE4MDBGRUJDRjMgLyogRmlsZVN5c3RlbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VG
MzFBNDExQUU2MDA0NDdDNEMgLyogRmluZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzRTBC
QjFEMEE2NTAwMDBGRUJDRjMgLyogRmluZEluUGFnZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdD
Q0U3RUY0MUE0MTFBRTYwMDQ0N0M0QyAvKiBGaW5kTWF0Y2hlcy5tbSBpbiBTb3VyY2VzICovLApk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5kNTdkZjYxNDI5N2YwYTIzNzIzOTVjNzZiZjRjNTkxNWE1NzU3NWZhCi0tLSAvZGV2L251bGwK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAKQEAgLTAs
MCArMSwxNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAi
VGVzdC5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlTWV0YWRhdGEuaD4KKyNpbmNsdWRlIDx3dGYvRmls
ZVN5c3RlbS5oPgorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL1N0
cmluZ0V4dHJhcy5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK2NvbnN0IGNoYXIq
IEZpbGVTeXN0ZW1UZXN0RGF0YSA9ICJUaGlzIGlzIGEgdGVzdCI7CisKKy8vIEZJWE1FOiBSZWZh
Y3RvciBGaWxlU3lzdGVtVGVzdCBhbmQgU2hhcmVkQnVmZmVyVGVzdCBhcyBhIHNpbmdsZSBjbGFz
cy4KK2NsYXNzIEZpbGVTeXN0ZW1UZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworcHVibGlj
OgorICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgV1RGOjppbml0aWFs
aXplTWFpblRocmVhZCgpOworCisgICAgICAgIC8vIGNyZWF0ZSB0ZW1wIGZpbGUKKyAgICAgICAg
RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZTsKKyAgICAgICAgbV90ZW1wRmls
ZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcFRlc3RGaWxlIiwgaGFu
ZGxlKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoaGFuZGxlLCBGaWxlU3lzdGVt
VGVzdERhdGEsIHN0cmxlbihGaWxlU3lzdGVtVGVzdERhdGEpKTsKKyAgICAgICAgRmlsZVN5c3Rl
bTo6Y2xvc2VGaWxlKGhhbmRsZSk7CisKKyAgICAgICAgbV90ZW1wRmlsZVN5bWxpbmtQYXRoID0g
bV90ZW1wRmlsZVBhdGggKyAiLXN5bWxpbmsiOworICAgICAgICBGaWxlU3lzdGVtOjpjcmVhdGVT
eW1ib2xpY0xpbmsobV90ZW1wRmlsZVBhdGgsIG1fdGVtcEZpbGVTeW1saW5rUGF0aCk7CisKKyAg
ICAgICAgbV90ZW1wRW1wdHlGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxl
KCJ0ZW1wRW1wdHlUZXN0RmlsZSIsIGhhbmRsZSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmNsb3Nl
RmlsZShoYW5kbGUpOworCisgICAgICAgIG1fc3BhY2VDb250YWluaW5nRmlsZVBhdGggPSBGaWxl
U3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcCBFbXB0eSBUZXN0IEZpbGUiLCBoYW5kbGUp
OworICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKKworICAgICAgICBtX2Jh
bmdDb250YWluaW5nRmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVt
cCFFbXB0eSFUZXN0IUZpbGUiLCBoYW5kbGUpOworICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZp
bGUoaGFuZGxlKTsKKworICAgICAgICBtX3F1b3RlQ29udGFpbmluZ0ZpbGVQYXRoID0gRmlsZVN5
c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoInRlbXBcIkVtcHR5XCJUZXN0RmlsZSIsIGhhbmRsZSk7
CisgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUpOworICAgIH0KKworICAgIHZv
aWQgVGVhckRvd24oKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRl
RmlsZShtX3RlbXBGaWxlUGF0aCk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV90
ZW1wRmlsZVN5bWxpbmtQYXRoKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX3Rl
bXBFbXB0eUZpbGVQYXRoKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX3NwYWNl
Q29udGFpbmluZ0ZpbGVQYXRoKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX2Jh
bmdDb250YWluaW5nRmlsZVBhdGgpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1f
cXVvdGVDb250YWluaW5nRmlsZVBhdGgpOworICAgIH0KKworICAgIGNvbnN0IFN0cmluZyYgdGVt
cEZpbGVQYXRoKCkgeyByZXR1cm4gbV90ZW1wRmlsZVBhdGg7IH0KKyAgICBjb25zdCBTdHJpbmcm
IHRlbXBGaWxlU3ltbGlua1BhdGgoKSB7IHJldHVybiBtX3RlbXBGaWxlU3ltbGlua1BhdGg7IH0K
KyAgICBjb25zdCBTdHJpbmcmIHRlbXBFbXB0eUZpbGVQYXRoKCkgeyByZXR1cm4gbV90ZW1wRW1w
dHlGaWxlUGF0aDsgfQorICAgIGNvbnN0IFN0cmluZyYgc3BhY2VDb250YWluaW5nRmlsZVBhdGgo
KSB7IHJldHVybiBtX3NwYWNlQ29udGFpbmluZ0ZpbGVQYXRoOyB9CisgICAgY29uc3QgU3RyaW5n
JiBiYW5nQ29udGFpbmluZ0ZpbGVQYXRoKCkgeyByZXR1cm4gbV9iYW5nQ29udGFpbmluZ0ZpbGVQ
YXRoOyB9CisgICAgY29uc3QgU3RyaW5nJiBxdW90ZUNvbnRhaW5pbmdGaWxlUGF0aCgpIHsgcmV0
dXJuIG1fcXVvdGVDb250YWluaW5nRmlsZVBhdGg7IH0KKworcHJpdmF0ZToKKyAgICBTdHJpbmcg
bV90ZW1wRmlsZVBhdGg7CisgICAgU3RyaW5nIG1fdGVtcEZpbGVTeW1saW5rUGF0aDsKKyAgICBT
dHJpbmcgbV90ZW1wRW1wdHlGaWxlUGF0aDsKKyAgICBTdHJpbmcgbV9zcGFjZUNvbnRhaW5pbmdG
aWxlUGF0aDsKKyAgICBTdHJpbmcgbV9iYW5nQ29udGFpbmluZ0ZpbGVQYXRoOworICAgIFN0cmlu
ZyBtX3F1b3RlQ29udGFpbmluZ0ZpbGVQYXRoOworfTsKKworVEVTVF9GKEZpbGVTeXN0ZW1UZXN0
LCBNYXBwaW5nTWlzc2luZ0ZpbGUpCit7CisgICAgYm9vbCBzdWNjZXNzOworICAgIEZpbGVTeXN0
ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKFN0cmluZygibm90X2V4aXN0aW5nX2Zp
bGUiKSwgc3VjY2Vzcyk7CisgICAgRVhQRUNUX0ZBTFNFKHN1Y2Nlc3MpOworICAgIEVYUEVDVF9U
UlVFKCFtYXBwZWRGaWxlRGF0YSk7Cit9CisKK1RFU1RfRihGaWxlU3lzdGVtVGVzdCwgTWFwcGlu
Z0V4aXN0aW5nRmlsZSkKK3sKKyAgICBib29sIHN1Y2Nlc3M7CisgICAgRmlsZVN5c3RlbTo6TWFw
cGVkRmlsZURhdGEgbWFwcGVkRmlsZURhdGEodGVtcEZpbGVQYXRoKCksIHN1Y2Nlc3MpOworICAg
IEVYUEVDVF9UUlVFKHN1Y2Nlc3MpOworICAgIEVYUEVDVF9UUlVFKCEhbWFwcGVkRmlsZURhdGEp
OworICAgIEVYUEVDVF9UUlVFKG1hcHBlZEZpbGVEYXRhLnNpemUoKSA9PSBzdHJsZW4oRmlsZVN5
c3RlbVRlc3REYXRhKSk7CisgICAgRVhQRUNUX1RSVUUoc3RybnN0cihGaWxlU3lzdGVtVGVzdERh
dGEsIHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihtYXBwZWRGaWxlRGF0YS5kYXRhKCkpLCBtYXBw
ZWRGaWxlRGF0YS5zaXplKCkpKTsKK30KKworVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBNYXBwaW5n
RXhpc3RpbmdFbXB0eUZpbGUpCit7CisgICAgYm9vbCBzdWNjZXNzOworICAgIEZpbGVTeXN0ZW06
Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKHRlbXBFbXB0eUZpbGVQYXRoKCksIHN1Y2Nl
c3MpOworICAgIEVYUEVDVF9UUlVFKHN1Y2Nlc3MpOworICAgIEVYUEVDVF9UUlVFKCFtYXBwZWRG
aWxlRGF0YSk7Cit9CisKK1RFU1RfRihGaWxlU3lzdGVtVGVzdCwgRmlsZXNIYXZlU2FtZVZvbHVt
ZSkKK3sKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpmaWxlc0hhdmVTYW1lVm9sdW1lKHRl
bXBGaWxlUGF0aCgpLCBzcGFjZUNvbnRhaW5pbmdGaWxlUGF0aCgpKSk7CisgICAgRVhQRUNUX1RS
VUUoRmlsZVN5c3RlbTo6ZmlsZXNIYXZlU2FtZVZvbHVtZShzcGFjZUNvbnRhaW5pbmdGaWxlUGF0
aCgpLCBiYW5nQ29udGFpbmluZ0ZpbGVQYXRoKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lz
dGVtOjpmaWxlc0hhdmVTYW1lVm9sdW1lKGJhbmdDb250YWluaW5nRmlsZVBhdGgoKSwgcXVvdGVD
b250YWluaW5nRmlsZVBhdGgoKSkpOworfQorCitURVNUX0YoRmlsZVN5c3RlbVRlc3QsIEdldEZp
bGVNZXRhZGF0YVN5bWxpbmspCit7CisgICAgYXV0byBzeW1saW5rTWV0YWRhdGEgPSBGaWxlU3lz
dGVtOjpmaWxlTWV0YWRhdGEodGVtcEZpbGVTeW1saW5rUGF0aCgpKTsKKyAgICBBU1NFUlRfVFJV
RShzeW1saW5rTWV0YWRhdGEuaGFzVmFsdWUoKSk7CisgICAgRVhQRUNUX1RSVUUoc3ltbGlua01l
dGFkYXRhLnZhbHVlKCkudHlwZSA9PSBGaWxlTWV0YWRhdGE6OlR5cGU6OlN5bWJvbGljTGluayk7
CisgICAgRVhQRUNUX0ZBTFNFKHN0YXRpY19jYXN0PHNpemVfdD4oc3ltbGlua01ldGFkYXRhLnZh
bHVlKCkubGVuZ3RoKSA9PSBzdHJsZW4oRmlsZVN5c3RlbVRlc3REYXRhKSk7CisKKyAgICBhdXRv
IHRhcmdldE1ldGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlu
a3ModGVtcEZpbGVTeW1saW5rUGF0aCgpKTsKKyAgICBBU1NFUlRfVFJVRSh0YXJnZXRNZXRhZGF0
YS5oYXNWYWx1ZSgpKTsKKyAgICBFWFBFQ1RfVFJVRSh0YXJnZXRNZXRhZGF0YS52YWx1ZSgpLnR5
cGUgPT0gRmlsZU1ldGFkYXRhOjpUeXBlOjpGaWxlKTsKKyAgICBFWFBFQ1RfRVEoc3RybGVuKEZp
bGVTeXN0ZW1UZXN0RGF0YSksIHN0YXRpY19jYXN0PHNpemVfdD4odGFyZ2V0TWV0YWRhdGEudmFs
dWUoKS5sZW5ndGgpKTsKK30KKworVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBVbmljb2RlRGlyZWN0
b3J5TmFtZSkKK3sKKyAgICBTdHJpbmcgcGF0aCA9IFN0cmluZzo6ZnJvbVVURjgoIi90ZXN0L2Fc
dTAzMDhsby90ZXN0LnR4dCIpOworICAgIFN0cmluZyBkaXJlY3RvcnlOYW1lID0gRmlsZVN5c3Rl
bTo6ZGlyZWN0b3J5TmFtZShwYXRoKTsKKyAgICBTdHJpbmcgZXhwZWN0ZWREaXJlY3RvcnlOYW1l
ID0gU3RyaW5nOjpmcm9tVVRGOCgiL3Rlc3QvYVx1MDMwOGxvIik7CisgICAgRVhQRUNUX1RSVUUo
ZXhwZWN0ZWREaXJlY3RvcnlOYW1lID09IGRpcmVjdG9yeU5hbWUpOworfQorCit9CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZU1vbml0b3IuY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNwcAppbmRleCA1
ZjFkYzhiMmU0ZDUyNGQzNTI2ODA0YmQ2Y2Q5Y2U5OGEzNzExZmU4Li5lMDAyZGYxZWYwOTRmNWIz
ZjAwZDE2ZTljNmJlNmQ0OWQ1ZTZhZjI0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvRmlsZU1vbml0b3IuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRvci5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRl
ICJUZXN0LmgiCiAjaW5jbHVkZSAiV1RGU3RyaW5nVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9GaWxlTW9uaXRvci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgorI2lu
Y2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNp
bmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVTeXN0ZW0uY3BwIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVTeXN0ZW0uY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA3NjYyNTAyNTMwOTcyN2VhNjA1Y2I1MmNmYzllY2Q0YjMzZTc3
ODc1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlU3lzdGVtLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDE1MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lu
Y2x1ZGUgIlRlc3QuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVNZXRhZGF0YS5oPgotI2luY2x1
ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgotI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Ci0j
aW5jbHVkZSA8d3RmL1N0cmluZ0V4dHJhcy5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
LQotbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewotCi1jb25zdCBjaGFyKiBGaWxlU3lzdGVtVGVz
dERhdGEgPSAiVGhpcyBpcyBhIHRlc3QiOwotCi0vLyBGSVhNRTogUmVmYWN0b3IgRmlsZVN5c3Rl
bVRlc3QgYW5kIFNoYXJlZEJ1ZmZlclRlc3QgYXMgYSBzaW5nbGUgY2xhc3MuCi1jbGFzcyBGaWxl
U3lzdGVtVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLXB1YmxpYzoKLSAgICB2b2lkIFNl
dFVwKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWQo
KTsKLSAgICAgICAgCi0gICAgICAgIC8vIGNyZWF0ZSB0ZW1wIGZpbGUKLSAgICAgICAgRmlsZVN5
c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZTsKLSAgICAgICAgbV90ZW1wRmlsZVBhdGgg
PSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcFRlc3RGaWxlIiwgaGFuZGxlKTsK
LSAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoaGFuZGxlLCBGaWxlU3lzdGVtVGVzdERh
dGEsIHN0cmxlbihGaWxlU3lzdGVtVGVzdERhdGEpKTsKLSAgICAgICAgRmlsZVN5c3RlbTo6Y2xv
c2VGaWxlKGhhbmRsZSk7Ci0KLSAgICAgICAgbV90ZW1wRmlsZVN5bWxpbmtQYXRoID0gbV90ZW1w
RmlsZVBhdGggKyAiLXN5bWxpbmsiOwotICAgICAgICBGaWxlU3lzdGVtOjpjcmVhdGVTeW1ib2xp
Y0xpbmsobV90ZW1wRmlsZVBhdGgsIG1fdGVtcEZpbGVTeW1saW5rUGF0aCk7Ci0KLSAgICAgICAg
bV90ZW1wRW1wdHlGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1w
RW1wdHlUZXN0RmlsZSIsIGhhbmRsZSk7Ci0gICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZSho
YW5kbGUpOwotCi0gICAgICAgIG1fc3BhY2VDb250YWluaW5nRmlsZVBhdGggPSBGaWxlU3lzdGVt
OjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcCBFbXB0eSBUZXN0IEZpbGUiLCBoYW5kbGUpOwotICAg
ICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKLQotICAgICAgICBtX2JhbmdDb250
YWluaW5nRmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcCFFbXB0
eSFUZXN0IUZpbGUiLCBoYW5kbGUpOwotICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFu
ZGxlKTsKLQotICAgICAgICBtX3F1b3RlQ29udGFpbmluZ0ZpbGVQYXRoID0gRmlsZVN5c3RlbTo6
b3BlblRlbXBvcmFyeUZpbGUoInRlbXBcIkVtcHR5XCJUZXN0RmlsZSIsIGhhbmRsZSk7Ci0gICAg
ICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUpOwotICAgIH0KLQotICAgIHZvaWQgVGVh
ckRvd24oKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZSht
X3RlbXBGaWxlUGF0aCk7Ci0gICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV90ZW1wRmls
ZVN5bWxpbmtQYXRoKTsKLSAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX3RlbXBFbXB0
eUZpbGVQYXRoKTsKLSAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX3NwYWNlQ29udGFp
bmluZ0ZpbGVQYXRoKTsKLSAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX2JhbmdDb250
YWluaW5nRmlsZVBhdGgpOwotICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fcXVvdGVD
b250YWluaW5nRmlsZVBhdGgpOwotICAgIH0KLQotICAgIGNvbnN0IFN0cmluZyYgdGVtcEZpbGVQ
YXRoKCkgeyByZXR1cm4gbV90ZW1wRmlsZVBhdGg7IH0KLSAgICBjb25zdCBTdHJpbmcmIHRlbXBG
aWxlU3ltbGlua1BhdGgoKSB7IHJldHVybiBtX3RlbXBGaWxlU3ltbGlua1BhdGg7IH0KLSAgICBj
b25zdCBTdHJpbmcmIHRlbXBFbXB0eUZpbGVQYXRoKCkgeyByZXR1cm4gbV90ZW1wRW1wdHlGaWxl
UGF0aDsgfQotICAgIGNvbnN0IFN0cmluZyYgc3BhY2VDb250YWluaW5nRmlsZVBhdGgoKSB7IHJl
dHVybiBtX3NwYWNlQ29udGFpbmluZ0ZpbGVQYXRoOyB9Ci0gICAgY29uc3QgU3RyaW5nJiBiYW5n
Q29udGFpbmluZ0ZpbGVQYXRoKCkgeyByZXR1cm4gbV9iYW5nQ29udGFpbmluZ0ZpbGVQYXRoOyB9
Ci0gICAgY29uc3QgU3RyaW5nJiBxdW90ZUNvbnRhaW5pbmdGaWxlUGF0aCgpIHsgcmV0dXJuIG1f
cXVvdGVDb250YWluaW5nRmlsZVBhdGg7IH0KLQotcHJpdmF0ZToKLSAgICBTdHJpbmcgbV90ZW1w
RmlsZVBhdGg7Ci0gICAgU3RyaW5nIG1fdGVtcEZpbGVTeW1saW5rUGF0aDsKLSAgICBTdHJpbmcg
bV90ZW1wRW1wdHlGaWxlUGF0aDsKLSAgICBTdHJpbmcgbV9zcGFjZUNvbnRhaW5pbmdGaWxlUGF0
aDsKLSAgICBTdHJpbmcgbV9iYW5nQ29udGFpbmluZ0ZpbGVQYXRoOwotICAgIFN0cmluZyBtX3F1
b3RlQ29udGFpbmluZ0ZpbGVQYXRoOwotfTsKLQotVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBNYXBw
aW5nTWlzc2luZ0ZpbGUpCi17Ci0gICAgYm9vbCBzdWNjZXNzOwotICAgIEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKFN0cmluZygibm90X2V4aXN0aW5nX2ZpbGUiKSwg
c3VjY2Vzcyk7Ci0gICAgRVhQRUNUX0ZBTFNFKHN1Y2Nlc3MpOwotICAgIEVYUEVDVF9UUlVFKCFt
YXBwZWRGaWxlRGF0YSk7Ci19Ci0KLVRFU1RfRihGaWxlU3lzdGVtVGVzdCwgTWFwcGluZ0V4aXN0
aW5nRmlsZSkKLXsKLSAgICBib29sIHN1Y2Nlc3M7Ci0gICAgRmlsZVN5c3RlbTo6TWFwcGVkRmls
ZURhdGEgbWFwcGVkRmlsZURhdGEodGVtcEZpbGVQYXRoKCksIHN1Y2Nlc3MpOwotICAgIEVYUEVD
VF9UUlVFKHN1Y2Nlc3MpOwotICAgIEVYUEVDVF9UUlVFKCEhbWFwcGVkRmlsZURhdGEpOwotICAg
IEVYUEVDVF9UUlVFKG1hcHBlZEZpbGVEYXRhLnNpemUoKSA9PSBzdHJsZW4oRmlsZVN5c3RlbVRl
c3REYXRhKSk7Ci0gICAgRVhQRUNUX1RSVUUoc3RybnN0cihGaWxlU3lzdGVtVGVzdERhdGEsIHN0
YXRpY19jYXN0PGNvbnN0IGNoYXIqPihtYXBwZWRGaWxlRGF0YS5kYXRhKCkpLCBtYXBwZWRGaWxl
RGF0YS5zaXplKCkpKTsKLX0KLQotVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBNYXBwaW5nRXhpc3Rp
bmdFbXB0eUZpbGUpCi17Ci0gICAgYm9vbCBzdWNjZXNzOwotICAgIEZpbGVTeXN0ZW06Ok1hcHBl
ZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKHRlbXBFbXB0eUZpbGVQYXRoKCksIHN1Y2Nlc3MpOwot
ICAgIEVYUEVDVF9UUlVFKHN1Y2Nlc3MpOwotICAgIEVYUEVDVF9UUlVFKCFtYXBwZWRGaWxlRGF0
YSk7Ci19Ci0KLVRFU1RfRihGaWxlU3lzdGVtVGVzdCwgRmlsZXNIYXZlU2FtZVZvbHVtZSkKLXsK
LSAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpmaWxlc0hhdmVTYW1lVm9sdW1lKHRlbXBGaWxl
UGF0aCgpLCBzcGFjZUNvbnRhaW5pbmdGaWxlUGF0aCgpKSk7Ci0gICAgRVhQRUNUX1RSVUUoRmls
ZVN5c3RlbTo6ZmlsZXNIYXZlU2FtZVZvbHVtZShzcGFjZUNvbnRhaW5pbmdGaWxlUGF0aCgpLCBi
YW5nQ29udGFpbmluZ0ZpbGVQYXRoKCkpKTsKLSAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpm
aWxlc0hhdmVTYW1lVm9sdW1lKGJhbmdDb250YWluaW5nRmlsZVBhdGgoKSwgcXVvdGVDb250YWlu
aW5nRmlsZVBhdGgoKSkpOwotfQotCi1URVNUX0YoRmlsZVN5c3RlbVRlc3QsIEdldEZpbGVNZXRh
ZGF0YVN5bWxpbmspCi17Ci0gICAgYXV0byBzeW1saW5rTWV0YWRhdGEgPSBGaWxlU3lzdGVtOjpm
aWxlTWV0YWRhdGEodGVtcEZpbGVTeW1saW5rUGF0aCgpKTsKLSAgICBBU1NFUlRfVFJVRShzeW1s
aW5rTWV0YWRhdGEuaGFzVmFsdWUoKSk7Ci0gICAgRVhQRUNUX1RSVUUoc3ltbGlua01ldGFkYXRh
LnZhbHVlKCkudHlwZSA9PSBGaWxlTWV0YWRhdGE6OlR5cGU6OlN5bWJvbGljTGluayk7Ci0gICAg
RVhQRUNUX0ZBTFNFKHN0YXRpY19jYXN0PHNpemVfdD4oc3ltbGlua01ldGFkYXRhLnZhbHVlKCku
bGVuZ3RoKSA9PSBzdHJsZW4oRmlsZVN5c3RlbVRlc3REYXRhKSk7Ci0KLSAgICBhdXRvIHRhcmdl
dE1ldGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3ModGVt
cEZpbGVTeW1saW5rUGF0aCgpKTsKLSAgICBBU1NFUlRfVFJVRSh0YXJnZXRNZXRhZGF0YS5oYXNW
YWx1ZSgpKTsKLSAgICBFWFBFQ1RfVFJVRSh0YXJnZXRNZXRhZGF0YS52YWx1ZSgpLnR5cGUgPT0g
RmlsZU1ldGFkYXRhOjpUeXBlOjpGaWxlKTsKLSAgICBFWFBFQ1RfRVEoc3RybGVuKEZpbGVTeXN0
ZW1UZXN0RGF0YSksIHN0YXRpY19jYXN0PHNpemVfdD4odGFyZ2V0TWV0YWRhdGEudmFsdWUoKS5s
ZW5ndGgpKTsKLX0KLQotVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBVbmljb2RlRGlyZWN0b3J5TmFt
ZSkKLXsKLSAgICBTdHJpbmcgcGF0aCA9IFN0cmluZzo6ZnJvbVVURjgoIi90ZXN0L2FcdTAzMDhs
by90ZXN0LnR4dCIpOwotICAgIFN0cmluZyBkaXJlY3RvcnlOYW1lID0gRmlsZVN5c3RlbTo6ZGly
ZWN0b3J5TmFtZShwYXRoKTsKLSAgICBTdHJpbmcgZXhwZWN0ZWREaXJlY3RvcnlOYW1lID0gU3Ry
aW5nOjpmcm9tVVRGOCgiL3Rlc3QvYVx1MDMwOGxvIik7Ci0gICAgRVhQRUNUX1RSVUUoZXhwZWN0
ZWREaXJlY3RvcnlOYW1lID09IGRpcmVjdG9yeU5hbWUpOwotfQotCi19CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2VjdXJpdHlPcmlnaW4uY3BwIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmNwcAppbmRleCBk
YTVmNGZmNTg5OGE5ZjA5YzhiODM5NWE1NWRlNzM4ZjE2OGM5MDlmLi5hNDFhYjRiY2EzNzFkNDVk
ZThjYjQ1ODY4NWJjOTc0ZTMwZjQwNmYzIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvU2VjdXJpdHlPcmlnaW4uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9TZWN1cml0eU9yaWdpbi5jcHAKQEAgLTI2LDggKzI2LDggQEAKIAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldURlN0cmluZ1V0aWxpdGllcy5oIgotI2lu
Y2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlP
cmlnaW4uaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9NYWlu
VGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5jcHAgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5jcHAKaW5kZXggOGZlMzU2
N2MxZTExMzY5MWQ4NWI3YzU1YTFmOTY2NTlkZTlkMWYyNC4uOWI4YjEzYTc1ZDUyZmY5NTFlYWQx
ODE4NWQ1NmMzNzkxYjJkN2JlZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmNwcApAQCAtMjYsMTEgKzI2LDkgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXJUZXN0LmgiCiAKLSNpbmNs
dWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgog
I2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwot
CiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIHZvaWQgU2hhcmVkQnVmZmVyVGVzdDo6U2V0
VXAoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29h
L0RhdGFiYXNlVHJhY2tlclRlc3QubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvY29jb2EvRGF0YWJhc2VUcmFja2VyVGVzdC5tbQppbmRleCA2YTNjNzAyODBhNGVkZTAwOTEw
MmVlOTk3NmIzNjdjMjZhYjdmZWU3Li4yMjE3MTU2ZjZlNTY5MTVhNzVkNDQ4ODRlYWQ1MTcxOWE3
YzUyOTExIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29j
b2EvRGF0YWJhc2VUcmFja2VyVGVzdC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvY29jb2EvRGF0YWJhc2VUcmFja2VyVGVzdC5tbQpAQCAtMjYsMTEgKzI2LDExIEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpbmNsdWRlIDxXZWJDb3JlL0RhdGFiYXNlVHJhY2tl
ci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
T3JpZ2luTG9jay5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlRGF0YWJhc2UuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1NRTGl0ZVN0YXRlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJp
dHlPcmlnaW5EYXRhLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9jdXJsL0Nvb2tpZXMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL2N1cmwvQ29va2llcy5jcHAKaW5kZXggMWI4ZDdmYzNjZGU1MDI5OWUzMGFkNmM2ZDhjYTE2
MjdmMjM5MGMxZi4uYjQwYjBkNWEwYTVlNWZiNWY0OTE5YTNkYTJjMmZlZDZmY2JjMWM0ZSAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2N1cmwvQ29va2llcy5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2N1cmwvQ29va2llcy5j
cHAKQEAgLTI5LDggKzI5LDggQEAKIAogI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llSmFyREIuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZVV0aWwuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVT
eXN0ZW0uaD4KICNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4K
IAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tCmluZGV4IDYwY2M5M2IzNDBkZDY4MDk0MWM0
MWEyYTVhYTBiYTkyM2I1YWVjNjQuLjY4MWIwMmNhOWM4N2RhZWMzNzI2MjI0NjE3ZDFjNTkyMDg4
ZDdhNmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
RG93bmxvYWQubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9E
b3dubG9hZC5tbQpAQCAtMzMsNyArMzMsNiBAQAogI2ltcG9ydCAiVGVzdC5oIgogI2ltcG9ydCAi
VGVzdFByb3RvY29sLmgiCiAjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCi0jaW1wb3J0IDxXZWJD
b3JlL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPFdlYktpdC9fV0tEb3dubG9hZC5oPgogI2ltcG9y
dCA8V2ViS2l0L19XS0Rvd25sb2FkRGVsZWdhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS05hdmln
YXRpb25EZWxlZ2F0ZVByaXZhdGUuaD4KQEAgLTQxLDYgKzQwLDcgQEAKICNpbXBvcnQgPFdlYktp
dC9XS1VJRGVsZWdhdGVQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Lmg+CiAj
aW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5oPgorI2ltcG9ydCA8d3RmL0Zp
bGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW1wb3J0IDx3dGYvUmV0
YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTk0LDEwICs5NCwx
MCBAQCBJR05PUkVfV0FSTklOR1NfRU5ECiAgICAgRVhQRUNUX1RSVUUoaGFzUmVjZWl2ZWRSZXNw
b25zZSk7CiAgICAgRVhQRUNUX0VRKF9kb3dubG9hZCwgZG93bmxvYWQpOwogCi0gICAgV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGVIYW5kbGU7Ci0gICAgX2Rlc3Rp
bmF0aW9uUGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJUZXN0
V2ViS2l0QVBJIiwgZmlsZUhhbmRsZSk7Ci0gICAgRVhQRUNUX1RSVUUoZmlsZUhhbmRsZSAhPSBX
ZWJDb3JlOjpGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKTsKLSAgICBXZWJD
b3JlOjpGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CisgICAgRmlsZVN5c3RlbTo6
UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGVIYW5kbGU7CisgICAgX2Rlc3RpbmF0aW9uUGF0aCA9IEZp
bGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJUZXN0V2ViS2l0QVBJIiwgZmlsZUhhbmRsZSk7
CisgICAgRVhQRUNUX1RSVUUoZmlsZUhhbmRsZSAhPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZv
cm1GaWxlSGFuZGxlKTsKKyAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CiAK
ICAgICAqYWxsb3dPdmVyd3JpdGUgPSBZRVM7CiAgICAgcmV0dXJuIF9kZXN0aW5hdGlvblBhdGg7
CkBAIC0xMDksNyArMTA5LDcgQEAgLSAodm9pZClfZG93bmxvYWREaWRGaW5pc2g6KF9XS0Rvd25s
b2FkICopZG93bmxvYWQKICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRVc2VySW5pdGlhdGVkU3RhdGUs
IGRvd25sb2FkLndhc1VzZXJJbml0aWF0ZWQpOwogICAgIEVYUEVDVF9UUlVFKF9leHBlY3RlZENv
bnRlbnRMZW5ndGggPT0gTlNVUkxSZXNwb25zZVVua25vd25MZW5ndGggfHwgc3RhdGljX2Nhc3Q8
dWludDY0X3Q+KF9leHBlY3RlZENvbnRlbnRMZW5ndGgpID09IF9yZWNlaXZlZENvbnRlbnRMZW5n
dGgpOwogICAgIEVYUEVDVF9UUlVFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY29u
dGVudHNFcXVhbEF0UGF0aDpfZGVzdGluYXRpb25QYXRoIGFuZFBhdGg6W3NvdXJjZVVSTCBwYXRo
XV0pOwotICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoX2Rlc3RpbmF0aW9uUGF0
aCk7CisgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShfZGVzdGluYXRpb25QYXRoKTsKICAgICBp
c0RvbmUgPSB0cnVlOwogfQogCkBAIC0zOTcsMTAgKzM5NywxMCBAQCBJR05PUkVfV0FSTklOR1Nf
RU5ECiAgICAgRVhQRUNUX1RSVUUoaGFzUmVjZWl2ZWRSZXNwb25zZSk7CiAgICAgRVhQRUNUX0VR
KF9kb3dubG9hZCwgZG93bmxvYWQpOwogCi0gICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6UGxhdGZv
cm1GaWxlSGFuZGxlIGZpbGVIYW5kbGU7Ci0gICAgX2Rlc3RpbmF0aW9uUGF0aCA9IFdlYkNvcmU6
OkZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJUZXN0V2ViS2l0QVBJIiwgZmlsZUhhbmRs
ZSk7Ci0gICAgRVhQRUNUX1RSVUUoZmlsZUhhbmRsZSAhPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpp
bnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKTsKLSAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpjbG9z
ZUZpbGUoZmlsZUhhbmRsZSk7CisgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZp
bGVIYW5kbGU7CisgICAgX2Rlc3RpbmF0aW9uUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3Jh
cnlGaWxlKCJUZXN0V2ViS2l0QVBJIiwgZmlsZUhhbmRsZSk7CisgICAgRVhQRUNUX1RSVUUoZmls
ZUhhbmRsZSAhPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKTsKKyAgICBG
aWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CiAKICAgICAqYWxsb3dPdmVyd3JpdGUg
PSBZRVM7CiAgICAgcmV0dXJuIF9kZXN0aW5hdGlvblBhdGg7CkBAIC00MTQsNyArNDE0LDcgQEAg
LSAodm9pZClfZG93bmxvYWREaWRGaW5pc2g6KF9XS0Rvd25sb2FkICopZG93bmxvYWQKICAgICBO
U1N0cmluZyogZXhwZWN0ZWRDb250ZW50ID0gQCJ7XCJ4XCI6NDIsXCJzXCI6XCJoZWxsbywgd29y
bGRcIn0iOwogICAgIE5TRGF0YSogZXhwZWN0ZWREYXRhID0gW2V4cGVjdGVkQ29udGVudCBkYXRh
VXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107CiAgICAgRVhQRUNUX1RSVUUoW1tb
TlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY29udGVudHNBdFBhdGg6X2Rlc3RpbmF0aW9u
UGF0aF0gaXNFcXVhbFRvRGF0YTpleHBlY3RlZERhdGFdKTsKLSAgICBXZWJDb3JlOjpGaWxlU3lz
dGVtOjpkZWxldGVGaWxlKF9kZXN0aW5hdGlvblBhdGgpOworICAgIEZpbGVTeXN0ZW06OmRlbGV0
ZUZpbGUoX2Rlc3RpbmF0aW9uUGF0aCk7CiAgICAgaXNEb25lID0gdHJ1ZTsKIH0KIApAQCAtNDU3
LDEwICs0NTcsMTAgQEAgSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJkZXByZWNhdGVkLWltcGxlbWVu
dGF0aW9ucyIpCiAtIChOU1N0cmluZyAqKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9h
ZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTooTlNTdHJpbmcgKilmaWxl
bmFtZSBhbGxvd092ZXJ3cml0ZTooQk9PTCAqKWFsbG93T3ZlcndyaXRlCiBJR05PUkVfV0FSTklO
R1NfRU5ECiB7Ci0gICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZp
bGVIYW5kbGU7Ci0gICAgX2Rlc3RpbmF0aW9uUGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06Om9w
ZW5UZW1wb3JhcnlGaWxlKCJUZXN0V2ViS2l0QVBJIiwgZmlsZUhhbmRsZSk7Ci0gICAgRVhQRUNU
X1RSVUUoZmlsZUhhbmRsZSAhPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1G
aWxlSGFuZGxlKTsKLSAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRs
ZSk7CisgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGVIYW5kbGU7CisgICAg
X2Rlc3RpbmF0aW9uUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJUZXN0V2Vi
S2l0QVBJIiwgZmlsZUhhbmRsZSk7CisgICAgRVhQRUNUX1RSVUUoZmlsZUhhbmRsZSAhPSBGaWxl
U3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKTsKKyAgICBGaWxlU3lzdGVtOjpjbG9z
ZUZpbGUoZmlsZUhhbmRsZSk7CiAgICAgKmFsbG93T3ZlcndyaXRlID0gWUVTOwogICAgIHJldHVy
biBfZGVzdGluYXRpb25QYXRoOwogfQpAQCAtNDg3LDcgKzQ4Nyw3IEBAIC0gKHZvaWQpX2Rvd25s
b2FkRGlkRmluaXNoOihfV0tEb3dubG9hZCAqKWRvd25sb2FkCiAgICAgaWYgKHJlZGlyZWN0Q2hh
aW4uY291bnQgPiAyKQogICAgICAgICBFWFBFQ1RfU1RSRVEoImh0dHA6Ly9wYXNzLyIsIFtyZWRp
cmVjdENoYWluWzJdLmFic29sdXRlU3RyaW5nIFVURjhTdHJpbmddKTsKIAotICAgIFdlYkNvcmU6
OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoX2Rlc3RpbmF0aW9uUGF0aCk7CisgICAgRmlsZVN5c3Rl
bTo6ZGVsZXRlRmlsZShfZGVzdGluYXRpb25QYXRoKTsKICAgICBpc0RvbmUgPSB0cnVlOwogfQog
CkBAIC02MzIsMTcgKzYzMiwxNyBAQCAtICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilk
b3dubG9hZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZQogewogICAgIEVY
UEVDVF9UUlVFKFtmaWxlbmFtZSBoYXNTdWZmaXg6QCIudXNkeiJdKTsKIAotICAgIFdlYkNvcmU6
OkZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlSGFuZGxlOwotICAgIF9kZXN0aW5h
dGlvblBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZShmaWxlbmFt
ZSwgZmlsZUhhbmRsZSk7Ci0gICAgRVhQRUNUX1RSVUUoZmlsZUhhbmRsZSAhPSBXZWJDb3JlOjpG
aWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKTsKLSAgICBXZWJDb3JlOjpGaWxl
U3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CisgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1G
aWxlSGFuZGxlIGZpbGVIYW5kbGU7CisgICAgX2Rlc3RpbmF0aW9uUGF0aCA9IEZpbGVTeXN0ZW06
Om9wZW5UZW1wb3JhcnlGaWxlKGZpbGVuYW1lLCBmaWxlSGFuZGxlKTsKKyAgICBFWFBFQ1RfVFJV
RShmaWxlSGFuZGxlICE9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpOwor
ICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsKIAogICAgIGNvbXBsZXRpb25I
YW5kbGVyKFlFUywgX2Rlc3RpbmF0aW9uUGF0aCk7CiB9CiAKIC0gKHZvaWQpX2Rvd25sb2FkRGlk
RmluaXNoOihfV0tEb3dubG9hZCAqKWRvd25sb2FkCiB7Ci0gICAgV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6ZGVsZXRlRmlsZShfZGVzdGluYXRpb25QYXRoKTsKKyAgICBGaWxlU3lzdGVtOjpkZWxldGVG
aWxlKF9kZXN0aW5hdGlvblBhdGgpOwogICAgIGlzRG9uZSA9IHRydWU7CiB9CiAKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWRQcm9ncmVz
cy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWRQcm9n
cmVzcy5tbQppbmRleCBmNTYwZGYzZjRjNDJlMjRlNjViM2JmNjI4NzFiNWZhZGMxOWE1ZjY1Li4z
ZWIwM2YwNGExZGQ4YThlMTc2NzgzZDVlZmZkNDgzNDdhOTBkYTAwIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkUHJvZ3Jlc3MubW0KKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZFByb2dyZXNz
Lm1tCkBAIC0yOCw3ICsyOCw2IEBACiAjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCiAjaW1wb3J0
ICJVdGlsaXRpZXMuaCIKICNpbXBvcnQgPEZvdW5kYXRpb24vTlNQcm9ncmVzcy5oPgotI2ltcG9y
dCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tCcm93c2luZ0NvbnRl
eHRDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2
YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tQcm9jZXNzUG9vbFByaXZhdGUuaD4KQEAgLTM3LDYg
KzM2LDcgQEAKICNpbXBvcnQgPFdlYktpdC9fV0tEb3dubG9hZERlbGVnYXRlLmg+CiAjaW1wb3J0
IDxwYWwvc3BpL2NvY29hL05TUHJvZ3Jlc3NTUEkuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5o
PgorI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4K
ICNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPgogCkBAIC0zODAsMTAgKzM4MCwxMCBAQCAtICh2
b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkZWNpZGVEZXN0aW5hdGlvbldp
dGhTdWdnZXN0ZWRGaWxlbmFtZQogewogICAgIEVYUEVDVF9FUShkb3dubG9hZCwgbV9kb3dubG9h
ZC5nZXQoKSk7CiAKLSAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUg
ZmlsZUhhbmRsZTsKLSAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IHBhdGggPSAoTlNTdHJpbmcgKilX
ZWJDb3JlOjpGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiVGVzdFdlYktpdEFQSSIsIGZp
bGVIYW5kbGUpOwotICAgIEVYUEVDVF9UUlVFKGZpbGVIYW5kbGUgIT0gV2ViQ29yZTo6RmlsZVN5
c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7Ci0gICAgV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOworICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhh
bmRsZSBmaWxlSGFuZGxlOworICAgIFJldGFpblB0cjxOU1N0cmluZz4gcGF0aCA9IChOU1N0cmlu
ZyAqKUZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJUZXN0V2ViS2l0QVBJIiwgZmlsZUhh
bmRsZSk7CisgICAgRVhQRUNUX1RSVUUoZmlsZUhhbmRsZSAhPSBGaWxlU3lzdGVtOjppbnZhbGlk
UGxhdGZvcm1GaWxlSGFuZGxlKTsKKyAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRs
ZSk7CiAKICAgICBjb21wbGV0aW9uSGFuZGxlcihZRVMsIHBhdGguZ2V0KCkpOwogfQpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS93aW4vUGxhdGZvcm1VdGlsaXRpZXNXaW4uY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS93aW4vUGxhdGZvcm1VdGlsaXRpZXNXaW4uY3BwCmluZGV4IDA1
NmJmZjc3ODI5NTI4YjEyOTBmMTJlMzlhYjIzOGIwZjY4NjhiODYuLjM1ZjIyZTJhOGIxYmZlNTBh
NDcwNTkwOTE4MzQ3MjM2NzlhM2Q3ZmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
d2luL1BsYXRmb3JtVXRpbGl0aWVzV2luLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL3dp
bi9QbGF0Zm9ybVV0aWxpdGllc1dpbi5jcHAKQEAgLTI3LDcgKzI3LDcgQEAKICNpbmNsdWRlICJQ
bGF0Zm9ybVV0aWxpdGllcy5oIgogCiAjaW5jbHVkZSA8U2hsd2FwaS5oPgotI2luY2x1ZGUgPFdl
YkNvcmUvRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVk
ZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5o
PgogCkBAIC00MCwxOSArNDAsMTkgQEAgc3RhdGljIFN0cmluZyBtb2R1bGVEaXJlY3RvcnkoKQog
ICAgIHdjaGFyX3QgZmlsZW5hbWVbYnVmZmVyTGVuZ3RoXTsKICAgICBhdXRvIGxlbiA9IEdldE1v
ZHVsZUZpbGVOYW1lKG51bGxwdHIsIGZpbGVuYW1lLCBidWZmZXJMZW5ndGgpOwogICAgIEFTU0VS
VChsZW4gPiAwKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFt
ZSh3Y2hhclRvU3RyaW5nKGZpbGVuYW1lLCBsZW4pKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6
ZGlyZWN0b3J5TmFtZSh3Y2hhclRvU3RyaW5nKGZpbGVuYW1lLCBsZW4pKTsKIH0KIAogV0tTdHJp
bmdSZWYgY3JlYXRlSW5qZWN0ZWRCdW5kbGVQYXRoKCkKIHsKLSAgICBhdXRvIHBhdGggPSBXZWJD
b3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobW9kdWxlRGlyZWN0b3J5
KCksIFN0cmluZyhMIlRlc3RXZWJLaXRBUElJbmplY3RlZEJ1bmRsZS5kbGwiKSk7CisgICAgYXV0
byBwYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1vZHVsZURpcmVj
dG9yeSgpLCBTdHJpbmcoTCJUZXN0V2ViS2l0QVBJSW5qZWN0ZWRCdW5kbGUuZGxsIikpOwogICAg
IHJldHVybiBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhwYXRoLnV0ZjgoKS5kYXRhKCkp
OwogfQogCiBXS1VSTFJlZiBjcmVhdGVVUkxGb3JSZXNvdXJjZShjb25zdCBjaGFyKiByZXNvdXJj
ZSwgY29uc3QgY2hhciogZXh0ZW5zaW9uKQogewogICAgIFN0cmluZyBmaWxlbmFtZSA9IFN0cmlu
Zzo6Zm9ybWF0KCIuLlxcLi5cXC4uXFxUb29sc1xcVGVzdFdlYktpdEFQSVxcVGVzdHNcXFdlYktp
dFxcJXMuJXMiLCByZXNvdXJjZSwgZXh0ZW5zaW9uKTsKLSAgICBhdXRvIHVybCA9IFVSTDo6Zmls
ZVVSTFdpdGhGaWxlU3lzdGVtUGF0aChXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQobW9kdWxlRGlyZWN0b3J5KCksIGZpbGVuYW1lKSk7CisgICAgYXV0byB1cmwg
PSBVUkw6OmZpbGVVUkxXaXRoRmlsZVN5c3RlbVBhdGgoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KG1vZHVsZURpcmVjdG9yeSgpLCBmaWxlbmFtZSkpOwogICAgIHJldHVybiBX
S1VSTENyZWF0ZVdpdGhVVEY4Q1N0cmluZyh1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiB9
CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359862</attachid>
            <date>2019-01-23 02:09:17 -0800</date>
            <delta_ts>2019-01-23 11:34:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193602-20190123190916.patch</filename>
            <type>text/plain</type>
            <size>436945</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwMzI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDE3YjJmOWRmY2FmNDM2MGJmOWZlMjQ2
ZDQ4ZmFkYmNmNTIyYTUwZjcuLjJhNDg5ZDUzM2JjOGYwN2MzMWQ3ZjUxMzhjZjQyMGYxYWFiZjUy
NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTktMDEtMjMgIFJvc3MgS2lyc2xpbmcgIDxyb3Nz
LmtpcnNsaW5nQHNvbnkuY29tPgorCisgICAgICAgIE1vdmUgRmlsZVN5c3RlbSB0byBXVEYKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzYwMgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV1RGLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0OgorICAg
ICAgICAqIHd0Zi9GaWxlTWV0YWRhdGEuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0ZpbGVNZXRhZGF0YS5oLgorICAgICAgICAqIHd0Zi9GaWxlU3lzdGVtLmNwcDogUmVu
YW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwLgorICAgICAg
ICAqIHd0Zi9GaWxlU3lzdGVtLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9GaWxlU3lzdGVtLmguCisgICAgICAgICogd3RmL1BsYXRmb3JtR1RLLmNtYWtlOgorICAgICAg
ICAqIHd0Zi9QbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1QbGF5U3Rh
dGlvbi5jbWFrZToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1XUEUuY21ha2U6CisgICAgICAgICog
d3RmL1BsYXRmb3JtV2luLmNtYWtlOgorICAgICAgICAqIHd0Zi9jZi9GaWxlU3lzdGVtQ0YuY3Bw
OiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvRmlsZVN5c3RlbUNGLmNw
cC4KKyAgICAgICAgKiB3dGYvY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tOiBSZW5hbWVkIGZyb20g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tLgorICAgICAg
ICAqIHd0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwLgorICAgICAgICAqIHd0Zi9tYWMv
RmlsZVN5c3RlbU1hYy5tbTogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9GaWxlU3lzdGVtTWFjLm1tLgorICAgICAgICAqIHd0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVgu
Y3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3Rl
bVBPU0lYLmNwcC4KKyAgICAgICAgKiB3dGYvc3BpL21hYy9NZXRhZGF0YVNQSS5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvbWFjL01ldGFkYXRhU1BJLmguCisgICAg
ICAgICogd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2luLmNwcC4KKyAgICAgICAgKiB3dGYvd2luL1Bh
dGhXYWxrZXIuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bh
dGhXYWxrZXIuY3BwLgorICAgICAgICAqIHd0Zi93aW4vUGF0aFdhbGtlci5oOiBSZW5hbWVkIGZy
b20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BhdGhXYWxrZXIuaC4KKwogMjAxOS0wMS0y
MiAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNvbT4KIAogICAgICAgICBDYWNoZSBi
eXRlY29kZSB0byBkaXNrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTdlMGQ2NDlhNTkwMzUwNTBmY2ZkYzcxMGE3
YzNiOGZkMWFhNjc4NC4uODNhYmRkYWRhZWE4MWFkNTk1ZWQ2NGE4MGJjNmYxZWRkYmE3MzJjYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDgxIEBACisyMDE5LTAxLTIzICBSb3NzIEtpcnNsaW5nICA8
cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KKworICAgICAgICBNb3ZlIEZpbGVTeXN0ZW0gdG8gV1RG
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM2MDIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNlc3Npb24uY3BwOgorICAgICAgICAqIE1vZHVsZXMv
ZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2VudHJpZXNh
cGkvRmlsZVN5c3RlbUVudHJ5LmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZUlkZW50aWZpZXIuY3BwOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5jcHA6CisgICAgICAgICogTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0
YWJhc2UvT3JpZ2luTG9jay5jcHA6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9Pcmln
aW5Mb2NrLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9jb2NvYS9EYXRhYmFzZU1h
bmFnZXJDb2NvYS5tbToKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiBQ
bGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtV2luLmNtYWtlOgor
ICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0dDQ29udHJvbGxlci5jcHA6CisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlckl0ZW0u
Y3BwOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tOgor
ICAgICAgICAqIGZpbGVhcGkvRmlsZS5jcHA6CisgICAgICAgICogZmlsZWFwaS9GaWxlQ29jb2Eu
bW06CisgICAgICAgICogaHRtbC9GaWxlSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKiBodG1sL0Zp
bGVMaXN0Q3JlYXRvci5jcHA6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVIb3N0LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2UuY3BwOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgICogcGFnZS9T
ZWN1cml0eU9yaWdpbi5jcHA6CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL0ZpbGVIYW5kbGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9G
aWxlU3RyZWFtLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlU3RyZWFtLmg6CisgICAgICAg
ICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vU291cmNlc0dM
aWIudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL0ZpbGVNb25pdG9yQ29jb2EubW06Cisg
ICAgICAgICogcGxhdGZvcm0vZ2xpYi9GaWxlTW9uaXRvckdMaWIuY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW06
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lv
bkFWU3RyZWFtU2Vzc2lvbi5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLm1tOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mv
UXVpY2tMb29rLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0
ZWJvYXJkLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9C
bG9iUmVnaXN0cnlJbXBsLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNv
dXJjZUhhbmRsZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1t
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5Lmg6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRm9ybURhdGFTdHJlYW0uaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9tYWMvQmxvYkRhdGFGaWxlUmVmZXJlbmNlTWFjLm1tOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9z
cWwvU1FMaXRlRmlsZVN5c3RlbS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9oeXBoZW4v
SHlwaGVuYXRpb25MaWJIeXBoZW4uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TZWFyY2hQ
b3B1cE1lbnVEQi5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsuY3BwOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJUaGVtZVdpbi5jcHA6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9S
ZWdpc3RyYXRpb25EYXRhYmFzZS5jcHA6CisKIDIwMTktMDEtMjIgIFdlbnNvbiBIc2llaCAgPHdl
bnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgSW50cm9kdWNlIEN1c3RvbVVuZG9TdGVw
LmggYW5kIEN1c3RvbVVuZG9TdGVwLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFM
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXggMzlkODRjZmI3
MmI0ZTQyNWJkOTczYzk3YjQ2ODg5YWY1YWFkNTkyNS4uNTkzODE5NWUyYmVmMTNjMWI1NDU4Yzdi
ZWYyMDAzNzlmYTM3ZGQ5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIw
MTktMDEtMjMgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgorCisgICAg
ICAgIE1vdmUgRmlsZVN5c3RlbSB0byBXVEYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5MzYwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogcGFsL1BsYXRmb3JtTWFjLmNtYWtlOgorCiAyMDE5LTAxLTIyICBEYXZpZCBLaWx6ZXIg
IDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgU3dpdGNoIHJlbWFpbmluZyBRdWlja0xv
b2sgc29mdC1saW5raW5nIGluIFdlYkNvcmUsIFdlYktpdCBvdmVyIHRvIFF1aWNrTG9va1NvZnRM
aW5rLntjcHAsaH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNjMwNDQxNTNmOTIxMTBlMDcyYTIxN2VjZGJmMWMxNjIw
YmI3MjA1ZS4uOWU1OWNmMDU0Mjg3ZDU0NWU0YzAyNTRlYWFhOTM4NjllNTI3Mjg3ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw4MiBAQAorMjAxOS0wMS0yMyAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2ly
c2xpbmdAc29ueS5jb20+CisKKyAgICAgICAgTW92ZSBGaWxlU3lzdGVtIHRvIFdURgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzNjAyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5jcHA6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHA6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVCbG9iU3RvcmFnZS5jcHA6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5jcHA6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5jcHA6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbENvY29hLm1tOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbFNvdXAuY3BwOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0YXRpc3RpY3MuY3BwOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW06Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzTWFjLm1tOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcDoKKyAgICAgICAg
KiBQbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc01haW5Vbml4LmNwcDoKKyAgICAgICAg
KiBTaGFyZWQvUGVyc2lzdGVuY3lVdGlscy5jcHA6CisgICAgICAgICogU2hhcmVkL1BsdWdpbnMv
TmV0c2NhcGUvdW5peC9OZXRzY2FwZVBsdWdpbk1vZHVsZVVuaXguY3BwOgorICAgICAgICAqIFNo
YXJlZC9QbHVnaW5zL3VuaXgvUGx1Z2luU2VhcmNoUGF0aC5jcHA6CisgICAgICAgICogU2hhcmVk
L1dlYk1lbW9yeVNhbXBsZXIuaDoKKyAgICAgICAgKiBTaGFyZWQvZ2xpYi9Qcm9jZXNzRXhlY3V0
YWJsZVBhdGhHTGliLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvaW9zL0NoaWxkUHJvY2Vzc0lPUy5t
bToKKyAgICAgICAgKiBTaGFyZWQvbWFjL0NoaWxkUHJvY2Vzc01hYy5tbToKKyAgICAgICAgKiBT
aGFyZWQvbWFjL1NhbmRib3hFeHRlbnNpb25NYWMubW06CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9BUElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW06CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0V2ViQ29udGV4dC5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFdlYnNpdGVEYXRhTWFuYWdlci5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93aW4v
QVBJV2Vic2l0ZURhdGFTdG9yZVdpbi5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0F1dG9tYXRp
b24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9E
b3dubG9hZENsaWVudC5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bv
b2xDb2NvYS5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW06Cisg
ICAgICAgICogVUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9yYWdlLmNwcDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9MYXVuY2hlci9nbGliL0J1YmJsZXdyYXBMYXVuY2hlci5jcHA6CisgICAgICAgICogVUlQ
cm9jZXNzL0xhdW5jaGVyL2dsaWIvUHJvY2Vzc0xhdW5jaGVyR0xpYi5jcHA6CisgICAgICAgICog
VUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1BsdWdpbkluZm9DYWNoZS5jcHA6CisgICAgICAgICogVUlQ
cm9jZXNzL1BsdWdpbnMvbWFjL1BsdWdpblByb2Nlc3NQcm94eU1hYy5tbToKKyAgICAgICAgKiBV
SVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpbkluZm9TdG9yZVVuaXguY3BwOgorICAgICAgICAq
IFVJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHA6CisgICAg
ICAgICogVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3BwOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29j
b2EubW06CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
Y3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQcm94eUdMaWIuY3BwOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc1Bvb2xHdGsuY3BwOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAqIFVJUHJvY2Vz
cy9pb3MvZm9ybXMvV0tGaWxlVXBsb2FkUGFuZWwubW06CisgICAgICAgICogVUlQcm9jZXNzL21h
Yy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgICogVUlQcm9jZXNzL3dpbi9XZWJQcm9jZXNz
UG9vbFdpbi5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcDoKKyAgICAg
ICAgKiBVSVByb2Nlc3Mvd3BlL1dlYlByb2Nlc3NQb29sV1BFLmNwcDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdEV4dGVuc2lvbk1hbmFnZXIuY3Bw
OgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvZ2xpYi9JbmplY3RlZEJ1bmRs
ZUdsaWIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0
b3JhZ2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
TmV0c2NhcGVQbHVnaW5TdHJlYW0uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL2d0ay9XZWJJbnNwZWN0b3JVSUd0ay5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL3dpbi9XZWJJbnNwZWN0b3JVSVdpbi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9j
b2NvYS9XZWJQcm9jZXNzQ29jb2EubW06CisKIDIwMTktMDEtMjIgIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZWdyZXNzaW9uKHIyNDAxNzgpIFNvbWUgQVBJIHRl
c3RzIGFyZSBjcmFzaGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwppbmRleCA4N2ZlOGMzYThjNjE2YTA0
NzVkNGFmMzc0Njk0ZDQyNmVjNmZlZjg0Li5kZWNmMTc4NWQzZTNmMmViYjFhMjgzMTc0ODA1OTFh
Mzc3N2U5MWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE5LTAx
LTIzICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KKworICAgICAgICBN
b3ZlIEZpbGVTeXN0ZW0gdG8gV1RGCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTM2MDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcDoKKyAgICAgICAgKiBT
dG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5jcHA6CisgICAgICAgICogU3RvcmFnZS9TdG9yYWdl
VHJhY2tlci5jcHA6CisKIDIwMTktMDEtMjIgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5z
ZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBGaXggc29tZSBidWlsZHMgYWZ0ZXIgcjI0MDI5Mgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGMwN2Y0MGYyYmFiNWQ4OTFmZmYzODc2ODJh
NTRhYTcxOTk1N2QyMjUuLjc2MmRmOWY4ZGVkNDBlOTdlZWYwNWIzNzg5ZWNiYWM0NDRjMmNlNGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxOS0wMS0y
MyAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CisKKyAgICAgICAgTW92
ZSBGaWxlU3lzdGVtIHRvIFdURgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTkzNjAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBNaXNjL1dlYk5TRmlsZU1hbmFnZXJFeHRyYXMubW06CisgICAgICAgICog
U3RvcmFnZS9XZWJEYXRhYmFzZVByb3ZpZGVyLm1tOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmll
dy5tbToKKwogMjAxOS0wMS0yMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJr
aXQub3JnPgogCiAgICAgICAgIE1vdmUgTmV0d29ya1N0b3JhZ2VTZXNzaW9uIG93bmVyc2hpcCB0
byBOZXR3b3JrUHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDRhNmM5MDNi
YWYwZWUyMWY2ZDg0MTUzNjI4Y2ZjYWU1ODZlY2QxNWQuLmQ5NDZiYjVkMGU3YzhlMjgyODc3YTRm
NDQ0NGRjYjg0NzVkMjFiMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxOSBAQAorMjAxOS0wMS0yMyAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5j
b20+CisKKyAgICAgICAgTW92ZSBGaWxlU3lzdGVtIHRvIFdURgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzNjAyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNw
cDoKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpblBhY2thZ2UuaDoKKyAgICAgICAgKiBQbHVnaW5z
L1BsdWdpblN0cmVhbS5oOgorICAgICAgICAqIFdlYkFwcGxpY2F0aW9uQ2FjaGUuY3BwOgorICAg
ICAgICAqIFdlYkRhdGFiYXNlTWFuYWdlci5jcHA6CisgICAgICAgICogV2ViRG93bmxvYWRDdXJs
LmNwcDoKKyAgICAgICAgKiBXZWJQcmVmZXJlbmNlcy5jcHA6CisgICAgICAgICogV2ViVmlldy5j
cHA6CisKIDIwMTktMDEtMjIgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0
Lm9yZz4KIAogICAgICAgICBNb3ZlIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiBvd25lcnNoaXAgdG8g
TmV0d29ya1Byb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGEyMjM5NDkwZDExMmRjYTQ2YTVhYTRiY2RlZDM1ZmRiY2FhZWM5ZTkuLmQwOGM3OWYyYjgz
YThlMTNmZWRkYjljYzExOWYzMWExYTlmOTc2N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RG
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtODksNiArODksMTEgQEAKIAkJOTM5MzRCRDUxOEExRjE2OTAw
RDBENkExIC8qIFN0cmluZ1ZpZXdDRi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5MzkzNEJENDE4QTFGMTY5MDBEMEQ2QTEgLyogU3RyaW5nVmlld0NG
LmNwcCAqLzsgfTsKIAkJOTNGMTk5M0UxOUQ3OTU4RDAwQzIzOTBCIC8qIFN0cmluZ1ZpZXcuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGMTk5M0Qx
OUQ3OTU4RDAwQzIzOTBCIC8qIFN0cmluZ1ZpZXcuY3BwICovOyB9OwogCQk5QkM3MEYwNTE3NkMz
NzlEMDAxMDFERUMgLyogQXRvbWljU3RyaW5nVGFibGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUJDNzBGMDQxNzZDMzc5RDAwMTAxREVDIC8qIEF0
b21pY1N0cmluZ1RhYmxlLmNwcCAqLzsgfTsKKwkJQTMzMUQ5NUIyMUYyNDk5MjAwOUYwMkFBIC8q
IEZpbGVTeXN0ZW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTMzMUQ5NUEyMUYyNDk5MjAwOUYwMkFBIC8qIEZpbGVTeXN0ZW0uY3BwICovOyB9Owor
CQlBMzMxRDk1RDIxRjI0OUU0MDA5RjAyQUEgLyogRmlsZVN5c3RlbUNGLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzMzFEOTVDMjFGMjQ5RTQwMDlG
MDJBQSAvKiBGaWxlU3lzdGVtQ0YuY3BwICovOyB9OworCQlBMzMxRDk1RjIxRjI0OUY2MDA5RjAy
QUEgLyogRmlsZVN5c3RlbUNvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTMzMUQ5NUUyMUYyNDlGNjAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1Db2Nv
YS5tbSAqLzsgfTsKKwkJQTMzMUQ5NjEyMUYyNEEwQTAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1NYWMu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMzMxRDk2
MDIxRjI0QTBBMDA5RjAyQUEgLyogRmlsZVN5c3RlbU1hYy5tbSAqLzsgfTsKKwkJQTMzMUQ5Njcy
MUYyNEFCRDAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1QT1NJWC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMzMxRDk2NjIxRjI0QUJEMDA5RjAyQUEgLyog
RmlsZVN5c3RlbVBPU0lYLmNwcCAqLzsgfTsKIAkJQTNCNzI1RUM5ODc0NDZBRDkzRjFBNDQwIC8q
IFJhbmRvbURldmljZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDOEY1OTdDQTJBNTc0MTdGQkFCOTJGRDYgLyogUmFuZG9tRGV2aWNlLmNwcCAqLzsg
fTsKIAkJQTNFNEREOTMxRjNBODAzNDAwREVEMEI0IC8qIFRleHRTdHJlYW0uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTNFNEREOTExRjNBODAzNDAw
REVEMEI0IC8qIFRleHRTdHJlYW0uY3BwICovOyB9OwogCQlBNUJBMTVGMzE4MjQzM0E5MDBBODJF
NjkgLyogU3RyaW5nQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNUJBMTVGMjE4MjQzM0E5MDBBODJFNjkgLyogU3RyaW5nQ29jb2EubW0gKi87
IH07CkBAIC00MzAsOCArNDM1LDE2IEBACiAJCTlDNjdDNTQyNTg5MzQ4RTI4NUI0OTY5OSAvKiBJ
bmRleGVkQ29udGFpbmVySXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSW5kZXhlZENvbnRhaW5lckl0ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUEzMEQ0MTJDMUYwREUwQkEwMEI3MTk1NCAvKiBTb2Z0TGlua2luZy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTb2Z0TGlua2luZy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBMzBENDEyRDFGMERFMTNGMDBCNzE5NTQgLyogU29mdExpbmtpbmcuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU29mdExpbmtpbmcuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQTMzMUQ5NTgyMUYyNDk3ODAwOUYwMkFBIC8qIEZpbGVNZXRhZGF0
YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaWxlTWV0YWRhdGEuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTMzMUQ5NTkyMUYyNDk5MjAwOUYwMkFBIC8qIEZp
bGVTeXN0ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmlsZVN5c3RlbS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMzMxRDk1QTIxRjI0OTkyMDA5RjAyQUEg
LyogRmlsZVN5c3RlbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBG
aWxlU3lzdGVtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTMzMUQ5NUMyMUYy
NDlFNDAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1DRi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBGaWxlU3lzdGVtQ0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlBMzMxRDk1RTIxRjI0OUY2MDA5RjAyQUEgLyogRmlsZVN5c3RlbUNvY29hLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRmlsZVN5c3RlbUNvY29hLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMzMxRDk2MDIxRjI0QTBBMDA5RjAyQUEgLyog
RmlsZVN5c3RlbU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IEZpbGVTeXN0ZW1NYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEzMzFEOTY2
MjFGMjRBQkQwMDlGMDJBQSAvKiBGaWxlU3lzdGVtUE9TSVguY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRmlsZVN5c3RlbVBPU0lYLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTM2RTE2RjcyMTZGRjgyODAwOEREODdFIC8qIFdURlNlbWFwaG9yZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXVEZTZW1hcGhvcmUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTNBQjZFNkExRjNFMUFENjAwOUMxNEIxIC8qIFZhbHVl
VG9TdHJpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmFsdWVUb1N0cmlu
Zy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBM0QyNzNCOTIxRjJFRTkxMDA4NjY5
NzEgLyogTWV0YWRhdGFTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWV0
YWRhdGFTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTNFNEREOTExRjNBODAz
NDAwREVEMEI0IC8qIFRleHRTdHJlYW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gVGV4dFN0cmVhbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEz
RTRERDkyMUYzQTgwMzQwMERFRDBCNCAvKiBUZXh0U3RyZWFtLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFRleHRTdHJlYW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQTUwOThBRkYxQzE2OUUwNzAwMDg3Nzk3IC8qIFNhbmRib3hTUEkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2FuZGJveFNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNzE3LDYgKzczMCw3IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQk1QzFGMDU5MTIx
NjQzNTZCMDAzOTMwMkMgLyogQ0ZVUkxFeHRyYXMuY3BwICovLAogCQkJCTVDMUYwNTkyMjE2NDM1
NkIwMDM5MzAyQyAvKiBDRlVSTEV4dHJhcy5oICovLAorCQkJCUEzMzFEOTVDMjFGMjQ5RTQwMDlG
MDJBQSAvKiBGaWxlU3lzdGVtQ0YuY3BwICovLAogCQkJCUMyQkNGQzQxMUY2MUQ2MTYwMEM5MjIy
QyAvKiBMYW5ndWFnZUNGLmNwcCAqLywKIAkJCQkyQ0RFRDBFRTE4MTE1QzM4MDA0REJBNzAgLyog
UnVuTG9vcENGLmNwcCAqLywKIAkJCQkxQUZERTY0NzE5NTIwMUMzMDBDNDhGRkEgLyogVHlwZUNh
c3RzQ0YuaCAqLywKQEAgLTc3NCw2ICs3ODgsMjIgQEAKIAkJCW5hbWUgPSBTb3VyY2U7CiAJCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQlBMzMxRDk2MzIxRjI0QTJFMDA5RjAyQUEg
LyogcG9zaXggKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJ
CUEzMzFEOTY2MjFGMjRBQkQwMDlGMDJBQSAvKiBGaWxlU3lzdGVtUE9TSVguY3BwICovLAorCQkJ
KTsKKwkJCXBhdGggPSBwb3NpeDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJ
CUEzRDI3M0I4MjFGMkVFN0IwMDg2Njk3MSAvKiBtYWMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91
cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUEzRDI3M0I5MjFGMkVFOTEwMDg2Njk3MSAvKiBNZXRh
ZGF0YVNQSS5oICovLAorCQkJKTsKKwkJCXBhdGggPSBtYWM7CisJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOworCQl9OwogCQlBNUJBMTVGMTE4MjQzMzlGMDBBODJFNjkgLyogY29jb2EgKi8gPSB7
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtODA3LDYgKzgzNyw3IEBA
CiAJCQkJMUZBNDdDODcxNTI1MDJEQTAwNTY4RDFCIC8qIGlvcyAqLywKIAkJCQlBOEE0NzJDNDE1
MUE4MjVBMDA0MTIzRkYgLyogbWFjICovLAogCQkJCUU0M0E0Njg1MUUyMjhCNTcwMDI3NkIwNSAv
KiBwZXJzaXN0ZW5jZSAqLywKKwkJCQlBMzMxRDk2MzIxRjI0QTJFMDA5RjAyQUEgLyogcG9zaXgg
Ki8sCiAJCQkJQ0VGNDgyMEMxOURBMzQ3NjAwQ0MwNEI4IC8qIHNwaSAqLywKIAkJCQlBOEE0NzMx
QjE1MUE4MjVCMDA0MTIzRkYgLyogdGV4dCAqLywKIAkJCQlBOEE0NzMzOTE1MUE4MjVCMDA0MTIz
RkYgLyogdGhyZWFkcyAqLywKQEAgLTg5NCw4ICs5MjUsMTEgQEAKIAkJCQlBOEE0NzJBMjE1MUE4
MjVBMDA0MTIzRkYgLyogRmFzdE1hbGxvYy5oICovLAogCQkJCTBGNzlDN0MzMUU3MzUxMTgwMEVC
MzREMSAvKiBGYXN0VExTLmggKi8sCiAJCQkJQjM4RkQ3QkMxNjg5NTNFODAwNjVDOTY5IC8qIEZl
YXR1cmVEZWZpbmVzLmggKi8sCisJCQkJQTMzMUQ5NTgyMUYyNDk3ODAwOUYwMkFBIC8qIEZpbGVN
ZXRhZGF0YS5oICovLAogCQkJCTBGOUQzMzVCMTY1REJBNzMwMDVBRDM4NyAvKiBGaWxlUHJpbnRT
dHJlYW0uY3BwICovLAogCQkJCTBGOUQzMzVDMTY1REJBNzMwMDVBRDM4NyAvKiBGaWxlUHJpbnRT
dHJlYW0uaCAqLywKKwkJCQlBMzMxRDk1QTIxRjI0OTkyMDA5RjAyQUEgLyogRmlsZVN5c3RlbS5j
cHAgKi8sCisJCQkJQTMzMUQ5NTkyMUYyNDk5MjAwOUYwMkFBIC8qIEZpbGVTeXN0ZW0uaCAqLywK
IAkJCQkwRjJCNjZBNTE3QjZCNEY3MDBBN0FFM0YgLyogRmxpcEJ5dGVzLmggKi8sCiAJCQkJRkU4
NkE4NzQxRTU5NDQwMjAwMTExQkJGIC8qIEZvcmJpZEhlYXBBbGxvY2F0aW9uLmggKi8sCiAJCQkJ
QThBNDcyQTYxNTFBODI1QTAwNDEyM0ZGIC8qIEZvcndhcmQuaCAqLywKQEAgLTExOTAsNiArMTIy
NCw3IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQkxQTQyOEI4QjFDOEY4OUREMDA1MUU5RUIgLyog
QXBwS2l0Q29tcGF0aWJpbGl0eURlY2xhcmF0aW9ucy5oICovLAogCQkJCTFBQ0FERDgyMTg4NDQ4
MDEwMEQ4QjcxRCAvKiBEZXByZWNhdGVkU3ltYm9sc1VzZWRCeVNhZmFyaS5tbSAqLywKKwkJCQlB
MzMxRDk2MDIxRjI0QTBBMDA5RjAyQUEgLyogRmlsZVN5c3RlbU1hYy5tbSAqLywKIAkJCQk1MzUz
NEYyOTFFQzBFMTBFMDAxNDFCMkYgLyogTWFjaEV4Y2VwdGlvbnMuZGVmcyAqLywKIAkJCSk7CiAJ
CQlwYXRoID0gbWFjOwpAQCAtMTMxNyw2ICsxMzUyLDcgQEAKIAkJCQlEQ0VFMjFGOTFDRUE3NTJG
MDAwQzIzOTYgLyogY2YgKi8sCiAJCQkJQ0U0NjUxNkMxOURCMUZCNDAwM0VDQTA1IC8qIGNvY29h
ICovLAogCQkJCUNFNzNFMDIzMTlEQ0I3QUIwMDU4MEQ1QyAvKiBkYXJ3aW4gKi8sCisJCQkJQTNE
MjczQjgyMUYyRUU3QjAwODY2OTcxIC8qIG1hYyAqLywKIAkJCSk7CiAJCQlwYXRoID0gc3BpOwog
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTEzNTEsNiArMTM4Nyw3IEBACiAJCQkJRTM4
QzQxMjQxRUI0RTA0QzAwNDI5NTdEIC8qIENQVVRpbWVDb2NvYS5jcHAgKi8sCiAJCQkJMTQzRERF
OTcyMEM4QkU5OTAwN0Y3NkZBIC8qIEVudGl0bGVtZW50cy5oICovLAogCQkJCTE0M0RERTk1MjBD
OEJDMzcwMDdGNzZGQSAvKiBFbnRpdGxlbWVudHMubW0gKi8sCisJCQkJQTMzMUQ5NUUyMUYyNDlG
NjAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1Db2NvYS5tbSAqLywKIAkJCQk3QTZFQkEzMzIwNzQ2QzM0
MDA0RjlDNDQgLyogTWFjaFNlbmRSaWdodC5jcHAgKi8sCiAJCQkJQThBNDcyQzUxNTFBODI1QTAw
NDEyM0ZGIC8qIE1haW5UaHJlYWRDb2NvYS5tbSAqLywKIAkJCQlBREYyQ0U2NTFFMzlGMTA2MDA2
ODg5REIgLyogTWVtb3J5Rm9vdHByaW50Q29jb2EuY3BwICovLApAQCAtMTQ3Niw2ICsxNTEzLDEx
IEBACiAJCQkJMEY3QzVGQjYxRDg4NUNGMjAwNDRGNUUyIC8qIEZhc3RCaXRWZWN0b3IuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQThBNDczQzMxNTFBODI1QjAwNDEyM0ZGIC8qIEZhc3RNYWxsb2Mu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY5RDMzNjAxNjVEQkE3MzAwNUFEMzg3IC8qIEZpbGVQ
cmludFN0cmVhbS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBMzMxRDk1QjIxRjI0OTkyMDA5RjAy
QUEgLyogRmlsZVN5c3RlbS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBMzMxRDk1RDIxRjI0OUU0
MDA5RjAyQUEgLyogRmlsZVN5c3RlbUNGLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUEzMzFEOTVG
MjFGMjQ5RjYwMDlGMDJBQSAvKiBGaWxlU3lzdGVtQ29jb2EubW0gaW4gU291cmNlcyAqLywKKwkJ
CQlBMzMxRDk2MTIxRjI0QTBBMDA5RjAyQUEgLyogRmlsZVN5c3RlbU1hYy5tbSBpbiBTb3VyY2Vz
ICovLAorCQkJCUEzMzFEOTY3MjFGMjRBQkQwMDlGMDJBQSAvKiBGaWxlU3lzdGVtUE9TSVguY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczQjUxNTFBODI1QjAwNDEyM0ZGIC8qIGZpeGVkLWR0
b2EuY2MgaW4gU291cmNlcyAqLywKIAkJCQkxQTFEOEI5RTE3MzE4Nzk4MDAxNDFEQTQgLyogRnVu
Y3Rpb25EaXNwYXRjaGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNUJGMTc2MUYyM0Q0OUEw
MDI5RDkxRCAvKiBHaWdhY2FnZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQK
aW5kZXggY2VlMWNjZTFlNTcxODRkMTNiZDJjZDUxOWVmNmEyMGRmZmIxYTk2YS4uN2Q4NTgzMzIw
ZjQ5YzYxMDQwMWM3YjhhYjQ0NjM5NmQ4OGMxNTBlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKQEAg
LTYxLDcgKzYxLDkgQEAgc2V0KFdURl9QVUJMSUNfSEVBREVSUwogICAgIEZhc3RNYWxsb2MuaAog
ICAgIEZhc3RUTFMuaAogICAgIEZlYXR1cmVEZWZpbmVzLmgKKyAgICBGaWxlTWV0YWRhdGEuaAog
ICAgIEZpbGVQcmludFN0cmVhbS5oCisgICAgRmlsZVN5c3RlbS5oCiAgICAgRmxpcEJ5dGVzLmgK
ICAgICBGb3JiaWRIZWFwQWxsb2NhdGlvbi5oCiAgICAgRm9yd2FyZC5oCkBAIC0zNTMsNiArMzU1
LDcgQEAgc2V0KFdURl9TT1VSQ0VTCiAgICAgRmFzdEJpdFZlY3Rvci5jcHAKICAgICBGYXN0TWFs
bG9jLmNwcAogICAgIEZpbGVQcmludFN0cmVhbS5jcHAKKyAgICBGaWxlU3lzdGVtLmNwcAogICAg
IEZ1bmN0aW9uRGlzcGF0Y2hlci5jcHAKICAgICBHaWdhY2FnZS5jcHAKICAgICBHbG9iYWxWZXJz
aW9uLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmlsZU1ldGFkYXRhLmggYi9Tb3Vy
Y2UvV1RGL3d0Zi9GaWxlTWV0YWRhdGEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYmI4OGZjODRmOTRhZjRjY2Yx
YzU4MGUwZDU2YTJiNjU4MTEwZjk4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYv
RmlsZU1ldGFkYXRhLmgKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisg
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8
d3RmL1dhbGxUaW1lLmg+CisKK25hbWVzcGFjZSBXVEYgeworCitzdHJ1Y3QgRmlsZU1ldGFkYXRh
IHsKKyAgICAvLyBUaGUgbGFzdCBtb2RpZmljYXRpb24gdGltZSBvZiB0aGUgZmlsZSwgaW4gc2Vj
b25kcy4KKyAgICBXYWxsVGltZSBtb2RpZmljYXRpb25UaW1lOworCisgICAgLy8gVGhlIGxlbmd0
aCBvZiB0aGUgZmlsZSBpbiBieXRlcy4KKyAgICBsb25nIGxvbmcgbGVuZ3RoOworCisgICAgYm9v
bCBpc0hpZGRlbjsKKworICAgIGVudW0gY2xhc3MgVHlwZSB7IEZpbGUsIERpcmVjdG9yeSwgU3lt
Ym9saWNMaW5rIH07CisgICAgVHlwZSB0eXBlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisK
K3VzaW5nIFdURjo6RmlsZU1ldGFkYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmls
ZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
NWY3YmIwM2JhMDE3OTk3ZTNjOTk1ZjM4ODUyOTZhNmY0YTIxNzAzCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKQEAgLTAsMCArMSwzNjcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDctMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisg
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgorCisj
aW5jbHVkZSA8d3RmL0ZpbGVNZXRhZGF0YS5oPgorI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4K
KyNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorCisjaWYgIU9TKFdJTkRPV1MpCisj
aW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDxzeXMvbW1hbi5oPgorI2luY2x1ZGUgPHN5cy9z
dGF0Lmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFdURiB7CisK
K25hbWVzcGFjZSBGaWxlU3lzdGVtIHsKKworLy8gVGhlIGZvbGxvd2luZyBsb3dlci1BU0NJSSBj
aGFyYWN0ZXJzIG5lZWQgZXNjYXBpbmcgdG8gYmUgdXNlZCBpbiBhIGZpbGVuYW1lCisvLyBhY3Jv
c3MgYWxsIHN5c3RlbXMsIGluY2x1ZGluZyBXaW5kb3dzOgorLy8gICAgIC0gVW5wcmludGFibGUg
QVNDSUkgKDAwLTFGKQorLy8gICAgIC0gU3BhY2UgICAgICAgICAgICAgKDIwKQorLy8gICAgIC0g
RG91YmxlIHF1b3RlICAgICAgKDIyKQorLy8gICAgIC0gUGVyY2VudCAgICAgICAgICAgKDI1KSAo
ZXNjYXBlZCBiZWNhdXNlIGl0IGlzIG91ciBlc2NhcGUgY2hhcmFjdGVyKQorLy8gICAgIC0gQXN0
ZXJpc2sgICAgICAgICAgKDJBKQorLy8gICAgIC0gU2xhc2ggICAgICAgICAgICAgKDJGKQorLy8g
ICAgIC0gQ29sb24gICAgICAgICAgICAgKDNBKQorLy8gICAgIC0gTGVzcy10aGFuICAgICAgICAg
KDNDKQorLy8gICAgIC0gR3JlYXRlci10aGFuICAgICAgKDNFKQorLy8gICAgIC0gUXVlc3Rpb24g
TWFyayAgICAgKDNGKQorLy8gICAgIC0gQmFja3NsYXNoICAgICAgICAgKDVDKQorLy8gICAgIC0g
UGlwZSAgICAgICAgICAgICAgKDdDKQorLy8gICAgIC0gRGVsZXRlICAgICAgICAgICAgKDdGKQor
CitzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0VzY2FwaW5nWzEyOF0gPSB7CisgICAgdHJ1ZSwgIHRy
dWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICAvKiAwMC0wNyAq
LworICAgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0
cnVlLCAgLyogMDgtMEYgKi8KKworICAgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVl
LCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgLyogMTAtMTcgKi8KKyAgICB0cnVlLCAgdHJ1ZSwgIHRy
dWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIC8qIDE4LTFGICovCisKKyAg
ICB0cnVlLCAgZmFsc2UsIHRydWUsICBmYWxzZSwgZmFsc2UsIHRydWUsICBmYWxzZSwgZmFsc2Us
IC8qIDIwLTI3ICovCisgICAgZmFsc2UsIGZhbHNlLCB0cnVlLCAgZmFsc2UsIGZhbHNlLCBmYWxz
ZSwgZmFsc2UsIHRydWUsICAvKiAyOC0yRiAqLworCisgICAgZmFsc2UsIGZhbHNlLCBmYWxzZSwg
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAvKiAzMC0zNyAqLworICAgIGZhbHNl
LCBmYWxzZSwgdHJ1ZSwgIGZhbHNlLCB0cnVlLCAgZmFsc2UsIHRydWUsICB0cnVlLCAgLyogMzgt
M0YgKi8KKworICAgIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZh
bHNlLCBmYWxzZSwgLyogNDAtNDcgKi8KKyAgICBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwg
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIC8qIDQ4LTRGICovCisKKyAgICBmYWxzZSwgZmFs
c2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIC8qIDUwLTU3ICov
CisgICAgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUsICBmYWxzZSwgZmFsc2UsIGZh
bHNlLCAvKiA1OC01RiAqLworCisgICAgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNl
LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAvKiA2MC02NyAqLworICAgIGZhbHNlLCBmYWxzZSwgZmFs
c2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgLyogNjgtNkYgKi8KKworICAg
IGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwg
LyogNzAtNzcgKi8KKyAgICBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgIGZhbHNl
LCBmYWxzZSwgdHJ1ZSwgIC8qIDc4LTdGICovCit9OworCitzdGF0aWMgaW5saW5lIGJvb2wgc2hv
dWxkRXNjYXBlVUNoYXIoVUNoYXIgY2hhcmFjdGVyLCBVQ2hhciBwcmV2aW91c0NoYXJhY3Rlciwg
VUNoYXIgbmV4dENoYXJhY3RlcikKK3sKKyAgICBpZiAoY2hhcmFjdGVyIDw9IDEyNykKKyAgICAg
ICAgcmV0dXJuIG5lZWRzRXNjYXBpbmdbY2hhcmFjdGVyXTsKKworICAgIGlmIChVMTZfSVNfTEVB
RChjaGFyYWN0ZXIpICYmICFVMTZfSVNfVFJBSUwobmV4dENoYXJhY3RlcikpCisgICAgICAgIHJl
dHVybiB0cnVlOworCisgICAgaWYgKFUxNl9JU19UUkFJTChjaGFyYWN0ZXIpICYmICFVMTZfSVNf
TEVBRChwcmV2aW91c0NoYXJhY3RlcikpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0
dXJuIGZhbHNlOworfQorCitTdHJpbmcgZW5jb2RlRm9yRmlsZU5hbWUoY29uc3QgU3RyaW5nJiBp
bnB1dFN0cmluZykKK3sKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBpbnB1dFN0cmluZy5sZW5ndGgo
KTsKKyAgICBpZiAoIWxlbmd0aCkKKyAgICAgICAgcmV0dXJuIGlucHV0U3RyaW5nOworCisgICAg
U3RyaW5nQnVpbGRlciByZXN1bHQ7CisgICAgcmVzdWx0LnJlc2VydmVDYXBhY2l0eShsZW5ndGgp
OworCisgICAgVUNoYXIgcHJldmlvdXNDaGFyYWN0ZXI7CisgICAgVUNoYXIgY2hhcmFjdGVyID0g
MDsKKyAgICBVQ2hhciBuZXh0Q2hhcmFjdGVyID0gaW5wdXRTdHJpbmdbMF07CisgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgIHByZXZpb3VzQ2hhcmFj
dGVyID0gY2hhcmFjdGVyOworICAgICAgICBjaGFyYWN0ZXIgPSBuZXh0Q2hhcmFjdGVyOworICAg
ICAgICBuZXh0Q2hhcmFjdGVyID0gaSArIDEgPCBsZW5ndGggPyBpbnB1dFN0cmluZ1tpICsgMV0g
OiAwOworCisgICAgICAgIGlmIChzaG91bGRFc2NhcGVVQ2hhcihjaGFyYWN0ZXIsIHByZXZpb3Vz
Q2hhcmFjdGVyLCBuZXh0Q2hhcmFjdGVyKSkgeworICAgICAgICAgICAgaWYgKGNoYXJhY3RlciA8
PSAyNTUpIHsKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCclJyk7CisgICAgICAgICAg
ICAgICAgYXBwZW5kQnl0ZUFzSGV4KGNoYXJhY3RlciwgcmVzdWx0KTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiUrIik7CisgICAg
ICAgICAgICAgICAgYXBwZW5kQnl0ZUFzSGV4KGNoYXJhY3RlciA+PiA4LCByZXN1bHQpOworICAg
ICAgICAgICAgICAgIGFwcGVuZEJ5dGVBc0hleChjaGFyYWN0ZXIsIHJlc3VsdCk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChjaGFyYWN0
ZXIpOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKK30KKworU3RyaW5n
IGRlY29kZUZyb21GaWxlbmFtZShjb25zdCBTdHJpbmcmIGlucHV0U3RyaW5nKQoreworICAgIHVu
c2lnbmVkIGxlbmd0aCA9IGlucHV0U3RyaW5nLmxlbmd0aCgpOworICAgIGlmICghbGVuZ3RoKQor
ICAgICAgICByZXR1cm4gaW5wdXRTdHJpbmc7CisKKyAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsK
KyAgICByZXN1bHQucmVzZXJ2ZUNhcGFjaXR5KGxlbmd0aCk7CisKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgaWYgKGlucHV0U3RyaW5nW2ldICE9
ICclJykgeworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChpbnB1dFN0cmluZ1tpXSk7CisgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIElmIHRoZSBpbnB1dCBz
dHJpbmcgaXMgYSB2YWxpZCBlbmNvZGVkIGZpbGVuYW1lLCBpdCBtdXN0IGJlIGF0IGxlYXN0IDIg
Y2hhcmFjdGVycyBsb25nZXIKKyAgICAgICAgLy8gdGhhbiB0aGUgY3VycmVudCBpbmRleCB0byBh
Y2NvdW50IGZvciB0aGlzIHBlcmNlbnQgZW5jb2RlZCB2YWx1ZS4KKyAgICAgICAgaWYgKGkgKyAy
ID49IGxlbmd0aCkKKyAgICAgICAgICAgIHJldHVybiB7IH07CisKKyAgICAgICAgaWYgKGlucHV0
U3RyaW5nW2krMV0gIT0gJysnKSB7CisgICAgICAgICAgICBpZiAoIWlzQVNDSUlIZXhEaWdpdChp
bnB1dFN0cmluZ1tpICsgMV0pKQorICAgICAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAg
ICAgICBpZiAoIWlzQVNDSUlIZXhEaWdpdChpbnB1dFN0cmluZ1tpICsgMl0pKQorICAgICAgICAg
ICAgICAgIHJldHVybiB7IH07CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHRvQVNDSUlIZXhW
YWx1ZShpbnB1dFN0cmluZ1tpICsgMV0sIGlucHV0U3RyaW5nW2kgKyAyXSkpOworICAgICAgICAg
ICAgaSArPSAyOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICAv
LyBJZiB0aGUgaW5wdXQgc3RyaW5nIGlzIGEgdmFsaWQgZW5jb2RlZCBmaWxlbmFtZSwgaXQgbXVz
dCBiZSBhdCBsZWFzdCA1IGNoYXJhY3RlcnMgbG9uZ2VyCisgICAgICAgIC8vIHRoYW4gdGhlIGN1
cnJlbnQgaW5kZXggdG8gYWNjb3VudCBmb3IgdGhpcyBwZXJjZW50IGVuY29kZWQgdmFsdWUuCisg
ICAgICAgIGlmIChpICsgNSA+PSBsZW5ndGgpCisgICAgICAgICAgICByZXR1cm4geyB9OworCisg
ICAgICAgIGlmICghaXNBU0NJSUhleERpZ2l0KGlucHV0U3RyaW5nW2kgKyAyXSkpCisgICAgICAg
ICAgICByZXR1cm4geyB9OworICAgICAgICBpZiAoIWlzQVNDSUlIZXhEaWdpdChpbnB1dFN0cmlu
Z1tpICsgM10pKQorICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgaWYgKCFpc0FTQ0lJ
SGV4RGlnaXQoaW5wdXRTdHJpbmdbaSArIDRdKSkKKyAgICAgICAgICAgIHJldHVybiB7IH07Cisg
ICAgICAgIGlmICghaXNBU0NJSUhleERpZ2l0KGlucHV0U3RyaW5nW2kgKyA1XSkpCisgICAgICAg
ICAgICByZXR1cm4geyB9OworCisgICAgICAgIHJlc3VsdC5hcHBlbmQodG9BU0NJSUhleFZhbHVl
KGlucHV0U3RyaW5nW2kgKyAyXSwgaW5wdXRTdHJpbmdbaSArIDNdKSA8PCA4IHwgdG9BU0NJSUhl
eFZhbHVlKGlucHV0U3RyaW5nW2kgKyA0XSwgaW5wdXRTdHJpbmdbaSArIDVdKSk7CisgICAgICAg
IGkgKz0gNTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7Cit9CisKK1N0
cmluZyBsYXN0Q29tcG9uZW50T2ZQYXRoSWdub3JpbmdUcmFpbGluZ1NsYXNoKGNvbnN0IFN0cmlu
ZyYgcGF0aCkKK3sKKyNpZiBPUyhXSU5ET1dTKQorICAgIGNoYXIgcGF0aFNlcGFyYXRvciA9ICdc
XCc7CisjZWxzZQorICAgIGNoYXIgcGF0aFNlcGFyYXRvciA9ICcvJzsKKyNlbmRpZgorCisgICAg
YXV0byBwb3NpdGlvbiA9IHBhdGgucmV2ZXJzZUZpbmQocGF0aFNlcGFyYXRvcik7CisgICAgaWYg
KHBvc2l0aW9uID09IG5vdEZvdW5kKQorICAgICAgICByZXR1cm4gcGF0aDsKKworICAgIHNpemVf
dCBlbmRPZlN1YnN0cmluZyA9IHBhdGgubGVuZ3RoKCkgLSAxOworICAgIGlmIChwb3NpdGlvbiA9
PSBlbmRPZlN1YnN0cmluZykgeworICAgICAgICAtLWVuZE9mU3Vic3RyaW5nOworICAgICAgICBw
b3NpdGlvbiA9IHBhdGgucmV2ZXJzZUZpbmQocGF0aFNlcGFyYXRvciwgZW5kT2ZTdWJzdHJpbmcp
OworICAgIH0KKworICAgIHJldHVybiBwYXRoLnN1YnN0cmluZyhwb3NpdGlvbiArIDEsIGVuZE9m
U3Vic3RyaW5nIC0gcG9zaXRpb24pOworfQorCitib29sIGFwcGVuZEZpbGVDb250ZW50c1RvRmls
ZUhhbmRsZShjb25zdCBTdHJpbmcmIHBhdGgsIFBsYXRmb3JtRmlsZUhhbmRsZSYgdGFyZ2V0KQor
eworICAgIGF1dG8gc291cmNlID0gb3BlbkZpbGUocGF0aCwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsK
KworICAgIGlmICghaXNIYW5kbGVWYWxpZChzb3VyY2UpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBzdGF0aWMgaW50IGJ1ZmZlclNpemUgPSAxIDw8IDE5OworICAgIFZlY3RvcjxjaGFy
PiBidWZmZXIoYnVmZmVyU2l6ZSk7CisKKyAgICBhdXRvIGZpbGVDbG9zZXIgPSBXVEY6Om1ha2VT
Y29wZUV4aXQoW3NvdXJjZV0oKSB7CisgICAgICAgIFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUg
PSBzb3VyY2U7CisgICAgICAgIGNsb3NlRmlsZShoYW5kbGUpOworICAgIH0pOworCisgICAgZG8g
eworICAgICAgICBpbnQgcmVhZEJ5dGVzID0gcmVhZEZyb21GaWxlKHNvdXJjZSwgYnVmZmVyLmRh
dGEoKSwgYnVmZmVyU2l6ZSk7CisKKyAgICAgICAgaWYgKHJlYWRCeXRlcyA8IDApCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgaWYgKHdyaXRlVG9GaWxlKHRhcmdldCwgYnVm
ZmVyLmRhdGEoKSwgcmVhZEJ5dGVzKSAhPSByZWFkQnl0ZXMpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICAgICAgaWYgKHJlYWRCeXRlcyA8IGJ1ZmZlclNpemUpCisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9IHdoaWxlICh0cnVlKTsKKworICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworfQorCisKK2Jvb2wgZmlsZXNIYXZlU2FtZVZvbHVtZShjb25zdCBTdHJpbmcmIGZp
bGVBLCBjb25zdCBTdHJpbmcmIGZpbGVCKQoreworICAgIGF1dG8gZnNSZXBGaWxlQSA9IGZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihmaWxlQSk7CisgICAgYXV0byBmc1JlcEZpbGVCID0gZmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVCKTsKKworICAgIGlmIChmc1JlcEZpbGVBLmlzTnVsbCgp
IHx8IGZzUmVwRmlsZUIuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGJv
b2wgcmVzdWx0ID0gZmFsc2U7CisKKyAgICBhdXRvIGZpbGVBRGV2ID0gZ2V0RmlsZURldmljZUlk
KGZzUmVwRmlsZUEpOworICAgIGF1dG8gZmlsZUJEZXYgPSBnZXRGaWxlRGV2aWNlSWQoZnNSZXBG
aWxlQik7CisKKyAgICBpZiAoZmlsZUFEZXYgJiYgZmlsZUJEZXYpCisgICAgICAgIHJlc3VsdCA9
IChmaWxlQURldiA9PSBmaWxlQkRldik7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisjaWYg
IVBMQVRGT1JNKE1BQykKKwordm9pZCBzZXRNZXRhZGF0YVVSTChjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKQoreworfQorCitib29sIGNhbkV4Y2x1ZGVGcm9tQmFj
a3VwKCkKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgZXhjbHVkZUZyb21CYWNrdXAo
Y29uc3QgU3RyaW5nJikKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKyNlbmRpZgorCitNYXBw
ZWRGaWxlRGF0YTo6fk1hcHBlZEZpbGVEYXRhKCkKK3sKKyNpZiAhT1MoV0lORE9XUykKKyAgICBp
ZiAoIW1fZmlsZURhdGEpCisgICAgICAgIHJldHVybjsKKyAgICBtdW5tYXAobV9maWxlRGF0YSwg
bV9maWxlU2l6ZSk7CisjZW5kaWYKK30KKworTWFwcGVkRmlsZURhdGE6Ok1hcHBlZEZpbGVEYXRh
KGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIGJvb2wmIHN1Y2Nlc3MpCit7CisjaWYgT1MoV0lORE9X
UykKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IG1hcHBpbmcKKyAgICBzdWNjZXNzID0gZmFsc2U7
CisjZWxzZQorICAgIENTdHJpbmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmls
ZVBhdGgpOworICAgIGludCBmZCA9ICFmc1JlcC5pc051bGwoKSA/IG9wZW4oZnNSZXAuZGF0YSgp
LCBPX1JET05MWSkgOiAtMTsKKyAgICBpZiAoZmQgPCAwKSB7CisgICAgICAgIHN1Y2Nlc3MgPSBm
YWxzZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHN0cnVjdCBzdGF0IGZpbGVTdGF0
OworICAgIGlmIChmc3RhdChmZCwgJmZpbGVTdGF0KSkgeworICAgICAgICBjbG9zZShmZCk7Cisg
ICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHVu
c2lnbmVkIHNpemU7CisgICAgaWYgKCFXVEY6OmNvbnZlcnRTYWZlbHkoZmlsZVN0YXQuc3Rfc2l6
ZSwgc2l6ZSkpIHsKKyAgICAgICAgY2xvc2UoZmQpOworICAgICAgICBzdWNjZXNzID0gZmFsc2U7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIXNpemUpIHsKKyAgICAgICAgY2xv
c2UoZmQpOworICAgICAgICBzdWNjZXNzID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIHZvaWQqIGRhdGEgPSBtbWFwKDAsIHNpemUsIFBST1RfUkVBRCwgTUFQX0ZJTEUgfCBN
QVBfU0hBUkVELCBmZCwgMCk7CisgICAgY2xvc2UoZmQpOworCisgICAgaWYgKGRhdGEgPT0gTUFQ
X0ZBSUxFRCkgeworICAgICAgICBzdWNjZXNzID0gZmFsc2U7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBzdWNjZXNzID0gdHJ1ZTsKKyAgICBtX2ZpbGVEYXRhID0gZGF0YTsKKyAgICBt
X2ZpbGVTaXplID0gc2l6ZTsKKyNlbmRpZgorfQorCitQbGF0Zm9ybUZpbGVIYW5kbGUgb3BlbkFu
ZExvY2tGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlIG9wZW5Nb2RlLCBPcHRp
b25TZXQ8RmlsZUxvY2tNb2RlPiBsb2NrTW9kZSkKK3sKKyAgICBhdXRvIGhhbmRsZSA9IG9wZW5G
aWxlKHBhdGgsIG9wZW5Nb2RlKTsKKyAgICBpZiAoaGFuZGxlID09IGludmFsaWRQbGF0Zm9ybUZp
bGVIYW5kbGUpCisgICAgICAgIHJldHVybiBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOworCisj
aWYgVVNFKEZJTEVfTE9DSykKKyAgICBib29sIGxvY2tlZCA9IGxvY2tGaWxlKGhhbmRsZSwgbG9j
a01vZGUpOworICAgIEFTU0VSVF9VTlVTRUQobG9ja2VkLCBsb2NrZWQpOworI2Vsc2UKKyAgICBV
TlVTRURfUEFSQU0obG9ja01vZGUpOworI2VuZGlmCisKKyAgICByZXR1cm4gaGFuZGxlOworfQor
Cit2b2lkIHVubG9ja0FuZENsb3NlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlKQorewor
I2lmIFVTRShGSUxFX0xPQ0spCisgICAgYm9vbCB1bmxvY2tlZCA9IHVubG9ja0ZpbGUoaGFuZGxl
KTsKKyAgICBBU1NFUlRfVU5VU0VEKHVubG9ja2VkLCB1bmxvY2tlZCk7CisjZW5kaWYKKyAgICBj
bG9zZUZpbGUoaGFuZGxlKTsKK30KKworYm9vbCBmaWxlSXNEaXJlY3RvcnkoY29uc3QgU3RyaW5n
JiBwYXRoLCBTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzIHNob3VsZEZvbGxvd1N5bWJvbGljTGlu
a3MpCit7CisgICAgYXV0byBtZXRhZGF0YSA9IHNob3VsZEZvbGxvd1N5bWJvbGljTGlua3MgPT0g
U2hvdWxkRm9sbG93U3ltYm9saWNMaW5rczo6WWVzID8gZmlsZU1ldGFkYXRhRm9sbG93aW5nU3lt
bGlua3MocGF0aCkgOiBmaWxlTWV0YWRhdGEocGF0aCk7CisgICAgaWYgKCFtZXRhZGF0YSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBtZXRhZGF0YS52YWx1ZSgpLnR5cGUgPT0g
RmlsZU1ldGFkYXRhOjpUeXBlOjpEaXJlY3Rvcnk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEZpbGVT
eXN0ZW0KK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmls
ZVN5c3RlbS5oIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZhNGIx
Zjg4M2I5NzU2MDE4OGQyZmRmMTFiMjdlNDAxYzIxNjY2NjUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTAsMCArMSwyMjYgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDctMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhLCBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFw
cGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlIDx0aW1lLmg+CisjaW5jbHVkZSA8dXRpbGl0eT4KKyNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CisjaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CisKKyNpZiBVU0UoQ0YpCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2VuZGlm
CisKKyNpZiBVU0UoQ0YpCit0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGRGF0YSogQ0ZEYXRhUmVm
OworI2VuZGlmCisKK09CSkNfQ0xBU1MgTlNTdHJpbmc7CisKKyNpZiBQTEFURk9STShXSU4pCit0
eXBlZGVmIHZvaWQgKkhBTkRMRTsKKyNlbmRpZgorCisjaWYgVVNFKEdMSUIpCit0eXBlZGVmIHN0
cnVjdCBfR0ZpbGVJT1N0cmVhbSBHRmlsZUlPU3RyZWFtOworI2VuZGlmCisKK25hbWVzcGFjZSBX
VEYgeworCitzdHJ1Y3QgRmlsZU1ldGFkYXRhOworCituYW1lc3BhY2UgRmlsZVN5c3RlbSB7CisK
Ky8vIFBsYXRmb3JtRmlsZUhhbmRsZQorI2lmIFVTRShHTElCKSAmJiAhUExBVEZPUk0oV0lOKQor
dHlwZWRlZiBHRmlsZUlPU3RyZWFtKiBQbGF0Zm9ybUZpbGVIYW5kbGU7Citjb25zdCBQbGF0Zm9y
bUZpbGVIYW5kbGUgaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSA9IDA7CisjZWxpZiBQTEFURk9S
TShXSU4pCit0eXBlZGVmIEhBTkRMRSBQbGF0Zm9ybUZpbGVIYW5kbGU7CisvLyBGSVhNRTogLTEg
aXMgSU5WQUxJRF9IQU5ETEVfVkFMVUUsIGRlZmluZWQgaW4gPHdpbmJhc2UuaD4uIENocm9taXVt
IHRyaWVzIHRvCisvLyBhdm9pZCB1c2luZyBXaW5kb3dzIGhlYWRlcnMgaW4gaGVhZGVycy4gV2Un
ZCByYXRoZXIgbW92ZSB0aGlzIGludG8gdGhlIC5jcHAuCitjb25zdCBQbGF0Zm9ybUZpbGVIYW5k
bGUgaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8SEFORExFPigt
MSk7CisjZWxzZQordHlwZWRlZiBpbnQgUGxhdGZvcm1GaWxlSGFuZGxlOworY29uc3QgUGxhdGZv
cm1GaWxlSGFuZGxlIGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUgPSAtMTsKKyNlbmRpZgorCitl
bnVtIGNsYXNzIEZpbGVPcGVuTW9kZSB7CisgICAgUmVhZCwKKyAgICBXcml0ZSwKKyNpZiBPUyhE
QVJXSU4pCisgICAgRXZlbnRzT25seSwKKyNlbmRpZgorfTsKKworZW51bSBjbGFzcyBGaWxlU2Vl
a09yaWdpbiB7CisgICAgQmVnaW5uaW5nLAorICAgIEN1cnJlbnQsCisgICAgRW5kLAorfTsKKwor
ZW51bSBjbGFzcyBGaWxlTG9ja01vZGUgeworICAgIFNoYXJlZCA9IDEgPDwgMCwKKyAgICBFeGNs
dXNpdmUgPSAxIDw8IDEsCisgICAgTm9uYmxvY2tpbmcgPSAxIDw8IDIsCit9OworCitlbnVtIGNs
YXNzIFNob3VsZEZvbGxvd1N5bWJvbGljTGlua3MgeyBObywgWWVzIH07CisKK1dURl9FWFBPUlRf
UFJJVkFURSBib29sIGZpbGVFeGlzdHMoY29uc3QgU3RyaW5nJik7CitXVEZfRVhQT1JUX1BSSVZB
VEUgYm9vbCBkZWxldGVGaWxlKGNvbnN0IFN0cmluZyYpOworV1RGX0VYUE9SVF9QUklWQVRFIGJv
b2wgZGVsZXRlRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7CitXVEZfRVhQT1JUX1BSSVZB
VEUgYm9vbCBtb3ZlRmlsZShjb25zdCBTdHJpbmcmIG9sZFBhdGgsIGNvbnN0IFN0cmluZyYgbmV3
UGF0aCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBnZXRGaWxlU2l6ZShjb25zdCBTdHJpbmcm
LCBsb25nIGxvbmcmIHJlc3VsdCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBnZXRGaWxlU2l6
ZShQbGF0Zm9ybUZpbGVIYW5kbGUsIGxvbmcgbG9uZyYgcmVzdWx0KTsKK1dURl9FWFBPUlRfUFJJ
VkFURSBPcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3Ry
aW5nJik7CitXVEZfRVhQT1JUX1BSSVZBVEUgT3B0aW9uYWw8V2FsbFRpbWU+IGdldEZpbGVDcmVh
dGlvblRpbWUoY29uc3QgU3RyaW5nJik7IC8vIE5vdCBhbGwgcGxhdGZvcm1zIHN0b3JlIGZpbGUg
Y3JlYXRpb24gdGltZS4KK1dURl9FWFBPUlRfUFJJVkFURSBPcHRpb25hbDxGaWxlTWV0YWRhdGE+
IGZpbGVNZXRhZGF0YShjb25zdCBTdHJpbmcmIHBhdGgpOworV1RGX0VYUE9SVF9QUklWQVRFIE9w
dGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3MoY29uc3Qg
U3RyaW5nJiBwYXRoKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGZpbGVJc0RpcmVjdG9yeShj
b25zdCBTdHJpbmcmLCBTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzKTsKK1dURl9FWFBPUlRfUFJJ
VkFURSBTdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNvbnN0IFN0cmluZyYgcGF0aCwg
Y29uc3QgU3RyaW5nJiBjb21wb25lbnQpOworV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnRzKFN0cmluZ1ZpZXcgcGF0aCwgY29uc3QgVmVjdG9yPFN0cmlu
Z1ZpZXc+JiBjb21wb25lbnRzKTsKK1dURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgbGFzdENvbXBv
bmVudE9mUGF0aElnbm9yaW5nVHJhaWxpbmdTbGFzaChjb25zdCBTdHJpbmcmIHBhdGgpOworV1RG
X0VYUE9SVF9QUklWQVRFIGJvb2wgbWFrZUFsbERpcmVjdG9yaWVzKGNvbnN0IFN0cmluZyYgcGF0
aCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGhvbWVEaXJlY3RvcnlQYXRoKCk7CitXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nIHBhdGhHZXRGaWxlTmFtZShjb25zdCBTdHJpbmcmKTsKK1dU
Rl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgZGlyZWN0b3J5TmFtZShjb25zdCBTdHJpbmcmKTsKK1dU
Rl9FWFBPUlRfUFJJVkFURSBib29sIGdldFZvbHVtZUZyZWVTcGFjZShjb25zdCBTdHJpbmcmLCB1
aW50NjRfdCYpOworV1RGX0VYUE9SVF9QUklWQVRFIE9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVE
ZXZpY2VJZChjb25zdCBDU3RyaW5nJik7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjcmVhdGVT
eW1ib2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJv
bGljTGlua1BhdGgpOworCitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRNZXRhZGF0YVVSTChj
b25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcm
IHJlZmVycmVyID0geyB9KTsKKworYm9vbCBjYW5FeGNsdWRlRnJvbUJhY2t1cCgpOyAvLyBSZXR1
cm5zIHRydWUgaWYgYW55IGZpbGUgY2FuIGV2ZXIgYmUgZXhjbHVkZWQgZnJvbSBiYWNrdXAuCiti
b29sIGV4Y2x1ZGVGcm9tQmFja3VwKGNvbnN0IFN0cmluZyYpOyAvLyBSZXR1cm5zIHRydWUgaWYg
c3VjY2Vzc2Z1bC4KKworV1RGX0VYUE9SVF9QUklWQVRFIFZlY3RvcjxTdHJpbmc+IGxpc3REaXJl
Y3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGZpbHRlciA9IFN0cmluZygp
KTsKKworV1RGX0VYUE9SVF9QUklWQVRFIENTdHJpbmcgZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KGNvbnN0IFN0cmluZyYpOworU3RyaW5nIHN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oY29uc3QgY2hhciopOworCitpbmxpbmUgYm9vbCBpc0hhbmRsZVZhbGlkKGNvbnN0IFBsYXRm
b3JtRmlsZUhhbmRsZSYgaGFuZGxlKSB7IHJldHVybiBoYW5kbGUgIT0gaW52YWxpZFBsYXRmb3Jt
RmlsZUhhbmRsZTsgfQorCisvLyBQcmVmaXggaXMgd2hhdCB0aGUgZmlsZW5hbWUgc2hvdWxkIGJl
IHByZWZpeGVkIHdpdGgsIG5vdCB0aGUgZnVsbCBwYXRoLgorV1RGX0VYUE9SVF9QUklWQVRFIFN0
cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxl
SGFuZGxlJik7CitXVEZfRVhQT1JUX1BSSVZBVEUgUGxhdGZvcm1GaWxlSGFuZGxlIG9wZW5GaWxl
KGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlKTsKK1dURl9FWFBPUlRfUFJJVkFURSB2
b2lkIGNsb3NlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUmKTsKKy8vIFJldHVybnMgdGhlIHJlc3Vs
dGluZyBvZmZzZXQgZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaWxlIGlmIHN1Y2Nlc3NmdWws
IC0xIG90aGVyd2lzZS4KK1dURl9FWFBPUlRfUFJJVkFURSBsb25nIGxvbmcgc2Vla0ZpbGUoUGxh
dGZvcm1GaWxlSGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0LCBGaWxlU2Vla09yaWdpbik7Citib29s
IHRydW5jYXRlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQpOworLy8g
UmV0dXJucyBudW1iZXIgb2YgYnl0ZXMgYWN0dWFsbHkgcmVhZCBpZiBzdWNjZXNzZnVsLCAtMSBv
dGhlcndpc2UuCitXVEZfRVhQT1JUX1BSSVZBVEUgaW50IHdyaXRlVG9GaWxlKFBsYXRmb3JtRmls
ZUhhbmRsZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCk7CisvLyBSZXR1cm5zIG51bWJl
ciBvZiBieXRlcyBhY3R1YWxseSB3cml0dGVuIGlmIHN1Y2Nlc3NmdWwsIC0xIG90aGVyd2lzZS4K
K1dURl9FWFBPUlRfUFJJVkFURSBpbnQgcmVhZEZyb21GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwg
Y2hhciogZGF0YSwgaW50IGxlbmd0aCk7CisKK1dURl9FWFBPUlRfUFJJVkFURSBQbGF0Zm9ybUZp
bGVIYW5kbGUgb3BlbkFuZExvY2tGaWxlKGNvbnN0IFN0cmluZyYsIEZpbGVPcGVuTW9kZSwgT3B0
aW9uU2V0PEZpbGVMb2NrTW9kZT4gPSBGaWxlTG9ja01vZGU6OkV4Y2x1c2l2ZSk7CitXVEZfRVhQ
T1JUX1BSSVZBVEUgdm9pZCB1bmxvY2tBbmRDbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlKTsK
KworLy8gQXBwZW5kcyB0aGUgY29udGVudHMgb2YgdGhlIGZpbGUgZm91bmQgYXQgJ3BhdGgnIHRv
IHRoZSBvcGVuIFBsYXRmb3JtRmlsZUhhbmRsZS4KKy8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgd3Jp
dGUgd2FzIHN1Y2Nlc3NmdWwsIGZhbHNlIGlmIGl0IHdhcyBub3QuCitXVEZfRVhQT1JUX1BSSVZB
VEUgYm9vbCBhcHBlbmRGaWxlQ29udGVudHNUb0ZpbGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRo
LCBQbGF0Zm9ybUZpbGVIYW5kbGUmKTsKKworLy8gSGFyZCBsaW5rcyBhIGZpbGUgaWYgcG9zc2li
bGUsIGNvcGllcyBpdCBpZiBub3QuCitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBoYXJkTGlua09y
Q29weUZpbGUoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb24p
OworCisjaWYgVVNFKEZJTEVfTE9DSykKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGxvY2tGaWxl
KFBsYXRmb3JtRmlsZUhhbmRsZSwgT3B0aW9uU2V0PEZpbGVMb2NrTW9kZT4pOworV1RGX0VYUE9S
VF9QUklWQVRFIGJvb2wgdW5sb2NrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUpOworI2VuZGlmCisK
Ky8vIEVuY29kZSBhIHN0cmluZyBmb3IgdXNlIHdpdGhpbiBhIGZpbGUgbmFtZS4KK1dURl9FWFBP
UlRfUFJJVkFURSBTdHJpbmcgZW5jb2RlRm9yRmlsZU5hbWUoY29uc3QgU3RyaW5nJik7CitXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nIGRlY29kZUZyb21GaWxlbmFtZShjb25zdCBTdHJpbmcmKTsK
KworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZmlsZXNIYXZlU2FtZVZvbHVtZShjb25zdCBTdHJp
bmcmLCBjb25zdCBTdHJpbmcmKTsKKworI2lmIFVTRShDRikKK1dURl9FWFBPUlRfUFJJVkFURSBS
ZXRhaW5QdHI8Q0ZVUkxSZWY+IHBhdGhBc1VSTChjb25zdCBTdHJpbmcmKTsKKyNlbmRpZgorCisj
aWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCitTdHJpbmcgZmlsZW5hbWVGb3JEaXNw
bGF5KGNvbnN0IFN0cmluZyYpOworI2VuZGlmCisKKyNpZiBQTEFURk9STShXSU4pCitXVEZfRVhQ
T1JUX1BSSVZBVEUgU3RyaW5nIGxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpOwor
V1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyByb2FtaW5nVXNlclNwZWNpZmljU3RvcmFnZURpcmVj
dG9yeSgpOworI2VuZGlmCisKKyNpZiBQTEFURk9STShDT0NPQSkKK1dURl9FWFBPUlRfUFJJVkFU
RSBOU1N0cmluZyAqY3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KE5TU3RyaW5nICpkaXJlY3RvcnlQ
cmVmaXgpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZGVsZXRlTm9uRW1wdHlEaXJlY3Rvcnko
Y29uc3QgU3RyaW5nJik7CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKFdJTl9DQUlSTykKK1dURl9F
WFBPUlRfUFJJVkFURSBTdHJpbmcgY3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KCk7CitXVEZfRVhQ
T1JUX1BSSVZBVEUgYm9vbCBkZWxldGVOb25FbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsK
KyNlbmRpZgorCitXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHJlYWxQYXRoKGNvbnN0IFN0cmlu
ZyYpOworCitjbGFzcyBNYXBwZWRGaWxlRGF0YSB7CitwdWJsaWM6CisgICAgTWFwcGVkRmlsZURh
dGEoKSB7IH0KKyAgICBNYXBwZWRGaWxlRGF0YShNYXBwZWRGaWxlRGF0YSYmKTsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgTWFwcGVkRmlsZURhdGEoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgYm9v
bCYgc3VjY2Vzcyk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIH5NYXBwZWRGaWxlRGF0YSgpOwor
ICAgIE1hcHBlZEZpbGVEYXRhJiBvcGVyYXRvcj0oTWFwcGVkRmlsZURhdGEmJik7CisKKyAgICBl
eHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISFtX2ZpbGVEYXRhOyB9Cisg
ICAgY29uc3Qgdm9pZCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsZURhdGE7IH0KKyAgICB1
bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9maWxlU2l6ZTsgfQorCitwcml2YXRlOgor
ICAgIHZvaWQqIG1fZmlsZURhdGEgeyBudWxscHRyIH07CisgICAgdW5zaWduZWQgbV9maWxlU2l6
ZSB7IDAgfTsKK307CisKK2lubGluZSBNYXBwZWRGaWxlRGF0YTo6TWFwcGVkRmlsZURhdGEoTWFw
cGVkRmlsZURhdGEmJiBvdGhlcikKKyAgICA6IG1fZmlsZURhdGEoc3RkOjpleGNoYW5nZShvdGhl
ci5tX2ZpbGVEYXRhLCBudWxscHRyKSkKKyAgICAsIG1fZmlsZVNpemUoc3RkOjpleGNoYW5nZShv
dGhlci5tX2ZpbGVTaXplLCAwKSkKK3sKK30KKworaW5saW5lIE1hcHBlZEZpbGVEYXRhJiBNYXBw
ZWRGaWxlRGF0YTo6b3BlcmF0b3I9KE1hcHBlZEZpbGVEYXRhJiYgb3RoZXIpCit7CisgICAgbV9m
aWxlRGF0YSA9IHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9maWxlRGF0YSwgbnVsbHB0cik7CisgICAg
bV9maWxlU2l6ZSA9IHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9maWxlU2l6ZSwgMCk7CisgICAgcmV0
dXJuICp0aGlzOworfQorCit9IC8vIG5hbWVzcGFjZSBGaWxlU3lzdGVtCit9IC8vIG5hbWVzcGFj
ZSBXVEYKKworbmFtZXNwYWNlIEZpbGVTeXN0ZW0gPSBXVEY6OkZpbGVTeXN0ZW07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XVEYvd3RmL1Bs
YXRmb3JtR1RLLmNtYWtlCmluZGV4IDY3M2YwMmQwZDU5Njg1NDVhYzg3YThhOGU1N2IyNzczNGQ3
Mzk4OWMuLjdmZWMxMmRjMmZjMzE1YmM1MTY4ZjAyYjNiZjc2NDcwYzBkOWNiYWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0yMiw2ICsyMiw3IEBAIGxpc3QoQVBQRU5EIFdURl9TT1VS
Q0VTCiAgICAgZ2VuZXJpYy9NYWluVGhyZWFkR2VuZXJpYy5jcHAKICAgICBnZW5lcmljL1dvcmtR
dWV1ZUdlbmVyaWMuY3BwCiAKKyAgICBnbGliL0ZpbGVTeXN0ZW1HbGliLmNwcAogICAgIGdsaWIv
R0xpYlV0aWxpdGllcy5jcHAKICAgICBnbGliL0dSZWZQdHIuY3BwCiAgICAgZ2xpYi9SdW5Mb29w
R0xpYi5jcHAKQEAgLTU1LDUgKzU2LDYgQEAgbGlzdChBUFBFTkQgV1RGX0xJQlJBUklFUwogKQog
CiBsaXN0KEFQUEVORCBXVEZfU1lTVEVNX0lOQ0xVREVfRElSRUNUT1JJRVMKKyAgICAke0dJT19V
TklYX0lOQ0xVREVfRElSU30KICAgICAke0dMSUJfSU5DTFVERV9ESVJTfQogKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybU1hYy5jbWFrZQppbmRleCBmYzFlNTdiOWNiMjZiNmYyYjZhYmE2MTQzYmQxOGFlYmJiMTZi
NTM0Li4wZTNlMTQxNjA5MTJiNzg2MTc3MzQzNTBhOTI1ZDk5ZGJhMmNkYTAxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Q
bGF0Zm9ybU1hYy5jbWFrZQpAQCAtMzIsNiArMzIsOCBAQCBsaXN0KEFQUEVORCBXVEZfUFVCTElD
X0hFQURFUlMKICAgICBzcGkvZGFyd2luL1hQQ1NQSS5oCiAgICAgc3BpL2Rhcndpbi9keWxkU1BJ
LmgKIAorICAgIHNwaS9tYWMvTWV0YWRhdGFTUEkuaAorCiAgICAgdGV4dC9jZi9UZXh0QnJlYWtJ
dGVyYXRvckNGLmgKICkKIApAQCAtNDIsNiArNDQsNyBAQCBsaXN0KEFQUEVORCBXVEZfU09VUkNF
UwogICAgIFNjaGVkdWxlUGFpck1hYy5tbQogCiAgICAgY2YvQ0ZVUkxFeHRyYXMuY3BwCisgICAg
Y2YvRmlsZVN5c3RlbUNGLmNwcAogICAgIGNmL0xhbmd1YWdlQ0YuY3BwCiAgICAgY2YvUnVuTG9v
cENGLmNwcAogICAgIGNmL1VSTENGLmNwcApAQCAtNDksNiArNTIsNyBAQCBsaXN0KEFQUEVORCBX
VEZfU09VUkNFUwogICAgIGNvY29hL0F1dG9kcmFpbmVkUG9vbC5jcHAKICAgICBjb2NvYS9DUFVU
aW1lQ29jb2EuY3BwCiAgICAgY29jb2EvRW50aXRsZW1lbnRzLm1tCisgICAgY29jb2EvRmlsZVN5
c3RlbUNvY29hLm1tCiAgICAgY29jb2EvTWFjaFNlbmRSaWdodC5jcHAKICAgICBjb2NvYS9NYWlu
VGhyZWFkQ29jb2EubW0KICAgICBjb2NvYS9NZW1vcnlGb290cHJpbnRDb2NvYS5jcHAKQEAgLTU4
LDYgKzYyLDkgQEAgbGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKICAgICBjb2NvYS9Xb3JrUXVldWVD
b2NvYS5jcHAKIAogICAgIG1hYy9EZXByZWNhdGVkU3ltYm9sc1VzZWRCeVNhZmFyaS5tbQorICAg
IG1hYy9GaWxlU3lzdGVtTWFjLm1tCisKKyAgICBwb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCiAK
ICAgICB0ZXh0L2NmL0F0b21pY1N0cmluZ0ltcGxDRi5jcHAKICAgICB0ZXh0L2NmL1N0cmluZ0NG
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1QbGF5U3RhdGlvbi5jbWFr
ZSBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtUGxheVN0YXRpb24uY21ha2UKaW5kZXggYjk3ZmVj
NDBlZDMwYjE3N2IyZjUzNWI2MjE2MGVmMWVlZTJkZTU2ZS4uM2U5ZTc1YzkyOGE2Yzk0NjA1YjRi
ZmNhYTdmYmIyYjlmNDJmODM5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1Q
bGF5U3RhdGlvbi5jbWFrZQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVBsYXlTdGF0aW9u
LmNtYWtlCkBAIC01LDYgKzUsOCBAQCBsaXN0KEFQUEVORCBXVEZfU09VUkNFUwogICAgIGdlbmVy
aWMvUnVuTG9vcEdlbmVyaWMuY3BwCiAgICAgZ2VuZXJpYy9Xb3JrUXVldWVHZW5lcmljLmNwcAog
CisgICAgcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcAorCiAgICAgdGV4dC91bml4L1RleHRCcmVh
a0l0ZXJhdG9ySW50ZXJuYWxJQ1VVbml4LmNwcAogCiAgICAgdW5peC9DUFVUaW1lVW5peC5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV1BFLmNtYWtlIGIvU291cmNlL1dU
Ri93dGYvUGxhdGZvcm1XUEUuY21ha2UKaW5kZXggNDczY2ZkNjAyNmIwNjUyYzJmMDJkMmIyODUz
OTJiMWQ4MDJmMGJiYy4uMDg2YWRkM2FhOTE5ZmM0OTIzOWQ3MWMxY2M4Njg1YzVmYzczOWJkNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1XUEUuY21ha2UKKysrIGIvU291cmNl
L1dURi93dGYvUGxhdGZvcm1XUEUuY21ha2UKQEAgLTE2LDYgKzE2LDcgQEAgbGlzdChBUFBFTkQg
V1RGX1NPVVJDRVMKICAgICBnZW5lcmljL01haW5UaHJlYWRHZW5lcmljLmNwcAogICAgIGdlbmVy
aWMvV29ya1F1ZXVlR2VuZXJpYy5jcHAKIAorICAgIGdsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCiAg
ICAgZ2xpYi9HTGliVXRpbGl0aWVzLmNwcAogICAgIGdsaWIvR1JlZlB0ci5jcHAKICAgICBnbGli
L1J1bkxvb3BHTGliLmNwcApAQCAtNDAsNSArNDEsNiBAQCBsaXN0KEFQUEVORCBXVEZfTElCUkFS
SUVTCiApCiAKIGxpc3QoQVBQRU5EIFdURl9TWVNURU1fSU5DTFVERV9ESVJFQ1RPUklFUworICAg
ICR7R0lPX1VOSVhfSU5DTFVERV9ESVJTfQogICAgICR7R0xJQl9JTkNMVURFX0RJUlN9CiApCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdpbi5jbWFrZSBiL1NvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtV2luLmNtYWtlCmluZGV4IDJiOGI1ZjgyNzBlYjVmMjQ2NzYwNzJkZDEyNDU3
NmRhOTMwMWYwZWEuLmI2YzBhYzZmNGRlNWUwNWYyN2Q0ZDlhYzBmZmJkNWNjNDA5N2E2ZTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV2luLmNtYWtlCisrKyBiL1NvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtV2luLmNtYWtlCkBAIC0xMiwxNCArMTIsMjAgQEAgbGlzdChBUFBFTkQg
V1RGX1NPVVJDRVMKIAogICAgIHdpbi9DUFVUaW1lV2luLmNwcAogICAgIHdpbi9EYmdIZWxwZXJX
aW4uY3BwCisgICAgd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCiAgICAgd2luL0xhbmd1YWdlV2luLmNw
cAogICAgIHdpbi9NYWluVGhyZWFkV2luLmNwcAogICAgIHdpbi9NZW1vcnlGb290cHJpbnRXaW4u
Y3BwCiAgICAgd2luL01lbW9yeVByZXNzdXJlSGFuZGxlcldpbi5jcHAKKyAgICB3aW4vUGF0aFdh
bGtlci5jcHAKICAgICB3aW4vUnVuTG9vcFdpbi5jcHAKICAgICB3aW4vV29ya1F1ZXVlV2luLmNw
cAogKQogCitsaXN0KEFQUEVORCBXVEZfTElCUkFSSUVTCisgICAgc2hsd2FwaQorKQorCiBpZiAo
VVNFX0NGKQogICAgIGxpc3QoQVBQRU5EIFdURl9QVUJMSUNfSEVBREVSUwogICAgICAgICBjZi9D
RlVSTEV4dHJhcy5oCkBAIC0yOSw2ICszNSw3IEBAIGlmIChVU0VfQ0YpCiAgICAgKQogICAgIGxp
c3QoQVBQRU5EIFdURl9TT1VSQ0VTCiAgICAgICAgIGNmL0NGVVJMRXh0cmFzLmNwcAorICAgICAg
ICBjZi9GaWxlU3lzdGVtQ0YuY3BwCiAgICAgICAgIGNmL1VSTENGLmNwcAogCiAgICAgICAgIHRl
eHQvY2YvQXRvbWljU3RyaW5nSW1wbENGLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
Y2YvRmlsZVN5c3RlbUNGLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2NmL0ZpbGVTeXN0ZW1DRi5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNzEyZDY1ZmNhZDI5NmIzOTYzZjYwYTQ0OTRiNmQ3ZTkyZDRhYzUwYwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL2NmL0ZpbGVTeXN0ZW1DRi5jcHAKQEAgLTAs
MCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAxMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUg
bmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRz
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4K
KworI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK0NTdHJpbmcgRmlsZVN5c3Rl
bTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBS
ZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmU3RyaW5nID0gcGF0aC5jcmVhdGVDRlN0cmluZygpOwor
CisgICAgaWYgKCFjZlN0cmluZykKKyAgICAgICAgcmV0dXJuIENTdHJpbmcoKTsKKworICAgIENG
SW5kZXggc2l6ZSA9IENGU3RyaW5nR2V0TWF4aW11bVNpemVPZkZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihjZlN0cmluZy5nZXQoKSk7CisKKyAgICBWZWN0b3I8Y2hhcj4gYnVmZmVyKHNpemUpOwor
CisgICAgaWYgKCFDRlN0cmluZ0dldEZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjZlN0cmluZy5n
ZXQoKSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSkpIHsKKyAgICAgICAgTE9HX0VSUk9S
KCJGYWlsZWQgdG8gZ2V0IGZpbGVzeXN0ZW0gcmVwcmVzZW50YXRpb24gdG8gY3JlYXRlIENTdHJp
bmcgZnJvbSBjZlN0cmluZyIpOworICAgICAgICByZXR1cm4gQ1N0cmluZygpOworICAgIH0KKwor
ICAgIHJldHVybiBDU3RyaW5nKGJ1ZmZlci5kYXRhKCksIHN0cmxlbihidWZmZXIuZGF0YSgpKSk7
Cit9CisKK1N0cmluZyBGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKGNvbnN0IGNoYXIqIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbikKK3sKKyAgICByZXR1cm4g
YWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oa0NGQWxs
b2NhdG9yRGVmYXVsdCwgZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKSkuZ2V0KCk7Cit9CisKK1Jl
dGFpblB0cjxDRlVSTFJlZj4gRmlsZVN5c3RlbTo6cGF0aEFzVVJMKGNvbnN0IFN0cmluZyYgcGF0
aCkKK3sKKyAgICBDRlVSTFBhdGhTdHlsZSBwYXRoU3R5bGU7CisjaWYgUExBVEZPUk0oV0lOKQor
ICAgIHBhdGhTdHlsZSA9IGtDRlVSTFdpbmRvd3NQYXRoU3R5bGU7CisjZWxzZQorICAgIHBhdGhT
dHlsZSA9IGtDRlVSTFBPU0lYUGF0aFN0eWxlOworI2VuZGlmCisgICAgcmV0dXJuIGFkb3B0Q0Yo
Q0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoMCwgcGF0aC5jcmVhdGVDRlN0cmluZygpLmdl
dCgpLCBwYXRoU3R5bGUsIEZBTFNFKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tIGIvU291cmNlL1dU
Ri93dGYvY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIzODU3NDY5Y2UwNDY5
NmJhYWEzMjYzNzQzOGQxMzE2NmJmMDRmZjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9jb2NvYS9GaWxlU3lzdGVtQ29jb2EubW0KQEAgLTAsMCArMSwxNDMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDctMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgi
QXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25m
aWcuaCIKKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CisKK0BpbnRlcmZhY2UgV1RGV2ViRmls
ZU1hbmFnZXJEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxOU0ZpbGVNYW5hZ2VyRGVsZWdhdGU+CitAZW5k
CisKK0BpbXBsZW1lbnRhdGlvbiBXVEZXZWJGaWxlTWFuYWdlckRlbGVnYXRlCisKKy0gKEJPT0wp
ZmlsZU1hbmFnZXI6KE5TRmlsZU1hbmFnZXIgKilmaWxlTWFuYWdlciBzaG91bGRQcm9jZWVkQWZ0
ZXJFcnJvcjooTlNFcnJvciAqKWVycm9yIG1vdmluZ0l0ZW1BdFVSTDooTlNVUkwgKilzcmNVUkwg
dG9VUkw6KE5TVVJMICopZHN0VVJMCit7CisgICAgVU5VU0VEX1BBUkFNKGZpbGVNYW5hZ2VyKTsK
KyAgICBVTlVTRURfUEFSQU0oc3JjVVJMKTsKKyAgICBVTlVTRURfUEFSQU0oZHN0VVJMKTsKKyAg
ICByZXR1cm4gZXJyb3IuY29kZSA9PSBOU0ZpbGVXcml0ZUZpbGVFeGlzdHNFcnJvcjsKK30KKwor
QGVuZAorCituYW1lc3BhY2UgV1RGIHsKKworbmFtZXNwYWNlIEZpbGVTeXN0ZW0geworCitTdHJp
bmcgaG9tZURpcmVjdG9yeVBhdGgoKQoreworICAgIHJldHVybiBOU0hvbWVEaXJlY3RvcnkoKTsK
K30KKworU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0
Zm9ybUZpbGVIYW5kbGUmIHBsYXRmb3JtRmlsZUhhbmRsZSkKK3sKKyAgICBwbGF0Zm9ybUZpbGVI
YW5kbGUgPSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOworCisgICAgVmVjdG9yPGNoYXI+IHRl
bXBvcmFyeUZpbGVQYXRoKFBBVEhfTUFYKTsKKyAgICBpZiAoIWNvbmZzdHIoX0NTX0RBUldJTl9V
U0VSX1RFTVBfRElSLCB0ZW1wb3JhcnlGaWxlUGF0aC5kYXRhKCksIHRlbXBvcmFyeUZpbGVQYXRo
LnNpemUoKSkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIC8vIFNocmluayB0aGUg
dmVjdG9yLgorICAgIHRlbXBvcmFyeUZpbGVQYXRoLnNocmluayhzdHJsZW4odGVtcG9yYXJ5Rmls
ZVBhdGguZGF0YSgpKSk7CisKKyAgICAvLyBGSVhNRTogQ2hhbmdlIHRvIGEgcnVudGltZSBhc3Nl
cnRpb24gdGhhdCB0aGUgcGF0aCBlbmRzIHdpdGggYSBzbGFzaCBvbmNlIDxyZGFyOi8vcHJvYmxl
bS8yMzU3OTA3Nz4gaXMKKyAgICAvLyBmaXhlZCBpbiBhbGwgaU9TIFNpbXVsYXRvciB2ZXJzaW9u
cyB0aGF0IHdlIHVzZS4KKyAgICBpZiAodGVtcG9yYXJ5RmlsZVBhdGgubGFzdCgpICE9ICcvJykK
KyAgICAgICAgdGVtcG9yYXJ5RmlsZVBhdGguYXBwZW5kKCcvJyk7CisKKyAgICAvLyBBcHBlbmQg
dGhlIGZpbGUgbmFtZS4KKyAgICBDU3RyaW5nIHByZWZpeFV0ZjggPSBwcmVmaXgudXRmOCgpOwor
ICAgIHRlbXBvcmFyeUZpbGVQYXRoLmFwcGVuZChwcmVmaXhVdGY4LmRhdGEoKSwgcHJlZml4VXRm
OC5sZW5ndGgoKSk7CisgICAgdGVtcG9yYXJ5RmlsZVBhdGguYXBwZW5kKCJYWFhYWFgiLCA2KTsK
KyAgICB0ZW1wb3JhcnlGaWxlUGF0aC5hcHBlbmQoJ1wwJyk7CisKKyAgICBwbGF0Zm9ybUZpbGVI
YW5kbGUgPSBta3N0ZW1wKHRlbXBvcmFyeUZpbGVQYXRoLmRhdGEoKSk7CisgICAgaWYgKHBsYXRm
b3JtRmlsZUhhbmRsZSA9PSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQorICAgICAgICByZXR1
cm4gU3RyaW5nKCk7CisKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOCh0ZW1wb3JhcnlGaWxl
UGF0aC5kYXRhKCkpOworfQorCitib29sIG1vdmVGaWxlKGNvbnN0IFN0cmluZyYgb2xkUGF0aCwg
Y29uc3QgU3RyaW5nJiBuZXdQYXRoKQoreworICAgIC8vIE92ZXJ3cml0ZSBleGlzdGluZyBmaWxl
cy4KKyAgICBhdXRvIG1hbmFnZXIgPSBhZG9wdE5TKFtbTlNGaWxlTWFuYWdlciBhbGxvY10gaW5p
dF0pOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbV1RGV2ViRmlsZU1hbmFnZXJEZWxl
Z2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFttYW5hZ2VyIHNldERlbGVnYXRlOmRlbGVnYXRlLmdl
dCgpXTsKKworICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOworICAgIGJvb2wgc3VjY2VzcyA9IFtt
YW5hZ2VyIG1vdmVJdGVtQXRVUkw6W05TVVJMIGZpbGVVUkxXaXRoUGF0aDpvbGRQYXRoXSB0b1VS
TDpbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOm5ld1BhdGhdIGVycm9yOiZlcnJvcl07CisgICAgaWYg
KCFzdWNjZXNzKQorICAgICAgICBOU0xvZyhAIkVycm9yIGluIG1vdmVGaWxlOiAlQCIsIGVycm9y
KTsKKyAgICByZXR1cm4gc3VjY2VzczsKK30KKworYm9vbCBnZXRWb2x1bWVGcmVlU3BhY2UoY29u
c3QgU3RyaW5nJiBwYXRoLCB1aW50NjRfdCYgZnJlZVNwYWNlKQoreworICAgIE5TRGljdGlvbmFy
eSAqZmlsZVN5c3RlbUF0dHJpYnV0ZXNEaWN0aW9uYXJ5ID0gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1
bHRNYW5hZ2VyXSBhdHRyaWJ1dGVzT2ZGaWxlU3lzdGVtRm9yUGF0aDooTlNTdHJpbmcgKilwYXRo
IGVycm9yOk5VTExdOworICAgIGlmICghZmlsZVN5c3RlbUF0dHJpYnV0ZXNEaWN0aW9uYXJ5KQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgZnJlZVNwYWNlID0gW1tmaWxlU3lzdGVtQXR0cmli
dXRlc0RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5Ok5TRmlsZVN5c3RlbUZyZWVTaXplXSB1bnNpZ25l
ZExvbmdMb25nVmFsdWVdOworICAgIHJldHVybiB0cnVlOworfQorCitOU1N0cmluZyAqY3JlYXRl
VGVtcG9yYXJ5RGlyZWN0b3J5KE5TU3RyaW5nICpkaXJlY3RvcnlQcmVmaXgpCit7CisgICAgTlNT
dHJpbmcgKnRlbXBEaXJlY3RvcnkgPSBOU1RlbXBvcmFyeURpcmVjdG9yeSgpOworICAgIGlmICgh
dGVtcERpcmVjdG9yeSB8fCAhW3RlbXBEaXJlY3RvcnkgbGVuZ3RoXSkKKyAgICAgICAgcmV0dXJu
IG5pbDsKKworICAgIGlmICghZGlyZWN0b3J5UHJlZml4IHx8ICFbZGlyZWN0b3J5UHJlZml4IGxl
bmd0aF0pCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBOU1N0cmluZyAqdGVtcERpcmVjdG9y
eUNvbXBvbmVudCA9IFtkaXJlY3RvcnlQcmVmaXggc3RyaW5nQnlBcHBlbmRpbmdTdHJpbmc6QCIt
WFhYWFhYWFgiXTsKKyAgICBjb25zdCBjaGFyKiB0ZW1wRGlyZWN0b3J5Q1N0cmluZyA9IFtbdGVt
cERpcmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6dGVtcERpcmVjdG9yeUNv
bXBvbmVudF0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uXTsKKyAgICBpZiAoIXRlbXBEaXJlY3Rv
cnlDU3RyaW5nKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgY29uc3Qgc2l6ZV90IGxlbmd0
aCA9IHN0cmxlbih0ZW1wRGlyZWN0b3J5Q1N0cmluZyk7CisgICAgQVNTRVJUKGxlbmd0aCA8PSBN
QVhQQVRITEVOKTsKKyAgICBpZiAobGVuZ3RoID4gTUFYUEFUSExFTikKKyAgICAgICAgcmV0dXJu
IG5pbDsKKworICAgIGNvbnN0IHNpemVfdCBsZW5ndGhQbHVzTnVsbFRlcm1pbmF0b3IgPSBsZW5n
dGggKyAxOworICAgIFZlY3RvcjxjaGFyLCBNQVhQQVRITEVOICsgMT4gcGF0aChsZW5ndGhQbHVz
TnVsbFRlcm1pbmF0b3IpOworICAgIG1lbWNweShwYXRoLmRhdGEoKSwgdGVtcERpcmVjdG9yeUNT
dHJpbmcsIGxlbmd0aFBsdXNOdWxsVGVybWluYXRvcik7CisKKyAgICBpZiAoIW1rZHRlbXAocGF0
aC5kYXRhKCkpKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgcmV0dXJuIFtbTlNGaWxlTWFu
YWdlciBkZWZhdWx0TWFuYWdlcl0gc3RyaW5nV2l0aEZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbjpw
YXRoLmRhdGEoKSBsZW5ndGg6bGVuZ3RoXTsKK30KKworYm9vbCBkZWxldGVOb25FbXB0eURpcmVj
dG9yeShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgcmV0dXJuIFtbTlNGaWxlTWFuYWdlciBk
ZWZhdWx0TWFuYWdlcl0gcmVtb3ZlSXRlbUF0UGF0aDpwYXRoIGVycm9yOm5pbF07Cit9CisKK30g
Ly8gbmFtZXNwYWNlIEZpbGVTeXN0ZW0KK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9n
bGliL0ZpbGVTeXN0ZW1HbGliLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZmY2YmQzZmE1NDgyYTVhMGY4NDBj
OTY3ODQyYzQ1YjhhZTEyMmNmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvZ2xp
Yi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTAsMCArMSw0NjkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDcsIDIwMDkgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIKKyAqIENvcHlyaWdodCAo
QykgMjAwOCBDb2xsYWJvcmEsIEx0ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTAgTW90
b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgorCisjaW5jbHVkZSA8Z2lvL2dmaWxl
ZGVzY3JpcHRvcmJhc2VkLmg+CisjaW5jbHVkZSA8Z2lvL2dpby5oPgorI2luY2x1ZGUgPGdsaWIu
aD4KKyNpbmNsdWRlIDxnbGliL2dzdGRpby5oPgorI2luY2x1ZGUgPHN5cy9maWxlLmg+CisjaW5j
bHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZU1ldGFkYXRhLmg+Cisj
aW5jbHVkZSA8d3RmL1VVSUQuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HTGliVXRpbGl0aWVzLmg+
CisjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlx
dWVQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCitu
YW1lc3BhY2UgV1RGIHsKKworbmFtZXNwYWNlIEZpbGVTeXN0ZW0geworCisvKiBPbiBsaW51eCBm
aWxlIG5hbWVzIGFyZSBqdXN0IHJhdyBieXRlcywgc28gYWxzbyBzdHJpbmdzIHRoYXQgY2Fubm90
IGJlIGVuY29kZWQgaW4gYW55IHdheQorICogYXJlIHZhbGlkIGZpbGUgbmFtZXMuIFRoaXMgbWVh
biB0aGF0IHdlIGNhbm5vdCBqdXN0IHN0b3JlIGEgZmlsZSBuYW1lIGFzLWlzIGluIGEgU3RyaW5n
CisgKiBidXQgd2UgaGF2ZSB0byBlc2NhcGUgaXQuCisgKiBPbiBXaW5kb3dzIHRoZSBHTGliIGZp
bGUgbmFtZSBlbmNvZGluZyBpcyBhbHdheXMgVVRGLTggc28gd2UgY2FuIG9wdGltaXplIHRoaXMg
Y2FzZS4gKi8KK1N0cmluZyBzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0
IGNoYXIqIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbikKK3sKKyAgICBpZiAoIWZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbikKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisjaWYgT1MoV0lORE9X
UykKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24p
OworI2Vsc2UKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBlc2NhcGVkU3RyaW5nKGdfdXJpX2VzY2Fw
ZV9zdHJpbmcoZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uLCAiLzoiLCBGQUxTRSkpOworICAgIHJl
dHVybiBlc2NhcGVkU3RyaW5nLmdldCgpOworI2VuZGlmCit9CisKK3N0YXRpYyBHVW5pcXVlUHRy
PGNoYXI+IHVuZXNjYXBlZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBpZiAo
cGF0aC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworI2lmIE9TKFdJTkRPV1Mp
CisgICAgcmV0dXJuIEdVbmlxdWVQdHI8Y2hhcj4oZ19zdHJkdXAocGF0aC51dGY4KCkuZGF0YSgp
KSk7CisjZWxzZQorICAgIHJldHVybiBHVW5pcXVlUHRyPGNoYXI+KGdfdXJpX3VuZXNjYXBlX3N0
cmluZyhwYXRoLnV0ZjgoKS5kYXRhKCksIG51bGxwdHIpKTsKKyNlbmRpZgorfQorCitDU3RyaW5n
IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIHBhdGgpCit7CisjaWYgT1Mo
V0lORE9XUykKKyAgICByZXR1cm4gcGF0aC51dGY4KCk7CisjZWxzZQorICAgIEdVbmlxdWVQdHI8
Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUocGF0aCk7CisgICAgcmV0dXJuIGZp
bGVuYW1lLmdldCgpOworI2VuZGlmCit9CisKKy8vIENvbnZlcnRzIGEgc3RyaW5nIHRvIHNvbWV0
aGluZyBzdWl0YWJsZSB0byBiZSBkaXNwbGF5ZWQgdG8gdGhlIHVzZXIuCitTdHJpbmcgZmlsZW5h
bWVGb3JEaXNwbGF5KGNvbnN0IFN0cmluZyYgc3RyaW5nKQoreworI2lmIE9TKFdJTkRPV1MpCisg
ICAgcmV0dXJuIHN0cmluZzsKKyNlbHNlCisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUg
PSB1bmVzY2FwZWRGaWxlbmFtZShzdHJpbmcpOworICAgIGlmICghZmlsZW5hbWUpCisgICAgICAg
IHJldHVybiBzdHJpbmc7CisKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBkaXNwbGF5KGdfZmlsZW5h
bWVfdG9fdXRmOChmaWxlbmFtZS5nZXQoKSwgLTEsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIp
KTsKKyAgICBpZiAoIWRpc3BsYXkpCisgICAgICAgIHJldHVybiBzdHJpbmc7CisKKyAgICByZXR1
cm4gU3RyaW5nOjpmcm9tVVRGOChkaXNwbGF5LmdldCgpKTsKKyNlbmRpZgorfQorCitib29sIGZp
bGVFeGlzdHMoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZp
bGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUocGF0aCk7CisgICAgcmV0dXJuIGZpbGVuYW1lID8g
Z19maWxlX3Rlc3QoZmlsZW5hbWUuZ2V0KCksIEdfRklMRV9URVNUX0VYSVNUUykgOiBmYWxzZTsK
K30KKworYm9vbCBkZWxldGVGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBHVW5pcXVl
UHRyPGdjaGFyPiBmaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGgpOworICAgIHJldHVy
biBmaWxlbmFtZSA/IGdfcmVtb3ZlKGZpbGVuYW1lLmdldCgpKSAhPSAtMSA6IGZhbHNlOworfQor
Citib29sIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBH
VW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGgpOworICAg
IHJldHVybiBmaWxlbmFtZSA/IGdfcm1kaXIoZmlsZW5hbWUuZ2V0KCkpICE9IC0xIDogZmFsc2U7
Cit9CisKK3N0YXRpYyBib29sIGdldEZpbGVTdGF0KGNvbnN0IFN0cmluZyYgcGF0aCwgR1N0YXRC
dWYqIHN0YXRCdWZmZXIpCit7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUgPSB1bmVz
Y2FwZWRGaWxlbmFtZShwYXRoKTsKKyAgICBpZiAoIWZpbGVuYW1lKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICByZXR1cm4gZ19zdGF0KGZpbGVuYW1lLmdldCgpLCBzdGF0QnVmZmVyKSAh
PSAtMTsKK30KKworc3RhdGljIGJvb2wgZ2V0RmlsZUxTdGF0KGNvbnN0IFN0cmluZyYgcGF0aCwg
R1N0YXRCdWYqIHN0YXRCdWZmZXIpCit7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUg
PSB1bmVzY2FwZWRGaWxlbmFtZShwYXRoKTsKKyAgICBpZiAoIWZpbGVuYW1lKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gZ19sc3RhdChmaWxlbmFtZS5nZXQoKSwgc3RhdEJ1
ZmZlcikgIT0gLTE7Cit9CisKK2Jvb2wgZ2V0RmlsZVNpemUoY29uc3QgU3RyaW5nJiBwYXRoLCBs
b25nIGxvbmcmIHJlc3VsdFNpemUpCit7CisgICAgR1N0YXRCdWYgc3RhdFJlc3VsdDsKKyAgICBp
ZiAoIWdldEZpbGVTdGF0KHBhdGgsICZzdGF0UmVzdWx0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgcmVzdWx0U2l6ZSA9IHN0YXRSZXN1bHQuc3Rfc2l6ZTsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworYm9vbCBnZXRGaWxlU2l6ZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBsb25n
IGxvbmcmIHJlc3VsdFNpemUpCit7CisgICAgYXV0byBpbmZvID0gZ19maWxlX2lvX3N0cmVhbV9x
dWVyeV9pbmZvKGhhbmRsZSwgR19GSUxFX0FUVFJJQlVURV9TVEFOREFSRF9TSVpFLCBudWxscHRy
LCBudWxscHRyKTsKKyAgICBpZiAoIWluZm8pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IHJlc3VsdFNpemUgPSBnX2ZpbGVfaW5mb19nZXRfc2l6ZShpbmZvKTsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworT3B0aW9uYWw8V2FsbFRpbWU+IGdldEZpbGVDcmVhdGlvblRpbWUoY29uc3QgU3Ry
aW5nJikKK3sKKyAgICAvLyBGSVhNRTogSXMgdGhlcmUgYSB3YXkgdG8gcmV0cmlldmUgZmlsZSBj
cmVhdGlvbiB0aW1lIHdpdGggR3RrIG9uIHBsYXRmb3JtcyB0aGF0IHN1cHBvcnQgaXQ/CisgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKK30KKworT3B0aW9uYWw8V2FsbFRpbWU+IGdldEZpbGVNb2Rp
ZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBHU3RhdEJ1ZiBzdGF0UmVz
dWx0OworICAgIGlmICghZ2V0RmlsZVN0YXQocGF0aCwgJnN0YXRSZXN1bHQpKQorICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25k
cyhzdGF0UmVzdWx0LnN0X210aW1lKTsKK30KKworc3RhdGljIEZpbGVNZXRhZGF0YTo6VHlwZSB0
b0ZpbGVNZXRhdGFUeXBlKEdTdGF0QnVmIHN0YXRSZXN1bHQpCit7CisgICAgaWYgKFNfSVNESVIo
c3RhdFJlc3VsdC5zdF9tb2RlKSkKKyAgICAgICAgcmV0dXJuIEZpbGVNZXRhZGF0YTo6VHlwZTo6
RGlyZWN0b3J5OworICAgIGlmIChTX0lTTE5LKHN0YXRSZXN1bHQuc3RfbW9kZSkpCisgICAgICAg
IHJldHVybiBGaWxlTWV0YWRhdGE6OlR5cGU6OlN5bWJvbGljTGluazsKKyAgICByZXR1cm4gRmls
ZU1ldGFkYXRhOjpUeXBlOjpGaWxlOworfQorCitzdGF0aWMgT3B0aW9uYWw8RmlsZU1ldGFkYXRh
PiBmaWxlTWV0YWRhdGFVc2luZ0Z1bmN0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCwgYm9vbCAoKnN0
YXRGdW5jKShjb25zdCBTdHJpbmcmLCBHU3RhdEJ1ZiopKQoreworICAgIEdTdGF0QnVmIHN0YXRS
ZXN1bHQ7CisgICAgaWYgKCFzdGF0RnVuYyhwYXRoLCAmc3RhdFJlc3VsdCkpCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBTdHJpbmcgZmlsZW5hbWUgPSBwYXRoR2V0RmlsZU5h
bWUocGF0aCk7CisgICAgYm9vbCBpc0hpZGRlbiA9ICFmaWxlbmFtZS5pc0VtcHR5KCkgJiYgZmls
ZW5hbWVbMF0gPT0gJy4nOworCisgICAgcmV0dXJuIEZpbGVNZXRhZGF0YSB7CisgICAgICAgIFdh
bGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhzdGF0UmVzdWx0LnN0X210aW1lKSwKKyAgICAgICAgc3Rh
dFJlc3VsdC5zdF9zaXplLAorICAgICAgICBpc0hpZGRlbiwKKyAgICAgICAgdG9GaWxlTWV0YXRh
VHlwZShzdGF0UmVzdWx0KQorICAgIH07Cit9CisKK09wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmls
ZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICByZXR1cm4gZmlsZU1ldGFkYXRh
VXNpbmdGdW5jdGlvbihwYXRoLCAmZ2V0RmlsZUxTdGF0KTsKK30KKworT3B0aW9uYWw8RmlsZU1l
dGFkYXRhPiBmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyhjb25zdCBTdHJpbmcmIHBhdGgp
Cit7CisgICAgcmV0dXJuIGZpbGVNZXRhZGF0YVVzaW5nRnVuY3Rpb24ocGF0aCwgJmdldEZpbGVT
dGF0KTsKK30KKworU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChjb25zdCBTdHJpbmcm
IHBhdGgsIGNvbnN0IFN0cmluZyYgY29tcG9uZW50KQoreworICAgIGlmIChwYXRoLmVuZHNXaXRo
KEdfRElSX1NFUEFSQVRPUl9TKSkKKyAgICAgICAgcmV0dXJuIHBhdGggKyBjb21wb25lbnQ7Cisg
ICAgcmV0dXJuIHBhdGggKyBHX0RJUl9TRVBBUkFUT1JfUyArIGNvbXBvbmVudDsKK30KKworU3Ry
aW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMoU3RyaW5nVmlldyBwYXRoLCBjb25zdCBWZWN0
b3I8U3RyaW5nVmlldz4mIGNvbXBvbmVudHMpCit7CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVy
OworICAgIGJ1aWxkZXIuYXBwZW5kKHBhdGgpOworICAgIGZvciAoYXV0byYgY29tcG9uZW50IDog
Y29tcG9uZW50cykgeworICAgICAgICBidWlsZGVyLmFwcGVuZChHX0RJUl9TRVBBUkFUT1JfUyk7
CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGNvbXBvbmVudCk7CisgICAgfQorICAgIHJldHVybiBi
dWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKK2Jvb2wgbWFrZUFsbERpcmVjdG9yaWVzKGNvbnN0IFN0
cmluZyYgcGF0aCkKK3sKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZSA9IHVuZXNjYXBl
ZEZpbGVuYW1lKHBhdGgpOworICAgIHJldHVybiBmaWxlbmFtZSA/IGdfbWtkaXJfd2l0aF9wYXJl
bnRzKGZpbGVuYW1lLmdldCgpLCBTX0lSV1hVKSAhPSAtMSA6IGZhbHNlOworfQorCitTdHJpbmcg
aG9tZURpcmVjdG9yeVBhdGgoKQoreworICAgIHJldHVybiBzdHJpbmdGcm9tRmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKGdfZ2V0X2hvbWVfZGlyKCkpOworfQorCitib29sIGNyZWF0ZVN5bWJvbGlj
TGluayhjb25zdCBTdHJpbmcmIHRhcmdldFBhdGgsIGNvbnN0IFN0cmluZyYgc3ltYm9saWNMaW5r
UGF0aCkKK3sKKyAgICBDU3RyaW5nIHRhcmdldFBhdGhGU1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbih0YXJnZXRQYXRoKTsKKyAgICBpZiAoIXRhcmdldFBhdGhGU1JlcC5kYXRhKCkgfHwg
dGFyZ2V0UGF0aEZTUmVwLmRhdGEoKVswXSA9PSAnXDAnKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBDU3RyaW5nIHN5bWJvbGljTGlua1BhdGhGU1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihzeW1ib2xpY0xpbmtQYXRoKTsKKyAgICBpZiAoIXN5bWJvbGljTGlua1BhdGhGU1Jl
cC5kYXRhKCkgfHwgc3ltYm9saWNMaW5rUGF0aEZTUmVwLmRhdGEoKVswXSA9PSAnXDAnKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gIXN5bWxpbmsodGFyZ2V0UGF0aEZTUmVw
LmRhdGEoKSwgc3ltYm9saWNMaW5rUGF0aEZTUmVwLmRhdGEoKSk7Cit9CisKK1N0cmluZyBwYXRo
R2V0RmlsZU5hbWUoY29uc3QgU3RyaW5nJiBwYXRoTmFtZSkKK3sKKyAgICBHVW5pcXVlUHRyPGdj
aGFyPiB0bXBGaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGhOYW1lKTsKKyAgICBpZiAo
IXRtcEZpbGVuYW1lKQorICAgICAgICByZXR1cm4gcGF0aE5hbWU7CisKKyAgICBHVW5pcXVlUHRy
PGdjaGFyPiBiYXNlTmFtZShnX3BhdGhfZ2V0X2Jhc2VuYW1lKHRtcEZpbGVuYW1lLmdldCgpKSk7
CisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoYmFzZU5hbWUuZ2V0KCkpOworfQorCitib29s
IGdldFZvbHVtZUZyZWVTcGFjZShjb25zdCBTdHJpbmcmIHBhdGgsIHVpbnQ2NF90JiBmcmVlU3Bh
Y2UpCit7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFt
ZShwYXRoKTsKKyAgICBpZiAoIWZpbGVuYW1lKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBHUmVmUHRyPEdGaWxlPiBmaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoZmls
ZW5hbWUuZ2V0KCkpKTsKKyAgICBHUmVmUHRyPEdGaWxlSW5mbz4gZmlsZUluZm8gPSBhZG9wdEdS
ZWYoZ19maWxlX3F1ZXJ5X2ZpbGVzeXN0ZW1faW5mbyhmaWxlLmdldCgpLCBHX0ZJTEVfQVRUUklC
VVRFX0ZJTEVTWVNURU1fRlJFRSwgMCwgMCkpOworICAgIGlmICghZmlsZUluZm8pCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGZyZWVTcGFjZSA9IGdfZmlsZV9pbmZvX2dldF9hdHRyaWJ1
dGVfdWludDY0KGZpbGVJbmZvLmdldCgpLCBHX0ZJTEVfQVRUUklCVVRFX0ZJTEVTWVNURU1fRlJF
RSk7CisgICAgcmV0dXJuICEhZnJlZVNwYWNlOworfQorCitTdHJpbmcgZGlyZWN0b3J5TmFtZShj
b25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUgPSB1
bmVzY2FwZWRGaWxlbmFtZShwYXRoKTsKKyAgICBpZiAoIWZpbGVuYW1lKQorICAgICAgICByZXR1
cm4gU3RyaW5nKCk7CisKKyAgICBHVW5pcXVlUHRyPGNoYXI+IGRpcm5hbWUoZ19wYXRoX2dldF9k
aXJuYW1lKGZpbGVuYW1lLmdldCgpKSk7CisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoZGly
bmFtZS5nZXQoKSk7Cit9CisKK1ZlY3RvcjxTdHJpbmc+IGxpc3REaXJlY3RvcnkoY29uc3QgU3Ry
aW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGZpbHRlcikKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiBl
bnRyaWVzOworCisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxl
bmFtZShwYXRoKTsKKyAgICBpZiAoIWZpbGVuYW1lKQorICAgICAgICByZXR1cm4gZW50cmllczsK
KworICAgIEdVbmlxdWVQdHI8R0Rpcj4gZGlyKGdfZGlyX29wZW4oZmlsZW5hbWUuZ2V0KCksIDAs
IG51bGxwdHIpKTsKKyAgICBpZiAoIWRpcikKKyAgICAgICAgcmV0dXJuIGVudHJpZXM7CisKKyAg
ICBHVW5pcXVlUHRyPEdQYXR0ZXJuU3BlYz4gcHNwZWMoZ19wYXR0ZXJuX3NwZWNfbmV3KChmaWx0
ZXIudXRmOCgpKS5kYXRhKCkpKTsKKyAgICB3aGlsZSAoY29uc3QgY2hhciogbmFtZSA9IGdfZGly
X3JlYWRfbmFtZShkaXIuZ2V0KCkpKSB7CisgICAgICAgIGlmICghZ19wYXR0ZXJuX21hdGNoX3N0
cmluZyhwc3BlYy5nZXQoKSwgbmFtZSkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAg
ICBHVW5pcXVlUHRyPGdjaGFyPiBlbnRyeShnX2J1aWxkX2ZpbGVuYW1lKGZpbGVuYW1lLmdldCgp
LCBuYW1lLCBudWxscHRyKSk7CisgICAgICAgIGVudHJpZXMuYXBwZW5kKHN0cmluZ0Zyb21GaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oZW50cnkuZ2V0KCkpKTsKKyAgICB9CisKKyAgICByZXR1cm4g
ZW50cmllczsKK30KKworU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJl
Zml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKK3sKKyAgICBHVW5pcXVlUHRyPGdjaGFy
PiBmaWxlbmFtZShnX3N0cmR1cF9wcmludGYoIiVzJXMiLCBwcmVmaXgudXRmOCgpLmRhdGEoKSwg
Y3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICBHVW5pcXVl
UHRyPGdjaGFyPiB0ZW1wUGF0aChnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3RtcF9kaXIoKSwgZmls
ZW5hbWUuZ2V0KCksIE5VTEwpKTsKKyAgICBHUmVmUHRyPEdGaWxlPiBmaWxlID0gYWRvcHRHUmVm
KGdfZmlsZV9uZXdfZm9yX3BhdGgodGVtcFBhdGguZ2V0KCkpKTsKKworICAgIGhhbmRsZSA9IGdf
ZmlsZV9jcmVhdGVfcmVhZHdyaXRlKGZpbGUuZ2V0KCksIEdfRklMRV9DUkVBVEVfTk9ORSwgMCwg
MCk7CisgICAgaWYgKCFpc0hhbmRsZVZhbGlkKGhhbmRsZSkpCisgICAgICAgIHJldHVybiBTdHJp
bmcoKTsKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOCh0ZW1wUGF0aC5nZXQoKSk7Cit9CisK
K1BsYXRmb3JtRmlsZUhhbmRsZSBvcGVuRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVPcGVu
TW9kZSBtb2RlKQoreworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2NhcGVk
RmlsZW5hbWUocGF0aCk7CisgICAgaWYgKCFmaWxlbmFtZSkKKyAgICAgICAgcmV0dXJuIGludmFs
aWRQbGF0Zm9ybUZpbGVIYW5kbGU7CisKKyAgICBHUmVmUHRyPEdGaWxlPiBmaWxlID0gYWRvcHRH
UmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoZmlsZW5hbWUuZ2V0KCkpKTsKKyAgICBHRmlsZUlPU3Ry
ZWFtKiBpb1N0cmVhbSA9IDA7CisgICAgaWYgKG1vZGUgPT0gRmlsZU9wZW5Nb2RlOjpSZWFkKQor
ICAgICAgICBpb1N0cmVhbSA9IGdfZmlsZV9vcGVuX3JlYWR3cml0ZShmaWxlLmdldCgpLCAwLCAw
KTsKKyAgICBlbHNlIGlmIChtb2RlID09IEZpbGVPcGVuTW9kZTo6V3JpdGUpIHsKKyAgICAgICAg
aWYgKGdfZmlsZV90ZXN0KGZpbGVuYW1lLmdldCgpLCBzdGF0aWNfY2FzdDxHRmlsZVRlc3Q+KEdf
RklMRV9URVNUX0VYSVNUUyB8IEdfRklMRV9URVNUX0lTX1JFR1VMQVIpKSkKKyAgICAgICAgICAg
IGlvU3RyZWFtID0gZ19maWxlX29wZW5fcmVhZHdyaXRlKGZpbGUuZ2V0KCksIDAsIDApOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBpb1N0cmVhbSA9IGdfZmlsZV9jcmVhdGVfcmVhZHdyaXRl
KGZpbGUuZ2V0KCksIEdfRklMRV9DUkVBVEVfTk9ORSwgMCwgMCk7CisgICAgfQorCisgICAgcmV0
dXJuIGlvU3RyZWFtOworfQorCit2b2lkIGNsb3NlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUmIGhh
bmRsZSkKK3sKKyAgICBpZiAoIWlzSGFuZGxlVmFsaWQoaGFuZGxlKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgZ19pb19zdHJlYW1fY2xvc2UoR19JT19TVFJFQU0oaGFuZGxlKSwgMCwgMCk7Cisg
ICAgZ19vYmplY3RfdW5yZWYoaGFuZGxlKTsKKyAgICBoYW5kbGUgPSBpbnZhbGlkUGxhdGZvcm1G
aWxlSGFuZGxlOworfQorCitsb25nIGxvbmcgc2Vla0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhh
bmRsZSwgbG9uZyBsb25nIG9mZnNldCwgRmlsZVNlZWtPcmlnaW4gb3JpZ2luKQoreworICAgIEdT
ZWVrVHlwZSBzZWVrVHlwZSA9IEdfU0VFS19TRVQ7CisgICAgc3dpdGNoIChvcmlnaW4pIHsKKyAg
ICBjYXNlIEZpbGVTZWVrT3JpZ2luOjpCZWdpbm5pbmc6CisgICAgICAgIHNlZWtUeXBlID0gR19T
RUVLX1NFVDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGaWxlU2Vla09yaWdpbjo6Q3VycmVu
dDoKKyAgICAgICAgc2Vla1R5cGUgPSBHX1NFRUtfQ1VSOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIEZpbGVTZWVrT3JpZ2luOjpFbmQ6CisgICAgICAgIHNlZWtUeXBlID0gR19TRUVLX0VORDsK
KyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgfQorCisgICAgaWYgKCFnX3NlZWthYmxlX3NlZWsoR19TRUVLQUJMRShnX2lvX3N0
cmVhbV9nZXRfaW5wdXRfc3RyZWFtKEdfSU9fU1RSRUFNKGhhbmRsZSkpKSwKKyAgICAgICAgb2Zm
c2V0LCBzZWVrVHlwZSwgMCwgMCkpCisgICAgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQor
ICAgIHJldHVybiBnX3NlZWthYmxlX3RlbGwoR19TRUVLQUJMRShnX2lvX3N0cmVhbV9nZXRfaW5w
dXRfc3RyZWFtKEdfSU9fU1RSRUFNKGhhbmRsZSkpKSk7Cit9CisKK2ludCB3cml0ZVRvRmlsZShQ
bGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQor
eworICAgIGdzaXplIGJ5dGVzV3JpdHRlbjsKKyAgICBnX291dHB1dF9zdHJlYW1fd3JpdGVfYWxs
KGdfaW9fc3RyZWFtX2dldF9vdXRwdXRfc3RyZWFtKEdfSU9fU1RSRUFNKGhhbmRsZSkpLAorICAg
ICAgICBkYXRhLCBsZW5ndGgsICZieXRlc1dyaXR0ZW4sIDAsIDApOworICAgIHJldHVybiBieXRl
c1dyaXR0ZW47Cit9CisKK2ludCByZWFkRnJvbUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRs
ZSwgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKK3sKKyAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4g
ZXJyb3I7CisgICAgZG8geworICAgICAgICBnc3NpemUgYnl0ZXNSZWFkID0gZ19pbnB1dF9zdHJl
YW1fcmVhZChnX2lvX3N0cmVhbV9nZXRfaW5wdXRfc3RyZWFtKEdfSU9fU1RSRUFNKGhhbmRsZSkp
LAorICAgICAgICAgICAgZGF0YSwgbGVuZ3RoLCAwLCAmZXJyb3Iub3V0UHRyKCkpOworICAgICAg
ICBpZiAoYnl0ZXNSZWFkID49IDApCisgICAgICAgICAgICByZXR1cm4gYnl0ZXNSZWFkOworICAg
IH0gd2hpbGUgKGVycm9yICYmIGVycm9yLT5jb2RlID09IEdfRklMRV9FUlJPUl9JTlRSKTsKKyAg
ICByZXR1cm4gLTE7Cit9CisKK2Jvb2wgbW92ZUZpbGUoY29uc3QgU3RyaW5nJiBvbGRQYXRoLCBj
b25zdCBTdHJpbmcmIG5ld1BhdGgpCit7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gb2xkRmlsZW5h
bWUgPSB1bmVzY2FwZWRGaWxlbmFtZShvbGRQYXRoKTsKKyAgICBpZiAoIW9sZEZpbGVuYW1lKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBuZXdGaWxlbmFt
ZSA9IHVuZXNjYXBlZEZpbGVuYW1lKG5ld1BhdGgpOworICAgIGlmICghbmV3RmlsZW5hbWUpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEdSZWZQdHI8R0ZpbGU+IG9sZEZpbGUgPSBhZG9w
dEdSZWYoZ19maWxlX25ld19mb3JfcGF0aChvbGRGaWxlbmFtZS5nZXQoKSkpOworICAgIEdSZWZQ
dHI8R0ZpbGU+IG5ld0ZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0aChuZXdGaWxl
bmFtZS5nZXQoKSkpOworCisgICAgcmV0dXJuIGdfZmlsZV9tb3ZlKG9sZEZpbGUuZ2V0KCksIG5l
d0ZpbGUuZ2V0KCksIEdfRklMRV9DT1BZX09WRVJXUklURSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVs
bHB0ciwgbnVsbHB0cik7Cit9CisKK2Jvb2wgaGFyZExpbmtPckNvcHlGaWxlKGNvbnN0IFN0cmlu
ZyYgc291cmNlLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uKQoreworI2lmIE9TKFdJTkRPV1Mp
CisgICAgcmV0dXJuICEhOjpDb3B5RmlsZShzb3VyY2UuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWlu
YXRpb24oKS5kYXRhKCksIGRlc3RpbmF0aW9uLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9u
KCkuZGF0YSgpLCBUUlVFKTsKKyNlbHNlCisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gc291cmNlRmls
ZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShzb3VyY2UpOworICAgIGlmICghc291cmNlRmlsZW5h
bWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGRlc3Rp
bmF0aW9uRmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShkZXN0aW5hdGlvbik7CisgICAgaWYg
KCFkZXN0aW5hdGlvbkZpbGVuYW1lKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAo
IWxpbmsoc291cmNlRmlsZW5hbWUuZ2V0KCksIGRlc3RpbmF0aW9uRmlsZW5hbWUuZ2V0KCkpKQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIEhhcmQgbGluayBmYWlsZWQuIFBlcmZvcm0g
YSBjb3B5IGluc3RlYWQuCisgICAgR1JlZlB0cjxHRmlsZT4gc291cmNlRmlsZSA9IGFkb3B0R1Jl
ZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKHNvdXJjZUZpbGVuYW1lLmdldCgpKSk7CisgICAgR1JlZlB0
cjxHRmlsZT4gZGVzdGluYXRpb25GaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgo
ZGVzdGluYXRpb25GaWxlbmFtZS5nZXQoKSkpOworICAgIHJldHVybiBnX2ZpbGVfY29weShzb3Vy
Y2VGaWxlLmdldCgpLCBkZXN0aW5hdGlvbkZpbGUuZ2V0KCksIEdfRklMRV9DT1BZX05PTkUsIG51
bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpOworI2VuZGlmCit9CisKK09wdGlvbmFs
PGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCit7CisgICAg
R1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShmc0ZpbGUuZGF0
YSgpKTsKKyAgICBpZiAoIWZpbGVuYW1lKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
CisgICAgR1JlZlB0cjxHRmlsZT4gZmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRo
KGZpbGVuYW1lLmdldCgpKSk7CisgICAgR1JlZlB0cjxHRmlsZUluZm8+IGZpbGVJbmZvID0gYWRv
cHRHUmVmKGdfZmlsZV9xdWVyeV9maWxlc3lzdGVtX2luZm8oZmlsZS5nZXQoKSwgR19GSUxFX0FU
VFJJQlVURV9VTklYX0RFVklDRSwgbnVsbHB0ciwgbnVsbHB0cikpOworICAgIGlmICghZmlsZUlu
Zm8pCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gZ19maWxlX2lu
Zm9fZ2V0X2F0dHJpYnV0ZV91aW50MzIoZmlsZUluZm8uZ2V0KCksIEdfRklMRV9BVFRSSUJVVEVf
VU5JWF9ERVZJQ0UpOworfQorCisjaWYgVVNFKEZJTEVfTE9DSykKK2Jvb2wgbG9ja0ZpbGUoUGxh
dGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgT3B0aW9uU2V0PEZpbGVMb2NrTW9kZT4gbG9ja01vZGUp
Cit7CisgICAgQ09NUElMRV9BU1NFUlQoTE9DS19TSCA9PSBXVEY6OmVudW1Ub1VuZGVybHlpbmdU
eXBlKEZpbGVMb2NrTW9kZTo6U2hhcmVkKSwgTG9ja1NoYXJlZEVuY29kaW5nSXNBc0V4cGVjdGVk
KTsKKyAgICBDT01QSUxFX0FTU0VSVChMT0NLX0VYID09IFdURjo6ZW51bVRvVW5kZXJseWluZ1R5
cGUoRmlsZUxvY2tNb2RlOjpFeGNsdXNpdmUpLCBMb2NrRXhjbHVzaXZlRW5jb2RpbmdJc0FzRXhw
ZWN0ZWQpOworICAgIENPTVBJTEVfQVNTRVJUKExPQ0tfTkIgPT0gV1RGOjplbnVtVG9VbmRlcmx5
aW5nVHlwZShGaWxlTG9ja01vZGU6Ok5vbmJsb2NraW5nKSwgTG9ja05vbmJsb2NraW5nRW5jb2Rp
bmdJc0FzRXhwZWN0ZWQpOworICAgIGF1dG8qIGlucHV0U3RyZWFtID0gZ19pb19zdHJlYW1fZ2V0
X2lucHV0X3N0cmVhbShHX0lPX1NUUkVBTShoYW5kbGUpKTsKKyAgICBpbnQgcmVzdWx0ID0gZmxv
Y2soZ19maWxlX2Rlc2NyaXB0b3JfYmFzZWRfZ2V0X2ZkKEdfRklMRV9ERVNDUklQVE9SX0JBU0VE
KGlucHV0U3RyZWFtKSksIGxvY2tNb2RlLnRvUmF3KCkpOworICAgIHJldHVybiByZXN1bHQgIT0g
LTE7Cit9CisKK2Jvb2wgdW5sb2NrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlKQorewor
ICAgIGF1dG8qIGlucHV0U3RyZWFtID0gZ19pb19zdHJlYW1fZ2V0X2lucHV0X3N0cmVhbShHX0lP
X1NUUkVBTShoYW5kbGUpKTsKKyAgICBpbnQgcmVzdWx0ID0gZmxvY2soZ19maWxlX2Rlc2NyaXB0
b3JfYmFzZWRfZ2V0X2ZkKEdfRklMRV9ERVNDUklQVE9SX0JBU0VEKGlucHV0U3RyZWFtKSksIExP
Q0tfVU4pOworICAgIHJldHVybiByZXN1bHQgIT0gLTE7Cit9CisjZW5kaWYgLy8gVVNFKEZJTEVf
TE9DSykKKworfSAvLyBuYW1lc3BhY2UgRmlsZVN5c3RlbQorfSAvLyBuYW1lc3BhY2UgV1RGCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9tYWMvRmlsZVN5c3RlbU1hYy5tbSBiL1NvdXJjZS9X
VEYvd3RmL21hYy9GaWxlU3lzdGVtTWFjLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkyNjkyYTE2ZmJhNWIxNTI3
OGM3NzJmNzU2ZTU1M2ExMTA3NTVmMmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9tYWMvRmlsZVN5c3RlbU1hYy5tbQpAQCAtMCwwICsxLDg4IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA3LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CisKKyNpZiBQ
TEFURk9STShNQUMpCisKKyNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oPgorI2ltcG9y
dCA8d3RmL3NwaS9tYWMvTWV0YWRhdGFTUEkuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgorCituYW1lc3BhY2UgV1RGIHsKKworYm9vbCBGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURp
cmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgYXV0byBmaWxlTWFuYWdlciA9IGFk
b3B0TlMoW1tOU0ZpbGVNYW5hZ2VyIGFsbG9jXSBpbml0XSk7CisKKyAgICBpZiAoTlNBcnJheSAq
ZGlyZWN0b3J5Q29udGVudHMgPSBbZmlsZU1hbmFnZXIgY29udGVudHNPZkRpcmVjdG9yeUF0UGF0
aDpwYXRoIGVycm9yOm51bGxwdHJdKSB7CisgICAgICAgIC8vIEV4cGxpY2l0bHkgbG9vayBmb3Ig
YW5kIGRlbGV0ZSAuRFNfU3RvcmUgZmlsZXMuCisgICAgICAgIGlmIChkaXJlY3RvcnlDb250ZW50
cy5jb3VudCA9PSAxICYmIFtkaXJlY3RvcnlDb250ZW50cy5maXJzdE9iamVjdCBpc0VxdWFsVG9T
dHJpbmc6QCIuRFNfU3RvcmUiXSkKKyAgICAgICAgICAgIFtmaWxlTWFuYWdlciByZW1vdmVJdGVt
QXRQYXRoOltwYXRoIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpkaXJlY3RvcnlDb250
ZW50cy5maXJzdE9iamVjdF0gZXJyb3I6bnVsbHB0cl07CisgICAgfQorCisgICAgLy8gcm1kaXIo
Li4uKSByZXR1cm5zIDAgb24gc3VjY2Vzc2Z1bCBkZWxldGlvbiBvZiB0aGUgcGF0aCBhbmQgbm9u
LXplcm8gaW4gYW55IG90aGVyIGNhc2UgKGluY2x1ZGluZyBpbnZhbGlkIHBlcm1pc3Npb25zIG9y
IG5vbi1leGlzdGVudCBmaWxlKQorICAgIHJldHVybiAhcm1kaXIoRmlsZVN5c3RlbTo6ZmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSk7Cit9CisKK3ZvaWQgRmlsZVN5c3RlbTo6
c2V0TWV0YWRhdGFVUkwoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG1ldGFkYXRh
VVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKQoreworICAgIFN0cmluZyB1cmxTdHJp
bmc7CisgICAgaWYgKE5TVVJMICp1cmwgPSBVUkxXaXRoVXNlclR5cGVkU3RyaW5nKG1ldGFkYXRh
VVJMU3RyaW5nLCBuaWwpKQorICAgICAgICB1cmxTdHJpbmcgPSBXVEY6OnVzZXJWaXNpYmxlU3Ry
aW5nKFdURjo6VVJMQnlSZW1vdmluZ1VzZXJJbmZvKHVybCkpOworICAgIGVsc2UKKyAgICAgICAg
dXJsU3RyaW5nID0gbWV0YWRhdGFVUkxTdHJpbmc7CisKKyAgICAvLyBDYWxsIE1ldGFkYXRhIEFQ
SSBvbiBhIGJhY2tncm91bmQgcXVldWUgYmVjYXVzZSBpdCBjYW4gdGFrZSBzb21lIHRpbWUuCisg
ICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X2dsb2JhbF9xdWV1ZShESVNQQVRDSF9RVUVV
RV9QUklPUklUWV9ERUZBVUxULCAwKSwgW3BhdGggPSBwYXRoLmlzb2xhdGVkQ29weSgpLCB1cmxT
dHJpbmcgPSB1cmxTdHJpbmcuaXNvbGF0ZWRDb3B5KCksIHJlZmVycmVyID0gcmVmZXJyZXIuaXNv
bGF0ZWRDb3B5KCldIHsKKyAgICAgICAgYXV0byBpdGVtID0gYWRvcHRDRihNREl0ZW1DcmVhdGUo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgcGF0aC5jcmVhdGVDRlN0cmluZygpLmdldCgpKSk7CisgICAg
ICAgIGlmICghaXRlbSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBhdXRvIHdoZXJl
RnJvbUF0dHJpYnV0ZSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhP
YmplY3RzOnVybFN0cmluZywgbmlsXSk7CisgICAgICAgIGlmICghcmVmZXJyZXIuaXNOdWxsKCkp
CisgICAgICAgICAgICBbd2hlcmVGcm9tQXR0cmlidXRlIGFkZE9iamVjdDpyZWZlcnJlcl07CisK
KyAgICAgICAgTURJdGVtU2V0QXR0cmlidXRlKGl0ZW0uZ2V0KCksIGtNREl0ZW1XaGVyZUZyb21z
LCAoX19icmlkZ2UgQ0ZBcnJheVJlZil3aGVyZUZyb21BdHRyaWJ1dGUuZ2V0KCkpOworICAgICAg
ICBNREl0ZW1TZXRBdHRyaWJ1dGUoaXRlbS5nZXQoKSwga01ESXRlbURvd25sb2FkZWREYXRlLCAo
X19icmlkZ2UgQ0ZBcnJheVJlZilAWyBbTlNEYXRlIGRhdGVdIF0pOworICAgIH0pOworfQorCiti
b29sIEZpbGVTeXN0ZW06OmNhbkV4Y2x1ZGVGcm9tQmFja3VwKCkKK3sKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworYm9vbCBGaWxlU3lzdGVtOjpleGNsdWRlRnJvbUJhY2t1cChjb25zdCBTdHJpbmcm
IHBhdGgpCit7CisgICAgLy8gSXQgaXMgY3JpdGljYWwgdG8gcGFzcyBGQUxTRSBmb3IgZXhjbHVk
ZUJ5UGF0aCBiZWNhdXNlIGV4Y2x1ZGluZyBieSBwYXRoIHJlcXVpcmVzIHJvb3QgcHJpdmlsZWdl
cy4KKyAgICBDU0JhY2t1cFNldEl0ZW1FeGNsdWRlZChGaWxlU3lzdGVtOjpwYXRoQXNVUkwocGF0
aCkuZ2V0KCksIFRSVUUsIEZBTFNFKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV1RGCisKKyNlbmRpZiAvLyBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwIGIvU291cmNlL1dURi93dGYvcG9zaXgv
RmlsZVN5c3RlbVBPU0lYLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNjBlY2IxNTg2MzkyMGZhNDM2MWZjMTRk
YjhlZTZkM2ZmZTJlNGYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvcG9zaXgv
RmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtMCwwICsxLDQ5NiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwNy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5v
ciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgorCisjaW5jbHVkZSA8ZGlyZW50Lmg+CisjaW5jbHVk
ZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPGZubWF0Y2guaD4KKyNp
bmNsdWRlIDxsaWJnZW4uaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN5cy9zdGF0
Lmg+CisjaW5jbHVkZSA8c3lzL3N0YXR2ZnMuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNp
bmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgorI2luY2x1ZGUg
PHd0Zi9GaWxlTWV0YWRhdGEuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgorCituYW1lc3BhY2UgV1RGIHsKKworbmFtZXNwYWNlIEZpbGVTeXN0ZW0geworCiti
b29sIGZpbGVFeGlzdHMoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIGlmIChwYXRoLmlzTnVs
bCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworCisgICAgaWYgKCFmc1JlcC5kYXRhKCkgfHwgZnNS
ZXAuZGF0YSgpWzBdID09ICdcMCcpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVy
biBhY2Nlc3MoZnNSZXAuZGF0YSgpLCBGX09LKSAhPSAtMTsKK30KKworYm9vbCBkZWxldGVGaWxl
KGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKHBhdGgpOworCisgICAgaWYgKCFmc1JlcC5kYXRhKCkgfHwgZnNSZXAuZGF0
YSgpWzBdID09ICdcMCcpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIHVubGluaygu
Li4pIHJldHVybnMgMCBvbiBzdWNjZXNzZnVsIGRlbGV0aW9uIG9mIHRoZSBwYXRoIGFuZCBub24t
emVybyBpbiBhbnkgb3RoZXIgY2FzZSAoaW5jbHVkaW5nIGludmFsaWQgcGVybWlzc2lvbnMgb3Ig
bm9uLWV4aXN0ZW50IGZpbGUpCisgICAgcmV0dXJuICF1bmxpbmsoZnNSZXAuZGF0YSgpKTsKK30K
KworUGxhdGZvcm1GaWxlSGFuZGxlIG9wZW5GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU9w
ZW5Nb2RlIG1vZGUpCit7CisgICAgQ1N0cmluZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihwYXRoKTsKKworICAgIGlmIChmc1JlcC5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIGlu
dmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7CisKKyAgICBpbnQgcGxhdGZvcm1GbGFnID0gMDsKKyAg
ICBpZiAobW9kZSA9PSBGaWxlT3Blbk1vZGU6OlJlYWQpCisgICAgICAgIHBsYXRmb3JtRmxhZyB8
PSBPX1JET05MWTsKKyAgICBlbHNlIGlmIChtb2RlID09IEZpbGVPcGVuTW9kZTo6V3JpdGUpCisg
ICAgICAgIHBsYXRmb3JtRmxhZyB8PSAoT19XUk9OTFkgfCBPX0NSRUFUIHwgT19UUlVOQyk7Cisj
aWYgT1MoREFSV0lOKQorICAgIGVsc2UgaWYgKG1vZGUgPT0gRmlsZU9wZW5Nb2RlOjpFdmVudHNP
bmx5KQorICAgICAgICBwbGF0Zm9ybUZsYWcgfD0gT19FVlRPTkxZOworI2VuZGlmCisKKyAgICBy
ZXR1cm4gb3Blbihmc1JlcC5kYXRhKCksIHBsYXRmb3JtRmxhZywgMDY2Nik7Cit9CisKK3ZvaWQg
Y2xvc2VGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKQoreworICAgIGlmIChpc0hhbmRs
ZVZhbGlkKGhhbmRsZSkpIHsKKyAgICAgICAgY2xvc2UoaGFuZGxlKTsKKyAgICAgICAgaGFuZGxl
ID0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKKyAgICB9Cit9CisKK2xvbmcgbG9uZyBzZWVr
RmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0LCBGaWxlU2Vl
a09yaWdpbiBvcmlnaW4pCit7CisgICAgaW50IHdoZW5jZSA9IFNFRUtfU0VUOworICAgIHN3aXRj
aCAob3JpZ2luKSB7CisgICAgY2FzZSBGaWxlU2Vla09yaWdpbjo6QmVnaW5uaW5nOgorICAgICAg
ICB3aGVuY2UgPSBTRUVLX1NFVDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGaWxlU2Vla09y
aWdpbjo6Q3VycmVudDoKKyAgICAgICAgd2hlbmNlID0gU0VFS19DVVI7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgRmlsZVNlZWtPcmlnaW46OkVuZDoKKyAgICAgICAgd2hlbmNlID0gU0VFS19F
TkQ7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIH0KKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8bG9uZyBsb25nPihsc2Vlayho
YW5kbGUsIG9mZnNldCwgd2hlbmNlKSk7Cit9CisKK2Jvb2wgdHJ1bmNhdGVGaWxlKFBsYXRmb3Jt
RmlsZUhhbmRsZSBoYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQpCit7CisgICAgLy8gZnRydW5jYXRl
IHJldHVybnMgMCB0byBpbmRpY2F0ZSB0aGUgc3VjY2Vzcy4KKyAgICByZXR1cm4gIWZ0cnVuY2F0
ZShoYW5kbGUsIG9mZnNldCk7Cit9CisKK2ludCB3cml0ZVRvRmlsZShQbGF0Zm9ybUZpbGVIYW5k
bGUgaGFuZGxlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQoreworICAgIGRvIHsKKyAg
ICAgICAgaW50IGJ5dGVzV3JpdHRlbiA9IHdyaXRlKGhhbmRsZSwgZGF0YSwgc3RhdGljX2Nhc3Q8
c2l6ZV90PihsZW5ndGgpKTsKKyAgICAgICAgaWYgKGJ5dGVzV3JpdHRlbiA+PSAwKQorICAgICAg
ICAgICAgcmV0dXJuIGJ5dGVzV3JpdHRlbjsKKyAgICB9IHdoaWxlIChlcnJubyA9PSBFSU5UUik7
CisgICAgcmV0dXJuIC0xOworfQorCitpbnQgcmVhZEZyb21GaWxlKFBsYXRmb3JtRmlsZUhhbmRs
ZSBoYW5kbGUsIGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCit7CisgICAgZG8geworICAgICAgICBp
bnQgYnl0ZXNSZWFkID0gcmVhZChoYW5kbGUsIGRhdGEsIHN0YXRpY19jYXN0PHNpemVfdD4obGVu
Z3RoKSk7CisgICAgICAgIGlmIChieXRlc1JlYWQgPj0gMCkKKyAgICAgICAgICAgIHJldHVybiBi
eXRlc1JlYWQ7CisgICAgfSB3aGlsZSAoZXJybm8gPT0gRUlOVFIpOworICAgIHJldHVybiAtMTsK
K30KKworI2lmIFVTRShGSUxFX0xPQ0spCitib29sIGxvY2tGaWxlKFBsYXRmb3JtRmlsZUhhbmRs
ZSBoYW5kbGUsIE9wdGlvblNldDxGaWxlTG9ja01vZGU+IGxvY2tNb2RlKQoreworICAgIENPTVBJ
TEVfQVNTRVJUKExPQ0tfU0ggPT0gV1RGOjplbnVtVG9VbmRlcmx5aW5nVHlwZShGaWxlTG9ja01v
ZGU6OlNoYXJlZCksIExvY2tTaGFyZWRFbmNvZGluZ0lzQXNFeHBlY3RlZCk7CisgICAgQ09NUElM
RV9BU1NFUlQoTE9DS19FWCA9PSBXVEY6OmVudW1Ub1VuZGVybHlpbmdUeXBlKEZpbGVMb2NrTW9k
ZTo6RXhjbHVzaXZlKSwgTG9ja0V4Y2x1c2l2ZUVuY29kaW5nSXNBc0V4cGVjdGVkKTsKKyAgICBD
T01QSUxFX0FTU0VSVChMT0NLX05CID09IFdURjo6ZW51bVRvVW5kZXJseWluZ1R5cGUoRmlsZUxv
Y2tNb2RlOjpOb25ibG9ja2luZyksIExvY2tOb25ibG9ja2luZ0VuY29kaW5nSXNBc0V4cGVjdGVk
KTsKKyAgICBpbnQgcmVzdWx0ID0gZmxvY2soaGFuZGxlLCBsb2NrTW9kZS50b1JhdygpKTsKKyAg
ICByZXR1cm4gKHJlc3VsdCAhPSAtMSk7Cit9CisKK2Jvb2wgdW5sb2NrRmlsZShQbGF0Zm9ybUZp
bGVIYW5kbGUgaGFuZGxlKQoreworICAgIGludCByZXN1bHQgPSBmbG9jayhoYW5kbGUsIExPQ0tf
VU4pOworICAgIHJldHVybiAocmVzdWx0ICE9IC0xKTsKK30KKyNlbmRpZgorCisjaWYgIVBMQVRG
T1JNKE1BQykKK2Jvb2wgZGVsZXRlRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKQor
eworICAgIENTdHJpbmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisK
KyAgICBpZiAoIWZzUmVwLmRhdGEoKSB8fCBmc1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gcm1kaXIoLi4uKSByZXR1cm5zIDAgb24gc3VjY2Vz
c2Z1bCBkZWxldGlvbiBvZiB0aGUgcGF0aCBhbmQgbm9uLXplcm8gaW4gYW55IG90aGVyIGNhc2Ug
KGluY2x1ZGluZyBpbnZhbGlkIHBlcm1pc3Npb25zIG9yIG5vbi1leGlzdGVudCBmaWxlKQorICAg
IHJldHVybiAhcm1kaXIoZnNSZXAuZGF0YSgpKTsKK30KKyNlbmRpZgorCitib29sIGdldEZpbGVT
aXplKGNvbnN0IFN0cmluZyYgcGF0aCwgbG9uZyBsb25nJiByZXN1bHQpCit7CisgICAgQ1N0cmlu
ZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKKworICAgIGlmICghZnNS
ZXAuZGF0YSgpIHx8IGZzUmVwLmRhdGEoKVswXSA9PSAnXDAnKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBzdHJ1Y3Qgc3RhdCBmaWxlSW5mbzsKKworICAgIGlmIChzdGF0KGZzUmVwLmRh
dGEoKSwgJmZpbGVJbmZvKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmVzdWx0ID0g
ZmlsZUluZm8uc3Rfc2l6ZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBnZXRGaWxlU2l6
ZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBsb25nIGxvbmcmIHJlc3VsdCkKK3sKKyAgICBz
dHJ1Y3Qgc3RhdCBmaWxlSW5mbzsKKyAgICBpZiAoZnN0YXQoaGFuZGxlLCAmZmlsZUluZm8pKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXN1bHQgPSBmaWxlSW5mby5zdF9zaXplOwor
ICAgIHJldHVybiB0cnVlOworfQorCitPcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZUNyZWF0aW9u
VGltZShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisjaWYgT1MoREFSV0lOKSB8fCBPUyhPUEVOQlNE
KSB8fCBPUyhORVRCU0QpIHx8IE9TKEZSRUVCU0QpCisgICAgQ1N0cmluZyBmc1JlcCA9IGZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKKworICAgIGlmICghZnNSZXAuZGF0YSgpIHx8IGZz
UmVwLmRhdGEoKVswXSA9PSAnXDAnKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisg
ICAgc3RydWN0IHN0YXQgZmlsZUluZm87CisKKyAgICBpZiAoc3RhdChmc1JlcC5kYXRhKCksICZm
aWxlSW5mbykpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gV2Fs
bFRpbWU6OmZyb21SYXdTZWNvbmRzKGZpbGVJbmZvLnN0X2JpcnRodGltZSk7CisjZWxzZQorICAg
IFVOVVNFRF9QQVJBTShwYXRoKTsKKyAgICByZXR1cm4gV1RGOjpudWxsb3B0OworI2VuZGlmCit9
CisKK09wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJp
bmcmIHBhdGgpCit7CisgICAgQ1N0cmluZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihwYXRoKTsKKworICAgIGlmICghZnNSZXAuZGF0YSgpIHx8IGZzUmVwLmRhdGEoKVswXSA9PSAn
XDAnKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgc3RydWN0IHN0YXQgZmls
ZUluZm87CisKKyAgICBpZiAoc3RhdChmc1JlcC5kYXRhKCksICZmaWxlSW5mbykpCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gV2FsbFRpbWU6OmZyb21SYXdTZWNv
bmRzKGZpbGVJbmZvLnN0X210aW1lKTsKK30KKworc3RhdGljIEZpbGVNZXRhZGF0YTo6VHlwZSB0
b0ZpbGVNZXRhdGFUeXBlKHN0cnVjdCBzdGF0IGZpbGVJbmZvKQoreworICAgIGlmIChTX0lTRElS
KGZpbGVJbmZvLnN0X21vZGUpKQorICAgICAgICByZXR1cm4gRmlsZU1ldGFkYXRhOjpUeXBlOjpE
aXJlY3Rvcnk7CisgICAgaWYgKFNfSVNMTksoZmlsZUluZm8uc3RfbW9kZSkpCisgICAgICAgIHJl
dHVybiBGaWxlTWV0YWRhdGE6OlR5cGU6OlN5bWJvbGljTGluazsKKyAgICByZXR1cm4gRmlsZU1l
dGFkYXRhOjpUeXBlOjpGaWxlOworfQorCitzdGF0aWMgT3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBm
aWxlTWV0YWRhdGFVc2luZ0Z1bmN0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCwgaW50ICgqc3RhdEZ1
bmMpKGNvbnN0IGNoYXIqLCBzdHJ1Y3Qgc3RhdCopKQoreworICAgIENTdHJpbmcgZnNSZXAgPSBm
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisKKyAgICBpZiAoIWZzUmVwLmRhdGEoKSB8
fCBmc1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KworICAgIHN0cnVjdCBzdGF0IGZpbGVJbmZvOworICAgIGlmIChzdGF0RnVuYyhmc1JlcC5kYXRh
KCksICZmaWxlSW5mbykpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBTdHJp
bmcgZmlsZW5hbWUgPSBwYXRoR2V0RmlsZU5hbWUocGF0aCk7CisgICAgYm9vbCBpc0hpZGRlbiA9
ICFmaWxlbmFtZS5pc0VtcHR5KCkgJiYgZmlsZW5hbWVbMF0gPT0gJy4nOworICAgIHJldHVybiBG
aWxlTWV0YWRhdGEgeworICAgICAgICBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoZmlsZUluZm8u
c3RfbXRpbWUpLAorICAgICAgICBmaWxlSW5mby5zdF9zaXplLAorICAgICAgICBpc0hpZGRlbiwK
KyAgICAgICAgdG9GaWxlTWV0YXRhVHlwZShmaWxlSW5mbykKKyAgICB9OworfQorCitPcHRpb25h
bDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAg
cmV0dXJuIGZpbGVNZXRhZGF0YVVzaW5nRnVuY3Rpb24ocGF0aCwgJmxzdGF0KTsKK30KKworT3B0
aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyhjb25zdCBT
dHJpbmcmIHBhdGgpCit7CisgICAgcmV0dXJuIGZpbGVNZXRhZGF0YVVzaW5nRnVuY3Rpb24ocGF0
aCwgJnN0YXQpOworfQorCitib29sIGNyZWF0ZVN5bWJvbGljTGluayhjb25zdCBTdHJpbmcmIHRh
cmdldFBhdGgsIGNvbnN0IFN0cmluZyYgc3ltYm9saWNMaW5rUGF0aCkKK3sKKyAgICBDU3RyaW5n
IHRhcmdldFBhdGhGU1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih0YXJnZXRQYXRoKTsK
KyAgICBpZiAoIXRhcmdldFBhdGhGU1JlcC5kYXRhKCkgfHwgdGFyZ2V0UGF0aEZTUmVwLmRhdGEo
KVswXSA9PSAnXDAnKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBDU3RyaW5nIHN5bWJv
bGljTGlua1BhdGhGU1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihzeW1ib2xpY0xpbmtQ
YXRoKTsKKyAgICBpZiAoIXN5bWJvbGljTGlua1BhdGhGU1JlcC5kYXRhKCkgfHwgc3ltYm9saWNM
aW5rUGF0aEZTUmVwLmRhdGEoKVswXSA9PSAnXDAnKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICByZXR1cm4gIXN5bWxpbmsodGFyZ2V0UGF0aEZTUmVwLmRhdGEoKSwgc3ltYm9saWNMaW5r
UGF0aEZTUmVwLmRhdGEoKSk7Cit9CisKK1N0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
Y29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGNvbXBvbmVudCkKK3sKKyAgICBpZiAo
cGF0aC5lbmRzV2l0aCgnLycpKQorICAgICAgICByZXR1cm4gcGF0aCArIGNvbXBvbmVudDsKKyAg
ICByZXR1cm4gcGF0aCArICIvIiArIGNvbXBvbmVudDsKK30KKworU3RyaW5nIHBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudHMoU3RyaW5nVmlldyBwYXRoLCBjb25zdCBWZWN0b3I8U3RyaW5nVmlldz4m
IGNvbXBvbmVudHMpCit7CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIu
YXBwZW5kKHBhdGgpOworICAgIGZvciAoYXV0byYgY29tcG9uZW50IDogY29tcG9uZW50cykgewor
ICAgICAgICBidWlsZGVyLmFwcGVuZCgnLycpOworICAgICAgICBidWlsZGVyLmFwcGVuZChjb21w
b25lbnQpOworICAgIH0KKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworfQorCitib29s
IG1ha2VBbGxEaXJlY3Rvcmllcyhjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgQ1N0cmluZyBm
dWxsUGF0aCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKKyAgICBpZiAoIWFjY2Vz
cyhmdWxsUGF0aC5kYXRhKCksIEZfT0spKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGNo
YXIqIHAgPSBmdWxsUGF0aC5tdXRhYmxlRGF0YSgpICsgMTsKKyAgICBpbnQgbGVuZ3RoID0gZnVs
bFBhdGgubGVuZ3RoKCk7CisKKyAgICBpZiAocFtsZW5ndGggLSAxXSA9PSAnLycpCisgICAgICAg
IHBbbGVuZ3RoIC0gMV0gPSAnXDAnOworICAgIGZvciAoOyAqcDsgKytwKSB7CisgICAgICAgIGlm
ICgqcCA9PSAnLycpIHsKKyAgICAgICAgICAgICpwID0gJ1wwJzsKKyAgICAgICAgICAgIGlmIChh
Y2Nlc3MoZnVsbFBhdGguZGF0YSgpLCBGX09LKSkgeworICAgICAgICAgICAgICAgIGlmIChta2Rp
cihmdWxsUGF0aC5kYXRhKCksIFNfSVJXWFUpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAqcCA9ICcvJzsKKyAgICAgICAgfQor
ICAgIH0KKyAgICBpZiAoYWNjZXNzKGZ1bGxQYXRoLmRhdGEoKSwgRl9PSykpIHsKKyAgICAgICAg
aWYgKG1rZGlyKGZ1bGxQYXRoLmRhdGEoKSwgU19JUldYVSkpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK1N0cmluZyBwYXRoR2V0Rmls
ZU5hbWUoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIHJldHVybiBwYXRoLnN1YnN0cmluZyhw
YXRoLnJldmVyc2VGaW5kKCcvJykgKyAxKTsKK30KKworU3RyaW5nIGRpcmVjdG9yeU5hbWUoY29u
c3QgU3RyaW5nJiBwYXRoKQoreworICAgIENTdHJpbmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24ocGF0aCk7CisKKyAgICBpZiAoIWZzUmVwLmRhdGEoKSB8fCBmc1JlcC5kYXRhKClb
MF0gPT0gJ1wwJykKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgcmV0dXJuIFN0cmlu
Zzo6ZnJvbVVURjgoZGlybmFtZShmc1JlcC5tdXRhYmxlRGF0YSgpKSk7Cit9CisKK1ZlY3RvcjxT
dHJpbmc+IGxpc3REaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGZp
bHRlcikKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiBlbnRyaWVzOworICAgIENTdHJpbmcgY3BhdGgg
PSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisgICAgQ1N0cmluZyBjZmlsdGVyID0g
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbHRlcik7CisgICAgRElSKiBkaXIgPSBvcGVuZGly
KGNwYXRoLmRhdGEoKSk7CisgICAgaWYgKGRpcikgeworICAgICAgICBzdHJ1Y3QgZGlyZW50KiBk
cDsKKyAgICAgICAgd2hpbGUgKChkcCA9IHJlYWRkaXIoZGlyKSkpIHsKKyAgICAgICAgICAgIGNv
bnN0IGNoYXIqIG5hbWUgPSBkcC0+ZF9uYW1lOworICAgICAgICAgICAgaWYgKCFzdHJjbXAobmFt
ZSwgIi4iKSB8fCAhc3RyY21wKG5hbWUsICIuLiIpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAgICAgaWYgKGZubWF0Y2goY2ZpbHRlci5kYXRhKCksIG5hbWUsIDApKQorICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgY2hhciBmaWxlUGF0aFtQQVRIX01B
WF07CisgICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoZmlsZVBhdGgpIC0g
MSkgPCBzbnByaW50ZihmaWxlUGF0aCwgc2l6ZW9mKGZpbGVQYXRoKSwgIiVzLyVzIiwgY3BhdGgu
ZGF0YSgpLCBuYW1lKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsgLy8gYnVmZmVyIG92ZXJm
bG93CisKKyAgICAgICAgICAgIGF1dG8gc3RyaW5nID0gc3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihmaWxlUGF0aCk7CisKKyAgICAgICAgICAgIC8vIFNvbWUgZmlsZSBzeXN0ZW0g
cmVwcmVzZW50YXRpb25zIGNhbm5vdCBiZSByZXByZXNlbnRlZCBhcyBhIFVURi0xNiBzdHJpbmcs
CisgICAgICAgICAgICAvLyBzbyB0aGlzIHN0cmluZyBtaWdodCBiZSBudWxsLgorICAgICAgICAg
ICAgaWYgKCFzdHJpbmcuaXNOdWxsKCkpCisgICAgICAgICAgICAgICAgZW50cmllcy5hcHBlbmQo
V1RGTW92ZShzdHJpbmcpKTsKKyAgICAgICAgfQorICAgICAgICBjbG9zZWRpcihkaXIpOworICAg
IH0KKyAgICByZXR1cm4gZW50cmllczsKK30KKworI2lmICFQTEFURk9STShDT0NPQSkKK1N0cmlu
ZyBzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IGNoYXIqIHBhdGgpCit7
CisgICAgaWYgKCFwYXRoKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICByZXR1cm4g
U3RyaW5nOjpmcm9tVVRGOChwYXRoKTsKK30KKworQ1N0cmluZyBmaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIHJldHVybiBwYXRoLnV0ZjgoKTsKK30K
KworYm9vbCBtb3ZlRmlsZShjb25zdCBTdHJpbmcmIG9sZFBhdGgsIGNvbnN0IFN0cmluZyYgbmV3
UGF0aCkKK3sKKyAgICBhdXRvIG9sZEZpbGVuYW1lID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KG9sZFBhdGgpOworICAgIGlmIChvbGRGaWxlbmFtZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgYXV0byBuZXdGaWxlbmFtZSA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihuZXdQYXRoKTsKKyAgICBpZiAobmV3RmlsZW5hbWUuaXNOdWxsKCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIHJldHVybiByZW5hbWUob2xkRmlsZW5hbWUuZGF0YSgpLCBuZXdGaWxl
bmFtZS5kYXRhKCkpICE9IC0xOworfQorCitib29sIGdldFZvbHVtZUZyZWVTcGFjZShjb25zdCBT
dHJpbmcmIHBhdGgsIHVpbnQ2NF90JiBmcmVlU3BhY2UpCit7CisgICAgc3RydWN0IHN0YXR2ZnMg
ZmlsZVN5c3RlbVN0YXQ7CisgICAgaWYgKHN0YXR2ZnMoZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KHBhdGgpLmRhdGEoKSwgJmZpbGVTeXN0ZW1TdGF0KSkgeworICAgICAgICBmcmVlU3BhY2UgPSBm
aWxlU3lzdGVtU3RhdC5mX2JhdmFpbCAqIGZpbGVTeXN0ZW1TdGF0LmZfZnJzaXplOworICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorI2VuZGlmCisKKyNp
ZiAhT1MoREFSV0lOKQorU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJl
Zml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKK3sKKyAgICBjaGFyIGJ1ZmZlcltQQVRI
X01BWF07CisgICAgY29uc3QgY2hhciogdG1wRGlyID0gZ2V0ZW52KCJUTVBESVIiKTsKKworICAg
IGlmICghdG1wRGlyKQorICAgICAgICB0bXBEaXIgPSAiL3RtcCI7CisKKyAgICBpZiAoc25wcmlu
dGYoYnVmZmVyLCBQQVRIX01BWCwgIiVzLyVzWFhYWFhYIiwgdG1wRGlyLCBwcmVmaXgudXRmOCgp
LmRhdGEoKSkgPj0gUEFUSF9NQVgpCisgICAgICAgIGdvdG8gZW5kOworCisgICAgaGFuZGxlID0g
bWtzdGVtcChidWZmZXIpOworICAgIGlmIChoYW5kbGUgPCAwKQorICAgICAgICBnb3RvIGVuZDsK
KworICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZlcik7CisKK2VuZDoKKyAgICBoYW5k
bGUgPSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOworICAgIHJldHVybiBTdHJpbmcoKTsKK30K
KyNlbmRpZgorCitib29sIGhhcmRMaW5rT3JDb3B5RmlsZShjb25zdCBTdHJpbmcmIHNvdXJjZSwg
Y29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbikKK3sKKyAgICBpZiAoc291cmNlLmlzRW1wdHkoKSB8
fCBkZXN0aW5hdGlvbi5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIENT
dHJpbmcgZnNTb3VyY2UgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oc291cmNlKTsKKyAgICBp
ZiAoIWZzU291cmNlLmRhdGEoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgQ1N0cmlu
ZyBmc0Rlc3RpbmF0aW9uID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRlc3RpbmF0aW9uKTsK
KyAgICBpZiAoIWZzRGVzdGluYXRpb24uZGF0YSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBpZiAoIWxpbmsoZnNTb3VyY2UuZGF0YSgpLCBmc0Rlc3RpbmF0aW9uLmRhdGEoKSkpCisg
ICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gSGFyZCBsaW5rIGZhaWxlZC4gUGVyZm9ybSBh
IGNvcHkgaW5zdGVhZC4KKyAgICBhdXRvIGhhbmRsZSA9IG9wZW4oZnNEZXN0aW5hdGlvbi5kYXRh
KCksIE9fV1JPTkxZIHwgT19DUkVBVCB8IE9fRVhDTCwgMDY2Nik7CisgICAgaWYgKGhhbmRsZSA9
PSAtMSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYm9vbCBhcHBlbmRSZXN1bHQgPSBh
cHBlbmRGaWxlQ29udGVudHNUb0ZpbGVIYW5kbGUoc291cmNlLCBoYW5kbGUpOworICAgIGNsb3Nl
KGhhbmRsZSk7CisKKyAgICAvLyBJZiB0aGUgY29weSBmYWlsZWQsIGRlbGV0ZSB0aGUgdW51c2Fi
bGUgZmlsZS4KKyAgICBpZiAoIWFwcGVuZFJlc3VsdCkKKyAgICAgICAgdW5saW5rKGZzRGVzdGlu
YXRpb24uZGF0YSgpKTsKKworICAgIHJldHVybiBhcHBlbmRSZXN1bHQ7Cit9CisKK09wdGlvbmFs
PGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCit7CisgICAg
c3RydWN0IHN0YXQgZmlsZVN0YXQ7CisgICAgaWYgKHN0YXQoZnNGaWxlLmRhdGEoKSwgJmZpbGVT
dGF0KSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiBm
aWxlU3RhdC5zdF9kZXY7Cit9CisKK1N0cmluZyByZWFsUGF0aChjb25zdCBTdHJpbmcmIGZpbGVQ
YXRoKQoreworICAgIENTdHJpbmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmls
ZVBhdGgpOworICAgIGNoYXIgcmVzb2x2ZWROYW1lW1BBVEhfTUFYXTsKKyAgICBjb25zdCBjaGFy
KiByZXN1bHQgPSByZWFscGF0aChmc1JlcC5kYXRhKCksIHJlc29sdmVkTmFtZSk7CisgICAgcmV0
dXJuIHJlc3VsdCA/IFN0cmluZzo6ZnJvbVVURjgocmVzdWx0KSA6IGZpbGVQYXRoOworfQorCit9
IC8vIG5hbWVzcGFjZSBGaWxlU3lzdGVtCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL3NwaS9tYWMvTWV0YWRhdGFTUEkuaCBiL1NvdXJjZS9XVEYvd3RmL3Nw
aS9tYWMvTWV0YWRhdGFTUEkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MTU1NDdjNmI4NTEwZTMwNjE4ZTIyODJh
ZDViNzg0MDE2Y2EzNzIxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvc3BpL21h
Yy9NZXRhZGF0YVNQSS5oCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisKKyNpbmNsdWRlIDxDb3JlU2Vydmlj
ZXMvQ29yZVNlcnZpY2VzUHJpdi5oPgorCisjZW5kaWYKKworV1RGX0VYVEVSTl9DX0JFR0lOCisK
K0Jvb2xlYW4gTURJdGVtU2V0QXR0cmlidXRlKE1ESXRlbVJlZiwgQ0ZTdHJpbmdSZWYgbmFtZSwg
Q0ZUeXBlUmVmIGF0dHIpOworCitXVEZfRVhURVJOX0NfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5
c3RlbVdpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzE2NDcyY2RkM2Y1YmEwNzdiOTcyNDU2MDA4YTQ5NDA5
NDZlZWRlNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVt
V2luLmNwcApAQCAtMCwwICsxLDU4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBD
b2xsYWJvcmEsIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
IDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFt
ZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDx3
dGYvRmlsZVN5c3RlbS5oPgorCisjaW5jbHVkZSA8aW8uaD4KKyNpbmNsdWRlIDxzaGxvYmouaD4K
KyNpbmNsdWRlIDxzaGx3YXBpLmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpbmNsdWRlIDx3
aW5kb3dzLmg+CisjaW5jbHVkZSA8d3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmg+
CisjaW5jbHVkZSA8d3RmL0ZpbGVNZXRhZGF0YS5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0J1aWxkZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaD4K
KyNpbmNsdWRlIDx3dGYvd2luL1BhdGhXYWxrZXIuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK25h
bWVzcGFjZSBGaWxlU3lzdGVtIHsKKworc3RhdGljIGNvbnN0IFVMT05HTE9ORyBrU2Vjb25kc0Zy
b21GaWxlVGltZVRvVGltZXQgPSAxMTY0NDQ3MzYwMDsKKworc3RhdGljIGJvb2wgZ2V0RmluZERh
dGEoU3RyaW5nIHBhdGgsIFdJTjMyX0ZJTkRfREFUQVcmIGZpbmREYXRhKQoreworICAgIEhBTkRM
RSBoYW5kbGUgPSBGaW5kRmlyc3RGaWxlVyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIocGF0
aCkuZGF0YSgpLCAmZmluZERhdGEpOworICAgIGlmIChoYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVf
VkFMVUUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBGaW5kQ2xvc2UoaGFuZGxlKTsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wgZ2V0RmlsZVNpemVGcm9tRmluZERhdGEo
Y29uc3QgV0lOMzJfRklORF9EQVRBVyYgZmluZERhdGEsIGxvbmcgbG9uZyYgc2l6ZSkKK3sKKyAg
ICBVTEFSR0VfSU5URUdFUiBmaWxlU2l6ZTsKKyAgICBmaWxlU2l6ZS5IaWdoUGFydCA9IGZpbmRE
YXRhLm5GaWxlU2l6ZUhpZ2g7CisgICAgZmlsZVNpemUuTG93UGFydCA9IGZpbmREYXRhLm5GaWxl
U2l6ZUxvdzsKKworICAgIGlmIChmaWxlU2l6ZS5RdWFkUGFydCA+IHN0YXRpY19jYXN0PFVMT05H
TE9ORz4oc3RkOjpudW1lcmljX2xpbWl0czxsb25nIGxvbmc+OjptYXgoKSkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIHNpemUgPSBmaWxlU2l6ZS5RdWFkUGFydDsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworc3RhdGljIGJvb2wgZ2V0RmlsZVNpemVGcm9tQnlIYW5kbGVGaWxlSW5mb3Jt
YXRpb25TdHJ1Y3R1cmUoY29uc3QgQllfSEFORExFX0ZJTEVfSU5GT1JNQVRJT04mIGZpbGVJbmZv
cm1hdGlvbiwgbG9uZyBsb25nJiBzaXplKQoreworICAgIFVMQVJHRV9JTlRFR0VSIGZpbGVTaXpl
OworICAgIGZpbGVTaXplLkhpZ2hQYXJ0ID0gZmlsZUluZm9ybWF0aW9uLm5GaWxlU2l6ZUhpZ2g7
CisgICAgZmlsZVNpemUuTG93UGFydCA9IGZpbGVJbmZvcm1hdGlvbi5uRmlsZVNpemVMb3c7CisK
KyAgICBpZiAoZmlsZVNpemUuUXVhZFBhcnQgPiBzdGF0aWNfY2FzdDxVTE9OR0xPTkc+KHN0ZDo6
bnVtZXJpY19saW1pdHM8bG9uZyBsb25nPjo6bWF4KCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBzaXplID0gZmlsZVNpemUuUXVhZFBhcnQ7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K3N0YXRpYyB2b2lkIGdldEZpbGVDcmVhdGlvblRpbWVGcm9tRmluZERhdGEoY29uc3QgV0lOMzJf
RklORF9EQVRBVyYgZmluZERhdGEsIHRpbWVfdCYgdGltZSkKK3sKKyAgICBVTEFSR0VfSU5URUdF
UiBmaWxlVGltZTsKKyAgICBmaWxlVGltZS5IaWdoUGFydCA9IGZpbmREYXRhLmZ0Q3JlYXRpb25U
aW1lLmR3SGlnaERhdGVUaW1lOworICAgIGZpbGVUaW1lLkxvd1BhcnQgPSBmaW5kRGF0YS5mdENy
ZWF0aW9uVGltZS5kd0xvd0RhdGVUaW1lOworCisgICAgLy8gSW5mb3JtYXRpb24gYWJvdXQgY29u
dmVydGluZyB0aW1lX3QgdG8gRmlsZVRpbWUgaXMgYXZhaWxhYmxlIGF0IGh0dHA6Ly9tc2RuLm1p
Y3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9tczcyNDIyOCUyOHY9dnMuODUlMjkuYXNweAorICAg
IHRpbWUgPSBmaWxlVGltZS5RdWFkUGFydCAvIDEwMDAwMDAwIC0ga1NlY29uZHNGcm9tRmlsZVRp
bWVUb1RpbWV0OworfQorCisKK3N0YXRpYyB2b2lkIGdldEZpbGVNb2RpZmljYXRpb25UaW1lRnJv
bUZpbmREYXRhKGNvbnN0IFdJTjMyX0ZJTkRfREFUQVcmIGZpbmREYXRhLCB0aW1lX3QmIHRpbWUp
Cit7CisgICAgVUxBUkdFX0lOVEVHRVIgZmlsZVRpbWU7CisgICAgZmlsZVRpbWUuSGlnaFBhcnQg
PSBmaW5kRGF0YS5mdExhc3RXcml0ZVRpbWUuZHdIaWdoRGF0ZVRpbWU7CisgICAgZmlsZVRpbWUu
TG93UGFydCA9IGZpbmREYXRhLmZ0TGFzdFdyaXRlVGltZS5kd0xvd0RhdGVUaW1lOworCisgICAg
Ly8gSW5mb3JtYXRpb24gYWJvdXQgY29udmVydGluZyB0aW1lX3QgdG8gRmlsZVRpbWUgaXMgYXZh
aWxhYmxlIGF0IGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9tczcyNDIy
OCUyOHY9dnMuODUlMjkuYXNweAorICAgIHRpbWUgPSBmaWxlVGltZS5RdWFkUGFydCAvIDEwMDAw
MDAwIC0ga1NlY29uZHNGcm9tRmlsZVRpbWVUb1RpbWV0OworfQorCitib29sIGdldEZpbGVTaXpl
KGNvbnN0IFN0cmluZyYgcGF0aCwgbG9uZyBsb25nJiBzaXplKQoreworICAgIFdJTjMyX0ZJTkRf
REFUQVcgZmluZERhdGE7CisgICAgaWYgKCFnZXRGaW5kRGF0YShwYXRoLCBmaW5kRGF0YSkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBnZXRGaWxlU2l6ZUZyb21GaW5kRGF0
YShmaW5kRGF0YSwgc2l6ZSk7Cit9CisKK2Jvb2wgZ2V0RmlsZVNpemUoUGxhdGZvcm1GaWxlSGFu
ZGxlIGZpbGVIYW5kbGUsIGxvbmcgbG9uZyYgc2l6ZSkKK3sKKyAgICBCWV9IQU5ETEVfRklMRV9J
TkZPUk1BVElPTiBmaWxlSW5mb3JtYXRpb247CisgICAgaWYgKCE6OkdldEZpbGVJbmZvcm1hdGlv
bkJ5SGFuZGxlKGZpbGVIYW5kbGUsICZmaWxlSW5mb3JtYXRpb24pKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICByZXR1cm4gZ2V0RmlsZVNpemVGcm9tQnlIYW5kbGVGaWxlSW5mb3JtYXRp
b25TdHJ1Y3R1cmUoZmlsZUluZm9ybWF0aW9uLCBzaXplKTsKK30KKworT3B0aW9uYWw8V2FsbFRp
bWU+IGdldEZpbGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBX
SU4zMl9GSU5EX0RBVEFXIGZpbmREYXRhOworICAgIGlmICghZ2V0RmluZERhdGEocGF0aCwgZmlu
ZERhdGEpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgdGltZV90IHRpbWUg
PSAwOworICAgIGdldEZpbGVNb2RpZmljYXRpb25UaW1lRnJvbUZpbmREYXRhKGZpbmREYXRhLCB0
aW1lKTsKKyAgICByZXR1cm4gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKHRpbWUpOworfQorCitP
cHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZUNyZWF0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgp
Cit7CisgICAgV0lOMzJfRklORF9EQVRBVyBmaW5kRGF0YTsKKyAgICBpZiAoIWdldEZpbmREYXRh
KHBhdGgsIGZpbmREYXRhKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHRp
bWVfdCB0aW1lID0gMDsKKyAgICBnZXRGaWxlQ3JlYXRpb25UaW1lRnJvbUZpbmREYXRhKGZpbmRE
YXRhLCB0aW1lKTsKKyAgICByZXR1cm4gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKHRpbWUpOwor
fQorCitzdGF0aWMgU3RyaW5nIGdldEZpbmFsUGF0aE5hbWUoY29uc3QgU3RyaW5nJiBwYXRoKQor
eworICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUocGF0aCwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsK
KyAgICBpZiAoIWlzSGFuZGxlVmFsaWQoaGFuZGxlKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygp
OworCisgICAgVmVjdG9yPFVDaGFyPiBidWZmZXIoTUFYX1BBVEgpOworICAgIGlmICg6OkdldEZp
bmFsUGF0aE5hbWVCeUhhbmRsZVcoaGFuZGxlLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgp
LCBWT0xVTUVfTkFNRV9OVCkgPj0gTUFYX1BBVEgpIHsKKyAgICAgICAgY2xvc2VGaWxlKGhhbmRs
ZSk7CisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICB9CisgICAgY2xvc2VGaWxlKGhhbmRs
ZSk7CisKKyAgICBidWZmZXIuc2hyaW5rKHdjc2xlbihidWZmZXIuZGF0YSgpKSk7CisgICAgcmV0
dXJuIFN0cmluZzo6YWRvcHQoV1RGTW92ZShidWZmZXIpKTsKK30KKworc3RhdGljIGlubGluZSBi
b29sIGlzU3ltYm9saWNMaW5rKFdJTjMyX0ZJTkRfREFUQVcgZmluZERhdGEpCit7CisgICAgcmV0
dXJuIGZpbmREYXRhLmR3RmlsZUF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9SRVBBUlNFX1BP
SU5UICYmIGZpbmREYXRhLmR3UmVzZXJ2ZWQwID09IElPX1JFUEFSU0VfVEFHX1NZTUxJTks7Cit9
CisKK3N0YXRpYyBGaWxlTWV0YWRhdGE6OlR5cGUgdG9GaWxlTWV0YWRhdGFUeXBlKFdJTjMyX0ZJ
TkRfREFUQVcgZmluZERhdGEpCit7CisgICAgaWYgKGZpbmREYXRhLmR3RmlsZUF0dHJpYnV0ZXMg
JiBGSUxFX0FUVFJJQlVURV9ESVJFQ1RPUlkpCisgICAgICAgIHJldHVybiBGaWxlTWV0YWRhdGE6
OlR5cGU6OkRpcmVjdG9yeTsKKyAgICBpZiAoaXNTeW1ib2xpY0xpbmsoZmluZERhdGEpKQorICAg
ICAgICByZXR1cm4gRmlsZU1ldGFkYXRhOjpUeXBlOjpTeW1ib2xpY0xpbms7CisgICAgcmV0dXJu
IEZpbGVNZXRhZGF0YTo6VHlwZTo6RmlsZTsKK30KKworc3RhdGljIE9wdGlvbmFsPEZpbGVNZXRh
ZGF0YT4gZmluZERhdGFUb0ZpbGVNZXRhZGF0YShXSU4zMl9GSU5EX0RBVEFXIGZpbmREYXRhKQor
eworICAgIGxvbmcgbG9uZyBsZW5ndGg7CisgICAgaWYgKCFnZXRGaWxlU2l6ZUZyb21GaW5kRGF0
YShmaW5kRGF0YSwgbGVuZ3RoKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAg
IHRpbWVfdCBtb2RpZmljYXRpb25UaW1lOworICAgIGdldEZpbGVNb2RpZmljYXRpb25UaW1lRnJv
bUZpbmREYXRhKGZpbmREYXRhLCBtb2RpZmljYXRpb25UaW1lKTsKKworICAgIHJldHVybiBGaWxl
TWV0YWRhdGEgeworICAgICAgICBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMobW9kaWZpY2F0aW9u
VGltZSksCisgICAgICAgIGxlbmd0aCwKKyAgICAgICAgc3RhdGljX2Nhc3Q8Ym9vbD4oZmluZERh
dGEuZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX0hJRERFTiksCisgICAgICAgIHRv
RmlsZU1ldGFkYXRhVHlwZShmaW5kRGF0YSkKKyAgICB9OworfQorCitPcHRpb25hbDxGaWxlTWV0
YWRhdGE+IGZpbGVNZXRhZGF0YShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgV0lOMzJfRklO
RF9EQVRBVyBmaW5kRGF0YTsKKyAgICBpZiAoIWdldEZpbmREYXRhKHBhdGgsIGZpbmREYXRhKSkK
KyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiBmaW5kRGF0YVRvRmls
ZU1ldGFkYXRhKGZpbmREYXRhKTsKK30KKworT3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0
YWRhdGFGb2xsb3dpbmdTeW1saW5rcyhjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgV0lOMzJf
RklORF9EQVRBVyBmaW5kRGF0YTsKKyAgICBpZiAoIWdldEZpbmREYXRhKHBhdGgsIGZpbmREYXRh
KSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIGlmIChpc1N5bWJvbGljTGlu
ayhmaW5kRGF0YSkpIHsKKyAgICAgICAgU3RyaW5nIHRhcmdldFBhdGggPSBnZXRGaW5hbFBhdGhO
YW1lKHBhdGgpOworICAgICAgICBpZiAodGFyZ2V0UGF0aC5pc051bGwoKSkKKyAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIGlmICghZ2V0RmluZERhdGEodGFyZ2V0UGF0
aCwgZmluZERhdGEpKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICB9CisK
KyAgICByZXR1cm4gZmluZERhdGFUb0ZpbGVNZXRhZGF0YShmaW5kRGF0YSk7Cit9CisKK2Jvb2wg
Y3JlYXRlU3ltYm9saWNMaW5rKGNvbnN0IFN0cmluZyYgdGFyZ2V0UGF0aCwgY29uc3QgU3RyaW5n
JiBzeW1ib2xpY0xpbmtQYXRoKQoreworICAgIHJldHVybiAhOjpDcmVhdGVTeW1ib2xpY0xpbmtX
KHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihzeW1ib2xpY0xpbmtQYXRoKS5kYXRhKCksIHN0
cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcih0YXJnZXRQYXRoKS5kYXRhKCksIDApOworfQorCiti
b29sIGZpbGVFeGlzdHMoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIFdJTjMyX0ZJTkRfREFU
QVcgZmluZERhdGE7CisgICAgcmV0dXJuIGdldEZpbmREYXRhKHBhdGgsIGZpbmREYXRhKTsKK30K
KworYm9vbCBkZWxldGVGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBTdHJpbmcgZmls
ZW5hbWUgPSBwYXRoOworICAgIHJldHVybiAhIURlbGV0ZUZpbGVXKHN0cmluZ1RvTnVsbFRlcm1p
bmF0ZWRXQ2hhcihmaWxlbmFtZSkuZGF0YSgpKTsKK30KKworYm9vbCBkZWxldGVFbXB0eURpcmVj
dG9yeShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgU3RyaW5nIGZpbGVuYW1lID0gcGF0aDsK
KyAgICByZXR1cm4gISFSZW1vdmVEaXJlY3RvcnlXKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hh
cihmaWxlbmFtZSkuZGF0YSgpKTsKK30KKworYm9vbCBtb3ZlRmlsZShjb25zdCBTdHJpbmcmIG9s
ZFBhdGgsIGNvbnN0IFN0cmluZyYgbmV3UGF0aCkKK3sKKyAgICBTdHJpbmcgb2xkRmlsZW5hbWUg
PSBvbGRQYXRoOworICAgIFN0cmluZyBuZXdGaWxlbmFtZSA9IG5ld1BhdGg7CisgICAgcmV0dXJu
ICEhOjpNb3ZlRmlsZUV4KHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihvbGRGaWxlbmFtZSku
ZGF0YSgpLCBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIobmV3RmlsZW5hbWUpLmRhdGEoKSwg
TU9WRUZJTEVfQ09QWV9BTExPV0VEIHwgTU9WRUZJTEVfUkVQTEFDRV9FWElTVElORyk7Cit9CisK
K1N0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25z
dCBTdHJpbmcmIGNvbXBvbmVudCkKK3sKKyAgICBWZWN0b3I8VUNoYXI+IGJ1ZmZlcihNQVhfUEFU
SCk7CisKKyAgICBpZiAocGF0aC5sZW5ndGgoKSArIDEgPiBidWZmZXIuc2l6ZSgpKQorICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBTdHJpbmdWaWV3KHBhdGgpLmdldENoYXJhY3RlcnNX
aXRoVXBjb252ZXJ0KGJ1ZmZlci5kYXRhKCkpOworICAgIGJ1ZmZlcltwYXRoLmxlbmd0aCgpXSA9
ICdcMCc7CisKKyAgICBpZiAoIVBhdGhBcHBlbmRXKGJ1ZmZlci5kYXRhKCksIHN0cmluZ1RvTnVs
bFRlcm1pbmF0ZWRXQ2hhcihjb21wb25lbnQpLmRhdGEoKSkpCisgICAgICAgIHJldHVybiBTdHJp
bmcoKTsKKworICAgIGJ1ZmZlci5zaHJpbmsod2NzbGVuKGJ1ZmZlci5kYXRhKCkpKTsKKworICAg
IHJldHVybiBTdHJpbmc6OmFkb3B0KFdURk1vdmUoYnVmZmVyKSk7Cit9CisKK1N0cmluZyBwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnRzKFN0cmluZ1ZpZXcgcGF0aCwgY29uc3QgVmVjdG9yPFN0cmlu
Z1ZpZXc+JiBjb21wb25lbnRzKQoreworICAgIFN0cmluZyByZXN1bHQgPSBwYXRoLnRvU3RyaW5n
KCk7CisgICAgZm9yIChhdXRvJiBjb21wb25lbnQgOiBjb21wb25lbnRzKQorICAgICAgICByZXN1
bHQgPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVzdWx0LCBjb21wb25lbnQudG9TdHJpbmco
KSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworI2lmICFVU0UoQ0YpCisKK0NTdHJpbmcgZmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBhdXRvIHVw
Y29udmVydGVkQ2hhcmFjdGVycyA9IHBhdGgudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCk7CisKKyAg
ICBjb25zdCBVQ2hhciogY2hhcmFjdGVycyA9IHVwY29udmVydGVkQ2hhcmFjdGVyczsKKyAgICBp
bnQgc2l6ZSA9IFdpZGVDaGFyVG9NdWx0aUJ5dGUoQ1BfQUNQLCAwLCBjaGFyYWN0ZXJzLCBwYXRo
Lmxlbmd0aCgpLCAwLCAwLCAwLCAwKSAtIDE7CisKKyAgICBjaGFyKiBidWZmZXI7CisgICAgQ1N0
cmluZyBzdHJpbmcgPSBDU3RyaW5nOjpuZXdVbmluaXRpYWxpemVkKHNpemUsIGJ1ZmZlcik7CisK
KyAgICBXaWRlQ2hhclRvTXVsdGlCeXRlKENQX0FDUCwgMCwgY2hhcmFjdGVycywgcGF0aC5sZW5n
dGgoKSwgYnVmZmVyLCBzaXplLCAwLCAwKTsKKworICAgIHJldHVybiBzdHJpbmc7Cit9CisKKyNl
bmRpZiAvLyAhVVNFKENGKQorCitib29sIG1ha2VBbGxEaXJlY3Rvcmllcyhjb25zdCBTdHJpbmcm
IHBhdGgpCit7CisgICAgU3RyaW5nIGZ1bGxQYXRoID0gcGF0aDsKKyAgICBpZiAoU0hDcmVhdGVE
aXJlY3RvcnlFeCgwLCBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoZnVsbFBhdGgpLmRhdGEo
KSwgMCkgIT0gRVJST1JfU1VDQ0VTUykgeworICAgICAgICBEV09SRCBlcnJvciA9IEdldExhc3RF
cnJvcigpOworICAgICAgICBpZiAoZXJyb3IgIT0gRVJST1JfRklMRV9FWElTVFMgJiYgZXJyb3Ig
IT0gRVJST1JfQUxSRUFEWV9FWElTVFMpIHsKKyAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVk
IHRvIGNyZWF0ZSBwYXRoICVzIiwgcGF0aC5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK1N0
cmluZyBob21lRGlyZWN0b3J5UGF0aCgpCit7CisgICAgcmV0dXJuICIiOworfQorCitTdHJpbmcg
cGF0aEdldEZpbGVOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICByZXR1cm4gbnVsbFRl
cm1pbmF0ZWRXQ2hhclRvU3RyaW5nKDo6UGF0aEZpbmRGaWxlTmFtZShzdHJpbmdUb051bGxUZXJt
aW5hdGVkV0NoYXIocGF0aCkuZGF0YSgpKSk7Cit9CisKK1N0cmluZyBkaXJlY3RvcnlOYW1lKGNv
bnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBTdHJpbmcgbmFtZSA9IHBhdGgubGVmdChwYXRoLmxl
bmd0aCgpIC0gcGF0aEdldEZpbGVOYW1lKHBhdGgpLmxlbmd0aCgpKTsKKyAgICBpZiAobmFtZS5j
aGFyYWN0ZXJTdGFydGluZ0F0KG5hbWUubGVuZ3RoKCkgLSAxKSA9PSAnXFwnKSB7CisgICAgICAg
IC8vIFJlbW92ZSBhbnkgdHJhaWxpbmcgIlwiLgorICAgICAgICBuYW1lLnRydW5jYXRlKG5hbWUu
bGVuZ3RoKCkgLSAxKTsKKyAgICB9CisgICAgcmV0dXJuIG5hbWU7Cit9CisKK3N0YXRpYyBTdHJp
bmcgYnVuZGxlTmFtZSgpCit7CisgICAgc3RhdGljIGNvbnN0IE5ldmVyRGVzdHJveWVkPFN0cmlu
Zz4gbmFtZSA9IFtdIHsKKyAgICAgICAgU3RyaW5nIG5hbWUgeyAiV2ViS2l0Il9zIH07CisKKyNp
ZiBVU0UoQ0YpCisgICAgICAgIGlmIChDRkJ1bmRsZVJlZiBidW5kbGUgPSBDRkJ1bmRsZUdldE1h
aW5CdW5kbGUoKSkgeworICAgICAgICAgICAgaWYgKENGVHlwZVJlZiBidW5kbGVFeGVjdXRhYmxl
ID0gQ0ZCdW5kbGVHZXRWYWx1ZUZvckluZm9EaWN0aW9uYXJ5S2V5KGJ1bmRsZSwga0NGQnVuZGxl
RXhlY3V0YWJsZUtleSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoQ0ZHZXRUeXBlSUQoYnVuZGxl
RXhlY3V0YWJsZSkgPT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkKKyAgICAgICAgICAgICAgICAgICAg
bmFtZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZTdHJpbmdSZWY+KGJ1bmRsZUV4ZWN1dGFibGUpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisjZW5kaWYKKworICAgICAgICByZXR1cm4gbmFtZTsK
KyAgICB9KCk7CisKKyAgICByZXR1cm4gbmFtZTsKK30KKworc3RhdGljIFN0cmluZyBzdG9yYWdl
RGlyZWN0b3J5KERXT1JEIHBhdGhJZGVudGlmaWVyKQoreworICAgIFZlY3RvcjxVQ2hhcj4gYnVm
ZmVyKE1BWF9QQVRIKTsKKyAgICBpZiAoRkFJTEVEKFNIR2V0Rm9sZGVyUGF0aFcoMCwgcGF0aElk
ZW50aWZpZXIgfCBDU0lETF9GTEFHX0NSRUFURSwgMCwgMCwgYnVmZmVyLmRhdGEoKSkpKQorICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgYnVmZmVyLnJlc2l6ZSh3Y3NsZW4oYnVmZmVyLmRh
dGEoKSkpOworICAgIFN0cmluZyBkaXJlY3RvcnkgPSBTdHJpbmc6OmFkb3B0KFdURk1vdmUoYnVm
ZmVyKSk7CisKKyAgICBkaXJlY3RvcnkgPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGlyZWN0
b3J5LCAiQXBwbGUgQ29tcHV0ZXJcXCIgKyBidW5kbGVOYW1lKCkpOworICAgIGlmICghbWFrZUFs
bERpcmVjdG9yaWVzKGRpcmVjdG9yeSkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAg
IHJldHVybiBkaXJlY3Rvcnk7Cit9CisKK3N0YXRpYyBTdHJpbmcgY2FjaGVkU3RvcmFnZURpcmVj
dG9yeShEV09SRCBwYXRoSWRlbnRpZmllcikKK3sKKyAgICBzdGF0aWMgSGFzaE1hcDxEV09SRCwg
U3RyaW5nPiBkaXJlY3RvcmllczsKKworICAgIEhhc2hNYXA8RFdPUkQsIFN0cmluZz46Oml0ZXJh
dG9yIGl0ID0gZGlyZWN0b3JpZXMuZmluZChwYXRoSWRlbnRpZmllcik7CisgICAgaWYgKGl0ICE9
IGRpcmVjdG9yaWVzLmVuZCgpKQorICAgICAgICByZXR1cm4gaXQtPnZhbHVlOworCisgICAgU3Ry
aW5nIGRpcmVjdG9yeSA9IHN0b3JhZ2VEaXJlY3RvcnkocGF0aElkZW50aWZpZXIpOworICAgIGRp
cmVjdG9yaWVzLmFkZChwYXRoSWRlbnRpZmllciwgZGlyZWN0b3J5KTsKKworICAgIHJldHVybiBk
aXJlY3Rvcnk7Cit9CisKK3N0YXRpYyBTdHJpbmcgZ2VuZXJhdGVUZW1wb3JhcnlQYXRoKGNvbnN0
IEZ1bmN0aW9uPGJvb2woY29uc3QgU3RyaW5nJik+JiBhY3Rpb24pCit7CisgICAgd2NoYXJfdCB0
ZW1wUGF0aFtNQVhfUEFUSF07CisgICAgaW50IHRlbXBQYXRoTGVuZ3RoID0gOjpHZXRUZW1wUGF0
aFcoV1RGX0FSUkFZX0xFTkdUSCh0ZW1wUGF0aCksIHRlbXBQYXRoKTsKKyAgICBpZiAodGVtcFBh
dGhMZW5ndGggPD0gMCB8fCB0ZW1wUGF0aExlbmd0aCA+IFdURl9BUlJBWV9MRU5HVEgodGVtcFBh
dGgpKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBTdHJpbmcgcHJvcG9zZWRQYXRo
OworICAgIGRvIHsKKyAgICAgICAgd2NoYXJfdCB0ZW1wRmlsZVtdID0gTCJYWFhYWFhYWC50bXAi
OyAvLyBVc2UgOC4zIHN0eWxlIG5hbWUgKG1vcmUgY2hhcmFjdGVycyBhcmVuJ3QgaGVscGZ1bCBk
dWUgdG8gOC4zIHNob3J0IGZpbGUgbmFtZXMpCisgICAgICAgIGNvbnN0IGludCByYW5kb21QYXJ0
TGVuZ3RoID0gODsKKyAgICAgICAgY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21WYWx1ZXModGVtcEZp
bGUsIHJhbmRvbVBhcnRMZW5ndGggKiBzaXplb2Yod2NoYXJfdCkpOworCisgICAgICAgIC8vIExp
bWl0IHRvIHZhbGlkIGZpbGVzeXN0ZW0gY2hhcmFjdGVycywgYWxzbyBleGNsdWRpbmcgb3RoZXJz
IHRoYXQgY291bGQgYmUgcHJvYmxlbWF0aWMsIGxpa2UgcHVuY3R1YXRpb24uCisgICAgICAgIC8v
IGRvbid0IGluY2x1ZGUgYm90aCB1cHBlciBhbmQgbG93ZXJjYXNlIHNpbmNlIFdpbmRvd3MgZmls
ZSBzeXN0ZW1zIGFyZSB0eXBpY2FsbHkgbm90IGNhc2Ugc2Vuc2l0aXZlLgorICAgICAgICBjb25z
dCBjaGFyIHZhbGlkQ2hhcnNbXSA9ICIwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4
eXoiOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJhbmRvbVBhcnRMZW5ndGg7ICsraSkK
KyAgICAgICAgICAgIHRlbXBGaWxlW2ldID0gdmFsaWRDaGFyc1t0ZW1wRmlsZVtpXSAlIChzaXpl
b2YodmFsaWRDaGFycykgLSAxKV07CisKKyAgICAgICAgQVNTRVJUKHdjc2xlbih0ZW1wRmlsZSkg
PT0gV1RGX0FSUkFZX0xFTkdUSCh0ZW1wRmlsZSkgLSAxKTsKKworICAgICAgICBwcm9wb3NlZFBh
dGggPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5n
KHRlbXBQYXRoKSwgbnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5nKHRlbXBGaWxlKSk7CisgICAg
ICAgIGlmIChwcm9wb3NlZFBhdGguaXNFbXB0eSgpKQorICAgICAgICAgICAgYnJlYWs7CisgICAg
fSB3aGlsZSAoIWFjdGlvbihwcm9wb3NlZFBhdGgpKTsKKworICAgIHJldHVybiBwcm9wb3NlZFBh
dGg7Cit9CisKK1N0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmLCBQbGF0Zm9y
bUZpbGVIYW5kbGUmIGhhbmRsZSkKK3sKKyAgICBoYW5kbGUgPSBJTlZBTElEX0hBTkRMRV9WQUxV
RTsKKworICAgIFN0cmluZyBwcm9wb3NlZFBhdGggPSBnZW5lcmF0ZVRlbXBvcmFyeVBhdGgoWyZo
YW5kbGVdKGNvbnN0IFN0cmluZyYgcHJvcG9zZWRQYXRoKSB7CisgICAgICAgIC8vIHVzZSBDUkVB
VEVfTkVXIHRvIGF2b2lkIG92ZXJ3cml0aW5nIGFuIGV4aXN0aW5nIGZpbGUgd2l0aCB0aGUgc2Ft
ZSBuYW1lCisgICAgICAgIGhhbmRsZSA9IDo6Q3JlYXRlRmlsZVcoc3RyaW5nVG9OdWxsVGVybWlu
YXRlZFdDaGFyKHByb3Bvc2VkUGF0aCkuZGF0YSgpLCBHRU5FUklDX1JFQUQgfCBHRU5FUklDX1dS
SVRFLCAwLCAwLCBDUkVBVEVfTkVXLCBGSUxFX0FUVFJJQlVURV9OT1JNQUwsIDApOworCisgICAg
ICAgIHJldHVybiBpc0hhbmRsZVZhbGlkKGhhbmRsZSkgfHwgR2V0TGFzdEVycm9yKCkgPT0gRVJS
T1JfQUxSRUFEWV9FWElTVFM7CisgICAgfSk7CisKKyAgICBpZiAoIWlzSGFuZGxlVmFsaWQoaGFu
ZGxlKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgcmV0dXJuIHByb3Bvc2VkUGF0
aDsKK30KKworUGxhdGZvcm1GaWxlSGFuZGxlIG9wZW5GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwg
RmlsZU9wZW5Nb2RlIG1vZGUpCit7CisgICAgRFdPUkQgZGVzaXJlZEFjY2VzcyA9IDA7CisgICAg
RFdPUkQgY3JlYXRpb25EaXNwb3NpdGlvbiA9IDA7CisgICAgRFdPUkQgc2hhcmVNb2RlID0gMDsK
KyAgICBzd2l0Y2ggKG1vZGUpIHsKKyAgICBjYXNlIEZpbGVPcGVuTW9kZTo6UmVhZDoKKyAgICAg
ICAgZGVzaXJlZEFjY2VzcyA9IEdFTkVSSUNfUkVBRDsKKyAgICAgICAgY3JlYXRpb25EaXNwb3Np
dGlvbiA9IE9QRU5fRVhJU1RJTkc7CisgICAgICAgIHNoYXJlTW9kZSA9IEZJTEVfU0hBUkVfUkVB
RDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGaWxlT3Blbk1vZGU6OldyaXRlOgorICAgICAg
ICBkZXNpcmVkQWNjZXNzID0gR0VORVJJQ19XUklURTsKKyAgICAgICAgY3JlYXRpb25EaXNwb3Np
dGlvbiA9IENSRUFURV9BTFdBWVM7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKworICAgIFN0cmluZyBkZXN0aW5hdGlv
biA9IHBhdGg7CisgICAgcmV0dXJuIENyZWF0ZUZpbGUoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdD
aGFyKGRlc3RpbmF0aW9uKS5kYXRhKCksIGRlc2lyZWRBY2Nlc3MsIHNoYXJlTW9kZSwgMCwgY3Jl
YXRpb25EaXNwb3NpdGlvbiwgRklMRV9BVFRSSUJVVEVfTk9STUFMLCAwKTsKK30KKwordm9pZCBj
bG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpCit7CisgICAgaWYgKGlzSGFuZGxl
VmFsaWQoaGFuZGxlKSkgeworICAgICAgICA6OkNsb3NlSGFuZGxlKGhhbmRsZSk7CisgICAgICAg
IGhhbmRsZSA9IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7CisgICAgfQorfQorCitsb25nIGxv
bmcgc2Vla0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCwg
RmlsZVNlZWtPcmlnaW4gb3JpZ2luKQoreworICAgIERXT1JEIG1vdmVNZXRob2QgPSBGSUxFX0JF
R0lOOworCisgICAgaWYgKG9yaWdpbiA9PSBGaWxlU2Vla09yaWdpbjo6Q3VycmVudCkKKyAgICAg
ICAgbW92ZU1ldGhvZCA9IEZJTEVfQ1VSUkVOVDsKKyAgICBlbHNlIGlmIChvcmlnaW4gPT0gRmls
ZVNlZWtPcmlnaW46OkVuZCkKKyAgICAgICAgbW92ZU1ldGhvZCA9IEZJTEVfRU5EOworCisgICAg
TEFSR0VfSU5URUdFUiBsYXJnZU9mZnNldDsKKyAgICBsYXJnZU9mZnNldC5RdWFkUGFydCA9IG9m
ZnNldDsKKworICAgIGxhcmdlT2Zmc2V0Lkxvd1BhcnQgPSBTZXRGaWxlUG9pbnRlcihoYW5kbGUs
IGxhcmdlT2Zmc2V0Lkxvd1BhcnQsICZsYXJnZU9mZnNldC5IaWdoUGFydCwgbW92ZU1ldGhvZCk7
CisKKyAgICBpZiAobGFyZ2VPZmZzZXQuTG93UGFydCA9PSBJTlZBTElEX1NFVF9GSUxFX1BPSU5U
RVIgJiYgR2V0TGFzdEVycm9yKCkgIT0gTk9fRVJST1IpCisgICAgICAgIHJldHVybiAtMTsKKwor
ICAgIHJldHVybiBsYXJnZU9mZnNldC5RdWFkUGFydDsKK30KKworaW50IHdyaXRlVG9GaWxlKFBs
YXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCit7
CisgICAgaWYgKCFpc0hhbmRsZVZhbGlkKGhhbmRsZSkpCisgICAgICAgIHJldHVybiAtMTsKKwor
ICAgIERXT1JEIGJ5dGVzV3JpdHRlbjsKKyAgICBib29sIHN1Y2Nlc3MgPSBXcml0ZUZpbGUoaGFu
ZGxlLCBkYXRhLCBsZW5ndGgsICZieXRlc1dyaXR0ZW4sIDApOworCisgICAgaWYgKCFzdWNjZXNz
KQorICAgICAgICByZXR1cm4gLTE7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oYnl0ZXNX
cml0dGVuKTsKK30KKworaW50IHJlYWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxl
LCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQoreworICAgIGlmICghaXNIYW5kbGVWYWxpZChoYW5k
bGUpKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBEV09SRCBieXRlc1JlYWQ7CisgICAgYm9v
bCBzdWNjZXNzID0gOjpSZWFkRmlsZShoYW5kbGUsIGRhdGEsIGxlbmd0aCwgJmJ5dGVzUmVhZCwg
MCk7CisKKyAgICBpZiAoIXN1Y2Nlc3MpCisgICAgICAgIHJldHVybiAtMTsKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8aW50PihieXRlc1JlYWQpOworfQorCitib29sIGhhcmRMaW5rT3JDb3B5Rmls
ZShjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbikKK3sKKyAg
ICByZXR1cm4gISE6OkNvcHlGaWxlKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihzb3VyY2Up
LmRhdGEoKSwgc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGRlc3RpbmF0aW9uKS5kYXRhKCks
IFRSVUUpOworfQorCitTdHJpbmcgbG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCkK
K3sKKyAgICByZXR1cm4gY2FjaGVkU3RvcmFnZURpcmVjdG9yeShDU0lETF9MT0NBTF9BUFBEQVRB
KTsKK30KKworU3RyaW5nIHJvYW1pbmdVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCkKK3sK
KyAgICByZXR1cm4gY2FjaGVkU3RvcmFnZURpcmVjdG9yeShDU0lETF9BUFBEQVRBKTsKK30KKwor
VmVjdG9yPFN0cmluZz4gbGlzdERpcmVjdG9yeShjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgY29u
c3QgU3RyaW5nJiBmaWx0ZXIpCit7CisgICAgVmVjdG9yPFN0cmluZz4gZW50cmllczsKKworICAg
IFBhdGhXYWxrZXIgd2Fsa2VyKGRpcmVjdG9yeSwgZmlsdGVyKTsKKyAgICBpZiAoIXdhbGtlci5p
c1ZhbGlkKCkpCisgICAgICAgIHJldHVybiBlbnRyaWVzOworCisgICAgZG8geworICAgICAgICBp
ZiAod2Fsa2VyLmRhdGEoKS5kd0ZpbGVBdHRyaWJ1dGVzICYgRklMRV9BVFRSSUJVVEVfRElSRUNU
T1JZCisgICAgICAgICAgICAmJiAoIXdjc2NtcCh3YWxrZXIuZGF0YSgpLmNGaWxlTmFtZSwgTCIu
IikgfHwgIXdjc2NtcCh3YWxrZXIuZGF0YSgpLmNGaWxlTmFtZSwgTCIuLiIpKSkKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworCisgICAgICAgIGVudHJpZXMuYXBwZW5kKGRpcmVjdG9yeSArICJcXCIg
KyByZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4od2Fsa2VyLmRhdGEoKS5jRmlsZU5hbWUp
KTsKKyAgICB9IHdoaWxlICh3YWxrZXIuc3RlcCgpKTsKKworICAgIHJldHVybiBlbnRyaWVzOwor
fQorCitib29sIGdldFZvbHVtZUZyZWVTcGFjZShjb25zdCBTdHJpbmcmLCB1aW50NjRfdCYpCit7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCitPcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNl
SWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQoreworICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUo
ZnNGaWxlLmRhdGEoKSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKKyAgICBpZiAoIWlzSGFuZGxlVmFs
aWQoaGFuZGxlKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIEJZX0hBTkRM
RV9GSUxFX0lORk9STUFUSU9OIGZpbGVJbmZvcm1hdGlvbiA9IHsgfTsKKyAgICBpZiAoITo6R2V0
RmlsZUluZm9ybWF0aW9uQnlIYW5kbGUoaGFuZGxlLCAmZmlsZUluZm9ybWF0aW9uKSkgeworICAg
ICAgICBjbG9zZUZpbGUoaGFuZGxlKTsKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICB9CisKKyAgICBjbG9zZUZpbGUoaGFuZGxlKTsKKworICAgIHJldHVybiBmaWxlSW5mb3JtYXRp
b24uZHdWb2x1bWVTZXJpYWxOdW1iZXI7Cit9CisKK1N0cmluZyByZWFsUGF0aChjb25zdCBTdHJp
bmcmIGZpbGVQYXRoKQoreworICAgIHJldHVybiBnZXRGaW5hbFBhdGhOYW1lKGZpbGVQYXRoKTsK
K30KKworU3RyaW5nIGNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIGdl
bmVyYXRlVGVtcG9yYXJ5UGF0aChbXShjb25zdCBTdHJpbmcmIHByb3Bvc2VkUGF0aCkgeworICAg
ICAgICByZXR1cm4gbWFrZUFsbERpcmVjdG9yaWVzKHByb3Bvc2VkUGF0aCk7CisgICAgfSk7Cit9
CisKK2Jvb2wgZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnlQ
YXRoKQoreworICAgIFNIRklMRU9QU1RSVUNUIGRlbGV0ZU9wZXJhdGlvbiA9IHsKKyAgICAgICAg
bnVsbHB0ciwKKyAgICAgICAgRk9fREVMRVRFLAorICAgICAgICBzdHJpbmdUb051bGxUZXJtaW5h
dGVkV0NoYXIoZGlyZWN0b3J5UGF0aCkuZGF0YSgpLAorICAgICAgICBMIiIsCisgICAgICAgIEZP
Rl9OT0NPTkZJUk1BVElPTiB8IEZPRl9OT0VSUk9SVUkgfCBGT0ZfU0lMRU5ULAorICAgICAgICBm
YWxzZSwKKyAgICAgICAgMCwKKyAgICAgICAgTCIiCisgICAgfTsKKyAgICByZXR1cm4gIVNIRmls
ZU9wZXJhdGlvbigmZGVsZXRlT3BlcmF0aW9uKTsKK30KKworfSAvLyBuYW1lc3BhY2UgRmlsZVN5
c3RlbQorfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi93aW4v
UGF0aFdhbGtlci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vUGF0aFdhbGtlci5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYzZkM2Y5NzA2MDQ5Y2IxM2M5ZWY2MzU1ZWJiNjNhNTA3OTg1MDIyMQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9QYXRoV2Fsa2VyLmNwcApAQCAtMCwwICsxLDUy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHd0Zi93aW4v
UGF0aFdhbGtlci5oPgorCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+CisKK25hbWVzcGFjZSBXVEYgewor
CitQYXRoV2Fsa2VyOjpQYXRoV2Fsa2VyKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBjb25zdCBT
dHJpbmcmIHBhdHRlcm4pCit7CisgICAgU3RyaW5nIHBhdGggPSBkaXJlY3RvcnkgKyAiXFwiICsg
cGF0dGVybjsKKyAgICBtX2hhbmRsZSA9IDo6RmluZEZpcnN0RmlsZVcoc3RyaW5nVG9OdWxsVGVy
bWluYXRlZFdDaGFyKHBhdGgpLmRhdGEoKSwgJm1fZGF0YSk7Cit9CisKK1BhdGhXYWxrZXI6On5Q
YXRoV2Fsa2VyKCkKK3sKKyAgICBpZiAoIWlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuOworICAg
IDo6RmluZENsb3NlKG1faGFuZGxlKTsKK30KKworYm9vbCBQYXRoV2Fsa2VyOjpzdGVwKCkKK3sK
KyAgICByZXR1cm4gOjpGaW5kTmV4dEZpbGVXKG1faGFuZGxlLCAmbV9kYXRhKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi93aW4vUGF0aFdhbGtl
ci5oIGIvU291cmNlL1dURi93dGYvd2luL1BhdGhXYWxrZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NTNhZTJl
NmFlODU2MWFmMzQ1NGUyMTgzODhkZjg5MDA1ZWEzM2JjCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dURi93dGYvd2luL1BhdGhXYWxrZXIuaApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSA8V2luZG93cy5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Cisj
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisKK25hbWVzcGFjZSBXVEYgeworCitjbGFzcyBQ
YXRoV2Fsa2VyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQYXRoV2Fsa2VyKTsKK3B1Ymxp
YzoKKyAgICBQYXRoV2Fsa2VyKGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3RvcnksIGNvbnN0IFdU
Rjo6U3RyaW5nJiBwYXR0ZXJuKTsKKyAgICB+UGF0aFdhbGtlcigpOworCisgICAgYm9vbCBpc1Zh
bGlkKCkgY29uc3QgeyByZXR1cm4gbV9oYW5kbGUgIT0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7IH0K
KyAgICBjb25zdCBXSU4zMl9GSU5EX0RBVEFXJiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRh
OyB9CisKKyAgICBib29sIHN0ZXAoKTsKKworcHJpdmF0ZToKKyAgICBIQU5ETEUgbV9oYW5kbGU7
CisgICAgV0lOMzJfRklORF9EQVRBVyBtX2RhdGE7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcAppbmRleCA5
MzU2NjUwMWE5OWUxOTg4OGIxYmQzOTU0NTI4ODFjNDc0NTU3ZGY2Li44MThmMjI0YmQ1NjQ4M2M4
YWQ2NjAyYjMwMmQ2YWUwYjcyZGVkMWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9DRE0uY3BwCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiQ0RNRmFj
dG9yeS5oIgogI2luY2x1ZGUgIkNETVByaXZhdGUuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgot
I2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJJbml0RGF0YVJlZ2lzdHJ5LmgiCiAj
aW5jbHVkZSAiTWVkaWFLZXlzUmVxdWlyZW1lbnQuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllci5o
IgpAQCAtNDIsNiArNDEsNyBAQAogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVk
ZSAiU2VjdXJpdHlPcmlnaW5EYXRhLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRl
IDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNlc3Npb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9u
LmNwcAppbmRleCBlNjY2Y2U5NzkzNjc0NWVkYTAxMDY2MDc5NzhmNmU5ODA5ZmYwYjM5Li42NWVk
ZGExNmY3OTUwZDI0OWJjZjczMTYyODYxNTA4NTRlZjI4MWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNlc3Np
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5
L1dlYktpdE1lZGlhS2V5U2Vzc2lvbi5jcHAKQEAgLTMwLDEzICszMCwxMyBAQAogCiAjaW5jbHVk
ZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCi0jaW5jbHVkZSAiRmlsZVN5
c3RlbS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbkRhdGEu
aCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIldlYktpdE1lZGlhS2V5RXJyb3Iu
aCIKICNpbmNsdWRlICJXZWJLaXRNZWRpYUtleU1lc3NhZ2VFdmVudC5oIgogI2luY2x1ZGUgIldl
YktpdE1lZGlhS2V5cy5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVz
YXBpL0RPTUZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBp
L0RPTUZpbGVTeXN0ZW0uY3BwCmluZGV4IDZkZDQxNzEzMDhhZDQ2N2YyYTRjMjdjOWNlOTc3Mjli
M2ZhZDhjZjkuLjM2ODc5NGVmNWMxYTBmZTc5OGIyYTFiYTUwODg2YzBiNGZlYmNiOTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5j
cHAKQEAgLTI3LDEyICsyNywxMiBAQAogI2luY2x1ZGUgIkRPTUZpbGVTeXN0ZW0uaCIKIAogI2lu
Y2x1ZGUgIkZpbGUuaCIKLSNpbmNsdWRlICJGaWxlTWV0YWRhdGEuaCIKLSNpbmNsdWRlICJGaWxl
U3lzdGVtLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5LmgiCiAjaW5jbHVk
ZSAiRmlsZVN5c3RlbUZpbGVFbnRyeS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaCIKICNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuaD4KKyNpbmNsdWRlIDx3dGYv
RmlsZU1ldGFkYXRhLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3
dGYvVVVJRC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1FbnRyeS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbUVudHJ5LmNw
cAppbmRleCBkY2NiNWExMTg2M2Q5YmIxMGYyODdkNTdmZGMxMzlhMGI5YjFiMTExLi40MjRjY2Ey
NmNkNGM3Yjg2MTAzZmQ1MjBmMWZmNzBmMGRhMDM1MWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbUVudHJ5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbUVudHJ5LmNwcApAQCAtMjksMTAg
KzI5LDEwIEBACiAjaW5jbHVkZSAiRE9NRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiRE9NRmlsZVN5
c3RlbS5oIgogI2luY2x1ZGUgIkVycm9yQ2FsbGJhY2suaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVt
LmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5LmgiCiAjaW5jbHVkZSAiRmls
ZVN5c3RlbUVudHJ5Q2FsbGJhY2suaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0
LmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFz
ZUlkZW50aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2VJZGVudGlmaWVyLmNwcAppbmRleCBjN2ZkZmQwZGQ2NTQ1ZjhjNmZlNTM0MmZiMzY0NmZl
OWE4NDY5NGI5Li5iNDI5YjNmMjZiOTM0NmZiYjFkYWU3ZWM2NTBlNDZlMjU2ZGZjOGM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50
aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFi
YXNlSWRlbnRpZmllci5jcHAKQEAgLTI4LDggKzI4LDggQEAKIAogI2lmIEVOQUJMRShJTkRFWEVE
X0RBVEFCQVNFKQogCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5
T3JpZ2luLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvUmVm
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJh
Y2tpbmdTdG9yZS5jcHAKaW5kZXggMjE3OGNjNDJhOWI1MTE0M2NlNWQ4NWY0ZDExZjdhYjI2MDky
NGVjNy4uMjg1ZDUwMmRhZTgxYTlhNzY4YWEzNGExZDI1NmRmNTA0N2Q2MWJmZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tp
bmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lmIEVOQUJM
RShJTkRFWEVEX0RBVEFCQVNFKQogCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUg
IklEQkJpbmRpbmdVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJJREJHZXRBbGxSZWNvcmRzRGF0YS5o
IgogI2luY2x1ZGUgIklEQkdldEFsbFJlc3VsdC5oIgpAQCAtNTQsNiArNTMsNyBAQAogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTR2xvYmFsT2JqZWN0Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvU3Ryb25nSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cnVjdHVy
ZUlubGluZXMuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCVHJhbnNhY3Rpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQlRy
YW5zYWN0aW9uLmNwcAppbmRleCA3ODFiNzlmNjNhMDYxZDU4ZDFjOTJhNDEzYzIxYWZkZTY1NjQ5
MzZlLi5iZWVhNmIxNjcwNjI0ZTVjOTgwZjMxNjYzNGMwMzY1ZGZkZWJjNmNiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCVHJhbnNh
Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9T
UUxpdGVJREJUcmFuc2FjdGlvbi5jcHAKQEAgLTI3LDEzICsyNywxMyBAQAogCiAjaWYgRU5BQkxF
KElOREVYRURfREFUQUJBU0UpCiAKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAi
SURCQ3Vyc29ySW5mby5oIgogI2luY2x1ZGUgIkluZGV4ZWREQi5oIgogI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKICNpbmNsdWRlICJTUUxpdGVJREJCYWNraW5nU3RvcmUuaCIKICNpbmNsdWRlICJTUUxp
dGVJREJDdXJzb3IuaCIKICNpbmNsdWRlICJTUUxpdGVUcmFuc2FjdGlvbi5oIgorI2luY2x1ZGUg
PHd0Zi9GaWxlU3lzdGVtLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBJREJT
ZXJ2ZXIgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hh
cmVkL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNwcAppbmRleCA2MWFlYjhmN2Q3MDE1MWI5
NDIyODVhY2RjY2Y4MWJmYjFlYTQyNjI2Li5kZDlmNWFkMjkzMTdjNWNkYzc1ODgzMmFjNmEzNzBi
ZGY5NWRkODk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
aGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNwcApAQCAtMjgsNyArMjgsNiBA
QAogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKLSNpbmNsdWRlICJGaWxlU3lzdGVt
LmgiCiAjaW5jbHVkZSAiSURCQ29ubmVjdGlvblRvQ2xpZW50LmgiCiAjaW5jbHVkZSAiSURCQ29u
bmVjdGlvblRvU2VydmVyLmgiCiAjaW5jbHVkZSAiSURCQ3Vyc29ySW5mby5oIgpAQCAtNDAsNiAr
MzksNyBAQAogI2luY2x1ZGUgIklEQlJlc3VsdERhdGEuaCIKICNpbmNsdWRlICJJREJWYWx1ZS5o
IgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2lu
Y2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcApp
bmRleCBkOTY1NDFlZDQ5ZjY5MzgyNGVkMWRmYzUyNTA4OGRhYzMyYmM1OWM1Li40MDhmNjIyMTJh
ZTJiMTdiMzhhYzE5MDk4OTUxYTBmMDkyZDRiMDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCkBAIC0zNCw3ICsz
NCw2IEBACiAjaW5jbHVkZSAiRGF0YWJhc2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VN
YW5hZ2VyQ2xpZW50LmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VUaHJlYWQuaCIKLSNpbmNsdWRlICJG
aWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk9yaWdpbkxvY2su
aCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgpAQCAtNDMsNiArNDIsNyBAQAogI2luY2x1
ZGUgIlNRTGl0ZUZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJTUUxpdGVTdGF0ZW1lbnQuaCIKICNp
bmNsdWRlICJTUUxpdGVUcmFuc2FjdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+
CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL09yaWdpbkxvY2suY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5Mb2NrLmNwcAppbmRleCA0MjNiMmU2NmRkZmEx
MmNjMzQwZjYwZmNlNTlkMzUzZGY5OTg2N2Y0Li5hMjFiY2RiNzgzODZjODEwZWM1OTk0MWMyNzVm
NGVmYmFmZjIzZmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL09yaWdpbkxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvT3JpZ2luTG9jay5jcHAKQEAgLTI2LDggKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJPcmlnaW5Mb2NrLmgiCiAKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCi0KIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogU3RyaW5nIE9yaWdpbkxvY2s6OmxvY2tGaWxlTmFtZUZvclBh
dGgoU3RyaW5nIG9yaWdpblBhdGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL09yaWdpbkxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvT3JpZ2luTG9jay5oCmluZGV4IGExNmU4NGYxNDg5ZGFmMmVlOGY1MDQ2MTlkMTM5OTNi
OGQzNzVlMTAuLmVjYzI5ZTg5MDI1YmRmNjI5MzkyYjEwNTllZjg4NzBlNmY4ZjkyZjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luTG9jay5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luTG9jay5oCkBAIC0y
NSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgor
I2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNs
dWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
Y29jb2EvRGF0YWJhc2VNYW5hZ2VyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL2NvY29hL0RhdGFiYXNlTWFuYWdlckNvY29hLm1tCmluZGV4IDdjZmU5ZmIwNjMy
NjkxODFkNDRmMTNjMzgzNjgyNTMzZDRlNGRmYzkuLjhkMzI1MDczYjA0YWNhMWQzMjg0OTZlMTgy
ODMzOGRmZWJjYWJmZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvY29jb2EvRGF0YWJhc2VNYW5hZ2VyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9jb2NvYS9EYXRhYmFzZU1hbmFnZXJDb2NvYS5tbQpAQCAtMjks
NyArMjksNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJEYXRhYmFzZU1hbmFnZXIu
aCIKIAotI2ltcG9ydCAiRmlsZVN5c3RlbS5oIgorI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
UEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNGZiZGRlMzlhNGFjNzYyMjgwZGMyOTc3YWMx
ZmFkNjc5NDBkZmM2Mi4uZDE2NGE0YzcyYWRiOGQ1ZGMwZDYwNGRlOGI2ZDFlNTU1Yzc1MjE1ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMTMzLDcgKzEzMyw2IEBACiAJCUExMTc1QjU3MUY2QjQ3MDUwMEM0QjlGMCAvKiBEZWZh
dWx0U2VhcmNoUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEExMTc1QjU1MUY2QjQ3MDUwMEM0QjlGMCAvKiBEZWZhdWx0U2VhcmNoUHJvdmlk
ZXIuaCAqLzsgfTsKIAkJQTExNzVCNTgxRjZCNDcwNTAwQzRCOUYwIC8qIERlZmF1bHRTZWFyY2hQ
cm92aWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBMTE3NUI1NjFGNkI0NzA1MDBDNEI5RjAgLyogRGVmYXVsdFNlYXJjaFByb3ZpZGVyLmNwcCAq
LzsgfTsKIAkJQTExNzVCNUExRjZCNEE4NDAwQzRCOUYwIC8qIE5TU2Nyb2xsVmlld1NQSS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTExNzVCNTkxRjZC
NEE4NDAwQzRCOUYwIC8qIE5TU2Nyb2xsVmlld1NQSS5oICovOyB9OwotCQlBMUY1NURDRjFGNTUy
OEVDMDBFREI3NUYgLyogTWV0YWRhdGFTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEExRjU1RENFMUY1NTI4RUMwMEVEQjc1RiAvKiBNZXRhZGF0YVNQ
SS5oICovOyB9OwogCQlBMUY2M0M5RjIxQTREQkY3MDA2RkI0M0IgLyogUGFzc0tpdFNvZnRMaW5r
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUY2M0M5
RDIxQTREQkY3MDA2RkI0M0IgLyogUGFzc0tpdFNvZnRMaW5rLmggKi87IH07CiAJCUExRjYzQ0Ew
MjFBNERCRjcwMDZGQjQzQiAvKiBQYXNzS2l0U29mdExpbmsubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUY2M0M5RTIxQTREQkY3MDA2RkI0M0IgLyog
UGFzc0tpdFNvZnRMaW5rLm1tICovOyB9OwogCQlBMzBENDEyMTFGMEREMEVBMDBCNzE5NTQgLyog
S2lsbFJpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEEzMEQ0MTFFMUYwREQwRUEwMEI3MTk1NCAvKiBLaWxsUmluZy5oICovOyB9OwpAQCAtMjk0LDcg
KzI5Myw2IEBACiAJCUExMTc1QjU1MUY2QjQ3MDUwMEM0QjlGMCAvKiBEZWZhdWx0U2VhcmNoUHJv
dmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVmYXVsdFNlYXJjaFByb3ZpZGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExMTc1QjU2MUY2QjQ3MDUwMEM0QjlGMCAvKiBEZWZhdWx0
U2VhcmNoUHJvdmlkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGVmYXVsdFNlYXJjaFByb3Zp
ZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTExNzVCNTkxRjZCNEE4NDAw
QzRCOUYwIC8qIE5TU2Nyb2xsVmlld1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOU1Njcm9sbFZpZXdT
UEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTFGNTVEQ0UxRjU1MjhFQzAwRURC
NzVGIC8qIE1ldGFkYXRhU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1ldGFkYXRhU1BJLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExRjYzQzlEMjFBNERCRjcwMDZGQjQzQiAvKiBQYXNz
S2l0U29mdExpbmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFzc0tpdFNvZnRMaW5rLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExRjYzQzlFMjFBNERCRjcwMDZGQjQzQiAvKiBQYXNzS2l0
U29mdExpbmsubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQYXNzS2l0U29mdExpbmsubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzMEQ0MTFFMUYwREQwRUEwMEI3MTk1NCAvKiBL
aWxsUmluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBLaWxsUmluZy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDQ5LDcgKzQ0Nyw2IEBACiAJCQkJQTEwMjY1
ODgxRjU2NzQ3QTAwQjRDODQ0IC8qIEhJVG9vbGJveFNQSS5oICovLAogCQkJCTBDNzc4NTcyMUY0
NTEzMEYwMEY0RUJCNiAvKiBMb29rdXBTUEkuaCAqLywKIAkJCQkwQzc3ODU3MzFGNDUxMzBGMDBG
NEVCQjYgLyogTWVkaWFSZW1vdGVTUEkuaCAqLywKLQkJCQlBMUY1NURDRTFGNTUyOEVDMDBFREI3
NUYgLyogTWV0YWRhdGFTUEkuaCAqLywKIAkJCQkwQzc3ODU3NDFGNDUxMzBGMDBGNEVCQjYgLyog
TlNBY2Nlc3NpYmlsaXR5U1BJLmggKi8sCiAJCQkJMUNDRUU0RjYyMEQ4NzQzRjAwNDdCMDk3IC8q
IE5TQXBwZWFyYW5jZVNQSS5oICovLAogCQkJCTBDNzc4NTc1MUY0NTEzMEYwMEY0RUJCNiAvKiBO
U0FwcGxpY2F0aW9uU1BJLmggKi8sCkBAIC03MDEsNyArNjk4LDYgQEAKIAkJCQkwQzVBRjkxRDFG
NDNBNEM3MDAyRUFDMDIgLyogTWVkaWFQbGF5ZXJTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBD
Nzc4NThDMUY0NTEzMEYwMEY0RUJCNiAvKiBNZWRpYVJlbW90ZVNQSS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEMwMENGRDQxRjY4Q0U0NjAwQUFDMjZEIC8qIE1lZGlhVGltZUFWRm91bmRhdGlvbi5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJQTFGNTVEQ0YxRjU1MjhFQzAwRURCNzVGIC8qIE1ldGFkYXRh
U1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzVBRjkxRTFGNDNBNEM3MDAyRUFDMDIgLyogTW9i
aWxlR2VzdGFsdFNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEMyREExNDkxRjNCRUI0OTAwREJD
MzE3IC8qIE5FRmlsdGVyU291cmNlU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzc3ODU4RDFG
NDUxMzBGMDBGNEVCQjYgLyogTlNBY2Nlc3NpYmlsaXR5U1BJLmggaW4gSGVhZGVycyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IDZiMWJkMjU5MjZmNDJi
ZDY0NjAzMmFkOTA0YTc4N2U2OWI3NTBhYzkuLmYxMzA3Njg0M2Y4ODMxNmJjMzhiZDgwZGE3MmY0
ODlhODIzNzYyOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvUGxhdGZvcm1N
YWMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9QbGF0Zm9ybU1hYy5jbWFrZQpA
QCAtNTgsNyArNTgsNiBAQCBsaXN0KEFQUEVORCBQQUxfUFVCTElDX0hFQURFUlMKICAgICBzcGkv
bWFjL0hJVG9vbGJveFNQSS5oCiAgICAgc3BpL21hYy9Mb29rdXBTUEkuaAogICAgIHNwaS9tYWMv
TWVkaWFSZW1vdGVTUEkuaAotICAgIHNwaS9tYWMvTWV0YWRhdGFTUEkuaAogICAgIHNwaS9tYWMv
TlNBY2Nlc3NpYmlsaXR5U1BJLmgKICAgICBzcGkvbWFjL05TQXBwZWFyYW5jZVNQSS5oCiAgICAg
c3BpL21hYy9OU0FwcGxpY2F0aW9uU1BJLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvc3BpL21hYy9NZXRhZGF0YVNQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkv
bWFjL01ldGFkYXRhU1BJLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgxNTU0N2M2
Yjg1MTBlMzA2MThlMjI4MmFkNWI3ODQwMTZjYTM3MjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvbWFjL01l
dGFkYXRhU1BJLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I3ByYWdtYSBvbmNlCi0KLSNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotCi0jaW5jbHVkZSA8
Q29yZVNlcnZpY2VzL0NvcmVTZXJ2aWNlc1ByaXYuaD4KLQotI2VuZGlmCi0KLVdURl9FWFRFUk5f
Q19CRUdJTgotCi1Cb29sZWFuIE1ESXRlbVNldEF0dHJpYnV0ZShNREl0ZW1SZWYsIENGU3RyaW5n
UmVmIG5hbWUsIENGVHlwZVJlZiBhdHRyKTsKLQotV1RGX0VYVEVSTl9DX0VORApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybU1hYy5jbWFrZQppbmRleCA4NjZlYTZhNTRiOWE0MmY4NzhkNGUxOWI2NTBhMmMzYzNiYTIw
OWE5Li40ZDcyZjlkZWVmODBlYjZlNDQ1Njc5NzNkNWM2ZGNmZjY5MDU1Yjg2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybU1hYy5jbWFrZQpAQCAtMTg5LDcgKzE4OSw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVf
U09VUkNFUwogICAgIHBsYXRmb3JtL2F1ZGlvL21hYy9DQVJpbmdCdWZmZXIuY3BwCiAgICAgcGxh
dGZvcm0vYXVkaW8vbWFjL0ZGVEZyYW1lTWFjLmNwcAogCi0gICAgcGxhdGZvcm0vY2YvRmlsZVN5
c3RlbUNGLmNwcAogICAgIHBsYXRmb3JtL2NmL0tleWVkRGVjb2RlckNGLmNwcAogICAgIHBsYXRm
b3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcAogICAgIHBsYXRmb3JtL2NmL01haW5UaHJlYWRTaGFy
ZWRUaW1lckNGLmNwcApAQCAtMjAwLDcgKzE5OSw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09V
UkNFUwogICAgIHBsYXRmb3JtL2NvY29hL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNvY29h
Lm1tCiAgICAgcGxhdGZvcm0vY29jb2EvQ29yZVZpZGVvU29mdExpbmsuY3BwCiAgICAgcGxhdGZv
cm0vY29jb2EvRmlsZU1vbml0b3JDb2NvYS5tbQotICAgIHBsYXRmb3JtL2NvY29hL0ZpbGVTeXN0
ZW1Db2NvYS5tbQogICAgIHBsYXRmb3JtL2NvY29hL0tleUV2ZW50Q29jb2EubW0KICAgICBwbGF0
Zm9ybS9jb2NvYS9Mb2NhbGl6ZWRTdHJpbmdzQ29jb2EubW0KICAgICBwbGF0Zm9ybS9jb2NvYS9N
SU1FVHlwZVJlZ2lzdHJ5Q29jb2EubW0KQEAgLTM0Nyw3ICszNDUsNiBAQCBsaXN0KEFQUEVORCBX
ZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0KICAgICBwbGF0
Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tCiAgICAgcGxhdGZvcm0vbWFjL0V2ZW50TG9vcE1hYy5t
bQotICAgIHBsYXRmb3JtL21hYy9GaWxlU3lzdGVtTWFjLm1tCiAgICAgcGxhdGZvcm0vbWFjL0tl
eUV2ZW50TWFjLm1tCiAgICAgcGxhdGZvcm0vbWFjL0xvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4
dC5tbQogICAgIHBsYXRmb3JtL21hYy9Mb2dnaW5nTWFjLm1tCkBAIC00MTgsOCArNDE1LDYgQEAg
bGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vbmV0d29yay9tYWMvV2Vi
Q29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCiAgICAgcGxhdGZv
cm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tCiAKLSAgICBwbGF0Zm9ybS9wb3Np
eC9GaWxlU3lzdGVtUE9TSVguY3BwCi0KICAgICBwbGF0Zm9ybS90ZXh0L2NmL0h5cGhlbmF0aW9u
Q0YuY3BwCiAKICAgICBwbGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMubW0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtUGxheVN0YXRpb24uY21ha2UgYi9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtlCmluZGV4IDkwMzc2MDM5Yjk2OTZlMTNmOWRlYmM5
YzQ3MzBhNzkwMzk5Nzk1NTEuLjZkNDQ1MzVkOTU5ODRiZTU4ODMzZTg4Zjk3MWU2YTcyZjJkYmFi
MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtUGxheVN0YXRpb24uY21ha2UK
KysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1QbGF5U3RhdGlvbi5jbWFrZQpAQCAtNjMsNyAr
NjMsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9wbGF5c3Rh
dGlvbi9TY3JvbGxiYXJUaGVtZVBsYXlTdGF0aW9uLmNwcAogICAgIHBsYXRmb3JtL3BsYXlzdGF0
aW9uL1VzZXJBZ2VudFBsYXlTdGF0aW9uLmNwcAogCi0gICAgcGxhdGZvcm0vcG9zaXgvRmlsZVN5
c3RlbVBPU0lYLmNwcAogICAgIHBsYXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcAog
CiAgICAgcGxhdGZvcm0vdGV4dC9IeXBoZW5hdGlvbi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW4uY21h
a2UKaW5kZXggNGZhYjMwODI2MGUwOWM4MDU0MTljODRjN2NhODM0ZDgxZmI5NWM2NS4uZmNiNTdh
NDVhNWY0MWVmM2JmNjcwMzg0ZmRhMjNmM2NkYTg2MTRkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvUGxhdGZvcm1XaW4uY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW4u
Y21ha2UKQEAgLTg0LDcgKzg0LDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAg
cGxhdGZvcm0vd2luL0RyYWdEYXRhV2luLmNwcAogICAgIHBsYXRmb3JtL3dpbi9EcmFnSW1hZ2VX
aW4uY3BwCiAgICAgcGxhdGZvcm0vd2luL0V2ZW50TG9vcFdpbi5jcHAKLSAgICBwbGF0Zm9ybS93
aW4vRmlsZVN5c3RlbVdpbi5jcHAKICAgICBwbGF0Zm9ybS93aW4vR0RJT2JqZWN0Q291bnRlci5j
cHAKICAgICBwbGF0Zm9ybS93aW4vR0RJVXRpbGl0aWVzLmNwcAogICAgIHBsYXRmb3JtL3dpbi9L
ZXlFdmVudFdpbi5jcHAKQEAgLTkzLDcgKzkyLDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VS
Q0VTCiAgICAgcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4uY3BwCiAgICAgcGxhdGZv
cm0vd2luL01haW5UaHJlYWRTaGFyZWRUaW1lcldpbi5jcHAKICAgICBwbGF0Zm9ybS93aW4vUGFz
dGVib2FyZFdpbi5jcHAKLSAgICBwbGF0Zm9ybS93aW4vUGF0aFdhbGtlci5jcHAKICAgICBwbGF0
Zm9ybS93aW4vUGxhdGZvcm1Nb3VzZUV2ZW50V2luLmNwcAogICAgIHBsYXRmb3JtL3dpbi9QbGF0
Zm9ybVNjcmVlbldpbi5jcHAKICAgICBwbGF0Zm9ybS93aW4vUG9wdXBNZW51V2luLmNwcApAQCAt
MjQ4LDcgKzI0Niw2IEBAIGlmIChVU0VfQ0YpCiAgICAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VS
Q0VTCiAgICAgICAgIGxvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCiAKLSAg
ICAgICAgcGxhdGZvcm0vY2YvRmlsZVN5c3RlbUNGLmNwcAogICAgICAgICBwbGF0Zm9ybS9jZi9L
ZXllZERlY29kZXJDRi5jcHAKICAgICAgICAgcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3Bw
CiAgICAgICAgIHBsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRl
eCBkMmFkYjBlNTQwOWYxODk5OWM0ODc2YzNkZDkyMGJmOWQzODA1ZTVmLi40NGE4ZjNlYjM5YWQ3
ZTA0YTRkMGU5MzQ4YjNjMjgzYWFjYTI3NTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTYwMyw3ICsx
NjAzLDYgQEAgcGxhdGZvcm0vRmlsZUNob29zZXIuY3BwCiBwbGF0Zm9ybS9GaWxlSGFuZGxlLmNw
cAogcGxhdGZvcm0vRmlsZU1vbml0b3IuY3BwCiBwbGF0Zm9ybS9GaWxlU3RyZWFtLmNwcAotcGxh
dGZvcm0vRmlsZVN5c3RlbS5jcHAKIHBsYXRmb3JtL0dlbmVyaWNUYXNrUXVldWUuY3BwCiBwbGF0
Zm9ybS9MYXlvdXRVbml0LmNwcAogcGxhdGZvcm0vTGVuZ3RoLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2Nv
YS50eHQKaW5kZXggMGUxNWI5MDRlYWQyZDlkODU5M2U1MGZhNDIwMDgzNWE0MzBiOTU2OC4uYzI0
MTg1ZjE0ZWU3YWY2NjA4ZDJhNDNjZTA2NjQ5Y2ExZjA1NTJkYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29j
b2EudHh0CkBAIC0xODEsNyArMTgxLDYgQEAgcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lv
bk1hYy5jcHAKIHBsYXRmb3JtL2F1ZGlvL21hYy9DQVJpbmdCdWZmZXIuY3BwCiBwbGF0Zm9ybS9h
dWRpby9tYWMvRkZURnJhbWVNYWMuY3BwCiAKLXBsYXRmb3JtL2NmL0ZpbGVTeXN0ZW1DRi5jcHAK
IHBsYXRmb3JtL2NmL0tleWVkRGVjb2RlckNGLmNwcAogcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVy
Q0YuY3BwCiBwbGF0Zm9ybS9jZi9NYWluVGhyZWFkU2hhcmVkVGltZXJDRi5jcHAKQEAgLTE5Myw3
ICsxOTIsNiBAQCBwbGF0Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2Nv
YS5tbSBAbm8tdW5pZnkKIHBsYXRmb3JtL2NvY29hL0NvcmVWaWRlb1NvZnRMaW5rLmNwcAogcGxh
dGZvcm0vY29jb2EvRGF0YURldGVjdG9yc0NvcmVTb2Z0TGluay5tbQogcGxhdGZvcm0vY29jb2Ev
RmlsZU1vbml0b3JDb2NvYS5tbQotcGxhdGZvcm0vY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tCiBw
bGF0Zm9ybS9jb2NvYS9LZXlFdmVudENvY29hLm1tCiBwbGF0Zm9ybS9jb2NvYS9Mb2NhbGl6ZWRT
dHJpbmdzQ29jb2EubW0KIHBsYXRmb3JtL2NvY29hL01JTUVUeXBlUmVnaXN0cnlDb2NvYS5tbQpA
QCAtNDQ2LDcgKzQ0NCw2IEBAIHBsYXRmb3JtL21hYy9DdXJzb3JNYWMubW0KIHBsYXRmb3JtL21h
Yy9EcmFnRGF0YU1hYy5tbQogcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbQogcGxhdGZvcm0v
bWFjL0V2ZW50TG9vcE1hYy5tbQotcGxhdGZvcm0vbWFjL0ZpbGVTeXN0ZW1NYWMubW0KIHBsYXRm
b3JtL21hYy9LZXlFdmVudE1hYy5tbSBAbm8tdW5pZnkKIHBsYXRmb3JtL21hYy9QbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2VNYWMubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9tYWMvTG9jYWxDdXJyZW50
R3JhcGhpY3NDb250ZXh0Lm1tCkBAIC01NDEsOCArNTM4LDYgQEAgcGxhdGZvcm0vbmV0d29yay9t
YWMvVVRJVXRpbGl0aWVzLm1tCiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VI
YW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0KIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dl
YkNvcmVVUkxSZXNwb25zZS5tbQogCi1wbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3Bw
Ci0KIHBsYXRmb3JtL3RleHQvY2YvSHlwaGVuYXRpb25DRi5jcHAKIAogcGxhdGZvcm0vdGV4dC9p
b3MvTG9jYWxpemVkRGF0ZUNhY2hlLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZGFiNGRmNTA0ZTI2NDMzY2RlMGQxYzE0NGQ0
NmI1M2M1Y2E5ZTkyOC4uMTkyY2QyODEwMGFmZjFhYTI0ZDNjYzMxYmVmMzU4MzZjZTg2OTYxMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMTI0NSw3ICsxMjQ1LDYgQEAKIAkJNDY3MzAyMDIxQzRFRkU3ODAwQkNCMzU3IC8qIEln
bm9yZU9wZW5zRHVyaW5nVW5sb2FkQ291bnRJbmNyZW1lbnRlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY3MzAyMDExQzRFRkU2NjAwQkNCMzU3IC8q
IElnbm9yZU9wZW5zRHVyaW5nVW5sb2FkQ291bnRJbmNyZW1lbnRlci5oICovOyB9OwogCQk0Njgy
RDIwMDFGNzk3ODMwMDBDODYzREIgLyogU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODJEMUZGMUY3OTc4MjMw
MEM4NjNEQiAvKiBTdG9yZWRDcmVkZW50aWFsc1BvbGljeS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2ODM0NEUwMUVEREZBQUEwMEI3Nzk1QiAv
KiBET01SZWN0TGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDY4MzQ0REUxRURERkE1RjAwQjc3OTVCIC8qIERPTVJlY3RMaXN0LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNDY4OUYxQUYxMjY3QkFF
MTAwRThEMzgwIC8qIEZpbGVNZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDY4OUYxQUUxMjY3QkFFMTAwRThEMzgwIC8qIEZpbGVNZXRhZGF0
YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2
QjYzRjZDMUM2RThEMTkwMDJFOTE0QiAvKiBKU0V2ZW50VGFyZ2V0Q3VzdG9tLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkI2M0Y2QjFDNkU4Q0RGMDAy
RTkxNEIgLyogSlNFdmVudFRhcmdldEN1c3RvbS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2Qjk1MTk1MjA3RDYzMzQwMEE3RDJERCAvKiBBYnN0
cmFjdERPTVdpbmRvdy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDZCOTUxOEEyMDdENjMyODAwQTdEMkREIC8qIEFic3RyYWN0RE9NV2luZG93LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZCOTUxOTYy
MDdENjMzQTAwQTdEMkREIC8qIEFic3RyYWN0RnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Qjk1MThGMjA3RDYzMkIwMEE3RDJERCAvKiBBYnN0
cmFjdEZyYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKQEAgLTE0MzcsNyArMTQzNiw2IEBACiAJCTUxNDNCMjYzMURERDE1MjAwMDE0RkFDNiAvKiBM
aW5rSWNvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTE0M0IyNjIxREREMTQ5MDAwMTRGQUM2IC8qIExpbmtJY29uLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE0NUIxMEExQkM0OEUyRTAwRTg2MjE5
IC8qIElEQlJlc291cmNlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTE0NUIxMDgxQkM0ODkwQjAwRTg2MjE5IC8qIElEQlJlc291cmNl
SWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTUxNDg0NTNGMUJCOUQwN0UwMDZBNzJFRCAvKiBJREJFcnJvci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0ODQ1M0QxQkI5RDA3NjAwNkE3
MkVEIC8qIElEQkVycm9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKLQkJNTE0QjNGNzMwQzcyMjA0NzAwMDUzMERGIC8qIEZpbGVTeXN0ZW0uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEIzRjcyMEM3MjIw
NDcwMDA1MzBERiAvKiBGaWxlU3lzdGVtLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE0Qzc2NEMwQ0U5MjM0RTAwN0VGM0NEIC8qIEF1dGhlbnRp
Y2F0aW9uTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTRDNzY0MjBDRTkyMzRFMDA3RUYzQ0QgLyogQXV0aGVudGljYXRpb25NYWMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTRDNzY0RTBDRTky
MzRFMDA3RUYzQ0QgLyogRm9ybURhdGFTdHJlYW1NYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEM3NjQ0MENFOTIzNEUwMDdFRjNDRCAvKiBGb3Jt
RGF0YVN0cmVhbU1hYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTUxNEM3NjZFMENFOTIzQTEwMDdFRjNDRCAvKiBDcmVkZW50aWFsLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTRDNzY1OTBDRTkyM0Ex
MDA3RUYzQ0QgLyogQ3JlZGVudGlhbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC03NzA1LDcgKzc3MDMsNiBAQAogCQk0NjgzNDREQzFFRERGQTVG
MDBCNzc5NUIgLyogRE9NUmVjdExpc3QuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERPTVJlY3RMaXN0LmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4MzQ0REQxRURERkE1RjAwQjc3OTVCIC8qIERPTVJl
Y3RMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTVJlY3RMaXN0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4MzQ0REUxRURERkE1RjAwQjc3OTVCIC8qIERPTVJlY3RM
aXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVJlY3RMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTQ2ODlGMUFFMTI2N0JBRTEwMEU4RDM4MCAvKiBGaWxlTWV0YWRhdGEuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmlsZU1ldGFkYXRhLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQ2QjYzRjZCMUM2RThDREYwMDJFOTE0QiAvKiBKU0V2ZW50VGFy
Z2V0Q3VzdG9tLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRXZlbnRUYXJn
ZXRDdXN0b20uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZCOTUxOEEyMDdENjMy
ODAwQTdEMkREIC8qIEFic3RyYWN0RE9NV2luZG93LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEFic3RyYWN0RE9NV2luZG93Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ2Qjk1MThDMjA3RDYzMjkwMEE3RDJERCAvKiBSZW1vdGVGcmFtZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVGcmFtZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC04MTA4LDggKzgxMDUsNiBAQAogCQk1MTQ1QjEwODFCQzQ4OTBC
MDBFODYyMTkgLyogSURCUmVzb3VyY2VJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IElEQlJlc291cmNlSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MTQ4NDUzQzFCQjlEMDc2MDA2QTcyRUQgLyogSURCRXJyb3IuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSURCRXJyb3IuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MTQ4NDUzRDFCQjlEMDc2MDA2QTcyRUQgLyogSURCRXJyb3Iu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSURCRXJyb3IuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTE0QjNGNzIwQzcyMjA0NzAwMDUzMERGIC8qIEZpbGVTeXN0
ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmlsZVN5c3RlbS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MTRCM0Y3NTBDNzIyMDU1MDAwNTMwREYgLyogRmls
ZVN5c3RlbUNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
RmlsZVN5c3RlbUNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTRDNzYz
NTBDRTkyMjVFMDA3RUYzQ0QgLyogSlNTUUxFcnJvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU1NRTEVycm9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTE0Qzc2MzYwQ0U5MjI1RTAwN0VGM0NEIC8qIEpTU1FMVHJhbnNhY3Rpb24uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTUUxUcmFuc2FjdGlvbi5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNEM3NjQyMENFOTIzNEUwMDdFRjNDRCAv
KiBBdXRoZW50aWNhdGlvbk1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBB
dXRoZW50aWNhdGlvbk1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODE0OCw4
ICs4MTQzLDYgQEAKIAkJNTE1RTM3RjQxRkFBOTM4ODAwRDdGMjJBIC8qIFNlcnZpY2VXb3JrZXJU
eXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2aWNlV29ya2VyVHlw
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE1Rjc5NTExQ0ZDQTNDNzAwQ0NF
RDkzIC8qIFdlYkNvcmVDcm9zc1RocmVhZENvcGllci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXZWJDb3JlQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MTVGNzk1MjFDRkNBM0M3MDBDQ0VEOTMgLyogV2ViQ29yZUNy
b3NzVGhyZWFkQ29waWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNv
cmVDcm9zc1RocmVhZENvcGllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MTYw
MzAwQTBDQzQyNTEyMDBDOEFDMjUgLyogRmlsZVN5c3RlbVBPU0lYLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZpbGVTeXN0ZW1QT1NJWC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTUxNjAzMDZCMENDNDM2MjMwMEM4QUMyNSAvKiBGaWxlU3lzdGVt
Q0YuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmlsZVN5c3RlbUNG
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE2MDcxMkIxQkQ4MzA1MzAwREJD
NEYyIC8qIFRyYW5zYWN0aW9uT3BlcmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFRyYW5zYWN0aW9uT3BlcmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUxNjA3MTJDMUJEODMwNzIwMERCQzRGMiAvKiBJREJPYmplY3RTdG9yZUluZm8uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSURCT2JqZWN0U3RvcmVJbmZvLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE2MDcxMkQxQkQ4MzA3MjAwREJDNEYy
IC8qIElEQk9iamVjdFN0b3JlSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBJREJPYmplY3RTdG9yZUluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEx
MjUxLDcgKzExMjQ0LDYgQEAKIAkJQTFDMkM1NzUxRkEyODUxNjAwQkE0NkZBIC8qIFBheW1lbnRT
ZXNzaW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBheW1lbnRTZXNzaW9uLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFDN0ZBQTExMzNBNUQzNTAwRDY3MzJEIC8qIEpTWFBh
dGhSZXN1bHRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNYUGF0aFJlc3VsdEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEx
Q0JFRjYzMUY5RjExMjkwMDI4REU3QyAvKiBNb2NrUGF5bWVudE1ldGhvZC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBNb2NrUGF5bWVudE1ldGhvZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlB
MUNDMTE2MjFFNDkzRDAxMDBFRkE2OUMgLyogRmlsZVN5c3RlbU1hYy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZpbGVTeXN0ZW1NYWMubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUExQ0M1NjRDMUY0NjE0NTAwMEE0NTU1QiAvKiBKU1BheW1lbnRN
ZXRob2REYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUGF5bWVudE1l
dGhvZERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFDQzU2NEQxRjQ2MTQ1
MTAwQTQ1NTVCIC8qIEpTUGF5bWVudE1ldGhvZERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNQYXltZW50TWV0aG9kRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUExQ0M1NjRFMUY0NjE0NTIwMEE0NTU1QiAvKiBKU1BheW1lbnRDb21w
bGV0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1BheW1lbnRDb21wbGV0
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTM0MzgsNyArMTM0MzAsNiBAQAog
CQlDNTU5MkY3NzFBOTJBQTI4MDAxRjg4NjIgLyogQ2hhcmFjdGVyUHJvcGVydGllcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDaGFyYWN0ZXJQcm9wZXJ0aWVzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1NUM3QkEwMTcxOEFGQkEwMDEzMjdFNCAvKiBSZW5k
ZXJUaGVtZUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJl
bmRlclRoZW1lSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNTcyRUUxRDEy
MDFDOUJDMDA3RDhGODIgLyogSlNJREJJbmRleC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU0lEQkluZGV4Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUM1N0ZF
REUwMTIxMkVFOUMwMDk3QkU2NSAvKiBGaWxlU3lzdGVtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEZpbGVTeXN0ZW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDNTg1QTY2MDExRDRGQUM1MDA0QzNFNEIgLyogSURCQmluZGluZ1V0aWxpdGllcy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJREJCaW5kaW5nVXRpbGl0
aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzU4NUE2NjExMUQ0RkFDNTAw
NEMzRTRCIC8qIElEQkJpbmRpbmdVdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSURCQmluZGluZ1V0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDNTg1QTY2QjExRDRGQjA3MDA0QzNFNEIgLyogSlNJREJEYXRhYmFzZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0lEQkRhdGFiYXNlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0xNjc3Niw3ICsxNjc2Nyw2IEBACiAJCTFBRTQyRjY3MEFBNEI4Q0Iw
MEM4NjEyRCAvKiBjZiAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
Ci0JCQkJNTE2MDMwNkIwQ0M0MzYyMzAwQzhBQzI1IC8qIEZpbGVTeXN0ZW1DRi5jcHAgKi8sCiAJ
CQkJNTE3QTYzQkYxQjc0MzE3RTAwRTdEQ0RDIC8qIEtleWVkRGVjb2RlckNGLmNwcCAqLywKIAkJ
CQk1MTdBNjNDMDFCNzQzMTdFMDBFN0RDREMgLyogS2V5ZWREZWNvZGVyQ0YuaCAqLywKIAkJCQk1
MTdBNjNDMTFCNzQzMTdFMDBFN0RDREMgLyogS2V5ZWRFbmNvZGVyQ0YuY3BwICovLApAQCAtMTg3
MzgsMTQgKzE4NzI4LDYgQEAKIAkJCXBhdGggPSBtYWM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOwogCQl9OwotCQk1MTYwMzAwOTBDQzQyNDU0MDBDOEFDMjUgLyogcG9zaXggKi8gPSB7Ci0J
CQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCTUxNjAzMDBBMENDNDI1MTIw
MEM4QUMyNSAvKiBGaWxlU3lzdGVtUE9TSVguY3BwICovLAotCQkJKTsKLQkJCXBhdGggPSBwb3Np
eDsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07CiAJCTUxNjBGNDkyMEIwQUE3MTUw
MEMxRDJBRiAvKiBtYWMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KApAQCAtMjAxMDYsNyArMjAwODgsNiBAQAogCQkJCUE3Q0ZCM0Q0MEI3RUQxMTgwMDcwQzMyRCAv
KiBEcmFnSW1hZ2VNYWMubW0gKi8sCiAJCQkJRTFCQTY2RjAxNzQyQkQ4NjAwQzIwMjUxIC8qIER5
bmFtaWNMaW5rZXJJbnRlcnBvc2luZy5oICovLAogCQkJCTFDQTE5RTAzMERDMjU1OTUwMDY1QTk5
NCAvKiBFdmVudExvb3BNYWMubW0gKi8sCi0JCQkJQTFDQzExNjIxRTQ5M0QwMTAwRUZBNjlDIC8q
IEZpbGVTeXN0ZW1NYWMubW0gKi8sCiAJCQkJOTM1QzQ3NkUwOUFDNEQ3MzAwQTZBQUI0IC8qIEtl
eUV2ZW50TWFjLm1tICovLAogCQkJCUY0NEE1RjU3MUZFRDM4MzAwMDdGNTk0NCAvKiBMZWdhY3lO
U1Bhc3RlYm9hcmRUeXBlcy5oICovLAogCQkJCTA2RTgxRUQ2MEFCNUQ1RTkwMEM4NzgzNyAvKiBM
b2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQuaCAqLywKQEAgLTIyNTU2LDcgKzIyNTM3LDYgQEAK
IAkJCQk3Qzc5NDFFMzFDNTZDMjkzMDBBNEM1OEUgLyogRGF0YURldGVjdG9yc0NvcmVTb2Z0TGlu
ay5oICovLAogCQkJCTdDNzk0MUUyMUM1NkMyOTMwMEE0QzU4RSAvKiBEYXRhRGV0ZWN0b3JzQ29y
ZVNvZnRMaW5rLm1tICovLAogCQkJCTdBMDlDRUYwMUYwMUQxRjcwMEU5M0JEQiAvKiBGaWxlTW9u
aXRvckNvY29hLm1tICovLAotCQkJCTUxNEIzRjc1MEM3MjIwNTUwMDA1MzBERiAvKiBGaWxlU3lz
dGVtQ29jb2EubW0gKi8sCiAJCQkJQTVDOTc0Q0YxMTQ4NUZGMTAwNjZGMkFCIC8qIEtleUV2ZW50
Q29jb2EuaCAqLywKIAkJCQlBNUM5NzREMDExNDg1RkYxMDA2NkYyQUIgLyogS2V5RXZlbnRDb2Nv
YS5tbSAqLywKIAkJCQkxQTQ4MzJCMjFBOTUzQkE2MDA4QjRERkUgLyogTG9jYWxpemVkU3RyaW5n
c0NvY29hLm1tICovLApAQCAtMjUzOTksNyArMjUzNzksNiBAQAogCQkJCTA3MjIxQjkyMTdDRjBB
RDQwMDg0OEU1MSAvKiBtZWRpYXN0cmVhbSAqLywKIAkJCQk1OUM3N0YxMDEwNTQ1OTFDMDA1MDYx
MDQgLyogbW9jayAqLywKIAkJCQk2NTZCODRENzBBRUExQ0U5MDBBMDk1QjQgLyogbmV0d29yayAq
LywKLQkJCQk1MTYwMzAwOTBDQzQyNDU0MDBDOEFDMjUgLyogcG9zaXggKi8sCiAJCQkJMUEyRTZF
NTYwQ0M1NTFFMDAwNEEyMDYyIC8qIHNxbCAqLywKIAkJCQlCMkMzRDlFQzBEMDA2QzFEMDBFRjZG
MjYgLyogdGV4dCAqLywKIAkJCQlFMTg4MjM1RjIwMzFGNTBGMDBCNDJERjMgLyogdnIgKi8sCkBA
IC0yNTQ0NCwxNCArMjU0MjMsMTEgQEAKIAkJCQkwNjZDNzcyQTBBQjYwM0I3MDAyMzhDQzQgLyog
RmlsZUNob29zZXIuaCAqLywKIAkJCQk1MzUxRDRBRTFERjkxNkFDMDA4MDEwQ0QgLyogRmlsZUhh
bmRsZS5jcHAgKi8sCiAJCQkJNTM1MUQ0QUYxREY5MTZBQzAwODAxMENEIC8qIEZpbGVIYW5kbGUu
aCAqLywKLQkJCQk0Njg5RjFBRTEyNjdCQUUxMDBFOEQzODAgLyogRmlsZU1ldGFkYXRhLmggKi8s
CiAJCQkJN0EwOUNFRUIxRjAxQ0M5MzAwRTkzQkRCIC8qIEZpbGVNb25pdG9yLmNwcCAqLywKIAkJ
CQk3QTA5Q0VFQzFGMDFDQzkzMDBFOTNCREIgLyogRmlsZU1vbml0b3IuaCAqLywKIAkJCQkyRUYx
QkZFODEyMUM5RjQyMDBDMjc2MjcgLyogRmlsZVN0cmVhbS5jcHAgKi8sCiAJCQkJMkVGMUJGRTkx
MjFDOUY0MjAwQzI3NjI3IC8qIEZpbGVTdHJlYW0uaCAqLywKIAkJCQkyRUYxQkZGODEyMUNCMENF
MDBDMjc2MjcgLyogRmlsZVN0cmVhbUNsaWVudC5oICovLAotCQkJCUM1N0ZFREUwMTIxMkVFOUMw
MDk3QkU2NSAvKiBGaWxlU3lzdGVtLmNwcCAqLywKLQkJCQk1MTRCM0Y3MjBDNzIyMDQ3MDAwNTMw
REYgLyogRmlsZVN5c3RlbS5oICovLAogCQkJCUJDMDczQkE5MEMzOTlCMUYwMDBGNTk3OSAvKiBG
bG9hdENvbnZlcnNpb24uaCAqLywKIAkJCQlDRDRCRTUyOTFDRTEzNDI1MDA5RDg3REEgLyogR2Vu
ZXJpY1Rhc2tRdWV1ZS5jcHAgKi8sCiAJCQkJQ0Q2MkZCOTQxQUYwMThFNzAwMTJFRDdEIC8qIEdl
bmVyaWNUYXNrUXVldWUuaCAqLywKQEAgLTI5MTQwLDcgKzI5MTE2LDYgQEAKIAkJCQlGNTVCM0RC
RTEyNTFGMTJEMDAzRUYyNjkgLyogRmlsZUlucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTc2RDZDODYxMjJCOEEzRDAwMUZEMUY3IC8qIEZpbGVMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk4MzVENTRDNTFGNERFNTM4MDBFNjA2NzEgLyogRmlsZUxpc3RDcmVhdG9yLmggaW4gSGVhZGVy
cyAqLywKLQkJCQk0Njg5RjFBRjEyNjdCQUUxMDBFOEQzODAgLyogRmlsZU1ldGFkYXRhLmggaW4g
SGVhZGVycyAqLywKIAkJCQk3QTA5Q0VGMTFGMDIwNjlCMDBFOTNCREIgLyogRmlsZU1vbml0b3Iu
aCBpbiBIZWFkZXJzICovLAogCQkJCTk3NkQ2Qzg5MTIyQjhBM0QwMDFGRDFGNyAvKiBGaWxlUmVh
ZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRTc1ODQxRTEyNzc5QURBMDA2MjYyOEIgLyogRmls
ZVJlYWRlckxvYWRlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTE0OCw3ICsyOTEyMyw2IEBACiAJ
CQkJMkVERjM2OUQxMjJDOTRCNDAwMkY3RDRFIC8qIEZpbGVSZWFkZXJTeW5jLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkyRUYxQkZFQjEyMUM5RjQyMDBDMjc2MjcgLyogRmlsZVN0cmVhbS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMkVGMUJGRjkxMjFDQjBDRTAwQzI3NjI3IC8qIEZpbGVTdHJlYW1DbGll
bnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxNEIzRjczMEM3MjIwNDcwMDA1MzBERiAvKiBGaWxl
U3lzdGVtLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0ZCMzM3MTFGNTA4QTU0MDA5ODZFNTQgLyog
RmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzAzMzUwMjFG
NTQ5MDU3MDA0REY3MDcgLyogRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODMwMzM1MDMxRjU0OTA1QTAwNERGNzA3IC8qIEZpbGVTeXN0ZW1FbnRyaWVzQ2Fs
bGJhY2suaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvR0NDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0dDQ29u
dHJvbGxlci5jcHAKaW5kZXggZDI1MWQyZWNlMWYxOGIyNDBhODhiYmZiM2EyMmMyYzI0ZjgwZjZj
ZC4uOGE4M2M0YjZmNmY1OTYwN2RmYTc3MDQ4NDI5ZDAyYjFlNDI5NzMzYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvR0NDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuY3BwCkBAIC0yNyw3ICsyNyw2IEBACiAj
aW5jbHVkZSAiR0NDb250cm9sbGVyLmgiCiAKICNpbmNsdWRlICJDb21tb25WTS5oIgotI2luY2x1
ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJKU0hUTUxEb2N1bWVudC5oIgogI2luY2x1ZGUg
IkxvY2F0aW9uLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcC5oPgpAQCAtMzYsNiAr
MzUsNyBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1ZNLmg+CiAjaW5jbHVkZSA8cGFsL0xv
Z2dpbmcuaD4KICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorI2luY2x1ZGUgPHd0Zi9GaWxl
U3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRy
YW5zZmVySXRlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbS5jcHAK
aW5kZXggYTNlY2M1YTVjOWUwZjMwZDc2MDMyODE3ZjBkNDYzOTYzM2ZmMWE4Yi4uNTlmOTc4NmVk
OGNmYTY0OWUwN2RkYjdkODg0YWM5MjQzMjk3NjM5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRh
VHJhbnNmZXJJdGVtLmNwcApAQCAtMzYsMTEgKzM2LDExIEBACiAjaW5jbHVkZSAiRGF0YVRyYW5z
ZmVySXRlbUxpc3QuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZpbGUuaCIK
LSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbURpcmVjdG9yeUVu
dHJ5LmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbUZpbGVFbnRyeS5oIgogI2luY2x1ZGUgIlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJTdHJpbmdDYWxsYmFjay5oIgorI2luY2x1
ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQpp
bmRleCA5NzIxN2YxZDc1ZDBlNTQ2ZmNmODQzMWUyZDRhZjhiYTU0M2FiNjFjLi4yNTRhMzY4ZmE3
NzRhZDYzNzJkNDZmMTUzYzVhOTVjNGVlMjQyOGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQpAQCAtMzcsNyArMzcs
NiBAQAogI2ltcG9ydCAiRWRpdG9yLmgiCiAjaW1wb3J0ICJFZGl0b3JDbGllbnQuaCIKICNpbXBv
cnQgIkZpbGUuaCIKLSNpbXBvcnQgIkZpbGVTeXN0ZW0uaCIKICNpbXBvcnQgIkZyYW1lLmgiCiAj
aW1wb3J0ICJGcmFtZUxvYWRlci5oIgogI2ltcG9ydCAiRnJhbWVMb2FkZXJDbGllbnQuaCIKQEAg
LTY1LDYgKzY0LDcgQEAKICNpbXBvcnQgIldlYk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5oIgog
I2ltcG9ydCAibWFya3VwLmgiCiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL05TQXR0cmlidXRlZFN0
cmluZ1NQSS5oPgorI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0
TGlua2luZy5oPgogI2ltcG9ydCA8d3RmL1VSTFBhcnNlci5oPgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxl
LmNwcAppbmRleCBiNzNmY2RlNzlmNDYwNzkyYzkyNmMwNzVmYmFhZjY2NDhhNzI0MTMxLi5hZGIz
MGM5MzNjYTJmYjI1Y2VmNWQwY2E0MTM2NTYwYmJhNmQ4MTE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmls
ZS5jcHAKQEAgLTI3LDExICsyNywxMSBAQAogI2luY2x1ZGUgIkZpbGUuaCIKIAogI2luY2x1ZGUg
IkJsb2JVUkwuaCIKLSNpbmNsdWRlICJGaWxlTWV0YWRhdGEuaCIKLSNpbmNsdWRlICJGaWxlU3lz
dGVtLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlRocmVhZGFi
bGVCbG9iUmVnaXN0cnkuaCIKICNpbmNsdWRlIDx3dGYvRGF0ZU1hdGguaD4KKyNpbmNsdWRlIDx3
dGYvRmlsZU1ldGFkYXRhLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0ZpbGVDb2NvYS5tbQppbmRleCAyMGJlNmY3YWVkZWNhNzUzNDgzNTYzYjFiZTRmOTA2
MmZhNDM4YTAzLi42NjRmOWE1MzYxM2RmMjZjYTE3YzcwN2MyMWI1MGM2NDY0NTIwNGU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0ZpbGVDb2NvYS5tbQpAQCAtMjgsNyArMjgsNyBAQAogCiAjaWYgRU5B
QkxFKEZJTEVfUkVQTEFDRU1FTlQpCiAKLSNpbXBvcnQgIkZpbGVTeXN0ZW0uaCIKKyNpbXBvcnQg
PHd0Zi9GaWxlU3lzdGVtLmg+CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCA8
TW9iaWxlQ29yZVNlcnZpY2VzL01vYmlsZUNvcmVTZXJ2aWNlcy5oPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
RmlsZUlucHV0VHlwZS5jcHAKaW5kZXggMDNhZjNhOTYzNDk0ZmFmMDAxMmUyMWE5MzhmNTE5MTc4
MDMwODUwOC4uOTk4ZjllZmE5NGUyYTc1MjE2YmI0ZjM5YTc5Njg2NDljMTMxN2RkOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVk
ZSAiRmlsZS5oIgogI2luY2x1ZGUgIkZpbGVMaXN0LmgiCiAjaW5jbHVkZSAiRmlsZUxpc3RDcmVh
dG9yLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkZvcm1Db250cm9sbGVy
LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCkBA
IC00Myw2ICs0Miw3IEBACiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTaGFkb3dS
b290LmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKKyNpbmNsdWRlIDx3dGYv
RmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAjaW5jbHVk
ZSA8d3RmL1R5cGVDYXN0cy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUxpc3RDcmVhdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRmlsZUxpc3RDcmVhdG9yLmNwcAppbmRleCA3NmY1NjU5NzBhZDFk
ZDhkODEwNmMyNWE1NzllNDU5MWJhYmQ0OWI4Li4xNTU2ZmMyOTljYjIzNzNiMGM1OTg5NTIwYTcy
YzMxMTZjZTM5ZWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVMaXN0Q3Jl
YXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlTGlzdENyZWF0b3IuY3BwCkBA
IC0yOCw5ICsyOCw5IEBACiAKICNpbmNsdWRlICJGaWxlQ2hvb3Nlci5oIgogI2luY2x1ZGUgIkZp
bGVMaXN0LmgiCi0jaW5jbHVkZSAiRmlsZU1ldGFkYXRhLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3Rl
bS5oIgogI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZENvcGllci5oPgorI2luY2x1ZGUgPHd0Zi9G
aWxlTWV0YWRhdGEuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCmluZGV4IDc1NWYxYTI5YWQ3YzU3Y2NjM2JlYTVlZmEy
NTViNjU2YmJkY2MzMDkuLjhhMzNlODg3MGNjMzZiYzZkZTJmY2E4ZDFkNThjNGNjYTZiOGYzZWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVIb3N0LmNwcApAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgIkRvY3VtZW50TG9h
ZGVyLmgiCiAjaW5jbHVkZSAiRE9NQXBwbGljYXRpb25DYWNoZS5oIgogI2luY2x1ZGUgIkV2ZW50
TmFtZXMuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNp
bmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCkBA
IC00NCw2ICs0Myw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAi
U2V0dGluZ3MuaCIKICNpbmNsdWRlICJTdWJyZXNvdXJjZUxvYWRlci5oIgorI2luY2x1ZGUgPHd0
Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL1VVSUQuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKaW5kZXggZTgxNDgzYzM2MjNjZDAzNDI0NDQ4NGNkMGY1
ZmRjOTI0OTU1YWUzMi4uODJhZGZmMzAzMzVhMmUyYmI5Y2FhN2I0ZjY2ODg0ZDA5MGU3OTU2MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBAIC0zMCwxMiArMzAsMTIgQEAKICNpbmNsdWRlICJBcHBs
aWNhdGlvbkNhY2hlR3JvdXAuaCIKICNpbmNsdWRlICJBcHBsaWNhdGlvbkNhY2hlSG9zdC5oIgog
I2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5oIgotI2luY2x1ZGUgIkZpbGVTeXN0
ZW0uaCIKICNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZVRyYWNrZXIuaCIKICNpbmNsdWRlICJTUUxp
dGVTdGF0ZW1lbnQuaCIKICNpbmNsdWRlICJTUUxpdGVUcmFuc2FjdGlvbi5oIgogI2luY2x1ZGUg
IlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5EYXRhLmgiCisjaW5j
bHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAj
aW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9VVUlELmg+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNw
cAppbmRleCBkYjE3N2U4ZGFlOGM2MGU2ZTcxODIyOWZiM2MwM2QzNmRmZmQ1NDUyLi4yNmEyNTgx
OWMxYTc3NDFkMTJjZDk2NDYyOWFkMTU5Nzk5ODZkMGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAg
LTUxLDcgKzUxLDYgQEAKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMu
aCIKICNpbmNsdWRlICJFeHRlbnNpb25TdHlsZVNoZWV0cy5oIgotI2luY2x1ZGUgIkZpbGVTeXN0
ZW0uaCIKICNpbmNsdWRlICJGb2N1c0NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRl
ci5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCkBAIC0xMjIsNiArMTIxLDcgQEAK
ICNpbmNsdWRlICJXZWJHTFN0YXRlVHJhY2tlci5oIgogI2luY2x1ZGUgIldoZWVsRXZlbnREZWx0
YUZpbHRlci5oIgogI2luY2x1ZGUgIldpZGdldC5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVt
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgogI2luY2x1ZGUgPHd0
Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9CYXNlNjQuaD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKaW5kZXggYjU4ZmFhYTE2N2E5NjcyNmFhMjExZmUx
ZjAyNzRiYzY2ZTk2MTY1Yi4uM2FkOTIxY2M1NGRlMWZlZmUzZDE1NzFmMjJlMjUzMjEyYThkZTIw
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKQEAgLTMwLDE1ICszMCwx
NSBAQAogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAKICNpbmNsdWRlICJCbG9iVVJMLmgi
Ci0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgotI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRl
ICJTY2hlbWVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVk
ZSAiVGV4dEVuY29kaW5nLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oIgor
I2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4K
ICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0
cmFzLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1
cml0eU9yaWdpbkRhdGEuY3BwCmluZGV4IDA1ZjhiMTlkYWU1ODc5ZDBjZGZkYTdjNzY0OWVjYTJi
NDRjMzk4YTYuLjQzMGNiOGIwYjNhYzM2Y2NhOTYxMWUwYTFmMDllMzVhZTEwYjBkOWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAKQEAgLTI3LDkgKzI3LDkg
QEAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbkRhdGEuaCIKIAogI2luY2x1ZGUgIkRvY3VtZW50
LmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVk
ZSAiU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVy
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlSGFuZGxlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9GaWxlSGFuZGxlLmgKaW5kZXggZDExODMwODY5NjNkMjEyMzdiOTBiMWE4
MjU4NWI3NjViYmMxM2RmMi4uNTBkODI0Y2FlZTliYTEyNDA5ODQzNWVhNzIxNWQxNTE3ODdkYmNl
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUhhbmRsZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVIYW5kbGUuaApAQCAtMjgsOSArMjgsOCBAQAog
CiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKLQogI2luY2x1ZGUgPHd0
Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlTWV0
YWRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVNZXRhZGF0YS5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZDg4NDk1M2U3Njc1ZDkyYzA2MzhkZWNhZDg1N2NkNDFh
NTljNTYxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVNZXRhZGF0YS5oCisrKyAvZGV2L251bGwKQEAgLTEs
NTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0
OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Ci0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IEZpbGVNZXRhZGF0YSB7Ci0gICAgLy8gVGhlIGxh
c3QgbW9kaWZpY2F0aW9uIHRpbWUgb2YgdGhlIGZpbGUsIGluIHNlY29uZHMuCi0gICAgV2FsbFRp
bWUgbW9kaWZpY2F0aW9uVGltZTsKLQotICAgIC8vIFRoZSBsZW5ndGggb2YgdGhlIGZpbGUgaW4g
Ynl0ZXMuCi0gICAgbG9uZyBsb25nIGxlbmd0aDsKLQotICAgIGJvb2wgaXNIaWRkZW47Ci0KLSAg
ICBlbnVtIGNsYXNzIFR5cGUgeyBGaWxlLCBEaXJlY3RvcnksIFN5bWJvbGljTGluayB9OwotICAg
IFR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vRmlsZVN0cmVhbS5jcHAKaW5kZXggZWE5MTczNzRiNGM4YjRhNGVhMDQzYzI5YWJmNTQz
MTU5MjJhODllMi4uODkzYmIzMzk0NzZjZWZkYThkZjEwYmM5MjBjMGIzNTgyNTE5MTU3YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN0cmVhbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN0cmVhbS5jcHAKQEAgLTI5LDEwICsyOSw4IEBACiAg
Ki8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotCiAjaW5jbHVkZSAiRmlsZVN0cmVhbS5oIgogCi0j
aW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9GaWxlU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3RyZWFtLmgKaW5k
ZXggYWEwMTFlYTIzZTE4NTRjNGI5MDIwNTk2MjUzNzYxM2ExYWI2ZTEyYi4uYTJmYjhlNWZhYTI1
NGJjOGU1Y2NlOWUxYjRjNjYzMWI4ZDFhMDU0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vRmlsZVN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVT
dHJlYW0uaApAQCAtMjgsMTAgKzI4LDkgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRl
ZiBGaWxlU3RyZWFtX2gKLSNkZWZpbmUgRmlsZVN0cmVhbV9oCisjcHJhZ21hIG9uY2UKIAotI2lu
Y2x1ZGUgIkZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTY0LDUgKzYzLDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEZpbGVTdHJlYW1faApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9GaWxlU3lzdGVtLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWQ5
ZDM3YWFhMTMxNjI4M2RhN2VmMjI0NmIzY2E5NDEwYWQyNWQyMi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxl
U3lzdGVtLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDM2NyArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDA3LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29w
eXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
LSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgotCi0jaW5jbHVkZSAiRmls
ZU1ldGFkYXRhLmgiCi0jaW5jbHVkZSA8d3RmL0hleE51bWJlci5oPgotI2luY2x1ZGUgPHd0Zi9T
Y29wZS5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdCdWlsZGVyLmg+Ci0KLSNpZiAhT1MoV0lORE9XUykKLSNpbmNsdWRlIDxmY250bC5o
PgotI2luY2x1ZGUgPHN5cy9tbWFuLmg+Ci0jaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSNpbmNsdWRl
IDx1bmlzdGQuaD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBG
aWxlU3lzdGVtIHsKLQotLy8gVGhlIGZvbGxvd2luZyBsb3dlci1BU0NJSSBjaGFyYWN0ZXJzIG5l
ZWQgZXNjYXBpbmcgdG8gYmUgdXNlZCBpbiBhIGZpbGVuYW1lCi0vLyBhY3Jvc3MgYWxsIHN5c3Rl
bXMsIGluY2x1ZGluZyBXaW5kb3dzOgotLy8gICAgIC0gVW5wcmludGFibGUgQVNDSUkgKDAwLTFG
KQotLy8gICAgIC0gU3BhY2UgICAgICAgICAgICAgKDIwKQotLy8gICAgIC0gRG91YmxlIHF1b3Rl
ICAgICAgKDIyKQotLy8gICAgIC0gUGVyY2VudCAgICAgICAgICAgKDI1KSAoZXNjYXBlZCBiZWNh
dXNlIGl0IGlzIG91ciBlc2NhcGUgY2hhcmFjdGVyKQotLy8gICAgIC0gQXN0ZXJpc2sgICAgICAg
ICAgKDJBKQotLy8gICAgIC0gU2xhc2ggICAgICAgICAgICAgKDJGKQotLy8gICAgIC0gQ29sb24g
ICAgICAgICAgICAgKDNBKQotLy8gICAgIC0gTGVzcy10aGFuICAgICAgICAgKDNDKQotLy8gICAg
IC0gR3JlYXRlci10aGFuICAgICAgKDNFKQotLy8gICAgIC0gUXVlc3Rpb24gTWFyayAgICAgKDNG
KQotLy8gICAgIC0gQmFja3NsYXNoICAgICAgICAgKDVDKQotLy8gICAgIC0gUGlwZSAgICAgICAg
ICAgICAgKDdDKQotLy8gICAgIC0gRGVsZXRlICAgICAgICAgICAgKDdGKQotCi1zdGF0aWMgY29u
c3QgYm9vbCBuZWVkc0VzY2FwaW5nWzEyOF0gPSB7Ci0gICAgLyogMDAtMDcgKi8gdHJ1ZSwgIHRy
dWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsIAotICAgIC8qIDA4
LTBGICovIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0
cnVlLCAKLQotICAgIC8qIDEwLTE3ICovIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVl
LCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAKLSAgICAvKiAxOC0xRiAqLyB0cnVlLCAgdHJ1ZSwgIHRy
dWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgCi0KLSAgICAvKiAyMC0yNyAq
LyB0cnVlLCAgZmFsc2UsIHRydWUsICBmYWxzZSwgZmFsc2UsIHRydWUsICBmYWxzZSwgZmFsc2Us
IAotICAgIC8qIDI4LTJGICovIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgIGZhbHNlLCBmYWxzZSwgZmFs
c2UsIGZhbHNlLCB0cnVlLCAKLSAgICAKLSAgICAvKiAzMC0zNyAqLyBmYWxzZSwgZmFsc2UsIGZh
bHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIAotICAgIC8qIDM4LTNGICov
IGZhbHNlLCBmYWxzZSwgdHJ1ZSwgIGZhbHNlLCB0cnVlLCAgZmFsc2UsIHRydWUsICB0cnVlLCAK
LSAgICAKLSAgICAvKiA0MC00NyAqLyBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2Us
IGZhbHNlLCBmYWxzZSwgZmFsc2UsIAotICAgIC8qIDQ4LTRGICovIGZhbHNlLCBmYWxzZSwgZmFs
c2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKLSAgICAKLSAgICAvKiA1MC01
NyAqLyBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFs
c2UsIAotICAgIC8qIDU4LTVGICovIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCAg
ZmFsc2UsIGZhbHNlLCBmYWxzZSwKLSAgICAKLSAgICAvKiA2MC02NyAqLyBmYWxzZSwgZmFsc2Us
IGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIAotICAgIC8qIDY4LTZG
ICovIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxz
ZSwKLSAgICAKLSAgICAvKiA3MC03NyAqLyBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFs
c2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIAotICAgIC8qIDc4LTdGICovIGZhbHNlLCBmYWxzZSwg
ZmFsc2UsIGZhbHNlLCB0cnVlLCAgZmFsc2UsIGZhbHNlLCB0cnVlLCAKLX07Ci0KLXN0YXRpYyBp
bmxpbmUgYm9vbCBzaG91bGRFc2NhcGVVQ2hhcihVQ2hhciBjaGFyYWN0ZXIsIFVDaGFyIHByZXZp
b3VzQ2hhcmFjdGVyLCBVQ2hhciBuZXh0Q2hhcmFjdGVyKQotewotICAgIGlmIChjaGFyYWN0ZXIg
PD0gMTI3KQotICAgICAgICByZXR1cm4gbmVlZHNFc2NhcGluZ1tjaGFyYWN0ZXJdOwotCi0gICAg
aWYgKFUxNl9JU19MRUFEKGNoYXJhY3RlcikgJiYgIVUxNl9JU19UUkFJTChuZXh0Q2hhcmFjdGVy
KSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBpZiAoVTE2X0lTX1RSQUlMKGNoYXJhY3Rl
cikgJiYgIVUxNl9JU19MRUFEKHByZXZpb3VzQ2hhcmFjdGVyKSkKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLVN0cmluZyBlbmNvZGVGb3JGaWxlTmFtZShj
b25zdCBTdHJpbmcmIGlucHV0U3RyaW5nKQotewotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGlucHV0
U3RyaW5nLmxlbmd0aCgpOwotICAgIGlmICghbGVuZ3RoKQotICAgICAgICByZXR1cm4gaW5wdXRT
dHJpbmc7Ci0KLSAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKLSAgICByZXN1bHQucmVzZXJ2ZUNh
cGFjaXR5KGxlbmd0aCk7Ci0KLSAgICBVQ2hhciBwcmV2aW91c0NoYXJhY3RlcjsKLSAgICBVQ2hh
ciBjaGFyYWN0ZXIgPSAwOwotICAgIFVDaGFyIG5leHRDaGFyYWN0ZXIgPSBpbnB1dFN0cmluZ1sw
XTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAg
cHJldmlvdXNDaGFyYWN0ZXIgPSBjaGFyYWN0ZXI7Ci0gICAgICAgIGNoYXJhY3RlciA9IG5leHRD
aGFyYWN0ZXI7Ci0gICAgICAgIG5leHRDaGFyYWN0ZXIgPSBpICsgMSA8IGxlbmd0aCA/IGlucHV0
U3RyaW5nW2kgKyAxXSA6IDA7Ci0KLSAgICAgICAgaWYgKHNob3VsZEVzY2FwZVVDaGFyKGNoYXJh
Y3RlciwgcHJldmlvdXNDaGFyYWN0ZXIsIG5leHRDaGFyYWN0ZXIpKSB7Ci0gICAgICAgICAgICBp
ZiAoY2hhcmFjdGVyIDw9IDI1NSkgewotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyUn
KTsKLSAgICAgICAgICAgICAgICBhcHBlbmRCeXRlQXNIZXgoY2hhcmFjdGVyLCByZXN1bHQpOwot
ICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJh
bCgiJSsiKTsKLSAgICAgICAgICAgICAgICBhcHBlbmRCeXRlQXNIZXgoY2hhcmFjdGVyID4+IDgs
IHJlc3VsdCk7Ci0gICAgICAgICAgICAgICAgYXBwZW5kQnl0ZUFzSGV4KGNoYXJhY3RlciwgcmVz
dWx0KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICByZXN1bHQu
YXBwZW5kKGNoYXJhY3Rlcik7Ci0gICAgfQotCi0gICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygp
OwotfQotCi1TdHJpbmcgZGVjb2RlRnJvbUZpbGVuYW1lKGNvbnN0IFN0cmluZyYgaW5wdXRTdHJp
bmcpCi17Ci0gICAgdW5zaWduZWQgbGVuZ3RoID0gaW5wdXRTdHJpbmcubGVuZ3RoKCk7Ci0gICAg
aWYgKCFsZW5ndGgpCi0gICAgICAgIHJldHVybiBpbnB1dFN0cmluZzsKLQotICAgIFN0cmluZ0J1
aWxkZXIgcmVzdWx0OwotICAgIHJlc3VsdC5yZXNlcnZlQ2FwYWNpdHkobGVuZ3RoKTsKLQotICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICBpZiAoaW5w
dXRTdHJpbmdbaV0gIT0gJyUnKSB7Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKGlucHV0U3Ry
aW5nW2ldKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8g
SWYgdGhlIGlucHV0IHN0cmluZyBpcyBhIHZhbGlkIGVuY29kZWQgZmlsZW5hbWUsIGl0IG11c3Qg
YmUgYXQgbGVhc3QgMiBjaGFyYWN0ZXJzIGxvbmdlcgotICAgICAgICAvLyB0aGFuIHRoZSBjdXJy
ZW50IGluZGV4IHRvIGFjY291bnQgZm9yIHRoaXMgcGVyY2VudCBlbmNvZGVkIHZhbHVlLgotICAg
ICAgICBpZiAoaSArIDIgPj0gbGVuZ3RoKQotICAgICAgICAgICAgcmV0dXJuIHsgfTsKLQotICAg
ICAgICBpZiAoaW5wdXRTdHJpbmdbaSsxXSAhPSAnKycpIHsKLSAgICAgICAgICAgIGlmICghaXNB
U0NJSUhleERpZ2l0KGlucHV0U3RyaW5nW2kgKyAxXSkpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IHsgfTsKLSAgICAgICAgICAgIGlmICghaXNBU0NJSUhleERpZ2l0KGlucHV0U3RyaW5nW2kgKyAy
XSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmQodG9BU0NJSUhleFZhbHVlKGlucHV0U3RyaW5nW2kgKyAxXSwgaW5wdXRTdHJpbmdbaSArIDJd
KSk7Ci0gICAgICAgICAgICBpICs9IDI7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
fQotCi0gICAgICAgIC8vIElmIHRoZSBpbnB1dCBzdHJpbmcgaXMgYSB2YWxpZCBlbmNvZGVkIGZp
bGVuYW1lLCBpdCBtdXN0IGJlIGF0IGxlYXN0IDUgY2hhcmFjdGVycyBsb25nZXIKLSAgICAgICAg
Ly8gdGhhbiB0aGUgY3VycmVudCBpbmRleCB0byBhY2NvdW50IGZvciB0aGlzIHBlcmNlbnQgZW5j
b2RlZCB2YWx1ZS4KLSAgICAgICAgaWYgKGkgKyA1ID49IGxlbmd0aCkKLSAgICAgICAgICAgIHJl
dHVybiB7IH07Ci0KLSAgICAgICAgaWYgKCFpc0FTQ0lJSGV4RGlnaXQoaW5wdXRTdHJpbmdbaSAr
IDJdKSkKLSAgICAgICAgICAgIHJldHVybiB7IH07Ci0gICAgICAgIGlmICghaXNBU0NJSUhleERp
Z2l0KGlucHV0U3RyaW5nW2kgKyAzXSkpCi0gICAgICAgICAgICByZXR1cm4geyB9OwotICAgICAg
ICBpZiAoIWlzQVNDSUlIZXhEaWdpdChpbnB1dFN0cmluZ1tpICsgNF0pKQotICAgICAgICAgICAg
cmV0dXJuIHsgfTsKLSAgICAgICAgaWYgKCFpc0FTQ0lJSGV4RGlnaXQoaW5wdXRTdHJpbmdbaSAr
IDVdKSkKLSAgICAgICAgICAgIHJldHVybiB7IH07Ci0KLSAgICAgICAgcmVzdWx0LmFwcGVuZCh0
b0FTQ0lJSGV4VmFsdWUoaW5wdXRTdHJpbmdbaSArIDJdLCBpbnB1dFN0cmluZ1tpICsgM10pIDw8
IDggfCB0b0FTQ0lJSGV4VmFsdWUoaW5wdXRTdHJpbmdbaSArIDRdLCBpbnB1dFN0cmluZ1tpICsg
NV0pKTsKLSAgICAgICAgaSArPSA1OwotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQudG9TdHJp
bmcoKTsKLX0KLQotU3RyaW5nIGxhc3RDb21wb25lbnRPZlBhdGhJZ25vcmluZ1RyYWlsaW5nU2xh
c2goY29uc3QgU3RyaW5nJiBwYXRoKQotewotI2lmIE9TKFdJTkRPV1MpCi0gICAgY2hhciBwYXRo
U2VwYXJhdG9yID0gJ1xcJzsKLSNlbHNlCi0gICAgY2hhciBwYXRoU2VwYXJhdG9yID0gJy8nOwot
I2VuZGlmCi0KLSAgICBhdXRvIHBvc2l0aW9uID0gcGF0aC5yZXZlcnNlRmluZChwYXRoU2VwYXJh
dG9yKTsKLSAgICBpZiAocG9zaXRpb24gPT0gbm90Rm91bmQpCi0gICAgICAgIHJldHVybiBwYXRo
OwotCi0gICAgc2l6ZV90IGVuZE9mU3Vic3RyaW5nID0gcGF0aC5sZW5ndGgoKSAtIDE7Ci0gICAg
aWYgKHBvc2l0aW9uID09IGVuZE9mU3Vic3RyaW5nKSB7Ci0gICAgICAgIC0tZW5kT2ZTdWJzdHJp
bmc7Ci0gICAgICAgIHBvc2l0aW9uID0gcGF0aC5yZXZlcnNlRmluZChwYXRoU2VwYXJhdG9yLCBl
bmRPZlN1YnN0cmluZyk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHBhdGguc3Vic3RyaW5nKHBvc2l0
aW9uICsgMSwgZW5kT2ZTdWJzdHJpbmcgLSBwb3NpdGlvbik7Ci19Ci0KLWJvb2wgYXBwZW5kRmls
ZUNvbnRlbnRzVG9GaWxlSGFuZGxlKGNvbnN0IFN0cmluZyYgcGF0aCwgUGxhdGZvcm1GaWxlSGFu
ZGxlJiB0YXJnZXQpCi17Ci0gICAgYXV0byBzb3VyY2UgPSBvcGVuRmlsZShwYXRoLCBGaWxlT3Bl
bk1vZGU6OlJlYWQpOwotCi0gICAgaWYgKCFpc0hhbmRsZVZhbGlkKHNvdXJjZSkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgIHN0YXRpYyBpbnQgYnVmZmVyU2l6ZSA9IDEgPDwgMTk7Ci0g
ICAgVmVjdG9yPGNoYXI+IGJ1ZmZlcihidWZmZXJTaXplKTsKLQotICAgIGF1dG8gZmlsZUNsb3Nl
ciA9IFdURjo6bWFrZVNjb3BlRXhpdChbc291cmNlXSgpIHsKLSAgICAgICAgUGxhdGZvcm1GaWxl
SGFuZGxlIGhhbmRsZSA9IHNvdXJjZTsKLSAgICAgICAgY2xvc2VGaWxlKGhhbmRsZSk7Ci0gICAg
fSk7Ci0KLSAgICBkbyB7Ci0gICAgICAgIGludCByZWFkQnl0ZXMgPSByZWFkRnJvbUZpbGUoc291
cmNlLCBidWZmZXIuZGF0YSgpLCBidWZmZXJTaXplKTsKLSAgICAgICAgCi0gICAgICAgIGlmIChy
ZWFkQnl0ZXMgPCAwKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIGlmICh3
cml0ZVRvRmlsZSh0YXJnZXQsIGJ1ZmZlci5kYXRhKCksIHJlYWRCeXRlcykgIT0gcmVhZEJ5dGVz
KQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIGlmIChyZWFkQnl0ZXMgPCBi
dWZmZXJTaXplKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSB3aGlsZSAodHJ1ZSk7
Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotICAgIAotYm9vbCBmaWxlc0hhdmVT
YW1lVm9sdW1lKGNvbnN0IFN0cmluZyYgZmlsZUEsIGNvbnN0IFN0cmluZyYgZmlsZUIpCi17Ci0g
ICAgYXV0byBmc1JlcEZpbGVBID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVBKTsKLSAg
ICBhdXRvIGZzUmVwRmlsZUIgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZUIpOwotICAg
IAotICAgIGlmIChmc1JlcEZpbGVBLmlzTnVsbCgpIHx8IGZzUmVwRmlsZUIuaXNOdWxsKCkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0KLSAgICBh
dXRvIGZpbGVBRGV2ID0gZ2V0RmlsZURldmljZUlkKGZzUmVwRmlsZUEpOwotICAgIGF1dG8gZmls
ZUJEZXYgPSBnZXRGaWxlRGV2aWNlSWQoZnNSZXBGaWxlQik7Ci0KLSAgICBpZiAoZmlsZUFEZXYg
JiYgZmlsZUJEZXYpCi0gICAgICAgIHJlc3VsdCA9IChmaWxlQURldiA9PSBmaWxlQkRldik7Ci0g
ICAgCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotI2lmICFQTEFURk9STShNQUMpCi0KLXZvaWQg
c2V0TWV0YWRhdGFVUkwoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
JikKLXsKLX0KLQotYm9vbCBjYW5FeGNsdWRlRnJvbUJhY2t1cCgpCi17Ci0gICAgcmV0dXJuIGZh
bHNlOwotfQotCi1ib29sIGV4Y2x1ZGVGcm9tQmFja3VwKGNvbnN0IFN0cmluZyYpCi17Ci0gICAg
cmV0dXJuIGZhbHNlOwotfQotCi0jZW5kaWYKLQotTWFwcGVkRmlsZURhdGE6On5NYXBwZWRGaWxl
RGF0YSgpCi17Ci0jaWYgIU9TKFdJTkRPV1MpCi0gICAgaWYgKCFtX2ZpbGVEYXRhKQotICAgICAg
ICByZXR1cm47Ci0gICAgbXVubWFwKG1fZmlsZURhdGEsIG1fZmlsZVNpemUpOwotI2VuZGlmCi19
Ci0KLU1hcHBlZEZpbGVEYXRhOjpNYXBwZWRGaWxlRGF0YShjb25zdCBTdHJpbmcmIGZpbGVQYXRo
LCBib29sJiBzdWNjZXNzKQotewotI2lmIE9TKFdJTkRPV1MpCi0gICAgLy8gRklYTUU6IEltcGxl
bWVudCBtYXBwaW5nCi0gICAgc3VjY2VzcyA9IGZhbHNlOwotI2Vsc2UKLSAgICBDU3RyaW5nIGZz
UmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVQYXRoKTsKLSAgICBpbnQgZmQgPSAh
ZnNSZXAuaXNOdWxsKCkgPyBvcGVuKGZzUmVwLmRhdGEoKSwgT19SRE9OTFkpIDogLTE7Ci0gICAg
aWYgKGZkIDwgMCkgewotICAgICAgICBzdWNjZXNzID0gZmFsc2U7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBzdHJ1Y3Qgc3RhdCBmaWxlU3RhdDsKLSAgICBpZiAoZnN0YXQoZmQsICZm
aWxlU3RhdCkpIHsKLSAgICAgICAgY2xvc2UoZmQpOwotICAgICAgICBzdWNjZXNzID0gZmFsc2U7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICB1bnNpZ25lZCBzaXplOwotICAgIGlmICgh
V1RGOjpjb252ZXJ0U2FmZWx5KGZpbGVTdGF0LnN0X3NpemUsIHNpemUpKSB7Ci0gICAgICAgIGNs
b3NlKGZkKTsKLSAgICAgICAgc3VjY2VzcyA9IGZhbHNlOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgaWYgKCFzaXplKSB7Ci0gICAgICAgIGNsb3NlKGZkKTsKLSAgICAgICAgc3VjY2Vz
cyA9IHRydWU7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICB2b2lkKiBkYXRhID0gbW1h
cCgwLCBzaXplLCBQUk9UX1JFQUQsIE1BUF9GSUxFIHwgTUFQX1NIQVJFRCwgZmQsIDApOwotICAg
IGNsb3NlKGZkKTsKLQotICAgIGlmIChkYXRhID09IE1BUF9GQUlMRUQpIHsKLSAgICAgICAgc3Vj
Y2VzcyA9IGZhbHNlOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgc3VjY2VzcyA9IHRy
dWU7Ci0gICAgbV9maWxlRGF0YSA9IGRhdGE7Ci0gICAgbV9maWxlU2l6ZSA9IHNpemU7Ci0jZW5k
aWYKLX0KLQotUGxhdGZvcm1GaWxlSGFuZGxlIG9wZW5BbmRMb2NrRmlsZShjb25zdCBTdHJpbmcm
IHBhdGgsIEZpbGVPcGVuTW9kZSBvcGVuTW9kZSwgT3B0aW9uU2V0PEZpbGVMb2NrTW9kZT4gbG9j
a01vZGUpCi17Ci0gICAgYXV0byBoYW5kbGUgPSBvcGVuRmlsZShwYXRoLCBvcGVuTW9kZSk7Ci0g
ICAgaWYgKGhhbmRsZSA9PSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQotICAgICAgICByZXR1
cm4gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKLQotI2lmIFVTRShGSUxFX0xPQ0spCi0gICAg
Ym9vbCBsb2NrZWQgPSBsb2NrRmlsZShoYW5kbGUsIGxvY2tNb2RlKTsKLSAgICBBU1NFUlRfVU5V
U0VEKGxvY2tlZCwgbG9ja2VkKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGxvY2tNb2RlKTsK
LSNlbmRpZgotCi0gICAgcmV0dXJuIGhhbmRsZTsKLX0KLQotdm9pZCB1bmxvY2tBbmRDbG9zZUZp
bGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSkKLXsKLSNpZiBVU0UoRklMRV9MT0NLKQotICAg
IGJvb2wgdW5sb2NrZWQgPSB1bmxvY2tGaWxlKGhhbmRsZSk7Ci0gICAgQVNTRVJUX1VOVVNFRCh1
bmxvY2tlZCwgdW5sb2NrZWQpOwotI2VuZGlmCi0gICAgY2xvc2VGaWxlKGhhbmRsZSk7Ci19Ci0K
LWJvb2wgZmlsZUlzRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgU2hvdWxkRm9sbG93U3lt
Ym9saWNMaW5rcyBzaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzKQotewotICAgIGF1dG8gbWV0YWRh
dGEgPSBzaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzID09IFNob3VsZEZvbGxvd1N5bWJvbGljTGlu
a3M6OlllcyA/IGZpbGVNZXRhZGF0YUZvbGxvd2luZ1N5bWxpbmtzKHBhdGgpIDogZmlsZU1ldGFk
YXRhKHBhdGgpOwotICAgIGlmICghbWV0YWRhdGEpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICByZXR1cm4gbWV0YWRhdGEudmFsdWUoKS50eXBlID09IEZpbGVNZXRhZGF0YTo6VHlwZTo6RGly
ZWN0b3J5OwotfQotCi19IC8vIG5hbWVzcGFjZSBGaWxlU3lzdGVtCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDNjZWJjYWEwNTM5YjU5ZDkzZTcyZTA5ODQwYjIzYjFkYWM2MzgxMWIuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oCisrKyAvZGV2L251bGwKQEAgLTEsMjI1ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhLCBMdGQuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoK
LSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBB
cHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAot
ICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4gCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
LSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlIDx0aW1lLmg+Ci0jaW5jbHVkZSA8dXRpbGl0eT4KLSNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KLSNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+Ci0jaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLSNpZiBVU0UoQ0YpCi0jaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgotI2VuZGlmCi0KLSNpZiBVU0UoQ0YpCi10eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NG
RGF0YSogQ0ZEYXRhUmVmOwotI2VuZGlmCi0KLU9CSkNfQ0xBU1MgTlNTdHJpbmc7Ci0KLSNpZiBQ
TEFURk9STShXSU4pCi10eXBlZGVmIHZvaWQgKkhBTkRMRTsKLSNlbmRpZgotCi0jaWYgVVNFKEdM
SUIpCi10eXBlZGVmIHN0cnVjdCBfR0ZpbGVJT1N0cmVhbSBHRmlsZUlPU3RyZWFtOwotI2VuZGlm
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IEZpbGVNZXRhZGF0YTsKLQotbmFtZXNw
YWNlIEZpbGVTeXN0ZW0gewotCi0vLyBQbGF0Zm9ybUZpbGVIYW5kbGUKLSNpZiBVU0UoR0xJQikg
JiYgIVBMQVRGT1JNKFdJTikKLXR5cGVkZWYgR0ZpbGVJT1N0cmVhbSogUGxhdGZvcm1GaWxlSGFu
ZGxlOwotY29uc3QgUGxhdGZvcm1GaWxlSGFuZGxlIGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUg
PSAwOwotI2VsaWYgUExBVEZPUk0oV0lOKQotdHlwZWRlZiBIQU5ETEUgUGxhdGZvcm1GaWxlSGFu
ZGxlOwotLy8gRklYTUU6IC0xIGlzIElOVkFMSURfSEFORExFX1ZBTFVFLCBkZWZpbmVkIGluIDx3
aW5iYXNlLmg+LiBDaHJvbWl1bSB0cmllcyB0bwotLy8gYXZvaWQgdXNpbmcgV2luZG93cyBoZWFk
ZXJzIGluIGhlYWRlcnMuICBXZSdkIHJhdGhlciBtb3ZlIHRoaXMgaW50byB0aGUgLmNwcC4KLWNv
bnN0IFBsYXRmb3JtRmlsZUhhbmRsZSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlID0gcmVpbnRl
cnByZXRfY2FzdDxIQU5ETEU+KC0xKTsKLSNlbHNlCi10eXBlZGVmIGludCBQbGF0Zm9ybUZpbGVI
YW5kbGU7Ci1jb25zdCBQbGF0Zm9ybUZpbGVIYW5kbGUgaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRs
ZSA9IC0xOwotI2VuZGlmCi0KLWVudW0gY2xhc3MgRmlsZU9wZW5Nb2RlIHsKLSAgICBSZWFkLAot
ICAgIFdyaXRlLAotI2lmIE9TKERBUldJTikKLSAgICBFdmVudHNPbmx5LAotI2VuZGlmCi19Owot
Ci1lbnVtIGNsYXNzIEZpbGVTZWVrT3JpZ2luIHsKLSAgICBCZWdpbm5pbmcsCi0gICAgQ3VycmVu
dCwKLSAgICBFbmQsCi19OwotCi1lbnVtIGNsYXNzIEZpbGVMb2NrTW9kZSB7Ci0gICAgU2hhcmVk
ID0gMSA8PCAwLAotICAgIEV4Y2x1c2l2ZSA9IDEgPDwgMSwKLSAgICBOb25ibG9ja2luZyA9IDEg
PDwgMiwKLX07Ci0KLWVudW0gY2xhc3MgU2hvdWxkRm9sbG93U3ltYm9saWNMaW5rcyB7IE5vLCBZ
ZXMgfTsKLQotV0VCQ09SRV9FWFBPUlQgYm9vbCBmaWxlRXhpc3RzKGNvbnN0IFN0cmluZyYpOwot
V0VCQ09SRV9FWFBPUlQgYm9vbCBkZWxldGVGaWxlKGNvbnN0IFN0cmluZyYpOwotV0VCQ09SRV9F
WFBPUlQgYm9vbCBkZWxldGVFbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKLVdFQkNPUkVf
RVhQT1JUIGJvb2wgbW92ZUZpbGUoY29uc3QgU3RyaW5nJiBvbGRQYXRoLCBjb25zdCBTdHJpbmcm
IG5ld1BhdGgpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCBnZXRGaWxlU2l6ZShjb25zdCBTdHJpbmcm
LCBsb25nIGxvbmcmIHJlc3VsdCk7Ci1XRUJDT1JFX0VYUE9SVCBib29sIGdldEZpbGVTaXplKFBs
YXRmb3JtRmlsZUhhbmRsZSwgbG9uZyBsb25nJiByZXN1bHQpOwotV0VCQ09SRV9FWFBPUlQgT3B0
aW9uYWw8V2FsbFRpbWU+IGdldEZpbGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYpOwot
V0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8V2FsbFRpbWU+IGdldEZpbGVDcmVhdGlvblRpbWUoY29u
c3QgU3RyaW5nJik7IC8vIE5vdCBhbGwgcGxhdGZvcm1zIHN0b3JlIGZpbGUgY3JlYXRpb24gdGlt
ZS4KLVdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhKGNv
bnN0IFN0cmluZyYgcGF0aCk7Ci1XRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxGaWxlTWV0YWRhdGE+
IGZpbGVNZXRhZGF0YUZvbGxvd2luZ1N5bWxpbmtzKGNvbnN0IFN0cmluZyYgcGF0aCk7Ci1XRUJD
T1JFX0VYUE9SVCBib29sIGZpbGVJc0RpcmVjdG9yeShjb25zdCBTdHJpbmcmLCBTaG91bGRGb2xs
b3dTeW1ib2xpY0xpbmtzKTsKLVdFQkNPUkVfRVhQT1JUIFN0cmluZyBwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGNvbXBvbmVudCk7Ci1T
dHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhTdHJpbmdWaWV3IHBhdGgsIGNvbnN0IFZl
Y3RvcjxTdHJpbmdWaWV3PiYgY29tcG9uZW50cyk7Ci1TdHJpbmcgbGFzdENvbXBvbmVudE9mUGF0
aElnbm9yaW5nVHJhaWxpbmdTbGFzaChjb25zdCBTdHJpbmcmIHBhdGgpOwotV0VCQ09SRV9FWFBP
UlQgYm9vbCBtYWtlQWxsRGlyZWN0b3JpZXMoY29uc3QgU3RyaW5nJiBwYXRoKTsKLVN0cmluZyBo
b21lRGlyZWN0b3J5UGF0aCgpOwotV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHBhdGhHZXRGaWxlTmFt
ZShjb25zdCBTdHJpbmcmKTsKLVdFQkNPUkVfRVhQT1JUIFN0cmluZyBkaXJlY3RvcnlOYW1lKGNv
bnN0IFN0cmluZyYpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCBnZXRWb2x1bWVGcmVlU3BhY2UoY29u
c3QgU3RyaW5nJiwgdWludDY0X3QmKTsKLVdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPGludDMyX3Q+
IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJik7Ci1XRUJDT1JFX0VYUE9SVCBib29sIGNy
ZWF0ZVN5bWJvbGljTGluayhjb25zdCBTdHJpbmcmIHRhcmdldFBhdGgsIGNvbnN0IFN0cmluZyYg
c3ltYm9saWNMaW5rUGF0aCk7Ci0KLVdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TWV0YWRhdGFVUkwo
Y29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5n
JiByZWZlcnJlciA9IHsgfSk7Ci0KLWJvb2wgY2FuRXhjbHVkZUZyb21CYWNrdXAoKTsgLy8gUmV0
dXJucyB0cnVlIGlmIGFueSBmaWxlIGNhbiBldmVyIGJlIGV4Y2x1ZGVkIGZyb20gYmFja3VwLgot
Ym9vbCBleGNsdWRlRnJvbUJhY2t1cChjb25zdCBTdHJpbmcmKTsgLy8gUmV0dXJucyB0cnVlIGlm
IHN1Y2Nlc3NmdWwuCi0KLVdFQkNPUkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+IGxpc3REaXJlY3Rv
cnkoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGZpbHRlciA9IFN0cmluZygpKTsK
LQotV0VCQ09SRV9FWFBPUlQgQ1N0cmluZyBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3Qg
U3RyaW5nJik7Ci1TdHJpbmcgc3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25z
dCBjaGFyKik7Ci0KLWlubGluZSBib29sIGlzSGFuZGxlVmFsaWQoY29uc3QgUGxhdGZvcm1GaWxl
SGFuZGxlJiBoYW5kbGUpIHsgcmV0dXJuIGhhbmRsZSAhPSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFu
ZGxlOyB9Ci0KLS8vIFByZWZpeCBpcyB3aGF0IHRoZSBmaWxlbmFtZSBzaG91bGQgYmUgcHJlZml4
ZWQgd2l0aCwgbm90IHRoZSBmdWxsIHBhdGguCi1XRUJDT1JFX0VYUE9SVCBTdHJpbmcgb3BlblRl
bXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYpOwot
V0VCQ09SRV9FWFBPUlQgUGxhdGZvcm1GaWxlSGFuZGxlIG9wZW5GaWxlKGNvbnN0IFN0cmluZyYg
cGF0aCwgRmlsZU9wZW5Nb2RlKTsKLVdFQkNPUkVfRVhQT1JUIHZvaWQgY2xvc2VGaWxlKFBsYXRm
b3JtRmlsZUhhbmRsZSYpOwotLy8gUmV0dXJucyB0aGUgcmVzdWx0aW5nIG9mZnNldCBmcm9tIHRo
ZSBiZWdpbm5pbmcgb2YgdGhlIGZpbGUgaWYgc3VjY2Vzc2Z1bCwgLTEgb3RoZXJ3aXNlLgotV0VC
Q09SRV9FWFBPUlQgbG9uZyBsb25nIHNlZWtGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgbG9uZyBs
b25nIG9mZnNldCwgRmlsZVNlZWtPcmlnaW4pOwotYm9vbCB0cnVuY2F0ZUZpbGUoUGxhdGZvcm1G
aWxlSGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0KTsKLS8vIFJldHVybnMgbnVtYmVyIG9mIGJ5dGVz
IGFjdHVhbGx5IHJlYWQgaWYgc3VjY2Vzc2Z1bCwgLTEgb3RoZXJ3aXNlLgotV0VCQ09SRV9FWFBP
UlQgaW50IHdyaXRlVG9GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgY29uc3QgY2hhciogZGF0YSwg
aW50IGxlbmd0aCk7Ci0vLyBSZXR1cm5zIG51bWJlciBvZiBieXRlcyBhY3R1YWxseSB3cml0dGVu
IGlmIHN1Y2Nlc3NmdWwsIC0xIG90aGVyd2lzZS4KLVdFQkNPUkVfRVhQT1JUIGludCByZWFkRnJv
bUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsKLQotV0VC
Q09SRV9FWFBPUlQgUGxhdGZvcm1GaWxlSGFuZGxlIG9wZW5BbmRMb2NrRmlsZShjb25zdCBTdHJp
bmcmLCBGaWxlT3Blbk1vZGUsIE9wdGlvblNldDxGaWxlTG9ja01vZGU+ID0gRmlsZUxvY2tNb2Rl
OjpFeGNsdXNpdmUpOwotV0VCQ09SRV9FWFBPUlQgdm9pZCB1bmxvY2tBbmRDbG9zZUZpbGUoUGxh
dGZvcm1GaWxlSGFuZGxlKTsKLQotLy8gQXBwZW5kcyB0aGUgY29udGVudHMgb2YgdGhlIGZpbGUg
Zm91bmQgYXQgJ3BhdGgnIHRvIHRoZSBvcGVuIFBsYXRmb3JtRmlsZUhhbmRsZS4KLS8vIFJldHVy
bnMgdHJ1ZSBpZiB0aGUgd3JpdGUgd2FzIHN1Y2Nlc3NmdWwsIGZhbHNlIGlmIGl0IHdhcyBub3Qu
Ci1ib29sIGFwcGVuZEZpbGVDb250ZW50c1RvRmlsZUhhbmRsZShjb25zdCBTdHJpbmcmIHBhdGgs
IFBsYXRmb3JtRmlsZUhhbmRsZSYpOwotCi0vLyBIYXJkIGxpbmtzIGEgZmlsZSBpZiBwb3NzaWJs
ZSwgY29waWVzIGl0IGlmIG5vdC4KLWJvb2wgaGFyZExpbmtPckNvcHlGaWxlKGNvbnN0IFN0cmlu
ZyYgc291cmNlLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uKTsKLQotI2lmIFVTRShGSUxFX0xP
Q0spCi1XRUJDT1JFX0VYUE9SVCBib29sIGxvY2tGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgT3B0
aW9uU2V0PEZpbGVMb2NrTW9kZT4pOwotV0VCQ09SRV9FWFBPUlQgYm9vbCB1bmxvY2tGaWxlKFBs
YXRmb3JtRmlsZUhhbmRsZSk7Ci0jZW5kaWYKLQotLy8gRW5jb2RlIGEgc3RyaW5nIGZvciB1c2Ug
d2l0aGluIGEgZmlsZSBuYW1lLgotV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGVuY29kZUZvckZpbGVO
YW1lKGNvbnN0IFN0cmluZyYpOwotV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGRlY29kZUZyb21GaWxl
bmFtZShjb25zdCBTdHJpbmcmKTsKLQotV0VCQ09SRV9FWFBPUlQgYm9vbCBmaWxlc0hhdmVTYW1l
Vm9sdW1lKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOwotCi0jaWYgVVNFKENGKQotUmV0
YWluUHRyPENGVVJMUmVmPiBwYXRoQXNVUkwoY29uc3QgU3RyaW5nJik7Ci0jZW5kaWYKLQotI2lm
IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQotU3RyaW5nIGZpbGVuYW1lRm9yRGlzcGxh
eShjb25zdCBTdHJpbmcmKTsKLSNlbmRpZgotCi0jaWYgUExBVEZPUk0oV0lOKQotV0VCQ09SRV9F
WFBPUlQgU3RyaW5nIGxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpOwotU3RyaW5n
IHJvYW1pbmdVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCk7Ci0jZW5kaWYKLQotI2lmIFBM
QVRGT1JNKENPQ09BKQotV0VCQ09SRV9FWFBPUlQgTlNTdHJpbmcgKmNyZWF0ZVRlbXBvcmFyeURp
cmVjdG9yeShOU1N0cmluZyAqZGlyZWN0b3J5UHJlZml4KTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wg
ZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7Ci0jZW5kaWYKLQotI2lmIFBM
QVRGT1JNKFdJTl9DQUlSTykKLVdFQkNPUkVfRVhQT1JUIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlE
aXJlY3RvcnkoKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgZGVsZXRlTm9uRW1wdHlEaXJlY3Rvcnko
Y29uc3QgU3RyaW5nJik7Ci0jZW5kaWYKLQotV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHJlYWxQYXRo
KGNvbnN0IFN0cmluZyYpOwotCi1jbGFzcyBNYXBwZWRGaWxlRGF0YSB7Ci1wdWJsaWM6Ci0gICAg
TWFwcGVkRmlsZURhdGEoKSB7IH0KLSAgICBNYXBwZWRGaWxlRGF0YShNYXBwZWRGaWxlRGF0YSYm
KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBNYXBwZWRGaWxlRGF0YShjb25zdCBTdHJpbmcmIGZpbGVQ
YXRoLCBib29sJiBzdWNjZXNzKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB+TWFwcGVkRmlsZURhdGEo
KTsKLSAgICBNYXBwZWRGaWxlRGF0YSYgb3BlcmF0b3I9KE1hcHBlZEZpbGVEYXRhJiYpOwotCi0g
ICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9maWxlRGF0YTsg
fQotICAgIGNvbnN0IHZvaWQqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2ZpbGVEYXRhOyB9Ci0g
ICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsZVNpemU7IH0KLQotcHJpdmF0
ZToKLSAgICB2b2lkKiBtX2ZpbGVEYXRhIHsgbnVsbHB0ciB9OwotICAgIHVuc2lnbmVkIG1fZmls
ZVNpemUgeyAwIH07Ci19OwotCi1pbmxpbmUgTWFwcGVkRmlsZURhdGE6Ok1hcHBlZEZpbGVEYXRh
KE1hcHBlZEZpbGVEYXRhJiYgb3RoZXIpCi0gICAgOiBtX2ZpbGVEYXRhKHN0ZDo6ZXhjaGFuZ2Uo
b3RoZXIubV9maWxlRGF0YSwgbnVsbHB0cikpCi0gICAgLCBtX2ZpbGVTaXplKHN0ZDo6ZXhjaGFu
Z2Uob3RoZXIubV9maWxlU2l6ZSwgMCkpCi17Ci19Ci0KLWlubGluZSBNYXBwZWRGaWxlRGF0YSYg
TWFwcGVkRmlsZURhdGE6Om9wZXJhdG9yPShNYXBwZWRGaWxlRGF0YSYmIG90aGVyKQotewotICAg
IG1fZmlsZURhdGEgPSBzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fZmlsZURhdGEsIG51bGxwdHIpOwot
ICAgIG1fZmlsZVNpemUgPSBzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fZmlsZVNpemUsIDApOwotICAg
IHJldHVybiAqdGhpczsKLX0KLQotfSAvLyBuYW1lc3BhY2UgRmlsZVN5c3RlbQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCmluZGV4
IDgxMzE4ZThiMjlhZTVhMGY1Yjk2MDNjODI1NTc5MWNkYmMyMGE0ZTEuLmVjMzcxMzQxYWI5NDk1
YjdkMzU3NjEzNTFiMmIwOWIxMzVhM2VmM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJl
ZEJ1ZmZlci5oCkBAIC0yNiw4ICsyNiw4IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAi
RmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FycmF5QnVmZmVyLmg+Cisj
aW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3Vu
dGVkLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Tb3VyY2VzR0xpYi50
eHQgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Tb3VyY2VzR0xpYi50eHQKaW5kZXggMjc3M2My
YTA4OGI2MGZiMTM5NjkyZDVmNDBkMGJlZmMzZmVjM2NjNC4uMDkwYjg0YTQ4YzEwM2QzZDU5MzE0
MWQ5MGUyYmJiNGFiZjJjNWJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U291cmNlc0dMaWIudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NvdXJjZXNHTGli
LnR4dApAQCAtMjUsNyArMjUsNiBAQCBwbGF0Zm9ybS9hdWRpby9nbGliL0F1ZGlvQnVzR0xpYi5j
cHAKIAogcGxhdGZvcm0vZ2xpYi9FdmVudExvb3BHbGliLmNwcAogcGxhdGZvcm0vZ2xpYi9GaWxl
TW9uaXRvckdMaWIuY3BwCi1wbGF0Zm9ybS9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcAogcGxhdGZv
cm0vZ2xpYi9LZXllZERlY29kZXJHbGliLmNwcAogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJH
bGliLmNwcAogcGxhdGZvcm0vZ2xpYi9Mb3dQb3dlck1vZGVOb3RpZmllckdMaWIuY3BwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvRmlsZVN5c3RlbUNGLmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDg0NzBhMDhmYTVkMmY0NTJlNmM5Mzg3MDFjNmQ5MjZjYTYwOWYwMy4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNzQg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAxMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFt
ZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAot
ICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgotCi0jaW5j
bHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRy
Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUNTdHJpbmcgRmlsZVN5c3RlbTo6
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IGNmU3RyaW5nID0gcGF0aC5jcmVhdGVDRlN0cmluZygpOwotCi0g
ICAgaWYgKCFjZlN0cmluZykKLSAgICAgICAgcmV0dXJuIENTdHJpbmcoKTsKLQotICAgIENGSW5k
ZXggc2l6ZSA9IENGU3RyaW5nR2V0TWF4aW11bVNpemVPZkZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihjZlN0cmluZy5nZXQoKSk7Ci0KLSAgICBWZWN0b3I8Y2hhcj4gYnVmZmVyKHNpemUpOwotCi0g
ICAgaWYgKCFDRlN0cmluZ0dldEZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjZlN0cmluZy5nZXQo
KSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSkpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJG
YWlsZWQgdG8gZ2V0IGZpbGVzeXN0ZW0gcmVwcmVzZW50YXRpb24gdG8gY3JlYXRlIENTdHJpbmcg
ZnJvbSBjZlN0cmluZyIpOwotICAgICAgICByZXR1cm4gQ1N0cmluZygpOwotICAgIH0KLQotICAg
IHJldHVybiBDU3RyaW5nKGJ1ZmZlci5kYXRhKCksIHN0cmxlbihidWZmZXIuZGF0YSgpKSk7Ci19
Ci0KLVN0cmluZyBGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KGNvbnN0IGNoYXIqIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbikKLXsKLSAgICByZXR1cm4gYWRv
cHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKSkuZ2V0KCk7Ci19Ci0KLVJldGFp
blB0cjxDRlVSTFJlZj4gRmlsZVN5c3RlbTo6cGF0aEFzVVJMKGNvbnN0IFN0cmluZyYgcGF0aCkK
LXsKLSAgICBDRlVSTFBhdGhTdHlsZSBwYXRoU3R5bGU7Ci0jaWYgUExBVEZPUk0oV0lOKQotICAg
IHBhdGhTdHlsZSA9IGtDRlVSTFdpbmRvd3NQYXRoU3R5bGU7Ci0jZWxzZQotICAgIHBhdGhTdHls
ZSA9IGtDRlVSTFBPU0lYUGF0aFN0eWxlOwotI2VuZGlmCi0gICAgcmV0dXJuIGFkb3B0Q0YoQ0ZV
UkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoMCwgcGF0aC5jcmVhdGVDRlN0cmluZygpLmdldCgp
LCBwYXRoU3R5bGUsIEZBTFNFKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0ZpbGVNb25pdG9yQ29jb2EubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9GaWxlTW9uaXRvckNvY29hLm1tCmluZGV4
IDFhYjNjMzM0YzY5ZGZmYTM2NDhhYjAwYTQ1NThkOWYyN2U0MzA2MDAuLmNjN2ZlNmI2Y2RlMTBl
ZDRjYTQ1NmU0NmJlMjhhMDRmNjg3MjQ3NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL0ZpbGVNb25pdG9yQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvRmlsZU1vbml0b3JDb2NvYS5tbQpAQCAtMjYsOSArMjYsOSBAQAogI2ltcG9y
dCAiY29uZmlnLmgiCiAjaW1wb3J0ICJGaWxlTW9uaXRvci5oIgogCi0jaW1wb3J0ICJGaWxlU3lz
dGVtLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KKyNp
bXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0ZpbGVTeXN0ZW1Db2NvYS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0ZpbGVTeXN0ZW1Db2NvYS5tbQpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDM4YjBjODMwM2U3YmExMGQ0MDUzM2NiY2QxNWRh
MzNiMDk2OWUzYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9GaWxlU3lzdGVtQ29jb2EubW0KKysrIC9k
ZXYvbnVsbApAQCAtMSwxNDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNy0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAotICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAotICog
My4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1l
cyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiRmls
ZVN5c3RlbS5oIgotCi1AaW50ZXJmYWNlIFdlYkZpbGVNYW5hZ2VyRGVsZWdhdGUgOiBOU09iamVj
dCA8TlNGaWxlTWFuYWdlckRlbGVnYXRlPgotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gV2ViRmls
ZU1hbmFnZXJEZWxlZ2F0ZQotCi0tIChCT09MKWZpbGVNYW5hZ2VyOihOU0ZpbGVNYW5hZ2VyICop
ZmlsZU1hbmFnZXIgc2hvdWxkUHJvY2VlZEFmdGVyRXJyb3I6KE5TRXJyb3IgKillcnJvciBtb3Zp
bmdJdGVtQXRVUkw6KE5TVVJMICopc3JjVVJMIHRvVVJMOihOU1VSTCAqKWRzdFVSTAotewotICAg
IFVOVVNFRF9QQVJBTShmaWxlTWFuYWdlcik7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY1VSTCk7Ci0g
ICAgVU5VU0VEX1BBUkFNKGRzdFVSTCk7ICAgIAotICAgIHJldHVybiBlcnJvci5jb2RlID09IE5T
RmlsZVdyaXRlRmlsZUV4aXN0c0Vycm9yOwotfQotCi1AZW5kCi0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotbmFtZXNwYWNlIEZpbGVTeXN0ZW0gewotCi1TdHJpbmcgaG9tZURpcmVjdG9yeVBhdGgo
KQotewotICAgIHJldHVybiBOU0hvbWVEaXJlY3RvcnkoKTsKLX0KLQotU3RyaW5nIG9wZW5UZW1w
b3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHBsYXRm
b3JtRmlsZUhhbmRsZSkKLXsKLSAgICBwbGF0Zm9ybUZpbGVIYW5kbGUgPSBpbnZhbGlkUGxhdGZv
cm1GaWxlSGFuZGxlOwotICAgIAotICAgIFZlY3RvcjxjaGFyPiB0ZW1wb3JhcnlGaWxlUGF0aChQ
QVRIX01BWCk7Ci0gICAgaWYgKCFjb25mc3RyKF9DU19EQVJXSU5fVVNFUl9URU1QX0RJUiwgdGVt
cG9yYXJ5RmlsZVBhdGguZGF0YSgpLCB0ZW1wb3JhcnlGaWxlUGF0aC5zaXplKCkpKQotICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICAvLyBTaHJpbmsgdGhlIHZlY3Rvci4gICAKLSAgICB0
ZW1wb3JhcnlGaWxlUGF0aC5zaHJpbmsoc3RybGVuKHRlbXBvcmFyeUZpbGVQYXRoLmRhdGEoKSkp
OwotCi0gICAgLy8gRklYTUU6IENoYW5nZSB0byBhIHJ1bnRpbWUgYXNzZXJ0aW9uIHRoYXQgdGhl
IHBhdGggZW5kcyB3aXRoIGEgc2xhc2ggb25jZSA8cmRhcjovL3Byb2JsZW0vMjM1NzkwNzc+IGlz
Ci0gICAgLy8gZml4ZWQgaW4gYWxsIGlPUyBTaW11bGF0b3IgdmVyc2lvbnMgdGhhdCB3ZSB1c2Uu
Ci0gICAgaWYgKHRlbXBvcmFyeUZpbGVQYXRoLmxhc3QoKSAhPSAnLycpCi0gICAgICAgIHRlbXBv
cmFyeUZpbGVQYXRoLmFwcGVuZCgnLycpOwotCi0gICAgLy8gQXBwZW5kIHRoZSBmaWxlIG5hbWUu
Ci0gICAgQ1N0cmluZyBwcmVmaXhVdGY4ID0gcHJlZml4LnV0ZjgoKTsKLSAgICB0ZW1wb3JhcnlG
aWxlUGF0aC5hcHBlbmQocHJlZml4VXRmOC5kYXRhKCksIHByZWZpeFV0ZjgubGVuZ3RoKCkpOwot
ICAgIHRlbXBvcmFyeUZpbGVQYXRoLmFwcGVuZCgiWFhYWFhYIiwgNik7Ci0gICAgdGVtcG9yYXJ5
RmlsZVBhdGguYXBwZW5kKCdcMCcpOwotCi0gICAgcGxhdGZvcm1GaWxlSGFuZGxlID0gbWtzdGVt
cCh0ZW1wb3JhcnlGaWxlUGF0aC5kYXRhKCkpOwotICAgIGlmIChwbGF0Zm9ybUZpbGVIYW5kbGUg
PT0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwot
Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgodGVtcG9yYXJ5RmlsZVBhdGguZGF0YSgpKTsK
LX0KLQotYm9vbCBtb3ZlRmlsZShjb25zdCBTdHJpbmcmIG9sZFBhdGgsIGNvbnN0IFN0cmluZyYg
bmV3UGF0aCkKLXsKLSAgICAvLyBPdmVyd3JpdGUgZXhpc3RpbmcgZmlsZXMuCi0gICAgYXV0byBt
YW5hZ2VyID0gYWRvcHROUyhbW05TRmlsZU1hbmFnZXIgYWxsb2NdIGluaXRdKTsKLSAgICBhdXRv
IGRlbGVnYXRlID0gYWRvcHROUyhbW1dlYkZpbGVNYW5hZ2VyRGVsZWdhdGUgYWxsb2NdIGluaXRd
KTsKLSAgICBbbWFuYWdlciBzZXREZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07Ci0gICAgCi0gICAg
TlNFcnJvciAqZXJyb3IgPSBuaWw7Ci0gICAgYm9vbCBzdWNjZXNzID0gW21hbmFnZXIgbW92ZUl0
ZW1BdFVSTDpbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOm9sZFBhdGhdIHRvVVJMOltOU1VSTCBmaWxl
VVJMV2l0aFBhdGg6bmV3UGF0aF0gZXJyb3I6JmVycm9yXTsKLSAgICBpZiAoIXN1Y2Nlc3MpCi0g
ICAgICAgIE5TTG9nKEAiRXJyb3IgaW4gbW92ZUZpbGU6ICVAIiwgZXJyb3IpOwotICAgIHJldHVy
biBzdWNjZXNzOwotfQotCi1ib29sIGdldFZvbHVtZUZyZWVTcGFjZShjb25zdCBTdHJpbmcmIHBh
dGgsIHVpbnQ2NF90JiBmcmVlU3BhY2UpCi17Ci0gICAgTlNEaWN0aW9uYXJ5ICpmaWxlU3lzdGVt
QXR0cmlidXRlc0RpY3Rpb25hcnkgPSBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGF0
dHJpYnV0ZXNPZkZpbGVTeXN0ZW1Gb3JQYXRoOihOU1N0cmluZyAqKXBhdGggZXJyb3I6TlVMTF07
Ci0gICAgaWYgKCFmaWxlU3lzdGVtQXR0cmlidXRlc0RpY3Rpb25hcnkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICBmcmVlU3BhY2UgPSBbW2ZpbGVTeXN0ZW1BdHRyaWJ1dGVzRGljdGlvbmFy
eSBvYmplY3RGb3JLZXk6TlNGaWxlU3lzdGVtRnJlZVNpemVdIHVuc2lnbmVkTG9uZ0xvbmdWYWx1
ZV07Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLU5TU3RyaW5nICpjcmVhdGVUZW1wb3JhcnlEaXJl
Y3RvcnkoTlNTdHJpbmcgKmRpcmVjdG9yeVByZWZpeCkKLXsKLSAgICBOU1N0cmluZyAqdGVtcERp
cmVjdG9yeSA9IE5TVGVtcG9yYXJ5RGlyZWN0b3J5KCk7Ci0gICAgaWYgKCF0ZW1wRGlyZWN0b3J5
IHx8ICFbdGVtcERpcmVjdG9yeSBsZW5ndGhdKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAg
aWYgKCFkaXJlY3RvcnlQcmVmaXggfHwgIVtkaXJlY3RvcnlQcmVmaXggbGVuZ3RoXSkKLSAgICAg
ICAgcmV0dXJuIG5pbDsKLQotICAgIE5TU3RyaW5nICp0ZW1wRGlyZWN0b3J5Q29tcG9uZW50ID0g
W2RpcmVjdG9yeVByZWZpeCBzdHJpbmdCeUFwcGVuZGluZ1N0cmluZzpAIi1YWFhYWFhYWCJdOwot
ICAgIGNvbnN0IGNoYXIqIHRlbXBEaXJlY3RvcnlDU3RyaW5nID0gW1t0ZW1wRGlyZWN0b3J5IHN0
cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDp0ZW1wRGlyZWN0b3J5Q29tcG9uZW50XSBmaWxl
U3lzdGVtUmVwcmVzZW50YXRpb25dOwotICAgIGlmICghdGVtcERpcmVjdG9yeUNTdHJpbmcpCi0g
ICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBjb25zdCBzaXplX3QgbGVuZ3RoID0gc3RybGVuKHRl
bXBEaXJlY3RvcnlDU3RyaW5nKTsKLSAgICBBU1NFUlQobGVuZ3RoIDw9IE1BWFBBVEhMRU4pOwot
ICAgIGlmIChsZW5ndGggPiBNQVhQQVRITEVOKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAg
Y29uc3Qgc2l6ZV90IGxlbmd0aFBsdXNOdWxsVGVybWluYXRvciA9IGxlbmd0aCArIDE7Ci0gICAg
VmVjdG9yPGNoYXIsIE1BWFBBVEhMRU4gKyAxPiBwYXRoKGxlbmd0aFBsdXNOdWxsVGVybWluYXRv
cik7Ci0gICAgbWVtY3B5KHBhdGguZGF0YSgpLCB0ZW1wRGlyZWN0b3J5Q1N0cmluZywgbGVuZ3Ro
UGx1c051bGxUZXJtaW5hdG9yKTsKLQotICAgIGlmICghbWtkdGVtcChwYXRoLmRhdGEoKSkpCi0g
ICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICByZXR1cm4gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRN
YW5hZ2VyXSBzdHJpbmdXaXRoRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uOnBhdGguZGF0YSgpIGxl
bmd0aDpsZW5ndGhdOwotfQotCi1ib29sIGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0
cmluZyYgcGF0aCkKLXsKLSAgICByZXR1cm4gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2Vy
XSByZW1vdmVJdGVtQXRQYXRoOnBhdGggZXJyb3I6bmlsXTsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
RmlsZVN5c3RlbQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2xpYi9GaWxlTW9uaXRvckdMaWIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2xpYi9GaWxlTW9uaXRvckdMaWIuY3BwCmluZGV4IDQ2M2YzMjc2YzI0ZTI1MWJl
YjRhYTA4YjBiOTg5ODZlOGNjOTY5MjMuLjVhOTgyZjQ5NDkyMzdjYjIwYTlmNTRjZjg4ZTJhZGVl
NDhkNGY5NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvRmlsZU1v
bml0b3JHTGliLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0ZpbGVNb25p
dG9yR0xpYi5jcHAKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJGaWxlTW9uaXRvci5oIgogCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgorI2luY2x1ZGUg
PHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi90aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5oPgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBjYTZjM2RmOTRkZDMyMjEzNDMwMGM3YmJkMjZiYmIwODkwNDY1NjMxLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDcw
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDkgSG9sZ2VyIEhhbnMgUGV0
ZXIgRnJleXRoZXIKLSAqIENvcHlyaWdodCAoQykgMjAwOCBDb2xsYWJvcmEsIEx0ZC4KLSAqIENv
cHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBQb3J0
aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTAgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoK
LSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0g
KiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgi
Ci0KLSNpbmNsdWRlICJGaWxlTWV0YWRhdGEuaCIKLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5o
IgotI2luY2x1ZGUgPGdpby9nZmlsZWRlc2NyaXB0b3JiYXNlZC5oPgotI2luY2x1ZGUgPGdpby9n
aW8uaD4KLSNpbmNsdWRlIDxnbGliLmg+Ci0jaW5jbHVkZSA8Z2xpYi9nc3RkaW8uaD4KLSNpbmNs
dWRlIDxzeXMvZmlsZS5oPgotI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+Ci0jaW5jbHVkZSA8
d3RmL1VVSUQuaD4KLSNpbmNsdWRlIDx3dGYvZ2xpYi9HTGliVXRpbGl0aWVzLmg+Ci0jaW5jbHVk
ZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4K
LSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
QnVpbGRlci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBGaWxlU3lzdGVtIHsKLQotLyogT24gbGludXggZmlsZSBu
YW1lcyBhcmUganVzdCByYXcgYnl0ZXMsIHNvIGFsc28gc3RyaW5ncyB0aGF0IGNhbm5vdCBiZSBl
bmNvZGVkIGluIGFueSB3YXkKLSAqIGFyZSB2YWxpZCBmaWxlIG5hbWVzLiBUaGlzIG1lYW4gdGhh
dCB3ZSBjYW5ub3QganVzdCBzdG9yZSBhIGZpbGUgbmFtZSBhcy1pcyBpbiBhIFN0cmluZwotICog
YnV0IHdlIGhhdmUgdG8gZXNjYXBlIGl0LgotICogT24gV2luZG93cyB0aGUgR0xpYiBmaWxlIG5h
bWUgZW5jb2RpbmcgaXMgYWx3YXlzIFVURi04IHNvIHdlIGNhbiBvcHRpbWl6ZSB0aGlzIGNhc2Uu
ICovCi1TdHJpbmcgc3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBjaGFy
KiBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24pCi17Ci0gICAgaWYgKCFmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24pCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotI2lmIE9TKFdJTkRPV1MpCi0g
ICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKTsKLSNl
bHNlCi0gICAgR1VuaXF1ZVB0cjxnY2hhcj4gZXNjYXBlZFN0cmluZyhnX3VyaV9lc2NhcGVfc3Ry
aW5nKGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbiwgIi86IiwgRkFMU0UpKTsKLSAgICByZXR1cm4g
ZXNjYXBlZFN0cmluZy5nZXQoKTsKLSNlbmRpZgotfQotCi1zdGF0aWMgR1VuaXF1ZVB0cjxjaGFy
PiB1bmVzY2FwZWRGaWxlbmFtZShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgaWYgKHBhdGgu
aXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSNpZiBPUyhXSU5ET1dTKQotICAg
IHJldHVybiBHVW5pcXVlUHRyPGNoYXI+KGdfc3RyZHVwKHBhdGgudXRmOCgpLmRhdGEoKSkpOwot
I2Vsc2UKLSAgICByZXR1cm4gR1VuaXF1ZVB0cjxjaGFyPihnX3VyaV91bmVzY2FwZV9zdHJpbmco
cGF0aC51dGY4KCkuZGF0YSgpLCBudWxscHRyKSk7Ci0jZW5kaWYKLX0KLQotQ1N0cmluZyBmaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBwYXRoKQotewotI2lmIE9TKFdJTkRP
V1MpCi0gICAgcmV0dXJuIHBhdGgudXRmOCgpOwotI2Vsc2UKLSAgICBHVW5pcXVlUHRyPGdjaGFy
PiBmaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGgpOwotICAgIHJldHVybiBmaWxlbmFt
ZS5nZXQoKTsKLSNlbmRpZgotfQotCi0vLyBDb252ZXJ0cyBhIHN0cmluZyB0byBzb21ldGhpbmcg
c3VpdGFibGUgdG8gYmUgZGlzcGxheWVkIHRvIHRoZSB1c2VyLgotU3RyaW5nIGZpbGVuYW1lRm9y
RGlzcGxheShjb25zdCBTdHJpbmcmIHN0cmluZykKLXsKLSNpZiBPUyhXSU5ET1dTKQotICAgIHJl
dHVybiBzdHJpbmc7Ci0jZWxzZQotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5l
c2NhcGVkRmlsZW5hbWUoc3RyaW5nKTsKLSAgICBpZiAoIWZpbGVuYW1lKQotICAgICAgICByZXR1
cm4gc3RyaW5nOwotCi0gICAgR1VuaXF1ZVB0cjxnY2hhcj4gZGlzcGxheShnX2ZpbGVuYW1lX3Rv
X3V0ZjgoZmlsZW5hbWUuZ2V0KCksIC0xLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKSk7Ci0g
ICAgaWYgKCFkaXNwbGF5KQotICAgICAgICByZXR1cm4gc3RyaW5nOwotCi0gICAgcmV0dXJuIFN0
cmluZzo6ZnJvbVVURjgoZGlzcGxheS5nZXQoKSk7Ci0jZW5kaWYKLX0KLQotYm9vbCBmaWxlRXhp
c3RzKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFt
ZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGgpOwotICAgIHJldHVybiBmaWxlbmFtZSA/IGdfZmls
ZV90ZXN0KGZpbGVuYW1lLmdldCgpLCBHX0ZJTEVfVEVTVF9FWElTVFMpIDogZmFsc2U7Ci19Ci0K
LWJvb2wgZGVsZXRlRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgR1VuaXF1ZVB0cjxn
Y2hhcj4gZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShwYXRoKTsKLSAgICByZXR1cm4gZmls
ZW5hbWUgPyBnX3JlbW92ZShmaWxlbmFtZS5nZXQoKSkgIT0gLTEgOiBmYWxzZTsKLX0KLQotYm9v
bCBkZWxldGVFbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgR1VuaXF1
ZVB0cjxnY2hhcj4gZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShwYXRoKTsKLSAgICByZXR1
cm4gZmlsZW5hbWUgPyBnX3JtZGlyKGZpbGVuYW1lLmdldCgpKSAhPSAtMSA6IGZhbHNlOwotfQot
Ci1zdGF0aWMgYm9vbCBnZXRGaWxlU3RhdChjb25zdCBTdHJpbmcmIHBhdGgsIEdTdGF0QnVmKiBz
dGF0QnVmZmVyKQotewotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2NhcGVk
RmlsZW5hbWUocGF0aCk7Ci0gICAgaWYgKCFmaWxlbmFtZSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgcmV0dXJuIGdfc3RhdChmaWxlbmFtZS5nZXQoKSwgc3RhdEJ1ZmZlcikgIT0gLTE7
Ci19Ci0KLXN0YXRpYyBib29sIGdldEZpbGVMU3RhdChjb25zdCBTdHJpbmcmIHBhdGgsIEdTdGF0
QnVmKiBzdGF0QnVmZmVyKQotewotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5l
c2NhcGVkRmlsZW5hbWUocGF0aCk7Ci0gICAgaWYgKCFmaWxlbmFtZSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgcmV0dXJuIGdfbHN0YXQoZmlsZW5hbWUuZ2V0KCksIHN0YXRCdWZmZXIp
ICE9IC0xOwotfQotCi1ib29sIGdldEZpbGVTaXplKGNvbnN0IFN0cmluZyYgcGF0aCwgbG9uZyBs
b25nJiByZXN1bHRTaXplKQotewotICAgIEdTdGF0QnVmIHN0YXRSZXN1bHQ7Ci0gICAgaWYgKCFn
ZXRGaWxlU3RhdChwYXRoLCAmc3RhdFJlc3VsdCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQot
ICAgIHJlc3VsdFNpemUgPSBzdGF0UmVzdWx0LnN0X3NpemU7Ci0gICAgcmV0dXJuIHRydWU7Ci19
Ci0KLWJvb2wgZ2V0RmlsZVNpemUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgbG9uZyBsb25n
JiByZXN1bHRTaXplKQotewotICAgIGF1dG8gaW5mbyA9IGdfZmlsZV9pb19zdHJlYW1fcXVlcnlf
aW5mbyhoYW5kbGUsIEdfRklMRV9BVFRSSUJVVEVfU1RBTkRBUkRfU0laRSwgbnVsbHB0ciwgbnVs
bHB0cik7Ci0gICAgaWYgKCFpbmZvKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXN1
bHRTaXplID0gZ19maWxlX2luZm9fZ2V0X3NpemUoaW5mbyk7Ci0gICAgcmV0dXJuIHRydWU7Ci19
Ci0KLU9wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlQ3JlYXRpb25UaW1lKGNvbnN0IFN0cmluZyYp
Ci17Ci0gICAgLy8gRklYTUU6IElzIHRoZXJlIGEgd2F5IHRvIHJldHJpZXZlIGZpbGUgY3JlYXRp
b24gdGltZSB3aXRoIEd0ayBvbiBwbGF0Zm9ybXMgdGhhdCBzdXBwb3J0IGl0PwotICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7Ci19Ci0KLU9wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlTW9kaWZpY2F0
aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgR1N0YXRCdWYgc3RhdFJlc3VsdDsK
LSAgICBpZiAoIWdldEZpbGVTdGF0KHBhdGgsICZzdGF0UmVzdWx0KSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKLQotICAgIHJldHVybiBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoc3Rh
dFJlc3VsdC5zdF9tdGltZSk7Ci19Ci0KLXN0YXRpYyBGaWxlTWV0YWRhdGE6OlR5cGUgdG9GaWxl
TWV0YXRhVHlwZShHU3RhdEJ1ZiBzdGF0UmVzdWx0KQotewotICAgIGlmIChTX0lTRElSKHN0YXRS
ZXN1bHQuc3RfbW9kZSkpCi0gICAgICAgIHJldHVybiBGaWxlTWV0YWRhdGE6OlR5cGU6OkRpcmVj
dG9yeTsKLSAgICBpZiAoU19JU0xOSyhzdGF0UmVzdWx0LnN0X21vZGUpKQotICAgICAgICByZXR1
cm4gRmlsZU1ldGFkYXRhOjpUeXBlOjpTeW1ib2xpY0xpbms7Ci0gICAgcmV0dXJuIEZpbGVNZXRh
ZGF0YTo6VHlwZTo6RmlsZTsKLX0KLQotc3RhdGljIE9wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmls
ZU1ldGFkYXRhVXNpbmdGdW5jdGlvbihjb25zdCBTdHJpbmcmIHBhdGgsIGJvb2wgKCpzdGF0RnVu
YykoY29uc3QgU3RyaW5nJiwgR1N0YXRCdWYqKSkKLXsKLSAgICBHU3RhdEJ1ZiBzdGF0UmVzdWx0
OwotICAgIGlmICghc3RhdEZ1bmMocGF0aCwgJnN0YXRSZXN1bHQpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwotCi0gICAgU3RyaW5nIGZpbGVuYW1lID0gcGF0aEdldEZpbGVOYW1lKHBh
dGgpOwotICAgIGJvb2wgaXNIaWRkZW4gPSAhZmlsZW5hbWUuaXNFbXB0eSgpICYmIGZpbGVuYW1l
WzBdID09ICcuJzsKLQotICAgIHJldHVybiBGaWxlTWV0YWRhdGEgewotICAgICAgICBXYWxsVGlt
ZTo6ZnJvbVJhd1NlY29uZHMoc3RhdFJlc3VsdC5zdF9tdGltZSksCi0gICAgICAgIHN0YXRSZXN1
bHQuc3Rfc2l6ZSwKLSAgICAgICAgaXNIaWRkZW4sCi0gICAgICAgIHRvRmlsZU1ldGF0YVR5cGUo
c3RhdFJlc3VsdCkKLSAgICB9OwotfQotCi1PcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRh
ZGF0YShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgcmV0dXJuIGZpbGVNZXRhZGF0YVVzaW5n
RnVuY3Rpb24ocGF0aCwgJmdldEZpbGVMU3RhdCk7Ci19Ci0KLU9wdGlvbmFsPEZpbGVNZXRhZGF0
YT4gZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3MoY29uc3QgU3RyaW5nJiBwYXRoKQotewot
ICAgIHJldHVybiBmaWxlTWV0YWRhdGFVc2luZ0Z1bmN0aW9uKHBhdGgsICZnZXRGaWxlU3RhdCk7
Ci19Ci0KLVN0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY29uc3QgU3RyaW5nJiBwYXRo
LCBjb25zdCBTdHJpbmcmIGNvbXBvbmVudCkKLXsKLSAgICBpZiAocGF0aC5lbmRzV2l0aChHX0RJ
Ul9TRVBBUkFUT1JfUykpCi0gICAgICAgIHJldHVybiBwYXRoICsgY29tcG9uZW50OwotICAgIHJl
dHVybiBwYXRoICsgR19ESVJfU0VQQVJBVE9SX1MgKyBjb21wb25lbnQ7Ci19Ci0KLVN0cmluZyBw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKFN0cmluZ1ZpZXcgcGF0aCwgY29uc3QgVmVjdG9yPFN0
cmluZ1ZpZXc+JiBjb21wb25lbnRzKQotewotICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAg
ICBidWlsZGVyLmFwcGVuZChwYXRoKTsKLSAgICBmb3IgKGF1dG8mIGNvbXBvbmVudCA6IGNvbXBv
bmVudHMpIHsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoR19ESVJfU0VQQVJBVE9SX1MpOwotICAg
ICAgICBidWlsZGVyLmFwcGVuZChjb21wb25lbnQpOwotICAgIH0KLSAgICByZXR1cm4gYnVpbGRl
ci50b1N0cmluZygpOwotfQotCi1ib29sIG1ha2VBbGxEaXJlY3Rvcmllcyhjb25zdCBTdHJpbmcm
IHBhdGgpCi17Ci0gICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxl
bmFtZShwYXRoKTsKLSAgICByZXR1cm4gZmlsZW5hbWUgPyBnX21rZGlyX3dpdGhfcGFyZW50cyhm
aWxlbmFtZS5nZXQoKSwgU19JUldYVSkgIT0gLTEgOiBmYWxzZTsKLX0KLQotU3RyaW5nIGhvbWVE
aXJlY3RvcnlQYXRoKCkKLXsKLSAgICByZXR1cm4gc3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihnX2dldF9ob21lX2RpcigpKTsKLX0KLQotYm9vbCBjcmVhdGVTeW1ib2xpY0xpbmso
Y29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGljTGlua1BhdGgp
Ci17Ci0gICAgQ1N0cmluZyB0YXJnZXRQYXRoRlNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24odGFyZ2V0UGF0aCk7Ci0gICAgaWYgKCF0YXJnZXRQYXRoRlNSZXAuZGF0YSgpIHx8IHRhcmdl
dFBhdGhGU1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgQ1N0cmluZyBzeW1ib2xpY0xpbmtQYXRoRlNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oc3ltYm9saWNMaW5rUGF0aCk7Ci0gICAgaWYgKCFzeW1ib2xpY0xpbmtQYXRoRlNSZXAuZGF0
YSgpIHx8IHN5bWJvbGljTGlua1BhdGhGU1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuICFzeW1saW5rKHRhcmdldFBhdGhGU1JlcC5kYXRh
KCksIHN5bWJvbGljTGlua1BhdGhGU1JlcC5kYXRhKCkpOwotfQotCi1TdHJpbmcgcGF0aEdldEZp
bGVOYW1lKGNvbnN0IFN0cmluZyYgcGF0aE5hbWUpCi17Ci0gICAgR1VuaXF1ZVB0cjxnY2hhcj4g
dG1wRmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShwYXRoTmFtZSk7Ci0gICAgaWYgKCF0bXBG
aWxlbmFtZSkKLSAgICAgICAgcmV0dXJuIHBhdGhOYW1lOwotCi0gICAgR1VuaXF1ZVB0cjxnY2hh
cj4gYmFzZU5hbWUoZ19wYXRoX2dldF9iYXNlbmFtZSh0bXBGaWxlbmFtZS5nZXQoKSkpOwotICAg
IHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGJhc2VOYW1lLmdldCgpKTsKLX0KLQotYm9vbCBnZXRW
b2x1bWVGcmVlU3BhY2UoY29uc3QgU3RyaW5nJiBwYXRoLCB1aW50NjRfdCYgZnJlZVNwYWNlKQot
ewotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUocGF0
aCk7Ci0gICAgaWYgKCFmaWxlbmFtZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgR1Jl
ZlB0cjxHRmlsZT4gZmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKGZpbGVuYW1l
LmdldCgpKSk7Ci0gICAgR1JlZlB0cjxHRmlsZUluZm8+IGZpbGVJbmZvID0gYWRvcHRHUmVmKGdf
ZmlsZV9xdWVyeV9maWxlc3lzdGVtX2luZm8oZmlsZS5nZXQoKSwgR19GSUxFX0FUVFJJQlVURV9G
SUxFU1lTVEVNX0ZSRUUsIDAsIDApKTsKLSAgICBpZiAoIWZpbGVJbmZvKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICBmcmVlU3BhY2UgPSBnX2ZpbGVfaW5mb19nZXRfYXR0cmlidXRlX3Vp
bnQ2NChmaWxlSW5mby5nZXQoKSwgR19GSUxFX0FUVFJJQlVURV9GSUxFU1lTVEVNX0ZSRUUpOwot
ICAgIHJldHVybiAhIWZyZWVTcGFjZTsKLX0KLQotU3RyaW5nIGRpcmVjdG9yeU5hbWUoY29uc3Qg
U3RyaW5nJiBwYXRoKQotewotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2Nh
cGVkRmlsZW5hbWUocGF0aCk7Ci0gICAgaWYgKCFmaWxlbmFtZSkKLSAgICAgICAgcmV0dXJuIFN0
cmluZygpOwotCi0gICAgR1VuaXF1ZVB0cjxjaGFyPiBkaXJuYW1lKGdfcGF0aF9nZXRfZGlybmFt
ZShmaWxlbmFtZS5nZXQoKSkpOwotICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGRpcm5hbWUu
Z2V0KCkpOwotfQotCi1WZWN0b3I8U3RyaW5nPiBsaXN0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYg
cGF0aCwgY29uc3QgU3RyaW5nJiBmaWx0ZXIpCi17Ci0gICAgVmVjdG9yPFN0cmluZz4gZW50cmll
czsKLQotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUo
cGF0aCk7Ci0gICAgaWYgKCFmaWxlbmFtZSkKLSAgICAgICAgcmV0dXJuIGVudHJpZXM7Ci0KLSAg
ICBHVW5pcXVlUHRyPEdEaXI+IGRpcihnX2Rpcl9vcGVuKGZpbGVuYW1lLmdldCgpLCAwLCBudWxs
cHRyKSk7Ci0gICAgaWYgKCFkaXIpCi0gICAgICAgIHJldHVybiBlbnRyaWVzOwotCi0gICAgR1Vu
aXF1ZVB0cjxHUGF0dGVyblNwZWM+IHBzcGVjKGdfcGF0dGVybl9zcGVjX25ldygoZmlsdGVyLnV0
ZjgoKSkuZGF0YSgpKSk7Ci0gICAgd2hpbGUgKGNvbnN0IGNoYXIqIG5hbWUgPSBnX2Rpcl9yZWFk
X25hbWUoZGlyLmdldCgpKSkgewotICAgICAgICBpZiAoIWdfcGF0dGVybl9tYXRjaF9zdHJpbmco
cHNwZWMuZ2V0KCksIG5hbWUpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgR1Vu
aXF1ZVB0cjxnY2hhcj4gZW50cnkoZ19idWlsZF9maWxlbmFtZShmaWxlbmFtZS5nZXQoKSwgbmFt
ZSwgbnVsbHB0cikpOwotICAgICAgICBlbnRyaWVzLmFwcGVuZChzdHJpbmdGcm9tRmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKGVudHJ5LmdldCgpKSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGVudHJp
ZXM7Ci19Ci0KLVN0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwg
UGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpCi17Ci0gICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmls
ZW5hbWUoZ19zdHJkdXBfcHJpbnRmKCIlcyVzIiwgcHJlZml4LnV0ZjgoKS5kYXRhKCksIGNyZWF0
ZUNhbm9uaWNhbFVVSURTdHJpbmcoKS51dGY4KCkuZGF0YSgpKSk7Ci0gICAgR1VuaXF1ZVB0cjxn
Y2hhcj4gdGVtcFBhdGgoZ19idWlsZF9maWxlbmFtZShnX2dldF90bXBfZGlyKCksIGZpbGVuYW1l
LmdldCgpLCBOVUxMKSk7Ci0gICAgR1JlZlB0cjxHRmlsZT4gZmlsZSA9IGFkb3B0R1JlZihnX2Zp
bGVfbmV3X2Zvcl9wYXRoKHRlbXBQYXRoLmdldCgpKSk7Ci0KLSAgICBoYW5kbGUgPSBnX2ZpbGVf
Y3JlYXRlX3JlYWR3cml0ZShmaWxlLmdldCgpLCBHX0ZJTEVfQ1JFQVRFX05PTkUsIDAsIDApOwot
ICAgIGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUpKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7
Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgodGVtcFBhdGguZ2V0KCkpOwotfQotCi1QbGF0
Zm9ybUZpbGVIYW5kbGUgb3BlbkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUg
bW9kZSkKLXsKLSAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVu
YW1lKHBhdGgpOwotICAgIGlmICghZmlsZW5hbWUpCi0gICAgICAgIHJldHVybiBpbnZhbGlkUGxh
dGZvcm1GaWxlSGFuZGxlOwotCi0gICAgR1JlZlB0cjxHRmlsZT4gZmlsZSA9IGFkb3B0R1JlZihn
X2ZpbGVfbmV3X2Zvcl9wYXRoKGZpbGVuYW1lLmdldCgpKSk7Ci0gICAgR0ZpbGVJT1N0cmVhbSog
aW9TdHJlYW0gPSAwOwotICAgIGlmIChtb2RlID09IEZpbGVPcGVuTW9kZTo6UmVhZCkKLSAgICAg
ICAgaW9TdHJlYW0gPSBnX2ZpbGVfb3Blbl9yZWFkd3JpdGUoZmlsZS5nZXQoKSwgMCwgMCk7Ci0g
ICAgZWxzZSBpZiAobW9kZSA9PSBGaWxlT3Blbk1vZGU6OldyaXRlKSB7Ci0gICAgICAgIGlmIChn
X2ZpbGVfdGVzdChmaWxlbmFtZS5nZXQoKSwgc3RhdGljX2Nhc3Q8R0ZpbGVUZXN0PihHX0ZJTEVf
VEVTVF9FWElTVFMgfCBHX0ZJTEVfVEVTVF9JU19SRUdVTEFSKSkpCi0gICAgICAgICAgICBpb1N0
cmVhbSA9IGdfZmlsZV9vcGVuX3JlYWR3cml0ZShmaWxlLmdldCgpLCAwLCAwKTsKLSAgICAgICAg
ZWxzZQotICAgICAgICAgICAgaW9TdHJlYW0gPSBnX2ZpbGVfY3JlYXRlX3JlYWR3cml0ZShmaWxl
LmdldCgpLCBHX0ZJTEVfQ1JFQVRFX05PTkUsIDAsIDApOwotICAgIH0KLQotICAgIHJldHVybiBp
b1N0cmVhbTsKLX0KLQotdm9pZCBjbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUp
Ci17Ci0gICAgaWYgKCFpc0hhbmRsZVZhbGlkKGhhbmRsZSkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGdfaW9fc3RyZWFtX2Nsb3NlKEdfSU9fU1RSRUFNKGhhbmRsZSksIDAsIDApOwotICAgIGdf
b2JqZWN0X3VucmVmKGhhbmRsZSk7Ci0gICAgaGFuZGxlID0gaW52YWxpZFBsYXRmb3JtRmlsZUhh
bmRsZTsKLX0KLQotbG9uZyBsb25nIHNlZWtGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUs
IGxvbmcgbG9uZyBvZmZzZXQsIEZpbGVTZWVrT3JpZ2luIG9yaWdpbikKLXsKLSAgICBHU2Vla1R5
cGUgc2Vla1R5cGUgPSBHX1NFRUtfU0VUOwotICAgIHN3aXRjaCAob3JpZ2luKSB7Ci0gICAgY2Fz
ZSBGaWxlU2Vla09yaWdpbjo6QmVnaW5uaW5nOgotICAgICAgICBzZWVrVHlwZSA9IEdfU0VFS19T
RVQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRmlsZVNlZWtPcmlnaW46OkN1cnJlbnQ6Ci0g
ICAgICAgIHNlZWtUeXBlID0gR19TRUVLX0NVUjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBG
aWxlU2Vla09yaWdpbjo6RW5kOgotICAgICAgICBzZWVrVHlwZSA9IEdfU0VFS19FTkQ7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgIH0KLQotICAgIGlmICghZ19zZWVrYWJsZV9zZWVrKEdfU0VFS0FCTEUoZ19pb19zdHJlYW1f
Z2V0X2lucHV0X3N0cmVhbShHX0lPX1NUUkVBTShoYW5kbGUpKSksCi0gICAgICAgIG9mZnNldCwg
c2Vla1R5cGUsIDAsIDApKQotICAgIHsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBy
ZXR1cm4gZ19zZWVrYWJsZV90ZWxsKEdfU0VFS0FCTEUoZ19pb19zdHJlYW1fZ2V0X2lucHV0X3N0
cmVhbShHX0lPX1NUUkVBTShoYW5kbGUpKSkpOwotfQotCi1pbnQgd3JpdGVUb0ZpbGUoUGxhdGZv
cm1GaWxlSGFuZGxlIGhhbmRsZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKLXsKLSAg
ICBnc2l6ZSBieXRlc1dyaXR0ZW47Ci0gICAgZ19vdXRwdXRfc3RyZWFtX3dyaXRlX2FsbChnX2lv
X3N0cmVhbV9nZXRfb3V0cHV0X3N0cmVhbShHX0lPX1NUUkVBTShoYW5kbGUpKSwKLSAgICAgICAg
ZGF0YSwgbGVuZ3RoLCAmYnl0ZXNXcml0dGVuLCAwLCAwKTsKLSAgICByZXR1cm4gYnl0ZXNXcml0
dGVuOwotfQotCi1pbnQgcmVhZEZyb21GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNo
YXIqIGRhdGEsIGludCBsZW5ndGgpCi17Ci0gICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9y
OwotICAgIGRvIHsKLSAgICAgICAgZ3NzaXplIGJ5dGVzUmVhZCA9IGdfaW5wdXRfc3RyZWFtX3Jl
YWQoZ19pb19zdHJlYW1fZ2V0X2lucHV0X3N0cmVhbShHX0lPX1NUUkVBTShoYW5kbGUpKSwKLSAg
ICAgICAgICAgIGRhdGEsIGxlbmd0aCwgMCwgJmVycm9yLm91dFB0cigpKTsKLSAgICAgICAgaWYg
KGJ5dGVzUmVhZCA+PSAwKQotICAgICAgICAgICAgcmV0dXJuIGJ5dGVzUmVhZDsKLSAgICB9IHdo
aWxlIChlcnJvciAmJiBlcnJvci0+Y29kZSA9PSBHX0ZJTEVfRVJST1JfSU5UUik7Ci0gICAgcmV0
dXJuIC0xOwotfQotCi1ib29sIG1vdmVGaWxlKGNvbnN0IFN0cmluZyYgb2xkUGF0aCwgY29uc3Qg
U3RyaW5nJiBuZXdQYXRoKQotewotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IG9sZEZpbGVuYW1lID0g
dW5lc2NhcGVkRmlsZW5hbWUob2xkUGF0aCk7Ci0gICAgaWYgKCFvbGRGaWxlbmFtZSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgR1VuaXF1ZVB0cjxnY2hhcj4gbmV3RmlsZW5hbWUgPSB1
bmVzY2FwZWRGaWxlbmFtZShuZXdQYXRoKTsKLSAgICBpZiAoIW5ld0ZpbGVuYW1lKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICBHUmVmUHRyPEdGaWxlPiBvbGRGaWxlID0gYWRvcHRHUmVm
KGdfZmlsZV9uZXdfZm9yX3BhdGgob2xkRmlsZW5hbWUuZ2V0KCkpKTsKLSAgICBHUmVmUHRyPEdG
aWxlPiBuZXdGaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgobmV3RmlsZW5hbWUu
Z2V0KCkpKTsKLQotICAgIHJldHVybiBnX2ZpbGVfbW92ZShvbGRGaWxlLmdldCgpLCBuZXdGaWxl
LmdldCgpLCBHX0ZJTEVfQ09QWV9PVkVSV1JJVEUsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIs
IG51bGxwdHIpOwotfQotCi1ib29sIGhhcmRMaW5rT3JDb3B5RmlsZShjb25zdCBTdHJpbmcmIHNv
dXJjZSwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbikKLXsKLSNpZiBPUyhXSU5ET1dTKQotICAg
IHJldHVybiAhITo6Q29weUZpbGUoc291cmNlLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9u
KCkuZGF0YSgpLCBkZXN0aW5hdGlvbi5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRh
dGEoKSwgVFJVRSk7Ci0jZWxzZQotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHNvdXJjZUZpbGVuYW1l
ID0gdW5lc2NhcGVkRmlsZW5hbWUoc291cmNlKTsKLSAgICBpZiAoIXNvdXJjZUZpbGVuYW1lKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBHVW5pcXVlUHRyPGdjaGFyPiBkZXN0aW5hdGlv
bkZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUoZGVzdGluYXRpb24pOwotICAgIGlmICghZGVz
dGluYXRpb25GaWxlbmFtZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFsaW5r
KHNvdXJjZUZpbGVuYW1lLmdldCgpLCBkZXN0aW5hdGlvbkZpbGVuYW1lLmdldCgpKSkKLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0KLSAgICAvLyBIYXJkIGxpbmsgZmFpbGVkLiBQZXJmb3JtIGEgY29w
eSBpbnN0ZWFkLgotICAgIEdSZWZQdHI8R0ZpbGU+IHNvdXJjZUZpbGUgPSBhZG9wdEdSZWYoZ19m
aWxlX25ld19mb3JfcGF0aChzb3VyY2VGaWxlbmFtZS5nZXQoKSkpOwotICAgIEdSZWZQdHI8R0Zp
bGU+IGRlc3RpbmF0aW9uRmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKGRlc3Rp
bmF0aW9uRmlsZW5hbWUuZ2V0KCkpKTsKLSAgICByZXR1cm4gZ19maWxlX2NvcHkoc291cmNlRmls
ZS5nZXQoKSwgZGVzdGluYXRpb25GaWxlLmdldCgpLCBHX0ZJTEVfQ09QWV9OT05FLCBudWxscHRy
LCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKTsKLSNlbmRpZgotfQotCi1PcHRpb25hbDxpbnQz
Ml90PiBnZXRGaWxlRGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQotewotICAgIEdVbmlx
dWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUoZnNGaWxlLmRhdGEoKSk7
Ci0gICAgaWYgKCFmaWxlbmFtZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAg
IEdSZWZQdHI8R0ZpbGU+IGZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0aChmaWxl
bmFtZS5nZXQoKSkpOwotICAgIEdSZWZQdHI8R0ZpbGVJbmZvPiBmaWxlSW5mbyA9IGFkb3B0R1Jl
ZihnX2ZpbGVfcXVlcnlfZmlsZXN5c3RlbV9pbmZvKGZpbGUuZ2V0KCksIEdfRklMRV9BVFRSSUJV
VEVfVU5JWF9ERVZJQ0UsIG51bGxwdHIsIG51bGxwdHIpKTsKLSAgICBpZiAoIWZpbGVJbmZvKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgcmV0dXJuIGdfZmlsZV9pbmZvX2dl
dF9hdHRyaWJ1dGVfdWludDMyKGZpbGVJbmZvLmdldCgpLCBHX0ZJTEVfQVRUUklCVVRFX1VOSVhf
REVWSUNFKTsKLX0KLQotI2lmIFVTRShGSUxFX0xPQ0spCi1ib29sIGxvY2tGaWxlKFBsYXRmb3Jt
RmlsZUhhbmRsZSBoYW5kbGUsIE9wdGlvblNldDxGaWxlTG9ja01vZGU+IGxvY2tNb2RlKQotewot
ICAgIENPTVBJTEVfQVNTRVJUKExPQ0tfU0ggPT0gV1RGOjplbnVtVG9VbmRlcmx5aW5nVHlwZShG
aWxlTG9ja01vZGU6OlNoYXJlZCksIExvY2tTaGFyZWRFbmNvZGluZ0lzQXNFeHBlY3RlZCk7Ci0g
ICAgQ09NUElMRV9BU1NFUlQoTE9DS19FWCA9PSBXVEY6OmVudW1Ub1VuZGVybHlpbmdUeXBlKEZp
bGVMb2NrTW9kZTo6RXhjbHVzaXZlKSwgTG9ja0V4Y2x1c2l2ZUVuY29kaW5nSXNBc0V4cGVjdGVk
KTsKLSAgICBDT01QSUxFX0FTU0VSVChMT0NLX05CID09IFdURjo6ZW51bVRvVW5kZXJseWluZ1R5
cGUoRmlsZUxvY2tNb2RlOjpOb25ibG9ja2luZyksIExvY2tOb25ibG9ja2luZ0VuY29kaW5nSXNB
c0V4cGVjdGVkKTsKLSAgICBhdXRvKiBpbnB1dFN0cmVhbSA9IGdfaW9fc3RyZWFtX2dldF9pbnB1
dF9zdHJlYW0oR19JT19TVFJFQU0oaGFuZGxlKSk7Ci0gICAgaW50IHJlc3VsdCA9IGZsb2NrKGdf
ZmlsZV9kZXNjcmlwdG9yX2Jhc2VkX2dldF9mZChHX0ZJTEVfREVTQ1JJUFRPUl9CQVNFRChpbnB1
dFN0cmVhbSkpLCBsb2NrTW9kZS50b1JhdygpKTsKLSAgICByZXR1cm4gcmVzdWx0ICE9IC0xOwot
fQotCi1ib29sIHVubG9ja0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSkKLXsKLSAgICBh
dXRvKiBpbnB1dFN0cmVhbSA9IGdfaW9fc3RyZWFtX2dldF9pbnB1dF9zdHJlYW0oR19JT19TVFJF
QU0oaGFuZGxlKSk7Ci0gICAgaW50IHJlc3VsdCA9IGZsb2NrKGdfZmlsZV9kZXNjcmlwdG9yX2Jh
c2VkX2dldF9mZChHX0ZJTEVfREVTQ1JJUFRPUl9CQVNFRChpbnB1dFN0cmVhbSkpLCBMT0NLX1VO
KTsKLSAgICByZXR1cm4gcmVzdWx0ICE9IC0xOwotfQotI2VuZGlmIC8vIFVTRShGSUxFX0xPQ0sp
Ci0KLX0gLy8gbmFtZXNwYWNlIEZpbGVTeXN0ZW0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwCmlu
ZGV4IGI0ODk2YzA4NTQ2MGU3YzBiZTU2NDA4NGVjODhlZjIyYWY2MGI4NDQuLmM3NDczNTc1MzA3
ZjZmN2RkNGE5ZjIzNjFhZWYyNWNhMzY5NzZlM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcApAQCAtMTksNyArMTksNiBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogCi0jaW5jbHVkZSAi
RmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNz
aW9uLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW0KaW5kZXggZThkZDNiNWFlYzgyOTNj
ZDVlZDk2ZTk4ZjEwMzVlZTUzZTI4YzdiNC4uMjRmOTVlODQ0MTM2N2UyMjE5Y2EyMjY0NDVlODYy
MjhmNTc5NDgyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vz
c2lvbkFWQ29udGVudEtleVNlc3Npb24ubW0KQEAgLTI5LDcgKzI5LDYgQEAKICNpZiBFTkFCTEUo
TEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKE1FRElBX1NPVVJDRSkKIAogI2ltcG9y
dCAiQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIgotI2ltcG9ydCAiRmlsZVN5c3RlbS5o
IgogI2ltcG9ydCAiTGVnYWN5Q0RNLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJN
ZWRpYVBsYXllci5oIgpAQCAtMzksNiArMzgsNyBAQAogI2ltcG9ydCA8Q29yZU1lZGlhL0NNQmFz
ZS5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvVHlwZWRBcnJheUlubGluZXMuaD4KICNpbXBv
cnQgPG9iamMvb2JqYy1ydW50aW1lLmg+CisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogI2lt
cG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CiAKIFNPRlRfTElOS19GUkFNRVdPUktfT1BUSU9OQUwo
QVZGb3VuZGF0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbi5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25B
VlN0cmVhbVNlc3Npb24ubW0KaW5kZXggOTkyOTQzMTVkODYyNDFiMTY4ZjI4YWE3MmVkZGUwZDk3
Y2Y0YTc4Yy4uYzM1NzNlNWM2MDgxYzk5YjE0MDRlMGU0MWM1MGUwNDllMjkxYTIyZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
Q0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLm1t
CkBAIC0yOSw3ICsyOSw2IEBACiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYm
IEVOQUJMRShNRURJQV9TT1VSQ0UpCiAKICNpbXBvcnQgIkNETVByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakMuaCIKLSNpbXBvcnQgIkZpbGVTeXN0ZW0uaCIKICNpbXBvcnQgIkxlZ2FjeUNETS5oIgog
I2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiTWVkaWFQbGF5ZXIuaCIKQEAgLTQwLDYgKzM5
LDcgQEAKICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL1R5cGVkQXJyYXlJbmxpbmVzLmg+CiAjaW1w
b3J0IDxvYmpjL29iamMtcnVudGltZS5oPgogI2ltcG9ydCA8cGFsL3NwaS9tYWMvQVZGb3VuZGF0
aW9uU1BJLmg+CisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8d3RmL1NvZnRM
aW5raW5nLmg+CiAjaW1wb3J0IDx3dGYvVVVJRC5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uTWVkaWFT
b3VyY2VBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5tbQppbmRleCAyY2IyZDZm
YTBjZDhlZmE0MjMxODkxYTA5ODE5ODNjOWI4YzA3N2U0Li5lYzU4Mzc4YThiZWI2YTU3NTNkMDJk
YTQ5ZmVkYWI2NmVlYjU5N2MyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0NETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMubW0KQEAgLTI5LDkgKzI5LDkgQEAKICNpZiBF
TkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKE1FRElBX1NPVVJDRSkKIAog
I2ltcG9ydCAiQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIgotI2ltcG9ydCAiRmlsZVN5
c3RlbS5oIgogI2ltcG9ydCAiV2ViQ29yZU5TRXJyb3JFeHRyYXMuaCIKICNpbXBvcnQgPEFWRm91
bmRhdGlvbi9BVkVycm9yLmg+CisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQppbmRleCA1ZTM2ZGQwMDY5
MzA3NTAxMTJiNzEzZmRjNGU1YWVhNGQxMGE5YzA5Li5kNmQ1ZTgyYjIzNzc2ZmQ2Mjc3ZTI5YjY5
ZGViNjYyOWY4YzkxOGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCkBAIC0zMSw3ICsz
MSw2IEBACiAjaW1wb3J0ICJBVkFzc2V0VHJhY2tVdGlsaXRpZXMuaCIKICNpbXBvcnQgIkFWRm91
bmRhdGlvbk1JTUVUeXBlQ2FjaGUuaCIKICNpbXBvcnQgIkNETVNlc3Npb25BVlN0cmVhbVNlc3Np
b24uaCIKLSNpbXBvcnQgIkZpbGVTeXN0ZW0uaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dENH
LmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJNZWRpYVNvdXJjZVByaXZhdGVBVkZP
YmpDLmgiCkBAIC00OSw2ICs0OCw3IEBACiAjaW1wb3J0IDxwYWwvYXZmb3VuZGF0aW9uL01lZGlh
VGltZUFWRm91bmRhdGlvbi5oPgogI2ltcG9ydCA8cGFsL3NwaS9tYWMvQVZGb3VuZGF0aW9uU1BJ
Lmg+CiAjaW1wb3J0IDx3dGYvRGVxdWUuaD4KKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAj
aW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5k
ZXggMGYwNWViOTE5OWRiZjNlNDllMWExMmUwNzU2NmVlYzQ4OTFkZTE3Ny4uNDE0MGMxMWIwZWE0
Nzk4ZTY2MGQ2NDk1ODBmZWNhYWQzYzI2ZDRjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lmIEVOQUJM
RShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikKIAotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNp
bmNsdWRlICJHU3RyZWFtZXJDb21tb24uaCIKICNpbmNsdWRlICJIVFRQSGVhZGVyTmFtZXMuaCIK
ICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCkBAIC00Miw2ICs0MSw3IEBACiAjaW5jbHVk
ZSA8Z3N0L2dzdC5oPgogI2luY2x1ZGUgPGdzdC9wYnV0aWxzL21pc3NpbmctcGx1Z2lucy5oPgog
I2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUg
PHd0Zi9IZXhOdW1iZXIuaD4KICNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+CiAjaW5jbHVkZSA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvUXVpY2tMb29rLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1F1aWNrTG9v
ay5tbQppbmRleCA3YmY5MWIyZmFkYzMxMmFiM2I3ZTg2MmE1ODM1MGVjNTQ4ZDAxYmI3Li5hOWQ5
ZTQ3MTA1MDE3ZDY0ZDgyZTM3YzhhYTMxY2U2NDY5MDI1Njg1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29rLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9RdWlja0xvb2subW0KQEAgLTI4LDEyICsyOCwxMiBAQAogCiAjaWYgVVNFKFFV
SUNLX0xPT0spCiAKLSNpbXBvcnQgIkZpbGVTeXN0ZW0uaCIKICNpbXBvcnQgIlByZXZpZXdDb252
ZXJ0ZXIuaCIKICNpbXBvcnQgIlJlc291cmNlUmVxdWVzdC5oIgogI2ltcG9ydCAiU2NoZW1lUmVn
aXN0cnkuaCIKICNpbXBvcnQgPHBhbC9pb3MvUXVpY2tMb29rU29mdExpbmsuaD4KICNpbXBvcnQg
PHBhbC9zcGkvY29jb2EvTlNGaWxlTWFuYWdlclNQSS5oPgorI2ltcG9ydCA8d3RmL0ZpbGVTeXN0
ZW0uaD4KICNpbXBvcnQgPHd0Zi9Mb2NrLmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92
aWRlclBhc3RlYm9hcmQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVBy
b3ZpZGVyUGFzdGVib2FyZC5tbQppbmRleCBiZjgyMTgzOTkxNWU4MGQ1ODk5YTk0ODk5OWYyZjAy
MDZkOGNmZjNhLi4zNTQ1ZDdlZmNhYzg2NzY0OGY0OWE0NzRlOGEwMjBiNTFjODhkNGRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVi
b2FyZC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVy
UGFzdGVib2FyZC5tbQpAQCAtMzQsMTEgKzM0LDExIEBACiAjaW1wb3J0IDxVSUtpdC9OU0l0ZW1Q
cm92aWRlcitVSUtpdEFkZGl0aW9ucy5oPgogI2ltcG9ydCA8VUlLaXQvVUlDb2xvci5oPgogI2lt
cG9ydCA8VUlLaXQvVUlJbWFnZS5oPgotI2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1Bhc3RlYm9hcmQuaD4KICNpbXBvcnQgPHBhbC9pb3MvVUlLaXRTb2Z0
TGluay5oPgogI2ltcG9ydCA8cGFsL3NwaS9pb3MvVUlLaXRTUEkuaD4KICNpbXBvcnQgPHd0Zi9C
bG9ja1B0ci5oPgorI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0Zi9PU09i
amVjdFB0ci5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCkBAIC02OTQsNyArNjk0LDcg
QEAgc3RhdGljIE5TVVJMICpsaW5rVGVtcG9yYXJ5SXRlbVByb3ZpZGVyRmlsZXNUb0Ryb3BTdGFn
aW5nRGlyZWN0b3J5KE5TVVJMICp1cmwsIE4KICAgICBpZiAoIXVybCkKICAgICAgICAgcmV0dXJu
IG5pbDsKIAotICAgIE5TU3RyaW5nICp0ZW1wb3JhcnlEYXRhSW50ZXJhY3Rpb25EaXJlY3Rvcnkg
PSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoZGF0YUludGVy
YWN0aW9uRGlyZWN0b3J5UHJlZml4KTsKKyAgICBOU1N0cmluZyAqdGVtcG9yYXJ5RGF0YUludGVy
YWN0aW9uRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KGRh
dGFJbnRlcmFjdGlvbkRpcmVjdG9yeVByZWZpeCk7CiAgICAgaWYgKCF0ZW1wb3JhcnlEYXRhSW50
ZXJhY3Rpb25EaXJlY3RvcnkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9GaWxlU3lzdGVtTWFjLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL0ZpbGVTeXN0ZW1NYWMubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDhlZDc1MWE3ZWMwZTVkMGJhZjc3NGY5ODYxMGFjYjA0NWNkMmIwMDQuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL0ZpbGVTeXN0ZW1NYWMubW0KKysrIC9kZXYvbnVsbApAQCAtMSw4OCArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkZpbGVTeXN0
ZW0uaCIKLQotI2lmIFBMQVRGT1JNKE1BQykKLQotI2ltcG9ydCA8cGFsL3NwaS9tYWMvTWV0YWRh
dGFTUEkuaD4KLSNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oPgotI2ltcG9ydCA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotYm9vbCBGaWxlU3lz
dGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgYXV0
byBmaWxlTWFuYWdlciA9IGFkb3B0TlMoW1tOU0ZpbGVNYW5hZ2VyIGFsbG9jXSBpbml0XSk7Ci0K
LSAgICBpZiAoTlNBcnJheSAqZGlyZWN0b3J5Q29udGVudHMgPSBbZmlsZU1hbmFnZXIgY29udGVu
dHNPZkRpcmVjdG9yeUF0UGF0aDpwYXRoIGVycm9yOm51bGxwdHJdKSB7Ci0gICAgICAgIC8vIEV4
cGxpY2l0bHkgbG9vayBmb3IgYW5kIGRlbGV0ZSAuRFNfU3RvcmUgZmlsZXMuCi0gICAgICAgIGlm
IChkaXJlY3RvcnlDb250ZW50cy5jb3VudCA9PSAxICYmIFtkaXJlY3RvcnlDb250ZW50cy5maXJz
dE9iamVjdCBpc0VxdWFsVG9TdHJpbmc6QCIuRFNfU3RvcmUiXSkKLSAgICAgICAgICAgIFtmaWxl
TWFuYWdlciByZW1vdmVJdGVtQXRQYXRoOltwYXRoIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBv
bmVudDpkaXJlY3RvcnlDb250ZW50cy5maXJzdE9iamVjdF0gZXJyb3I6bnVsbHB0cl07Ci0gICAg
fQotCi0gICAgLy8gcm1kaXIoLi4uKSByZXR1cm5zIDAgb24gc3VjY2Vzc2Z1bCBkZWxldGlvbiBv
ZiB0aGUgcGF0aCBhbmQgbm9uLXplcm8gaW4gYW55IG90aGVyIGNhc2UgKGluY2x1ZGluZyBpbnZh
bGlkIHBlcm1pc3Npb25zIG9yIG5vbi1leGlzdGVudCBmaWxlKQotICAgIHJldHVybiAhcm1kaXIo
RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSk7Ci19Ci0K
LXZvaWQgRmlsZVN5c3RlbTo6c2V0TWV0YWRhdGFVUkwoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25z
dCBTdHJpbmcmIG1ldGFkYXRhVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKQotewot
ICAgIFN0cmluZyB1cmxTdHJpbmc7Ci0gICAgaWYgKE5TVVJMICp1cmwgPSBVUkxXaXRoVXNlclR5
cGVkU3RyaW5nKG1ldGFkYXRhVVJMU3RyaW5nLCBuaWwpKQotICAgICAgICB1cmxTdHJpbmcgPSBX
VEY6OnVzZXJWaXNpYmxlU3RyaW5nKFdURjo6VVJMQnlSZW1vdmluZ1VzZXJJbmZvKHVybCkpOwot
ICAgIGVsc2UKLSAgICAgICAgdXJsU3RyaW5nID0gbWV0YWRhdGFVUkxTdHJpbmc7Ci0KLSAgICAv
LyBDYWxsIE1ldGFkYXRhIEFQSSBvbiBhIGJhY2tncm91bmQgcXVldWUgYmVjYXVzZSBpdCBjYW4g
dGFrZSBzb21lIHRpbWUuCi0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X2dsb2JhbF9x
dWV1ZShESVNQQVRDSF9RVUVVRV9QUklPUklUWV9ERUZBVUxULCAwKSwgW3BhdGggPSBwYXRoLmlz
b2xhdGVkQ29weSgpLCB1cmxTdHJpbmcgPSB1cmxTdHJpbmcuaXNvbGF0ZWRDb3B5KCksIHJlZmVy
cmVyID0gcmVmZXJyZXIuaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAgYXV0byBpdGVtID0gYWRv
cHRDRihNREl0ZW1DcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcGF0aC5jcmVhdGVDRlN0cmlu
ZygpLmdldCgpKSk7Ci0gICAgICAgIGlmICghaXRlbSkKLSAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICBhdXRvIHdoZXJlRnJvbUF0dHJpYnV0ZSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJh
eSBhbGxvY10gaW5pdFdpdGhPYmplY3RzOnVybFN0cmluZywgbmlsXSk7Ci0gICAgICAgIGlmICgh
cmVmZXJyZXIuaXNOdWxsKCkpCi0gICAgICAgICAgICBbd2hlcmVGcm9tQXR0cmlidXRlIGFkZE9i
amVjdDpyZWZlcnJlcl07Ci0KLSAgICAgICAgTURJdGVtU2V0QXR0cmlidXRlKGl0ZW0uZ2V0KCks
IGtNREl0ZW1XaGVyZUZyb21zLCAoX19icmlkZ2UgQ0ZBcnJheVJlZil3aGVyZUZyb21BdHRyaWJ1
dGUuZ2V0KCkpOwotICAgICAgICBNREl0ZW1TZXRBdHRyaWJ1dGUoaXRlbS5nZXQoKSwga01ESXRl
bURvd25sb2FkZWREYXRlLCAoX19icmlkZ2UgQ0ZBcnJheVJlZilAWyBbTlNEYXRlIGRhdGVdIF0p
OwotICAgIH0pOwotfQotCi1ib29sIEZpbGVTeXN0ZW06OmNhbkV4Y2x1ZGVGcm9tQmFja3VwKCkK
LXsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBGaWxlU3lzdGVtOjpleGNsdWRlRnJvbUJh
Y2t1cChjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgLy8gSXQgaXMgY3JpdGljYWwgdG8gcGFz
cyBGQUxTRSBmb3IgZXhjbHVkZUJ5UGF0aCBiZWNhdXNlIGV4Y2x1ZGluZyBieSBwYXRoIHJlcXVp
cmVzIHJvb3QgcHJpdmlsZWdlcy4KLSAgICBDU0JhY2t1cFNldEl0ZW1FeGNsdWRlZChGaWxlU3lz
dGVtOjpwYXRoQXNVUkwocGF0aCkuZ2V0KCksIFRSVUUsIEZBTFNFKTsKLSAgICByZXR1cm4gdHJ1
ZTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gUExBVEZPUk0oTUFD
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2Nv
YS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29h
Lm1tCmluZGV4IGQ3ZTNmMzlhNjdiMzczYjgzODc5Yzg0MDljNThiMDg5OGQzNDc5ZWMuLmQ3OWUy
ZjYwYzYwOTQwM2FiZGZjMDJhZWJmNzBhMjZiY2NkZjJmM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KQEAgLTI5LDEzICsyOSwx
MyBAQAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShBVkZPVU5EQVRJT04pCiAKICNp
bmNsdWRlICJBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5o
IgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbVRyYWNrUHJpdmF0
ZS5oIgogI2luY2x1ZGUgIldlYkF1ZGlvQnVmZmVyTGlzdC5oIgogI2luY2x1ZGUgPEFWRm91bmRh
dGlvbi9BVkFzc2V0V3JpdGVyLmg+CiAjaW5jbHVkZSA8QVZGb3VuZGF0aW9uL0FWQXNzZXRXcml0
ZXJJbnB1dC5oPgogI2luY2x1ZGUgPHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oPgorI2luY2x1
ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKIHR5cGVkZWYgQVZBc3NldFdyaXRlciBBVkFzc2V0V3Jp
dGVyVHlwZTsKIHR5cGVkZWYgQVZBc3NldFdyaXRlcklucHV0IEFWQXNzZXRXcml0ZXJJbnB1dFR5
cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRh
RmlsZVJlZmVyZW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JE
YXRhRmlsZVJlZmVyZW5jZS5jcHAKaW5kZXggYjYzZjA2MTJhYmZjYjg2NmRhMGNlZDBhMjM1ZGMx
NTU5M2ZmMDVlZC4uNWFiZmQ3NWNiNDk0NTZlNDJkMzlkNDRkM2JjMjI1OWFhZmZhNTIyNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZl
cmVuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFG
aWxlUmVmZXJlbmNlLmNwcApAQCAtMjcsOCArMjcsOCBAQAogI2luY2x1ZGUgIkJsb2JEYXRhRmls
ZVJlZmVyZW5jZS5oIgogCiAjaW5jbHVkZSAiRmlsZS5oIgotI2luY2x1ZGUgIkZpbGVNZXRhZGF0
YS5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlIDx3dGYvRmlsZU1ldGFkYXRh
Lmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3Ry
eUltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJ
bXBsLmNwcAppbmRleCA4MGI0MWU5NzVlNGQ2MTQzYWY0Yzk5NjExNzU0N2JiODkyZWRhMzE4Li4x
YzcwNmFhMzQ2Y2FkZGVhMzllNTAwZDgwMzA0Y2Q0OTRiZDgyNjgxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAKQEAgLTM1
LDEzICszNSwxMyBAQAogI2luY2x1ZGUgIkJsb2JEYXRhLmgiCiAjaW5jbHVkZSAiQmxvYlBhcnQu
aCIKICNpbmNsdWRlICJCbG9iUmVzb3VyY2VIYW5kbGUuaCIKLSNpbmNsdWRlICJGaWxlTWV0YWRh
dGEuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5o
IgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0
LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0
aW9uSGFuZGxlci5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlTWV0YWRhdGEuaD4KKyNpbmNsdWRlIDx3
dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1Njb3BlLmg+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAK
aW5kZXggYzk0ZTM5NDk0YjhlMzI2ZGI0YTEyYTI3MjAxYTQ2MjM4ZGUxOGM0Yi4uY2M2N2NlNjg4
ZjNiY2EyMjI2OTBiNDNmMTA1ODc4YmE5ZTNjMjhmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcApAQCAtMzUsMTkg
KzM1LDE5IEBACiAjaW5jbHVkZSAiQXN5bmNGaWxlU3RyZWFtLmgiCiAjaW5jbHVkZSAiQmxvYkRh
dGEuaCIKICNpbmNsdWRlICJGaWxlU3RyZWFtLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgog
I2luY2x1ZGUgIkhUVFBIZWFkZXJOYW1lcy5oIgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCiAj
aW5jbHVkZSAiUGFyc2VkQ29udGVudFJhbmdlLmgiCi0jaW5jbHVkZSA8d3RmL1VSTC5oPgogI2lu
Y2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZUNsaWVudC5o
IgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9u
c2UuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlv
bkhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9N
YWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvRm9ybURhdGEuY3BwCmluZGV4IDU0ZTRhYzA0OTYyYTIyMTkwN2UzYjdkODBhNGZiYWNiZTI1
NGIzOTkuLjdiNzZhNWVlZGU5OWY5NDljODFlNjljZmUxYmRiYjg5NmNjYzI2N2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCkBAIC0yOSwxMiArMjks
MTIgQEAKICNpbmNsdWRlICJET01Gb3JtRGF0YS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAj
aW5jbHVkZSAiRmlsZS5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJGb3Jt
RGF0YUJ1aWxkZXIuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVy
LmgiCiAjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUJsb2JS
ZWdpc3RyeS5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvTGluZUVuZGluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNw
cAppbmRleCA5ZTJkODgxZDYzNTQ5MTUyNWQ3MWFmNDU2YzJkMTk1ZmQxM2I5NGQ2Li5hNzRhZTVh
YWM5Y2IyNjIzZGM5Y2E1YThhYTQwYWMzNDAyMTJmMmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAK
QEAgLTMwLDExICszMCwxMSBAQAogI2luY2x1ZGUgIkZvcm1EYXRhU3RyZWFtQ0ZOZXQuaCIKIAog
I2luY2x1ZGUgIkJsb2JEYXRhLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUg
IkZvcm1EYXRhLmgiCiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KICNpbmNsdWRlIDxzeXMvdHlwZXMu
aD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVt
Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5o
PgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tCmlu
ZGV4IDI3ZmY5ZDFjYThlZmExZmRkNmVkZjI4ODY0ODY0Nzk0OWY4ODFhOTYuLjJmZWMxZjM4MzRl
NDExNmExZGQ0Y2ViMWY2MzI4OThkNWVjZTE0MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5t
bQpAQCAtMjgsMTMgKzI4LDEzIEBACiAKICNpZiBQTEFURk9STShDT0NPQSkKIAotI2ltcG9ydCAi
RmlsZVN5c3RlbS5oIgogI2ltcG9ydCAiRm9ybURhdGFTdHJlYW1NYWMuaCIKICNpbXBvcnQgIkhU
VFBIZWFkZXJOYW1lcy5oIgogI2ltcG9ydCAiUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaCIKICNpbXBv
cnQgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIgogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3Vu
ZGF0aW9uLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oPgorI2ltcG9ydCA8
d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0Nvb2tpZUphckRCLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9Db29raWVKYXJEQi5jcHAKaW5kZXggYzIzZmQ3MmYxOTE3MTAyMDgyZTEyMWU0NGQ1OGVk
ZDhhMzJkMWU3MS4uMjYzNjIyODhiODY5ZDhjN2JiMzQxN2Y3NmY0MGI2M2NjNTdmN2E3OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRC
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFy
REIuY3BwCkBAIC0yNiwxMCArMjYsOSBAQAogI2luY2x1ZGUgIkNvb2tpZUphckRCLmgiCiAKICNp
bmNsdWRlICJDb29raWVVdGlsLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKICNpbmNsdWRlICJTUUxpdGVGaWxlU3lzdGVtLmgiCi0KKyNpbmNsdWRlIDx3
dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+CiAjaW5jbHVk
ZSA8d3RmL1VSTC5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5oCmluZGV4IGNiYzQ1ZmVkMmI2MzhlYTYyZDkxMmVjN2Vk
MmQ2NjE0M2I4ZjlkNmIuLjExMDI3Y2UzYjNjZjYzODhmOTk1NGFhZjQ5YzQ5MDNmZTkzZmRmZjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2Fj
aGVFbnRyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
Q2FjaGVFbnRyeS5oCkBAIC0yNiwxMSArMjYsMTEgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNs
dWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiSFRUUEhlYWRlck1hcC5oIgogI2luY2x1ZGUg
IlJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVk
ZSAiUmVzb3VyY2VSZXNwb25zZS5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUg
PHd0Zi9MaXN0SGFzaFNldC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCmluZGV4IDQzYmMyZTdiZmZmNGY5
YmQ2ZjcxMDI4NWQ2ZDNkODYzMWJiNzc4M2EuLmZhNWM4ZDJkMjFiNjI3MzgxNWQwMjNhNGYyMDQ1
NTAxNmU5NjM4YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAKQEAgLTMwLDEyICszMCwxMiBAQAogCiAj
aW5jbHVkZSAiQ3VybENhY2hlTWFuYWdlci5oIgogCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgog
I2luY2x1ZGUgIkhUVFBIZWFkZXJNYXAuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVk
ZSAiUmVzb3VyY2VIYW5kbGVDbGllbnQuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZUludGVy
bmFsLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVT
eXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRm9ybURhdGFTdHJlYW0uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRm9ybURhdGFTdHJlYW0u
aAppbmRleCBjOGVmMzMzZTBkOGMwZTAyOGVjZDhhNDZkODI2YjkwNjcxYTAwZTBjLi4wOWU3ZmRi
YjRhMmNmYWI0YjkwNzMyZjA2MTE0YmUwODExM2JiNTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybEZvcm1EYXRhU3RyZWFtLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxGb3JtRGF0YVN0cmVhbS5oCkBA
IC0yNiw4ICsyNiw4IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5o
IgogI2luY2x1ZGUgIkZvcm1EYXRhLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmgKaW5kZXggZmRj
NGI1OTBjMTQyY2Y2ZGM5ODA3N2Q5Zjc1ZDc4NjU2MzYxOTY5ZC4uOTNjYTYxMDNmZTYzZDVmZjAz
MTA1NWM4MjVkODAyODI3NjRhZWRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmgKQEAgLTMyLDEwICszMiwxMCBAQAogI2luY2x1
ZGUgIkN1cmxSZXF1ZXN0U2NoZWR1bGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ3VybFJlc3BvbnNl
LmgiCiAjaW5jbHVkZSAiQ3VybFNTTFZlcmlmaWVyLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5o
IgogI2luY2x1ZGUgIk5ldHdvcmtMb2FkTWV0cmljcy5oIgogI2luY2x1ZGUgIlByb3RlY3Rpb25T
cGFjZS5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgorI2luY2x1ZGUgPHd0Zi9GaWxl
U3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL01lc3NhZ2VRdWV1ZS5oPgogI2luY2x1ZGUgPHd0Zi9N
b25vdG9uaWNUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29y
a1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAKaW5kZXggYTM0MmVjNWYwYTU1MjExYWI3MzQ3ZTQxMTNl
MzE3MjVhYzQwYjJmZC4uMDViNTY3MjMyYmJkNjZmMGJkMDcxZGRiOGEwZjBjZGFmZjZlZmFhOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtT
dG9yYWdlU2Vzc2lvbkN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcApAQCAtMzMsMTAgKzMzLDkgQEAK
ICNpbmNsdWRlICJDb29raWVKYXJEQi5oIgogI2luY2x1ZGUgIkNvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFByb3h5LmgiCiAjaW5jbHVkZSAiQ3VybENvbnRleHQuaCIKLSNpbmNsdWRlICJGaWxlU3lz
dGVtLmgiCiAjaW5jbHVkZSAiTmV0d29ya2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJSZXNvdXJj
ZUhhbmRsZS5oIgotCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYv
TWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKaW5kZXggZTUxZTdhYmYwYTA1NWEwOGQ4
Zjk1OGY1YjFlZjFjYTI2NGE4YjcyNi4uN2JlMDBhZDM0YjhlNTk4ODJkZTBmNTEzYjZjMmRkZjkw
MTFmOTllMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKQEAgLTM4LDcgKzM4LDYgQEAKICNpbmNs
dWRlICJDdXJsQ2FjaGVNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiQ3VybENvbnRleHQuaCIKICNpbmNs
dWRlICJDdXJsUmVxdWVzdC5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJI
VFRQUGFyc2Vycy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3JrU3Rv
cmFnZVNlc3Npb24uaCIKQEAgLTQ4LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJTeW5jaHJvbm91c0xv
YWRlckNsaWVudC5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgogI2luY2x1ZGUgPHd0Zi9D
b21wbGV0aW9uSGFuZGxlci5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvQmFzZTY0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Jsb2JEYXRhRmlsZVJlZmVyZW5j
ZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Jsb2JEYXRhRmls
ZVJlZmVyZW5jZU1hYy5tbQppbmRleCBmY2Y1NWQ3NmVhNDVlYmIwNjcwNDNlY2RmYzhjZjA4Y2M5
MjQ2YTI5Li5iNjkyOTIwYjIxZmM2NjM5ZDU3NDVkMWMwNDRlOGI3ODc4MjM1MGQwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9CbG9iRGF0YUZpbGVSZWZl
cmVuY2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQmxv
YkRhdGFGaWxlUmVmZXJlbmNlTWFjLm1tCkBAIC0yOCw4ICsyOCw4IEBACiAKICNpZiBFTkFCTEUo
RklMRV9SRVBMQUNFTUVOVCkKIAotI2luY2x1ZGUgIkZpbGVNZXRhZGF0YS5oIgotI2luY2x1ZGUg
IkZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlIDx3dGYvRmlsZU1ldGFkYXRhLmg+CisjaW5jbHVkZSA8
d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvU29mdExpbmtpbmcuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKaW5kZXggNjM3MzRj
Njc0YzUyZWU5NWRjNmM5ZTQyMWM0NjYwZjQxODQwMGJhYS4uMDgxNWVhNjg4ZTc2NjkyN2U2NjNk
NDA1NjE0OWRiZDM2OGU2NDZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKQEAgLTMyLDcgKzMy
LDYgQEAKICNpZiBVU0UoU09VUCkKIAogI2luY2x1ZGUgIkNyZWRlbnRpYWxTdG9yYWdlLmgiCi0j
aW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkdVbmlxdWVQdHJTb3VwLmgiCiAjaW5j
bHVkZSAiSFRUUFBhcnNlcnMuaCIKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCkBAIC01
Nyw2ICs1Niw3IEBACiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAjZW5kaWYKICNpbmNsdWRlIDx3dGYv
Q29tcGxldGlvbkhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1
ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9SdW5Mb29wU291cmNl
UHJpb3JpdHkuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Np
b24uY3BwCmluZGV4IDM0M2ZhZWI5ZmViMjE5NGNjYzNlZjc3OWQ3N2QzZjZiNGQxZWRjODcuLmI5
Njc3OTU5ODBlZThmYTRjOTk1MDBmZmRmMzRiNDIwMmViMmEyZGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Np
b24uY3BwCkBAIC0zMCwxMyArMzAsMTMgQEAKICNpbmNsdWRlICJTb3VwTmV0d29ya1Nlc3Npb24u
aCIKIAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgiCi0jaW5jbHVkZSAiRmls
ZVN5c3RlbS5oIgogI2luY2x1ZGUgIkdVbmlxdWVQdHJTb3VwLmgiCiAjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgogI2luY2x1ZGUgIlNvdXBOZXR3b3JrUHJveHlTZXR0aW5ncy5oIgogI2luY2x1ZGUgPGds
aWIvZ3N0ZGlvLmg+CiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+CiAjaW5jbHVkZSA8cGFsL2Ny
eXB0by9DcnlwdG9EaWdlc3QuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1
ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
cG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
OTQ4NTEzNTI1MThkNjA2YmVhMjVlZWVhMzM2MTg1MjgwMzM0Y2ZjYy4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9w
b3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDkzICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgot
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBs
ZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICog
ICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
LSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgotCi0jaW5jbHVkZSAiRmls
ZU1ldGFkYXRhLmgiCi0jaW5jbHVkZSA8ZGlyZW50Lmg+Ci0jaW5jbHVkZSA8ZXJybm8uaD4KLSNp
bmNsdWRlIDxmY250bC5oPgotI2luY2x1ZGUgPGZubWF0Y2guaD4KLSNpbmNsdWRlIDxsaWJnZW4u
aD4KLSNpbmNsdWRlIDxzdGRpby5oPgotI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0jaW5jbHVkZSA8
c3lzL3N0YXR2ZnMuaD4KLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpbmNsdWRlIDx1bmlzdGQu
aD4KLSNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+Ci0jaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIEZp
bGVTeXN0ZW0gewotCi1ib29sIGZpbGVFeGlzdHMoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAg
IGlmIChwYXRoLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBDU3RyaW5n
IGZzUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwotCi0gICAgaWYgKCFmc1Jl
cC5kYXRhKCkgfHwgZnNSZXAuZGF0YSgpWzBdID09ICdcMCcpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIHJldHVybiBhY2Nlc3MoZnNSZXAuZGF0YSgpLCBGX09LKSAhPSAtMTsKLX0KLQot
Ym9vbCBkZWxldGVGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBDU3RyaW5nIGZzUmVw
ID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwotCi0gICAgaWYgKCFmc1JlcC5kYXRh
KCkgfHwgZnNSZXAuZGF0YSgpWzBdID09ICdcMCcpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQot
ICAgIC8vIHVubGluayguLi4pIHJldHVybnMgMCBvbiBzdWNjZXNzZnVsIGRlbGV0aW9uIG9mIHRo
ZSBwYXRoIGFuZCBub24temVybyBpbiBhbnkgb3RoZXIgY2FzZSAoaW5jbHVkaW5nIGludmFsaWQg
cGVybWlzc2lvbnMgb3Igbm9uLWV4aXN0ZW50IGZpbGUpCi0gICAgcmV0dXJuICF1bmxpbmsoZnNS
ZXAuZGF0YSgpKTsKLX0KLQotUGxhdGZvcm1GaWxlSGFuZGxlIG9wZW5GaWxlKGNvbnN0IFN0cmlu
ZyYgcGF0aCwgRmlsZU9wZW5Nb2RlIG1vZGUpCi17Ci0gICAgQ1N0cmluZyBmc1JlcCA9IGZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKLQotICAgIGlmIChmc1JlcC5pc051bGwoKSkKLSAg
ICAgICAgcmV0dXJuIGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7Ci0KLSAgICBpbnQgcGxhdGZv
cm1GbGFnID0gMDsKLSAgICBpZiAobW9kZSA9PSBGaWxlT3Blbk1vZGU6OlJlYWQpCi0gICAgICAg
IHBsYXRmb3JtRmxhZyB8PSBPX1JET05MWTsKLSAgICBlbHNlIGlmIChtb2RlID09IEZpbGVPcGVu
TW9kZTo6V3JpdGUpCi0gICAgICAgIHBsYXRmb3JtRmxhZyB8PSAoT19XUk9OTFkgfCBPX0NSRUFU
IHwgT19UUlVOQyk7Ci0jaWYgT1MoREFSV0lOKQotICAgIGVsc2UgaWYgKG1vZGUgPT0gRmlsZU9w
ZW5Nb2RlOjpFdmVudHNPbmx5KQotICAgICAgICBwbGF0Zm9ybUZsYWcgfD0gT19FVlRPTkxZOwot
I2VuZGlmCi0KLSAgICByZXR1cm4gb3Blbihmc1JlcC5kYXRhKCksIHBsYXRmb3JtRmxhZywgMDY2
Nik7Ci19Ci0KLXZvaWQgY2xvc2VGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKQotewot
ICAgIGlmIChpc0hhbmRsZVZhbGlkKGhhbmRsZSkpIHsKLSAgICAgICAgY2xvc2UoaGFuZGxlKTsK
LSAgICAgICAgaGFuZGxlID0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKLSAgICB9Ci19Ci0K
LWxvbmcgbG9uZyBzZWVrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBsb25nIGxvbmcg
b2Zmc2V0LCBGaWxlU2Vla09yaWdpbiBvcmlnaW4pCi17Ci0gICAgaW50IHdoZW5jZSA9IFNFRUtf
U0VUOwotICAgIHN3aXRjaCAob3JpZ2luKSB7Ci0gICAgY2FzZSBGaWxlU2Vla09yaWdpbjo6QmVn
aW5uaW5nOgotICAgICAgICB3aGVuY2UgPSBTRUVLX1NFVDsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBGaWxlU2Vla09yaWdpbjo6Q3VycmVudDoKLSAgICAgICAgd2hlbmNlID0gU0VFS19DVVI7
Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRmlsZVNlZWtPcmlnaW46OkVuZDoKLSAgICAgICAg
d2hlbmNlID0gU0VFS19FTkQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8bG9u
ZyBsb25nPihsc2VlayhoYW5kbGUsIG9mZnNldCwgd2hlbmNlKSk7Ci19Ci0KLWJvb2wgdHJ1bmNh
dGVGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQpCi17Ci0g
ICAgLy8gZnRydW5jYXRlIHJldHVybnMgMCB0byBpbmRpY2F0ZSB0aGUgc3VjY2Vzcy4KLSAgICBy
ZXR1cm4gIWZ0cnVuY2F0ZShoYW5kbGUsIG9mZnNldCk7Ci19Ci0KLWludCB3cml0ZVRvRmlsZShQ
bGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQot
ewotICAgIGRvIHsKLSAgICAgICAgaW50IGJ5dGVzV3JpdHRlbiA9IHdyaXRlKGhhbmRsZSwgZGF0
YSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5ndGgpKTsKLSAgICAgICAgaWYgKGJ5dGVzV3JpdHRl
biA+PSAwKQotICAgICAgICAgICAgcmV0dXJuIGJ5dGVzV3JpdHRlbjsKLSAgICB9IHdoaWxlIChl
cnJubyA9PSBFSU5UUik7Ci0gICAgcmV0dXJuIC0xOwotfQotCi1pbnQgcmVhZEZyb21GaWxlKFBs
YXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCi17Ci0gICAg
ZG8gewotICAgICAgICBpbnQgYnl0ZXNSZWFkID0gcmVhZChoYW5kbGUsIGRhdGEsIHN0YXRpY19j
YXN0PHNpemVfdD4obGVuZ3RoKSk7Ci0gICAgICAgIGlmIChieXRlc1JlYWQgPj0gMCkKLSAgICAg
ICAgICAgIHJldHVybiBieXRlc1JlYWQ7Ci0gICAgfSB3aGlsZSAoZXJybm8gPT0gRUlOVFIpOwot
ICAgIHJldHVybiAtMTsKLX0KLQotI2lmIFVTRShGSUxFX0xPQ0spCi1ib29sIGxvY2tGaWxlKFBs
YXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIE9wdGlvblNldDxGaWxlTG9ja01vZGU+IGxvY2tNb2Rl
KQotewotICAgIENPTVBJTEVfQVNTRVJUKExPQ0tfU0ggPT0gV1RGOjplbnVtVG9VbmRlcmx5aW5n
VHlwZShGaWxlTG9ja01vZGU6OlNoYXJlZCksIExvY2tTaGFyZWRFbmNvZGluZ0lzQXNFeHBlY3Rl
ZCk7Ci0gICAgQ09NUElMRV9BU1NFUlQoTE9DS19FWCA9PSBXVEY6OmVudW1Ub1VuZGVybHlpbmdU
eXBlKEZpbGVMb2NrTW9kZTo6RXhjbHVzaXZlKSwgTG9ja0V4Y2x1c2l2ZUVuY29kaW5nSXNBc0V4
cGVjdGVkKTsKLSAgICBDT01QSUxFX0FTU0VSVChMT0NLX05CID09IFdURjo6ZW51bVRvVW5kZXJs
eWluZ1R5cGUoRmlsZUxvY2tNb2RlOjpOb25ibG9ja2luZyksIExvY2tOb25ibG9ja2luZ0VuY29k
aW5nSXNBc0V4cGVjdGVkKTsKLSAgICBpbnQgcmVzdWx0ID0gZmxvY2soaGFuZGxlLCBsb2NrTW9k
ZS50b1JhdygpKTsKLSAgICByZXR1cm4gKHJlc3VsdCAhPSAtMSk7Ci19Ci0KLWJvb2wgdW5sb2Nr
RmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlKQotewotICAgIGludCByZXN1bHQgPSBmbG9j
ayhoYW5kbGUsIExPQ0tfVU4pOwotICAgIHJldHVybiAocmVzdWx0ICE9IC0xKTsKLX0KLSNlbmRp
ZgotCi0jaWYgIVBMQVRGT1JNKE1BQykKLWJvb2wgZGVsZXRlRW1wdHlEaXJlY3RvcnkoY29uc3Qg
U3RyaW5nJiBwYXRoKQotewotICAgIENTdHJpbmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24ocGF0aCk7Ci0KLSAgICBpZiAoIWZzUmVwLmRhdGEoKSB8fCBmc1JlcC5kYXRhKClbMF0g
PT0gJ1wwJykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gcm1kaXIoLi4uKSByZXR1
cm5zIDAgb24gc3VjY2Vzc2Z1bCBkZWxldGlvbiBvZiB0aGUgcGF0aCBhbmQgbm9uLXplcm8gaW4g
YW55IG90aGVyIGNhc2UgKGluY2x1ZGluZyBpbnZhbGlkIHBlcm1pc3Npb25zIG9yIG5vbi1leGlz
dGVudCBmaWxlKQotICAgIHJldHVybiAhcm1kaXIoZnNSZXAuZGF0YSgpKTsKLX0KLSNlbmRpZgot
Ci1ib29sIGdldEZpbGVTaXplKGNvbnN0IFN0cmluZyYgcGF0aCwgbG9uZyBsb25nJiByZXN1bHQp
Ci17Ci0gICAgQ1N0cmluZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsK
LQotICAgIGlmICghZnNSZXAuZGF0YSgpIHx8IGZzUmVwLmRhdGEoKVswXSA9PSAnXDAnKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBzdHJ1Y3Qgc3RhdCBmaWxlSW5mbzsKLQotICAgIGlm
IChzdGF0KGZzUmVwLmRhdGEoKSwgJmZpbGVJbmZvKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgcmVzdWx0ID0gZmlsZUluZm8uc3Rfc2l6ZTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQot
Ym9vbCBnZXRGaWxlU2l6ZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBsb25nIGxvbmcmIHJl
c3VsdCkKLXsKLSAgICBzdHJ1Y3Qgc3RhdCBmaWxlSW5mbzsKLSAgICBpZiAoZnN0YXQoaGFuZGxl
LCAmZmlsZUluZm8pKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXN1bHQgPSBmaWxl
SW5mby5zdF9zaXplOwotICAgIHJldHVybiB0cnVlOwotfQotCi1PcHRpb25hbDxXYWxsVGltZT4g
Z2V0RmlsZUNyZWF0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0jaWYgT1MoREFSV0lO
KSB8fCBPUyhPUEVOQlNEKSB8fCBPUyhORVRCU0QpIHx8IE9TKEZSRUVCU0QpCi0gICAgQ1N0cmlu
ZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKLQotICAgIGlmICghZnNS
ZXAuZGF0YSgpIHx8IGZzUmVwLmRhdGEoKVswXSA9PSAnXDAnKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwotCi0gICAgc3RydWN0IHN0YXQgZmlsZUluZm87Ci0KLSAgICBpZiAoc3RhdChm
c1JlcC5kYXRhKCksICZmaWxlSW5mbykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0K
LSAgICByZXR1cm4gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKGZpbGVJbmZvLnN0X2JpcnRodGlt
ZSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShwYXRoKTsKLSAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwotI2VuZGlmCi19Ci0KLU9wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlTW9kaWZpY2F0aW9u
VGltZShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgQ1N0cmluZyBmc1JlcCA9IGZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKLQotICAgIGlmICghZnNSZXAuZGF0YSgpIHx8IGZzUmVw
LmRhdGEoKVswXSA9PSAnXDAnKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAg
c3RydWN0IHN0YXQgZmlsZUluZm87Ci0KLSAgICBpZiAoc3RhdChmc1JlcC5kYXRhKCksICZmaWxl
SW5mbykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICByZXR1cm4gV2FsbFRp
bWU6OmZyb21SYXdTZWNvbmRzKGZpbGVJbmZvLnN0X210aW1lKTsKLX0KLQotc3RhdGljIEZpbGVN
ZXRhZGF0YTo6VHlwZSB0b0ZpbGVNZXRhdGFUeXBlKHN0cnVjdCBzdGF0IGZpbGVJbmZvKQotewot
ICAgIGlmIChTX0lTRElSKGZpbGVJbmZvLnN0X21vZGUpKQotICAgICAgICByZXR1cm4gRmlsZU1l
dGFkYXRhOjpUeXBlOjpEaXJlY3Rvcnk7Ci0gICAgaWYgKFNfSVNMTksoZmlsZUluZm8uc3RfbW9k
ZSkpCi0gICAgICAgIHJldHVybiBGaWxlTWV0YWRhdGE6OlR5cGU6OlN5bWJvbGljTGluazsKLSAg
ICByZXR1cm4gRmlsZU1ldGFkYXRhOjpUeXBlOjpGaWxlOwotfQotCi1zdGF0aWMgT3B0aW9uYWw8
RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGFVc2luZ0Z1bmN0aW9uKGNvbnN0IFN0cmluZyYgcGF0
aCwgaW50ICgqc3RhdEZ1bmMpKGNvbnN0IGNoYXIqLCBzdHJ1Y3Qgc3RhdCopKQotewotICAgIENT
dHJpbmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7Ci0KLSAgICBpZiAo
IWZzUmVwLmRhdGEoKSB8fCBmc1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKLQotICAgIHN0cnVjdCBzdGF0IGZpbGVJbmZvOwotICAgIGlmIChzdGF0
RnVuYyhmc1JlcC5kYXRhKCksICZmaWxlSW5mbykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7Ci0KLSAgICBTdHJpbmcgZmlsZW5hbWUgPSBwYXRoR2V0RmlsZU5hbWUocGF0aCk7Ci0gICAg
Ym9vbCBpc0hpZGRlbiA9ICFmaWxlbmFtZS5pc0VtcHR5KCkgJiYgZmlsZW5hbWVbMF0gPT0gJy4n
OwotICAgIHJldHVybiBGaWxlTWV0YWRhdGEgewotICAgICAgICBXYWxsVGltZTo6ZnJvbVJhd1Nl
Y29uZHMoZmlsZUluZm8uc3RfbXRpbWUpLAotICAgICAgICBmaWxlSW5mby5zdF9zaXplLAotICAg
ICAgICBpc0hpZGRlbiwKLSAgICAgICAgdG9GaWxlTWV0YXRhVHlwZShmaWxlSW5mbykKLSAgICB9
OwotfQotCi1PcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YShjb25zdCBTdHJpbmcm
IHBhdGgpCi17Ci0gICAgcmV0dXJuIGZpbGVNZXRhZGF0YVVzaW5nRnVuY3Rpb24ocGF0aCwgJmxz
dGF0KTsKLX0KLQotT3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGFGb2xsb3dpbmdT
eW1saW5rcyhjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgcmV0dXJuIGZpbGVNZXRhZGF0YVVz
aW5nRnVuY3Rpb24ocGF0aCwgJnN0YXQpOwotfQotCi1ib29sIGNyZWF0ZVN5bWJvbGljTGluayhj
b25zdCBTdHJpbmcmIHRhcmdldFBhdGgsIGNvbnN0IFN0cmluZyYgc3ltYm9saWNMaW5rUGF0aCkK
LXsKLSAgICBDU3RyaW5nIHRhcmdldFBhdGhGU1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bih0YXJnZXRQYXRoKTsKLSAgICBpZiAoIXRhcmdldFBhdGhGU1JlcC5kYXRhKCkgfHwgdGFyZ2V0
UGF0aEZTUmVwLmRhdGEoKVswXSA9PSAnXDAnKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICBDU3RyaW5nIHN5bWJvbGljTGlua1BhdGhGU1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihzeW1ib2xpY0xpbmtQYXRoKTsKLSAgICBpZiAoIXN5bWJvbGljTGlua1BhdGhGU1JlcC5kYXRh
KCkgfHwgc3ltYm9saWNMaW5rUGF0aEZTUmVwLmRhdGEoKVswXSA9PSAnXDAnKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gIXN5bWxpbmsodGFyZ2V0UGF0aEZTUmVwLmRhdGEo
KSwgc3ltYm9saWNMaW5rUGF0aEZTUmVwLmRhdGEoKSk7Ci19Ci0KLVN0cmluZyBwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGNvbXBvbmVu
dCkKLXsKLSAgICBpZiAocGF0aC5lbmRzV2l0aCgnLycpKQotICAgICAgICByZXR1cm4gcGF0aCAr
IGNvbXBvbmVudDsKLSAgICByZXR1cm4gcGF0aCArICIvIiArIGNvbXBvbmVudDsKLX0KLQotU3Ry
aW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMoU3RyaW5nVmlldyBwYXRoLCBjb25zdCBWZWN0
b3I8U3RyaW5nVmlldz4mIGNvbXBvbmVudHMpCi17Ci0gICAgU3RyaW5nQnVpbGRlciBidWlsZGVy
OwotICAgIGJ1aWxkZXIuYXBwZW5kKHBhdGgpOwotICAgIGZvciAoYXV0byYgY29tcG9uZW50IDog
Y29tcG9uZW50cykgewotICAgICAgICBidWlsZGVyLmFwcGVuZCgnLycpOwotICAgICAgICBidWls
ZGVyLmFwcGVuZChjb21wb25lbnQpOwotICAgIH0KLSAgICByZXR1cm4gYnVpbGRlci50b1N0cmlu
ZygpOwotfQotCi1ib29sIG1ha2VBbGxEaXJlY3Rvcmllcyhjb25zdCBTdHJpbmcmIHBhdGgpCi17
Ci0gICAgQ1N0cmluZyBmdWxsUGF0aCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsK
LSAgICBpZiAoIWFjY2VzcyhmdWxsUGF0aC5kYXRhKCksIEZfT0spKQotICAgICAgICByZXR1cm4g
dHJ1ZTsKLQotICAgIGNoYXIqIHAgPSBmdWxsUGF0aC5tdXRhYmxlRGF0YSgpICsgMTsKLSAgICBp
bnQgbGVuZ3RoID0gZnVsbFBhdGgubGVuZ3RoKCk7Ci0KLSAgICBpZihwW2xlbmd0aCAtIDFdID09
ICcvJykKLSAgICAgICAgcFtsZW5ndGggLSAxXSA9ICdcMCc7Ci0gICAgZm9yICg7ICpwOyArK3Ap
Ci0gICAgICAgIGlmICgqcCA9PSAnLycpIHsKLSAgICAgICAgICAgICpwID0gJ1wwJzsKLSAgICAg
ICAgICAgIGlmIChhY2Nlc3MoZnVsbFBhdGguZGF0YSgpLCBGX09LKSkKLSAgICAgICAgICAgICAg
ICBpZiAobWtkaXIoZnVsbFBhdGguZGF0YSgpLCBTX0lSV1hVKSkKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgKnAgPSAnLyc7Ci0gICAgICAgIH0KLSAgICBp
ZiAoYWNjZXNzKGZ1bGxQYXRoLmRhdGEoKSwgRl9PSykpCi0gICAgICAgIGlmIChta2RpcihmdWxs
UGF0aC5kYXRhKCksIFNfSVJXWFUpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
cmV0dXJuIHRydWU7Ci19Ci0KLVN0cmluZyBwYXRoR2V0RmlsZU5hbWUoY29uc3QgU3RyaW5nJiBw
YXRoKQotewotICAgIHJldHVybiBwYXRoLnN1YnN0cmluZyhwYXRoLnJldmVyc2VGaW5kKCcvJykg
KyAxKTsKLX0KLQotU3RyaW5nIGRpcmVjdG9yeU5hbWUoY29uc3QgU3RyaW5nJiBwYXRoKQotewot
ICAgIENTdHJpbmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7Ci0KLSAg
ICBpZiAoIWZzUmVwLmRhdGEoKSB8fCBmc1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKLSAgICAgICAg
cmV0dXJuIFN0cmluZygpOwotCi0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoZGlybmFtZShm
c1JlcC5tdXRhYmxlRGF0YSgpKSk7Ci19Ci0KLVZlY3RvcjxTdHJpbmc+IGxpc3REaXJlY3Rvcnko
Y29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGZpbHRlcikKLXsKLSAgICBWZWN0b3I8
U3RyaW5nPiBlbnRyaWVzOwotICAgIENTdHJpbmcgY3BhdGggPSBmaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24ocGF0aCk7Ci0gICAgQ1N0cmluZyBjZmlsdGVyID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKGZpbHRlcik7Ci0gICAgRElSKiBkaXIgPSBvcGVuZGlyKGNwYXRoLmRhdGEoKSk7Ci0gICAg
aWYgKGRpcikgewotICAgICAgICBzdHJ1Y3QgZGlyZW50KiBkcDsKLSAgICAgICAgd2hpbGUgKChk
cCA9IHJlYWRkaXIoZGlyKSkpIHsKLSAgICAgICAgICAgIGNvbnN0IGNoYXIqIG5hbWUgPSBkcC0+
ZF9uYW1lOwotICAgICAgICAgICAgaWYgKCFzdHJjbXAobmFtZSwgIi4iKSB8fCAhc3RyY21wKG5h
bWUsICIuLiIpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaWYgKGZu
bWF0Y2goY2ZpbHRlci5kYXRhKCksIG5hbWUsIDApKQotICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICAgICAgY2hhciBmaWxlUGF0aFtQQVRIX01BWF07Ci0gICAgICAgICAgICBpZiAo
c3RhdGljX2Nhc3Q8aW50PihzaXplb2YoZmlsZVBhdGgpIC0gMSkgPCBzbnByaW50ZihmaWxlUGF0
aCwgc2l6ZW9mKGZpbGVQYXRoKSwgIiVzLyVzIiwgY3BhdGguZGF0YSgpLCBuYW1lKSkKLSAgICAg
ICAgICAgICAgICBjb250aW51ZTsgLy8gYnVmZmVyIG92ZXJmbG93Ci0KLSAgICAgICAgICAgIGF1
dG8gc3RyaW5nID0gc3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWxlUGF0aCk7
Ci0KLSAgICAgICAgICAgIC8vIFNvbWUgZmlsZSBzeXN0ZW0gcmVwcmVzZW50YXRpb25zIGNhbm5v
dCBiZSByZXByZXNlbnRlZCBhcyBhIFVURi0xNiBzdHJpbmcsCi0gICAgICAgICAgICAvLyBzbyB0
aGlzIHN0cmluZyBtaWdodCBiZSBudWxsLgotICAgICAgICAgICAgaWYgKCFzdHJpbmcuaXNOdWxs
KCkpCi0gICAgICAgICAgICAgICAgZW50cmllcy5hcHBlbmQoV1RGTW92ZShzdHJpbmcpKTsKLSAg
ICAgICAgfQotICAgICAgICBjbG9zZWRpcihkaXIpOwotICAgIH0KLSAgICByZXR1cm4gZW50cmll
czsKLX0KLQotI2lmICFQTEFURk9STShDT0NPQSkKLVN0cmluZyBzdHJpbmdGcm9tRmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKGNvbnN0IGNoYXIqIHBhdGgpCi17Ci0gICAgaWYgKCFwYXRoKQotICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChwYXRo
KTsKLX0KLQotQ1N0cmluZyBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBw
YXRoKQotewotICAgIHJldHVybiBwYXRoLnV0ZjgoKTsKLX0KLQotYm9vbCBtb3ZlRmlsZShjb25z
dCBTdHJpbmcmIG9sZFBhdGgsIGNvbnN0IFN0cmluZyYgbmV3UGF0aCkKLXsKLSAgICBhdXRvIG9s
ZEZpbGVuYW1lID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKG9sZFBhdGgpOwotICAgIGlmIChv
bGRGaWxlbmFtZS5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYXV0byBu
ZXdGaWxlbmFtZSA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihuZXdQYXRoKTsKLSAgICBpZiAo
bmV3RmlsZW5hbWUuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVy
biByZW5hbWUob2xkRmlsZW5hbWUuZGF0YSgpLCBuZXdGaWxlbmFtZS5kYXRhKCkpICE9IC0xOwot
fQotCi1ib29sIGdldFZvbHVtZUZyZWVTcGFjZShjb25zdCBTdHJpbmcmIHBhdGgsIHVpbnQ2NF90
JiBmcmVlU3BhY2UpCi17Ci0gICAgc3RydWN0IHN0YXR2ZnMgZmlsZVN5c3RlbVN0YXQ7Ci0gICAg
aWYgKHN0YXR2ZnMoZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSwgJmZpbGVT
eXN0ZW1TdGF0KSkgewotICAgICAgICBmcmVlU3BhY2UgPSBmaWxlU3lzdGVtU3RhdC5mX2JhdmFp
bCAqIGZpbGVTeXN0ZW1TdGF0LmZfZnJzaXplOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9
Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotI2VuZGlmCi0KLSNpZiAhT1MoREFSV0lOKQotU3RyaW5n
IG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5k
bGUmIGhhbmRsZSkKLXsKLSAgICBjaGFyIGJ1ZmZlcltQQVRIX01BWF07Ci0gICAgY29uc3QgY2hh
ciogdG1wRGlyID0gZ2V0ZW52KCJUTVBESVIiKTsKLQotICAgIGlmICghdG1wRGlyKQotICAgICAg
ICB0bXBEaXIgPSAiL3RtcCI7Ci0KLSAgICBpZiAoc25wcmludGYoYnVmZmVyLCBQQVRIX01BWCwg
IiVzLyVzWFhYWFhYIiwgdG1wRGlyLCBwcmVmaXgudXRmOCgpLmRhdGEoKSkgPj0gUEFUSF9NQVgp
Ci0gICAgICAgIGdvdG8gZW5kOwotCi0gICAgaGFuZGxlID0gbWtzdGVtcChidWZmZXIpOwotICAg
IGlmIChoYW5kbGUgPCAwKQotICAgICAgICBnb3RvIGVuZDsKLQotICAgIHJldHVybiBTdHJpbmc6
OmZyb21VVEY4KGJ1ZmZlcik7Ci0KLWVuZDoKLSAgICBoYW5kbGUgPSBpbnZhbGlkUGxhdGZvcm1G
aWxlSGFuZGxlOwotICAgIHJldHVybiBTdHJpbmcoKTsKLX0KLSNlbmRpZgotCi1ib29sIGhhcmRM
aW5rT3JDb3B5RmlsZShjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiBkZXN0aW5h
dGlvbikKLXsKLSAgICBpZiAoc291cmNlLmlzRW1wdHkoKSB8fCBkZXN0aW5hdGlvbi5pc0VtcHR5
KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIENTdHJpbmcgZnNTb3VyY2UgPSBmaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oc291cmNlKTsKLSAgICBpZiAoIWZzU291cmNlLmRhdGEoKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgQ1N0cmluZyBmc0Rlc3RpbmF0aW9uID0gZmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRlc3RpbmF0aW9uKTsKLSAgICBpZiAoIWZzRGVzdGluYXRp
b24uZGF0YSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIWxpbmsoZnNTb3Vy
Y2UuZGF0YSgpLCBmc0Rlc3RpbmF0aW9uLmRhdGEoKSkpCi0gICAgICAgIHJldHVybiB0cnVlOwot
Ci0gICAgLy8gSGFyZCBsaW5rIGZhaWxlZC4gUGVyZm9ybSBhIGNvcHkgaW5zdGVhZC4KLSAgICBh
dXRvIGhhbmRsZSA9IG9wZW4oZnNEZXN0aW5hdGlvbi5kYXRhKCksIE9fV1JPTkxZIHwgT19DUkVB
VCB8IE9fRVhDTCwgMDY2Nik7Ci0gICAgaWYgKGhhbmRsZSA9PSAtMSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgYm9vbCBhcHBlbmRSZXN1bHQgPSBhcHBlbmRGaWxlQ29udGVudHNUb0Zp
bGVIYW5kbGUoc291cmNlLCBoYW5kbGUpOwotICAgIGNsb3NlKGhhbmRsZSk7Ci0KLSAgICAvLyBJ
ZiB0aGUgY29weSBmYWlsZWQsIGRlbGV0ZSB0aGUgdW51c2FibGUgZmlsZS4KLSAgICBpZiAoIWFw
cGVuZFJlc3VsdCkKLSAgICAgICAgdW5saW5rKGZzRGVzdGluYXRpb24uZGF0YSgpKTsKLQotICAg
IHJldHVybiBhcHBlbmRSZXN1bHQ7Ci19Ci0KLU9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZp
Y2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCi17Ci0gICAgc3RydWN0IHN0YXQgZmlsZVN0YXQ7
Ci0gICAgaWYgKHN0YXQoZnNGaWxlLmRhdGEoKSwgJmZpbGVTdGF0KSA9PSAtMSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIHJldHVybiBmaWxlU3RhdC5zdF9kZXY7Ci19Ci0K
LVN0cmluZyByZWFsUGF0aChjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQotewotICAgIENTdHJpbmcg
ZnNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZVBhdGgpOwotICAgIGNoYXIgcmVz
b2x2ZWROYW1lW1BBVEhfTUFYXTsKLSAgICBjb25zdCBjaGFyKiByZXN1bHQgPSByZWFscGF0aChm
c1JlcC5kYXRhKCksIHJlc29sdmVkTmFtZSk7Ci0gICAgcmV0dXJuIHJlc3VsdCA/IFN0cmluZzo6
ZnJvbVVURjgocmVzdWx0KSA6IGZpbGVQYXRoOwotfQotCi19IC8vIG5hbWVzcGFjZSBGaWxlU3lz
dGVtCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQT1NJWC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQT1NJWC5jcHAKaW5kZXggNTEzMzc1ZDI0NWVmNDVjMTk2
YTg1NDYxNWNlNzBiNzhhOTBjZWNmZi4uOGVkNTcxNzQ3NzhjYjdiZGFkY2EzNjUxN2ZkNzk0NDU3
MzhjNTJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvU2hhcmVk
QnVmZmVyUE9TSVguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L1NoYXJl
ZEJ1ZmZlclBPU0lYLmNwcApAQCAtMjYsMTEgKzI2LDEwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCi0K
ICNpbmNsdWRlIDxmY250bC5oPgogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAjaW5jbHVkZSA8dW5p
c3RkLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcAppbmRleCA5MGMyMGM3YmNlNmE2N2I2N2Q1
M2Q1YzQwNTM3NzZiZjE0YzdlNWU1Li4zNjRiZmY3MTA3NDk3ODk2ZjdiMWQ3NTdhN2Q5YTVmYzNh
ZDNmNjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmls
ZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVT
eXN0ZW0uY3BwCkBAIC0zMSwxMCArMzEsMTAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJTUUxpdGVGaWxlU3lzdGVtLmgiCiAKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5j
bHVkZSAiU1FMaXRlRGF0YWJhc2UuaCIKICNpbmNsdWRlICJTUUxpdGVTdGF0ZW1lbnQuaCIKICNp
bmNsdWRlIDxzcWxpdGUzLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAjaW5jbHVkZSA8cGFsL3NwaS9pb3MvU1FMaXRlM1NQSS5oPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9oeXBoZW4vSHlwaGVuYXRp
b25MaWJIeXBoZW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9oeXBoZW4vSHlw
aGVuYXRpb25MaWJIeXBoZW4uY3BwCmluZGV4IDJkN2I2NmQ5Mzc5MDVkY2MyMmY0YTEzZTk1YTBh
ZjA2YmI0OGI3YWYuLjVlZWI5YmZhNzQwMGY3MjE1YzAyNmM1NTJkODJhYTM4YTc2M2Y5NDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaHlwaGVuL0h5cGhlbmF0aW9u
TGliSHlwaGVuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2h5cGhlbi9I
eXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAKQEAgLTI5LDEwICsyOSwxMCBAQAogCiAjaWYgVVNFKExJ
QkhZUEhFTikKIAotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlIDxoeXBoZW4uaD4K
ICNpbmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8d3RmL0Zp
bGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9UaW55TFJVQ2FjaGUuaD4KQEAgLTIyNCw3ICsy
MjQsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUmVmUHRyPFdlYkNvcmU6Okh5cGhlbmF0aW9u
RGljdGlvbmFyeT4gY3JlYXRlVmFsdWVGb3JLZXkoY29uc3QgQXRvbWljU3RyaW5nJiBkaWN0aW9u
YXJ5UGF0aCkKICAgICB7Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpIeXBoZW5hdGlvbkRpY3Rp
b25hcnk6OmNyZWF0ZShXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oZGljdGlvbmFyeVBhdGguc3RyaW5nKCkpKTsKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6Okh5
cGhlbmF0aW9uRGljdGlvbmFyeTo6Y3JlYXRlKEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihkaWN0aW9uYXJ5UGF0aC5zdHJpbmcoKSkpOwogICAgIH0KIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2luLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2luLmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggYmI3MDJjYjAxMjBhYmJmMjU4NTI5ZmFmOTQzMTBkZGZmZmRmNjA4NC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdpbi5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1
ODkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNy0yMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwOCBDb2xsYWJvcmEsIEx0ZC4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAotICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAotICogMy4gIE5laXRoZXIg
dGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAg
IGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgi
Ci0KLSNpbmNsdWRlICJGaWxlTWV0YWRhdGEuaCIKLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5o
IgotI2luY2x1ZGUgIlBhdGhXYWxrZXIuaCIKLSNpbmNsdWRlIDxpby5oPgotI2luY2x1ZGUgPHNo
bG9iai5oPgotI2luY2x1ZGUgPHNobHdhcGkuaD4KLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgotI2lu
Y2x1ZGUgPHdpbmRvd3MuaD4KLSNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21O
dW1iZXIuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+Ci0jaW5jbHVkZSA8
d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotbmFtZXNwYWNlIEZpbGVTeXN0ZW0gewotCi1zdGF0aWMgY29uc3QgVUxPTkdMT05HIGtTZWNv
bmRzRnJvbUZpbGVUaW1lVG9UaW1ldCA9IDExNjQ0NDczNjAwOwotCi1zdGF0aWMgYm9vbCBnZXRG
aW5kRGF0YShTdHJpbmcgcGF0aCwgV0lOMzJfRklORF9EQVRBVyYgZmluZERhdGEpCi17Ci0gICAg
SEFORExFIGhhbmRsZSA9IEZpbmRGaXJzdEZpbGVXKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hh
cihwYXRoKS5kYXRhKCksICZmaW5kRGF0YSk7Ci0gICAgaWYgKGhhbmRsZSA9PSBJTlZBTElEX0hB
TkRMRV9WQUxVRSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIEZpbmRDbG9zZShoYW5kbGUp
OwotICAgIHJldHVybiB0cnVlOwotfQotCi1zdGF0aWMgYm9vbCBnZXRGaWxlU2l6ZUZyb21GaW5k
RGF0YShjb25zdCBXSU4zMl9GSU5EX0RBVEFXJiBmaW5kRGF0YSwgbG9uZyBsb25nJiBzaXplKQot
ewotICAgIFVMQVJHRV9JTlRFR0VSIGZpbGVTaXplOwotICAgIGZpbGVTaXplLkhpZ2hQYXJ0ID0g
ZmluZERhdGEubkZpbGVTaXplSGlnaDsKLSAgICBmaWxlU2l6ZS5Mb3dQYXJ0ID0gZmluZERhdGEu
bkZpbGVTaXplTG93OwotCi0gICAgaWYgKGZpbGVTaXplLlF1YWRQYXJ0ID4gc3RhdGljX2Nhc3Q8
VUxPTkdMT05HPihzdGQ6Om51bWVyaWNfbGltaXRzPGxvbmcgbG9uZz46Om1heCgpKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgc2l6ZSA9IGZpbGVTaXplLlF1YWRQYXJ0OwotICAgIHJl
dHVybiB0cnVlOwotfQotCi1zdGF0aWMgYm9vbCBnZXRGaWxlU2l6ZUZyb21CeUhhbmRsZUZpbGVJ
bmZvcm1hdGlvblN0cnVjdHVyZShjb25zdCBCWV9IQU5ETEVfRklMRV9JTkZPUk1BVElPTiYgZmls
ZUluZm9ybWF0aW9uLCBsb25nIGxvbmcmIHNpemUpCi17Ci0gICAgVUxBUkdFX0lOVEVHRVIgZmls
ZVNpemU7Ci0gICAgZmlsZVNpemUuSGlnaFBhcnQgPSBmaWxlSW5mb3JtYXRpb24ubkZpbGVTaXpl
SGlnaDsKLSAgICBmaWxlU2l6ZS5Mb3dQYXJ0ID0gZmlsZUluZm9ybWF0aW9uLm5GaWxlU2l6ZUxv
dzsKLQotICAgIGlmIChmaWxlU2l6ZS5RdWFkUGFydCA+IHN0YXRpY19jYXN0PFVMT05HTE9ORz4o
c3RkOjpudW1lcmljX2xpbWl0czxsb25nIGxvbmc+OjptYXgoKSkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIHNpemUgPSBmaWxlU2l6ZS5RdWFkUGFydDsKLSAgICByZXR1cm4gdHJ1ZTsK
LX0KLQotc3RhdGljIHZvaWQgZ2V0RmlsZUNyZWF0aW9uVGltZUZyb21GaW5kRGF0YShjb25zdCBX
SU4zMl9GSU5EX0RBVEFXJiBmaW5kRGF0YSwgdGltZV90JiB0aW1lKQotewotICAgIFVMQVJHRV9J
TlRFR0VSIGZpbGVUaW1lOwotICAgIGZpbGVUaW1lLkhpZ2hQYXJ0ID0gZmluZERhdGEuZnRDcmVh
dGlvblRpbWUuZHdIaWdoRGF0ZVRpbWU7Ci0gICAgZmlsZVRpbWUuTG93UGFydCA9IGZpbmREYXRh
LmZ0Q3JlYXRpb25UaW1lLmR3TG93RGF0ZVRpbWU7Ci0KLSAgICAvLyBJbmZvcm1hdGlvbiBhYm91
dCBjb252ZXJ0aW5nIHRpbWVfdCB0byBGaWxlVGltZSBpcyBhdmFpbGFibGUgYXQgaHR0cDovL21z
ZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L21zNzI0MjI4JTI4dj12cy44NSUyOS5hc3B4
Ci0gICAgdGltZSA9IGZpbGVUaW1lLlF1YWRQYXJ0IC8gMTAwMDAwMDAgLSBrU2Vjb25kc0Zyb21G
aWxlVGltZVRvVGltZXQ7Ci19Ci0KLQotc3RhdGljIHZvaWQgZ2V0RmlsZU1vZGlmaWNhdGlvblRp
bWVGcm9tRmluZERhdGEoY29uc3QgV0lOMzJfRklORF9EQVRBVyYgZmluZERhdGEsIHRpbWVfdCYg
dGltZSkKLXsKLSAgICBVTEFSR0VfSU5URUdFUiBmaWxlVGltZTsKLSAgICBmaWxlVGltZS5IaWdo
UGFydCA9IGZpbmREYXRhLmZ0TGFzdFdyaXRlVGltZS5kd0hpZ2hEYXRlVGltZTsKLSAgICBmaWxl
VGltZS5Mb3dQYXJ0ID0gZmluZERhdGEuZnRMYXN0V3JpdGVUaW1lLmR3TG93RGF0ZVRpbWU7Ci0K
LSAgICAvLyBJbmZvcm1hdGlvbiBhYm91dCBjb252ZXJ0aW5nIHRpbWVfdCB0byBGaWxlVGltZSBp
cyBhdmFpbGFibGUgYXQgaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L21z
NzI0MjI4JTI4dj12cy44NSUyOS5hc3B4Ci0gICAgdGltZSA9IGZpbGVUaW1lLlF1YWRQYXJ0IC8g
MTAwMDAwMDAgLSBrU2Vjb25kc0Zyb21GaWxlVGltZVRvVGltZXQ7Ci19Ci0KLWJvb2wgZ2V0Rmls
ZVNpemUoY29uc3QgU3RyaW5nJiBwYXRoLCBsb25nIGxvbmcmIHNpemUpCi17Ci0gICAgV0lOMzJf
RklORF9EQVRBVyBmaW5kRGF0YTsKLSAgICBpZiAoIWdldEZpbmREYXRhKHBhdGgsIGZpbmREYXRh
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIGdldEZpbGVTaXplRnJvbUZp
bmREYXRhKGZpbmREYXRhLCBzaXplKTsKLX0KLQotYm9vbCBnZXRGaWxlU2l6ZShQbGF0Zm9ybUZp
bGVIYW5kbGUgZmlsZUhhbmRsZSwgbG9uZyBsb25nJiBzaXplKQotewotICAgIEJZX0hBTkRMRV9G
SUxFX0lORk9STUFUSU9OIGZpbGVJbmZvcm1hdGlvbjsKLSAgICBpZiAoITo6R2V0RmlsZUluZm9y
bWF0aW9uQnlIYW5kbGUoZmlsZUhhbmRsZSwgJmZpbGVJbmZvcm1hdGlvbikpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIHJldHVybiBnZXRGaWxlU2l6ZUZyb21CeUhhbmRsZUZpbGVJbmZv
cm1hdGlvblN0cnVjdHVyZShmaWxlSW5mb3JtYXRpb24sIHNpemUpOwotfQotCi1PcHRpb25hbDxX
YWxsVGltZT4gZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoKQotewot
ICAgIFdJTjMyX0ZJTkRfREFUQVcgZmluZERhdGE7Ci0gICAgaWYgKCFnZXRGaW5kRGF0YShwYXRo
LCBmaW5kRGF0YSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICB0aW1lX3Qg
dGltZSA9IDA7Ci0gICAgZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWVGcm9tRmluZERhdGEoZmluZERh
dGEsIHRpbWUpOwotICAgIHJldHVybiBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHModGltZSk7Ci19
Ci0KLU9wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlQ3JlYXRpb25UaW1lKGNvbnN0IFN0cmluZyYg
cGF0aCkKLXsKLSAgICBXSU4zMl9GSU5EX0RBVEFXIGZpbmREYXRhOwotICAgIGlmICghZ2V0Rmlu
ZERhdGEocGF0aCwgZmluZERhdGEpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0g
ICAgdGltZV90IHRpbWUgPSAwOwotICAgIGdldEZpbGVDcmVhdGlvblRpbWVGcm9tRmluZERhdGEo
ZmluZERhdGEsIHRpbWUpOwotICAgIHJldHVybiBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHModGlt
ZSk7Ci19Ci0KLXN0YXRpYyBTdHJpbmcgZ2V0RmluYWxQYXRoTmFtZShjb25zdCBTdHJpbmcmIHBh
dGgpCi17Ci0gICAgYXV0byBoYW5kbGUgPSBvcGVuRmlsZShwYXRoLCBGaWxlT3Blbk1vZGU6OlJl
YWQpOwotICAgIGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUpKQotICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7Ci0KLSAgICBWZWN0b3I8VUNoYXI+IGJ1ZmZlcihNQVhfUEFUSCk7Ci0gICAgaWYgKDo6
R2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlVyhoYW5kbGUsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5z
aXplKCksIFZPTFVNRV9OQU1FX05UKSA+PSBNQVhfUEFUSCkgewotICAgICAgICBjbG9zZUZpbGUo
aGFuZGxlKTsKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIH0KLSAgICBjbG9zZUZpbGUo
aGFuZGxlKTsKLQotICAgIGJ1ZmZlci5zaHJpbmsod2NzbGVuKGJ1ZmZlci5kYXRhKCkpKTsKLSAg
ICByZXR1cm4gU3RyaW5nOjphZG9wdChXVEZNb3ZlKGJ1ZmZlcikpOwotfQotCi1zdGF0aWMgaW5s
aW5lIGJvb2wgaXNTeW1ib2xpY0xpbmsoV0lOMzJfRklORF9EQVRBVyBmaW5kRGF0YSkKLXsKLSAg
ICByZXR1cm4gZmluZERhdGEuZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX1JFUEFS
U0VfUE9JTlQgJiYgZmluZERhdGEuZHdSZXNlcnZlZDAgPT0gSU9fUkVQQVJTRV9UQUdfU1lNTElO
SzsKLX0KLQotc3RhdGljIEZpbGVNZXRhZGF0YTo6VHlwZSB0b0ZpbGVNZXRhZGF0YVR5cGUoV0lO
MzJfRklORF9EQVRBVyBmaW5kRGF0YSkKLXsKLSAgICBpZiAoZmluZERhdGEuZHdGaWxlQXR0cmli
dXRlcyAmIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWSkKLSAgICAgICAgcmV0dXJuIEZpbGVNZXRh
ZGF0YTo6VHlwZTo6RGlyZWN0b3J5OwotICAgIGlmIChpc1N5bWJvbGljTGluayhmaW5kRGF0YSkp
Ci0gICAgICAgIHJldHVybiBGaWxlTWV0YWRhdGE6OlR5cGU6OlN5bWJvbGljTGluazsKLSAgICBy
ZXR1cm4gRmlsZU1ldGFkYXRhOjpUeXBlOjpGaWxlOwotfQotCi1zdGF0aWMgT3B0aW9uYWw8Rmls
ZU1ldGFkYXRhPiBmaW5kRGF0YVRvRmlsZU1ldGFkYXRhKFdJTjMyX0ZJTkRfREFUQVcgZmluZERh
dGEpCi17Ci0gICAgbG9uZyBsb25nIGxlbmd0aDsKLSAgICBpZiAoIWdldEZpbGVTaXplRnJvbUZp
bmREYXRhKGZpbmREYXRhLCBsZW5ndGgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owot
Ci0gICAgdGltZV90IG1vZGlmaWNhdGlvblRpbWU7Ci0gICAgZ2V0RmlsZU1vZGlmaWNhdGlvblRp
bWVGcm9tRmluZERhdGEoZmluZERhdGEsIG1vZGlmaWNhdGlvblRpbWUpOwotCi0gICAgcmV0dXJu
IEZpbGVNZXRhZGF0YSB7Ci0gICAgICAgIFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhtb2RpZmlj
YXRpb25UaW1lKSwKLSAgICAgICAgbGVuZ3RoLAotICAgICAgICBzdGF0aWNfY2FzdDxib29sPihm
aW5kRGF0YS5kd0ZpbGVBdHRyaWJ1dGVzICYgRklMRV9BVFRSSUJVVEVfSElEREVOKSwKLSAgICAg
ICAgdG9GaWxlTWV0YWRhdGFUeXBlKGZpbmREYXRhKQotICAgIH07Ci19Ci0KLU9wdGlvbmFsPEZp
bGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBXSU4z
Ml9GSU5EX0RBVEFXIGZpbmREYXRhOwotICAgIGlmICghZ2V0RmluZERhdGEocGF0aCwgZmluZERh
dGEpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgcmV0dXJuIGZpbmREYXRh
VG9GaWxlTWV0YWRhdGEoZmluZERhdGEpOwotfQotCi1PcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZp
bGVNZXRhZGF0YUZvbGxvd2luZ1N5bWxpbmtzKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBX
SU4zMl9GSU5EX0RBVEFXIGZpbmREYXRhOwotICAgIGlmICghZ2V0RmluZERhdGEocGF0aCwgZmlu
ZERhdGEpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgaWYgKGlzU3ltYm9s
aWNMaW5rKGZpbmREYXRhKSkgewotICAgICAgICBTdHJpbmcgdGFyZ2V0UGF0aCA9IGdldEZpbmFs
UGF0aE5hbWUocGF0aCk7Ci0gICAgICAgIGlmICh0YXJnZXRQYXRoLmlzTnVsbCgpKQotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICAgICAgaWYgKCFnZXRGaW5kRGF0YSh0YXJn
ZXRQYXRoLCBmaW5kRGF0YSkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAg
IH0KLQotICAgIHJldHVybiBmaW5kRGF0YVRvRmlsZU1ldGFkYXRhKGZpbmREYXRhKTsKLX0KLQot
Ym9vbCBjcmVhdGVTeW1ib2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBT
dHJpbmcmIHN5bWJvbGljTGlua1BhdGgpCi17Ci0gICAgcmV0dXJuICE6OkNyZWF0ZVN5bWJvbGlj
TGlua1coc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKHN5bWJvbGljTGlua1BhdGgpLmRhdGEo
KSwgc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKHRhcmdldFBhdGgpLmRhdGEoKSwgMCk7Ci19
Ci0KLWJvb2wgZmlsZUV4aXN0cyhjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgV0lOMzJfRklO
RF9EQVRBVyBmaW5kRGF0YTsKLSAgICByZXR1cm4gZ2V0RmluZERhdGEocGF0aCwgZmluZERhdGEp
OwotfQotCi1ib29sIGRlbGV0ZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIFN0cmlu
ZyBmaWxlbmFtZSA9IHBhdGg7Ci0gICAgcmV0dXJuICEhRGVsZXRlRmlsZVcoc3RyaW5nVG9OdWxs
VGVybWluYXRlZFdDaGFyKGZpbGVuYW1lKS5kYXRhKCkpOwotfQotCi1ib29sIGRlbGV0ZUVtcHR5
RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBTdHJpbmcgZmlsZW5hbWUgPSBw
YXRoOwotICAgIHJldHVybiAhIVJlbW92ZURpcmVjdG9yeVcoc3RyaW5nVG9OdWxsVGVybWluYXRl
ZFdDaGFyKGZpbGVuYW1lKS5kYXRhKCkpOwotfQotCi1ib29sIG1vdmVGaWxlKGNvbnN0IFN0cmlu
ZyYgb2xkUGF0aCwgY29uc3QgU3RyaW5nJiBuZXdQYXRoKQotewotICAgIFN0cmluZyBvbGRGaWxl
bmFtZSA9IG9sZFBhdGg7Ci0gICAgU3RyaW5nIG5ld0ZpbGVuYW1lID0gbmV3UGF0aDsKLSAgICBy
ZXR1cm4gISE6Ok1vdmVGaWxlRXgoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKG9sZEZpbGVu
YW1lKS5kYXRhKCksIHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihuZXdGaWxlbmFtZSkuZGF0
YSgpLCBNT1ZFRklMRV9DT1BZX0FMTE9XRUQgfCBNT1ZFRklMRV9SRVBMQUNFX0VYSVNUSU5HKTsK
LX0KLQotU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChjb25zdCBTdHJpbmcmIHBhdGgs
IGNvbnN0IFN0cmluZyYgY29tcG9uZW50KQotewotICAgIFZlY3RvcjxVQ2hhcj4gYnVmZmVyKE1B
WF9QQVRIKTsKLQotICAgIGlmIChwYXRoLmxlbmd0aCgpICsgMSA+IGJ1ZmZlci5zaXplKCkpCi0g
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIFN0cmluZ1ZpZXcocGF0aCkuZ2V0Q2hhcmFj
dGVyc1dpdGhVcGNvbnZlcnQoYnVmZmVyLmRhdGEoKSk7Ci0gICAgYnVmZmVyW3BhdGgubGVuZ3Ro
KCldID0gJ1wwJzsKLQotICAgIGlmICghUGF0aEFwcGVuZFcoYnVmZmVyLmRhdGEoKSwgc3RyaW5n
VG9OdWxsVGVybWluYXRlZFdDaGFyKGNvbXBvbmVudCkuZGF0YSgpKSkKLSAgICAgICAgcmV0dXJu
IFN0cmluZygpOwotCi0gICAgYnVmZmVyLnNocmluayh3Y3NsZW4oYnVmZmVyLmRhdGEoKSkpOwot
Ci0gICAgcmV0dXJuIFN0cmluZzo6YWRvcHQoV1RGTW92ZShidWZmZXIpKTsKLX0KLQotU3RyaW5n
IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMoU3RyaW5nVmlldyBwYXRoLCBjb25zdCBWZWN0b3I8
U3RyaW5nVmlldz4mIGNvbXBvbmVudHMpCi17Ci0gICAgU3RyaW5nIHJlc3VsdCA9IHBhdGgudG9T
dHJpbmcoKTsKLSAgICBmb3IgKGF1dG8mIGNvbXBvbmVudCA6IGNvbXBvbmVudHMpCi0gICAgICAg
IHJlc3VsdCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZXN1bHQsIGNvbXBvbmVudC50b1N0
cmluZygpKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0jaWYgIVVTRShDRikKLQotQ1N0cmlu
ZyBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIGF1
dG8gdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzID0gcGF0aC51cGNvbnZlcnRlZENoYXJhY3RlcnMoKTsK
LQotICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzID0gdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzOwot
ICAgIGludCBzaXplID0gV2lkZUNoYXJUb011bHRpQnl0ZShDUF9BQ1AsIDAsIGNoYXJhY3RlcnMs
IHBhdGgubGVuZ3RoKCksIDAsIDAsIDAsIDApIC0gMTsKLQotICAgIGNoYXIqIGJ1ZmZlcjsKLSAg
ICBDU3RyaW5nIHN0cmluZyA9IENTdHJpbmc6Om5ld1VuaW5pdGlhbGl6ZWQoc2l6ZSwgYnVmZmVy
KTsKLQotICAgIFdpZGVDaGFyVG9NdWx0aUJ5dGUoQ1BfQUNQLCAwLCBjaGFyYWN0ZXJzLCBwYXRo
Lmxlbmd0aCgpLCBidWZmZXIsIHNpemUsIDAsIDApOwotCi0gICAgcmV0dXJuIHN0cmluZzsKLX0K
LQotI2VuZGlmIC8vICFVU0UoQ0YpCi0KLWJvb2wgbWFrZUFsbERpcmVjdG9yaWVzKGNvbnN0IFN0
cmluZyYgcGF0aCkKLXsKLSAgICBTdHJpbmcgZnVsbFBhdGggPSBwYXRoOwotICAgIGlmIChTSENy
ZWF0ZURpcmVjdG9yeUV4KDAsIHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihmdWxsUGF0aCku
ZGF0YSgpLCAwKSAhPSBFUlJPUl9TVUNDRVNTKSB7Ci0gICAgICAgIERXT1JEIGVycm9yID0gR2V0
TGFzdEVycm9yKCk7Ci0gICAgICAgIGlmIChlcnJvciAhPSBFUlJPUl9GSUxFX0VYSVNUUyAmJiBl
cnJvciAhPSBFUlJPUl9BTFJFQURZX0VYSVNUUykgewotICAgICAgICAgICAgTE9HX0VSUk9SKCJG
YWlsZWQgdG8gY3JlYXRlIHBhdGggJXMiLCBwYXRoLmFzY2lpKCkuZGF0YSgpKTsKLSAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0K
LQotU3RyaW5nIGhvbWVEaXJlY3RvcnlQYXRoKCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwot
ICAgIHJldHVybiAiIjsKLX0KLQotU3RyaW5nIHBhdGhHZXRGaWxlTmFtZShjb25zdCBTdHJpbmcm
IHBhdGgpCi17Ci0gICAgcmV0dXJuIG51bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmluZyg6OlBhdGhG
aW5kRmlsZU5hbWUoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKHBhdGgpLmRhdGEoKSkpOwot
fQotCi1TdHJpbmcgZGlyZWN0b3J5TmFtZShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgU3Ry
aW5nIG5hbWUgPSBwYXRoLmxlZnQocGF0aC5sZW5ndGgoKSAtIHBhdGhHZXRGaWxlTmFtZShwYXRo
KS5sZW5ndGgoKSk7Ci0gICAgaWYgKG5hbWUuY2hhcmFjdGVyU3RhcnRpbmdBdChuYW1lLmxlbmd0
aCgpIC0gMSkgPT0gJ1xcJykgewotICAgICAgICAvLyBSZW1vdmUgYW55IHRyYWlsaW5nICJcIi4K
LSAgICAgICAgbmFtZS50cnVuY2F0ZShuYW1lLmxlbmd0aCgpIC0gMSk7Ci0gICAgfQotICAgIHJl
dHVybiBuYW1lOwotfQotCi1zdGF0aWMgU3RyaW5nIGJ1bmRsZU5hbWUoKQotewotICAgIHN0YXRp
YyBjb25zdCBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IG5hbWUgPSBbXSB7Ci0gICAgICAgIFN0cmlu
ZyBuYW1lIHsgIldlYktpdCJfcyB9OwotCi0jaWYgVVNFKENGKQotICAgICAgICBpZiAoQ0ZCdW5k
bGVSZWYgYnVuZGxlID0gQ0ZCdW5kbGVHZXRNYWluQnVuZGxlKCkpIHsKLSAgICAgICAgICAgIGlm
IChDRlR5cGVSZWYgYnVuZGxlRXhlY3V0YWJsZSA9IENGQnVuZGxlR2V0VmFsdWVGb3JJbmZvRGlj
dGlvbmFyeUtleShidW5kbGUsIGtDRkJ1bmRsZUV4ZWN1dGFibGVLZXkpKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKENGR2V0VHlwZUlEKGJ1bmRsZUV4ZWN1dGFibGUpID09IENGU3RyaW5nR2V0VHlw
ZUlEKCkpCi0gICAgICAgICAgICAgICAgICAgIG5hbWUgPSByZWludGVycHJldF9jYXN0PENGU3Ry
aW5nUmVmPihidW5kbGVFeGVjdXRhYmxlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotI2Vu
ZGlmCi0KLSAgICAgICAgcmV0dXJuIG5hbWU7Ci0gICAgfSgpOwotCi0gICAgcmV0dXJuIG5hbWU7
Ci19Ci0KLXN0YXRpYyBTdHJpbmcgc3RvcmFnZURpcmVjdG9yeShEV09SRCBwYXRoSWRlbnRpZmll
cikKLXsKLSAgICBWZWN0b3I8VUNoYXI+IGJ1ZmZlcihNQVhfUEFUSCk7Ci0gICAgaWYgKEZBSUxF
RChTSEdldEZvbGRlclBhdGhXKDAsIHBhdGhJZGVudGlmaWVyIHwgQ1NJRExfRkxBR19DUkVBVEUs
IDAsIDAsIGJ1ZmZlci5kYXRhKCkpKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIGJ1
ZmZlci5yZXNpemUod2NzbGVuKGJ1ZmZlci5kYXRhKCkpKTsKLSAgICBTdHJpbmcgZGlyZWN0b3J5
ID0gU3RyaW5nOjphZG9wdChXVEZNb3ZlKGJ1ZmZlcikpOwotCi0gICAgZGlyZWN0b3J5ID0gcGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRpcmVjdG9yeSwgIkFwcGxlIENvbXB1dGVyXFwiICsgYnVu
ZGxlTmFtZSgpKTsKLSAgICBpZiAoIW1ha2VBbGxEaXJlY3RvcmllcyhkaXJlY3RvcnkpKQotICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICByZXR1cm4gZGlyZWN0b3J5OwotfQotCi1zdGF0
aWMgU3RyaW5nIGNhY2hlZFN0b3JhZ2VEaXJlY3RvcnkoRFdPUkQgcGF0aElkZW50aWZpZXIpCi17
Ci0gICAgc3RhdGljIEhhc2hNYXA8RFdPUkQsIFN0cmluZz4gZGlyZWN0b3JpZXM7Ci0KLSAgICBI
YXNoTWFwPERXT1JELCBTdHJpbmc+OjppdGVyYXRvciBpdCA9IGRpcmVjdG9yaWVzLmZpbmQocGF0
aElkZW50aWZpZXIpOwotICAgIGlmIChpdCAhPSBkaXJlY3Rvcmllcy5lbmQoKSkKLSAgICAgICAg
cmV0dXJuIGl0LT52YWx1ZTsKLQotICAgIFN0cmluZyBkaXJlY3RvcnkgPSBzdG9yYWdlRGlyZWN0
b3J5KHBhdGhJZGVudGlmaWVyKTsKLSAgICBkaXJlY3Rvcmllcy5hZGQocGF0aElkZW50aWZpZXIs
IGRpcmVjdG9yeSk7Ci0KLSAgICByZXR1cm4gZGlyZWN0b3J5OwotfQotCi1zdGF0aWMgU3RyaW5n
IGdlbmVyYXRlVGVtcG9yYXJ5UGF0aChjb25zdCBGdW5jdGlvbjxib29sKGNvbnN0IFN0cmluZyYp
PiYgYWN0aW9uKQotewotICAgIHdjaGFyX3QgdGVtcFBhdGhbTUFYX1BBVEhdOwotICAgIGludCB0
ZW1wUGF0aExlbmd0aCA9IDo6R2V0VGVtcFBhdGhXKFdURl9BUlJBWV9MRU5HVEgodGVtcFBhdGgp
LCB0ZW1wUGF0aCk7Ci0gICAgaWYgKHRlbXBQYXRoTGVuZ3RoIDw9IDAgfHwgdGVtcFBhdGhMZW5n
dGggPiBXVEZfQVJSQVlfTEVOR1RIKHRlbXBQYXRoKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygp
OwotCi0gICAgU3RyaW5nIHByb3Bvc2VkUGF0aDsKLSAgICBkbyB7Ci0gICAgICAgIHdjaGFyX3Qg
dGVtcEZpbGVbXSA9IEwiWFhYWFhYWFgudG1wIjsgLy8gVXNlIDguMyBzdHlsZSBuYW1lIChtb3Jl
IGNoYXJhY3RlcnMgYXJlbid0IGhlbHBmdWwgZHVlIHRvIDguMyBzaG9ydCBmaWxlIG5hbWVzKQot
ICAgICAgICBjb25zdCBpbnQgcmFuZG9tUGFydExlbmd0aCA9IDg7Ci0gICAgICAgIGNyeXB0b2dy
YXBoaWNhbGx5UmFuZG9tVmFsdWVzKHRlbXBGaWxlLCByYW5kb21QYXJ0TGVuZ3RoICogc2l6ZW9m
KHdjaGFyX3QpKTsKLQotICAgICAgICAvLyBMaW1pdCB0byB2YWxpZCBmaWxlc3lzdGVtIGNoYXJh
Y3RlcnMsIGFsc28gZXhjbHVkaW5nIG90aGVycyB0aGF0IGNvdWxkIGJlIHByb2JsZW1hdGljLCBs
aWtlIHB1bmN0dWF0aW9uLgotICAgICAgICAvLyBkb24ndCBpbmNsdWRlIGJvdGggdXBwZXIgYW5k
IGxvd2VyY2FzZSBzaW5jZSBXaW5kb3dzIGZpbGUgc3lzdGVtcyBhcmUgdHlwaWNhbGx5IG5vdCBj
YXNlIHNlbnNpdGl2ZS4KLSAgICAgICAgY29uc3QgY2hhciB2YWxpZENoYXJzW10gPSAiMDEyMzQ1
Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IjsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCByYW5kb21QYXJ0TGVuZ3RoOyArK2kpCi0gICAgICAgICAgICB0ZW1wRmlsZVtpXSA9IHZh
bGlkQ2hhcnNbdGVtcEZpbGVbaV0gJSAoc2l6ZW9mKHZhbGlkQ2hhcnMpIC0gMSldOwotCi0gICAg
ICAgIEFTU0VSVCh3Y3NsZW4odGVtcEZpbGUpID09IFdURl9BUlJBWV9MRU5HVEgodGVtcEZpbGUp
IC0gMSk7Ci0KLSAgICAgICAgcHJvcG9zZWRQYXRoID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KG51bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmluZyh0ZW1wUGF0aCksIG51bGxUZXJtaW5hdGVkV0No
YXJUb1N0cmluZyh0ZW1wRmlsZSkpOwotICAgICAgICBpZiAocHJvcG9zZWRQYXRoLmlzRW1wdHko
KSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0gd2hpbGUgKCFhY3Rpb24ocHJvcG9zZWRQYXRo
KSk7Ci0KLSAgICByZXR1cm4gcHJvcG9zZWRQYXRoOwotfQotCi1TdHJpbmcgb3BlblRlbXBvcmFy
eUZpbGUoY29uc3QgU3RyaW5nJiwgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpCi17Ci0gICAg
aGFuZGxlID0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7Ci0KLSAgICBTdHJpbmcgcHJvcG9zZWRQYXRo
ID0gZ2VuZXJhdGVUZW1wb3JhcnlQYXRoKFsmaGFuZGxlXShjb25zdCBTdHJpbmcmIHByb3Bvc2Vk
UGF0aCkgewotICAgICAgICAvLyB1c2UgQ1JFQVRFX05FVyB0byBhdm9pZCBvdmVyd3JpdGluZyBh
biBleGlzdGluZyBmaWxlIHdpdGggdGhlIHNhbWUgbmFtZQotICAgICAgICBoYW5kbGUgPSA6OkNy
ZWF0ZUZpbGVXKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihwcm9wb3NlZFBhdGgpLmRhdGEo
KSwgR0VORVJJQ19SRUFEIHwgR0VORVJJQ19XUklURSwgMCwgMCwgQ1JFQVRFX05FVywgRklMRV9B
VFRSSUJVVEVfTk9STUFMLCAwKTsKLQotICAgICAgICByZXR1cm4gaXNIYW5kbGVWYWxpZChoYW5k
bGUpIHx8IEdldExhc3RFcnJvcigpID09IEVSUk9SX0FMUkVBRFlfRVhJU1RTOwotICAgIH0pOwot
Ci0gICAgaWYgKCFpc0hhbmRsZVZhbGlkKGhhbmRsZSkpCi0gICAgICAgIHJldHVybiBTdHJpbmco
KTsKLQotICAgIHJldHVybiBwcm9wb3NlZFBhdGg7Ci19Ci0KLVBsYXRmb3JtRmlsZUhhbmRsZSBv
cGVuRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVPcGVuTW9kZSBtb2RlKQotewotICAgIERX
T1JEIGRlc2lyZWRBY2Nlc3MgPSAwOwotICAgIERXT1JEIGNyZWF0aW9uRGlzcG9zaXRpb24gPSAw
OwotICAgIERXT1JEIHNoYXJlTW9kZSA9IDA7Ci0gICAgc3dpdGNoIChtb2RlKSB7Ci0gICAgY2Fz
ZSBGaWxlT3Blbk1vZGU6OlJlYWQ6Ci0gICAgICAgIGRlc2lyZWRBY2Nlc3MgPSBHRU5FUklDX1JF
QUQ7Ci0gICAgICAgIGNyZWF0aW9uRGlzcG9zaXRpb24gPSBPUEVOX0VYSVNUSU5HOwotICAgICAg
ICBzaGFyZU1vZGUgPSBGSUxFX1NIQVJFX1JFQUQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
RmlsZU9wZW5Nb2RlOjpXcml0ZToKLSAgICAgICAgZGVzaXJlZEFjY2VzcyA9IEdFTkVSSUNfV1JJ
VEU7Ci0gICAgICAgIGNyZWF0aW9uRGlzcG9zaXRpb24gPSBDUkVBVEVfQUxXQVlTOwotICAgICAg
ICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICB9Ci0KLSAgICBTdHJpbmcgZGVzdGluYXRpb24gPSBwYXRoOwotICAgIHJldHVybiBDcmVhdGVG
aWxlKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihkZXN0aW5hdGlvbikuZGF0YSgpLCBkZXNp
cmVkQWNjZXNzLCBzaGFyZU1vZGUsIDAsIGNyZWF0aW9uRGlzcG9zaXRpb24sIEZJTEVfQVRUUklC
VVRFX05PUk1BTCwgMCk7Ci19Ci0KLXZvaWQgY2xvc2VGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSYg
aGFuZGxlKQotewotICAgIGlmIChpc0hhbmRsZVZhbGlkKGhhbmRsZSkpIHsKLSAgICAgICAgOjpD
bG9zZUhhbmRsZShoYW5kbGUpOwotICAgICAgICBoYW5kbGUgPSBpbnZhbGlkUGxhdGZvcm1GaWxl
SGFuZGxlOwotICAgIH0KLX0KLQotbG9uZyBsb25nIHNlZWtGaWxlKFBsYXRmb3JtRmlsZUhhbmRs
ZSBoYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQsIEZpbGVTZWVrT3JpZ2luIG9yaWdpbikKLXsKLSAg
ICBEV09SRCBtb3ZlTWV0aG9kID0gRklMRV9CRUdJTjsKLQotICAgIGlmIChvcmlnaW4gPT0gRmls
ZVNlZWtPcmlnaW46OkN1cnJlbnQpCi0gICAgICAgIG1vdmVNZXRob2QgPSBGSUxFX0NVUlJFTlQ7
Ci0gICAgZWxzZSBpZiAob3JpZ2luID09IEZpbGVTZWVrT3JpZ2luOjpFbmQpCi0gICAgICAgIG1v
dmVNZXRob2QgPSBGSUxFX0VORDsKLQotICAgIExBUkdFX0lOVEVHRVIgbGFyZ2VPZmZzZXQ7Ci0g
ICAgbGFyZ2VPZmZzZXQuUXVhZFBhcnQgPSBvZmZzZXQ7Ci0KLSAgICBsYXJnZU9mZnNldC5Mb3dQ
YXJ0ID0gU2V0RmlsZVBvaW50ZXIoaGFuZGxlLCBsYXJnZU9mZnNldC5Mb3dQYXJ0LCAmbGFyZ2VP
ZmZzZXQuSGlnaFBhcnQsIG1vdmVNZXRob2QpOwotCi0gICAgaWYgKGxhcmdlT2Zmc2V0Lkxvd1Bh
cnQgPT0gSU5WQUxJRF9TRVRfRklMRV9QT0lOVEVSICYmIEdldExhc3RFcnJvcigpICE9IE5PX0VS
Uk9SKQotICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICByZXR1cm4gbGFyZ2VPZmZzZXQuUXVhZFBh
cnQ7Ci19Ci0KLWludCB3cml0ZVRvRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBjb25z
dCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQotewotICAgIGlmICghaXNIYW5kbGVWYWxpZChoYW5k
bGUpKQotICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICBEV09SRCBieXRlc1dyaXR0ZW47Ci0gICAg
Ym9vbCBzdWNjZXNzID0gV3JpdGVGaWxlKGhhbmRsZSwgZGF0YSwgbGVuZ3RoLCAmYnl0ZXNXcml0
dGVuLCAwKTsKLQotICAgIGlmICghc3VjY2VzcykKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxpbnQ+KGJ5dGVzV3JpdHRlbik7Ci19Ci0KLWludCByZWFkRnJvbUZp
bGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKLXsK
LSAgICBpZiAoIWlzSGFuZGxlVmFsaWQoaGFuZGxlKSkKLSAgICAgICAgcmV0dXJuIC0xOwotCi0g
ICAgRFdPUkQgYnl0ZXNSZWFkOwotICAgIGJvb2wgc3VjY2VzcyA9IDo6UmVhZEZpbGUoaGFuZGxl
LCBkYXRhLCBsZW5ndGgsICZieXRlc1JlYWQsIDApOwotCi0gICAgaWYgKCFzdWNjZXNzKQotICAg
ICAgICByZXR1cm4gLTE7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oYnl0ZXNSZWFkKTsK
LX0KLQotYm9vbCBoYXJkTGlua09yQ29weUZpbGUoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0
IFN0cmluZyYgZGVzdGluYXRpb24pCi17Ci0gICAgcmV0dXJuICEhOjpDb3B5RmlsZShzdHJpbmdU
b051bGxUZXJtaW5hdGVkV0NoYXIoc291cmNlKS5kYXRhKCksIHN0cmluZ1RvTnVsbFRlcm1pbmF0
ZWRXQ2hhcihkZXN0aW5hdGlvbikuZGF0YSgpLCBUUlVFKTsKLX0KLQotU3RyaW5nIGxvY2FsVXNl
clNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIGNhY2hlZFN0b3JhZ2VE
aXJlY3RvcnkoQ1NJRExfTE9DQUxfQVBQREFUQSk7Ci19Ci0KLVN0cmluZyByb2FtaW5nVXNlclNw
ZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIGNhY2hlZFN0b3JhZ2VEaXJl
Y3RvcnkoQ1NJRExfQVBQREFUQSk7Ci19Ci0KLVZlY3RvcjxTdHJpbmc+IGxpc3REaXJlY3Rvcnko
Y29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIGNvbnN0IFN0cmluZyYgZmlsdGVyKQotewotICAgIFZl
Y3RvcjxTdHJpbmc+IGVudHJpZXM7Ci0KLSAgICBQYXRoV2Fsa2VyIHdhbGtlcihkaXJlY3Rvcnks
IGZpbHRlcik7Ci0gICAgaWYgKCF3YWxrZXIuaXNWYWxpZCgpKQotICAgICAgICByZXR1cm4gZW50
cmllczsKLQotICAgIGRvIHsKLSAgICAgICAgaWYgKHdhbGtlci5kYXRhKCkuZHdGaWxlQXR0cmli
dXRlcyAmIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWQotICAgICAgICAgICAgJiYgKCF3Y3NjbXAo
d2Fsa2VyLmRhdGEoKS5jRmlsZU5hbWUsIEwiLiIpIHx8ICF3Y3NjbXAod2Fsa2VyLmRhdGEoKS5j
RmlsZU5hbWUsIEwiLi4iKSkpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBlbnRy
aWVzLmFwcGVuZChkaXJlY3RvcnkgKyAiXFwiICsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVQ2hh
cio+KHdhbGtlci5kYXRhKCkuY0ZpbGVOYW1lKSk7Ci0gICAgfSB3aGlsZSAod2Fsa2VyLnN0ZXAo
KSk7Ci0KLSAgICByZXR1cm4gZW50cmllczsKLX0KLQotYm9vbCBnZXRWb2x1bWVGcmVlU3BhY2Uo
Y29uc3QgU3RyaW5nJiwgdWludDY0X3QmKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAg
cmV0dXJuIGZhbHNlOwotfQotCi1PcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29u
c3QgQ1N0cmluZyYgZnNGaWxlKQotewotICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUoZnNGaWxl
LmRhdGEoKSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKLSAgICBpZiAoIWlzSGFuZGxlVmFsaWQoaGFu
ZGxlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIEJZX0hBTkRMRV9GSUxF
X0lORk9STUFUSU9OIGZpbGVJbmZvcm1hdGlvbiA9IHsgfTsKLSAgICBpZiAoITo6R2V0RmlsZUlu
Zm9ybWF0aW9uQnlIYW5kbGUoaGFuZGxlLCAmZmlsZUluZm9ybWF0aW9uKSkgewotICAgICAgICBj
bG9zZUZpbGUoaGFuZGxlKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICB9Ci0K
LSAgICBjbG9zZUZpbGUoaGFuZGxlKTsKLQotICAgIHJldHVybiBmaWxlSW5mb3JtYXRpb24uZHdW
b2x1bWVTZXJpYWxOdW1iZXI7Ci19Ci0KLVN0cmluZyByZWFsUGF0aChjb25zdCBTdHJpbmcmIGZp
bGVQYXRoKQotewotICAgIHJldHVybiBnZXRGaW5hbFBhdGhOYW1lKGZpbGVQYXRoKTsKLX0KLQot
U3RyaW5nIGNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIGdlbmVyYXRl
VGVtcG9yYXJ5UGF0aChbXShjb25zdCBTdHJpbmcmIHByb3Bvc2VkUGF0aCkgewotICAgICAgICBy
ZXR1cm4gbWFrZUFsbERpcmVjdG9yaWVzKHByb3Bvc2VkUGF0aCk7Ci0gICAgfSk7Ci19Ci0KLWJv
b2wgZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnlQYXRoKQot
ewotICAgIFNIRklMRU9QU1RSVUNUIGRlbGV0ZU9wZXJhdGlvbiA9IHsKLSAgICAgICAgbnVsbHB0
ciwKLSAgICAgICAgRk9fREVMRVRFLAotICAgICAgICBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0No
YXIoZGlyZWN0b3J5UGF0aCkuZGF0YSgpLAotICAgICAgICBMIiIsCi0gICAgICAgIEZPRl9OT0NP
TkZJUk1BVElPTiB8IEZPRl9OT0VSUk9SVUkgfCBGT0ZfU0lMRU5ULAotICAgICAgICBmYWxzZSwK
LSAgICAgICAgMCwKLSAgICAgICAgTCIiCi0gICAgfTsKLSAgICByZXR1cm4gIVNIRmlsZU9wZXJh
dGlvbigmZGVsZXRlT3BlcmF0aW9uKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgRmlsZVN5c3RlbQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL1BhdGhXYWxrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BhdGhX
YWxrZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMjA0MDdiMWNmZWE2MjRm
M2ExNTY5YThmZDY3NjhhNWRlYmVkMzYzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXRoV2Fsa2VyLmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiUGF0aFdhbGtlci5oIgotCi0jaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUGF0aFdhbGtlcjo6UGF0aFdhbGtlcihjb25zdCBT
dHJpbmcmIGRpcmVjdG9yeSwgY29uc3QgU3RyaW5nJiBwYXR0ZXJuKQotewotICAgIFN0cmluZyBw
YXRoID0gZGlyZWN0b3J5ICsgIlxcIiArIHBhdHRlcm47Ci0gICAgbV9oYW5kbGUgPSA6OkZpbmRG
aXJzdEZpbGVXKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihwYXRoKS5kYXRhKCksICZtX2Rh
dGEpOwotfQotCi1QYXRoV2Fsa2VyOjp+UGF0aFdhbGtlcigpCi17Ci0gICAgaWYgKCFpc1ZhbGlk
KCkpCi0gICAgICAgIHJldHVybjsKLSAgICA6OkZpbmRDbG9zZShtX2hhbmRsZSk7Ci19Ci0KLWJv
b2wgUGF0aFdhbGtlcjo6c3RlcCgpCi17Ci0gICAgcmV0dXJuIDo6RmluZE5leHRGaWxlVyhtX2hh
bmRsZSwgJm1fZGF0YSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXRoV2Fsa2VyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vUGF0aFdhbGtlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBmYzU5ZDY3MzE4MTFiOGNhMTU4N2E0YTEyYTdkYTFlMWExNTkzZDg0Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9QYXRoV2Fsa2VyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDExLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSA8V2luZG93cy5oPgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
Y2xhc3MgUGF0aFdhbGtlciB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGF0aFdhbGtlcik7
Ci1wdWJsaWM6Ci0gICAgUGF0aFdhbGtlcihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5LCBj
b25zdCBXVEY6OlN0cmluZyYgcGF0dGVybik7Ci0gICAgflBhdGhXYWxrZXIoKTsKLQotICAgIGJv
b2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1faGFuZGxlICE9IElOVkFMSURfSEFORExFX1ZB
TFVFOyB9Ci0gICAgY29uc3QgV0lOMzJfRklORF9EQVRBVyYgZGF0YSgpIGNvbnN0IHsgcmV0dXJu
IG1fZGF0YTsgfQotCi0gICAgYm9vbCBzdGVwKCk7Ci0KLXByaXZhdGU6Ci0gICAgSEFORExFIG1f
aGFuZGxlOwotICAgIFdJTjMyX0ZJTkRfREFUQVcgbV9kYXRhOwotfTsKLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJj
aFBvcHVwTWVudURCLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1
cE1lbnVEQi5jcHAKaW5kZXggOWU2ZTRjNTJkN2I5ODM4YTFmMDdiZGQ1OWY0MDlkODE2NWZlNTY2
Ni4uZTU3MzBiMzBjY2YzZjAzZWVmZGZmOWEzMzFjMDhlZDBlMjJlNThiZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudURCLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51REIuY3BwCkBAIC0yNSw5
ICsyNSw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2VhcmNoUG9wdXBNZW51
REIuaCIKIAotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJTUUxpdGVGaWxlU3lz
dGVtLmgiCiAjaW5jbHVkZSAiU1FMaXRlVHJhbnNhY3Rpb24uaCIKKyNpbmNsdWRlIDx3dGYvRmls
ZVN5c3RlbS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWUuY3BwCmluZGV4IDc2YzljNWM3OGQ1NmQzZThkOTdkNDIxZjRkZmFhNGFi
MWJkOWVjYzAuLmM0ZmEzNTY3MGI5NTQ3Njc2YjdjNGZiOWE4MTJiM2Q2ZTZlYzk5ZTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcApAQCAtMjUsNyArMjUsNiBAQAog
I2luY2x1ZGUgIkNvbnRyb2xTdGF0ZXMuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1
ZGUgIkZpbGVMaXN0LmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkZsb2F0
Q29udmVyc2lvbi5oIgogI2luY2x1ZGUgIkZsb2F0Um91bmRlZFJlY3QuaCIKICNpbmNsdWRlICJG
b2N1c0NvbnRyb2xsZXIuaCIKQEAgLTQ1LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJTcGluQnV0dG9u
RWxlbWVudC5oIgogI2luY2x1ZGUgIlN0cmluZ1RydW5jYXRvci5oIgogI2luY2x1ZGUgIlRleHRD
b250cm9sSW5uZXJFbGVtZW50cy5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKICNpZiBFTkFCTEUoTUVURVJfRUxFTUVOVCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUd0ay5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsuY3BwCmluZGV4IGI2OTZl
YWM4ZmIxMDVlMmI3MDk2MjA2OTQ3Mzk3M2UxM2ViOWZiNjYuLmIyNTk2NmNiNTMzMjc2ODU5ZWU4
MTk2NzFhZDI1ZmRmNzdlMDNlYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZUd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lR3RrLmNwcApAQCAtMjcsNyArMjcsNiBAQAogCiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3
b3Jkcy5oIgogI2luY2x1ZGUgIkZpbGVMaXN0LmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgog
I2luY2x1ZGUgIkZsb2F0Um91bmRlZFJlY3QuaCIKICNpbmNsdWRlICJGb250RGVzY3JpcHRpb24u
aCIKICNpbmNsdWRlICJHUmVmUHRyR3RrLmgiCkBAIC01NSw2ICs1NCw3IEBACiAjaW5jbHVkZSA8
Z2RrL2dkay5oPgogI2luY2x1ZGUgPGdsaWIuaD4KICNpbmNsdWRlIDxndGsvZ3RrLmg+CisjaW5j
bHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdp
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwCmluZGV4
IGVlYjk5ODVlNjJmNWM5YTM0ODI0M2U4ZGRlOWVjY2MwYTliZGJmYjUuLjIxOTY1N2UxZjI0YWFi
YTA1ODI1YTJhNjJiMDgwNGM3ZmJiM2YzMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lV2luLmNwcApAQCAtMjQsNyArMjQsNiBAQAogCiAjaW5jbHVkZSAiQ1NTVmFs
dWVLZXl3b3Jkcy5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVt
LmgiCiAjaW5jbHVkZSAiRm9udE1ldHJpY3MuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1
ZGUgIkZyYW1lU2VsZWN0aW9uLmgiCkBAIC0zOCw2ICszNyw3IEBACiAjaW5jbHVkZSAiU3lzdGVt
SW5mby5oIgogI2luY2x1ZGUgIlVzZXJBZ2VudFN0eWxlU2hlZXRzLmgiCiAjaW5jbHVkZSAiV2Vi
Q29yZUJ1bmRsZVdpbi5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8
d3RmL1NvZnRMaW5raW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5oPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlv
bkRhdGFiYXNlLmNwcAppbmRleCA2MGVlYjhjYzJjMGY0MTJjYTJiY2VkOTgyYWU5MjdmZmIxZDZh
NDY4Li4xYWY0Mzc4OGZmZmJhYWE5MTJlMWFkOTdiYmQ5OGIxNzJkZTNmMGUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFi
YXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lz
dHJhdGlvbkRhdGFiYXNlLmNwcApAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQogCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcu
aCIKICNpbmNsdWRlICJSZWdpc3RyYXRpb25TdG9yZS5oIgogI2luY2x1ZGUgIlNRTGl0ZURhdGFi
YXNlLmgiCkBAIC0zOSw2ICszOCw3IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNp
bmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJl
YWRDb3BpZXIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9N
YWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8
d3RmL1Njb3BlLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzUGVyc2lzdGVudFN0b3JhZ2UuY3BwCmluZGV4IGMyMTBlY2FjOGE0NzQ2ZTQxNDBkNDA2NDJl
MGMzNzBhMGU1YTdlZDAuLjEwNWRkMDI4ODYwNzUwNzA5NzdjYWU4N2QyYzRhNGY0MGJiZmVmYjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lz
dGVudFN0b3JhZ2UuY3BwCkBAIC0zMyw5ICszMyw5IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01lbW9yeVN0b3JlLmgiCiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlTW9uaXRvci5oPgotI2luY2x1ZGUg
PFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvS2V5ZWRDb2RpbmcuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lz
dGVtLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYvV29ya1F1ZXVl
Lmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Rh
dGFUYXNrQmxvYi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRh
c2tCbG9iLmgKaW5kZXggNzVkMzFhNjFhNGY3NDJmMzg3ZjliNWVhMmQ0ZjYwMjk0MzYxMjg3Yy4u
ZWI3OTQ0NzI1OTViNTZlZGQ2MjBiZTI1NzZlZDIxODE4MDVkMGQ4NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmgKQEAgLTMzLDcg
KzMzLDcgQEAKIAogI2luY2x1ZGUgIk5ldHdvcmtEYXRhVGFzay5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvRmlsZVN0cmVhbUNsaWVudC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgor
I2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IEFzeW5jRmlsZVN0cmVhbTsKQEAgLTExMyw3ICsxMTMsNyBAQCBwcml2YXRlOgogICAgIHVuc2ln
bmVkIG1fc2l6ZUl0ZW1Db3VudCB7IDAgfTsKICAgICB1bnNpZ25lZCBtX3JlYWRJdGVtQ291bnQg
eyAwIH07CiAgICAgYm9vbCBtX2ZpbGVPcGVuZWQgeyBmYWxzZSB9OwotICAgIFdlYkNvcmU6OkZp
bGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBtX2Rvd25sb2FkRmlsZSB7IFdlYkNvcmU6OkZp
bGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUgfTsKKyAgICBGaWxlU3lzdGVtOjpQ
bGF0Zm9ybUZpbGVIYW5kbGUgbV9kb3dubG9hZEZpbGUgeyBGaWxlU3lzdGVtOjppbnZhbGlkUGxh
dGZvcm1GaWxlSGFuZGxlIH07CiAKICAgICBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRh
RmlsZVJlZmVyZW5jZT4+IG1fZmlsZVJlZmVyZW5jZXM7CiAgICAgUmVmUHRyPFNhbmRib3hFeHRl
bnNpb24+IG1fc2FuZGJveEV4dGVuc2lvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggNjA3MjAxMTI5YmZmMDcyNmQ1ZTQ1YTUzYmM2
ZmMxMzFhZmJmY2Q0Mi4uMGJiNTc1YTkyN2NhZWYwMGQ5ZTBlZTQ2MDU4MzQ3N2M3MWJjNTY2MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAK
QEAgLTE2MTgsNyArMTYxOCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldENhY2hlTW9kZWwo
Q2FjaGVNb2RlbCBjYWNoZU1vZGVsKQogICAgIHVuc2lnbmVkIHVybENhY2hlTWVtb3J5Q2FwYWNp
dHkgPSAwOwogICAgIHVpbnQ2NF90IHVybENhY2hlRGlza0NhcGFjaXR5ID0gMDsKICAgICB1aW50
NjRfdCBkaXNrRnJlZVNpemUgPSAwOwotICAgIGlmIChXZWJDb3JlOjpGaWxlU3lzdGVtOjpnZXRW
b2x1bWVGcmVlU3BhY2UobV9kaXNrQ2FjaGVEaXJlY3RvcnksIGRpc2tGcmVlU2l6ZSkpIHsKKyAg
ICBpZiAoRmlsZVN5c3RlbTo6Z2V0Vm9sdW1lRnJlZVNwYWNlKG1fZGlza0NhY2hlRGlyZWN0b3J5
LCBkaXNrRnJlZVNpemUpKSB7CiAgICAgICAgIC8vIEFzIGEgZnVkZ2UgZmFjdG9yLCB1c2UgMTAw
MCBpbnN0ZWFkIG9mIDEwMjQsIGluIGNhc2UgdGhlIHJlcG9ydGVkIGJ5dGUKICAgICAgICAgLy8g
Y291bnQgZG9lc24ndCBhbGlnbiBleGFjdGx5IHRvIGEgbWVnYWJ5dGUgYm91bmRhcnkuCiAgICAg
ICAgIGRpc2tGcmVlU2l6ZSAvPSBLQiAqIDEwMDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKaW5kZXggZjE3
ZmQ5ZjkyYmU1ZDJhNTA1NDVjMDc5OWUzN2Q5YWUwY2YzZWZiZC4uMWUzZTExYjE5OGMzNTI3MjBh
MDNmNTc5ZDI5OTQ3ZjliZWVmZGI1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcApAQCAtNTIsNyArNTIs
NyBAQCBTdHJpbmcgRW5naW5lOjpjYWNoZXNSb290UGF0aChjb25zdCBXZWJDb3JlOjpDbGllbnRP
cmlnaW4mIG9yaWdpbikKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIEtleSBrZXkob3JpZ2lu
LnRvcE9yaWdpbi50b1N0cmluZygpLCBvcmlnaW4uY2xpZW50T3JpZ2luLnRvU3RyaW5nKCksIHsg
fSwgeyB9LCBzYWx0KCkpOwotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQocm9vdFBhdGgoKSwga2V5Lmhhc2hBc1N0cmluZygpKTsKKyAgICBy
ZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJvb3RQYXRoKCksIGtl
eS5oYXNoQXNTdHJpbmcoKSk7CiB9CiAKIEVuZ2luZTo6fkVuZ2luZSgpCkBAIC0yOTEsOSArMjkx
LDkgQEAgdm9pZCBFbmdpbmU6OmluaXRpYWxpemUoQ29tcGxldGlvbkNhbGxiYWNrJiYgY2FsbGJh
Y2spCiAgICAgaWYgKCFzaG91bGRDb21wdXRlU2FsdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
U3RyaW5nIHNhbHRQYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KG1fcm9vdFBhdGgsICJzYWx0Il9zKTsKKyAgICBTdHJpbmcgc2FsdFBhdGggPSBGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9yb290UGF0aCwgInNhbHQiX3MpOwog
ICAgIG1faW9RdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhp
cyksIHNhbHRQYXRoID0gV1RGTW92ZShzYWx0UGF0aCldICgpIG11dGFibGUgewotICAgICAgICBX
ZWJDb3JlOjpGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMobV9yb290UGF0aCk7CisgICAg
ICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhtX3Jvb3RQYXRoKTsKICAgICAgICAg
UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1Ro
aXMpLCBzYWx0ID0gcmVhZE9yTWFrZVNhbHQoc2FsdFBhdGgpXSgpIG11dGFibGUgewogICAgICAg
ICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0zODMsOSAr
MzgzLDkgQEAgdm9pZCBFbmdpbmU6OndyaXRlRmlsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBO
ZXR3b3JrQ2FjaGU6OkRhdGEmJiBkYXRhLCBXZWJDb3IKICAgICBtX3BlbmRpbmdXcml0ZUNhbGxi
YWNrcy5hZGQoKyttX3BlbmRpbmdDYWxsYmFja3NDb3VudGVyLCBXVEZNb3ZlKGNhbGxiYWNrKSk7
CiAgICAgbV9pb1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0
aGlzKSwgaWRlbnRpZmllciA9IG1fcGVuZGluZ0NhbGxiYWNrc0NvdW50ZXIsIGRhdGEgPSBXVEZN
b3ZlKGRhdGEpLCBmaWxlbmFtZSA9IGZpbGVuYW1lLmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUg
ewogCi0gICAgICAgIFN0cmluZyBkaXJlY3RvcnlQYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6
ZGlyZWN0b3J5TmFtZShmaWxlbmFtZSk7Ci0gICAgICAgIGlmICghV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6ZmlsZUV4aXN0cyhkaXJlY3RvcnlQYXRoKSkKLSAgICAgICAgICAgIFdlYkNvcmU6OkZpbGVT
eXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhkaXJlY3RvcnlQYXRoKTsKKyAgICAgICAgU3RyaW5n
IGRpcmVjdG9yeVBhdGggPSBGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKGZpbGVuYW1lKTsKKyAg
ICAgICAgaWYgKCFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGRpcmVjdG9yeVBhdGgpKQorICAgICAg
ICAgICAgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKGRpcmVjdG9yeVBhdGgpOwogCiAg
ICAgICAgIGF1dG8gY2hhbm5lbCA9IElPQ2hhbm5lbDo6b3BlbihmaWxlbmFtZSwgSU9DaGFubmVs
OjpUeXBlOjpDcmVhdGUpOwogICAgICAgICBjaGFubmVsLT53cml0ZSgwLCBkYXRhLCBudWxscHRy
LCBbdGhpcywgd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgaWRlbnRpZmllcl0oaW50IGVy
cm9yKSBtdXRhYmxlIHsKQEAgLTQ0NSw3ICs0NDUsNyBAQCB2b2lkIEVuZ2luZTo6cmVtb3ZlRmls
ZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2lvUXVl
dWUtPmRpc3BhdGNoKFtmaWxlbmFtZSA9IGZpbGVuYW1lLmlzb2xhdGVkQ29weSgpXSgpIG11dGFi
bGUgewotICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGZpbGVuYW1lKTsK
KyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShmaWxlbmFtZSk7CiAgICAgfSk7CiB9CiAK
QEAgLTQ4Nyw4ICs0ODcsOCBAQCB2b2lkIEVuZ2luZTo6ZmV0Y2hFbnRyaWVzKGJvb2wgc2hvdWxk
Q29tcHV0ZVNpemUsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChWZQogICAgIH0KIAogICAg
IGF1dG8gdGFza0NvdW50ZXIgPSBSZWFkT3JpZ2luc1Rhc2tDb3VudGVyOjpjcmVhdGUoV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgIGZvciAoYXV0byYgZm9sZGVyUGF0aCA6IFdlYkNv
cmU6OkZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobV9yb290UGF0aCwgIioiKSkgewotICAgICAg
ICBpZiAoIVdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVJc0RpcmVjdG9yeShmb2xkZXJQYXRoLCBX
ZWJDb3JlOjpGaWxlU3lzdGVtOjpTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpObykpCisgICAg
Zm9yIChhdXRvJiBmb2xkZXJQYXRoIDogRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShtX3Jvb3RQ
YXRoLCAiKiIpKSB7CisgICAgICAgIGlmICghRmlsZVN5c3RlbTo6ZmlsZUlzRGlyZWN0b3J5KGZv
bGRlclBhdGgsIEZpbGVTeXN0ZW06OlNob3VsZEZvbGxvd1N5bWJvbGljTGlua3M6Ok5vKSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBDYWNoZXM6OnJldHJpZXZlT3JpZ2luRnJvbURp
cmVjdG9yeShmb2xkZXJQYXRoLCAqbV9pb1F1ZXVlLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCBzaG91bGRDb21wdXRlU2l6ZSwgdGFza0NvdW50ZXIgPSB0YXNrQ291bnRlci5jb3B5
UmVmKCldIChhdXRvJiYgb3JpZ2luKSBtdXRhYmxlIHsKICAgICAgICAgICAgIEFTU0VSVChSdW5M
b29wOjppc01haW4oKSk7CkBAIC01MzEsOCArNTMxLDggQEAgdm9pZCBFbmdpbmU6OmNsZWFyQWxs
Q2FjaGVzRnJvbURpc2soQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGUKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgbV9pb1F1ZXVlLT5kaXNw
YXRjaChbcGF0aCA9IG1fcm9vdFBhdGguaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgIGZvciAo
YXV0byYgZmlsZW5hbWUgOiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KHBhdGgs
ICIqIikpIHsKLSAgICAgICAgICAgIGlmIChXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlSXNEaXJl
Y3RvcnkoZmlsZW5hbWUsIFdlYkNvcmU6OkZpbGVTeXN0ZW06OlNob3VsZEZvbGxvd1N5bWJvbGlj
TGlua3M6Ok5vKSkKKyAgICAgICAgZm9yIChhdXRvJiBmaWxlbmFtZSA6IEZpbGVTeXN0ZW06Omxp
c3REaXJlY3RvcnkocGF0aCwgIioiKSkgeworICAgICAgICAgICAgaWYgKEZpbGVTeXN0ZW06OmZp
bGVJc0RpcmVjdG9yeShmaWxlbmFtZSwgRmlsZVN5c3RlbTo6U2hvdWxkRm9sbG93U3ltYm9saWNM
aW5rczo6Tm8pKQogICAgICAgICAgICAgICAgIGRlbGV0ZURpcmVjdG9yeVJlY3Vyc2l2ZWx5KGZp
bGVuYW1lKTsKICAgICAgICAgfQogICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwpAQCAtNTYyLDggKzU2Miw4IEBAIHZvaWQgRW5naW5l
OjpjbGVhckNhY2hlc0Zvck9yaWdpbkZyb21EaXNrKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSYgb3JpCiAKICAgICBhdXRvIGNhbGxiYWNrQWdncmVnYXRvciA9IENhbGxiYWNrQWdn
cmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIAotICAgIGZvciAo
YXV0byYgZm9sZGVyUGF0aCA6IFdlYkNvcmU6OkZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobV9y
b290UGF0aCwgIioiKSkgewotICAgICAgICBpZiAoIVdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVJ
c0RpcmVjdG9yeShmb2xkZXJQYXRoLCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpTaG91bGRGb2xsb3dT
eW1ib2xpY0xpbmtzOjpObykpCisgICAgZm9yIChhdXRvJiBmb2xkZXJQYXRoIDogRmlsZVN5c3Rl
bTo6bGlzdERpcmVjdG9yeShtX3Jvb3RQYXRoLCAiKiIpKSB7CisgICAgICAgIGlmICghRmlsZVN5
c3RlbTo6ZmlsZUlzRGlyZWN0b3J5KGZvbGRlclBhdGgsIEZpbGVTeXN0ZW06OlNob3VsZEZvbGxv
d1N5bWJvbGljTGlua3M6Ok5vKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBDYWNo
ZXM6OnJldHJpZXZlT3JpZ2luRnJvbURpcmVjdG9yeShmb2xkZXJQYXRoLCAqbV9pb1F1ZXVlLCBb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBvcmlnaW4sIGNhbGxiYWNrQWdn
cmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCksIGZvbGRlclBhdGhdIChPcHRp
b25hbDxXZWJDb3JlOjpDbGllbnRPcmlnaW4+JiYgZm9sZGVyT3JpZ2luKSBtdXRhYmxlIHsKICAg
ICAgICAgICAgIGlmICghZm9sZGVyT3JpZ2luKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3Bw
CmluZGV4IDE5MTM0NzBjZGQyMjBjZTNiZTk3NWRmOTkwMGVmMzUwZDA3MTc2M2MuLjFmNjA4Y2Y1
MjVmOTk2YjI0ZWE0MTEzNjAwZThlMjljYjI4N2MyN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNh
Y2hlcy5jcHAKQEAgLTQyLDEyICs0MiwxMiBAQCB1c2luZyBuYW1lc3BhY2UgTmV0d29ya0NhY2hl
OwogCiBzdGF0aWMgaW5saW5lIFN0cmluZyBjYWNoZXNMaXN0RmlsZW5hbWUoY29uc3QgU3RyaW5n
JiBjYWNoZXNSb290UGF0aCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNhY2hlc1Jvb3RQYXRoLCAiY2FjaGVzbGlzdCJfcyk7Cisg
ICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChjYWNoZXNSb290
UGF0aCwgImNhY2hlc2xpc3QiX3MpOwogfQogCiBzdGF0aWMgaW5saW5lIFN0cmluZyBjYWNoZXNP
cmlnaW5GaWxlbmFtZShjb25zdCBTdHJpbmcmIGNhY2hlc1Jvb3RQYXRoKQogewotICAgIHJldHVy
biBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY2FjaGVzUm9v
dFBhdGgsICJvcmlnaW4iX3MpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoY2FjaGVzUm9vdFBhdGgsICJvcmlnaW4iX3MpOwogfQogCiBDYWNoZXM6On5D
YWNoZXMoKQpAQCAtNTgsNyArNTgsNyBAQCBDYWNoZXM6On5DYWNoZXMoKQogdm9pZCBDYWNoZXM6
OnJldHJpZXZlT3JpZ2luRnJvbURpcmVjdG9yeShjb25zdCBTdHJpbmcmIGZvbGRlclBhdGgsIFdv
cmtRdWV1ZSYgcXVldWUsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJD
b3JlOjpDbGllbnRPcmlnaW4+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIHF1ZXVl
LmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
LCBmaWxlbmFtZSA9IGNhY2hlc09yaWdpbkZpbGVuYW1lKGZvbGRlclBhdGgpXSgpIG11dGFibGUg
ewotICAgICAgICBpZiAoIVdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZmlsZW5hbWUp
KSB7CisgICAgICAgIGlmICghRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhmaWxlbmFtZSkpIHsKICAg
ICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQpOwogICAgICAgICAgICAgfSk7CkBAIC00MDgs
NyArNDA4LDcgQEAgdm9pZCBDYWNoZXM6OnJlYWRDYWNoZXNGcm9tRGlzayhXVEY6OkZ1bmN0aW9u
PHZvaWQoRXhwZWN0ZWQ8VmVjdG9yPENhY2hlPiwgRXJyb3IKICAgICB9CiAKICAgICBhdXRvIGZp
bGVuYW1lID0gY2FjaGVzTGlzdEZpbGVuYW1lKG1fcm9vdFBhdGgpOwotICAgIGlmICghV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhmaWxlbmFtZSkpIHsKKyAgICBpZiAoIUZpbGVTeXN0
ZW06OmZpbGVFeGlzdHMoZmlsZW5hbWUpKSB7CiAgICAgICAgIGNhbGxiYWNrKFZlY3RvcjxDYWNo
ZT4geyB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAppbmRleCBmZDI3Y2YwNmZlNDMx
ZmQzODRjYTJmM2I3ZTQ5MWY2ZmFjMWRlMDg2Li5mNjUxMWQ4OTljNDI4MTIyYzQyMjZkOGMyZjkx
MDgyMzA1NGJhZWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGUuY3BwCkBAIC0zMiwxMyArMzIsMTMgQEAKICNpbmNsdWRlICJOZXR3
b3JrQ2FjaGVTdG9yYWdlLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKICNpbmNsdWRl
IDxXZWJDb3JlL0NhY2hlVmFsaWRhdGlvbi5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3Rl
bS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSFRUUEhlYWRlck5hbWVzLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9Mb3dQb3dlck1vZGVOb3RpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1No
YXJlZEJ1ZmZlci5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3Rm
L01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRl
IDx3dGYvUnVuTG9vcC5oPgpAQCAtNTEsNyArNTEsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiBu
YW1lc3BhY2UgTmV0d29ya0NhY2hlIHsKIAotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU6OkZpbGVT
eXN0ZW07Cit1c2luZyBuYW1lc3BhY2UgV1RGOjpGaWxlU3lzdGVtOwogCiBzdGF0aWMgY29uc3Qg
QXRvbWljU3RyaW5nJiByZXNvdXJjZVR5cGUoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVCbG9iU3RvcmFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUJsb2JTdG9yYWdlLmNw
cAppbmRleCBmNzNjNTBkYTE5NDc5MzM2NWQ2ZjUxZTA2MTQxYjUyMzcyN2U3MWVlLi45NTM4ZGE2
NDFiNDI3NDAwMmIyNzlhZGFhODdjMTU0MmQzNmEwMjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUJsb2JTdG9yYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUJsb2JTdG9y
YWdlLmNwcApAQCAtMjgsOCArMjgsOCBAQAogCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1
ZGUgIk5ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0
ZW0uaD4KICNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAj
aW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYvU0hBMS5oPgogCkBAIC01Nywx
NSArNTcsMTUgQEAgdm9pZCBCbG9iU3RvcmFnZTo6c3luY2hyb25pemUoKQogewogICAgIEFTU0VS
VCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6bWFrZUFs
bERpcmVjdG9yaWVzKGJsb2JEaXJlY3RvcnlQYXRoKCkpOworICAgIEZpbGVTeXN0ZW06Om1ha2VB
bGxEaXJlY3RvcmllcyhibG9iRGlyZWN0b3J5UGF0aCgpKTsKIAogICAgIG1fYXBwcm94aW1hdGVT
aXplID0gMDsKICAgICBhdXRvIGJsb2JEaXJlY3RvcnkgPSBibG9iRGlyZWN0b3J5UGF0aCgpOwog
ICAgIHRyYXZlcnNlRGlyZWN0b3J5KGJsb2JEaXJlY3RvcnksIFt0aGlzLCAmYmxvYkRpcmVjdG9y
eV0oY29uc3QgU3RyaW5nJiBuYW1lLCBEaXJlY3RvcnlFbnRyeVR5cGUgdHlwZSkgewogICAgICAg
ICBpZiAodHlwZSAhPSBEaXJlY3RvcnlFbnRyeVR5cGU6OkZpbGUpCiAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIGF1dG8gcGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChibG9iRGlyZWN0b3J5LCBuYW1lKTsKLSAgICAgICAgYXV0byBmaWxlUGF0
aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsK
KyAgICAgICAgYXV0byBwYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KGJsb2JEaXJlY3RvcnksIG5hbWUpOworICAgICAgICBhdXRvIGZpbGVQYXRoID0gRmlsZVN5c3Rl
bTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwogICAgICAgICBzdHJ1Y3Qgc3RhdCBz
dGF0OwogICAgICAgICA6OnN0YXQoZmlsZVBhdGguZGF0YSgpLCAmc3RhdCk7CiAgICAgICAgIC8v
IE5vIGNsaWVudHMgbGVmdCBmb3IgdGhpcyBibG9iLgpAQCAtODEsNyArODEsNyBAQCB2b2lkIEJs
b2JTdG9yYWdlOjpzeW5jaHJvbml6ZSgpCiBTdHJpbmcgQmxvYlN0b3JhZ2U6OmJsb2JQYXRoRm9y
SGFzaChjb25zdCBTSEExOjpEaWdlc3QmIGhhc2gpIGNvbnN0CiB7CiAgICAgYXV0byBoYXNoQXNT
dHJpbmcgPSBTSEExOjpoZXhEaWdlc3QoaGFzaCk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChibG9iRGlyZWN0b3J5UGF0aCgpLCBTdHJp
bmc6OmZyb21VVEY4KGhhc2hBc1N0cmluZykpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoYmxvYkRpcmVjdG9yeVBhdGgoKSwgU3RyaW5nOjpmcm9tVVRG
OChoYXNoQXNTdHJpbmcpKTsKIH0KIAogQmxvYlN0b3JhZ2U6OkJsb2IgQmxvYlN0b3JhZ2U6OmFk
ZChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IERhdGEmIGRhdGEpCkBAIC05Myw4ICs5Myw4IEBA
IEJsb2JTdG9yYWdlOjpCbG9iIEJsb2JTdG9yYWdlOjphZGQoY29uc3QgU3RyaW5nJiBwYXRoLCBj
b25zdCBEYXRhJiBkYXRhKQogICAgIGlmIChkYXRhLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
IHsgZGF0YSwgaGFzaCB9OwogCi0gICAgYXV0byBibG9iUGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0
ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihibG9iUGF0aEZvckhhc2goaGFzaCkpOwotICAg
IGF1dG8gbGlua1BhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24ocGF0aCk7CisgICAgYXV0byBibG9iUGF0aCA9IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihibG9iUGF0aEZvckhhc2goaGFzaCkpOworICAgIGF1dG8gbGlua1BhdGgg
PSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAgICAgdW5saW5r
KGxpbmtQYXRoLmRhdGEoKSk7CiAKICAgICBib29sIGJsb2JFeGlzdHMgPSBhY2Nlc3MoYmxvYlBh
dGguZGF0YSgpLCBGX09LKSAhPSAtMTsKQEAgLTEyNyw3ICsxMjcsNyBAQCBCbG9iU3RvcmFnZTo6
QmxvYiBCbG9iU3RvcmFnZTo6Z2V0KGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBBU1NFUlQo
IVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIGF1dG8gbGlua1BhdGggPSBXZWJDb3JlOjpGaWxl
U3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisgICAgYXV0byBsaW5rUGF0
aCA9IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKICAgICBhdXRv
IGRhdGEgPSBtYXBGaWxlKGxpbmtQYXRoLmRhdGEoKSk7CiAKICAgICByZXR1cm4geyBkYXRhLCBj
b21wdXRlU0hBMShkYXRhLCBtX3NhbHQpIH07CkBAIC0xMzcsNyArMTM3LDcgQEAgdm9pZCBCbG9i
U3RvcmFnZTo6cmVtb3ZlKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBBU1NFUlQoIVJ1bkxv
b3A6OmlzTWFpbigpKTsKIAotICAgIGF1dG8gbGlua1BhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVt
OjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisgICAgYXV0byBsaW5rUGF0aCA9IEZp
bGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKICAgICB1bmxpbmsobGlu
a1BhdGguZGF0YSgpKTsKIH0KIApAQCAtMTQ1LDcgKzE0NSw3IEBAIHVuc2lnbmVkIEJsb2JTdG9y
YWdlOjpzaGFyZUNvdW50KGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBBU1NFUlQoIVJ1bkxv
b3A6OmlzTWFpbigpKTsKIAotICAgIGF1dG8gbGlua1BhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVt
OjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisgICAgYXV0byBsaW5rUGF0aCA9IEZp
bGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKICAgICBzdHJ1Y3Qgc3Rh
dCBzdGF0OwogICAgIGlmICg6OnN0YXQobGlua1BhdGguZGF0YSgpLCAmc3RhdCkgPCAwKQogICAg
ICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZURhdGEuY3BwCmluZGV4IDllMzE4OTQzZDdjNjEzOGNhYTFjMWRj
MzBmM2EyZjM1ZjMzMDI5ZjIuLjFhMzJhYTlhMGU1M2I0Njk1N2FhOGViM2JiMjM4NTZmMGE4OTlm
MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVEYXRhLmNwcApAQCAtMjYsOSArMjYsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIk5ldHdvcmtDYWNoZURhdGEuaCIKIAotI2luY2x1ZGUgPFdlYkNvcmUvRmls
ZVN5c3RlbS5oPgogI2luY2x1ZGUgPGZjbnRsLmg+CiAjaW5jbHVkZSA8d3RmL0NyeXB0b2dyYXBo
aWNhbGx5UmFuZG9tTnVtYmVyLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogI2lm
ICFPUyhXSU5ET1dTKQogI2luY2x1ZGUgPHN5cy9tbWFuLmg+CkBAIC0xNTYsNyArMTU2LDcgQEAg
c3RhdGljIFNhbHQgbWFrZVNhbHQoKQogT3B0aW9uYWw8U2FsdD4gcmVhZE9yTWFrZVNhbHQoY29u
c3QgU3RyaW5nJiBwYXRoKQogewogI2lmICFPUyhXSU5ET1dTKQotICAgIGF1dG8gY3BhdGggPSBX
ZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisgICAg
YXV0byBjcGF0aCA9IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsK
ICAgICBhdXRvIGZkID0gb3BlbihjcGF0aC5kYXRhKCksIE9fUkRPTkxZLCAwKTsKICAgICBTYWx0
IHNhbHQ7CiAgICAgYXV0byBieXRlc1JlYWQgPSByZWFkKGZkLCBzYWx0LmRhdGEoKSwgc2FsdC5z
aXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5jcHAKaW5kZXggMjViZWY3ZjkyZThlYjM2NmE5
NGY0YmNkMzc5ODNiMTZhOWRlMzUwOC4uYjBiMmU3MTVlNjVkZDNhOTEzY2Y3MGQ3MDM2NWE0NTBi
YmViOTk2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uY3BwCkBAIC0yNyw4ICsyNyw4IEBACiAj
aW5jbHVkZSAiTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5oIgogCiAjaW5jbHVkZSAiTG9nZ2luZy5o
IgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRp
b25zLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rp
b24uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKQEAgLTcwLDcgKzcwLDcgQEAg
c3RhdGljIERpcmVjdG9yeUVudHJ5VHlwZSBkaXJlY3RvcnlFbnRyeVR5cGUodWludDhfdCBkdHlw
ZSkKIHZvaWQgdHJhdmVyc2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBGdW5j
dGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBEaXJlY3RvcnlFbnRyeVR5cGUpPiYgZnVuY3Rpb24p
CiB7CiAjaWYgIU9TKFdJTkRPV1MpCi0gICAgRElSKiBkaXIgPSBvcGVuZGlyKFdlYkNvcmU6OkZp
bGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCkpOworICAgIERJ
UiogZGlyID0gb3BlbmRpcihGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0
aCkuZGF0YSgpKTsKICAgICBpZiAoIWRpcikKICAgICAgICAgcmV0dXJuOwogICAgIGRpcmVudCog
ZHA7CkBAIC05NCwxMCArOTQsMTAgQEAgdm9pZCB0cmF2ZXJzZURpcmVjdG9yeShjb25zdCBTdHJp
bmcmIHBhdGgsIGNvbnN0IEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIEQKIHZvaWQgZGVs
ZXRlRGlyZWN0b3J5UmVjdXJzaXZlbHkoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIHRyYXZl
cnNlRGlyZWN0b3J5KHBhdGgsIFsmcGF0aF0oY29uc3QgU3RyaW5nJiBuYW1lLCBEaXJlY3RvcnlF
bnRyeVR5cGUgdHlwZSkgewotICAgICAgICBTdHJpbmcgZW50cnlQYXRoID0gV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhdGgsIG5hbWUpOworICAgICAgICBT
dHJpbmcgZW50cnlQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBh
dGgsIG5hbWUpOwogICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgICAgY2FzZSBEaXJlY3Rv
cnlFbnRyeVR5cGU6OkZpbGU6Ci0gICAgICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxl
dGVGaWxlKGVudHJ5UGF0aCk7CisgICAgICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGVu
dHJ5UGF0aCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBEaXJlY3RvcnlFbnRy
eVR5cGU6OkRpcmVjdG9yeToKICAgICAgICAgICAgIGRlbGV0ZURpcmVjdG9yeVJlY3Vyc2l2ZWx5
KGVudHJ5UGF0aCk7CkBAIC0xMDUsMTkgKzEwNSwxOSBAQCB2b2lkIGRlbGV0ZURpcmVjdG9yeVJl
Y3Vyc2l2ZWx5KGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICAgICAgLy8gVGhpcyBkb2Vzbid0IGZv
bGxvdyBzeW1saW5rcy4KICAgICAgICAgfQogICAgIH0pOwotICAgIFdlYkNvcmU6OkZpbGVTeXN0
ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KHBhdGgpOworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUVt
cHR5RGlyZWN0b3J5KHBhdGgpOwogfQogCiBGaWxlVGltZXMgZmlsZVRpbWVzKGNvbnN0IFN0cmlu
ZyYgcGF0aCkKIHsKICNpZiBIQVZFKFNUQVRfQklSVEhUSU1FKQogICAgIHN0cnVjdCBzdGF0IGZp
bGVJbmZvOwotICAgIGlmIChzdGF0KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihwYXRoKS5kYXRhKCksICZmaWxlSW5mbykpCisgICAgaWYgKHN0YXQoRmlsZVN5
c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSwgJmZpbGVJbmZvKSkK
ICAgICAgICAgcmV0dXJuIHsgfTsKICAgICByZXR1cm4geyBXYWxsVGltZTo6ZnJvbVJhd1NlY29u
ZHMoZmlsZUluZm8uc3RfYmlydGh0aW1lKSwgV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKGZpbGVJ
bmZvLnN0X210aW1lKSB9OwogI2VsaWYgVVNFKFNPVVApCiAgICAgLy8gVGhlcmUncyBubyBzdF9i
aXJ0aHRpbWUgaW4gc29tZSBvcGVyYXRpbmcgc3lzdGVtcyBsaWtlIExpbnV4LCBzbyB3ZSB1c2Ug
eGF0dHJzIHRvIHNldC9nZXQgdGhlIGNyZWF0aW9uIHRpbWUuCi0gICAgR1JlZlB0cjxHRmlsZT4g
ZmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKFdlYkNvcmU6OkZpbGVTeXN0ZW06
OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCkpKTsKKyAgICBHUmVmUHRyPEdG
aWxlPiBmaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoRmlsZVN5c3RlbTo6Zmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSkpOwogICAgIEdSZWZQdHI8R0ZpbGVJ
bmZvPiBmaWxlSW5mbyA9IGFkb3B0R1JlZihnX2ZpbGVfcXVlcnlfaW5mbyhmaWxlLmdldCgpLCAi
eGF0dHI6OmJpcnRodGltZSx0aW1lOjptb2RpZmllZCIsIEdfRklMRV9RVUVSWV9JTkZPX05PTkUs
IG51bGxwdHIsIG51bGxwdHIpKTsKICAgICBpZiAoIWZpbGVJbmZvKQogICAgICAgICByZXR1cm4g
eyB9OwpAQCAtMTQxLDcgKzE0MSw3IEBAIHZvaWQgdXBkYXRlRmlsZU1vZGlmaWNhdGlvblRpbWVJ
Zk5lZWRlZChjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgfQogI2lmICFPUyhXSU5ET1dTKQogICAg
IC8vIFRoaXMgcmVhbGx5IHVwZGF0ZXMgYm90aCB0aGUgYWNjZXNzIHRpbWUgYW5kIHRoZSBtb2Rp
ZmljYXRpb24gdGltZS4KLSAgICB1dGltZXMoV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSwgbnVsbHB0cik7CisgICAgdXRpbWVzKEZpbGVT
eXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCksIG51bGxwdHIpOwog
I2VuZGlmCiB9CiAKQEAgLTE1Niw3ICsxNTYsNyBAQCBib29sIGlzU2FmZVRvVXNlTWVtb3J5TWFw
Rm9yUGF0aChjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgYXR0cmxpc3QgYXR0ckxpc3QgPSB7IH07
CiAgICAgYXR0ckxpc3QuYml0bWFwY291bnQgPSBBVFRSX0JJVF9NQVBfQ09VTlQ7CiAgICAgYXR0
ckxpc3QuY29tbW9uYXR0ciA9IEFUVFJfQ01OX0RBVEFfUFJPVEVDVF9GTEFHUzsKLSAgICBpbnQz
Ml90IGVycm9yID0gZ2V0YXR0cmxpc3QoV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSwgJmF0dHJMaXN0LCAmYXR0ckJ1ZmZlciwgc2l6ZW9m
KGF0dHJCdWZmZXIpLCBGU09QVF9OT0ZPTExPVyk7CisgICAgaW50MzJfdCBlcnJvciA9IGdldGF0
dHJsaXN0KEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCks
ICZhdHRyTGlzdCwgJmF0dHJCdWZmZXIsIHNpemVvZihhdHRyQnVmZmVyKSwgRlNPUFRfTk9GT0xM
T1cpOwogICAgIGlmIChlcnJvcikgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3Jr
LCAiVW5hYmxlIHRvIGdldCBjYWNoZSBkaXJlY3RvcnkgcHJvdGVjdGlvbiBjbGFzcywgZGlzYWJs
aW5nIHVzZSBvZiBzaGFyZWQgbWFwcGVkIG1lbW9yeSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZUZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlRmlsZVN5c3RlbS5oCmluZGV4IDdkY2NlNmM0YzM2NzI4ZTkzMTU4MzNhNTMyOWJk
NTZkNWM0MTJiOGEuLjE4MzFhMzUxYzliMGZmNTA1ZGY5YWRjN2Y3YzAzYWY3MDFkNmM4ODMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
RmlsZVN5c3RlbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlRmlsZVN5c3RlbS5oCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQog
Ci0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0
ZW0uaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiBuYW1lc3BhY2UgTmV0d29ya0NhY2hlIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
SU9DaGFubmVsQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZUlPQ2hhbm5lbENvY29hLm1tCmluZGV4IDM2OWJjZjk3M2YyZGNlZTBhM2Q0Mzk2
MzQ1MzcwYjY0NjIxZTlmMDguLmM2NTIxNjRjYTE4OGEwN2RhNTdiY2RlNzVmM2EyMjUyZTE4MmYw
ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlSU9DaGFubmVsQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxDb2NvYS5tbQpAQCAtNDEsNyArNDEsNyBAQCBJ
T0NoYW5uZWw6OklPQ2hhbm5lbChjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBUeXBlIHR5cGUpCiAg
ICAgOiBtX3BhdGgoZmlsZVBhdGgpCiAgICAgLCBtX3R5cGUodHlwZSkKIHsKLSAgICBhdXRvIHBh
dGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZVBh
dGgpOworICAgIGF1dG8gcGF0aCA9IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihmaWxlUGF0aCk7CiAgICAgaW50IG9mbGFnOwogICAgIG1vZGVfdCBtb2RlOwogICAgIGJvb2wg
dXNlTG93SU9Qcmlvcml0eSA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxTb3VwLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsU291cC5jcHAK
aW5kZXggNTM5MmM3OTA1NjlmZDY2NTdhMjFhMjYyMGNiMDUxZWZiZWVmMDQ1OS4uYjU2Zjk2NTUz
MTJjZGFkMGMxMDhkY2NjNmVmMTcyOTk1YWVkMWE1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxTb3VwLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5l
bFNvdXAuY3BwCkBAIC00MSw3ICs0MSw3IEBAIElPQ2hhbm5lbDo6SU9DaGFubmVsKGNvbnN0IFN0
cmluZyYgZmlsZVBhdGgsIFR5cGUgdHlwZSkKICAgICA6IG1fcGF0aChmaWxlUGF0aCkKICAgICAs
IG1fdHlwZSh0eXBlKQogewotICAgIGF1dG8gcGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWxlUGF0aCk7CisgICAgYXV0byBwYXRoID0gRmlsZVN5
c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVQYXRoKTsKICAgICBHUmVmUHRyPEdG
aWxlPiBmaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgocGF0aC5kYXRhKCkpKTsK
ICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAgIGNhc2UgVHlwZTo6Q3JlYXRlOiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0YXRp
c3RpY3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTdGF0aXN0aWNzLmNwcAppbmRleCBiNGExMzE0ZWI0YjE1ZWUwMzMyZjc0ZTkyMWUyZmM4NzE5
MDY0YzM3Li42MWJlZjFlMTFjM2NmODM3NWY3MzkyNWI3MjNiOTE2ZmIzMWViMzdlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0YXRp
c3RpY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlU3RhdGlzdGljcy5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFN0
YXRpc3RpY3M+IFN0YXRpc3RpY3M6Om9wZW4oQ2FjaGUmIGNhY2hlLCBjb25zdCBTdHJpbmcmIGNh
Y2hlUGEKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgU3RyaW5nIGRh
dGFiYXNlUGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChjYWNoZVBhdGgsIFN0YXRpc3RpY3NEYXRhYmFzZU5hbWUpOworICAgIFN0cmluZyBkYXRhYmFz
ZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY2FjaGVQYXRoLCBT
dGF0aXN0aWNzRGF0YWJhc2VOYW1lKTsKICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTdGF0
aXN0aWNzPihjYWNoZSwgZGF0YWJhc2VQYXRoKTsKIH0KIApAQCAtOTgsNyArOTgsNyBAQCB2b2lk
IFN0YXRpc3RpY3M6OmluaXRpYWxpemUoY29uc3QgU3RyaW5nJiBkYXRhYmFzZVBhdGgpCiAgICAg
c2VyaWFsQmFja2dyb3VuZElPUXVldWUoKS5kaXNwYXRjaChbdGhpcywgZGF0YWJhc2VQYXRoID0g
ZGF0YWJhc2VQYXRoLmlzb2xhdGVkQ29weSgpLCBuZXR3b3JrQ2FjaGVQYXRoID0gbV9jYWNoZS5y
ZWNvcmRzUGF0aCgpLCBzdGFydFRpbWVdIHsKICAgICAgICAgV2ViQ29yZTo6U1FMaXRlVHJhbnNh
Y3Rpb25JblByb2dyZXNzQXV0b0NvdW50ZXIgdHJhbnNhY3Rpb25Db3VudGVyOwogCi0gICAgICAg
IGlmICghV2ViQ29yZTo6RmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKFdlYkNvcmU6OkZp
bGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUoZGF0YWJhc2VQYXRoKSkpCisgICAgICAgIGlmICghRmls
ZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUoZGF0
YWJhc2VQYXRoKSkpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgTE9HKE5ldHdvcmtD
YWNoZSwgIihOZXR3b3JrUHJvY2VzcykgT3BlbmluZyBuZXR3b3JrIGNhY2hlIHN0YXRpc3RpY3Mg
ZGF0YWJhc2UgYXQgJXMuLi4iLCBkYXRhYmFzZVBhdGgudXRmOCgpLmRhdGEoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3Jh
Z2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVT
dG9yYWdlLmNwcAppbmRleCA0ZWE3NDMwZmEyMDQ0ZTkwMTRhODk5MDRkNWJiYzFlYjY1Yjc5Y2M2
Li5jMjZhYTFiOTZjNzEzYTgwMDM3ZmQxYzU3ODY1ZGI5NzJiNjRhZWVkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3Rv
cmFnZS5jcHAKQEAgLTE0NSwyOSArMTQ1LDI5IEBAIHB1YmxpYzoKIHN0YXRpYyBTdHJpbmcgbWFr
ZVZlcnNpb25lZERpcmVjdG9yeVBhdGgoY29uc3QgU3RyaW5nJiBiYXNlRGlyZWN0b3J5UGF0aCkK
IHsKICAgICBTdHJpbmcgdmVyc2lvblN1YmRpcmVjdG9yeSA9IHZlcnNpb25EaXJlY3RvcnlQcmVm
aXggKyBTdHJpbmc6Om51bWJlcihTdG9yYWdlOjp2ZXJzaW9uKTsKLSAgICByZXR1cm4gV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGJhc2VEaXJlY3RvcnlQYXRo
LCB2ZXJzaW9uU3ViZGlyZWN0b3J5KTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KGJhc2VEaXJlY3RvcnlQYXRoLCB2ZXJzaW9uU3ViZGlyZWN0b3J5KTsK
IH0KIAogc3RhdGljIFN0cmluZyBtYWtlUmVjb3Jkc0RpcmVjdG9yeVBhdGgoY29uc3QgU3RyaW5n
JiBiYXNlRGlyZWN0b3J5UGF0aCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1ha2VWZXJzaW9uZWREaXJlY3RvcnlQYXRoKGJhc2VE
aXJlY3RvcnlQYXRoKSwgcmVjb3Jkc0RpcmVjdG9yeU5hbWUpOworICAgIHJldHVybiBGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobWFrZVZlcnNpb25lZERpcmVjdG9yeVBhdGgo
YmFzZURpcmVjdG9yeVBhdGgpLCByZWNvcmRzRGlyZWN0b3J5TmFtZSk7CiB9CiAKIHN0YXRpYyBT
dHJpbmcgbWFrZUJsb2JEaXJlY3RvcnlQYXRoKGNvbnN0IFN0cmluZyYgYmFzZURpcmVjdG9yeVBh
dGgpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChtYWtlVmVyc2lvbmVkRGlyZWN0b3J5UGF0aChiYXNlRGlyZWN0b3J5UGF0aCksIGJs
b2JzRGlyZWN0b3J5TmFtZSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChtYWtlVmVyc2lvbmVkRGlyZWN0b3J5UGF0aChiYXNlRGlyZWN0b3J5UGF0aCks
IGJsb2JzRGlyZWN0b3J5TmFtZSk7CiB9CiAKIHN0YXRpYyBTdHJpbmcgbWFrZVNhbHRGaWxlUGF0
aChjb25zdCBTdHJpbmcmIGJhc2VEaXJlY3RvcnlQYXRoKQogewotICAgIHJldHVybiBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobWFrZVZlcnNpb25lZERpcmVj
dG9yeVBhdGgoYmFzZURpcmVjdG9yeVBhdGgpLCBzYWx0RmlsZU5hbWUpOworICAgIHJldHVybiBG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobWFrZVZlcnNpb25lZERpcmVjdG9y
eVBhdGgoYmFzZURpcmVjdG9yeVBhdGgpLCBzYWx0RmlsZU5hbWUpOwogfQogCiBSZWZQdHI8U3Rv
cmFnZT4gU3RvcmFnZTo6b3Blbihjb25zdCBTdHJpbmcmIGNhY2hlUGF0aCwgTW9kZSBtb2RlKQog
ewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBpZiAoIVdlYkNvcmU6OkZp
bGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhtYWtlVmVyc2lvbmVkRGlyZWN0b3J5UGF0aChj
YWNoZVBhdGgpKSkKKyAgICBpZiAoIUZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhtYWtl
VmVyc2lvbmVkRGlyZWN0b3J5UGF0aChjYWNoZVBhdGgpKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgYXV0byBzYWx0ID0gcmVhZE9yTWFrZVNhbHQobWFrZVNhbHRGaWxlUGF0aChjYWNo
ZVBhdGgpKTsKICAgICBpZiAoIXNhbHQpCkBAIC0xODAsMTMgKzE4MCwxMyBAQCB2b2lkIHRyYXZl
cnNlUmVjb3Jkc0ZpbGVzKGNvbnN0IFN0cmluZyYgcmVjb3Jkc1BhdGgsIGNvbnN0IFN0cmluZyYg
ZXhwZWN0ZWRUeXBlLAogICAgIHRyYXZlcnNlRGlyZWN0b3J5KHJlY29yZHNQYXRoLCBbJl0oY29u
c3QgU3RyaW5nJiBwYXJ0aXRpb25OYW1lLCBEaXJlY3RvcnlFbnRyeVR5cGUgZW50cnlUeXBlKSB7
CiAgICAgICAgIGlmIChlbnRyeVR5cGUgIT0gRGlyZWN0b3J5RW50cnlUeXBlOjpEaXJlY3Rvcnkp
CiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIFN0cmluZyBwYXJ0aXRpb25QYXRoID0gV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZHNQYXRoLCBw
YXJ0aXRpb25OYW1lKTsKKyAgICAgICAgU3RyaW5nIHBhcnRpdGlvblBhdGggPSBGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3Jkc1BhdGgsIHBhcnRpdGlvbk5hbWUpOwog
ICAgICAgICB0cmF2ZXJzZURpcmVjdG9yeShwYXJ0aXRpb25QYXRoLCBbJl0oY29uc3QgU3RyaW5n
JiBhY3R1YWxUeXBlLCBEaXJlY3RvcnlFbnRyeVR5cGUgZW50cnlUeXBlKSB7CiAgICAgICAgICAg
ICBpZiAoZW50cnlUeXBlICE9IERpcmVjdG9yeUVudHJ5VHlwZTo6RGlyZWN0b3J5KQogICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGlmICghZXhwZWN0ZWRUeXBlLmlzRW1wdHko
KSAmJiBleHBlY3RlZFR5cGUgIT0gYWN0dWFsVHlwZSkKICAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICBTdHJpbmcgcmVjb3JkRGlyZWN0b3J5UGF0aCA9IFdlYkNvcmU6OkZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXJ0aXRpb25QYXRoLCBhY3R1YWxUeXBl
KTsKKyAgICAgICAgICAgIFN0cmluZyByZWNvcmREaXJlY3RvcnlQYXRoID0gRmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhcnRpdGlvblBhdGgsIGFjdHVhbFR5cGUpOwogICAg
ICAgICAgICAgdHJhdmVyc2VEaXJlY3RvcnkocmVjb3JkRGlyZWN0b3J5UGF0aCwgWyZmdW5jdGlv
biwgJnJlY29yZERpcmVjdG9yeVBhdGgsICZhY3R1YWxUeXBlXShjb25zdCBTdHJpbmcmIGZpbGVO
YW1lLCBEaXJlY3RvcnlFbnRyeVR5cGUgZW50cnlUeXBlKSB7CiAgICAgICAgICAgICAgICAgaWYg
KGVudHJ5VHlwZSAhPSBEaXJlY3RvcnlFbnRyeVR5cGU6OkZpbGUgfHwgZmlsZU5hbWUubGVuZ3Ro
KCkgPCBLZXk6Omhhc2hTdHJpbmdMZW5ndGgoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OwpAQCAtMjA2LDE4ICsyMDYsMTggQEAgc3RhdGljIHZvaWQgZGVsZXRlRW1wdHlSZWNvcmRzRGly
ZWN0b3JpZXMoY29uc3QgU3RyaW5nJiByZWNvcmRzUGF0aCkKICAgICAgICAgICAgIHJldHVybjsK
IAogICAgICAgICAvLyBEZWxldGUgW3R5cGVdIHN1Yi1mb2xkZXJzLgotICAgICAgICBTdHJpbmcg
cGFydGl0aW9uUGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChyZWNvcmRzUGF0aCwgcGFydGl0aW9uTmFtZSk7CisgICAgICAgIFN0cmluZyBwYXJ0aXRp
b25QYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZHNQYXRo
LCBwYXJ0aXRpb25OYW1lKTsKICAgICAgICAgdHJhdmVyc2VEaXJlY3RvcnkocGFydGl0aW9uUGF0
aCwgWyZwYXJ0aXRpb25QYXRoXShjb25zdCBTdHJpbmcmIHN1YmRpck5hbWUsIERpcmVjdG9yeUVu
dHJ5VHlwZSBlbnRyeVR5cGUpIHsKICAgICAgICAgICAgIGlmIChlbnRyeVR5cGUgIT0gRGlyZWN0
b3J5RW50cnlUeXBlOjpEaXJlY3RvcnkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAg
ICAgICAgICAvLyBMZXQgc3lzdGVtIGZpZ3VyZSBvdXQgaWYgaXQgaXMgcmVhbGx5IGVtcHR5Lgot
ICAgICAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkoV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhcnRpdGlvblBhdGgs
IHN1YmRpck5hbWUpKTsKKyAgICAgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0
b3J5KEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXJ0aXRpb25QYXRoLCBz
dWJkaXJOYW1lKSk7CiAgICAgICAgIH0pOwogCiAgICAgICAgIC8vIERlbGV0ZSBbUGFydGl0aW9u
XSBmb2xkZXJzLgogICAgICAgICAvLyBMZXQgc3lzdGVtIGZpZ3VyZSBvdXQgaWYgaXQgaXMgcmVh
bGx5IGVtcHR5LgotICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVj
dG9yeShXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3Jk
c1BhdGgsIHBhcnRpdGlvbk5hbWUpKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlE
aXJlY3RvcnkoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZHNQYXRo
LCBwYXJ0aXRpb25OYW1lKSk7CiAgICAgfSk7CiB9CiAKQEAgLTMwMCwxMSArMzAwLDExIEBAIHZv
aWQgU3RvcmFnZTo6c3luY2hyb25pemUoKQogCiAgICAgICAgIFN0cmluZyBhbnlUeXBlOwogICAg
ICAgICB0cmF2ZXJzZVJlY29yZHNGaWxlcyhyZWNvcmRzUGF0aCgpLCBhbnlUeXBlLCBbJl0oY29u
c3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBoYXNoU3RyaW5nLCBjb25zdCBTdHJp
bmcmIHR5cGUsIGJvb2wgaXNCbG9iLCBjb25zdCBTdHJpbmcmIHJlY29yZERpcmVjdG9yeVBhdGgp
IHsKLSAgICAgICAgICAgIGF1dG8gZmlsZVBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3JkRGlyZWN0b3J5UGF0aCwgZmlsZU5hbWUpOworICAg
ICAgICAgICAgYXV0byBmaWxlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChyZWNvcmREaXJlY3RvcnlQYXRoLCBmaWxlTmFtZSk7CiAKICAgICAgICAgICAgIEtleTo6
SGFzaFR5cGUgaGFzaDsKICAgICAgICAgICAgIGlmICghS2V5OjpzdHJpbmdUb0hhc2goaGFzaFN0
cmluZywgaGFzaCkpIHsKLSAgICAgICAgICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxl
dGVGaWxlKGZpbGVQYXRoKTsKKyAgICAgICAgICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxl
KGZpbGVQYXRoKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKQEAg
LTMxOCw3ICszMTgsNyBAQCB2b2lkIFN0b3JhZ2U6OnN5bmNocm9uaXplKCkKIAogICAgICAgICAg
ICAgaWYgKHNob3VsZENvbXB1dGVFeGFjdFJlY29yZHNTaXplKSB7CiAgICAgICAgICAgICAgICAg
bG9uZyBsb25nIGZpbGVTaXplID0gMDsKLSAgICAgICAgICAgICAgICBXZWJDb3JlOjpGaWxlU3lz
dGVtOjpnZXRGaWxlU2l6ZShmaWxlUGF0aCwgZmlsZVNpemUpOworICAgICAgICAgICAgICAgIEZp
bGVTeXN0ZW06OmdldEZpbGVTaXplKGZpbGVQYXRoLCBmaWxlU2l6ZSk7CiAgICAgICAgICAgICAg
ICAgcmVjb3Jkc1NpemUgKz0gZmlsZVNpemU7CiAgICAgICAgICAgICB9CiAKQEAgLTM4MSwxMiAr
MzgxLDEyIEBAIGJvb2wgU3RvcmFnZTo6bWF5Q29udGFpbkJsb2IoY29uc3QgS2V5JiBrZXkpIGNv
bnN0CiBTdHJpbmcgU3RvcmFnZTo6cmVjb3JkRGlyZWN0b3J5UGF0aEZvcktleShjb25zdCBLZXkm
IGtleSkgY29uc3QKIHsKICAgICBBU1NFUlQoIWtleS50eXBlKCkuaXNFbXB0eSgpKTsKLSAgICBy
ZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNv
cmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmRzUGF0aCgpLCBr
ZXkucGFydGl0aW9uSGFzaEFzU3RyaW5nKCkpLCBrZXkudHlwZSgpKTsKKyAgICByZXR1cm4gRmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChyZWNvcmRzUGF0aCgpLCBrZXkucGFydGl0aW9uSGFzaEFzU3RyaW5nKCkp
LCBrZXkudHlwZSgpKTsKIH0KIAogU3RyaW5nIFN0b3JhZ2U6OnJlY29yZFBhdGhGb3JLZXkoY29u
c3QgS2V5JiBrZXkpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmREaXJlY3RvcnlQYXRoRm9yS2V5KGtleSksIGtl
eS5oYXNoQXNTdHJpbmcoKSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChyZWNvcmREaXJlY3RvcnlQYXRoRm9yS2V5KGtleSksIGtleS5oYXNoQXNTdHJp
bmcoKSk7CiB9CiAKIHN0YXRpYyBTdHJpbmcgYmxvYlBhdGhGb3JSZWNvcmRQYXRoKGNvbnN0IFN0
cmluZyYgcmVjb3JkUGF0aCkKQEAgLTYyOSw3ICs2MjksNyBAQCB2b2lkIFN0b3JhZ2U6OmRlbGV0
ZUZpbGVzKGNvbnN0IEtleSYga2V5KQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkp
OwogCi0gICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShyZWNvcmRQYXRoRm9yS2V5
KGtleSkpOworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUocmVjb3JkUGF0aEZvcktleShrZXkp
KTsKICAgICBtX2Jsb2JTdG9yYWdlLnJlbW92ZShibG9iUGF0aEZvcktleShrZXkpKTsKIH0KIApA
QCAtODA5LDcgKzgwOSw3IEBAIHZvaWQgU3RvcmFnZTo6ZGlzcGF0Y2hXcml0ZU9wZXJhdGlvbihz
dGQ6OnVuaXF1ZV9wdHI8V3JpdGVPcGVyYXRpb24+IHdyaXRlT3BlcmF0CiAgICAgICAgIGF1dG8g
cmVjb3JkRGlyZWN0b3JQYXRoID0gcmVjb3JkRGlyZWN0b3J5UGF0aEZvcktleSh3cml0ZU9wZXJh
dGlvbi5yZWNvcmQua2V5KTsKICAgICAgICAgYXV0byByZWNvcmRQYXRoID0gcmVjb3JkUGF0aEZv
cktleSh3cml0ZU9wZXJhdGlvbi5yZWNvcmQua2V5KTsKIAotICAgICAgICBXZWJDb3JlOjpGaWxl
U3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMocmVjb3JkRGlyZWN0b3JQYXRoKTsKKyAgICAgICAg
RmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKHJlY29yZERpcmVjdG9yUGF0aCk7CiAKICAg
ICAgICAgKyt3cml0ZU9wZXJhdGlvbi5hY3RpdmVDb3VudDsKIApAQCAtOTE3LDcgKzkxNyw3IEBA
IHZvaWQgU3RvcmFnZTo6dHJhdmVyc2UoY29uc3QgU3RyaW5nJiB0eXBlLCBPcHRpb25TZXQ8VHJh
dmVyc2VGbGFnPiBmbGFncywgVHJhdmVyCiAgICAgICAgICAgICBpZiAoaXNCbG9iKQogICAgICAg
ICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgYXV0byByZWNvcmRQYXRoID0gV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZERpcmVjdG9yeVBh
dGgsIGZpbGVOYW1lKTsKKyAgICAgICAgICAgIGF1dG8gcmVjb3JkUGF0aCA9IEZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmREaXJlY3RvcnlQYXRoLCBmaWxlTmFtZSk7
CiAKICAgICAgICAgICAgIGRvdWJsZSB3b3J0aCA9IC0xOwogICAgICAgICAgICAgaWYgKHRyYXZl
cnNlT3BlcmF0aW9uLmZsYWdzICYgVHJhdmVyc2VGbGFnOjpDb21wdXRlV29ydGgpCkBAIC0xMDA5
LDEzICsxMDA5LDEzIEBAIHZvaWQgU3RvcmFnZTo6Y2xlYXIoY29uc3QgU3RyaW5nJiB0eXBlLCBX
YWxsVGltZSBtb2RpZmllZFNpbmNlVGltZSwgQ29tcGxldGlvbkhhCiAgICAgaW9RdWV1ZSgpLmRp
c3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG1vZGlmaWVkU2lu
Y2VUaW1lLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCB0
eXBlID0gdHlwZS5pc29sYXRlZENvcHkoKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8gcmVj
b3Jkc1BhdGggPSB0aGlzLT5yZWNvcmRzUGF0aCgpOwogICAgICAgICB0cmF2ZXJzZVJlY29yZHNG
aWxlcyhyZWNvcmRzUGF0aCwgdHlwZSwgW21vZGlmaWVkU2luY2VUaW1lXShjb25zdCBTdHJpbmcm
IGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIGhhc2hTdHJpbmcsIGNvbnN0IFN0cmluZyYgdHlwZSwg
Ym9vbCBpc0Jsb2IsIGNvbnN0IFN0cmluZyYgcmVjb3JkRGlyZWN0b3J5UGF0aCkgewotICAgICAg
ICAgICAgYXV0byBmaWxlUGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChyZWNvcmREaXJlY3RvcnlQYXRoLCBmaWxlTmFtZSk7CisgICAgICAgICAgICBh
dXRvIGZpbGVQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29y
ZERpcmVjdG9yeVBhdGgsIGZpbGVOYW1lKTsKICAgICAgICAgICAgIGlmIChtb2RpZmllZFNpbmNl
VGltZSA+IC1XYWxsVGltZTo6aW5maW5pdHkoKSkgewogICAgICAgICAgICAgICAgIGF1dG8gdGlt
ZXMgPSBmaWxlVGltZXMoZmlsZVBhdGgpOwogICAgICAgICAgICAgICAgIGlmICh0aW1lcy5tb2Rp
ZmljYXRpb24gPCBtb2RpZmllZFNpbmNlVGltZSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgfQotICAgICAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRl
RmlsZShmaWxlUGF0aCk7CisgICAgICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGZpbGVQ
YXRoKTsKICAgICAgICAgfSk7CiAKICAgICAgICAgZGVsZXRlRW1wdHlSZWNvcmRzRGlyZWN0b3Jp
ZXMocmVjb3Jkc1BhdGgpOwpAQCAtMTA4OSw3ICsxMDg5LDcgQEAgdm9pZCBTdG9yYWdlOjpzaHJp
bmsoKQogICAgICAgICAgICAgaWYgKGlzQmxvYikKICAgICAgICAgICAgICAgICByZXR1cm47CiAK
LSAgICAgICAgICAgIGF1dG8gcmVjb3JkUGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmREaXJlY3RvcnlQYXRoLCBmaWxlTmFtZSk7CisgICAg
ICAgICAgICBhdXRvIHJlY29yZFBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQocmVjb3JkRGlyZWN0b3J5UGF0aCwgZmlsZU5hbWUpOwogICAgICAgICAgICAgYXV0byBi
bG9iUGF0aCA9IGJsb2JQYXRoRm9yUmVjb3JkUGF0aChyZWNvcmRQYXRoKTsKIAogICAgICAgICAg
ICAgYXV0byB0aW1lcyA9IGZpbGVUaW1lcyhyZWNvcmRQYXRoKTsKQEAgLTExMDEsNyArMTEwMSw3
IEBAIHZvaWQgU3RvcmFnZTo6c2hyaW5rKCkKICAgICAgICAgICAgIExPRyhOZXR3b3JrQ2FjaGVT
dG9yYWdlLCAiRGVsZXRpb24gcHJvYmFiaWxpdHk9JWYgYm9keUxpbmtDb3VudD0lZCBzaG91bGRE
ZWxldGU9JWQiLCBwcm9iYWJpbGl0eSwgYm9keVNoYXJlQ291bnQsIHNob3VsZERlbGV0ZSk7CiAK
ICAgICAgICAgICAgIGlmIChzaG91bGREZWxldGUpIHsKLSAgICAgICAgICAgICAgICBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpkZWxldGVGaWxlKHJlY29yZFBhdGgpOworICAgICAgICAgICAgICAgIEZp
bGVTeXN0ZW06OmRlbGV0ZUZpbGUocmVjb3JkUGF0aCk7CiAgICAgICAgICAgICAgICAgbV9ibG9i
U3RvcmFnZS5yZW1vdmUoYmxvYlBhdGgpOwogICAgICAgICAgICAgfQogICAgICAgICB9KTsKQEAg
LTExMzcsNyArMTEzNyw3IEBAIHZvaWQgU3RvcmFnZTo6ZGVsZXRlT2xkVmVyc2lvbnMoKQogICAg
ICAgICAgICAgICAgIHJldHVybjsKICNlbmRpZgogCi0gICAgICAgICAgICBhdXRvIG9sZFZlcnNp
b25QYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNh
Y2hlUGF0aCwgc3ViZGlyTmFtZSk7CisgICAgICAgICAgICBhdXRvIG9sZFZlcnNpb25QYXRoID0g
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNhY2hlUGF0aCwgc3ViZGlyTmFt
ZSk7CiAgICAgICAgICAgICBMT0coTmV0d29ya0NhY2hlU3RvcmFnZSwgIihOZXR3b3JrUHJvY2Vz
cykgZGVsZXRpbmcgb2xkIGNhY2hlIHZlcnNpb24sIHBhdGggJXMiLCBvbGRWZXJzaW9uUGF0aC51
dGY4KCkuZGF0YSgpKTsKIAogICAgICAgICAgICAgZGVsZXRlRGlyZWN0b3J5UmVjdXJzaXZlbHko
b2xkVmVyc2lvblBhdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KaW5kZXggYTYxZjkzODVhNjc3NGJk
MGI3NWM1Mzk2OWNlMTMyODc4YjNiOTczZi4uZjQ3YmQ4MTk4ODMyNjZhYTY3OGM0ODdmNmIzNTM4
ZWM1ZGFiYmU0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCkBAIC0zNiwxMSArMzYsMTEgQEAKICNp
bXBvcnQgIk5ldHdvcmtTZXNzaW9uQ29jb2EuaCIKICNpbXBvcnQgIldlYkNvcmVBcmd1bWVudENv
ZGVycy5oIgogI2ltcG9ydCA8V2ViQ29yZS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oPgotI2lt
cG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2ltcG9y
dCA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbXBvcnQgPHBhbC9zcGkvY2YvQ0ZOZXR3
b3JrU1BJLmg+CisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8d3RmL01haW5U
aHJlYWQuaD4KICNpbXBvcnQgPHd0Zi9Qcm9jZXNzUHJpdmlsZWdlLmg+CiAjaW1wb3J0IDx3dGYv
dGV4dC9CYXNlNjQuaD4KQEAgLTQwMyw4ICs0MDMsOCBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0Nv
Y29hOjpzZXRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZmlsZW5h
bQogCiAgICAgbV90YXNrLmdldCgpLl9wYXRoVG9Eb3dubG9hZFRhc2tGaWxlID0gbV9wZW5kaW5n
RG93bmxvYWRMb2NhdGlvbjsKIAotICAgIGlmIChhbGxvd092ZXJ3cml0ZSAmJiBXZWJDb3JlOjpG
aWxlU3lzdGVtOjpmaWxlRXhpc3RzKG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRpb24pKQotICAgICAg
ICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGZpbGVuYW1lKTsKKyAgICBpZiAoYWxs
b3dPdmVyd3JpdGUgJiYgRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhtX3BlbmRpbmdEb3dubG9hZExv
Y2F0aW9uKSkKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShmaWxlbmFtZSk7CiB9CiAK
IGJvb2wgTmV0d29ya0RhdGFUYXNrQ29jb2E6OnRyeVBhc3N3b3JkQmFzZWRBdXRoZW50aWNhdGlv
bihjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlLCBDaGFs
bGVuZ2VDb21wbGV0aW9uSGFuZGxlciYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0g
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2Eu
bW0KaW5kZXggZjZhZDQ5ZjhiYWMzNWQwMTdiOTY1Mzc5OGQ1N2FhYTJmNDM5NTYwOC4uNGExZDc5
MjEwYWZhNTk2ZTRiMGZhZmNlODE4ZmY0ZjY4MmIzOGI0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQpA
QCAtNzc5LDcgKzc3OSw3IEBAIC0gKHZvaWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vz
c2lvbiBkYXRhVGFzazooTlNVUkxTZXNzaW9uRGF0YVRhc2sgKilkYXRhCiAgICAgICAgIGF1dG8m
IGRvd25sb2FkTWFuYWdlciA9IF9zZXNzaW9uLT5uZXR3b3JrUHJvY2VzcygpLmRvd25sb2FkTWFu
YWdlcigpOwogICAgICAgICBhdXRvIGRvd25sb2FkID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6
OkRvd25sb2FkPihkb3dubG9hZE1hbmFnZXIsIGRvd25sb2FkSUQsIGRvd25sb2FkVGFzaywgX3Nl
c3Npb24tPnNlc3Npb25JRCgpLCBuZXR3b3JrRGF0YVRhc2stPnN1Z2dlc3RlZEZpbGVuYW1lKCkp
OwogICAgICAgICBuZXR3b3JrRGF0YVRhc2stPnRyYW5zZmVyU2FuZGJveEV4dGVuc2lvblRvRG93
bmxvYWQoKmRvd25sb2FkKTsKLSAgICAgICAgQVNTRVJUKFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZp
bGVFeGlzdHMobmV0d29ya0RhdGFUYXNrLT5wZW5kaW5nRG93bmxvYWRMb2NhdGlvbigpKSk7Cisg
ICAgICAgIEFTU0VSVChGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG5ldHdvcmtEYXRhVGFzay0+cGVu
ZGluZ0Rvd25sb2FkTG9jYXRpb24oKSkpOwogICAgICAgICBkb3dubG9hZC0+ZGlkQ3JlYXRlRGVz
dGluYXRpb24obmV0d29ya0RhdGFUYXNrLT5wZW5kaW5nRG93bmxvYWRMb2NhdGlvbigpKTsKICAg
ICAgICAgZG93bmxvYWRNYW5hZ2VyLmRhdGFUYXNrQmVjYW1lRG93bmxvYWRUYXNrKGRvd25sb2Fk
SUQsIFdURk1vdmUoZG93bmxvYWQpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nlc3NNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL21hYy9OZXR3b3JrUHJvY2Vzc01hYy5tbQppbmRleCAzN2YzYjdmNzJhYTUwMmIz
MmJhODExZWM5YmEwOGY1ZTI1NTg2M2IyLi5mNWJmMDRhZTQ2NWY2MmI3NGQyYjE4YTgxNzU5MDFh
MTZlYTU1NWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL21hYy9O
ZXR3b3JrUHJvY2Vzc01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL21h
Yy9OZXR3b3JrUHJvY2Vzc01hYy5tbQpAQCAtMzgsMTIgKzM4LDEyIEBACiAjaW1wb3J0ICJTdHJp
bmdVdGlsaXRpZXMuaCIKICNpbXBvcnQgIldLRm91bmRhdGlvbi5oIgogI2ltcG9ydCA8V2ViQ29y
ZS9DZXJ0aWZpY2F0ZUluZm8uaD4KLSNpbXBvcnQgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2lt
cG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+CiAjaW1wb3J0IDxub3RpZnkuaD4KICNp
bXBvcnQgPHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29h
L0xhdW5jaFNlcnZpY2VzU1BJLmg+CiAjaW1wb3J0IDxzeXNleGl0cy5oPgorI2ltcG9ydCA8d3Rm
L0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaD4KICNp
bXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCmluZGV4IGM3Y2Ux
ZDI3YTAwMWJmZWRkZWQyNjIyNGU4NzM3YWNiNDA5Y2I5YmMuLmFhN2M1MGNiZjFlMzk4YzljM2Jh
OWMwMDE5Y2ZmMWU0ZGVlNzc4YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCkBAIC0zMiwxMiArMzIsMTIg
QEAKICNpbmNsdWRlICJSZXNvdXJjZUNhY2hlc1RvQ2xlYXIuaCIKICNpbmNsdWRlICJXZWJDb29r
aWVNYW5hZ2VyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DZXJ0aWZpY2F0ZUluZm8uaD4KLSNpbmNs
dWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Tb3VwTmV0
d29ya1Nlc3Npb24uaD4KICNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KKyNpbmNsdWRlIDx3dGYv
RmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9SQU1TaXplLmg+CiAjaW5jbHVkZSA8d3RmL2ds
aWIvR1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KQEAgLTEwOSw3
ICsxMDksNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3Jr
UHJvY2Vzcyhjb25zdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aQogICAgIEFTU0VSVCghcGFyYW1ldGVy
cy5kaXNrQ2FjaGVEaXJlY3RvcnkuaXNFbXB0eSgpKTsKICAgICBtX2Rpc2tDYWNoZURpcmVjdG9y
eSA9IHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5OwogCi0gICAgU291cE5ldHdvcmtTZXNz
aW9uOjpjbGVhck9sZFNvdXBDYWNoZShXZWJDb3JlOjpGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1l
KG1fZGlza0NhY2hlRGlyZWN0b3J5KSk7CisgICAgU291cE5ldHdvcmtTZXNzaW9uOjpjbGVhck9s
ZFNvdXBDYWNoZShGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKG1fZGlza0NhY2hlRGlyZWN0b3J5
KSk7CiAKICAgICBPcHRpb25TZXQ8TmV0d29ya0NhY2hlOjpDYWNoZTo6T3B0aW9uPiBjYWNoZU9w
dGlvbnMgeyBOZXR3b3JrQ2FjaGU6OkNhY2hlOjpPcHRpb246OlJlZ2lzdGVyTm90aWZ5IH07CiAg
ICAgaWYgKHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlTmV0d29ya0NhY2hlRWZmaWNhY3lMb2dnaW5n
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJv
Y2Vzc01haW5Vbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy91bml4L1BsdWdp
blByb2Nlc3NNYWluVW5peC5jcHAKaW5kZXggMmJkMmVkNTlhZTZhMmUyNGIwNzQ4YjAzY2ViYzM1
NjNjNjY3MTgzZS4uM2FkZTRjOTQzZjA5YjUxZDNjYzNiZWMyY2E5NjMzZjczZDEzNDk2ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc01h
aW5Vbml4LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvdW5peC9QbHVnaW5Q
cm9jZXNzTWFpblVuaXguY3BwCkBAIC0zNCw4ICszNCw4IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5o
IgogI2luY2x1ZGUgIk5ldHNjYXBlUGx1Z2luLmgiCiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzcy5o
IgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgor
I2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKICNpZiBQTEFURk9STShHVEspCiAjaW5jbHVk
ZSA8Z3RrL2d0ay5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGVyc2lzdGVu
Y3lVdGlscy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QZXJzaXN0ZW5jeVV0aWxzLmNwcApp
bmRleCA1ZGJhOTY4YmQ3ZTBiMzhjM2QyMjY5NGQ2ZDVkMmU2YjA2OWQyYTgxLi5lY2E5NjQxZDIw
NTM0NWM4MTg5NmViNTY1ZGY2MjdmOTVlM2M1MTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9QZXJzaXN0ZW5jeVV0aWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Q
ZXJzaXN0ZW5jeVV0aWxzLmNwcApAQCAtMjcsOCArMjcsOCBAQAogI2luY2x1ZGUgIlBlcnNpc3Rl
bmN5VXRpbHMuaCIKIAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0Zp
bGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgorI2luY2x1ZGUg
PHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KIAogbmFtZXNwYWNl
IFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05ldHNj
YXBlL3VuaXgvTmV0c2NhcGVQbHVnaW5Nb2R1bGVVbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1BsdWdpbnMvTmV0c2NhcGUvdW5peC9OZXRzY2FwZVBsdWdpbk1vZHVsZVVuaXguY3BwCmlu
ZGV4IGZiMWQ5ZGM5MjZmZDY3Njc5M2Y0NTRhNzRmYTU1MWFlZTU3MGM4ZTUuLmVlYzQ3NjExNWM4
NDAzZjEzM2IzOTM2MDU5MmI4ZjBhMTAzYzM0NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvdW5peC9OZXRzY2FwZVBsdWdpbk1vZHVsZVVuaXguY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvdW5peC9OZXRzY2Fw
ZVBsdWdpbk1vZHVsZVVuaXguY3BwCkBAIC0zMCwxMiArMzAsMTIgQEAKIAogI2luY2x1ZGUgIk5l
dHNjYXBlQnJvd3NlckZ1bmNzLmgiCiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc1Byb3h5LmgiCi0j
aW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8ZXJybm8uaD4KICNpbmNs
dWRlIDxmY250bC5oPgogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAjaW5jbHVkZSA8c3lzL3R5cGVz
Lmg+CiAjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy91bml4L1BsdWdpblNlYXJj
aFBhdGguY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy91bml4L1BsdWdpblNlYXJj
aFBhdGguY3BwCmluZGV4IGU4YWY5NjA0Y2U1NTk1YTQ0NGZlOGNhNTA0NWQzYTYxN2FiMjM2NGEu
LjJiZDU0OWE5NWRmYTY3NWNlNDdmNTZkNzhhNTliNGY3MzE1YTExYWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvdW5peC9QbHVnaW5TZWFyY2hQYXRoLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL3VuaXgvUGx1Z2luU2VhcmNoUGF0aC5jcHAK
QEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQbHVnaW5T
ZWFyY2hQYXRoLmgiCiAKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRl
IDx3dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViTWVtb3J5U2Ft
cGxlci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5oCmluZGV4IDgw
ODEzZmVhMDUwZjIwNDkxYmQxYzhiNTBlOTBiMWNiYmJjYWEzNDQuLjcyMWNkYmYzODkyMjY0YmM5
ZmQ3OTJiNTA4MzgzMGZmNTE5ZmM5YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYk1lbW9yeVNhbXBsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJNZW1vcnlT
YW1wbGVyLmgKQEAgLTUyLDggKzUyLDggQEAKICNpZiBFTkFCTEUoTUVNT1JZX1NBTVBMRVIpCiAK
ICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lz
dGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lz
dGVtLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTg3LDcgKzg3LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGluaXRpYWxpemVUaW1lcnMoZG91YmxlKTsKICAgICB2b2lkIHNhbXBsZVRpbWVy
RmlyZWQoKTsKICAgICB2b2lkIHN0b3BUaW1lckZpcmVkKCk7Ci0gICAgdm9pZCBhcHBlbmRDdXJy
ZW50TWVtb3J5VXNhZ2VUb0ZpbGUoV2ViQ29yZTo6RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFu
ZGxlJik7CisgICAgdm9pZCBhcHBlbmRDdXJyZW50TWVtb3J5VXNhZ2VUb0ZpbGUoRmlsZVN5c3Rl
bTo6UGxhdGZvcm1GaWxlSGFuZGxlJik7CiAgICAgdm9pZCBzZW5kTWVtb3J5UHJlc3N1cmVFdmVu
dCgpOwogICAgIAogICAgIFN5c3RlbU1hbGxvY1N0YXRzIHNhbXBsZVN5c3RlbU1hbGxvYygpIGNv
bnN0OwpAQCAtOTUsNyArOTUsNyBAQCBwcml2YXRlOgogICAgIFdlYk1lbW9yeVN0YXRpc3RpY3Mg
c2FtcGxlV2ViS2l0KCkgY29uc3Q7CiAgICAgU3RyaW5nIHByb2Nlc3NOYW1lKCkgY29uc3Q7CiAg
ICAgCi0gICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIG1fc2FtcGxl
TG9nRmlsZSB7IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUg
fTsKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgbV9zYW1wbGVMb2dGaWxlIHsg
RmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSB9OwogICAgIFN0cmluZyBtX3Nh
bXBsZUxvZ0ZpbGVQYXRoOwogICAgIFdlYkNvcmU6OlRpbWVyIG1fc2FtcGxlVGltZXI7CiAgICAg
V2ViQ29yZTo6VGltZXIgbV9zdG9wVGltZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9nbGliL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aEdMaWIuY3BwIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvZ2xpYi9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhHTGliLmNwcAppbmRleCBhNzBiNDFhMDlh
OTMwYmJkYzNiNTQxY2U2YTcwOGFkODliYmMyZjRiLi40ZmYzNWQzMWRlMWQ1NzIzMWE2ZjZlMTAx
NWE4NTVkNDBmOGM4YzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9nbGliL1By
b2Nlc3NFeGVjdXRhYmxlUGF0aEdMaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2ds
aWIvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoR0xpYi5jcHAKQEAgLTI3LDEyICsyNywxMSBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlByb2Nlc3NFeGVjdXRhYmxlUGF0aC5oIgogCi0j
aW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8Z2xpYi5oPgorI2luY2x1
ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR0xpYlV0aWxpdGllcy5o
PgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiAjaWYg
RU5BQkxFKERFVkVMT1BFUl9NT0RFKQogc3RhdGljIFN0cmluZyBnZXRFeGVjdXRhYmxlUGF0aCgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvQ2hpbGRQcm9jZXNzSU9TLm1t
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL0NoaWxkUHJvY2Vzc0lPUy5tbQppbmRleCA4MWQ1
NGYzYmYwMDllZmFmMDVkNDAyZDZmNWNmZWE4ZDEwZjRiNTY3Li42OWQ1M2NmZjMxNGE5NWNiYzRh
ODA3YWI5OGM5ZWNhODJmZTJiZTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9p
b3MvQ2hpbGRQcm9jZXNzSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9DaGls
ZFByb2Nlc3NJT1MubW0KQEAgLTMxLDcgKzMxLDYgQEAKIAogI2ltcG9ydCAiU2FuZGJveEluaXRp
YWxpemF0aW9uUGFyYW1ldGVycy5oIgogI2ltcG9ydCAiWFBDU2VydmljZUVudHJ5UG9pbnQuaCIK
LSNpbXBvcnQgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8V2ViQ29yZS9GbG9hdGlu
Z1BvaW50RW52aXJvbm1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvU3lzdGVtVmVyc2lvbi5oPgog
I2ltcG9ydCA8bWFjaC9tYWNoLmg+CkBAIC0zOSw2ICszOCw3IEBACiAjaW1wb3J0IDxwd2QuaD4K
ICNpbXBvcnQgPHN0ZGxpYi5oPgogI2ltcG9ydCA8c3lzZXhpdHMuaD4KKyNpbXBvcnQgPHd0Zi9G
aWxlU3lzdGVtLmg+CiAKICNpZiBFTkFCTEUoTUFOVUFMX1NBTkRCT1hJTkcpCiAjaW1wb3J0IDx3
dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9tYWMvQ2hpbGRQcm9jZXNzTWFjLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0No
aWxkUHJvY2Vzc01hYy5tbQppbmRleCAzYzM5NGNjOTE2YzA5OTIwZDAzMzNmMmM0YTI1OGU0N2Yx
ZTdjOTc5Li43ODUzNmFhZTYwYmNmMDJjOTI2NjBjMzI4MTFhOGQwZjU4ZWZmNmYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQ2hpbGRQcm9jZXNzTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL21hYy9DaGlsZFByb2Nlc3NNYWMubW0KQEAgLTM1LDcgKzM1LDYg
QEAKICNpbXBvcnQgIldLRm91bmRhdGlvbi5oIgogI2ltcG9ydCAiWFBDU2VydmljZUVudHJ5UG9p
bnQuaCIKICNpbXBvcnQgPFdlYkNvcmUvRmlsZUhhbmRsZS5oPgotI2ltcG9ydCA8V2ViQ29yZS9G
aWxlU3lzdGVtLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1N5c3RlbVZlcnNpb24uaD4KICNpbXBvcnQg
PG1hY2gtby9keWxkLmg+CiAjaW1wb3J0IDxtYWNoL21hY2guaD4KQEAgLTQ3LDYgKzQ2LDcgQEAK
ICNpbXBvcnQgPHN5cy9zeXNjdGwuaD4KICNpbXBvcnQgPHN5c2V4aXRzLmg+CiAjaW1wb3J0IDx3
dGYvRGF0YUxvZy5oPgorI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0Zi9S
YW5kb21OdW1iZXIuaD4KICNpbXBvcnQgPHd0Zi9TY29wZS5oPgogI2ltcG9ydCA8d3RmL1N5c3Rl
bVRyYWNpbmcuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9TYW5kYm94
RXh0ZW5zaW9uTWFjLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1NhbmRib3hFeHRlbnNp
b25NYWMubW0KaW5kZXggMGNlYzk4NWM3ODVjNzczNjU5NzcyZDI0ZjFiNmQ1NzZkNzFkNzVlMS4u
YWZiYzZiMmExNGU1YmZmMGMxNjY1NmI3YzIwODc3Y2JjZGRkNDU3MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvbWFjL1NhbmRib3hFeHRlbnNpb25NYWMubW0KKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvbWFjL1NhbmRib3hFeHRlbnNpb25NYWMubW0KQEAgLTMxLDEzICszMSwx
MiBAQAogI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgogI2ltcG9ydCAiRGVjb2Rlci5oIgogI2lt
cG9ydCAiRW5jb2Rlci5oIgotI2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0
IDxzeXMvc3RhdC5oPgorI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0Zi9z
cGkvZGFyd2luL1NhbmRib3hTUEkuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAog
bmFtZXNwYWNlIFdlYktpdCB7Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogY2xhc3MgU2Fu
ZGJveEV4dGVuc2lvbkltcGwgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKaW5kZXggMzhmNDJjYjkx
YTUzOGVkZTY4ZTIyNTk0MTA1MGY5NmFmNjdiOTY5OC4uNzQyNmJkMmI0NTU0ZjNlZmVjY2FiZmE2
ODk5NmU1NWFiZmVkYTEyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9RdWFsaWZpZWROYW1lLmg+CiAjaW5jbHVkZSA8c3RyaW5nPgogI2luY2x1
ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+
CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3Au
aD4KICNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CkBAIC00OCw3ICs0OSw3IEBACiAKIG5hbWVz
cGFjZSBBUEkgewogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDo6TmV0d29ya0NhY2hlOwotdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU6OkZpbGVTeXN0ZW07Cit1c2luZyBuYW1lc3BhY2UgV1RGOjpGaWxl
U3lzdGVtOwogCiBDb250ZW50UnVsZUxpc3RTdG9yZSYgQ29udGVudFJ1bGVMaXN0U3RvcmU6Omxl
Z2FjeURlZmF1bHRTdG9yZSgpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvQVBJV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQppbmRleCA0YTJl
YzM4NzIzN2ZmZGM4Y2E4OTQ3MTg2ZmZlZDBkNWNhNGVhNzU0Li4zODg0ZjQzYzFlMjBhMTI5OGJh
ODg1N2ViMWIwOTE1NWE5OGIwMDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvQVBJV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KQEAgLTI4
LDkgKzI4LDggQEAKIAogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlICJT
YW5kYm94VXRpbGl0aWVzLmgiCi0KICNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4K
LSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3Rl
bS5oPgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgPFdlYkNvcmUvUnVudGlt
ZUFwcGxpY2F0aW9uQ2hlY2tzLmg+CkBAIC0xNjksNyArMTY4LDcgQEAgV1RGOjpTdHJpbmcgV2Vi
c2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkK
ICAgICAvLyBDdXJyZW50bHksIHRoZSB0b3AgbGV2ZWwgb2YgdGhhdCBkaXJlY3RvcnkgY29udGFp
bnMgZW50aXRpZXMgcmVsYXRlZCB0byBXZWJTUUwgZGF0YWJhc2VzLgogICAgIC8vIFdlIHNob3Vs
ZCBmaXggdGhpcywgYW5kIG1vdmUgV2ViU1FMIGludG8gYSBzdWJkaXJlY3RvcnkgKGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ4MDcpCiAgICAgLy8gSW4gdGhlIG1l
YW50aW1lLCBhbiBlbnRpdHkgbmFtZSBwcmVmaXhlZCB3aXRoIHRocmVlIHVuZGVyc2NvcmVzIHdp
bGwgbm90IGNvbmZsaWN0IHdpdGggYW55IFdlYlNRTCBlbnRpdGllcy4KLSAgICByZXR1cm4gV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGxlZ2FjeURlZmF1bHRX
ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpLCAiX19fSW5kZXhlZERCIik7CisgICAgcmV0dXJuIEZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChsZWdhY3lEZWZhdWx0V2ViU1FMRGF0
YWJhc2VEaXJlY3RvcnkoKSwgIl9fX0luZGV4ZWREQiIpOwogfQogCiBXVEY6OlN0cmluZyBXZWJz
aXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3Rv
cmVHTGliLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVE
YXRhU3RvcmVHTGliLmNwcAppbmRleCBlMWM0NTI5YjNkMjFlZTU4YmZlZmI1YzE4ZmVmYjUxMTIy
YzAxNjBmLi5mNWFiOTMxY2JlZDNiNzcxYmYzY2VjODEyY2I3NDJlNDliYjY4NTMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRlRGF0YVN0b3Jl
R0xpYi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvQVBJV2Vic2l0
ZURhdGFTdG9yZUdMaWIuY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgogCi0jaW5jbHVkZSA8V2ViQ29yZS9G
aWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYv
Z2xpYi9HVW5pcXVlUHRyLmg+CiAKICNpZiBQTEFURk9STShHVEspCkBAIC00NiwxMiArNDYsMTIg
QEAgV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVE
aXJlY3RvcnkoKQogLy8gV2h5IGlzIG9ubHkgdGhpcyBkaXJlY3RvcnkgbmFtZXNwYWNlZCB0byBh
IHBhcnRpY3VsYXIgYXBwbGljYXRpb24/CiBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gY2FjaGVEaXJlY3Rv
cnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oZ19nZXRfcHJnbmFtZSgpKSwgIldlYktpdENhY2hlIikpOworICAgIHJl
dHVybiBjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihnX2dldF9wcmduYW1lKCkpLCAiV2ViS2l0Q2FjaGUiKSk7CiB9CiAKIFdU
Rjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRDYWNoZVN0b3JhZ2VEaXJlY3Rvcnko
KQogewotICAgIHJldHVybiBjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihX
ZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihnX2dldF9wcmduYW1l
KCkpLCAiQ2FjaGVTdG9yYWdlIikpOworICAgIHJldHVybiBjYWNoZURpcmVjdG9yeUZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmls
ZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihnX2dldF9wcmduYW1l
KCkpLCAiQ2FjaGVTdG9yYWdlIikpOwogfQogCiBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKQpAQCAtOTEsMTkgKzkxLDE5IEBA
IFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGlyZWN0b3J5KCkKIAogV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6Y2FjaGVEaXJl
Y3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgV1RGOjpTdHJpbmcmIGRpcmVjdG9y
eU5hbWUpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGdfZ2V0X3VzZXJfY2FjaGVfZGlyKCkpLCBkaXJlY3RvcnlOYW1lKTsKKyAgICBy
ZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0
cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfdXNlcl9jYWNoZV9kaXIoKSks
IGRpcmVjdG9yeU5hbWUpOwogfQogCiBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjp3ZWJz
aXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmlu
ZyYgZGlyZWN0b3J5TmFtZSkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfdXNlcl9kYXRhX2RpcigpKSwgZGlyZWN0b3J5TmFt
ZSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxl
U3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGdfZ2V0X3VzZXJfZGF0
YV9kaXIoKSksIGRpcmVjdG9yeU5hbWUpOwogfQogCiBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0
b3JlOjpsZWdhY3lEZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpCiB7CiAjaWYgUExB
VEZPUk0oV1BFKQogICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGNhY2hlRGlyZWN0b3J5KGdfYnVpbGRf
ZmlsZW5hbWUoZ19nZXRfdXNlcl9jYWNoZV9kaXIoKSwgIndwZSIsICJhcHBjYWNoZSIsIG51bGxw
dHIpKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihjYWNoZURpcmVjdG9yeS5nZXQoKSk7CisgICAgcmV0dXJuIEZpbGVT
eXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY2FjaGVEaXJlY3Rvcnku
Z2V0KCkpOwogI2VuZGlmCiAgICAgcmV0dXJuIGRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0
b3J5KCk7CiB9CkBAIC0xMTIsNyArMTEyLDcgQEAgV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9y
ZTo6bGVnYWN5RGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpCiB7CiAjaWYgUExBVEZPUk0o
V1BFKQogICAgIEdVbmlxdWVQdHI8Y2hhcj4gZGlza0NhY2hlRGlyZWN0b3J5KGdfYnVpbGRfZmls
ZW5hbWUoZ19nZXRfdXNlcl9jYWNoZV9kaXIoKSwgIndwZSIsICJjYWNoZSIsIG51bGxwdHIpKTsK
LSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihkaXNrQ2FjaGVEaXJlY3RvcnkuZ2V0KCkpOworICAgIHJldHVybiBGaWxlU3lz
dGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRpc2tDYWNoZURpcmVjdG9y
eS5nZXQoKSk7CiAjZW5kaWYKICAgICByZXR1cm4gZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9y
eSgpOwogfQpAQCAtMTIxLDcgKzEyMSw3IEBAIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6
OmxlZ2FjeURlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpCiB7CiAjaWYgUExBVEZPUk0o
V1BFKQogICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGRhdGFiYXNlRGlyZWN0b3J5KGdfYnVpbGRfZmls
ZW5hbWUoZ19nZXRfdXNlcl9kYXRhX2RpcigpLCAid3BlIiwgImRhdGFiYXNlcyIsIG51bGxwdHIp
KTsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihkYXRhYmFzZURpcmVjdG9yeS5nZXQoKSk7CisgICAgcmV0dXJuIEZpbGVT
eXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGF0YWJhc2VEaXJlY3Rv
cnkuZ2V0KCkpOwogI2VuZGlmCiAgICAgcmV0dXJuIGRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVj
dG9yeSgpOwogfQpAQCAtMTMwLDcgKzEzMCw3IEBAIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3Rv
cmU6OmxlZ2FjeURlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpCiB7CiAjaWYgUExB
VEZPUk0oV1BFKQogICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGluZGV4ZWREQkRhdGFiYXNlRGlyZWN0
b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9kYXRhX2RpcigpLCAid3BlIiwgImRhdGFi
YXNlcyIsICJpbmRleGVkZGIiLCBudWxscHRyKSk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVT
eXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oaW5kZXhlZERCRGF0YWJh
c2VEaXJlY3RvcnkuZ2V0KCkpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKGluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5LmdldCgpKTsK
ICNlbmRpZgogICAgIHJldHVybiBkZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKTsK
IH0KQEAgLTEzOSw3ICsxMzksNyBAQCBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdh
Y3lEZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkKIHsKICNpZiBQTEFURk9STShXUEUpCiAg
ICAgR1VuaXF1ZVB0cjxnY2hhcj4gc3RvcmFnZURpcmVjdG9yeShnX2J1aWxkX2ZpbGVuYW1lKGdf
Z2V0X3VzZXJfZGF0YV9kaXIoKSwgIndwZSIsICJsb2NhbHN0b3JhZ2UiLCBudWxscHRyKSk7Ci0g
ICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oc3RvcmFnZURpcmVjdG9yeS5nZXQoKSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06
OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oc3RvcmFnZURpcmVjdG9yeS5nZXQo
KSk7CiAjZW5kaWYKICAgICByZXR1cm4gZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpOwog
fQpAQCAtMTQ4LDcgKzE0OCw3IEBAIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2Fj
eURlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KCkKIHsKICNpZiBQTEFURk9STShXUEUpCiAgICAg
R1VuaXF1ZVB0cjxnY2hhcj4gY2FjaGVEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFtZShnX2dldF91
c2VyX2NhY2hlX2RpcigpLCAid3BlIiwgIm1lZGlhY2FjaGUiLCBudWxscHRyKSk7Ci0gICAgcmV0
dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oY2FjaGVEaXJlY3RvcnkuZ2V0KCkpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpzdHJpbmdG
cm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNhY2hlRGlyZWN0b3J5LmdldCgpKTsKICNlbmRp
ZgogICAgIHJldHVybiBkZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpOwogfQpAQCAtMTU3LDcg
KzE1Nyw3IEBAIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRNZWRp
YUtleXNTdG9yYWdlRGlyZWN0b3J5KCkKIHsKICNpZiBQTEFURk9STShXUEUpCiAgICAgR1VuaXF1
ZVB0cjxnY2hhcj4gbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeShnX2J1aWxkX2ZpbGVuYW1lKGdf
Z2V0X3VzZXJfZGF0YV9kaXIoKSwgIndwZSIsICJtZWRpYWtleXMiLCBudWxscHRyKSk7Ci0gICAg
cmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24obWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeS5nZXQoKSk7CisgICAgcmV0dXJuIEZpbGVT
eXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24obWVkaWFLZXlzU3RvcmFn
ZURpcmVjdG9yeS5nZXQoKSk7CiAjZW5kaWYKICAgICByZXR1cm4gZGVmYXVsdE1lZGlhS2V5c1N0
b3JhZ2VEaXJlY3RvcnkoKTsKIH0KQEAgLTE2Niw3ICsxNjYsNyBAQCBTdHJpbmcgV2Vic2l0ZURh
dGFTdG9yZTo6bGVnYWN5RGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSgp
CiB7CiAjaWYgUExBVEZPUk0oV1BFKQogICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGRldmljZUlkSGFz
aFNhbHRzU3RvcmFnZURpcmVjdG9yeShnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfZGF0YV9k
aXIoKSwgIndwZSIsICJkZXZpY2VpZGhhc2hzYWx0cyIsIG51bGxwdHIpKTsKLSAgICByZXR1cm4g
V2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihk
ZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkuZ2V0KCkpOworICAgIHJldHVybiBGaWxl
U3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRldmljZUlkSGFzaFNh
bHRzU3RvcmFnZURpcmVjdG9yeS5nZXQoKSk7CiAjZW5kaWYKICAgICByZXR1cm4gZGVmYXVsdERl
dmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpOwogfQpAQCAtMTc0LDcgKzE3NCw3IEBA
IFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNT
dG9yYWdlRGlyZWN0b3J5KCkKIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURl
ZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpCiB7CiAgICAgR1VuaXF1ZVB0
cjxnY2hhcj4gamF2YVNjcmlwdENvcmVDb25maWdEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFtZShn
X2dldF91c2VyX2RhdGFfZGlyKCksIEJBU0VfRElSRUNUT1JZLCAiSmF2YVNjcmlwdENvcmVEZWJ1
ZyIsIG51bGxwdHIpKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJv
bUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihqYXZhU2NyaXB0Q29yZUNvbmZpZ0RpcmVjdG9yeS5n
ZXQoKSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oamF2YVNjcmlwdENvcmVDb25maWdEaXJlY3RvcnkuZ2V0KCkpOwogfQogCiBSZWY8
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4gV2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAKaW5kZXggNjc0YTVkYjA0M2M4YTYwZjM2
MjBhYTdiYTAxOGMxZjk4NWVkZjhhOS4uYjA0NjZlOTE0MDkwYmMwNTU5NjZlNmI5ZGYzMTllYTMw
NGRiMjM1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNv
bkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29u
RGF0YWJhc2UuY3BwCkBAIC0yOSwxMSArMjksMTEgQEAKIAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL0JpdG1hcEltYWdlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9GaWxl
U3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U1FMaXRlU3RhdGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVUcmFuc2FjdGlvbi5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVT
eXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZhdmljb25EYXRhYmFzZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGYXZpY29uRGF0YWJh
c2UuY3BwCmluZGV4IDliZTcyNTNmODVlOTFkYTExYjk1ZWQyODA5ZWI0NGI1YTM3MTVhNWEuLmUw
MTY0ODY4MTcxYTVkOGJlZThhM2UxODZhYzY4MjVjNDkxZDk3MDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZhdmljb25EYXRhYmFzZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmF2aWNvbkRhdGFiYXNl
LmNwcApAQCAtMjMsMTIgKzIzLDEyIEBACiAjaW5jbHVkZSAiSWNvbkRhdGFiYXNlLmgiCiAjaW5j
bHVkZSAiV2ViS2l0RmF2aWNvbkRhdGFiYXNlUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYlByZWZl
cmVuY2VzLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9JbWFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50U2l6ZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUmVmUHRyQ2Fpcm8uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgog
I2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4K
ICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9TZXRGb3JTY29wZS5oPgog
I2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KQEAgLTI3Myw3ICsyNzMsNyBAQCB2b2lkIHdl
YmtpdEZhdmljb25EYXRhYmFzZU9wZW4oV2ViS2l0RmF2aWNvbkRhdGFiYXNlKiBkYXRhYmFzZSwg
Y29uc3QgU3RyaW5nJiBwYQogICAgIHByaXYtPmljb25EYXRhYmFzZS0+c2V0RW5hYmxlZCh0cnVl
KTsKICAgICBwcml2LT5pY29uRGF0YWJhc2UtPnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoV2Vi
UHJlZmVyZW5jZXM6OmFueVBhZ2VzQXJlVXNpbmdQcml2YXRlQnJvd3NpbmcoKSk7CiAKLSAgICBp
ZiAoIXByaXYtPmljb25EYXRhYmFzZS0+b3BlbihXZWJDb3JlOjpGaWxlU3lzdGVtOjpkaXJlY3Rv
cnlOYW1lKHBhdGgpLCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUocGF0aCkp
KSB7CisgICAgaWYgKCFwcml2LT5pY29uRGF0YWJhc2UtPm9wZW4oRmlsZVN5c3RlbTo6ZGlyZWN0
b3J5TmFtZShwYXRoKSwgRmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKHBhdGgpKSkgewogICAg
ICAgICBwcml2LT5pY29uRGF0YWJhc2UgPSBudWxscHRyOwogICAgICAgICBJY29uRGF0YWJhc2U6
OmFsbG93RGF0YWJhc2VDbGVhbnVwKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZpbGVDaG9vc2VyUmVxdWVzdC5jcHAK
aW5kZXggMzdlNmNjYTBjZWJjZTkxNDczMGUzYzZkNDI1YzVmZWY3N2ZiNDg1Zi4uMDk5ODBhYWUw
Njk5ZWJjZTlkMzNlOWM1YTY5N2EwMmRlMDQ3MDNkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3Qu
Y3BwCkBAIC0yNSw5ICsyNSw5IEBACiAjaW5jbHVkZSAiQVBJU3RyaW5nLmgiCiAjaW5jbHVkZSAi
V2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYk9wZW5QYW5l
bFJlc3VsdExpc3RlbmVyUHJveHkuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1RleHRFbmNvZGluZy5oPgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4t
bGliLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+
CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlx
dWVQdHIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFdlYkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0V2ViQ29udGV4dC5jcHAKaW5kZXggMGYzOWUxMjVmM2RhNmM0ODM5NmE0MGM5Y2RmZThmNGM0
MWQ5NjlhZS4uYTNhZDlmOWM3YjY1YmEzYTMzNzNjODI1MDc2MzM1YzU2YjkyZmUxZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4
dC5jcHAKQEAgLTU0LDEwICs1NCwxMCBAQAogI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvbk1hbmFn
ZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhVHlwZS5oIgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL1JlbW90ZUluc3BlY3Rvci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3Rl
bS5oPgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CiAjaW5jbHVkZSA8bGliaW50bC5oPgog
I2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0xhbmd1YWdlLmg+CiAjaW5jbHVkZSA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CkBAIC0zMzMsMjAgKzMzMywyMCBAQCBzdGF0aWMgdm9pZCB3ZWJr
aXRXZWJDb250ZXh0Q29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQogICAgIEdVbmlxdWVQdHI8
Y2hhcj4gYnVuZGxlRmlsZW5hbWUoZ19idWlsZF9maWxlbmFtZShpbmplY3RlZEJ1bmRsZURpcmVj
dG9yeSgpLCBJTkpFQ1RFRF9CVU5ETEVfRklMRU5BTUUsIG51bGxwdHIpKTsKIAogICAgIEFQSTo6
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247Ci0gICAgY29uZmlndXJhdGlv
bi5zZXRJbmplY3RlZEJ1bmRsZVBhdGgoV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihidW5kbGVGaWxlbmFtZS5nZXQoKSkpOworICAgIGNvbmZp
Z3VyYXRpb24uc2V0SW5qZWN0ZWRCdW5kbGVQYXRoKEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oYnVuZGxlRmlsZW5hbWUuZ2V0KCkpKTsKICAgICBjb25maWd1
cmF0aW9uLnNldE1heGltdW1Qcm9jZXNzQ291bnQoMSk7CiAgICAgY29uZmlndXJhdGlvbi5zZXRE
aXNrQ2FjaGVTcGVjdWxhdGl2ZVZhbGlkYXRpb25FbmFibGVkKHRydWUpOwogCiAgICAgV2ViS2l0
V2ViQ29udGV4dCogd2ViQ29udGV4dCA9IFdFQktJVF9XRUJfQ09OVEVYVChvYmplY3QpOwogICAg
IFdlYktpdFdlYkNvbnRleHRQcml2YXRlKiBwcml2ID0gd2ViQ29udGV4dC0+cHJpdjsKICAgICBp
ZiAocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyICYmICF3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFn
ZXJfaXNfZXBoZW1lcmFsKHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpIHsKLSAgICAg
ICAgY29uZmlndXJhdGlvbi5zZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoV2ViQ29yZTo6RmlsZVN5
c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vic2l0ZV9k
YXRhX21hbmFnZXJfZ2V0X2xvY2FsX3N0b3JhZ2VfZGlyZWN0b3J5KHByaXYtPndlYnNpdGVEYXRh
TWFuYWdlci5nZXQoKSkpKTsKLSAgICAgICAgY29uZmlndXJhdGlvbi5zZXREaXNrQ2FjaGVEaXJl
Y3RvcnkoV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNv
cmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0
X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9kaXNrX2NhY2hlX2RpcmVjdG9yeShwcml2LT53ZWJz
aXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSwgbmV0d29ya0NhY2hlU3ViZGlyZWN0b3J5KSk7Ci0gICAg
ICAgIGNvbmZpZ3VyYXRpb24uc2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeShXZWJDb3JlOjpG
aWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHdlYmtpdF93ZWJz
aXRlX2RhdGFfbWFuYWdlcl9nZXRfb2ZmbGluZV9hcHBsaWNhdGlvbl9jYWNoZV9kaXJlY3Rvcnko
cHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSkpOwotICAgICAgICBjb25maWd1cmF0aW9u
LnNldEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmlu
Z0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2Vy
X2dldF9pbmRleGVkZGJfZGlyZWN0b3J5KHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkp
KTsKLSAgICAgICAgY29uZmlndXJhdGlvbi5zZXRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeShXZWJD
b3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHdlYmtp
dF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfd2Vic3FsX2RpcmVjdG9yeShwcml2LT53ZWJzaXRl
RGF0YU1hbmFnZXIuZ2V0KCkpKSk7CisgICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0TG9jYWxTdG9y
YWdlRGlyZWN0b3J5KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24od2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9sb2NhbF9zdG9yYWdlX2RpcmVjdG9y
eShwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSk7CisgICAgICAgIGNvbmZpZ3VyYXRp
b24uc2V0RGlza0NhY2hlRGlyZWN0b3J5KEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHdlYmtp
dF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfZGlza19jYWNoZV9kaXJlY3RvcnkocHJpdi0+d2Vi
c2l0ZURhdGFNYW5hZ2VyLmdldCgpKSksIG5ldHdvcmtDYWNoZVN1YmRpcmVjdG9yeSkpOworICAg
ICAgICBjb25maWd1cmF0aW9uLnNldEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoRmlsZVN5c3Rl
bTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vic2l0ZV9kYXRh
X21hbmFnZXJfZ2V0X29mZmxpbmVfYXBwbGljYXRpb25fY2FjaGVfZGlyZWN0b3J5KHByaXYtPndl
YnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpKTsKKyAgICAgICAgY29uZmlndXJhdGlvbi5zZXRJbmRl
eGVkREJEYXRhYmFzZURpcmVjdG9yeShGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfaW5kZXhlZGRiX2Rp
cmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSk7CisgICAgICAgIGNvbmZp
Z3VyYXRpb24uc2V0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoRmlsZVN5c3RlbTo6c3RyaW5nRnJv
bUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0
X3dlYnNxbF9kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSkpOwogICAg
IH0gZWxzZSBpZiAoIXByaXYtPmxvY2FsU3RvcmFnZURpcmVjdG9yeS5pc051bGwoKSkKLSAgICAg
ICAgY29uZmlndXJhdGlvbi5zZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoV2ViQ29yZTo6RmlsZVN5
c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5sb2NhbFN0b3Jh
Z2VEaXJlY3RvcnkuZGF0YSgpKSk7CisgICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0TG9jYWxTdG9y
YWdlRGlyZWN0b3J5KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24ocHJpdi0+bG9jYWxTdG9yYWdlRGlyZWN0b3J5LmRhdGEoKSkpOwogCiAgICAgcHJpdi0+cHJv
Y2Vzc1Bvb2wgPSBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlKGNvbmZpZ3VyYXRpb24pOwogCkBAIC05
MjQsNyArOTI0LDcgQEAgdm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2Zhdmljb25fZGF0YWJh
c2VfZGlyZWN0b3J5KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQKICAgICBXZWJLaXRXZWJDb250
ZXh0UHJpdmF0ZSogcHJpdiA9IGNvbnRleHQtPnByaXY7CiAgICAgZW5zdXJlRmF2aWNvbkRhdGFi
YXNlKGNvbnRleHQpOwogCi0gICAgU3RyaW5nIGRpcmVjdG9yeVBhdGggPSBXZWJDb3JlOjpGaWxl
U3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIFN0
cmluZyBkaXJlY3RvcnlQYXRoID0gRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihwYXRoKTsKICAgICAvLyBVc2UgZGVmYXVsdCBpZiBudWxscHRyIGlzIHBhc3Nl
ZCBhcyBwYXJhbWV0ZXIuCiAgICAgaWYgKGRpcmVjdG9yeVBhdGguaXNFbXB0eSgpKSB7CiAjaWYg
UExBVEZPUk0oR1RLKQpAQCAtOTMzLDcgKzkzMyw3IEBAIHZvaWQgd2Via2l0X3dlYl9jb250ZXh0
X3NldF9mYXZpY29uX2RhdGFiYXNlX2RpcmVjdG9yeShXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0
CiAgICAgICAgIGNvbnN0IGNoYXIqIHBvcnREaXJlY3RvcnkgPSAid3BlIjsKICNlbmRpZgogICAg
ICAgICBHVW5pcXVlUHRyPGdjaGFyPiBkYXRhYmFzZURpcmVjdG9yeShnX2J1aWxkX2ZpbGVuYW1l
KGdfZ2V0X3VzZXJfY2FjaGVfZGlyKCksIHBvcnREaXJlY3RvcnksICJpY29uZGF0YWJhc2UiLCBu
dWxscHRyKSk7Ci0gICAgICAgIGRpcmVjdG9yeVBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpz
dHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRhdGFiYXNlRGlyZWN0b3J5LmdldCgp
KTsKKyAgICAgICAgZGlyZWN0b3J5UGF0aCA9IEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oZGF0YWJhc2VEaXJlY3RvcnkuZ2V0KCkpOwogICAgIH0KICAgICBw
cml2LT5mYXZpY29uRGF0YWJhc2VEaXJlY3RvcnkgPSBkaXJlY3RvcnlQYXRoLnV0ZjgoKTsKIApA
QCAtOTQyLDcgKzk0Miw3IEBAIHZvaWQgd2Via2l0X3dlYl9jb250ZXh0X3NldF9mYXZpY29uX2Rh
dGFiYXNlX2RpcmVjdG9yeShXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0CiAgICAgICAgICJXZWJw
YWdlSWNvbnMuZGIiLCBudWxscHRyKSk7CiAKICAgICAvLyBTZXR0aW5nIHRoZSBwYXRoIHdpbGwg
Y2F1c2UgdGhlIGljb24gZGF0YWJhc2UgdG8gYmUgb3BlbmVkLgotICAgIHdlYmtpdEZhdmljb25E
YXRhYmFzZU9wZW4ocHJpdi0+ZmF2aWNvbkRhdGFiYXNlLmdldCgpLCBXZWJDb3JlOjpGaWxlU3lz
dGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZhdmljb25EYXRhYmFzZVBh
dGguZ2V0KCkpKTsKKyAgICB3ZWJraXRGYXZpY29uRGF0YWJhc2VPcGVuKHByaXYtPmZhdmljb25E
YXRhYmFzZS5nZXQoKSwgRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihmYXZpY29uRGF0YWJhc2VQYXRoLmdldCgpKSk7CiAKICAgICBpZiAod2Via2l0X3dlYl9j
b250ZXh0X2lzX2VwaGVtZXJhbChjb250ZXh0KSkKICAgICAgICAgd2Via2l0RmF2aWNvbkRhdGFi
YXNlU2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChwcml2LT5mYXZpY29uRGF0YWJhc2UuZ2V0KCks
IHRydWUpOwpAQCAtMTAyNiw3ICsxMDI2LDcgQEAgdm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfc2V0
X2FkZGl0aW9uYWxfcGx1Z2luc19kaXJlY3RvcnkoV2ViS2l0V2ViQ29udGV4dCogY29udGUKICAg
ICBnX3JldHVybl9pZl9mYWlsKGRpcmVjdG9yeSk7CiAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExV
R0lOX0FQSSkKLSAgICBjb250ZXh0LT5wcml2LT5wcm9jZXNzUG9vbC0+c2V0QWRkaXRpb25hbFBs
dWdpbnNEaXJlY3RvcnkoV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihkaXJlY3RvcnkpKTsKKyAgICBjb250ZXh0LT5wcml2LT5wcm9jZXNzUG9v
bC0+c2V0QWRkaXRpb25hbFBsdWdpbnNEaXJlY3RvcnkoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihkaXJlY3RvcnkpKTsKICNlbmRpZgogfQogCkBAIC0xNDE4
LDcgKzE0MTgsNyBAQCB2b2lkIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfZGlza19jYWNoZV9kaXJl
Y3RvcnkoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCwgY29ucwogICAgIGdfcmV0dXJuX2lmX2Zh
aWwoV0VCS0lUX0lTX1dFQl9DT05URVhUKGNvbnRleHQpKTsKICAgICBnX3JldHVybl9pZl9mYWls
KGRpcmVjdG9yeSk7CiAKLSAgICBjb250ZXh0LT5wcml2LT5wcm9jZXNzUG9vbC0+Y29uZmlndXJh
dGlvbigpLnNldERpc2tDYWNoZURpcmVjdG9yeShXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihkaXJlY3RvcnkpLCBuZXR3b3JrQ2FjaGVTdWJkaXJlY3RvcnkpKTsK
KyAgICBjb250ZXh0LT5wcml2LT5wcm9jZXNzUG9vbC0+Y29uZmlndXJhdGlvbigpLnNldERpc2tD
YWNoZURpcmVjdG9yeShGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5
c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihkaXJlY3RvcnkpLCBuZXR3
b3JrQ2FjaGVTdWJkaXJlY3RvcnkpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2Vy
LmNwcAppbmRleCA3ZTFkMTRiNjdiOTUzOGY0NzVlMGY4YWY0NTBhYWJkZWYyZTIxNTVlLi4xY2Mw
NjU0MTFlNzMxZmE2NzJjNDM0ZjNiM2MwYWJlOWE1NjkzZWJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRhTWFu
YWdlci5jcHAKQEAgLTI2LDggKzI2LDggQEAKICNpbmNsdWRlICJXZWJLaXRXZWJzaXRlRGF0YU1h
bmFnZXJQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2Vic2l0ZURhdGFQcml2YXRlLmgiCiAj
aW5jbHVkZSAiV2Vic2l0ZURhdGFGZXRjaE9wdGlvbi5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRmls
ZVN5c3RlbS5oPgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisjaW5jbHVkZSA8d3RmL0Zp
bGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL2dsaWIvV1RGR1R5cGUuaD4KIApAQCAtMzYzLDEzICszNjMsMTMgQEAgQVBJOjpXZWJzaXRl
RGF0YVN0b3JlJiB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJHZXREYXRhU3RvcmUoV2ViS2l0V2Vi
c2l0ZURhdGFNYW4KICAgICBpZiAoIXByaXYtPndlYnNpdGVEYXRhU3RvcmUpIHsKICAgICAgICAg
YXV0byBjb25maWd1cmF0aW9uID0gV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OmNyZWF0
ZSgpOwogICAgICAgICBjb25maWd1cmF0aW9uLT5zZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoIXBy
aXYtPmxvY2FsU3RvcmFnZURpcmVjdG9yeSA/Ci0gICAgICAgICAgICBBUEk6OldlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSA6IFdlYkNvcmU6OkZpbGVTeXN0
ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+bG9jYWxTdG9yYWdl
RGlyZWN0b3J5LmdldCgpKSk7CisgICAgICAgICAgICBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSA6IEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+bG9jYWxTdG9yYWdlRGlyZWN0b3J5LmdldCgpKSk7
CiAgICAgICAgIGNvbmZpZ3VyYXRpb24tPnNldE5ldHdvcmtDYWNoZURpcmVjdG9yeSghcHJpdi0+
ZGlza0NhY2hlRGlyZWN0b3J5ID8KLSAgICAgICAgICAgIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpIDogV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+ZGlza0NhY2hlRGlyZWN0b3J5LmdldCgpKSwgbmV0
d29ya0NhY2hlU3ViZGlyZWN0b3J5KSk7CisgICAgICAgICAgICBBUEk6OldlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKSA6IEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKHByaXYtPmRpc2tDYWNoZURpcmVjdG9yeS5nZXQoKSksIG5ldHdvcmtDYWNoZVN1YmRp
cmVjdG9yeSkpOwogICAgICAgICBjb25maWd1cmF0aW9uLT5zZXRBcHBsaWNhdGlvbkNhY2hlRGly
ZWN0b3J5KCFwcml2LT5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID8KLSAgICAgICAgICAgIEFQ
STo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKSA6
IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
cHJpdi0+YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeS5nZXQoKSkpOworICAgICAgICAgICAgQVBJ
OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpIDog
RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5hcHBs
aWNhdGlvbkNhY2hlRGlyZWN0b3J5LmdldCgpKSk7CiAgICAgICAgIGNvbmZpZ3VyYXRpb24tPnNl
dFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCFwcml2LT53ZWJTUUxEaXJlY3RvcnkgPwotICAgICAg
ICAgICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3Rv
cnkoKSA6IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24ocHJpdi0+d2ViU1FMRGlyZWN0b3J5LmdldCgpKSk7CisgICAgICAgICAgICBBUEk6Oldl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpIDogRmlsZVN5
c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT53ZWJTUUxEaXJl
Y3RvcnkuZ2V0KCkpKTsKICAgICAgICAgY29uZmlndXJhdGlvbi0+c2V0TWVkaWFLZXlzU3RvcmFn
ZURpcmVjdG9yeShBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtleXNTdG9yYWdl
RGlyZWN0b3J5KCkpOwogICAgICAgICBwcml2LT53ZWJzaXRlRGF0YVN0b3JlID0gQVBJOjpXZWJz
aXRlRGF0YVN0b3JlOjpjcmVhdGVMZWdhY3koV1RGTW92ZShjb25maWd1cmF0aW9uKSk7CiAgICAg
fQpAQCAtNTMyLDcgKzUzMiw3IEBAIGNvbnN0IGdjaGFyKiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21h
bmFnZXJfZ2V0X2Rpc2tfY2FjaGVfZGlyZWN0b3J5KFdlYktpdFdlYnNpdGVECiAKICAgICBpZiAo
IXByaXYtPmRpc2tDYWNoZURpcmVjdG9yeSkgewogICAgICAgICAvLyBUaGUgZGVmYXVsdCBkaXJl
Y3RvcnkgYWxyZWFkeSBoYXMgdGhlIHN1YmRpcmVjdG9yeS4KLSAgICAgICAgcHJpdi0+ZGlza0Nh
Y2hlRGlyZWN0b3J5LnJlc2V0KGdfc3RyZHVwKFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRpcmVjdG9y
eU5hbWUoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5
KCkpLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICAgICAgcHJpdi0+ZGlza0NhY2hlRGlyZWN0b3J5LnJl
c2V0KGdfc3RyZHVwKEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUoQVBJOjpXZWJzaXRlRGF0YVN0
b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkpLnV0ZjgoKS5kYXRhKCkpKTsKICAg
ICB9CiAgICAgcmV0dXJuIHByaXYtPmRpc2tDYWNoZURpcmVjdG9yeS5nZXQoKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93aW4vQVBJV2Vic2l0ZURhdGFTdG9y
ZVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd2luL0FQSVdlYnNpdGVEYXRh
U3RvcmVXaW4uY3BwCmluZGV4IDE5YmUyODhkNDgyZGFhZmRkMThlNGNmZGZlZGNlMjAzYWFjNzVi
ZGQuLjMyMjViOTIxNzBkN2M5OGI0YmU4NDVhY2NmZThkOGMxYjM2N2Q3YjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93aW4vQVBJV2Vic2l0ZURhdGFTdG9yZVdpbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dpbi9BUElXZWJzaXRlRGF0YVN0
b3JlV2luLmNwcApAQCAtMjYsNDMgKzI2LDQzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgogCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lz
dGVtLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogbmFtZXNwYWNlIEFQSSB7CiAK
IFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9y
eSgpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJl
Y3RvcnkoKSwgIkFwcGxpY2F0aW9uQ2FjaGUiKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFn
ZURpcmVjdG9yeSgpLCAiQXBwbGljYXRpb25DYWNoZSIpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIFdl
YkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxl
U3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkNhY2hlU3RvcmFn
ZSIpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmls
ZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJDYWNoZVN0b3Jh
Z2UiKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVE
aXJlY3RvcnkoKQogewotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9y
YWdlRGlyZWN0b3J5KCksICJOZXR3b3JrQ2FjaGUiKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3Rv
cmFnZURpcmVjdG9yeSgpLCAiTmV0d29ya0NhY2hlIik7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKQogewotICAgIHJldHVy
biBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6
RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJJbmRleGVk
REIiKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZp
bGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiSW5kZXhlZERC
Iik7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0U2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbkRpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpsb2NhbFVzZXJT
cGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIlNlcnZpY2VXb3JrZXJzIik7CisgICAgcmV0dXJu
IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVz
ZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIlNlcnZpY2VXb3JrZXJzIik7CiB9CiAKIFN0
cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkKIHsK
LSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgp
LCAiTG9jYWxTdG9yYWdlIik7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3Rvcnko
KSwgIkxvY2FsU3RvcmFnZSIpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKQogewotICAgIHJldHVybiBXZWJDb3JlOjpGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6bG9j
YWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJNZWRpYUtleVN0b3JhZ2UiKTsKKyAg
ICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06
OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiTWVkaWFLZXlTdG9yYWdlIik7
CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNT
dG9yYWdlRGlyZWN0b3J5KCkKQEAgLTczLDU3ICs3Myw1NyBAQCBTdHJpbmcgV2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpCiAKIFN0cmlu
ZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKQogewot
ICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
V2ViQ29yZTo6RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCks
ICJXZWJTUUwiKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiV2Vi
U1FMIik7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpsb2NhbFVzZXJT
cGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIlJlc291cmNlTG9hZFN0YXRpc3RpY3MiKTsKKyAg
ICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06
OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiUmVzb3VyY2VMb2FkU3RhdGlz
dGljcyIpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6Y2FjaGVEaXJlY3RvcnlGaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBkaXJlY3RvcnlOYW1lKQogewotICAg
IHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksIGRp
cmVjdG9yeU5hbWUpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksIGRp
cmVjdG9yeU5hbWUpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6d2Vic2l0ZURhdGFE
aXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBkaXJlY3RvcnlO
YW1lKQogewotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGly
ZWN0b3J5KCksIGRpcmVjdG9yeU5hbWUpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGly
ZWN0b3J5KCksIGRpcmVjdG9yeU5hbWUpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6
bGVnYWN5RGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKQogewotICAgIHJldHVybiBX
ZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJBcHBsaWNhdGlv
bkNhY2hlIik7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkFwcGxp
Y2F0aW9uQ2FjaGUiKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1
bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKQogewotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6bG9jYWxV
c2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJOZXR3b3JrQ2FjaGUiKTsKKyAgICByZXR1
cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2Fs
VXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiTmV0d29ya0NhY2hlIik7CiB9CiAKIFN0
cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3Rv
cnkoKQogewotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGly
ZWN0b3J5KCksICJXZWJTUUwiKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9y
eSgpLCAiV2ViU1FMIik7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZh
dWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKQogewotICAgIHJldHVybiBXZWJDb3JlOjpG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6
bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJJbmRleGVkREIiKTsKKyAgICBy
ZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06Omxv
Y2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiSW5kZXhlZERCIik7CiB9CiAKIFN0
cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5
KCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVj
dG9yeSgpLCAiTG9jYWxTdG9yYWdlIik7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJl
Y3RvcnkoKSwgIkxvY2FsU3RvcmFnZSIpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6
bGVnYWN5RGVmYXVsdE1lZGlhQ2FjaGVEaXJlY3RvcnkoKQogewotICAgIHJldHVybiBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJNZWRpYUNhY2hlIik7Cisg
ICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVt
Ojpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIk1lZGlhQ2FjaGUiKTsKIH0K
IAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRNZWRpYUtleXNTdG9yYWdl
RGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3Rv
cmFnZURpcmVjdG9yeSgpLCAiTWVkaWFLZXlTdG9yYWdlIik7CisgICAgcmV0dXJuIEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZp
Y1N0b3JhZ2VEaXJlY3RvcnkoKSwgIk1lZGlhS2V5U3RvcmFnZSIpOwogfQogCiBTdHJpbmcgV2Vi
c2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVj
dG9yeSgpCkBAIC0xMzQsNyArMTM0LDcgQEAgU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2Fj
eURlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKQogCiBTdHJpbmcgV2Vi
c2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdEphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0
b3J5KCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURp
cmVjdG9yeSgpLCAiSmF2YVNjcmlwdENvcmVEZWJ1ZyIpOworICAgIHJldHVybiBGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNT
dG9yYWdlRGlyZWN0b3J5KCksICJKYXZhU2NyaXB0Q29yZURlYnVnIik7CiB9CiAKIFJlZjxXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiBXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCmluZGV4IDgw
NTQ3ZTZiZTEzODY1NWYwNzk4YjY3NmRjMTJkYzlhYjMzYWNmMWIuLmY4ODQ0YWZlNmQyMmU0Y2Q1
ZWUyMDgxNDhiNGY0OTJmN2NjNjMxMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCkBAIC04MDYs
NyArODA2LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6d2lsbENsb3NlUGFnZShjb25z
dCBXZWJQYWdlUHJveHkmIHBhZ2UpCiAKIHN0YXRpYyBib29sIGZpbGVDYW5CZUFjY2VwdGVkRm9y
VXBsb2FkKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgYWxs
b3dlZE1JTUVUeXBlcywgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBhbGxvd2VkRmlsZUV4dGVuc2lv
bnMpCiB7Ci0gICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGZpbGVuYW1l
KSkKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZmlsZW5hbWUpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoYWxsb3dlZE1JTUVUeXBlcy5pc0VtcHR5KCkgJiYgYWxs
b3dlZEZpbGVFeHRlbnNpb25zLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvRG93bmxvYWRDbGllbnQubW0KaW5kZXggM2I0OTYyOGZkZjZkZmM1YWFkZDAyOWQ1
YTJjYmNiNmJmYjc4Y2ZjMS4uYzcyN2JkMjNlZjk1NTI1MWY3OTgwOWQ2OWM1ODIzMjE5N2FmMWVi
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGll
bnQubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQu
bW0KQEAgLTQyLDEwICs0MiwxMCBAQAogI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW1w
b3J0ICJfV0tEb3dubG9hZERlbGVnYXRlLmgiCiAjaW1wb3J0ICJfV0tEb3dubG9hZEludGVybmFs
LmgiCi0jaW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVz
b3VyY2VFcnJvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW1w
b3J0IDx3dGYvQmxvY2tQdHIuaD4KKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCkBAIC0xODEsNyArMTgxLDcgQEAgdm9pZCBEb3dubG9hZENsaWVudDo6
ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV2ViUHJvY2Vzc1Bvb2wmLCBE
b3cKIHsKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCiAgICAgaWYgKGRvd25sb2FkUHJveHkuaXNT
eXN0ZW1QcmV2aWV3RG93bmxvYWQoKSkgewotICAgICAgICBOU1N0cmluZyAqdGVtcG9yYXJ5RGly
ZWN0b3J5ID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KEAi
U3lzdGVtUHJldmlld3MiKTsKKyAgICAgICAgTlNTdHJpbmcgKnRlbXBvcmFyeURpcmVjdG9yeSA9
IEZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShAIlN5c3RlbVByZXZpZXdzIik7
CiAgICAgICAgIE5TU3RyaW5nICpkZXN0aW5hdGlvbiA9IFt0ZW1wb3JhcnlEaXJlY3Rvcnkgc3Ry
aW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmZpbGVuYW1lXTsKICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoQWxsb3dPdmVyd3JpdGU6OlllcywgZGVzdGluYXRpb24pOwogICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNz
UG9vbENvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bv
b2xDb2NvYS5tbQppbmRleCA1NmNmMGZkMDU5MGM2MTU0M2QzNDEwZjg0ZjY2ZDE5YzdlZDg1MWJm
Li4yZGFmNzU1NzFjY2IxYTlkNzA1YmFhMDU3YWQ2MjRhNWE2OThhNDM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KQEAg
LTQzLDcgKzQzLDYgQEAKICNpbXBvcnQgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2ltcG9ydCAi
V2luZG93U2VydmVyQ29ubmVjdGlvbi5oIgogI2ltcG9ydCA8V2ViQ29yZS9Db2xvci5oPgotI2lt
cG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2ltcG9y
dCA8V2ViQ29yZS9QbGF0Zm9ybVBhc3RlYm9hcmQuaD4KQEAgLTUyLDYgKzUxLDcgQEAKICNpbXBv
cnQgPHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL05T
S2V5ZWRBcmNoaXZlclNQSS5oPgogI2ltcG9ydCA8c3lzL3BhcmFtLmg+CisjaW1wb3J0IDx3dGYv
RmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KICNpbXBvcnQg
PHd0Zi9jb2NvYS9FbnRpdGxlbWVudHMuaD4KICNpbXBvcnQgPHd0Zi9zcGkvZGFyd2luL2R5bGRT
UEkuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJ
bXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KaW5k
ZXggMDY0ZTBkZmQ5MGZmNmJiOWRkYzNhYjQ0MmVjOGNkYTY5YWEyZDk2ZC4uMTYwOTVhOGJkMTU2
NDg4NDljNmFlYjEzMTE2NWU2Mzc0ZmUwZThiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTg0LDcgKzg0LDYgQEAKICNpbXBvcnQgPFdlYkNv
cmUvRHJhZ0RhdGEuaD4KICNpbXBvcnQgPFdlYkNvcmUvRHJhZ0l0ZW0uaD4KICNpbXBvcnQgPFdl
YkNvcmUvRWRpdG9yLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQg
PFdlYkNvcmUvRm9udEF0dHJpYnV0ZUNoYW5nZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvRm9udEF0
dHJpYnV0ZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvS2V5cHJlc3NDb21tYW5kLmg+CkBAIC0xMTUs
NiArMTE0LDcgQEAKICNpbXBvcnQgPHBhbC9zcGkvbWFjL05TVmlld1NQSS5oPgogI2ltcG9ydCA8
cGFsL3NwaS9tYWMvTlNXaW5kb3dTUEkuaD4KICNpbXBvcnQgPHN5cy9zdGF0Lmg+CisjaW1wb3J0
IDx3dGYvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW1w
b3J0IDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgogI2ltcG9ydCA8d3RmL1NldEZvclNjb3BlLmg+
CkBAIC0zOTY5LDcgKzM5NjksNyBAQCBib29sIFdlYlZpZXdJbXBsOjpwZXJmb3JtRHJhZ09wZXJh
dGlvbihpZCA8TlNEcmFnZ2luZ0luZm8+IGRyYWdnaW5nSW5mbykKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgfQogCi0gICAgICAgIE5TU3RyaW5nICpkcm9wRGVzdGluYXRpb25Q
YXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KEAiV2Vi
S2l0RHJvcERlc3RpbmF0aW9uIik7CisgICAgICAgIE5TU3RyaW5nICpkcm9wRGVzdGluYXRpb25Q
YXRoID0gRmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KEAiV2ViS2l0RHJvcERl
c3RpbmF0aW9uIik7CiAgICAgICAgIGlmICghZHJvcERlc3RpbmF0aW9uUGF0aCkgewogICAgICAg
ICAgICAgZGVsZXRlIGRyYWdEYXRhOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDI5
MSw3ICs0MjkxLDcgQEAgTlNBcnJheSAqV2ViVmlld0ltcGw6Om5hbWVzT2ZQcm9taXNlZEZpbGVz
RHJvcHBlZEF0RGVzdGluYXRpb24oTlNVUkwgKmRyb3BEZXN0aW4KICAgICAgICAgTE9HX0VSUk9S
KCJGYWlsZWQgdG8gY3JlYXRlIGltYWdlIGZpbGUgdmlhIC1bTlNGaWxlV3JhcHBlciB3cml0ZVRv
VVJMOm9wdGlvbnM6b3JpZ2luYWxDb250ZW50c1VSTDplcnJvcjpdIik7CiAKICAgICBpZiAoIW1f
cHJvbWlzZWRVUkwuaXNFbXB0eSgpKQotICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzZXRN
ZXRhZGF0YVVSTChTdHJpbmcocGF0aCksIG1fcHJvbWlzZWRVUkwpOworICAgICAgICBGaWxlU3lz
dGVtOjpzZXRNZXRhZGF0YVVSTChTdHJpbmcocGF0aCksIG1fcHJvbWlzZWRVUkwpOwogICAgIAog
ICAgIHJldHVybiBbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6W3BhdGggbGFzdFBhdGhDb21wb25l
bnRdXTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RldmljZUlkSGFz
aFNhbHRTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RldmljZUlkSGFzaFNh
bHRTdG9yYWdlLmNwcAppbmRleCBlNjBlZTNmNGY5NGIwMzJkMzk5YjdhMzc3YTdlOGY5Y2NhMjM3
NTFkLi4xOWE3YTEyY2ZhM2YzMWJmMWUyMTM3YzM1Y2Q1N2QwYTUwN2I5YTlmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3BwCkBA
IC0yOCw5ICsyOCw5IEBACiAKICNpbmNsdWRlICJQZXJzaXN0ZW5jeVV0aWxzLmgiCiAKLSNpbmNs
dWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZl
ci5oPgogI2luY2x1ZGUgPHd0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5oPgorI2lu
Y2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL0hleE51bWJlci5oPgogI2lu
Y2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5o
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJv
eHkuY3BwCmluZGV4IDc1MTAyZWUzYjAwNDI0YTQ4MDk0MTVmMzZiMDRlZDNiNTNjYWQxNDguLmUw
OTI1NGIwMTg3MjQ5Yzk5MmZjMmZjZDcyODg4ZTc4NGIxOTMzOTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHAKQEAgLTM2LDgg
KzM2LDggQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQ
cm9jZXNzUG9vbC5oIgogI2luY2x1ZGUgIldlYlByb3RlY3Rpb25TcGFjZS5oIgotI2luY2x1ZGUg
PFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTUlNRVR5cGVSZWdpc3Ry
eS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9nbGliL0J1YmJsZXdyYXBMYXVuY2hlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9nbGliL0J1YmJsZXdyYXBMYXVu
Y2hlci5jcHAKaW5kZXggZTQzNGUwMzMzOTg3YTkyNzQ5YzAwZGRjNWI1MzM2MDkwNGRlZjFiZS4u
MTY3MjNkZmRkYTRmYWRiYjkyYWE3ZWEwYThlNmFlNTg4NGYyZDA2OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9CdWJibGV3cmFwTGF1bmNoZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvQnViYmxld3JhcExh
dW5jaGVyLmNwcApAQCAtMjAsMTIgKzIwLDEyIEBACiAKICNpZiBFTkFCTEUoQlVCQkxFV1JBUF9T
QU5EQk9YKQogCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9QbGF0Zm9ybURpc3BsYXkuaD4KICNpbmNsdWRlIDxmY250bC5oPgogI2luY2x1ZGUgPGds
aWIuaD4KICNpbmNsdWRlIDxzZWNjb21wLmg+CiAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CisjaW5j
bHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HTGliVXRpbGl0aWVz
Lmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dV
bmlxdWVQdHIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVy
L2dsaWIvUHJvY2Vzc0xhdW5jaGVyR0xpYi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9M
YXVuY2hlci9nbGliL1Byb2Nlc3NMYXVuY2hlckdMaWIuY3BwCmluZGV4IGM1NjYxODczYTA1ZTcx
MDliNTE3ZWE3NWJkZmFiY2NkOGYyM2ZiODYuLjBjMzkwNzNmZTFkZTdhZGFmNTMxMjY4M2Q4MTY0
NjJmNjRkM2VjNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVy
L2dsaWIvUHJvY2Vzc0xhdW5jaGVyR0xpYi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTGF1bmNoZXIvZ2xpYi9Qcm9jZXNzTGF1bmNoZXJHTGliLmNwcApAQCAtMzEsMTAgKzMxLDEw
IEBACiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkZsYXRwYWtMYXVuY2hlci5o
IgogI2luY2x1ZGUgIlByb2Nlc3NFeGVjdXRhYmxlUGF0aC5oIgotI2luY2x1ZGUgPFdlYkNvcmUv
RmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPGVycm5vLmg+CiAjaW5jbHVkZSA8ZmNudGwuaD4KICNp
bmNsdWRlIDxnbGliLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3
dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9VbmlTdGRFeHRyYXMuaD4KICNpbmNsdWRlIDx3
dGYvZ2xpYi9HTGliVXRpbGl0aWVzLmg+CkBAIC00Nyw3ICs0Nyw2IEBACiAjZW5kaWYKIAogbmFt
ZXNwYWNlIFdlYktpdCB7Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogc3RhdGljIHZvaWQg
Y2hpbGRTZXR1cEZ1bmN0aW9uKGdwb2ludGVyIHVzZXJEYXRhKQogewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9ndGsvUGx1Z2luSW5mb0NhY2hlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1BsdWdpbkluZm9DYWNoZS5jcHAKaW5k
ZXggODA2NDdlYjEyZWU1MjUxMWExMTllODVmZGUyZjU5YzRlMjM3Nzg4NS4uYTI4YTAwYTM4NmNh
ZmVjYjM3ODJhNDExMDM3Y2E5YTUzNWRjMjIwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUGx1Z2lucy9ndGsvUGx1Z2luSW5mb0NhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9QbHVnaW5zL2d0ay9QbHVnaW5JbmZvQ2FjaGUuY3BwCkBAIC0yOSw4ICsy
OSw4IEBACiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAKICNpbmNsdWRlICJOZXRz
Y2FwZVBsdWdpbk1vZHVsZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1EaXNwbGF5Lmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0
ZW0uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewpAQCAtNjYsMTAgKzY2LDEwIEBAIFBsdWdpbkluZm9DYWNoZTo6UGx1Z2luSW5mb0NhY2hlKCkK
ICAgICBtX3NhdmVUb0ZpbGVJZGxlLnNldFByaW9yaXR5KEdfUFJJT1JJVFlfREVGQVVMVF9JRExF
KTsKIAogICAgIEdVbmlxdWVQdHI8Y2hhcj4gY2FjaGVEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFt
ZShnX2dldF91c2VyX2NhY2hlX2RpcigpLCAid2Via2l0Z3RrIiwgbnVsbHB0cikpOwotICAgIGlm
IChXZWJDb3JlOjpGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoY2FjaGVEaXJlY3Rvcnku
Z2V0KCkpKSB7CisgICAgaWYgKEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhjYWNoZURp
cmVjdG9yeS5nZXQoKSkpIHsKICAgICAgICAgLy8gRGVsZXRlIG9sZCBjYWNoZSBmaWxlLgogICAg
ICAgICBHVW5pcXVlUHRyPGNoYXI+IG9sZENhY2hlUGF0aChnX2J1aWxkX2ZpbGVuYW1lKGNhY2hl
RGlyZWN0b3J5LmdldCgpLCAicGx1Z2lucyIsIG51bGxwdHIpKTsKLSAgICAgICAgV2ViQ29yZTo6
RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKG9sZENhY2hlUGF0aC5nZXQoKSkpOworICAgICAgICBGaWxl
U3lzdGVtOjpkZWxldGVGaWxlKEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24ob2xkQ2FjaGVQYXRoLmdldCgpKSk7CiAKICAgICAgICAgbV9jYWNoZVBhdGgucmVz
ZXQoZ19idWlsZF9maWxlbmFtZShjYWNoZURpcmVjdG9yeS5nZXQoKSwgY2FjaGVGaWxlbmFtZUZv
ckN1cnJlbnREaXNwbGF5KCksIG51bGxwdHIpKTsKICAgICAgICAgZ19rZXlfZmlsZV9sb2FkX2Zy
b21fZmlsZShtX2NhY2hlRmlsZS5nZXQoKSwgbV9jYWNoZVBhdGguZ2V0KCksIEdfS0VZX0ZJTEVf
Tk9ORSwgbnVsbHB0cik7CkBAIC0xMTIsNyArMTEyLDcgQEAgYm9vbCBQbHVnaW5JbmZvQ2FjaGU6
OmdldFBsdWdpbkluZm8oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBQbHVnaW5Nb2R1bGVJbmZv
JgogICAgIGlmICghZ19rZXlfZmlsZV9oYXNfZ3JvdXAobV9jYWNoZUZpbGUuZ2V0KCksIHBsdWdp
bkdyb3VwLmRhdGEoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gbGFzdE1v
ZGlmaWVkVGltZSA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1l
KHBsdWdpblBhdGgpOworICAgIGF1dG8gbGFzdE1vZGlmaWVkVGltZSA9IEZpbGVTeXN0ZW06Omdl
dEZpbGVNb2RpZmljYXRpb25UaW1lKHBsdWdpblBhdGgpOwogICAgIGlmICghbGFzdE1vZGlmaWVk
VGltZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHRpbWVfdCBjYWNoZWRMYXN0TW9kaWZp
ZWQgPSBzdGF0aWNfY2FzdDx0aW1lX3Q+KGdfa2V5X2ZpbGVfZ2V0X3VpbnQ2NChtX2NhY2hlRmls
ZS5nZXQoKSwgcGx1Z2luR3JvdXAuZGF0YSgpLCAibXRpbWUiLCBudWxscHRyKSk7CkBAIC0xMjAs
NyArMTIwLDcgQEAgYm9vbCBQbHVnaW5JbmZvQ2FjaGU6OmdldFBsdWdpbkluZm8oY29uc3QgU3Ry
aW5nJiBwbHVnaW5QYXRoLCBQbHVnaW5Nb2R1bGVJbmZvJgogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBwbHVnaW4ucGF0aCA9IHBsdWdpblBhdGg7Ci0gICAgcGx1Z2luLmluZm8uZmlsZSA9
IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShwbHVnaW5QYXRoKTsKKyAgICBw
bHVnaW4uaW5mby5maWxlID0gRmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKHBsdWdpblBhdGgp
OwogCiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBzdHJpbmdWYWx1ZShnX2tleV9maWxlX2dldF9zdHJp
bmcobV9jYWNoZUZpbGUuZ2V0KCksIHBsdWdpbkdyb3VwLmRhdGEoKSwgIm5hbWUiLCBudWxscHRy
KSk7CiAgICAgcGx1Z2luLmluZm8ubmFtZSA9IFN0cmluZzo6ZnJvbVVURjgoc3RyaW5nVmFsdWUu
Z2V0KCkpOwpAQCAtMTQwLDcgKzE0MCw3IEBAIGJvb2wgUGx1Z2luSW5mb0NhY2hlOjpnZXRQbHVn
aW5JbmZvKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgUGx1Z2luTW9kdWxlSW5mbyYKIAogdm9p
ZCBQbHVnaW5JbmZvQ2FjaGU6OnVwZGF0ZVBsdWdpbkluZm8oY29uc3QgU3RyaW5nJiBwbHVnaW5Q
YXRoLCBjb25zdCBQbHVnaW5Nb2R1bGVJbmZvJiBwbHVnaW4pCiB7Ci0gICAgYXV0byBsYXN0TW9k
aWZpZWRUaW1lID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUo
cGx1Z2luUGF0aCk7CisgICAgYXV0byBsYXN0TW9kaWZpZWRUaW1lID0gRmlsZVN5c3RlbTo6Z2V0
RmlsZU1vZGlmaWNhdGlvblRpbWUocGx1Z2luUGF0aCk7CiAgICAgaWYgKCFsYXN0TW9kaWZpZWRU
aW1lKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1BsdWdpbnMvbWFjL1BsdWdpblByb2Nlc3NQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1BsdWdpbnMvbWFjL1BsdWdpblByb2Nlc3NQcm94eU1hYy5tbQppbmRleCA4OWZh
YjVlY2I2NjZkMmI0NGZjYzIyMzllYmU1YmE1ZWUxYWM2M2Q4Li4zNjMzYzJhYjA3MDYwMTFlYmQ3
YmMxM2YxYTBiZmRhNWFkNmRkOWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9QbHVnaW5zL21hYy9QbHVnaW5Qcm9jZXNzUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2luUHJvY2Vzc1Byb3h5TWFjLm1tCkBAIC0zMywx
MSArMzMsMTEgQEAKICNpbXBvcnQgIlBsdWdpblByb2Nlc3NNZXNzYWdlcy5oIgogI2ltcG9ydCAi
U2FuZGJveFV0aWxpdGllcy5oIgogI2ltcG9ydCA8UXVhcnR6Q29yZS9DQVJlbW90ZUxheWVyU2Vy
dmVyLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPGNydF9leHRl
cm5zLmg+CiAjaW1wb3J0IDxtYWNoLW8vZHlsZC5oPgogI2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5l
dHdvcmtTUEkuaD4KICNpbXBvcnQgPHNwYXduLmg+CisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5o
PgogI2ltcG9ydCA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KICNpbXBvcnQgPHd0Zi9VUkwuaD4K
ICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTU3LDggKzU3LDYgQEAgLSAoQk9PTClf
d2FudHNVc2VyQXR0ZW50aW9uCiBAZW5kCiAKIG5hbWVzcGFjZSBXZWJLaXQgewotdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7Ci0KICAgICAKIHZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpwbGF0Zm9y
bUdldExhdW5jaE9wdGlvbnNXaXRoQXR0cmlidXRlcyhQcm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9w
dGlvbnMmIGxhdW5jaE9wdGlvbnMsIGNvbnN0IFBsdWdpblByb2Nlc3NBdHRyaWJ1dGVzJiBwbHVn
aW5Qcm9jZXNzQXR0cmlidXRlcykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5JbmZvU3RvcmVVbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5JbmZvU3RvcmVVbml4LmNwcAppbmRleCAxZGZk
ODA3YzEyMzljMzA3OWVmOTI0MDc0NTBiODllYzkxMTljZjBjLi5hYTA5NDczNjgxNjU0YTllZjY0
NDA2YjJjNjQzOTAzZjdlMDEyNjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9QbHVnaW5zL3VuaXgvUGx1Z2luSW5mb1N0b3JlVW5peC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpbkluZm9TdG9yZVVuaXguY3BwCkBAIC0zNCwx
MCArMzQsMTAgQEAKICNpbmNsdWRlICJOZXRzY2FwZVBsdWdpbk1vZHVsZS5oIgogI2luY2x1ZGUg
IlBsdWdpblNlYXJjaFBhdGguaCIKICNpbmNsdWRlICJQcm9jZXNzRXhlY3V0YWJsZVBhdGguaCIK
LSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRm
b3JtRGlzcGxheS5oPgogI2luY2x1ZGUgPGxpbWl0cy5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgor
I2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKICNpZiBQTEFURk9STShHVEspCiAjaW5jbHVk
ZSAiUGx1Z2luSW5mb0NhY2hlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAKaW5kZXgg
Zjg5NjEyMTcwZDAxMTE2MDQzMmVlZWVhM2Q5Yjg4YTM1MzhiNzEyMi4uYzUwMGMwZmNlYTYyNzg4
NmJhZGRkYzNmYzk1MGM2YzRlYTM4YmMwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJveHlVbml4LmNw
cApAQCAtMzIsOSArMzIsOSBAQAogCiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycy5oIgogI2luY2x1ZGUgIlByb2Nlc3NFeGVjdXRhYmxlUGF0aC5oIgotI2luY2x1ZGUg
PFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1EaXNwbGF5
Lmg+CiAjaW5jbHVkZSA8c3lzL3dhaXQuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtl
clByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
UHJvY2Vzc1Byb3h5LmNwcAppbmRleCA3MjY4ODNiM2NmODBmNDhmMmRiZmE1NjNmYzliZjdjNTVk
NTcwMDZmLi41YmNkYTYzYTg2YjBlMWY4ZTk2NDYxOTQzMDk5MjZjYmE1MWYyZDE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5
LmNwcApAQCAtNjQsNyArNjQsNyBAQCBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5Ojp+U2Vydmlj
ZVdvcmtlclByb2Nlc3NQcm94eSgpCiBib29sIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk6Omhh
c1JlZ2lzdGVyZWRTZXJ2aWNlV29ya2Vycyhjb25zdCBTdHJpbmcmIHNlcnZpY2VXb3JrZXJEaXJl
Y3RvcnkpCiB7CiAgICAgU3RyaW5nIHJlZ2lzdHJhdGlvbkZpbGUgPSBXZWJDb3JlOjpzZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uRGF0YWJhc2VGaWxlbmFtZShzZXJ2aWNlV29ya2VyRGlyZWN0b3J5
KTsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhyZWdpc3RyYXRp
b25GaWxlKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhyZWdpc3RyYXRpb25G
aWxlKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5OjpnZXRMYXVuY2hPcHRp
b25zKFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9ucyYgbGF1bmNoT3B0aW9ucykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0
YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3Jh
Z2VEYXRhYmFzZS5jcHAKaW5kZXggMGMyNWQ2NTdlOTc3NmE3NDc0ZDIwNTVmZGY1NDg3MmEwMGQ4
ZWRkYi4uNDZmYjZjNzcyOTRmM2M2MzFkNGZmZmRmYzI0YTE0OGY3MDhhNDRjZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3Jh
Z2VEYXRhYmFzZS5jcHAKQEAgLTI3LDEyICsyNywxMiBAQAogI2luY2x1ZGUgIkxvY2FsU3RvcmFn
ZURhdGFiYXNlLmgiCiAKICNpbmNsdWRlICJMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuaCIK
LSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0
ZVN0YXRlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlVHJhbnNhY3Rpb24uaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TdG9y
YWdlTWFwLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TdWRkZW5UZXJtaW5hdGlvbi5oPgorI2luY2x1
ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9Xb3JrUXVldWUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURh
dGFiYXNlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJTdG9yYWdlL0xv
Y2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5jcHAKaW5kZXggYWZmZDdlOGFjYWUyZGVjYjVjODQ0
ZTg3M2I1NmY3ZDE1M2QwYWM5Ni4uYzM3ODFkZjY3NjkwMGM2OTRiZTE0YmZlNmFlMzY0OWJjMTg4
OTBjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2Nh
bFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNwcApAQCAtMjcsMTAgKzI3
LDEwIEBACiAjaW5jbHVkZSAiTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmgiCiAKICNpbmNs
dWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9TUUxpdGVGaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVT
dGF0ZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHRFbmNvZGluZy5oPgorI2luY2x1ZGUg
PHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRl
IDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3Rv
cmVDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dl
YnNpdGVEYXRhU3RvcmVDb2NvYS5tbQppbmRleCA0MjdhOWM4NWEzYjk4NDVhZTRmNzU0ZmI0Yzdh
MzkyNjNjOGMxN2M5Li42MTkwMDUwMDA1OGQ1YThlMDc0OGNiMzYyYzFmNzZiNDQ1NGUyYjIzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJz
aXRlRGF0YVN0b3JlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCkBAIC0zMCwxMCArMzAsMTAgQEAK
ICNpbXBvcnQgIlN0b3JhZ2VNYW5hZ2VyLmgiCiAjaW1wb3J0ICJXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuaCIKICNpbXBvcnQgIldlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmgiCi0j
aW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFw
cGxpY2F0aW9uQ2hlY2tzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NlYXJjaFBvcHVwTWVudUNvY29h
Lmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oPgorI2ltcG9ydCA8d3RmL0Zp
bGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2ltcG9ydCA8d3Rm
L1Byb2Nlc3NQcml2aWxlZ2UuaD4KIApAQCAtMTIxLDcgKzEyMSw3IEBAIFdlYnNpdGVEYXRhU3Rv
cmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMoKQogICAgIHBhcmFtZXRl
cnMucGVuZGluZ0Nvb2tpZXMgPSBjb3B5VG9WZWN0b3IobV9wZW5kaW5nQ29va2llcyk7CiAKICAg
ICBpZiAoIWNvb2tpZUZpbGUuaXNFbXB0eSgpKQotICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkoV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGly
ZWN0b3J5TmFtZShjb29raWVGaWxlKSwgcGFyYW1ldGVycy5jb29raWVTdG9yYWdlUGF0aEV4dGVu
c2lvbkhhbmRsZSk7CisgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJl
YWRXcml0ZURpcmVjdG9yeShGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKGNvb2tpZUZpbGUpLCBw
YXJhbWV0ZXJzLmNvb2tpZVN0b3JhZ2VQYXRoRXh0ZW5zaW9uSGFuZGxlKTsKIAogI2lmIEVOQUJM
RShJTkRFWEVEX0RBVEFCQVNFKQogICAgIHBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0
b3J5ID0gcmVzb2x2ZWRJbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAK
aW5kZXggYjE4ZmNlNzkwNmY4ZTJiYjhjNWJkMjQ2NDQ2MDYwOGU0Y2NmZWFkZC4uMmE1OTBjNGJk
NWUxOTg3ZTU1YWU2MTQ4NmRhYzhhY2YzMTczNjYyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTQ0
LDcgKzQ0LDYgQEAKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0RhdGFiYXNlVHJhY2tlci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvSFRNTE1lZGlhRWxlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
T3JpZ2luTG9jay5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KQEAgLTUy
LDYgKzUxLDcgQEAKICNpbmNsdWRlIDx3dGYvQ2FsbGJhY2tBZ2dyZWdhdG9yLmg+CiAjaW5jbHVk
ZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkQ29w
aWVyLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvUHJvY2Vz
c1ByaXZpbGVnZS5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKQEAgLTE5Myw4ICsxOTMs
OCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlc29sdmVEaXJlY3Rvcmllc0lmTmVjZXNzYXJ5
KCkKIAogICAgIC8vIFJlc29sdmUgZGlyZWN0b3JpZXMgZm9yIGZpbGUgcGF0aHMuCiAgICAgaWYg
KCFtX2NvbmZpZ3VyYXRpb24tPmNvb2tpZVN0b3JhZ2VGaWxlKCkuaXNFbXB0eSgpKSB7Ci0gICAg
ICAgIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5zZXRDb29raWVTdG9yYWdlRmlsZShyZXNvbHZl
QW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihXZWJDb3JlOjpG
aWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKG1fY29uZmlndXJhdGlvbi0+Y29va2llU3RvcmFnZUZp
bGUoKSkpKTsKLSAgICAgICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPnNldENvb2tpZVN0b3Jh
Z2VGaWxlKFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3Jl
c29sdmVkQ29uZmlndXJhdGlvbi0+Y29va2llU3RvcmFnZUZpbGUoKSwgV2ViQ29yZTo6RmlsZVN5
c3RlbTo6cGF0aEdldEZpbGVOYW1lKG1fY29uZmlndXJhdGlvbi0+Y29va2llU3RvcmFnZUZpbGUo
KSkpKTsKKyAgICAgICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPnNldENvb2tpZVN0b3JhZ2VG
aWxlKHJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9u
KEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUobV9jb25maWd1cmF0aW9uLT5jb29raWVTdG9yYWdl
RmlsZSgpKSkpOworICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+c2V0Q29va2llU3Rv
cmFnZUZpbGUoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fcmVzb2x2ZWRD
b25maWd1cmF0aW9uLT5jb29raWVTdG9yYWdlRmlsZSgpLCBGaWxlU3lzdGVtOjpwYXRoR2V0Rmls
ZU5hbWUobV9jb25maWd1cmF0aW9uLT5jb29raWVTdG9yYWdlRmlsZSgpKSkpOwogICAgIH0KIH0K
IApAQCAtMjI2NSw3ICsyMjY1LDcgQEAgVmVjdG9yPFBsdWdpbk1vZHVsZUluZm8+IFdlYnNpdGVE
YXRhU3RvcmU6OnBsdWdpbnMoKSBjb25zdAogCiBzdGF0aWMgU3RyaW5nIGNvbXB1dGVNZWRpYUtl
eUZpbGUoY29uc3QgU3RyaW5nJiBtZWRpYUtleURpcmVjdG9yeSkKIHsKLSAgICByZXR1cm4gV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1lZGlhS2V5RGlyZWN0
b3J5LCAiU2VjdXJlU3RvcC5wbGlzdCIpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQobWVkaWFLZXlEaXJlY3RvcnksICJTZWN1cmVTdG9wLnBsaXN0Iik7
CiB9CiAKIFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IFdlYnNpdGVEYXRhU3Rv
cmU6Om1lZGlhS2V5T3JpZ2lucyhjb25zdCBTdHJpbmcmIG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rv
cnkpCkBAIC0yMjc0LDEyICsyMjc0LDEyIEBAIFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGE+IFdlYnNpdGVEYXRhU3RvcmU6Om1lZGlhS2V5T3JpZ2lucyhjb25zdCBTdHJpCiAKICAg
ICBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBvcmlnaW5zOwogCi0gICAgZm9y
IChjb25zdCBhdXRvJiBvcmlnaW5QYXRoIDogV2ViQ29yZTo6RmlsZVN5c3RlbTo6bGlzdERpcmVj
dG9yeShtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5LCAiKiIpKSB7CisgICAgZm9yIChjb25zdCBh
dXRvJiBvcmlnaW5QYXRoIDogRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShtZWRpYUtleXNTdG9y
YWdlRGlyZWN0b3J5LCAiKiIpKSB7CiAgICAgICAgIGF1dG8gbWVkaWFLZXlGaWxlID0gY29tcHV0
ZU1lZGlhS2V5RmlsZShvcmlnaW5QYXRoKTsKLSAgICAgICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lz
dGVtOjpmaWxlRXhpc3RzKG1lZGlhS2V5RmlsZSkpCisgICAgICAgIGlmICghRmlsZVN5c3RlbTo6
ZmlsZUV4aXN0cyhtZWRpYUtleUZpbGUpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAg
ICAgYXV0byBtZWRpYUtleUlkZW50aWZpZXIgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoR2V0
RmlsZU5hbWUob3JpZ2luUGF0aCk7CisgICAgICAgIGF1dG8gbWVkaWFLZXlJZGVudGlmaWVyID0g
RmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKG9yaWdpblBhdGgpOwogCiAgICAgICAgIGlmIChh
dXRvIHNlY3VyaXR5T3JpZ2luID0gV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0
YWJhc2VJZGVudGlmaWVyKG1lZGlhS2V5SWRlbnRpZmllcikpCiAgICAgICAgICAgICBvcmlnaW5z
LmFwcGVuZCgqc2VjdXJpdHlPcmlnaW4pOwpAQCAtMjI5MiwxOCArMjI5MiwxOCBAQCB2b2lkIFdl
YnNpdGVEYXRhU3RvcmU6OnJlbW92ZU1lZGlhS2V5cyhjb25zdCBTdHJpbmcmIG1lZGlhS2V5c1N0
b3JhZ2VEaXJlY3RvcnksCiB7CiAgICAgQVNTRVJUKCFtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5
LmlzRW1wdHkoKSk7CiAKLSAgICBmb3IgKGNvbnN0IGF1dG8mIG1lZGlhS2V5RGlyZWN0b3J5IDog
V2ViQ29yZTo6RmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShtZWRpYUtleXNTdG9yYWdlRGlyZWN0
b3J5LCAiKiIpKSB7CisgICAgZm9yIChjb25zdCBhdXRvJiBtZWRpYUtleURpcmVjdG9yeSA6IEZp
bGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSwgIioiKSkg
ewogICAgICAgICBhdXRvIG1lZGlhS2V5RmlsZSA9IGNvbXB1dGVNZWRpYUtleUZpbGUobWVkaWFL
ZXlEaXJlY3RvcnkpOwogCi0gICAgICAgIGF1dG8gbW9kaWZpY2F0aW9uVGltZSA9IFdlYkNvcmU6
OkZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKG1lZGlhS2V5RmlsZSk7CisgICAg
ICAgIGF1dG8gbW9kaWZpY2F0aW9uVGltZSA9IEZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmljYXRp
b25UaW1lKG1lZGlhS2V5RmlsZSk7CiAgICAgICAgIGlmICghbW9kaWZpY2F0aW9uVGltZSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGlmIChtb2RpZmljYXRpb25UaW1lLnZhbHVl
KCkgPCBtb2RpZmllZFNpbmNlKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtZWRpYUtleUZpbGUpOwotICAgICAgICBXZWJD
b3JlOjpGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShtZWRpYUtleURpcmVjdG9yeSk7
CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobWVkaWFLZXlGaWxlKTsKKyAgICAgICAg
RmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkobWVkaWFLZXlEaXJlY3RvcnkpOwogICAg
IH0KIH0KIApAQCAtMjMxMiwxMSArMjMxMiwxMSBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJl
bW92ZU1lZGlhS2V5cyhjb25zdCBTdHJpbmcmIG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnksCiAg
ICAgQVNTRVJUKCFtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5LmlzRW1wdHkoKSk7CiAKICAgICBm
b3IgKGNvbnN0IGF1dG8mIG9yaWdpbiA6IG9yaWdpbnMpIHsKLSAgICAgICAgYXV0byBtZWRpYUtl
eURpcmVjdG9yeSA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5LCBvcmlnaW4uZGF0YWJhc2VJZGVudGlmaWVyKCkp
OworICAgICAgICBhdXRvIG1lZGlhS2V5RGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnksIG9yaWdpbi5kYXRhYmFz
ZUlkZW50aWZpZXIoKSk7CiAgICAgICAgIGF1dG8gbWVkaWFLZXlGaWxlID0gY29tcHV0ZU1lZGlh
S2V5RmlsZShtZWRpYUtleURpcmVjdG9yeSk7CiAKLSAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6ZGVsZXRlRmlsZShtZWRpYUtleUZpbGUpOwotICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVt
OjpkZWxldGVFbXB0eURpcmVjdG9yeShtZWRpYUtleURpcmVjdG9yeSk7CisgICAgICAgIEZpbGVT
eXN0ZW06OmRlbGV0ZUZpbGUobWVkaWFLZXlGaWxlKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVs
ZXRlRW1wdHlEaXJlY3RvcnkobWVkaWFLZXlEaXJlY3RvcnkpOwogICAgIH0KIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUHJveHlHTGliLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Byb3h5R0xpYi5jcHAK
aW5kZXggOGY1ZmEwM2ZmNDY1MzJmNmI1ODI1NzllOTliMDE3YjA2NTQwYWVhNS4uMTY5ZWEyMDEy
NWIwMzA2MzdmYWZjMDc0N2NhODY5ODU4NTQ5NWI5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUHJveHlHTGliLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQcm94eUdMaWIuY3BwCkBAIC0zMSw4ICszMSw4
IEBACiAjZW5kaWYKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgogI2luY2x1ZGUgIldlYnNp
dGVEYXRhU3RvcmUuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1BsYXRmb3JtRGlzcGxheS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNwcApp
bmRleCBjYTE4N2E2NDIzNDExMmU4NTc5YmQ4NjE2MmQ5YjgzZmI0MjljODNhLi4xNmIwMmE0MzU3
NmU1NmYxYWUyMjYzYTBkZjRmMDY3MzIzNGRiZTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAKQEAgLTQyLDkgKzQyLDkg
QEAKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94
eS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ2VydGlmaWNhdGVJbmZvLmg+Ci0jaW5jbHVkZSA8V2Vi
Q29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HdGtVdGlsaXRpZXMuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0
ZW0uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9X
ZWJQcm9jZXNzUG9vbEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViUHJv
Y2Vzc1Bvb2xHdGsuY3BwCmluZGV4IDYyNDA0MTVmMTU3Mjc5ZTRiZmMwYzU2YTJjZGE4YjYyMjU5
MDY5ZjYuLjZiMjM1NzQwNGUwM2FlMzAyMWFlODgwYjYzYThjZWMwZWU4NmYwZjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQcm9jZXNzUG9vbEd0ay5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NQb29sR3RrLmNwcApAQCAt
MzQsMTAgKzM0LDEwIEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5o
IgogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL1JlbW90ZUluc3BlY3RvclNlcnZlci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3Rl
bS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR1N0cmVhbWVyQ29tbW9uLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2NoZW1lUmVnaXN0cnku
aD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlx
dWVQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmlu
ZGV4IGQzZjlmMTJlZmM2OTQzYmMwYTQxOTg1YjJmYWEwNzc5ZWYzNGI1MzUuLjdkMWRlYzUzNDdk
NGViMzZjMDI2ZDM3MzQ5YThmYTdjZmU3ZmVjNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtNTY5OCw3
ICs1Njk4LDcgQEAgLSAodm9pZClfcHJlcGFyZVRvRHJhZ1Byb21pc2VkQXR0YWNobWVudDooY29u
c3QgV2ViQ29yZTo6UHJvbWlzZWRBdHRhY2htZW50SW5mbyYKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogCi0gICAgICAgIE5TU3RyaW5nICp0ZW1wb3JhcnlCbG9iRGlyZWN0b3J5ID0g
V2ViQ29yZTo6RmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KEAiYmxvYnMiKTsK
KyAgICAgICAgTlNTdHJpbmcgKnRlbXBvcmFyeUJsb2JEaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpj
cmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoQCJibG9icyIpOwogICAgICAgICBOU1VSTCAqZGVzdGlu
YXRpb25VUkwgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOlt0ZW1wb3JhcnlCbG9iRGlyZWN0b3J5
IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpbTlNVVUlEIFVVSURdLlVVSURTdHJpbmdd
IGlzRGlyZWN0b3J5Ok5PXTsKIAogICAgICAgICBhdXRvIGF0dGFjaG1lbnQgPSBzdHJvbmdTZWxm
LT5fcGFnZS0+YXR0YWNobWVudEZvcklkZW50aWZpZXIoaW5mby5hdHRhY2htZW50SWRlbnRpZmll
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGaWxl
VXBsb2FkUGFuZWwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGaWxl
VXBsb2FkUGFuZWwubW0KaW5kZXggNjgwMTY0NmQwOGY5ZDA5ZmUzZTczOTgzODQ1NzI5YmUyMTFk
NWFhNi4uODc3MTE0ZmNmMjY2ZTk5MmFlYmRkOTAzNjA0MDZhMWQ4OTc1MWRmNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRmlsZVVwbG9hZFBhbmVsLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0ZpbGVVcGxvYWRQYW5l
bC5tbQpAQCAtNjIwLDcgKzYyMCw3IEBAIC0gKHZvaWQpX3VwbG9hZEl0ZW1Gb3JJbWFnZURhdGE6
KE5TRGF0YSAqKWltYWdlRGF0YSBpbWFnZU5hbWU6KE5TU3RyaW5nICopaW1hZ2VOCiAgICAgTlNT
dHJpbmcgKiBjb25zdCBrVGVtcG9yYXJ5RGlyZWN0b3J5TmFtZSA9IEAiV0tXZWJGaWxlVXBsb2Fk
IjsKIAogICAgIC8vIEJ1aWxkIHRlbXBvcmFyeSBmaWxlIHBhdGguCi0gICAgTlNTdHJpbmcgKnRl
bXBvcmFyeURpcmVjdG9yeSA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURp
cmVjdG9yeShrVGVtcG9yYXJ5RGlyZWN0b3J5TmFtZSk7CisgICAgTlNTdHJpbmcgKnRlbXBvcmFy
eURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShrVGVtcG9y
YXJ5RGlyZWN0b3J5TmFtZSk7CiAgICAgTlNTdHJpbmcgKmZpbGVQYXRoID0gW3RlbXBvcmFyeURp
cmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6aW1hZ2VOYW1lXTsKICAgICBp
ZiAoIWZpbGVQYXRoKSB7CiAgICAgICAgIExPR19FUlJPUigiV0tGaWxlVXBsb2FkUGFuZWw6IEZh
aWxlZCB0byBjcmVhdGUgdGVtcG9yYXJ5IGRpcmVjdG9yeSB0byBzYXZlIGltYWdlIik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRleCA2MmJl
NDEwZjIzYjBlMmMzMzAzMGJiMDljMWU2MmYxYzhiMjBlMWMwLi44MzAwNGQ3MGE4MTc3NzE2MTgz
ODRkNGQ4ZjI4MTVjZjIxMWE3NzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9XZWJQYWdlUHJveHlNYWMubW0KQEAgLTQ5NSw3ICs0OTUsNyBAQCBzdGF0aWMgTlNTdHJpbmcg
KnBhdGhUb1BERk9uRGlzayhjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lKQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6c2F2ZVBERlRvVGVtcG9yYXJ5Rm9sZGVyQW5kT3BlbldpdGhOYXRpdmVB
cHBsaWNhdGlvblJhdyhjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBTdHJp
bmcmIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBs
b25nIHNpemUsIGNvbnN0IFN0cmluZyYgcGRmVVVJRCkKIHsKLSAgICAvLyBGSVhNRTogV3JpdGUg
b3JpZ2luYXRpbmdVUkxTdHJpbmcgdG8gdGhlIGZpbGUncyBvcmlnaW5hdGluZyBVUkwgbWV0YWRh
dGEgKHBlcmhhcHMgV2ViQ29yZTo6RmlsZVN5c3RlbTo6c2V0TWV0YWRhdGFVUkwoKT8pLgorICAg
IC8vIEZJWE1FOiBXcml0ZSBvcmlnaW5hdGluZ1VSTFN0cmluZyB0byB0aGUgZmlsZSdzIG9yaWdp
bmF0aW5nIFVSTCBtZXRhZGF0YSAocGVyaGFwcyBGaWxlU3lzdGVtOjpzZXRNZXRhZGF0YVVSTCgp
PykuCiAgICAgVU5VU0VEX1BBUkFNKG9yaWdpbmF0aW5nVVJMU3RyaW5nKTsKIAogICAgIGlmICgh
c3VnZ2VzdGVkRmlsZW5hbWUuZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgiLnBkZiIpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1Bvb2xXaW4u
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlByb2Nlc3NQb29sV2luLmNwcApp
bmRleCAxMDE1ZmYwNjA2Y2Y0YmI0Y2Y1NjJhMDc4OTI4ODczMzY1NmY5ZWQ2Li4zOTBhMGM5MDE5
MjE5NDMzYzVmYTQ5ZDNlMzg0NGExYjgzNTUyOGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1Bvb2xXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL3dpbi9XZWJQcm9jZXNzUG9vbFdpbi5jcHAKQEAgLTI4LDggKzI4LDggQEAKICNp
bmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgogCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3Mvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcu
Y3BwCmluZGV4IGVmNzkxOWM3MjBmZTcxN2I1OTA5MTliYjg1YjQ1ODE4NWJhNTBmYjEuLjBmOWY5
ZDRlZmQ1Mjg2YzYyNjg0M2FjM2EwNGNkMmU2YmQ5NDk5ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy93aW4vV2ViVmlldy5jcHAKQEAgLTQ0LDcgKzQ0LDYgQEAKICNpbmNsdWRlIDxXZWJDb3Jl
L0JpdG1hcEluZm8uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0N1cnNvci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvRWRpdG9yLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hXbmREQy5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgpAQCAtNTUsNiArNTQsNyBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvV2luZG93c1RvdWNoLmg+CiAjaW5jbHVkZSA8Y2Fpcm8td2luMzIuaD4KICNpbmNsdWRl
IDxjYWlyby5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL1Nv
ZnRMaW5raW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVmZmVyLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3Mvd3BlL1dlYlByb2Nlc3NQb29sV1BFLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL3dwZS9XZWJQcm9jZXNzUG9vbFdQRS5jcHAKaW5kZXggNjI1NWM0MjdiN2ExYmE1Y2ZlZWQw
Y2IzN2RlNWMwMmMwYmNjZTVkMS4uZjUxMDE3YThjYTI5ZWQwNzk5NGQ3ZDIwN2M5NTcxNDExMmEz
OGJmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd3BlL1dlYlByb2Nlc3NQ
b29sV1BFLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93cGUvV2ViUHJvY2Vzc1Bv
b2xXUEUuY3BwCkBAIC0zNCwxMCArMzQsMTAgQEAKICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2Vy
UHJveHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5j
bHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVt
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvU2NoZW1lUmVnaXN0cnkuaD4KICNpbmNsdWRlIDxjc3RkbGliPgorI2luY2x1ZGUgPHd0Zi9G
aWxlU3lzdGVtLmg+CiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9SZW1vdGVJbnNwZWN0b3JTZXJ2ZXIuaD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRFeHRlbnNp
b25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ2xpYi9XZWJLaXRFeHRlbnNpb25NYW5hZ2VyLmNwcAppbmRleCBhYWMyODI4MGNhNTIwYmY4
Mzk2NWI3OTRjM2UzNGZlYWZjNjFlZTc1Li40Y2NlYzYyZWYwZTExMzFmYTEzZjdmYjA2MGM4MGUw
N2VlNDI1MWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2dsaWIvV2ViS2l0RXh0ZW5zaW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdEV4dGVuc2lvbk1h
bmFnZXIuY3BwCkBAIC0yMyw4ICsyMyw4IEBACiAjaW5jbHVkZSAiQVBJU3RyaW5nLmgiCiAjaW5j
bHVkZSAiSW5qZWN0ZWRCdW5kbGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJFeHRlbnNpb25Qcml2
YXRlLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8bWVtb3J5
PgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTQxLDkgKzQxLDkgQEAgV2ViS2l0RXh0ZW5z
aW9uTWFuYWdlcjo6V2ViS2l0RXh0ZW5zaW9uTWFuYWdlcigpCiAKIHZvaWQgV2ViS2l0RXh0ZW5z
aW9uTWFuYWdlcjo6c2Nhbk1vZHVsZXMoY29uc3QgU3RyaW5nJiB3ZWJFeHRlbnNpb25zRGlyZWN0
b3J5LCBWZWN0b3I8U3RyaW5nPiYgbW9kdWxlcykKIHsKLSAgICBWZWN0b3I8U3RyaW5nPiBtb2R1
bGVQYXRocyA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06Omxpc3REaXJlY3Rvcnkod2ViRXh0ZW5zaW9u
c0RpcmVjdG9yeSwgU3RyaW5nKCIqLnNvIikpOworICAgIFZlY3RvcjxTdHJpbmc+IG1vZHVsZVBh
dGhzID0gRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeSh3ZWJFeHRlbnNpb25zRGlyZWN0b3J5LCBT
dHJpbmcoIiouc28iKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtb2R1bGVQYXRocy5z
aXplKCk7ICsraSkgewotICAgICAgICBpZiAoV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZUV4aXN0
cyhtb2R1bGVQYXRoc1tpXSkpCisgICAgICAgIGlmIChGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG1v
ZHVsZVBhdGhzW2ldKSkKICAgICAgICAgICAgIG1vZHVsZXMuYXBwZW5kKG1vZHVsZVBhdGhzW2ld
KTsKICAgICB9CiB9CkBAIC02Myw3ICs2Myw3IEBAIHN0YXRpYyB2b2lkIHBhcnNlVXNlckRhdGEo
QVBJOjpPYmplY3QqIHVzZXJEYXRhLCBTdHJpbmcmIHdlYkV4dGVuc2lvbnNEaXJlY3RvcnksCiAg
ICAgR1ZhcmlhbnQqIGRhdGEgPSBudWxscHRyOwogICAgIGdfdmFyaWFudF9nZXQodmFyaWFudC5n
ZXQoKSwgIihtJnNtdikiLCAmZGlyZWN0b3J5LCAmZGF0YSk7CiAKLSAgICB3ZWJFeHRlbnNpb25z
RGlyZWN0b3J5ID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihkaXJlY3RvcnkpOworICAgIHdlYkV4dGVuc2lvbnNEaXJlY3RvcnkgPSBGaWxl
U3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRpcmVjdG9yeSk7CiAg
ICAgaW5pdGlhbGl6YXRpb25Vc2VyRGF0YSA9IGFkb3B0R1JlZihkYXRhKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL2dsaWIvSW5qZWN0
ZWRCdW5kbGVHbGliLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9nbGliL0luamVjdGVkQnVuZGxlR2xpYi5jcHAKaW5kZXggMGE4NjA2NTJmMDBkYWQ5MzI4Y2Yz
NTVkNDA1MTNmZTgwZjVlZjY1OC4uZWQ5NjU4Y2ExZjQ2YTRjNzdjYzcyNjAzMzBkMTYwYWFkMjg4
Mjc2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L2dsaWIvSW5qZWN0ZWRCdW5kbGVHbGliLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvZ2xpYi9JbmplY3RlZEJ1bmRsZUdsaWIuY3BwCkBAIC0yOSwxMSAr
MjksMTAgQEAKIAogI2luY2x1ZGUgIldLQnVuZGxlQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldLQnVu
ZGxlSW5pdGlhbGl6ZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgorI2luY2x1
ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBib29sIEluamVj
dGVkQnVuZGxlOjppbml0aWFsaXplKGNvbnN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMm
LCBBUEk6Ok9iamVjdCogaW5pdGlhbGl6YXRpb25Vc2VyRGF0YSkKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlT
dG9yYWdlTWFuYWdlci5jcHAKaW5kZXggNGJmNDhkMGU5NGVlZjc2MDY2Y2EzMGVhOWNmMzU3MDRh
YjNkZWFlYi4uYmQzOTgyNDI2YzY2ZTYzNWI2YzU2MDVjYmU1YTNiMDUwMjVkM2ExYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9y
YWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUv
V2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5jcHAKQEAgLTI3LDkgKzI3LDkgQEAKICNpbmNsdWRl
ICJXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmgiCiAKICNpbmNsdWRlICJXZWJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJp
dHlPcmlnaW5EYXRhLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3
dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3Ry
ZWFtLmgKaW5kZXggYmI2YTViMDhjN2NjZTVkZGVkODk5MzYwZjdhYjgzNDBmMDM5NWU3NC4uM2Vk
Y2VjNmE3MmNjYzNhYTY0ZDgxOWZhOTMzN2Y0M2U2MmU3ZDc2ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0u
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZVBsdWdpblN0cmVhbS5oCkBAIC0yNyw5ICsyNyw5IEBACiAKICNpZiBFTkFCTEUoTkVUU0NBUEVf
UExVR0lOX0FQSSkKIAotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvbnBydW50aW1lX2ludGVybmFsLmg+CiAjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1
ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTg5LDcgKzg5
LDcgQEAgcHJpdmF0ZToKICAgICBpbnQzMl90IG1fb2Zmc2V0OwogCiAgICAgU3RyaW5nIG1fZmls
ZVBhdGg7Ci0gICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIG1fZmls
ZUhhbmRsZTsKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgbV9maWxlSGFuZGxl
OwogICAgIAogICAgIC8vIFdoZXRoZXIgTlBQX05ld1N0cmVhbSBoYXMgc3VjY2Vzc2Z1bGx5IGJl
ZW4gY2FsbGVkLgogICAgIGJvb2wgbV9pc1N0YXJ0ZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5jcHAK
aW5kZXggMDFjNTNmM2Q4NDNkZDFkMjQzMTRmNWNjMGMxMmU5MDk2NGVmYmJlNC4uMjZkNmQ1MDBl
NjlhMDE5M2IxZGY1ZjQwM2YxZjNmMThjMmM4ZWQ1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmNw
cApAQCAtMzYsMTAgKzM2LDkgQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAi
V2ViUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU09i
amVjdC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPHd0Zi9G
aWxlU3lzdGVtLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewotdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihQ
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIqIHBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFu
YWdlciwgdWludDY0X3QgcGx1Z2luUHJvY2Vzc1Rva2VuLCBJUEM6OkNvbm5lY3Rpb246OklkZW50
aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIsIGJvb2wgc3VwcG9ydHNBc3luY2hyb25vdXNQbHVn
aW5Jbml0aWFsaXphdGlvbikKICAgICA6IG1fcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2Vy
KHBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252
ZXJzaW9uLmNwcAppbmRleCA2M2MzNmEzZGI2OWE4MmFkM2JlYTY2MGY2YjA2ZGZlNzYzYzU1NjE3
Li4xZDgxNjZhMDdlM2ZkOTc4ODFjYjdmNDRmNGE2YmVmZjg1YmJmZTVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVy
c2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nl
c3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwCkBAIC0yOCw5ICsyOCw5IEBACiAKICNpbmNsdWRlICJT
ZXNzaW9uU3RhdGUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Jsb2JEYXRhLmg+Ci0jaW5jbHVkZSA8
V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Gb3JtRGF0YS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvSGlzdG9yeUl0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5o
PgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYkluc3BlY3RvclVJ
R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJJbnNwZWN0
b3JVSUd0ay5jcHAKaW5kZXggODljM2JhMWFhODkzOWNmYTUxZjZmYjIyMWE3M2IzOGQ3ODAzMjdh
My4uZGJiMmE5MTgwNGJlMTMyNjQ4YzlhZDMzZTZmMDI3YmRkM2YxMTBmMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYkluc3BlY3RvclVJR3RrLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViSW5zcGVjdG9y
VUlHdGsuY3BwCkBAIC0yOCw4ICsyOCw4IEBACiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yVUkuaCIK
ICNpbmNsdWRlICJSZW1vdGVXZWJJbnNwZWN0b3JVSS5oIgogCi0jaW5jbHVkZSA8V2ViQ29yZS9G
aWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8Z2xpYi5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVt
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL1dlYklu
c3BlY3RvclVJV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9X
ZWJJbnNwZWN0b3JVSVdpbi5jcHAKaW5kZXggNmE3YWYzYzVkNjQ5YzUwNGVlZGFkNDljOTFhMWZi
NDQzNWU0YTE4Yy4uNDcxMTE0Y2FmYTE0YTdkMWYzM2ZmYTJjMWU4YWZiYmJlZDJlMDNhMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL1dlYkluc3BlY3Rv
clVJV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93aW4vV2Vi
SW5zcGVjdG9yVUlXaW4uY3BwCkBAIC0yOCw4ICsyOCw4IEBACiAKICNpbmNsdWRlICJSZW1vdGVX
ZWJJbnNwZWN0b3JVSS5oIgogCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9XZWJDb3JlQnVuZGxlV2luLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0
ZW0uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYktp
dCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vz
c0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2Nv
YS5tbQppbmRleCBhNDQ2ODFjNzcyNzFjMDRhNzk2ZjA3YmJjY2FjM2JlY2M0ODFmNzVhLi4zNWQ1
N2Q1Y2U2N2I2NTg3NjA3OTNkY2M3YzQwOTE2OWY4NTgwYWY1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KQEAgLTUxLDcgKzUxLDYg
QEAKICNpbXBvcnQgPFdlYkNvcmUvQVhPYmplY3RDYWNoZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9D
UFVNb25pdG9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFn
ZXIuaD4KLSNpbXBvcnQgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8V2ViQ29yZS9G
b250Q2FjaGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvRm9udENhc2NhZGUuaD4KICNpbXBvcnQgPFdl
YkNvcmUvSGlzdG9yeUNvbnRyb2xsZXIuaD4KQEAgLTcyLDYgKzcxLDcgQEAKICNpbXBvcnQgPHBh
bC9zcGkvbWFjL05TQWNjZXNzaWJpbGl0eVNQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9tYWMvTlNB
cHBsaWNhdGlvblNQSS5oPgogI2ltcG9ydCA8c3RkaW8uaD4KKyNpbXBvcnQgPHd0Zi9GaWxlU3lz
dGVtLmg+CiAjaW1wb3J0IDx3dGYvY29jb2EvTlNVUkxFeHRyYXMuaD4KIAogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3Rv
cmFnZUFyZWFTeW5jLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlQXJl
YVN5bmMuY3BwCmluZGV4IDQwMzk5NjBiMTQwZmNiOWM2M2E3NmQ2ZDA3NzEzYTNhMzE4MmM1YTQu
LjE3ZDQ4OTQ5NGQ3ZTA5MGQzZmY3MzVlZmYyNjQ0NWVmZWM2YjkyOTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuY3BwCkBAIC0yOCwxMSArMjgs
MTEgQEAKICNpbmNsdWRlICJTdG9yYWdlQXJlYUltcGwuaCIKICNpbmNsdWRlICJTdG9yYWdlU3lu
Y01hbmFnZXIuaCIKICNpbmNsdWRlICJTdG9yYWdlVHJhY2tlci5oIgotI2luY2x1ZGUgPFdlYkNv
cmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlRGF0YWJhc2VUcmFja2Vy
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVTdGF0ZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1NRTGl0ZVRyYW5zYWN0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TdWRkZW5UZXJtaW5h
dGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL01haW5U
aHJlYWQuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIuY3BwCmluZGV4IDNlOGZmNjVlZTYw
ZjI3NGRjOTA0ZWI1OGMxMTc0ZWQ1Y2MxYTU3NGMuLjM2OTA5NWNkYWQxZDM0NzExYTA2NzZkODcz
NmE5MGUxOTNlMjkwNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9T
dG9yYWdlU3luY01hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9T
dG9yYWdlU3luY01hbmFnZXIuY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiU3RvcmFn
ZVN5bmNNYW5hZ2VyLmgiCiAKICNpbmNsdWRlICJTdG9yYWdlVGhyZWFkLmgiCi0jaW5jbHVkZSA8
V2ViQ29yZS9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNs
dWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNw
cCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAKaW5kZXgg
NzEwMTQwYjFiMTMzYTJlYjU5Mzk2ZDc2NzQ4NmQyMTgzZWM5MDQ4NC4uYjkzNGQxYTNiMWJhYTgz
MWFkZGYzYWJlNWUwNzcwYWIxY2Y3N2ZhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0
b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCkBAIC0yOCwxMyArMjgsMTMgQEAKICNpbmNsdWRlICJT
dG9yYWdlVGhyZWFkLmgiCiAjaW5jbHVkZSAiU3RvcmFnZVRyYWNrZXJDbGllbnQuaCIKICNpbmNs
dWRlICJXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0Zp
bGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VHcm91cC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvU1FMaXRlRGF0YWJhc2VUcmFja2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVT
dGF0ZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHRF
bmNvZGluZy5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL01h
aW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJO
U0ZpbGVNYW5hZ2VyRXh0cmFzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJO
U0ZpbGVNYW5hZ2VyRXh0cmFzLm1tCmluZGV4IDkwNTE3NGRhNzU2ZGQ2MjhiZWRlZmQ1MGMyYjIz
NzI5ZTUzMzUwMmIuLmM1NDEzZTgxYzZhM2VjYjJlYzk3ODFmNmI4YmZkNmMyYjJhMDVkZjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNGaWxlTWFuYWdlckV4
dHJhcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TRmlsZU1hbmFn
ZXJFeHRyYXMubW0KQEAgLTMwLDEwICszMCwxMCBAQAogCiAjaW1wb3J0ICJXZWJLaXROU1N0cmlu
Z0V4dHJhcy5oIgogI2ltcG9ydCAiV2ViTlNVUkxFeHRyYXMuaCIKLSNpbXBvcnQgPFdlYkNvcmUv
RmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Mb2FkZXJOU1VSTEV4dHJhcy5oPgogI2lt
cG9ydCA8c3lzL3N0YXQuaD4KICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW1wb3J0IDx3
dGYvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8d3RmL09iakNSdW50aW1lRXh0cmFzLmg+CiAKIEBp
bXBsZW1lbnRhdGlvbiBOU0ZpbGVNYW5hZ2VyIChXZWJOU0ZpbGVNYW5hZ2VyRXh0cmFzKQpAQCAt
NDQsNyArNDQsNyBAQCAtICh2b2lkKV93ZWJraXRfc2V0TWV0YWRhdGFVUkw6KE5TU3RyaW5nICop
VVJMU3RyaW5nIHJlZmVycmVyOihOU1N0cmluZyAqKXJlZmVycgogewogICAgIEFTU0VSVChVUkxT
dHJpbmcpOwogICAgIEFTU0VSVChwYXRoKTsKLSAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzZXRN
ZXRhZGF0YVVSTChwYXRoLCBVUkxTdHJpbmcsIHJlZmVycmVyKTsKKyAgICBGaWxlU3lzdGVtOjpz
ZXRNZXRhZGF0YVVSTChwYXRoLCBVUkxTdHJpbmcsIHJlZmVycmVyKTsKIH0KIAogI2VuZGlmIC8v
ICFQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtOTMsNyArOTMsNyBAQCAtIChOU1N0cmluZyAqKV93
ZWJraXRfcGF0aFdpdGhVbmlxdWVGaWxlbmFtZUZvclBhdGg6KE5TU3RyaW5nICopcGF0aAogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAtIChOU1N0cmluZyAqKV93ZWJraXRfY3JlYXRlVGVtcG9y
YXJ5RGlyZWN0b3J5V2l0aFRlbXBsYXRlUHJlZml4OihOU1N0cmluZyAqKXByZWZpeAogewotICAg
IHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkocHJl
Zml4KTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KHBy
ZWZpeCk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
U3RvcmFnZS9XZWJEYXRhYmFzZVByb3ZpZGVyLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
U3RvcmFnZS9XZWJEYXRhYmFzZVByb3ZpZGVyLm1tCmluZGV4IDc0OTViMTc1ZmZmNDVkYzVhNTRi
MDE0ZjhkNWJmMDNlNTQzOTQzY2MuLmFkYzRjMzk4ODRjNGNiMmQyYTNiZWI2YjE5NWJjZGEwMDA4
OWMxNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2ViRGF0
YWJhc2VQcm92aWRlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dl
YkRhdGFiYXNlUHJvdmlkZXIubW0KQEAgLTI2LDE2ICsyNiwxNiBAQAogI2ltcG9ydCAiV2ViRGF0
YWJhc2VQcm92aWRlci5oIgogI2ltcG9ydCAiV2ViRGF0YWJhc2VNYW5hZ2VyUHJpdmF0ZS5oIgog
Ci0jaW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVt
Lmg+CiAKIFN0cmluZyBXZWJEYXRhYmFzZVByb3ZpZGVyOjppbmRleGVkRGF0YWJhc2VEaXJlY3Rv
cnlQYXRoKCkKIHsKICAgICBOU1VzZXJEZWZhdWx0cyAqZGVmYXVsdHMgPSBbTlNVc2VyRGVmYXVs
dHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdOwogICAgIE5TU3RyaW5nICpkYXRhYmFzZXNEaXJlY3Rv
cnkgPSBbZGVmYXVsdHMgb2JqZWN0Rm9yS2V5OldlYkRhdGFiYXNlRGlyZWN0b3J5RGVmYXVsdHNL
ZXldOwogICAgIGlmICghZGF0YWJhc2VzRGlyZWN0b3J5IHx8ICFbZGF0YWJhc2VzRGlyZWN0b3J5
IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCi0gICAgICAgIGRhdGFiYXNlc0RpcmVj
dG9yeSA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCgifi9M
aWJyYXJ5L1dlYktpdC9EYXRhYmFzZXMvX19fSW5kZXhlZERCIl9zLCBbW05TQnVuZGxlIG1haW5C
dW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdKTsKKyAgICAgICAgZGF0YWJhc2VzRGlyZWN0b3J5ID0g
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KCJ+L0xpYnJhcnkvV2ViS2l0L0Rh
dGFiYXNlcy9fX19JbmRleGVkREIiX3MsIFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRl
bnRpZmllcl0pOwogICAgIGVsc2UKLSAgICAgICAgZGF0YWJhc2VzRGlyZWN0b3J5ID0gV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlc0RpcmVjdG9y
eSwgIl9fX0luZGV4ZWREQiJfcyk7CisgICAgICAgIGRhdGFiYXNlc0RpcmVjdG9yeSA9IEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZXNEaXJlY3RvcnksICJfX19J
bmRleGVkREIiX3MpOwogICAgIAogICAgIHJldHVybiBbZGF0YWJhc2VzRGlyZWN0b3J5IHN0cmlu
Z0J5U3RhbmRhcmRpemluZ1BhdGhdOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJWaWV3Lm1tCmluZGV4IGVkMGUwZGY3OWIwM2RhNjZlOGEyOWJjZWQ5Y2VhYTkzY2Q2NjVl
OGMuLjAxYzYwMDVlYjJhMmMwZDA2NGYwNmY4ZGM0NGMwMzUzZjQ3OGZjZWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTE0OCw3ICsxNDgsNiBAQAog
I2ltcG9ydCA8V2ViQ29yZS9FZGl0b3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvRXZlbnQuaD4KICNp
bXBvcnQgPFdlYkNvcmUvRXZlbnRIYW5kbGVyLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0
ZW0uaD4KICNpbXBvcnQgPFdlYkNvcmUvRm9jdXNDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0ZvbnRBdHRyaWJ1dGVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZvbnRDYWNoZS5oPgpAQCAt
MjMxLDYgKzIzMCw3IEBACiAjaW1wb3J0IDxwYWwvc3BpL21hYy9OU1NwZWxsQ2hlY2tlclNQSS5o
PgogI2ltcG9ydCA8cGFsL3NwaS9tYWMvTlNXaW5kb3dTUEkuaD4KICNpbXBvcnQgPHd0Zi9Bc3Nl
cnRpb25zLmg+CisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8d3RmL0hhc2hU
cmFpdHMuaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW1wb3J0IDx3dGYvT2JqQ1J1
bnRpbWVFeHRyYXMuaD4KQEAgLTY4ODUsNyArNjg4NSw3IEBAIC0gKEJPT0wpcGVyZm9ybURyYWdP
cGVyYXRpb246KGlkIDxOU0RyYWdnaW5nSW5mbz4pZHJhZ2dpbmdJbmZvCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAotICAgICAgICBOU1N0cmluZyAqZHJvcERlc3RpbmF0
aW9uUGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShA
IldlYktpdERyb3BEZXN0aW5hdGlvbiIpOworICAgICAgICBOU1N0cmluZyAqZHJvcERlc3RpbmF0
aW9uUGF0aCA9IEZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShAIldlYktpdERy
b3BEZXN0aW5hdGlvbiIpOwogICAgICAgICBpZiAoIWRyb3BEZXN0aW5hdGlvblBhdGgpIHsKICAg
ICAgICAgICAgIGRlbGV0ZSBkcmFnRGF0YTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2Uu
Y3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAK
aW5kZXggYmM3OWQ4OWJkNDQ2YzU2ZWExYmE5ZDU3Yzc1YWUzOTlhYThmMDRjZi4uNjQxYWMzNTRj
MzQxOTY3ZWE2Y2VkNjkwZDVlNmQ0NWM2YzJjMmExYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKQEAgLTMzLDcgKzMzLDcgQEAK
ICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExV
R0lOX01FVEFEQVRBX0NBQ0hFKQotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlIDx3
dGYvRmlsZVN5c3RlbS5oPgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luUGFja2FnZS5oIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5QYWNrYWdlLmgKaW5kZXggYjQ4ODNk
ZWE5OTc2ZGI1MGNkZTUyODYwYWE5YjkyYjViYjEwMTBkZi4uODk4N2EzZDM1M2M3NmMwYWE0NDZl
YWIzOTA4MzczMzM5ZDUxN2QzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
UGx1Z2lucy9QbHVnaW5QYWNrYWdlLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1
Z2lucy9QbHVnaW5QYWNrYWdlLmgKQEAgLTI5LDggKzI5LDggQEAKIAogI2luY2x1ZGUgIlBsYXRm
b3JtTW9kdWxlLmgiCiAjaW5jbHVkZSAiUGx1Z2luUXVpcmtTZXQuaCIKLSNpbmNsdWRlIDxXZWJD
b3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+CisjaW5jbHVkZSA8
d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5TdHJlYW0uaCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luU3RyZWFtLmgKaW5kZXggYzFiOWY4
N2FjNGU2MjJmYmIyZTJlMjA1ZDE2NDU5YzBjMTk0ZTdiNi4uNDMxYjM2MzAzNjJjOWU1MjExMThk
ZDAzMjczYTZjZDljMjhjYzQ2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
UGx1Z2lucy9QbHVnaW5TdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVn
aW5zL1BsdWdpblN0cmVhbS5oCkBAIC0yNywxMiArMjcsMTIgQEAKICNwcmFnbWEgb25jZQogCiAj
aW5jbHVkZSAiUGx1Z2luUXVpcmtTZXQuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0u
aD4KICNpbmNsdWRlIDxXZWJDb3JlL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291
cmNlUmVzcG9uc2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9ucHJ1bnRpbWVfaW50ZXJuYWwuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgog
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNp
bmNsdWRlIDx3dGYvVVJMLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJBcHBsaWNhdGlvbkNhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFwcGxp
Y2F0aW9uQ2FjaGUuY3BwCmluZGV4IGI4NWRkMTU0NDBhNmVhNTQwNGE4YTQ4NTIxNDNlNTkxNzhm
ZWMxMmQuLjkwYmUxZmNlNzUxYjRmMWI1ZDk0YjFiYjY3NGMzNmIzZWM1NjlmY2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFwcGxpY2F0aW9uQ2FjaGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFwcGxpY2F0aW9uQ2FjaGUuY3BwCkBAIC0zMCwx
MyArMzAsMTMgQEAKICNpbmNsdWRlICJNYXJzaGFsbGluZ0hlbHBlcnMuaCIKICNpbmNsdWRlICJX
ZWJQcmVmZXJlbmNlcy5oIgogI2luY2x1ZGUgIldlYlNlY3VyaXR5T3JpZ2luLmgiCi0jaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQXBwbGljYXRpb25DYWNoZS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0NPTVB0ci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbmNsdWRlIDxjb211dGlsLmg+Cisj
aW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViRGF0YWJhc2VNYW5hZ2VyLmNwcAppbmRleCAzZjZjMzhiMDYyOGRiNGJhY2Y5YzQxMzU3YjU5
MWE3ZGVjOWFjZDQxLi5mOTk2M2YxYzA2ODk2ZDdhMmNiMmQ3MzNhMThlZmFhYWYzY2U0ODA4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAKQEAg
LTM5LDkgKzM5LDkgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0NPTVB0ci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvRGF0YWJhc2VNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EYXRhYmFzZVRyYWNr
ZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEu
aD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFk
Lmg+CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKQEAgLTQzNiw3ICs0MzYsNyBAQCBz
dGF0aWMgV1RGOjpTdHJpbmcgZGF0YWJhc2VzRGlyZWN0b3J5KCkKICAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PENGU3RyaW5nUmVmPihkaXJlY3RvcnlQcmVmLmdldCgpKTsKICNlbmRpZgogCi0g
ICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChX
ZWJDb3JlOjpGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwg
IkRhdGFiYXNlcyIpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJE
YXRhYmFzZXMiKTsKIH0KIAogdm9pZCBXZWJLaXRJbml0aWFsaXplV2ViRGF0YWJhc2VzSWZOZWNl
c3NhcnkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWRD
dXJsLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkQ3VybC5jcHAKaW5k
ZXggMjBkNGY0MDgzNWY3MjQxMzhmMTcyM2E4ZGMyZjk0Yjg5NTJlZWVkNy4uOTliNjI3ZjFhYWMw
M2FlZGY1MDY4N2ZjN2YzMzZiYjk1ZDljZGQyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViRG93bmxvYWRDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJEb3dubG9hZEN1cmwuY3BwCkBAIC0zNSwyMiArMzUsMTkgQEAKICNpbmNsdWRlICJXZWJV
UkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgogI2luY2x1ZGUgIldlYlVSTENyZWRlbnRpYWwu
aCIKICNpbmNsdWRlICJXZWJVUkxSZXNwb25zZS5oIgotCi0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgotCi0jaW5jbHVkZSA8aW8uaD4KLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgotI2luY2x1
ZGUgPHN5cy90eXBlcy5oPgotCiAjaW5jbHVkZSA8V2ViQ29yZS9CU3RyaW5nLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9DdXJsRG93bmxvYWQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0u
aD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9SZXNvdXJjZUVycm9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9S
ZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0RW5jb2RpbmcuaD4KKyNp
bmNsdWRlIDxpby5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5jbHVkZSA8c3lzL3R5cGVz
Lmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKaW5kZXggYTYzMWI5MTY5Njc3NzJiYjgwZTdjNjNlMGY1
ZTU3ZjZmMzI1YzY5ZS4uMDI1YzIwYmVhMjM4Y2Q2YTQ5NWEyNTBmNmM1NTBjYTdmNTI3OWQ2OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcApAQCAtMzgsMTMg
KzM4LDEzIEBACiAKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvQ09NUHRyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVt
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Gb250Q2FzY2FkZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
TG9jYWxpemVkU3RyaW5ncy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uLmg+CiAjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPHNobG9iai5oPgogI2luY2x1ZGUg
PHdjaGFyLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9T
dGRMaWJFeHRyYXMuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZp
ZXcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKaW5kZXggZTc2MTc0
NGUwZDFiODVhZmZkMTBiNzc3Y2RkMzc5MWE0ZjcxYjMxZS4uZTMzMTA2M2EwYmYwZWJkODIwMDkx
NTA0MDc2MjZkZTlhMTQwZTUyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKQEAg
LTk2LDcgKzk2LDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0VkaXRvci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvRXZlbnRIYW5kbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FdmVudE5hbWVzLmg+Ci0j
aW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFF1
YWQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZvY3VzQ29udHJvbGxlci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvRm9udC5oPgpAQCAtMTcxLDYgKzE3MCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9XaW5k
b3dzVG91Y2guaD4KICNpbmNsdWRlIDxjb21kZWYuaD4KICNpbmNsdWRlIDxkMmQxLmg+CisjaW5j
bHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9Qcm9jZXNzUHJpdmlsZWdlLmg+CiAjaW5jbHVkZSA8d3RmL1JBTVNpemUuaD4K
QEAgLTUxMyw3ICs1MTMsNyBAQCB2b2lkIFdlYlZpZXc6OnNldENhY2hlTW9kZWwoV2ViQ2FjaGVN
b2RlbCBjYWNoZU1vZGVsKQogICAgICAgICBpZiAocHJlZmVyZW5jZSAmJiAoQ0ZTdHJpbmdHZXRU
eXBlSUQoKSA9PSBDRkdldFR5cGVJRChwcmVmZXJlbmNlLmdldCgpKSkpCiAgICAgICAgICAgICBj
ZnVybENhY2hlRGlyZWN0b3J5ID0gYWRvcHRDRihzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4ocHJl
ZmVyZW5jZS5sZWFrUmVmKCkpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgY2Z1cmxDYWNo
ZURpcmVjdG9yeSA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFn
ZURpcmVjdG9yeSgpLmNyZWF0ZUNGU3RyaW5nKCk7CisgICAgICAgICAgICBjZnVybENhY2hlRGly
ZWN0b3J5ID0gRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCku
Y3JlYXRlQ0ZTdHJpbmcoKTsKICAgICB9CiAgICAgY2FjaGVEaXJlY3RvcnkgPSBTdHJpbmcoY2Z1
cmxDYWNoZURpcmVjdG9yeS5nZXQoKSk7CiAgICAgQ0ZJbmRleCBjYWNoZU1lbW9yeUNhcGFjaXR5
ID0gMDsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCAzMTY1YmQ1NzgyNWU0YTMyMDg2OTY3NWNjYjBjNDdjZGMxNzYxMjY2Li5hOTI0MWFhYjQzYzcx
NThmZDFjN2MzMGRmM2NlMWMwODhkNTIzY2Q1IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTktMDEtMjMgIFJvc3Mg
S2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgorCisgICAgICAgIE1vdmUgRmlsZVN5
c3RlbSB0byBXVEYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5MzYwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcDoKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvUGxh
dGZvcm1HVEsuY21ha2U6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUpTQ09ubHku
Y21ha2U6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtl
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvUGxhdGZvcm1XUEUuY21ha2U6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHA6IFJlbmFtZWQg
ZnJvbSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZVN5c3RlbS5jcHAuCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNwcDoKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2VjdXJpdHlPcmlnaW4uY3BwOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmNw
cDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvRGF0YWJhc2VU
cmFja2VyVGVzdC5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY3Vy
bC9Db29raWVzLmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0Rvd25sb2FkLm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
RG93bmxvYWRQcm9ncmVzcy5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL3dpbi9QbGF0Zm9y
bVV0aWxpdGllc1dpbi5jcHA6CisKIDIwMTktMDEtMjIgIEFha2FzaCBKYWluICA8YWFrYXNoX2ph
aW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtld3MtYXBwXSBmZXRjaCBsb29wIHNob3VsZCBub3Qg
c3RvcCBvbiBuZXR3b3JrIGlzc3VlcwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
d2luL0R1bXBSZW5kZXJUcmVlLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVu
ZGVyVHJlZS5jcHAKaW5kZXggYTRiNWM3NzA3MDg5MGE1Y2YxNDJkMmQ5YzhiM2MzMzg2NDgzZTZl
ZC4uYTBiNjg1Yzc1ZjlkYWYwZmViN2VhYWUxYmIzMmEyZTk1MmQyMjZmNCAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcAorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCkBAIC00Niw3ICs0Niw2IEBACiAK
ICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL1Rlc3RSdW5uZXJVdGlscy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5
c3RlbS5oPgogI2luY2x1ZGUgPFdlYktpdExlZ2FjeS9XZWJLaXQuaD4KICNpbmNsdWRlIDxXZWJL
aXRMZWdhY3kvV2ViS2l0Q09NQVBJLmg+CiAjaW5jbHVkZSA8Y29tdXRpbC5oPgpAQCAtNjAsNiAr
NTksNyBAQAogI2luY2x1ZGUgPHNobHdhcGkuaD4KICNpbmNsdWRlIDx0Y2hhci5oPgogI2luY2x1
ZGUgPHdpbmRvd3MuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0
Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgpAQCAtMjIyLDcgKzIyMiw3IEBAIHN0YXRpYyBTdHJpbmcgbGlicmFy
eVBhdGhGb3JEdW1wUmVuZGVyVHJlZSgpCiAgICAgICAgIHJldHVybiBTdHJpbmcgKHBhdGguZGF0
YSgpLCBwYXRoLmxlbmd0aCgpKTsKICAgICB9CiAKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5
c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCk7CisgICAgcmV0dXJuIEZp
bGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpOwogfQogI2VuZGlm
CiAKQEAgLTkzMSw5ICs5MzEsOSBAQCBzdGF0aWMgdm9pZCBzZXREZWZhdWx0c1RvQ29uc2lzdGVu
dFZhbHVlc0ZvclRlc3RpbmcoKQogICAgIFN0cmluZyBsaWJyYXJ5UGF0aCA9IGxpYnJhcnlQYXRo
Rm9yRHVtcFJlbmRlclRyZWUoKTsKIAogICAgIC8vIFNldCB1cCB0aGVzZSB2YWx1ZXMgYmVmb3Jl
IGNyZWF0aW5nIHRoZSBXZWJWaWV3IHNvIHRoYXQgdGhlIHZhcmlvdXMgaW5pdGlhbGl6YXRpb25z
IHdpbGwgc2VlIHRoZXNlIHByZWZlcnJlZCB2YWx1ZXMuCi0gICAgQ0ZQcmVmZXJlbmNlc1NldEFw
cFZhbHVlKFdlYkRhdGFiYXNlRGlyZWN0b3J5RGVmYXVsdHNLZXksIFdlYkNvcmU6OkZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChsaWJyYXJ5UGF0aCwgIkRhdGFiYXNlcyIpLmNy
ZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGFwcElkLmdldCgpKTsKLSAgICBDRlByZWZlcmVuY2VzU2V0
QXBwVmFsdWUoV2ViU3RvcmFnZURpcmVjdG9yeURlZmF1bHRzS2V5LCBXZWJDb3JlOjpGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobGlicmFyeVBhdGgsICJMb2NhbFN0b3JhZ2Ui
KS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBhcHBJZC5nZXQoKSk7Ci0gICAgQ0ZQcmVmZXJlbmNl
c1NldEFwcFZhbHVlKFdlYktpdExvY2FsQ2FjaGVEZWZhdWx0c0tleSwgV2ViQ29yZTo6RmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGxpYnJhcnlQYXRoLCAiTG9jYWxDYWNoZSIp
LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGFwcElkLmdldCgpKTsKKyAgICBDRlByZWZlcmVuY2Vz
U2V0QXBwVmFsdWUoV2ViRGF0YWJhc2VEaXJlY3RvcnlEZWZhdWx0c0tleSwgRmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGxpYnJhcnlQYXRoLCAiRGF0YWJhc2VzIikuY3JlYXRl
Q0ZTdHJpbmcoKS5nZXQoKSwgYXBwSWQuZ2V0KCkpOworICAgIENGUHJlZmVyZW5jZXNTZXRBcHBW
YWx1ZShXZWJTdG9yYWdlRGlyZWN0b3J5RGVmYXVsdHNLZXksIEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChsaWJyYXJ5UGF0aCwgIkxvY2FsU3RvcmFnZSIpLmNyZWF0ZUNGU3Ry
aW5nKCkuZ2V0KCksIGFwcElkLmdldCgpKTsKKyAgICBDRlByZWZlcmVuY2VzU2V0QXBwVmFsdWUo
V2ViS2l0TG9jYWxDYWNoZURlZmF1bHRzS2V5LCBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQobGlicmFyeVBhdGgsICJMb2NhbENhY2hlIikuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQo
KSwgYXBwSWQuZ2V0KCkpOwogI2VuZGlmCiB9CiAKQEAgLTEwMzUsNyArMTAzNSw3IEBAIHN0YXRp
YyB2b2lkIHNpemVXZWJWaWV3Rm9yQ3VycmVudFRlc3QoKQogCiBzdGF0aWMgU3RyaW5nIGZpbmRG
b250RmFsbGJhY2soY29uc3QgY2hhciogcGF0aE9yVXJsKQogewotICAgIFN0cmluZyBwYXRoVG9G
b250RmFsbGJhY2sgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKHBhdGhPclVy
bCk7CisgICAgU3RyaW5nIHBhdGhUb0ZvbnRGYWxsYmFjayA9IEZpbGVTeXN0ZW06OmRpcmVjdG9y
eU5hbWUocGF0aE9yVXJsKTsKIAogICAgIHdjaGFyX3QgZnVsbFBhdGhbX01BWF9QQVRIXTsKICAg
ICBpZiAoIV93ZnVsbHBhdGgoZnVsbFBhdGgsIHBhdGhUb0ZvbnRGYWxsYmFjay5jaGFyYWN0ZXJz
V2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSwgX01BWF9QQVRIKSkKQEAgLTEwNTQsMjAgKzEw
NTQsMjAgQEAgc3RhdGljIFN0cmluZyBmaW5kRm9udEZhbGxiYWNrKGNvbnN0IGNoYXIqIHBhdGhP
clVybCkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKICAgICBTdHJpbmcgcGF0aFRv
VGVzdCA9IHBhdGhUb0NoZWNrLnN1YnN0cmluZyhsb2NhdGlvbiArIGxheW91dFRlc3RzLmxlbmd0
aCgpICsgMSk7Ci0gICAgU3RyaW5nIHBvc3NpYmxlUGF0aFRvTG9ndWUgPSBXZWJDb3JlOjpGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGF0aFRvQ2hlY2suc3Vic3RyaW5nKDAs
IGxvY2F0aW9uICsgbGF5b3V0VGVzdHMubGVuZ3RoKCkgKyAxKSwgInBsYXRmb3JtXFx3aW4iKTsK
KyAgICBTdHJpbmcgcG9zc2libGVQYXRoVG9Mb2d1ZSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChwYXRoVG9DaGVjay5zdWJzdHJpbmcoMCwgbG9jYXRpb24gKyBsYXlvdXRU
ZXN0cy5sZW5ndGgoKSArIDEpLCAicGxhdGZvcm1cXHdpbiIpOwogCiAgICAgVmVjdG9yPFN0cmlu
Zz4gcG9zc2libGVQYXRoczsKLSAgICBwb3NzaWJsZVBhdGhzLmFwcGVuZChXZWJDb3JlOjpGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocG9zc2libGVQYXRoVG9Mb2d1ZSwgcGF0
aFRvVGVzdCkpOworICAgIHBvc3NpYmxlUGF0aHMuYXBwZW5kKEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChwb3NzaWJsZVBhdGhUb0xvZ3VlLCBwYXRoVG9UZXN0KSk7CiAKICAg
ICBzaXplX3QgbmV4dENhbmRpZGF0ZUVuZCA9IHBhdGhUb1Rlc3QucmV2ZXJzZUZpbmQoJ1xcJyk7
CiAgICAgd2hpbGUgKG5leHRDYW5kaWRhdGVFbmQgJiYgbmV4dENhbmRpZGF0ZUVuZCAhPSBXVEY6
Om5vdEZvdW5kKSB7CiAgICAgICAgIHBhdGhUb1Rlc3QgPSBwYXRoVG9UZXN0LnN1YnN0cmluZygw
LCBuZXh0Q2FuZGlkYXRlRW5kKTsKLSAgICAgICAgcG9zc2libGVQYXRocy5hcHBlbmQoV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBvc3NpYmxlUGF0aFRvTG9n
dWUsIHBhdGhUb1Rlc3QpKTsKKyAgICAgICAgcG9zc2libGVQYXRocy5hcHBlbmQoRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBvc3NpYmxlUGF0aFRvTG9ndWUsIHBhdGhUb1Rl
c3QpKTsKICAgICAgICAgbmV4dENhbmRpZGF0ZUVuZCA9IHBhdGhUb1Rlc3QucmV2ZXJzZUZpbmQo
J1xcJyk7CiAgICAgfQogCiAgICAgZm9yIChWZWN0b3I8U3RyaW5nPjo6aXRlcmF0b3IgcG9zID0g
cG9zc2libGVQYXRocy5iZWdpbigpOyBwb3MgIT0gcG9zc2libGVQYXRocy5lbmQoKTsgKytwb3Mp
IHsKLSAgICAgICAgcGF0aFRvRm9udEZhbGxiYWNrID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KCpwb3MsICJyZXNvdXJjZXNcXCIpOworICAgICAgICBwYXRo
VG9Gb250RmFsbGJhY2sgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoKnBv
cywgInJlc291cmNlc1xcIik7CiAKICAgICAgICAgaWYgKDo6UGF0aElzRGlyZWN0b3J5VyhwYXRo
VG9Gb250RmFsbGJhY2suY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpKQog
ICAgICAgICAgICAgcmV0dXJuIHBhdGhUb0ZvbnRGYWxsYmFjazsKQEAgLTEwODEsNyArMTA4MSw3
IEBAIHN0YXRpYyB2b2lkIGFkZEZvbnRGYWxsYmFja0lmUHJlc2VudChjb25zdCBTdHJpbmcmIGZv
bnRGYWxsYmFja1BhdGgpCiAgICAgaWYgKGZvbnRGYWxsYmFja1BhdGguaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBTdHJpbmcgZm9udEZhbGxiYWNrID0gV2ViQ29yZTo6RmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGZvbnRGYWxsYmFja1BhdGgsICJNYWMtY29t
cGF0aWJsZS1mb250LWZhbGxiYWNrLmNzcyIpOworICAgIFN0cmluZyBmb250RmFsbGJhY2sgPSBG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZm9udEZhbGxiYWNrUGF0aCwgIk1h
Yy1jb21wYXRpYmxlLWZvbnQtZmFsbGJhY2suY3NzIik7CiAKICAgICBpZiAoITo6UGF0aEZpbGVF
eGlzdHNXKGZvbnRGYWxsYmFjay5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEo
KSkpCiAgICAgICAgIHJldHVybjsKQEAgLTEwOTQsNyArMTA5NCw3IEBAIHN0YXRpYyB2b2lkIHJl
bW92ZUZvbnRGYWxsYmFja0lmUHJlc2VudChjb25zdCBTdHJpbmcmIGZvbnRGYWxsYmFja1BhdGgp
CiAgICAgaWYgKGZvbnRGYWxsYmFja1BhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBTdHJpbmcgZm9udEZhbGxiYWNrID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KGZvbnRGYWxsYmFja1BhdGgsICJNYWMtY29tcGF0aWJsZS1mb250LWZh
bGxiYWNrLmNzcyIpOworICAgIFN0cmluZyBmb250RmFsbGJhY2sgPSBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoZm9udEZhbGxiYWNrUGF0aCwgIk1hYy1jb21wYXRpYmxlLWZv
bnQtZmFsbGJhY2suY3NzIik7CiAKICAgICBpZiAoITo6UGF0aEZpbGVFeGlzdHNXKGZvbnRGYWxs
YmFjay5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSkpCiAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQgYi9U
b29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CmluZGV4IGIyNDkwMDg5OGIzZmM1YWY4
OWM0OTAzMzgwYzNmZDdjMWRjMGQ3MDUuLmQ5Y2VhOGY1ODFmNmIzMDFkMjkzNWQ1ZGI0NWIwNzc5
NjlkNGMwZGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dApAQCAtMTg4LDcgKzE4OCwx
NCBAQCBzZXQoVGVzdFdURl9TT1VSQ0VTCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMv
V1RGL1dvcmtlclBvb2wuY3BwCiApCiAKLSMgRklYTUU6IFRlc3RzL1dURi9SdW5Mb29wLmNwcCBp
cyBtaXNzaW5nIGJlY2F1c2UgaXQgZG9lc24ndCB3b3JrIGZvciBXaW5kb3dzLgorIyBGSVhNRTog
TWFrZSB0aGVzZSB3b3JrIG9uIFdpbmRvd3MgdG9vLgoraWYgKE5PVCBXSU4zMikKKyAgICBsaXN0
KEFQUEVORCBUZXN0V1RGX1NPVVJDRVMKKyAgICAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVz
dHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCisgICAgICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3Rz
L1dURi9SdW5Mb29wLmNwcAorICAgICkKK2VuZGlmICgpCisKICMgRklYTUU6IFBsYXRmb3JtLXNw
ZWNpZmljIHNvdXJjZXMgaW4gVGVzdHMvV1RGIGFyZSBub3QgaW5jbHVkZWQgaW4gVGVzdFdURl9T
T1VSQ0VTLgogCiBXRUJLSVRfSU5DTFVERV9DT05GSUdfRklMRVNfSUZfRVhJU1RTKCkKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1HVEsuY21ha2UgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IGMzNGZhZTA3Y2YzYzZiMGEzOWMzOTlm
ZWUzMmNkMjVjM2EwYWE3ZjQuLmNlODIxZTYxYjA1NjQzNWIyZWVlZTVlMGU1NmJhMjM1NzcyNTg4
NWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1HVEsuY21ha2UKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtOTMsNyArOTMsNiBA
QCBhZGRfZXhlY3V0YWJsZShUZXN0V2ViQ29yZQogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rl
c3RzL1dlYkNvcmUvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcAogICAgICR7VEVTVFdFQktJVEFQ
SV9ESVJ9L1Rlc3RzL1dlYkNvcmUvRE5TLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rl
c3RzL1dlYkNvcmUvRmlsZU1vbml0b3IuY3BwCi0gICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVz
dHMvV2ViQ29yZS9GaWxlU3lzdGVtLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3Rz
L1dlYkNvcmUvZ3N0cmVhbWVyL0dzdE1hcHBlZEJ1ZmZlci5jcHAKICAgICAke1RFU1RXRUJLSVRB
UElfRElSfS9UZXN0cy9XZWJDb3JlL2dzdHJlYW1lci9HU3RyZWFtZXJUZXN0LmNwcAogICAgICR7
VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUvR3JpZFBvc2l0aW9uLmNwcApkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUpTQ09ubHkuY21ha2UgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1BsYXRmb3JtSlNDT25seS5jbWFrZQppbmRleCBhM2ZhMmRhOTU1ZDVhMzlj
MWMzOTY4MGMyMWU4Y2RlNmU4ZmI1YzgwLi5iNTU2OThiYmZiZjk3MzNhYzA4ZTM2OTM1YTk4YmIy
YjY5ZWUwYjdmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtSlNDT25s
eS5jbWFrZQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtSlNDT25seS5jbWFrZQpA
QCAtMjEsNyArMjEsMyBAQCBlbmRpZiAoKQogc2V0KHRlc3RfbWFpbl9TT1VSQ0VTCiAgICAgJHtU
RVNUV0VCS0lUQVBJX0RJUn0vZ2VuZXJpYy9tYWluLmNwcAogKQotCi1saXN0KEFQUEVORCBUZXN0
V1RGX1NPVVJDRVMKLSAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvUnVuTG9vcC5j
cHAKLSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1QbGF5U3RhdGlv
bi5jbWFrZSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1QbGF5U3RhdGlvbi5jbWFrZQpp
bmRleCA5ZjFhMmE2NGQ1MTg0MDRkYTk4NmU2NjUxMjcwZjc4OGEwNWQ4ZTZjLi5mMWZjYjA0MWM3
NWIwNzE1ZjBhMzJmYmQ0NDBlYWM0ZTAxMWM0MTc5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1BsYXRmb3JtUGxheVN0YXRpb24uY21ha2UKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9QbGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtlCkBAIC0xNCw1ICsxNCw0IEBAIHNldCh0ZXN0X21h
aW5fU09VUkNFUwogCiBsaXN0KEFQUEVORCBUZXN0V1RGX1NPVVJDRVMKICAgICAke1RFU1RXRUJL
SVRBUElfRElSfS9nZW5lcmljL1V0aWxpdGllc0dlbmVyaWMuY3BwCi0gICAgJHtURVNUV0VCS0lU
QVBJX0RJUn0vVGVzdHMvV1RGL1J1bkxvb3AuY3BwCiApCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1BsYXRmb3JtV1BFLmNtYWtlIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9y
bVdQRS5jbWFrZQppbmRleCBiNjg3NzU5OGQ4NzdkZTZjOGRhODZiNGViNTdjYzg2ZmYwYTJmN2Vm
Li40MjY3ZGEyMGQwNzBjNDdiYzgxZTQ2ZWMyYjdmMmQxM2MwNzk5ZDc2IDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtV1BFLmNtYWtlCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvUGxhdGZvcm1XUEUuY21ha2UKQEAgLTYwLDcgKzYwLDYgQEAgYWRkX2V4ZWN1dGFibGUo
VGVzdFdlYkNvcmUKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9nbGliL1V0aWxpdGllc0dMaWIu
Y3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHNDb250cm9sbGVyLmNwcAogICAgICR7
VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUvRmlsZU1vbml0b3IuY3BwCi0gICAgJHtU
RVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV2ViQ29yZS9GaWxlU3lzdGVtLmNwcAogICAgICR7VEVT
VFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUvZ3N0cmVhbWVyL0dzdE1hcHBlZEJ1ZmZlci5j
cHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL2dzdHJlYW1lci9HU3Ry
ZWFtZXJUZXN0LmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUvSFRN
TFBhcnNlcklkaW9tcy5jcHAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdl
YktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggN2ExMDcyYWNkYWEy
YzJhYTUwN2NkYjJmYzI5NzA4MTA4NDVjM2YwYS4uZjY1MjY4ZTVmZDNiNDFkMzZiNmZjNDZkNWY3
ZWIyZmMxZDFlMmMwOCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQyNyw3ICs0MjcsNiBA
QAogCQk3QzgzRTA0QzFEMEE2NDE4MDBGRUJDRjMgLyogV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEODlEMDM4MUM0
RURCMkEwMDA0MEEwNCAvKiBXZWJDb3JlTlNVUkxTZXNzaW9uLm1tICovOyB9OwogCQk3QzgzRTA0
RDFEMEE2NDE4MDBGRUJDRjMgLyogREZBQ29tYmluZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjYwQkE1NzgxQjFEMkU3QjAwNEZBMDdDIC8qIERG
QUNvbWJpbmVyLmNwcCAqLzsgfTsKIAkJN0M4M0UwNEUxRDBBNjQxODAwRkVCQ0YzIC8qIERGQU1p
bmltaXplci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyNkY2RTFFRjFBREM3NDlCMDBERTY5NkIgLyogREZBTWluaW1pemVyLmNwcCAqLzsgfTsKLQkJ
N0M4M0UwNEYxRDBBNjQxODAwRkVCQ0YzIC8qIEZpbGVTeXN0ZW0uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5NzNCNUExQUYyMjg2QTAwNkM3QjM2
IC8qIEZpbGVTeXN0ZW0uY3BwICovOyB9OwogCQk3QzgzRTA1MDFEMEE2NDE4MDBGRUJDRjMgLyog
SFRNTFBhcnNlcklkaW9tcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4M0I4OEEzMzFDODAwNTZEMDBCQjI0MTggLyogSFRNTFBhcnNlcklkaW9tcy5j
cHAgKi87IH07CiAJCTdDODNFMDUxMUQwQTY0MTgwMEZFQkNGMyAvKiBQYXJzZWRDb250ZW50UmFu
Z2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Qy
MjVDMDcxQzQ1QTY5MjAwMTQwNzYxIC8qIFBhcnNlZENvbnRlbnRSYW5nZS5jcHAgKi87IH07CiAJ
CTdDODNFMDUyMUQwQTY0MTgwMEZFQkNGMyAvKiBTaGFyZWRCdWZmZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5NzNCNUMxQUYyMjg3NTAwNkM3
QjM2IC8qIFNoYXJlZEJ1ZmZlci5jcHAgKi87IH07CkBAIC02ODksNiArNjg4LDcgQEAKIAkJQTFD
NEZCNzMxQkFDRDFDQTAwMzc0MkQwIC8qIHBhZ2VzLnBhZ2VzIGluIENvcHkgUmVzb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQzRGQjcyMUJBQ0QxQjcwMDM3NDJE
MCAvKiBwYWdlcy5wYWdlcyAqLzsgfTsKIAkJQTFERjc0MzIxQzQxQjY1ODAwQTJGNEQwIC8qIEFs
d2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEExREY3NDMwMUM0MUI2NTgwMEEyRjREMCAvKiBBbHdheXNSZXZh
bGlkYXRlZFVSTFNjaGVtZXMubW0gKi87IH07CiAJCUExRUMxMTg4MUY0MjU0MTIwMEQwMTQ2RSAv
KiBQcmV2aWV3TG9hZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEExRUMxMTg3MUY0MjU0MTIwMEQwMTQ2RSAvKiBQcmV2aWV3TG9hZGVyLmNwcCAq
LzsgfTsKKwkJQTMxMDgyNzIyMUYyOTZGRjAwQzI4Qjk3IC8qIEZpbGVTeXN0ZW0uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTMxMDgyNzEyMUYyOTZF
QzAwQzI4Qjk3IC8qIEZpbGVTeXN0ZW0uY3BwICovOyB9OwogCQlBNTdBMzRGMjE2QUY2QjJCMDBD
MjUwMUYgLyogUGFnZVZpc2liaWxpdHlTdGF0ZVdpdGhXaW5kb3dDaGFuZ2VzLmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3QTM0RjEx
NkFGNjlFMjAwQzI1MDFGIC8qIFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlcy5o
dG1sICovOyB9OwogCQlBNTdENTRGMzFGMzM4QzM2MDBBOTdBQTcgLyogTmV2ZXJEZXN0cm95ZWQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3RDU0
RjIxRjMzOEMzNjAwQTk3QUE3IC8qIE5ldmVyRGVzdHJveWVkLmNwcCAqLzsgfTsKIAkJQTU3RDU0
RjYxRjMzOTVEMDAwQTk3QUE3IC8qIExvZ2dlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTdENTRGNDFGMzM5NUQwMDBBOTdBQTcgLyogTG9nZ2Vy
LmNwcCAqLzsgfTsKQEAgLTE1MjAsNyArMTUyMCw2IEBACiAJCTQxMzVGQjgzMjAxMUZBQTMwMDMz
MjEzOSAvKiBJbmplY3RJbnRlcm5hbHNfQnVuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IEluamVjdEludGVybmFsc19CdW5kbGUuY3BwOyBwYXRoID0gVGVzdHMv
SW5qZWN0SW50ZXJuYWxzX0J1bmRsZS5jcHA7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsK
IAkJNDEzNUZCODYyMDExRkFCRjAwMzMyMTM5IC8qIGxpYldlYkNvcmVUZXN0U3VwcG9ydC5keWxp
YiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBp
bGVkLm1hY2gtby5keWxpYiI7IHBhdGggPSBsaWJXZWJDb3JlVGVzdFN1cHBvcnQuZHlsaWI7IHNv
dXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTQxODgyRjAyMjEwMTBBNzAwMDJG
RjI4OCAvKiBQcm9jZXNzUHJlV2FybWluZy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFByb2Nlc3NQcmVXYXJtaW5nLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk0MTk3M0I1QTFBRjIyODZBMDA2QzdCMzYgLyogRmlsZVN5c3RlbS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxlU3lzdGVtLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE5NzNCNUMxQUYyMjg3NTAwNkM3QjM2IC8qIFNoYXJlZEJ1
ZmZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFyZWRCdWZm
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NDJCQkY2ODFDOTFDQUQ5MDAx
NzA4N0YgLyogUmVmTG9nZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFJlZkxvZ2dlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0MzNBMzk1
MjA4MDQ0MTMwMDkxRUQ1NyAvKiBTeW5jaHJvbm91c1RpbWVvdXRUZXN0cy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFN5bmNocm9ub3VzVGltZW91dFRlc3RzLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTkxNyw2ICsxOTE2LDcgQEAKIAkJQTFE
Rjc0MzAxQzQxQjY1ODAwQTJGNEQwIC8qIEFsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lcy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFsd2F5c1JldmFsaWRhdGVk
VVJMU2NoZW1lcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFFQzExODcxRjQy
NTQxMjAwRDAxNDZFIC8qIFByZXZpZXdMb2FkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJl
dmlld0xvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExRkRGRDJFMTlD
Mjg4QkIwMDUxNDhBNCAvKiBXS0ltYWdlQ3JlYXRlQ0dJbWFnZUNyYXNoLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLSW1hZ2VDcmVhdGVDR0ltYWdlQ3Jhc2guY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMzEwODI3MTIxRjI5NkVDMDBDMjhCOTcg
LyogRmlsZVN5c3RlbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBG
aWxlU3lzdGVtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU3QTM0RUYxNkFG
Njc3MjAwQzI1MDFGIC8qIFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlcy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBhZ2VWaXNpYmlsaXR5U3Rh
dGVXaXRoV2luZG93Q2hhbmdlcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU3
QTM0RjExNkFGNjlFMjAwQzI1MDFGIC8qIFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hh
bmdlcy5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gUGFnZVZpc2liaWxpdHlTdGF0
ZVdpdGhXaW5kb3dDaGFuZ2VzLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1
N0Q1NEYyMUYzMzhDMzYwMEE5N0FBNyAvKiBOZXZlckRlc3Ryb3llZC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBOZXZlckRlc3Ryb3llZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0yNjc3LDcgKzI2NzcsNiBAQAogCQkJCTU3OTY1MUU2MjE2QkZENTMwMDZFQkZFNSAvKiBGaWRv
SGlkTWVzc2FnZVRlc3QuY3BwICovLAogCQkJCTU3MkI0MDM1MjE3NkEwMjkwMDBBRDQzRSAvKiBG
aWRvVGVzdERhdGEuaCAqLywKIAkJCQk3QTMyRDc0OTFGMDIxNTE1MDAxNjJDNDQgLyogRmlsZU1v
bml0b3IuY3BwICovLAotCQkJCTQxOTczQjVBMUFGMjI4NkEwMDZDN0IzNiAvKiBGaWxlU3lzdGVt
LmNwcCAqLywKIAkJCQk3QTkwOUE3MDFEODc3NDc1MDA3RTEwRjggLyogRmxvYXRQb2ludC5jcHAg
Ki8sCiAJCQkJN0E5MDlBNzExRDg3NzQ3NTAwN0UxMEY4IC8qIEZsb2F0UmVjdC5jcHAgKi8sCiAJ
CQkJN0E5MDlBNzIxRDg3NzQ3NTAwN0UxMEY4IC8qIEZsb2F0U2l6ZS5jcHAgKi8sCkBAIC0zMTg3
LDYgKzMxODYsNyBAQAogCQkJCUU0QTc1N0QzMTc4QUVBNUIwMEI1RDdBNCAvKiBEZXF1ZS5jcHAg
Ki8sCiAJCQkJMUFGN0IyMUQxRDZDRDEyRTAwOEMxMjZDIC8qIEVudW1UcmFpdHMuY3BwICovLAog
CQkJCUFEN0M0MzRDMUREMkE1NDcwMDI2ODg4QiAvKiBFeHBlY3RlZC5jcHAgKi8sCisJCQkJQTMx
MDgyNzEyMUYyOTZFQzAwQzI4Qjk3IC8qIEZpbGVTeXN0ZW0uY3BwICovLAogCQkJCTkzMTBDRDM2
MUVGNzA4RkIwMDUwRkZFMCAvKiBGdW5jdGlvbi5jcHAgKi8sCiAJCQkJODNEQjc5NjcxRUY2M0Iz
QzAwQkZBNUU1IC8qIEZ1bmN0aW9uLmNwcCAqLywKIAkJCQk3QTM4RDdFNTFDNzUyRDVGMDA0RjE1
N0QgLyogSGFzaENvdW50ZWRTZXQuY3BwICovLApAQCAtMzc5NSw2ICszNzk1LDcgQEAKIAkJCQk3
QzgzREVBRDFEMEE1OTBDMDBGRUJDRjMgLyogRGVxdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MUFGN0IyMUYxRDZDRDE0RDAwOEMxMjZDIC8qIEVudW1UcmFpdHMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQUQ3QzQzNEQxREQyQTU0RTAwMjY4ODhCIC8qIEV4cGVjdGVkLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCUEzMTA4MjcyMjFGMjk2RkYwMEMyOEI5NyAvKiBGaWxlU3lzdGVtLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTkzMTBDRDM4MUVGNzA4RkIwMDUwRkZFMCAvKiBGdW5jdGlvbi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk2QkZEMjk0QzFENUU2QzFEMDA4RUM5NjggLyogSGFzaENvdW50
ZWRTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzRDYzMUQxRkNCNzYyMDAwMzJFQ0Q2IC8q
IEhhc2hlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTM5OTgsNyArMzk5OSw2IEBACiAJCQkJN0ND
RTdFRjExQTQxMUFFNjAwNDQ3QzRDIC8qIEZhaWxlZExvYWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNTc5NjUxRTcyMTZCRkRFRDAwNkVCRkU1IC8qIEZpZG9IaWRNZXNzYWdlVGVzdC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk3QTMyRDc0QTFGMDIxNTE1MDAxNjJDNDQgLyogRmlsZU1vbml0b3Iu
Y3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJN0M4M0UwNEYxRDBBNjQxODAwRkVCQ0YzIC8qIEZpbGVT
eXN0ZW0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFRjMxQTQxMUFFNjAwNDQ3QzRDIC8q
IEZpbmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0UwQkIxRDBBNjUwMDAwRkVCQ0YzIC8q
IEZpbmRJblBhZ2UubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VGNDFBNDExQUU2MDA0NDdD
NEMgLyogRmluZE1hdGNoZXMubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDU3ZGY2MTQyOTdmMGEyMzcy
Mzk1Yzc2YmY0YzU5MTVhNTc1NzVmYQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCkBAIC0wLDAgKzEsMTQ4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIlRlc3QuaCIKKyNpbmNsdWRlIDx3
dGYvRmlsZU1ldGFkYXRhLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRl
IDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMuaD4KKworbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitjb25zdCBjaGFyKiBGaWxlU3lzdGVtVGVzdERhdGEg
PSAiVGhpcyBpcyBhIHRlc3QiOworCisvLyBGSVhNRTogUmVmYWN0b3IgRmlsZVN5c3RlbVRlc3Qg
YW5kIFNoYXJlZEJ1ZmZlclRlc3QgYXMgYSBzaW5nbGUgY2xhc3MuCitjbGFzcyBGaWxlU3lzdGVt
VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK3B1YmxpYzoKKyAgICB2b2lkIFNldFVwKCkg
b3ZlcnJpZGUKKyAgICB7CisgICAgICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKKwor
ICAgICAgICAvLyBjcmVhdGUgdGVtcCBmaWxlCisgICAgICAgIEZpbGVTeXN0ZW06OlBsYXRmb3Jt
RmlsZUhhbmRsZSBoYW5kbGU7CisgICAgICAgIG1fdGVtcEZpbGVQYXRoID0gRmlsZVN5c3RlbTo6
b3BlblRlbXBvcmFyeUZpbGUoInRlbXBUZXN0RmlsZSIsIGhhbmRsZSk7CisgICAgICAgIEZpbGVT
eXN0ZW06OndyaXRlVG9GaWxlKGhhbmRsZSwgRmlsZVN5c3RlbVRlc3REYXRhLCBzdHJsZW4oRmls
ZVN5c3RlbVRlc3REYXRhKSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUp
OworCisgICAgICAgIG1fdGVtcEZpbGVTeW1saW5rUGF0aCA9IG1fdGVtcEZpbGVQYXRoICsgIi1z
eW1saW5rIjsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y3JlYXRlU3ltYm9saWNMaW5rKG1fdGVtcEZp
bGVQYXRoLCBtX3RlbXBGaWxlU3ltbGlua1BhdGgpOworCisgICAgICAgIG1fdGVtcEVtcHR5Rmls
ZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcEVtcHR5VGVzdEZpbGUi
LCBoYW5kbGUpOworICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKKworICAg
ICAgICBtX3NwYWNlQ29udGFpbmluZ0ZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFy
eUZpbGUoInRlbXAgRW1wdHkgVGVzdCBGaWxlIiwgaGFuZGxlKTsKKyAgICAgICAgRmlsZVN5c3Rl
bTo6Y2xvc2VGaWxlKGhhbmRsZSk7CisKKyAgICAgICAgbV9iYW5nQ29udGFpbmluZ0ZpbGVQYXRo
ID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoInRlbXAhRW1wdHkhVGVzdCFGaWxlIiwg
aGFuZGxlKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CisKKyAgICAg
ICAgbV9xdW90ZUNvbnRhaW5pbmdGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlG
aWxlKCJ0ZW1wXCJFbXB0eVwiVGVzdEZpbGUiLCBoYW5kbGUpOworICAgICAgICBGaWxlU3lzdGVt
OjpjbG9zZUZpbGUoaGFuZGxlKTsKKyAgICB9CisKKyAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJp
ZGUKKyAgICB7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV90ZW1wRmlsZVBhdGgp
OworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fdGVtcEZpbGVTeW1saW5rUGF0aCk7
CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV90ZW1wRW1wdHlGaWxlUGF0aCk7Cisg
ICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9zcGFjZUNvbnRhaW5pbmdGaWxlUGF0aCk7
CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9iYW5nQ29udGFpbmluZ0ZpbGVQYXRo
KTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX3F1b3RlQ29udGFpbmluZ0ZpbGVQ
YXRoKTsKKyAgICB9CisKKyAgICBjb25zdCBTdHJpbmcmIHRlbXBGaWxlUGF0aCgpIHsgcmV0dXJu
IG1fdGVtcEZpbGVQYXRoOyB9CisgICAgY29uc3QgU3RyaW5nJiB0ZW1wRmlsZVN5bWxpbmtQYXRo
KCkgeyByZXR1cm4gbV90ZW1wRmlsZVN5bWxpbmtQYXRoOyB9CisgICAgY29uc3QgU3RyaW5nJiB0
ZW1wRW1wdHlGaWxlUGF0aCgpIHsgcmV0dXJuIG1fdGVtcEVtcHR5RmlsZVBhdGg7IH0KKyAgICBj
b25zdCBTdHJpbmcmIHNwYWNlQ29udGFpbmluZ0ZpbGVQYXRoKCkgeyByZXR1cm4gbV9zcGFjZUNv
bnRhaW5pbmdGaWxlUGF0aDsgfQorICAgIGNvbnN0IFN0cmluZyYgYmFuZ0NvbnRhaW5pbmdGaWxl
UGF0aCgpIHsgcmV0dXJuIG1fYmFuZ0NvbnRhaW5pbmdGaWxlUGF0aDsgfQorICAgIGNvbnN0IFN0
cmluZyYgcXVvdGVDb250YWluaW5nRmlsZVBhdGgoKSB7IHJldHVybiBtX3F1b3RlQ29udGFpbmlu
Z0ZpbGVQYXRoOyB9CisKK3ByaXZhdGU6CisgICAgU3RyaW5nIG1fdGVtcEZpbGVQYXRoOworICAg
IFN0cmluZyBtX3RlbXBGaWxlU3ltbGlua1BhdGg7CisgICAgU3RyaW5nIG1fdGVtcEVtcHR5Rmls
ZVBhdGg7CisgICAgU3RyaW5nIG1fc3BhY2VDb250YWluaW5nRmlsZVBhdGg7CisgICAgU3RyaW5n
IG1fYmFuZ0NvbnRhaW5pbmdGaWxlUGF0aDsKKyAgICBTdHJpbmcgbV9xdW90ZUNvbnRhaW5pbmdG
aWxlUGF0aDsKK307CisKK1RFU1RfRihGaWxlU3lzdGVtVGVzdCwgTWFwcGluZ01pc3NpbmdGaWxl
KQoreworICAgIGJvb2wgc3VjY2VzczsKKyAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBt
YXBwZWRGaWxlRGF0YShTdHJpbmcoIm5vdF9leGlzdGluZ19maWxlIiksIHN1Y2Nlc3MpOworICAg
IEVYUEVDVF9GQUxTRShzdWNjZXNzKTsKKyAgICBFWFBFQ1RfVFJVRSghbWFwcGVkRmlsZURhdGEp
OworfQorCitURVNUX0YoRmlsZVN5c3RlbVRlc3QsIE1hcHBpbmdFeGlzdGluZ0ZpbGUpCit7Cisg
ICAgYm9vbCBzdWNjZXNzOworICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZp
bGVEYXRhKHRlbXBGaWxlUGF0aCgpLCBzdWNjZXNzKTsKKyAgICBFWFBFQ1RfVFJVRShzdWNjZXNz
KTsKKyAgICBFWFBFQ1RfVFJVRSghIW1hcHBlZEZpbGVEYXRhKTsKKyAgICBFWFBFQ1RfVFJVRSht
YXBwZWRGaWxlRGF0YS5zaXplKCkgPT0gc3RybGVuKEZpbGVTeXN0ZW1UZXN0RGF0YSkpOworICAg
IEVYUEVDVF9UUlVFKHN0cm5zdHIoRmlsZVN5c3RlbVRlc3REYXRhLCBzdGF0aWNfY2FzdDxjb25z
dCBjaGFyKj4obWFwcGVkRmlsZURhdGEuZGF0YSgpKSwgbWFwcGVkRmlsZURhdGEuc2l6ZSgpKSk7
Cit9CisKK1RFU1RfRihGaWxlU3lzdGVtVGVzdCwgTWFwcGluZ0V4aXN0aW5nRW1wdHlGaWxlKQor
eworICAgIGJvb2wgc3VjY2VzczsKKyAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBw
ZWRGaWxlRGF0YSh0ZW1wRW1wdHlGaWxlUGF0aCgpLCBzdWNjZXNzKTsKKyAgICBFWFBFQ1RfVFJV
RShzdWNjZXNzKTsKKyAgICBFWFBFQ1RfVFJVRSghbWFwcGVkRmlsZURhdGEpOworfQorCitURVNU
X0YoRmlsZVN5c3RlbVRlc3QsIEZpbGVzSGF2ZVNhbWVWb2x1bWUpCit7CisgICAgRVhQRUNUX1RS
VUUoRmlsZVN5c3RlbTo6ZmlsZXNIYXZlU2FtZVZvbHVtZSh0ZW1wRmlsZVBhdGgoKSwgc3BhY2VD
b250YWluaW5nRmlsZVBhdGgoKSkpOworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVz
SGF2ZVNhbWVWb2x1bWUoc3BhY2VDb250YWluaW5nRmlsZVBhdGgoKSwgYmFuZ0NvbnRhaW5pbmdG
aWxlUGF0aCgpKSk7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZXNIYXZlU2FtZVZv
bHVtZShiYW5nQ29udGFpbmluZ0ZpbGVQYXRoKCksIHF1b3RlQ29udGFpbmluZ0ZpbGVQYXRoKCkp
KTsKK30KKworVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBHZXRGaWxlTWV0YWRhdGFTeW1saW5rKQor
eworICAgIGF1dG8gc3ltbGlua01ldGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhKHRl
bXBGaWxlU3ltbGlua1BhdGgoKSk7CisgICAgQVNTRVJUX1RSVUUoc3ltbGlua01ldGFkYXRhLmhh
c1ZhbHVlKCkpOworICAgIEVYUEVDVF9UUlVFKHN5bWxpbmtNZXRhZGF0YS52YWx1ZSgpLnR5cGUg
PT0gRmlsZU1ldGFkYXRhOjpUeXBlOjpTeW1ib2xpY0xpbmspOworICAgIEVYUEVDVF9GQUxTRShz
dGF0aWNfY2FzdDxzaXplX3Q+KHN5bWxpbmtNZXRhZGF0YS52YWx1ZSgpLmxlbmd0aCkgPT0gc3Ry
bGVuKEZpbGVTeXN0ZW1UZXN0RGF0YSkpOworCisgICAgYXV0byB0YXJnZXRNZXRhZGF0YSA9IEZp
bGVTeXN0ZW06OmZpbGVNZXRhZGF0YUZvbGxvd2luZ1N5bWxpbmtzKHRlbXBGaWxlU3ltbGlua1Bh
dGgoKSk7CisgICAgQVNTRVJUX1RSVUUodGFyZ2V0TWV0YWRhdGEuaGFzVmFsdWUoKSk7CisgICAg
RVhQRUNUX1RSVUUodGFyZ2V0TWV0YWRhdGEudmFsdWUoKS50eXBlID09IEZpbGVNZXRhZGF0YTo6
VHlwZTo6RmlsZSk7CisgICAgRVhQRUNUX0VRKHN0cmxlbihGaWxlU3lzdGVtVGVzdERhdGEpLCBz
dGF0aWNfY2FzdDxzaXplX3Q+KHRhcmdldE1ldGFkYXRhLnZhbHVlKCkubGVuZ3RoKSk7Cit9CisK
K1RFU1RfRihGaWxlU3lzdGVtVGVzdCwgVW5pY29kZURpcmVjdG9yeU5hbWUpCit7CisgICAgU3Ry
aW5nIHBhdGggPSBTdHJpbmc6OmZyb21VVEY4KCIvdGVzdC9hXHUwMzA4bG8vdGVzdC50eHQiKTsK
KyAgICBTdHJpbmcgZGlyZWN0b3J5TmFtZSA9IEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUocGF0
aCk7CisgICAgU3RyaW5nIGV4cGVjdGVkRGlyZWN0b3J5TmFtZSA9IFN0cmluZzo6ZnJvbVVURjgo
Ii90ZXN0L2FcdTAzMDhsbyIpOworICAgIEVYUEVDVF9UUlVFKGV4cGVjdGVkRGlyZWN0b3J5TmFt
ZSA9PSBkaXJlY3RvcnlOYW1lKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRvci5jcHAKaW5kZXggNWYxZGM4YjJlNGQ1MjRkMzUyNjgw
NGJkNmNkOWNlOThhMzcxMWZlOC4uZTAwMmRmMWVmMDk0ZjViM2YwMGQxNmU5YzZiZTZkNDlkNWU2
YWYyNCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVN
b25pdG9yLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZU1v
bml0b3IuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiVGVzdC5oIgogI2luY2x1ZGUg
IldURlN0cmluZ1V0aWxpdGllcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZU1vbml0b3IuaD4K
LSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3Rl
bS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3Au
aD4KICNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9GaWxlU3lzdGVtLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9GaWxlU3lzdGVtLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NzY2MjUwMjUzMDk3MjdlYTYwNWNiNTJjZmM5ZWNkNGIzM2U3Nzg3NS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvRmlsZVN5c3RlbS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTAgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRlICJUZXN0LmgiCi0jaW5j
bHVkZSA8V2ViQ29yZS9GaWxlTWV0YWRhdGEuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0
ZW0uaD4KLSNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgotI2luY2x1ZGUgPHd0Zi9TdHJpbmdF
eHRyYXMuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBUZXN0V2Vi
S2l0QVBJIHsKLQotY29uc3QgY2hhciogRmlsZVN5c3RlbVRlc3REYXRhID0gIlRoaXMgaXMgYSB0
ZXN0IjsKLQotLy8gRklYTUU6IFJlZmFjdG9yIEZpbGVTeXN0ZW1UZXN0IGFuZCBTaGFyZWRCdWZm
ZXJUZXN0IGFzIGEgc2luZ2xlIGNsYXNzLgotY2xhc3MgRmlsZVN5c3RlbVRlc3QgOiBwdWJsaWMg
dGVzdGluZzo6VGVzdCB7Ci1wdWJsaWM6Ci0gICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCi0gICAg
ewotICAgICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7Ci0gICAgICAgIAotICAgICAg
ICAvLyBjcmVhdGUgdGVtcCBmaWxlCi0gICAgICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhh
bmRsZSBoYW5kbGU7Ci0gICAgICAgIG1fdGVtcEZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRl
bXBvcmFyeUZpbGUoInRlbXBUZXN0RmlsZSIsIGhhbmRsZSk7Ci0gICAgICAgIEZpbGVTeXN0ZW06
OndyaXRlVG9GaWxlKGhhbmRsZSwgRmlsZVN5c3RlbVRlc3REYXRhLCBzdHJsZW4oRmlsZVN5c3Rl
bVRlc3REYXRhKSk7Ci0gICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUpOwotCi0g
ICAgICAgIG1fdGVtcEZpbGVTeW1saW5rUGF0aCA9IG1fdGVtcEZpbGVQYXRoICsgIi1zeW1saW5r
IjsKLSAgICAgICAgRmlsZVN5c3RlbTo6Y3JlYXRlU3ltYm9saWNMaW5rKG1fdGVtcEZpbGVQYXRo
LCBtX3RlbXBGaWxlU3ltbGlua1BhdGgpOwotCi0gICAgICAgIG1fdGVtcEVtcHR5RmlsZVBhdGgg
PSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcEVtcHR5VGVzdEZpbGUiLCBoYW5k
bGUpOwotICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKLQotICAgICAgICBt
X3NwYWNlQ29udGFpbmluZ0ZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUo
InRlbXAgRW1wdHkgVGVzdCBGaWxlIiwgaGFuZGxlKTsKLSAgICAgICAgRmlsZVN5c3RlbTo6Y2xv
c2VGaWxlKGhhbmRsZSk7Ci0KLSAgICAgICAgbV9iYW5nQ29udGFpbmluZ0ZpbGVQYXRoID0gRmls
ZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoInRlbXAhRW1wdHkhVGVzdCFGaWxlIiwgaGFuZGxl
KTsKLSAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7Ci0KLSAgICAgICAgbV9x
dW90ZUNvbnRhaW5pbmdGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0
ZW1wXCJFbXB0eVwiVGVzdEZpbGUiLCBoYW5kbGUpOwotICAgICAgICBGaWxlU3lzdGVtOjpjbG9z
ZUZpbGUoaGFuZGxlKTsKLSAgICB9Ci0KLSAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKLSAg
ICB7Ci0gICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV90ZW1wRmlsZVBhdGgpOwotICAg
ICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fdGVtcEZpbGVTeW1saW5rUGF0aCk7Ci0gICAg
ICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV90ZW1wRW1wdHlGaWxlUGF0aCk7Ci0gICAgICAg
IEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9zcGFjZUNvbnRhaW5pbmdGaWxlUGF0aCk7Ci0gICAg
ICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9iYW5nQ29udGFpbmluZ0ZpbGVQYXRoKTsKLSAg
ICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX3F1b3RlQ29udGFpbmluZ0ZpbGVQYXRoKTsK
LSAgICB9Ci0KLSAgICBjb25zdCBTdHJpbmcmIHRlbXBGaWxlUGF0aCgpIHsgcmV0dXJuIG1fdGVt
cEZpbGVQYXRoOyB9Ci0gICAgY29uc3QgU3RyaW5nJiB0ZW1wRmlsZVN5bWxpbmtQYXRoKCkgeyBy
ZXR1cm4gbV90ZW1wRmlsZVN5bWxpbmtQYXRoOyB9Ci0gICAgY29uc3QgU3RyaW5nJiB0ZW1wRW1w
dHlGaWxlUGF0aCgpIHsgcmV0dXJuIG1fdGVtcEVtcHR5RmlsZVBhdGg7IH0KLSAgICBjb25zdCBT
dHJpbmcmIHNwYWNlQ29udGFpbmluZ0ZpbGVQYXRoKCkgeyByZXR1cm4gbV9zcGFjZUNvbnRhaW5p
bmdGaWxlUGF0aDsgfQotICAgIGNvbnN0IFN0cmluZyYgYmFuZ0NvbnRhaW5pbmdGaWxlUGF0aCgp
IHsgcmV0dXJuIG1fYmFuZ0NvbnRhaW5pbmdGaWxlUGF0aDsgfQotICAgIGNvbnN0IFN0cmluZyYg
cXVvdGVDb250YWluaW5nRmlsZVBhdGgoKSB7IHJldHVybiBtX3F1b3RlQ29udGFpbmluZ0ZpbGVQ
YXRoOyB9Ci0KLXByaXZhdGU6Ci0gICAgU3RyaW5nIG1fdGVtcEZpbGVQYXRoOwotICAgIFN0cmlu
ZyBtX3RlbXBGaWxlU3ltbGlua1BhdGg7Ci0gICAgU3RyaW5nIG1fdGVtcEVtcHR5RmlsZVBhdGg7
Ci0gICAgU3RyaW5nIG1fc3BhY2VDb250YWluaW5nRmlsZVBhdGg7Ci0gICAgU3RyaW5nIG1fYmFu
Z0NvbnRhaW5pbmdGaWxlUGF0aDsKLSAgICBTdHJpbmcgbV9xdW90ZUNvbnRhaW5pbmdGaWxlUGF0
aDsKLX07Ci0KLVRFU1RfRihGaWxlU3lzdGVtVGVzdCwgTWFwcGluZ01pc3NpbmdGaWxlKQotewot
ICAgIGJvb2wgc3VjY2VzczsKLSAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRG
aWxlRGF0YShTdHJpbmcoIm5vdF9leGlzdGluZ19maWxlIiksIHN1Y2Nlc3MpOwotICAgIEVYUEVD
VF9GQUxTRShzdWNjZXNzKTsKLSAgICBFWFBFQ1RfVFJVRSghbWFwcGVkRmlsZURhdGEpOwotfQot
Ci1URVNUX0YoRmlsZVN5c3RlbVRlc3QsIE1hcHBpbmdFeGlzdGluZ0ZpbGUpCi17Ci0gICAgYm9v
bCBzdWNjZXNzOwotICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRh
KHRlbXBGaWxlUGF0aCgpLCBzdWNjZXNzKTsKLSAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKLSAg
ICBFWFBFQ1RfVFJVRSghIW1hcHBlZEZpbGVEYXRhKTsKLSAgICBFWFBFQ1RfVFJVRShtYXBwZWRG
aWxlRGF0YS5zaXplKCkgPT0gc3RybGVuKEZpbGVTeXN0ZW1UZXN0RGF0YSkpOwotICAgIEVYUEVD
VF9UUlVFKHN0cm5zdHIoRmlsZVN5c3RlbVRlc3REYXRhLCBzdGF0aWNfY2FzdDxjb25zdCBjaGFy
Kj4obWFwcGVkRmlsZURhdGEuZGF0YSgpKSwgbWFwcGVkRmlsZURhdGEuc2l6ZSgpKSk7Ci19Ci0K
LVRFU1RfRihGaWxlU3lzdGVtVGVzdCwgTWFwcGluZ0V4aXN0aW5nRW1wdHlGaWxlKQotewotICAg
IGJvb2wgc3VjY2VzczsKLSAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxl
RGF0YSh0ZW1wRW1wdHlGaWxlUGF0aCgpLCBzdWNjZXNzKTsKLSAgICBFWFBFQ1RfVFJVRShzdWNj
ZXNzKTsKLSAgICBFWFBFQ1RfVFJVRSghbWFwcGVkRmlsZURhdGEpOwotfQotCi1URVNUX0YoRmls
ZVN5c3RlbVRlc3QsIEZpbGVzSGF2ZVNhbWVWb2x1bWUpCi17Ci0gICAgRVhQRUNUX1RSVUUoRmls
ZVN5c3RlbTo6ZmlsZXNIYXZlU2FtZVZvbHVtZSh0ZW1wRmlsZVBhdGgoKSwgc3BhY2VDb250YWlu
aW5nRmlsZVBhdGgoKSkpOwotICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVzSGF2ZVNh
bWVWb2x1bWUoc3BhY2VDb250YWluaW5nRmlsZVBhdGgoKSwgYmFuZ0NvbnRhaW5pbmdGaWxlUGF0
aCgpKSk7Ci0gICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZXNIYXZlU2FtZVZvbHVtZShi
YW5nQ29udGFpbmluZ0ZpbGVQYXRoKCksIHF1b3RlQ29udGFpbmluZ0ZpbGVQYXRoKCkpKTsKLX0K
LQotVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBHZXRGaWxlTWV0YWRhdGFTeW1saW5rKQotewotICAg
IGF1dG8gc3ltbGlua01ldGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhKHRlbXBGaWxl
U3ltbGlua1BhdGgoKSk7Ci0gICAgQVNTRVJUX1RSVUUoc3ltbGlua01ldGFkYXRhLmhhc1ZhbHVl
KCkpOwotICAgIEVYUEVDVF9UUlVFKHN5bWxpbmtNZXRhZGF0YS52YWx1ZSgpLnR5cGUgPT0gRmls
ZU1ldGFkYXRhOjpUeXBlOjpTeW1ib2xpY0xpbmspOwotICAgIEVYUEVDVF9GQUxTRShzdGF0aWNf
Y2FzdDxzaXplX3Q+KHN5bWxpbmtNZXRhZGF0YS52YWx1ZSgpLmxlbmd0aCkgPT0gc3RybGVuKEZp
bGVTeXN0ZW1UZXN0RGF0YSkpOwotCi0gICAgYXV0byB0YXJnZXRNZXRhZGF0YSA9IEZpbGVTeXN0
ZW06OmZpbGVNZXRhZGF0YUZvbGxvd2luZ1N5bWxpbmtzKHRlbXBGaWxlU3ltbGlua1BhdGgoKSk7
Ci0gICAgQVNTRVJUX1RSVUUodGFyZ2V0TWV0YWRhdGEuaGFzVmFsdWUoKSk7Ci0gICAgRVhQRUNU
X1RSVUUodGFyZ2V0TWV0YWRhdGEudmFsdWUoKS50eXBlID09IEZpbGVNZXRhZGF0YTo6VHlwZTo6
RmlsZSk7Ci0gICAgRVhQRUNUX0VRKHN0cmxlbihGaWxlU3lzdGVtVGVzdERhdGEpLCBzdGF0aWNf
Y2FzdDxzaXplX3Q+KHRhcmdldE1ldGFkYXRhLnZhbHVlKCkubGVuZ3RoKSk7Ci19Ci0KLVRFU1Rf
RihGaWxlU3lzdGVtVGVzdCwgVW5pY29kZURpcmVjdG9yeU5hbWUpCi17Ci0gICAgU3RyaW5nIHBh
dGggPSBTdHJpbmc6OmZyb21VVEY4KCIvdGVzdC9hXHUwMzA4bG8vdGVzdC50eHQiKTsKLSAgICBT
dHJpbmcgZGlyZWN0b3J5TmFtZSA9IEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUocGF0aCk7Ci0g
ICAgU3RyaW5nIGV4cGVjdGVkRGlyZWN0b3J5TmFtZSA9IFN0cmluZzo6ZnJvbVVURjgoIi90ZXN0
L2FcdTAzMDhsbyIpOwotICAgIEVYUEVDVF9UUlVFKGV4cGVjdGVkRGlyZWN0b3J5TmFtZSA9PSBk
aXJlY3RvcnlOYW1lKTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9TZWN1cml0eU9yaWdpbi5jcHAKaW5kZXggZGE1ZjRmZjU4OThhOWYwOWM4Yjgz
OTVhNTVkZTczOGYxNjhjOTA5Zi4uYTQxYWI0YmNhMzcxZDQ1ZGU4Y2I0NTg2ODViYzk3NGUzMGY0
MDZmMyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NlY3Vy
aXR5T3JpZ2luLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2Vj
dXJpdHlPcmlnaW4uY3BwCkBAIC0yNiw4ICsyNiw4IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJXVEZTdHJpbmdVdGlsaXRpZXMuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVT
eXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CisjaW5jbHVkZSA8
d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL1NoYXJlZEJ1ZmZlclRlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL1NoYXJlZEJ1ZmZlclRlc3QuY3BwCmluZGV4IDhmZTM1NjdjMWUxMTM2OTFkODViN2M1NWEx
Zjk2NjU5ZGU5ZDFmMjQuLjliOGIxM2E3NWQ1MmZmOTUxZWFkMTgxODVkNTZjMzc5MWIyZDdiZWQg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZm
ZXJUZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVk
QnVmZmVyVGVzdC5jcHAKQEAgLTI2LDExICsyNiw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiU2hhcmVkQnVmZmVyVGVzdC5oIgogCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lz
dGVtLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTWFpblRo
cmVhZC5oPgogCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQogbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEkgewogCiB2b2lkIFNoYXJlZEJ1ZmZlclRlc3Q6OlNldFVwKCkKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9EYXRhYmFzZVRyYWNrZXJUZXN0
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL0RhdGFiYXNlVHJh
Y2tlclRlc3QubW0KaW5kZXggNmEzYzcwMjgwYTRlZGUwMDkxMDJlZTk5NzZiMzY3YzI2YWI3ZmVl
Ny4uMjIxNzE1NmY2ZTU2OTE1YTc1ZDQ0ODg0ZWFkNTE3MTlhN2M1MjkxMSAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL0RhdGFiYXNlVHJhY2tlclRl
c3QubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL0RhdGFi
YXNlVHJhY2tlclRlc3QubW0KQEAgLTI2LDExICsyNiwxMSBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogCiAjaW5jbHVkZSA8V2ViQ29yZS9EYXRhYmFzZVRyYWNrZXIuaD4KLSNpbmNsdWRlIDxXZWJD
b3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL09yaWdpbkxvY2suaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1NRTGl0ZURhdGFiYXNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVT
dGF0ZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgorI2lu
Y2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY3VybC9Db29raWVz
LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jdXJsL0Nvb2tpZXMuY3Bw
CmluZGV4IDFiOGQ3ZmMzY2RlNTAyOTllMzBhZDZjNmQ4Y2ExNjI3ZjIzOTBjMWYuLmI0MGIwZDVh
MGE1ZTVmYjVmNDkxOWEzZGEyYzJmZWQ2ZmNiYzFjNGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jdXJsL0Nvb2tpZXMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jdXJsL0Nvb2tpZXMuY3BwCkBAIC0yOSw4ICsyOSw4IEBA
CiAKICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZUphckRCLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9D
b29raWVVdGlsLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8
bWVtb3J5PgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0Rvd25sb2FkLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9E
b3dubG9hZC5tbQppbmRleCA2MGNjOTNiMzQwZGQ2ODA5NDFjNDFhMmE1YWEwYmE5MjNiNWFlYzY0
Li42ODFiMDJjYTljODdkYWVjMzcyNjIyNDYxN2QxYzU5MjA4OGQ3YTZjIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0KQEAgLTMzLDcg
KzMzLDYgQEAKICNpbXBvcnQgIlRlc3QuaCIKICNpbXBvcnQgIlRlc3RQcm90b2NvbC5oIgogI2lt
cG9ydCAiVGVzdFdLV2ViVmlldy5oIgotI2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAj
aW1wb3J0IDxXZWJLaXQvX1dLRG93bmxvYWQuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tEb3dubG9h
ZERlbGVnYXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRl
Lmg+CkBAIC00MSw2ICs0MCw3IEBACiAjaW1wb3J0IDxXZWJLaXQvV0tVSURlbGVnYXRlUHJpdmF0
ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlldy5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24uaD4KKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0
IDx3dGYvTWFpblRocmVhZC5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC05NCwxMCArOTQsMTAgQEAgSUdOT1JFX1dBUk5JTkdT
X0VORAogICAgIEVYUEVDVF9UUlVFKGhhc1JlY2VpdmVkUmVzcG9uc2UpOwogICAgIEVYUEVDVF9F
UShfZG93bmxvYWQsIGRvd25sb2FkKTsKIAotICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OlBsYXRm
b3JtRmlsZUhhbmRsZSBmaWxlSGFuZGxlOwotICAgIF9kZXN0aW5hdGlvblBhdGggPSBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiVGVzdFdlYktpdEFQSSIsIGZpbGVIYW5k
bGUpOwotICAgIEVYUEVDVF9UUlVFKGZpbGVIYW5kbGUgIT0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6
aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7Ci0gICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6Y2xv
c2VGaWxlKGZpbGVIYW5kbGUpOworICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBm
aWxlSGFuZGxlOworICAgIF9kZXN0aW5hdGlvblBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9y
YXJ5RmlsZSgiVGVzdFdlYktpdEFQSSIsIGZpbGVIYW5kbGUpOworICAgIEVYUEVDVF9UUlVFKGZp
bGVIYW5kbGUgIT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7CisgICAg
RmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOwogCiAgICAgKmFsbG93T3ZlcndyaXRl
ID0gWUVTOwogICAgIHJldHVybiBfZGVzdGluYXRpb25QYXRoOwpAQCAtMTA5LDcgKzEwOSw3IEBA
IC0gKHZvaWQpX2Rvd25sb2FkRGlkRmluaXNoOihfV0tEb3dubG9hZCAqKWRvd25sb2FkCiAgICAg
RVhQRUNUX0VRKGV4cGVjdGVkVXNlckluaXRpYXRlZFN0YXRlLCBkb3dubG9hZC53YXNVc2VySW5p
dGlhdGVkKTsKICAgICBFWFBFQ1RfVFJVRShfZXhwZWN0ZWRDb250ZW50TGVuZ3RoID09IE5TVVJM
UmVzcG9uc2VVbmtub3duTGVuZ3RoIHx8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihfZXhwZWN0ZWRD
b250ZW50TGVuZ3RoKSA9PSBfcmVjZWl2ZWRDb250ZW50TGVuZ3RoKTsKICAgICBFWFBFQ1RfVFJV
RShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNvbnRlbnRzRXF1YWxBdFBhdGg6X2Rl
c3RpbmF0aW9uUGF0aCBhbmRQYXRoOltzb3VyY2VVUkwgcGF0aF1dKTsKLSAgICBXZWJDb3JlOjpG
aWxlU3lzdGVtOjpkZWxldGVGaWxlKF9kZXN0aW5hdGlvblBhdGgpOworICAgIEZpbGVTeXN0ZW06
OmRlbGV0ZUZpbGUoX2Rlc3RpbmF0aW9uUGF0aCk7CiAgICAgaXNEb25lID0gdHJ1ZTsKIH0KIApA
QCAtMzk3LDEwICszOTcsMTAgQEAgSUdOT1JFX1dBUk5JTkdTX0VORAogICAgIEVYUEVDVF9UUlVF
KGhhc1JlY2VpdmVkUmVzcG9uc2UpOwogICAgIEVYUEVDVF9FUShfZG93bmxvYWQsIGRvd25sb2Fk
KTsKIAotICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlSGFu
ZGxlOwotICAgIF9kZXN0aW5hdGlvblBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpvcGVuVGVt
cG9yYXJ5RmlsZSgiVGVzdFdlYktpdEFQSSIsIGZpbGVIYW5kbGUpOwotICAgIEVYUEVDVF9UUlVF
KGZpbGVIYW5kbGUgIT0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhh
bmRsZSk7Ci0gICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOwor
ICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlSGFuZGxlOworICAgIF9kZXN0
aW5hdGlvblBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiVGVzdFdlYktpdEFQ
SSIsIGZpbGVIYW5kbGUpOworICAgIEVYUEVDVF9UUlVFKGZpbGVIYW5kbGUgIT0gRmlsZVN5c3Rl
bTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxl
KGZpbGVIYW5kbGUpOwogCiAgICAgKmFsbG93T3ZlcndyaXRlID0gWUVTOwogICAgIHJldHVybiBf
ZGVzdGluYXRpb25QYXRoOwpAQCAtNDE0LDcgKzQxNCw3IEBAIC0gKHZvaWQpX2Rvd25sb2FkRGlk
RmluaXNoOihfV0tEb3dubG9hZCAqKWRvd25sb2FkCiAgICAgTlNTdHJpbmcqIGV4cGVjdGVkQ29u
dGVudCA9IEAie1wieFwiOjQyLFwic1wiOlwiaGVsbG8sIHdvcmxkXCJ9IjsKICAgICBOU0RhdGEq
IGV4cGVjdGVkRGF0YSA9IFtleHBlY3RlZENvbnRlbnQgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4
U3RyaW5nRW5jb2RpbmddOwogICAgIEVYUEVDVF9UUlVFKFtbW05TRmlsZU1hbmFnZXIgZGVmYXVs
dE1hbmFnZXJdIGNvbnRlbnRzQXRQYXRoOl9kZXN0aW5hdGlvblBhdGhdIGlzRXF1YWxUb0RhdGE6
ZXhwZWN0ZWREYXRhXSk7Ci0gICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShfZGVz
dGluYXRpb25QYXRoKTsKKyAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKF9kZXN0aW5hdGlvblBh
dGgpOwogICAgIGlzRG9uZSA9IHRydWU7CiB9CiAKQEAgLTQ1NywxMCArNDU3LDEwIEBAIElHTk9S
RV9XQVJOSU5HU19CRUdJTigiZGVwcmVjYXRlZC1pbXBsZW1lbnRhdGlvbnMiKQogLSAoTlNTdHJp
bmcgKilfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGVjaWRlRGVzdGluYXRpb25X
aXRoU3VnZ2VzdGVkRmlsZW5hbWU6KE5TU3RyaW5nICopZmlsZW5hbWUgYWxsb3dPdmVyd3JpdGU6
KEJPT0wgKilhbGxvd092ZXJ3cml0ZQogSUdOT1JFX1dBUk5JTkdTX0VORAogewotICAgIFdlYkNv
cmU6OkZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlSGFuZGxlOwotICAgIF9kZXN0
aW5hdGlvblBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiVGVz
dFdlYktpdEFQSSIsIGZpbGVIYW5kbGUpOwotICAgIEVYUEVDVF9UUlVFKGZpbGVIYW5kbGUgIT0g
V2ViQ29yZTo6RmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7Ci0gICAgV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOworICAgIEZpbGVTeXN0ZW06
OlBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlSGFuZGxlOworICAgIF9kZXN0aW5hdGlvblBhdGggPSBG
aWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiVGVzdFdlYktpdEFQSSIsIGZpbGVIYW5kbGUp
OworICAgIEVYUEVDVF9UUlVFKGZpbGVIYW5kbGUgIT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRm
b3JtRmlsZUhhbmRsZSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOwog
ICAgICphbGxvd092ZXJ3cml0ZSA9IFlFUzsKICAgICByZXR1cm4gX2Rlc3RpbmF0aW9uUGF0aDsK
IH0KQEAgLTQ4Nyw3ICs0ODcsNyBAQCAtICh2b2lkKV9kb3dubG9hZERpZEZpbmlzaDooX1dLRG93
bmxvYWQgKilkb3dubG9hZAogICAgIGlmIChyZWRpcmVjdENoYWluLmNvdW50ID4gMikKICAgICAg
ICAgRVhQRUNUX1NUUkVRKCJodHRwOi8vcGFzcy8iLCBbcmVkaXJlY3RDaGFpblsyXS5hYnNvbHV0
ZVN0cmluZyBVVEY4U3RyaW5nXSk7CiAKLSAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVG
aWxlKF9kZXN0aW5hdGlvblBhdGgpOworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoX2Rlc3Rp
bmF0aW9uUGF0aCk7CiAgICAgaXNEb25lID0gdHJ1ZTsKIH0KIApAQCAtNjMyLDE3ICs2MzIsMTcg
QEAgLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGVjaWRlRGVzdGlu
YXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUKIHsKICAgICBFWFBFQ1RfVFJVRShbZmlsZW5hbWUg
aGFzU3VmZml4OkAiLnVzZHoiXSk7CiAKLSAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpQbGF0Zm9y
bUZpbGVIYW5kbGUgZmlsZUhhbmRsZTsKLSAgICBfZGVzdGluYXRpb25QYXRoID0gV2ViQ29yZTo6
RmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoZmlsZW5hbWUsIGZpbGVIYW5kbGUpOwotICAg
IEVYUEVDVF9UUlVFKGZpbGVIYW5kbGUgIT0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6aW52YWxpZFBs
YXRmb3JtRmlsZUhhbmRsZSk7Ci0gICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZp
bGVIYW5kbGUpOworICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlSGFuZGxl
OworICAgIF9kZXN0aW5hdGlvblBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZShm
aWxlbmFtZSwgZmlsZUhhbmRsZSk7CisgICAgRVhQRUNUX1RSVUUoZmlsZUhhbmRsZSAhPSBGaWxl
U3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKTsKKyAgICBGaWxlU3lzdGVtOjpjbG9z
ZUZpbGUoZmlsZUhhbmRsZSk7CiAKICAgICBjb21wbGV0aW9uSGFuZGxlcihZRVMsIF9kZXN0aW5h
dGlvblBhdGgpOwogfQogCiAtICh2b2lkKV9kb3dubG9hZERpZEZpbmlzaDooX1dLRG93bmxvYWQg
Kilkb3dubG9hZAogewotICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoX2Rlc3Rp
bmF0aW9uUGF0aCk7CisgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShfZGVzdGluYXRpb25QYXRo
KTsKICAgICBpc0RvbmUgPSB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkUHJvZ3Jlc3MubW0gYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkUHJvZ3Jlc3MubW0KaW5kZXggZjU2MGRm
M2Y0YzQyZTI0ZTY1YjNiZjYyODcxYjVmYWRjMTlhNWY2NS4uM2ViMDNmMDRhMWRkOGE4ZTE3Njc4
M2Q1ZWZmZDQ4MzQ3YTkwZGEwMCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9Eb3dubG9hZFByb2dyZXNzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWRQcm9ncmVzcy5tbQpAQCAtMjgsNyArMjgsNiBA
QAogI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgogI2ltcG9ydCAiVXRpbGl0aWVzLmgiCiAjaW1w
b3J0IDxGb3VuZGF0aW9uL05TUHJvZ3Jlc3MuaD4KLSNpbXBvcnQgPFdlYkNvcmUvRmlsZVN5c3Rl
bS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5oPgogI2lt
cG9ydCA8V2ViS2l0L1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2Vi
S2l0L1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg+CkBAIC0zNyw2ICszNiw3IEBACiAjaW1wb3J0IDxX
ZWJLaXQvX1dLRG93bmxvYWREZWxlZ2F0ZS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU1By
b2dyZXNzU1BJLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KKyNpbXBvcnQgPHd0Zi9GaWxl
U3lzdGVtLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvV2Vha09i
akNQdHIuaD4KIApAQCAtMzgwLDEwICszODAsMTAgQEAgLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rv
d25sb2FkICopZG93bmxvYWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUK
IHsKICAgICBFWFBFQ1RfRVEoZG93bmxvYWQsIG1fZG93bmxvYWQuZ2V0KCkpOwogCi0gICAgV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGVIYW5kbGU7Ci0gICAgUmV0
YWluUHRyPE5TU3RyaW5nPiBwYXRoID0gKE5TU3RyaW5nICopV2ViQ29yZTo6RmlsZVN5c3RlbTo6
b3BlblRlbXBvcmFyeUZpbGUoIlRlc3RXZWJLaXRBUEkiLCBmaWxlSGFuZGxlKTsKLSAgICBFWFBF
Q1RfVFJVRShmaWxlSGFuZGxlICE9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9y
bUZpbGVIYW5kbGUpOwotICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlSGFu
ZGxlKTsKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRsZTsKKyAg
ICBSZXRhaW5QdHI8TlNTdHJpbmc+IHBhdGggPSAoTlNTdHJpbmcgKilGaWxlU3lzdGVtOjpvcGVu
VGVtcG9yYXJ5RmlsZSgiVGVzdFdlYktpdEFQSSIsIGZpbGVIYW5kbGUpOworICAgIEVYUEVDVF9U
UlVFKGZpbGVIYW5kbGUgIT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7
CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOwogCiAgICAgY29tcGxldGlv
bkhhbmRsZXIoWUVTLCBwYXRoLmdldCgpKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvd2luL1BsYXRmb3JtVXRpbGl0aWVzV2luLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
d2luL1BsYXRmb3JtVXRpbGl0aWVzV2luLmNwcAppbmRleCAwNTZiZmY3NzgyOTUyOGIxMjkwZjEy
ZTM5YWIyMzhiMGY2ODY4Yjg2Li4zNWYyMmUyYThiMWJmZTUwYTQ3MDU5MDkxODM0NzIzNjc5YTNk
N2ZkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL3dpbi9QbGF0Zm9ybVV0aWxpdGll
c1dpbi5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS93aW4vUGxhdGZvcm1VdGlsaXRpZXNX
aW4uY3BwCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1VdGlsaXRpZXMuaCIK
IAogI2luY2x1ZGUgPFNobHdhcGkuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4K
KyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaD4KIApAQCAtNDAsMTkgKzQwLDE5
IEBAIHN0YXRpYyBTdHJpbmcgbW9kdWxlRGlyZWN0b3J5KCkKICAgICB3Y2hhcl90IGZpbGVuYW1l
W2J1ZmZlckxlbmd0aF07CiAgICAgYXV0byBsZW4gPSBHZXRNb2R1bGVGaWxlTmFtZShudWxscHRy
LCBmaWxlbmFtZSwgYnVmZmVyTGVuZ3RoKTsKICAgICBBU1NFUlQobGVuID4gMCk7Ci0gICAgcmV0
dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUod2NoYXJUb1N0cmluZyhmaWxl
bmFtZSwgbGVuKSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUod2NoYXJU
b1N0cmluZyhmaWxlbmFtZSwgbGVuKSk7CiB9CiAKIFdLU3RyaW5nUmVmIGNyZWF0ZUluamVjdGVk
QnVuZGxlUGF0aCgpCiB7Ci0gICAgYXV0byBwYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1vZHVsZURpcmVjdG9yeSgpLCBTdHJpbmcoTCJUZXN0V2Vi
S2l0QVBJSW5qZWN0ZWRCdW5kbGUuZGxsIikpOworICAgIGF1dG8gcGF0aCA9IEZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtb2R1bGVEaXJlY3RvcnkoKSwgU3RyaW5nKEwiVGVz
dFdlYktpdEFQSUluamVjdGVkQnVuZGxlLmRsbCIpKTsKICAgICByZXR1cm4gV0tTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcocGF0aC51dGY4KCkuZGF0YSgpKTsKIH0KIAogV0tVUkxSZWYgY3Jl
YXRlVVJMRm9yUmVzb3VyY2UoY29uc3QgY2hhciogcmVzb3VyY2UsIGNvbnN0IGNoYXIqIGV4dGVu
c2lvbikKIHsKICAgICBTdHJpbmcgZmlsZW5hbWUgPSBTdHJpbmc6OmZvcm1hdCgiLi5cXC4uXFwu
LlxcVG9vbHNcXFRlc3RXZWJLaXRBUElcXFRlc3RzXFxXZWJLaXRcXCVzLiVzIiwgcmVzb3VyY2Us
IGV4dGVuc2lvbik7Ci0gICAgYXV0byB1cmwgPSBVUkw6OmZpbGVVUkxXaXRoRmlsZVN5c3RlbVBh
dGgoV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1vZHVsZURp
cmVjdG9yeSgpLCBmaWxlbmFtZSkpOworICAgIGF1dG8gdXJsID0gVVJMOjpmaWxlVVJMV2l0aEZp
bGVTeXN0ZW1QYXRoKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtb2R1bGVE
aXJlY3RvcnkoKSwgZmlsZW5hbWUpKTsKICAgICByZXR1cm4gV0tVUkxDcmVhdGVXaXRoVVRGOENT
dHJpbmcodXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359913</attachid>
            <date>2019-01-23 11:34:52 -0800</date>
            <delta_ts>2019-01-23 14:40:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193602-20190123113451.patch</filename>
            <type>text/plain</type>
            <size>437087</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwMzM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGI1ZTE4MjY3NWJlMWE1MmUyMDFiZjE5
ZTc0YjM2YjI3MTQ1NTQwZTkuLjE4MzI3MTljZGFjZjY0N2FhYjdjYmM1YjUzY2E5ZTQxODBmYTQ5
ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTktMDEtMjMgIFJvc3MgS2lyc2xpbmcgIDxyb3Nz
LmtpcnNsaW5nQHNvbnkuY29tPgorCisgICAgICAgIE1vdmUgRmlsZVN5c3RlbSB0byBXVEYKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzYwMgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV1RGLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0OgorICAg
ICAgICAqIHd0Zi9GaWxlTWV0YWRhdGEuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0ZpbGVNZXRhZGF0YS5oLgorICAgICAgICAqIHd0Zi9GaWxlU3lzdGVtLmNwcDogUmVu
YW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwLgorICAgICAg
ICAqIHd0Zi9GaWxlU3lzdGVtLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9GaWxlU3lzdGVtLmguCisgICAgICAgICogd3RmL1BsYXRmb3JtR1RLLmNtYWtlOgorICAgICAg
ICAqIHd0Zi9QbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1QbGF5U3Rh
dGlvbi5jbWFrZToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1XUEUuY21ha2U6CisgICAgICAgICog
d3RmL1BsYXRmb3JtV2luLmNtYWtlOgorICAgICAgICAqIHd0Zi9jZi9GaWxlU3lzdGVtQ0YuY3Bw
OiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvRmlsZVN5c3RlbUNGLmNw
cC4KKyAgICAgICAgKiB3dGYvY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tOiBSZW5hbWVkIGZyb20g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tLgorICAgICAg
ICAqIHd0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwLgorICAgICAgICAqIHd0Zi9tYWMv
RmlsZVN5c3RlbU1hYy5tbTogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9GaWxlU3lzdGVtTWFjLm1tLgorICAgICAgICAqIHd0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVgu
Y3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3Rl
bVBPU0lYLmNwcC4KKyAgICAgICAgKiB3dGYvc3BpL21hYy9NZXRhZGF0YVNQSS5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvbWFjL01ldGFkYXRhU1BJLmguCisgICAg
ICAgICogd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2luLmNwcC4KKyAgICAgICAgKiB3dGYvd2luL1Bh
dGhXYWxrZXIuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bh
dGhXYWxrZXIuY3BwLgorICAgICAgICAqIHd0Zi93aW4vUGF0aFdhbGtlci5oOiBSZW5hbWVkIGZy
b20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BhdGhXYWxrZXIuaC4KKwogMjAxOS0wMS0y
MyAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFN3aXRjaCBy
ZW1haW5pbmcgQ29yZU1lZGlhIHNvZnQtbGlua2luZyBpbiBXZWJLaXQgb3ZlciB0byBDb3JlTWVk
aWFTb2Z0TGluay57Y3BwLGh9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTFhZjRjYmRlNmE2ZTE1OWZhODU0ZDQ1
NTY5MzU0NzFhNGUzZGM2Ni4uYzlmZGU4NDQwMDMyMmJmMTZjMmY4YjE1Y2QyZjc5YzIwODNmODE3
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgxIEBACisyMDE5LTAxLTIzICBSb3NzIEtpcnNsaW5n
ICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KKworICAgICAgICBNb3ZlIEZpbGVTeXN0ZW0gdG8g
V1RGCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM2
MDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNlc3Npb24uY3BwOgorICAgICAgICAqIE1vZHVs
ZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2VudHJp
ZXNhcGkvRmlsZVN5c3RlbUVudHJ5LmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZUlkZW50aWZpZXIuY3BwOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9TUUxpdGVJREJUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5jcHA6CisgICAgICAgICogTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
ZGF0YWJhc2UvT3JpZ2luTG9jay5jcHA6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9P
cmlnaW5Mb2NrLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9jb2NvYS9EYXRhYmFz
ZU1hbmFnZXJDb2NvYS5tbToKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAg
KiBQbGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtV2luLmNtYWtl
OgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0dDQ29udHJvbGxlci5jcHA6CisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlckl0
ZW0uY3BwOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1t
OgorICAgICAgICAqIGZpbGVhcGkvRmlsZS5jcHA6CisgICAgICAgICogZmlsZWFwaS9GaWxlQ29j
b2EubW06CisgICAgICAgICogaHRtbC9GaWxlSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKiBodG1s
L0ZpbGVMaXN0Q3JlYXRvci5jcHA6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVIb3N0LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgICogcGFn
ZS9TZWN1cml0eU9yaWdpbi5jcHA6CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEu
Y3BwOgorICAgICAgICAqIHBsYXRmb3JtL0ZpbGVIYW5kbGUuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9GaWxlU3RyZWFtLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlU3RyZWFtLmg6CisgICAg
ICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vU291cmNl
c0dMaWIudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL0ZpbGVNb25pdG9yQ29jb2EubW06
CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9GaWxlTW9uaXRvckdMaWIuY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24u
bW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vz
c2lvbkFWU3RyZWFtU2Vzc2lvbi5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLm1tOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9p
b3MvUXVpY2tMb29rLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQ
YXN0ZWJvYXJkLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9CbG9iUmVnaXN0cnlJbXBsLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JS
ZXNvdXJjZUhhbmRsZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNw
cDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29h
Lm1tOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRm9ybURhdGFTdHJlYW0uaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9tYWMvQmxvYkRhdGFGaWxlUmVmZXJlbmNlTWFjLm1tOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9oeXBo
ZW4vSHlwaGVuYXRpb25MaWJIeXBoZW4uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TZWFy
Y2hQb3B1cE1lbnVEQi5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcDoK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsuY3BwOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJUaGVtZVdpbi5jcHA6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHA6CisKIDIwMTktMDEtMjMgIFphbGFuIEJ1anRhcyAg
PHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtCRkNdIGNvbXB1dGVTdGF0aWNQb3Np
dGlvbiBzaG91bGQgaW5jbHVkZSBlc3RpbWF0ZWQgY29tcHV0YXRpb24gYXMgd2VsbC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
Q2hhbmdlTG9nCmluZGV4IDFkNjRkY2IwOTdiMGE2NzAzMjYzZTQ5MDRlYjQ4MTAyMGI5OTU3NDIu
Ljg1ZDEzMzYyNWVlYzdmY2FjNzExMWY3YjRlNDE1OGQyOTE0ZGUyYzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE5LTAxLTIzICBSb3NzIEtpcnNsaW5nICA8cm9zcy5r
aXJzbGluZ0Bzb255LmNvbT4KKworICAgICAgICBNb3ZlIEZpbGVTeXN0ZW0gdG8gV1RGCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM2MDIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBBTC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhbC9QbGF0Zm9ybU1hYy5jbWFrZToKKwog
MjAxOS0wMS0yMyAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAg
IFN3aXRjaCByZW1haW5pbmcgQ29yZU1lZGlhIHNvZnQtbGlua2luZyBpbiBXZWJLaXQgb3ZlciB0
byBDb3JlTWVkaWFTb2Z0TGluay57Y3BwLGh9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGIxZTllMzdhZjNiOGUxYTMw
OGYwZDdlMTM1YTI3Y2VmMmIyODBhNTUuLjI2MzU1ZTIyMjlhYTRiMjA0MTMwNThhNjk4YWVjY2Ji
NWVmNTcxODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODIgQEAKKzIwMTktMDEtMjMgIFJvc3MgS2ly
c2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgorCisgICAgICAgIE1vdmUgRmlsZVN5c3Rl
bSB0byBXVEYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5MzYwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lz
dGVudFN0b3JhZ2UuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFz
a0Jsb2IuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3Bw
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHA6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQmxvYlN0b3JhZ2UuY3BwOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuY3BwOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uY3BwOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uaDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxDb2Nv
YS5tbToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5u
ZWxTb3VwLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVT
dGF0aXN0aWNzLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0
YVRhc2tDb2NvYS5tbToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vz
c2lvbkNvY29hLm1tOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUHJvY2Vz
c01hYy5tbToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291
cC5jcHA6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy91bml4L1BsdWdpblByb2Nlc3NNYWluVW5p
eC5jcHA6CisgICAgICAgICogU2hhcmVkL1BlcnNpc3RlbmN5VXRpbHMuY3BwOgorICAgICAgICAq
IFNoYXJlZC9QbHVnaW5zL05ldHNjYXBlL3VuaXgvTmV0c2NhcGVQbHVnaW5Nb2R1bGVVbml4LmNw
cDoKKyAgICAgICAgKiBTaGFyZWQvUGx1Z2lucy91bml4L1BsdWdpblNlYXJjaFBhdGguY3BwOgor
ICAgICAgICAqIFNoYXJlZC9XZWJNZW1vcnlTYW1wbGVyLmg6CisgICAgICAgICogU2hhcmVkL2ds
aWIvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoR0xpYi5jcHA6CisgICAgICAgICogU2hhcmVkL2lvcy9D
aGlsZFByb2Nlc3NJT1MubW06CisgICAgICAgICogU2hhcmVkL21hYy9DaGlsZFByb2Nlc3NNYWMu
bW06CisgICAgICAgICogU2hhcmVkL21hYy9TYW5kYm94RXh0ZW5zaW9uTWFjLm1tOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHA6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHA6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdEZhdmljb25EYXRhYmFzZS5jcHA6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdEZpbGVDaG9vc2VyUmVxdWVzdC5jcHA6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuY3BwOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvd2luL0FQSVdlYnNpdGVEYXRhU3RvcmVXaW4uY3BwOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQubW06CisgICAgICAgICogVUlQcm9jZXNzL0Nv
Y29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW06CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dl
YlZpZXdJbXBsLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFn
ZS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9CdWJibGV3cmFwTGF1bmNoZXIuY3Bw
OgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9nbGliL1Byb2Nlc3NMYXVuY2hlckdMaWIu
Y3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL2d0ay9QbHVnaW5JbmZvQ2FjaGUuY3Bw
OgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5Qcm9jZXNzUHJveHlNYWMu
bW06CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5JbmZvU3RvcmVVbml4
LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpblByb2Nlc3NQcm94
eVVuaXguY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5
LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFz
ZS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJh
c2VUcmFja2VyLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vi
c2l0ZURhdGFTdG9yZUNvY29hLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNz
UHJveHlHTGliLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dlYkluc3BlY3RvclByb3h5
R3RrLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NQb29sR3RrLmNwcDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRmlsZVVwbG9hZFBhbmVsLm1tOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tOgorICAgICAgICAqIFVJUHJvY2Vz
cy93aW4vV2ViUHJvY2Vzc1Bvb2xXaW4uY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy93aW4vV2Vi
Vmlldy5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL3dwZS9XZWJQcm9jZXNzUG9vbFdQRS5jcHA6
CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRFeHRl
bnNpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL2ds
aWIvSW5qZWN0ZWRCdW5kbGVHbGliLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL01lZGlhQ2Fj
aGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViSW5zcGVjdG9yVUlHdGsuY3BwOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS93aW4vV2ViSW5zcGVjdG9yVUlXaW4uY3BwOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tOgorCiAyMDE5LTAxLTIzICBQ
aGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBD
cmFzaCB3aGVuIGJyb3dzaW5nIGluc3BlY3RvcjovLyB1cmkgd2l0aG91dCBwb3J0IHNldApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L0NoYW5nZUxvZwppbmRleCA4N2ZlOGMzYThjNjE2YTA0NzVkNGFmMzc0Njk0ZDQyNmVjNmZl
Zjg0Li5kZWNmMTc4NWQzZTNmMmViYjFhMjgzMTc0ODA1OTFhMzc3N2U5MWY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE5LTAxLTIzICBSb3NzIEtpcnNsaW5nICA8
cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KKworICAgICAgICBNb3ZlIEZpbGVTeXN0ZW0gdG8gV1RG
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM2MDIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFN0b3Jh
Z2UvU3RvcmFnZUFyZWFTeW5jLmNwcDoKKyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VTeW5jTWFu
YWdlci5jcHA6CisgICAgICAgICogU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHA6CisKIDIwMTkt
MDEtMjIgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBGaXggc29tZSBidWlsZHMgYWZ0ZXIgcjI0MDI5MgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nCmluZGV4IGMwN2Y0MGYyYmFiNWQ4OTFmZmYzODc2ODJhNTRhYTcxOTk1N2QyMjUuLjc2MmRm
OWY4ZGVkNDBlOTdlZWYwNWIzNzg5ZWNiYWM0NDRjMmNlNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxOS0wMS0yMyAgUm9zcyBLaXJzbGluZyAgPHJv
c3Mua2lyc2xpbmdAc29ueS5jb20+CisKKyAgICAgICAgTW92ZSBGaWxlU3lzdGVtIHRvIFdURgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzNjAyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNaXNjL1dl
Yk5TRmlsZU1hbmFnZXJFeHRyYXMubW06CisgICAgICAgICogU3RvcmFnZS9XZWJEYXRhYmFzZVBy
b3ZpZGVyLm1tOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKwogMjAxOS0wMS0yMiAg
QWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIE1v
dmUgTmV0d29ya1N0b3JhZ2VTZXNzaW9uIG93bmVyc2hpcCB0byBOZXR3b3JrUHJvY2VzcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDRhNmM5MDNiYWYwZWUyMWY2ZDg0MTUzNjI4Y2Zj
YWU1ODZlY2QxNWQuLmQ5NDZiYjVkMGU3YzhlMjgyODc3YTRmNDQ0NGRjYjg0NzVkMjFiMTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxOS0wMS0yMyAg
Um9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CisKKyAgICAgICAgTW92ZSBG
aWxlU3lzdGVtIHRvIFdURgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTkzNjAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBQbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKiBQbHVnaW5z
L1BsdWdpblBhY2thZ2UuaDoKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpblN0cmVhbS5oOgorICAg
ICAgICAqIFdlYkFwcGxpY2F0aW9uQ2FjaGUuY3BwOgorICAgICAgICAqIFdlYkRhdGFiYXNlTWFu
YWdlci5jcHA6CisgICAgICAgICogV2ViRG93bmxvYWRDdXJsLmNwcDoKKyAgICAgICAgKiBXZWJQ
cmVmZXJlbmNlcy5jcHA6CisgICAgICAgICogV2ViVmlldy5jcHA6CisKIDIwMTktMDEtMjIgIEFs
ZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBNb3Zl
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiBvd25lcnNoaXAgdG8gTmV0d29ya1Byb2Nlc3MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGEyMjM5NDkwZDExMmRjYTQ2
YTVhYTRiY2RlZDM1ZmRiY2FhZWM5ZTkuLmQwOGM3OWYyYjgzYThlMTNmZWRkYjljYzExOWYzMWEx
YTlmOTc2N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
ODksNiArODksMTEgQEAKIAkJOTM5MzRCRDUxOEExRjE2OTAwRDBENkExIC8qIFN0cmluZ1ZpZXdD
Ri5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5Mzkz
NEJENDE4QTFGMTY5MDBEMEQ2QTEgLyogU3RyaW5nVmlld0NGLmNwcCAqLzsgfTsKIAkJOTNGMTk5
M0UxOUQ3OTU4RDAwQzIzOTBCIC8qIFN0cmluZ1ZpZXcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGMTk5M0QxOUQ3OTU4RDAwQzIzOTBCIC8qIFN0
cmluZ1ZpZXcuY3BwICovOyB9OwogCQk5QkM3MEYwNTE3NkMzNzlEMDAxMDFERUMgLyogQXRvbWlj
U3RyaW5nVGFibGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOUJDNzBGMDQxNzZDMzc5RDAwMTAxREVDIC8qIEF0b21pY1N0cmluZ1RhYmxlLmNwcCAq
LzsgfTsKKwkJQTMzMUQ5NUIyMUYyNDk5MjAwOUYwMkFBIC8qIEZpbGVTeXN0ZW0uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTMzMUQ5NUEyMUYyNDk5
MjAwOUYwMkFBIC8qIEZpbGVTeXN0ZW0uY3BwICovOyB9OworCQlBMzMxRDk1RDIxRjI0OUU0MDA5
RjAyQUEgLyogRmlsZVN5c3RlbUNGLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEEzMzFEOTVDMjFGMjQ5RTQwMDlGMDJBQSAvKiBGaWxlU3lzdGVtQ0Yu
Y3BwICovOyB9OworCQlBMzMxRDk1RjIxRjI0OUY2MDA5RjAyQUEgLyogRmlsZVN5c3RlbUNvY29h
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTMzMUQ5
NUUyMUYyNDlGNjAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1Db2NvYS5tbSAqLzsgfTsKKwkJQTMzMUQ5
NjEyMUYyNEEwQTAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1NYWMubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMzMxRDk2MDIxRjI0QTBBMDA5RjAyQUEgLyog
RmlsZVN5c3RlbU1hYy5tbSAqLzsgfTsKKwkJQTMzMUQ5NjcyMUYyNEFCRDAwOUYwMkFBIC8qIEZp
bGVTeXN0ZW1QT1NJWC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMzMxRDk2NjIxRjI0QUJEMDA5RjAyQUEgLyogRmlsZVN5c3RlbVBPU0lYLmNwcCAq
LzsgfTsKIAkJQTNCNzI1RUM5ODc0NDZBRDkzRjFBNDQwIC8qIFJhbmRvbURldmljZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDOEY1OTdDQTJBNTc0
MTdGQkFCOTJGRDYgLyogUmFuZG9tRGV2aWNlLmNwcCAqLzsgfTsKIAkJQTNFNEREOTMxRjNBODAz
NDAwREVEMEI0IC8qIFRleHRTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTNFNEREOTExRjNBODAzNDAwREVEMEI0IC8qIFRleHRTdHJlYW0u
Y3BwICovOyB9OwogCQlBNUJBMTVGMzE4MjQzM0E5MDBBODJFNjkgLyogU3RyaW5nQ29jb2EubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUJBMTVGMjE4
MjQzM0E5MDBBODJFNjkgLyogU3RyaW5nQ29jb2EubW0gKi87IH07CkBAIC00MzAsOCArNDM1LDE2
IEBACiAJCTlDNjdDNTQyNTg5MzQ4RTI4NUI0OTY5OSAvKiBJbmRleGVkQ29udGFpbmVySXRlcmF0
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5kZXhlZENvbnRhaW5lckl0
ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzMEQ0MTJDMUYwREUwQkEw
MEI3MTk1NCAvKiBTb2Z0TGlua2luZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTb2Z0TGlua2luZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMzBENDEyRDFG
MERFMTNGMDBCNzE5NTQgLyogU29mdExpbmtpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU29mdExpbmtpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTMz
MUQ5NTgyMUYyNDk3ODAwOUYwMkFBIC8qIEZpbGVNZXRhZGF0YS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBGaWxlTWV0YWRhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQTMzMUQ5NTkyMUYyNDk5MjAwOUYwMkFBIC8qIEZpbGVTeXN0ZW0uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmlsZVN5c3RlbS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlBMzMxRDk1QTIxRjI0OTkyMDA5RjAyQUEgLyogRmlsZVN5c3RlbS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxlU3lzdGVtLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTMzMUQ5NUMyMUYyNDlFNDAwOUYwMkFBIC8qIEZpbGVT
eXN0ZW1DRi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxlU3lz
dGVtQ0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMzMxRDk1RTIxRjI0OUY2
MDA5RjAyQUEgLyogRmlsZVN5c3RlbUNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gRmlsZVN5c3RlbUNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBMzMxRDk2MDIxRjI0QTBBMDA5RjAyQUEgLyogRmlsZVN5c3RlbU1hYy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZpbGVTeXN0ZW1NYWMubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEzMzFEOTY2MjFGMjRBQkQwMDlGMDJBQSAvKiBG
aWxlU3lzdGVtUE9TSVguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
RmlsZVN5c3RlbVBPU0lYLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTM2RTE2
RjcyMTZGRjgyODAwOEREODdFIC8qIFdURlNlbWFwaG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXVEZTZW1hcGhvcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQTNBQjZFNkExRjNFMUFENjAwOUMxNEIxIC8qIFZhbHVlVG9TdHJpbmcuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmFsdWVUb1N0cmluZy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlBM0QyNzNCOTIxRjJFRTkxMDA4NjY5NzEgLyogTWV0YWRhdGFTUEkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWV0YWRhdGFTUEkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTNFNEREOTExRjNBODAzNDAwREVEMEI0IC8qIFRleHRTdHJl
YW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGV4dFN0cmVhbS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzRTRERDkyMUYzQTgwMzQwMERFRDBC
NCAvKiBUZXh0U3RyZWFtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRT
dHJlYW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTUwOThBRkYxQzE2OUUwNzAw
MDg3Nzk3IC8qIFNhbmRib3hTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U2FuZGJveFNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzE3LDYgKzczMCw3
IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQk1QzFGMDU5MTIxNjQzNTZCMDAzOTMwMkMgLyogQ0ZV
UkxFeHRyYXMuY3BwICovLAogCQkJCTVDMUYwNTkyMjE2NDM1NkIwMDM5MzAyQyAvKiBDRlVSTEV4
dHJhcy5oICovLAorCQkJCUEzMzFEOTVDMjFGMjQ5RTQwMDlGMDJBQSAvKiBGaWxlU3lzdGVtQ0Yu
Y3BwICovLAogCQkJCUMyQkNGQzQxMUY2MUQ2MTYwMEM5MjIyQyAvKiBMYW5ndWFnZUNGLmNwcCAq
LywKIAkJCQkyQ0RFRDBFRTE4MTE1QzM4MDA0REJBNzAgLyogUnVuTG9vcENGLmNwcCAqLywKIAkJ
CQkxQUZERTY0NzE5NTIwMUMzMDBDNDhGRkEgLyogVHlwZUNhc3RzQ0YuaCAqLywKQEAgLTc3NCw2
ICs3ODgsMjIgQEAKIAkJCW5hbWUgPSBTb3VyY2U7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OwogCQl9OworCQlBMzMxRDk2MzIxRjI0QTJFMDA5RjAyQUEgLyogcG9zaXggKi8gPSB7CisJCQlp
c2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUEzMzFEOTY2MjFGMjRBQkQwMDlG
MDJBQSAvKiBGaWxlU3lzdGVtUE9TSVguY3BwICovLAorCQkJKTsKKwkJCXBhdGggPSBwb3NpeDsK
KwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCUEzRDI3M0I4MjFGMkVFN0IwMDg2
Njk3MSAvKiBtYWMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAor
CQkJCUEzRDI3M0I5MjFGMkVFOTEwMDg2Njk3MSAvKiBNZXRhZGF0YVNQSS5oICovLAorCQkJKTsK
KwkJCXBhdGggPSBtYWM7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQlBNUJB
MTVGMTE4MjQzMzlGMDBBODJFNjkgLyogY29jb2EgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKApAQCAtODA3LDYgKzgzNyw3IEBACiAJCQkJMUZBNDdDODcxNTI1MDJE
QTAwNTY4RDFCIC8qIGlvcyAqLywKIAkJCQlBOEE0NzJDNDE1MUE4MjVBMDA0MTIzRkYgLyogbWFj
ICovLAogCQkJCUU0M0E0Njg1MUUyMjhCNTcwMDI3NkIwNSAvKiBwZXJzaXN0ZW5jZSAqLywKKwkJ
CQlBMzMxRDk2MzIxRjI0QTJFMDA5RjAyQUEgLyogcG9zaXggKi8sCiAJCQkJQ0VGNDgyMEMxOURB
MzQ3NjAwQ0MwNEI4IC8qIHNwaSAqLywKIAkJCQlBOEE0NzMxQjE1MUE4MjVCMDA0MTIzRkYgLyog
dGV4dCAqLywKIAkJCQlBOEE0NzMzOTE1MUE4MjVCMDA0MTIzRkYgLyogdGhyZWFkcyAqLywKQEAg
LTg5NCw4ICs5MjUsMTEgQEAKIAkJCQlBOEE0NzJBMjE1MUE4MjVBMDA0MTIzRkYgLyogRmFzdE1h
bGxvYy5oICovLAogCQkJCTBGNzlDN0MzMUU3MzUxMTgwMEVCMzREMSAvKiBGYXN0VExTLmggKi8s
CiAJCQkJQjM4RkQ3QkMxNjg5NTNFODAwNjVDOTY5IC8qIEZlYXR1cmVEZWZpbmVzLmggKi8sCisJ
CQkJQTMzMUQ5NTgyMUYyNDk3ODAwOUYwMkFBIC8qIEZpbGVNZXRhZGF0YS5oICovLAogCQkJCTBG
OUQzMzVCMTY1REJBNzMwMDVBRDM4NyAvKiBGaWxlUHJpbnRTdHJlYW0uY3BwICovLAogCQkJCTBG
OUQzMzVDMTY1REJBNzMwMDVBRDM4NyAvKiBGaWxlUHJpbnRTdHJlYW0uaCAqLywKKwkJCQlBMzMx
RDk1QTIxRjI0OTkyMDA5RjAyQUEgLyogRmlsZVN5c3RlbS5jcHAgKi8sCisJCQkJQTMzMUQ5NTky
MUYyNDk5MjAwOUYwMkFBIC8qIEZpbGVTeXN0ZW0uaCAqLywKIAkJCQkwRjJCNjZBNTE3QjZCNEY3
MDBBN0FFM0YgLyogRmxpcEJ5dGVzLmggKi8sCiAJCQkJRkU4NkE4NzQxRTU5NDQwMjAwMTExQkJG
IC8qIEZvcmJpZEhlYXBBbGxvY2F0aW9uLmggKi8sCiAJCQkJQThBNDcyQTYxNTFBODI1QTAwNDEy
M0ZGIC8qIEZvcndhcmQuaCAqLywKQEAgLTExOTAsNiArMTIyNCw3IEBACiAJCQljaGlsZHJlbiA9
ICgKIAkJCQkxQTQyOEI4QjFDOEY4OUREMDA1MUU5RUIgLyogQXBwS2l0Q29tcGF0aWJpbGl0eURl
Y2xhcmF0aW9ucy5oICovLAogCQkJCTFBQ0FERDgyMTg4NDQ4MDEwMEQ4QjcxRCAvKiBEZXByZWNh
dGVkU3ltYm9sc1VzZWRCeVNhZmFyaS5tbSAqLywKKwkJCQlBMzMxRDk2MDIxRjI0QTBBMDA5RjAy
QUEgLyogRmlsZVN5c3RlbU1hYy5tbSAqLywKIAkJCQk1MzUzNEYyOTFFQzBFMTBFMDAxNDFCMkYg
LyogTWFjaEV4Y2VwdGlvbnMuZGVmcyAqLywKIAkJCSk7CiAJCQlwYXRoID0gbWFjOwpAQCAtMTMx
Nyw2ICsxMzUyLDcgQEAKIAkJCQlEQ0VFMjFGOTFDRUE3NTJGMDAwQzIzOTYgLyogY2YgKi8sCiAJ
CQkJQ0U0NjUxNkMxOURCMUZCNDAwM0VDQTA1IC8qIGNvY29hICovLAogCQkJCUNFNzNFMDIzMTlE
Q0I3QUIwMDU4MEQ1QyAvKiBkYXJ3aW4gKi8sCisJCQkJQTNEMjczQjgyMUYyRUU3QjAwODY2OTcx
IC8qIG1hYyAqLywKIAkJCSk7CiAJCQlwYXRoID0gc3BpOwogCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKQEAgLTEzNTEsNiArMTM4Nyw3IEBACiAJCQkJRTM4QzQxMjQxRUI0RTA0QzAwNDI5NTdE
IC8qIENQVVRpbWVDb2NvYS5jcHAgKi8sCiAJCQkJMTQzRERFOTcyMEM4QkU5OTAwN0Y3NkZBIC8q
IEVudGl0bGVtZW50cy5oICovLAogCQkJCTE0M0RERTk1MjBDOEJDMzcwMDdGNzZGQSAvKiBFbnRp
dGxlbWVudHMubW0gKi8sCisJCQkJQTMzMUQ5NUUyMUYyNDlGNjAwOUYwMkFBIC8qIEZpbGVTeXN0
ZW1Db2NvYS5tbSAqLywKIAkJCQk3QTZFQkEzMzIwNzQ2QzM0MDA0RjlDNDQgLyogTWFjaFNlbmRS
aWdodC5jcHAgKi8sCiAJCQkJQThBNDcyQzUxNTFBODI1QTAwNDEyM0ZGIC8qIE1haW5UaHJlYWRD
b2NvYS5tbSAqLywKIAkJCQlBREYyQ0U2NTFFMzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9vdHBy
aW50Q29jb2EuY3BwICovLApAQCAtMTQ3Niw2ICsxNTEzLDExIEBACiAJCQkJMEY3QzVGQjYxRDg4
NUNGMjAwNDRGNUUyIC8qIEZhc3RCaXRWZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThB
NDczQzMxNTFBODI1QjAwNDEyM0ZGIC8qIEZhc3RNYWxsb2MuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEY5RDMzNjAxNjVEQkE3MzAwNUFEMzg3IC8qIEZpbGVQcmludFN0cmVhbS5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlBMzMxRDk1QjIxRjI0OTkyMDA5RjAyQUEgLyogRmlsZVN5c3RlbS5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlBMzMxRDk1RDIxRjI0OUU0MDA5RjAyQUEgLyogRmlsZVN5c3Rl
bUNGLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUEzMzFEOTVGMjFGMjQ5RjYwMDlGMDJBQSAvKiBG
aWxlU3lzdGVtQ29jb2EubW0gaW4gU291cmNlcyAqLywKKwkJCQlBMzMxRDk2MTIxRjI0QTBBMDA5
RjAyQUEgLyogRmlsZVN5c3RlbU1hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJCUEzMzFEOTY3MjFG
MjRBQkQwMDlGMDJBQSAvKiBGaWxlU3lzdGVtUE9TSVguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QThBNDczQjUxNTFBODI1QjAwNDEyM0ZGIC8qIGZpeGVkLWR0b2EuY2MgaW4gU291cmNlcyAqLywK
IAkJCQkxQTFEOEI5RTE3MzE4Nzk4MDAxNDFEQTQgLyogRnVuY3Rpb25EaXNwYXRjaGVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGNUJGMTc2MUYyM0Q0OUEwMDI5RDkxRCAvKiBHaWdhY2FnZS5j
cHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMu
dHh0IGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKaW5kZXggY2VlMWNjZTFlNTcxODRk
MTNiZDJjZDUxOWVmNmEyMGRmZmIxYTk2YS4uN2Q4NTgzMzIwZjQ5YzYxMDQwMWM3YjhhYjQ0NjM5
NmQ4OGMxNTBlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKKysr
IGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKQEAgLTYxLDcgKzYxLDkgQEAgc2V0KFdU
Rl9QVUJMSUNfSEVBREVSUwogICAgIEZhc3RNYWxsb2MuaAogICAgIEZhc3RUTFMuaAogICAgIEZl
YXR1cmVEZWZpbmVzLmgKKyAgICBGaWxlTWV0YWRhdGEuaAogICAgIEZpbGVQcmludFN0cmVhbS5o
CisgICAgRmlsZVN5c3RlbS5oCiAgICAgRmxpcEJ5dGVzLmgKICAgICBGb3JiaWRIZWFwQWxsb2Nh
dGlvbi5oCiAgICAgRm9yd2FyZC5oCkBAIC0zNTMsNiArMzU1LDcgQEAgc2V0KFdURl9TT1VSQ0VT
CiAgICAgRmFzdEJpdFZlY3Rvci5jcHAKICAgICBGYXN0TWFsbG9jLmNwcAogICAgIEZpbGVQcmlu
dFN0cmVhbS5jcHAKKyAgICBGaWxlU3lzdGVtLmNwcAogICAgIEZ1bmN0aW9uRGlzcGF0Y2hlci5j
cHAKICAgICBHaWdhY2FnZS5jcHAKICAgICBHbG9iYWxWZXJzaW9uLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvRmlsZU1ldGFkYXRhLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlTWV0YWRh
dGEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wYmI4OGZjODRmOTRhZjRjY2YxYzU4MGUwZDU2YTJiNjU4MTEwZjk4
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvRmlsZU1ldGFkYXRhLmgKQEAgLTAs
MCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0
OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+CisKK25h
bWVzcGFjZSBXVEYgeworCitzdHJ1Y3QgRmlsZU1ldGFkYXRhIHsKKyAgICAvLyBUaGUgbGFzdCBt
b2RpZmljYXRpb24gdGltZSBvZiB0aGUgZmlsZSwgaW4gc2Vjb25kcy4KKyAgICBXYWxsVGltZSBt
b2RpZmljYXRpb25UaW1lOworCisgICAgLy8gVGhlIGxlbmd0aCBvZiB0aGUgZmlsZSBpbiBieXRl
cy4KKyAgICBsb25nIGxvbmcgbGVuZ3RoOworCisgICAgYm9vbCBpc0hpZGRlbjsKKworICAgIGVu
dW0gY2xhc3MgVHlwZSB7IEZpbGUsIERpcmVjdG9yeSwgU3ltYm9saWNMaW5rIH07CisgICAgVHlw
ZSB0eXBlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6RmlsZU1ldGFk
YXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2Uv
V1RGL3d0Zi9GaWxlU3lzdGVtLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMDQxMGE4MDdjMWIxNzFkNWRmYTEz
MzAzYmVmZDgyYjRmN2ZjMjA2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvRmls
ZVN5c3RlbS5jcHAKQEAgLTAsMCArMSwzNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDct
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgorCisjaW5jbHVkZSA8d3RmL0ZpbGVNZXRh
ZGF0YS5oPgorI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KKyNpbmNsdWRlIDx3dGYvU2NvcGUu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nQnVpbGRlci5oPgorCisjaWYgIU9TKFdJTkRPV1MpCisjaW5jbHVkZSA8ZmNudGwuaD4KKyNp
bmNsdWRlIDxzeXMvbW1hbi5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5jbHVkZSA8dW5p
c3RkLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFdURiB7CisKK25hbWVzcGFjZSBGaWxlU3lzdGVt
SW1wbCB7CisKKy8vIFRoZSBmb2xsb3dpbmcgbG93ZXItQVNDSUkgY2hhcmFjdGVycyBuZWVkIGVz
Y2FwaW5nIHRvIGJlIHVzZWQgaW4gYSBmaWxlbmFtZQorLy8gYWNyb3NzIGFsbCBzeXN0ZW1zLCBp
bmNsdWRpbmcgV2luZG93czoKKy8vICAgICAtIFVucHJpbnRhYmxlIEFTQ0lJICgwMC0xRikKKy8v
ICAgICAtIFNwYWNlICAgICAgICAgICAgICgyMCkKKy8vICAgICAtIERvdWJsZSBxdW90ZSAgICAg
ICgyMikKKy8vICAgICAtIFBlcmNlbnQgICAgICAgICAgICgyNSkgKGVzY2FwZWQgYmVjYXVzZSBp
dCBpcyBvdXIgZXNjYXBlIGNoYXJhY3RlcikKKy8vICAgICAtIEFzdGVyaXNrICAgICAgICAgICgy
QSkKKy8vICAgICAtIFNsYXNoICAgICAgICAgICAgICgyRikKKy8vICAgICAtIENvbG9uICAgICAg
ICAgICAgICgzQSkKKy8vICAgICAtIExlc3MtdGhhbiAgICAgICAgICgzQykKKy8vICAgICAtIEdy
ZWF0ZXItdGhhbiAgICAgICgzRSkKKy8vICAgICAtIFF1ZXN0aW9uIE1hcmsgICAgICgzRikKKy8v
ICAgICAtIEJhY2tzbGFzaCAgICAgICAgICg1QykKKy8vICAgICAtIFBpcGUgICAgICAgICAgICAg
ICg3QykKKy8vICAgICAtIERlbGV0ZSAgICAgICAgICAgICg3RikKKworc3RhdGljIGNvbnN0IGJv
b2wgbmVlZHNFc2NhcGluZ1sxMjhdID0geworICAgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUs
ICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgLyogMDAtMDcgKi8KKyAgICB0cnVlLCAgdHJ1
ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIC8qIDA4LTBGICov
CisKKyAgICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAg
dHJ1ZSwgIC8qIDEwLTE3ICovCisgICAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUs
ICB0cnVlLCAgdHJ1ZSwgIHRydWUsICAvKiAxOC0xRiAqLworCisgICAgdHJ1ZSwgIGZhbHNlLCB0
cnVlLCAgZmFsc2UsIGZhbHNlLCB0cnVlLCAgZmFsc2UsIGZhbHNlLCAvKiAyMC0yNyAqLworICAg
IGZhbHNlLCBmYWxzZSwgdHJ1ZSwgIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCAg
LyogMjgtMkYgKi8KKworICAgIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFs
c2UsIGZhbHNlLCBmYWxzZSwgLyogMzAtMzcgKi8KKyAgICBmYWxzZSwgZmFsc2UsIHRydWUsICBm
YWxzZSwgdHJ1ZSwgIGZhbHNlLCB0cnVlLCAgdHJ1ZSwgIC8qIDM4LTNGICovCisKKyAgICBmYWxz
ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIC8qIDQw
LTQ3ICovCisgICAgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFs
c2UsIGZhbHNlLCAvKiA0OC00RiAqLworCisgICAgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2Us
IGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAvKiA1MC01NyAqLworICAgIGZhbHNlLCBmYWxz
ZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCAgZmFsc2UsIGZhbHNlLCBmYWxzZSwgLyogNTgtNUYgKi8K
KworICAgIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBm
YWxzZSwgLyogNjAtNjcgKi8KKyAgICBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2Us
IGZhbHNlLCBmYWxzZSwgZmFsc2UsIC8qIDY4LTZGICovCisKKyAgICBmYWxzZSwgZmFsc2UsIGZh
bHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIC8qIDcwLTc3ICovCisgICAg
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUsICBmYWxzZSwgZmFsc2UsIHRydWUsICAv
KiA3OC03RiAqLworfTsKKworc3RhdGljIGlubGluZSBib29sIHNob3VsZEVzY2FwZVVDaGFyKFVD
aGFyIGNoYXJhY3RlciwgVUNoYXIgcHJldmlvdXNDaGFyYWN0ZXIsIFVDaGFyIG5leHRDaGFyYWN0
ZXIpCit7CisgICAgaWYgKGNoYXJhY3RlciA8PSAxMjcpCisgICAgICAgIHJldHVybiBuZWVkc0Vz
Y2FwaW5nW2NoYXJhY3Rlcl07CisKKyAgICBpZiAoVTE2X0lTX0xFQUQoY2hhcmFjdGVyKSAmJiAh
VTE2X0lTX1RSQUlMKG5leHRDaGFyYWN0ZXIpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAg
IGlmIChVMTZfSVNfVFJBSUwoY2hhcmFjdGVyKSAmJiAhVTE2X0lTX0xFQUQocHJldmlvdXNDaGFy
YWN0ZXIpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKwor
U3RyaW5nIGVuY29kZUZvckZpbGVOYW1lKGNvbnN0IFN0cmluZyYgaW5wdXRTdHJpbmcpCit7Cisg
ICAgdW5zaWduZWQgbGVuZ3RoID0gaW5wdXRTdHJpbmcubGVuZ3RoKCk7CisgICAgaWYgKCFsZW5n
dGgpCisgICAgICAgIHJldHVybiBpbnB1dFN0cmluZzsKKworICAgIFN0cmluZ0J1aWxkZXIgcmVz
dWx0OworICAgIHJlc3VsdC5yZXNlcnZlQ2FwYWNpdHkobGVuZ3RoKTsKKworICAgIFVDaGFyIHBy
ZXZpb3VzQ2hhcmFjdGVyOworICAgIFVDaGFyIGNoYXJhY3RlciA9IDA7CisgICAgVUNoYXIgbmV4
dENoYXJhY3RlciA9IGlucHV0U3RyaW5nWzBdOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBsZW5ndGg7ICsraSkgeworICAgICAgICBwcmV2aW91c0NoYXJhY3RlciA9IGNoYXJhY3RlcjsK
KyAgICAgICAgY2hhcmFjdGVyID0gbmV4dENoYXJhY3RlcjsKKyAgICAgICAgbmV4dENoYXJhY3Rl
ciA9IGkgKyAxIDwgbGVuZ3RoID8gaW5wdXRTdHJpbmdbaSArIDFdIDogMDsKKworICAgICAgICBp
ZiAoc2hvdWxkRXNjYXBlVUNoYXIoY2hhcmFjdGVyLCBwcmV2aW91c0NoYXJhY3RlciwgbmV4dENo
YXJhY3RlcikpIHsKKyAgICAgICAgICAgIGlmIChjaGFyYWN0ZXIgPD0gMjU1KSB7CisgICAgICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZCgnJScpOworICAgICAgICAgICAgICAgIGFwcGVuZEJ5dGVB
c0hleChjaGFyYWN0ZXIsIHJlc3VsdCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCIlKyIpOworICAgICAgICAgICAgICAgIGFwcGVu
ZEJ5dGVBc0hleChjaGFyYWN0ZXIgPj4gOCwgcmVzdWx0KTsKKyAgICAgICAgICAgICAgICBhcHBl
bmRCeXRlQXNIZXgoY2hhcmFjdGVyLCByZXN1bHQpOworICAgICAgICAgICAgfQorICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoY2hhcmFjdGVyKTsKKyAgICB9CisKKyAg
ICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7Cit9CisKK1N0cmluZyBkZWNvZGVGcm9tRmlsZW5h
bWUoY29uc3QgU3RyaW5nJiBpbnB1dFN0cmluZykKK3sKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBp
bnB1dFN0cmluZy5sZW5ndGgoKTsKKyAgICBpZiAoIWxlbmd0aCkKKyAgICAgICAgcmV0dXJuIGlu
cHV0U3RyaW5nOworCisgICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7CisgICAgcmVzdWx0LnJlc2Vy
dmVDYXBhY2l0eShsZW5ndGgpOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0
aDsgKytpKSB7CisgICAgICAgIGlmIChpbnB1dFN0cmluZ1tpXSAhPSAnJScpIHsKKyAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoaW5wdXRTdHJpbmdbaV0pOworICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgIH0KKworICAgICAgICAvLyBJZiB0aGUgaW5wdXQgc3RyaW5nIGlzIGEgdmFsaWQg
ZW5jb2RlZCBmaWxlbmFtZSwgaXQgbXVzdCBiZSBhdCBsZWFzdCAyIGNoYXJhY3RlcnMgbG9uZ2Vy
CisgICAgICAgIC8vIHRoYW4gdGhlIGN1cnJlbnQgaW5kZXggdG8gYWNjb3VudCBmb3IgdGhpcyBw
ZXJjZW50IGVuY29kZWQgdmFsdWUuCisgICAgICAgIGlmIChpICsgMiA+PSBsZW5ndGgpCisgICAg
ICAgICAgICByZXR1cm4geyB9OworCisgICAgICAgIGlmIChpbnB1dFN0cmluZ1tpKzFdICE9ICcr
JykgeworICAgICAgICAgICAgaWYgKCFpc0FTQ0lJSGV4RGlnaXQoaW5wdXRTdHJpbmdbaSArIDFd
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICAgICAgaWYgKCFpc0FTQ0lJ
SGV4RGlnaXQoaW5wdXRTdHJpbmdbaSArIDJdKSkKKyAgICAgICAgICAgICAgICByZXR1cm4geyB9
OworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh0b0FTQ0lJSGV4VmFsdWUoaW5wdXRTdHJpbmdb
aSArIDFdLCBpbnB1dFN0cmluZ1tpICsgMl0pKTsKKyAgICAgICAgICAgIGkgKz0gMjsKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgdGhlIGlucHV0IHN0
cmluZyBpcyBhIHZhbGlkIGVuY29kZWQgZmlsZW5hbWUsIGl0IG11c3QgYmUgYXQgbGVhc3QgNSBj
aGFyYWN0ZXJzIGxvbmdlcgorICAgICAgICAvLyB0aGFuIHRoZSBjdXJyZW50IGluZGV4IHRvIGFj
Y291bnQgZm9yIHRoaXMgcGVyY2VudCBlbmNvZGVkIHZhbHVlLgorICAgICAgICBpZiAoaSArIDUg
Pj0gbGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuIHsgfTsKKworICAgICAgICBpZiAoIWlzQVND
SUlIZXhEaWdpdChpbnB1dFN0cmluZ1tpICsgMl0pKQorICAgICAgICAgICAgcmV0dXJuIHsgfTsK
KyAgICAgICAgaWYgKCFpc0FTQ0lJSGV4RGlnaXQoaW5wdXRTdHJpbmdbaSArIDNdKSkKKyAgICAg
ICAgICAgIHJldHVybiB7IH07CisgICAgICAgIGlmICghaXNBU0NJSUhleERpZ2l0KGlucHV0U3Ry
aW5nW2kgKyA0XSkpCisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICBpZiAoIWlzQVND
SUlIZXhEaWdpdChpbnB1dFN0cmluZ1tpICsgNV0pKQorICAgICAgICAgICAgcmV0dXJuIHsgfTsK
KworICAgICAgICByZXN1bHQuYXBwZW5kKHRvQVNDSUlIZXhWYWx1ZShpbnB1dFN0cmluZ1tpICsg
Ml0sIGlucHV0U3RyaW5nW2kgKyAzXSkgPDwgOCB8IHRvQVNDSUlIZXhWYWx1ZShpbnB1dFN0cmlu
Z1tpICsgNF0sIGlucHV0U3RyaW5nW2kgKyA1XSkpOworICAgICAgICBpICs9IDU7CisgICAgfQor
CisgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOworfQorCitTdHJpbmcgbGFzdENvbXBvbmVu
dE9mUGF0aElnbm9yaW5nVHJhaWxpbmdTbGFzaChjb25zdCBTdHJpbmcmIHBhdGgpCit7CisjaWYg
T1MoV0lORE9XUykKKyAgICBjaGFyIHBhdGhTZXBhcmF0b3IgPSAnXFwnOworI2Vsc2UKKyAgICBj
aGFyIHBhdGhTZXBhcmF0b3IgPSAnLyc7CisjZW5kaWYKKworICAgIGF1dG8gcG9zaXRpb24gPSBw
YXRoLnJldmVyc2VGaW5kKHBhdGhTZXBhcmF0b3IpOworICAgIGlmIChwb3NpdGlvbiA9PSBub3RG
b3VuZCkKKyAgICAgICAgcmV0dXJuIHBhdGg7CisKKyAgICBzaXplX3QgZW5kT2ZTdWJzdHJpbmcg
PSBwYXRoLmxlbmd0aCgpIC0gMTsKKyAgICBpZiAocG9zaXRpb24gPT0gZW5kT2ZTdWJzdHJpbmcp
IHsKKyAgICAgICAgLS1lbmRPZlN1YnN0cmluZzsKKyAgICAgICAgcG9zaXRpb24gPSBwYXRoLnJl
dmVyc2VGaW5kKHBhdGhTZXBhcmF0b3IsIGVuZE9mU3Vic3RyaW5nKTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gcGF0aC5zdWJzdHJpbmcocG9zaXRpb24gKyAxLCBlbmRPZlN1YnN0cmluZyAtIHBvc2l0
aW9uKTsKK30KKworYm9vbCBhcHBlbmRGaWxlQ29udGVudHNUb0ZpbGVIYW5kbGUoY29uc3QgU3Ry
aW5nJiBwYXRoLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHRhcmdldCkKK3sKKyAgICBhdXRvIHNvdXJj
ZSA9IG9wZW5GaWxlKHBhdGgsIEZpbGVPcGVuTW9kZTo6UmVhZCk7CisKKyAgICBpZiAoIWlzSGFu
ZGxlVmFsaWQoc291cmNlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgc3RhdGljIGlu
dCBidWZmZXJTaXplID0gMSA8PCAxOTsKKyAgICBWZWN0b3I8Y2hhcj4gYnVmZmVyKGJ1ZmZlclNp
emUpOworCisgICAgYXV0byBmaWxlQ2xvc2VyID0gV1RGOjptYWtlU2NvcGVFeGl0KFtzb3VyY2Vd
KCkgeworICAgICAgICBQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlID0gc291cmNlOworICAgICAg
ICBjbG9zZUZpbGUoaGFuZGxlKTsKKyAgICB9KTsKKworICAgIGRvIHsKKyAgICAgICAgaW50IHJl
YWRCeXRlcyA9IHJlYWRGcm9tRmlsZShzb3VyY2UsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlclNpemUp
OworCisgICAgICAgIGlmIChyZWFkQnl0ZXMgPCAwKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgICAgIGlmICh3cml0ZVRvRmlsZSh0YXJnZXQsIGJ1ZmZlci5kYXRhKCksIHJlYWRC
eXRlcykgIT0gcmVhZEJ5dGVzKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAg
IGlmIChyZWFkQnl0ZXMgPCBidWZmZXJTaXplKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfSB3aGlsZSAodHJ1ZSk7CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworCiti
b29sIGZpbGVzSGF2ZVNhbWVWb2x1bWUoY29uc3QgU3RyaW5nJiBmaWxlQSwgY29uc3QgU3RyaW5n
JiBmaWxlQikKK3sKKyAgICBhdXRvIGZzUmVwRmlsZUEgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oZmlsZUEpOworICAgIGF1dG8gZnNSZXBGaWxlQiA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihmaWxlQik7CisKKyAgICBpZiAoZnNSZXBGaWxlQS5pc051bGwoKSB8fCBmc1JlcEZpbGVCLmlz
TnVsbCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBib29sIHJlc3VsdCA9IGZhbHNl
OworCisgICAgYXV0byBmaWxlQURldiA9IGdldEZpbGVEZXZpY2VJZChmc1JlcEZpbGVBKTsKKyAg
ICBhdXRvIGZpbGVCRGV2ID0gZ2V0RmlsZURldmljZUlkKGZzUmVwRmlsZUIpOworCisgICAgaWYg
KGZpbGVBRGV2ICYmIGZpbGVCRGV2KQorICAgICAgICByZXN1bHQgPSAoZmlsZUFEZXYgPT0gZmls
ZUJEZXYpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworI2lmICFQTEFURk9STShNQUMpCisK
K3ZvaWQgc2V0TWV0YWRhdGFVUkwoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJikKK3sKK30KKworYm9vbCBjYW5FeGNsdWRlRnJvbUJhY2t1cCgpCit7CisgICAgcmV0
dXJuIGZhbHNlOworfQorCitib29sIGV4Y2x1ZGVGcm9tQmFja3VwKGNvbnN0IFN0cmluZyYpCit7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCisjZW5kaWYKKworTWFwcGVkRmlsZURhdGE6On5NYXBw
ZWRGaWxlRGF0YSgpCit7CisjaWYgIU9TKFdJTkRPV1MpCisgICAgaWYgKCFtX2ZpbGVEYXRhKQor
ICAgICAgICByZXR1cm47CisgICAgbXVubWFwKG1fZmlsZURhdGEsIG1fZmlsZVNpemUpOworI2Vu
ZGlmCit9CisKK01hcHBlZEZpbGVEYXRhOjpNYXBwZWRGaWxlRGF0YShjb25zdCBTdHJpbmcmIGZp
bGVQYXRoLCBib29sJiBzdWNjZXNzKQoreworI2lmIE9TKFdJTkRPV1MpCisgICAgLy8gRklYTUU6
IEltcGxlbWVudCBtYXBwaW5nCisgICAgc3VjY2VzcyA9IGZhbHNlOworI2Vsc2UKKyAgICBDU3Ry
aW5nIGZzUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVQYXRoKTsKKyAgICBpbnQg
ZmQgPSAhZnNSZXAuaXNOdWxsKCkgPyBvcGVuKGZzUmVwLmRhdGEoKSwgT19SRE9OTFkpIDogLTE7
CisgICAgaWYgKGZkIDwgMCkgeworICAgICAgICBzdWNjZXNzID0gZmFsc2U7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBzdHJ1Y3Qgc3RhdCBmaWxlU3RhdDsKKyAgICBpZiAoZnN0YXQo
ZmQsICZmaWxlU3RhdCkpIHsKKyAgICAgICAgY2xvc2UoZmQpOworICAgICAgICBzdWNjZXNzID0g
ZmFsc2U7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBzaXplOworICAg
IGlmICghV1RGOjpjb252ZXJ0U2FmZWx5KGZpbGVTdGF0LnN0X3NpemUsIHNpemUpKSB7CisgICAg
ICAgIGNsb3NlKGZkKTsKKyAgICAgICAgc3VjY2VzcyA9IGZhbHNlOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgaWYgKCFzaXplKSB7CisgICAgICAgIGNsb3NlKGZkKTsKKyAgICAgICAg
c3VjY2VzcyA9IHRydWU7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB2b2lkKiBkYXRh
ID0gbW1hcCgwLCBzaXplLCBQUk9UX1JFQUQsIE1BUF9GSUxFIHwgTUFQX1NIQVJFRCwgZmQsIDAp
OworICAgIGNsb3NlKGZkKTsKKworICAgIGlmIChkYXRhID09IE1BUF9GQUlMRUQpIHsKKyAgICAg
ICAgc3VjY2VzcyA9IGZhbHNlOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc3VjY2Vz
cyA9IHRydWU7CisgICAgbV9maWxlRGF0YSA9IGRhdGE7CisgICAgbV9maWxlU2l6ZSA9IHNpemU7
CisjZW5kaWYKK30KKworUGxhdGZvcm1GaWxlSGFuZGxlIG9wZW5BbmRMb2NrRmlsZShjb25zdCBT
dHJpbmcmIHBhdGgsIEZpbGVPcGVuTW9kZSBvcGVuTW9kZSwgT3B0aW9uU2V0PEZpbGVMb2NrTW9k
ZT4gbG9ja01vZGUpCit7CisgICAgYXV0byBoYW5kbGUgPSBvcGVuRmlsZShwYXRoLCBvcGVuTW9k
ZSk7CisgICAgaWYgKGhhbmRsZSA9PSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQorICAgICAg
ICByZXR1cm4gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKKworI2lmIFVTRShGSUxFX0xPQ0sp
CisgICAgYm9vbCBsb2NrZWQgPSBsb2NrRmlsZShoYW5kbGUsIGxvY2tNb2RlKTsKKyAgICBBU1NF
UlRfVU5VU0VEKGxvY2tlZCwgbG9ja2VkKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGxvY2tN
b2RlKTsKKyNlbmRpZgorCisgICAgcmV0dXJuIGhhbmRsZTsKK30KKwordm9pZCB1bmxvY2tBbmRD
bG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSkKK3sKKyNpZiBVU0UoRklMRV9MT0NL
KQorICAgIGJvb2wgdW5sb2NrZWQgPSB1bmxvY2tGaWxlKGhhbmRsZSk7CisgICAgQVNTRVJUX1VO
VVNFRCh1bmxvY2tlZCwgdW5sb2NrZWQpOworI2VuZGlmCisgICAgY2xvc2VGaWxlKGhhbmRsZSk7
Cit9CisKK2Jvb2wgZmlsZUlzRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgU2hvdWxkRm9s
bG93U3ltYm9saWNMaW5rcyBzaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzKQoreworICAgIGF1dG8g
bWV0YWRhdGEgPSBzaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzID09IFNob3VsZEZvbGxvd1N5bWJv
bGljTGlua3M6OlllcyA/IGZpbGVNZXRhZGF0YUZvbGxvd2luZ1N5bWxpbmtzKHBhdGgpIDogZmls
ZU1ldGFkYXRhKHBhdGgpOworICAgIGlmICghbWV0YWRhdGEpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICByZXR1cm4gbWV0YWRhdGEudmFsdWUoKS50eXBlID09IEZpbGVNZXRhZGF0YTo6VHlw
ZTo6RGlyZWN0b3J5OworfQorCit9IC8vIG5hbWVzcGFjZSBGaWxlU3lzdGVtCit9IC8vIG5hbWVz
cGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaCBiL1NvdXJj
ZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNmUwZjQzMzY5MmY4YTRiYTdhZTYy
ZTNiMjcwOTZmY2ExZDdlMDcyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvRmls
ZVN5c3RlbS5oCkBAIC0wLDAgKzEsMjI2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4
IENvbGxhYm9yYSwgTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
IDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFt
ZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8dGltZS5o
PgorI2luY2x1ZGUgPHV0aWxpdHk+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRl
IDx3dGYvT3B0aW9uU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0
Zi9XYWxsVGltZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCisjaWYgVVNF
KENGKQorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNlbmRpZgorCisjaWYgVVNFKENGKQor
dHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DRkRhdGEqIENGRGF0YVJlZjsKKyNlbmRpZgorCitPQkpD
X0NMQVNTIE5TU3RyaW5nOworCisjaWYgUExBVEZPUk0oV0lOKQordHlwZWRlZiB2b2lkICpIQU5E
TEU7CisjZW5kaWYKKworI2lmIFVTRShHTElCKQordHlwZWRlZiBzdHJ1Y3QgX0dGaWxlSU9TdHJl
YW0gR0ZpbGVJT1N0cmVhbTsKKyNlbmRpZgorCituYW1lc3BhY2UgV1RGIHsKKworc3RydWN0IEZp
bGVNZXRhZGF0YTsKKworbmFtZXNwYWNlIEZpbGVTeXN0ZW1JbXBsIHsKKworLy8gUGxhdGZvcm1G
aWxlSGFuZGxlCisjaWYgVVNFKEdMSUIpICYmICFQTEFURk9STShXSU4pCit0eXBlZGVmIEdGaWxl
SU9TdHJlYW0qIFBsYXRmb3JtRmlsZUhhbmRsZTsKK2NvbnN0IFBsYXRmb3JtRmlsZUhhbmRsZSBp
bnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlID0gMDsKKyNlbGlmIFBMQVRGT1JNKFdJTikKK3R5cGVk
ZWYgSEFORExFIFBsYXRmb3JtRmlsZUhhbmRsZTsKKy8vIEZJWE1FOiAtMSBpcyBJTlZBTElEX0hB
TkRMRV9WQUxVRSwgZGVmaW5lZCBpbiA8d2luYmFzZS5oPi4gQ2hyb21pdW0gdHJpZXMgdG8KKy8v
IGF2b2lkIHVzaW5nIFdpbmRvd3MgaGVhZGVycyBpbiBoZWFkZXJzLiBXZSdkIHJhdGhlciBtb3Zl
IHRoaXMgaW50byB0aGUgLmNwcC4KK2NvbnN0IFBsYXRmb3JtRmlsZUhhbmRsZSBpbnZhbGlkUGxh
dGZvcm1GaWxlSGFuZGxlID0gcmVpbnRlcnByZXRfY2FzdDxIQU5ETEU+KC0xKTsKKyNlbHNlCit0
eXBlZGVmIGludCBQbGF0Zm9ybUZpbGVIYW5kbGU7Citjb25zdCBQbGF0Zm9ybUZpbGVIYW5kbGUg
aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSA9IC0xOworI2VuZGlmCisKK2VudW0gY2xhc3MgRmls
ZU9wZW5Nb2RlIHsKKyAgICBSZWFkLAorICAgIFdyaXRlLAorI2lmIE9TKERBUldJTikKKyAgICBF
dmVudHNPbmx5LAorI2VuZGlmCit9OworCitlbnVtIGNsYXNzIEZpbGVTZWVrT3JpZ2luIHsKKyAg
ICBCZWdpbm5pbmcsCisgICAgQ3VycmVudCwKKyAgICBFbmQsCit9OworCitlbnVtIGNsYXNzIEZp
bGVMb2NrTW9kZSB7CisgICAgU2hhcmVkID0gMSA8PCAwLAorICAgIEV4Y2x1c2l2ZSA9IDEgPDwg
MSwKKyAgICBOb25ibG9ja2luZyA9IDEgPDwgMiwKK307CisKK2VudW0gY2xhc3MgU2hvdWxkRm9s
bG93U3ltYm9saWNMaW5rcyB7IE5vLCBZZXMgfTsKKworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wg
ZmlsZUV4aXN0cyhjb25zdCBTdHJpbmcmKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGRlbGV0
ZUZpbGUoY29uc3QgU3RyaW5nJik7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBkZWxldGVFbXB0
eURpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIG1vdmVG
aWxlKGNvbnN0IFN0cmluZyYgb2xkUGF0aCwgY29uc3QgU3RyaW5nJiBuZXdQYXRoKTsKK1dURl9F
WFBPUlRfUFJJVkFURSBib29sIGdldEZpbGVTaXplKGNvbnN0IFN0cmluZyYsIGxvbmcgbG9uZyYg
cmVzdWx0KTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGdldEZpbGVTaXplKFBsYXRmb3JtRmls
ZUhhbmRsZSwgbG9uZyBsb25nJiByZXN1bHQpOworV1RGX0VYUE9SVF9QUklWQVRFIE9wdGlvbmFs
PFdhbGxUaW1lPiBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmKTsKK1dURl9F
WFBPUlRfUFJJVkFURSBPcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZUNyZWF0aW9uVGltZShjb25z
dCBTdHJpbmcmKTsgLy8gTm90IGFsbCBwbGF0Zm9ybXMgc3RvcmUgZmlsZSBjcmVhdGlvbiB0aW1l
LgorV1RGX0VYUE9SVF9QUklWQVRFIE9wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRh
KGNvbnN0IFN0cmluZyYgcGF0aCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgT3B0aW9uYWw8RmlsZU1l
dGFkYXRhPiBmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyhjb25zdCBTdHJpbmcmIHBhdGgp
OworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZmlsZUlzRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYs
IFNob3VsZEZvbGxvd1N5bWJvbGljTGlua3MpOworV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcm
IGNvbXBvbmVudCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudHMoU3RyaW5nVmlldyBwYXRoLCBjb25zdCBWZWN0b3I8U3RyaW5nVmlldz4mIGNvbXBv
bmVudHMpOworV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBsYXN0Q29tcG9uZW50T2ZQYXRoSWdu
b3JpbmdUcmFpbGluZ1NsYXNoKGNvbnN0IFN0cmluZyYgcGF0aCk7CitXVEZfRVhQT1JUX1BSSVZB
VEUgYm9vbCBtYWtlQWxsRGlyZWN0b3JpZXMoY29uc3QgU3RyaW5nJiBwYXRoKTsKK1dURl9FWFBP
UlRfUFJJVkFURSBTdHJpbmcgaG9tZURpcmVjdG9yeVBhdGgoKTsKK1dURl9FWFBPUlRfUFJJVkFU
RSBTdHJpbmcgcGF0aEdldEZpbGVOYW1lKGNvbnN0IFN0cmluZyYpOworV1RGX0VYUE9SVF9QUklW
QVRFIFN0cmluZyBkaXJlY3RvcnlOYW1lKGNvbnN0IFN0cmluZyYpOworV1RGX0VYUE9SVF9QUklW
QVRFIGJvb2wgZ2V0Vm9sdW1lRnJlZVNwYWNlKGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90Jik7CitX
VEZfRVhQT1JUX1BSSVZBVEUgT3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0
IENTdHJpbmcmKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGNyZWF0ZVN5bWJvbGljTGluayhj
b25zdCBTdHJpbmcmIHRhcmdldFBhdGgsIGNvbnN0IFN0cmluZyYgc3ltYm9saWNMaW5rUGF0aCk7
CisKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNldE1ldGFkYXRhVVJMKGNvbnN0IFN0cmluZyYg
cGF0aCwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIgPSB7
IH0pOworCitib29sIGNhbkV4Y2x1ZGVGcm9tQmFja3VwKCk7IC8vIFJldHVybnMgdHJ1ZSBpZiBh
bnkgZmlsZSBjYW4gZXZlciBiZSBleGNsdWRlZCBmcm9tIGJhY2t1cC4KK2Jvb2wgZXhjbHVkZUZy
b21CYWNrdXAoY29uc3QgU3RyaW5nJik7IC8vIFJldHVybnMgdHJ1ZSBpZiBzdWNjZXNzZnVsLgor
CitXVEZfRVhQT1JUX1BSSVZBVEUgVmVjdG9yPFN0cmluZz4gbGlzdERpcmVjdG9yeShjb25zdCBT
dHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgZmlsdGVyID0gU3RyaW5nKCkpOworCitXVEZfRVhQ
T1JUX1BSSVZBVEUgQ1N0cmluZyBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5n
Jik7CitTdHJpbmcgc3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBjaGFy
Kik7CisKK2lubGluZSBib29sIGlzSGFuZGxlVmFsaWQoY29uc3QgUGxhdGZvcm1GaWxlSGFuZGxl
JiBoYW5kbGUpIHsgcmV0dXJuIGhhbmRsZSAhPSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOyB9
CisKKy8vIFByZWZpeCBpcyB3aGF0IHRoZSBmaWxlbmFtZSBzaG91bGQgYmUgcHJlZml4ZWQgd2l0
aCwgbm90IHRoZSBmdWxsIHBhdGguCitXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIG9wZW5UZW1w
b3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmKTsKK1dU
Rl9FWFBPUlRfUFJJVkFURSBQbGF0Zm9ybUZpbGVIYW5kbGUgb3BlbkZpbGUoY29uc3QgU3RyaW5n
JiBwYXRoLCBGaWxlT3Blbk1vZGUpOworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgY2xvc2VGaWxl
KFBsYXRmb3JtRmlsZUhhbmRsZSYpOworLy8gUmV0dXJucyB0aGUgcmVzdWx0aW5nIG9mZnNldCBm
cm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZpbGUgaWYgc3VjY2Vzc2Z1bCwgLTEgb3RoZXJ3aXNl
LgorV1RGX0VYUE9SVF9QUklWQVRFIGxvbmcgbG9uZyBzZWVrRmlsZShQbGF0Zm9ybUZpbGVIYW5k
bGUsIGxvbmcgbG9uZyBvZmZzZXQsIEZpbGVTZWVrT3JpZ2luKTsKK2Jvb2wgdHJ1bmNhdGVGaWxl
KFBsYXRmb3JtRmlsZUhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCk7CisvLyBSZXR1cm5zIG51bWJl
ciBvZiBieXRlcyBhY3R1YWxseSByZWFkIGlmIHN1Y2Nlc3NmdWwsIC0xIG90aGVyd2lzZS4KK1dU
Rl9FWFBPUlRfUFJJVkFURSBpbnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBjb25z
dCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsKKy8vIFJldHVybnMgbnVtYmVyIG9mIGJ5dGVzIGFj
dHVhbGx5IHdyaXR0ZW4gaWYgc3VjY2Vzc2Z1bCwgLTEgb3RoZXJ3aXNlLgorV1RGX0VYUE9SVF9Q
UklWQVRFIGludCByZWFkRnJvbUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBjaGFyKiBkYXRhLCBp
bnQgbGVuZ3RoKTsKKworV1RGX0VYUE9SVF9QUklWQVRFIFBsYXRmb3JtRmlsZUhhbmRsZSBvcGVu
QW5kTG9ja0ZpbGUoY29uc3QgU3RyaW5nJiwgRmlsZU9wZW5Nb2RlLCBPcHRpb25TZXQ8RmlsZUxv
Y2tNb2RlPiA9IEZpbGVMb2NrTW9kZTo6RXhjbHVzaXZlKTsKK1dURl9FWFBPUlRfUFJJVkFURSB2
b2lkIHVubG9ja0FuZENsb3NlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUpOworCisvLyBBcHBlbmRz
IHRoZSBjb250ZW50cyBvZiB0aGUgZmlsZSBmb3VuZCBhdCAncGF0aCcgdG8gdGhlIG9wZW4gUGxh
dGZvcm1GaWxlSGFuZGxlLgorLy8gUmV0dXJucyB0cnVlIGlmIHRoZSB3cml0ZSB3YXMgc3VjY2Vz
c2Z1bCwgZmFsc2UgaWYgaXQgd2FzIG5vdC4KK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGFwcGVu
ZEZpbGVDb250ZW50c1RvRmlsZUhhbmRsZShjb25zdCBTdHJpbmcmIHBhdGgsIFBsYXRmb3JtRmls
ZUhhbmRsZSYpOworCisvLyBIYXJkIGxpbmtzIGEgZmlsZSBpZiBwb3NzaWJsZSwgY29waWVzIGl0
IGlmIG5vdC4KK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGhhcmRMaW5rT3JDb3B5RmlsZShjb25z
dCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbik7CisKKyNpZiBVU0Uo
RklMRV9MT0NLKQorV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgbG9ja0ZpbGUoUGxhdGZvcm1GaWxl
SGFuZGxlLCBPcHRpb25TZXQ8RmlsZUxvY2tNb2RlPik7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9v
bCB1bmxvY2tGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSk7CisjZW5kaWYKKworLy8gRW5jb2RlIGEg
c3RyaW5nIGZvciB1c2Ugd2l0aGluIGEgZmlsZSBuYW1lLgorV1RGX0VYUE9SVF9QUklWQVRFIFN0
cmluZyBlbmNvZGVGb3JGaWxlTmFtZShjb25zdCBTdHJpbmcmKTsKK1dURl9FWFBPUlRfUFJJVkFU
RSBTdHJpbmcgZGVjb2RlRnJvbUZpbGVuYW1lKGNvbnN0IFN0cmluZyYpOworCitXVEZfRVhQT1JU
X1BSSVZBVEUgYm9vbCBmaWxlc0hhdmVTYW1lVm9sdW1lKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYpOworCisjaWYgVVNFKENGKQorV1RGX0VYUE9SVF9QUklWQVRFIFJldGFpblB0cjxDRlVS
TFJlZj4gcGF0aEFzVVJMKGNvbnN0IFN0cmluZyYpOworI2VuZGlmCisKKyNpZiBQTEFURk9STShH
VEspIHx8IFBMQVRGT1JNKFdQRSkKK1N0cmluZyBmaWxlbmFtZUZvckRpc3BsYXkoY29uc3QgU3Ry
aW5nJik7CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKFdJTikKK1dURl9FWFBPUlRfUFJJVkFURSBT
dHJpbmcgbG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCk7CitXVEZfRVhQT1JUX1BS
SVZBVEUgU3RyaW5nIHJvYW1pbmdVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCk7CisjZW5k
aWYKKworI2lmIFBMQVRGT1JNKENPQ09BKQorV1RGX0VYUE9SVF9QUklWQVRFIE5TU3RyaW5nICpj
cmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoTlNTdHJpbmcgKmRpcmVjdG9yeVByZWZpeCk7CitXVEZf
RVhQT1JUX1BSSVZBVEUgYm9vbCBkZWxldGVOb25FbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcm
KTsKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oV0lOX0NBSVJPKQorV1RGX0VYUE9SVF9QUklWQVRF
IFN0cmluZyBjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoKTsKK1dURl9FWFBPUlRfUFJJVkFURSBi
b29sIGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpOworI2VuZGlmCisKK1dU
Rl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcmVhbFBhdGgoY29uc3QgU3RyaW5nJik7CisKK2NsYXNz
IE1hcHBlZEZpbGVEYXRhIHsKK3B1YmxpYzoKKyAgICBNYXBwZWRGaWxlRGF0YSgpIHsgfQorICAg
IE1hcHBlZEZpbGVEYXRhKE1hcHBlZEZpbGVEYXRhJiYpOworICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBNYXBwZWRGaWxlRGF0YShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBib29sJiBzdWNjZXNzKTsK
KyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgfk1hcHBlZEZpbGVEYXRhKCk7CisgICAgTWFwcGVkRmls
ZURhdGEmIG9wZXJhdG9yPShNYXBwZWRGaWxlRGF0YSYmKTsKKworICAgIGV4cGxpY2l0IG9wZXJh
dG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhIW1fZmlsZURhdGE7IH0KKyAgICBjb25zdCB2b2lk
KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9maWxlRGF0YTsgfQorICAgIHVuc2lnbmVkIHNpemUo
KSBjb25zdCB7IHJldHVybiBtX2ZpbGVTaXplOyB9CisKK3ByaXZhdGU6CisgICAgdm9pZCogbV9m
aWxlRGF0YSB7IG51bGxwdHIgfTsKKyAgICB1bnNpZ25lZCBtX2ZpbGVTaXplIHsgMCB9OworfTsK
KworaW5saW5lIE1hcHBlZEZpbGVEYXRhOjpNYXBwZWRGaWxlRGF0YShNYXBwZWRGaWxlRGF0YSYm
IG90aGVyKQorICAgIDogbV9maWxlRGF0YShzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fZmlsZURhdGEs
IG51bGxwdHIpKQorICAgICwgbV9maWxlU2l6ZShzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fZmlsZVNp
emUsIDApKQoreworfQorCitpbmxpbmUgTWFwcGVkRmlsZURhdGEmIE1hcHBlZEZpbGVEYXRhOjpv
cGVyYXRvcj0oTWFwcGVkRmlsZURhdGEmJiBvdGhlcikKK3sKKyAgICBtX2ZpbGVEYXRhID0gc3Rk
OjpleGNoYW5nZShvdGhlci5tX2ZpbGVEYXRhLCBudWxscHRyKTsKKyAgICBtX2ZpbGVTaXplID0g
c3RkOjpleGNoYW5nZShvdGhlci5tX2ZpbGVTaXplLCAwKTsKKyAgICByZXR1cm4gKnRoaXM7Cit9
CisKK30gLy8gbmFtZXNwYWNlIEZpbGVTeXN0ZW0KK30gLy8gbmFtZXNwYWNlIFdURgorCituYW1l
c3BhY2UgRmlsZVN5c3RlbSA9IFdURjo6RmlsZVN5c3RlbUltcGw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtR1RL
LmNtYWtlCmluZGV4IDY3M2YwMmQwZDU5Njg1NDVhYzg3YThhOGU1N2IyNzczNGQ3Mzk4OWMuLjdm
ZWMxMmRjMmZjMzE1YmM1MTY4ZjAyYjNiZjc2NDcwYzBkOWNiYWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3Jt
R1RLLmNtYWtlCkBAIC0yMiw2ICsyMiw3IEBAIGxpc3QoQVBQRU5EIFdURl9TT1VSQ0VTCiAgICAg
Z2VuZXJpYy9NYWluVGhyZWFkR2VuZXJpYy5jcHAKICAgICBnZW5lcmljL1dvcmtRdWV1ZUdlbmVy
aWMuY3BwCiAKKyAgICBnbGliL0ZpbGVTeXN0ZW1HbGliLmNwcAogICAgIGdsaWIvR0xpYlV0aWxp
dGllcy5jcHAKICAgICBnbGliL0dSZWZQdHIuY3BwCiAgICAgZ2xpYi9SdW5Mb29wR0xpYi5jcHAK
QEAgLTU1LDUgKzU2LDYgQEAgbGlzdChBUFBFTkQgV1RGX0xJQlJBUklFUwogKQogCiBsaXN0KEFQ
UEVORCBXVEZfU1lTVEVNX0lOQ0xVREVfRElSRUNUT1JJRVMKKyAgICAke0dJT19VTklYX0lOQ0xV
REVfRElSU30KICAgICAke0dMSUJfSU5DTFVERV9ESVJTfQogKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybU1hYy5j
bWFrZQppbmRleCBmYzFlNTdiOWNiMjZiNmYyYjZhYmE2MTQzYmQxOGFlYmJiMTZiNTM0Li4wZTNl
MTQxNjA5MTJiNzg2MTc3MzQzNTBhOTI1ZDk5ZGJhMmNkYTAxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybU1h
Yy5jbWFrZQpAQCAtMzIsNiArMzIsOCBAQCBsaXN0KEFQUEVORCBXVEZfUFVCTElDX0hFQURFUlMK
ICAgICBzcGkvZGFyd2luL1hQQ1NQSS5oCiAgICAgc3BpL2Rhcndpbi9keWxkU1BJLmgKIAorICAg
IHNwaS9tYWMvTWV0YWRhdGFTUEkuaAorCiAgICAgdGV4dC9jZi9UZXh0QnJlYWtJdGVyYXRvckNG
LmgKICkKIApAQCAtNDIsNiArNDQsNyBAQCBsaXN0KEFQUEVORCBXVEZfU09VUkNFUwogICAgIFNj
aGVkdWxlUGFpck1hYy5tbQogCiAgICAgY2YvQ0ZVUkxFeHRyYXMuY3BwCisgICAgY2YvRmlsZVN5
c3RlbUNGLmNwcAogICAgIGNmL0xhbmd1YWdlQ0YuY3BwCiAgICAgY2YvUnVuTG9vcENGLmNwcAog
ICAgIGNmL1VSTENGLmNwcApAQCAtNDksNiArNTIsNyBAQCBsaXN0KEFQUEVORCBXVEZfU09VUkNF
UwogICAgIGNvY29hL0F1dG9kcmFpbmVkUG9vbC5jcHAKICAgICBjb2NvYS9DUFVUaW1lQ29jb2Eu
Y3BwCiAgICAgY29jb2EvRW50aXRsZW1lbnRzLm1tCisgICAgY29jb2EvRmlsZVN5c3RlbUNvY29h
Lm1tCiAgICAgY29jb2EvTWFjaFNlbmRSaWdodC5jcHAKICAgICBjb2NvYS9NYWluVGhyZWFkQ29j
b2EubW0KICAgICBjb2NvYS9NZW1vcnlGb290cHJpbnRDb2NvYS5jcHAKQEAgLTU4LDYgKzYyLDkg
QEAgbGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKICAgICBjb2NvYS9Xb3JrUXVldWVDb2NvYS5jcHAK
IAogICAgIG1hYy9EZXByZWNhdGVkU3ltYm9sc1VzZWRCeVNhZmFyaS5tbQorICAgIG1hYy9GaWxl
U3lzdGVtTWFjLm1tCisKKyAgICBwb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCiAKICAgICB0ZXh0
L2NmL0F0b21pY1N0cmluZ0ltcGxDRi5jcHAKICAgICB0ZXh0L2NmL1N0cmluZ0NGLmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1QbGF5U3RhdGlvbi5jbWFrZSBiL1NvdXJj
ZS9XVEYvd3RmL1BsYXRmb3JtUGxheVN0YXRpb24uY21ha2UKaW5kZXggYjk3ZmVjNDBlZDMwYjE3
N2IyZjUzNWI2MjE2MGVmMWVlZTJkZTU2ZS4uM2U5ZTc1YzkyOGE2Yzk0NjA1YjRiZmNhYTdmYmIy
YjlmNDJmODM5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1QbGF5U3RhdGlv
bi5jbWFrZQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtlCkBA
IC01LDYgKzUsOCBAQCBsaXN0KEFQUEVORCBXVEZfU09VUkNFUwogICAgIGdlbmVyaWMvUnVuTG9v
cEdlbmVyaWMuY3BwCiAgICAgZ2VuZXJpYy9Xb3JrUXVldWVHZW5lcmljLmNwcAogCisgICAgcG9z
aXgvRmlsZVN5c3RlbVBPU0lYLmNwcAorCiAgICAgdGV4dC91bml4L1RleHRCcmVha0l0ZXJhdG9y
SW50ZXJuYWxJQ1VVbml4LmNwcAogCiAgICAgdW5peC9DUFVUaW1lVW5peC5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV1BFLmNtYWtlIGIvU291cmNlL1dURi93dGYvUGxh
dGZvcm1XUEUuY21ha2UKaW5kZXggNDczY2ZkNjAyNmIwNjUyYzJmMDJkMmIyODUzOTJiMWQ4MDJm
MGJiYy4uMDg2YWRkM2FhOTE5ZmM0OTIzOWQ3MWMxY2M4Njg1YzVmYzczOWJkNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1XUEUuY21ha2UKKysrIGIvU291cmNlL1dURi93dGYv
UGxhdGZvcm1XUEUuY21ha2UKQEAgLTE2LDYgKzE2LDcgQEAgbGlzdChBUFBFTkQgV1RGX1NPVVJD
RVMKICAgICBnZW5lcmljL01haW5UaHJlYWRHZW5lcmljLmNwcAogICAgIGdlbmVyaWMvV29ya1F1
ZXVlR2VuZXJpYy5jcHAKIAorICAgIGdsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCiAgICAgZ2xpYi9H
TGliVXRpbGl0aWVzLmNwcAogICAgIGdsaWIvR1JlZlB0ci5jcHAKICAgICBnbGliL1J1bkxvb3BH
TGliLmNwcApAQCAtNDAsNSArNDEsNiBAQCBsaXN0KEFQUEVORCBXVEZfTElCUkFSSUVTCiApCiAK
IGxpc3QoQVBQRU5EIFdURl9TWVNURU1fSU5DTFVERV9ESVJFQ1RPUklFUworICAgICR7R0lPX1VO
SVhfSU5DTFVERV9ESVJTfQogICAgICR7R0xJQl9JTkNMVURFX0RJUlN9CiApCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdpbi5jbWFrZSBiL1NvdXJjZS9XVEYvd3RmL1BsYXRm
b3JtV2luLmNtYWtlCmluZGV4IDJiOGI1ZjgyNzBlYjVmMjQ2NzYwNzJkZDEyNDU3NmRhOTMwMWYw
ZWEuLmI2YzBhYzZmNGRlNWUwNWYyN2Q0ZDlhYzBmZmJkNWNjNDA5N2E2ZTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV2luLmNtYWtlCisrKyBiL1NvdXJjZS9XVEYvd3RmL1Bs
YXRmb3JtV2luLmNtYWtlCkBAIC0xMiwxNCArMTIsMjAgQEAgbGlzdChBUFBFTkQgV1RGX1NPVVJD
RVMKIAogICAgIHdpbi9DUFVUaW1lV2luLmNwcAogICAgIHdpbi9EYmdIZWxwZXJXaW4uY3BwCisg
ICAgd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCiAgICAgd2luL0xhbmd1YWdlV2luLmNwcAogICAgIHdp
bi9NYWluVGhyZWFkV2luLmNwcAogICAgIHdpbi9NZW1vcnlGb290cHJpbnRXaW4uY3BwCiAgICAg
d2luL01lbW9yeVByZXNzdXJlSGFuZGxlcldpbi5jcHAKKyAgICB3aW4vUGF0aFdhbGtlci5jcHAK
ICAgICB3aW4vUnVuTG9vcFdpbi5jcHAKICAgICB3aW4vV29ya1F1ZXVlV2luLmNwcAogKQogCits
aXN0KEFQUEVORCBXVEZfTElCUkFSSUVTCisgICAgc2hsd2FwaQorKQorCiBpZiAoVVNFX0NGKQog
ICAgIGxpc3QoQVBQRU5EIFdURl9QVUJMSUNfSEVBREVSUwogICAgICAgICBjZi9DRlVSTEV4dHJh
cy5oCkBAIC0yOSw2ICszNSw3IEBAIGlmIChVU0VfQ0YpCiAgICAgKQogICAgIGxpc3QoQVBQRU5E
IFdURl9TT1VSQ0VTCiAgICAgICAgIGNmL0NGVVJMRXh0cmFzLmNwcAorICAgICAgICBjZi9GaWxl
U3lzdGVtQ0YuY3BwCiAgICAgICAgIGNmL1VSTENGLmNwcAogCiAgICAgICAgIHRleHQvY2YvQXRv
bWljU3RyaW5nSW1wbENGLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY2YvRmlsZVN5
c3RlbUNGLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2NmL0ZpbGVTeXN0ZW1DRi5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNzEyZDY1ZmNhZDI5NmIzOTYzZjYwYTQ0OTRiNmQ3ZTkyZDRhYzUwYwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XVEYvd3RmL2NmL0ZpbGVTeXN0ZW1DRi5jcHAKQEAgLTAsMCArMSw3NCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBB
cHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAor
ICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KKworI2luY2x1
ZGUgPENvcmVGb3VuZGF0aW9uL0NGU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK0NTdHJpbmcgRmlsZVN5c3RlbTo6ZmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IGNmU3RyaW5nID0gcGF0aC5jcmVhdGVDRlN0cmluZygpOworCisgICAgaWYg
KCFjZlN0cmluZykKKyAgICAgICAgcmV0dXJuIENTdHJpbmcoKTsKKworICAgIENGSW5kZXggc2l6
ZSA9IENGU3RyaW5nR2V0TWF4aW11bVNpemVPZkZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjZlN0
cmluZy5nZXQoKSk7CisKKyAgICBWZWN0b3I8Y2hhcj4gYnVmZmVyKHNpemUpOworCisgICAgaWYg
KCFDRlN0cmluZ0dldEZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjZlN0cmluZy5nZXQoKSwgYnVm
ZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSkpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQg
dG8gZ2V0IGZpbGVzeXN0ZW0gcmVwcmVzZW50YXRpb24gdG8gY3JlYXRlIENTdHJpbmcgZnJvbSBj
ZlN0cmluZyIpOworICAgICAgICByZXR1cm4gQ1N0cmluZygpOworICAgIH0KKworICAgIHJldHVy
biBDU3RyaW5nKGJ1ZmZlci5kYXRhKCksIHN0cmxlbihidWZmZXIuZGF0YSgpKSk7Cit9CisKK1N0
cmluZyBGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0
IGNoYXIqIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbikKK3sKKyAgICByZXR1cm4gYWRvcHRDRihD
RlN0cmluZ0NyZWF0ZVdpdGhGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oa0NGQWxsb2NhdG9yRGVm
YXVsdCwgZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKSkuZ2V0KCk7Cit9CisKK1JldGFpblB0cjxD
RlVSTFJlZj4gRmlsZVN5c3RlbTo6cGF0aEFzVVJMKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAg
ICBDRlVSTFBhdGhTdHlsZSBwYXRoU3R5bGU7CisjaWYgUExBVEZPUk0oV0lOKQorICAgIHBhdGhT
dHlsZSA9IGtDRlVSTFdpbmRvd3NQYXRoU3R5bGU7CisjZWxzZQorICAgIHBhdGhTdHlsZSA9IGtD
RlVSTFBPU0lYUGF0aFN0eWxlOworI2VuZGlmCisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZVUkxDcmVh
dGVXaXRoRmlsZVN5c3RlbVBhdGgoMCwgcGF0aC5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBwYXRo
U3R5bGUsIEZBTFNFKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tIGIvU291cmNlL1dURi93dGYvY29j
b2EvRmlsZVN5c3RlbUNvY29hLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjViZWNmMWMzYzM0MDcyYzE3NDQzYWUy
Nzg5MzEzOGMxZDQ1ODAyMzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jb2Nv
YS9GaWxlU3lzdGVtQ29jb2EubW0KQEAgLTAsMCArMSwxNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDctMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBu
b3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNp
bXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CisKK0BpbnRlcmZhY2UgV1RGV2ViRmlsZU1hbmFnZXJE
ZWxlZ2F0ZSA6IE5TT2JqZWN0IDxOU0ZpbGVNYW5hZ2VyRGVsZWdhdGU+CitAZW5kCisKK0BpbXBs
ZW1lbnRhdGlvbiBXVEZXZWJGaWxlTWFuYWdlckRlbGVnYXRlCisKKy0gKEJPT0wpZmlsZU1hbmFn
ZXI6KE5TRmlsZU1hbmFnZXIgKilmaWxlTWFuYWdlciBzaG91bGRQcm9jZWVkQWZ0ZXJFcnJvcjoo
TlNFcnJvciAqKWVycm9yIG1vdmluZ0l0ZW1BdFVSTDooTlNVUkwgKilzcmNVUkwgdG9VUkw6KE5T
VVJMICopZHN0VVJMCit7CisgICAgVU5VU0VEX1BBUkFNKGZpbGVNYW5hZ2VyKTsKKyAgICBVTlVT
RURfUEFSQU0oc3JjVVJMKTsKKyAgICBVTlVTRURfUEFSQU0oZHN0VVJMKTsKKyAgICByZXR1cm4g
ZXJyb3IuY29kZSA9PSBOU0ZpbGVXcml0ZUZpbGVFeGlzdHNFcnJvcjsKK30KKworQGVuZAorCitu
YW1lc3BhY2UgV1RGIHsKKworbmFtZXNwYWNlIEZpbGVTeXN0ZW1JbXBsIHsKKworU3RyaW5nIGhv
bWVEaXJlY3RvcnlQYXRoKCkKK3sKKyAgICByZXR1cm4gTlNIb21lRGlyZWN0b3J5KCk7Cit9CisK
K1N0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1G
aWxlSGFuZGxlJiBwbGF0Zm9ybUZpbGVIYW5kbGUpCit7CisgICAgcGxhdGZvcm1GaWxlSGFuZGxl
ID0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKKworICAgIFZlY3RvcjxjaGFyPiB0ZW1wb3Jh
cnlGaWxlUGF0aChQQVRIX01BWCk7CisgICAgaWYgKCFjb25mc3RyKF9DU19EQVJXSU5fVVNFUl9U
RU1QX0RJUiwgdGVtcG9yYXJ5RmlsZVBhdGguZGF0YSgpLCB0ZW1wb3JhcnlGaWxlUGF0aC5zaXpl
KCkpKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICAvLyBTaHJpbmsgdGhlIHZlY3Rv
ci4KKyAgICB0ZW1wb3JhcnlGaWxlUGF0aC5zaHJpbmsoc3RybGVuKHRlbXBvcmFyeUZpbGVQYXRo
LmRhdGEoKSkpOworCisgICAgLy8gRklYTUU6IENoYW5nZSB0byBhIHJ1bnRpbWUgYXNzZXJ0aW9u
IHRoYXQgdGhlIHBhdGggZW5kcyB3aXRoIGEgc2xhc2ggb25jZSA8cmRhcjovL3Byb2JsZW0vMjM1
NzkwNzc+IGlzCisgICAgLy8gZml4ZWQgaW4gYWxsIGlPUyBTaW11bGF0b3IgdmVyc2lvbnMgdGhh
dCB3ZSB1c2UuCisgICAgaWYgKHRlbXBvcmFyeUZpbGVQYXRoLmxhc3QoKSAhPSAnLycpCisgICAg
ICAgIHRlbXBvcmFyeUZpbGVQYXRoLmFwcGVuZCgnLycpOworCisgICAgLy8gQXBwZW5kIHRoZSBm
aWxlIG5hbWUuCisgICAgQ1N0cmluZyBwcmVmaXhVdGY4ID0gcHJlZml4LnV0ZjgoKTsKKyAgICB0
ZW1wb3JhcnlGaWxlUGF0aC5hcHBlbmQocHJlZml4VXRmOC5kYXRhKCksIHByZWZpeFV0ZjgubGVu
Z3RoKCkpOworICAgIHRlbXBvcmFyeUZpbGVQYXRoLmFwcGVuZCgiWFhYWFhYIiwgNik7CisgICAg
dGVtcG9yYXJ5RmlsZVBhdGguYXBwZW5kKCdcMCcpOworCisgICAgcGxhdGZvcm1GaWxlSGFuZGxl
ID0gbWtzdGVtcCh0ZW1wb3JhcnlGaWxlUGF0aC5kYXRhKCkpOworICAgIGlmIChwbGF0Zm9ybUZp
bGVIYW5kbGUgPT0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKKyAgICAgICAgcmV0dXJuIFN0
cmluZygpOworCisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgodGVtcG9yYXJ5RmlsZVBhdGgu
ZGF0YSgpKTsKK30KKworYm9vbCBtb3ZlRmlsZShjb25zdCBTdHJpbmcmIG9sZFBhdGgsIGNvbnN0
IFN0cmluZyYgbmV3UGF0aCkKK3sKKyAgICAvLyBPdmVyd3JpdGUgZXhpc3RpbmcgZmlsZXMuCisg
ICAgYXV0byBtYW5hZ2VyID0gYWRvcHROUyhbW05TRmlsZU1hbmFnZXIgYWxsb2NdIGluaXRdKTsK
KyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1dURldlYkZpbGVNYW5hZ2VyRGVsZWdhdGUg
YWxsb2NdIGluaXRdKTsKKyAgICBbbWFuYWdlciBzZXREZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07
CisKKyAgICBOU0Vycm9yICplcnJvciA9IG5pbDsKKyAgICBib29sIHN1Y2Nlc3MgPSBbbWFuYWdl
ciBtb3ZlSXRlbUF0VVJMOltOU1VSTCBmaWxlVVJMV2l0aFBhdGg6b2xkUGF0aF0gdG9VUkw6W05T
VVJMIGZpbGVVUkxXaXRoUGF0aDpuZXdQYXRoXSBlcnJvcjomZXJyb3JdOworICAgIGlmICghc3Vj
Y2VzcykKKyAgICAgICAgTlNMb2coQCJFcnJvciBpbiBtb3ZlRmlsZTogJUAiLCBlcnJvcik7Cisg
ICAgcmV0dXJuIHN1Y2Nlc3M7Cit9CisKK2Jvb2wgZ2V0Vm9sdW1lRnJlZVNwYWNlKGNvbnN0IFN0
cmluZyYgcGF0aCwgdWludDY0X3QmIGZyZWVTcGFjZSkKK3sKKyAgICBOU0RpY3Rpb25hcnkgKmZp
bGVTeXN0ZW1BdHRyaWJ1dGVzRGljdGlvbmFyeSA9IFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFu
YWdlcl0gYXR0cmlidXRlc09mRmlsZVN5c3RlbUZvclBhdGg6KE5TU3RyaW5nICopcGF0aCBlcnJv
cjpOVUxMXTsKKyAgICBpZiAoIWZpbGVTeXN0ZW1BdHRyaWJ1dGVzRGljdGlvbmFyeSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIGZyZWVTcGFjZSA9IFtbZmlsZVN5c3RlbUF0dHJpYnV0ZXNE
aWN0aW9uYXJ5IG9iamVjdEZvcktleTpOU0ZpbGVTeXN0ZW1GcmVlU2l6ZV0gdW5zaWduZWRMb25n
TG9uZ1ZhbHVlXTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworTlNTdHJpbmcgKmNyZWF0ZVRlbXBv
cmFyeURpcmVjdG9yeShOU1N0cmluZyAqZGlyZWN0b3J5UHJlZml4KQoreworICAgIE5TU3RyaW5n
ICp0ZW1wRGlyZWN0b3J5ID0gTlNUZW1wb3JhcnlEaXJlY3RvcnkoKTsKKyAgICBpZiAoIXRlbXBE
aXJlY3RvcnkgfHwgIVt0ZW1wRGlyZWN0b3J5IGxlbmd0aF0pCisgICAgICAgIHJldHVybiBuaWw7
CisKKyAgICBpZiAoIWRpcmVjdG9yeVByZWZpeCB8fCAhW2RpcmVjdG9yeVByZWZpeCBsZW5ndGhd
KQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgTlNTdHJpbmcgKnRlbXBEaXJlY3RvcnlDb21w
b25lbnQgPSBbZGlyZWN0b3J5UHJlZml4IHN0cmluZ0J5QXBwZW5kaW5nU3RyaW5nOkAiLVhYWFhY
WFhYIl07CisgICAgY29uc3QgY2hhciogdGVtcERpcmVjdG9yeUNTdHJpbmcgPSBbW3RlbXBEaXJl
Y3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OnRlbXBEaXJlY3RvcnlDb21wb25l
bnRdIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbl07CisgICAgaWYgKCF0ZW1wRGlyZWN0b3J5Q1N0
cmluZykKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIGNvbnN0IHNpemVfdCBsZW5ndGggPSBz
dHJsZW4odGVtcERpcmVjdG9yeUNTdHJpbmcpOworICAgIEFTU0VSVChsZW5ndGggPD0gTUFYUEFU
SExFTik7CisgICAgaWYgKGxlbmd0aCA+IE1BWFBBVEhMRU4pCisgICAgICAgIHJldHVybiBuaWw7
CisKKyAgICBjb25zdCBzaXplX3QgbGVuZ3RoUGx1c051bGxUZXJtaW5hdG9yID0gbGVuZ3RoICsg
MTsKKyAgICBWZWN0b3I8Y2hhciwgTUFYUEFUSExFTiArIDE+IHBhdGgobGVuZ3RoUGx1c051bGxU
ZXJtaW5hdG9yKTsKKyAgICBtZW1jcHkocGF0aC5kYXRhKCksIHRlbXBEaXJlY3RvcnlDU3RyaW5n
LCBsZW5ndGhQbHVzTnVsbFRlcm1pbmF0b3IpOworCisgICAgaWYgKCFta2R0ZW1wKHBhdGguZGF0
YSgpKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIHJldHVybiBbW05TRmlsZU1hbmFnZXIg
ZGVmYXVsdE1hbmFnZXJdIHN0cmluZ1dpdGhGaWxlU3lzdGVtUmVwcmVzZW50YXRpb246cGF0aC5k
YXRhKCkgbGVuZ3RoOmxlbmd0aF07Cit9CisKK2Jvb2wgZGVsZXRlTm9uRW1wdHlEaXJlY3Rvcnko
Y29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIHJldHVybiBbW05TRmlsZU1hbmFnZXIgZGVmYXVs
dE1hbmFnZXJdIHJlbW92ZUl0ZW1BdFBhdGg6cGF0aCBlcnJvcjpuaWxdOworfQorCit9IC8vIG5h
bWVzcGFjZSBGaWxlU3lzdGVtCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwIGIvU291cmNlL1dURi93dGYvZ2xpYi9G
aWxlU3lzdGVtR2xpYi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTZjNDkxNTcyYWRlOWMxNjc5NGQ0YjIzOWYy
OTE2ZmFlNWUwNzEzMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmls
ZVN5c3RlbUdsaWIuY3BwCkBAIC0wLDAgKzEsNDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDA3LCAyMDA5IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDggQ29sbGFib3JhLCBMdGQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDEwIE1vdG9yb2xh
IE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg
KgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisg
KiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KKworI2luY2x1ZGUgPGdpby9nZmlsZWRlc2Ny
aXB0b3JiYXNlZC5oPgorI2luY2x1ZGUgPGdpby9naW8uaD4KKyNpbmNsdWRlIDxnbGliLmg+Cisj
aW5jbHVkZSA8Z2xpYi9nc3RkaW8uaD4KKyNpbmNsdWRlIDxzeXMvZmlsZS5oPgorI2luY2x1ZGUg
PHd0Zi9FbnVtVHJhaXRzLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVNZXRhZGF0YS5oPgorI2luY2x1
ZGUgPHd0Zi9VVUlELmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR0xpYlV0aWxpdGllcy5oPgorI2lu
Y2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0J1aWxkZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNw
YWNlIFdURiB7CisKK25hbWVzcGFjZSBGaWxlU3lzdGVtSW1wbCB7CisKKy8qIE9uIGxpbnV4IGZp
bGUgbmFtZXMgYXJlIGp1c3QgcmF3IGJ5dGVzLCBzbyBhbHNvIHN0cmluZ3MgdGhhdCBjYW5ub3Qg
YmUgZW5jb2RlZCBpbiBhbnkgd2F5CisgKiBhcmUgdmFsaWQgZmlsZSBuYW1lcy4gVGhpcyBtZWFu
IHRoYXQgd2UgY2Fubm90IGp1c3Qgc3RvcmUgYSBmaWxlIG5hbWUgYXMtaXMgaW4gYSBTdHJpbmcK
KyAqIGJ1dCB3ZSBoYXZlIHRvIGVzY2FwZSBpdC4KKyAqIE9uIFdpbmRvd3MgdGhlIEdMaWIgZmls
ZSBuYW1lIGVuY29kaW5nIGlzIGFsd2F5cyBVVEYtOCBzbyB3ZSBjYW4gb3B0aW1pemUgdGhpcyBj
YXNlLiAqLworU3RyaW5nIHN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3Qg
Y2hhciogZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKQoreworICAgIGlmICghZmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyNpZiBPUyhXSU5ET1dT
KQorICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbik7
CisjZWxzZQorICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGVzY2FwZWRTdHJpbmcoZ191cmlfZXNjYXBl
X3N0cmluZyhmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24sICIvOiIsIEZBTFNFKSk7CisgICAgcmV0
dXJuIGVzY2FwZWRTdHJpbmcuZ2V0KCk7CisjZW5kaWYKK30KKworc3RhdGljIEdVbmlxdWVQdHI8
Y2hhcj4gdW5lc2NhcGVkRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIGlmIChw
YXRoLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisjaWYgT1MoV0lORE9XUykK
KyAgICByZXR1cm4gR1VuaXF1ZVB0cjxjaGFyPihnX3N0cmR1cChwYXRoLnV0ZjgoKS5kYXRhKCkp
KTsKKyNlbHNlCisgICAgcmV0dXJuIEdVbmlxdWVQdHI8Y2hhcj4oZ191cmlfdW5lc2NhcGVfc3Ry
aW5nKHBhdGgudXRmOCgpLmRhdGEoKSwgbnVsbHB0cikpOworI2VuZGlmCit9CisKK0NTdHJpbmcg
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyNpZiBPUyhX
SU5ET1dTKQorICAgIHJldHVybiBwYXRoLnV0ZjgoKTsKKyNlbHNlCisgICAgR1VuaXF1ZVB0cjxn
Y2hhcj4gZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShwYXRoKTsKKyAgICByZXR1cm4gZmls
ZW5hbWUuZ2V0KCk7CisjZW5kaWYKK30KKworLy8gQ29udmVydHMgYSBzdHJpbmcgdG8gc29tZXRo
aW5nIHN1aXRhYmxlIHRvIGJlIGRpc3BsYXllZCB0byB0aGUgdXNlci4KK1N0cmluZyBmaWxlbmFt
ZUZvckRpc3BsYXkoY29uc3QgU3RyaW5nJiBzdHJpbmcpCit7CisjaWYgT1MoV0lORE9XUykKKyAg
ICByZXR1cm4gc3RyaW5nOworI2Vsc2UKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZSA9
IHVuZXNjYXBlZEZpbGVuYW1lKHN0cmluZyk7CisgICAgaWYgKCFmaWxlbmFtZSkKKyAgICAgICAg
cmV0dXJuIHN0cmluZzsKKworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGRpc3BsYXkoZ19maWxlbmFt
ZV90b191dGY4KGZpbGVuYW1lLmdldCgpLCAtMSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikp
OworICAgIGlmICghZGlzcGxheSkKKyAgICAgICAgcmV0dXJuIHN0cmluZzsKKworICAgIHJldHVy
biBTdHJpbmc6OmZyb21VVEY4KGRpc3BsYXkuZ2V0KCkpOworI2VuZGlmCit9CisKK2Jvb2wgZmls
ZUV4aXN0cyhjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmls
ZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShwYXRoKTsKKyAgICByZXR1cm4gZmlsZW5hbWUgPyBn
X2ZpbGVfdGVzdChmaWxlbmFtZS5nZXQoKSwgR19GSUxFX1RFU1RfRVhJU1RTKSA6IGZhbHNlOwor
fQorCitib29sIGRlbGV0ZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIEdVbmlxdWVQ
dHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUocGF0aCk7CisgICAgcmV0dXJu
IGZpbGVuYW1lID8gZ19yZW1vdmUoZmlsZW5hbWUuZ2V0KCkpICE9IC0xIDogZmFsc2U7Cit9CisK
K2Jvb2wgZGVsZXRlRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIEdV
bmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUocGF0aCk7CisgICAg
cmV0dXJuIGZpbGVuYW1lID8gZ19ybWRpcihmaWxlbmFtZS5nZXQoKSkgIT0gLTEgOiBmYWxzZTsK
K30KKworc3RhdGljIGJvb2wgZ2V0RmlsZVN0YXQoY29uc3QgU3RyaW5nJiBwYXRoLCBHU3RhdEJ1
Ziogc3RhdEJ1ZmZlcikKK3sKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZSA9IHVuZXNj
YXBlZEZpbGVuYW1lKHBhdGgpOworICAgIGlmICghZmlsZW5hbWUpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIHJldHVybiBnX3N0YXQoZmlsZW5hbWUuZ2V0KCksIHN0YXRCdWZmZXIpICE9
IC0xOworfQorCitzdGF0aWMgYm9vbCBnZXRGaWxlTFN0YXQoY29uc3QgU3RyaW5nJiBwYXRoLCBH
U3RhdEJ1Ziogc3RhdEJ1ZmZlcikKK3sKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZSA9
IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGgpOworICAgIGlmICghZmlsZW5hbWUpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIHJldHVybiBnX2xzdGF0KGZpbGVuYW1lLmdldCgpLCBzdGF0QnVm
ZmVyKSAhPSAtMTsKK30KKworYm9vbCBnZXRGaWxlU2l6ZShjb25zdCBTdHJpbmcmIHBhdGgsIGxv
bmcgbG9uZyYgcmVzdWx0U2l6ZSkKK3sKKyAgICBHU3RhdEJ1ZiBzdGF0UmVzdWx0OworICAgIGlm
ICghZ2V0RmlsZVN0YXQocGF0aCwgJnN0YXRSZXN1bHQpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICByZXN1bHRTaXplID0gc3RhdFJlc3VsdC5zdF9zaXplOworICAgIHJldHVybiB0cnVl
OworfQorCitib29sIGdldEZpbGVTaXplKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGxvbmcg
bG9uZyYgcmVzdWx0U2l6ZSkKK3sKKyAgICBhdXRvIGluZm8gPSBnX2ZpbGVfaW9fc3RyZWFtX3F1
ZXJ5X2luZm8oaGFuZGxlLCBHX0ZJTEVfQVRUUklCVVRFX1NUQU5EQVJEX1NJWkUsIG51bGxwdHIs
IG51bGxwdHIpOworICAgIGlmICghaW5mbykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
cmVzdWx0U2l6ZSA9IGdfZmlsZV9pbmZvX2dldF9zaXplKGluZm8pOworICAgIHJldHVybiB0cnVl
OworfQorCitPcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZUNyZWF0aW9uVGltZShjb25zdCBTdHJp
bmcmKQoreworICAgIC8vIEZJWE1FOiBJcyB0aGVyZSBhIHdheSB0byByZXRyaWV2ZSBmaWxlIGNy
ZWF0aW9uIHRpbWUgd2l0aCBHdGsgb24gcGxhdGZvcm1zIHRoYXQgc3VwcG9ydCBpdD8KKyAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworfQorCitPcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZU1vZGlm
aWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIEdTdGF0QnVmIHN0YXRSZXN1
bHQ7CisgICAgaWYgKCFnZXRGaWxlU3RhdChwYXRoLCAmc3RhdFJlc3VsdCkpCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRz
KHN0YXRSZXN1bHQuc3RfbXRpbWUpOworfQorCitzdGF0aWMgRmlsZU1ldGFkYXRhOjpUeXBlIHRv
RmlsZU1ldGF0YVR5cGUoR1N0YXRCdWYgc3RhdFJlc3VsdCkKK3sKKyAgICBpZiAoU19JU0RJUihz
dGF0UmVzdWx0LnN0X21vZGUpKQorICAgICAgICByZXR1cm4gRmlsZU1ldGFkYXRhOjpUeXBlOjpE
aXJlY3Rvcnk7CisgICAgaWYgKFNfSVNMTksoc3RhdFJlc3VsdC5zdF9tb2RlKSkKKyAgICAgICAg
cmV0dXJuIEZpbGVNZXRhZGF0YTo6VHlwZTo6U3ltYm9saWNMaW5rOworICAgIHJldHVybiBGaWxl
TWV0YWRhdGE6OlR5cGU6OkZpbGU7Cit9CisKK3N0YXRpYyBPcHRpb25hbDxGaWxlTWV0YWRhdGE+
IGZpbGVNZXRhZGF0YVVzaW5nRnVuY3Rpb24oY29uc3QgU3RyaW5nJiBwYXRoLCBib29sICgqc3Rh
dEZ1bmMpKGNvbnN0IFN0cmluZyYsIEdTdGF0QnVmKikpCit7CisgICAgR1N0YXRCdWYgc3RhdFJl
c3VsdDsKKyAgICBpZiAoIXN0YXRGdW5jKHBhdGgsICZzdGF0UmVzdWx0KSkKKyAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKworICAgIFN0cmluZyBmaWxlbmFtZSA9IHBhdGhHZXRGaWxlTmFt
ZShwYXRoKTsKKyAgICBib29sIGlzSGlkZGVuID0gIWZpbGVuYW1lLmlzRW1wdHkoKSAmJiBmaWxl
bmFtZVswXSA9PSAnLic7CisKKyAgICByZXR1cm4gRmlsZU1ldGFkYXRhIHsKKyAgICAgICAgV2Fs
bFRpbWU6OmZyb21SYXdTZWNvbmRzKHN0YXRSZXN1bHQuc3RfbXRpbWUpLAorICAgICAgICBzdGF0
UmVzdWx0LnN0X3NpemUsCisgICAgICAgIGlzSGlkZGVuLAorICAgICAgICB0b0ZpbGVNZXRhdGFU
eXBlKHN0YXRSZXN1bHQpCisgICAgfTsKK30KKworT3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxl
TWV0YWRhdGEoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIHJldHVybiBmaWxlTWV0YWRhdGFV
c2luZ0Z1bmN0aW9uKHBhdGgsICZnZXRGaWxlTFN0YXQpOworfQorCitPcHRpb25hbDxGaWxlTWV0
YWRhdGE+IGZpbGVNZXRhZGF0YUZvbGxvd2luZ1N5bWxpbmtzKGNvbnN0IFN0cmluZyYgcGF0aCkK
K3sKKyAgICByZXR1cm4gZmlsZU1ldGFkYXRhVXNpbmdGdW5jdGlvbihwYXRoLCAmZ2V0RmlsZVN0
YXQpOworfQorCitTdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNvbnN0IFN0cmluZyYg
cGF0aCwgY29uc3QgU3RyaW5nJiBjb21wb25lbnQpCit7CisgICAgaWYgKHBhdGguZW5kc1dpdGgo
R19ESVJfU0VQQVJBVE9SX1MpKQorICAgICAgICByZXR1cm4gcGF0aCArIGNvbXBvbmVudDsKKyAg
ICByZXR1cm4gcGF0aCArIEdfRElSX1NFUEFSQVRPUl9TICsgY29tcG9uZW50OworfQorCitTdHJp
bmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhTdHJpbmdWaWV3IHBhdGgsIGNvbnN0IFZlY3Rv
cjxTdHJpbmdWaWV3PiYgY29tcG9uZW50cykKK3sKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7
CisgICAgYnVpbGRlci5hcHBlbmQocGF0aCk7CisgICAgZm9yIChhdXRvJiBjb21wb25lbnQgOiBj
b21wb25lbnRzKSB7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKEdfRElSX1NFUEFSQVRPUl9TKTsK
KyAgICAgICAgYnVpbGRlci5hcHBlbmQoY29tcG9uZW50KTsKKyAgICB9CisgICAgcmV0dXJuIGJ1
aWxkZXIudG9TdHJpbmcoKTsKK30KKworYm9vbCBtYWtlQWxsRGlyZWN0b3JpZXMoY29uc3QgU3Ry
aW5nJiBwYXRoKQoreworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2NhcGVk
RmlsZW5hbWUocGF0aCk7CisgICAgcmV0dXJuIGZpbGVuYW1lID8gZ19ta2Rpcl93aXRoX3BhcmVu
dHMoZmlsZW5hbWUuZ2V0KCksIFNfSVJXWFUpICE9IC0xIDogZmFsc2U7Cit9CisKK1N0cmluZyBo
b21lRGlyZWN0b3J5UGF0aCgpCit7CisgICAgcmV0dXJuIHN0cmluZ0Zyb21GaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oZ19nZXRfaG9tZV9kaXIoKSk7Cit9CisKK2Jvb2wgY3JlYXRlU3ltYm9saWNM
aW5rKGNvbnN0IFN0cmluZyYgdGFyZ2V0UGF0aCwgY29uc3QgU3RyaW5nJiBzeW1ib2xpY0xpbmtQ
YXRoKQoreworICAgIENTdHJpbmcgdGFyZ2V0UGF0aEZTUmVwID0gZmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKHRhcmdldFBhdGgpOworICAgIGlmICghdGFyZ2V0UGF0aEZTUmVwLmRhdGEoKSB8fCB0
YXJnZXRQYXRoRlNSZXAuZGF0YSgpWzBdID09ICdcMCcpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIENTdHJpbmcgc3ltYm9saWNMaW5rUGF0aEZTUmVwID0gZmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKHN5bWJvbGljTGlua1BhdGgpOworICAgIGlmICghc3ltYm9saWNMaW5rUGF0aEZTUmVw
LmRhdGEoKSB8fCBzeW1ib2xpY0xpbmtQYXRoRlNSZXAuZGF0YSgpWzBdID09ICdcMCcpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiAhc3ltbGluayh0YXJnZXRQYXRoRlNSZXAu
ZGF0YSgpLCBzeW1ib2xpY0xpbmtQYXRoRlNSZXAuZGF0YSgpKTsKK30KKworU3RyaW5nIHBhdGhH
ZXRGaWxlTmFtZShjb25zdCBTdHJpbmcmIHBhdGhOYW1lKQoreworICAgIEdVbmlxdWVQdHI8Z2No
YXI+IHRtcEZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUocGF0aE5hbWUpOworICAgIGlmICgh
dG1wRmlsZW5hbWUpCisgICAgICAgIHJldHVybiBwYXRoTmFtZTsKKworICAgIEdVbmlxdWVQdHI8
Z2NoYXI+IGJhc2VOYW1lKGdfcGF0aF9nZXRfYmFzZW5hbWUodG1wRmlsZW5hbWUuZ2V0KCkpKTsK
KyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChiYXNlTmFtZS5nZXQoKSk7Cit9CisKK2Jvb2wg
Z2V0Vm9sdW1lRnJlZVNwYWNlKGNvbnN0IFN0cmluZyYgcGF0aCwgdWludDY0X3QmIGZyZWVTcGFj
ZSkKK3sKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1l
KHBhdGgpOworICAgIGlmICghZmlsZW5hbWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IEdSZWZQdHI8R0ZpbGU+IGZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0aChmaWxl
bmFtZS5nZXQoKSkpOworICAgIEdSZWZQdHI8R0ZpbGVJbmZvPiBmaWxlSW5mbyA9IGFkb3B0R1Jl
ZihnX2ZpbGVfcXVlcnlfZmlsZXN5c3RlbV9pbmZvKGZpbGUuZ2V0KCksIEdfRklMRV9BVFRSSUJV
VEVfRklMRVNZU1RFTV9GUkVFLCAwLCAwKSk7CisgICAgaWYgKCFmaWxlSW5mbykKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgZnJlZVNwYWNlID0gZ19maWxlX2luZm9fZ2V0X2F0dHJpYnV0
ZV91aW50NjQoZmlsZUluZm8uZ2V0KCksIEdfRklMRV9BVFRSSUJVVEVfRklMRVNZU1RFTV9GUkVF
KTsKKyAgICByZXR1cm4gISFmcmVlU3BhY2U7Cit9CisKK1N0cmluZyBkaXJlY3RvcnlOYW1lKGNv
bnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZSA9IHVu
ZXNjYXBlZEZpbGVuYW1lKHBhdGgpOworICAgIGlmICghZmlsZW5hbWUpCisgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKKworICAgIEdVbmlxdWVQdHI8Y2hhcj4gZGlybmFtZShnX3BhdGhfZ2V0X2Rp
cm5hbWUoZmlsZW5hbWUuZ2V0KCkpKTsKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChkaXJu
YW1lLmdldCgpKTsKK30KKworVmVjdG9yPFN0cmluZz4gbGlzdERpcmVjdG9yeShjb25zdCBTdHJp
bmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgZmlsdGVyKQoreworICAgIFZlY3RvcjxTdHJpbmc+IGVu
dHJpZXM7CisKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVu
YW1lKHBhdGgpOworICAgIGlmICghZmlsZW5hbWUpCisgICAgICAgIHJldHVybiBlbnRyaWVzOwor
CisgICAgR1VuaXF1ZVB0cjxHRGlyPiBkaXIoZ19kaXJfb3BlbihmaWxlbmFtZS5nZXQoKSwgMCwg
bnVsbHB0cikpOworICAgIGlmICghZGlyKQorICAgICAgICByZXR1cm4gZW50cmllczsKKworICAg
IEdVbmlxdWVQdHI8R1BhdHRlcm5TcGVjPiBwc3BlYyhnX3BhdHRlcm5fc3BlY19uZXcoKGZpbHRl
ci51dGY4KCkpLmRhdGEoKSkpOworICAgIHdoaWxlIChjb25zdCBjaGFyKiBuYW1lID0gZ19kaXJf
cmVhZF9uYW1lKGRpci5nZXQoKSkpIHsKKyAgICAgICAgaWYgKCFnX3BhdHRlcm5fbWF0Y2hfc3Ry
aW5nKHBzcGVjLmdldCgpLCBuYW1lKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAg
IEdVbmlxdWVQdHI8Z2NoYXI+IGVudHJ5KGdfYnVpbGRfZmlsZW5hbWUoZmlsZW5hbWUuZ2V0KCks
IG5hbWUsIG51bGxwdHIpKTsKKyAgICAgICAgZW50cmllcy5hcHBlbmQoc3RyaW5nRnJvbUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihlbnRyeS5nZXQoKSkpOworICAgIH0KKworICAgIHJldHVybiBl
bnRyaWVzOworfQorCitTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVm
aXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKQoreworICAgIEdVbmlxdWVQdHI8Z2NoYXI+
IGZpbGVuYW1lKGdfc3RyZHVwX3ByaW50ZigiJXMlcyIsIHByZWZpeC51dGY4KCkuZGF0YSgpLCBj
cmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkudXRmOCgpLmRhdGEoKSkpOworICAgIEdVbmlxdWVQ
dHI8Z2NoYXI+IHRlbXBQYXRoKGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdG1wX2RpcigpLCBmaWxl
bmFtZS5nZXQoKSwgTlVMTCkpOworICAgIEdSZWZQdHI8R0ZpbGU+IGZpbGUgPSBhZG9wdEdSZWYo
Z19maWxlX25ld19mb3JfcGF0aCh0ZW1wUGF0aC5nZXQoKSkpOworCisgICAgaGFuZGxlID0gZ19m
aWxlX2NyZWF0ZV9yZWFkd3JpdGUoZmlsZS5nZXQoKSwgR19GSUxFX0NSRUFURV9OT05FLCAwLCAw
KTsKKyAgICBpZiAoIWlzSGFuZGxlVmFsaWQoaGFuZGxlKSkKKyAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOworICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KHRlbXBQYXRoLmdldCgpKTsKK30KKwor
UGxhdGZvcm1GaWxlSGFuZGxlIG9wZW5GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5N
b2RlIG1vZGUpCit7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUgPSB1bmVzY2FwZWRG
aWxlbmFtZShwYXRoKTsKKyAgICBpZiAoIWZpbGVuYW1lKQorICAgICAgICByZXR1cm4gaW52YWxp
ZFBsYXRmb3JtRmlsZUhhbmRsZTsKKworICAgIEdSZWZQdHI8R0ZpbGU+IGZpbGUgPSBhZG9wdEdS
ZWYoZ19maWxlX25ld19mb3JfcGF0aChmaWxlbmFtZS5nZXQoKSkpOworICAgIEdGaWxlSU9TdHJl
YW0qIGlvU3RyZWFtID0gMDsKKyAgICBpZiAobW9kZSA9PSBGaWxlT3Blbk1vZGU6OlJlYWQpCisg
ICAgICAgIGlvU3RyZWFtID0gZ19maWxlX29wZW5fcmVhZHdyaXRlKGZpbGUuZ2V0KCksIDAsIDAp
OworICAgIGVsc2UgaWYgKG1vZGUgPT0gRmlsZU9wZW5Nb2RlOjpXcml0ZSkgeworICAgICAgICBp
ZiAoZ19maWxlX3Rlc3QoZmlsZW5hbWUuZ2V0KCksIHN0YXRpY19jYXN0PEdGaWxlVGVzdD4oR19G
SUxFX1RFU1RfRVhJU1RTIHwgR19GSUxFX1RFU1RfSVNfUkVHVUxBUikpKQorICAgICAgICAgICAg
aW9TdHJlYW0gPSBnX2ZpbGVfb3Blbl9yZWFkd3JpdGUoZmlsZS5nZXQoKSwgMCwgMCk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIGlvU3RyZWFtID0gZ19maWxlX2NyZWF0ZV9yZWFkd3JpdGUo
ZmlsZS5nZXQoKSwgR19GSUxFX0NSRUFURV9OT05FLCAwLCAwKTsKKyAgICB9CisKKyAgICByZXR1
cm4gaW9TdHJlYW07Cit9CisKK3ZvaWQgY2xvc2VGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFu
ZGxlKQoreworICAgIGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUpKQorICAgICAgICByZXR1cm47
CisKKyAgICBnX2lvX3N0cmVhbV9jbG9zZShHX0lPX1NUUkVBTShoYW5kbGUpLCAwLCAwKTsKKyAg
ICBnX29iamVjdF91bnJlZihoYW5kbGUpOworICAgIGhhbmRsZSA9IGludmFsaWRQbGF0Zm9ybUZp
bGVIYW5kbGU7Cit9CisKK2xvbmcgbG9uZyBzZWVrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFu
ZGxlLCBsb25nIGxvbmcgb2Zmc2V0LCBGaWxlU2Vla09yaWdpbiBvcmlnaW4pCit7CisgICAgR1Nl
ZWtUeXBlIHNlZWtUeXBlID0gR19TRUVLX1NFVDsKKyAgICBzd2l0Y2ggKG9yaWdpbikgeworICAg
IGNhc2UgRmlsZVNlZWtPcmlnaW46OkJlZ2lubmluZzoKKyAgICAgICAgc2Vla1R5cGUgPSBHX1NF
RUtfU0VUOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZpbGVTZWVrT3JpZ2luOjpDdXJyZW50
OgorICAgICAgICBzZWVrVHlwZSA9IEdfU0VFS19DVVI7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgRmlsZVNlZWtPcmlnaW46OkVuZDoKKyAgICAgICAgc2Vla1R5cGUgPSBHX1NFRUtfRU5EOwor
ICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICB9CisKKyAgICBpZiAoIWdfc2Vla2FibGVfc2VlayhHX1NFRUtBQkxFKGdfaW9fc3Ry
ZWFtX2dldF9pbnB1dF9zdHJlYW0oR19JT19TVFJFQU0oaGFuZGxlKSkpLAorICAgICAgICBvZmZz
ZXQsIHNlZWtUeXBlLCAwLCAwKSkKKyAgICB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9Cisg
ICAgcmV0dXJuIGdfc2Vla2FibGVfdGVsbChHX1NFRUtBQkxFKGdfaW9fc3RyZWFtX2dldF9pbnB1
dF9zdHJlYW0oR19JT19TVFJFQU0oaGFuZGxlKSkpKTsKK30KKworaW50IHdyaXRlVG9GaWxlKFBs
YXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCit7
CisgICAgZ3NpemUgYnl0ZXNXcml0dGVuOworICAgIGdfb3V0cHV0X3N0cmVhbV93cml0ZV9hbGwo
Z19pb19zdHJlYW1fZ2V0X291dHB1dF9zdHJlYW0oR19JT19TVFJFQU0oaGFuZGxlKSksCisgICAg
ICAgIGRhdGEsIGxlbmd0aCwgJmJ5dGVzV3JpdHRlbiwgMCwgMCk7CisgICAgcmV0dXJuIGJ5dGVz
V3JpdHRlbjsKK30KKworaW50IHJlYWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxl
LCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQoreworICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBl
cnJvcjsKKyAgICBkbyB7CisgICAgICAgIGdzc2l6ZSBieXRlc1JlYWQgPSBnX2lucHV0X3N0cmVh
bV9yZWFkKGdfaW9fc3RyZWFtX2dldF9pbnB1dF9zdHJlYW0oR19JT19TVFJFQU0oaGFuZGxlKSks
CisgICAgICAgICAgICBkYXRhLCBsZW5ndGgsIDAsICZlcnJvci5vdXRQdHIoKSk7CisgICAgICAg
IGlmIChieXRlc1JlYWQgPj0gMCkKKyAgICAgICAgICAgIHJldHVybiBieXRlc1JlYWQ7CisgICAg
fSB3aGlsZSAoZXJyb3IgJiYgZXJyb3ItPmNvZGUgPT0gR19GSUxFX0VSUk9SX0lOVFIpOworICAg
IHJldHVybiAtMTsKK30KKworYm9vbCBtb3ZlRmlsZShjb25zdCBTdHJpbmcmIG9sZFBhdGgsIGNv
bnN0IFN0cmluZyYgbmV3UGF0aCkKK3sKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBvbGRGaWxlbmFt
ZSA9IHVuZXNjYXBlZEZpbGVuYW1lKG9sZFBhdGgpOworICAgIGlmICghb2xkRmlsZW5hbWUpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IG5ld0ZpbGVuYW1l
ID0gdW5lc2NhcGVkRmlsZW5hbWUobmV3UGF0aCk7CisgICAgaWYgKCFuZXdGaWxlbmFtZSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgR1JlZlB0cjxHRmlsZT4gb2xkRmlsZSA9IGFkb3B0
R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKG9sZEZpbGVuYW1lLmdldCgpKSk7CisgICAgR1JlZlB0
cjxHRmlsZT4gbmV3RmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKG5ld0ZpbGVu
YW1lLmdldCgpKSk7CisKKyAgICByZXR1cm4gZ19maWxlX21vdmUob2xkRmlsZS5nZXQoKSwgbmV3
RmlsZS5nZXQoKSwgR19GSUxFX0NPUFlfT1ZFUldSSVRFLCBudWxscHRyLCBudWxscHRyLCBudWxs
cHRyLCBudWxscHRyKTsKK30KKworYm9vbCBoYXJkTGlua09yQ29weUZpbGUoY29uc3QgU3RyaW5n
JiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb24pCit7CisjaWYgT1MoV0lORE9XUykK
KyAgICByZXR1cm4gISE6OkNvcHlGaWxlKHNvdXJjZS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5h
dGlvbigpLmRhdGEoKSwgZGVzdGluYXRpb24uY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24o
KS5kYXRhKCksIFRSVUUpOworI2Vsc2UKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBzb3VyY2VGaWxl
bmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHNvdXJjZSk7CisgICAgaWYgKCFzb3VyY2VGaWxlbmFt
ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZGVzdGlu
YXRpb25GaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKGRlc3RpbmF0aW9uKTsKKyAgICBpZiAo
IWRlc3RpbmF0aW9uRmlsZW5hbWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICgh
bGluayhzb3VyY2VGaWxlbmFtZS5nZXQoKSwgZGVzdGluYXRpb25GaWxlbmFtZS5nZXQoKSkpCisg
ICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gSGFyZCBsaW5rIGZhaWxlZC4gUGVyZm9ybSBh
IGNvcHkgaW5zdGVhZC4KKyAgICBHUmVmUHRyPEdGaWxlPiBzb3VyY2VGaWxlID0gYWRvcHRHUmVm
KGdfZmlsZV9uZXdfZm9yX3BhdGgoc291cmNlRmlsZW5hbWUuZ2V0KCkpKTsKKyAgICBHUmVmUHRy
PEdGaWxlPiBkZXN0aW5hdGlvbkZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0aChk
ZXN0aW5hdGlvbkZpbGVuYW1lLmdldCgpKSk7CisgICAgcmV0dXJuIGdfZmlsZV9jb3B5KHNvdXJj
ZUZpbGUuZ2V0KCksIGRlc3RpbmF0aW9uRmlsZS5nZXQoKSwgR19GSUxFX0NPUFlfTk9ORSwgbnVs
bHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cik7CisjZW5kaWYKK30KKworT3B0aW9uYWw8
aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0IENTdHJpbmcmIGZzRmlsZSkKK3sKKyAgICBH
VW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKGZzRmlsZS5kYXRh
KCkpOworICAgIGlmICghZmlsZW5hbWUpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisK
KyAgICBHUmVmUHRyPEdGaWxlPiBmaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgo
ZmlsZW5hbWUuZ2V0KCkpKTsKKyAgICBHUmVmUHRyPEdGaWxlSW5mbz4gZmlsZUluZm8gPSBhZG9w
dEdSZWYoZ19maWxlX3F1ZXJ5X2ZpbGVzeXN0ZW1faW5mbyhmaWxlLmdldCgpLCBHX0ZJTEVfQVRU
UklCVVRFX1VOSVhfREVWSUNFLCBudWxscHRyLCBudWxscHRyKSk7CisgICAgaWYgKCFmaWxlSW5m
bykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiBnX2ZpbGVfaW5m
b19nZXRfYXR0cmlidXRlX3VpbnQzMihmaWxlSW5mby5nZXQoKSwgR19GSUxFX0FUVFJJQlVURV9V
TklYX0RFVklDRSk7Cit9CisKKyNpZiBVU0UoRklMRV9MT0NLKQorYm9vbCBsb2NrRmlsZShQbGF0
Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBPcHRpb25TZXQ8RmlsZUxvY2tNb2RlPiBsb2NrTW9kZSkK
K3sKKyAgICBDT01QSUxFX0FTU0VSVChMT0NLX1NIID09IFdURjo6ZW51bVRvVW5kZXJseWluZ1R5
cGUoRmlsZUxvY2tNb2RlOjpTaGFyZWQpLCBMb2NrU2hhcmVkRW5jb2RpbmdJc0FzRXhwZWN0ZWQp
OworICAgIENPTVBJTEVfQVNTRVJUKExPQ0tfRVggPT0gV1RGOjplbnVtVG9VbmRlcmx5aW5nVHlw
ZShGaWxlTG9ja01vZGU6OkV4Y2x1c2l2ZSksIExvY2tFeGNsdXNpdmVFbmNvZGluZ0lzQXNFeHBl
Y3RlZCk7CisgICAgQ09NUElMRV9BU1NFUlQoTE9DS19OQiA9PSBXVEY6OmVudW1Ub1VuZGVybHlp
bmdUeXBlKEZpbGVMb2NrTW9kZTo6Tm9uYmxvY2tpbmcpLCBMb2NrTm9uYmxvY2tpbmdFbmNvZGlu
Z0lzQXNFeHBlY3RlZCk7CisgICAgYXV0byogaW5wdXRTdHJlYW0gPSBnX2lvX3N0cmVhbV9nZXRf
aW5wdXRfc3RyZWFtKEdfSU9fU1RSRUFNKGhhbmRsZSkpOworICAgIGludCByZXN1bHQgPSBmbG9j
ayhnX2ZpbGVfZGVzY3JpcHRvcl9iYXNlZF9nZXRfZmQoR19GSUxFX0RFU0NSSVBUT1JfQkFTRUQo
aW5wdXRTdHJlYW0pKSwgbG9ja01vZGUudG9SYXcoKSk7CisgICAgcmV0dXJuIHJlc3VsdCAhPSAt
MTsKK30KKworYm9vbCB1bmxvY2tGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUpCit7Cisg
ICAgYXV0byogaW5wdXRTdHJlYW0gPSBnX2lvX3N0cmVhbV9nZXRfaW5wdXRfc3RyZWFtKEdfSU9f
U1RSRUFNKGhhbmRsZSkpOworICAgIGludCByZXN1bHQgPSBmbG9jayhnX2ZpbGVfZGVzY3JpcHRv
cl9iYXNlZF9nZXRfZmQoR19GSUxFX0RFU0NSSVBUT1JfQkFTRUQoaW5wdXRTdHJlYW0pKSwgTE9D
S19VTik7CisgICAgcmV0dXJuIHJlc3VsdCAhPSAtMTsKK30KKyNlbmRpZiAvLyBVU0UoRklMRV9M
T0NLKQorCit9IC8vIG5hbWVzcGFjZSBGaWxlU3lzdGVtCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL21hYy9GaWxlU3lzdGVtTWFjLm1tIGIvU291cmNlL1dU
Ri93dGYvbWFjL0ZpbGVTeXN0ZW1NYWMubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTI2OTJhMTZmYmE1YjE1Mjc4
Yzc3MmY3NTZlNTUzYTExMDc1NWYyYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L21hYy9GaWxlU3lzdGVtTWFjLm1tCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDctMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KKworI2lmIFBM
QVRGT1JNKE1BQykKKworI2ltcG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CisjaW1wb3J0
IDx3dGYvc3BpL21hYy9NZXRhZGF0YVNQSS5oPgorI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CisKK25hbWVzcGFjZSBXVEYgeworCitib29sIEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGly
ZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBhdXRvIGZpbGVNYW5hZ2VyID0gYWRv
cHROUyhbW05TRmlsZU1hbmFnZXIgYWxsb2NdIGluaXRdKTsKKworICAgIGlmIChOU0FycmF5ICpk
aXJlY3RvcnlDb250ZW50cyA9IFtmaWxlTWFuYWdlciBjb250ZW50c09mRGlyZWN0b3J5QXRQYXRo
OnBhdGggZXJyb3I6bnVsbHB0cl0pIHsKKyAgICAgICAgLy8gRXhwbGljaXRseSBsb29rIGZvciBh
bmQgZGVsZXRlIC5EU19TdG9yZSBmaWxlcy4KKyAgICAgICAgaWYgKGRpcmVjdG9yeUNvbnRlbnRz
LmNvdW50ID09IDEgJiYgW2RpcmVjdG9yeUNvbnRlbnRzLmZpcnN0T2JqZWN0IGlzRXF1YWxUb1N0
cmluZzpAIi5EU19TdG9yZSJdKQorICAgICAgICAgICAgW2ZpbGVNYW5hZ2VyIHJlbW92ZUl0ZW1B
dFBhdGg6W3BhdGggc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmRpcmVjdG9yeUNvbnRl
bnRzLmZpcnN0T2JqZWN0XSBlcnJvcjpudWxscHRyXTsKKyAgICB9CisKKyAgICAvLyBybWRpcigu
Li4pIHJldHVybnMgMCBvbiBzdWNjZXNzZnVsIGRlbGV0aW9uIG9mIHRoZSBwYXRoIGFuZCBub24t
emVybyBpbiBhbnkgb3RoZXIgY2FzZSAoaW5jbHVkaW5nIGludmFsaWQgcGVybWlzc2lvbnMgb3Ig
bm9uLWV4aXN0ZW50IGZpbGUpCisgICAgcmV0dXJuICFybWRpcihGaWxlU3lzdGVtOjpmaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpKTsKK30KKwordm9pZCBGaWxlU3lzdGVtOjpz
ZXRNZXRhZGF0YVVSTChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbWV0YWRhdGFV
UkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpCit7CisgICAgU3RyaW5nIHVybFN0cmlu
ZzsKKyAgICBpZiAoTlNVUkwgKnVybCA9IFVSTFdpdGhVc2VyVHlwZWRTdHJpbmcobWV0YWRhdGFV
UkxTdHJpbmcsIG5pbCkpCisgICAgICAgIHVybFN0cmluZyA9IFdURjo6dXNlclZpc2libGVTdHJp
bmcoV1RGOjpVUkxCeVJlbW92aW5nVXNlckluZm8odXJsKSk7CisgICAgZWxzZQorICAgICAgICB1
cmxTdHJpbmcgPSBtZXRhZGF0YVVSTFN0cmluZzsKKworICAgIC8vIENhbGwgTWV0YWRhdGEgQVBJ
IG9uIGEgYmFja2dyb3VuZCBxdWV1ZSBiZWNhdXNlIGl0IGNhbiB0YWtlIHNvbWUgdGltZS4KKyAg
ICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVF
X1BSSU9SSVRZX0RFRkFVTFQsIDApLCBbcGF0aCA9IHBhdGguaXNvbGF0ZWRDb3B5KCksIHVybFN0
cmluZyA9IHVybFN0cmluZy5pc29sYXRlZENvcHkoKSwgcmVmZXJyZXIgPSByZWZlcnJlci5pc29s
YXRlZENvcHkoKV0geworICAgICAgICBhdXRvIGl0ZW0gPSBhZG9wdENGKE1ESXRlbUNyZWF0ZShr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCBwYXRoLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpKTsKKyAgICAg
ICAgaWYgKCFpdGVtKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGF1dG8gd2hlcmVG
cm9tQXR0cmlidXRlID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aE9i
amVjdHM6dXJsU3RyaW5nLCBuaWxdKTsKKyAgICAgICAgaWYgKCFyZWZlcnJlci5pc051bGwoKSkK
KyAgICAgICAgICAgIFt3aGVyZUZyb21BdHRyaWJ1dGUgYWRkT2JqZWN0OnJlZmVycmVyXTsKKwor
ICAgICAgICBNREl0ZW1TZXRBdHRyaWJ1dGUoaXRlbS5nZXQoKSwga01ESXRlbVdoZXJlRnJvbXMs
IChfX2JyaWRnZSBDRkFycmF5UmVmKXdoZXJlRnJvbUF0dHJpYnV0ZS5nZXQoKSk7CisgICAgICAg
IE1ESXRlbVNldEF0dHJpYnV0ZShpdGVtLmdldCgpLCBrTURJdGVtRG93bmxvYWRlZERhdGUsIChf
X2JyaWRnZSBDRkFycmF5UmVmKUBbIFtOU0RhdGUgZGF0ZV0gXSk7CisgICAgfSk7Cit9CisKK2Jv
b2wgRmlsZVN5c3RlbTo6Y2FuRXhjbHVkZUZyb21CYWNrdXAoKQoreworICAgIHJldHVybiB0cnVl
OworfQorCitib29sIEZpbGVTeXN0ZW06OmV4Y2x1ZGVGcm9tQmFja3VwKGNvbnN0IFN0cmluZyYg
cGF0aCkKK3sKKyAgICAvLyBJdCBpcyBjcml0aWNhbCB0byBwYXNzIEZBTFNFIGZvciBleGNsdWRl
QnlQYXRoIGJlY2F1c2UgZXhjbHVkaW5nIGJ5IHBhdGggcmVxdWlyZXMgcm9vdCBwcml2aWxlZ2Vz
LgorICAgIENTQmFja3VwU2V0SXRlbUV4Y2x1ZGVkKEZpbGVTeXN0ZW06OnBhdGhBc1VSTChwYXRo
KS5nZXQoKSwgVFJVRSwgRkFMU0UpOworICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5hbWVz
cGFjZSBXVEYKKworI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9G
aWxlU3lzdGVtUE9TSVguY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ2YTQwZDk5Y2RjNTAyN2FjOTRiOTc5OWZi
ZWI1YjNhZDg5ZWY1ZDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9G
aWxlU3lzdGVtUE9TSVguY3BwCkBAIC0wLDAgKzEsNDk2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA3LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9y
IHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CisKKyNpbmNsdWRlIDxkaXJlbnQuaD4KKyNpbmNsdWRl
IDxlcnJuby5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8Zm5tYXRjaC5oPgorI2lu
Y2x1ZGUgPGxpYmdlbi5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3lzL3N0YXQu
aD4KKyNpbmNsdWRlIDxzeXMvc3RhdHZmcy5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2lu
Y2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CisjaW5jbHVkZSA8
d3RmL0ZpbGVNZXRhZGF0YS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CisKK25hbWVzcGFjZSBXVEYgeworCituYW1lc3BhY2UgRmlsZVN5c3RlbUltcGwgewor
Citib29sIGZpbGVFeGlzdHMoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIGlmIChwYXRoLmlz
TnVsbCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBDU3RyaW5nIGZzUmVwID0gZmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworCisgICAgaWYgKCFmc1JlcC5kYXRhKCkgfHwg
ZnNSZXAuZGF0YSgpWzBdID09ICdcMCcpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJl
dHVybiBhY2Nlc3MoZnNSZXAuZGF0YSgpLCBGX09LKSAhPSAtMTsKK30KKworYm9vbCBkZWxldGVG
aWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKHBhdGgpOworCisgICAgaWYgKCFmc1JlcC5kYXRhKCkgfHwgZnNSZXAu
ZGF0YSgpWzBdID09ICdcMCcpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIHVubGlu
ayguLi4pIHJldHVybnMgMCBvbiBzdWNjZXNzZnVsIGRlbGV0aW9uIG9mIHRoZSBwYXRoIGFuZCBu
b24temVybyBpbiBhbnkgb3RoZXIgY2FzZSAoaW5jbHVkaW5nIGludmFsaWQgcGVybWlzc2lvbnMg
b3Igbm9uLWV4aXN0ZW50IGZpbGUpCisgICAgcmV0dXJuICF1bmxpbmsoZnNSZXAuZGF0YSgpKTsK
K30KKworUGxhdGZvcm1GaWxlSGFuZGxlIG9wZW5GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmls
ZU9wZW5Nb2RlIG1vZGUpCit7CisgICAgQ1N0cmluZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihwYXRoKTsKKworICAgIGlmIChmc1JlcC5pc051bGwoKSkKKyAgICAgICAgcmV0dXJu
IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7CisKKyAgICBpbnQgcGxhdGZvcm1GbGFnID0gMDsK
KyAgICBpZiAobW9kZSA9PSBGaWxlT3Blbk1vZGU6OlJlYWQpCisgICAgICAgIHBsYXRmb3JtRmxh
ZyB8PSBPX1JET05MWTsKKyAgICBlbHNlIGlmIChtb2RlID09IEZpbGVPcGVuTW9kZTo6V3JpdGUp
CisgICAgICAgIHBsYXRmb3JtRmxhZyB8PSAoT19XUk9OTFkgfCBPX0NSRUFUIHwgT19UUlVOQyk7
CisjaWYgT1MoREFSV0lOKQorICAgIGVsc2UgaWYgKG1vZGUgPT0gRmlsZU9wZW5Nb2RlOjpFdmVu
dHNPbmx5KQorICAgICAgICBwbGF0Zm9ybUZsYWcgfD0gT19FVlRPTkxZOworI2VuZGlmCisKKyAg
ICByZXR1cm4gb3Blbihmc1JlcC5kYXRhKCksIHBsYXRmb3JtRmxhZywgMDY2Nik7Cit9CisKK3Zv
aWQgY2xvc2VGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKQoreworICAgIGlmIChpc0hh
bmRsZVZhbGlkKGhhbmRsZSkpIHsKKyAgICAgICAgY2xvc2UoaGFuZGxlKTsKKyAgICAgICAgaGFu
ZGxlID0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKKyAgICB9Cit9CisKK2xvbmcgbG9uZyBz
ZWVrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0LCBGaWxl
U2Vla09yaWdpbiBvcmlnaW4pCit7CisgICAgaW50IHdoZW5jZSA9IFNFRUtfU0VUOworICAgIHN3
aXRjaCAob3JpZ2luKSB7CisgICAgY2FzZSBGaWxlU2Vla09yaWdpbjo6QmVnaW5uaW5nOgorICAg
ICAgICB3aGVuY2UgPSBTRUVLX1NFVDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGaWxlU2Vl
a09yaWdpbjo6Q3VycmVudDoKKyAgICAgICAgd2hlbmNlID0gU0VFS19DVVI7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgRmlsZVNlZWtPcmlnaW46OkVuZDoKKyAgICAgICAgd2hlbmNlID0gU0VF
S19FTkQ7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIH0KKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8bG9uZyBsb25nPihsc2Vl
ayhoYW5kbGUsIG9mZnNldCwgd2hlbmNlKSk7Cit9CisKK2Jvb2wgdHJ1bmNhdGVGaWxlKFBsYXRm
b3JtRmlsZUhhbmRsZSBoYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQpCit7CisgICAgLy8gZnRydW5j
YXRlIHJldHVybnMgMCB0byBpbmRpY2F0ZSB0aGUgc3VjY2Vzcy4KKyAgICByZXR1cm4gIWZ0cnVu
Y2F0ZShoYW5kbGUsIG9mZnNldCk7Cit9CisKK2ludCB3cml0ZVRvRmlsZShQbGF0Zm9ybUZpbGVI
YW5kbGUgaGFuZGxlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQoreworICAgIGRvIHsK
KyAgICAgICAgaW50IGJ5dGVzV3JpdHRlbiA9IHdyaXRlKGhhbmRsZSwgZGF0YSwgc3RhdGljX2Nh
c3Q8c2l6ZV90PihsZW5ndGgpKTsKKyAgICAgICAgaWYgKGJ5dGVzV3JpdHRlbiA+PSAwKQorICAg
ICAgICAgICAgcmV0dXJuIGJ5dGVzV3JpdHRlbjsKKyAgICB9IHdoaWxlIChlcnJubyA9PSBFSU5U
Uik7CisgICAgcmV0dXJuIC0xOworfQorCitpbnQgcmVhZEZyb21GaWxlKFBsYXRmb3JtRmlsZUhh
bmRsZSBoYW5kbGUsIGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCit7CisgICAgZG8geworICAgICAg
ICBpbnQgYnl0ZXNSZWFkID0gcmVhZChoYW5kbGUsIGRhdGEsIHN0YXRpY19jYXN0PHNpemVfdD4o
bGVuZ3RoKSk7CisgICAgICAgIGlmIChieXRlc1JlYWQgPj0gMCkKKyAgICAgICAgICAgIHJldHVy
biBieXRlc1JlYWQ7CisgICAgfSB3aGlsZSAoZXJybm8gPT0gRUlOVFIpOworICAgIHJldHVybiAt
MTsKK30KKworI2lmIFVTRShGSUxFX0xPQ0spCitib29sIGxvY2tGaWxlKFBsYXRmb3JtRmlsZUhh
bmRsZSBoYW5kbGUsIE9wdGlvblNldDxGaWxlTG9ja01vZGU+IGxvY2tNb2RlKQoreworICAgIENP
TVBJTEVfQVNTRVJUKExPQ0tfU0ggPT0gV1RGOjplbnVtVG9VbmRlcmx5aW5nVHlwZShGaWxlTG9j
a01vZGU6OlNoYXJlZCksIExvY2tTaGFyZWRFbmNvZGluZ0lzQXNFeHBlY3RlZCk7CisgICAgQ09N
UElMRV9BU1NFUlQoTE9DS19FWCA9PSBXVEY6OmVudW1Ub1VuZGVybHlpbmdUeXBlKEZpbGVMb2Nr
TW9kZTo6RXhjbHVzaXZlKSwgTG9ja0V4Y2x1c2l2ZUVuY29kaW5nSXNBc0V4cGVjdGVkKTsKKyAg
ICBDT01QSUxFX0FTU0VSVChMT0NLX05CID09IFdURjo6ZW51bVRvVW5kZXJseWluZ1R5cGUoRmls
ZUxvY2tNb2RlOjpOb25ibG9ja2luZyksIExvY2tOb25ibG9ja2luZ0VuY29kaW5nSXNBc0V4cGVj
dGVkKTsKKyAgICBpbnQgcmVzdWx0ID0gZmxvY2soaGFuZGxlLCBsb2NrTW9kZS50b1JhdygpKTsK
KyAgICByZXR1cm4gKHJlc3VsdCAhPSAtMSk7Cit9CisKK2Jvb2wgdW5sb2NrRmlsZShQbGF0Zm9y
bUZpbGVIYW5kbGUgaGFuZGxlKQoreworICAgIGludCByZXN1bHQgPSBmbG9jayhoYW5kbGUsIExP
Q0tfVU4pOworICAgIHJldHVybiAocmVzdWx0ICE9IC0xKTsKK30KKyNlbmRpZgorCisjaWYgIVBM
QVRGT1JNKE1BQykKK2Jvb2wgZGVsZXRlRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRo
KQoreworICAgIENTdHJpbmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7
CisKKyAgICBpZiAoIWZzUmVwLmRhdGEoKSB8fCBmc1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gcm1kaXIoLi4uKSByZXR1cm5zIDAgb24gc3Vj
Y2Vzc2Z1bCBkZWxldGlvbiBvZiB0aGUgcGF0aCBhbmQgbm9uLXplcm8gaW4gYW55IG90aGVyIGNh
c2UgKGluY2x1ZGluZyBpbnZhbGlkIHBlcm1pc3Npb25zIG9yIG5vbi1leGlzdGVudCBmaWxlKQor
ICAgIHJldHVybiAhcm1kaXIoZnNSZXAuZGF0YSgpKTsKK30KKyNlbmRpZgorCitib29sIGdldEZp
bGVTaXplKGNvbnN0IFN0cmluZyYgcGF0aCwgbG9uZyBsb25nJiByZXN1bHQpCit7CisgICAgQ1N0
cmluZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKKworICAgIGlmICgh
ZnNSZXAuZGF0YSgpIHx8IGZzUmVwLmRhdGEoKVswXSA9PSAnXDAnKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBzdHJ1Y3Qgc3RhdCBmaWxlSW5mbzsKKworICAgIGlmIChzdGF0KGZzUmVw
LmRhdGEoKSwgJmZpbGVJbmZvKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmVzdWx0
ID0gZmlsZUluZm8uc3Rfc2l6ZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBnZXRGaWxl
U2l6ZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBsb25nIGxvbmcmIHJlc3VsdCkKK3sKKyAg
ICBzdHJ1Y3Qgc3RhdCBmaWxlSW5mbzsKKyAgICBpZiAoZnN0YXQoaGFuZGxlLCAmZmlsZUluZm8p
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXN1bHQgPSBmaWxlSW5mby5zdF9zaXpl
OworICAgIHJldHVybiB0cnVlOworfQorCitPcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZUNyZWF0
aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisjaWYgT1MoREFSV0lOKSB8fCBPUyhPUEVO
QlNEKSB8fCBPUyhORVRCU0QpIHx8IE9TKEZSRUVCU0QpCisgICAgQ1N0cmluZyBmc1JlcCA9IGZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKKworICAgIGlmICghZnNSZXAuZGF0YSgpIHx8
IGZzUmVwLmRhdGEoKVswXSA9PSAnXDAnKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
CisgICAgc3RydWN0IHN0YXQgZmlsZUluZm87CisKKyAgICBpZiAoc3RhdChmc1JlcC5kYXRhKCks
ICZmaWxlSW5mbykpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4g
V2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKGZpbGVJbmZvLnN0X2JpcnRodGltZSk7CisjZWxzZQor
ICAgIFVOVVNFRF9QQVJBTShwYXRoKTsKKyAgICByZXR1cm4gV1RGOjpudWxsb3B0OworI2VuZGlm
Cit9CisKK09wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBT
dHJpbmcmIHBhdGgpCit7CisgICAgQ1N0cmluZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihwYXRoKTsKKworICAgIGlmICghZnNSZXAuZGF0YSgpIHx8IGZzUmVwLmRhdGEoKVswXSA9
PSAnXDAnKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgc3RydWN0IHN0YXQg
ZmlsZUluZm87CisKKyAgICBpZiAoc3RhdChmc1JlcC5kYXRhKCksICZmaWxlSW5mbykpCisgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gV2FsbFRpbWU6OmZyb21SYXdT
ZWNvbmRzKGZpbGVJbmZvLnN0X210aW1lKTsKK30KKworc3RhdGljIEZpbGVNZXRhZGF0YTo6VHlw
ZSB0b0ZpbGVNZXRhdGFUeXBlKHN0cnVjdCBzdGF0IGZpbGVJbmZvKQoreworICAgIGlmIChTX0lT
RElSKGZpbGVJbmZvLnN0X21vZGUpKQorICAgICAgICByZXR1cm4gRmlsZU1ldGFkYXRhOjpUeXBl
OjpEaXJlY3Rvcnk7CisgICAgaWYgKFNfSVNMTksoZmlsZUluZm8uc3RfbW9kZSkpCisgICAgICAg
IHJldHVybiBGaWxlTWV0YWRhdGE6OlR5cGU6OlN5bWJvbGljTGluazsKKyAgICByZXR1cm4gRmls
ZU1ldGFkYXRhOjpUeXBlOjpGaWxlOworfQorCitzdGF0aWMgT3B0aW9uYWw8RmlsZU1ldGFkYXRh
PiBmaWxlTWV0YWRhdGFVc2luZ0Z1bmN0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCwgaW50ICgqc3Rh
dEZ1bmMpKGNvbnN0IGNoYXIqLCBzdHJ1Y3Qgc3RhdCopKQoreworICAgIENTdHJpbmcgZnNSZXAg
PSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisKKyAgICBpZiAoIWZzUmVwLmRhdGEo
KSB8fCBmc1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKworICAgIHN0cnVjdCBzdGF0IGZpbGVJbmZvOworICAgIGlmIChzdGF0RnVuYyhmc1JlcC5k
YXRhKCksICZmaWxlSW5mbykpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBT
dHJpbmcgZmlsZW5hbWUgPSBwYXRoR2V0RmlsZU5hbWUocGF0aCk7CisgICAgYm9vbCBpc0hpZGRl
biA9ICFmaWxlbmFtZS5pc0VtcHR5KCkgJiYgZmlsZW5hbWVbMF0gPT0gJy4nOworICAgIHJldHVy
biBGaWxlTWV0YWRhdGEgeworICAgICAgICBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoZmlsZUlu
Zm8uc3RfbXRpbWUpLAorICAgICAgICBmaWxlSW5mby5zdF9zaXplLAorICAgICAgICBpc0hpZGRl
biwKKyAgICAgICAgdG9GaWxlTWV0YXRhVHlwZShmaWxlSW5mbykKKyAgICB9OworfQorCitPcHRp
b25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YShjb25zdCBTdHJpbmcmIHBhdGgpCit7Cisg
ICAgcmV0dXJuIGZpbGVNZXRhZGF0YVVzaW5nRnVuY3Rpb24ocGF0aCwgJmxzdGF0KTsKK30KKwor
T3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyhjb25z
dCBTdHJpbmcmIHBhdGgpCit7CisgICAgcmV0dXJuIGZpbGVNZXRhZGF0YVVzaW5nRnVuY3Rpb24o
cGF0aCwgJnN0YXQpOworfQorCitib29sIGNyZWF0ZVN5bWJvbGljTGluayhjb25zdCBTdHJpbmcm
IHRhcmdldFBhdGgsIGNvbnN0IFN0cmluZyYgc3ltYm9saWNMaW5rUGF0aCkKK3sKKyAgICBDU3Ry
aW5nIHRhcmdldFBhdGhGU1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih0YXJnZXRQYXRo
KTsKKyAgICBpZiAoIXRhcmdldFBhdGhGU1JlcC5kYXRhKCkgfHwgdGFyZ2V0UGF0aEZTUmVwLmRh
dGEoKVswXSA9PSAnXDAnKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBDU3RyaW5nIHN5
bWJvbGljTGlua1BhdGhGU1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihzeW1ib2xpY0xp
bmtQYXRoKTsKKyAgICBpZiAoIXN5bWJvbGljTGlua1BhdGhGU1JlcC5kYXRhKCkgfHwgc3ltYm9s
aWNMaW5rUGF0aEZTUmVwLmRhdGEoKVswXSA9PSAnXDAnKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICByZXR1cm4gIXN5bWxpbmsodGFyZ2V0UGF0aEZTUmVwLmRhdGEoKSwgc3ltYm9saWNM
aW5rUGF0aEZTUmVwLmRhdGEoKSk7Cit9CisKK1N0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGNvbXBvbmVudCkKK3sKKyAgICBp
ZiAocGF0aC5lbmRzV2l0aCgnLycpKQorICAgICAgICByZXR1cm4gcGF0aCArIGNvbXBvbmVudDsK
KyAgICByZXR1cm4gcGF0aCArICIvIiArIGNvbXBvbmVudDsKK30KKworU3RyaW5nIHBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudHMoU3RyaW5nVmlldyBwYXRoLCBjb25zdCBWZWN0b3I8U3RyaW5nVmll
dz4mIGNvbXBvbmVudHMpCit7CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxk
ZXIuYXBwZW5kKHBhdGgpOworICAgIGZvciAoYXV0byYgY29tcG9uZW50IDogY29tcG9uZW50cykg
eworICAgICAgICBidWlsZGVyLmFwcGVuZCgnLycpOworICAgICAgICBidWlsZGVyLmFwcGVuZChj
b21wb25lbnQpOworICAgIH0KKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworfQorCiti
b29sIG1ha2VBbGxEaXJlY3Rvcmllcyhjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgQ1N0cmlu
ZyBmdWxsUGF0aCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKKyAgICBpZiAoIWFj
Y2VzcyhmdWxsUGF0aC5kYXRhKCksIEZfT0spKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAg
IGNoYXIqIHAgPSBmdWxsUGF0aC5tdXRhYmxlRGF0YSgpICsgMTsKKyAgICBpbnQgbGVuZ3RoID0g
ZnVsbFBhdGgubGVuZ3RoKCk7CisKKyAgICBpZiAocFtsZW5ndGggLSAxXSA9PSAnLycpCisgICAg
ICAgIHBbbGVuZ3RoIC0gMV0gPSAnXDAnOworICAgIGZvciAoOyAqcDsgKytwKSB7CisgICAgICAg
IGlmICgqcCA9PSAnLycpIHsKKyAgICAgICAgICAgICpwID0gJ1wwJzsKKyAgICAgICAgICAgIGlm
IChhY2Nlc3MoZnVsbFBhdGguZGF0YSgpLCBGX09LKSkgeworICAgICAgICAgICAgICAgIGlmICht
a2RpcihmdWxsUGF0aC5kYXRhKCksIFNfSVJXWFUpKQorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAqcCA9ICcvJzsKKyAgICAgICAg
fQorICAgIH0KKyAgICBpZiAoYWNjZXNzKGZ1bGxQYXRoLmRhdGEoKSwgRl9PSykpIHsKKyAgICAg
ICAgaWYgKG1rZGlyKGZ1bGxQYXRoLmRhdGEoKSwgU19JUldYVSkpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK1N0cmluZyBwYXRoR2V0
RmlsZU5hbWUoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIHJldHVybiBwYXRoLnN1YnN0cmlu
ZyhwYXRoLnJldmVyc2VGaW5kKCcvJykgKyAxKTsKK30KKworU3RyaW5nIGRpcmVjdG9yeU5hbWUo
Y29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIENTdHJpbmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24ocGF0aCk7CisKKyAgICBpZiAoIWZzUmVwLmRhdGEoKSB8fCBmc1JlcC5kYXRh
KClbMF0gPT0gJ1wwJykKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgcmV0dXJuIFN0
cmluZzo6ZnJvbVVURjgoZGlybmFtZShmc1JlcC5tdXRhYmxlRGF0YSgpKSk7Cit9CisKK1ZlY3Rv
cjxTdHJpbmc+IGxpc3REaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcm
IGZpbHRlcikKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiBlbnRyaWVzOworICAgIENTdHJpbmcgY3Bh
dGggPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisgICAgQ1N0cmluZyBjZmlsdGVy
ID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbHRlcik7CisgICAgRElSKiBkaXIgPSBvcGVu
ZGlyKGNwYXRoLmRhdGEoKSk7CisgICAgaWYgKGRpcikgeworICAgICAgICBzdHJ1Y3QgZGlyZW50
KiBkcDsKKyAgICAgICAgd2hpbGUgKChkcCA9IHJlYWRkaXIoZGlyKSkpIHsKKyAgICAgICAgICAg
IGNvbnN0IGNoYXIqIG5hbWUgPSBkcC0+ZF9uYW1lOworICAgICAgICAgICAgaWYgKCFzdHJjbXAo
bmFtZSwgIi4iKSB8fCAhc3RyY21wKG5hbWUsICIuLiIpKQorICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICAgICAgaWYgKGZubWF0Y2goY2ZpbHRlci5kYXRhKCksIG5hbWUsIDApKQor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgY2hhciBmaWxlUGF0aFtQQVRI
X01BWF07CisgICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoZmlsZVBhdGgp
IC0gMSkgPCBzbnByaW50ZihmaWxlUGF0aCwgc2l6ZW9mKGZpbGVQYXRoKSwgIiVzLyVzIiwgY3Bh
dGguZGF0YSgpLCBuYW1lKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsgLy8gYnVmZmVyIG92
ZXJmbG93CisKKyAgICAgICAgICAgIGF1dG8gc3RyaW5nID0gc3RyaW5nRnJvbUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihmaWxlUGF0aCk7CisKKyAgICAgICAgICAgIC8vIFNvbWUgZmlsZSBzeXN0
ZW0gcmVwcmVzZW50YXRpb25zIGNhbm5vdCBiZSByZXByZXNlbnRlZCBhcyBhIFVURi0xNiBzdHJp
bmcsCisgICAgICAgICAgICAvLyBzbyB0aGlzIHN0cmluZyBtaWdodCBiZSBudWxsLgorICAgICAg
ICAgICAgaWYgKCFzdHJpbmcuaXNOdWxsKCkpCisgICAgICAgICAgICAgICAgZW50cmllcy5hcHBl
bmQoV1RGTW92ZShzdHJpbmcpKTsKKyAgICAgICAgfQorICAgICAgICBjbG9zZWRpcihkaXIpOwor
ICAgIH0KKyAgICByZXR1cm4gZW50cmllczsKK30KKworI2lmICFQTEFURk9STShDT0NPQSkKK1N0
cmluZyBzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IGNoYXIqIHBhdGgp
Cit7CisgICAgaWYgKCFwYXRoKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICByZXR1
cm4gU3RyaW5nOjpmcm9tVVRGOChwYXRoKTsKK30KKworQ1N0cmluZyBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIHJldHVybiBwYXRoLnV0ZjgoKTsK
K30KKworYm9vbCBtb3ZlRmlsZShjb25zdCBTdHJpbmcmIG9sZFBhdGgsIGNvbnN0IFN0cmluZyYg
bmV3UGF0aCkKK3sKKyAgICBhdXRvIG9sZEZpbGVuYW1lID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKG9sZFBhdGgpOworICAgIGlmIChvbGRGaWxlbmFtZS5pc051bGwoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgYXV0byBuZXdGaWxlbmFtZSA9IGZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihuZXdQYXRoKTsKKyAgICBpZiAobmV3RmlsZW5hbWUuaXNOdWxsKCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIHJldHVybiByZW5hbWUob2xkRmlsZW5hbWUuZGF0YSgpLCBuZXdG
aWxlbmFtZS5kYXRhKCkpICE9IC0xOworfQorCitib29sIGdldFZvbHVtZUZyZWVTcGFjZShjb25z
dCBTdHJpbmcmIHBhdGgsIHVpbnQ2NF90JiBmcmVlU3BhY2UpCit7CisgICAgc3RydWN0IHN0YXR2
ZnMgZmlsZVN5c3RlbVN0YXQ7CisgICAgaWYgKHN0YXR2ZnMoZmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKHBhdGgpLmRhdGEoKSwgJmZpbGVTeXN0ZW1TdGF0KSkgeworICAgICAgICBmcmVlU3BhY2Ug
PSBmaWxlU3lzdGVtU3RhdC5mX2JhdmFpbCAqIGZpbGVTeXN0ZW1TdGF0LmZfZnJzaXplOworICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorI2VuZGlmCisK
KyNpZiAhT1MoREFSV0lOKQorU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYg
cHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKK3sKKyAgICBjaGFyIGJ1ZmZlcltQ
QVRIX01BWF07CisgICAgY29uc3QgY2hhciogdG1wRGlyID0gZ2V0ZW52KCJUTVBESVIiKTsKKwor
ICAgIGlmICghdG1wRGlyKQorICAgICAgICB0bXBEaXIgPSAiL3RtcCI7CisKKyAgICBpZiAoc25w
cmludGYoYnVmZmVyLCBQQVRIX01BWCwgIiVzLyVzWFhYWFhYIiwgdG1wRGlyLCBwcmVmaXgudXRm
OCgpLmRhdGEoKSkgPj0gUEFUSF9NQVgpCisgICAgICAgIGdvdG8gZW5kOworCisgICAgaGFuZGxl
ID0gbWtzdGVtcChidWZmZXIpOworICAgIGlmIChoYW5kbGUgPCAwKQorICAgICAgICBnb3RvIGVu
ZDsKKworICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZlcik7CisKK2VuZDoKKyAgICBo
YW5kbGUgPSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOworICAgIHJldHVybiBTdHJpbmcoKTsK
K30KKyNlbmRpZgorCitib29sIGhhcmRMaW5rT3JDb3B5RmlsZShjb25zdCBTdHJpbmcmIHNvdXJj
ZSwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbikKK3sKKyAgICBpZiAoc291cmNlLmlzRW1wdHko
KSB8fCBkZXN0aW5hdGlvbi5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IENTdHJpbmcgZnNTb3VyY2UgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oc291cmNlKTsKKyAg
ICBpZiAoIWZzU291cmNlLmRhdGEoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgQ1N0
cmluZyBmc0Rlc3RpbmF0aW9uID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRlc3RpbmF0aW9u
KTsKKyAgICBpZiAoIWZzRGVzdGluYXRpb24uZGF0YSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBpZiAoIWxpbmsoZnNTb3VyY2UuZGF0YSgpLCBmc0Rlc3RpbmF0aW9uLmRhdGEoKSkp
CisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gSGFyZCBsaW5rIGZhaWxlZC4gUGVyZm9y
bSBhIGNvcHkgaW5zdGVhZC4KKyAgICBhdXRvIGhhbmRsZSA9IG9wZW4oZnNEZXN0aW5hdGlvbi5k
YXRhKCksIE9fV1JPTkxZIHwgT19DUkVBVCB8IE9fRVhDTCwgMDY2Nik7CisgICAgaWYgKGhhbmRs
ZSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYm9vbCBhcHBlbmRSZXN1bHQg
PSBhcHBlbmRGaWxlQ29udGVudHNUb0ZpbGVIYW5kbGUoc291cmNlLCBoYW5kbGUpOworICAgIGNs
b3NlKGhhbmRsZSk7CisKKyAgICAvLyBJZiB0aGUgY29weSBmYWlsZWQsIGRlbGV0ZSB0aGUgdW51
c2FibGUgZmlsZS4KKyAgICBpZiAoIWFwcGVuZFJlc3VsdCkKKyAgICAgICAgdW5saW5rKGZzRGVz
dGluYXRpb24uZGF0YSgpKTsKKworICAgIHJldHVybiBhcHBlbmRSZXN1bHQ7Cit9CisKK09wdGlv
bmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCit7Cisg
ICAgc3RydWN0IHN0YXQgZmlsZVN0YXQ7CisgICAgaWYgKHN0YXQoZnNGaWxlLmRhdGEoKSwgJmZp
bGVTdGF0KSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVy
biBmaWxlU3RhdC5zdF9kZXY7Cit9CisKK1N0cmluZyByZWFsUGF0aChjb25zdCBTdHJpbmcmIGZp
bGVQYXRoKQoreworICAgIENTdHJpbmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
ZmlsZVBhdGgpOworICAgIGNoYXIgcmVzb2x2ZWROYW1lW1BBVEhfTUFYXTsKKyAgICBjb25zdCBj
aGFyKiByZXN1bHQgPSByZWFscGF0aChmc1JlcC5kYXRhKCksIHJlc29sdmVkTmFtZSk7CisgICAg
cmV0dXJuIHJlc3VsdCA/IFN0cmluZzo6ZnJvbVVURjgocmVzdWx0KSA6IGZpbGVQYXRoOworfQor
Cit9IC8vIG5hbWVzcGFjZSBGaWxlU3lzdGVtCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3NwaS9tYWMvTWV0YWRhdGFTUEkuaCBiL1NvdXJjZS9XVEYvd3Rm
L3NwaS9tYWMvTWV0YWRhdGFTUEkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MTU1NDdjNmI4NTEwZTMwNjE4ZTIy
ODJhZDViNzg0MDE2Y2EzNzIxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvc3Bp
L21hYy9NZXRhZGF0YVNQSS5oCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisKKyNpbmNsdWRlIDxDb3JlU2Vy
dmljZXMvQ29yZVNlcnZpY2VzUHJpdi5oPgorCisjZW5kaWYKKworV1RGX0VYVEVSTl9DX0JFR0lO
CisKK0Jvb2xlYW4gTURJdGVtU2V0QXR0cmlidXRlKE1ESXRlbVJlZiwgQ0ZTdHJpbmdSZWYgbmFt
ZSwgQ0ZUeXBlUmVmIGF0dHIpOworCitXVEZfRVhURVJOX0NfRU5ECmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vRmls
ZVN5c3RlbVdpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzg5ZTc0NDBhZjE1ZmUwZjgwZjM2ZmYwMmRmNWJi
M2M5OTkzZjNkOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lz
dGVtV2luLmNwcApAQCAtMCwwICsxLDU4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNy0y
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
OCBDb2xsYWJvcmEsIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUg
bmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
IDx3dGYvRmlsZVN5c3RlbS5oPgorCisjaW5jbHVkZSA8aW8uaD4KKyNpbmNsdWRlIDxzaGxvYmou
aD4KKyNpbmNsdWRlIDxzaGx3YXBpLmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpbmNsdWRl
IDx3aW5kb3dzLmg+CisjaW5jbHVkZSA8d3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVy
Lmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVNZXRhZGF0YS5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0J1aWxkZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMu
aD4KKyNpbmNsdWRlIDx3dGYvd2luL1BhdGhXYWxrZXIuaD4KKworbmFtZXNwYWNlIFdURiB7CisK
K25hbWVzcGFjZSBGaWxlU3lzdGVtSW1wbCB7CisKK3N0YXRpYyBjb25zdCBVTE9OR0xPTkcga1Nl
Y29uZHNGcm9tRmlsZVRpbWVUb1RpbWV0ID0gMTE2NDQ0NzM2MDA7CisKK3N0YXRpYyBib29sIGdl
dEZpbmREYXRhKFN0cmluZyBwYXRoLCBXSU4zMl9GSU5EX0RBVEFXJiBmaW5kRGF0YSkKK3sKKyAg
ICBIQU5ETEUgaGFuZGxlID0gRmluZEZpcnN0RmlsZVcoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdD
aGFyKHBhdGgpLmRhdGEoKSwgJmZpbmREYXRhKTsKKyAgICBpZiAoaGFuZGxlID09IElOVkFMSURf
SEFORExFX1ZBTFVFKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgRmluZENsb3NlKGhhbmRs
ZSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBib29sIGdldEZpbGVTaXplRnJvbUZp
bmREYXRhKGNvbnN0IFdJTjMyX0ZJTkRfREFUQVcmIGZpbmREYXRhLCBsb25nIGxvbmcmIHNpemUp
Cit7CisgICAgVUxBUkdFX0lOVEVHRVIgZmlsZVNpemU7CisgICAgZmlsZVNpemUuSGlnaFBhcnQg
PSBmaW5kRGF0YS5uRmlsZVNpemVIaWdoOworICAgIGZpbGVTaXplLkxvd1BhcnQgPSBmaW5kRGF0
YS5uRmlsZVNpemVMb3c7CisKKyAgICBpZiAoZmlsZVNpemUuUXVhZFBhcnQgPiBzdGF0aWNfY2Fz
dDxVTE9OR0xPTkc+KHN0ZDo6bnVtZXJpY19saW1pdHM8bG9uZyBsb25nPjo6bWF4KCkpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzaXplID0gZmlsZVNpemUuUXVhZFBhcnQ7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBib29sIGdldEZpbGVTaXplRnJvbUJ5SGFuZGxlRmls
ZUluZm9ybWF0aW9uU3RydWN0dXJlKGNvbnN0IEJZX0hBTkRMRV9GSUxFX0lORk9STUFUSU9OJiBm
aWxlSW5mb3JtYXRpb24sIGxvbmcgbG9uZyYgc2l6ZSkKK3sKKyAgICBVTEFSR0VfSU5URUdFUiBm
aWxlU2l6ZTsKKyAgICBmaWxlU2l6ZS5IaWdoUGFydCA9IGZpbGVJbmZvcm1hdGlvbi5uRmlsZVNp
emVIaWdoOworICAgIGZpbGVTaXplLkxvd1BhcnQgPSBmaWxlSW5mb3JtYXRpb24ubkZpbGVTaXpl
TG93OworCisgICAgaWYgKGZpbGVTaXplLlF1YWRQYXJ0ID4gc3RhdGljX2Nhc3Q8VUxPTkdMT05H
PihzdGQ6Om51bWVyaWNfbGltaXRzPGxvbmcgbG9uZz46Om1heCgpKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgc2l6ZSA9IGZpbGVTaXplLlF1YWRQYXJ0OworICAgIHJldHVybiB0cnVl
OworfQorCitzdGF0aWMgdm9pZCBnZXRGaWxlQ3JlYXRpb25UaW1lRnJvbUZpbmREYXRhKGNvbnN0
IFdJTjMyX0ZJTkRfREFUQVcmIGZpbmREYXRhLCB0aW1lX3QmIHRpbWUpCit7CisgICAgVUxBUkdF
X0lOVEVHRVIgZmlsZVRpbWU7CisgICAgZmlsZVRpbWUuSGlnaFBhcnQgPSBmaW5kRGF0YS5mdENy
ZWF0aW9uVGltZS5kd0hpZ2hEYXRlVGltZTsKKyAgICBmaWxlVGltZS5Mb3dQYXJ0ID0gZmluZERh
dGEuZnRDcmVhdGlvblRpbWUuZHdMb3dEYXRlVGltZTsKKworICAgIC8vIEluZm9ybWF0aW9uIGFi
b3V0IGNvbnZlcnRpbmcgdGltZV90IHRvIEZpbGVUaW1lIGlzIGF2YWlsYWJsZSBhdCBodHRwOi8v
bXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvbXM3MjQyMjglMjh2PXZzLjg1JTI5LmFz
cHgKKyAgICB0aW1lID0gZmlsZVRpbWUuUXVhZFBhcnQgLyAxMDAwMDAwMCAtIGtTZWNvbmRzRnJv
bUZpbGVUaW1lVG9UaW1ldDsKK30KKworCitzdGF0aWMgdm9pZCBnZXRGaWxlTW9kaWZpY2F0aW9u
VGltZUZyb21GaW5kRGF0YShjb25zdCBXSU4zMl9GSU5EX0RBVEFXJiBmaW5kRGF0YSwgdGltZV90
JiB0aW1lKQoreworICAgIFVMQVJHRV9JTlRFR0VSIGZpbGVUaW1lOworICAgIGZpbGVUaW1lLkhp
Z2hQYXJ0ID0gZmluZERhdGEuZnRMYXN0V3JpdGVUaW1lLmR3SGlnaERhdGVUaW1lOworICAgIGZp
bGVUaW1lLkxvd1BhcnQgPSBmaW5kRGF0YS5mdExhc3RXcml0ZVRpbWUuZHdMb3dEYXRlVGltZTsK
KworICAgIC8vIEluZm9ybWF0aW9uIGFib3V0IGNvbnZlcnRpbmcgdGltZV90IHRvIEZpbGVUaW1l
IGlzIGF2YWlsYWJsZSBhdCBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkv
bXM3MjQyMjglMjh2PXZzLjg1JTI5LmFzcHgKKyAgICB0aW1lID0gZmlsZVRpbWUuUXVhZFBhcnQg
LyAxMDAwMDAwMCAtIGtTZWNvbmRzRnJvbUZpbGVUaW1lVG9UaW1ldDsKK30KKworYm9vbCBnZXRG
aWxlU2l6ZShjb25zdCBTdHJpbmcmIHBhdGgsIGxvbmcgbG9uZyYgc2l6ZSkKK3sKKyAgICBXSU4z
Ml9GSU5EX0RBVEFXIGZpbmREYXRhOworICAgIGlmICghZ2V0RmluZERhdGEocGF0aCwgZmluZERh
dGEpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gZ2V0RmlsZVNpemVGcm9t
RmluZERhdGEoZmluZERhdGEsIHNpemUpOworfQorCitib29sIGdldEZpbGVTaXplKFBsYXRmb3Jt
RmlsZUhhbmRsZSBmaWxlSGFuZGxlLCBsb25nIGxvbmcmIHNpemUpCit7CisgICAgQllfSEFORExF
X0ZJTEVfSU5GT1JNQVRJT04gZmlsZUluZm9ybWF0aW9uOworICAgIGlmICghOjpHZXRGaWxlSW5m
b3JtYXRpb25CeUhhbmRsZShmaWxlSGFuZGxlLCAmZmlsZUluZm9ybWF0aW9uKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGdldEZpbGVTaXplRnJvbUJ5SGFuZGxlRmlsZUlu
Zm9ybWF0aW9uU3RydWN0dXJlKGZpbGVJbmZvcm1hdGlvbiwgc2l6ZSk7Cit9CisKK09wdGlvbmFs
PFdhbGxUaW1lPiBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgpCit7
CisgICAgV0lOMzJfRklORF9EQVRBVyBmaW5kRGF0YTsKKyAgICBpZiAoIWdldEZpbmREYXRhKHBh
dGgsIGZpbmREYXRhKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHRpbWVf
dCB0aW1lID0gMDsKKyAgICBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZUZyb21GaW5kRGF0YShmaW5k
RGF0YSwgdGltZSk7CisgICAgcmV0dXJuIFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyh0aW1lKTsK
K30KKworT3B0aW9uYWw8V2FsbFRpbWU+IGdldEZpbGVDcmVhdGlvblRpbWUoY29uc3QgU3RyaW5n
JiBwYXRoKQoreworICAgIFdJTjMyX0ZJTkRfREFUQVcgZmluZERhdGE7CisgICAgaWYgKCFnZXRG
aW5kRGF0YShwYXRoLCBmaW5kRGF0YSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisK
KyAgICB0aW1lX3QgdGltZSA9IDA7CisgICAgZ2V0RmlsZUNyZWF0aW9uVGltZUZyb21GaW5kRGF0
YShmaW5kRGF0YSwgdGltZSk7CisgICAgcmV0dXJuIFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyh0
aW1lKTsKK30KKworc3RhdGljIFN0cmluZyBnZXRGaW5hbFBhdGhOYW1lKGNvbnN0IFN0cmluZyYg
cGF0aCkKK3sKKyAgICBhdXRvIGhhbmRsZSA9IG9wZW5GaWxlKHBhdGgsIEZpbGVPcGVuTW9kZTo6
UmVhZCk7CisgICAgaWYgKCFpc0hhbmRsZVZhbGlkKGhhbmRsZSkpCisgICAgICAgIHJldHVybiBT
dHJpbmcoKTsKKworICAgIFZlY3RvcjxVQ2hhcj4gYnVmZmVyKE1BWF9QQVRIKTsKKyAgICBpZiAo
OjpHZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGVXKGhhbmRsZSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVy
LnNpemUoKSwgVk9MVU1FX05BTUVfTlQpID49IE1BWF9QQVRIKSB7CisgICAgICAgIGNsb3NlRmls
ZShoYW5kbGUpOworICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgfQorICAgIGNsb3NlRmls
ZShoYW5kbGUpOworCisgICAgYnVmZmVyLnNocmluayh3Y3NsZW4oYnVmZmVyLmRhdGEoKSkpOwor
ICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KFdURk1vdmUoYnVmZmVyKSk7Cit9CisKK3N0YXRpYyBp
bmxpbmUgYm9vbCBpc1N5bWJvbGljTGluayhXSU4zMl9GSU5EX0RBVEFXIGZpbmREYXRhKQorewor
ICAgIHJldHVybiBmaW5kRGF0YS5kd0ZpbGVBdHRyaWJ1dGVzICYgRklMRV9BVFRSSUJVVEVfUkVQ
QVJTRV9QT0lOVCAmJiBmaW5kRGF0YS5kd1Jlc2VydmVkMCA9PSBJT19SRVBBUlNFX1RBR19TWU1M
SU5LOworfQorCitzdGF0aWMgRmlsZU1ldGFkYXRhOjpUeXBlIHRvRmlsZU1ldGFkYXRhVHlwZShX
SU4zMl9GSU5EX0RBVEFXIGZpbmREYXRhKQoreworICAgIGlmIChmaW5kRGF0YS5kd0ZpbGVBdHRy
aWJ1dGVzICYgRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZKQorICAgICAgICByZXR1cm4gRmlsZU1l
dGFkYXRhOjpUeXBlOjpEaXJlY3Rvcnk7CisgICAgaWYgKGlzU3ltYm9saWNMaW5rKGZpbmREYXRh
KSkKKyAgICAgICAgcmV0dXJuIEZpbGVNZXRhZGF0YTo6VHlwZTo6U3ltYm9saWNMaW5rOworICAg
IHJldHVybiBGaWxlTWV0YWRhdGE6OlR5cGU6OkZpbGU7Cit9CisKK3N0YXRpYyBPcHRpb25hbDxG
aWxlTWV0YWRhdGE+IGZpbmREYXRhVG9GaWxlTWV0YWRhdGEoV0lOMzJfRklORF9EQVRBVyBmaW5k
RGF0YSkKK3sKKyAgICBsb25nIGxvbmcgbGVuZ3RoOworICAgIGlmICghZ2V0RmlsZVNpemVGcm9t
RmluZERhdGEoZmluZERhdGEsIGxlbmd0aCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisKKyAgICB0aW1lX3QgbW9kaWZpY2F0aW9uVGltZTsKKyAgICBnZXRGaWxlTW9kaWZpY2F0aW9u
VGltZUZyb21GaW5kRGF0YShmaW5kRGF0YSwgbW9kaWZpY2F0aW9uVGltZSk7CisKKyAgICByZXR1
cm4gRmlsZU1ldGFkYXRhIHsKKyAgICAgICAgV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKG1vZGlm
aWNhdGlvblRpbWUpLAorICAgICAgICBsZW5ndGgsCisgICAgICAgIHN0YXRpY19jYXN0PGJvb2w+
KGZpbmREYXRhLmR3RmlsZUF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9ISURERU4pLAorICAg
ICAgICB0b0ZpbGVNZXRhZGF0YVR5cGUoZmluZERhdGEpCisgICAgfTsKK30KKworT3B0aW9uYWw8
RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIFdJ
TjMyX0ZJTkRfREFUQVcgZmluZERhdGE7CisgICAgaWYgKCFnZXRGaW5kRGF0YShwYXRoLCBmaW5k
RGF0YSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gZmluZERh
dGFUb0ZpbGVNZXRhZGF0YShmaW5kRGF0YSk7Cit9CisKK09wdGlvbmFsPEZpbGVNZXRhZGF0YT4g
ZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3MoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAg
IFdJTjMyX0ZJTkRfREFUQVcgZmluZERhdGE7CisgICAgaWYgKCFnZXRGaW5kRGF0YShwYXRoLCBm
aW5kRGF0YSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBpZiAoaXNTeW1i
b2xpY0xpbmsoZmluZERhdGEpKSB7CisgICAgICAgIFN0cmluZyB0YXJnZXRQYXRoID0gZ2V0Rmlu
YWxQYXRoTmFtZShwYXRoKTsKKyAgICAgICAgaWYgKHRhcmdldFBhdGguaXNOdWxsKCkpCisgICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBpZiAoIWdldEZpbmREYXRhKHRh
cmdldFBhdGgsIGZpbmREYXRhKSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgfQorCisgICAgcmV0dXJuIGZpbmREYXRhVG9GaWxlTWV0YWRhdGEoZmluZERhdGEpOworfQor
Citib29sIGNyZWF0ZVN5bWJvbGljTGluayhjb25zdCBTdHJpbmcmIHRhcmdldFBhdGgsIGNvbnN0
IFN0cmluZyYgc3ltYm9saWNMaW5rUGF0aCkKK3sKKyAgICByZXR1cm4gITo6Q3JlYXRlU3ltYm9s
aWNMaW5rVyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoc3ltYm9saWNMaW5rUGF0aCkuZGF0
YSgpLCBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIodGFyZ2V0UGF0aCkuZGF0YSgpLCAwKTsK
K30KKworYm9vbCBmaWxlRXhpc3RzKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBXSU4zMl9G
SU5EX0RBVEFXIGZpbmREYXRhOworICAgIHJldHVybiBnZXRGaW5kRGF0YShwYXRoLCBmaW5kRGF0
YSk7Cit9CisKK2Jvb2wgZGVsZXRlRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgU3Ry
aW5nIGZpbGVuYW1lID0gcGF0aDsKKyAgICByZXR1cm4gISFEZWxldGVGaWxlVyhzdHJpbmdUb051
bGxUZXJtaW5hdGVkV0NoYXIoZmlsZW5hbWUpLmRhdGEoKSk7Cit9CisKK2Jvb2wgZGVsZXRlRW1w
dHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIFN0cmluZyBmaWxlbmFtZSA9
IHBhdGg7CisgICAgcmV0dXJuICEhUmVtb3ZlRGlyZWN0b3J5VyhzdHJpbmdUb051bGxUZXJtaW5h
dGVkV0NoYXIoZmlsZW5hbWUpLmRhdGEoKSk7Cit9CisKK2Jvb2wgbW92ZUZpbGUoY29uc3QgU3Ry
aW5nJiBvbGRQYXRoLCBjb25zdCBTdHJpbmcmIG5ld1BhdGgpCit7CisgICAgU3RyaW5nIG9sZEZp
bGVuYW1lID0gb2xkUGF0aDsKKyAgICBTdHJpbmcgbmV3RmlsZW5hbWUgPSBuZXdQYXRoOworICAg
IHJldHVybiAhITo6TW92ZUZpbGVFeChzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIob2xkRmls
ZW5hbWUpLmRhdGEoKSwgc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKG5ld0ZpbGVuYW1lKS5k
YXRhKCksIE1PVkVGSUxFX0NPUFlfQUxMT1dFRCB8IE1PVkVGSUxFX1JFUExBQ0VfRVhJU1RJTkcp
OworfQorCitTdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNvbnN0IFN0cmluZyYgcGF0
aCwgY29uc3QgU3RyaW5nJiBjb21wb25lbnQpCit7CisgICAgVmVjdG9yPFVDaGFyPiBidWZmZXIo
TUFYX1BBVEgpOworCisgICAgaWYgKHBhdGgubGVuZ3RoKCkgKyAxID4gYnVmZmVyLnNpemUoKSkK
KyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgU3RyaW5nVmlldyhwYXRoKS5nZXRDaGFy
YWN0ZXJzV2l0aFVwY29udmVydChidWZmZXIuZGF0YSgpKTsKKyAgICBidWZmZXJbcGF0aC5sZW5n
dGgoKV0gPSAnXDAnOworCisgICAgaWYgKCFQYXRoQXBwZW5kVyhidWZmZXIuZGF0YSgpLCBzdHJp
bmdUb051bGxUZXJtaW5hdGVkV0NoYXIoY29tcG9uZW50KS5kYXRhKCkpKQorICAgICAgICByZXR1
cm4gU3RyaW5nKCk7CisKKyAgICBidWZmZXIuc2hyaW5rKHdjc2xlbihidWZmZXIuZGF0YSgpKSk7
CisKKyAgICByZXR1cm4gU3RyaW5nOjphZG9wdChXVEZNb3ZlKGJ1ZmZlcikpOworfQorCitTdHJp
bmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhTdHJpbmdWaWV3IHBhdGgsIGNvbnN0IFZlY3Rv
cjxTdHJpbmdWaWV3PiYgY29tcG9uZW50cykKK3sKKyAgICBTdHJpbmcgcmVzdWx0ID0gcGF0aC50
b1N0cmluZygpOworICAgIGZvciAoYXV0byYgY29tcG9uZW50IDogY29tcG9uZW50cykKKyAgICAg
ICAgcmVzdWx0ID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlc3VsdCwgY29tcG9uZW50LnRv
U3RyaW5nKCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKyNpZiAhVVNFKENGKQorCitDU3Ry
aW5nIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAg
YXV0byB1cGNvbnZlcnRlZENoYXJhY3RlcnMgPSBwYXRoLnVwY29udmVydGVkQ2hhcmFjdGVycygp
OworCisgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMgPSB1cGNvbnZlcnRlZENoYXJhY3RlcnM7
CisgICAgaW50IHNpemUgPSBXaWRlQ2hhclRvTXVsdGlCeXRlKENQX0FDUCwgMCwgY2hhcmFjdGVy
cywgcGF0aC5sZW5ndGgoKSwgMCwgMCwgMCwgMCkgLSAxOworCisgICAgY2hhciogYnVmZmVyOwor
ICAgIENTdHJpbmcgc3RyaW5nID0gQ1N0cmluZzo6bmV3VW5pbml0aWFsaXplZChzaXplLCBidWZm
ZXIpOworCisgICAgV2lkZUNoYXJUb011bHRpQnl0ZShDUF9BQ1AsIDAsIGNoYXJhY3RlcnMsIHBh
dGgubGVuZ3RoKCksIGJ1ZmZlciwgc2l6ZSwgMCwgMCk7CisKKyAgICByZXR1cm4gc3RyaW5nOwor
fQorCisjZW5kaWYgLy8gIVVTRShDRikKKworYm9vbCBtYWtlQWxsRGlyZWN0b3JpZXMoY29uc3Qg
U3RyaW5nJiBwYXRoKQoreworICAgIFN0cmluZyBmdWxsUGF0aCA9IHBhdGg7CisgICAgaWYgKFNI
Q3JlYXRlRGlyZWN0b3J5RXgoMCwgc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGZ1bGxQYXRo
KS5kYXRhKCksIDApICE9IEVSUk9SX1NVQ0NFU1MpIHsKKyAgICAgICAgRFdPUkQgZXJyb3IgPSBH
ZXRMYXN0RXJyb3IoKTsKKyAgICAgICAgaWYgKGVycm9yICE9IEVSUk9SX0ZJTEVfRVhJU1RTICYm
IGVycm9yICE9IEVSUk9SX0FMUkVBRFlfRVhJU1RTKSB7CisgICAgICAgICAgICBMT0dfRVJST1Io
IkZhaWxlZCB0byBjcmVhdGUgcGF0aCAlcyIsIHBhdGguYXNjaWkoKS5kYXRhKCkpOworICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiB0cnVlOwor
fQorCitTdHJpbmcgaG9tZURpcmVjdG9yeVBhdGgoKQoreworICAgIHJldHVybiAiIjsKK30KKwor
U3RyaW5nIHBhdGhHZXRGaWxlTmFtZShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgcmV0dXJu
IG51bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmluZyg6OlBhdGhGaW5kRmlsZU5hbWUoc3RyaW5nVG9O
dWxsVGVybWluYXRlZFdDaGFyKHBhdGgpLmRhdGEoKSkpOworfQorCitTdHJpbmcgZGlyZWN0b3J5
TmFtZShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgU3RyaW5nIG5hbWUgPSBwYXRoLmxlZnQo
cGF0aC5sZW5ndGgoKSAtIHBhdGhHZXRGaWxlTmFtZShwYXRoKS5sZW5ndGgoKSk7CisgICAgaWYg
KG5hbWUuY2hhcmFjdGVyU3RhcnRpbmdBdChuYW1lLmxlbmd0aCgpIC0gMSkgPT0gJ1xcJykgewor
ICAgICAgICAvLyBSZW1vdmUgYW55IHRyYWlsaW5nICJcIi4KKyAgICAgICAgbmFtZS50cnVuY2F0
ZShuYW1lLmxlbmd0aCgpIC0gMSk7CisgICAgfQorICAgIHJldHVybiBuYW1lOworfQorCitzdGF0
aWMgU3RyaW5nIGJ1bmRsZU5hbWUoKQoreworICAgIHN0YXRpYyBjb25zdCBOZXZlckRlc3Ryb3ll
ZDxTdHJpbmc+IG5hbWUgPSBbXSB7CisgICAgICAgIFN0cmluZyBuYW1lIHsgIldlYktpdCJfcyB9
OworCisjaWYgVVNFKENGKQorICAgICAgICBpZiAoQ0ZCdW5kbGVSZWYgYnVuZGxlID0gQ0ZCdW5k
bGVHZXRNYWluQnVuZGxlKCkpIHsKKyAgICAgICAgICAgIGlmIChDRlR5cGVSZWYgYnVuZGxlRXhl
Y3V0YWJsZSA9IENGQnVuZGxlR2V0VmFsdWVGb3JJbmZvRGljdGlvbmFyeUtleShidW5kbGUsIGtD
RkJ1bmRsZUV4ZWN1dGFibGVLZXkpKSB7CisgICAgICAgICAgICAgICAgaWYgKENGR2V0VHlwZUlE
KGJ1bmRsZUV4ZWN1dGFibGUpID09IENGU3RyaW5nR2V0VHlwZUlEKCkpCisgICAgICAgICAgICAg
ICAgICAgIG5hbWUgPSByZWludGVycHJldF9jYXN0PENGU3RyaW5nUmVmPihidW5kbGVFeGVjdXRh
YmxlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorI2VuZGlmCisKKyAgICAgICAgcmV0dXJu
IG5hbWU7CisgICAgfSgpOworCisgICAgcmV0dXJuIG5hbWU7Cit9CisKK3N0YXRpYyBTdHJpbmcg
c3RvcmFnZURpcmVjdG9yeShEV09SRCBwYXRoSWRlbnRpZmllcikKK3sKKyAgICBWZWN0b3I8VUNo
YXI+IGJ1ZmZlcihNQVhfUEFUSCk7CisgICAgaWYgKEZBSUxFRChTSEdldEZvbGRlclBhdGhXKDAs
IHBhdGhJZGVudGlmaWVyIHwgQ1NJRExfRkxBR19DUkVBVEUsIDAsIDAsIGJ1ZmZlci5kYXRhKCkp
KSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgIGJ1ZmZlci5yZXNpemUod2NzbGVuKGJ1
ZmZlci5kYXRhKCkpKTsKKyAgICBTdHJpbmcgZGlyZWN0b3J5ID0gU3RyaW5nOjphZG9wdChXVEZN
b3ZlKGJ1ZmZlcikpOworCisgICAgZGlyZWN0b3J5ID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KGRpcmVjdG9yeSwgIkFwcGxlIENvbXB1dGVyXFwiICsgYnVuZGxlTmFtZSgpKTsKKyAgICBpZiAo
IW1ha2VBbGxEaXJlY3RvcmllcyhkaXJlY3RvcnkpKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7
CisKKyAgICByZXR1cm4gZGlyZWN0b3J5OworfQorCitzdGF0aWMgU3RyaW5nIGNhY2hlZFN0b3Jh
Z2VEaXJlY3RvcnkoRFdPUkQgcGF0aElkZW50aWZpZXIpCit7CisgICAgc3RhdGljIEhhc2hNYXA8
RFdPUkQsIFN0cmluZz4gZGlyZWN0b3JpZXM7CisKKyAgICBIYXNoTWFwPERXT1JELCBTdHJpbmc+
OjppdGVyYXRvciBpdCA9IGRpcmVjdG9yaWVzLmZpbmQocGF0aElkZW50aWZpZXIpOworICAgIGlm
IChpdCAhPSBkaXJlY3Rvcmllcy5lbmQoKSkKKyAgICAgICAgcmV0dXJuIGl0LT52YWx1ZTsKKwor
ICAgIFN0cmluZyBkaXJlY3RvcnkgPSBzdG9yYWdlRGlyZWN0b3J5KHBhdGhJZGVudGlmaWVyKTsK
KyAgICBkaXJlY3Rvcmllcy5hZGQocGF0aElkZW50aWZpZXIsIGRpcmVjdG9yeSk7CisKKyAgICBy
ZXR1cm4gZGlyZWN0b3J5OworfQorCitzdGF0aWMgU3RyaW5nIGdlbmVyYXRlVGVtcG9yYXJ5UGF0
aChjb25zdCBGdW5jdGlvbjxib29sKGNvbnN0IFN0cmluZyYpPiYgYWN0aW9uKQoreworICAgIHdj
aGFyX3QgdGVtcFBhdGhbTUFYX1BBVEhdOworICAgIGludCB0ZW1wUGF0aExlbmd0aCA9IDo6R2V0
VGVtcFBhdGhXKFdURl9BUlJBWV9MRU5HVEgodGVtcFBhdGgpLCB0ZW1wUGF0aCk7CisgICAgaWYg
KHRlbXBQYXRoTGVuZ3RoIDw9IDAgfHwgdGVtcFBhdGhMZW5ndGggPiBXVEZfQVJSQVlfTEVOR1RI
KHRlbXBQYXRoKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgU3RyaW5nIHByb3Bv
c2VkUGF0aDsKKyAgICBkbyB7CisgICAgICAgIHdjaGFyX3QgdGVtcEZpbGVbXSA9IEwiWFhYWFhY
WFgudG1wIjsgLy8gVXNlIDguMyBzdHlsZSBuYW1lIChtb3JlIGNoYXJhY3RlcnMgYXJlbid0IGhl
bHBmdWwgZHVlIHRvIDguMyBzaG9ydCBmaWxlIG5hbWVzKQorICAgICAgICBjb25zdCBpbnQgcmFu
ZG9tUGFydExlbmd0aCA9IDg7CisgICAgICAgIGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tVmFsdWVz
KHRlbXBGaWxlLCByYW5kb21QYXJ0TGVuZ3RoICogc2l6ZW9mKHdjaGFyX3QpKTsKKworICAgICAg
ICAvLyBMaW1pdCB0byB2YWxpZCBmaWxlc3lzdGVtIGNoYXJhY3RlcnMsIGFsc28gZXhjbHVkaW5n
IG90aGVycyB0aGF0IGNvdWxkIGJlIHByb2JsZW1hdGljLCBsaWtlIHB1bmN0dWF0aW9uLgorICAg
ICAgICAvLyBkb24ndCBpbmNsdWRlIGJvdGggdXBwZXIgYW5kIGxvd2VyY2FzZSBzaW5jZSBXaW5k
b3dzIGZpbGUgc3lzdGVtcyBhcmUgdHlwaWNhbGx5IG5vdCBjYXNlIHNlbnNpdGl2ZS4KKyAgICAg
ICAgY29uc3QgY2hhciB2YWxpZENoYXJzW10gPSAiMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3Bx
cnN0dXZ3eHl6IjsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCByYW5kb21QYXJ0TGVuZ3Ro
OyArK2kpCisgICAgICAgICAgICB0ZW1wRmlsZVtpXSA9IHZhbGlkQ2hhcnNbdGVtcEZpbGVbaV0g
JSAoc2l6ZW9mKHZhbGlkQ2hhcnMpIC0gMSldOworCisgICAgICAgIEFTU0VSVCh3Y3NsZW4odGVt
cEZpbGUpID09IFdURl9BUlJBWV9MRU5HVEgodGVtcEZpbGUpIC0gMSk7CisKKyAgICAgICAgcHJv
cG9zZWRQYXRoID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG51bGxUZXJtaW5hdGVkV0NoYXJU
b1N0cmluZyh0ZW1wUGF0aCksIG51bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmluZyh0ZW1wRmlsZSkp
OworICAgICAgICBpZiAocHJvcG9zZWRQYXRoLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGJyZWFr
OworICAgIH0gd2hpbGUgKCFhY3Rpb24ocHJvcG9zZWRQYXRoKSk7CisKKyAgICByZXR1cm4gcHJv
cG9zZWRQYXRoOworfQorCitTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiwg
UGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpCit7CisgICAgaGFuZGxlID0gSU5WQUxJRF9IQU5E
TEVfVkFMVUU7CisKKyAgICBTdHJpbmcgcHJvcG9zZWRQYXRoID0gZ2VuZXJhdGVUZW1wb3JhcnlQ
YXRoKFsmaGFuZGxlXShjb25zdCBTdHJpbmcmIHByb3Bvc2VkUGF0aCkgeworICAgICAgICAvLyB1
c2UgQ1JFQVRFX05FVyB0byBhdm9pZCBvdmVyd3JpdGluZyBhbiBleGlzdGluZyBmaWxlIHdpdGgg
dGhlIHNhbWUgbmFtZQorICAgICAgICBoYW5kbGUgPSA6OkNyZWF0ZUZpbGVXKHN0cmluZ1RvTnVs
bFRlcm1pbmF0ZWRXQ2hhcihwcm9wb3NlZFBhdGgpLmRhdGEoKSwgR0VORVJJQ19SRUFEIHwgR0VO
RVJJQ19XUklURSwgMCwgMCwgQ1JFQVRFX05FVywgRklMRV9BVFRSSUJVVEVfTk9STUFMLCAwKTsK
KworICAgICAgICByZXR1cm4gaXNIYW5kbGVWYWxpZChoYW5kbGUpIHx8IEdldExhc3RFcnJvcigp
ID09IEVSUk9SX0FMUkVBRFlfRVhJU1RTOworICAgIH0pOworCisgICAgaWYgKCFpc0hhbmRsZVZh
bGlkKGhhbmRsZSkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIHJldHVybiBwcm9w
b3NlZFBhdGg7Cit9CisKK1BsYXRmb3JtRmlsZUhhbmRsZSBvcGVuRmlsZShjb25zdCBTdHJpbmcm
IHBhdGgsIEZpbGVPcGVuTW9kZSBtb2RlKQoreworICAgIERXT1JEIGRlc2lyZWRBY2Nlc3MgPSAw
OworICAgIERXT1JEIGNyZWF0aW9uRGlzcG9zaXRpb24gPSAwOworICAgIERXT1JEIHNoYXJlTW9k
ZSA9IDA7CisgICAgc3dpdGNoIChtb2RlKSB7CisgICAgY2FzZSBGaWxlT3Blbk1vZGU6OlJlYWQ6
CisgICAgICAgIGRlc2lyZWRBY2Nlc3MgPSBHRU5FUklDX1JFQUQ7CisgICAgICAgIGNyZWF0aW9u
RGlzcG9zaXRpb24gPSBPUEVOX0VYSVNUSU5HOworICAgICAgICBzaGFyZU1vZGUgPSBGSUxFX1NI
QVJFX1JFQUQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRmlsZU9wZW5Nb2RlOjpXcml0ZToK
KyAgICAgICAgZGVzaXJlZEFjY2VzcyA9IEdFTkVSSUNfV1JJVEU7CisgICAgICAgIGNyZWF0aW9u
RGlzcG9zaXRpb24gPSBDUkVBVEVfQUxXQVlTOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0
OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisKKyAgICBTdHJpbmcgZGVz
dGluYXRpb24gPSBwYXRoOworICAgIHJldHVybiBDcmVhdGVGaWxlKHN0cmluZ1RvTnVsbFRlcm1p
bmF0ZWRXQ2hhcihkZXN0aW5hdGlvbikuZGF0YSgpLCBkZXNpcmVkQWNjZXNzLCBzaGFyZU1vZGUs
IDAsIGNyZWF0aW9uRGlzcG9zaXRpb24sIEZJTEVfQVRUUklCVVRFX05PUk1BTCwgMCk7Cit9CisK
K3ZvaWQgY2xvc2VGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKQoreworICAgIGlmIChp
c0hhbmRsZVZhbGlkKGhhbmRsZSkpIHsKKyAgICAgICAgOjpDbG9zZUhhbmRsZShoYW5kbGUpOwor
ICAgICAgICBoYW5kbGUgPSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOworICAgIH0KK30KKwor
bG9uZyBsb25nIHNlZWtGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGxvbmcgbG9uZyBv
ZmZzZXQsIEZpbGVTZWVrT3JpZ2luIG9yaWdpbikKK3sKKyAgICBEV09SRCBtb3ZlTWV0aG9kID0g
RklMRV9CRUdJTjsKKworICAgIGlmIChvcmlnaW4gPT0gRmlsZVNlZWtPcmlnaW46OkN1cnJlbnQp
CisgICAgICAgIG1vdmVNZXRob2QgPSBGSUxFX0NVUlJFTlQ7CisgICAgZWxzZSBpZiAob3JpZ2lu
ID09IEZpbGVTZWVrT3JpZ2luOjpFbmQpCisgICAgICAgIG1vdmVNZXRob2QgPSBGSUxFX0VORDsK
KworICAgIExBUkdFX0lOVEVHRVIgbGFyZ2VPZmZzZXQ7CisgICAgbGFyZ2VPZmZzZXQuUXVhZFBh
cnQgPSBvZmZzZXQ7CisKKyAgICBsYXJnZU9mZnNldC5Mb3dQYXJ0ID0gU2V0RmlsZVBvaW50ZXIo
aGFuZGxlLCBsYXJnZU9mZnNldC5Mb3dQYXJ0LCAmbGFyZ2VPZmZzZXQuSGlnaFBhcnQsIG1vdmVN
ZXRob2QpOworCisgICAgaWYgKGxhcmdlT2Zmc2V0Lkxvd1BhcnQgPT0gSU5WQUxJRF9TRVRfRklM
RV9QT0lOVEVSICYmIEdldExhc3RFcnJvcigpICE9IE5PX0VSUk9SKQorICAgICAgICByZXR1cm4g
LTE7CisKKyAgICByZXR1cm4gbGFyZ2VPZmZzZXQuUXVhZFBhcnQ7Cit9CisKK2ludCB3cml0ZVRv
RmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVu
Z3RoKQoreworICAgIGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUpKQorICAgICAgICByZXR1cm4g
LTE7CisKKyAgICBEV09SRCBieXRlc1dyaXR0ZW47CisgICAgYm9vbCBzdWNjZXNzID0gV3JpdGVG
aWxlKGhhbmRsZSwgZGF0YSwgbGVuZ3RoLCAmYnl0ZXNXcml0dGVuLCAwKTsKKworICAgIGlmICgh
c3VjY2VzcykKKyAgICAgICAgcmV0dXJuIC0xOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+
KGJ5dGVzV3JpdHRlbik7Cit9CisKK2ludCByZWFkRnJvbUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxl
IGhhbmRsZSwgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKK3sKKyAgICBpZiAoIWlzSGFuZGxlVmFs
aWQoaGFuZGxlKSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgRFdPUkQgYnl0ZXNSZWFkOwor
ICAgIGJvb2wgc3VjY2VzcyA9IDo6UmVhZEZpbGUoaGFuZGxlLCBkYXRhLCBsZW5ndGgsICZieXRl
c1JlYWQsIDApOworCisgICAgaWYgKCFzdWNjZXNzKQorICAgICAgICByZXR1cm4gLTE7CisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PGludD4oYnl0ZXNSZWFkKTsKK30KKworYm9vbCBoYXJkTGlua09y
Q29weUZpbGUoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb24p
Cit7CisgICAgcmV0dXJuICEhOjpDb3B5RmlsZShzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIo
c291cmNlKS5kYXRhKCksIHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihkZXN0aW5hdGlvbiku
ZGF0YSgpLCBUUlVFKTsKK30KKworU3RyaW5nIGxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVj
dG9yeSgpCit7CisgICAgcmV0dXJuIGNhY2hlZFN0b3JhZ2VEaXJlY3RvcnkoQ1NJRExfTE9DQUxf
QVBQREFUQSk7Cit9CisKK1N0cmluZyByb2FtaW5nVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9y
eSgpCit7CisgICAgcmV0dXJuIGNhY2hlZFN0b3JhZ2VEaXJlY3RvcnkoQ1NJRExfQVBQREFUQSk7
Cit9CisKK1ZlY3RvcjxTdHJpbmc+IGxpc3REaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXJlY3Rv
cnksIGNvbnN0IFN0cmluZyYgZmlsdGVyKQoreworICAgIFZlY3RvcjxTdHJpbmc+IGVudHJpZXM7
CisKKyAgICBQYXRoV2Fsa2VyIHdhbGtlcihkaXJlY3RvcnksIGZpbHRlcik7CisgICAgaWYgKCF3
YWxrZXIuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gZW50cmllczsKKworICAgIGRvIHsKKyAg
ICAgICAgaWYgKHdhbGtlci5kYXRhKCkuZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRF
X0RJUkVDVE9SWQorICAgICAgICAgICAgJiYgKCF3Y3NjbXAod2Fsa2VyLmRhdGEoKS5jRmlsZU5h
bWUsIEwiLiIpIHx8ICF3Y3NjbXAod2Fsa2VyLmRhdGEoKS5jRmlsZU5hbWUsIEwiLi4iKSkpCisg
ICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBlbnRyaWVzLmFwcGVuZChkaXJlY3Rvcnkg
KyAiXFwiICsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVQ2hhcio+KHdhbGtlci5kYXRhKCkuY0Zp
bGVOYW1lKSk7CisgICAgfSB3aGlsZSAod2Fsa2VyLnN0ZXAoKSk7CisKKyAgICByZXR1cm4gZW50
cmllczsKK30KKworYm9vbCBnZXRWb2x1bWVGcmVlU3BhY2UoY29uc3QgU3RyaW5nJiwgdWludDY0
X3QmKQoreworICAgIHJldHVybiBmYWxzZTsKK30KKworT3B0aW9uYWw8aW50MzJfdD4gZ2V0Rmls
ZURldmljZUlkKGNvbnN0IENTdHJpbmcmIGZzRmlsZSkKK3sKKyAgICBhdXRvIGhhbmRsZSA9IG9w
ZW5GaWxlKGZzRmlsZS5kYXRhKCksIEZpbGVPcGVuTW9kZTo6UmVhZCk7CisgICAgaWYgKCFpc0hh
bmRsZVZhbGlkKGhhbmRsZSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBC
WV9IQU5ETEVfRklMRV9JTkZPUk1BVElPTiBmaWxlSW5mb3JtYXRpb24gPSB7IH07CisgICAgaWYg
KCE6OkdldEZpbGVJbmZvcm1hdGlvbkJ5SGFuZGxlKGhhbmRsZSwgJmZpbGVJbmZvcm1hdGlvbikp
IHsKKyAgICAgICAgY2xvc2VGaWxlKGhhbmRsZSk7CisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgfQorCisgICAgY2xvc2VGaWxlKGhhbmRsZSk7CisKKyAgICByZXR1cm4gZmlsZUlu
Zm9ybWF0aW9uLmR3Vm9sdW1lU2VyaWFsTnVtYmVyOworfQorCitTdHJpbmcgcmVhbFBhdGgoY29u
c3QgU3RyaW5nJiBmaWxlUGF0aCkKK3sKKyAgICByZXR1cm4gZ2V0RmluYWxQYXRoTmFtZShmaWxl
UGF0aCk7Cit9CisKK1N0cmluZyBjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoKQoreworICAgIHJl
dHVybiBnZW5lcmF0ZVRlbXBvcmFyeVBhdGgoW10oY29uc3QgU3RyaW5nJiBwcm9wb3NlZFBhdGgp
IHsKKyAgICAgICAgcmV0dXJuIG1ha2VBbGxEaXJlY3Rvcmllcyhwcm9wb3NlZFBhdGgpOworICAg
IH0pOworfQorCitib29sIGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgZGly
ZWN0b3J5UGF0aCkKK3sKKyAgICBTSEZJTEVPUFNUUlVDVCBkZWxldGVPcGVyYXRpb24gPSB7Cisg
ICAgICAgIG51bGxwdHIsCisgICAgICAgIEZPX0RFTEVURSwKKyAgICAgICAgc3RyaW5nVG9OdWxs
VGVybWluYXRlZFdDaGFyKGRpcmVjdG9yeVBhdGgpLmRhdGEoKSwKKyAgICAgICAgTCIiLAorICAg
ICAgICBGT0ZfTk9DT05GSVJNQVRJT04gfCBGT0ZfTk9FUlJPUlVJIHwgRk9GX1NJTEVOVCwKKyAg
ICAgICAgZmFsc2UsCisgICAgICAgIDAsCisgICAgICAgIEwiIgorICAgIH07CisgICAgcmV0dXJu
ICFTSEZpbGVPcGVyYXRpb24oJmRlbGV0ZU9wZXJhdGlvbik7Cit9CisKK30gLy8gbmFtZXNwYWNl
IEZpbGVTeXN0ZW0KK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvd2luL1BhdGhXYWxrZXIuY3BwIGIvU291cmNlL1dURi93dGYvd2luL1BhdGhXYWxrZXIuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmM2ZDNmOTcwNjA0OWNiMTNjOWVmNjM1NWViYjYzYTUwNzk4NTAyMjEKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vUGF0aFdhbGtlci5jcHAKQEAgLTAs
MCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDx3
dGYvd2luL1BhdGhXYWxrZXIuaD4KKworI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5oPgorCituYW1lc3BhY2Ug
V1RGIHsKKworUGF0aFdhbGtlcjo6UGF0aFdhbGtlcihjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSwg
Y29uc3QgU3RyaW5nJiBwYXR0ZXJuKQoreworICAgIFN0cmluZyBwYXRoID0gZGlyZWN0b3J5ICsg
IlxcIiArIHBhdHRlcm47CisgICAgbV9oYW5kbGUgPSA6OkZpbmRGaXJzdEZpbGVXKHN0cmluZ1Rv
TnVsbFRlcm1pbmF0ZWRXQ2hhcihwYXRoKS5kYXRhKCksICZtX2RhdGEpOworfQorCitQYXRoV2Fs
a2VyOjp+UGF0aFdhbGtlcigpCit7CisgICAgaWYgKCFpc1ZhbGlkKCkpCisgICAgICAgIHJldHVy
bjsKKyAgICA6OkZpbmRDbG9zZShtX2hhbmRsZSk7Cit9CisKK2Jvb2wgUGF0aFdhbGtlcjo6c3Rl
cCgpCit7CisgICAgcmV0dXJuIDo6RmluZE5leHRGaWxlVyhtX2hhbmRsZSwgJm1fZGF0YSk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvd2luL1Bh
dGhXYWxrZXIuaCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9QYXRoV2Fsa2VyLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OTUzYWUyZTZhZTg1NjFhZjM0NTRlMjE4Mzg4ZGY4OTAwNWVhMzNiYwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9QYXRoV2Fsa2VyLmgKQEAgLTAsMCArMSw0OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgPFdpbmRvd3MuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorCituYW1lc3BhY2UgV1RGIHsKKwor
Y2xhc3MgUGF0aFdhbGtlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGF0aFdhbGtlcik7
CitwdWJsaWM6CisgICAgUGF0aFdhbGtlcihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5LCBj
b25zdCBXVEY6OlN0cmluZyYgcGF0dGVybik7CisgICAgflBhdGhXYWxrZXIoKTsKKworICAgIGJv
b2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1faGFuZGxlICE9IElOVkFMSURfSEFORExFX1ZB
TFVFOyB9CisgICAgY29uc3QgV0lOMzJfRklORF9EQVRBVyYgZGF0YSgpIGNvbnN0IHsgcmV0dXJu
IG1fZGF0YTsgfQorCisgICAgYm9vbCBzdGVwKCk7CisKK3ByaXZhdGU6CisgICAgSEFORExFIG1f
aGFuZGxlOworICAgIFdJTjMyX0ZJTkRfREFUQVcgbV9kYXRhOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L0NETS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAK
aW5kZXggNGZlMjUwYjlmYzhlYzQ1NjE4MjFiMDc3ZWVkOTZhZWM3YjAxNTUwNi4uZWJmMDY3Zjdi
NTdmMTZjMzMwYjVkNzQwNDM4ODM0MjIyZWZhYmQ4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcApAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUg
IkNETUZhY3RvcnkuaCIKICNpbmNsdWRlICJDRE1Qcml2YXRlLmgiCiAjaW5jbHVkZSAiRG9jdW1l
bnQuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiSW5pdERhdGFSZWdpc3Ry
eS5oIgogI2luY2x1ZGUgIk1lZGlhS2V5c1JlcXVpcmVtZW50LmgiCiAjaW5jbHVkZSAiTWVkaWFQ
bGF5ZXIuaCIKQEAgLTQyLDYgKzQxLDcgQEAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgog
I2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luRGF0YS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCisj
aW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5
U2Vzc2lvbi5jcHAKaW5kZXggZTY2NmNlOTc5MzY3NDVlZGEwMTA2NjA3OTc4ZjZlOTgwOWZmMGIz
OS4uNjVlZGRhMTZmNzk1MGQyNDliY2Y3MzE2Mjg2MTUwODU0ZWYyODFkNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFL
ZXlTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNlc3Npb24uY3BwCkBAIC0zMCwxMyArMzAsMTMgQEAKIAog
I2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgotI2luY2x1ZGUg
IkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmln
aW5EYXRhLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJXZWJLaXRNZWRpYUtl
eUVycm9yLmgiCiAjaW5jbHVkZSAiV2ViS2l0TWVkaWFLZXlNZXNzYWdlRXZlbnQuaCIKICNpbmNs
dWRlICJXZWJLaXRNZWRpYUtleXMuaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50
cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcAppbmRleCA2ZGQ0MTcxMzA4YWQ0NjdmMmE0YzI3Yzlj
ZTk3NzI5YjNmYWQ4Y2Y5Li4zNjg3OTRlZjVjMWEwZmU3OThiMmExYmE1MDg4NmMwYjRmZWJjYjk0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5
c3RlbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVT
eXN0ZW0uY3BwCkBAIC0yNywxMiArMjcsMTIgQEAKICNpbmNsdWRlICJET01GaWxlU3lzdGVtLmgi
CiAKICNpbmNsdWRlICJGaWxlLmgiCi0jaW5jbHVkZSAiRmlsZU1ldGFkYXRhLmgiCi0jaW5jbHVk
ZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5oIgog
I2luY2x1ZGUgIkZpbGVTeXN0ZW1GaWxlRW50cnkuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRp
b25Db250ZXh0LmgiCiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkQ29waWVyLmg+CisjaW5jbHVk
ZSA8d3RmL0ZpbGVNZXRhZGF0YS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5j
bHVkZSA8d3RmL1VVSUQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVt
RW50cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1F
bnRyeS5jcHAKaW5kZXggZGNjYjVhMTE4NjNkOWJiMTBmMjg3ZDU3ZmRjMTM5YTBiOWIxYjExMS4u
NDI0Y2NhMjZjZDRjN2I4NjEwM2ZkNTIwZjFmZjcwZjBkYTAzNTFlYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1FbnRyeS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1FbnRyeS5jcHAKQEAg
LTI5LDEwICsyOSwxMCBAQAogI2luY2x1ZGUgIkRPTUV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIkRP
TUZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJFcnJvckNhbGxiYWNrLmgiCi0jaW5jbHVkZSAiRmls
ZVN5c3RlbS5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5oIgogI2luY2x1
ZGUgIkZpbGVTeXN0ZW1FbnRyeUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2VJZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkRhdGFiYXNlSWRlbnRpZmllci5jcHAKaW5kZXggYzdmZGZkMGRkNjU0NWY4YzZmZTUzNDJm
YjM2NDZmZTlhODQ2OTRiOS4uYjQyOWIzZjI2YjkzNDZmYmIxZGFlN2VjNjUwZTQ2ZTI1NmRmYzhj
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJh
c2VJZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZUlkZW50aWZpZXIuY3BwCkBAIC0yOCw4ICsyOCw4IEBACiAKICNpZiBFTkFCTEUo
SU5ERVhFRF9EQVRBQkFTRSkKIAotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJT
ZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2lu
Z1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxp
dGVJREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDIxNzhjYzQyYTliNTExNDNjZTVkODVmNGQxMWY3
YWIyNjA5MjRlYzcuLjI4NWQ1MDJkYWU4MWE5YTc2OGFhMzRhMWQyNTZkZjUwNDdkNjFiZmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJ
REJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAKICNp
ZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNp
bmNsdWRlICJJREJCaW5kaW5nVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiSURCR2V0QWxsUmVjb3Jk
c0RhdGEuaCIKICNpbmNsdWRlICJJREJHZXRBbGxSZXN1bHQuaCIKQEAgLTU0LDYgKzUzLDcgQEAK
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0dsb2JhbE9iamVjdC5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL1N0cm9uZ0lubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9T
dHJ1Y3R1cmVJbmxpbmVzLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQlRyYW5z
YWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxp
dGVJREJUcmFuc2FjdGlvbi5jcHAKaW5kZXggNzgxYjc5ZjYzYTA2MWQ1OGQxYzkyYTQxM2MyMWFm
ZGU2NTY0OTM2ZS4uYmVlYTZiMTY3MDYyNGU1Yzk4MGYzMTY2MzRjMDM2NWRmZGViYzZjYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlE
QlRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvU1FMaXRlSURCVHJhbnNhY3Rpb24uY3BwCkBAIC0yNywxMyArMjcsMTMgQEAKIAogI2lm
IEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2lu
Y2x1ZGUgIklEQkN1cnNvckluZm8uaCIKICNpbmNsdWRlICJJbmRleGVkREIuaCIKICNpbmNsdWRl
ICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiU1FMaXRlSURCQmFja2luZ1N0b3JlLmgiCiAjaW5jbHVk
ZSAiU1FMaXRlSURCQ3Vyc29yLmgiCiAjaW5jbHVkZSAiU1FMaXRlVHJhbnNhY3Rpb24uaCIKKyNp
bmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3Bh
Y2UgSURCU2VydmVyIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAKaW5kZXggNjFhZWI4Zjdk
NzAxNTFiOTQyMjg1YWNkY2NmODFiZmIxZWE0MjYyNi4uZGQ5ZjVhZDI5MzE3YzVjZGM3NTg4MzJh
YzZhMzcwYmRmOTVkZDg5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAKQEAgLTI4LDcg
KzI4LDYgQEAKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCi0jaW5jbHVkZSAiRmls
ZVN5c3RlbS5oIgogI2luY2x1ZGUgIklEQkNvbm5lY3Rpb25Ub0NsaWVudC5oIgogI2luY2x1ZGUg
IklEQkNvbm5lY3Rpb25Ub1NlcnZlci5oIgogI2luY2x1ZGUgIklEQkN1cnNvckluZm8uaCIKQEAg
LTQwLDYgKzM5LDcgQEAKICNpbmNsdWRlICJJREJSZXN1bHREYXRhLmgiCiAjaW5jbHVkZSAiSURC
VmFsdWUuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0u
aD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tl
ci5jcHAKaW5kZXggZDk2NTQxZWQ0OWY2OTM4MjRlZDFkZmM1MjUwODhkYWMzMmJjNTljNS4uNDA4
ZjYyMjEyYWUyYjE3YjM4YWMxOTA5ODk1MWEwZjA5MmQ0YjA0OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcApAQCAt
MzQsNyArMzQsNiBAQAogI2luY2x1ZGUgIkRhdGFiYXNlTWFuYWdlci5oIgogI2luY2x1ZGUgIkRh
dGFiYXNlTWFuYWdlckNsaWVudC5oIgogI2luY2x1ZGUgIkRhdGFiYXNlVGhyZWFkLmgiCi0jaW5j
bHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJPcmln
aW5Mb2NrLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKQEAgLTQzLDYgKzQyLDcgQEAK
ICNpbmNsdWRlICJTUUxpdGVGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiU1FMaXRlU3RhdGVtZW50
LmgiCiAjaW5jbHVkZSAiU1FMaXRlVHJhbnNhY3Rpb24uaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5
c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5Mb2NrLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luTG9jay5jcHAKaW5kZXggNDIzYjJl
NjZkZGZhMTJjYzM0MGY2MGZjZTU5ZDM1M2RmOTk4NjdmNC4uYTIxYmNkYjc4Mzg2YzgxMGVjNTk5
NDFjMjc1ZjRlZmJhZmYyM2ZiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9PcmlnaW5Mb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL09yaWdpbkxvY2suY3BwCkBAIC0yNiw4ICsyNiw2IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiT3JpZ2luTG9jay5oIgogCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5o
IgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFN0cmluZyBPcmlnaW5Mb2NrOjpsb2NrRmlsZU5h
bWVGb3JQYXRoKFN0cmluZyBvcmlnaW5QYXRoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5Mb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL09yaWdpbkxvY2suaAppbmRleCBhMTZlODRmMTQ4OWRhZjJlZThmNTA0NjE5
ZDEzOTkzYjhkMzc1ZTEwLi5lY2MyOWU4OTAyNWJkZjYyOTM5MmIxMDU5ZWY4ODcwZTZmOGY5MmYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL09yaWdpbkxv
Y2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL09yaWdpbkxvY2su
aApAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkZpbGVTeXN0
ZW0uaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+
CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL2NvY29hL0RhdGFiYXNlTWFuYWdlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9jb2NvYS9EYXRhYmFzZU1hbmFnZXJDb2NvYS5tbQppbmRleCA3Y2Zl
OWZiMDYzMjY5MTgxZDQ0ZjEzYzM4MzY4MjUzM2Q0ZTRkZmM5Li44ZDMyNTA3M2IwNGFjYTFkMzI4
NDk2ZTE4MjgzMzhkZmViY2FiZmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL2NvY29hL0RhdGFiYXNlTWFuYWdlckNvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvY29jb2EvRGF0YWJhc2VNYW5hZ2VyQ29jb2EubW0K
QEAgLTI5LDcgKzI5LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiRGF0YWJhc2VN
YW5hZ2VyLmgiCiAKLSNpbXBvcnQgIkZpbGVTeXN0ZW0uaCIKKyNpbXBvcnQgPHd0Zi9GaWxlU3lz
dGVtLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvUEFM
L1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDRmYmRkZTM5YTRhYzc2MjI4MGRj
Mjk3N2FjMWZhZDY3OTQwZGZjNjIuLmQxNjRhNGM3MmFkYjhkNWRjMGQ2MDRkZThiNmQxZTU1NWM3
NTIxNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTEzMyw3ICsxMzMsNiBAQAogCQlBMTE3NUI1NzFGNkI0NzA1MDBDNEI5RjAg
LyogRGVmYXVsdFNlYXJjaFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBMTE3NUI1NTFGNkI0NzA1MDBDNEI5RjAgLyogRGVmYXVsdFNlYXJj
aFByb3ZpZGVyLmggKi87IH07CiAJCUExMTc1QjU4MUY2QjQ3MDUwMEM0QjlGMCAvKiBEZWZhdWx0
U2VhcmNoUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTExNzVCNTYxRjZCNDcwNTAwQzRCOUYwIC8qIERlZmF1bHRTZWFyY2hQcm92aWRl
ci5jcHAgKi87IH07CiAJCUExMTc1QjVBMUY2QjRBODQwMEM0QjlGMCAvKiBOU1Njcm9sbFZpZXdT
UEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMTc1
QjU5MUY2QjRBODQwMEM0QjlGMCAvKiBOU1Njcm9sbFZpZXdTUEkuaCAqLzsgfTsKLQkJQTFGNTVE
Q0YxRjU1MjhFQzAwRURCNzVGIC8qIE1ldGFkYXRhU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUY1NURDRTFGNTUyOEVDMDBFREI3NUYgLyogTWV0
YWRhdGFTUEkuaCAqLzsgfTsKIAkJQTFGNjNDOUYyMUE0REJGNzAwNkZCNDNCIC8qIFBhc3NLaXRT
b2Z0TGluay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTFGNjNDOUQyMUE0REJGNzAwNkZCNDNCIC8qIFBhc3NLaXRTb2Z0TGluay5oICovOyB9OwogCQlB
MUY2M0NBMDIxQTREQkY3MDA2RkI0M0IgLyogUGFzc0tpdFNvZnRMaW5rLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFGNjNDOUUyMUE0REJGNzAwNkZC
NDNCIC8qIFBhc3NLaXRTb2Z0TGluay5tbSAqLzsgfTsKIAkJQTMwRDQxMjExRjBERDBFQTAwQjcx
OTU0IC8qIEtpbGxSaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMzBENDExRTFGMEREMEVBMDBCNzE5NTQgLyogS2lsbFJpbmcuaCAqLzsgfTsKQEAg
LTI5NCw3ICsyOTMsNiBAQAogCQlBMTE3NUI1NTFGNkI0NzA1MDBDNEI5RjAgLyogRGVmYXVsdFNl
YXJjaFByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlZmF1bHRTZWFyY2hQcm92aWRlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTE3NUI1NjFGNkI0NzA1MDBDNEI5RjAgLyog
RGVmYXVsdFNlYXJjaFByb3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlZmF1bHRTZWFy
Y2hQcm92aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExMTc1QjU5MUY2
QjRBODQwMEM0QjlGMCAvKiBOU1Njcm9sbFZpZXdTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTlNTY3Jv
bGxWaWV3U1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUExRjU1RENFMUY1NTI4
RUMwMEVEQjc1RiAvKiBNZXRhZGF0YVNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZXRhZGF0YVNQSS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMUY2M0M5RDIxQTREQkY3MDA2RkI0M0Ig
LyogUGFzc0tpdFNvZnRMaW5rLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhc3NLaXRTb2Z0TGluay5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMUY2M0M5RTIxQTREQkY3MDA2RkI0M0IgLyog
UGFzc0tpdFNvZnRMaW5rLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGFzc0tpdFNvZnRMaW5r
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMzBENDExRTFGMEREMEVBMDBCNzE5
NTQgLyogS2lsbFJpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gS2lsbFJp
bmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ0OSw3ICs0NDcsNiBAQAogCQkJ
CUExMDI2NTg4MUY1Njc0N0EwMEI0Qzg0NCAvKiBISVRvb2xib3hTUEkuaCAqLywKIAkJCQkwQzc3
ODU3MjFGNDUxMzBGMDBGNEVCQjYgLyogTG9va3VwU1BJLmggKi8sCiAJCQkJMEM3Nzg1NzMxRjQ1
MTMwRjAwRjRFQkI2IC8qIE1lZGlhUmVtb3RlU1BJLmggKi8sCi0JCQkJQTFGNTVEQ0UxRjU1MjhF
QzAwRURCNzVGIC8qIE1ldGFkYXRhU1BJLmggKi8sCiAJCQkJMEM3Nzg1NzQxRjQ1MTMwRjAwRjRF
QkI2IC8qIE5TQWNjZXNzaWJpbGl0eVNQSS5oICovLAogCQkJCTFDQ0VFNEY2MjBEODc0M0YwMDQ3
QjA5NyAvKiBOU0FwcGVhcmFuY2VTUEkuaCAqLywKIAkJCQkwQzc3ODU3NTFGNDUxMzBGMDBGNEVC
QjYgLyogTlNBcHBsaWNhdGlvblNQSS5oICovLApAQCAtNzAxLDcgKzY5OCw2IEBACiAJCQkJMEM1
QUY5MUQxRjQzQTRDNzAwMkVBQzAyIC8qIE1lZGlhUGxheWVyU1BJLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwQzc3ODU4QzFGNDUxMzBGMDBGNEVCQjYgLyogTWVkaWFSZW1vdGVTUEkuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBDMDBDRkQ0MUY2OENFNDYwMEFBQzI2RCAvKiBNZWRpYVRpbWVBVkZvdW5k
YXRpb24uaCBpbiBIZWFkZXJzICovLAotCQkJCUExRjU1RENGMUY1NTI4RUMwMEVEQjc1RiAvKiBN
ZXRhZGF0YVNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEM1QUY5MUUxRjQzQTRDNzAwMkVBQzAy
IC8qIE1vYmlsZUdlc3RhbHRTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBDMkRBMTQ5MUYzQkVC
NDkwMERCQzMxNyAvKiBORUZpbHRlclNvdXJjZVNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEM3
Nzg1OEQxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TQWNjZXNzaWJpbGl0eVNQSS5oIGluIEhlYWRlcnMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3JtTWFjLmNtYWtl
IGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCA2YjFiZDI1
OTI2ZjQyYmQ2NDYwMzJhZDkwNGE3ODdlNjliNzUwYWM5Li5mMTMwNzY4NDNmODgzMTZiYzM4YmQ4
MGRhNzJmNDg5YTgyMzc2MjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1Bs
YXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvUGxhdGZvcm1NYWMu
Y21ha2UKQEAgLTU4LDcgKzU4LDYgQEAgbGlzdChBUFBFTkQgUEFMX1BVQkxJQ19IRUFERVJTCiAg
ICAgc3BpL21hYy9ISVRvb2xib3hTUEkuaAogICAgIHNwaS9tYWMvTG9va3VwU1BJLmgKICAgICBz
cGkvbWFjL01lZGlhUmVtb3RlU1BJLmgKLSAgICBzcGkvbWFjL01ldGFkYXRhU1BJLmgKICAgICBz
cGkvbWFjL05TQWNjZXNzaWJpbGl0eVNQSS5oCiAgICAgc3BpL21hYy9OU0FwcGVhcmFuY2VTUEku
aAogICAgIHNwaS9tYWMvTlNBcHBsaWNhdGlvblNQSS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL3NwaS9tYWMvTWV0YWRhdGFTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvc3BpL21hYy9NZXRhZGF0YVNQSS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4
MTU1NDdjNmI4NTEwZTMwNjE4ZTIyODJhZDViNzg0MDE2Y2EzNzIxLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3Bp
L21hYy9NZXRhZGF0YVNQSS5oCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLQotI2lu
Y2x1ZGUgPENvcmVTZXJ2aWNlcy9Db3JlU2VydmljZXNQcml2Lmg+Ci0KLSNlbmRpZgotCi1XVEZf
RVhURVJOX0NfQkVHSU4KLQotQm9vbGVhbiBNREl0ZW1TZXRBdHRyaWJ1dGUoTURJdGVtUmVmLCBD
RlN0cmluZ1JlZiBuYW1lLCBDRlR5cGVSZWYgYXR0cik7Ci0KLVdURl9FWFRFUk5fQ19FTkQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXggODY2ZWE2YTU0YjlhNDJmODc4ZDRlMTliNjUwYTJj
M2MzYmEyMDlhOS4uNGQ3MmY5ZGVlZjgwZWI2ZTQ0NTY3OTczZDVjNmRjZmY2OTA1NWI4NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dl
YkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTE4OSw3ICsxODksNiBAQCBsaXN0KEFQUEVORCBX
ZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9hdWRpby9tYWMvQ0FSaW5nQnVmZmVyLmNwcAog
ICAgIHBsYXRmb3JtL2F1ZGlvL21hYy9GRlRGcmFtZU1hYy5jcHAKIAotICAgIHBsYXRmb3JtL2Nm
L0ZpbGVTeXN0ZW1DRi5jcHAKICAgICBwbGF0Zm9ybS9jZi9LZXllZERlY29kZXJDRi5jcHAKICAg
ICBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAKICAgICBwbGF0Zm9ybS9jZi9NYWluVGhy
ZWFkU2hhcmVkVGltZXJDRi5jcHAKQEAgLTIwMCw3ICsxOTksNiBAQCBsaXN0KEFQUEVORCBXZWJD
b3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRs
ZXJDb2NvYS5tbQogICAgIHBsYXRmb3JtL2NvY29hL0NvcmVWaWRlb1NvZnRMaW5rLmNwcAogICAg
IHBsYXRmb3JtL2NvY29hL0ZpbGVNb25pdG9yQ29jb2EubW0KLSAgICBwbGF0Zm9ybS9jb2NvYS9G
aWxlU3lzdGVtQ29jb2EubW0KICAgICBwbGF0Zm9ybS9jb2NvYS9LZXlFdmVudENvY29hLm1tCiAg
ICAgcGxhdGZvcm0vY29jb2EvTG9jYWxpemVkU3RyaW5nc0NvY29hLm1tCiAgICAgcGxhdGZvcm0v
Y29jb2EvTUlNRVR5cGVSZWdpc3RyeUNvY29hLm1tCkBAIC0zNDcsNyArMzQ1LDYgQEAgbGlzdChB
UFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tCiAg
ICAgcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbQogICAgIHBsYXRmb3JtL21hYy9FdmVudExv
b3BNYWMubW0KLSAgICBwbGF0Zm9ybS9tYWMvRmlsZVN5c3RlbU1hYy5tbQogICAgIHBsYXRmb3Jt
L21hYy9LZXlFdmVudE1hYy5tbQogICAgIHBsYXRmb3JtL21hYy9Mb2NhbEN1cnJlbnRHcmFwaGlj
c0NvbnRleHQubW0KICAgICBwbGF0Zm9ybS9tYWMvTG9nZ2luZ01hYy5tbQpAQCAtNDE4LDggKzQx
NSw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL25ldHdvcmsv
bWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQogICAg
IHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbQogCi0gICAgcGxhdGZv
cm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcAotCiAgICAgcGxhdGZvcm0vdGV4dC9jZi9IeXBo
ZW5hdGlvbkNGLmNwcAogCiAgICAgcGxhdGZvcm0vdGV4dC9tYWMvTG9jYWxlTWFjLm1tCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtlIGIvU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1QbGF5U3RhdGlvbi5jbWFrZQppbmRleCA5MDM3NjAzOWI5Njk2ZTEz
ZjlkZWJjOWM0NzMwYTc5MDM5OTc5NTUxLi42ZDQ0NTM1ZDk1OTg0YmU1ODgzM2U4OGY5NzFlNmE3
MmYyZGJhYjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVBsYXlTdGF0aW9u
LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtUGxheVN0YXRpb24uY21ha2UKQEAg
LTYzLDcgKzYzLDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0v
cGxheXN0YXRpb24vU2Nyb2xsYmFyVGhlbWVQbGF5U3RhdGlvbi5jcHAKICAgICBwbGF0Zm9ybS9w
bGF5c3RhdGlvbi9Vc2VyQWdlbnRQbGF5U3RhdGlvbi5jcHAKIAotICAgIHBsYXRmb3JtL3Bvc2l4
L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKICAgICBwbGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQT1NJ
WC5jcHAKIAogICAgIHBsYXRmb3JtL3RleHQvSHlwaGVuYXRpb24uY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
V2luLmNtYWtlCmluZGV4IDRmYWIzMDgyNjBlMDljODA1NDE5Yzg0YzdjYTgzNGQ4MWZiOTVjNjUu
LmZjYjU3YTQ1YTVmNDFlZjNiZjY3MDM4NGZkYTIzZjNjZGE4NjE0ZDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRm
b3JtV2luLmNtYWtlCkBAIC04NCw3ICs4NCw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNF
UwogICAgIHBsYXRmb3JtL3dpbi9EcmFnRGF0YVdpbi5jcHAKICAgICBwbGF0Zm9ybS93aW4vRHJh
Z0ltYWdlV2luLmNwcAogICAgIHBsYXRmb3JtL3dpbi9FdmVudExvb3BXaW4uY3BwCi0gICAgcGxh
dGZvcm0vd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCiAgICAgcGxhdGZvcm0vd2luL0dESU9iamVjdENv
dW50ZXIuY3BwCiAgICAgcGxhdGZvcm0vd2luL0dESVV0aWxpdGllcy5jcHAKICAgICBwbGF0Zm9y
bS93aW4vS2V5RXZlbnRXaW4uY3BwCkBAIC05Myw3ICs5Miw2IEBAIGxpc3QoQVBQRU5EIFdlYkNv
cmVfU09VUkNFUwogICAgIHBsYXRmb3JtL3dpbi9NSU1FVHlwZVJlZ2lzdHJ5V2luLmNwcAogICAg
IHBsYXRmb3JtL3dpbi9NYWluVGhyZWFkU2hhcmVkVGltZXJXaW4uY3BwCiAgICAgcGxhdGZvcm0v
d2luL1Bhc3RlYm9hcmRXaW4uY3BwCi0gICAgcGxhdGZvcm0vd2luL1BhdGhXYWxrZXIuY3BwCiAg
ICAgcGxhdGZvcm0vd2luL1BsYXRmb3JtTW91c2VFdmVudFdpbi5jcHAKICAgICBwbGF0Zm9ybS93
aW4vUGxhdGZvcm1TY3JlZW5XaW4uY3BwCiAgICAgcGxhdGZvcm0vd2luL1BvcHVwTWVudVdpbi5j
cHAKQEAgLTI0OCw3ICsyNDYsNiBAQCBpZiAoVVNFX0NGKQogICAgIGxpc3QoQVBQRU5EIFdlYkNv
cmVfU09VUkNFUwogICAgICAgICBsb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNw
cAogCi0gICAgICAgIHBsYXRmb3JtL2NmL0ZpbGVTeXN0ZW1DRi5jcHAKICAgICAgICAgcGxhdGZv
cm0vY2YvS2V5ZWREZWNvZGVyQ0YuY3BwCiAgICAgICAgIHBsYXRmb3JtL2NmL0tleWVkRW5jb2Rl
ckNGLmNwcAogICAgICAgICBwbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQKaW5kZXggZDJhZGIwZTU0MDlmMTg5OTljNDg3NmMzZGQ5MjBiZjlkMzgwNWU1Zi4uNDRhOGYz
ZWIzOWFkN2UwNGE0ZDBlOTM0OGIzYzI4M2FhY2EyNzUxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE2
MDMsNyArMTYwMyw2IEBAIHBsYXRmb3JtL0ZpbGVDaG9vc2VyLmNwcAogcGxhdGZvcm0vRmlsZUhh
bmRsZS5jcHAKIHBsYXRmb3JtL0ZpbGVNb25pdG9yLmNwcAogcGxhdGZvcm0vRmlsZVN0cmVhbS5j
cHAKLXBsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwCiBwbGF0Zm9ybS9HZW5lcmljVGFza1F1ZXVlLmNw
cAogcGxhdGZvcm0vTGF5b3V0VW5pdC5jcHAKIHBsYXRmb3JtL0xlbmd0aC5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzQ29jb2EudHh0CmluZGV4IDBlMTViOTA0ZWFkMmQ5ZDg1OTNlNTBmYTQyMDA4MzVhNDMwYjk1
NjguLmMyNDE4NWYxNGVlN2FmNjYwOGQyYTQzY2UwNjY0OWNhMWYwNTUyZGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291
cmNlc0NvY29hLnR4dApAQCAtMTgxLDcgKzE4MSw2IEBAIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRp
b1Nlc3Npb25NYWMuY3BwCiBwbGF0Zm9ybS9hdWRpby9tYWMvQ0FSaW5nQnVmZmVyLmNwcAogcGxh
dGZvcm0vYXVkaW8vbWFjL0ZGVEZyYW1lTWFjLmNwcAogCi1wbGF0Zm9ybS9jZi9GaWxlU3lzdGVt
Q0YuY3BwCiBwbGF0Zm9ybS9jZi9LZXllZERlY29kZXJDRi5jcHAKIHBsYXRmb3JtL2NmL0tleWVk
RW5jb2RlckNGLmNwcAogcGxhdGZvcm0vY2YvTWFpblRocmVhZFNoYXJlZFRpbWVyQ0YuY3BwCkBA
IC0xOTMsNyArMTkyLDYgQEAgcGxhdGZvcm0vY29jb2EvQ29udGVudEZpbHRlclVuYmxvY2tIYW5k
bGVyQ29jb2EubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9jb2NvYS9Db3JlVmlkZW9Tb2Z0TGluay5j
cHAKIHBsYXRmb3JtL2NvY29hL0RhdGFEZXRlY3RvcnNDb3JlU29mdExpbmsubW0KIHBsYXRmb3Jt
L2NvY29hL0ZpbGVNb25pdG9yQ29jb2EubW0KLXBsYXRmb3JtL2NvY29hL0ZpbGVTeXN0ZW1Db2Nv
YS5tbQogcGxhdGZvcm0vY29jb2EvS2V5RXZlbnRDb2NvYS5tbQogcGxhdGZvcm0vY29jb2EvTG9j
YWxpemVkU3RyaW5nc0NvY29hLm1tCiBwbGF0Zm9ybS9jb2NvYS9NSU1FVHlwZVJlZ2lzdHJ5Q29j
b2EubW0KQEAgLTQ0Niw3ICs0NDQsNiBAQCBwbGF0Zm9ybS9tYWMvQ3Vyc29yTWFjLm1tCiBwbGF0
Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0KIHBsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW0KIHBs
YXRmb3JtL21hYy9FdmVudExvb3BNYWMubW0KLXBsYXRmb3JtL21hYy9GaWxlU3lzdGVtTWFjLm1t
CiBwbGF0Zm9ybS9tYWMvS2V5RXZlbnRNYWMubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9tYWMvUGxh
eWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjLm1tIEBuby11bmlmeQogcGxhdGZvcm0vbWFjL0xvY2Fs
Q3VycmVudEdyYXBoaWNzQ29udGV4dC5tbQpAQCAtNTQxLDggKzUzOCw2IEBAIHBsYXRmb3JtL25l
dHdvcmsvbWFjL1VUSVV0aWxpdGllcy5tbQogcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJl
c291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCiBwbGF0Zm9ybS9uZXR3b3Jr
L21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0KIAotcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBP
U0lYLmNwcAotCiBwbGF0Zm9ybS90ZXh0L2NmL0h5cGhlbmF0aW9uQ0YuY3BwCiAKIHBsYXRmb3Jt
L3RleHQvaW9zL0xvY2FsaXplZERhdGVDYWNoZS5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGRhYjRkZjUwNGUyNjQzM2NkZTBk
MWMxNDRkNDZiNTNjNWNhOWU5MjguLjE5MmNkMjgxMDBhZmYxYWEyNGQzY2MzMWJlZjM1ODM2Y2U4
Njk2MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTEyNDUsNyArMTI0NSw2IEBACiAJCTQ2NzMwMjAyMUM0RUZFNzgwMEJDQjM1
NyAvKiBJZ25vcmVPcGVuc0R1cmluZ1VubG9hZENvdW50SW5jcmVtZW50ZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NzMwMjAxMUM0RUZFNjYwMEJD
QjM1NyAvKiBJZ25vcmVPcGVuc0R1cmluZ1VubG9hZENvdW50SW5jcmVtZW50ZXIuaCAqLzsgfTsK
IAkJNDY4MkQyMDAxRjc5NzgzMDAwQzg2M0RCIC8qIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgyRDFGRjFG
Nzk3ODIzMDBDODYzREIgLyogU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjgzNDRFMDFFRERGQUFBMDBC
Nzc5NUIgLyogRE9NUmVjdExpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ2ODM0NERFMUVEREZBNUYwMEI3Nzk1QiAvKiBET01SZWN0TGlzdC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTQ2ODlGMUFG
MTI2N0JBRTEwMEU4RDM4MCAvKiBGaWxlTWV0YWRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODlGMUFFMTI2N0JBRTEwMEU4RDM4MCAvKiBGaWxl
TWV0YWRhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0NkI2M0Y2QzFDNkU4RDE5MDAyRTkxNEIgLyogSlNFdmVudFRhcmdldEN1c3RvbS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCNjNGNkIxQzZF
OENERjAwMkU5MTRCIC8qIEpTRXZlbnRUYXJnZXRDdXN0b20uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkI5NTE5NTIwN0Q2MzM0MDBBN0QyREQg
LyogQWJzdHJhY3RET01XaW5kb3cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ2Qjk1MThBMjA3RDYzMjgwMEE3RDJERCAvKiBBYnN0cmFjdERPTVdpbmRv
dy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2
Qjk1MTk2MjA3RDYzM0EwMEE3RDJERCAvKiBBYnN0cmFjdEZyYW1lLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkI5NTE4RjIwN0Q2MzJCMDBBN0QyREQg
LyogQWJzdHJhY3RGcmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC0xNDM3LDcgKzE0MzYsNiBAQAogCQk1MTQzQjI2MzFEREQxNTIwMDAxNEZB
QzYgLyogTGlua0ljb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxNDNCMjYyMURERDE0OTAwMDE0RkFDNiAvKiBMaW5rSWNvbi5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxNDVCMTBBMUJDNDhFMkUw
MEU4NjIxOSAvKiBJREJSZXNvdXJjZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNDVCMTA4MUJDNDg5MEIwMEU4NjIxOSAvKiBJREJS
ZXNvdXJjZUlkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk1MTQ4NDUzRjFCQjlEMDdFMDA2QTcyRUQgLyogSURCRXJyb3IuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNDg0NTNEMUJCOUQw
NzYwMDZBNzJFRCAvKiBJREJFcnJvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07Ci0JCTUxNEIzRjczMEM3MjIwNDcwMDA1MzBERiAvKiBGaWxlU3lzdGVt
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTRCM0Y3
MjBDNzIyMDQ3MDAwNTMwREYgLyogRmlsZVN5c3RlbS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxNEM3NjRDMENFOTIzNEUwMDdFRjNDRCAvKiBB
dXRoZW50aWNhdGlvbk1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTE0Qzc2NDIwQ0U5MjM0RTAwN0VGM0NEIC8qIEF1dGhlbnRpY2F0aW9uTWFjLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE0Qzc2
NEUwQ0U5MjM0RTAwN0VGM0NEIC8qIEZvcm1EYXRhU3RyZWFtTWFjLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTRDNzY0NDBDRTkyMzRFMDA3RUYzQ0Qg
LyogRm9ybURhdGFTdHJlYW1NYWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk1MTRDNzY2RTBDRTkyM0ExMDA3RUYzQ0QgLyogQ3JlZGVudGlhbC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0Qzc2NTkw
Q0U5MjNBMTAwN0VGM0NEIC8qIENyZWRlbnRpYWwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNzcwNSw3ICs3NzAzLDYgQEAKIAkJNDY4MzQ0REMx
RURERkE1RjAwQjc3OTVCIC8qIERPTVJlY3RMaXN0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBET01SZWN0TGlzdC5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODM0NEREMUVEREZBNUYwMEI3Nzk1QiAv
KiBET01SZWN0TGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01SZWN0TGlzdC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODM0NERFMUVEREZBNUYwMEI3Nzk1QiAvKiBE
T01SZWN0TGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01SZWN0TGlzdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk0Njg5RjFBRTEyNjdCQUUxMDBFOEQzODAgLyogRmlsZU1ldGFkYXRh
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbGVNZXRhZGF0YS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkI2M0Y2QjFDNkU4Q0RGMDAyRTkxNEIgLyogSlNF
dmVudFRhcmdldEN1c3RvbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0V2
ZW50VGFyZ2V0Q3VzdG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2Qjk1MThB
MjA3RDYzMjgwMEE3RDJERCAvKiBBYnN0cmFjdERPTVdpbmRvdy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBBYnN0cmFjdERPTVdpbmRvdy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0NkI5NTE4QzIwN0Q2MzI5MDBBN0QyREQgLyogUmVtb3RlRnJhbWUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlRnJhbWUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODEwOCw4ICs4MTA1LDYgQEAKIAkJNTE0NUIxMDgx
QkM0ODkwQjAwRTg2MjE5IC8qIElEQlJlc291cmNlSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBJREJSZXNvdXJjZUlkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTE0ODQ1M0MxQkI5RDA3NjAwNkE3MkVEIC8qIElEQkVycm9yLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElEQkVycm9yLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0ODQ1M0QxQkI5RDA3NjAwNkE3MkVEIC8qIElE
QkVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElEQkVycm9yLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUxNEIzRjcyMEM3MjIwNDcwMDA1MzBERiAvKiBG
aWxlU3lzdGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbGVTeXN0ZW0u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTE0QjNGNzUwQzcyMjA1NTAwMDUzMERG
IC8qIEZpbGVTeXN0ZW1Db2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IEZpbGVTeXN0ZW1Db2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTE0Qzc2MzUwQ0U5MjI1RTAwN0VGM0NEIC8qIEpTU1FMRXJyb3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTUUxFcnJvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUxNEM3NjM2MENFOTIyNUUwMDdFRjNDRCAvKiBKU1NRTFRyYW5zYWN0aW9u
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU1FMVHJhbnNhY3Rp
b24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTRDNzY0MjBDRTkyMzRFMDA3
RUYzQ0QgLyogQXV0aGVudGljYXRpb25NYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQXV0aGVudGljYXRpb25NYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTgxNDgsOCArODE0Myw2IEBACiAJCTUxNUUzN0Y0MUZBQTkzODgwMEQ3RjIyQSAvKiBTZXJ2aWNl
V29ya2VyVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VydmljZVdv
cmtlclR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNUY3OTUxMUNGQ0Ez
QzcwMENDRUQ5MyAvKiBXZWJDb3JlQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQ29yZUNyb3NzVGhyZWFkQ29waWVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE1Rjc5NTIxQ0ZDQTNDNzAwQ0NFRDkzIC8qIFdl
YkNvcmVDcm9zc1RocmVhZENvcGllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJDb3JlQ3Jvc3NUaHJlYWRDb3BpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJNTE2MDMwMEEwQ0M0MjUxMjAwQzhBQzI1IC8qIEZpbGVTeXN0ZW1QT1NJWC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxlU3lzdGVtUE9TSVguY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MTYwMzA2QjBDQzQzNjIzMDBDOEFDMjUgLyogRmls
ZVN5c3RlbUNGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZpbGVT
eXN0ZW1DRi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNjA3MTJCMUJEODMw
NTMwMERCQzRGMiAvKiBUcmFuc2FjdGlvbk9wZXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBUcmFuc2FjdGlvbk9wZXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MTYwNzEyQzFCRDgzMDcyMDBEQkM0RjIgLyogSURCT2JqZWN0U3RvcmVJbmZv
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElEQk9iamVjdFN0b3Jl
SW5mby5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNjA3MTJEMUJEODMwNzIw
MERCQzRGMiAvKiBJREJPYmplY3RTdG9yZUluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSURCT2JqZWN0U3RvcmVJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xMTI1MSw3ICsxMTI0NCw2IEBACiAJCUExQzJDNTc1MUZBMjg1MTYwMEJBNDZGQSAvKiBQ
YXltZW50U2Vzc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYXltZW50U2Vzc2lvbi5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExQzdGQUExMTMzQTVEMzUwMEQ2NzMyRCAv
KiBKU1hQYXRoUmVzdWx0Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTWFBhdGhSZXN1bHRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBMUNCRUY2MzFGOUYxMTI5MDAyOERFN0MgLyogTW9ja1BheW1lbnRNZXRob2QuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTW9ja1BheW1lbnRNZXRob2QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJQTFDQzExNjIxRTQ5M0QwMTAwRUZBNjlDIC8qIEZpbGVTeXN0ZW1NYWMubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBGaWxlU3lzdGVtTWFjLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMUNDNTY0QzFGNDYxNDUwMDBBNDU1NUIgLyogSlNQ
YXltZW50TWV0aG9kRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Bh
eW1lbnRNZXRob2REYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExQ0M1NjRE
MUY0NjE0NTEwMEE0NTU1QiAvKiBKU1BheW1lbnRNZXRob2REYXRhLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUGF5bWVudE1ldGhvZERhdGEuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBMUNDNTY0RTFGNDYxNDUyMDBBNDU1NUIgLyogSlNQYXlt
ZW50Q29tcGxldGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQYXltZW50
Q29tcGxldGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzNDM4LDcgKzEzNDMw
LDYgQEAKIAkJQzU1OTJGNzcxQTkyQUEyODAwMUY4ODYyIC8qIENoYXJhY3RlclByb3BlcnRpZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2hhcmFjdGVyUHJvcGVydGllcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNTVDN0JBMDE3MThBRkJBMDAxMzI3RTQg
LyogUmVuZGVyVGhlbWVJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBSZW5kZXJUaGVtZUlPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzU3
MkVFMUQxMjAxQzlCQzAwN0Q4RjgyIC8qIEpTSURCSW5kZXguaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNJREJJbmRleC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlDNTdGRURFMDEyMTJFRTlDMDA5N0JFNjUgLyogRmlsZVN5c3RlbS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxlU3lzdGVtLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQzU4NUE2NjAxMUQ0RkFDNTAwNEMzRTRCIC8qIElEQkJpbmRpbmdVdGls
aXRpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSURCQmluZGlu
Z1V0aWxpdGllcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1ODVBNjYxMTFE
NEZBQzUwMDRDM0U0QiAvKiBJREJCaW5kaW5nVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IElEQkJpbmRpbmdVdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQzU4NUE2NkIxMUQ0RkIwNzAwNEMzRTRCIC8qIEpTSURCRGF0YWJhc2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNJREJEYXRhYmFzZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY3NzYsNyArMTY3NjcsNiBAQAogCQkxQUU0MkY2NzBB
QTRCOENCMDBDODYxMkQgLyogY2YgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxk
cmVuID0gKAotCQkJCTUxNjAzMDZCMENDNDM2MjMwMEM4QUMyNSAvKiBGaWxlU3lzdGVtQ0YuY3Bw
ICovLAogCQkJCTUxN0E2M0JGMUI3NDMxN0UwMEU3RENEQyAvKiBLZXllZERlY29kZXJDRi5jcHAg
Ki8sCiAJCQkJNTE3QTYzQzAxQjc0MzE3RTAwRTdEQ0RDIC8qIEtleWVkRGVjb2RlckNGLmggKi8s
CiAJCQkJNTE3QTYzQzExQjc0MzE3RTAwRTdEQ0RDIC8qIEtleWVkRW5jb2RlckNGLmNwcCAqLywK
QEAgLTE4NzM4LDE0ICsxODcyOCw2IEBACiAJCQlwYXRoID0gbWFjOwogCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKIAkJfTsKLQkJNTE2MDMwMDkwQ0M0MjQ1NDAwQzhBQzI1IC8qIHBvc2l4ICov
ID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQk1MTYwMzAwQTBD
QzQyNTEyMDBDOEFDMjUgLyogRmlsZVN5c3RlbVBPU0lYLmNwcCAqLywKLQkJCSk7Ci0JCQlwYXRo
ID0gcG9zaXg7Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9OwogCQk1MTYwRjQ5MjBC
MEFBNzE1MDBDMUQyQUYgLyogbWFjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKQEAgLTIwMTA2LDcgKzIwMDg4LDYgQEAKIAkJCQlBN0NGQjNENDBCN0VEMTE4MDA3
MEMzMkQgLyogRHJhZ0ltYWdlTWFjLm1tICovLAogCQkJCUUxQkE2NkYwMTc0MkJEODYwMEMyMDI1
MSAvKiBEeW5hbWljTGlua2VySW50ZXJwb3NpbmcuaCAqLywKIAkJCQkxQ0ExOUUwMzBEQzI1NTk1
MDA2NUE5OTQgLyogRXZlbnRMb29wTWFjLm1tICovLAotCQkJCUExQ0MxMTYyMUU0OTNEMDEwMEVG
QTY5QyAvKiBGaWxlU3lzdGVtTWFjLm1tICovLAogCQkJCTkzNUM0NzZFMDlBQzRENzMwMEE2QUFC
NCAvKiBLZXlFdmVudE1hYy5tbSAqLywKIAkJCQlGNDRBNUY1NzFGRUQzODMwMDA3RjU5NDQgLyog
TGVnYWN5TlNQYXN0ZWJvYXJkVHlwZXMuaCAqLywKIAkJCQkwNkU4MUVENjBBQjVENUU5MDBDODc4
MzcgLyogTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0LmggKi8sCkBAIC0yMjU1Niw3ICsyMjUz
Nyw2IEBACiAJCQkJN0M3OTQxRTMxQzU2QzI5MzAwQTRDNThFIC8qIERhdGFEZXRlY3RvcnNDb3Jl
U29mdExpbmsuaCAqLywKIAkJCQk3Qzc5NDFFMjFDNTZDMjkzMDBBNEM1OEUgLyogRGF0YURldGVj
dG9yc0NvcmVTb2Z0TGluay5tbSAqLywKIAkJCQk3QTA5Q0VGMDFGMDFEMUY3MDBFOTNCREIgLyog
RmlsZU1vbml0b3JDb2NvYS5tbSAqLywKLQkJCQk1MTRCM0Y3NTBDNzIyMDU1MDAwNTMwREYgLyog
RmlsZVN5c3RlbUNvY29hLm1tICovLAogCQkJCUE1Qzk3NENGMTE0ODVGRjEwMDY2RjJBQiAvKiBL
ZXlFdmVudENvY29hLmggKi8sCiAJCQkJQTVDOTc0RDAxMTQ4NUZGMTAwNjZGMkFCIC8qIEtleUV2
ZW50Q29jb2EubW0gKi8sCiAJCQkJMUE0ODMyQjIxQTk1M0JBNjAwOEI0REZFIC8qIExvY2FsaXpl
ZFN0cmluZ3NDb2NvYS5tbSAqLywKQEAgLTI1Mzk5LDcgKzI1Mzc5LDYgQEAKIAkJCQkwNzIyMUI5
MjE3Q0YwQUQ0MDA4NDhFNTEgLyogbWVkaWFzdHJlYW0gKi8sCiAJCQkJNTlDNzdGMTAxMDU0NTkx
QzAwNTA2MTA0IC8qIG1vY2sgKi8sCiAJCQkJNjU2Qjg0RDcwQUVBMUNFOTAwQTA5NUI0IC8qIG5l
dHdvcmsgKi8sCi0JCQkJNTE2MDMwMDkwQ0M0MjQ1NDAwQzhBQzI1IC8qIHBvc2l4ICovLAogCQkJ
CTFBMkU2RTU2MENDNTUxRTAwMDRBMjA2MiAvKiBzcWwgKi8sCiAJCQkJQjJDM0Q5RUMwRDAwNkMx
RDAwRUY2RjI2IC8qIHRleHQgKi8sCiAJCQkJRTE4ODIzNUYyMDMxRjUwRjAwQjQyREYzIC8qIHZy
ICovLApAQCAtMjU0NDQsMTQgKzI1NDIzLDExIEBACiAJCQkJMDY2Qzc3MkEwQUI2MDNCNzAwMjM4
Q0M0IC8qIEZpbGVDaG9vc2VyLmggKi8sCiAJCQkJNTM1MUQ0QUUxREY5MTZBQzAwODAxMENEIC8q
IEZpbGVIYW5kbGUuY3BwICovLAogCQkJCTUzNTFENEFGMURGOTE2QUMwMDgwMTBDRCAvKiBGaWxl
SGFuZGxlLmggKi8sCi0JCQkJNDY4OUYxQUUxMjY3QkFFMTAwRThEMzgwIC8qIEZpbGVNZXRhZGF0
YS5oICovLAogCQkJCTdBMDlDRUVCMUYwMUNDOTMwMEU5M0JEQiAvKiBGaWxlTW9uaXRvci5jcHAg
Ki8sCiAJCQkJN0EwOUNFRUMxRjAxQ0M5MzAwRTkzQkRCIC8qIEZpbGVNb25pdG9yLmggKi8sCiAJ
CQkJMkVGMUJGRTgxMjFDOUY0MjAwQzI3NjI3IC8qIEZpbGVTdHJlYW0uY3BwICovLAogCQkJCTJF
RjFCRkU5MTIxQzlGNDIwMEMyNzYyNyAvKiBGaWxlU3RyZWFtLmggKi8sCiAJCQkJMkVGMUJGRjgx
MjFDQjBDRTAwQzI3NjI3IC8qIEZpbGVTdHJlYW1DbGllbnQuaCAqLywKLQkJCQlDNTdGRURFMDEy
MTJFRTlDMDA5N0JFNjUgLyogRmlsZVN5c3RlbS5jcHAgKi8sCi0JCQkJNTE0QjNGNzIwQzcyMjA0
NzAwMDUzMERGIC8qIEZpbGVTeXN0ZW0uaCAqLywKIAkJCQlCQzA3M0JBOTBDMzk5QjFGMDAwRjU5
NzkgLyogRmxvYXRDb252ZXJzaW9uLmggKi8sCiAJCQkJQ0Q0QkU1MjkxQ0UxMzQyNTAwOUQ4N0RB
IC8qIEdlbmVyaWNUYXNrUXVldWUuY3BwICovLAogCQkJCUNENjJGQjk0MUFGMDE4RTcwMDEyRUQ3
RCAvKiBHZW5lcmljVGFza1F1ZXVlLmggKi8sCkBAIC0yOTE0MCw3ICsyOTExNiw2IEBACiAJCQkJ
RjU1QjNEQkUxMjUxRjEyRDAwM0VGMjY5IC8qIEZpbGVJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTk3NkQ2Qzg2MTIyQjhBM0QwMDFGRDFGNyAvKiBGaWxlTGlzdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODM1RDU0QzUxRjRERTUzODAwRTYwNjcxIC8qIEZpbGVMaXN0Q3JlYXRvci5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJNDY4OUYxQUYxMjY3QkFFMTAwRThEMzgwIC8qIEZpbGVNZXRhZGF0
YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0EwOUNFRjExRjAyMDY5QjAwRTkzQkRCIC8qIEZpbGVN
b25pdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzZENkM4OTEyMkI4QTNEMDAxRkQxRjcgLyog
RmlsZVJlYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkU3NTg0MUUxMjc3OUFEQTAwNjI2MjhC
IC8qIEZpbGVSZWFkZXJMb2FkZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMjkxNDgsNyArMjkxMjMs
NiBAQAogCQkJCTJFREYzNjlEMTIyQzk0QjQwMDJGN0Q0RSAvKiBGaWxlUmVhZGVyU3luYy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMkVGMUJGRUIxMjFDOUY0MjAwQzI3NjI3IC8qIEZpbGVTdHJlYW0u
aCBpbiBIZWFkZXJzICovLAogCQkJCTJFRjFCRkY5MTIxQ0IwQ0UwMEMyNzYyNyAvKiBGaWxlU3Ry
ZWFtQ2xpZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTRCM0Y3MzBDNzIyMDQ3MDAwNTMwREYg
LyogRmlsZVN5c3RlbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNGQjMzNzExRjUwOEE1NDAwOTg2
RTU0IC8qIEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODMw
MzM1MDIxRjU0OTA1NzAwNERGNzA3IC8qIEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTgzMDMzNTAzMUY1NDkwNUEwMDRERjcwNyAvKiBGaWxlU3lzdGVtRW50
cmllc0NhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9HQ0NvbnRyb2xsZXIuY3BwCmluZGV4IGQyNTFkMmVjZTFmMThiMjQwYTg4YmJmYjNhMjJjMmMy
NGY4MGY2Y2QuLjhhODNjNGI2ZjZmNTk2MDdkZmE3NzA0ODQyOWQwMmIxZTQyOTczM2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvR0NDb250cm9sbGVyLmNwcApAQCAtMjcsNyArMjcs
NiBAQAogI2luY2x1ZGUgIkdDQ29udHJvbGxlci5oIgogCiAjaW5jbHVkZSAiQ29tbW9uVk0uaCIK
LSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiSlNIVE1MRG9jdW1lbnQuaCIKICNp
bmNsdWRlICJMb2NhdGlvbi5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXAuaD4KQEAg
LTM2LDYgKzM1LDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9WTS5oPgogI2luY2x1ZGUg
PHBhbC9Mb2dnaW5nLmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKyNpbmNsdWRlIDx3
dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1
ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0RhdGFUcmFuc2Zlckl0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0
ZW0uY3BwCmluZGV4IGEzZWNjNWE1YzllMGYzMGQ3NjAzMjgxN2YwZDQ2Mzk2MzNmZjFhOGIuLjU5
Zjk3ODZlZDhjZmE2NDllMDdkZGI3ZDg4NGFjOTI0MzI5NzYzOWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRGF0YVRyYW5zZmVySXRlbS5jcHAKQEAgLTM2LDExICszNiwxMSBAQAogI2luY2x1ZGUgIkRh
dGFUcmFuc2Zlckl0ZW1MaXN0LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJG
aWxlLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW1EaXJl
Y3RvcnlFbnRyeS5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW1GaWxlRW50cnkuaCIKICNpbmNsdWRl
ICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU3RyaW5nQ2FsbGJhY2suaCIK
KyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNv
Y29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29j
b2EubW0KaW5kZXggOTcyMTdmMWQ3NWQwZTU0NmZjZjg0MzFlMmQ0YWY4YmE1NDNhYjYxYy4uMjU0
YTM2OGZhNzc0YWQ2MzcyZDQ2ZjE1M2M1YTk1YzRlZTI0MjhjNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KQEAgLTM3
LDcgKzM3LDYgQEAKICNpbXBvcnQgIkVkaXRvci5oIgogI2ltcG9ydCAiRWRpdG9yQ2xpZW50Lmgi
CiAjaW1wb3J0ICJGaWxlLmgiCi0jaW1wb3J0ICJGaWxlU3lzdGVtLmgiCiAjaW1wb3J0ICJGcmFt
ZS5oIgogI2ltcG9ydCAiRnJhbWVMb2FkZXIuaCIKICNpbXBvcnQgIkZyYW1lTG9hZGVyQ2xpZW50
LmgiCkBAIC02NSw2ICs2NCw3IEBACiAjaW1wb3J0ICJXZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRy
YXMuaCIKICNpbXBvcnQgIm1hcmt1cC5oIgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0F0dHJp
YnV0ZWRTdHJpbmdTUEkuaD4KKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDx3
dGYvU29mdExpbmtpbmcuaD4KICNpbXBvcnQgPHd0Zi9VUkxQYXJzZXIuaD4KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvRmlsZS5jcHAKaW5kZXggYjczZmNkZTc5ZjQ2MDc5MmM5MjZjMDc1ZmJhYWY2NjQ4YTcyNDEz
MS4uYWRiMzBjOTMzY2EyZmIyNWNlZjVkMGNhNDEzNjU2MGJiYTZkODExNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0ZpbGUuY3BwCkBAIC0yNywxMSArMjcsMTEgQEAKICNpbmNsdWRlICJGaWxlLmgiCiAKICNp
bmNsdWRlICJCbG9iVVJMLmgiCi0jaW5jbHVkZSAiRmlsZU1ldGFkYXRhLmgiCi0jaW5jbHVkZSAi
RmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJU
aHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSA8d3RmL0RhdGVNYXRoLmg+CisjaW5j
bHVkZSA8d3RmL0ZpbGVNZXRhZGF0YS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZUNvY29hLm1tIGIvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9GaWxlQ29jb2EubW0KaW5kZXggMjBiZTZmN2FlZGVjYTc1MzQ4MzU2M2Ix
YmU0ZjkwNjJmYTQzOGEwMy4uNjY0ZjlhNTM2MTNkZjI2Y2ExN2M3MDdjMjFiNTBjNjQ2NDUyMDRl
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlQ29jb2EubW0KQEAgLTI4LDcgKzI4LDcgQEAKIAog
I2lmIEVOQUJMRShGSUxFX1JFUExBQ0VNRU5UKQogCi0jaW1wb3J0ICJGaWxlU3lzdGVtLmgiCisj
aW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNp
bXBvcnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVDb3JlU2VydmljZXMuaD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCmluZGV4IDAzYWYzYTk2MzQ5NGZhZjAwMTJlMjFhOTM4
ZjUxOTE3ODAzMDg1MDguLjk5OGY5ZWZhOTRlMmE3NTIxNmJiNGYzOWE3OTY4NjQ5YzEzMTdkZDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcApAQCAtMzAsNyArMzAsNiBAQAog
I2luY2x1ZGUgIkZpbGUuaCIKICNpbmNsdWRlICJGaWxlTGlzdC5oIgogI2luY2x1ZGUgIkZpbGVM
aXN0Q3JlYXRvci5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJGb3JtQ29u
dHJvbGxlci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVu
dC5oIgpAQCAtNDMsNiArNDIsNyBAQAogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAi
U2hhZG93Um9vdC5oIgogI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgiCisjaW5jbHVk
ZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgog
I2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWls
ZGVyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVMaXN0Q3JlYXRvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVMaXN0Q3JlYXRvci5jcHAKaW5kZXggNzZmNTY1
OTcwYWQxZGQ4ZDgxMDZjMjVhNTc5ZTQ1OTFiYWJkNDliOC4uMTU1NmZjMjk5Y2IyMzczYjBjNTk4
OTUyMGE3MmMzMTE2Y2UzOWVhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxl
TGlzdENyZWF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUxpc3RDcmVhdG9y
LmNwcApAQCAtMjgsOSArMjgsOSBAQAogCiAjaW5jbHVkZSAiRmlsZUNob29zZXIuaCIKICNpbmNs
dWRlICJGaWxlTGlzdC5oIgotI2luY2x1ZGUgIkZpbGVNZXRhZGF0YS5oIgotI2luY2x1ZGUgIkZp
bGVTeXN0ZW0uaCIKICNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuaD4KKyNpbmNsdWRl
IDx3dGYvRmlsZU1ldGFkYXRhLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAppbmRleCA3NTVmMWEyOWFkN2M1N2NjYzNi
ZWE1ZWZhMjU1YjY1NmJiZGNjMzA5Li44YTMzZTg4NzBjYzM2YmM2ZGUyZmNhOGQxZDU4YzRjY2E2
YjhmM2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlICJEb2N1
bWVudExvYWRlci5oIgogI2luY2x1ZGUgIkRPTUFwcGxpY2F0aW9uQ2FjaGUuaCIKICNpbmNsdWRl
ICJFdmVudE5hbWVzLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkZyYW1l
LmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVu
dC5oIgpAQCAtNDQsNiArNDMsNyBAQAogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2lu
Y2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU3VicmVzb3VyY2VMb2FkZXIuaCIKKyNpbmNs
dWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9VVUlELmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCmluZGV4IGU4MTQ4M2MzNjIzY2QwMzQyNDQ0
ODRjZDBmNWZkYzkyNDk1NWFlMzIuLjgyYWRmZjMwMzM1YTJlMmJiOWNhYTdiNGY2Njg4NGQwOTBl
Nzk1NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcApAQCAtMzAsMTIgKzMwLDEyIEBACiAjaW5jbHVk
ZSAiQXBwbGljYXRpb25DYWNoZUdyb3VwLmgiCiAjaW5jbHVkZSAiQXBwbGljYXRpb25DYWNoZUhv
c3QuaCIKICNpbmNsdWRlICJBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuaCIKLSNpbmNsdWRlICJG
aWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiU1FMaXRlRGF0YWJhc2VUcmFja2VyLmgiCiAjaW5jbHVk
ZSAiU1FMaXRlU3RhdGVtZW50LmgiCiAjaW5jbHVkZSAiU1FMaXRlVHJhbnNhY3Rpb24uaCIKICNp
bmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luRGF0YS5o
IgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJh
cy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVVVJRC5oPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAKaW5kZXggZGIxNzdlOGRhZThjNjBlNmU3MTgyMjlmYjNjMDNkMzZkZmZkNTQ1Mi4u
MjZhMjU4MTljMWE3NzQxZDEyY2Q5NjQ2MjlhZDE1OTc5OTg2ZDBkMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
Y3BwCkBAIC01MSw3ICs1MSw2IEBACiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVu
dE5hbWVzLmgiCiAjaW5jbHVkZSAiRXh0ZW5zaW9uU3R5bGVTaGVldHMuaCIKLSNpbmNsdWRlICJG
aWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiRm9jdXNDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRnJh
bWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgpAQCAtMTIyLDYgKzEy
MSw3IEBACiAjaW5jbHVkZSAiV2ViR0xTdGF0ZVRyYWNrZXIuaCIKICNpbmNsdWRlICJXaGVlbEV2
ZW50RGVsdGFGaWx0ZXIuaCIKICNpbmNsdWRlICJXaWRnZXQuaCIKKyNpbmNsdWRlIDx3dGYvRmls
ZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaD4KICNpbmNs
dWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCmluZGV4IGI1OGZhYWExNjdhOTY3MjZh
YTIxMWZlMWYwMjc0YmM2NmU5NjE2NWIuLjNhZDkyMWNjNTRkZTFmZWZlM2QxNTcxZjIyZTI1MzIx
MmE4ZGUyMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCkBAIC0zMCwx
NSArMzAsMTUgQEAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogCiAjaW5jbHVkZSAiQmxv
YlVSTC5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKLSNpbmNsdWRlIDx3dGYvVVJMLmg+CiAj
aW5jbHVkZSAiU2NoZW1lUmVnaXN0cnkuaCIKICNpbmNsdWRlICJTZWN1cml0eVBvbGljeS5oIgog
I2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVCbG9iUmVnaXN0
cnkuaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhy
ZWFkLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1N0
ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcAppbmRleCAwNWY4YjE5ZGFlNTg3OWQwY2RmZGE3Yzc2
NDllY2EyYjQ0YzM5OGE2Li40MzBjYjhiMGIzYWMzNmNjYTk2MTFlMGExZjA5ZTM1YWUxMGIwZDlj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwCkBAIC0yNyw5
ICsyNyw5IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5EYXRhLmgiCiAKICNpbmNsdWRlICJE
b2N1bWVudC5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJGcmFtZS5oIgog
I2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
QnVpbGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5o
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUhhbmRsZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUhhbmRsZS5oCmluZGV4IGQxMTgzMDg2OTYzZDIxMjM3
YjkwYjFhODI1ODViNzY1YmJjMTNkZjIuLjUwZDgyNGNhZWU5YmExMjQwOTg0MzVlYTcyMTVkMTUx
Nzg3ZGJjZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVIYW5kbGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlSGFuZGxlLmgKQEAgLTI4LDkgKzI4
LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCi0KICNpbmNs
dWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
RmlsZU1ldGFkYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlTWV0YWRhdGEuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2Q4ODQ5NTNlNzY3NWQ5MmMwNjM4ZGVjYWQ4
NTdjZDQxYTU5YzU2MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlTWV0YWRhdGEuaAorKysgL2Rldi9udWxs
CkBAIC0xLDUwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
LSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
LSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
Ci0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBGaWxlTWV0YWRhdGEgewotICAgIC8v
IFRoZSBsYXN0IG1vZGlmaWNhdGlvbiB0aW1lIG9mIHRoZSBmaWxlLCBpbiBzZWNvbmRzLgotICAg
IFdhbGxUaW1lIG1vZGlmaWNhdGlvblRpbWU7Ci0KLSAgICAvLyBUaGUgbGVuZ3RoIG9mIHRoZSBm
aWxlIGluIGJ5dGVzLgotICAgIGxvbmcgbG9uZyBsZW5ndGg7Ci0KLSAgICBib29sIGlzSGlkZGVu
OwotCi0gICAgZW51bSBjbGFzcyBUeXBlIHsgRmlsZSwgRGlyZWN0b3J5LCBTeW1ib2xpY0xpbmsg
fTsKLSAgICBUeXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0uY3BwCmluZGV4IGVhOTE3Mzc0YjRjOGI0YTRlYTA0M2My
OWFiZjU0MzE1OTIyYTg5ZTIuLjg5M2JiMzM5NDc2Y2VmZGE4ZGYxMGJjOTIwYzBiMzU4MjUxOTE1
N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0uY3BwCkBAIC0yOSwxMCArMjks
OCBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLQogI2luY2x1ZGUgIkZpbGVTdHJlYW0u
aCIKIAotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vRmlsZVN0cmVhbS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN0cmVh
bS5oCmluZGV4IGFhMDExZWEyM2UxODU0YzRiOTAyMDU5NjI1Mzc2MTNhMWFiNmUxMmIuLmEyZmI4
ZTVmYWEyNTRiYzhlNWNjZTllMWI0YzY2MzFiOGQxYTA1NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9GaWxlU3RyZWFtLmgKQEAgLTI4LDEwICsyOCw5IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LSNpZm5kZWYgRmlsZVN0cmVhbV9oCi0jZGVmaW5lIEZpbGVTdHJlYW1faAorI3ByYWdtYSBvbmNl
CiAKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02NCw1ICs2MywzIEBAIHByaXZhdGU6CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBGaWxlU3RyZWFtX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGVkOWQzN2FhYTEzMTYyODNkYTdlZjIyNDZiM2NhOTQxMGFkMjVkMjIuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vRmlsZVN5c3RlbS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNjcgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwNy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKLQotI2luY2x1
ZGUgIkZpbGVNZXRhZGF0YS5oIgotI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KLSNpbmNsdWRl
IDx3dGYvU2NvcGUuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0jaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgotCi0jaWYgIU9TKFdJTkRPV1MpCi0jaW5jbHVkZSA8
ZmNudGwuaD4KLSNpbmNsdWRlIDxzeXMvbW1hbi5oPgotI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0j
aW5jbHVkZSA8dW5pc3RkLmg+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1l
c3BhY2UgRmlsZVN5c3RlbSB7Ci0KLS8vIFRoZSBmb2xsb3dpbmcgbG93ZXItQVNDSUkgY2hhcmFj
dGVycyBuZWVkIGVzY2FwaW5nIHRvIGJlIHVzZWQgaW4gYSBmaWxlbmFtZQotLy8gYWNyb3NzIGFs
bCBzeXN0ZW1zLCBpbmNsdWRpbmcgV2luZG93czoKLS8vICAgICAtIFVucHJpbnRhYmxlIEFTQ0lJ
ICgwMC0xRikKLS8vICAgICAtIFNwYWNlICAgICAgICAgICAgICgyMCkKLS8vICAgICAtIERvdWJs
ZSBxdW90ZSAgICAgICgyMikKLS8vICAgICAtIFBlcmNlbnQgICAgICAgICAgICgyNSkgKGVzY2Fw
ZWQgYmVjYXVzZSBpdCBpcyBvdXIgZXNjYXBlIGNoYXJhY3RlcikKLS8vICAgICAtIEFzdGVyaXNr
ICAgICAgICAgICgyQSkKLS8vICAgICAtIFNsYXNoICAgICAgICAgICAgICgyRikKLS8vICAgICAt
IENvbG9uICAgICAgICAgICAgICgzQSkKLS8vICAgICAtIExlc3MtdGhhbiAgICAgICAgICgzQykK
LS8vICAgICAtIEdyZWF0ZXItdGhhbiAgICAgICgzRSkKLS8vICAgICAtIFF1ZXN0aW9uIE1hcmsg
ICAgICgzRikKLS8vICAgICAtIEJhY2tzbGFzaCAgICAgICAgICg1QykKLS8vICAgICAtIFBpcGUg
ICAgICAgICAgICAgICg3QykKLS8vICAgICAtIERlbGV0ZSAgICAgICAgICAgICg3RikKLQotc3Rh
dGljIGNvbnN0IGJvb2wgbmVlZHNFc2NhcGluZ1sxMjhdID0gewotICAgIC8qIDAwLTA3ICovIHRy
dWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAKLSAg
ICAvKiAwOC0wRiAqLyB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0
cnVlLCAgdHJ1ZSwgCi0KLSAgICAvKiAxMC0xNyAqLyB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVl
LCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgCi0gICAgLyogMTgtMUYgKi8gdHJ1ZSwgIHRy
dWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsIAotCi0gICAgLyog
MjAtMjcgKi8gdHJ1ZSwgIGZhbHNlLCB0cnVlLCAgZmFsc2UsIGZhbHNlLCB0cnVlLCAgZmFsc2Us
IGZhbHNlLCAKLSAgICAvKiAyOC0yRiAqLyBmYWxzZSwgZmFsc2UsIHRydWUsICBmYWxzZSwgZmFs
c2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgCi0gICAgCi0gICAgLyogMzAtMzcgKi8gZmFsc2UsIGZh
bHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAKLSAgICAvKiAz
OC0zRiAqLyBmYWxzZSwgZmFsc2UsIHRydWUsICBmYWxzZSwgdHJ1ZSwgIGZhbHNlLCB0cnVlLCAg
dHJ1ZSwgCi0gICAgCi0gICAgLyogNDAtNDcgKi8gZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2Us
IGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAKLSAgICAvKiA0OC00RiAqLyBmYWxzZSwgZmFs
c2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsCi0gICAgCi0gICAg
LyogNTAtNTcgKi8gZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFs
c2UsIGZhbHNlLCAKLSAgICAvKiA1OC01RiAqLyBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwg
dHJ1ZSwgIGZhbHNlLCBmYWxzZSwgZmFsc2UsCi0gICAgCi0gICAgLyogNjAtNjcgKi8gZmFsc2Us
IGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAKLSAgICAv
KiA2OC02RiAqLyBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxz
ZSwgZmFsc2UsCi0gICAgCi0gICAgLyogNzAtNzcgKi8gZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFs
c2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAKLSAgICAvKiA3OC03RiAqLyBmYWxzZSwg
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgCi19OwotCi1z
dGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkRXNjYXBlVUNoYXIoVUNoYXIgY2hhcmFjdGVyLCBVQ2hh
ciBwcmV2aW91c0NoYXJhY3RlciwgVUNoYXIgbmV4dENoYXJhY3RlcikKLXsKLSAgICBpZiAoY2hh
cmFjdGVyIDw9IDEyNykKLSAgICAgICAgcmV0dXJuIG5lZWRzRXNjYXBpbmdbY2hhcmFjdGVyXTsK
LQotICAgIGlmIChVMTZfSVNfTEVBRChjaGFyYWN0ZXIpICYmICFVMTZfSVNfVFJBSUwobmV4dENo
YXJhY3RlcikpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgaWYgKFUxNl9JU19UUkFJTChj
aGFyYWN0ZXIpICYmICFVMTZfSVNfTEVBRChwcmV2aW91c0NoYXJhY3RlcikpCi0gICAgICAgIHJl
dHVybiB0cnVlOwotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1TdHJpbmcgZW5jb2RlRm9yRmls
ZU5hbWUoY29uc3QgU3RyaW5nJiBpbnB1dFN0cmluZykKLXsKLSAgICB1bnNpZ25lZCBsZW5ndGgg
PSBpbnB1dFN0cmluZy5sZW5ndGgoKTsKLSAgICBpZiAoIWxlbmd0aCkKLSAgICAgICAgcmV0dXJu
IGlucHV0U3RyaW5nOwotCi0gICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7Ci0gICAgcmVzdWx0LnJl
c2VydmVDYXBhY2l0eShsZW5ndGgpOwotCi0gICAgVUNoYXIgcHJldmlvdXNDaGFyYWN0ZXI7Ci0g
ICAgVUNoYXIgY2hhcmFjdGVyID0gMDsKLSAgICBVQ2hhciBuZXh0Q2hhcmFjdGVyID0gaW5wdXRT
dHJpbmdbMF07Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0g
ICAgICAgIHByZXZpb3VzQ2hhcmFjdGVyID0gY2hhcmFjdGVyOwotICAgICAgICBjaGFyYWN0ZXIg
PSBuZXh0Q2hhcmFjdGVyOwotICAgICAgICBuZXh0Q2hhcmFjdGVyID0gaSArIDEgPCBsZW5ndGgg
PyBpbnB1dFN0cmluZ1tpICsgMV0gOiAwOwotCi0gICAgICAgIGlmIChzaG91bGRFc2NhcGVVQ2hh
cihjaGFyYWN0ZXIsIHByZXZpb3VzQ2hhcmFjdGVyLCBuZXh0Q2hhcmFjdGVyKSkgewotICAgICAg
ICAgICAgaWYgKGNoYXJhY3RlciA8PSAyNTUpIHsKLSAgICAgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKCclJyk7Ci0gICAgICAgICAgICAgICAgYXBwZW5kQnl0ZUFzSGV4KGNoYXJhY3RlciwgcmVz
dWx0KTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZExpdGVyYWwoIiUrIik7Ci0gICAgICAgICAgICAgICAgYXBwZW5kQnl0ZUFzSGV4KGNoYXJhY3Rl
ciA+PiA4LCByZXN1bHQpOwotICAgICAgICAgICAgICAgIGFwcGVuZEJ5dGVBc0hleChjaGFyYWN0
ZXIsIHJlc3VsdCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZChjaGFyYWN0ZXIpOwotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQudG9T
dHJpbmcoKTsKLX0KLQotU3RyaW5nIGRlY29kZUZyb21GaWxlbmFtZShjb25zdCBTdHJpbmcmIGlu
cHV0U3RyaW5nKQotewotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGlucHV0U3RyaW5nLmxlbmd0aCgp
OwotICAgIGlmICghbGVuZ3RoKQotICAgICAgICByZXR1cm4gaW5wdXRTdHJpbmc7Ci0KLSAgICBT
dHJpbmdCdWlsZGVyIHJlc3VsdDsKLSAgICByZXN1bHQucmVzZXJ2ZUNhcGFjaXR5KGxlbmd0aCk7
Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAg
aWYgKGlucHV0U3RyaW5nW2ldICE9ICclJykgewotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChp
bnB1dFN0cmluZ1tpXSk7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCi0gICAg
ICAgIC8vIElmIHRoZSBpbnB1dCBzdHJpbmcgaXMgYSB2YWxpZCBlbmNvZGVkIGZpbGVuYW1lLCBp
dCBtdXN0IGJlIGF0IGxlYXN0IDIgY2hhcmFjdGVycyBsb25nZXIKLSAgICAgICAgLy8gdGhhbiB0
aGUgY3VycmVudCBpbmRleCB0byBhY2NvdW50IGZvciB0aGlzIHBlcmNlbnQgZW5jb2RlZCB2YWx1
ZS4KLSAgICAgICAgaWYgKGkgKyAyID49IGxlbmd0aCkKLSAgICAgICAgICAgIHJldHVybiB7IH07
Ci0KLSAgICAgICAgaWYgKGlucHV0U3RyaW5nW2krMV0gIT0gJysnKSB7Ci0gICAgICAgICAgICBp
ZiAoIWlzQVNDSUlIZXhEaWdpdChpbnB1dFN0cmluZ1tpICsgMV0pKQotICAgICAgICAgICAgICAg
IHJldHVybiB7IH07Ci0gICAgICAgICAgICBpZiAoIWlzQVNDSUlIZXhEaWdpdChpbnB1dFN0cmlu
Z1tpICsgMl0pKQotICAgICAgICAgICAgICAgIHJldHVybiB7IH07Ci0gICAgICAgICAgICByZXN1
bHQuYXBwZW5kKHRvQVNDSUlIZXhWYWx1ZShpbnB1dFN0cmluZ1tpICsgMV0sIGlucHV0U3RyaW5n
W2kgKyAyXSkpOwotICAgICAgICAgICAgaSArPSAyOwotICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgIH0KLQotICAgICAgICAvLyBJZiB0aGUgaW5wdXQgc3RyaW5nIGlzIGEgdmFsaWQgZW5j
b2RlZCBmaWxlbmFtZSwgaXQgbXVzdCBiZSBhdCBsZWFzdCA1IGNoYXJhY3RlcnMgbG9uZ2VyCi0g
ICAgICAgIC8vIHRoYW4gdGhlIGN1cnJlbnQgaW5kZXggdG8gYWNjb3VudCBmb3IgdGhpcyBwZXJj
ZW50IGVuY29kZWQgdmFsdWUuCi0gICAgICAgIGlmIChpICsgNSA+PSBsZW5ndGgpCi0gICAgICAg
ICAgICByZXR1cm4geyB9OwotCi0gICAgICAgIGlmICghaXNBU0NJSUhleERpZ2l0KGlucHV0U3Ry
aW5nW2kgKyAyXSkpCi0gICAgICAgICAgICByZXR1cm4geyB9OwotICAgICAgICBpZiAoIWlzQVND
SUlIZXhEaWdpdChpbnB1dFN0cmluZ1tpICsgM10pKQotICAgICAgICAgICAgcmV0dXJuIHsgfTsK
LSAgICAgICAgaWYgKCFpc0FTQ0lJSGV4RGlnaXQoaW5wdXRTdHJpbmdbaSArIDRdKSkKLSAgICAg
ICAgICAgIHJldHVybiB7IH07Ci0gICAgICAgIGlmICghaXNBU0NJSUhleERpZ2l0KGlucHV0U3Ry
aW5nW2kgKyA1XSkpCi0gICAgICAgICAgICByZXR1cm4geyB9OwotCi0gICAgICAgIHJlc3VsdC5h
cHBlbmQodG9BU0NJSUhleFZhbHVlKGlucHV0U3RyaW5nW2kgKyAyXSwgaW5wdXRTdHJpbmdbaSAr
IDNdKSA8PCA4IHwgdG9BU0NJSUhleFZhbHVlKGlucHV0U3RyaW5nW2kgKyA0XSwgaW5wdXRTdHJp
bmdbaSArIDVdKSk7Ci0gICAgICAgIGkgKz0gNTsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0
LnRvU3RyaW5nKCk7Ci19Ci0KLVN0cmluZyBsYXN0Q29tcG9uZW50T2ZQYXRoSWdub3JpbmdUcmFp
bGluZ1NsYXNoKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSNpZiBPUyhXSU5ET1dTKQotICAgIGNo
YXIgcGF0aFNlcGFyYXRvciA9ICdcXCc7Ci0jZWxzZQotICAgIGNoYXIgcGF0aFNlcGFyYXRvciA9
ICcvJzsKLSNlbmRpZgotCi0gICAgYXV0byBwb3NpdGlvbiA9IHBhdGgucmV2ZXJzZUZpbmQocGF0
aFNlcGFyYXRvcik7Ci0gICAgaWYgKHBvc2l0aW9uID09IG5vdEZvdW5kKQotICAgICAgICByZXR1
cm4gcGF0aDsKLQotICAgIHNpemVfdCBlbmRPZlN1YnN0cmluZyA9IHBhdGgubGVuZ3RoKCkgLSAx
OwotICAgIGlmIChwb3NpdGlvbiA9PSBlbmRPZlN1YnN0cmluZykgewotICAgICAgICAtLWVuZE9m
U3Vic3RyaW5nOwotICAgICAgICBwb3NpdGlvbiA9IHBhdGgucmV2ZXJzZUZpbmQocGF0aFNlcGFy
YXRvciwgZW5kT2ZTdWJzdHJpbmcpOwotICAgIH0KLQotICAgIHJldHVybiBwYXRoLnN1YnN0cmlu
Zyhwb3NpdGlvbiArIDEsIGVuZE9mU3Vic3RyaW5nIC0gcG9zaXRpb24pOwotfQotCi1ib29sIGFw
cGVuZEZpbGVDb250ZW50c1RvRmlsZUhhbmRsZShjb25zdCBTdHJpbmcmIHBhdGgsIFBsYXRmb3Jt
RmlsZUhhbmRsZSYgdGFyZ2V0KQotewotICAgIGF1dG8gc291cmNlID0gb3BlbkZpbGUocGF0aCwg
RmlsZU9wZW5Nb2RlOjpSZWFkKTsKLQotICAgIGlmICghaXNIYW5kbGVWYWxpZChzb3VyY2UpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBzdGF0aWMgaW50IGJ1ZmZlclNpemUgPSAxIDw8
IDE5OwotICAgIFZlY3RvcjxjaGFyPiBidWZmZXIoYnVmZmVyU2l6ZSk7Ci0KLSAgICBhdXRvIGZp
bGVDbG9zZXIgPSBXVEY6Om1ha2VTY29wZUV4aXQoW3NvdXJjZV0oKSB7Ci0gICAgICAgIFBsYXRm
b3JtRmlsZUhhbmRsZSBoYW5kbGUgPSBzb3VyY2U7Ci0gICAgICAgIGNsb3NlRmlsZShoYW5kbGUp
OwotICAgIH0pOwotCi0gICAgZG8gewotICAgICAgICBpbnQgcmVhZEJ5dGVzID0gcmVhZEZyb21G
aWxlKHNvdXJjZSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyU2l6ZSk7Ci0gICAgICAgIAotICAgICAg
ICBpZiAocmVhZEJ5dGVzIDwgMCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAg
ICBpZiAod3JpdGVUb0ZpbGUodGFyZ2V0LCBidWZmZXIuZGF0YSgpLCByZWFkQnl0ZXMpICE9IHJl
YWRCeXRlcykKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBpZiAocmVhZEJ5
dGVzIDwgYnVmZmVyU2l6ZSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0gd2hpbGUg
KHRydWUpOwotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLSAgICAKLWJvb2wgZmls
ZXNIYXZlU2FtZVZvbHVtZShjb25zdCBTdHJpbmcmIGZpbGVBLCBjb25zdCBTdHJpbmcmIGZpbGVC
KQotewotICAgIGF1dG8gZnNSZXBGaWxlQSA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWxl
QSk7Ci0gICAgYXV0byBmc1JlcEZpbGVCID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVC
KTsKLSAgICAKLSAgICBpZiAoZnNSZXBGaWxlQS5pc051bGwoKSB8fCBmc1JlcEZpbGVCLmlzTnVs
bCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBib29sIHJlc3VsdCA9IGZhbHNlOwot
Ci0gICAgYXV0byBmaWxlQURldiA9IGdldEZpbGVEZXZpY2VJZChmc1JlcEZpbGVBKTsKLSAgICBh
dXRvIGZpbGVCRGV2ID0gZ2V0RmlsZURldmljZUlkKGZzUmVwRmlsZUIpOwotCi0gICAgaWYgKGZp
bGVBRGV2ICYmIGZpbGVCRGV2KQotICAgICAgICByZXN1bHQgPSAoZmlsZUFEZXYgPT0gZmlsZUJE
ZXYpOwotICAgIAotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLSNpZiAhUExBVEZPUk0oTUFDKQot
Ci12b2lkIHNldE1ldGFkYXRhVVJMKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYpCi17Ci19Ci0KLWJvb2wgY2FuRXhjbHVkZUZyb21CYWNrdXAoKQotewotICAgIHJl
dHVybiBmYWxzZTsKLX0KLQotYm9vbCBleGNsdWRlRnJvbUJhY2t1cChjb25zdCBTdHJpbmcmKQot
ewotICAgIHJldHVybiBmYWxzZTsKLX0KLQotI2VuZGlmCi0KLU1hcHBlZEZpbGVEYXRhOjp+TWFw
cGVkRmlsZURhdGEoKQotewotI2lmICFPUyhXSU5ET1dTKQotICAgIGlmICghbV9maWxlRGF0YSkK
LSAgICAgICAgcmV0dXJuOwotICAgIG11bm1hcChtX2ZpbGVEYXRhLCBtX2ZpbGVTaXplKTsKLSNl
bmRpZgotfQotCi1NYXBwZWRGaWxlRGF0YTo6TWFwcGVkRmlsZURhdGEoY29uc3QgU3RyaW5nJiBm
aWxlUGF0aCwgYm9vbCYgc3VjY2VzcykKLXsKLSNpZiBPUyhXSU5ET1dTKQotICAgIC8vIEZJWE1F
OiBJbXBsZW1lbnQgbWFwcGluZwotICAgIHN1Y2Nlc3MgPSBmYWxzZTsKLSNlbHNlCi0gICAgQ1N0
cmluZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWxlUGF0aCk7Ci0gICAgaW50
IGZkID0gIWZzUmVwLmlzTnVsbCgpID8gb3Blbihmc1JlcC5kYXRhKCksIE9fUkRPTkxZKSA6IC0x
OwotICAgIGlmIChmZCA8IDApIHsKLSAgICAgICAgc3VjY2VzcyA9IGZhbHNlOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgc3RydWN0IHN0YXQgZmlsZVN0YXQ7Ci0gICAgaWYgKGZzdGF0
KGZkLCAmZmlsZVN0YXQpKSB7Ci0gICAgICAgIGNsb3NlKGZkKTsKLSAgICAgICAgc3VjY2VzcyA9
IGZhbHNlOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgdW5zaWduZWQgc2l6ZTsKLSAg
ICBpZiAoIVdURjo6Y29udmVydFNhZmVseShmaWxlU3RhdC5zdF9zaXplLCBzaXplKSkgewotICAg
ICAgICBjbG9zZShmZCk7Ci0gICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIGlmICghc2l6ZSkgewotICAgICAgICBjbG9zZShmZCk7Ci0gICAgICAg
IHN1Y2Nlc3MgPSB0cnVlOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgdm9pZCogZGF0
YSA9IG1tYXAoMCwgc2l6ZSwgUFJPVF9SRUFELCBNQVBfRklMRSB8IE1BUF9TSEFSRUQsIGZkLCAw
KTsKLSAgICBjbG9zZShmZCk7Ci0KLSAgICBpZiAoZGF0YSA9PSBNQVBfRkFJTEVEKSB7Ci0gICAg
ICAgIHN1Y2Nlc3MgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHN1Y2Nl
c3MgPSB0cnVlOwotICAgIG1fZmlsZURhdGEgPSBkYXRhOwotICAgIG1fZmlsZVNpemUgPSBzaXpl
OwotI2VuZGlmCi19Ci0KLVBsYXRmb3JtRmlsZUhhbmRsZSBvcGVuQW5kTG9ja0ZpbGUoY29uc3Qg
U3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUgb3Blbk1vZGUsIE9wdGlvblNldDxGaWxlTG9ja01v
ZGU+IGxvY2tNb2RlKQotewotICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUocGF0aCwgb3Blbk1v
ZGUpOwotICAgIGlmIChoYW5kbGUgPT0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKLSAgICAg
ICAgcmV0dXJuIGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7Ci0KLSNpZiBVU0UoRklMRV9MT0NL
KQotICAgIGJvb2wgbG9ja2VkID0gbG9ja0ZpbGUoaGFuZGxlLCBsb2NrTW9kZSk7Ci0gICAgQVNT
RVJUX1VOVVNFRChsb2NrZWQsIGxvY2tlZCk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShsb2Nr
TW9kZSk7Ci0jZW5kaWYKLQotICAgIHJldHVybiBoYW5kbGU7Ci19Ci0KLXZvaWQgdW5sb2NrQW5k
Q2xvc2VGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUpCi17Ci0jaWYgVVNFKEZJTEVfTE9D
SykKLSAgICBib29sIHVubG9ja2VkID0gdW5sb2NrRmlsZShoYW5kbGUpOwotICAgIEFTU0VSVF9V
TlVTRUQodW5sb2NrZWQsIHVubG9ja2VkKTsKLSNlbmRpZgotICAgIGNsb3NlRmlsZShoYW5kbGUp
OwotfQotCi1ib29sIGZpbGVJc0RpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIFNob3VsZEZv
bGxvd1N5bWJvbGljTGlua3Mgc2hvdWxkRm9sbG93U3ltYm9saWNMaW5rcykKLXsKLSAgICBhdXRv
IG1ldGFkYXRhID0gc2hvdWxkRm9sbG93U3ltYm9saWNMaW5rcyA9PSBTaG91bGRGb2xsb3dTeW1i
b2xpY0xpbmtzOjpZZXMgPyBmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyhwYXRoKSA6IGZp
bGVNZXRhZGF0YShwYXRoKTsKLSAgICBpZiAoIW1ldGFkYXRhKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgcmV0dXJuIG1ldGFkYXRhLnZhbHVlKCkudHlwZSA9PSBGaWxlTWV0YWRhdGE6OlR5
cGU6OkRpcmVjdG9yeTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgRmlsZVN5c3RlbQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5
c3RlbS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAzY2ViY2FhMDUzOWI1OWQ5M2U3MmUwOTg0MGIyM2IxZGFjNjM4
MTFiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaAorKysgL2Rldi9udWxsCkBAIC0xLDIyNSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSwgTHRkLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAotICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAotICogMy4gIE5laXRoZXIgdGhlIG5h
bWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uIAotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
Ci0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSA8dGltZS5oPgotI2luY2x1ZGUgPHV0aWxp
dHk+Ci0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+
Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgotI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi0jaWYgVVNFKENGKQotI2luY2x1ZGUgPHd0
Zi9SZXRhaW5QdHIuaD4KLSNlbmRpZgotCi0jaWYgVVNFKENGKQotdHlwZWRlZiBjb25zdCBzdHJ1
Y3QgX19DRkRhdGEqIENGRGF0YVJlZjsKLSNlbmRpZgotCi1PQkpDX0NMQVNTIE5TU3RyaW5nOwot
Ci0jaWYgUExBVEZPUk0oV0lOKQotdHlwZWRlZiB2b2lkICpIQU5ETEU7Ci0jZW5kaWYKLQotI2lm
IFVTRShHTElCKQotdHlwZWRlZiBzdHJ1Y3QgX0dGaWxlSU9TdHJlYW0gR0ZpbGVJT1N0cmVhbTsK
LSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBGaWxlTWV0YWRhdGE7Ci0K
LW5hbWVzcGFjZSBGaWxlU3lzdGVtIHsKLQotLy8gUGxhdGZvcm1GaWxlSGFuZGxlCi0jaWYgVVNF
KEdMSUIpICYmICFQTEFURk9STShXSU4pCi10eXBlZGVmIEdGaWxlSU9TdHJlYW0qIFBsYXRmb3Jt
RmlsZUhhbmRsZTsKLWNvbnN0IFBsYXRmb3JtRmlsZUhhbmRsZSBpbnZhbGlkUGxhdGZvcm1GaWxl
SGFuZGxlID0gMDsKLSNlbGlmIFBMQVRGT1JNKFdJTikKLXR5cGVkZWYgSEFORExFIFBsYXRmb3Jt
RmlsZUhhbmRsZTsKLS8vIEZJWE1FOiAtMSBpcyBJTlZBTElEX0hBTkRMRV9WQUxVRSwgZGVmaW5l
ZCBpbiA8d2luYmFzZS5oPi4gQ2hyb21pdW0gdHJpZXMgdG8KLS8vIGF2b2lkIHVzaW5nIFdpbmRv
d3MgaGVhZGVycyBpbiBoZWFkZXJzLiAgV2UnZCByYXRoZXIgbW92ZSB0aGlzIGludG8gdGhlIC5j
cHAuCi1jb25zdCBQbGF0Zm9ybUZpbGVIYW5kbGUgaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSA9
IHJlaW50ZXJwcmV0X2Nhc3Q8SEFORExFPigtMSk7Ci0jZWxzZQotdHlwZWRlZiBpbnQgUGxhdGZv
cm1GaWxlSGFuZGxlOwotY29uc3QgUGxhdGZvcm1GaWxlSGFuZGxlIGludmFsaWRQbGF0Zm9ybUZp
bGVIYW5kbGUgPSAtMTsKLSNlbmRpZgotCi1lbnVtIGNsYXNzIEZpbGVPcGVuTW9kZSB7Ci0gICAg
UmVhZCwKLSAgICBXcml0ZSwKLSNpZiBPUyhEQVJXSU4pCi0gICAgRXZlbnRzT25seSwKLSNlbmRp
ZgotfTsKLQotZW51bSBjbGFzcyBGaWxlU2Vla09yaWdpbiB7Ci0gICAgQmVnaW5uaW5nLAotICAg
IEN1cnJlbnQsCi0gICAgRW5kLAotfTsKLQotZW51bSBjbGFzcyBGaWxlTG9ja01vZGUgewotICAg
IFNoYXJlZCA9IDEgPDwgMCwKLSAgICBFeGNsdXNpdmUgPSAxIDw8IDEsCi0gICAgTm9uYmxvY2tp
bmcgPSAxIDw8IDIsCi19OwotCi1lbnVtIGNsYXNzIFNob3VsZEZvbGxvd1N5bWJvbGljTGlua3Mg
eyBObywgWWVzIH07Ci0KLVdFQkNPUkVfRVhQT1JUIGJvb2wgZmlsZUV4aXN0cyhjb25zdCBTdHJp
bmcmKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgZGVsZXRlRmlsZShjb25zdCBTdHJpbmcmKTsKLVdF
QkNPUkVfRVhQT1JUIGJvb2wgZGVsZXRlRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7Ci1X
RUJDT1JFX0VYUE9SVCBib29sIG1vdmVGaWxlKGNvbnN0IFN0cmluZyYgb2xkUGF0aCwgY29uc3Qg
U3RyaW5nJiBuZXdQYXRoKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgZ2V0RmlsZVNpemUoY29uc3Qg
U3RyaW5nJiwgbG9uZyBsb25nJiByZXN1bHQpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCBnZXRGaWxl
U2l6ZShQbGF0Zm9ybUZpbGVIYW5kbGUsIGxvbmcgbG9uZyYgcmVzdWx0KTsKLVdFQkNPUkVfRVhQ
T1JUIE9wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJp
bmcmKTsKLVdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlQ3JlYXRpb25U
aW1lKGNvbnN0IFN0cmluZyYpOyAvLyBOb3QgYWxsIHBsYXRmb3JtcyBzdG9yZSBmaWxlIGNyZWF0
aW9uIHRpbWUuCi1XRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRh
ZGF0YShjb25zdCBTdHJpbmcmIHBhdGgpOwotV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8RmlsZU1l
dGFkYXRhPiBmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyhjb25zdCBTdHJpbmcmIHBhdGgp
OwotV0VCQ09SRV9FWFBPUlQgYm9vbCBmaWxlSXNEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiwgU2hv
dWxkRm9sbG93U3ltYm9saWNMaW5rcyk7Ci1XRUJDT1JFX0VYUE9SVCBTdHJpbmcgcGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb21wb25l
bnQpOwotU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMoU3RyaW5nVmlldyBwYXRoLCBj
b25zdCBWZWN0b3I8U3RyaW5nVmlldz4mIGNvbXBvbmVudHMpOwotU3RyaW5nIGxhc3RDb21wb25l
bnRPZlBhdGhJZ25vcmluZ1RyYWlsaW5nU2xhc2goY29uc3QgU3RyaW5nJiBwYXRoKTsKLVdFQkNP
UkVfRVhQT1JUIGJvb2wgbWFrZUFsbERpcmVjdG9yaWVzKGNvbnN0IFN0cmluZyYgcGF0aCk7Ci1T
dHJpbmcgaG9tZURpcmVjdG9yeVBhdGgoKTsKLVdFQkNPUkVfRVhQT1JUIFN0cmluZyBwYXRoR2V0
RmlsZU5hbWUoY29uc3QgU3RyaW5nJik7Ci1XRUJDT1JFX0VYUE9SVCBTdHJpbmcgZGlyZWN0b3J5
TmFtZShjb25zdCBTdHJpbmcmKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgZ2V0Vm9sdW1lRnJlZVNw
YWNlKGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90Jik7Ci1XRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxp
bnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29uc3QgQ1N0cmluZyYpOwotV0VCQ09SRV9FWFBPUlQg
Ym9vbCBjcmVhdGVTeW1ib2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBT
dHJpbmcmIHN5bWJvbGljTGlua1BhdGgpOwotCi1XRUJDT1JFX0VYUE9SVCB2b2lkIHNldE1ldGFk
YXRhVVJMKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0
IFN0cmluZyYgcmVmZXJyZXIgPSB7IH0pOwotCi1ib29sIGNhbkV4Y2x1ZGVGcm9tQmFja3VwKCk7
IC8vIFJldHVybnMgdHJ1ZSBpZiBhbnkgZmlsZSBjYW4gZXZlciBiZSBleGNsdWRlZCBmcm9tIGJh
Y2t1cC4KLWJvb2wgZXhjbHVkZUZyb21CYWNrdXAoY29uc3QgU3RyaW5nJik7IC8vIFJldHVybnMg
dHJ1ZSBpZiBzdWNjZXNzZnVsLgotCi1XRUJDT1JFX0VYUE9SVCBWZWN0b3I8U3RyaW5nPiBsaXN0
RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBmaWx0ZXIgPSBTdHJp
bmcoKSk7Ci0KLVdFQkNPUkVfRVhQT1JUIENTdHJpbmcgZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KGNvbnN0IFN0cmluZyYpOwotU3RyaW5nIHN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oY29uc3QgY2hhciopOwotCi1pbmxpbmUgYm9vbCBpc0hhbmRsZVZhbGlkKGNvbnN0IFBsYXRm
b3JtRmlsZUhhbmRsZSYgaGFuZGxlKSB7IHJldHVybiBoYW5kbGUgIT0gaW52YWxpZFBsYXRmb3Jt
RmlsZUhhbmRsZTsgfQotCi0vLyBQcmVmaXggaXMgd2hhdCB0aGUgZmlsZW5hbWUgc2hvdWxkIGJl
IHByZWZpeGVkIHdpdGgsIG5vdCB0aGUgZnVsbCBwYXRoLgotV0VCQ09SRV9FWFBPUlQgU3RyaW5n
IG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5k
bGUmKTsKLVdFQkNPUkVfRVhQT1JUIFBsYXRmb3JtRmlsZUhhbmRsZSBvcGVuRmlsZShjb25zdCBT
dHJpbmcmIHBhdGgsIEZpbGVPcGVuTW9kZSk7Ci1XRUJDT1JFX0VYUE9SVCB2b2lkIGNsb3NlRmls
ZShQbGF0Zm9ybUZpbGVIYW5kbGUmKTsKLS8vIFJldHVybnMgdGhlIHJlc3VsdGluZyBvZmZzZXQg
ZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaWxlIGlmIHN1Y2Nlc3NmdWwsIC0xIG90aGVyd2lz
ZS4KLVdFQkNPUkVfRVhQT1JUIGxvbmcgbG9uZyBzZWVrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUs
IGxvbmcgbG9uZyBvZmZzZXQsIEZpbGVTZWVrT3JpZ2luKTsKLWJvb2wgdHJ1bmNhdGVGaWxlKFBs
YXRmb3JtRmlsZUhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCk7Ci0vLyBSZXR1cm5zIG51bWJlciBv
ZiBieXRlcyBhY3R1YWxseSByZWFkIGlmIHN1Y2Nlc3NmdWwsIC0xIG90aGVyd2lzZS4KLVdFQkNP
UkVfRVhQT1JUIGludCB3cml0ZVRvRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUsIGNvbnN0IGNoYXIq
IGRhdGEsIGludCBsZW5ndGgpOwotLy8gUmV0dXJucyBudW1iZXIgb2YgYnl0ZXMgYWN0dWFsbHkg
d3JpdHRlbiBpZiBzdWNjZXNzZnVsLCAtMSBvdGhlcndpc2UuCi1XRUJDT1JFX0VYUE9SVCBpbnQg
cmVhZEZyb21GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgY2hhciogZGF0YSwgaW50IGxlbmd0aCk7
Ci0KLVdFQkNPUkVfRVhQT1JUIFBsYXRmb3JtRmlsZUhhbmRsZSBvcGVuQW5kTG9ja0ZpbGUoY29u
c3QgU3RyaW5nJiwgRmlsZU9wZW5Nb2RlLCBPcHRpb25TZXQ8RmlsZUxvY2tNb2RlPiA9IEZpbGVM
b2NrTW9kZTo6RXhjbHVzaXZlKTsKLVdFQkNPUkVfRVhQT1JUIHZvaWQgdW5sb2NrQW5kQ2xvc2VG
aWxlKFBsYXRmb3JtRmlsZUhhbmRsZSk7Ci0KLS8vIEFwcGVuZHMgdGhlIGNvbnRlbnRzIG9mIHRo
ZSBmaWxlIGZvdW5kIGF0ICdwYXRoJyB0byB0aGUgb3BlbiBQbGF0Zm9ybUZpbGVIYW5kbGUuCi0v
LyBSZXR1cm5zIHRydWUgaWYgdGhlIHdyaXRlIHdhcyBzdWNjZXNzZnVsLCBmYWxzZSBpZiBpdCB3
YXMgbm90LgotYm9vbCBhcHBlbmRGaWxlQ29udGVudHNUb0ZpbGVIYW5kbGUoY29uc3QgU3RyaW5n
JiBwYXRoLCBQbGF0Zm9ybUZpbGVIYW5kbGUmKTsKLQotLy8gSGFyZCBsaW5rcyBhIGZpbGUgaWYg
cG9zc2libGUsIGNvcGllcyBpdCBpZiBub3QuCi1ib29sIGhhcmRMaW5rT3JDb3B5RmlsZShjb25z
dCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbik7Ci0KLSNpZiBVU0Uo
RklMRV9MT0NLKQotV0VCQ09SRV9FWFBPUlQgYm9vbCBsb2NrRmlsZShQbGF0Zm9ybUZpbGVIYW5k
bGUsIE9wdGlvblNldDxGaWxlTG9ja01vZGU+KTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgdW5sb2Nr
RmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUpOwotI2VuZGlmCi0KLS8vIEVuY29kZSBhIHN0cmluZyBm
b3IgdXNlIHdpdGhpbiBhIGZpbGUgbmFtZS4KLVdFQkNPUkVfRVhQT1JUIFN0cmluZyBlbmNvZGVG
b3JGaWxlTmFtZShjb25zdCBTdHJpbmcmKTsKLVdFQkNPUkVfRVhQT1JUIFN0cmluZyBkZWNvZGVG
cm9tRmlsZW5hbWUoY29uc3QgU3RyaW5nJik7Ci0KLVdFQkNPUkVfRVhQT1JUIGJvb2wgZmlsZXNI
YXZlU2FtZVZvbHVtZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKLQotI2lmIFVTRShD
RikKLVJldGFpblB0cjxDRlVSTFJlZj4gcGF0aEFzVVJMKGNvbnN0IFN0cmluZyYpOwotI2VuZGlm
Ci0KLSNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKLVN0cmluZyBmaWxlbmFtZUZv
ckRpc3BsYXkoY29uc3QgU3RyaW5nJik7Ci0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKFdJTikKLVdF
QkNPUkVfRVhQT1JUIFN0cmluZyBsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKTsK
LVN0cmluZyByb2FtaW5nVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpOwotI2VuZGlmCi0K
LSNpZiBQTEFURk9STShDT0NPQSkKLVdFQkNPUkVfRVhQT1JUIE5TU3RyaW5nICpjcmVhdGVUZW1w
b3JhcnlEaXJlY3RvcnkoTlNTdHJpbmcgKmRpcmVjdG9yeVByZWZpeCk7Ci1XRUJDT1JFX0VYUE9S
VCBib29sIGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpOwotI2VuZGlmCi0K
LSNpZiBQTEFURk9STShXSU5fQ0FJUk8pCi1XRUJDT1JFX0VYUE9SVCBTdHJpbmcgY3JlYXRlVGVt
cG9yYXJ5RGlyZWN0b3J5KCk7Ci1XRUJDT1JFX0VYUE9SVCBib29sIGRlbGV0ZU5vbkVtcHR5RGly
ZWN0b3J5KGNvbnN0IFN0cmluZyYpOwotI2VuZGlmCi0KLVdFQkNPUkVfRVhQT1JUIFN0cmluZyBy
ZWFsUGF0aChjb25zdCBTdHJpbmcmKTsKLQotY2xhc3MgTWFwcGVkRmlsZURhdGEgewotcHVibGlj
OgotICAgIE1hcHBlZEZpbGVEYXRhKCkgeyB9Ci0gICAgTWFwcGVkRmlsZURhdGEoTWFwcGVkRmls
ZURhdGEmJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgTWFwcGVkRmlsZURhdGEoY29uc3QgU3RyaW5n
JiBmaWxlUGF0aCwgYm9vbCYgc3VjY2Vzcyk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgfk1hcHBlZEZp
bGVEYXRhKCk7Ci0gICAgTWFwcGVkRmlsZURhdGEmIG9wZXJhdG9yPShNYXBwZWRGaWxlRGF0YSYm
KTsKLQotICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhIW1fZmls
ZURhdGE7IH0KLSAgICBjb25zdCB2b2lkKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9maWxlRGF0
YTsgfQotICAgIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX2ZpbGVTaXplOyB9Ci0K
LXByaXZhdGU6Ci0gICAgdm9pZCogbV9maWxlRGF0YSB7IG51bGxwdHIgfTsKLSAgICB1bnNpZ25l
ZCBtX2ZpbGVTaXplIHsgMCB9OwotfTsKLQotaW5saW5lIE1hcHBlZEZpbGVEYXRhOjpNYXBwZWRG
aWxlRGF0YShNYXBwZWRGaWxlRGF0YSYmIG90aGVyKQotICAgIDogbV9maWxlRGF0YShzdGQ6OmV4
Y2hhbmdlKG90aGVyLm1fZmlsZURhdGEsIG51bGxwdHIpKQotICAgICwgbV9maWxlU2l6ZShzdGQ6
OmV4Y2hhbmdlKG90aGVyLm1fZmlsZVNpemUsIDApKQotewotfQotCi1pbmxpbmUgTWFwcGVkRmls
ZURhdGEmIE1hcHBlZEZpbGVEYXRhOjpvcGVyYXRvcj0oTWFwcGVkRmlsZURhdGEmJiBvdGhlcikK
LXsKLSAgICBtX2ZpbGVEYXRhID0gc3RkOjpleGNoYW5nZShvdGhlci5tX2ZpbGVEYXRhLCBudWxs
cHRyKTsKLSAgICBtX2ZpbGVTaXplID0gc3RkOjpleGNoYW5nZShvdGhlci5tX2ZpbGVTaXplLCAw
KTsKLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEZpbGVTeXN0ZW0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIu
aAppbmRleCA4MTMxOGU4YjI5YWU1YTBmNWI5NjAzYzgyNTU3OTFjZGJjMjBhNGUxLi5lYzM3MTM0
MWFiOTQ5NWI3ZDM1NzYxMzUxYjJiMDliMTM1YTNlZjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuaApAQCAtMjYsOCArMjYsOCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lu
Y2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BcnJheUJ1ZmZl
ci5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZl
UmVmQ291bnRlZC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU291cmNl
c0dMaWIudHh0IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU291cmNlc0dMaWIudHh0CmluZGV4
IDI3NzNjMmEwODhiNjBmYjEzOTY5MmQ1ZjQwZDBiZWZjM2ZlYzNjYzQuLjA5MGI4NGE0OGMxMDNk
M2Q1OTMxNDFkOTBlMmJiYjRhYmYyYzViYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NvdXJjZXNHTGliLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Tb3Vy
Y2VzR0xpYi50eHQKQEAgLTI1LDcgKzI1LDYgQEAgcGxhdGZvcm0vYXVkaW8vZ2xpYi9BdWRpb0J1
c0dMaWIuY3BwCiAKIHBsYXRmb3JtL2dsaWIvRXZlbnRMb29wR2xpYi5jcHAKIHBsYXRmb3JtL2ds
aWIvRmlsZU1vbml0b3JHTGliLmNwcAotcGxhdGZvcm0vZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAK
IHBsYXRmb3JtL2dsaWIvS2V5ZWREZWNvZGVyR2xpYi5jcHAKIHBsYXRmb3JtL2dsaWIvS2V5ZWRF
bmNvZGVyR2xpYi5jcHAKIHBsYXRmb3JtL2dsaWIvTG93UG93ZXJNb2RlTm90aWZpZXJHTGliLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvRmlsZVN5c3RlbUNGLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0ZpbGVTeXN0ZW1DRi5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA4NDcwYTA4ZmE1ZDJmNDUyZTZjOTM4NzAxYzZkOTI2Y2E2
MDlmMDMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvRmlsZVN5c3RlbUNGLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDc0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMTEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIg
dGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAg
IGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIK
LQotI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1DU3RyaW5nIEZpbGVT
eXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0g
ICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZlN0cmluZyA9IHBhdGguY3JlYXRlQ0ZTdHJpbmco
KTsKLQotICAgIGlmICghY2ZTdHJpbmcpCi0gICAgICAgIHJldHVybiBDU3RyaW5nKCk7Ci0KLSAg
ICBDRkluZGV4IHNpemUgPSBDRlN0cmluZ0dldE1heGltdW1TaXplT2ZGaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oY2ZTdHJpbmcuZ2V0KCkpOwotCi0gICAgVmVjdG9yPGNoYXI+IGJ1ZmZlcihzaXpl
KTsKLQotICAgIGlmICghQ0ZTdHJpbmdHZXRGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY2ZTdHJp
bmcuZ2V0KCksIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpKSB7Ci0gICAgICAgIExPR19F
UlJPUigiRmFpbGVkIHRvIGdldCBmaWxlc3lzdGVtIHJlcHJlc2VudGF0aW9uIHRvIGNyZWF0ZSBD
U3RyaW5nIGZyb20gY2ZTdHJpbmciKTsKLSAgICAgICAgcmV0dXJuIENTdHJpbmcoKTsKLSAgICB9
Ci0KLSAgICByZXR1cm4gQ1N0cmluZyhidWZmZXIuZGF0YSgpLCBzdHJsZW4oYnVmZmVyLmRhdGEo
KSkpOwotfQotCi1TdHJpbmcgRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihjb25zdCBjaGFyKiBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24pCi17Ci0gICAgcmV0
dXJuIGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGtD
RkFsbG9jYXRvckRlZmF1bHQsIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbikpLmdldCgpOwotfQot
Ci1SZXRhaW5QdHI8Q0ZVUkxSZWY+IEZpbGVTeXN0ZW06OnBhdGhBc1VSTChjb25zdCBTdHJpbmcm
IHBhdGgpCi17Ci0gICAgQ0ZVUkxQYXRoU3R5bGUgcGF0aFN0eWxlOwotI2lmIFBMQVRGT1JNKFdJ
TikKLSAgICBwYXRoU3R5bGUgPSBrQ0ZVUkxXaW5kb3dzUGF0aFN0eWxlOwotI2Vsc2UKLSAgICBw
YXRoU3R5bGUgPSBrQ0ZVUkxQT1NJWFBhdGhTdHlsZTsKLSNlbmRpZgotICAgIHJldHVybiBhZG9w
dENGKENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKDAsIHBhdGguY3JlYXRlQ0ZTdHJpbmco
KS5nZXQoKSwgcGF0aFN0eWxlLCBGQUxTRSkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9GaWxlTW9uaXRvckNv
Y29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRmlsZU1vbml0b3JDb2NvYS5t
bQppbmRleCAxYWIzYzMzNGM2OWRmZmEzNjQ4YWIwMGE0NTU4ZDlmMjdlNDMwNjAwLi5jYzdmZTZi
NmNkZTEwZWQ0Y2E0NTZlNDZiZTI4YTA0ZjY4NzI0NzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9GaWxlTW9uaXRvckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL0ZpbGVNb25pdG9yQ29jb2EubW0KQEAgLTI2LDkgKzI2LDkgQEAK
ICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiRmlsZU1vbml0b3IuaCIKIAotI2ltcG9ydCAi
RmlsZVN5c3RlbS5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRy
Lmg+CisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9GaWxlU3lzdGVt
Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9GaWxlU3lzdGVtQ29jb2Eu
bW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzOGIwYzgzMDNlN2JhMTBkNDA1MzNj
YmNkMTVkYTMzYjA5NjllM2MuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRmlsZVN5c3RlbUNvY29hLm1t
CisrKyAvZGV2L251bGwKQEAgLTEsMTQzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDctMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LiAKLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LiAKLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0
aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJ
UyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBv
cnQgIkZpbGVTeXN0ZW0uaCIKLQotQGludGVyZmFjZSBXZWJGaWxlTWFuYWdlckRlbGVnYXRlIDog
TlNPYmplY3QgPE5TRmlsZU1hbmFnZXJEZWxlZ2F0ZT4KLUBlbmQKLQotQGltcGxlbWVudGF0aW9u
IFdlYkZpbGVNYW5hZ2VyRGVsZWdhdGUKLQotLSAoQk9PTClmaWxlTWFuYWdlcjooTlNGaWxlTWFu
YWdlciAqKWZpbGVNYW5hZ2VyIHNob3VsZFByb2NlZWRBZnRlckVycm9yOihOU0Vycm9yICopZXJy
b3IgbW92aW5nSXRlbUF0VVJMOihOU1VSTCAqKXNyY1VSTCB0b1VSTDooTlNVUkwgKilkc3RVUkwK
LXsKLSAgICBVTlVTRURfUEFSQU0oZmlsZU1hbmFnZXIpOwotICAgIFVOVVNFRF9QQVJBTShzcmNV
UkwpOwotICAgIFVOVVNFRF9QQVJBTShkc3RVUkwpOyAgICAKLSAgICByZXR1cm4gZXJyb3IuY29k
ZSA9PSBOU0ZpbGVXcml0ZUZpbGVFeGlzdHNFcnJvcjsKLX0KLQotQGVuZAotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBGaWxlU3lzdGVtIHsKLQotU3RyaW5nIGhvbWVEaXJlY3Rv
cnlQYXRoKCkKLXsKLSAgICByZXR1cm4gTlNIb21lRGlyZWN0b3J5KCk7Ci19Ci0KLVN0cmluZyBv
cGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxl
JiBwbGF0Zm9ybUZpbGVIYW5kbGUpCi17Ci0gICAgcGxhdGZvcm1GaWxlSGFuZGxlID0gaW52YWxp
ZFBsYXRmb3JtRmlsZUhhbmRsZTsKLSAgICAKLSAgICBWZWN0b3I8Y2hhcj4gdGVtcG9yYXJ5Rmls
ZVBhdGgoUEFUSF9NQVgpOwotICAgIGlmICghY29uZnN0cihfQ1NfREFSV0lOX1VTRVJfVEVNUF9E
SVIsIHRlbXBvcmFyeUZpbGVQYXRoLmRhdGEoKSwgdGVtcG9yYXJ5RmlsZVBhdGguc2l6ZSgpKSkK
LSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgLy8gU2hyaW5rIHRoZSB2ZWN0b3IuICAg
Ci0gICAgdGVtcG9yYXJ5RmlsZVBhdGguc2hyaW5rKHN0cmxlbih0ZW1wb3JhcnlGaWxlUGF0aC5k
YXRhKCkpKTsKLQotICAgIC8vIEZJWE1FOiBDaGFuZ2UgdG8gYSBydW50aW1lIGFzc2VydGlvbiB0
aGF0IHRoZSBwYXRoIGVuZHMgd2l0aCBhIHNsYXNoIG9uY2UgPHJkYXI6Ly9wcm9ibGVtLzIzNTc5
MDc3PiBpcwotICAgIC8vIGZpeGVkIGluIGFsbCBpT1MgU2ltdWxhdG9yIHZlcnNpb25zIHRoYXQg
d2UgdXNlLgotICAgIGlmICh0ZW1wb3JhcnlGaWxlUGF0aC5sYXN0KCkgIT0gJy8nKQotICAgICAg
ICB0ZW1wb3JhcnlGaWxlUGF0aC5hcHBlbmQoJy8nKTsKLQotICAgIC8vIEFwcGVuZCB0aGUgZmls
ZSBuYW1lLgotICAgIENTdHJpbmcgcHJlZml4VXRmOCA9IHByZWZpeC51dGY4KCk7Ci0gICAgdGVt
cG9yYXJ5RmlsZVBhdGguYXBwZW5kKHByZWZpeFV0ZjguZGF0YSgpLCBwcmVmaXhVdGY4Lmxlbmd0
aCgpKTsKLSAgICB0ZW1wb3JhcnlGaWxlUGF0aC5hcHBlbmQoIlhYWFhYWCIsIDYpOwotICAgIHRl
bXBvcmFyeUZpbGVQYXRoLmFwcGVuZCgnXDAnKTsKLQotICAgIHBsYXRmb3JtRmlsZUhhbmRsZSA9
IG1rc3RlbXAodGVtcG9yYXJ5RmlsZVBhdGguZGF0YSgpKTsKLSAgICBpZiAocGxhdGZvcm1GaWxl
SGFuZGxlID09IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCi0gICAgICAgIHJldHVybiBTdHJp
bmcoKTsKLQotICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KHRlbXBvcmFyeUZpbGVQYXRoLmRh
dGEoKSk7Ci19Ci0KLWJvb2wgbW92ZUZpbGUoY29uc3QgU3RyaW5nJiBvbGRQYXRoLCBjb25zdCBT
dHJpbmcmIG5ld1BhdGgpCi17Ci0gICAgLy8gT3ZlcndyaXRlIGV4aXN0aW5nIGZpbGVzLgotICAg
IGF1dG8gbWFuYWdlciA9IGFkb3B0TlMoW1tOU0ZpbGVNYW5hZ2VyIGFsbG9jXSBpbml0XSk7Ci0g
ICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tXZWJGaWxlTWFuYWdlckRlbGVnYXRlIGFsbG9j
XSBpbml0XSk7Ci0gICAgW21hbmFnZXIgc2V0RGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwotICAg
IAotICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOwotICAgIGJvb2wgc3VjY2VzcyA9IFttYW5hZ2Vy
IG1vdmVJdGVtQXRVUkw6W05TVVJMIGZpbGVVUkxXaXRoUGF0aDpvbGRQYXRoXSB0b1VSTDpbTlNV
UkwgZmlsZVVSTFdpdGhQYXRoOm5ld1BhdGhdIGVycm9yOiZlcnJvcl07Ci0gICAgaWYgKCFzdWNj
ZXNzKQotICAgICAgICBOU0xvZyhAIkVycm9yIGluIG1vdmVGaWxlOiAlQCIsIGVycm9yKTsKLSAg
ICByZXR1cm4gc3VjY2VzczsKLX0KLQotYm9vbCBnZXRWb2x1bWVGcmVlU3BhY2UoY29uc3QgU3Ry
aW5nJiBwYXRoLCB1aW50NjRfdCYgZnJlZVNwYWNlKQotewotICAgIE5TRGljdGlvbmFyeSAqZmls
ZVN5c3RlbUF0dHJpYnV0ZXNEaWN0aW9uYXJ5ID0gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5h
Z2VyXSBhdHRyaWJ1dGVzT2ZGaWxlU3lzdGVtRm9yUGF0aDooTlNTdHJpbmcgKilwYXRoIGVycm9y
Ok5VTExdOwotICAgIGlmICghZmlsZVN5c3RlbUF0dHJpYnV0ZXNEaWN0aW9uYXJ5KQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgZnJlZVNwYWNlID0gW1tmaWxlU3lzdGVtQXR0cmlidXRlc0Rp
Y3Rpb25hcnkgb2JqZWN0Rm9yS2V5Ok5TRmlsZVN5c3RlbUZyZWVTaXplXSB1bnNpZ25lZExvbmdM
b25nVmFsdWVdOwotICAgIHJldHVybiB0cnVlOwotfQotCi1OU1N0cmluZyAqY3JlYXRlVGVtcG9y
YXJ5RGlyZWN0b3J5KE5TU3RyaW5nICpkaXJlY3RvcnlQcmVmaXgpCi17Ci0gICAgTlNTdHJpbmcg
KnRlbXBEaXJlY3RvcnkgPSBOU1RlbXBvcmFyeURpcmVjdG9yeSgpOwotICAgIGlmICghdGVtcERp
cmVjdG9yeSB8fCAhW3RlbXBEaXJlY3RvcnkgbGVuZ3RoXSkKLSAgICAgICAgcmV0dXJuIG5pbDsK
LQotICAgIGlmICghZGlyZWN0b3J5UHJlZml4IHx8ICFbZGlyZWN0b3J5UHJlZml4IGxlbmd0aF0p
Ci0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBOU1N0cmluZyAqdGVtcERpcmVjdG9yeUNvbXBv
bmVudCA9IFtkaXJlY3RvcnlQcmVmaXggc3RyaW5nQnlBcHBlbmRpbmdTdHJpbmc6QCItWFhYWFhY
WFgiXTsKLSAgICBjb25zdCBjaGFyKiB0ZW1wRGlyZWN0b3J5Q1N0cmluZyA9IFtbdGVtcERpcmVj
dG9yeSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6dGVtcERpcmVjdG9yeUNvbXBvbmVu
dF0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uXTsKLSAgICBpZiAoIXRlbXBEaXJlY3RvcnlDU3Ry
aW5nKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgY29uc3Qgc2l6ZV90IGxlbmd0aCA9IHN0
cmxlbih0ZW1wRGlyZWN0b3J5Q1N0cmluZyk7Ci0gICAgQVNTRVJUKGxlbmd0aCA8PSBNQVhQQVRI
TEVOKTsKLSAgICBpZiAobGVuZ3RoID4gTUFYUEFUSExFTikKLSAgICAgICAgcmV0dXJuIG5pbDsK
LQotICAgIGNvbnN0IHNpemVfdCBsZW5ndGhQbHVzTnVsbFRlcm1pbmF0b3IgPSBsZW5ndGggKyAx
OwotICAgIFZlY3RvcjxjaGFyLCBNQVhQQVRITEVOICsgMT4gcGF0aChsZW5ndGhQbHVzTnVsbFRl
cm1pbmF0b3IpOwotICAgIG1lbWNweShwYXRoLmRhdGEoKSwgdGVtcERpcmVjdG9yeUNTdHJpbmcs
IGxlbmd0aFBsdXNOdWxsVGVybWluYXRvcik7Ci0KLSAgICBpZiAoIW1rZHRlbXAocGF0aC5kYXRh
KCkpKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgcmV0dXJuIFtbTlNGaWxlTWFuYWdlciBk
ZWZhdWx0TWFuYWdlcl0gc3RyaW5nV2l0aEZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbjpwYXRoLmRh
dGEoKSBsZW5ndGg6bGVuZ3RoXTsKLX0KLQotYm9vbCBkZWxldGVOb25FbXB0eURpcmVjdG9yeShj
b25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgcmV0dXJuIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0
TWFuYWdlcl0gcmVtb3ZlSXRlbUF0UGF0aDpwYXRoIGVycm9yOm5pbF07Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIEZpbGVTeXN0ZW0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvRmlsZU1vbml0b3JHTGliLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dsaWIvRmlsZU1vbml0b3JHTGliLmNwcAppbmRleCA0NjNmMzI3NmMy
NGUyNTFiZWI0YWEwOGIwYjk4OTg2ZThjYzk2OTIzLi41YTk4MmY0OTQ5MjM3Y2IyMGE5ZjU0Y2Y4
OGUyYWRlZTQ4ZDRmOTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGli
L0ZpbGVNb25pdG9yR0xpYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9G
aWxlTW9uaXRvckdMaWIuY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiRmlsZU1vbml0b3IuaCIKIAotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKKyNp
bmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIu
aD4KICNpbmNsdWRlIDx3dGYvdGhyZWFkcy9CaW5hcnlTZW1hcGhvcmUuaD4KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggY2E2YzNkZjk0ZGQzMjIxMzQzMDBjN2JiZDI2YmJiMDg5MDQ2NTYz
MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDQ3MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA5IEhvbGdlciBI
YW5zIFBldGVyIEZyZXl0aGVyCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhLCBMdGQu
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDEwIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRmlsZVN5
c3RlbS5oIgotCi0jaW5jbHVkZSAiRmlsZU1ldGFkYXRhLmgiCi0jaW5jbHVkZSAiTm90SW1wbGVt
ZW50ZWQuaCIKLSNpbmNsdWRlIDxnaW8vZ2ZpbGVkZXNjcmlwdG9yYmFzZWQuaD4KLSNpbmNsdWRl
IDxnaW8vZ2lvLmg+Ci0jaW5jbHVkZSA8Z2xpYi5oPgotI2luY2x1ZGUgPGdsaWIvZ3N0ZGlvLmg+
Ci0jaW5jbHVkZSA8c3lzL2ZpbGUuaD4KLSNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgotI2lu
Y2x1ZGUgPHd0Zi9VVUlELmg+Ci0jaW5jbHVkZSA8d3RmL2dsaWIvR0xpYlV0aWxpdGllcy5oPgot
I2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVl
UHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0J1aWxkZXIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgRmlsZVN5c3RlbSB7Ci0KLS8qIE9uIGxpbnV4
IGZpbGUgbmFtZXMgYXJlIGp1c3QgcmF3IGJ5dGVzLCBzbyBhbHNvIHN0cmluZ3MgdGhhdCBjYW5u
b3QgYmUgZW5jb2RlZCBpbiBhbnkgd2F5Ci0gKiBhcmUgdmFsaWQgZmlsZSBuYW1lcy4gVGhpcyBt
ZWFuIHRoYXQgd2UgY2Fubm90IGp1c3Qgc3RvcmUgYSBmaWxlIG5hbWUgYXMtaXMgaW4gYSBTdHJp
bmcKLSAqIGJ1dCB3ZSBoYXZlIHRvIGVzY2FwZSBpdC4KLSAqIE9uIFdpbmRvd3MgdGhlIEdMaWIg
ZmlsZSBuYW1lIGVuY29kaW5nIGlzIGFsd2F5cyBVVEYtOCBzbyB3ZSBjYW4gb3B0aW1pemUgdGhp
cyBjYXNlLiAqLwotU3RyaW5nIHN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29u
c3QgY2hhciogZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKQotewotICAgIGlmICghZmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSNpZiBPUyhXSU5E
T1dTKQotICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bik7Ci0jZWxzZQotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGVzY2FwZWRTdHJpbmcoZ191cmlfZXNj
YXBlX3N0cmluZyhmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24sICIvOiIsIEZBTFNFKSk7Ci0gICAg
cmV0dXJuIGVzY2FwZWRTdHJpbmcuZ2V0KCk7Ci0jZW5kaWYKLX0KLQotc3RhdGljIEdVbmlxdWVQ
dHI8Y2hhcj4gdW5lc2NhcGVkRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIGlm
IChwYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0jaWYgT1MoV0lORE9X
UykKLSAgICByZXR1cm4gR1VuaXF1ZVB0cjxjaGFyPihnX3N0cmR1cChwYXRoLnV0ZjgoKS5kYXRh
KCkpKTsKLSNlbHNlCi0gICAgcmV0dXJuIEdVbmlxdWVQdHI8Y2hhcj4oZ191cmlfdW5lc2NhcGVf
c3RyaW5nKHBhdGgudXRmOCgpLmRhdGEoKSwgbnVsbHB0cikpOwotI2VuZGlmCi19Ci0KLUNTdHJp
bmcgZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSNpZiBP
UyhXSU5ET1dTKQotICAgIHJldHVybiBwYXRoLnV0ZjgoKTsKLSNlbHNlCi0gICAgR1VuaXF1ZVB0
cjxnY2hhcj4gZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShwYXRoKTsKLSAgICByZXR1cm4g
ZmlsZW5hbWUuZ2V0KCk7Ci0jZW5kaWYKLX0KLQotLy8gQ29udmVydHMgYSBzdHJpbmcgdG8gc29t
ZXRoaW5nIHN1aXRhYmxlIHRvIGJlIGRpc3BsYXllZCB0byB0aGUgdXNlci4KLVN0cmluZyBmaWxl
bmFtZUZvckRpc3BsYXkoY29uc3QgU3RyaW5nJiBzdHJpbmcpCi17Ci0jaWYgT1MoV0lORE9XUykK
LSAgICByZXR1cm4gc3RyaW5nOwotI2Vsc2UKLSAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFt
ZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHN0cmluZyk7Ci0gICAgaWYgKCFmaWxlbmFtZSkKLSAgICAg
ICAgcmV0dXJuIHN0cmluZzsKLQotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGRpc3BsYXkoZ19maWxl
bmFtZV90b191dGY4KGZpbGVuYW1lLmdldCgpLCAtMSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0
cikpOwotICAgIGlmICghZGlzcGxheSkKLSAgICAgICAgcmV0dXJuIHN0cmluZzsKLQotICAgIHJl
dHVybiBTdHJpbmc6OmZyb21VVEY4KGRpc3BsYXkuZ2V0KCkpOwotI2VuZGlmCi19Ci0KLWJvb2wg
ZmlsZUV4aXN0cyhjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgR1VuaXF1ZVB0cjxnY2hhcj4g
ZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShwYXRoKTsKLSAgICByZXR1cm4gZmlsZW5hbWUg
PyBnX2ZpbGVfdGVzdChmaWxlbmFtZS5nZXQoKSwgR19GSUxFX1RFU1RfRVhJU1RTKSA6IGZhbHNl
OwotfQotCi1ib29sIGRlbGV0ZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIEdVbmlx
dWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUocGF0aCk7Ci0gICAgcmV0
dXJuIGZpbGVuYW1lID8gZ19yZW1vdmUoZmlsZW5hbWUuZ2V0KCkpICE9IC0xIDogZmFsc2U7Ci19
Ci0KLWJvb2wgZGVsZXRlRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAg
IEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUocGF0aCk7Ci0g
ICAgcmV0dXJuIGZpbGVuYW1lID8gZ19ybWRpcihmaWxlbmFtZS5nZXQoKSkgIT0gLTEgOiBmYWxz
ZTsKLX0KLQotc3RhdGljIGJvb2wgZ2V0RmlsZVN0YXQoY29uc3QgU3RyaW5nJiBwYXRoLCBHU3Rh
dEJ1Ziogc3RhdEJ1ZmZlcikKLXsKLSAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZSA9IHVu
ZXNjYXBlZEZpbGVuYW1lKHBhdGgpOwotICAgIGlmICghZmlsZW5hbWUpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIHJldHVybiBnX3N0YXQoZmlsZW5hbWUuZ2V0KCksIHN0YXRCdWZmZXIp
ICE9IC0xOwotfQotCi1zdGF0aWMgYm9vbCBnZXRGaWxlTFN0YXQoY29uc3QgU3RyaW5nJiBwYXRo
LCBHU3RhdEJ1Ziogc3RhdEJ1ZmZlcikKLXsKLSAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFt
ZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGgpOwotICAgIGlmICghZmlsZW5hbWUpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBnX2xzdGF0KGZpbGVuYW1lLmdldCgpLCBzdGF0
QnVmZmVyKSAhPSAtMTsKLX0KLQotYm9vbCBnZXRGaWxlU2l6ZShjb25zdCBTdHJpbmcmIHBhdGgs
IGxvbmcgbG9uZyYgcmVzdWx0U2l6ZSkKLXsKLSAgICBHU3RhdEJ1ZiBzdGF0UmVzdWx0OwotICAg
IGlmICghZ2V0RmlsZVN0YXQocGF0aCwgJnN0YXRSZXN1bHQpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICByZXN1bHRTaXplID0gc3RhdFJlc3VsdC5zdF9zaXplOwotICAgIHJldHVybiB0
cnVlOwotfQotCi1ib29sIGdldEZpbGVTaXplKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGxv
bmcgbG9uZyYgcmVzdWx0U2l6ZSkKLXsKLSAgICBhdXRvIGluZm8gPSBnX2ZpbGVfaW9fc3RyZWFt
X3F1ZXJ5X2luZm8oaGFuZGxlLCBHX0ZJTEVfQVRUUklCVVRFX1NUQU5EQVJEX1NJWkUsIG51bGxw
dHIsIG51bGxwdHIpOwotICAgIGlmICghaW5mbykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgcmVzdWx0U2l6ZSA9IGdfZmlsZV9pbmZvX2dldF9zaXplKGluZm8pOwotICAgIHJldHVybiB0
cnVlOwotfQotCi1PcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZUNyZWF0aW9uVGltZShjb25zdCBT
dHJpbmcmKQotewotICAgIC8vIEZJWE1FOiBJcyB0aGVyZSBhIHdheSB0byByZXRyaWV2ZSBmaWxl
IGNyZWF0aW9uIHRpbWUgd2l0aCBHdGsgb24gcGxhdGZvcm1zIHRoYXQgc3VwcG9ydCBpdD8KLSAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwotfQotCi1PcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZU1v
ZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIEdTdGF0QnVmIHN0YXRS
ZXN1bHQ7Ci0gICAgaWYgKCFnZXRGaWxlU3RhdChwYXRoLCAmc3RhdFJlc3VsdCkpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICByZXR1cm4gV2FsbFRpbWU6OmZyb21SYXdTZWNv
bmRzKHN0YXRSZXN1bHQuc3RfbXRpbWUpOwotfQotCi1zdGF0aWMgRmlsZU1ldGFkYXRhOjpUeXBl
IHRvRmlsZU1ldGF0YVR5cGUoR1N0YXRCdWYgc3RhdFJlc3VsdCkKLXsKLSAgICBpZiAoU19JU0RJ
UihzdGF0UmVzdWx0LnN0X21vZGUpKQotICAgICAgICByZXR1cm4gRmlsZU1ldGFkYXRhOjpUeXBl
OjpEaXJlY3Rvcnk7Ci0gICAgaWYgKFNfSVNMTksoc3RhdFJlc3VsdC5zdF9tb2RlKSkKLSAgICAg
ICAgcmV0dXJuIEZpbGVNZXRhZGF0YTo6VHlwZTo6U3ltYm9saWNMaW5rOwotICAgIHJldHVybiBG
aWxlTWV0YWRhdGE6OlR5cGU6OkZpbGU7Ci19Ci0KLXN0YXRpYyBPcHRpb25hbDxGaWxlTWV0YWRh
dGE+IGZpbGVNZXRhZGF0YVVzaW5nRnVuY3Rpb24oY29uc3QgU3RyaW5nJiBwYXRoLCBib29sICgq
c3RhdEZ1bmMpKGNvbnN0IFN0cmluZyYsIEdTdGF0QnVmKikpCi17Ci0gICAgR1N0YXRCdWYgc3Rh
dFJlc3VsdDsKLSAgICBpZiAoIXN0YXRGdW5jKHBhdGgsICZzdGF0UmVzdWx0KSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIFN0cmluZyBmaWxlbmFtZSA9IHBhdGhHZXRGaWxl
TmFtZShwYXRoKTsKLSAgICBib29sIGlzSGlkZGVuID0gIWZpbGVuYW1lLmlzRW1wdHkoKSAmJiBm
aWxlbmFtZVswXSA9PSAnLic7Ci0KLSAgICByZXR1cm4gRmlsZU1ldGFkYXRhIHsKLSAgICAgICAg
V2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKHN0YXRSZXN1bHQuc3RfbXRpbWUpLAotICAgICAgICBz
dGF0UmVzdWx0LnN0X3NpemUsCi0gICAgICAgIGlzSGlkZGVuLAotICAgICAgICB0b0ZpbGVNZXRh
dGFUeXBlKHN0YXRSZXN1bHQpCi0gICAgfTsKLX0KLQotT3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBm
aWxlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIHJldHVybiBmaWxlTWV0YWRh
dGFVc2luZ0Z1bmN0aW9uKHBhdGgsICZnZXRGaWxlTFN0YXQpOwotfQotCi1PcHRpb25hbDxGaWxl
TWV0YWRhdGE+IGZpbGVNZXRhZGF0YUZvbGxvd2luZ1N5bWxpbmtzKGNvbnN0IFN0cmluZyYgcGF0
aCkKLXsKLSAgICByZXR1cm4gZmlsZU1ldGFkYXRhVXNpbmdGdW5jdGlvbihwYXRoLCAmZ2V0Rmls
ZVN0YXQpOwotfQotCi1TdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNvbnN0IFN0cmlu
ZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb21wb25lbnQpCi17Ci0gICAgaWYgKHBhdGguZW5kc1dp
dGgoR19ESVJfU0VQQVJBVE9SX1MpKQotICAgICAgICByZXR1cm4gcGF0aCArIGNvbXBvbmVudDsK
LSAgICByZXR1cm4gcGF0aCArIEdfRElSX1NFUEFSQVRPUl9TICsgY29tcG9uZW50OwotfQotCi1T
dHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhTdHJpbmdWaWV3IHBhdGgsIGNvbnN0IFZl
Y3RvcjxTdHJpbmdWaWV3PiYgY29tcG9uZW50cykKLXsKLSAgICBTdHJpbmdCdWlsZGVyIGJ1aWxk
ZXI7Ci0gICAgYnVpbGRlci5hcHBlbmQocGF0aCk7Ci0gICAgZm9yIChhdXRvJiBjb21wb25lbnQg
OiBjb21wb25lbnRzKSB7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKEdfRElSX1NFUEFSQVRPUl9T
KTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoY29tcG9uZW50KTsKLSAgICB9Ci0gICAgcmV0dXJu
IGJ1aWxkZXIudG9TdHJpbmcoKTsKLX0KLQotYm9vbCBtYWtlQWxsRGlyZWN0b3JpZXMoY29uc3Qg
U3RyaW5nJiBwYXRoKQotewotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2Nh
cGVkRmlsZW5hbWUocGF0aCk7Ci0gICAgcmV0dXJuIGZpbGVuYW1lID8gZ19ta2Rpcl93aXRoX3Bh
cmVudHMoZmlsZW5hbWUuZ2V0KCksIFNfSVJXWFUpICE9IC0xIDogZmFsc2U7Ci19Ci0KLVN0cmlu
ZyBob21lRGlyZWN0b3J5UGF0aCgpCi17Ci0gICAgcmV0dXJuIHN0cmluZ0Zyb21GaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oZ19nZXRfaG9tZV9kaXIoKSk7Ci19Ci0KLWJvb2wgY3JlYXRlU3ltYm9s
aWNMaW5rKGNvbnN0IFN0cmluZyYgdGFyZ2V0UGF0aCwgY29uc3QgU3RyaW5nJiBzeW1ib2xpY0xp
bmtQYXRoKQotewotICAgIENTdHJpbmcgdGFyZ2V0UGF0aEZTUmVwID0gZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKHRhcmdldFBhdGgpOwotICAgIGlmICghdGFyZ2V0UGF0aEZTUmVwLmRhdGEoKSB8
fCB0YXJnZXRQYXRoRlNSZXAuZGF0YSgpWzBdID09ICdcMCcpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIENTdHJpbmcgc3ltYm9saWNMaW5rUGF0aEZTUmVwID0gZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKHN5bWJvbGljTGlua1BhdGgpOwotICAgIGlmICghc3ltYm9saWNMaW5rUGF0aEZT
UmVwLmRhdGEoKSB8fCBzeW1ib2xpY0xpbmtQYXRoRlNSZXAuZGF0YSgpWzBdID09ICdcMCcpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiAhc3ltbGluayh0YXJnZXRQYXRoRlNS
ZXAuZGF0YSgpLCBzeW1ib2xpY0xpbmtQYXRoRlNSZXAuZGF0YSgpKTsKLX0KLQotU3RyaW5nIHBh
dGhHZXRGaWxlTmFtZShjb25zdCBTdHJpbmcmIHBhdGhOYW1lKQotewotICAgIEdVbmlxdWVQdHI8
Z2NoYXI+IHRtcEZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUocGF0aE5hbWUpOwotICAgIGlm
ICghdG1wRmlsZW5hbWUpCi0gICAgICAgIHJldHVybiBwYXRoTmFtZTsKLQotICAgIEdVbmlxdWVQ
dHI8Z2NoYXI+IGJhc2VOYW1lKGdfcGF0aF9nZXRfYmFzZW5hbWUodG1wRmlsZW5hbWUuZ2V0KCkp
KTsKLSAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChiYXNlTmFtZS5nZXQoKSk7Ci19Ci0KLWJv
b2wgZ2V0Vm9sdW1lRnJlZVNwYWNlKGNvbnN0IFN0cmluZyYgcGF0aCwgdWludDY0X3QmIGZyZWVT
cGFjZSkKLXsKLSAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVu
YW1lKHBhdGgpOwotICAgIGlmICghZmlsZW5hbWUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQot
ICAgIEdSZWZQdHI8R0ZpbGU+IGZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0aChm
aWxlbmFtZS5nZXQoKSkpOwotICAgIEdSZWZQdHI8R0ZpbGVJbmZvPiBmaWxlSW5mbyA9IGFkb3B0
R1JlZihnX2ZpbGVfcXVlcnlfZmlsZXN5c3RlbV9pbmZvKGZpbGUuZ2V0KCksIEdfRklMRV9BVFRS
SUJVVEVfRklMRVNZU1RFTV9GUkVFLCAwLCAwKSk7Ci0gICAgaWYgKCFmaWxlSW5mbykKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgZnJlZVNwYWNlID0gZ19maWxlX2luZm9fZ2V0X2F0dHJp
YnV0ZV91aW50NjQoZmlsZUluZm8uZ2V0KCksIEdfRklMRV9BVFRSSUJVVEVfRklMRVNZU1RFTV9G
UkVFKTsKLSAgICByZXR1cm4gISFmcmVlU3BhY2U7Ci19Ci0KLVN0cmluZyBkaXJlY3RvcnlOYW1l
KGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZSA9
IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGgpOwotICAgIGlmICghZmlsZW5hbWUpCi0gICAgICAgIHJl
dHVybiBTdHJpbmcoKTsKLQotICAgIEdVbmlxdWVQdHI8Y2hhcj4gZGlybmFtZShnX3BhdGhfZ2V0
X2Rpcm5hbWUoZmlsZW5hbWUuZ2V0KCkpKTsKLSAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChk
aXJuYW1lLmdldCgpKTsKLX0KLQotVmVjdG9yPFN0cmluZz4gbGlzdERpcmVjdG9yeShjb25zdCBT
dHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgZmlsdGVyKQotewotICAgIFZlY3RvcjxTdHJpbmc+
IGVudHJpZXM7Ci0KLSAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZSA9IHVuZXNjYXBlZEZp
bGVuYW1lKHBhdGgpOwotICAgIGlmICghZmlsZW5hbWUpCi0gICAgICAgIHJldHVybiBlbnRyaWVz
OwotCi0gICAgR1VuaXF1ZVB0cjxHRGlyPiBkaXIoZ19kaXJfb3BlbihmaWxlbmFtZS5nZXQoKSwg
MCwgbnVsbHB0cikpOwotICAgIGlmICghZGlyKQotICAgICAgICByZXR1cm4gZW50cmllczsKLQot
ICAgIEdVbmlxdWVQdHI8R1BhdHRlcm5TcGVjPiBwc3BlYyhnX3BhdHRlcm5fc3BlY19uZXcoKGZp
bHRlci51dGY4KCkpLmRhdGEoKSkpOwotICAgIHdoaWxlIChjb25zdCBjaGFyKiBuYW1lID0gZ19k
aXJfcmVhZF9uYW1lKGRpci5nZXQoKSkpIHsKLSAgICAgICAgaWYgKCFnX3BhdHRlcm5fbWF0Y2hf
c3RyaW5nKHBzcGVjLmdldCgpLCBuYW1lKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAg
ICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGVudHJ5KGdfYnVpbGRfZmlsZW5hbWUoZmlsZW5hbWUuZ2V0
KCksIG5hbWUsIG51bGxwdHIpKTsKLSAgICAgICAgZW50cmllcy5hcHBlbmQoc3RyaW5nRnJvbUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihlbnRyeS5nZXQoKSkpOwotICAgIH0KLQotICAgIHJldHVy
biBlbnRyaWVzOwotfQotCi1TdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBw
cmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKQotewotICAgIEdVbmlxdWVQdHI8Z2No
YXI+IGZpbGVuYW1lKGdfc3RyZHVwX3ByaW50ZigiJXMlcyIsIHByZWZpeC51dGY4KCkuZGF0YSgp
LCBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkudXRmOCgpLmRhdGEoKSkpOwotICAgIEdVbmlx
dWVQdHI8Z2NoYXI+IHRlbXBQYXRoKGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdG1wX2RpcigpLCBm
aWxlbmFtZS5nZXQoKSwgTlVMTCkpOwotICAgIEdSZWZQdHI8R0ZpbGU+IGZpbGUgPSBhZG9wdEdS
ZWYoZ19maWxlX25ld19mb3JfcGF0aCh0ZW1wUGF0aC5nZXQoKSkpOwotCi0gICAgaGFuZGxlID0g
Z19maWxlX2NyZWF0ZV9yZWFkd3JpdGUoZmlsZS5nZXQoKSwgR19GSUxFX0NSRUFURV9OT05FLCAw
LCAwKTsKLSAgICBpZiAoIWlzSGFuZGxlVmFsaWQoaGFuZGxlKSkKLSAgICAgICAgcmV0dXJuIFN0
cmluZygpOwotICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KHRlbXBQYXRoLmdldCgpKTsKLX0K
LQotUGxhdGZvcm1GaWxlSGFuZGxlIG9wZW5GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU9w
ZW5Nb2RlIG1vZGUpCi17Ci0gICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUgPSB1bmVzY2Fw
ZWRGaWxlbmFtZShwYXRoKTsKLSAgICBpZiAoIWZpbGVuYW1lKQotICAgICAgICByZXR1cm4gaW52
YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKLQotICAgIEdSZWZQdHI8R0ZpbGU+IGZpbGUgPSBhZG9w
dEdSZWYoZ19maWxlX25ld19mb3JfcGF0aChmaWxlbmFtZS5nZXQoKSkpOwotICAgIEdGaWxlSU9T
dHJlYW0qIGlvU3RyZWFtID0gMDsKLSAgICBpZiAobW9kZSA9PSBGaWxlT3Blbk1vZGU6OlJlYWQp
Ci0gICAgICAgIGlvU3RyZWFtID0gZ19maWxlX29wZW5fcmVhZHdyaXRlKGZpbGUuZ2V0KCksIDAs
IDApOwotICAgIGVsc2UgaWYgKG1vZGUgPT0gRmlsZU9wZW5Nb2RlOjpXcml0ZSkgewotICAgICAg
ICBpZiAoZ19maWxlX3Rlc3QoZmlsZW5hbWUuZ2V0KCksIHN0YXRpY19jYXN0PEdGaWxlVGVzdD4o
R19GSUxFX1RFU1RfRVhJU1RTIHwgR19GSUxFX1RFU1RfSVNfUkVHVUxBUikpKQotICAgICAgICAg
ICAgaW9TdHJlYW0gPSBnX2ZpbGVfb3Blbl9yZWFkd3JpdGUoZmlsZS5nZXQoKSwgMCwgMCk7Ci0g
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIGlvU3RyZWFtID0gZ19maWxlX2NyZWF0ZV9yZWFkd3Jp
dGUoZmlsZS5nZXQoKSwgR19GSUxFX0NSRUFURV9OT05FLCAwLCAwKTsKLSAgICB9Ci0KLSAgICBy
ZXR1cm4gaW9TdHJlYW07Ci19Ci0KLXZvaWQgY2xvc2VGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSYg
aGFuZGxlKQotewotICAgIGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBnX2lvX3N0cmVhbV9jbG9zZShHX0lPX1NUUkVBTShoYW5kbGUpLCAwLCAwKTsK
LSAgICBnX29iamVjdF91bnJlZihoYW5kbGUpOwotICAgIGhhbmRsZSA9IGludmFsaWRQbGF0Zm9y
bUZpbGVIYW5kbGU7Ci19Ci0KLWxvbmcgbG9uZyBzZWVrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUg
aGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0LCBGaWxlU2Vla09yaWdpbiBvcmlnaW4pCi17Ci0gICAg
R1NlZWtUeXBlIHNlZWtUeXBlID0gR19TRUVLX1NFVDsKLSAgICBzd2l0Y2ggKG9yaWdpbikgewot
ICAgIGNhc2UgRmlsZVNlZWtPcmlnaW46OkJlZ2lubmluZzoKLSAgICAgICAgc2Vla1R5cGUgPSBH
X1NFRUtfU0VUOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEZpbGVTZWVrT3JpZ2luOjpDdXJy
ZW50OgotICAgICAgICBzZWVrVHlwZSA9IEdfU0VFS19DVVI7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgRmlsZVNlZWtPcmlnaW46OkVuZDoKLSAgICAgICAgc2Vla1R5cGUgPSBHX1NFRUtfRU5E
OwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICB9Ci0KLSAgICBpZiAoIWdfc2Vla2FibGVfc2VlayhHX1NFRUtBQkxFKGdfaW9f
c3RyZWFtX2dldF9pbnB1dF9zdHJlYW0oR19JT19TVFJFQU0oaGFuZGxlKSkpLAotICAgICAgICBv
ZmZzZXQsIHNlZWtUeXBlLCAwLCAwKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9
Ci0gICAgcmV0dXJuIGdfc2Vla2FibGVfdGVsbChHX1NFRUtBQkxFKGdfaW9fc3RyZWFtX2dldF9p
bnB1dF9zdHJlYW0oR19JT19TVFJFQU0oaGFuZGxlKSkpKTsKLX0KLQotaW50IHdyaXRlVG9GaWxl
KFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgp
Ci17Ci0gICAgZ3NpemUgYnl0ZXNXcml0dGVuOwotICAgIGdfb3V0cHV0X3N0cmVhbV93cml0ZV9h
bGwoZ19pb19zdHJlYW1fZ2V0X291dHB1dF9zdHJlYW0oR19JT19TVFJFQU0oaGFuZGxlKSksCi0g
ICAgICAgIGRhdGEsIGxlbmd0aCwgJmJ5dGVzV3JpdHRlbiwgMCwgMCk7Ci0gICAgcmV0dXJuIGJ5
dGVzV3JpdHRlbjsKLX0KLQotaW50IHJlYWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFu
ZGxlLCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQotewotICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9y
PiBlcnJvcjsKLSAgICBkbyB7Ci0gICAgICAgIGdzc2l6ZSBieXRlc1JlYWQgPSBnX2lucHV0X3N0
cmVhbV9yZWFkKGdfaW9fc3RyZWFtX2dldF9pbnB1dF9zdHJlYW0oR19JT19TVFJFQU0oaGFuZGxl
KSksCi0gICAgICAgICAgICBkYXRhLCBsZW5ndGgsIDAsICZlcnJvci5vdXRQdHIoKSk7Ci0gICAg
ICAgIGlmIChieXRlc1JlYWQgPj0gMCkKLSAgICAgICAgICAgIHJldHVybiBieXRlc1JlYWQ7Ci0g
ICAgfSB3aGlsZSAoZXJyb3IgJiYgZXJyb3ItPmNvZGUgPT0gR19GSUxFX0VSUk9SX0lOVFIpOwot
ICAgIHJldHVybiAtMTsKLX0KLQotYm9vbCBtb3ZlRmlsZShjb25zdCBTdHJpbmcmIG9sZFBhdGgs
IGNvbnN0IFN0cmluZyYgbmV3UGF0aCkKLXsKLSAgICBHVW5pcXVlUHRyPGdjaGFyPiBvbGRGaWxl
bmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKG9sZFBhdGgpOwotICAgIGlmICghb2xkRmlsZW5hbWUp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IG5ld0ZpbGVu
YW1lID0gdW5lc2NhcGVkRmlsZW5hbWUobmV3UGF0aCk7Ci0gICAgaWYgKCFuZXdGaWxlbmFtZSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgR1JlZlB0cjxHRmlsZT4gb2xkRmlsZSA9IGFk
b3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKG9sZEZpbGVuYW1lLmdldCgpKSk7Ci0gICAgR1Jl
ZlB0cjxHRmlsZT4gbmV3RmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKG5ld0Zp
bGVuYW1lLmdldCgpKSk7Ci0KLSAgICByZXR1cm4gZ19maWxlX21vdmUob2xkRmlsZS5nZXQoKSwg
bmV3RmlsZS5nZXQoKSwgR19GSUxFX0NPUFlfT1ZFUldSSVRFLCBudWxscHRyLCBudWxscHRyLCBu
dWxscHRyLCBudWxscHRyKTsKLX0KLQotYm9vbCBoYXJkTGlua09yQ29weUZpbGUoY29uc3QgU3Ry
aW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb24pCi17Ci0jaWYgT1MoV0lORE9X
UykKLSAgICByZXR1cm4gISE6OkNvcHlGaWxlKHNvdXJjZS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJt
aW5hdGlvbigpLmRhdGEoKSwgZGVzdGluYXRpb24uY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRp
b24oKS5kYXRhKCksIFRSVUUpOwotI2Vsc2UKLSAgICBHVW5pcXVlUHRyPGdjaGFyPiBzb3VyY2VG
aWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHNvdXJjZSk7Ci0gICAgaWYgKCFzb3VyY2VGaWxl
bmFtZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgR1VuaXF1ZVB0cjxnY2hhcj4gZGVz
dGluYXRpb25GaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKGRlc3RpbmF0aW9uKTsKLSAgICBp
ZiAoIWRlc3RpbmF0aW9uRmlsZW5hbWUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlm
ICghbGluayhzb3VyY2VGaWxlbmFtZS5nZXQoKSwgZGVzdGluYXRpb25GaWxlbmFtZS5nZXQoKSkp
Ci0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgLy8gSGFyZCBsaW5rIGZhaWxlZC4gUGVyZm9y
bSBhIGNvcHkgaW5zdGVhZC4KLSAgICBHUmVmUHRyPEdGaWxlPiBzb3VyY2VGaWxlID0gYWRvcHRH
UmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoc291cmNlRmlsZW5hbWUuZ2V0KCkpKTsKLSAgICBHUmVm
UHRyPEdGaWxlPiBkZXN0aW5hdGlvbkZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0
aChkZXN0aW5hdGlvbkZpbGVuYW1lLmdldCgpKSk7Ci0gICAgcmV0dXJuIGdfZmlsZV9jb3B5KHNv
dXJjZUZpbGUuZ2V0KCksIGRlc3RpbmF0aW9uRmlsZS5nZXQoKSwgR19GSUxFX0NPUFlfTk9ORSwg
bnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cik7Ci0jZW5kaWYKLX0KLQotT3B0aW9u
YWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0IENTdHJpbmcmIGZzRmlsZSkKLXsKLSAg
ICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKGZzRmlsZS5k
YXRhKCkpOwotICAgIGlmICghZmlsZW5hbWUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
Ci0KLSAgICBHUmVmUHRyPEdGaWxlPiBmaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3Bh
dGgoZmlsZW5hbWUuZ2V0KCkpKTsKLSAgICBHUmVmUHRyPEdGaWxlSW5mbz4gZmlsZUluZm8gPSBh
ZG9wdEdSZWYoZ19maWxlX3F1ZXJ5X2ZpbGVzeXN0ZW1faW5mbyhmaWxlLmdldCgpLCBHX0ZJTEVf
QVRUUklCVVRFX1VOSVhfREVWSUNFLCBudWxscHRyLCBudWxscHRyKSk7Ci0gICAgaWYgKCFmaWxl
SW5mbykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIHJldHVybiBnX2ZpbGVf
aW5mb19nZXRfYXR0cmlidXRlX3VpbnQzMihmaWxlSW5mby5nZXQoKSwgR19GSUxFX0FUVFJJQlVU
RV9VTklYX0RFVklDRSk7Ci19Ci0KLSNpZiBVU0UoRklMRV9MT0NLKQotYm9vbCBsb2NrRmlsZShQ
bGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBPcHRpb25TZXQ8RmlsZUxvY2tNb2RlPiBsb2NrTW9k
ZSkKLXsKLSAgICBDT01QSUxFX0FTU0VSVChMT0NLX1NIID09IFdURjo6ZW51bVRvVW5kZXJseWlu
Z1R5cGUoRmlsZUxvY2tNb2RlOjpTaGFyZWQpLCBMb2NrU2hhcmVkRW5jb2RpbmdJc0FzRXhwZWN0
ZWQpOwotICAgIENPTVBJTEVfQVNTRVJUKExPQ0tfRVggPT0gV1RGOjplbnVtVG9VbmRlcmx5aW5n
VHlwZShGaWxlTG9ja01vZGU6OkV4Y2x1c2l2ZSksIExvY2tFeGNsdXNpdmVFbmNvZGluZ0lzQXNF
eHBlY3RlZCk7Ci0gICAgQ09NUElMRV9BU1NFUlQoTE9DS19OQiA9PSBXVEY6OmVudW1Ub1VuZGVy
bHlpbmdUeXBlKEZpbGVMb2NrTW9kZTo6Tm9uYmxvY2tpbmcpLCBMb2NrTm9uYmxvY2tpbmdFbmNv
ZGluZ0lzQXNFeHBlY3RlZCk7Ci0gICAgYXV0byogaW5wdXRTdHJlYW0gPSBnX2lvX3N0cmVhbV9n
ZXRfaW5wdXRfc3RyZWFtKEdfSU9fU1RSRUFNKGhhbmRsZSkpOwotICAgIGludCByZXN1bHQgPSBm
bG9jayhnX2ZpbGVfZGVzY3JpcHRvcl9iYXNlZF9nZXRfZmQoR19GSUxFX0RFU0NSSVBUT1JfQkFT
RUQoaW5wdXRTdHJlYW0pKSwgbG9ja01vZGUudG9SYXcoKSk7Ci0gICAgcmV0dXJuIHJlc3VsdCAh
PSAtMTsKLX0KLQotYm9vbCB1bmxvY2tGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUpCi17
Ci0gICAgYXV0byogaW5wdXRTdHJlYW0gPSBnX2lvX3N0cmVhbV9nZXRfaW5wdXRfc3RyZWFtKEdf
SU9fU1RSRUFNKGhhbmRsZSkpOwotICAgIGludCByZXN1bHQgPSBmbG9jayhnX2ZpbGVfZGVzY3Jp
cHRvcl9iYXNlZF9nZXRfZmQoR19GSUxFX0RFU0NSSVBUT1JfQkFTRUQoaW5wdXRTdHJlYW0pKSwg
TE9DS19VTik7Ci0gICAgcmV0dXJuIHJlc3VsdCAhPSAtMTsKLX0KLSNlbmRpZiAvLyBVU0UoRklM
RV9MT0NLKQotCi19IC8vIG5hbWVzcGFjZSBGaWxlU3lzdGVtCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZl
ckdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGli
LmNwcAppbmRleCBiNDg5NmMwODU0NjBlN2MwYmU1NjQwODRlYzg4ZWYyMmFmNjBiODQ0Li5jNzQ3
MzU3NTMwN2Y2ZjdkZDRhOWYyMzYxYWVmMjVjYTM2OTc2ZTNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAKQEAgLTE5LDcgKzE5LDYg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKIAotI2lu
Y2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZDb250ZW50
S2V5U2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLm1tCmluZGV4IGU4ZGQzYjVh
ZWM4MjkzY2Q1ZWQ5NmU5OGYxMDM1ZWU1M2UyOGM3YjQuLjI0Zjk1ZTg0NDEzNjdlMjIxOWNhMjI2
NDQ1ZTg2MjI4ZjU3OTQ4MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLm1tCkBAIC0yOSw3ICsyOSw2IEBACiAjaWYg
RU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiAK
ICNpbXBvcnQgIkNETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCIKLSNpbXBvcnQgIkZpbGVT
eXN0ZW0uaCIKICNpbXBvcnQgIkxlZ2FjeUNETS5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2lt
cG9ydCAiTWVkaWFQbGF5ZXIuaCIKQEAgLTM5LDYgKzM4LDcgQEAKICNpbXBvcnQgPENvcmVNZWRp
YS9DTUJhc2UuaD4KICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL1R5cGVkQXJyYXlJbmxpbmVzLmg+
CiAjaW1wb3J0IDxvYmpjL29iamMtcnVudGltZS5oPgorI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0u
aD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgogCiBTT0ZUX0xJTktfRlJBTUVXT1JLX09Q
VElPTkFMKEFWRm91bmRhdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVlN0cmVhbVNlc3Npb24ubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1T
ZXNzaW9uQVZTdHJlYW1TZXNzaW9uLm1tCmluZGV4IDk5Mjk0MzE1ZDg2MjQxYjE2OGYyOGFhNzJl
ZGRlMGQ5N2NmNGE3OGMuLmMzNTczZTVjNjA4MWM5OWIxNDA0ZTBlNDFjNTBlMDQ5ZTI5MWEyMmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0NETVNlc3Npb25BVlN0cmVhbVNlc3Npb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vz
c2lvbi5tbQpAQCAtMjksNyArMjksNiBAQAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01F
RElBKSAmJiBFTkFCTEUoTUVESUFfU09VUkNFKQogCiAjaW1wb3J0ICJDRE1Qcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDLmgiCi0jaW1wb3J0ICJGaWxlU3lzdGVtLmgiCiAjaW1wb3J0ICJMZWdhY3lD
RE0uaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIk1lZGlhUGxheWVyLmgiCkBAIC00
MCw2ICszOSw3IEBACiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9UeXBlZEFycmF5SW5saW5lcy5o
PgogI2ltcG9ydCA8b2JqYy9vYmpjLXJ1bnRpbWUuaD4KICNpbXBvcnQgPHBhbC9zcGkvbWFjL0FW
Rm91bmRhdGlvblNQSS5oPgorI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0
Zi9Tb2Z0TGlua2luZy5oPgogI2ltcG9ydCA8d3RmL1VVSUQuaD4KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lv
bk1lZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMubW0KaW5kZXgg
MmNiMmQ2ZmEwY2Q4ZWZhNDIzMTg5MWEwOTgxOTgzYzliOGMwNzdlNC4uZWM1ODM3OGE4YmViNmE1
NzUzZDAyZGE0OWZlZGFiNjZlZWI1OTdjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZG
T2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLm1tCkBAIC0yOSw5ICsyOSw5IEBA
CiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRShNRURJQV9TT1VS
Q0UpCiAKICNpbXBvcnQgIkNETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCIKLSNpbXBvcnQg
IkZpbGVTeXN0ZW0uaCIKICNpbXBvcnQgIldlYkNvcmVOU0Vycm9yRXh0cmFzLmgiCiAjaW1wb3J0
IDxBVkZvdW5kYXRpb24vQVZFcnJvci5oPgorI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KaW5kZXggNWUz
NmRkMDA2OTMwNzUwMTEyYjcxM2ZkYzRlNWFlYTRkMTBhOWMwOS4uZDZkNWU4MmIyMzc3NmZkNjI3
N2UyOWI2OWRlYjY2MjlmOGM5MThjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQpAQCAt
MzEsNyArMzEsNiBAQAogI2ltcG9ydCAiQVZBc3NldFRyYWNrVXRpbGl0aWVzLmgiCiAjaW1wb3J0
ICJBVkZvdW5kYXRpb25NSU1FVHlwZUNhY2hlLmgiCiAjaW1wb3J0ICJDRE1TZXNzaW9uQVZTdHJl
YW1TZXNzaW9uLmgiCi0jaW1wb3J0ICJGaWxlU3lzdGVtLmgiCiAjaW1wb3J0ICJHcmFwaGljc0Nv
bnRleHRDRy5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiTWVkaWFTb3VyY2VQcml2
YXRlQVZGT2JqQy5oIgpAQCAtNDksNiArNDgsNyBAQAogI2ltcG9ydCA8cGFsL2F2Zm91bmRhdGlv
bi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uaD4KICNpbXBvcnQgPHBhbC9zcGkvbWFjL0FWRm91bmRh
dGlvblNQSS5oPgogI2ltcG9ydCA8d3RmL0RlcXVlLmg+CisjaW1wb3J0IDx3dGYvRmlsZVN5c3Rl
bS5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIu
Y3BwCmluZGV4IDBmMDVlYjkxOTlkYmYzZTQ5ZTFhMTJlMDc1NjZlZWM0ODkxZGUxNzcuLjQxNDBj
MTFiMGVhNDc5OGU2NjBkNjQ5NTgwZmVjYWFkM2MyNmQ0YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAKICNp
ZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpCiAKLSNpbmNsdWRlICJGaWxlU3lzdGVt
LmgiCiAjaW5jbHVkZSAiR1N0cmVhbWVyQ29tbW9uLmgiCiAjaW5jbHVkZSAiSFRUUEhlYWRlck5h
bWVzLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgpAQCAtNDIsNiArNDEsNyBAQAog
I2luY2x1ZGUgPGdzdC9nc3QuaD4KICNpbmNsdWRlIDxnc3QvcGJ1dGlscy9taXNzaW5nLXBsdWdp
bnMuaD4KICNpbmNsdWRlIDxsaW1pdHM+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNp
bmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+CiAjaW5jbHVkZSA8d3RmL01lZGlhVGltZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1F1aWNrTG9vay5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9R
dWlja0xvb2subW0KaW5kZXggN2JmOTFiMmZhZGMzMTJhYjNiN2U4NjJhNTgzNTBlYzU0OGQwMWJi
Ny4uYTlkOWU0NzEwNTAxN2Q2NGQ4MmUzN2M4YWEzMWNlNjQ2OTAyNTY4NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29rLm1tCkBAIC0yOCwxMiArMjgsMTIgQEAKIAogI2lm
IFVTRShRVUlDS19MT09LKQogCi0jaW1wb3J0ICJGaWxlU3lzdGVtLmgiCiAjaW1wb3J0ICJQcmV2
aWV3Q29udmVydGVyLmgiCiAjaW1wb3J0ICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbXBvcnQgIlNj
aGVtZVJlZ2lzdHJ5LmgiCiAjaW1wb3J0IDxwYWwvaW9zL1F1aWNrTG9va1NvZnRMaW5rLmg+CiAj
aW1wb3J0IDxwYWwvc3BpL2NvY29hL05TRmlsZU1hbmFnZXJTUEkuaD4KKyNpbXBvcnQgPHd0Zi9G
aWxlU3lzdGVtLmg+CiAjaW1wb3J0IDx3dGYvTG9jay5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJ
dGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dl
Ykl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW0KaW5kZXggYmY4MjE4Mzk5MTVlODBkNTg5OWE5NDg5
OTlmMmYwMjA2ZDhjZmYzYS4uMzU0NWQ3ZWZjYWM4Njc2NDhmNDlhNDc0ZThhMDIwYjUxYzg4ZDRk
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRl
clBhc3RlYm9hcmQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Q
cm92aWRlclBhc3RlYm9hcmQubW0KQEAgLTM0LDExICszNCwxMSBAQAogI2ltcG9ydCA8VUlLaXQv
TlNJdGVtUHJvdmlkZXIrVUlLaXRBZGRpdGlvbnMuaD4KICNpbXBvcnQgPFVJS2l0L1VJQ29sb3Iu
aD4KICNpbXBvcnQgPFVJS2l0L1VJSW1hZ2UuaD4KLSNpbXBvcnQgPFdlYkNvcmUvRmlsZVN5c3Rl
bS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYXN0ZWJvYXJkLmg+CiAjaW1wb3J0IDxwYWwvaW9zL1VJ
S2l0U29mdExpbmsuaD4KICNpbXBvcnQgPHBhbC9zcGkvaW9zL1VJS2l0U1BJLmg+CiAjaW1wb3J0
IDx3dGYvQmxvY2tQdHIuaD4KKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDx3
dGYvT1NPYmplY3RQdHIuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIApAQCAtNjk0LDcg
KzY5NCw3IEBAIHN0YXRpYyBOU1VSTCAqbGlua1RlbXBvcmFyeUl0ZW1Qcm92aWRlckZpbGVzVG9E
cm9wU3RhZ2luZ0RpcmVjdG9yeShOU1VSTCAqdXJsLCBOCiAgICAgaWYgKCF1cmwpCiAgICAgICAg
IHJldHVybiBuaWw7CiAKLSAgICBOU1N0cmluZyAqdGVtcG9yYXJ5RGF0YUludGVyYWN0aW9uRGly
ZWN0b3J5ID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KGRh
dGFJbnRlcmFjdGlvbkRpcmVjdG9yeVByZWZpeCk7CisgICAgTlNTdHJpbmcgKnRlbXBvcmFyeURh
dGFJbnRlcmFjdGlvbkRpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVj
dG9yeShkYXRhSW50ZXJhY3Rpb25EaXJlY3RvcnlQcmVmaXgpOwogICAgIGlmICghdGVtcG9yYXJ5
RGF0YUludGVyYWN0aW9uRGlyZWN0b3J5KQogICAgICAgICByZXR1cm4gbmlsOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRmlsZVN5c3RlbU1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9GaWxlU3lzdGVtTWFjLm1tCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA4ZWQ3NTFhN2VjMGU1ZDBiYWY3NzRmOTg2MTBhY2IwNDVjZDJiMDA0Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9GaWxlU3lzdGVtTWFjLm1tCisrKyAvZGV2L251bGwKQEAgLTEsODgg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNy0yMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJG
aWxlU3lzdGVtLmgiCi0KLSNpZiBQTEFURk9STShNQUMpCi0KLSNpbXBvcnQgPHBhbC9zcGkvbWFj
L01ldGFkYXRhU1BJLmg+Ci0jaW1wb3J0IDx3dGYvY29jb2EvTlNVUkxFeHRyYXMuaD4KLSNpbXBv
cnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWJvb2wg
RmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKQotewot
ICAgIGF1dG8gZmlsZU1hbmFnZXIgPSBhZG9wdE5TKFtbTlNGaWxlTWFuYWdlciBhbGxvY10gaW5p
dF0pOwotCi0gICAgaWYgKE5TQXJyYXkgKmRpcmVjdG9yeUNvbnRlbnRzID0gW2ZpbGVNYW5hZ2Vy
IGNvbnRlbnRzT2ZEaXJlY3RvcnlBdFBhdGg6cGF0aCBlcnJvcjpudWxscHRyXSkgewotICAgICAg
ICAvLyBFeHBsaWNpdGx5IGxvb2sgZm9yIGFuZCBkZWxldGUgLkRTX1N0b3JlIGZpbGVzLgotICAg
ICAgICBpZiAoZGlyZWN0b3J5Q29udGVudHMuY291bnQgPT0gMSAmJiBbZGlyZWN0b3J5Q29udGVu
dHMuZmlyc3RPYmplY3QgaXNFcXVhbFRvU3RyaW5nOkAiLkRTX1N0b3JlIl0pCi0gICAgICAgICAg
ICBbZmlsZU1hbmFnZXIgcmVtb3ZlSXRlbUF0UGF0aDpbcGF0aCBzdHJpbmdCeUFwcGVuZGluZ1Bh
dGhDb21wb25lbnQ6ZGlyZWN0b3J5Q29udGVudHMuZmlyc3RPYmplY3RdIGVycm9yOm51bGxwdHJd
OwotICAgIH0KLQotICAgIC8vIHJtZGlyKC4uLikgcmV0dXJucyAwIG9uIHN1Y2Nlc3NmdWwgZGVs
ZXRpb24gb2YgdGhlIHBhdGggYW5kIG5vbi16ZXJvIGluIGFueSBvdGhlciBjYXNlIChpbmNsdWRp
bmcgaW52YWxpZCBwZXJtaXNzaW9ucyBvciBub24tZXhpc3RlbnQgZmlsZSkKLSAgICByZXR1cm4g
IXJtZGlyKEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCkp
OwotfQotCi12b2lkIEZpbGVTeXN0ZW06OnNldE1ldGFkYXRhVVJMKGNvbnN0IFN0cmluZyYgcGF0
aCwgY29uc3QgU3RyaW5nJiBtZXRhZGF0YVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiByZWZlcnJl
cikKLXsKLSAgICBTdHJpbmcgdXJsU3RyaW5nOwotICAgIGlmIChOU1VSTCAqdXJsID0gVVJMV2l0
aFVzZXJUeXBlZFN0cmluZyhtZXRhZGF0YVVSTFN0cmluZywgbmlsKSkKLSAgICAgICAgdXJsU3Ry
aW5nID0gV1RGOjp1c2VyVmlzaWJsZVN0cmluZyhXVEY6OlVSTEJ5UmVtb3ZpbmdVc2VySW5mbyh1
cmwpKTsKLSAgICBlbHNlCi0gICAgICAgIHVybFN0cmluZyA9IG1ldGFkYXRhVVJMU3RyaW5nOwot
Ci0gICAgLy8gQ2FsbCBNZXRhZGF0YSBBUEkgb24gYSBiYWNrZ3JvdW5kIHF1ZXVlIGJlY2F1c2Ug
aXQgY2FuIHRha2Ugc29tZSB0aW1lLgotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9n
bG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVGQVVMVCwgMCksIFtwYXRoID0g
cGF0aC5pc29sYXRlZENvcHkoKSwgdXJsU3RyaW5nID0gdXJsU3RyaW5nLmlzb2xhdGVkQ29weSgp
LCByZWZlcnJlciA9IHJlZmVycmVyLmlzb2xhdGVkQ29weSgpXSB7Ci0gICAgICAgIGF1dG8gaXRl
bSA9IGFkb3B0Q0YoTURJdGVtQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHBhdGguY3JlYXRl
Q0ZTdHJpbmcoKS5nZXQoKSkpOwotICAgICAgICBpZiAoIWl0ZW0pCi0gICAgICAgICAgICByZXR1
cm47Ci0KLSAgICAgICAgYXV0byB3aGVyZUZyb21BdHRyaWJ1dGUgPSBhZG9wdE5TKFtbTlNNdXRh
YmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czp1cmxTdHJpbmcsIG5pbF0pOwotICAgICAg
ICBpZiAoIXJlZmVycmVyLmlzTnVsbCgpKQotICAgICAgICAgICAgW3doZXJlRnJvbUF0dHJpYnV0
ZSBhZGRPYmplY3Q6cmVmZXJyZXJdOwotCi0gICAgICAgIE1ESXRlbVNldEF0dHJpYnV0ZShpdGVt
LmdldCgpLCBrTURJdGVtV2hlcmVGcm9tcywgKF9fYnJpZGdlIENGQXJyYXlSZWYpd2hlcmVGcm9t
QXR0cmlidXRlLmdldCgpKTsKLSAgICAgICAgTURJdGVtU2V0QXR0cmlidXRlKGl0ZW0uZ2V0KCks
IGtNREl0ZW1Eb3dubG9hZGVkRGF0ZSwgKF9fYnJpZGdlIENGQXJyYXlSZWYpQFsgW05TRGF0ZSBk
YXRlXSBdKTsKLSAgICB9KTsKLX0KLQotYm9vbCBGaWxlU3lzdGVtOjpjYW5FeGNsdWRlRnJvbUJh
Y2t1cCgpCi17Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgRmlsZVN5c3RlbTo6ZXhjbHVk
ZUZyb21CYWNrdXAoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIC8vIEl0IGlzIGNyaXRpY2Fs
IHRvIHBhc3MgRkFMU0UgZm9yIGV4Y2x1ZGVCeVBhdGggYmVjYXVzZSBleGNsdWRpbmcgYnkgcGF0
aCByZXF1aXJlcyByb290IHByaXZpbGVnZXMuCi0gICAgQ1NCYWNrdXBTZXRJdGVtRXhjbHVkZWQo
RmlsZVN5c3RlbTo6cGF0aEFzVVJMKHBhdGgpLmdldCgpLCBUUlVFLCBGQUxTRSk7Ci0gICAgcmV0
dXJuIHRydWU7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFBMQVRG
T1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXJDb2NvYS5tbQppbmRleCBkN2UzZjM5YTY3YjM3M2I4Mzg3OWM4NDA5YzU4YjA4OThkMzQ3OWVj
Li5kNzllMmY2MGM2MDk0MDNhYmRmYzAyYWViZjcwYTI2YmNjZGYyZjNmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCkBAIC0yOSwx
MyArMjksMTMgQEAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9O
KQogCiAjaW5jbHVkZSAiQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oIgotI2luY2x1ZGUgIkZpbGVT
eXN0ZW0uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFj
a1ByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJBdWRpb0J1ZmZlckxpc3QuaCIKICNpbmNsdWRlIDxB
VkZvdW5kYXRpb24vQVZBc3NldFdyaXRlci5oPgogI2luY2x1ZGUgPEFWRm91bmRhdGlvbi9BVkFz
c2V0V3JpdGVySW5wdXQuaD4KICNpbmNsdWRlIDxwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaD4K
KyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiB0eXBlZGVmIEFWQXNzZXRXcml0ZXIgQVZB
c3NldFdyaXRlclR5cGU7CiB0eXBlZGVmIEFWQXNzZXRXcml0ZXJJbnB1dCBBVkFzc2V0V3JpdGVy
SW5wdXRUeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9C
bG9iRGF0YUZpbGVSZWZlcmVuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuY3BwCmluZGV4IGI2M2YwNjEyYWJmY2I4NjZkYTBjZWQw
YTIzNWRjMTU1OTNmZjA1ZWQuLjVhYmZkNzVjYjQ5NDU2ZTQyZDM5ZDQ0ZDNiYzIyNTlhYWZmYTUy
MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFG
aWxlUmVmZXJlbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Js
b2JEYXRhRmlsZVJlZmVyZW5jZS5jcHAKQEAgLTI3LDggKzI3LDggQEAKICNpbmNsdWRlICJCbG9i
RGF0YUZpbGVSZWZlcmVuY2UuaCIKIAogI2luY2x1ZGUgIkZpbGUuaCIKLSNpbmNsdWRlICJGaWxl
TWV0YWRhdGEuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVN
ZXRhZGF0YS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9i
UmVnaXN0cnlJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJl
Z2lzdHJ5SW1wbC5jcHAKaW5kZXggODBiNDFlOTc1ZTRkNjE0M2FmNGM5OTYxMTc1NDdiYjg5MmVk
YTMxOC4uMWM3MDZhYTM0NmNhZGRlYTM5ZTUwMGQ4MDMwNGNkNDk0YmQ4MjY4MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3Bw
CkBAIC0zNSwxMyArMzUsMTMgQEAKICNpbmNsdWRlICJCbG9iRGF0YS5oIgogI2luY2x1ZGUgIkJs
b2JQYXJ0LmgiCiAjaW5jbHVkZSAiQmxvYlJlc291cmNlSGFuZGxlLmgiCi0jaW5jbHVkZSAiRmls
ZU1ldGFkYXRhLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIlJlc291cmNl
RXJyb3IuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlJlc291cmNl
UmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlIDx3dGYv
Q29tcGxldGlvbkhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZU1ldGFkYXRhLmg+CisjaW5j
bHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5k
bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5k
bGUuY3BwCmluZGV4IGM5NGUzOTQ5NGI4ZTMyNmRiNGExMmEyNzIwMWE0NjIzOGRlMThjNGIuLmNj
NjdjZTY4OGYzYmNhMjIyNjkwYjQzZjEwNTg3OGJhOWUzYzI4ZjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAKQEAg
LTM1LDE5ICszNSwxOSBAQAogI2luY2x1ZGUgIkFzeW5jRmlsZVN0cmVhbS5oIgogI2luY2x1ZGUg
IkJsb2JEYXRhLmgiCiAjaW5jbHVkZSAiRmlsZVN0cmVhbS5oIgotI2luY2x1ZGUgIkZpbGVTeXN0
ZW0uaCIKICNpbmNsdWRlICJIVFRQSGVhZGVyTmFtZXMuaCIKICNpbmNsdWRlICJIVFRQUGFyc2Vy
cy5oIgogI2luY2x1ZGUgIlBhcnNlZENvbnRlbnRSYW5nZS5oIgotI2luY2x1ZGUgPHd0Zi9VUkwu
aD4KICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVD
bGllbnQuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJj
ZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL0Nv
bXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRl
IDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAppbmRleCA1NGU0YWMwNDk2MmEyMjE5MDdlM2I3ZDgwYTRm
YmFjYmUyNTRiMzk5Li43Yjc2YTVlZWRlOTlmOTQ5YzgxZTY5Y2ZlMWJkYmI4OTZjY2MyNjdlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcApAQCAtMjks
MTIgKzI5LDEyIEBACiAjaW5jbHVkZSAiRE9NRm9ybURhdGEuaCIKICNpbmNsdWRlICJEb2N1bWVu
dC5oIgogI2luY2x1ZGUgIkZpbGUuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVk
ZSAiRm9ybURhdGFCdWlsZGVyLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlNoYXJl
ZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgogI2luY2x1ZGUgIlRocmVhZGFi
bGVCbG9iUmVnaXN0cnkuaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L0xpbmVFbmRpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1D
Rk5ldC5jcHAKaW5kZXggOWUyZDg4MWQ2MzU0OTE1MjVkNzFhZjQ1NmMyZDE5NWZkMTNiOTRkNi4u
YTc0YWU1YWFjOWNiMjYyM2RjOWNhNWE4YWE0MGFjMzQwMjEyZjJkNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZO
ZXQuY3BwCkBAIC0zMCwxMSArMzAsMTEgQEAKICNpbmNsdWRlICJGb3JtRGF0YVN0cmVhbUNGTmV0
LmgiCiAKICNpbmNsdWRlICJCbG9iRGF0YS5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNp
bmNsdWRlICJGb3JtRGF0YS5oIgogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAjaW5jbHVkZSA8c3lz
L3R5cGVzLmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvRmls
ZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL01haW5U
aHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2Nv
YS5tbQppbmRleCAyN2ZmOWQxY2E4ZWZhMWZkZDZlZGYyODg2NDg2NDc5NDlmODgxYTk2Li4yZmVj
MWYzODM0ZTQxMTZhMWRkNGNlYjFmNjMyODk4ZDVlY2UxNDBkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0
Q29jb2EubW0KQEAgLTI4LDEzICsyOCwxMyBAQAogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAKLSNp
bXBvcnQgIkZpbGVTeXN0ZW0uaCIKICNpbXBvcnQgIkZvcm1EYXRhU3RyZWFtTWFjLmgiCiAjaW1w
b3J0ICJIVFRQSGVhZGVyTmFtZXMuaCIKICNpbXBvcnQgIlJlc291cmNlUmVxdWVzdENGTmV0Lmgi
CiAjaW1wb3J0ICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKICNpbXBvcnQgPEZvdW5kYXRp
b24vRm91bmRhdGlvbi5oPgogI2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4KKyNp
bXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwCmluZGV4IGMyM2ZkNzJmMTkxNzEwMjA4MmUxMjFl
NDRkNThlZGQ4YTMyZDFlNzEuLjI2MzYyMjg4Yjg2OWQ4YzdiYjM0MTdmNzZmNDBiNjNjYzU3Zjdh
NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29r
aWVKYXJEQi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nv
b2tpZUphckRCLmNwcApAQCAtMjYsMTAgKzI2LDkgQEAKICNpbmNsdWRlICJDb29raWVKYXJEQi5o
IgogCiAjaW5jbHVkZSAiQ29va2llVXRpbC5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNp
bmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiU1FMaXRlRmlsZVN5c3RlbS5oIgotCisjaW5j
bHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTW9ub3RvbmljVGltZS5oPgog
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuaAppbmRleCBjYmM0NWZlZDJiNjM4ZWE2MmQ5
MTJlYzdlZDJkNjYxNDNiOGY5ZDZiLi4xMTAyN2NlM2IzY2Y2Mzg4Zjk5NTRhYWY0OWM0OTAzZmU5
M2ZkZmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybENhY2hlRW50cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybENhY2hlRW50cnkuaApAQCAtMjYsMTEgKzI2LDExIEBACiAKICNwcmFnbWEgb25jZQog
Ci0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkhUVFBIZWFkZXJNYXAuaCIKICNp
bmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgog
I2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5o
PgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNp
bmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcAppbmRleCA0M2JjMmU3
YmZmZjRmOWJkNmY3MTAyODVkNmQzZDg2MzFiYjc3ODNhLi5mYTVjOGQyZDIxYjYyNzM4MTVkMDIz
YTRmMjA0NTUwMTZlOTYzOGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCkBAIC0zMCwxMiArMzAsMTIg
QEAKIAogI2luY2x1ZGUgIkN1cmxDYWNoZU1hbmFnZXIuaCIKIAotI2luY2x1ZGUgIkZpbGVTeXN0
ZW0uaCIKICNpbmNsdWRlICJIVFRQSGVhZGVyTWFwLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgog
I2luY2x1ZGUgIlJlc291cmNlSGFuZGxlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5k
bGVJbnRlcm5hbC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgorI2luY2x1ZGUgPHd0
Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybEZvcm1EYXRhU3Ry
ZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybEZvcm1EYXRh
U3RyZWFtLmgKaW5kZXggYzhlZjMzM2UwZDhjMGUwMjhlY2Q4YTQ2ZDgyNmI5MDY3MWEwMGUwYy4u
MDllN2ZkYmI0YTJjZmFiNGI5MDczMmYwNjExNGJlMDgxMTNiYjUxZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxGb3JtRGF0YVN0cmVhbS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRm9ybURhdGFTdHJl
YW0uaApAQCAtMjYsOCArMjYsOCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkZpbGVT
eXN0ZW0uaCIKICNpbmNsdWRlICJGb3JtRGF0YS5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVt
Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oCmlu
ZGV4IGZkYzRiNTkwYzE0MmNmNmRjOTgwNzdkOWY3NWQ3ODY1NjM2MTk2OWQuLjkzY2E2MTAzZmU2
M2Q1ZmYwMzEwNTVjODI1ZDgwMjgyNzY0YWVkYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oCkBAIC0zMiwxMCArMzIsMTAgQEAK
ICNpbmNsdWRlICJDdXJsUmVxdWVzdFNjaGVkdWxlckNsaWVudC5oIgogI2luY2x1ZGUgIkN1cmxS
ZXNwb25zZS5oIgogI2luY2x1ZGUgIkN1cmxTU0xWZXJpZmllci5oIgotI2luY2x1ZGUgIkZpbGVT
eXN0ZW0uaCIKICNpbmNsdWRlICJOZXR3b3JrTG9hZE1ldHJpY3MuaCIKICNpbmNsdWRlICJQcm90
ZWN0aW9uU3BhY2UuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKKyNpbmNsdWRlIDx3
dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9NZXNzYWdlUXVldWUuaD4KICNpbmNsdWRl
IDx3dGYvTW9ub3RvbmljVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbkN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCmluZGV4IGEzNDJlYzVmMGE1NTIxMWFiNzM0
N2U0MTEzZTMxNzI1YWM0MGIyZmQuLjA1YjU2NzIzMmJiZDY2ZjBiZDA3MWRkYjhhMGYwY2RhZmY2
ZWZhYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAKQEAgLTMzLDEwICsz
Myw5IEBACiAjaW5jbHVkZSAiQ29va2llSmFyREIuaCIKICNpbmNsdWRlICJDb29raWVSZXF1ZXN0
SGVhZGVyRmllbGRQcm94eS5oIgogI2luY2x1ZGUgIkN1cmxDb250ZXh0LmgiCi0jaW5jbHVkZSAi
RmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAi
UmVzb3VyY2VIYW5kbGUuaCIKLQorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVk
ZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNp
bmNsdWRlIDx3dGYvVVJMLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCmluZGV4IGU1MWU3YWJmMGEw
NTVhMDhkOGY5NThmNWIxZWYxY2EyNjRhOGI3MjYuLjdiZTAwYWQzNGI4ZTU5ODgyZGUwZjUxM2I2
YzJkZGY5MDExZjk5ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCkBAIC0zOCw3ICszOCw2IEBA
CiAjaW5jbHVkZSAiQ3VybENhY2hlTWFuYWdlci5oIgogI2luY2x1ZGUgIkN1cmxDb250ZXh0Lmgi
CiAjaW5jbHVkZSAiQ3VybFJlcXVlc3QuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5j
bHVkZSAiSFRUUFBhcnNlcnMuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0
d29ya1N0b3JhZ2VTZXNzaW9uLmgiCkBAIC00OCw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiU3luY2hy
b25vdXNMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKICNpbmNsdWRl
IDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9CbG9iRGF0YUZpbGVS
ZWZlcmVuY2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9CbG9i
RGF0YUZpbGVSZWZlcmVuY2VNYWMubW0KaW5kZXggZmNmNTVkNzZlYTQ1ZWJiMDY3MDQzZWNkZmM4
Y2YwOGNjOTI0NmEyOS4uYjY5MjkyMGIyMWZjNjYzOWQ1NzQ1ZDFjMDQ0ZThiNzg3ODIzNTBkMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQmxvYkRhdGFG
aWxlUmVmZXJlbmNlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZU1hYy5tbQpAQCAtMjgsOCArMjgsOCBAQAogCiAjaWYg
RU5BQkxFKEZJTEVfUkVQTEFDRU1FTlQpCiAKLSNpbmNsdWRlICJGaWxlTWV0YWRhdGEuaCIKLSNp
bmNsdWRlICJGaWxlU3lzdGVtLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVNZXRhZGF0YS5oPgorI2lu
Y2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL1NvZnRMaW5raW5nLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCmluZGV4
IDYzNzM0YzY3NGM1MmVlOTVkYzZjOWU0MjFjNDY2MGY0MTg0MDBiYWEuLjA4MTVlYTY4OGU3NjY5
MjdlNjYzZDQwNTYxNDlkYmQzNjhlNjQ2Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCkBAIC0z
Miw3ICszMiw2IEBACiAjaWYgVVNFKFNPVVApCiAKICNpbmNsdWRlICJDcmVkZW50aWFsU3RvcmFn
ZS5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJHVW5pcXVlUHRyU291cC5o
IgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5o
IgpAQCAtNTcsNiArNTYsNyBAQAogI2luY2x1ZGUgPHVuaXN0ZC5oPgogI2VuZGlmCiAjaW5jbHVk
ZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4K
ICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvUnVuTG9v
cFNvdXJjZVByaW9yaXR5Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vz
c2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdv
cmtTZXNzaW9uLmNwcAppbmRleCAzNDNmYWViOWZlYjIxOTRjY2MzZWY3NzlkNzdkM2Y2YjRkMWVk
Yzg3Li5iOTY3Nzk1OTgwZWU4ZmE0Yzk5NTAwZmZkZjM0YjQyMDJlYjJhMmRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdv
cmtTZXNzaW9uLmNwcApAQCAtMzAsMTMgKzMwLDEzIEBACiAjaW5jbHVkZSAiU291cE5ldHdvcmtT
ZXNzaW9uLmgiCiAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgotI2luY2x1
ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJHVW5pcXVlUHRyU291cC5oIgogI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKICNpbmNsdWRlICJTb3VwTmV0d29ya1Byb3h5U2V0dGluZ3MuaCIKICNpbmNs
dWRlIDxnbGliL2dzdGRpby5oPgogI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgogI2luY2x1ZGUg
PHBhbC9jcnlwdG8vQ3J5cHRvRGlnZXN0Lmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4K
ICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDk0ODUxMzUyNTE4ZDYwNmJlYTI1ZWVlYTMzNjE4NTI4MDMzNGNmY2MuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ5MyAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUg
b2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKLQotI2luY2x1
ZGUgIkZpbGVNZXRhZGF0YS5oIgotI2luY2x1ZGUgPGRpcmVudC5oPgotI2luY2x1ZGUgPGVycm5v
Lmg+Ci0jaW5jbHVkZSA8ZmNudGwuaD4KLSNpbmNsdWRlIDxmbm1hdGNoLmg+Ci0jaW5jbHVkZSA8
bGliZ2VuLmg+Ci0jaW5jbHVkZSA8c3RkaW8uaD4KLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgotI2lu
Y2x1ZGUgPHN5cy9zdGF0dmZzLmg+Ci0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaW5jbHVkZSA8
dW5pc3RkLmg+Ci0jaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgotI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVz
cGFjZSBGaWxlU3lzdGVtIHsKLQotYm9vbCBmaWxlRXhpc3RzKGNvbnN0IFN0cmluZyYgcGF0aCkK
LXsKLSAgICBpZiAocGF0aC5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
Q1N0cmluZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKLQotICAgIGlm
ICghZnNSZXAuZGF0YSgpIHx8IGZzUmVwLmRhdGEoKVswXSA9PSAnXDAnKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gYWNjZXNzKGZzUmVwLmRhdGEoKSwgRl9PSykgIT0gLTE7
Ci19Ci0KLWJvb2wgZGVsZXRlRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgQ1N0cmlu
ZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKLQotICAgIGlmICghZnNS
ZXAuZGF0YSgpIHx8IGZzUmVwLmRhdGEoKVswXSA9PSAnXDAnKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICAvLyB1bmxpbmsoLi4uKSByZXR1cm5zIDAgb24gc3VjY2Vzc2Z1bCBkZWxldGlv
biBvZiB0aGUgcGF0aCBhbmQgbm9uLXplcm8gaW4gYW55IG90aGVyIGNhc2UgKGluY2x1ZGluZyBp
bnZhbGlkIHBlcm1pc3Npb25zIG9yIG5vbi1leGlzdGVudCBmaWxlKQotICAgIHJldHVybiAhdW5s
aW5rKGZzUmVwLmRhdGEoKSk7Ci19Ci0KLVBsYXRmb3JtRmlsZUhhbmRsZSBvcGVuRmlsZShjb25z
dCBTdHJpbmcmIHBhdGgsIEZpbGVPcGVuTW9kZSBtb2RlKQotewotICAgIENTdHJpbmcgZnNSZXAg
PSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7Ci0KLSAgICBpZiAoZnNSZXAuaXNOdWxs
KCkpCi0gICAgICAgIHJldHVybiBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOwotCi0gICAgaW50
IHBsYXRmb3JtRmxhZyA9IDA7Ci0gICAgaWYgKG1vZGUgPT0gRmlsZU9wZW5Nb2RlOjpSZWFkKQot
ICAgICAgICBwbGF0Zm9ybUZsYWcgfD0gT19SRE9OTFk7Ci0gICAgZWxzZSBpZiAobW9kZSA9PSBG
aWxlT3Blbk1vZGU6OldyaXRlKQotICAgICAgICBwbGF0Zm9ybUZsYWcgfD0gKE9fV1JPTkxZIHwg
T19DUkVBVCB8IE9fVFJVTkMpOwotI2lmIE9TKERBUldJTikKLSAgICBlbHNlIGlmIChtb2RlID09
IEZpbGVPcGVuTW9kZTo6RXZlbnRzT25seSkKLSAgICAgICAgcGxhdGZvcm1GbGFnIHw9IE9fRVZU
T05MWTsKLSNlbmRpZgotCi0gICAgcmV0dXJuIG9wZW4oZnNSZXAuZGF0YSgpLCBwbGF0Zm9ybUZs
YWcsIDA2NjYpOwotfQotCi12b2lkIGNsb3NlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRs
ZSkKLXsKLSAgICBpZiAoaXNIYW5kbGVWYWxpZChoYW5kbGUpKSB7Ci0gICAgICAgIGNsb3NlKGhh
bmRsZSk7Ci0gICAgICAgIGhhbmRsZSA9IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7Ci0gICAg
fQotfQotCi1sb25nIGxvbmcgc2Vla0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgbG9u
ZyBsb25nIG9mZnNldCwgRmlsZVNlZWtPcmlnaW4gb3JpZ2luKQotewotICAgIGludCB3aGVuY2Ug
PSBTRUVLX1NFVDsKLSAgICBzd2l0Y2ggKG9yaWdpbikgewotICAgIGNhc2UgRmlsZVNlZWtPcmln
aW46OkJlZ2lubmluZzoKLSAgICAgICAgd2hlbmNlID0gU0VFS19TRVQ7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgRmlsZVNlZWtPcmlnaW46OkN1cnJlbnQ6Ci0gICAgICAgIHdoZW5jZSA9IFNF
RUtfQ1VSOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEZpbGVTZWVrT3JpZ2luOjpFbmQ6Ci0g
ICAgICAgIHdoZW5jZSA9IFNFRUtfRU5EOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0Ogot
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci0gICAgcmV0dXJuIHN0YXRpY19j
YXN0PGxvbmcgbG9uZz4obHNlZWsoaGFuZGxlLCBvZmZzZXQsIHdoZW5jZSkpOwotfQotCi1ib29s
IHRydW5jYXRlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0
KQotewotICAgIC8vIGZ0cnVuY2F0ZSByZXR1cm5zIDAgdG8gaW5kaWNhdGUgdGhlIHN1Y2Nlc3Mu
Ci0gICAgcmV0dXJuICFmdHJ1bmNhdGUoaGFuZGxlLCBvZmZzZXQpOwotfQotCi1pbnQgd3JpdGVU
b0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxl
bmd0aCkKLXsKLSAgICBkbyB7Ci0gICAgICAgIGludCBieXRlc1dyaXR0ZW4gPSB3cml0ZShoYW5k
bGUsIGRhdGEsIHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSk7Ci0gICAgICAgIGlmIChieXRl
c1dyaXR0ZW4gPj0gMCkKLSAgICAgICAgICAgIHJldHVybiBieXRlc1dyaXR0ZW47Ci0gICAgfSB3
aGlsZSAoZXJybm8gPT0gRUlOVFIpOwotICAgIHJldHVybiAtMTsKLX0KLQotaW50IHJlYWRGcm9t
RmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQot
ewotICAgIGRvIHsKLSAgICAgICAgaW50IGJ5dGVzUmVhZCA9IHJlYWQoaGFuZGxlLCBkYXRhLCBz
dGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkpOwotICAgICAgICBpZiAoYnl0ZXNSZWFkID49IDAp
Ci0gICAgICAgICAgICByZXR1cm4gYnl0ZXNSZWFkOwotICAgIH0gd2hpbGUgKGVycm5vID09IEVJ
TlRSKTsKLSAgICByZXR1cm4gLTE7Ci19Ci0KLSNpZiBVU0UoRklMRV9MT0NLKQotYm9vbCBsb2Nr
RmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBPcHRpb25TZXQ8RmlsZUxvY2tNb2RlPiBs
b2NrTW9kZSkKLXsKLSAgICBDT01QSUxFX0FTU0VSVChMT0NLX1NIID09IFdURjo6ZW51bVRvVW5k
ZXJseWluZ1R5cGUoRmlsZUxvY2tNb2RlOjpTaGFyZWQpLCBMb2NrU2hhcmVkRW5jb2RpbmdJc0Fz
RXhwZWN0ZWQpOwotICAgIENPTVBJTEVfQVNTRVJUKExPQ0tfRVggPT0gV1RGOjplbnVtVG9VbmRl
cmx5aW5nVHlwZShGaWxlTG9ja01vZGU6OkV4Y2x1c2l2ZSksIExvY2tFeGNsdXNpdmVFbmNvZGlu
Z0lzQXNFeHBlY3RlZCk7Ci0gICAgQ09NUElMRV9BU1NFUlQoTE9DS19OQiA9PSBXVEY6OmVudW1U
b1VuZGVybHlpbmdUeXBlKEZpbGVMb2NrTW9kZTo6Tm9uYmxvY2tpbmcpLCBMb2NrTm9uYmxvY2tp
bmdFbmNvZGluZ0lzQXNFeHBlY3RlZCk7Ci0gICAgaW50IHJlc3VsdCA9IGZsb2NrKGhhbmRsZSwg
bG9ja01vZGUudG9SYXcoKSk7Ci0gICAgcmV0dXJuIChyZXN1bHQgIT0gLTEpOwotfQotCi1ib29s
IHVubG9ja0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSkKLXsKLSAgICBpbnQgcmVzdWx0
ID0gZmxvY2soaGFuZGxlLCBMT0NLX1VOKTsKLSAgICByZXR1cm4gKHJlc3VsdCAhPSAtMSk7Ci19
Ci0jZW5kaWYKLQotI2lmICFQTEFURk9STShNQUMpCi1ib29sIGRlbGV0ZUVtcHR5RGlyZWN0b3J5
KGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKHBhdGgpOwotCi0gICAgaWYgKCFmc1JlcC5kYXRhKCkgfHwgZnNSZXAuZGF0
YSgpWzBdID09ICdcMCcpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIHJtZGlyKC4u
LikgcmV0dXJucyAwIG9uIHN1Y2Nlc3NmdWwgZGVsZXRpb24gb2YgdGhlIHBhdGggYW5kIG5vbi16
ZXJvIGluIGFueSBvdGhlciBjYXNlIChpbmNsdWRpbmcgaW52YWxpZCBwZXJtaXNzaW9ucyBvciBu
b24tZXhpc3RlbnQgZmlsZSkKLSAgICByZXR1cm4gIXJtZGlyKGZzUmVwLmRhdGEoKSk7Ci19Ci0j
ZW5kaWYKLQotYm9vbCBnZXRGaWxlU2l6ZShjb25zdCBTdHJpbmcmIHBhdGgsIGxvbmcgbG9uZyYg
cmVzdWx0KQotewotICAgIENTdHJpbmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
cGF0aCk7Ci0KLSAgICBpZiAoIWZzUmVwLmRhdGEoKSB8fCBmc1JlcC5kYXRhKClbMF0gPT0gJ1ww
JykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgc3RydWN0IHN0YXQgZmlsZUluZm87Ci0K
LSAgICBpZiAoc3RhdChmc1JlcC5kYXRhKCksICZmaWxlSW5mbykpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIHJlc3VsdCA9IGZpbGVJbmZvLnN0X3NpemU7Ci0gICAgcmV0dXJuIHRydWU7
Ci19Ci0KLWJvb2wgZ2V0RmlsZVNpemUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgbG9uZyBs
b25nJiByZXN1bHQpCi17Ci0gICAgc3RydWN0IHN0YXQgZmlsZUluZm87Ci0gICAgaWYgKGZzdGF0
KGhhbmRsZSwgJmZpbGVJbmZvKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmVzdWx0
ID0gZmlsZUluZm8uc3Rfc2l6ZTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotT3B0aW9uYWw8V2Fs
bFRpbWU+IGdldEZpbGVDcmVhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoKQotewotI2lmIE9T
KERBUldJTikgfHwgT1MoT1BFTkJTRCkgfHwgT1MoTkVUQlNEKSB8fCBPUyhGUkVFQlNEKQotICAg
IENTdHJpbmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7Ci0KLSAgICBp
ZiAoIWZzUmVwLmRhdGEoKSB8fCBmc1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIHN0cnVjdCBzdGF0IGZpbGVJbmZvOwotCi0gICAgaWYg
KHN0YXQoZnNSZXAuZGF0YSgpLCAmZmlsZUluZm8pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwotCi0gICAgcmV0dXJuIFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhmaWxlSW5mby5zdF9i
aXJ0aHRpbWUpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0ocGF0aCk7Ci0gICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKLSNlbmRpZgotfQotCi1PcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZU1vZGlm
aWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIENTdHJpbmcgZnNSZXAgPSBm
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7Ci0KLSAgICBpZiAoIWZzUmVwLmRhdGEoKSB8
fCBmc1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
LQotICAgIHN0cnVjdCBzdGF0IGZpbGVJbmZvOwotCi0gICAgaWYgKHN0YXQoZnNSZXAuZGF0YSgp
LCAmZmlsZUluZm8pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgcmV0dXJu
IFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhmaWxlSW5mby5zdF9tdGltZSk7Ci19Ci0KLXN0YXRp
YyBGaWxlTWV0YWRhdGE6OlR5cGUgdG9GaWxlTWV0YXRhVHlwZShzdHJ1Y3Qgc3RhdCBmaWxlSW5m
bykKLXsKLSAgICBpZiAoU19JU0RJUihmaWxlSW5mby5zdF9tb2RlKSkKLSAgICAgICAgcmV0dXJu
IEZpbGVNZXRhZGF0YTo6VHlwZTo6RGlyZWN0b3J5OwotICAgIGlmIChTX0lTTE5LKGZpbGVJbmZv
LnN0X21vZGUpKQotICAgICAgICByZXR1cm4gRmlsZU1ldGFkYXRhOjpUeXBlOjpTeW1ib2xpY0xp
bms7Ci0gICAgcmV0dXJuIEZpbGVNZXRhZGF0YTo6VHlwZTo6RmlsZTsKLX0KLQotc3RhdGljIE9w
dGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhVXNpbmdGdW5jdGlvbihjb25zdCBTdHJp
bmcmIHBhdGgsIGludCAoKnN0YXRGdW5jKShjb25zdCBjaGFyKiwgc3RydWN0IHN0YXQqKSkKLXsK
LSAgICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwotCi0g
ICAgaWYgKCFmc1JlcC5kYXRhKCkgfHwgZnNSZXAuZGF0YSgpWzBdID09ICdcMCcpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBzdHJ1Y3Qgc3RhdCBmaWxlSW5mbzsKLSAgICBp
ZiAoc3RhdEZ1bmMoZnNSZXAuZGF0YSgpLCAmZmlsZUluZm8pKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwotCi0gICAgU3RyaW5nIGZpbGVuYW1lID0gcGF0aEdldEZpbGVOYW1lKHBhdGgp
OwotICAgIGJvb2wgaXNIaWRkZW4gPSAhZmlsZW5hbWUuaXNFbXB0eSgpICYmIGZpbGVuYW1lWzBd
ID09ICcuJzsKLSAgICByZXR1cm4gRmlsZU1ldGFkYXRhIHsKLSAgICAgICAgV2FsbFRpbWU6OmZy
b21SYXdTZWNvbmRzKGZpbGVJbmZvLnN0X210aW1lKSwKLSAgICAgICAgZmlsZUluZm8uc3Rfc2l6
ZSwKLSAgICAgICAgaXNIaWRkZW4sCi0gICAgICAgIHRvRmlsZU1ldGF0YVR5cGUoZmlsZUluZm8p
Ci0gICAgfTsKLX0KLQotT3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGEoY29uc3Qg
U3RyaW5nJiBwYXRoKQotewotICAgIHJldHVybiBmaWxlTWV0YWRhdGFVc2luZ0Z1bmN0aW9uKHBh
dGgsICZsc3RhdCk7Ci19Ci0KLU9wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhRm9s
bG93aW5nU3ltbGlua3MoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIHJldHVybiBmaWxlTWV0
YWRhdGFVc2luZ0Z1bmN0aW9uKHBhdGgsICZzdGF0KTsKLX0KLQotYm9vbCBjcmVhdGVTeW1ib2xp
Y0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGljTGlu
a1BhdGgpCi17Ci0gICAgQ1N0cmluZyB0YXJnZXRQYXRoRlNSZXAgPSBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24odGFyZ2V0UGF0aCk7Ci0gICAgaWYgKCF0YXJnZXRQYXRoRlNSZXAuZGF0YSgpIHx8
IHRhcmdldFBhdGhGU1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgQ1N0cmluZyBzeW1ib2xpY0xpbmtQYXRoRlNSZXAgPSBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oc3ltYm9saWNMaW5rUGF0aCk7Ci0gICAgaWYgKCFzeW1ib2xpY0xpbmtQYXRoRlNS
ZXAuZGF0YSgpIHx8IHN5bWJvbGljTGlua1BhdGhGU1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuICFzeW1saW5rKHRhcmdldFBhdGhGU1Jl
cC5kYXRhKCksIHN5bWJvbGljTGlua1BhdGhGU1JlcC5kYXRhKCkpOwotfQotCi1TdHJpbmcgcGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBj
b21wb25lbnQpCi17Ci0gICAgaWYgKHBhdGguZW5kc1dpdGgoJy8nKSkKLSAgICAgICAgcmV0dXJu
IHBhdGggKyBjb21wb25lbnQ7Ci0gICAgcmV0dXJuIHBhdGggKyAiLyIgKyBjb21wb25lbnQ7Ci19
Ci0KLVN0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKFN0cmluZ1ZpZXcgcGF0aCwgY29u
c3QgVmVjdG9yPFN0cmluZ1ZpZXc+JiBjb21wb25lbnRzKQotewotICAgIFN0cmluZ0J1aWxkZXIg
YnVpbGRlcjsKLSAgICBidWlsZGVyLmFwcGVuZChwYXRoKTsKLSAgICBmb3IgKGF1dG8mIGNvbXBv
bmVudCA6IGNvbXBvbmVudHMpIHsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoJy8nKTsKLSAgICAg
ICAgYnVpbGRlci5hcHBlbmQoY29tcG9uZW50KTsKLSAgICB9Ci0gICAgcmV0dXJuIGJ1aWxkZXIu
dG9TdHJpbmcoKTsKLX0KLQotYm9vbCBtYWtlQWxsRGlyZWN0b3JpZXMoY29uc3QgU3RyaW5nJiBw
YXRoKQotewotICAgIENTdHJpbmcgZnVsbFBhdGggPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
cGF0aCk7Ci0gICAgaWYgKCFhY2Nlc3MoZnVsbFBhdGguZGF0YSgpLCBGX09LKSkKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0KLSAgICBjaGFyKiBwID0gZnVsbFBhdGgubXV0YWJsZURhdGEoKSArIDE7
Ci0gICAgaW50IGxlbmd0aCA9IGZ1bGxQYXRoLmxlbmd0aCgpOwotCi0gICAgaWYocFtsZW5ndGgg
LSAxXSA9PSAnLycpCi0gICAgICAgIHBbbGVuZ3RoIC0gMV0gPSAnXDAnOwotICAgIGZvciAoOyAq
cDsgKytwKQotICAgICAgICBpZiAoKnAgPT0gJy8nKSB7Ci0gICAgICAgICAgICAqcCA9ICdcMCc7
Ci0gICAgICAgICAgICBpZiAoYWNjZXNzKGZ1bGxQYXRoLmRhdGEoKSwgRl9PSykpCi0gICAgICAg
ICAgICAgICAgaWYgKG1rZGlyKGZ1bGxQYXRoLmRhdGEoKSwgU19JUldYVSkpCi0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICpwID0gJy8nOwotICAgICAgICB9
Ci0gICAgaWYgKGFjY2VzcyhmdWxsUGF0aC5kYXRhKCksIEZfT0spKQotICAgICAgICBpZiAobWtk
aXIoZnVsbFBhdGguZGF0YSgpLCBTX0lSV1hVKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIHJldHVybiB0cnVlOwotfQotCi1TdHJpbmcgcGF0aEdldEZpbGVOYW1lKGNvbnN0IFN0
cmluZyYgcGF0aCkKLXsKLSAgICByZXR1cm4gcGF0aC5zdWJzdHJpbmcocGF0aC5yZXZlcnNlRmlu
ZCgnLycpICsgMSk7Ci19Ci0KLVN0cmluZyBkaXJlY3RvcnlOYW1lKGNvbnN0IFN0cmluZyYgcGF0
aCkKLXsKLSAgICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgp
OwotCi0gICAgaWYgKCFmc1JlcC5kYXRhKCkgfHwgZnNSZXAuZGF0YSgpWzBdID09ICdcMCcpCi0g
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGRp
cm5hbWUoZnNSZXAubXV0YWJsZURhdGEoKSkpOwotfQotCi1WZWN0b3I8U3RyaW5nPiBsaXN0RGly
ZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBmaWx0ZXIpCi17Ci0gICAg
VmVjdG9yPFN0cmluZz4gZW50cmllczsKLSAgICBDU3RyaW5nIGNwYXRoID0gZmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKHBhdGgpOwotICAgIENTdHJpbmcgY2ZpbHRlciA9IGZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihmaWx0ZXIpOwotICAgIERJUiogZGlyID0gb3BlbmRpcihjcGF0aC5kYXRhKCkp
OwotICAgIGlmIChkaXIpIHsKLSAgICAgICAgc3RydWN0IGRpcmVudCogZHA7Ci0gICAgICAgIHdo
aWxlICgoZHAgPSByZWFkZGlyKGRpcikpKSB7Ci0gICAgICAgICAgICBjb25zdCBjaGFyKiBuYW1l
ID0gZHAtPmRfbmFtZTsKLSAgICAgICAgICAgIGlmICghc3RyY21wKG5hbWUsICIuIikgfHwgIXN0
cmNtcChuYW1lLCAiLi4iKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAg
IGlmIChmbm1hdGNoKGNmaWx0ZXIuZGF0YSgpLCBuYW1lLCAwKSkKLSAgICAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgICAgIGNoYXIgZmlsZVBhdGhbUEFUSF9NQVhdOwotICAgICAgICAg
ICAgaWYgKHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKGZpbGVQYXRoKSAtIDEpIDwgc25wcmludGYo
ZmlsZVBhdGgsIHNpemVvZihmaWxlUGF0aCksICIlcy8lcyIsIGNwYXRoLmRhdGEoKSwgbmFtZSkp
Ci0gICAgICAgICAgICAgICAgY29udGludWU7IC8vIGJ1ZmZlciBvdmVyZmxvdwotCi0gICAgICAg
ICAgICBhdXRvIHN0cmluZyA9IHN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmls
ZVBhdGgpOwotCi0gICAgICAgICAgICAvLyBTb21lIGZpbGUgc3lzdGVtIHJlcHJlc2VudGF0aW9u
cyBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgYXMgYSBVVEYtMTYgc3RyaW5nLAotICAgICAgICAgICAg
Ly8gc28gdGhpcyBzdHJpbmcgbWlnaHQgYmUgbnVsbC4KLSAgICAgICAgICAgIGlmICghc3RyaW5n
LmlzTnVsbCgpKQotICAgICAgICAgICAgICAgIGVudHJpZXMuYXBwZW5kKFdURk1vdmUoc3RyaW5n
KSk7Ci0gICAgICAgIH0KLSAgICAgICAgY2xvc2VkaXIoZGlyKTsKLSAgICB9Ci0gICAgcmV0dXJu
IGVudHJpZXM7Ci19Ci0KLSNpZiAhUExBVEZPUk0oQ09DT0EpCi1TdHJpbmcgc3RyaW5nRnJvbUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBjaGFyKiBwYXRoKQotewotICAgIGlmICghcGF0
aCkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVU
RjgocGF0aCk7Ci19Ci0KLUNTdHJpbmcgZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0
cmluZyYgcGF0aCkKLXsKLSAgICByZXR1cm4gcGF0aC51dGY4KCk7Ci19Ci0KLWJvb2wgbW92ZUZp
bGUoY29uc3QgU3RyaW5nJiBvbGRQYXRoLCBjb25zdCBTdHJpbmcmIG5ld1BhdGgpCi17Ci0gICAg
YXV0byBvbGRGaWxlbmFtZSA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihvbGRQYXRoKTsKLSAg
ICBpZiAob2xkRmlsZW5hbWUuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IGF1dG8gbmV3RmlsZW5hbWUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24obmV3UGF0aCk7Ci0g
ICAgaWYgKG5ld0ZpbGVuYW1lLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICByZXR1cm4gcmVuYW1lKG9sZEZpbGVuYW1lLmRhdGEoKSwgbmV3RmlsZW5hbWUuZGF0YSgpKSAh
PSAtMTsKLX0KLQotYm9vbCBnZXRWb2x1bWVGcmVlU3BhY2UoY29uc3QgU3RyaW5nJiBwYXRoLCB1
aW50NjRfdCYgZnJlZVNwYWNlKQotewotICAgIHN0cnVjdCBzdGF0dmZzIGZpbGVTeXN0ZW1TdGF0
OwotICAgIGlmIChzdGF0dmZzKGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCks
ICZmaWxlU3lzdGVtU3RhdCkpIHsKLSAgICAgICAgZnJlZVNwYWNlID0gZmlsZVN5c3RlbVN0YXQu
Zl9iYXZhaWwgKiBmaWxlU3lzdGVtU3RhdC5mX2Zyc2l6ZTsKLSAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLSNlbmRpZgotCi0jaWYgIU9TKERBUldJTikK
LVN0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1G
aWxlSGFuZGxlJiBoYW5kbGUpCi17Ci0gICAgY2hhciBidWZmZXJbUEFUSF9NQVhdOwotICAgIGNv
bnN0IGNoYXIqIHRtcERpciA9IGdldGVudigiVE1QRElSIik7Ci0KLSAgICBpZiAoIXRtcERpcikK
LSAgICAgICAgdG1wRGlyID0gIi90bXAiOwotCi0gICAgaWYgKHNucHJpbnRmKGJ1ZmZlciwgUEFU
SF9NQVgsICIlcy8lc1hYWFhYWCIsIHRtcERpciwgcHJlZml4LnV0ZjgoKS5kYXRhKCkpID49IFBB
VEhfTUFYKQotICAgICAgICBnb3RvIGVuZDsKLQotICAgIGhhbmRsZSA9IG1rc3RlbXAoYnVmZmVy
KTsKLSAgICBpZiAoaGFuZGxlIDwgMCkKLSAgICAgICAgZ290byBlbmQ7Ci0KLSAgICByZXR1cm4g
U3RyaW5nOjpmcm9tVVRGOChidWZmZXIpOwotCi1lbmQ6Ci0gICAgaGFuZGxlID0gaW52YWxpZFBs
YXRmb3JtRmlsZUhhbmRsZTsKLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0jZW5kaWYKLQotYm9v
bCBoYXJkTGlua09yQ29weUZpbGUoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYg
ZGVzdGluYXRpb24pCi17Ci0gICAgaWYgKHNvdXJjZS5pc0VtcHR5KCkgfHwgZGVzdGluYXRpb24u
aXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBDU3RyaW5nIGZzU291cmNl
ID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHNvdXJjZSk7Ci0gICAgaWYgKCFmc1NvdXJjZS5k
YXRhKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIENTdHJpbmcgZnNEZXN0aW5hdGlv
biA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihkZXN0aW5hdGlvbik7Ci0gICAgaWYgKCFmc0Rl
c3RpbmF0aW9uLmRhdGEoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFsaW5r
KGZzU291cmNlLmRhdGEoKSwgZnNEZXN0aW5hdGlvbi5kYXRhKCkpKQotICAgICAgICByZXR1cm4g
dHJ1ZTsKLQotICAgIC8vIEhhcmQgbGluayBmYWlsZWQuIFBlcmZvcm0gYSBjb3B5IGluc3RlYWQu
Ci0gICAgYXV0byBoYW5kbGUgPSBvcGVuKGZzRGVzdGluYXRpb24uZGF0YSgpLCBPX1dST05MWSB8
IE9fQ1JFQVQgfCBPX0VYQ0wsIDA2NjYpOwotICAgIGlmIChoYW5kbGUgPT0gLTEpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgIGJvb2wgYXBwZW5kUmVzdWx0ID0gYXBwZW5kRmlsZUNvbnRl
bnRzVG9GaWxlSGFuZGxlKHNvdXJjZSwgaGFuZGxlKTsKLSAgICBjbG9zZShoYW5kbGUpOwotCi0g
ICAgLy8gSWYgdGhlIGNvcHkgZmFpbGVkLCBkZWxldGUgdGhlIHVudXNhYmxlIGZpbGUuCi0gICAg
aWYgKCFhcHBlbmRSZXN1bHQpCi0gICAgICAgIHVubGluayhmc0Rlc3RpbmF0aW9uLmRhdGEoKSk7
Ci0KLSAgICByZXR1cm4gYXBwZW5kUmVzdWx0OwotfQotCi1PcHRpb25hbDxpbnQzMl90PiBnZXRG
aWxlRGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQotewotICAgIHN0cnVjdCBzdGF0IGZp
bGVTdGF0OwotICAgIGlmIChzdGF0KGZzRmlsZS5kYXRhKCksICZmaWxlU3RhdCkgPT0gLTEpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICByZXR1cm4gZmlsZVN0YXQuc3RfZGV2
OwotfQotCi1TdHJpbmcgcmVhbFBhdGgoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKLXsKLSAgICBD
U3RyaW5nIGZzUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVQYXRoKTsKLSAgICBj
aGFyIHJlc29sdmVkTmFtZVtQQVRIX01BWF07Ci0gICAgY29uc3QgY2hhciogcmVzdWx0ID0gcmVh
bHBhdGgoZnNSZXAuZGF0YSgpLCByZXNvbHZlZE5hbWUpOwotICAgIHJldHVybiByZXN1bHQgPyBT
dHJpbmc6OmZyb21VVEY4KHJlc3VsdCkgOiBmaWxlUGF0aDsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
RmlsZVN5c3RlbQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVyUE9TSVguY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVyUE9TSVguY3BwCmluZGV4IDUxMzM3NWQyNDVl
ZjQ1YzE5NmE4NTQ2MTVjZTcwYjc4YTkwY2VjZmYuLjhlZDU3MTc0Nzc4Y2I3YmRhZGNhMzY1MTdm
ZDc5NDQ1NzM4YzUyZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4
L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3Np
eC9TaGFyZWRCdWZmZXJQT1NJWC5jcHAKQEAgLTI2LDExICsyNiwxMCBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogCi0jaW5jbHVkZSAiRmlsZVN5c3Rl
bS5oIgotCiAjaW5jbHVkZSA8ZmNudGwuaD4KICNpbmNsdWRlIDxzeXMvc3RhdC5oPgogI2luY2x1
ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5jcHAKaW5kZXggOTBjMjBjN2JjZTZh
NjdiNjdkNTNkNWM0MDUzNzc2YmYxNGM3ZTVlNS4uMzY0YmZmNzEwNzQ5Nzg5NmY3YjFkNzU3YTdk
OWE1ZmMzYWQzZjY0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NR
TGl0ZUZpbGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxp
dGVGaWxlU3lzdGVtLmNwcApAQCAtMzEsMTAgKzMxLDEwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiU1FMaXRlRmlsZVN5c3RlbS5oIgogCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5o
IgogI2luY2x1ZGUgIlNRTGl0ZURhdGFiYXNlLmgiCiAjaW5jbHVkZSAiU1FMaXRlU3RhdGVtZW50
LmgiCiAjaW5jbHVkZSA8c3FsaXRlMy5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAK
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2luY2x1ZGUgPHBhbC9zcGkvaW9zL1NRTGl0ZTNT
UEkuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaHlwaGVuL0h5
cGhlbmF0aW9uTGliSHlwaGVuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaHlw
aGVuL0h5cGhlbmF0aW9uTGliSHlwaGVuLmNwcAppbmRleCAyZDdiNjZkOTM3OTA1ZGNjMjJmNGEx
M2U5NWEwYWYwNmJiNDhiN2FmLi41ZWViOWJmYTc0MDBmNzIxNWMwMjZjNTUyZDgyYWEzOGE3NjNm
OTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBo
ZW5hdGlvbkxpYkh5cGhlbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9o
eXBoZW4vSHlwaGVuYXRpb25MaWJIeXBoZW4uY3BwCkBAIC0yOSwxMCArMjksMTAgQEAKIAogI2lm
IFVTRShMSUJIWVBIRU4pCiAKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSA8aHlw
aGVuLmg+CiAjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUg
PHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvVGlueUxSVUNhY2hlLmg+CkBAIC0y
MjQsNyArMjI0LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJlZlB0cjxXZWJDb3JlOjpIeXBo
ZW5hdGlvbkRpY3Rpb25hcnk+IGNyZWF0ZVZhbHVlRm9yS2V5KGNvbnN0IEF0b21pY1N0cmluZyYg
ZGljdGlvbmFyeVBhdGgpCiAgICAgewotICAgICAgICByZXR1cm4gV2ViQ29yZTo6SHlwaGVuYXRp
b25EaWN0aW9uYXJ5OjpjcmVhdGUoV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGRpY3Rpb25hcnlQYXRoLnN0cmluZygpKSk7CisgICAgICAgIHJldHVybiBXZWJD
b3JlOjpIeXBoZW5hdGlvbkRpY3Rpb25hcnk6OmNyZWF0ZShGaWxlU3lzdGVtOjpmaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oZGljdGlvbmFyeVBhdGguc3RyaW5nKCkpKTsKICAgICB9CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdpbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdpbi5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiNzAyY2IwMTIwYWJiZjI1ODUyOWZhZjk0MzEwZGRmZmZk
ZjYwODQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsNTg5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3Jh
LCBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKLSAqIDMuICBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YK
LSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgot
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRmlsZVN5
c3RlbS5oIgotCi0jaW5jbHVkZSAiRmlsZU1ldGFkYXRhLmgiCi0jaW5jbHVkZSAiTm90SW1wbGVt
ZW50ZWQuaCIKLSNpbmNsdWRlICJQYXRoV2Fsa2VyLmgiCi0jaW5jbHVkZSA8aW8uaD4KLSNpbmNs
dWRlIDxzaGxvYmouaD4KLSNpbmNsdWRlIDxzaGx3YXBpLmg+Ci0jaW5jbHVkZSA8c3lzL3N0YXQu
aD4KLSNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0jaW5jbHVkZSA8d3RmL0NyeXB0b2dyYXBoaWNhbGx5
UmFuZG9tTnVtYmVyLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgotI2lu
Y2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5oPgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLW5hbWVzcGFjZSBGaWxlU3lzdGVtIHsKLQotc3RhdGljIGNvbnN0IFVMT05HTE9O
RyBrU2Vjb25kc0Zyb21GaWxlVGltZVRvVGltZXQgPSAxMTY0NDQ3MzYwMDsKLQotc3RhdGljIGJv
b2wgZ2V0RmluZERhdGEoU3RyaW5nIHBhdGgsIFdJTjMyX0ZJTkRfREFUQVcmIGZpbmREYXRhKQot
ewotICAgIEhBTkRMRSBoYW5kbGUgPSBGaW5kRmlyc3RGaWxlVyhzdHJpbmdUb051bGxUZXJtaW5h
dGVkV0NoYXIocGF0aCkuZGF0YSgpLCAmZmluZERhdGEpOwotICAgIGlmIChoYW5kbGUgPT0gSU5W
QUxJRF9IQU5ETEVfVkFMVUUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBGaW5kQ2xvc2Uo
aGFuZGxlKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotc3RhdGljIGJvb2wgZ2V0RmlsZVNpemVG
cm9tRmluZERhdGEoY29uc3QgV0lOMzJfRklORF9EQVRBVyYgZmluZERhdGEsIGxvbmcgbG9uZyYg
c2l6ZSkKLXsKLSAgICBVTEFSR0VfSU5URUdFUiBmaWxlU2l6ZTsKLSAgICBmaWxlU2l6ZS5IaWdo
UGFydCA9IGZpbmREYXRhLm5GaWxlU2l6ZUhpZ2g7Ci0gICAgZmlsZVNpemUuTG93UGFydCA9IGZp
bmREYXRhLm5GaWxlU2l6ZUxvdzsKLQotICAgIGlmIChmaWxlU2l6ZS5RdWFkUGFydCA+IHN0YXRp
Y19jYXN0PFVMT05HTE9ORz4oc3RkOjpudW1lcmljX2xpbWl0czxsb25nIGxvbmc+OjptYXgoKSkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHNpemUgPSBmaWxlU2l6ZS5RdWFkUGFydDsK
LSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotc3RhdGljIGJvb2wgZ2V0RmlsZVNpemVGcm9tQnlIYW5k
bGVGaWxlSW5mb3JtYXRpb25TdHJ1Y3R1cmUoY29uc3QgQllfSEFORExFX0ZJTEVfSU5GT1JNQVRJ
T04mIGZpbGVJbmZvcm1hdGlvbiwgbG9uZyBsb25nJiBzaXplKQotewotICAgIFVMQVJHRV9JTlRF
R0VSIGZpbGVTaXplOwotICAgIGZpbGVTaXplLkhpZ2hQYXJ0ID0gZmlsZUluZm9ybWF0aW9uLm5G
aWxlU2l6ZUhpZ2g7Ci0gICAgZmlsZVNpemUuTG93UGFydCA9IGZpbGVJbmZvcm1hdGlvbi5uRmls
ZVNpemVMb3c7Ci0KLSAgICBpZiAoZmlsZVNpemUuUXVhZFBhcnQgPiBzdGF0aWNfY2FzdDxVTE9O
R0xPTkc+KHN0ZDo6bnVtZXJpY19saW1pdHM8bG9uZyBsb25nPjo6bWF4KCkpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICBzaXplID0gZmlsZVNpemUuUXVhZFBhcnQ7Ci0gICAgcmV0dXJu
IHRydWU7Ci19Ci0KLXN0YXRpYyB2b2lkIGdldEZpbGVDcmVhdGlvblRpbWVGcm9tRmluZERhdGEo
Y29uc3QgV0lOMzJfRklORF9EQVRBVyYgZmluZERhdGEsIHRpbWVfdCYgdGltZSkKLXsKLSAgICBV
TEFSR0VfSU5URUdFUiBmaWxlVGltZTsKLSAgICBmaWxlVGltZS5IaWdoUGFydCA9IGZpbmREYXRh
LmZ0Q3JlYXRpb25UaW1lLmR3SGlnaERhdGVUaW1lOwotICAgIGZpbGVUaW1lLkxvd1BhcnQgPSBm
aW5kRGF0YS5mdENyZWF0aW9uVGltZS5kd0xvd0RhdGVUaW1lOwotCi0gICAgLy8gSW5mb3JtYXRp
b24gYWJvdXQgY29udmVydGluZyB0aW1lX3QgdG8gRmlsZVRpbWUgaXMgYXZhaWxhYmxlIGF0IGh0
dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9tczcyNDIyOCUyOHY9dnMuODUl
MjkuYXNweAotICAgIHRpbWUgPSBmaWxlVGltZS5RdWFkUGFydCAvIDEwMDAwMDAwIC0ga1NlY29u
ZHNGcm9tRmlsZVRpbWVUb1RpbWV0OwotfQotCi0KLXN0YXRpYyB2b2lkIGdldEZpbGVNb2RpZmlj
YXRpb25UaW1lRnJvbUZpbmREYXRhKGNvbnN0IFdJTjMyX0ZJTkRfREFUQVcmIGZpbmREYXRhLCB0
aW1lX3QmIHRpbWUpCi17Ci0gICAgVUxBUkdFX0lOVEVHRVIgZmlsZVRpbWU7Ci0gICAgZmlsZVRp
bWUuSGlnaFBhcnQgPSBmaW5kRGF0YS5mdExhc3RXcml0ZVRpbWUuZHdIaWdoRGF0ZVRpbWU7Ci0g
ICAgZmlsZVRpbWUuTG93UGFydCA9IGZpbmREYXRhLmZ0TGFzdFdyaXRlVGltZS5kd0xvd0RhdGVU
aW1lOwotCi0gICAgLy8gSW5mb3JtYXRpb24gYWJvdXQgY29udmVydGluZyB0aW1lX3QgdG8gRmls
ZVRpbWUgaXMgYXZhaWxhYmxlIGF0IGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGli
cmFyeS9tczcyNDIyOCUyOHY9dnMuODUlMjkuYXNweAotICAgIHRpbWUgPSBmaWxlVGltZS5RdWFk
UGFydCAvIDEwMDAwMDAwIC0ga1NlY29uZHNGcm9tRmlsZVRpbWVUb1RpbWV0OwotfQotCi1ib29s
IGdldEZpbGVTaXplKGNvbnN0IFN0cmluZyYgcGF0aCwgbG9uZyBsb25nJiBzaXplKQotewotICAg
IFdJTjMyX0ZJTkRfREFUQVcgZmluZERhdGE7Ci0gICAgaWYgKCFnZXRGaW5kRGF0YShwYXRoLCBm
aW5kRGF0YSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBnZXRGaWxlU2l6
ZUZyb21GaW5kRGF0YShmaW5kRGF0YSwgc2l6ZSk7Ci19Ci0KLWJvb2wgZ2V0RmlsZVNpemUoUGxh
dGZvcm1GaWxlSGFuZGxlIGZpbGVIYW5kbGUsIGxvbmcgbG9uZyYgc2l6ZSkKLXsKLSAgICBCWV9I
QU5ETEVfRklMRV9JTkZPUk1BVElPTiBmaWxlSW5mb3JtYXRpb247Ci0gICAgaWYgKCE6OkdldEZp
bGVJbmZvcm1hdGlvbkJ5SGFuZGxlKGZpbGVIYW5kbGUsICZmaWxlSW5mb3JtYXRpb24pKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gZ2V0RmlsZVNpemVGcm9tQnlIYW5kbGVG
aWxlSW5mb3JtYXRpb25TdHJ1Y3R1cmUoZmlsZUluZm9ybWF0aW9uLCBzaXplKTsKLX0KLQotT3B0
aW9uYWw8V2FsbFRpbWU+IGdldEZpbGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0
aCkKLXsKLSAgICBXSU4zMl9GSU5EX0RBVEFXIGZpbmREYXRhOwotICAgIGlmICghZ2V0RmluZERh
dGEocGF0aCwgZmluZERhdGEpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAg
dGltZV90IHRpbWUgPSAwOwotICAgIGdldEZpbGVNb2RpZmljYXRpb25UaW1lRnJvbUZpbmREYXRh
KGZpbmREYXRhLCB0aW1lKTsKLSAgICByZXR1cm4gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKHRp
bWUpOwotfQotCi1PcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZUNyZWF0aW9uVGltZShjb25zdCBT
dHJpbmcmIHBhdGgpCi17Ci0gICAgV0lOMzJfRklORF9EQVRBVyBmaW5kRGF0YTsKLSAgICBpZiAo
IWdldEZpbmREYXRhKHBhdGgsIGZpbmREYXRhKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKLQotICAgIHRpbWVfdCB0aW1lID0gMDsKLSAgICBnZXRGaWxlQ3JlYXRpb25UaW1lRnJvbUZp
bmREYXRhKGZpbmREYXRhLCB0aW1lKTsKLSAgICByZXR1cm4gV2FsbFRpbWU6OmZyb21SYXdTZWNv
bmRzKHRpbWUpOwotfQotCi1zdGF0aWMgU3RyaW5nIGdldEZpbmFsUGF0aE5hbWUoY29uc3QgU3Ry
aW5nJiBwYXRoKQotewotICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUocGF0aCwgRmlsZU9wZW5N
b2RlOjpSZWFkKTsKLSAgICBpZiAoIWlzSGFuZGxlVmFsaWQoaGFuZGxlKSkKLSAgICAgICAgcmV0
dXJuIFN0cmluZygpOwotCi0gICAgVmVjdG9yPFVDaGFyPiBidWZmZXIoTUFYX1BBVEgpOwotICAg
IGlmICg6OkdldEZpbmFsUGF0aE5hbWVCeUhhbmRsZVcoaGFuZGxlLCBidWZmZXIuZGF0YSgpLCBi
dWZmZXIuc2l6ZSgpLCBWT0xVTUVfTkFNRV9OVCkgPj0gTUFYX1BBVEgpIHsKLSAgICAgICAgY2xv
c2VGaWxlKGhhbmRsZSk7Ci0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICB9Ci0gICAgY2xv
c2VGaWxlKGhhbmRsZSk7Ci0KLSAgICBidWZmZXIuc2hyaW5rKHdjc2xlbihidWZmZXIuZGF0YSgp
KSk7Ci0gICAgcmV0dXJuIFN0cmluZzo6YWRvcHQoV1RGTW92ZShidWZmZXIpKTsKLX0KLQotc3Rh
dGljIGlubGluZSBib29sIGlzU3ltYm9saWNMaW5rKFdJTjMyX0ZJTkRfREFUQVcgZmluZERhdGEp
Ci17Ci0gICAgcmV0dXJuIGZpbmREYXRhLmR3RmlsZUF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVU
RV9SRVBBUlNFX1BPSU5UICYmIGZpbmREYXRhLmR3UmVzZXJ2ZWQwID09IElPX1JFUEFSU0VfVEFH
X1NZTUxJTks7Ci19Ci0KLXN0YXRpYyBGaWxlTWV0YWRhdGE6OlR5cGUgdG9GaWxlTWV0YWRhdGFU
eXBlKFdJTjMyX0ZJTkRfREFUQVcgZmluZERhdGEpCi17Ci0gICAgaWYgKGZpbmREYXRhLmR3Rmls
ZUF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9ESVJFQ1RPUlkpCi0gICAgICAgIHJldHVybiBG
aWxlTWV0YWRhdGE6OlR5cGU6OkRpcmVjdG9yeTsKLSAgICBpZiAoaXNTeW1ib2xpY0xpbmsoZmlu
ZERhdGEpKQotICAgICAgICByZXR1cm4gRmlsZU1ldGFkYXRhOjpUeXBlOjpTeW1ib2xpY0xpbms7
Ci0gICAgcmV0dXJuIEZpbGVNZXRhZGF0YTo6VHlwZTo6RmlsZTsKLX0KLQotc3RhdGljIE9wdGlv
bmFsPEZpbGVNZXRhZGF0YT4gZmluZERhdGFUb0ZpbGVNZXRhZGF0YShXSU4zMl9GSU5EX0RBVEFX
IGZpbmREYXRhKQotewotICAgIGxvbmcgbG9uZyBsZW5ndGg7Ci0gICAgaWYgKCFnZXRGaWxlU2l6
ZUZyb21GaW5kRGF0YShmaW5kRGF0YSwgbGVuZ3RoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKLQotICAgIHRpbWVfdCBtb2RpZmljYXRpb25UaW1lOwotICAgIGdldEZpbGVNb2RpZmlj
YXRpb25UaW1lRnJvbUZpbmREYXRhKGZpbmREYXRhLCBtb2RpZmljYXRpb25UaW1lKTsKLQotICAg
IHJldHVybiBGaWxlTWV0YWRhdGEgewotICAgICAgICBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMo
bW9kaWZpY2F0aW9uVGltZSksCi0gICAgICAgIGxlbmd0aCwKLSAgICAgICAgc3RhdGljX2Nhc3Q8
Ym9vbD4oZmluZERhdGEuZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX0hJRERFTiks
Ci0gICAgICAgIHRvRmlsZU1ldGFkYXRhVHlwZShmaW5kRGF0YSkKLSAgICB9OwotfQotCi1PcHRp
b25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0g
ICAgV0lOMzJfRklORF9EQVRBVyBmaW5kRGF0YTsKLSAgICBpZiAoIWdldEZpbmREYXRhKHBhdGgs
IGZpbmREYXRhKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIHJldHVybiBm
aW5kRGF0YVRvRmlsZU1ldGFkYXRhKGZpbmREYXRhKTsKLX0KLQotT3B0aW9uYWw8RmlsZU1ldGFk
YXRhPiBmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyhjb25zdCBTdHJpbmcmIHBhdGgpCi17
Ci0gICAgV0lOMzJfRklORF9EQVRBVyBmaW5kRGF0YTsKLSAgICBpZiAoIWdldEZpbmREYXRhKHBh
dGgsIGZpbmREYXRhKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIGlmIChp
c1N5bWJvbGljTGluayhmaW5kRGF0YSkpIHsKLSAgICAgICAgU3RyaW5nIHRhcmdldFBhdGggPSBn
ZXRGaW5hbFBhdGhOYW1lKHBhdGgpOwotICAgICAgICBpZiAodGFyZ2V0UGF0aC5pc051bGwoKSkK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgICAgIGlmICghZ2V0RmluZERh
dGEodGFyZ2V0UGF0aCwgZmluZERhdGEpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKLSAgICB9Ci0KLSAgICByZXR1cm4gZmluZERhdGFUb0ZpbGVNZXRhZGF0YShmaW5kRGF0YSk7
Ci19Ci0KLWJvb2wgY3JlYXRlU3ltYm9saWNMaW5rKGNvbnN0IFN0cmluZyYgdGFyZ2V0UGF0aCwg
Y29uc3QgU3RyaW5nJiBzeW1ib2xpY0xpbmtQYXRoKQotewotICAgIHJldHVybiAhOjpDcmVhdGVT
eW1ib2xpY0xpbmtXKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihzeW1ib2xpY0xpbmtQYXRo
KS5kYXRhKCksIHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcih0YXJnZXRQYXRoKS5kYXRhKCks
IDApOwotfQotCi1ib29sIGZpbGVFeGlzdHMoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIFdJ
TjMyX0ZJTkRfREFUQVcgZmluZERhdGE7Ci0gICAgcmV0dXJuIGdldEZpbmREYXRhKHBhdGgsIGZp
bmREYXRhKTsKLX0KLQotYm9vbCBkZWxldGVGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAg
ICBTdHJpbmcgZmlsZW5hbWUgPSBwYXRoOwotICAgIHJldHVybiAhIURlbGV0ZUZpbGVXKHN0cmlu
Z1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihmaWxlbmFtZSkuZGF0YSgpKTsKLX0KLQotYm9vbCBkZWxl
dGVFbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgU3RyaW5nIGZpbGVu
YW1lID0gcGF0aDsKLSAgICByZXR1cm4gISFSZW1vdmVEaXJlY3RvcnlXKHN0cmluZ1RvTnVsbFRl
cm1pbmF0ZWRXQ2hhcihmaWxlbmFtZSkuZGF0YSgpKTsKLX0KLQotYm9vbCBtb3ZlRmlsZShjb25z
dCBTdHJpbmcmIG9sZFBhdGgsIGNvbnN0IFN0cmluZyYgbmV3UGF0aCkKLXsKLSAgICBTdHJpbmcg
b2xkRmlsZW5hbWUgPSBvbGRQYXRoOwotICAgIFN0cmluZyBuZXdGaWxlbmFtZSA9IG5ld1BhdGg7
Ci0gICAgcmV0dXJuICEhOjpNb3ZlRmlsZUV4KHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihv
bGRGaWxlbmFtZSkuZGF0YSgpLCBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIobmV3RmlsZW5h
bWUpLmRhdGEoKSwgTU9WRUZJTEVfQ09QWV9BTExPV0VEIHwgTU9WRUZJTEVfUkVQTEFDRV9FWElT
VElORyk7Ci19Ci0KLVN0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY29uc3QgU3RyaW5n
JiBwYXRoLCBjb25zdCBTdHJpbmcmIGNvbXBvbmVudCkKLXsKLSAgICBWZWN0b3I8VUNoYXI+IGJ1
ZmZlcihNQVhfUEFUSCk7Ci0KLSAgICBpZiAocGF0aC5sZW5ndGgoKSArIDEgPiBidWZmZXIuc2l6
ZSgpKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICBTdHJpbmdWaWV3KHBhdGgpLmdl
dENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGJ1ZmZlci5kYXRhKCkpOwotICAgIGJ1ZmZlcltwYXRo
Lmxlbmd0aCgpXSA9ICdcMCc7Ci0KLSAgICBpZiAoIVBhdGhBcHBlbmRXKGJ1ZmZlci5kYXRhKCks
IHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihjb21wb25lbnQpLmRhdGEoKSkpCi0gICAgICAg
IHJldHVybiBTdHJpbmcoKTsKLQotICAgIGJ1ZmZlci5zaHJpbmsod2NzbGVuKGJ1ZmZlci5kYXRh
KCkpKTsKLQotICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KFdURk1vdmUoYnVmZmVyKSk7Ci19Ci0K
LVN0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKFN0cmluZ1ZpZXcgcGF0aCwgY29uc3Qg
VmVjdG9yPFN0cmluZ1ZpZXc+JiBjb21wb25lbnRzKQotewotICAgIFN0cmluZyByZXN1bHQgPSBw
YXRoLnRvU3RyaW5nKCk7Ci0gICAgZm9yIChhdXRvJiBjb21wb25lbnQgOiBjb21wb25lbnRzKQot
ICAgICAgICByZXN1bHQgPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVzdWx0LCBjb21wb25l
bnQudG9TdHJpbmcoKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotI2lmICFVU0UoQ0YpCi0K
LUNTdHJpbmcgZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsK
LSAgICBhdXRvIHVwY29udmVydGVkQ2hhcmFjdGVycyA9IHBhdGgudXBjb252ZXJ0ZWRDaGFyYWN0
ZXJzKCk7Ci0KLSAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycyA9IHVwY29udmVydGVkQ2hhcmFj
dGVyczsKLSAgICBpbnQgc2l6ZSA9IFdpZGVDaGFyVG9NdWx0aUJ5dGUoQ1BfQUNQLCAwLCBjaGFy
YWN0ZXJzLCBwYXRoLmxlbmd0aCgpLCAwLCAwLCAwLCAwKSAtIDE7Ci0KLSAgICBjaGFyKiBidWZm
ZXI7Ci0gICAgQ1N0cmluZyBzdHJpbmcgPSBDU3RyaW5nOjpuZXdVbmluaXRpYWxpemVkKHNpemUs
IGJ1ZmZlcik7Ci0KLSAgICBXaWRlQ2hhclRvTXVsdGlCeXRlKENQX0FDUCwgMCwgY2hhcmFjdGVy
cywgcGF0aC5sZW5ndGgoKSwgYnVmZmVyLCBzaXplLCAwLCAwKTsKLQotICAgIHJldHVybiBzdHJp
bmc7Ci19Ci0KLSNlbmRpZiAvLyAhVVNFKENGKQotCi1ib29sIG1ha2VBbGxEaXJlY3Rvcmllcyhj
b25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgU3RyaW5nIGZ1bGxQYXRoID0gcGF0aDsKLSAgICBp
ZiAoU0hDcmVhdGVEaXJlY3RvcnlFeCgwLCBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoZnVs
bFBhdGgpLmRhdGEoKSwgMCkgIT0gRVJST1JfU1VDQ0VTUykgewotICAgICAgICBEV09SRCBlcnJv
ciA9IEdldExhc3RFcnJvcigpOwotICAgICAgICBpZiAoZXJyb3IgIT0gRVJST1JfRklMRV9FWElT
VFMgJiYgZXJyb3IgIT0gRVJST1JfQUxSRUFEWV9FWElTVFMpIHsKLSAgICAgICAgICAgIExPR19F
UlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBwYXRoICVzIiwgcGF0aC5hc2NpaSgpLmRhdGEoKSk7Ci0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHRy
dWU7Ci19Ci0KLVN0cmluZyBob21lRGlyZWN0b3J5UGF0aCgpCi17Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKLSAgICByZXR1cm4gIiI7Ci19Ci0KLVN0cmluZyBwYXRoR2V0RmlsZU5hbWUoY29uc3Qg
U3RyaW5nJiBwYXRoKQotewotICAgIHJldHVybiBudWxsVGVybWluYXRlZFdDaGFyVG9TdHJpbmco
OjpQYXRoRmluZEZpbGVOYW1lKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihwYXRoKS5kYXRh
KCkpKTsKLX0KLQotU3RyaW5nIGRpcmVjdG9yeU5hbWUoY29uc3QgU3RyaW5nJiBwYXRoKQotewot
ICAgIFN0cmluZyBuYW1lID0gcGF0aC5sZWZ0KHBhdGgubGVuZ3RoKCkgLSBwYXRoR2V0RmlsZU5h
bWUocGF0aCkubGVuZ3RoKCkpOwotICAgIGlmIChuYW1lLmNoYXJhY3RlclN0YXJ0aW5nQXQobmFt
ZS5sZW5ndGgoKSAtIDEpID09ICdcXCcpIHsKLSAgICAgICAgLy8gUmVtb3ZlIGFueSB0cmFpbGlu
ZyAiXCIuCi0gICAgICAgIG5hbWUudHJ1bmNhdGUobmFtZS5sZW5ndGgoKSAtIDEpOwotICAgIH0K
LSAgICByZXR1cm4gbmFtZTsKLX0KLQotc3RhdGljIFN0cmluZyBidW5kbGVOYW1lKCkKLXsKLSAg
ICBzdGF0aWMgY29uc3QgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBuYW1lID0gW10gewotICAgICAg
ICBTdHJpbmcgbmFtZSB7ICJXZWJLaXQiX3MgfTsKLQotI2lmIFVTRShDRikKLSAgICAgICAgaWYg
KENGQnVuZGxlUmVmIGJ1bmRsZSA9IENGQnVuZGxlR2V0TWFpbkJ1bmRsZSgpKSB7Ci0gICAgICAg
ICAgICBpZiAoQ0ZUeXBlUmVmIGJ1bmRsZUV4ZWN1dGFibGUgPSBDRkJ1bmRsZUdldFZhbHVlRm9y
SW5mb0RpY3Rpb25hcnlLZXkoYnVuZGxlLCBrQ0ZCdW5kbGVFeGVjdXRhYmxlS2V5KSkgewotICAg
ICAgICAgICAgICAgIGlmIChDRkdldFR5cGVJRChidW5kbGVFeGVjdXRhYmxlKSA9PSBDRlN0cmlu
Z0dldFR5cGVJRCgpKQotICAgICAgICAgICAgICAgICAgICBuYW1lID0gcmVpbnRlcnByZXRfY2Fz
dDxDRlN0cmluZ1JlZj4oYnVuZGxlRXhlY3V0YWJsZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLSNlbmRpZgotCi0gICAgICAgIHJldHVybiBuYW1lOwotICAgIH0oKTsKLQotICAgIHJldHVy
biBuYW1lOwotfQotCi1zdGF0aWMgU3RyaW5nIHN0b3JhZ2VEaXJlY3RvcnkoRFdPUkQgcGF0aElk
ZW50aWZpZXIpCi17Ci0gICAgVmVjdG9yPFVDaGFyPiBidWZmZXIoTUFYX1BBVEgpOwotICAgIGlm
IChGQUlMRUQoU0hHZXRGb2xkZXJQYXRoVygwLCBwYXRoSWRlbnRpZmllciB8IENTSURMX0ZMQUdf
Q1JFQVRFLCAwLCAwLCBidWZmZXIuZGF0YSgpKSkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsK
LSAgICBidWZmZXIucmVzaXplKHdjc2xlbihidWZmZXIuZGF0YSgpKSk7Ci0gICAgU3RyaW5nIGRp
cmVjdG9yeSA9IFN0cmluZzo6YWRvcHQoV1RGTW92ZShidWZmZXIpKTsKLQotICAgIGRpcmVjdG9y
eSA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkaXJlY3RvcnksICJBcHBsZSBDb21wdXRlclxc
IiArIGJ1bmRsZU5hbWUoKSk7Ci0gICAgaWYgKCFtYWtlQWxsRGlyZWN0b3JpZXMoZGlyZWN0b3J5
KSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgcmV0dXJuIGRpcmVjdG9yeTsKLX0K
LQotc3RhdGljIFN0cmluZyBjYWNoZWRTdG9yYWdlRGlyZWN0b3J5KERXT1JEIHBhdGhJZGVudGlm
aWVyKQotewotICAgIHN0YXRpYyBIYXNoTWFwPERXT1JELCBTdHJpbmc+IGRpcmVjdG9yaWVzOwot
Ci0gICAgSGFzaE1hcDxEV09SRCwgU3RyaW5nPjo6aXRlcmF0b3IgaXQgPSBkaXJlY3Rvcmllcy5m
aW5kKHBhdGhJZGVudGlmaWVyKTsKLSAgICBpZiAoaXQgIT0gZGlyZWN0b3JpZXMuZW5kKCkpCi0g
ICAgICAgIHJldHVybiBpdC0+dmFsdWU7Ci0KLSAgICBTdHJpbmcgZGlyZWN0b3J5ID0gc3RvcmFn
ZURpcmVjdG9yeShwYXRoSWRlbnRpZmllcik7Ci0gICAgZGlyZWN0b3JpZXMuYWRkKHBhdGhJZGVu
dGlmaWVyLCBkaXJlY3RvcnkpOwotCi0gICAgcmV0dXJuIGRpcmVjdG9yeTsKLX0KLQotc3RhdGlj
IFN0cmluZyBnZW5lcmF0ZVRlbXBvcmFyeVBhdGgoY29uc3QgRnVuY3Rpb248Ym9vbChjb25zdCBT
dHJpbmcmKT4mIGFjdGlvbikKLXsKLSAgICB3Y2hhcl90IHRlbXBQYXRoW01BWF9QQVRIXTsKLSAg
ICBpbnQgdGVtcFBhdGhMZW5ndGggPSA6OkdldFRlbXBQYXRoVyhXVEZfQVJSQVlfTEVOR1RIKHRl
bXBQYXRoKSwgdGVtcFBhdGgpOwotICAgIGlmICh0ZW1wUGF0aExlbmd0aCA8PSAwIHx8IHRlbXBQ
YXRoTGVuZ3RoID4gV1RGX0FSUkFZX0xFTkdUSCh0ZW1wUGF0aCkpCi0gICAgICAgIHJldHVybiBT
dHJpbmcoKTsKLQotICAgIFN0cmluZyBwcm9wb3NlZFBhdGg7Ci0gICAgZG8gewotICAgICAgICB3
Y2hhcl90IHRlbXBGaWxlW10gPSBMIlhYWFhYWFhYLnRtcCI7IC8vIFVzZSA4LjMgc3R5bGUgbmFt
ZSAobW9yZSBjaGFyYWN0ZXJzIGFyZW4ndCBoZWxwZnVsIGR1ZSB0byA4LjMgc2hvcnQgZmlsZSBu
YW1lcykKLSAgICAgICAgY29uc3QgaW50IHJhbmRvbVBhcnRMZW5ndGggPSA4OwotICAgICAgICBj
cnlwdG9ncmFwaGljYWxseVJhbmRvbVZhbHVlcyh0ZW1wRmlsZSwgcmFuZG9tUGFydExlbmd0aCAq
IHNpemVvZih3Y2hhcl90KSk7Ci0KLSAgICAgICAgLy8gTGltaXQgdG8gdmFsaWQgZmlsZXN5c3Rl
bSBjaGFyYWN0ZXJzLCBhbHNvIGV4Y2x1ZGluZyBvdGhlcnMgdGhhdCBjb3VsZCBiZSBwcm9ibGVt
YXRpYywgbGlrZSBwdW5jdHVhdGlvbi4KLSAgICAgICAgLy8gZG9uJ3QgaW5jbHVkZSBib3RoIHVw
cGVyIGFuZCBsb3dlcmNhc2Ugc2luY2UgV2luZG93cyBmaWxlIHN5c3RlbXMgYXJlIHR5cGljYWxs
eSBub3QgY2FzZSBzZW5zaXRpdmUuCi0gICAgICAgIGNvbnN0IGNoYXIgdmFsaWRDaGFyc1tdID0g
IjAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiI7Ci0gICAgICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgcmFuZG9tUGFydExlbmd0aDsgKytpKQotICAgICAgICAgICAgdGVtcEZpbGVb
aV0gPSB2YWxpZENoYXJzW3RlbXBGaWxlW2ldICUgKHNpemVvZih2YWxpZENoYXJzKSAtIDEpXTsK
LQotICAgICAgICBBU1NFUlQod2NzbGVuKHRlbXBGaWxlKSA9PSBXVEZfQVJSQVlfTEVOR1RIKHRl
bXBGaWxlKSAtIDEpOwotCi0gICAgICAgIHByb3Bvc2VkUGF0aCA9IHBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChudWxsVGVybWluYXRlZFdDaGFyVG9TdHJpbmcodGVtcFBhdGgpLCBudWxsVGVybWlu
YXRlZFdDaGFyVG9TdHJpbmcodGVtcEZpbGUpKTsKLSAgICAgICAgaWYgKHByb3Bvc2VkUGF0aC5p
c0VtcHR5KCkpCi0gICAgICAgICAgICBicmVhazsKLSAgICB9IHdoaWxlICghYWN0aW9uKHByb3Bv
c2VkUGF0aCkpOwotCi0gICAgcmV0dXJuIHByb3Bvc2VkUGF0aDsKLX0KLQotU3RyaW5nIG9wZW5U
ZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKQot
ewotICAgIGhhbmRsZSA9IElOVkFMSURfSEFORExFX1ZBTFVFOwotCi0gICAgU3RyaW5nIHByb3Bv
c2VkUGF0aCA9IGdlbmVyYXRlVGVtcG9yYXJ5UGF0aChbJmhhbmRsZV0oY29uc3QgU3RyaW5nJiBw
cm9wb3NlZFBhdGgpIHsKLSAgICAgICAgLy8gdXNlIENSRUFURV9ORVcgdG8gYXZvaWQgb3Zlcndy
aXRpbmcgYW4gZXhpc3RpbmcgZmlsZSB3aXRoIHRoZSBzYW1lIG5hbWUKLSAgICAgICAgaGFuZGxl
ID0gOjpDcmVhdGVGaWxlVyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIocHJvcG9zZWRQYXRo
KS5kYXRhKCksIEdFTkVSSUNfUkVBRCB8IEdFTkVSSUNfV1JJVEUsIDAsIDAsIENSRUFURV9ORVcs
IEZJTEVfQVRUUklCVVRFX05PUk1BTCwgMCk7Ci0KLSAgICAgICAgcmV0dXJuIGlzSGFuZGxlVmFs
aWQoaGFuZGxlKSB8fCBHZXRMYXN0RXJyb3IoKSA9PSBFUlJPUl9BTFJFQURZX0VYSVNUUzsKLSAg
ICB9KTsKLQotICAgIGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUpKQotICAgICAgICByZXR1cm4g
U3RyaW5nKCk7Ci0KLSAgICByZXR1cm4gcHJvcG9zZWRQYXRoOwotfQotCi1QbGF0Zm9ybUZpbGVI
YW5kbGUgb3BlbkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUgbW9kZSkKLXsK
LSAgICBEV09SRCBkZXNpcmVkQWNjZXNzID0gMDsKLSAgICBEV09SRCBjcmVhdGlvbkRpc3Bvc2l0
aW9uID0gMDsKLSAgICBEV09SRCBzaGFyZU1vZGUgPSAwOwotICAgIHN3aXRjaCAobW9kZSkgewot
ICAgIGNhc2UgRmlsZU9wZW5Nb2RlOjpSZWFkOgotICAgICAgICBkZXNpcmVkQWNjZXNzID0gR0VO
RVJJQ19SRUFEOwotICAgICAgICBjcmVhdGlvbkRpc3Bvc2l0aW9uID0gT1BFTl9FWElTVElORzsK
LSAgICAgICAgc2hhcmVNb2RlID0gRklMRV9TSEFSRV9SRUFEOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIEZpbGVPcGVuTW9kZTo6V3JpdGU6Ci0gICAgICAgIGRlc2lyZWRBY2Nlc3MgPSBHRU5F
UklDX1dSSVRFOwotICAgICAgICBjcmVhdGlvbkRpc3Bvc2l0aW9uID0gQ1JFQVRFX0FMV0FZUzsK
LSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgfQotCi0gICAgU3RyaW5nIGRlc3RpbmF0aW9uID0gcGF0aDsKLSAgICByZXR1cm4g
Q3JlYXRlRmlsZShzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoZGVzdGluYXRpb24pLmRhdGEo
KSwgZGVzaXJlZEFjY2Vzcywgc2hhcmVNb2RlLCAwLCBjcmVhdGlvbkRpc3Bvc2l0aW9uLCBGSUxF
X0FUVFJJQlVURV9OT1JNQUwsIDApOwotfQotCi12b2lkIGNsb3NlRmlsZShQbGF0Zm9ybUZpbGVI
YW5kbGUmIGhhbmRsZSkKLXsKLSAgICBpZiAoaXNIYW5kbGVWYWxpZChoYW5kbGUpKSB7Ci0gICAg
ICAgIDo6Q2xvc2VIYW5kbGUoaGFuZGxlKTsKLSAgICAgICAgaGFuZGxlID0gaW52YWxpZFBsYXRm
b3JtRmlsZUhhbmRsZTsKLSAgICB9Ci19Ci0KLWxvbmcgbG9uZyBzZWVrRmlsZShQbGF0Zm9ybUZp
bGVIYW5kbGUgaGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0LCBGaWxlU2Vla09yaWdpbiBvcmlnaW4p
Ci17Ci0gICAgRFdPUkQgbW92ZU1ldGhvZCA9IEZJTEVfQkVHSU47Ci0KLSAgICBpZiAob3JpZ2lu
ID09IEZpbGVTZWVrT3JpZ2luOjpDdXJyZW50KQotICAgICAgICBtb3ZlTWV0aG9kID0gRklMRV9D
VVJSRU5UOwotICAgIGVsc2UgaWYgKG9yaWdpbiA9PSBGaWxlU2Vla09yaWdpbjo6RW5kKQotICAg
ICAgICBtb3ZlTWV0aG9kID0gRklMRV9FTkQ7Ci0KLSAgICBMQVJHRV9JTlRFR0VSIGxhcmdlT2Zm
c2V0OwotICAgIGxhcmdlT2Zmc2V0LlF1YWRQYXJ0ID0gb2Zmc2V0OwotCi0gICAgbGFyZ2VPZmZz
ZXQuTG93UGFydCA9IFNldEZpbGVQb2ludGVyKGhhbmRsZSwgbGFyZ2VPZmZzZXQuTG93UGFydCwg
JmxhcmdlT2Zmc2V0LkhpZ2hQYXJ0LCBtb3ZlTWV0aG9kKTsKLQotICAgIGlmIChsYXJnZU9mZnNl
dC5Mb3dQYXJ0ID09IElOVkFMSURfU0VUX0ZJTEVfUE9JTlRFUiAmJiBHZXRMYXN0RXJyb3IoKSAh
PSBOT19FUlJPUikKLSAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgcmV0dXJuIGxhcmdlT2Zmc2V0
LlF1YWRQYXJ0OwotfQotCi1pbnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRs
ZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKLXsKLSAgICBpZiAoIWlzSGFuZGxlVmFs
aWQoaGFuZGxlKSkKLSAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgRFdPUkQgYnl0ZXNXcml0dGVu
OwotICAgIGJvb2wgc3VjY2VzcyA9IFdyaXRlRmlsZShoYW5kbGUsIGRhdGEsIGxlbmd0aCwgJmJ5
dGVzV3JpdHRlbiwgMCk7Ci0KLSAgICBpZiAoIXN1Y2Nlc3MpCi0gICAgICAgIHJldHVybiAtMTsK
LSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihieXRlc1dyaXR0ZW4pOwotfQotCi1pbnQgcmVh
ZEZyb21GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNoYXIqIGRhdGEsIGludCBsZW5n
dGgpCi17Ci0gICAgaWYgKCFpc0hhbmRsZVZhbGlkKGhhbmRsZSkpCi0gICAgICAgIHJldHVybiAt
MTsKLQotICAgIERXT1JEIGJ5dGVzUmVhZDsKLSAgICBib29sIHN1Y2Nlc3MgPSA6OlJlYWRGaWxl
KGhhbmRsZSwgZGF0YSwgbGVuZ3RoLCAmYnl0ZXNSZWFkLCAwKTsKLQotICAgIGlmICghc3VjY2Vz
cykKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KGJ5dGVz
UmVhZCk7Ci19Ci0KLWJvb2wgaGFyZExpbmtPckNvcHlGaWxlKGNvbnN0IFN0cmluZyYgc291cmNl
LCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uKQotewotICAgIHJldHVybiAhITo6Q29weUZpbGUo
c3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKHNvdXJjZSkuZGF0YSgpLCBzdHJpbmdUb051bGxU
ZXJtaW5hdGVkV0NoYXIoZGVzdGluYXRpb24pLmRhdGEoKSwgVFJVRSk7Ci19Ci0KLVN0cmluZyBs
b2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKQotewotICAgIHJldHVybiBjYWNoZWRT
dG9yYWdlRGlyZWN0b3J5KENTSURMX0xPQ0FMX0FQUERBVEEpOwotfQotCi1TdHJpbmcgcm9hbWlu
Z1VzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKQotewotICAgIHJldHVybiBjYWNoZWRTdG9y
YWdlRGlyZWN0b3J5KENTSURMX0FQUERBVEEpOwotfQotCi1WZWN0b3I8U3RyaW5nPiBsaXN0RGly
ZWN0b3J5KGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIGZpbHRlcikKLXsK
LSAgICBWZWN0b3I8U3RyaW5nPiBlbnRyaWVzOwotCi0gICAgUGF0aFdhbGtlciB3YWxrZXIoZGly
ZWN0b3J5LCBmaWx0ZXIpOwotICAgIGlmICghd2Fsa2VyLmlzVmFsaWQoKSkKLSAgICAgICAgcmV0
dXJuIGVudHJpZXM7Ci0KLSAgICBkbyB7Ci0gICAgICAgIGlmICh3YWxrZXIuZGF0YSgpLmR3Rmls
ZUF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9ESVJFQ1RPUlkKLSAgICAgICAgICAgICYmICgh
d2NzY21wKHdhbGtlci5kYXRhKCkuY0ZpbGVOYW1lLCBMIi4iKSB8fCAhd2NzY21wKHdhbGtlci5k
YXRhKCkuY0ZpbGVOYW1lLCBMIi4uIikpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAg
ICAgZW50cmllcy5hcHBlbmQoZGlyZWN0b3J5ICsgIlxcIiArIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgVUNoYXIqPih3YWxrZXIuZGF0YSgpLmNGaWxlTmFtZSkpOwotICAgIH0gd2hpbGUgKHdhbGtl
ci5zdGVwKCkpOwotCi0gICAgcmV0dXJuIGVudHJpZXM7Ci19Ci0KLWJvb2wgZ2V0Vm9sdW1lRnJl
ZVNwYWNlKGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90JikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotT3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmlj
ZUlkKGNvbnN0IENTdHJpbmcmIGZzRmlsZSkKLXsKLSAgICBhdXRvIGhhbmRsZSA9IG9wZW5GaWxl
KGZzRmlsZS5kYXRhKCksIEZpbGVPcGVuTW9kZTo6UmVhZCk7Ci0gICAgaWYgKCFpc0hhbmRsZVZh
bGlkKGhhbmRsZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBCWV9IQU5E
TEVfRklMRV9JTkZPUk1BVElPTiBmaWxlSW5mb3JtYXRpb24gPSB7IH07Ci0gICAgaWYgKCE6Okdl
dEZpbGVJbmZvcm1hdGlvbkJ5SGFuZGxlKGhhbmRsZSwgJmZpbGVJbmZvcm1hdGlvbikpIHsKLSAg
ICAgICAgY2xvc2VGaWxlKGhhbmRsZSk7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0g
ICAgfQotCi0gICAgY2xvc2VGaWxlKGhhbmRsZSk7Ci0KLSAgICByZXR1cm4gZmlsZUluZm9ybWF0
aW9uLmR3Vm9sdW1lU2VyaWFsTnVtYmVyOwotfQotCi1TdHJpbmcgcmVhbFBhdGgoY29uc3QgU3Ry
aW5nJiBmaWxlUGF0aCkKLXsKLSAgICByZXR1cm4gZ2V0RmluYWxQYXRoTmFtZShmaWxlUGF0aCk7
Ci19Ci0KLVN0cmluZyBjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoKQotewotICAgIHJldHVybiBn
ZW5lcmF0ZVRlbXBvcmFyeVBhdGgoW10oY29uc3QgU3RyaW5nJiBwcm9wb3NlZFBhdGgpIHsKLSAg
ICAgICAgcmV0dXJuIG1ha2VBbGxEaXJlY3Rvcmllcyhwcm9wb3NlZFBhdGgpOwotICAgIH0pOwot
fQotCi1ib29sIGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5
UGF0aCkKLXsKLSAgICBTSEZJTEVPUFNUUlVDVCBkZWxldGVPcGVyYXRpb24gPSB7Ci0gICAgICAg
IG51bGxwdHIsCi0gICAgICAgIEZPX0RFTEVURSwKLSAgICAgICAgc3RyaW5nVG9OdWxsVGVybWlu
YXRlZFdDaGFyKGRpcmVjdG9yeVBhdGgpLmRhdGEoKSwKLSAgICAgICAgTCIiLAotICAgICAgICBG
T0ZfTk9DT05GSVJNQVRJT04gfCBGT0ZfTk9FUlJPUlVJIHwgRk9GX1NJTEVOVCwKLSAgICAgICAg
ZmFsc2UsCi0gICAgICAgIDAsCi0gICAgICAgIEwiIgotICAgIH07Ci0gICAgcmV0dXJuICFTSEZp
bGVPcGVyYXRpb24oJmRlbGV0ZU9wZXJhdGlvbik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEZpbGVT
eXN0ZW0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9QYXRoV2Fsa2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9QYXRoV2Fsa2VyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjIwNDA3YjFj
ZmVhNjI0ZjNhMTU2OWE4ZmQ2NzY4YTVkZWJlZDM2My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGF0aFdh
bGtlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlBhdGhXYWxrZXIuaCIKLQotI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4
dHJhcy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVBhdGhXYWxrZXI6OlBhdGhXYWxrZXIo
Y29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIGNvbnN0IFN0cmluZyYgcGF0dGVybikKLXsKLSAgICBT
dHJpbmcgcGF0aCA9IGRpcmVjdG9yeSArICJcXCIgKyBwYXR0ZXJuOwotICAgIG1faGFuZGxlID0g
OjpGaW5kRmlyc3RGaWxlVyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIocGF0aCkuZGF0YSgp
LCAmbV9kYXRhKTsKLX0KLQotUGF0aFdhbGtlcjo6flBhdGhXYWxrZXIoKQotewotICAgIGlmICgh
aXNWYWxpZCgpKQotICAgICAgICByZXR1cm47Ci0gICAgOjpGaW5kQ2xvc2UobV9oYW5kbGUpOwot
fQotCi1ib29sIFBhdGhXYWxrZXI6OnN0ZXAoKQotewotICAgIHJldHVybiA6OkZpbmROZXh0Rmls
ZVcobV9oYW5kbGUsICZtX2RhdGEpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGF0aFdhbGtlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL1BhdGhXYWxrZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZmM1OWQ2NzMxODExYjhjYTE1ODdhNGExMmE3ZGExZTFhMTU5M2Q4NC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vUGF0aFdhbGtlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgPFdpbmRvd3MuaD4KLSNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLWNsYXNzIFBhdGhXYWxrZXIgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBhdGhX
YWxrZXIpOwotcHVibGljOgotICAgIFBhdGhXYWxrZXIoY29uc3QgV1RGOjpTdHJpbmcmIGRpcmVj
dG9yeSwgY29uc3QgV1RGOjpTdHJpbmcmIHBhdHRlcm4pOwotICAgIH5QYXRoV2Fsa2VyKCk7Ci0K
LSAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2hhbmRsZSAhPSBJTlZBTElEX0hB
TkRMRV9WQUxVRTsgfQotICAgIGNvbnN0IFdJTjMyX0ZJTkRfREFUQVcmIGRhdGEoKSBjb25zdCB7
IHJldHVybiBtX2RhdGE7IH0KLQotICAgIGJvb2wgc3RlcCgpOwotCi1wcml2YXRlOgotICAgIEhB
TkRMRSBtX2hhbmRsZTsKLSAgICBXSU4zMl9GSU5EX0RBVEFXIG1fZGF0YTsKLX07Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9TZWFyY2hQb3B1cE1lbnVEQi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Vh
cmNoUG9wdXBNZW51REIuY3BwCmluZGV4IDllNmU0YzUyZDdiOTgzOGExZjA3YmRkNTlmNDA5ZDgx
NjVmZTU2NjYuLmU1NzMwYjMwY2NmM2YwM2VlZmRmZjlhMzMxYzA4ZWQwZTIyZTU4YmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVEQi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudURCLmNwcApA
QCAtMjUsOSArMjUsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNlYXJjaFBv
cHVwTWVudURCLmgiCiAKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiU1FMaXRl
RmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIlNRTGl0ZVRyYW5zYWN0aW9uLmgiCisjaW5jbHVkZSA8
d3RmL0ZpbGVTeXN0ZW0uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAppbmRleCA3NmM5YzVjNzhkNTZkM2U4ZDk3ZDQyMWY0
ZGZhYTRhYjFiZDllY2MwLi5jNGZhMzU2NzBiOTU0NzY3NmI3YzRmYjlhODEyYjNkNmU2ZWM5OWU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKQEAgLTI1LDcgKzI1
LDYgQEAKICNpbmNsdWRlICJDb250cm9sU3RhdGVzLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIK
ICNpbmNsdWRlICJGaWxlTGlzdC5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRl
ICJGbG9hdENvbnZlcnNpb24uaCIKICNpbmNsdWRlICJGbG9hdFJvdW5kZWRSZWN0LmgiCiAjaW5j
bHVkZSAiRm9jdXNDb250cm9sbGVyLmgiCkBAIC00NSw2ICs0NCw3IEBACiAjaW5jbHVkZSAiU3Bp
bkJ1dHRvbkVsZW1lbnQuaCIKICNpbmNsdWRlICJTdHJpbmdUcnVuY2F0b3IuaCIKICNpbmNsdWRl
ICJUZXh0Q29udHJvbElubmVyRWxlbWVudHMuaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5o
PgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiAjaWYgRU5BQkxFKE1FVEVSX0VM
RU1FTlQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVH
dGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lR3RrLmNwcAppbmRl
eCBiNjk2ZWFjOGZiMTA1ZTJiNzA5NjIwNjk0NzM5NzNlMTNlYjlmYjY2Li5iMjU5NjZjYjUzMzI3
Njg1OWVlODE5NjcxYWQyNWZkZjc3ZTAzZWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZUd0ay5jcHAKQEAgLTI3LDcgKzI3LDYgQEAKIAogI2luY2x1ZGUgIkNTU1Zh
bHVlS2V5d29yZHMuaCIKICNpbmNsdWRlICJGaWxlTGlzdC5oIgotI2luY2x1ZGUgIkZpbGVTeXN0
ZW0uaCIKICNpbmNsdWRlICJGbG9hdFJvdW5kZWRSZWN0LmgiCiAjaW5jbHVkZSAiRm9udERlc2Ny
aXB0aW9uLmgiCiAjaW5jbHVkZSAiR1JlZlB0ckd0ay5oIgpAQCAtNTUsNiArNTQsNyBAQAogI2lu
Y2x1ZGUgPGdkay9nZGsuaD4KICNpbmNsdWRlIDxnbGliLmg+CiAjaW5jbHVkZSA8Z3RrL2d0ay5o
PgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmNw
cAppbmRleCBlZWI5OTg1ZTYyZjVjOWEzNDgyNDNlOGRkZTllY2NjMGE5YmRiZmI1Li4yMTk2NTdl
MWYyNGFhYmEwNTgyNWEyYTYyYjA4MDRjN2ZiYjNmMzM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHAKQEAgLTI0LDcgKzI0LDYgQEAKIAogI2luY2x1ZGUg
IkNTU1ZhbHVlS2V5d29yZHMuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCi0jaW5jbHVkZSAiRmls
ZVN5c3RlbS5oIgogI2luY2x1ZGUgIkZvbnRNZXRyaWNzLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIK
ICNpbmNsdWRlICJGcmFtZVNlbGVjdGlvbi5oIgpAQCAtMzgsNiArMzcsNyBAQAogI2luY2x1ZGUg
IlN5c3RlbUluZm8uaCIKICNpbmNsdWRlICJVc2VyQWdlbnRTdHlsZVNoZWV0cy5oIgogI2luY2x1
ZGUgIldlYkNvcmVCdW5kbGVXaW4uaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2lu
Y2x1ZGUgPHd0Zi9Tb2Z0TGlua2luZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxk
ZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaD4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9u
RGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdp
c3RyYXRpb25EYXRhYmFzZS5jcHAKaW5kZXggNjBlZWI4Y2MyYzBmNDEyY2EyYmNlZDk4MmFlOTI3
ZmZiMWQ2YTQ2OC4uMWFmNDM3ODhmZmZiYWFhOTEyZTFhZDk3YmJkOThiMTcyZGUzZjBlMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRp
b25EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKIAotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJM
b2dnaW5nLmgiCiAjaW5jbHVkZSAiUmVnaXN0cmF0aW9uU3RvcmUuaCIKICNpbmNsdWRlICJTUUxp
dGVEYXRhYmFzZS5oIgpAQCAtMzksNiArMzgsNyBAQAogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2lu
LmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0Ny
b3NzVGhyZWFkQ29waWVyLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRl
IDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9TY29wZS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcAppbmRleCBjMjEwZWNhYzhhNDc0NmU0MTQw
ZDQwNjQyZTBjMzcwYTBlNWE3ZWQwLi4xMDVkZDAyODg2MDc1MDcwOTc3Y2FlODdkMmM0YTRmNDBi
YmZlZmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1BlcnNpc3RlbnRTdG9yYWdlLmNwcApAQCAtMzMsOSArMzMsOSBAQAogI2luY2x1ZGUgIlJlc291
cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oIgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZU1vbml0b3IuaD4KLSNp
bmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0tleWVkQ29k
aW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KKyNpbmNsdWRlIDx3dGYv
RmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3RmL1dv
cmtRdWV1ZS5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtEYXRhVGFza0Jsb2IuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0RhdGFUYXNrQmxvYi5oCmluZGV4IDc1ZDMxYTYxYTRmNzQyZjM4N2Y5YjVlYTJkNGY2MDI5NDM2
MTI4N2MuLmViNzk0NDcyNTk1YjU2ZWRkNjIwYmUyNTc2ZWQyMTgxODA1ZDBkODUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5oCkBA
IC0zMyw3ICszMyw3IEBACiAKICNpbmNsdWRlICJOZXR3b3JrRGF0YVRhc2suaCIKICNpbmNsdWRl
IDxXZWJDb3JlL0ZpbGVTdHJlYW1DbGllbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0
ZW0uaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBBc3luY0ZpbGVTdHJlYW07CkBAIC0xMTMsNyArMTEzLDcgQEAgcHJpdmF0ZToKICAg
ICB1bnNpZ25lZCBtX3NpemVJdGVtQ291bnQgeyAwIH07CiAgICAgdW5zaWduZWQgbV9yZWFkSXRl
bUNvdW50IHsgMCB9OwogICAgIGJvb2wgbV9maWxlT3BlbmVkIHsgZmFsc2UgfTsKLSAgICBXZWJD
b3JlOjpGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgbV9kb3dubG9hZEZpbGUgeyBXZWJD
b3JlOjpGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlIH07CisgICAgRmlsZVN5
c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIG1fZG93bmxvYWRGaWxlIHsgRmlsZVN5c3RlbTo6aW52
YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSB9OwogCiAgICAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpC
bG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBtX2ZpbGVSZWZlcmVuY2VzOwogICAgIFJlZlB0cjxTYW5k
Ym94RXh0ZW5zaW9uPiBtX3NhbmRib3hFeHRlbnNpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDYwNzIwMTEyOWJmZjA3MjZkNWU0
NWE1M2JjNmZjMTMxYWZiZmNkNDIuLjBiYjU3NWE5MjdjYWVmMDBkOWUwZWU0NjA1ODM0NzdjNzFi
YzU2NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwCkBAIC0xNjE4LDcgKzE2MTgsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRDYWNo
ZU1vZGVsKENhY2hlTW9kZWwgY2FjaGVNb2RlbCkKICAgICB1bnNpZ25lZCB1cmxDYWNoZU1lbW9y
eUNhcGFjaXR5ID0gMDsKICAgICB1aW50NjRfdCB1cmxDYWNoZURpc2tDYXBhY2l0eSA9IDA7CiAg
ICAgdWludDY0X3QgZGlza0ZyZWVTaXplID0gMDsKLSAgICBpZiAoV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6Z2V0Vm9sdW1lRnJlZVNwYWNlKG1fZGlza0NhY2hlRGlyZWN0b3J5LCBkaXNrRnJlZVNpemUp
KSB7CisgICAgaWYgKEZpbGVTeXN0ZW06OmdldFZvbHVtZUZyZWVTcGFjZShtX2Rpc2tDYWNoZURp
cmVjdG9yeSwgZGlza0ZyZWVTaXplKSkgewogICAgICAgICAvLyBBcyBhIGZ1ZGdlIGZhY3Rvciwg
dXNlIDEwMDAgaW5zdGVhZCBvZiAxMDI0LCBpbiBjYXNlIHRoZSByZXBvcnRlZCBieXRlCiAgICAg
ICAgIC8vIGNvdW50IGRvZXNuJ3QgYWxpZ24gZXhhY3RseSB0byBhIG1lZ2FieXRlIGJvdW5kYXJ5
LgogICAgICAgICBkaXNrRnJlZVNpemUgLz0gS0IgKiAxMDAwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCmlu
ZGV4IGYxN2ZkOWY5MmJlNWQyYTUwNTQ1YzA3OTllMzdkOWFlMGNmM2VmYmQuLjFlM2UxMWIxOThj
MzUyNzIwYTAzZjU3OWQyOTk0N2Y5YmVlZmRiNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKQEAgLTUy
LDcgKzUyLDcgQEAgU3RyaW5nIEVuZ2luZTo6Y2FjaGVzUm9vdFBhdGgoY29uc3QgV2ViQ29yZTo6
Q2xpZW50T3JpZ2luJiBvcmlnaW4pCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICBLZXkga2V5
KG9yaWdpbi50b3BPcmlnaW4udG9TdHJpbmcoKSwgb3JpZ2luLmNsaWVudE9yaWdpbi50b1N0cmlu
ZygpLCB7IH0sIHsgfSwgc2FsdCgpKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJvb3RQYXRoKCksIGtleS5oYXNoQXNTdHJpbmcoKSk7
CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyb290UGF0
aCgpLCBrZXkuaGFzaEFzU3RyaW5nKCkpOwogfQogCiBFbmdpbmU6On5FbmdpbmUoKQpAQCAtMjkx
LDkgKzI5MSw5IEBAIHZvaWQgRW5naW5lOjppbml0aWFsaXplKENvbXBsZXRpb25DYWxsYmFjayYm
IGNhbGxiYWNrKQogICAgIGlmICghc2hvdWxkQ29tcHV0ZVNhbHQpCiAgICAgICAgIHJldHVybjsK
IAotICAgIFN0cmluZyBzYWx0UGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChtX3Jvb3RQYXRoLCAic2FsdCJfcyk7CisgICAgU3RyaW5nIHNhbHRQYXRo
ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fcm9vdFBhdGgsICJzYWx0
Il9zKTsKICAgICBtX2lvUXVldWUtPmRpc3BhdGNoKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFr
UHRyKHRoaXMpLCBzYWx0UGF0aCA9IFdURk1vdmUoc2FsdFBhdGgpXSAoKSBtdXRhYmxlIHsKLSAg
ICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKG1fcm9vdFBhdGgp
OworICAgICAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMobV9yb290UGF0aCk7CiAg
ICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgd2Vha1RoaXMgPSBXVEZNb3Zl
KHdlYWtUaGlzKSwgc2FsdCA9IHJlYWRPck1ha2VTYWx0KHNhbHRQYXRoKV0oKSBtdXRhYmxlIHsK
ICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAt
MzgzLDkgKzM4Myw5IEBAIHZvaWQgRW5naW5lOjp3cml0ZUZpbGUoY29uc3QgU3RyaW5nJiBmaWxl
bmFtZSwgTmV0d29ya0NhY2hlOjpEYXRhJiYgZGF0YSwgV2ViQ29yCiAgICAgbV9wZW5kaW5nV3Jp
dGVDYWxsYmFja3MuYWRkKCsrbV9wZW5kaW5nQ2FsbGJhY2tzQ291bnRlciwgV1RGTW92ZShjYWxs
YmFjaykpOwogICAgIG1faW9RdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdl
YWtQdHIodGhpcyksIGlkZW50aWZpZXIgPSBtX3BlbmRpbmdDYWxsYmFja3NDb3VudGVyLCBkYXRh
ID0gV1RGTW92ZShkYXRhKSwgZmlsZW5hbWUgPSBmaWxlbmFtZS5pc29sYXRlZENvcHkoKV0oKSBt
dXRhYmxlIHsKIAotICAgICAgICBTdHJpbmcgZGlyZWN0b3J5UGF0aCA9IFdlYkNvcmU6OkZpbGVT
eXN0ZW06OmRpcmVjdG9yeU5hbWUoZmlsZW5hbWUpOwotICAgICAgICBpZiAoIVdlYkNvcmU6OkZp
bGVTeXN0ZW06OmZpbGVFeGlzdHMoZGlyZWN0b3J5UGF0aCkpCi0gICAgICAgICAgICBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoZGlyZWN0b3J5UGF0aCk7CisgICAgICAg
IFN0cmluZyBkaXJlY3RvcnlQYXRoID0gRmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShmaWxlbmFt
ZSk7CisgICAgICAgIGlmICghRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhkaXJlY3RvcnlQYXRoKSkK
KyAgICAgICAgICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhkaXJlY3RvcnlQYXRo
KTsKIAogICAgICAgICBhdXRvIGNoYW5uZWwgPSBJT0NoYW5uZWw6Om9wZW4oZmlsZW5hbWUsIElP
Q2hhbm5lbDo6VHlwZTo6Q3JlYXRlKTsKICAgICAgICAgY2hhbm5lbC0+d3JpdGUoMCwgZGF0YSwg
bnVsbHB0ciwgW3RoaXMsIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIGlkZW50aWZpZXJd
KGludCBlcnJvcikgbXV0YWJsZSB7CkBAIC00NDUsNyArNDQ1LDcgQEAgdm9pZCBFbmdpbmU6OnJl
bW92ZUZpbGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
bV9pb1F1ZXVlLT5kaXNwYXRjaChbZmlsZW5hbWUgPSBmaWxlbmFtZS5pc29sYXRlZENvcHkoKV0o
KSBtdXRhYmxlIHsKLSAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShmaWxl
bmFtZSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZmlsZW5hbWUpOwogICAgIH0p
OwogfQogCkBAIC00ODcsOCArNDg3LDggQEAgdm9pZCBFbmdpbmU6OmZldGNoRW50cmllcyhib29s
IHNob3VsZENvbXB1dGVTaXplLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmUKICAgICB9
CiAKICAgICBhdXRvIHRhc2tDb3VudGVyID0gUmVhZE9yaWdpbnNUYXNrQ291bnRlcjo6Y3JlYXRl
KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICBmb3IgKGF1dG8mIGZvbGRlclBhdGgg
OiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KG1fcm9vdFBhdGgsICIqIikpIHsK
LSAgICAgICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlSXNEaXJlY3RvcnkoZm9sZGVy
UGF0aCwgV2ViQ29yZTo6RmlsZVN5c3RlbTo6U2hvdWxkRm9sbG93U3ltYm9saWNMaW5rczo6Tm8p
KQorICAgIGZvciAoYXV0byYgZm9sZGVyUGF0aCA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3Rvcnko
bV9yb290UGF0aCwgIioiKSkgeworICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVJc0RpcmVj
dG9yeShmb2xkZXJQYXRoLCBGaWxlU3lzdGVtOjpTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpO
bykpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgQ2FjaGVzOjpyZXRyaWV2ZU9yaWdp
bkZyb21EaXJlY3RvcnkoZm9sZGVyUGF0aCwgKm1faW9RdWV1ZSwgW3Byb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgc2hvdWxkQ29tcHV0ZVNpemUsIHRhc2tDb3VudGVyID0gdGFza0NvdW50
ZXIuY29weVJlZigpXSAoYXV0byYmIG9yaWdpbikgbXV0YWJsZSB7CiAgICAgICAgICAgICBBU1NF
UlQoUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtNTMxLDggKzUzMSw4IEBAIHZvaWQgRW5naW5lOjpj
bGVhckFsbENhY2hlc0Zyb21EaXNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlCiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIG1faW9RdWV1
ZS0+ZGlzcGF0Y2goW3BhdGggPSBtX3Jvb3RQYXRoLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAg
ICBmb3IgKGF1dG8mIGZpbGVuYW1lIDogV2ViQ29yZTo6RmlsZVN5c3RlbTo6bGlzdERpcmVjdG9y
eShwYXRoLCAiKiIpKSB7Ci0gICAgICAgICAgICBpZiAoV2ViQ29yZTo6RmlsZVN5c3RlbTo6Zmls
ZUlzRGlyZWN0b3J5KGZpbGVuYW1lLCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpTaG91bGRGb2xsb3dT
eW1ib2xpY0xpbmtzOjpObykpCisgICAgICAgIGZvciAoYXV0byYgZmlsZW5hbWUgOiBGaWxlU3lz
dGVtOjpsaXN0RGlyZWN0b3J5KHBhdGgsICIqIikpIHsKKyAgICAgICAgICAgIGlmIChGaWxlU3lz
dGVtOjpmaWxlSXNEaXJlY3RvcnkoZmlsZW5hbWUsIEZpbGVTeXN0ZW06OlNob3VsZEZvbGxvd1N5
bWJvbGljTGlua3M6Ok5vKSkKICAgICAgICAgICAgICAgICBkZWxldGVEaXJlY3RvcnlSZWN1cnNp
dmVseShmaWxlbmFtZSk7CiAgICAgICAgIH0KICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3Bh
dGNoKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKQEAgLTU2Miw4ICs1NjIsOCBAQCB2b2lk
IEVuZ2luZTo6Y2xlYXJDYWNoZXNGb3JPcmlnaW5Gcm9tRGlzayhjb25zdCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEmIG9yaQogCiAgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxs
YmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAKLSAg
ICBmb3IgKGF1dG8mIGZvbGRlclBhdGggOiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpsaXN0RGlyZWN0
b3J5KG1fcm9vdFBhdGgsICIqIikpIHsKLSAgICAgICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVt
OjpmaWxlSXNEaXJlY3RvcnkoZm9sZGVyUGF0aCwgV2ViQ29yZTo6RmlsZVN5c3RlbTo6U2hvdWxk
Rm9sbG93U3ltYm9saWNMaW5rczo6Tm8pKQorICAgIGZvciAoYXV0byYgZm9sZGVyUGF0aCA6IEZp
bGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobV9yb290UGF0aCwgIioiKSkgeworICAgICAgICBpZiAo
IUZpbGVTeXN0ZW06OmZpbGVJc0RpcmVjdG9yeShmb2xkZXJQYXRoLCBGaWxlU3lzdGVtOjpTaG91
bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpObykpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgQ2FjaGVzOjpyZXRyaWV2ZU9yaWdpbkZyb21EaXJlY3RvcnkoZm9sZGVyUGF0aCwgKm1faW9R
dWV1ZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgb3JpZ2luLCBjYWxs
YmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpLCBmb2xkZXJQYXRo
XSAoT3B0aW9uYWw8V2ViQ29yZTo6Q2xpZW50T3JpZ2luPiYmIGZvbGRlck9yaWdpbikgbXV0YWJs
ZSB7CiAgICAgICAgICAgICBpZiAoIWZvbGRlck9yaWdpbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2Fj
aGVzLmNwcAppbmRleCAxOTEzNDcwY2RkMjIwY2UzYmU5NzVkZjk5MDBlZjM1MGQwNzE3NjNjLi4x
ZjYwOGNmNTI1Zjk5NmIyNGVhNDExMzYwMGU4ZTI5Y2IyODdjMjdjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VF
bmdpbmVDYWNoZXMuY3BwCkBAIC00MiwxMiArNDIsMTIgQEAgdXNpbmcgbmFtZXNwYWNlIE5ldHdv
cmtDYWNoZTsKIAogc3RhdGljIGlubGluZSBTdHJpbmcgY2FjaGVzTGlzdEZpbGVuYW1lKGNvbnN0
IFN0cmluZyYgY2FjaGVzUm9vdFBhdGgpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChjYWNoZXNSb290UGF0aCwgImNhY2hlc2xpc3Qi
X3MpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY2Fj
aGVzUm9vdFBhdGgsICJjYWNoZXNsaXN0Il9zKTsKIH0KIAogc3RhdGljIGlubGluZSBTdHJpbmcg
Y2FjaGVzT3JpZ2luRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBjYWNoZXNSb290UGF0aCkKIHsKLSAg
ICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNh
Y2hlc1Jvb3RQYXRoLCAib3JpZ2luIl9zKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KGNhY2hlc1Jvb3RQYXRoLCAib3JpZ2luIl9zKTsKIH0KIAogQ2Fj
aGVzOjp+Q2FjaGVzKCkKQEAgLTU4LDcgKzU4LDcgQEAgQ2FjaGVzOjp+Q2FjaGVzKCkKIHZvaWQg
Q2FjaGVzOjpyZXRyaWV2ZU9yaWdpbkZyb21EaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBmb2xkZXJQ
YXRoLCBXb3JrUXVldWUmIHF1ZXVlLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9u
YWw8V2ViQ29yZTo6Q2xpZW50T3JpZ2luPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBxdWV1ZS5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSwgZmlsZW5hbWUgPSBjYWNoZXNPcmlnaW5GaWxlbmFtZShmb2xkZXJQYXRoKV0oKSBt
dXRhYmxlIHsKLSAgICAgICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGZp
bGVuYW1lKSkgeworICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZmlsZW5hbWUp
KSB7CiAgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0KTsKICAgICAgICAgICAgIH0pOwpA
QCAtNDA4LDcgKzQwOCw3IEBAIHZvaWQgQ2FjaGVzOjpyZWFkQ2FjaGVzRnJvbURpc2soV1RGOjpG
dW5jdGlvbjx2b2lkKEV4cGVjdGVkPFZlY3RvcjxDYWNoZT4sIEVycm9yCiAgICAgfQogCiAgICAg
YXV0byBmaWxlbmFtZSA9IGNhY2hlc0xpc3RGaWxlbmFtZShtX3Jvb3RQYXRoKTsKLSAgICBpZiAo
IVdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZmlsZW5hbWUpKSB7CisgICAgaWYgKCFG
aWxlU3lzdGVtOjpmaWxlRXhpc3RzKGZpbGVuYW1lKSkgewogICAgICAgICBjYWxsYmFjayhWZWN0
b3I8Q2FjaGU+IHsgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKaW5kZXggZmQyN2Nm
MDZmZTQzMWZkMzg0Y2EyZjNiN2U0OTFmNmZhYzFkZTA4Ni4uYmE1YzhiMjMzODE2NWIyMzY1ZDA3
NjUzYWViMTE4OGQ3NmY4YTY3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcApAQCAtMzIsMTMgKzMyLDEzIEBACiAjaW5jbHVk
ZSAiTmV0d29ya0NhY2hlU3RvcmFnZS5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9DYWNoZVZhbGlkYXRpb24uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0Zp
bGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUVFBIZWFkZXJOYW1lcy5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvTG93UG93ZXJNb2RlTm90aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9TaGFyZWRCdWZmZXIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1
ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAj
aW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KQEAgLTUxLDcgKzUxLDcgQEAKIG5hbWVzcGFjZSBXZWJL
aXQgewogbmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7CiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OjpGaWxlU3lzdGVtOwordXNpbmcgbmFtZXNwYWNlIEZpbGVTeXN0ZW07CiAKIHN0YXRpYyBjb25z
dCBBdG9taWNTdHJpbmcmIHJlc291cmNlVHlwZSgpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUJsb2JTdG9yYWdlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQmxvYlN0b3JhZ2Uu
Y3BwCmluZGV4IGY3M2M1MGRhMTk0NzkzMzY1ZDZmNTFlMDYxNDFiNTIzNzI3ZTcxZWUuLjk1Mzhk
YTY0MWI0Mjc0MDAyYjI3OWFkYWE4N2MxNTQyZDM2YTAyN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQmxvYlN0b3JhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQmxvYlN0
b3JhZ2UuY3BwCkBAIC0yOCw4ICsyOCw4IEBACiAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5j
bHVkZSAiTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5
c3RlbS5oPgogI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4K
ICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9TSEExLmg+CiAKQEAgLTU3
LDE1ICs1NywxNSBAQCB2b2lkIEJsb2JTdG9yYWdlOjpzeW5jaHJvbml6ZSgpCiB7CiAgICAgQVNT
RVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjptYWtl
QWxsRGlyZWN0b3JpZXMoYmxvYkRpcmVjdG9yeVBhdGgoKSk7CisgICAgRmlsZVN5c3RlbTo6bWFr
ZUFsbERpcmVjdG9yaWVzKGJsb2JEaXJlY3RvcnlQYXRoKCkpOwogCiAgICAgbV9hcHByb3hpbWF0
ZVNpemUgPSAwOwogICAgIGF1dG8gYmxvYkRpcmVjdG9yeSA9IGJsb2JEaXJlY3RvcnlQYXRoKCk7
CiAgICAgdHJhdmVyc2VEaXJlY3RvcnkoYmxvYkRpcmVjdG9yeSwgW3RoaXMsICZibG9iRGlyZWN0
b3J5XShjb25zdCBTdHJpbmcmIG5hbWUsIERpcmVjdG9yeUVudHJ5VHlwZSB0eXBlKSB7CiAgICAg
ICAgIGlmICh0eXBlICE9IERpcmVjdG9yeUVudHJ5VHlwZTo6RmlsZSkKICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgYXV0byBwYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KGJsb2JEaXJlY3RvcnksIG5hbWUpOwotICAgICAgICBhdXRvIGZpbGVQ
YXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgp
OworICAgICAgICBhdXRvIHBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoYmxvYkRpcmVjdG9yeSwgbmFtZSk7CisgICAgICAgIGF1dG8gZmlsZVBhdGggPSBGaWxlU3lz
dGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAgICAgICAgIHN0cnVjdCBzdGF0
IHN0YXQ7CiAgICAgICAgIDo6c3RhdChmaWxlUGF0aC5kYXRhKCksICZzdGF0KTsKICAgICAgICAg
Ly8gTm8gY2xpZW50cyBsZWZ0IGZvciB0aGlzIGJsb2IuCkBAIC04MSw3ICs4MSw3IEBAIHZvaWQg
QmxvYlN0b3JhZ2U6OnN5bmNocm9uaXplKCkKIFN0cmluZyBCbG9iU3RvcmFnZTo6YmxvYlBhdGhG
b3JIYXNoKGNvbnN0IFNIQTE6OkRpZ2VzdCYgaGFzaCkgY29uc3QKIHsKICAgICBhdXRvIGhhc2hB
c1N0cmluZyA9IFNIQTE6OmhleERpZ2VzdChoYXNoKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGJsb2JEaXJlY3RvcnlQYXRoKCksIFN0
cmluZzo6ZnJvbVVURjgoaGFzaEFzU3RyaW5nKSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChibG9iRGlyZWN0b3J5UGF0aCgpLCBTdHJpbmc6OmZyb21V
VEY4KGhhc2hBc1N0cmluZykpOwogfQogCiBCbG9iU3RvcmFnZTo6QmxvYiBCbG9iU3RvcmFnZTo6
YWRkKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgRGF0YSYgZGF0YSkKQEAgLTkzLDggKzkzLDgg
QEAgQmxvYlN0b3JhZ2U6OkJsb2IgQmxvYlN0b3JhZ2U6OmFkZChjb25zdCBTdHJpbmcmIHBhdGgs
IGNvbnN0IERhdGEmIGRhdGEpCiAgICAgaWYgKGRhdGEuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4geyBkYXRhLCBoYXNoIH07CiAKLSAgICBhdXRvIGJsb2JQYXRoID0gV2ViQ29yZTo6RmlsZVN5
c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGJsb2JQYXRoRm9ySGFzaChoYXNoKSk7Ci0g
ICAgYXV0byBsaW5rUGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihwYXRoKTsKKyAgICBhdXRvIGJsb2JQYXRoID0gRmlsZVN5c3RlbTo6ZmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKGJsb2JQYXRoRm9ySGFzaChoYXNoKSk7CisgICAgYXV0byBsaW5rUGF0
aCA9IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKICAgICB1bmxp
bmsobGlua1BhdGguZGF0YSgpKTsKIAogICAgIGJvb2wgYmxvYkV4aXN0cyA9IGFjY2VzcyhibG9i
UGF0aC5kYXRhKCksIEZfT0spICE9IC0xOwpAQCAtMTI3LDcgKzEyNyw3IEBAIEJsb2JTdG9yYWdl
OjpCbG9iIEJsb2JTdG9yYWdlOjpnZXQoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIEFTU0VS
VCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgYXV0byBsaW5rUGF0aCA9IFdlYkNvcmU6OkZp
bGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKKyAgICBhdXRvIGxpbmtQ
YXRoID0gRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwogICAgIGF1
dG8gZGF0YSA9IG1hcEZpbGUobGlua1BhdGguZGF0YSgpKTsKIAogICAgIHJldHVybiB7IGRhdGEs
IGNvbXB1dGVTSEExKGRhdGEsIG1fc2FsdCkgfTsKQEAgLTEzNyw3ICsxMzcsNyBAQCB2b2lkIEJs
b2JTdG9yYWdlOjpyZW1vdmUoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIEFTU0VSVCghUnVu
TG9vcDo6aXNNYWluKCkpOwogCi0gICAgYXV0byBsaW5rUGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0
ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKKyAgICBhdXRvIGxpbmtQYXRoID0g
RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwogICAgIHVubGluayhs
aW5rUGF0aC5kYXRhKCkpOwogfQogCkBAIC0xNDUsNyArMTQ1LDcgQEAgdW5zaWduZWQgQmxvYlN0
b3JhZ2U6OnNoYXJlQ291bnQoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIEFTU0VSVCghUnVu
TG9vcDo6aXNNYWluKCkpOwogCi0gICAgYXV0byBsaW5rUGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0
ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKKyAgICBhdXRvIGxpbmtQYXRoID0g
RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwogICAgIHN0cnVjdCBz
dGF0IHN0YXQ7CiAgICAgaWYgKDo6c3RhdChsaW5rUGF0aC5kYXRhKCksICZzdGF0KSA8IDApCiAg
ICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5jcHAKaW5kZXggOWUzMTg5NDNkN2M2MTM4Y2FhMWMx
ZGMzMGYzYTJmMzVmMzMwMjlmMi4uMWEzMmFhOWEwZTUzYjQ2OTU3YWE4ZWIzYmIyMzg1NmYwYTg5
OWYzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZURhdGEuY3BwCkBAIC0yNiw5ICsyNiw5IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiTmV0d29ya0NhY2hlRGF0YS5oIgogCi0jaW5jbHVkZSA8V2ViQ29yZS9G
aWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8ZmNudGwuaD4KICNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3Jh
cGhpY2FsbHlSYW5kb21OdW1iZXIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiAj
aWYgIU9TKFdJTkRPV1MpCiAjaW5jbHVkZSA8c3lzL21tYW4uaD4KQEAgLTE1Niw3ICsxNTYsNyBA
QCBzdGF0aWMgU2FsdCBtYWtlU2FsdCgpCiBPcHRpb25hbDxTYWx0PiByZWFkT3JNYWtlU2FsdChj
b25zdCBTdHJpbmcmIHBhdGgpCiB7CiAjaWYgIU9TKFdJTkRPV1MpCi0gICAgYXV0byBjcGF0aCA9
IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKKyAg
ICBhdXRvIGNwYXRoID0gRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgp
OwogICAgIGF1dG8gZmQgPSBvcGVuKGNwYXRoLmRhdGEoKSwgT19SRE9OTFksIDApOwogICAgIFNh
bHQgc2FsdDsKICAgICBhdXRvIGJ5dGVzUmVhZCA9IHJlYWQoZmQsIHNhbHQuZGF0YSgpLCBzYWx0
LnNpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmNwcAppbmRleCAyNWJlZjdmOTJlOGViMzY2
YTk0ZjRiY2QzNzk4M2IxNmE5ZGUzNTA4Li5iMGIyZTcxNWU2NWRkM2E5MTNjZjcwZDcwMzY1YTQ1
MGJiZWI5OTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5jcHAKQEAgLTI3LDggKzI3LDggQEAK
ICNpbmNsdWRlICJOZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmgiCiAKICNpbmNsdWRlICJMb2dnaW5n
LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2Vy
dGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9GdW5j
dGlvbi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApAQCAtNzAsNyArNzAsNyBA
QCBzdGF0aWMgRGlyZWN0b3J5RW50cnlUeXBlIGRpcmVjdG9yeUVudHJ5VHlwZSh1aW50OF90IGR0
eXBlKQogdm9pZCB0cmF2ZXJzZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IEZ1
bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIERpcmVjdG9yeUVudHJ5VHlwZSk+JiBmdW5jdGlv
bikKIHsKICNpZiAhT1MoV0lORE9XUykKLSAgICBESVIqIGRpciA9IG9wZW5kaXIoV2ViQ29yZTo6
RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSk7CisgICAg
RElSKiBkaXIgPSBvcGVuZGlyKEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihw
YXRoKS5kYXRhKCkpOwogICAgIGlmICghZGlyKQogICAgICAgICByZXR1cm47CiAgICAgZGlyZW50
KiBkcDsKQEAgLTk0LDEwICs5NCwxMCBAQCB2b2lkIHRyYXZlcnNlRGlyZWN0b3J5KGNvbnN0IFN0
cmluZyYgcGF0aCwgY29uc3QgRnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgRAogdm9pZCBk
ZWxldGVEaXJlY3RvcnlSZWN1cnNpdmVseShjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgdHJh
dmVyc2VEaXJlY3RvcnkocGF0aCwgWyZwYXRoXShjb25zdCBTdHJpbmcmIG5hbWUsIERpcmVjdG9y
eUVudHJ5VHlwZSB0eXBlKSB7Ci0gICAgICAgIFN0cmluZyBlbnRyeVBhdGggPSBXZWJDb3JlOjpG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGF0aCwgbmFtZSk7CisgICAgICAg
IFN0cmluZyBlbnRyeVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
cGF0aCwgbmFtZSk7CiAgICAgICAgIHN3aXRjaCAodHlwZSkgewogICAgICAgICBjYXNlIERpcmVj
dG9yeUVudHJ5VHlwZTo6RmlsZToKLSAgICAgICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRl
bGV0ZUZpbGUoZW50cnlQYXRoKTsKKyAgICAgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUo
ZW50cnlQYXRoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIERpcmVjdG9yeUVu
dHJ5VHlwZTo6RGlyZWN0b3J5OgogICAgICAgICAgICAgZGVsZXRlRGlyZWN0b3J5UmVjdXJzaXZl
bHkoZW50cnlQYXRoKTsKQEAgLTEwNSwxOSArMTA1LDE5IEBAIHZvaWQgZGVsZXRlRGlyZWN0b3J5
UmVjdXJzaXZlbHkoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgICAgICAvLyBUaGlzIGRvZXNuJ3Qg
Zm9sbG93IHN5bWxpbmtzLgogICAgICAgICB9CiAgICAgfSk7Ci0gICAgV2ViQ29yZTo6RmlsZVN5
c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkocGF0aCk7CisgICAgRmlsZVN5c3RlbTo6ZGVsZXRl
RW1wdHlEaXJlY3RvcnkocGF0aCk7CiB9CiAKIEZpbGVUaW1lcyBmaWxlVGltZXMoY29uc3QgU3Ry
aW5nJiBwYXRoKQogewogI2lmIEhBVkUoU1RBVF9CSVJUSFRJTUUpCiAgICAgc3RydWN0IHN0YXQg
ZmlsZUluZm87Ci0gICAgaWYgKHN0YXQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSwgJmZpbGVJbmZvKSkKKyAgICBpZiAoc3RhdChGaWxl
U3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpLCAmZmlsZUluZm8p
KQogICAgICAgICByZXR1cm4geyB9OwogICAgIHJldHVybiB7IFdhbGxUaW1lOjpmcm9tUmF3U2Vj
b25kcyhmaWxlSW5mby5zdF9iaXJ0aHRpbWUpLCBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoZmls
ZUluZm8uc3RfbXRpbWUpIH07CiAjZWxpZiBVU0UoU09VUCkKICAgICAvLyBUaGVyZSdzIG5vIHN0
X2JpcnRodGltZSBpbiBzb21lIG9wZXJhdGluZyBzeXN0ZW1zIGxpa2UgTGludXgsIHNvIHdlIHVz
ZSB4YXR0cnMgdG8gc2V0L2dldCB0aGUgY3JlYXRpb24gdGltZS4KLSAgICBHUmVmUHRyPEdGaWxl
PiBmaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSkpOworICAgIEdSZWZQdHI8
R0ZpbGU+IGZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0aChGaWxlU3lzdGVtOjpm
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpKSk7CiAgICAgR1JlZlB0cjxHRmls
ZUluZm8+IGZpbGVJbmZvID0gYWRvcHRHUmVmKGdfZmlsZV9xdWVyeV9pbmZvKGZpbGUuZ2V0KCks
ICJ4YXR0cjo6YmlydGh0aW1lLHRpbWU6Om1vZGlmaWVkIiwgR19GSUxFX1FVRVJZX0lORk9fTk9O
RSwgbnVsbHB0ciwgbnVsbHB0cikpOwogICAgIGlmICghZmlsZUluZm8pCiAgICAgICAgIHJldHVy
biB7IH07CkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCB1cGRhdGVGaWxlTW9kaWZpY2F0aW9uVGlt
ZUlmTmVlZGVkKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICB9CiAjaWYgIU9TKFdJTkRPV1MpCiAg
ICAgLy8gVGhpcyByZWFsbHkgdXBkYXRlcyBib3RoIHRoZSBhY2Nlc3MgdGltZSBhbmQgdGhlIG1v
ZGlmaWNhdGlvbiB0aW1lLgotICAgIHV0aW1lcyhXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpLCBudWxscHRyKTsKKyAgICB1dGltZXMoRmls
ZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSwgbnVsbHB0cik7
CiAjZW5kaWYKIH0KIApAQCAtMTU2LDcgKzE1Niw3IEBAIGJvb2wgaXNTYWZlVG9Vc2VNZW1vcnlN
YXBGb3JQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICBhdHRybGlzdCBhdHRyTGlzdCA9IHsg
fTsKICAgICBhdHRyTGlzdC5iaXRtYXBjb3VudCA9IEFUVFJfQklUX01BUF9DT1VOVDsKICAgICBh
dHRyTGlzdC5jb21tb25hdHRyID0gQVRUUl9DTU5fREFUQV9QUk9URUNUX0ZMQUdTOwotICAgIGlu
dDMyX3QgZXJyb3IgPSBnZXRhdHRybGlzdChXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpLCAmYXR0ckxpc3QsICZhdHRyQnVmZmVyLCBzaXpl
b2YoYXR0ckJ1ZmZlciksIEZTT1BUX05PRk9MTE9XKTsKKyAgICBpbnQzMl90IGVycm9yID0gZ2V0
YXR0cmxpc3QoRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEo
KSwgJmF0dHJMaXN0LCAmYXR0ckJ1ZmZlciwgc2l6ZW9mKGF0dHJCdWZmZXIpLCBGU09QVF9OT0ZP
TExPVyk7CiAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdv
cmssICJVbmFibGUgdG8gZ2V0IGNhY2hlIGRpcmVjdG9yeSBwcm90ZWN0aW9uIGNsYXNzLCBkaXNh
YmxpbmcgdXNlIG9mIHNoYXJlZCBtYXBwZWQgbWVtb3J5Iik7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlRmlsZVN5c3RlbS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmgKaW5kZXggN2RjY2U2YzRjMzY3MjhlOTMxNTgzM2E1MzI5
YmQ1NmQ1YzQxMmI4YS4uMTgzMWEzNTFjOWIwZmY1MDVkZjlhZGM3ZjdjMDNhZjcwMWQ2Yzg4MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVGaWxlU3lzdGVtLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmgKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNl
CiAKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5
c3RlbS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVJT0NoYW5uZWxDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlSU9DaGFubmVsQ29jb2EubW0KaW5kZXggMzY5YmNmOTczZjJkY2VlMGEzZDQz
OTYzNDUzNzBiNjQ2MjFlOWYwOC4uYzY1MjE2NGNhMTg4YTA3ZGE1N2JjZGU3NWYzYTIyNTJlMTgy
ZjA4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVJT0NoYW5uZWxDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbENvY29hLm1tCkBAIC00MSw3ICs0MSw3IEBA
IElPQ2hhbm5lbDo6SU9DaGFubmVsKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIFR5cGUgdHlwZSkK
ICAgICA6IG1fcGF0aChmaWxlUGF0aCkKICAgICAsIG1fdHlwZSh0eXBlKQogewotICAgIGF1dG8g
cGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWxl
UGF0aCk7CisgICAgYXV0byBwYXRoID0gRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKGZpbGVQYXRoKTsKICAgICBpbnQgb2ZsYWc7CiAgICAgbW9kZV90IG1vZGU7CiAgICAgYm9v
bCB1c2VMb3dJT1ByaW9yaXR5ID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbFNvdXAuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxTb3VwLmNw
cAppbmRleCA1MzkyYzc5MDU2OWZkNjY1N2EyMWEyNjIwY2IwNTFlZmJlZWYwNDU5Li5iNTZmOTY1
NTMxMmNkYWQwYzEwOGRjY2M2ZWYxNzI5OTVhZWQxYTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbFNvdXAuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFu
bmVsU291cC5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgSU9DaGFubmVsOjpJT0NoYW5uZWwoY29uc3Qg
U3RyaW5nJiBmaWxlUGF0aCwgVHlwZSB0eXBlKQogICAgIDogbV9wYXRoKGZpbGVQYXRoKQogICAg
ICwgbV90eXBlKHR5cGUpCiB7Ci0gICAgYXV0byBwYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVQYXRoKTsKKyAgICBhdXRvIHBhdGggPSBGaWxl
U3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZVBhdGgpOwogICAgIEdSZWZQdHI8
R0ZpbGU+IGZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0aChwYXRoLmRhdGEoKSkp
OwogICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgY2FzZSBUeXBlOjpDcmVhdGU6IHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3Rh
dGlzdGljcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZVN0YXRpc3RpY3MuY3BwCmluZGV4IGI0YTEzMTRlYjRiMTVlZTAzMzJmNzRlOTIxZTJmYzg3
MTkwNjRjMzcuLjYxYmVmMWUxMWMzY2Y4Mzc1ZjczOTI1YjcyM2I5MTZmYjMxZWIzN2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3Rh
dGlzdGljcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTdGF0aXN0aWNzLmNwcApAQCAtNzcsNyArNzcsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8
U3RhdGlzdGljcz4gU3RhdGlzdGljczo6b3BlbihDYWNoZSYgY2FjaGUsIGNvbnN0IFN0cmluZyYg
Y2FjaGVQYQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBTdHJpbmcg
ZGF0YWJhc2VQYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KGNhY2hlUGF0aCwgU3RhdGlzdGljc0RhdGFiYXNlTmFtZSk7CisgICAgU3RyaW5nIGRhdGFi
YXNlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChjYWNoZVBhdGgs
IFN0YXRpc3RpY3NEYXRhYmFzZU5hbWUpOwogICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFN0
YXRpc3RpY3M+KGNhY2hlLCBkYXRhYmFzZVBhdGgpOwogfQogCkBAIC05OCw3ICs5OCw3IEBAIHZv
aWQgU3RhdGlzdGljczo6aW5pdGlhbGl6ZShjb25zdCBTdHJpbmcmIGRhdGFiYXNlUGF0aCkKICAg
ICBzZXJpYWxCYWNrZ3JvdW5kSU9RdWV1ZSgpLmRpc3BhdGNoKFt0aGlzLCBkYXRhYmFzZVBhdGgg
PSBkYXRhYmFzZVBhdGguaXNvbGF0ZWRDb3B5KCksIG5ldHdvcmtDYWNoZVBhdGggPSBtX2NhY2hl
LnJlY29yZHNQYXRoKCksIHN0YXJ0VGltZV0gewogICAgICAgICBXZWJDb3JlOjpTUUxpdGVUcmFu
c2FjdGlvbkluUHJvZ3Jlc3NBdXRvQ291bnRlciB0cmFuc2FjdGlvbkNvdW50ZXI7CiAKLSAgICAg
ICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoV2ViQ29yZTo6
RmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShkYXRhYmFzZVBhdGgpKSkKKyAgICAgICAgaWYgKCFG
aWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoRmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShk
YXRhYmFzZVBhdGgpKSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBMT0coTmV0d29y
a0NhY2hlLCAiKE5ldHdvcmtQcm9jZXNzKSBPcGVuaW5nIG5ldHdvcmsgY2FjaGUgc3RhdGlzdGlj
cyBkYXRhYmFzZSBhdCAlcy4uLiIsIGRhdGFiYXNlUGF0aC51dGY4KCkuZGF0YSgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3Rv
cmFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZVN0b3JhZ2UuY3BwCmluZGV4IDRlYTc0MzBmYTIwNDRlOTAxNGE4OTkwNGQ1YmJjMWViNjViNzlj
YzYuLmMyNmFhMWI5NmM3MTNhODAwMzdmZDFjNTc4NjVkYjk3MmI2NGFlZWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVT
dG9yYWdlLmNwcApAQCAtMTQ1LDI5ICsxNDUsMjkgQEAgcHVibGljOgogc3RhdGljIFN0cmluZyBt
YWtlVmVyc2lvbmVkRGlyZWN0b3J5UGF0aChjb25zdCBTdHJpbmcmIGJhc2VEaXJlY3RvcnlQYXRo
KQogewogICAgIFN0cmluZyB2ZXJzaW9uU3ViZGlyZWN0b3J5ID0gdmVyc2lvbkRpcmVjdG9yeVBy
ZWZpeCArIFN0cmluZzo6bnVtYmVyKFN0b3JhZ2U6OnZlcnNpb24pOwotICAgIHJldHVybiBXZWJD
b3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoYmFzZURpcmVjdG9yeVBh
dGgsIHZlcnNpb25TdWJkaXJlY3RvcnkpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQoYmFzZURpcmVjdG9yeVBhdGgsIHZlcnNpb25TdWJkaXJlY3Rvcnkp
OwogfQogCiBzdGF0aWMgU3RyaW5nIG1ha2VSZWNvcmRzRGlyZWN0b3J5UGF0aChjb25zdCBTdHJp
bmcmIGJhc2VEaXJlY3RvcnlQYXRoKQogewotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobWFrZVZlcnNpb25lZERpcmVjdG9yeVBhdGgoYmFz
ZURpcmVjdG9yeVBhdGgpLCByZWNvcmRzRGlyZWN0b3J5TmFtZSk7CisgICAgcmV0dXJuIEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtYWtlVmVyc2lvbmVkRGlyZWN0b3J5UGF0
aChiYXNlRGlyZWN0b3J5UGF0aCksIHJlY29yZHNEaXJlY3RvcnlOYW1lKTsKIH0KIAogc3RhdGlj
IFN0cmluZyBtYWtlQmxvYkRpcmVjdG9yeVBhdGgoY29uc3QgU3RyaW5nJiBiYXNlRGlyZWN0b3J5
UGF0aCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KG1ha2VWZXJzaW9uZWREaXJlY3RvcnlQYXRoKGJhc2VEaXJlY3RvcnlQYXRoKSwg
YmxvYnNEaXJlY3RvcnlOYW1lKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KG1ha2VWZXJzaW9uZWREaXJlY3RvcnlQYXRoKGJhc2VEaXJlY3RvcnlQYXRo
KSwgYmxvYnNEaXJlY3RvcnlOYW1lKTsKIH0KIAogc3RhdGljIFN0cmluZyBtYWtlU2FsdEZpbGVQ
YXRoKGNvbnN0IFN0cmluZyYgYmFzZURpcmVjdG9yeVBhdGgpCiB7Ci0gICAgcmV0dXJuIFdlYkNv
cmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtYWtlVmVyc2lvbmVkRGly
ZWN0b3J5UGF0aChiYXNlRGlyZWN0b3J5UGF0aCksIHNhbHRGaWxlTmFtZSk7CisgICAgcmV0dXJu
IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtYWtlVmVyc2lvbmVkRGlyZWN0
b3J5UGF0aChiYXNlRGlyZWN0b3J5UGF0aCksIHNhbHRGaWxlTmFtZSk7CiB9CiAKIFJlZlB0cjxT
dG9yYWdlPiBTdG9yYWdlOjpvcGVuKGNvbnN0IFN0cmluZyYgY2FjaGVQYXRoLCBNb2RlIG1vZGUp
CiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIGlmICghV2ViQ29yZTo6
RmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKG1ha2VWZXJzaW9uZWREaXJlY3RvcnlQYXRo
KGNhY2hlUGF0aCkpKQorICAgIGlmICghRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKG1h
a2VWZXJzaW9uZWREaXJlY3RvcnlQYXRoKGNhY2hlUGF0aCkpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICBhdXRvIHNhbHQgPSByZWFkT3JNYWtlU2FsdChtYWtlU2FsdEZpbGVQYXRoKGNh
Y2hlUGF0aCkpOwogICAgIGlmICghc2FsdCkKQEAgLTE4MCwxMyArMTgwLDEzIEBAIHZvaWQgdHJh
dmVyc2VSZWNvcmRzRmlsZXMoY29uc3QgU3RyaW5nJiByZWNvcmRzUGF0aCwgY29uc3QgU3RyaW5n
JiBleHBlY3RlZFR5cGUsCiAgICAgdHJhdmVyc2VEaXJlY3RvcnkocmVjb3Jkc1BhdGgsIFsmXShj
b25zdCBTdHJpbmcmIHBhcnRpdGlvbk5hbWUsIERpcmVjdG9yeUVudHJ5VHlwZSBlbnRyeVR5cGUp
IHsKICAgICAgICAgaWYgKGVudHJ5VHlwZSAhPSBEaXJlY3RvcnlFbnRyeVR5cGU6OkRpcmVjdG9y
eSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgU3RyaW5nIHBhcnRpdGlvblBhdGggPSBX
ZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3Jkc1BhdGgs
IHBhcnRpdGlvbk5hbWUpOworICAgICAgICBTdHJpbmcgcGFydGl0aW9uUGF0aCA9IEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmRzUGF0aCwgcGFydGl0aW9uTmFtZSk7
CiAgICAgICAgIHRyYXZlcnNlRGlyZWN0b3J5KHBhcnRpdGlvblBhdGgsIFsmXShjb25zdCBTdHJp
bmcmIGFjdHVhbFR5cGUsIERpcmVjdG9yeUVudHJ5VHlwZSBlbnRyeVR5cGUpIHsKICAgICAgICAg
ICAgIGlmIChlbnRyeVR5cGUgIT0gRGlyZWN0b3J5RW50cnlUeXBlOjpEaXJlY3RvcnkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgaWYgKCFleHBlY3RlZFR5cGUuaXNFbXB0
eSgpICYmIGV4cGVjdGVkVHlwZSAhPSBhY3R1YWxUeXBlKQogICAgICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgICAgIFN0cmluZyByZWNvcmREaXJlY3RvcnlQYXRoID0gV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhcnRpdGlvblBhdGgsIGFjdHVhbFR5
cGUpOworICAgICAgICAgICAgU3RyaW5nIHJlY29yZERpcmVjdG9yeVBhdGggPSBGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGFydGl0aW9uUGF0aCwgYWN0dWFsVHlwZSk7CiAg
ICAgICAgICAgICB0cmF2ZXJzZURpcmVjdG9yeShyZWNvcmREaXJlY3RvcnlQYXRoLCBbJmZ1bmN0
aW9uLCAmcmVjb3JkRGlyZWN0b3J5UGF0aCwgJmFjdHVhbFR5cGVdKGNvbnN0IFN0cmluZyYgZmls
ZU5hbWUsIERpcmVjdG9yeUVudHJ5VHlwZSBlbnRyeVR5cGUpIHsKICAgICAgICAgICAgICAgICBp
ZiAoZW50cnlUeXBlICE9IERpcmVjdG9yeUVudHJ5VHlwZTo6RmlsZSB8fCBmaWxlTmFtZS5sZW5n
dGgoKSA8IEtleTo6aGFzaFN0cmluZ0xlbmd0aCgpKQogICAgICAgICAgICAgICAgICAgICByZXR1
cm47CkBAIC0yMDYsMTggKzIwNiwxOCBAQCBzdGF0aWMgdm9pZCBkZWxldGVFbXB0eVJlY29yZHNE
aXJlY3Rvcmllcyhjb25zdCBTdHJpbmcmIHJlY29yZHNQYXRoKQogICAgICAgICAgICAgcmV0dXJu
OwogCiAgICAgICAgIC8vIERlbGV0ZSBbdHlwZV0gc3ViLWZvbGRlcnMuCi0gICAgICAgIFN0cmlu
ZyBwYXJ0aXRpb25QYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KHJlY29yZHNQYXRoLCBwYXJ0aXRpb25OYW1lKTsKKyAgICAgICAgU3RyaW5nIHBhcnRp
dGlvblBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3Jkc1Bh
dGgsIHBhcnRpdGlvbk5hbWUpOwogICAgICAgICB0cmF2ZXJzZURpcmVjdG9yeShwYXJ0aXRpb25Q
YXRoLCBbJnBhcnRpdGlvblBhdGhdKGNvbnN0IFN0cmluZyYgc3ViZGlyTmFtZSwgRGlyZWN0b3J5
RW50cnlUeXBlIGVudHJ5VHlwZSkgewogICAgICAgICAgICAgaWYgKGVudHJ5VHlwZSAhPSBEaXJl
Y3RvcnlFbnRyeVR5cGU6OkRpcmVjdG9yeSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAg
ICAgICAgICAgIC8vIExldCBzeXN0ZW0gZmlndXJlIG91dCBpZiBpdCBpcyByZWFsbHkgZW1wdHku
Ci0gICAgICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShX
ZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGFydGl0aW9uUGF0
aCwgc3ViZGlyTmFtZSkpOworICAgICAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJl
Y3RvcnkoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhcnRpdGlvblBhdGgs
IHN1YmRpck5hbWUpKTsKICAgICAgICAgfSk7CiAKICAgICAgICAgLy8gRGVsZXRlIFtQYXJ0aXRp
b25dIGZvbGRlcnMuCiAgICAgICAgIC8vIExldCBzeXN0ZW0gZmlndXJlIG91dCBpZiBpdCBpcyBy
ZWFsbHkgZW1wdHkuCi0gICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGly
ZWN0b3J5KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNv
cmRzUGF0aCwgcGFydGl0aW9uTmFtZSkpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVFbXB0
eURpcmVjdG9yeShGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3Jkc1Bh
dGgsIHBhcnRpdGlvbk5hbWUpKTsKICAgICB9KTsKIH0KIApAQCAtMzAwLDExICszMDAsMTEgQEAg
dm9pZCBTdG9yYWdlOjpzeW5jaHJvbml6ZSgpCiAKICAgICAgICAgU3RyaW5nIGFueVR5cGU7CiAg
ICAgICAgIHRyYXZlcnNlUmVjb3Jkc0ZpbGVzKHJlY29yZHNQYXRoKCksIGFueVR5cGUsIFsmXShj
b25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIGhhc2hTdHJpbmcsIGNvbnN0IFN0
cmluZyYgdHlwZSwgYm9vbCBpc0Jsb2IsIGNvbnN0IFN0cmluZyYgcmVjb3JkRGlyZWN0b3J5UGF0
aCkgewotICAgICAgICAgICAgYXV0byBmaWxlUGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmREaXJlY3RvcnlQYXRoLCBmaWxlTmFtZSk7Cisg
ICAgICAgICAgICBhdXRvIGZpbGVQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KHJlY29yZERpcmVjdG9yeVBhdGgsIGZpbGVOYW1lKTsKIAogICAgICAgICAgICAgS2V5
OjpIYXNoVHlwZSBoYXNoOwogICAgICAgICAgICAgaWYgKCFLZXk6OnN0cmluZ1RvSGFzaChoYXNo
U3RyaW5nLCBoYXNoKSkgewotICAgICAgICAgICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRl
bGV0ZUZpbGUoZmlsZVBhdGgpOworICAgICAgICAgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZp
bGUoZmlsZVBhdGgpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIApA
QCAtMzE4LDcgKzMxOCw3IEBAIHZvaWQgU3RvcmFnZTo6c3luY2hyb25pemUoKQogCiAgICAgICAg
ICAgICBpZiAoc2hvdWxkQ29tcHV0ZUV4YWN0UmVjb3Jkc1NpemUpIHsKICAgICAgICAgICAgICAg
ICBsb25nIGxvbmcgZmlsZVNpemUgPSAwOwotICAgICAgICAgICAgICAgIFdlYkNvcmU6OkZpbGVT
eXN0ZW06OmdldEZpbGVTaXplKGZpbGVQYXRoLCBmaWxlU2l6ZSk7CisgICAgICAgICAgICAgICAg
RmlsZVN5c3RlbTo6Z2V0RmlsZVNpemUoZmlsZVBhdGgsIGZpbGVTaXplKTsKICAgICAgICAgICAg
ICAgICByZWNvcmRzU2l6ZSArPSBmaWxlU2l6ZTsKICAgICAgICAgICAgIH0KIApAQCAtMzgxLDEy
ICszODEsMTIgQEAgYm9vbCBTdG9yYWdlOjptYXlDb250YWluQmxvYihjb25zdCBLZXkmIGtleSkg
Y29uc3QKIFN0cmluZyBTdG9yYWdlOjpyZWNvcmREaXJlY3RvcnlQYXRoRm9yS2V5KGNvbnN0IEtl
eSYga2V5KSBjb25zdAogewogICAgIEFTU0VSVCgha2V5LnR5cGUoKS5pc0VtcHR5KCkpOwotICAg
IHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZHNQYXRoKCks
IGtleS5wYXJ0aXRpb25IYXNoQXNTdHJpbmcoKSksIGtleS50eXBlKCkpOworICAgIHJldHVybiBG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KHJlY29yZHNQYXRoKCksIGtleS5wYXJ0aXRpb25IYXNoQXNTdHJpbmco
KSksIGtleS50eXBlKCkpOwogfQogCiBTdHJpbmcgU3RvcmFnZTo6cmVjb3JkUGF0aEZvcktleShj
b25zdCBLZXkmIGtleSkgY29uc3QKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZERpcmVjdG9yeVBhdGhGb3JLZXkoa2V5KSwg
a2V5Lmhhc2hBc1N0cmluZygpKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KHJlY29yZERpcmVjdG9yeVBhdGhGb3JLZXkoa2V5KSwga2V5Lmhhc2hBc1N0
cmluZygpKTsKIH0KIAogc3RhdGljIFN0cmluZyBibG9iUGF0aEZvclJlY29yZFBhdGgoY29uc3Qg
U3RyaW5nJiByZWNvcmRQYXRoKQpAQCAtNjI5LDcgKzYyOSw3IEBAIHZvaWQgU3RvcmFnZTo6ZGVs
ZXRlRmlsZXMoY29uc3QgS2V5JiBrZXkpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4o
KSk7CiAKLSAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVGaWxlKHJlY29yZFBhdGhGb3JL
ZXkoa2V5KSk7CisgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShyZWNvcmRQYXRoRm9yS2V5KGtl
eSkpOwogICAgIG1fYmxvYlN0b3JhZ2UucmVtb3ZlKGJsb2JQYXRoRm9yS2V5KGtleSkpOwogfQog
CkBAIC04MDksNyArODA5LDcgQEAgdm9pZCBTdG9yYWdlOjpkaXNwYXRjaFdyaXRlT3BlcmF0aW9u
KHN0ZDo6dW5pcXVlX3B0cjxXcml0ZU9wZXJhdGlvbj4gd3JpdGVPcGVyYXQKICAgICAgICAgYXV0
byByZWNvcmREaXJlY3RvclBhdGggPSByZWNvcmREaXJlY3RvcnlQYXRoRm9yS2V5KHdyaXRlT3Bl
cmF0aW9uLnJlY29yZC5rZXkpOwogICAgICAgICBhdXRvIHJlY29yZFBhdGggPSByZWNvcmRQYXRo
Rm9yS2V5KHdyaXRlT3BlcmF0aW9uLnJlY29yZC5rZXkpOwogCi0gICAgICAgIFdlYkNvcmU6OkZp
bGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhyZWNvcmREaXJlY3RvclBhdGgpOworICAgICAg
ICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMocmVjb3JkRGlyZWN0b3JQYXRoKTsKIAog
ICAgICAgICArK3dyaXRlT3BlcmF0aW9uLmFjdGl2ZUNvdW50OwogCkBAIC05MTcsNyArOTE3LDcg
QEAgdm9pZCBTdG9yYWdlOjp0cmF2ZXJzZShjb25zdCBTdHJpbmcmIHR5cGUsIE9wdGlvblNldDxU
cmF2ZXJzZUZsYWc+IGZsYWdzLCBUcmF2ZXIKICAgICAgICAgICAgIGlmIChpc0Jsb2IpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICBhdXRvIHJlY29yZFBhdGggPSBXZWJD
b3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3JkRGlyZWN0b3J5
UGF0aCwgZmlsZU5hbWUpOworICAgICAgICAgICAgYXV0byByZWNvcmRQYXRoID0gRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZERpcmVjdG9yeVBhdGgsIGZpbGVOYW1l
KTsKIAogICAgICAgICAgICAgZG91YmxlIHdvcnRoID0gLTE7CiAgICAgICAgICAgICBpZiAodHJh
dmVyc2VPcGVyYXRpb24uZmxhZ3MgJiBUcmF2ZXJzZUZsYWc6OkNvbXB1dGVXb3J0aCkKQEAgLTEw
MDksMTMgKzEwMDksMTMgQEAgdm9pZCBTdG9yYWdlOjpjbGVhcihjb25zdCBTdHJpbmcmIHR5cGUs
IFdhbGxUaW1lIG1vZGlmaWVkU2luY2VUaW1lLCBDb21wbGV0aW9uSGEKICAgICBpb1F1ZXVlKCku
ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbW9kaWZpZWRT
aW5jZVRpbWUsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciks
IHR5cGUgPSB0eXBlLmlzb2xhdGVkQ29weSgpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgYXV0byBy
ZWNvcmRzUGF0aCA9IHRoaXMtPnJlY29yZHNQYXRoKCk7CiAgICAgICAgIHRyYXZlcnNlUmVjb3Jk
c0ZpbGVzKHJlY29yZHNQYXRoLCB0eXBlLCBbbW9kaWZpZWRTaW5jZVRpbWVdKGNvbnN0IFN0cmlu
ZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgaGFzaFN0cmluZywgY29uc3QgU3RyaW5nJiB0eXBl
LCBib29sIGlzQmxvYiwgY29uc3QgU3RyaW5nJiByZWNvcmREaXJlY3RvcnlQYXRoKSB7Ci0gICAg
ICAgICAgICBhdXRvIGZpbGVQYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KHJlY29yZERpcmVjdG9yeVBhdGgsIGZpbGVOYW1lKTsKKyAgICAgICAgICAg
IGF1dG8gZmlsZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVj
b3JkRGlyZWN0b3J5UGF0aCwgZmlsZU5hbWUpOwogICAgICAgICAgICAgaWYgKG1vZGlmaWVkU2lu
Y2VUaW1lID4gLVdhbGxUaW1lOjppbmZpbml0eSgpKSB7CiAgICAgICAgICAgICAgICAgYXV0byB0
aW1lcyA9IGZpbGVUaW1lcyhmaWxlUGF0aCk7CiAgICAgICAgICAgICAgICAgaWYgKHRpbWVzLm1v
ZGlmaWNhdGlvbiA8IG1vZGlmaWVkU2luY2VUaW1lKQogICAgICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxl
dGVGaWxlKGZpbGVQYXRoKTsKKyAgICAgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZmls
ZVBhdGgpOwogICAgICAgICB9KTsKIAogICAgICAgICBkZWxldGVFbXB0eVJlY29yZHNEaXJlY3Rv
cmllcyhyZWNvcmRzUGF0aCk7CkBAIC0xMDg5LDcgKzEwODksNyBAQCB2b2lkIFN0b3JhZ2U6OnNo
cmluaygpCiAgICAgICAgICAgICBpZiAoaXNCbG9iKQogICAgICAgICAgICAgICAgIHJldHVybjsK
IAotICAgICAgICAgICAgYXV0byByZWNvcmRQYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZERpcmVjdG9yeVBhdGgsIGZpbGVOYW1lKTsKKyAg
ICAgICAgICAgIGF1dG8gcmVjb3JkUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChyZWNvcmREaXJlY3RvcnlQYXRoLCBmaWxlTmFtZSk7CiAgICAgICAgICAgICBhdXRv
IGJsb2JQYXRoID0gYmxvYlBhdGhGb3JSZWNvcmRQYXRoKHJlY29yZFBhdGgpOwogCiAgICAgICAg
ICAgICBhdXRvIHRpbWVzID0gZmlsZVRpbWVzKHJlY29yZFBhdGgpOwpAQCAtMTEwMSw3ICsxMTAx
LDcgQEAgdm9pZCBTdG9yYWdlOjpzaHJpbmsoKQogICAgICAgICAgICAgTE9HKE5ldHdvcmtDYWNo
ZVN0b3JhZ2UsICJEZWxldGlvbiBwcm9iYWJpbGl0eT0lZiBib2R5TGlua0NvdW50PSVkIHNob3Vs
ZERlbGV0ZT0lZCIsIHByb2JhYmlsaXR5LCBib2R5U2hhcmVDb3VudCwgc2hvdWxkRGVsZXRlKTsK
IAogICAgICAgICAgICAgaWYgKHNob3VsZERlbGV0ZSkgewotICAgICAgICAgICAgICAgIFdlYkNv
cmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUocmVjb3JkUGF0aCk7CisgICAgICAgICAgICAgICAg
RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShyZWNvcmRQYXRoKTsKICAgICAgICAgICAgICAgICBtX2Js
b2JTdG9yYWdlLnJlbW92ZShibG9iUGF0aCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0pOwpA
QCAtMTEzNyw3ICsxMTM3LDcgQEAgdm9pZCBTdG9yYWdlOjpkZWxldGVPbGRWZXJzaW9ucygpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogI2VuZGlmCiAKLSAgICAgICAgICAgIGF1dG8gb2xkVmVy
c2lvblBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
Y2FjaGVQYXRoLCBzdWJkaXJOYW1lKTsKKyAgICAgICAgICAgIGF1dG8gb2xkVmVyc2lvblBhdGgg
PSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY2FjaGVQYXRoLCBzdWJkaXJO
YW1lKTsKICAgICAgICAgICAgIExPRyhOZXR3b3JrQ2FjaGVTdG9yYWdlLCAiKE5ldHdvcmtQcm9j
ZXNzKSBkZWxldGluZyBvbGQgY2FjaGUgdmVyc2lvbiwgcGF0aCAlcyIsIG9sZFZlcnNpb25QYXRo
LnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgICAgICAgICBkZWxldGVEaXJlY3RvcnlSZWN1cnNpdmVs
eShvbGRWZXJzaW9uUGF0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQppbmRleCBhNjFmOTM4NWE2Nzc0
YmQwYjc1YzUzOTY5Y2UxMzI4NzhiM2I5NzNmLi5mNDdiZDgxOTg4MzI2NmFhNjc4YzQ4N2Y2YjM1
MzhlYzVkYWJiZTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KQEAgLTM2LDExICszNiwxMSBAQAog
I2ltcG9ydCAiTmV0d29ya1Nlc3Npb25Db2NvYS5oIgogI2ltcG9ydCAiV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+Ci0j
aW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPFdlYkNvcmUvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5l
dHdvcmtTUEkuaD4KKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDx3dGYvTWFp
blRocmVhZC5oPgogI2ltcG9ydCA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KICNpbXBvcnQgPHd0
Zi90ZXh0L0Jhc2U2NC5oPgpAQCAtNDAzLDggKzQwMyw4IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNr
Q29jb2E6OnNldFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBmaWxl
bmFtCiAKICAgICBtX3Rhc2suZ2V0KCkuX3BhdGhUb0Rvd25sb2FkVGFza0ZpbGUgPSBtX3BlbmRp
bmdEb3dubG9hZExvY2F0aW9uOwogCi0gICAgaWYgKGFsbG93T3ZlcndyaXRlICYmIFdlYkNvcmU6
OkZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobV9wZW5kaW5nRG93bmxvYWRMb2NhdGlvbikpCi0gICAg
ICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZmlsZW5hbWUpOworICAgIGlmIChh
bGxvd092ZXJ3cml0ZSAmJiBGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG1fcGVuZGluZ0Rvd25sb2Fk
TG9jYXRpb24pKQorICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGZpbGVuYW1lKTsKIH0K
IAogYm9vbCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6dHJ5UGFzc3dvcmRCYXNlZEF1dGhlbnRpY2F0
aW9uKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UsIENo
YWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5t
bSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2Nv
YS5tbQppbmRleCBmNmFkNDlmOGJhYzM1ZDAxN2I5NjUzNzk4ZDU3YWFhMmY0Mzk1NjA4Li40YTFk
NzkyMTBhZmE1OTZlNGIwZmFmY2U4MThmZjRmNjgyYjM4YjRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1t
CkBAIC03NzksNyArNzc5LDcgQEAgLSAodm9pZClVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilz
ZXNzaW9uIGRhdGFUYXNrOihOU1VSTFNlc3Npb25EYXRhVGFzayAqKWRhdGEKICAgICAgICAgYXV0
byYgZG93bmxvYWRNYW5hZ2VyID0gX3Nlc3Npb24tPm5ldHdvcmtQcm9jZXNzKCkuZG93bmxvYWRN
YW5hZ2VyKCk7CiAgICAgICAgIGF1dG8gZG93bmxvYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktp
dDo6RG93bmxvYWQ+KGRvd25sb2FkTWFuYWdlciwgZG93bmxvYWRJRCwgZG93bmxvYWRUYXNrLCBf
c2Vzc2lvbi0+c2Vzc2lvbklEKCksIG5ldHdvcmtEYXRhVGFzay0+c3VnZ2VzdGVkRmlsZW5hbWUo
KSk7CiAgICAgICAgIG5ldHdvcmtEYXRhVGFzay0+dHJhbnNmZXJTYW5kYm94RXh0ZW5zaW9uVG9E
b3dubG9hZCgqZG93bmxvYWQpOwotICAgICAgICBBU1NFUlQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6
ZmlsZUV4aXN0cyhuZXR3b3JrRGF0YVRhc2stPnBlbmRpbmdEb3dubG9hZExvY2F0aW9uKCkpKTsK
KyAgICAgICAgQVNTRVJUKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobmV0d29ya0RhdGFUYXNrLT5w
ZW5kaW5nRG93bmxvYWRMb2NhdGlvbigpKSk7CiAgICAgICAgIGRvd25sb2FkLT5kaWRDcmVhdGVE
ZXN0aW5hdGlvbihuZXR3b3JrRGF0YVRhc2stPnBlbmRpbmdEb3dubG9hZExvY2F0aW9uKCkpOwog
ICAgICAgICBkb3dubG9hZE1hbmFnZXIuZGF0YVRhc2tCZWNhbWVEb3dubG9hZFRhc2soZG93bmxv
YWRJRCwgV1RGTW92ZShkb3dubG9hZCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUHJvY2Vzc01hYy5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzTWFjLm1tCmluZGV4IDM3ZjNiN2Y3MmFhNTAy
YjMyYmE4MTFlYzliYTA4ZjVlMjU1ODYzYjIuLmY1YmYwNGFlNDY1ZjYyYjc0ZDJiMThhODE3NTkw
MWExNmVhNTU1ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvbWFj
L05ldHdvcmtQcm9jZXNzTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
bWFjL05ldHdvcmtQcm9jZXNzTWFjLm1tCkBAIC0zOCwxMiArMzgsMTIgQEAKICNpbXBvcnQgIlN0
cmluZ1V0aWxpdGllcy5oIgogI2ltcG9ydCAiV0tGb3VuZGF0aW9uLmgiCiAjaW1wb3J0IDxXZWJD
b3JlL0NlcnRpZmljYXRlSW5mby5oPgotI2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3MuaD4KICNpbXBvcnQgPG5vdGlmeS5oPgog
I2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29j
b2EvTGF1bmNoU2VydmljZXNTUEkuaD4KICNpbXBvcnQgPHN5c2V4aXRzLmg+CisjaW1wb3J0IDx3
dGYvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8d3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5oPgog
I2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKaW5kZXggYzdj
ZTFkMjdhMDAxYmZlZGRlZDI2MjI0ZTg3MzdhY2I0MDljYjliYy4uYWE3YzUwY2JmMWUzOThjOWMz
YmE5YzAwMTljZmYxZTRkZWU3NzhiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKQEAgLTMyLDEyICszMiwx
MiBAQAogI2luY2x1ZGUgIlJlc291cmNlQ2FjaGVzVG9DbGVhci5oIgogI2luY2x1ZGUgIldlYkNv
b2tpZU1hbmFnZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NlcnRpZmljYXRlSW5mby5oPgotI2lu
Y2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NvdXBO
ZXR3b3JrU2Vzc2lvbi5oPgogI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgorI2luY2x1ZGUgPHd0
Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL1JBTVNpemUuaD4KICNpbmNsdWRlIDx3dGYv
Z2xpYi9HUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgpAQCAtMTA5
LDcgKzEwOSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdv
cmtQcm9jZXNzKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpCiAgICAgQVNTRVJUKCFwYXJhbWV0
ZXJzLmRpc2tDYWNoZURpcmVjdG9yeS5pc0VtcHR5KCkpOwogICAgIG1fZGlza0NhY2hlRGlyZWN0
b3J5ID0gcGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3Rvcnk7CiAKLSAgICBTb3VwTmV0d29ya1Nl
c3Npb246OmNsZWFyT2xkU291cENhY2hlKFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRpcmVjdG9yeU5h
bWUobV9kaXNrQ2FjaGVEaXJlY3RvcnkpKTsKKyAgICBTb3VwTmV0d29ya1Nlc3Npb246OmNsZWFy
T2xkU291cENhY2hlKEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUobV9kaXNrQ2FjaGVEaXJlY3Rv
cnkpKTsKIAogICAgIE9wdGlvblNldDxOZXR3b3JrQ2FjaGU6OkNhY2hlOjpPcHRpb24+IGNhY2hl
T3B0aW9ucyB7IE5ldHdvcmtDYWNoZTo6Q2FjaGU6Ok9wdGlvbjo6UmVnaXN0ZXJOb3RpZnkgfTsK
ICAgICBpZiAocGFyYW1ldGVycy5zaG91bGRFbmFibGVOZXR3b3JrQ2FjaGVFZmZpY2FjeUxvZ2dp
bmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvdW5peC9QbHVnaW5Q
cm9jZXNzTWFpblVuaXguY3BwIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL3VuaXgvUGx1
Z2luUHJvY2Vzc01haW5Vbml4LmNwcAppbmRleCAyYmQyZWQ1OWFlNmEyZTI0YjA3NDhiMDNjZWJj
MzU2M2M2NjcxODNlLi4zYWRlNGM5NDNmMDliNTFkM2NjM2JlYzJjYTk2MzNmNzNkMTM0OTZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvdW5peC9QbHVnaW5Qcm9jZXNz
TWFpblVuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy91bml4L1BsdWdp
blByb2Nlc3NNYWluVW5peC5jcHAKQEAgLTM0LDggKzM0LDggQEAKICNpbmNsdWRlICJMb2dnaW5n
LmgiCiAjaW5jbHVkZSAiTmV0c2NhcGVQbHVnaW4uaCIKICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNz
LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+
CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogI2lmIFBMQVRGT1JNKEdUSykKICNpbmNs
dWRlIDxndGsvZ3RrLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QZXJzaXN0
ZW5jeVV0aWxzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BlcnNpc3RlbmN5VXRpbHMuY3Bw
CmluZGV4IDVkYmE5NjhiZDdlMGIzOGMzZDIyNjk0ZDZkNWQyZTZiMDY5ZDJhODEuLmVjYTk2NDFk
MjA1MzQ1YzgxODk2ZWI1NjVkZjYyN2Y5NWUzYzUxN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1BlcnNpc3RlbmN5VXRpbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1BlcnNpc3RlbmN5VXRpbHMuY3BwCkBAIC0yNyw4ICsyNyw4IEBACiAjaW5jbHVkZSAiUGVyc2lz
dGVuY3lVdGlscy5oIgogCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUgPFdlYkNvcmUv
RmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CisjaW5jbHVk
ZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTmV0
c2NhcGUvdW5peC9OZXRzY2FwZVBsdWdpbk1vZHVsZVVuaXguY3BwIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvUGx1Z2lucy9OZXRzY2FwZS91bml4L05ldHNjYXBlUGx1Z2luTW9kdWxlVW5peC5jcHAK
aW5kZXggZmIxZDlkYzkyNmZkNjc2NzkzZjQ1NGE3NGZhNTUxYWVlNTcwYzhlNS4uMmE2NWRhOWZi
Y2IyZjMzYTFmZjU0MTBiZTg4OThjZWYxMzc5OTExZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS91bml4L05ldHNjYXBlUGx1Z2luTW9kdWxlVW5peC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS91bml4L05ldHNj
YXBlUGx1Z2luTW9kdWxlVW5peC5jcHAKQEAgLTMwLDE2ICszMCwxNSBAQAogCiAjaW5jbHVkZSAi
TmV0c2NhcGVCcm93c2VyRnVuY3MuaCIKICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzUHJveHkuaCIK
LSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxlcnJuby5oPgogI2lu
Y2x1ZGUgPGZjbnRsLmg+CiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KICNpbmNsdWRlIDxzeXMvdHlw
ZXMuaD4KICNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7
Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogY2xhc3MgU3Rkb3V0RGV2TnVsbFJlZGlyZWN0
b3IgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy91
bml4L1BsdWdpblNlYXJjaFBhdGguY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy91
bml4L1BsdWdpblNlYXJjaFBhdGguY3BwCmluZGV4IGU4YWY5NjA0Y2U1NTk1YTQ0NGZlOGNhNTA0
NWQzYTYxN2FiMjM2NGEuLjJiZDU0OWE5NWRmYTY3NWNlNDdmNTZkNzhhNTliNGY3MzE1YTExYWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvdW5peC9QbHVnaW5TZWFy
Y2hQYXRoLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL3VuaXgvUGx1Z2lu
U2VhcmNoUGF0aC5jcHAKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJQbHVnaW5TZWFyY2hQYXRoLmgiCiAKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0
ZW0uaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViTWVtb3J5U2FtcGxlci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViTWVtb3J5U2Ft
cGxlci5oCmluZGV4IDgwODEzZmVhMDUwZjIwNDkxYmQxYzhiNTBlOTBiMWNiYmJjYWEzNDQuLjcy
MWNkYmYzODkyMjY0YmM5ZmQ3OTJiNTA4MzgzMGZmNTE5ZmM5YmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYk1lbW9yeVNhbXBsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJNZW1vcnlTYW1wbGVyLmgKQEAgLTUyLDggKzUyLDggQEAKICNpZiBFTkFCTEUoTUVN
T1JZX1NBTVBMRVIpCiAKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCi0jaW5jbHVkZSA8
V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgorI2luY2x1
ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTg3LDcgKzg3
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGluaXRpYWxpemVUaW1lcnMoZG91YmxlKTsKICAgICB2
b2lkIHNhbXBsZVRpbWVyRmlyZWQoKTsKICAgICB2b2lkIHN0b3BUaW1lckZpcmVkKCk7Ci0gICAg
dm9pZCBhcHBlbmRDdXJyZW50TWVtb3J5VXNhZ2VUb0ZpbGUoV2ViQ29yZTo6RmlsZVN5c3RlbTo6
UGxhdGZvcm1GaWxlSGFuZGxlJik7CisgICAgdm9pZCBhcHBlbmRDdXJyZW50TWVtb3J5VXNhZ2VU
b0ZpbGUoRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlJik7CiAgICAgdm9pZCBzZW5kTWVt
b3J5UHJlc3N1cmVFdmVudCgpOwogICAgIAogICAgIFN5c3RlbU1hbGxvY1N0YXRzIHNhbXBsZVN5
c3RlbU1hbGxvYygpIGNvbnN0OwpAQCAtOTUsNyArOTUsNyBAQCBwcml2YXRlOgogICAgIFdlYk1l
bW9yeVN0YXRpc3RpY3Mgc2FtcGxlV2ViS2l0KCkgY29uc3Q7CiAgICAgU3RyaW5nIHByb2Nlc3NO
YW1lKCkgY29uc3Q7CiAgICAgCi0gICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxl
SGFuZGxlIG1fc2FtcGxlTG9nRmlsZSB7IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmludmFsaWRQbGF0
Zm9ybUZpbGVIYW5kbGUgfTsKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgbV9z
YW1wbGVMb2dGaWxlIHsgRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSB9Owog
ICAgIFN0cmluZyBtX3NhbXBsZUxvZ0ZpbGVQYXRoOwogICAgIFdlYkNvcmU6OlRpbWVyIG1fc2Ft
cGxlVGltZXI7CiAgICAgV2ViQ29yZTo6VGltZXIgbV9zdG9wVGltZXI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9nbGliL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aEdMaWIuY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvZ2xpYi9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhHTGliLmNwcApp
bmRleCBhNzBiNDFhMDlhOTMwYmJkYzNiNTQxY2U2YTcwOGFkODliYmMyZjRiLi40ZmYzNWQzMWRl
MWQ1NzIzMWE2ZjZlMTAxNWE4NTVkNDBmOGM4YzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9nbGliL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aEdMaWIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL2dsaWIvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoR0xpYi5jcHAKQEAgLTI3LDEy
ICsyNywxMSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlByb2Nlc3NFeGVjdXRh
YmxlUGF0aC5oIgogCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8
Z2xpYi5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIv
R0xpYlV0aWxpdGllcy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKLXVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCiAjaWYgRU5BQkxFKERFVkVMT1BFUl9NT0RFKQogc3RhdGljIFN0cmluZyBnZXRF
eGVjdXRhYmxlUGF0aCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvQ2hp
bGRQcm9jZXNzSU9TLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL0NoaWxkUHJvY2Vzc0lP
Uy5tbQppbmRleCA4MWQ1NGYzYmYwMDllZmFmMDVkNDAyZDZmNWNmZWE4ZDEwZjRiNTY3Li42OWQ1
M2NmZjMxNGE5NWNiYzRhODA3YWI5OGM5ZWNhODJmZTJiZTIxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9pb3MvQ2hpbGRQcm9jZXNzSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL2lvcy9DaGlsZFByb2Nlc3NJT1MubW0KQEAgLTMxLDcgKzMxLDYgQEAKIAogI2ltcG9y
dCAiU2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1ldGVycy5oIgogI2ltcG9ydCAiWFBDU2Vydmlj
ZUVudHJ5UG9pbnQuaCIKLSNpbXBvcnQgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9GbG9hdGluZ1BvaW50RW52aXJvbm1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvU3lz
dGVtVmVyc2lvbi5oPgogI2ltcG9ydCA8bWFjaC9tYWNoLmg+CkBAIC0zOSw2ICszOCw3IEBACiAj
aW1wb3J0IDxwd2QuaD4KICNpbXBvcnQgPHN0ZGxpYi5oPgogI2ltcG9ydCA8c3lzZXhpdHMuaD4K
KyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKICNpZiBFTkFCTEUoTUFOVUFMX1NBTkRCT1hJ
TkcpCiAjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJLmg+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQ2hpbGRQcm9jZXNzTWFjLm1tIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvbWFjL0NoaWxkUHJvY2Vzc01hYy5tbQppbmRleCAzYzM5NGNjOTE2YzA5OTIwZDAz
MzNmMmM0YTI1OGU0N2YxZTdjOTc5Li43ODUzNmFhZTYwYmNmMDJjOTI2NjBjMzI4MTFhOGQwZjU4
ZWZmNmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQ2hpbGRQcm9jZXNz
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9DaGlsZFByb2Nlc3NNYWMubW0K
QEAgLTM1LDcgKzM1LDYgQEAKICNpbXBvcnQgIldLRm91bmRhdGlvbi5oIgogI2ltcG9ydCAiWFBD
U2VydmljZUVudHJ5UG9pbnQuaCIKICNpbXBvcnQgPFdlYkNvcmUvRmlsZUhhbmRsZS5oPgotI2lt
cG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1N5c3RlbVZlcnNp
b24uaD4KICNpbXBvcnQgPG1hY2gtby9keWxkLmg+CiAjaW1wb3J0IDxtYWNoL21hY2guaD4KQEAg
LTQ3LDYgKzQ2LDcgQEAKICNpbXBvcnQgPHN5cy9zeXNjdGwuaD4KICNpbXBvcnQgPHN5c2V4aXRz
Lmg+CiAjaW1wb3J0IDx3dGYvRGF0YUxvZy5oPgorI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4K
ICNpbXBvcnQgPHd0Zi9SYW5kb21OdW1iZXIuaD4KICNpbXBvcnQgPHd0Zi9TY29wZS5oPgogI2lt
cG9ydCA8d3RmL1N5c3RlbVRyYWNpbmcuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL21hYy9TYW5kYm94RXh0ZW5zaW9uTWFjLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFj
L1NhbmRib3hFeHRlbnNpb25NYWMubW0KaW5kZXggMGNlYzk4NWM3ODVjNzczNjU5NzcyZDI0ZjFi
NmQ1NzZkNzFkNzVlMS4uYWZiYzZiMmExNGU1YmZmMGMxNjY1NmI3YzIwODc3Y2JjZGRkNDU3MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1NhbmRib3hFeHRlbnNpb25NYWMu
bW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1NhbmRib3hFeHRlbnNpb25NYWMubW0K
QEAgLTMxLDEzICszMSwxMiBAQAogI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgogI2ltcG9ydCAi
RGVjb2Rlci5oIgogI2ltcG9ydCAiRW5jb2Rlci5oIgotI2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lz
dGVtLmg+CiAjaW1wb3J0IDxzeXMvc3RhdC5oPgorI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4K
ICNpbXBvcnQgPHd0Zi9zcGkvZGFyd2luL1NhbmRib3hTUEkuaD4KICNpbXBvcnQgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAogY2xhc3MgU2FuZGJveEV4dGVuc2lvbkltcGwgewogcHVibGljOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAK
aW5kZXggMzhmNDJjYjkxYTUzOGVkZTY4ZTIyNTk0MTA1MGY5NmFmNjdiOTY5OC4uYzc2N2UyODM1
ZjI5N2JiYmUwYTNmOTM2MGE5M2RjNTQzN2UxMGIyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCkBAIC0zOSw2
ICszOSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9RdWFsaWZpZWROYW1lLmg+CiAjaW5jbHVkZSA8
c3RyaW5nPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgorI2luY2x1ZGUgPHd0
Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVk
ZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CkBAIC00OCw3ICs0
OSw3IEBACiAKIG5hbWVzcGFjZSBBUEkgewogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDo6TmV0d29y
a0NhY2hlOwotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU6OkZpbGVTeXN0ZW07Cit1c2luZyBuYW1l
c3BhY2UgRmlsZVN5c3RlbTsKIAogQ29udGVudFJ1bGVMaXN0U3RvcmUmIENvbnRlbnRSdWxlTGlz
dFN0b3JlOjpsZWdhY3lEZWZhdWx0U3RvcmUoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0K
aW5kZXggNGEyZWMzODcyMzdmZmRjOGNhODk0NzE4NmZmZWQwZDVjYTRlYTc1NC4uMzg4NGY0M2Mx
ZTIwYTEyOThiYTg4NTdlYjFiMDkxNTVhOThiMDA3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJV2Vic2l0ZURhdGFTdG9yZUNvY29h
Lm1tCkBAIC0yOCw5ICsyOCw4IEBACiAKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAj
aW5jbHVkZSAiU2FuZGJveFV0aWxpdGllcy5oIgotCiAjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3Vu
ZGF0aW9uLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8d3Rm
L0ZpbGVTeXN0ZW0uaD4KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW1wb3J0IDxXZWJD
b3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgpAQCAtMTY5LDcgKzE2OCw3IEBAIFdURjo6
U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRJbmRleGVkREJEYXRhYmFzZURp
cmVjdG9yeSgpCiAgICAgLy8gQ3VycmVudGx5LCB0aGUgdG9wIGxldmVsIG9mIHRoYXQgZGlyZWN0
b3J5IGNvbnRhaW5zIGVudGl0aWVzIHJlbGF0ZWQgdG8gV2ViU1FMIGRhdGFiYXNlcy4KICAgICAv
LyBXZSBzaG91bGQgZml4IHRoaXMsIGFuZCBtb3ZlIFdlYlNRTCBpbnRvIGEgc3ViZGlyZWN0b3J5
IChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0ODA3KQogICAgIC8v
IEluIHRoZSBtZWFudGltZSwgYW4gZW50aXR5IG5hbWUgcHJlZml4ZWQgd2l0aCB0aHJlZSB1bmRl
cnNjb3JlcyB3aWxsIG5vdCBjb25mbGljdCB3aXRoIGFueSBXZWJTUUwgZW50aXRpZXMuCi0gICAg
cmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChsZWdh
Y3lEZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKSwgIl9fX0luZGV4ZWREQiIpOworICAg
IHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobGVnYWN5RGVmYXVs
dFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCksICJfX19JbmRleGVkREIiKTsKIH0KIAogV1RGOjpT
dHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9y
eSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJz
aXRlRGF0YVN0b3JlR0xpYi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9B
UElXZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHAKaW5kZXggZTFjNDUyOWIzZDIxZWU1OGJmZWZiNWMx
OGZlZmI1MTEyMmMwMTYwZi4uZjVhYjkzMWNiZWQzYjc3MWJmM2NlYzgxMmNiNzQyZTQ5YmI2ODUz
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvQVBJV2Vic2l0
ZURhdGFTdG9yZUdMaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L0FQSVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcApAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKIAotI2luY2x1ZGUg
PFdlYkNvcmUvRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5j
bHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgogCiAjaWYgUExBVEZPUk0oR1RLKQpAQCAtNDYs
MTIgKzQ2LDEyIEBAIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNh
dGlvbkNhY2hlRGlyZWN0b3J5KCkKIC8vIFdoeSBpcyBvbmx5IHRoaXMgZGlyZWN0b3J5IG5hbWVz
cGFjZWQgdG8gYSBwYXJ0aWN1bGFyIGFwcGxpY2F0aW9uPwogV1RGOjpTdHJpbmcgV2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIGNh
Y2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKFdlYkNvcmU6OkZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9t
RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGdfZ2V0X3ByZ25hbWUoKSksICJXZWJLaXRDYWNoZSIp
KTsKKyAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oRmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21G
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfcHJnbmFtZSgpKSwgIldlYktpdENhY2hlIikp
OwogfQogCiBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0Q2FjaGVTdG9yYWdl
RGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdl
YkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19n
ZXRfcHJnbmFtZSgpKSwgIkNhY2hlU3RvcmFnZSIpKTsKKyAgICByZXR1cm4gY2FjaGVEaXJlY3Rv
cnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19n
ZXRfcHJnbmFtZSgpKSwgIkNhY2hlU3RvcmFnZSIpKTsKIH0KIAogV1RGOjpTdHJpbmcgV2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkKQEAgLTkxLDE5
ICs5MSwxOSBAQCBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpCiAKIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6
OmNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFdURjo6U3RyaW5n
JiBkaXJlY3RvcnlOYW1lKQogewotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihnX2dldF91c2VyX2NhY2hlX2RpcigpKSwgZGlyZWN0b3J5TmFt
ZSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxl
U3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGdfZ2V0X3VzZXJfY2Fj
aGVfZGlyKCkpLCBkaXJlY3RvcnlOYW1lKTsKIH0KIAogV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFT
dG9yZTo6d2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3Qg
V1RGOjpTdHJpbmcmIGRpcmVjdG9yeU5hbWUpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJp
bmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGdfZ2V0X3VzZXJfZGF0YV9kaXIoKSksIGRp
cmVjdG9yeU5hbWUpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihnX2dl
dF91c2VyX2RhdGFfZGlyKCkpLCBkaXJlY3RvcnlOYW1lKTsKIH0KIAogV1RGOjpTdHJpbmcgV2Vi
c2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKQog
ewogI2lmIFBMQVRGT1JNKFdQRSkKICAgICBHVW5pcXVlUHRyPGdjaGFyPiBjYWNoZURpcmVjdG9y
eShnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfY2FjaGVfZGlyKCksICJ3cGUiLCAiYXBwY2Fj
aGUiLCBudWxscHRyKSk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zy
b21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY2FjaGVEaXJlY3RvcnkuZ2V0KCkpOworICAgIHJl
dHVybiBGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNhY2hl
RGlyZWN0b3J5LmdldCgpKTsKICNlbmRpZgogICAgIHJldHVybiBkZWZhdWx0QXBwbGljYXRpb25D
YWNoZURpcmVjdG9yeSgpOwogfQpAQCAtMTEyLDcgKzExMiw3IEBAIFdURjo6U3RyaW5nIFdlYnNp
dGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKQogewogI2lm
IFBMQVRGT1JNKFdQRSkKICAgICBHVW5pcXVlUHRyPGNoYXI+IGRpc2tDYWNoZURpcmVjdG9yeShn
X2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfY2FjaGVfZGlyKCksICJ3cGUiLCAiY2FjaGUiLCBu
dWxscHRyKSk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oZGlza0NhY2hlRGlyZWN0b3J5LmdldCgpKTsKKyAgICByZXR1
cm4gRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihkaXNrQ2Fj
aGVEaXJlY3RvcnkuZ2V0KCkpOwogI2VuZGlmCiAgICAgcmV0dXJuIGRlZmF1bHROZXR3b3JrQ2Fj
aGVEaXJlY3RvcnkoKTsKIH0KQEAgLTEyMSw3ICsxMjEsNyBAQCBXVEY6OlN0cmluZyBXZWJzaXRl
RGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKQogewogI2lm
IFBMQVRGT1JNKFdQRSkKICAgICBHVW5pcXVlUHRyPGdjaGFyPiBkYXRhYmFzZURpcmVjdG9yeShn
X2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfZGF0YV9kaXIoKSwgIndwZSIsICJkYXRhYmFzZXMi
LCBudWxscHRyKSk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21G
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGF0YWJhc2VEaXJlY3RvcnkuZ2V0KCkpOworICAgIHJl
dHVybiBGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRhdGFi
YXNlRGlyZWN0b3J5LmdldCgpKTsKICNlbmRpZgogICAgIHJldHVybiBkZWZhdWx0V2ViU1FMRGF0
YWJhc2VEaXJlY3RvcnkoKTsKIH0KQEAgLTEzMCw3ICsxMzAsNyBAQCBXVEY6OlN0cmluZyBXZWJz
aXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKQog
ewogI2lmIFBMQVRGT1JNKFdQRSkKICAgICBHVW5pcXVlUHRyPGdjaGFyPiBpbmRleGVkREJEYXRh
YmFzZURpcmVjdG9yeShnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfZGF0YV9kaXIoKSwgIndw
ZSIsICJkYXRhYmFzZXMiLCAiaW5kZXhlZGRiIiwgbnVsbHB0cikpOwotICAgIHJldHVybiBXZWJD
b3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGluZGV4
ZWREQkRhdGFiYXNlRGlyZWN0b3J5LmdldCgpKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6c3Ry
aW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihpbmRleGVkREJEYXRhYmFzZURpcmVjdG9y
eS5nZXQoKSk7CiAjZW5kaWYKICAgICByZXR1cm4gZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGly
ZWN0b3J5KCk7CiB9CkBAIC0xMzksNyArMTM5LDcgQEAgV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFT
dG9yZTo6bGVnYWN5RGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpCiB7CiAjaWYgUExBVEZP
Uk0oV1BFKQogICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHN0b3JhZ2VEaXJlY3RvcnkoZ19idWlsZF9m
aWxlbmFtZShnX2dldF91c2VyX2RhdGFfZGlyKCksICJ3cGUiLCAibG9jYWxzdG9yYWdlIiwgbnVs
bHB0cikpOwotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKHN0b3JhZ2VEaXJlY3RvcnkuZ2V0KCkpOworICAgIHJldHVybiBG
aWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHN0b3JhZ2VEaXJl
Y3RvcnkuZ2V0KCkpOwogI2VuZGlmCiAgICAgcmV0dXJuIGRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJl
Y3RvcnkoKTsKIH0KQEAgLTE0OCw3ICsxNDgsNyBAQCBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0
b3JlOjpsZWdhY3lEZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpCiB7CiAjaWYgUExBVEZPUk0o
V1BFKQogICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGNhY2hlRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5h
bWUoZ19nZXRfdXNlcl9jYWNoZV9kaXIoKSwgIndwZSIsICJtZWRpYWNhY2hlIiwgbnVsbHB0cikp
OwotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKGNhY2hlRGlyZWN0b3J5LmdldCgpKTsKKyAgICByZXR1cm4gRmlsZVN5c3Rl
bTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjYWNoZURpcmVjdG9yeS5nZXQo
KSk7CiAjZW5kaWYKICAgICByZXR1cm4gZGVmYXVsdE1lZGlhQ2FjaGVEaXJlY3RvcnkoKTsKIH0K
QEAgLTE1Nyw3ICsxNTcsNyBAQCBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lE
ZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpCiB7CiAjaWYgUExBVEZPUk0oV1BFKQog
ICAgIEdVbmlxdWVQdHI8Z2NoYXI+IG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoZ19idWlsZF9m
aWxlbmFtZShnX2dldF91c2VyX2RhdGFfZGlyKCksICJ3cGUiLCAibWVkaWFrZXlzIiwgbnVsbHB0
cikpOwotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkuZ2V0KCkpOworICAgIHJl
dHVybiBGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKG1lZGlh
S2V5c1N0b3JhZ2VEaXJlY3RvcnkuZ2V0KCkpOwogI2VuZGlmCiAgICAgcmV0dXJuIGRlZmF1bHRN
ZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCk7CiB9CkBAIC0xNjYsNyArMTY2LDcgQEAgU3RyaW5n
IFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VE
aXJlY3RvcnkoKQogewogI2lmIFBMQVRGT1JNKFdQRSkKICAgICBHVW5pcXVlUHRyPGdjaGFyPiBk
ZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFtZShnX2dldF91
c2VyX2RhdGFfZGlyKCksICJ3cGUiLCAiZGV2aWNlaWRoYXNoc2FsdHMiLCBudWxscHRyKSk7Ci0g
ICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5LmdldCgpKTsKKyAgICBy
ZXR1cm4gRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihkZXZp
Y2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkuZ2V0KCkpOwogI2VuZGlmCiAgICAgcmV0dXJu
IGRlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKTsKIH0KQEAgLTE3NCw3
ICsxNzQsNyBAQCBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdERldmljZUlk
SGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpCiBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3Jl
OjpsZWdhY3lEZWZhdWx0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKQogewogICAg
IEdVbmlxdWVQdHI8Z2NoYXI+IGphdmFTY3JpcHRDb3JlQ29uZmlnRGlyZWN0b3J5KGdfYnVpbGRf
ZmlsZW5hbWUoZ19nZXRfdXNlcl9kYXRhX2RpcigpLCBCQVNFX0RJUkVDVE9SWSwgIkphdmFTY3Jp
cHRDb3JlRGVidWciLCBudWxscHRyKSk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06
OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oamF2YVNjcmlwdENvcmVDb25maWdE
aXJlY3RvcnkuZ2V0KCkpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKGphdmFTY3JpcHRDb3JlQ29uZmlnRGlyZWN0b3J5LmdldCgpKTsK
IH0KIAogUmVmPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+IFdlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCmluZGV4IDY3NGE1ZGIw
NDNjOGE2MGYzNjIwYWE3YmEwMThjMWY5ODVlZGY4YTkuLmIwNDY2ZTkxNDA5MGJjMDU1OTY2ZTZi
OWRmMzE5ZWEzMDRkYjIzNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL0ljb25EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvSWNvbkRhdGFiYXNlLmNwcApAQCAtMjksMTEgKzI5LDExIEBACiAKICNpbmNsdWRlICJM
b2dnaW5nLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9CaXRtYXBJbWFnZS5oPgotI2luY2x1ZGUgPFdl
YkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2UuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1NRTGl0ZVN0YXRlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlVHJh
bnNhY3Rpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgorI2luY2x1ZGUg
PHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGYXZpY29u
RGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmF2
aWNvbkRhdGFiYXNlLmNwcAppbmRleCA5YmU3MjUzZjg1ZTkxZGExMWI5NWVkMjgwOWViNDRiNWEz
NzE1YTVhLi5lMDE2NDg2ODE3MWE1ZDhiZWU4YTNlMTg2YWM2ODI1YzQ5MWQ5NzAwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGYXZpY29uRGF0YWJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZhdmlj
b25EYXRhYmFzZS5jcHAKQEAgLTIzLDEyICsyMywxMiBAQAogI2luY2x1ZGUgIkljb25EYXRhYmFz
ZS5oIgogI2luY2x1ZGUgIldlYktpdEZhdmljb25EYXRhYmFzZVByaXZhdGUuaCIKICNpbmNsdWRl
ICJXZWJQcmVmZXJlbmNlcy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvSW1hZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ludFNpemUuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1JlZlB0ckNhaXJvLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRC
dWZmZXIuaD4KICNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgorI2luY2x1ZGUgPHd0Zi9GaWxl
U3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYvU2V0Rm9y
U2NvcGUuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CkBAIC0yNzMsNyArMjczLDcg
QEAgdm9pZCB3ZWJraXRGYXZpY29uRGF0YWJhc2VPcGVuKFdlYktpdEZhdmljb25EYXRhYmFzZSog
ZGF0YWJhc2UsIGNvbnN0IFN0cmluZyYgcGEKICAgICBwcml2LT5pY29uRGF0YWJhc2UtPnNldEVu
YWJsZWQodHJ1ZSk7CiAgICAgcHJpdi0+aWNvbkRhdGFiYXNlLT5zZXRQcml2YXRlQnJvd3NpbmdF
bmFibGVkKFdlYlByZWZlcmVuY2VzOjphbnlQYWdlc0FyZVVzaW5nUHJpdmF0ZUJyb3dzaW5nKCkp
OwogCi0gICAgaWYgKCFwcml2LT5pY29uRGF0YWJhc2UtPm9wZW4oV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6ZGlyZWN0b3J5TmFtZShwYXRoKSwgV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEdldEZpbGVO
YW1lKHBhdGgpKSkgeworICAgIGlmICghcHJpdi0+aWNvbkRhdGFiYXNlLT5vcGVuKEZpbGVTeXN0
ZW06OmRpcmVjdG9yeU5hbWUocGF0aCksIEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShwYXRo
KSkpIHsKICAgICAgICAgcHJpdi0+aWNvbkRhdGFiYXNlID0gbnVsbHB0cjsKICAgICAgICAgSWNv
bkRhdGFiYXNlOjphbGxvd0RhdGFiYXNlQ2xlYW51cCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZpbGVDaG9vc2VyUmVxdWVzdC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGaWxlQ2hvb3NlclJl
cXVlc3QuY3BwCmluZGV4IDM3ZTZjY2EwY2ViY2U5MTQ3MzBlM2M2ZDQyNWM1ZmVmNzdmYjQ4NWYu
LjA5OTgwYWFlMDY5OWViY2U5ZDMzZTljNWE2OTdhMDJkZTA0NzAzZDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZpbGVDaG9vc2VyUmVxdWVzdC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmlsZUNob29z
ZXJSZXF1ZXN0LmNwcApAQCAtMjUsOSArMjUsOSBAQAogI2luY2x1ZGUgIkFQSVN0cmluZy5oIgog
I2luY2x1ZGUgIldlYktpdEZpbGVDaG9vc2VyUmVxdWVzdFByaXZhdGUuaCIKICNpbmNsdWRlICJX
ZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxl
U3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0RW5jb2RpbmcuaD4KICNpbmNsdWRlIDxn
bGliL2dpMThuLWxpYi5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8
d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYv
Z2xpYi9HVW5pcXVlUHRyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCmluZGV4IDBmMzllMTI1ZjNkYTZjNDgzOTZhNDBj
OWNkZmU4ZjRjNDFkOTY5YWUuLmEzYWQ5ZjljN2I2NWJhM2EzMzczYzgyNTA3NjMzNWM1NmI5MmZl
MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdl
YkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dFdlYkNvbnRleHQuY3BwCkBAIC01NCwxMCArNTQsMTAgQEAKICNpbmNsdWRlICJXZWJOb3RpZmlj
YXRpb25NYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVR5cGUuaCIKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9SZW1vdGVJbnNwZWN0b3IuaD4KLSNpbmNsdWRlIDxXZWJDb3Jl
L0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgogI2luY2x1ZGUgPGxp
YmludGwuaD4KICNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4K
ICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9MYW5ndWFnZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgpAQCAtMzMzLDIwICszMzMsMjAgQEAgc3RhdGlj
IHZvaWQgd2Via2l0V2ViQ29udGV4dENvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKICAgICBH
VW5pcXVlUHRyPGNoYXI+IGJ1bmRsZUZpbGVuYW1lKGdfYnVpbGRfZmlsZW5hbWUoaW5qZWN0ZWRC
dW5kbGVEaXJlY3RvcnkoKSwgSU5KRUNURURfQlVORExFX0ZJTEVOQU1FLCBudWxscHRyKSk7CiAK
ICAgICBBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uOwotICAgIGNv
bmZpZ3VyYXRpb24uc2V0SW5qZWN0ZWRCdW5kbGVQYXRoKFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0
cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oYnVuZGxlRmlsZW5hbWUuZ2V0KCkpKTsK
KyAgICBjb25maWd1cmF0aW9uLnNldEluamVjdGVkQnVuZGxlUGF0aChGaWxlU3lzdGVtOjpzdHJp
bmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGJ1bmRsZUZpbGVuYW1lLmdldCgpKSk7CiAg
ICAgY29uZmlndXJhdGlvbi5zZXRNYXhpbXVtUHJvY2Vzc0NvdW50KDEpOwogICAgIGNvbmZpZ3Vy
YXRpb24uc2V0RGlza0NhY2hlU3BlY3VsYXRpdmVWYWxpZGF0aW9uRW5hYmxlZCh0cnVlKTsKIAog
ICAgIFdlYktpdFdlYkNvbnRleHQqIHdlYkNvbnRleHQgPSBXRUJLSVRfV0VCX0NPTlRFWFQob2Jq
ZWN0KTsKICAgICBXZWJLaXRXZWJDb250ZXh0UHJpdmF0ZSogcHJpdiA9IHdlYkNvbnRleHQtPnBy
aXY7CiAgICAgaWYgKHByaXYtPndlYnNpdGVEYXRhTWFuYWdlciAmJiAhd2Via2l0X3dlYnNpdGVf
ZGF0YV9tYW5hZ2VyX2lzX2VwaGVtZXJhbChwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkp
KSB7Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KFdlYkNv
cmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0
X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9sb2NhbF9zdG9yYWdlX2RpcmVjdG9yeShwcml2LT53
ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSk7Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0RGlz
a0NhY2hlRGlyZWN0b3J5KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfZGlza19jYWNoZV9kaXJlY3Rvcnko
cHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSksIG5ldHdvcmtDYWNoZVN1YmRpcmVjdG9y
eSkpOwotICAgICAgICBjb25maWd1cmF0aW9uLnNldEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnko
V2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3
ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X29mZmxpbmVfYXBwbGljYXRpb25fY2FjaGVf
ZGlyZWN0b3J5KHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpKTsKLSAgICAgICAgY29u
ZmlndXJhdGlvbi5zZXRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeShXZWJDb3JlOjpGaWxlU3lz
dGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHdlYmtpdF93ZWJzaXRlX2Rh
dGFfbWFuYWdlcl9nZXRfaW5kZXhlZGRiX2RpcmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1hbmFn
ZXIuZ2V0KCkpKSk7Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0V2ViU1FMRGF0YWJhc2VEaXJl
Y3RvcnkoV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X3dlYnNxbF9kaXJlY3RvcnkocHJp
di0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSkpOworICAgICAgICBjb25maWd1cmF0aW9uLnNl
dExvY2FsU3RvcmFnZURpcmVjdG9yeShGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfbG9jYWxfc3RvcmFn
ZV9kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSkpOworICAgICAgICBj
b25maWd1cmF0aW9uLnNldERpc2tDYWNoZURpcmVjdG9yeShGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2Rpc2tfY2FjaGVfZGlyZWN0b3J5
KHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpLCBuZXR3b3JrQ2FjaGVTdWJkaXJlY3Rv
cnkpKTsKKyAgICAgICAgY29uZmlndXJhdGlvbi5zZXRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5
KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0X3dl
YnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9vZmZsaW5lX2FwcGxpY2F0aW9uX2NhY2hlX2RpcmVjdG9y
eShwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSk7CisgICAgICAgIGNvbmZpZ3VyYXRp
b24uc2V0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2lu
ZGV4ZWRkYl9kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSkpOworICAg
ICAgICBjb25maWd1cmF0aW9uLnNldFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KEZpbGVTeXN0ZW06
OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0X3dlYnNpdGVfZGF0YV9t
YW5hZ2VyX2dldF93ZWJzcWxfZGlyZWN0b3J5KHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQo
KSkpKTsKICAgICB9IGVsc2UgaWYgKCFwcml2LT5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkuaXNOdWxs
KCkpCi0gICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KFdlYkNv
cmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+
bG9jYWxTdG9yYWdlRGlyZWN0b3J5LmRhdGEoKSkpOworICAgICAgICBjb25maWd1cmF0aW9uLnNl
dExvY2FsU3RvcmFnZURpcmVjdG9yeShGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKHByaXYtPmxvY2FsU3RvcmFnZURpcmVjdG9yeS5kYXRhKCkpKTsKIAogICAg
IHByaXYtPnByb2Nlc3NQb29sID0gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZShjb25maWd1cmF0aW9u
KTsKIApAQCAtOTI0LDcgKzkyNCw3IEBAIHZvaWQgd2Via2l0X3dlYl9jb250ZXh0X3NldF9mYXZp
Y29uX2RhdGFiYXNlX2RpcmVjdG9yeShXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0CiAgICAgV2Vi
S2l0V2ViQ29udGV4dFByaXZhdGUqIHByaXYgPSBjb250ZXh0LT5wcml2OwogICAgIGVuc3VyZUZh
dmljb25EYXRhYmFzZShjb250ZXh0KTsKIAotICAgIFN0cmluZyBkaXJlY3RvcnlQYXRoID0gV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRo
KTsKKyAgICBTdHJpbmcgZGlyZWN0b3J5UGF0aCA9IEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAgICAgLy8gVXNlIGRlZmF1bHQgaWYgbnVsbHB0
ciBpcyBwYXNzZWQgYXMgcGFyYW1ldGVyLgogICAgIGlmIChkaXJlY3RvcnlQYXRoLmlzRW1wdHko
KSkgewogI2lmIFBMQVRGT1JNKEdUSykKQEAgLTkzMyw3ICs5MzMsNyBAQCB2b2lkIHdlYmtpdF93
ZWJfY29udGV4dF9zZXRfZmF2aWNvbl9kYXRhYmFzZV9kaXJlY3RvcnkoV2ViS2l0V2ViQ29udGV4
dCogY29udGV4dAogICAgICAgICBjb25zdCBjaGFyKiBwb3J0RGlyZWN0b3J5ID0gIndwZSI7CiAj
ZW5kaWYKICAgICAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZGF0YWJhc2VEaXJlY3RvcnkoZ19idWls
ZF9maWxlbmFtZShnX2dldF91c2VyX2NhY2hlX2RpcigpLCBwb3J0RGlyZWN0b3J5LCAiaWNvbmRh
dGFiYXNlIiwgbnVsbHB0cikpOwotICAgICAgICBkaXJlY3RvcnlQYXRoID0gV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihkYXRhYmFzZURpcmVj
dG9yeS5nZXQoKSk7CisgICAgICAgIGRpcmVjdG9yeVBhdGggPSBGaWxlU3lzdGVtOjpzdHJpbmdG
cm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRhdGFiYXNlRGlyZWN0b3J5LmdldCgpKTsKICAg
ICB9CiAgICAgcHJpdi0+ZmF2aWNvbkRhdGFiYXNlRGlyZWN0b3J5ID0gZGlyZWN0b3J5UGF0aC51
dGY4KCk7CiAKQEAgLTk0Miw3ICs5NDIsNyBAQCB2b2lkIHdlYmtpdF93ZWJfY29udGV4dF9zZXRf
ZmF2aWNvbl9kYXRhYmFzZV9kaXJlY3RvcnkoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dAogICAg
ICAgICAiV2VicGFnZUljb25zLmRiIiwgbnVsbHB0cikpOwogCiAgICAgLy8gU2V0dGluZyB0aGUg
cGF0aCB3aWxsIGNhdXNlIHRoZSBpY29uIGRhdGFiYXNlIHRvIGJlIG9wZW5lZC4KLSAgICB3ZWJr
aXRGYXZpY29uRGF0YWJhc2VPcGVuKHByaXYtPmZhdmljb25EYXRhYmFzZS5nZXQoKSwgV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmYXZpY29u
RGF0YWJhc2VQYXRoLmdldCgpKSk7CisgICAgd2Via2l0RmF2aWNvbkRhdGFiYXNlT3Blbihwcml2
LT5mYXZpY29uRGF0YWJhc2UuZ2V0KCksIEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oZmF2aWNvbkRhdGFiYXNlUGF0aC5nZXQoKSkpOwogCiAgICAgaWYgKHdl
YmtpdF93ZWJfY29udGV4dF9pc19lcGhlbWVyYWwoY29udGV4dCkpCiAgICAgICAgIHdlYmtpdEZh
dmljb25EYXRhYmFzZVNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQocHJpdi0+ZmF2aWNvbkRhdGFi
YXNlLmdldCgpLCB0cnVlKTsKQEAgLTEwMjYsNyArMTAyNiw3IEBAIHZvaWQgd2Via2l0X3dlYl9j
b250ZXh0X3NldF9hZGRpdGlvbmFsX3BsdWdpbnNfZGlyZWN0b3J5KFdlYktpdFdlYkNvbnRleHQq
IGNvbnRlCiAgICAgZ19yZXR1cm5faWZfZmFpbChkaXJlY3RvcnkpOwogCiAjaWYgRU5BQkxFKE5F
VFNDQVBFX1BMVUdJTl9BUEkpCi0gICAgY29udGV4dC0+cHJpdi0+cHJvY2Vzc1Bvb2wtPnNldEFk
ZGl0aW9uYWxQbHVnaW5zRGlyZWN0b3J5KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21G
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGlyZWN0b3J5KSk7CisgICAgY29udGV4dC0+cHJpdi0+
cHJvY2Vzc1Bvb2wtPnNldEFkZGl0aW9uYWxQbHVnaW5zRGlyZWN0b3J5KEZpbGVTeXN0ZW06OnN0
cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGlyZWN0b3J5KSk7CiAjZW5kaWYKIH0K
IApAQCAtMTQxOCw3ICsxNDE4LDcgQEAgdm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2Rpc2tf
Y2FjaGVfZGlyZWN0b3J5KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIGNvbnMKICAgICBnX3Jl
dHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfQ09OVEVYVChjb250ZXh0KSk7CiAgICAgZ19yZXR1
cm5faWZfZmFpbChkaXJlY3RvcnkpOwogCi0gICAgY29udGV4dC0+cHJpdi0+cHJvY2Vzc1Bvb2wt
PmNvbmZpZ3VyYXRpb24oKS5zZXREaXNrQ2FjaGVEaXJlY3RvcnkoV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zy
b21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGlyZWN0b3J5KSwgbmV0d29ya0NhY2hlU3ViZGly
ZWN0b3J5KSk7CisgICAgY29udGV4dC0+cHJpdi0+cHJvY2Vzc1Bvb2wtPmNvbmZpZ3VyYXRpb24o
KS5zZXREaXNrQ2FjaGVEaXJlY3RvcnkoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGlyZWN0
b3J5KSwgbmV0d29ya0NhY2hlU3ViZGlyZWN0b3J5KSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGFNYW5h
Z2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVE
YXRhTWFuYWdlci5jcHAKaW5kZXggN2UxZDE0YjY3Yjk1MzhmNDc1ZTBmOGFmNDUwYWFiZGVmMmUy
MTU1ZS4uMWNjMDY1NDExZTczMWZhNjcyYzQzNGYzYjNjMGFiZTlhNTY5M2ViZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGFNYW5h
Z2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJz
aXRlRGF0YU1hbmFnZXIuY3BwCkBAIC0yNiw4ICsyNiw4IEBACiAjaW5jbHVkZSAiV2ViS2l0V2Vi
c2l0ZURhdGFNYW5hZ2VyUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYnNpdGVEYXRhUHJp
dmF0ZS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhRmV0Y2hPcHRpb24uaCIKLSNpbmNsdWRlIDxX
ZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgorI2luY2x1
ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9nbGliL1dURkdUeXBlLmg+CiAKQEAgLTM2MywxMyArMzYzLDEzIEBAIEFQ
STo6V2Vic2l0ZURhdGFTdG9yZSYgd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyR2V0RGF0YVN0b3Jl
KFdlYktpdFdlYnNpdGVEYXRhTWFuCiAgICAgaWYgKCFwcml2LT53ZWJzaXRlRGF0YVN0b3JlKSB7
CiAgICAgICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uOjpjcmVhdGUoKTsKICAgICAgICAgY29uZmlndXJhdGlvbi0+c2V0TG9jYWxTdG9yYWdlRGly
ZWN0b3J5KCFwcml2LT5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPwotICAgICAgICAgICAgQVBJOjpX
ZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkgOiBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPmxv
Y2FsU3RvcmFnZURpcmVjdG9yeS5nZXQoKSkpOworICAgICAgICAgICAgQVBJOjpXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkgOiBGaWxlU3lzdGVtOjpzdHJp
bmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPmxvY2FsU3RvcmFnZURpcmVjdG9y
eS5nZXQoKSkpOwogICAgICAgICBjb25maWd1cmF0aW9uLT5zZXROZXR3b3JrQ2FjaGVEaXJlY3Rv
cnkoIXByaXYtPmRpc2tDYWNoZURpcmVjdG9yeSA/Ci0gICAgICAgICAgICBBUEk6OldlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKSA6IFdlYkNvcmU6OkZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJp
bmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPmRpc2tDYWNoZURpcmVjdG9yeS5n
ZXQoKSksIG5ldHdvcmtDYWNoZVN1YmRpcmVjdG9yeSkpOworICAgICAgICAgICAgQVBJOjpXZWJz
aXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkgOiBGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihwcml2LT5kaXNrQ2FjaGVEaXJlY3RvcnkuZ2V0KCkpLCBuZXR3b3Jr
Q2FjaGVTdWJkaXJlY3RvcnkpKTsKICAgICAgICAgY29uZmlndXJhdGlvbi0+c2V0QXBwbGljYXRp
b25DYWNoZURpcmVjdG9yeSghcHJpdi0+YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA/Ci0gICAg
ICAgICAgICBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGly
ZWN0b3J5KCkgOiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKHByaXYtPmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkuZ2V0KCkpKTsKKyAgICAg
ICAgICAgIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJl
Y3RvcnkoKSA6IEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
cHJpdi0+YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeS5nZXQoKSkpOwogICAgICAgICBjb25maWd1
cmF0aW9uLT5zZXRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSghcHJpdi0+d2ViU1FMRGlyZWN0b3J5
ID8KLSAgICAgICAgICAgIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFi
YXNlRGlyZWN0b3J5KCkgOiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKHByaXYtPndlYlNRTERpcmVjdG9yeS5nZXQoKSkpOworICAgICAgICAg
ICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnko
KSA6IEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+
d2ViU1FMRGlyZWN0b3J5LmdldCgpKSk7CiAgICAgICAgIGNvbmZpZ3VyYXRpb24tPnNldE1lZGlh
S2V5c1N0b3JhZ2VEaXJlY3RvcnkoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFL
ZXlzU3RvcmFnZURpcmVjdG9yeSgpKTsKICAgICAgICAgcHJpdi0+d2Vic2l0ZURhdGFTdG9yZSA9
IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlTGVnYWN5KFdURk1vdmUoY29uZmlndXJhdGlv
bikpOwogICAgIH0KQEAgLTUzMiw3ICs1MzIsNyBAQCBjb25zdCBnY2hhciogd2Via2l0X3dlYnNp
dGVfZGF0YV9tYW5hZ2VyX2dldF9kaXNrX2NhY2hlX2RpcmVjdG9yeShXZWJLaXRXZWJzaXRlRAog
CiAgICAgaWYgKCFwcml2LT5kaXNrQ2FjaGVEaXJlY3RvcnkpIHsKICAgICAgICAgLy8gVGhlIGRl
ZmF1bHQgZGlyZWN0b3J5IGFscmVhZHkgaGFzIHRoZSBzdWJkaXJlY3RvcnkuCi0gICAgICAgIHBy
aXYtPmRpc2tDYWNoZURpcmVjdG9yeS5yZXNldChnX3N0cmR1cChXZWJDb3JlOjpGaWxlU3lzdGVt
OjpkaXJlY3RvcnlOYW1lKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5ldHdvcmtDYWNo
ZURpcmVjdG9yeSgpKS51dGY4KCkuZGF0YSgpKSk7CisgICAgICAgIHByaXYtPmRpc2tDYWNoZURp
cmVjdG9yeS5yZXNldChnX3N0cmR1cChGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKEFQSTo6V2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpKS51dGY4KCkuZGF0
YSgpKSk7CiAgICAgfQogICAgIHJldHVybiBwcml2LT5kaXNrQ2FjaGVEaXJlY3RvcnkuZ2V0KCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd2luL0FQSVdlYnNp
dGVEYXRhU3RvcmVXaW4uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dpbi9BUElX
ZWJzaXRlRGF0YVN0b3JlV2luLmNwcAppbmRleCAxOWJlMjg4ZDQ4MmRhYWZkZDE4ZTRjZmRmZWRj
ZTIwM2FhYzc1YmRkLi4zMjI1YjkyMTcwZDdjOThiNGJlODQ1YWNjZmU4ZDhjMWIzNjdkN2IzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd2luL0FQSVdlYnNpdGVEYXRh
U3RvcmVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93aW4vQVBJV2Vi
c2l0ZURhdGFTdG9yZVdpbi5jcHAKQEAgLTI2LDQzICsyNiw0MyBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKIAotI2luY2x1ZGUgPFdlYkNv
cmUvRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKIG5hbWVzcGFj
ZSBBUEkgewogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2Fj
aGVEaXJlY3RvcnkoKQogewotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNT
dG9yYWdlRGlyZWN0b3J5KCksICJBcHBsaWNhdGlvbkNhY2hlIik7CisgICAgcmV0dXJuIEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVj
aWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkFwcGxpY2F0aW9uQ2FjaGUiKTsKIH0KIAogU3RyaW5n
IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKQogewotICAg
IHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJD
YWNoZVN0b3JhZ2UiKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAi
Q2FjaGVTdG9yYWdlIik7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0
d29ya0NhY2hlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmxvY2FsVXNlclNw
ZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiTmV0d29ya0NhY2hlIik7CisgICAgcmV0dXJuIEZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJT
cGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIk5ldHdvcmtDYWNoZSIpOwogfQogCiBTdHJpbmcg
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkKIHsK
LSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgp
LCAiSW5kZXhlZERCIik7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwg
IkluZGV4ZWREQiIpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKQogewotICAgIHJldHVybiBXZWJDb3JlOjpG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6
bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJTZXJ2aWNlV29ya2VycyIpOwor
ICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3Rl
bTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJTZXJ2aWNlV29ya2VycyIp
OwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVj
dG9yeSgpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VE
aXJlY3RvcnkoKSwgIkxvY2FsU3RvcmFnZSIpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdl
RGlyZWN0b3J5KCksICJMb2NhbFN0b3JhZ2UiKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVT
eXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiTWVkaWFLZXlTdG9y
YWdlIik7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChG
aWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIk1lZGlhS2V5
U3RvcmFnZSIpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERldmljZUlk
SGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpCkBAIC03Myw1NyArNzMsNTcgQEAgU3RyaW5nIFdl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3Rvcnko
KQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0
b3J5KCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURp
cmVjdG9yeSgpLCAiV2ViU1FMIik7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3Rv
cnkoKSwgIldlYlNRTCIpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKQogewotICAgIHJldHVybiBXZWJDb3JlOjpG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6
bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzIik7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChG
aWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIlJlc291cmNl
TG9hZFN0YXRpc3RpY3MiKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmNhY2hlRGly
ZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5TmFt
ZSkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVj
dG9yeSgpLCBkaXJlY3RvcnlOYW1lKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVj
dG9yeSgpLCBkaXJlY3RvcnlOYW1lKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6Ondl
YnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYg
ZGlyZWN0b3J5TmFtZSkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmlj
U3RvcmFnZURpcmVjdG9yeSgpLCBkaXJlY3RvcnlOYW1lKTsKKyAgICByZXR1cm4gRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmlj
U3RvcmFnZURpcmVjdG9yeSgpLCBkaXJlY3RvcnlOYW1lKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVE
YXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkKIHsKLSAg
ICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdl
YkNvcmU6OkZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAi
QXBwbGljYXRpb25DYWNoZSIpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5
KCksICJBcHBsaWNhdGlvbkNhY2hlIik7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjps
ZWdhY3lEZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0
ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiTmV0d29ya0NhY2hlIik7
CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lz
dGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIk5ldHdvcmtDYWNoZSIp
OwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdFdlYlNRTERhdGFi
YXNlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmlj
U3RvcmFnZURpcmVjdG9yeSgpLCAiV2ViU1FMIik7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3Jh
Z2VEaXJlY3RvcnkoKSwgIldlYlNRTCIpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6
bGVnYWN5RGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4g
V2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZp
bGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiSW5kZXhlZERC
Iik7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxl
U3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkluZGV4ZWREQiIp
OwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdExvY2FsU3RvcmFn
ZURpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0
b3JhZ2VEaXJlY3RvcnkoKSwgIkxvY2FsU3RvcmFnZSIpOworICAgIHJldHVybiBGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNT
dG9yYWdlRGlyZWN0b3J5KCksICJMb2NhbFN0b3JhZ2UiKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVE
YXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1
cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6
OkZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiTWVkaWFD
YWNoZSIpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJNZWRpYUNh
Y2hlIik7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0TWVkaWFL
ZXlzU3RvcmFnZURpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpsb2NhbFVzZXJT
cGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIk1lZGlhS2V5U3RvcmFnZSIpOworICAgIHJldHVy
biBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxV
c2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJNZWRpYUtleVN0b3JhZ2UiKTsKIH0KIAog
U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0
b3JhZ2VEaXJlY3RvcnkoKQpAQCAtMTM0LDcgKzEzNCw3IEBAIFN0cmluZyBXZWJzaXRlRGF0YVN0
b3JlOjpsZWdhY3lEZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCkKIAog
U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJh
dGlvbkRpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZp
Y1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkphdmFTY3JpcHRDb3JlRGVidWciKTsKKyAgICByZXR1cm4g
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNl
clNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiSmF2YVNjcmlwdENvcmVEZWJ1ZyIpOwogfQog
CiBSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4gV2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNw
cAppbmRleCA4MDU0N2U2YmUxMzg2NTVmMDc5OGI2NzZkYzEyZGM5YWIzM2FjZjFiLi5mODg0NGFm
ZTZkMjJlNGNkNWVlMjA4MTQ4YjRmNDkyZjdjYzYzMTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNw
cApAQCAtODA2LDcgKzgwNiw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OndpbGxDbG9z
ZVBhZ2UoY29uc3QgV2ViUGFnZVByb3h5JiBwYWdlKQogCiBzdGF0aWMgYm9vbCBmaWxlQ2FuQmVB
Y2NlcHRlZEZvclVwbG9hZChjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBIYXNoU2V0PFN0
cmluZz4mIGFsbG93ZWRNSU1FVHlwZXMsIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgYWxsb3dlZEZp
bGVFeHRlbnNpb25zKQogewotICAgIGlmICghV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZUV4aXN0
cyhmaWxlbmFtZSkpCisgICAgaWYgKCFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGZpbGVuYW1lKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGFsbG93ZWRNSU1FVHlwZXMuaXNFbXB0
eSgpICYmIGFsbG93ZWRGaWxlRXh0ZW5zaW9ucy5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tCmluZGV4IDNiNDk2MjhmZGY2ZGZj
NWFhZGQwMjlkNWEyY2JjYjZiZmI3OGNmYzEuLmM3MjdiZDIzZWY5NTUyNTFmNzk4MDlkNjljNTgy
MzIxOTdhZjFlYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rv
d25sb2FkQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25s
b2FkQ2xpZW50Lm1tCkBAIC00MiwxMCArNDIsMTAgQEAKICNpbXBvcnQgIldlYlByb2Nlc3NQcm94
eS5oIgogI2ltcG9ydCAiX1dLRG93bmxvYWREZWxlZ2F0ZS5oIgogI2ltcG9ydCAiX1dLRG93bmxv
YWRJbnRlcm5hbC5oIgotI2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25z
ZS5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5o
PgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtMTgxLDcgKzE4MSw3IEBAIHZvaWQgRG93bmxv
YWRDbGllbnQ6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdlYlByb2Nl
c3NQb29sJiwgRG93CiB7CiAjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQogICAgIGlmIChkb3dubG9h
ZFByb3h5LmlzU3lzdGVtUHJldmlld0Rvd25sb2FkKCkpIHsKLSAgICAgICAgTlNTdHJpbmcgKnRl
bXBvcmFyeURpcmVjdG9yeSA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURp
cmVjdG9yeShAIlN5c3RlbVByZXZpZXdzIik7CisgICAgICAgIE5TU3RyaW5nICp0ZW1wb3JhcnlE
aXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoQCJTeXN0ZW1Q
cmV2aWV3cyIpOwogICAgICAgICBOU1N0cmluZyAqZGVzdGluYXRpb24gPSBbdGVtcG9yYXJ5RGly
ZWN0b3J5IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpmaWxlbmFtZV07CiAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKEFsbG93T3ZlcndyaXRlOjpZZXMsIGRlc3RpbmF0aW9uKTsKICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlByb2Nlc3NQb29sQ29jb2EubW0KaW5kZXggNTZjZjBmZDA1OTBjNjE1NDNkMzQxMGY4NGY2NmQx
OWM3ZWQ4NTFiZi4uMmRhZjc1NTcxY2NiMWE5ZDcwNWJhYTA1N2FkNjI0YTVhNjk4YTQzOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENv
Y29hLm1tCkBAIC00Myw3ICs0Myw2IEBACiAjaW1wb3J0ICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIK
ICNpbXBvcnQgIldpbmRvd1NlcnZlckNvbm5lY3Rpb24uaCIKICNpbXBvcnQgPFdlYkNvcmUvQ29s
b3IuaD4KLSNpbXBvcnQgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8V2ViQ29yZS9O
ZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQu
aD4KICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1QYXN0ZWJvYXJkLmg+CkBAIC01Miw2ICs1MSw3
IEBACiAjaW1wb3J0IDxwYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oPgogI2ltcG9ydCA8cGFsL3Nw
aS9jb2NvYS9OU0tleWVkQXJjaGl2ZXJTUEkuaD4KICNpbXBvcnQgPHN5cy9wYXJhbS5oPgorI2lt
cG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0Zi9Qcm9jZXNzUHJpdmlsZWdlLmg+
CiAjaW1wb3J0IDx3dGYvY29jb2EvRW50aXRsZW1lbnRzLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2Rh
cndpbi9keWxkU1BJLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJ
bXBsLm1tCmluZGV4IDA2NGUwZGZkOTBmZjZiYjlkZGMzYWI0NDJlYzhjZGE2OWFhMmQ5NmQuLjE2
MDk1YThiZDE1NjQ4ODQ5YzZhZWIxMzExNjVlNjM3NGZlMGU4YmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCkBAIC04NCw3ICs4NCw2IEBACiAjaW1w
b3J0IDxXZWJDb3JlL0RyYWdEYXRhLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RyYWdJdGVtLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0VkaXRvci5oPgotI2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0ZvbnRBdHRyaWJ1dGVDaGFuZ2VzLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0ZvbnRBdHRyaWJ1dGVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0tleXByZXNzQ29tbWFuZC5o
PgpAQCAtMTE1LDYgKzExNCw3IEBACiAjaW1wb3J0IDxwYWwvc3BpL21hYy9OU1ZpZXdTUEkuaD4K
ICNpbXBvcnQgPHBhbC9zcGkvbWFjL05TV2luZG93U1BJLmg+CiAjaW1wb3J0IDxzeXMvc3RhdC5o
PgorI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3ll
ZC5oPgogI2ltcG9ydCA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KICNpbXBvcnQgPHd0Zi9TZXRG
b3JTY29wZS5oPgpAQCAtMzk2OSw3ICszOTY5LDcgQEAgYm9vbCBXZWJWaWV3SW1wbDo6cGVyZm9y
bURyYWdPcGVyYXRpb24oaWQgPE5TRHJhZ2dpbmdJbmZvPiBkcmFnZ2luZ0luZm8pCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAotICAgICAgICBOU1N0cmluZyAqZHJvcERl
c3RpbmF0aW9uUGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVj
dG9yeShAIldlYktpdERyb3BEZXN0aW5hdGlvbiIpOworICAgICAgICBOU1N0cmluZyAqZHJvcERl
c3RpbmF0aW9uUGF0aCA9IEZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShAIldl
YktpdERyb3BEZXN0aW5hdGlvbiIpOwogICAgICAgICBpZiAoIWRyb3BEZXN0aW5hdGlvblBhdGgp
IHsKICAgICAgICAgICAgIGRlbGV0ZSBkcmFnRGF0YTsKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTQyOTEsNyArNDI5MSw3IEBAIE5TQXJyYXkgKldlYlZpZXdJbXBsOjpuYW1lc09mUHJv
bWlzZWRGaWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9uKE5TVVJMICpkcm9wRGVzdGluCiAgICAgICAg
IExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBpbWFnZSBmaWxlIHZpYSAtW05TRmlsZVdyYXBw
ZXIgd3JpdGVUb1VSTDpvcHRpb25zOm9yaWdpbmFsQ29udGVudHNVUkw6ZXJyb3I6XSIpOwogCiAg
ICAgaWYgKCFtX3Byb21pc2VkVVJMLmlzRW1wdHkoKSkKLSAgICAgICAgV2ViQ29yZTo6RmlsZVN5
c3RlbTo6c2V0TWV0YWRhdGFVUkwoU3RyaW5nKHBhdGgpLCBtX3Byb21pc2VkVVJMKTsKKyAgICAg
ICAgRmlsZVN5c3RlbTo6c2V0TWV0YWRhdGFVUkwoU3RyaW5nKHBhdGgpLCBtX3Byb21pc2VkVVJM
KTsKICAgICAKICAgICByZXR1cm4gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0OltwYXRoIGxhc3RQ
YXRoQ29tcG9uZW50XV07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9E
ZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EZXZp
Y2VJZEhhc2hTYWx0U3RvcmFnZS5jcHAKaW5kZXggZTYwZWUzZjRmOTRiMDMyZDM5OWI3YTM3N2E3
ZThmOWNjYTIzNzUxZC4uMTlhN2ExMmNmYTNmMzFiZjFlMjEzN2MzNWNkNTdkMGE1MDdiOWE5ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0b3Jh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9y
YWdlLmNwcApAQCAtMjgsOSArMjgsOSBAQAogCiAjaW5jbHVkZSAiUGVyc2lzdGVuY3lVdGlscy5o
IgogCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
aGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1i
ZXIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9IZXhOdW1i
ZXIuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0J1aWxkZXIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fk
cy9Eb3dubG9hZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9E
b3dubG9hZFByb3h5LmNwcAppbmRleCA3NTEwMmVlM2IwMDQyNGE0ODA5NDE1ZjM2YjA0ZWQzYjUz
Y2FkMTQ4Li5lMDkyNTRiMDE4NzI0OWM5OTJmYzJmY2Q3Mjg4OGU3ODRiMTkzMzkxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3Bw
CkBAIC0zNiw4ICszNiw4IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5j
bHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNsdWRlICJXZWJQcm90ZWN0aW9uU3BhY2UuaCIK
LSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL01JTUVU
eXBlUmVnaXN0cnkuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9CdWJibGV3cmFw
TGF1bmNoZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9CdWJi
bGV3cmFwTGF1bmNoZXIuY3BwCmluZGV4IGU0MzRlMDMzMzk4N2E5Mjc0OWMwMGRkYzViNTMzNjA5
MDRkZWYxYmUuLjE2NzIzZGZkZGE0ZmFkYmI5MmFhN2VhMGE4ZTZhZTU4ODRmMmQwNjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvQnViYmxld3JhcExh
dW5jaGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9nbGliL0J1
YmJsZXdyYXBMYXVuY2hlci5jcHAKQEAgLTIwLDEyICsyMCwxMiBAQAogCiAjaWYgRU5BQkxFKEJV
QkJMRVdSQVBfU0FOREJPWCkKIAotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1EaXNwbGF5Lmg+CiAjaW5jbHVkZSA8ZmNudGwuaD4KICNp
bmNsdWRlIDxnbGliLmg+CiAjaW5jbHVkZSA8c2VjY29tcC5oPgogI2luY2x1ZGUgPHN5cy9pb2N0
bC5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR0xp
YlV0aWxpdGllcy5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KICNpbmNsdWRlIDx3
dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9MYXVuY2hlci9nbGliL1Byb2Nlc3NMYXVuY2hlckdMaWIuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9Qcm9jZXNzTGF1bmNoZXJHTGliLmNwcAppbmRleCBjNTY2
MTg3M2EwNWU3MTA5YjUxN2VhNzViZGZhYmNjZDhmMjNmYjg2Li4wYzM5MDczZmUxZGU3YWRhZjUz
MTI2ODNkODE2NDYyZjY0ZDNlYzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9MYXVuY2hlci9nbGliL1Byb2Nlc3NMYXVuY2hlckdMaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvUHJvY2Vzc0xhdW5jaGVyR0xpYi5jcHAKQEAgLTMx
LDEwICszMSwxMCBAQAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJGbGF0cGFr
TGF1bmNoZXIuaCIKICNpbmNsdWRlICJQcm9jZXNzRXhlY3V0YWJsZVBhdGguaCIKLSNpbmNsdWRl
IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxlcnJuby5oPgogI2luY2x1ZGUgPGZj
bnRsLmg+CiAjaW5jbHVkZSA8Z2xpYi5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAj
aW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYvVW5pU3RkRXh0cmFzLmg+CiAj
aW5jbHVkZSA8d3RmL2dsaWIvR0xpYlV0aWxpdGllcy5oPgpAQCAtNDcsNyArNDcsNiBAQAogI2Vu
ZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQgewotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHN0
YXRpYyB2b2lkIGNoaWxkU2V0dXBGdW5jdGlvbihncG9pbnRlciB1c2VyRGF0YSkKIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1BsdWdpbkluZm9DYWNo
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL2d0ay9QbHVnaW5JbmZvQ2Fj
aGUuY3BwCmluZGV4IDgwNjQ3ZWIxMmVlNTI1MTFhMTE5ZTg1ZmRlMmY1OWM0ZTIzNzc4ODUuLmEy
OGEwMGEzODZjYWZlY2IzNzgyYTQxMTAzN2NhOWE1MzVkYzIyMDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1BsdWdpbkluZm9DYWNoZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9ndGsvUGx1Z2luSW5mb0NhY2hlLmNwcApA
QCAtMjksOCArMjksOCBAQAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogCiAjaW5j
bHVkZSAiTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0
ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtRGlzcGxheS5oPgorI2luY2x1ZGUgPHd0
Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKQEAgLTY2LDEwICs2NiwxMCBAQCBQbHVnaW5JbmZvQ2FjaGU6OlBsdWdpbklu
Zm9DYWNoZSgpCiAgICAgbV9zYXZlVG9GaWxlSWRsZS5zZXRQcmlvcml0eShHX1BSSU9SSVRZX0RF
RkFVTFRfSURMRSk7CiAKICAgICBHVW5pcXVlUHRyPGNoYXI+IGNhY2hlRGlyZWN0b3J5KGdfYnVp
bGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9jYWNoZV9kaXIoKSwgIndlYmtpdGd0ayIsIG51bGxwdHIp
KTsKLSAgICBpZiAoV2ViQ29yZTo6RmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKGNhY2hl
RGlyZWN0b3J5LmdldCgpKSkgeworICAgIGlmIChGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3Jp
ZXMoY2FjaGVEaXJlY3RvcnkuZ2V0KCkpKSB7CiAgICAgICAgIC8vIERlbGV0ZSBvbGQgY2FjaGUg
ZmlsZS4KICAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBvbGRDYWNoZVBhdGgoZ19idWlsZF9maWxl
bmFtZShjYWNoZURpcmVjdG9yeS5nZXQoKSwgInBsdWdpbnMiLCBudWxscHRyKSk7Ci0gICAgICAg
IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3Ry
aW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihvbGRDYWNoZVBhdGguZ2V0KCkpKTsKKyAg
ICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKG9sZENhY2hlUGF0aC5nZXQoKSkpOwogCiAgICAgICAgIG1fY2Fj
aGVQYXRoLnJlc2V0KGdfYnVpbGRfZmlsZW5hbWUoY2FjaGVEaXJlY3RvcnkuZ2V0KCksIGNhY2hl
RmlsZW5hbWVGb3JDdXJyZW50RGlzcGxheSgpLCBudWxscHRyKSk7CiAgICAgICAgIGdfa2V5X2Zp
bGVfbG9hZF9mcm9tX2ZpbGUobV9jYWNoZUZpbGUuZ2V0KCksIG1fY2FjaGVQYXRoLmdldCgpLCBH
X0tFWV9GSUxFX05PTkUsIG51bGxwdHIpOwpAQCAtMTEyLDcgKzExMiw3IEBAIGJvb2wgUGx1Z2lu
SW5mb0NhY2hlOjpnZXRQbHVnaW5JbmZvKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgUGx1Z2lu
TW9kdWxlSW5mbyYKICAgICBpZiAoIWdfa2V5X2ZpbGVfaGFzX2dyb3VwKG1fY2FjaGVGaWxlLmdl
dCgpLCBwbHVnaW5Hcm91cC5kYXRhKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBh
dXRvIGxhc3RNb2RpZmllZFRpbWUgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZp
Y2F0aW9uVGltZShwbHVnaW5QYXRoKTsKKyAgICBhdXRvIGxhc3RNb2RpZmllZFRpbWUgPSBGaWxl
U3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShwbHVnaW5QYXRoKTsKICAgICBpZiAoIWxh
c3RNb2RpZmllZFRpbWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB0aW1lX3QgY2FjaGVk
TGFzdE1vZGlmaWVkID0gc3RhdGljX2Nhc3Q8dGltZV90PihnX2tleV9maWxlX2dldF91aW50NjQo
bV9jYWNoZUZpbGUuZ2V0KCksIHBsdWdpbkdyb3VwLmRhdGEoKSwgIm10aW1lIiwgbnVsbHB0cikp
OwpAQCAtMTIwLDcgKzEyMCw3IEBAIGJvb2wgUGx1Z2luSW5mb0NhY2hlOjpnZXRQbHVnaW5JbmZv
KGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgUGx1Z2luTW9kdWxlSW5mbyYKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgcGx1Z2luLnBhdGggPSBwbHVnaW5QYXRoOwotICAgIHBsdWdpbi5p
bmZvLmZpbGUgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUocGx1Z2luUGF0
aCk7CisgICAgcGx1Z2luLmluZm8uZmlsZSA9IEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShw
bHVnaW5QYXRoKTsKIAogICAgIEdVbmlxdWVQdHI8Y2hhcj4gc3RyaW5nVmFsdWUoZ19rZXlfZmls
ZV9nZXRfc3RyaW5nKG1fY2FjaGVGaWxlLmdldCgpLCBwbHVnaW5Hcm91cC5kYXRhKCksICJuYW1l
IiwgbnVsbHB0cikpOwogICAgIHBsdWdpbi5pbmZvLm5hbWUgPSBTdHJpbmc6OmZyb21VVEY4KHN0
cmluZ1ZhbHVlLmdldCgpKTsKQEAgLTE0MCw3ICsxNDAsNyBAQCBib29sIFBsdWdpbkluZm9DYWNo
ZTo6Z2V0UGx1Z2luSW5mbyhjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIFBsdWdpbk1vZHVsZUlu
Zm8mCiAKIHZvaWQgUGx1Z2luSW5mb0NhY2hlOjp1cGRhdGVQbHVnaW5JbmZvKGNvbnN0IFN0cmlu
ZyYgcGx1Z2luUGF0aCwgY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYgcGx1Z2luKQogewotICAgIGF1
dG8gbGFzdE1vZGlmaWVkVGltZSA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmlj
YXRpb25UaW1lKHBsdWdpblBhdGgpOworICAgIGF1dG8gbGFzdE1vZGlmaWVkVGltZSA9IEZpbGVT
eXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKHBsdWdpblBhdGgpOwogICAgIGlmICghbGFz
dE1vZGlmaWVkVGltZSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5Qcm9jZXNzUHJveHlNYWMubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5Qcm9jZXNzUHJveHlNYWMubW0K
aW5kZXggODlmYWI1ZWNiNjY2ZDJiNDRmY2MyMjM5ZWJlNWJhNWVlMWFjNjNkOC4uMzYzM2MyYWIw
NzA2MDExZWJkN2JjMTNmMWEwYmZkYTVhZDZkZDliYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2luUHJvY2Vzc1Byb3h5TWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvbWFjL1BsdWdpblByb2Nlc3NQcm94eU1hYy5t
bQpAQCAtMzMsMTEgKzMzLDExIEBACiAjaW1wb3J0ICJQbHVnaW5Qcm9jZXNzTWVzc2FnZXMuaCIK
ICNpbXBvcnQgIlNhbmRib3hVdGlsaXRpZXMuaCIKICNpbXBvcnQgPFF1YXJ0ekNvcmUvQ0FSZW1v
dGVMYXllclNlcnZlci5oPgotI2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0
IDxjcnRfZXh0ZXJucy5oPgogI2ltcG9ydCA8bWFjaC1vL2R5bGQuaD4KICNpbXBvcnQgPHBhbC9z
cGkvY2YvQ0ZOZXR3b3JrU1BJLmg+CiAjaW1wb3J0IDxzcGF3bi5oPgorI2ltcG9ydCA8d3RmL0Zp
bGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0Zi9Qcm9jZXNzUHJpdmlsZWdlLmg+CiAjaW1wb3J0IDx3
dGYvVVJMLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC01Nyw4ICs1Nyw2IEBA
IC0gKEJPT0wpX3dhbnRzVXNlckF0dGVudGlvbgogQGVuZAogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
LXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCiAgICAgCiB2b2lkIFBsdWdpblByb2Nlc3NQcm94
eTo6cGxhdGZvcm1HZXRMYXVuY2hPcHRpb25zV2l0aEF0dHJpYnV0ZXMoUHJvY2Vzc0xhdW5jaGVy
OjpMYXVuY2hPcHRpb25zJiBsYXVuY2hPcHRpb25zLCBjb25zdCBQbHVnaW5Qcm9jZXNzQXR0cmli
dXRlcyYgcGx1Z2luUHJvY2Vzc0F0dHJpYnV0ZXMpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luSW5mb1N0b3JlVW5peC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luSW5mb1N0b3JlVW5peC5jcHAK
aW5kZXggMWRmZDgwN2MxMjM5YzMwNzllZjkyNDA3NDUwYjg5ZWM5MTE5Y2YwYy4uYWEwOTQ3MzY4
MTY1NGE5ZWY2NDQwNmIyYzY0MzkwM2Y3ZTAxMjYzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpbkluZm9TdG9yZVVuaXguY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5JbmZvU3RvcmVVbml4LmNw
cApAQCAtMzQsMTAgKzM0LDEwIEBACiAjaW5jbHVkZSAiTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaCIK
ICNpbmNsdWRlICJQbHVnaW5TZWFyY2hQYXRoLmgiCiAjaW5jbHVkZSAiUHJvY2Vzc0V4ZWN1dGFi
bGVQYXRoLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9QbGF0Zm9ybURpc3BsYXkuaD4KICNpbmNsdWRlIDxsaW1pdHMuaD4KICNpbmNsdWRlIDxz
dGRsaWIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiAjaWYgUExBVEZPUk0oR1RL
KQogI2luY2x1ZGUgIlBsdWdpbkluZm9DYWNoZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpblByb2Nlc3NQcm94eVVuaXgu
Y3BwCmluZGV4IGY4OTYxMjE3MGQwMTExNjA0MzJlZWVlYTNkOWI4OGEzNTM4YjcxMjIuLmM1MDBj
MGZjZWE2Mjc4ODZiYWRkZGMzZmM5NTBjNmM0ZWEzOGJjMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJveHlVbml4LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1By
b3h5VW5peC5jcHAKQEAgLTMyLDkgKzMyLDkgQEAKIAogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJQcm9jZXNzRXhlY3V0YWJsZVBhdGguaCIK
LSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRm
b3JtRGlzcGxheS5oPgogI2luY2x1ZGUgPHN5cy93YWl0Lmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVT
eXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Nl
cnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2Vy
dmljZVdvcmtlclByb2Nlc3NQcm94eS5jcHAKaW5kZXggNzI2ODgzYjNjZjgwZjQ4ZjJkYmZhNTYz
ZmM5YmY3YzU1ZDU3MDA2Zi4uNWJjZGE2M2E4NmIwZTFmOGU5NjQ2MTk0MzA5OTI2Y2JhNTFmMmQx
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nl
c3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclBy
b2Nlc3NQcm94eS5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgU2VydmljZVdvcmtlclByb2Nlc3NQcm94
eTo6flNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkoKQogYm9vbCBTZXJ2aWNlV29ya2VyUHJvY2Vz
c1Byb3h5OjpoYXNSZWdpc3RlcmVkU2VydmljZVdvcmtlcnMoY29uc3QgU3RyaW5nJiBzZXJ2aWNl
V29ya2VyRGlyZWN0b3J5KQogewogICAgIFN0cmluZyByZWdpc3RyYXRpb25GaWxlID0gV2ViQ29y
ZTo6c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGFiYXNlRmlsZW5hbWUoc2VydmljZVdvcmtl
ckRpcmVjdG9yeSk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVFeGlzdHMo
cmVnaXN0cmF0aW9uRmlsZSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMocmVn
aXN0cmF0aW9uRmlsZSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eTo6Z2V0
TGF1bmNoT3B0aW9ucyhQcm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMmIGxhdW5jaE9wdGlv
bnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2Fs
U3RvcmFnZURhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlN0b3JhZ2Uv
TG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwCmluZGV4IDBjMjVkNjU3ZTk3NzZhNzQ3NGQyMDU1ZmRm
NTQ4NzJhMDBkOGVkZGIuLjQ2ZmI2Yzc3Mjk0ZjNjNjMxZDRmZmZkZmMyNGExNDhmNzA4YTQ0Y2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9y
YWdlRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlN0b3JhZ2Uv
TG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwCkBAIC0yNywxMiArMjcsMTIgQEAKICNpbmNsdWRlICJM
b2NhbFN0b3JhZ2VEYXRhYmFzZS5oIgogCiAjaW5jbHVkZSAiTG9jYWxTdG9yYWdlRGF0YWJhc2VU
cmFja2VyLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9TUUxpdGVTdGF0ZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZVRyYW5zYWN0
aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvU3RvcmFnZU1hcC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3VkZGVuVGVybWluYXRpb24u
aD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFz
aC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2Nh
bFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
U3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3BwCmluZGV4IGFmZmQ3ZThhY2Fl
MmRlY2I1Yzg0NGU4NzNiNTZmN2QxNTNkMGFjOTYuLmMzNzgxZGY2NzY5MDBjNjk0YmUxNGJmZTZh
ZTM2NDliYzE4ODkwYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlN0
b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5jcHAKQEAg
LTI3LDEwICsyNywxMCBAQAogI2luY2x1ZGUgIkxvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5o
IgogCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvU1FMaXRlU3RhdGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0RW5jb2RpbmcuaD4K
KyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+
CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJz
aXRlRGF0YVN0b3JlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KaW5kZXggNDI3YTljODVhM2I5ODQ1YWU0
Zjc1NGZiNGM3YTM5MjYzYzhjMTdjOS4uNjE5MDA1MDAwNThkNWE4ZTA3NDhjYjM2MmMxZjc2YjQ0
NTRlMmIyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQpAQCAtMzAsMTAg
KzMwLDEwIEBACiAjaW1wb3J0ICJTdG9yYWdlTWFuYWdlci5oIgogI2ltcG9ydCAiV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCiAjaW1wb3J0ICJXZWJzaXRlRGF0YVN0b3JlUGFyYW1l
dGVycy5oIgotI2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZWFyY2hQb3B1
cE1lbnVDb2NvYS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4KKyNpbXBv
cnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNp
bXBvcnQgPHd0Zi9Qcm9jZXNzUHJpdmlsZWdlLmg+CiAKQEAgLTEyMSw3ICsxMjEsNyBAQCBXZWJz
aXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0ZXJzKCkKICAg
ICBwYXJhbWV0ZXJzLnBlbmRpbmdDb29raWVzID0gY29weVRvVmVjdG9yKG1fcGVuZGluZ0Nvb2tp
ZXMpOwogCiAgICAgaWYgKCFjb29raWVGaWxlLmlzRW1wdHkoKSkKLSAgICAgICAgU2FuZGJveEV4
dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KFdlYkNvcmU6OkZpbGVT
eXN0ZW06OmRpcmVjdG9yeU5hbWUoY29va2llRmlsZSksIHBhcmFtZXRlcnMuY29va2llU3RvcmFn
ZVBhdGhFeHRlbnNpb25IYW5kbGUpOworICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVI
YW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkoRmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShjb29r
aWVGaWxlKSwgcGFyYW1ldGVycy5jb29raWVTdG9yYWdlUGF0aEV4dGVuc2lvbkhhbmRsZSk7CiAK
ICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICBwYXJhbWV0ZXJzLmluZGV4ZWREYXRh
YmFzZURpcmVjdG9yeSA9IHJlc29sdmVkSW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmUuY3BwCmluZGV4IGIxOGZjZTc5MDZmOGUyYmI4YzViZDI0NjQ0NjA2MDhlNGNjZmVhZGQu
LjJhNTkwYzRiZDVlMTk4N2U1NWFlNjE0ODZkYWM4YWNmMzE3MzY2MmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
Y3BwCkBAIC00NCw3ICs0NCw2IEBACiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRl
cnMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9EYXRhYmFzZVRyYWNrZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVT
eXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxNZWRpYUVsZW1lbnQuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL09yaWdpbkxvY2suaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2lu
Lmg+CkBAIC01Miw2ICs1MSw3IEBACiAjaW5jbHVkZSA8d3RmL0NhbGxiYWNrQWdncmVnYXRvci5o
PgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9Dcm9z
c1RocmVhZENvcGllci5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8
d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogCkBAIC0x
OTMsOCArMTkzLDggQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZXNvbHZlRGlyZWN0b3JpZXNJ
Zk5lY2Vzc2FyeSgpCiAKICAgICAvLyBSZXNvbHZlIGRpcmVjdG9yaWVzIGZvciBmaWxlIHBhdGhz
LgogICAgIGlmICghbV9jb25maWd1cmF0aW9uLT5jb29raWVTdG9yYWdlRmlsZSgpLmlzRW1wdHko
KSkgewotICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+c2V0Q29va2llU3RvcmFnZUZp
bGUocmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24o
V2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShtX2NvbmZpZ3VyYXRpb24tPmNvb2tp
ZVN0b3JhZ2VGaWxlKCkpKSk7Ci0gICAgICAgIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5zZXRD
b29raWVTdG9yYWdlRmlsZShXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQobV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPmNvb2tpZVN0b3JhZ2VGaWxlKCksIFdlYkNv
cmU6OkZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShtX2NvbmZpZ3VyYXRpb24tPmNvb2tpZVN0
b3JhZ2VGaWxlKCkpKSk7CisgICAgICAgIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5zZXRDb29r
aWVTdG9yYWdlRmlsZShyZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJv
eEV4dGVuc2lvbihGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKG1fY29uZmlndXJhdGlvbi0+Y29v
a2llU3RvcmFnZUZpbGUoKSkpKTsKKyAgICAgICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPnNl
dENvb2tpZVN0b3JhZ2VGaWxlKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCht
X3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+Y29va2llU3RvcmFnZUZpbGUoKSwgRmlsZVN5c3RlbTo6
cGF0aEdldEZpbGVOYW1lKG1fY29uZmlndXJhdGlvbi0+Y29va2llU3RvcmFnZUZpbGUoKSkpKTsK
ICAgICB9CiB9CiAKQEAgLTIyNjUsNyArMjI2NSw3IEBAIFZlY3RvcjxQbHVnaW5Nb2R1bGVJbmZv
PiBXZWJzaXRlRGF0YVN0b3JlOjpwbHVnaW5zKCkgY29uc3QKIAogc3RhdGljIFN0cmluZyBjb21w
dXRlTWVkaWFLZXlGaWxlKGNvbnN0IFN0cmluZyYgbWVkaWFLZXlEaXJlY3RvcnkpCiB7Ci0gICAg
cmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtZWRp
YUtleURpcmVjdG9yeSwgIlNlY3VyZVN0b3AucGxpc3QiKTsKKyAgICByZXR1cm4gRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1lZGlhS2V5RGlyZWN0b3J5LCAiU2VjdXJlU3Rv
cC5wbGlzdCIpOwogfQogCiBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBXZWJz
aXRlRGF0YVN0b3JlOjptZWRpYUtleU9yaWdpbnMoY29uc3QgU3RyaW5nJiBtZWRpYUtleXNTdG9y
YWdlRGlyZWN0b3J5KQpAQCAtMjI3NCwxMiArMjI3NCwxMiBAQCBWZWN0b3I8V2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhPiBXZWJzaXRlRGF0YVN0b3JlOjptZWRpYUtleU9yaWdpbnMoY29uc3Qg
U3RyaQogCiAgICAgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gb3JpZ2luczsK
IAotICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2luUGF0aCA6IFdlYkNvcmU6OkZpbGVTeXN0ZW06
Omxpc3REaXJlY3RvcnkobWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSwgIioiKSkgeworICAgIGZv
ciAoY29uc3QgYXV0byYgb3JpZ2luUGF0aCA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobWVk
aWFLZXlzU3RvcmFnZURpcmVjdG9yeSwgIioiKSkgewogICAgICAgICBhdXRvIG1lZGlhS2V5Rmls
ZSA9IGNvbXB1dGVNZWRpYUtleUZpbGUob3JpZ2luUGF0aCk7Ci0gICAgICAgIGlmICghV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhtZWRpYUtleUZpbGUpKQorICAgICAgICBpZiAoIUZp
bGVTeXN0ZW06OmZpbGVFeGlzdHMobWVkaWFLZXlGaWxlKSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwogCi0gICAgICAgIGF1dG8gbWVkaWFLZXlJZGVudGlmaWVyID0gV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6cGF0aEdldEZpbGVOYW1lKG9yaWdpblBhdGgpOworICAgICAgICBhdXRvIG1lZGlhS2V5SWRl
bnRpZmllciA9IEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShvcmlnaW5QYXRoKTsKIAogICAg
ICAgICBpZiAoYXV0byBzZWN1cml0eU9yaWdpbiA9IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmllcihtZWRpYUtleUlkZW50aWZpZXIpKQogICAgICAgICAg
ICAgb3JpZ2lucy5hcHBlbmQoKnNlY3VyaXR5T3JpZ2luKTsKQEAgLTIyOTIsMTggKzIyOTIsMTgg
QEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVNZWRpYUtleXMoY29uc3QgU3RyaW5nJiBt
ZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5LAogewogICAgIEFTU0VSVCghbWVkaWFLZXlzU3RvcmFn
ZURpcmVjdG9yeS5pc0VtcHR5KCkpOwogCi0gICAgZm9yIChjb25zdCBhdXRvJiBtZWRpYUtleURp
cmVjdG9yeSA6IFdlYkNvcmU6OkZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobWVkaWFLZXlzU3Rv
cmFnZURpcmVjdG9yeSwgIioiKSkgeworICAgIGZvciAoY29uc3QgYXV0byYgbWVkaWFLZXlEaXJl
Y3RvcnkgOiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rv
cnksICIqIikpIHsKICAgICAgICAgYXV0byBtZWRpYUtleUZpbGUgPSBjb21wdXRlTWVkaWFLZXlG
aWxlKG1lZGlhS2V5RGlyZWN0b3J5KTsKIAotICAgICAgICBhdXRvIG1vZGlmaWNhdGlvblRpbWUg
PSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShtZWRpYUtleUZp
bGUpOworICAgICAgICBhdXRvIG1vZGlmaWNhdGlvblRpbWUgPSBGaWxlU3lzdGVtOjpnZXRGaWxl
TW9kaWZpY2F0aW9uVGltZShtZWRpYUtleUZpbGUpOwogICAgICAgICBpZiAoIW1vZGlmaWNhdGlv
blRpbWUpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBpZiAobW9kaWZpY2F0aW9u
VGltZS52YWx1ZSgpIDwgbW9kaWZpZWRTaW5jZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0g
ICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobWVkaWFLZXlGaWxlKTsKLSAg
ICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkobWVkaWFLZXlE
aXJlY3RvcnkpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1lZGlhS2V5RmlsZSk7
CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KG1lZGlhS2V5RGlyZWN0
b3J5KTsKICAgICB9CiB9CiAKQEAgLTIzMTIsMTEgKzIzMTIsMTEgQEAgdm9pZCBXZWJzaXRlRGF0
YVN0b3JlOjpyZW1vdmVNZWRpYUtleXMoY29uc3QgU3RyaW5nJiBtZWRpYUtleXNTdG9yYWdlRGly
ZWN0b3J5LAogICAgIEFTU0VSVCghbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkp
OwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBvcmlnaW4gOiBvcmlnaW5zKSB7Ci0gICAgICAgIGF1
dG8gbWVkaWFLZXlEaXJlY3RvcnkgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQobWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSwgb3JpZ2luLmRhdGFiYXNlSWRl
bnRpZmllcigpKTsKKyAgICAgICAgYXV0byBtZWRpYUtleURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5LCBvcmln
aW4uZGF0YWJhc2VJZGVudGlmaWVyKCkpOwogICAgICAgICBhdXRvIG1lZGlhS2V5RmlsZSA9IGNv
bXB1dGVNZWRpYUtleUZpbGUobWVkaWFLZXlEaXJlY3RvcnkpOwogCi0gICAgICAgIFdlYkNvcmU6
OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobWVkaWFLZXlGaWxlKTsKLSAgICAgICAgV2ViQ29yZTo6
RmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkobWVkaWFLZXlEaXJlY3RvcnkpOworICAg
ICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1lZGlhS2V5RmlsZSk7CisgICAgICAgIEZpbGVT
eXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KG1lZGlhS2V5RGlyZWN0b3J5KTsKICAgICB9CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1By
b3h5R0xpYi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQcm94
eUdMaWIuY3BwCmluZGV4IDhmNWZhMDNmZjQ2NTMyZjZiNTgyNTc5ZTk5YjAxN2IwNjU0MGFlYTUu
LjE2OWVhMjAxMjViMDMwNjM3ZmFmYzA3NDdjYTg2OTg1ODU0OTViOWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Byb3h5R0xpYi5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUHJveHlHTGliLmNwcApAQCAt
MzEsOCArMzEsOCBAQAogI2VuZGlmCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNs
dWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybURpc3BsYXkuaD4KKyNpbmNsdWRlIDx3dGYvRmls
ZVN5c3RlbS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYkluc3BlY3RvclBy
b3h5R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94
eUd0ay5jcHAKaW5kZXggY2ExODdhNjQyMzQxMTJlODU3OWJkODYxNjJkOWI4M2ZiNDI5YzgzYS4u
MTZiMDJhNDM1NzZlNTZmMWFlMjI2M2EwZGY0ZjA2NzMyMzRkYmUwNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwCkBAIC00
Miw5ICs0Miw5IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNsdWRlICJXZWJQ
cm9jZXNzUHJveHkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NlcnRpZmljYXRlSW5mby5oPgotI2lu
Y2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3RrVXRpbGl0
aWVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorI2luY2x1ZGUgPHd0
Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9ndGsvV2ViUHJvY2Vzc1Bvb2xHdGsuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Z3RrL1dlYlByb2Nlc3NQb29sR3RrLmNwcAppbmRleCA2MjQwNDE1ZjE1NzI3OWU0YmZjMGM1NmEy
Y2RhOGI2MjI1OTA2OWY2Li42YjIzNTc0MDRlMDNhZTMwMjFhZTg4MGI2M2E4Y2VjMGVlODZmMGY2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc1Bvb2xH
dGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQcm9jZXNzUG9vbEd0
ay5jcHAKQEAgLTM0LDEwICszNCwxMCBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9SZW1vdGVJbnNwZWN0b3JTZXJ2ZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3Jl
L0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dTdHJlYW1lckNvbW1vbi5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NjaGVt
ZVJlZ2lzdHJ5Lmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYv
Z2xpYi9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5tbQppbmRleCBkM2Y5ZjEyZWZjNjk0M2JjMGE0MTk4NWIyZmFhMDc3OWVmMzRiNTM1Li43
ZDFkZWM1MzQ3ZDRlYjM2YzAyNmQzNzM0OWE4ZmE3Y2ZlN2ZlYzQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0K
QEAgLTU2OTgsNyArNTY5OCw3IEBAIC0gKHZvaWQpX3ByZXBhcmVUb0RyYWdQcm9taXNlZEF0dGFj
aG1lbnQ6KGNvbnN0IFdlYkNvcmU6OlByb21pc2VkQXR0YWNobWVudEluZm8mCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBOU1N0cmluZyAqdGVtcG9yYXJ5QmxvYkRp
cmVjdG9yeSA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShA
ImJsb2JzIik7CisgICAgICAgIE5TU3RyaW5nICp0ZW1wb3JhcnlCbG9iRGlyZWN0b3J5ID0gRmls
ZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KEAiYmxvYnMiKTsKICAgICAgICAgTlNV
UkwgKmRlc3RpbmF0aW9uVVJMID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpbdGVtcG9yYXJ5Qmxv
YkRpcmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6W05TVVVJRCBVVUlEXS5V
VUlEU3RyaW5nXSBpc0RpcmVjdG9yeTpOT107CiAKICAgICAgICAgYXV0byBhdHRhY2htZW50ID0g
c3Ryb25nU2VsZi0+X3BhZ2UtPmF0dGFjaG1lbnRGb3JJZGVudGlmaWVyKGluZm8uYXR0YWNobWVu
dElkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zv
cm1zL1dLRmlsZVVwbG9hZFBhbmVsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zv
cm1zL1dLRmlsZVVwbG9hZFBhbmVsLm1tCmluZGV4IDY4MDE2NDZkMDhmOWQwOWZlM2U3Mzk4Mzg0
NTcyOWJlMjExZDVhYTYuLjg3NzExNGZjZjI2NmU5OTJhZWJkZDkwMzYwNDA2YTFkODk3NTFkZjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0ZpbGVVcGxv
YWRQYW5lbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGaWxl
VXBsb2FkUGFuZWwubW0KQEAgLTYyMCw3ICs2MjAsNyBAQCAtICh2b2lkKV91cGxvYWRJdGVtRm9y
SW1hZ2VEYXRhOihOU0RhdGEgKilpbWFnZURhdGEgaW1hZ2VOYW1lOihOU1N0cmluZyAqKWltYWdl
TgogICAgIE5TU3RyaW5nICogY29uc3Qga1RlbXBvcmFyeURpcmVjdG9yeU5hbWUgPSBAIldLV2Vi
RmlsZVVwbG9hZCI7CiAKICAgICAvLyBCdWlsZCB0ZW1wb3JhcnkgZmlsZSBwYXRoLgotICAgIE5T
U3RyaW5nICp0ZW1wb3JhcnlEaXJlY3RvcnkgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpjcmVhdGVU
ZW1wb3JhcnlEaXJlY3Rvcnkoa1RlbXBvcmFyeURpcmVjdG9yeU5hbWUpOworICAgIE5TU3RyaW5n
ICp0ZW1wb3JhcnlEaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpjcmVhdGVUZW1wb3JhcnlEaXJlY3Rv
cnkoa1RlbXBvcmFyeURpcmVjdG9yeU5hbWUpOwogICAgIE5TU3RyaW5nICpmaWxlUGF0aCA9IFt0
ZW1wb3JhcnlEaXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmltYWdlTmFt
ZV07CiAgICAgaWYgKCFmaWxlUGF0aCkgewogICAgICAgICBMT0dfRVJST1IoIldLRmlsZVVwbG9h
ZFBhbmVsOiBGYWlsZWQgdG8gY3JlYXRlIHRlbXBvcmFyeSBkaXJlY3RvcnkgdG8gc2F2ZSBpbWFn
ZSIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94
eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0K
aW5kZXggNjJiZTQxMGYyM2IwZTJjMzMwMzBiYjA5YzFlNjJmMWM4YjIwZTFjMC4uODMwMDRkNzBh
ODE3NzcxNjE4Mzg0ZDRkOGYyODE1Y2YyMTFhNzc2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCkBAIC00OTUsNyArNDk1LDcgQEAgc3RhdGlj
IE5TU3RyaW5nICpwYXRoVG9QREZPbkRpc2soY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFt
ZSkKIAogdm9pZCBXZWJQYWdlUHJveHk6OnNhdmVQREZUb1RlbXBvcmFyeUZvbGRlckFuZE9wZW5X
aXRoTmF0aXZlQXBwbGljYXRpb25SYXcoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwg
Y29uc3QgU3RyaW5nJiBvcmlnaW5hdGluZ1VSTFN0cmluZywgY29uc3QgdWludDhfdCogZGF0YSwg
dW5zaWduZWQgbG9uZyBzaXplLCBjb25zdCBTdHJpbmcmIHBkZlVVSUQpCiB7Ci0gICAgLy8gRklY
TUU6IFdyaXRlIG9yaWdpbmF0aW5nVVJMU3RyaW5nIHRvIHRoZSBmaWxlJ3Mgb3JpZ2luYXRpbmcg
VVJMIG1ldGFkYXRhIChwZXJoYXBzIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnNldE1ldGFkYXRhVVJM
KCk/KS4KKyAgICAvLyBGSVhNRTogV3JpdGUgb3JpZ2luYXRpbmdVUkxTdHJpbmcgdG8gdGhlIGZp
bGUncyBvcmlnaW5hdGluZyBVUkwgbWV0YWRhdGEgKHBlcmhhcHMgRmlsZVN5c3RlbTo6c2V0TWV0
YWRhdGFVUkwoKT8pLgogICAgIFVOVVNFRF9QQVJBTShvcmlnaW5hdGluZ1VSTFN0cmluZyk7CiAK
ICAgICBpZiAoIXN1Z2dlc3RlZEZpbGVuYW1lLmVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoIi5w
ZGYiKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlByb2Nl
c3NQb29sV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJQcm9jZXNzUG9v
bFdpbi5jcHAKaW5kZXggMTAxNWZmMDYwNmNmNGJiNGNmNTYyYTA3ODkyODg3MzM2NTZmOWVkNi4u
MzkwYTBjOTAxOTIxOTQzM2M1ZmE0OWQzZTM4NDRhMWI4MzU1MjhjYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlByb2Nlc3NQb29sV2luLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1Bvb2xXaW4uY3BwCkBAIC0yOCw4ICsy
OCw4IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKIAogI2luY2x1ZGUgIldlYlByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVT
eXN0ZW0uaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dp
bi9XZWJWaWV3LmNwcAppbmRleCBlZjc5MTljNzIwZmU3MTdiNTkwOTE5YmI4NWI0NTgxODViYTUw
ZmIxLi4wZjlmOWQ0ZWZkNTI4NmM2MjY4NDNhYzNhMDRjZDJlNmJkOTQ5OWU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCkBAIC00NCw3ICs0NCw2IEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9CaXRtYXBJbmZvLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DdXJzb3IuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0VkaXRvci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IV25k
REMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KQEAgLTU1LDYgKzU0LDcgQEAKICNp
bmNsdWRlIDxXZWJDb3JlL1dpbmRvd3NUb3VjaC5oPgogI2luY2x1ZGUgPGNhaXJvLXdpbjMyLmg+
CiAjaW5jbHVkZSA8Y2Fpcm8uaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1
ZGUgPHd0Zi9Tb2Z0TGlua2luZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1ZmZlci5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL3dwZS9XZWJQcm9jZXNzUG9vbFdQRS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy93cGUvV2ViUHJvY2Vzc1Bvb2xXUEUuY3BwCmluZGV4IDYyNTVjNDI3Yjdh
MWJhNWNmZWVkMGNiMzdkZTVjMDJjMGJjY2U1ZDEuLmY1MTAxN2E4Y2EyOWVkMDc5OTRkN2QyMDdj
OTU3MTQxMTJhMzhiZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dwZS9X
ZWJQcm9jZXNzUG9vbFdQRS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd3BlL1dl
YlByb2Nlc3NQb29sV1BFLmNwcApAQCAtMzQsMTAgKzM0LDEwIEBACiAjaW5jbHVkZSAiV2ViQ29v
a2llTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgotI2luY2x1ZGUgPFdlYkNvcmUv
RmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1NjaGVtZVJlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8Y3N0ZGxpYj4KKyNpbmNs
dWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUmVtb3RlSW5zcGVjdG9yU2VydmVyLmg+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2Vi
S2l0RXh0ZW5zaW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0RXh0ZW5zaW9uTWFuYWdlci5jcHAKaW5kZXggYWFjMjgy
ODBjYTUyMGJmODM5NjViNzk0YzNlMzRmZWFmYzYxZWU3NS4uNGNjZWM2MmVmMGUxMTMxZmExM2Y3
ZmIwNjBjODBlMDdlZTQyNTFhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdEV4dGVuc2lvbk1hbmFnZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRF
eHRlbnNpb25NYW5hZ2VyLmNwcApAQCAtMjMsOCArMjMsOCBAQAogI2luY2x1ZGUgIkFQSVN0cmlu
Zy5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViRXh0
ZW5zaW9uUHJpdmF0ZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1
ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00MSw5ICs0MSw5IEBAIFdl
YktpdEV4dGVuc2lvbk1hbmFnZXI6OldlYktpdEV4dGVuc2lvbk1hbmFnZXIoKQogCiB2b2lkIFdl
YktpdEV4dGVuc2lvbk1hbmFnZXI6OnNjYW5Nb2R1bGVzKGNvbnN0IFN0cmluZyYgd2ViRXh0ZW5z
aW9uc0RpcmVjdG9yeSwgVmVjdG9yPFN0cmluZz4mIG1vZHVsZXMpCiB7Ci0gICAgVmVjdG9yPFN0
cmluZz4gbW9kdWxlUGF0aHMgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KHdl
YkV4dGVuc2lvbnNEaXJlY3RvcnksIFN0cmluZygiKi5zbyIpKTsKKyAgICBWZWN0b3I8U3RyaW5n
PiBtb2R1bGVQYXRocyA9IEZpbGVTeXN0ZW06Omxpc3REaXJlY3Rvcnkod2ViRXh0ZW5zaW9uc0Rp
cmVjdG9yeSwgU3RyaW5nKCIqLnNvIikpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbW9k
dWxlUGF0aHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKFdlYkNvcmU6OkZpbGVTeXN0ZW06
OmZpbGVFeGlzdHMobW9kdWxlUGF0aHNbaV0pKQorICAgICAgICBpZiAoRmlsZVN5c3RlbTo6Zmls
ZUV4aXN0cyhtb2R1bGVQYXRoc1tpXSkpCiAgICAgICAgICAgICBtb2R1bGVzLmFwcGVuZChtb2R1
bGVQYXRoc1tpXSk7CiAgICAgfQogfQpAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgdm9pZCBwYXJz
ZVVzZXJEYXRhKEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgU3RyaW5nJiB3ZWJFeHRlbnNpb25zRGly
ZWN0b3J5LAogICAgIEdWYXJpYW50KiBkYXRhID0gbnVsbHB0cjsKICAgICBnX3ZhcmlhbnRfZ2V0
KHZhcmlhbnQuZ2V0KCksICIobSZzbXYpIiwgJmRpcmVjdG9yeSwgJmRhdGEpOwogCi0gICAgd2Vi
RXh0ZW5zaW9uc0RpcmVjdG9yeSA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oZGlyZWN0b3J5KTsKKyAgICB3ZWJFeHRlbnNpb25zRGlyZWN0
b3J5ID0gRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihkaXJl
Y3RvcnkpOwogICAgIGluaXRpYWxpemF0aW9uVXNlckRhdGEgPSBhZG9wdEdSZWYoZGF0YSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9n
bGliL0luamVjdGVkQnVuZGxlR2xpYi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvZ2xpYi9JbmplY3RlZEJ1bmRsZUdsaWIuY3BwCmluZGV4IDBhODYwNjUyZjAw
ZGFkOTMyOGNmMzU1ZDQwNTEzZmU4MGY1ZWY2NTguLmVkOTY1OGNhMWY0NmE0Yzc3Y2M3MjYwMzMw
ZDE2MGFhZDI4ODI3NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9nbGliL0luamVjdGVkQnVuZGxlR2xpYi5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL2dsaWIvSW5qZWN0ZWRCdW5kbGVHbGliLmNwcApA
QCAtMjksMTEgKzI5LDEwIEBACiAKICNpbmNsdWRlICJXS0J1bmRsZUFQSUNhc3QuaCIKICNpbmNs
dWRlICJXS0J1bmRsZUluaXRpYWxpemUuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0u
aD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAog
Ym9vbCBJbmplY3RlZEJ1bmRsZTo6aW5pdGlhbGl6ZShjb25zdCBXZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzJiwgQVBJOjpPYmplY3QqIGluaXRpYWxpemF0aW9uVXNlckRhdGEpCiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0
b3JhZ2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dl
Yk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IDRiZjQ4ZDBlOTRlZWY3NjA2NmNhMzBl
YTljZjM1NzA0YWIzZGVhZWIuLmJkMzk4MjQyNmM2NmU2MzViNmM1NjA1Y2JlNWEzYjA1MDI1ZDNh
MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1l
ZGlhS2V5U3RvcmFnZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9N
ZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuY3BwCkBAIC0yNyw5ICsyNyw5IEBA
CiAjaW5jbHVkZSAiV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5oIgogCiAjaW5jbHVkZSAiV2Vi
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3Rl
bS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAj
aW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3Ry
ZWFtLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZVBsdWdpblN0cmVhbS5oCmluZGV4IGJiNmE1YjA4YzdjY2U1ZGRlZDg5OTM2MGY3YWI4MzQwZjAz
OTVlNzQuLjNlZGNlYzZhNzJjY2MzYWE2NGQ4MTlmYTkzMzdmNDNlNjJlN2Q3NmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1
Z2luU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uaApAQCAtMjcsOSArMjcsOSBAQAogCiAjaWYgRU5BQkxF
KE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL25wcnVudGltZV9pbnRlcm5hbC5oPgogI2luY2x1ZGUgPG1lbW9y
eT4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBA
IC04OSw3ICs4OSw3IEBAIHByaXZhdGU6CiAgICAgaW50MzJfdCBtX29mZnNldDsKIAogICAgIFN0
cmluZyBtX2ZpbGVQYXRoOwotICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhh
bmRsZSBtX2ZpbGVIYW5kbGU7CisgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIG1f
ZmlsZUhhbmRsZTsKICAgICAKICAgICAvLyBXaGV0aGVyIE5QUF9OZXdTdHJlYW0gaGFzIHN1Y2Nl
c3NmdWxseSBiZWVuIGNhbGxlZC4KICAgICBib29sIG1faXNTdGFydGVkOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24u
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb24uY3BwCmluZGV4IDAxYzUzZjNkODQzZGQxZDI0MzE0ZjVjYzBjMTJlOTA5NjRlZmJiZTQu
LjI2ZDZkNTAwZTY5YTAxOTNiMWRmNWY0MDNmMWYzZjE4YzJjOGVkNWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbi5jcHAKQEAgLTM2LDEwICszNiw5IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgog
I2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNPYmplY3QuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KKyNpbmNs
dWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKLXVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCiBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6UGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb24oUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKiBwbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbk1hbmFnZXIsIHVpbnQ2NF90IHBsdWdpblByb2Nlc3NUb2tlbiwgSVBDOjpDb25uZWN0
aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyLCBib29sIHN1cHBvcnRzQXN5bmNo
cm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb24pCiAgICAgOiBtX3BsdWdpblByb2Nlc3NDb25uZWN0
aW9uTWFuYWdlcihwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVy
c2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lv
blN0YXRlQ29udmVyc2lvbi5jcHAKaW5kZXggNjNjMzZhM2RiNjlhODJhZDNiZWE2NjBmNmIwNmRm
ZTc2M2M1NTYxNy4uMWQ4MTY2YTA3ZTNmZDk3ODgxY2I3ZjQ0ZjRhNmJlZmY4NWJiZmU1YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25T
dGF0ZUNvbnZlcnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcApAQCAtMjgsOSArMjgsOSBAQAogCiAj
aW5jbHVkZSAiU2Vzc2lvblN0YXRlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9CbG9iRGF0YS5oPgot
I2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRm9ybURh
dGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hpc3RvcnlJdGVtLmg+CisjaW5jbHVkZSA8d3RmL0Zp
bGVTeXN0ZW0uaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJJ
bnNwZWN0b3JVSUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsv
V2ViSW5zcGVjdG9yVUlHdGsuY3BwCmluZGV4IDg5YzNiYTFhYTg5MzljZmE1MWY2ZmIyMjFhNzNi
MzhkNzgwMzI3YTMuLmRiYjJhOTE4MDRiZTEzMjY0OGM5YWQzM2U2ZjAyN2JkZDNmMTEwZjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJJbnNwZWN0
b3JVSUd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dl
Ykluc3BlY3RvclVJR3RrLmNwcApAQCAtMjgsOCArMjgsOCBAQAogI2luY2x1ZGUgIldlYkluc3Bl
Y3RvclVJLmgiCiAjaW5jbHVkZSAiUmVtb3RlV2ViSW5zcGVjdG9yVUkuaCIKIAotI2luY2x1ZGUg
PFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPGdsaWIuaD4KKyNpbmNsdWRlIDx3dGYv
RmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L3dpbi9XZWJJbnNwZWN0b3JVSVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS93aW4vV2ViSW5zcGVjdG9yVUlXaW4uY3BwCmluZGV4IDZhN2FmM2M1ZDY0OWM1MDRlZWRh
ZDQ5YzkxYTFmYjQ0MzVlNGExOGMuLjQ3MTExNGNhZmExNGE3ZDFmMzNmZmEyYzFlOGFmYmJiZWQy
ZTAzYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9X
ZWJJbnNwZWN0b3JVSVdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2Uvd2luL1dlYkluc3BlY3RvclVJV2luLmNwcApAQCAtMjgsOCArMjgsOCBAQAogCiAjaW5jbHVk
ZSAiUmVtb3RlV2ViSW5zcGVjdG9yVUkuaCIKIAotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3Rl
bS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvV2ViQ29yZUJ1bmRsZVdpbi5oPgorI2luY2x1ZGUgPHd0
Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29h
L1dlYlByb2Nlc3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQ
cm9jZXNzQ29jb2EubW0KaW5kZXggYTQ0NjgxYzc3MjcxYzA0YTc5NmYwN2JiY2NhYzNiZWNjNDgx
Zjc1YS4uMzVkNTdkNWNlNjdiNjU4NzYwNzkzZGNjN2M0MDkxNjlmODU4MGFmNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCkBAIC01
MSw3ICs1MSw2IEBACiAjaW1wb3J0IDxXZWJDb3JlL0FYT2JqZWN0Q2FjaGUuaD4KICNpbXBvcnQg
PFdlYkNvcmUvQ1BVTW9uaXRvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9EaXNwbGF5UmVmcmVzaE1v
bml0b3JNYW5hZ2VyLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQg
PFdlYkNvcmUvRm9udENhY2hlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZvbnRDYXNjYWRlLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0hpc3RvcnlDb250cm9sbGVyLmg+CkBAIC03Miw2ICs3MSw3IEBACiAj
aW1wb3J0IDxwYWwvc3BpL21hYy9OU0FjY2Vzc2liaWxpdHlTUEkuaD4KICNpbXBvcnQgPHBhbC9z
cGkvbWFjL05TQXBwbGljYXRpb25TUEkuaD4KICNpbXBvcnQgPHN0ZGlvLmg+CisjaW1wb3J0IDx3
dGYvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CiAKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9T
dG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2Uv
U3RvcmFnZUFyZWFTeW5jLmNwcAppbmRleCA0MDM5OTYwYjE0MGZjYjljNjNhNzZkNmQwNzcxM2Ez
YTMxODJjNWE0Li4xN2Q0ODk0OTRkN2UwOTBkM2ZmNzM1ZWZmMjY0NDVlZmVjNmI5Mjk5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcApAQCAt
MjgsMTEgKzI4LDExIEBACiAjaW5jbHVkZSAiU3RvcmFnZUFyZWFJbXBsLmgiCiAjaW5jbHVkZSAi
U3RvcmFnZVN5bmNNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU3RvcmFnZVRyYWNrZXIuaCIKLSNpbmNs
dWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZURhdGFi
YXNlVHJhY2tlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlU3RhdGVtZW50Lmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9TUUxpdGVUcmFuc2FjdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3Vk
ZGVuVGVybWluYXRpb24uaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUg
PHd0Zi9NYWluVGhyZWFkLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmNwcAppbmRleCAz
ZThmZjY1ZWU2MGYyNzRkYzkwNGViNThjMTE3NGVkNWNjMWE1NzRjLi4zNjkwOTVjZGFkMWQzNDcx
MWEwNjc2ZDg3MzZhOTBlMTkzZTI5MDVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L1N0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L1N0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmNwcApAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1
ZGUgIlN0b3JhZ2VTeW5jTWFuYWdlci5oIgogCiAjaW5jbHVkZSAiU3RvcmFnZVRocmVhZC5oIgot
I2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVt
Lmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdl
VHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIu
Y3BwCmluZGV4IDcxMDE0MGIxYjEzM2EyZWI1OTM5NmQ3Njc0ODZkMjE4M2VjOTA0ODQuLmI5MzRk
MWEzYjFiYWE4MzFhZGRmM2FiZTVlMDc3MGFiMWNmNzdmYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcApAQCAtMjgsMTMgKzI4LDEzIEBACiAj
aW5jbHVkZSAiU3RvcmFnZVRocmVhZC5oIgogI2luY2x1ZGUgIlN0b3JhZ2VUcmFja2VyQ2xpZW50
LmgiCiAjaW5jbHVkZSAiV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmgiCi0jaW5jbHVkZSA8
V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlR3JvdXAuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1NRTGl0ZURhdGFiYXNlVHJhY2tlci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvU1FMaXRlU3RhdGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9UZXh0RW5jb2RpbmcuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1
ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L01pc2MvV2ViTlNGaWxlTWFuYWdlckV4dHJhcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L01pc2MvV2ViTlNGaWxlTWFuYWdlckV4dHJhcy5tbQppbmRleCA5MDUxNzRkYTc1NmRkNjI4YmVk
ZWZkNTBjMmIyMzcyOWU1MzM1MDJiLi5jNTQxM2U4MWM2YTNlY2IyZWM5NzgxZjZiOGJmZDZjMmIy
YTA1ZGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TRmls
ZU1hbmFnZXJFeHRyYXMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJO
U0ZpbGVNYW5hZ2VyRXh0cmFzLm1tCkBAIC0zMCwxMCArMzAsMTAgQEAKIAogI2ltcG9ydCAiV2Vi
S2l0TlNTdHJpbmdFeHRyYXMuaCIKICNpbXBvcnQgIldlYk5TVVJMRXh0cmFzLmgiCi0jaW1wb3J0
IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPFdlYkNvcmUvTG9hZGVyTlNVUkxFeHRy
YXMuaD4KICNpbXBvcnQgPHN5cy9zdGF0Lmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgor
I2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0Zi9PYmpDUnVudGltZUV4dHJh
cy5oPgogCiBAaW1wbGVtZW50YXRpb24gTlNGaWxlTWFuYWdlciAoV2ViTlNGaWxlTWFuYWdlckV4
dHJhcykKQEAgLTQ0LDcgKzQ0LDcgQEAgLSAodm9pZClfd2Via2l0X3NldE1ldGFkYXRhVVJMOihO
U1N0cmluZyAqKVVSTFN0cmluZyByZWZlcnJlcjooTlNTdHJpbmcgKilyZWZlcnIKIHsKICAgICBB
U1NFUlQoVVJMU3RyaW5nKTsKICAgICBBU1NFUlQocGF0aCk7Ci0gICAgV2ViQ29yZTo6RmlsZVN5
c3RlbTo6c2V0TWV0YWRhdGFVUkwocGF0aCwgVVJMU3RyaW5nLCByZWZlcnJlcik7CisgICAgRmls
ZVN5c3RlbTo6c2V0TWV0YWRhdGFVUkwocGF0aCwgVVJMU3RyaW5nLCByZWZlcnJlcik7CiB9CiAK
ICNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTkzLDcgKzkzLDcgQEAgLSAoTlNT
dHJpbmcgKilfd2Via2l0X3BhdGhXaXRoVW5pcXVlRmlsZW5hbWVGb3JQYXRoOihOU1N0cmluZyAq
KXBhdGgKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogLSAoTlNTdHJpbmcgKilfd2Via2l0X2Ny
ZWF0ZVRlbXBvcmFyeURpcmVjdG9yeVdpdGhUZW1wbGF0ZVByZWZpeDooTlNTdHJpbmcgKilwcmVm
aXgKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGly
ZWN0b3J5KHByZWZpeCk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURp
cmVjdG9yeShwcmVmaXgpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VQcm92aWRlci5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VQcm92aWRlci5tbQppbmRleCA3NDk1YjE3NWZm
ZjQ1ZGM1YTU0YjAxNGY4ZDViZjAzZTU0Mzk0M2NjLi5hZGM0YzM5ODg0YzRjYjJkMmEzYmViNmIx
OTViY2RhMDAwODljMTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9y
YWdlL1dlYkRhdGFiYXNlUHJvdmlkZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
U3RvcmFnZS9XZWJEYXRhYmFzZVByb3ZpZGVyLm1tCkBAIC0yNiwxNiArMjYsMTYgQEAKICNpbXBv
cnQgIldlYkRhdGFiYXNlUHJvdmlkZXIuaCIKICNpbXBvcnQgIldlYkRhdGFiYXNlTWFuYWdlclBy
aXZhdGUuaCIKIAotI2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CisjaW1wb3J0IDx3dGYv
RmlsZVN5c3RlbS5oPgogCiBTdHJpbmcgV2ViRGF0YWJhc2VQcm92aWRlcjo6aW5kZXhlZERhdGFi
YXNlRGlyZWN0b3J5UGF0aCgpCiB7CiAgICAgTlNVc2VyRGVmYXVsdHMgKmRlZmF1bHRzID0gW05T
VXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXTsKICAgICBOU1N0cmluZyAqZGF0YWJh
c2VzRGlyZWN0b3J5ID0gW2RlZmF1bHRzIG9iamVjdEZvcktleTpXZWJEYXRhYmFzZURpcmVjdG9y
eURlZmF1bHRzS2V5XTsKICAgICBpZiAoIWRhdGFiYXNlc0RpcmVjdG9yeSB8fCAhW2RhdGFiYXNl
c0RpcmVjdG9yeSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQotICAgICAgICBkYXRh
YmFzZXNEaXJlY3RvcnkgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQoIn4vTGlicmFyeS9XZWJLaXQvRGF0YWJhc2VzL19fX0luZGV4ZWREQiJfcywgW1tOU0J1
bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlmaWVyXSk7CisgICAgICAgIGRhdGFiYXNlc0Rp
cmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCgifi9MaWJyYXJ5
L1dlYktpdC9EYXRhYmFzZXMvX19fSW5kZXhlZERCIl9zLCBbW05TQnVuZGxlIG1haW5CdW5kbGVd
IGJ1bmRsZUlkZW50aWZpZXJdKTsKICAgICBlbHNlCi0gICAgICAgIGRhdGFiYXNlc0RpcmVjdG9y
eSA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFz
ZXNEaXJlY3RvcnksICJfX19JbmRleGVkREIiX3MpOworICAgICAgICBkYXRhYmFzZXNEaXJlY3Rv
cnkgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGF0YWJhc2VzRGlyZWN0
b3J5LCAiX19fSW5kZXhlZERCIl9zKTsKICAgICAKICAgICByZXR1cm4gW2RhdGFiYXNlc0RpcmVj
dG9yeSBzdHJpbmdCeVN0YW5kYXJkaXppbmdQYXRoXTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCBlZDBlMGRmNzliMDNkYTY2ZThhMjliY2VkOWNl
YWE5M2NkNjY1ZThjLi4wMWM2MDA1ZWIyYTJjMGQwNjRmMDZmOGRjNDRjMDM1M2Y0NzhmY2VjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC0xNDgsNyAr
MTQ4LDYgQEAKICNpbXBvcnQgPFdlYkNvcmUvRWRpdG9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0V2
ZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0V2ZW50SGFuZGxlci5oPgotI2ltcG9ydCA8V2ViQ29y
ZS9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZvY3VzQ29udHJvbGxlci5oPgogI2lt
cG9ydCA8V2ViQ29yZS9Gb250QXR0cmlidXRlcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9Gb250Q2Fj
aGUuaD4KQEAgLTIzMSw2ICsyMzAsNyBAQAogI2ltcG9ydCA8cGFsL3NwaS9tYWMvTlNTcGVsbENo
ZWNrZXJTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvbWFjL05TV2luZG93U1BJLmg+CiAjaW1wb3J0
IDx3dGYvQXNzZXJ0aW9ucy5oPgorI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQg
PHd0Zi9IYXNoVHJhaXRzLmg+CiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgogI2ltcG9ydCA8
d3RmL09iakNSdW50aW1lRXh0cmFzLmg+CkBAIC02ODg1LDcgKzY4ODUsNyBAQCAtIChCT09MKXBl
cmZvcm1EcmFnT3BlcmF0aW9uOihpZCA8TlNEcmFnZ2luZ0luZm8+KWRyYWdnaW5nSW5mbwogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKLSAgICAgICAgTlNTdHJpbmcgKmRy
b3BEZXN0aW5hdGlvblBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpjcmVhdGVUZW1wb3JhcnlE
aXJlY3RvcnkoQCJXZWJLaXREcm9wRGVzdGluYXRpb24iKTsKKyAgICAgICAgTlNTdHJpbmcgKmRy
b3BEZXN0aW5hdGlvblBhdGggPSBGaWxlU3lzdGVtOjpjcmVhdGVUZW1wb3JhcnlEaXJlY3Rvcnko
QCJXZWJLaXREcm9wRGVzdGluYXRpb24iKTsKICAgICAgICAgaWYgKCFkcm9wRGVzdGluYXRpb25Q
YXRoKSB7CiAgICAgICAgICAgICBkZWxldGUgZHJhZ0RhdGE7CiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdp
bkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0
YWJhc2UuY3BwCmluZGV4IGJjNzlkODliZDQ0NmM1NmVhMWJhOWQ1N2M3NWFlMzk5YWE4ZjA0Y2Yu
LjY0MWFjMzU0YzM0MTk2N2VhNmNlZDY5MGQ1ZTZkNDVjNmMyYzJhMWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCkBAIC0zMyw3
ICszMyw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAjaWYgRU5BQkxFKE5F
VFNDQVBFX1BMVUdJTl9NRVRBREFUQV9DQUNIRSkKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCisj
aW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblBhY2th
Z2UuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luUGFja2FnZS5oCmlu
ZGV4IGI0ODgzZGVhOTk3NmRiNTBjZGU1Mjg2MGFhOWI5MmI1YmIxMDEwZGYuLjg5ODdhM2QzNTNj
NzZjMGFhNDQ2ZWFiMzkwODM3MzMzOWQ1MTdkMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luUGFja2FnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1BsdWdpbnMvUGx1Z2luUGFja2FnZS5oCkBAIC0yOSw4ICsyOSw4IEBACiAKICNpbmNs
dWRlICJQbGF0Zm9ybU1vZHVsZS5oIgogI2luY2x1ZGUgIlBsdWdpblF1aXJrU2V0LmgiCi0jaW5j
bHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgor
I2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2gu
aD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luU3Ry
ZWFtLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblN0cmVhbS5oCmlu
ZGV4IGMxYjlmODdhYzRlNjIyZmJiMmUyZTIwNWQxNjQ1OWMwYzE5NGU3YjYuLjQzMWIzNjMwMzYy
YzllNTIxMTE4ZGQwMzI3M2E2Y2Q5YzI4Y2M0NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vUGx1Z2lucy9QbHVnaW5TdHJlYW0uaApAQCAtMjcsMTIgKzI3LDEyIEBACiAjcHJhZ21h
IG9uY2UKIAogI2luY2x1ZGUgIlBsdWdpblF1aXJrU2V0LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9G
aWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRl
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvbnBydW50aW1lX2ludGVybmFsLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVT
eXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQXBwbGljYXRpb25DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJBcHBsaWNhdGlvbkNhY2hlLmNwcAppbmRleCBiODVkZDE1NDQwYTZlYTU0MDRhOGE0ODUy
MTQzZTU5MTc4ZmVjMTJkLi45MGJlMWZjZTc1MWI0ZjFiNWQ5NGIxYmI2NzRjMzZiM2VjNTY5ZmNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcHBsaWNhdGlvbkNhY2hl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcHBsaWNhdGlvbkNhY2hlLmNw
cApAQCAtMzAsMTMgKzMwLDEzIEBACiAjaW5jbHVkZSAiTWFyc2hhbGxpbmdIZWxwZXJzLmgiCiAj
aW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKICNpbmNsdWRlICJXZWJTZWN1cml0eU9yaWdpbi5o
IgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0FwcGxpY2F0
aW9uQ2FjaGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9DT01QdHIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0
ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8Y29t
dXRpbC5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAKaW5kZXggM2Y2YzM4YjA2MjhkYjRiYWNm
OWM0MTM1N2I1OTFhN2RlYzlhY2Q0MS4uZjk5NjNmMWMwNjg5NmQ3YTJjYjJkNzMzYTE4ZWZhYWFm
M2NlNDgwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YWJhc2VN
YW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFn
ZXIuY3BwCkBAIC0zOSw5ICszOSw5IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9DT01QdHIuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0RhdGFiYXNlTWFuYWdlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGF0
YWJhc2VUcmFja2VyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlP
cmlnaW5EYXRhLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYv
TWFpblRocmVhZC5oPgogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCkBAIC00MzYsNyAr
NDM2LDcgQEAgc3RhdGljIFdURjo6U3RyaW5nIGRhdGFiYXNlc0RpcmVjdG9yeSgpCiAgICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oZGlyZWN0b3J5UHJlZi5nZXQoKSk7CiAj
ZW5kaWYKIAotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGly
ZWN0b3J5KCksICJEYXRhYmFzZXMiKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVj
dG9yeSgpLCAiRGF0YWJhc2VzIik7CiB9CiAKIHZvaWQgV2ViS2l0SW5pdGlhbGl6ZVdlYkRhdGFi
YXNlc0lmTmVjZXNzYXJ5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkRvd25sb2FkQ3VybC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZEN1
cmwuY3BwCmluZGV4IDIwZDRmNDA4MzVmNzI0MTM4ZjE3MjNhOGRjMmY5NGI4OTUyZWVlZDcuLjk5
YjYyN2YxYWFjMDNhZWRmNTA2ODdmYzdmMzM2YmI5NWQ5Y2RkMjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViRG93bmxvYWRDdXJsLmNwcApAQCAtMzUsMjIgKzM1LDE5IEBACiAjaW5j
bHVkZSAiV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKICNpbmNsdWRlICJXZWJVUkxD
cmVkZW50aWFsLmgiCiAjaW5jbHVkZSAiV2ViVVJMUmVzcG9uc2UuaCIKLQotI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KLQotI2luY2x1ZGUgPGlvLmg+Ci0jaW5jbHVkZSA8c3lzL3N0YXQu
aD4KLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLQogI2luY2x1ZGUgPFdlYkNvcmUvQlN0cmluZy5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvQ3VybERvd25sb2FkLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9G
aWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VI
YW5kbGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dEVuY29k
aW5nLmg+CisjaW5jbHVkZSA8aW8uaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2luY2x1ZGUg
PHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCmluZGV4IGE2MzFiOTE2OTY3NzcyYmI4
MGU3YzYzZTBmNWU1N2Y2ZjMyNWM2OWUuLjAyNWMyMGJlYTIzOGNkNmE0OTVhMjUwZjZjNTUwY2E3
ZjUyNzlkNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVu
Y2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAK
QEAgLTM4LDEzICszOCwxMyBAQAogCiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5k
YXRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NPTVB0ci5oPgotI2luY2x1ZGUgPFdlYkNvcmUv
RmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRm9udENhc2NhZGUuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtT
dG9yYWdlU2Vzc2lvbi5oPgogI2luY2x1ZGUgPGxpbWl0cz4KICNpbmNsdWRlIDxzaGxvYmouaD4K
ICNpbmNsdWRlIDx3Y2hhci5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNs
dWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCmlu
ZGV4IGU3NjE3NDRlMGQxYjg1YWZmZDEwYjc3N2NkZDM3OTFhNGY3MWIzMWUuLmUzMzEwNjNhMGJm
MGViZDgyMDA5MTUwNDA3NjI2ZGU5YTE0MGU1MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZp
ZXcuY3BwCkBAIC05Niw3ICs5Niw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9FZGl0b3IuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0V2ZW50SGFuZGxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRXZlbnRO
YW1lcy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvRmxvYXRRdWFkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Gb2N1c0NvbnRyb2xsZXIuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0ZvbnQuaD4KQEAgLTE3MSw2ICsxNzAsNyBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvV2luZG93c1RvdWNoLmg+CiAjaW5jbHVkZSA8Y29tZGVmLmg+CiAjaW5jbHVkZSA8ZDJk
MS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJl
YWQuaD4KICNpbmNsdWRlIDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgogI2luY2x1ZGUgPHd0Zi9S
QU1TaXplLmg+CkBAIC01MTMsNyArNTEzLDcgQEAgdm9pZCBXZWJWaWV3OjpzZXRDYWNoZU1vZGVs
KFdlYkNhY2hlTW9kZWwgY2FjaGVNb2RlbCkKICAgICAgICAgaWYgKHByZWZlcmVuY2UgJiYgKENG
U3RyaW5nR2V0VHlwZUlEKCkgPT0gQ0ZHZXRUeXBlSUQocHJlZmVyZW5jZS5nZXQoKSkpKQogICAg
ICAgICAgICAgY2Z1cmxDYWNoZURpcmVjdG9yeSA9IGFkb3B0Q0Yoc3RhdGljX2Nhc3Q8Q0ZTdHJp
bmdSZWY+KHByZWZlcmVuY2UubGVha1JlZigpKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
IGNmdXJsQ2FjaGVEaXJlY3RvcnkgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVj
aWZpY1N0b3JhZ2VEaXJlY3RvcnkoKS5jcmVhdGVDRlN0cmluZygpOworICAgICAgICAgICAgY2Z1
cmxDYWNoZURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURp
cmVjdG9yeSgpLmNyZWF0ZUNGU3RyaW5nKCk7CiAgICAgfQogICAgIGNhY2hlRGlyZWN0b3J5ID0g
U3RyaW5nKGNmdXJsQ2FjaGVEaXJlY3RvcnkuZ2V0KCkpOwogICAgIENGSW5kZXggY2FjaGVNZW1v
cnlDYXBhY2l0eSA9IDA7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFu
Z2VMb2cKaW5kZXggMzZkYzUyNTVkN2Q1MmU2ZTk2ZDA0ZDkxYTRiMGQ5MTYzZTRkZWQ2Mi4uM2Fl
MjRmYjJiZGM2NzhkN2Q1NmExMDE2YzVmODVjODczN2FlYTJjZiAxMDA2NDQKLS0tIGEvVG9vbHMv
Q2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE5LTAx
LTIzICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KKworICAgICAgICBN
b3ZlIEZpbGVTeXN0ZW0gdG8gV1RGCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTM2MDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHA6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1BsYXRmb3JtR1RLLmNtYWtlOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvUGxhdGZv
cm1KU0NPbmx5LmNtYWtlOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvUGxhdGZvcm1QbGF5U3Rh
dGlvbi5jbWFrZToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1BsYXRmb3JtV1BFLmNtYWtlOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3Bw
OiBSZW5hbWVkIGZyb20gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVTeXN0
ZW0uY3BwLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRv
ci5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NlY3VyaXR5T3Jp
Z2luLmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVm
ZmVyVGVzdC5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29h
L0RhdGFiYXNlVHJhY2tlclRlc3QubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL2N1cmwvQ29va2llcy5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9Eb3dubG9hZC5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0Rvd25sb2FkUHJvZ3Jlc3MubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS93
aW4vUGxhdGZvcm1VdGlsaXRpZXNXaW4uY3BwOgorCiAyMDE5LTAxLTIzICBSb2IgQnVpcyAgPHJi
dWlzQGlnYWxpYS5jb20+CiAKICAgICAgICAgVXBkYXRlIE1JTUUgdHlwZSBwYXJzZXIKZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCmluZGV4IGE0YjVjNzcwNzA4
OTBhNWNmMTQyZDJkOWM4YjNjMzM4NjQ4M2U2ZWQuLmEwYjY4NWM3NWY5ZGFmMGZlYjdlYWFlMWJi
MzJhMmU5NTJkMjI2ZjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1w
UmVuZGVyVHJlZS5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJU
cmVlLmNwcApAQCAtNDYsNyArNDYsNiBAQAogCiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29y
ZUZvdW5kYXRpb24uaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9UZXN0UnVubmVyVXRpbHMu
aD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJLaXRMZWdh
Y3kvV2ViS2l0Lmg+CiAjaW5jbHVkZSA8V2ViS2l0TGVnYWN5L1dlYktpdENPTUFQSS5oPgogI2lu
Y2x1ZGUgPGNvbXV0aWwuaD4KQEAgLTYwLDYgKzU5LDcgQEAKICNpbmNsdWRlIDxzaGx3YXBpLmg+
CiAjaW5jbHVkZSA8dGNoYXIuaD4KICNpbmNsdWRlIDx3aW5kb3dzLmg+CisjaW5jbHVkZSA8d3Rm
L0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTIyMiw3ICsy
MjIsNyBAQCBzdGF0aWMgU3RyaW5nIGxpYnJhcnlQYXRoRm9yRHVtcFJlbmRlclRyZWUoKQogICAg
ICAgICByZXR1cm4gU3RyaW5nIChwYXRoLmRhdGEoKSwgcGF0aC5sZW5ndGgoKSk7CiAgICAgfQog
Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFn
ZURpcmVjdG9yeSgpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0
b3JhZ2VEaXJlY3RvcnkoKTsKIH0KICNlbmRpZgogCkBAIC05MzEsOSArOTMxLDkgQEAgc3RhdGlj
IHZvaWQgc2V0RGVmYXVsdHNUb0NvbnNpc3RlbnRWYWx1ZXNGb3JUZXN0aW5nKCkKICAgICBTdHJp
bmcgbGlicmFyeVBhdGggPSBsaWJyYXJ5UGF0aEZvckR1bXBSZW5kZXJUcmVlKCk7CiAKICAgICAv
LyBTZXQgdXAgdGhlc2UgdmFsdWVzIGJlZm9yZSBjcmVhdGluZyB0aGUgV2ViVmlldyBzbyB0aGF0
IHRoZSB2YXJpb3VzIGluaXRpYWxpemF0aW9ucyB3aWxsIHNlZSB0aGVzZSBwcmVmZXJyZWQgdmFs
dWVzLgotICAgIENGUHJlZmVyZW5jZXNTZXRBcHBWYWx1ZShXZWJEYXRhYmFzZURpcmVjdG9yeURl
ZmF1bHRzS2V5LCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
bGlicmFyeVBhdGgsICJEYXRhYmFzZXMiKS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBhcHBJZC5n
ZXQoKSk7Ci0gICAgQ0ZQcmVmZXJlbmNlc1NldEFwcFZhbHVlKFdlYlN0b3JhZ2VEaXJlY3RvcnlE
ZWZhdWx0c0tleSwgV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KGxpYnJhcnlQYXRoLCAiTG9jYWxTdG9yYWdlIikuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgYXBw
SWQuZ2V0KCkpOwotICAgIENGUHJlZmVyZW5jZXNTZXRBcHBWYWx1ZShXZWJLaXRMb2NhbENhY2hl
RGVmYXVsdHNLZXksIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChsaWJyYXJ5UGF0aCwgIkxvY2FsQ2FjaGUiKS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBhcHBJ
ZC5nZXQoKSk7CisgICAgQ0ZQcmVmZXJlbmNlc1NldEFwcFZhbHVlKFdlYkRhdGFiYXNlRGlyZWN0
b3J5RGVmYXVsdHNLZXksIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChsaWJy
YXJ5UGF0aCwgIkRhdGFiYXNlcyIpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGFwcElkLmdldCgp
KTsKKyAgICBDRlByZWZlcmVuY2VzU2V0QXBwVmFsdWUoV2ViU3RvcmFnZURpcmVjdG9yeURlZmF1
bHRzS2V5LCBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobGlicmFyeVBhdGgs
ICJMb2NhbFN0b3JhZ2UiKS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBhcHBJZC5nZXQoKSk7Cisg
ICAgQ0ZQcmVmZXJlbmNlc1NldEFwcFZhbHVlKFdlYktpdExvY2FsQ2FjaGVEZWZhdWx0c0tleSwg
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGxpYnJhcnlQYXRoLCAiTG9jYWxD
YWNoZSIpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGFwcElkLmdldCgpKTsKICNlbmRpZgogfQog
CkBAIC0xMDM1LDcgKzEwMzUsNyBAQCBzdGF0aWMgdm9pZCBzaXplV2ViVmlld0ZvckN1cnJlbnRU
ZXN0KCkKIAogc3RhdGljIFN0cmluZyBmaW5kRm9udEZhbGxiYWNrKGNvbnN0IGNoYXIqIHBhdGhP
clVybCkKIHsKLSAgICBTdHJpbmcgcGF0aFRvRm9udEZhbGxiYWNrID0gV2ViQ29yZTo6RmlsZVN5
c3RlbTo6ZGlyZWN0b3J5TmFtZShwYXRoT3JVcmwpOworICAgIFN0cmluZyBwYXRoVG9Gb250RmFs
bGJhY2sgPSBGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKHBhdGhPclVybCk7CiAKICAgICB3Y2hh
cl90IGZ1bGxQYXRoW19NQVhfUEFUSF07CiAgICAgaWYgKCFfd2Z1bGxwYXRoKGZ1bGxQYXRoLCBw
YXRoVG9Gb250RmFsbGJhY2suY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCks
IF9NQVhfUEFUSCkpCkBAIC0xMDU0LDIwICsxMDU0LDIwIEBAIHN0YXRpYyBTdHJpbmcgZmluZEZv
bnRGYWxsYmFjayhjb25zdCBjaGFyKiBwYXRoT3JVcmwpCiAgICAgICAgIHJldHVybiBlbXB0eVN0
cmluZygpOwogCiAgICAgU3RyaW5nIHBhdGhUb1Rlc3QgPSBwYXRoVG9DaGVjay5zdWJzdHJpbmco
bG9jYXRpb24gKyBsYXlvdXRUZXN0cy5sZW5ndGgoKSArIDEpOwotICAgIFN0cmluZyBwb3NzaWJs
ZVBhdGhUb0xvZ3VlID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KHBhdGhUb0NoZWNrLnN1YnN0cmluZygwLCBsb2NhdGlvbiArIGxheW91dFRlc3RzLmxlbmd0
aCgpICsgMSksICJwbGF0Zm9ybVxcd2luIik7CisgICAgU3RyaW5nIHBvc3NpYmxlUGF0aFRvTG9n
dWUgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGF0aFRvQ2hlY2suc3Vi
c3RyaW5nKDAsIGxvY2F0aW9uICsgbGF5b3V0VGVzdHMubGVuZ3RoKCkgKyAxKSwgInBsYXRmb3Jt
XFx3aW4iKTsKIAogICAgIFZlY3RvcjxTdHJpbmc+IHBvc3NpYmxlUGF0aHM7Ci0gICAgcG9zc2li
bGVQYXRocy5hcHBlbmQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KHBvc3NpYmxlUGF0aFRvTG9ndWUsIHBhdGhUb1Rlc3QpKTsKKyAgICBwb3NzaWJsZVBhdGhz
LmFwcGVuZChGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocG9zc2libGVQYXRo
VG9Mb2d1ZSwgcGF0aFRvVGVzdCkpOwogCiAgICAgc2l6ZV90IG5leHRDYW5kaWRhdGVFbmQgPSBw
YXRoVG9UZXN0LnJldmVyc2VGaW5kKCdcXCcpOwogICAgIHdoaWxlIChuZXh0Q2FuZGlkYXRlRW5k
ICYmIG5leHRDYW5kaWRhdGVFbmQgIT0gV1RGOjpub3RGb3VuZCkgewogICAgICAgICBwYXRoVG9U
ZXN0ID0gcGF0aFRvVGVzdC5zdWJzdHJpbmcoMCwgbmV4dENhbmRpZGF0ZUVuZCk7Ci0gICAgICAg
IHBvc3NpYmxlUGF0aHMuYXBwZW5kKFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChwb3NzaWJsZVBhdGhUb0xvZ3VlLCBwYXRoVG9UZXN0KSk7CisgICAgICAgIHBv
c3NpYmxlUGF0aHMuYXBwZW5kKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChw
b3NzaWJsZVBhdGhUb0xvZ3VlLCBwYXRoVG9UZXN0KSk7CiAgICAgICAgIG5leHRDYW5kaWRhdGVF
bmQgPSBwYXRoVG9UZXN0LnJldmVyc2VGaW5kKCdcXCcpOwogICAgIH0KIAogICAgIGZvciAoVmVj
dG9yPFN0cmluZz46Oml0ZXJhdG9yIHBvcyA9IHBvc3NpYmxlUGF0aHMuYmVnaW4oKTsgcG9zICE9
IHBvc3NpYmxlUGF0aHMuZW5kKCk7ICsrcG9zKSB7Ci0gICAgICAgIHBhdGhUb0ZvbnRGYWxsYmFj
ayA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCgqcG9zLCAi
cmVzb3VyY2VzXFwiKTsKKyAgICAgICAgcGF0aFRvRm9udEZhbGxiYWNrID0gRmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KCpwb3MsICJyZXNvdXJjZXNcXCIpOwogCiAgICAgICAg
IGlmICg6OlBhdGhJc0RpcmVjdG9yeVcocGF0aFRvRm9udEZhbGxiYWNrLmNoYXJhY3RlcnNXaXRo
TnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSkKICAgICAgICAgICAgIHJldHVybiBwYXRoVG9Gb250
RmFsbGJhY2s7CkBAIC0xMDgxLDcgKzEwODEsNyBAQCBzdGF0aWMgdm9pZCBhZGRGb250RmFsbGJh
Y2tJZlByZXNlbnQoY29uc3QgU3RyaW5nJiBmb250RmFsbGJhY2tQYXRoKQogICAgIGlmIChmb250
RmFsbGJhY2tQYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3RyaW5nIGZv
bnRGYWxsYmFjayA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChmb250RmFsbGJhY2tQYXRoLCAiTWFjLWNvbXBhdGlibGUtZm9udC1mYWxsYmFjay5jc3MiKTsK
KyAgICBTdHJpbmcgZm9udEZhbGxiYWNrID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KGZvbnRGYWxsYmFja1BhdGgsICJNYWMtY29tcGF0aWJsZS1mb250LWZhbGxiYWNrLmNz
cyIpOwogCiAgICAgaWYgKCE6OlBhdGhGaWxlRXhpc3RzVyhmb250RmFsbGJhY2suY2hhcmFjdGVy
c1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpKQogICAgICAgICByZXR1cm47CkBAIC0xMDk0
LDcgKzEwOTQsNyBAQCBzdGF0aWMgdm9pZCByZW1vdmVGb250RmFsbGJhY2tJZlByZXNlbnQoY29u
c3QgU3RyaW5nJiBmb250RmFsbGJhY2tQYXRoKQogICAgIGlmIChmb250RmFsbGJhY2tQYXRoLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3RyaW5nIGZvbnRGYWxsYmFjayA9IFdl
YkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChmb250RmFsbGJhY2tQ
YXRoLCAiTWFjLWNvbXBhdGlibGUtZm9udC1mYWxsYmFjay5jc3MiKTsKKyAgICBTdHJpbmcgZm9u
dEZhbGxiYWNrID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGZvbnRGYWxs
YmFja1BhdGgsICJNYWMtY29tcGF0aWJsZS1mb250LWZhbGxiYWNrLmNzcyIpOwogCiAgICAgaWYg
KCE6OlBhdGhGaWxlRXhpc3RzVyhmb250RmFsbGJhY2suY2hhcmFjdGVyc1dpdGhOdWxsVGVybWlu
YXRpb24oKS5kYXRhKCkpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3Rz
LnR4dAppbmRleCBiMjQ5MDA4OThiM2ZjNWFmODljNDkwMzM4MGMzZmQ3YzFkYzBkNzA1Li5kOWNl
YThmNTgxZjZiMzAxZDI5MzVkNWRiNDViMDc3OTY5ZDRjMGRjIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01h
a2VMaXN0cy50eHQKQEAgLTE4OCw3ICsxODgsMTQgQEAgc2V0KFRlc3RXVEZfU09VUkNFUwogICAg
ICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9Xb3JrZXJQb29sLmNwcAogKQogCi0jIEZJ
WE1FOiBUZXN0cy9XVEYvUnVuTG9vcC5jcHAgaXMgbWlzc2luZyBiZWNhdXNlIGl0IGRvZXNuJ3Qg
d29yayBmb3IgV2luZG93cy4KKyMgRklYTUU6IE1ha2UgdGhlc2Ugd29yayBvbiBXaW5kb3dzIHRv
by4KK2lmIChOT1QgV0lOMzIpCisgICAgbGlzdChBUFBFTkQgVGVzdFdURl9TT1VSQ0VTCisgICAg
ICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcAorICAgICAg
ICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvUnVuTG9vcC5jcHAKKyAgICApCitlbmRp
ZiAoKQorCiAjIEZJWE1FOiBQbGF0Zm9ybS1zcGVjaWZpYyBzb3VyY2VzIGluIFRlc3RzL1dURiBh
cmUgbm90IGluY2x1ZGVkIGluIFRlc3RXVEZfU09VUkNFUy4KIAogV0VCS0lUX0lOQ0xVREVfQ09O
RklHX0ZJTEVTX0lGX0VYSVNUUygpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Bs
YXRmb3JtR1RLLmNtYWtlIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUdUSy5jbWFrZQpp
bmRleCBjMzRmYWUwN2NmM2M2YjBhMzljMzk5ZmVlMzJjZDI1YzNhMGFhN2Y0Li5jZTgyMWU2MWIw
NTY0MzViMmVlZWU1ZTBlNTZiYTIzNTc3MjU4ODVlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZv
cm1HVEsuY21ha2UKQEAgLTkzLDcgKzkzLDYgQEAgYWRkX2V4ZWN1dGFibGUoVGVzdFdlYkNvcmUK
ICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL0NvbXBsZXhUZXh0Q29udHJv
bGxlci5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL0ROUy5jcHAK
ICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNwcAot
ICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUvRmlsZVN5c3RlbS5jcHAKICAg
ICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL2dzdHJlYW1lci9Hc3RNYXBwZWRC
dWZmZXIuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV2ViQ29yZS9nc3RyZWFt
ZXIvR1N0cmVhbWVyVGVzdC5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJD
b3JlL0dyaWRQb3NpdGlvbi5jcHAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxh
dGZvcm1KU0NPbmx5LmNtYWtlIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUpTQ09ubHku
Y21ha2UKaW5kZXggYTNmYTJkYTk1NWQ1YTM5YzFjMzk2ODBjMjFlOGNkZTZlOGZiNWM4MC4uYjU1
Njk4YmJmYmY5NzMzYWMwOGUzNjkzNWE5OGJiMmI2OWVlMGI3ZiAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9QbGF0Zm9ybUpTQ09ubHkuY21ha2UKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9QbGF0Zm9ybUpTQ09ubHkuY21ha2UKQEAgLTIxLDcgKzIxLDMgQEAgZW5kaWYgKCkKIHNl
dCh0ZXN0X21haW5fU09VUkNFUwogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L2dlbmVyaWMvbWFp
bi5jcHAKICkKLQotbGlzdChBUFBFTkQgVGVzdFdURl9TT1VSQ0VTCi0gICAgJHtURVNUV0VCS0lU
QVBJX0RJUn0vVGVzdHMvV1RGL1J1bkxvb3AuY3BwCi0pCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1BsYXRmb3JtUGxheVN0YXRpb24uY21ha2UgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1BsYXRmb3JtUGxheVN0YXRpb24uY21ha2UKaW5kZXggOWYxYTJhNjRkNTE4NDA0ZGE5ODZlNjY1
MTI3MGY3ODhhMDVkOGU2Yy4uZjFmY2IwNDFjNzViMDcxNWYwYTMyZmJkNDQwZWFjNGUwMTFjNDE3
OSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVBsYXlTdGF0aW9uLmNt
YWtlCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1QbGF5U3RhdGlvbi5jbWFrZQpA
QCAtMTQsNSArMTQsNCBAQCBzZXQodGVzdF9tYWluX1NPVVJDRVMKIAogbGlzdChBUFBFTkQgVGVz
dFdURl9TT1VSQ0VTCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vZ2VuZXJpYy9VdGlsaXRpZXNH
ZW5lcmljLmNwcAotICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9SdW5Mb29wLmNw
cAogKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVdQRS5jbWFrZSBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1XUEUuY21ha2UKaW5kZXggYjY4Nzc1OThkODc3
ZGU2YzhkYTg2YjRlYjU3Y2M4NmZmMGEyZjdlZi4uNDI2N2RhMjBkMDcwYzQ3YmM4MWU0NmVjMmI3
ZjJkMTNjMDc5OWQ3NiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVdQ
RS5jbWFrZQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtV1BFLmNtYWtlCkBAIC02
MCw3ICs2MCw2IEBAIGFkZF9leGVjdXRhYmxlKFRlc3RXZWJDb3JlCiAgICAgJHtURVNUV0VCS0lU
QVBJX0RJUn0vZ2xpYi9VdGlsaXRpZXNHTGliLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9
L1Rlc3RzQ29udHJvbGxlci5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJD
b3JlL0ZpbGVNb25pdG9yLmNwcAotICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNv
cmUvRmlsZVN5c3RlbS5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3Jl
L2dzdHJlYW1lci9Hc3RNYXBwZWRCdWZmZXIuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0v
VGVzdHMvV2ViQ29yZS9nc3RyZWFtZXIvR1N0cmVhbWVyVGVzdC5jcHAKICAgICAke1RFU1RXRUJL
SVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL0hUTUxQYXJzZXJJZGlvbXMuY3BwCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDU0N2QxZWI3NDhkOThkMWRmMWYwNDdlMTlhODU3NmZhNTM4MDkzNmYu
LjYzMDY4ZTNhODE2MzRlMGUzYTczYjYzYzAxMTEzMWMwNThhMDI2MGUgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC00MjcsNyArNDI3LDYgQEAKIAkJN0M4M0UwNEMxRDBBNjQxODAwRkVCQ0Yz
IC8qIFdlYkNvcmVOU1VSTFNlc3Npb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRDg5RDAzODFDNEVEQjJBMDAwNDBBMDQgLyogV2ViQ29yZU5TVVJM
U2Vzc2lvbi5tbSAqLzsgfTsKIAkJN0M4M0UwNEQxRDBBNjQxODAwRkVCQ0YzIC8qIERGQUNvbWJp
bmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2
MEJBNTc4MUIxRDJFN0IwMDRGQTA3QyAvKiBERkFDb21iaW5lci5jcHAgKi87IH07CiAJCTdDODNF
MDRFMUQwQTY0MTgwMEZFQkNGMyAvKiBERkFNaW5pbWl6ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjZGNkUxRUYxQURDNzQ5QjAwREU2OTZCIC8q
IERGQU1pbmltaXplci5jcHAgKi87IH07Ci0JCTdDODNFMDRGMUQwQTY0MTgwMEZFQkNGMyAvKiBG
aWxlU3lzdGVtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxOTczQjVBMUFGMjI4NkEwMDZDN0IzNiAvKiBGaWxlU3lzdGVtLmNwcCAqLzsgfTsKIAkJ
N0M4M0UwNTAxRDBBNjQxODAwRkVCQ0YzIC8qIEhUTUxQYXJzZXJJZGlvbXMuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNCODhBMzMxQzgwMDU2RDAw
QkIyNDE4IC8qIEhUTUxQYXJzZXJJZGlvbXMuY3BwICovOyB9OwogCQk3QzgzRTA1MTFEMEE2NDE4
MDBGRUJDRjMgLyogUGFyc2VkQ29udGVudFJhbmdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMjI1QzA3MUM0NUE2OTIwMDE0MDc2MSAvKiBQYXJz
ZWRDb250ZW50UmFuZ2UuY3BwICovOyB9OwogCQk3QzgzRTA1MjFEMEE2NDE4MDBGRUJDRjMgLyog
U2hhcmVkQnVmZmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxOTczQjVDMUFGMjI4NzUwMDZDN0IzNiAvKiBTaGFyZWRCdWZmZXIuY3BwICovOyB9
OwpAQCAtNjg5LDYgKzY4OCw3IEBACiAJCUExQzRGQjczMUJBQ0QxQ0EwMDM3NDJEMCAvKiBwYWdl
cy5wYWdlcyBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBMUM0RkI3MjFCQUNEMUI3MDAzNzQyRDAgLyogcGFnZXMucGFnZXMgKi87IH07CiAJCUEx
REY3NDMyMUM0MUI2NTgwMEEyRjREMCAvKiBBbHdheXNSZXZhbGlkYXRlZFVSTFNjaGVtZXMubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMURGNzQzMDFD
NDFCNjU4MDBBMkY0RDAgLyogQWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzLm1tICovOyB9Owog
CQlBMUVDMTE4ODFGNDI1NDEyMDBEMDE0NkUgLyogUHJldmlld0xvYWRlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUVDMTE4NzFGNDI1NDEyMDBE
MDE0NkUgLyogUHJldmlld0xvYWRlci5jcHAgKi87IH07CisJCUEzMTA4MjcyMjFGMjk2RkYwMEMy
OEI5NyAvKiBGaWxlU3lzdGVtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEEzMTA4MjcxMjFGMjk2RUMwMEMyOEI5NyAvKiBGaWxlU3lzdGVtLmNwcCAq
LzsgfTsKIAkJQTU3QTM0RjIxNkFGNkIyQjAwQzI1MDFGIC8qIFBhZ2VWaXNpYmlsaXR5U3RhdGVX
aXRoV2luZG93Q2hhbmdlcy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE1N0EzNEYxMTZBRjY5RTIwMEMyNTAxRiAvKiBQYWdlVmlzaWJp
bGl0eVN0YXRlV2l0aFdpbmRvd0NoYW5nZXMuaHRtbCAqLzsgfTsKIAkJQTU3RDU0RjMxRjMzOEMz
NjAwQTk3QUE3IC8qIE5ldmVyRGVzdHJveWVkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1N0Q1NEYyMUYzMzhDMzYwMEE5N0FBNyAvKiBOZXZlckRl
c3Ryb3llZC5jcHAgKi87IH07CiAJCUE1N0Q1NEY2MUYzMzk1RDAwMEE5N0FBNyAvKiBMb2dnZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3RDU0
RjQxRjMzOTVEMDAwQTk3QUE3IC8qIExvZ2dlci5jcHAgKi87IH07CkBAIC0xNTIxLDcgKzE1MjEs
NiBAQAogCQk0MTM1RkI4MzIwMTFGQUEzMDAzMzIxMzkgLyogSW5qZWN0SW50ZXJuYWxzX0J1bmRs
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBJbmplY3RJbnRlcm5h
bHNfQnVuZGxlLmNwcDsgcGF0aCA9IFRlc3RzL0luamVjdEludGVybmFsc19CdW5kbGUuY3BwOyBz
b3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTQxMzVGQjg2MjAxMUZBQkYwMDMzMjEzOSAv
KiBsaWJXZWJDb3JlVGVzdFN1cHBvcnQuZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIiOyBwYXRoID0gbGli
V2ViQ29yZVRlc3RTdXBwb3J0LmR5bGliOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElS
OyB9OwogCQk0MTg4MkYwMjIxMDEwQTcwMDAyRkYyODggLyogUHJvY2Vzc1ByZVdhcm1pbmcubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQcm9jZXNzUHJlV2FybWlu
Zy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDE5NzNCNUExQUYyMjg2QTAwNkM3
QjM2IC8qIEZpbGVTeXN0ZW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gRmlsZVN5c3RlbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxOTczQjVD
MUFGMjI4NzUwMDZDN0IzNiAvKiBTaGFyZWRCdWZmZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVkQnVmZmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDQyQkJGNjgxQzkxQ0FEOTAwMTcwODdGIC8qIFJlZkxvZ2dlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWZMb2dnZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0NDMzQTM5NTIwODA0NDEzMDA5MUVENTcgLyogU3luY2hyb25v
dXNUaW1lb3V0VGVzdHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBTeW5jaHJvbm91c1RpbWVvdXRUZXN0cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTE5MTgsNiArMTkxNyw3IEBACiAJCUExREY3NDMwMUM0MUI2NTgwMEEyRjREMCAvKiBBbHdh
eXNSZXZhbGlkYXRlZFVSTFNjaGVtZXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBBbHdheXNSZXZhbGlkYXRlZFVSTFNjaGVtZXMubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUExRUMxMTg3MUY0MjU0MTIwMEQwMTQ2RSAvKiBQcmV2aWV3TG9hZGVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByZXZpZXdMb2FkZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBMUZERkQyRTE5QzI4OEJCMDA1MTQ4QTQgLyogV0tJbWFnZUNyZWF0
ZUNHSW1hZ2VDcmFzaC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
S0ltYWdlQ3JlYXRlQ0dJbWFnZUNyYXNoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQTMxMDgyNzEyMUYyOTZFQzAwQzI4Qjk3IC8qIEZpbGVTeXN0ZW0uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmlsZVN5c3RlbS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUE1N0EzNEVGMTZBRjY3NzIwMEMyNTAxRiAvKiBQYWdlVmlzaWJpbGl0
eVN0YXRlV2l0aFdpbmRvd0NoYW5nZXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBQYWdlVmlzaWJpbGl0eVN0YXRlV2l0aFdpbmRvd0NoYW5nZXMubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1N0EzNEYxMTZBRjY5RTIwMEMyNTAxRiAvKiBQYWdl
VmlzaWJpbGl0eVN0YXRlV2l0aFdpbmRvd0NoYW5nZXMuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRt
bDsgcGF0aCA9IFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlcy5odG1sOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTdENTRGMjFGMzM4QzM2MDBBOTdBQTcgLyogTmV2
ZXJEZXN0cm95ZWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV2ZXJEZXN0cm95ZWQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjY3OSw3ICsyNjc5LDYgQEAKIAkJCQk1Nzk2
NTFFNjIxNkJGRDUzMDA2RUJGRTUgLyogRmlkb0hpZE1lc3NhZ2VUZXN0LmNwcCAqLywKIAkJCQk1
NzJCNDAzNTIxNzZBMDI5MDAwQUQ0M0UgLyogRmlkb1Rlc3REYXRhLmggKi8sCiAJCQkJN0EzMkQ3
NDkxRjAyMTUxNTAwMTYyQzQ0IC8qIEZpbGVNb25pdG9yLmNwcCAqLywKLQkJCQk0MTk3M0I1QTFB
RjIyODZBMDA2QzdCMzYgLyogRmlsZVN5c3RlbS5jcHAgKi8sCiAJCQkJN0E5MDlBNzAxRDg3NzQ3
NTAwN0UxMEY4IC8qIEZsb2F0UG9pbnQuY3BwICovLAogCQkJCTdBOTA5QTcxMUQ4Nzc0NzUwMDdF
MTBGOCAvKiBGbG9hdFJlY3QuY3BwICovLAogCQkJCTdBOTA5QTcyMUQ4Nzc0NzUwMDdFMTBGOCAv
KiBGbG9hdFNpemUuY3BwICovLApAQCAtMzE5MCw2ICszMTg5LDcgQEAKIAkJCQlFNEE3NTdEMzE3
OEFFQTVCMDBCNUQ3QTQgLyogRGVxdWUuY3BwICovLAogCQkJCTFBRjdCMjFEMUQ2Q0QxMkUwMDhD
MTI2QyAvKiBFbnVtVHJhaXRzLmNwcCAqLywKIAkJCQlBRDdDNDM0QzFERDJBNTQ3MDAyNjg4OEIg
LyogRXhwZWN0ZWQuY3BwICovLAorCQkJCUEzMTA4MjcxMjFGMjk2RUMwMEMyOEI5NyAvKiBGaWxl
U3lzdGVtLmNwcCAqLywKIAkJCQk5MzEwQ0QzNjFFRjcwOEZCMDA1MEZGRTAgLyogRnVuY3Rpb24u
Y3BwICovLAogCQkJCTgzREI3OTY3MUVGNjNCM0MwMEJGQTVFNSAvKiBGdW5jdGlvbi5jcHAgKi8s
CiAJCQkJN0EzOEQ3RTUxQzc1MkQ1RjAwNEYxNTdEIC8qIEhhc2hDb3VudGVkU2V0LmNwcCAqLywK
QEAgLTM3OTgsNiArMzc5OCw3IEBACiAJCQkJN0M4M0RFQUQxRDBBNTkwQzAwRkVCQ0YzIC8qIERl
cXVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBRjdCMjFGMUQ2Q0QxNEQwMDhDMTI2QyAvKiBF
bnVtVHJhaXRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUFEN0M0MzREMUREMkE1NEUwMDI2ODg4
QiAvKiBFeHBlY3RlZC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBMzEwODI3MjIxRjI5NkZGMDBD
MjhCOTcgLyogRmlsZVN5c3RlbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzEwQ0QzODFFRjcw
OEZCMDA1MEZGRTAgLyogRnVuY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNkJGRDI5NEMx
RDVFNkMxRDAwOEVDOTY4IC8qIEhhc2hDb3VudGVkU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTkzM0Q2MzFEMUZDQjc2MjAwMDMyRUNENiAvKiBIYXNoZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBA
IC00MDAxLDcgKzQwMDIsNiBAQAogCQkJCTdDQ0U3RUYxMUE0MTFBRTYwMDQ0N0M0QyAvKiBGYWls
ZWRMb2FkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTU3OTY1MUU3MjE2QkZERUQwMDZFQkZFNSAv
KiBGaWRvSGlkTWVzc2FnZVRlc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0EzMkQ3NEExRjAy
MTUxNTAwMTYyQzQ0IC8qIEZpbGVNb25pdG9yLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTdDODNF
MDRGMUQwQTY0MTgwMEZFQkNGMyAvKiBGaWxlU3lzdGVtLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTdDQ0U3RUYzMUE0MTFBRTYwMDQ0N0M0QyAvKiBGaW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTdDODNFMEJCMUQwQTY1MDAwMEZFQkNGMyAvKiBGaW5kSW5QYWdlLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJN0NDRTdFRjQxQTQxMUFFNjAwNDQ3QzRDIC8qIEZpbmRNYXRjaGVzLm1tIGluIFNvdXJj
ZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lz
dGVtLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmQ1N2RmNjE0Mjk3ZjBhMjM3MjM5NWM3NmJmNGM1OTE1YTU3NTc1ZmEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNw
cApAQCAtMCwwICsxLDE0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNp
bmNsdWRlICJUZXN0LmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVNZXRhZGF0YS5oPgorI2luY2x1ZGUg
PHd0Zi9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRl
IDx3dGYvU3RyaW5nRXh0cmFzLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworY29u
c3QgY2hhciogRmlsZVN5c3RlbVRlc3REYXRhID0gIlRoaXMgaXMgYSB0ZXN0IjsKKworLy8gRklY
TUU6IFJlZmFjdG9yIEZpbGVTeXN0ZW1UZXN0IGFuZCBTaGFyZWRCdWZmZXJUZXN0IGFzIGEgc2lu
Z2xlIGNsYXNzLgorY2xhc3MgRmlsZVN5c3RlbVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7
CitwdWJsaWM6CisgICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBXVEY6
OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CisKKyAgICAgICAgLy8gY3JlYXRlIHRlbXAgZmlsZQor
ICAgICAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlOworICAgICAgICBt
X3RlbXBGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wVGVzdEZp
bGUiLCBoYW5kbGUpOworICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShoYW5kbGUsIEZp
bGVTeXN0ZW1UZXN0RGF0YSwgc3RybGVuKEZpbGVTeXN0ZW1UZXN0RGF0YSkpOworICAgICAgICBG
aWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKKworICAgICAgICBtX3RlbXBGaWxlU3ltbGlu
a1BhdGggPSBtX3RlbXBGaWxlUGF0aCArICItc3ltbGluayI7CisgICAgICAgIEZpbGVTeXN0ZW06
OmNyZWF0ZVN5bWJvbGljTGluayhtX3RlbXBGaWxlUGF0aCwgbV90ZW1wRmlsZVN5bWxpbmtQYXRo
KTsKKworICAgICAgICBtX3RlbXBFbXB0eUZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBv
cmFyeUZpbGUoInRlbXBFbXB0eVRlc3RGaWxlIiwgaGFuZGxlKTsKKyAgICAgICAgRmlsZVN5c3Rl
bTo6Y2xvc2VGaWxlKGhhbmRsZSk7CisKKyAgICAgICAgbV9zcGFjZUNvbnRhaW5pbmdGaWxlUGF0
aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wIEVtcHR5IFRlc3QgRmlsZSIs
IGhhbmRsZSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUpOworCisgICAg
ICAgIG1fYmFuZ0NvbnRhaW5pbmdGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlG
aWxlKCJ0ZW1wIUVtcHR5IVRlc3QhRmlsZSIsIGhhbmRsZSk7CisgICAgICAgIEZpbGVTeXN0ZW06
OmNsb3NlRmlsZShoYW5kbGUpOworCisgICAgICAgIG1fcXVvdGVDb250YWluaW5nRmlsZVBhdGgg
PSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcFwiRW1wdHlcIlRlc3RGaWxlIiwg
aGFuZGxlKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CisgICAgfQor
CisgICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCisgICAgeworICAgICAgICBGaWxlU3lzdGVt
OjpkZWxldGVGaWxlKG1fdGVtcEZpbGVQYXRoKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRl
RmlsZShtX3RlbXBGaWxlU3ltbGlua1BhdGgpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVG
aWxlKG1fdGVtcEVtcHR5RmlsZVBhdGgpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxl
KG1fc3BhY2VDb250YWluaW5nRmlsZVBhdGgpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVG
aWxlKG1fYmFuZ0NvbnRhaW5pbmdGaWxlUGF0aCk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0
ZUZpbGUobV9xdW90ZUNvbnRhaW5pbmdGaWxlUGF0aCk7CisgICAgfQorCisgICAgY29uc3QgU3Ry
aW5nJiB0ZW1wRmlsZVBhdGgoKSB7IHJldHVybiBtX3RlbXBGaWxlUGF0aDsgfQorICAgIGNvbnN0
IFN0cmluZyYgdGVtcEZpbGVTeW1saW5rUGF0aCgpIHsgcmV0dXJuIG1fdGVtcEZpbGVTeW1saW5r
UGF0aDsgfQorICAgIGNvbnN0IFN0cmluZyYgdGVtcEVtcHR5RmlsZVBhdGgoKSB7IHJldHVybiBt
X3RlbXBFbXB0eUZpbGVQYXRoOyB9CisgICAgY29uc3QgU3RyaW5nJiBzcGFjZUNvbnRhaW5pbmdG
aWxlUGF0aCgpIHsgcmV0dXJuIG1fc3BhY2VDb250YWluaW5nRmlsZVBhdGg7IH0KKyAgICBjb25z
dCBTdHJpbmcmIGJhbmdDb250YWluaW5nRmlsZVBhdGgoKSB7IHJldHVybiBtX2JhbmdDb250YWlu
aW5nRmlsZVBhdGg7IH0KKyAgICBjb25zdCBTdHJpbmcmIHF1b3RlQ29udGFpbmluZ0ZpbGVQYXRo
KCkgeyByZXR1cm4gbV9xdW90ZUNvbnRhaW5pbmdGaWxlUGF0aDsgfQorCitwcml2YXRlOgorICAg
IFN0cmluZyBtX3RlbXBGaWxlUGF0aDsKKyAgICBTdHJpbmcgbV90ZW1wRmlsZVN5bWxpbmtQYXRo
OworICAgIFN0cmluZyBtX3RlbXBFbXB0eUZpbGVQYXRoOworICAgIFN0cmluZyBtX3NwYWNlQ29u
dGFpbmluZ0ZpbGVQYXRoOworICAgIFN0cmluZyBtX2JhbmdDb250YWluaW5nRmlsZVBhdGg7Cisg
ICAgU3RyaW5nIG1fcXVvdGVDb250YWluaW5nRmlsZVBhdGg7Cit9OworCitURVNUX0YoRmlsZVN5
c3RlbVRlc3QsIE1hcHBpbmdNaXNzaW5nRmlsZSkKK3sKKyAgICBib29sIHN1Y2Nlc3M7CisgICAg
RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZURhdGEoU3RyaW5nKCJub3RfZXhp
c3RpbmdfZmlsZSIpLCBzdWNjZXNzKTsKKyAgICBFWFBFQ1RfRkFMU0Uoc3VjY2Vzcyk7CisgICAg
RVhQRUNUX1RSVUUoIW1hcHBlZEZpbGVEYXRhKTsKK30KKworVEVTVF9GKEZpbGVTeXN0ZW1UZXN0
LCBNYXBwaW5nRXhpc3RpbmdGaWxlKQoreworICAgIGJvb2wgc3VjY2VzczsKKyAgICBGaWxlU3lz
dGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YSh0ZW1wRmlsZVBhdGgoKSwgc3VjY2Vz
cyk7CisgICAgRVhQRUNUX1RSVUUoc3VjY2Vzcyk7CisgICAgRVhQRUNUX1RSVUUoISFtYXBwZWRG
aWxlRGF0YSk7CisgICAgRVhQRUNUX1RSVUUobWFwcGVkRmlsZURhdGEuc2l6ZSgpID09IHN0cmxl
bihGaWxlU3lzdGVtVGVzdERhdGEpKTsKKyAgICBFWFBFQ1RfVFJVRShzdHJuc3RyKEZpbGVTeXN0
ZW1UZXN0RGF0YSwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1hcHBlZEZpbGVEYXRhLmRhdGEo
KSksIG1hcHBlZEZpbGVEYXRhLnNpemUoKSkpOworfQorCitURVNUX0YoRmlsZVN5c3RlbVRlc3Qs
IE1hcHBpbmdFeGlzdGluZ0VtcHR5RmlsZSkKK3sKKyAgICBib29sIHN1Y2Nlc3M7CisgICAgRmls
ZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZURhdGEodGVtcEVtcHR5RmlsZVBhdGgo
KSwgc3VjY2Vzcyk7CisgICAgRVhQRUNUX1RSVUUoc3VjY2Vzcyk7CisgICAgRVhQRUNUX1RSVUUo
IW1hcHBlZEZpbGVEYXRhKTsKK30KKworVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBGaWxlc0hhdmVT
YW1lVm9sdW1lKQoreworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVzSGF2ZVNhbWVW
b2x1bWUodGVtcEZpbGVQYXRoKCksIHNwYWNlQ29udGFpbmluZ0ZpbGVQYXRoKCkpKTsKKyAgICBF
WFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpmaWxlc0hhdmVTYW1lVm9sdW1lKHNwYWNlQ29udGFpbmlu
Z0ZpbGVQYXRoKCksIGJhbmdDb250YWluaW5nRmlsZVBhdGgoKSkpOworICAgIEVYUEVDVF9UUlVF
KEZpbGVTeXN0ZW06OmZpbGVzSGF2ZVNhbWVWb2x1bWUoYmFuZ0NvbnRhaW5pbmdGaWxlUGF0aCgp
LCBxdW90ZUNvbnRhaW5pbmdGaWxlUGF0aCgpKSk7Cit9CisKK1RFU1RfRihGaWxlU3lzdGVtVGVz
dCwgR2V0RmlsZU1ldGFkYXRhU3ltbGluaykKK3sKKyAgICBhdXRvIHN5bWxpbmtNZXRhZGF0YSA9
IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0YSh0ZW1wRmlsZVN5bWxpbmtQYXRoKCkpOworICAgIEFT
U0VSVF9UUlVFKHN5bWxpbmtNZXRhZGF0YS5oYXNWYWx1ZSgpKTsKKyAgICBFWFBFQ1RfVFJVRShz
eW1saW5rTWV0YWRhdGEudmFsdWUoKS50eXBlID09IEZpbGVNZXRhZGF0YTo6VHlwZTo6U3ltYm9s
aWNMaW5rKTsKKyAgICBFWFBFQ1RfRkFMU0Uoc3RhdGljX2Nhc3Q8c2l6ZV90PihzeW1saW5rTWV0
YWRhdGEudmFsdWUoKS5sZW5ndGgpID09IHN0cmxlbihGaWxlU3lzdGVtVGVzdERhdGEpKTsKKwor
ICAgIGF1dG8gdGFyZ2V0TWV0YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGFGb2xsb3dp
bmdTeW1saW5rcyh0ZW1wRmlsZVN5bWxpbmtQYXRoKCkpOworICAgIEFTU0VSVF9UUlVFKHRhcmdl
dE1ldGFkYXRhLmhhc1ZhbHVlKCkpOworICAgIEVYUEVDVF9UUlVFKHRhcmdldE1ldGFkYXRhLnZh
bHVlKCkudHlwZSA9PSBGaWxlTWV0YWRhdGE6OlR5cGU6OkZpbGUpOworICAgIEVYUEVDVF9FUShz
dHJsZW4oRmlsZVN5c3RlbVRlc3REYXRhKSwgc3RhdGljX2Nhc3Q8c2l6ZV90Pih0YXJnZXRNZXRh
ZGF0YS52YWx1ZSgpLmxlbmd0aCkpOworfQorCitURVNUX0YoRmlsZVN5c3RlbVRlc3QsIFVuaWNv
ZGVEaXJlY3RvcnlOYW1lKQoreworICAgIFN0cmluZyBwYXRoID0gU3RyaW5nOjpmcm9tVVRGOCgi
L3Rlc3QvYVx1MDMwOGxvL3Rlc3QudHh0Iik7CisgICAgU3RyaW5nIGRpcmVjdG9yeU5hbWUgPSBG
aWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKHBhdGgpOworICAgIFN0cmluZyBleHBlY3RlZERpcmVj
dG9yeU5hbWUgPSBTdHJpbmc6OmZyb21VVEY4KCIvdGVzdC9hXHUwMzA4bG8iKTsKKyAgICBFWFBF
Q1RfVFJVRShleHBlY3RlZERpcmVjdG9yeU5hbWUgPT0gZGlyZWN0b3J5TmFtZSk7Cit9CisKK30K
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRv
ci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZU1vbml0b3IuY3Bw
CmluZGV4IDVmMWRjOGIyZTRkNTI0ZDM1MjY4MDRiZDZjZDljZTk4YTM3MTFmZTguLmUwMDJkZjFl
ZjA5NGY1YjNmMDBkMTZlOWM2YmU2ZDQ5ZDVlNmFmMjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRvci5jcHAKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNwcApAQCAtMjksNyArMjksNyBAQAog
I2luY2x1ZGUgIlRlc3QuaCIKICNpbmNsdWRlICJXVEZTdHJpbmdVdGlsaXRpZXMuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL0ZpbGVNb25pdG9yLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVt
Lmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVh
ZC5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3RmL1Njb3BlLmg+CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZVN5c3RlbS5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZVN5c3RlbS5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2NjI1MDI1MzA5NzI3ZWE2MDVjYjUyY2ZjOWVj
ZDRiMzNlNzc4NzUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVTeXN0ZW0uY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsMTUwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fu
b24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotCi0jaW5jbHVkZSAiVGVzdC5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZU1ldGFkYXRhLmg+
Ci0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+Ci0jaW5jbHVkZSA8d3RmL01haW5UaHJl
YWQuaD4KLSNpbmNsdWRlIDx3dGYvU3RyaW5nRXh0cmFzLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwotCi1uYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7Ci0KLWNvbnN0IGNoYXIqIEZpbGVT
eXN0ZW1UZXN0RGF0YSA9ICJUaGlzIGlzIGEgdGVzdCI7Ci0KLS8vIEZJWE1FOiBSZWZhY3RvciBG
aWxlU3lzdGVtVGVzdCBhbmQgU2hhcmVkQnVmZmVyVGVzdCBhcyBhIHNpbmdsZSBjbGFzcy4KLWNs
YXNzIEZpbGVTeXN0ZW1UZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotcHVibGljOgotICAg
IHZvaWQgU2V0VXAoKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgV1RGOjppbml0aWFsaXplTWFp
blRocmVhZCgpOwotICAgICAgICAKLSAgICAgICAgLy8gY3JlYXRlIHRlbXAgZmlsZQotICAgICAg
ICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlOwotICAgICAgICBtX3RlbXBG
aWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wVGVzdEZpbGUiLCBo
YW5kbGUpOwotICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShoYW5kbGUsIEZpbGVTeXN0
ZW1UZXN0RGF0YSwgc3RybGVuKEZpbGVTeXN0ZW1UZXN0RGF0YSkpOwotICAgICAgICBGaWxlU3lz
dGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKLQotICAgICAgICBtX3RlbXBGaWxlU3ltbGlua1BhdGgg
PSBtX3RlbXBGaWxlUGF0aCArICItc3ltbGluayI7Ci0gICAgICAgIEZpbGVTeXN0ZW06OmNyZWF0
ZVN5bWJvbGljTGluayhtX3RlbXBGaWxlUGF0aCwgbV90ZW1wRmlsZVN5bWxpbmtQYXRoKTsKLQot
ICAgICAgICBtX3RlbXBFbXB0eUZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZp
bGUoInRlbXBFbXB0eVRlc3RGaWxlIiwgaGFuZGxlKTsKLSAgICAgICAgRmlsZVN5c3RlbTo6Y2xv
c2VGaWxlKGhhbmRsZSk7Ci0KLSAgICAgICAgbV9zcGFjZUNvbnRhaW5pbmdGaWxlUGF0aCA9IEZp
bGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wIEVtcHR5IFRlc3QgRmlsZSIsIGhhbmRs
ZSk7Ci0gICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUpOwotCi0gICAgICAgIG1f
YmFuZ0NvbnRhaW5pbmdGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0
ZW1wIUVtcHR5IVRlc3QhRmlsZSIsIGhhbmRsZSk7Ci0gICAgICAgIEZpbGVTeXN0ZW06OmNsb3Nl
RmlsZShoYW5kbGUpOwotCi0gICAgICAgIG1fcXVvdGVDb250YWluaW5nRmlsZVBhdGggPSBGaWxl
U3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcFwiRW1wdHlcIlRlc3RGaWxlIiwgaGFuZGxl
KTsKLSAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7Ci0gICAgfQotCi0gICAg
dm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBGaWxlU3lzdGVtOjpkZWxl
dGVGaWxlKG1fdGVtcEZpbGVQYXRoKTsKLSAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZSht
X3RlbXBGaWxlU3ltbGlua1BhdGgpOwotICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1f
dGVtcEVtcHR5RmlsZVBhdGgpOwotICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fc3Bh
Y2VDb250YWluaW5nRmlsZVBhdGgpOwotICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1f
YmFuZ0NvbnRhaW5pbmdGaWxlUGF0aCk7Ci0gICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUo
bV9xdW90ZUNvbnRhaW5pbmdGaWxlUGF0aCk7Ci0gICAgfQotCi0gICAgY29uc3QgU3RyaW5nJiB0
ZW1wRmlsZVBhdGgoKSB7IHJldHVybiBtX3RlbXBGaWxlUGF0aDsgfQotICAgIGNvbnN0IFN0cmlu
ZyYgdGVtcEZpbGVTeW1saW5rUGF0aCgpIHsgcmV0dXJuIG1fdGVtcEZpbGVTeW1saW5rUGF0aDsg
fQotICAgIGNvbnN0IFN0cmluZyYgdGVtcEVtcHR5RmlsZVBhdGgoKSB7IHJldHVybiBtX3RlbXBF
bXB0eUZpbGVQYXRoOyB9Ci0gICAgY29uc3QgU3RyaW5nJiBzcGFjZUNvbnRhaW5pbmdGaWxlUGF0
aCgpIHsgcmV0dXJuIG1fc3BhY2VDb250YWluaW5nRmlsZVBhdGg7IH0KLSAgICBjb25zdCBTdHJp
bmcmIGJhbmdDb250YWluaW5nRmlsZVBhdGgoKSB7IHJldHVybiBtX2JhbmdDb250YWluaW5nRmls
ZVBhdGg7IH0KLSAgICBjb25zdCBTdHJpbmcmIHF1b3RlQ29udGFpbmluZ0ZpbGVQYXRoKCkgeyBy
ZXR1cm4gbV9xdW90ZUNvbnRhaW5pbmdGaWxlUGF0aDsgfQotCi1wcml2YXRlOgotICAgIFN0cmlu
ZyBtX3RlbXBGaWxlUGF0aDsKLSAgICBTdHJpbmcgbV90ZW1wRmlsZVN5bWxpbmtQYXRoOwotICAg
IFN0cmluZyBtX3RlbXBFbXB0eUZpbGVQYXRoOwotICAgIFN0cmluZyBtX3NwYWNlQ29udGFpbmlu
Z0ZpbGVQYXRoOwotICAgIFN0cmluZyBtX2JhbmdDb250YWluaW5nRmlsZVBhdGg7Ci0gICAgU3Ry
aW5nIG1fcXVvdGVDb250YWluaW5nRmlsZVBhdGg7Ci19OwotCi1URVNUX0YoRmlsZVN5c3RlbVRl
c3QsIE1hcHBpbmdNaXNzaW5nRmlsZSkKLXsKLSAgICBib29sIHN1Y2Nlc3M7Ci0gICAgRmlsZVN5
c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZURhdGEoU3RyaW5nKCJub3RfZXhpc3Rpbmdf
ZmlsZSIpLCBzdWNjZXNzKTsKLSAgICBFWFBFQ1RfRkFMU0Uoc3VjY2Vzcyk7Ci0gICAgRVhQRUNU
X1RSVUUoIW1hcHBlZEZpbGVEYXRhKTsKLX0KLQotVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBNYXBw
aW5nRXhpc3RpbmdGaWxlKQotewotICAgIGJvb2wgc3VjY2VzczsKLSAgICBGaWxlU3lzdGVtOjpN
YXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YSh0ZW1wRmlsZVBhdGgoKSwgc3VjY2Vzcyk7Ci0g
ICAgRVhQRUNUX1RSVUUoc3VjY2Vzcyk7Ci0gICAgRVhQRUNUX1RSVUUoISFtYXBwZWRGaWxlRGF0
YSk7Ci0gICAgRVhQRUNUX1RSVUUobWFwcGVkRmlsZURhdGEuc2l6ZSgpID09IHN0cmxlbihGaWxl
U3lzdGVtVGVzdERhdGEpKTsKLSAgICBFWFBFQ1RfVFJVRShzdHJuc3RyKEZpbGVTeXN0ZW1UZXN0
RGF0YSwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1hcHBlZEZpbGVEYXRhLmRhdGEoKSksIG1h
cHBlZEZpbGVEYXRhLnNpemUoKSkpOwotfQotCi1URVNUX0YoRmlsZVN5c3RlbVRlc3QsIE1hcHBp
bmdFeGlzdGluZ0VtcHR5RmlsZSkKLXsKLSAgICBib29sIHN1Y2Nlc3M7Ci0gICAgRmlsZVN5c3Rl
bTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZURhdGEodGVtcEVtcHR5RmlsZVBhdGgoKSwgc3Vj
Y2Vzcyk7Ci0gICAgRVhQRUNUX1RSVUUoc3VjY2Vzcyk7Ci0gICAgRVhQRUNUX1RSVUUoIW1hcHBl
ZEZpbGVEYXRhKTsKLX0KLQotVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBGaWxlc0hhdmVTYW1lVm9s
dW1lKQotewotICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVzSGF2ZVNhbWVWb2x1bWUo
dGVtcEZpbGVQYXRoKCksIHNwYWNlQ29udGFpbmluZ0ZpbGVQYXRoKCkpKTsKLSAgICBFWFBFQ1Rf
VFJVRShGaWxlU3lzdGVtOjpmaWxlc0hhdmVTYW1lVm9sdW1lKHNwYWNlQ29udGFpbmluZ0ZpbGVQ
YXRoKCksIGJhbmdDb250YWluaW5nRmlsZVBhdGgoKSkpOwotICAgIEVYUEVDVF9UUlVFKEZpbGVT
eXN0ZW06OmZpbGVzSGF2ZVNhbWVWb2x1bWUoYmFuZ0NvbnRhaW5pbmdGaWxlUGF0aCgpLCBxdW90
ZUNvbnRhaW5pbmdGaWxlUGF0aCgpKSk7Ci19Ci0KLVRFU1RfRihGaWxlU3lzdGVtVGVzdCwgR2V0
RmlsZU1ldGFkYXRhU3ltbGluaykKLXsKLSAgICBhdXRvIHN5bWxpbmtNZXRhZGF0YSA9IEZpbGVT
eXN0ZW06OmZpbGVNZXRhZGF0YSh0ZW1wRmlsZVN5bWxpbmtQYXRoKCkpOwotICAgIEFTU0VSVF9U
UlVFKHN5bWxpbmtNZXRhZGF0YS5oYXNWYWx1ZSgpKTsKLSAgICBFWFBFQ1RfVFJVRShzeW1saW5r
TWV0YWRhdGEudmFsdWUoKS50eXBlID09IEZpbGVNZXRhZGF0YTo6VHlwZTo6U3ltYm9saWNMaW5r
KTsKLSAgICBFWFBFQ1RfRkFMU0Uoc3RhdGljX2Nhc3Q8c2l6ZV90PihzeW1saW5rTWV0YWRhdGEu
dmFsdWUoKS5sZW5ndGgpID09IHN0cmxlbihGaWxlU3lzdGVtVGVzdERhdGEpKTsKLQotICAgIGF1
dG8gdGFyZ2V0TWV0YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1s
aW5rcyh0ZW1wRmlsZVN5bWxpbmtQYXRoKCkpOwotICAgIEFTU0VSVF9UUlVFKHRhcmdldE1ldGFk
YXRhLmhhc1ZhbHVlKCkpOwotICAgIEVYUEVDVF9UUlVFKHRhcmdldE1ldGFkYXRhLnZhbHVlKCku
dHlwZSA9PSBGaWxlTWV0YWRhdGE6OlR5cGU6OkZpbGUpOwotICAgIEVYUEVDVF9FUShzdHJsZW4o
RmlsZVN5c3RlbVRlc3REYXRhKSwgc3RhdGljX2Nhc3Q8c2l6ZV90Pih0YXJnZXRNZXRhZGF0YS52
YWx1ZSgpLmxlbmd0aCkpOwotfQotCi1URVNUX0YoRmlsZVN5c3RlbVRlc3QsIFVuaWNvZGVEaXJl
Y3RvcnlOYW1lKQotewotICAgIFN0cmluZyBwYXRoID0gU3RyaW5nOjpmcm9tVVRGOCgiL3Rlc3Qv
YVx1MDMwOGxvL3Rlc3QudHh0Iik7Ci0gICAgU3RyaW5nIGRpcmVjdG9yeU5hbWUgPSBGaWxlU3lz
dGVtOjpkaXJlY3RvcnlOYW1lKHBhdGgpOwotICAgIFN0cmluZyBleHBlY3RlZERpcmVjdG9yeU5h
bWUgPSBTdHJpbmc6OmZyb21VVEY4KCIvdGVzdC9hXHUwMzA4bG8iKTsKLSAgICBFWFBFQ1RfVFJV
RShleHBlY3RlZERpcmVjdG9yeU5hbWUgPT0gZGlyZWN0b3J5TmFtZSk7Ci19Ci0KLX0KZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TZWN1cml0eU9yaWdpbi5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2VjdXJpdHlPcmlnaW4uY3Bw
CmluZGV4IGRhNWY0ZmY1ODk4YTlmMDljOGI4Mzk1YTU1ZGU3MzhmMTY4YzkwOWYuLmE0MWFiNGJj
YTM3MWQ0NWRlOGNiNDU4Njg1YmM5NzRlMzBmNDA2ZjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TZWN1cml0eU9yaWdpbi5jcHAKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmNwcApAQCAtMjYsOCArMjYs
OCBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV1RGU3RyaW5nVXRpbGl0aWVz
LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
ZWN1cml0eU9yaWdpbi5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8
d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmNwcCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmNwcAppbmRl
eCA4ZmUzNTY3YzFlMTEzNjkxZDg1YjdjNTVhMWY5NjY1OWRlOWQxZjI0Li45YjhiMTNhNzVkNTJm
Zjk1MWVhZDE4MTg1ZDU2YzM3OTFiMmQ3YmVkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuY3BwCkBAIC0yNiwxMSArMjYs
OSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlclRlc3QuaCIK
IAotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lz
dGVtLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIAotdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7Ci0KIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogdm9pZCBTaGFyZWRCdWZmZXJU
ZXN0OjpTZXRVcCgpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvY29jb2EvRGF0YWJhc2VUcmFja2VyVGVzdC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9jb2NvYS9EYXRhYmFzZVRyYWNrZXJUZXN0Lm1tCmluZGV4IDZhM2M3MDI4MGE0
ZWRlMDA5MTAyZWU5OTc2YjM2N2MyNmFiN2ZlZTcuLjIyMTcxNTZmNmU1NjkxNWE3NWQ0NDg4NGVh
ZDUxNzE5YTdjNTI5MTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9jb2NvYS9EYXRhYmFzZVRyYWNrZXJUZXN0Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9EYXRhYmFzZVRyYWNrZXJUZXN0Lm1tCkBAIC0yNiwxMSAr
MjYsMTEgQEAKICNpbmNsdWRlICJjb25maWcuaCIKIAogI2luY2x1ZGUgPFdlYkNvcmUvRGF0YWJh
c2VUcmFja2VyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9PcmlnaW5Mb2NrLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVEYXRhYmFzZS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlU3RhdGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL2N1cmwvQ29va2llcy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvY3VybC9Db29raWVzLmNwcAppbmRleCAxYjhkN2ZjM2NkZTUwMjk5ZTMwYWQ2
YzZkOGNhMTYyN2YyMzkwYzFmLi5iNDBiMGQ1YTBhNWU1ZmI1ZjQ5MTlhM2RhMmMyZmVkNmZjYmMx
YzRlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY3VybC9D
b29raWVzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY3VybC9D
b29raWVzLmNwcApAQCAtMjksOCArMjksOCBAQAogCiAjaW5jbHVkZSA8V2ViQ29yZS9Db29raWVK
YXJEQi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llVXRpbC5oPgotI2luY2x1ZGUgPFdlYkNv
cmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5
c3RlbS5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbSBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0KaW5kZXggNjBjYzkzYjM0MGRk
NjgwOTQxYzQxYTJhNWFhMGJhOTIzYjVhZWM2NC4uNjgxYjAyY2E5Yzg3ZGFlYzM3MjYyMjQ2MTdk
MWM1OTIwODhkN2E2YyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9Eb3dubG9hZC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0Rvd25sb2FkLm1tCkBAIC0zMyw3ICszMyw2IEBACiAjaW1wb3J0ICJUZXN0LmgiCiAj
aW1wb3J0ICJUZXN0UHJvdG9jb2wuaCIKICNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKLSNpbXBv
cnQgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8V2ViS2l0L19XS0Rvd25sb2FkLmg+
CiAjaW1wb3J0IDxXZWJLaXQvX1dLRG93bmxvYWREZWxlZ2F0ZS5oPgogI2ltcG9ydCA8V2ViS2l0
L1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5oPgpAQCAtNDEsNiArNDAsNyBAQAogI2ltcG9y
dCA8V2ViS2l0L1dLVUlEZWxlZ2F0ZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZp
ZXcuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdDb25maWd1cmF0aW9uLmg+CisjaW1wb3J0
IDx3dGYvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KICNpbXBvcnQg
PHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtOTQs
MTAgKzk0LDEwIEBAIElHTk9SRV9XQVJOSU5HU19FTkQKICAgICBFWFBFQ1RfVFJVRShoYXNSZWNl
aXZlZFJlc3BvbnNlKTsKICAgICBFWFBFQ1RfRVEoX2Rvd25sb2FkLCBkb3dubG9hZCk7CiAKLSAg
ICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRsZTsKLSAg
ICBfZGVzdGluYXRpb25QYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZp
bGUoIlRlc3RXZWJLaXRBUEkiLCBmaWxlSGFuZGxlKTsKLSAgICBFWFBFQ1RfVFJVRShmaWxlSGFu
ZGxlICE9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpOwot
ICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsKKyAgICBGaWxl
U3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRsZTsKKyAgICBfZGVzdGluYXRpb25Q
YXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoIlRlc3RXZWJLaXRBUEkiLCBmaWxl
SGFuZGxlKTsKKyAgICBFWFBFQ1RfVFJVRShmaWxlSGFuZGxlICE9IEZpbGVTeXN0ZW06OmludmFs
aWRQbGF0Zm9ybUZpbGVIYW5kbGUpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlSGFu
ZGxlKTsKIAogICAgICphbGxvd092ZXJ3cml0ZSA9IFlFUzsKICAgICByZXR1cm4gX2Rlc3RpbmF0
aW9uUGF0aDsKQEAgLTEwOSw3ICsxMDksNyBAQCAtICh2b2lkKV9kb3dubG9hZERpZEZpbmlzaDoo
X1dLRG93bmxvYWQgKilkb3dubG9hZAogICAgIEVYUEVDVF9FUShleHBlY3RlZFVzZXJJbml0aWF0
ZWRTdGF0ZSwgZG93bmxvYWQud2FzVXNlckluaXRpYXRlZCk7CiAgICAgRVhQRUNUX1RSVUUoX2V4
cGVjdGVkQ29udGVudExlbmd0aCA9PSBOU1VSTFJlc3BvbnNlVW5rbm93bkxlbmd0aCB8fCBzdGF0
aWNfY2FzdDx1aW50NjRfdD4oX2V4cGVjdGVkQ29udGVudExlbmd0aCkgPT0gX3JlY2VpdmVkQ29u
dGVudExlbmd0aCk7CiAgICAgRVhQRUNUX1RSVUUoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5h
Z2VyXSBjb250ZW50c0VxdWFsQXRQYXRoOl9kZXN0aW5hdGlvblBhdGggYW5kUGF0aDpbc291cmNl
VVJMIHBhdGhdXSk7Ci0gICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShfZGVzdGlu
YXRpb25QYXRoKTsKKyAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKF9kZXN0aW5hdGlvblBhdGgp
OwogICAgIGlzRG9uZSA9IHRydWU7CiB9CiAKQEAgLTM5NywxMCArMzk3LDEwIEBAIElHTk9SRV9X
QVJOSU5HU19FTkQKICAgICBFWFBFQ1RfVFJVRShoYXNSZWNlaXZlZFJlc3BvbnNlKTsKICAgICBF
WFBFQ1RfRVEoX2Rvd25sb2FkLCBkb3dubG9hZCk7CiAKLSAgICBXZWJDb3JlOjpGaWxlU3lzdGVt
OjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRsZTsKLSAgICBfZGVzdGluYXRpb25QYXRoID0g
V2ViQ29yZTo6RmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoIlRlc3RXZWJLaXRBUEkiLCBm
aWxlSGFuZGxlKTsKLSAgICBFWFBFQ1RfVFJVRShmaWxlSGFuZGxlICE9IFdlYkNvcmU6OkZpbGVT
eXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpOwotICAgIFdlYkNvcmU6OkZpbGVTeXN0
ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVI
YW5kbGUgZmlsZUhhbmRsZTsKKyAgICBfZGVzdGluYXRpb25QYXRoID0gRmlsZVN5c3RlbTo6b3Bl
blRlbXBvcmFyeUZpbGUoIlRlc3RXZWJLaXRBUEkiLCBmaWxlSGFuZGxlKTsKKyAgICBFWFBFQ1Rf
VFJVRShmaWxlSGFuZGxlICE9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUp
OworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsKIAogICAgICphbGxvd092
ZXJ3cml0ZSA9IFlFUzsKICAgICByZXR1cm4gX2Rlc3RpbmF0aW9uUGF0aDsKQEAgLTQxNCw3ICs0
MTQsNyBAQCAtICh2b2lkKV9kb3dubG9hZERpZEZpbmlzaDooX1dLRG93bmxvYWQgKilkb3dubG9h
ZAogICAgIE5TU3RyaW5nKiBleHBlY3RlZENvbnRlbnQgPSBAIntcInhcIjo0MixcInNcIjpcImhl
bGxvLCB3b3JsZFwifSI7CiAgICAgTlNEYXRhKiBleHBlY3RlZERhdGEgPSBbZXhwZWN0ZWRDb250
ZW50IGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKICAgICBFWFBFQ1Rf
VFJVRShbW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjb250ZW50c0F0UGF0aDpfZGVz
dGluYXRpb25QYXRoXSBpc0VxdWFsVG9EYXRhOmV4cGVjdGVkRGF0YV0pOwotICAgIFdlYkNvcmU6
OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoX2Rlc3RpbmF0aW9uUGF0aCk7CisgICAgRmlsZVN5c3Rl
bTo6ZGVsZXRlRmlsZShfZGVzdGluYXRpb25QYXRoKTsKICAgICBpc0RvbmUgPSB0cnVlOwogfQog
CkBAIC00NTcsMTAgKzQ1NywxMCBAQCBJR05PUkVfV0FSTklOR1NfQkVHSU4oImRlcHJlY2F0ZWQt
aW1wbGVtZW50YXRpb25zIikKIC0gKE5TU3RyaW5nICopX2Rvd25sb2FkOihfV0tEb3dubG9hZCAq
KWRvd25sb2FkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOihOU1N0cmlu
ZyAqKWZpbGVuYW1lIGFsbG93T3ZlcndyaXRlOihCT09MICopYWxsb3dPdmVyd3JpdGUKIElHTk9S
RV9XQVJOSU5HU19FTkQKIHsKLSAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVI
YW5kbGUgZmlsZUhhbmRsZTsKLSAgICBfZGVzdGluYXRpb25QYXRoID0gV2ViQ29yZTo6RmlsZVN5
c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoIlRlc3RXZWJLaXRBUEkiLCBmaWxlSGFuZGxlKTsKLSAg
ICBFWFBFQ1RfVFJVRShmaWxlSGFuZGxlICE9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmludmFsaWRQ
bGF0Zm9ybUZpbGVIYW5kbGUpOwotICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmNsb3NlRmlsZShm
aWxlSGFuZGxlKTsKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRs
ZTsKKyAgICBfZGVzdGluYXRpb25QYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUo
IlRlc3RXZWJLaXRBUEkiLCBmaWxlSGFuZGxlKTsKKyAgICBFWFBFQ1RfVFJVRShmaWxlSGFuZGxl
ICE9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpOworICAgIEZpbGVTeXN0
ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsKICAgICAqYWxsb3dPdmVyd3JpdGUgPSBZRVM7CiAg
ICAgcmV0dXJuIF9kZXN0aW5hdGlvblBhdGg7CiB9CkBAIC00ODcsNyArNDg3LDcgQEAgLSAodm9p
ZClfZG93bmxvYWREaWRGaW5pc2g6KF9XS0Rvd25sb2FkICopZG93bmxvYWQKICAgICBpZiAocmVk
aXJlY3RDaGFpbi5jb3VudCA+IDIpCiAgICAgICAgIEVYUEVDVF9TVFJFUSgiaHR0cDovL3Bhc3Mv
IiwgW3JlZGlyZWN0Q2hhaW5bMl0uYWJzb2x1dGVTdHJpbmcgVVRGOFN0cmluZ10pOwogCi0gICAg
V2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShfZGVzdGluYXRpb25QYXRoKTsKKyAgICBG
aWxlU3lzdGVtOjpkZWxldGVGaWxlKF9kZXN0aW5hdGlvblBhdGgpOwogICAgIGlzRG9uZSA9IHRy
dWU7CiB9CiAKQEAgLTYzMiwxNyArNjMyLDE3IEBAIC0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3du
bG9hZCAqKWRvd25sb2FkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lCiB7
CiAgICAgRVhQRUNUX1RSVUUoW2ZpbGVuYW1lIGhhc1N1ZmZpeDpAIi51c2R6Il0pOwogCi0gICAg
V2ViQ29yZTo6RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGVIYW5kbGU7Ci0gICAg
X2Rlc3RpbmF0aW9uUGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxl
KGZpbGVuYW1lLCBmaWxlSGFuZGxlKTsKLSAgICBFWFBFQ1RfVFJVRShmaWxlSGFuZGxlICE9IFdl
YkNvcmU6OkZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpOwotICAgIFdlYkNv
cmU6OkZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsKKyAgICBGaWxlU3lzdGVtOjpQ
bGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRsZTsKKyAgICBfZGVzdGluYXRpb25QYXRoID0gRmls
ZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoZmlsZW5hbWUsIGZpbGVIYW5kbGUpOworICAgIEVY
UEVDVF9UUlVFKGZpbGVIYW5kbGUgIT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhh
bmRsZSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOwogCiAgICAgY29t
cGxldGlvbkhhbmRsZXIoWUVTLCBfZGVzdGluYXRpb25QYXRoKTsKIH0KIAogLSAodm9pZClfZG93
bmxvYWREaWRGaW5pc2g6KF9XS0Rvd25sb2FkICopZG93bmxvYWQKIHsKLSAgICBXZWJDb3JlOjpG
aWxlU3lzdGVtOjpkZWxldGVGaWxlKF9kZXN0aW5hdGlvblBhdGgpOworICAgIEZpbGVTeXN0ZW06
OmRlbGV0ZUZpbGUoX2Rlc3RpbmF0aW9uUGF0aCk7CiAgICAgaXNEb25lID0gdHJ1ZTsKIH0KIApk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9h
ZFByb2dyZXNzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3du
bG9hZFByb2dyZXNzLm1tCmluZGV4IGY1NjBkZjNmNGM0MmUyNGU2NWIzYmY2Mjg3MWI1ZmFkYzE5
YTVmNjUuLjNlYjAzZjA0YTFkZDhhOGUxNzY3ODNkNWVmZmQ0ODM0N2E5MGRhMDAgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWRQcm9ncmVz
cy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2Fk
UHJvZ3Jlc3MubW0KQEAgLTI4LDcgKzI4LDYgQEAKICNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIK
ICNpbXBvcnQgIlV0aWxpdGllcy5oIgogI2ltcG9ydCA8Rm91bmRhdGlvbi9OU1Byb2dyZXNzLmg+
Ci0jaW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPFdlYktpdC9XS0Jyb3dz
aW5nQ29udGV4dENvbnRyb2xsZXIuaD4KICNpbXBvcnQgPFdlYktpdC9XS05hdmlnYXRpb25EZWxl
Z2F0ZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oPgpA
QCAtMzcsNiArMzYsNyBAQAogI2ltcG9ydCA8V2ViS2l0L19XS0Rvd25sb2FkRGVsZWdhdGUuaD4K
ICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNQcm9ncmVzc1NQSS5oPgogI2ltcG9ydCA8d3RmL0Js
b2NrUHRyLmg+CisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8d3RmL1JldGFp
blB0ci5oPgogI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+CiAKQEAgLTM4MCwxMCArMzgwLDEw
IEBAIC0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRlY2lkZURlc3Rp
bmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lCiB7CiAgICAgRVhQRUNUX0VRKGRvd25sb2FkLCBt
X2Rvd25sb2FkLmdldCgpKTsKIAotICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OlBsYXRmb3JtRmls
ZUhhbmRsZSBmaWxlSGFuZGxlOwotICAgIFJldGFpblB0cjxOU1N0cmluZz4gcGF0aCA9IChOU1N0
cmluZyAqKVdlYkNvcmU6OkZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJUZXN0V2ViS2l0
QVBJIiwgZmlsZUhhbmRsZSk7Ci0gICAgRVhQRUNUX1RSVUUoZmlsZUhhbmRsZSAhPSBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKTsKLSAgICBXZWJDb3JlOjpG
aWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CisgICAgRmlsZVN5c3RlbTo6UGxhdGZv
cm1GaWxlSGFuZGxlIGZpbGVIYW5kbGU7CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBwYXRoID0g
KE5TU3RyaW5nICopRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoIlRlc3RXZWJLaXRBUEki
LCBmaWxlSGFuZGxlKTsKKyAgICBFWFBFQ1RfVFJVRShmaWxlSGFuZGxlICE9IEZpbGVTeXN0ZW06
OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShm
aWxlSGFuZGxlKTsKIAogICAgIGNvbXBsZXRpb25IYW5kbGVyKFlFUywgcGF0aC5nZXQoKSk7CiB9
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL3dpbi9QbGF0Zm9ybVV0aWxpdGllc1dp
bi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL3dpbi9QbGF0Zm9ybVV0aWxpdGllc1dpbi5jcHAK
aW5kZXggMDU2YmZmNzc4Mjk1MjhiMTI5MGYxMmUzOWFiMjM4YjBmNjg2OGI4Ni4uMzVmMjJlMmE4
YjFiZmU1MGE0NzA1OTA5MTgzNDcyMzY3OWEzZDdmZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS93aW4vUGxhdGZvcm1VdGlsaXRpZXNXaW4uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvd2luL1BsYXRmb3JtVXRpbGl0aWVzV2luLmNwcApAQCAtMjcsNyArMjcsNyBAQAogI2lu
Y2x1ZGUgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAKICNpbmNsdWRlIDxTaGx3YXBpLmg+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4K
ICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5n
RXh0cmFzLmg+CiAKQEAgLTQwLDE5ICs0MCwxOSBAQCBzdGF0aWMgU3RyaW5nIG1vZHVsZURpcmVj
dG9yeSgpCiAgICAgd2NoYXJfdCBmaWxlbmFtZVtidWZmZXJMZW5ndGhdOwogICAgIGF1dG8gbGVu
ID0gR2V0TW9kdWxlRmlsZU5hbWUobnVsbHB0ciwgZmlsZW5hbWUsIGJ1ZmZlckxlbmd0aCk7CiAg
ICAgQVNTRVJUKGxlbiA+IDApOwotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkaXJl
Y3RvcnlOYW1lKHdjaGFyVG9TdHJpbmcoZmlsZW5hbWUsIGxlbikpOworICAgIHJldHVybiBGaWxl
U3lzdGVtOjpkaXJlY3RvcnlOYW1lKHdjaGFyVG9TdHJpbmcoZmlsZW5hbWUsIGxlbikpOwogfQog
CiBXS1N0cmluZ1JlZiBjcmVhdGVJbmplY3RlZEJ1bmRsZVBhdGgoKQogewotICAgIGF1dG8gcGF0
aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtb2R1bGVE
aXJlY3RvcnkoKSwgU3RyaW5nKEwiVGVzdFdlYktpdEFQSUluamVjdGVkQnVuZGxlLmRsbCIpKTsK
KyAgICBhdXRvIHBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobW9k
dWxlRGlyZWN0b3J5KCksIFN0cmluZyhMIlRlc3RXZWJLaXRBUElJbmplY3RlZEJ1bmRsZS5kbGwi
KSk7CiAgICAgcmV0dXJuIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHBhdGgudXRmOCgp
LmRhdGEoKSk7CiB9CiAKIFdLVVJMUmVmIGNyZWF0ZVVSTEZvclJlc291cmNlKGNvbnN0IGNoYXIq
IHJlc291cmNlLCBjb25zdCBjaGFyKiBleHRlbnNpb24pCiB7CiAgICAgU3RyaW5nIGZpbGVuYW1l
ID0gU3RyaW5nOjpmb3JtYXQoIi4uXFwuLlxcLi5cXFRvb2xzXFxUZXN0V2ViS2l0QVBJXFxUZXN0
c1xcV2ViS2l0XFwlcy4lcyIsIHJlc291cmNlLCBleHRlbnNpb24pOwotICAgIGF1dG8gdXJsID0g
VVJMOjpmaWxlVVJMV2l0aEZpbGVTeXN0ZW1QYXRoKFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChtb2R1bGVEaXJlY3RvcnkoKSwgZmlsZW5hbWUpKTsKKyAgICBh
dXRvIHVybCA9IFVSTDo6ZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0aChGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQobW9kdWxlRGlyZWN0b3J5KCksIGZpbGVuYW1lKSk7CiAgICAg
cmV0dXJuIFdLVVJMQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHVybC5zdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359945</attachid>
            <date>2019-01-23 14:40:33 -0800</date>
            <delta_ts>2019-01-23 19:12:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193602-20190123144032.patch</filename>
            <type>text/plain</type>
            <size>437041</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwMzM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGI1ZTE4MjY3NWJlMWE1MmUyMDFiZjE5
ZTc0YjM2YjI3MTQ1NTQwZTkuLjE4MzI3MTljZGFjZjY0N2FhYjdjYmM1YjUzY2E5ZTQxODBmYTQ5
ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTktMDEtMjMgIFJvc3MgS2lyc2xpbmcgIDxyb3Nz
LmtpcnNsaW5nQHNvbnkuY29tPgorCisgICAgICAgIE1vdmUgRmlsZVN5c3RlbSB0byBXVEYKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzYwMgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV1RGLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0OgorICAg
ICAgICAqIHd0Zi9GaWxlTWV0YWRhdGEuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0ZpbGVNZXRhZGF0YS5oLgorICAgICAgICAqIHd0Zi9GaWxlU3lzdGVtLmNwcDogUmVu
YW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwLgorICAgICAg
ICAqIHd0Zi9GaWxlU3lzdGVtLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9GaWxlU3lzdGVtLmguCisgICAgICAgICogd3RmL1BsYXRmb3JtR1RLLmNtYWtlOgorICAgICAg
ICAqIHd0Zi9QbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1QbGF5U3Rh
dGlvbi5jbWFrZToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1XUEUuY21ha2U6CisgICAgICAgICog
d3RmL1BsYXRmb3JtV2luLmNtYWtlOgorICAgICAgICAqIHd0Zi9jZi9GaWxlU3lzdGVtQ0YuY3Bw
OiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvRmlsZVN5c3RlbUNGLmNw
cC4KKyAgICAgICAgKiB3dGYvY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tOiBSZW5hbWVkIGZyb20g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tLgorICAgICAg
ICAqIHd0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwLgorICAgICAgICAqIHd0Zi9tYWMv
RmlsZVN5c3RlbU1hYy5tbTogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9GaWxlU3lzdGVtTWFjLm1tLgorICAgICAgICAqIHd0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVgu
Y3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3Rl
bVBPU0lYLmNwcC4KKyAgICAgICAgKiB3dGYvc3BpL21hYy9NZXRhZGF0YVNQSS5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvbWFjL01ldGFkYXRhU1BJLmguCisgICAg
ICAgICogd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2luLmNwcC4KKyAgICAgICAgKiB3dGYvd2luL1Bh
dGhXYWxrZXIuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bh
dGhXYWxrZXIuY3BwLgorICAgICAgICAqIHd0Zi93aW4vUGF0aFdhbGtlci5oOiBSZW5hbWVkIGZy
b20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BhdGhXYWxrZXIuaC4KKwogMjAxOS0wMS0y
MyAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFN3aXRjaCBy
ZW1haW5pbmcgQ29yZU1lZGlhIHNvZnQtbGlua2luZyBpbiBXZWJLaXQgb3ZlciB0byBDb3JlTWVk
aWFTb2Z0TGluay57Y3BwLGh9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTFhZjRjYmRlNmE2ZTE1OWZhODU0ZDQ1
NTY5MzU0NzFhNGUzZGM2Ni4uYzlmZGU4NDQwMDMyMmJmMTZjMmY4YjE1Y2QyZjc5YzIwODNmODE3
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgxIEBACisyMDE5LTAxLTIzICBSb3NzIEtpcnNsaW5n
ICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KKworICAgICAgICBNb3ZlIEZpbGVTeXN0ZW0gdG8g
V1RGCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM2
MDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNlc3Npb24uY3BwOgorICAgICAgICAqIE1vZHVs
ZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2VudHJp
ZXNhcGkvRmlsZVN5c3RlbUVudHJ5LmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZUlkZW50aWZpZXIuY3BwOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9TUUxpdGVJREJUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5jcHA6CisgICAgICAgICogTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
ZGF0YWJhc2UvT3JpZ2luTG9jay5jcHA6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9P
cmlnaW5Mb2NrLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9jb2NvYS9EYXRhYmFz
ZU1hbmFnZXJDb2NvYS5tbToKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAg
KiBQbGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtV2luLmNtYWtl
OgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0dDQ29udHJvbGxlci5jcHA6CisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlckl0
ZW0uY3BwOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1t
OgorICAgICAgICAqIGZpbGVhcGkvRmlsZS5jcHA6CisgICAgICAgICogZmlsZWFwaS9GaWxlQ29j
b2EubW06CisgICAgICAgICogaHRtbC9GaWxlSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKiBodG1s
L0ZpbGVMaXN0Q3JlYXRvci5jcHA6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVIb3N0LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgICogcGFn
ZS9TZWN1cml0eU9yaWdpbi5jcHA6CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEu
Y3BwOgorICAgICAgICAqIHBsYXRmb3JtL0ZpbGVIYW5kbGUuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9GaWxlU3RyZWFtLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlU3RyZWFtLmg6CisgICAg
ICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vU291cmNl
c0dMaWIudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL0ZpbGVNb25pdG9yQ29jb2EubW06
CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9GaWxlTW9uaXRvckdMaWIuY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24u
bW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vz
c2lvbkFWU3RyZWFtU2Vzc2lvbi5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLm1tOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9p
b3MvUXVpY2tMb29rLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQ
YXN0ZWJvYXJkLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9CbG9iUmVnaXN0cnlJbXBsLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JS
ZXNvdXJjZUhhbmRsZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNw
cDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29h
Lm1tOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRm9ybURhdGFTdHJlYW0uaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9tYWMvQmxvYkRhdGFGaWxlUmVmZXJlbmNlTWFjLm1tOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9oeXBo
ZW4vSHlwaGVuYXRpb25MaWJIeXBoZW4uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TZWFy
Y2hQb3B1cE1lbnVEQi5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcDoK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsuY3BwOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJUaGVtZVdpbi5jcHA6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHA6CisKIDIwMTktMDEtMjMgIFphbGFuIEJ1anRhcyAg
PHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtCRkNdIGNvbXB1dGVTdGF0aWNQb3Np
dGlvbiBzaG91bGQgaW5jbHVkZSBlc3RpbWF0ZWQgY29tcHV0YXRpb24gYXMgd2VsbC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
Q2hhbmdlTG9nCmluZGV4IDFkNjRkY2IwOTdiMGE2NzAzMjYzZTQ5MDRlYjQ4MTAyMGI5OTU3NDIu
Ljg1ZDEzMzYyNWVlYzdmY2FjNzExMWY3YjRlNDE1OGQyOTE0ZGUyYzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE5LTAxLTIzICBSb3NzIEtpcnNsaW5nICA8cm9zcy5r
aXJzbGluZ0Bzb255LmNvbT4KKworICAgICAgICBNb3ZlIEZpbGVTeXN0ZW0gdG8gV1RGCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM2MDIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBBTC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhbC9QbGF0Zm9ybU1hYy5jbWFrZToKKwog
MjAxOS0wMS0yMyAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAg
IFN3aXRjaCByZW1haW5pbmcgQ29yZU1lZGlhIHNvZnQtbGlua2luZyBpbiBXZWJLaXQgb3ZlciB0
byBDb3JlTWVkaWFTb2Z0TGluay57Y3BwLGh9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGIxZTllMzdhZjNiOGUxYTMw
OGYwZDdlMTM1YTI3Y2VmMmIyODBhNTUuLjI2MzU1ZTIyMjlhYTRiMjA0MTMwNThhNjk4YWVjY2Ji
NWVmNTcxODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODIgQEAKKzIwMTktMDEtMjMgIFJvc3MgS2ly
c2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgorCisgICAgICAgIE1vdmUgRmlsZVN5c3Rl
bSB0byBXVEYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5MzYwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lz
dGVudFN0b3JhZ2UuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFz
a0Jsb2IuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3Bw
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHA6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQmxvYlN0b3JhZ2UuY3BwOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuY3BwOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uY3BwOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uaDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxDb2Nv
YS5tbToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5u
ZWxTb3VwLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVT
dGF0aXN0aWNzLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0
YVRhc2tDb2NvYS5tbToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vz
c2lvbkNvY29hLm1tOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUHJvY2Vz
c01hYy5tbToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291
cC5jcHA6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy91bml4L1BsdWdpblByb2Nlc3NNYWluVW5p
eC5jcHA6CisgICAgICAgICogU2hhcmVkL1BlcnNpc3RlbmN5VXRpbHMuY3BwOgorICAgICAgICAq
IFNoYXJlZC9QbHVnaW5zL05ldHNjYXBlL3VuaXgvTmV0c2NhcGVQbHVnaW5Nb2R1bGVVbml4LmNw
cDoKKyAgICAgICAgKiBTaGFyZWQvUGx1Z2lucy91bml4L1BsdWdpblNlYXJjaFBhdGguY3BwOgor
ICAgICAgICAqIFNoYXJlZC9XZWJNZW1vcnlTYW1wbGVyLmg6CisgICAgICAgICogU2hhcmVkL2ds
aWIvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoR0xpYi5jcHA6CisgICAgICAgICogU2hhcmVkL2lvcy9D
aGlsZFByb2Nlc3NJT1MubW06CisgICAgICAgICogU2hhcmVkL21hYy9DaGlsZFByb2Nlc3NNYWMu
bW06CisgICAgICAgICogU2hhcmVkL21hYy9TYW5kYm94RXh0ZW5zaW9uTWFjLm1tOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHA6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHA6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdEZhdmljb25EYXRhYmFzZS5jcHA6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdEZpbGVDaG9vc2VyUmVxdWVzdC5jcHA6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuY3BwOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvd2luL0FQSVdlYnNpdGVEYXRhU3RvcmVXaW4uY3BwOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQubW06CisgICAgICAgICogVUlQcm9jZXNzL0Nv
Y29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW06CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dl
YlZpZXdJbXBsLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFn
ZS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9CdWJibGV3cmFwTGF1bmNoZXIuY3Bw
OgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9nbGliL1Byb2Nlc3NMYXVuY2hlckdMaWIu
Y3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL2d0ay9QbHVnaW5JbmZvQ2FjaGUuY3Bw
OgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5Qcm9jZXNzUHJveHlNYWMu
bW06CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5JbmZvU3RvcmVVbml4
LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpblByb2Nlc3NQcm94
eVVuaXguY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5
LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFz
ZS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJh
c2VUcmFja2VyLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vi
c2l0ZURhdGFTdG9yZUNvY29hLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNz
UHJveHlHTGliLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dlYkluc3BlY3RvclByb3h5
R3RrLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NQb29sR3RrLmNwcDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRmlsZVVwbG9hZFBhbmVsLm1tOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tOgorICAgICAgICAqIFVJUHJvY2Vz
cy93aW4vV2ViUHJvY2Vzc1Bvb2xXaW4uY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy93aW4vV2Vi
Vmlldy5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL3dwZS9XZWJQcm9jZXNzUG9vbFdQRS5jcHA6
CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRFeHRl
bnNpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL2ds
aWIvSW5qZWN0ZWRCdW5kbGVHbGliLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL01lZGlhQ2Fj
aGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViSW5zcGVjdG9yVUlHdGsuY3BwOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS93aW4vV2ViSW5zcGVjdG9yVUlXaW4uY3BwOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tOgorCiAyMDE5LTAxLTIzICBQ
aGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBD
cmFzaCB3aGVuIGJyb3dzaW5nIGluc3BlY3RvcjovLyB1cmkgd2l0aG91dCBwb3J0IHNldApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L0NoYW5nZUxvZwppbmRleCA4N2ZlOGMzYThjNjE2YTA0NzVkNGFmMzc0Njk0ZDQyNmVjNmZl
Zjg0Li5kZWNmMTc4NWQzZTNmMmViYjFhMjgzMTc0ODA1OTFhMzc3N2U5MWY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE5LTAxLTIzICBSb3NzIEtpcnNsaW5nICA8
cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KKworICAgICAgICBNb3ZlIEZpbGVTeXN0ZW0gdG8gV1RG
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM2MDIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFN0b3Jh
Z2UvU3RvcmFnZUFyZWFTeW5jLmNwcDoKKyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VTeW5jTWFu
YWdlci5jcHA6CisgICAgICAgICogU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHA6CisKIDIwMTkt
MDEtMjIgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBGaXggc29tZSBidWlsZHMgYWZ0ZXIgcjI0MDI5MgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nCmluZGV4IGMwN2Y0MGYyYmFiNWQ4OTFmZmYzODc2ODJhNTRhYTcxOTk1N2QyMjUuLjc2MmRm
OWY4ZGVkNDBlOTdlZWYwNWIzNzg5ZWNiYWM0NDRjMmNlNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxOS0wMS0yMyAgUm9zcyBLaXJzbGluZyAgPHJv
c3Mua2lyc2xpbmdAc29ueS5jb20+CisKKyAgICAgICAgTW92ZSBGaWxlU3lzdGVtIHRvIFdURgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzNjAyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNaXNjL1dl
Yk5TRmlsZU1hbmFnZXJFeHRyYXMubW06CisgICAgICAgICogU3RvcmFnZS9XZWJEYXRhYmFzZVBy
b3ZpZGVyLm1tOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKwogMjAxOS0wMS0yMiAg
QWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIE1v
dmUgTmV0d29ya1N0b3JhZ2VTZXNzaW9uIG93bmVyc2hpcCB0byBOZXR3b3JrUHJvY2VzcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDRhNmM5MDNiYWYwZWUyMWY2ZDg0MTUzNjI4Y2Zj
YWU1ODZlY2QxNWQuLmQ5NDZiYjVkMGU3YzhlMjgyODc3YTRmNDQ0NGRjYjg0NzVkMjFiMTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxOS0wMS0yMyAg
Um9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CisKKyAgICAgICAgTW92ZSBG
aWxlU3lzdGVtIHRvIFdURgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTkzNjAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBQbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKiBQbHVnaW5z
L1BsdWdpblBhY2thZ2UuaDoKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpblN0cmVhbS5oOgorICAg
ICAgICAqIFdlYkFwcGxpY2F0aW9uQ2FjaGUuY3BwOgorICAgICAgICAqIFdlYkRhdGFiYXNlTWFu
YWdlci5jcHA6CisgICAgICAgICogV2ViRG93bmxvYWRDdXJsLmNwcDoKKyAgICAgICAgKiBXZWJQ
cmVmZXJlbmNlcy5jcHA6CisgICAgICAgICogV2ViVmlldy5jcHA6CisKIDIwMTktMDEtMjIgIEFs
ZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBNb3Zl
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiBvd25lcnNoaXAgdG8gTmV0d29ya1Byb2Nlc3MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGEyMjM5NDkwZDExMmRjYTQ2
YTVhYTRiY2RlZDM1ZmRiY2FhZWM5ZTkuLmQwOGM3OWYyYjgzYThlMTNmZWRkYjljYzExOWYzMWEx
YTlmOTc2N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
ODksNiArODksMTEgQEAKIAkJOTM5MzRCRDUxOEExRjE2OTAwRDBENkExIC8qIFN0cmluZ1ZpZXdD
Ri5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5Mzkz
NEJENDE4QTFGMTY5MDBEMEQ2QTEgLyogU3RyaW5nVmlld0NGLmNwcCAqLzsgfTsKIAkJOTNGMTk5
M0UxOUQ3OTU4RDAwQzIzOTBCIC8qIFN0cmluZ1ZpZXcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGMTk5M0QxOUQ3OTU4RDAwQzIzOTBCIC8qIFN0
cmluZ1ZpZXcuY3BwICovOyB9OwogCQk5QkM3MEYwNTE3NkMzNzlEMDAxMDFERUMgLyogQXRvbWlj
U3RyaW5nVGFibGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOUJDNzBGMDQxNzZDMzc5RDAwMTAxREVDIC8qIEF0b21pY1N0cmluZ1RhYmxlLmNwcCAq
LzsgfTsKKwkJQTMzMUQ5NUIyMUYyNDk5MjAwOUYwMkFBIC8qIEZpbGVTeXN0ZW0uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTMzMUQ5NUEyMUYyNDk5
MjAwOUYwMkFBIC8qIEZpbGVTeXN0ZW0uY3BwICovOyB9OworCQlBMzMxRDk1RDIxRjI0OUU0MDA5
RjAyQUEgLyogRmlsZVN5c3RlbUNGLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEEzMzFEOTVDMjFGMjQ5RTQwMDlGMDJBQSAvKiBGaWxlU3lzdGVtQ0Yu
Y3BwICovOyB9OworCQlBMzMxRDk1RjIxRjI0OUY2MDA5RjAyQUEgLyogRmlsZVN5c3RlbUNvY29h
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTMzMUQ5
NUUyMUYyNDlGNjAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1Db2NvYS5tbSAqLzsgfTsKKwkJQTMzMUQ5
NjEyMUYyNEEwQTAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1NYWMubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMzMxRDk2MDIxRjI0QTBBMDA5RjAyQUEgLyog
RmlsZVN5c3RlbU1hYy5tbSAqLzsgfTsKKwkJQTMzMUQ5NjcyMUYyNEFCRDAwOUYwMkFBIC8qIEZp
bGVTeXN0ZW1QT1NJWC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMzMxRDk2NjIxRjI0QUJEMDA5RjAyQUEgLyogRmlsZVN5c3RlbVBPU0lYLmNwcCAq
LzsgfTsKIAkJQTNCNzI1RUM5ODc0NDZBRDkzRjFBNDQwIC8qIFJhbmRvbURldmljZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDOEY1OTdDQTJBNTc0
MTdGQkFCOTJGRDYgLyogUmFuZG9tRGV2aWNlLmNwcCAqLzsgfTsKIAkJQTNFNEREOTMxRjNBODAz
NDAwREVEMEI0IC8qIFRleHRTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTNFNEREOTExRjNBODAzNDAwREVEMEI0IC8qIFRleHRTdHJlYW0u
Y3BwICovOyB9OwogCQlBNUJBMTVGMzE4MjQzM0E5MDBBODJFNjkgLyogU3RyaW5nQ29jb2EubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUJBMTVGMjE4
MjQzM0E5MDBBODJFNjkgLyogU3RyaW5nQ29jb2EubW0gKi87IH07CkBAIC00MzAsOCArNDM1LDE2
IEBACiAJCTlDNjdDNTQyNTg5MzQ4RTI4NUI0OTY5OSAvKiBJbmRleGVkQ29udGFpbmVySXRlcmF0
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5kZXhlZENvbnRhaW5lckl0
ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzMEQ0MTJDMUYwREUwQkEw
MEI3MTk1NCAvKiBTb2Z0TGlua2luZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTb2Z0TGlua2luZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMzBENDEyRDFG
MERFMTNGMDBCNzE5NTQgLyogU29mdExpbmtpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU29mdExpbmtpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTMz
MUQ5NTgyMUYyNDk3ODAwOUYwMkFBIC8qIEZpbGVNZXRhZGF0YS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBGaWxlTWV0YWRhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQTMzMUQ5NTkyMUYyNDk5MjAwOUYwMkFBIC8qIEZpbGVTeXN0ZW0uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmlsZVN5c3RlbS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlBMzMxRDk1QTIxRjI0OTkyMDA5RjAyQUEgLyogRmlsZVN5c3RlbS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxlU3lzdGVtLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTMzMUQ5NUMyMUYyNDlFNDAwOUYwMkFBIC8qIEZpbGVT
eXN0ZW1DRi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxlU3lz
dGVtQ0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMzMxRDk1RTIxRjI0OUY2
MDA5RjAyQUEgLyogRmlsZVN5c3RlbUNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gRmlsZVN5c3RlbUNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBMzMxRDk2MDIxRjI0QTBBMDA5RjAyQUEgLyogRmlsZVN5c3RlbU1hYy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZpbGVTeXN0ZW1NYWMubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEzMzFEOTY2MjFGMjRBQkQwMDlGMDJBQSAvKiBG
aWxlU3lzdGVtUE9TSVguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
RmlsZVN5c3RlbVBPU0lYLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTM2RTE2
RjcyMTZGRjgyODAwOEREODdFIC8qIFdURlNlbWFwaG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXVEZTZW1hcGhvcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQTNBQjZFNkExRjNFMUFENjAwOUMxNEIxIC8qIFZhbHVlVG9TdHJpbmcuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmFsdWVUb1N0cmluZy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlBM0QyNzNCOTIxRjJFRTkxMDA4NjY5NzEgLyogTWV0YWRhdGFTUEkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWV0YWRhdGFTUEkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTNFNEREOTExRjNBODAzNDAwREVEMEI0IC8qIFRleHRTdHJl
YW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGV4dFN0cmVhbS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzRTRERDkyMUYzQTgwMzQwMERFRDBC
NCAvKiBUZXh0U3RyZWFtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRT
dHJlYW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTUwOThBRkYxQzE2OUUwNzAw
MDg3Nzk3IC8qIFNhbmRib3hTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U2FuZGJveFNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzE3LDYgKzczMCw3
IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQk1QzFGMDU5MTIxNjQzNTZCMDAzOTMwMkMgLyogQ0ZV
UkxFeHRyYXMuY3BwICovLAogCQkJCTVDMUYwNTkyMjE2NDM1NkIwMDM5MzAyQyAvKiBDRlVSTEV4
dHJhcy5oICovLAorCQkJCUEzMzFEOTVDMjFGMjQ5RTQwMDlGMDJBQSAvKiBGaWxlU3lzdGVtQ0Yu
Y3BwICovLAogCQkJCUMyQkNGQzQxMUY2MUQ2MTYwMEM5MjIyQyAvKiBMYW5ndWFnZUNGLmNwcCAq
LywKIAkJCQkyQ0RFRDBFRTE4MTE1QzM4MDA0REJBNzAgLyogUnVuTG9vcENGLmNwcCAqLywKIAkJ
CQkxQUZERTY0NzE5NTIwMUMzMDBDNDhGRkEgLyogVHlwZUNhc3RzQ0YuaCAqLywKQEAgLTc3NCw2
ICs3ODgsMjIgQEAKIAkJCW5hbWUgPSBTb3VyY2U7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OwogCQl9OworCQlBMzMxRDk2MzIxRjI0QTJFMDA5RjAyQUEgLyogcG9zaXggKi8gPSB7CisJCQlp
c2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUEzMzFEOTY2MjFGMjRBQkQwMDlG
MDJBQSAvKiBGaWxlU3lzdGVtUE9TSVguY3BwICovLAorCQkJKTsKKwkJCXBhdGggPSBwb3NpeDsK
KwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCUEzRDI3M0I4MjFGMkVFN0IwMDg2
Njk3MSAvKiBtYWMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAor
CQkJCUEzRDI3M0I5MjFGMkVFOTEwMDg2Njk3MSAvKiBNZXRhZGF0YVNQSS5oICovLAorCQkJKTsK
KwkJCXBhdGggPSBtYWM7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQlBNUJB
MTVGMTE4MjQzMzlGMDBBODJFNjkgLyogY29jb2EgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKApAQCAtODA3LDYgKzgzNyw3IEBACiAJCQkJMUZBNDdDODcxNTI1MDJE
QTAwNTY4RDFCIC8qIGlvcyAqLywKIAkJCQlBOEE0NzJDNDE1MUE4MjVBMDA0MTIzRkYgLyogbWFj
ICovLAogCQkJCUU0M0E0Njg1MUUyMjhCNTcwMDI3NkIwNSAvKiBwZXJzaXN0ZW5jZSAqLywKKwkJ
CQlBMzMxRDk2MzIxRjI0QTJFMDA5RjAyQUEgLyogcG9zaXggKi8sCiAJCQkJQ0VGNDgyMEMxOURB
MzQ3NjAwQ0MwNEI4IC8qIHNwaSAqLywKIAkJCQlBOEE0NzMxQjE1MUE4MjVCMDA0MTIzRkYgLyog
dGV4dCAqLywKIAkJCQlBOEE0NzMzOTE1MUE4MjVCMDA0MTIzRkYgLyogdGhyZWFkcyAqLywKQEAg
LTg5NCw4ICs5MjUsMTEgQEAKIAkJCQlBOEE0NzJBMjE1MUE4MjVBMDA0MTIzRkYgLyogRmFzdE1h
bGxvYy5oICovLAogCQkJCTBGNzlDN0MzMUU3MzUxMTgwMEVCMzREMSAvKiBGYXN0VExTLmggKi8s
CiAJCQkJQjM4RkQ3QkMxNjg5NTNFODAwNjVDOTY5IC8qIEZlYXR1cmVEZWZpbmVzLmggKi8sCisJ
CQkJQTMzMUQ5NTgyMUYyNDk3ODAwOUYwMkFBIC8qIEZpbGVNZXRhZGF0YS5oICovLAogCQkJCTBG
OUQzMzVCMTY1REJBNzMwMDVBRDM4NyAvKiBGaWxlUHJpbnRTdHJlYW0uY3BwICovLAogCQkJCTBG
OUQzMzVDMTY1REJBNzMwMDVBRDM4NyAvKiBGaWxlUHJpbnRTdHJlYW0uaCAqLywKKwkJCQlBMzMx
RDk1QTIxRjI0OTkyMDA5RjAyQUEgLyogRmlsZVN5c3RlbS5jcHAgKi8sCisJCQkJQTMzMUQ5NTky
MUYyNDk5MjAwOUYwMkFBIC8qIEZpbGVTeXN0ZW0uaCAqLywKIAkJCQkwRjJCNjZBNTE3QjZCNEY3
MDBBN0FFM0YgLyogRmxpcEJ5dGVzLmggKi8sCiAJCQkJRkU4NkE4NzQxRTU5NDQwMjAwMTExQkJG
IC8qIEZvcmJpZEhlYXBBbGxvY2F0aW9uLmggKi8sCiAJCQkJQThBNDcyQTYxNTFBODI1QTAwNDEy
M0ZGIC8qIEZvcndhcmQuaCAqLywKQEAgLTExOTAsNiArMTIyNCw3IEBACiAJCQljaGlsZHJlbiA9
ICgKIAkJCQkxQTQyOEI4QjFDOEY4OUREMDA1MUU5RUIgLyogQXBwS2l0Q29tcGF0aWJpbGl0eURl
Y2xhcmF0aW9ucy5oICovLAogCQkJCTFBQ0FERDgyMTg4NDQ4MDEwMEQ4QjcxRCAvKiBEZXByZWNh
dGVkU3ltYm9sc1VzZWRCeVNhZmFyaS5tbSAqLywKKwkJCQlBMzMxRDk2MDIxRjI0QTBBMDA5RjAy
QUEgLyogRmlsZVN5c3RlbU1hYy5tbSAqLywKIAkJCQk1MzUzNEYyOTFFQzBFMTBFMDAxNDFCMkYg
LyogTWFjaEV4Y2VwdGlvbnMuZGVmcyAqLywKIAkJCSk7CiAJCQlwYXRoID0gbWFjOwpAQCAtMTMx
Nyw2ICsxMzUyLDcgQEAKIAkJCQlEQ0VFMjFGOTFDRUE3NTJGMDAwQzIzOTYgLyogY2YgKi8sCiAJ
CQkJQ0U0NjUxNkMxOURCMUZCNDAwM0VDQTA1IC8qIGNvY29hICovLAogCQkJCUNFNzNFMDIzMTlE
Q0I3QUIwMDU4MEQ1QyAvKiBkYXJ3aW4gKi8sCisJCQkJQTNEMjczQjgyMUYyRUU3QjAwODY2OTcx
IC8qIG1hYyAqLywKIAkJCSk7CiAJCQlwYXRoID0gc3BpOwogCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKQEAgLTEzNTEsNiArMTM4Nyw3IEBACiAJCQkJRTM4QzQxMjQxRUI0RTA0QzAwNDI5NTdE
IC8qIENQVVRpbWVDb2NvYS5jcHAgKi8sCiAJCQkJMTQzRERFOTcyMEM4QkU5OTAwN0Y3NkZBIC8q
IEVudGl0bGVtZW50cy5oICovLAogCQkJCTE0M0RERTk1MjBDOEJDMzcwMDdGNzZGQSAvKiBFbnRp
dGxlbWVudHMubW0gKi8sCisJCQkJQTMzMUQ5NUUyMUYyNDlGNjAwOUYwMkFBIC8qIEZpbGVTeXN0
ZW1Db2NvYS5tbSAqLywKIAkJCQk3QTZFQkEzMzIwNzQ2QzM0MDA0RjlDNDQgLyogTWFjaFNlbmRS
aWdodC5jcHAgKi8sCiAJCQkJQThBNDcyQzUxNTFBODI1QTAwNDEyM0ZGIC8qIE1haW5UaHJlYWRD
b2NvYS5tbSAqLywKIAkJCQlBREYyQ0U2NTFFMzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9vdHBy
aW50Q29jb2EuY3BwICovLApAQCAtMTQ3Niw2ICsxNTEzLDExIEBACiAJCQkJMEY3QzVGQjYxRDg4
NUNGMjAwNDRGNUUyIC8qIEZhc3RCaXRWZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThB
NDczQzMxNTFBODI1QjAwNDEyM0ZGIC8qIEZhc3RNYWxsb2MuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEY5RDMzNjAxNjVEQkE3MzAwNUFEMzg3IC8qIEZpbGVQcmludFN0cmVhbS5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlBMzMxRDk1QjIxRjI0OTkyMDA5RjAyQUEgLyogRmlsZVN5c3RlbS5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlBMzMxRDk1RDIxRjI0OUU0MDA5RjAyQUEgLyogRmlsZVN5c3Rl
bUNGLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUEzMzFEOTVGMjFGMjQ5RjYwMDlGMDJBQSAvKiBG
aWxlU3lzdGVtQ29jb2EubW0gaW4gU291cmNlcyAqLywKKwkJCQlBMzMxRDk2MTIxRjI0QTBBMDA5
RjAyQUEgLyogRmlsZVN5c3RlbU1hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJCUEzMzFEOTY3MjFG
MjRBQkQwMDlGMDJBQSAvKiBGaWxlU3lzdGVtUE9TSVguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QThBNDczQjUxNTFBODI1QjAwNDEyM0ZGIC8qIGZpeGVkLWR0b2EuY2MgaW4gU291cmNlcyAqLywK
IAkJCQkxQTFEOEI5RTE3MzE4Nzk4MDAxNDFEQTQgLyogRnVuY3Rpb25EaXNwYXRjaGVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGNUJGMTc2MUYyM0Q0OUEwMDI5RDkxRCAvKiBHaWdhY2FnZS5j
cHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMu
dHh0IGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKaW5kZXggY2VlMWNjZTFlNTcxODRk
MTNiZDJjZDUxOWVmNmEyMGRmZmIxYTk2YS4uN2Q4NTgzMzIwZjQ5YzYxMDQwMWM3YjhhYjQ0NjM5
NmQ4OGMxNTBlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKKysr
IGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKQEAgLTYxLDcgKzYxLDkgQEAgc2V0KFdU
Rl9QVUJMSUNfSEVBREVSUwogICAgIEZhc3RNYWxsb2MuaAogICAgIEZhc3RUTFMuaAogICAgIEZl
YXR1cmVEZWZpbmVzLmgKKyAgICBGaWxlTWV0YWRhdGEuaAogICAgIEZpbGVQcmludFN0cmVhbS5o
CisgICAgRmlsZVN5c3RlbS5oCiAgICAgRmxpcEJ5dGVzLmgKICAgICBGb3JiaWRIZWFwQWxsb2Nh
dGlvbi5oCiAgICAgRm9yd2FyZC5oCkBAIC0zNTMsNiArMzU1LDcgQEAgc2V0KFdURl9TT1VSQ0VT
CiAgICAgRmFzdEJpdFZlY3Rvci5jcHAKICAgICBGYXN0TWFsbG9jLmNwcAogICAgIEZpbGVQcmlu
dFN0cmVhbS5jcHAKKyAgICBGaWxlU3lzdGVtLmNwcAogICAgIEZ1bmN0aW9uRGlzcGF0Y2hlci5j
cHAKICAgICBHaWdhY2FnZS5jcHAKICAgICBHbG9iYWxWZXJzaW9uLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvRmlsZU1ldGFkYXRhLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlTWV0YWRh
dGEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wYmI4OGZjODRmOTRhZjRjY2YxYzU4MGUwZDU2YTJiNjU4MTEwZjk4
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvRmlsZU1ldGFkYXRhLmgKQEAgLTAs
MCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0
OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+CisKK25h
bWVzcGFjZSBXVEYgeworCitzdHJ1Y3QgRmlsZU1ldGFkYXRhIHsKKyAgICAvLyBUaGUgbGFzdCBt
b2RpZmljYXRpb24gdGltZSBvZiB0aGUgZmlsZSwgaW4gc2Vjb25kcy4KKyAgICBXYWxsVGltZSBt
b2RpZmljYXRpb25UaW1lOworCisgICAgLy8gVGhlIGxlbmd0aCBvZiB0aGUgZmlsZSBpbiBieXRl
cy4KKyAgICBsb25nIGxvbmcgbGVuZ3RoOworCisgICAgYm9vbCBpc0hpZGRlbjsKKworICAgIGVu
dW0gY2xhc3MgVHlwZSB7IEZpbGUsIERpcmVjdG9yeSwgU3ltYm9saWNMaW5rIH07CisgICAgVHlw
ZSB0eXBlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6RmlsZU1ldGFk
YXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2Uv
V1RGL3d0Zi9GaWxlU3lzdGVtLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNmRlYzdkMjkzNzY3YmE1NDI4NDE3
OTlhOWZiYmZhMWM0M2Y1YjY3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvRmls
ZVN5c3RlbS5jcHAKQEAgLTAsMCArMSwzNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDct
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgorCisjaW5jbHVkZSA8d3RmL0ZpbGVNZXRh
ZGF0YS5oPgorI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KKyNpbmNsdWRlIDx3dGYvU2NvcGUu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nQnVpbGRlci5oPgorCisjaWYgIU9TKFdJTkRPV1MpCisjaW5jbHVkZSA8ZmNudGwuaD4KKyNp
bmNsdWRlIDxzeXMvbW1hbi5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5jbHVkZSA8dW5p
c3RkLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFdURiB7CisKK25hbWVzcGFjZSBGaWxlU3lzdGVt
SW1wbCB7CisKKy8vIFRoZSBmb2xsb3dpbmcgbG93ZXItQVNDSUkgY2hhcmFjdGVycyBuZWVkIGVz
Y2FwaW5nIHRvIGJlIHVzZWQgaW4gYSBmaWxlbmFtZQorLy8gYWNyb3NzIGFsbCBzeXN0ZW1zLCBp
bmNsdWRpbmcgV2luZG93czoKKy8vICAgICAtIFVucHJpbnRhYmxlIEFTQ0lJICgwMC0xRikKKy8v
ICAgICAtIFNwYWNlICAgICAgICAgICAgICgyMCkKKy8vICAgICAtIERvdWJsZSBxdW90ZSAgICAg
ICgyMikKKy8vICAgICAtIFBlcmNlbnQgICAgICAgICAgICgyNSkgKGVzY2FwZWQgYmVjYXVzZSBp
dCBpcyBvdXIgZXNjYXBlIGNoYXJhY3RlcikKKy8vICAgICAtIEFzdGVyaXNrICAgICAgICAgICgy
QSkKKy8vICAgICAtIFNsYXNoICAgICAgICAgICAgICgyRikKKy8vICAgICAtIENvbG9uICAgICAg
ICAgICAgICgzQSkKKy8vICAgICAtIExlc3MtdGhhbiAgICAgICAgICgzQykKKy8vICAgICAtIEdy
ZWF0ZXItdGhhbiAgICAgICgzRSkKKy8vICAgICAtIFF1ZXN0aW9uIE1hcmsgICAgICgzRikKKy8v
ICAgICAtIEJhY2tzbGFzaCAgICAgICAgICg1QykKKy8vICAgICAtIFBpcGUgICAgICAgICAgICAg
ICg3QykKKy8vICAgICAtIERlbGV0ZSAgICAgICAgICAgICg3RikKKworc3RhdGljIGNvbnN0IGJv
b2wgbmVlZHNFc2NhcGluZ1sxMjhdID0geworICAgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUs
ICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgLyogMDAtMDcgKi8KKyAgICB0cnVlLCAgdHJ1
ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIC8qIDA4LTBGICov
CisKKyAgICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAg
dHJ1ZSwgIC8qIDEwLTE3ICovCisgICAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUs
ICB0cnVlLCAgdHJ1ZSwgIHRydWUsICAvKiAxOC0xRiAqLworCisgICAgdHJ1ZSwgIGZhbHNlLCB0
cnVlLCAgZmFsc2UsIGZhbHNlLCB0cnVlLCAgZmFsc2UsIGZhbHNlLCAvKiAyMC0yNyAqLworICAg
IGZhbHNlLCBmYWxzZSwgdHJ1ZSwgIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCAg
LyogMjgtMkYgKi8KKworICAgIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFs
c2UsIGZhbHNlLCBmYWxzZSwgLyogMzAtMzcgKi8KKyAgICBmYWxzZSwgZmFsc2UsIHRydWUsICBm
YWxzZSwgdHJ1ZSwgIGZhbHNlLCB0cnVlLCAgdHJ1ZSwgIC8qIDM4LTNGICovCisKKyAgICBmYWxz
ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIC8qIDQw
LTQ3ICovCisgICAgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFs
c2UsIGZhbHNlLCAvKiA0OC00RiAqLworCisgICAgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2Us
IGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAvKiA1MC01NyAqLworICAgIGZhbHNlLCBmYWxz
ZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCAgZmFsc2UsIGZhbHNlLCBmYWxzZSwgLyogNTgtNUYgKi8K
KworICAgIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBm
YWxzZSwgLyogNjAtNjcgKi8KKyAgICBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2Us
IGZhbHNlLCBmYWxzZSwgZmFsc2UsIC8qIDY4LTZGICovCisKKyAgICBmYWxzZSwgZmFsc2UsIGZh
bHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIC8qIDcwLTc3ICovCisgICAg
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUsICBmYWxzZSwgZmFsc2UsIHRydWUsICAv
KiA3OC03RiAqLworfTsKKworc3RhdGljIGlubGluZSBib29sIHNob3VsZEVzY2FwZVVDaGFyKFVD
aGFyIGNoYXJhY3RlciwgVUNoYXIgcHJldmlvdXNDaGFyYWN0ZXIsIFVDaGFyIG5leHRDaGFyYWN0
ZXIpCit7CisgICAgaWYgKGNoYXJhY3RlciA8PSAxMjcpCisgICAgICAgIHJldHVybiBuZWVkc0Vz
Y2FwaW5nW2NoYXJhY3Rlcl07CisKKyAgICBpZiAoVTE2X0lTX0xFQUQoY2hhcmFjdGVyKSAmJiAh
VTE2X0lTX1RSQUlMKG5leHRDaGFyYWN0ZXIpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAg
IGlmIChVMTZfSVNfVFJBSUwoY2hhcmFjdGVyKSAmJiAhVTE2X0lTX0xFQUQocHJldmlvdXNDaGFy
YWN0ZXIpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKwor
U3RyaW5nIGVuY29kZUZvckZpbGVOYW1lKGNvbnN0IFN0cmluZyYgaW5wdXRTdHJpbmcpCit7Cisg
ICAgdW5zaWduZWQgbGVuZ3RoID0gaW5wdXRTdHJpbmcubGVuZ3RoKCk7CisgICAgaWYgKCFsZW5n
dGgpCisgICAgICAgIHJldHVybiBpbnB1dFN0cmluZzsKKworICAgIFN0cmluZ0J1aWxkZXIgcmVz
dWx0OworICAgIHJlc3VsdC5yZXNlcnZlQ2FwYWNpdHkobGVuZ3RoKTsKKworICAgIFVDaGFyIHBy
ZXZpb3VzQ2hhcmFjdGVyOworICAgIFVDaGFyIGNoYXJhY3RlciA9IDA7CisgICAgVUNoYXIgbmV4
dENoYXJhY3RlciA9IGlucHV0U3RyaW5nWzBdOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBsZW5ndGg7ICsraSkgeworICAgICAgICBwcmV2aW91c0NoYXJhY3RlciA9IGNoYXJhY3RlcjsK
KyAgICAgICAgY2hhcmFjdGVyID0gbmV4dENoYXJhY3RlcjsKKyAgICAgICAgbmV4dENoYXJhY3Rl
ciA9IGkgKyAxIDwgbGVuZ3RoID8gaW5wdXRTdHJpbmdbaSArIDFdIDogMDsKKworICAgICAgICBp
ZiAoc2hvdWxkRXNjYXBlVUNoYXIoY2hhcmFjdGVyLCBwcmV2aW91c0NoYXJhY3RlciwgbmV4dENo
YXJhY3RlcikpIHsKKyAgICAgICAgICAgIGlmIChjaGFyYWN0ZXIgPD0gMjU1KSB7CisgICAgICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZCgnJScpOworICAgICAgICAgICAgICAgIGFwcGVuZEJ5dGVB
c0hleChjaGFyYWN0ZXIsIHJlc3VsdCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCIlKyIpOworICAgICAgICAgICAgICAgIGFwcGVu
ZEJ5dGVBc0hleChjaGFyYWN0ZXIgPj4gOCwgcmVzdWx0KTsKKyAgICAgICAgICAgICAgICBhcHBl
bmRCeXRlQXNIZXgoY2hhcmFjdGVyLCByZXN1bHQpOworICAgICAgICAgICAgfQorICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoY2hhcmFjdGVyKTsKKyAgICB9CisKKyAg
ICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7Cit9CisKK1N0cmluZyBkZWNvZGVGcm9tRmlsZW5h
bWUoY29uc3QgU3RyaW5nJiBpbnB1dFN0cmluZykKK3sKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBp
bnB1dFN0cmluZy5sZW5ndGgoKTsKKyAgICBpZiAoIWxlbmd0aCkKKyAgICAgICAgcmV0dXJuIGlu
cHV0U3RyaW5nOworCisgICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7CisgICAgcmVzdWx0LnJlc2Vy
dmVDYXBhY2l0eShsZW5ndGgpOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0
aDsgKytpKSB7CisgICAgICAgIGlmIChpbnB1dFN0cmluZ1tpXSAhPSAnJScpIHsKKyAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoaW5wdXRTdHJpbmdbaV0pOworICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgIH0KKworICAgICAgICAvLyBJZiB0aGUgaW5wdXQgc3RyaW5nIGlzIGEgdmFsaWQg
ZW5jb2RlZCBmaWxlbmFtZSwgaXQgbXVzdCBiZSBhdCBsZWFzdCAyIGNoYXJhY3RlcnMgbG9uZ2Vy
CisgICAgICAgIC8vIHRoYW4gdGhlIGN1cnJlbnQgaW5kZXggdG8gYWNjb3VudCBmb3IgdGhpcyBw
ZXJjZW50IGVuY29kZWQgdmFsdWUuCisgICAgICAgIGlmIChpICsgMiA+PSBsZW5ndGgpCisgICAg
ICAgICAgICByZXR1cm4geyB9OworCisgICAgICAgIGlmIChpbnB1dFN0cmluZ1tpKzFdICE9ICcr
JykgeworICAgICAgICAgICAgaWYgKCFpc0FTQ0lJSGV4RGlnaXQoaW5wdXRTdHJpbmdbaSArIDFd
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICAgICAgaWYgKCFpc0FTQ0lJ
SGV4RGlnaXQoaW5wdXRTdHJpbmdbaSArIDJdKSkKKyAgICAgICAgICAgICAgICByZXR1cm4geyB9
OworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh0b0FTQ0lJSGV4VmFsdWUoaW5wdXRTdHJpbmdb
aSArIDFdLCBpbnB1dFN0cmluZ1tpICsgMl0pKTsKKyAgICAgICAgICAgIGkgKz0gMjsKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgdGhlIGlucHV0IHN0
cmluZyBpcyBhIHZhbGlkIGVuY29kZWQgZmlsZW5hbWUsIGl0IG11c3QgYmUgYXQgbGVhc3QgNSBj
aGFyYWN0ZXJzIGxvbmdlcgorICAgICAgICAvLyB0aGFuIHRoZSBjdXJyZW50IGluZGV4IHRvIGFj
Y291bnQgZm9yIHRoaXMgcGVyY2VudCBlbmNvZGVkIHZhbHVlLgorICAgICAgICBpZiAoaSArIDUg
Pj0gbGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuIHsgfTsKKworICAgICAgICBpZiAoIWlzQVND
SUlIZXhEaWdpdChpbnB1dFN0cmluZ1tpICsgMl0pKQorICAgICAgICAgICAgcmV0dXJuIHsgfTsK
KyAgICAgICAgaWYgKCFpc0FTQ0lJSGV4RGlnaXQoaW5wdXRTdHJpbmdbaSArIDNdKSkKKyAgICAg
ICAgICAgIHJldHVybiB7IH07CisgICAgICAgIGlmICghaXNBU0NJSUhleERpZ2l0KGlucHV0U3Ry
aW5nW2kgKyA0XSkpCisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICBpZiAoIWlzQVND
SUlIZXhEaWdpdChpbnB1dFN0cmluZ1tpICsgNV0pKQorICAgICAgICAgICAgcmV0dXJuIHsgfTsK
KworICAgICAgICByZXN1bHQuYXBwZW5kKHRvQVNDSUlIZXhWYWx1ZShpbnB1dFN0cmluZ1tpICsg
Ml0sIGlucHV0U3RyaW5nW2kgKyAzXSkgPDwgOCB8IHRvQVNDSUlIZXhWYWx1ZShpbnB1dFN0cmlu
Z1tpICsgNF0sIGlucHV0U3RyaW5nW2kgKyA1XSkpOworICAgICAgICBpICs9IDU7CisgICAgfQor
CisgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOworfQorCitTdHJpbmcgbGFzdENvbXBvbmVu
dE9mUGF0aElnbm9yaW5nVHJhaWxpbmdTbGFzaChjb25zdCBTdHJpbmcmIHBhdGgpCit7CisjaWYg
T1MoV0lORE9XUykKKyAgICBjaGFyIHBhdGhTZXBhcmF0b3IgPSAnXFwnOworI2Vsc2UKKyAgICBj
aGFyIHBhdGhTZXBhcmF0b3IgPSAnLyc7CisjZW5kaWYKKworICAgIGF1dG8gcG9zaXRpb24gPSBw
YXRoLnJldmVyc2VGaW5kKHBhdGhTZXBhcmF0b3IpOworICAgIGlmIChwb3NpdGlvbiA9PSBub3RG
b3VuZCkKKyAgICAgICAgcmV0dXJuIHBhdGg7CisKKyAgICBzaXplX3QgZW5kT2ZTdWJzdHJpbmcg
PSBwYXRoLmxlbmd0aCgpIC0gMTsKKyAgICBpZiAocG9zaXRpb24gPT0gZW5kT2ZTdWJzdHJpbmcp
IHsKKyAgICAgICAgLS1lbmRPZlN1YnN0cmluZzsKKyAgICAgICAgcG9zaXRpb24gPSBwYXRoLnJl
dmVyc2VGaW5kKHBhdGhTZXBhcmF0b3IsIGVuZE9mU3Vic3RyaW5nKTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gcGF0aC5zdWJzdHJpbmcocG9zaXRpb24gKyAxLCBlbmRPZlN1YnN0cmluZyAtIHBvc2l0
aW9uKTsKK30KKworYm9vbCBhcHBlbmRGaWxlQ29udGVudHNUb0ZpbGVIYW5kbGUoY29uc3QgU3Ry
aW5nJiBwYXRoLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHRhcmdldCkKK3sKKyAgICBhdXRvIHNvdXJj
ZSA9IG9wZW5GaWxlKHBhdGgsIEZpbGVPcGVuTW9kZTo6UmVhZCk7CisKKyAgICBpZiAoIWlzSGFu
ZGxlVmFsaWQoc291cmNlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgc3RhdGljIGlu
dCBidWZmZXJTaXplID0gMSA8PCAxOTsKKyAgICBWZWN0b3I8Y2hhcj4gYnVmZmVyKGJ1ZmZlclNp
emUpOworCisgICAgYXV0byBmaWxlQ2xvc2VyID0gV1RGOjptYWtlU2NvcGVFeGl0KFtzb3VyY2Vd
KCkgeworICAgICAgICBQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlID0gc291cmNlOworICAgICAg
ICBjbG9zZUZpbGUoaGFuZGxlKTsKKyAgICB9KTsKKworICAgIGRvIHsKKyAgICAgICAgaW50IHJl
YWRCeXRlcyA9IHJlYWRGcm9tRmlsZShzb3VyY2UsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlclNpemUp
OworCisgICAgICAgIGlmIChyZWFkQnl0ZXMgPCAwKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgICAgIGlmICh3cml0ZVRvRmlsZSh0YXJnZXQsIGJ1ZmZlci5kYXRhKCksIHJlYWRC
eXRlcykgIT0gcmVhZEJ5dGVzKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAg
IGlmIChyZWFkQnl0ZXMgPCBidWZmZXJTaXplKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfSB3aGlsZSAodHJ1ZSk7CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworCiti
b29sIGZpbGVzSGF2ZVNhbWVWb2x1bWUoY29uc3QgU3RyaW5nJiBmaWxlQSwgY29uc3QgU3RyaW5n
JiBmaWxlQikKK3sKKyAgICBhdXRvIGZzUmVwRmlsZUEgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oZmlsZUEpOworICAgIGF1dG8gZnNSZXBGaWxlQiA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihmaWxlQik7CisKKyAgICBpZiAoZnNSZXBGaWxlQS5pc051bGwoKSB8fCBmc1JlcEZpbGVCLmlz
TnVsbCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBib29sIHJlc3VsdCA9IGZhbHNl
OworCisgICAgYXV0byBmaWxlQURldiA9IGdldEZpbGVEZXZpY2VJZChmc1JlcEZpbGVBKTsKKyAg
ICBhdXRvIGZpbGVCRGV2ID0gZ2V0RmlsZURldmljZUlkKGZzUmVwRmlsZUIpOworCisgICAgaWYg
KGZpbGVBRGV2ICYmIGZpbGVCRGV2KQorICAgICAgICByZXN1bHQgPSAoZmlsZUFEZXYgPT0gZmls
ZUJEZXYpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworI2lmICFQTEFURk9STShNQUMpCisK
K3ZvaWQgc2V0TWV0YWRhdGFVUkwoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJikKK3sKK30KKworYm9vbCBjYW5FeGNsdWRlRnJvbUJhY2t1cCgpCit7CisgICAgcmV0
dXJuIGZhbHNlOworfQorCitib29sIGV4Y2x1ZGVGcm9tQmFja3VwKGNvbnN0IFN0cmluZyYpCit7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCisjZW5kaWYKKworTWFwcGVkRmlsZURhdGE6On5NYXBw
ZWRGaWxlRGF0YSgpCit7CisjaWYgIU9TKFdJTkRPV1MpCisgICAgaWYgKCFtX2ZpbGVEYXRhKQor
ICAgICAgICByZXR1cm47CisgICAgbXVubWFwKG1fZmlsZURhdGEsIG1fZmlsZVNpemUpOworI2Vu
ZGlmCit9CisKK01hcHBlZEZpbGVEYXRhOjpNYXBwZWRGaWxlRGF0YShjb25zdCBTdHJpbmcmIGZp
bGVQYXRoLCBib29sJiBzdWNjZXNzKQoreworI2lmIE9TKFdJTkRPV1MpCisgICAgLy8gRklYTUU6
IEltcGxlbWVudCBtYXBwaW5nCisgICAgc3VjY2VzcyA9IGZhbHNlOworI2Vsc2UKKyAgICBDU3Ry
aW5nIGZzUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVQYXRoKTsKKyAgICBpbnQg
ZmQgPSAhZnNSZXAuaXNOdWxsKCkgPyBvcGVuKGZzUmVwLmRhdGEoKSwgT19SRE9OTFkpIDogLTE7
CisgICAgaWYgKGZkIDwgMCkgeworICAgICAgICBzdWNjZXNzID0gZmFsc2U7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBzdHJ1Y3Qgc3RhdCBmaWxlU3RhdDsKKyAgICBpZiAoZnN0YXQo
ZmQsICZmaWxlU3RhdCkpIHsKKyAgICAgICAgY2xvc2UoZmQpOworICAgICAgICBzdWNjZXNzID0g
ZmFsc2U7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBzaXplOworICAg
IGlmICghV1RGOjpjb252ZXJ0U2FmZWx5KGZpbGVTdGF0LnN0X3NpemUsIHNpemUpKSB7CisgICAg
ICAgIGNsb3NlKGZkKTsKKyAgICAgICAgc3VjY2VzcyA9IGZhbHNlOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgaWYgKCFzaXplKSB7CisgICAgICAgIGNsb3NlKGZkKTsKKyAgICAgICAg
c3VjY2VzcyA9IHRydWU7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB2b2lkKiBkYXRh
ID0gbW1hcCgwLCBzaXplLCBQUk9UX1JFQUQsIE1BUF9GSUxFIHwgTUFQX1NIQVJFRCwgZmQsIDAp
OworICAgIGNsb3NlKGZkKTsKKworICAgIGlmIChkYXRhID09IE1BUF9GQUlMRUQpIHsKKyAgICAg
ICAgc3VjY2VzcyA9IGZhbHNlOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc3VjY2Vz
cyA9IHRydWU7CisgICAgbV9maWxlRGF0YSA9IGRhdGE7CisgICAgbV9maWxlU2l6ZSA9IHNpemU7
CisjZW5kaWYKK30KKworUGxhdGZvcm1GaWxlSGFuZGxlIG9wZW5BbmRMb2NrRmlsZShjb25zdCBT
dHJpbmcmIHBhdGgsIEZpbGVPcGVuTW9kZSBvcGVuTW9kZSwgT3B0aW9uU2V0PEZpbGVMb2NrTW9k
ZT4gbG9ja01vZGUpCit7CisgICAgYXV0byBoYW5kbGUgPSBvcGVuRmlsZShwYXRoLCBvcGVuTW9k
ZSk7CisgICAgaWYgKGhhbmRsZSA9PSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQorICAgICAg
ICByZXR1cm4gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKKworI2lmIFVTRShGSUxFX0xPQ0sp
CisgICAgYm9vbCBsb2NrZWQgPSBsb2NrRmlsZShoYW5kbGUsIGxvY2tNb2RlKTsKKyAgICBBU1NF
UlRfVU5VU0VEKGxvY2tlZCwgbG9ja2VkKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGxvY2tN
b2RlKTsKKyNlbmRpZgorCisgICAgcmV0dXJuIGhhbmRsZTsKK30KKwordm9pZCB1bmxvY2tBbmRD
bG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSkKK3sKKyNpZiBVU0UoRklMRV9MT0NL
KQorICAgIGJvb2wgdW5sb2NrZWQgPSB1bmxvY2tGaWxlKGhhbmRsZSk7CisgICAgQVNTRVJUX1VO
VVNFRCh1bmxvY2tlZCwgdW5sb2NrZWQpOworI2VuZGlmCisgICAgY2xvc2VGaWxlKGhhbmRsZSk7
Cit9CisKK2Jvb2wgZmlsZUlzRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgU2hvdWxkRm9s
bG93U3ltYm9saWNMaW5rcyBzaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzKQoreworICAgIGF1dG8g
bWV0YWRhdGEgPSBzaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzID09IFNob3VsZEZvbGxvd1N5bWJv
bGljTGlua3M6OlllcyA/IGZpbGVNZXRhZGF0YUZvbGxvd2luZ1N5bWxpbmtzKHBhdGgpIDogZmls
ZU1ldGFkYXRhKHBhdGgpOworICAgIGlmICghbWV0YWRhdGEpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICByZXR1cm4gbWV0YWRhdGEudmFsdWUoKS50eXBlID09IEZpbGVNZXRhZGF0YTo6VHlw
ZTo6RGlyZWN0b3J5OworfQorCit9IC8vIG5hbWVzcGFjZSBGaWxlU3lzdGVtSW1wbAorfSAvLyBu
YW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmggYi9T
b3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTVjM2JhZjJlNjI4YjljYWQ3
NDYyYTA2OWVlYzAwYjlhZjg2YzJhMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L0ZpbGVTeXN0ZW0uaApAQCAtMCwwICsxLDIyNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
Ny0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAwOCBDb2xsYWJvcmEsIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhl
IG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
KyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHRp
bWUuaD4KKyNpbmNsdWRlIDx1dGlsaXR5PgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5j
bHVkZSA8d3RmL09wdGlvblNldC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRl
IDx3dGYvV2FsbFRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworI2lm
IFVTRShDRikKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjZW5kaWYKKworI2lmIFVTRShD
RikKK3R5cGVkZWYgY29uc3Qgc3RydWN0IF9fQ0ZEYXRhKiBDRkRhdGFSZWY7CisjZW5kaWYKKwor
T0JKQ19DTEFTUyBOU1N0cmluZzsKKworI2lmIFBMQVRGT1JNKFdJTikKK3R5cGVkZWYgdm9pZCAq
SEFORExFOworI2VuZGlmCisKKyNpZiBVU0UoR0xJQikKK3R5cGVkZWYgc3RydWN0IF9HRmlsZUlP
U3RyZWFtIEdGaWxlSU9TdHJlYW07CisjZW5kaWYKKworbmFtZXNwYWNlIFdURiB7CisKK3N0cnVj
dCBGaWxlTWV0YWRhdGE7CisKK25hbWVzcGFjZSBGaWxlU3lzdGVtSW1wbCB7CisKKy8vIFBsYXRm
b3JtRmlsZUhhbmRsZQorI2lmIFVTRShHTElCKSAmJiAhUExBVEZPUk0oV0lOKQordHlwZWRlZiBH
RmlsZUlPU3RyZWFtKiBQbGF0Zm9ybUZpbGVIYW5kbGU7Citjb25zdCBQbGF0Zm9ybUZpbGVIYW5k
bGUgaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSA9IDA7CisjZWxpZiBQTEFURk9STShXSU4pCit0
eXBlZGVmIEhBTkRMRSBQbGF0Zm9ybUZpbGVIYW5kbGU7CisvLyBGSVhNRTogLTEgaXMgSU5WQUxJ
RF9IQU5ETEVfVkFMVUUsIGRlZmluZWQgaW4gPHdpbmJhc2UuaD4uIENocm9taXVtIHRyaWVzIHRv
CisvLyBhdm9pZCB1c2luZyBXaW5kb3dzIGhlYWRlcnMgaW4gaGVhZGVycy4gV2UnZCByYXRoZXIg
bW92ZSB0aGlzIGludG8gdGhlIC5jcHAuCitjb25zdCBQbGF0Zm9ybUZpbGVIYW5kbGUgaW52YWxp
ZFBsYXRmb3JtRmlsZUhhbmRsZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8SEFORExFPigtMSk7CisjZWxz
ZQordHlwZWRlZiBpbnQgUGxhdGZvcm1GaWxlSGFuZGxlOworY29uc3QgUGxhdGZvcm1GaWxlSGFu
ZGxlIGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUgPSAtMTsKKyNlbmRpZgorCitlbnVtIGNsYXNz
IEZpbGVPcGVuTW9kZSB7CisgICAgUmVhZCwKKyAgICBXcml0ZSwKKyNpZiBPUyhEQVJXSU4pCisg
ICAgRXZlbnRzT25seSwKKyNlbmRpZgorfTsKKworZW51bSBjbGFzcyBGaWxlU2Vla09yaWdpbiB7
CisgICAgQmVnaW5uaW5nLAorICAgIEN1cnJlbnQsCisgICAgRW5kLAorfTsKKworZW51bSBjbGFz
cyBGaWxlTG9ja01vZGUgeworICAgIFNoYXJlZCA9IDEgPDwgMCwKKyAgICBFeGNsdXNpdmUgPSAx
IDw8IDEsCisgICAgTm9uYmxvY2tpbmcgPSAxIDw8IDIsCit9OworCitlbnVtIGNsYXNzIFNob3Vs
ZEZvbGxvd1N5bWJvbGljTGlua3MgeyBObywgWWVzIH07CisKK1dURl9FWFBPUlRfUFJJVkFURSBi
b29sIGZpbGVFeGlzdHMoY29uc3QgU3RyaW5nJik7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBk
ZWxldGVGaWxlKGNvbnN0IFN0cmluZyYpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZGVsZXRl
RW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBt
b3ZlRmlsZShjb25zdCBTdHJpbmcmIG9sZFBhdGgsIGNvbnN0IFN0cmluZyYgbmV3UGF0aCk7CitX
VEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBnZXRGaWxlU2l6ZShjb25zdCBTdHJpbmcmLCBsb25nIGxv
bmcmIHJlc3VsdCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBnZXRGaWxlU2l6ZShQbGF0Zm9y
bUZpbGVIYW5kbGUsIGxvbmcgbG9uZyYgcmVzdWx0KTsKK1dURl9FWFBPUlRfUFJJVkFURSBPcHRp
b25hbDxXYWxsVGltZT4gZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJik7CitX
VEZfRVhQT1JUX1BSSVZBVEUgT3B0aW9uYWw8V2FsbFRpbWU+IGdldEZpbGVDcmVhdGlvblRpbWUo
Y29uc3QgU3RyaW5nJik7IC8vIE5vdCBhbGwgcGxhdGZvcm1zIHN0b3JlIGZpbGUgY3JlYXRpb24g
dGltZS4KK1dURl9FWFBPUlRfUFJJVkFURSBPcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRh
ZGF0YShjb25zdCBTdHJpbmcmIHBhdGgpOworV1RGX0VYUE9SVF9QUklWQVRFIE9wdGlvbmFsPEZp
bGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3MoY29uc3QgU3RyaW5nJiBw
YXRoKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGZpbGVJc0RpcmVjdG9yeShjb25zdCBTdHJp
bmcmLCBTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzKTsKK1dURl9FWFBPUlRfUFJJVkFURSBTdHJp
bmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3Ry
aW5nJiBjb21wb25lbnQpOworV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnRzKFN0cmluZ1ZpZXcgcGF0aCwgY29uc3QgVmVjdG9yPFN0cmluZ1ZpZXc+JiBj
b21wb25lbnRzKTsKK1dURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgbGFzdENvbXBvbmVudE9mUGF0
aElnbm9yaW5nVHJhaWxpbmdTbGFzaChjb25zdCBTdHJpbmcmIHBhdGgpOworV1RGX0VYUE9SVF9Q
UklWQVRFIGJvb2wgbWFrZUFsbERpcmVjdG9yaWVzKGNvbnN0IFN0cmluZyYgcGF0aCk7CitXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nIGhvbWVEaXJlY3RvcnlQYXRoKCk7CitXVEZfRVhQT1JUX1BS
SVZBVEUgU3RyaW5nIHBhdGhHZXRGaWxlTmFtZShjb25zdCBTdHJpbmcmKTsKK1dURl9FWFBPUlRf
UFJJVkFURSBTdHJpbmcgZGlyZWN0b3J5TmFtZShjb25zdCBTdHJpbmcmKTsKK1dURl9FWFBPUlRf
UFJJVkFURSBib29sIGdldFZvbHVtZUZyZWVTcGFjZShjb25zdCBTdHJpbmcmLCB1aW50NjRfdCYp
OworV1RGX0VYUE9SVF9QUklWQVRFIE9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChj
b25zdCBDU3RyaW5nJik7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjcmVhdGVTeW1ib2xpY0xp
bmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGljTGlua1Bh
dGgpOworCitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRNZXRhZGF0YVVSTChjb25zdCBTdHJp
bmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlZmVycmVy
ID0geyB9KTsKKworYm9vbCBjYW5FeGNsdWRlRnJvbUJhY2t1cCgpOyAvLyBSZXR1cm5zIHRydWUg
aWYgYW55IGZpbGUgY2FuIGV2ZXIgYmUgZXhjbHVkZWQgZnJvbSBiYWNrdXAuCitib29sIGV4Y2x1
ZGVGcm9tQmFja3VwKGNvbnN0IFN0cmluZyYpOyAvLyBSZXR1cm5zIHRydWUgaWYgc3VjY2Vzc2Z1
bC4KKworV1RGX0VYUE9SVF9QUklWQVRFIFZlY3RvcjxTdHJpbmc+IGxpc3REaXJlY3RvcnkoY29u
c3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGZpbHRlciA9IFN0cmluZygpKTsKKworV1RG
X0VYUE9SVF9QUklWQVRFIENTdHJpbmcgZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0
cmluZyYpOworU3RyaW5nIHN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3Qg
Y2hhciopOworCitpbmxpbmUgYm9vbCBpc0hhbmRsZVZhbGlkKGNvbnN0IFBsYXRmb3JtRmlsZUhh
bmRsZSYgaGFuZGxlKSB7IHJldHVybiBoYW5kbGUgIT0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRs
ZTsgfQorCisvLyBQcmVmaXggaXMgd2hhdCB0aGUgZmlsZW5hbWUgc2hvdWxkIGJlIHByZWZpeGVk
IHdpdGgsIG5vdCB0aGUgZnVsbCBwYXRoLgorV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBvcGVu
VGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJik7
CitXVEZfRVhQT1JUX1BSSVZBVEUgUGxhdGZvcm1GaWxlSGFuZGxlIG9wZW5GaWxlKGNvbnN0IFN0
cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlKTsKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIGNsb3Nl
RmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUmKTsKKy8vIFJldHVybnMgdGhlIHJlc3VsdGluZyBvZmZz
ZXQgZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaWxlIGlmIHN1Y2Nlc3NmdWwsIC0xIG90aGVy
d2lzZS4KK1dURl9FWFBPUlRfUFJJVkFURSBsb25nIGxvbmcgc2Vla0ZpbGUoUGxhdGZvcm1GaWxl
SGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0LCBGaWxlU2Vla09yaWdpbik7Citib29sIHRydW5jYXRl
RmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQpOworLy8gUmV0dXJucyBu
dW1iZXIgb2YgYnl0ZXMgYWN0dWFsbHkgcmVhZCBpZiBzdWNjZXNzZnVsLCAtMSBvdGhlcndpc2Uu
CitXVEZfRVhQT1JUX1BSSVZBVEUgaW50IHdyaXRlVG9GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwg
Y29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCk7CisvLyBSZXR1cm5zIG51bWJlciBvZiBieXRl
cyBhY3R1YWxseSB3cml0dGVuIGlmIHN1Y2Nlc3NmdWwsIC0xIG90aGVyd2lzZS4KK1dURl9FWFBP
UlRfUFJJVkFURSBpbnQgcmVhZEZyb21GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgY2hhciogZGF0
YSwgaW50IGxlbmd0aCk7CisKK1dURl9FWFBPUlRfUFJJVkFURSBQbGF0Zm9ybUZpbGVIYW5kbGUg
b3BlbkFuZExvY2tGaWxlKGNvbnN0IFN0cmluZyYsIEZpbGVPcGVuTW9kZSwgT3B0aW9uU2V0PEZp
bGVMb2NrTW9kZT4gPSBGaWxlTG9ja01vZGU6OkV4Y2x1c2l2ZSk7CitXVEZfRVhQT1JUX1BSSVZB
VEUgdm9pZCB1bmxvY2tBbmRDbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlKTsKKworLy8gQXBw
ZW5kcyB0aGUgY29udGVudHMgb2YgdGhlIGZpbGUgZm91bmQgYXQgJ3BhdGgnIHRvIHRoZSBvcGVu
IFBsYXRmb3JtRmlsZUhhbmRsZS4KKy8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgd3JpdGUgd2FzIHN1
Y2Nlc3NmdWwsIGZhbHNlIGlmIGl0IHdhcyBub3QuCitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBh
cHBlbmRGaWxlQ29udGVudHNUb0ZpbGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBQbGF0Zm9y
bUZpbGVIYW5kbGUmKTsKKworLy8gSGFyZCBsaW5rcyBhIGZpbGUgaWYgcG9zc2libGUsIGNvcGll
cyBpdCBpZiBub3QuCitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBoYXJkTGlua09yQ29weUZpbGUo
Y29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb24pOworCisjaWYg
VVNFKEZJTEVfTE9DSykKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGxvY2tGaWxlKFBsYXRmb3Jt
RmlsZUhhbmRsZSwgT3B0aW9uU2V0PEZpbGVMb2NrTW9kZT4pOworV1RGX0VYUE9SVF9QUklWQVRF
IGJvb2wgdW5sb2NrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUpOworI2VuZGlmCisKKy8vIEVuY29k
ZSBhIHN0cmluZyBmb3IgdXNlIHdpdGhpbiBhIGZpbGUgbmFtZS4KK1dURl9FWFBPUlRfUFJJVkFU
RSBTdHJpbmcgZW5jb2RlRm9yRmlsZU5hbWUoY29uc3QgU3RyaW5nJik7CitXVEZfRVhQT1JUX1BS
SVZBVEUgU3RyaW5nIGRlY29kZUZyb21GaWxlbmFtZShjb25zdCBTdHJpbmcmKTsKKworV1RGX0VY
UE9SVF9QUklWQVRFIGJvb2wgZmlsZXNIYXZlU2FtZVZvbHVtZShjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmKTsKKworI2lmIFVTRShDRikKK1dURl9FWFBPUlRfUFJJVkFURSBSZXRhaW5QdHI8
Q0ZVUkxSZWY+IHBhdGhBc1VSTChjb25zdCBTdHJpbmcmKTsKKyNlbmRpZgorCisjaWYgUExBVEZP
Uk0oR1RLKSB8fCBQTEFURk9STShXUEUpCitTdHJpbmcgZmlsZW5hbWVGb3JEaXNwbGF5KGNvbnN0
IFN0cmluZyYpOworI2VuZGlmCisKKyNpZiBQTEFURk9STShXSU4pCitXVEZfRVhQT1JUX1BSSVZB
VEUgU3RyaW5nIGxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpOworV1RGX0VYUE9S
VF9QUklWQVRFIFN0cmluZyByb2FtaW5nVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpOwor
I2VuZGlmCisKKyNpZiBQTEFURk9STShDT0NPQSkKK1dURl9FWFBPUlRfUFJJVkFURSBOU1N0cmlu
ZyAqY3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KE5TU3RyaW5nICpkaXJlY3RvcnlQcmVmaXgpOwor
V1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkoY29uc3QgU3Ry
aW5nJik7CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKFdJTl9DQUlSTykKK1dURl9FWFBPUlRfUFJJ
VkFURSBTdHJpbmcgY3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KCk7CitXVEZfRVhQT1JUX1BSSVZB
VEUgYm9vbCBkZWxldGVOb25FbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKKyNlbmRpZgor
CitXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHJlYWxQYXRoKGNvbnN0IFN0cmluZyYpOworCitj
bGFzcyBNYXBwZWRGaWxlRGF0YSB7CitwdWJsaWM6CisgICAgTWFwcGVkRmlsZURhdGEoKSB7IH0K
KyAgICBNYXBwZWRGaWxlRGF0YShNYXBwZWRGaWxlRGF0YSYmKTsKKyAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgTWFwcGVkRmlsZURhdGEoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgYm9vbCYgc3VjY2Vz
cyk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIH5NYXBwZWRGaWxlRGF0YSgpOworICAgIE1hcHBl
ZEZpbGVEYXRhJiBvcGVyYXRvcj0oTWFwcGVkRmlsZURhdGEmJik7CisKKyAgICBleHBsaWNpdCBv
cGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISFtX2ZpbGVEYXRhOyB9CisgICAgY29uc3Qg
dm9pZCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsZURhdGE7IH0KKyAgICB1bnNpZ25lZCBz
aXplKCkgY29uc3QgeyByZXR1cm4gbV9maWxlU2l6ZTsgfQorCitwcml2YXRlOgorICAgIHZvaWQq
IG1fZmlsZURhdGEgeyBudWxscHRyIH07CisgICAgdW5zaWduZWQgbV9maWxlU2l6ZSB7IDAgfTsK
K307CisKK2lubGluZSBNYXBwZWRGaWxlRGF0YTo6TWFwcGVkRmlsZURhdGEoTWFwcGVkRmlsZURh
dGEmJiBvdGhlcikKKyAgICA6IG1fZmlsZURhdGEoc3RkOjpleGNoYW5nZShvdGhlci5tX2ZpbGVE
YXRhLCBudWxscHRyKSkKKyAgICAsIG1fZmlsZVNpemUoc3RkOjpleGNoYW5nZShvdGhlci5tX2Zp
bGVTaXplLCAwKSkKK3sKK30KKworaW5saW5lIE1hcHBlZEZpbGVEYXRhJiBNYXBwZWRGaWxlRGF0
YTo6b3BlcmF0b3I9KE1hcHBlZEZpbGVEYXRhJiYgb3RoZXIpCit7CisgICAgbV9maWxlRGF0YSA9
IHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9maWxlRGF0YSwgbnVsbHB0cik7CisgICAgbV9maWxlU2l6
ZSA9IHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9maWxlU2l6ZSwgMCk7CisgICAgcmV0dXJuICp0aGlz
OworfQorCit9IC8vIG5hbWVzcGFjZSBGaWxlU3lzdGVtSW1wbAorfSAvLyBuYW1lc3BhY2UgV1RG
CisKK25hbWVzcGFjZSBGaWxlU3lzdGVtID0gV1RGOjpGaWxlU3lzdGVtSW1wbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dURi93dGYvUGxh
dGZvcm1HVEsuY21ha2UKaW5kZXggNjczZjAyZDBkNTk2ODU0NWFjODdhOGE4ZTU3YjI3NzM0ZDcz
OTg5Yy4uN2ZlYzEyZGMyZmMzMTViYzUxNjhmMDJiM2JmNzY0NzBjMGQ5Y2JhZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dURi93dGYv
UGxhdGZvcm1HVEsuY21ha2UKQEAgLTIyLDYgKzIyLDcgQEAgbGlzdChBUFBFTkQgV1RGX1NPVVJD
RVMKICAgICBnZW5lcmljL01haW5UaHJlYWRHZW5lcmljLmNwcAogICAgIGdlbmVyaWMvV29ya1F1
ZXVlR2VuZXJpYy5jcHAKIAorICAgIGdsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCiAgICAgZ2xpYi9H
TGliVXRpbGl0aWVzLmNwcAogICAgIGdsaWIvR1JlZlB0ci5jcHAKICAgICBnbGliL1J1bkxvb3BH
TGliLmNwcApAQCAtNTUsNSArNTYsNiBAQCBsaXN0KEFQUEVORCBXVEZfTElCUkFSSUVTCiApCiAK
IGxpc3QoQVBQRU5EIFdURl9TWVNURU1fSU5DTFVERV9ESVJFQ1RPUklFUworICAgICR7R0lPX1VO
SVhfSU5DTFVERV9ESVJTfQogICAgICR7R0xJQl9JTkNMVURFX0RJUlN9CiApCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XVEYvd3RmL1BsYXRm
b3JtTWFjLmNtYWtlCmluZGV4IGZjMWU1N2I5Y2IyNmI2ZjJiNmFiYTYxNDNiZDE4YWViYmIxNmI1
MzQuLjBlM2UxNDE2MDkxMmI3ODYxNzczNDM1MGE5MjVkOTlkYmEyY2RhMDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XVEYvd3RmL1Bs
YXRmb3JtTWFjLmNtYWtlCkBAIC0zMiw2ICszMiw4IEBAIGxpc3QoQVBQRU5EIFdURl9QVUJMSUNf
SEVBREVSUwogICAgIHNwaS9kYXJ3aW4vWFBDU1BJLmgKICAgICBzcGkvZGFyd2luL2R5bGRTUEku
aAogCisgICAgc3BpL21hYy9NZXRhZGF0YVNQSS5oCisKICAgICB0ZXh0L2NmL1RleHRCcmVha0l0
ZXJhdG9yQ0YuaAogKQogCkBAIC00Miw2ICs0NCw3IEBAIGxpc3QoQVBQRU5EIFdURl9TT1VSQ0VT
CiAgICAgU2NoZWR1bGVQYWlyTWFjLm1tCiAKICAgICBjZi9DRlVSTEV4dHJhcy5jcHAKKyAgICBj
Zi9GaWxlU3lzdGVtQ0YuY3BwCiAgICAgY2YvTGFuZ3VhZ2VDRi5jcHAKICAgICBjZi9SdW5Mb29w
Q0YuY3BwCiAgICAgY2YvVVJMQ0YuY3BwCkBAIC00OSw2ICs1Miw3IEBAIGxpc3QoQVBQRU5EIFdU
Rl9TT1VSQ0VTCiAgICAgY29jb2EvQXV0b2RyYWluZWRQb29sLmNwcAogICAgIGNvY29hL0NQVVRp
bWVDb2NvYS5jcHAKICAgICBjb2NvYS9FbnRpdGxlbWVudHMubW0KKyAgICBjb2NvYS9GaWxlU3lz
dGVtQ29jb2EubW0KICAgICBjb2NvYS9NYWNoU2VuZFJpZ2h0LmNwcAogICAgIGNvY29hL01haW5U
aHJlYWRDb2NvYS5tbQogICAgIGNvY29hL01lbW9yeUZvb3RwcmludENvY29hLmNwcApAQCAtNTgs
NiArNjIsOSBAQCBsaXN0KEFQUEVORCBXVEZfU09VUkNFUwogICAgIGNvY29hL1dvcmtRdWV1ZUNv
Y29hLmNwcAogCiAgICAgbWFjL0RlcHJlY2F0ZWRTeW1ib2xzVXNlZEJ5U2FmYXJpLm1tCisgICAg
bWFjL0ZpbGVTeXN0ZW1NYWMubW0KKworICAgIHBvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKIAog
ICAgIHRleHQvY2YvQXRvbWljU3RyaW5nSW1wbENGLmNwcAogICAgIHRleHQvY2YvU3RyaW5nQ0Yu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtl
IGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1QbGF5U3RhdGlvbi5jbWFrZQppbmRleCBiOTdmZWM0
MGVkMzBiMTc3YjJmNTM1YjYyMTYwZWYxZWVlMmRlNTZlLi4zZTllNzVjOTI4YTZjOTQ2MDViNGJm
Y2FhN2ZiYjJiOWY0MmY4MzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVBs
YXlTdGF0aW9uLmNtYWtlCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtUGxheVN0YXRpb24u
Y21ha2UKQEAgLTUsNiArNSw4IEBAIGxpc3QoQVBQRU5EIFdURl9TT1VSQ0VTCiAgICAgZ2VuZXJp
Yy9SdW5Mb29wR2VuZXJpYy5jcHAKICAgICBnZW5lcmljL1dvcmtRdWV1ZUdlbmVyaWMuY3BwCiAK
KyAgICBwb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCisKICAgICB0ZXh0L3VuaXgvVGV4dEJyZWFr
SXRlcmF0b3JJbnRlcm5hbElDVVVuaXguY3BwCiAKICAgICB1bml4L0NQVVRpbWVVbml4LmNwcApk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1XUEUuY21ha2UgYi9Tb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybVdQRS5jbWFrZQppbmRleCA0NzNjZmQ2MDI2YjA2NTJjMmYwMmQyYjI4NTM5
MmIxZDgwMmYwYmJjLi4wODZhZGQzYWE5MTlmYzQ5MjM5ZDcxYzFjYzg2ODVjNWZjNzM5YmQ0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdQRS5jbWFrZQorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9QbGF0Zm9ybVdQRS5jbWFrZQpAQCAtMTYsNiArMTYsNyBAQCBsaXN0KEFQUEVORCBX
VEZfU09VUkNFUwogICAgIGdlbmVyaWMvTWFpblRocmVhZEdlbmVyaWMuY3BwCiAgICAgZ2VuZXJp
Yy9Xb3JrUXVldWVHZW5lcmljLmNwcAogCisgICAgZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKICAg
ICBnbGliL0dMaWJVdGlsaXRpZXMuY3BwCiAgICAgZ2xpYi9HUmVmUHRyLmNwcAogICAgIGdsaWIv
UnVuTG9vcEdMaWIuY3BwCkBAIC00MCw1ICs0MSw2IEBAIGxpc3QoQVBQRU5EIFdURl9MSUJSQVJJ
RVMKICkKIAogbGlzdChBUFBFTkQgV1RGX1NZU1RFTV9JTkNMVURFX0RJUkVDVE9SSUVTCisgICAg
JHtHSU9fVU5JWF9JTkNMVURFX0RJUlN9CiAgICAgJHtHTElCX0lOQ0xVREVfRElSU30KICkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV2luLmNtYWtlIGIvU291cmNlL1dURi93
dGYvUGxhdGZvcm1XaW4uY21ha2UKaW5kZXggMmI4YjVmODI3MGViNWYyNDY3NjA3MmRkMTI0NTc2
ZGE5MzAxZjBlYS4uYjZjMGFjNmY0ZGU1ZTA1ZjI3ZDRkOWFjMGZmYmQ1Y2M0MDk3YTZlMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1XaW4uY21ha2UKKysrIGIvU291cmNlL1dU
Ri93dGYvUGxhdGZvcm1XaW4uY21ha2UKQEAgLTEyLDE0ICsxMiwyMCBAQCBsaXN0KEFQUEVORCBX
VEZfU09VUkNFUwogCiAgICAgd2luL0NQVVRpbWVXaW4uY3BwCiAgICAgd2luL0RiZ0hlbHBlcldp
bi5jcHAKKyAgICB3aW4vRmlsZVN5c3RlbVdpbi5jcHAKICAgICB3aW4vTGFuZ3VhZ2VXaW4uY3Bw
CiAgICAgd2luL01haW5UaHJlYWRXaW4uY3BwCiAgICAgd2luL01lbW9yeUZvb3RwcmludFdpbi5j
cHAKICAgICB3aW4vTWVtb3J5UHJlc3N1cmVIYW5kbGVyV2luLmNwcAorICAgIHdpbi9QYXRoV2Fs
a2VyLmNwcAogICAgIHdpbi9SdW5Mb29wV2luLmNwcAogICAgIHdpbi9Xb3JrUXVldWVXaW4uY3Bw
CiApCiAKK2xpc3QoQVBQRU5EIFdURl9MSUJSQVJJRVMKKyAgICBzaGx3YXBpCispCisKIGlmIChV
U0VfQ0YpCiAgICAgbGlzdChBUFBFTkQgV1RGX1BVQkxJQ19IRUFERVJTCiAgICAgICAgIGNmL0NG
VVJMRXh0cmFzLmgKQEAgLTI5LDYgKzM1LDcgQEAgaWYgKFVTRV9DRikKICAgICApCiAgICAgbGlz
dChBUFBFTkQgV1RGX1NPVVJDRVMKICAgICAgICAgY2YvQ0ZVUkxFeHRyYXMuY3BwCisgICAgICAg
IGNmL0ZpbGVTeXN0ZW1DRi5jcHAKICAgICAgICAgY2YvVVJMQ0YuY3BwCiAKICAgICAgICAgdGV4
dC9jZi9BdG9taWNTdHJpbmdJbXBsQ0YuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9j
Zi9GaWxlU3lzdGVtQ0YuY3BwIGIvU291cmNlL1dURi93dGYvY2YvRmlsZVN5c3RlbUNGLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43MTJkNjVmY2FkMjk2YjM5NjNmNjBhNDQ5NGI2ZDdlOTJkNGFjNTBjCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvY2YvRmlsZVN5c3RlbUNGLmNwcApAQCAtMCww
ICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDExIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBu
YW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
CisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgor
CisjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvUmV0
YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV1RGIHsKKworQ1N0cmluZyBGaWxlU3lzdGVt
OjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZTdHJpbmcgPSBwYXRoLmNyZWF0ZUNGU3RyaW5nKCk7CisK
KyAgICBpZiAoIWNmU3RyaW5nKQorICAgICAgICByZXR1cm4gQ1N0cmluZygpOworCisgICAgQ0ZJ
bmRleCBzaXplID0gQ0ZTdHJpbmdHZXRNYXhpbXVtU2l6ZU9mRmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKGNmU3RyaW5nLmdldCgpKTsKKworICAgIFZlY3RvcjxjaGFyPiBidWZmZXIoc2l6ZSk7CisK
KyAgICBpZiAoIUNGU3RyaW5nR2V0RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNmU3RyaW5nLmdl
dCgpLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKSkgeworICAgICAgICBMT0dfRVJST1Io
IkZhaWxlZCB0byBnZXQgZmlsZXN5c3RlbSByZXByZXNlbnRhdGlvbiB0byBjcmVhdGUgQ1N0cmlu
ZyBmcm9tIGNmU3RyaW5nIik7CisgICAgICAgIHJldHVybiBDU3RyaW5nKCk7CisgICAgfQorCisg
ICAgcmV0dXJuIENTdHJpbmcoYnVmZmVyLmRhdGEoKSwgc3RybGVuKGJ1ZmZlci5kYXRhKCkpKTsK
K30KKworU3RyaW5nIEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oY29uc3QgY2hhciogZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKQoreworICAgIHJldHVybiBh
ZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24pKS5nZXQoKTsKK30KKworUmV0
YWluUHRyPENGVVJMUmVmPiBGaWxlU3lzdGVtOjpwYXRoQXNVUkwoY29uc3QgU3RyaW5nJiBwYXRo
KQoreworICAgIENGVVJMUGF0aFN0eWxlIHBhdGhTdHlsZTsKKyNpZiBQTEFURk9STShXSU4pCisg
ICAgcGF0aFN0eWxlID0ga0NGVVJMV2luZG93c1BhdGhTdHlsZTsKKyNlbHNlCisgICAgcGF0aFN0
eWxlID0ga0NGVVJMUE9TSVhQYXRoU3R5bGU7CisjZW5kaWYKKyAgICByZXR1cm4gYWRvcHRDRihD
RlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aCgwLCBwYXRoLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0
KCksIHBhdGhTdHlsZSwgRkFMU0UpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9GaWxlU3lzdGVtQ29jb2EubW0gYi9Tb3VyY2UvV1RG
L3d0Zi9jb2NvYS9GaWxlU3lzdGVtQ29jb2EubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTEyMjIwMDY5MmI5OWE0
MWQ4ZWNlOWI2ZTZjMmU4ZjExMjA1OGM2NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYv
d3RmL2NvY29hL0ZpbGVTeXN0ZW1Db2NvYS5tbQpAQCAtMCwwICsxLDE0MyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwNy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJB
cHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZp
Zy5oIgorI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KKworQGludGVyZmFjZSBXVEZXZWJGaWxl
TWFuYWdlckRlbGVnYXRlIDogTlNPYmplY3QgPE5TRmlsZU1hbmFnZXJEZWxlZ2F0ZT4KK0BlbmQK
KworQGltcGxlbWVudGF0aW9uIFdURldlYkZpbGVNYW5hZ2VyRGVsZWdhdGUKKworLSAoQk9PTClm
aWxlTWFuYWdlcjooTlNGaWxlTWFuYWdlciAqKWZpbGVNYW5hZ2VyIHNob3VsZFByb2NlZWRBZnRl
ckVycm9yOihOU0Vycm9yICopZXJyb3IgbW92aW5nSXRlbUF0VVJMOihOU1VSTCAqKXNyY1VSTCB0
b1VSTDooTlNVUkwgKilkc3RVUkwKK3sKKyAgICBVTlVTRURfUEFSQU0oZmlsZU1hbmFnZXIpOwor
ICAgIFVOVVNFRF9QQVJBTShzcmNVUkwpOworICAgIFVOVVNFRF9QQVJBTShkc3RVUkwpOworICAg
IHJldHVybiBlcnJvci5jb2RlID09IE5TRmlsZVdyaXRlRmlsZUV4aXN0c0Vycm9yOworfQorCitA
ZW5kCisKK25hbWVzcGFjZSBXVEYgeworCituYW1lc3BhY2UgRmlsZVN5c3RlbUltcGwgeworCitT
dHJpbmcgaG9tZURpcmVjdG9yeVBhdGgoKQoreworICAgIHJldHVybiBOU0hvbWVEaXJlY3Rvcnko
KTsKK30KKworU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQ
bGF0Zm9ybUZpbGVIYW5kbGUmIHBsYXRmb3JtRmlsZUhhbmRsZSkKK3sKKyAgICBwbGF0Zm9ybUZp
bGVIYW5kbGUgPSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOworCisgICAgVmVjdG9yPGNoYXI+
IHRlbXBvcmFyeUZpbGVQYXRoKFBBVEhfTUFYKTsKKyAgICBpZiAoIWNvbmZzdHIoX0NTX0RBUldJ
Tl9VU0VSX1RFTVBfRElSLCB0ZW1wb3JhcnlGaWxlUGF0aC5kYXRhKCksIHRlbXBvcmFyeUZpbGVQ
YXRoLnNpemUoKSkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIC8vIFNocmluayB0
aGUgdmVjdG9yLgorICAgIHRlbXBvcmFyeUZpbGVQYXRoLnNocmluayhzdHJsZW4odGVtcG9yYXJ5
RmlsZVBhdGguZGF0YSgpKSk7CisKKyAgICAvLyBGSVhNRTogQ2hhbmdlIHRvIGEgcnVudGltZSBh
c3NlcnRpb24gdGhhdCB0aGUgcGF0aCBlbmRzIHdpdGggYSBzbGFzaCBvbmNlIDxyZGFyOi8vcHJv
YmxlbS8yMzU3OTA3Nz4gaXMKKyAgICAvLyBmaXhlZCBpbiBhbGwgaU9TIFNpbXVsYXRvciB2ZXJz
aW9ucyB0aGF0IHdlIHVzZS4KKyAgICBpZiAodGVtcG9yYXJ5RmlsZVBhdGgubGFzdCgpICE9ICcv
JykKKyAgICAgICAgdGVtcG9yYXJ5RmlsZVBhdGguYXBwZW5kKCcvJyk7CisKKyAgICAvLyBBcHBl
bmQgdGhlIGZpbGUgbmFtZS4KKyAgICBDU3RyaW5nIHByZWZpeFV0ZjggPSBwcmVmaXgudXRmOCgp
OworICAgIHRlbXBvcmFyeUZpbGVQYXRoLmFwcGVuZChwcmVmaXhVdGY4LmRhdGEoKSwgcHJlZml4
VXRmOC5sZW5ndGgoKSk7CisgICAgdGVtcG9yYXJ5RmlsZVBhdGguYXBwZW5kKCJYWFhYWFgiLCA2
KTsKKyAgICB0ZW1wb3JhcnlGaWxlUGF0aC5hcHBlbmQoJ1wwJyk7CisKKyAgICBwbGF0Zm9ybUZp
bGVIYW5kbGUgPSBta3N0ZW1wKHRlbXBvcmFyeUZpbGVQYXRoLmRhdGEoKSk7CisgICAgaWYgKHBs
YXRmb3JtRmlsZUhhbmRsZSA9PSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQorICAgICAgICBy
ZXR1cm4gU3RyaW5nKCk7CisKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOCh0ZW1wb3JhcnlG
aWxlUGF0aC5kYXRhKCkpOworfQorCitib29sIG1vdmVGaWxlKGNvbnN0IFN0cmluZyYgb2xkUGF0
aCwgY29uc3QgU3RyaW5nJiBuZXdQYXRoKQoreworICAgIC8vIE92ZXJ3cml0ZSBleGlzdGluZyBm
aWxlcy4KKyAgICBhdXRvIG1hbmFnZXIgPSBhZG9wdE5TKFtbTlNGaWxlTWFuYWdlciBhbGxvY10g
aW5pdF0pOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbV1RGV2ViRmlsZU1hbmFnZXJE
ZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFttYW5hZ2VyIHNldERlbGVnYXRlOmRlbGVnYXRl
LmdldCgpXTsKKworICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOworICAgIGJvb2wgc3VjY2VzcyA9
IFttYW5hZ2VyIG1vdmVJdGVtQXRVUkw6W05TVVJMIGZpbGVVUkxXaXRoUGF0aDpvbGRQYXRoXSB0
b1VSTDpbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOm5ld1BhdGhdIGVycm9yOiZlcnJvcl07CisgICAg
aWYgKCFzdWNjZXNzKQorICAgICAgICBOU0xvZyhAIkVycm9yIGluIG1vdmVGaWxlOiAlQCIsIGVy
cm9yKTsKKyAgICByZXR1cm4gc3VjY2VzczsKK30KKworYm9vbCBnZXRWb2x1bWVGcmVlU3BhY2Uo
Y29uc3QgU3RyaW5nJiBwYXRoLCB1aW50NjRfdCYgZnJlZVNwYWNlKQoreworICAgIE5TRGljdGlv
bmFyeSAqZmlsZVN5c3RlbUF0dHJpYnV0ZXNEaWN0aW9uYXJ5ID0gW1tOU0ZpbGVNYW5hZ2VyIGRl
ZmF1bHRNYW5hZ2VyXSBhdHRyaWJ1dGVzT2ZGaWxlU3lzdGVtRm9yUGF0aDooTlNTdHJpbmcgKilw
YXRoIGVycm9yOk5VTExdOworICAgIGlmICghZmlsZVN5c3RlbUF0dHJpYnV0ZXNEaWN0aW9uYXJ5
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgZnJlZVNwYWNlID0gW1tmaWxlU3lzdGVtQXR0
cmlidXRlc0RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5Ok5TRmlsZVN5c3RlbUZyZWVTaXplXSB1bnNp
Z25lZExvbmdMb25nVmFsdWVdOworICAgIHJldHVybiB0cnVlOworfQorCitOU1N0cmluZyAqY3Jl
YXRlVGVtcG9yYXJ5RGlyZWN0b3J5KE5TU3RyaW5nICpkaXJlY3RvcnlQcmVmaXgpCit7CisgICAg
TlNTdHJpbmcgKnRlbXBEaXJlY3RvcnkgPSBOU1RlbXBvcmFyeURpcmVjdG9yeSgpOworICAgIGlm
ICghdGVtcERpcmVjdG9yeSB8fCAhW3RlbXBEaXJlY3RvcnkgbGVuZ3RoXSkKKyAgICAgICAgcmV0
dXJuIG5pbDsKKworICAgIGlmICghZGlyZWN0b3J5UHJlZml4IHx8ICFbZGlyZWN0b3J5UHJlZml4
IGxlbmd0aF0pCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBOU1N0cmluZyAqdGVtcERpcmVj
dG9yeUNvbXBvbmVudCA9IFtkaXJlY3RvcnlQcmVmaXggc3RyaW5nQnlBcHBlbmRpbmdTdHJpbmc6
QCItWFhYWFhYWFgiXTsKKyAgICBjb25zdCBjaGFyKiB0ZW1wRGlyZWN0b3J5Q1N0cmluZyA9IFtb
dGVtcERpcmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6dGVtcERpcmVjdG9y
eUNvbXBvbmVudF0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uXTsKKyAgICBpZiAoIXRlbXBEaXJl
Y3RvcnlDU3RyaW5nKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgY29uc3Qgc2l6ZV90IGxl
bmd0aCA9IHN0cmxlbih0ZW1wRGlyZWN0b3J5Q1N0cmluZyk7CisgICAgQVNTRVJUKGxlbmd0aCA8
PSBNQVhQQVRITEVOKTsKKyAgICBpZiAobGVuZ3RoID4gTUFYUEFUSExFTikKKyAgICAgICAgcmV0
dXJuIG5pbDsKKworICAgIGNvbnN0IHNpemVfdCBsZW5ndGhQbHVzTnVsbFRlcm1pbmF0b3IgPSBs
ZW5ndGggKyAxOworICAgIFZlY3RvcjxjaGFyLCBNQVhQQVRITEVOICsgMT4gcGF0aChsZW5ndGhQ
bHVzTnVsbFRlcm1pbmF0b3IpOworICAgIG1lbWNweShwYXRoLmRhdGEoKSwgdGVtcERpcmVjdG9y
eUNTdHJpbmcsIGxlbmd0aFBsdXNOdWxsVGVybWluYXRvcik7CisKKyAgICBpZiAoIW1rZHRlbXAo
cGF0aC5kYXRhKCkpKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgcmV0dXJuIFtbTlNGaWxl
TWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gc3RyaW5nV2l0aEZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bjpwYXRoLmRhdGEoKSBsZW5ndGg6bGVuZ3RoXTsKK30KKworYm9vbCBkZWxldGVOb25FbXB0eURp
cmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgcmV0dXJuIFtbTlNGaWxlTWFuYWdl
ciBkZWZhdWx0TWFuYWdlcl0gcmVtb3ZlSXRlbUF0UGF0aDpwYXRoIGVycm9yOm5pbF07Cit9CisK
K30gLy8gbmFtZXNwYWNlIEZpbGVTeXN0ZW1JbXBsCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwIGIvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzNlYzk5YTNkMWI0OTFl
YjE5NjMxZTAwNThhNDFkMWE3NTE2ZmU1YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYv
d3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCkBAIC0wLDAgKzEsNDY5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA3LCAyMDA5IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhLCBMdGQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAy
MDEwIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KKworI2luY2x1ZGUgPGdp
by9nZmlsZWRlc2NyaXB0b3JiYXNlZC5oPgorI2luY2x1ZGUgPGdpby9naW8uaD4KKyNpbmNsdWRl
IDxnbGliLmg+CisjaW5jbHVkZSA8Z2xpYi9nc3RkaW8uaD4KKyNpbmNsdWRlIDxzeXMvZmlsZS5o
PgorI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVNZXRhZGF0
YS5oPgorI2luY2x1ZGUgPHd0Zi9VVUlELmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR0xpYlV0aWxp
dGllcy5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvZ2xp
Yi9HVW5pcXVlUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KKworbmFtZXNwYWNlIFdURiB7CisKK25hbWVzcGFjZSBGaWxlU3lzdGVtSW1wbCB7CisKKy8q
IE9uIGxpbnV4IGZpbGUgbmFtZXMgYXJlIGp1c3QgcmF3IGJ5dGVzLCBzbyBhbHNvIHN0cmluZ3Mg
dGhhdCBjYW5ub3QgYmUgZW5jb2RlZCBpbiBhbnkgd2F5CisgKiBhcmUgdmFsaWQgZmlsZSBuYW1l
cy4gVGhpcyBtZWFuIHRoYXQgd2UgY2Fubm90IGp1c3Qgc3RvcmUgYSBmaWxlIG5hbWUgYXMtaXMg
aW4gYSBTdHJpbmcKKyAqIGJ1dCB3ZSBoYXZlIHRvIGVzY2FwZSBpdC4KKyAqIE9uIFdpbmRvd3Mg
dGhlIEdMaWIgZmlsZSBuYW1lIGVuY29kaW5nIGlzIGFsd2F5cyBVVEYtOCBzbyB3ZSBjYW4gb3B0
aW1pemUgdGhpcyBjYXNlLiAqLworU3RyaW5nIHN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oY29uc3QgY2hhciogZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKQoreworICAgIGlmICgh
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyNp
ZiBPUyhXSU5ET1dTKQorICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbik7CisjZWxzZQorICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGVzY2FwZWRTdHJpbmco
Z191cmlfZXNjYXBlX3N0cmluZyhmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24sICIvOiIsIEZBTFNF
KSk7CisgICAgcmV0dXJuIGVzY2FwZWRTdHJpbmcuZ2V0KCk7CisjZW5kaWYKK30KKworc3RhdGlj
IEdVbmlxdWVQdHI8Y2hhcj4gdW5lc2NhcGVkRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBwYXRoKQor
eworICAgIGlmIChwYXRoLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisjaWYg
T1MoV0lORE9XUykKKyAgICByZXR1cm4gR1VuaXF1ZVB0cjxjaGFyPihnX3N0cmR1cChwYXRoLnV0
ZjgoKS5kYXRhKCkpKTsKKyNlbHNlCisgICAgcmV0dXJuIEdVbmlxdWVQdHI8Y2hhcj4oZ191cmlf
dW5lc2NhcGVfc3RyaW5nKHBhdGgudXRmOCgpLmRhdGEoKSwgbnVsbHB0cikpOworI2VuZGlmCit9
CisKK0NTdHJpbmcgZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCkK
K3sKKyNpZiBPUyhXSU5ET1dTKQorICAgIHJldHVybiBwYXRoLnV0ZjgoKTsKKyNlbHNlCisgICAg
R1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShwYXRoKTsKKyAg
ICByZXR1cm4gZmlsZW5hbWUuZ2V0KCk7CisjZW5kaWYKK30KKworLy8gQ29udmVydHMgYSBzdHJp
bmcgdG8gc29tZXRoaW5nIHN1aXRhYmxlIHRvIGJlIGRpc3BsYXllZCB0byB0aGUgdXNlci4KK1N0
cmluZyBmaWxlbmFtZUZvckRpc3BsYXkoY29uc3QgU3RyaW5nJiBzdHJpbmcpCit7CisjaWYgT1Mo
V0lORE9XUykKKyAgICByZXR1cm4gc3RyaW5nOworI2Vsc2UKKyAgICBHVW5pcXVlUHRyPGdjaGFy
PiBmaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHN0cmluZyk7CisgICAgaWYgKCFmaWxlbmFt
ZSkKKyAgICAgICAgcmV0dXJuIHN0cmluZzsKKworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGRpc3Bs
YXkoZ19maWxlbmFtZV90b191dGY4KGZpbGVuYW1lLmdldCgpLCAtMSwgbnVsbHB0ciwgbnVsbHB0
ciwgbnVsbHB0cikpOworICAgIGlmICghZGlzcGxheSkKKyAgICAgICAgcmV0dXJuIHN0cmluZzsK
KworICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGRpc3BsYXkuZ2V0KCkpOworI2VuZGlmCit9
CisKK2Jvb2wgZmlsZUV4aXN0cyhjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgR1VuaXF1ZVB0
cjxnY2hhcj4gZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShwYXRoKTsKKyAgICByZXR1cm4g
ZmlsZW5hbWUgPyBnX2ZpbGVfdGVzdChmaWxlbmFtZS5nZXQoKSwgR19GSUxFX1RFU1RfRVhJU1RT
KSA6IGZhbHNlOworfQorCitib29sIGRlbGV0ZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQorewor
ICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUocGF0aCk7
CisgICAgcmV0dXJuIGZpbGVuYW1lID8gZ19yZW1vdmUoZmlsZW5hbWUuZ2V0KCkpICE9IC0xIDog
ZmFsc2U7Cit9CisKK2Jvb2wgZGVsZXRlRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRo
KQoreworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUo
cGF0aCk7CisgICAgcmV0dXJuIGZpbGVuYW1lID8gZ19ybWRpcihmaWxlbmFtZS5nZXQoKSkgIT0g
LTEgOiBmYWxzZTsKK30KKworc3RhdGljIGJvb2wgZ2V0RmlsZVN0YXQoY29uc3QgU3RyaW5nJiBw
YXRoLCBHU3RhdEJ1Ziogc3RhdEJ1ZmZlcikKK3sKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxl
bmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGgpOworICAgIGlmICghZmlsZW5hbWUpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBnX3N0YXQoZmlsZW5hbWUuZ2V0KCksIHN0
YXRCdWZmZXIpICE9IC0xOworfQorCitzdGF0aWMgYm9vbCBnZXRGaWxlTFN0YXQoY29uc3QgU3Ry
aW5nJiBwYXRoLCBHU3RhdEJ1Ziogc3RhdEJ1ZmZlcikKK3sKKyAgICBHVW5pcXVlUHRyPGdjaGFy
PiBmaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGgpOworICAgIGlmICghZmlsZW5hbWUp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBnX2xzdGF0KGZpbGVuYW1lLmdl
dCgpLCBzdGF0QnVmZmVyKSAhPSAtMTsKK30KKworYm9vbCBnZXRGaWxlU2l6ZShjb25zdCBTdHJp
bmcmIHBhdGgsIGxvbmcgbG9uZyYgcmVzdWx0U2l6ZSkKK3sKKyAgICBHU3RhdEJ1ZiBzdGF0UmVz
dWx0OworICAgIGlmICghZ2V0RmlsZVN0YXQocGF0aCwgJnN0YXRSZXN1bHQpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICByZXN1bHRTaXplID0gc3RhdFJlc3VsdC5zdF9zaXplOworICAg
IHJldHVybiB0cnVlOworfQorCitib29sIGdldEZpbGVTaXplKFBsYXRmb3JtRmlsZUhhbmRsZSBo
YW5kbGUsIGxvbmcgbG9uZyYgcmVzdWx0U2l6ZSkKK3sKKyAgICBhdXRvIGluZm8gPSBnX2ZpbGVf
aW9fc3RyZWFtX3F1ZXJ5X2luZm8oaGFuZGxlLCBHX0ZJTEVfQVRUUklCVVRFX1NUQU5EQVJEX1NJ
WkUsIG51bGxwdHIsIG51bGxwdHIpOworICAgIGlmICghaW5mbykKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgcmVzdWx0U2l6ZSA9IGdfZmlsZV9pbmZvX2dldF9zaXplKGluZm8pOworICAg
IHJldHVybiB0cnVlOworfQorCitPcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZUNyZWF0aW9uVGlt
ZShjb25zdCBTdHJpbmcmKQoreworICAgIC8vIEZJWE1FOiBJcyB0aGVyZSBhIHdheSB0byByZXRy
aWV2ZSBmaWxlIGNyZWF0aW9uIHRpbWUgd2l0aCBHdGsgb24gcGxhdGZvcm1zIHRoYXQgc3VwcG9y
dCBpdD8KKyAgICByZXR1cm4gV1RGOjpudWxsb3B0OworfQorCitPcHRpb25hbDxXYWxsVGltZT4g
Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIEdTdGF0
QnVmIHN0YXRSZXN1bHQ7CisgICAgaWYgKCFnZXRGaWxlU3RhdChwYXRoLCAmc3RhdFJlc3VsdCkp
CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gV2FsbFRpbWU6OmZy
b21SYXdTZWNvbmRzKHN0YXRSZXN1bHQuc3RfbXRpbWUpOworfQorCitzdGF0aWMgRmlsZU1ldGFk
YXRhOjpUeXBlIHRvRmlsZU1ldGF0YVR5cGUoR1N0YXRCdWYgc3RhdFJlc3VsdCkKK3sKKyAgICBp
ZiAoU19JU0RJUihzdGF0UmVzdWx0LnN0X21vZGUpKQorICAgICAgICByZXR1cm4gRmlsZU1ldGFk
YXRhOjpUeXBlOjpEaXJlY3Rvcnk7CisgICAgaWYgKFNfSVNMTksoc3RhdFJlc3VsdC5zdF9tb2Rl
KSkKKyAgICAgICAgcmV0dXJuIEZpbGVNZXRhZGF0YTo6VHlwZTo6U3ltYm9saWNMaW5rOworICAg
IHJldHVybiBGaWxlTWV0YWRhdGE6OlR5cGU6OkZpbGU7Cit9CisKK3N0YXRpYyBPcHRpb25hbDxG
aWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YVVzaW5nRnVuY3Rpb24oY29uc3QgU3RyaW5nJiBwYXRo
LCBib29sICgqc3RhdEZ1bmMpKGNvbnN0IFN0cmluZyYsIEdTdGF0QnVmKikpCit7CisgICAgR1N0
YXRCdWYgc3RhdFJlc3VsdDsKKyAgICBpZiAoIXN0YXRGdW5jKHBhdGgsICZzdGF0UmVzdWx0KSkK
KyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIFN0cmluZyBmaWxlbmFtZSA9IHBh
dGhHZXRGaWxlTmFtZShwYXRoKTsKKyAgICBib29sIGlzSGlkZGVuID0gIWZpbGVuYW1lLmlzRW1w
dHkoKSAmJiBmaWxlbmFtZVswXSA9PSAnLic7CisKKyAgICByZXR1cm4gRmlsZU1ldGFkYXRhIHsK
KyAgICAgICAgV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKHN0YXRSZXN1bHQuc3RfbXRpbWUpLAor
ICAgICAgICBzdGF0UmVzdWx0LnN0X3NpemUsCisgICAgICAgIGlzSGlkZGVuLAorICAgICAgICB0
b0ZpbGVNZXRhdGFUeXBlKHN0YXRSZXN1bHQpCisgICAgfTsKK30KKworT3B0aW9uYWw8RmlsZU1l
dGFkYXRhPiBmaWxlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIHJldHVybiBm
aWxlTWV0YWRhdGFVc2luZ0Z1bmN0aW9uKHBhdGgsICZnZXRGaWxlTFN0YXQpOworfQorCitPcHRp
b25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YUZvbGxvd2luZ1N5bWxpbmtzKGNvbnN0IFN0
cmluZyYgcGF0aCkKK3sKKyAgICByZXR1cm4gZmlsZU1ldGFkYXRhVXNpbmdGdW5jdGlvbihwYXRo
LCAmZ2V0RmlsZVN0YXQpOworfQorCitTdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNv
bnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb21wb25lbnQpCit7CisgICAgaWYgKHBh
dGguZW5kc1dpdGgoR19ESVJfU0VQQVJBVE9SX1MpKQorICAgICAgICByZXR1cm4gcGF0aCArIGNv
bXBvbmVudDsKKyAgICByZXR1cm4gcGF0aCArIEdfRElSX1NFUEFSQVRPUl9TICsgY29tcG9uZW50
OworfQorCitTdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhTdHJpbmdWaWV3IHBhdGgs
IGNvbnN0IFZlY3RvcjxTdHJpbmdWaWV3PiYgY29tcG9uZW50cykKK3sKKyAgICBTdHJpbmdCdWls
ZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQocGF0aCk7CisgICAgZm9yIChhdXRvJiBj
b21wb25lbnQgOiBjb21wb25lbnRzKSB7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKEdfRElSX1NF
UEFSQVRPUl9TKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoY29tcG9uZW50KTsKKyAgICB9Cisg
ICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKK30KKworYm9vbCBtYWtlQWxsRGlyZWN0b3Jp
ZXMoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1l
ID0gdW5lc2NhcGVkRmlsZW5hbWUocGF0aCk7CisgICAgcmV0dXJuIGZpbGVuYW1lID8gZ19ta2Rp
cl93aXRoX3BhcmVudHMoZmlsZW5hbWUuZ2V0KCksIFNfSVJXWFUpICE9IC0xIDogZmFsc2U7Cit9
CisKK1N0cmluZyBob21lRGlyZWN0b3J5UGF0aCgpCit7CisgICAgcmV0dXJuIHN0cmluZ0Zyb21G
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfaG9tZV9kaXIoKSk7Cit9CisKK2Jvb2wgY3Jl
YXRlU3ltYm9saWNMaW5rKGNvbnN0IFN0cmluZyYgdGFyZ2V0UGF0aCwgY29uc3QgU3RyaW5nJiBz
eW1ib2xpY0xpbmtQYXRoKQoreworICAgIENTdHJpbmcgdGFyZ2V0UGF0aEZTUmVwID0gZmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKHRhcmdldFBhdGgpOworICAgIGlmICghdGFyZ2V0UGF0aEZTUmVw
LmRhdGEoKSB8fCB0YXJnZXRQYXRoRlNSZXAuZGF0YSgpWzBdID09ICdcMCcpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIENTdHJpbmcgc3ltYm9saWNMaW5rUGF0aEZTUmVwID0gZmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKHN5bWJvbGljTGlua1BhdGgpOworICAgIGlmICghc3ltYm9saWNM
aW5rUGF0aEZTUmVwLmRhdGEoKSB8fCBzeW1ib2xpY0xpbmtQYXRoRlNSZXAuZGF0YSgpWzBdID09
ICdcMCcpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiAhc3ltbGluayh0YXJn
ZXRQYXRoRlNSZXAuZGF0YSgpLCBzeW1ib2xpY0xpbmtQYXRoRlNSZXAuZGF0YSgpKTsKK30KKwor
U3RyaW5nIHBhdGhHZXRGaWxlTmFtZShjb25zdCBTdHJpbmcmIHBhdGhOYW1lKQoreworICAgIEdV
bmlxdWVQdHI8Z2NoYXI+IHRtcEZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUocGF0aE5hbWUp
OworICAgIGlmICghdG1wRmlsZW5hbWUpCisgICAgICAgIHJldHVybiBwYXRoTmFtZTsKKworICAg
IEdVbmlxdWVQdHI8Z2NoYXI+IGJhc2VOYW1lKGdfcGF0aF9nZXRfYmFzZW5hbWUodG1wRmlsZW5h
bWUuZ2V0KCkpKTsKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChiYXNlTmFtZS5nZXQoKSk7
Cit9CisKK2Jvb2wgZ2V0Vm9sdW1lRnJlZVNwYWNlKGNvbnN0IFN0cmluZyYgcGF0aCwgdWludDY0
X3QmIGZyZWVTcGFjZSkKK3sKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZSA9IHVuZXNj
YXBlZEZpbGVuYW1lKHBhdGgpOworICAgIGlmICghZmlsZW5hbWUpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIEdSZWZQdHI8R0ZpbGU+IGZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19m
b3JfcGF0aChmaWxlbmFtZS5nZXQoKSkpOworICAgIEdSZWZQdHI8R0ZpbGVJbmZvPiBmaWxlSW5m
byA9IGFkb3B0R1JlZihnX2ZpbGVfcXVlcnlfZmlsZXN5c3RlbV9pbmZvKGZpbGUuZ2V0KCksIEdf
RklMRV9BVFRSSUJVVEVfRklMRVNZU1RFTV9GUkVFLCAwLCAwKSk7CisgICAgaWYgKCFmaWxlSW5m
bykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZnJlZVNwYWNlID0gZ19maWxlX2luZm9f
Z2V0X2F0dHJpYnV0ZV91aW50NjQoZmlsZUluZm8uZ2V0KCksIEdfRklMRV9BVFRSSUJVVEVfRklM
RVNZU1RFTV9GUkVFKTsKKyAgICByZXR1cm4gISFmcmVlU3BhY2U7Cit9CisKK1N0cmluZyBkaXJl
Y3RvcnlOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBm
aWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGgpOworICAgIGlmICghZmlsZW5hbWUpCisg
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIEdVbmlxdWVQdHI8Y2hhcj4gZGlybmFtZShn
X3BhdGhfZ2V0X2Rpcm5hbWUoZmlsZW5hbWUuZ2V0KCkpKTsKKyAgICByZXR1cm4gU3RyaW5nOjpm
cm9tVVRGOChkaXJuYW1lLmdldCgpKTsKK30KKworVmVjdG9yPFN0cmluZz4gbGlzdERpcmVjdG9y
eShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgZmlsdGVyKQoreworICAgIFZlY3Rv
cjxTdHJpbmc+IGVudHJpZXM7CisKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZSA9IHVu
ZXNjYXBlZEZpbGVuYW1lKHBhdGgpOworICAgIGlmICghZmlsZW5hbWUpCisgICAgICAgIHJldHVy
biBlbnRyaWVzOworCisgICAgR1VuaXF1ZVB0cjxHRGlyPiBkaXIoZ19kaXJfb3BlbihmaWxlbmFt
ZS5nZXQoKSwgMCwgbnVsbHB0cikpOworICAgIGlmICghZGlyKQorICAgICAgICByZXR1cm4gZW50
cmllczsKKworICAgIEdVbmlxdWVQdHI8R1BhdHRlcm5TcGVjPiBwc3BlYyhnX3BhdHRlcm5fc3Bl
Y19uZXcoKGZpbHRlci51dGY4KCkpLmRhdGEoKSkpOworICAgIHdoaWxlIChjb25zdCBjaGFyKiBu
YW1lID0gZ19kaXJfcmVhZF9uYW1lKGRpci5nZXQoKSkpIHsKKyAgICAgICAgaWYgKCFnX3BhdHRl
cm5fbWF0Y2hfc3RyaW5nKHBzcGVjLmdldCgpLCBuYW1lKSkKKyAgICAgICAgICAgIGNvbnRpbnVl
OworCisgICAgICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGVudHJ5KGdfYnVpbGRfZmlsZW5hbWUoZmls
ZW5hbWUuZ2V0KCksIG5hbWUsIG51bGxwdHIpKTsKKyAgICAgICAgZW50cmllcy5hcHBlbmQoc3Ry
aW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihlbnRyeS5nZXQoKSkpOworICAgIH0KKwor
ICAgIHJldHVybiBlbnRyaWVzOworfQorCitTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3Qg
U3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKQoreworICAgIEdVbmlx
dWVQdHI8Z2NoYXI+IGZpbGVuYW1lKGdfc3RyZHVwX3ByaW50ZigiJXMlcyIsIHByZWZpeC51dGY4
KCkuZGF0YSgpLCBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkudXRmOCgpLmRhdGEoKSkpOwor
ICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHRlbXBQYXRoKGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdG1w
X2RpcigpLCBmaWxlbmFtZS5nZXQoKSwgTlVMTCkpOworICAgIEdSZWZQdHI8R0ZpbGU+IGZpbGUg
PSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0aCh0ZW1wUGF0aC5nZXQoKSkpOworCisgICAg
aGFuZGxlID0gZ19maWxlX2NyZWF0ZV9yZWFkd3JpdGUoZmlsZS5nZXQoKSwgR19GSUxFX0NSRUFU
RV9OT05FLCAwLCAwKTsKKyAgICBpZiAoIWlzSGFuZGxlVmFsaWQoaGFuZGxlKSkKKyAgICAgICAg
cmV0dXJuIFN0cmluZygpOworICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KHRlbXBQYXRoLmdl
dCgpKTsKK30KKworUGxhdGZvcm1GaWxlSGFuZGxlIG9wZW5GaWxlKGNvbnN0IFN0cmluZyYgcGF0
aCwgRmlsZU9wZW5Nb2RlIG1vZGUpCit7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUg
PSB1bmVzY2FwZWRGaWxlbmFtZShwYXRoKTsKKyAgICBpZiAoIWZpbGVuYW1lKQorICAgICAgICBy
ZXR1cm4gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKKworICAgIEdSZWZQdHI8R0ZpbGU+IGZp
bGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0aChmaWxlbmFtZS5nZXQoKSkpOworICAg
IEdGaWxlSU9TdHJlYW0qIGlvU3RyZWFtID0gMDsKKyAgICBpZiAobW9kZSA9PSBGaWxlT3Blbk1v
ZGU6OlJlYWQpCisgICAgICAgIGlvU3RyZWFtID0gZ19maWxlX29wZW5fcmVhZHdyaXRlKGZpbGUu
Z2V0KCksIDAsIDApOworICAgIGVsc2UgaWYgKG1vZGUgPT0gRmlsZU9wZW5Nb2RlOjpXcml0ZSkg
eworICAgICAgICBpZiAoZ19maWxlX3Rlc3QoZmlsZW5hbWUuZ2V0KCksIHN0YXRpY19jYXN0PEdG
aWxlVGVzdD4oR19GSUxFX1RFU1RfRVhJU1RTIHwgR19GSUxFX1RFU1RfSVNfUkVHVUxBUikpKQor
ICAgICAgICAgICAgaW9TdHJlYW0gPSBnX2ZpbGVfb3Blbl9yZWFkd3JpdGUoZmlsZS5nZXQoKSwg
MCwgMCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGlvU3RyZWFtID0gZ19maWxlX2NyZWF0
ZV9yZWFkd3JpdGUoZmlsZS5nZXQoKSwgR19GSUxFX0NSRUFURV9OT05FLCAwLCAwKTsKKyAgICB9
CisKKyAgICByZXR1cm4gaW9TdHJlYW07Cit9CisKK3ZvaWQgY2xvc2VGaWxlKFBsYXRmb3JtRmls
ZUhhbmRsZSYgaGFuZGxlKQoreworICAgIGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBnX2lvX3N0cmVhbV9jbG9zZShHX0lPX1NUUkVBTShoYW5kbGUp
LCAwLCAwKTsKKyAgICBnX29iamVjdF91bnJlZihoYW5kbGUpOworICAgIGhhbmRsZSA9IGludmFs
aWRQbGF0Zm9ybUZpbGVIYW5kbGU7Cit9CisKK2xvbmcgbG9uZyBzZWVrRmlsZShQbGF0Zm9ybUZp
bGVIYW5kbGUgaGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0LCBGaWxlU2Vla09yaWdpbiBvcmlnaW4p
Cit7CisgICAgR1NlZWtUeXBlIHNlZWtUeXBlID0gR19TRUVLX1NFVDsKKyAgICBzd2l0Y2ggKG9y
aWdpbikgeworICAgIGNhc2UgRmlsZVNlZWtPcmlnaW46OkJlZ2lubmluZzoKKyAgICAgICAgc2Vl
a1R5cGUgPSBHX1NFRUtfU0VUOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZpbGVTZWVrT3Jp
Z2luOjpDdXJyZW50OgorICAgICAgICBzZWVrVHlwZSA9IEdfU0VFS19DVVI7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgRmlsZVNlZWtPcmlnaW46OkVuZDoKKyAgICAgICAgc2Vla1R5cGUgPSBH
X1NFRUtfRU5EOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICB9CisKKyAgICBpZiAoIWdfc2Vla2FibGVfc2VlayhHX1NFRUtB
QkxFKGdfaW9fc3RyZWFtX2dldF9pbnB1dF9zdHJlYW0oR19JT19TVFJFQU0oaGFuZGxlKSkpLAor
ICAgICAgICBvZmZzZXQsIHNlZWtUeXBlLCAwLCAwKSkKKyAgICB7CisgICAgICAgIHJldHVybiAt
MTsKKyAgICB9CisgICAgcmV0dXJuIGdfc2Vla2FibGVfdGVsbChHX1NFRUtBQkxFKGdfaW9fc3Ry
ZWFtX2dldF9pbnB1dF9zdHJlYW0oR19JT19TVFJFQU0oaGFuZGxlKSkpKTsKK30KKworaW50IHdy
aXRlVG9GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEsIGlu
dCBsZW5ndGgpCit7CisgICAgZ3NpemUgYnl0ZXNXcml0dGVuOworICAgIGdfb3V0cHV0X3N0cmVh
bV93cml0ZV9hbGwoZ19pb19zdHJlYW1fZ2V0X291dHB1dF9zdHJlYW0oR19JT19TVFJFQU0oaGFu
ZGxlKSksCisgICAgICAgIGRhdGEsIGxlbmd0aCwgJmJ5dGVzV3JpdHRlbiwgMCwgMCk7CisgICAg
cmV0dXJuIGJ5dGVzV3JpdHRlbjsKK30KKworaW50IHJlYWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVI
YW5kbGUgaGFuZGxlLCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQoreworICAgIEdVbmlxdWVPdXRQ
dHI8R0Vycm9yPiBlcnJvcjsKKyAgICBkbyB7CisgICAgICAgIGdzc2l6ZSBieXRlc1JlYWQgPSBn
X2lucHV0X3N0cmVhbV9yZWFkKGdfaW9fc3RyZWFtX2dldF9pbnB1dF9zdHJlYW0oR19JT19TVFJF
QU0oaGFuZGxlKSksCisgICAgICAgICAgICBkYXRhLCBsZW5ndGgsIDAsICZlcnJvci5vdXRQdHIo
KSk7CisgICAgICAgIGlmIChieXRlc1JlYWQgPj0gMCkKKyAgICAgICAgICAgIHJldHVybiBieXRl
c1JlYWQ7CisgICAgfSB3aGlsZSAoZXJyb3IgJiYgZXJyb3ItPmNvZGUgPT0gR19GSUxFX0VSUk9S
X0lOVFIpOworICAgIHJldHVybiAtMTsKK30KKworYm9vbCBtb3ZlRmlsZShjb25zdCBTdHJpbmcm
IG9sZFBhdGgsIGNvbnN0IFN0cmluZyYgbmV3UGF0aCkKK3sKKyAgICBHVW5pcXVlUHRyPGdjaGFy
PiBvbGRGaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKG9sZFBhdGgpOworICAgIGlmICghb2xk
RmlsZW5hbWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEdVbmlxdWVQdHI8Z2NoYXI+
IG5ld0ZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUobmV3UGF0aCk7CisgICAgaWYgKCFuZXdG
aWxlbmFtZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgR1JlZlB0cjxHRmlsZT4gb2xk
RmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKG9sZEZpbGVuYW1lLmdldCgpKSk7
CisgICAgR1JlZlB0cjxHRmlsZT4gbmV3RmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9w
YXRoKG5ld0ZpbGVuYW1lLmdldCgpKSk7CisKKyAgICByZXR1cm4gZ19maWxlX21vdmUob2xkRmls
ZS5nZXQoKSwgbmV3RmlsZS5nZXQoKSwgR19GSUxFX0NPUFlfT1ZFUldSSVRFLCBudWxscHRyLCBu
dWxscHRyLCBudWxscHRyLCBudWxscHRyKTsKK30KKworYm9vbCBoYXJkTGlua09yQ29weUZpbGUo
Y29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb24pCit7CisjaWYg
T1MoV0lORE9XUykKKyAgICByZXR1cm4gISE6OkNvcHlGaWxlKHNvdXJjZS5jaGFyYWN0ZXJzV2l0
aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSwgZGVzdGluYXRpb24uY2hhcmFjdGVyc1dpdGhOdWxs
VGVybWluYXRpb24oKS5kYXRhKCksIFRSVUUpOworI2Vsc2UKKyAgICBHVW5pcXVlUHRyPGdjaGFy
PiBzb3VyY2VGaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHNvdXJjZSk7CisgICAgaWYgKCFz
b3VyY2VGaWxlbmFtZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgR1VuaXF1ZVB0cjxn
Y2hhcj4gZGVzdGluYXRpb25GaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKGRlc3RpbmF0aW9u
KTsKKyAgICBpZiAoIWRlc3RpbmF0aW9uRmlsZW5hbWUpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGlmICghbGluayhzb3VyY2VGaWxlbmFtZS5nZXQoKSwgZGVzdGluYXRpb25GaWxlbmFt
ZS5nZXQoKSkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gSGFyZCBsaW5rIGZhaWxl
ZC4gUGVyZm9ybSBhIGNvcHkgaW5zdGVhZC4KKyAgICBHUmVmUHRyPEdGaWxlPiBzb3VyY2VGaWxl
ID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoc291cmNlRmlsZW5hbWUuZ2V0KCkpKTsK
KyAgICBHUmVmUHRyPEdGaWxlPiBkZXN0aW5hdGlvbkZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25l
d19mb3JfcGF0aChkZXN0aW5hdGlvbkZpbGVuYW1lLmdldCgpKSk7CisgICAgcmV0dXJuIGdfZmls
ZV9jb3B5KHNvdXJjZUZpbGUuZ2V0KCksIGRlc3RpbmF0aW9uRmlsZS5nZXQoKSwgR19GSUxFX0NP
UFlfTk9ORSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cik7CisjZW5kaWYKK30K
KworT3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0IENTdHJpbmcmIGZzRmls
ZSkKK3sKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1l
KGZzRmlsZS5kYXRhKCkpOworICAgIGlmICghZmlsZW5hbWUpCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisKKyAgICBHUmVmUHRyPEdGaWxlPiBmaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9u
ZXdfZm9yX3BhdGgoZmlsZW5hbWUuZ2V0KCkpKTsKKyAgICBHUmVmUHRyPEdGaWxlSW5mbz4gZmls
ZUluZm8gPSBhZG9wdEdSZWYoZ19maWxlX3F1ZXJ5X2ZpbGVzeXN0ZW1faW5mbyhmaWxlLmdldCgp
LCBHX0ZJTEVfQVRUUklCVVRFX1VOSVhfREVWSUNFLCBudWxscHRyLCBudWxscHRyKSk7CisgICAg
aWYgKCFmaWxlSW5mbykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVy
biBnX2ZpbGVfaW5mb19nZXRfYXR0cmlidXRlX3VpbnQzMihmaWxlSW5mby5nZXQoKSwgR19GSUxF
X0FUVFJJQlVURV9VTklYX0RFVklDRSk7Cit9CisKKyNpZiBVU0UoRklMRV9MT0NLKQorYm9vbCBs
b2NrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBPcHRpb25TZXQ8RmlsZUxvY2tNb2Rl
PiBsb2NrTW9kZSkKK3sKKyAgICBDT01QSUxFX0FTU0VSVChMT0NLX1NIID09IFdURjo6ZW51bVRv
VW5kZXJseWluZ1R5cGUoRmlsZUxvY2tNb2RlOjpTaGFyZWQpLCBMb2NrU2hhcmVkRW5jb2RpbmdJ
c0FzRXhwZWN0ZWQpOworICAgIENPTVBJTEVfQVNTRVJUKExPQ0tfRVggPT0gV1RGOjplbnVtVG9V
bmRlcmx5aW5nVHlwZShGaWxlTG9ja01vZGU6OkV4Y2x1c2l2ZSksIExvY2tFeGNsdXNpdmVFbmNv
ZGluZ0lzQXNFeHBlY3RlZCk7CisgICAgQ09NUElMRV9BU1NFUlQoTE9DS19OQiA9PSBXVEY6OmVu
dW1Ub1VuZGVybHlpbmdUeXBlKEZpbGVMb2NrTW9kZTo6Tm9uYmxvY2tpbmcpLCBMb2NrTm9uYmxv
Y2tpbmdFbmNvZGluZ0lzQXNFeHBlY3RlZCk7CisgICAgYXV0byogaW5wdXRTdHJlYW0gPSBnX2lv
X3N0cmVhbV9nZXRfaW5wdXRfc3RyZWFtKEdfSU9fU1RSRUFNKGhhbmRsZSkpOworICAgIGludCBy
ZXN1bHQgPSBmbG9jayhnX2ZpbGVfZGVzY3JpcHRvcl9iYXNlZF9nZXRfZmQoR19GSUxFX0RFU0NS
SVBUT1JfQkFTRUQoaW5wdXRTdHJlYW0pKSwgbG9ja01vZGUudG9SYXcoKSk7CisgICAgcmV0dXJu
IHJlc3VsdCAhPSAtMTsKK30KKworYm9vbCB1bmxvY2tGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBo
YW5kbGUpCit7CisgICAgYXV0byogaW5wdXRTdHJlYW0gPSBnX2lvX3N0cmVhbV9nZXRfaW5wdXRf
c3RyZWFtKEdfSU9fU1RSRUFNKGhhbmRsZSkpOworICAgIGludCByZXN1bHQgPSBmbG9jayhnX2Zp
bGVfZGVzY3JpcHRvcl9iYXNlZF9nZXRfZmQoR19GSUxFX0RFU0NSSVBUT1JfQkFTRUQoaW5wdXRT
dHJlYW0pKSwgTE9DS19VTik7CisgICAgcmV0dXJuIHJlc3VsdCAhPSAtMTsKK30KKyNlbmRpZiAv
LyBVU0UoRklMRV9MT0NLKQorCit9IC8vIG5hbWVzcGFjZSBGaWxlU3lzdGVtSW1wbAorfSAvLyBu
YW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9tYWMvRmlsZVN5c3RlbU1h
Yy5tbSBiL1NvdXJjZS9XVEYvd3RmL21hYy9GaWxlU3lzdGVtTWFjLm1tCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjky
NjkyYTE2ZmJhNWIxNTI3OGM3NzJmNzU2ZTU1M2ExMTA3NTVmMmIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9tYWMvRmlsZVN5c3RlbU1hYy5tbQpAQCAtMCwwICsxLDg4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgPHd0Zi9GaWxlU3lz
dGVtLmg+CisKKyNpZiBQTEFURk9STShNQUMpCisKKyNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4
dHJhcy5oPgorI2ltcG9ydCA8d3RmL3NwaS9tYWMvTWV0YWRhdGFTUEkuaD4KKyNpbXBvcnQgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV1RGIHsKKworYm9vbCBGaWxlU3lzdGVt
OjpkZWxldGVFbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgYXV0byBm
aWxlTWFuYWdlciA9IGFkb3B0TlMoW1tOU0ZpbGVNYW5hZ2VyIGFsbG9jXSBpbml0XSk7CisKKyAg
ICBpZiAoTlNBcnJheSAqZGlyZWN0b3J5Q29udGVudHMgPSBbZmlsZU1hbmFnZXIgY29udGVudHNP
ZkRpcmVjdG9yeUF0UGF0aDpwYXRoIGVycm9yOm51bGxwdHJdKSB7CisgICAgICAgIC8vIEV4cGxp
Y2l0bHkgbG9vayBmb3IgYW5kIGRlbGV0ZSAuRFNfU3RvcmUgZmlsZXMuCisgICAgICAgIGlmIChk
aXJlY3RvcnlDb250ZW50cy5jb3VudCA9PSAxICYmIFtkaXJlY3RvcnlDb250ZW50cy5maXJzdE9i
amVjdCBpc0VxdWFsVG9TdHJpbmc6QCIuRFNfU3RvcmUiXSkKKyAgICAgICAgICAgIFtmaWxlTWFu
YWdlciByZW1vdmVJdGVtQXRQYXRoOltwYXRoIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVu
dDpkaXJlY3RvcnlDb250ZW50cy5maXJzdE9iamVjdF0gZXJyb3I6bnVsbHB0cl07CisgICAgfQor
CisgICAgLy8gcm1kaXIoLi4uKSByZXR1cm5zIDAgb24gc3VjY2Vzc2Z1bCBkZWxldGlvbiBvZiB0
aGUgcGF0aCBhbmQgbm9uLXplcm8gaW4gYW55IG90aGVyIGNhc2UgKGluY2x1ZGluZyBpbnZhbGlk
IHBlcm1pc3Npb25zIG9yIG5vbi1leGlzdGVudCBmaWxlKQorICAgIHJldHVybiAhcm1kaXIoRmls
ZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSk7Cit9CisKK3Zv
aWQgRmlsZVN5c3RlbTo6c2V0TWV0YWRhdGFVUkwoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBT
dHJpbmcmIG1ldGFkYXRhVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKQoreworICAg
IFN0cmluZyB1cmxTdHJpbmc7CisgICAgaWYgKE5TVVJMICp1cmwgPSBVUkxXaXRoVXNlclR5cGVk
U3RyaW5nKG1ldGFkYXRhVVJMU3RyaW5nLCBuaWwpKQorICAgICAgICB1cmxTdHJpbmcgPSBXVEY6
OnVzZXJWaXNpYmxlU3RyaW5nKFdURjo6VVJMQnlSZW1vdmluZ1VzZXJJbmZvKHVybCkpOworICAg
IGVsc2UKKyAgICAgICAgdXJsU3RyaW5nID0gbWV0YWRhdGFVUkxTdHJpbmc7CisKKyAgICAvLyBD
YWxsIE1ldGFkYXRhIEFQSSBvbiBhIGJhY2tncm91bmQgcXVldWUgYmVjYXVzZSBpdCBjYW4gdGFr
ZSBzb21lIHRpbWUuCisgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X2dsb2JhbF9xdWV1
ZShESVNQQVRDSF9RVUVVRV9QUklPUklUWV9ERUZBVUxULCAwKSwgW3BhdGggPSBwYXRoLmlzb2xh
dGVkQ29weSgpLCB1cmxTdHJpbmcgPSB1cmxTdHJpbmcuaXNvbGF0ZWRDb3B5KCksIHJlZmVycmVy
ID0gcmVmZXJyZXIuaXNvbGF0ZWRDb3B5KCldIHsKKyAgICAgICAgYXV0byBpdGVtID0gYWRvcHRD
RihNREl0ZW1DcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcGF0aC5jcmVhdGVDRlN0cmluZygp
LmdldCgpKSk7CisgICAgICAgIGlmICghaXRlbSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBhdXRvIHdoZXJlRnJvbUF0dHJpYnV0ZSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBh
bGxvY10gaW5pdFdpdGhPYmplY3RzOnVybFN0cmluZywgbmlsXSk7CisgICAgICAgIGlmICghcmVm
ZXJyZXIuaXNOdWxsKCkpCisgICAgICAgICAgICBbd2hlcmVGcm9tQXR0cmlidXRlIGFkZE9iamVj
dDpyZWZlcnJlcl07CisKKyAgICAgICAgTURJdGVtU2V0QXR0cmlidXRlKGl0ZW0uZ2V0KCksIGtN
REl0ZW1XaGVyZUZyb21zLCAoX19icmlkZ2UgQ0ZBcnJheVJlZil3aGVyZUZyb21BdHRyaWJ1dGUu
Z2V0KCkpOworICAgICAgICBNREl0ZW1TZXRBdHRyaWJ1dGUoaXRlbS5nZXQoKSwga01ESXRlbURv
d25sb2FkZWREYXRlLCAoX19icmlkZ2UgQ0ZBcnJheVJlZilAWyBbTlNEYXRlIGRhdGVdIF0pOwor
ICAgIH0pOworfQorCitib29sIEZpbGVTeXN0ZW06OmNhbkV4Y2x1ZGVGcm9tQmFja3VwKCkKK3sK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBGaWxlU3lzdGVtOjpleGNsdWRlRnJvbUJhY2t1
cChjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgLy8gSXQgaXMgY3JpdGljYWwgdG8gcGFzcyBG
QUxTRSBmb3IgZXhjbHVkZUJ5UGF0aCBiZWNhdXNlIGV4Y2x1ZGluZyBieSBwYXRoIHJlcXVpcmVz
IHJvb3QgcHJpdmlsZWdlcy4KKyAgICBDU0JhY2t1cFNldEl0ZW1FeGNsdWRlZChGaWxlU3lzdGVt
OjpwYXRoQXNVUkwocGF0aCkuZ2V0KCksIFRSVUUsIEZBTFNFKTsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBQTEFURk9STShNQUMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwIGIvU291cmNl
L1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYjFlZmQ2MzQx
NjQ1OWNjY2U5Nzk2NmRiOWU1ZGRhMmI3MjQwMGE0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtMCwwICsxLDQ5NiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIElu
Yy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAg
ZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgorCisjaW5jbHVkZSA8ZGly
ZW50Lmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUg
PGZubWF0Y2guaD4KKyNpbmNsdWRlIDxsaWJnZW4uaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2lu
Y2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5jbHVkZSA8c3lzL3N0YXR2ZnMuaD4KKyNpbmNsdWRlIDxz
eXMvdHlwZXMuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDx3dGYvRW51bVRyYWl0
cy5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlTWV0YWRhdGEuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV1RGIHsKKworbmFtZXNwYWNlIEZp
bGVTeXN0ZW1JbXBsIHsKKworYm9vbCBmaWxlRXhpc3RzKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sK
KyAgICBpZiAocGF0aC5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgQ1N0
cmluZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKKworICAgIGlmICgh
ZnNSZXAuZGF0YSgpIHx8IGZzUmVwLmRhdGEoKVswXSA9PSAnXDAnKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICByZXR1cm4gYWNjZXNzKGZzUmVwLmRhdGEoKSwgRl9PSykgIT0gLTE7Cit9
CisKK2Jvb2wgZGVsZXRlRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgQ1N0cmluZyBm
c1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKKworICAgIGlmICghZnNSZXAu
ZGF0YSgpIHx8IGZzUmVwLmRhdGEoKVswXSA9PSAnXDAnKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICAvLyB1bmxpbmsoLi4uKSByZXR1cm5zIDAgb24gc3VjY2Vzc2Z1bCBkZWxldGlvbiBv
ZiB0aGUgcGF0aCBhbmQgbm9uLXplcm8gaW4gYW55IG90aGVyIGNhc2UgKGluY2x1ZGluZyBpbnZh
bGlkIHBlcm1pc3Npb25zIG9yIG5vbi1leGlzdGVudCBmaWxlKQorICAgIHJldHVybiAhdW5saW5r
KGZzUmVwLmRhdGEoKSk7Cit9CisKK1BsYXRmb3JtRmlsZUhhbmRsZSBvcGVuRmlsZShjb25zdCBT
dHJpbmcmIHBhdGgsIEZpbGVPcGVuTW9kZSBtb2RlKQoreworICAgIENTdHJpbmcgZnNSZXAgPSBm
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisKKyAgICBpZiAoZnNSZXAuaXNOdWxsKCkp
CisgICAgICAgIHJldHVybiBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOworCisgICAgaW50IHBs
YXRmb3JtRmxhZyA9IDA7CisgICAgaWYgKG1vZGUgPT0gRmlsZU9wZW5Nb2RlOjpSZWFkKQorICAg
ICAgICBwbGF0Zm9ybUZsYWcgfD0gT19SRE9OTFk7CisgICAgZWxzZSBpZiAobW9kZSA9PSBGaWxl
T3Blbk1vZGU6OldyaXRlKQorICAgICAgICBwbGF0Zm9ybUZsYWcgfD0gKE9fV1JPTkxZIHwgT19D
UkVBVCB8IE9fVFJVTkMpOworI2lmIE9TKERBUldJTikKKyAgICBlbHNlIGlmIChtb2RlID09IEZp
bGVPcGVuTW9kZTo6RXZlbnRzT25seSkKKyAgICAgICAgcGxhdGZvcm1GbGFnIHw9IE9fRVZUT05M
WTsKKyNlbmRpZgorCisgICAgcmV0dXJuIG9wZW4oZnNSZXAuZGF0YSgpLCBwbGF0Zm9ybUZsYWcs
IDA2NjYpOworfQorCit2b2lkIGNsb3NlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkK
K3sKKyAgICBpZiAoaXNIYW5kbGVWYWxpZChoYW5kbGUpKSB7CisgICAgICAgIGNsb3NlKGhhbmRs
ZSk7CisgICAgICAgIGhhbmRsZSA9IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7CisgICAgfQor
fQorCitsb25nIGxvbmcgc2Vla0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgbG9uZyBs
b25nIG9mZnNldCwgRmlsZVNlZWtPcmlnaW4gb3JpZ2luKQoreworICAgIGludCB3aGVuY2UgPSBT
RUVLX1NFVDsKKyAgICBzd2l0Y2ggKG9yaWdpbikgeworICAgIGNhc2UgRmlsZVNlZWtPcmlnaW46
OkJlZ2lubmluZzoKKyAgICAgICAgd2hlbmNlID0gU0VFS19TRVQ7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgRmlsZVNlZWtPcmlnaW46OkN1cnJlbnQ6CisgICAgICAgIHdoZW5jZSA9IFNFRUtf
Q1VSOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZpbGVTZWVrT3JpZ2luOjpFbmQ6CisgICAg
ICAgIHdoZW5jZSA9IFNFRUtfRU5EOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGxvbmcgbG9uZz4obHNlZWsoaGFuZGxlLCBvZmZzZXQsIHdoZW5jZSkpOworfQorCitib29sIHRy
dW5jYXRlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0KQor
eworICAgIC8vIGZ0cnVuY2F0ZSByZXR1cm5zIDAgdG8gaW5kaWNhdGUgdGhlIHN1Y2Nlc3MuCisg
ICAgcmV0dXJuICFmdHJ1bmNhdGUoaGFuZGxlLCBvZmZzZXQpOworfQorCitpbnQgd3JpdGVUb0Zp
bGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0
aCkKK3sKKyAgICBkbyB7CisgICAgICAgIGludCBieXRlc1dyaXR0ZW4gPSB3cml0ZShoYW5kbGUs
IGRhdGEsIHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSk7CisgICAgICAgIGlmIChieXRlc1dy
aXR0ZW4gPj0gMCkKKyAgICAgICAgICAgIHJldHVybiBieXRlc1dyaXR0ZW47CisgICAgfSB3aGls
ZSAoZXJybm8gPT0gRUlOVFIpOworICAgIHJldHVybiAtMTsKK30KKworaW50IHJlYWRGcm9tRmls
ZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQorewor
ICAgIGRvIHsKKyAgICAgICAgaW50IGJ5dGVzUmVhZCA9IHJlYWQoaGFuZGxlLCBkYXRhLCBzdGF0
aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkpOworICAgICAgICBpZiAoYnl0ZXNSZWFkID49IDApCisg
ICAgICAgICAgICByZXR1cm4gYnl0ZXNSZWFkOworICAgIH0gd2hpbGUgKGVycm5vID09IEVJTlRS
KTsKKyAgICByZXR1cm4gLTE7Cit9CisKKyNpZiBVU0UoRklMRV9MT0NLKQorYm9vbCBsb2NrRmls
ZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBPcHRpb25TZXQ8RmlsZUxvY2tNb2RlPiBsb2Nr
TW9kZSkKK3sKKyAgICBDT01QSUxFX0FTU0VSVChMT0NLX1NIID09IFdURjo6ZW51bVRvVW5kZXJs
eWluZ1R5cGUoRmlsZUxvY2tNb2RlOjpTaGFyZWQpLCBMb2NrU2hhcmVkRW5jb2RpbmdJc0FzRXhw
ZWN0ZWQpOworICAgIENPTVBJTEVfQVNTRVJUKExPQ0tfRVggPT0gV1RGOjplbnVtVG9VbmRlcmx5
aW5nVHlwZShGaWxlTG9ja01vZGU6OkV4Y2x1c2l2ZSksIExvY2tFeGNsdXNpdmVFbmNvZGluZ0lz
QXNFeHBlY3RlZCk7CisgICAgQ09NUElMRV9BU1NFUlQoTE9DS19OQiA9PSBXVEY6OmVudW1Ub1Vu
ZGVybHlpbmdUeXBlKEZpbGVMb2NrTW9kZTo6Tm9uYmxvY2tpbmcpLCBMb2NrTm9uYmxvY2tpbmdF
bmNvZGluZ0lzQXNFeHBlY3RlZCk7CisgICAgaW50IHJlc3VsdCA9IGZsb2NrKGhhbmRsZSwgbG9j
a01vZGUudG9SYXcoKSk7CisgICAgcmV0dXJuIChyZXN1bHQgIT0gLTEpOworfQorCitib29sIHVu
bG9ja0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSkKK3sKKyAgICBpbnQgcmVzdWx0ID0g
ZmxvY2soaGFuZGxlLCBMT0NLX1VOKTsKKyAgICByZXR1cm4gKHJlc3VsdCAhPSAtMSk7Cit9Cisj
ZW5kaWYKKworI2lmICFQTEFURk9STShNQUMpCitib29sIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KGNv
bnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKHBhdGgpOworCisgICAgaWYgKCFmc1JlcC5kYXRhKCkgfHwgZnNSZXAuZGF0YSgp
WzBdID09ICdcMCcpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIHJtZGlyKC4uLikg
cmV0dXJucyAwIG9uIHN1Y2Nlc3NmdWwgZGVsZXRpb24gb2YgdGhlIHBhdGggYW5kIG5vbi16ZXJv
IGluIGFueSBvdGhlciBjYXNlIChpbmNsdWRpbmcgaW52YWxpZCBwZXJtaXNzaW9ucyBvciBub24t
ZXhpc3RlbnQgZmlsZSkKKyAgICByZXR1cm4gIXJtZGlyKGZzUmVwLmRhdGEoKSk7Cit9CisjZW5k
aWYKKworYm9vbCBnZXRGaWxlU2l6ZShjb25zdCBTdHJpbmcmIHBhdGgsIGxvbmcgbG9uZyYgcmVz
dWx0KQoreworICAgIENTdHJpbmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0
aCk7CisKKyAgICBpZiAoIWZzUmVwLmRhdGEoKSB8fCBmc1JlcC5kYXRhKClbMF0gPT0gJ1wwJykK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgc3RydWN0IHN0YXQgZmlsZUluZm87CisKKyAg
ICBpZiAoc3RhdChmc1JlcC5kYXRhKCksICZmaWxlSW5mbykpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIHJlc3VsdCA9IGZpbGVJbmZvLnN0X3NpemU7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK2Jvb2wgZ2V0RmlsZVNpemUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgbG9uZyBsb25n
JiByZXN1bHQpCit7CisgICAgc3RydWN0IHN0YXQgZmlsZUluZm87CisgICAgaWYgKGZzdGF0KGhh
bmRsZSwgJmZpbGVJbmZvKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmVzdWx0ID0g
ZmlsZUluZm8uc3Rfc2l6ZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworT3B0aW9uYWw8V2FsbFRp
bWU+IGdldEZpbGVDcmVhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoKQoreworI2lmIE9TKERB
UldJTikgfHwgT1MoT1BFTkJTRCkgfHwgT1MoTkVUQlNEKSB8fCBPUyhGUkVFQlNEKQorICAgIENT
dHJpbmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisKKyAgICBpZiAo
IWZzUmVwLmRhdGEoKSB8fCBmc1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKKyAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKworICAgIHN0cnVjdCBzdGF0IGZpbGVJbmZvOworCisgICAgaWYgKHN0
YXQoZnNSZXAuZGF0YSgpLCAmZmlsZUluZm8pKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworCisgICAgcmV0dXJuIFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhmaWxlSW5mby5zdF9iaXJ0
aHRpbWUpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocGF0aCk7CisgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyNlbmRpZgorfQorCitPcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZU1vZGlmaWNh
dGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIENTdHJpbmcgZnNSZXAgPSBmaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisKKyAgICBpZiAoIWZzUmVwLmRhdGEoKSB8fCBm
c1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwor
ICAgIHN0cnVjdCBzdGF0IGZpbGVJbmZvOworCisgICAgaWYgKHN0YXQoZnNSZXAuZGF0YSgpLCAm
ZmlsZUluZm8pKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIFdh
bGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhmaWxlSW5mby5zdF9tdGltZSk7Cit9CisKK3N0YXRpYyBG
aWxlTWV0YWRhdGE6OlR5cGUgdG9GaWxlTWV0YXRhVHlwZShzdHJ1Y3Qgc3RhdCBmaWxlSW5mbykK
K3sKKyAgICBpZiAoU19JU0RJUihmaWxlSW5mby5zdF9tb2RlKSkKKyAgICAgICAgcmV0dXJuIEZp
bGVNZXRhZGF0YTo6VHlwZTo6RGlyZWN0b3J5OworICAgIGlmIChTX0lTTE5LKGZpbGVJbmZvLnN0
X21vZGUpKQorICAgICAgICByZXR1cm4gRmlsZU1ldGFkYXRhOjpUeXBlOjpTeW1ib2xpY0xpbms7
CisgICAgcmV0dXJuIEZpbGVNZXRhZGF0YTo6VHlwZTo6RmlsZTsKK30KKworc3RhdGljIE9wdGlv
bmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhVXNpbmdGdW5jdGlvbihjb25zdCBTdHJpbmcm
IHBhdGgsIGludCAoKnN0YXRGdW5jKShjb25zdCBjaGFyKiwgc3RydWN0IHN0YXQqKSkKK3sKKyAg
ICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworCisgICAg
aWYgKCFmc1JlcC5kYXRhKCkgfHwgZnNSZXAuZGF0YSgpWzBdID09ICdcMCcpCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBzdHJ1Y3Qgc3RhdCBmaWxlSW5mbzsKKyAgICBpZiAo
c3RhdEZ1bmMoZnNSZXAuZGF0YSgpLCAmZmlsZUluZm8pKQorICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworCisgICAgU3RyaW5nIGZpbGVuYW1lID0gcGF0aEdldEZpbGVOYW1lKHBhdGgpOwor
ICAgIGJvb2wgaXNIaWRkZW4gPSAhZmlsZW5hbWUuaXNFbXB0eSgpICYmIGZpbGVuYW1lWzBdID09
ICcuJzsKKyAgICByZXR1cm4gRmlsZU1ldGFkYXRhIHsKKyAgICAgICAgV2FsbFRpbWU6OmZyb21S
YXdTZWNvbmRzKGZpbGVJbmZvLnN0X210aW1lKSwKKyAgICAgICAgZmlsZUluZm8uc3Rfc2l6ZSwK
KyAgICAgICAgaXNIaWRkZW4sCisgICAgICAgIHRvRmlsZU1ldGF0YVR5cGUoZmlsZUluZm8pCisg
ICAgfTsKK30KKworT3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGEoY29uc3QgU3Ry
aW5nJiBwYXRoKQoreworICAgIHJldHVybiBmaWxlTWV0YWRhdGFVc2luZ0Z1bmN0aW9uKHBhdGgs
ICZsc3RhdCk7Cit9CisKK09wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhRm9sbG93
aW5nU3ltbGlua3MoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIHJldHVybiBmaWxlTWV0YWRh
dGFVc2luZ0Z1bmN0aW9uKHBhdGgsICZzdGF0KTsKK30KKworYm9vbCBjcmVhdGVTeW1ib2xpY0xp
bmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGljTGlua1Bh
dGgpCit7CisgICAgQ1N0cmluZyB0YXJnZXRQYXRoRlNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24odGFyZ2V0UGF0aCk7CisgICAgaWYgKCF0YXJnZXRQYXRoRlNSZXAuZGF0YSgpIHx8IHRh
cmdldFBhdGhGU1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgQ1N0cmluZyBzeW1ib2xpY0xpbmtQYXRoRlNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oc3ltYm9saWNMaW5rUGF0aCk7CisgICAgaWYgKCFzeW1ib2xpY0xpbmtQYXRoRlNSZXAu
ZGF0YSgpIHx8IHN5bWJvbGljTGlua1BhdGhGU1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuICFzeW1saW5rKHRhcmdldFBhdGhGU1JlcC5k
YXRhKCksIHN5bWJvbGljTGlua1BhdGhGU1JlcC5kYXRhKCkpOworfQorCitTdHJpbmcgcGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb21w
b25lbnQpCit7CisgICAgaWYgKHBhdGguZW5kc1dpdGgoJy8nKSkKKyAgICAgICAgcmV0dXJuIHBh
dGggKyBjb21wb25lbnQ7CisgICAgcmV0dXJuIHBhdGggKyAiLyIgKyBjb21wb25lbnQ7Cit9CisK
K1N0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKFN0cmluZ1ZpZXcgcGF0aCwgY29uc3Qg
VmVjdG9yPFN0cmluZ1ZpZXc+JiBjb21wb25lbnRzKQoreworICAgIFN0cmluZ0J1aWxkZXIgYnVp
bGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZChwYXRoKTsKKyAgICBmb3IgKGF1dG8mIGNvbXBvbmVu
dCA6IGNvbXBvbmVudHMpIHsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJy8nKTsKKyAgICAgICAg
YnVpbGRlci5hcHBlbmQoY29tcG9uZW50KTsKKyAgICB9CisgICAgcmV0dXJuIGJ1aWxkZXIudG9T
dHJpbmcoKTsKK30KKworYm9vbCBtYWtlQWxsRGlyZWN0b3JpZXMoY29uc3QgU3RyaW5nJiBwYXRo
KQoreworICAgIENTdHJpbmcgZnVsbFBhdGggPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0
aCk7CisgICAgaWYgKCFhY2Nlc3MoZnVsbFBhdGguZGF0YSgpLCBGX09LKSkKKyAgICAgICAgcmV0
dXJuIHRydWU7CisKKyAgICBjaGFyKiBwID0gZnVsbFBhdGgubXV0YWJsZURhdGEoKSArIDE7Cisg
ICAgaW50IGxlbmd0aCA9IGZ1bGxQYXRoLmxlbmd0aCgpOworCisgICAgaWYgKHBbbGVuZ3RoIC0g
MV0gPT0gJy8nKQorICAgICAgICBwW2xlbmd0aCAtIDFdID0gJ1wwJzsKKyAgICBmb3IgKDsgKnA7
ICsrcCkgeworICAgICAgICBpZiAoKnAgPT0gJy8nKSB7CisgICAgICAgICAgICAqcCA9ICdcMCc7
CisgICAgICAgICAgICBpZiAoYWNjZXNzKGZ1bGxQYXRoLmRhdGEoKSwgRl9PSykpIHsKKyAgICAg
ICAgICAgICAgICBpZiAobWtkaXIoZnVsbFBhdGguZGF0YSgpLCBTX0lSV1hVKSkKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgKnAg
PSAnLyc7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKGFjY2VzcyhmdWxsUGF0aC5kYXRhKCks
IEZfT0spKSB7CisgICAgICAgIGlmIChta2RpcihmdWxsUGF0aC5kYXRhKCksIFNfSVJXWFUpKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQor
CitTdHJpbmcgcGF0aEdldEZpbGVOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICByZXR1
cm4gcGF0aC5zdWJzdHJpbmcocGF0aC5yZXZlcnNlRmluZCgnLycpICsgMSk7Cit9CisKK1N0cmlu
ZyBkaXJlY3RvcnlOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBDU3RyaW5nIGZzUmVw
ID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworCisgICAgaWYgKCFmc1JlcC5kYXRh
KCkgfHwgZnNSZXAuZGF0YSgpWzBdID09ICdcMCcpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsK
KworICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGRpcm5hbWUoZnNSZXAubXV0YWJsZURhdGEo
KSkpOworfQorCitWZWN0b3I8U3RyaW5nPiBsaXN0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0
aCwgY29uc3QgU3RyaW5nJiBmaWx0ZXIpCit7CisgICAgVmVjdG9yPFN0cmluZz4gZW50cmllczsK
KyAgICBDU3RyaW5nIGNwYXRoID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAg
IENTdHJpbmcgY2ZpbHRlciA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWx0ZXIpOworICAg
IERJUiogZGlyID0gb3BlbmRpcihjcGF0aC5kYXRhKCkpOworICAgIGlmIChkaXIpIHsKKyAgICAg
ICAgc3RydWN0IGRpcmVudCogZHA7CisgICAgICAgIHdoaWxlICgoZHAgPSByZWFkZGlyKGRpcikp
KSB7CisgICAgICAgICAgICBjb25zdCBjaGFyKiBuYW1lID0gZHAtPmRfbmFtZTsKKyAgICAgICAg
ICAgIGlmICghc3RyY21wKG5hbWUsICIuIikgfHwgIXN0cmNtcChuYW1lLCAiLi4iKSkKKyAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGlmIChmbm1hdGNoKGNmaWx0ZXIuZGF0
YSgpLCBuYW1lLCAwKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGNo
YXIgZmlsZVBhdGhbUEFUSF9NQVhdOworICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PGludD4o
c2l6ZW9mKGZpbGVQYXRoKSAtIDEpIDwgc25wcmludGYoZmlsZVBhdGgsIHNpemVvZihmaWxlUGF0
aCksICIlcy8lcyIsIGNwYXRoLmRhdGEoKSwgbmFtZSkpCisgICAgICAgICAgICAgICAgY29udGlu
dWU7IC8vIGJ1ZmZlciBvdmVyZmxvdworCisgICAgICAgICAgICBhdXRvIHN0cmluZyA9IHN0cmlu
Z0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZVBhdGgpOworCisgICAgICAgICAgICAv
LyBTb21lIGZpbGUgc3lzdGVtIHJlcHJlc2VudGF0aW9ucyBjYW5ub3QgYmUgcmVwcmVzZW50ZWQg
YXMgYSBVVEYtMTYgc3RyaW5nLAorICAgICAgICAgICAgLy8gc28gdGhpcyBzdHJpbmcgbWlnaHQg
YmUgbnVsbC4KKyAgICAgICAgICAgIGlmICghc3RyaW5nLmlzTnVsbCgpKQorICAgICAgICAgICAg
ICAgIGVudHJpZXMuYXBwZW5kKFdURk1vdmUoc3RyaW5nKSk7CisgICAgICAgIH0KKyAgICAgICAg
Y2xvc2VkaXIoZGlyKTsKKyAgICB9CisgICAgcmV0dXJuIGVudHJpZXM7Cit9CisKKyNpZiAhUExB
VEZPUk0oQ09DT0EpCitTdHJpbmcgc3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihj
b25zdCBjaGFyKiBwYXRoKQoreworICAgIGlmICghcGF0aCkKKyAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOworCisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgocGF0aCk7Cit9CisKK0NTdHJpbmcg
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICByZXR1
cm4gcGF0aC51dGY4KCk7Cit9CisKK2Jvb2wgbW92ZUZpbGUoY29uc3QgU3RyaW5nJiBvbGRQYXRo
LCBjb25zdCBTdHJpbmcmIG5ld1BhdGgpCit7CisgICAgYXV0byBvbGRGaWxlbmFtZSA9IGZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihvbGRQYXRoKTsKKyAgICBpZiAob2xkRmlsZW5hbWUuaXNOdWxs
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8gbmV3RmlsZW5hbWUgPSBmaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24obmV3UGF0aCk7CisgICAgaWYgKG5ld0ZpbGVuYW1lLmlzTnVs
bCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gcmVuYW1lKG9sZEZpbGVu
YW1lLmRhdGEoKSwgbmV3RmlsZW5hbWUuZGF0YSgpKSAhPSAtMTsKK30KKworYm9vbCBnZXRWb2x1
bWVGcmVlU3BhY2UoY29uc3QgU3RyaW5nJiBwYXRoLCB1aW50NjRfdCYgZnJlZVNwYWNlKQorewor
ICAgIHN0cnVjdCBzdGF0dmZzIGZpbGVTeXN0ZW1TdGF0OworICAgIGlmIChzdGF0dmZzKGZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCksICZmaWxlU3lzdGVtU3RhdCkpIHsKKyAg
ICAgICAgZnJlZVNwYWNlID0gZmlsZVN5c3RlbVN0YXQuZl9iYXZhaWwgKiBmaWxlU3lzdGVtU3Rh
dC5mX2Zyc2l6ZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxz
ZTsKK30KKyNlbmRpZgorCisjaWYgIU9TKERBUldJTikKK1N0cmluZyBvcGVuVGVtcG9yYXJ5Rmls
ZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpCit7Cisg
ICAgY2hhciBidWZmZXJbUEFUSF9NQVhdOworICAgIGNvbnN0IGNoYXIqIHRtcERpciA9IGdldGVu
digiVE1QRElSIik7CisKKyAgICBpZiAoIXRtcERpcikKKyAgICAgICAgdG1wRGlyID0gIi90bXAi
OworCisgICAgaWYgKHNucHJpbnRmKGJ1ZmZlciwgUEFUSF9NQVgsICIlcy8lc1hYWFhYWCIsIHRt
cERpciwgcHJlZml4LnV0ZjgoKS5kYXRhKCkpID49IFBBVEhfTUFYKQorICAgICAgICBnb3RvIGVu
ZDsKKworICAgIGhhbmRsZSA9IG1rc3RlbXAoYnVmZmVyKTsKKyAgICBpZiAoaGFuZGxlIDwgMCkK
KyAgICAgICAgZ290byBlbmQ7CisKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChidWZmZXIp
OworCitlbmQ6CisgICAgaGFuZGxlID0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKKyAgICBy
ZXR1cm4gU3RyaW5nKCk7Cit9CisjZW5kaWYKKworYm9vbCBoYXJkTGlua09yQ29weUZpbGUoY29u
c3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb24pCit7CisgICAgaWYg
KHNvdXJjZS5pc0VtcHR5KCkgfHwgZGVzdGluYXRpb24uaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBDU3RyaW5nIGZzU291cmNlID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKHNvdXJjZSk7CisgICAgaWYgKCFmc1NvdXJjZS5kYXRhKCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIENTdHJpbmcgZnNEZXN0aW5hdGlvbiA9IGZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihkZXN0aW5hdGlvbik7CisgICAgaWYgKCFmc0Rlc3RpbmF0aW9uLmRhdGEoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFsaW5rKGZzU291cmNlLmRhdGEoKSwgZnNEZXN0
aW5hdGlvbi5kYXRhKCkpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIEhhcmQgbGlu
ayBmYWlsZWQuIFBlcmZvcm0gYSBjb3B5IGluc3RlYWQuCisgICAgYXV0byBoYW5kbGUgPSBvcGVu
KGZzRGVzdGluYXRpb24uZGF0YSgpLCBPX1dST05MWSB8IE9fQ1JFQVQgfCBPX0VYQ0wsIDA2NjYp
OworICAgIGlmIChoYW5kbGUgPT0gLTEpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGJv
b2wgYXBwZW5kUmVzdWx0ID0gYXBwZW5kRmlsZUNvbnRlbnRzVG9GaWxlSGFuZGxlKHNvdXJjZSwg
aGFuZGxlKTsKKyAgICBjbG9zZShoYW5kbGUpOworCisgICAgLy8gSWYgdGhlIGNvcHkgZmFpbGVk
LCBkZWxldGUgdGhlIHVudXNhYmxlIGZpbGUuCisgICAgaWYgKCFhcHBlbmRSZXN1bHQpCisgICAg
ICAgIHVubGluayhmc0Rlc3RpbmF0aW9uLmRhdGEoKSk7CisKKyAgICByZXR1cm4gYXBwZW5kUmVz
dWx0OworfQorCitPcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29uc3QgQ1N0cmlu
ZyYgZnNGaWxlKQoreworICAgIHN0cnVjdCBzdGF0IGZpbGVTdGF0OworICAgIGlmIChzdGF0KGZz
RmlsZS5kYXRhKCksICZmaWxlU3RhdCkgPT0gLTEpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisKKyAgICByZXR1cm4gZmlsZVN0YXQuc3RfZGV2OworfQorCitTdHJpbmcgcmVhbFBhdGgo
Y29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKK3sKKyAgICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKGZpbGVQYXRoKTsKKyAgICBjaGFyIHJlc29sdmVkTmFtZVtQQVRIX01B
WF07CisgICAgY29uc3QgY2hhciogcmVzdWx0ID0gcmVhbHBhdGgoZnNSZXAuZGF0YSgpLCByZXNv
bHZlZE5hbWUpOworICAgIHJldHVybiByZXN1bHQgPyBTdHJpbmc6OmZyb21VVEY4KHJlc3VsdCkg
OiBmaWxlUGF0aDsKK30KKworfSAvLyBuYW1lc3BhY2UgRmlsZVN5c3RlbUltcGwKK30gLy8gbmFt
ZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvc3BpL21hYy9NZXRhZGF0YVNQ
SS5oIGIvU291cmNlL1dURi93dGYvc3BpL21hYy9NZXRhZGF0YVNQSS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgx
NTU0N2M2Yjg1MTBlMzA2MThlMjI4MmFkNWI3ODQwMTZjYTM3MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9zcGkvbWFjL01ldGFkYXRhU1BJLmgKQEAgLTAsMCArMSwzOCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykK
KworI2luY2x1ZGUgPENvcmVTZXJ2aWNlcy9Db3JlU2VydmljZXNQcml2Lmg+CisKKyNlbmRpZgor
CitXVEZfRVhURVJOX0NfQkVHSU4KKworQm9vbGVhbiBNREl0ZW1TZXRBdHRyaWJ1dGUoTURJdGVt
UmVmLCBDRlN0cmluZ1JlZiBuYW1lLCBDRlR5cGVSZWYgYXR0cik7CisKK1dURl9FWFRFUk5fQ19F
TkQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcCBiL1Nv
dXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMGUzMzUyYTM2
ZDgyNzJlZmU5MzU3NWE5Y2U5OWMxMGE1MzhmZGQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCkBAIC0wLDAgKzEsNTg2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA3LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSwgTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5j
LiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBm
cm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CisKKyNpbmNsdWRlIDxpby5o
PgorI2luY2x1ZGUgPHNobG9iai5oPgorI2luY2x1ZGUgPHNobHdhcGkuaD4KKyNpbmNsdWRlIDxz
eXMvc3RhdC5oPgorI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3Jh
cGhpY2FsbHlSYW5kb21OdW1iZXIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZU1ldGFkYXRhLmg+Cisj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L3dp
bi9XQ2hhclN0cmluZ0V4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi93aW4vUGF0aFdhbGtlci5oPgor
CituYW1lc3BhY2UgV1RGIHsKKworbmFtZXNwYWNlIEZpbGVTeXN0ZW1JbXBsIHsKKworc3RhdGlj
IGNvbnN0IFVMT05HTE9ORyBrU2Vjb25kc0Zyb21GaWxlVGltZVRvVGltZXQgPSAxMTY0NDQ3MzYw
MDsKKworc3RhdGljIGJvb2wgZ2V0RmluZERhdGEoU3RyaW5nIHBhdGgsIFdJTjMyX0ZJTkRfREFU
QVcmIGZpbmREYXRhKQoreworICAgIEhBTkRMRSBoYW5kbGUgPSBGaW5kRmlyc3RGaWxlVyhzdHJp
bmdUb051bGxUZXJtaW5hdGVkV0NoYXIocGF0aCkuZGF0YSgpLCAmZmluZERhdGEpOworICAgIGlm
IChoYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBGaW5kQ2xvc2UoaGFuZGxlKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJv
b2wgZ2V0RmlsZVNpemVGcm9tRmluZERhdGEoY29uc3QgV0lOMzJfRklORF9EQVRBVyYgZmluZERh
dGEsIGxvbmcgbG9uZyYgc2l6ZSkKK3sKKyAgICBVTEFSR0VfSU5URUdFUiBmaWxlU2l6ZTsKKyAg
ICBmaWxlU2l6ZS5IaWdoUGFydCA9IGZpbmREYXRhLm5GaWxlU2l6ZUhpZ2g7CisgICAgZmlsZVNp
emUuTG93UGFydCA9IGZpbmREYXRhLm5GaWxlU2l6ZUxvdzsKKworICAgIGlmIChmaWxlU2l6ZS5R
dWFkUGFydCA+IHN0YXRpY19jYXN0PFVMT05HTE9ORz4oc3RkOjpudW1lcmljX2xpbWl0czxsb25n
IGxvbmc+OjptYXgoKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHNpemUgPSBmaWxl
U2l6ZS5RdWFkUGFydDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wgZ2V0Rmls
ZVNpemVGcm9tQnlIYW5kbGVGaWxlSW5mb3JtYXRpb25TdHJ1Y3R1cmUoY29uc3QgQllfSEFORExF
X0ZJTEVfSU5GT1JNQVRJT04mIGZpbGVJbmZvcm1hdGlvbiwgbG9uZyBsb25nJiBzaXplKQorewor
ICAgIFVMQVJHRV9JTlRFR0VSIGZpbGVTaXplOworICAgIGZpbGVTaXplLkhpZ2hQYXJ0ID0gZmls
ZUluZm9ybWF0aW9uLm5GaWxlU2l6ZUhpZ2g7CisgICAgZmlsZVNpemUuTG93UGFydCA9IGZpbGVJ
bmZvcm1hdGlvbi5uRmlsZVNpemVMb3c7CisKKyAgICBpZiAoZmlsZVNpemUuUXVhZFBhcnQgPiBz
dGF0aWNfY2FzdDxVTE9OR0xPTkc+KHN0ZDo6bnVtZXJpY19saW1pdHM8bG9uZyBsb25nPjo6bWF4
KCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzaXplID0gZmlsZVNpemUuUXVhZFBh
cnQ7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyB2b2lkIGdldEZpbGVDcmVhdGlvblRp
bWVGcm9tRmluZERhdGEoY29uc3QgV0lOMzJfRklORF9EQVRBVyYgZmluZERhdGEsIHRpbWVfdCYg
dGltZSkKK3sKKyAgICBVTEFSR0VfSU5URUdFUiBmaWxlVGltZTsKKyAgICBmaWxlVGltZS5IaWdo
UGFydCA9IGZpbmREYXRhLmZ0Q3JlYXRpb25UaW1lLmR3SGlnaERhdGVUaW1lOworICAgIGZpbGVU
aW1lLkxvd1BhcnQgPSBmaW5kRGF0YS5mdENyZWF0aW9uVGltZS5kd0xvd0RhdGVUaW1lOworCisg
ICAgLy8gSW5mb3JtYXRpb24gYWJvdXQgY29udmVydGluZyB0aW1lX3QgdG8gRmlsZVRpbWUgaXMg
YXZhaWxhYmxlIGF0IGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9tczcy
NDIyOCUyOHY9dnMuODUlMjkuYXNweAorICAgIHRpbWUgPSBmaWxlVGltZS5RdWFkUGFydCAvIDEw
MDAwMDAwIC0ga1NlY29uZHNGcm9tRmlsZVRpbWVUb1RpbWV0OworfQorCisKK3N0YXRpYyB2b2lk
IGdldEZpbGVNb2RpZmljYXRpb25UaW1lRnJvbUZpbmREYXRhKGNvbnN0IFdJTjMyX0ZJTkRfREFU
QVcmIGZpbmREYXRhLCB0aW1lX3QmIHRpbWUpCit7CisgICAgVUxBUkdFX0lOVEVHRVIgZmlsZVRp
bWU7CisgICAgZmlsZVRpbWUuSGlnaFBhcnQgPSBmaW5kRGF0YS5mdExhc3RXcml0ZVRpbWUuZHdI
aWdoRGF0ZVRpbWU7CisgICAgZmlsZVRpbWUuTG93UGFydCA9IGZpbmREYXRhLmZ0TGFzdFdyaXRl
VGltZS5kd0xvd0RhdGVUaW1lOworCisgICAgLy8gSW5mb3JtYXRpb24gYWJvdXQgY29udmVydGlu
ZyB0aW1lX3QgdG8gRmlsZVRpbWUgaXMgYXZhaWxhYmxlIGF0IGh0dHA6Ly9tc2RuLm1pY3Jvc29m
dC5jb20vZW4tdXMvbGlicmFyeS9tczcyNDIyOCUyOHY9dnMuODUlMjkuYXNweAorICAgIHRpbWUg
PSBmaWxlVGltZS5RdWFkUGFydCAvIDEwMDAwMDAwIC0ga1NlY29uZHNGcm9tRmlsZVRpbWVUb1Rp
bWV0OworfQorCitib29sIGdldEZpbGVTaXplKGNvbnN0IFN0cmluZyYgcGF0aCwgbG9uZyBsb25n
JiBzaXplKQoreworICAgIFdJTjMyX0ZJTkRfREFUQVcgZmluZERhdGE7CisgICAgaWYgKCFnZXRG
aW5kRGF0YShwYXRoLCBmaW5kRGF0YSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJl
dHVybiBnZXRGaWxlU2l6ZUZyb21GaW5kRGF0YShmaW5kRGF0YSwgc2l6ZSk7Cit9CisKK2Jvb2wg
Z2V0RmlsZVNpemUoUGxhdGZvcm1GaWxlSGFuZGxlIGZpbGVIYW5kbGUsIGxvbmcgbG9uZyYgc2l6
ZSkKK3sKKyAgICBCWV9IQU5ETEVfRklMRV9JTkZPUk1BVElPTiBmaWxlSW5mb3JtYXRpb247Cisg
ICAgaWYgKCE6OkdldEZpbGVJbmZvcm1hdGlvbkJ5SGFuZGxlKGZpbGVIYW5kbGUsICZmaWxlSW5m
b3JtYXRpb24pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gZ2V0RmlsZVNp
emVGcm9tQnlIYW5kbGVGaWxlSW5mb3JtYXRpb25TdHJ1Y3R1cmUoZmlsZUluZm9ybWF0aW9uLCBz
aXplKTsKK30KKworT3B0aW9uYWw8V2FsbFRpbWU+IGdldEZpbGVNb2RpZmljYXRpb25UaW1lKGNv
bnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBXSU4zMl9GSU5EX0RBVEFXIGZpbmREYXRhOworICAg
IGlmICghZ2V0RmluZERhdGEocGF0aCwgZmluZERhdGEpKQorICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworCisgICAgdGltZV90IHRpbWUgPSAwOworICAgIGdldEZpbGVNb2RpZmljYXRpb25U
aW1lRnJvbUZpbmREYXRhKGZpbmREYXRhLCB0aW1lKTsKKyAgICByZXR1cm4gV2FsbFRpbWU6OmZy
b21SYXdTZWNvbmRzKHRpbWUpOworfQorCitPcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZUNyZWF0
aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgV0lOMzJfRklORF9EQVRBVyBmaW5k
RGF0YTsKKyAgICBpZiAoIWdldEZpbmREYXRhKHBhdGgsIGZpbmREYXRhKSkKKyAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHRpbWVfdCB0aW1lID0gMDsKKyAgICBnZXRGaWxlQ3Jl
YXRpb25UaW1lRnJvbUZpbmREYXRhKGZpbmREYXRhLCB0aW1lKTsKKyAgICByZXR1cm4gV2FsbFRp
bWU6OmZyb21SYXdTZWNvbmRzKHRpbWUpOworfQorCitzdGF0aWMgU3RyaW5nIGdldEZpbmFsUGF0
aE5hbWUoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUo
cGF0aCwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKKyAgICBpZiAoIWlzSGFuZGxlVmFsaWQoaGFuZGxl
KSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgVmVjdG9yPFVDaGFyPiBidWZmZXIo
TUFYX1BBVEgpOworICAgIGlmICg6OkdldEZpbmFsUGF0aE5hbWVCeUhhbmRsZVcoaGFuZGxlLCBi
dWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpLCBWT0xVTUVfTkFNRV9OVCkgPj0gTUFYX1BBVEgp
IHsKKyAgICAgICAgY2xvc2VGaWxlKGhhbmRsZSk7CisgICAgICAgIHJldHVybiBTdHJpbmcoKTsK
KyAgICB9CisgICAgY2xvc2VGaWxlKGhhbmRsZSk7CisKKyAgICBidWZmZXIuc2hyaW5rKHdjc2xl
bihidWZmZXIuZGF0YSgpKSk7CisgICAgcmV0dXJuIFN0cmluZzo6YWRvcHQoV1RGTW92ZShidWZm
ZXIpKTsKK30KKworc3RhdGljIGlubGluZSBib29sIGlzU3ltYm9saWNMaW5rKFdJTjMyX0ZJTkRf
REFUQVcgZmluZERhdGEpCit7CisgICAgcmV0dXJuIGZpbmREYXRhLmR3RmlsZUF0dHJpYnV0ZXMg
JiBGSUxFX0FUVFJJQlVURV9SRVBBUlNFX1BPSU5UICYmIGZpbmREYXRhLmR3UmVzZXJ2ZWQwID09
IElPX1JFUEFSU0VfVEFHX1NZTUxJTks7Cit9CisKK3N0YXRpYyBGaWxlTWV0YWRhdGE6OlR5cGUg
dG9GaWxlTWV0YWRhdGFUeXBlKFdJTjMyX0ZJTkRfREFUQVcgZmluZERhdGEpCit7CisgICAgaWYg
KGZpbmREYXRhLmR3RmlsZUF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9ESVJFQ1RPUlkpCisg
ICAgICAgIHJldHVybiBGaWxlTWV0YWRhdGE6OlR5cGU6OkRpcmVjdG9yeTsKKyAgICBpZiAoaXNT
eW1ib2xpY0xpbmsoZmluZERhdGEpKQorICAgICAgICByZXR1cm4gRmlsZU1ldGFkYXRhOjpUeXBl
OjpTeW1ib2xpY0xpbms7CisgICAgcmV0dXJuIEZpbGVNZXRhZGF0YTo6VHlwZTo6RmlsZTsKK30K
Kworc3RhdGljIE9wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmluZERhdGFUb0ZpbGVNZXRhZGF0YShX
SU4zMl9GSU5EX0RBVEFXIGZpbmREYXRhKQoreworICAgIGxvbmcgbG9uZyBsZW5ndGg7CisgICAg
aWYgKCFnZXRGaWxlU2l6ZUZyb21GaW5kRGF0YShmaW5kRGF0YSwgbGVuZ3RoKSkKKyAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHRpbWVfdCBtb2RpZmljYXRpb25UaW1lOworICAg
IGdldEZpbGVNb2RpZmljYXRpb25UaW1lRnJvbUZpbmREYXRhKGZpbmREYXRhLCBtb2RpZmljYXRp
b25UaW1lKTsKKworICAgIHJldHVybiBGaWxlTWV0YWRhdGEgeworICAgICAgICBXYWxsVGltZTo6
ZnJvbVJhd1NlY29uZHMobW9kaWZpY2F0aW9uVGltZSksCisgICAgICAgIGxlbmd0aCwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8Ym9vbD4oZmluZERhdGEuZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRU
UklCVVRFX0hJRERFTiksCisgICAgICAgIHRvRmlsZU1ldGFkYXRhVHlwZShmaW5kRGF0YSkKKyAg
ICB9OworfQorCitPcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YShjb25zdCBTdHJp
bmcmIHBhdGgpCit7CisgICAgV0lOMzJfRklORF9EQVRBVyBmaW5kRGF0YTsKKyAgICBpZiAoIWdl
dEZpbmREYXRhKHBhdGgsIGZpbmREYXRhKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KworICAgIHJldHVybiBmaW5kRGF0YVRvRmlsZU1ldGFkYXRhKGZpbmREYXRhKTsKK30KKworT3B0
aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyhjb25zdCBT
dHJpbmcmIHBhdGgpCit7CisgICAgV0lOMzJfRklORF9EQVRBVyBmaW5kRGF0YTsKKyAgICBpZiAo
IWdldEZpbmREYXRhKHBhdGgsIGZpbmREYXRhKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKworICAgIGlmIChpc1N5bWJvbGljTGluayhmaW5kRGF0YSkpIHsKKyAgICAgICAgU3RyaW5n
IHRhcmdldFBhdGggPSBnZXRGaW5hbFBhdGhOYW1lKHBhdGgpOworICAgICAgICBpZiAodGFyZ2V0
UGF0aC5pc051bGwoKSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IGlmICghZ2V0RmluZERhdGEodGFyZ2V0UGF0aCwgZmluZERhdGEpKQorICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICB9CisKKyAgICByZXR1cm4gZmluZERhdGFUb0ZpbGVNZXRh
ZGF0YShmaW5kRGF0YSk7Cit9CisKK2Jvb2wgY3JlYXRlU3ltYm9saWNMaW5rKGNvbnN0IFN0cmlu
ZyYgdGFyZ2V0UGF0aCwgY29uc3QgU3RyaW5nJiBzeW1ib2xpY0xpbmtQYXRoKQoreworICAgIHJl
dHVybiAhOjpDcmVhdGVTeW1ib2xpY0xpbmtXKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihz
eW1ib2xpY0xpbmtQYXRoKS5kYXRhKCksIHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcih0YXJn
ZXRQYXRoKS5kYXRhKCksIDApOworfQorCitib29sIGZpbGVFeGlzdHMoY29uc3QgU3RyaW5nJiBw
YXRoKQoreworICAgIFdJTjMyX0ZJTkRfREFUQVcgZmluZERhdGE7CisgICAgcmV0dXJuIGdldEZp
bmREYXRhKHBhdGgsIGZpbmREYXRhKTsKK30KKworYm9vbCBkZWxldGVGaWxlKGNvbnN0IFN0cmlu
ZyYgcGF0aCkKK3sKKyAgICBTdHJpbmcgZmlsZW5hbWUgPSBwYXRoOworICAgIHJldHVybiAhIURl
bGV0ZUZpbGVXKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihmaWxlbmFtZSkuZGF0YSgpKTsK
K30KKworYm9vbCBkZWxldGVFbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgpCit7Cisg
ICAgU3RyaW5nIGZpbGVuYW1lID0gcGF0aDsKKyAgICByZXR1cm4gISFSZW1vdmVEaXJlY3RvcnlX
KHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihmaWxlbmFtZSkuZGF0YSgpKTsKK30KKworYm9v
bCBtb3ZlRmlsZShjb25zdCBTdHJpbmcmIG9sZFBhdGgsIGNvbnN0IFN0cmluZyYgbmV3UGF0aCkK
K3sKKyAgICBTdHJpbmcgb2xkRmlsZW5hbWUgPSBvbGRQYXRoOworICAgIFN0cmluZyBuZXdGaWxl
bmFtZSA9IG5ld1BhdGg7CisgICAgcmV0dXJuICEhOjpNb3ZlRmlsZUV4KHN0cmluZ1RvTnVsbFRl
cm1pbmF0ZWRXQ2hhcihvbGRGaWxlbmFtZSkuZGF0YSgpLCBzdHJpbmdUb051bGxUZXJtaW5hdGVk
V0NoYXIobmV3RmlsZW5hbWUpLmRhdGEoKSwgTU9WRUZJTEVfQ09QWV9BTExPV0VEIHwgTU9WRUZJ
TEVfUkVQTEFDRV9FWElTVElORyk7Cit9CisKK1N0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGNvbXBvbmVudCkKK3sKKyAgICBW
ZWN0b3I8VUNoYXI+IGJ1ZmZlcihNQVhfUEFUSCk7CisKKyAgICBpZiAocGF0aC5sZW5ndGgoKSAr
IDEgPiBidWZmZXIuc2l6ZSgpKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBTdHJp
bmdWaWV3KHBhdGgpLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGJ1ZmZlci5kYXRhKCkpOwor
ICAgIGJ1ZmZlcltwYXRoLmxlbmd0aCgpXSA9ICdcMCc7CisKKyAgICBpZiAoIVBhdGhBcHBlbmRX
KGJ1ZmZlci5kYXRhKCksIHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihjb21wb25lbnQpLmRh
dGEoKSkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIGJ1ZmZlci5zaHJpbmsod2Nz
bGVuKGJ1ZmZlci5kYXRhKCkpKTsKKworICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KFdURk1vdmUo
YnVmZmVyKSk7Cit9CisKK1N0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKFN0cmluZ1Zp
ZXcgcGF0aCwgY29uc3QgVmVjdG9yPFN0cmluZ1ZpZXc+JiBjb21wb25lbnRzKQoreworICAgIFN0
cmluZyByZXN1bHQgPSBwYXRoLnRvU3RyaW5nKCk7CisgICAgZm9yIChhdXRvJiBjb21wb25lbnQg
OiBjb21wb25lbnRzKQorICAgICAgICByZXN1bHQgPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
cmVzdWx0LCBjb21wb25lbnQudG9TdHJpbmcoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwor
I2lmICFVU0UoQ0YpCisKK0NTdHJpbmcgZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0
cmluZyYgcGF0aCkKK3sKKyAgICBhdXRvIHVwY29udmVydGVkQ2hhcmFjdGVycyA9IHBhdGgudXBj
b252ZXJ0ZWRDaGFyYWN0ZXJzKCk7CisKKyAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycyA9IHVw
Y29udmVydGVkQ2hhcmFjdGVyczsKKyAgICBpbnQgc2l6ZSA9IFdpZGVDaGFyVG9NdWx0aUJ5dGUo
Q1BfQUNQLCAwLCBjaGFyYWN0ZXJzLCBwYXRoLmxlbmd0aCgpLCAwLCAwLCAwLCAwKSAtIDE7CisK
KyAgICBjaGFyKiBidWZmZXI7CisgICAgQ1N0cmluZyBzdHJpbmcgPSBDU3RyaW5nOjpuZXdVbmlu
aXRpYWxpemVkKHNpemUsIGJ1ZmZlcik7CisKKyAgICBXaWRlQ2hhclRvTXVsdGlCeXRlKENQX0FD
UCwgMCwgY2hhcmFjdGVycywgcGF0aC5sZW5ndGgoKSwgYnVmZmVyLCBzaXplLCAwLCAwKTsKKwor
ICAgIHJldHVybiBzdHJpbmc7Cit9CisKKyNlbmRpZiAvLyAhVVNFKENGKQorCitib29sIG1ha2VB
bGxEaXJlY3Rvcmllcyhjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgU3RyaW5nIGZ1bGxQYXRo
ID0gcGF0aDsKKyAgICBpZiAoU0hDcmVhdGVEaXJlY3RvcnlFeCgwLCBzdHJpbmdUb051bGxUZXJt
aW5hdGVkV0NoYXIoZnVsbFBhdGgpLmRhdGEoKSwgMCkgIT0gRVJST1JfU1VDQ0VTUykgeworICAg
ICAgICBEV09SRCBlcnJvciA9IEdldExhc3RFcnJvcigpOworICAgICAgICBpZiAoZXJyb3IgIT0g
RVJST1JfRklMRV9FWElTVFMgJiYgZXJyb3IgIT0gRVJST1JfQUxSRUFEWV9FWElTVFMpIHsKKyAg
ICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBwYXRoICVzIiwgcGF0aC5hc2Np
aSgpLmRhdGEoKSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK1N0cmluZyBob21lRGlyZWN0b3J5UGF0aCgpCit7Cisg
ICAgcmV0dXJuICIiOworfQorCitTdHJpbmcgcGF0aEdldEZpbGVOYW1lKGNvbnN0IFN0cmluZyYg
cGF0aCkKK3sKKyAgICByZXR1cm4gbnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5nKDo6UGF0aEZp
bmRGaWxlTmFtZShzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIocGF0aCkuZGF0YSgpKSk7Cit9
CisKK1N0cmluZyBkaXJlY3RvcnlOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBTdHJp
bmcgbmFtZSA9IHBhdGgubGVmdChwYXRoLmxlbmd0aCgpIC0gcGF0aEdldEZpbGVOYW1lKHBhdGgp
Lmxlbmd0aCgpKTsKKyAgICBpZiAobmFtZS5jaGFyYWN0ZXJTdGFydGluZ0F0KG5hbWUubGVuZ3Ro
KCkgLSAxKSA9PSAnXFwnKSB7CisgICAgICAgIC8vIFJlbW92ZSBhbnkgdHJhaWxpbmcgIlwiLgor
ICAgICAgICBuYW1lLnRydW5jYXRlKG5hbWUubGVuZ3RoKCkgLSAxKTsKKyAgICB9CisgICAgcmV0
dXJuIG5hbWU7Cit9CisKK3N0YXRpYyBTdHJpbmcgYnVuZGxlTmFtZSgpCit7CisgICAgc3RhdGlj
IGNvbnN0IE5ldmVyRGVzdHJveWVkPFN0cmluZz4gbmFtZSA9IFtdIHsKKyAgICAgICAgU3RyaW5n
IG5hbWUgeyAiV2ViS2l0Il9zIH07CisKKyNpZiBVU0UoQ0YpCisgICAgICAgIGlmIChDRkJ1bmRs
ZVJlZiBidW5kbGUgPSBDRkJ1bmRsZUdldE1haW5CdW5kbGUoKSkgeworICAgICAgICAgICAgaWYg
KENGVHlwZVJlZiBidW5kbGVFeGVjdXRhYmxlID0gQ0ZCdW5kbGVHZXRWYWx1ZUZvckluZm9EaWN0
aW9uYXJ5S2V5KGJ1bmRsZSwga0NGQnVuZGxlRXhlY3V0YWJsZUtleSkpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoQ0ZHZXRUeXBlSUQoYnVuZGxlRXhlY3V0YWJsZSkgPT0gQ0ZTdHJpbmdHZXRUeXBl
SUQoKSkKKyAgICAgICAgICAgICAgICAgICAgbmFtZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZTdHJp
bmdSZWY+KGJ1bmRsZUV4ZWN1dGFibGUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisjZW5k
aWYKKworICAgICAgICByZXR1cm4gbmFtZTsKKyAgICB9KCk7CisKKyAgICByZXR1cm4gbmFtZTsK
K30KKworc3RhdGljIFN0cmluZyBzdG9yYWdlRGlyZWN0b3J5KERXT1JEIHBhdGhJZGVudGlmaWVy
KQoreworICAgIFZlY3RvcjxVQ2hhcj4gYnVmZmVyKE1BWF9QQVRIKTsKKyAgICBpZiAoRkFJTEVE
KFNIR2V0Rm9sZGVyUGF0aFcoMCwgcGF0aElkZW50aWZpZXIgfCBDU0lETF9GTEFHX0NSRUFURSwg
MCwgMCwgYnVmZmVyLmRhdGEoKSkpKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgYnVm
ZmVyLnJlc2l6ZSh3Y3NsZW4oYnVmZmVyLmRhdGEoKSkpOworICAgIFN0cmluZyBkaXJlY3Rvcnkg
PSBTdHJpbmc6OmFkb3B0KFdURk1vdmUoYnVmZmVyKSk7CisKKyAgICBkaXJlY3RvcnkgPSBwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoZGlyZWN0b3J5LCAiQXBwbGUgQ29tcHV0ZXJcXCIgKyBidW5k
bGVOYW1lKCkpOworICAgIGlmICghbWFrZUFsbERpcmVjdG9yaWVzKGRpcmVjdG9yeSkpCisgICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIHJldHVybiBkaXJlY3Rvcnk7Cit9CisKK3N0YXRp
YyBTdHJpbmcgY2FjaGVkU3RvcmFnZURpcmVjdG9yeShEV09SRCBwYXRoSWRlbnRpZmllcikKK3sK
KyAgICBzdGF0aWMgSGFzaE1hcDxEV09SRCwgU3RyaW5nPiBkaXJlY3RvcmllczsKKworICAgIEhh
c2hNYXA8RFdPUkQsIFN0cmluZz46Oml0ZXJhdG9yIGl0ID0gZGlyZWN0b3JpZXMuZmluZChwYXRo
SWRlbnRpZmllcik7CisgICAgaWYgKGl0ICE9IGRpcmVjdG9yaWVzLmVuZCgpKQorICAgICAgICBy
ZXR1cm4gaXQtPnZhbHVlOworCisgICAgU3RyaW5nIGRpcmVjdG9yeSA9IHN0b3JhZ2VEaXJlY3Rv
cnkocGF0aElkZW50aWZpZXIpOworICAgIGRpcmVjdG9yaWVzLmFkZChwYXRoSWRlbnRpZmllciwg
ZGlyZWN0b3J5KTsKKworICAgIHJldHVybiBkaXJlY3Rvcnk7Cit9CisKK3N0YXRpYyBTdHJpbmcg
Z2VuZXJhdGVUZW1wb3JhcnlQYXRoKGNvbnN0IEZ1bmN0aW9uPGJvb2woY29uc3QgU3RyaW5nJik+
JiBhY3Rpb24pCit7CisgICAgd2NoYXJfdCB0ZW1wUGF0aFtNQVhfUEFUSF07CisgICAgaW50IHRl
bXBQYXRoTGVuZ3RoID0gOjpHZXRUZW1wUGF0aFcoV1RGX0FSUkFZX0xFTkdUSCh0ZW1wUGF0aCks
IHRlbXBQYXRoKTsKKyAgICBpZiAodGVtcFBhdGhMZW5ndGggPD0gMCB8fCB0ZW1wUGF0aExlbmd0
aCA+IFdURl9BUlJBWV9MRU5HVEgodGVtcFBhdGgpKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7
CisKKyAgICBTdHJpbmcgcHJvcG9zZWRQYXRoOworICAgIGRvIHsKKyAgICAgICAgd2NoYXJfdCB0
ZW1wRmlsZVtdID0gTCJYWFhYWFhYWC50bXAiOyAvLyBVc2UgOC4zIHN0eWxlIG5hbWUgKG1vcmUg
Y2hhcmFjdGVycyBhcmVuJ3QgaGVscGZ1bCBkdWUgdG8gOC4zIHNob3J0IGZpbGUgbmFtZXMpCisg
ICAgICAgIGNvbnN0IGludCByYW5kb21QYXJ0TGVuZ3RoID0gODsKKyAgICAgICAgY3J5cHRvZ3Jh
cGhpY2FsbHlSYW5kb21WYWx1ZXModGVtcEZpbGUsIHJhbmRvbVBhcnRMZW5ndGggKiBzaXplb2Yo
d2NoYXJfdCkpOworCisgICAgICAgIC8vIExpbWl0IHRvIHZhbGlkIGZpbGVzeXN0ZW0gY2hhcmFj
dGVycywgYWxzbyBleGNsdWRpbmcgb3RoZXJzIHRoYXQgY291bGQgYmUgcHJvYmxlbWF0aWMsIGxp
a2UgcHVuY3R1YXRpb24uCisgICAgICAgIC8vIGRvbid0IGluY2x1ZGUgYm90aCB1cHBlciBhbmQg
bG93ZXJjYXNlIHNpbmNlIFdpbmRvd3MgZmlsZSBzeXN0ZW1zIGFyZSB0eXBpY2FsbHkgbm90IGNh
c2Ugc2Vuc2l0aXZlLgorICAgICAgICBjb25zdCBjaGFyIHZhbGlkQ2hhcnNbXSA9ICIwMTIzNDU2
Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiOworICAgICAgICBmb3IgKGludCBpID0gMDsg
aSA8IHJhbmRvbVBhcnRMZW5ndGg7ICsraSkKKyAgICAgICAgICAgIHRlbXBGaWxlW2ldID0gdmFs
aWRDaGFyc1t0ZW1wRmlsZVtpXSAlIChzaXplb2YodmFsaWRDaGFycykgLSAxKV07CisKKyAgICAg
ICAgQVNTRVJUKHdjc2xlbih0ZW1wRmlsZSkgPT0gV1RGX0FSUkFZX0xFTkdUSCh0ZW1wRmlsZSkg
LSAxKTsKKworICAgICAgICBwcm9wb3NlZFBhdGggPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
bnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5nKHRlbXBQYXRoKSwgbnVsbFRlcm1pbmF0ZWRXQ2hh
clRvU3RyaW5nKHRlbXBGaWxlKSk7CisgICAgICAgIGlmIChwcm9wb3NlZFBhdGguaXNFbXB0eSgp
KQorICAgICAgICAgICAgYnJlYWs7CisgICAgfSB3aGlsZSAoIWFjdGlvbihwcm9wb3NlZFBhdGgp
KTsKKworICAgIHJldHVybiBwcm9wb3NlZFBhdGg7Cit9CisKK1N0cmluZyBvcGVuVGVtcG9yYXJ5
RmlsZShjb25zdCBTdHJpbmcmLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKK3sKKyAgICBo
YW5kbGUgPSBJTlZBTElEX0hBTkRMRV9WQUxVRTsKKworICAgIFN0cmluZyBwcm9wb3NlZFBhdGgg
PSBnZW5lcmF0ZVRlbXBvcmFyeVBhdGgoWyZoYW5kbGVdKGNvbnN0IFN0cmluZyYgcHJvcG9zZWRQ
YXRoKSB7CisgICAgICAgIC8vIHVzZSBDUkVBVEVfTkVXIHRvIGF2b2lkIG92ZXJ3cml0aW5nIGFu
IGV4aXN0aW5nIGZpbGUgd2l0aCB0aGUgc2FtZSBuYW1lCisgICAgICAgIGhhbmRsZSA9IDo6Q3Jl
YXRlRmlsZVcoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKHByb3Bvc2VkUGF0aCkuZGF0YSgp
LCBHRU5FUklDX1JFQUQgfCBHRU5FUklDX1dSSVRFLCAwLCAwLCBDUkVBVEVfTkVXLCBGSUxFX0FU
VFJJQlVURV9OT1JNQUwsIDApOworCisgICAgICAgIHJldHVybiBpc0hhbmRsZVZhbGlkKGhhbmRs
ZSkgfHwgR2V0TGFzdEVycm9yKCkgPT0gRVJST1JfQUxSRUFEWV9FWElTVFM7CisgICAgfSk7CisK
KyAgICBpZiAoIWlzSGFuZGxlVmFsaWQoaGFuZGxlKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygp
OworCisgICAgcmV0dXJuIHByb3Bvc2VkUGF0aDsKK30KKworUGxhdGZvcm1GaWxlSGFuZGxlIG9w
ZW5GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlIG1vZGUpCit7CisgICAgRFdP
UkQgZGVzaXJlZEFjY2VzcyA9IDA7CisgICAgRFdPUkQgY3JlYXRpb25EaXNwb3NpdGlvbiA9IDA7
CisgICAgRFdPUkQgc2hhcmVNb2RlID0gMDsKKyAgICBzd2l0Y2ggKG1vZGUpIHsKKyAgICBjYXNl
IEZpbGVPcGVuTW9kZTo6UmVhZDoKKyAgICAgICAgZGVzaXJlZEFjY2VzcyA9IEdFTkVSSUNfUkVB
RDsKKyAgICAgICAgY3JlYXRpb25EaXNwb3NpdGlvbiA9IE9QRU5fRVhJU1RJTkc7CisgICAgICAg
IHNoYXJlTW9kZSA9IEZJTEVfU0hBUkVfUkVBRDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBG
aWxlT3Blbk1vZGU6OldyaXRlOgorICAgICAgICBkZXNpcmVkQWNjZXNzID0gR0VORVJJQ19XUklU
RTsKKyAgICAgICAgY3JlYXRpb25EaXNwb3NpdGlvbiA9IENSRUFURV9BTFdBWVM7CisgICAgICAg
IGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IH0KKworICAgIFN0cmluZyBkZXN0aW5hdGlvbiA9IHBhdGg7CisgICAgcmV0dXJuIENyZWF0ZUZp
bGUoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGRlc3RpbmF0aW9uKS5kYXRhKCksIGRlc2ly
ZWRBY2Nlc3MsIHNoYXJlTW9kZSwgMCwgY3JlYXRpb25EaXNwb3NpdGlvbiwgRklMRV9BVFRSSUJV
VEVfTk9STUFMLCAwKTsKK30KKwordm9pZCBjbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlJiBo
YW5kbGUpCit7CisgICAgaWYgKGlzSGFuZGxlVmFsaWQoaGFuZGxlKSkgeworICAgICAgICA6OkNs
b3NlSGFuZGxlKGhhbmRsZSk7CisgICAgICAgIGhhbmRsZSA9IGludmFsaWRQbGF0Zm9ybUZpbGVI
YW5kbGU7CisgICAgfQorfQorCitsb25nIGxvbmcgc2Vla0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxl
IGhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCwgRmlsZVNlZWtPcmlnaW4gb3JpZ2luKQoreworICAg
IERXT1JEIG1vdmVNZXRob2QgPSBGSUxFX0JFR0lOOworCisgICAgaWYgKG9yaWdpbiA9PSBGaWxl
U2Vla09yaWdpbjo6Q3VycmVudCkKKyAgICAgICAgbW92ZU1ldGhvZCA9IEZJTEVfQ1VSUkVOVDsK
KyAgICBlbHNlIGlmIChvcmlnaW4gPT0gRmlsZVNlZWtPcmlnaW46OkVuZCkKKyAgICAgICAgbW92
ZU1ldGhvZCA9IEZJTEVfRU5EOworCisgICAgTEFSR0VfSU5URUdFUiBsYXJnZU9mZnNldDsKKyAg
ICBsYXJnZU9mZnNldC5RdWFkUGFydCA9IG9mZnNldDsKKworICAgIGxhcmdlT2Zmc2V0Lkxvd1Bh
cnQgPSBTZXRGaWxlUG9pbnRlcihoYW5kbGUsIGxhcmdlT2Zmc2V0Lkxvd1BhcnQsICZsYXJnZU9m
ZnNldC5IaWdoUGFydCwgbW92ZU1ldGhvZCk7CisKKyAgICBpZiAobGFyZ2VPZmZzZXQuTG93UGFy
dCA9PSBJTlZBTElEX1NFVF9GSUxFX1BPSU5URVIgJiYgR2V0TGFzdEVycm9yKCkgIT0gTk9fRVJS
T1IpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIHJldHVybiBsYXJnZU9mZnNldC5RdWFkUGFy
dDsKK30KKworaW50IHdyaXRlVG9GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNvbnN0
IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCit7CisgICAgaWYgKCFpc0hhbmRsZVZhbGlkKGhhbmRs
ZSkpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIERXT1JEIGJ5dGVzV3JpdHRlbjsKKyAgICBi
b29sIHN1Y2Nlc3MgPSBXcml0ZUZpbGUoaGFuZGxlLCBkYXRhLCBsZW5ndGgsICZieXRlc1dyaXR0
ZW4sIDApOworCisgICAgaWYgKCFzdWNjZXNzKQorICAgICAgICByZXR1cm4gLTE7CisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGludD4oYnl0ZXNXcml0dGVuKTsKK30KKworaW50IHJlYWRGcm9tRmls
ZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQorewor
ICAgIGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUpKQorICAgICAgICByZXR1cm4gLTE7CisKKyAg
ICBEV09SRCBieXRlc1JlYWQ7CisgICAgYm9vbCBzdWNjZXNzID0gOjpSZWFkRmlsZShoYW5kbGUs
IGRhdGEsIGxlbmd0aCwgJmJ5dGVzUmVhZCwgMCk7CisKKyAgICBpZiAoIXN1Y2Nlc3MpCisgICAg
ICAgIHJldHVybiAtMTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihieXRlc1JlYWQpOwor
fQorCitib29sIGhhcmRMaW5rT3JDb3B5RmlsZShjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3Qg
U3RyaW5nJiBkZXN0aW5hdGlvbikKK3sKKyAgICByZXR1cm4gISE6OkNvcHlGaWxlKHN0cmluZ1Rv
TnVsbFRlcm1pbmF0ZWRXQ2hhcihzb3VyY2UpLmRhdGEoKSwgc3RyaW5nVG9OdWxsVGVybWluYXRl
ZFdDaGFyKGRlc3RpbmF0aW9uKS5kYXRhKCksIFRSVUUpOworfQorCitTdHJpbmcgbG9jYWxVc2Vy
U3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gY2FjaGVkU3RvcmFnZURp
cmVjdG9yeShDU0lETF9MT0NBTF9BUFBEQVRBKTsKK30KKworU3RyaW5nIHJvYW1pbmdVc2VyU3Bl
Y2lmaWNTdG9yYWdlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gY2FjaGVkU3RvcmFnZURpcmVj
dG9yeShDU0lETF9BUFBEQVRBKTsKK30KKworVmVjdG9yPFN0cmluZz4gbGlzdERpcmVjdG9yeShj
b25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgY29uc3QgU3RyaW5nJiBmaWx0ZXIpCit7CisgICAgVmVj
dG9yPFN0cmluZz4gZW50cmllczsKKworICAgIFBhdGhXYWxrZXIgd2Fsa2VyKGRpcmVjdG9yeSwg
ZmlsdGVyKTsKKyAgICBpZiAoIXdhbGtlci5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiBlbnRy
aWVzOworCisgICAgZG8geworICAgICAgICBpZiAod2Fsa2VyLmRhdGEoKS5kd0ZpbGVBdHRyaWJ1
dGVzICYgRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZCisgICAgICAgICAgICAmJiAoIXdjc2NtcCh3
YWxrZXIuZGF0YSgpLmNGaWxlTmFtZSwgTCIuIikgfHwgIXdjc2NtcCh3YWxrZXIuZGF0YSgpLmNG
aWxlTmFtZSwgTCIuLiIpKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGVudHJp
ZXMuYXBwZW5kKGRpcmVjdG9yeSArICJcXCIgKyByZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFy
Kj4od2Fsa2VyLmRhdGEoKS5jRmlsZU5hbWUpKTsKKyAgICB9IHdoaWxlICh3YWxrZXIuc3RlcCgp
KTsKKworICAgIHJldHVybiBlbnRyaWVzOworfQorCitib29sIGdldFZvbHVtZUZyZWVTcGFjZShj
b25zdCBTdHJpbmcmLCB1aW50NjRfdCYpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitPcHRp
b25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQorewor
ICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUoZnNGaWxlLmRhdGEoKSwgRmlsZU9wZW5Nb2RlOjpS
ZWFkKTsKKyAgICBpZiAoIWlzSGFuZGxlVmFsaWQoaGFuZGxlKSkKKyAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKworICAgIEJZX0hBTkRMRV9GSUxFX0lORk9STUFUSU9OIGZpbGVJbmZvcm1h
dGlvbiA9IHsgfTsKKyAgICBpZiAoITo6R2V0RmlsZUluZm9ybWF0aW9uQnlIYW5kbGUoaGFuZGxl
LCAmZmlsZUluZm9ybWF0aW9uKSkgeworICAgICAgICBjbG9zZUZpbGUoaGFuZGxlKTsKKyAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICB9CisKKyAgICBjbG9zZUZpbGUoaGFuZGxlKTsK
KworICAgIHJldHVybiBmaWxlSW5mb3JtYXRpb24uZHdWb2x1bWVTZXJpYWxOdW1iZXI7Cit9CisK
K1N0cmluZyByZWFsUGF0aChjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQoreworICAgIHJldHVybiBn
ZXRGaW5hbFBhdGhOYW1lKGZpbGVQYXRoKTsKK30KKworU3RyaW5nIGNyZWF0ZVRlbXBvcmFyeURp
cmVjdG9yeSgpCit7CisgICAgcmV0dXJuIGdlbmVyYXRlVGVtcG9yYXJ5UGF0aChbXShjb25zdCBT
dHJpbmcmIHByb3Bvc2VkUGF0aCkgeworICAgICAgICByZXR1cm4gbWFrZUFsbERpcmVjdG9yaWVz
KHByb3Bvc2VkUGF0aCk7CisgICAgfSk7Cit9CisKK2Jvb2wgZGVsZXRlTm9uRW1wdHlEaXJlY3Rv
cnkoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnlQYXRoKQoreworICAgIFNIRklMRU9QU1RSVUNUIGRl
bGV0ZU9wZXJhdGlvbiA9IHsKKyAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgRk9fREVMRVRFLAor
ICAgICAgICBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoZGlyZWN0b3J5UGF0aCkuZGF0YSgp
LAorICAgICAgICBMIiIsCisgICAgICAgIEZPRl9OT0NPTkZJUk1BVElPTiB8IEZPRl9OT0VSUk9S
VUkgfCBGT0ZfU0lMRU5ULAorICAgICAgICBmYWxzZSwKKyAgICAgICAgMCwKKyAgICAgICAgTCIi
CisgICAgfTsKKyAgICByZXR1cm4gIVNIRmlsZU9wZXJhdGlvbigmZGVsZXRlT3BlcmF0aW9uKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgRmlsZVN5c3RlbUltcGwKK30gLy8gbmFtZXNwYWNlIFdURgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvd2luL1BhdGhXYWxrZXIuY3BwIGIvU291cmNlL1dU
Ri93dGYvd2luL1BhdGhXYWxrZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM2ZDNmOTcwNjA0OWNiMTNjOWVm
NjM1NWViYjYzYTUwNzk4NTAyMjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93
aW4vUGF0aFdhbGtlci5jcHAKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlIDx3dGYvd2luL1BhdGhXYWxrZXIuaD4KKworI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmlu
Z0V4dHJhcy5oPgorCituYW1lc3BhY2UgV1RGIHsKKworUGF0aFdhbGtlcjo6UGF0aFdhbGtlcihj
b25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgY29uc3QgU3RyaW5nJiBwYXR0ZXJuKQoreworICAgIFN0
cmluZyBwYXRoID0gZGlyZWN0b3J5ICsgIlxcIiArIHBhdHRlcm47CisgICAgbV9oYW5kbGUgPSA6
OkZpbmRGaXJzdEZpbGVXKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihwYXRoKS5kYXRhKCks
ICZtX2RhdGEpOworfQorCitQYXRoV2Fsa2VyOjp+UGF0aFdhbGtlcigpCit7CisgICAgaWYgKCFp
c1ZhbGlkKCkpCisgICAgICAgIHJldHVybjsKKyAgICA6OkZpbmRDbG9zZShtX2hhbmRsZSk7Cit9
CisKK2Jvb2wgUGF0aFdhbGtlcjo6c3RlcCgpCit7CisgICAgcmV0dXJuIDo6RmluZE5leHRGaWxl
VyhtX2hhbmRsZSwgJm1fZGF0YSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvd2luL1BhdGhXYWxrZXIuaCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9Q
YXRoV2Fsa2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTUzYWUyZTZhZTg1NjFhZjM0NTRlMjE4Mzg4ZGY4OTAw
NWVhMzNiYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9QYXRoV2Fsa2Vy
LmgKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgPFdpbmRvd3Mu
aD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5o
PgorCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3MgUGF0aFdhbGtlciB7CisgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoUGF0aFdhbGtlcik7CitwdWJsaWM6CisgICAgUGF0aFdhbGtlcihjb25zdCBX
VEY6OlN0cmluZyYgZGlyZWN0b3J5LCBjb25zdCBXVEY6OlN0cmluZyYgcGF0dGVybik7CisgICAg
flBhdGhXYWxrZXIoKTsKKworICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1faGFu
ZGxlICE9IElOVkFMSURfSEFORExFX1ZBTFVFOyB9CisgICAgY29uc3QgV0lOMzJfRklORF9EQVRB
VyYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQorCisgICAgYm9vbCBzdGVwKCk7CisK
K3ByaXZhdGU6CisgICAgSEFORExFIG1faGFuZGxlOworICAgIFdJTjMyX0ZJTkRfREFUQVcgbV9k
YXRhOworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL0NETS5jcHAKaW5kZXggNGZlMjUwYjlmYzhlYzQ1NjE4MjFiMDc3ZWVk
OTZhZWM3YjAxNTUwNi4uZWJmMDY3ZjdiNTdmMTZjMzMwYjVkNzQwNDM4ODM0MjIyZWZhYmQ4ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcApAQCAt
MzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIkNETUZhY3RvcnkuaCIKICNpbmNsdWRlICJDRE1Qcml2
YXRlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAj
aW5jbHVkZSAiSW5pdERhdGFSZWdpc3RyeS5oIgogI2luY2x1ZGUgIk1lZGlhS2V5c1JlcXVpcmVt
ZW50LmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKQEAgLTQyLDYgKzQxLDcgQEAKICNpbmNs
dWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luRGF0YS5oIgog
I2luY2x1ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0
TWVkaWFLZXlTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5U2Vzc2lvbi5jcHAKaW5kZXggZTY2NmNlOTc5MzY3NDVl
ZGEwMTA2NjA3OTc4ZjZlOTgwOWZmMGIzOS4uNjVlZGRhMTZmNzk1MGQyNDliY2Y3MzE2Mjg2MTUw
ODU0ZWYyODFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNlc3Npb24uY3Bw
CkBAIC0zMCwxMyArMzAsMTMgQEAKIAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAi
RXZlbnROYW1lcy5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJQYWdlLmgi
CiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5EYXRhLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIK
ICNpbmNsdWRlICJXZWJLaXRNZWRpYUtleUVycm9yLmgiCiAjaW5jbHVkZSAiV2ViS2l0TWVkaWFL
ZXlNZXNzYWdlRXZlbnQuaCIKICNpbmNsdWRlICJXZWJLaXRNZWRpYUtleXMuaCIKKyNpbmNsdWRl
IDx3dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcAppbmRleCA2
ZGQ0MTcxMzA4YWQ0NjdmMmE0YzI3YzljZTk3NzI5YjNmYWQ4Y2Y5Li4zNjg3OTRlZjVjMWEwZmU3
OThiMmExYmE1MDg4NmMwYjRmZWJjYjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwCkBAIC0yNywxMiArMjcsMTIgQEAKICNp
bmNsdWRlICJET01GaWxlU3lzdGVtLmgiCiAKICNpbmNsdWRlICJGaWxlLmgiCi0jaW5jbHVkZSAi
RmlsZU1ldGFkYXRhLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkZpbGVT
eXN0ZW1EaXJlY3RvcnlFbnRyeS5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW1GaWxlRW50cnkuaCIK
ICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSA8d3RmL0Nyb3Nz
VGhyZWFkQ29waWVyLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVNZXRhZGF0YS5oPgorI2luY2x1ZGUg
PHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL1VVSUQuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRW50cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1FbnRyeS5jcHAKaW5kZXggZGNjYjVhMTE4NjNkOWJiMTBm
Mjg3ZDU3ZmRjMTM5YTBiOWIxYjExMS4uNDI0Y2NhMjZjZDRjN2I4NjEwM2ZkNTIwZjFmZjcwZjBk
YTAzNTFlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0Zp
bGVTeXN0ZW1FbnRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBp
L0ZpbGVTeXN0ZW1FbnRyeS5jcHAKQEAgLTI5LDEwICsyOSwxMCBAQAogI2luY2x1ZGUgIkRPTUV4
Y2VwdGlvbi5oIgogI2luY2x1ZGUgIkRPTUZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJFcnJvckNh
bGxiYWNrLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW1E
aXJlY3RvcnlFbnRyeS5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW1FbnRyeUNhbGxiYWNrLmgiCiAj
aW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lz
dGVtLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5jcHAKaW5kZXgg
YzdmZGZkMGRkNjU0NWY4YzZmZTUzNDJmYjM2NDZmZTlhODQ2OTRiOS4uYjQyOWIzZjI2YjkzNDZm
YmIxZGFlN2VjNjUwZTQ2ZTI1NmRmYzhjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuY3BwCkBAIC0yOCw4
ICsyOCw4IEBACiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAotI2luY2x1ZGUgIkZp
bGVTeXN0ZW0uaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgPHd0Zi9G
aWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDIxNzhj
YzQyYTliNTExNDNjZTVkODVmNGQxMWY3YWIyNjA5MjRlYzcuLjI4NWQ1MDJkYWU4MWE5YTc2OGFh
MzRhMWQyNTZkZjUwNDdkNjFiZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3Bw
CkBAIC0yOCw3ICsyOCw2IEBACiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAotI2lu
Y2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJJREJCaW5kaW5nVXRpbGl0aWVzLmgiCiAj
aW5jbHVkZSAiSURCR2V0QWxsUmVjb3Jkc0RhdGEuaCIKICNpbmNsdWRlICJJREJHZXRBbGxSZXN1
bHQuaCIKQEAgLTU0LDYgKzUzLDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0dsb2Jh
bE9iamVjdC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZ0lubGluZXMuaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJ1Y3R1cmVJbmxpbmVzLmg+CisjaW5jbHVkZSA8d3Rm
L0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL1NRTGl0ZUlEQlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJUcmFuc2FjdGlvbi5jcHAKaW5kZXggNzgxYjc5
ZjYzYTA2MWQ1OGQxYzkyYTQxM2MyMWFmZGU2NTY0OTM2ZS4uYmVlYTZiMTY3MDYyNGU1Yzk4MGYz
MTY2MzRjMDM2NWRmZGViYzZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQlRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCVHJhbnNhY3Rpb24uY3BwCkBA
IC0yNywxMyArMjcsMTMgQEAKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCi0jaW5j
bHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIklEQkN1cnNvckluZm8uaCIKICNpbmNsdWRl
ICJJbmRleGVkREIuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiU1FMaXRlSURC
QmFja2luZ1N0b3JlLmgiCiAjaW5jbHVkZSAiU1FMaXRlSURCQ3Vyc29yLmgiCiAjaW5jbHVkZSAi
U1FMaXRlVHJhbnNhY3Rpb24uaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgSURCU2VydmVyIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNl
cnZlci5jcHAKaW5kZXggNjFhZWI4ZjdkNzAxNTFiOTQyMjg1YWNkY2NmODFiZmIxZWE0MjYyNi4u
ZGQ5ZjVhZDI5MzE3YzVjZGM3NTg4MzJhYzZhMzcwYmRmOTVkZDg5OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vz
c0lEQlNlcnZlci5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RB
VEFCQVNFKQogCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIklEQkNvbm5lY3Rp
b25Ub0NsaWVudC5oIgogI2luY2x1ZGUgIklEQkNvbm5lY3Rpb25Ub1NlcnZlci5oIgogI2luY2x1
ZGUgIklEQkN1cnNvckluZm8uaCIKQEAgLTQwLDYgKzM5LDcgQEAKICNpbmNsdWRlICJJREJSZXN1
bHREYXRhLmgiCiAjaW5jbHVkZSAiSURCVmFsdWUuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisj
aW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKaW5kZXggZDk2NTQxZWQ0OWY2OTM4MjRlZDFk
ZmM1MjUwODhkYWMzMmJjNTljNS4uNDA4ZjYyMjEyYWUyYjE3YjM4YWMxOTA5ODk1MWEwZjA5MmQ0
YjA0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZVRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2VUcmFja2VyLmNwcApAQCAtMzQsNyArMzQsNiBAQAogI2luY2x1ZGUgIkRhdGFiYXNl
TWFuYWdlci5oIgogI2luY2x1ZGUgIkRhdGFiYXNlTWFuYWdlckNsaWVudC5oIgogI2luY2x1ZGUg
IkRhdGFiYXNlVGhyZWFkLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKICNpbmNsdWRlICJPcmlnaW5Mb2NrLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmln
aW4uaCIKQEAgLTQzLDYgKzQyLDcgQEAKICNpbmNsdWRlICJTUUxpdGVGaWxlU3lzdGVtLmgiCiAj
aW5jbHVkZSAiU1FMaXRlU3RhdGVtZW50LmgiCiAjaW5jbHVkZSAiU1FMaXRlVHJhbnNhY3Rpb24u
aCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFk
Lmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9PcmlnaW5Mb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvT3Jp
Z2luTG9jay5jcHAKaW5kZXggNDIzYjJlNjZkZGZhMTJjYzM0MGY2MGZjZTU5ZDM1M2RmOTk4Njdm
NC4uYTIxYmNkYjc4Mzg2YzgxMGVjNTk5NDFjMjc1ZjRlZmJhZmYyM2ZiMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5Mb2NrLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL09yaWdpbkxvY2suY3BwCkBAIC0yNiw4
ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiT3JpZ2luTG9jay5oIgog
Ci0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFN0cmlu
ZyBPcmlnaW5Mb2NrOjpsb2NrRmlsZU5hbWVGb3JQYXRoKFN0cmluZyBvcmlnaW5QYXRoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5Mb2NrLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL09yaWdpbkxvY2suaAppbmRleCBh
MTZlODRmMTQ4OWRhZjJlZThmNTA0NjE5ZDEzOTkzYjhkMzc1ZTEwLi5lY2MyOWU4OTAyNWJkZjYy
OTM5MmIxMDU5ZWY4ODcwZTZmOGY5MmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL09yaWdpbkxvY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL09yaWdpbkxvY2suaApAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9u
Y2UKIAotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5o
PgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3Vu
dGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL2NvY29hL0RhdGFiYXNlTWFuYWdlckNvY29h
Lm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9jb2NvYS9EYXRhYmFzZU1h
bmFnZXJDb2NvYS5tbQppbmRleCA3Y2ZlOWZiMDYzMjY5MTgxZDQ0ZjEzYzM4MzY4MjUzM2Q0ZTRk
ZmM5Li44ZDMyNTA3M2IwNGFjYTFkMzI4NDk2ZTE4MjgzMzhkZmViY2FiZmYzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL2NvY29hL0RhdGFiYXNlTWFuYWdl
ckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvY29jb2Ev
RGF0YWJhc2VNYW5hZ2VyQ29jb2EubW0KQEAgLTI5LDcgKzI5LDcgQEAKICNpbXBvcnQgImNvbmZp
Zy5oIgogI2ltcG9ydCAiRGF0YWJhc2VNYW5hZ2VyLmgiCiAKLSNpbXBvcnQgIkZpbGVTeXN0ZW0u
aCIKKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDRmYmRkZTM5YTRhYzc2MjI4MGRjMjk3N2FjMWZhZDY3OTQwZGZjNjIuLmQxNjRhNGM3MmFk
YjhkNWRjMGQ2MDRkZThiNmQxZTU1NWM3NTIxNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9Q
QUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEzMyw3ICsxMzMsNiBAQAogCQlB
MTE3NUI1NzFGNkI0NzA1MDBDNEI5RjAgLyogRGVmYXVsdFNlYXJjaFByb3ZpZGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTE3NUI1NTFGNkI0NzA1
MDBDNEI5RjAgLyogRGVmYXVsdFNlYXJjaFByb3ZpZGVyLmggKi87IH07CiAJCUExMTc1QjU4MUY2
QjQ3MDUwMEM0QjlGMCAvKiBEZWZhdWx0U2VhcmNoUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTExNzVCNTYxRjZCNDcwNTAwQzRCOUYw
IC8qIERlZmF1bHRTZWFyY2hQcm92aWRlci5jcHAgKi87IH07CiAJCUExMTc1QjVBMUY2QjRBODQw
MEM0QjlGMCAvKiBOU1Njcm9sbFZpZXdTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEExMTc1QjU5MUY2QjRBODQwMEM0QjlGMCAvKiBOU1Njcm9sbFZp
ZXdTUEkuaCAqLzsgfTsKLQkJQTFGNTVEQ0YxRjU1MjhFQzAwRURCNzVGIC8qIE1ldGFkYXRhU1BJ
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUY1NURD
RTFGNTUyOEVDMDBFREI3NUYgLyogTWV0YWRhdGFTUEkuaCAqLzsgfTsKIAkJQTFGNjNDOUYyMUE0
REJGNzAwNkZCNDNCIC8qIFBhc3NLaXRTb2Z0TGluay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFGNjNDOUQyMUE0REJGNzAwNkZCNDNCIC8qIFBhc3NL
aXRTb2Z0TGluay5oICovOyB9OwogCQlBMUY2M0NBMDIxQTREQkY3MDA2RkI0M0IgLyogUGFzc0tp
dFNvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTFGNjNDOUUyMUE0REJGNzAwNkZCNDNCIC8qIFBhc3NLaXRTb2Z0TGluay5tbSAqLzsgfTsK
IAkJQTMwRDQxMjExRjBERDBFQTAwQjcxOTU0IC8qIEtpbGxSaW5nLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMzBENDExRTFGMEREMEVBMDBCNzE5NTQg
LyogS2lsbFJpbmcuaCAqLzsgfTsKQEAgLTI5NCw3ICsyOTMsNiBAQAogCQlBMTE3NUI1NTFGNkI0
NzA1MDBDNEI5RjAgLyogRGVmYXVsdFNlYXJjaFByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERl
ZmF1bHRTZWFyY2hQcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTE3
NUI1NjFGNkI0NzA1MDBDNEI5RjAgLyogRGVmYXVsdFNlYXJjaFByb3ZpZGVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IERlZmF1bHRTZWFyY2hQcm92aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUExMTc1QjU5MUY2QjRBODQwMEM0QjlGMCAvKiBOU1Njcm9sbFZpZXdTUEku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTlNTY3JvbGxWaWV3U1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUExRjU1RENFMUY1NTI4RUMwMEVEQjc1RiAvKiBNZXRhZGF0YVNQSS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBNZXRhZGF0YVNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
MUY2M0M5RDIxQTREQkY3MDA2RkI0M0IgLyogUGFzc0tpdFNvZnRMaW5rLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFBhc3NLaXRTb2Z0TGluay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMUY2
M0M5RTIxQTREQkY3MDA2RkI0M0IgLyogUGFzc0tpdFNvZnRMaW5rLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gUGFzc0tpdFNvZnRMaW5rLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBMzBENDExRTFGMEREMEVBMDBCNzE5NTQgLyogS2lsbFJpbmcuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gS2lsbFJpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTQ0OSw3ICs0NDcsNiBAQAogCQkJCUExMDI2NTg4MUY1Njc0N0EwMEI0Qzg0NCAvKiBISVRv
b2xib3hTUEkuaCAqLywKIAkJCQkwQzc3ODU3MjFGNDUxMzBGMDBGNEVCQjYgLyogTG9va3VwU1BJ
LmggKi8sCiAJCQkJMEM3Nzg1NzMxRjQ1MTMwRjAwRjRFQkI2IC8qIE1lZGlhUmVtb3RlU1BJLmgg
Ki8sCi0JCQkJQTFGNTVEQ0UxRjU1MjhFQzAwRURCNzVGIC8qIE1ldGFkYXRhU1BJLmggKi8sCiAJ
CQkJMEM3Nzg1NzQxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TQWNjZXNzaWJpbGl0eVNQSS5oICovLAog
CQkJCTFDQ0VFNEY2MjBEODc0M0YwMDQ3QjA5NyAvKiBOU0FwcGVhcmFuY2VTUEkuaCAqLywKIAkJ
CQkwQzc3ODU3NTFGNDUxMzBGMDBGNEVCQjYgLyogTlNBcHBsaWNhdGlvblNQSS5oICovLApAQCAt
NzAxLDcgKzY5OCw2IEBACiAJCQkJMEM1QUY5MUQxRjQzQTRDNzAwMkVBQzAyIC8qIE1lZGlhUGxh
eWVyU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzc3ODU4QzFGNDUxMzBGMDBGNEVCQjYgLyog
TWVkaWFSZW1vdGVTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBDMDBDRkQ0MUY2OENFNDYwMEFB
QzI2RCAvKiBNZWRpYVRpbWVBVkZvdW5kYXRpb24uaCBpbiBIZWFkZXJzICovLAotCQkJCUExRjU1
RENGMUY1NTI4RUMwMEVEQjc1RiAvKiBNZXRhZGF0YVNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEM1QUY5MUUxRjQzQTRDNzAwMkVBQzAyIC8qIE1vYmlsZUdlc3RhbHRTUEkuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBDMkRBMTQ5MUYzQkVCNDkwMERCQzMxNyAvKiBORUZpbHRlclNvdXJjZVNQSS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEM3Nzg1OEQxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TQWNjZXNz
aWJpbGl0eVNQSS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9QbGF0Zm9y
bU1hYy5jbWFrZQppbmRleCA2YjFiZDI1OTI2ZjQyYmQ2NDYwMzJhZDkwNGE3ODdlNjliNzUwYWM5
Li5mMTMwNzY4NDNmODgzMTZiYzM4YmQ4MGRhNzJmNDg5YTgyMzc2MjhjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTU4LDcgKzU4LDYgQEAgbGlzdChBUFBF
TkQgUEFMX1BVQkxJQ19IRUFERVJTCiAgICAgc3BpL21hYy9ISVRvb2xib3hTUEkuaAogICAgIHNw
aS9tYWMvTG9va3VwU1BJLmgKICAgICBzcGkvbWFjL01lZGlhUmVtb3RlU1BJLmgKLSAgICBzcGkv
bWFjL01ldGFkYXRhU1BJLmgKICAgICBzcGkvbWFjL05TQWNjZXNzaWJpbGl0eVNQSS5oCiAgICAg
c3BpL21hYy9OU0FwcGVhcmFuY2VTUEkuaAogICAgIHNwaS9tYWMvTlNBcHBsaWNhdGlvblNQSS5o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMvTWV0YWRhdGFTUEku
aCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9NZXRhZGF0YVNQSS5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MTU1NDdjNmI4NTEwZTMwNjE4ZTIyODJhZDViNzg0MDE2
Y2EzNzIxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9NZXRhZGF0YVNQSS5oCisrKyAvZGV2L251bGwK
QEAgLTEsMzggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgVVNFKEFQ
UExFX0lOVEVSTkFMX1NESykKLQotI2luY2x1ZGUgPENvcmVTZXJ2aWNlcy9Db3JlU2VydmljZXNQ
cml2Lmg+Ci0KLSNlbmRpZgotCi1XVEZfRVhURVJOX0NfQkVHSU4KLQotQm9vbGVhbiBNREl0ZW1T
ZXRBdHRyaWJ1dGUoTURJdGVtUmVmLCBDRlN0cmluZ1JlZiBuYW1lLCBDRlR5cGVSZWYgYXR0cik7
Ci0KLVdURl9FWFRFUk5fQ19FTkQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
TWFjLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXggODY2ZWE2
YTU0YjlhNDJmODc4ZDRlMTliNjUwYTJjM2MzYmEyMDlhOS4uNGQ3MmY5ZGVlZjgwZWI2ZTQ0NTY3
OTczZDVjNmRjZmY2OTA1NWI4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1N
YWMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTE4OSw3
ICsxODksNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9hdWRp
by9tYWMvQ0FSaW5nQnVmZmVyLmNwcAogICAgIHBsYXRmb3JtL2F1ZGlvL21hYy9GRlRGcmFtZU1h
Yy5jcHAKIAotICAgIHBsYXRmb3JtL2NmL0ZpbGVTeXN0ZW1DRi5jcHAKICAgICBwbGF0Zm9ybS9j
Zi9LZXllZERlY29kZXJDRi5jcHAKICAgICBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAK
ICAgICBwbGF0Zm9ybS9jZi9NYWluVGhyZWFkU2hhcmVkVGltZXJDRi5jcHAKQEAgLTIwMCw3ICsx
OTksNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9jb2NvYS9D
b250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbQogICAgIHBsYXRmb3JtL2NvY29hL0Nv
cmVWaWRlb1NvZnRMaW5rLmNwcAogICAgIHBsYXRmb3JtL2NvY29hL0ZpbGVNb25pdG9yQ29jb2Eu
bW0KLSAgICBwbGF0Zm9ybS9jb2NvYS9GaWxlU3lzdGVtQ29jb2EubW0KICAgICBwbGF0Zm9ybS9j
b2NvYS9LZXlFdmVudENvY29hLm1tCiAgICAgcGxhdGZvcm0vY29jb2EvTG9jYWxpemVkU3RyaW5n
c0NvY29hLm1tCiAgICAgcGxhdGZvcm0vY29jb2EvTUlNRVR5cGVSZWdpc3RyeUNvY29hLm1tCkBA
IC0zNDcsNyArMzQ1LDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZv
cm0vbWFjL0RyYWdEYXRhTWFjLm1tCiAgICAgcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbQog
ICAgIHBsYXRmb3JtL21hYy9FdmVudExvb3BNYWMubW0KLSAgICBwbGF0Zm9ybS9tYWMvRmlsZVN5
c3RlbU1hYy5tbQogICAgIHBsYXRmb3JtL21hYy9LZXlFdmVudE1hYy5tbQogICAgIHBsYXRmb3Jt
L21hYy9Mb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQubW0KICAgICBwbGF0Zm9ybS9tYWMvTG9n
Z2luZ01hYy5tbQpAQCAtNDE4LDggKzQxNSw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNF
UwogICAgIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0
aW9uUXVldWVEZWxlZ2F0ZS5tbQogICAgIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxS
ZXNwb25zZS5tbQogCi0gICAgcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcAotCiAg
ICAgcGxhdGZvcm0vdGV4dC9jZi9IeXBoZW5hdGlvbkNGLmNwcAogCiAgICAgcGxhdGZvcm0vdGV4
dC9tYWMvTG9jYWxlTWFjLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVBs
YXlTdGF0aW9uLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1QbGF5U3RhdGlvbi5jbWFr
ZQppbmRleCA5MDM3NjAzOWI5Njk2ZTEzZjlkZWJjOWM0NzMwYTc5MDM5OTc5NTUxLi42ZDQ0NTM1
ZDk1OTg0YmU1ODgzM2U4OGY5NzFlNmE3MmYyZGJhYjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRm
b3JtUGxheVN0YXRpb24uY21ha2UKQEAgLTYzLDcgKzYzLDYgQEAgbGlzdChBUFBFTkQgV2ViQ29y
ZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vcGxheXN0YXRpb24vU2Nyb2xsYmFyVGhlbWVQbGF5U3Rh
dGlvbi5jcHAKICAgICBwbGF0Zm9ybS9wbGF5c3RhdGlvbi9Vc2VyQWdlbnRQbGF5U3RhdGlvbi5j
cHAKIAotICAgIHBsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKICAgICBwbGF0Zm9y
bS9wb3NpeC9TaGFyZWRCdWZmZXJQT1NJWC5jcHAKIAogICAgIHBsYXRmb3JtL3RleHQvSHlwaGVu
YXRpb24uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFrZSBi
L1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtlCmluZGV4IDRmYWIzMDgyNjBlMDljODA1
NDE5Yzg0YzdjYTgzNGQ4MWZiOTVjNjUuLmZjYjU3YTQ1YTVmNDFlZjNiZjY3MDM4NGZkYTIzZjNj
ZGE4NjE0ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtlCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtlCkBAIC04NCw3ICs4NCw2IEBAIGxp
c3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL3dpbi9EcmFnRGF0YVdpbi5j
cHAKICAgICBwbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcAogICAgIHBsYXRmb3JtL3dpbi9F
dmVudExvb3BXaW4uY3BwCi0gICAgcGxhdGZvcm0vd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCiAgICAg
cGxhdGZvcm0vd2luL0dESU9iamVjdENvdW50ZXIuY3BwCiAgICAgcGxhdGZvcm0vd2luL0dESVV0
aWxpdGllcy5jcHAKICAgICBwbGF0Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3BwCkBAIC05Myw3ICs5
Miw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL3dpbi9NSU1F
VHlwZVJlZ2lzdHJ5V2luLmNwcAogICAgIHBsYXRmb3JtL3dpbi9NYWluVGhyZWFkU2hhcmVkVGlt
ZXJXaW4uY3BwCiAgICAgcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCi0gICAgcGxhdGZv
cm0vd2luL1BhdGhXYWxrZXIuY3BwCiAgICAgcGxhdGZvcm0vd2luL1BsYXRmb3JtTW91c2VFdmVu
dFdpbi5jcHAKICAgICBwbGF0Zm9ybS93aW4vUGxhdGZvcm1TY3JlZW5XaW4uY3BwCiAgICAgcGxh
dGZvcm0vd2luL1BvcHVwTWVudVdpbi5jcHAKQEAgLTI0OCw3ICsyNDYsNiBAQCBpZiAoVVNFX0NG
KQogICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgICAgICBsb2FkZXIvYXJjaGl2
ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAogCi0gICAgICAgIHBsYXRmb3JtL2NmL0ZpbGVTeXN0
ZW1DRi5jcHAKICAgICAgICAgcGxhdGZvcm0vY2YvS2V5ZWREZWNvZGVyQ0YuY3BwCiAgICAgICAg
IHBsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcAogICAgICAgICBwbGF0Zm9ybS9jZi9TaGFy
ZWRCdWZmZXJDRi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggZDJhZGIwZTU0MDlmMTg5OTljNDg3NmMz
ZGQ5MjBiZjlkMzgwNWU1Zi4uNDRhOGYzZWIzOWFkN2UwNGE0ZDBlOTM0OGIzYzI4M2FhY2EyNzUx
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKQEAgLTE2MDMsNyArMTYwMyw2IEBAIHBsYXRmb3JtL0ZpbGVDaG9v
c2VyLmNwcAogcGxhdGZvcm0vRmlsZUhhbmRsZS5jcHAKIHBsYXRmb3JtL0ZpbGVNb25pdG9yLmNw
cAogcGxhdGZvcm0vRmlsZVN0cmVhbS5jcHAKLXBsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwCiBwbGF0
Zm9ybS9HZW5lcmljVGFza1F1ZXVlLmNwcAogcGxhdGZvcm0vTGF5b3V0VW5pdC5jcHAKIHBsYXRm
b3JtL0xlbmd0aC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50
eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDBlMTViOTA0ZWFkMmQ5
ZDg1OTNlNTBmYTQyMDA4MzVhNDMwYjk1NjguLmMyNDE4NWYxNGVlN2FmNjYwOGQyYTQzY2UwNjY0
OWNhMWYwNTUyZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQK
KysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtMTgxLDcgKzE4MSw2IEBA
IHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1Nlc3Npb25NYWMuY3BwCiBwbGF0Zm9ybS9hdWRpby9t
YWMvQ0FSaW5nQnVmZmVyLmNwcAogcGxhdGZvcm0vYXVkaW8vbWFjL0ZGVEZyYW1lTWFjLmNwcAog
Ci1wbGF0Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3BwCiBwbGF0Zm9ybS9jZi9LZXllZERlY29kZXJD
Ri5jcHAKIHBsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcAogcGxhdGZvcm0vY2YvTWFpblRo
cmVhZFNoYXJlZFRpbWVyQ0YuY3BwCkBAIC0xOTMsNyArMTkyLDYgQEAgcGxhdGZvcm0vY29jb2Ev
Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyQ29jb2EubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9j
b2NvYS9Db3JlVmlkZW9Tb2Z0TGluay5jcHAKIHBsYXRmb3JtL2NvY29hL0RhdGFEZXRlY3RvcnND
b3JlU29mdExpbmsubW0KIHBsYXRmb3JtL2NvY29hL0ZpbGVNb25pdG9yQ29jb2EubW0KLXBsYXRm
b3JtL2NvY29hL0ZpbGVTeXN0ZW1Db2NvYS5tbQogcGxhdGZvcm0vY29jb2EvS2V5RXZlbnRDb2Nv
YS5tbQogcGxhdGZvcm0vY29jb2EvTG9jYWxpemVkU3RyaW5nc0NvY29hLm1tCiBwbGF0Zm9ybS9j
b2NvYS9NSU1FVHlwZVJlZ2lzdHJ5Q29jb2EubW0KQEAgLTQ0Niw3ICs0NDQsNiBAQCBwbGF0Zm9y
bS9tYWMvQ3Vyc29yTWFjLm1tCiBwbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0KIHBsYXRmb3Jt
L21hYy9EcmFnSW1hZ2VNYWMubW0KIHBsYXRmb3JtL21hYy9FdmVudExvb3BNYWMubW0KLXBsYXRm
b3JtL21hYy9GaWxlU3lzdGVtTWFjLm1tCiBwbGF0Zm9ybS9tYWMvS2V5RXZlbnRNYWMubW0gQG5v
LXVuaWZ5CiBwbGF0Zm9ybS9tYWMvUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjLm1tIEBuby11
bmlmeQogcGxhdGZvcm0vbWFjL0xvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5tbQpAQCAtNTQx
LDggKzUzOCw2IEBAIHBsYXRmb3JtL25ldHdvcmsvbWFjL1VUSVV0aWxpdGllcy5tbQogcGxhdGZv
cm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVn
YXRlLm1tCiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0KIAotcGxh
dGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcAotCiBwbGF0Zm9ybS90ZXh0L2NmL0h5cGhl
bmF0aW9uQ0YuY3BwCiAKIHBsYXRmb3JtL3RleHQvaW9zL0xvY2FsaXplZERhdGVDYWNoZS5tbQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGRhYjRkZjUwNGUyNjQzM2NkZTBkMWMxNDRkNDZiNTNjNWNhOWU5MjguLjE5MmNkMjgxMDBh
ZmYxYWEyNGQzY2MzMWJlZjM1ODM2Y2U4Njk2MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyNDUsNyArMTI0NSw2IEBACiAJ
CTQ2NzMwMjAyMUM0RUZFNzgwMEJDQjM1NyAvKiBJZ25vcmVPcGVuc0R1cmluZ1VubG9hZENvdW50
SW5jcmVtZW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2NzMwMjAxMUM0RUZFNjYwMEJDQjM1NyAvKiBJZ25vcmVPcGVuc0R1cmluZ1VubG9hZENv
dW50SW5jcmVtZW50ZXIuaCAqLzsgfTsKIAkJNDY4MkQyMDAxRjc5NzgzMDAwQzg2M0RCIC8qIFN0
b3JlZENyZWRlbnRpYWxzUG9saWN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NjgyRDFGRjFGNzk3ODIzMDBDODYzREIgLyogU3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3kuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0NjgzNDRFMDFFRERGQUFBMDBCNzc5NUIgLyogRE9NUmVjdExpc3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODM0NERFMUVEREZBNUYwMEI3
Nzk1QiAvKiBET01SZWN0TGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07Ci0JCTQ2ODlGMUFGMTI2N0JBRTEwMEU4RDM4MCAvKiBGaWxlTWV0YWRhdGEu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODlGMUFF
MTI2N0JBRTEwMEU4RDM4MCAvKiBGaWxlTWV0YWRhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkI2M0Y2QzFDNkU4RDE5MDAyRTkxNEIgLyog
SlNFdmVudFRhcmdldEN1c3RvbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDZCNjNGNkIxQzZFOENERjAwMkU5MTRCIC8qIEpTRXZlbnRUYXJnZXRDdXN0
b20uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0
NkI5NTE5NTIwN0Q2MzM0MDBBN0QyREQgLyogQWJzdHJhY3RET01XaW5kb3cuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Qjk1MThBMjA3RDYzMjgwMEE3
RDJERCAvKiBBYnN0cmFjdERPTVdpbmRvdy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTQ2Qjk1MTk2MjA3RDYzM0EwMEE3RDJERCAvKiBBYnN0cmFj
dEZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
NkI5NTE4RjIwN0Q2MzJCMDBBN0QyREQgLyogQWJzdHJhY3RGcmFtZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNDM3LDcgKzE0MzYsNiBAQAog
CQk1MTQzQjI2MzFEREQxNTIwMDAxNEZBQzYgLyogTGlua0ljb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNDNCMjYyMURERDE0OTAwMDE0RkFDNiAv
KiBMaW5rSWNvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTUxNDVCMTBBMUJDNDhFMkUwMEU4NjIxOSAvKiBJREJSZXNvdXJjZUlkZW50aWZpZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNDVCMTA4
MUJDNDg5MEIwMEU4NjIxOSAvKiBJREJSZXNvdXJjZUlkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTQ4NDUzRjFCQjlEMDdFMDA2
QTcyRUQgLyogSURCRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxNDg0NTNEMUJCOUQwNzYwMDZBNzJFRCAvKiBJREJFcnJvci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTUxNEIzRjczMEM3MjIw
NDcwMDA1MzBERiAvKiBGaWxlU3lzdGVtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MTRCM0Y3MjBDNzIyMDQ3MDAwNTMwREYgLyogRmlsZVN5c3RlbS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxNEM3
NjRDMENFOTIzNEUwMDdFRjNDRCAvKiBBdXRoZW50aWNhdGlvbk1hYy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0Qzc2NDIwQ0U5MjM0RTAwN0VGM0NE
IC8qIEF1dGhlbnRpY2F0aW9uTWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNTE0Qzc2NEUwQ0U5MjM0RTAwN0VGM0NEIC8qIEZvcm1EYXRhU3Ry
ZWFtTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTRDNzY0NDBDRTkyMzRFMDA3RUYzQ0QgLyogRm9ybURhdGFTdHJlYW1NYWMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTRDNzY2RTBDRTkyM0Ex
MDA3RUYzQ0QgLyogQ3JlZGVudGlhbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTE0Qzc2NTkwQ0U5MjNBMTAwN0VGM0NEIC8qIENyZWRlbnRpYWwuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNzcwNSw3
ICs3NzAzLDYgQEAKIAkJNDY4MzQ0REMxRURERkE1RjAwQjc3OTVCIC8qIERPTVJlY3RMaXN0Lmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBET01SZWN0TGlzdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2
ODM0NEREMUVEREZBNUYwMEI3Nzk1QiAvKiBET01SZWN0TGlzdC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBET01SZWN0TGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODM0
NERFMUVEREZBNUYwMEI3Nzk1QiAvKiBET01SZWN0TGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01S
ZWN0TGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0Njg5RjFBRTEyNjdCQUUx
MDBFOEQzODAgLyogRmlsZU1ldGFkYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEZpbGVNZXRhZGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkI2M0Y2
QjFDNkU4Q0RGMDAyRTkxNEIgLyogSlNFdmVudFRhcmdldEN1c3RvbS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU0V2ZW50VGFyZ2V0Q3VzdG9tLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQ2Qjk1MThBMjA3RDYzMjgwMEE3RDJERCAvKiBBYnN0cmFjdERPTVdp
bmRvdy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBYnN0cmFjdERPTVdpbmRv
dy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkI5NTE4QzIwN0Q2MzI5MDBBN0Qy
REQgLyogUmVtb3RlRnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUmVtb3RlRnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODEwOCw4
ICs4MTA1LDYgQEAKIAkJNTE0NUIxMDgxQkM0ODkwQjAwRTg2MjE5IC8qIElEQlJlc291cmNlSWRl
bnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJREJSZXNvdXJjZUlk
ZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0ODQ1M0MxQkI5RDA3
NjAwNkE3MkVEIC8qIElEQkVycm9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IElEQkVycm9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0ODQ1
M0QxQkI5RDA3NjAwNkE3MkVEIC8qIElEQkVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IElEQkVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUxNEIz
RjcyMEM3MjIwNDcwMDA1MzBERiAvKiBGaWxlU3lzdGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEZpbGVTeXN0ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
NTE0QjNGNzUwQzcyMjA1NTAwMDUzMERGIC8qIEZpbGVTeXN0ZW1Db2NvYS5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZpbGVTeXN0ZW1Db2NvYS5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0Qzc2MzUwQ0U5MjI1RTAwN0VGM0NEIC8qIEpTU1FM
RXJyb3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTUUxFcnJv
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNEM3NjM2MENFOTIyNUUwMDdF
RjNDRCAvKiBKU1NRTFRyYW5zYWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTU1FMVHJhbnNhY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1MTRDNzY0MjBDRTkyMzRFMDA3RUYzQ0QgLyogQXV0aGVudGljYXRpb25NYWMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXV0aGVudGljYXRpb25NYWMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTgxNDgsOCArODE0Myw2IEBACiAJCTUxNUUzN0Y0MUZB
QTkzODgwMEQ3RjIyQSAvKiBTZXJ2aWNlV29ya2VyVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU2VydmljZVdvcmtlclR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUxNUY3OTUxMUNGQ0EzQzcwMENDRUQ5MyAvKiBXZWJDb3JlQ3Jvc3NUaHJlYWRD
b3BpZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQ29yZUNy
b3NzVGhyZWFkQ29waWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE1Rjc5
NTIxQ0ZDQTNDNzAwQ0NFRDkzIC8qIFdlYkNvcmVDcm9zc1RocmVhZENvcGllci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb3JlQ3Jvc3NUaHJlYWRDb3BpZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTE2MDMwMEEwQ0M0MjUxMjAwQzhBQzI1IC8qIEZp
bGVTeXN0ZW1QT1NJWC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBG
aWxlU3lzdGVtUE9TSVguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MTYwMzA2
QjBDQzQzNjIzMDBDOEFDMjUgLyogRmlsZVN5c3RlbUNGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEZpbGVTeXN0ZW1DRi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUxNjA3MTJCMUJEODMwNTMwMERCQzRGMiAvKiBUcmFuc2FjdGlvbk9wZXJhdGlv
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUcmFuc2FjdGlvbk9wZXJhdGlv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTYwNzEyQzFCRDgzMDcyMDBEQkM0
RjIgLyogSURCT2JqZWN0U3RvcmVJbmZvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IElEQk9iamVjdFN0b3JlSW5mby5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUxNjA3MTJEMUJEODMwNzIwMERCQzRGMiAvKiBJREJPYmplY3RTdG9yZUluZm8uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSURCT2JqZWN0U3RvcmVJbmZvLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTI1MSw3ICsxMTI0NCw2IEBACiAJCUExQzJD
NTc1MUZBMjg1MTYwMEJBNDZGQSAvKiBQYXltZW50U2Vzc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBQYXltZW50U2Vzc2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEx
QzdGQUExMTMzQTVEMzUwMEQ2NzMyRCAvKiBKU1hQYXRoUmVzdWx0Q3VzdG9tLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTWFBhdGhSZXN1bHRDdXN0b20uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMUNCRUY2MzFGOUYxMTI5MDAyOERFN0MgLyog
TW9ja1BheW1lbnRNZXRob2QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9ja1BheW1lbnRNZXRob2QuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTFDQzExNjIxRTQ5M0QwMTAwRUZBNjlDIC8q
IEZpbGVTeXN0ZW1NYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBGaWxlU3lzdGVtTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMUNDNTY0
QzFGNDYxNDUwMDBBNDU1NUIgLyogSlNQYXltZW50TWV0aG9kRGF0YS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU1BheW1lbnRNZXRob2REYXRhLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUExQ0M1NjREMUY0NjE0NTEwMEE0NTU1QiAvKiBKU1BheW1lbnRNZXRo
b2REYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUGF5bWVu
dE1ldGhvZERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMUNDNTY0RTFG
NDYxNDUyMDBBNDU1NUIgLyogSlNQYXltZW50Q29tcGxldGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNQYXltZW50Q29tcGxldGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTEzNDM4LDcgKzEzNDMwLDYgQEAKIAkJQzU1OTJGNzcxQTkyQUEyODAwMUY4ODYy
IC8qIENoYXJhY3RlclByb3BlcnRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ2hhcmFjdGVyUHJvcGVydGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
NTVDN0JBMDE3MThBRkJBMDAxMzI3RTQgLyogUmVuZGVyVGhlbWVJT1MubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZW5kZXJUaGVtZUlPUy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzU3MkVFMUQxMjAxQzlCQzAwN0Q4RjgyIC8qIEpTSURCSW5k
ZXguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNJREJJbmRleC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDNTdGRURFMDEyMTJFRTlDMDA5N0JFNjUgLyogRmls
ZVN5c3RlbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxlU3lz
dGVtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzU4NUE2NjAxMUQ0RkFDNTAw
NEMzRTRCIC8qIElEQkJpbmRpbmdVdGlsaXRpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSURCQmluZGluZ1V0aWxpdGllcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUM1ODVBNjYxMTFENEZBQzUwMDRDM0U0QiAvKiBJREJCaW5kaW5nVXRpbGl0
aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElEQkJpbmRpbmdVdGlsaXRp
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzU4NUE2NkIxMUQ0RkIwNzAwNEMz
RTRCIC8qIEpTSURCRGF0YWJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNJREJEYXRhYmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY3NzYsNyAr
MTY3NjcsNiBAQAogCQkxQUU0MkY2NzBBQTRCOENCMDBDODYxMkQgLyogY2YgKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTUxNjAzMDZCMENDNDM2MjMwMEM4
QUMyNSAvKiBGaWxlU3lzdGVtQ0YuY3BwICovLAogCQkJCTUxN0E2M0JGMUI3NDMxN0UwMEU3RENE
QyAvKiBLZXllZERlY29kZXJDRi5jcHAgKi8sCiAJCQkJNTE3QTYzQzAxQjc0MzE3RTAwRTdEQ0RD
IC8qIEtleWVkRGVjb2RlckNGLmggKi8sCiAJCQkJNTE3QTYzQzExQjc0MzE3RTAwRTdEQ0RDIC8q
IEtleWVkRW5jb2RlckNGLmNwcCAqLywKQEAgLTE4NzM4LDE0ICsxODcyOCw2IEBACiAJCQlwYXRo
ID0gbWFjOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKLQkJNTE2MDMwMDkwQ0M0
MjQ1NDAwQzhBQzI1IC8qIHBvc2l4ICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGls
ZHJlbiA9ICgKLQkJCQk1MTYwMzAwQTBDQzQyNTEyMDBDOEFDMjUgLyogRmlsZVN5c3RlbVBPU0lY
LmNwcCAqLywKLQkJCSk7Ci0JCQlwYXRoID0gcG9zaXg7Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOwotCQl9OwogCQk1MTYwRjQ5MjBCMEFBNzE1MDBDMUQyQUYgLyogbWFjICovID0gewogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTIwMTA2LDcgKzIwMDg4LDYgQEAK
IAkJCQlBN0NGQjNENDBCN0VEMTE4MDA3MEMzMkQgLyogRHJhZ0ltYWdlTWFjLm1tICovLAogCQkJ
CUUxQkE2NkYwMTc0MkJEODYwMEMyMDI1MSAvKiBEeW5hbWljTGlua2VySW50ZXJwb3NpbmcuaCAq
LywKIAkJCQkxQ0ExOUUwMzBEQzI1NTk1MDA2NUE5OTQgLyogRXZlbnRMb29wTWFjLm1tICovLAot
CQkJCUExQ0MxMTYyMUU0OTNEMDEwMEVGQTY5QyAvKiBGaWxlU3lzdGVtTWFjLm1tICovLAogCQkJ
CTkzNUM0NzZFMDlBQzRENzMwMEE2QUFCNCAvKiBLZXlFdmVudE1hYy5tbSAqLywKIAkJCQlGNDRB
NUY1NzFGRUQzODMwMDA3RjU5NDQgLyogTGVnYWN5TlNQYXN0ZWJvYXJkVHlwZXMuaCAqLywKIAkJ
CQkwNkU4MUVENjBBQjVENUU5MDBDODc4MzcgLyogTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0
LmggKi8sCkBAIC0yMjU1Niw3ICsyMjUzNyw2IEBACiAJCQkJN0M3OTQxRTMxQzU2QzI5MzAwQTRD
NThFIC8qIERhdGFEZXRlY3RvcnNDb3JlU29mdExpbmsuaCAqLywKIAkJCQk3Qzc5NDFFMjFDNTZD
MjkzMDBBNEM1OEUgLyogRGF0YURldGVjdG9yc0NvcmVTb2Z0TGluay5tbSAqLywKIAkJCQk3QTA5
Q0VGMDFGMDFEMUY3MDBFOTNCREIgLyogRmlsZU1vbml0b3JDb2NvYS5tbSAqLywKLQkJCQk1MTRC
M0Y3NTBDNzIyMDU1MDAwNTMwREYgLyogRmlsZVN5c3RlbUNvY29hLm1tICovLAogCQkJCUE1Qzk3
NENGMTE0ODVGRjEwMDY2RjJBQiAvKiBLZXlFdmVudENvY29hLmggKi8sCiAJCQkJQTVDOTc0RDAx
MTQ4NUZGMTAwNjZGMkFCIC8qIEtleUV2ZW50Q29jb2EubW0gKi8sCiAJCQkJMUE0ODMyQjIxQTk1
M0JBNjAwOEI0REZFIC8qIExvY2FsaXplZFN0cmluZ3NDb2NvYS5tbSAqLywKQEAgLTI1Mzk5LDcg
KzI1Mzc5LDYgQEAKIAkJCQkwNzIyMUI5MjE3Q0YwQUQ0MDA4NDhFNTEgLyogbWVkaWFzdHJlYW0g
Ki8sCiAJCQkJNTlDNzdGMTAxMDU0NTkxQzAwNTA2MTA0IC8qIG1vY2sgKi8sCiAJCQkJNjU2Qjg0
RDcwQUVBMUNFOTAwQTA5NUI0IC8qIG5ldHdvcmsgKi8sCi0JCQkJNTE2MDMwMDkwQ0M0MjQ1NDAw
QzhBQzI1IC8qIHBvc2l4ICovLAogCQkJCTFBMkU2RTU2MENDNTUxRTAwMDRBMjA2MiAvKiBzcWwg
Ki8sCiAJCQkJQjJDM0Q5RUMwRDAwNkMxRDAwRUY2RjI2IC8qIHRleHQgKi8sCiAJCQkJRTE4ODIz
NUYyMDMxRjUwRjAwQjQyREYzIC8qIHZyICovLApAQCAtMjU0NDQsMTQgKzI1NDIzLDExIEBACiAJ
CQkJMDY2Qzc3MkEwQUI2MDNCNzAwMjM4Q0M0IC8qIEZpbGVDaG9vc2VyLmggKi8sCiAJCQkJNTM1
MUQ0QUUxREY5MTZBQzAwODAxMENEIC8qIEZpbGVIYW5kbGUuY3BwICovLAogCQkJCTUzNTFENEFG
MURGOTE2QUMwMDgwMTBDRCAvKiBGaWxlSGFuZGxlLmggKi8sCi0JCQkJNDY4OUYxQUUxMjY3QkFF
MTAwRThEMzgwIC8qIEZpbGVNZXRhZGF0YS5oICovLAogCQkJCTdBMDlDRUVCMUYwMUNDOTMwMEU5
M0JEQiAvKiBGaWxlTW9uaXRvci5jcHAgKi8sCiAJCQkJN0EwOUNFRUMxRjAxQ0M5MzAwRTkzQkRC
IC8qIEZpbGVNb25pdG9yLmggKi8sCiAJCQkJMkVGMUJGRTgxMjFDOUY0MjAwQzI3NjI3IC8qIEZp
bGVTdHJlYW0uY3BwICovLAogCQkJCTJFRjFCRkU5MTIxQzlGNDIwMEMyNzYyNyAvKiBGaWxlU3Ry
ZWFtLmggKi8sCiAJCQkJMkVGMUJGRjgxMjFDQjBDRTAwQzI3NjI3IC8qIEZpbGVTdHJlYW1DbGll
bnQuaCAqLywKLQkJCQlDNTdGRURFMDEyMTJFRTlDMDA5N0JFNjUgLyogRmlsZVN5c3RlbS5jcHAg
Ki8sCi0JCQkJNTE0QjNGNzIwQzcyMjA0NzAwMDUzMERGIC8qIEZpbGVTeXN0ZW0uaCAqLywKIAkJ
CQlCQzA3M0JBOTBDMzk5QjFGMDAwRjU5NzkgLyogRmxvYXRDb252ZXJzaW9uLmggKi8sCiAJCQkJ
Q0Q0QkU1MjkxQ0UxMzQyNTAwOUQ4N0RBIC8qIEdlbmVyaWNUYXNrUXVldWUuY3BwICovLAogCQkJ
CUNENjJGQjk0MUFGMDE4RTcwMDEyRUQ3RCAvKiBHZW5lcmljVGFza1F1ZXVlLmggKi8sCkBAIC0y
OTE0MCw3ICsyOTExNiw2IEBACiAJCQkJRjU1QjNEQkUxMjUxRjEyRDAwM0VGMjY5IC8qIEZpbGVJ
bnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3NkQ2Qzg2MTIyQjhBM0QwMDFGRDFGNyAv
KiBGaWxlTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODM1RDU0QzUxRjRERTUzODAwRTYwNjcx
IC8qIEZpbGVMaXN0Q3JlYXRvci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDY4OUYxQUYxMjY3QkFF
MTAwRThEMzgwIC8qIEZpbGVNZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0EwOUNFRjEx
RjAyMDY5QjAwRTkzQkRCIC8qIEZpbGVNb25pdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzZE
NkM4OTEyMkI4QTNEMDAxRkQxRjcgLyogRmlsZVJlYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MkU3NTg0MUUxMjc3OUFEQTAwNjI2MjhCIC8qIEZpbGVSZWFkZXJMb2FkZXIuaCBpbiBIZWFkZXJz
ICovLApAQCAtMjkxNDgsNyArMjkxMjMsNiBAQAogCQkJCTJFREYzNjlEMTIyQzk0QjQwMDJGN0Q0
RSAvKiBGaWxlUmVhZGVyU3luYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkVGMUJGRUIxMjFDOUY0
MjAwQzI3NjI3IC8qIEZpbGVTdHJlYW0uaCBpbiBIZWFkZXJzICovLAogCQkJCTJFRjFCRkY5MTIx
Q0IwQ0UwMEMyNzYyNyAvKiBGaWxlU3RyZWFtQ2xpZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQk1
MTRCM0Y3MzBDNzIyMDQ3MDAwNTMwREYgLyogRmlsZVN5c3RlbS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJODNGQjMzNzExRjUwOEE1NDAwOTg2RTU0IC8qIEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJODMwMzM1MDIxRjU0OTA1NzAwNERGNzA3IC8qIEZpbGVTeXN0
ZW1EaXJlY3RvcnlSZWFkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzMDMzNTAzMUY1NDkwNUEw
MDRERjcwNyAvKiBGaWxlU3lzdGVtRW50cmllc0NhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuY3BwCmluZGV4IGQyNTFkMmVj
ZTFmMThiMjQwYTg4YmJmYjNhMjJjMmMyNGY4MGY2Y2QuLjhhODNjNGI2ZjZmNTk2MDdkZmE3NzA0
ODQyOWQwMmIxZTQyOTczM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0dDQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvR0NDb250
cm9sbGVyLmNwcApAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUgIkdDQ29udHJvbGxlci5oIgog
CiAjaW5jbHVkZSAiQ29tbW9uVk0uaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVk
ZSAiSlNIVE1MRG9jdW1lbnQuaCIKICNpbmNsdWRlICJMb2NhdGlvbi5oIgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0hlYXAuaD4KQEAgLTM2LDYgKzM1LDcgQEAKICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9WTS5oPgogI2luY2x1ZGUgPHBhbC9Mb2dnaW5nLmg+CiAjaW5jbHVkZSA8d3RmL0Zh
c3RNYWxsb2MuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW0uY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW0uY3BwCmluZGV4IGEzZWNjNWE1YzllMGYzMGQ3NjAz
MjgxN2YwZDQ2Mzk2MzNmZjFhOGIuLjU5Zjk3ODZlZDhjZmE2NDllMDdkZGI3ZDg4NGFjOTI0MzI5
NzYzOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbS5jcHAKQEAgLTM2LDEx
ICszNiwxMSBAQAogI2luY2x1ZGUgIkRhdGFUcmFuc2Zlckl0ZW1MaXN0LmgiCiAjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKICNpbmNsdWRlICJGaWxlLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgog
I2luY2x1ZGUgIkZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5oIgogI2luY2x1ZGUgIkZpbGVTeXN0
ZW1GaWxlRW50cnkuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5j
bHVkZSAiU3RyaW5nQ2FsbGJhY2suaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9j
b2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KaW5kZXggOTcyMTdmMWQ3NWQwZTU0NmZjZjg0
MzFlMmQ0YWY4YmE1NDNhYjYxYy4uMjU0YTM2OGZhNzc0YWQ2MzcyZDQ2ZjE1M2M1YTk1YzRlZTI0
MjhjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50
UmVhZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250
ZW50UmVhZGVyQ29jb2EubW0KQEAgLTM3LDcgKzM3LDYgQEAKICNpbXBvcnQgIkVkaXRvci5oIgog
I2ltcG9ydCAiRWRpdG9yQ2xpZW50LmgiCiAjaW1wb3J0ICJGaWxlLmgiCi0jaW1wb3J0ICJGaWxl
U3lzdGVtLmgiCiAjaW1wb3J0ICJGcmFtZS5oIgogI2ltcG9ydCAiRnJhbWVMb2FkZXIuaCIKICNp
bXBvcnQgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCkBAIC02NSw2ICs2NCw3IEBACiAjaW1wb3J0ICJX
ZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMuaCIKICNpbXBvcnQgIm1hcmt1cC5oIgogI2ltcG9y
dCA8cGFsL3NwaS9jb2NvYS9OU0F0dHJpYnV0ZWRTdHJpbmdTUEkuaD4KKyNpbXBvcnQgPHd0Zi9G
aWxlU3lzdGVtLmg+CiAjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KICNpbXBvcnQgPHd0Zi9V
UkxQYXJzZXIuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAKaW5kZXggYjczZmNkZTc5ZjQ2MDc5
MmM5MjZjMDc1ZmJhYWY2NjQ4YTcyNDEzMS4uYWRiMzBjOTMzY2EyZmIyNWNlZjVkMGNhNDEzNjU2
MGJiYTZkODExNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwCkBAIC0yNywxMSArMjcsMTEgQEAK
ICNpbmNsdWRlICJGaWxlLmgiCiAKICNpbmNsdWRlICJCbG9iVVJMLmgiCi0jaW5jbHVkZSAiRmls
ZU1ldGFkYXRhLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIk1JTUVUeXBl
UmVnaXN0cnkuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmgiCiAjaW5jbHVk
ZSA8d3RmL0RhdGVNYXRoLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVNZXRhZGF0YS5oPgorI2luY2x1
ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
RmlsZUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlQ29jb2EubW0KaW5kZXgg
MjBiZTZmN2FlZGVjYTc1MzQ4MzU2M2IxYmU0ZjkwNjJmYTQzOGEwMy4uNjY0ZjlhNTM2MTNkZjI2
Y2ExN2M3MDdjMjFiNTBjNjQ2NDUyMDRlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9GaWxlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlQ29jb2Eu
bW0KQEAgLTI4LDcgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShGSUxFX1JFUExBQ0VNRU5UKQogCi0j
aW1wb3J0ICJGaWxlU3lzdGVtLmgiCisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogCiAjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVD
b3JlU2VydmljZXMuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0
VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCmluZGV4IDAz
YWYzYTk2MzQ5NGZhZjAwMTJlMjFhOTM4ZjUxOTE3ODAzMDg1MDguLjk5OGY5ZWZhOTRlMmE3NTIx
NmJiNGYzOWE3OTY4NjQ5YzEzMTdkZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
RmlsZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBl
LmNwcApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIkZpbGUuaCIKICNpbmNsdWRlICJGaWxl
TGlzdC5oIgogI2luY2x1ZGUgIkZpbGVMaXN0Q3JlYXRvci5oIgotI2luY2x1ZGUgIkZpbGVTeXN0
ZW0uaCIKICNpbmNsdWRlICJGb3JtQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAj
aW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgpAQCAtNDMsNiArNDIsNyBAQAogI2luY2x1ZGUg
IlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogI2luY2x1ZGUgIlVzZXJHZXN0
dXJlSW5kaWNhdG9yLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3
dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0ZpbGVMaXN0Q3JlYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVMaXN0
Q3JlYXRvci5jcHAKaW5kZXggNzZmNTY1OTcwYWQxZGQ4ZDgxMDZjMjVhNTc5ZTQ1OTFiYWJkNDli
OC4uMTU1NmZjMjk5Y2IyMzczYjBjNTk4OTUyMGE3MmMzMTE2Y2UzOWVhNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9GaWxlTGlzdENyZWF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvRmlsZUxpc3RDcmVhdG9yLmNwcApAQCAtMjgsOSArMjgsOSBAQAogCiAjaW5jbHVk
ZSAiRmlsZUNob29zZXIuaCIKICNpbmNsdWRlICJGaWxlTGlzdC5oIgotI2luY2x1ZGUgIkZpbGVN
ZXRhZGF0YS5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlIDx3dGYvQ3Jvc3NU
aHJlYWRDb3BpZXIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZU1ldGFkYXRhLmg+CisjaW5jbHVkZSA8
d3RmL0ZpbGVTeXN0ZW0uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcApp
bmRleCA3NTVmMWEyOWFkN2M1N2NjYzNiZWE1ZWZhMjU1YjY1NmJiZGNjMzA5Li44YTMzZTg4NzBj
YzM2YmM2ZGUyZmNhOGQxZDU4YzRjY2E2YjhmM2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKQEAgLTMzLDcg
KzMzLDYgQEAKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUgIkRPTUFwcGxp
Y2F0aW9uQ2FjaGUuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCi0jaW5jbHVkZSAiRmlsZVN5
c3RlbS5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNp
bmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgpAQCAtNDQsNiArNDMsNyBAQAogI2luY2x1ZGUg
IlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU3Vi
cmVzb3VyY2VMb2FkZXIuaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUg
PHd0Zi9VVUlELmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCmlu
ZGV4IGU4MTQ4M2MzNjIzY2QwMzQyNDQ0ODRjZDBmNWZkYzkyNDk1NWFlMzIuLjgyYWRmZjMwMzM1
YTJlMmJiOWNhYTdiNGY2Njg4NGQwOTBlNzk1NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcApAQCAt
MzAsMTIgKzMwLDEyIEBACiAjaW5jbHVkZSAiQXBwbGljYXRpb25DYWNoZUdyb3VwLmgiCiAjaW5j
bHVkZSAiQXBwbGljYXRpb25DYWNoZUhvc3QuaCIKICNpbmNsdWRlICJBcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2UuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiU1FMaXRlRGF0
YWJhc2VUcmFja2VyLmgiCiAjaW5jbHVkZSAiU1FMaXRlU3RhdGVtZW50LmgiCiAjaW5jbHVkZSAi
U1FMaXRlVHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1
ZGUgIlNlY3VyaXR5T3JpZ2luRGF0YS5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAj
aW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNs
dWRlIDx3dGYvVVVJRC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggZGIxNzdlOGRhZThjNjBlNmU3
MTgyMjlmYjNjMDNkMzZkZmZkNTQ1Mi4uMjZhMjU4MTljMWE3NzQxZDEyY2Q5NjQ2MjlhZDE1OTc5
OTg2ZDBkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC01MSw3ICs1MSw2IEBACiAjaW5jbHVkZSAi
RXZlbnQuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXh0ZW5zaW9uU3R5
bGVTaGVldHMuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiRm9jdXNDb250
cm9sbGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRl
ckNsaWVudC5oIgpAQCAtMTIyLDYgKzEyMSw3IEBACiAjaW5jbHVkZSAiV2ViR0xTdGF0ZVRyYWNr
ZXIuaCIKICNpbmNsdWRlICJXaGVlbEV2ZW50RGVsdGFGaWx0ZXIuaCIKICNpbmNsdWRlICJXaWRn
ZXQuaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkTGVha0NvdW50ZXIuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvQmFzZTY0Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
Y3VyaXR5T3JpZ2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3Bw
CmluZGV4IGI1OGZhYWExNjdhOTY3MjZhYTIxMWZlMWYwMjc0YmM2NmU5NjE2NWIuLjNhZDkyMWNj
NTRkZTFmZWZlM2QxNTcxZjIyZTI1MzIxMmE4ZGUyMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2Vj
dXJpdHlPcmlnaW4uY3BwCkBAIC0zMCwxNSArMzAsMTUgQEAKICNpbmNsdWRlICJTZWN1cml0eU9y
aWdpbi5oIgogCiAjaW5jbHVkZSAiQmxvYlVSTC5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIK
LSNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiU2NoZW1lUmVnaXN0cnkuaCIKICNpbmNs
dWRlICJTZWN1cml0eVBvbGljeS5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgogI2luY2x1
ZGUgIlRocmVhZGFibGVCbG9iUmVnaXN0cnkuaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5o
PgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRh
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcAppbmRleCAw
NWY4YjE5ZGFlNTg3OWQwY2RmZGE3Yzc2NDllY2EyYjQ0YzM5OGE2Li40MzBjYjhiMGIzYWMzNmNj
YTk2MTFlMGExZjA5ZTM1YWUxMGIwZDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0
eU9yaWdpbkRhdGEuY3BwCkBAIC0yNyw5ICsyNyw5IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlPcmln
aW5EYXRhLmgiCiAKICNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0u
aCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5j
bHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vRmlsZUhhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUhhbmRsZS5o
CmluZGV4IGQxMTgzMDg2OTYzZDIxMjM3YjkwYjFhODI1ODViNzY1YmJjMTNkZjIuLjUwZDgyNGNh
ZWU5YmExMjQwOTg0MzVlYTcyMTVkMTUxNzg3ZGJjZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0ZpbGVIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9G
aWxlSGFuZGxlLmgKQEAgLTI4LDkgKzI4LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRl
ICJGaWxlU3lzdGVtLmgiCi0KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUg
PHd0Zi9GaWxlU3lzdGVtLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZU1ldGFkYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9GaWxlTWV0YWRhdGEuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2Q4
ODQ5NTNlNzY3NWQ5MmMwNjM4ZGVjYWQ4NTdjZDQxYTU5YzU2MS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxl
TWV0YWRhdGEuaAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9u
LgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
I2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVj
dCBGaWxlTWV0YWRhdGEgewotICAgIC8vIFRoZSBsYXN0IG1vZGlmaWNhdGlvbiB0aW1lIG9mIHRo
ZSBmaWxlLCBpbiBzZWNvbmRzLgotICAgIFdhbGxUaW1lIG1vZGlmaWNhdGlvblRpbWU7Ci0KLSAg
ICAvLyBUaGUgbGVuZ3RoIG9mIHRoZSBmaWxlIGluIGJ5dGVzLgotICAgIGxvbmcgbG9uZyBsZW5n
dGg7Ci0KLSAgICBib29sIGlzSGlkZGVuOwotCi0gICAgZW51bSBjbGFzcyBUeXBlIHsgRmlsZSwg
RGlyZWN0b3J5LCBTeW1ib2xpY0xpbmsgfTsKLSAgICBUeXBlIHR5cGU7Ci19OwotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxl
U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0uY3BwCmluZGV4
IGVhOTE3Mzc0YjRjOGI0YTRlYTA0M2MyOWFiZjU0MzE1OTIyYTg5ZTIuLjg5M2JiMzM5NDc2Y2Vm
ZGE4ZGYxMGJjOTIwYzBiMzU4MjUxOTE1N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0ZpbGVTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVT
dHJlYW0uY3BwCkBAIC0yOSwxMCArMjksOCBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIK
LQogI2luY2x1ZGUgIkZpbGVTdHJlYW0uaCIKIAotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN0cmVhbS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vRmlsZVN0cmVhbS5oCmluZGV4IGFhMDExZWEyM2UxODU0YzRiOTAyMDU5
NjI1Mzc2MTNhMWFiNmUxMmIuLmEyZmI4ZTVmYWEyNTRiYzhlNWNjZTllMWI0YzY2MzFiOGQxYTA1
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3RyZWFtLmgKQEAgLTI4LDEwICsyOCw5IEBA
CiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgRmlsZVN0cmVhbV9oCi0jZGVmaW5lIEZp
bGVTdHJlYW1faAorI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCisjaW5j
bHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02NCw1
ICs2MywzIEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRp
ZiAvLyBGaWxlU3RyZWFtX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Zp
bGVTeXN0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVkOWQzN2FhYTEzMTYyODNkYTdlZjIyNDZiM2Nh
OTQxMGFkMjVkMjIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSwzNjcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNy0yMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0g
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IkZpbGVTeXN0ZW0uaCIKLQotI2luY2x1ZGUgIkZpbGVNZXRhZGF0YS5oIgotI2luY2x1ZGUgPHd0
Zi9IZXhOdW1iZXIuaD4KLSNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KLSNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgotCi0jaWYg
IU9TKFdJTkRPV1MpCi0jaW5jbHVkZSA8ZmNudGwuaD4KLSNpbmNsdWRlIDxzeXMvbW1hbi5oPgot
I2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0jaW5jbHVkZSA8dW5pc3RkLmg+Ci0jZW5kaWYKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgRmlsZVN5c3RlbSB7Ci0KLS8vIFRoZSBmb2xs
b3dpbmcgbG93ZXItQVNDSUkgY2hhcmFjdGVycyBuZWVkIGVzY2FwaW5nIHRvIGJlIHVzZWQgaW4g
YSBmaWxlbmFtZQotLy8gYWNyb3NzIGFsbCBzeXN0ZW1zLCBpbmNsdWRpbmcgV2luZG93czoKLS8v
ICAgICAtIFVucHJpbnRhYmxlIEFTQ0lJICgwMC0xRikKLS8vICAgICAtIFNwYWNlICAgICAgICAg
ICAgICgyMCkKLS8vICAgICAtIERvdWJsZSBxdW90ZSAgICAgICgyMikKLS8vICAgICAtIFBlcmNl
bnQgICAgICAgICAgICgyNSkgKGVzY2FwZWQgYmVjYXVzZSBpdCBpcyBvdXIgZXNjYXBlIGNoYXJh
Y3RlcikKLS8vICAgICAtIEFzdGVyaXNrICAgICAgICAgICgyQSkKLS8vICAgICAtIFNsYXNoICAg
ICAgICAgICAgICgyRikKLS8vICAgICAtIENvbG9uICAgICAgICAgICAgICgzQSkKLS8vICAgICAt
IExlc3MtdGhhbiAgICAgICAgICgzQykKLS8vICAgICAtIEdyZWF0ZXItdGhhbiAgICAgICgzRSkK
LS8vICAgICAtIFF1ZXN0aW9uIE1hcmsgICAgICgzRikKLS8vICAgICAtIEJhY2tzbGFzaCAgICAg
ICAgICg1QykKLS8vICAgICAtIFBpcGUgICAgICAgICAgICAgICg3QykKLS8vICAgICAtIERlbGV0
ZSAgICAgICAgICAgICg3RikKLQotc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNFc2NhcGluZ1sxMjhd
ID0gewotICAgIC8qIDAwLTA3ICovIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAg
dHJ1ZSwgIHRydWUsICB0cnVlLCAKLSAgICAvKiAwOC0wRiAqLyB0cnVlLCAgdHJ1ZSwgIHRydWUs
ICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgCi0KLSAgICAvKiAxMC0xNyAqLyB0
cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgCi0g
ICAgLyogMTgtMUYgKi8gdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAg
dHJ1ZSwgIHRydWUsIAotCi0gICAgLyogMjAtMjcgKi8gdHJ1ZSwgIGZhbHNlLCB0cnVlLCAgZmFs
c2UsIGZhbHNlLCB0cnVlLCAgZmFsc2UsIGZhbHNlLCAKLSAgICAvKiAyOC0yRiAqLyBmYWxzZSwg
ZmFsc2UsIHRydWUsICBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgCi0gICAgCi0g
ICAgLyogMzAtMzcgKi8gZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwg
ZmFsc2UsIGZhbHNlLCAKLSAgICAvKiAzOC0zRiAqLyBmYWxzZSwgZmFsc2UsIHRydWUsICBmYWxz
ZSwgdHJ1ZSwgIGZhbHNlLCB0cnVlLCAgdHJ1ZSwgCi0gICAgCi0gICAgLyogNDAtNDcgKi8gZmFs
c2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAKLSAg
ICAvKiA0OC00RiAqLyBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBm
YWxzZSwgZmFsc2UsCi0gICAgCi0gICAgLyogNTAtNTcgKi8gZmFsc2UsIGZhbHNlLCBmYWxzZSwg
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAKLSAgICAvKiA1OC01RiAqLyBmYWxz
ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgIGZhbHNlLCBmYWxzZSwgZmFsc2UsCi0gICAg
Ci0gICAgLyogNjAtNjcgKi8gZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxz
ZSwgZmFsc2UsIGZhbHNlLCAKLSAgICAvKiA2OC02RiAqLyBmYWxzZSwgZmFsc2UsIGZhbHNlLCBm
YWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsCi0gICAgCi0gICAgLyogNzAtNzcgKi8g
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAK
LSAgICAvKiA3OC03RiAqLyBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgIGZhbHNl
LCBmYWxzZSwgdHJ1ZSwgCi19OwotCi1zdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkRXNjYXBlVUNo
YXIoVUNoYXIgY2hhcmFjdGVyLCBVQ2hhciBwcmV2aW91c0NoYXJhY3RlciwgVUNoYXIgbmV4dENo
YXJhY3RlcikKLXsKLSAgICBpZiAoY2hhcmFjdGVyIDw9IDEyNykKLSAgICAgICAgcmV0dXJuIG5l
ZWRzRXNjYXBpbmdbY2hhcmFjdGVyXTsKLQotICAgIGlmIChVMTZfSVNfTEVBRChjaGFyYWN0ZXIp
ICYmICFVMTZfSVNfVFJBSUwobmV4dENoYXJhY3RlcikpCi0gICAgICAgIHJldHVybiB0cnVlOwot
Ci0gICAgaWYgKFUxNl9JU19UUkFJTChjaGFyYWN0ZXIpICYmICFVMTZfSVNfTEVBRChwcmV2aW91
c0NoYXJhY3RlcikpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgcmV0dXJuIGZhbHNlOwot
fQotCi1TdHJpbmcgZW5jb2RlRm9yRmlsZU5hbWUoY29uc3QgU3RyaW5nJiBpbnB1dFN0cmluZykK
LXsKLSAgICB1bnNpZ25lZCBsZW5ndGggPSBpbnB1dFN0cmluZy5sZW5ndGgoKTsKLSAgICBpZiAo
IWxlbmd0aCkKLSAgICAgICAgcmV0dXJuIGlucHV0U3RyaW5nOwotCi0gICAgU3RyaW5nQnVpbGRl
ciByZXN1bHQ7Ci0gICAgcmVzdWx0LnJlc2VydmVDYXBhY2l0eShsZW5ndGgpOwotCi0gICAgVUNo
YXIgcHJldmlvdXNDaGFyYWN0ZXI7Ci0gICAgVUNoYXIgY2hhcmFjdGVyID0gMDsKLSAgICBVQ2hh
ciBuZXh0Q2hhcmFjdGVyID0gaW5wdXRTdHJpbmdbMF07Ci0gICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIHByZXZpb3VzQ2hhcmFjdGVyID0gY2hhcmFj
dGVyOwotICAgICAgICBjaGFyYWN0ZXIgPSBuZXh0Q2hhcmFjdGVyOwotICAgICAgICBuZXh0Q2hh
cmFjdGVyID0gaSArIDEgPCBsZW5ndGggPyBpbnB1dFN0cmluZ1tpICsgMV0gOiAwOwotCi0gICAg
ICAgIGlmIChzaG91bGRFc2NhcGVVQ2hhcihjaGFyYWN0ZXIsIHByZXZpb3VzQ2hhcmFjdGVyLCBu
ZXh0Q2hhcmFjdGVyKSkgewotICAgICAgICAgICAgaWYgKGNoYXJhY3RlciA8PSAyNTUpIHsKLSAg
ICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCclJyk7Ci0gICAgICAgICAgICAgICAgYXBwZW5k
Qnl0ZUFzSGV4KGNoYXJhY3RlciwgcmVzdWx0KTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiUrIik7Ci0gICAgICAgICAgICAgICAg
YXBwZW5kQnl0ZUFzSGV4KGNoYXJhY3RlciA+PiA4LCByZXN1bHQpOwotICAgICAgICAgICAgICAg
IGFwcGVuZEJ5dGVBc0hleChjaGFyYWN0ZXIsIHJlc3VsdCk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0gZWxzZQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChjaGFyYWN0ZXIpOwotICAgIH0K
LQotICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKLX0KLQotU3RyaW5nIGRlY29kZUZyb21G
aWxlbmFtZShjb25zdCBTdHJpbmcmIGlucHV0U3RyaW5nKQotewotICAgIHVuc2lnbmVkIGxlbmd0
aCA9IGlucHV0U3RyaW5nLmxlbmd0aCgpOwotICAgIGlmICghbGVuZ3RoKQotICAgICAgICByZXR1
cm4gaW5wdXRTdHJpbmc7Ci0KLSAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKLSAgICByZXN1bHQu
cmVzZXJ2ZUNhcGFjaXR5KGxlbmd0aCk7Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bGVuZ3RoOyArK2kpIHsKLSAgICAgICAgaWYgKGlucHV0U3RyaW5nW2ldICE9ICclJykgewotICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZChpbnB1dFN0cmluZ1tpXSk7Ci0gICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIElmIHRoZSBpbnB1dCBzdHJpbmcgaXMgYSB2
YWxpZCBlbmNvZGVkIGZpbGVuYW1lLCBpdCBtdXN0IGJlIGF0IGxlYXN0IDIgY2hhcmFjdGVycyBs
b25nZXIKLSAgICAgICAgLy8gdGhhbiB0aGUgY3VycmVudCBpbmRleCB0byBhY2NvdW50IGZvciB0
aGlzIHBlcmNlbnQgZW5jb2RlZCB2YWx1ZS4KLSAgICAgICAgaWYgKGkgKyAyID49IGxlbmd0aCkK
LSAgICAgICAgICAgIHJldHVybiB7IH07Ci0KLSAgICAgICAgaWYgKGlucHV0U3RyaW5nW2krMV0g
IT0gJysnKSB7Ci0gICAgICAgICAgICBpZiAoIWlzQVNDSUlIZXhEaWdpdChpbnB1dFN0cmluZ1tp
ICsgMV0pKQotICAgICAgICAgICAgICAgIHJldHVybiB7IH07Ci0gICAgICAgICAgICBpZiAoIWlz
QVNDSUlIZXhEaWdpdChpbnB1dFN0cmluZ1tpICsgMl0pKQotICAgICAgICAgICAgICAgIHJldHVy
biB7IH07Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKHRvQVNDSUlIZXhWYWx1ZShpbnB1dFN0
cmluZ1tpICsgMV0sIGlucHV0U3RyaW5nW2kgKyAyXSkpOwotICAgICAgICAgICAgaSArPSAyOwot
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBJZiB0aGUgaW5w
dXQgc3RyaW5nIGlzIGEgdmFsaWQgZW5jb2RlZCBmaWxlbmFtZSwgaXQgbXVzdCBiZSBhdCBsZWFz
dCA1IGNoYXJhY3RlcnMgbG9uZ2VyCi0gICAgICAgIC8vIHRoYW4gdGhlIGN1cnJlbnQgaW5kZXgg
dG8gYWNjb3VudCBmb3IgdGhpcyBwZXJjZW50IGVuY29kZWQgdmFsdWUuCi0gICAgICAgIGlmIChp
ICsgNSA+PSBsZW5ndGgpCi0gICAgICAgICAgICByZXR1cm4geyB9OwotCi0gICAgICAgIGlmICgh
aXNBU0NJSUhleERpZ2l0KGlucHV0U3RyaW5nW2kgKyAyXSkpCi0gICAgICAgICAgICByZXR1cm4g
eyB9OwotICAgICAgICBpZiAoIWlzQVNDSUlIZXhEaWdpdChpbnB1dFN0cmluZ1tpICsgM10pKQot
ICAgICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICAgICAgaWYgKCFpc0FTQ0lJSGV4RGlnaXQoaW5w
dXRTdHJpbmdbaSArIDRdKSkKLSAgICAgICAgICAgIHJldHVybiB7IH07Ci0gICAgICAgIGlmICgh
aXNBU0NJSUhleERpZ2l0KGlucHV0U3RyaW5nW2kgKyA1XSkpCi0gICAgICAgICAgICByZXR1cm4g
eyB9OwotCi0gICAgICAgIHJlc3VsdC5hcHBlbmQodG9BU0NJSUhleFZhbHVlKGlucHV0U3RyaW5n
W2kgKyAyXSwgaW5wdXRTdHJpbmdbaSArIDNdKSA8PCA4IHwgdG9BU0NJSUhleFZhbHVlKGlucHV0
U3RyaW5nW2kgKyA0XSwgaW5wdXRTdHJpbmdbaSArIDVdKSk7Ci0gICAgICAgIGkgKz0gNTsKLSAg
ICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7Ci19Ci0KLVN0cmluZyBsYXN0Q29t
cG9uZW50T2ZQYXRoSWdub3JpbmdUcmFpbGluZ1NsYXNoKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsK
LSNpZiBPUyhXSU5ET1dTKQotICAgIGNoYXIgcGF0aFNlcGFyYXRvciA9ICdcXCc7Ci0jZWxzZQot
ICAgIGNoYXIgcGF0aFNlcGFyYXRvciA9ICcvJzsKLSNlbmRpZgotCi0gICAgYXV0byBwb3NpdGlv
biA9IHBhdGgucmV2ZXJzZUZpbmQocGF0aFNlcGFyYXRvcik7Ci0gICAgaWYgKHBvc2l0aW9uID09
IG5vdEZvdW5kKQotICAgICAgICByZXR1cm4gcGF0aDsKLQotICAgIHNpemVfdCBlbmRPZlN1YnN0
cmluZyA9IHBhdGgubGVuZ3RoKCkgLSAxOwotICAgIGlmIChwb3NpdGlvbiA9PSBlbmRPZlN1YnN0
cmluZykgewotICAgICAgICAtLWVuZE9mU3Vic3RyaW5nOwotICAgICAgICBwb3NpdGlvbiA9IHBh
dGgucmV2ZXJzZUZpbmQocGF0aFNlcGFyYXRvciwgZW5kT2ZTdWJzdHJpbmcpOwotICAgIH0KLQot
ICAgIHJldHVybiBwYXRoLnN1YnN0cmluZyhwb3NpdGlvbiArIDEsIGVuZE9mU3Vic3RyaW5nIC0g
cG9zaXRpb24pOwotfQotCi1ib29sIGFwcGVuZEZpbGVDb250ZW50c1RvRmlsZUhhbmRsZShjb25z
dCBTdHJpbmcmIHBhdGgsIFBsYXRmb3JtRmlsZUhhbmRsZSYgdGFyZ2V0KQotewotICAgIGF1dG8g
c291cmNlID0gb3BlbkZpbGUocGF0aCwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKLQotICAgIGlmICgh
aXNIYW5kbGVWYWxpZChzb3VyY2UpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBzdGF0
aWMgaW50IGJ1ZmZlclNpemUgPSAxIDw8IDE5OwotICAgIFZlY3RvcjxjaGFyPiBidWZmZXIoYnVm
ZmVyU2l6ZSk7Ci0KLSAgICBhdXRvIGZpbGVDbG9zZXIgPSBXVEY6Om1ha2VTY29wZUV4aXQoW3Nv
dXJjZV0oKSB7Ci0gICAgICAgIFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUgPSBzb3VyY2U7Ci0g
ICAgICAgIGNsb3NlRmlsZShoYW5kbGUpOwotICAgIH0pOwotCi0gICAgZG8gewotICAgICAgICBp
bnQgcmVhZEJ5dGVzID0gcmVhZEZyb21GaWxlKHNvdXJjZSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVy
U2l6ZSk7Ci0gICAgICAgIAotICAgICAgICBpZiAocmVhZEJ5dGVzIDwgMCkKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgICAgICBpZiAod3JpdGVUb0ZpbGUodGFyZ2V0LCBidWZmZXIu
ZGF0YSgpLCByZWFkQnl0ZXMpICE9IHJlYWRCeXRlcykKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgICAgICBpZiAocmVhZEJ5dGVzIDwgYnVmZmVyU2l6ZSkKLSAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgIH0gd2hpbGUgKHRydWUpOwotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci19Ci0KLSAgICAKLWJvb2wgZmlsZXNIYXZlU2FtZVZvbHVtZShjb25zdCBTdHJpbmcmIGZp
bGVBLCBjb25zdCBTdHJpbmcmIGZpbGVCKQotewotICAgIGF1dG8gZnNSZXBGaWxlQSA9IGZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihmaWxlQSk7Ci0gICAgYXV0byBmc1JlcEZpbGVCID0gZmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVCKTsKLSAgICAKLSAgICBpZiAoZnNSZXBGaWxlQS5pc051
bGwoKSB8fCBmc1JlcEZpbGVCLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICBib29sIHJlc3VsdCA9IGZhbHNlOwotCi0gICAgYXV0byBmaWxlQURldiA9IGdldEZpbGVEZXZp
Y2VJZChmc1JlcEZpbGVBKTsKLSAgICBhdXRvIGZpbGVCRGV2ID0gZ2V0RmlsZURldmljZUlkKGZz
UmVwRmlsZUIpOwotCi0gICAgaWYgKGZpbGVBRGV2ICYmIGZpbGVCRGV2KQotICAgICAgICByZXN1
bHQgPSAoZmlsZUFEZXYgPT0gZmlsZUJEZXYpOwotICAgIAotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci0KLSNpZiAhUExBVEZPUk0oTUFDKQotCi12b2lkIHNldE1ldGFkYXRhVVJMKGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpCi17Ci19Ci0KLWJvb2wgY2FuRXhjbHVk
ZUZyb21CYWNrdXAoKQotewotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBleGNsdWRlRnJv
bUJhY2t1cChjb25zdCBTdHJpbmcmKQotewotICAgIHJldHVybiBmYWxzZTsKLX0KLQotI2VuZGlm
Ci0KLU1hcHBlZEZpbGVEYXRhOjp+TWFwcGVkRmlsZURhdGEoKQotewotI2lmICFPUyhXSU5ET1dT
KQotICAgIGlmICghbV9maWxlRGF0YSkKLSAgICAgICAgcmV0dXJuOwotICAgIG11bm1hcChtX2Zp
bGVEYXRhLCBtX2ZpbGVTaXplKTsKLSNlbmRpZgotfQotCi1NYXBwZWRGaWxlRGF0YTo6TWFwcGVk
RmlsZURhdGEoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgYm9vbCYgc3VjY2VzcykKLXsKLSNpZiBP
UyhXSU5ET1dTKQotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgbWFwcGluZwotICAgIHN1Y2Nlc3Mg
PSBmYWxzZTsKLSNlbHNlCi0gICAgQ1N0cmluZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihmaWxlUGF0aCk7Ci0gICAgaW50IGZkID0gIWZzUmVwLmlzTnVsbCgpID8gb3Blbihmc1Jl
cC5kYXRhKCksIE9fUkRPTkxZKSA6IC0xOwotICAgIGlmIChmZCA8IDApIHsKLSAgICAgICAgc3Vj
Y2VzcyA9IGZhbHNlOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgc3RydWN0IHN0YXQg
ZmlsZVN0YXQ7Ci0gICAgaWYgKGZzdGF0KGZkLCAmZmlsZVN0YXQpKSB7Ci0gICAgICAgIGNsb3Nl
KGZkKTsKLSAgICAgICAgc3VjY2VzcyA9IGZhbHNlOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgdW5zaWduZWQgc2l6ZTsKLSAgICBpZiAoIVdURjo6Y29udmVydFNhZmVseShmaWxlU3Rh
dC5zdF9zaXplLCBzaXplKSkgewotICAgICAgICBjbG9zZShmZCk7Ci0gICAgICAgIHN1Y2Nlc3Mg
PSBmYWxzZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghc2l6ZSkgewotICAg
ICAgICBjbG9zZShmZCk7Ci0gICAgICAgIHN1Y2Nlc3MgPSB0cnVlOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgdm9pZCogZGF0YSA9IG1tYXAoMCwgc2l6ZSwgUFJPVF9SRUFELCBNQVBf
RklMRSB8IE1BUF9TSEFSRUQsIGZkLCAwKTsKLSAgICBjbG9zZShmZCk7Ci0KLSAgICBpZiAoZGF0
YSA9PSBNQVBfRkFJTEVEKSB7Ci0gICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIHN1Y2Nlc3MgPSB0cnVlOwotICAgIG1fZmlsZURhdGEgPSBkYXRh
OwotICAgIG1fZmlsZVNpemUgPSBzaXplOwotI2VuZGlmCi19Ci0KLVBsYXRmb3JtRmlsZUhhbmRs
ZSBvcGVuQW5kTG9ja0ZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUgb3Blbk1v
ZGUsIE9wdGlvblNldDxGaWxlTG9ja01vZGU+IGxvY2tNb2RlKQotewotICAgIGF1dG8gaGFuZGxl
ID0gb3BlbkZpbGUocGF0aCwgb3Blbk1vZGUpOwotICAgIGlmIChoYW5kbGUgPT0gaW52YWxpZFBs
YXRmb3JtRmlsZUhhbmRsZSkKLSAgICAgICAgcmV0dXJuIGludmFsaWRQbGF0Zm9ybUZpbGVIYW5k
bGU7Ci0KLSNpZiBVU0UoRklMRV9MT0NLKQotICAgIGJvb2wgbG9ja2VkID0gbG9ja0ZpbGUoaGFu
ZGxlLCBsb2NrTW9kZSk7Ci0gICAgQVNTRVJUX1VOVVNFRChsb2NrZWQsIGxvY2tlZCk7Ci0jZWxz
ZQotICAgIFVOVVNFRF9QQVJBTShsb2NrTW9kZSk7Ci0jZW5kaWYKLQotICAgIHJldHVybiBoYW5k
bGU7Ci19Ci0KLXZvaWQgdW5sb2NrQW5kQ2xvc2VGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5k
bGUpCi17Ci0jaWYgVVNFKEZJTEVfTE9DSykKLSAgICBib29sIHVubG9ja2VkID0gdW5sb2NrRmls
ZShoYW5kbGUpOwotICAgIEFTU0VSVF9VTlVTRUQodW5sb2NrZWQsIHVubG9ja2VkKTsKLSNlbmRp
ZgotICAgIGNsb3NlRmlsZShoYW5kbGUpOwotfQotCi1ib29sIGZpbGVJc0RpcmVjdG9yeShjb25z
dCBTdHJpbmcmIHBhdGgsIFNob3VsZEZvbGxvd1N5bWJvbGljTGlua3Mgc2hvdWxkRm9sbG93U3lt
Ym9saWNMaW5rcykKLXsKLSAgICBhdXRvIG1ldGFkYXRhID0gc2hvdWxkRm9sbG93U3ltYm9saWNM
aW5rcyA9PSBTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpZZXMgPyBmaWxlTWV0YWRhdGFGb2xs
b3dpbmdTeW1saW5rcyhwYXRoKSA6IGZpbGVNZXRhZGF0YShwYXRoKTsKLSAgICBpZiAoIW1ldGFk
YXRhKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIG1ldGFkYXRhLnZhbHVlKCku
dHlwZSA9PSBGaWxlTWV0YWRhdGE6OlR5cGU6OkRpcmVjdG9yeTsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgRmlsZVN5c3RlbQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
RmlsZVN5c3RlbS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzY2ViY2FhMDUzOWI1
OWQ5M2U3MmUwOTg0MGIyM2IxZGFjNjM4MTFiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaAor
KysgL2Rldi9udWxsCkBAIC0xLDIyNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3
LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAy
MDA4IENvbGxhYm9yYSwgTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChD
KSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
IAotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
IAotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRo
ZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSA8
dGltZS5oPgotI2luY2x1ZGUgPHV0aWxpdHk+Ci0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNp
bmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1
ZGUgPHd0Zi9XYWxsVGltZS5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi0j
aWYgVVNFKENGKQotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLSNlbmRpZgotCi0jaWYgVVNF
KENGKQotdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DRkRhdGEqIENGRGF0YVJlZjsKLSNlbmRpZgot
Ci1PQkpDX0NMQVNTIE5TU3RyaW5nOwotCi0jaWYgUExBVEZPUk0oV0lOKQotdHlwZWRlZiB2b2lk
ICpIQU5ETEU7Ci0jZW5kaWYKLQotI2lmIFVTRShHTElCKQotdHlwZWRlZiBzdHJ1Y3QgX0dGaWxl
SU9TdHJlYW0gR0ZpbGVJT1N0cmVhbTsKLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LXN0cnVjdCBGaWxlTWV0YWRhdGE7Ci0KLW5hbWVzcGFjZSBGaWxlU3lzdGVtIHsKLQotLy8gUGxh
dGZvcm1GaWxlSGFuZGxlCi0jaWYgVVNFKEdMSUIpICYmICFQTEFURk9STShXSU4pCi10eXBlZGVm
IEdGaWxlSU9TdHJlYW0qIFBsYXRmb3JtRmlsZUhhbmRsZTsKLWNvbnN0IFBsYXRmb3JtRmlsZUhh
bmRsZSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlID0gMDsKLSNlbGlmIFBMQVRGT1JNKFdJTikK
LXR5cGVkZWYgSEFORExFIFBsYXRmb3JtRmlsZUhhbmRsZTsKLS8vIEZJWE1FOiAtMSBpcyBJTlZB
TElEX0hBTkRMRV9WQUxVRSwgZGVmaW5lZCBpbiA8d2luYmFzZS5oPi4gQ2hyb21pdW0gdHJpZXMg
dG8KLS8vIGF2b2lkIHVzaW5nIFdpbmRvd3MgaGVhZGVycyBpbiBoZWFkZXJzLiAgV2UnZCByYXRo
ZXIgbW92ZSB0aGlzIGludG8gdGhlIC5jcHAuCi1jb25zdCBQbGF0Zm9ybUZpbGVIYW5kbGUgaW52
YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8SEFORExFPigtMSk7Ci0j
ZWxzZQotdHlwZWRlZiBpbnQgUGxhdGZvcm1GaWxlSGFuZGxlOwotY29uc3QgUGxhdGZvcm1GaWxl
SGFuZGxlIGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUgPSAtMTsKLSNlbmRpZgotCi1lbnVtIGNs
YXNzIEZpbGVPcGVuTW9kZSB7Ci0gICAgUmVhZCwKLSAgICBXcml0ZSwKLSNpZiBPUyhEQVJXSU4p
Ci0gICAgRXZlbnRzT25seSwKLSNlbmRpZgotfTsKLQotZW51bSBjbGFzcyBGaWxlU2Vla09yaWdp
biB7Ci0gICAgQmVnaW5uaW5nLAotICAgIEN1cnJlbnQsCi0gICAgRW5kLAotfTsKLQotZW51bSBj
bGFzcyBGaWxlTG9ja01vZGUgewotICAgIFNoYXJlZCA9IDEgPDwgMCwKLSAgICBFeGNsdXNpdmUg
PSAxIDw8IDEsCi0gICAgTm9uYmxvY2tpbmcgPSAxIDw8IDIsCi19OwotCi1lbnVtIGNsYXNzIFNo
b3VsZEZvbGxvd1N5bWJvbGljTGlua3MgeyBObywgWWVzIH07Ci0KLVdFQkNPUkVfRVhQT1JUIGJv
b2wgZmlsZUV4aXN0cyhjb25zdCBTdHJpbmcmKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgZGVsZXRl
RmlsZShjb25zdCBTdHJpbmcmKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgZGVsZXRlRW1wdHlEaXJl
Y3RvcnkoY29uc3QgU3RyaW5nJik7Ci1XRUJDT1JFX0VYUE9SVCBib29sIG1vdmVGaWxlKGNvbnN0
IFN0cmluZyYgb2xkUGF0aCwgY29uc3QgU3RyaW5nJiBuZXdQYXRoKTsKLVdFQkNPUkVfRVhQT1JU
IGJvb2wgZ2V0RmlsZVNpemUoY29uc3QgU3RyaW5nJiwgbG9uZyBsb25nJiByZXN1bHQpOwotV0VC
Q09SRV9FWFBPUlQgYm9vbCBnZXRGaWxlU2l6ZShQbGF0Zm9ybUZpbGVIYW5kbGUsIGxvbmcgbG9u
ZyYgcmVzdWx0KTsKLVdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlTW9k
aWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmKTsKLVdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPFdh
bGxUaW1lPiBnZXRGaWxlQ3JlYXRpb25UaW1lKGNvbnN0IFN0cmluZyYpOyAvLyBOb3QgYWxsIHBs
YXRmb3JtcyBzdG9yZSBmaWxlIGNyZWF0aW9uIHRpbWUuCi1XRUJDT1JFX0VYUE9SVCBPcHRpb25h
bDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YShjb25zdCBTdHJpbmcmIHBhdGgpOwotV0VCQ09S
RV9FWFBPUlQgT3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1s
aW5rcyhjb25zdCBTdHJpbmcmIHBhdGgpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCBmaWxlSXNEaXJl
Y3RvcnkoY29uc3QgU3RyaW5nJiwgU2hvdWxkRm9sbG93U3ltYm9saWNMaW5rcyk7Ci1XRUJDT1JF
X0VYUE9SVCBTdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNvbnN0IFN0cmluZyYgcGF0
aCwgY29uc3QgU3RyaW5nJiBjb21wb25lbnQpOwotU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudHMoU3RyaW5nVmlldyBwYXRoLCBjb25zdCBWZWN0b3I8U3RyaW5nVmlldz4mIGNvbXBvbmVu
dHMpOwotU3RyaW5nIGxhc3RDb21wb25lbnRPZlBhdGhJZ25vcmluZ1RyYWlsaW5nU2xhc2goY29u
c3QgU3RyaW5nJiBwYXRoKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgbWFrZUFsbERpcmVjdG9yaWVz
KGNvbnN0IFN0cmluZyYgcGF0aCk7Ci1TdHJpbmcgaG9tZURpcmVjdG9yeVBhdGgoKTsKLVdFQkNP
UkVfRVhQT1JUIFN0cmluZyBwYXRoR2V0RmlsZU5hbWUoY29uc3QgU3RyaW5nJik7Ci1XRUJDT1JF
X0VYUE9SVCBTdHJpbmcgZGlyZWN0b3J5TmFtZShjb25zdCBTdHJpbmcmKTsKLVdFQkNPUkVfRVhQ
T1JUIGJvb2wgZ2V0Vm9sdW1lRnJlZVNwYWNlKGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90Jik7Ci1X
RUJDT1JFX0VYUE9SVCBPcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29uc3QgQ1N0
cmluZyYpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCBjcmVhdGVTeW1ib2xpY0xpbmsoY29uc3QgU3Ry
aW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGljTGlua1BhdGgpOwotCi1XRUJD
T1JFX0VYUE9SVCB2b2lkIHNldE1ldGFkYXRhVVJMKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3Qg
U3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIgPSB7IH0pOwotCi1ib29s
IGNhbkV4Y2x1ZGVGcm9tQmFja3VwKCk7IC8vIFJldHVybnMgdHJ1ZSBpZiBhbnkgZmlsZSBjYW4g
ZXZlciBiZSBleGNsdWRlZCBmcm9tIGJhY2t1cC4KLWJvb2wgZXhjbHVkZUZyb21CYWNrdXAoY29u
c3QgU3RyaW5nJik7IC8vIFJldHVybnMgdHJ1ZSBpZiBzdWNjZXNzZnVsLgotCi1XRUJDT1JFX0VY
UE9SVCBWZWN0b3I8U3RyaW5nPiBsaXN0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgY29u
c3QgU3RyaW5nJiBmaWx0ZXIgPSBTdHJpbmcoKSk7Ci0KLVdFQkNPUkVfRVhQT1JUIENTdHJpbmcg
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYpOwotU3RyaW5nIHN0cmluZ0Zy
b21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgY2hhciopOwotCi1pbmxpbmUgYm9vbCBp
c0hhbmRsZVZhbGlkKGNvbnN0IFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKSB7IHJldHVybiBo
YW5kbGUgIT0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsgfQotCi0vLyBQcmVmaXggaXMgd2hh
dCB0aGUgZmlsZW5hbWUgc2hvdWxkIGJlIHByZWZpeGVkIHdpdGgsIG5vdCB0aGUgZnVsbCBwYXRo
LgotV0VCQ09SRV9FWFBPUlQgU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYg
cHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmKTsKLVdFQkNPUkVfRVhQT1JUIFBsYXRmb3JtRmls
ZUhhbmRsZSBvcGVuRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVPcGVuTW9kZSk7Ci1XRUJD
T1JFX0VYUE9SVCB2b2lkIGNsb3NlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUmKTsKLS8vIFJldHVy
bnMgdGhlIHJlc3VsdGluZyBvZmZzZXQgZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaWxlIGlm
IHN1Y2Nlc3NmdWwsIC0xIG90aGVyd2lzZS4KLVdFQkNPUkVfRVhQT1JUIGxvbmcgbG9uZyBzZWVr
RmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQsIEZpbGVTZWVrT3JpZ2lu
KTsKLWJvb2wgdHJ1bmNhdGVGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgbG9uZyBsb25nIG9mZnNl
dCk7Ci0vLyBSZXR1cm5zIG51bWJlciBvZiBieXRlcyBhY3R1YWxseSByZWFkIGlmIHN1Y2Nlc3Nm
dWwsIC0xIG90aGVyd2lzZS4KLVdFQkNPUkVfRVhQT1JUIGludCB3cml0ZVRvRmlsZShQbGF0Zm9y
bUZpbGVIYW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpOwotLy8gUmV0dXJucyBu
dW1iZXIgb2YgYnl0ZXMgYWN0dWFsbHkgd3JpdHRlbiBpZiBzdWNjZXNzZnVsLCAtMSBvdGhlcndp
c2UuCi1XRUJDT1JFX0VYUE9SVCBpbnQgcmVhZEZyb21GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwg
Y2hhciogZGF0YSwgaW50IGxlbmd0aCk7Ci0KLVdFQkNPUkVfRVhQT1JUIFBsYXRmb3JtRmlsZUhh
bmRsZSBvcGVuQW5kTG9ja0ZpbGUoY29uc3QgU3RyaW5nJiwgRmlsZU9wZW5Nb2RlLCBPcHRpb25T
ZXQ8RmlsZUxvY2tNb2RlPiA9IEZpbGVMb2NrTW9kZTo6RXhjbHVzaXZlKTsKLVdFQkNPUkVfRVhQ
T1JUIHZvaWQgdW5sb2NrQW5kQ2xvc2VGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSk7Ci0KLS8vIEFw
cGVuZHMgdGhlIGNvbnRlbnRzIG9mIHRoZSBmaWxlIGZvdW5kIGF0ICdwYXRoJyB0byB0aGUgb3Bl
biBQbGF0Zm9ybUZpbGVIYW5kbGUuCi0vLyBSZXR1cm5zIHRydWUgaWYgdGhlIHdyaXRlIHdhcyBz
dWNjZXNzZnVsLCBmYWxzZSBpZiBpdCB3YXMgbm90LgotYm9vbCBhcHBlbmRGaWxlQ29udGVudHNU
b0ZpbGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBQbGF0Zm9ybUZpbGVIYW5kbGUmKTsKLQot
Ly8gSGFyZCBsaW5rcyBhIGZpbGUgaWYgcG9zc2libGUsIGNvcGllcyBpdCBpZiBub3QuCi1ib29s
IGhhcmRMaW5rT3JDb3B5RmlsZShjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiBk
ZXN0aW5hdGlvbik7Ci0KLSNpZiBVU0UoRklMRV9MT0NLKQotV0VCQ09SRV9FWFBPUlQgYm9vbCBs
b2NrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUsIE9wdGlvblNldDxGaWxlTG9ja01vZGU+KTsKLVdF
QkNPUkVfRVhQT1JUIGJvb2wgdW5sb2NrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUpOwotI2VuZGlm
Ci0KLS8vIEVuY29kZSBhIHN0cmluZyBmb3IgdXNlIHdpdGhpbiBhIGZpbGUgbmFtZS4KLVdFQkNP
UkVfRVhQT1JUIFN0cmluZyBlbmNvZGVGb3JGaWxlTmFtZShjb25zdCBTdHJpbmcmKTsKLVdFQkNP
UkVfRVhQT1JUIFN0cmluZyBkZWNvZGVGcm9tRmlsZW5hbWUoY29uc3QgU3RyaW5nJik7Ci0KLVdF
QkNPUkVfRVhQT1JUIGJvb2wgZmlsZXNIYXZlU2FtZVZvbHVtZShjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmKTsKLQotI2lmIFVTRShDRikKLVJldGFpblB0cjxDRlVSTFJlZj4gcGF0aEFzVVJM
KGNvbnN0IFN0cmluZyYpOwotI2VuZGlmCi0KLSNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JN
KFdQRSkKLVN0cmluZyBmaWxlbmFtZUZvckRpc3BsYXkoY29uc3QgU3RyaW5nJik7Ci0jZW5kaWYK
LQotI2lmIFBMQVRGT1JNKFdJTikKLVdFQkNPUkVfRVhQT1JUIFN0cmluZyBsb2NhbFVzZXJTcGVj
aWZpY1N0b3JhZ2VEaXJlY3RvcnkoKTsKLVN0cmluZyByb2FtaW5nVXNlclNwZWNpZmljU3RvcmFn
ZURpcmVjdG9yeSgpOwotI2VuZGlmCi0KLSNpZiBQTEFURk9STShDT0NPQSkKLVdFQkNPUkVfRVhQ
T1JUIE5TU3RyaW5nICpjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoTlNTdHJpbmcgKmRpcmVjdG9y
eVByZWZpeCk7Ci1XRUJDT1JFX0VYUE9SVCBib29sIGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KGNv
bnN0IFN0cmluZyYpOwotI2VuZGlmCi0KLSNpZiBQTEFURk9STShXSU5fQ0FJUk8pCi1XRUJDT1JF
X0VYUE9SVCBTdHJpbmcgY3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KCk7Ci1XRUJDT1JFX0VYUE9S
VCBib29sIGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpOwotI2VuZGlmCi0K
LVdFQkNPUkVfRVhQT1JUIFN0cmluZyByZWFsUGF0aChjb25zdCBTdHJpbmcmKTsKLQotY2xhc3Mg
TWFwcGVkRmlsZURhdGEgewotcHVibGljOgotICAgIE1hcHBlZEZpbGVEYXRhKCkgeyB9Ci0gICAg
TWFwcGVkRmlsZURhdGEoTWFwcGVkRmlsZURhdGEmJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgTWFw
cGVkRmlsZURhdGEoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgYm9vbCYgc3VjY2Vzcyk7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgfk1hcHBlZEZpbGVEYXRhKCk7Ci0gICAgTWFwcGVkRmlsZURhdGEmIG9w
ZXJhdG9yPShNYXBwZWRGaWxlRGF0YSYmKTsKLQotICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2wo
KSBjb25zdCB7IHJldHVybiAhIW1fZmlsZURhdGE7IH0KLSAgICBjb25zdCB2b2lkKiBkYXRhKCkg
Y29uc3QgeyByZXR1cm4gbV9maWxlRGF0YTsgfQotICAgIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7
IHJldHVybiBtX2ZpbGVTaXplOyB9Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCogbV9maWxlRGF0YSB7
IG51bGxwdHIgfTsKLSAgICB1bnNpZ25lZCBtX2ZpbGVTaXplIHsgMCB9OwotfTsKLQotaW5saW5l
IE1hcHBlZEZpbGVEYXRhOjpNYXBwZWRGaWxlRGF0YShNYXBwZWRGaWxlRGF0YSYmIG90aGVyKQot
ICAgIDogbV9maWxlRGF0YShzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fZmlsZURhdGEsIG51bGxwdHIp
KQotICAgICwgbV9maWxlU2l6ZShzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fZmlsZVNpemUsIDApKQot
ewotfQotCi1pbmxpbmUgTWFwcGVkRmlsZURhdGEmIE1hcHBlZEZpbGVEYXRhOjpvcGVyYXRvcj0o
TWFwcGVkRmlsZURhdGEmJiBvdGhlcikKLXsKLSAgICBtX2ZpbGVEYXRhID0gc3RkOjpleGNoYW5n
ZShvdGhlci5tX2ZpbGVEYXRhLCBudWxscHRyKTsKLSAgICBtX2ZpbGVTaXplID0gc3RkOjpleGNo
YW5nZShvdGhlci5tX2ZpbGVTaXplLCAwKTsKLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIEZpbGVTeXN0ZW0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAppbmRleCA4MTMxOGU4YjI5YWU1YTBmNWI5NjAzYzgy
NTU3OTFjZGJjMjBhNGUxLi5lYzM3MTM0MWFiOTQ5NWI3ZDM1NzYxMzUxYjJiMDliMTM1YTNlZjNi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaApAQCAtMjYsOCArMjYsOCBA
QAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9BcnJheUJ1ZmZlci5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgog
I2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU291cmNlc0dMaWIudHh0IGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU291cmNlc0dMaWIudHh0CmluZGV4IDI3NzNjMmEwODhiNjBmYjEzOTY5MmQ1ZjQwZDBiZWZj
M2ZlYzNjYzQuLjA5MGI4NGE0OGMxMDNkM2Q1OTMxNDFkOTBlMmJiYjRhYmYyYzViYTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NvdXJjZXNHTGliLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Tb3VyY2VzR0xpYi50eHQKQEAgLTI1LDcgKzI1LDYgQEAgcGxh
dGZvcm0vYXVkaW8vZ2xpYi9BdWRpb0J1c0dMaWIuY3BwCiAKIHBsYXRmb3JtL2dsaWIvRXZlbnRM
b29wR2xpYi5jcHAKIHBsYXRmb3JtL2dsaWIvRmlsZU1vbml0b3JHTGliLmNwcAotcGxhdGZvcm0v
Z2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKIHBsYXRmb3JtL2dsaWIvS2V5ZWREZWNvZGVyR2xpYi5j
cHAKIHBsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAKIHBsYXRmb3JtL2dsaWIvTG93
UG93ZXJNb2RlTm90aWZpZXJHTGliLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2YvRmlsZVN5c3RlbUNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0Zp
bGVTeXN0ZW1DRi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA4NDcwYTA4ZmE1
ZDJmNDUyZTZjOTM4NzAxYzZkOTI2Y2E2MDlmMDMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvRmlsZVN5c3Rl
bUNGLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDc0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDcsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikg
bm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKLQotI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGU3Ry
aW5nLmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1DU3RyaW5nIEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihj
b25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZlN0cmlu
ZyA9IHBhdGguY3JlYXRlQ0ZTdHJpbmcoKTsKLQotICAgIGlmICghY2ZTdHJpbmcpCi0gICAgICAg
IHJldHVybiBDU3RyaW5nKCk7Ci0KLSAgICBDRkluZGV4IHNpemUgPSBDRlN0cmluZ0dldE1heGlt
dW1TaXplT2ZGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY2ZTdHJpbmcuZ2V0KCkpOwotCi0gICAg
VmVjdG9yPGNoYXI+IGJ1ZmZlcihzaXplKTsKLQotICAgIGlmICghQ0ZTdHJpbmdHZXRGaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oY2ZTdHJpbmcuZ2V0KCksIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5z
aXplKCkpKSB7Ci0gICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGdldCBmaWxlc3lzdGVtIHJl
cHJlc2VudGF0aW9uIHRvIGNyZWF0ZSBDU3RyaW5nIGZyb20gY2ZTdHJpbmciKTsKLSAgICAgICAg
cmV0dXJuIENTdHJpbmcoKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gQ1N0cmluZyhidWZmZXIuZGF0
YSgpLCBzdHJsZW4oYnVmZmVyLmRhdGEoKSkpOwotfQotCi1TdHJpbmcgRmlsZVN5c3RlbTo6c3Ry
aW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBjaGFyKiBmaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24pCi17Ci0gICAgcmV0dXJuIGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoRmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKGtDRkFsbG9jYXRvckRlZmF1bHQsIGZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbikpLmdldCgpOwotfQotCi1SZXRhaW5QdHI8Q0ZVUkxSZWY+IEZpbGVTeXN0ZW06
OnBhdGhBc1VSTChjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgQ0ZVUkxQYXRoU3R5bGUgcGF0
aFN0eWxlOwotI2lmIFBMQVRGT1JNKFdJTikKLSAgICBwYXRoU3R5bGUgPSBrQ0ZVUkxXaW5kb3dz
UGF0aFN0eWxlOwotI2Vsc2UKLSAgICBwYXRoU3R5bGUgPSBrQ0ZVUkxQT1NJWFBhdGhTdHlsZTsK
LSNlbmRpZgotICAgIHJldHVybiBhZG9wdENGKENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRo
KDAsIHBhdGguY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgcGF0aFN0eWxlLCBGQUxTRSkpOwotfQot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9GaWxlTW9uaXRvckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvRmlsZU1vbml0b3JDb2NvYS5tbQppbmRleCAxYWIzYzMzNGM2OWRmZmEzNjQ4YWIwMGE0
NTU4ZDlmMjdlNDMwNjAwLi5jYzdmZTZiNmNkZTEwZWQ0Y2E0NTZlNDZiZTI4YTA0ZjY4NzI0NzRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9GaWxlTW9uaXRvckNv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0ZpbGVNb25pdG9yQ29j
b2EubW0KQEAgLTI2LDkgKzI2LDkgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiRmls
ZU1vbml0b3IuaCIKIAotI2ltcG9ydCAiRmlsZVN5c3RlbS5oIgogI2ltcG9ydCAiTG9nZ2luZy5o
IgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9GaWxlU3lzdGVtQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9GaWxlU3lzdGVtQ29jb2EubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGQzOGIwYzgzMDNlN2JhMTBkNDA1MzNjYmNkMTVkYTMzYjA5NjllM2MuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvRmlsZVN5c3RlbUNvY29hLm1tCisrKyAvZGV2L251bGwKQEAgLTEsMTQzICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgot
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFw
cGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0g
KiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLiAKLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAot
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkZpbGVTeXN0ZW0uaCIKLQotQGludGVyZmFjZSBX
ZWJGaWxlTWFuYWdlckRlbGVnYXRlIDogTlNPYmplY3QgPE5TRmlsZU1hbmFnZXJEZWxlZ2F0ZT4K
LUBlbmQKLQotQGltcGxlbWVudGF0aW9uIFdlYkZpbGVNYW5hZ2VyRGVsZWdhdGUKLQotLSAoQk9P
TClmaWxlTWFuYWdlcjooTlNGaWxlTWFuYWdlciAqKWZpbGVNYW5hZ2VyIHNob3VsZFByb2NlZWRB
ZnRlckVycm9yOihOU0Vycm9yICopZXJyb3IgbW92aW5nSXRlbUF0VVJMOihOU1VSTCAqKXNyY1VS
TCB0b1VSTDooTlNVUkwgKilkc3RVUkwKLXsKLSAgICBVTlVTRURfUEFSQU0oZmlsZU1hbmFnZXIp
OwotICAgIFVOVVNFRF9QQVJBTShzcmNVUkwpOwotICAgIFVOVVNFRF9QQVJBTShkc3RVUkwpOyAg
ICAKLSAgICByZXR1cm4gZXJyb3IuY29kZSA9PSBOU0ZpbGVXcml0ZUZpbGVFeGlzdHNFcnJvcjsK
LX0KLQotQGVuZAotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBGaWxlU3lzdGVt
IHsKLQotU3RyaW5nIGhvbWVEaXJlY3RvcnlQYXRoKCkKLXsKLSAgICByZXR1cm4gTlNIb21lRGly
ZWN0b3J5KCk7Ci19Ci0KLVN0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHBy
ZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiBwbGF0Zm9ybUZpbGVIYW5kbGUpCi17Ci0gICAgcGxh
dGZvcm1GaWxlSGFuZGxlID0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKLSAgICAKLSAgICBW
ZWN0b3I8Y2hhcj4gdGVtcG9yYXJ5RmlsZVBhdGgoUEFUSF9NQVgpOwotICAgIGlmICghY29uZnN0
cihfQ1NfREFSV0lOX1VTRVJfVEVNUF9ESVIsIHRlbXBvcmFyeUZpbGVQYXRoLmRhdGEoKSwgdGVt
cG9yYXJ5RmlsZVBhdGguc2l6ZSgpKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAg
Ly8gU2hyaW5rIHRoZSB2ZWN0b3IuICAgCi0gICAgdGVtcG9yYXJ5RmlsZVBhdGguc2hyaW5rKHN0
cmxlbih0ZW1wb3JhcnlGaWxlUGF0aC5kYXRhKCkpKTsKLQotICAgIC8vIEZJWE1FOiBDaGFuZ2Ug
dG8gYSBydW50aW1lIGFzc2VydGlvbiB0aGF0IHRoZSBwYXRoIGVuZHMgd2l0aCBhIHNsYXNoIG9u
Y2UgPHJkYXI6Ly9wcm9ibGVtLzIzNTc5MDc3PiBpcwotICAgIC8vIGZpeGVkIGluIGFsbCBpT1Mg
U2ltdWxhdG9yIHZlcnNpb25zIHRoYXQgd2UgdXNlLgotICAgIGlmICh0ZW1wb3JhcnlGaWxlUGF0
aC5sYXN0KCkgIT0gJy8nKQotICAgICAgICB0ZW1wb3JhcnlGaWxlUGF0aC5hcHBlbmQoJy8nKTsK
LQotICAgIC8vIEFwcGVuZCB0aGUgZmlsZSBuYW1lLgotICAgIENTdHJpbmcgcHJlZml4VXRmOCA9
IHByZWZpeC51dGY4KCk7Ci0gICAgdGVtcG9yYXJ5RmlsZVBhdGguYXBwZW5kKHByZWZpeFV0Zjgu
ZGF0YSgpLCBwcmVmaXhVdGY4Lmxlbmd0aCgpKTsKLSAgICB0ZW1wb3JhcnlGaWxlUGF0aC5hcHBl
bmQoIlhYWFhYWCIsIDYpOwotICAgIHRlbXBvcmFyeUZpbGVQYXRoLmFwcGVuZCgnXDAnKTsKLQot
ICAgIHBsYXRmb3JtRmlsZUhhbmRsZSA9IG1rc3RlbXAodGVtcG9yYXJ5RmlsZVBhdGguZGF0YSgp
KTsKLSAgICBpZiAocGxhdGZvcm1GaWxlSGFuZGxlID09IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5k
bGUpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIHJldHVybiBTdHJpbmc6OmZyb21V
VEY4KHRlbXBvcmFyeUZpbGVQYXRoLmRhdGEoKSk7Ci19Ci0KLWJvb2wgbW92ZUZpbGUoY29uc3Qg
U3RyaW5nJiBvbGRQYXRoLCBjb25zdCBTdHJpbmcmIG5ld1BhdGgpCi17Ci0gICAgLy8gT3Zlcndy
aXRlIGV4aXN0aW5nIGZpbGVzLgotICAgIGF1dG8gbWFuYWdlciA9IGFkb3B0TlMoW1tOU0ZpbGVN
YW5hZ2VyIGFsbG9jXSBpbml0XSk7Ci0gICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tXZWJG
aWxlTWFuYWdlckRlbGVnYXRlIGFsbG9jXSBpbml0XSk7Ci0gICAgW21hbmFnZXIgc2V0RGVsZWdh
dGU6ZGVsZWdhdGUuZ2V0KCldOwotICAgIAotICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOwotICAg
IGJvb2wgc3VjY2VzcyA9IFttYW5hZ2VyIG1vdmVJdGVtQXRVUkw6W05TVVJMIGZpbGVVUkxXaXRo
UGF0aDpvbGRQYXRoXSB0b1VSTDpbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOm5ld1BhdGhdIGVycm9y
OiZlcnJvcl07Ci0gICAgaWYgKCFzdWNjZXNzKQotICAgICAgICBOU0xvZyhAIkVycm9yIGluIG1v
dmVGaWxlOiAlQCIsIGVycm9yKTsKLSAgICByZXR1cm4gc3VjY2VzczsKLX0KLQotYm9vbCBnZXRW
b2x1bWVGcmVlU3BhY2UoY29uc3QgU3RyaW5nJiBwYXRoLCB1aW50NjRfdCYgZnJlZVNwYWNlKQot
ewotICAgIE5TRGljdGlvbmFyeSAqZmlsZVN5c3RlbUF0dHJpYnV0ZXNEaWN0aW9uYXJ5ID0gW1tO
U0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBhdHRyaWJ1dGVzT2ZGaWxlU3lzdGVtRm9yUGF0
aDooTlNTdHJpbmcgKilwYXRoIGVycm9yOk5VTExdOwotICAgIGlmICghZmlsZVN5c3RlbUF0dHJp
YnV0ZXNEaWN0aW9uYXJ5KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgZnJlZVNwYWNlID0g
W1tmaWxlU3lzdGVtQXR0cmlidXRlc0RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5Ok5TRmlsZVN5c3Rl
bUZyZWVTaXplXSB1bnNpZ25lZExvbmdMb25nVmFsdWVdOwotICAgIHJldHVybiB0cnVlOwotfQot
Ci1OU1N0cmluZyAqY3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KE5TU3RyaW5nICpkaXJlY3RvcnlQ
cmVmaXgpCi17Ci0gICAgTlNTdHJpbmcgKnRlbXBEaXJlY3RvcnkgPSBOU1RlbXBvcmFyeURpcmVj
dG9yeSgpOwotICAgIGlmICghdGVtcERpcmVjdG9yeSB8fCAhW3RlbXBEaXJlY3RvcnkgbGVuZ3Ro
XSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIGlmICghZGlyZWN0b3J5UHJlZml4IHx8ICFb
ZGlyZWN0b3J5UHJlZml4IGxlbmd0aF0pCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBOU1N0
cmluZyAqdGVtcERpcmVjdG9yeUNvbXBvbmVudCA9IFtkaXJlY3RvcnlQcmVmaXggc3RyaW5nQnlB
cHBlbmRpbmdTdHJpbmc6QCItWFhYWFhYWFgiXTsKLSAgICBjb25zdCBjaGFyKiB0ZW1wRGlyZWN0
b3J5Q1N0cmluZyA9IFtbdGVtcERpcmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25l
bnQ6dGVtcERpcmVjdG9yeUNvbXBvbmVudF0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uXTsKLSAg
ICBpZiAoIXRlbXBEaXJlY3RvcnlDU3RyaW5nKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAg
Y29uc3Qgc2l6ZV90IGxlbmd0aCA9IHN0cmxlbih0ZW1wRGlyZWN0b3J5Q1N0cmluZyk7Ci0gICAg
QVNTRVJUKGxlbmd0aCA8PSBNQVhQQVRITEVOKTsKLSAgICBpZiAobGVuZ3RoID4gTUFYUEFUSExF
TikKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIGNvbnN0IHNpemVfdCBsZW5ndGhQbHVzTnVs
bFRlcm1pbmF0b3IgPSBsZW5ndGggKyAxOwotICAgIFZlY3RvcjxjaGFyLCBNQVhQQVRITEVOICsg
MT4gcGF0aChsZW5ndGhQbHVzTnVsbFRlcm1pbmF0b3IpOwotICAgIG1lbWNweShwYXRoLmRhdGEo
KSwgdGVtcERpcmVjdG9yeUNTdHJpbmcsIGxlbmd0aFBsdXNOdWxsVGVybWluYXRvcik7Ci0KLSAg
ICBpZiAoIW1rZHRlbXAocGF0aC5kYXRhKCkpKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAg
cmV0dXJuIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gc3RyaW5nV2l0aEZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbjpwYXRoLmRhdGEoKSBsZW5ndGg6bGVuZ3RoXTsKLX0KLQotYm9vbCBk
ZWxldGVOb25FbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgcmV0dXJu
IFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gcmVtb3ZlSXRlbUF0UGF0aDpwYXRoIGVy
cm9yOm5pbF07Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEZpbGVTeXN0ZW0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvRmlsZU1v
bml0b3JHTGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvRmlsZU1vbml0b3JH
TGliLmNwcAppbmRleCA0NjNmMzI3NmMyNGUyNTFiZWI0YWEwOGIwYjk4OTg2ZThjYzk2OTIzLi41
YTk4MmY0OTQ5MjM3Y2IyMGE5ZjU0Y2Y4OGUyYWRlZTQ4ZDRmOTZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0ZpbGVNb25pdG9yR0xpYi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9GaWxlTW9uaXRvckdMaWIuY3BwCkBAIC0yNiw3ICsyNiw3
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRmlsZU1vbml0b3IuaCIKIAotI2lu
Y2x1ZGUgIkZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1
ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGhyZWFkcy9CaW5hcnlT
ZW1hcGhvcmUuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9G
aWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0ZpbGVTeXN0
ZW1HbGliLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2E2YzNkZjk0ZGQzMjIx
MzQzMDBjN2JiZDI2YmJiMDg5MDQ2NTYzMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0ZpbGVTeXN0ZW1H
bGliLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ3MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDA3LCAyMDA5IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDggQ29sbGFib3JhLCBMdGQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDEwIE1v
dG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
LSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgotCi0jaW5jbHVkZSAiRmlsZU1ldGFkYXRh
LmgiCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlIDxnaW8vZ2ZpbGVkZXNj
cmlwdG9yYmFzZWQuaD4KLSNpbmNsdWRlIDxnaW8vZ2lvLmg+Ci0jaW5jbHVkZSA8Z2xpYi5oPgot
I2luY2x1ZGUgPGdsaWIvZ3N0ZGlvLmg+Ci0jaW5jbHVkZSA8c3lzL2ZpbGUuaD4KLSNpbmNsdWRl
IDx3dGYvRW51bVRyYWl0cy5oPgotI2luY2x1ZGUgPHd0Zi9VVUlELmg+Ci0jaW5jbHVkZSA8d3Rm
L2dsaWIvR0xpYlV0aWxpdGllcy5oPgotI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KLSNp
bmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KLSNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgRmls
ZVN5c3RlbSB7Ci0KLS8qIE9uIGxpbnV4IGZpbGUgbmFtZXMgYXJlIGp1c3QgcmF3IGJ5dGVzLCBz
byBhbHNvIHN0cmluZ3MgdGhhdCBjYW5ub3QgYmUgZW5jb2RlZCBpbiBhbnkgd2F5Ci0gKiBhcmUg
dmFsaWQgZmlsZSBuYW1lcy4gVGhpcyBtZWFuIHRoYXQgd2UgY2Fubm90IGp1c3Qgc3RvcmUgYSBm
aWxlIG5hbWUgYXMtaXMgaW4gYSBTdHJpbmcKLSAqIGJ1dCB3ZSBoYXZlIHRvIGVzY2FwZSBpdC4K
LSAqIE9uIFdpbmRvd3MgdGhlIEdMaWIgZmlsZSBuYW1lIGVuY29kaW5nIGlzIGFsd2F5cyBVVEYt
OCBzbyB3ZSBjYW4gb3B0aW1pemUgdGhpcyBjYXNlLiAqLwotU3RyaW5nIHN0cmluZ0Zyb21GaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgY2hhciogZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KQotewotICAgIGlmICghZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKQotICAgICAgICByZXR1cm4g
U3RyaW5nKCk7Ci0KLSNpZiBPUyhXSU5ET1dTKQotICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4
KGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbik7Ci0jZWxzZQotICAgIEdVbmlxdWVQdHI8Z2NoYXI+
IGVzY2FwZWRTdHJpbmcoZ191cmlfZXNjYXBlX3N0cmluZyhmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24sICIvOiIsIEZBTFNFKSk7Ci0gICAgcmV0dXJuIGVzY2FwZWRTdHJpbmcuZ2V0KCk7Ci0jZW5k
aWYKLX0KLQotc3RhdGljIEdVbmlxdWVQdHI8Y2hhcj4gdW5lc2NhcGVkRmlsZW5hbWUoY29uc3Qg
U3RyaW5nJiBwYXRoKQotewotICAgIGlmIChwYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0jaWYgT1MoV0lORE9XUykKLSAgICByZXR1cm4gR1VuaXF1ZVB0cjxjaGFyPihn
X3N0cmR1cChwYXRoLnV0ZjgoKS5kYXRhKCkpKTsKLSNlbHNlCi0gICAgcmV0dXJuIEdVbmlxdWVQ
dHI8Y2hhcj4oZ191cmlfdW5lc2NhcGVfc3RyaW5nKHBhdGgudXRmOCgpLmRhdGEoKSwgbnVsbHB0
cikpOwotI2VuZGlmCi19Ci0KLUNTdHJpbmcgZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0
IFN0cmluZyYgcGF0aCkKLXsKLSNpZiBPUyhXSU5ET1dTKQotICAgIHJldHVybiBwYXRoLnV0Zjgo
KTsKLSNlbHNlCi0gICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxl
bmFtZShwYXRoKTsKLSAgICByZXR1cm4gZmlsZW5hbWUuZ2V0KCk7Ci0jZW5kaWYKLX0KLQotLy8g
Q29udmVydHMgYSBzdHJpbmcgdG8gc29tZXRoaW5nIHN1aXRhYmxlIHRvIGJlIGRpc3BsYXllZCB0
byB0aGUgdXNlci4KLVN0cmluZyBmaWxlbmFtZUZvckRpc3BsYXkoY29uc3QgU3RyaW5nJiBzdHJp
bmcpCi17Ci0jaWYgT1MoV0lORE9XUykKLSAgICByZXR1cm4gc3RyaW5nOwotI2Vsc2UKLSAgICBH
VW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHN0cmluZyk7Ci0g
ICAgaWYgKCFmaWxlbmFtZSkKLSAgICAgICAgcmV0dXJuIHN0cmluZzsKLQotICAgIEdVbmlxdWVQ
dHI8Z2NoYXI+IGRpc3BsYXkoZ19maWxlbmFtZV90b191dGY4KGZpbGVuYW1lLmdldCgpLCAtMSwg
bnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikpOwotICAgIGlmICghZGlzcGxheSkKLSAgICAgICAg
cmV0dXJuIHN0cmluZzsKLQotICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGRpc3BsYXkuZ2V0
KCkpOwotI2VuZGlmCi19Ci0KLWJvb2wgZmlsZUV4aXN0cyhjb25zdCBTdHJpbmcmIHBhdGgpCi17
Ci0gICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShwYXRo
KTsKLSAgICByZXR1cm4gZmlsZW5hbWUgPyBnX2ZpbGVfdGVzdChmaWxlbmFtZS5nZXQoKSwgR19G
SUxFX1RFU1RfRVhJU1RTKSA6IGZhbHNlOwotfQotCi1ib29sIGRlbGV0ZUZpbGUoY29uc3QgU3Ry
aW5nJiBwYXRoKQotewotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2NhcGVk
RmlsZW5hbWUocGF0aCk7Ci0gICAgcmV0dXJuIGZpbGVuYW1lID8gZ19yZW1vdmUoZmlsZW5hbWUu
Z2V0KCkpICE9IC0xIDogZmFsc2U7Ci19Ci0KLWJvb2wgZGVsZXRlRW1wdHlEaXJlY3RvcnkoY29u
c3QgU3RyaW5nJiBwYXRoKQotewotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5l
c2NhcGVkRmlsZW5hbWUocGF0aCk7Ci0gICAgcmV0dXJuIGZpbGVuYW1lID8gZ19ybWRpcihmaWxl
bmFtZS5nZXQoKSkgIT0gLTEgOiBmYWxzZTsKLX0KLQotc3RhdGljIGJvb2wgZ2V0RmlsZVN0YXQo
Y29uc3QgU3RyaW5nJiBwYXRoLCBHU3RhdEJ1Ziogc3RhdEJ1ZmZlcikKLXsKLSAgICBHVW5pcXVl
UHRyPGdjaGFyPiBmaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGgpOwotICAgIGlmICgh
ZmlsZW5hbWUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBnX3N0YXQoZmls
ZW5hbWUuZ2V0KCksIHN0YXRCdWZmZXIpICE9IC0xOwotfQotCi1zdGF0aWMgYm9vbCBnZXRGaWxl
TFN0YXQoY29uc3QgU3RyaW5nJiBwYXRoLCBHU3RhdEJ1Ziogc3RhdEJ1ZmZlcikKLXsKLSAgICBH
VW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGgpOwotICAg
IGlmICghZmlsZW5hbWUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBnX2xz
dGF0KGZpbGVuYW1lLmdldCgpLCBzdGF0QnVmZmVyKSAhPSAtMTsKLX0KLQotYm9vbCBnZXRGaWxl
U2l6ZShjb25zdCBTdHJpbmcmIHBhdGgsIGxvbmcgbG9uZyYgcmVzdWx0U2l6ZSkKLXsKLSAgICBH
U3RhdEJ1ZiBzdGF0UmVzdWx0OwotICAgIGlmICghZ2V0RmlsZVN0YXQocGF0aCwgJnN0YXRSZXN1
bHQpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXN1bHRTaXplID0gc3RhdFJlc3Vs
dC5zdF9zaXplOwotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIGdldEZpbGVTaXplKFBsYXRm
b3JtRmlsZUhhbmRsZSBoYW5kbGUsIGxvbmcgbG9uZyYgcmVzdWx0U2l6ZSkKLXsKLSAgICBhdXRv
IGluZm8gPSBnX2ZpbGVfaW9fc3RyZWFtX3F1ZXJ5X2luZm8oaGFuZGxlLCBHX0ZJTEVfQVRUUklC
VVRFX1NUQU5EQVJEX1NJWkUsIG51bGxwdHIsIG51bGxwdHIpOwotICAgIGlmICghaW5mbykKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmVzdWx0U2l6ZSA9IGdfZmlsZV9pbmZvX2dldF9z
aXplKGluZm8pOwotICAgIHJldHVybiB0cnVlOwotfQotCi1PcHRpb25hbDxXYWxsVGltZT4gZ2V0
RmlsZUNyZWF0aW9uVGltZShjb25zdCBTdHJpbmcmKQotewotICAgIC8vIEZJWE1FOiBJcyB0aGVy
ZSBhIHdheSB0byByZXRyaWV2ZSBmaWxlIGNyZWF0aW9uIHRpbWUgd2l0aCBHdGsgb24gcGxhdGZv
cm1zIHRoYXQgc3VwcG9ydCBpdD8KLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotfQotCi1PcHRp
b25hbDxXYWxsVGltZT4gZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRo
KQotewotICAgIEdTdGF0QnVmIHN0YXRSZXN1bHQ7Ci0gICAgaWYgKCFnZXRGaWxlU3RhdChwYXRo
LCAmc3RhdFJlc3VsdCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICByZXR1
cm4gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKHN0YXRSZXN1bHQuc3RfbXRpbWUpOwotfQotCi1z
dGF0aWMgRmlsZU1ldGFkYXRhOjpUeXBlIHRvRmlsZU1ldGF0YVR5cGUoR1N0YXRCdWYgc3RhdFJl
c3VsdCkKLXsKLSAgICBpZiAoU19JU0RJUihzdGF0UmVzdWx0LnN0X21vZGUpKQotICAgICAgICBy
ZXR1cm4gRmlsZU1ldGFkYXRhOjpUeXBlOjpEaXJlY3Rvcnk7Ci0gICAgaWYgKFNfSVNMTksoc3Rh
dFJlc3VsdC5zdF9tb2RlKSkKLSAgICAgICAgcmV0dXJuIEZpbGVNZXRhZGF0YTo6VHlwZTo6U3lt
Ym9saWNMaW5rOwotICAgIHJldHVybiBGaWxlTWV0YWRhdGE6OlR5cGU6OkZpbGU7Ci19Ci0KLXN0
YXRpYyBPcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YVVzaW5nRnVuY3Rpb24oY29u
c3QgU3RyaW5nJiBwYXRoLCBib29sICgqc3RhdEZ1bmMpKGNvbnN0IFN0cmluZyYsIEdTdGF0QnVm
KikpCi17Ci0gICAgR1N0YXRCdWYgc3RhdFJlc3VsdDsKLSAgICBpZiAoIXN0YXRGdW5jKHBhdGgs
ICZzdGF0UmVzdWx0KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIFN0cmlu
ZyBmaWxlbmFtZSA9IHBhdGhHZXRGaWxlTmFtZShwYXRoKTsKLSAgICBib29sIGlzSGlkZGVuID0g
IWZpbGVuYW1lLmlzRW1wdHkoKSAmJiBmaWxlbmFtZVswXSA9PSAnLic7Ci0KLSAgICByZXR1cm4g
RmlsZU1ldGFkYXRhIHsKLSAgICAgICAgV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKHN0YXRSZXN1
bHQuc3RfbXRpbWUpLAotICAgICAgICBzdGF0UmVzdWx0LnN0X3NpemUsCi0gICAgICAgIGlzSGlk
ZGVuLAotICAgICAgICB0b0ZpbGVNZXRhdGFUeXBlKHN0YXRSZXN1bHQpCi0gICAgfTsKLX0KLQot
T3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBwYXRoKQot
ewotICAgIHJldHVybiBmaWxlTWV0YWRhdGFVc2luZ0Z1bmN0aW9uKHBhdGgsICZnZXRGaWxlTFN0
YXQpOwotfQotCi1PcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YUZvbGxvd2luZ1N5
bWxpbmtzKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICByZXR1cm4gZmlsZU1ldGFkYXRhVXNp
bmdGdW5jdGlvbihwYXRoLCAmZ2V0RmlsZVN0YXQpOwotfQotCi1TdHJpbmcgcGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb21wb25lbnQp
Ci17Ci0gICAgaWYgKHBhdGguZW5kc1dpdGgoR19ESVJfU0VQQVJBVE9SX1MpKQotICAgICAgICBy
ZXR1cm4gcGF0aCArIGNvbXBvbmVudDsKLSAgICByZXR1cm4gcGF0aCArIEdfRElSX1NFUEFSQVRP
Ul9TICsgY29tcG9uZW50OwotfQotCi1TdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhT
dHJpbmdWaWV3IHBhdGgsIGNvbnN0IFZlY3RvcjxTdHJpbmdWaWV3PiYgY29tcG9uZW50cykKLXsK
LSAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5hcHBlbmQocGF0aCk7Ci0g
ICAgZm9yIChhdXRvJiBjb21wb25lbnQgOiBjb21wb25lbnRzKSB7Ci0gICAgICAgIGJ1aWxkZXIu
YXBwZW5kKEdfRElSX1NFUEFSQVRPUl9TKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoY29tcG9u
ZW50KTsKLSAgICB9Ci0gICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKLX0KLQotYm9vbCBt
YWtlQWxsRGlyZWN0b3JpZXMoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIEdVbmlxdWVQdHI8
Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUocGF0aCk7Ci0gICAgcmV0dXJuIGZp
bGVuYW1lID8gZ19ta2Rpcl93aXRoX3BhcmVudHMoZmlsZW5hbWUuZ2V0KCksIFNfSVJXWFUpICE9
IC0xIDogZmFsc2U7Ci19Ci0KLVN0cmluZyBob21lRGlyZWN0b3J5UGF0aCgpCi17Ci0gICAgcmV0
dXJuIHN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfaG9tZV9kaXIoKSk7
Ci19Ci0KLWJvb2wgY3JlYXRlU3ltYm9saWNMaW5rKGNvbnN0IFN0cmluZyYgdGFyZ2V0UGF0aCwg
Y29uc3QgU3RyaW5nJiBzeW1ib2xpY0xpbmtQYXRoKQotewotICAgIENTdHJpbmcgdGFyZ2V0UGF0
aEZTUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHRhcmdldFBhdGgpOwotICAgIGlmICgh
dGFyZ2V0UGF0aEZTUmVwLmRhdGEoKSB8fCB0YXJnZXRQYXRoRlNSZXAuZGF0YSgpWzBdID09ICdc
MCcpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIENTdHJpbmcgc3ltYm9saWNMaW5rUGF0
aEZTUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHN5bWJvbGljTGlua1BhdGgpOwotICAg
IGlmICghc3ltYm9saWNMaW5rUGF0aEZTUmVwLmRhdGEoKSB8fCBzeW1ib2xpY0xpbmtQYXRoRlNS
ZXAuZGF0YSgpWzBdID09ICdcMCcpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVy
biAhc3ltbGluayh0YXJnZXRQYXRoRlNSZXAuZGF0YSgpLCBzeW1ib2xpY0xpbmtQYXRoRlNSZXAu
ZGF0YSgpKTsKLX0KLQotU3RyaW5nIHBhdGhHZXRGaWxlTmFtZShjb25zdCBTdHJpbmcmIHBhdGhO
YW1lKQotewotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHRtcEZpbGVuYW1lID0gdW5lc2NhcGVkRmls
ZW5hbWUocGF0aE5hbWUpOwotICAgIGlmICghdG1wRmlsZW5hbWUpCi0gICAgICAgIHJldHVybiBw
YXRoTmFtZTsKLQotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGJhc2VOYW1lKGdfcGF0aF9nZXRfYmFz
ZW5hbWUodG1wRmlsZW5hbWUuZ2V0KCkpKTsKLSAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChi
YXNlTmFtZS5nZXQoKSk7Ci19Ci0KLWJvb2wgZ2V0Vm9sdW1lRnJlZVNwYWNlKGNvbnN0IFN0cmlu
ZyYgcGF0aCwgdWludDY0X3QmIGZyZWVTcGFjZSkKLXsKLSAgICBHVW5pcXVlUHRyPGdjaGFyPiBm
aWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGgpOwotICAgIGlmICghZmlsZW5hbWUpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIEdSZWZQdHI8R0ZpbGU+IGZpbGUgPSBhZG9wdEdS
ZWYoZ19maWxlX25ld19mb3JfcGF0aChmaWxlbmFtZS5nZXQoKSkpOwotICAgIEdSZWZQdHI8R0Zp
bGVJbmZvPiBmaWxlSW5mbyA9IGFkb3B0R1JlZihnX2ZpbGVfcXVlcnlfZmlsZXN5c3RlbV9pbmZv
KGZpbGUuZ2V0KCksIEdfRklMRV9BVFRSSUJVVEVfRklMRVNZU1RFTV9GUkVFLCAwLCAwKSk7Ci0g
ICAgaWYgKCFmaWxlSW5mbykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgZnJlZVNwYWNl
ID0gZ19maWxlX2luZm9fZ2V0X2F0dHJpYnV0ZV91aW50NjQoZmlsZUluZm8uZ2V0KCksIEdfRklM
RV9BVFRSSUJVVEVfRklMRVNZU1RFTV9GUkVFKTsKLSAgICByZXR1cm4gISFmcmVlU3BhY2U7Ci19
Ci0KLVN0cmluZyBkaXJlY3RvcnlOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBHVW5p
cXVlUHRyPGdjaGFyPiBmaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGgpOwotICAgIGlm
ICghZmlsZW5hbWUpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIEdVbmlxdWVQdHI8
Y2hhcj4gZGlybmFtZShnX3BhdGhfZ2V0X2Rpcm5hbWUoZmlsZW5hbWUuZ2V0KCkpKTsKLSAgICBy
ZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChkaXJuYW1lLmdldCgpKTsKLX0KLQotVmVjdG9yPFN0cmlu
Zz4gbGlzdERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgZmlsdGVy
KQotewotICAgIFZlY3RvcjxTdHJpbmc+IGVudHJpZXM7Ci0KLSAgICBHVW5pcXVlUHRyPGdjaGFy
PiBmaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGgpOwotICAgIGlmICghZmlsZW5hbWUp
Ci0gICAgICAgIHJldHVybiBlbnRyaWVzOwotCi0gICAgR1VuaXF1ZVB0cjxHRGlyPiBkaXIoZ19k
aXJfb3BlbihmaWxlbmFtZS5nZXQoKSwgMCwgbnVsbHB0cikpOwotICAgIGlmICghZGlyKQotICAg
ICAgICByZXR1cm4gZW50cmllczsKLQotICAgIEdVbmlxdWVQdHI8R1BhdHRlcm5TcGVjPiBwc3Bl
YyhnX3BhdHRlcm5fc3BlY19uZXcoKGZpbHRlci51dGY4KCkpLmRhdGEoKSkpOwotICAgIHdoaWxl
IChjb25zdCBjaGFyKiBuYW1lID0gZ19kaXJfcmVhZF9uYW1lKGRpci5nZXQoKSkpIHsKLSAgICAg
ICAgaWYgKCFnX3BhdHRlcm5fbWF0Y2hfc3RyaW5nKHBzcGVjLmdldCgpLCBuYW1lKSkKLSAgICAg
ICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGVudHJ5KGdfYnVp
bGRfZmlsZW5hbWUoZmlsZW5hbWUuZ2V0KCksIG5hbWUsIG51bGxwdHIpKTsKLSAgICAgICAgZW50
cmllcy5hcHBlbmQoc3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihlbnRyeS5nZXQo
KSkpOwotICAgIH0KLQotICAgIHJldHVybiBlbnRyaWVzOwotfQotCi1TdHJpbmcgb3BlblRlbXBv
cmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxl
KQotewotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lKGdfc3RyZHVwX3ByaW50ZigiJXMl
cyIsIHByZWZpeC51dGY4KCkuZGF0YSgpLCBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkudXRm
OCgpLmRhdGEoKSkpOwotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHRlbXBQYXRoKGdfYnVpbGRfZmls
ZW5hbWUoZ19nZXRfdG1wX2RpcigpLCBmaWxlbmFtZS5nZXQoKSwgTlVMTCkpOwotICAgIEdSZWZQ
dHI8R0ZpbGU+IGZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0aCh0ZW1wUGF0aC5n
ZXQoKSkpOwotCi0gICAgaGFuZGxlID0gZ19maWxlX2NyZWF0ZV9yZWFkd3JpdGUoZmlsZS5nZXQo
KSwgR19GSUxFX0NSRUFURV9OT05FLCAwLCAwKTsKLSAgICBpZiAoIWlzSGFuZGxlVmFsaWQoaGFu
ZGxlKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIHJldHVybiBTdHJpbmc6OmZyb21V
VEY4KHRlbXBQYXRoLmdldCgpKTsKLX0KLQotUGxhdGZvcm1GaWxlSGFuZGxlIG9wZW5GaWxlKGNv
bnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlIG1vZGUpCi17Ci0gICAgR1VuaXF1ZVB0cjxn
Y2hhcj4gZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShwYXRoKTsKLSAgICBpZiAoIWZpbGVu
YW1lKQotICAgICAgICByZXR1cm4gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKLQotICAgIEdS
ZWZQdHI8R0ZpbGU+IGZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0aChmaWxlbmFt
ZS5nZXQoKSkpOwotICAgIEdGaWxlSU9TdHJlYW0qIGlvU3RyZWFtID0gMDsKLSAgICBpZiAobW9k
ZSA9PSBGaWxlT3Blbk1vZGU6OlJlYWQpCi0gICAgICAgIGlvU3RyZWFtID0gZ19maWxlX29wZW5f
cmVhZHdyaXRlKGZpbGUuZ2V0KCksIDAsIDApOwotICAgIGVsc2UgaWYgKG1vZGUgPT0gRmlsZU9w
ZW5Nb2RlOjpXcml0ZSkgewotICAgICAgICBpZiAoZ19maWxlX3Rlc3QoZmlsZW5hbWUuZ2V0KCks
IHN0YXRpY19jYXN0PEdGaWxlVGVzdD4oR19GSUxFX1RFU1RfRVhJU1RTIHwgR19GSUxFX1RFU1Rf
SVNfUkVHVUxBUikpKQotICAgICAgICAgICAgaW9TdHJlYW0gPSBnX2ZpbGVfb3Blbl9yZWFkd3Jp
dGUoZmlsZS5nZXQoKSwgMCwgMCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGlvU3RyZWFt
ID0gZ19maWxlX2NyZWF0ZV9yZWFkd3JpdGUoZmlsZS5nZXQoKSwgR19GSUxFX0NSRUFURV9OT05F
LCAwLCAwKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gaW9TdHJlYW07Ci19Ci0KLXZvaWQgY2xvc2VG
aWxlKFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKQotewotICAgIGlmICghaXNIYW5kbGVWYWxp
ZChoYW5kbGUpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnX2lvX3N0cmVhbV9jbG9zZShHX0lP
X1NUUkVBTShoYW5kbGUpLCAwLCAwKTsKLSAgICBnX29iamVjdF91bnJlZihoYW5kbGUpOwotICAg
IGhhbmRsZSA9IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7Ci19Ci0KLWxvbmcgbG9uZyBzZWVr
RmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0LCBGaWxlU2Vl
a09yaWdpbiBvcmlnaW4pCi17Ci0gICAgR1NlZWtUeXBlIHNlZWtUeXBlID0gR19TRUVLX1NFVDsK
LSAgICBzd2l0Y2ggKG9yaWdpbikgewotICAgIGNhc2UgRmlsZVNlZWtPcmlnaW46OkJlZ2lubmlu
ZzoKLSAgICAgICAgc2Vla1R5cGUgPSBHX1NFRUtfU0VUOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIEZpbGVTZWVrT3JpZ2luOjpDdXJyZW50OgotICAgICAgICBzZWVrVHlwZSA9IEdfU0VFS19D
VVI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRmlsZVNlZWtPcmlnaW46OkVuZDoKLSAgICAg
ICAgc2Vla1R5cGUgPSBHX1NFRUtfRU5EOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0Ogot
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci0KLSAgICBpZiAoIWdfc2Vla2Fi
bGVfc2VlayhHX1NFRUtBQkxFKGdfaW9fc3RyZWFtX2dldF9pbnB1dF9zdHJlYW0oR19JT19TVFJF
QU0oaGFuZGxlKSkpLAotICAgICAgICBvZmZzZXQsIHNlZWtUeXBlLCAwLCAwKSkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgcmV0dXJuIGdfc2Vla2FibGVfdGVsbChHX1NF
RUtBQkxFKGdfaW9fc3RyZWFtX2dldF9pbnB1dF9zdHJlYW0oR19JT19TVFJFQU0oaGFuZGxlKSkp
KTsKLX0KLQotaW50IHdyaXRlVG9GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNvbnN0
IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCi17Ci0gICAgZ3NpemUgYnl0ZXNXcml0dGVuOwotICAg
IGdfb3V0cHV0X3N0cmVhbV93cml0ZV9hbGwoZ19pb19zdHJlYW1fZ2V0X291dHB1dF9zdHJlYW0o
R19JT19TVFJFQU0oaGFuZGxlKSksCi0gICAgICAgIGRhdGEsIGxlbmd0aCwgJmJ5dGVzV3JpdHRl
biwgMCwgMCk7Ci0gICAgcmV0dXJuIGJ5dGVzV3JpdHRlbjsKLX0KLQotaW50IHJlYWRGcm9tRmls
ZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQotewot
ICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKLSAgICBkbyB7Ci0gICAgICAgIGdzc2l6
ZSBieXRlc1JlYWQgPSBnX2lucHV0X3N0cmVhbV9yZWFkKGdfaW9fc3RyZWFtX2dldF9pbnB1dF9z
dHJlYW0oR19JT19TVFJFQU0oaGFuZGxlKSksCi0gICAgICAgICAgICBkYXRhLCBsZW5ndGgsIDAs
ICZlcnJvci5vdXRQdHIoKSk7Ci0gICAgICAgIGlmIChieXRlc1JlYWQgPj0gMCkKLSAgICAgICAg
ICAgIHJldHVybiBieXRlc1JlYWQ7Ci0gICAgfSB3aGlsZSAoZXJyb3IgJiYgZXJyb3ItPmNvZGUg
PT0gR19GSUxFX0VSUk9SX0lOVFIpOwotICAgIHJldHVybiAtMTsKLX0KLQotYm9vbCBtb3ZlRmls
ZShjb25zdCBTdHJpbmcmIG9sZFBhdGgsIGNvbnN0IFN0cmluZyYgbmV3UGF0aCkKLXsKLSAgICBH
VW5pcXVlUHRyPGdjaGFyPiBvbGRGaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKG9sZFBhdGgp
OwotICAgIGlmICghb2xkRmlsZW5hbWUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIEdV
bmlxdWVQdHI8Z2NoYXI+IG5ld0ZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUobmV3UGF0aCk7
Ci0gICAgaWYgKCFuZXdGaWxlbmFtZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgR1Jl
ZlB0cjxHRmlsZT4gb2xkRmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKG9sZEZp
bGVuYW1lLmdldCgpKSk7Ci0gICAgR1JlZlB0cjxHRmlsZT4gbmV3RmlsZSA9IGFkb3B0R1JlZihn
X2ZpbGVfbmV3X2Zvcl9wYXRoKG5ld0ZpbGVuYW1lLmdldCgpKSk7Ci0KLSAgICByZXR1cm4gZ19m
aWxlX21vdmUob2xkRmlsZS5nZXQoKSwgbmV3RmlsZS5nZXQoKSwgR19GSUxFX0NPUFlfT1ZFUldS
SVRFLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKTsKLX0KLQotYm9vbCBoYXJk
TGlua09yQ29weUZpbGUoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgZGVzdGlu
YXRpb24pCi17Ci0jaWYgT1MoV0lORE9XUykKLSAgICByZXR1cm4gISE6OkNvcHlGaWxlKHNvdXJj
ZS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSwgZGVzdGluYXRpb24uY2hh
cmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCksIFRSVUUpOwotI2Vsc2UKLSAgICBH
VW5pcXVlUHRyPGdjaGFyPiBzb3VyY2VGaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHNvdXJj
ZSk7Ci0gICAgaWYgKCFzb3VyY2VGaWxlbmFtZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgR1VuaXF1ZVB0cjxnY2hhcj4gZGVzdGluYXRpb25GaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVu
YW1lKGRlc3RpbmF0aW9uKTsKLSAgICBpZiAoIWRlc3RpbmF0aW9uRmlsZW5hbWUpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgIGlmICghbGluayhzb3VyY2VGaWxlbmFtZS5nZXQoKSwgZGVz
dGluYXRpb25GaWxlbmFtZS5nZXQoKSkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgLy8g
SGFyZCBsaW5rIGZhaWxlZC4gUGVyZm9ybSBhIGNvcHkgaW5zdGVhZC4KLSAgICBHUmVmUHRyPEdG
aWxlPiBzb3VyY2VGaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoc291cmNlRmls
ZW5hbWUuZ2V0KCkpKTsKLSAgICBHUmVmUHRyPEdGaWxlPiBkZXN0aW5hdGlvbkZpbGUgPSBhZG9w
dEdSZWYoZ19maWxlX25ld19mb3JfcGF0aChkZXN0aW5hdGlvbkZpbGVuYW1lLmdldCgpKSk7Ci0g
ICAgcmV0dXJuIGdfZmlsZV9jb3B5KHNvdXJjZUZpbGUuZ2V0KCksIGRlc3RpbmF0aW9uRmlsZS5n
ZXQoKSwgR19GSUxFX0NPUFlfTk9ORSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0
cik7Ci0jZW5kaWYKLX0KLQotT3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0
IENTdHJpbmcmIGZzRmlsZSkKLXsKLSAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZSA9IHVu
ZXNjYXBlZEZpbGVuYW1lKGZzRmlsZS5kYXRhKCkpOwotICAgIGlmICghZmlsZW5hbWUpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBHUmVmUHRyPEdGaWxlPiBmaWxlID0gYWRv
cHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoZmlsZW5hbWUuZ2V0KCkpKTsKLSAgICBHUmVmUHRy
PEdGaWxlSW5mbz4gZmlsZUluZm8gPSBhZG9wdEdSZWYoZ19maWxlX3F1ZXJ5X2ZpbGVzeXN0ZW1f
aW5mbyhmaWxlLmdldCgpLCBHX0ZJTEVfQVRUUklCVVRFX1VOSVhfREVWSUNFLCBudWxscHRyLCBu
dWxscHRyKSk7Ci0gICAgaWYgKCFmaWxlSW5mbykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKLQotICAgIHJldHVybiBnX2ZpbGVfaW5mb19nZXRfYXR0cmlidXRlX3VpbnQzMihmaWxlSW5m
by5nZXQoKSwgR19GSUxFX0FUVFJJQlVURV9VTklYX0RFVklDRSk7Ci19Ci0KLSNpZiBVU0UoRklM
RV9MT0NLKQotYm9vbCBsb2NrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBPcHRpb25T
ZXQ8RmlsZUxvY2tNb2RlPiBsb2NrTW9kZSkKLXsKLSAgICBDT01QSUxFX0FTU0VSVChMT0NLX1NI
ID09IFdURjo6ZW51bVRvVW5kZXJseWluZ1R5cGUoRmlsZUxvY2tNb2RlOjpTaGFyZWQpLCBMb2Nr
U2hhcmVkRW5jb2RpbmdJc0FzRXhwZWN0ZWQpOwotICAgIENPTVBJTEVfQVNTRVJUKExPQ0tfRVgg
PT0gV1RGOjplbnVtVG9VbmRlcmx5aW5nVHlwZShGaWxlTG9ja01vZGU6OkV4Y2x1c2l2ZSksIExv
Y2tFeGNsdXNpdmVFbmNvZGluZ0lzQXNFeHBlY3RlZCk7Ci0gICAgQ09NUElMRV9BU1NFUlQoTE9D
S19OQiA9PSBXVEY6OmVudW1Ub1VuZGVybHlpbmdUeXBlKEZpbGVMb2NrTW9kZTo6Tm9uYmxvY2tp
bmcpLCBMb2NrTm9uYmxvY2tpbmdFbmNvZGluZ0lzQXNFeHBlY3RlZCk7Ci0gICAgYXV0byogaW5w
dXRTdHJlYW0gPSBnX2lvX3N0cmVhbV9nZXRfaW5wdXRfc3RyZWFtKEdfSU9fU1RSRUFNKGhhbmRs
ZSkpOwotICAgIGludCByZXN1bHQgPSBmbG9jayhnX2ZpbGVfZGVzY3JpcHRvcl9iYXNlZF9nZXRf
ZmQoR19GSUxFX0RFU0NSSVBUT1JfQkFTRUQoaW5wdXRTdHJlYW0pKSwgbG9ja01vZGUudG9SYXco
KSk7Ci0gICAgcmV0dXJuIHJlc3VsdCAhPSAtMTsKLX0KLQotYm9vbCB1bmxvY2tGaWxlKFBsYXRm
b3JtRmlsZUhhbmRsZSBoYW5kbGUpCi17Ci0gICAgYXV0byogaW5wdXRTdHJlYW0gPSBnX2lvX3N0
cmVhbV9nZXRfaW5wdXRfc3RyZWFtKEdfSU9fU1RSRUFNKGhhbmRsZSkpOwotICAgIGludCByZXN1
bHQgPSBmbG9jayhnX2ZpbGVfZGVzY3JpcHRvcl9iYXNlZF9nZXRfZmQoR19GSUxFX0RFU0NSSVBU
T1JfQkFTRUQoaW5wdXRTdHJlYW0pKSwgTE9DS19VTik7Ci0gICAgcmV0dXJuIHJlc3VsdCAhPSAt
MTsKLX0KLSNlbmRpZiAvLyBVU0UoRklMRV9MT0NLKQotCi19IC8vIG5hbWVzcGFjZSBGaWxlU3lz
dGVtCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcAppbmRleCBiNDg5NmMwODU0NjBlN2MwYmU1NjQw
ODRlYzg4ZWYyMmFmNjBiODQ0Li5jNzQ3MzU3NTMwN2Y2ZjdkZDRhOWYyMzYxYWVmMjVjYTM2OTc2
ZTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZl
ckdsaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVy
R2xpYi5jcHAKQEAgLTE5LDcgKzE5LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJTaGFyZWRCdWZmZXIuaCIKIAotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlIDx3
dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlT
ZXNzaW9uLm1tCmluZGV4IGU4ZGQzYjVhZWM4MjkzY2Q1ZWQ5NmU5OGYxMDM1ZWU1M2UyOGM3YjQu
LjI0Zjk1ZTg0NDEzNjdlMjIxOWNhMjI2NDQ1ZTg2MjI4ZjU3OTQ4MmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Np
b25BVkNvbnRlbnRLZXlTZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLm1t
CkBAIC0yOSw3ICsyOSw2IEBACiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYm
IEVOQUJMRShNRURJQV9TT1VSQ0UpCiAKICNpbXBvcnQgIkNETVByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakMuaCIKLSNpbXBvcnQgIkZpbGVTeXN0ZW0uaCIKICNpbXBvcnQgIkxlZ2FjeUNETS5oIgog
I2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiTWVkaWFQbGF5ZXIuaCIKQEAgLTM5LDYgKzM4
LDcgQEAKICNpbXBvcnQgPENvcmVNZWRpYS9DTUJhc2UuaD4KICNpbXBvcnQgPEphdmFTY3JpcHRD
b3JlL1R5cGVkQXJyYXlJbmxpbmVzLmg+CiAjaW1wb3J0IDxvYmpjL29iamMtcnVudGltZS5oPgor
I2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgog
CiBTT0ZUX0xJTktfRlJBTUVXT1JLX09QVElPTkFMKEFWRm91bmRhdGlvbikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNl
c3Npb25BVlN0cmVhbVNlc3Npb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLm1tCmluZGV4IDk5
Mjk0MzE1ZDg2MjQxYjE2OGYyOGFhNzJlZGRlMGQ5N2NmNGE3OGMuLmMzNTczZTVjNjA4MWM5OWIx
NDA0ZTBlNDFjNTBlMDQ5ZTI5MWEyMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVlN0cmVhbVNlc3Npb24u
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbi5tbQpAQCAtMjksNyArMjksNiBAQAogI2lmIEVO
QUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSAmJiBFTkFCTEUoTUVESUFfU09VUkNFKQogCiAj
aW1wb3J0ICJDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgiCi0jaW1wb3J0ICJGaWxlU3lz
dGVtLmgiCiAjaW1wb3J0ICJMZWdhY3lDRE0uaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBv
cnQgIk1lZGlhUGxheWVyLmgiCkBAIC00MCw2ICszOSw3IEBACiAjaW1wb3J0IDxKYXZhU2NyaXB0
Q29yZS9UeXBlZEFycmF5SW5saW5lcy5oPgogI2ltcG9ydCA8b2JqYy9vYmpjLXJ1bnRpbWUuaD4K
ICNpbXBvcnQgPHBhbC9zcGkvbWFjL0FWRm91bmRhdGlvblNQSS5oPgorI2ltcG9ydCA8d3RmL0Zp
bGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgogI2ltcG9ydCA8d3RmL1VV
SUQuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25NZWRp
YVNvdXJjZUFWRk9iakMubW0KaW5kZXggMmNiMmQ2ZmEwY2Q4ZWZhNDIzMTg5MWEwOTgxOTgzYzli
OGMwNzdlNC4uZWM1ODM3OGE4YmViNmE1NzUzZDAyZGE0OWZlZGFiNjZlZWI1OTdjMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
Q0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZP
YmpDLm1tCkBAIC0yOSw5ICsyOSw5IEBACiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVE
SUEpICYmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiAKICNpbXBvcnQgIkNETVByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakMuaCIKLSNpbXBvcnQgIkZpbGVTeXN0ZW0uaCIKICNpbXBvcnQgIldlYkNvcmVO
U0Vycm9yRXh0cmFzLmgiCiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZFcnJvci5oPgorI2ltcG9y
dCA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakMubW0KaW5kZXggNWUzNmRkMDA2OTMwNzUwMTEyYjcxM2ZkYzRlNWFlYTRkMTBh
OWMwOS4uZDZkNWU4MmIyMzc3NmZkNjI3N2UyOWI2OWRlYjY2MjlmOGM5MThjNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQy5tbQpAQCAtMzEsNyArMzEsNiBAQAogI2ltcG9ydCAiQVZBc3NldFRy
YWNrVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJBVkZvdW5kYXRpb25NSU1FVHlwZUNhY2hlLmgiCiAj
aW1wb3J0ICJDRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLmgiCi0jaW1wb3J0ICJGaWxlU3lzdGVt
LmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRDRy5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgog
I2ltcG9ydCAiTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5oIgpAQCAtNDksNiArNDgsNyBAQAog
I2ltcG9ydCA8cGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uaD4KICNpbXBv
cnQgPHBhbC9zcGkvbWFjL0FWRm91bmRhdGlvblNQSS5oPgogI2ltcG9ydCA8d3RmL0RlcXVlLmg+
CisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4K
ICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDBmMDVlYjkxOTlkYmYzZTQ5ZTFhMTJl
MDc1NjZlZWM0ODkxZGUxNzcuLjQxNDBjMTFiMGVhNDc5OGU2NjBkNjQ5NTgwZmVjYWFkM2MyNmQ0
YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3Bw
CkBAIC0yOCw3ICsyOCw2IEBACiAKICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIp
CiAKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiR1N0cmVhbWVyQ29tbW9uLmgi
CiAjaW5jbHVkZSAiSFRUUEhlYWRlck5hbWVzLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3Ry
eS5oIgpAQCAtNDIsNiArNDEsNyBAQAogI2luY2x1ZGUgPGdzdC9nc3QuaD4KICNpbmNsdWRlIDxn
c3QvcGJ1dGlscy9taXNzaW5nLXBsdWdpbnMuaD4KICNpbmNsdWRlIDxsaW1pdHM+CisjaW5jbHVk
ZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+CiAjaW5jbHVk
ZSA8d3RmL01lZGlhVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9RdWlja0xvb2subW0KaW5kZXggN2JmOTFiMmZhZGMzMTJh
YjNiN2U4NjJhNTgzNTBlYzU0OGQwMWJiNy4uYTlkOWU0NzEwNTAxN2Q2NGQ4MmUzN2M4YWEzMWNl
NjQ2OTAyNTY4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1F1aWNr
TG9vay5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29rLm1tCkBA
IC0yOCwxMiArMjgsMTIgQEAKIAogI2lmIFVTRShRVUlDS19MT09LKQogCi0jaW1wb3J0ICJGaWxl
U3lzdGVtLmgiCiAjaW1wb3J0ICJQcmV2aWV3Q29udmVydGVyLmgiCiAjaW1wb3J0ICJSZXNvdXJj
ZVJlcXVlc3QuaCIKICNpbXBvcnQgIlNjaGVtZVJlZ2lzdHJ5LmgiCiAjaW1wb3J0IDxwYWwvaW9z
L1F1aWNrTG9va1NvZnRMaW5rLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL05TRmlsZU1hbmFn
ZXJTUEkuaD4KKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDx3dGYvTG9jay5o
PgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW0KaW5kZXgg
YmY4MjE4Mzk5MTVlODBkNTg5OWE5NDg5OTlmMmYwMjA2ZDhjZmYzYS4uMzU0NWQ3ZWZjYWM4Njc2
NDhmNDlhNDc0ZThhMDIwYjUxYzg4ZDRkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW0KQEAgLTM0LDExICsz
NCwxMSBAQAogI2ltcG9ydCA8VUlLaXQvTlNJdGVtUHJvdmlkZXIrVUlLaXRBZGRpdGlvbnMuaD4K
ICNpbXBvcnQgPFVJS2l0L1VJQ29sb3IuaD4KICNpbXBvcnQgPFVJS2l0L1VJSW1hZ2UuaD4KLSNp
bXBvcnQgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYXN0ZWJvYXJk
Lmg+CiAjaW1wb3J0IDxwYWwvaW9zL1VJS2l0U29mdExpbmsuaD4KICNpbXBvcnQgPHBhbC9zcGkv
aW9zL1VJS2l0U1BJLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KKyNpbXBvcnQgPHd0Zi9G
aWxlU3lzdGVtLmg+CiAjaW1wb3J0IDx3dGYvT1NPYmplY3RQdHIuaD4KICNpbXBvcnQgPHd0Zi9S
ZXRhaW5QdHIuaD4KIApAQCAtNjk0LDcgKzY5NCw3IEBAIHN0YXRpYyBOU1VSTCAqbGlua1RlbXBv
cmFyeUl0ZW1Qcm92aWRlckZpbGVzVG9Ecm9wU3RhZ2luZ0RpcmVjdG9yeShOU1VSTCAqdXJsLCBO
CiAgICAgaWYgKCF1cmwpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBOU1N0cmluZyAqdGVt
cG9yYXJ5RGF0YUludGVyYWN0aW9uRGlyZWN0b3J5ID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6Y3Jl
YXRlVGVtcG9yYXJ5RGlyZWN0b3J5KGRhdGFJbnRlcmFjdGlvbkRpcmVjdG9yeVByZWZpeCk7Cisg
ICAgTlNTdHJpbmcgKnRlbXBvcmFyeURhdGFJbnRlcmFjdGlvbkRpcmVjdG9yeSA9IEZpbGVTeXN0
ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShkYXRhSW50ZXJhY3Rpb25EaXJlY3RvcnlQcmVm
aXgpOwogICAgIGlmICghdGVtcG9yYXJ5RGF0YUludGVyYWN0aW9uRGlyZWN0b3J5KQogICAgICAg
ICByZXR1cm4gbmlsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
RmlsZVN5c3RlbU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9GaWxlU3lzdGVt
TWFjLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZWQ3NTFhN2VjMGU1ZDBiYWY3
NzRmOTg2MTBhY2IwNDVjZDJiMDA0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9GaWxlU3lzdGVtTWFjLm1t
CisrKyAvZGV2L251bGwKQEAgLTEsODggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
Ny0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9y
dCAiY29uZmlnLmgiCi0jaW1wb3J0ICJGaWxlU3lzdGVtLmgiCi0KLSNpZiBQTEFURk9STShNQUMp
Ci0KLSNpbXBvcnQgPHBhbC9zcGkvbWFjL01ldGFkYXRhU1BJLmg+Ci0jaW1wb3J0IDx3dGYvY29j
b2EvTlNVUkxFeHRyYXMuaD4KLSNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLWJvb2wgRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3Rvcnko
Y29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIGF1dG8gZmlsZU1hbmFnZXIgPSBhZG9wdE5TKFtb
TlNGaWxlTWFuYWdlciBhbGxvY10gaW5pdF0pOwotCi0gICAgaWYgKE5TQXJyYXkgKmRpcmVjdG9y
eUNvbnRlbnRzID0gW2ZpbGVNYW5hZ2VyIGNvbnRlbnRzT2ZEaXJlY3RvcnlBdFBhdGg6cGF0aCBl
cnJvcjpudWxscHRyXSkgewotICAgICAgICAvLyBFeHBsaWNpdGx5IGxvb2sgZm9yIGFuZCBkZWxl
dGUgLkRTX1N0b3JlIGZpbGVzLgotICAgICAgICBpZiAoZGlyZWN0b3J5Q29udGVudHMuY291bnQg
PT0gMSAmJiBbZGlyZWN0b3J5Q29udGVudHMuZmlyc3RPYmplY3QgaXNFcXVhbFRvU3RyaW5nOkAi
LkRTX1N0b3JlIl0pCi0gICAgICAgICAgICBbZmlsZU1hbmFnZXIgcmVtb3ZlSXRlbUF0UGF0aDpb
cGF0aCBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6ZGlyZWN0b3J5Q29udGVudHMuZmly
c3RPYmplY3RdIGVycm9yOm51bGxwdHJdOwotICAgIH0KLQotICAgIC8vIHJtZGlyKC4uLikgcmV0
dXJucyAwIG9uIHN1Y2Nlc3NmdWwgZGVsZXRpb24gb2YgdGhlIHBhdGggYW5kIG5vbi16ZXJvIGlu
IGFueSBvdGhlciBjYXNlIChpbmNsdWRpbmcgaW52YWxpZCBwZXJtaXNzaW9ucyBvciBub24tZXhp
c3RlbnQgZmlsZSkKLSAgICByZXR1cm4gIXJtZGlyKEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihwYXRoKS5kYXRhKCkpOwotfQotCi12b2lkIEZpbGVTeXN0ZW06OnNldE1ldGFk
YXRhVVJMKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBtZXRhZGF0YVVSTFN0cmlu
ZywgY29uc3QgU3RyaW5nJiByZWZlcnJlcikKLXsKLSAgICBTdHJpbmcgdXJsU3RyaW5nOwotICAg
IGlmIChOU1VSTCAqdXJsID0gVVJMV2l0aFVzZXJUeXBlZFN0cmluZyhtZXRhZGF0YVVSTFN0cmlu
ZywgbmlsKSkKLSAgICAgICAgdXJsU3RyaW5nID0gV1RGOjp1c2VyVmlzaWJsZVN0cmluZyhXVEY6
OlVSTEJ5UmVtb3ZpbmdVc2VySW5mbyh1cmwpKTsKLSAgICBlbHNlCi0gICAgICAgIHVybFN0cmlu
ZyA9IG1ldGFkYXRhVVJMU3RyaW5nOwotCi0gICAgLy8gQ2FsbCBNZXRhZGF0YSBBUEkgb24gYSBi
YWNrZ3JvdW5kIHF1ZXVlIGJlY2F1c2UgaXQgY2FuIHRha2Ugc29tZSB0aW1lLgotICAgIGRpc3Bh
dGNoX2FzeW5jKGRpc3BhdGNoX2dldF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJ
VFlfREVGQVVMVCwgMCksIFtwYXRoID0gcGF0aC5pc29sYXRlZENvcHkoKSwgdXJsU3RyaW5nID0g
dXJsU3RyaW5nLmlzb2xhdGVkQ29weSgpLCByZWZlcnJlciA9IHJlZmVycmVyLmlzb2xhdGVkQ29w
eSgpXSB7Ci0gICAgICAgIGF1dG8gaXRlbSA9IGFkb3B0Q0YoTURJdGVtQ3JlYXRlKGtDRkFsbG9j
YXRvckRlZmF1bHQsIHBhdGguY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOwotICAgICAgICBpZiAo
IWl0ZW0pCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgYXV0byB3aGVyZUZyb21BdHRy
aWJ1dGUgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czp1
cmxTdHJpbmcsIG5pbF0pOwotICAgICAgICBpZiAoIXJlZmVycmVyLmlzTnVsbCgpKQotICAgICAg
ICAgICAgW3doZXJlRnJvbUF0dHJpYnV0ZSBhZGRPYmplY3Q6cmVmZXJyZXJdOwotCi0gICAgICAg
IE1ESXRlbVNldEF0dHJpYnV0ZShpdGVtLmdldCgpLCBrTURJdGVtV2hlcmVGcm9tcywgKF9fYnJp
ZGdlIENGQXJyYXlSZWYpd2hlcmVGcm9tQXR0cmlidXRlLmdldCgpKTsKLSAgICAgICAgTURJdGVt
U2V0QXR0cmlidXRlKGl0ZW0uZ2V0KCksIGtNREl0ZW1Eb3dubG9hZGVkRGF0ZSwgKF9fYnJpZGdl
IENGQXJyYXlSZWYpQFsgW05TRGF0ZSBkYXRlXSBdKTsKLSAgICB9KTsKLX0KLQotYm9vbCBGaWxl
U3lzdGVtOjpjYW5FeGNsdWRlRnJvbUJhY2t1cCgpCi17Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0K
LWJvb2wgRmlsZVN5c3RlbTo6ZXhjbHVkZUZyb21CYWNrdXAoY29uc3QgU3RyaW5nJiBwYXRoKQot
ewotICAgIC8vIEl0IGlzIGNyaXRpY2FsIHRvIHBhc3MgRkFMU0UgZm9yIGV4Y2x1ZGVCeVBhdGgg
YmVjYXVzZSBleGNsdWRpbmcgYnkgcGF0aCByZXF1aXJlcyByb290IHByaXZpbGVnZXMuCi0gICAg
Q1NCYWNrdXBTZXRJdGVtRXhjbHVkZWQoRmlsZVN5c3RlbTo6cGF0aEFzVVJMKHBhdGgpLmdldCgp
LCBUUlVFLCBGQUxTRSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2Ev
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQppbmRleCBkN2UzZjM5YTY3YjM3M2I4
Mzg3OWM4NDA5YzU4YjA4OThkMzQ3OWVjLi5kNzllMmY2MGM2MDk0MDNhYmRmYzAyYWViZjcwYTI2
YmNjZGYyZjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29y
ZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0
ZVdyaXRlckNvY29hLm1tCkBAIC0yOSwxMyArMjksMTMgQEAKICNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKSAmJiBVU0UoQVZGT1VOREFUSU9OKQogCiAjaW5jbHVkZSAiQXVkaW9TdHJlYW1EZXNjcmlw
dGlvbi5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAj
aW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJBdWRpb0J1
ZmZlckxpc3QuaCIKICNpbmNsdWRlIDxBVkZvdW5kYXRpb24vQVZBc3NldFdyaXRlci5oPgogI2lu
Y2x1ZGUgPEFWRm91bmRhdGlvbi9BVkFzc2V0V3JpdGVySW5wdXQuaD4KICNpbmNsdWRlIDxwYWwv
Y2YvQ29yZU1lZGlhU29mdExpbmsuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiB0
eXBlZGVmIEFWQXNzZXRXcml0ZXIgQVZBc3NldFdyaXRlclR5cGU7CiB0eXBlZGVmIEFWQXNzZXRX
cml0ZXJJbnB1dCBBVkFzc2V0V3JpdGVySW5wdXRUeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuY3BwCmluZGV4
IGI2M2YwNjEyYWJmY2I4NjZkYTBjZWQwYTIzNWRjMTU1OTNmZjA1ZWQuLjVhYmZkNzVjYjQ5NDU2
ZTQyZDM5ZDQ0ZDNiYzIyNTlhYWZmYTUyMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5jcHAKQEAgLTI3LDgg
KzI3LDggQEAKICNpbmNsdWRlICJCbG9iRGF0YUZpbGVSZWZlcmVuY2UuaCIKIAogI2luY2x1ZGUg
IkZpbGUuaCIKLSNpbmNsdWRlICJGaWxlTWV0YWRhdGEuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVt
LmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVNZXRhZGF0YS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lz
dGVtLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAKaW5kZXggODBiNDFlOTc1ZTRk
NjE0M2FmNGM5OTYxMTc1NDdiYjg5MmVkYTMxOC4uMWM3MDZhYTM0NmNhZGRlYTM5ZTUwMGQ4MDMw
NGNkNDk0YmQ4MjY4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9CbG9iUmVnaXN0cnlJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCkBAIC0zNSwxMyArMzUsMTMgQEAKICNpbmNsdWRlICJC
bG9iRGF0YS5oIgogI2luY2x1ZGUgIkJsb2JQYXJ0LmgiCiAjaW5jbHVkZSAiQmxvYlJlc291cmNl
SGFuZGxlLmgiCi0jaW5jbHVkZSAiRmlsZU1ldGFkYXRhLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3Rl
bS5oIgogI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRs
ZS5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVz
cG9uc2UuaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3
dGYvRmlsZU1ldGFkYXRhLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRl
IDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9TY29wZS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCmluZGV4IGM5NGUzOTQ5NGI4ZTMyNmRiNGEx
MmEyNzIwMWE0NjIzOGRlMThjNGIuLmNjNjdjZTY4OGYzYmNhMjIyNjkwYjQzZjEwNTg3OGJhOWUz
YzI4ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJl
c291cmNlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Js
b2JSZXNvdXJjZUhhbmRsZS5jcHAKQEAgLTM1LDE5ICszNSwxOSBAQAogI2luY2x1ZGUgIkFzeW5j
RmlsZVN0cmVhbS5oIgogI2luY2x1ZGUgIkJsb2JEYXRhLmgiCiAjaW5jbHVkZSAiRmlsZVN0cmVh
bS5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJIVFRQSGVhZGVyTmFtZXMu
aCIKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgogI2luY2x1ZGUgIlBhcnNlZENvbnRlbnRSYW5n
ZS5oIgotI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCiAj
aW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVDbGllbnQuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVl
c3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVm
ZmVyLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVkZSA8d3Rm
L0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0
Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAppbmRleCA1NGU0
YWMwNDk2MmEyMjE5MDdlM2I3ZDgwYTRmYmFjYmUyNTRiMzk5Li43Yjc2YTVlZWRlOTlmOTQ5Yzgx
ZTY5Y2ZlMWJkYmI4OTZjY2MyNjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Zvcm1EYXRhLmNwcApAQCAtMjksMTIgKzI5LDEyIEBACiAjaW5jbHVkZSAiRE9NRm9ybURh
dGEuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZpbGUuaCIKLSNpbmNsdWRl
ICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiRm9ybURhdGFCdWlsZGVyLmgiCiAjaW5jbHVkZSAi
UGFnZS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGlu
Zy5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVCbG9iUmVnaXN0cnkuaCIKKyNpbmNsdWRlIDx3dGYv
RmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0xpbmVFbmRpbmcuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAKaW5kZXggOWUyZDg4MWQ2MzU0OTE1MjVk
NzFhZjQ1NmMyZDE5NWZkMTNiOTRkNi4uYTc0YWU1YWFjOWNiMjYyM2RjOWNhNWE4YWE0MGFjMzQw
MjEyZjJkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9G
b3JtRGF0YVN0cmVhbUNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCkBAIC0zMCwxMSArMzAsMTEgQEAKICNpbmNs
dWRlICJGb3JtRGF0YVN0cmVhbUNGTmV0LmgiCiAKICNpbmNsdWRlICJCbG9iRGF0YS5oIgotI2lu
Y2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJGb3JtRGF0YS5oIgogI2luY2x1ZGUgPHN5
cy9zdGF0Lmg+CiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlv
bnMuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRy
Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jl
c291cmNlUmVxdWVzdENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
b2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQppbmRleCAyN2ZmOWQxY2E4ZWZhMWZkZDZlZGYy
ODg2NDg2NDc5NDlmODgxYTk2Li4yZmVjMWYzODM0ZTQxMTZhMWRkNGNlYjFmNjMyODk4ZDVlY2Ux
NDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jl
c291cmNlUmVxdWVzdENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KQEAgLTI4LDEzICsyOCwxMyBAQAogCiAj
aWYgUExBVEZPUk0oQ09DT0EpCiAKLSNpbXBvcnQgIkZpbGVTeXN0ZW0uaCIKICNpbXBvcnQgIkZv
cm1EYXRhU3RyZWFtTWFjLmgiCiAjaW1wb3J0ICJIVFRQSGVhZGVyTmFtZXMuaCIKICNpbXBvcnQg
IlJlc291cmNlUmVxdWVzdENGTmV0LmgiCiAjaW1wb3J0ICJSdW50aW1lQXBwbGljYXRpb25DaGVj
a3MuaCIKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogI2ltcG9ydCA8cGFsL3Nw
aS9jZi9DRk5ldHdvcmtTUEkuaD4KKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwCmluZGV4
IGMyM2ZkNzJmMTkxNzEwMjA4MmUxMjFlNDRkNThlZGQ4YTMyZDFlNzEuLjI2MzYyMjg4Yjg2OWQ4
YzdiYjM0MTdmNzZmNDBiNjNjYzU3ZjdhNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcApAQCAtMjYsMTAgKzI2LDkgQEAK
ICNpbmNsdWRlICJDb29raWVKYXJEQi5oIgogCiAjaW5jbHVkZSAiQ29va2llVXRpbC5oIgotI2lu
Y2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiU1FM
aXRlRmlsZVN5c3RlbS5oIgotCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRl
IDx3dGYvTW9ub3RvbmljVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuaApp
bmRleCBjYmM0NWZlZDJiNjM4ZWE2MmQ5MTJlYzdlZDJkNjYxNDNiOGY5ZDZiLi4xMTAyN2NlM2Iz
Y2Y2Mzg4Zjk5NTRhYWY0OWM0OTAzZmU5M2ZkZmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuaApAQCAtMjYsMTEgKzI2
LDExIEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1
ZGUgIkhUVFBIZWFkZXJNYXAuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1
ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKKyNp
bmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5h
Z2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVN
YW5hZ2VyLmNwcAppbmRleCA0M2JjMmU3YmZmZjRmOWJkNmY3MTAyODVkNmQzZDg2MzFiYjc3ODNh
Li5mYTVjOGQyZDIxYjYyNzM4MTVkMDIzYTRmMjA0NTUwMTZlOTYzOGFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFn
ZXIuY3BwCkBAIC0zMCwxMiArMzAsMTIgQEAKIAogI2luY2x1ZGUgIkN1cmxDYWNoZU1hbmFnZXIu
aCIKIAotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJIVFRQSGVhZGVyTWFwLmgi
CiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlQ2xpZW50Lmgi
CiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oIgogI2luY2x1ZGUgIlJlc291cmNl
UmVxdWVzdC5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybEZvcm1EYXRhU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybEZvcm1EYXRhU3RyZWFtLmgKaW5kZXggYzhlZjMzM2UwZDhjMGUwMjhl
Y2Q4YTQ2ZDgyNmI5MDY3MWEwMGUwYy4uMDllN2ZkYmI0YTJjZmFiNGI5MDczMmYwNjExNGJlMDgx
MTNiYjUxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxGb3JtRGF0YVN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsRm9ybURhdGFTdHJlYW0uaApAQCAtMjYsOCArMjYsOCBAQAogCiAjcHJhZ21h
IG9uY2UKIAotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJGb3JtRGF0YS5oIgor
I2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVxdWVzdC5oCmluZGV4IGZkYzRiNTkwYzE0MmNmNmRjOTgwNzdkOWY3NWQ3
ODY1NjM2MTk2OWQuLjkzY2E2MTAzZmU2M2Q1ZmYwMzEwNTVjODI1ZDgwMjgyNzY0YWVkYmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVz
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVz
dC5oCkBAIC0zMiwxMCArMzIsMTAgQEAKICNpbmNsdWRlICJDdXJsUmVxdWVzdFNjaGVkdWxlckNs
aWVudC5oIgogI2luY2x1ZGUgIkN1cmxSZXNwb25zZS5oIgogI2luY2x1ZGUgIkN1cmxTU0xWZXJp
Zmllci5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJOZXR3b3JrTG9hZE1l
dHJpY3MuaCIKICNpbmNsdWRlICJQcm90ZWN0aW9uU3BhY2UuaCIKICNpbmNsdWRlICJSZXNvdXJj
ZVJlcXVlc3QuaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9N
ZXNzYWdlUXVldWUuaD4KICNpbmNsdWRlIDx3dGYvTW9ub3RvbmljVGltZS5oPgogI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCmlu
ZGV4IGEzNDJlYzVmMGE1NTIxMWFiNzM0N2U0MTEzZTMxNzI1YWM0MGIyZmQuLjA1YjU2NzIzMmJi
ZDY2ZjBiZDA3MWRkYjhhMGYwY2RhZmY2ZWZhYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uQ3VybC5jcHAKQEAgLTMzLDEwICszMyw5IEBACiAjaW5jbHVkZSAiQ29va2llSmFyREIuaCIK
ICNpbmNsdWRlICJDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oIgogI2luY2x1ZGUgIkN1
cmxDb250ZXh0LmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIk5ldHdvcmtp
bmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKLQorI2luY2x1ZGUgPHd0
Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1
cmwuY3BwCmluZGV4IGU1MWU3YWJmMGEwNTVhMDhkOGY5NThmNWIxZWYxY2EyNjRhOGI3MjYuLjdi
ZTAwYWQzNGI4ZTU5ODgyZGUwZjUxM2I2YzJkZGY5MDExZjk5ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1
cmwuY3BwCkBAIC0zOCw3ICszOCw2IEBACiAjaW5jbHVkZSAiQ3VybENhY2hlTWFuYWdlci5oIgog
I2luY2x1ZGUgIkN1cmxDb250ZXh0LmgiCiAjaW5jbHVkZSAiQ3VybFJlcXVlc3QuaCIKLSNpbmNs
dWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKICNpbmNsdWRlICJM
b2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgiCkBAIC00OCw2ICs0
Nyw3IEBACiAjaW5jbHVkZSAiU3luY2hyb25vdXNMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJU
ZXh0RW5jb2RpbmcuaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKyNpbmNs
dWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL21hYy9CbG9iRGF0YUZpbGVSZWZlcmVuY2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL21hYy9CbG9iRGF0YUZpbGVSZWZlcmVuY2VNYWMubW0KaW5kZXggZmNm
NTVkNzZlYTQ1ZWJiMDY3MDQzZWNkZmM4Y2YwOGNjOTI0NmEyOS4uYjY5MjkyMGIyMWZjNjYzOWQ1
NzQ1ZDFjMDQ0ZThiNzg3ODIzNTBkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9tYWMvQmxvYkRhdGFGaWxlUmVmZXJlbmNlTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZU1hYy5tbQpA
QCAtMjgsOCArMjgsOCBAQAogCiAjaWYgRU5BQkxFKEZJTEVfUkVQTEFDRU1FTlQpCiAKLSNpbmNs
dWRlICJGaWxlTWV0YWRhdGEuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCisjaW5jbHVkZSA8
d3RmL0ZpbGVNZXRhZGF0YS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVk
ZSA8d3RmL1NvZnRMaW5raW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VI
YW5kbGVTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNv
dXJjZUhhbmRsZVNvdXAuY3BwCmluZGV4IDYzNzM0YzY3NGM1MmVlOTVkYzZjOWU0MjFjNDY2MGY0
MTg0MDBiYWEuLjA4MTVlYTY4OGU3NjY5MjdlNjYzZDQwNTYxNDlkYmQzNjhlNjQ2Y2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRs
ZVNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNv
dXJjZUhhbmRsZVNvdXAuY3BwCkBAIC0zMiw3ICszMiw2IEBACiAjaWYgVVNFKFNPVVApCiAKICNp
bmNsdWRlICJDcmVkZW50aWFsU3RvcmFnZS5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNp
bmNsdWRlICJHVW5pcXVlUHRyU291cC5oIgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCiAjaW5j
bHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgpAQCAtNTcsNiArNTYsNyBAQAogI2luY2x1ZGUgPHVu
aXN0ZC5oPgogI2VuZGlmCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW5j
bHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL2dsaWIvUnVuTG9vcFNvdXJjZVByaW9yaXR5Lmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcAppbmRleCAzNDNmYWViOWZlYjIx
OTRjY2MzZWY3NzlkNzdkM2Y2YjRkMWVkYzg3Li5iOTY3Nzk1OTgwZWU4ZmE0Yzk5NTAwZmZkZjM0
YjQyMDJlYjJhMmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcApAQCAtMzAsMTMgKzMwLDEzIEBA
CiAjaW5jbHVkZSAiU291cE5ldHdvcmtTZXNzaW9uLmgiCiAKICNpbmNsdWRlICJBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZS5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJHVW5p
cXVlUHRyU291cC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJTb3VwTmV0d29y
a1Byb3h5U2V0dGluZ3MuaCIKICNpbmNsdWRlIDxnbGliL2dzdGRpby5oPgogI2luY2x1ZGUgPGxp
YnNvdXAvc291cC5oPgogI2luY2x1ZGUgPHBhbC9jcnlwdG8vQ3J5cHRvRGlnZXN0Lmg+CisjaW5j
bHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1
ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lY
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0ODUxMzUyNTE4ZDYwNmJlYTI1ZWVlYTMz
NjE4NTI4MDMzNGNmY2MuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcAor
KysgL2Rldi9udWxsCkBAIC0xLDQ5MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3
LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBu
YW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0g
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IkZpbGVTeXN0ZW0uaCIKLQotI2luY2x1ZGUgIkZpbGVNZXRhZGF0YS5oIgotI2luY2x1ZGUgPGRp
cmVudC5oPgotI2luY2x1ZGUgPGVycm5vLmg+Ci0jaW5jbHVkZSA8ZmNudGwuaD4KLSNpbmNsdWRl
IDxmbm1hdGNoLmg+Ci0jaW5jbHVkZSA8bGliZ2VuLmg+Ci0jaW5jbHVkZSA8c3RkaW8uaD4KLSNp
bmNsdWRlIDxzeXMvc3RhdC5oPgotI2luY2x1ZGUgPHN5cy9zdGF0dmZzLmg+Ci0jaW5jbHVkZSA8
c3lzL3R5cGVzLmg+Ci0jaW5jbHVkZSA8dW5pc3RkLmg+Ci0jaW5jbHVkZSA8d3RmL0VudW1UcmFp
dHMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQnVpbGRlci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBGaWxlU3lzdGVtIHsKLQotYm9vbCBmaWxlRXhp
c3RzKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBpZiAocGF0aC5pc051bGwoKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgQ1N0cmluZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihwYXRoKTsKLQotICAgIGlmICghZnNSZXAuZGF0YSgpIHx8IGZzUmVwLmRhdGEoKVsw
XSA9PSAnXDAnKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gYWNjZXNzKGZz
UmVwLmRhdGEoKSwgRl9PSykgIT0gLTE7Ci19Ci0KLWJvb2wgZGVsZXRlRmlsZShjb25zdCBTdHJp
bmcmIHBhdGgpCi17Ci0gICAgQ1N0cmluZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihwYXRoKTsKLQotICAgIGlmICghZnNSZXAuZGF0YSgpIHx8IGZzUmVwLmRhdGEoKVswXSA9PSAn
XDAnKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyB1bmxpbmsoLi4uKSByZXR1cm5z
IDAgb24gc3VjY2Vzc2Z1bCBkZWxldGlvbiBvZiB0aGUgcGF0aCBhbmQgbm9uLXplcm8gaW4gYW55
IG90aGVyIGNhc2UgKGluY2x1ZGluZyBpbnZhbGlkIHBlcm1pc3Npb25zIG9yIG5vbi1leGlzdGVu
dCBmaWxlKQotICAgIHJldHVybiAhdW5saW5rKGZzUmVwLmRhdGEoKSk7Ci19Ci0KLVBsYXRmb3Jt
RmlsZUhhbmRsZSBvcGVuRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVPcGVuTW9kZSBtb2Rl
KQotewotICAgIENTdHJpbmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7
Ci0KLSAgICBpZiAoZnNSZXAuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBpbnZhbGlkUGxhdGZv
cm1GaWxlSGFuZGxlOwotCi0gICAgaW50IHBsYXRmb3JtRmxhZyA9IDA7Ci0gICAgaWYgKG1vZGUg
PT0gRmlsZU9wZW5Nb2RlOjpSZWFkKQotICAgICAgICBwbGF0Zm9ybUZsYWcgfD0gT19SRE9OTFk7
Ci0gICAgZWxzZSBpZiAobW9kZSA9PSBGaWxlT3Blbk1vZGU6OldyaXRlKQotICAgICAgICBwbGF0
Zm9ybUZsYWcgfD0gKE9fV1JPTkxZIHwgT19DUkVBVCB8IE9fVFJVTkMpOwotI2lmIE9TKERBUldJ
TikKLSAgICBlbHNlIGlmIChtb2RlID09IEZpbGVPcGVuTW9kZTo6RXZlbnRzT25seSkKLSAgICAg
ICAgcGxhdGZvcm1GbGFnIHw9IE9fRVZUT05MWTsKLSNlbmRpZgotCi0gICAgcmV0dXJuIG9wZW4o
ZnNSZXAuZGF0YSgpLCBwbGF0Zm9ybUZsYWcsIDA2NjYpOwotfQotCi12b2lkIGNsb3NlRmlsZShQ
bGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKLXsKLSAgICBpZiAoaXNIYW5kbGVWYWxpZChoYW5k
bGUpKSB7Ci0gICAgICAgIGNsb3NlKGhhbmRsZSk7Ci0gICAgICAgIGhhbmRsZSA9IGludmFsaWRQ
bGF0Zm9ybUZpbGVIYW5kbGU7Ci0gICAgfQotfQotCi1sb25nIGxvbmcgc2Vla0ZpbGUoUGxhdGZv
cm1GaWxlSGFuZGxlIGhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCwgRmlsZVNlZWtPcmlnaW4gb3Jp
Z2luKQotewotICAgIGludCB3aGVuY2UgPSBTRUVLX1NFVDsKLSAgICBzd2l0Y2ggKG9yaWdpbikg
ewotICAgIGNhc2UgRmlsZVNlZWtPcmlnaW46OkJlZ2lubmluZzoKLSAgICAgICAgd2hlbmNlID0g
U0VFS19TRVQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRmlsZVNlZWtPcmlnaW46OkN1cnJl
bnQ6Ci0gICAgICAgIHdoZW5jZSA9IFNFRUtfQ1VSOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IEZpbGVTZWVrT3JpZ2luOjpFbmQ6Ci0gICAgICAgIHdoZW5jZSA9IFNFRUtfRU5EOwotICAgICAg
ICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICB9Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGxvbmcgbG9uZz4obHNlZWsoaGFuZGxlLCBvZmZz
ZXQsIHdoZW5jZSkpOwotfQotCi1ib29sIHRydW5jYXRlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUg
aGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0KQotewotICAgIC8vIGZ0cnVuY2F0ZSByZXR1cm5zIDAg
dG8gaW5kaWNhdGUgdGhlIHN1Y2Nlc3MuCi0gICAgcmV0dXJuICFmdHJ1bmNhdGUoaGFuZGxlLCBv
ZmZzZXQpOwotfQotCi1pbnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwg
Y29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKLXsKLSAgICBkbyB7Ci0gICAgICAgIGludCBi
eXRlc1dyaXR0ZW4gPSB3cml0ZShoYW5kbGUsIGRhdGEsIHN0YXRpY19jYXN0PHNpemVfdD4obGVu
Z3RoKSk7Ci0gICAgICAgIGlmIChieXRlc1dyaXR0ZW4gPj0gMCkKLSAgICAgICAgICAgIHJldHVy
biBieXRlc1dyaXR0ZW47Ci0gICAgfSB3aGlsZSAoZXJybm8gPT0gRUlOVFIpOwotICAgIHJldHVy
biAtMTsKLX0KLQotaW50IHJlYWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBj
aGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQotewotICAgIGRvIHsKLSAgICAgICAgaW50IGJ5dGVzUmVh
ZCA9IHJlYWQoaGFuZGxlLCBkYXRhLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkpOwotICAg
ICAgICBpZiAoYnl0ZXNSZWFkID49IDApCi0gICAgICAgICAgICByZXR1cm4gYnl0ZXNSZWFkOwot
ICAgIH0gd2hpbGUgKGVycm5vID09IEVJTlRSKTsKLSAgICByZXR1cm4gLTE7Ci19Ci0KLSNpZiBV
U0UoRklMRV9MT0NLKQotYm9vbCBsb2NrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBP
cHRpb25TZXQ8RmlsZUxvY2tNb2RlPiBsb2NrTW9kZSkKLXsKLSAgICBDT01QSUxFX0FTU0VSVChM
T0NLX1NIID09IFdURjo6ZW51bVRvVW5kZXJseWluZ1R5cGUoRmlsZUxvY2tNb2RlOjpTaGFyZWQp
LCBMb2NrU2hhcmVkRW5jb2RpbmdJc0FzRXhwZWN0ZWQpOwotICAgIENPTVBJTEVfQVNTRVJUKExP
Q0tfRVggPT0gV1RGOjplbnVtVG9VbmRlcmx5aW5nVHlwZShGaWxlTG9ja01vZGU6OkV4Y2x1c2l2
ZSksIExvY2tFeGNsdXNpdmVFbmNvZGluZ0lzQXNFeHBlY3RlZCk7Ci0gICAgQ09NUElMRV9BU1NF
UlQoTE9DS19OQiA9PSBXVEY6OmVudW1Ub1VuZGVybHlpbmdUeXBlKEZpbGVMb2NrTW9kZTo6Tm9u
YmxvY2tpbmcpLCBMb2NrTm9uYmxvY2tpbmdFbmNvZGluZ0lzQXNFeHBlY3RlZCk7Ci0gICAgaW50
IHJlc3VsdCA9IGZsb2NrKGhhbmRsZSwgbG9ja01vZGUudG9SYXcoKSk7Ci0gICAgcmV0dXJuIChy
ZXN1bHQgIT0gLTEpOwotfQotCi1ib29sIHVubG9ja0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhh
bmRsZSkKLXsKLSAgICBpbnQgcmVzdWx0ID0gZmxvY2soaGFuZGxlLCBMT0NLX1VOKTsKLSAgICBy
ZXR1cm4gKHJlc3VsdCAhPSAtMSk7Ci19Ci0jZW5kaWYKLQotI2lmICFQTEFURk9STShNQUMpCi1i
b29sIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBDU3Ry
aW5nIGZzUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwotCi0gICAgaWYgKCFm
c1JlcC5kYXRhKCkgfHwgZnNSZXAuZGF0YSgpWzBdID09ICdcMCcpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIC8vIHJtZGlyKC4uLikgcmV0dXJucyAwIG9uIHN1Y2Nlc3NmdWwgZGVsZXRp
b24gb2YgdGhlIHBhdGggYW5kIG5vbi16ZXJvIGluIGFueSBvdGhlciBjYXNlIChpbmNsdWRpbmcg
aW52YWxpZCBwZXJtaXNzaW9ucyBvciBub24tZXhpc3RlbnQgZmlsZSkKLSAgICByZXR1cm4gIXJt
ZGlyKGZzUmVwLmRhdGEoKSk7Ci19Ci0jZW5kaWYKLQotYm9vbCBnZXRGaWxlU2l6ZShjb25zdCBT
dHJpbmcmIHBhdGgsIGxvbmcgbG9uZyYgcmVzdWx0KQotewotICAgIENTdHJpbmcgZnNSZXAgPSBm
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7Ci0KLSAgICBpZiAoIWZzUmVwLmRhdGEoKSB8
fCBmc1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
c3RydWN0IHN0YXQgZmlsZUluZm87Ci0KLSAgICBpZiAoc3RhdChmc1JlcC5kYXRhKCksICZmaWxl
SW5mbykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJlc3VsdCA9IGZpbGVJbmZvLnN0
X3NpemU7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgZ2V0RmlsZVNpemUoUGxhdGZvcm1G
aWxlSGFuZGxlIGhhbmRsZSwgbG9uZyBsb25nJiByZXN1bHQpCi17Ci0gICAgc3RydWN0IHN0YXQg
ZmlsZUluZm87Ci0gICAgaWYgKGZzdGF0KGhhbmRsZSwgJmZpbGVJbmZvKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgcmVzdWx0ID0gZmlsZUluZm8uc3Rfc2l6ZTsKLSAgICByZXR1cm4g
dHJ1ZTsKLX0KLQotT3B0aW9uYWw8V2FsbFRpbWU+IGdldEZpbGVDcmVhdGlvblRpbWUoY29uc3Qg
U3RyaW5nJiBwYXRoKQotewotI2lmIE9TKERBUldJTikgfHwgT1MoT1BFTkJTRCkgfHwgT1MoTkVU
QlNEKSB8fCBPUyhGUkVFQlNEKQotICAgIENTdHJpbmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24ocGF0aCk7Ci0KLSAgICBpZiAoIWZzUmVwLmRhdGEoKSB8fCBmc1JlcC5kYXRhKClb
MF0gPT0gJ1wwJykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIHN0cnVjdCBz
dGF0IGZpbGVJbmZvOwotCi0gICAgaWYgKHN0YXQoZnNSZXAuZGF0YSgpLCAmZmlsZUluZm8pKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgcmV0dXJuIFdhbGxUaW1lOjpmcm9t
UmF3U2Vjb25kcyhmaWxlSW5mby5zdF9iaXJ0aHRpbWUpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFS
QU0ocGF0aCk7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSNlbmRpZgotfQotCi1PcHRpb25h
bDxXYWxsVGltZT4gZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoKQot
ewotICAgIENTdHJpbmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7Ci0K
LSAgICBpZiAoIWZzUmVwLmRhdGEoKSB8fCBmc1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIHN0cnVjdCBzdGF0IGZpbGVJbmZvOwotCi0g
ICAgaWYgKHN0YXQoZnNSZXAuZGF0YSgpLCAmZmlsZUluZm8pKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwotCi0gICAgcmV0dXJuIFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhmaWxlSW5m
by5zdF9tdGltZSk7Ci19Ci0KLXN0YXRpYyBGaWxlTWV0YWRhdGE6OlR5cGUgdG9GaWxlTWV0YXRh
VHlwZShzdHJ1Y3Qgc3RhdCBmaWxlSW5mbykKLXsKLSAgICBpZiAoU19JU0RJUihmaWxlSW5mby5z
dF9tb2RlKSkKLSAgICAgICAgcmV0dXJuIEZpbGVNZXRhZGF0YTo6VHlwZTo6RGlyZWN0b3J5Owot
ICAgIGlmIChTX0lTTE5LKGZpbGVJbmZvLnN0X21vZGUpKQotICAgICAgICByZXR1cm4gRmlsZU1l
dGFkYXRhOjpUeXBlOjpTeW1ib2xpY0xpbms7Ci0gICAgcmV0dXJuIEZpbGVNZXRhZGF0YTo6VHlw
ZTo6RmlsZTsKLX0KLQotc3RhdGljIE9wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRh
VXNpbmdGdW5jdGlvbihjb25zdCBTdHJpbmcmIHBhdGgsIGludCAoKnN0YXRGdW5jKShjb25zdCBj
aGFyKiwgc3RydWN0IHN0YXQqKSkKLXsKLSAgICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKHBhdGgpOwotCi0gICAgaWYgKCFmc1JlcC5kYXRhKCkgfHwgZnNSZXAuZGF0
YSgpWzBdID09ICdcMCcpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBzdHJ1
Y3Qgc3RhdCBmaWxlSW5mbzsKLSAgICBpZiAoc3RhdEZ1bmMoZnNSZXAuZGF0YSgpLCAmZmlsZUlu
Zm8pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgU3RyaW5nIGZpbGVuYW1l
ID0gcGF0aEdldEZpbGVOYW1lKHBhdGgpOwotICAgIGJvb2wgaXNIaWRkZW4gPSAhZmlsZW5hbWUu
aXNFbXB0eSgpICYmIGZpbGVuYW1lWzBdID09ICcuJzsKLSAgICByZXR1cm4gRmlsZU1ldGFkYXRh
IHsKLSAgICAgICAgV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKGZpbGVJbmZvLnN0X210aW1lKSwK
LSAgICAgICAgZmlsZUluZm8uc3Rfc2l6ZSwKLSAgICAgICAgaXNIaWRkZW4sCi0gICAgICAgIHRv
RmlsZU1ldGF0YVR5cGUoZmlsZUluZm8pCi0gICAgfTsKLX0KLQotT3B0aW9uYWw8RmlsZU1ldGFk
YXRhPiBmaWxlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIHJldHVybiBmaWxl
TWV0YWRhdGFVc2luZ0Z1bmN0aW9uKHBhdGgsICZsc3RhdCk7Ci19Ci0KLU9wdGlvbmFsPEZpbGVN
ZXRhZGF0YT4gZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3MoY29uc3QgU3RyaW5nJiBwYXRo
KQotewotICAgIHJldHVybiBmaWxlTWV0YWRhdGFVc2luZ0Z1bmN0aW9uKHBhdGgsICZzdGF0KTsK
LX0KLQotYm9vbCBjcmVhdGVTeW1ib2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBj
b25zdCBTdHJpbmcmIHN5bWJvbGljTGlua1BhdGgpCi17Ci0gICAgQ1N0cmluZyB0YXJnZXRQYXRo
RlNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24odGFyZ2V0UGF0aCk7Ci0gICAgaWYgKCF0
YXJnZXRQYXRoRlNSZXAuZGF0YSgpIHx8IHRhcmdldFBhdGhGU1JlcC5kYXRhKClbMF0gPT0gJ1ww
JykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgQ1N0cmluZyBzeW1ib2xpY0xpbmtQYXRo
RlNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oc3ltYm9saWNMaW5rUGF0aCk7Ci0gICAg
aWYgKCFzeW1ib2xpY0xpbmtQYXRoRlNSZXAuZGF0YSgpIHx8IHN5bWJvbGljTGlua1BhdGhGU1Jl
cC5kYXRhKClbMF0gPT0gJ1wwJykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJu
ICFzeW1saW5rKHRhcmdldFBhdGhGU1JlcC5kYXRhKCksIHN5bWJvbGljTGlua1BhdGhGU1JlcC5k
YXRhKCkpOwotfQotCi1TdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNvbnN0IFN0cmlu
ZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb21wb25lbnQpCi17Ci0gICAgaWYgKHBhdGguZW5kc1dp
dGgoJy8nKSkKLSAgICAgICAgcmV0dXJuIHBhdGggKyBjb21wb25lbnQ7Ci0gICAgcmV0dXJuIHBh
dGggKyAiLyIgKyBjb21wb25lbnQ7Ci19Ci0KLVN0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnRzKFN0cmluZ1ZpZXcgcGF0aCwgY29uc3QgVmVjdG9yPFN0cmluZ1ZpZXc+JiBjb21wb25lbnRz
KQotewotICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBidWlsZGVyLmFwcGVuZChwYXRo
KTsKLSAgICBmb3IgKGF1dG8mIGNvbXBvbmVudCA6IGNvbXBvbmVudHMpIHsKLSAgICAgICAgYnVp
bGRlci5hcHBlbmQoJy8nKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoY29tcG9uZW50KTsKLSAg
ICB9Ci0gICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKLX0KLQotYm9vbCBtYWtlQWxsRGly
ZWN0b3JpZXMoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIENTdHJpbmcgZnVsbFBhdGggPSBm
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7Ci0gICAgaWYgKCFhY2Nlc3MoZnVsbFBhdGgu
ZGF0YSgpLCBGX09LKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBjaGFyKiBwID0gZnVs
bFBhdGgubXV0YWJsZURhdGEoKSArIDE7Ci0gICAgaW50IGxlbmd0aCA9IGZ1bGxQYXRoLmxlbmd0
aCgpOwotCi0gICAgaWYocFtsZW5ndGggLSAxXSA9PSAnLycpCi0gICAgICAgIHBbbGVuZ3RoIC0g
MV0gPSAnXDAnOwotICAgIGZvciAoOyAqcDsgKytwKQotICAgICAgICBpZiAoKnAgPT0gJy8nKSB7
Ci0gICAgICAgICAgICAqcCA9ICdcMCc7Ci0gICAgICAgICAgICBpZiAoYWNjZXNzKGZ1bGxQYXRo
LmRhdGEoKSwgRl9PSykpCi0gICAgICAgICAgICAgICAgaWYgKG1rZGlyKGZ1bGxQYXRoLmRhdGEo
KSwgU19JUldYVSkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
ICAgICpwID0gJy8nOwotICAgICAgICB9Ci0gICAgaWYgKGFjY2VzcyhmdWxsUGF0aC5kYXRhKCks
IEZfT0spKQotICAgICAgICBpZiAobWtkaXIoZnVsbFBhdGguZGF0YSgpLCBTX0lSV1hVKSkKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi1TdHJpbmcg
cGF0aEdldEZpbGVOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICByZXR1cm4gcGF0aC5z
dWJzdHJpbmcocGF0aC5yZXZlcnNlRmluZCgnLycpICsgMSk7Ci19Ci0KLVN0cmluZyBkaXJlY3Rv
cnlOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwotCi0gICAgaWYgKCFmc1JlcC5kYXRhKCkgfHwgZnNS
ZXAuZGF0YSgpWzBdID09ICdcMCcpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIHJl
dHVybiBTdHJpbmc6OmZyb21VVEY4KGRpcm5hbWUoZnNSZXAubXV0YWJsZURhdGEoKSkpOwotfQot
Ci1WZWN0b3I8U3RyaW5nPiBsaXN0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3Qg
U3RyaW5nJiBmaWx0ZXIpCi17Ci0gICAgVmVjdG9yPFN0cmluZz4gZW50cmllczsKLSAgICBDU3Ry
aW5nIGNwYXRoID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwotICAgIENTdHJpbmcg
Y2ZpbHRlciA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWx0ZXIpOwotICAgIERJUiogZGly
ID0gb3BlbmRpcihjcGF0aC5kYXRhKCkpOwotICAgIGlmIChkaXIpIHsKLSAgICAgICAgc3RydWN0
IGRpcmVudCogZHA7Ci0gICAgICAgIHdoaWxlICgoZHAgPSByZWFkZGlyKGRpcikpKSB7Ci0gICAg
ICAgICAgICBjb25zdCBjaGFyKiBuYW1lID0gZHAtPmRfbmFtZTsKLSAgICAgICAgICAgIGlmICgh
c3RyY21wKG5hbWUsICIuIikgfHwgIXN0cmNtcChuYW1lLCAiLi4iKSkKLSAgICAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgICAgIGlmIChmbm1hdGNoKGNmaWx0ZXIuZGF0YSgpLCBuYW1l
LCAwKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGNoYXIgZmlsZVBh
dGhbUEFUSF9NQVhdOwotICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKGZp
bGVQYXRoKSAtIDEpIDwgc25wcmludGYoZmlsZVBhdGgsIHNpemVvZihmaWxlUGF0aCksICIlcy8l
cyIsIGNwYXRoLmRhdGEoKSwgbmFtZSkpCi0gICAgICAgICAgICAgICAgY29udGludWU7IC8vIGJ1
ZmZlciBvdmVyZmxvdwotCi0gICAgICAgICAgICBhdXRvIHN0cmluZyA9IHN0cmluZ0Zyb21GaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZVBhdGgpOwotCi0gICAgICAgICAgICAvLyBTb21lIGZp
bGUgc3lzdGVtIHJlcHJlc2VudGF0aW9ucyBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgYXMgYSBVVEYt
MTYgc3RyaW5nLAotICAgICAgICAgICAgLy8gc28gdGhpcyBzdHJpbmcgbWlnaHQgYmUgbnVsbC4K
LSAgICAgICAgICAgIGlmICghc3RyaW5nLmlzTnVsbCgpKQotICAgICAgICAgICAgICAgIGVudHJp
ZXMuYXBwZW5kKFdURk1vdmUoc3RyaW5nKSk7Ci0gICAgICAgIH0KLSAgICAgICAgY2xvc2VkaXIo
ZGlyKTsKLSAgICB9Ci0gICAgcmV0dXJuIGVudHJpZXM7Ci19Ci0KLSNpZiAhUExBVEZPUk0oQ09D
T0EpCi1TdHJpbmcgc3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBjaGFy
KiBwYXRoKQotewotICAgIGlmICghcGF0aCkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0g
ICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgocGF0aCk7Ci19Ci0KLUNTdHJpbmcgZmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICByZXR1cm4gcGF0aC51
dGY4KCk7Ci19Ci0KLWJvb2wgbW92ZUZpbGUoY29uc3QgU3RyaW5nJiBvbGRQYXRoLCBjb25zdCBT
dHJpbmcmIG5ld1BhdGgpCi17Ci0gICAgYXV0byBvbGRGaWxlbmFtZSA9IGZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihvbGRQYXRoKTsKLSAgICBpZiAob2xkRmlsZW5hbWUuaXNOdWxsKCkpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8gbmV3RmlsZW5hbWUgPSBmaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24obmV3UGF0aCk7Ci0gICAgaWYgKG5ld0ZpbGVuYW1lLmlzTnVsbCgpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gcmVuYW1lKG9sZEZpbGVuYW1lLmRhdGEo
KSwgbmV3RmlsZW5hbWUuZGF0YSgpKSAhPSAtMTsKLX0KLQotYm9vbCBnZXRWb2x1bWVGcmVlU3Bh
Y2UoY29uc3QgU3RyaW5nJiBwYXRoLCB1aW50NjRfdCYgZnJlZVNwYWNlKQotewotICAgIHN0cnVj
dCBzdGF0dmZzIGZpbGVTeXN0ZW1TdGF0OwotICAgIGlmIChzdGF0dmZzKGZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihwYXRoKS5kYXRhKCksICZmaWxlU3lzdGVtU3RhdCkpIHsKLSAgICAgICAgZnJl
ZVNwYWNlID0gZmlsZVN5c3RlbVN0YXQuZl9iYXZhaWwgKiBmaWxlU3lzdGVtU3RhdC5mX2Zyc2l6
ZTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLSNl
bmRpZgotCi0jaWYgIU9TKERBUldJTikKLVN0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBT
dHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpCi17Ci0gICAgY2hhciBi
dWZmZXJbUEFUSF9NQVhdOwotICAgIGNvbnN0IGNoYXIqIHRtcERpciA9IGdldGVudigiVE1QRElS
Iik7Ci0KLSAgICBpZiAoIXRtcERpcikKLSAgICAgICAgdG1wRGlyID0gIi90bXAiOwotCi0gICAg
aWYgKHNucHJpbnRmKGJ1ZmZlciwgUEFUSF9NQVgsICIlcy8lc1hYWFhYWCIsIHRtcERpciwgcHJl
Zml4LnV0ZjgoKS5kYXRhKCkpID49IFBBVEhfTUFYKQotICAgICAgICBnb3RvIGVuZDsKLQotICAg
IGhhbmRsZSA9IG1rc3RlbXAoYnVmZmVyKTsKLSAgICBpZiAoaGFuZGxlIDwgMCkKLSAgICAgICAg
Z290byBlbmQ7Ci0KLSAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChidWZmZXIpOwotCi1lbmQ6
Ci0gICAgaGFuZGxlID0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKLSAgICByZXR1cm4gU3Ry
aW5nKCk7Ci19Ci0jZW5kaWYKLQotYm9vbCBoYXJkTGlua09yQ29weUZpbGUoY29uc3QgU3RyaW5n
JiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb24pCi17Ci0gICAgaWYgKHNvdXJjZS5p
c0VtcHR5KCkgfHwgZGVzdGluYXRpb24uaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICBDU3RyaW5nIGZzU291cmNlID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHNvdXJj
ZSk7Ci0gICAgaWYgKCFmc1NvdXJjZS5kYXRhKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQot
ICAgIENTdHJpbmcgZnNEZXN0aW5hdGlvbiA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihkZXN0
aW5hdGlvbik7Ci0gICAgaWYgKCFmc0Rlc3RpbmF0aW9uLmRhdGEoKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgaWYgKCFsaW5rKGZzU291cmNlLmRhdGEoKSwgZnNEZXN0aW5hdGlvbi5k
YXRhKCkpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIC8vIEhhcmQgbGluayBmYWlsZWQu
IFBlcmZvcm0gYSBjb3B5IGluc3RlYWQuCi0gICAgYXV0byBoYW5kbGUgPSBvcGVuKGZzRGVzdGlu
YXRpb24uZGF0YSgpLCBPX1dST05MWSB8IE9fQ1JFQVQgfCBPX0VYQ0wsIDA2NjYpOwotICAgIGlm
IChoYW5kbGUgPT0gLTEpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGJvb2wgYXBwZW5k
UmVzdWx0ID0gYXBwZW5kRmlsZUNvbnRlbnRzVG9GaWxlSGFuZGxlKHNvdXJjZSwgaGFuZGxlKTsK
LSAgICBjbG9zZShoYW5kbGUpOwotCi0gICAgLy8gSWYgdGhlIGNvcHkgZmFpbGVkLCBkZWxldGUg
dGhlIHVudXNhYmxlIGZpbGUuCi0gICAgaWYgKCFhcHBlbmRSZXN1bHQpCi0gICAgICAgIHVubGlu
ayhmc0Rlc3RpbmF0aW9uLmRhdGEoKSk7Ci0KLSAgICByZXR1cm4gYXBwZW5kUmVzdWx0OwotfQot
Ci1PcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxl
KQotewotICAgIHN0cnVjdCBzdGF0IGZpbGVTdGF0OwotICAgIGlmIChzdGF0KGZzRmlsZS5kYXRh
KCksICZmaWxlU3RhdCkgPT0gLTEpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAg
ICByZXR1cm4gZmlsZVN0YXQuc3RfZGV2OwotfQotCi1TdHJpbmcgcmVhbFBhdGgoY29uc3QgU3Ry
aW5nJiBmaWxlUGF0aCkKLXsKLSAgICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKGZpbGVQYXRoKTsKLSAgICBjaGFyIHJlc29sdmVkTmFtZVtQQVRIX01BWF07Ci0gICAg
Y29uc3QgY2hhciogcmVzdWx0ID0gcmVhbHBhdGgoZnNSZXAuZGF0YSgpLCByZXNvbHZlZE5hbWUp
OwotICAgIHJldHVybiByZXN1bHQgPyBTdHJpbmc6OmZyb21VVEY4KHJlc3VsdCkgOiBmaWxlUGF0
aDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgRmlsZVN5c3RlbQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVy
UE9TSVguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVyUE9T
SVguY3BwCmluZGV4IDUxMzM3NWQyNDVlZjQ1YzE5NmE4NTQ2MTVjZTcwYjc4YTkwY2VjZmYuLjhl
ZDU3MTc0Nzc4Y2I3YmRhZGNhMzY1MTdmZDc5NDQ1NzM4YzUyZDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQT1NJWC5jcHAKQEAgLTI2LDEx
ICsyNiwxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5o
IgogCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgotCiAjaW5jbHVkZSA8ZmNudGwuaD4KICNpbmNs
dWRlIDxzeXMvc3RhdC5oPgogI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHd0Zi9GaWxl
U3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmls
ZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3Rl
bS5jcHAKaW5kZXggOTBjMjBjN2JjZTZhNjdiNjdkNTNkNWM0MDUzNzc2YmYxNGM3ZTVlNS4uMzY0
YmZmNzEwNzQ5Nzg5NmY3YjFkNzU3YTdkOWE1ZmMzYWQzZjY0MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcApAQCAtMzEsMTAgKzMxLDEw
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU1FMaXRlRmlsZVN5c3RlbS5oIgog
Ci0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIlNRTGl0ZURhdGFiYXNlLmgiCiAj
aW5jbHVkZSAiU1FMaXRlU3RhdGVtZW50LmgiCiAjaW5jbHVkZSA8c3FsaXRlMy5oPgorI2luY2x1
ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2luY2x1
ZGUgPHBhbC9zcGkvaW9zL1NRTGl0ZTNTUEkuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGliSHlwaGVuLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGliSHlwaGVuLmNwcAppbmRl
eCAyZDdiNjZkOTM3OTA1ZGNjMjJmNGExM2U5NWEwYWYwNmJiNDhiN2FmLi41ZWViOWJmYTc0MDBm
NzIxNWMwMjZjNTUyZDgyYWEzOGE3NjNmOTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9oeXBoZW4vSHlwaGVuYXRpb25MaWJIeXBoZW4uY3BwCkBA
IC0yOSwxMCArMjksMTAgQEAKIAogI2lmIFVTRShMSUJIWVBIRU4pCiAKLSNpbmNsdWRlICJGaWxl
U3lzdGVtLmgiCiAjaW5jbHVkZSA8aHlwaGVuLmg+CiAjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1
ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3
dGYvVGlueUxSVUNhY2hlLmg+CkBAIC0yMjQsNyArMjI0LDcgQEAgcHVibGljOgogCiAgICAgc3Rh
dGljIFJlZlB0cjxXZWJDb3JlOjpIeXBoZW5hdGlvbkRpY3Rpb25hcnk+IGNyZWF0ZVZhbHVlRm9y
S2V5KGNvbnN0IEF0b21pY1N0cmluZyYgZGljdGlvbmFyeVBhdGgpCiAgICAgewotICAgICAgICBy
ZXR1cm4gV2ViQ29yZTo6SHlwaGVuYXRpb25EaWN0aW9uYXJ5OjpjcmVhdGUoV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRpY3Rpb25hcnlQYXRoLnN0cmluZygp
KSk7CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpIeXBoZW5hdGlvbkRpY3Rpb25hcnk6OmNyZWF0
ZShGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGljdGlvbmFyeVBhdGguc3Ry
aW5nKCkpKTsKICAgICB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vRmlsZVN5c3RlbVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRmls
ZVN5c3RlbVdpbi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiNzAyY2IwMTIw
YWJiZjI1ODUyOWZhZjk0MzEwZGRmZmZkZjYwODQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0ZpbGVTeXN0
ZW1XaW4uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNTg5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDctMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhLCBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLiAKLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLiAKLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJB
cHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAK
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgotCi0jaW5jbHVkZSAiRmlsZU1ldGFkYXRh
LmgiCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJQYXRoV2Fsa2VyLmgi
Ci0jaW5jbHVkZSA8aW8uaD4KLSNpbmNsdWRlIDxzaGxvYmouaD4KLSNpbmNsdWRlIDxzaGx3YXBp
Lmg+Ci0jaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0jaW5jbHVk
ZSA8d3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmg+Ci0jaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nQnVpbGRlci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4
dHJhcy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBGaWxlU3lzdGVtIHsK
LQotc3RhdGljIGNvbnN0IFVMT05HTE9ORyBrU2Vjb25kc0Zyb21GaWxlVGltZVRvVGltZXQgPSAx
MTY0NDQ3MzYwMDsKLQotc3RhdGljIGJvb2wgZ2V0RmluZERhdGEoU3RyaW5nIHBhdGgsIFdJTjMy
X0ZJTkRfREFUQVcmIGZpbmREYXRhKQotewotICAgIEhBTkRMRSBoYW5kbGUgPSBGaW5kRmlyc3RG
aWxlVyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIocGF0aCkuZGF0YSgpLCAmZmluZERhdGEp
OwotICAgIGlmIChoYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICBGaW5kQ2xvc2UoaGFuZGxlKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQot
c3RhdGljIGJvb2wgZ2V0RmlsZVNpemVGcm9tRmluZERhdGEoY29uc3QgV0lOMzJfRklORF9EQVRB
VyYgZmluZERhdGEsIGxvbmcgbG9uZyYgc2l6ZSkKLXsKLSAgICBVTEFSR0VfSU5URUdFUiBmaWxl
U2l6ZTsKLSAgICBmaWxlU2l6ZS5IaWdoUGFydCA9IGZpbmREYXRhLm5GaWxlU2l6ZUhpZ2g7Ci0g
ICAgZmlsZVNpemUuTG93UGFydCA9IGZpbmREYXRhLm5GaWxlU2l6ZUxvdzsKLQotICAgIGlmIChm
aWxlU2l6ZS5RdWFkUGFydCA+IHN0YXRpY19jYXN0PFVMT05HTE9ORz4oc3RkOjpudW1lcmljX2xp
bWl0czxsb25nIGxvbmc+OjptYXgoKSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHNp
emUgPSBmaWxlU2l6ZS5RdWFkUGFydDsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotc3RhdGljIGJv
b2wgZ2V0RmlsZVNpemVGcm9tQnlIYW5kbGVGaWxlSW5mb3JtYXRpb25TdHJ1Y3R1cmUoY29uc3Qg
QllfSEFORExFX0ZJTEVfSU5GT1JNQVRJT04mIGZpbGVJbmZvcm1hdGlvbiwgbG9uZyBsb25nJiBz
aXplKQotewotICAgIFVMQVJHRV9JTlRFR0VSIGZpbGVTaXplOwotICAgIGZpbGVTaXplLkhpZ2hQ
YXJ0ID0gZmlsZUluZm9ybWF0aW9uLm5GaWxlU2l6ZUhpZ2g7Ci0gICAgZmlsZVNpemUuTG93UGFy
dCA9IGZpbGVJbmZvcm1hdGlvbi5uRmlsZVNpemVMb3c7Ci0KLSAgICBpZiAoZmlsZVNpemUuUXVh
ZFBhcnQgPiBzdGF0aWNfY2FzdDxVTE9OR0xPTkc+KHN0ZDo6bnVtZXJpY19saW1pdHM8bG9uZyBs
b25nPjo6bWF4KCkpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBzaXplID0gZmlsZVNp
emUuUXVhZFBhcnQ7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXN0YXRpYyB2b2lkIGdldEZpbGVD
cmVhdGlvblRpbWVGcm9tRmluZERhdGEoY29uc3QgV0lOMzJfRklORF9EQVRBVyYgZmluZERhdGEs
IHRpbWVfdCYgdGltZSkKLXsKLSAgICBVTEFSR0VfSU5URUdFUiBmaWxlVGltZTsKLSAgICBmaWxl
VGltZS5IaWdoUGFydCA9IGZpbmREYXRhLmZ0Q3JlYXRpb25UaW1lLmR3SGlnaERhdGVUaW1lOwot
ICAgIGZpbGVUaW1lLkxvd1BhcnQgPSBmaW5kRGF0YS5mdENyZWF0aW9uVGltZS5kd0xvd0RhdGVU
aW1lOwotCi0gICAgLy8gSW5mb3JtYXRpb24gYWJvdXQgY29udmVydGluZyB0aW1lX3QgdG8gRmls
ZVRpbWUgaXMgYXZhaWxhYmxlIGF0IGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGli
cmFyeS9tczcyNDIyOCUyOHY9dnMuODUlMjkuYXNweAotICAgIHRpbWUgPSBmaWxlVGltZS5RdWFk
UGFydCAvIDEwMDAwMDAwIC0ga1NlY29uZHNGcm9tRmlsZVRpbWVUb1RpbWV0OwotfQotCi0KLXN0
YXRpYyB2b2lkIGdldEZpbGVNb2RpZmljYXRpb25UaW1lRnJvbUZpbmREYXRhKGNvbnN0IFdJTjMy
X0ZJTkRfREFUQVcmIGZpbmREYXRhLCB0aW1lX3QmIHRpbWUpCi17Ci0gICAgVUxBUkdFX0lOVEVH
RVIgZmlsZVRpbWU7Ci0gICAgZmlsZVRpbWUuSGlnaFBhcnQgPSBmaW5kRGF0YS5mdExhc3RXcml0
ZVRpbWUuZHdIaWdoRGF0ZVRpbWU7Ci0gICAgZmlsZVRpbWUuTG93UGFydCA9IGZpbmREYXRhLmZ0
TGFzdFdyaXRlVGltZS5kd0xvd0RhdGVUaW1lOwotCi0gICAgLy8gSW5mb3JtYXRpb24gYWJvdXQg
Y29udmVydGluZyB0aW1lX3QgdG8gRmlsZVRpbWUgaXMgYXZhaWxhYmxlIGF0IGh0dHA6Ly9tc2Ru
Lm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9tczcyNDIyOCUyOHY9dnMuODUlMjkuYXNweAot
ICAgIHRpbWUgPSBmaWxlVGltZS5RdWFkUGFydCAvIDEwMDAwMDAwIC0ga1NlY29uZHNGcm9tRmls
ZVRpbWVUb1RpbWV0OwotfQotCi1ib29sIGdldEZpbGVTaXplKGNvbnN0IFN0cmluZyYgcGF0aCwg
bG9uZyBsb25nJiBzaXplKQotewotICAgIFdJTjMyX0ZJTkRfREFUQVcgZmluZERhdGE7Ci0gICAg
aWYgKCFnZXRGaW5kRGF0YShwYXRoLCBmaW5kRGF0YSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIHJldHVybiBnZXRGaWxlU2l6ZUZyb21GaW5kRGF0YShmaW5kRGF0YSwgc2l6ZSk7Ci19
Ci0KLWJvb2wgZ2V0RmlsZVNpemUoUGxhdGZvcm1GaWxlSGFuZGxlIGZpbGVIYW5kbGUsIGxvbmcg
bG9uZyYgc2l6ZSkKLXsKLSAgICBCWV9IQU5ETEVfRklMRV9JTkZPUk1BVElPTiBmaWxlSW5mb3Jt
YXRpb247Ci0gICAgaWYgKCE6OkdldEZpbGVJbmZvcm1hdGlvbkJ5SGFuZGxlKGZpbGVIYW5kbGUs
ICZmaWxlSW5mb3JtYXRpb24pKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4g
Z2V0RmlsZVNpemVGcm9tQnlIYW5kbGVGaWxlSW5mb3JtYXRpb25TdHJ1Y3R1cmUoZmlsZUluZm9y
bWF0aW9uLCBzaXplKTsKLX0KLQotT3B0aW9uYWw8V2FsbFRpbWU+IGdldEZpbGVNb2RpZmljYXRp
b25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBXSU4zMl9GSU5EX0RBVEFXIGZpbmRE
YXRhOwotICAgIGlmICghZ2V0RmluZERhdGEocGF0aCwgZmluZERhdGEpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwotCi0gICAgdGltZV90IHRpbWUgPSAwOwotICAgIGdldEZpbGVNb2Rp
ZmljYXRpb25UaW1lRnJvbUZpbmREYXRhKGZpbmREYXRhLCB0aW1lKTsKLSAgICByZXR1cm4gV2Fs
bFRpbWU6OmZyb21SYXdTZWNvbmRzKHRpbWUpOwotfQotCi1PcHRpb25hbDxXYWxsVGltZT4gZ2V0
RmlsZUNyZWF0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgV0lOMzJfRklORF9E
QVRBVyBmaW5kRGF0YTsKLSAgICBpZiAoIWdldEZpbmREYXRhKHBhdGgsIGZpbmREYXRhKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIHRpbWVfdCB0aW1lID0gMDsKLSAgICBn
ZXRGaWxlQ3JlYXRpb25UaW1lRnJvbUZpbmREYXRhKGZpbmREYXRhLCB0aW1lKTsKLSAgICByZXR1
cm4gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKHRpbWUpOwotfQotCi1zdGF0aWMgU3RyaW5nIGdl
dEZpbmFsUGF0aE5hbWUoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIGF1dG8gaGFuZGxlID0g
b3BlbkZpbGUocGF0aCwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKLSAgICBpZiAoIWlzSGFuZGxlVmFs
aWQoaGFuZGxlKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgVmVjdG9yPFVDaGFy
PiBidWZmZXIoTUFYX1BBVEgpOwotICAgIGlmICg6OkdldEZpbmFsUGF0aE5hbWVCeUhhbmRsZVco
aGFuZGxlLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpLCBWT0xVTUVfTkFNRV9OVCkgPj0g
TUFYX1BBVEgpIHsKLSAgICAgICAgY2xvc2VGaWxlKGhhbmRsZSk7Ci0gICAgICAgIHJldHVybiBT
dHJpbmcoKTsKLSAgICB9Ci0gICAgY2xvc2VGaWxlKGhhbmRsZSk7Ci0KLSAgICBidWZmZXIuc2hy
aW5rKHdjc2xlbihidWZmZXIuZGF0YSgpKSk7Ci0gICAgcmV0dXJuIFN0cmluZzo6YWRvcHQoV1RG
TW92ZShidWZmZXIpKTsKLX0KLQotc3RhdGljIGlubGluZSBib29sIGlzU3ltYm9saWNMaW5rKFdJ
TjMyX0ZJTkRfREFUQVcgZmluZERhdGEpCi17Ci0gICAgcmV0dXJuIGZpbmREYXRhLmR3RmlsZUF0
dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9SRVBBUlNFX1BPSU5UICYmIGZpbmREYXRhLmR3UmVz
ZXJ2ZWQwID09IElPX1JFUEFSU0VfVEFHX1NZTUxJTks7Ci19Ci0KLXN0YXRpYyBGaWxlTWV0YWRh
dGE6OlR5cGUgdG9GaWxlTWV0YWRhdGFUeXBlKFdJTjMyX0ZJTkRfREFUQVcgZmluZERhdGEpCi17
Ci0gICAgaWYgKGZpbmREYXRhLmR3RmlsZUF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9ESVJF
Q1RPUlkpCi0gICAgICAgIHJldHVybiBGaWxlTWV0YWRhdGE6OlR5cGU6OkRpcmVjdG9yeTsKLSAg
ICBpZiAoaXNTeW1ib2xpY0xpbmsoZmluZERhdGEpKQotICAgICAgICByZXR1cm4gRmlsZU1ldGFk
YXRhOjpUeXBlOjpTeW1ib2xpY0xpbms7Ci0gICAgcmV0dXJuIEZpbGVNZXRhZGF0YTo6VHlwZTo6
RmlsZTsKLX0KLQotc3RhdGljIE9wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmluZERhdGFUb0ZpbGVN
ZXRhZGF0YShXSU4zMl9GSU5EX0RBVEFXIGZpbmREYXRhKQotewotICAgIGxvbmcgbG9uZyBsZW5n
dGg7Ci0gICAgaWYgKCFnZXRGaWxlU2l6ZUZyb21GaW5kRGF0YShmaW5kRGF0YSwgbGVuZ3RoKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIHRpbWVfdCBtb2RpZmljYXRpb25U
aW1lOwotICAgIGdldEZpbGVNb2RpZmljYXRpb25UaW1lRnJvbUZpbmREYXRhKGZpbmREYXRhLCBt
b2RpZmljYXRpb25UaW1lKTsKLQotICAgIHJldHVybiBGaWxlTWV0YWRhdGEgewotICAgICAgICBX
YWxsVGltZTo6ZnJvbVJhd1NlY29uZHMobW9kaWZpY2F0aW9uVGltZSksCi0gICAgICAgIGxlbmd0
aCwKLSAgICAgICAgc3RhdGljX2Nhc3Q8Ym9vbD4oZmluZERhdGEuZHdGaWxlQXR0cmlidXRlcyAm
IEZJTEVfQVRUUklCVVRFX0hJRERFTiksCi0gICAgICAgIHRvRmlsZU1ldGFkYXRhVHlwZShmaW5k
RGF0YSkKLSAgICB9OwotfQotCi1PcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YShj
b25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgV0lOMzJfRklORF9EQVRBVyBmaW5kRGF0YTsKLSAg
ICBpZiAoIWdldEZpbmREYXRhKHBhdGgsIGZpbmREYXRhKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKLQotICAgIHJldHVybiBmaW5kRGF0YVRvRmlsZU1ldGFkYXRhKGZpbmREYXRhKTsK
LX0KLQotT3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5r
cyhjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgV0lOMzJfRklORF9EQVRBVyBmaW5kRGF0YTsK
LSAgICBpZiAoIWdldEZpbmREYXRhKHBhdGgsIGZpbmREYXRhKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKLQotICAgIGlmIChpc1N5bWJvbGljTGluayhmaW5kRGF0YSkpIHsKLSAgICAg
ICAgU3RyaW5nIHRhcmdldFBhdGggPSBnZXRGaW5hbFBhdGhOYW1lKHBhdGgpOwotICAgICAgICBp
ZiAodGFyZ2V0UGF0aC5pc051bGwoKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
Ci0gICAgICAgIGlmICghZ2V0RmluZERhdGEodGFyZ2V0UGF0aCwgZmluZERhdGEpKQotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICB9Ci0KLSAgICByZXR1cm4gZmluZERhdGFU
b0ZpbGVNZXRhZGF0YShmaW5kRGF0YSk7Ci19Ci0KLWJvb2wgY3JlYXRlU3ltYm9saWNMaW5rKGNv
bnN0IFN0cmluZyYgdGFyZ2V0UGF0aCwgY29uc3QgU3RyaW5nJiBzeW1ib2xpY0xpbmtQYXRoKQot
ewotICAgIHJldHVybiAhOjpDcmVhdGVTeW1ib2xpY0xpbmtXKHN0cmluZ1RvTnVsbFRlcm1pbmF0
ZWRXQ2hhcihzeW1ib2xpY0xpbmtQYXRoKS5kYXRhKCksIHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRX
Q2hhcih0YXJnZXRQYXRoKS5kYXRhKCksIDApOwotfQotCi1ib29sIGZpbGVFeGlzdHMoY29uc3Qg
U3RyaW5nJiBwYXRoKQotewotICAgIFdJTjMyX0ZJTkRfREFUQVcgZmluZERhdGE7Ci0gICAgcmV0
dXJuIGdldEZpbmREYXRhKHBhdGgsIGZpbmREYXRhKTsKLX0KLQotYm9vbCBkZWxldGVGaWxlKGNv
bnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBTdHJpbmcgZmlsZW5hbWUgPSBwYXRoOwotICAgIHJl
dHVybiAhIURlbGV0ZUZpbGVXKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihmaWxlbmFtZSku
ZGF0YSgpKTsKLX0KLQotYm9vbCBkZWxldGVFbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBh
dGgpCi17Ci0gICAgU3RyaW5nIGZpbGVuYW1lID0gcGF0aDsKLSAgICByZXR1cm4gISFSZW1vdmVE
aXJlY3RvcnlXKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihmaWxlbmFtZSkuZGF0YSgpKTsK
LX0KLQotYm9vbCBtb3ZlRmlsZShjb25zdCBTdHJpbmcmIG9sZFBhdGgsIGNvbnN0IFN0cmluZyYg
bmV3UGF0aCkKLXsKLSAgICBTdHJpbmcgb2xkRmlsZW5hbWUgPSBvbGRQYXRoOwotICAgIFN0cmlu
ZyBuZXdGaWxlbmFtZSA9IG5ld1BhdGg7Ci0gICAgcmV0dXJuICEhOjpNb3ZlRmlsZUV4KHN0cmlu
Z1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihvbGRGaWxlbmFtZSkuZGF0YSgpLCBzdHJpbmdUb051bGxU
ZXJtaW5hdGVkV0NoYXIobmV3RmlsZW5hbWUpLmRhdGEoKSwgTU9WRUZJTEVfQ09QWV9BTExPV0VE
IHwgTU9WRUZJTEVfUkVQTEFDRV9FWElTVElORyk7Ci19Ci0KLVN0cmluZyBwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGNvbXBvbmVudCkK
LXsKLSAgICBWZWN0b3I8VUNoYXI+IGJ1ZmZlcihNQVhfUEFUSCk7Ci0KLSAgICBpZiAocGF0aC5s
ZW5ndGgoKSArIDEgPiBidWZmZXIuc2l6ZSgpKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0K
LSAgICBTdHJpbmdWaWV3KHBhdGgpLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGJ1ZmZlci5k
YXRhKCkpOwotICAgIGJ1ZmZlcltwYXRoLmxlbmd0aCgpXSA9ICdcMCc7Ci0KLSAgICBpZiAoIVBh
dGhBcHBlbmRXKGJ1ZmZlci5kYXRhKCksIHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihjb21w
b25lbnQpLmRhdGEoKSkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIGJ1ZmZlci5z
aHJpbmsod2NzbGVuKGJ1ZmZlci5kYXRhKCkpKTsKLQotICAgIHJldHVybiBTdHJpbmc6OmFkb3B0
KFdURk1vdmUoYnVmZmVyKSk7Ci19Ci0KLVN0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRz
KFN0cmluZ1ZpZXcgcGF0aCwgY29uc3QgVmVjdG9yPFN0cmluZ1ZpZXc+JiBjb21wb25lbnRzKQot
ewotICAgIFN0cmluZyByZXN1bHQgPSBwYXRoLnRvU3RyaW5nKCk7Ci0gICAgZm9yIChhdXRvJiBj
b21wb25lbnQgOiBjb21wb25lbnRzKQotICAgICAgICByZXN1bHQgPSBwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQocmVzdWx0LCBjb21wb25lbnQudG9TdHJpbmcoKSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLQotI2lmICFVU0UoQ0YpCi0KLUNTdHJpbmcgZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBhdXRvIHVwY29udmVydGVkQ2hhcmFjdGVycyA9
IHBhdGgudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCk7Ci0KLSAgICBjb25zdCBVQ2hhciogY2hhcmFj
dGVycyA9IHVwY29udmVydGVkQ2hhcmFjdGVyczsKLSAgICBpbnQgc2l6ZSA9IFdpZGVDaGFyVG9N
dWx0aUJ5dGUoQ1BfQUNQLCAwLCBjaGFyYWN0ZXJzLCBwYXRoLmxlbmd0aCgpLCAwLCAwLCAwLCAw
KSAtIDE7Ci0KLSAgICBjaGFyKiBidWZmZXI7Ci0gICAgQ1N0cmluZyBzdHJpbmcgPSBDU3RyaW5n
OjpuZXdVbmluaXRpYWxpemVkKHNpemUsIGJ1ZmZlcik7Ci0KLSAgICBXaWRlQ2hhclRvTXVsdGlC
eXRlKENQX0FDUCwgMCwgY2hhcmFjdGVycywgcGF0aC5sZW5ndGgoKSwgYnVmZmVyLCBzaXplLCAw
LCAwKTsKLQotICAgIHJldHVybiBzdHJpbmc7Ci19Ci0KLSNlbmRpZiAvLyAhVVNFKENGKQotCi1i
b29sIG1ha2VBbGxEaXJlY3Rvcmllcyhjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgU3RyaW5n
IGZ1bGxQYXRoID0gcGF0aDsKLSAgICBpZiAoU0hDcmVhdGVEaXJlY3RvcnlFeCgwLCBzdHJpbmdU
b051bGxUZXJtaW5hdGVkV0NoYXIoZnVsbFBhdGgpLmRhdGEoKSwgMCkgIT0gRVJST1JfU1VDQ0VT
UykgewotICAgICAgICBEV09SRCBlcnJvciA9IEdldExhc3RFcnJvcigpOwotICAgICAgICBpZiAo
ZXJyb3IgIT0gRVJST1JfRklMRV9FWElTVFMgJiYgZXJyb3IgIT0gRVJST1JfQUxSRUFEWV9FWElT
VFMpIHsKLSAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBwYXRoICVzIiwg
cGF0aC5hc2NpaSgpLmRhdGEoKSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IH0KLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLVN0cmluZyBob21lRGlyZWN0b3J5UGF0
aCgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gIiI7Ci19Ci0KLVN0cmlu
ZyBwYXRoR2V0RmlsZU5hbWUoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIHJldHVybiBudWxs
VGVybWluYXRlZFdDaGFyVG9TdHJpbmcoOjpQYXRoRmluZEZpbGVOYW1lKHN0cmluZ1RvTnVsbFRl
cm1pbmF0ZWRXQ2hhcihwYXRoKS5kYXRhKCkpKTsKLX0KLQotU3RyaW5nIGRpcmVjdG9yeU5hbWUo
Y29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIFN0cmluZyBuYW1lID0gcGF0aC5sZWZ0KHBhdGgu
bGVuZ3RoKCkgLSBwYXRoR2V0RmlsZU5hbWUocGF0aCkubGVuZ3RoKCkpOwotICAgIGlmIChuYW1l
LmNoYXJhY3RlclN0YXJ0aW5nQXQobmFtZS5sZW5ndGgoKSAtIDEpID09ICdcXCcpIHsKLSAgICAg
ICAgLy8gUmVtb3ZlIGFueSB0cmFpbGluZyAiXCIuCi0gICAgICAgIG5hbWUudHJ1bmNhdGUobmFt
ZS5sZW5ndGgoKSAtIDEpOwotICAgIH0KLSAgICByZXR1cm4gbmFtZTsKLX0KLQotc3RhdGljIFN0
cmluZyBidW5kbGVOYW1lKCkKLXsKLSAgICBzdGF0aWMgY29uc3QgTmV2ZXJEZXN0cm95ZWQ8U3Ry
aW5nPiBuYW1lID0gW10gewotICAgICAgICBTdHJpbmcgbmFtZSB7ICJXZWJLaXQiX3MgfTsKLQot
I2lmIFVTRShDRikKLSAgICAgICAgaWYgKENGQnVuZGxlUmVmIGJ1bmRsZSA9IENGQnVuZGxlR2V0
TWFpbkJ1bmRsZSgpKSB7Ci0gICAgICAgICAgICBpZiAoQ0ZUeXBlUmVmIGJ1bmRsZUV4ZWN1dGFi
bGUgPSBDRkJ1bmRsZUdldFZhbHVlRm9ySW5mb0RpY3Rpb25hcnlLZXkoYnVuZGxlLCBrQ0ZCdW5k
bGVFeGVjdXRhYmxlS2V5KSkgewotICAgICAgICAgICAgICAgIGlmIChDRkdldFR5cGVJRChidW5k
bGVFeGVjdXRhYmxlKSA9PSBDRlN0cmluZ0dldFR5cGVJRCgpKQotICAgICAgICAgICAgICAgICAg
ICBuYW1lID0gcmVpbnRlcnByZXRfY2FzdDxDRlN0cmluZ1JlZj4oYnVuZGxlRXhlY3V0YWJsZSk7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSNlbmRpZgotCi0gICAgICAgIHJldHVybiBuYW1l
OwotICAgIH0oKTsKLQotICAgIHJldHVybiBuYW1lOwotfQotCi1zdGF0aWMgU3RyaW5nIHN0b3Jh
Z2VEaXJlY3RvcnkoRFdPUkQgcGF0aElkZW50aWZpZXIpCi17Ci0gICAgVmVjdG9yPFVDaGFyPiBi
dWZmZXIoTUFYX1BBVEgpOwotICAgIGlmIChGQUlMRUQoU0hHZXRGb2xkZXJQYXRoVygwLCBwYXRo
SWRlbnRpZmllciB8IENTSURMX0ZMQUdfQ1JFQVRFLCAwLCAwLCBidWZmZXIuZGF0YSgpKSkpCi0g
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICBidWZmZXIucmVzaXplKHdjc2xlbihidWZmZXIu
ZGF0YSgpKSk7Ci0gICAgU3RyaW5nIGRpcmVjdG9yeSA9IFN0cmluZzo6YWRvcHQoV1RGTW92ZShi
dWZmZXIpKTsKLQotICAgIGRpcmVjdG9yeSA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkaXJl
Y3RvcnksICJBcHBsZSBDb21wdXRlclxcIiArIGJ1bmRsZU5hbWUoKSk7Ci0gICAgaWYgKCFtYWtl
QWxsRGlyZWN0b3JpZXMoZGlyZWN0b3J5KSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0g
ICAgcmV0dXJuIGRpcmVjdG9yeTsKLX0KLQotc3RhdGljIFN0cmluZyBjYWNoZWRTdG9yYWdlRGly
ZWN0b3J5KERXT1JEIHBhdGhJZGVudGlmaWVyKQotewotICAgIHN0YXRpYyBIYXNoTWFwPERXT1JE
LCBTdHJpbmc+IGRpcmVjdG9yaWVzOwotCi0gICAgSGFzaE1hcDxEV09SRCwgU3RyaW5nPjo6aXRl
cmF0b3IgaXQgPSBkaXJlY3Rvcmllcy5maW5kKHBhdGhJZGVudGlmaWVyKTsKLSAgICBpZiAoaXQg
IT0gZGlyZWN0b3JpZXMuZW5kKCkpCi0gICAgICAgIHJldHVybiBpdC0+dmFsdWU7Ci0KLSAgICBT
dHJpbmcgZGlyZWN0b3J5ID0gc3RvcmFnZURpcmVjdG9yeShwYXRoSWRlbnRpZmllcik7Ci0gICAg
ZGlyZWN0b3JpZXMuYWRkKHBhdGhJZGVudGlmaWVyLCBkaXJlY3RvcnkpOwotCi0gICAgcmV0dXJu
IGRpcmVjdG9yeTsKLX0KLQotc3RhdGljIFN0cmluZyBnZW5lcmF0ZVRlbXBvcmFyeVBhdGgoY29u
c3QgRnVuY3Rpb248Ym9vbChjb25zdCBTdHJpbmcmKT4mIGFjdGlvbikKLXsKLSAgICB3Y2hhcl90
IHRlbXBQYXRoW01BWF9QQVRIXTsKLSAgICBpbnQgdGVtcFBhdGhMZW5ndGggPSA6OkdldFRlbXBQ
YXRoVyhXVEZfQVJSQVlfTEVOR1RIKHRlbXBQYXRoKSwgdGVtcFBhdGgpOwotICAgIGlmICh0ZW1w
UGF0aExlbmd0aCA8PSAwIHx8IHRlbXBQYXRoTGVuZ3RoID4gV1RGX0FSUkFZX0xFTkdUSCh0ZW1w
UGF0aCkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIFN0cmluZyBwcm9wb3NlZFBh
dGg7Ci0gICAgZG8gewotICAgICAgICB3Y2hhcl90IHRlbXBGaWxlW10gPSBMIlhYWFhYWFhYLnRt
cCI7IC8vIFVzZSA4LjMgc3R5bGUgbmFtZSAobW9yZSBjaGFyYWN0ZXJzIGFyZW4ndCBoZWxwZnVs
IGR1ZSB0byA4LjMgc2hvcnQgZmlsZSBuYW1lcykKLSAgICAgICAgY29uc3QgaW50IHJhbmRvbVBh
cnRMZW5ndGggPSA4OwotICAgICAgICBjcnlwdG9ncmFwaGljYWxseVJhbmRvbVZhbHVlcyh0ZW1w
RmlsZSwgcmFuZG9tUGFydExlbmd0aCAqIHNpemVvZih3Y2hhcl90KSk7Ci0KLSAgICAgICAgLy8g
TGltaXQgdG8gdmFsaWQgZmlsZXN5c3RlbSBjaGFyYWN0ZXJzLCBhbHNvIGV4Y2x1ZGluZyBvdGhl
cnMgdGhhdCBjb3VsZCBiZSBwcm9ibGVtYXRpYywgbGlrZSBwdW5jdHVhdGlvbi4KLSAgICAgICAg
Ly8gZG9uJ3QgaW5jbHVkZSBib3RoIHVwcGVyIGFuZCBsb3dlcmNhc2Ugc2luY2UgV2luZG93cyBm
aWxlIHN5c3RlbXMgYXJlIHR5cGljYWxseSBub3QgY2FzZSBzZW5zaXRpdmUuCi0gICAgICAgIGNv
bnN0IGNoYXIgdmFsaWRDaGFyc1tdID0gIjAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2
d3h5eiI7Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmFuZG9tUGFydExlbmd0aDsgKytp
KQotICAgICAgICAgICAgdGVtcEZpbGVbaV0gPSB2YWxpZENoYXJzW3RlbXBGaWxlW2ldICUgKHNp
emVvZih2YWxpZENoYXJzKSAtIDEpXTsKLQotICAgICAgICBBU1NFUlQod2NzbGVuKHRlbXBGaWxl
KSA9PSBXVEZfQVJSQVlfTEVOR1RIKHRlbXBGaWxlKSAtIDEpOwotCi0gICAgICAgIHByb3Bvc2Vk
UGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChudWxsVGVybWluYXRlZFdDaGFyVG9TdHJp
bmcodGVtcFBhdGgpLCBudWxsVGVybWluYXRlZFdDaGFyVG9TdHJpbmcodGVtcEZpbGUpKTsKLSAg
ICAgICAgaWYgKHByb3Bvc2VkUGF0aC5pc0VtcHR5KCkpCi0gICAgICAgICAgICBicmVhazsKLSAg
ICB9IHdoaWxlICghYWN0aW9uKHByb3Bvc2VkUGF0aCkpOwotCi0gICAgcmV0dXJuIHByb3Bvc2Vk
UGF0aDsKLX0KLQotU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYsIFBsYXRm
b3JtRmlsZUhhbmRsZSYgaGFuZGxlKQotewotICAgIGhhbmRsZSA9IElOVkFMSURfSEFORExFX1ZB
TFVFOwotCi0gICAgU3RyaW5nIHByb3Bvc2VkUGF0aCA9IGdlbmVyYXRlVGVtcG9yYXJ5UGF0aChb
JmhhbmRsZV0oY29uc3QgU3RyaW5nJiBwcm9wb3NlZFBhdGgpIHsKLSAgICAgICAgLy8gdXNlIENS
RUFURV9ORVcgdG8gYXZvaWQgb3ZlcndyaXRpbmcgYW4gZXhpc3RpbmcgZmlsZSB3aXRoIHRoZSBz
YW1lIG5hbWUKLSAgICAgICAgaGFuZGxlID0gOjpDcmVhdGVGaWxlVyhzdHJpbmdUb051bGxUZXJt
aW5hdGVkV0NoYXIocHJvcG9zZWRQYXRoKS5kYXRhKCksIEdFTkVSSUNfUkVBRCB8IEdFTkVSSUNf
V1JJVEUsIDAsIDAsIENSRUFURV9ORVcsIEZJTEVfQVRUUklCVVRFX05PUk1BTCwgMCk7Ci0KLSAg
ICAgICAgcmV0dXJuIGlzSGFuZGxlVmFsaWQoaGFuZGxlKSB8fCBHZXRMYXN0RXJyb3IoKSA9PSBF
UlJPUl9BTFJFQURZX0VYSVNUUzsKLSAgICB9KTsKLQotICAgIGlmICghaXNIYW5kbGVWYWxpZCho
YW5kbGUpKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICByZXR1cm4gcHJvcG9zZWRQ
YXRoOwotfQotCi1QbGF0Zm9ybUZpbGVIYW5kbGUgb3BlbkZpbGUoY29uc3QgU3RyaW5nJiBwYXRo
LCBGaWxlT3Blbk1vZGUgbW9kZSkKLXsKLSAgICBEV09SRCBkZXNpcmVkQWNjZXNzID0gMDsKLSAg
ICBEV09SRCBjcmVhdGlvbkRpc3Bvc2l0aW9uID0gMDsKLSAgICBEV09SRCBzaGFyZU1vZGUgPSAw
OwotICAgIHN3aXRjaCAobW9kZSkgewotICAgIGNhc2UgRmlsZU9wZW5Nb2RlOjpSZWFkOgotICAg
ICAgICBkZXNpcmVkQWNjZXNzID0gR0VORVJJQ19SRUFEOwotICAgICAgICBjcmVhdGlvbkRpc3Bv
c2l0aW9uID0gT1BFTl9FWElTVElORzsKLSAgICAgICAgc2hhcmVNb2RlID0gRklMRV9TSEFSRV9S
RUFEOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEZpbGVPcGVuTW9kZTo6V3JpdGU6Ci0gICAg
ICAgIGRlc2lyZWRBY2Nlc3MgPSBHRU5FUklDX1dSSVRFOwotICAgICAgICBjcmVhdGlvbkRpc3Bv
c2l0aW9uID0gQ1JFQVRFX0FMV0FZUzsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotCi0gICAgU3RyaW5nIGRlc3RpbmF0
aW9uID0gcGF0aDsKLSAgICByZXR1cm4gQ3JlYXRlRmlsZShzdHJpbmdUb051bGxUZXJtaW5hdGVk
V0NoYXIoZGVzdGluYXRpb24pLmRhdGEoKSwgZGVzaXJlZEFjY2Vzcywgc2hhcmVNb2RlLCAwLCBj
cmVhdGlvbkRpc3Bvc2l0aW9uLCBGSUxFX0FUVFJJQlVURV9OT1JNQUwsIDApOwotfQotCi12b2lk
IGNsb3NlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKLXsKLSAgICBpZiAoaXNIYW5k
bGVWYWxpZChoYW5kbGUpKSB7Ci0gICAgICAgIDo6Q2xvc2VIYW5kbGUoaGFuZGxlKTsKLSAgICAg
ICAgaGFuZGxlID0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKLSAgICB9Ci19Ci0KLWxvbmcg
bG9uZyBzZWVrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0
LCBGaWxlU2Vla09yaWdpbiBvcmlnaW4pCi17Ci0gICAgRFdPUkQgbW92ZU1ldGhvZCA9IEZJTEVf
QkVHSU47Ci0KLSAgICBpZiAob3JpZ2luID09IEZpbGVTZWVrT3JpZ2luOjpDdXJyZW50KQotICAg
ICAgICBtb3ZlTWV0aG9kID0gRklMRV9DVVJSRU5UOwotICAgIGVsc2UgaWYgKG9yaWdpbiA9PSBG
aWxlU2Vla09yaWdpbjo6RW5kKQotICAgICAgICBtb3ZlTWV0aG9kID0gRklMRV9FTkQ7Ci0KLSAg
ICBMQVJHRV9JTlRFR0VSIGxhcmdlT2Zmc2V0OwotICAgIGxhcmdlT2Zmc2V0LlF1YWRQYXJ0ID0g
b2Zmc2V0OwotCi0gICAgbGFyZ2VPZmZzZXQuTG93UGFydCA9IFNldEZpbGVQb2ludGVyKGhhbmRs
ZSwgbGFyZ2VPZmZzZXQuTG93UGFydCwgJmxhcmdlT2Zmc2V0LkhpZ2hQYXJ0LCBtb3ZlTWV0aG9k
KTsKLQotICAgIGlmIChsYXJnZU9mZnNldC5Mb3dQYXJ0ID09IElOVkFMSURfU0VUX0ZJTEVfUE9J
TlRFUiAmJiBHZXRMYXN0RXJyb3IoKSAhPSBOT19FUlJPUikKLSAgICAgICAgcmV0dXJuIC0xOwot
Ci0gICAgcmV0dXJuIGxhcmdlT2Zmc2V0LlF1YWRQYXJ0OwotfQotCi1pbnQgd3JpdGVUb0ZpbGUo
UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkK
LXsKLSAgICBpZiAoIWlzSGFuZGxlVmFsaWQoaGFuZGxlKSkKLSAgICAgICAgcmV0dXJuIC0xOwot
Ci0gICAgRFdPUkQgYnl0ZXNXcml0dGVuOwotICAgIGJvb2wgc3VjY2VzcyA9IFdyaXRlRmlsZSho
YW5kbGUsIGRhdGEsIGxlbmd0aCwgJmJ5dGVzV3JpdHRlbiwgMCk7Ci0KLSAgICBpZiAoIXN1Y2Nl
c3MpCi0gICAgICAgIHJldHVybiAtMTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihieXRl
c1dyaXR0ZW4pOwotfQotCi1pbnQgcmVhZEZyb21GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5k
bGUsIGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCi17Ci0gICAgaWYgKCFpc0hhbmRsZVZhbGlkKGhh
bmRsZSkpCi0gICAgICAgIHJldHVybiAtMTsKLQotICAgIERXT1JEIGJ5dGVzUmVhZDsKLSAgICBi
b29sIHN1Y2Nlc3MgPSA6OlJlYWRGaWxlKGhhbmRsZSwgZGF0YSwgbGVuZ3RoLCAmYnl0ZXNSZWFk
LCAwKTsKLQotICAgIGlmICghc3VjY2VzcykKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIHJldHVy
biBzdGF0aWNfY2FzdDxpbnQ+KGJ5dGVzUmVhZCk7Ci19Ci0KLWJvb2wgaGFyZExpbmtPckNvcHlG
aWxlKGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uKQotewot
ICAgIHJldHVybiAhITo6Q29weUZpbGUoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKHNvdXJj
ZSkuZGF0YSgpLCBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoZGVzdGluYXRpb24pLmRhdGEo
KSwgVFJVRSk7Ci19Ci0KLVN0cmluZyBsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3Rvcnko
KQotewotICAgIHJldHVybiBjYWNoZWRTdG9yYWdlRGlyZWN0b3J5KENTSURMX0xPQ0FMX0FQUERB
VEEpOwotfQotCi1TdHJpbmcgcm9hbWluZ1VzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKQot
ewotICAgIHJldHVybiBjYWNoZWRTdG9yYWdlRGlyZWN0b3J5KENTSURMX0FQUERBVEEpOwotfQot
Ci1WZWN0b3I8U3RyaW5nPiBsaXN0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBj
b25zdCBTdHJpbmcmIGZpbHRlcikKLXsKLSAgICBWZWN0b3I8U3RyaW5nPiBlbnRyaWVzOwotCi0g
ICAgUGF0aFdhbGtlciB3YWxrZXIoZGlyZWN0b3J5LCBmaWx0ZXIpOwotICAgIGlmICghd2Fsa2Vy
LmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIGVudHJpZXM7Ci0KLSAgICBkbyB7Ci0gICAgICAg
IGlmICh3YWxrZXIuZGF0YSgpLmR3RmlsZUF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9ESVJF
Q1RPUlkKLSAgICAgICAgICAgICYmICghd2NzY21wKHdhbGtlci5kYXRhKCkuY0ZpbGVOYW1lLCBM
Ii4iKSB8fCAhd2NzY21wKHdhbGtlci5kYXRhKCkuY0ZpbGVOYW1lLCBMIi4uIikpKQotICAgICAg
ICAgICAgY29udGludWU7Ci0KLSAgICAgICAgZW50cmllcy5hcHBlbmQoZGlyZWN0b3J5ICsgIlxc
IiArIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPih3YWxrZXIuZGF0YSgpLmNGaWxlTmFt
ZSkpOwotICAgIH0gd2hpbGUgKHdhbGtlci5zdGVwKCkpOwotCi0gICAgcmV0dXJuIGVudHJpZXM7
Ci19Ci0KLWJvb2wgZ2V0Vm9sdW1lRnJlZVNwYWNlKGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90JikK
LXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotT3B0aW9u
YWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0IENTdHJpbmcmIGZzRmlsZSkKLXsKLSAg
ICBhdXRvIGhhbmRsZSA9IG9wZW5GaWxlKGZzRmlsZS5kYXRhKCksIEZpbGVPcGVuTW9kZTo6UmVh
ZCk7Ci0gICAgaWYgKCFpc0hhbmRsZVZhbGlkKGhhbmRsZSkpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7Ci0KLSAgICBCWV9IQU5ETEVfRklMRV9JTkZPUk1BVElPTiBmaWxlSW5mb3JtYXRp
b24gPSB7IH07Ci0gICAgaWYgKCE6OkdldEZpbGVJbmZvcm1hdGlvbkJ5SGFuZGxlKGhhbmRsZSwg
JmZpbGVJbmZvcm1hdGlvbikpIHsKLSAgICAgICAgY2xvc2VGaWxlKGhhbmRsZSk7Ci0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgfQotCi0gICAgY2xvc2VGaWxlKGhhbmRsZSk7Ci0K
LSAgICByZXR1cm4gZmlsZUluZm9ybWF0aW9uLmR3Vm9sdW1lU2VyaWFsTnVtYmVyOwotfQotCi1T
dHJpbmcgcmVhbFBhdGgoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKLXsKLSAgICByZXR1cm4gZ2V0
RmluYWxQYXRoTmFtZShmaWxlUGF0aCk7Ci19Ci0KLVN0cmluZyBjcmVhdGVUZW1wb3JhcnlEaXJl
Y3RvcnkoKQotewotICAgIHJldHVybiBnZW5lcmF0ZVRlbXBvcmFyeVBhdGgoW10oY29uc3QgU3Ry
aW5nJiBwcm9wb3NlZFBhdGgpIHsKLSAgICAgICAgcmV0dXJuIG1ha2VBbGxEaXJlY3Rvcmllcyhw
cm9wb3NlZFBhdGgpOwotICAgIH0pOwotfQotCi1ib29sIGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5
KGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5UGF0aCkKLXsKLSAgICBTSEZJTEVPUFNUUlVDVCBkZWxl
dGVPcGVyYXRpb24gPSB7Ci0gICAgICAgIG51bGxwdHIsCi0gICAgICAgIEZPX0RFTEVURSwKLSAg
ICAgICAgc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGRpcmVjdG9yeVBhdGgpLmRhdGEoKSwK
LSAgICAgICAgTCIiLAotICAgICAgICBGT0ZfTk9DT05GSVJNQVRJT04gfCBGT0ZfTk9FUlJPUlVJ
IHwgRk9GX1NJTEVOVCwKLSAgICAgICAgZmFsc2UsCi0gICAgICAgIDAsCi0gICAgICAgIEwiIgot
ICAgIH07Ci0gICAgcmV0dXJuICFTSEZpbGVPcGVyYXRpb24oJmRlbGV0ZU9wZXJhdGlvbik7Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIEZpbGVTeXN0ZW0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXRoV2Fsa2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXRoV2Fsa2VyLmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZjIwNDA3YjFjZmVhNjI0ZjNhMTU2OWE4ZmQ2NzY4YTVkZWJlZDM2My4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vUGF0aFdhbGtlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MiAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlBhdGhX
YWxrZXIuaCIKLQotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotI2luY2x1ZGUgPHd0
Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LVBhdGhXYWxrZXI6OlBhdGhXYWxrZXIoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIGNvbnN0IFN0
cmluZyYgcGF0dGVybikKLXsKLSAgICBTdHJpbmcgcGF0aCA9IGRpcmVjdG9yeSArICJcXCIgKyBw
YXR0ZXJuOwotICAgIG1faGFuZGxlID0gOjpGaW5kRmlyc3RGaWxlVyhzdHJpbmdUb051bGxUZXJt
aW5hdGVkV0NoYXIocGF0aCkuZGF0YSgpLCAmbV9kYXRhKTsKLX0KLQotUGF0aFdhbGtlcjo6flBh
dGhXYWxrZXIoKQotewotICAgIGlmICghaXNWYWxpZCgpKQotICAgICAgICByZXR1cm47Ci0gICAg
OjpGaW5kQ2xvc2UobV9oYW5kbGUpOwotfQotCi1ib29sIFBhdGhXYWxrZXI6OnN0ZXAoKQotewot
ICAgIHJldHVybiA6OkZpbmROZXh0RmlsZVcobV9oYW5kbGUsICZtX2RhdGEpOwotfQotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vUGF0aFdhbGtlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BhdGhXYWxrZXIu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmM1OWQ2NzMxODExYjhjYTE1ODdhNGEx
MmE3ZGExZTFhMTU5M2Q4NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGF0aFdhbGtlci5oCisrKyAvZGV2
L251bGwKQEAgLTEsNDggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgPFdpbmRv
d3MuaD4KLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFBhdGhXYWxrZXIgewotICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFBhdGhXYWxrZXIpOwotcHVibGljOgotICAgIFBhdGhXYWxrZXIo
Y29uc3QgV1RGOjpTdHJpbmcmIGRpcmVjdG9yeSwgY29uc3QgV1RGOjpTdHJpbmcmIHBhdHRlcm4p
OwotICAgIH5QYXRoV2Fsa2VyKCk7Ci0KLSAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVy
biBtX2hhbmRsZSAhPSBJTlZBTElEX0hBTkRMRV9WQUxVRTsgfQotICAgIGNvbnN0IFdJTjMyX0ZJ
TkRfREFUQVcmIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KLQotICAgIGJvb2wgc3Rl
cCgpOwotCi1wcml2YXRlOgotICAgIEhBTkRMRSBtX2hhbmRsZTsKLSAgICBXSU4zMl9GSU5EX0RB
VEFXIG1fZGF0YTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVEQi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51REIuY3BwCmluZGV4IDllNmU0YzUy
ZDdiOTgzOGExZjA3YmRkNTlmNDA5ZDgxNjVmZTU2NjYuLmU1NzMwYjMwY2NmM2YwM2VlZmRmZjlh
MzMxYzA4ZWQwZTIyZTU4YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9TZWFyY2hQb3B1cE1lbnVEQi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L1NlYXJjaFBvcHVwTWVudURCLmNwcApAQCAtMjUsOSArMjUsOSBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIlNlYXJjaFBvcHVwTWVudURCLmgiCiAKLSNpbmNsdWRlICJGaWxlU3lz
dGVtLmgiCiAjaW5jbHVkZSAiU1FMaXRlRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIlNRTGl0ZVRy
YW5zYWN0aW9uLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhl
bWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAppbmRleCA3
NmM5YzVjNzhkNTZkM2U4ZDk3ZDQyMWY0ZGZhYTRhYjFiZDllY2MwLi5jNGZhMzU2NzBiOTU0NzY3
NmI3YzRmYjlhODEyYjNkNmU2ZWM5OWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZS5jcHAKQEAgLTI1LDcgKzI1LDYgQEAKICNpbmNsdWRlICJDb250cm9sU3RhdGVzLmgi
CiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJGaWxlTGlzdC5oIgotI2luY2x1ZGUg
IkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIKICNpbmNsdWRlICJG
bG9hdFJvdW5kZWRSZWN0LmgiCiAjaW5jbHVkZSAiRm9jdXNDb250cm9sbGVyLmgiCkBAIC00NSw2
ICs0NCw3IEBACiAjaW5jbHVkZSAiU3BpbkJ1dHRvbkVsZW1lbnQuaCIKICNpbmNsdWRlICJTdHJp
bmdUcnVuY2F0b3IuaCIKICNpbmNsdWRlICJUZXh0Q29udHJvbElubmVyRWxlbWVudHMuaCIKKyNp
bmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgogCiAjaWYgRU5BQkxFKE1FVEVSX0VMRU1FTlQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lR3RrLmNwcAppbmRleCBiNjk2ZWFjOGZiMTA1ZTJiNzA5NjIwNjk0NzM5NzNl
MTNlYjlmYjY2Li5iMjU5NjZjYjUzMzI3Njg1OWVlODE5NjcxYWQyNWZkZjc3ZTAzZWEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUd0ay5jcHAKQEAgLTI3LDcgKzI3
LDYgQEAKIAogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKICNpbmNsdWRlICJGaWxlTGlz
dC5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJGbG9hdFJvdW5kZWRSZWN0
LmgiCiAjaW5jbHVkZSAiRm9udERlc2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiR1JlZlB0ckd0ay5o
IgpAQCAtNTUsNiArNTQsNyBAQAogI2luY2x1ZGUgPGdkay9nZGsuaD4KICNpbmNsdWRlIDxnbGli
Lmg+CiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAj
aW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lV2luLmNwcAppbmRleCBlZWI5OTg1ZTYyZjVjOWEzNDgyNDNlOGRk
ZTllY2NjMGE5YmRiZmI1Li4yMTk2NTdlMWYyNGFhYmEwNTgyNWEyYTYyYjA4MDRjN2ZiYjNmMzM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHAKQEAgLTI0
LDcgKzI0LDYgQEAKIAogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKICNpbmNsdWRlICJF
bGVtZW50LmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkZvbnRNZXRyaWNz
LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZVNlbGVjdGlvbi5oIgpAQCAt
MzgsNiArMzcsNyBAQAogI2luY2x1ZGUgIlN5c3RlbUluZm8uaCIKICNpbmNsdWRlICJVc2VyQWdl
bnRTdHlsZVNoZWV0cy5oIgogI2luY2x1ZGUgIldlYkNvcmVCdW5kbGVXaW4uaCIKKyNpbmNsdWRl
IDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9Tb2Z0TGlua2luZy5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC93aW4vV0No
YXJTdHJpbmdFeHRyYXMuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKaW5kZXggNjBlZWI4
Y2MyYzBmNDEyY2EyYmNlZDk4MmFlOTI3ZmZiMWQ2YTQ2OC4uMWFmNDM3ODhmZmZiYWFhOTEyZTFh
ZDk3YmJkOThiMTcyZGUzZjBlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKQEAgLTI4
LDcgKzI4LDYgQEAKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAotI2luY2x1ZGUgIkZp
bGVTeXN0ZW0uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUmVnaXN0cmF0aW9u
U3RvcmUuaCIKICNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZS5oIgpAQCAtMzksNiArMzgsNyBAQAog
I2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5k
bGVyLmg+CiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkQ29waWVyLmg+CisjaW5jbHVkZSA8d3Rm
L0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcApp
bmRleCBjMjEwZWNhYzhhNDc0NmU0MTQwZDQwNjQyZTBjMzcwYTBlNWE3ZWQwLi4xMDVkZDAyODg2
MDc1MDcwOTc3Y2FlODdkMmM0YTRmNDBiYmZlZmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3Rl
bnRTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcApAQCAtMzMsOSAr
MzMsOSBAQAogI2luY2x1ZGUgIlJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oIgog
I2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvRmlsZU1vbml0b3IuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0tleWVkQ29kaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRC
dWZmZXIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9SdW5M
b29wLmg+CiAjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5oCmluZGV4IDc1ZDMxYTYxYTRm
NzQyZjM4N2Y5YjVlYTJkNGY2MDI5NDM2MTI4N2MuLmViNzk0NDcyNTk1YjU2ZWRkNjIwYmUyNTc2
ZWQyMTgxODA1ZDBkODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0RhdGFUYXNrQmxvYi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0RhdGFUYXNrQmxvYi5oCkBAIC0zMyw3ICszMyw3IEBACiAKICNpbmNsdWRlICJOZXR3
b3JrRGF0YVRhc2suaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTdHJlYW1DbGllbnQuaD4KLSNp
bmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBc3luY0ZpbGVTdHJlYW07CkBAIC0xMTMs
NyArMTEzLDcgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX3NpemVJdGVtQ291bnQgeyAwIH07
CiAgICAgdW5zaWduZWQgbV9yZWFkSXRlbUNvdW50IHsgMCB9OwogICAgIGJvb2wgbV9maWxlT3Bl
bmVkIHsgZmFsc2UgfTsKLSAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5k
bGUgbV9kb3dubG9hZEZpbGUgeyBXZWJDb3JlOjpGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1G
aWxlSGFuZGxlIH07CisgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIG1fZG93bmxv
YWRGaWxlIHsgRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSB9OwogCiAgICAg
VmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBtX2ZpbGVSZWZl
cmVuY2VzOwogICAgIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiBtX3NhbmRib3hFeHRlbnNpb247
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmlu
ZGV4IDYwNzIwMTEyOWJmZjA3MjZkNWU0NWE1M2JjNmZjMTMxYWZiZmNkNDIuLjBiYjU3NWE5Mjdj
YWVmMDBkOWUwZWU0NjA1ODM0NzdjNzFiYzU2NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0xNjE4LDcgKzE2MTgsNyBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpzZXRDYWNoZU1vZGVsKENhY2hlTW9kZWwgY2FjaGVNb2RlbCkKICAg
ICB1bnNpZ25lZCB1cmxDYWNoZU1lbW9yeUNhcGFjaXR5ID0gMDsKICAgICB1aW50NjRfdCB1cmxD
YWNoZURpc2tDYXBhY2l0eSA9IDA7CiAgICAgdWludDY0X3QgZGlza0ZyZWVTaXplID0gMDsKLSAg
ICBpZiAoV2ViQ29yZTo6RmlsZVN5c3RlbTo6Z2V0Vm9sdW1lRnJlZVNwYWNlKG1fZGlza0NhY2hl
RGlyZWN0b3J5LCBkaXNrRnJlZVNpemUpKSB7CisgICAgaWYgKEZpbGVTeXN0ZW06OmdldFZvbHVt
ZUZyZWVTcGFjZShtX2Rpc2tDYWNoZURpcmVjdG9yeSwgZGlza0ZyZWVTaXplKSkgewogICAgICAg
ICAvLyBBcyBhIGZ1ZGdlIGZhY3RvciwgdXNlIDEwMDAgaW5zdGVhZCBvZiAxMDI0LCBpbiBjYXNl
IHRoZSByZXBvcnRlZCBieXRlCiAgICAgICAgIC8vIGNvdW50IGRvZXNuJ3QgYWxpZ24gZXhhY3Rs
eSB0byBhIG1lZ2FieXRlIGJvdW5kYXJ5LgogICAgICAgICBkaXNrRnJlZVNpemUgLz0gS0IgKiAx
MDAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VFbmdpbmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9D
YWNoZVN0b3JhZ2VFbmdpbmUuY3BwCmluZGV4IGYxN2ZkOWY5MmJlNWQyYTUwNTQ1YzA3OTllMzdk
OWFlMGNmM2VmYmQuLjFlM2UxMWIxOThjMzUyNzIwYTAzZjU3OWQyOTk0N2Y5YmVlZmRiNWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdl
RW5naW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hl
U3RvcmFnZUVuZ2luZS5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgU3RyaW5nIEVuZ2luZTo6Y2FjaGVz
Um9vdFBhdGgoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4pCiAgICAgICAgIHJl
dHVybiB7IH07CiAKICAgICBLZXkga2V5KG9yaWdpbi50b3BPcmlnaW4udG9TdHJpbmcoKSwgb3Jp
Z2luLmNsaWVudE9yaWdpbi50b1N0cmluZygpLCB7IH0sIHsgfSwgc2FsdCgpKTsKLSAgICByZXR1
cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJvb3RQYXRo
KCksIGtleS5oYXNoQXNTdHJpbmcoKSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChyb290UGF0aCgpLCBrZXkuaGFzaEFzU3RyaW5nKCkpOwogfQogCiBF
bmdpbmU6On5FbmdpbmUoKQpAQCAtMjkxLDkgKzI5MSw5IEBAIHZvaWQgRW5naW5lOjppbml0aWFs
aXplKENvbXBsZXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKQogICAgIGlmICghc2hvdWxkQ29tcHV0
ZVNhbHQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0cmluZyBzYWx0UGF0aCA9IFdlYkNvcmU6
OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3Jvb3RQYXRoLCAic2FsdCJf
cyk7CisgICAgU3RyaW5nIHNhbHRQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KG1fcm9vdFBhdGgsICJzYWx0Il9zKTsKICAgICBtX2lvUXVldWUtPmRpc3BhdGNoKFt0
aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBzYWx0UGF0aCA9IFdURk1vdmUoc2Fs
dFBhdGgpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6bWFrZUFs
bERpcmVjdG9yaWVzKG1fcm9vdFBhdGgpOworICAgICAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGly
ZWN0b3JpZXMobV9yb290UGF0aCk7CiAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChb
dGhpcywgd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgc2FsdCA9IHJlYWRPck1ha2VTYWx0
KHNhbHRQYXRoKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzgzLDkgKzM4Myw5IEBAIHZvaWQgRW5naW5lOjp3cml0
ZUZpbGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgTmV0d29ya0NhY2hlOjpEYXRhJiYgZGF0YSwg
V2ViQ29yCiAgICAgbV9wZW5kaW5nV3JpdGVDYWxsYmFja3MuYWRkKCsrbV9wZW5kaW5nQ2FsbGJh
Y2tzQ291bnRlciwgV1RGTW92ZShjYWxsYmFjaykpOwogICAgIG1faW9RdWV1ZS0+ZGlzcGF0Y2go
W3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGlkZW50aWZpZXIgPSBtX3BlbmRp
bmdDYWxsYmFja3NDb3VudGVyLCBkYXRhID0gV1RGTW92ZShkYXRhKSwgZmlsZW5hbWUgPSBmaWxl
bmFtZS5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKIAotICAgICAgICBTdHJpbmcgZGlyZWN0
b3J5UGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUoZmlsZW5hbWUpOwot
ICAgICAgICBpZiAoIVdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZGlyZWN0b3J5UGF0
aCkpCi0gICAgICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMo
ZGlyZWN0b3J5UGF0aCk7CisgICAgICAgIFN0cmluZyBkaXJlY3RvcnlQYXRoID0gRmlsZVN5c3Rl
bTo6ZGlyZWN0b3J5TmFtZShmaWxlbmFtZSk7CisgICAgICAgIGlmICghRmlsZVN5c3RlbTo6Zmls
ZUV4aXN0cyhkaXJlY3RvcnlQYXRoKSkKKyAgICAgICAgICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxE
aXJlY3RvcmllcyhkaXJlY3RvcnlQYXRoKTsKIAogICAgICAgICBhdXRvIGNoYW5uZWwgPSBJT0No
YW5uZWw6Om9wZW4oZmlsZW5hbWUsIElPQ2hhbm5lbDo6VHlwZTo6Q3JlYXRlKTsKICAgICAgICAg
Y2hhbm5lbC0+d3JpdGUoMCwgZGF0YSwgbnVsbHB0ciwgW3RoaXMsIHdlYWtUaGlzID0gV1RGTW92
ZSh3ZWFrVGhpcyksIGlkZW50aWZpZXJdKGludCBlcnJvcikgbXV0YWJsZSB7CkBAIC00NDUsNyAr
NDQ1LDcgQEAgdm9pZCBFbmdpbmU6OnJlbW92ZUZpbGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9pb1F1ZXVlLT5kaXNwYXRjaChbZmlsZW5hbWUgPSBm
aWxlbmFtZS5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6ZGVsZXRlRmlsZShmaWxlbmFtZSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0
ZUZpbGUoZmlsZW5hbWUpOwogICAgIH0pOwogfQogCkBAIC00ODcsOCArNDg3LDggQEAgdm9pZCBF
bmdpbmU6OmZldGNoRW50cmllcyhib29sIHNob3VsZENvbXB1dGVTaXplLCBXVEY6OkNvbXBsZXRp
b25IYW5kbGVyPHZvaWQoVmUKICAgICB9CiAKICAgICBhdXRvIHRhc2tDb3VudGVyID0gUmVhZE9y
aWdpbnNUYXNrQ291bnRlcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAg
ICBmb3IgKGF1dG8mIGZvbGRlclBhdGggOiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpsaXN0RGlyZWN0
b3J5KG1fcm9vdFBhdGgsICIqIikpIHsKLSAgICAgICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVt
OjpmaWxlSXNEaXJlY3RvcnkoZm9sZGVyUGF0aCwgV2ViQ29yZTo6RmlsZVN5c3RlbTo6U2hvdWxk
Rm9sbG93U3ltYm9saWNMaW5rczo6Tm8pKQorICAgIGZvciAoYXV0byYgZm9sZGVyUGF0aCA6IEZp
bGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobV9yb290UGF0aCwgIioiKSkgeworICAgICAgICBpZiAo
IUZpbGVTeXN0ZW06OmZpbGVJc0RpcmVjdG9yeShmb2xkZXJQYXRoLCBGaWxlU3lzdGVtOjpTaG91
bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpObykpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgQ2FjaGVzOjpyZXRyaWV2ZU9yaWdpbkZyb21EaXJlY3RvcnkoZm9sZGVyUGF0aCwgKm1faW9R
dWV1ZSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc2hvdWxkQ29tcHV0ZVNpemUs
IHRhc2tDb3VudGVyID0gdGFza0NvdW50ZXIuY29weVJlZigpXSAoYXV0byYmIG9yaWdpbikgbXV0
YWJsZSB7CiAgICAgICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtNTMxLDgg
KzUzMSw4IEBAIHZvaWQgRW5naW5lOjpjbGVhckFsbENhY2hlc0Zyb21EaXNrKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlCiAgICAgQVNTRVJUKFJ1bkxvb3A6Omlz
TWFpbigpKTsKIAogICAgIG1faW9RdWV1ZS0+ZGlzcGF0Y2goW3BhdGggPSBtX3Jvb3RQYXRoLmlz
b2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSgpIG11dGFibGUgewotICAgICAgICBmb3IgKGF1dG8mIGZpbGVuYW1lIDogV2ViQ29yZTo6
RmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShwYXRoLCAiKiIpKSB7Ci0gICAgICAgICAgICBpZiAo
V2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZUlzRGlyZWN0b3J5KGZpbGVuYW1lLCBXZWJDb3JlOjpG
aWxlU3lzdGVtOjpTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpObykpCisgICAgICAgIGZvciAo
YXV0byYgZmlsZW5hbWUgOiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KHBhdGgsICIqIikpIHsK
KyAgICAgICAgICAgIGlmIChGaWxlU3lzdGVtOjpmaWxlSXNEaXJlY3RvcnkoZmlsZW5hbWUsIEZp
bGVTeXN0ZW06OlNob3VsZEZvbGxvd1N5bWJvbGljTGlua3M6Ok5vKSkKICAgICAgICAgICAgICAg
ICBkZWxldGVEaXJlY3RvcnlSZWN1cnNpdmVseShmaWxlbmFtZSk7CiAgICAgICAgIH0KICAgICAg
ICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
QEAgLTU2Miw4ICs1NjIsOCBAQCB2b2lkIEVuZ2luZTo6Y2xlYXJDYWNoZXNGb3JPcmlnaW5Gcm9t
RGlzayhjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIG9yaQogCiAgICAgYXV0byBj
YWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CiAKLSAgICBmb3IgKGF1dG8mIGZvbGRlclBhdGggOiBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KG1fcm9vdFBhdGgsICIqIikpIHsKLSAgICAgICAg
aWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlSXNEaXJlY3RvcnkoZm9sZGVyUGF0aCwgV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6U2hvdWxkRm9sbG93U3ltYm9saWNMaW5rczo6Tm8pKQorICAgIGZv
ciAoYXV0byYgZm9sZGVyUGF0aCA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobV9yb290UGF0
aCwgIioiKSkgeworICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVJc0RpcmVjdG9yeShmb2xk
ZXJQYXRoLCBGaWxlU3lzdGVtOjpTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpObykpCiAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgQ2FjaGVzOjpyZXRyaWV2ZU9yaWdpbkZyb21EaXJl
Y3RvcnkoZm9sZGVyUGF0aCwgKm1faW9RdWV1ZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgb3JpZ2luLCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0
b3IuY29weVJlZigpLCBmb2xkZXJQYXRoXSAoT3B0aW9uYWw8V2ViQ29yZTo6Q2xpZW50T3JpZ2lu
PiYmIGZvbGRlck9yaWdpbikgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoIWZvbGRlck9yaWdp
bikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVT
dG9yYWdlRW5naW5lQ2FjaGVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcAppbmRleCAxOTEzNDcwY2RkMjIwY2UzYmU5
NzVkZjk5MDBlZjM1MGQwNzE3NjNjLi4xZjYwOGNmNTI1Zjk5NmIyNGVhNDExMzYwMGU4ZTI5Y2Iy
ODdjMjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0Nh
Y2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwCkBAIC00MiwxMiArNDIsMTIg
QEAgdXNpbmcgbmFtZXNwYWNlIE5ldHdvcmtDYWNoZTsKIAogc3RhdGljIGlubGluZSBTdHJpbmcg
Y2FjaGVzTGlzdEZpbGVuYW1lKGNvbnN0IFN0cmluZyYgY2FjaGVzUm9vdFBhdGgpCiB7Ci0gICAg
cmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChjYWNo
ZXNSb290UGF0aCwgImNhY2hlc2xpc3QiX3MpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoY2FjaGVzUm9vdFBhdGgsICJjYWNoZXNsaXN0Il9zKTsKIH0K
IAogc3RhdGljIGlubGluZSBTdHJpbmcgY2FjaGVzT3JpZ2luRmlsZW5hbWUoY29uc3QgU3RyaW5n
JiBjYWNoZXNSb290UGF0aCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNhY2hlc1Jvb3RQYXRoLCAib3JpZ2luIl9zKTsKKyAgICBy
ZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNhY2hlc1Jvb3RQYXRo
LCAib3JpZ2luIl9zKTsKIH0KIAogQ2FjaGVzOjp+Q2FjaGVzKCkKQEAgLTU4LDcgKzU4LDcgQEAg
Q2FjaGVzOjp+Q2FjaGVzKCkKIHZvaWQgQ2FjaGVzOjpyZXRyaWV2ZU9yaWdpbkZyb21EaXJlY3Rv
cnkoY29uc3QgU3RyaW5nJiBmb2xkZXJQYXRoLCBXb3JrUXVldWUmIHF1ZXVlLCBXVEY6OkNvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6Q2xpZW50T3JpZ2luPiYmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBxdWV1ZS5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgZmlsZW5hbWUgPSBjYWNoZXNPcmlnaW5G
aWxlbmFtZShmb2xkZXJQYXRoKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKCFXZWJDb3JlOjpG
aWxlU3lzdGVtOjpmaWxlRXhpc3RzKGZpbGVuYW1lKSkgeworICAgICAgICBpZiAoIUZpbGVTeXN0
ZW06OmZpbGVFeGlzdHMoZmlsZW5hbWUpKSB7CiAgICAgICAgICAgICBSdW5Mb29wOjptYWluKCku
ZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
KCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpudWxs
b3B0KTsKICAgICAgICAgICAgIH0pOwpAQCAtNDA4LDcgKzQwOCw3IEBAIHZvaWQgQ2FjaGVzOjpy
ZWFkQ2FjaGVzRnJvbURpc2soV1RGOjpGdW5jdGlvbjx2b2lkKEV4cGVjdGVkPFZlY3RvcjxDYWNo
ZT4sIEVycm9yCiAgICAgfQogCiAgICAgYXV0byBmaWxlbmFtZSA9IGNhY2hlc0xpc3RGaWxlbmFt
ZShtX3Jvb3RQYXRoKTsKLSAgICBpZiAoIVdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVFeGlzdHMo
ZmlsZW5hbWUpKSB7CisgICAgaWYgKCFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGZpbGVuYW1lKSkg
ewogICAgICAgICBjYWxsYmFjayhWZWN0b3I8Q2FjaGU+IHsgfSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZS5jcHAKaW5kZXggZmQyN2NmMDZmZTQzMWZkMzg0Y2EyZjNiN2U0OTFmNmZhYzFkZTA4
Ni4uYmE1YzhiMjMzODE2NWIyMzY1ZDA3NjUzYWViMTE4OGQ3NmY4YTY3ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcApAQCAt
MzIsMTMgKzMyLDEzIEBACiAjaW5jbHVkZSAiTmV0d29ya0NhY2hlU3RvcmFnZS5oIgogI2luY2x1
ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DYWNoZVZhbGlkYXRpb24u
aD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hU
VFBIZWFkZXJOYW1lcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTG93UG93ZXJNb2RlTm90aWZpZXIu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJl
c3BvbnNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KKyNpbmNsdWRlIDx3
dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KQEAgLTUxLDcg
KzUxLDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogbmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7CiAK
LXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOjpGaWxlU3lzdGVtOwordXNpbmcgbmFtZXNwYWNlIEZp
bGVTeXN0ZW07CiAKIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHJlc291cmNlVHlwZSgpCiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZUJsb2JTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlQmxvYlN0b3JhZ2UuY3BwCmluZGV4IGY3M2M1MGRhMTk0NzkzMzY1ZDZmNTFl
MDYxNDFiNTIzNzI3ZTcxZWUuLjk1MzhkYTY0MWI0Mjc0MDAyYjI3OWFkYWE4N2MxNTQyZDM2YTAy
N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlQmxvYlN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlQmxvYlN0b3JhZ2UuY3BwCkBAIC0yOCw4ICsyOCw4IEBACiAKICNp
bmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5oIgot
I2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5j
bHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1
ZGUgPHd0Zi9TSEExLmg+CiAKQEAgLTU3LDE1ICs1NywxNSBAQCB2b2lkIEJsb2JTdG9yYWdlOjpz
eW5jaHJvbml6ZSgpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBX
ZWJDb3JlOjpGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoYmxvYkRpcmVjdG9yeVBhdGgo
KSk7CisgICAgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKGJsb2JEaXJlY3RvcnlQYXRo
KCkpOwogCiAgICAgbV9hcHByb3hpbWF0ZVNpemUgPSAwOwogICAgIGF1dG8gYmxvYkRpcmVjdG9y
eSA9IGJsb2JEaXJlY3RvcnlQYXRoKCk7CiAgICAgdHJhdmVyc2VEaXJlY3RvcnkoYmxvYkRpcmVj
dG9yeSwgW3RoaXMsICZibG9iRGlyZWN0b3J5XShjb25zdCBTdHJpbmcmIG5hbWUsIERpcmVjdG9y
eUVudHJ5VHlwZSB0eXBlKSB7CiAgICAgICAgIGlmICh0eXBlICE9IERpcmVjdG9yeUVudHJ5VHlw
ZTo6RmlsZSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgYXV0byBwYXRoID0gV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGJsb2JEaXJlY3RvcnksIG5h
bWUpOwotICAgICAgICBhdXRvIGZpbGVQYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgICAgICBhdXRvIHBhdGggPSBGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoYmxvYkRpcmVjdG9yeSwgbmFtZSk7CisgICAgICAg
IGF1dG8gZmlsZVBhdGggPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0
aCk7CiAgICAgICAgIHN0cnVjdCBzdGF0IHN0YXQ7CiAgICAgICAgIDo6c3RhdChmaWxlUGF0aC5k
YXRhKCksICZzdGF0KTsKICAgICAgICAgLy8gTm8gY2xpZW50cyBsZWZ0IGZvciB0aGlzIGJsb2Iu
CkBAIC04MSw3ICs4MSw3IEBAIHZvaWQgQmxvYlN0b3JhZ2U6OnN5bmNocm9uaXplKCkKIFN0cmlu
ZyBCbG9iU3RvcmFnZTo6YmxvYlBhdGhGb3JIYXNoKGNvbnN0IFNIQTE6OkRpZ2VzdCYgaGFzaCkg
Y29uc3QKIHsKICAgICBhdXRvIGhhc2hBc1N0cmluZyA9IFNIQTE6OmhleERpZ2VzdChoYXNoKTsK
LSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KGJsb2JEaXJlY3RvcnlQYXRoKCksIFN0cmluZzo6ZnJvbVVURjgoaGFzaEFzU3RyaW5nKSk7Cisg
ICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChibG9iRGlyZWN0
b3J5UGF0aCgpLCBTdHJpbmc6OmZyb21VVEY4KGhhc2hBc1N0cmluZykpOwogfQogCiBCbG9iU3Rv
cmFnZTo6QmxvYiBCbG9iU3RvcmFnZTo6YWRkKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgRGF0
YSYgZGF0YSkKQEAgLTkzLDggKzkzLDggQEAgQmxvYlN0b3JhZ2U6OkJsb2IgQmxvYlN0b3JhZ2U6
OmFkZChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IERhdGEmIGRhdGEpCiAgICAgaWYgKGRhdGEu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4geyBkYXRhLCBoYXNoIH07CiAKLSAgICBhdXRvIGJs
b2JQYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGJs
b2JQYXRoRm9ySGFzaChoYXNoKSk7Ci0gICAgYXV0byBsaW5rUGF0aCA9IFdlYkNvcmU6OkZpbGVT
eXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKKyAgICBhdXRvIGJsb2JQYXRo
ID0gRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGJsb2JQYXRoRm9ySGFzaCho
YXNoKSk7CisgICAgYXV0byBsaW5rUGF0aCA9IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihwYXRoKTsKICAgICB1bmxpbmsobGlua1BhdGguZGF0YSgpKTsKIAogICAgIGJvb2wg
YmxvYkV4aXN0cyA9IGFjY2VzcyhibG9iUGF0aC5kYXRhKCksIEZfT0spICE9IC0xOwpAQCAtMTI3
LDcgKzEyNyw3IEBAIEJsb2JTdG9yYWdlOjpCbG9iIEJsb2JTdG9yYWdlOjpnZXQoY29uc3QgU3Ry
aW5nJiBwYXRoKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgYXV0
byBsaW5rUGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihwYXRoKTsKKyAgICBhdXRvIGxpbmtQYXRoID0gRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKHBhdGgpOwogICAgIGF1dG8gZGF0YSA9IG1hcEZpbGUobGlua1BhdGguZGF0YSgp
KTsKIAogICAgIHJldHVybiB7IGRhdGEsIGNvbXB1dGVTSEExKGRhdGEsIG1fc2FsdCkgfTsKQEAg
LTEzNyw3ICsxMzcsNyBAQCB2b2lkIEJsb2JTdG9yYWdlOjpyZW1vdmUoY29uc3QgU3RyaW5nJiBw
YXRoKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgYXV0byBsaW5r
UGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRo
KTsKKyAgICBhdXRvIGxpbmtQYXRoID0gRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKHBhdGgpOwogICAgIHVubGluayhsaW5rUGF0aC5kYXRhKCkpOwogfQogCkBAIC0xNDUsNyAr
MTQ1LDcgQEAgdW5zaWduZWQgQmxvYlN0b3JhZ2U6OnNoYXJlQ291bnQoY29uc3QgU3RyaW5nJiBw
YXRoKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgYXV0byBsaW5r
UGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRo
KTsKKyAgICBhdXRvIGxpbmtQYXRoID0gRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKHBhdGgpOwogICAgIHN0cnVjdCBzdGF0IHN0YXQ7CiAgICAgaWYgKDo6c3RhdChsaW5rUGF0
aC5kYXRhKCksICZzdGF0KSA8IDApCiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5jcHAKaW5k
ZXggOWUzMTg5NDNkN2M2MTM4Y2FhMWMxZGMzMGYzYTJmMzVmMzMwMjlmMi4uMWEzMmFhOWEwZTUz
YjQ2OTU3YWE4ZWIzYmIyMzg1NmYwYTg5OWYzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuY3BwCkBAIC0yNiw5ICsy
Niw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTmV0d29ya0NhY2hlRGF0YS5o
IgogCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8ZmNudGwuaD4K
ICNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaD4KKyNpbmNsdWRl
IDx3dGYvRmlsZVN5c3RlbS5oPgogCiAjaWYgIU9TKFdJTkRPV1MpCiAjaW5jbHVkZSA8c3lzL21t
YW4uaD4KQEAgLTE1Niw3ICsxNTYsNyBAQCBzdGF0aWMgU2FsdCBtYWtlU2FsdCgpCiBPcHRpb25h
bDxTYWx0PiByZWFkT3JNYWtlU2FsdChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAjaWYgIU9TKFdJ
TkRPV1MpCi0gICAgYXV0byBjcGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihwYXRoKTsKKyAgICBhdXRvIGNwYXRoID0gRmlsZVN5c3RlbTo6ZmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwogICAgIGF1dG8gZmQgPSBvcGVuKGNwYXRoLmRhdGEo
KSwgT19SRE9OTFksIDApOwogICAgIFNhbHQgc2FsdDsKICAgICBhdXRvIGJ5dGVzUmVhZCA9IHJl
YWQoZmQsIHNhbHQuZGF0YSgpLCBzYWx0LnNpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmNw
cAppbmRleCAyNWJlZjdmOTJlOGViMzY2YTk0ZjRiY2QzNzk4M2IxNmE5ZGUzNTA4Li5iMGIyZTcx
NWU2NWRkM2E5MTNjZjcwZDcwMzY1YTQ1MGJiZWI5OTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3Rl
bS5jcHAKQEAgLTI3LDggKzI3LDggQEAKICNpbmNsdWRlICJOZXR3b3JrQ2FjaGVGaWxlU3lzdGVt
LmgiCiAKICNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVt
Lmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3Rl
bS5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KIApAQCAtNzAsNyArNzAsNyBAQCBzdGF0aWMgRGlyZWN0b3J5RW50cnlUeXBlIGRpcmVj
dG9yeUVudHJ5VHlwZSh1aW50OF90IGR0eXBlKQogdm9pZCB0cmF2ZXJzZURpcmVjdG9yeShjb25z
dCBTdHJpbmcmIHBhdGgsIGNvbnN0IEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIERpcmVj
dG9yeUVudHJ5VHlwZSk+JiBmdW5jdGlvbikKIHsKICNpZiAhT1MoV0lORE9XUykKLSAgICBESVIq
IGRpciA9IG9wZW5kaXIoV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKHBhdGgpLmRhdGEoKSk7CisgICAgRElSKiBkaXIgPSBvcGVuZGlyKEZpbGVTeXN0ZW06OmZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCkpOwogICAgIGlmICghZGlyKQogICAg
ICAgICByZXR1cm47CiAgICAgZGlyZW50KiBkcDsKQEAgLTk0LDEwICs5NCwxMCBAQCB2b2lkIHRy
YXZlcnNlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgRnVuY3Rpb248dm9pZCAo
Y29uc3QgU3RyaW5nJiwgRAogdm9pZCBkZWxldGVEaXJlY3RvcnlSZWN1cnNpdmVseShjb25zdCBT
dHJpbmcmIHBhdGgpCiB7CiAgICAgdHJhdmVyc2VEaXJlY3RvcnkocGF0aCwgWyZwYXRoXShjb25z
dCBTdHJpbmcmIG5hbWUsIERpcmVjdG9yeUVudHJ5VHlwZSB0eXBlKSB7Ci0gICAgICAgIFN0cmlu
ZyBlbnRyeVBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQocGF0aCwgbmFtZSk7CisgICAgICAgIFN0cmluZyBlbnRyeVBhdGggPSBGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGF0aCwgbmFtZSk7CiAgICAgICAgIHN3aXRjaCAodHlw
ZSkgewogICAgICAgICBjYXNlIERpcmVjdG9yeUVudHJ5VHlwZTo6RmlsZToKLSAgICAgICAgICAg
IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZW50cnlQYXRoKTsKKyAgICAgICAgICAg
IEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZW50cnlQYXRoKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIERpcmVjdG9yeUVudHJ5VHlwZTo6RGlyZWN0b3J5OgogICAgICAgICAgICAg
ZGVsZXRlRGlyZWN0b3J5UmVjdXJzaXZlbHkoZW50cnlQYXRoKTsKQEAgLTEwNSwxOSArMTA1LDE5
IEBAIHZvaWQgZGVsZXRlRGlyZWN0b3J5UmVjdXJzaXZlbHkoY29uc3QgU3RyaW5nJiBwYXRoKQog
ICAgICAgICAvLyBUaGlzIGRvZXNuJ3QgZm9sbG93IHN5bWxpbmtzLgogICAgICAgICB9CiAgICAg
fSk7Ci0gICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkocGF0aCk7
CisgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkocGF0aCk7CiB9CiAKIEZpbGVU
aW1lcyBmaWxlVGltZXMoY29uc3QgU3RyaW5nJiBwYXRoKQogewogI2lmIEhBVkUoU1RBVF9CSVJU
SFRJTUUpCiAgICAgc3RydWN0IHN0YXQgZmlsZUluZm87Ci0gICAgaWYgKHN0YXQoV2ViQ29yZTo6
RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSwgJmZpbGVJ
bmZvKSkKKyAgICBpZiAoc3RhdChGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
cGF0aCkuZGF0YSgpLCAmZmlsZUluZm8pKQogICAgICAgICByZXR1cm4geyB9OwogICAgIHJldHVy
biB7IFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhmaWxlSW5mby5zdF9iaXJ0aHRpbWUpLCBXYWxs
VGltZTo6ZnJvbVJhd1NlY29uZHMoZmlsZUluZm8uc3RfbXRpbWUpIH07CiAjZWxpZiBVU0UoU09V
UCkKICAgICAvLyBUaGVyZSdzIG5vIHN0X2JpcnRodGltZSBpbiBzb21lIG9wZXJhdGluZyBzeXN0
ZW1zIGxpa2UgTGludXgsIHNvIHdlIHVzZSB4YXR0cnMgdG8gc2V0L2dldCB0aGUgY3JlYXRpb24g
dGltZS4KLSAgICBHUmVmUHRyPEdGaWxlPiBmaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9y
X3BhdGgoV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgp
LmRhdGEoKSkpOworICAgIEdSZWZQdHI8R0ZpbGU+IGZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25l
d19mb3JfcGF0aChGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0
YSgpKSk7CiAgICAgR1JlZlB0cjxHRmlsZUluZm8+IGZpbGVJbmZvID0gYWRvcHRHUmVmKGdfZmls
ZV9xdWVyeV9pbmZvKGZpbGUuZ2V0KCksICJ4YXR0cjo6YmlydGh0aW1lLHRpbWU6Om1vZGlmaWVk
IiwgR19GSUxFX1FVRVJZX0lORk9fTk9ORSwgbnVsbHB0ciwgbnVsbHB0cikpOwogICAgIGlmICgh
ZmlsZUluZm8pCiAgICAgICAgIHJldHVybiB7IH07CkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCB1
cGRhdGVGaWxlTW9kaWZpY2F0aW9uVGltZUlmTmVlZGVkKGNvbnN0IFN0cmluZyYgcGF0aCkKICAg
ICB9CiAjaWYgIU9TKFdJTkRPV1MpCiAgICAgLy8gVGhpcyByZWFsbHkgdXBkYXRlcyBib3RoIHRo
ZSBhY2Nlc3MgdGltZSBhbmQgdGhlIG1vZGlmaWNhdGlvbiB0aW1lLgotICAgIHV0aW1lcyhXZWJD
b3JlOjpGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpLCBu
dWxscHRyKTsKKyAgICB1dGltZXMoRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KHBhdGgpLmRhdGEoKSwgbnVsbHB0cik7CiAjZW5kaWYKIH0KIApAQCAtMTU2LDcgKzE1Niw3IEBA
IGJvb2wgaXNTYWZlVG9Vc2VNZW1vcnlNYXBGb3JQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCkKICAg
ICBhdHRybGlzdCBhdHRyTGlzdCA9IHsgfTsKICAgICBhdHRyTGlzdC5iaXRtYXBjb3VudCA9IEFU
VFJfQklUX01BUF9DT1VOVDsKICAgICBhdHRyTGlzdC5jb21tb25hdHRyID0gQVRUUl9DTU5fREFU
QV9QUk9URUNUX0ZMQUdTOwotICAgIGludDMyX3QgZXJyb3IgPSBnZXRhdHRybGlzdChXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpLCAmYXR0
ckxpc3QsICZhdHRyQnVmZmVyLCBzaXplb2YoYXR0ckJ1ZmZlciksIEZTT1BUX05PRk9MTE9XKTsK
KyAgICBpbnQzMl90IGVycm9yID0gZ2V0YXR0cmxpc3QoRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSwgJmF0dHJMaXN0LCAmYXR0ckJ1ZmZlciwgc2l6ZW9m
KGF0dHJCdWZmZXIpLCBGU09QVF9OT0ZPTExPVyk7CiAgICAgaWYgKGVycm9yKSB7CiAgICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICJVbmFibGUgdG8gZ2V0IGNhY2hlIGRpcmVjdG9y
eSBwcm90ZWN0aW9uIGNsYXNzLCBkaXNhYmxpbmcgdXNlIG9mIHNoYXJlZCBtYXBwZWQgbWVtb3J5
Iik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmgKaW5kZXggN2Rj
Y2U2YzRjMzY3MjhlOTMxNTgzM2E1MzI5YmQ1NmQ1YzQxMmI4YS4uMTgzMWEzNTFjOWIwZmY1MDVk
ZjlhZGM3ZjdjMDNhZjcwMWQ2Yzg4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmgKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmgKQEAgLTI1LDcg
KzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0u
aD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIG5h
bWVzcGFjZSBOZXR3b3JrQ2FjaGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxDb2NvYS5tbSBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsQ29jb2EubW0KaW5k
ZXggMzY5YmNmOTczZjJkY2VlMGEzZDQzOTYzNDUzNzBiNjQ2MjFlOWYwOC4uYzY1MjE2NGNhMTg4
YTA3ZGE1N2JjZGU3NWYzYTIyNTJlMTgyZjA4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbENv
Y29hLm1tCkBAIC00MSw3ICs0MSw3IEBAIElPQ2hhbm5lbDo6SU9DaGFubmVsKGNvbnN0IFN0cmlu
ZyYgZmlsZVBhdGgsIFR5cGUgdHlwZSkKICAgICA6IG1fcGF0aChmaWxlUGF0aCkKICAgICAsIG1f
dHlwZSh0eXBlKQogewotICAgIGF1dG8gcGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihmaWxlUGF0aCk7CisgICAgYXV0byBwYXRoID0gRmlsZVN5c3Rl
bTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVQYXRoKTsKICAgICBpbnQgb2ZsYWc7CiAg
ICAgbW9kZV90IG1vZGU7CiAgICAgYm9vbCB1c2VMb3dJT1ByaW9yaXR5ID0gZmFsc2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlP
Q2hhbm5lbFNvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVJT0NoYW5uZWxTb3VwLmNwcAppbmRleCA1MzkyYzc5MDU2OWZkNjY1N2EyMWEyNjIw
Y2IwNTFlZmJlZWYwNDU5Li5iNTZmOTY1NTMxMmNkYWQwYzEwOGRjY2M2ZWYxNzI5OTVhZWQxYTVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZUlPQ2hhbm5lbFNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsU291cC5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgSU9D
aGFubmVsOjpJT0NoYW5uZWwoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgVHlwZSB0eXBlKQogICAg
IDogbV9wYXRoKGZpbGVQYXRoKQogICAgICwgbV90eXBlKHR5cGUpCiB7Ci0gICAgYXV0byBwYXRo
ID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVQYXRo
KTsKKyAgICBhdXRvIHBhdGggPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
ZmlsZVBhdGgpOwogICAgIEdSZWZQdHI8R0ZpbGU+IGZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25l
d19mb3JfcGF0aChwYXRoLmRhdGEoKSkpOwogICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgY2Fz
ZSBUeXBlOjpDcmVhdGU6IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3RhdGlzdGljcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0YXRpc3RpY3MuY3BwCmluZGV4IGI0YTEzMTRl
YjRiMTVlZTAzMzJmNzRlOTIxZTJmYzg3MTkwNjRjMzcuLjYxYmVmMWUxMWMzY2Y4Mzc1ZjczOTI1
YjcyM2I5MTZmYjMxZWIzN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3RhdGlzdGljcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmNwcApAQCAtNzcsNyAr
NzcsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U3RhdGlzdGljcz4gU3RhdGlzdGljczo6b3BlbihDYWNo
ZSYgY2FjaGUsIGNvbnN0IFN0cmluZyYgY2FjaGVQYQogewogICAgIEFTU0VSVChSdW5Mb29wOjpp
c01haW4oKSk7CiAKLSAgICBTdHJpbmcgZGF0YWJhc2VQYXRoID0gV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNhY2hlUGF0aCwgU3RhdGlzdGljc0RhdGFiYXNl
TmFtZSk7CisgICAgU3RyaW5nIGRhdGFiYXNlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChjYWNoZVBhdGgsIFN0YXRpc3RpY3NEYXRhYmFzZU5hbWUpOwogICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFN0YXRpc3RpY3M+KGNhY2hlLCBkYXRhYmFzZVBhdGgpOwog
fQogCkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgU3RhdGlzdGljczo6aW5pdGlhbGl6ZShjb25zdCBT
dHJpbmcmIGRhdGFiYXNlUGF0aCkKICAgICBzZXJpYWxCYWNrZ3JvdW5kSU9RdWV1ZSgpLmRpc3Bh
dGNoKFt0aGlzLCBkYXRhYmFzZVBhdGggPSBkYXRhYmFzZVBhdGguaXNvbGF0ZWRDb3B5KCksIG5l
dHdvcmtDYWNoZVBhdGggPSBtX2NhY2hlLnJlY29yZHNQYXRoKCksIHN0YXJ0VGltZV0gewogICAg
ICAgICBXZWJDb3JlOjpTUUxpdGVUcmFuc2FjdGlvbkluUHJvZ3Jlc3NBdXRvQ291bnRlciB0cmFu
c2FjdGlvbkNvdW50ZXI7CiAKLSAgICAgICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVtOjptYWtl
QWxsRGlyZWN0b3JpZXMoV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShkYXRhYmFz
ZVBhdGgpKSkKKyAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoRmls
ZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShkYXRhYmFzZVBhdGgpKSkKICAgICAgICAgICAgIHJldHVy
bjsKIAogICAgICAgICBMT0coTmV0d29ya0NhY2hlLCAiKE5ldHdvcmtQcm9jZXNzKSBPcGVuaW5n
IG5ldHdvcmsgY2FjaGUgc3RhdGlzdGljcyBkYXRhYmFzZSBhdCAlcy4uLiIsIGRhdGFiYXNlUGF0
aC51dGY4KCkuZGF0YSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCmluZGV4IDRlYTc0MzBmYTIwNDRl
OTAxNGE4OTkwNGQ1YmJjMWViNjViNzljYzYuLmMyNmFhMWI5NmM3MTNhODAwMzdmZDFjNTc4NjVk
Yjk3MmI2NGFlZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcApAQCAtMTQ1LDI5ICsxNDUsMjkgQEAg
cHVibGljOgogc3RhdGljIFN0cmluZyBtYWtlVmVyc2lvbmVkRGlyZWN0b3J5UGF0aChjb25zdCBT
dHJpbmcmIGJhc2VEaXJlY3RvcnlQYXRoKQogewogICAgIFN0cmluZyB2ZXJzaW9uU3ViZGlyZWN0
b3J5ID0gdmVyc2lvbkRpcmVjdG9yeVByZWZpeCArIFN0cmluZzo6bnVtYmVyKFN0b3JhZ2U6OnZl
cnNpb24pOwotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQoYmFzZURpcmVjdG9yeVBhdGgsIHZlcnNpb25TdWJkaXJlY3RvcnkpOworICAgIHJl
dHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoYmFzZURpcmVjdG9yeVBh
dGgsIHZlcnNpb25TdWJkaXJlY3RvcnkpOwogfQogCiBzdGF0aWMgU3RyaW5nIG1ha2VSZWNvcmRz
RGlyZWN0b3J5UGF0aChjb25zdCBTdHJpbmcmIGJhc2VEaXJlY3RvcnlQYXRoKQogewotICAgIHJl
dHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobWFrZVZl
cnNpb25lZERpcmVjdG9yeVBhdGgoYmFzZURpcmVjdG9yeVBhdGgpLCByZWNvcmRzRGlyZWN0b3J5
TmFtZSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCht
YWtlVmVyc2lvbmVkRGlyZWN0b3J5UGF0aChiYXNlRGlyZWN0b3J5UGF0aCksIHJlY29yZHNEaXJl
Y3RvcnlOYW1lKTsKIH0KIAogc3RhdGljIFN0cmluZyBtYWtlQmxvYkRpcmVjdG9yeVBhdGgoY29u
c3QgU3RyaW5nJiBiYXNlRGlyZWN0b3J5UGF0aCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1ha2VWZXJzaW9uZWREaXJlY3RvcnlQ
YXRoKGJhc2VEaXJlY3RvcnlQYXRoKSwgYmxvYnNEaXJlY3RvcnlOYW1lKTsKKyAgICByZXR1cm4g
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1ha2VWZXJzaW9uZWREaXJlY3Rv
cnlQYXRoKGJhc2VEaXJlY3RvcnlQYXRoKSwgYmxvYnNEaXJlY3RvcnlOYW1lKTsKIH0KIAogc3Rh
dGljIFN0cmluZyBtYWtlU2FsdEZpbGVQYXRoKGNvbnN0IFN0cmluZyYgYmFzZURpcmVjdG9yeVBh
dGgpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChtYWtlVmVyc2lvbmVkRGlyZWN0b3J5UGF0aChiYXNlRGlyZWN0b3J5UGF0aCksIHNh
bHRGaWxlTmFtZSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChtYWtlVmVyc2lvbmVkRGlyZWN0b3J5UGF0aChiYXNlRGlyZWN0b3J5UGF0aCksIHNhbHRG
aWxlTmFtZSk7CiB9CiAKIFJlZlB0cjxTdG9yYWdlPiBTdG9yYWdlOjpvcGVuKGNvbnN0IFN0cmlu
ZyYgY2FjaGVQYXRoLCBNb2RlIG1vZGUpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigp
KTsKIAotICAgIGlmICghV2ViQ29yZTo6RmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKG1h
a2VWZXJzaW9uZWREaXJlY3RvcnlQYXRoKGNhY2hlUGF0aCkpKQorICAgIGlmICghRmlsZVN5c3Rl
bTo6bWFrZUFsbERpcmVjdG9yaWVzKG1ha2VWZXJzaW9uZWREaXJlY3RvcnlQYXRoKGNhY2hlUGF0
aCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBhdXRvIHNhbHQgPSByZWFkT3JNYWtl
U2FsdChtYWtlU2FsdEZpbGVQYXRoKGNhY2hlUGF0aCkpOwogICAgIGlmICghc2FsdCkKQEAgLTE4
MCwxMyArMTgwLDEzIEBAIHZvaWQgdHJhdmVyc2VSZWNvcmRzRmlsZXMoY29uc3QgU3RyaW5nJiBy
ZWNvcmRzUGF0aCwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFR5cGUsCiAgICAgdHJhdmVyc2VEaXJl
Y3RvcnkocmVjb3Jkc1BhdGgsIFsmXShjb25zdCBTdHJpbmcmIHBhcnRpdGlvbk5hbWUsIERpcmVj
dG9yeUVudHJ5VHlwZSBlbnRyeVR5cGUpIHsKICAgICAgICAgaWYgKGVudHJ5VHlwZSAhPSBEaXJl
Y3RvcnlFbnRyeVR5cGU6OkRpcmVjdG9yeSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
U3RyaW5nIHBhcnRpdGlvblBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQocmVjb3Jkc1BhdGgsIHBhcnRpdGlvbk5hbWUpOworICAgICAgICBTdHJpbmcg
cGFydGl0aW9uUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNv
cmRzUGF0aCwgcGFydGl0aW9uTmFtZSk7CiAgICAgICAgIHRyYXZlcnNlRGlyZWN0b3J5KHBhcnRp
dGlvblBhdGgsIFsmXShjb25zdCBTdHJpbmcmIGFjdHVhbFR5cGUsIERpcmVjdG9yeUVudHJ5VHlw
ZSBlbnRyeVR5cGUpIHsKICAgICAgICAgICAgIGlmIChlbnRyeVR5cGUgIT0gRGlyZWN0b3J5RW50
cnlUeXBlOjpEaXJlY3RvcnkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAg
aWYgKCFleHBlY3RlZFR5cGUuaXNFbXB0eSgpICYmIGV4cGVjdGVkVHlwZSAhPSBhY3R1YWxUeXBl
KQogICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIFN0cmluZyByZWNvcmREaXJl
Y3RvcnlQYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KHBhcnRpdGlvblBhdGgsIGFjdHVhbFR5cGUpOworICAgICAgICAgICAgU3RyaW5nIHJlY29yZERp
cmVjdG9yeVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGFydGl0
aW9uUGF0aCwgYWN0dWFsVHlwZSk7CiAgICAgICAgICAgICB0cmF2ZXJzZURpcmVjdG9yeShyZWNv
cmREaXJlY3RvcnlQYXRoLCBbJmZ1bmN0aW9uLCAmcmVjb3JkRGlyZWN0b3J5UGF0aCwgJmFjdHVh
bFR5cGVdKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIERpcmVjdG9yeUVudHJ5VHlwZSBlbnRyeVR5
cGUpIHsKICAgICAgICAgICAgICAgICBpZiAoZW50cnlUeXBlICE9IERpcmVjdG9yeUVudHJ5VHlw
ZTo6RmlsZSB8fCBmaWxlTmFtZS5sZW5ndGgoKSA8IEtleTo6aGFzaFN0cmluZ0xlbmd0aCgpKQog
ICAgICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0yMDYsMTggKzIwNiwxOCBAQCBzdGF0aWMg
dm9pZCBkZWxldGVFbXB0eVJlY29yZHNEaXJlY3Rvcmllcyhjb25zdCBTdHJpbmcmIHJlY29yZHNQ
YXRoKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIC8vIERlbGV0ZSBbdHlwZV0gc3Vi
LWZvbGRlcnMuCi0gICAgICAgIFN0cmluZyBwYXJ0aXRpb25QYXRoID0gV2ViQ29yZTo6RmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZHNQYXRoLCBwYXJ0aXRpb25OYW1l
KTsKKyAgICAgICAgU3RyaW5nIHBhcnRpdGlvblBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQocmVjb3Jkc1BhdGgsIHBhcnRpdGlvbk5hbWUpOwogICAgICAgICB0cmF2
ZXJzZURpcmVjdG9yeShwYXJ0aXRpb25QYXRoLCBbJnBhcnRpdGlvblBhdGhdKGNvbnN0IFN0cmlu
ZyYgc3ViZGlyTmFtZSwgRGlyZWN0b3J5RW50cnlUeXBlIGVudHJ5VHlwZSkgewogICAgICAgICAg
ICAgaWYgKGVudHJ5VHlwZSAhPSBEaXJlY3RvcnlFbnRyeVR5cGU6OkRpcmVjdG9yeSkKICAgICAg
ICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgICAgIC8vIExldCBzeXN0ZW0gZmlndXJlIG91
dCBpZiBpdCBpcyByZWFsbHkgZW1wdHkuCi0gICAgICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVt
OjpkZWxldGVFbXB0eURpcmVjdG9yeShXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQocGFydGl0aW9uUGF0aCwgc3ViZGlyTmFtZSkpOworICAgICAgICAgICAgRmls
ZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KHBhcnRpdGlvblBhdGgsIHN1YmRpck5hbWUpKTsKICAgICAgICAgfSk7CiAKICAg
ICAgICAgLy8gRGVsZXRlIFtQYXJ0aXRpb25dIGZvbGRlcnMuCiAgICAgICAgIC8vIExldCBzeXN0
ZW0gZmlndXJlIG91dCBpZiBpdCBpcyByZWFsbHkgZW1wdHkuCi0gICAgICAgIFdlYkNvcmU6OkZp
bGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmRzUGF0aCwgcGFydGl0aW9uTmFtZSkpOworICAgICAg
ICBGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQocmVjb3Jkc1BhdGgsIHBhcnRpdGlvbk5hbWUpKTsKICAgICB9KTsKIH0K
IApAQCAtMzAwLDExICszMDAsMTEgQEAgdm9pZCBTdG9yYWdlOjpzeW5jaHJvbml6ZSgpCiAKICAg
ICAgICAgU3RyaW5nIGFueVR5cGU7CiAgICAgICAgIHRyYXZlcnNlUmVjb3Jkc0ZpbGVzKHJlY29y
ZHNQYXRoKCksIGFueVR5cGUsIFsmXShjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJp
bmcmIGhhc2hTdHJpbmcsIGNvbnN0IFN0cmluZyYgdHlwZSwgYm9vbCBpc0Jsb2IsIGNvbnN0IFN0
cmluZyYgcmVjb3JkRGlyZWN0b3J5UGF0aCkgewotICAgICAgICAgICAgYXV0byBmaWxlUGF0aCA9
IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmREaXJl
Y3RvcnlQYXRoLCBmaWxlTmFtZSk7CisgICAgICAgICAgICBhdXRvIGZpbGVQYXRoID0gRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZERpcmVjdG9yeVBhdGgsIGZpbGVO
YW1lKTsKIAogICAgICAgICAgICAgS2V5OjpIYXNoVHlwZSBoYXNoOwogICAgICAgICAgICAgaWYg
KCFLZXk6OnN0cmluZ1RvSGFzaChoYXNoU3RyaW5nLCBoYXNoKSkgewotICAgICAgICAgICAgICAg
IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZmlsZVBhdGgpOworICAgICAgICAgICAg
ICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZmlsZVBhdGgpOwogICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgIH0KIApAQCAtMzE4LDcgKzMxOCw3IEBAIHZvaWQgU3RvcmFnZTo6
c3luY2hyb25pemUoKQogCiAgICAgICAgICAgICBpZiAoc2hvdWxkQ29tcHV0ZUV4YWN0UmVjb3Jk
c1NpemUpIHsKICAgICAgICAgICAgICAgICBsb25nIGxvbmcgZmlsZVNpemUgPSAwOwotICAgICAg
ICAgICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmdldEZpbGVTaXplKGZpbGVQYXRoLCBmaWxl
U2l6ZSk7CisgICAgICAgICAgICAgICAgRmlsZVN5c3RlbTo6Z2V0RmlsZVNpemUoZmlsZVBhdGgs
IGZpbGVTaXplKTsKICAgICAgICAgICAgICAgICByZWNvcmRzU2l6ZSArPSBmaWxlU2l6ZTsKICAg
ICAgICAgICAgIH0KIApAQCAtMzgxLDEyICszODEsMTIgQEAgYm9vbCBTdG9yYWdlOjptYXlDb250
YWluQmxvYihjb25zdCBLZXkmIGtleSkgY29uc3QKIFN0cmluZyBTdG9yYWdlOjpyZWNvcmREaXJl
Y3RvcnlQYXRoRm9yS2V5KGNvbnN0IEtleSYga2V5KSBjb25zdAogewogICAgIEFTU0VSVCgha2V5
LnR5cGUoKS5pc0VtcHR5KCkpOwotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KHJlY29yZHNQYXRoKCksIGtleS5wYXJ0aXRpb25IYXNoQXNTdHJpbmcoKSksIGtl
eS50eXBlKCkpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZHNQYXRoKCksIGtl
eS5wYXJ0aXRpb25IYXNoQXNTdHJpbmcoKSksIGtleS50eXBlKCkpOwogfQogCiBTdHJpbmcgU3Rv
cmFnZTo6cmVjb3JkUGF0aEZvcktleShjb25zdCBLZXkmIGtleSkgY29uc3QKIHsKLSAgICByZXR1
cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZERp
cmVjdG9yeVBhdGhGb3JLZXkoa2V5KSwga2V5Lmhhc2hBc1N0cmluZygpKTsKKyAgICByZXR1cm4g
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZERpcmVjdG9yeVBhdGhG
b3JLZXkoa2V5KSwga2V5Lmhhc2hBc1N0cmluZygpKTsKIH0KIAogc3RhdGljIFN0cmluZyBibG9i
UGF0aEZvclJlY29yZFBhdGgoY29uc3QgU3RyaW5nJiByZWNvcmRQYXRoKQpAQCAtNjI5LDcgKzYy
OSw3IEBAIHZvaWQgU3RvcmFnZTo6ZGVsZXRlRmlsZXMoY29uc3QgS2V5JiBrZXkpCiB7CiAgICAg
QVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpk
ZWxldGVGaWxlKHJlY29yZFBhdGhGb3JLZXkoa2V5KSk7CisgICAgRmlsZVN5c3RlbTo6ZGVsZXRl
RmlsZShyZWNvcmRQYXRoRm9yS2V5KGtleSkpOwogICAgIG1fYmxvYlN0b3JhZ2UucmVtb3ZlKGJs
b2JQYXRoRm9yS2V5KGtleSkpOwogfQogCkBAIC04MDksNyArODA5LDcgQEAgdm9pZCBTdG9yYWdl
OjpkaXNwYXRjaFdyaXRlT3BlcmF0aW9uKHN0ZDo6dW5pcXVlX3B0cjxXcml0ZU9wZXJhdGlvbj4g
d3JpdGVPcGVyYXQKICAgICAgICAgYXV0byByZWNvcmREaXJlY3RvclBhdGggPSByZWNvcmREaXJl
Y3RvcnlQYXRoRm9yS2V5KHdyaXRlT3BlcmF0aW9uLnJlY29yZC5rZXkpOwogICAgICAgICBhdXRv
IHJlY29yZFBhdGggPSByZWNvcmRQYXRoRm9yS2V5KHdyaXRlT3BlcmF0aW9uLnJlY29yZC5rZXkp
OwogCi0gICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhyZWNv
cmREaXJlY3RvclBhdGgpOworICAgICAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMo
cmVjb3JkRGlyZWN0b3JQYXRoKTsKIAogICAgICAgICArK3dyaXRlT3BlcmF0aW9uLmFjdGl2ZUNv
dW50OwogCkBAIC05MTcsNyArOTE3LDcgQEAgdm9pZCBTdG9yYWdlOjp0cmF2ZXJzZShjb25zdCBT
dHJpbmcmIHR5cGUsIE9wdGlvblNldDxUcmF2ZXJzZUZsYWc+IGZsYWdzLCBUcmF2ZXIKICAgICAg
ICAgICAgIGlmIChpc0Jsb2IpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAg
ICBhdXRvIHJlY29yZFBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQocmVjb3JkRGlyZWN0b3J5UGF0aCwgZmlsZU5hbWUpOworICAgICAgICAgICAgYXV0
byByZWNvcmRQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29y
ZERpcmVjdG9yeVBhdGgsIGZpbGVOYW1lKTsKIAogICAgICAgICAgICAgZG91YmxlIHdvcnRoID0g
LTE7CiAgICAgICAgICAgICBpZiAodHJhdmVyc2VPcGVyYXRpb24uZmxhZ3MgJiBUcmF2ZXJzZUZs
YWc6OkNvbXB1dGVXb3J0aCkKQEAgLTEwMDksMTMgKzEwMDksMTMgQEAgdm9pZCBTdG9yYWdlOjpj
bGVhcihjb25zdCBTdHJpbmcmIHR5cGUsIFdhbGxUaW1lIG1vZGlmaWVkU2luY2VUaW1lLCBDb21w
bGV0aW9uSGEKICAgICBpb1F1ZXVlKCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgbW9kaWZpZWRTaW5jZVRpbWUsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlciksIHR5cGUgPSB0eXBlLmlzb2xhdGVkQ29weSgpXSAoKSBt
dXRhYmxlIHsKICAgICAgICAgYXV0byByZWNvcmRzUGF0aCA9IHRoaXMtPnJlY29yZHNQYXRoKCk7
CiAgICAgICAgIHRyYXZlcnNlUmVjb3Jkc0ZpbGVzKHJlY29yZHNQYXRoLCB0eXBlLCBbbW9kaWZp
ZWRTaW5jZVRpbWVdKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgaGFzaFN0
cmluZywgY29uc3QgU3RyaW5nJiB0eXBlLCBib29sIGlzQmxvYiwgY29uc3QgU3RyaW5nJiByZWNv
cmREaXJlY3RvcnlQYXRoKSB7Ci0gICAgICAgICAgICBhdXRvIGZpbGVQYXRoID0gV2ViQ29yZTo6
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZERpcmVjdG9yeVBhdGgs
IGZpbGVOYW1lKTsKKyAgICAgICAgICAgIGF1dG8gZmlsZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3JkRGlyZWN0b3J5UGF0aCwgZmlsZU5hbWUpOwogICAg
ICAgICAgICAgaWYgKG1vZGlmaWVkU2luY2VUaW1lID4gLVdhbGxUaW1lOjppbmZpbml0eSgpKSB7
CiAgICAgICAgICAgICAgICAgYXV0byB0aW1lcyA9IGZpbGVUaW1lcyhmaWxlUGF0aCk7CiAgICAg
ICAgICAgICAgICAgaWYgKHRpbWVzLm1vZGlmaWNhdGlvbiA8IG1vZGlmaWVkU2luY2VUaW1lKQog
ICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBX
ZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGZpbGVQYXRoKTsKKyAgICAgICAgICAgIEZp
bGVTeXN0ZW06OmRlbGV0ZUZpbGUoZmlsZVBhdGgpOwogICAgICAgICB9KTsKIAogICAgICAgICBk
ZWxldGVFbXB0eVJlY29yZHNEaXJlY3RvcmllcyhyZWNvcmRzUGF0aCk7CkBAIC0xMDg5LDcgKzEw
ODksNyBAQCB2b2lkIFN0b3JhZ2U6OnNocmluaygpCiAgICAgICAgICAgICBpZiAoaXNCbG9iKQog
ICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgYXV0byByZWNvcmRQYXRoID0g
V2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZERpcmVj
dG9yeVBhdGgsIGZpbGVOYW1lKTsKKyAgICAgICAgICAgIGF1dG8gcmVjb3JkUGF0aCA9IEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmREaXJlY3RvcnlQYXRoLCBmaWxl
TmFtZSk7CiAgICAgICAgICAgICBhdXRvIGJsb2JQYXRoID0gYmxvYlBhdGhGb3JSZWNvcmRQYXRo
KHJlY29yZFBhdGgpOwogCiAgICAgICAgICAgICBhdXRvIHRpbWVzID0gZmlsZVRpbWVzKHJlY29y
ZFBhdGgpOwpAQCAtMTEwMSw3ICsxMTAxLDcgQEAgdm9pZCBTdG9yYWdlOjpzaHJpbmsoKQogICAg
ICAgICAgICAgTE9HKE5ldHdvcmtDYWNoZVN0b3JhZ2UsICJEZWxldGlvbiBwcm9iYWJpbGl0eT0l
ZiBib2R5TGlua0NvdW50PSVkIHNob3VsZERlbGV0ZT0lZCIsIHByb2JhYmlsaXR5LCBib2R5U2hh
cmVDb3VudCwgc2hvdWxkRGVsZXRlKTsKIAogICAgICAgICAgICAgaWYgKHNob3VsZERlbGV0ZSkg
ewotICAgICAgICAgICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUocmVjb3Jk
UGF0aCk7CisgICAgICAgICAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShyZWNvcmRQYXRo
KTsKICAgICAgICAgICAgICAgICBtX2Jsb2JTdG9yYWdlLnJlbW92ZShibG9iUGF0aCk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0pOwpAQCAtMTEzNyw3ICsxMTM3LDcgQEAgdm9pZCBTdG9yYWdl
OjpkZWxldGVPbGRWZXJzaW9ucygpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogI2VuZGlmCiAK
LSAgICAgICAgICAgIGF1dG8gb2xkVmVyc2lvblBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY2FjaGVQYXRoLCBzdWJkaXJOYW1lKTsKKyAgICAgICAg
ICAgIGF1dG8gb2xkVmVyc2lvblBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQoY2FjaGVQYXRoLCBzdWJkaXJOYW1lKTsKICAgICAgICAgICAgIExPRyhOZXR3b3JrQ2Fj
aGVTdG9yYWdlLCAiKE5ldHdvcmtQcm9jZXNzKSBkZWxldGluZyBvbGQgY2FjaGUgdmVyc2lvbiwg
cGF0aCAlcyIsIG9sZFZlcnNpb25QYXRoLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgICAgICAgICBk
ZWxldGVEaXJlY3RvcnlSZWN1cnNpdmVseShvbGRWZXJzaW9uUGF0aCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1t
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2Nv
YS5tbQppbmRleCBhNjFmOTM4NWE2Nzc0YmQwYjc1YzUzOTY5Y2UxMzI4NzhiM2I5NzNmLi5mNDdi
ZDgxOTg4MzI2NmFhNjc4YzQ4N2Y2YjM1MzhlYzVkYWJiZTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2Eu
bW0KQEAgLTM2LDExICszNiwxMSBAQAogI2ltcG9ydCAiTmV0d29ya1Nlc3Npb25Db2NvYS5oIgog
I2ltcG9ydCAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0F1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNp
bXBvcnQgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L05vdEltcGxlbWVudGVkLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgog
I2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4KKyNpbXBvcnQgPHd0Zi9GaWxlU3lz
dGVtLmg+CiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgogI2ltcG9ydCA8d3RmL1Byb2Nlc3NQ
cml2aWxlZ2UuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0Jhc2U2NC5oPgpAQCAtNDAzLDggKzQwMyw4
IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OnNldFBlbmRpbmdEb3dubG9hZExvY2F0aW9u
KGNvbnN0IFdURjo6U3RyaW5nJiBmaWxlbmFtCiAKICAgICBtX3Rhc2suZ2V0KCkuX3BhdGhUb0Rv
d25sb2FkVGFza0ZpbGUgPSBtX3BlbmRpbmdEb3dubG9hZExvY2F0aW9uOwogCi0gICAgaWYgKGFs
bG93T3ZlcndyaXRlICYmIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobV9wZW5kaW5n
RG93bmxvYWRMb2NhdGlvbikpCi0gICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUZp
bGUoZmlsZW5hbWUpOworICAgIGlmIChhbGxvd092ZXJ3cml0ZSAmJiBGaWxlU3lzdGVtOjpmaWxl
RXhpc3RzKG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRpb24pKQorICAgICAgICBGaWxlU3lzdGVtOjpk
ZWxldGVGaWxlKGZpbGVuYW1lKTsKIH0KIAogYm9vbCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6dHJ5
UGFzc3dvcmRCYXNlZEF1dGhlbnRpY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlJiBjaGFsbGVuZ2UsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiBjb21wbGV0
aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQppbmRleCBmNmFkNDlmOGJhYzM1ZDAxN2I5NjUz
Nzk4ZDU3YWFhMmY0Mzk1NjA4Li40YTFkNzkyMTBhZmE1OTZlNGIwZmFmY2U4MThmZjRmNjgyYjM4
YjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtTZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCkBAIC03NzksNyArNzc5LDcgQEAgLSAodm9pZClVUkxT
ZXNzaW9uOihOU1VSTFNlc3Npb24gKilzZXNzaW9uIGRhdGFUYXNrOihOU1VSTFNlc3Npb25EYXRh
VGFzayAqKWRhdGEKICAgICAgICAgYXV0byYgZG93bmxvYWRNYW5hZ2VyID0gX3Nlc3Npb24tPm5l
dHdvcmtQcm9jZXNzKCkuZG93bmxvYWRNYW5hZ2VyKCk7CiAgICAgICAgIGF1dG8gZG93bmxvYWQg
PSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6RG93bmxvYWQ+KGRvd25sb2FkTWFuYWdlciwgZG93
bmxvYWRJRCwgZG93bmxvYWRUYXNrLCBfc2Vzc2lvbi0+c2Vzc2lvbklEKCksIG5ldHdvcmtEYXRh
VGFzay0+c3VnZ2VzdGVkRmlsZW5hbWUoKSk7CiAgICAgICAgIG5ldHdvcmtEYXRhVGFzay0+dHJh
bnNmZXJTYW5kYm94RXh0ZW5zaW9uVG9Eb3dubG9hZCgqZG93bmxvYWQpOwotICAgICAgICBBU1NF
UlQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhuZXR3b3JrRGF0YVRhc2stPnBlbmRp
bmdEb3dubG9hZExvY2F0aW9uKCkpKTsKKyAgICAgICAgQVNTRVJUKEZpbGVTeXN0ZW06OmZpbGVF
eGlzdHMobmV0d29ya0RhdGFUYXNrLT5wZW5kaW5nRG93bmxvYWRMb2NhdGlvbigpKSk7CiAgICAg
ICAgIGRvd25sb2FkLT5kaWRDcmVhdGVEZXN0aW5hdGlvbihuZXR3b3JrRGF0YVRhc2stPnBlbmRp
bmdEb3dubG9hZExvY2F0aW9uKCkpOwogICAgICAgICBkb3dubG9hZE1hbmFnZXIuZGF0YVRhc2tC
ZWNhbWVEb3dubG9hZFRhc2soZG93bmxvYWRJRCwgV1RGTW92ZShkb3dubG9hZCkpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUHJvY2Vzc01h
Yy5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzTWFj
Lm1tCmluZGV4IDM3ZjNiN2Y3MmFhNTAyYjMyYmE4MTFlYzliYTA4ZjVlMjU1ODYzYjIuLmY1YmYw
NGFlNDY1ZjYyYjc0ZDJiMThhODE3NTkwMWExNmVhNTU1ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzTWFjLm1tCkBAIC0zOCwx
MiArMzgsMTIgQEAKICNpbXBvcnQgIlN0cmluZ1V0aWxpdGllcy5oIgogI2ltcG9ydCAiV0tGb3Vu
ZGF0aW9uLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0NlcnRpZmljYXRlSW5mby5oPgotI2ltcG9ydCA8
V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3Mu
aD4KICNpbXBvcnQgPG5vdGlmeS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEku
aD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTGF1bmNoU2VydmljZXNTUEkuaD4KICNpbXBvcnQg
PHN5c2V4aXRzLmg+CisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8d3RmL01l
bW9yeVByZXNzdXJlSGFuZGxlci5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJv
Y2Vzc1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQ
cm9jZXNzU291cC5jcHAKaW5kZXggYzdjZTFkMjdhMDAxYmZlZGRlZDI2MjI0ZTg3MzdhY2I0MDlj
YjliYy4uYWE3YzUwY2JmMWUzOThjOWMzYmE5YzAwMTljZmYxZTRkZWU3NzhiMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNz
U291cC5jcHAKQEAgLTMyLDEyICszMiwxMiBAQAogI2luY2x1ZGUgIlJlc291cmNlQ2FjaGVzVG9D
bGVhci5oIgogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXIuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L0NlcnRpZmljYXRlSW5mby5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1NvdXBOZXR3b3JrU2Vzc2lvbi5oPgogI2luY2x1ZGUgPGxpYnNv
dXAvc291cC5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL1JB
TVNpemUuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2ds
aWIvR1VuaXF1ZVB0ci5oPgpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3Jl
YXRpCiAgICAgQVNTRVJUKCFwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeS5pc0VtcHR5KCkp
OwogICAgIG1fZGlza0NhY2hlRGlyZWN0b3J5ID0gcGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3Rv
cnk7CiAKLSAgICBTb3VwTmV0d29ya1Nlc3Npb246OmNsZWFyT2xkU291cENhY2hlKFdlYkNvcmU6
OkZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUobV9kaXNrQ2FjaGVEaXJlY3RvcnkpKTsKKyAgICBT
b3VwTmV0d29ya1Nlc3Npb246OmNsZWFyT2xkU291cENhY2hlKEZpbGVTeXN0ZW06OmRpcmVjdG9y
eU5hbWUobV9kaXNrQ2FjaGVEaXJlY3RvcnkpKTsKIAogICAgIE9wdGlvblNldDxOZXR3b3JrQ2Fj
aGU6OkNhY2hlOjpPcHRpb24+IGNhY2hlT3B0aW9ucyB7IE5ldHdvcmtDYWNoZTo6Q2FjaGU6Ok9w
dGlvbjo6UmVnaXN0ZXJOb3RpZnkgfTsKICAgICBpZiAocGFyYW1ldGVycy5zaG91bGRFbmFibGVO
ZXR3b3JrQ2FjaGVFZmZpY2FjeUxvZ2dpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Bs
dWdpblByb2Nlc3MvdW5peC9QbHVnaW5Qcm9jZXNzTWFpblVuaXguY3BwIGIvU291cmNlL1dlYktp
dC9QbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc01haW5Vbml4LmNwcAppbmRleCAyYmQy
ZWQ1OWFlNmEyZTI0YjA3NDhiMDNjZWJjMzU2M2M2NjcxODNlLi4zYWRlNGM5NDNmMDliNTFkM2Nj
M2JlYzJjYTk2MzNmNzNkMTM0OTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblBy
b2Nlc3MvdW5peC9QbHVnaW5Qcm9jZXNzTWFpblVuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
UGx1Z2luUHJvY2Vzcy91bml4L1BsdWdpblByb2Nlc3NNYWluVW5peC5jcHAKQEAgLTM0LDggKzM0
LDggQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0c2NhcGVQbHVnaW4uaCIK
ICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVt
Lmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAog
I2lmIFBMQVRGT1JNKEdUSykKICNpbmNsdWRlIDxndGsvZ3RrLmg+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9QZXJzaXN0ZW5jeVV0aWxzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1BlcnNpc3RlbmN5VXRpbHMuY3BwCmluZGV4IDVkYmE5NjhiZDdlMGIzOGMzZDIyNjk0ZDZk
NWQyZTZiMDY5ZDJhODEuLmVjYTk2NDFkMjA1MzQ1YzgxODk2ZWI1NjVkZjYyN2Y5NWUzYzUxN2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BlcnNpc3RlbmN5VXRpbHMuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BlcnNpc3RlbmN5VXRpbHMuY3BwCkBAIC0yNyw4ICsy
Nyw4IEBACiAjaW5jbHVkZSAiUGVyc2lzdGVuY3lVdGlscy5oIgogCiAjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U2hhcmVkQnVmZmVyLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3
dGYvUnVuTG9vcC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvdW5peC9OZXRzY2FwZVBsdWdpbk1vZHVsZVVu
aXguY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS91bml4L05ldHNj
YXBlUGx1Z2luTW9kdWxlVW5peC5jcHAKaW5kZXggZmIxZDlkYzkyNmZkNjc2NzkzZjQ1NGE3NGZh
NTUxYWVlNTcwYzhlNS4uZWVjNDc2MTE1Yzg0MDNmMTMzYjM5MzYwNTkyYjhmMGExMDNjMzQ0MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS91bml4L05l
dHNjYXBlUGx1Z2luTW9kdWxlVW5peC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1
Z2lucy9OZXRzY2FwZS91bml4L05ldHNjYXBlUGx1Z2luTW9kdWxlVW5peC5jcHAKQEAgLTMwLDEy
ICszMCwxMiBAQAogCiAjaW5jbHVkZSAiTmV0c2NhcGVCcm93c2VyRnVuY3MuaCIKICNpbmNsdWRl
ICJQbHVnaW5Qcm9jZXNzUHJveHkuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4K
ICNpbmNsdWRlIDxlcnJuby5oPgogI2luY2x1ZGUgPGZjbnRsLmg+CiAjaW5jbHVkZSA8c3lzL3N0
YXQuaD4KICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNs
dWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIu
aD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9QbHVnaW5zL3VuaXgvUGx1Z2luU2VhcmNoUGF0aC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9QbHVnaW5zL3VuaXgvUGx1Z2luU2VhcmNoUGF0aC5jcHAKaW5kZXggZThhZjk2MDRjZTU1OTVh
NDQ0ZmU4Y2E1MDQ1ZDNhNjE3YWIyMzY0YS4uMmJkNTQ5YTk1ZGZhNjc1Y2U0N2Y1NmQ3OGE1OWI0
ZjczMTVhMTFhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy91bml4
L1BsdWdpblNlYXJjaFBhdGguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMv
dW5peC9QbHVnaW5TZWFyY2hQYXRoLmNwcApAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIlBsdWdpblNlYXJjaFBhdGguaCIKIAotI2luY2x1ZGUgPFdlYkNv
cmUvRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJNZW1vcnlTYW1wbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJNZW1vcnlTYW1wbGVyLmgKaW5kZXggODA4MTNmZWEwNTBmMjA0OTFiZDFjOGI1MGU5MGIxY2Ji
YmNhYTM0NC4uNzIxY2RiZjM4OTIyNjRiYzlmZDc5MmI1MDgzODMwZmY1MTlmYzliZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYk1lbW9yeVNhbXBsZXIuaApAQCAtNTIsOCArNTIsOCBAQAogI2lm
IEVOQUJMRShNRU1PUllfU0FNUExFUikKIAogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIK
LSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RpbWVy
Lmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFi
bGUuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpA
QCAtODcsNyArODcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaW5pdGlhbGl6ZVRpbWVycyhkb3Vi
bGUpOwogICAgIHZvaWQgc2FtcGxlVGltZXJGaXJlZCgpOwogICAgIHZvaWQgc3RvcFRpbWVyRmly
ZWQoKTsKLSAgICB2b2lkIGFwcGVuZEN1cnJlbnRNZW1vcnlVc2FnZVRvRmlsZShXZWJDb3JlOjpG
aWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUmKTsKKyAgICB2b2lkIGFwcGVuZEN1cnJlbnRN
ZW1vcnlVc2FnZVRvRmlsZShGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUmKTsKICAgICB2
b2lkIHNlbmRNZW1vcnlQcmVzc3VyZUV2ZW50KCk7CiAgICAgCiAgICAgU3lzdGVtTWFsbG9jU3Rh
dHMgc2FtcGxlU3lzdGVtTWFsbG9jKCkgY29uc3Q7CkBAIC05NSw3ICs5NSw3IEBAIHByaXZhdGU6
CiAgICAgV2ViTWVtb3J5U3RhdGlzdGljcyBzYW1wbGVXZWJLaXQoKSBjb25zdDsKICAgICBTdHJp
bmcgcHJvY2Vzc05hbWUoKSBjb25zdDsKICAgICAKLSAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpQ
bGF0Zm9ybUZpbGVIYW5kbGUgbV9zYW1wbGVMb2dGaWxlIHsgV2ViQ29yZTo6RmlsZVN5c3RlbTo6
aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSB9OworICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmls
ZUhhbmRsZSBtX3NhbXBsZUxvZ0ZpbGUgeyBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxl
SGFuZGxlIH07CiAgICAgU3RyaW5nIG1fc2FtcGxlTG9nRmlsZVBhdGg7CiAgICAgV2ViQ29yZTo6
VGltZXIgbV9zYW1wbGVUaW1lcjsKICAgICBXZWJDb3JlOjpUaW1lciBtX3N0b3BUaW1lcjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2dsaWIvUHJvY2Vzc0V4ZWN1dGFibGVQYXRo
R0xpYi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9nbGliL1Byb2Nlc3NFeGVjdXRhYmxlUGF0
aEdMaWIuY3BwCmluZGV4IGE3MGI0MWEwOWE5MzBiYmRjM2I1NDFjZTZhNzA4YWQ4OWJiYzJmNGIu
LjRmZjM1ZDMxZGUxZDU3MjMxYTZmNmUxMDE1YTg1NWQ0MGY4YzhjMzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL2dsaWIvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoR0xpYi5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ2xpYi9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhHTGliLmNw
cApAQCAtMjcsMTIgKzI3LDExIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUHJv
Y2Vzc0V4ZWN1dGFibGVQYXRoLmgiCiAKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4K
ICNpbmNsdWRlIDxnbGliLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRl
IDx3dGYvZ2xpYi9HTGliVXRpbGl0aWVzLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewotdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKICNpZiBFTkFCTEUoREVWRUxPUEVSX01PREUpCiBzdGF0aWMg
U3RyaW5nIGdldEV4ZWN1dGFibGVQYXRoKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL2lvcy9DaGlsZFByb2Nlc3NJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvQ2hp
bGRQcm9jZXNzSU9TLm1tCmluZGV4IDgxZDU0ZjNiZjAwOWVmYWYwNWQ0MDJkNmY1Y2ZlYThkMTBm
NGI1NjcuLjY5ZDUzY2ZmMzE0YTk1Y2JjNGE4MDdhYjk4YzllY2E4MmZlMmJlMjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9DaGlsZFByb2Nlc3NJT1MubW0KKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvaW9zL0NoaWxkUHJvY2Vzc0lPUy5tbQpAQCAtMzEsNyArMzEsNiBA
QAogCiAjaW1wb3J0ICJTYW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzLmgiCiAjaW1wb3J0
ICJYUENTZXJ2aWNlRW50cnlQb2ludC5oIgotI2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0Zsb2F0aW5nUG9pbnRFbnZpcm9ubWVudC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9TeXN0ZW1WZXJzaW9uLmg+CiAjaW1wb3J0IDxtYWNoL21hY2guaD4KQEAgLTM5LDYg
KzM4LDcgQEAKICNpbXBvcnQgPHB3ZC5oPgogI2ltcG9ydCA8c3RkbGliLmg+CiAjaW1wb3J0IDxz
eXNleGl0cy5oPgorI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogI2lmIEVOQUJMRShNQU5V
QUxfU0FOREJPWElORykKICNpbXBvcnQgPHd0Zi9zcGkvZGFyd2luL1NhbmRib3hTUEkuaD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9DaGlsZFByb2Nlc3NNYWMubW0gYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQ2hpbGRQcm9jZXNzTWFjLm1tCmluZGV4IDNjMzk0Y2M5
MTZjMDk5MjBkMDMzM2YyYzRhMjU4ZTQ3ZjFlN2M5NzkuLjc4NTM2YWFlNjBiY2YwMmM5MjY2MGMz
MjgxMWE4ZDBmNThlZmY2ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9D
aGlsZFByb2Nlc3NNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0NoaWxkUHJv
Y2Vzc01hYy5tbQpAQCAtMzUsNyArMzUsNiBAQAogI2ltcG9ydCAiV0tGb3VuZGF0aW9uLmgiCiAj
aW1wb3J0ICJYUENTZXJ2aWNlRW50cnlQb2ludC5oIgogI2ltcG9ydCA8V2ViQ29yZS9GaWxlSGFu
ZGxlLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPFdlYkNvcmUv
U3lzdGVtVmVyc2lvbi5oPgogI2ltcG9ydCA8bWFjaC1vL2R5bGQuaD4KICNpbXBvcnQgPG1hY2gv
bWFjaC5oPgpAQCAtNDcsNiArNDYsNyBAQAogI2ltcG9ydCA8c3lzL3N5c2N0bC5oPgogI2ltcG9y
dCA8c3lzZXhpdHMuaD4KICNpbXBvcnQgPHd0Zi9EYXRhTG9nLmg+CisjaW1wb3J0IDx3dGYvRmls
ZVN5c3RlbS5oPgogI2ltcG9ydCA8d3RmL1JhbmRvbU51bWJlci5oPgogI2ltcG9ydCA8d3RmL1Nj
b3BlLmg+CiAjaW1wb3J0IDx3dGYvU3lzdGVtVHJhY2luZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvbWFjL1NhbmRib3hFeHRlbnNpb25NYWMubW0gYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9tYWMvU2FuZGJveEV4dGVuc2lvbk1hYy5tbQppbmRleCAwY2VjOTg1Yzc4NWM3NzM2
NTk3NzJkMjRmMWI2ZDU3NmQ3MWQ3NWUxLi5hZmJjNmIyYTE0ZTViZmYwYzE2NjU2YjdjMjA4Nzdj
YmNkZGQ0NTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvU2FuZGJveEV4
dGVuc2lvbk1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvU2FuZGJveEV4dGVu
c2lvbk1hYy5tbQpAQCAtMzEsMTMgKzMxLDEyIEBACiAjaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgi
CiAjaW1wb3J0ICJEZWNvZGVyLmgiCiAjaW1wb3J0ICJFbmNvZGVyLmgiCi0jaW1wb3J0IDxXZWJD
b3JlL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHN5cy9zdGF0Lmg+CisjaW1wb3J0IDx3dGYvRmls
ZVN5c3RlbS5oPgogI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oPgogI2ltcG9y
dCA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKLXVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCiBjbGFzcyBTYW5kYm94RXh0ZW5zaW9uSW1wbCB7CiBwdWJsaWM6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0
U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlz
dFN0b3JlLmNwcAppbmRleCAzOGY0MmNiOTFhNTM4ZWRlNjhlMjI1OTQxMDUwZjk2YWY2N2I5Njk4
Li5jNzY3ZTI4MzVmMjk3YmJiZTBhM2Y5MzYwYTkzZGM1NDM3ZTEwYjJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5j
cHAKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1F1YWxpZmllZE5hbWUuaD4K
ICNpbmNsdWRlIDxzdHJpbmc+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+Cisj
aW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4K
QEAgLTQ4LDcgKzQ5LDcgQEAKIAogbmFtZXNwYWNlIEFQSSB7CiB1c2luZyBuYW1lc3BhY2UgV2Vi
S2l0OjpOZXR3b3JrQ2FjaGU7Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTo6RmlsZVN5c3RlbTsK
K3VzaW5nIG5hbWVzcGFjZSBGaWxlU3lzdGVtOwogCiBDb250ZW50UnVsZUxpc3RTdG9yZSYgQ29u
dGVudFJ1bGVMaXN0U3RvcmU6OmxlZ2FjeURlZmF1bHRTdG9yZSgpCiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJV2Vic2l0ZURhdGFTdG9yZUNvY29h
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3Rv
cmVDb2NvYS5tbQppbmRleCA0YTJlYzM4NzIzN2ZmZGM4Y2E4OTQ3MTg2ZmZlZDBkNWNhNGVhNzU0
Li4zODg0ZjQzYzFlMjBhMTI5OGJhODg1N2ViMWIwOTE1NWE5OGIwMDc3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJV2Vic2l0ZURhdGFTdG9yZUNvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElXZWJzaXRlRGF0
YVN0b3JlQ29jb2EubW0KQEAgLTI4LDkgKzI4LDggQEAKIAogI2luY2x1ZGUgIlNhbmRib3hFeHRl
bnNpb24uaCIKICNpbmNsdWRlICJTYW5kYm94VXRpbGl0aWVzLmgiCi0KICNpbmNsdWRlIDxGb3Vu
ZGF0aW9uL0ZvdW5kYXRpb24uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KKyNp
bmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNp
bXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+CkBAIC0xNjksNyArMTY4
LDcgQEAgV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdEluZGV4ZWRE
QkRhdGFiYXNlRGlyZWN0b3J5KCkKICAgICAvLyBDdXJyZW50bHksIHRoZSB0b3AgbGV2ZWwgb2Yg
dGhhdCBkaXJlY3RvcnkgY29udGFpbnMgZW50aXRpZXMgcmVsYXRlZCB0byBXZWJTUUwgZGF0YWJh
c2VzLgogICAgIC8vIFdlIHNob3VsZCBmaXggdGhpcywgYW5kIG1vdmUgV2ViU1FMIGludG8gYSBz
dWJkaXJlY3RvcnkgKGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ4
MDcpCiAgICAgLy8gSW4gdGhlIG1lYW50aW1lLCBhbiBlbnRpdHkgbmFtZSBwcmVmaXhlZCB3aXRo
IHRocmVlIHVuZGVyc2NvcmVzIHdpbGwgbm90IGNvbmZsaWN0IHdpdGggYW55IFdlYlNRTCBlbnRp
dGllcy4KLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KGxlZ2FjeURlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpLCAiX19fSW5kZXhl
ZERCIik7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChs
ZWdhY3lEZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKSwgIl9fX0luZGV4ZWREQiIpOwog
fQogCiBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0TG9jYWxTdG9y
YWdlRGlyZWN0b3J5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcAppbmRleCBlMWM0NTI5YjNkMjFl
ZTU4YmZlZmI1YzE4ZmVmYjUxMTIyYzAxNjBmLi5mNWFiOTMxY2JlZDNiNzcxYmYzY2VjODEyY2I3
NDJlNDliYjY4NTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9BUElXZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvQVBJV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwCkBAIC0yNiw3ICsyNiw3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgog
Ci0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0
ZW0uaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CiAKICNpZiBQTEFURk9STShH
VEspCkBAIC00NiwxMiArNDYsMTIgQEAgV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKQogLy8gV2h5IGlzIG9ubHkgdGhpcyBkaXJl
Y3RvcnkgbmFtZXNwYWNlZCB0byBhIHBhcnRpY3VsYXIgYXBwbGljYXRpb24/CiBXVEY6OlN0cmlu
ZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkKIHsKLSAg
ICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oV2ViQ29yZTo6
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06
OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfcHJnbmFtZSgpKSwgIldl
YktpdENhY2hlIikpOworICAgIHJldHVybiBjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6
c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihnX2dldF9wcmduYW1lKCkpLCAiV2Vi
S2l0Q2FjaGUiKSk7CiB9CiAKIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRD
YWNoZVN0b3JhZ2VEaXJlY3RvcnkoKQogewotICAgIHJldHVybiBjYWNoZURpcmVjdG9yeUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihnX2dldF9wcmduYW1lKCkpLCAiQ2FjaGVTdG9yYWdlIikpOworICAgIHJldHVybiBj
YWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihnX2dldF9wcmduYW1lKCkpLCAiQ2FjaGVTdG9yYWdlIikpOwogfQogCiBXVEY6OlN0
cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnko
KQpAQCAtOTEsMTkgKzkxLDE5IEBAIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkKIAogV1RGOjpTdHJpbmcgV2Vic2l0
ZURhdGFTdG9yZTo6Y2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3Qg
V1RGOjpTdHJpbmcmIGRpcmVjdG9yeU5hbWUpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJp
bmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGdfZ2V0X3VzZXJfY2FjaGVfZGlyKCkpLCBk
aXJlY3RvcnlOYW1lKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19n
ZXRfdXNlcl9jYWNoZV9kaXIoKSksIGRpcmVjdG9yeU5hbWUpOwogfQogCiBXVEY6OlN0cmluZyBX
ZWJzaXRlRGF0YVN0b3JlOjp3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSkKIHsKLSAgICByZXR1cm4gV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVT
eXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfdXNlcl9kYXRh
X2RpcigpKSwgZGlyZWN0b3J5TmFtZSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKGdfZ2V0X3VzZXJfZGF0YV9kaXIoKSksIGRpcmVjdG9yeU5hbWUpOwogfQogCiBXVEY6
OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0QXBwbGljYXRpb25DYWNoZURp
cmVjdG9yeSgpCiB7CiAjaWYgUExBVEZPUk0oV1BFKQogICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGNh
Y2hlRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9jYWNoZV9kaXIoKSwgIndw
ZSIsICJhcHBjYWNoZSIsIG51bGxwdHIpKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjYWNoZURpcmVjdG9yeS5nZXQo
KSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oY2FjaGVEaXJlY3RvcnkuZ2V0KCkpOwogI2VuZGlmCiAgICAgcmV0dXJuIGRlZmF1bHRB
cHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCk7CiB9CkBAIC0xMTIsNyArMTEyLDcgQEAgV1RGOjpT
dHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9y
eSgpCiB7CiAjaWYgUExBVEZPUk0oV1BFKQogICAgIEdVbmlxdWVQdHI8Y2hhcj4gZGlza0NhY2hl
RGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9jYWNoZV9kaXIoKSwgIndwZSIs
ICJjYWNoZSIsIG51bGxwdHIpKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3Ry
aW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihkaXNrQ2FjaGVEaXJlY3RvcnkuZ2V0KCkp
OworICAgIHJldHVybiBGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKGRpc2tDYWNoZURpcmVjdG9yeS5nZXQoKSk7CiAjZW5kaWYKICAgICByZXR1cm4gZGVmYXVs
dE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpOwogfQpAQCAtMTIxLDcgKzEyMSw3IEBAIFdURjo6U3Ry
aW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9y
eSgpCiB7CiAjaWYgUExBVEZPUk0oV1BFKQogICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGRhdGFiYXNl
RGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9kYXRhX2RpcigpLCAid3BlIiwg
ImRhdGFiYXNlcyIsIG51bGxwdHIpKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6
c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihkYXRhYmFzZURpcmVjdG9yeS5nZXQo
KSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oZGF0YWJhc2VEaXJlY3RvcnkuZ2V0KCkpOwogI2VuZGlmCiAgICAgcmV0dXJuIGRlZmF1
bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpOwogfQpAQCAtMTMwLDcgKzEzMCw3IEBAIFdURjo6
U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRJbmRleGVkREJEYXRhYmFzZURp
cmVjdG9yeSgpCiB7CiAjaWYgUExBVEZPUk0oV1BFKQogICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGlu
ZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9kYXRh
X2RpcigpLCAid3BlIiwgImRhdGFiYXNlcyIsICJpbmRleGVkZGIiLCBudWxscHRyKSk7Ci0gICAg
cmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkuZ2V0KCkpOworICAgIHJldHVybiBGaWxl
U3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGluZGV4ZWREQkRhdGFi
YXNlRGlyZWN0b3J5LmdldCgpKTsKICNlbmRpZgogICAgIHJldHVybiBkZWZhdWx0SW5kZXhlZERC
RGF0YWJhc2VEaXJlY3RvcnkoKTsKIH0KQEAgLTEzOSw3ICsxMzksNyBAQCBXVEY6OlN0cmluZyBX
ZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkKIHsK
ICNpZiBQTEFURk9STShXUEUpCiAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gc3RvcmFnZURpcmVjdG9y
eShnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfZGF0YV9kaXIoKSwgIndwZSIsICJsb2NhbHN0
b3JhZ2UiLCBudWxscHRyKSk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmlu
Z0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oc3RvcmFnZURpcmVjdG9yeS5nZXQoKSk7Cisg
ICAgcmV0dXJuIEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
c3RvcmFnZURpcmVjdG9yeS5nZXQoKSk7CiAjZW5kaWYKICAgICByZXR1cm4gZGVmYXVsdExvY2Fs
U3RvcmFnZURpcmVjdG9yeSgpOwogfQpAQCAtMTQ4LDcgKzE0OCw3IEBAIFdURjo6U3RyaW5nIFdl
YnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KCkKIHsKICNp
ZiBQTEFURk9STShXUEUpCiAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gY2FjaGVEaXJlY3RvcnkoZ19i
dWlsZF9maWxlbmFtZShnX2dldF91c2VyX2NhY2hlX2RpcigpLCAid3BlIiwgIm1lZGlhY2FjaGUi
LCBudWxscHRyKSk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21G
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY2FjaGVEaXJlY3RvcnkuZ2V0KCkpOworICAgIHJldHVy
biBGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNhY2hlRGly
ZWN0b3J5LmdldCgpKTsKICNlbmRpZgogICAgIHJldHVybiBkZWZhdWx0TWVkaWFDYWNoZURpcmVj
dG9yeSgpOwogfQpAQCAtMTU3LDcgKzE1Nyw3IEBAIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3Rv
cmU6OmxlZ2FjeURlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkKIHsKICNpZiBQTEFU
Rk9STShXUEUpCiAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9y
eShnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfZGF0YV9kaXIoKSwgIndwZSIsICJtZWRpYWtl
eXMiLCBudWxscHRyKSk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zy
b21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24obWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeS5nZXQo
KSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24obWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeS5nZXQoKSk7CiAjZW5kaWYKICAgICByZXR1
cm4gZGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKTsKIH0KQEAgLTE2Niw3ICsxNjYs
NyBAQCBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdERldmljZUlkSGFzaFNh
bHRzU3RvcmFnZURpcmVjdG9yeSgpCiB7CiAjaWYgUExBVEZPUk0oV1BFKQogICAgIEdVbmlxdWVQ
dHI8Z2NoYXI+IGRldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeShnX2J1aWxkX2ZpbGVu
YW1lKGdfZ2V0X3VzZXJfZGF0YV9kaXIoKSwgIndwZSIsICJkZXZpY2VpZGhhc2hzYWx0cyIsIG51
bGxwdHIpKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihkZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkuZ2V0
KCkpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKGRldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeS5nZXQoKSk7CiAjZW5kaWYK
ICAgICByZXR1cm4gZGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpOwog
fQpAQCAtMTc0LDcgKzE3NCw3IEBAIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZh
dWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCkKIFdURjo6U3RyaW5nIFdlYnNp
dGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9y
eSgpCiB7CiAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gamF2YVNjcmlwdENvcmVDb25maWdEaXJlY3Rv
cnkoZ19idWlsZF9maWxlbmFtZShnX2dldF91c2VyX2RhdGFfZGlyKCksIEJBU0VfRElSRUNUT1JZ
LCAiSmF2YVNjcmlwdENvcmVEZWJ1ZyIsIG51bGxwdHIpKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6
RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihqYXZhU2NyaXB0
Q29yZUNvbmZpZ0RpcmVjdG9yeS5nZXQoKSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnN0cmlu
Z0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oamF2YVNjcmlwdENvcmVDb25maWdEaXJlY3Rv
cnkuZ2V0KCkpOwogfQogCiBSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bj4gV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24oKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAKaW5k
ZXggNjc0YTVkYjA0M2M4YTYwZjM2MjBhYTdiYTAxOGMxZjk4NWVkZjhhOS4uYjA0NjZlOTE0MDkw
YmMwNTU5NjZlNmI5ZGYzMTllYTMwNGRiMjM1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCkBAIC0yOSwxMSArMjksMTEgQEAKIAog
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0JpdG1hcEltYWdlLmg+Ci0j
aW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlU3RhdGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9TUUxpdGVUcmFuc2FjdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+
CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5o
PgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJF
eHRyYXMuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdEZhdmljb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwCmluZGV4IDliZTcyNTNmODVlOTFkYTExYjk1ZWQy
ODA5ZWI0NGI1YTM3MTVhNWEuLmUwMTY0ODY4MTcxYTVkOGJlZThhM2UxODZhYzY4MjVjNDkxZDk3
MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZh
dmljb25EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcApAQCAtMjMsMTIgKzIzLDEyIEBACiAjaW5jbHVkZSAi
SWNvbkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiV2ViS2l0RmF2aWNvbkRhdGFiYXNlUHJpdmF0ZS5o
IgogI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lz
dGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50
U2l6ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVmUHRyQ2Fpcm8uaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisjaW5jbHVk
ZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUg
PHd0Zi9TZXRGb3JTY29wZS5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KQEAgLTI3
Myw3ICsyNzMsNyBAQCB2b2lkIHdlYmtpdEZhdmljb25EYXRhYmFzZU9wZW4oV2ViS2l0RmF2aWNv
bkRhdGFiYXNlKiBkYXRhYmFzZSwgY29uc3QgU3RyaW5nJiBwYQogICAgIHByaXYtPmljb25EYXRh
YmFzZS0+c2V0RW5hYmxlZCh0cnVlKTsKICAgICBwcml2LT5pY29uRGF0YWJhc2UtPnNldFByaXZh
dGVCcm93c2luZ0VuYWJsZWQoV2ViUHJlZmVyZW5jZXM6OmFueVBhZ2VzQXJlVXNpbmdQcml2YXRl
QnJvd3NpbmcoKSk7CiAKLSAgICBpZiAoIXByaXYtPmljb25EYXRhYmFzZS0+b3BlbihXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKHBhdGgpLCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpw
YXRoR2V0RmlsZU5hbWUocGF0aCkpKSB7CisgICAgaWYgKCFwcml2LT5pY29uRGF0YWJhc2UtPm9w
ZW4oRmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShwYXRoKSwgRmlsZVN5c3RlbTo6cGF0aEdldEZp
bGVOYW1lKHBhdGgpKSkgewogICAgICAgICBwcml2LT5pY29uRGF0YWJhc2UgPSBudWxscHRyOwog
ICAgICAgICBJY29uRGF0YWJhc2U6OmFsbG93RGF0YWJhc2VDbGVhbnVwKCk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmlsZUNob29z
ZXJSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZp
bGVDaG9vc2VyUmVxdWVzdC5jcHAKaW5kZXggMzdlNmNjYTBjZWJjZTkxNDczMGUzYzZkNDI1YzVm
ZWY3N2ZiNDg1Zi4uMDk5ODBhYWUwNjk5ZWJjZTlkMzNlOWM1YTY5N2EwMmRlMDQ3MDNkOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmlsZUNob29z
ZXJSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRGaWxlQ2hvb3NlclJlcXVlc3QuY3BwCkBAIC0yNSw5ICsyNSw5IEBACiAjaW5jbHVkZSAiQVBJ
U3RyaW5nLmgiCiAjaW5jbHVkZSAiV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0UHJpdmF0ZS5oIgog
I2luY2x1ZGUgIldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuaCIKLSNpbmNsdWRlIDxX
ZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHRFbmNvZGluZy5oPgog
I2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4K
ICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKaW5kZXggMGYzOWUxMjVmM2Rh
NmM0ODM5NmE0MGM5Y2RmZThmNGM0MWQ5NjlhZS4uYTNhZDlmOWM3YjY1YmEzYTMzNzNjODI1MDc2
MzM1YzU2YjkyZmUxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKQEAgLTU0LDEwICs1NCwxMCBAQAogI2luY2x1ZGUg
IldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhVHlw
ZS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1JlbW90ZUluc3BlY3Rvci5oPgotI2luY2x1
ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CiAj
aW5jbHVkZSA8bGliaW50bC5oPgogI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx3dGYvRmls
ZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0xhbmd1
YWdlLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CkBAIC0zMzMsMjAgKzMzMywy
MCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJDb250ZXh0Q29uc3RydWN0ZWQoR09iamVjdCogb2Jq
ZWN0KQogICAgIEdVbmlxdWVQdHI8Y2hhcj4gYnVuZGxlRmlsZW5hbWUoZ19idWlsZF9maWxlbmFt
ZShpbmplY3RlZEJ1bmRsZURpcmVjdG9yeSgpLCBJTkpFQ1RFRF9CVU5ETEVfRklMRU5BTUUsIG51
bGxwdHIpKTsKIAogICAgIEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRp
b247Ci0gICAgY29uZmlndXJhdGlvbi5zZXRJbmplY3RlZEJ1bmRsZVBhdGgoV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihidW5kbGVGaWxlbmFt
ZS5nZXQoKSkpOworICAgIGNvbmZpZ3VyYXRpb24uc2V0SW5qZWN0ZWRCdW5kbGVQYXRoKEZpbGVT
eXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oYnVuZGxlRmlsZW5hbWUu
Z2V0KCkpKTsKICAgICBjb25maWd1cmF0aW9uLnNldE1heGltdW1Qcm9jZXNzQ291bnQoMSk7CiAg
ICAgY29uZmlndXJhdGlvbi5zZXREaXNrQ2FjaGVTcGVjdWxhdGl2ZVZhbGlkYXRpb25FbmFibGVk
KHRydWUpOwogCiAgICAgV2ViS2l0V2ViQ29udGV4dCogd2ViQ29udGV4dCA9IFdFQktJVF9XRUJf
Q09OVEVYVChvYmplY3QpOwogICAgIFdlYktpdFdlYkNvbnRleHRQcml2YXRlKiBwcml2ID0gd2Vi
Q29udGV4dC0+cHJpdjsKICAgICBpZiAocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyICYmICF3ZWJr
aXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfaXNfZXBoZW1lcmFsKHByaXYtPndlYnNpdGVEYXRhTWFu
YWdlci5nZXQoKSkpIHsKLSAgICAgICAgY29uZmlndXJhdGlvbi5zZXRMb2NhbFN0b3JhZ2VEaXJl
Y3RvcnkoV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2xvY2FsX3N0b3JhZ2VfZGlyZWN0
b3J5KHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpKTsKLSAgICAgICAgY29uZmlndXJh
dGlvbi5zZXREaXNrQ2FjaGVEaXJlY3RvcnkoV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24od2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9kaXNrX2NhY2hl
X2RpcmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSwgbmV0d29ya0NhY2hl
U3ViZGlyZWN0b3J5KSk7Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0QXBwbGljYXRpb25DYWNo
ZURpcmVjdG9yeShXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfb2ZmbGluZV9hcHBsaWNh
dGlvbl9jYWNoZV9kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSkpOwot
ICAgICAgICBjb25maWd1cmF0aW9uLnNldEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KFdlYkNv
cmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0
X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9pbmRleGVkZGJfZGlyZWN0b3J5KHByaXYtPndlYnNp
dGVEYXRhTWFuYWdlci5nZXQoKSkpKTsKLSAgICAgICAgY29uZmlndXJhdGlvbi5zZXRXZWJTUUxE
YXRhYmFzZURpcmVjdG9yeShXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfd2Vic3FsX2Rp
cmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSk7CisgICAgICAgIGNvbmZp
Z3VyYXRpb24uc2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21G
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9s
b2NhbF9zdG9yYWdlX2RpcmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSk7
CisgICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0RGlza0NhY2hlRGlyZWN0b3J5KEZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfZGlza19jYWNo
ZV9kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSksIG5ldHdvcmtDYWNo
ZVN1YmRpcmVjdG9yeSkpOworICAgICAgICBjb25maWd1cmF0aW9uLnNldEFwcGxpY2F0aW9uQ2Fj
aGVEaXJlY3RvcnkoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X29mZmxpbmVfYXBwbGljYXRpb25fY2Fj
aGVfZGlyZWN0b3J5KHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpKTsKKyAgICAgICAg
Y29uZmlndXJhdGlvbi5zZXRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeShGaWxlU3lzdGVtOjpz
dHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFu
YWdlcl9nZXRfaW5kZXhlZGRiX2RpcmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0
KCkpKSk7CisgICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0V2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnko
RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vi
c2l0ZV9kYXRhX21hbmFnZXJfZ2V0X3dlYnNxbF9kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURhdGFN
YW5hZ2VyLmdldCgpKSkpOwogICAgIH0gZWxzZSBpZiAoIXByaXYtPmxvY2FsU3RvcmFnZURpcmVj
dG9yeS5pc051bGwoKSkKLSAgICAgICAgY29uZmlndXJhdGlvbi5zZXRMb2NhbFN0b3JhZ2VEaXJl
Y3RvcnkoV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihwcml2LT5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkuZGF0YSgpKSk7CisgICAgICAgIGNvbmZp
Z3VyYXRpb24uc2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21G
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+bG9jYWxTdG9yYWdlRGlyZWN0b3J5LmRhdGEo
KSkpOwogCiAgICAgcHJpdi0+cHJvY2Vzc1Bvb2wgPSBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlKGNv
bmZpZ3VyYXRpb24pOwogCkBAIC05MjQsNyArOTI0LDcgQEAgdm9pZCB3ZWJraXRfd2ViX2NvbnRl
eHRfc2V0X2Zhdmljb25fZGF0YWJhc2VfZGlyZWN0b3J5KFdlYktpdFdlYkNvbnRleHQqIGNvbnRl
eHQKICAgICBXZWJLaXRXZWJDb250ZXh0UHJpdmF0ZSogcHJpdiA9IGNvbnRleHQtPnByaXY7CiAg
ICAgZW5zdXJlRmF2aWNvbkRhdGFiYXNlKGNvbnRleHQpOwogCi0gICAgU3RyaW5nIGRpcmVjdG9y
eVBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKHBhdGgpOworICAgIFN0cmluZyBkaXJlY3RvcnlQYXRoID0gRmlsZVN5c3RlbTo6c3Ry
aW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKICAgICAvLyBVc2UgZGVmYXVs
dCBpZiBudWxscHRyIGlzIHBhc3NlZCBhcyBwYXJhbWV0ZXIuCiAgICAgaWYgKGRpcmVjdG9yeVBh
dGguaXNFbXB0eSgpKSB7CiAjaWYgUExBVEZPUk0oR1RLKQpAQCAtOTMzLDcgKzkzMyw3IEBAIHZv
aWQgd2Via2l0X3dlYl9jb250ZXh0X3NldF9mYXZpY29uX2RhdGFiYXNlX2RpcmVjdG9yeShXZWJL
aXRXZWJDb250ZXh0KiBjb250ZXh0CiAgICAgICAgIGNvbnN0IGNoYXIqIHBvcnREaXJlY3Rvcnkg
PSAid3BlIjsKICNlbmRpZgogICAgICAgICBHVW5pcXVlUHRyPGdjaGFyPiBkYXRhYmFzZURpcmVj
dG9yeShnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfY2FjaGVfZGlyKCksIHBvcnREaXJlY3Rv
cnksICJpY29uZGF0YWJhc2UiLCBudWxscHRyKSk7Ci0gICAgICAgIGRpcmVjdG9yeVBhdGggPSBX
ZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRh
dGFiYXNlRGlyZWN0b3J5LmdldCgpKTsKKyAgICAgICAgZGlyZWN0b3J5UGF0aCA9IEZpbGVTeXN0
ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGF0YWJhc2VEaXJlY3Rvcnku
Z2V0KCkpOwogICAgIH0KICAgICBwcml2LT5mYXZpY29uRGF0YWJhc2VEaXJlY3RvcnkgPSBkaXJl
Y3RvcnlQYXRoLnV0ZjgoKTsKIApAQCAtOTQyLDcgKzk0Miw3IEBAIHZvaWQgd2Via2l0X3dlYl9j
b250ZXh0X3NldF9mYXZpY29uX2RhdGFiYXNlX2RpcmVjdG9yeShXZWJLaXRXZWJDb250ZXh0KiBj
b250ZXh0CiAgICAgICAgICJXZWJwYWdlSWNvbnMuZGIiLCBudWxscHRyKSk7CiAKICAgICAvLyBT
ZXR0aW5nIHRoZSBwYXRoIHdpbGwgY2F1c2UgdGhlIGljb24gZGF0YWJhc2UgdG8gYmUgb3BlbmVk
LgotICAgIHdlYmtpdEZhdmljb25EYXRhYmFzZU9wZW4ocHJpdi0+ZmF2aWNvbkRhdGFiYXNlLmdl
dCgpLCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKGZhdmljb25EYXRhYmFzZVBhdGguZ2V0KCkpKTsKKyAgICB3ZWJraXRGYXZpY29uRGF0YWJh
c2VPcGVuKHByaXYtPmZhdmljb25EYXRhYmFzZS5nZXQoKSwgRmlsZVN5c3RlbTo6c3RyaW5nRnJv
bUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmYXZpY29uRGF0YWJhc2VQYXRoLmdldCgpKSk7CiAK
ICAgICBpZiAod2Via2l0X3dlYl9jb250ZXh0X2lzX2VwaGVtZXJhbChjb250ZXh0KSkKICAgICAg
ICAgd2Via2l0RmF2aWNvbkRhdGFiYXNlU2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChwcml2LT5m
YXZpY29uRGF0YWJhc2UuZ2V0KCksIHRydWUpOwpAQCAtMTAyNiw3ICsxMDI2LDcgQEAgdm9pZCB3
ZWJraXRfd2ViX2NvbnRleHRfc2V0X2FkZGl0aW9uYWxfcGx1Z2luc19kaXJlY3RvcnkoV2ViS2l0
V2ViQ29udGV4dCogY29udGUKICAgICBnX3JldHVybl9pZl9mYWlsKGRpcmVjdG9yeSk7CiAKICNp
ZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLSAgICBjb250ZXh0LT5wcml2LT5wcm9jZXNz
UG9vbC0+c2V0QWRkaXRpb25hbFBsdWdpbnNEaXJlY3RvcnkoV2ViQ29yZTo6RmlsZVN5c3RlbTo6
c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihkaXJlY3RvcnkpKTsKKyAgICBjb250
ZXh0LT5wcml2LT5wcm9jZXNzUG9vbC0+c2V0QWRkaXRpb25hbFBsdWdpbnNEaXJlY3RvcnkoRmls
ZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihkaXJlY3RvcnkpKTsK
ICNlbmRpZgogfQogCkBAIC0xNDE4LDcgKzE0MTgsNyBAQCB2b2lkIHdlYmtpdF93ZWJfY29udGV4
dF9zZXRfZGlza19jYWNoZV9kaXJlY3RvcnkoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCwgY29u
cwogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9DT05URVhUKGNvbnRleHQpKTsK
ICAgICBnX3JldHVybl9pZl9mYWlsKGRpcmVjdG9yeSk7CiAKLSAgICBjb250ZXh0LT5wcml2LT5w
cm9jZXNzUG9vbC0+Y29uZmlndXJhdGlvbigpLnNldERpc2tDYWNoZURpcmVjdG9yeShXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihkaXJlY3RvcnkpLCBuZXR3b3Jr
Q2FjaGVTdWJkaXJlY3RvcnkpKTsKKyAgICBjb250ZXh0LT5wcml2LT5wcm9jZXNzUG9vbC0+Y29u
ZmlndXJhdGlvbigpLnNldERpc2tDYWNoZURpcmVjdG9yeShGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihkaXJlY3RvcnkpLCBuZXR3b3JrQ2FjaGVTdWJkaXJlY3RvcnkpKTsKIH0KICNlbmRpZgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJz
aXRlRGF0YU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmNwcAppbmRleCA3ZTFkMTRiNjdiOTUzOGY0NzVlMGY4YWY0
NTBhYWJkZWYyZTIxNTVlLi4xY2MwNjU0MTFlNzMxZmE2NzJjNDM0ZjNiM2MwYWJlOWE1NjkzZWJk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJz
aXRlRGF0YU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5jcHAKQEAgLTI2LDggKzI2LDggQEAKICNpbmNsdWRl
ICJXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2Vi
c2l0ZURhdGFQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFGZXRjaE9wdGlvbi5oIgot
I2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGli
Lmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5p
cXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvV1RGR1R5cGUuaD4KIApAQCAtMzYzLDEzICsz
NjMsMTMgQEAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlJiB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJH
ZXREYXRhU3RvcmUoV2ViS2l0V2Vic2l0ZURhdGFNYW4KICAgICBpZiAoIXByaXYtPndlYnNpdGVE
YXRhU3RvcmUpIHsKICAgICAgICAgYXV0byBjb25maWd1cmF0aW9uID0gV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOwogICAgICAgICBjb25maWd1cmF0aW9uLT5zZXRMb2Nh
bFN0b3JhZ2VEaXJlY3RvcnkoIXByaXYtPmxvY2FsU3RvcmFnZURpcmVjdG9yeSA/Ci0gICAgICAg
ICAgICBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3Rvcnko
KSA6IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24ocHJpdi0+bG9jYWxTdG9yYWdlRGlyZWN0b3J5LmdldCgpKSk7CisgICAgICAgICAgICBBUEk6
OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSA6IEZpbGVT
eXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+bG9jYWxTdG9y
YWdlRGlyZWN0b3J5LmdldCgpKSk7CiAgICAgICAgIGNvbmZpZ3VyYXRpb24tPnNldE5ldHdvcmtD
YWNoZURpcmVjdG9yeSghcHJpdi0+ZGlza0NhY2hlRGlyZWN0b3J5ID8KLSAgICAgICAgICAgIEFQ
STo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpIDogV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVT
eXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+ZGlza0NhY2hl
RGlyZWN0b3J5LmdldCgpKSwgbmV0d29ya0NhY2hlU3ViZGlyZWN0b3J5KSk7CisgICAgICAgICAg
ICBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKSA6
IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpzdHJpbmdG
cm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPmRpc2tDYWNoZURpcmVjdG9yeS5nZXQo
KSksIG5ldHdvcmtDYWNoZVN1YmRpcmVjdG9yeSkpOwogICAgICAgICBjb25maWd1cmF0aW9uLT5z
ZXRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCFwcml2LT5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0
b3J5ID8KLSAgICAgICAgICAgIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0
aW9uQ2FjaGVEaXJlY3RvcnkoKSA6IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeS5nZXQo
KSkpOworICAgICAgICAgICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRp
b25DYWNoZURpcmVjdG9yeSgpIDogRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihwcml2LT5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5LmdldCgpKSk7CiAgICAg
ICAgIGNvbmZpZ3VyYXRpb24tPnNldFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCFwcml2LT53ZWJT
UUxEaXJlY3RvcnkgPwotICAgICAgICAgICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKSA6IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zy
b21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+d2ViU1FMRGlyZWN0b3J5LmdldCgpKSk7
CisgICAgICAgICAgICBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxEYXRhYmFz
ZURpcmVjdG9yeSgpIDogRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihwcml2LT53ZWJTUUxEaXJlY3RvcnkuZ2V0KCkpKTsKICAgICAgICAgY29uZmlndXJhdGlv
bi0+c2V0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeShBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkpOwogICAgICAgICBwcml2LT53ZWJzaXRl
RGF0YVN0b3JlID0gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGVMZWdhY3koV1RGTW92ZShj
b25maWd1cmF0aW9uKSk7CiAgICAgfQpAQCAtNTMyLDcgKzUzMiw3IEBAIGNvbnN0IGdjaGFyKiB3
ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2Rpc2tfY2FjaGVfZGlyZWN0b3J5KFdlYktp
dFdlYnNpdGVECiAKICAgICBpZiAoIXByaXYtPmRpc2tDYWNoZURpcmVjdG9yeSkgewogICAgICAg
ICAvLyBUaGUgZGVmYXVsdCBkaXJlY3RvcnkgYWxyZWFkeSBoYXMgdGhlIHN1YmRpcmVjdG9yeS4K
LSAgICAgICAgcHJpdi0+ZGlza0NhY2hlRGlyZWN0b3J5LnJlc2V0KGdfc3RyZHVwKFdlYkNvcmU6
OkZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkpLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICAgICAgcHJpdi0+
ZGlza0NhY2hlRGlyZWN0b3J5LnJlc2V0KGdfc3RyZHVwKEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5h
bWUoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkp
LnV0ZjgoKS5kYXRhKCkpKTsKICAgICB9CiAgICAgcmV0dXJuIHByaXYtPmRpc2tDYWNoZURpcmVj
dG9yeS5nZXQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93
aW4vQVBJV2Vic2l0ZURhdGFTdG9yZVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvd2luL0FQSVdlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCmluZGV4IDE5YmUyODhkNDgyZGFhZmRk
MThlNGNmZGZlZGNlMjAzYWFjNzViZGQuLjMyMjViOTIxNzBkN2M5OGI0YmU4NDVhY2NmZThkOGMx
YjM2N2Q3YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93aW4vQVBJ
V2Vic2l0ZURhdGFTdG9yZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L3dpbi9BUElXZWJzaXRlRGF0YVN0b3JlV2luLmNwcApAQCAtMjYsNDMgKzI2LDQzIEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgogCi0jaW5j
bHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4K
IAogbmFtZXNwYWNlIEFQSSB7CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBw
bGljYXRpb25DYWNoZURpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpsb2NhbFVz
ZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkFwcGxpY2F0aW9uQ2FjaGUiKTsKKyAgICBy
ZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06Omxv
Y2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiQXBwbGljYXRpb25DYWNoZSIpOwog
fQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9y
eSgpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJl
Y3RvcnkoKSwgIkNhY2hlU3RvcmFnZSIpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGly
ZWN0b3J5KCksICJDYWNoZVN0b3JhZ2UiKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKQogewotICAgIHJldHVybiBXZWJDb3JlOjpG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6
bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJOZXR3b3JrQ2FjaGUiKTsKKyAg
ICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06
OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiTmV0d29ya0NhY2hlIik7CiB9
CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJl
Y3RvcnkoKQogewotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdl
RGlyZWN0b3J5KCksICJJbmRleGVkREIiKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURp
cmVjdG9yeSgpLCAiSW5kZXhlZERCIik7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJu
IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpG
aWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIlNlcnZpY2VX
b3JrZXJzIik7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIlNlcnZp
Y2VXb3JrZXJzIik7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxT
dG9yYWdlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNp
ZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiTG9jYWxTdG9yYWdlIik7CisgICAgcmV0dXJuIEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVj
aWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkxvY2FsU3RvcmFnZSIpOwogfQogCiBTdHJpbmcgV2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKQogewotICAg
IHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJN
ZWRpYUtleVN0b3JhZ2UiKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgp
LCAiTWVkaWFLZXlTdG9yYWdlIik7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCkKQEAgLTczLDU3ICs3Myw1NyBA
QCBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFn
ZURpcmVjdG9yeSgpCiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0V2ViU1FMRGF0
YWJhc2VEaXJlY3RvcnkoKQogewotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lm
aWNTdG9yYWdlRGlyZWN0b3J5KCksICJXZWJTUUwiKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3Rv
cmFnZURpcmVjdG9yeSgpLCAiV2ViU1FMIik7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJu
IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpG
aWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIlJlc291cmNl
TG9hZFN0YXRpc3RpY3MiKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgp
LCAiUmVzb3VyY2VMb2FkU3RhdGlzdGljcyIpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9y
ZTo6Y2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBk
aXJlY3RvcnlOYW1lKQogewotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNT
dG9yYWdlRGlyZWN0b3J5KCksIGRpcmVjdG9yeU5hbWUpOworICAgIHJldHVybiBGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNT
dG9yYWdlRGlyZWN0b3J5KCksIGRpcmVjdG9yeU5hbWUpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURh
dGFTdG9yZTo6d2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29u
c3QgU3RyaW5nJiBkaXJlY3RvcnlOYW1lKQogewotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6bG9jYWxV
c2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksIGRpcmVjdG9yeU5hbWUpOworICAgIHJldHVy
biBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxV
c2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksIGRpcmVjdG9yeU5hbWUpOwogfQogCiBTdHJp
bmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rv
cnkoKQogewotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGly
ZWN0b3J5KCksICJBcHBsaWNhdGlvbkNhY2hlIik7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3Jh
Z2VEaXJlY3RvcnkoKSwgIkFwcGxpY2F0aW9uQ2FjaGUiKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVE
YXRhU3RvcmU6OmxlZ2FjeURlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKQogewotICAgIHJl
dHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJOZXR3
b3JrQ2FjaGUiKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiTmV0
d29ya0NhY2hlIik7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0
V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKQogewotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6bG9jYWxV
c2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJXZWJTUUwiKTsKKyAgICByZXR1cm4gRmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNw
ZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiV2ViU1FMIik7CiB9CiAKIFN0cmluZyBXZWJzaXRl
RGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKQogewot
ICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
V2ViQ29yZTo6RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCks
ICJJbmRleGVkREIiKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAi
SW5kZXhlZERCIik7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0
TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmxvY2FsVXNl
clNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiTG9jYWxTdG9yYWdlIik7CisgICAgcmV0dXJu
IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVz
ZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkxvY2FsU3RvcmFnZSIpOwogfQogCiBTdHJp
bmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdE1lZGlhQ2FjaGVEaXJlY3RvcnkoKQog
ewotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5
KCksICJNZWRpYUNhY2hlIik7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3Rvcnko
KSwgIk1lZGlhQ2FjaGUiKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURl
ZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06
OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiTWVkaWFLZXlTdG9yYWdlIik7
CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lz
dGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIk1lZGlhS2V5U3RvcmFn
ZSIpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdERldmljZUlk
SGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpCkBAIC0xMzQsNyArMTM0LDcgQEAgU3RyaW5nIFdl
YnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJl
Y3RvcnkoKQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdEphdmFTY3Jp
cHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmxvY2Fs
VXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiSmF2YVNjcmlwdENvcmVEZWJ1ZyIpOwor
ICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3Rl
bTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJKYXZhU2NyaXB0Q29yZURl
YnVnIik7CiB9CiAKIFJlZjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiBX
ZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNz
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlv
blNlc3Npb24uY3BwCmluZGV4IDgwNTQ3ZTZiZTEzODY1NWYwNzk4YjY3NmRjMTJkYzlhYjMzYWNm
MWIuLmY4ODQ0YWZlNmQyMmU0Y2Q1ZWUyMDgxNDhiNGY0OTJmN2NjNjMxMGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlv
blNlc3Npb24uY3BwCkBAIC04MDYsNyArODA2LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lv
bjo6d2lsbENsb3NlUGFnZShjb25zdCBXZWJQYWdlUHJveHkmIHBhZ2UpCiAKIHN0YXRpYyBib29s
IGZpbGVDYW5CZUFjY2VwdGVkRm9yVXBsb2FkKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0
IEhhc2hTZXQ8U3RyaW5nPiYgYWxsb3dlZE1JTUVUeXBlcywgY29uc3QgSGFzaFNldDxTdHJpbmc+
JiBhbGxvd2VkRmlsZUV4dGVuc2lvbnMpCiB7Ci0gICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVt
OjpmaWxlRXhpc3RzKGZpbGVuYW1lKSkKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMo
ZmlsZW5hbWUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoYWxsb3dlZE1JTUVU
eXBlcy5pc0VtcHR5KCkgJiYgYWxsb3dlZEZpbGVFeHRlbnNpb25zLmlzRW1wdHkoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQubW0KaW5kZXggM2I0
OTYyOGZkZjZkZmM1YWFkZDAyOWQ1YTJjYmNiNmJmYjc4Y2ZjMS4uYzcyN2JkMjNlZjk1NTI1MWY3
OTgwOWQ2OWM1ODIzMjE5N2FmMWViNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvRG93bmxvYWRDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvRG93bmxvYWRDbGllbnQubW0KQEAgLTQyLDEwICs0MiwxMCBAQAogI2ltcG9ydCAiV2Vi
UHJvY2Vzc1Byb3h5LmgiCiAjaW1wb3J0ICJfV0tEb3dubG9hZERlbGVnYXRlLmgiCiAjaW1wb3J0
ICJfV0tEb3dubG9hZEludGVybmFsLmgiCi0jaW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4K
ICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNv
dXJjZVJlc3BvbnNlLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KKyNpbXBvcnQgPHd0Zi9G
aWxlU3lzdGVtLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC0xODEsNyArMTgxLDcgQEAg
dm9pZCBEb3dubG9hZENsaWVudDo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5h
bWUoV2ViUHJvY2Vzc1Bvb2wmLCBEb3cKIHsKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCiAgICAg
aWYgKGRvd25sb2FkUHJveHkuaXNTeXN0ZW1QcmV2aWV3RG93bmxvYWQoKSkgewotICAgICAgICBO
U1N0cmluZyAqdGVtcG9yYXJ5RGlyZWN0b3J5ID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6Y3JlYXRl
VGVtcG9yYXJ5RGlyZWN0b3J5KEAiU3lzdGVtUHJldmlld3MiKTsKKyAgICAgICAgTlNTdHJpbmcg
KnRlbXBvcmFyeURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9y
eShAIlN5c3RlbVByZXZpZXdzIik7CiAgICAgICAgIE5TU3RyaW5nICpkZXN0aW5hdGlvbiA9IFt0
ZW1wb3JhcnlEaXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmZpbGVuYW1l
XTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQWxsb3dPdmVyd3JpdGU6OlllcywgZGVzdGlu
YXRpb24pOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQppbmRleCA1NmNmMGZkMDU5MGM2MTU0M2Qz
NDEwZjg0ZjY2ZDE5YzdlZDg1MWJmLi4yZGFmNzU1NzFjY2IxYTlkNzA1YmFhMDU3YWQ2MjRhNWE2
OThhNDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9j
ZXNzUG9vbENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBy
b2Nlc3NQb29sQ29jb2EubW0KQEAgLTQzLDcgKzQzLDYgQEAKICNpbXBvcnQgIldlYlByb2Nlc3NN
ZXNzYWdlcy5oIgogI2ltcG9ydCAiV2luZG93U2VydmVyQ29ubmVjdGlvbi5oIgogI2ltcG9ydCA8
V2ViQ29yZS9Db2xvci5oPgotI2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob3RJ
bXBsZW1lbnRlZC5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybVBhc3RlYm9hcmQuaD4KQEAg
LTUyLDYgKzUxLDcgQEAKICNpbXBvcnQgPHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg+CiAjaW1w
b3J0IDxwYWwvc3BpL2NvY29hL05TS2V5ZWRBcmNoaXZlclNQSS5oPgogI2ltcG9ydCA8c3lzL3Bh
cmFtLmg+CisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8d3RmL1Byb2Nlc3NQ
cml2aWxlZ2UuaD4KICNpbXBvcnQgPHd0Zi9jb2NvYS9FbnRpdGxlbWVudHMuaD4KICNpbXBvcnQg
PHd0Zi9zcGkvZGFyd2luL2R5bGRTUEkuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViVmlld0ltcGwubW0KaW5kZXggMDY0ZTBkZmQ5MGZmNmJiOWRkYzNhYjQ0MmVjOGNkYTY5
YWEyZDk2ZC4uMTYwOTVhOGJkMTU2NDg4NDljNmFlYjEzMTE2NWU2Mzc0ZmUwZThiZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTg0LDcgKzg0
LDYgQEAKICNpbXBvcnQgPFdlYkNvcmUvRHJhZ0RhdGEuaD4KICNpbXBvcnQgPFdlYkNvcmUvRHJh
Z0l0ZW0uaD4KICNpbXBvcnQgPFdlYkNvcmUvRWRpdG9yLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0Zp
bGVTeXN0ZW0uaD4KICNpbXBvcnQgPFdlYkNvcmUvRm9udEF0dHJpYnV0ZUNoYW5nZXMuaD4KICNp
bXBvcnQgPFdlYkNvcmUvRm9udEF0dHJpYnV0ZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvS2V5cHJl
c3NDb21tYW5kLmg+CkBAIC0xMTUsNiArMTE0LDcgQEAKICNpbXBvcnQgPHBhbC9zcGkvbWFjL05T
Vmlld1NQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9tYWMvTlNXaW5kb3dTUEkuaD4KICNpbXBvcnQg
PHN5cy9zdGF0Lmg+CisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8d3RmL05l
dmVyRGVzdHJveWVkLmg+CiAjaW1wb3J0IDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgogI2ltcG9y
dCA8d3RmL1NldEZvclNjb3BlLmg+CkBAIC0zOTY5LDcgKzM5NjksNyBAQCBib29sIFdlYlZpZXdJ
bXBsOjpwZXJmb3JtRHJhZ09wZXJhdGlvbihpZCA8TlNEcmFnZ2luZ0luZm8+IGRyYWdnaW5nSW5m
bykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCi0gICAgICAgIE5TU3Ry
aW5nICpkcm9wRGVzdGluYXRpb25QYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6Y3JlYXRlVGVt
cG9yYXJ5RGlyZWN0b3J5KEAiV2ViS2l0RHJvcERlc3RpbmF0aW9uIik7CisgICAgICAgIE5TU3Ry
aW5nICpkcm9wRGVzdGluYXRpb25QYXRoID0gRmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGly
ZWN0b3J5KEAiV2ViS2l0RHJvcERlc3RpbmF0aW9uIik7CiAgICAgICAgIGlmICghZHJvcERlc3Rp
bmF0aW9uUGF0aCkgewogICAgICAgICAgICAgZGVsZXRlIGRyYWdEYXRhOwogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtNDI5MSw3ICs0MjkxLDcgQEAgTlNBcnJheSAqV2ViVmlld0ltcGw6
Om5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRpb24oTlNVUkwgKmRyb3BEZXN0
aW4KICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIGltYWdlIGZpbGUgdmlhIC1b
TlNGaWxlV3JhcHBlciB3cml0ZVRvVVJMOm9wdGlvbnM6b3JpZ2luYWxDb250ZW50c1VSTDplcnJv
cjpdIik7CiAKICAgICBpZiAoIW1fcHJvbWlzZWRVUkwuaXNFbXB0eSgpKQotICAgICAgICBXZWJD
b3JlOjpGaWxlU3lzdGVtOjpzZXRNZXRhZGF0YVVSTChTdHJpbmcocGF0aCksIG1fcHJvbWlzZWRV
UkwpOworICAgICAgICBGaWxlU3lzdGVtOjpzZXRNZXRhZGF0YVVSTChTdHJpbmcocGF0aCksIG1f
cHJvbWlzZWRVUkwpOwogICAgIAogICAgIHJldHVybiBbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6
W3BhdGggbGFzdFBhdGhDb21wb25lbnRdXTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9yYWdlLmNwcAppbmRleCBlNjBlZTNmNGY5NGIwMzJk
Mzk5YjdhMzc3YTdlOGY5Y2NhMjM3NTFkLi4xOWE3YTEyY2ZhM2YzMWJmMWUyMTM3YzM1Y2Q1N2Qw
YTUwN2I5YTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EZXZpY2VJZEhh
c2hTYWx0U3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRGV2aWNlSWRI
YXNoU2FsdFN0b3JhZ2UuY3BwCkBAIC0yOCw5ICsyOCw5IEBACiAKICNpbmNsdWRlICJQZXJzaXN0
ZW5jeVV0aWxzLmgiCiAKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9DcnlwdG9ncmFwaGljYWxs
eVJhbmRvbU51bWJlci5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8
d3RmL0hleE51bWJlci5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
RG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwCmluZGV4IDc1MTAyZWUzYjAwNDI0YTQ4MDk0MTVm
MzZiMDRlZDNiNTNjYWQxNDguLmUwOTI1NGIwMTg3MjQ5Yzk5MmZjMmZjZDcyODg4ZTc4NGIxOTMz
OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWRQcm94eS5jcHAKQEAgLTM2LDggKzM2LDggQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgogI2luY2x1ZGUgIldlYlByb3RlY3Rp
b25TcGFjZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9nbGli
L0J1YmJsZXdyYXBMYXVuY2hlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hl
ci9nbGliL0J1YmJsZXdyYXBMYXVuY2hlci5jcHAKaW5kZXggZTQzNGUwMzMzOTg3YTkyNzQ5YzAw
ZGRjNWI1MzM2MDkwNGRlZjFiZS4uMTY3MjNkZmRkYTRmYWRiYjkyYWE3ZWEwYThlNmFlNTg4NGYy
ZDA2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9C
dWJibGV3cmFwTGF1bmNoZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5j
aGVyL2dsaWIvQnViYmxld3JhcExhdW5jaGVyLmNwcApAQCAtMjAsMTIgKzIwLDEyIEBACiAKICNp
ZiBFTkFCTEUoQlVCQkxFV1JBUF9TQU5EQk9YKQogCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lz
dGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybURpc3BsYXkuaD4KICNpbmNsdWRlIDxm
Y250bC5oPgogI2luY2x1ZGUgPGdsaWIuaD4KICNpbmNsdWRlIDxzZWNjb21wLmg+CiAjaW5jbHVk
ZSA8c3lzL2lvY3RsLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3
dGYvZ2xpYi9HTGliVXRpbGl0aWVzLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvUHJvY2Vzc0xhdW5jaGVyR0xpYi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9nbGliL1Byb2Nlc3NMYXVuY2hlckdMaWIuY3Bw
CmluZGV4IGM1NjYxODczYTA1ZTcxMDliNTE3ZWE3NWJkZmFiY2NkOGYyM2ZiODYuLjBjMzkwNzNm
ZTFkZTdhZGFmNTMxMjY4M2Q4MTY0NjJmNjRkM2VjNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvUHJvY2Vzc0xhdW5jaGVyR0xpYi5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9Qcm9jZXNzTGF1bmNoZXJHTGli
LmNwcApAQCAtMzEsMTAgKzMxLDEwIEBACiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1
ZGUgIkZsYXRwYWtMYXVuY2hlci5oIgogI2luY2x1ZGUgIlByb2Nlc3NFeGVjdXRhYmxlUGF0aC5o
IgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPGVycm5vLmg+CiAj
aW5jbHVkZSA8ZmNudGwuaD4KICNpbmNsdWRlIDxnbGliLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVT
eXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9VbmlTdGRF
eHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HTGliVXRpbGl0aWVzLmg+CkBAIC00Nyw3ICs0
Nyw2IEBACiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYktpdCB7Ci11c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAogc3RhdGljIHZvaWQgY2hpbGRTZXR1cEZ1bmN0aW9uKGdwb2ludGVyIHVzZXJEYXRh
KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9ndGsvUGx1
Z2luSW5mb0NhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1Bs
dWdpbkluZm9DYWNoZS5jcHAKaW5kZXggODA2NDdlYjEyZWU1MjUxMWExMTllODVmZGUyZjU5YzRl
MjM3Nzg4NS4uYTI4YTAwYTM4NmNhZmVjYjM3ODJhNDExMDM3Y2E5YTUzNWRjMjIwMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9ndGsvUGx1Z2luSW5mb0NhY2hl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL2d0ay9QbHVnaW5JbmZv
Q2FjaGUuY3BwCkBAIC0yOSw4ICsyOSw4IEBACiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9B
UEkpCiAKICNpbmNsdWRlICJOZXRzY2FwZVBsdWdpbk1vZHVsZS5oIgotI2luY2x1ZGUgPFdlYkNv
cmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1EaXNwbGF5Lmg+Cisj
aW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNjYsMTAgKzY2LDEwIEBAIFBsdWdpbkluZm9DYWNo
ZTo6UGx1Z2luSW5mb0NhY2hlKCkKICAgICBtX3NhdmVUb0ZpbGVJZGxlLnNldFByaW9yaXR5KEdf
UFJJT1JJVFlfREVGQVVMVF9JRExFKTsKIAogICAgIEdVbmlxdWVQdHI8Y2hhcj4gY2FjaGVEaXJl
Y3RvcnkoZ19idWlsZF9maWxlbmFtZShnX2dldF91c2VyX2NhY2hlX2RpcigpLCAid2Via2l0Z3Rr
IiwgbnVsbHB0cikpOwotICAgIGlmIChXZWJDb3JlOjpGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0
b3JpZXMoY2FjaGVEaXJlY3RvcnkuZ2V0KCkpKSB7CisgICAgaWYgKEZpbGVTeXN0ZW06Om1ha2VB
bGxEaXJlY3RvcmllcyhjYWNoZURpcmVjdG9yeS5nZXQoKSkpIHsKICAgICAgICAgLy8gRGVsZXRl
IG9sZCBjYWNoZSBmaWxlLgogICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IG9sZENhY2hlUGF0aChn
X2J1aWxkX2ZpbGVuYW1lKGNhY2hlRGlyZWN0b3J5LmdldCgpLCAicGx1Z2lucyIsIG51bGxwdHIp
KTsKLSAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShXZWJDb3JlOjpGaWxl
U3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKG9sZENhY2hlUGF0aC5n
ZXQoKSkpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKEZpbGVTeXN0ZW06OnN0cmlu
Z0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ob2xkQ2FjaGVQYXRoLmdldCgpKSk7CiAKICAg
ICAgICAgbV9jYWNoZVBhdGgucmVzZXQoZ19idWlsZF9maWxlbmFtZShjYWNoZURpcmVjdG9yeS5n
ZXQoKSwgY2FjaGVGaWxlbmFtZUZvckN1cnJlbnREaXNwbGF5KCksIG51bGxwdHIpKTsKICAgICAg
ICAgZ19rZXlfZmlsZV9sb2FkX2Zyb21fZmlsZShtX2NhY2hlRmlsZS5nZXQoKSwgbV9jYWNoZVBh
dGguZ2V0KCksIEdfS0VZX0ZJTEVfTk9ORSwgbnVsbHB0cik7CkBAIC0xMTIsNyArMTEyLDcgQEAg
Ym9vbCBQbHVnaW5JbmZvQ2FjaGU6OmdldFBsdWdpbkluZm8oY29uc3QgU3RyaW5nJiBwbHVnaW5Q
YXRoLCBQbHVnaW5Nb2R1bGVJbmZvJgogICAgIGlmICghZ19rZXlfZmlsZV9oYXNfZ3JvdXAobV9j
YWNoZUZpbGUuZ2V0KCksIHBsdWdpbkdyb3VwLmRhdGEoKSkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIGF1dG8gbGFzdE1vZGlmaWVkVGltZSA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06Omdl
dEZpbGVNb2RpZmljYXRpb25UaW1lKHBsdWdpblBhdGgpOworICAgIGF1dG8gbGFzdE1vZGlmaWVk
VGltZSA9IEZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKHBsdWdpblBhdGgpOwog
ICAgIGlmICghbGFzdE1vZGlmaWVkVGltZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHRp
bWVfdCBjYWNoZWRMYXN0TW9kaWZpZWQgPSBzdGF0aWNfY2FzdDx0aW1lX3Q+KGdfa2V5X2ZpbGVf
Z2V0X3VpbnQ2NChtX2NhY2hlRmlsZS5nZXQoKSwgcGx1Z2luR3JvdXAuZGF0YSgpLCAibXRpbWUi
LCBudWxscHRyKSk7CkBAIC0xMjAsNyArMTIwLDcgQEAgYm9vbCBQbHVnaW5JbmZvQ2FjaGU6Omdl
dFBsdWdpbkluZm8oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBQbHVnaW5Nb2R1bGVJbmZvJgog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBwbHVnaW4ucGF0aCA9IHBsdWdpblBhdGg7Ci0g
ICAgcGx1Z2luLmluZm8uZmlsZSA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFt
ZShwbHVnaW5QYXRoKTsKKyAgICBwbHVnaW4uaW5mby5maWxlID0gRmlsZVN5c3RlbTo6cGF0aEdl
dEZpbGVOYW1lKHBsdWdpblBhdGgpOwogCiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBzdHJpbmdWYWx1
ZShnX2tleV9maWxlX2dldF9zdHJpbmcobV9jYWNoZUZpbGUuZ2V0KCksIHBsdWdpbkdyb3VwLmRh
dGEoKSwgIm5hbWUiLCBudWxscHRyKSk7CiAgICAgcGx1Z2luLmluZm8ubmFtZSA9IFN0cmluZzo6
ZnJvbVVURjgoc3RyaW5nVmFsdWUuZ2V0KCkpOwpAQCAtMTQwLDcgKzE0MCw3IEBAIGJvb2wgUGx1
Z2luSW5mb0NhY2hlOjpnZXRQbHVnaW5JbmZvKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgUGx1
Z2luTW9kdWxlSW5mbyYKIAogdm9pZCBQbHVnaW5JbmZvQ2FjaGU6OnVwZGF0ZVBsdWdpbkluZm8o
Y29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBjb25zdCBQbHVnaW5Nb2R1bGVJbmZvJiBwbHVnaW4p
CiB7Ci0gICAgYXV0byBsYXN0TW9kaWZpZWRUaW1lID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6Z2V0
RmlsZU1vZGlmaWNhdGlvblRpbWUocGx1Z2luUGF0aCk7CisgICAgYXV0byBsYXN0TW9kaWZpZWRU
aW1lID0gRmlsZVN5c3RlbTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUocGx1Z2luUGF0aCk7CiAg
ICAgaWYgKCFsYXN0TW9kaWZpZWRUaW1lKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvbWFjL1BsdWdpblByb2Nlc3NQcm94eU1h
Yy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvbWFjL1BsdWdpblByb2Nlc3NQ
cm94eU1hYy5tbQppbmRleCA4OWZhYjVlY2I2NjZkMmI0NGZjYzIyMzllYmU1YmE1ZWUxYWM2M2Q4
Li4zNjMzYzJhYjA3MDYwMTFlYmQ3YmMxM2YxYTBiZmRhNWFkNmRkOWJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5Qcm9jZXNzUHJveHlNYWMu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2luUHJvY2Vz
c1Byb3h5TWFjLm1tCkBAIC0zMywxMSArMzMsMTEgQEAKICNpbXBvcnQgIlBsdWdpblByb2Nlc3NN
ZXNzYWdlcy5oIgogI2ltcG9ydCAiU2FuZGJveFV0aWxpdGllcy5oIgogI2ltcG9ydCA8UXVhcnR6
Q29yZS9DQVJlbW90ZUxheWVyU2VydmVyLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0ZW0u
aD4KICNpbXBvcnQgPGNydF9leHRlcm5zLmg+CiAjaW1wb3J0IDxtYWNoLW8vZHlsZC5oPgogI2lt
cG9ydCA8cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4KICNpbXBvcnQgPHNwYXduLmg+CisjaW1w
b3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4K
ICNpbXBvcnQgPHd0Zi9VUkwuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTU3
LDggKzU3LDYgQEAgLSAoQk9PTClfd2FudHNVc2VyQXR0ZW50aW9uCiBAZW5kCiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KICAgICAKIHZvaWQgUGx1Z2lu
UHJvY2Vzc1Byb3h5OjpwbGF0Zm9ybUdldExhdW5jaE9wdGlvbnNXaXRoQXR0cmlidXRlcyhQcm9j
ZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMmIGxhdW5jaE9wdGlvbnMsIGNvbnN0IFBsdWdpblBy
b2Nlc3NBdHRyaWJ1dGVzJiBwbHVnaW5Qcm9jZXNzQXR0cmlidXRlcykKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5JbmZvU3RvcmVVbml4
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5JbmZvU3Rv
cmVVbml4LmNwcAppbmRleCAxZGZkODA3YzEyMzljMzA3OWVmOTI0MDc0NTBiODllYzkxMTljZjBj
Li5hYTA5NDczNjgxNjU0YTllZjY0NDA2YjJjNjQzOTAzZjdlMDEyNjNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luSW5mb1N0b3JlVW5peC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpbkluZm9T
dG9yZVVuaXguY3BwCkBAIC0zNCwxMCArMzQsMTAgQEAKICNpbmNsdWRlICJOZXRzY2FwZVBsdWdp
bk1vZHVsZS5oIgogI2luY2x1ZGUgIlBsdWdpblNlYXJjaFBhdGguaCIKICNpbmNsdWRlICJQcm9j
ZXNzRXhlY3V0YWJsZVBhdGguaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtRGlzcGxheS5oPgogI2luY2x1ZGUgPGxpbWl0cy5oPgog
I2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKICNpZiBQ
TEFURk9STShHVEspCiAjaW5jbHVkZSAiUGx1Z2luSW5mb0NhY2hlLmgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5p
eC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vz
c1Byb3h5VW5peC5jcHAKaW5kZXggZjg5NjEyMTcwZDAxMTE2MDQzMmVlZWVhM2Q5Yjg4YTM1Mzhi
NzEyMi4uYzUwMGMwZmNlYTYyNzg4NmJhZGRkYzNmYzk1MGM2YzRlYTM4YmMwYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpblByb2Nlc3NQcm94
eVVuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVn
aW5Qcm9jZXNzUHJveHlVbml4LmNwcApAQCAtMzIsOSArMzIsOSBAQAogCiAjaW5jbHVkZSAiUGx1
Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIlByb2Nlc3NFeGVjdXRh
YmxlUGF0aC5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUGxhdGZvcm1EaXNwbGF5Lmg+CiAjaW5jbHVkZSA8c3lzL3dhaXQuaD4KKyNpbmNsdWRl
IDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA3MjY4ODNiM2NmODBm
NDhmMmRiZmE1NjNmYzliZjdjNTVkNTcwMDZmLi41YmNkYTYzYTg2YjBlMWY4ZTk2NDYxOTQzMDk5
MjZjYmE1MWYyZDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmNwcApAQCAtNjQsNyArNjQsNyBAQCBTZXJ2aWNlV29ya2Vy
UHJvY2Vzc1Byb3h5Ojp+U2VydmljZVdvcmtlclByb2Nlc3NQcm94eSgpCiBib29sIFNlcnZpY2VX
b3JrZXJQcm9jZXNzUHJveHk6Omhhc1JlZ2lzdGVyZWRTZXJ2aWNlV29ya2Vycyhjb25zdCBTdHJp
bmcmIHNlcnZpY2VXb3JrZXJEaXJlY3RvcnkpCiB7CiAgICAgU3RyaW5nIHJlZ2lzdHJhdGlvbkZp
bGUgPSBXZWJDb3JlOjpzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YWJhc2VGaWxlbmFtZShz
ZXJ2aWNlV29ya2VyRGlyZWN0b3J5KTsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6
ZmlsZUV4aXN0cyhyZWdpc3RyYXRpb25GaWxlKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6Zmls
ZUV4aXN0cyhyZWdpc3RyYXRpb25GaWxlKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyUHJvY2Vz
c1Byb3h5OjpnZXRMYXVuY2hPcHRpb25zKFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9ucyYg
bGF1bmNoT3B0aW9ucykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlN0
b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAKaW5kZXggMGMyNWQ2NTdlOTc3NmE3
NDc0ZDIwNTVmZGY1NDg3MmEwMGQ4ZWRkYi4uNDZmYjZjNzcyOTRmM2M2MzFkNGZmZmRmYzI0YTE0
OGY3MDhhNDRjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViU3RvcmFn
ZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAKQEAgLTI3LDEyICsyNywxMiBAQAog
I2luY2x1ZGUgIkxvY2FsU3RvcmFnZURhdGFiYXNlLmgiCiAKICNpbmNsdWRlICJMb2NhbFN0b3Jh
Z2VEYXRhYmFzZVRyYWNrZXIuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1NRTGl0ZVN0YXRlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU1FM
aXRlVHJhbnNhY3Rpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9TdG9yYWdlTWFwLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TdWRkZW5U
ZXJtaW5hdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdIYXNoLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJT
dG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5jcHAKaW5kZXgg
YWZmZDdlOGFjYWUyZGVjYjVjODQ0ZTg3M2I1NmY3ZDE1M2QwYWM5Ni4uYzM3ODFkZjY3NjkwMGM2
OTRiZTE0YmZlNmFlMzY0OWJjMTg4OTBjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFj
a2VyLmNwcApAQCAtMjcsMTAgKzI3LDEwIEBACiAjaW5jbHVkZSAiTG9jYWxTdG9yYWdlRGF0YWJh
c2VUcmFja2VyLmgiCiAKICNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9G
aWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVGaWxlU3lzdGVtLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9TUUxpdGVTdGF0ZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHRF
bmNvZGluZy5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL01h
aW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9Xb3Jr
UXVldWUuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQppbmRleCA0MjdhOWM4
NWEzYjk4NDVhZTRmNzU0ZmI0YzdhMzkyNjNjOGMxN2M5Li42MTkwMDUwMDA1OGQ1YThlMDc0OGNi
MzYyYzFmNzZiNDQ1NGUyYjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1t
CkBAIC0zMCwxMCArMzAsMTAgQEAKICNpbXBvcnQgIlN0b3JhZ2VNYW5hZ2VyLmgiCiAjaW1wb3J0
ICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIKICNpbXBvcnQgIldlYnNpdGVEYXRh
U3RvcmVQYXJhbWV0ZXJzLmgiCi0jaW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbXBv
cnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1NlYXJjaFBvcHVwTWVudUNvY29hLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NmL0NGTmV0d29ya1NQ
SS5oPgorI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgogI2ltcG9ydCA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KIApAQCAtMTIxLDcgKzEy
MSw3IEBAIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3RvcmU6OnBhcmFt
ZXRlcnMoKQogICAgIHBhcmFtZXRlcnMucGVuZGluZ0Nvb2tpZXMgPSBjb3B5VG9WZWN0b3IobV9w
ZW5kaW5nQ29va2llcyk7CiAKICAgICBpZiAoIWNvb2tpZUZpbGUuaXNFbXB0eSgpKQotICAgICAg
ICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkoV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShjb29raWVGaWxlKSwgcGFyYW1ldGVycy5j
b29raWVTdG9yYWdlUGF0aEV4dGVuc2lvbkhhbmRsZSk7CisgICAgICAgIFNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShGaWxlU3lzdGVtOjpkaXJlY3Rv
cnlOYW1lKGNvb2tpZUZpbGUpLCBwYXJhbWV0ZXJzLmNvb2tpZVN0b3JhZ2VQYXRoRXh0ZW5zaW9u
SGFuZGxlKTsKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogICAgIHBhcmFtZXRlcnMu
aW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5ID0gcmVzb2x2ZWRJbmRleGVkRGF0YWJhc2VEaXJlY3Rv
cnkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggYjE4ZmNlNzkwNmY4ZTJiYjhjNWJkMjQ2NDQ2MDYw
OGU0Y2NmZWFkZC4uMmE1OTBjNGJkNWUxOTg3ZTU1YWU2MTQ4NmRhYzhhY2YzMTczNjYyZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZS5jcHAKQEAgLTQ0LDcgKzQ0LDYgQEAKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0
b3JlUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RhdGFiYXNlVHJhY2tlci5oPgotI2luY2x1ZGUgPFdl
YkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSFRNTE1lZGlhRWxlbWVudC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvT3JpZ2luTG9jay5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Vj
dXJpdHlPcmlnaW4uaD4KQEAgLTUyLDYgKzUxLDcgQEAKICNpbmNsdWRlIDx3dGYvQ2FsbGJhY2tB
Z2dyZWdhdG9yLmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVk
ZSA8d3RmL0Nyb3NzVGhyZWFkQ29waWVyLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4K
ICNpbmNsdWRlIDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29w
Lmg+CiAKQEAgLTE5Myw4ICsxOTMsOCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlc29sdmVE
aXJlY3Rvcmllc0lmTmVjZXNzYXJ5KCkKIAogICAgIC8vIFJlc29sdmUgZGlyZWN0b3JpZXMgZm9y
IGZpbGUgcGF0aHMuCiAgICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24tPmNvb2tpZVN0b3JhZ2VGaWxl
KCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5zZXRDb29r
aWVTdG9yYWdlRmlsZShyZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJv
eEV4dGVuc2lvbihXZWJDb3JlOjpGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKG1fY29uZmlndXJh
dGlvbi0+Y29va2llU3RvcmFnZUZpbGUoKSkpKTsKLSAgICAgICAgbV9yZXNvbHZlZENvbmZpZ3Vy
YXRpb24tPnNldENvb2tpZVN0b3JhZ2VGaWxlKFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+Y29va2llU3RvcmFnZUZp
bGUoKSwgV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKG1fY29uZmlndXJhdGlv
bi0+Y29va2llU3RvcmFnZUZpbGUoKSkpKTsKKyAgICAgICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRp
b24tPnNldENvb2tpZVN0b3JhZ2VGaWxlKHJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3Rv
cnlGb3JTYW5kYm94RXh0ZW5zaW9uKEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUobV9jb25maWd1
cmF0aW9uLT5jb29raWVTdG9yYWdlRmlsZSgpKSkpOworICAgICAgICBtX3Jlc29sdmVkQ29uZmln
dXJhdGlvbi0+c2V0Q29va2llU3RvcmFnZUZpbGUoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5jb29raWVTdG9yYWdlRmlsZSgpLCBG
aWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUobV9jb25maWd1cmF0aW9uLT5jb29raWVTdG9yYWdl
RmlsZSgpKSkpOwogICAgIH0KIH0KIApAQCAtMjI2NSw3ICsyMjY1LDcgQEAgVmVjdG9yPFBsdWdp
bk1vZHVsZUluZm8+IFdlYnNpdGVEYXRhU3RvcmU6OnBsdWdpbnMoKSBjb25zdAogCiBzdGF0aWMg
U3RyaW5nIGNvbXB1dGVNZWRpYUtleUZpbGUoY29uc3QgU3RyaW5nJiBtZWRpYUtleURpcmVjdG9y
eSkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KG1lZGlhS2V5RGlyZWN0b3J5LCAiU2VjdXJlU3RvcC5wbGlzdCIpOworICAgIHJldHVy
biBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobWVkaWFLZXlEaXJlY3Rvcnks
ICJTZWN1cmVTdG9wLnBsaXN0Iik7CiB9CiAKIFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGE+IFdlYnNpdGVEYXRhU3RvcmU6Om1lZGlhS2V5T3JpZ2lucyhjb25zdCBTdHJpbmcmIG1l
ZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkpCkBAIC0yMjc0LDEyICsyMjc0LDEyIEBAIFZlY3RvcjxX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IFdlYnNpdGVEYXRhU3RvcmU6Om1lZGlhS2V5T3Jp
Z2lucyhjb25zdCBTdHJpCiAKICAgICBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
PiBvcmlnaW5zOwogCi0gICAgZm9yIChjb25zdCBhdXRvJiBvcmlnaW5QYXRoIDogV2ViQ29yZTo6
RmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5LCAiKiIp
KSB7CisgICAgZm9yIChjb25zdCBhdXRvJiBvcmlnaW5QYXRoIDogRmlsZVN5c3RlbTo6bGlzdERp
cmVjdG9yeShtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5LCAiKiIpKSB7CiAgICAgICAgIGF1dG8g
bWVkaWFLZXlGaWxlID0gY29tcHV0ZU1lZGlhS2V5RmlsZShvcmlnaW5QYXRoKTsKLSAgICAgICAg
aWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG1lZGlhS2V5RmlsZSkpCisgICAg
ICAgIGlmICghRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhtZWRpYUtleUZpbGUpKQogICAgICAgICAg
ICAgY29udGludWU7CiAKLSAgICAgICAgYXV0byBtZWRpYUtleUlkZW50aWZpZXIgPSBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUob3JpZ2luUGF0aCk7CisgICAgICAgIGF1dG8g
bWVkaWFLZXlJZGVudGlmaWVyID0gRmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKG9yaWdpblBh
dGgpOwogCiAgICAgICAgIGlmIChhdXRvIHNlY3VyaXR5T3JpZ2luID0gV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKG1lZGlhS2V5SWRlbnRpZmllcikp
CiAgICAgICAgICAgICBvcmlnaW5zLmFwcGVuZCgqc2VjdXJpdHlPcmlnaW4pOwpAQCAtMjI5Miwx
OCArMjI5MiwxOCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZU1lZGlhS2V5cyhjb25z
dCBTdHJpbmcmIG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnksCiB7CiAgICAgQVNTRVJUKCFtZWRp
YUtleXNTdG9yYWdlRGlyZWN0b3J5LmlzRW1wdHkoKSk7CiAKLSAgICBmb3IgKGNvbnN0IGF1dG8m
IG1lZGlhS2V5RGlyZWN0b3J5IDogV2ViQ29yZTo6RmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeSht
ZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5LCAiKiIpKSB7CisgICAgZm9yIChjb25zdCBhdXRvJiBt
ZWRpYUtleURpcmVjdG9yeSA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobWVkaWFLZXlzU3Rv
cmFnZURpcmVjdG9yeSwgIioiKSkgewogICAgICAgICBhdXRvIG1lZGlhS2V5RmlsZSA9IGNvbXB1
dGVNZWRpYUtleUZpbGUobWVkaWFLZXlEaXJlY3RvcnkpOwogCi0gICAgICAgIGF1dG8gbW9kaWZp
Y2F0aW9uVGltZSA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1l
KG1lZGlhS2V5RmlsZSk7CisgICAgICAgIGF1dG8gbW9kaWZpY2F0aW9uVGltZSA9IEZpbGVTeXN0
ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKG1lZGlhS2V5RmlsZSk7CiAgICAgICAgIGlmICgh
bW9kaWZpY2F0aW9uVGltZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGlmICht
b2RpZmljYXRpb25UaW1lLnZhbHVlKCkgPCBtb2RpZmllZFNpbmNlKQogICAgICAgICAgICAgY29u
dGludWU7CiAKLSAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtZWRpYUtl
eUZpbGUpOwotICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9y
eShtZWRpYUtleURpcmVjdG9yeSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobWVk
aWFLZXlGaWxlKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkobWVk
aWFLZXlEaXJlY3RvcnkpOwogICAgIH0KIH0KIApAQCAtMjMxMiwxMSArMjMxMiwxMSBAQCB2b2lk
IFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZU1lZGlhS2V5cyhjb25zdCBTdHJpbmcmIG1lZGlhS2V5
c1N0b3JhZ2VEaXJlY3RvcnksCiAgICAgQVNTRVJUKCFtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5
LmlzRW1wdHkoKSk7CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIG9yaWdpbiA6IG9yaWdpbnMpIHsK
LSAgICAgICAgYXV0byBtZWRpYUtleURpcmVjdG9yeSA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5LCBvcmlnaW4u
ZGF0YWJhc2VJZGVudGlmaWVyKCkpOworICAgICAgICBhdXRvIG1lZGlhS2V5RGlyZWN0b3J5ID0g
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1lZGlhS2V5c1N0b3JhZ2VEaXJl
Y3RvcnksIG9yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CiAgICAgICAgIGF1dG8gbWVkaWFL
ZXlGaWxlID0gY29tcHV0ZU1lZGlhS2V5RmlsZShtZWRpYUtleURpcmVjdG9yeSk7CiAKLSAgICAg
ICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtZWRpYUtleUZpbGUpOwotICAgICAg
ICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShtZWRpYUtleURpcmVj
dG9yeSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobWVkaWFLZXlGaWxlKTsKKyAg
ICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkobWVkaWFLZXlEaXJlY3Rvcnkp
OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9X
ZWJQcm9jZXNzUHJveHlHTGliLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2Vi
UHJvY2Vzc1Byb3h5R0xpYi5jcHAKaW5kZXggOGY1ZmEwM2ZmNDY1MzJmNmI1ODI1NzllOTliMDE3
YjA2NTQwYWVhNS4uMTY5ZWEyMDEyNWIwMzA2MzdmYWZjMDc0N2NhODY5ODU4NTQ5NWI5YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUHJveHlHTGli
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQcm94eUdM
aWIuY3BwCkBAIC0zMSw4ICszMSw4IEBACiAjZW5kaWYKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9v
bC5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0Zp
bGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtRGlzcGxheS5oPgorI2luY2x1
ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2Vi
SW5zcGVjdG9yUHJveHlHdGsuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYklu
c3BlY3RvclByb3h5R3RrLmNwcAppbmRleCBjYTE4N2E2NDIzNDExMmU4NTc5YmQ4NjE2MmQ5Yjgz
ZmI0MjljODNhLi4xNmIwMmE0MzU3NmU1NmYxYWUyMjYzYTBkZjRmMDY3MzIzNGRiZTA1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0
ay5jcHAKQEAgLTQyLDkgKzQyLDkgQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgogI2lu
Y2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ2VydGlmaWNhdGVJ
bmZvLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9HdGtVdGlsaXRpZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+Cisj
aW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQcm9jZXNzUG9vbEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc1Bvb2xHdGsuY3BwCmluZGV4IDYyNDA0MTVmMTU3Mjc5
ZTRiZmMwYzU2YTJjZGE4YjYyMjU5MDY5ZjYuLjZiMjM1NzQwNGUwM2FlMzAyMWFlODgwYjYzYThj
ZWMwZWU4NmYwZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQ
cm9jZXNzUG9vbEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlBy
b2Nlc3NQb29sR3RrLmNwcApAQCAtMzQsMTAgKzM0LDEwIEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1JlbW90ZUluc3BlY3RvclNlcnZlci5oPgotI2luY2x1
ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR1N0cmVhbWVyQ29t
bW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvU2NoZW1lUmVnaXN0cnkuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2lu
Y2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IGQzZjlmMTJlZmM2OTQzYmMwYTQxOTg1YjJmYWEwNzc5
ZWYzNGI1MzUuLjdkMWRlYzUzNDdkNGViMzZjMDI2ZDM3MzQ5YThmYTdjZmU3ZmVjNDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5tbQpAQCAtNTY5OCw3ICs1Njk4LDcgQEAgLSAodm9pZClfcHJlcGFyZVRvRHJhZ1By
b21pc2VkQXR0YWNobWVudDooY29uc3QgV2ViQ29yZTo6UHJvbWlzZWRBdHRhY2htZW50SW5mbyYK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIE5TU3RyaW5nICp0ZW1w
b3JhcnlCbG9iRGlyZWN0b3J5ID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5
RGlyZWN0b3J5KEAiYmxvYnMiKTsKKyAgICAgICAgTlNTdHJpbmcgKnRlbXBvcmFyeUJsb2JEaXJl
Y3RvcnkgPSBGaWxlU3lzdGVtOjpjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoQCJibG9icyIpOwog
ICAgICAgICBOU1VSTCAqZGVzdGluYXRpb25VUkwgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOlt0
ZW1wb3JhcnlCbG9iRGlyZWN0b3J5IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpbTlNV
VUlEIFVVSURdLlVVSURTdHJpbmddIGlzRGlyZWN0b3J5Ok5PXTsKIAogICAgICAgICBhdXRvIGF0
dGFjaG1lbnQgPSBzdHJvbmdTZWxmLT5fcGFnZS0+YXR0YWNobWVudEZvcklkZW50aWZpZXIoaW5m
by5hdHRhY2htZW50SWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvZm9ybXMvV0tGaWxlVXBsb2FkUGFuZWwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvZm9ybXMvV0tGaWxlVXBsb2FkUGFuZWwubW0KaW5kZXggNjgwMTY0NmQwOGY5ZDA5
ZmUzZTczOTgzODQ1NzI5YmUyMTFkNWFhNi4uODc3MTE0ZmNmMjY2ZTk5MmFlYmRkOTAzNjA0MDZh
MWQ4OTc1MWRmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1z
L1dLRmlsZVVwbG9hZFBhbmVsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9m
b3Jtcy9XS0ZpbGVVcGxvYWRQYW5lbC5tbQpAQCAtNjIwLDcgKzYyMCw3IEBAIC0gKHZvaWQpX3Vw
bG9hZEl0ZW1Gb3JJbWFnZURhdGE6KE5TRGF0YSAqKWltYWdlRGF0YSBpbWFnZU5hbWU6KE5TU3Ry
aW5nICopaW1hZ2VOCiAgICAgTlNTdHJpbmcgKiBjb25zdCBrVGVtcG9yYXJ5RGlyZWN0b3J5TmFt
ZSA9IEAiV0tXZWJGaWxlVXBsb2FkIjsKIAogICAgIC8vIEJ1aWxkIHRlbXBvcmFyeSBmaWxlIHBh
dGguCi0gICAgTlNTdHJpbmcgKnRlbXBvcmFyeURpcmVjdG9yeSA9IFdlYkNvcmU6OkZpbGVTeXN0
ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShrVGVtcG9yYXJ5RGlyZWN0b3J5TmFtZSk7Cisg
ICAgTlNTdHJpbmcgKnRlbXBvcmFyeURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBv
cmFyeURpcmVjdG9yeShrVGVtcG9yYXJ5RGlyZWN0b3J5TmFtZSk7CiAgICAgTlNTdHJpbmcgKmZp
bGVQYXRoID0gW3RlbXBvcmFyeURpcmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25l
bnQ6aW1hZ2VOYW1lXTsKICAgICBpZiAoIWZpbGVQYXRoKSB7CiAgICAgICAgIExPR19FUlJPUigi
V0tGaWxlVXBsb2FkUGFuZWw6IEZhaWxlZCB0byBjcmVhdGUgdGVtcG9yYXJ5IGRpcmVjdG9yeSB0
byBzYXZlIGltYWdlIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
V2ViUGFnZVByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQ
cm94eU1hYy5tbQppbmRleCA2MmJlNDEwZjIzYjBlMmMzMzAzMGJiMDljMWU2MmYxYzhiMjBlMWMw
Li44MzAwNGQ3MGE4MTc3NzE2MTgzODRkNGQ4ZjI4MTVjZjIxMWE3NzZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KQEAgLTQ5NSw3ICs0OTUs
NyBAQCBzdGF0aWMgTlNTdHJpbmcgKnBhdGhUb1BERk9uRGlzayhjb25zdCBTdHJpbmcmIHN1Z2dl
c3RlZEZpbGVuYW1lKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2F2ZVBERlRvVGVtcG9yYXJ5Rm9s
ZGVyQW5kT3BlbldpdGhOYXRpdmVBcHBsaWNhdGlvblJhdyhjb25zdCBTdHJpbmcmIHN1Z2dlc3Rl
ZEZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBjb25zdCB1aW50
OF90KiBkYXRhLCB1bnNpZ25lZCBsb25nIHNpemUsIGNvbnN0IFN0cmluZyYgcGRmVVVJRCkKIHsK
LSAgICAvLyBGSVhNRTogV3JpdGUgb3JpZ2luYXRpbmdVUkxTdHJpbmcgdG8gdGhlIGZpbGUncyBv
cmlnaW5hdGluZyBVUkwgbWV0YWRhdGEgKHBlcmhhcHMgV2ViQ29yZTo6RmlsZVN5c3RlbTo6c2V0
TWV0YWRhdGFVUkwoKT8pLgorICAgIC8vIEZJWE1FOiBXcml0ZSBvcmlnaW5hdGluZ1VSTFN0cmlu
ZyB0byB0aGUgZmlsZSdzIG9yaWdpbmF0aW5nIFVSTCBtZXRhZGF0YSAocGVyaGFwcyBGaWxlU3lz
dGVtOjpzZXRNZXRhZGF0YVVSTCgpPykuCiAgICAgVU5VU0VEX1BBUkFNKG9yaWdpbmF0aW5nVVJM
U3RyaW5nKTsKIAogICAgIGlmICghc3VnZ2VzdGVkRmlsZW5hbWUuZW5kc1dpdGhJZ25vcmluZ0FT
Q0lJQ2FzZSgiLnBkZiIpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93
aW4vV2ViUHJvY2Vzc1Bvb2xXaW4uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dl
YlByb2Nlc3NQb29sV2luLmNwcAppbmRleCAxMDE1ZmYwNjA2Y2Y0YmI0Y2Y1NjJhMDc4OTI4ODcz
MzY1NmY5ZWQ2Li4zOTBhMGM5MDE5MjE5NDMzYzVmYTQ5ZDNlMzg0NGExYjgzNTUyOGNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1Bvb2xXaW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJQcm9jZXNzUG9vbFdpbi5jcHAK
QEAgLTI4LDggKzI4LDggQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgogCiAjaW5jbHVk
ZSAiV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRmls
ZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKyNpbmNsdWRl
IDx3dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCmluZGV4IGVmNzkxOWM3MjBmZTcxN2I1OTA5MTliYjg1
YjQ1ODE4NWJhNTBmYjEuLjBmOWY5ZDRlZmQ1Mjg2YzYyNjg0M2FjM2EwNGNkMmU2YmQ5NDk5ZTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKQEAgLTQ0LDcgKzQ0LDYg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL0JpdG1hcEluZm8uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0N1
cnNvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRWRpdG9yLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9G
aWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0hXbmREQy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgpAQCAtNTUsNiAr
NTQsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvV2luZG93c1RvdWNoLmg+CiAjaW5jbHVkZSA8Y2Fp
cm8td2luMzIuaD4KICNpbmNsdWRlIDxjYWlyby5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVt
Lmg+CiAjaW5jbHVkZSA8d3RmL1NvZnRMaW5raW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nQnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd3BlL1dlYlByb2Nlc3NQb29sV1BFLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dwZS9XZWJQcm9jZXNzUG9vbFdQRS5jcHAKaW5kZXgg
NjI1NWM0MjdiN2ExYmE1Y2ZlZWQwY2IzN2RlNWMwMmMwYmNjZTVkMS4uZjUxMDE3YThjYTI5ZWQw
Nzk5NGQ3ZDIwN2M5NTcxNDExMmEzOGJmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3Mvd3BlL1dlYlByb2Nlc3NQb29sV1BFLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy93cGUvV2ViUHJvY2Vzc1Bvb2xXUEUuY3BwCkBAIC0zNCwxMCArMzQsMTAgQEAKICNpbmNs
dWRlICJXZWJDb29raWVNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCi0jaW5jbHVk
ZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRl
ZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2NoZW1lUmVnaXN0cnkuaD4KICNpbmNsdWRlIDxjc3Rk
bGliPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKICNpZiBFTkFCTEUoUkVNT1RFX0lO
U1BFQ1RPUikKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9SZW1vdGVJbnNwZWN0b3JTZXJ2ZXIu
aD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ2xpYi9XZWJLaXRFeHRlbnNpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRFeHRlbnNpb25NYW5hZ2VyLmNwcApp
bmRleCBhYWMyODI4MGNhNTIwYmY4Mzk2NWI3OTRjM2UzNGZlYWZjNjFlZTc1Li40Y2NlYzYyZWYw
ZTExMzFmYTEzZjdmYjA2MGM4MGUwN2VlNDI1MWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0RXh0ZW5zaW9uTWFuYWdl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
bGliL1dlYktpdEV4dGVuc2lvbk1hbmFnZXIuY3BwCkBAIC0yMyw4ICsyMyw4IEBACiAjaW5jbHVk
ZSAiQVBJU3RyaW5nLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGUuaCIKICNpbmNsdWRlICJX
ZWJLaXRXZWJFeHRlbnNpb25Qcml2YXRlLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVt
Lmg+CiAjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTQxLDkg
KzQxLDkgQEAgV2ViS2l0RXh0ZW5zaW9uTWFuYWdlcjo6V2ViS2l0RXh0ZW5zaW9uTWFuYWdlcigp
CiAKIHZvaWQgV2ViS2l0RXh0ZW5zaW9uTWFuYWdlcjo6c2Nhbk1vZHVsZXMoY29uc3QgU3RyaW5n
JiB3ZWJFeHRlbnNpb25zRGlyZWN0b3J5LCBWZWN0b3I8U3RyaW5nPiYgbW9kdWxlcykKIHsKLSAg
ICBWZWN0b3I8U3RyaW5nPiBtb2R1bGVQYXRocyA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06Omxpc3RE
aXJlY3Rvcnkod2ViRXh0ZW5zaW9uc0RpcmVjdG9yeSwgU3RyaW5nKCIqLnNvIikpOworICAgIFZl
Y3RvcjxTdHJpbmc+IG1vZHVsZVBhdGhzID0gRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeSh3ZWJF
eHRlbnNpb25zRGlyZWN0b3J5LCBTdHJpbmcoIiouc28iKSk7CiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBtb2R1bGVQYXRocy5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAoV2ViQ29yZTo6
RmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhtb2R1bGVQYXRoc1tpXSkpCisgICAgICAgIGlmIChGaWxl
U3lzdGVtOjpmaWxlRXhpc3RzKG1vZHVsZVBhdGhzW2ldKSkKICAgICAgICAgICAgIG1vZHVsZXMu
YXBwZW5kKG1vZHVsZVBhdGhzW2ldKTsKICAgICB9CiB9CkBAIC02Myw3ICs2Myw3IEBAIHN0YXRp
YyB2b2lkIHBhcnNlVXNlckRhdGEoQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBTdHJpbmcmIHdlYkV4
dGVuc2lvbnNEaXJlY3RvcnksCiAgICAgR1ZhcmlhbnQqIGRhdGEgPSBudWxscHRyOwogICAgIGdf
dmFyaWFudF9nZXQodmFyaWFudC5nZXQoKSwgIihtJnNtdikiLCAmZGlyZWN0b3J5LCAmZGF0YSk7
CiAKLSAgICB3ZWJFeHRlbnNpb25zRGlyZWN0b3J5ID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3Ry
aW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihkaXJlY3RvcnkpOworICAgIHdlYkV4dGVu
c2lvbnNEaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKGRpcmVjdG9yeSk7CiAgICAgaW5pdGlhbGl6YXRpb25Vc2VyRGF0YSA9IGFkb3B0R1Jl
ZihkYXRhKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL2dsaWIvSW5qZWN0ZWRCdW5kbGVHbGliLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9nbGliL0luamVjdGVkQnVuZGxlR2xpYi5jcHAKaW5kZXgg
MGE4NjA2NTJmMDBkYWQ5MzI4Y2YzNTVkNDA1MTNmZTgwZjVlZjY1OC4uZWQ5NjU4Y2ExZjQ2YTRj
NzdjYzcyNjAzMzBkMTYwYWFkMjg4Mjc2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL2dsaWIvSW5qZWN0ZWRCdW5kbGVHbGliLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvZ2xpYi9JbmplY3RlZEJ1bmRs
ZUdsaWIuY3BwCkBAIC0yOSwxMSArMjksMTAgQEAKIAogI2luY2x1ZGUgIldLQnVuZGxlQVBJQ2Fz
dC5oIgogI2luY2x1ZGUgIldLQnVuZGxlSW5pdGlhbGl6ZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUv
RmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKLXVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCiBib29sIEluamVjdGVkQnVuZGxlOjppbml0aWFsaXplKGNvbnN0IFdlYlByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMmLCBBUEk6Ok9iamVjdCogaW5pdGlhbGl6YXRpb25Vc2VyRGF0
YSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dl
Yk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01l
ZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5jcHAKaW5kZXggNGJmNDhkMGU5NGVl
Zjc2MDY2Y2EzMGVhOWNmMzU3MDRhYjNkZWFlYi4uYmQzOTgyNDI2YzY2ZTYzNWI2YzU2MDVjYmU1
YTNiMDUwMjVkM2ExYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlh
Q2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5jcHAKQEAgLTI3
LDkgKzI3LDkgQEAKICNpbmNsdWRlICJXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmgiCiAKICNp
bmNsdWRlICJXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCi0jaW5jbHVkZSA8V2ViQ29y
ZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVT
eXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2Nh
cGVQbHVnaW5TdHJlYW0uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmgKaW5kZXggYmI2YTViMDhjN2NjZTVkZGVkODk5MzYw
ZjdhYjgzNDBmMDM5NWU3NC4uM2VkY2VjNmE3MmNjYzNhYTY0ZDgxOWZhOTMzN2Y0M2U2MmU3ZDc2
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
TmV0c2NhcGVQbHVnaW5TdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5oCkBAIC0yNyw5ICsyNyw5IEBACiAK
ICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKIAotI2luY2x1ZGUgPFdlYkNvcmUvRmls
ZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvbnBydW50aW1lX2ludGVybmFsLmg+CiAjaW5j
bHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KQEAgLTg5LDcgKzg5LDcgQEAgcHJpdmF0ZToKICAgICBpbnQzMl90IG1fb2Zmc2V0
OwogCiAgICAgU3RyaW5nIG1fZmlsZVBhdGg7Ci0gICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6UGxh
dGZvcm1GaWxlSGFuZGxlIG1fZmlsZUhhbmRsZTsKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZp
bGVIYW5kbGUgbV9maWxlSGFuZGxlOwogICAgIAogICAgIC8vIFdoZXRoZXIgTlBQX05ld1N0cmVh
bSBoYXMgc3VjY2Vzc2Z1bGx5IGJlZW4gY2FsbGVkLgogICAgIGJvb2wgbV9pc1N0YXJ0ZWQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggMDFjNTNmM2Q4NDNkZDFkMjQzMTRmNWNjMGMxMmU5
MDk2NGVmYmJlNC4uMjZkNmQ1MDBlNjlhMDE5M2IxZGY1ZjQwM2YxZjNmMThjMmM4ZWQ1ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blByb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMzYsMTAgKzM2LDkgQEAKICNpbmNsdWRlICJXZWJQ
cm9jZXNzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3Rl
bS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewot
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpQbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbihQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIqIHBsdWdp
blByb2Nlc3NDb25uZWN0aW9uTWFuYWdlciwgdWludDY0X3QgcGx1Z2luUHJvY2Vzc1Rva2VuLCBJ
UEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIsIGJvb2wgc3Vw
cG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbikKICAgICA6IG1fcGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKHBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9u
U3RhdGVDb252ZXJzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcAppbmRleCA2M2MzNmEzZGI2OWE4MmFkM2Jl
YTY2MGY2YjA2ZGZlNzYzYzU1NjE3Li4xZDgxNjZhMDdlM2ZkOTc4ODFjYjdmNDRmNGE2YmVmZjg1
YmJmZTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwCkBAIC0yOCw5ICsy
OCw5IEBACiAKICNpbmNsdWRlICJTZXNzaW9uU3RhdGUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Js
b2JEYXRhLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9Gb3JtRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSGlzdG9yeUl0ZW0uaD4KKyNpbmNs
dWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvZ3RrL1dlYkluc3BlY3RvclVJR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2d0ay9XZWJJbnNwZWN0b3JVSUd0ay5jcHAKaW5kZXggODljM2JhMWFhODkzOWNmYTUx
ZjZmYjIyMWE3M2IzOGQ3ODAzMjdhMy4uZGJiMmE5MTgwNGJlMTMyNjQ4YzlhZDMzZTZmMDI3YmRk
M2YxMTBmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3Rr
L1dlYkluc3BlY3RvclVJR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9ndGsvV2ViSW5zcGVjdG9yVUlHdGsuY3BwCkBAIC0yOCw4ICsyOCw4IEBACiAjaW5jbHVk
ZSAiV2ViSW5zcGVjdG9yVUkuaCIKICNpbmNsdWRlICJSZW1vdGVXZWJJbnNwZWN0b3JVSS5oIgog
Ci0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8Z2xpYi5oPgorI2lu
Y2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2Uvd2luL1dlYkluc3BlY3RvclVJV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL3dpbi9XZWJJbnNwZWN0b3JVSVdpbi5jcHAKaW5kZXggNmE3YWYzYzVk
NjQ5YzUwNGVlZGFkNDljOTFhMWZiNDQzNWU0YTE4Yy4uNDcxMTE0Y2FmYTE0YTdkMWYzM2ZmYTJj
MWU4YWZiYmJlZDJlMDNhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2Uvd2luL1dlYkluc3BlY3RvclVJV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS93aW4vV2ViSW5zcGVjdG9yVUlXaW4uY3BwCkBAIC0yOCw4ICsyOCw4IEBA
CiAKICNpbmNsdWRlICJSZW1vdGVXZWJJbnNwZWN0b3JVSS5oIgogCi0jaW5jbHVkZSA8V2ViQ29y
ZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XZWJDb3JlQnVuZGxlV2luLmg+Cisj
aW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQppbmRleCBhNDQ2ODFjNzcyNzFjMDRhNzk2ZjA3YmJj
Y2FjM2JlY2M0ODFmNzVhLi4zNWQ1N2Q1Y2U2N2I2NTg3NjA3OTNkY2M3YzQwOTE2OWY4NTgwYWY1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0Nv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29j
b2EubW0KQEAgLTUxLDcgKzUxLDYgQEAKICNpbXBvcnQgPFdlYkNvcmUvQVhPYmplY3RDYWNoZS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9DUFVNb25pdG9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Rpc3Bs
YXlSZWZyZXNoTW9uaXRvck1hbmFnZXIuaD4KLSNpbXBvcnQgPFdlYkNvcmUvRmlsZVN5c3RlbS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9Gb250Q2FjaGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvRm9udENh
c2NhZGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvSGlzdG9yeUNvbnRyb2xsZXIuaD4KQEAgLTcyLDYg
KzcxLDcgQEAKICNpbXBvcnQgPHBhbC9zcGkvbWFjL05TQWNjZXNzaWJpbGl0eVNQSS5oPgogI2lt
cG9ydCA8cGFsL3NwaS9tYWMvTlNBcHBsaWNhdGlvblNQSS5oPgogI2ltcG9ydCA8c3RkaW8uaD4K
KyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDx3dGYvY29jb2EvTlNVUkxFeHRy
YXMuaD4KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvU3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuY3BwCmluZGV4IDQwMzk5NjBiMTQwZmNiOWM2M2E3
NmQ2ZDA3NzEzYTNhMzE4MmM1YTQuLjE3ZDQ4OTQ5NGQ3ZTA5MGQzZmY3MzVlZmYyNjQ0NWVmZWM2
YjkyOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlQXJl
YVN5bmMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlQXJlYVN5
bmMuY3BwCkBAIC0yOCwxMSArMjgsMTEgQEAKICNpbmNsdWRlICJTdG9yYWdlQXJlYUltcGwuaCIK
ICNpbmNsdWRlICJTdG9yYWdlU3luY01hbmFnZXIuaCIKICNpbmNsdWRlICJTdG9yYWdlVHJhY2tl
ci5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U1FMaXRlRGF0YWJhc2VUcmFja2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVTdGF0ZW1l
bnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZVRyYW5zYWN0aW9uLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TdWRkZW5UZXJtaW5hdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+
CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVN5bmNNYW5h
Z2VyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIu
Y3BwCmluZGV4IDNlOGZmNjVlZTYwZjI3NGRjOTA0ZWI1OGMxMTc0ZWQ1Y2MxYTU3NGMuLjM2OTA5
NWNkYWQxZDM0NzExYTA2NzZkODczNmE5MGUxOTNlMjkwNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIuY3BwCkBAIC0yNiw3ICsyNiw3
IEBACiAjaW5jbHVkZSAiU3RvcmFnZVN5bmNNYW5hZ2VyLmgiCiAKICNpbmNsdWRlICJTdG9yYWdl
VGhyZWFkLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8d3Rm
L0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9y
YWdlL1N0b3JhZ2VUcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9y
YWdlVHJhY2tlci5jcHAKaW5kZXggNzEwMTQwYjFiMTMzYTJlYjU5Mzk2ZDc2NzQ4NmQyMTgzZWM5
MDQ4NC4uYjkzNGQxYTNiMWJhYTgzMWFkZGYzYWJlNWUwNzcwYWIxY2Y3N2ZhMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCkBAIC0yOCwxMyAr
MjgsMTMgQEAKICNpbmNsdWRlICJTdG9yYWdlVGhyZWFkLmgiCiAjaW5jbHVkZSAiU3RvcmFnZVRy
YWNrZXJDbGllbnQuaCIKICNpbmNsdWRlICJXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaCIK
LSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VH
cm91cC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlRGF0YWJhc2VUcmFja2VyLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9TUUxpdGVTdGF0ZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3Vy
aXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1RleHRFbmNvZGluZy5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVt
Lmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0
cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvTWlzYy9XZWJOU0ZpbGVNYW5hZ2VyRXh0cmFzLm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvTWlzYy9XZWJOU0ZpbGVNYW5hZ2VyRXh0cmFzLm1tCmluZGV4IDkwNTE3NGRh
NzU2ZGQ2MjhiZWRlZmQ1MGMyYjIzNzI5ZTUzMzUwMmIuLmM1NDEzZTgxYzZhM2VjYjJlYzk3ODFm
NmI4YmZkNmMyYjJhMDVkZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01p
c2MvV2ViTlNGaWxlTWFuYWdlckV4dHJhcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9NaXNjL1dlYk5TRmlsZU1hbmFnZXJFeHRyYXMubW0KQEAgLTMwLDEwICszMCwxMCBAQAogCiAj
aW1wb3J0ICJXZWJLaXROU1N0cmluZ0V4dHJhcy5oIgogI2ltcG9ydCAiV2ViTlNVUkxFeHRyYXMu
aCIKLSNpbXBvcnQgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Mb2Fk
ZXJOU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8c3lzL3N0YXQuaD4KICNpbXBvcnQgPHd0Zi9Bc3Nl
cnRpb25zLmg+CisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8d3RmL09iakNS
dW50aW1lRXh0cmFzLmg+CiAKIEBpbXBsZW1lbnRhdGlvbiBOU0ZpbGVNYW5hZ2VyIChXZWJOU0Zp
bGVNYW5hZ2VyRXh0cmFzKQpAQCAtNDQsNyArNDQsNyBAQCAtICh2b2lkKV93ZWJraXRfc2V0TWV0
YWRhdGFVUkw6KE5TU3RyaW5nICopVVJMU3RyaW5nIHJlZmVycmVyOihOU1N0cmluZyAqKXJlZmVy
cgogewogICAgIEFTU0VSVChVUkxTdHJpbmcpOwogICAgIEFTU0VSVChwYXRoKTsKLSAgICBXZWJD
b3JlOjpGaWxlU3lzdGVtOjpzZXRNZXRhZGF0YVVSTChwYXRoLCBVUkxTdHJpbmcsIHJlZmVycmVy
KTsKKyAgICBGaWxlU3lzdGVtOjpzZXRNZXRhZGF0YVVSTChwYXRoLCBVUkxTdHJpbmcsIHJlZmVy
cmVyKTsKIH0KIAogI2VuZGlmIC8vICFQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtOTMsNyArOTMs
NyBAQCAtIChOU1N0cmluZyAqKV93ZWJraXRfcGF0aFdpdGhVbmlxdWVGaWxlbmFtZUZvclBhdGg6
KE5TU3RyaW5nICopcGF0aAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAtIChOU1N0cmluZyAq
KV93ZWJraXRfY3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5V2l0aFRlbXBsYXRlUHJlZml4OihOU1N0
cmluZyAqKXByZWZpeAogewotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpjcmVhdGVU
ZW1wb3JhcnlEaXJlY3RvcnkocHJlZml4KTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6Y3JlYXRl
VGVtcG9yYXJ5RGlyZWN0b3J5KHByZWZpeCk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZVByb3ZpZGVyLm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZVByb3ZpZGVyLm1tCmluZGV4
IDc0OTViMTc1ZmZmNDVkYzVhNTRiMDE0ZjhkNWJmMDNlNTQzOTQzY2MuLmFkYzRjMzk4ODRjNGNi
MmQyYTNiZWI2YjE5NWJjZGEwMDA4OWMxNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VQcm92aWRlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlUHJvdmlkZXIubW0KQEAgLTI2LDE2ICsyNiwx
NiBAQAogI2ltcG9ydCAiV2ViRGF0YWJhc2VQcm92aWRlci5oIgogI2ltcG9ydCAiV2ViRGF0YWJh
c2VNYW5hZ2VyUHJpdmF0ZS5oIgogCi0jaW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KKyNp
bXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKIFN0cmluZyBXZWJEYXRhYmFzZVByb3ZpZGVyOjpp
bmRleGVkRGF0YWJhc2VEaXJlY3RvcnlQYXRoKCkKIHsKICAgICBOU1VzZXJEZWZhdWx0cyAqZGVm
YXVsdHMgPSBbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdOwogICAgIE5TU3Ry
aW5nICpkYXRhYmFzZXNEaXJlY3RvcnkgPSBbZGVmYXVsdHMgb2JqZWN0Rm9yS2V5OldlYkRhdGFi
YXNlRGlyZWN0b3J5RGVmYXVsdHNLZXldOwogICAgIGlmICghZGF0YWJhc2VzRGlyZWN0b3J5IHx8
ICFbZGF0YWJhc2VzRGlyZWN0b3J5IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCi0g
ICAgICAgIGRhdGFiYXNlc0RpcmVjdG9yeSA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudCgifi9MaWJyYXJ5L1dlYktpdC9EYXRhYmFzZXMvX19fSW5kZXhlZERC
Il9zLCBbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdKTsKKyAgICAgICAg
ZGF0YWJhc2VzRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KCJ+L0xpYnJhcnkvV2ViS2l0L0RhdGFiYXNlcy9fX19JbmRleGVkREIiX3MsIFtbTlNCdW5kbGUg
bWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl0pOwogICAgIGVsc2UKLSAgICAgICAgZGF0YWJh
c2VzRGlyZWN0b3J5ID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KGRhdGFiYXNlc0RpcmVjdG9yeSwgIl9fX0luZGV4ZWREQiJfcyk7CisgICAgICAgIGRhdGFi
YXNlc0RpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRh
YmFzZXNEaXJlY3RvcnksICJfX19JbmRleGVkREIiX3MpOwogICAgIAogICAgIHJldHVybiBbZGF0
YWJhc2VzRGlyZWN0b3J5IHN0cmluZ0J5U3RhbmRhcmRpemluZ1BhdGhdOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IGVkMGUwZGY3OWIwM2RhNjZl
OGEyOWJjZWQ5Y2VhYTkzY2Q2NjVlOGMuLjAxYzYwMDVlYjJhMmMwZDA2NGYwNmY4ZGM0NGMwMzUz
ZjQ3OGZjZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0K
QEAgLTE0OCw3ICsxNDgsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9FZGl0b3IuaD4KICNpbXBvcnQg
PFdlYkNvcmUvRXZlbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvRXZlbnRIYW5kbGVyLmg+Ci0jaW1w
b3J0IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPFdlYkNvcmUvRm9jdXNDb250cm9s
bGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZvbnRBdHRyaWJ1dGVzLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0ZvbnRDYWNoZS5oPgpAQCAtMjMxLDYgKzIzMCw3IEBACiAjaW1wb3J0IDxwYWwvc3BpL21h
Yy9OU1NwZWxsQ2hlY2tlclNQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9tYWMvTlNXaW5kb3dTUEku
aD4KICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5o
PgogI2ltcG9ydCA8d3RmL0hhc2hUcmFpdHMuaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+
CiAjaW1wb3J0IDx3dGYvT2JqQ1J1bnRpbWVFeHRyYXMuaD4KQEAgLTY4ODUsNyArNjg4NSw3IEBA
IC0gKEJPT0wpcGVyZm9ybURyYWdPcGVyYXRpb246KGlkIDxOU0RyYWdnaW5nSW5mbz4pZHJhZ2dp
bmdJbmZvCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAotICAgICAgICBO
U1N0cmluZyAqZHJvcERlc3RpbmF0aW9uUGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmNyZWF0
ZVRlbXBvcmFyeURpcmVjdG9yeShAIldlYktpdERyb3BEZXN0aW5hdGlvbiIpOworICAgICAgICBO
U1N0cmluZyAqZHJvcERlc3RpbmF0aW9uUGF0aCA9IEZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFy
eURpcmVjdG9yeShAIldlYktpdERyb3BEZXN0aW5hdGlvbiIpOwogICAgICAgICBpZiAoIWRyb3BE
ZXN0aW5hdGlvblBhdGgpIHsKICAgICAgICAgICAgIGRlbGV0ZSBkcmFnRGF0YTsKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1Bs
dWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lu
cy9QbHVnaW5EYXRhYmFzZS5jcHAKaW5kZXggYmM3OWQ4OWJkNDQ2YzU2ZWExYmE5ZDU3Yzc1YWUz
OTlhYThmMDRjZi4uNjQxYWMzNTRjMzQxOTY3ZWE2Y2VkNjkwZDVlNmQ0NWM2YzJjMmExYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5j
cHAKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKICNp
ZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX01FVEFEQVRBX0NBQ0hFKQotI2luY2x1ZGUgIkZpbGVT
eXN0ZW0uaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2VuZGlmCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMv
UGx1Z2luUGFja2FnZS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5Q
YWNrYWdlLmgKaW5kZXggYjQ4ODNkZWE5OTc2ZGI1MGNkZTUyODYwYWE5YjkyYjViYjEwMTBkZi4u
ODk4N2EzZDM1M2M3NmMwYWE0NDZlYWIzOTA4MzczMzM5ZDUxN2QzMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5QYWNrYWdlLmgKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5QYWNrYWdlLmgKQEAgLTI5LDggKzI5LDgg
QEAKIAogI2luY2x1ZGUgIlBsYXRmb3JtTW9kdWxlLmgiCiAjaW5jbHVkZSAiUGx1Z2luUXVpcmtT
ZXQuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1RpbWVyLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nSGFzaC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lu
cy9QbHVnaW5TdHJlYW0uaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2lu
U3RyZWFtLmgKaW5kZXggYzFiOWY4N2FjNGU2MjJmYmIyZTJlMjA1ZDE2NDU5YzBjMTk0ZTdiNi4u
NDMxYjM2MzAzNjJjOWU1MjExMThkZDAzMjczYTZjZDljMjhjYzQ2NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5TdHJlYW0uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblN0cmVhbS5oCkBAIC0yNywxMiArMjcsMTIg
QEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiUGx1Z2luUXVpcmtTZXQuaCIKLSNpbmNsdWRl
IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL05ldHNjYXBlUGx1Z0lu
U3RyZWFtTG9hZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Rp
bWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9ucHJ1bnRpbWVfaW50ZXJuYWwuaD4KKyNpbmNsdWRl
IDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcHBsaWNhdGlvbkNhY2hlLmNwcCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkFwcGxpY2F0aW9uQ2FjaGUuY3BwCmluZGV4IGI4NWRkMTU0NDBhNmVh
NTQwNGE4YTQ4NTIxNDNlNTkxNzhmZWMxMmQuLjkwYmUxZmNlNzUxYjRmMWI1ZDk0YjFiYjY3NGMz
NmIzZWM1NjlmY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFwcGxp
Y2F0aW9uQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFwcGxpY2F0
aW9uQ2FjaGUuY3BwCkBAIC0zMCwxMyArMzAsMTMgQEAKICNpbmNsdWRlICJNYXJzaGFsbGluZ0hl
bHBlcnMuaCIKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlcy5oIgogI2luY2x1ZGUgIldlYlNlY3Vy
aXR5T3JpZ2luLmgiCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvQXBwbGljYXRpb25DYWNoZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NPTVB0ci5oPgotI2luY2x1ZGUgPFdlYkNv
cmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNp
bmNsdWRlIDxjb211dGlsLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRl
IDx3dGYvUmV0YWluUHRyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcAppbmRleCAzZjZjMzhi
MDYyOGRiNGJhY2Y5YzQxMzU3YjU5MWE3ZGVjOWFjZDQxLi5mOTk2M2YxYzA2ODk2ZDdhMmNiMmQ3
MzNhMThlZmFhYWYzY2U0ODA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJEYXRhYmFzZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRh
dGFiYXNlTWFuYWdlci5jcHAKQEAgLTM5LDkgKzM5LDkgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0NP
TVB0ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGF0YWJhc2VNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9EYXRhYmFzZVRyYWNrZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0u
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2lu
Y2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkK
QEAgLTQzNiw3ICs0MzYsNyBAQCBzdGF0aWMgV1RGOjpTdHJpbmcgZGF0YWJhc2VzRGlyZWN0b3J5
KCkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihkaXJlY3RvcnlQcmVm
LmdldCgpKTsKICNlbmRpZgogCi0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZp
Y1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkRhdGFiYXNlcyIpOworICAgIHJldHVybiBGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNT
dG9yYWdlRGlyZWN0b3J5KCksICJEYXRhYmFzZXMiKTsKIH0KIAogdm9pZCBXZWJLaXRJbml0aWFs
aXplV2ViRGF0YWJhc2VzSWZOZWNlc3NhcnkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViRG93bmxvYWRDdXJsLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkRvd25sb2FkQ3VybC5jcHAKaW5kZXggMjBkNGY0MDgzNWY3MjQxMzhmMTcyM2E4ZGMyZjk0Yjg5
NTJlZWVkNy4uOTliNjI3ZjFhYWMwM2FlZGY1MDY4N2ZjN2YzMzZiYjk1ZDljZGQyMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWRDdXJsLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZEN1cmwuY3BwCkBAIC0zNSwyMiArMzUs
MTkgQEAKICNpbmNsdWRlICJXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgogI2luY2x1
ZGUgIldlYlVSTENyZWRlbnRpYWwuaCIKICNpbmNsdWRlICJXZWJVUkxSZXNwb25zZS5oIgotCi0j
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotCi0jaW5jbHVkZSA8aW8uaD4KLSNpbmNsdWRl
IDxzeXMvc3RhdC5oPgotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotCiAjaW5jbHVkZSA8V2ViQ29y
ZS9CU3RyaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DdXJsRG93bmxvYWQuaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVk
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9SZXNvdXJjZUhhbmRsZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9UZXh0RW5jb2RpbmcuaD4KKyNpbmNsdWRlIDxpby5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+
CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKaW5kZXggYTYzMWI5
MTY5Njc3NzJiYjgwZTdjNjNlMGY1ZTU3ZjZmMzI1YzY5ZS4uMDI1YzIwYmVhMjM4Y2Q2YTQ5NWEy
NTBmNmM1NTBjYTdmNTI3OWQ2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViUHJlZmVyZW5jZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZl
cmVuY2VzLmNwcApAQCAtMzgsMTMgKzM4LDEzIEBACiAKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlv
bi9Db3JlRm91bmRhdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ09NUHRyLmg+Ci0jaW5jbHVk
ZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Gb250Q2FzY2FkZS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvTG9jYWxpemVkU3RyaW5ncy5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CiAjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUg
PHNobG9iai5oPgogI2luY2x1ZGUgPHdjaGFyLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0u
aD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3ll
ZC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Vmlldy5jcHAKaW5kZXggZTc2MTc0NGUwZDFiODVhZmZkMTBiNzc3Y2RkMzc5MWE0ZjcxYjMxZS4u
ZTMzMTA2M2EwYmYwZWJkODIwMDkxNTA0MDc2MjZkZTlhMTQwZTUyZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViVmlldy5jcHAKQEAgLTk2LDcgKzk2LDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0Vk
aXRvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRXZlbnRIYW5kbGVyLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9FdmVudE5hbWVzLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9GbG9hdFF1YWQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZvY3VzQ29udHJv
bGxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRm9udC5oPgpAQCAtMTcxLDYgKzE3MCw3IEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dzVG91Y2guaD4KICNpbmNsdWRlIDxjb21kZWYuaD4KICNp
bmNsdWRlIDxkMmQxLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3
dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9Qcm9jZXNzUHJpdmlsZWdlLmg+CiAjaW5j
bHVkZSA8d3RmL1JBTVNpemUuaD4KQEAgLTUxMyw3ICs1MTMsNyBAQCB2b2lkIFdlYlZpZXc6OnNl
dENhY2hlTW9kZWwoV2ViQ2FjaGVNb2RlbCBjYWNoZU1vZGVsKQogICAgICAgICBpZiAocHJlZmVy
ZW5jZSAmJiAoQ0ZTdHJpbmdHZXRUeXBlSUQoKSA9PSBDRkdldFR5cGVJRChwcmVmZXJlbmNlLmdl
dCgpKSkpCiAgICAgICAgICAgICBjZnVybENhY2hlRGlyZWN0b3J5ID0gYWRvcHRDRihzdGF0aWNf
Y2FzdDxDRlN0cmluZ1JlZj4ocHJlZmVyZW5jZS5sZWFrUmVmKCkpKTsKICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgY2Z1cmxDYWNoZURpcmVjdG9yeSA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06Omxv
Y2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLmNyZWF0ZUNGU3RyaW5nKCk7CisgICAg
ICAgICAgICBjZnVybENhY2hlRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lm
aWNTdG9yYWdlRGlyZWN0b3J5KCkuY3JlYXRlQ0ZTdHJpbmcoKTsKICAgICB9CiAgICAgY2FjaGVE
aXJlY3RvcnkgPSBTdHJpbmcoY2Z1cmxDYWNoZURpcmVjdG9yeS5nZXQoKSk7CiAgICAgQ0ZJbmRl
eCBjYWNoZU1lbW9yeUNhcGFjaXR5ID0gMDsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCAzNmRjNTI1NWQ3ZDUyZTZlOTZkMDRkOTFhNGIwZDkxNjNl
NGRlZDYyLi4zYWUyNGZiMmJkYzY3OGQ3ZDU2YTEwMTZjNWY4NWM4NzM3YWVhMmNmIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcg
QEAKKzIwMTktMDEtMjMgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgor
CisgICAgICAgIE1vdmUgRmlsZVN5c3RlbSB0byBXVEYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzYwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJU
cmVlLmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0OgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9QbGF0Zm9ybUpTQ09ubHkuY21ha2U6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9QbGF0
Zm9ybVBsYXlTdGF0aW9uLmNtYWtlOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvUGxhdGZvcm1X
UEUuY21ha2U6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmls
ZVN5c3RlbS5jcHA6IFJlbmFtZWQgZnJvbSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvRmlsZVN5c3RlbS5jcHAuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L0ZpbGVNb25pdG9yLmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
U2VjdXJpdHlPcmlnaW4uY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9TaGFyZWRCdWZmZXJUZXN0LmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvY29jb2EvRGF0YWJhc2VUcmFja2VyVGVzdC5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvY3VybC9Db29raWVzLmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWRQcm9ncmVzcy5tbToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL3dpbi9QbGF0Zm9ybVV0aWxpdGllc1dpbi5jcHA6CisKIDIwMTktMDEtMjMgIFJv
YiBCdWlzICA8cmJ1aXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBVcGRhdGUgTUlNRSB0eXBlIHBh
cnNlcgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVl
LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAKaW5kZXgg
YTRiNWM3NzA3MDg5MGE1Y2YxNDJkMmQ5YzhiM2MzMzg2NDgzZTZlZC4uYTBiNjg1Yzc1ZjlkYWYw
ZmViN2VhYWUxYmIzMmEyZTk1MmQyMjZmNCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4v
RHVtcFJlbmRlclRyZWUuY3BwCkBAIC00Niw3ICs0Niw2IEBACiAKICNpbmNsdWRlIDxDb3JlRm91
bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Rlc3RS
dW5uZXJVdGlscy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUg
PFdlYktpdExlZ2FjeS9XZWJLaXQuaD4KICNpbmNsdWRlIDxXZWJLaXRMZWdhY3kvV2ViS2l0Q09N
QVBJLmg+CiAjaW5jbHVkZSA8Y29tdXRpbC5oPgpAQCAtNjAsNiArNTksNyBAQAogI2luY2x1ZGUg
PHNobHdhcGkuaD4KICNpbmNsdWRlIDx0Y2hhci5oPgogI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNp
bmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgpA
QCAtMjIyLDcgKzIyMiw3IEBAIHN0YXRpYyBTdHJpbmcgbGlicmFyeVBhdGhGb3JEdW1wUmVuZGVy
VHJlZSgpCiAgICAgICAgIHJldHVybiBTdHJpbmcgKHBhdGguZGF0YSgpLCBwYXRoLmxlbmd0aCgp
KTsKICAgICB9CiAKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3Bl
Y2lmaWNTdG9yYWdlRGlyZWN0b3J5KCk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OmxvY2FsVXNl
clNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpOwogfQogI2VuZGlmCiAKQEAgLTkzMSw5ICs5MzEs
OSBAQCBzdGF0aWMgdm9pZCBzZXREZWZhdWx0c1RvQ29uc2lzdGVudFZhbHVlc0ZvclRlc3Rpbmco
KQogICAgIFN0cmluZyBsaWJyYXJ5UGF0aCA9IGxpYnJhcnlQYXRoRm9yRHVtcFJlbmRlclRyZWUo
KTsKIAogICAgIC8vIFNldCB1cCB0aGVzZSB2YWx1ZXMgYmVmb3JlIGNyZWF0aW5nIHRoZSBXZWJW
aWV3IHNvIHRoYXQgdGhlIHZhcmlvdXMgaW5pdGlhbGl6YXRpb25zIHdpbGwgc2VlIHRoZXNlIHBy
ZWZlcnJlZCB2YWx1ZXMuCi0gICAgQ0ZQcmVmZXJlbmNlc1NldEFwcFZhbHVlKFdlYkRhdGFiYXNl
RGlyZWN0b3J5RGVmYXVsdHNLZXksIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChsaWJyYXJ5UGF0aCwgIkRhdGFiYXNlcyIpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0
KCksIGFwcElkLmdldCgpKTsKLSAgICBDRlByZWZlcmVuY2VzU2V0QXBwVmFsdWUoV2ViU3RvcmFn
ZURpcmVjdG9yeURlZmF1bHRzS2V5LCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQobGlicmFyeVBhdGgsICJMb2NhbFN0b3JhZ2UiKS5jcmVhdGVDRlN0cmluZygp
LmdldCgpLCBhcHBJZC5nZXQoKSk7Ci0gICAgQ0ZQcmVmZXJlbmNlc1NldEFwcFZhbHVlKFdlYktp
dExvY2FsQ2FjaGVEZWZhdWx0c0tleSwgV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KGxpYnJhcnlQYXRoLCAiTG9jYWxDYWNoZSIpLmNyZWF0ZUNGU3RyaW5nKCku
Z2V0KCksIGFwcElkLmdldCgpKTsKKyAgICBDRlByZWZlcmVuY2VzU2V0QXBwVmFsdWUoV2ViRGF0
YWJhc2VEaXJlY3RvcnlEZWZhdWx0c0tleSwgRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KGxpYnJhcnlQYXRoLCAiRGF0YWJhc2VzIikuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwg
YXBwSWQuZ2V0KCkpOworICAgIENGUHJlZmVyZW5jZXNTZXRBcHBWYWx1ZShXZWJTdG9yYWdlRGly
ZWN0b3J5RGVmYXVsdHNLZXksIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChs
aWJyYXJ5UGF0aCwgIkxvY2FsU3RvcmFnZSIpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGFwcElk
LmdldCgpKTsKKyAgICBDRlByZWZlcmVuY2VzU2V0QXBwVmFsdWUoV2ViS2l0TG9jYWxDYWNoZURl
ZmF1bHRzS2V5LCBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobGlicmFyeVBh
dGgsICJMb2NhbENhY2hlIikuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgYXBwSWQuZ2V0KCkpOwog
I2VuZGlmCiB9CiAKQEAgLTEwMzUsNyArMTAzNSw3IEBAIHN0YXRpYyB2b2lkIHNpemVXZWJWaWV3
Rm9yQ3VycmVudFRlc3QoKQogCiBzdGF0aWMgU3RyaW5nIGZpbmRGb250RmFsbGJhY2soY29uc3Qg
Y2hhciogcGF0aE9yVXJsKQogewotICAgIFN0cmluZyBwYXRoVG9Gb250RmFsbGJhY2sgPSBXZWJD
b3JlOjpGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKHBhdGhPclVybCk7CisgICAgU3RyaW5nIHBh
dGhUb0ZvbnRGYWxsYmFjayA9IEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUocGF0aE9yVXJsKTsK
IAogICAgIHdjaGFyX3QgZnVsbFBhdGhbX01BWF9QQVRIXTsKICAgICBpZiAoIV93ZnVsbHBhdGgo
ZnVsbFBhdGgsIHBhdGhUb0ZvbnRGYWxsYmFjay5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlv
bigpLmRhdGEoKSwgX01BWF9QQVRIKSkKQEAgLTEwNTQsMjAgKzEwNTQsMjAgQEAgc3RhdGljIFN0
cmluZyBmaW5kRm9udEZhbGxiYWNrKGNvbnN0IGNoYXIqIHBhdGhPclVybCkKICAgICAgICAgcmV0
dXJuIGVtcHR5U3RyaW5nKCk7CiAKICAgICBTdHJpbmcgcGF0aFRvVGVzdCA9IHBhdGhUb0NoZWNr
LnN1YnN0cmluZyhsb2NhdGlvbiArIGxheW91dFRlc3RzLmxlbmd0aCgpICsgMSk7Ci0gICAgU3Ry
aW5nIHBvc3NpYmxlUGF0aFRvTG9ndWUgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQocGF0aFRvQ2hlY2suc3Vic3RyaW5nKDAsIGxvY2F0aW9uICsgbGF5b3V0
VGVzdHMubGVuZ3RoKCkgKyAxKSwgInBsYXRmb3JtXFx3aW4iKTsKKyAgICBTdHJpbmcgcG9zc2li
bGVQYXRoVG9Mb2d1ZSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXRo
VG9DaGVjay5zdWJzdHJpbmcoMCwgbG9jYXRpb24gKyBsYXlvdXRUZXN0cy5sZW5ndGgoKSArIDEp
LCAicGxhdGZvcm1cXHdpbiIpOwogCiAgICAgVmVjdG9yPFN0cmluZz4gcG9zc2libGVQYXRoczsK
LSAgICBwb3NzaWJsZVBhdGhzLmFwcGVuZChXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQocG9zc2libGVQYXRoVG9Mb2d1ZSwgcGF0aFRvVGVzdCkpOworICAgIHBv
c3NpYmxlUGF0aHMuYXBwZW5kKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChw
b3NzaWJsZVBhdGhUb0xvZ3VlLCBwYXRoVG9UZXN0KSk7CiAKICAgICBzaXplX3QgbmV4dENhbmRp
ZGF0ZUVuZCA9IHBhdGhUb1Rlc3QucmV2ZXJzZUZpbmQoJ1xcJyk7CiAgICAgd2hpbGUgKG5leHRD
YW5kaWRhdGVFbmQgJiYgbmV4dENhbmRpZGF0ZUVuZCAhPSBXVEY6Om5vdEZvdW5kKSB7CiAgICAg
ICAgIHBhdGhUb1Rlc3QgPSBwYXRoVG9UZXN0LnN1YnN0cmluZygwLCBuZXh0Q2FuZGlkYXRlRW5k
KTsKLSAgICAgICAgcG9zc2libGVQYXRocy5hcHBlbmQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBvc3NpYmxlUGF0aFRvTG9ndWUsIHBhdGhUb1Rlc3QpKTsK
KyAgICAgICAgcG9zc2libGVQYXRocy5hcHBlbmQoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KHBvc3NpYmxlUGF0aFRvTG9ndWUsIHBhdGhUb1Rlc3QpKTsKICAgICAgICAgbmV4
dENhbmRpZGF0ZUVuZCA9IHBhdGhUb1Rlc3QucmV2ZXJzZUZpbmQoJ1xcJyk7CiAgICAgfQogCiAg
ICAgZm9yIChWZWN0b3I8U3RyaW5nPjo6aXRlcmF0b3IgcG9zID0gcG9zc2libGVQYXRocy5iZWdp
bigpOyBwb3MgIT0gcG9zc2libGVQYXRocy5lbmQoKTsgKytwb3MpIHsKLSAgICAgICAgcGF0aFRv
Rm9udEZhbGxiYWNrID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KCpwb3MsICJyZXNvdXJjZXNcXCIpOworICAgICAgICBwYXRoVG9Gb250RmFsbGJhY2sgPSBG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoKnBvcywgInJlc291cmNlc1xcIik7
CiAKICAgICAgICAgaWYgKDo6UGF0aElzRGlyZWN0b3J5VyhwYXRoVG9Gb250RmFsbGJhY2suY2hh
cmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpKQogICAgICAgICAgICAgcmV0dXJu
IHBhdGhUb0ZvbnRGYWxsYmFjazsKQEAgLTEwODEsNyArMTA4MSw3IEBAIHN0YXRpYyB2b2lkIGFk
ZEZvbnRGYWxsYmFja0lmUHJlc2VudChjb25zdCBTdHJpbmcmIGZvbnRGYWxsYmFja1BhdGgpCiAg
ICAgaWYgKGZvbnRGYWxsYmFja1BhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBTdHJpbmcgZm9udEZhbGxiYWNrID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KGZvbnRGYWxsYmFja1BhdGgsICJNYWMtY29tcGF0aWJsZS1mb250LWZhbGxi
YWNrLmNzcyIpOworICAgIFN0cmluZyBmb250RmFsbGJhY2sgPSBGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQoZm9udEZhbGxiYWNrUGF0aCwgIk1hYy1jb21wYXRpYmxlLWZvbnQt
ZmFsbGJhY2suY3NzIik7CiAKICAgICBpZiAoITo6UGF0aEZpbGVFeGlzdHNXKGZvbnRGYWxsYmFj
ay5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSkpCiAgICAgICAgIHJldHVy
bjsKQEAgLTEwOTQsNyArMTA5NCw3IEBAIHN0YXRpYyB2b2lkIHJlbW92ZUZvbnRGYWxsYmFja0lm
UHJlc2VudChjb25zdCBTdHJpbmcmIGZvbnRGYWxsYmFja1BhdGgpCiAgICAgaWYgKGZvbnRGYWxs
YmFja1BhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBTdHJpbmcgZm9udEZh
bGxiYWNrID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGZv
bnRGYWxsYmFja1BhdGgsICJNYWMtY29tcGF0aWJsZS1mb250LWZhbGxiYWNrLmNzcyIpOworICAg
IFN0cmluZyBmb250RmFsbGJhY2sgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoZm9udEZhbGxiYWNrUGF0aCwgIk1hYy1jb21wYXRpYmxlLWZvbnQtZmFsbGJhY2suY3NzIik7
CiAKICAgICBpZiAoITo6UGF0aEZpbGVFeGlzdHNXKGZvbnRGYWxsYmFjay5jaGFyYWN0ZXJzV2l0
aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L0NNYWtlTGlzdHMudHh0CmluZGV4IGIyNDkwMDg5OGIzZmM1YWY4OWM0OTAzMzgwYzNmZDdjMWRj
MGQ3MDUuLmQ5Y2VhOGY1ODFmNmIzMDFkMjkzNWQ1ZGI0NWIwNzc5NjlkNGMwZGMgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9DTWFrZUxpc3RzLnR4dApAQCAtMTg4LDcgKzE4OCwxNCBAQCBzZXQoVGVzdFdURl9T
T1VSQ0VTCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL1dvcmtlclBvb2wuY3Bw
CiApCiAKLSMgRklYTUU6IFRlc3RzL1dURi9SdW5Mb29wLmNwcCBpcyBtaXNzaW5nIGJlY2F1c2Ug
aXQgZG9lc24ndCB3b3JrIGZvciBXaW5kb3dzLgorIyBGSVhNRTogTWFrZSB0aGVzZSB3b3JrIG9u
IFdpbmRvd3MgdG9vLgoraWYgKE5PVCBXSU4zMikKKyAgICBsaXN0KEFQUEVORCBUZXN0V1RGX1NP
VVJDRVMKKyAgICAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL0ZpbGVTeXN0ZW0u
Y3BwCisgICAgICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9SdW5Mb29wLmNwcAor
ICAgICkKK2VuZGlmICgpCisKICMgRklYTUU6IFBsYXRmb3JtLXNwZWNpZmljIHNvdXJjZXMgaW4g
VGVzdHMvV1RGIGFyZSBub3QgaW5jbHVkZWQgaW4gVGVzdFdURl9TT1VSQ0VTLgogCiBXRUJLSVRf
SU5DTFVERV9DT05GSUdfRklMRVNfSUZfRVhJU1RTKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvUGxhdGZvcm1HVEsuY21ha2UgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3Jt
R1RLLmNtYWtlCmluZGV4IGMzNGZhZTA3Y2YzYzZiMGEzOWMzOTlmZWUzMmNkMjVjM2EwYWE3ZjQu
LmNlODIxZTYxYjA1NjQzNWIyZWVlZTVlMGU1NmJhMjM1NzcyNTg4NWUgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtOTMsNyArOTMsNiBAQCBhZGRfZXhlY3V0YWJsZShU
ZXN0V2ViQ29yZQogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUvQ29tcGxl
eFRleHRDb250cm9sbGVyLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNv
cmUvRE5TLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUvRmlsZU1v
bml0b3IuY3BwCi0gICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV2ViQ29yZS9GaWxlU3lz
dGVtLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUvZ3N0cmVhbWVy
L0dzdE1hcHBlZEJ1ZmZlci5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJD
b3JlL2dzdHJlYW1lci9HU3RyZWFtZXJUZXN0LmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9
L1Rlc3RzL1dlYkNvcmUvR3JpZFBvc2l0aW9uLmNwcApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9QbGF0Zm9ybUpTQ09ubHkuY21ha2UgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRm
b3JtSlNDT25seS5jbWFrZQppbmRleCBhM2ZhMmRhOTU1ZDVhMzljMWMzOTY4MGMyMWU4Y2RlNmU4
ZmI1YzgwLi5iNTU2OThiYmZiZjk3MzNhYzA4ZTM2OTM1YTk4YmIyYjY5ZWUwYjdmIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtSlNDT25seS5jbWFrZQorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtSlNDT25seS5jbWFrZQpAQCAtMjEsNyArMjEsMyBAQCBl
bmRpZiAoKQogc2V0KHRlc3RfbWFpbl9TT1VSQ0VTCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0v
Z2VuZXJpYy9tYWluLmNwcAogKQotCi1saXN0KEFQUEVORCBUZXN0V1RGX1NPVVJDRVMKLSAgICAk
e1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvUnVuTG9vcC5jcHAKLSkKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1QbGF5U3RhdGlvbi5jbWFrZSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvUGxhdGZvcm1QbGF5U3RhdGlvbi5jbWFrZQppbmRleCA5ZjFhMmE2NGQ1MTg0
MDRkYTk4NmU2NjUxMjcwZjc4OGEwNWQ4ZTZjLi5mMWZjYjA0MWM3NWIwNzE1ZjBhMzJmYmQ0NDBl
YWM0ZTAxMWM0MTc5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtUGxh
eVN0YXRpb24uY21ha2UKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVBsYXlTdGF0
aW9uLmNtYWtlCkBAIC0xNCw1ICsxNCw0IEBAIHNldCh0ZXN0X21haW5fU09VUkNFUwogCiBsaXN0
KEFQUEVORCBUZXN0V1RGX1NPVVJDRVMKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9nZW5lcmlj
L1V0aWxpdGllc0dlbmVyaWMuY3BwCi0gICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RG
L1J1bkxvb3AuY3BwCiApCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3Jt
V1BFLmNtYWtlIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVdQRS5jbWFrZQppbmRleCBi
Njg3NzU5OGQ4NzdkZTZjOGRhODZiNGViNTdjYzg2ZmYwYTJmN2VmLi40MjY3ZGEyMGQwNzBjNDdi
YzgxZTQ2ZWMyYjdmMmQxM2MwNzk5ZDc2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1BsYXRmb3JtV1BFLmNtYWtlCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1XUEUu
Y21ha2UKQEAgLTYwLDcgKzYwLDYgQEAgYWRkX2V4ZWN1dGFibGUoVGVzdFdlYkNvcmUKICAgICAk
e1RFU1RXRUJLSVRBUElfRElSfS9nbGliL1V0aWxpdGllc0dMaWIuY3BwCiAgICAgJHtURVNUV0VC
S0lUQVBJX0RJUn0vVGVzdHNDb250cm9sbGVyLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9
L1Rlc3RzL1dlYkNvcmUvRmlsZU1vbml0b3IuY3BwCi0gICAgJHtURVNUV0VCS0lUQVBJX0RJUn0v
VGVzdHMvV2ViQ29yZS9GaWxlU3lzdGVtLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rl
c3RzL1dlYkNvcmUvZ3N0cmVhbWVyL0dzdE1hcHBlZEJ1ZmZlci5jcHAKICAgICAke1RFU1RXRUJL
SVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL2dzdHJlYW1lci9HU3RyZWFtZXJUZXN0LmNwcAogICAg
ICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUvSFRNTFBhcnNlcklkaW9tcy5jcHAK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNTQ3ZDFlYjc0OGQ5OGQxZGYxZjA0N2UxOWE4NTc2
ZmE1MzgwOTM2Zi4uNjMwNjhlM2E4MTYzNGUwZTNhNzNiNjNjMDExMTMxYzA1OGEwMjYwZSAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQyNyw3ICs0MjcsNiBAQAogCQk3QzgzRTA0QzFEMEE2
NDE4MDBGRUJDRjMgLyogV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEODlEMDM4MUM0RURCMkEwMDA0MEEwNCAvKiBX
ZWJDb3JlTlNVUkxTZXNzaW9uLm1tICovOyB9OwogCQk3QzgzRTA0RDFEMEE2NDE4MDBGRUJDRjMg
LyogREZBQ29tYmluZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMjYwQkE1NzgxQjFEMkU3QjAwNEZBMDdDIC8qIERGQUNvbWJpbmVyLmNwcCAqLzsg
fTsKIAkJN0M4M0UwNEUxRDBBNjQxODAwRkVCQ0YzIC8qIERGQU1pbmltaXplci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNkY2RTFFRjFBREM3NDlC
MDBERTY5NkIgLyogREZBTWluaW1pemVyLmNwcCAqLzsgfTsKLQkJN0M4M0UwNEYxRDBBNjQxODAw
RkVCQ0YzIC8qIEZpbGVTeXN0ZW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDE5NzNCNUExQUYyMjg2QTAwNkM3QjM2IC8qIEZpbGVTeXN0ZW0uY3Bw
ICovOyB9OwogCQk3QzgzRTA1MDFEMEE2NDE4MDBGRUJDRjMgLyogSFRNTFBhcnNlcklkaW9tcy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0I4OEEz
MzFDODAwNTZEMDBCQjI0MTggLyogSFRNTFBhcnNlcklkaW9tcy5jcHAgKi87IH07CiAJCTdDODNF
MDUxMUQwQTY0MTgwMEZFQkNGMyAvKiBQYXJzZWRDb250ZW50UmFuZ2UuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QyMjVDMDcxQzQ1QTY5MjAwMTQw
NzYxIC8qIFBhcnNlZENvbnRlbnRSYW5nZS5jcHAgKi87IH07CiAJCTdDODNFMDUyMUQwQTY0MTgw
MEZFQkNGMyAvKiBTaGFyZWRCdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDE5NzNCNUMxQUYyMjg3NTAwNkM3QjM2IC8qIFNoYXJlZEJ1ZmZl
ci5jcHAgKi87IH07CkBAIC02ODksNiArNjg4LDcgQEAKIAkJQTFDNEZCNzMxQkFDRDFDQTAwMzc0
MkQwIC8qIHBhZ2VzLnBhZ2VzIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExQzRGQjcyMUJBQ0QxQjcwMDM3NDJEMCAvKiBwYWdlcy5wYWdlcyAq
LzsgfTsKIAkJQTFERjc0MzIxQzQxQjY1ODAwQTJGNEQwIC8qIEFsd2F5c1JldmFsaWRhdGVkVVJM
U2NoZW1lcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEExREY3NDMwMUM0MUI2NTgwMEEyRjREMCAvKiBBbHdheXNSZXZhbGlkYXRlZFVSTFNjaGVtZXMu
bW0gKi87IH07CiAJCUExRUMxMTg4MUY0MjU0MTIwMEQwMTQ2RSAvKiBQcmV2aWV3TG9hZGVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRUMxMTg3
MUY0MjU0MTIwMEQwMTQ2RSAvKiBQcmV2aWV3TG9hZGVyLmNwcCAqLzsgfTsKKwkJQTMxMDgyNzIy
MUYyOTZGRjAwQzI4Qjk3IC8qIEZpbGVTeXN0ZW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTMxMDgyNzEyMUYyOTZFQzAwQzI4Qjk3IC8qIEZpbGVT
eXN0ZW0uY3BwICovOyB9OwogCQlBNTdBMzRGMjE2QUY2QjJCMDBDMjUwMUYgLyogUGFnZVZpc2li
aWxpdHlTdGF0ZVdpdGhXaW5kb3dDaGFuZ2VzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3QTM0RjExNkFGNjlFMjAwQzI1MDFGIC8q
IFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlcy5odG1sICovOyB9OwogCQlBNTdE
NTRGMzFGMzM4QzM2MDBBOTdBQTcgLyogTmV2ZXJEZXN0cm95ZWQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3RDU0RjIxRjMzOEMzNjAwQTk3QUE3
IC8qIE5ldmVyRGVzdHJveWVkLmNwcCAqLzsgfTsKIAkJQTU3RDU0RjYxRjMzOTVEMDAwQTk3QUE3
IC8qIExvZ2dlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBNTdENTRGNDFGMzM5NUQwMDBBOTdBQTcgLyogTG9nZ2VyLmNwcCAqLzsgfTsKQEAgLTE1
MjEsNyArMTUyMSw2IEBACiAJCTQxMzVGQjgzMjAxMUZBQTMwMDMzMjEzOSAvKiBJbmplY3RJbnRl
cm5hbHNfQnVuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IElu
amVjdEludGVybmFsc19CdW5kbGUuY3BwOyBwYXRoID0gVGVzdHMvSW5qZWN0SW50ZXJuYWxzX0J1
bmRsZS5jcHA7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJNDEzNUZCODYyMDExRkFC
RjAwMzMyMTM5IC8qIGxpYldlYkNvcmVUZXN0U3VwcG9ydC5keWxpYiAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5keWxpYiI7
IHBhdGggPSBsaWJXZWJDb3JlVGVzdFN1cHBvcnQuZHlsaWI7IHNvdXJjZVRyZWUgPSBCVUlMVF9Q
Uk9EVUNUU19ESVI7IH07CiAJCTQxODgyRjAyMjEwMTBBNzAwMDJGRjI4OCAvKiBQcm9jZXNzUHJl
V2FybWluZy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFByb2Nl
c3NQcmVXYXJtaW5nLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MTk3M0I1QTFB
RjIyODZBMDA2QzdCMzYgLyogRmlsZVN5c3RlbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBGaWxlU3lzdGVtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDE5NzNCNUMxQUYyMjg3NTAwNkM3QjM2IC8qIFNoYXJlZEJ1ZmZlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFyZWRCdWZmZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0NDJCQkY2ODFDOTFDQUQ5MDAxNzA4N0YgLyogUmVmTG9nZ2Vy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlZkxvZ2dlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0MzNBMzk1MjA4MDQ0MTMwMDkxRUQ1NyAv
KiBTeW5jaHJvbm91c1RpbWVvdXRUZXN0cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFN5bmNocm9ub3VzVGltZW91dFRlc3RzLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTkxOCw2ICsxOTE3LDcgQEAKIAkJQTFERjc0MzAxQzQxQjY1ODAwQTJG
NEQwIC8qIEFsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lcy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFFQzExODcxRjQyNTQxMjAwRDAxNDZFIC8qIFBy
ZXZpZXdMb2FkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJldmlld0xvYWRlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExRkRGRDJFMTlDMjg4QkIwMDUxNDhBNCAvKiBX
S0ltYWdlQ3JlYXRlQ0dJbWFnZUNyYXNoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdLSW1hZ2VDcmVhdGVDR0ltYWdlQ3Jhc2guY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlBMzEwODI3MTIxRjI5NkVDMDBDMjhCOTcgLyogRmlsZVN5c3RlbS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxlU3lzdGVtLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU3QTM0RUYxNkFGNjc3MjAwQzI1MDFGIC8qIFBh
Z2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdl
cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU3QTM0RjExNkFGNjlFMjAwQzI1
MDFGIC8qIFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlcy5odG1sICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dC5odG1sOyBwYXRoID0gUGFnZVZpc2liaWxpdHlTdGF0ZVdpdGhXaW5kb3dDaGFuZ2Vz
Lmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1N0Q1NEYyMUYzMzhDMzYwMEE5
N0FBNyAvKiBOZXZlckRlc3Ryb3llZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXZlckRlc3Ry
b3llZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNjc5LDcgKzI2NzksNiBA
QAogCQkJCTU3OTY1MUU2MjE2QkZENTMwMDZFQkZFNSAvKiBGaWRvSGlkTWVzc2FnZVRlc3QuY3Bw
ICovLAogCQkJCTU3MkI0MDM1MjE3NkEwMjkwMDBBRDQzRSAvKiBGaWRvVGVzdERhdGEuaCAqLywK
IAkJCQk3QTMyRDc0OTFGMDIxNTE1MDAxNjJDNDQgLyogRmlsZU1vbml0b3IuY3BwICovLAotCQkJ
CTQxOTczQjVBMUFGMjI4NkEwMDZDN0IzNiAvKiBGaWxlU3lzdGVtLmNwcCAqLywKIAkJCQk3QTkw
OUE3MDFEODc3NDc1MDA3RTEwRjggLyogRmxvYXRQb2ludC5jcHAgKi8sCiAJCQkJN0E5MDlBNzEx
RDg3NzQ3NTAwN0UxMEY4IC8qIEZsb2F0UmVjdC5jcHAgKi8sCiAJCQkJN0E5MDlBNzIxRDg3NzQ3
NTAwN0UxMEY4IC8qIEZsb2F0U2l6ZS5jcHAgKi8sCkBAIC0zMTkwLDYgKzMxODksNyBAQAogCQkJ
CUU0QTc1N0QzMTc4QUVBNUIwMEI1RDdBNCAvKiBEZXF1ZS5jcHAgKi8sCiAJCQkJMUFGN0IyMUQx
RDZDRDEyRTAwOEMxMjZDIC8qIEVudW1UcmFpdHMuY3BwICovLAogCQkJCUFEN0M0MzRDMUREMkE1
NDcwMDI2ODg4QiAvKiBFeHBlY3RlZC5jcHAgKi8sCisJCQkJQTMxMDgyNzEyMUYyOTZFQzAwQzI4
Qjk3IC8qIEZpbGVTeXN0ZW0uY3BwICovLAogCQkJCTkzMTBDRDM2MUVGNzA4RkIwMDUwRkZFMCAv
KiBGdW5jdGlvbi5jcHAgKi8sCiAJCQkJODNEQjc5NjcxRUY2M0IzQzAwQkZBNUU1IC8qIEZ1bmN0
aW9uLmNwcCAqLywKIAkJCQk3QTM4RDdFNTFDNzUyRDVGMDA0RjE1N0QgLyogSGFzaENvdW50ZWRT
ZXQuY3BwICovLApAQCAtMzc5OCw2ICszNzk4LDcgQEAKIAkJCQk3QzgzREVBRDFEMEE1OTBDMDBG
RUJDRjMgLyogRGVxdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFGN0IyMUYxRDZDRDE0RDAw
OEMxMjZDIC8qIEVudW1UcmFpdHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQUQ3QzQzNEQxREQy
QTU0RTAwMjY4ODhCIC8qIEV4cGVjdGVkLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUEzMTA4Mjcy
MjFGMjk2RkYwMEMyOEI5NyAvKiBGaWxlU3lzdGVtLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkz
MTBDRDM4MUVGNzA4RkIwMDUwRkZFMCAvKiBGdW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk2QkZEMjk0QzFENUU2QzFEMDA4RUM5NjggLyogSGFzaENvdW50ZWRTZXQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJOTMzRDYzMUQxRkNCNzYyMDAwMzJFQ0Q2IC8qIEhhc2hlci5jcHAgaW4gU291
cmNlcyAqLywKQEAgLTQwMDEsNyArNDAwMiw2IEBACiAJCQkJN0NDRTdFRjExQTQxMUFFNjAwNDQ3
QzRDIC8qIEZhaWxlZExvYWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTc5NjUxRTcyMTZCRkRF
RDAwNkVCRkU1IC8qIEZpZG9IaWRNZXNzYWdlVGVzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3
QTMyRDc0QTFGMDIxNTE1MDAxNjJDNDQgLyogRmlsZU1vbml0b3IuY3BwIGluIFNvdXJjZXMgKi8s
Ci0JCQkJN0M4M0UwNEYxRDBBNjQxODAwRkVCQ0YzIC8qIEZpbGVTeXN0ZW0uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJN0NDRTdFRjMxQTQxMUFFNjAwNDQ3QzRDIC8qIEZpbmQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJN0M4M0UwQkIxRDBBNjUwMDAwRkVCQ0YzIC8qIEZpbmRJblBhZ2UubW0gaW4g
U291cmNlcyAqLywKIAkJCQk3Q0NFN0VGNDFBNDExQUU2MDA0NDdDNEMgLyogRmluZE1hdGNoZXMu
bW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL0ZpbGVTeXN0ZW0uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5
c3RlbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZDU3ZGY2MTQyOTdmMGEyMzcyMzk1Yzc2YmY0YzU5MTVhNTc1
NzVmYQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Zp
bGVTeXN0ZW0uY3BwCkBAIC0wLDAgKzEsMTQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1
IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2luY2x1ZGUgIlRlc3QuaCIKKyNpbmNsdWRlIDx3dGYvRmlsZU1ldGFkYXRhLmg+
CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5o
PgorI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRB
UEkgeworCitjb25zdCBjaGFyKiBGaWxlU3lzdGVtVGVzdERhdGEgPSAiVGhpcyBpcyBhIHRlc3Qi
OworCisvLyBGSVhNRTogUmVmYWN0b3IgRmlsZVN5c3RlbVRlc3QgYW5kIFNoYXJlZEJ1ZmZlclRl
c3QgYXMgYSBzaW5nbGUgY2xhc3MuCitjbGFzcyBGaWxlU3lzdGVtVGVzdCA6IHB1YmxpYyB0ZXN0
aW5nOjpUZXN0IHsKK3B1YmxpYzoKKyAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKKyAgICB7Cisg
ICAgICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKKworICAgICAgICAvLyBjcmVhdGUg
dGVtcCBmaWxlCisgICAgICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGU7
CisgICAgICAgIG1fdGVtcEZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUo
InRlbXBUZXN0RmlsZSIsIGhhbmRsZSk7CisgICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxl
KGhhbmRsZSwgRmlsZVN5c3RlbVRlc3REYXRhLCBzdHJsZW4oRmlsZVN5c3RlbVRlc3REYXRhKSk7
CisgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUpOworCisgICAgICAgIG1fdGVt
cEZpbGVTeW1saW5rUGF0aCA9IG1fdGVtcEZpbGVQYXRoICsgIi1zeW1saW5rIjsKKyAgICAgICAg
RmlsZVN5c3RlbTo6Y3JlYXRlU3ltYm9saWNMaW5rKG1fdGVtcEZpbGVQYXRoLCBtX3RlbXBGaWxl
U3ltbGlua1BhdGgpOworCisgICAgICAgIG1fdGVtcEVtcHR5RmlsZVBhdGggPSBGaWxlU3lzdGVt
OjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcEVtcHR5VGVzdEZpbGUiLCBoYW5kbGUpOworICAgICAg
ICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKKworICAgICAgICBtX3NwYWNlQ29udGFp
bmluZ0ZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoInRlbXAgRW1wdHkg
VGVzdCBGaWxlIiwgaGFuZGxlKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRs
ZSk7CisKKyAgICAgICAgbV9iYW5nQ29udGFpbmluZ0ZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3Bl
blRlbXBvcmFyeUZpbGUoInRlbXAhRW1wdHkhVGVzdCFGaWxlIiwgaGFuZGxlKTsKKyAgICAgICAg
RmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CisKKyAgICAgICAgbV9xdW90ZUNvbnRhaW5p
bmdGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wXCJFbXB0eVwi
VGVzdEZpbGUiLCBoYW5kbGUpOworICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxl
KTsKKyAgICB9CisKKyAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAg
IEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV90ZW1wRmlsZVBhdGgpOworICAgICAgICBGaWxlU3lz
dGVtOjpkZWxldGVGaWxlKG1fdGVtcEZpbGVTeW1saW5rUGF0aCk7CisgICAgICAgIEZpbGVTeXN0
ZW06OmRlbGV0ZUZpbGUobV90ZW1wRW1wdHlGaWxlUGF0aCk7CisgICAgICAgIEZpbGVTeXN0ZW06
OmRlbGV0ZUZpbGUobV9zcGFjZUNvbnRhaW5pbmdGaWxlUGF0aCk7CisgICAgICAgIEZpbGVTeXN0
ZW06OmRlbGV0ZUZpbGUobV9iYW5nQ29udGFpbmluZ0ZpbGVQYXRoKTsKKyAgICAgICAgRmlsZVN5
c3RlbTo6ZGVsZXRlRmlsZShtX3F1b3RlQ29udGFpbmluZ0ZpbGVQYXRoKTsKKyAgICB9CisKKyAg
ICBjb25zdCBTdHJpbmcmIHRlbXBGaWxlUGF0aCgpIHsgcmV0dXJuIG1fdGVtcEZpbGVQYXRoOyB9
CisgICAgY29uc3QgU3RyaW5nJiB0ZW1wRmlsZVN5bWxpbmtQYXRoKCkgeyByZXR1cm4gbV90ZW1w
RmlsZVN5bWxpbmtQYXRoOyB9CisgICAgY29uc3QgU3RyaW5nJiB0ZW1wRW1wdHlGaWxlUGF0aCgp
IHsgcmV0dXJuIG1fdGVtcEVtcHR5RmlsZVBhdGg7IH0KKyAgICBjb25zdCBTdHJpbmcmIHNwYWNl
Q29udGFpbmluZ0ZpbGVQYXRoKCkgeyByZXR1cm4gbV9zcGFjZUNvbnRhaW5pbmdGaWxlUGF0aDsg
fQorICAgIGNvbnN0IFN0cmluZyYgYmFuZ0NvbnRhaW5pbmdGaWxlUGF0aCgpIHsgcmV0dXJuIG1f
YmFuZ0NvbnRhaW5pbmdGaWxlUGF0aDsgfQorICAgIGNvbnN0IFN0cmluZyYgcXVvdGVDb250YWlu
aW5nRmlsZVBhdGgoKSB7IHJldHVybiBtX3F1b3RlQ29udGFpbmluZ0ZpbGVQYXRoOyB9CisKK3By
aXZhdGU6CisgICAgU3RyaW5nIG1fdGVtcEZpbGVQYXRoOworICAgIFN0cmluZyBtX3RlbXBGaWxl
U3ltbGlua1BhdGg7CisgICAgU3RyaW5nIG1fdGVtcEVtcHR5RmlsZVBhdGg7CisgICAgU3RyaW5n
IG1fc3BhY2VDb250YWluaW5nRmlsZVBhdGg7CisgICAgU3RyaW5nIG1fYmFuZ0NvbnRhaW5pbmdG
aWxlUGF0aDsKKyAgICBTdHJpbmcgbV9xdW90ZUNvbnRhaW5pbmdGaWxlUGF0aDsKK307CisKK1RF
U1RfRihGaWxlU3lzdGVtVGVzdCwgTWFwcGluZ01pc3NpbmdGaWxlKQoreworICAgIGJvb2wgc3Vj
Y2VzczsKKyAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YShTdHJp
bmcoIm5vdF9leGlzdGluZ19maWxlIiksIHN1Y2Nlc3MpOworICAgIEVYUEVDVF9GQUxTRShzdWNj
ZXNzKTsKKyAgICBFWFBFQ1RfVFJVRSghbWFwcGVkRmlsZURhdGEpOworfQorCitURVNUX0YoRmls
ZVN5c3RlbVRlc3QsIE1hcHBpbmdFeGlzdGluZ0ZpbGUpCit7CisgICAgYm9vbCBzdWNjZXNzOwor
ICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKHRlbXBGaWxlUGF0
aCgpLCBzdWNjZXNzKTsKKyAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKKyAgICBFWFBFQ1RfVFJV
RSghIW1hcHBlZEZpbGVEYXRhKTsKKyAgICBFWFBFQ1RfVFJVRShtYXBwZWRGaWxlRGF0YS5zaXpl
KCkgPT0gc3RybGVuKEZpbGVTeXN0ZW1UZXN0RGF0YSkpOworICAgIEVYUEVDVF9UUlVFKHN0cm5z
dHIoRmlsZVN5c3RlbVRlc3REYXRhLCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obWFwcGVkRmls
ZURhdGEuZGF0YSgpKSwgbWFwcGVkRmlsZURhdGEuc2l6ZSgpKSk7Cit9CisKK1RFU1RfRihGaWxl
U3lzdGVtVGVzdCwgTWFwcGluZ0V4aXN0aW5nRW1wdHlGaWxlKQoreworICAgIGJvb2wgc3VjY2Vz
czsKKyAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YSh0ZW1wRW1w
dHlGaWxlUGF0aCgpLCBzdWNjZXNzKTsKKyAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKKyAgICBF
WFBFQ1RfVFJVRSghbWFwcGVkRmlsZURhdGEpOworfQorCitURVNUX0YoRmlsZVN5c3RlbVRlc3Qs
IEZpbGVzSGF2ZVNhbWVWb2x1bWUpCit7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6Zmls
ZXNIYXZlU2FtZVZvbHVtZSh0ZW1wRmlsZVBhdGgoKSwgc3BhY2VDb250YWluaW5nRmlsZVBhdGgo
KSkpOworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVzSGF2ZVNhbWVWb2x1bWUoc3Bh
Y2VDb250YWluaW5nRmlsZVBhdGgoKSwgYmFuZ0NvbnRhaW5pbmdGaWxlUGF0aCgpKSk7CisgICAg
RVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZXNIYXZlU2FtZVZvbHVtZShiYW5nQ29udGFpbmlu
Z0ZpbGVQYXRoKCksIHF1b3RlQ29udGFpbmluZ0ZpbGVQYXRoKCkpKTsKK30KKworVEVTVF9GKEZp
bGVTeXN0ZW1UZXN0LCBHZXRGaWxlTWV0YWRhdGFTeW1saW5rKQoreworICAgIGF1dG8gc3ltbGlu
a01ldGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhKHRlbXBGaWxlU3ltbGlua1BhdGgo
KSk7CisgICAgQVNTRVJUX1RSVUUoc3ltbGlua01ldGFkYXRhLmhhc1ZhbHVlKCkpOworICAgIEVY
UEVDVF9UUlVFKHN5bWxpbmtNZXRhZGF0YS52YWx1ZSgpLnR5cGUgPT0gRmlsZU1ldGFkYXRhOjpU
eXBlOjpTeW1ib2xpY0xpbmspOworICAgIEVYUEVDVF9GQUxTRShzdGF0aWNfY2FzdDxzaXplX3Q+
KHN5bWxpbmtNZXRhZGF0YS52YWx1ZSgpLmxlbmd0aCkgPT0gc3RybGVuKEZpbGVTeXN0ZW1UZXN0
RGF0YSkpOworCisgICAgYXV0byB0YXJnZXRNZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRh
ZGF0YUZvbGxvd2luZ1N5bWxpbmtzKHRlbXBGaWxlU3ltbGlua1BhdGgoKSk7CisgICAgQVNTRVJU
X1RSVUUodGFyZ2V0TWV0YWRhdGEuaGFzVmFsdWUoKSk7CisgICAgRVhQRUNUX1RSVUUodGFyZ2V0
TWV0YWRhdGEudmFsdWUoKS50eXBlID09IEZpbGVNZXRhZGF0YTo6VHlwZTo6RmlsZSk7CisgICAg
RVhQRUNUX0VRKHN0cmxlbihGaWxlU3lzdGVtVGVzdERhdGEpLCBzdGF0aWNfY2FzdDxzaXplX3Q+
KHRhcmdldE1ldGFkYXRhLnZhbHVlKCkubGVuZ3RoKSk7Cit9CisKK1RFU1RfRihGaWxlU3lzdGVt
VGVzdCwgVW5pY29kZURpcmVjdG9yeU5hbWUpCit7CisgICAgU3RyaW5nIHBhdGggPSBTdHJpbmc6
OmZyb21VVEY4KCIvdGVzdC9hXHUwMzA4bG8vdGVzdC50eHQiKTsKKyAgICBTdHJpbmcgZGlyZWN0
b3J5TmFtZSA9IEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUocGF0aCk7CisgICAgU3RyaW5nIGV4
cGVjdGVkRGlyZWN0b3J5TmFtZSA9IFN0cmluZzo6ZnJvbVVURjgoIi90ZXN0L2FcdTAzMDhsbyIp
OworICAgIEVYUEVDVF9UUlVFKGV4cGVjdGVkRGlyZWN0b3J5TmFtZSA9PSBkaXJlY3RvcnlOYW1l
KTsKK30KKworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L0ZpbGVNb25pdG9yLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxl
TW9uaXRvci5jcHAKaW5kZXggNWYxZGM4YjJlNGQ1MjRkMzUyNjgwNGJkNmNkOWNlOThhMzcxMWZl
OC4uZTAwMmRmMWVmMDk0ZjViM2YwMGQxNmU5YzZiZTZkNDlkNWU2YWYyNCAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNwcAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZU1vbml0b3IuY3BwCkBAIC0yOSw3
ICsyOSw3IEBACiAjaW5jbHVkZSAiVGVzdC5oIgogI2luY2x1ZGUgIldURlN0cmluZ1V0aWxpdGll
cy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZU1vbml0b3IuaD4KLSNpbmNsdWRlIDxXZWJDb3Jl
L0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0
Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYv
U2NvcGUuaD4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9G
aWxlU3lzdGVtLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlU3lz
dGVtLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzY2MjUwMjUzMDk3MjdlYTYw
NWNiNTJjZmM5ZWNkNGIzM2U3Nzg3NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZVN5c3Rl
bS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRlICJUZXN0LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxl
TWV0YWRhdGEuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KLSNpbmNsdWRlIDx3
dGYvTWFpblRocmVhZC5oPgotI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMuaD4KLQotdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKLQotY29uc3Qg
Y2hhciogRmlsZVN5c3RlbVRlc3REYXRhID0gIlRoaXMgaXMgYSB0ZXN0IjsKLQotLy8gRklYTUU6
IFJlZmFjdG9yIEZpbGVTeXN0ZW1UZXN0IGFuZCBTaGFyZWRCdWZmZXJUZXN0IGFzIGEgc2luZ2xl
IGNsYXNzLgotY2xhc3MgRmlsZVN5c3RlbVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci1w
dWJsaWM6Ci0gICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBXVEY6Omlu
aXRpYWxpemVNYWluVGhyZWFkKCk7Ci0gICAgICAgIAotICAgICAgICAvLyBjcmVhdGUgdGVtcCBm
aWxlCi0gICAgICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGU7Ci0gICAg
ICAgIG1fdGVtcEZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoInRlbXBU
ZXN0RmlsZSIsIGhhbmRsZSk7Ci0gICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhhbmRs
ZSwgRmlsZVN5c3RlbVRlc3REYXRhLCBzdHJsZW4oRmlsZVN5c3RlbVRlc3REYXRhKSk7Ci0gICAg
ICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUpOwotCi0gICAgICAgIG1fdGVtcEZpbGVT
eW1saW5rUGF0aCA9IG1fdGVtcEZpbGVQYXRoICsgIi1zeW1saW5rIjsKLSAgICAgICAgRmlsZVN5
c3RlbTo6Y3JlYXRlU3ltYm9saWNMaW5rKG1fdGVtcEZpbGVQYXRoLCBtX3RlbXBGaWxlU3ltbGlu
a1BhdGgpOwotCi0gICAgICAgIG1fdGVtcEVtcHR5RmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVu
VGVtcG9yYXJ5RmlsZSgidGVtcEVtcHR5VGVzdEZpbGUiLCBoYW5kbGUpOwotICAgICAgICBGaWxl
U3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKLQotICAgICAgICBtX3NwYWNlQ29udGFpbmluZ0Zp
bGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoInRlbXAgRW1wdHkgVGVzdCBG
aWxlIiwgaGFuZGxlKTsKLSAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7Ci0K
LSAgICAgICAgbV9iYW5nQ29udGFpbmluZ0ZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBv
cmFyeUZpbGUoInRlbXAhRW1wdHkhVGVzdCFGaWxlIiwgaGFuZGxlKTsKLSAgICAgICAgRmlsZVN5
c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7Ci0KLSAgICAgICAgbV9xdW90ZUNvbnRhaW5pbmdGaWxl
UGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wXCJFbXB0eVwiVGVzdEZp
bGUiLCBoYW5kbGUpOwotICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKLSAg
ICB9Ci0KLSAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIEZpbGVT
eXN0ZW06OmRlbGV0ZUZpbGUobV90ZW1wRmlsZVBhdGgpOwotICAgICAgICBGaWxlU3lzdGVtOjpk
ZWxldGVGaWxlKG1fdGVtcEZpbGVTeW1saW5rUGF0aCk7Ci0gICAgICAgIEZpbGVTeXN0ZW06OmRl
bGV0ZUZpbGUobV90ZW1wRW1wdHlGaWxlUGF0aCk7Ci0gICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0
ZUZpbGUobV9zcGFjZUNvbnRhaW5pbmdGaWxlUGF0aCk7Ci0gICAgICAgIEZpbGVTeXN0ZW06OmRl
bGV0ZUZpbGUobV9iYW5nQ29udGFpbmluZ0ZpbGVQYXRoKTsKLSAgICAgICAgRmlsZVN5c3RlbTo6
ZGVsZXRlRmlsZShtX3F1b3RlQ29udGFpbmluZ0ZpbGVQYXRoKTsKLSAgICB9Ci0KLSAgICBjb25z
dCBTdHJpbmcmIHRlbXBGaWxlUGF0aCgpIHsgcmV0dXJuIG1fdGVtcEZpbGVQYXRoOyB9Ci0gICAg
Y29uc3QgU3RyaW5nJiB0ZW1wRmlsZVN5bWxpbmtQYXRoKCkgeyByZXR1cm4gbV90ZW1wRmlsZVN5
bWxpbmtQYXRoOyB9Ci0gICAgY29uc3QgU3RyaW5nJiB0ZW1wRW1wdHlGaWxlUGF0aCgpIHsgcmV0
dXJuIG1fdGVtcEVtcHR5RmlsZVBhdGg7IH0KLSAgICBjb25zdCBTdHJpbmcmIHNwYWNlQ29udGFp
bmluZ0ZpbGVQYXRoKCkgeyByZXR1cm4gbV9zcGFjZUNvbnRhaW5pbmdGaWxlUGF0aDsgfQotICAg
IGNvbnN0IFN0cmluZyYgYmFuZ0NvbnRhaW5pbmdGaWxlUGF0aCgpIHsgcmV0dXJuIG1fYmFuZ0Nv
bnRhaW5pbmdGaWxlUGF0aDsgfQotICAgIGNvbnN0IFN0cmluZyYgcXVvdGVDb250YWluaW5nRmls
ZVBhdGgoKSB7IHJldHVybiBtX3F1b3RlQ29udGFpbmluZ0ZpbGVQYXRoOyB9Ci0KLXByaXZhdGU6
Ci0gICAgU3RyaW5nIG1fdGVtcEZpbGVQYXRoOwotICAgIFN0cmluZyBtX3RlbXBGaWxlU3ltbGlu
a1BhdGg7Ci0gICAgU3RyaW5nIG1fdGVtcEVtcHR5RmlsZVBhdGg7Ci0gICAgU3RyaW5nIG1fc3Bh
Y2VDb250YWluaW5nRmlsZVBhdGg7Ci0gICAgU3RyaW5nIG1fYmFuZ0NvbnRhaW5pbmdGaWxlUGF0
aDsKLSAgICBTdHJpbmcgbV9xdW90ZUNvbnRhaW5pbmdGaWxlUGF0aDsKLX07Ci0KLVRFU1RfRihG
aWxlU3lzdGVtVGVzdCwgTWFwcGluZ01pc3NpbmdGaWxlKQotewotICAgIGJvb2wgc3VjY2VzczsK
LSAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YShTdHJpbmcoIm5v
dF9leGlzdGluZ19maWxlIiksIHN1Y2Nlc3MpOwotICAgIEVYUEVDVF9GQUxTRShzdWNjZXNzKTsK
LSAgICBFWFBFQ1RfVFJVRSghbWFwcGVkRmlsZURhdGEpOwotfQotCi1URVNUX0YoRmlsZVN5c3Rl
bVRlc3QsIE1hcHBpbmdFeGlzdGluZ0ZpbGUpCi17Ci0gICAgYm9vbCBzdWNjZXNzOwotICAgIEZp
bGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKHRlbXBGaWxlUGF0aCgpLCBz
dWNjZXNzKTsKLSAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKLSAgICBFWFBFQ1RfVFJVRSghIW1h
cHBlZEZpbGVEYXRhKTsKLSAgICBFWFBFQ1RfVFJVRShtYXBwZWRGaWxlRGF0YS5zaXplKCkgPT0g
c3RybGVuKEZpbGVTeXN0ZW1UZXN0RGF0YSkpOwotICAgIEVYUEVDVF9UUlVFKHN0cm5zdHIoRmls
ZVN5c3RlbVRlc3REYXRhLCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obWFwcGVkRmlsZURhdGEu
ZGF0YSgpKSwgbWFwcGVkRmlsZURhdGEuc2l6ZSgpKSk7Ci19Ci0KLVRFU1RfRihGaWxlU3lzdGVt
VGVzdCwgTWFwcGluZ0V4aXN0aW5nRW1wdHlGaWxlKQotewotICAgIGJvb2wgc3VjY2VzczsKLSAg
ICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YSh0ZW1wRW1wdHlGaWxl
UGF0aCgpLCBzdWNjZXNzKTsKLSAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKLSAgICBFWFBFQ1Rf
VFJVRSghbWFwcGVkRmlsZURhdGEpOwotfQotCi1URVNUX0YoRmlsZVN5c3RlbVRlc3QsIEZpbGVz
SGF2ZVNhbWVWb2x1bWUpCi17Ci0gICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZXNIYXZl
U2FtZVZvbHVtZSh0ZW1wRmlsZVBhdGgoKSwgc3BhY2VDb250YWluaW5nRmlsZVBhdGgoKSkpOwot
ICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVzSGF2ZVNhbWVWb2x1bWUoc3BhY2VDb250
YWluaW5nRmlsZVBhdGgoKSwgYmFuZ0NvbnRhaW5pbmdGaWxlUGF0aCgpKSk7Ci0gICAgRVhQRUNU
X1RSVUUoRmlsZVN5c3RlbTo6ZmlsZXNIYXZlU2FtZVZvbHVtZShiYW5nQ29udGFpbmluZ0ZpbGVQ
YXRoKCksIHF1b3RlQ29udGFpbmluZ0ZpbGVQYXRoKCkpKTsKLX0KLQotVEVTVF9GKEZpbGVTeXN0
ZW1UZXN0LCBHZXRGaWxlTWV0YWRhdGFTeW1saW5rKQotewotICAgIGF1dG8gc3ltbGlua01ldGFk
YXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhKHRlbXBGaWxlU3ltbGlua1BhdGgoKSk7Ci0g
ICAgQVNTRVJUX1RSVUUoc3ltbGlua01ldGFkYXRhLmhhc1ZhbHVlKCkpOwotICAgIEVYUEVDVF9U
UlVFKHN5bWxpbmtNZXRhZGF0YS52YWx1ZSgpLnR5cGUgPT0gRmlsZU1ldGFkYXRhOjpUeXBlOjpT
eW1ib2xpY0xpbmspOwotICAgIEVYUEVDVF9GQUxTRShzdGF0aWNfY2FzdDxzaXplX3Q+KHN5bWxp
bmtNZXRhZGF0YS52YWx1ZSgpLmxlbmd0aCkgPT0gc3RybGVuKEZpbGVTeXN0ZW1UZXN0RGF0YSkp
OwotCi0gICAgYXV0byB0YXJnZXRNZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0YUZv
bGxvd2luZ1N5bWxpbmtzKHRlbXBGaWxlU3ltbGlua1BhdGgoKSk7Ci0gICAgQVNTRVJUX1RSVUUo
dGFyZ2V0TWV0YWRhdGEuaGFzVmFsdWUoKSk7Ci0gICAgRVhQRUNUX1RSVUUodGFyZ2V0TWV0YWRh
dGEudmFsdWUoKS50eXBlID09IEZpbGVNZXRhZGF0YTo6VHlwZTo6RmlsZSk7Ci0gICAgRVhQRUNU
X0VRKHN0cmxlbihGaWxlU3lzdGVtVGVzdERhdGEpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KHRhcmdl
dE1ldGFkYXRhLnZhbHVlKCkubGVuZ3RoKSk7Ci19Ci0KLVRFU1RfRihGaWxlU3lzdGVtVGVzdCwg
VW5pY29kZURpcmVjdG9yeU5hbWUpCi17Ci0gICAgU3RyaW5nIHBhdGggPSBTdHJpbmc6OmZyb21V
VEY4KCIvdGVzdC9hXHUwMzA4bG8vdGVzdC50eHQiKTsKLSAgICBTdHJpbmcgZGlyZWN0b3J5TmFt
ZSA9IEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUocGF0aCk7Ci0gICAgU3RyaW5nIGV4cGVjdGVk
RGlyZWN0b3J5TmFtZSA9IFN0cmluZzo6ZnJvbVVURjgoIi90ZXN0L2FcdTAzMDhsbyIpOwotICAg
IEVYUEVDVF9UUlVFKGV4cGVjdGVkRGlyZWN0b3J5TmFtZSA9PSBkaXJlY3RvcnlOYW1lKTsKLX0K
LQotfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NlY3Vy
aXR5T3JpZ2luLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TZWN1cml0
eU9yaWdpbi5jcHAKaW5kZXggZGE1ZjRmZjU4OThhOWYwOWM4YjgzOTVhNTVkZTczOGYxNjhjOTA5
Zi4uYTQxYWI0YmNhMzcxZDQ1ZGU4Y2I0NTg2ODViYzk3NGUzMGY0MDZmMyAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmNwcAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2VjdXJpdHlPcmlnaW4uY3BwCkBA
IC0yNiw4ICsyNiw4IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXVEZTdHJp
bmdVdGlsaXRpZXMuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4K
ICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIApkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRl
c3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRl
c3QuY3BwCmluZGV4IDhmZTM1NjdjMWUxMTM2OTFkODViN2M1NWExZjk2NjU5ZGU5ZDFmMjQuLjli
OGIxM2E3NWQ1MmZmOTUxZWFkMTgxODVkNTZjMzc5MWIyZDdiZWQgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmNwcAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5jcHAKQEAg
LTI2LDExICsyNiw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVm
ZmVyVGVzdC5oIgogCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8
d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCi11c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKLQogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiB2b2lkIFNo
YXJlZEJ1ZmZlclRlc3Q6OlNldFVwKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9jb2NvYS9EYXRhYmFzZVRyYWNrZXJUZXN0Lm1tIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL0RhdGFiYXNlVHJhY2tlclRlc3QubW0KaW5kZXgg
NmEzYzcwMjgwYTRlZGUwMDkxMDJlZTk5NzZiMzY3YzI2YWI3ZmVlNy4uMjIxNzE1NmY2ZTU2OTE1
YTc1ZDQ0ODg0ZWFkNTE3MTlhN2M1MjkxMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL2NvY29hL0RhdGFiYXNlVHJhY2tlclRlc3QubW0KKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL0RhdGFiYXNlVHJhY2tlclRlc3QubW0K
QEAgLTI2LDExICsyNiwxMSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaW5jbHVkZSA8V2Vi
Q29yZS9EYXRhYmFzZVRyYWNrZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL09yaWdpbkxvY2suaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0
ZURhdGFiYXNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVTdGF0ZW1lbnQuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lz
dGVtLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY3VybC9Db29raWVzLmNwcCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jdXJsL0Nvb2tpZXMuY3BwCmluZGV4IDFiOGQ3ZmMzY2Rl
NTAyOTllMzBhZDZjNmQ4Y2ExNjI3ZjIzOTBjMWYuLmI0MGIwZDVhMGE1ZTVmYjVmNDkxOWEzZGEy
YzJmZWQ2ZmNiYzFjNGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9jdXJsL0Nvb2tpZXMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9jdXJsL0Nvb2tpZXMuY3BwCkBAIC0yOSw4ICsyOSw4IEBACiAKICNpbmNsdWRlIDxXZWJD
b3JlL0Nvb2tpZUphckRCLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db29raWVVdGlsLmg+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUg
PHd0Zi9GaWxlU3lzdGVtLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbQppbmRleCA2
MGNjOTNiMzQwZGQ2ODA5NDFjNDFhMmE1YWEwYmE5MjNiNWFlYzY0Li42ODFiMDJjYTljODdkYWVj
MzcyNjIyNDYxN2QxYzU5MjA4OGQ3YTZjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0KQEAgLTMzLDcgKzMzLDYgQEAKICNpbXBvcnQg
IlRlc3QuaCIKICNpbXBvcnQgIlRlc3RQcm90b2NvbC5oIgogI2ltcG9ydCAiVGVzdFdLV2ViVmll
dy5oIgotI2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dL
RG93bmxvYWQuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tEb3dubG9hZERlbGVnYXRlLmg+CiAjaW1w
b3J0IDxXZWJLaXQvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlLmg+CkBAIC00MSw2ICs0MCw3
IEBACiAjaW1wb3J0IDxXZWJLaXQvV0tVSURlbGVnYXRlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2Vi
S2l0L1dLV2ViVmlldy5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb24u
aD4KKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5o
PgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CkBAIC05NCwxMCArOTQsMTAgQEAgSUdOT1JFX1dBUk5JTkdTX0VORAogICAgIEVYUEVDVF9U
UlVFKGhhc1JlY2VpdmVkUmVzcG9uc2UpOwogICAgIEVYUEVDVF9FUShfZG93bmxvYWQsIGRvd25s
b2FkKTsKIAotICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmaWxl
SGFuZGxlOwotICAgIF9kZXN0aW5hdGlvblBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpvcGVu
VGVtcG9yYXJ5RmlsZSgiVGVzdFdlYktpdEFQSSIsIGZpbGVIYW5kbGUpOwotICAgIEVYUEVDVF9U
UlVFKGZpbGVIYW5kbGUgIT0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmls
ZUhhbmRsZSk7Ci0gICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUp
OworICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlSGFuZGxlOworICAgIF9k
ZXN0aW5hdGlvblBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiVGVzdFdlYktp
dEFQSSIsIGZpbGVIYW5kbGUpOworICAgIEVYUEVDVF9UUlVFKGZpbGVIYW5kbGUgIT0gRmlsZVN5
c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VG
aWxlKGZpbGVIYW5kbGUpOwogCiAgICAgKmFsbG93T3ZlcndyaXRlID0gWUVTOwogICAgIHJldHVy
biBfZGVzdGluYXRpb25QYXRoOwpAQCAtMTA5LDcgKzEwOSw3IEBAIC0gKHZvaWQpX2Rvd25sb2Fk
RGlkRmluaXNoOihfV0tEb3dubG9hZCAqKWRvd25sb2FkCiAgICAgRVhQRUNUX0VRKGV4cGVjdGVk
VXNlckluaXRpYXRlZFN0YXRlLCBkb3dubG9hZC53YXNVc2VySW5pdGlhdGVkKTsKICAgICBFWFBF
Q1RfVFJVRShfZXhwZWN0ZWRDb250ZW50TGVuZ3RoID09IE5TVVJMUmVzcG9uc2VVbmtub3duTGVu
Z3RoIHx8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihfZXhwZWN0ZWRDb250ZW50TGVuZ3RoKSA9PSBf
cmVjZWl2ZWRDb250ZW50TGVuZ3RoKTsKICAgICBFWFBFQ1RfVFJVRShbW05TRmlsZU1hbmFnZXIg
ZGVmYXVsdE1hbmFnZXJdIGNvbnRlbnRzRXF1YWxBdFBhdGg6X2Rlc3RpbmF0aW9uUGF0aCBhbmRQ
YXRoOltzb3VyY2VVUkwgcGF0aF1dKTsKLSAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVG
aWxlKF9kZXN0aW5hdGlvblBhdGgpOworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoX2Rlc3Rp
bmF0aW9uUGF0aCk7CiAgICAgaXNEb25lID0gdHJ1ZTsKIH0KIApAQCAtMzk3LDEwICszOTcsMTAg
QEAgSUdOT1JFX1dBUk5JTkdTX0VORAogICAgIEVYUEVDVF9UUlVFKGhhc1JlY2VpdmVkUmVzcG9u
c2UpOwogICAgIEVYUEVDVF9FUShfZG93bmxvYWQsIGRvd25sb2FkKTsKIAotICAgIFdlYkNvcmU6
OkZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlSGFuZGxlOwotICAgIF9kZXN0aW5h
dGlvblBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiVGVzdFdl
YktpdEFQSSIsIGZpbGVIYW5kbGUpOwotICAgIEVYUEVDVF9UUlVFKGZpbGVIYW5kbGUgIT0gV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7Ci0gICAgV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOworICAgIEZpbGVTeXN0ZW06OlBs
YXRmb3JtRmlsZUhhbmRsZSBmaWxlSGFuZGxlOworICAgIF9kZXN0aW5hdGlvblBhdGggPSBGaWxl
U3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiVGVzdFdlYktpdEFQSSIsIGZpbGVIYW5kbGUpOwor
ICAgIEVYUEVDVF9UUlVFKGZpbGVIYW5kbGUgIT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3Jt
RmlsZUhhbmRsZSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOwogCiAg
ICAgKmFsbG93T3ZlcndyaXRlID0gWUVTOwogICAgIHJldHVybiBfZGVzdGluYXRpb25QYXRoOwpA
QCAtNDE0LDcgKzQxNCw3IEBAIC0gKHZvaWQpX2Rvd25sb2FkRGlkRmluaXNoOihfV0tEb3dubG9h
ZCAqKWRvd25sb2FkCiAgICAgTlNTdHJpbmcqIGV4cGVjdGVkQ29udGVudCA9IEAie1wieFwiOjQy
LFwic1wiOlwiaGVsbG8sIHdvcmxkXCJ9IjsKICAgICBOU0RhdGEqIGV4cGVjdGVkRGF0YSA9IFtl
eHBlY3RlZENvbnRlbnQgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOwog
ICAgIEVYUEVDVF9UUlVFKFtbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNvbnRlbnRz
QXRQYXRoOl9kZXN0aW5hdGlvblBhdGhdIGlzRXF1YWxUb0RhdGE6ZXhwZWN0ZWREYXRhXSk7Ci0g
ICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShfZGVzdGluYXRpb25QYXRoKTsKKyAg
ICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKF9kZXN0aW5hdGlvblBhdGgpOwogICAgIGlzRG9uZSA9
IHRydWU7CiB9CiAKQEAgLTQ1NywxMCArNDU3LDEwIEBAIElHTk9SRV9XQVJOSU5HU19CRUdJTigi
ZGVwcmVjYXRlZC1pbXBsZW1lbnRhdGlvbnMiKQogLSAoTlNTdHJpbmcgKilfZG93bmxvYWQ6KF9X
S0Rvd25sb2FkICopZG93bmxvYWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5h
bWU6KE5TU3RyaW5nICopZmlsZW5hbWUgYWxsb3dPdmVyd3JpdGU6KEJPT0wgKilhbGxvd092ZXJ3
cml0ZQogSUdOT1JFX1dBUk5JTkdTX0VORAogewotICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OlBs
YXRmb3JtRmlsZUhhbmRsZSBmaWxlSGFuZGxlOwotICAgIF9kZXN0aW5hdGlvblBhdGggPSBXZWJD
b3JlOjpGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiVGVzdFdlYktpdEFQSSIsIGZpbGVI
YW5kbGUpOwotICAgIEVYUEVDVF9UUlVFKGZpbGVIYW5kbGUgIT0gV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7Ci0gICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6
Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOworICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRs
ZSBmaWxlSGFuZGxlOworICAgIF9kZXN0aW5hdGlvblBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVt
cG9yYXJ5RmlsZSgiVGVzdFdlYktpdEFQSSIsIGZpbGVIYW5kbGUpOworICAgIEVYUEVDVF9UUlVF
KGZpbGVIYW5kbGUgIT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7Cisg
ICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOwogICAgICphbGxvd092ZXJ3cml0
ZSA9IFlFUzsKICAgICByZXR1cm4gX2Rlc3RpbmF0aW9uUGF0aDsKIH0KQEAgLTQ4Nyw3ICs0ODcs
NyBAQCAtICh2b2lkKV9kb3dubG9hZERpZEZpbmlzaDooX1dLRG93bmxvYWQgKilkb3dubG9hZAog
ICAgIGlmIChyZWRpcmVjdENoYWluLmNvdW50ID4gMikKICAgICAgICAgRVhQRUNUX1NUUkVRKCJo
dHRwOi8vcGFzcy8iLCBbcmVkaXJlY3RDaGFpblsyXS5hYnNvbHV0ZVN0cmluZyBVVEY4U3RyaW5n
XSk7CiAKLSAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVGaWxlKF9kZXN0aW5hdGlvblBh
dGgpOworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoX2Rlc3RpbmF0aW9uUGF0aCk7CiAgICAg
aXNEb25lID0gdHJ1ZTsKIH0KIApAQCAtNjMyLDE3ICs2MzIsMTcgQEAgLSAodm9pZClfZG93bmxv
YWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVk
RmlsZW5hbWUKIHsKICAgICBFWFBFQ1RfVFJVRShbZmlsZW5hbWUgaGFzU3VmZml4OkAiLnVzZHoi
XSk7CiAKLSAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhh
bmRsZTsKLSAgICBfZGVzdGluYXRpb25QYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6b3BlblRl
bXBvcmFyeUZpbGUoZmlsZW5hbWUsIGZpbGVIYW5kbGUpOwotICAgIEVYUEVDVF9UUlVFKGZpbGVI
YW5kbGUgIT0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7
Ci0gICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOworICAgIEZp
bGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlSGFuZGxlOworICAgIF9kZXN0aW5hdGlv
blBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZShmaWxlbmFtZSwgZmlsZUhhbmRs
ZSk7CisgICAgRVhQRUNUX1RSVUUoZmlsZUhhbmRsZSAhPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxh
dGZvcm1GaWxlSGFuZGxlKTsKKyAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7
CiAKICAgICBjb21wbGV0aW9uSGFuZGxlcihZRVMsIF9kZXN0aW5hdGlvblBhdGgpOwogfQogCiAt
ICh2b2lkKV9kb3dubG9hZERpZEZpbmlzaDooX1dLRG93bmxvYWQgKilkb3dubG9hZAogewotICAg
IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoX2Rlc3RpbmF0aW9uUGF0aCk7CisgICAg
RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShfZGVzdGluYXRpb25QYXRoKTsKICAgICBpc0RvbmUgPSB0
cnVlOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0Rvd25sb2FkUHJvZ3Jlc3MubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0Rvd25sb2FkUHJvZ3Jlc3MubW0KaW5kZXggZjU2MGRmM2Y0YzQyZTI0ZTY1YjNiZjYy
ODcxYjVmYWRjMTlhNWY2NS4uM2ViMDNmMDRhMWRkOGE4ZTE3Njc4M2Q1ZWZmZDQ4MzQ3YTkwZGEw
MCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3du
bG9hZFByb2dyZXNzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvRG93bmxvYWRQcm9ncmVzcy5tbQpAQCAtMjgsNyArMjgsNiBAQAogI2ltcG9ydCAiVGVzdFdL
V2ViVmlldy5oIgogI2ltcG9ydCAiVXRpbGl0aWVzLmgiCiAjaW1wb3J0IDxGb3VuZGF0aW9uL05T
UHJvZ3Jlc3MuaD4KLSNpbXBvcnQgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8V2Vi
S2l0L1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5oPgogI2ltcG9ydCA8V2ViS2l0L1dLTmF2
aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLUHJvY2Vzc1Bvb2xQ
cml2YXRlLmg+CkBAIC0zNyw2ICszNiw3IEBACiAjaW1wb3J0IDxXZWJLaXQvX1dLRG93bmxvYWRE
ZWxlZ2F0ZS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU1Byb2dyZXNzU1BJLmg+CiAjaW1w
b3J0IDx3dGYvQmxvY2tQdHIuaD4KKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0
IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KIApAQCAtMzgw
LDEwICszODAsMTAgQEAgLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQg
ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUKIHsKICAgICBFWFBFQ1RfRVEo
ZG93bmxvYWQsIG1fZG93bmxvYWQuZ2V0KCkpOwogCi0gICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6
UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGVIYW5kbGU7Ci0gICAgUmV0YWluUHRyPE5TU3RyaW5nPiBw
YXRoID0gKE5TU3RyaW5nICopV2ViQ29yZTo6RmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUo
IlRlc3RXZWJLaXRBUEkiLCBmaWxlSGFuZGxlKTsKLSAgICBFWFBFQ1RfVFJVRShmaWxlSGFuZGxl
ICE9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpOwotICAg
IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsKKyAgICBGaWxlU3lz
dGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRsZTsKKyAgICBSZXRhaW5QdHI8TlNTdHJp
bmc+IHBhdGggPSAoTlNTdHJpbmcgKilGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiVGVz
dFdlYktpdEFQSSIsIGZpbGVIYW5kbGUpOworICAgIEVYUEVDVF9UUlVFKGZpbGVIYW5kbGUgIT0g
RmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7CisgICAgRmlsZVN5c3RlbTo6
Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOwogCiAgICAgY29tcGxldGlvbkhhbmRsZXIoWUVTLCBwYXRo
LmdldCgpKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL1BsYXRmb3Jt
VXRpbGl0aWVzV2luLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL1BsYXRmb3JtVXRpbGl0
aWVzV2luLmNwcAppbmRleCAwNTZiZmY3NzgyOTUyOGIxMjkwZjEyZTM5YWIyMzhiMGY2ODY4Yjg2
Li4zNWYyMmUyYThiMWJmZTUwYTQ3MDU5MDkxODM0NzIzNjc5YTNkN2ZkIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL3dpbi9QbGF0Zm9ybVV0aWxpdGllc1dpbi5jcHAKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS93aW4vUGxhdGZvcm1VdGlsaXRpZXNXaW4uY3BwCkBAIC0yNyw3ICsy
Nyw3IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKIAogI2luY2x1ZGUgPFNobHdh
cGkuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvRmls
ZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC93aW4v
V0NoYXJTdHJpbmdFeHRyYXMuaD4KIApAQCAtNDAsMTkgKzQwLDE5IEBAIHN0YXRpYyBTdHJpbmcg
bW9kdWxlRGlyZWN0b3J5KCkKICAgICB3Y2hhcl90IGZpbGVuYW1lW2J1ZmZlckxlbmd0aF07CiAg
ICAgYXV0byBsZW4gPSBHZXRNb2R1bGVGaWxlTmFtZShudWxscHRyLCBmaWxlbmFtZSwgYnVmZmVy
TGVuZ3RoKTsKICAgICBBU1NFUlQobGVuID4gMCk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVT
eXN0ZW06OmRpcmVjdG9yeU5hbWUod2NoYXJUb1N0cmluZyhmaWxlbmFtZSwgbGVuKSk7CisgICAg
cmV0dXJuIEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUod2NoYXJUb1N0cmluZyhmaWxlbmFtZSwg
bGVuKSk7CiB9CiAKIFdLU3RyaW5nUmVmIGNyZWF0ZUluamVjdGVkQnVuZGxlUGF0aCgpCiB7Ci0g
ICAgYXV0byBwYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KG1vZHVsZURpcmVjdG9yeSgpLCBTdHJpbmcoTCJUZXN0V2ViS2l0QVBJSW5qZWN0ZWRCdW5k
bGUuZGxsIikpOworICAgIGF1dG8gcGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChtb2R1bGVEaXJlY3RvcnkoKSwgU3RyaW5nKEwiVGVzdFdlYktpdEFQSUluamVjdGVk
QnVuZGxlLmRsbCIpKTsKICAgICByZXR1cm4gV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
cGF0aC51dGY4KCkuZGF0YSgpKTsKIH0KIAogV0tVUkxSZWYgY3JlYXRlVVJMRm9yUmVzb3VyY2Uo
Y29uc3QgY2hhciogcmVzb3VyY2UsIGNvbnN0IGNoYXIqIGV4dGVuc2lvbikKIHsKICAgICBTdHJp
bmcgZmlsZW5hbWUgPSBTdHJpbmc6OmZvcm1hdCgiLi5cXC4uXFwuLlxcVG9vbHNcXFRlc3RXZWJL
aXRBUElcXFRlc3RzXFxXZWJLaXRcXCVzLiVzIiwgcmVzb3VyY2UsIGV4dGVuc2lvbik7Ci0gICAg
YXV0byB1cmwgPSBVUkw6OmZpbGVVUkxXaXRoRmlsZVN5c3RlbVBhdGgoV2ViQ29yZTo6RmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1vZHVsZURpcmVjdG9yeSgpLCBmaWxlbmFt
ZSkpOworICAgIGF1dG8gdXJsID0gVVJMOjpmaWxlVVJMV2l0aEZpbGVTeXN0ZW1QYXRoKEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtb2R1bGVEaXJlY3RvcnkoKSwgZmlsZW5h
bWUpKTsKICAgICByZXR1cm4gV0tVUkxDcmVhdGVXaXRoVVRGOENTdHJpbmcodXJsLnN0cmluZygp
LnV0ZjgoKS5kYXRhKCkpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359985</attachid>
            <date>2019-01-23 19:12:56 -0800</date>
            <delta_ts>2019-01-24 09:26:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193602-20190123191255.patch</filename>
            <type>text/plain</type>
            <size>436996</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwNDAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDk2MTE4ZDNlZWUyODkzNTE3ZWFmMTQw
MTFkNTY5MjU4OTkwNWI3OTMuLmM5OWU0YTFhZGYwOTcxY2VjN2FjYzg1OGNlMjg4YmJhM2VjNTYw
YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTktMDEtMjMgIFJvc3MgS2lyc2xpbmcgIDxyb3Nz
LmtpcnNsaW5nQHNvbnkuY29tPgorCisgICAgICAgIE1vdmUgRmlsZVN5c3RlbSB0byBXVEYKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzYwMgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV1RGLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0OgorICAg
ICAgICAqIHd0Zi9GaWxlTWV0YWRhdGEuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0ZpbGVNZXRhZGF0YS5oLgorICAgICAgICAqIHd0Zi9GaWxlU3lzdGVtLmNwcDogUmVu
YW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwLgorICAgICAg
ICAqIHd0Zi9GaWxlU3lzdGVtLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9GaWxlU3lzdGVtLmguCisgICAgICAgICogd3RmL1BsYXRmb3JtR1RLLmNtYWtlOgorICAgICAg
ICAqIHd0Zi9QbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1QbGF5U3Rh
dGlvbi5jbWFrZToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1XUEUuY21ha2U6CisgICAgICAgICog
d3RmL1BsYXRmb3JtV2luLmNtYWtlOgorICAgICAgICAqIHd0Zi9jZi9GaWxlU3lzdGVtQ0YuY3Bw
OiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvRmlsZVN5c3RlbUNGLmNw
cC4KKyAgICAgICAgKiB3dGYvY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tOiBSZW5hbWVkIGZyb20g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tLgorICAgICAg
ICAqIHd0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwLgorICAgICAgICAqIHd0Zi9tYWMv
RmlsZVN5c3RlbU1hYy5tbTogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9GaWxlU3lzdGVtTWFjLm1tLgorICAgICAgICAqIHd0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVgu
Y3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3Rl
bVBPU0lYLmNwcC4KKyAgICAgICAgKiB3dGYvc3BpL21hYy9NZXRhZGF0YVNQSS5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvbWFjL01ldGFkYXRhU1BJLmguCisgICAg
ICAgICogd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2luLmNwcC4KKyAgICAgICAgKiB3dGYvd2luL1Bh
dGhXYWxrZXIuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bh
dGhXYWxrZXIuY3BwLgorICAgICAgICAqIHd0Zi93aW4vUGF0aFdhbGtlci5oOiBSZW5hbWVkIGZy
b20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BhdGhXYWxrZXIuaC4KKwogMjAxOS0wMS0y
MyAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgQVJNNjRFIHNob3Vs
ZCBub3QgRU5BQkxFKFNFUEFSQVRFRF9XWF9IRUFQKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzNjZlNGJiZmU0
ZGEwNTgyYmU4MzIzNGE5MTU5YmI4MWViYTBhMzkzLi5lNDEyNzUxMjcwODQ0MmRhMDU1OTQ3ZGRl
NWQwYTgzNDllMzczYzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODEgQEAKKzIwMTktMDEtMjMg
IFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgorCisgICAgICAgIE1vdmUg
RmlsZVN5c3RlbSB0byBXVEYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE5MzYwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwOgorICAgICAgICAqIE1v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5U2Vzc2lvbi5jcHA6Cisg
ICAgICAgICogTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAq
IE1vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRW50cnkuY3BwOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5jcHA6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQlRyYW5zYWN0aW9uLmNwcDoKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNwcDoKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHA6CisgICAgICAg
ICogTW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5Mb2NrLmNwcDoKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmRhdGFiYXNlL09yaWdpbkxvY2suaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNl
L2NvY29hL0RhdGFiYXNlTWFuYWdlckNvY29hLm1tOgorICAgICAgICAqIFBsYXRmb3JtTWFjLmNt
YWtlOgorICAgICAgICAqIFBsYXRmb3JtUGxheVN0YXRpb24uY21ha2U6CisgICAgICAgICogUGxh
dGZvcm1XaW4uY21ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogU291cmNl
c0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogYmluZGluZ3MvanMvR0NDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBkb20v
RGF0YVRyYW5zZmVySXRlbS5jcHA6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9XZWJDb250ZW50
UmVhZGVyQ29jb2EubW06CisgICAgICAgICogZmlsZWFwaS9GaWxlLmNwcDoKKyAgICAgICAgKiBm
aWxlYXBpL0ZpbGVDb2NvYS5tbToKKyAgICAgICAgKiBodG1sL0ZpbGVJbnB1dFR5cGUuY3BwOgor
ICAgICAgICAqIGh0bWwvRmlsZUxpc3RDcmVhdG9yLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoK
KyAgICAgICAgKiBwYWdlL1NlY3VyaXR5T3JpZ2luLmNwcDoKKyAgICAgICAgKiBwYWdlL1NlY3Vy
aXR5T3JpZ2luRGF0YS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vRmlsZUhhbmRsZS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL0ZpbGVTdHJlYW0uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL0ZpbGVT
dHJlYW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9Tb3VyY2VzR0xpYi50eHQ6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvRmlsZU1v
bml0b3JDb2NvYS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL0ZpbGVNb25pdG9yR0xpYi5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZDb250
ZW50S2V5U2Vzc2lvbi5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9DRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLm1tOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMu
bW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL2lvcy9RdWlja0xvb2subW06CisgICAgICAgICogcGxhdGZvcm0vaW9zL1dl
Ykl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW06CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL0Zvcm1EYXRhLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRh
U3RyZWFtQ0ZOZXQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3Vy
Y2VSZXF1ZXN0Q29jb2EubW06CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tp
ZUphckRCLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50
cnkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxGb3JtRGF0YVN0cmVhbS5o
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9CbG9iRGF0YUZpbGVSZWZlcmVuY2VNYWMu
bW06CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVyUE9TSVguY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudURCLmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVGhlbWUuY3BwOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUd0ay5jcHA6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmNwcDoKKyAgICAgICAgKiB3b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcDoKKwogMjAxOS0wMS0yMyAg
QmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtpdC5vcmc+CiAKICAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzI3Njg2NDMwPiBSZXZlcnQgd29ya2Fyb3VuZCBBVlBsYXllci5zZXRNdXRlZCBi
dWcgb24gbWFjT1MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCmluZGV4IDFkNjRkY2IwOTdiMGE2NzAzMjYzZTQ5
MDRlYjQ4MTAyMGI5OTU3NDIuLjg1ZDEzMzYyNWVlYzdmY2FjNzExMWY3YjRlNDE1OGQyOTE0ZGUy
YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkNvcmUvUEFML0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE5LTAxLTIzICBSb3Nz
IEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KKworICAgICAgICBNb3ZlIEZpbGVT
eXN0ZW0gdG8gV1RGCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTM2MDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFBBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhbC9QbGF0
Zm9ybU1hYy5jbWFrZToKKwogMjAxOS0wMS0yMyAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBw
bGUuY29tPgogCiAgICAgICAgIFN3aXRjaCByZW1haW5pbmcgQ29yZU1lZGlhIHNvZnQtbGlua2lu
ZyBpbiBXZWJLaXQgb3ZlciB0byBDb3JlTWVkaWFTb2Z0TGluay57Y3BwLGh9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4
IDUzNDA3ZjQ5Y2YwNTZkMTJkMjJkYjgzZDE5MmFlN2MwNTRkNTIxOGUuLjkwMzU2YmZiN2U3ZTRk
MDYwYTJmZDUyYzY2NTBhMzM0ZjZhNmQwZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODIgQEAKKzIw
MTktMDEtMjMgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgorCisgICAg
ICAgIE1vdmUgRmlsZVN5c3RlbSB0byBXVEYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5MzYwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9y
YWdlRW5naW5lLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3Jh
Z2VFbmdpbmVDYWNoZXMuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZS5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
QmxvYlN0b3JhZ2UuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZURhdGEuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZUZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZUZpbGVTeXN0ZW0uaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVJT0NoYW5uZWxDb2NvYS5tbToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVJT0NoYW5uZWxTb3VwLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L21hYy9OZXR3b3JrUHJvY2Vzc01hYy5tbToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3Vw
L05ldHdvcmtQcm9jZXNzU291cC5jcHA6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy91bml4L1Bs
dWdpblByb2Nlc3NNYWluVW5peC5jcHA6CisgICAgICAgICogU2hhcmVkL1BlcnNpc3RlbmN5VXRp
bHMuY3BwOgorICAgICAgICAqIFNoYXJlZC9QbHVnaW5zL05ldHNjYXBlL3VuaXgvTmV0c2NhcGVQ
bHVnaW5Nb2R1bGVVbml4LmNwcDoKKyAgICAgICAgKiBTaGFyZWQvUGx1Z2lucy91bml4L1BsdWdp
blNlYXJjaFBhdGguY3BwOgorICAgICAgICAqIFNoYXJlZC9XZWJNZW1vcnlTYW1wbGVyLmg6Cisg
ICAgICAgICogU2hhcmVkL2dsaWIvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoR0xpYi5jcHA6CisgICAg
ICAgICogU2hhcmVkL2lvcy9DaGlsZFByb2Nlc3NJT1MubW06CisgICAgICAgICogU2hhcmVkL21h
Yy9DaGlsZFByb2Nlc3NNYWMubW06CisgICAgICAgICogU2hhcmVkL21hYy9TYW5kYm94RXh0ZW5z
aW9uTWFjLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3Rv
cmUuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJV2Vic2l0ZURhdGFTdG9y
ZUNvY29hLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRlRGF0YVN0
b3JlR0xpYi5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5j
cHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZhdmljb25EYXRhYmFzZS5j
cHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZpbGVDaG9vc2VyUmVxdWVz
dC5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3Bw
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIu
Y3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd2luL0FQSVdlYnNpdGVEYXRhU3RvcmVXaW4u
Y3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9u
LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQubW06CisgICAg
ICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW06CisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9EZXZp
Y2VJZEhhc2hTYWx0U3RvcmFnZS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0Rvd25sb2Fkcy9E
b3dubG9hZFByb3h5LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9CdWJi
bGV3cmFwTGF1bmNoZXIuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9nbGliL1By
b2Nlc3NMYXVuY2hlckdMaWIuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL2d0ay9Q
bHVnaW5JbmZvQ2FjaGUuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVn
aW5Qcm9jZXNzUHJveHlNYWMubW06CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9Q
bHVnaW5JbmZvU3RvcmVVbml4LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy91bml4
L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViU3RvcmFnZS9M
b2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlN0b3JhZ2Uv
TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvZ2xpYi9XZWJQcm9jZXNzUHJveHlHTGliLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3Rr
L1dlYkluc3BlY3RvclByb3h5R3RrLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dlYlBy
b2Nlc3NQb29sR3RrLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRmlsZVVwbG9h
ZFBhbmVsLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tOgor
ICAgICAgICAqIFVJUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1Bvb2xXaW4uY3BwOgorICAgICAgICAq
IFVJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL3dwZS9XZWJQ
cm9jZXNzUG9vbFdQRS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ2xpYi9XZWJLaXRFeHRlbnNpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL2dsaWIvSW5qZWN0ZWRCdW5kbGVHbGliLmNwcDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5jcHA6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmNw
cDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZl
cnNpb24uY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViSW5zcGVjdG9y
VUlHdGsuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS93aW4vV2ViSW5zcGVjdG9y
VUlXaW4uY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1t
OgorCiAyMDE5LTAxLTIzICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgU3RvcCB1c2luZyBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvQ2hhbmdlTG9nCmluZGV4IDg3ZmU4YzNhOGM2MTZhMDQ3NWQ0YWYzNzQ2OTRkNDI2ZWM2ZmVm
ODQuLmRlY2YxNzg1ZDNlM2YyZWJiMWEyODMxNzQ4MDU5MWEzNzc3ZTkxZjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTktMDEtMjMgIFJvc3MgS2lyc2xpbmcgIDxy
b3NzLmtpcnNsaW5nQHNvbnkuY29tPgorCisgICAgICAgIE1vdmUgRmlsZVN5c3RlbSB0byBXVEYK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzYwMgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU3RvcmFn
ZS9TdG9yYWdlQXJlYVN5bmMuY3BwOgorICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZVN5bmNNYW5h
Z2VyLmNwcDoKKyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcDoKKwogMjAxOS0w
MS0yMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAg
ICAgIEZpeCBzb21lIGJ1aWxkcyBhZnRlciByMjQwMjkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cKaW5kZXggNzZkNmI1YWY3NzRhYjFhZjc4NTNkMDY3ZDAwN2EwOTFlYTRlOWQ5Zi4uZTdjYmFm
MzgyNmE0YjQ1ZmQ5MzI4OWY2MGQzZjc5OGI4ZjM5ODZkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE5LTAxLTIzICBSb3NzIEtpcnNsaW5nICA8cm9z
cy5raXJzbGluZ0Bzb255LmNvbT4KKworICAgICAgICBNb3ZlIEZpbGVTeXN0ZW0gdG8gV1RGCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM2MDIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1pc2MvV2Vi
TlNGaWxlTWFuYWdlckV4dHJhcy5tbToKKyAgICAgICAgKiBTdG9yYWdlL1dlYkRhdGFiYXNlUHJv
dmlkZXIubW06CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorCiAyMDE5LTAxLTIzICBD
b25yYWQgU2h1bHR6ICA8Y29ucmFkX3NodWx0ekBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IHRo
ZSBBcHBsZSBJbnRlcm5hbCBidWlsZC4gU2VlIDxyZGFyOi8vcHJvYmxlbS80NzQ5MTM4Mz4uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggNGE2YzkwM2JhZjBlZTIxZjZkODQxNTM2Mjhj
ZmNhZTU4NmVjZDE1ZC4uZDk0NmJiNWQwZTdjOGUyODI4NzdhNGY0NDQ0ZGNiODQ3NWQyMWIxMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE5LTAxLTIz
ICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KKworICAgICAgICBNb3Zl
IEZpbGVTeXN0ZW0gdG8gV1RGCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTM2MDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFBsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwOgorICAgICAgICAqIFBsdWdp
bnMvUGx1Z2luUGFja2FnZS5oOgorICAgICAgICAqIFBsdWdpbnMvUGx1Z2luU3RyZWFtLmg6Cisg
ICAgICAgICogV2ViQXBwbGljYXRpb25DYWNoZS5jcHA6CisgICAgICAgICogV2ViRGF0YWJhc2VN
YW5hZ2VyLmNwcDoKKyAgICAgICAgKiBXZWJEb3dubG9hZEN1cmwuY3BwOgorICAgICAgICAqIFdl
YlByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKwogMjAxOS0wMS0yMiAg
QWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIE1v
dmUgTmV0d29ya1N0b3JhZ2VTZXNzaW9uIG93bmVyc2hpcCB0byBOZXR3b3JrUHJvY2VzcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYTIyMzk0OTBkMTEyZGNh
NDZhNWFhNGJjZGVkMzVmZGJjYWFlYzllOS4uZDA4Yzc5ZjJiODNhOGUxM2ZlZGRiOWNjMTE5ZjMx
YTFhOWY5NzY3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC04OSw2ICs4OSwxMSBAQAogCQk5MzkzNEJENTE4QTFGMTY5MDBEMEQ2QTEgLyogU3RyaW5nVmll
d0NGLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkz
OTM0QkQ0MThBMUYxNjkwMEQwRDZBMSAvKiBTdHJpbmdWaWV3Q0YuY3BwICovOyB9OwogCQk5M0Yx
OTkzRTE5RDc5NThEMDBDMjM5MEIgLyogU3RyaW5nVmlldy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0YxOTkzRDE5RDc5NThEMDBDMjM5MEIgLyog
U3RyaW5nVmlldy5jcHAgKi87IH07CiAJCTlCQzcwRjA1MTc2QzM3OUQwMDEwMURFQyAvKiBBdG9t
aWNTdHJpbmdUYWJsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5QkM3MEYwNDE3NkMzNzlEMDAxMDFERUMgLyogQXRvbWljU3RyaW5nVGFibGUuY3Bw
ICovOyB9OworCQlBMzMxRDk1QjIxRjI0OTkyMDA5RjAyQUEgLyogRmlsZVN5c3RlbS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMzMxRDk1QTIxRjI0
OTkyMDA5RjAyQUEgLyogRmlsZVN5c3RlbS5jcHAgKi87IH07CisJCUEzMzFEOTVEMjFGMjQ5RTQw
MDlGMDJBQSAvKiBGaWxlU3lzdGVtQ0YuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTMzMUQ5NUMyMUYyNDlFNDAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1D
Ri5jcHAgKi87IH07CisJCUEzMzFEOTVGMjFGMjQ5RjYwMDlGMDJBQSAvKiBGaWxlU3lzdGVtQ29j
b2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMzMx
RDk1RTIxRjI0OUY2MDA5RjAyQUEgLyogRmlsZVN5c3RlbUNvY29hLm1tICovOyB9OworCQlBMzMx
RDk2MTIxRjI0QTBBMDA5RjAyQUEgLyogRmlsZVN5c3RlbU1hYy5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzMzFEOTYwMjFGMjRBMEEwMDlGMDJBQSAv
KiBGaWxlU3lzdGVtTWFjLm1tICovOyB9OworCQlBMzMxRDk2NzIxRjI0QUJEMDA5RjAyQUEgLyog
RmlsZVN5c3RlbVBPU0lYLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEEzMzFEOTY2MjFGMjRBQkQwMDlGMDJBQSAvKiBGaWxlU3lzdGVtUE9TSVguY3Bw
ICovOyB9OwogCQlBM0I3MjVFQzk4NzQ0NkFEOTNGMUE0NDAgLyogUmFuZG9tRGV2aWNlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM4RjU5N0NBMkE1
NzQxN0ZCQUI5MkZENiAvKiBSYW5kb21EZXZpY2UuY3BwICovOyB9OwogCQlBM0U0REQ5MzFGM0E4
MDM0MDBERUQwQjQgLyogVGV4dFN0cmVhbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBM0U0REQ5MTFGM0E4MDM0MDBERUQwQjQgLyogVGV4dFN0cmVh
bS5jcHAgKi87IH07CiAJCUE1QkExNUYzMTgyNDMzQTkwMEE4MkU2OSAvKiBTdHJpbmdDb2NvYS5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QkExNUYy
MTgyNDMzQTkwMEE4MkU2OSAvKiBTdHJpbmdDb2NvYS5tbSAqLzsgfTsKQEAgLTQzMCw4ICs0MzUs
MTYgQEAKIAkJOUM2N0M1NDI1ODkzNDhFMjg1QjQ5Njk5IC8qIEluZGV4ZWRDb250YWluZXJJdGVy
YXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmRleGVkQ29udGFpbmVy
SXRlcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTMwRDQxMkMxRjBERTBC
QTAwQjcxOTU0IC8qIFNvZnRMaW5raW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNvZnRMaW5raW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzMEQ0MTJE
MUYwREUxM0YwMEI3MTk1NCAvKiBTb2Z0TGlua2luZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTb2Z0TGlua2luZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlB
MzMxRDk1ODIxRjI0OTc4MDA5RjAyQUEgLyogRmlsZU1ldGFkYXRhLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEZpbGVNZXRhZGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBMzMxRDk1OTIxRjI0OTkyMDA5RjAyQUEgLyogRmlsZVN5c3RlbS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaWxlU3lzdGVtLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUEzMzFEOTVBMjFGMjQ5OTIwMDlGMDJBQSAvKiBGaWxlU3lzdGVtLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZpbGVTeXN0ZW0uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMzMxRDk1QzIxRjI0OUU0MDA5RjAyQUEgLyogRmls
ZVN5c3RlbUNGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZpbGVT
eXN0ZW1DRi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEzMzFEOTVFMjFGMjQ5
RjYwMDlGMDJBQSAvKiBGaWxlU3lzdGVtQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBGaWxlU3lzdGVtQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUEzMzFEOTYwMjFGMjRBMEEwMDlGMDJBQSAvKiBGaWxlU3lzdGVtTWFjLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRmlsZVN5c3RlbU1hYy5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTMzMUQ5NjYyMUYyNEFCRDAwOUYwMkFBIC8q
IEZpbGVTeXN0ZW1QT1NJWC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBGaWxlU3lzdGVtUE9TSVguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMzZF
MTZGNzIxNkZGODI4MDA4REQ4N0UgLyogV1RGU2VtYXBob3JlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdURlNlbWFwaG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBM0FCNkU2QTFGM0UxQUQ2MDA5QzE0QjEgLyogVmFsdWVUb1N0cmluZy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWYWx1ZVRvU3RyaW5nLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUEzRDI3M0I5MjFGMkVFOTEwMDg2Njk3MSAvKiBNZXRhZGF0YVNQSS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZXRhZGF0YVNQSS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBM0U0REQ5MTFGM0E4MDM0MDBERUQwQjQgLyogVGV4dFN0
cmVhbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXh0U3RyZWFt
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTNFNEREOTIxRjNBODAzNDAwREVE
MEI0IC8qIFRleHRTdHJlYW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4
dFN0cmVhbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTA5OEFGRjFDMTY5RTA3
MDAwODc3OTcgLyogU2FuZGJveFNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTYW5kYm94U1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MTcsNiArNzMw
LDcgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTVDMUYwNTkxMjE2NDM1NkIwMDM5MzAyQyAvKiBD
RlVSTEV4dHJhcy5jcHAgKi8sCiAJCQkJNUMxRjA1OTIyMTY0MzU2QjAwMzkzMDJDIC8qIENGVVJM
RXh0cmFzLmggKi8sCisJCQkJQTMzMUQ5NUMyMUYyNDlFNDAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1D
Ri5jcHAgKi8sCiAJCQkJQzJCQ0ZDNDExRjYxRDYxNjAwQzkyMjJDIC8qIExhbmd1YWdlQ0YuY3Bw
ICovLAogCQkJCTJDREVEMEVFMTgxMTVDMzgwMDREQkE3MCAvKiBSdW5Mb29wQ0YuY3BwICovLAog
CQkJCTFBRkRFNjQ3MTk1MjAxQzMwMEM0OEZGQSAvKiBUeXBlQ2FzdHNDRi5oICovLApAQCAtNzc0
LDYgKzc4OCwyMiBAQAogCQkJbmFtZSA9IFNvdXJjZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CiAJCX07CisJCUEzMzFEOTYzMjFGMjRBMkUwMDlGMDJBQSAvKiBwb3NpeCAqLyA9IHsKKwkJ
CWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQTMzMUQ5NjYyMUYyNEFCRDAw
OUYwMkFBIC8qIEZpbGVTeXN0ZW1QT1NJWC5jcHAgKi8sCisJCQkpOworCQkJcGF0aCA9IHBvc2l4
OworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJQTNEMjczQjgyMUYyRUU3QjAw
ODY2OTcxIC8qIG1hYyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAo
CisJCQkJQTNEMjczQjkyMUYyRUU5MTAwODY2OTcxIC8qIE1ldGFkYXRhU1BJLmggKi8sCisJCQkp
OworCQkJcGF0aCA9IG1hYzsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCUE1
QkExNUYxMTgyNDMzOUYwMEE4MkU2OSAvKiBjb2NvYSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3Vw
OwogCQkJY2hpbGRyZW4gPSAoCkBAIC04MDcsNiArODM3LDcgQEAKIAkJCQkxRkE0N0M4NzE1MjUw
MkRBMDA1NjhEMUIgLyogaW9zICovLAogCQkJCUE4QTQ3MkM0MTUxQTgyNUEwMDQxMjNGRiAvKiBt
YWMgKi8sCiAJCQkJRTQzQTQ2ODUxRTIyOEI1NzAwMjc2QjA1IC8qIHBlcnNpc3RlbmNlICovLAor
CQkJCUEzMzFEOTYzMjFGMjRBMkUwMDlGMDJBQSAvKiBwb3NpeCAqLywKIAkJCQlDRUY0ODIwQzE5
REEzNDc2MDBDQzA0QjggLyogc3BpICovLAogCQkJCUE4QTQ3MzFCMTUxQTgyNUIwMDQxMjNGRiAv
KiB0ZXh0ICovLAogCQkJCUE4QTQ3MzM5MTUxQTgyNUIwMDQxMjNGRiAvKiB0aHJlYWRzICovLApA
QCAtODk0LDggKzkyNSwxMSBAQAogCQkJCUE4QTQ3MkEyMTUxQTgyNUEwMDQxMjNGRiAvKiBGYXN0
TWFsbG9jLmggKi8sCiAJCQkJMEY3OUM3QzMxRTczNTExODAwRUIzNEQxIC8qIEZhc3RUTFMuaCAq
LywKIAkJCQlCMzhGRDdCQzE2ODk1M0U4MDA2NUM5NjkgLyogRmVhdHVyZURlZmluZXMuaCAqLywK
KwkJCQlBMzMxRDk1ODIxRjI0OTc4MDA5RjAyQUEgLyogRmlsZU1ldGFkYXRhLmggKi8sCiAJCQkJ
MEY5RDMzNUIxNjVEQkE3MzAwNUFEMzg3IC8qIEZpbGVQcmludFN0cmVhbS5jcHAgKi8sCiAJCQkJ
MEY5RDMzNUMxNjVEQkE3MzAwNUFEMzg3IC8qIEZpbGVQcmludFN0cmVhbS5oICovLAorCQkJCUEz
MzFEOTVBMjFGMjQ5OTIwMDlGMDJBQSAvKiBGaWxlU3lzdGVtLmNwcCAqLywKKwkJCQlBMzMxRDk1
OTIxRjI0OTkyMDA5RjAyQUEgLyogRmlsZVN5c3RlbS5oICovLAogCQkJCTBGMkI2NkE1MTdCNkI0
RjcwMEE3QUUzRiAvKiBGbGlwQnl0ZXMuaCAqLywKIAkJCQlGRTg2QTg3NDFFNTk0NDAyMDAxMTFC
QkYgLyogRm9yYmlkSGVhcEFsbG9jYXRpb24uaCAqLywKIAkJCQlBOEE0NzJBNjE1MUE4MjVBMDA0
MTIzRkYgLyogRm9yd2FyZC5oICovLApAQCAtMTE5MCw2ICsxMjI0LDcgQEAKIAkJCWNoaWxkcmVu
ID0gKAogCQkJCTFBNDI4QjhCMUM4Rjg5REQwMDUxRTlFQiAvKiBBcHBLaXRDb21wYXRpYmlsaXR5
RGVjbGFyYXRpb25zLmggKi8sCiAJCQkJMUFDQUREODIxODg0NDgwMTAwRDhCNzFEIC8qIERlcHJl
Y2F0ZWRTeW1ib2xzVXNlZEJ5U2FmYXJpLm1tICovLAorCQkJCUEzMzFEOTYwMjFGMjRBMEEwMDlG
MDJBQSAvKiBGaWxlU3lzdGVtTWFjLm1tICovLAogCQkJCTUzNTM0RjI5MUVDMEUxMEUwMDE0MUIy
RiAvKiBNYWNoRXhjZXB0aW9ucy5kZWZzICovLAogCQkJKTsKIAkJCXBhdGggPSBtYWM7CkBAIC0x
MzE3LDYgKzEzNTIsNyBAQAogCQkJCURDRUUyMUY5MUNFQTc1MkYwMDBDMjM5NiAvKiBjZiAqLywK
IAkJCQlDRTQ2NTE2QzE5REIxRkI0MDAzRUNBMDUgLyogY29jb2EgKi8sCiAJCQkJQ0U3M0UwMjMx
OURDQjdBQjAwNTgwRDVDIC8qIGRhcndpbiAqLywKKwkJCQlBM0QyNzNCODIxRjJFRTdCMDA4NjY5
NzEgLyogbWFjICovLAogCQkJKTsKIAkJCXBhdGggPSBzcGk7CiAJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOwpAQCAtMTM1MSw2ICsxMzg3LDcgQEAKIAkJCQlFMzhDNDEyNDFFQjRFMDRDMDA0Mjk1
N0QgLyogQ1BVVGltZUNvY29hLmNwcCAqLywKIAkJCQkxNDNEREU5NzIwQzhCRTk5MDA3Rjc2RkEg
LyogRW50aXRsZW1lbnRzLmggKi8sCiAJCQkJMTQzRERFOTUyMEM4QkMzNzAwN0Y3NkZBIC8qIEVu
dGl0bGVtZW50cy5tbSAqLywKKwkJCQlBMzMxRDk1RTIxRjI0OUY2MDA5RjAyQUEgLyogRmlsZVN5
c3RlbUNvY29hLm1tICovLAogCQkJCTdBNkVCQTMzMjA3NDZDMzQwMDRGOUM0NCAvKiBNYWNoU2Vu
ZFJpZ2h0LmNwcCAqLywKIAkJCQlBOEE0NzJDNTE1MUE4MjVBMDA0MTIzRkYgLyogTWFpblRocmVh
ZENvY29hLm1tICovLAogCQkJCUFERjJDRTY1MUUzOUYxMDYwMDY4ODlEQiAvKiBNZW1vcnlGb290
cHJpbnRDb2NvYS5jcHAgKi8sCkBAIC0xNDc2LDYgKzE1MTMsMTEgQEAKIAkJCQkwRjdDNUZCNjFE
ODg1Q0YyMDA0NEY1RTIgLyogRmFzdEJpdFZlY3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
OEE0NzNDMzE1MUE4MjVCMDA0MTIzRkYgLyogRmFzdE1hbGxvYy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRjlEMzM2MDE2NURCQTczMDA1QUQzODcgLyogRmlsZVByaW50U3RyZWFtLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCUEzMzFEOTVCMjFGMjQ5OTIwMDlGMDJBQSAvKiBGaWxlU3lzdGVtLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCUEzMzFEOTVEMjFGMjQ5RTQwMDlGMDJBQSAvKiBGaWxlU3lz
dGVtQ0YuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTMzMUQ5NUYyMUYyNDlGNjAwOUYwMkFBIC8q
IEZpbGVTeXN0ZW1Db2NvYS5tbSBpbiBTb3VyY2VzICovLAorCQkJCUEzMzFEOTYxMjFGMjRBMEEw
MDlGMDJBQSAvKiBGaWxlU3lzdGVtTWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQTMzMUQ5Njcy
MUYyNEFCRDAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1QT1NJWC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBOEE0NzNCNTE1MUE4MjVCMDA0MTIzRkYgLyogZml4ZWQtZHRvYS5jYyBpbiBTb3VyY2VzICov
LAogCQkJCTFBMUQ4QjlFMTczMTg3OTgwMDE0MURBNCAvKiBGdW5jdGlvbkRpc3BhdGNoZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEY1QkYxNzYxRjIzRDQ5QTAwMjlEOTFEIC8qIEdpZ2FjYWdl
LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAppbmRleCBjZWUxY2NlMWU1NzE4
NGQxM2JkMmNkNTE5ZWY2YTIwZGZmYjFhOTZhLi43ZDg1ODMzMjBmNDljNjEwNDAxYzdiOGFiNDQ2
Mzk2ZDg4YzE1MGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dApAQCAtNjEsNyArNjEsOSBAQCBzZXQo
V1RGX1BVQkxJQ19IRUFERVJTCiAgICAgRmFzdE1hbGxvYy5oCiAgICAgRmFzdFRMUy5oCiAgICAg
RmVhdHVyZURlZmluZXMuaAorICAgIEZpbGVNZXRhZGF0YS5oCiAgICAgRmlsZVByaW50U3RyZWFt
LmgKKyAgICBGaWxlU3lzdGVtLmgKICAgICBGbGlwQnl0ZXMuaAogICAgIEZvcmJpZEhlYXBBbGxv
Y2F0aW9uLmgKICAgICBGb3J3YXJkLmgKQEAgLTM1Myw2ICszNTUsNyBAQCBzZXQoV1RGX1NPVVJD
RVMKICAgICBGYXN0Qml0VmVjdG9yLmNwcAogICAgIEZhc3RNYWxsb2MuY3BwCiAgICAgRmlsZVBy
aW50U3RyZWFtLmNwcAorICAgIEZpbGVTeXN0ZW0uY3BwCiAgICAgRnVuY3Rpb25EaXNwYXRjaGVy
LmNwcAogICAgIEdpZ2FjYWdlLmNwcAogICAgIEdsb2JhbFZlcnNpb24uY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9GaWxlTWV0YWRhdGEuaCBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVNZXRh
ZGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjBiYjg4ZmM4NGY5NGFmNGNjZjFjNTgwZTBkNTZhMmI2NTgxMTBm
OTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlTWV0YWRhdGEuaApAQCAt
MCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KKwor
bmFtZXNwYWNlIFdURiB7CisKK3N0cnVjdCBGaWxlTWV0YWRhdGEgeworICAgIC8vIFRoZSBsYXN0
IG1vZGlmaWNhdGlvbiB0aW1lIG9mIHRoZSBmaWxlLCBpbiBzZWNvbmRzLgorICAgIFdhbGxUaW1l
IG1vZGlmaWNhdGlvblRpbWU7CisKKyAgICAvLyBUaGUgbGVuZ3RoIG9mIHRoZSBmaWxlIGluIGJ5
dGVzLgorICAgIGxvbmcgbG9uZyBsZW5ndGg7CisKKyAgICBib29sIGlzSGlkZGVuOworCisgICAg
ZW51bSBjbGFzcyBUeXBlIHsgRmlsZSwgRGlyZWN0b3J5LCBTeW1ib2xpY0xpbmsgfTsKKyAgICBU
eXBlIHR5cGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpGaWxlTWV0
YWRhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJj
ZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA2ZGVjN2QyOTM3NjdiYTU0Mjg0
MTc5OWE5ZmJiZmExYzQzZjViNjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9G
aWxlU3lzdGVtLmNwcApAQCAtMCwwICsxLDM2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
Ny0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CisKKyNpbmNsdWRlIDx3dGYvRmlsZU1l
dGFkYXRhLmg+CisjaW5jbHVkZSA8d3RmL0hleE51bWJlci5oPgorI2luY2x1ZGUgPHd0Zi9TY29w
ZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdCdWlsZGVyLmg+CisKKyNpZiAhT1MoV0lORE9XUykKKyNpbmNsdWRlIDxmY250bC5oPgor
I2luY2x1ZGUgPHN5cy9tbWFuLmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpbmNsdWRlIDx1
bmlzdGQuaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV1RGIHsKKworbmFtZXNwYWNlIEZpbGVTeXN0
ZW1JbXBsIHsKKworLy8gVGhlIGZvbGxvd2luZyBsb3dlci1BU0NJSSBjaGFyYWN0ZXJzIG5lZWQg
ZXNjYXBpbmcgdG8gYmUgdXNlZCBpbiBhIGZpbGVuYW1lCisvLyBhY3Jvc3MgYWxsIHN5c3RlbXMs
IGluY2x1ZGluZyBXaW5kb3dzOgorLy8gICAgIC0gVW5wcmludGFibGUgQVNDSUkgKDAwLTFGKQor
Ly8gICAgIC0gU3BhY2UgICAgICAgICAgICAgKDIwKQorLy8gICAgIC0gRG91YmxlIHF1b3RlICAg
ICAgKDIyKQorLy8gICAgIC0gUGVyY2VudCAgICAgICAgICAgKDI1KSAoZXNjYXBlZCBiZWNhdXNl
IGl0IGlzIG91ciBlc2NhcGUgY2hhcmFjdGVyKQorLy8gICAgIC0gQXN0ZXJpc2sgICAgICAgICAg
KDJBKQorLy8gICAgIC0gU2xhc2ggICAgICAgICAgICAgKDJGKQorLy8gICAgIC0gQ29sb24gICAg
ICAgICAgICAgKDNBKQorLy8gICAgIC0gTGVzcy10aGFuICAgICAgICAgKDNDKQorLy8gICAgIC0g
R3JlYXRlci10aGFuICAgICAgKDNFKQorLy8gICAgIC0gUXVlc3Rpb24gTWFyayAgICAgKDNGKQor
Ly8gICAgIC0gQmFja3NsYXNoICAgICAgICAgKDVDKQorLy8gICAgIC0gUGlwZSAgICAgICAgICAg
ICAgKDdDKQorLy8gICAgIC0gRGVsZXRlICAgICAgICAgICAgKDdGKQorCitzdGF0aWMgY29uc3Qg
Ym9vbCBuZWVkc0VzY2FwaW5nWzEyOF0gPSB7CisgICAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1
ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICAvKiAwMC0wNyAqLworICAgIHRydWUsICB0
cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgLyogMDgtMEYg
Ki8KKworICAgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUs
ICB0cnVlLCAgLyogMTAtMTcgKi8KKyAgICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1
ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIC8qIDE4LTFGICovCisKKyAgICB0cnVlLCAgZmFsc2Us
IHRydWUsICBmYWxzZSwgZmFsc2UsIHRydWUsICBmYWxzZSwgZmFsc2UsIC8qIDIwLTI3ICovCisg
ICAgZmFsc2UsIGZhbHNlLCB0cnVlLCAgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUs
ICAvKiAyOC0yRiAqLworCisgICAgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBm
YWxzZSwgZmFsc2UsIGZhbHNlLCAvKiAzMC0zNyAqLworICAgIGZhbHNlLCBmYWxzZSwgdHJ1ZSwg
IGZhbHNlLCB0cnVlLCAgZmFsc2UsIHRydWUsICB0cnVlLCAgLyogMzgtM0YgKi8KKworICAgIGZh
bHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgLyog
NDAtNDcgKi8KKyAgICBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBm
YWxzZSwgZmFsc2UsIC8qIDQ4LTRGICovCisKKyAgICBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxz
ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIC8qIDUwLTU3ICovCisgICAgZmFsc2UsIGZh
bHNlLCBmYWxzZSwgZmFsc2UsIHRydWUsICBmYWxzZSwgZmFsc2UsIGZhbHNlLCAvKiA1OC01RiAq
LworCisgICAgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2Us
IGZhbHNlLCAvKiA2MC02NyAqLworICAgIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxz
ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgLyogNjgtNkYgKi8KKworICAgIGZhbHNlLCBmYWxzZSwg
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgLyogNzAtNzcgKi8KKyAg
ICBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgIGZhbHNlLCBmYWxzZSwgdHJ1ZSwg
IC8qIDc4LTdGICovCit9OworCitzdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkRXNjYXBlVUNoYXIo
VUNoYXIgY2hhcmFjdGVyLCBVQ2hhciBwcmV2aW91c0NoYXJhY3RlciwgVUNoYXIgbmV4dENoYXJh
Y3RlcikKK3sKKyAgICBpZiAoY2hhcmFjdGVyIDw9IDEyNykKKyAgICAgICAgcmV0dXJuIG5lZWRz
RXNjYXBpbmdbY2hhcmFjdGVyXTsKKworICAgIGlmIChVMTZfSVNfTEVBRChjaGFyYWN0ZXIpICYm
ICFVMTZfSVNfVFJBSUwobmV4dENoYXJhY3RlcikpCisgICAgICAgIHJldHVybiB0cnVlOworCisg
ICAgaWYgKFUxNl9JU19UUkFJTChjaGFyYWN0ZXIpICYmICFVMTZfSVNfTEVBRChwcmV2aW91c0No
YXJhY3RlcikpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIGZhbHNlOworfQor
CitTdHJpbmcgZW5jb2RlRm9yRmlsZU5hbWUoY29uc3QgU3RyaW5nJiBpbnB1dFN0cmluZykKK3sK
KyAgICB1bnNpZ25lZCBsZW5ndGggPSBpbnB1dFN0cmluZy5sZW5ndGgoKTsKKyAgICBpZiAoIWxl
bmd0aCkKKyAgICAgICAgcmV0dXJuIGlucHV0U3RyaW5nOworCisgICAgU3RyaW5nQnVpbGRlciBy
ZXN1bHQ7CisgICAgcmVzdWx0LnJlc2VydmVDYXBhY2l0eShsZW5ndGgpOworCisgICAgVUNoYXIg
cHJldmlvdXNDaGFyYWN0ZXI7CisgICAgVUNoYXIgY2hhcmFjdGVyID0gMDsKKyAgICBVQ2hhciBu
ZXh0Q2hhcmFjdGVyID0gaW5wdXRTdHJpbmdbMF07CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgIHByZXZpb3VzQ2hhcmFjdGVyID0gY2hhcmFjdGVy
OworICAgICAgICBjaGFyYWN0ZXIgPSBuZXh0Q2hhcmFjdGVyOworICAgICAgICBuZXh0Q2hhcmFj
dGVyID0gaSArIDEgPCBsZW5ndGggPyBpbnB1dFN0cmluZ1tpICsgMV0gOiAwOworCisgICAgICAg
IGlmIChzaG91bGRFc2NhcGVVQ2hhcihjaGFyYWN0ZXIsIHByZXZpb3VzQ2hhcmFjdGVyLCBuZXh0
Q2hhcmFjdGVyKSkgeworICAgICAgICAgICAgaWYgKGNoYXJhY3RlciA8PSAyNTUpIHsKKyAgICAg
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKCclJyk7CisgICAgICAgICAgICAgICAgYXBwZW5kQnl0
ZUFzSGV4KGNoYXJhY3RlciwgcmVzdWx0KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiUrIik7CisgICAgICAgICAgICAgICAgYXBw
ZW5kQnl0ZUFzSGV4KGNoYXJhY3RlciA+PiA4LCByZXN1bHQpOworICAgICAgICAgICAgICAgIGFw
cGVuZEJ5dGVBc0hleChjaGFyYWN0ZXIsIHJlc3VsdCk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChjaGFyYWN0ZXIpOworICAgIH0KKwor
ICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKK30KKworU3RyaW5nIGRlY29kZUZyb21GaWxl
bmFtZShjb25zdCBTdHJpbmcmIGlucHV0U3RyaW5nKQoreworICAgIHVuc2lnbmVkIGxlbmd0aCA9
IGlucHV0U3RyaW5nLmxlbmd0aCgpOworICAgIGlmICghbGVuZ3RoKQorICAgICAgICByZXR1cm4g
aW5wdXRTdHJpbmc7CisKKyAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKKyAgICByZXN1bHQucmVz
ZXJ2ZUNhcGFjaXR5KGxlbmd0aCk7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVu
Z3RoOyArK2kpIHsKKyAgICAgICAgaWYgKGlucHV0U3RyaW5nW2ldICE9ICclJykgeworICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZChpbnB1dFN0cmluZ1tpXSk7CisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIElmIHRoZSBpbnB1dCBzdHJpbmcgaXMgYSB2YWxp
ZCBlbmNvZGVkIGZpbGVuYW1lLCBpdCBtdXN0IGJlIGF0IGxlYXN0IDIgY2hhcmFjdGVycyBsb25n
ZXIKKyAgICAgICAgLy8gdGhhbiB0aGUgY3VycmVudCBpbmRleCB0byBhY2NvdW50IGZvciB0aGlz
IHBlcmNlbnQgZW5jb2RlZCB2YWx1ZS4KKyAgICAgICAgaWYgKGkgKyAyID49IGxlbmd0aCkKKyAg
ICAgICAgICAgIHJldHVybiB7IH07CisKKyAgICAgICAgaWYgKGlucHV0U3RyaW5nW2krMV0gIT0g
JysnKSB7CisgICAgICAgICAgICBpZiAoIWlzQVNDSUlIZXhEaWdpdChpbnB1dFN0cmluZ1tpICsg
MV0pKQorICAgICAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgICAgICBpZiAoIWlzQVND
SUlIZXhEaWdpdChpbnB1dFN0cmluZ1tpICsgMl0pKQorICAgICAgICAgICAgICAgIHJldHVybiB7
IH07CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHRvQVNDSUlIZXhWYWx1ZShpbnB1dFN0cmlu
Z1tpICsgMV0sIGlucHV0U3RyaW5nW2kgKyAyXSkpOworICAgICAgICAgICAgaSArPSAyOworICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICAvLyBJZiB0aGUgaW5wdXQg
c3RyaW5nIGlzIGEgdmFsaWQgZW5jb2RlZCBmaWxlbmFtZSwgaXQgbXVzdCBiZSBhdCBsZWFzdCA1
IGNoYXJhY3RlcnMgbG9uZ2VyCisgICAgICAgIC8vIHRoYW4gdGhlIGN1cnJlbnQgaW5kZXggdG8g
YWNjb3VudCBmb3IgdGhpcyBwZXJjZW50IGVuY29kZWQgdmFsdWUuCisgICAgICAgIGlmIChpICsg
NSA+PSBsZW5ndGgpCisgICAgICAgICAgICByZXR1cm4geyB9OworCisgICAgICAgIGlmICghaXNB
U0NJSUhleERpZ2l0KGlucHV0U3RyaW5nW2kgKyAyXSkpCisgICAgICAgICAgICByZXR1cm4geyB9
OworICAgICAgICBpZiAoIWlzQVNDSUlIZXhEaWdpdChpbnB1dFN0cmluZ1tpICsgM10pKQorICAg
ICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgaWYgKCFpc0FTQ0lJSGV4RGlnaXQoaW5wdXRT
dHJpbmdbaSArIDRdKSkKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIGlmICghaXNB
U0NJSUhleERpZ2l0KGlucHV0U3RyaW5nW2kgKyA1XSkpCisgICAgICAgICAgICByZXR1cm4geyB9
OworCisgICAgICAgIHJlc3VsdC5hcHBlbmQodG9BU0NJSUhleFZhbHVlKGlucHV0U3RyaW5nW2kg
KyAyXSwgaW5wdXRTdHJpbmdbaSArIDNdKSA8PCA4IHwgdG9BU0NJSUhleFZhbHVlKGlucHV0U3Ry
aW5nW2kgKyA0XSwgaW5wdXRTdHJpbmdbaSArIDVdKSk7CisgICAgICAgIGkgKz0gNTsKKyAgICB9
CisKKyAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7Cit9CisKK1N0cmluZyBsYXN0Q29tcG9u
ZW50T2ZQYXRoSWdub3JpbmdUcmFpbGluZ1NsYXNoKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyNp
ZiBPUyhXSU5ET1dTKQorICAgIGNoYXIgcGF0aFNlcGFyYXRvciA9ICdcXCc7CisjZWxzZQorICAg
IGNoYXIgcGF0aFNlcGFyYXRvciA9ICcvJzsKKyNlbmRpZgorCisgICAgYXV0byBwb3NpdGlvbiA9
IHBhdGgucmV2ZXJzZUZpbmQocGF0aFNlcGFyYXRvcik7CisgICAgaWYgKHBvc2l0aW9uID09IG5v
dEZvdW5kKQorICAgICAgICByZXR1cm4gcGF0aDsKKworICAgIHNpemVfdCBlbmRPZlN1YnN0cmlu
ZyA9IHBhdGgubGVuZ3RoKCkgLSAxOworICAgIGlmIChwb3NpdGlvbiA9PSBlbmRPZlN1YnN0cmlu
ZykgeworICAgICAgICAtLWVuZE9mU3Vic3RyaW5nOworICAgICAgICBwb3NpdGlvbiA9IHBhdGgu
cmV2ZXJzZUZpbmQocGF0aFNlcGFyYXRvciwgZW5kT2ZTdWJzdHJpbmcpOworICAgIH0KKworICAg
IHJldHVybiBwYXRoLnN1YnN0cmluZyhwb3NpdGlvbiArIDEsIGVuZE9mU3Vic3RyaW5nIC0gcG9z
aXRpb24pOworfQorCitib29sIGFwcGVuZEZpbGVDb250ZW50c1RvRmlsZUhhbmRsZShjb25zdCBT
dHJpbmcmIHBhdGgsIFBsYXRmb3JtRmlsZUhhbmRsZSYgdGFyZ2V0KQoreworICAgIGF1dG8gc291
cmNlID0gb3BlbkZpbGUocGF0aCwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKKworICAgIGlmICghaXNI
YW5kbGVWYWxpZChzb3VyY2UpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzdGF0aWMg
aW50IGJ1ZmZlclNpemUgPSAxIDw8IDE5OworICAgIFZlY3RvcjxjaGFyPiBidWZmZXIoYnVmZmVy
U2l6ZSk7CisKKyAgICBhdXRvIGZpbGVDbG9zZXIgPSBXVEY6Om1ha2VTY29wZUV4aXQoW3NvdXJj
ZV0oKSB7CisgICAgICAgIFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUgPSBzb3VyY2U7CisgICAg
ICAgIGNsb3NlRmlsZShoYW5kbGUpOworICAgIH0pOworCisgICAgZG8geworICAgICAgICBpbnQg
cmVhZEJ5dGVzID0gcmVhZEZyb21GaWxlKHNvdXJjZSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyU2l6
ZSk7CisKKyAgICAgICAgaWYgKHJlYWRCeXRlcyA8IDApCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICAgICAgaWYgKHdyaXRlVG9GaWxlKHRhcmdldCwgYnVmZmVyLmRhdGEoKSwgcmVh
ZEJ5dGVzKSAhPSByZWFkQnl0ZXMpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAg
ICAgaWYgKHJlYWRCeXRlcyA8IGJ1ZmZlclNpemUpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9IHdoaWxlICh0cnVlKTsKKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCisK
K2Jvb2wgZmlsZXNIYXZlU2FtZVZvbHVtZShjb25zdCBTdHJpbmcmIGZpbGVBLCBjb25zdCBTdHJp
bmcmIGZpbGVCKQoreworICAgIGF1dG8gZnNSZXBGaWxlQSA9IGZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihmaWxlQSk7CisgICAgYXV0byBmc1JlcEZpbGVCID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKGZpbGVCKTsKKworICAgIGlmIChmc1JlcEZpbGVBLmlzTnVsbCgpIHx8IGZzUmVwRmlsZUIu
aXNOdWxsKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGJvb2wgcmVzdWx0ID0gZmFs
c2U7CisKKyAgICBhdXRvIGZpbGVBRGV2ID0gZ2V0RmlsZURldmljZUlkKGZzUmVwRmlsZUEpOwor
ICAgIGF1dG8gZmlsZUJEZXYgPSBnZXRGaWxlRGV2aWNlSWQoZnNSZXBGaWxlQik7CisKKyAgICBp
ZiAoZmlsZUFEZXYgJiYgZmlsZUJEZXYpCisgICAgICAgIHJlc3VsdCA9IChmaWxlQURldiA9PSBm
aWxlQkRldik7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisjaWYgIVBMQVRGT1JNKE1BQykK
Kwordm9pZCBzZXRNZXRhZGF0YVVSTChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmKQoreworfQorCitib29sIGNhbkV4Y2x1ZGVGcm9tQmFja3VwKCkKK3sKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgZXhjbHVkZUZyb21CYWNrdXAoY29uc3QgU3RyaW5nJikK
K3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKyNlbmRpZgorCitNYXBwZWRGaWxlRGF0YTo6fk1h
cHBlZEZpbGVEYXRhKCkKK3sKKyNpZiAhT1MoV0lORE9XUykKKyAgICBpZiAoIW1fZmlsZURhdGEp
CisgICAgICAgIHJldHVybjsKKyAgICBtdW5tYXAobV9maWxlRGF0YSwgbV9maWxlU2l6ZSk7Cisj
ZW5kaWYKK30KKworTWFwcGVkRmlsZURhdGE6Ok1hcHBlZEZpbGVEYXRhKGNvbnN0IFN0cmluZyYg
ZmlsZVBhdGgsIGJvb2wmIHN1Y2Nlc3MpCit7CisjaWYgT1MoV0lORE9XUykKKyAgICAvLyBGSVhN
RTogSW1wbGVtZW50IG1hcHBpbmcKKyAgICBzdWNjZXNzID0gZmFsc2U7CisjZWxzZQorICAgIENT
dHJpbmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZVBhdGgpOworICAgIGlu
dCBmZCA9ICFmc1JlcC5pc051bGwoKSA/IG9wZW4oZnNSZXAuZGF0YSgpLCBPX1JET05MWSkgOiAt
MTsKKyAgICBpZiAoZmQgPCAwKSB7CisgICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIHN0cnVjdCBzdGF0IGZpbGVTdGF0OworICAgIGlmIChmc3Rh
dChmZCwgJmZpbGVTdGF0KSkgeworICAgICAgICBjbG9zZShmZCk7CisgICAgICAgIHN1Y2Nlc3Mg
PSBmYWxzZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHVuc2lnbmVkIHNpemU7Cisg
ICAgaWYgKCFXVEY6OmNvbnZlcnRTYWZlbHkoZmlsZVN0YXQuc3Rfc2l6ZSwgc2l6ZSkpIHsKKyAg
ICAgICAgY2xvc2UoZmQpOworICAgICAgICBzdWNjZXNzID0gZmFsc2U7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBpZiAoIXNpemUpIHsKKyAgICAgICAgY2xvc2UoZmQpOworICAgICAg
ICBzdWNjZXNzID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHZvaWQqIGRh
dGEgPSBtbWFwKDAsIHNpemUsIFBST1RfUkVBRCwgTUFQX0ZJTEUgfCBNQVBfU0hBUkVELCBmZCwg
MCk7CisgICAgY2xvc2UoZmQpOworCisgICAgaWYgKGRhdGEgPT0gTUFQX0ZBSUxFRCkgeworICAg
ICAgICBzdWNjZXNzID0gZmFsc2U7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzdWNj
ZXNzID0gdHJ1ZTsKKyAgICBtX2ZpbGVEYXRhID0gZGF0YTsKKyAgICBtX2ZpbGVTaXplID0gc2l6
ZTsKKyNlbmRpZgorfQorCitQbGF0Zm9ybUZpbGVIYW5kbGUgb3BlbkFuZExvY2tGaWxlKGNvbnN0
IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlIG9wZW5Nb2RlLCBPcHRpb25TZXQ8RmlsZUxvY2tN
b2RlPiBsb2NrTW9kZSkKK3sKKyAgICBhdXRvIGhhbmRsZSA9IG9wZW5GaWxlKHBhdGgsIG9wZW5N
b2RlKTsKKyAgICBpZiAoaGFuZGxlID09IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCisgICAg
ICAgIHJldHVybiBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOworCisjaWYgVVNFKEZJTEVfTE9D
SykKKyAgICBib29sIGxvY2tlZCA9IGxvY2tGaWxlKGhhbmRsZSwgbG9ja01vZGUpOworICAgIEFT
U0VSVF9VTlVTRUQobG9ja2VkLCBsb2NrZWQpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0obG9j
a01vZGUpOworI2VuZGlmCisKKyAgICByZXR1cm4gaGFuZGxlOworfQorCit2b2lkIHVubG9ja0Fu
ZENsb3NlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlKQoreworI2lmIFVTRShGSUxFX0xP
Q0spCisgICAgYm9vbCB1bmxvY2tlZCA9IHVubG9ja0ZpbGUoaGFuZGxlKTsKKyAgICBBU1NFUlRf
VU5VU0VEKHVubG9ja2VkLCB1bmxvY2tlZCk7CisjZW5kaWYKKyAgICBjbG9zZUZpbGUoaGFuZGxl
KTsKK30KKworYm9vbCBmaWxlSXNEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBTaG91bGRG
b2xsb3dTeW1ib2xpY0xpbmtzIHNob3VsZEZvbGxvd1N5bWJvbGljTGlua3MpCit7CisgICAgYXV0
byBtZXRhZGF0YSA9IHNob3VsZEZvbGxvd1N5bWJvbGljTGlua3MgPT0gU2hvdWxkRm9sbG93U3lt
Ym9saWNMaW5rczo6WWVzID8gZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3MocGF0aCkgOiBm
aWxlTWV0YWRhdGEocGF0aCk7CisgICAgaWYgKCFtZXRhZGF0YSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIHJldHVybiBtZXRhZGF0YS52YWx1ZSgpLnR5cGUgPT0gRmlsZU1ldGFkYXRhOjpU
eXBlOjpEaXJlY3Rvcnk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEZpbGVTeXN0ZW1JbXBsCit9IC8v
IG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaCBi
L1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NWMzYmFmMmU2MjhiOWNh
ZDc0NjJhMDY5ZWVjMDBiOWFmODZjMmEzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93
dGYvRmlsZVN5c3RlbS5oCkBAIC0wLDAgKzEsMjI2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDA3LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA4IENvbGxhYm9yYSwgTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0
aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8
dGltZS5oPgorI2luY2x1ZGUgPHV0aWxpdHk+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNp
bmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1
ZGUgPHd0Zi9XYWxsVGltZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCisj
aWYgVVNFKENGKQorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNlbmRpZgorCisjaWYgVVNF
KENGKQordHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DRkRhdGEqIENGRGF0YVJlZjsKKyNlbmRpZgor
CitPQkpDX0NMQVNTIE5TU3RyaW5nOworCisjaWYgUExBVEZPUk0oV0lOKQordHlwZWRlZiB2b2lk
ICpIQU5ETEU7CisjZW5kaWYKKworI2lmIFVTRShHTElCKQordHlwZWRlZiBzdHJ1Y3QgX0dGaWxl
SU9TdHJlYW0gR0ZpbGVJT1N0cmVhbTsKKyNlbmRpZgorCituYW1lc3BhY2UgV1RGIHsKKworc3Ry
dWN0IEZpbGVNZXRhZGF0YTsKKworbmFtZXNwYWNlIEZpbGVTeXN0ZW1JbXBsIHsKKworLy8gUGxh
dGZvcm1GaWxlSGFuZGxlCisjaWYgVVNFKEdMSUIpICYmICFQTEFURk9STShXSU4pCit0eXBlZGVm
IEdGaWxlSU9TdHJlYW0qIFBsYXRmb3JtRmlsZUhhbmRsZTsKK2NvbnN0IFBsYXRmb3JtRmlsZUhh
bmRsZSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlID0gMDsKKyNlbGlmIFBMQVRGT1JNKFdJTikK
K3R5cGVkZWYgSEFORExFIFBsYXRmb3JtRmlsZUhhbmRsZTsKKy8vIEZJWE1FOiAtMSBpcyBJTlZB
TElEX0hBTkRMRV9WQUxVRSwgZGVmaW5lZCBpbiA8d2luYmFzZS5oPi4gQ2hyb21pdW0gdHJpZXMg
dG8KKy8vIGF2b2lkIHVzaW5nIFdpbmRvd3MgaGVhZGVycyBpbiBoZWFkZXJzLiBXZSdkIHJhdGhl
ciBtb3ZlIHRoaXMgaW50byB0aGUgLmNwcC4KK2NvbnN0IFBsYXRmb3JtRmlsZUhhbmRsZSBpbnZh
bGlkUGxhdGZvcm1GaWxlSGFuZGxlID0gcmVpbnRlcnByZXRfY2FzdDxIQU5ETEU+KC0xKTsKKyNl
bHNlCit0eXBlZGVmIGludCBQbGF0Zm9ybUZpbGVIYW5kbGU7Citjb25zdCBQbGF0Zm9ybUZpbGVI
YW5kbGUgaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSA9IC0xOworI2VuZGlmCisKK2VudW0gY2xh
c3MgRmlsZU9wZW5Nb2RlIHsKKyAgICBSZWFkLAorICAgIFdyaXRlLAorI2lmIE9TKERBUldJTikK
KyAgICBFdmVudHNPbmx5LAorI2VuZGlmCit9OworCitlbnVtIGNsYXNzIEZpbGVTZWVrT3JpZ2lu
IHsKKyAgICBCZWdpbm5pbmcsCisgICAgQ3VycmVudCwKKyAgICBFbmQsCit9OworCitlbnVtIGNs
YXNzIEZpbGVMb2NrTW9kZSB7CisgICAgU2hhcmVkID0gMSA8PCAwLAorICAgIEV4Y2x1c2l2ZSA9
IDEgPDwgMSwKKyAgICBOb25ibG9ja2luZyA9IDEgPDwgMiwKK307CisKK2VudW0gY2xhc3MgU2hv
dWxkRm9sbG93U3ltYm9saWNMaW5rcyB7IE5vLCBZZXMgfTsKKworV1RGX0VYUE9SVF9QUklWQVRF
IGJvb2wgZmlsZUV4aXN0cyhjb25zdCBTdHJpbmcmKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29s
IGRlbGV0ZUZpbGUoY29uc3QgU3RyaW5nJik7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBkZWxl
dGVFbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29s
IG1vdmVGaWxlKGNvbnN0IFN0cmluZyYgb2xkUGF0aCwgY29uc3QgU3RyaW5nJiBuZXdQYXRoKTsK
K1dURl9FWFBPUlRfUFJJVkFURSBib29sIGdldEZpbGVTaXplKGNvbnN0IFN0cmluZyYsIGxvbmcg
bG9uZyYgcmVzdWx0KTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGdldEZpbGVTaXplKFBsYXRm
b3JtRmlsZUhhbmRsZSwgbG9uZyBsb25nJiByZXN1bHQpOworV1RGX0VYUE9SVF9QUklWQVRFIE9w
dGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmKTsK
K1dURl9FWFBPUlRfUFJJVkFURSBPcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZUNyZWF0aW9uVGlt
ZShjb25zdCBTdHJpbmcmKTsgLy8gTm90IGFsbCBwbGF0Zm9ybXMgc3RvcmUgZmlsZSBjcmVhdGlv
biB0aW1lLgorV1RGX0VYUE9SVF9QUklWQVRFIE9wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1l
dGFkYXRhKGNvbnN0IFN0cmluZyYgcGF0aCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgT3B0aW9uYWw8
RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyhjb25zdCBTdHJpbmcm
IHBhdGgpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZmlsZUlzRGlyZWN0b3J5KGNvbnN0IFN0
cmluZyYsIFNob3VsZEZvbGxvd1N5bWJvbGljTGlua3MpOworV1RGX0VYUE9SVF9QUklWQVRFIFN0
cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBT
dHJpbmcmIGNvbXBvbmVudCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudHMoU3RyaW5nVmlldyBwYXRoLCBjb25zdCBWZWN0b3I8U3RyaW5nVmlldz4m
IGNvbXBvbmVudHMpOworV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBsYXN0Q29tcG9uZW50T2ZQ
YXRoSWdub3JpbmdUcmFpbGluZ1NsYXNoKGNvbnN0IFN0cmluZyYgcGF0aCk7CitXVEZfRVhQT1JU
X1BSSVZBVEUgYm9vbCBtYWtlQWxsRGlyZWN0b3JpZXMoY29uc3QgU3RyaW5nJiBwYXRoKTsKK1dU
Rl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgaG9tZURpcmVjdG9yeVBhdGgoKTsKK1dURl9FWFBPUlRf
UFJJVkFURSBTdHJpbmcgcGF0aEdldEZpbGVOYW1lKGNvbnN0IFN0cmluZyYpOworV1RGX0VYUE9S
VF9QUklWQVRFIFN0cmluZyBkaXJlY3RvcnlOYW1lKGNvbnN0IFN0cmluZyYpOworV1RGX0VYUE9S
VF9QUklWQVRFIGJvb2wgZ2V0Vm9sdW1lRnJlZVNwYWNlKGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90
Jik7CitXVEZfRVhQT1JUX1BSSVZBVEUgT3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlk
KGNvbnN0IENTdHJpbmcmKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGNyZWF0ZVN5bWJvbGlj
TGluayhjb25zdCBTdHJpbmcmIHRhcmdldFBhdGgsIGNvbnN0IFN0cmluZyYgc3ltYm9saWNMaW5r
UGF0aCk7CisKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNldE1ldGFkYXRhVVJMKGNvbnN0IFN0
cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVmZXJy
ZXIgPSB7IH0pOworCitib29sIGNhbkV4Y2x1ZGVGcm9tQmFja3VwKCk7IC8vIFJldHVybnMgdHJ1
ZSBpZiBhbnkgZmlsZSBjYW4gZXZlciBiZSBleGNsdWRlZCBmcm9tIGJhY2t1cC4KK2Jvb2wgZXhj
bHVkZUZyb21CYWNrdXAoY29uc3QgU3RyaW5nJik7IC8vIFJldHVybnMgdHJ1ZSBpZiBzdWNjZXNz
ZnVsLgorCitXVEZfRVhQT1JUX1BSSVZBVEUgVmVjdG9yPFN0cmluZz4gbGlzdERpcmVjdG9yeShj
b25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgZmlsdGVyID0gU3RyaW5nKCkpOworCitX
VEZfRVhQT1JUX1BSSVZBVEUgQ1N0cmluZyBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3Qg
U3RyaW5nJik7CitTdHJpbmcgc3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25z
dCBjaGFyKik7CisKK2lubGluZSBib29sIGlzSGFuZGxlVmFsaWQoY29uc3QgUGxhdGZvcm1GaWxl
SGFuZGxlJiBoYW5kbGUpIHsgcmV0dXJuIGhhbmRsZSAhPSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFu
ZGxlOyB9CisKKy8vIFByZWZpeCBpcyB3aGF0IHRoZSBmaWxlbmFtZSBzaG91bGQgYmUgcHJlZml4
ZWQgd2l0aCwgbm90IHRoZSBmdWxsIHBhdGguCitXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIG9w
ZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUm
KTsKK1dURl9FWFBPUlRfUFJJVkFURSBQbGF0Zm9ybUZpbGVIYW5kbGUgb3BlbkZpbGUoY29uc3Qg
U3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUpOworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgY2xv
c2VGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSYpOworLy8gUmV0dXJucyB0aGUgcmVzdWx0aW5nIG9m
ZnNldCBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZpbGUgaWYgc3VjY2Vzc2Z1bCwgLTEgb3Ro
ZXJ3aXNlLgorV1RGX0VYUE9SVF9QUklWQVRFIGxvbmcgbG9uZyBzZWVrRmlsZShQbGF0Zm9ybUZp
bGVIYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQsIEZpbGVTZWVrT3JpZ2luKTsKK2Jvb2wgdHJ1bmNh
dGVGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCk7CisvLyBSZXR1cm5z
IG51bWJlciBvZiBieXRlcyBhY3R1YWxseSByZWFkIGlmIHN1Y2Nlc3NmdWwsIC0xIG90aGVyd2lz
ZS4KK1dURl9FWFBPUlRfUFJJVkFURSBpbnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxl
LCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsKKy8vIFJldHVybnMgbnVtYmVyIG9mIGJ5
dGVzIGFjdHVhbGx5IHdyaXR0ZW4gaWYgc3VjY2Vzc2Z1bCwgLTEgb3RoZXJ3aXNlLgorV1RGX0VY
UE9SVF9QUklWQVRFIGludCByZWFkRnJvbUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBjaGFyKiBk
YXRhLCBpbnQgbGVuZ3RoKTsKKworV1RGX0VYUE9SVF9QUklWQVRFIFBsYXRmb3JtRmlsZUhhbmRs
ZSBvcGVuQW5kTG9ja0ZpbGUoY29uc3QgU3RyaW5nJiwgRmlsZU9wZW5Nb2RlLCBPcHRpb25TZXQ8
RmlsZUxvY2tNb2RlPiA9IEZpbGVMb2NrTW9kZTo6RXhjbHVzaXZlKTsKK1dURl9FWFBPUlRfUFJJ
VkFURSB2b2lkIHVubG9ja0FuZENsb3NlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUpOworCisvLyBB
cHBlbmRzIHRoZSBjb250ZW50cyBvZiB0aGUgZmlsZSBmb3VuZCBhdCAncGF0aCcgdG8gdGhlIG9w
ZW4gUGxhdGZvcm1GaWxlSGFuZGxlLgorLy8gUmV0dXJucyB0cnVlIGlmIHRoZSB3cml0ZSB3YXMg
c3VjY2Vzc2Z1bCwgZmFsc2UgaWYgaXQgd2FzIG5vdC4KK1dURl9FWFBPUlRfUFJJVkFURSBib29s
IGFwcGVuZEZpbGVDb250ZW50c1RvRmlsZUhhbmRsZShjb25zdCBTdHJpbmcmIHBhdGgsIFBsYXRm
b3JtRmlsZUhhbmRsZSYpOworCisvLyBIYXJkIGxpbmtzIGEgZmlsZSBpZiBwb3NzaWJsZSwgY29w
aWVzIGl0IGlmIG5vdC4KK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGhhcmRMaW5rT3JDb3B5Rmls
ZShjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbik7CisKKyNp
ZiBVU0UoRklMRV9MT0NLKQorV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgbG9ja0ZpbGUoUGxhdGZv
cm1GaWxlSGFuZGxlLCBPcHRpb25TZXQ8RmlsZUxvY2tNb2RlPik7CitXVEZfRVhQT1JUX1BSSVZB
VEUgYm9vbCB1bmxvY2tGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSk7CisjZW5kaWYKKworLy8gRW5j
b2RlIGEgc3RyaW5nIGZvciB1c2Ugd2l0aGluIGEgZmlsZSBuYW1lLgorV1RGX0VYUE9SVF9QUklW
QVRFIFN0cmluZyBlbmNvZGVGb3JGaWxlTmFtZShjb25zdCBTdHJpbmcmKTsKK1dURl9FWFBPUlRf
UFJJVkFURSBTdHJpbmcgZGVjb2RlRnJvbUZpbGVuYW1lKGNvbnN0IFN0cmluZyYpOworCitXVEZf
RVhQT1JUX1BSSVZBVEUgYm9vbCBmaWxlc0hhdmVTYW1lVm9sdW1lKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYpOworCisjaWYgVVNFKENGKQorV1RGX0VYUE9SVF9QUklWQVRFIFJldGFpblB0
cjxDRlVSTFJlZj4gcGF0aEFzVVJMKGNvbnN0IFN0cmluZyYpOworI2VuZGlmCisKKyNpZiBQTEFU
Rk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKK1N0cmluZyBmaWxlbmFtZUZvckRpc3BsYXkoY29u
c3QgU3RyaW5nJik7CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKFdJTikKK1dURl9FWFBPUlRfUFJJ
VkFURSBTdHJpbmcgbG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCk7CitXVEZfRVhQ
T1JUX1BSSVZBVEUgU3RyaW5nIHJvYW1pbmdVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCk7
CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKENPQ09BKQorV1RGX0VYUE9SVF9QUklWQVRFIE5TU3Ry
aW5nICpjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoTlNTdHJpbmcgKmRpcmVjdG9yeVByZWZpeCk7
CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBkZWxldGVOb25FbXB0eURpcmVjdG9yeShjb25zdCBT
dHJpbmcmKTsKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oV0lOX0NBSVJPKQorV1RGX0VYUE9SVF9Q
UklWQVRFIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoKTsKK1dURl9FWFBPUlRfUFJJ
VkFURSBib29sIGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpOworI2VuZGlm
CisKK1dURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcmVhbFBhdGgoY29uc3QgU3RyaW5nJik7CisK
K2NsYXNzIE1hcHBlZEZpbGVEYXRhIHsKK3B1YmxpYzoKKyAgICBNYXBwZWRGaWxlRGF0YSgpIHsg
fQorICAgIE1hcHBlZEZpbGVEYXRhKE1hcHBlZEZpbGVEYXRhJiYpOworICAgIFdURl9FWFBPUlRf
UFJJVkFURSBNYXBwZWRGaWxlRGF0YShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBib29sJiBzdWNj
ZXNzKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgfk1hcHBlZEZpbGVEYXRhKCk7CisgICAgTWFw
cGVkRmlsZURhdGEmIG9wZXJhdG9yPShNYXBwZWRGaWxlRGF0YSYmKTsKKworICAgIGV4cGxpY2l0
IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhIW1fZmlsZURhdGE7IH0KKyAgICBjb25z
dCB2b2lkKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9maWxlRGF0YTsgfQorICAgIHVuc2lnbmVk
IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2ZpbGVTaXplOyB9CisKK3ByaXZhdGU6CisgICAgdm9p
ZCogbV9maWxlRGF0YSB7IG51bGxwdHIgfTsKKyAgICB1bnNpZ25lZCBtX2ZpbGVTaXplIHsgMCB9
OworfTsKKworaW5saW5lIE1hcHBlZEZpbGVEYXRhOjpNYXBwZWRGaWxlRGF0YShNYXBwZWRGaWxl
RGF0YSYmIG90aGVyKQorICAgIDogbV9maWxlRGF0YShzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fZmls
ZURhdGEsIG51bGxwdHIpKQorICAgICwgbV9maWxlU2l6ZShzdGQ6OmV4Y2hhbmdlKG90aGVyLm1f
ZmlsZVNpemUsIDApKQoreworfQorCitpbmxpbmUgTWFwcGVkRmlsZURhdGEmIE1hcHBlZEZpbGVE
YXRhOjpvcGVyYXRvcj0oTWFwcGVkRmlsZURhdGEmJiBvdGhlcikKK3sKKyAgICBtX2ZpbGVEYXRh
ID0gc3RkOjpleGNoYW5nZShvdGhlci5tX2ZpbGVEYXRhLCBudWxscHRyKTsKKyAgICBtX2ZpbGVT
aXplID0gc3RkOjpleGNoYW5nZShvdGhlci5tX2ZpbGVTaXplLCAwKTsKKyAgICByZXR1cm4gKnRo
aXM7Cit9CisKK30gLy8gbmFtZXNwYWNlIEZpbGVTeXN0ZW1JbXBsCit9IC8vIG5hbWVzcGFjZSBX
VEYKKworbmFtZXNwYWNlIEZpbGVTeXN0ZW0gPSBXVEY6OkZpbGVTeXN0ZW1JbXBsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV1RGL3d0Zi9Q
bGF0Zm9ybUdUSy5jbWFrZQppbmRleCA2NzNmMDJkMGQ1OTY4NTQ1YWM4N2E4YThlNTdiMjc3MzRk
NzM5ODljLi43ZmVjMTJkYzJmYzMxNWJjNTE2OGYwMmIzYmY3NjQ3MGMwZDljYmFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtMjIsNiArMjIsNyBAQCBsaXN0KEFQUEVORCBXVEZfU09V
UkNFUwogICAgIGdlbmVyaWMvTWFpblRocmVhZEdlbmVyaWMuY3BwCiAgICAgZ2VuZXJpYy9Xb3Jr
UXVldWVHZW5lcmljLmNwcAogCisgICAgZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKICAgICBnbGli
L0dMaWJVdGlsaXRpZXMuY3BwCiAgICAgZ2xpYi9HUmVmUHRyLmNwcAogICAgIGdsaWIvUnVuTG9v
cEdMaWIuY3BwCkBAIC01NSw1ICs1Niw2IEBAIGxpc3QoQVBQRU5EIFdURl9MSUJSQVJJRVMKICkK
IAogbGlzdChBUFBFTkQgV1RGX1NZU1RFTV9JTkNMVURFX0RJUkVDVE9SSUVTCisgICAgJHtHSU9f
VU5JWF9JTkNMVURFX0RJUlN9CiAgICAgJHtHTElCX0lOQ0xVREVfRElSU30KICkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dURi93dGYvUGxh
dGZvcm1NYWMuY21ha2UKaW5kZXggZmMxZTU3YjljYjI2YjZmMmI2YWJhNjE0M2JkMThhZWJiYjE2
YjUzNC4uMGUzZTE0MTYwOTEyYjc4NjE3NzM0MzUwYTkyNWQ5OWRiYTJjZGEwMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dURi93dGYv
UGxhdGZvcm1NYWMuY21ha2UKQEAgLTMyLDYgKzMyLDggQEAgbGlzdChBUFBFTkQgV1RGX1BVQkxJ
Q19IRUFERVJTCiAgICAgc3BpL2Rhcndpbi9YUENTUEkuaAogICAgIHNwaS9kYXJ3aW4vZHlsZFNQ
SS5oCiAKKyAgICBzcGkvbWFjL01ldGFkYXRhU1BJLmgKKwogICAgIHRleHQvY2YvVGV4dEJyZWFr
SXRlcmF0b3JDRi5oCiApCiAKQEAgLTQyLDYgKzQ0LDcgQEAgbGlzdChBUFBFTkQgV1RGX1NPVVJD
RVMKICAgICBTY2hlZHVsZVBhaXJNYWMubW0KIAogICAgIGNmL0NGVVJMRXh0cmFzLmNwcAorICAg
IGNmL0ZpbGVTeXN0ZW1DRi5jcHAKICAgICBjZi9MYW5ndWFnZUNGLmNwcAogICAgIGNmL1J1bkxv
b3BDRi5jcHAKICAgICBjZi9VUkxDRi5jcHAKQEAgLTQ5LDYgKzUyLDcgQEAgbGlzdChBUFBFTkQg
V1RGX1NPVVJDRVMKICAgICBjb2NvYS9BdXRvZHJhaW5lZFBvb2wuY3BwCiAgICAgY29jb2EvQ1BV
VGltZUNvY29hLmNwcAogICAgIGNvY29hL0VudGl0bGVtZW50cy5tbQorICAgIGNvY29hL0ZpbGVT
eXN0ZW1Db2NvYS5tbQogICAgIGNvY29hL01hY2hTZW5kUmlnaHQuY3BwCiAgICAgY29jb2EvTWFp
blRocmVhZENvY29hLm1tCiAgICAgY29jb2EvTWVtb3J5Rm9vdHByaW50Q29jb2EuY3BwCkBAIC01
OCw2ICs2Miw5IEBAIGxpc3QoQVBQRU5EIFdURl9TT1VSQ0VTCiAgICAgY29jb2EvV29ya1F1ZXVl
Q29jb2EuY3BwCiAKICAgICBtYWMvRGVwcmVjYXRlZFN5bWJvbHNVc2VkQnlTYWZhcmkubW0KKyAg
ICBtYWMvRmlsZVN5c3RlbU1hYy5tbQorCisgICAgcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcAog
CiAgICAgdGV4dC9jZi9BdG9taWNTdHJpbmdJbXBsQ0YuY3BwCiAgICAgdGV4dC9jZi9TdHJpbmdD
Ri5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtUGxheVN0YXRpb24uY21h
a2UgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtlCmluZGV4IGI5N2Zl
YzQwZWQzMGIxNzdiMmY1MzViNjIxNjBlZjFlZWUyZGU1NmUuLjNlOWU3NWM5MjhhNmM5NDYwNWI0
YmZjYWE3ZmJiMmI5ZjQyZjgzOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3Jt
UGxheVN0YXRpb24uY21ha2UKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1QbGF5U3RhdGlv
bi5jbWFrZQpAQCAtNSw2ICs1LDggQEAgbGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKICAgICBnZW5l
cmljL1J1bkxvb3BHZW5lcmljLmNwcAogICAgIGdlbmVyaWMvV29ya1F1ZXVlR2VuZXJpYy5jcHAK
IAorICAgIHBvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKwogICAgIHRleHQvdW5peC9UZXh0QnJl
YWtJdGVyYXRvckludGVybmFsSUNVVW5peC5jcHAKIAogICAgIHVuaXgvQ1BVVGltZVVuaXguY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdQRS5jbWFrZSBiL1NvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtV1BFLmNtYWtlCmluZGV4IDQ3M2NmZDYwMjZiMDY1MmMyZjAyZDJiMjg1
MzkyYjFkODAyZjBiYmMuLjA4NmFkZDNhYTkxOWZjNDkyMzlkNzFjMWNjODY4NWM1ZmM3MzliZDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV1BFLmNtYWtlCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL1BsYXRmb3JtV1BFLmNtYWtlCkBAIC0xNiw2ICsxNiw3IEBAIGxpc3QoQVBQRU5E
IFdURl9TT1VSQ0VTCiAgICAgZ2VuZXJpYy9NYWluVGhyZWFkR2VuZXJpYy5jcHAKICAgICBnZW5l
cmljL1dvcmtRdWV1ZUdlbmVyaWMuY3BwCiAKKyAgICBnbGliL0ZpbGVTeXN0ZW1HbGliLmNwcAog
ICAgIGdsaWIvR0xpYlV0aWxpdGllcy5jcHAKICAgICBnbGliL0dSZWZQdHIuY3BwCiAgICAgZ2xp
Yi9SdW5Mb29wR0xpYi5jcHAKQEAgLTQwLDUgKzQxLDYgQEAgbGlzdChBUFBFTkQgV1RGX0xJQlJB
UklFUwogKQogCiBsaXN0KEFQUEVORCBXVEZfU1lTVEVNX0lOQ0xVREVfRElSRUNUT1JJRVMKKyAg
ICAke0dJT19VTklYX0lOQ0xVREVfRElSU30KICAgICAke0dMSUJfSU5DTFVERV9ESVJTfQogKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1XaW4uY21ha2UgYi9Tb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybVdpbi5jbWFrZQppbmRleCAyYjhiNWY4MjcwZWI1ZjI0Njc2MDcyZGQxMjQ1
NzZkYTkzMDFmMGVhLi5iNmMwYWM2ZjRkZTVlMDVmMjdkNGQ5YWMwZmZiZDVjYzQwOTdhNmUzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdpbi5jbWFrZQorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9QbGF0Zm9ybVdpbi5jbWFrZQpAQCAtMTIsMTQgKzEyLDIwIEBAIGxpc3QoQVBQRU5E
IFdURl9TT1VSQ0VTCiAKICAgICB3aW4vQ1BVVGltZVdpbi5jcHAKICAgICB3aW4vRGJnSGVscGVy
V2luLmNwcAorICAgIHdpbi9GaWxlU3lzdGVtV2luLmNwcAogICAgIHdpbi9MYW5ndWFnZVdpbi5j
cHAKICAgICB3aW4vTWFpblRocmVhZFdpbi5jcHAKICAgICB3aW4vTWVtb3J5Rm9vdHByaW50V2lu
LmNwcAogICAgIHdpbi9NZW1vcnlQcmVzc3VyZUhhbmRsZXJXaW4uY3BwCisgICAgd2luL1BhdGhX
YWxrZXIuY3BwCiAgICAgd2luL1J1bkxvb3BXaW4uY3BwCiAgICAgd2luL1dvcmtRdWV1ZVdpbi5j
cHAKICkKIAorbGlzdChBUFBFTkQgV1RGX0xJQlJBUklFUworICAgIHNobHdhcGkKKykKKwogaWYg
KFVTRV9DRikKICAgICBsaXN0KEFQUEVORCBXVEZfUFVCTElDX0hFQURFUlMKICAgICAgICAgY2Yv
Q0ZVUkxFeHRyYXMuaApAQCAtMjksNiArMzUsNyBAQCBpZiAoVVNFX0NGKQogICAgICkKICAgICBs
aXN0KEFQUEVORCBXVEZfU09VUkNFUwogICAgICAgICBjZi9DRlVSTEV4dHJhcy5jcHAKKyAgICAg
ICAgY2YvRmlsZVN5c3RlbUNGLmNwcAogICAgICAgICBjZi9VUkxDRi5jcHAKIAogICAgICAgICB0
ZXh0L2NmL0F0b21pY1N0cmluZ0ltcGxDRi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L2NmL0ZpbGVTeXN0ZW1DRi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9jZi9GaWxlU3lzdGVtQ0YuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjcxMmQ2NWZjYWQyOTZiMzk2M2Y2MGE0NDk0YjZkN2U5MmQ0YWM1MGMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jZi9GaWxlU3lzdGVtQ0YuY3BwCkBAIC0w
LDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMTEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhl
IG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0
cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+
CisKKyNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9DRlN0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXVEYgeworCitDU3RyaW5nIEZpbGVTeXN0
ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAg
UmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZlN0cmluZyA9IHBhdGguY3JlYXRlQ0ZTdHJpbmcoKTsK
KworICAgIGlmICghY2ZTdHJpbmcpCisgICAgICAgIHJldHVybiBDU3RyaW5nKCk7CisKKyAgICBD
RkluZGV4IHNpemUgPSBDRlN0cmluZ0dldE1heGltdW1TaXplT2ZGaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oY2ZTdHJpbmcuZ2V0KCkpOworCisgICAgVmVjdG9yPGNoYXI+IGJ1ZmZlcihzaXplKTsK
KworICAgIGlmICghQ0ZTdHJpbmdHZXRGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY2ZTdHJpbmcu
Z2V0KCksIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpKSB7CisgICAgICAgIExPR19FUlJP
UigiRmFpbGVkIHRvIGdldCBmaWxlc3lzdGVtIHJlcHJlc2VudGF0aW9uIHRvIGNyZWF0ZSBDU3Ry
aW5nIGZyb20gY2ZTdHJpbmciKTsKKyAgICAgICAgcmV0dXJuIENTdHJpbmcoKTsKKyAgICB9CisK
KyAgICByZXR1cm4gQ1N0cmluZyhidWZmZXIuZGF0YSgpLCBzdHJsZW4oYnVmZmVyLmRhdGEoKSkp
OworfQorCitTdHJpbmcgRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihjb25zdCBjaGFyKiBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24pCit7CisgICAgcmV0dXJu
IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGtDRkFs
bG9jYXRvckRlZmF1bHQsIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbikpLmdldCgpOworfQorCitS
ZXRhaW5QdHI8Q0ZVUkxSZWY+IEZpbGVTeXN0ZW06OnBhdGhBc1VSTChjb25zdCBTdHJpbmcmIHBh
dGgpCit7CisgICAgQ0ZVUkxQYXRoU3R5bGUgcGF0aFN0eWxlOworI2lmIFBMQVRGT1JNKFdJTikK
KyAgICBwYXRoU3R5bGUgPSBrQ0ZVUkxXaW5kb3dzUGF0aFN0eWxlOworI2Vsc2UKKyAgICBwYXRo
U3R5bGUgPSBrQ0ZVUkxQT1NJWFBhdGhTdHlsZTsKKyNlbmRpZgorICAgIHJldHVybiBhZG9wdENG
KENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKDAsIHBhdGguY3JlYXRlQ0ZTdHJpbmcoKS5n
ZXQoKSwgcGF0aFN0eWxlLCBGQUxTRSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL0ZpbGVTeXN0ZW1Db2NvYS5tbSBiL1NvdXJjZS9X
VEYvd3RmL2NvY29hL0ZpbGVTeXN0ZW1Db2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMTIyMjAwNjkyYjk5
YTQxZDhlY2U5YjZlNmMyZThmMTEyMDU4YzY1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dU
Ri93dGYvY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tCkBAIC0wLDAgKzEsMTQzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA3LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAo
IkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9t
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29u
ZmlnLmgiCisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgorCitAaW50ZXJmYWNlIFdURldlYkZp
bGVNYW5hZ2VyRGVsZWdhdGUgOiBOU09iamVjdCA8TlNGaWxlTWFuYWdlckRlbGVnYXRlPgorQGVu
ZAorCitAaW1wbGVtZW50YXRpb24gV1RGV2ViRmlsZU1hbmFnZXJEZWxlZ2F0ZQorCistIChCT09M
KWZpbGVNYW5hZ2VyOihOU0ZpbGVNYW5hZ2VyICopZmlsZU1hbmFnZXIgc2hvdWxkUHJvY2VlZEFm
dGVyRXJyb3I6KE5TRXJyb3IgKillcnJvciBtb3ZpbmdJdGVtQXRVUkw6KE5TVVJMICopc3JjVVJM
IHRvVVJMOihOU1VSTCAqKWRzdFVSTAoreworICAgIFVOVVNFRF9QQVJBTShmaWxlTWFuYWdlcik7
CisgICAgVU5VU0VEX1BBUkFNKHNyY1VSTCk7CisgICAgVU5VU0VEX1BBUkFNKGRzdFVSTCk7Cisg
ICAgcmV0dXJuIGVycm9yLmNvZGUgPT0gTlNGaWxlV3JpdGVGaWxlRXhpc3RzRXJyb3I7Cit9CisK
K0BlbmQKKworbmFtZXNwYWNlIFdURiB7CisKK25hbWVzcGFjZSBGaWxlU3lzdGVtSW1wbCB7CisK
K1N0cmluZyBob21lRGlyZWN0b3J5UGF0aCgpCit7CisgICAgcmV0dXJuIE5TSG9tZURpcmVjdG9y
eSgpOworfQorCitTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgs
IFBsYXRmb3JtRmlsZUhhbmRsZSYgcGxhdGZvcm1GaWxlSGFuZGxlKQoreworICAgIHBsYXRmb3Jt
RmlsZUhhbmRsZSA9IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7CisKKyAgICBWZWN0b3I8Y2hh
cj4gdGVtcG9yYXJ5RmlsZVBhdGgoUEFUSF9NQVgpOworICAgIGlmICghY29uZnN0cihfQ1NfREFS
V0lOX1VTRVJfVEVNUF9ESVIsIHRlbXBvcmFyeUZpbGVQYXRoLmRhdGEoKSwgdGVtcG9yYXJ5Rmls
ZVBhdGguc2l6ZSgpKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgLy8gU2hyaW5r
IHRoZSB2ZWN0b3IuCisgICAgdGVtcG9yYXJ5RmlsZVBhdGguc2hyaW5rKHN0cmxlbih0ZW1wb3Jh
cnlGaWxlUGF0aC5kYXRhKCkpKTsKKworICAgIC8vIEZJWE1FOiBDaGFuZ2UgdG8gYSBydW50aW1l
IGFzc2VydGlvbiB0aGF0IHRoZSBwYXRoIGVuZHMgd2l0aCBhIHNsYXNoIG9uY2UgPHJkYXI6Ly9w
cm9ibGVtLzIzNTc5MDc3PiBpcworICAgIC8vIGZpeGVkIGluIGFsbCBpT1MgU2ltdWxhdG9yIHZl
cnNpb25zIHRoYXQgd2UgdXNlLgorICAgIGlmICh0ZW1wb3JhcnlGaWxlUGF0aC5sYXN0KCkgIT0g
Jy8nKQorICAgICAgICB0ZW1wb3JhcnlGaWxlUGF0aC5hcHBlbmQoJy8nKTsKKworICAgIC8vIEFw
cGVuZCB0aGUgZmlsZSBuYW1lLgorICAgIENTdHJpbmcgcHJlZml4VXRmOCA9IHByZWZpeC51dGY4
KCk7CisgICAgdGVtcG9yYXJ5RmlsZVBhdGguYXBwZW5kKHByZWZpeFV0ZjguZGF0YSgpLCBwcmVm
aXhVdGY4Lmxlbmd0aCgpKTsKKyAgICB0ZW1wb3JhcnlGaWxlUGF0aC5hcHBlbmQoIlhYWFhYWCIs
IDYpOworICAgIHRlbXBvcmFyeUZpbGVQYXRoLmFwcGVuZCgnXDAnKTsKKworICAgIHBsYXRmb3Jt
RmlsZUhhbmRsZSA9IG1rc3RlbXAodGVtcG9yYXJ5RmlsZVBhdGguZGF0YSgpKTsKKyAgICBpZiAo
cGxhdGZvcm1GaWxlSGFuZGxlID09IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCisgICAgICAg
IHJldHVybiBTdHJpbmcoKTsKKworICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KHRlbXBvcmFy
eUZpbGVQYXRoLmRhdGEoKSk7Cit9CisKK2Jvb2wgbW92ZUZpbGUoY29uc3QgU3RyaW5nJiBvbGRQ
YXRoLCBjb25zdCBTdHJpbmcmIG5ld1BhdGgpCit7CisgICAgLy8gT3ZlcndyaXRlIGV4aXN0aW5n
IGZpbGVzLgorICAgIGF1dG8gbWFuYWdlciA9IGFkb3B0TlMoW1tOU0ZpbGVNYW5hZ2VyIGFsbG9j
XSBpbml0XSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tXVEZXZWJGaWxlTWFuYWdl
ckRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgW21hbmFnZXIgc2V0RGVsZWdhdGU6ZGVsZWdh
dGUuZ2V0KCldOworCisgICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7CisgICAgYm9vbCBzdWNjZXNz
ID0gW21hbmFnZXIgbW92ZUl0ZW1BdFVSTDpbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOm9sZFBhdGhd
IHRvVVJMOltOU1VSTCBmaWxlVVJMV2l0aFBhdGg6bmV3UGF0aF0gZXJyb3I6JmVycm9yXTsKKyAg
ICBpZiAoIXN1Y2Nlc3MpCisgICAgICAgIE5TTG9nKEAiRXJyb3IgaW4gbW92ZUZpbGU6ICVAIiwg
ZXJyb3IpOworICAgIHJldHVybiBzdWNjZXNzOworfQorCitib29sIGdldFZvbHVtZUZyZWVTcGFj
ZShjb25zdCBTdHJpbmcmIHBhdGgsIHVpbnQ2NF90JiBmcmVlU3BhY2UpCit7CisgICAgTlNEaWN0
aW9uYXJ5ICpmaWxlU3lzdGVtQXR0cmlidXRlc0RpY3Rpb25hcnkgPSBbW05TRmlsZU1hbmFnZXIg
ZGVmYXVsdE1hbmFnZXJdIGF0dHJpYnV0ZXNPZkZpbGVTeXN0ZW1Gb3JQYXRoOihOU1N0cmluZyAq
KXBhdGggZXJyb3I6TlVMTF07CisgICAgaWYgKCFmaWxlU3lzdGVtQXR0cmlidXRlc0RpY3Rpb25h
cnkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBmcmVlU3BhY2UgPSBbW2ZpbGVTeXN0ZW1B
dHRyaWJ1dGVzRGljdGlvbmFyeSBvYmplY3RGb3JLZXk6TlNGaWxlU3lzdGVtRnJlZVNpemVdIHVu
c2lnbmVkTG9uZ0xvbmdWYWx1ZV07CisgICAgcmV0dXJuIHRydWU7Cit9CisKK05TU3RyaW5nICpj
cmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoTlNTdHJpbmcgKmRpcmVjdG9yeVByZWZpeCkKK3sKKyAg
ICBOU1N0cmluZyAqdGVtcERpcmVjdG9yeSA9IE5TVGVtcG9yYXJ5RGlyZWN0b3J5KCk7CisgICAg
aWYgKCF0ZW1wRGlyZWN0b3J5IHx8ICFbdGVtcERpcmVjdG9yeSBsZW5ndGhdKQorICAgICAgICBy
ZXR1cm4gbmlsOworCisgICAgaWYgKCFkaXJlY3RvcnlQcmVmaXggfHwgIVtkaXJlY3RvcnlQcmVm
aXggbGVuZ3RoXSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIE5TU3RyaW5nICp0ZW1wRGly
ZWN0b3J5Q29tcG9uZW50ID0gW2RpcmVjdG9yeVByZWZpeCBzdHJpbmdCeUFwcGVuZGluZ1N0cmlu
ZzpAIi1YWFhYWFhYWCJdOworICAgIGNvbnN0IGNoYXIqIHRlbXBEaXJlY3RvcnlDU3RyaW5nID0g
W1t0ZW1wRGlyZWN0b3J5IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDp0ZW1wRGlyZWN0
b3J5Q29tcG9uZW50XSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb25dOworICAgIGlmICghdGVtcERp
cmVjdG9yeUNTdHJpbmcpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBjb25zdCBzaXplX3Qg
bGVuZ3RoID0gc3RybGVuKHRlbXBEaXJlY3RvcnlDU3RyaW5nKTsKKyAgICBBU1NFUlQobGVuZ3Ro
IDw9IE1BWFBBVEhMRU4pOworICAgIGlmIChsZW5ndGggPiBNQVhQQVRITEVOKQorICAgICAgICBy
ZXR1cm4gbmlsOworCisgICAgY29uc3Qgc2l6ZV90IGxlbmd0aFBsdXNOdWxsVGVybWluYXRvciA9
IGxlbmd0aCArIDE7CisgICAgVmVjdG9yPGNoYXIsIE1BWFBBVEhMRU4gKyAxPiBwYXRoKGxlbmd0
aFBsdXNOdWxsVGVybWluYXRvcik7CisgICAgbWVtY3B5KHBhdGguZGF0YSgpLCB0ZW1wRGlyZWN0
b3J5Q1N0cmluZywgbGVuZ3RoUGx1c051bGxUZXJtaW5hdG9yKTsKKworICAgIGlmICghbWtkdGVt
cChwYXRoLmRhdGEoKSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICByZXR1cm4gW1tOU0Zp
bGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBzdHJpbmdXaXRoRmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uOnBhdGguZGF0YSgpIGxlbmd0aDpsZW5ndGhdOworfQorCitib29sIGRlbGV0ZU5vbkVtcHR5
RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICByZXR1cm4gW1tOU0ZpbGVNYW5h
Z2VyIGRlZmF1bHRNYW5hZ2VyXSByZW1vdmVJdGVtQXRQYXRoOnBhdGggZXJyb3I6bmlsXTsKK30K
KworfSAvLyBuYW1lc3BhY2UgRmlsZVN5c3RlbUltcGwKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2Uv
V1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jM2VjOTlhM2QxYjQ5
MWViMTk2MzFlMDA1OGE0MWQxYTc1MTZmZTVjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTAsMCArMSw0NjkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDcsIDIwMDkgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIKKyAqIENv
cHlyaWdodCAoQykgMjAwOCBDb2xsYWJvcmEsIEx0ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMp
IDIwMTAgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICog
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgorCisjaW5jbHVkZSA8
Z2lvL2dmaWxlZGVzY3JpcHRvcmJhc2VkLmg+CisjaW5jbHVkZSA8Z2lvL2dpby5oPgorI2luY2x1
ZGUgPGdsaWIuaD4KKyNpbmNsdWRlIDxnbGliL2dzdGRpby5oPgorI2luY2x1ZGUgPHN5cy9maWxl
Lmg+CisjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZU1ldGFk
YXRhLmg+CisjaW5jbHVkZSA8d3RmL1VVSUQuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HTGliVXRp
bGl0aWVzLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9n
bGliL0dVbmlxdWVQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgorCituYW1lc3BhY2UgV1RGIHsKKworbmFtZXNwYWNlIEZpbGVTeXN0ZW1JbXBsIHsKKwor
LyogT24gbGludXggZmlsZSBuYW1lcyBhcmUganVzdCByYXcgYnl0ZXMsIHNvIGFsc28gc3RyaW5n
cyB0aGF0IGNhbm5vdCBiZSBlbmNvZGVkIGluIGFueSB3YXkKKyAqIGFyZSB2YWxpZCBmaWxlIG5h
bWVzLiBUaGlzIG1lYW4gdGhhdCB3ZSBjYW5ub3QganVzdCBzdG9yZSBhIGZpbGUgbmFtZSBhcy1p
cyBpbiBhIFN0cmluZworICogYnV0IHdlIGhhdmUgdG8gZXNjYXBlIGl0LgorICogT24gV2luZG93
cyB0aGUgR0xpYiBmaWxlIG5hbWUgZW5jb2RpbmcgaXMgYWx3YXlzIFVURi04IHNvIHdlIGNhbiBv
cHRpbWl6ZSB0aGlzIGNhc2UuICovCitTdHJpbmcgc3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihjb25zdCBjaGFyKiBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24pCit7CisgICAgaWYg
KCFmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24pCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKwor
I2lmIE9TKFdJTkRPV1MpCisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoZmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKTsKKyNlbHNlCisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZXNjYXBlZFN0cmlu
ZyhnX3VyaV9lc2NhcGVfc3RyaW5nKGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbiwgIi86IiwgRkFM
U0UpKTsKKyAgICByZXR1cm4gZXNjYXBlZFN0cmluZy5nZXQoKTsKKyNlbmRpZgorfQorCitzdGF0
aWMgR1VuaXF1ZVB0cjxjaGFyPiB1bmVzY2FwZWRGaWxlbmFtZShjb25zdCBTdHJpbmcmIHBhdGgp
Cit7CisgICAgaWYgKHBhdGguaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyNp
ZiBPUyhXSU5ET1dTKQorICAgIHJldHVybiBHVW5pcXVlUHRyPGNoYXI+KGdfc3RyZHVwKHBhdGgu
dXRmOCgpLmRhdGEoKSkpOworI2Vsc2UKKyAgICByZXR1cm4gR1VuaXF1ZVB0cjxjaGFyPihnX3Vy
aV91bmVzY2FwZV9zdHJpbmcocGF0aC51dGY4KCkuZGF0YSgpLCBudWxscHRyKSk7CisjZW5kaWYK
K30KKworQ1N0cmluZyBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBwYXRo
KQoreworI2lmIE9TKFdJTkRPV1MpCisgICAgcmV0dXJuIHBhdGgudXRmOCgpOworI2Vsc2UKKyAg
ICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGgpOwor
ICAgIHJldHVybiBmaWxlbmFtZS5nZXQoKTsKKyNlbmRpZgorfQorCisvLyBDb252ZXJ0cyBhIHN0
cmluZyB0byBzb21ldGhpbmcgc3VpdGFibGUgdG8gYmUgZGlzcGxheWVkIHRvIHRoZSB1c2VyLgor
U3RyaW5nIGZpbGVuYW1lRm9yRGlzcGxheShjb25zdCBTdHJpbmcmIHN0cmluZykKK3sKKyNpZiBP
UyhXSU5ET1dTKQorICAgIHJldHVybiBzdHJpbmc7CisjZWxzZQorICAgIEdVbmlxdWVQdHI8Z2No
YXI+IGZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUoc3RyaW5nKTsKKyAgICBpZiAoIWZpbGVu
YW1lKQorICAgICAgICByZXR1cm4gc3RyaW5nOworCisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZGlz
cGxheShnX2ZpbGVuYW1lX3RvX3V0ZjgoZmlsZW5hbWUuZ2V0KCksIC0xLCBudWxscHRyLCBudWxs
cHRyLCBudWxscHRyKSk7CisgICAgaWYgKCFkaXNwbGF5KQorICAgICAgICByZXR1cm4gc3RyaW5n
OworCisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoZGlzcGxheS5nZXQoKSk7CisjZW5kaWYK
K30KKworYm9vbCBmaWxlRXhpc3RzKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBHVW5pcXVl
UHRyPGdjaGFyPiBmaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGgpOworICAgIHJldHVy
biBmaWxlbmFtZSA/IGdfZmlsZV90ZXN0KGZpbGVuYW1lLmdldCgpLCBHX0ZJTEVfVEVTVF9FWElT
VFMpIDogZmFsc2U7Cit9CisKK2Jvb2wgZGVsZXRlRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCit7
CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShwYXRo
KTsKKyAgICByZXR1cm4gZmlsZW5hbWUgPyBnX3JlbW92ZShmaWxlbmFtZS5nZXQoKSkgIT0gLTEg
OiBmYWxzZTsKK30KKworYm9vbCBkZWxldGVFbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBh
dGgpCit7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFt
ZShwYXRoKTsKKyAgICByZXR1cm4gZmlsZW5hbWUgPyBnX3JtZGlyKGZpbGVuYW1lLmdldCgpKSAh
PSAtMSA6IGZhbHNlOworfQorCitzdGF0aWMgYm9vbCBnZXRGaWxlU3RhdChjb25zdCBTdHJpbmcm
IHBhdGgsIEdTdGF0QnVmKiBzdGF0QnVmZmVyKQoreworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZp
bGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUocGF0aCk7CisgICAgaWYgKCFmaWxlbmFtZSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGdfc3RhdChmaWxlbmFtZS5nZXQoKSwg
c3RhdEJ1ZmZlcikgIT0gLTE7Cit9CisKK3N0YXRpYyBib29sIGdldEZpbGVMU3RhdChjb25zdCBT
dHJpbmcmIHBhdGgsIEdTdGF0QnVmKiBzdGF0QnVmZmVyKQoreworICAgIEdVbmlxdWVQdHI8Z2No
YXI+IGZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUocGF0aCk7CisgICAgaWYgKCFmaWxlbmFt
ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGdfbHN0YXQoZmlsZW5hbWUu
Z2V0KCksIHN0YXRCdWZmZXIpICE9IC0xOworfQorCitib29sIGdldEZpbGVTaXplKGNvbnN0IFN0
cmluZyYgcGF0aCwgbG9uZyBsb25nJiByZXN1bHRTaXplKQoreworICAgIEdTdGF0QnVmIHN0YXRS
ZXN1bHQ7CisgICAgaWYgKCFnZXRGaWxlU3RhdChwYXRoLCAmc3RhdFJlc3VsdCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIHJlc3VsdFNpemUgPSBzdGF0UmVzdWx0LnN0X3NpemU7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgZ2V0RmlsZVNpemUoUGxhdGZvcm1GaWxlSGFuZGxl
IGhhbmRsZSwgbG9uZyBsb25nJiByZXN1bHRTaXplKQoreworICAgIGF1dG8gaW5mbyA9IGdfZmls
ZV9pb19zdHJlYW1fcXVlcnlfaW5mbyhoYW5kbGUsIEdfRklMRV9BVFRSSUJVVEVfU1RBTkRBUkRf
U0laRSwgbnVsbHB0ciwgbnVsbHB0cik7CisgICAgaWYgKCFpbmZvKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICByZXN1bHRTaXplID0gZ19maWxlX2luZm9fZ2V0X3NpemUoaW5mbyk7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK09wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlQ3JlYXRpb25U
aW1lKGNvbnN0IFN0cmluZyYpCit7CisgICAgLy8gRklYTUU6IElzIHRoZXJlIGEgd2F5IHRvIHJl
dHJpZXZlIGZpbGUgY3JlYXRpb24gdGltZSB3aXRoIEd0ayBvbiBwbGF0Zm9ybXMgdGhhdCBzdXBw
b3J0IGl0PworICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cit9CisKK09wdGlvbmFsPFdhbGxUaW1l
PiBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgR1N0
YXRCdWYgc3RhdFJlc3VsdDsKKyAgICBpZiAoIWdldEZpbGVTdGF0KHBhdGgsICZzdGF0UmVzdWx0
KSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiBXYWxsVGltZTo6
ZnJvbVJhd1NlY29uZHMoc3RhdFJlc3VsdC5zdF9tdGltZSk7Cit9CisKK3N0YXRpYyBGaWxlTWV0
YWRhdGE6OlR5cGUgdG9GaWxlTWV0YXRhVHlwZShHU3RhdEJ1ZiBzdGF0UmVzdWx0KQoreworICAg
IGlmIChTX0lTRElSKHN0YXRSZXN1bHQuc3RfbW9kZSkpCisgICAgICAgIHJldHVybiBGaWxlTWV0
YWRhdGE6OlR5cGU6OkRpcmVjdG9yeTsKKyAgICBpZiAoU19JU0xOSyhzdGF0UmVzdWx0LnN0X21v
ZGUpKQorICAgICAgICByZXR1cm4gRmlsZU1ldGFkYXRhOjpUeXBlOjpTeW1ib2xpY0xpbms7Cisg
ICAgcmV0dXJuIEZpbGVNZXRhZGF0YTo6VHlwZTo6RmlsZTsKK30KKworc3RhdGljIE9wdGlvbmFs
PEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhVXNpbmdGdW5jdGlvbihjb25zdCBTdHJpbmcmIHBh
dGgsIGJvb2wgKCpzdGF0RnVuYykoY29uc3QgU3RyaW5nJiwgR1N0YXRCdWYqKSkKK3sKKyAgICBH
U3RhdEJ1ZiBzdGF0UmVzdWx0OworICAgIGlmICghc3RhdEZ1bmMocGF0aCwgJnN0YXRSZXN1bHQp
KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgU3RyaW5nIGZpbGVuYW1lID0g
cGF0aEdldEZpbGVOYW1lKHBhdGgpOworICAgIGJvb2wgaXNIaWRkZW4gPSAhZmlsZW5hbWUuaXNF
bXB0eSgpICYmIGZpbGVuYW1lWzBdID09ICcuJzsKKworICAgIHJldHVybiBGaWxlTWV0YWRhdGEg
eworICAgICAgICBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoc3RhdFJlc3VsdC5zdF9tdGltZSks
CisgICAgICAgIHN0YXRSZXN1bHQuc3Rfc2l6ZSwKKyAgICAgICAgaXNIaWRkZW4sCisgICAgICAg
IHRvRmlsZU1ldGF0YVR5cGUoc3RhdFJlc3VsdCkKKyAgICB9OworfQorCitPcHRpb25hbDxGaWxl
TWV0YWRhdGE+IGZpbGVNZXRhZGF0YShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgcmV0dXJu
IGZpbGVNZXRhZGF0YVVzaW5nRnVuY3Rpb24ocGF0aCwgJmdldEZpbGVMU3RhdCk7Cit9CisKK09w
dGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3MoY29uc3Qg
U3RyaW5nJiBwYXRoKQoreworICAgIHJldHVybiBmaWxlTWV0YWRhdGFVc2luZ0Z1bmN0aW9uKHBh
dGgsICZnZXRGaWxlU3RhdCk7Cit9CisKK1N0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
Y29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGNvbXBvbmVudCkKK3sKKyAgICBpZiAo
cGF0aC5lbmRzV2l0aChHX0RJUl9TRVBBUkFUT1JfUykpCisgICAgICAgIHJldHVybiBwYXRoICsg
Y29tcG9uZW50OworICAgIHJldHVybiBwYXRoICsgR19ESVJfU0VQQVJBVE9SX1MgKyBjb21wb25l
bnQ7Cit9CisKK1N0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKFN0cmluZ1ZpZXcgcGF0
aCwgY29uc3QgVmVjdG9yPFN0cmluZ1ZpZXc+JiBjb21wb25lbnRzKQoreworICAgIFN0cmluZ0J1
aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZChwYXRoKTsKKyAgICBmb3IgKGF1dG8m
IGNvbXBvbmVudCA6IGNvbXBvbmVudHMpIHsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoR19ESVJf
U0VQQVJBVE9SX1MpOworICAgICAgICBidWlsZGVyLmFwcGVuZChjb21wb25lbnQpOworICAgIH0K
KyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworfQorCitib29sIG1ha2VBbGxEaXJlY3Rv
cmllcyhjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5h
bWUgPSB1bmVzY2FwZWRGaWxlbmFtZShwYXRoKTsKKyAgICByZXR1cm4gZmlsZW5hbWUgPyBnX21r
ZGlyX3dpdGhfcGFyZW50cyhmaWxlbmFtZS5nZXQoKSwgU19JUldYVSkgIT0gLTEgOiBmYWxzZTsK
K30KKworU3RyaW5nIGhvbWVEaXJlY3RvcnlQYXRoKCkKK3sKKyAgICByZXR1cm4gc3RyaW5nRnJv
bUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihnX2dldF9ob21lX2RpcigpKTsKK30KKworYm9vbCBj
cmVhdGVTeW1ib2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcm
IHN5bWJvbGljTGlua1BhdGgpCit7CisgICAgQ1N0cmluZyB0YXJnZXRQYXRoRlNSZXAgPSBmaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24odGFyZ2V0UGF0aCk7CisgICAgaWYgKCF0YXJnZXRQYXRoRlNS
ZXAuZGF0YSgpIHx8IHRhcmdldFBhdGhGU1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgQ1N0cmluZyBzeW1ib2xpY0xpbmtQYXRoRlNSZXAgPSBmaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oc3ltYm9saWNMaW5rUGF0aCk7CisgICAgaWYgKCFzeW1ib2xp
Y0xpbmtQYXRoRlNSZXAuZGF0YSgpIHx8IHN5bWJvbGljTGlua1BhdGhGU1JlcC5kYXRhKClbMF0g
PT0gJ1wwJykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuICFzeW1saW5rKHRh
cmdldFBhdGhGU1JlcC5kYXRhKCksIHN5bWJvbGljTGlua1BhdGhGU1JlcC5kYXRhKCkpOworfQor
CitTdHJpbmcgcGF0aEdldEZpbGVOYW1lKGNvbnN0IFN0cmluZyYgcGF0aE5hbWUpCit7CisgICAg
R1VuaXF1ZVB0cjxnY2hhcj4gdG1wRmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShwYXRoTmFt
ZSk7CisgICAgaWYgKCF0bXBGaWxlbmFtZSkKKyAgICAgICAgcmV0dXJuIHBhdGhOYW1lOworCisg
ICAgR1VuaXF1ZVB0cjxnY2hhcj4gYmFzZU5hbWUoZ19wYXRoX2dldF9iYXNlbmFtZSh0bXBGaWxl
bmFtZS5nZXQoKSkpOworICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGJhc2VOYW1lLmdldCgp
KTsKK30KKworYm9vbCBnZXRWb2x1bWVGcmVlU3BhY2UoY29uc3QgU3RyaW5nJiBwYXRoLCB1aW50
NjRfdCYgZnJlZVNwYWNlKQoreworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5l
c2NhcGVkRmlsZW5hbWUocGF0aCk7CisgICAgaWYgKCFmaWxlbmFtZSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgR1JlZlB0cjxHRmlsZT4gZmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3
X2Zvcl9wYXRoKGZpbGVuYW1lLmdldCgpKSk7CisgICAgR1JlZlB0cjxHRmlsZUluZm8+IGZpbGVJ
bmZvID0gYWRvcHRHUmVmKGdfZmlsZV9xdWVyeV9maWxlc3lzdGVtX2luZm8oZmlsZS5nZXQoKSwg
R19GSUxFX0FUVFJJQlVURV9GSUxFU1lTVEVNX0ZSRUUsIDAsIDApKTsKKyAgICBpZiAoIWZpbGVJ
bmZvKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBmcmVlU3BhY2UgPSBnX2ZpbGVfaW5m
b19nZXRfYXR0cmlidXRlX3VpbnQ2NChmaWxlSW5mby5nZXQoKSwgR19GSUxFX0FUVFJJQlVURV9G
SUxFU1lTVEVNX0ZSRUUpOworICAgIHJldHVybiAhIWZyZWVTcGFjZTsKK30KKworU3RyaW5nIGRp
cmVjdG9yeU5hbWUoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIEdVbmlxdWVQdHI8Z2NoYXI+
IGZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUocGF0aCk7CisgICAgaWYgKCFmaWxlbmFtZSkK
KyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgR1VuaXF1ZVB0cjxjaGFyPiBkaXJuYW1l
KGdfcGF0aF9nZXRfZGlybmFtZShmaWxlbmFtZS5nZXQoKSkpOworICAgIHJldHVybiBTdHJpbmc6
OmZyb21VVEY4KGRpcm5hbWUuZ2V0KCkpOworfQorCitWZWN0b3I8U3RyaW5nPiBsaXN0RGlyZWN0
b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBmaWx0ZXIpCit7CisgICAgVmVj
dG9yPFN0cmluZz4gZW50cmllczsKKworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0g
dW5lc2NhcGVkRmlsZW5hbWUocGF0aCk7CisgICAgaWYgKCFmaWxlbmFtZSkKKyAgICAgICAgcmV0
dXJuIGVudHJpZXM7CisKKyAgICBHVW5pcXVlUHRyPEdEaXI+IGRpcihnX2Rpcl9vcGVuKGZpbGVu
YW1lLmdldCgpLCAwLCBudWxscHRyKSk7CisgICAgaWYgKCFkaXIpCisgICAgICAgIHJldHVybiBl
bnRyaWVzOworCisgICAgR1VuaXF1ZVB0cjxHUGF0dGVyblNwZWM+IHBzcGVjKGdfcGF0dGVybl9z
cGVjX25ldygoZmlsdGVyLnV0ZjgoKSkuZGF0YSgpKSk7CisgICAgd2hpbGUgKGNvbnN0IGNoYXIq
IG5hbWUgPSBnX2Rpcl9yZWFkX25hbWUoZGlyLmdldCgpKSkgeworICAgICAgICBpZiAoIWdfcGF0
dGVybl9tYXRjaF9zdHJpbmcocHNwZWMuZ2V0KCksIG5hbWUpKQorICAgICAgICAgICAgY29udGlu
dWU7CisKKyAgICAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZW50cnkoZ19idWlsZF9maWxlbmFtZShm
aWxlbmFtZS5nZXQoKSwgbmFtZSwgbnVsbHB0cikpOworICAgICAgICBlbnRyaWVzLmFwcGVuZChz
dHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGVudHJ5LmdldCgpKSk7CisgICAgfQor
CisgICAgcmV0dXJuIGVudHJpZXM7Cit9CisKK1N0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25z
dCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpCit7CisgICAgR1Vu
aXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUoZ19zdHJkdXBfcHJpbnRmKCIlcyVzIiwgcHJlZml4LnV0
ZjgoKS5kYXRhKCksIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKS51dGY4KCkuZGF0YSgpKSk7
CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gdGVtcFBhdGgoZ19idWlsZF9maWxlbmFtZShnX2dldF90
bXBfZGlyKCksIGZpbGVuYW1lLmdldCgpLCBOVUxMKSk7CisgICAgR1JlZlB0cjxHRmlsZT4gZmls
ZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKHRlbXBQYXRoLmdldCgpKSk7CisKKyAg
ICBoYW5kbGUgPSBnX2ZpbGVfY3JlYXRlX3JlYWR3cml0ZShmaWxlLmdldCgpLCBHX0ZJTEVfQ1JF
QVRFX05PTkUsIDAsIDApOworICAgIGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUpKQorICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7CisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgodGVtcFBhdGgu
Z2V0KCkpOworfQorCitQbGF0Zm9ybUZpbGVIYW5kbGUgb3BlbkZpbGUoY29uc3QgU3RyaW5nJiBw
YXRoLCBGaWxlT3Blbk1vZGUgbW9kZSkKK3sKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFt
ZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGgpOworICAgIGlmICghZmlsZW5hbWUpCisgICAgICAg
IHJldHVybiBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOworCisgICAgR1JlZlB0cjxHRmlsZT4g
ZmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKGZpbGVuYW1lLmdldCgpKSk7Cisg
ICAgR0ZpbGVJT1N0cmVhbSogaW9TdHJlYW0gPSAwOworICAgIGlmIChtb2RlID09IEZpbGVPcGVu
TW9kZTo6UmVhZCkKKyAgICAgICAgaW9TdHJlYW0gPSBnX2ZpbGVfb3Blbl9yZWFkd3JpdGUoZmls
ZS5nZXQoKSwgMCwgMCk7CisgICAgZWxzZSBpZiAobW9kZSA9PSBGaWxlT3Blbk1vZGU6OldyaXRl
KSB7CisgICAgICAgIGlmIChnX2ZpbGVfdGVzdChmaWxlbmFtZS5nZXQoKSwgc3RhdGljX2Nhc3Q8
R0ZpbGVUZXN0PihHX0ZJTEVfVEVTVF9FWElTVFMgfCBHX0ZJTEVfVEVTVF9JU19SRUdVTEFSKSkp
CisgICAgICAgICAgICBpb1N0cmVhbSA9IGdfZmlsZV9vcGVuX3JlYWR3cml0ZShmaWxlLmdldCgp
LCAwLCAwKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaW9TdHJlYW0gPSBnX2ZpbGVfY3Jl
YXRlX3JlYWR3cml0ZShmaWxlLmdldCgpLCBHX0ZJTEVfQ1JFQVRFX05PTkUsIDAsIDApOworICAg
IH0KKworICAgIHJldHVybiBpb1N0cmVhbTsKK30KKwordm9pZCBjbG9zZUZpbGUoUGxhdGZvcm1G
aWxlSGFuZGxlJiBoYW5kbGUpCit7CisgICAgaWYgKCFpc0hhbmRsZVZhbGlkKGhhbmRsZSkpCisg
ICAgICAgIHJldHVybjsKKworICAgIGdfaW9fc3RyZWFtX2Nsb3NlKEdfSU9fU1RSRUFNKGhhbmRs
ZSksIDAsIDApOworICAgIGdfb2JqZWN0X3VucmVmKGhhbmRsZSk7CisgICAgaGFuZGxlID0gaW52
YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKK30KKworbG9uZyBsb25nIHNlZWtGaWxlKFBsYXRmb3Jt
RmlsZUhhbmRsZSBoYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQsIEZpbGVTZWVrT3JpZ2luIG9yaWdp
bikKK3sKKyAgICBHU2Vla1R5cGUgc2Vla1R5cGUgPSBHX1NFRUtfU0VUOworICAgIHN3aXRjaCAo
b3JpZ2luKSB7CisgICAgY2FzZSBGaWxlU2Vla09yaWdpbjo6QmVnaW5uaW5nOgorICAgICAgICBz
ZWVrVHlwZSA9IEdfU0VFS19TRVQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRmlsZVNlZWtP
cmlnaW46OkN1cnJlbnQ6CisgICAgICAgIHNlZWtUeXBlID0gR19TRUVLX0NVUjsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBGaWxlU2Vla09yaWdpbjo6RW5kOgorICAgICAgICBzZWVrVHlwZSA9
IEdfU0VFS19FTkQ7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKworICAgIGlmICghZ19zZWVrYWJsZV9zZWVrKEdfU0VF
S0FCTEUoZ19pb19zdHJlYW1fZ2V0X2lucHV0X3N0cmVhbShHX0lPX1NUUkVBTShoYW5kbGUpKSks
CisgICAgICAgIG9mZnNldCwgc2Vla1R5cGUsIDAsIDApKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IC0xOworICAgIH0KKyAgICByZXR1cm4gZ19zZWVrYWJsZV90ZWxsKEdfU0VFS0FCTEUoZ19pb19z
dHJlYW1fZ2V0X2lucHV0X3N0cmVhbShHX0lPX1NUUkVBTShoYW5kbGUpKSkpOworfQorCitpbnQg
d3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY29uc3QgY2hhciogZGF0YSwg
aW50IGxlbmd0aCkKK3sKKyAgICBnc2l6ZSBieXRlc1dyaXR0ZW47CisgICAgZ19vdXRwdXRfc3Ry
ZWFtX3dyaXRlX2FsbChnX2lvX3N0cmVhbV9nZXRfb3V0cHV0X3N0cmVhbShHX0lPX1NUUkVBTSho
YW5kbGUpKSwKKyAgICAgICAgZGF0YSwgbGVuZ3RoLCAmYnl0ZXNXcml0dGVuLCAwLCAwKTsKKyAg
ICByZXR1cm4gYnl0ZXNXcml0dGVuOworfQorCitpbnQgcmVhZEZyb21GaWxlKFBsYXRmb3JtRmls
ZUhhbmRsZSBoYW5kbGUsIGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCit7CisgICAgR1VuaXF1ZU91
dFB0cjxHRXJyb3I+IGVycm9yOworICAgIGRvIHsKKyAgICAgICAgZ3NzaXplIGJ5dGVzUmVhZCA9
IGdfaW5wdXRfc3RyZWFtX3JlYWQoZ19pb19zdHJlYW1fZ2V0X2lucHV0X3N0cmVhbShHX0lPX1NU
UkVBTShoYW5kbGUpKSwKKyAgICAgICAgICAgIGRhdGEsIGxlbmd0aCwgMCwgJmVycm9yLm91dFB0
cigpKTsKKyAgICAgICAgaWYgKGJ5dGVzUmVhZCA+PSAwKQorICAgICAgICAgICAgcmV0dXJuIGJ5
dGVzUmVhZDsKKyAgICB9IHdoaWxlIChlcnJvciAmJiBlcnJvci0+Y29kZSA9PSBHX0ZJTEVfRVJS
T1JfSU5UUik7CisgICAgcmV0dXJuIC0xOworfQorCitib29sIG1vdmVGaWxlKGNvbnN0IFN0cmlu
ZyYgb2xkUGF0aCwgY29uc3QgU3RyaW5nJiBuZXdQYXRoKQoreworICAgIEdVbmlxdWVQdHI8Z2No
YXI+IG9sZEZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUob2xkUGF0aCk7CisgICAgaWYgKCFv
bGRGaWxlbmFtZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgR1VuaXF1ZVB0cjxnY2hh
cj4gbmV3RmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShuZXdQYXRoKTsKKyAgICBpZiAoIW5l
d0ZpbGVuYW1lKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBHUmVmUHRyPEdGaWxlPiBv
bGRGaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgob2xkRmlsZW5hbWUuZ2V0KCkp
KTsKKyAgICBHUmVmUHRyPEdGaWxlPiBuZXdGaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9y
X3BhdGgobmV3RmlsZW5hbWUuZ2V0KCkpKTsKKworICAgIHJldHVybiBnX2ZpbGVfbW92ZShvbGRG
aWxlLmdldCgpLCBuZXdGaWxlLmdldCgpLCBHX0ZJTEVfQ09QWV9PVkVSV1JJVEUsIG51bGxwdHIs
IG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpOworfQorCitib29sIGhhcmRMaW5rT3JDb3B5Rmls
ZShjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbikKK3sKKyNp
ZiBPUyhXSU5ET1dTKQorICAgIHJldHVybiAhITo6Q29weUZpbGUoc291cmNlLmNoYXJhY3RlcnNX
aXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpLCBkZXN0aW5hdGlvbi5jaGFyYWN0ZXJzV2l0aE51
bGxUZXJtaW5hdGlvbigpLmRhdGEoKSwgVFJVRSk7CisjZWxzZQorICAgIEdVbmlxdWVQdHI8Z2No
YXI+IHNvdXJjZUZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUoc291cmNlKTsKKyAgICBpZiAo
IXNvdXJjZUZpbGVuYW1lKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBHVW5pcXVlUHRy
PGdjaGFyPiBkZXN0aW5hdGlvbkZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUoZGVzdGluYXRp
b24pOworICAgIGlmICghZGVzdGluYXRpb25GaWxlbmFtZSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgaWYgKCFsaW5rKHNvdXJjZUZpbGVuYW1lLmdldCgpLCBkZXN0aW5hdGlvbkZpbGVu
YW1lLmdldCgpKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBIYXJkIGxpbmsgZmFp
bGVkLiBQZXJmb3JtIGEgY29weSBpbnN0ZWFkLgorICAgIEdSZWZQdHI8R0ZpbGU+IHNvdXJjZUZp
bGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0aChzb3VyY2VGaWxlbmFtZS5nZXQoKSkp
OworICAgIEdSZWZQdHI8R0ZpbGU+IGRlc3RpbmF0aW9uRmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVf
bmV3X2Zvcl9wYXRoKGRlc3RpbmF0aW9uRmlsZW5hbWUuZ2V0KCkpKTsKKyAgICByZXR1cm4gZ19m
aWxlX2NvcHkoc291cmNlRmlsZS5nZXQoKSwgZGVzdGluYXRpb25GaWxlLmdldCgpLCBHX0ZJTEVf
Q09QWV9OT05FLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKTsKKyNlbmRpZgor
fQorCitPcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNG
aWxlKQoreworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5h
bWUoZnNGaWxlLmRhdGEoKSk7CisgICAgaWYgKCFmaWxlbmFtZSkKKyAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKworICAgIEdSZWZQdHI8R0ZpbGU+IGZpbGUgPSBhZG9wdEdSZWYoZ19maWxl
X25ld19mb3JfcGF0aChmaWxlbmFtZS5nZXQoKSkpOworICAgIEdSZWZQdHI8R0ZpbGVJbmZvPiBm
aWxlSW5mbyA9IGFkb3B0R1JlZihnX2ZpbGVfcXVlcnlfZmlsZXN5c3RlbV9pbmZvKGZpbGUuZ2V0
KCksIEdfRklMRV9BVFRSSUJVVEVfVU5JWF9ERVZJQ0UsIG51bGxwdHIsIG51bGxwdHIpKTsKKyAg
ICBpZiAoIWZpbGVJbmZvKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0
dXJuIGdfZmlsZV9pbmZvX2dldF9hdHRyaWJ1dGVfdWludDMyKGZpbGVJbmZvLmdldCgpLCBHX0ZJ
TEVfQVRUUklCVVRFX1VOSVhfREVWSUNFKTsKK30KKworI2lmIFVTRShGSUxFX0xPQ0spCitib29s
IGxvY2tGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIE9wdGlvblNldDxGaWxlTG9ja01v
ZGU+IGxvY2tNb2RlKQoreworICAgIENPTVBJTEVfQVNTRVJUKExPQ0tfU0ggPT0gV1RGOjplbnVt
VG9VbmRlcmx5aW5nVHlwZShGaWxlTG9ja01vZGU6OlNoYXJlZCksIExvY2tTaGFyZWRFbmNvZGlu
Z0lzQXNFeHBlY3RlZCk7CisgICAgQ09NUElMRV9BU1NFUlQoTE9DS19FWCA9PSBXVEY6OmVudW1U
b1VuZGVybHlpbmdUeXBlKEZpbGVMb2NrTW9kZTo6RXhjbHVzaXZlKSwgTG9ja0V4Y2x1c2l2ZUVu
Y29kaW5nSXNBc0V4cGVjdGVkKTsKKyAgICBDT01QSUxFX0FTU0VSVChMT0NLX05CID09IFdURjo6
ZW51bVRvVW5kZXJseWluZ1R5cGUoRmlsZUxvY2tNb2RlOjpOb25ibG9ja2luZyksIExvY2tOb25i
bG9ja2luZ0VuY29kaW5nSXNBc0V4cGVjdGVkKTsKKyAgICBhdXRvKiBpbnB1dFN0cmVhbSA9IGdf
aW9fc3RyZWFtX2dldF9pbnB1dF9zdHJlYW0oR19JT19TVFJFQU0oaGFuZGxlKSk7CisgICAgaW50
IHJlc3VsdCA9IGZsb2NrKGdfZmlsZV9kZXNjcmlwdG9yX2Jhc2VkX2dldF9mZChHX0ZJTEVfREVT
Q1JJUFRPUl9CQVNFRChpbnB1dFN0cmVhbSkpLCBsb2NrTW9kZS50b1JhdygpKTsKKyAgICByZXR1
cm4gcmVzdWx0ICE9IC0xOworfQorCitib29sIHVubG9ja0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxl
IGhhbmRsZSkKK3sKKyAgICBhdXRvKiBpbnB1dFN0cmVhbSA9IGdfaW9fc3RyZWFtX2dldF9pbnB1
dF9zdHJlYW0oR19JT19TVFJFQU0oaGFuZGxlKSk7CisgICAgaW50IHJlc3VsdCA9IGZsb2NrKGdf
ZmlsZV9kZXNjcmlwdG9yX2Jhc2VkX2dldF9mZChHX0ZJTEVfREVTQ1JJUFRPUl9CQVNFRChpbnB1
dFN0cmVhbSkpLCBMT0NLX1VOKTsKKyAgICByZXR1cm4gcmVzdWx0ICE9IC0xOworfQorI2VuZGlm
IC8vIFVTRShGSUxFX0xPQ0spCisKK30gLy8gbmFtZXNwYWNlIEZpbGVTeXN0ZW1JbXBsCit9IC8v
IG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL21hYy9GaWxlU3lzdGVt
TWFjLm1tIGIvU291cmNlL1dURi93dGYvbWFjL0ZpbGVTeXN0ZW1NYWMubW0KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OTI2OTJhMTZmYmE1YjE1Mjc4Yzc3MmY3NTZlNTUzYTExMDc1NWYyYgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XVEYvd3RmL21hYy9GaWxlU3lzdGVtTWFjLm1tCkBAIC0wLDAgKzEsODggQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCA8d3RmL0ZpbGVT
eXN0ZW0uaD4KKworI2lmIFBMQVRGT1JNKE1BQykKKworI2ltcG9ydCA8d3RmL2NvY29hL05TVVJM
RXh0cmFzLmg+CisjaW1wb3J0IDx3dGYvc3BpL21hYy9NZXRhZGF0YVNQSS5oPgorI2ltcG9ydCA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXVEYgeworCitib29sIEZpbGVTeXN0
ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBhdXRv
IGZpbGVNYW5hZ2VyID0gYWRvcHROUyhbW05TRmlsZU1hbmFnZXIgYWxsb2NdIGluaXRdKTsKKwor
ICAgIGlmIChOU0FycmF5ICpkaXJlY3RvcnlDb250ZW50cyA9IFtmaWxlTWFuYWdlciBjb250ZW50
c09mRGlyZWN0b3J5QXRQYXRoOnBhdGggZXJyb3I6bnVsbHB0cl0pIHsKKyAgICAgICAgLy8gRXhw
bGljaXRseSBsb29rIGZvciBhbmQgZGVsZXRlIC5EU19TdG9yZSBmaWxlcy4KKyAgICAgICAgaWYg
KGRpcmVjdG9yeUNvbnRlbnRzLmNvdW50ID09IDEgJiYgW2RpcmVjdG9yeUNvbnRlbnRzLmZpcnN0
T2JqZWN0IGlzRXF1YWxUb1N0cmluZzpAIi5EU19TdG9yZSJdKQorICAgICAgICAgICAgW2ZpbGVN
YW5hZ2VyIHJlbW92ZUl0ZW1BdFBhdGg6W3BhdGggc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9u
ZW50OmRpcmVjdG9yeUNvbnRlbnRzLmZpcnN0T2JqZWN0XSBlcnJvcjpudWxscHRyXTsKKyAgICB9
CisKKyAgICAvLyBybWRpciguLi4pIHJldHVybnMgMCBvbiBzdWNjZXNzZnVsIGRlbGV0aW9uIG9m
IHRoZSBwYXRoIGFuZCBub24temVybyBpbiBhbnkgb3RoZXIgY2FzZSAoaW5jbHVkaW5nIGludmFs
aWQgcGVybWlzc2lvbnMgb3Igbm9uLWV4aXN0ZW50IGZpbGUpCisgICAgcmV0dXJuICFybWRpcihG
aWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpKTsKK30KKwor
dm9pZCBGaWxlU3lzdGVtOjpzZXRNZXRhZGF0YVVSTChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0
IFN0cmluZyYgbWV0YWRhdGFVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpCit7Cisg
ICAgU3RyaW5nIHVybFN0cmluZzsKKyAgICBpZiAoTlNVUkwgKnVybCA9IFVSTFdpdGhVc2VyVHlw
ZWRTdHJpbmcobWV0YWRhdGFVUkxTdHJpbmcsIG5pbCkpCisgICAgICAgIHVybFN0cmluZyA9IFdU
Rjo6dXNlclZpc2libGVTdHJpbmcoV1RGOjpVUkxCeVJlbW92aW5nVXNlckluZm8odXJsKSk7Cisg
ICAgZWxzZQorICAgICAgICB1cmxTdHJpbmcgPSBtZXRhZGF0YVVSTFN0cmluZzsKKworICAgIC8v
IENhbGwgTWV0YWRhdGEgQVBJIG9uIGEgYmFja2dyb3VuZCBxdWV1ZSBiZWNhdXNlIGl0IGNhbiB0
YWtlIHNvbWUgdGltZS4KKyAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1
ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApLCBbcGF0aCA9IHBhdGguaXNv
bGF0ZWRDb3B5KCksIHVybFN0cmluZyA9IHVybFN0cmluZy5pc29sYXRlZENvcHkoKSwgcmVmZXJy
ZXIgPSByZWZlcnJlci5pc29sYXRlZENvcHkoKV0geworICAgICAgICBhdXRvIGl0ZW0gPSBhZG9w
dENGKE1ESXRlbUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBwYXRoLmNyZWF0ZUNGU3RyaW5n
KCkuZ2V0KCkpKTsKKyAgICAgICAgaWYgKCFpdGVtKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIGF1dG8gd2hlcmVGcm9tQXR0cmlidXRlID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5
IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6dXJsU3RyaW5nLCBuaWxdKTsKKyAgICAgICAgaWYgKCFy
ZWZlcnJlci5pc051bGwoKSkKKyAgICAgICAgICAgIFt3aGVyZUZyb21BdHRyaWJ1dGUgYWRkT2Jq
ZWN0OnJlZmVycmVyXTsKKworICAgICAgICBNREl0ZW1TZXRBdHRyaWJ1dGUoaXRlbS5nZXQoKSwg
a01ESXRlbVdoZXJlRnJvbXMsIChfX2JyaWRnZSBDRkFycmF5UmVmKXdoZXJlRnJvbUF0dHJpYnV0
ZS5nZXQoKSk7CisgICAgICAgIE1ESXRlbVNldEF0dHJpYnV0ZShpdGVtLmdldCgpLCBrTURJdGVt
RG93bmxvYWRlZERhdGUsIChfX2JyaWRnZSBDRkFycmF5UmVmKUBbIFtOU0RhdGUgZGF0ZV0gXSk7
CisgICAgfSk7Cit9CisKK2Jvb2wgRmlsZVN5c3RlbTo6Y2FuRXhjbHVkZUZyb21CYWNrdXAoKQor
eworICAgIHJldHVybiB0cnVlOworfQorCitib29sIEZpbGVTeXN0ZW06OmV4Y2x1ZGVGcm9tQmFj
a3VwKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICAvLyBJdCBpcyBjcml0aWNhbCB0byBwYXNz
IEZBTFNFIGZvciBleGNsdWRlQnlQYXRoIGJlY2F1c2UgZXhjbHVkaW5nIGJ5IHBhdGggcmVxdWly
ZXMgcm9vdCBwcml2aWxlZ2VzLgorICAgIENTQmFja3VwU2V0SXRlbUV4Y2x1ZGVkKEZpbGVTeXN0
ZW06OnBhdGhBc1VSTChwYXRoKS5nZXQoKSwgVFJVRSwgRkFMU0UpOworICAgIHJldHVybiB0cnVl
OworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKKworI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAgYi9Tb3Vy
Y2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZiMWVmZDYz
NDE2NDU5Y2NjZTk3OTY2ZGI5ZTVkZGEyYjcyNDAwYTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCkBAIC0wLDAgKzEsNDk2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUg
SW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAg
ICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CisKKyNpbmNsdWRlIDxk
aXJlbnQuaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVk
ZSA8Zm5tYXRjaC5oPgorI2luY2x1ZGUgPGxpYmdlbi5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+Cisj
aW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpbmNsdWRlIDxzeXMvc3RhdHZmcy5oPgorI2luY2x1ZGUg
PHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHd0Zi9FbnVtVHJh
aXRzLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVNZXRhZGF0YS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXVEYgeworCituYW1lc3BhY2Ug
RmlsZVN5c3RlbUltcGwgeworCitib29sIGZpbGVFeGlzdHMoY29uc3QgU3RyaW5nJiBwYXRoKQor
eworICAgIGlmIChwYXRoLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBD
U3RyaW5nIGZzUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworCisgICAgaWYg
KCFmc1JlcC5kYXRhKCkgfHwgZnNSZXAuZGF0YSgpWzBdID09ICdcMCcpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIHJldHVybiBhY2Nlc3MoZnNSZXAuZGF0YSgpLCBGX09LKSAhPSAtMTsK
K30KKworYm9vbCBkZWxldGVGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBDU3RyaW5n
IGZzUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworCisgICAgaWYgKCFmc1Jl
cC5kYXRhKCkgfHwgZnNSZXAuZGF0YSgpWzBdID09ICdcMCcpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIC8vIHVubGluayguLi4pIHJldHVybnMgMCBvbiBzdWNjZXNzZnVsIGRlbGV0aW9u
IG9mIHRoZSBwYXRoIGFuZCBub24temVybyBpbiBhbnkgb3RoZXIgY2FzZSAoaW5jbHVkaW5nIGlu
dmFsaWQgcGVybWlzc2lvbnMgb3Igbm9uLWV4aXN0ZW50IGZpbGUpCisgICAgcmV0dXJuICF1bmxp
bmsoZnNSZXAuZGF0YSgpKTsKK30KKworUGxhdGZvcm1GaWxlSGFuZGxlIG9wZW5GaWxlKGNvbnN0
IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlIG1vZGUpCit7CisgICAgQ1N0cmluZyBmc1JlcCA9
IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKKworICAgIGlmIChmc1JlcC5pc051bGwo
KSkKKyAgICAgICAgcmV0dXJuIGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7CisKKyAgICBpbnQg
cGxhdGZvcm1GbGFnID0gMDsKKyAgICBpZiAobW9kZSA9PSBGaWxlT3Blbk1vZGU6OlJlYWQpCisg
ICAgICAgIHBsYXRmb3JtRmxhZyB8PSBPX1JET05MWTsKKyAgICBlbHNlIGlmIChtb2RlID09IEZp
bGVPcGVuTW9kZTo6V3JpdGUpCisgICAgICAgIHBsYXRmb3JtRmxhZyB8PSAoT19XUk9OTFkgfCBP
X0NSRUFUIHwgT19UUlVOQyk7CisjaWYgT1MoREFSV0lOKQorICAgIGVsc2UgaWYgKG1vZGUgPT0g
RmlsZU9wZW5Nb2RlOjpFdmVudHNPbmx5KQorICAgICAgICBwbGF0Zm9ybUZsYWcgfD0gT19FVlRP
TkxZOworI2VuZGlmCisKKyAgICByZXR1cm4gb3Blbihmc1JlcC5kYXRhKCksIHBsYXRmb3JtRmxh
ZywgMDY2Nik7Cit9CisKK3ZvaWQgY2xvc2VGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxl
KQoreworICAgIGlmIChpc0hhbmRsZVZhbGlkKGhhbmRsZSkpIHsKKyAgICAgICAgY2xvc2UoaGFu
ZGxlKTsKKyAgICAgICAgaGFuZGxlID0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKKyAgICB9
Cit9CisKK2xvbmcgbG9uZyBzZWVrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBsb25n
IGxvbmcgb2Zmc2V0LCBGaWxlU2Vla09yaWdpbiBvcmlnaW4pCit7CisgICAgaW50IHdoZW5jZSA9
IFNFRUtfU0VUOworICAgIHN3aXRjaCAob3JpZ2luKSB7CisgICAgY2FzZSBGaWxlU2Vla09yaWdp
bjo6QmVnaW5uaW5nOgorICAgICAgICB3aGVuY2UgPSBTRUVLX1NFVDsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBGaWxlU2Vla09yaWdpbjo6Q3VycmVudDoKKyAgICAgICAgd2hlbmNlID0gU0VF
S19DVVI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRmlsZVNlZWtPcmlnaW46OkVuZDoKKyAg
ICAgICAgd2hlbmNlID0gU0VFS19FTkQ7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6Cisg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8bG9uZyBsb25nPihsc2VlayhoYW5kbGUsIG9mZnNldCwgd2hlbmNlKSk7Cit9CisKK2Jvb2wg
dHJ1bmNhdGVGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQp
Cit7CisgICAgLy8gZnRydW5jYXRlIHJldHVybnMgMCB0byBpbmRpY2F0ZSB0aGUgc3VjY2Vzcy4K
KyAgICByZXR1cm4gIWZ0cnVuY2F0ZShoYW5kbGUsIG9mZnNldCk7Cit9CisKK2ludCB3cml0ZVRv
RmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVu
Z3RoKQoreworICAgIGRvIHsKKyAgICAgICAgaW50IGJ5dGVzV3JpdHRlbiA9IHdyaXRlKGhhbmRs
ZSwgZGF0YSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5ndGgpKTsKKyAgICAgICAgaWYgKGJ5dGVz
V3JpdHRlbiA+PSAwKQorICAgICAgICAgICAgcmV0dXJuIGJ5dGVzV3JpdHRlbjsKKyAgICB9IHdo
aWxlIChlcnJubyA9PSBFSU5UUik7CisgICAgcmV0dXJuIC0xOworfQorCitpbnQgcmVhZEZyb21G
aWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCit7
CisgICAgZG8geworICAgICAgICBpbnQgYnl0ZXNSZWFkID0gcmVhZChoYW5kbGUsIGRhdGEsIHN0
YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSk7CisgICAgICAgIGlmIChieXRlc1JlYWQgPj0gMCkK
KyAgICAgICAgICAgIHJldHVybiBieXRlc1JlYWQ7CisgICAgfSB3aGlsZSAoZXJybm8gPT0gRUlO
VFIpOworICAgIHJldHVybiAtMTsKK30KKworI2lmIFVTRShGSUxFX0xPQ0spCitib29sIGxvY2tG
aWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIE9wdGlvblNldDxGaWxlTG9ja01vZGU+IGxv
Y2tNb2RlKQoreworICAgIENPTVBJTEVfQVNTRVJUKExPQ0tfU0ggPT0gV1RGOjplbnVtVG9VbmRl
cmx5aW5nVHlwZShGaWxlTG9ja01vZGU6OlNoYXJlZCksIExvY2tTaGFyZWRFbmNvZGluZ0lzQXNF
eHBlY3RlZCk7CisgICAgQ09NUElMRV9BU1NFUlQoTE9DS19FWCA9PSBXVEY6OmVudW1Ub1VuZGVy
bHlpbmdUeXBlKEZpbGVMb2NrTW9kZTo6RXhjbHVzaXZlKSwgTG9ja0V4Y2x1c2l2ZUVuY29kaW5n
SXNBc0V4cGVjdGVkKTsKKyAgICBDT01QSUxFX0FTU0VSVChMT0NLX05CID09IFdURjo6ZW51bVRv
VW5kZXJseWluZ1R5cGUoRmlsZUxvY2tNb2RlOjpOb25ibG9ja2luZyksIExvY2tOb25ibG9ja2lu
Z0VuY29kaW5nSXNBc0V4cGVjdGVkKTsKKyAgICBpbnQgcmVzdWx0ID0gZmxvY2soaGFuZGxlLCBs
b2NrTW9kZS50b1JhdygpKTsKKyAgICByZXR1cm4gKHJlc3VsdCAhPSAtMSk7Cit9CisKK2Jvb2wg
dW5sb2NrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlKQoreworICAgIGludCByZXN1bHQg
PSBmbG9jayhoYW5kbGUsIExPQ0tfVU4pOworICAgIHJldHVybiAocmVzdWx0ICE9IC0xKTsKK30K
KyNlbmRpZgorCisjaWYgIVBMQVRGT1JNKE1BQykKK2Jvb2wgZGVsZXRlRW1wdHlEaXJlY3Rvcnko
Y29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIENTdHJpbmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24ocGF0aCk7CisKKyAgICBpZiAoIWZzUmVwLmRhdGEoKSB8fCBmc1JlcC5kYXRh
KClbMF0gPT0gJ1wwJykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gcm1kaXIoLi4u
KSByZXR1cm5zIDAgb24gc3VjY2Vzc2Z1bCBkZWxldGlvbiBvZiB0aGUgcGF0aCBhbmQgbm9uLXpl
cm8gaW4gYW55IG90aGVyIGNhc2UgKGluY2x1ZGluZyBpbnZhbGlkIHBlcm1pc3Npb25zIG9yIG5v
bi1leGlzdGVudCBmaWxlKQorICAgIHJldHVybiAhcm1kaXIoZnNSZXAuZGF0YSgpKTsKK30KKyNl
bmRpZgorCitib29sIGdldEZpbGVTaXplKGNvbnN0IFN0cmluZyYgcGF0aCwgbG9uZyBsb25nJiBy
ZXN1bHQpCit7CisgICAgQ1N0cmluZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihw
YXRoKTsKKworICAgIGlmICghZnNSZXAuZGF0YSgpIHx8IGZzUmVwLmRhdGEoKVswXSA9PSAnXDAn
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzdHJ1Y3Qgc3RhdCBmaWxlSW5mbzsKKwor
ICAgIGlmIChzdGF0KGZzUmVwLmRhdGEoKSwgJmZpbGVJbmZvKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgcmVzdWx0ID0gZmlsZUluZm8uc3Rfc2l6ZTsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworYm9vbCBnZXRGaWxlU2l6ZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBsb25nIGxv
bmcmIHJlc3VsdCkKK3sKKyAgICBzdHJ1Y3Qgc3RhdCBmaWxlSW5mbzsKKyAgICBpZiAoZnN0YXQo
aGFuZGxlLCAmZmlsZUluZm8pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXN1bHQg
PSBmaWxlSW5mby5zdF9zaXplOworICAgIHJldHVybiB0cnVlOworfQorCitPcHRpb25hbDxXYWxs
VGltZT4gZ2V0RmlsZUNyZWF0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisjaWYgT1Mo
REFSV0lOKSB8fCBPUyhPUEVOQlNEKSB8fCBPUyhORVRCU0QpIHx8IE9TKEZSRUVCU0QpCisgICAg
Q1N0cmluZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKKworICAgIGlm
ICghZnNSZXAuZGF0YSgpIHx8IGZzUmVwLmRhdGEoKVswXSA9PSAnXDAnKQorICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworCisgICAgc3RydWN0IHN0YXQgZmlsZUluZm87CisKKyAgICBpZiAo
c3RhdChmc1JlcC5kYXRhKCksICZmaWxlSW5mbykpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisKKyAgICByZXR1cm4gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKGZpbGVJbmZvLnN0X2Jp
cnRodGltZSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShwYXRoKTsKKyAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworI2VuZGlmCit9CisKK09wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlTW9kaWZp
Y2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgQ1N0cmluZyBmc1JlcCA9IGZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKKworICAgIGlmICghZnNSZXAuZGF0YSgpIHx8
IGZzUmVwLmRhdGEoKVswXSA9PSAnXDAnKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
CisgICAgc3RydWN0IHN0YXQgZmlsZUluZm87CisKKyAgICBpZiAoc3RhdChmc1JlcC5kYXRhKCks
ICZmaWxlSW5mbykpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4g
V2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKGZpbGVJbmZvLnN0X210aW1lKTsKK30KKworc3RhdGlj
IEZpbGVNZXRhZGF0YTo6VHlwZSB0b0ZpbGVNZXRhdGFUeXBlKHN0cnVjdCBzdGF0IGZpbGVJbmZv
KQoreworICAgIGlmIChTX0lTRElSKGZpbGVJbmZvLnN0X21vZGUpKQorICAgICAgICByZXR1cm4g
RmlsZU1ldGFkYXRhOjpUeXBlOjpEaXJlY3Rvcnk7CisgICAgaWYgKFNfSVNMTksoZmlsZUluZm8u
c3RfbW9kZSkpCisgICAgICAgIHJldHVybiBGaWxlTWV0YWRhdGE6OlR5cGU6OlN5bWJvbGljTGlu
azsKKyAgICByZXR1cm4gRmlsZU1ldGFkYXRhOjpUeXBlOjpGaWxlOworfQorCitzdGF0aWMgT3B0
aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGFVc2luZ0Z1bmN0aW9uKGNvbnN0IFN0cmlu
ZyYgcGF0aCwgaW50ICgqc3RhdEZ1bmMpKGNvbnN0IGNoYXIqLCBzdHJ1Y3Qgc3RhdCopKQorewor
ICAgIENTdHJpbmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisKKyAg
ICBpZiAoIWZzUmVwLmRhdGEoKSB8fCBmc1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKKyAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHN0cnVjdCBzdGF0IGZpbGVJbmZvOworICAgIGlm
IChzdGF0RnVuYyhmc1JlcC5kYXRhKCksICZmaWxlSW5mbykpCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisKKyAgICBTdHJpbmcgZmlsZW5hbWUgPSBwYXRoR2V0RmlsZU5hbWUocGF0aCk7
CisgICAgYm9vbCBpc0hpZGRlbiA9ICFmaWxlbmFtZS5pc0VtcHR5KCkgJiYgZmlsZW5hbWVbMF0g
PT0gJy4nOworICAgIHJldHVybiBGaWxlTWV0YWRhdGEgeworICAgICAgICBXYWxsVGltZTo6ZnJv
bVJhd1NlY29uZHMoZmlsZUluZm8uc3RfbXRpbWUpLAorICAgICAgICBmaWxlSW5mby5zdF9zaXpl
LAorICAgICAgICBpc0hpZGRlbiwKKyAgICAgICAgdG9GaWxlTWV0YXRhVHlwZShmaWxlSW5mbykK
KyAgICB9OworfQorCitPcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YShjb25zdCBT
dHJpbmcmIHBhdGgpCit7CisgICAgcmV0dXJuIGZpbGVNZXRhZGF0YVVzaW5nRnVuY3Rpb24ocGF0
aCwgJmxzdGF0KTsKK30KKworT3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGFGb2xs
b3dpbmdTeW1saW5rcyhjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgcmV0dXJuIGZpbGVNZXRh
ZGF0YVVzaW5nRnVuY3Rpb24ocGF0aCwgJnN0YXQpOworfQorCitib29sIGNyZWF0ZVN5bWJvbGlj
TGluayhjb25zdCBTdHJpbmcmIHRhcmdldFBhdGgsIGNvbnN0IFN0cmluZyYgc3ltYm9saWNMaW5r
UGF0aCkKK3sKKyAgICBDU3RyaW5nIHRhcmdldFBhdGhGU1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbih0YXJnZXRQYXRoKTsKKyAgICBpZiAoIXRhcmdldFBhdGhGU1JlcC5kYXRhKCkgfHwg
dGFyZ2V0UGF0aEZTUmVwLmRhdGEoKVswXSA9PSAnXDAnKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBDU3RyaW5nIHN5bWJvbGljTGlua1BhdGhGU1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihzeW1ib2xpY0xpbmtQYXRoKTsKKyAgICBpZiAoIXN5bWJvbGljTGlua1BhdGhGU1Jl
cC5kYXRhKCkgfHwgc3ltYm9saWNMaW5rUGF0aEZTUmVwLmRhdGEoKVswXSA9PSAnXDAnKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gIXN5bWxpbmsodGFyZ2V0UGF0aEZTUmVw
LmRhdGEoKSwgc3ltYm9saWNMaW5rUGF0aEZTUmVwLmRhdGEoKSk7Cit9CisKK1N0cmluZyBwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGNv
bXBvbmVudCkKK3sKKyAgICBpZiAocGF0aC5lbmRzV2l0aCgnLycpKQorICAgICAgICByZXR1cm4g
cGF0aCArIGNvbXBvbmVudDsKKyAgICByZXR1cm4gcGF0aCArICIvIiArIGNvbXBvbmVudDsKK30K
KworU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMoU3RyaW5nVmlldyBwYXRoLCBjb25z
dCBWZWN0b3I8U3RyaW5nVmlldz4mIGNvbXBvbmVudHMpCit7CisgICAgU3RyaW5nQnVpbGRlciBi
dWlsZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kKHBhdGgpOworICAgIGZvciAoYXV0byYgY29tcG9u
ZW50IDogY29tcG9uZW50cykgeworICAgICAgICBidWlsZGVyLmFwcGVuZCgnLycpOworICAgICAg
ICBidWlsZGVyLmFwcGVuZChjb21wb25lbnQpOworICAgIH0KKyAgICByZXR1cm4gYnVpbGRlci50
b1N0cmluZygpOworfQorCitib29sIG1ha2VBbGxEaXJlY3Rvcmllcyhjb25zdCBTdHJpbmcmIHBh
dGgpCit7CisgICAgQ1N0cmluZyBmdWxsUGF0aCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihw
YXRoKTsKKyAgICBpZiAoIWFjY2VzcyhmdWxsUGF0aC5kYXRhKCksIEZfT0spKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKworICAgIGNoYXIqIHAgPSBmdWxsUGF0aC5tdXRhYmxlRGF0YSgpICsgMTsK
KyAgICBpbnQgbGVuZ3RoID0gZnVsbFBhdGgubGVuZ3RoKCk7CisKKyAgICBpZiAocFtsZW5ndGgg
LSAxXSA9PSAnLycpCisgICAgICAgIHBbbGVuZ3RoIC0gMV0gPSAnXDAnOworICAgIGZvciAoOyAq
cDsgKytwKSB7CisgICAgICAgIGlmICgqcCA9PSAnLycpIHsKKyAgICAgICAgICAgICpwID0gJ1ww
JzsKKyAgICAgICAgICAgIGlmIChhY2Nlc3MoZnVsbFBhdGguZGF0YSgpLCBGX09LKSkgeworICAg
ICAgICAgICAgICAgIGlmIChta2RpcihmdWxsUGF0aC5kYXRhKCksIFNfSVJXWFUpKQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAq
cCA9ICcvJzsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoYWNjZXNzKGZ1bGxQYXRoLmRhdGEo
KSwgRl9PSykpIHsKKyAgICAgICAgaWYgKG1rZGlyKGZ1bGxQYXRoLmRhdGEoKSwgU19JUldYVSkp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9
CisKK1N0cmluZyBwYXRoR2V0RmlsZU5hbWUoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIHJl
dHVybiBwYXRoLnN1YnN0cmluZyhwYXRoLnJldmVyc2VGaW5kKCcvJykgKyAxKTsKK30KKworU3Ry
aW5nIGRpcmVjdG9yeU5hbWUoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIENTdHJpbmcgZnNS
ZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisKKyAgICBpZiAoIWZzUmVwLmRh
dGEoKSB8fCBmc1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKKyAgICAgICAgcmV0dXJuIFN0cmluZygp
OworCisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoZGlybmFtZShmc1JlcC5tdXRhYmxlRGF0
YSgpKSk7Cit9CisKK1ZlY3RvcjxTdHJpbmc+IGxpc3REaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBw
YXRoLCBjb25zdCBTdHJpbmcmIGZpbHRlcikKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiBlbnRyaWVz
OworICAgIENTdHJpbmcgY3BhdGggPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7Cisg
ICAgQ1N0cmluZyBjZmlsdGVyID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbHRlcik7Cisg
ICAgRElSKiBkaXIgPSBvcGVuZGlyKGNwYXRoLmRhdGEoKSk7CisgICAgaWYgKGRpcikgeworICAg
ICAgICBzdHJ1Y3QgZGlyZW50KiBkcDsKKyAgICAgICAgd2hpbGUgKChkcCA9IHJlYWRkaXIoZGly
KSkpIHsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIqIG5hbWUgPSBkcC0+ZF9uYW1lOworICAgICAg
ICAgICAgaWYgKCFzdHJjbXAobmFtZSwgIi4iKSB8fCAhc3RyY21wKG5hbWUsICIuLiIpKQorICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaWYgKGZubWF0Y2goY2ZpbHRlci5k
YXRhKCksIG5hbWUsIDApKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
Y2hhciBmaWxlUGF0aFtQQVRIX01BWF07CisgICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50
PihzaXplb2YoZmlsZVBhdGgpIC0gMSkgPCBzbnByaW50ZihmaWxlUGF0aCwgc2l6ZW9mKGZpbGVQ
YXRoKSwgIiVzLyVzIiwgY3BhdGguZGF0YSgpLCBuYW1lKSkKKyAgICAgICAgICAgICAgICBjb250
aW51ZTsgLy8gYnVmZmVyIG92ZXJmbG93CisKKyAgICAgICAgICAgIGF1dG8gc3RyaW5nID0gc3Ry
aW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWxlUGF0aCk7CisKKyAgICAgICAgICAg
IC8vIFNvbWUgZmlsZSBzeXN0ZW0gcmVwcmVzZW50YXRpb25zIGNhbm5vdCBiZSByZXByZXNlbnRl
ZCBhcyBhIFVURi0xNiBzdHJpbmcsCisgICAgICAgICAgICAvLyBzbyB0aGlzIHN0cmluZyBtaWdo
dCBiZSBudWxsLgorICAgICAgICAgICAgaWYgKCFzdHJpbmcuaXNOdWxsKCkpCisgICAgICAgICAg
ICAgICAgZW50cmllcy5hcHBlbmQoV1RGTW92ZShzdHJpbmcpKTsKKyAgICAgICAgfQorICAgICAg
ICBjbG9zZWRpcihkaXIpOworICAgIH0KKyAgICByZXR1cm4gZW50cmllczsKK30KKworI2lmICFQ
TEFURk9STShDT0NPQSkKK1N0cmluZyBzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KGNvbnN0IGNoYXIqIHBhdGgpCit7CisgICAgaWYgKCFwYXRoKQorICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7CisKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChwYXRoKTsKK30KKworQ1N0cmlu
ZyBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIHJl
dHVybiBwYXRoLnV0ZjgoKTsKK30KKworYm9vbCBtb3ZlRmlsZShjb25zdCBTdHJpbmcmIG9sZFBh
dGgsIGNvbnN0IFN0cmluZyYgbmV3UGF0aCkKK3sKKyAgICBhdXRvIG9sZEZpbGVuYW1lID0gZmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKG9sZFBhdGgpOworICAgIGlmIChvbGRGaWxlbmFtZS5pc051
bGwoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byBuZXdGaWxlbmFtZSA9IGZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihuZXdQYXRoKTsKKyAgICBpZiAobmV3RmlsZW5hbWUuaXNO
dWxsKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiByZW5hbWUob2xkRmls
ZW5hbWUuZGF0YSgpLCBuZXdGaWxlbmFtZS5kYXRhKCkpICE9IC0xOworfQorCitib29sIGdldFZv
bHVtZUZyZWVTcGFjZShjb25zdCBTdHJpbmcmIHBhdGgsIHVpbnQ2NF90JiBmcmVlU3BhY2UpCit7
CisgICAgc3RydWN0IHN0YXR2ZnMgZmlsZVN5c3RlbVN0YXQ7CisgICAgaWYgKHN0YXR2ZnMoZmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSwgJmZpbGVTeXN0ZW1TdGF0KSkgewor
ICAgICAgICBmcmVlU3BhY2UgPSBmaWxlU3lzdGVtU3RhdC5mX2JhdmFpbCAqIGZpbGVTeXN0ZW1T
dGF0LmZfZnJzaXplOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZh
bHNlOworfQorI2VuZGlmCisKKyNpZiAhT1MoREFSV0lOKQorU3RyaW5nIG9wZW5UZW1wb3JhcnlG
aWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKK3sK
KyAgICBjaGFyIGJ1ZmZlcltQQVRIX01BWF07CisgICAgY29uc3QgY2hhciogdG1wRGlyID0gZ2V0
ZW52KCJUTVBESVIiKTsKKworICAgIGlmICghdG1wRGlyKQorICAgICAgICB0bXBEaXIgPSAiL3Rt
cCI7CisKKyAgICBpZiAoc25wcmludGYoYnVmZmVyLCBQQVRIX01BWCwgIiVzLyVzWFhYWFhYIiwg
dG1wRGlyLCBwcmVmaXgudXRmOCgpLmRhdGEoKSkgPj0gUEFUSF9NQVgpCisgICAgICAgIGdvdG8g
ZW5kOworCisgICAgaGFuZGxlID0gbWtzdGVtcChidWZmZXIpOworICAgIGlmIChoYW5kbGUgPCAw
KQorICAgICAgICBnb3RvIGVuZDsKKworICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZl
cik7CisKK2VuZDoKKyAgICBoYW5kbGUgPSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOworICAg
IHJldHVybiBTdHJpbmcoKTsKK30KKyNlbmRpZgorCitib29sIGhhcmRMaW5rT3JDb3B5RmlsZShj
b25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbikKK3sKKyAgICBp
ZiAoc291cmNlLmlzRW1wdHkoKSB8fCBkZXN0aW5hdGlvbi5pc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIENTdHJpbmcgZnNTb3VyY2UgPSBmaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oc291cmNlKTsKKyAgICBpZiAoIWZzU291cmNlLmRhdGEoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgQ1N0cmluZyBmc0Rlc3RpbmF0aW9uID0gZmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKGRlc3RpbmF0aW9uKTsKKyAgICBpZiAoIWZzRGVzdGluYXRpb24uZGF0YSgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWxpbmsoZnNTb3VyY2UuZGF0YSgpLCBmc0Rl
c3RpbmF0aW9uLmRhdGEoKSkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gSGFyZCBs
aW5rIGZhaWxlZC4gUGVyZm9ybSBhIGNvcHkgaW5zdGVhZC4KKyAgICBhdXRvIGhhbmRsZSA9IG9w
ZW4oZnNEZXN0aW5hdGlvbi5kYXRhKCksIE9fV1JPTkxZIHwgT19DUkVBVCB8IE9fRVhDTCwgMDY2
Nik7CisgICAgaWYgKGhhbmRsZSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
Ym9vbCBhcHBlbmRSZXN1bHQgPSBhcHBlbmRGaWxlQ29udGVudHNUb0ZpbGVIYW5kbGUoc291cmNl
LCBoYW5kbGUpOworICAgIGNsb3NlKGhhbmRsZSk7CisKKyAgICAvLyBJZiB0aGUgY29weSBmYWls
ZWQsIGRlbGV0ZSB0aGUgdW51c2FibGUgZmlsZS4KKyAgICBpZiAoIWFwcGVuZFJlc3VsdCkKKyAg
ICAgICAgdW5saW5rKGZzRGVzdGluYXRpb24uZGF0YSgpKTsKKworICAgIHJldHVybiBhcHBlbmRS
ZXN1bHQ7Cit9CisKK09wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3Ry
aW5nJiBmc0ZpbGUpCit7CisgICAgc3RydWN0IHN0YXQgZmlsZVN0YXQ7CisgICAgaWYgKHN0YXQo
ZnNGaWxlLmRhdGEoKSwgJmZpbGVTdGF0KSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKworICAgIHJldHVybiBmaWxlU3RhdC5zdF9kZXY7Cit9CisKK1N0cmluZyByZWFsUGF0
aChjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQoreworICAgIENTdHJpbmcgZnNSZXAgPSBmaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oZmlsZVBhdGgpOworICAgIGNoYXIgcmVzb2x2ZWROYW1lW1BBVEhf
TUFYXTsKKyAgICBjb25zdCBjaGFyKiByZXN1bHQgPSByZWFscGF0aChmc1JlcC5kYXRhKCksIHJl
c29sdmVkTmFtZSk7CisgICAgcmV0dXJuIHJlc3VsdCA/IFN0cmluZzo6ZnJvbVVURjgocmVzdWx0
KSA6IGZpbGVQYXRoOworfQorCit9IC8vIG5hbWVzcGFjZSBGaWxlU3lzdGVtSW1wbAorfSAvLyBu
YW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9zcGkvbWFjL01ldGFkYXRh
U1BJLmggYi9Tb3VyY2UvV1RGL3d0Zi9zcGkvbWFjL01ldGFkYXRhU1BJLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ODE1NTQ3YzZiODUxMGUzMDYxOGUyMjgyYWQ1Yjc4NDAxNmNhMzcyMQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XVEYvd3RmL3NwaS9tYWMvTWV0YWRhdGFTUEkuaApAQCAtMCwwICsxLDM4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RL
KQorCisjaW5jbHVkZSA8Q29yZVNlcnZpY2VzL0NvcmVTZXJ2aWNlc1ByaXYuaD4KKworI2VuZGlm
CisKK1dURl9FWFRFUk5fQ19CRUdJTgorCitCb29sZWFuIE1ESXRlbVNldEF0dHJpYnV0ZShNREl0
ZW1SZWYsIENGU3RyaW5nUmVmIG5hbWUsIENGVHlwZVJlZiBhdHRyKTsKKworV1RGX0VYVEVSTl9D
X0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwIGIv
U291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAwZTMzNTJh
MzZkODI3MmVmZTkzNTc1YTljZTk5YzEwYTUzOGZkZDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAKQEAgLTAsMCArMSw1ODYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDctMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhLCBMdGQuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJ
bmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAg
IGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KKworI2luY2x1ZGUgPGlv
Lmg+CisjaW5jbHVkZSA8c2hsb2JqLmg+CisjaW5jbHVkZSA8c2hsd2FwaS5oPgorI2luY2x1ZGUg
PHN5cy9zdGF0Lmg+CisjaW5jbHVkZSA8d2luZG93cy5oPgorI2luY2x1ZGUgPHd0Zi9DcnlwdG9n
cmFwaGljYWxseVJhbmRvbU51bWJlci5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlTWV0YWRhdGEuaD4K
KyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
d2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL3dpbi9QYXRoV2Fsa2VyLmg+
CisKK25hbWVzcGFjZSBXVEYgeworCituYW1lc3BhY2UgRmlsZVN5c3RlbUltcGwgeworCitzdGF0
aWMgY29uc3QgVUxPTkdMT05HIGtTZWNvbmRzRnJvbUZpbGVUaW1lVG9UaW1ldCA9IDExNjQ0NDcz
NjAwOworCitzdGF0aWMgYm9vbCBnZXRGaW5kRGF0YShTdHJpbmcgcGF0aCwgV0lOMzJfRklORF9E
QVRBVyYgZmluZERhdGEpCit7CisgICAgSEFORExFIGhhbmRsZSA9IEZpbmRGaXJzdEZpbGVXKHN0
cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihwYXRoKS5kYXRhKCksICZmaW5kRGF0YSk7CisgICAg
aWYgKGhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIEZpbmRDbG9zZShoYW5kbGUpOworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMg
Ym9vbCBnZXRGaWxlU2l6ZUZyb21GaW5kRGF0YShjb25zdCBXSU4zMl9GSU5EX0RBVEFXJiBmaW5k
RGF0YSwgbG9uZyBsb25nJiBzaXplKQoreworICAgIFVMQVJHRV9JTlRFR0VSIGZpbGVTaXplOwor
ICAgIGZpbGVTaXplLkhpZ2hQYXJ0ID0gZmluZERhdGEubkZpbGVTaXplSGlnaDsKKyAgICBmaWxl
U2l6ZS5Mb3dQYXJ0ID0gZmluZERhdGEubkZpbGVTaXplTG93OworCisgICAgaWYgKGZpbGVTaXpl
LlF1YWRQYXJ0ID4gc3RhdGljX2Nhc3Q8VUxPTkdMT05HPihzdGQ6Om51bWVyaWNfbGltaXRzPGxv
bmcgbG9uZz46Om1heCgpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgc2l6ZSA9IGZp
bGVTaXplLlF1YWRQYXJ0OworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgYm9vbCBnZXRG
aWxlU2l6ZUZyb21CeUhhbmRsZUZpbGVJbmZvcm1hdGlvblN0cnVjdHVyZShjb25zdCBCWV9IQU5E
TEVfRklMRV9JTkZPUk1BVElPTiYgZmlsZUluZm9ybWF0aW9uLCBsb25nIGxvbmcmIHNpemUpCit7
CisgICAgVUxBUkdFX0lOVEVHRVIgZmlsZVNpemU7CisgICAgZmlsZVNpemUuSGlnaFBhcnQgPSBm
aWxlSW5mb3JtYXRpb24ubkZpbGVTaXplSGlnaDsKKyAgICBmaWxlU2l6ZS5Mb3dQYXJ0ID0gZmls
ZUluZm9ybWF0aW9uLm5GaWxlU2l6ZUxvdzsKKworICAgIGlmIChmaWxlU2l6ZS5RdWFkUGFydCA+
IHN0YXRpY19jYXN0PFVMT05HTE9ORz4oc3RkOjpudW1lcmljX2xpbWl0czxsb25nIGxvbmc+Ojpt
YXgoKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHNpemUgPSBmaWxlU2l6ZS5RdWFk
UGFydDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIHZvaWQgZ2V0RmlsZUNyZWF0aW9u
VGltZUZyb21GaW5kRGF0YShjb25zdCBXSU4zMl9GSU5EX0RBVEFXJiBmaW5kRGF0YSwgdGltZV90
JiB0aW1lKQoreworICAgIFVMQVJHRV9JTlRFR0VSIGZpbGVUaW1lOworICAgIGZpbGVUaW1lLkhp
Z2hQYXJ0ID0gZmluZERhdGEuZnRDcmVhdGlvblRpbWUuZHdIaWdoRGF0ZVRpbWU7CisgICAgZmls
ZVRpbWUuTG93UGFydCA9IGZpbmREYXRhLmZ0Q3JlYXRpb25UaW1lLmR3TG93RGF0ZVRpbWU7CisK
KyAgICAvLyBJbmZvcm1hdGlvbiBhYm91dCBjb252ZXJ0aW5nIHRpbWVfdCB0byBGaWxlVGltZSBp
cyBhdmFpbGFibGUgYXQgaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L21z
NzI0MjI4JTI4dj12cy44NSUyOS5hc3B4CisgICAgdGltZSA9IGZpbGVUaW1lLlF1YWRQYXJ0IC8g
MTAwMDAwMDAgLSBrU2Vjb25kc0Zyb21GaWxlVGltZVRvVGltZXQ7Cit9CisKKworc3RhdGljIHZv
aWQgZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWVGcm9tRmluZERhdGEoY29uc3QgV0lOMzJfRklORF9E
QVRBVyYgZmluZERhdGEsIHRpbWVfdCYgdGltZSkKK3sKKyAgICBVTEFSR0VfSU5URUdFUiBmaWxl
VGltZTsKKyAgICBmaWxlVGltZS5IaWdoUGFydCA9IGZpbmREYXRhLmZ0TGFzdFdyaXRlVGltZS5k
d0hpZ2hEYXRlVGltZTsKKyAgICBmaWxlVGltZS5Mb3dQYXJ0ID0gZmluZERhdGEuZnRMYXN0V3Jp
dGVUaW1lLmR3TG93RGF0ZVRpbWU7CisKKyAgICAvLyBJbmZvcm1hdGlvbiBhYm91dCBjb252ZXJ0
aW5nIHRpbWVfdCB0byBGaWxlVGltZSBpcyBhdmFpbGFibGUgYXQgaHR0cDovL21zZG4ubWljcm9z
b2Z0LmNvbS9lbi11cy9saWJyYXJ5L21zNzI0MjI4JTI4dj12cy44NSUyOS5hc3B4CisgICAgdGlt
ZSA9IGZpbGVUaW1lLlF1YWRQYXJ0IC8gMTAwMDAwMDAgLSBrU2Vjb25kc0Zyb21GaWxlVGltZVRv
VGltZXQ7Cit9CisKK2Jvb2wgZ2V0RmlsZVNpemUoY29uc3QgU3RyaW5nJiBwYXRoLCBsb25nIGxv
bmcmIHNpemUpCit7CisgICAgV0lOMzJfRklORF9EQVRBVyBmaW5kRGF0YTsKKyAgICBpZiAoIWdl
dEZpbmREYXRhKHBhdGgsIGZpbmREYXRhKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
cmV0dXJuIGdldEZpbGVTaXplRnJvbUZpbmREYXRhKGZpbmREYXRhLCBzaXplKTsKK30KKworYm9v
bCBnZXRGaWxlU2l6ZShQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRsZSwgbG9uZyBsb25nJiBz
aXplKQoreworICAgIEJZX0hBTkRMRV9GSUxFX0lORk9STUFUSU9OIGZpbGVJbmZvcm1hdGlvbjsK
KyAgICBpZiAoITo6R2V0RmlsZUluZm9ybWF0aW9uQnlIYW5kbGUoZmlsZUhhbmRsZSwgJmZpbGVJ
bmZvcm1hdGlvbikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBnZXRGaWxl
U2l6ZUZyb21CeUhhbmRsZUZpbGVJbmZvcm1hdGlvblN0cnVjdHVyZShmaWxlSW5mb3JtYXRpb24s
IHNpemUpOworfQorCitPcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUo
Y29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIFdJTjMyX0ZJTkRfREFUQVcgZmluZERhdGE7Cisg
ICAgaWYgKCFnZXRGaW5kRGF0YShwYXRoLCBmaW5kRGF0YSkpCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisKKyAgICB0aW1lX3QgdGltZSA9IDA7CisgICAgZ2V0RmlsZU1vZGlmaWNhdGlv
blRpbWVGcm9tRmluZERhdGEoZmluZERhdGEsIHRpbWUpOworICAgIHJldHVybiBXYWxsVGltZTo6
ZnJvbVJhd1NlY29uZHModGltZSk7Cit9CisKK09wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlQ3Jl
YXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBXSU4zMl9GSU5EX0RBVEFXIGZp
bmREYXRhOworICAgIGlmICghZ2V0RmluZERhdGEocGF0aCwgZmluZERhdGEpKQorICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgdGltZV90IHRpbWUgPSAwOworICAgIGdldEZpbGVD
cmVhdGlvblRpbWVGcm9tRmluZERhdGEoZmluZERhdGEsIHRpbWUpOworICAgIHJldHVybiBXYWxs
VGltZTo6ZnJvbVJhd1NlY29uZHModGltZSk7Cit9CisKK3N0YXRpYyBTdHJpbmcgZ2V0RmluYWxQ
YXRoTmFtZShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgYXV0byBoYW5kbGUgPSBvcGVuRmls
ZShwYXRoLCBGaWxlT3Blbk1vZGU6OlJlYWQpOworICAgIGlmICghaXNIYW5kbGVWYWxpZChoYW5k
bGUpKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBWZWN0b3I8VUNoYXI+IGJ1ZmZl
cihNQVhfUEFUSCk7CisgICAgaWYgKDo6R2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlVyhoYW5kbGUs
IGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCksIFZPTFVNRV9OQU1FX05UKSA+PSBNQVhfUEFU
SCkgeworICAgICAgICBjbG9zZUZpbGUoaGFuZGxlKTsKKyAgICAgICAgcmV0dXJuIFN0cmluZygp
OworICAgIH0KKyAgICBjbG9zZUZpbGUoaGFuZGxlKTsKKworICAgIGJ1ZmZlci5zaHJpbmsod2Nz
bGVuKGJ1ZmZlci5kYXRhKCkpKTsKKyAgICByZXR1cm4gU3RyaW5nOjphZG9wdChXVEZNb3ZlKGJ1
ZmZlcikpOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgaXNTeW1ib2xpY0xpbmsoV0lOMzJfRklO
RF9EQVRBVyBmaW5kRGF0YSkKK3sKKyAgICByZXR1cm4gZmluZERhdGEuZHdGaWxlQXR0cmlidXRl
cyAmIEZJTEVfQVRUUklCVVRFX1JFUEFSU0VfUE9JTlQgJiYgZmluZERhdGEuZHdSZXNlcnZlZDAg
PT0gSU9fUkVQQVJTRV9UQUdfU1lNTElOSzsKK30KKworc3RhdGljIEZpbGVNZXRhZGF0YTo6VHlw
ZSB0b0ZpbGVNZXRhZGF0YVR5cGUoV0lOMzJfRklORF9EQVRBVyBmaW5kRGF0YSkKK3sKKyAgICBp
ZiAoZmluZERhdGEuZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWSkK
KyAgICAgICAgcmV0dXJuIEZpbGVNZXRhZGF0YTo6VHlwZTo6RGlyZWN0b3J5OworICAgIGlmIChp
c1N5bWJvbGljTGluayhmaW5kRGF0YSkpCisgICAgICAgIHJldHVybiBGaWxlTWV0YWRhdGE6OlR5
cGU6OlN5bWJvbGljTGluazsKKyAgICByZXR1cm4gRmlsZU1ldGFkYXRhOjpUeXBlOjpGaWxlOwor
fQorCitzdGF0aWMgT3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaW5kRGF0YVRvRmlsZU1ldGFkYXRh
KFdJTjMyX0ZJTkRfREFUQVcgZmluZERhdGEpCit7CisgICAgbG9uZyBsb25nIGxlbmd0aDsKKyAg
ICBpZiAoIWdldEZpbGVTaXplRnJvbUZpbmREYXRhKGZpbmREYXRhLCBsZW5ndGgpKQorICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgdGltZV90IG1vZGlmaWNhdGlvblRpbWU7Cisg
ICAgZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWVGcm9tRmluZERhdGEoZmluZERhdGEsIG1vZGlmaWNh
dGlvblRpbWUpOworCisgICAgcmV0dXJuIEZpbGVNZXRhZGF0YSB7CisgICAgICAgIFdhbGxUaW1l
Ojpmcm9tUmF3U2Vjb25kcyhtb2RpZmljYXRpb25UaW1lKSwKKyAgICAgICAgbGVuZ3RoLAorICAg
ICAgICBzdGF0aWNfY2FzdDxib29sPihmaW5kRGF0YS5kd0ZpbGVBdHRyaWJ1dGVzICYgRklMRV9B
VFRSSUJVVEVfSElEREVOKSwKKyAgICAgICAgdG9GaWxlTWV0YWRhdGFUeXBlKGZpbmREYXRhKQor
ICAgIH07Cit9CisKK09wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhKGNvbnN0IFN0
cmluZyYgcGF0aCkKK3sKKyAgICBXSU4zMl9GSU5EX0RBVEFXIGZpbmREYXRhOworICAgIGlmICgh
Z2V0RmluZERhdGEocGF0aCwgZmluZERhdGEpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworCisgICAgcmV0dXJuIGZpbmREYXRhVG9GaWxlTWV0YWRhdGEoZmluZERhdGEpOworfQorCitP
cHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YUZvbGxvd2luZ1N5bWxpbmtzKGNvbnN0
IFN0cmluZyYgcGF0aCkKK3sKKyAgICBXSU4zMl9GSU5EX0RBVEFXIGZpbmREYXRhOworICAgIGlm
ICghZ2V0RmluZERhdGEocGF0aCwgZmluZERhdGEpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworCisgICAgaWYgKGlzU3ltYm9saWNMaW5rKGZpbmREYXRhKSkgeworICAgICAgICBTdHJp
bmcgdGFyZ2V0UGF0aCA9IGdldEZpbmFsUGF0aE5hbWUocGF0aCk7CisgICAgICAgIGlmICh0YXJn
ZXRQYXRoLmlzTnVsbCgpKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgaWYgKCFnZXRGaW5kRGF0YSh0YXJnZXRQYXRoLCBmaW5kRGF0YSkpCisgICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgIH0KKworICAgIHJldHVybiBmaW5kRGF0YVRvRmlsZU1l
dGFkYXRhKGZpbmREYXRhKTsKK30KKworYm9vbCBjcmVhdGVTeW1ib2xpY0xpbmsoY29uc3QgU3Ry
aW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGljTGlua1BhdGgpCit7CisgICAg
cmV0dXJuICE6OkNyZWF0ZVN5bWJvbGljTGlua1coc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFy
KHN5bWJvbGljTGlua1BhdGgpLmRhdGEoKSwgc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKHRh
cmdldFBhdGgpLmRhdGEoKSwgMCk7Cit9CisKK2Jvb2wgZmlsZUV4aXN0cyhjb25zdCBTdHJpbmcm
IHBhdGgpCit7CisgICAgV0lOMzJfRklORF9EQVRBVyBmaW5kRGF0YTsKKyAgICByZXR1cm4gZ2V0
RmluZERhdGEocGF0aCwgZmluZERhdGEpOworfQorCitib29sIGRlbGV0ZUZpbGUoY29uc3QgU3Ry
aW5nJiBwYXRoKQoreworICAgIFN0cmluZyBmaWxlbmFtZSA9IHBhdGg7CisgICAgcmV0dXJuICEh
RGVsZXRlRmlsZVcoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGZpbGVuYW1lKS5kYXRhKCkp
OworfQorCitib29sIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkKK3sK
KyAgICBTdHJpbmcgZmlsZW5hbWUgPSBwYXRoOworICAgIHJldHVybiAhIVJlbW92ZURpcmVjdG9y
eVcoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGZpbGVuYW1lKS5kYXRhKCkpOworfQorCiti
b29sIG1vdmVGaWxlKGNvbnN0IFN0cmluZyYgb2xkUGF0aCwgY29uc3QgU3RyaW5nJiBuZXdQYXRo
KQoreworICAgIFN0cmluZyBvbGRGaWxlbmFtZSA9IG9sZFBhdGg7CisgICAgU3RyaW5nIG5ld0Zp
bGVuYW1lID0gbmV3UGF0aDsKKyAgICByZXR1cm4gISE6Ok1vdmVGaWxlRXgoc3RyaW5nVG9OdWxs
VGVybWluYXRlZFdDaGFyKG9sZEZpbGVuYW1lKS5kYXRhKCksIHN0cmluZ1RvTnVsbFRlcm1pbmF0
ZWRXQ2hhcihuZXdGaWxlbmFtZSkuZGF0YSgpLCBNT1ZFRklMRV9DT1BZX0FMTE9XRUQgfCBNT1ZF
RklMRV9SRVBMQUNFX0VYSVNUSU5HKTsKK30KKworU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29tcG9uZW50KQoreworICAg
IFZlY3RvcjxVQ2hhcj4gYnVmZmVyKE1BWF9QQVRIKTsKKworICAgIGlmIChwYXRoLmxlbmd0aCgp
ICsgMSA+IGJ1ZmZlci5zaXplKCkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIFN0
cmluZ1ZpZXcocGF0aCkuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoYnVmZmVyLmRhdGEoKSk7
CisgICAgYnVmZmVyW3BhdGgubGVuZ3RoKCldID0gJ1wwJzsKKworICAgIGlmICghUGF0aEFwcGVu
ZFcoYnVmZmVyLmRhdGEoKSwgc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGNvbXBvbmVudCku
ZGF0YSgpKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgYnVmZmVyLnNocmluayh3
Y3NsZW4oYnVmZmVyLmRhdGEoKSkpOworCisgICAgcmV0dXJuIFN0cmluZzo6YWRvcHQoV1RGTW92
ZShidWZmZXIpKTsKK30KKworU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMoU3RyaW5n
VmlldyBwYXRoLCBjb25zdCBWZWN0b3I8U3RyaW5nVmlldz4mIGNvbXBvbmVudHMpCit7CisgICAg
U3RyaW5nIHJlc3VsdCA9IHBhdGgudG9TdHJpbmcoKTsKKyAgICBmb3IgKGF1dG8mIGNvbXBvbmVu
dCA6IGNvbXBvbmVudHMpCisgICAgICAgIHJlc3VsdCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChyZXN1bHQsIGNvbXBvbmVudC50b1N0cmluZygpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQor
CisjaWYgIVVTRShDRikKKworQ1N0cmluZyBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3Qg
U3RyaW5nJiBwYXRoKQoreworICAgIGF1dG8gdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzID0gcGF0aC51
cGNvbnZlcnRlZENoYXJhY3RlcnMoKTsKKworICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzID0g
dXBjb252ZXJ0ZWRDaGFyYWN0ZXJzOworICAgIGludCBzaXplID0gV2lkZUNoYXJUb011bHRpQnl0
ZShDUF9BQ1AsIDAsIGNoYXJhY3RlcnMsIHBhdGgubGVuZ3RoKCksIDAsIDAsIDAsIDApIC0gMTsK
KworICAgIGNoYXIqIGJ1ZmZlcjsKKyAgICBDU3RyaW5nIHN0cmluZyA9IENTdHJpbmc6Om5ld1Vu
aW5pdGlhbGl6ZWQoc2l6ZSwgYnVmZmVyKTsKKworICAgIFdpZGVDaGFyVG9NdWx0aUJ5dGUoQ1Bf
QUNQLCAwLCBjaGFyYWN0ZXJzLCBwYXRoLmxlbmd0aCgpLCBidWZmZXIsIHNpemUsIDAsIDApOwor
CisgICAgcmV0dXJuIHN0cmluZzsKK30KKworI2VuZGlmIC8vICFVU0UoQ0YpCisKK2Jvb2wgbWFr
ZUFsbERpcmVjdG9yaWVzKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBTdHJpbmcgZnVsbFBh
dGggPSBwYXRoOworICAgIGlmIChTSENyZWF0ZURpcmVjdG9yeUV4KDAsIHN0cmluZ1RvTnVsbFRl
cm1pbmF0ZWRXQ2hhcihmdWxsUGF0aCkuZGF0YSgpLCAwKSAhPSBFUlJPUl9TVUNDRVNTKSB7Cisg
ICAgICAgIERXT1JEIGVycm9yID0gR2V0TGFzdEVycm9yKCk7CisgICAgICAgIGlmIChlcnJvciAh
PSBFUlJPUl9GSUxFX0VYSVNUUyAmJiBlcnJvciAhPSBFUlJPUl9BTFJFQURZX0VYSVNUUykgewor
ICAgICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIHBhdGggJXMiLCBwYXRoLmFz
Y2lpKCkuZGF0YSgpKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAg
IH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworU3RyaW5nIGhvbWVEaXJlY3RvcnlQYXRoKCkKK3sK
KyAgICByZXR1cm4gIiI7Cit9CisKK1N0cmluZyBwYXRoR2V0RmlsZU5hbWUoY29uc3QgU3RyaW5n
JiBwYXRoKQoreworICAgIHJldHVybiBudWxsVGVybWluYXRlZFdDaGFyVG9TdHJpbmcoOjpQYXRo
RmluZEZpbGVOYW1lKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihwYXRoKS5kYXRhKCkpKTsK
K30KKworU3RyaW5nIGRpcmVjdG9yeU5hbWUoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIFN0
cmluZyBuYW1lID0gcGF0aC5sZWZ0KHBhdGgubGVuZ3RoKCkgLSBwYXRoR2V0RmlsZU5hbWUocGF0
aCkubGVuZ3RoKCkpOworICAgIGlmIChuYW1lLmNoYXJhY3RlclN0YXJ0aW5nQXQobmFtZS5sZW5n
dGgoKSAtIDEpID09ICdcXCcpIHsKKyAgICAgICAgLy8gUmVtb3ZlIGFueSB0cmFpbGluZyAiXCIu
CisgICAgICAgIG5hbWUudHJ1bmNhdGUobmFtZS5sZW5ndGgoKSAtIDEpOworICAgIH0KKyAgICBy
ZXR1cm4gbmFtZTsKK30KKworc3RhdGljIFN0cmluZyBidW5kbGVOYW1lKCkKK3sKKyAgICBzdGF0
aWMgY29uc3QgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBuYW1lID0gW10geworICAgICAgICBTdHJp
bmcgbmFtZSB7ICJXZWJLaXQiX3MgfTsKKworI2lmIFVTRShDRikKKyAgICAgICAgaWYgKENGQnVu
ZGxlUmVmIGJ1bmRsZSA9IENGQnVuZGxlR2V0TWFpbkJ1bmRsZSgpKSB7CisgICAgICAgICAgICBp
ZiAoQ0ZUeXBlUmVmIGJ1bmRsZUV4ZWN1dGFibGUgPSBDRkJ1bmRsZUdldFZhbHVlRm9ySW5mb0Rp
Y3Rpb25hcnlLZXkoYnVuZGxlLCBrQ0ZCdW5kbGVFeGVjdXRhYmxlS2V5KSkgeworICAgICAgICAg
ICAgICAgIGlmIChDRkdldFR5cGVJRChidW5kbGVFeGVjdXRhYmxlKSA9PSBDRlN0cmluZ0dldFR5
cGVJRCgpKQorICAgICAgICAgICAgICAgICAgICBuYW1lID0gcmVpbnRlcnByZXRfY2FzdDxDRlN0
cmluZ1JlZj4oYnVuZGxlRXhlY3V0YWJsZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyNl
bmRpZgorCisgICAgICAgIHJldHVybiBuYW1lOworICAgIH0oKTsKKworICAgIHJldHVybiBuYW1l
OworfQorCitzdGF0aWMgU3RyaW5nIHN0b3JhZ2VEaXJlY3RvcnkoRFdPUkQgcGF0aElkZW50aWZp
ZXIpCit7CisgICAgVmVjdG9yPFVDaGFyPiBidWZmZXIoTUFYX1BBVEgpOworICAgIGlmIChGQUlM
RUQoU0hHZXRGb2xkZXJQYXRoVygwLCBwYXRoSWRlbnRpZmllciB8IENTSURMX0ZMQUdfQ1JFQVRF
LCAwLCAwLCBidWZmZXIuZGF0YSgpKSkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICBi
dWZmZXIucmVzaXplKHdjc2xlbihidWZmZXIuZGF0YSgpKSk7CisgICAgU3RyaW5nIGRpcmVjdG9y
eSA9IFN0cmluZzo6YWRvcHQoV1RGTW92ZShidWZmZXIpKTsKKworICAgIGRpcmVjdG9yeSA9IHBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChkaXJlY3RvcnksICJBcHBsZSBDb21wdXRlclxcIiArIGJ1
bmRsZU5hbWUoKSk7CisgICAgaWYgKCFtYWtlQWxsRGlyZWN0b3JpZXMoZGlyZWN0b3J5KSkKKyAg
ICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgcmV0dXJuIGRpcmVjdG9yeTsKK30KKworc3Rh
dGljIFN0cmluZyBjYWNoZWRTdG9yYWdlRGlyZWN0b3J5KERXT1JEIHBhdGhJZGVudGlmaWVyKQor
eworICAgIHN0YXRpYyBIYXNoTWFwPERXT1JELCBTdHJpbmc+IGRpcmVjdG9yaWVzOworCisgICAg
SGFzaE1hcDxEV09SRCwgU3RyaW5nPjo6aXRlcmF0b3IgaXQgPSBkaXJlY3Rvcmllcy5maW5kKHBh
dGhJZGVudGlmaWVyKTsKKyAgICBpZiAoaXQgIT0gZGlyZWN0b3JpZXMuZW5kKCkpCisgICAgICAg
IHJldHVybiBpdC0+dmFsdWU7CisKKyAgICBTdHJpbmcgZGlyZWN0b3J5ID0gc3RvcmFnZURpcmVj
dG9yeShwYXRoSWRlbnRpZmllcik7CisgICAgZGlyZWN0b3JpZXMuYWRkKHBhdGhJZGVudGlmaWVy
LCBkaXJlY3RvcnkpOworCisgICAgcmV0dXJuIGRpcmVjdG9yeTsKK30KKworc3RhdGljIFN0cmlu
ZyBnZW5lcmF0ZVRlbXBvcmFyeVBhdGgoY29uc3QgRnVuY3Rpb248Ym9vbChjb25zdCBTdHJpbmcm
KT4mIGFjdGlvbikKK3sKKyAgICB3Y2hhcl90IHRlbXBQYXRoW01BWF9QQVRIXTsKKyAgICBpbnQg
dGVtcFBhdGhMZW5ndGggPSA6OkdldFRlbXBQYXRoVyhXVEZfQVJSQVlfTEVOR1RIKHRlbXBQYXRo
KSwgdGVtcFBhdGgpOworICAgIGlmICh0ZW1wUGF0aExlbmd0aCA8PSAwIHx8IHRlbXBQYXRoTGVu
Z3RoID4gV1RGX0FSUkFZX0xFTkdUSCh0ZW1wUGF0aCkpCisgICAgICAgIHJldHVybiBTdHJpbmco
KTsKKworICAgIFN0cmluZyBwcm9wb3NlZFBhdGg7CisgICAgZG8geworICAgICAgICB3Y2hhcl90
IHRlbXBGaWxlW10gPSBMIlhYWFhYWFhYLnRtcCI7IC8vIFVzZSA4LjMgc3R5bGUgbmFtZSAobW9y
ZSBjaGFyYWN0ZXJzIGFyZW4ndCBoZWxwZnVsIGR1ZSB0byA4LjMgc2hvcnQgZmlsZSBuYW1lcykK
KyAgICAgICAgY29uc3QgaW50IHJhbmRvbVBhcnRMZW5ndGggPSA4OworICAgICAgICBjcnlwdG9n
cmFwaGljYWxseVJhbmRvbVZhbHVlcyh0ZW1wRmlsZSwgcmFuZG9tUGFydExlbmd0aCAqIHNpemVv
Zih3Y2hhcl90KSk7CisKKyAgICAgICAgLy8gTGltaXQgdG8gdmFsaWQgZmlsZXN5c3RlbSBjaGFy
YWN0ZXJzLCBhbHNvIGV4Y2x1ZGluZyBvdGhlcnMgdGhhdCBjb3VsZCBiZSBwcm9ibGVtYXRpYywg
bGlrZSBwdW5jdHVhdGlvbi4KKyAgICAgICAgLy8gZG9uJ3QgaW5jbHVkZSBib3RoIHVwcGVyIGFu
ZCBsb3dlcmNhc2Ugc2luY2UgV2luZG93cyBmaWxlIHN5c3RlbXMgYXJlIHR5cGljYWxseSBub3Qg
Y2FzZSBzZW5zaXRpdmUuCisgICAgICAgIGNvbnN0IGNoYXIgdmFsaWRDaGFyc1tdID0gIjAxMjM0
NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiI7CisgICAgICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgcmFuZG9tUGFydExlbmd0aDsgKytpKQorICAgICAgICAgICAgdGVtcEZpbGVbaV0gPSB2
YWxpZENoYXJzW3RlbXBGaWxlW2ldICUgKHNpemVvZih2YWxpZENoYXJzKSAtIDEpXTsKKworICAg
ICAgICBBU1NFUlQod2NzbGVuKHRlbXBGaWxlKSA9PSBXVEZfQVJSQVlfTEVOR1RIKHRlbXBGaWxl
KSAtIDEpOworCisgICAgICAgIHByb3Bvc2VkUGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChudWxsVGVybWluYXRlZFdDaGFyVG9TdHJpbmcodGVtcFBhdGgpLCBudWxsVGVybWluYXRlZFdD
aGFyVG9TdHJpbmcodGVtcEZpbGUpKTsKKyAgICAgICAgaWYgKHByb3Bvc2VkUGF0aC5pc0VtcHR5
KCkpCisgICAgICAgICAgICBicmVhazsKKyAgICB9IHdoaWxlICghYWN0aW9uKHByb3Bvc2VkUGF0
aCkpOworCisgICAgcmV0dXJuIHByb3Bvc2VkUGF0aDsKK30KKworU3RyaW5nIG9wZW5UZW1wb3Jh
cnlGaWxlKGNvbnN0IFN0cmluZyYsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKQoreworICAg
IGhhbmRsZSA9IElOVkFMSURfSEFORExFX1ZBTFVFOworCisgICAgU3RyaW5nIHByb3Bvc2VkUGF0
aCA9IGdlbmVyYXRlVGVtcG9yYXJ5UGF0aChbJmhhbmRsZV0oY29uc3QgU3RyaW5nJiBwcm9wb3Nl
ZFBhdGgpIHsKKyAgICAgICAgLy8gdXNlIENSRUFURV9ORVcgdG8gYXZvaWQgb3ZlcndyaXRpbmcg
YW4gZXhpc3RpbmcgZmlsZSB3aXRoIHRoZSBzYW1lIG5hbWUKKyAgICAgICAgaGFuZGxlID0gOjpD
cmVhdGVGaWxlVyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIocHJvcG9zZWRQYXRoKS5kYXRh
KCksIEdFTkVSSUNfUkVBRCB8IEdFTkVSSUNfV1JJVEUsIDAsIDAsIENSRUFURV9ORVcsIEZJTEVf
QVRUUklCVVRFX05PUk1BTCwgMCk7CisKKyAgICAgICAgcmV0dXJuIGlzSGFuZGxlVmFsaWQoaGFu
ZGxlKSB8fCBHZXRMYXN0RXJyb3IoKSA9PSBFUlJPUl9BTFJFQURZX0VYSVNUUzsKKyAgICB9KTsK
KworICAgIGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUpKQorICAgICAgICByZXR1cm4gU3RyaW5n
KCk7CisKKyAgICByZXR1cm4gcHJvcG9zZWRQYXRoOworfQorCitQbGF0Zm9ybUZpbGVIYW5kbGUg
b3BlbkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUgbW9kZSkKK3sKKyAgICBE
V09SRCBkZXNpcmVkQWNjZXNzID0gMDsKKyAgICBEV09SRCBjcmVhdGlvbkRpc3Bvc2l0aW9uID0g
MDsKKyAgICBEV09SRCBzaGFyZU1vZGUgPSAwOworICAgIHN3aXRjaCAobW9kZSkgeworICAgIGNh
c2UgRmlsZU9wZW5Nb2RlOjpSZWFkOgorICAgICAgICBkZXNpcmVkQWNjZXNzID0gR0VORVJJQ19S
RUFEOworICAgICAgICBjcmVhdGlvbkRpc3Bvc2l0aW9uID0gT1BFTl9FWElTVElORzsKKyAgICAg
ICAgc2hhcmVNb2RlID0gRklMRV9TSEFSRV9SRUFEOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IEZpbGVPcGVuTW9kZTo6V3JpdGU6CisgICAgICAgIGRlc2lyZWRBY2Nlc3MgPSBHRU5FUklDX1dS
SVRFOworICAgICAgICBjcmVhdGlvbkRpc3Bvc2l0aW9uID0gQ1JFQVRFX0FMV0FZUzsKKyAgICAg
ICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgfQorCisgICAgU3RyaW5nIGRlc3RpbmF0aW9uID0gcGF0aDsKKyAgICByZXR1cm4gQ3JlYXRl
RmlsZShzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoZGVzdGluYXRpb24pLmRhdGEoKSwgZGVz
aXJlZEFjY2Vzcywgc2hhcmVNb2RlLCAwLCBjcmVhdGlvbkRpc3Bvc2l0aW9uLCBGSUxFX0FUVFJJ
QlVURV9OT1JNQUwsIDApOworfQorCit2b2lkIGNsb3NlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUm
IGhhbmRsZSkKK3sKKyAgICBpZiAoaXNIYW5kbGVWYWxpZChoYW5kbGUpKSB7CisgICAgICAgIDo6
Q2xvc2VIYW5kbGUoaGFuZGxlKTsKKyAgICAgICAgaGFuZGxlID0gaW52YWxpZFBsYXRmb3JtRmls
ZUhhbmRsZTsKKyAgICB9Cit9CisKK2xvbmcgbG9uZyBzZWVrRmlsZShQbGF0Zm9ybUZpbGVIYW5k
bGUgaGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0LCBGaWxlU2Vla09yaWdpbiBvcmlnaW4pCit7Cisg
ICAgRFdPUkQgbW92ZU1ldGhvZCA9IEZJTEVfQkVHSU47CisKKyAgICBpZiAob3JpZ2luID09IEZp
bGVTZWVrT3JpZ2luOjpDdXJyZW50KQorICAgICAgICBtb3ZlTWV0aG9kID0gRklMRV9DVVJSRU5U
OworICAgIGVsc2UgaWYgKG9yaWdpbiA9PSBGaWxlU2Vla09yaWdpbjo6RW5kKQorICAgICAgICBt
b3ZlTWV0aG9kID0gRklMRV9FTkQ7CisKKyAgICBMQVJHRV9JTlRFR0VSIGxhcmdlT2Zmc2V0Owor
ICAgIGxhcmdlT2Zmc2V0LlF1YWRQYXJ0ID0gb2Zmc2V0OworCisgICAgbGFyZ2VPZmZzZXQuTG93
UGFydCA9IFNldEZpbGVQb2ludGVyKGhhbmRsZSwgbGFyZ2VPZmZzZXQuTG93UGFydCwgJmxhcmdl
T2Zmc2V0LkhpZ2hQYXJ0LCBtb3ZlTWV0aG9kKTsKKworICAgIGlmIChsYXJnZU9mZnNldC5Mb3dQ
YXJ0ID09IElOVkFMSURfU0VUX0ZJTEVfUE9JTlRFUiAmJiBHZXRMYXN0RXJyb3IoKSAhPSBOT19F
UlJPUikKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgcmV0dXJuIGxhcmdlT2Zmc2V0LlF1YWRQ
YXJ0OworfQorCitpbnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY29u
c3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKK3sKKyAgICBpZiAoIWlzSGFuZGxlVmFsaWQoaGFu
ZGxlKSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgRFdPUkQgYnl0ZXNXcml0dGVuOworICAg
IGJvb2wgc3VjY2VzcyA9IFdyaXRlRmlsZShoYW5kbGUsIGRhdGEsIGxlbmd0aCwgJmJ5dGVzV3Jp
dHRlbiwgMCk7CisKKyAgICBpZiAoIXN1Y2Nlc3MpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihieXRlc1dyaXR0ZW4pOworfQorCitpbnQgcmVhZEZyb21G
aWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCit7
CisgICAgaWYgKCFpc0hhbmRsZVZhbGlkKGhhbmRsZSkpCisgICAgICAgIHJldHVybiAtMTsKKwor
ICAgIERXT1JEIGJ5dGVzUmVhZDsKKyAgICBib29sIHN1Y2Nlc3MgPSA6OlJlYWRGaWxlKGhhbmRs
ZSwgZGF0YSwgbGVuZ3RoLCAmYnl0ZXNSZWFkLCAwKTsKKworICAgIGlmICghc3VjY2VzcykKKyAg
ICAgICAgcmV0dXJuIC0xOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KGJ5dGVzUmVhZCk7
Cit9CisKK2Jvb2wgaGFyZExpbmtPckNvcHlGaWxlKGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25z
dCBTdHJpbmcmIGRlc3RpbmF0aW9uKQoreworICAgIHJldHVybiAhITo6Q29weUZpbGUoc3RyaW5n
VG9OdWxsVGVybWluYXRlZFdDaGFyKHNvdXJjZSkuZGF0YSgpLCBzdHJpbmdUb051bGxUZXJtaW5h
dGVkV0NoYXIoZGVzdGluYXRpb24pLmRhdGEoKSwgVFJVRSk7Cit9CisKK1N0cmluZyBsb2NhbFVz
ZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKQoreworICAgIHJldHVybiBjYWNoZWRTdG9yYWdl
RGlyZWN0b3J5KENTSURMX0xPQ0FMX0FQUERBVEEpOworfQorCitTdHJpbmcgcm9hbWluZ1VzZXJT
cGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKQoreworICAgIHJldHVybiBjYWNoZWRTdG9yYWdlRGly
ZWN0b3J5KENTSURMX0FQUERBVEEpOworfQorCitWZWN0b3I8U3RyaW5nPiBsaXN0RGlyZWN0b3J5
KGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIGZpbHRlcikKK3sKKyAgICBW
ZWN0b3I8U3RyaW5nPiBlbnRyaWVzOworCisgICAgUGF0aFdhbGtlciB3YWxrZXIoZGlyZWN0b3J5
LCBmaWx0ZXIpOworICAgIGlmICghd2Fsa2VyLmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIGVu
dHJpZXM7CisKKyAgICBkbyB7CisgICAgICAgIGlmICh3YWxrZXIuZGF0YSgpLmR3RmlsZUF0dHJp
YnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9ESVJFQ1RPUlkKKyAgICAgICAgICAgICYmICghd2NzY21w
KHdhbGtlci5kYXRhKCkuY0ZpbGVOYW1lLCBMIi4iKSB8fCAhd2NzY21wKHdhbGtlci5kYXRhKCku
Y0ZpbGVOYW1lLCBMIi4uIikpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgZW50
cmllcy5hcHBlbmQoZGlyZWN0b3J5ICsgIlxcIiArIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNo
YXIqPih3YWxrZXIuZGF0YSgpLmNGaWxlTmFtZSkpOworICAgIH0gd2hpbGUgKHdhbGtlci5zdGVw
KCkpOworCisgICAgcmV0dXJuIGVudHJpZXM7Cit9CisKK2Jvb2wgZ2V0Vm9sdW1lRnJlZVNwYWNl
KGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90JikKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK09w
dGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCit7
CisgICAgYXV0byBoYW5kbGUgPSBvcGVuRmlsZShmc0ZpbGUuZGF0YSgpLCBGaWxlT3Blbk1vZGU6
OlJlYWQpOworICAgIGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUpKQorICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworCisgICAgQllfSEFORExFX0ZJTEVfSU5GT1JNQVRJT04gZmlsZUluZm9y
bWF0aW9uID0geyB9OworICAgIGlmICghOjpHZXRGaWxlSW5mb3JtYXRpb25CeUhhbmRsZShoYW5k
bGUsICZmaWxlSW5mb3JtYXRpb24pKSB7CisgICAgICAgIGNsb3NlRmlsZShoYW5kbGUpOworICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIH0KKworICAgIGNsb3NlRmlsZShoYW5kbGUp
OworCisgICAgcmV0dXJuIGZpbGVJbmZvcm1hdGlvbi5kd1ZvbHVtZVNlcmlhbE51bWJlcjsKK30K
KworU3RyaW5nIHJlYWxQYXRoKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCit7CisgICAgcmV0dXJu
IGdldEZpbmFsUGF0aE5hbWUoZmlsZVBhdGgpOworfQorCitTdHJpbmcgY3JlYXRlVGVtcG9yYXJ5
RGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUZW1wb3JhcnlQYXRoKFtdKGNvbnN0
IFN0cmluZyYgcHJvcG9zZWRQYXRoKSB7CisgICAgICAgIHJldHVybiBtYWtlQWxsRGlyZWN0b3Jp
ZXMocHJvcG9zZWRQYXRoKTsKKyAgICB9KTsKK30KKworYm9vbCBkZWxldGVOb25FbXB0eURpcmVj
dG9yeShjb25zdCBTdHJpbmcmIGRpcmVjdG9yeVBhdGgpCit7CisgICAgU0hGSUxFT1BTVFJVQ1Qg
ZGVsZXRlT3BlcmF0aW9uID0geworICAgICAgICBudWxscHRyLAorICAgICAgICBGT19ERUxFVEUs
CisgICAgICAgIHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihkaXJlY3RvcnlQYXRoKS5kYXRh
KCksCisgICAgICAgIEwiIiwKKyAgICAgICAgRk9GX05PQ09ORklSTUFUSU9OIHwgRk9GX05PRVJS
T1JVSSB8IEZPRl9TSUxFTlQsCisgICAgICAgIGZhbHNlLAorICAgICAgICAwLAorICAgICAgICBM
IiIKKyAgICB9OworICAgIHJldHVybiAhU0hGaWxlT3BlcmF0aW9uKCZkZWxldGVPcGVyYXRpb24p
OworfQorCit9IC8vIG5hbWVzcGFjZSBGaWxlU3lzdGVtSW1wbAorfSAvLyBuYW1lc3BhY2UgV1RG
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi93aW4vUGF0aFdhbGtlci5jcHAgYi9Tb3VyY2Uv
V1RGL3d0Zi93aW4vUGF0aFdhbGtlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzZkM2Y5NzA2MDQ5Y2IxM2M5
ZWY2MzU1ZWJiNjNhNTA3OTg1MDIyMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L3dpbi9QYXRoV2Fsa2VyLmNwcApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHd0Zi93aW4vUGF0aFdhbGtlci5oPgorCisjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3Ry
aW5nRXh0cmFzLmg+CisKK25hbWVzcGFjZSBXVEYgeworCitQYXRoV2Fsa2VyOjpQYXRoV2Fsa2Vy
KGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIHBhdHRlcm4pCit7CisgICAg
U3RyaW5nIHBhdGggPSBkaXJlY3RvcnkgKyAiXFwiICsgcGF0dGVybjsKKyAgICBtX2hhbmRsZSA9
IDo6RmluZEZpcnN0RmlsZVcoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKHBhdGgpLmRhdGEo
KSwgJm1fZGF0YSk7Cit9CisKK1BhdGhXYWxrZXI6On5QYXRoV2Fsa2VyKCkKK3sKKyAgICBpZiAo
IWlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIDo6RmluZENsb3NlKG1faGFuZGxlKTsK
K30KKworYm9vbCBQYXRoV2Fsa2VyOjpzdGVwKCkKK3sKKyAgICByZXR1cm4gOjpGaW5kTmV4dEZp
bGVXKG1faGFuZGxlLCAmbV9kYXRhKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi93aW4vUGF0aFdhbGtlci5oIGIvU291cmNlL1dURi93dGYvd2lu
L1BhdGhXYWxrZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NTNhZTJlNmFlODU2MWFmMzQ1NGUyMTgzODhkZjg5
MDA1ZWEzM2JjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvd2luL1BhdGhXYWxr
ZXIuaApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSA8V2luZG93
cy5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+CisKK25hbWVzcGFjZSBXVEYgeworCitjbGFzcyBQYXRoV2Fsa2VyIHsKKyAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShQYXRoV2Fsa2VyKTsKK3B1YmxpYzoKKyAgICBQYXRoV2Fsa2VyKGNvbnN0
IFdURjo6U3RyaW5nJiBkaXJlY3RvcnksIGNvbnN0IFdURjo6U3RyaW5nJiBwYXR0ZXJuKTsKKyAg
ICB+UGF0aFdhbGtlcigpOworCisgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9o
YW5kbGUgIT0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7IH0KKyAgICBjb25zdCBXSU4zMl9GSU5EX0RB
VEFXJiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CisKKyAgICBib29sIHN0ZXAoKTsK
KworcHJpdmF0ZToKKyAgICBIQU5ETEUgbV9oYW5kbGU7CisgICAgV0lOMzJfRklORF9EQVRBVyBt
X2RhdGE7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcAppbmRleCA0ZmUyNTBiOWZjOGVjNDU2MTgyMWIwNzdl
ZWQ5NmFlYzdiMDE1NTA2Li5lYmYwNjdmN2I1N2YxNmMzMzBiNWQ3NDA0Mzg4MzQyMjJlZmFiZDhm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwCkBA
IC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiQ0RNRmFjdG9yeS5oIgogI2luY2x1ZGUgIkNETVBy
aXZhdGUuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIK
ICNpbmNsdWRlICJJbml0RGF0YVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiTWVkaWFLZXlzUmVxdWly
ZW1lbnQuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllci5oIgpAQCAtNDIsNiArNDEsNyBAQAogI2lu
Y2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5EYXRhLmgi
CiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2lu
Y2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJL
aXRNZWRpYUtleVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmNwcAppbmRleCBlNjY2Y2U5NzkzNjc0
NWVkYTAxMDY2MDc5NzhmNmU5ODA5ZmYwYjM5Li42NWVkZGExNmY3OTUwZDI0OWJjZjczMTYyODYx
NTA4NTRlZjI4MWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5U2Vzc2lvbi5j
cHAKQEAgLTMwLDEzICszMCwxMyBAQAogCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJFdmVudE5hbWVzLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIlBhZ2Uu
aCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbkRhdGEuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5o
IgogI2luY2x1ZGUgIldlYktpdE1lZGlhS2V5RXJyb3IuaCIKICNpbmNsdWRlICJXZWJLaXRNZWRp
YUtleU1lc3NhZ2VFdmVudC5oIgogI2luY2x1ZGUgIldlYktpdE1lZGlhS2V5cy5oIgorI2luY2x1
ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwCmluZGV4
IDZkZDQxNzEzMDhhZDQ2N2YyYTRjMjdjOWNlOTc3MjliM2ZhZDhjZjkuLjM2ODc5NGVmNWMxYTBm
ZTc5OGIyYTFiYTUwODg2YzBiNGZlYmNiOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHAKQEAgLTI3LDEyICsyNywxMiBAQAog
I2luY2x1ZGUgIkRPTUZpbGVTeXN0ZW0uaCIKIAogI2luY2x1ZGUgIkZpbGUuaCIKLSNpbmNsdWRl
ICJGaWxlTWV0YWRhdGEuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiRmls
ZVN5c3RlbURpcmVjdG9yeUVudHJ5LmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbUZpbGVFbnRyeS5o
IgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlIDx3dGYvQ3Jv
c3NUaHJlYWRDb3BpZXIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZU1ldGFkYXRhLmg+CisjaW5jbHVk
ZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvVVVJRC5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1FbnRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbUVudHJ5LmNwcAppbmRleCBkY2NiNWExMTg2M2Q5YmIx
MGYyODdkNTdmZGMxMzlhMGI5YjFiMTExLi40MjRjY2EyNmNkNGM3Yjg2MTAzZmQ1MjBmMWZmNzBm
MGRhMDM1MWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkv
RmlsZVN5c3RlbUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNh
cGkvRmlsZVN5c3RlbUVudHJ5LmNwcApAQCAtMjksMTAgKzI5LDEwIEBACiAjaW5jbHVkZSAiRE9N
RXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiRE9NRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkVycm9y
Q2FsbGJhY2suaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3Rl
bURpcmVjdG9yeUVudHJ5LmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbUVudHJ5Q2FsbGJhY2suaCIK
ICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVT
eXN0ZW0uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmNwcAppbmRl
eCBjN2ZkZmQwZGQ2NTQ1ZjhjNmZlNTM0MmZiMzY0NmZlOWE4NDY5NGI5Li5iNDI5YjNmMjZiOTM0
NmZiYjFkYWU3ZWM2NTBlNDZlMjU2ZGZjOGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5jcHAKQEAgLTI4
LDggKzI4LDggQEAKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCi0jaW5jbHVkZSAi
RmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSA8d3Rm
L0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggMjE3
OGNjNDJhOWI1MTE0M2NlNWQ4NWY0ZDExZjdhYjI2MDkyNGVjNy4uMjg1ZDUwMmRhZTgxYTlhNzY4
YWEzNGExZDI1NmRmNTA0N2Q2MWJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5j
cHAKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCi0j
aW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIklEQkJpbmRpbmdVdGlsaXRpZXMuaCIK
ICNpbmNsdWRlICJJREJHZXRBbGxSZWNvcmRzRGF0YS5oIgogI2luY2x1ZGUgIklEQkdldEFsbFJl
c3VsdC5oIgpAQCAtNTQsNiArNTMsNyBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTR2xv
YmFsT2JqZWN0Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Ryb25nSW5saW5lcy5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cnVjdHVyZUlubGluZXMuaD4KKyNpbmNsdWRlIDx3
dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQlRyYW5zYWN0aW9uLmNwcAppbmRleCA3ODFi
NzlmNjNhMDYxZDU4ZDFjOTJhNDEzYzIxYWZkZTY1NjQ5MzZlLi5iZWVhNmIxNjcwNjI0ZTVjOTgw
ZjMxNjYzNGMwMzY1ZGZkZWJjNmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJUcmFuc2FjdGlvbi5jcHAK
QEAgLTI3LDEzICsyNywxMyBAQAogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKLSNp
bmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiSURCQ3Vyc29ySW5mby5oIgogI2luY2x1
ZGUgIkluZGV4ZWREQi5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJTUUxpdGVJ
REJCYWNraW5nU3RvcmUuaCIKICNpbmNsdWRlICJTUUxpdGVJREJDdXJzb3IuaCIKICNpbmNsdWRl
ICJTUUxpdGVUcmFuc2FjdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBJREJTZXJ2ZXIgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURC
U2VydmVyLmNwcAppbmRleCA2MWFlYjhmN2Q3MDE1MWI5NDIyODVhY2RjY2Y4MWJmYjFlYTQyNjI2
Li5kZDlmNWFkMjkzMTdjNWNkYzc1ODgzMmFjNmEzNzBiZGY5NWRkODk4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9j
ZXNzSURCU2VydmVyLmNwcApAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgRU5BQkxFKElOREVYRURf
REFUQUJBU0UpCiAKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiSURCQ29ubmVj
dGlvblRvQ2xpZW50LmgiCiAjaW5jbHVkZSAiSURCQ29ubmVjdGlvblRvU2VydmVyLmgiCiAjaW5j
bHVkZSAiSURCQ3Vyc29ySW5mby5oIgpAQCAtNDAsNiArMzksNyBAQAogI2luY2x1ZGUgIklEQlJl
c3VsdERhdGEuaCIKICNpbmNsdWRlICJJREJWYWx1ZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
KyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcAppbmRleCBkOTY1NDFlZDQ5ZjY5MzgyNGVk
MWRmYzUyNTA4OGRhYzMyYmM1OWM1Li40MDhmNjIyMTJhZTJiMTdiMzhhYzE5MDk4OTUxYTBmMDky
ZDRiMDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZVRyYWNrZXIuY3BwCkBAIC0zNCw3ICszNCw2IEBACiAjaW5jbHVkZSAiRGF0YWJh
c2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VNYW5hZ2VyQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiRGF0YWJhc2VUaHJlYWQuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAi
TG9nZ2luZy5oIgogI2luY2x1ZGUgIk9yaWdpbkxvY2suaCIKICNpbmNsdWRlICJTZWN1cml0eU9y
aWdpbi5oIgpAQCAtNDMsNiArNDIsNyBAQAogI2luY2x1ZGUgIlNRTGl0ZUZpbGVTeXN0ZW0uaCIK
ICNpbmNsdWRlICJTUUxpdGVTdGF0ZW1lbnQuaCIKICNpbmNsdWRlICJTUUxpdGVUcmFuc2FjdGlv
bi5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJl
YWQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3Rk
TGliRXh0cmFzLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL09yaWdpbkxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9P
cmlnaW5Mb2NrLmNwcAppbmRleCA0MjNiMmU2NmRkZmExMmNjMzQwZjYwZmNlNTlkMzUzZGY5OTg2
N2Y0Li5hMjFiY2RiNzgzODZjODEwZWM1OTk0MWMyNzVmNGVmYmFmZjIzZmIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL09yaWdpbkxvY2suY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luTG9jay5jcHAKQEAgLTI2
LDggKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJPcmlnaW5Mb2NrLmgi
CiAKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU3Ry
aW5nIE9yaWdpbkxvY2s6OmxvY2tGaWxlTmFtZUZvclBhdGgoU3RyaW5nIG9yaWdpblBhdGgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL09yaWdpbkxvY2su
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luTG9jay5oCmluZGV4
IGExNmU4NGYxNDg5ZGFmMmVlOGY1MDQ2MTlkMTM5OTNiOGQzNzVlMTAuLmVjYzI5ZTg5MDI1YmRm
NjI5MzkyYjEwNTllZjg4NzBlNmY4ZjkyZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luTG9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvT3JpZ2luTG9jay5oCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEg
b25jZQogCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVt
Lmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNv
dW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvY29jb2EvRGF0YWJhc2VNYW5hZ2VyQ29j
b2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL2NvY29hL0RhdGFiYXNl
TWFuYWdlckNvY29hLm1tCmluZGV4IDdjZmU5ZmIwNjMyNjkxODFkNDRmMTNjMzgzNjgyNTMzZDRl
NGRmYzkuLjhkMzI1MDczYjA0YWNhMWQzMjg0OTZlMTgyODMzOGRmZWJjYWJmZjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvY29jb2EvRGF0YWJhc2VNYW5h
Z2VyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9jb2Nv
YS9EYXRhYmFzZU1hbmFnZXJDb2NvYS5tbQpAQCAtMjksNyArMjksNyBAQAogI2ltcG9ydCAiY29u
ZmlnLmgiCiAjaW1wb3J0ICJEYXRhYmFzZU1hbmFnZXIuaCIKIAotI2ltcG9ydCAiRmlsZVN5c3Rl
bS5oIgorI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggNGZiZGRlMzlhNGFjNzYyMjgwZGMyOTc3YWMxZmFkNjc5NDBkZmM2Mi4uZDE2NGE0Yzcy
YWRiOGQ1ZGMwZDYwNGRlOGI2ZDFlNTU1Yzc1MjE1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTMzLDcgKzEzMyw2IEBACiAJ
CUExMTc1QjU3MUY2QjQ3MDUwMEM0QjlGMCAvKiBEZWZhdWx0U2VhcmNoUHJvdmlkZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMTc1QjU1MUY2QjQ3
MDUwMEM0QjlGMCAvKiBEZWZhdWx0U2VhcmNoUHJvdmlkZXIuaCAqLzsgfTsKIAkJQTExNzVCNTgx
RjZCNDcwNTAwQzRCOUYwIC8qIERlZmF1bHRTZWFyY2hQcm92aWRlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTE3NUI1NjFGNkI0NzA1MDBDNEI5
RjAgLyogRGVmYXVsdFNlYXJjaFByb3ZpZGVyLmNwcCAqLzsgfTsKIAkJQTExNzVCNUExRjZCNEE4
NDAwQzRCOUYwIC8qIE5TU2Nyb2xsVmlld1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTExNzVCNTkxRjZCNEE4NDAwQzRCOUYwIC8qIE5TU2Nyb2xs
Vmlld1NQSS5oICovOyB9OwotCQlBMUY1NURDRjFGNTUyOEVDMDBFREI3NUYgLyogTWV0YWRhdGFT
UEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRjU1
RENFMUY1NTI4RUMwMEVEQjc1RiAvKiBNZXRhZGF0YVNQSS5oICovOyB9OwogCQlBMUY2M0M5RjIx
QTREQkY3MDA2RkI0M0IgLyogUGFzc0tpdFNvZnRMaW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUY2M0M5RDIxQTREQkY3MDA2RkI0M0IgLyogUGFz
c0tpdFNvZnRMaW5rLmggKi87IH07CiAJCUExRjYzQ0EwMjFBNERCRjcwMDZGQjQzQiAvKiBQYXNz
S2l0U29mdExpbmsubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBMUY2M0M5RTIxQTREQkY3MDA2RkI0M0IgLyogUGFzc0tpdFNvZnRMaW5rLm1tICovOyB9
OwogCQlBMzBENDEyMTFGMEREMEVBMDBCNzE5NTQgLyogS2lsbFJpbmcuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzMEQ0MTFFMUYwREQwRUEwMEI3MTk1
NCAvKiBLaWxsUmluZy5oICovOyB9OwpAQCAtMjk0LDcgKzI5Myw2IEBACiAJCUExMTc1QjU1MUY2
QjQ3MDUwMEM0QjlGMCAvKiBEZWZhdWx0U2VhcmNoUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RGVmYXVsdFNlYXJjaFByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEx
MTc1QjU2MUY2QjQ3MDUwMEM0QjlGMCAvKiBEZWZhdWx0U2VhcmNoUHJvdmlkZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRGVmYXVsdFNlYXJjaFByb3ZpZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTExNzVCNTkxRjZCNEE4NDAwQzRCOUYwIC8qIE5TU2Nyb2xsVmlld1NQ
SS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBOU1Njcm9sbFZpZXdTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJQTFGNTVEQ0UxRjU1MjhFQzAwRURCNzVGIC8qIE1ldGFkYXRhU1BJLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE1ldGFkYXRhU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUExRjYzQzlEMjFBNERCRjcwMDZGQjQzQiAvKiBQYXNzS2l0U29mdExpbmsuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUGFzc0tpdFNvZnRMaW5rLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEx
RjYzQzlFMjFBNERCRjcwMDZGQjQzQiAvKiBQYXNzS2l0U29mdExpbmsubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBQYXNzS2l0U29mdExpbmsubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUEzMEQ0MTFFMUYwREQwRUEwMEI3MTk1NCAvKiBLaWxsUmluZy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBLaWxsUmluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNDQ5LDcgKzQ0Nyw2IEBACiAJCQkJQTEwMjY1ODgxRjU2NzQ3QTAwQjRDODQ0IC8qIEhJ
VG9vbGJveFNQSS5oICovLAogCQkJCTBDNzc4NTcyMUY0NTEzMEYwMEY0RUJCNiAvKiBMb29rdXBT
UEkuaCAqLywKIAkJCQkwQzc3ODU3MzFGNDUxMzBGMDBGNEVCQjYgLyogTWVkaWFSZW1vdGVTUEku
aCAqLywKLQkJCQlBMUY1NURDRTFGNTUyOEVDMDBFREI3NUYgLyogTWV0YWRhdGFTUEkuaCAqLywK
IAkJCQkwQzc3ODU3NDFGNDUxMzBGMDBGNEVCQjYgLyogTlNBY2Nlc3NpYmlsaXR5U1BJLmggKi8s
CiAJCQkJMUNDRUU0RjYyMEQ4NzQzRjAwNDdCMDk3IC8qIE5TQXBwZWFyYW5jZVNQSS5oICovLAog
CQkJCTBDNzc4NTc1MUY0NTEzMEYwMEY0RUJCNiAvKiBOU0FwcGxpY2F0aW9uU1BJLmggKi8sCkBA
IC03MDEsNyArNjk4LDYgQEAKIAkJCQkwQzVBRjkxRDFGNDNBNEM3MDAyRUFDMDIgLyogTWVkaWFQ
bGF5ZXJTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBDNzc4NThDMUY0NTEzMEYwMEY0RUJCNiAv
KiBNZWRpYVJlbW90ZVNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEMwMENGRDQxRjY4Q0U0NjAw
QUFDMjZEIC8qIE1lZGlhVGltZUFWRm91bmRhdGlvbi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTFG
NTVEQ0YxRjU1MjhFQzAwRURCNzVGIC8qIE1ldGFkYXRhU1BJLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwQzVBRjkxRTFGNDNBNEM3MDAyRUFDMDIgLyogTW9iaWxlR2VzdGFsdFNQSS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEMyREExNDkxRjNCRUI0OTAwREJDMzE3IC8qIE5FRmlsdGVyU291cmNlU1BJ
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzc3ODU4RDFGNDUxMzBGMDBGNEVCQjYgLyogTlNBY2Nl
c3NpYmlsaXR5U1BJLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRm
b3JtTWFjLmNtYWtlCmluZGV4IDZiMWJkMjU5MjZmNDJiZDY0NjAzMmFkOTA0YTc4N2U2OWI3NTBh
YzkuLmYxMzA3Njg0M2Y4ODMxNmJjMzhiZDgwZGE3MmY0ODlhODIzNzYyOGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dl
YkNvcmUvUEFML3BhbC9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtNTgsNyArNTgsNiBAQCBsaXN0KEFQ
UEVORCBQQUxfUFVCTElDX0hFQURFUlMKICAgICBzcGkvbWFjL0hJVG9vbGJveFNQSS5oCiAgICAg
c3BpL21hYy9Mb29rdXBTUEkuaAogICAgIHNwaS9tYWMvTWVkaWFSZW1vdGVTUEkuaAotICAgIHNw
aS9tYWMvTWV0YWRhdGFTUEkuaAogICAgIHNwaS9tYWMvTlNBY2Nlc3NpYmlsaXR5U1BJLmgKICAg
ICBzcGkvbWFjL05TQXBwZWFyYW5jZVNQSS5oCiAgICAgc3BpL21hYy9OU0FwcGxpY2F0aW9uU1BJ
LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9NZXRhZGF0YVNQ
SS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvbWFjL01ldGFkYXRhU1BJLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgxNTU0N2M2Yjg1MTBlMzA2MThlMjI4MmFkNWI3ODQw
MTZjYTM3MjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvbWFjL01ldGFkYXRhU1BJLmgKKysrIC9kZXYvbnVs
bApAQCAtMSwzOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBVU0Uo
QVBQTEVfSU5URVJOQUxfU0RLKQotCi0jaW5jbHVkZSA8Q29yZVNlcnZpY2VzL0NvcmVTZXJ2aWNl
c1ByaXYuaD4KLQotI2VuZGlmCi0KLVdURl9FWFRFUk5fQ19CRUdJTgotCi1Cb29sZWFuIE1ESXRl
bVNldEF0dHJpYnV0ZShNREl0ZW1SZWYsIENGU3RyaW5nUmVmIG5hbWUsIENGVHlwZVJlZiBhdHRy
KTsKLQotV1RGX0VYVEVSTl9DX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZv
cm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCA4NjZl
YTZhNTRiOWE0MmY4NzhkNGUxOWI2NTBhMmMzYzNiYTIwOWE5Li40ZDcyZjlkZWVmODBlYjZlNDQ1
Njc5NzNkNWM2ZGNmZjY5MDU1Yjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtMTg5
LDcgKzE4OSw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2F1
ZGlvL21hYy9DQVJpbmdCdWZmZXIuY3BwCiAgICAgcGxhdGZvcm0vYXVkaW8vbWFjL0ZGVEZyYW1l
TWFjLmNwcAogCi0gICAgcGxhdGZvcm0vY2YvRmlsZVN5c3RlbUNGLmNwcAogICAgIHBsYXRmb3Jt
L2NmL0tleWVkRGVjb2RlckNGLmNwcAogICAgIHBsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNw
cAogICAgIHBsYXRmb3JtL2NmL01haW5UaHJlYWRTaGFyZWRUaW1lckNGLmNwcApAQCAtMjAwLDcg
KzE5OSw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2NvY29h
L0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1tCiAgICAgcGxhdGZvcm0vY29jb2Ev
Q29yZVZpZGVvU29mdExpbmsuY3BwCiAgICAgcGxhdGZvcm0vY29jb2EvRmlsZU1vbml0b3JDb2Nv
YS5tbQotICAgIHBsYXRmb3JtL2NvY29hL0ZpbGVTeXN0ZW1Db2NvYS5tbQogICAgIHBsYXRmb3Jt
L2NvY29hL0tleUV2ZW50Q29jb2EubW0KICAgICBwbGF0Zm9ybS9jb2NvYS9Mb2NhbGl6ZWRTdHJp
bmdzQ29jb2EubW0KICAgICBwbGF0Zm9ybS9jb2NvYS9NSU1FVHlwZVJlZ2lzdHJ5Q29jb2EubW0K
QEAgLTM0Nyw3ICszNDUsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0
Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0KICAgICBwbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1t
CiAgICAgcGxhdGZvcm0vbWFjL0V2ZW50TG9vcE1hYy5tbQotICAgIHBsYXRmb3JtL21hYy9GaWxl
U3lzdGVtTWFjLm1tCiAgICAgcGxhdGZvcm0vbWFjL0tleUV2ZW50TWFjLm1tCiAgICAgcGxhdGZv
cm0vbWFjL0xvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5tbQogICAgIHBsYXRmb3JtL21hYy9M
b2dnaW5nTWFjLm1tCkBAIC00MTgsOCArNDE1LDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VS
Q0VTCiAgICAgcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVy
YXRpb25RdWV1ZURlbGVnYXRlLm1tCiAgICAgcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVS
TFJlc3BvbnNlLm1tCiAKLSAgICBwbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCi0K
ICAgICBwbGF0Zm9ybS90ZXh0L2NmL0h5cGhlbmF0aW9uQ0YuY3BwCiAKICAgICBwbGF0Zm9ybS90
ZXh0L21hYy9Mb2NhbGVNYWMubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
UGxheVN0YXRpb24uY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVBsYXlTdGF0aW9uLmNt
YWtlCmluZGV4IDkwMzc2MDM5Yjk2OTZlMTNmOWRlYmM5YzQ3MzBhNzkwMzk5Nzk1NTEuLjZkNDQ1
MzVkOTU5ODRiZTU4ODMzZTg4Zjk3MWU2YTcyZjJkYmFiMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtUGxheVN0YXRpb24uY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1QbGF5U3RhdGlvbi5jbWFrZQpAQCAtNjMsNyArNjMsNiBAQCBsaXN0KEFQUEVORCBXZWJD
b3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9wbGF5c3RhdGlvbi9TY3JvbGxiYXJUaGVtZVBsYXlT
dGF0aW9uLmNwcAogICAgIHBsYXRmb3JtL3BsYXlzdGF0aW9uL1VzZXJBZ2VudFBsYXlTdGF0aW9u
LmNwcAogCi0gICAgcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcAogICAgIHBsYXRm
b3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcAogCiAgICAgcGxhdGZvcm0vdGV4dC9IeXBo
ZW5hdGlvbi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtl
IGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW4uY21ha2UKaW5kZXggNGZhYjMwODI2MGUwOWM4
MDU0MTljODRjN2NhODM0ZDgxZmI5NWM2NS4uZmNiNTdhNDVhNWY0MWVmM2JmNjcwMzg0ZmRhMjNm
M2NkYTg2MTRkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW4uY21ha2UK
KysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW4uY21ha2UKQEAgLTg0LDcgKzg0LDYgQEAg
bGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vd2luL0RyYWdEYXRhV2lu
LmNwcAogICAgIHBsYXRmb3JtL3dpbi9EcmFnSW1hZ2VXaW4uY3BwCiAgICAgcGxhdGZvcm0vd2lu
L0V2ZW50TG9vcFdpbi5jcHAKLSAgICBwbGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdpbi5jcHAKICAg
ICBwbGF0Zm9ybS93aW4vR0RJT2JqZWN0Q291bnRlci5jcHAKICAgICBwbGF0Zm9ybS93aW4vR0RJ
VXRpbGl0aWVzLmNwcAogICAgIHBsYXRmb3JtL3dpbi9LZXlFdmVudFdpbi5jcHAKQEAgLTkzLDcg
KzkyLDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vd2luL01J
TUVUeXBlUmVnaXN0cnlXaW4uY3BwCiAgICAgcGxhdGZvcm0vd2luL01haW5UaHJlYWRTaGFyZWRU
aW1lcldpbi5jcHAKICAgICBwbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKLSAgICBwbGF0
Zm9ybS93aW4vUGF0aFdhbGtlci5jcHAKICAgICBwbGF0Zm9ybS93aW4vUGxhdGZvcm1Nb3VzZUV2
ZW50V2luLmNwcAogICAgIHBsYXRmb3JtL3dpbi9QbGF0Zm9ybVNjcmVlbldpbi5jcHAKICAgICBw
bGF0Zm9ybS93aW4vUG9wdXBNZW51V2luLmNwcApAQCAtMjQ4LDcgKzI0Niw2IEBAIGlmIChVU0Vf
Q0YpCiAgICAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgICAgIGxvYWRlci9hcmNo
aXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCiAKLSAgICAgICAgcGxhdGZvcm0vY2YvRmlsZVN5
c3RlbUNGLmNwcAogICAgICAgICBwbGF0Zm9ybS9jZi9LZXllZERlY29kZXJDRi5jcHAKICAgICAg
ICAgcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCiAgICAgICAgIHBsYXRmb3JtL2NmL1No
YXJlZEJ1ZmZlckNGLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBkMmFkYjBlNTQwOWYxODk5OWM0ODc2
YzNkZDkyMGJmOWQzODA1ZTVmLi40NGE4ZjNlYjM5YWQ3ZTA0YTRkMGU5MzQ4YjNjMjgzYWFjYTI3
NTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTYwMyw3ICsxNjAzLDYgQEAgcGxhdGZvcm0vRmlsZUNo
b29zZXIuY3BwCiBwbGF0Zm9ybS9GaWxlSGFuZGxlLmNwcAogcGxhdGZvcm0vRmlsZU1vbml0b3Iu
Y3BwCiBwbGF0Zm9ybS9GaWxlU3RyZWFtLmNwcAotcGxhdGZvcm0vRmlsZVN5c3RlbS5jcHAKIHBs
YXRmb3JtL0dlbmVyaWNUYXNrUXVldWUuY3BwCiBwbGF0Zm9ybS9MYXlvdXRVbml0LmNwcAogcGxh
dGZvcm0vTGVuZ3RoLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29h
LnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggMGUxNWI5MDRlYWQy
ZDlkODU5M2U1MGZhNDIwMDgzNWE0MzBiOTU2OC4uYzI0MTg1ZjE0ZWU3YWY2NjA4ZDJhNDNjZTA2
NjQ5Y2ExZjA1NTJkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4
dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0xODEsNyArMTgxLDYg
QEAgcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lvbk1hYy5jcHAKIHBsYXRmb3JtL2F1ZGlv
L21hYy9DQVJpbmdCdWZmZXIuY3BwCiBwbGF0Zm9ybS9hdWRpby9tYWMvRkZURnJhbWVNYWMuY3Bw
CiAKLXBsYXRmb3JtL2NmL0ZpbGVTeXN0ZW1DRi5jcHAKIHBsYXRmb3JtL2NmL0tleWVkRGVjb2Rl
ckNGLmNwcAogcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCiBwbGF0Zm9ybS9jZi9NYWlu
VGhyZWFkU2hhcmVkVGltZXJDRi5jcHAKQEAgLTE5Myw3ICsxOTIsNiBAQCBwbGF0Zm9ybS9jb2Nv
YS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbSBAbm8tdW5pZnkKIHBsYXRmb3Jt
L2NvY29hL0NvcmVWaWRlb1NvZnRMaW5rLmNwcAogcGxhdGZvcm0vY29jb2EvRGF0YURldGVjdG9y
c0NvcmVTb2Z0TGluay5tbQogcGxhdGZvcm0vY29jb2EvRmlsZU1vbml0b3JDb2NvYS5tbQotcGxh
dGZvcm0vY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tCiBwbGF0Zm9ybS9jb2NvYS9LZXlFdmVudENv
Y29hLm1tCiBwbGF0Zm9ybS9jb2NvYS9Mb2NhbGl6ZWRTdHJpbmdzQ29jb2EubW0KIHBsYXRmb3Jt
L2NvY29hL01JTUVUeXBlUmVnaXN0cnlDb2NvYS5tbQpAQCAtNDQ2LDcgKzQ0NCw2IEBAIHBsYXRm
b3JtL21hYy9DdXJzb3JNYWMubW0KIHBsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbQogcGxhdGZv
cm0vbWFjL0RyYWdJbWFnZU1hYy5tbQogcGxhdGZvcm0vbWFjL0V2ZW50TG9vcE1hYy5tbQotcGxh
dGZvcm0vbWFjL0ZpbGVTeXN0ZW1NYWMubW0KIHBsYXRmb3JtL21hYy9LZXlFdmVudE1hYy5tbSBA
bm8tdW5pZnkKIHBsYXRmb3JtL21hYy9QbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMubW0gQG5v
LXVuaWZ5CiBwbGF0Zm9ybS9tYWMvTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0Lm1tCkBAIC01
NDEsOCArNTM4LDYgQEAgcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJVXRpbGl0aWVzLm1tCiBwbGF0
Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVs
ZWdhdGUubW0KIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbQogCi1w
bGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCi0KIHBsYXRmb3JtL3RleHQvY2YvSHlw
aGVuYXRpb25DRi5jcHAKIAogcGxhdGZvcm0vdGV4dC9pb3MvTG9jYWxpemVkRGF0ZUNhY2hlLm1t
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggZGFiNGRmNTA0ZTI2NDMzY2RlMGQxYzE0NGQ0NmI1M2M1Y2E5ZTkyOC4uMTkyY2QyODEw
MGFmZjFhYTI0ZDNjYzMxYmVmMzU4MzZjZTg2OTYxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI0NSw3ICsxMjQ1LDYgQEAK
IAkJNDY3MzAyMDIxQzRFRkU3ODAwQkNCMzU3IC8qIElnbm9yZU9wZW5zRHVyaW5nVW5sb2FkQ291
bnRJbmNyZW1lbnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDY3MzAyMDExQzRFRkU2NjAwQkNCMzU3IC8qIElnbm9yZU9wZW5zRHVyaW5nVW5sb2Fk
Q291bnRJbmNyZW1lbnRlci5oICovOyB9OwogCQk0NjgyRDIwMDFGNzk3ODMwMDBDODYzREIgLyog
U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ2ODJEMUZGMUY3OTc4MjMwMEM4NjNEQiAvKiBTdG9yZWRDcmVkZW50
aWFsc1BvbGljeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTQ2ODM0NEUwMUVEREZBQUEwMEI3Nzk1QiAvKiBET01SZWN0TGlzdC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4MzQ0REUxRURERkE1RjAw
Qjc3OTVCIC8qIERPTVJlY3RMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKLQkJNDY4OUYxQUYxMjY3QkFFMTAwRThEMzgwIC8qIEZpbGVNZXRhZGF0
YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4OUYx
QUUxMjY3QkFFMTAwRThEMzgwIC8qIEZpbGVNZXRhZGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2QjYzRjZDMUM2RThEMTkwMDJFOTE0QiAv
KiBKU0V2ZW50VGFyZ2V0Q3VzdG9tLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NkI2M0Y2QjFDNkU4Q0RGMDAyRTkxNEIgLyogSlNFdmVudFRhcmdldEN1
c3RvbS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTQ2Qjk1MTk1MjA3RDYzMzQwMEE3RDJERCAvKiBBYnN0cmFjdERPTVdpbmRvdy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCOTUxOEEyMDdENjMyODAw
QTdEMkREIC8qIEFic3RyYWN0RE9NV2luZG93LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZCOTUxOTYyMDdENjMzQTAwQTdEMkREIC8qIEFic3Ry
YWN0RnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ2Qjk1MThGMjA3RDYzMkIwMEE3RDJERCAvKiBBYnN0cmFjdEZyYW1lLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE0MzcsNyArMTQzNiw2IEBA
CiAJCTUxNDNCMjYzMURERDE1MjAwMDE0RkFDNiAvKiBMaW5rSWNvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0M0IyNjIxREREMTQ5MDAwMTRGQUM2
IC8qIExpbmtJY29uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNTE0NUIxMEExQkM0OEUyRTAwRTg2MjE5IC8qIElEQlJlc291cmNlSWRlbnRpZmll
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0NUIx
MDgxQkM0ODkwQjAwRTg2MjE5IC8qIElEQlJlc291cmNlSWRlbnRpZmllci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxNDg0NTNGMUJCOUQwN0Uw
MDZBNzJFRCAvKiBJREJFcnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTE0ODQ1M0QxQkI5RDA3NjAwNkE3MkVEIC8qIElEQkVycm9yLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNTE0QjNGNzMwQzcy
MjA0NzAwMDUzMERGIC8qIEZpbGVTeXN0ZW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEIzRjcyMEM3MjIwNDcwMDA1MzBERiAvKiBGaWxlU3lzdGVt
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE0
Qzc2NEMwQ0U5MjM0RTAwN0VGM0NEIC8qIEF1dGhlbnRpY2F0aW9uTWFjLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTRDNzY0MjBDRTkyMzRFMDA3RUYz
Q0QgLyogQXV0aGVudGljYXRpb25NYWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk1MTRDNzY0RTBDRTkyMzRFMDA3RUYzQ0QgLyogRm9ybURhdGFT
dHJlYW1NYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxNEM3NjQ0MENFOTIzNEUwMDdFRjNDRCAvKiBGb3JtRGF0YVN0cmVhbU1hYy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxNEM3NjZFMENFOTIz
QTEwMDdFRjNDRCAvKiBDcmVkZW50aWFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MTRDNzY1OTBDRTkyM0ExMDA3RUYzQ0QgLyogQ3JlZGVudGlhbC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC03NzA1
LDcgKzc3MDMsNiBAQAogCQk0NjgzNDREQzFFRERGQTVGMDBCNzc5NUIgLyogRE9NUmVjdExpc3Qu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IERPTVJlY3RMaXN0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDY4MzQ0REQxRURERkE1RjAwQjc3OTVCIC8qIERPTVJlY3RMaXN0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IERPTVJlY3RMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4
MzQ0REUxRURERkE1RjAwQjc3OTVCIC8qIERPTVJlY3RMaXN0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERP
TVJlY3RMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ2ODlGMUFFMTI2N0JB
RTEwMEU4RDM4MCAvKiBGaWxlTWV0YWRhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRmlsZU1ldGFkYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QjYz
RjZCMUM2RThDREYwMDJFOTE0QiAvKiBKU0V2ZW50VGFyZ2V0Q3VzdG9tLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRXZlbnRUYXJnZXRDdXN0b20uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDZCOTUxOEEyMDdENjMyODAwQTdEMkREIC8qIEFic3RyYWN0RE9N
V2luZG93LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFic3RyYWN0RE9NV2lu
ZG93Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2Qjk1MThDMjA3RDYzMjkwMEE3
RDJERCAvKiBSZW1vdGVGcmFtZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBSZW1vdGVGcmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04MTA4
LDggKzgxMDUsNiBAQAogCQk1MTQ1QjEwODFCQzQ4OTBCMDBFODYyMTkgLyogSURCUmVzb3VyY2VJ
ZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElEQlJlc291cmNl
SWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTQ4NDUzQzFCQjlE
MDc2MDA2QTcyRUQgLyogSURCRXJyb3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSURCRXJyb3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTQ4
NDUzRDFCQjlEMDc2MDA2QTcyRUQgLyogSURCRXJyb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSURCRXJyb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTE0
QjNGNzIwQzcyMjA0NzAwMDUzMERGIC8qIEZpbGVTeXN0ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRmlsZVN5c3RlbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk1MTRCM0Y3NTBDNzIyMDU1MDAwNTMwREYgLyogRmlsZVN5c3RlbUNvY29hLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRmlsZVN5c3RlbUNvY29hLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTRDNzYzNTBDRTkyMjVFMDA3RUYzQ0QgLyogSlNT
UUxFcnJvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1NRTEVy
cm9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0Qzc2MzYwQ0U5MjI1RTAw
N0VGM0NEIC8qIEpTU1FMVHJhbnNhY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNTUUxUcmFuc2FjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUxNEM3NjQyMENFOTIzNEUwMDdFRjNDRCAvKiBBdXRoZW50aWNhdGlvbk1hYy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdXRoZW50aWNhdGlvbk1hYy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODE0OCw4ICs4MTQzLDYgQEAKIAkJNTE1RTM3RjQx
RkFBOTM4ODAwRDdGMjJBIC8qIFNlcnZpY2VXb3JrZXJUeXBlcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTZXJ2aWNlV29ya2VyVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTE1Rjc5NTExQ0ZDQTNDNzAwQ0NFRDkzIC8qIFdlYkNvcmVDcm9zc1RocmVh
ZENvcGllci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDb3Jl
Q3Jvc3NUaHJlYWRDb3BpZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTVG
Nzk1MjFDRkNBM0M3MDBDQ0VEOTMgLyogV2ViQ29yZUNyb3NzVGhyZWFkQ29waWVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvcmVDcm9zc1RocmVhZENvcGllci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MTYwMzAwQTBDQzQyNTEyMDBDOEFDMjUgLyog
RmlsZVN5c3RlbVBPU0lYLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEZpbGVTeXN0ZW1QT1NJWC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUxNjAz
MDZCMENDNDM2MjMwMEM4QUMyNSAvKiBGaWxlU3lzdGVtQ0YuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRmlsZVN5c3RlbUNGLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTE2MDcxMkIxQkQ4MzA1MzAwREJDNEYyIC8qIFRyYW5zYWN0aW9uT3BlcmF0
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRyYW5zYWN0aW9uT3BlcmF0
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNjA3MTJDMUJEODMwNzIwMERC
QzRGMiAvKiBJREJPYmplY3RTdG9yZUluZm8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSURCT2JqZWN0U3RvcmVJbmZvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTE2MDcxMkQxQkQ4MzA3MjAwREJDNEYyIC8qIElEQk9iamVjdFN0b3JlSW5mby5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJREJPYmplY3RTdG9yZUluZm8uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTExMjUxLDcgKzExMjQ0LDYgQEAKIAkJQTFD
MkM1NzUxRkEyODUxNjAwQkE0NkZBIC8qIFBheW1lbnRTZXNzaW9uLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFBheW1lbnRTZXNzaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QTFDN0ZBQTExMzNBNUQzNTAwRDY3MzJEIC8qIEpTWFBhdGhSZXN1bHRDdXN0b20uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNYUGF0aFJlc3VsdEN1c3RvbS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExQ0JFRjYzMUY5RjExMjkwMDI4REU3QyAv
KiBNb2NrUGF5bWVudE1ldGhvZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2NrUGF5bWVudE1ldGhvZC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBMUNDMTE2MjFFNDkzRDAxMDBFRkE2OUMg
LyogRmlsZVN5c3RlbU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IEZpbGVTeXN0ZW1NYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExQ0M1
NjRDMUY0NjE0NTAwMEE0NTU1QiAvKiBKU1BheW1lbnRNZXRob2REYXRhLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUGF5bWVudE1ldGhvZERhdGEuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTFDQzU2NEQxRjQ2MTQ1MTAwQTQ1NTVCIC8qIEpTUGF5bWVudE1l
dGhvZERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNQYXlt
ZW50TWV0aG9kRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExQ0M1NjRF
MUY0NjE0NTIwMEE0NTU1QiAvKiBKU1BheW1lbnRDb21wbGV0ZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU1BheW1lbnRDb21wbGV0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTM0MzgsNyArMTM0MzAsNiBAQAogCQlDNTU5MkY3NzFBOTJBQTI4MDAxRjg4
NjIgLyogQ2hhcmFjdGVyUHJvcGVydGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDaGFyYWN0ZXJQcm9wZXJ0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUM1NUM3QkEwMTcxOEFGQkEwMDEzMjdFNCAvKiBSZW5kZXJUaGVtZUlPUy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlbmRlclRoZW1lSU9TLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDNTcyRUUxRDEyMDFDOUJDMDA3RDhGODIgLyogSlNJREJJ
bmRleC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0lEQkluZGV4Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUM1N0ZFREUwMTIxMkVFOUMwMDk3QkU2NSAvKiBG
aWxlU3lzdGVtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZpbGVT
eXN0ZW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNTg1QTY2MDExRDRGQUM1
MDA0QzNFNEIgLyogSURCQmluZGluZ1V0aWxpdGllcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBJREJCaW5kaW5nVXRpbGl0aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQzU4NUE2NjExMUQ0RkFDNTAwNEMzRTRCIC8qIElEQkJpbmRpbmdVdGls
aXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSURCQmluZGluZ1V0aWxp
dGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNTg1QTY2QjExRDRGQjA3MDA0
QzNFNEIgLyogSlNJREJEYXRhYmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU0lEQkRhdGFiYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjc3Niw3
ICsxNjc2Nyw2IEBACiAJCTFBRTQyRjY3MEFBNEI4Q0IwMEM4NjEyRCAvKiBjZiAqLyA9IHsKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJNTE2MDMwNkIwQ0M0MzYyMzAw
QzhBQzI1IC8qIEZpbGVTeXN0ZW1DRi5jcHAgKi8sCiAJCQkJNTE3QTYzQkYxQjc0MzE3RTAwRTdE
Q0RDIC8qIEtleWVkRGVjb2RlckNGLmNwcCAqLywKIAkJCQk1MTdBNjNDMDFCNzQzMTdFMDBFN0RD
REMgLyogS2V5ZWREZWNvZGVyQ0YuaCAqLywKIAkJCQk1MTdBNjNDMTFCNzQzMTdFMDBFN0RDREMg
LyogS2V5ZWRFbmNvZGVyQ0YuY3BwICovLApAQCAtMTg3MzgsMTQgKzE4NzI4LDYgQEAKIAkJCXBh
dGggPSBtYWM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OwotCQk1MTYwMzAwOTBD
QzQyNDU0MDBDOEFDMjUgLyogcG9zaXggKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNo
aWxkcmVuID0gKAotCQkJCTUxNjAzMDBBMENDNDI1MTIwMEM4QUMyNSAvKiBGaWxlU3lzdGVtUE9T
SVguY3BwICovLAotCQkJKTsKLQkJCXBhdGggPSBwb3NpeDsKLQkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7Ci0JCX07CiAJCTUxNjBGNDkyMEIwQUE3MTUwMEMxRDJBRiAvKiBtYWMgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMjAxMDYsNyArMjAwODgsNiBA
QAogCQkJCUE3Q0ZCM0Q0MEI3RUQxMTgwMDcwQzMyRCAvKiBEcmFnSW1hZ2VNYWMubW0gKi8sCiAJ
CQkJRTFCQTY2RjAxNzQyQkQ4NjAwQzIwMjUxIC8qIER5bmFtaWNMaW5rZXJJbnRlcnBvc2luZy5o
ICovLAogCQkJCTFDQTE5RTAzMERDMjU1OTUwMDY1QTk5NCAvKiBFdmVudExvb3BNYWMubW0gKi8s
Ci0JCQkJQTFDQzExNjIxRTQ5M0QwMTAwRUZBNjlDIC8qIEZpbGVTeXN0ZW1NYWMubW0gKi8sCiAJ
CQkJOTM1QzQ3NkUwOUFDNEQ3MzAwQTZBQUI0IC8qIEtleUV2ZW50TWFjLm1tICovLAogCQkJCUY0
NEE1RjU3MUZFRDM4MzAwMDdGNTk0NCAvKiBMZWdhY3lOU1Bhc3RlYm9hcmRUeXBlcy5oICovLAog
CQkJCTA2RTgxRUQ2MEFCNUQ1RTkwMEM4NzgzNyAvKiBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRl
eHQuaCAqLywKQEAgLTIyNTU2LDcgKzIyNTM3LDYgQEAKIAkJCQk3Qzc5NDFFMzFDNTZDMjkzMDBB
NEM1OEUgLyogRGF0YURldGVjdG9yc0NvcmVTb2Z0TGluay5oICovLAogCQkJCTdDNzk0MUUyMUM1
NkMyOTMwMEE0QzU4RSAvKiBEYXRhRGV0ZWN0b3JzQ29yZVNvZnRMaW5rLm1tICovLAogCQkJCTdB
MDlDRUYwMUYwMUQxRjcwMEU5M0JEQiAvKiBGaWxlTW9uaXRvckNvY29hLm1tICovLAotCQkJCTUx
NEIzRjc1MEM3MjIwNTUwMDA1MzBERiAvKiBGaWxlU3lzdGVtQ29jb2EubW0gKi8sCiAJCQkJQTVD
OTc0Q0YxMTQ4NUZGMTAwNjZGMkFCIC8qIEtleUV2ZW50Q29jb2EuaCAqLywKIAkJCQlBNUM5NzRE
MDExNDg1RkYxMDA2NkYyQUIgLyogS2V5RXZlbnRDb2NvYS5tbSAqLywKIAkJCQkxQTQ4MzJCMjFB
OTUzQkE2MDA4QjRERkUgLyogTG9jYWxpemVkU3RyaW5nc0NvY29hLm1tICovLApAQCAtMjUzOTks
NyArMjUzNzksNiBAQAogCQkJCTA3MjIxQjkyMTdDRjBBRDQwMDg0OEU1MSAvKiBtZWRpYXN0cmVh
bSAqLywKIAkJCQk1OUM3N0YxMDEwNTQ1OTFDMDA1MDYxMDQgLyogbW9jayAqLywKIAkJCQk2NTZC
ODRENzBBRUExQ0U5MDBBMDk1QjQgLyogbmV0d29yayAqLywKLQkJCQk1MTYwMzAwOTBDQzQyNDU0
MDBDOEFDMjUgLyogcG9zaXggKi8sCiAJCQkJMUEyRTZFNTYwQ0M1NTFFMDAwNEEyMDYyIC8qIHNx
bCAqLywKIAkJCQlCMkMzRDlFQzBEMDA2QzFEMDBFRjZGMjYgLyogdGV4dCAqLywKIAkJCQlFMTg4
MjM1RjIwMzFGNTBGMDBCNDJERjMgLyogdnIgKi8sCkBAIC0yNTQ0NCwxNCArMjU0MjMsMTEgQEAK
IAkJCQkwNjZDNzcyQTBBQjYwM0I3MDAyMzhDQzQgLyogRmlsZUNob29zZXIuaCAqLywKIAkJCQk1
MzUxRDRBRTFERjkxNkFDMDA4MDEwQ0QgLyogRmlsZUhhbmRsZS5jcHAgKi8sCiAJCQkJNTM1MUQ0
QUYxREY5MTZBQzAwODAxMENEIC8qIEZpbGVIYW5kbGUuaCAqLywKLQkJCQk0Njg5RjFBRTEyNjdC
QUUxMDBFOEQzODAgLyogRmlsZU1ldGFkYXRhLmggKi8sCiAJCQkJN0EwOUNFRUIxRjAxQ0M5MzAw
RTkzQkRCIC8qIEZpbGVNb25pdG9yLmNwcCAqLywKIAkJCQk3QTA5Q0VFQzFGMDFDQzkzMDBFOTNC
REIgLyogRmlsZU1vbml0b3IuaCAqLywKIAkJCQkyRUYxQkZFODEyMUM5RjQyMDBDMjc2MjcgLyog
RmlsZVN0cmVhbS5jcHAgKi8sCiAJCQkJMkVGMUJGRTkxMjFDOUY0MjAwQzI3NjI3IC8qIEZpbGVT
dHJlYW0uaCAqLywKIAkJCQkyRUYxQkZGODEyMUNCMENFMDBDMjc2MjcgLyogRmlsZVN0cmVhbUNs
aWVudC5oICovLAotCQkJCUM1N0ZFREUwMTIxMkVFOUMwMDk3QkU2NSAvKiBGaWxlU3lzdGVtLmNw
cCAqLywKLQkJCQk1MTRCM0Y3MjBDNzIyMDQ3MDAwNTMwREYgLyogRmlsZVN5c3RlbS5oICovLAog
CQkJCUJDMDczQkE5MEMzOTlCMUYwMDBGNTk3OSAvKiBGbG9hdENvbnZlcnNpb24uaCAqLywKIAkJ
CQlDRDRCRTUyOTFDRTEzNDI1MDA5RDg3REEgLyogR2VuZXJpY1Rhc2tRdWV1ZS5jcHAgKi8sCiAJ
CQkJQ0Q2MkZCOTQxQUYwMThFNzAwMTJFRDdEIC8qIEdlbmVyaWNUYXNrUXVldWUuaCAqLywKQEAg
LTI5MTQwLDcgKzI5MTE2LDYgQEAKIAkJCQlGNTVCM0RCRTEyNTFGMTJEMDAzRUYyNjkgLyogRmls
ZUlucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc2RDZDODYxMjJCOEEzRDAwMUZEMUY3
IC8qIEZpbGVMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzVENTRDNTFGNERFNTM4MDBFNjA2
NzEgLyogRmlsZUxpc3RDcmVhdG9yLmggaW4gSGVhZGVycyAqLywKLQkJCQk0Njg5RjFBRjEyNjdC
QUUxMDBFOEQzODAgLyogRmlsZU1ldGFkYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QTA5Q0VG
MTFGMDIwNjlCMDBFOTNCREIgLyogRmlsZU1vbml0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3
NkQ2Qzg5MTIyQjhBM0QwMDFGRDFGNyAvKiBGaWxlUmVhZGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkyRTc1ODQxRTEyNzc5QURBMDA2MjYyOEIgLyogRmlsZVJlYWRlckxvYWRlci5oIGluIEhlYWRl
cnMgKi8sCkBAIC0yOTE0OCw3ICsyOTEyMyw2IEBACiAJCQkJMkVERjM2OUQxMjJDOTRCNDAwMkY3
RDRFIC8qIEZpbGVSZWFkZXJTeW5jLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRUYxQkZFQjEyMUM5
RjQyMDBDMjc2MjcgLyogRmlsZVN0cmVhbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkVGMUJGRjkx
MjFDQjBDRTAwQzI3NjI3IC8qIEZpbGVTdHJlYW1DbGllbnQuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTUxNEIzRjczMEM3MjIwNDcwMDA1MzBERiAvKiBGaWxlU3lzdGVtLmggaW4gSGVhZGVycyAqLywK
IAkJCQk4M0ZCMzM3MTFGNTA4QTU0MDA5ODZFNTQgLyogRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5
LmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzAzMzUwMjFGNTQ5MDU3MDA0REY3MDcgLyogRmlsZVN5
c3RlbURpcmVjdG9yeVJlYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODMwMzM1MDMxRjU0OTA1
QTAwNERGNzA3IC8qIEZpbGVTeXN0ZW1FbnRyaWVzQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvR0NDb250cm9sbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5jcHAKaW5kZXggZDI1MWQy
ZWNlMWYxOGIyNDBhODhiYmZiM2EyMmMyYzI0ZjgwZjZjZC4uOGE4M2M0YjZmNmY1OTYwN2RmYTc3
MDQ4NDI5ZDAyYjFlNDI5NzMzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvR0NDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9HQ0Nv
bnRyb2xsZXIuY3BwCkBAIC0yNyw3ICsyNyw2IEBACiAjaW5jbHVkZSAiR0NDb250cm9sbGVyLmgi
CiAKICNpbmNsdWRlICJDb21tb25WTS5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNs
dWRlICJKU0hUTUxEb2N1bWVudC5oIgogI2luY2x1ZGUgIkxvY2F0aW9uLmgiCiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSGVhcC5oPgpAQCAtMzYsNiArMzUsNyBAQAogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL1ZNLmg+CiAjaW5jbHVkZSA8cGFsL0xvZ2dpbmcuaD4KICNpbmNsdWRlIDx3dGYv
RmFzdE1hbGxvYy5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbS5jcHAKaW5kZXggYTNlY2M1YTVjOWUwZjMwZDc2
MDMyODE3ZjBkNDYzOTYzM2ZmMWE4Yi4uNTlmOTc4NmVkOGNmYTY0OWUwN2RkYjdkODg0YWM5MjQz
Mjk3NjM5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtLmNwcApAQCAtMzYs
MTEgKzM2LDExIEBACiAjaW5jbHVkZSAiRGF0YVRyYW5zZmVySXRlbUxpc3QuaCIKICNpbmNsdWRl
ICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZpbGUuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgi
CiAjaW5jbHVkZSAiRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5LmgiCiAjaW5jbHVkZSAiRmlsZVN5
c3RlbUZpbGVFbnRyeS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNp
bmNsdWRlICJTdHJpbmdDYWxsYmFjay5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQppbmRleCA5NzIxN2YxZDc1ZDBlNTQ2ZmNm
ODQzMWUyZDRhZjhiYTU0M2FiNjFjLi4yNTRhMzY4ZmE3NzRhZDYzNzJkNDZmMTUzYzVhOTVjNGVl
MjQyOGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRl
bnRSZWFkZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNv
bnRlbnRSZWFkZXJDb2NvYS5tbQpAQCAtMzcsNyArMzcsNiBAQAogI2ltcG9ydCAiRWRpdG9yLmgi
CiAjaW1wb3J0ICJFZGl0b3JDbGllbnQuaCIKICNpbXBvcnQgIkZpbGUuaCIKLSNpbXBvcnQgIkZp
bGVTeXN0ZW0uaCIKICNpbXBvcnQgIkZyYW1lLmgiCiAjaW1wb3J0ICJGcmFtZUxvYWRlci5oIgog
I2ltcG9ydCAiRnJhbWVMb2FkZXJDbGllbnQuaCIKQEAgLTY1LDYgKzY0LDcgQEAKICNpbXBvcnQg
IldlYk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5oIgogI2ltcG9ydCAibWFya3VwLmgiCiAjaW1w
b3J0IDxwYWwvc3BpL2NvY29hL05TQXR0cmlidXRlZFN0cmluZ1NQSS5oPgorI2ltcG9ydCA8d3Rm
L0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgogI2ltcG9ydCA8d3Rm
L1VSTFBhcnNlci5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcAppbmRleCBiNzNmY2RlNzlmNDYw
NzkyYzkyNmMwNzVmYmFhZjY2NDhhNzI0MTMxLi5hZGIzMGM5MzNjYTJmYjI1Y2VmNWQwY2E0MTM2
NTYwYmJhNmQ4MTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAKQEAgLTI3LDExICsyNywxMSBA
QAogI2luY2x1ZGUgIkZpbGUuaCIKIAogI2luY2x1ZGUgIkJsb2JVUkwuaCIKLSNpbmNsdWRlICJG
aWxlTWV0YWRhdGEuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiTUlNRVR5
cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVCbG9iUmVnaXN0cnkuaCIKICNpbmNs
dWRlIDx3dGYvRGF0ZU1hdGguaD4KKyNpbmNsdWRlIDx3dGYvRmlsZU1ldGFkYXRhLmg+CisjaW5j
bHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9GaWxlQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVDb2NvYS5tbQppbmRl
eCAyMGJlNmY3YWVkZWNhNzUzNDgzNTYzYjFiZTRmOTA2MmZhNDM4YTAzLi42NjRmOWE1MzYxM2Rm
MjZjYTE3YzcwN2MyMWI1MGM2NDY0NTIwNGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0ZpbGVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVDb2Nv
YS5tbQpAQCAtMjgsNyArMjgsNyBAQAogCiAjaWYgRU5BQkxFKEZJTEVfUkVQTEFDRU1FTlQpCiAK
LSNpbXBvcnQgIkZpbGVTeXN0ZW0uaCIKKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCA8TW9iaWxlQ29yZVNlcnZpY2VzL01vYmls
ZUNvcmVTZXJ2aWNlcy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5w
dXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKaW5kZXgg
MDNhZjNhOTYzNDk0ZmFmMDAxMmUyMWE5MzhmNTE5MTc4MDMwODUwOC4uOTk4ZjllZmE5NGUyYTc1
MjE2YmI0ZjM5YTc5Njg2NDljMTMxN2RkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9GaWxlSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5
cGUuY3BwCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiRmlsZS5oIgogI2luY2x1ZGUgIkZp
bGVMaXN0LmgiCiAjaW5jbHVkZSAiRmlsZUxpc3RDcmVhdG9yLmgiCi0jaW5jbHVkZSAiRmlsZVN5
c3RlbS5oIgogI2luY2x1ZGUgIkZvcm1Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIK
ICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCkBAIC00Myw2ICs0Miw3IEBACiAjaW5jbHVk
ZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAjaW5jbHVkZSAiVXNlckdl
c3R1cmVJbmRpY2F0b3IuaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUg
PHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvRmlsZUxpc3RDcmVhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUxp
c3RDcmVhdG9yLmNwcAppbmRleCA3NmY1NjU5NzBhZDFkZDhkODEwNmMyNWE1NzllNDU5MWJhYmQ0
OWI4Li4xNTU2ZmMyOTljYjIzNzNiMGM1OTg5NTIwYTcyYzMxMTZjZTM5ZWE1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVMaXN0Q3JlYXRvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9GaWxlTGlzdENyZWF0b3IuY3BwCkBAIC0yOCw5ICsyOCw5IEBACiAKICNpbmNs
dWRlICJGaWxlQ2hvb3Nlci5oIgogI2luY2x1ZGUgIkZpbGVMaXN0LmgiCi0jaW5jbHVkZSAiRmls
ZU1ldGFkYXRhLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgPHd0Zi9Dcm9z
c1RocmVhZENvcGllci5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlTWV0YWRhdGEuaD4KKyNpbmNsdWRl
IDx3dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3Bw
CmluZGV4IDc1NWYxYTI5YWQ3YzU3Y2NjM2JlYTVlZmEyNTViNjU2YmJkY2MzMDkuLjhhMzNlODg3
MGNjMzZiYzZkZTJmY2E4ZDFkNThjNGNjYTZiOGYzZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcApAQCAtMzMs
NyArMzMsNiBAQAogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAiRE9NQXBw
bGljYXRpb25DYWNoZS5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKLSNpbmNsdWRlICJGaWxl
U3lzdGVtLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgog
I2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCkBAIC00NCw2ICs0Myw3IEBACiAjaW5jbHVk
ZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJT
dWJyZXNvdXJjZUxvYWRlci5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVk
ZSA8d3RmL1VVSUQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAK
aW5kZXggZTgxNDgzYzM2MjNjZDAzNDI0NDQ4NGNkMGY1ZmRjOTI0OTU1YWUzMi4uODJhZGZmMzAz
MzVhMmUyYmI5Y2FhN2I0ZjY2ODg0ZDA5MGU3OTU2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBA
IC0zMCwxMiArMzAsMTIgQEAKICNpbmNsdWRlICJBcHBsaWNhdGlvbkNhY2hlR3JvdXAuaCIKICNp
bmNsdWRlICJBcHBsaWNhdGlvbkNhY2hlSG9zdC5oIgogI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZS5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJTUUxpdGVE
YXRhYmFzZVRyYWNrZXIuaCIKICNpbmNsdWRlICJTUUxpdGVTdGF0ZW1lbnQuaCIKICNpbmNsdWRl
ICJTUUxpdGVUcmFuc2FjdGlvbi5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5j
bHVkZSAiU2VjdXJpdHlPcmlnaW5EYXRhLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4K
ICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2lu
Y2x1ZGUgPHd0Zi9VVUlELmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCBkYjE3N2U4ZGFlOGM2MGU2
ZTcxODIyOWZiM2MwM2QzNmRmZmQ1NDUyLi4yNmEyNTgxOWMxYTc3NDFkMTJjZDk2NDYyOWFkMTU5
Nzk5ODZkMGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTUxLDcgKzUxLDYgQEAKICNpbmNsdWRl
ICJFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJFeHRlbnNpb25T
dHlsZVNoZWV0cy5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJGb2N1c0Nv
bnRyb2xsZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lTG9h
ZGVyQ2xpZW50LmgiCkBAIC0xMjIsNiArMTIxLDcgQEAKICNpbmNsdWRlICJXZWJHTFN0YXRlVHJh
Y2tlci5oIgogI2luY2x1ZGUgIldoZWVsRXZlbnREZWx0YUZpbHRlci5oIgogI2luY2x1ZGUgIldp
ZGdldC5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWRMZWFrQ291bnRlci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9CYXNlNjQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2VjdXJpdHlPcmlnaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5j
cHAKaW5kZXggYjU4ZmFhYTE2N2E5NjcyNmFhMjExZmUxZjAyNzRiYzY2ZTk2MTY1Yi4uM2FkOTIx
Y2M1NGRlMWZlZmUzZDE1NzFmMjJlMjUzMjEyYThkZTIwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZWN1cml0eU9yaWdpbi5jcHAKQEAgLTMwLDE1ICszMCwxNSBAQAogI2luY2x1ZGUgIlNlY3VyaXR5
T3JpZ2luLmgiCiAKICNpbmNsdWRlICJCbG9iVVJMLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5o
IgotI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJTY2hlbWVSZWdpc3RyeS5oIgogI2lu
Y2x1ZGUgIlNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCiAjaW5j
bHVkZSAiVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVt
Lmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0
cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL1VS
TC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRh
dGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwCmluZGV4
IDA1ZjhiMTlkYWU1ODc5ZDBjZGZkYTdjNzY0OWVjYTJiNDRjMzk4YTYuLjQzMGNiOGIwYjNhYzM2
Y2NhOTYxMWUwYTFmMDllMzVhZTEwYjBkOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3Vy
aXR5T3JpZ2luRGF0YS5jcHAKQEAgLTI3LDkgKzI3LDkgQEAKICNpbmNsdWRlICJTZWN1cml0eU9y
aWdpbkRhdGEuaCIKIAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiRmlsZVN5c3Rl
bS5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKKyNp
bmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9GaWxlSGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlSGFuZGxl
LmgKaW5kZXggZDExODMwODY5NjNkMjEyMzdiOTBiMWE4MjU4NWI3NjViYmMxM2RmMi4uNTBkODI0
Y2FlZTliYTEyNDA5ODQzNWVhNzIxNWQxNTE3ODdkYmNlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vRmlsZUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0ZpbGVIYW5kbGUuaApAQCAtMjgsOSArMjgsOCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1
ZGUgIkZpbGVTeXN0ZW0uaCIKLQogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVk
ZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlTWV0YWRhdGEuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0ZpbGVNZXRhZGF0YS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3
ZDg4NDk1M2U3Njc1ZDkyYzA2MzhkZWNhZDg1N2NkNDFhNTljNTYxLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Zp
bGVNZXRhZGF0YS5oCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRp
b24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0g
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQot
Ci0jaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3Ry
dWN0IEZpbGVNZXRhZGF0YSB7Ci0gICAgLy8gVGhlIGxhc3QgbW9kaWZpY2F0aW9uIHRpbWUgb2Yg
dGhlIGZpbGUsIGluIHNlY29uZHMuCi0gICAgV2FsbFRpbWUgbW9kaWZpY2F0aW9uVGltZTsKLQot
ICAgIC8vIFRoZSBsZW5ndGggb2YgdGhlIGZpbGUgaW4gYnl0ZXMuCi0gICAgbG9uZyBsb25nIGxl
bmd0aDsKLQotICAgIGJvb2wgaXNIaWRkZW47Ci0KLSAgICBlbnVtIGNsYXNzIFR5cGUgeyBGaWxl
LCBEaXJlY3RvcnksIFN5bWJvbGljTGluayB9OwotICAgIFR5cGUgdHlwZTsKLX07Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Zp
bGVTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN0cmVhbS5jcHAKaW5k
ZXggZWE5MTczNzRiNGM4YjRhNGVhMDQzYzI5YWJmNTQzMTU5MjJhODllMi4uODkzYmIzMzk0NzZj
ZWZkYThkZjEwYmM5MjBjMGIzNTgyNTE5MTU3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vRmlsZVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmls
ZVN0cmVhbS5jcHAKQEAgLTI5LDEwICsyOSw4IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5o
IgotCiAjaW5jbHVkZSAiRmlsZVN0cmVhbS5oIgogCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3RyZWFtLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3RyZWFtLmgKaW5kZXggYWEwMTFlYTIzZTE4NTRjNGI5MDIw
NTk2MjUzNzYxM2ExYWI2ZTEyYi4uYTJmYjhlNWZhYTI1NGJjOGU1Y2NlOWUxYjRjNjYzMWI4ZDFh
MDU0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN0cmVhbS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0uaApAQCAtMjgsMTAgKzI4LDkg
QEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBGaWxlU3RyZWFtX2gKLSNkZWZpbmUg
RmlsZVN0cmVhbV9oCisjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKKyNp
bmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTY0
LDUgKzYzLDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2Vu
ZGlmIC8vIEZpbGVTdHJlYW1faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
RmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWQ5ZDM3YWFhMTMxNjI4M2RhN2VmMjI0NmIz
Y2E5NDEwYWQyNWQyMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDM2NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE1IENhbm9uIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
LSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiRmlsZVN5c3RlbS5oIgotCi0jaW5jbHVkZSAiRmlsZU1ldGFkYXRhLmgiCi0jaW5jbHVkZSA8
d3RmL0hleE51bWJlci5oPgotI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgotI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+Ci0KLSNp
ZiAhT1MoV0lORE9XUykKLSNpbmNsdWRlIDxmY250bC5oPgotI2luY2x1ZGUgPHN5cy9tbWFuLmg+
Ci0jaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSNpbmNsdWRlIDx1bmlzdGQuaD4KLSNlbmRpZgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBGaWxlU3lzdGVtIHsKLQotLy8gVGhlIGZv
bGxvd2luZyBsb3dlci1BU0NJSSBjaGFyYWN0ZXJzIG5lZWQgZXNjYXBpbmcgdG8gYmUgdXNlZCBp
biBhIGZpbGVuYW1lCi0vLyBhY3Jvc3MgYWxsIHN5c3RlbXMsIGluY2x1ZGluZyBXaW5kb3dzOgot
Ly8gICAgIC0gVW5wcmludGFibGUgQVNDSUkgKDAwLTFGKQotLy8gICAgIC0gU3BhY2UgICAgICAg
ICAgICAgKDIwKQotLy8gICAgIC0gRG91YmxlIHF1b3RlICAgICAgKDIyKQotLy8gICAgIC0gUGVy
Y2VudCAgICAgICAgICAgKDI1KSAoZXNjYXBlZCBiZWNhdXNlIGl0IGlzIG91ciBlc2NhcGUgY2hh
cmFjdGVyKQotLy8gICAgIC0gQXN0ZXJpc2sgICAgICAgICAgKDJBKQotLy8gICAgIC0gU2xhc2gg
ICAgICAgICAgICAgKDJGKQotLy8gICAgIC0gQ29sb24gICAgICAgICAgICAgKDNBKQotLy8gICAg
IC0gTGVzcy10aGFuICAgICAgICAgKDNDKQotLy8gICAgIC0gR3JlYXRlci10aGFuICAgICAgKDNF
KQotLy8gICAgIC0gUXVlc3Rpb24gTWFyayAgICAgKDNGKQotLy8gICAgIC0gQmFja3NsYXNoICAg
ICAgICAgKDVDKQotLy8gICAgIC0gUGlwZSAgICAgICAgICAgICAgKDdDKQotLy8gICAgIC0gRGVs
ZXRlICAgICAgICAgICAgKDdGKQotCi1zdGF0aWMgY29uc3QgYm9vbCBuZWVkc0VzY2FwaW5nWzEy
OF0gPSB7Ci0gICAgLyogMDAtMDcgKi8gdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUs
ICB0cnVlLCAgdHJ1ZSwgIHRydWUsIAotICAgIC8qIDA4LTBGICovIHRydWUsICB0cnVlLCAgdHJ1
ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAKLQotICAgIC8qIDEwLTE3ICov
IHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAK
LSAgICAvKiAxOC0xRiAqLyB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUs
ICB0cnVlLCAgdHJ1ZSwgCi0KLSAgICAvKiAyMC0yNyAqLyB0cnVlLCAgZmFsc2UsIHRydWUsICBm
YWxzZSwgZmFsc2UsIHRydWUsICBmYWxzZSwgZmFsc2UsIAotICAgIC8qIDI4LTJGICovIGZhbHNl
LCBmYWxzZSwgdHJ1ZSwgIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCAKLSAgICAK
LSAgICAvKiAzMC0zNyAqLyBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNl
LCBmYWxzZSwgZmFsc2UsIAotICAgIC8qIDM4LTNGICovIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgIGZh
bHNlLCB0cnVlLCAgZmFsc2UsIHRydWUsICB0cnVlLCAKLSAgICAKLSAgICAvKiA0MC00NyAqLyBm
YWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIAot
ICAgIC8qIDQ4LTRGICovIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2Us
IGZhbHNlLCBmYWxzZSwKLSAgICAKLSAgICAvKiA1MC01NyAqLyBmYWxzZSwgZmFsc2UsIGZhbHNl
LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIAotICAgIC8qIDU4LTVGICovIGZh
bHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCAgZmFsc2UsIGZhbHNlLCBmYWxzZSwKLSAg
ICAKLSAgICAvKiA2MC02NyAqLyBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZh
bHNlLCBmYWxzZSwgZmFsc2UsIAotICAgIC8qIDY4LTZGICovIGZhbHNlLCBmYWxzZSwgZmFsc2Us
IGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKLSAgICAKLSAgICAvKiA3MC03NyAq
LyBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2Us
IAotICAgIC8qIDc4LTdGICovIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCAgZmFs
c2UsIGZhbHNlLCB0cnVlLCAKLX07Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRFc2NhcGVV
Q2hhcihVQ2hhciBjaGFyYWN0ZXIsIFVDaGFyIHByZXZpb3VzQ2hhcmFjdGVyLCBVQ2hhciBuZXh0
Q2hhcmFjdGVyKQotewotICAgIGlmIChjaGFyYWN0ZXIgPD0gMTI3KQotICAgICAgICByZXR1cm4g
bmVlZHNFc2NhcGluZ1tjaGFyYWN0ZXJdOwotCi0gICAgaWYgKFUxNl9JU19MRUFEKGNoYXJhY3Rl
cikgJiYgIVUxNl9JU19UUkFJTChuZXh0Q2hhcmFjdGVyKSkKLSAgICAgICAgcmV0dXJuIHRydWU7
Ci0KLSAgICBpZiAoVTE2X0lTX1RSQUlMKGNoYXJhY3RlcikgJiYgIVUxNl9JU19MRUFEKHByZXZp
b3VzQ2hhcmFjdGVyKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICByZXR1cm4gZmFsc2U7
Ci19Ci0KLVN0cmluZyBlbmNvZGVGb3JGaWxlTmFtZShjb25zdCBTdHJpbmcmIGlucHV0U3RyaW5n
KQotewotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGlucHV0U3RyaW5nLmxlbmd0aCgpOwotICAgIGlm
ICghbGVuZ3RoKQotICAgICAgICByZXR1cm4gaW5wdXRTdHJpbmc7Ci0KLSAgICBTdHJpbmdCdWls
ZGVyIHJlc3VsdDsKLSAgICByZXN1bHQucmVzZXJ2ZUNhcGFjaXR5KGxlbmd0aCk7Ci0KLSAgICBV
Q2hhciBwcmV2aW91c0NoYXJhY3RlcjsKLSAgICBVQ2hhciBjaGFyYWN0ZXIgPSAwOwotICAgIFVD
aGFyIG5leHRDaGFyYWN0ZXIgPSBpbnB1dFN0cmluZ1swXTsKLSAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgcHJldmlvdXNDaGFyYWN0ZXIgPSBjaGFy
YWN0ZXI7Ci0gICAgICAgIGNoYXJhY3RlciA9IG5leHRDaGFyYWN0ZXI7Ci0gICAgICAgIG5leHRD
aGFyYWN0ZXIgPSBpICsgMSA8IGxlbmd0aCA/IGlucHV0U3RyaW5nW2kgKyAxXSA6IDA7Ci0KLSAg
ICAgICAgaWYgKHNob3VsZEVzY2FwZVVDaGFyKGNoYXJhY3RlciwgcHJldmlvdXNDaGFyYWN0ZXIs
IG5leHRDaGFyYWN0ZXIpKSB7Ci0gICAgICAgICAgICBpZiAoY2hhcmFjdGVyIDw9IDI1NSkgewot
ICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyUnKTsKLSAgICAgICAgICAgICAgICBhcHBl
bmRCeXRlQXNIZXgoY2hhcmFjdGVyLCByZXN1bHQpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiJSsiKTsKLSAgICAgICAgICAgICAg
ICBhcHBlbmRCeXRlQXNIZXgoY2hhcmFjdGVyID4+IDgsIHJlc3VsdCk7Ci0gICAgICAgICAgICAg
ICAgYXBwZW5kQnl0ZUFzSGV4KGNoYXJhY3RlciwgcmVzdWx0KTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfSBlbHNlCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKGNoYXJhY3Rlcik7Ci0gICAg
fQotCi0gICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOwotfQotCi1TdHJpbmcgZGVjb2RlRnJv
bUZpbGVuYW1lKGNvbnN0IFN0cmluZyYgaW5wdXRTdHJpbmcpCi17Ci0gICAgdW5zaWduZWQgbGVu
Z3RoID0gaW5wdXRTdHJpbmcubGVuZ3RoKCk7Ci0gICAgaWYgKCFsZW5ndGgpCi0gICAgICAgIHJl
dHVybiBpbnB1dFN0cmluZzsKLQotICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OwotICAgIHJlc3Vs
dC5yZXNlcnZlQ2FwYWNpdHkobGVuZ3RoKTsKLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBsZW5ndGg7ICsraSkgewotICAgICAgICBpZiAoaW5wdXRTdHJpbmdbaV0gIT0gJyUnKSB7Ci0g
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKGlucHV0U3RyaW5nW2ldKTsKLSAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gSWYgdGhlIGlucHV0IHN0cmluZyBpcyBh
IHZhbGlkIGVuY29kZWQgZmlsZW5hbWUsIGl0IG11c3QgYmUgYXQgbGVhc3QgMiBjaGFyYWN0ZXJz
IGxvbmdlcgotICAgICAgICAvLyB0aGFuIHRoZSBjdXJyZW50IGluZGV4IHRvIGFjY291bnQgZm9y
IHRoaXMgcGVyY2VudCBlbmNvZGVkIHZhbHVlLgotICAgICAgICBpZiAoaSArIDIgPj0gbGVuZ3Ro
KQotICAgICAgICAgICAgcmV0dXJuIHsgfTsKLQotICAgICAgICBpZiAoaW5wdXRTdHJpbmdbaSsx
XSAhPSAnKycpIHsKLSAgICAgICAgICAgIGlmICghaXNBU0NJSUhleERpZ2l0KGlucHV0U3RyaW5n
W2kgKyAxXSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICAgICAgICAgIGlmICgh
aXNBU0NJSUhleERpZ2l0KGlucHV0U3RyaW5nW2kgKyAyXSkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIHsgfTsKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQodG9BU0NJSUhleFZhbHVlKGlucHV0
U3RyaW5nW2kgKyAxXSwgaW5wdXRTdHJpbmdbaSArIDJdKSk7Ci0gICAgICAgICAgICBpICs9IDI7
Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIElmIHRoZSBp
bnB1dCBzdHJpbmcgaXMgYSB2YWxpZCBlbmNvZGVkIGZpbGVuYW1lLCBpdCBtdXN0IGJlIGF0IGxl
YXN0IDUgY2hhcmFjdGVycyBsb25nZXIKLSAgICAgICAgLy8gdGhhbiB0aGUgY3VycmVudCBpbmRl
eCB0byBhY2NvdW50IGZvciB0aGlzIHBlcmNlbnQgZW5jb2RlZCB2YWx1ZS4KLSAgICAgICAgaWYg
KGkgKyA1ID49IGxlbmd0aCkKLSAgICAgICAgICAgIHJldHVybiB7IH07Ci0KLSAgICAgICAgaWYg
KCFpc0FTQ0lJSGV4RGlnaXQoaW5wdXRTdHJpbmdbaSArIDJdKSkKLSAgICAgICAgICAgIHJldHVy
biB7IH07Ci0gICAgICAgIGlmICghaXNBU0NJSUhleERpZ2l0KGlucHV0U3RyaW5nW2kgKyAzXSkp
Ci0gICAgICAgICAgICByZXR1cm4geyB9OwotICAgICAgICBpZiAoIWlzQVNDSUlIZXhEaWdpdChp
bnB1dFN0cmluZ1tpICsgNF0pKQotICAgICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICAgICAgaWYg
KCFpc0FTQ0lJSGV4RGlnaXQoaW5wdXRTdHJpbmdbaSArIDVdKSkKLSAgICAgICAgICAgIHJldHVy
biB7IH07Ci0KLSAgICAgICAgcmVzdWx0LmFwcGVuZCh0b0FTQ0lJSGV4VmFsdWUoaW5wdXRTdHJp
bmdbaSArIDJdLCBpbnB1dFN0cmluZ1tpICsgM10pIDw8IDggfCB0b0FTQ0lJSGV4VmFsdWUoaW5w
dXRTdHJpbmdbaSArIDRdLCBpbnB1dFN0cmluZ1tpICsgNV0pKTsKLSAgICAgICAgaSArPSA1Owot
ICAgIH0KLQotICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKLX0KLQotU3RyaW5nIGxhc3RD
b21wb25lbnRPZlBhdGhJZ25vcmluZ1RyYWlsaW5nU2xhc2goY29uc3QgU3RyaW5nJiBwYXRoKQot
ewotI2lmIE9TKFdJTkRPV1MpCi0gICAgY2hhciBwYXRoU2VwYXJhdG9yID0gJ1xcJzsKLSNlbHNl
Ci0gICAgY2hhciBwYXRoU2VwYXJhdG9yID0gJy8nOwotI2VuZGlmCi0KLSAgICBhdXRvIHBvc2l0
aW9uID0gcGF0aC5yZXZlcnNlRmluZChwYXRoU2VwYXJhdG9yKTsKLSAgICBpZiAocG9zaXRpb24g
PT0gbm90Rm91bmQpCi0gICAgICAgIHJldHVybiBwYXRoOwotCi0gICAgc2l6ZV90IGVuZE9mU3Vi
c3RyaW5nID0gcGF0aC5sZW5ndGgoKSAtIDE7Ci0gICAgaWYgKHBvc2l0aW9uID09IGVuZE9mU3Vi
c3RyaW5nKSB7Ci0gICAgICAgIC0tZW5kT2ZTdWJzdHJpbmc7Ci0gICAgICAgIHBvc2l0aW9uID0g
cGF0aC5yZXZlcnNlRmluZChwYXRoU2VwYXJhdG9yLCBlbmRPZlN1YnN0cmluZyk7Ci0gICAgfQot
Ci0gICAgcmV0dXJuIHBhdGguc3Vic3RyaW5nKHBvc2l0aW9uICsgMSwgZW5kT2ZTdWJzdHJpbmcg
LSBwb3NpdGlvbik7Ci19Ci0KLWJvb2wgYXBwZW5kRmlsZUNvbnRlbnRzVG9GaWxlSGFuZGxlKGNv
bnN0IFN0cmluZyYgcGF0aCwgUGxhdGZvcm1GaWxlSGFuZGxlJiB0YXJnZXQpCi17Ci0gICAgYXV0
byBzb3VyY2UgPSBvcGVuRmlsZShwYXRoLCBGaWxlT3Blbk1vZGU6OlJlYWQpOwotCi0gICAgaWYg
KCFpc0hhbmRsZVZhbGlkKHNvdXJjZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHN0
YXRpYyBpbnQgYnVmZmVyU2l6ZSA9IDEgPDwgMTk7Ci0gICAgVmVjdG9yPGNoYXI+IGJ1ZmZlcihi
dWZmZXJTaXplKTsKLQotICAgIGF1dG8gZmlsZUNsb3NlciA9IFdURjo6bWFrZVNjb3BlRXhpdChb
c291cmNlXSgpIHsKLSAgICAgICAgUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSA9IHNvdXJjZTsK
LSAgICAgICAgY2xvc2VGaWxlKGhhbmRsZSk7Ci0gICAgfSk7Ci0KLSAgICBkbyB7Ci0gICAgICAg
IGludCByZWFkQnl0ZXMgPSByZWFkRnJvbUZpbGUoc291cmNlLCBidWZmZXIuZGF0YSgpLCBidWZm
ZXJTaXplKTsKLSAgICAgICAgCi0gICAgICAgIGlmIChyZWFkQnl0ZXMgPCAwKQotICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIGlmICh3cml0ZVRvRmlsZSh0YXJnZXQsIGJ1ZmZl
ci5kYXRhKCksIHJlYWRCeXRlcykgIT0gcmVhZEJ5dGVzKQotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgICAgIGlmIChyZWFkQnl0ZXMgPCBidWZmZXJTaXplKQotICAgICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgfSB3aGlsZSAodHJ1ZSk7Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLX0KLQotICAgIAotYm9vbCBmaWxlc0hhdmVTYW1lVm9sdW1lKGNvbnN0IFN0cmluZyYg
ZmlsZUEsIGNvbnN0IFN0cmluZyYgZmlsZUIpCi17Ci0gICAgYXV0byBmc1JlcEZpbGVBID0gZmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVBKTsKLSAgICBhdXRvIGZzUmVwRmlsZUIgPSBmaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZUIpOwotICAgIAotICAgIGlmIChmc1JlcEZpbGVBLmlz
TnVsbCgpIHx8IGZzUmVwRmlsZUIuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQot
ICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0KLSAgICBhdXRvIGZpbGVBRGV2ID0gZ2V0RmlsZURl
dmljZUlkKGZzUmVwRmlsZUEpOwotICAgIGF1dG8gZmlsZUJEZXYgPSBnZXRGaWxlRGV2aWNlSWQo
ZnNSZXBGaWxlQik7Ci0KLSAgICBpZiAoZmlsZUFEZXYgJiYgZmlsZUJEZXYpCi0gICAgICAgIHJl
c3VsdCA9IChmaWxlQURldiA9PSBmaWxlQkRldik7Ci0gICAgCi0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLQotI2lmICFQTEFURk9STShNQUMpCi0KLXZvaWQgc2V0TWV0YWRhdGFVUkwoY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikKLXsKLX0KLQotYm9vbCBjYW5FeGNs
dWRlRnJvbUJhY2t1cCgpCi17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIGV4Y2x1ZGVG
cm9tQmFja3VwKGNvbnN0IFN0cmluZyYpCi17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi0jZW5k
aWYKLQotTWFwcGVkRmlsZURhdGE6On5NYXBwZWRGaWxlRGF0YSgpCi17Ci0jaWYgIU9TKFdJTkRP
V1MpCi0gICAgaWYgKCFtX2ZpbGVEYXRhKQotICAgICAgICByZXR1cm47Ci0gICAgbXVubWFwKG1f
ZmlsZURhdGEsIG1fZmlsZVNpemUpOwotI2VuZGlmCi19Ci0KLU1hcHBlZEZpbGVEYXRhOjpNYXBw
ZWRGaWxlRGF0YShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBib29sJiBzdWNjZXNzKQotewotI2lm
IE9TKFdJTkRPV1MpCi0gICAgLy8gRklYTUU6IEltcGxlbWVudCBtYXBwaW5nCi0gICAgc3VjY2Vz
cyA9IGZhbHNlOwotI2Vsc2UKLSAgICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKGZpbGVQYXRoKTsKLSAgICBpbnQgZmQgPSAhZnNSZXAuaXNOdWxsKCkgPyBvcGVuKGZz
UmVwLmRhdGEoKSwgT19SRE9OTFkpIDogLTE7Ci0gICAgaWYgKGZkIDwgMCkgewotICAgICAgICBz
dWNjZXNzID0gZmFsc2U7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBzdHJ1Y3Qgc3Rh
dCBmaWxlU3RhdDsKLSAgICBpZiAoZnN0YXQoZmQsICZmaWxlU3RhdCkpIHsKLSAgICAgICAgY2xv
c2UoZmQpOwotICAgICAgICBzdWNjZXNzID0gZmFsc2U7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICB1bnNpZ25lZCBzaXplOwotICAgIGlmICghV1RGOjpjb252ZXJ0U2FmZWx5KGZpbGVT
dGF0LnN0X3NpemUsIHNpemUpKSB7Ci0gICAgICAgIGNsb3NlKGZkKTsKLSAgICAgICAgc3VjY2Vz
cyA9IGZhbHNlOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFzaXplKSB7Ci0g
ICAgICAgIGNsb3NlKGZkKTsKLSAgICAgICAgc3VjY2VzcyA9IHRydWU7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICB2b2lkKiBkYXRhID0gbW1hcCgwLCBzaXplLCBQUk9UX1JFQUQsIE1B
UF9GSUxFIHwgTUFQX1NIQVJFRCwgZmQsIDApOwotICAgIGNsb3NlKGZkKTsKLQotICAgIGlmIChk
YXRhID09IE1BUF9GQUlMRUQpIHsKLSAgICAgICAgc3VjY2VzcyA9IGZhbHNlOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgc3VjY2VzcyA9IHRydWU7Ci0gICAgbV9maWxlRGF0YSA9IGRh
dGE7Ci0gICAgbV9maWxlU2l6ZSA9IHNpemU7Ci0jZW5kaWYKLX0KLQotUGxhdGZvcm1GaWxlSGFu
ZGxlIG9wZW5BbmRMb2NrRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVPcGVuTW9kZSBvcGVu
TW9kZSwgT3B0aW9uU2V0PEZpbGVMb2NrTW9kZT4gbG9ja01vZGUpCi17Ci0gICAgYXV0byBoYW5k
bGUgPSBvcGVuRmlsZShwYXRoLCBvcGVuTW9kZSk7Ci0gICAgaWYgKGhhbmRsZSA9PSBpbnZhbGlk
UGxhdGZvcm1GaWxlSGFuZGxlKQotICAgICAgICByZXR1cm4gaW52YWxpZFBsYXRmb3JtRmlsZUhh
bmRsZTsKLQotI2lmIFVTRShGSUxFX0xPQ0spCi0gICAgYm9vbCBsb2NrZWQgPSBsb2NrRmlsZSho
YW5kbGUsIGxvY2tNb2RlKTsKLSAgICBBU1NFUlRfVU5VU0VEKGxvY2tlZCwgbG9ja2VkKTsKLSNl
bHNlCi0gICAgVU5VU0VEX1BBUkFNKGxvY2tNb2RlKTsKLSNlbmRpZgotCi0gICAgcmV0dXJuIGhh
bmRsZTsKLX0KLQotdm9pZCB1bmxvY2tBbmRDbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhh
bmRsZSkKLXsKLSNpZiBVU0UoRklMRV9MT0NLKQotICAgIGJvb2wgdW5sb2NrZWQgPSB1bmxvY2tG
aWxlKGhhbmRsZSk7Ci0gICAgQVNTRVJUX1VOVVNFRCh1bmxvY2tlZCwgdW5sb2NrZWQpOwotI2Vu
ZGlmCi0gICAgY2xvc2VGaWxlKGhhbmRsZSk7Ci19Ci0KLWJvb2wgZmlsZUlzRGlyZWN0b3J5KGNv
bnN0IFN0cmluZyYgcGF0aCwgU2hvdWxkRm9sbG93U3ltYm9saWNMaW5rcyBzaG91bGRGb2xsb3dT
eW1ib2xpY0xpbmtzKQotewotICAgIGF1dG8gbWV0YWRhdGEgPSBzaG91bGRGb2xsb3dTeW1ib2xp
Y0xpbmtzID09IFNob3VsZEZvbGxvd1N5bWJvbGljTGlua3M6OlllcyA/IGZpbGVNZXRhZGF0YUZv
bGxvd2luZ1N5bWxpbmtzKHBhdGgpIDogZmlsZU1ldGFkYXRhKHBhdGgpOwotICAgIGlmICghbWV0
YWRhdGEpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gbWV0YWRhdGEudmFsdWUo
KS50eXBlID09IEZpbGVNZXRhZGF0YTo6VHlwZTo6RGlyZWN0b3J5OwotfQotCi19IC8vIG5hbWVz
cGFjZSBGaWxlU3lzdGVtCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9GaWxlU3lzdGVtLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjZWJjYWEwNTM5
YjU5ZDkzZTcyZTA5ODQwYjIzYjFkYWM2MzgxMWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5o
CisrKyAvZGV2L251bGwKQEAgLTEsMjI1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDctMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDggQ29sbGFib3JhLCBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4gCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4gCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3Ig
dGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRl
IDx0aW1lLmg+Ci0jaW5jbHVkZSA8dXRpbGl0eT4KLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgot
I2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5j
bHVkZSA8d3RmL1dhbGxUaW1lLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0K
LSNpZiBVU0UoQ0YpCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotI2VuZGlmCi0KLSNpZiBV
U0UoQ0YpCi10eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGRGF0YSogQ0ZEYXRhUmVmOwotI2VuZGlm
Ci0KLU9CSkNfQ0xBU1MgTlNTdHJpbmc7Ci0KLSNpZiBQTEFURk9STShXSU4pCi10eXBlZGVmIHZv
aWQgKkhBTkRMRTsKLSNlbmRpZgotCi0jaWYgVVNFKEdMSUIpCi10eXBlZGVmIHN0cnVjdCBfR0Zp
bGVJT1N0cmVhbSBHRmlsZUlPU3RyZWFtOwotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotc3RydWN0IEZpbGVNZXRhZGF0YTsKLQotbmFtZXNwYWNlIEZpbGVTeXN0ZW0gewotCi0vLyBQ
bGF0Zm9ybUZpbGVIYW5kbGUKLSNpZiBVU0UoR0xJQikgJiYgIVBMQVRGT1JNKFdJTikKLXR5cGVk
ZWYgR0ZpbGVJT1N0cmVhbSogUGxhdGZvcm1GaWxlSGFuZGxlOwotY29uc3QgUGxhdGZvcm1GaWxl
SGFuZGxlIGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUgPSAwOwotI2VsaWYgUExBVEZPUk0oV0lO
KQotdHlwZWRlZiBIQU5ETEUgUGxhdGZvcm1GaWxlSGFuZGxlOwotLy8gRklYTUU6IC0xIGlzIElO
VkFMSURfSEFORExFX1ZBTFVFLCBkZWZpbmVkIGluIDx3aW5iYXNlLmg+LiBDaHJvbWl1bSB0cmll
cyB0bwotLy8gYXZvaWQgdXNpbmcgV2luZG93cyBoZWFkZXJzIGluIGhlYWRlcnMuICBXZSdkIHJh
dGhlciBtb3ZlIHRoaXMgaW50byB0aGUgLmNwcC4KLWNvbnN0IFBsYXRmb3JtRmlsZUhhbmRsZSBp
bnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlID0gcmVpbnRlcnByZXRfY2FzdDxIQU5ETEU+KC0xKTsK
LSNlbHNlCi10eXBlZGVmIGludCBQbGF0Zm9ybUZpbGVIYW5kbGU7Ci1jb25zdCBQbGF0Zm9ybUZp
bGVIYW5kbGUgaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSA9IC0xOwotI2VuZGlmCi0KLWVudW0g
Y2xhc3MgRmlsZU9wZW5Nb2RlIHsKLSAgICBSZWFkLAotICAgIFdyaXRlLAotI2lmIE9TKERBUldJ
TikKLSAgICBFdmVudHNPbmx5LAotI2VuZGlmCi19OwotCi1lbnVtIGNsYXNzIEZpbGVTZWVrT3Jp
Z2luIHsKLSAgICBCZWdpbm5pbmcsCi0gICAgQ3VycmVudCwKLSAgICBFbmQsCi19OwotCi1lbnVt
IGNsYXNzIEZpbGVMb2NrTW9kZSB7Ci0gICAgU2hhcmVkID0gMSA8PCAwLAotICAgIEV4Y2x1c2l2
ZSA9IDEgPDwgMSwKLSAgICBOb25ibG9ja2luZyA9IDEgPDwgMiwKLX07Ci0KLWVudW0gY2xhc3Mg
U2hvdWxkRm9sbG93U3ltYm9saWNMaW5rcyB7IE5vLCBZZXMgfTsKLQotV0VCQ09SRV9FWFBPUlQg
Ym9vbCBmaWxlRXhpc3RzKGNvbnN0IFN0cmluZyYpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCBkZWxl
dGVGaWxlKGNvbnN0IFN0cmluZyYpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCBkZWxldGVFbXB0eURp
cmVjdG9yeShjb25zdCBTdHJpbmcmKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgbW92ZUZpbGUoY29u
c3QgU3RyaW5nJiBvbGRQYXRoLCBjb25zdCBTdHJpbmcmIG5ld1BhdGgpOwotV0VCQ09SRV9FWFBP
UlQgYm9vbCBnZXRGaWxlU2l6ZShjb25zdCBTdHJpbmcmLCBsb25nIGxvbmcmIHJlc3VsdCk7Ci1X
RUJDT1JFX0VYUE9SVCBib29sIGdldEZpbGVTaXplKFBsYXRmb3JtRmlsZUhhbmRsZSwgbG9uZyBs
b25nJiByZXN1bHQpOwotV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8V2FsbFRpbWU+IGdldEZpbGVN
b2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYpOwotV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8
V2FsbFRpbWU+IGdldEZpbGVDcmVhdGlvblRpbWUoY29uc3QgU3RyaW5nJik7IC8vIE5vdCBhbGwg
cGxhdGZvcm1zIHN0b3JlIGZpbGUgY3JlYXRpb24gdGltZS4KLVdFQkNPUkVfRVhQT1JUIE9wdGlv
bmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYgcGF0aCk7Ci1XRUJD
T1JFX0VYUE9SVCBPcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YUZvbGxvd2luZ1N5
bWxpbmtzKGNvbnN0IFN0cmluZyYgcGF0aCk7Ci1XRUJDT1JFX0VYUE9SVCBib29sIGZpbGVJc0Rp
cmVjdG9yeShjb25zdCBTdHJpbmcmLCBTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzKTsKLVdFQkNP
UkVfRVhQT1JUIFN0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY29uc3QgU3RyaW5nJiBw
YXRoLCBjb25zdCBTdHJpbmcmIGNvbXBvbmVudCk7Ci1TdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50cyhTdHJpbmdWaWV3IHBhdGgsIGNvbnN0IFZlY3RvcjxTdHJpbmdWaWV3PiYgY29tcG9u
ZW50cyk7Ci1TdHJpbmcgbGFzdENvbXBvbmVudE9mUGF0aElnbm9yaW5nVHJhaWxpbmdTbGFzaChj
b25zdCBTdHJpbmcmIHBhdGgpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCBtYWtlQWxsRGlyZWN0b3Jp
ZXMoY29uc3QgU3RyaW5nJiBwYXRoKTsKLVN0cmluZyBob21lRGlyZWN0b3J5UGF0aCgpOwotV0VC
Q09SRV9FWFBPUlQgU3RyaW5nIHBhdGhHZXRGaWxlTmFtZShjb25zdCBTdHJpbmcmKTsKLVdFQkNP
UkVfRVhQT1JUIFN0cmluZyBkaXJlY3RvcnlOYW1lKGNvbnN0IFN0cmluZyYpOwotV0VCQ09SRV9F
WFBPUlQgYm9vbCBnZXRWb2x1bWVGcmVlU3BhY2UoY29uc3QgU3RyaW5nJiwgdWludDY0X3QmKTsK
LVdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBD
U3RyaW5nJik7Ci1XRUJDT1JFX0VYUE9SVCBib29sIGNyZWF0ZVN5bWJvbGljTGluayhjb25zdCBT
dHJpbmcmIHRhcmdldFBhdGgsIGNvbnN0IFN0cmluZyYgc3ltYm9saWNMaW5rUGF0aCk7Ci0KLVdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0TWV0YWRhdGFVUkwoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25z
dCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiByZWZlcnJlciA9IHsgfSk7Ci0KLWJv
b2wgY2FuRXhjbHVkZUZyb21CYWNrdXAoKTsgLy8gUmV0dXJucyB0cnVlIGlmIGFueSBmaWxlIGNh
biBldmVyIGJlIGV4Y2x1ZGVkIGZyb20gYmFja3VwLgotYm9vbCBleGNsdWRlRnJvbUJhY2t1cChj
b25zdCBTdHJpbmcmKTsgLy8gUmV0dXJucyB0cnVlIGlmIHN1Y2Nlc3NmdWwuCi0KLVdFQkNPUkVf
RVhQT1JUIFZlY3RvcjxTdHJpbmc+IGxpc3REaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBj
b25zdCBTdHJpbmcmIGZpbHRlciA9IFN0cmluZygpKTsKLQotV0VCQ09SRV9FWFBPUlQgQ1N0cmlu
ZyBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJik7Ci1TdHJpbmcgc3RyaW5n
RnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBjaGFyKik7Ci0KLWlubGluZSBib29s
IGlzSGFuZGxlVmFsaWQoY29uc3QgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpIHsgcmV0dXJu
IGhhbmRsZSAhPSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOyB9Ci0KLS8vIFByZWZpeCBpcyB3
aGF0IHRoZSBmaWxlbmFtZSBzaG91bGQgYmUgcHJlZml4ZWQgd2l0aCwgbm90IHRoZSBmdWxsIHBh
dGguCi1XRUJDT1JFX0VYUE9SVCBTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5n
JiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYpOwotV0VCQ09SRV9FWFBPUlQgUGxhdGZvcm1G
aWxlSGFuZGxlIG9wZW5GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlKTsKLVdF
QkNPUkVfRVhQT1JUIHZvaWQgY2xvc2VGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSYpOwotLy8gUmV0
dXJucyB0aGUgcmVzdWx0aW5nIG9mZnNldCBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZpbGUg
aWYgc3VjY2Vzc2Z1bCwgLTEgb3RoZXJ3aXNlLgotV0VCQ09SRV9FWFBPUlQgbG9uZyBsb25nIHNl
ZWtGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCwgRmlsZVNlZWtPcmln
aW4pOwotYm9vbCB0cnVuY2F0ZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBsb25nIGxvbmcgb2Zm
c2V0KTsKLS8vIFJldHVybnMgbnVtYmVyIG9mIGJ5dGVzIGFjdHVhbGx5IHJlYWQgaWYgc3VjY2Vz
c2Z1bCwgLTEgb3RoZXJ3aXNlLgotV0VCQ09SRV9FWFBPUlQgaW50IHdyaXRlVG9GaWxlKFBsYXRm
b3JtRmlsZUhhbmRsZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCk7Ci0vLyBSZXR1cm5z
IG51bWJlciBvZiBieXRlcyBhY3R1YWxseSB3cml0dGVuIGlmIHN1Y2Nlc3NmdWwsIC0xIG90aGVy
d2lzZS4KLVdFQkNPUkVfRVhQT1JUIGludCByZWFkRnJvbUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxl
LCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsKLQotV0VCQ09SRV9FWFBPUlQgUGxhdGZvcm1GaWxl
SGFuZGxlIG9wZW5BbmRMb2NrRmlsZShjb25zdCBTdHJpbmcmLCBGaWxlT3Blbk1vZGUsIE9wdGlv
blNldDxGaWxlTG9ja01vZGU+ID0gRmlsZUxvY2tNb2RlOjpFeGNsdXNpdmUpOwotV0VCQ09SRV9F
WFBPUlQgdm9pZCB1bmxvY2tBbmRDbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlKTsKLQotLy8g
QXBwZW5kcyB0aGUgY29udGVudHMgb2YgdGhlIGZpbGUgZm91bmQgYXQgJ3BhdGgnIHRvIHRoZSBv
cGVuIFBsYXRmb3JtRmlsZUhhbmRsZS4KLS8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgd3JpdGUgd2Fz
IHN1Y2Nlc3NmdWwsIGZhbHNlIGlmIGl0IHdhcyBub3QuCi1ib29sIGFwcGVuZEZpbGVDb250ZW50
c1RvRmlsZUhhbmRsZShjb25zdCBTdHJpbmcmIHBhdGgsIFBsYXRmb3JtRmlsZUhhbmRsZSYpOwot
Ci0vLyBIYXJkIGxpbmtzIGEgZmlsZSBpZiBwb3NzaWJsZSwgY29waWVzIGl0IGlmIG5vdC4KLWJv
b2wgaGFyZExpbmtPckNvcHlGaWxlKGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBTdHJpbmcm
IGRlc3RpbmF0aW9uKTsKLQotI2lmIFVTRShGSUxFX0xPQ0spCi1XRUJDT1JFX0VYUE9SVCBib29s
IGxvY2tGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgT3B0aW9uU2V0PEZpbGVMb2NrTW9kZT4pOwot
V0VCQ09SRV9FWFBPUlQgYm9vbCB1bmxvY2tGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSk7Ci0jZW5k
aWYKLQotLy8gRW5jb2RlIGEgc3RyaW5nIGZvciB1c2Ugd2l0aGluIGEgZmlsZSBuYW1lLgotV0VC
Q09SRV9FWFBPUlQgU3RyaW5nIGVuY29kZUZvckZpbGVOYW1lKGNvbnN0IFN0cmluZyYpOwotV0VC
Q09SRV9FWFBPUlQgU3RyaW5nIGRlY29kZUZyb21GaWxlbmFtZShjb25zdCBTdHJpbmcmKTsKLQot
V0VCQ09SRV9FWFBPUlQgYm9vbCBmaWxlc0hhdmVTYW1lVm9sdW1lKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYpOwotCi0jaWYgVVNFKENGKQotUmV0YWluUHRyPENGVVJMUmVmPiBwYXRoQXNV
UkwoY29uc3QgU3RyaW5nJik7Ci0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZP
Uk0oV1BFKQotU3RyaW5nIGZpbGVuYW1lRm9yRGlzcGxheShjb25zdCBTdHJpbmcmKTsKLSNlbmRp
ZgotCi0jaWYgUExBVEZPUk0oV0lOKQotV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGxvY2FsVXNlclNw
ZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpOwotU3RyaW5nIHJvYW1pbmdVc2VyU3BlY2lmaWNTdG9y
YWdlRGlyZWN0b3J5KCk7Ci0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKENPQ09BKQotV0VCQ09SRV9F
WFBPUlQgTlNTdHJpbmcgKmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShOU1N0cmluZyAqZGlyZWN0
b3J5UHJlZml4KTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgZGVsZXRlTm9uRW1wdHlEaXJlY3Rvcnko
Y29uc3QgU3RyaW5nJik7Ci0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKFdJTl9DQUlSTykKLVdFQkNP
UkVfRVhQT1JUIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoKTsKLVdFQkNPUkVfRVhQ
T1JUIGJvb2wgZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7Ci0jZW5kaWYK
LQotV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHJlYWxQYXRoKGNvbnN0IFN0cmluZyYpOwotCi1jbGFz
cyBNYXBwZWRGaWxlRGF0YSB7Ci1wdWJsaWM6Ci0gICAgTWFwcGVkRmlsZURhdGEoKSB7IH0KLSAg
ICBNYXBwZWRGaWxlRGF0YShNYXBwZWRGaWxlRGF0YSYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBN
YXBwZWRGaWxlRGF0YShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBib29sJiBzdWNjZXNzKTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCB+TWFwcGVkRmlsZURhdGEoKTsKLSAgICBNYXBwZWRGaWxlRGF0YSYg
b3BlcmF0b3I9KE1hcHBlZEZpbGVEYXRhJiYpOwotCi0gICAgZXhwbGljaXQgb3BlcmF0b3IgYm9v
bCgpIGNvbnN0IHsgcmV0dXJuICEhbV9maWxlRGF0YTsgfQotICAgIGNvbnN0IHZvaWQqIGRhdGEo
KSBjb25zdCB7IHJldHVybiBtX2ZpbGVEYXRhOyB9Ci0gICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZmlsZVNpemU7IH0KLQotcHJpdmF0ZToKLSAgICB2b2lkKiBtX2ZpbGVEYXRh
IHsgbnVsbHB0ciB9OwotICAgIHVuc2lnbmVkIG1fZmlsZVNpemUgeyAwIH07Ci19OwotCi1pbmxp
bmUgTWFwcGVkRmlsZURhdGE6Ok1hcHBlZEZpbGVEYXRhKE1hcHBlZEZpbGVEYXRhJiYgb3RoZXIp
Ci0gICAgOiBtX2ZpbGVEYXRhKHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9maWxlRGF0YSwgbnVsbHB0
cikpCi0gICAgLCBtX2ZpbGVTaXplKHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9maWxlU2l6ZSwgMCkp
Ci17Ci19Ci0KLWlubGluZSBNYXBwZWRGaWxlRGF0YSYgTWFwcGVkRmlsZURhdGE6Om9wZXJhdG9y
PShNYXBwZWRGaWxlRGF0YSYmIG90aGVyKQotewotICAgIG1fZmlsZURhdGEgPSBzdGQ6OmV4Y2hh
bmdlKG90aGVyLm1fZmlsZURhdGEsIG51bGxwdHIpOwotICAgIG1fZmlsZVNpemUgPSBzdGQ6OmV4
Y2hhbmdlKG90aGVyLm1fZmlsZVNpemUsIDApOwotICAgIHJldHVybiAqdGhpczsKLX0KLQotfSAv
LyBuYW1lc3BhY2UgRmlsZVN5c3RlbQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCmluZGV4IDgxMzE4ZThiMjlhZTVhMGY1Yjk2MDNj
ODI1NTc5MWNkYmMyMGE0ZTEuLmVjMzcxMzQxYWI5NDk1YjdkMzU3NjEzNTFiMmIwOWIxMzVhM2Vm
M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCkBAIC0yNiw4ICsyNiw4
IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0FycmF5QnVmZmVyLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0u
aD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Tb3VyY2VzR0xpYi50eHQgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Tb3VyY2VzR0xpYi50eHQKaW5kZXggMjc3M2MyYTA4OGI2MGZiMTM5NjkyZDVmNDBkMGJl
ZmMzZmVjM2NjNC4uMDkwYjg0YTQ4YzEwM2QzZDU5MzE0MWQ5MGUyYmJiNGFiZjJjNWJhNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU291cmNlc0dMaWIudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NvdXJjZXNHTGliLnR4dApAQCAtMjUsNyArMjUsNiBAQCBw
bGF0Zm9ybS9hdWRpby9nbGliL0F1ZGlvQnVzR0xpYi5jcHAKIAogcGxhdGZvcm0vZ2xpYi9FdmVu
dExvb3BHbGliLmNwcAogcGxhdGZvcm0vZ2xpYi9GaWxlTW9uaXRvckdMaWIuY3BwCi1wbGF0Zm9y
bS9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcAogcGxhdGZvcm0vZ2xpYi9LZXllZERlY29kZXJHbGli
LmNwcAogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcAogcGxhdGZvcm0vZ2xpYi9M
b3dQb3dlck1vZGVOb3RpZmllckdMaWIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2Yv
RmlsZVN5c3RlbUNGLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDg0NzBhMDhm
YTVkMmY0NTJlNmM5Mzg3MDFjNmQ5MjZjYTYwOWYwMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9GaWxlU3lz
dGVtQ0YuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNzQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwNywgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUi
KSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQot
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgotCi0jaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZT
dHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLUNTdHJpbmcgRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmU3Ry
aW5nID0gcGF0aC5jcmVhdGVDRlN0cmluZygpOwotCi0gICAgaWYgKCFjZlN0cmluZykKLSAgICAg
ICAgcmV0dXJuIENTdHJpbmcoKTsKLQotICAgIENGSW5kZXggc2l6ZSA9IENGU3RyaW5nR2V0TWF4
aW11bVNpemVPZkZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjZlN0cmluZy5nZXQoKSk7Ci0KLSAg
ICBWZWN0b3I8Y2hhcj4gYnVmZmVyKHNpemUpOwotCi0gICAgaWYgKCFDRlN0cmluZ0dldEZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihjZlN0cmluZy5nZXQoKSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVy
LnNpemUoKSkpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZ2V0IGZpbGVzeXN0ZW0g
cmVwcmVzZW50YXRpb24gdG8gY3JlYXRlIENTdHJpbmcgZnJvbSBjZlN0cmluZyIpOwotICAgICAg
ICByZXR1cm4gQ1N0cmluZygpOwotICAgIH0KLQotICAgIHJldHVybiBDU3RyaW5nKGJ1ZmZlci5k
YXRhKCksIHN0cmxlbihidWZmZXIuZGF0YSgpKSk7Ci19Ci0KLVN0cmluZyBGaWxlU3lzdGVtOjpz
dHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IGNoYXIqIGZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbikKLXsKLSAgICByZXR1cm4gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhG
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oa0NGQWxsb2NhdG9yRGVmYXVsdCwgZmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKSkuZ2V0KCk7Ci19Ci0KLVJldGFpblB0cjxDRlVSTFJlZj4gRmlsZVN5c3Rl
bTo6cGF0aEFzVVJMKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBDRlVSTFBhdGhTdHlsZSBw
YXRoU3R5bGU7Ci0jaWYgUExBVEZPUk0oV0lOKQotICAgIHBhdGhTdHlsZSA9IGtDRlVSTFdpbmRv
d3NQYXRoU3R5bGU7Ci0jZWxzZQotICAgIHBhdGhTdHlsZSA9IGtDRlVSTFBPU0lYUGF0aFN0eWxl
OwotI2VuZGlmCi0gICAgcmV0dXJuIGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBh
dGgoMCwgcGF0aC5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBwYXRoU3R5bGUsIEZBTFNFKSk7Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL0ZpbGVNb25pdG9yQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9GaWxlTW9uaXRvckNvY29hLm1tCmluZGV4IDFhYjNjMzM0YzY5ZGZmYTM2NDhhYjAw
YTQ1NThkOWYyN2U0MzA2MDAuLmNjN2ZlNmI2Y2RlMTBlZDRjYTQ1NmU0NmJlMjhhMDRmNjg3MjQ3
NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0ZpbGVNb25pdG9y
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRmlsZU1vbml0b3JD
b2NvYS5tbQpAQCAtMjYsOSArMjYsOSBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJG
aWxlTW9uaXRvci5oIgogCi0jaW1wb3J0ICJGaWxlU3lzdGVtLmgiCiAjaW1wb3J0ICJMb2dnaW5n
LmgiCiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL0ZpbGVTeXN0ZW1Db2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL0ZpbGVTeXN0ZW1Db2NvYS5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZDM4YjBjODMwM2U3YmExMGQ0MDUzM2NiY2QxNWRhMzNiMDk2OWUzYy4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9GaWxlU3lzdGVtQ29jb2EubW0KKysrIC9kZXYvbnVsbApAQCAtMSwxNDMgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2Yg
QXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQK
LSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uIAotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
QU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
Ci0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiRmlsZVN5c3RlbS5oIgotCi1AaW50ZXJmYWNl
IFdlYkZpbGVNYW5hZ2VyRGVsZWdhdGUgOiBOU09iamVjdCA8TlNGaWxlTWFuYWdlckRlbGVnYXRl
PgotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gV2ViRmlsZU1hbmFnZXJEZWxlZ2F0ZQotCi0tIChC
T09MKWZpbGVNYW5hZ2VyOihOU0ZpbGVNYW5hZ2VyICopZmlsZU1hbmFnZXIgc2hvdWxkUHJvY2Vl
ZEFmdGVyRXJyb3I6KE5TRXJyb3IgKillcnJvciBtb3ZpbmdJdGVtQXRVUkw6KE5TVVJMICopc3Jj
VVJMIHRvVVJMOihOU1VSTCAqKWRzdFVSTAotewotICAgIFVOVVNFRF9QQVJBTShmaWxlTWFuYWdl
cik7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY1VSTCk7Ci0gICAgVU5VU0VEX1BBUkFNKGRzdFVSTCk7
ICAgIAotICAgIHJldHVybiBlcnJvci5jb2RlID09IE5TRmlsZVdyaXRlRmlsZUV4aXN0c0Vycm9y
OwotfQotCi1AZW5kCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIEZpbGVTeXN0
ZW0gewotCi1TdHJpbmcgaG9tZURpcmVjdG9yeVBhdGgoKQotewotICAgIHJldHVybiBOU0hvbWVE
aXJlY3RvcnkoKTsKLX0KLQotU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYg
cHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHBsYXRmb3JtRmlsZUhhbmRsZSkKLXsKLSAgICBw
bGF0Zm9ybUZpbGVIYW5kbGUgPSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOwotICAgIAotICAg
IFZlY3RvcjxjaGFyPiB0ZW1wb3JhcnlGaWxlUGF0aChQQVRIX01BWCk7Ci0gICAgaWYgKCFjb25m
c3RyKF9DU19EQVJXSU5fVVNFUl9URU1QX0RJUiwgdGVtcG9yYXJ5RmlsZVBhdGguZGF0YSgpLCB0
ZW1wb3JhcnlGaWxlUGF0aC5zaXplKCkpKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAg
ICAvLyBTaHJpbmsgdGhlIHZlY3Rvci4gICAKLSAgICB0ZW1wb3JhcnlGaWxlUGF0aC5zaHJpbmso
c3RybGVuKHRlbXBvcmFyeUZpbGVQYXRoLmRhdGEoKSkpOwotCi0gICAgLy8gRklYTUU6IENoYW5n
ZSB0byBhIHJ1bnRpbWUgYXNzZXJ0aW9uIHRoYXQgdGhlIHBhdGggZW5kcyB3aXRoIGEgc2xhc2gg
b25jZSA8cmRhcjovL3Byb2JsZW0vMjM1NzkwNzc+IGlzCi0gICAgLy8gZml4ZWQgaW4gYWxsIGlP
UyBTaW11bGF0b3IgdmVyc2lvbnMgdGhhdCB3ZSB1c2UuCi0gICAgaWYgKHRlbXBvcmFyeUZpbGVQ
YXRoLmxhc3QoKSAhPSAnLycpCi0gICAgICAgIHRlbXBvcmFyeUZpbGVQYXRoLmFwcGVuZCgnLycp
OwotCi0gICAgLy8gQXBwZW5kIHRoZSBmaWxlIG5hbWUuCi0gICAgQ1N0cmluZyBwcmVmaXhVdGY4
ID0gcHJlZml4LnV0ZjgoKTsKLSAgICB0ZW1wb3JhcnlGaWxlUGF0aC5hcHBlbmQocHJlZml4VXRm
OC5kYXRhKCksIHByZWZpeFV0ZjgubGVuZ3RoKCkpOwotICAgIHRlbXBvcmFyeUZpbGVQYXRoLmFw
cGVuZCgiWFhYWFhYIiwgNik7Ci0gICAgdGVtcG9yYXJ5RmlsZVBhdGguYXBwZW5kKCdcMCcpOwot
Ci0gICAgcGxhdGZvcm1GaWxlSGFuZGxlID0gbWtzdGVtcCh0ZW1wb3JhcnlGaWxlUGF0aC5kYXRh
KCkpOwotICAgIGlmIChwbGF0Zm9ybUZpbGVIYW5kbGUgPT0gaW52YWxpZFBsYXRmb3JtRmlsZUhh
bmRsZSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgcmV0dXJuIFN0cmluZzo6ZnJv
bVVURjgodGVtcG9yYXJ5RmlsZVBhdGguZGF0YSgpKTsKLX0KLQotYm9vbCBtb3ZlRmlsZShjb25z
dCBTdHJpbmcmIG9sZFBhdGgsIGNvbnN0IFN0cmluZyYgbmV3UGF0aCkKLXsKLSAgICAvLyBPdmVy
d3JpdGUgZXhpc3RpbmcgZmlsZXMuCi0gICAgYXV0byBtYW5hZ2VyID0gYWRvcHROUyhbW05TRmls
ZU1hbmFnZXIgYWxsb2NdIGluaXRdKTsKLSAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1dl
YkZpbGVNYW5hZ2VyRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKLSAgICBbbWFuYWdlciBzZXREZWxl
Z2F0ZTpkZWxlZ2F0ZS5nZXQoKV07Ci0gICAgCi0gICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7Ci0g
ICAgYm9vbCBzdWNjZXNzID0gW21hbmFnZXIgbW92ZUl0ZW1BdFVSTDpbTlNVUkwgZmlsZVVSTFdp
dGhQYXRoOm9sZFBhdGhdIHRvVVJMOltOU1VSTCBmaWxlVVJMV2l0aFBhdGg6bmV3UGF0aF0gZXJy
b3I6JmVycm9yXTsKLSAgICBpZiAoIXN1Y2Nlc3MpCi0gICAgICAgIE5TTG9nKEAiRXJyb3IgaW4g
bW92ZUZpbGU6ICVAIiwgZXJyb3IpOwotICAgIHJldHVybiBzdWNjZXNzOwotfQotCi1ib29sIGdl
dFZvbHVtZUZyZWVTcGFjZShjb25zdCBTdHJpbmcmIHBhdGgsIHVpbnQ2NF90JiBmcmVlU3BhY2Up
Ci17Ci0gICAgTlNEaWN0aW9uYXJ5ICpmaWxlU3lzdGVtQXR0cmlidXRlc0RpY3Rpb25hcnkgPSBb
W05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGF0dHJpYnV0ZXNPZkZpbGVTeXN0ZW1Gb3JQ
YXRoOihOU1N0cmluZyAqKXBhdGggZXJyb3I6TlVMTF07Ci0gICAgaWYgKCFmaWxlU3lzdGVtQXR0
cmlidXRlc0RpY3Rpb25hcnkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBmcmVlU3BhY2Ug
PSBbW2ZpbGVTeXN0ZW1BdHRyaWJ1dGVzRGljdGlvbmFyeSBvYmplY3RGb3JLZXk6TlNGaWxlU3lz
dGVtRnJlZVNpemVdIHVuc2lnbmVkTG9uZ0xvbmdWYWx1ZV07Ci0gICAgcmV0dXJuIHRydWU7Ci19
Ci0KLU5TU3RyaW5nICpjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoTlNTdHJpbmcgKmRpcmVjdG9y
eVByZWZpeCkKLXsKLSAgICBOU1N0cmluZyAqdGVtcERpcmVjdG9yeSA9IE5TVGVtcG9yYXJ5RGly
ZWN0b3J5KCk7Ci0gICAgaWYgKCF0ZW1wRGlyZWN0b3J5IHx8ICFbdGVtcERpcmVjdG9yeSBsZW5n
dGhdKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgaWYgKCFkaXJlY3RvcnlQcmVmaXggfHwg
IVtkaXJlY3RvcnlQcmVmaXggbGVuZ3RoXSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIE5T
U3RyaW5nICp0ZW1wRGlyZWN0b3J5Q29tcG9uZW50ID0gW2RpcmVjdG9yeVByZWZpeCBzdHJpbmdC
eUFwcGVuZGluZ1N0cmluZzpAIi1YWFhYWFhYWCJdOwotICAgIGNvbnN0IGNoYXIqIHRlbXBEaXJl
Y3RvcnlDU3RyaW5nID0gW1t0ZW1wRGlyZWN0b3J5IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBv
bmVudDp0ZW1wRGlyZWN0b3J5Q29tcG9uZW50XSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb25dOwot
ICAgIGlmICghdGVtcERpcmVjdG9yeUNTdHJpbmcpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAg
ICBjb25zdCBzaXplX3QgbGVuZ3RoID0gc3RybGVuKHRlbXBEaXJlY3RvcnlDU3RyaW5nKTsKLSAg
ICBBU1NFUlQobGVuZ3RoIDw9IE1BWFBBVEhMRU4pOwotICAgIGlmIChsZW5ndGggPiBNQVhQQVRI
TEVOKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgY29uc3Qgc2l6ZV90IGxlbmd0aFBsdXNO
dWxsVGVybWluYXRvciA9IGxlbmd0aCArIDE7Ci0gICAgVmVjdG9yPGNoYXIsIE1BWFBBVEhMRU4g
KyAxPiBwYXRoKGxlbmd0aFBsdXNOdWxsVGVybWluYXRvcik7Ci0gICAgbWVtY3B5KHBhdGguZGF0
YSgpLCB0ZW1wRGlyZWN0b3J5Q1N0cmluZywgbGVuZ3RoUGx1c051bGxUZXJtaW5hdG9yKTsKLQot
ICAgIGlmICghbWtkdGVtcChwYXRoLmRhdGEoKSkpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAg
ICByZXR1cm4gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBzdHJpbmdXaXRoRmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uOnBhdGguZGF0YSgpIGxlbmd0aDpsZW5ndGhdOwotfQotCi1ib29s
IGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICByZXR1
cm4gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSByZW1vdmVJdGVtQXRQYXRoOnBhdGgg
ZXJyb3I6bmlsXTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgRmlsZVN5c3RlbQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9GaWxl
TW9uaXRvckdMaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9GaWxlTW9uaXRv
ckdMaWIuY3BwCmluZGV4IDQ2M2YzMjc2YzI0ZTI1MWJlYjRhYTA4YjBiOTg5ODZlOGNjOTY5MjMu
LjVhOTgyZjQ5NDkyMzdjYjIwYTlmNTRjZjg4ZTJhZGVlNDhkNGY5NmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvRmlsZU1vbml0b3JHTGliLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0ZpbGVNb25pdG9yR0xpYi5jcHAKQEAgLTI2LDcgKzI2
LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJGaWxlTW9uaXRvci5oIgogCi0j
aW5jbHVkZSAiRmlsZVN5c3RlbS5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5j
bHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90aHJlYWRzL0JpbmFy
eVNlbWFwaG9yZS5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGli
L0ZpbGVTeXN0ZW1HbGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvRmlsZVN5
c3RlbUdsaWIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYTZjM2RmOTRkZDMy
MjEzNDMwMGM3YmJkMjZiYmIwODkwNDY1NjMxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvRmlsZVN5c3Rl
bUdsaWIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDcsIDIwMDkgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIKLSAqIENvcHlyaWdo
dCAoQykgMjAwOCBDb2xsYWJvcmEsIEx0ZC4KLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTAg
TW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAq
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCi0KLSNpbmNsdWRlICJGaWxlTWV0YWRh
dGEuaCIKLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgPGdpby9nZmlsZWRl
c2NyaXB0b3JiYXNlZC5oPgotI2luY2x1ZGUgPGdpby9naW8uaD4KLSNpbmNsdWRlIDxnbGliLmg+
Ci0jaW5jbHVkZSA8Z2xpYi9nc3RkaW8uaD4KLSNpbmNsdWRlIDxzeXMvZmlsZS5oPgotI2luY2x1
ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+Ci0jaW5jbHVkZSA8d3RmL1VVSUQuaD4KLSNpbmNsdWRlIDx3
dGYvZ2xpYi9HTGliVXRpbGl0aWVzLmg+Ci0jaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgot
I2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgotI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBG
aWxlU3lzdGVtIHsKLQotLyogT24gbGludXggZmlsZSBuYW1lcyBhcmUganVzdCByYXcgYnl0ZXMs
IHNvIGFsc28gc3RyaW5ncyB0aGF0IGNhbm5vdCBiZSBlbmNvZGVkIGluIGFueSB3YXkKLSAqIGFy
ZSB2YWxpZCBmaWxlIG5hbWVzLiBUaGlzIG1lYW4gdGhhdCB3ZSBjYW5ub3QganVzdCBzdG9yZSBh
IGZpbGUgbmFtZSBhcy1pcyBpbiBhIFN0cmluZwotICogYnV0IHdlIGhhdmUgdG8gZXNjYXBlIGl0
LgotICogT24gV2luZG93cyB0aGUgR0xpYiBmaWxlIG5hbWUgZW5jb2RpbmcgaXMgYWx3YXlzIFVU
Ri04IHNvIHdlIGNhbiBvcHRpbWl6ZSB0aGlzIGNhc2UuICovCi1TdHJpbmcgc3RyaW5nRnJvbUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBjaGFyKiBmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24pCi17Ci0gICAgaWYgKCFmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24pCi0gICAgICAgIHJldHVy
biBTdHJpbmcoKTsKLQotI2lmIE9TKFdJTkRPV1MpCi0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVU
RjgoZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKTsKLSNlbHNlCi0gICAgR1VuaXF1ZVB0cjxnY2hh
cj4gZXNjYXBlZFN0cmluZyhnX3VyaV9lc2NhcGVfc3RyaW5nKGZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbiwgIi86IiwgRkFMU0UpKTsKLSAgICByZXR1cm4gZXNjYXBlZFN0cmluZy5nZXQoKTsKLSNl
bmRpZgotfQotCi1zdGF0aWMgR1VuaXF1ZVB0cjxjaGFyPiB1bmVzY2FwZWRGaWxlbmFtZShjb25z
dCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgaWYgKHBhdGguaXNFbXB0eSgpKQotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSNpZiBPUyhXSU5ET1dTKQotICAgIHJldHVybiBHVW5pcXVlUHRyPGNoYXI+
KGdfc3RyZHVwKHBhdGgudXRmOCgpLmRhdGEoKSkpOwotI2Vsc2UKLSAgICByZXR1cm4gR1VuaXF1
ZVB0cjxjaGFyPihnX3VyaV91bmVzY2FwZV9zdHJpbmcocGF0aC51dGY4KCkuZGF0YSgpLCBudWxs
cHRyKSk7Ci0jZW5kaWYKLX0KLQotQ1N0cmluZyBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29u
c3QgU3RyaW5nJiBwYXRoKQotewotI2lmIE9TKFdJTkRPV1MpCi0gICAgcmV0dXJuIHBhdGgudXRm
OCgpOwotI2Vsc2UKLSAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZSA9IHVuZXNjYXBlZEZp
bGVuYW1lKHBhdGgpOwotICAgIHJldHVybiBmaWxlbmFtZS5nZXQoKTsKLSNlbmRpZgotfQotCi0v
LyBDb252ZXJ0cyBhIHN0cmluZyB0byBzb21ldGhpbmcgc3VpdGFibGUgdG8gYmUgZGlzcGxheWVk
IHRvIHRoZSB1c2VyLgotU3RyaW5nIGZpbGVuYW1lRm9yRGlzcGxheShjb25zdCBTdHJpbmcmIHN0
cmluZykKLXsKLSNpZiBPUyhXSU5ET1dTKQotICAgIHJldHVybiBzdHJpbmc7Ci0jZWxzZQotICAg
IEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUoc3RyaW5nKTsK
LSAgICBpZiAoIWZpbGVuYW1lKQotICAgICAgICByZXR1cm4gc3RyaW5nOwotCi0gICAgR1VuaXF1
ZVB0cjxnY2hhcj4gZGlzcGxheShnX2ZpbGVuYW1lX3RvX3V0ZjgoZmlsZW5hbWUuZ2V0KCksIC0x
LCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKSk7Ci0gICAgaWYgKCFkaXNwbGF5KQotICAgICAg
ICByZXR1cm4gc3RyaW5nOwotCi0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoZGlzcGxheS5n
ZXQoKSk7Ci0jZW5kaWYKLX0KLQotYm9vbCBmaWxlRXhpc3RzKGNvbnN0IFN0cmluZyYgcGF0aCkK
LXsKLSAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHBh
dGgpOwotICAgIHJldHVybiBmaWxlbmFtZSA/IGdfZmlsZV90ZXN0KGZpbGVuYW1lLmdldCgpLCBH
X0ZJTEVfVEVTVF9FWElTVFMpIDogZmFsc2U7Ci19Ci0KLWJvb2wgZGVsZXRlRmlsZShjb25zdCBT
dHJpbmcmIHBhdGgpCi17Ci0gICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUgPSB1bmVzY2Fw
ZWRGaWxlbmFtZShwYXRoKTsKLSAgICByZXR1cm4gZmlsZW5hbWUgPyBnX3JlbW92ZShmaWxlbmFt
ZS5nZXQoKSkgIT0gLTEgOiBmYWxzZTsKLX0KLQotYm9vbCBkZWxldGVFbXB0eURpcmVjdG9yeShj
b25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUgPSB1
bmVzY2FwZWRGaWxlbmFtZShwYXRoKTsKLSAgICByZXR1cm4gZmlsZW5hbWUgPyBnX3JtZGlyKGZp
bGVuYW1lLmdldCgpKSAhPSAtMSA6IGZhbHNlOwotfQotCi1zdGF0aWMgYm9vbCBnZXRGaWxlU3Rh
dChjb25zdCBTdHJpbmcmIHBhdGgsIEdTdGF0QnVmKiBzdGF0QnVmZmVyKQotewotICAgIEdVbmlx
dWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUocGF0aCk7Ci0gICAgaWYg
KCFmaWxlbmFtZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIGdfc3RhdChm
aWxlbmFtZS5nZXQoKSwgc3RhdEJ1ZmZlcikgIT0gLTE7Ci19Ci0KLXN0YXRpYyBib29sIGdldEZp
bGVMU3RhdChjb25zdCBTdHJpbmcmIHBhdGgsIEdTdGF0QnVmKiBzdGF0QnVmZmVyKQotewotICAg
IEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUocGF0aCk7Ci0g
ICAgaWYgKCFmaWxlbmFtZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIGdf
bHN0YXQoZmlsZW5hbWUuZ2V0KCksIHN0YXRCdWZmZXIpICE9IC0xOwotfQotCi1ib29sIGdldEZp
bGVTaXplKGNvbnN0IFN0cmluZyYgcGF0aCwgbG9uZyBsb25nJiByZXN1bHRTaXplKQotewotICAg
IEdTdGF0QnVmIHN0YXRSZXN1bHQ7Ci0gICAgaWYgKCFnZXRGaWxlU3RhdChwYXRoLCAmc3RhdFJl
c3VsdCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJlc3VsdFNpemUgPSBzdGF0UmVz
dWx0LnN0X3NpemU7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgZ2V0RmlsZVNpemUoUGxh
dGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgbG9uZyBsb25nJiByZXN1bHRTaXplKQotewotICAgIGF1
dG8gaW5mbyA9IGdfZmlsZV9pb19zdHJlYW1fcXVlcnlfaW5mbyhoYW5kbGUsIEdfRklMRV9BVFRS
SUJVVEVfU1RBTkRBUkRfU0laRSwgbnVsbHB0ciwgbnVsbHB0cik7Ci0gICAgaWYgKCFpbmZvKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXN1bHRTaXplID0gZ19maWxlX2luZm9fZ2V0
X3NpemUoaW5mbyk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLU9wdGlvbmFsPFdhbGxUaW1lPiBn
ZXRGaWxlQ3JlYXRpb25UaW1lKGNvbnN0IFN0cmluZyYpCi17Ci0gICAgLy8gRklYTUU6IElzIHRo
ZXJlIGEgd2F5IHRvIHJldHJpZXZlIGZpbGUgY3JlYXRpb24gdGltZSB3aXRoIEd0ayBvbiBwbGF0
Zm9ybXMgdGhhdCBzdXBwb3J0IGl0PwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci19Ci0KLU9w
dGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBh
dGgpCi17Ci0gICAgR1N0YXRCdWYgc3RhdFJlc3VsdDsKLSAgICBpZiAoIWdldEZpbGVTdGF0KHBh
dGgsICZzdGF0UmVzdWx0KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIHJl
dHVybiBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoc3RhdFJlc3VsdC5zdF9tdGltZSk7Ci19Ci0K
LXN0YXRpYyBGaWxlTWV0YWRhdGE6OlR5cGUgdG9GaWxlTWV0YXRhVHlwZShHU3RhdEJ1ZiBzdGF0
UmVzdWx0KQotewotICAgIGlmIChTX0lTRElSKHN0YXRSZXN1bHQuc3RfbW9kZSkpCi0gICAgICAg
IHJldHVybiBGaWxlTWV0YWRhdGE6OlR5cGU6OkRpcmVjdG9yeTsKLSAgICBpZiAoU19JU0xOSyhz
dGF0UmVzdWx0LnN0X21vZGUpKQotICAgICAgICByZXR1cm4gRmlsZU1ldGFkYXRhOjpUeXBlOjpT
eW1ib2xpY0xpbms7Ci0gICAgcmV0dXJuIEZpbGVNZXRhZGF0YTo6VHlwZTo6RmlsZTsKLX0KLQot
c3RhdGljIE9wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhVXNpbmdGdW5jdGlvbihj
b25zdCBTdHJpbmcmIHBhdGgsIGJvb2wgKCpzdGF0RnVuYykoY29uc3QgU3RyaW5nJiwgR1N0YXRC
dWYqKSkKLXsKLSAgICBHU3RhdEJ1ZiBzdGF0UmVzdWx0OwotICAgIGlmICghc3RhdEZ1bmMocGF0
aCwgJnN0YXRSZXN1bHQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgU3Ry
aW5nIGZpbGVuYW1lID0gcGF0aEdldEZpbGVOYW1lKHBhdGgpOwotICAgIGJvb2wgaXNIaWRkZW4g
PSAhZmlsZW5hbWUuaXNFbXB0eSgpICYmIGZpbGVuYW1lWzBdID09ICcuJzsKLQotICAgIHJldHVy
biBGaWxlTWV0YWRhdGEgewotICAgICAgICBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoc3RhdFJl
c3VsdC5zdF9tdGltZSksCi0gICAgICAgIHN0YXRSZXN1bHQuc3Rfc2l6ZSwKLSAgICAgICAgaXNI
aWRkZW4sCi0gICAgICAgIHRvRmlsZU1ldGF0YVR5cGUoc3RhdFJlc3VsdCkKLSAgICB9OwotfQot
Ci1PcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YShjb25zdCBTdHJpbmcmIHBhdGgp
Ci17Ci0gICAgcmV0dXJuIGZpbGVNZXRhZGF0YVVzaW5nRnVuY3Rpb24ocGF0aCwgJmdldEZpbGVM
U3RhdCk7Ci19Ci0KLU9wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhRm9sbG93aW5n
U3ltbGlua3MoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIHJldHVybiBmaWxlTWV0YWRhdGFV
c2luZ0Z1bmN0aW9uKHBhdGgsICZnZXRGaWxlU3RhdCk7Ci19Ci0KLVN0cmluZyBwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGNvbXBvbmVu
dCkKLXsKLSAgICBpZiAocGF0aC5lbmRzV2l0aChHX0RJUl9TRVBBUkFUT1JfUykpCi0gICAgICAg
IHJldHVybiBwYXRoICsgY29tcG9uZW50OwotICAgIHJldHVybiBwYXRoICsgR19ESVJfU0VQQVJB
VE9SX1MgKyBjb21wb25lbnQ7Ci19Ci0KLVN0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRz
KFN0cmluZ1ZpZXcgcGF0aCwgY29uc3QgVmVjdG9yPFN0cmluZ1ZpZXc+JiBjb21wb25lbnRzKQot
ewotICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBidWlsZGVyLmFwcGVuZChwYXRoKTsK
LSAgICBmb3IgKGF1dG8mIGNvbXBvbmVudCA6IGNvbXBvbmVudHMpIHsKLSAgICAgICAgYnVpbGRl
ci5hcHBlbmQoR19ESVJfU0VQQVJBVE9SX1MpOwotICAgICAgICBidWlsZGVyLmFwcGVuZChjb21w
b25lbnQpOwotICAgIH0KLSAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwotfQotCi1ib29s
IG1ha2VBbGxEaXJlY3Rvcmllcyhjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgR1VuaXF1ZVB0
cjxnY2hhcj4gZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShwYXRoKTsKLSAgICByZXR1cm4g
ZmlsZW5hbWUgPyBnX21rZGlyX3dpdGhfcGFyZW50cyhmaWxlbmFtZS5nZXQoKSwgU19JUldYVSkg
IT0gLTEgOiBmYWxzZTsKLX0KLQotU3RyaW5nIGhvbWVEaXJlY3RvcnlQYXRoKCkKLXsKLSAgICBy
ZXR1cm4gc3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihnX2dldF9ob21lX2Rpcigp
KTsKLX0KLQotYm9vbCBjcmVhdGVTeW1ib2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRo
LCBjb25zdCBTdHJpbmcmIHN5bWJvbGljTGlua1BhdGgpCi17Ci0gICAgQ1N0cmluZyB0YXJnZXRQ
YXRoRlNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24odGFyZ2V0UGF0aCk7Ci0gICAgaWYg
KCF0YXJnZXRQYXRoRlNSZXAuZGF0YSgpIHx8IHRhcmdldFBhdGhGU1JlcC5kYXRhKClbMF0gPT0g
J1wwJykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgQ1N0cmluZyBzeW1ib2xpY0xpbmtQ
YXRoRlNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oc3ltYm9saWNMaW5rUGF0aCk7Ci0g
ICAgaWYgKCFzeW1ib2xpY0xpbmtQYXRoRlNSZXAuZGF0YSgpIHx8IHN5bWJvbGljTGlua1BhdGhG
U1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0
dXJuICFzeW1saW5rKHRhcmdldFBhdGhGU1JlcC5kYXRhKCksIHN5bWJvbGljTGlua1BhdGhGU1Jl
cC5kYXRhKCkpOwotfQotCi1TdHJpbmcgcGF0aEdldEZpbGVOYW1lKGNvbnN0IFN0cmluZyYgcGF0
aE5hbWUpCi17Ci0gICAgR1VuaXF1ZVB0cjxnY2hhcj4gdG1wRmlsZW5hbWUgPSB1bmVzY2FwZWRG
aWxlbmFtZShwYXRoTmFtZSk7Ci0gICAgaWYgKCF0bXBGaWxlbmFtZSkKLSAgICAgICAgcmV0dXJu
IHBhdGhOYW1lOwotCi0gICAgR1VuaXF1ZVB0cjxnY2hhcj4gYmFzZU5hbWUoZ19wYXRoX2dldF9i
YXNlbmFtZSh0bXBGaWxlbmFtZS5nZXQoKSkpOwotICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4
KGJhc2VOYW1lLmdldCgpKTsKLX0KLQotYm9vbCBnZXRWb2x1bWVGcmVlU3BhY2UoY29uc3QgU3Ry
aW5nJiBwYXRoLCB1aW50NjRfdCYgZnJlZVNwYWNlKQotewotICAgIEdVbmlxdWVQdHI8Z2NoYXI+
IGZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUocGF0aCk7Ci0gICAgaWYgKCFmaWxlbmFtZSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgR1JlZlB0cjxHRmlsZT4gZmlsZSA9IGFkb3B0
R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKGZpbGVuYW1lLmdldCgpKSk7Ci0gICAgR1JlZlB0cjxH
RmlsZUluZm8+IGZpbGVJbmZvID0gYWRvcHRHUmVmKGdfZmlsZV9xdWVyeV9maWxlc3lzdGVtX2lu
Zm8oZmlsZS5nZXQoKSwgR19GSUxFX0FUVFJJQlVURV9GSUxFU1lTVEVNX0ZSRUUsIDAsIDApKTsK
LSAgICBpZiAoIWZpbGVJbmZvKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBmcmVlU3Bh
Y2UgPSBnX2ZpbGVfaW5mb19nZXRfYXR0cmlidXRlX3VpbnQ2NChmaWxlSW5mby5nZXQoKSwgR19G
SUxFX0FUVFJJQlVURV9GSUxFU1lTVEVNX0ZSRUUpOwotICAgIHJldHVybiAhIWZyZWVTcGFjZTsK
LX0KLQotU3RyaW5nIGRpcmVjdG9yeU5hbWUoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIEdV
bmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUocGF0aCk7Ci0gICAg
aWYgKCFmaWxlbmFtZSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgR1VuaXF1ZVB0
cjxjaGFyPiBkaXJuYW1lKGdfcGF0aF9nZXRfZGlybmFtZShmaWxlbmFtZS5nZXQoKSkpOwotICAg
IHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGRpcm5hbWUuZ2V0KCkpOwotfQotCi1WZWN0b3I8U3Ry
aW5nPiBsaXN0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBmaWx0
ZXIpCi17Ci0gICAgVmVjdG9yPFN0cmluZz4gZW50cmllczsKLQotICAgIEdVbmlxdWVQdHI8Z2No
YXI+IGZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUocGF0aCk7Ci0gICAgaWYgKCFmaWxlbmFt
ZSkKLSAgICAgICAgcmV0dXJuIGVudHJpZXM7Ci0KLSAgICBHVW5pcXVlUHRyPEdEaXI+IGRpcihn
X2Rpcl9vcGVuKGZpbGVuYW1lLmdldCgpLCAwLCBudWxscHRyKSk7Ci0gICAgaWYgKCFkaXIpCi0g
ICAgICAgIHJldHVybiBlbnRyaWVzOwotCi0gICAgR1VuaXF1ZVB0cjxHUGF0dGVyblNwZWM+IHBz
cGVjKGdfcGF0dGVybl9zcGVjX25ldygoZmlsdGVyLnV0ZjgoKSkuZGF0YSgpKSk7Ci0gICAgd2hp
bGUgKGNvbnN0IGNoYXIqIG5hbWUgPSBnX2Rpcl9yZWFkX25hbWUoZGlyLmdldCgpKSkgewotICAg
ICAgICBpZiAoIWdfcGF0dGVybl9tYXRjaF9zdHJpbmcocHNwZWMuZ2V0KCksIG5hbWUpKQotICAg
ICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZW50cnkoZ19i
dWlsZF9maWxlbmFtZShmaWxlbmFtZS5nZXQoKSwgbmFtZSwgbnVsbHB0cikpOwotICAgICAgICBl
bnRyaWVzLmFwcGVuZChzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGVudHJ5Lmdl
dCgpKSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGVudHJpZXM7Ci19Ci0KLVN0cmluZyBvcGVuVGVt
cG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5k
bGUpCi17Ci0gICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUoZ19zdHJkdXBfcHJpbnRmKCIl
cyVzIiwgcHJlZml4LnV0ZjgoKS5kYXRhKCksIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKS51
dGY4KCkuZGF0YSgpKSk7Ci0gICAgR1VuaXF1ZVB0cjxnY2hhcj4gdGVtcFBhdGgoZ19idWlsZF9m
aWxlbmFtZShnX2dldF90bXBfZGlyKCksIGZpbGVuYW1lLmdldCgpLCBOVUxMKSk7Ci0gICAgR1Jl
ZlB0cjxHRmlsZT4gZmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKHRlbXBQYXRo
LmdldCgpKSk7Ci0KLSAgICBoYW5kbGUgPSBnX2ZpbGVfY3JlYXRlX3JlYWR3cml0ZShmaWxlLmdl
dCgpLCBHX0ZJTEVfQ1JFQVRFX05PTkUsIDAsIDApOwotICAgIGlmICghaXNIYW5kbGVWYWxpZCho
YW5kbGUpKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJv
bVVURjgodGVtcFBhdGguZ2V0KCkpOwotfQotCi1QbGF0Zm9ybUZpbGVIYW5kbGUgb3BlbkZpbGUo
Y29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUgbW9kZSkKLXsKLSAgICBHVW5pcXVlUHRy
PGdjaGFyPiBmaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGgpOwotICAgIGlmICghZmls
ZW5hbWUpCi0gICAgICAgIHJldHVybiBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOwotCi0gICAg
R1JlZlB0cjxHRmlsZT4gZmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKGZpbGVu
YW1lLmdldCgpKSk7Ci0gICAgR0ZpbGVJT1N0cmVhbSogaW9TdHJlYW0gPSAwOwotICAgIGlmICht
b2RlID09IEZpbGVPcGVuTW9kZTo6UmVhZCkKLSAgICAgICAgaW9TdHJlYW0gPSBnX2ZpbGVfb3Bl
bl9yZWFkd3JpdGUoZmlsZS5nZXQoKSwgMCwgMCk7Ci0gICAgZWxzZSBpZiAobW9kZSA9PSBGaWxl
T3Blbk1vZGU6OldyaXRlKSB7Ci0gICAgICAgIGlmIChnX2ZpbGVfdGVzdChmaWxlbmFtZS5nZXQo
KSwgc3RhdGljX2Nhc3Q8R0ZpbGVUZXN0PihHX0ZJTEVfVEVTVF9FWElTVFMgfCBHX0ZJTEVfVEVT
VF9JU19SRUdVTEFSKSkpCi0gICAgICAgICAgICBpb1N0cmVhbSA9IGdfZmlsZV9vcGVuX3JlYWR3
cml0ZShmaWxlLmdldCgpLCAwLCAwKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgaW9TdHJl
YW0gPSBnX2ZpbGVfY3JlYXRlX3JlYWR3cml0ZShmaWxlLmdldCgpLCBHX0ZJTEVfQ1JFQVRFX05P
TkUsIDAsIDApOwotICAgIH0KLQotICAgIHJldHVybiBpb1N0cmVhbTsKLX0KLQotdm9pZCBjbG9z
ZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpCi17Ci0gICAgaWYgKCFpc0hhbmRsZVZh
bGlkKGhhbmRsZSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdfaW9fc3RyZWFtX2Nsb3NlKEdf
SU9fU1RSRUFNKGhhbmRsZSksIDAsIDApOwotICAgIGdfb2JqZWN0X3VucmVmKGhhbmRsZSk7Ci0g
ICAgaGFuZGxlID0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKLX0KLQotbG9uZyBsb25nIHNl
ZWtGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQsIEZpbGVT
ZWVrT3JpZ2luIG9yaWdpbikKLXsKLSAgICBHU2Vla1R5cGUgc2Vla1R5cGUgPSBHX1NFRUtfU0VU
OwotICAgIHN3aXRjaCAob3JpZ2luKSB7Ci0gICAgY2FzZSBGaWxlU2Vla09yaWdpbjo6QmVnaW5u
aW5nOgotICAgICAgICBzZWVrVHlwZSA9IEdfU0VFS19TRVQ7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgRmlsZVNlZWtPcmlnaW46OkN1cnJlbnQ6Ci0gICAgICAgIHNlZWtUeXBlID0gR19TRUVL
X0NVUjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGaWxlU2Vla09yaWdpbjo6RW5kOgotICAg
ICAgICBzZWVrVHlwZSA9IEdfU0VFS19FTkQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6
Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLQotICAgIGlmICghZ19zZWVr
YWJsZV9zZWVrKEdfU0VFS0FCTEUoZ19pb19zdHJlYW1fZ2V0X2lucHV0X3N0cmVhbShHX0lPX1NU
UkVBTShoYW5kbGUpKSksCi0gICAgICAgIG9mZnNldCwgc2Vla1R5cGUsIDAsIDApKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICByZXR1cm4gZ19zZWVrYWJsZV90ZWxsKEdf
U0VFS0FCTEUoZ19pb19zdHJlYW1fZ2V0X2lucHV0X3N0cmVhbShHX0lPX1NUUkVBTShoYW5kbGUp
KSkpOwotfQotCi1pbnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY29u
c3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKLXsKLSAgICBnc2l6ZSBieXRlc1dyaXR0ZW47Ci0g
ICAgZ19vdXRwdXRfc3RyZWFtX3dyaXRlX2FsbChnX2lvX3N0cmVhbV9nZXRfb3V0cHV0X3N0cmVh
bShHX0lPX1NUUkVBTShoYW5kbGUpKSwKLSAgICAgICAgZGF0YSwgbGVuZ3RoLCAmYnl0ZXNXcml0
dGVuLCAwLCAwKTsKLSAgICByZXR1cm4gYnl0ZXNXcml0dGVuOwotfQotCi1pbnQgcmVhZEZyb21G
aWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCi17
Ci0gICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwotICAgIGRvIHsKLSAgICAgICAgZ3Nz
aXplIGJ5dGVzUmVhZCA9IGdfaW5wdXRfc3RyZWFtX3JlYWQoZ19pb19zdHJlYW1fZ2V0X2lucHV0
X3N0cmVhbShHX0lPX1NUUkVBTShoYW5kbGUpKSwKLSAgICAgICAgICAgIGRhdGEsIGxlbmd0aCwg
MCwgJmVycm9yLm91dFB0cigpKTsKLSAgICAgICAgaWYgKGJ5dGVzUmVhZCA+PSAwKQotICAgICAg
ICAgICAgcmV0dXJuIGJ5dGVzUmVhZDsKLSAgICB9IHdoaWxlIChlcnJvciAmJiBlcnJvci0+Y29k
ZSA9PSBHX0ZJTEVfRVJST1JfSU5UUik7Ci0gICAgcmV0dXJuIC0xOwotfQotCi1ib29sIG1vdmVG
aWxlKGNvbnN0IFN0cmluZyYgb2xkUGF0aCwgY29uc3QgU3RyaW5nJiBuZXdQYXRoKQotewotICAg
IEdVbmlxdWVQdHI8Z2NoYXI+IG9sZEZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUob2xkUGF0
aCk7Ci0gICAgaWYgKCFvbGRGaWxlbmFtZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
R1VuaXF1ZVB0cjxnY2hhcj4gbmV3RmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShuZXdQYXRo
KTsKLSAgICBpZiAoIW5ld0ZpbGVuYW1lKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBH
UmVmUHRyPEdGaWxlPiBvbGRGaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgob2xk
RmlsZW5hbWUuZ2V0KCkpKTsKLSAgICBHUmVmUHRyPEdGaWxlPiBuZXdGaWxlID0gYWRvcHRHUmVm
KGdfZmlsZV9uZXdfZm9yX3BhdGgobmV3RmlsZW5hbWUuZ2V0KCkpKTsKLQotICAgIHJldHVybiBn
X2ZpbGVfbW92ZShvbGRGaWxlLmdldCgpLCBuZXdGaWxlLmdldCgpLCBHX0ZJTEVfQ09QWV9PVkVS
V1JJVEUsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpOwotfQotCi1ib29sIGhh
cmRMaW5rT3JDb3B5RmlsZShjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiBkZXN0
aW5hdGlvbikKLXsKLSNpZiBPUyhXSU5ET1dTKQotICAgIHJldHVybiAhITo6Q29weUZpbGUoc291
cmNlLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpLCBkZXN0aW5hdGlvbi5j
aGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSwgVFJVRSk7Ci0jZWxzZQotICAg
IEdVbmlxdWVQdHI8Z2NoYXI+IHNvdXJjZUZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUoc291
cmNlKTsKLSAgICBpZiAoIXNvdXJjZUZpbGVuYW1lKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICBHVW5pcXVlUHRyPGdjaGFyPiBkZXN0aW5hdGlvbkZpbGVuYW1lID0gdW5lc2NhcGVkRmls
ZW5hbWUoZGVzdGluYXRpb24pOwotICAgIGlmICghZGVzdGluYXRpb25GaWxlbmFtZSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFsaW5rKHNvdXJjZUZpbGVuYW1lLmdldCgpLCBk
ZXN0aW5hdGlvbkZpbGVuYW1lLmdldCgpKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAv
LyBIYXJkIGxpbmsgZmFpbGVkLiBQZXJmb3JtIGEgY29weSBpbnN0ZWFkLgotICAgIEdSZWZQdHI8
R0ZpbGU+IHNvdXJjZUZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0aChzb3VyY2VG
aWxlbmFtZS5nZXQoKSkpOwotICAgIEdSZWZQdHI8R0ZpbGU+IGRlc3RpbmF0aW9uRmlsZSA9IGFk
b3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKGRlc3RpbmF0aW9uRmlsZW5hbWUuZ2V0KCkpKTsK
LSAgICByZXR1cm4gZ19maWxlX2NvcHkoc291cmNlRmlsZS5nZXQoKSwgZGVzdGluYXRpb25GaWxl
LmdldCgpLCBHX0ZJTEVfQ09QWV9OT05FLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxs
cHRyKTsKLSNlbmRpZgotfQotCi1PcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29u
c3QgQ1N0cmluZyYgZnNGaWxlKQotewotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0g
dW5lc2NhcGVkRmlsZW5hbWUoZnNGaWxlLmRhdGEoKSk7Ci0gICAgaWYgKCFmaWxlbmFtZSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIEdSZWZQdHI8R0ZpbGU+IGZpbGUgPSBh
ZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0aChmaWxlbmFtZS5nZXQoKSkpOwotICAgIEdSZWZQ
dHI8R0ZpbGVJbmZvPiBmaWxlSW5mbyA9IGFkb3B0R1JlZihnX2ZpbGVfcXVlcnlfZmlsZXN5c3Rl
bV9pbmZvKGZpbGUuZ2V0KCksIEdfRklMRV9BVFRSSUJVVEVfVU5JWF9ERVZJQ0UsIG51bGxwdHIs
IG51bGxwdHIpKTsKLSAgICBpZiAoIWZpbGVJbmZvKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwotCi0gICAgcmV0dXJuIGdfZmlsZV9pbmZvX2dldF9hdHRyaWJ1dGVfdWludDMyKGZpbGVJ
bmZvLmdldCgpLCBHX0ZJTEVfQVRUUklCVVRFX1VOSVhfREVWSUNFKTsKLX0KLQotI2lmIFVTRShG
SUxFX0xPQ0spCi1ib29sIGxvY2tGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIE9wdGlv
blNldDxGaWxlTG9ja01vZGU+IGxvY2tNb2RlKQotewotICAgIENPTVBJTEVfQVNTRVJUKExPQ0tf
U0ggPT0gV1RGOjplbnVtVG9VbmRlcmx5aW5nVHlwZShGaWxlTG9ja01vZGU6OlNoYXJlZCksIExv
Y2tTaGFyZWRFbmNvZGluZ0lzQXNFeHBlY3RlZCk7Ci0gICAgQ09NUElMRV9BU1NFUlQoTE9DS19F
WCA9PSBXVEY6OmVudW1Ub1VuZGVybHlpbmdUeXBlKEZpbGVMb2NrTW9kZTo6RXhjbHVzaXZlKSwg
TG9ja0V4Y2x1c2l2ZUVuY29kaW5nSXNBc0V4cGVjdGVkKTsKLSAgICBDT01QSUxFX0FTU0VSVChM
T0NLX05CID09IFdURjo6ZW51bVRvVW5kZXJseWluZ1R5cGUoRmlsZUxvY2tNb2RlOjpOb25ibG9j
a2luZyksIExvY2tOb25ibG9ja2luZ0VuY29kaW5nSXNBc0V4cGVjdGVkKTsKLSAgICBhdXRvKiBp
bnB1dFN0cmVhbSA9IGdfaW9fc3RyZWFtX2dldF9pbnB1dF9zdHJlYW0oR19JT19TVFJFQU0oaGFu
ZGxlKSk7Ci0gICAgaW50IHJlc3VsdCA9IGZsb2NrKGdfZmlsZV9kZXNjcmlwdG9yX2Jhc2VkX2dl
dF9mZChHX0ZJTEVfREVTQ1JJUFRPUl9CQVNFRChpbnB1dFN0cmVhbSkpLCBsb2NrTW9kZS50b1Jh
dygpKTsKLSAgICByZXR1cm4gcmVzdWx0ICE9IC0xOwotfQotCi1ib29sIHVubG9ja0ZpbGUoUGxh
dGZvcm1GaWxlSGFuZGxlIGhhbmRsZSkKLXsKLSAgICBhdXRvKiBpbnB1dFN0cmVhbSA9IGdfaW9f
c3RyZWFtX2dldF9pbnB1dF9zdHJlYW0oR19JT19TVFJFQU0oaGFuZGxlKSk7Ci0gICAgaW50IHJl
c3VsdCA9IGZsb2NrKGdfZmlsZV9kZXNjcmlwdG9yX2Jhc2VkX2dldF9mZChHX0ZJTEVfREVTQ1JJ
UFRPUl9CQVNFRChpbnB1dFN0cmVhbSkpLCBMT0NLX1VOKTsKLSAgICByZXR1cm4gcmVzdWx0ICE9
IC0xOwotfQotI2VuZGlmIC8vIFVTRShGSUxFX0xPQ0spCi0KLX0gLy8gbmFtZXNwYWNlIEZpbGVT
eXN0ZW0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwCmluZGV4IGI0ODk2YzA4NTQ2MGU3YzBiZTU2
NDA4NGVjODhlZjIyYWY2MGI4NDQuLmM3NDczNTc1MzA3ZjZmN2RkNGE5ZjIzNjFhZWYyNWNhMzY5
NzZlM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVm
ZmVyR2xpYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZm
ZXJHbGliLmNwcApAQCAtMTksNyArMTksNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIlNoYXJlZEJ1ZmZlci5oIgogCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUg
PHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtl
eVNlc3Npb24ubW0KaW5kZXggZThkZDNiNWFlYzgyOTNjZDVlZDk2ZTk4ZjEwMzVlZTUzZTI4Yzdi
NC4uMjRmOTVlODQ0MTM2N2UyMjE5Y2EyMjY0NDVlODYyMjhmNTc5NDgyYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vz
c2lvbkFWQ29udGVudEtleVNlc3Npb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24u
bW0KQEAgLTI5LDcgKzI5LDYgQEAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkg
JiYgRU5BQkxFKE1FRElBX1NPVVJDRSkKIAogI2ltcG9ydCAiQ0RNUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQy5oIgotI2ltcG9ydCAiRmlsZVN5c3RlbS5oIgogI2ltcG9ydCAiTGVnYWN5Q0RNLmgi
CiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJNZWRpYVBsYXllci5oIgpAQCAtMzksNiAr
MzgsNyBAQAogI2ltcG9ydCA8Q29yZU1lZGlhL0NNQmFzZS5oPgogI2ltcG9ydCA8SmF2YVNjcmlw
dENvcmUvVHlwZWRBcnJheUlubGluZXMuaD4KICNpbXBvcnQgPG9iamMvb2JqYy1ydW50aW1lLmg+
CisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+
CiAKIFNPRlRfTElOS19GUkFNRVdPUktfT1BUSU9OQUwoQVZGb3VuZGF0aW9uKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RN
U2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVlN0cmVhbVNlc3Npb24ubW0KaW5kZXgg
OTkyOTQzMTVkODYyNDFiMTY4ZjI4YWE3MmVkZGUwZDk3Y2Y0YTc4Yy4uYzM1NzNlNWM2MDgxYzk5
YjE0MDRlMGU0MWM1MGUwNDllMjkxYTIyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lv
bi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9DRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLm1tCkBAIC0yOSw3ICsyOSw2IEBACiAjaWYg
RU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiAK
ICNpbXBvcnQgIkNETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCIKLSNpbXBvcnQgIkZpbGVT
eXN0ZW0uaCIKICNpbXBvcnQgIkxlZ2FjeUNETS5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2lt
cG9ydCAiTWVkaWFQbGF5ZXIuaCIKQEAgLTQwLDYgKzM5LDcgQEAKICNpbXBvcnQgPEphdmFTY3Jp
cHRDb3JlL1R5cGVkQXJyYXlJbmxpbmVzLmg+CiAjaW1wb3J0IDxvYmpjL29iamMtcnVudGltZS5o
PgogI2ltcG9ydCA8cGFsL3NwaS9tYWMvQVZGb3VuZGF0aW9uU1BJLmg+CisjaW1wb3J0IDx3dGYv
RmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CiAjaW1wb3J0IDx3dGYv
VVVJRC5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbk1l
ZGlhU291cmNlQVZGT2JqQy5tbQppbmRleCAyY2IyZDZmYTBjZDhlZmE0MjMxODkxYTA5ODE5ODNj
OWI4YzA3N2U0Li5lYzU4Mzc4YThiZWI2YTU3NTNkMDJkYTQ5ZmVkYWI2NmVlYjU5N2MyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25NZWRpYVNvdXJjZUFW
Rk9iakMubW0KQEAgLTI5LDkgKzI5LDkgQEAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9N
RURJQSkgJiYgRU5BQkxFKE1FRElBX1NPVVJDRSkKIAogI2ltcG9ydCAiQ0RNUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQy5oIgotI2ltcG9ydCAiRmlsZVN5c3RlbS5oIgogI2ltcG9ydCAiV2ViQ29y
ZU5TRXJyb3JFeHRyYXMuaCIKICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkVycm9yLmg+CisjaW1w
b3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQy5tbQppbmRleCA1ZTM2ZGQwMDY5MzA3NTAxMTJiNzEzZmRjNGU1YWVhNGQx
MGE5YzA5Li5kNmQ1ZTgyYjIzNzc2ZmQ2Mjc3ZTI5YjY5ZGViNjYyOWY4YzkxOGM0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDLm1tCkBAIC0zMSw3ICszMSw2IEBACiAjaW1wb3J0ICJBVkFzc2V0
VHJhY2tVdGlsaXRpZXMuaCIKICNpbXBvcnQgIkFWRm91bmRhdGlvbk1JTUVUeXBlQ2FjaGUuaCIK
ICNpbXBvcnQgIkNETVNlc3Npb25BVlN0cmVhbVNlc3Npb24uaCIKLSNpbXBvcnQgIkZpbGVTeXN0
ZW0uaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dENHLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgi
CiAjaW1wb3J0ICJNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLmgiCkBAIC00OSw2ICs0OCw3IEBA
CiAjaW1wb3J0IDxwYWwvYXZmb3VuZGF0aW9uL01lZGlhVGltZUFWRm91bmRhdGlvbi5oPgogI2lt
cG9ydCA8cGFsL3NwaS9tYWMvQVZGb3VuZGF0aW9uU1BJLmg+CiAjaW1wb3J0IDx3dGYvRGVxdWUu
aD4KKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5o
PgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggMGYwNWViOTE5OWRiZjNlNDllMWEx
MmUwNzU2NmVlYzQ4OTFkZTE3Ny4uNDE0MGMxMWIwZWE0Nzk4ZTY2MGQ2NDk1ODBmZWNhYWQzYzI2
ZDRjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5j
cHAKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1F
UikKIAotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJHU3RyZWFtZXJDb21tb24u
aCIKICNpbmNsdWRlICJIVFRQSGVhZGVyTmFtZXMuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lz
dHJ5LmgiCkBAIC00Miw2ICs0MSw3IEBACiAjaW5jbHVkZSA8Z3N0L2dzdC5oPgogI2luY2x1ZGUg
PGdzdC9wYnV0aWxzL21pc3NpbmctcGx1Z2lucy5oPgogI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNs
dWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KICNpbmNs
dWRlIDx3dGYvTWVkaWFUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29rLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5tbQppbmRleCA3YmY5MWIyZmFkYzMx
MmFiM2I3ZTg2MmE1ODM1MGVjNTQ4ZDAxYmI3Li5hOWQ5ZTQ3MTA1MDE3ZDY0ZDgyZTM3YzhhYTMx
Y2U2NDY5MDI1Njg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVp
Y2tMb29rLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9RdWlja0xvb2subW0K
QEAgLTI4LDEyICsyOCwxMiBAQAogCiAjaWYgVVNFKFFVSUNLX0xPT0spCiAKLSNpbXBvcnQgIkZp
bGVTeXN0ZW0uaCIKICNpbXBvcnQgIlByZXZpZXdDb252ZXJ0ZXIuaCIKICNpbXBvcnQgIlJlc291
cmNlUmVxdWVzdC5oIgogI2ltcG9ydCAiU2NoZW1lUmVnaXN0cnkuaCIKICNpbXBvcnQgPHBhbC9p
b3MvUXVpY2tMb29rU29mdExpbmsuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNGaWxlTWFu
YWdlclNQSS5oPgorI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0Zi9Mb2Nr
Lmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbQppbmRl
eCBiZjgyMTgzOTkxNWU4MGQ1ODk5YTk0ODk5OWYyZjAyMDZkOGNmZjNhLi4zNTQ1ZDdlZmNhYzg2
NzY0OGY0OWE0NzRlOGEwMjBiNTFjODhkNGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbQpAQCAtMzQsMTEg
KzM0LDExIEBACiAjaW1wb3J0IDxVSUtpdC9OU0l0ZW1Qcm92aWRlcitVSUtpdEFkZGl0aW9ucy5o
PgogI2ltcG9ydCA8VUlLaXQvVUlDb2xvci5oPgogI2ltcG9ydCA8VUlLaXQvVUlJbWFnZS5oPgot
I2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Bhc3RlYm9h
cmQuaD4KICNpbXBvcnQgPHBhbC9pb3MvVUlLaXRTb2Z0TGluay5oPgogI2ltcG9ydCA8cGFsL3Nw
aS9pb3MvVUlLaXRTUEkuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgorI2ltcG9ydCA8d3Rm
L0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0Zi9PU09iamVjdFB0ci5oPgogI2ltcG9ydCA8d3Rm
L1JldGFpblB0ci5oPgogCkBAIC02OTQsNyArNjk0LDcgQEAgc3RhdGljIE5TVVJMICpsaW5rVGVt
cG9yYXJ5SXRlbVByb3ZpZGVyRmlsZXNUb0Ryb3BTdGFnaW5nRGlyZWN0b3J5KE5TVVJMICp1cmws
IE4KICAgICBpZiAoIXVybCkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIE5TU3RyaW5nICp0
ZW1wb3JhcnlEYXRhSW50ZXJhY3Rpb25EaXJlY3RvcnkgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpj
cmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoZGF0YUludGVyYWN0aW9uRGlyZWN0b3J5UHJlZml4KTsK
KyAgICBOU1N0cmluZyAqdGVtcG9yYXJ5RGF0YUludGVyYWN0aW9uRGlyZWN0b3J5ID0gRmlsZVN5
c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KGRhdGFJbnRlcmFjdGlvbkRpcmVjdG9yeVBy
ZWZpeCk7CiAgICAgaWYgKCF0ZW1wb3JhcnlEYXRhSW50ZXJhY3Rpb25EaXJlY3RvcnkpCiAgICAg
ICAgIHJldHVybiBuaWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9GaWxlU3lzdGVtTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0ZpbGVTeXN0
ZW1NYWMubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlZDc1MWE3ZWMwZTVkMGJh
Zjc3NGY5ODYxMGFjYjA0NWNkMmIwMDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0ZpbGVTeXN0ZW1NYWMu
bW0KKysrIC9kZXYvbnVsbApAQCAtMSw4OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDA3LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1w
b3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkZpbGVTeXN0ZW0uaCIKLQotI2lmIFBMQVRGT1JNKE1B
QykKLQotI2ltcG9ydCA8cGFsL3NwaS9tYWMvTWV0YWRhdGFTUEkuaD4KLSNpbXBvcnQgPHd0Zi9j
b2NvYS9OU1VSTEV4dHJhcy5oPgotI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotYm9vbCBGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9y
eShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgYXV0byBmaWxlTWFuYWdlciA9IGFkb3B0TlMo
W1tOU0ZpbGVNYW5hZ2VyIGFsbG9jXSBpbml0XSk7Ci0KLSAgICBpZiAoTlNBcnJheSAqZGlyZWN0
b3J5Q29udGVudHMgPSBbZmlsZU1hbmFnZXIgY29udGVudHNPZkRpcmVjdG9yeUF0UGF0aDpwYXRo
IGVycm9yOm51bGxwdHJdKSB7Ci0gICAgICAgIC8vIEV4cGxpY2l0bHkgbG9vayBmb3IgYW5kIGRl
bGV0ZSAuRFNfU3RvcmUgZmlsZXMuCi0gICAgICAgIGlmIChkaXJlY3RvcnlDb250ZW50cy5jb3Vu
dCA9PSAxICYmIFtkaXJlY3RvcnlDb250ZW50cy5maXJzdE9iamVjdCBpc0VxdWFsVG9TdHJpbmc6
QCIuRFNfU3RvcmUiXSkKLSAgICAgICAgICAgIFtmaWxlTWFuYWdlciByZW1vdmVJdGVtQXRQYXRo
OltwYXRoIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpkaXJlY3RvcnlDb250ZW50cy5m
aXJzdE9iamVjdF0gZXJyb3I6bnVsbHB0cl07Ci0gICAgfQotCi0gICAgLy8gcm1kaXIoLi4uKSBy
ZXR1cm5zIDAgb24gc3VjY2Vzc2Z1bCBkZWxldGlvbiBvZiB0aGUgcGF0aCBhbmQgbm9uLXplcm8g
aW4gYW55IG90aGVyIGNhc2UgKGluY2x1ZGluZyBpbnZhbGlkIHBlcm1pc3Npb25zIG9yIG5vbi1l
eGlzdGVudCBmaWxlKQotICAgIHJldHVybiAhcm1kaXIoRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSk7Ci19Ci0KLXZvaWQgRmlsZVN5c3RlbTo6c2V0TWV0
YWRhdGFVUkwoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG1ldGFkYXRhVVJMU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKQotewotICAgIFN0cmluZyB1cmxTdHJpbmc7Ci0g
ICAgaWYgKE5TVVJMICp1cmwgPSBVUkxXaXRoVXNlclR5cGVkU3RyaW5nKG1ldGFkYXRhVVJMU3Ry
aW5nLCBuaWwpKQotICAgICAgICB1cmxTdHJpbmcgPSBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKFdU
Rjo6VVJMQnlSZW1vdmluZ1VzZXJJbmZvKHVybCkpOwotICAgIGVsc2UKLSAgICAgICAgdXJsU3Ry
aW5nID0gbWV0YWRhdGFVUkxTdHJpbmc7Ci0KLSAgICAvLyBDYWxsIE1ldGFkYXRhIEFQSSBvbiBh
IGJhY2tncm91bmQgcXVldWUgYmVjYXVzZSBpdCBjYW4gdGFrZSBzb21lIHRpbWUuCi0gICAgZGlz
cGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X2dsb2JhbF9xdWV1ZShESVNQQVRDSF9RVUVVRV9QUklP
UklUWV9ERUZBVUxULCAwKSwgW3BhdGggPSBwYXRoLmlzb2xhdGVkQ29weSgpLCB1cmxTdHJpbmcg
PSB1cmxTdHJpbmcuaXNvbGF0ZWRDb3B5KCksIHJlZmVycmVyID0gcmVmZXJyZXIuaXNvbGF0ZWRD
b3B5KCldIHsKLSAgICAgICAgYXV0byBpdGVtID0gYWRvcHRDRihNREl0ZW1DcmVhdGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgcGF0aC5jcmVhdGVDRlN0cmluZygpLmdldCgpKSk7Ci0gICAgICAgIGlm
ICghaXRlbSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBhdXRvIHdoZXJlRnJvbUF0
dHJpYnV0ZSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhPYmplY3Rz
OnVybFN0cmluZywgbmlsXSk7Ci0gICAgICAgIGlmICghcmVmZXJyZXIuaXNOdWxsKCkpCi0gICAg
ICAgICAgICBbd2hlcmVGcm9tQXR0cmlidXRlIGFkZE9iamVjdDpyZWZlcnJlcl07Ci0KLSAgICAg
ICAgTURJdGVtU2V0QXR0cmlidXRlKGl0ZW0uZ2V0KCksIGtNREl0ZW1XaGVyZUZyb21zLCAoX19i
cmlkZ2UgQ0ZBcnJheVJlZil3aGVyZUZyb21BdHRyaWJ1dGUuZ2V0KCkpOwotICAgICAgICBNREl0
ZW1TZXRBdHRyaWJ1dGUoaXRlbS5nZXQoKSwga01ESXRlbURvd25sb2FkZWREYXRlLCAoX19icmlk
Z2UgQ0ZBcnJheVJlZilAWyBbTlNEYXRlIGRhdGVdIF0pOwotICAgIH0pOwotfQotCi1ib29sIEZp
bGVTeXN0ZW06OmNhbkV4Y2x1ZGVGcm9tQmFja3VwKCkKLXsKLSAgICByZXR1cm4gdHJ1ZTsKLX0K
LQotYm9vbCBGaWxlU3lzdGVtOjpleGNsdWRlRnJvbUJhY2t1cChjb25zdCBTdHJpbmcmIHBhdGgp
Ci17Ci0gICAgLy8gSXQgaXMgY3JpdGljYWwgdG8gcGFzcyBGQUxTRSBmb3IgZXhjbHVkZUJ5UGF0
aCBiZWNhdXNlIGV4Y2x1ZGluZyBieSBwYXRoIHJlcXVpcmVzIHJvb3QgcHJpdmlsZWdlcy4KLSAg
ICBDU0JhY2t1cFNldEl0ZW1FeGNsdWRlZChGaWxlU3lzdGVtOjpwYXRoQXNVUkwocGF0aCkuZ2V0
KCksIFRSVUUsIEZBTFNFKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2Nv
YS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCmluZGV4IGQ3ZTNmMzlhNjdiMzcz
YjgzODc5Yzg0MDljNThiMDg5OGQzNDc5ZWMuLmQ3OWUyZjYwYzYwOTQwM2FiZGZjMDJhZWJmNzBh
MjZiY2NkZjJmM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVj
b3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyQ29jb2EubW0KQEAgLTI5LDEzICsyOSwxMyBAQAogI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pICYmIFVTRShBVkZPVU5EQVRJT04pCiAKICNpbmNsdWRlICJBdWRpb1N0cmVhbURlc2Ny
aXB0aW9uLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
ICNpbmNsdWRlICJNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYkF1ZGlv
QnVmZmVyTGlzdC5oIgogI2luY2x1ZGUgPEFWRm91bmRhdGlvbi9BVkFzc2V0V3JpdGVyLmg+CiAj
aW5jbHVkZSA8QVZGb3VuZGF0aW9uL0FWQXNzZXRXcml0ZXJJbnB1dC5oPgogI2luY2x1ZGUgPHBh
bC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAK
IHR5cGVkZWYgQVZBc3NldFdyaXRlciBBVkFzc2V0V3JpdGVyVHlwZTsKIHR5cGVkZWYgQVZBc3Nl
dFdyaXRlcklucHV0IEFWQXNzZXRXcml0ZXJJbnB1dFR5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5jcHAKaW5k
ZXggYjYzZjA2MTJhYmZjYjg2NmRhMGNlZDBhMjM1ZGMxNTU5M2ZmMDVlZC4uNWFiZmQ3NWNiNDk0
NTZlNDJkMzlkNDRkM2JjMjI1OWFhZmZhNTIyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmNwcApAQCAtMjcs
OCArMjcsOCBAQAogI2luY2x1ZGUgIkJsb2JEYXRhRmlsZVJlZmVyZW5jZS5oIgogCiAjaW5jbHVk
ZSAiRmlsZS5oIgotI2luY2x1ZGUgIkZpbGVNZXRhZGF0YS5oIgotI2luY2x1ZGUgIkZpbGVTeXN0
ZW0uaCIKKyNpbmNsdWRlIDx3dGYvRmlsZU1ldGFkYXRhLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVT
eXN0ZW0uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcAppbmRleCA4MGI0MWU5NzVl
NGQ2MTQzYWY0Yzk5NjExNzU0N2JiODkyZWRhMzE4Li4xYzcwNmFhMzQ2Y2FkZGVhMzllNTAwZDgw
MzA0Y2Q0OTRiZDgyNjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAKQEAgLTM1LDEzICszNSwxMyBAQAogI2luY2x1ZGUg
IkJsb2JEYXRhLmgiCiAjaW5jbHVkZSAiQmxvYlBhcnQuaCIKICNpbmNsdWRlICJCbG9iUmVzb3Vy
Y2VIYW5kbGUuaCIKLSNpbmNsdWRlICJGaWxlTWV0YWRhdGEuaCIKLSNpbmNsdWRlICJGaWxlU3lz
dGVtLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFu
ZGxlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VS
ZXNwb25zZS5oIgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgorI2luY2x1ZGUg
PHd0Zi9GaWxlTWV0YWRhdGEuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1
ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAj
aW5jbHVkZSA8d3RmL1Njb3BlLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAKaW5kZXggYzk0ZTM5NDk0YjhlMzI2ZGI0
YTEyYTI3MjAxYTQ2MjM4ZGUxOGM0Yi4uY2M2N2NlNjg4ZjNiY2EyMjI2OTBiNDNmMTA1ODc4YmE5
ZTNjMjhmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9i
UmVzb3VyY2VIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
QmxvYlJlc291cmNlSGFuZGxlLmNwcApAQCAtMzUsMTkgKzM1LDE5IEBACiAjaW5jbHVkZSAiQXN5
bmNGaWxlU3RyZWFtLmgiCiAjaW5jbHVkZSAiQmxvYkRhdGEuaCIKICNpbmNsdWRlICJGaWxlU3Ry
ZWFtLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkhUVFBIZWFkZXJOYW1l
cy5oIgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCiAjaW5jbHVkZSAiUGFyc2VkQ29udGVudFJh
bmdlLmgiCi0jaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIK
ICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZUNsaWVudC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVx
dWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlICJTaGFyZWRC
dWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3
dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZi5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCmluZGV4IDU0
ZTRhYzA0OTYyYTIyMTkwN2UzYjdkODBhNGZiYWNiZTI1NGIzOTkuLjdiNzZhNWVlZGU5OWY5NDlj
ODFlNjljZmUxYmRiYjg5NmNjYzI2N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvRm9ybURhdGEuY3BwCkBAIC0yOSwxMiArMjksMTIgQEAKICNpbmNsdWRlICJET01Gb3Jt
RGF0YS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRmlsZS5oIgotI2luY2x1
ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJGb3JtRGF0YUJ1aWxkZXIuaCIKICNpbmNsdWRl
ICJQYWdlLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiVGV4dEVuY29k
aW5nLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oIgorI2luY2x1ZGUgPHd0
Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvTGluZUVuZGluZy5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcAppbmRleCA5ZTJkODgxZDYzNTQ5MTUy
NWQ3MWFmNDU2YzJkMTk1ZmQxM2I5NGQ2Li5hNzRhZTVhYWM5Y2IyNjIzZGM5Y2E1YThhYTQwYWMz
NDAyMTJmMmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAKQEAgLTMwLDExICszMCwxMSBAQAogI2lu
Y2x1ZGUgIkZvcm1EYXRhU3RyZWFtQ0ZOZXQuaCIKIAogI2luY2x1ZGUgIkJsb2JEYXRhLmgiCi0j
aW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkZvcm1EYXRhLmgiCiAjaW5jbHVkZSA8
c3lzL3N0YXQuaD4KICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0
aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2Ev
UmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tCmluZGV4IDI3ZmY5ZDFjYThlZmExZmRkNmVk
ZjI4ODY0ODY0Nzk0OWY4ODFhOTYuLjJmZWMxZjM4MzRlNDExNmExZGQ0Y2ViMWY2MzI4OThkNWVj
ZTE0MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2Ev
UmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQpAQCAtMjgsMTMgKzI4LDEzIEBACiAK
ICNpZiBQTEFURk9STShDT0NPQSkKIAotI2ltcG9ydCAiRmlsZVN5c3RlbS5oIgogI2ltcG9ydCAi
Rm9ybURhdGFTdHJlYW1NYWMuaCIKICNpbXBvcnQgIkhUVFBIZWFkZXJOYW1lcy5oIgogI2ltcG9y
dCAiUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaCIKICNpbXBvcnQgIlJ1bnRpbWVBcHBsaWNhdGlvbkNo
ZWNrcy5oIgogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CiAjaW1wb3J0IDxwYWwv
c3BpL2NmL0NGTmV0d29ya1NQSS5oPgorI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbXBv
cnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKaW5k
ZXggYzIzZmQ3MmYxOTE3MTAyMDgyZTEyMWU0NGQ1OGVkZDhhMzJkMWU3MS4uMjYzNjIyODhiODY5
ZDhjN2JiMzQxN2Y3NmY0MGI2M2NjNTdmN2E3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwCkBAIC0yNiwxMCArMjYsOSBA
QAogI2luY2x1ZGUgIkNvb2tpZUphckRCLmgiCiAKICNpbmNsdWRlICJDb29raWVVdGlsLmgiCi0j
aW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJT
UUxpdGVGaWxlU3lzdGVtLmgiCi0KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1
ZGUgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnku
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5o
CmluZGV4IGNiYzQ1ZmVkMmI2MzhlYTYyZDkxMmVjN2VkMmQ2NjE0M2I4ZjlkNmIuLjExMDI3Y2Uz
YjNjZjYzODhmOTk1NGFhZjQ5YzQ5MDNmZTkzZmRmZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5oCkBAIC0yNiwxMSAr
MjYsMTEgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5j
bHVkZSAiSFRUUEhlYWRlck1hcC5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAjaW5j
bHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgor
I2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1h
bmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNo
ZU1hbmFnZXIuY3BwCmluZGV4IDQzYmMyZTdiZmZmNGY5YmQ2ZjcxMDI4NWQ2ZDNkODYzMWJiNzc4
M2EuLmZhNWM4ZDJkMjFiNjI3MzgxNWQwMjNhNGYyMDQ1NTAxNmU5NjM4YWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFu
YWdlci5jcHAKQEAgLTMwLDEyICszMCwxMiBAQAogCiAjaW5jbHVkZSAiQ3VybENhY2hlTWFuYWdl
ci5oIgogCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkhUVFBIZWFkZXJNYXAu
aCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVDbGllbnQu
aCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZUludGVybmFsLmgiCiAjaW5jbHVkZSAiUmVzb3Vy
Y2VSZXF1ZXN0LmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsRm9ybURhdGFTdHJlYW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsRm9ybURhdGFTdHJlYW0uaAppbmRleCBjOGVmMzMzZTBkOGMwZTAy
OGVjZDhhNDZkODI2YjkwNjcxYTAwZTBjLi4wOWU3ZmRiYjRhMmNmYWI0YjkwNzMyZjA2MTE0YmUw
ODExM2JiNTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybEZvcm1EYXRhU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxGb3JtRGF0YVN0cmVhbS5oCkBAIC0yNiw4ICsyNiw4IEBACiAKICNwcmFn
bWEgb25jZQogCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkZvcm1EYXRhLmgi
CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxSZXF1ZXN0LmgKaW5kZXggZmRjNGI1OTBjMTQyY2Y2ZGM5ODA3N2Q5Zjc1
ZDc4NjU2MzYxOTY5ZC4uOTNjYTYxMDNmZTYzZDVmZjAzMTA1NWM4MjVkODAyODI3NjRhZWRiYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1
ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1
ZXN0LmgKQEAgLTMyLDEwICszMiwxMCBAQAogI2luY2x1ZGUgIkN1cmxSZXF1ZXN0U2NoZWR1bGVy
Q2xpZW50LmgiCiAjaW5jbHVkZSAiQ3VybFJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiQ3VybFNTTFZl
cmlmaWVyLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIk5ldHdvcmtMb2Fk
TWV0cmljcy5oIgogI2luY2x1ZGUgIlByb3RlY3Rpb25TcGFjZS5oIgogI2luY2x1ZGUgIlJlc291
cmNlUmVxdWVzdC5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3Rm
L01lc3NhZ2VRdWV1ZS5oPgogI2luY2x1ZGUgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+CiAjaW5jbHVk
ZSA8d3RmL05vbmNvcHlhYmxlLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAK
aW5kZXggYTM0MmVjNWYwYTU1MjExYWI3MzQ3ZTQxMTNlMzE3MjVhYzQwYjJmZC4uMDViNTY3MjMy
YmJkNjZmMGJkMDcxZGRiOGEwZjBjZGFmZjZlZmFhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNl
c3Npb25DdXJsLmNwcApAQCAtMzMsMTAgKzMzLDkgQEAKICNpbmNsdWRlICJDb29raWVKYXJEQi5o
IgogI2luY2x1ZGUgIkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5LmgiCiAjaW5jbHVkZSAi
Q3VybENvbnRleHQuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiTmV0d29y
a2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgotCisjaW5jbHVkZSA8
d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxl
Q3VybC5jcHAKaW5kZXggZTUxZTdhYmYwYTA1NWEwOGQ4Zjk1OGY1YjFlZjFjYTI2NGE4YjcyNi4u
N2JlMDBhZDM0YjhlNTk4ODJkZTBmNTEzYjZjMmRkZjkwMTFmOTllMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxl
Q3VybC5jcHAKQEAgLTM4LDcgKzM4LDYgQEAKICNpbmNsdWRlICJDdXJsQ2FjaGVNYW5hZ2VyLmgi
CiAjaW5jbHVkZSAiQ3VybENvbnRleHQuaCIKICNpbmNsdWRlICJDdXJsUmVxdWVzdC5oIgotI2lu
Y2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgogI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3JrU3RvcmFnZVNlc3Npb24uaCIKQEAgLTQ4LDYg
KzQ3LDcgQEAKICNpbmNsdWRlICJTeW5jaHJvbm91c0xvYWRlckNsaWVudC5oIgogI2luY2x1ZGUg
IlRleHRFbmNvZGluZy5oIgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgorI2lu
Y2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvbWFjL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvbWFjL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZU1hYy5tbQppbmRleCBm
Y2Y1NWQ3NmVhNDVlYmIwNjcwNDNlY2RmYzhjZjA4Y2M5MjQ2YTI5Li5iNjkyOTIwYjIxZmM2NjM5
ZDU3NDVkMWMwNDRlOGI3ODc4MjM1MGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL21hYy9CbG9iRGF0YUZpbGVSZWZlcmVuY2VNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQmxvYkRhdGFGaWxlUmVmZXJlbmNlTWFjLm1t
CkBAIC0yOCw4ICsyOCw4IEBACiAKICNpZiBFTkFCTEUoRklMRV9SRVBMQUNFTUVOVCkKIAotI2lu
Y2x1ZGUgIkZpbGVNZXRhZGF0YS5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRl
IDx3dGYvRmlsZU1ldGFkYXRhLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNs
dWRlIDx3dGYvU29mdExpbmtpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJj
ZUhhbmRsZVNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jl
c291cmNlSGFuZGxlU291cC5jcHAKaW5kZXggNjM3MzRjNjc0YzUyZWU5NWRjNmM5ZTQyMWM0NjYw
ZjQxODQwMGJhYS4uMDgxNWVhNjg4ZTc2NjkyN2U2NjNkNDA1NjE0OWRiZDM2OGU2NDZjYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFu
ZGxlU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jl
c291cmNlSGFuZGxlU291cC5jcHAKQEAgLTMyLDcgKzMyLDYgQEAKICNpZiBVU0UoU09VUCkKIAog
I2luY2x1ZGUgIkNyZWRlbnRpYWxTdG9yYWdlLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgog
I2luY2x1ZGUgIkdVbmlxdWVQdHJTb3VwLmgiCiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKICNp
bmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCkBAIC01Nyw2ICs1Niw3IEBACiAjaW5jbHVkZSA8
dW5pc3RkLmg+CiAjZW5kaWYKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKyNp
bmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvZ2xpYi9SdW5Mb29wU291cmNlUHJpb3JpdHkuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwCmluZGV4IDM0M2ZhZWI5ZmVi
MjE5NGNjYzNlZjc3OWQ3N2QzZjZiNGQxZWRjODcuLmI5Njc3OTU5ODBlZThmYTRjOTk1MDBmZmRm
MzRiNDIwMmViMmEyZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwCkBAIC0zMCwxMyArMzAsMTMg
QEAKICNpbmNsdWRlICJTb3VwTmV0d29ya1Nlc3Npb24uaCIKIAogI2luY2x1ZGUgIkF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkdV
bmlxdWVQdHJTb3VwLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlNvdXBOZXR3
b3JrUHJveHlTZXR0aW5ncy5oIgogI2luY2x1ZGUgPGdsaWIvZ3N0ZGlvLmg+CiAjaW5jbHVkZSA8
bGlic291cC9zb3VwLmg+CiAjaW5jbHVkZSA8cGFsL2NyeXB0by9DcnlwdG9EaWdlc3QuaD4KKyNp
bmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9T
SVguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTQ4NTEzNTI1MThkNjA2YmVhMjVlZWVh
MzM2MTg1MjgwMzM0Y2ZjYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3Bw
CisrKyAvZGV2L251bGwKQEAgLTEsNDkzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDctMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhl
IG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
LSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiRmlsZVN5c3RlbS5oIgotCi0jaW5jbHVkZSAiRmlsZU1ldGFkYXRhLmgiCi0jaW5jbHVkZSA8
ZGlyZW50Lmg+Ci0jaW5jbHVkZSA8ZXJybm8uaD4KLSNpbmNsdWRlIDxmY250bC5oPgotI2luY2x1
ZGUgPGZubWF0Y2guaD4KLSNpbmNsdWRlIDxsaWJnZW4uaD4KLSNpbmNsdWRlIDxzdGRpby5oPgot
I2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0jaW5jbHVkZSA8c3lzL3N0YXR2ZnMuaD4KLSNpbmNsdWRl
IDxzeXMvdHlwZXMuaD4KLSNpbmNsdWRlIDx1bmlzdGQuaD4KLSNpbmNsdWRlIDx3dGYvRW51bVRy
YWl0cy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdCdWlsZGVyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIEZpbGVTeXN0ZW0gewotCi1ib29sIGZpbGVF
eGlzdHMoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIGlmIChwYXRoLmlzTnVsbCgpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKHBhdGgpOwotCi0gICAgaWYgKCFmc1JlcC5kYXRhKCkgfHwgZnNSZXAuZGF0YSgp
WzBdID09ICdcMCcpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBhY2Nlc3Mo
ZnNSZXAuZGF0YSgpLCBGX09LKSAhPSAtMTsKLX0KLQotYm9vbCBkZWxldGVGaWxlKGNvbnN0IFN0
cmluZyYgcGF0aCkKLXsKLSAgICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKHBhdGgpOwotCi0gICAgaWYgKCFmc1JlcC5kYXRhKCkgfHwgZnNSZXAuZGF0YSgpWzBdID09
ICdcMCcpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIHVubGluayguLi4pIHJldHVy
bnMgMCBvbiBzdWNjZXNzZnVsIGRlbGV0aW9uIG9mIHRoZSBwYXRoIGFuZCBub24temVybyBpbiBh
bnkgb3RoZXIgY2FzZSAoaW5jbHVkaW5nIGludmFsaWQgcGVybWlzc2lvbnMgb3Igbm9uLWV4aXN0
ZW50IGZpbGUpCi0gICAgcmV0dXJuICF1bmxpbmsoZnNSZXAuZGF0YSgpKTsKLX0KLQotUGxhdGZv
cm1GaWxlSGFuZGxlIG9wZW5GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlIG1v
ZGUpCi17Ci0gICAgQ1N0cmluZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRo
KTsKLQotICAgIGlmIChmc1JlcC5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIGludmFsaWRQbGF0
Zm9ybUZpbGVIYW5kbGU7Ci0KLSAgICBpbnQgcGxhdGZvcm1GbGFnID0gMDsKLSAgICBpZiAobW9k
ZSA9PSBGaWxlT3Blbk1vZGU6OlJlYWQpCi0gICAgICAgIHBsYXRmb3JtRmxhZyB8PSBPX1JET05M
WTsKLSAgICBlbHNlIGlmIChtb2RlID09IEZpbGVPcGVuTW9kZTo6V3JpdGUpCi0gICAgICAgIHBs
YXRmb3JtRmxhZyB8PSAoT19XUk9OTFkgfCBPX0NSRUFUIHwgT19UUlVOQyk7Ci0jaWYgT1MoREFS
V0lOKQotICAgIGVsc2UgaWYgKG1vZGUgPT0gRmlsZU9wZW5Nb2RlOjpFdmVudHNPbmx5KQotICAg
ICAgICBwbGF0Zm9ybUZsYWcgfD0gT19FVlRPTkxZOwotI2VuZGlmCi0KLSAgICByZXR1cm4gb3Bl
bihmc1JlcC5kYXRhKCksIHBsYXRmb3JtRmxhZywgMDY2Nik7Ci19Ci0KLXZvaWQgY2xvc2VGaWxl
KFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKQotewotICAgIGlmIChpc0hhbmRsZVZhbGlkKGhh
bmRsZSkpIHsKLSAgICAgICAgY2xvc2UoaGFuZGxlKTsKLSAgICAgICAgaGFuZGxlID0gaW52YWxp
ZFBsYXRmb3JtRmlsZUhhbmRsZTsKLSAgICB9Ci19Ci0KLWxvbmcgbG9uZyBzZWVrRmlsZShQbGF0
Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0LCBGaWxlU2Vla09yaWdpbiBv
cmlnaW4pCi17Ci0gICAgaW50IHdoZW5jZSA9IFNFRUtfU0VUOwotICAgIHN3aXRjaCAob3JpZ2lu
KSB7Ci0gICAgY2FzZSBGaWxlU2Vla09yaWdpbjo6QmVnaW5uaW5nOgotICAgICAgICB3aGVuY2Ug
PSBTRUVLX1NFVDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGaWxlU2Vla09yaWdpbjo6Q3Vy
cmVudDoKLSAgICAgICAgd2hlbmNlID0gU0VFS19DVVI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgRmlsZVNlZWtPcmlnaW46OkVuZDoKLSAgICAgICAgd2hlbmNlID0gU0VFS19FTkQ7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgIH0KLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8bG9uZyBsb25nPihsc2VlayhoYW5kbGUsIG9m
ZnNldCwgd2hlbmNlKSk7Ci19Ci0KLWJvb2wgdHJ1bmNhdGVGaWxlKFBsYXRmb3JtRmlsZUhhbmRs
ZSBoYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQpCi17Ci0gICAgLy8gZnRydW5jYXRlIHJldHVybnMg
MCB0byBpbmRpY2F0ZSB0aGUgc3VjY2Vzcy4KLSAgICByZXR1cm4gIWZ0cnVuY2F0ZShoYW5kbGUs
IG9mZnNldCk7Ci19Ci0KLWludCB3cml0ZVRvRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxl
LCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQotewotICAgIGRvIHsKLSAgICAgICAgaW50
IGJ5dGVzV3JpdHRlbiA9IHdyaXRlKGhhbmRsZSwgZGF0YSwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihs
ZW5ndGgpKTsKLSAgICAgICAgaWYgKGJ5dGVzV3JpdHRlbiA+PSAwKQotICAgICAgICAgICAgcmV0
dXJuIGJ5dGVzV3JpdHRlbjsKLSAgICB9IHdoaWxlIChlcnJubyA9PSBFSU5UUik7Ci0gICAgcmV0
dXJuIC0xOwotfQotCi1pbnQgcmVhZEZyb21GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUs
IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCi17Ci0gICAgZG8gewotICAgICAgICBpbnQgYnl0ZXNS
ZWFkID0gcmVhZChoYW5kbGUsIGRhdGEsIHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSk7Ci0g
ICAgICAgIGlmIChieXRlc1JlYWQgPj0gMCkKLSAgICAgICAgICAgIHJldHVybiBieXRlc1JlYWQ7
Ci0gICAgfSB3aGlsZSAoZXJybm8gPT0gRUlOVFIpOwotICAgIHJldHVybiAtMTsKLX0KLQotI2lm
IFVTRShGSUxFX0xPQ0spCi1ib29sIGxvY2tGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUs
IE9wdGlvblNldDxGaWxlTG9ja01vZGU+IGxvY2tNb2RlKQotewotICAgIENPTVBJTEVfQVNTRVJU
KExPQ0tfU0ggPT0gV1RGOjplbnVtVG9VbmRlcmx5aW5nVHlwZShGaWxlTG9ja01vZGU6OlNoYXJl
ZCksIExvY2tTaGFyZWRFbmNvZGluZ0lzQXNFeHBlY3RlZCk7Ci0gICAgQ09NUElMRV9BU1NFUlQo
TE9DS19FWCA9PSBXVEY6OmVudW1Ub1VuZGVybHlpbmdUeXBlKEZpbGVMb2NrTW9kZTo6RXhjbHVz
aXZlKSwgTG9ja0V4Y2x1c2l2ZUVuY29kaW5nSXNBc0V4cGVjdGVkKTsKLSAgICBDT01QSUxFX0FT
U0VSVChMT0NLX05CID09IFdURjo6ZW51bVRvVW5kZXJseWluZ1R5cGUoRmlsZUxvY2tNb2RlOjpO
b25ibG9ja2luZyksIExvY2tOb25ibG9ja2luZ0VuY29kaW5nSXNBc0V4cGVjdGVkKTsKLSAgICBp
bnQgcmVzdWx0ID0gZmxvY2soaGFuZGxlLCBsb2NrTW9kZS50b1JhdygpKTsKLSAgICByZXR1cm4g
KHJlc3VsdCAhPSAtMSk7Ci19Ci0KLWJvb2wgdW5sb2NrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUg
aGFuZGxlKQotewotICAgIGludCByZXN1bHQgPSBmbG9jayhoYW5kbGUsIExPQ0tfVU4pOwotICAg
IHJldHVybiAocmVzdWx0ICE9IC0xKTsKLX0KLSNlbmRpZgotCi0jaWYgIVBMQVRGT1JNKE1BQykK
LWJvb2wgZGVsZXRlRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIENT
dHJpbmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7Ci0KLSAgICBpZiAo
IWZzUmVwLmRhdGEoKSB8fCBmc1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgLy8gcm1kaXIoLi4uKSByZXR1cm5zIDAgb24gc3VjY2Vzc2Z1bCBkZWxl
dGlvbiBvZiB0aGUgcGF0aCBhbmQgbm9uLXplcm8gaW4gYW55IG90aGVyIGNhc2UgKGluY2x1ZGlu
ZyBpbnZhbGlkIHBlcm1pc3Npb25zIG9yIG5vbi1leGlzdGVudCBmaWxlKQotICAgIHJldHVybiAh
cm1kaXIoZnNSZXAuZGF0YSgpKTsKLX0KLSNlbmRpZgotCi1ib29sIGdldEZpbGVTaXplKGNvbnN0
IFN0cmluZyYgcGF0aCwgbG9uZyBsb25nJiByZXN1bHQpCi17Ci0gICAgQ1N0cmluZyBmc1JlcCA9
IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKLQotICAgIGlmICghZnNSZXAuZGF0YSgp
IHx8IGZzUmVwLmRhdGEoKVswXSA9PSAnXDAnKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICBzdHJ1Y3Qgc3RhdCBmaWxlSW5mbzsKLQotICAgIGlmIChzdGF0KGZzUmVwLmRhdGEoKSwgJmZp
bGVJbmZvKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmVzdWx0ID0gZmlsZUluZm8u
c3Rfc2l6ZTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBnZXRGaWxlU2l6ZShQbGF0Zm9y
bUZpbGVIYW5kbGUgaGFuZGxlLCBsb25nIGxvbmcmIHJlc3VsdCkKLXsKLSAgICBzdHJ1Y3Qgc3Rh
dCBmaWxlSW5mbzsKLSAgICBpZiAoZnN0YXQoaGFuZGxlLCAmZmlsZUluZm8pKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICByZXN1bHQgPSBmaWxlSW5mby5zdF9zaXplOwotICAgIHJldHVy
biB0cnVlOwotfQotCi1PcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZUNyZWF0aW9uVGltZShjb25z
dCBTdHJpbmcmIHBhdGgpCi17Ci0jaWYgT1MoREFSV0lOKSB8fCBPUyhPUEVOQlNEKSB8fCBPUyhO
RVRCU0QpIHx8IE9TKEZSRUVCU0QpCi0gICAgQ1N0cmluZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihwYXRoKTsKLQotICAgIGlmICghZnNSZXAuZGF0YSgpIHx8IGZzUmVwLmRhdGEo
KVswXSA9PSAnXDAnKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgc3RydWN0
IHN0YXQgZmlsZUluZm87Ci0KLSAgICBpZiAoc3RhdChmc1JlcC5kYXRhKCksICZmaWxlSW5mbykp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICByZXR1cm4gV2FsbFRpbWU6OmZy
b21SYXdTZWNvbmRzKGZpbGVJbmZvLnN0X2JpcnRodGltZSk7Ci0jZWxzZQotICAgIFVOVVNFRF9Q
QVJBTShwYXRoKTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotI2VuZGlmCi19Ci0KLU9wdGlv
bmFsPFdhbGxUaW1lPiBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgp
Ci17Ci0gICAgQ1N0cmluZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsK
LQotICAgIGlmICghZnNSZXAuZGF0YSgpIHx8IGZzUmVwLmRhdGEoKVswXSA9PSAnXDAnKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgc3RydWN0IHN0YXQgZmlsZUluZm87Ci0K
LSAgICBpZiAoc3RhdChmc1JlcC5kYXRhKCksICZmaWxlSW5mbykpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7Ci0KLSAgICByZXR1cm4gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKGZpbGVJ
bmZvLnN0X210aW1lKTsKLX0KLQotc3RhdGljIEZpbGVNZXRhZGF0YTo6VHlwZSB0b0ZpbGVNZXRh
dGFUeXBlKHN0cnVjdCBzdGF0IGZpbGVJbmZvKQotewotICAgIGlmIChTX0lTRElSKGZpbGVJbmZv
LnN0X21vZGUpKQotICAgICAgICByZXR1cm4gRmlsZU1ldGFkYXRhOjpUeXBlOjpEaXJlY3Rvcnk7
Ci0gICAgaWYgKFNfSVNMTksoZmlsZUluZm8uc3RfbW9kZSkpCi0gICAgICAgIHJldHVybiBGaWxl
TWV0YWRhdGE6OlR5cGU6OlN5bWJvbGljTGluazsKLSAgICByZXR1cm4gRmlsZU1ldGFkYXRhOjpU
eXBlOjpGaWxlOwotfQotCi1zdGF0aWMgT3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRh
dGFVc2luZ0Z1bmN0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCwgaW50ICgqc3RhdEZ1bmMpKGNvbnN0
IGNoYXIqLCBzdHJ1Y3Qgc3RhdCopKQotewotICAgIENTdHJpbmcgZnNSZXAgPSBmaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24ocGF0aCk7Ci0KLSAgICBpZiAoIWZzUmVwLmRhdGEoKSB8fCBmc1JlcC5k
YXRhKClbMF0gPT0gJ1wwJykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIHN0
cnVjdCBzdGF0IGZpbGVJbmZvOwotICAgIGlmIChzdGF0RnVuYyhmc1JlcC5kYXRhKCksICZmaWxl
SW5mbykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBTdHJpbmcgZmlsZW5h
bWUgPSBwYXRoR2V0RmlsZU5hbWUocGF0aCk7Ci0gICAgYm9vbCBpc0hpZGRlbiA9ICFmaWxlbmFt
ZS5pc0VtcHR5KCkgJiYgZmlsZW5hbWVbMF0gPT0gJy4nOwotICAgIHJldHVybiBGaWxlTWV0YWRh
dGEgewotICAgICAgICBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoZmlsZUluZm8uc3RfbXRpbWUp
LAotICAgICAgICBmaWxlSW5mby5zdF9zaXplLAotICAgICAgICBpc0hpZGRlbiwKLSAgICAgICAg
dG9GaWxlTWV0YXRhVHlwZShmaWxlSW5mbykKLSAgICB9OwotfQotCi1PcHRpb25hbDxGaWxlTWV0
YWRhdGE+IGZpbGVNZXRhZGF0YShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgcmV0dXJuIGZp
bGVNZXRhZGF0YVVzaW5nRnVuY3Rpb24ocGF0aCwgJmxzdGF0KTsKLX0KLQotT3B0aW9uYWw8Rmls
ZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyhjb25zdCBTdHJpbmcmIHBh
dGgpCi17Ci0gICAgcmV0dXJuIGZpbGVNZXRhZGF0YVVzaW5nRnVuY3Rpb24ocGF0aCwgJnN0YXQp
OwotfQotCi1ib29sIGNyZWF0ZVN5bWJvbGljTGluayhjb25zdCBTdHJpbmcmIHRhcmdldFBhdGgs
IGNvbnN0IFN0cmluZyYgc3ltYm9saWNMaW5rUGF0aCkKLXsKLSAgICBDU3RyaW5nIHRhcmdldFBh
dGhGU1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih0YXJnZXRQYXRoKTsKLSAgICBpZiAo
IXRhcmdldFBhdGhGU1JlcC5kYXRhKCkgfHwgdGFyZ2V0UGF0aEZTUmVwLmRhdGEoKVswXSA9PSAn
XDAnKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBDU3RyaW5nIHN5bWJvbGljTGlua1Bh
dGhGU1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihzeW1ib2xpY0xpbmtQYXRoKTsKLSAg
ICBpZiAoIXN5bWJvbGljTGlua1BhdGhGU1JlcC5kYXRhKCkgfHwgc3ltYm9saWNMaW5rUGF0aEZT
UmVwLmRhdGEoKVswXSA9PSAnXDAnKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1
cm4gIXN5bWxpbmsodGFyZ2V0UGF0aEZTUmVwLmRhdGEoKSwgc3ltYm9saWNMaW5rUGF0aEZTUmVw
LmRhdGEoKSk7Ci19Ci0KLVN0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY29uc3QgU3Ry
aW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGNvbXBvbmVudCkKLXsKLSAgICBpZiAocGF0aC5lbmRz
V2l0aCgnLycpKQotICAgICAgICByZXR1cm4gcGF0aCArIGNvbXBvbmVudDsKLSAgICByZXR1cm4g
cGF0aCArICIvIiArIGNvbXBvbmVudDsKLX0KLQotU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudHMoU3RyaW5nVmlldyBwYXRoLCBjb25zdCBWZWN0b3I8U3RyaW5nVmlldz4mIGNvbXBvbmVu
dHMpCi17Ci0gICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIGJ1aWxkZXIuYXBwZW5kKHBh
dGgpOwotICAgIGZvciAoYXV0byYgY29tcG9uZW50IDogY29tcG9uZW50cykgewotICAgICAgICBi
dWlsZGVyLmFwcGVuZCgnLycpOwotICAgICAgICBidWlsZGVyLmFwcGVuZChjb21wb25lbnQpOwot
ICAgIH0KLSAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwotfQotCi1ib29sIG1ha2VBbGxE
aXJlY3Rvcmllcyhjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgQ1N0cmluZyBmdWxsUGF0aCA9
IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKLSAgICBpZiAoIWFjY2VzcyhmdWxsUGF0
aC5kYXRhKCksIEZfT0spKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIGNoYXIqIHAgPSBm
dWxsUGF0aC5tdXRhYmxlRGF0YSgpICsgMTsKLSAgICBpbnQgbGVuZ3RoID0gZnVsbFBhdGgubGVu
Z3RoKCk7Ci0KLSAgICBpZihwW2xlbmd0aCAtIDFdID09ICcvJykKLSAgICAgICAgcFtsZW5ndGgg
LSAxXSA9ICdcMCc7Ci0gICAgZm9yICg7ICpwOyArK3ApCi0gICAgICAgIGlmICgqcCA9PSAnLycp
IHsKLSAgICAgICAgICAgICpwID0gJ1wwJzsKLSAgICAgICAgICAgIGlmIChhY2Nlc3MoZnVsbFBh
dGguZGF0YSgpLCBGX09LKSkKLSAgICAgICAgICAgICAgICBpZiAobWtkaXIoZnVsbFBhdGguZGF0
YSgpLCBTX0lSV1hVKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICAgICAgKnAgPSAnLyc7Ci0gICAgICAgIH0KLSAgICBpZiAoYWNjZXNzKGZ1bGxQYXRoLmRhdGEo
KSwgRl9PSykpCi0gICAgICAgIGlmIChta2RpcihmdWxsUGF0aC5kYXRhKCksIFNfSVJXWFUpKQot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLVN0cmlu
ZyBwYXRoR2V0RmlsZU5hbWUoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIHJldHVybiBwYXRo
LnN1YnN0cmluZyhwYXRoLnJldmVyc2VGaW5kKCcvJykgKyAxKTsKLX0KLQotU3RyaW5nIGRpcmVj
dG9yeU5hbWUoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIENTdHJpbmcgZnNSZXAgPSBmaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7Ci0KLSAgICBpZiAoIWZzUmVwLmRhdGEoKSB8fCBm
c1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAg
cmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoZGlybmFtZShmc1JlcC5tdXRhYmxlRGF0YSgpKSk7Ci19
Ci0KLVZlY3RvcjxTdHJpbmc+IGxpc3REaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25z
dCBTdHJpbmcmIGZpbHRlcikKLXsKLSAgICBWZWN0b3I8U3RyaW5nPiBlbnRyaWVzOwotICAgIENT
dHJpbmcgY3BhdGggPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7Ci0gICAgQ1N0cmlu
ZyBjZmlsdGVyID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbHRlcik7Ci0gICAgRElSKiBk
aXIgPSBvcGVuZGlyKGNwYXRoLmRhdGEoKSk7Ci0gICAgaWYgKGRpcikgewotICAgICAgICBzdHJ1
Y3QgZGlyZW50KiBkcDsKLSAgICAgICAgd2hpbGUgKChkcCA9IHJlYWRkaXIoZGlyKSkpIHsKLSAg
ICAgICAgICAgIGNvbnN0IGNoYXIqIG5hbWUgPSBkcC0+ZF9uYW1lOwotICAgICAgICAgICAgaWYg
KCFzdHJjbXAobmFtZSwgIi4iKSB8fCAhc3RyY21wKG5hbWUsICIuLiIpKQotICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaWYgKGZubWF0Y2goY2ZpbHRlci5kYXRhKCksIG5h
bWUsIDApKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgY2hhciBmaWxl
UGF0aFtQQVRIX01BWF07Ci0gICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50PihzaXplb2Yo
ZmlsZVBhdGgpIC0gMSkgPCBzbnByaW50ZihmaWxlUGF0aCwgc2l6ZW9mKGZpbGVQYXRoKSwgIiVz
LyVzIiwgY3BhdGguZGF0YSgpLCBuYW1lKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsgLy8g
YnVmZmVyIG92ZXJmbG93Ci0KLSAgICAgICAgICAgIGF1dG8gc3RyaW5nID0gc3RyaW5nRnJvbUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWxlUGF0aCk7Ci0KLSAgICAgICAgICAgIC8vIFNvbWUg
ZmlsZSBzeXN0ZW0gcmVwcmVzZW50YXRpb25zIGNhbm5vdCBiZSByZXByZXNlbnRlZCBhcyBhIFVU
Ri0xNiBzdHJpbmcsCi0gICAgICAgICAgICAvLyBzbyB0aGlzIHN0cmluZyBtaWdodCBiZSBudWxs
LgotICAgICAgICAgICAgaWYgKCFzdHJpbmcuaXNOdWxsKCkpCi0gICAgICAgICAgICAgICAgZW50
cmllcy5hcHBlbmQoV1RGTW92ZShzdHJpbmcpKTsKLSAgICAgICAgfQotICAgICAgICBjbG9zZWRp
cihkaXIpOwotICAgIH0KLSAgICByZXR1cm4gZW50cmllczsKLX0KLQotI2lmICFQTEFURk9STShD
T0NPQSkKLVN0cmluZyBzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IGNo
YXIqIHBhdGgpCi17Ci0gICAgaWYgKCFwYXRoKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0K
LSAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChwYXRoKTsKLX0KLQotQ1N0cmluZyBmaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIHJldHVybiBwYXRo
LnV0ZjgoKTsKLX0KLQotYm9vbCBtb3ZlRmlsZShjb25zdCBTdHJpbmcmIG9sZFBhdGgsIGNvbnN0
IFN0cmluZyYgbmV3UGF0aCkKLXsKLSAgICBhdXRvIG9sZEZpbGVuYW1lID0gZmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKG9sZFBhdGgpOwotICAgIGlmIChvbGRGaWxlbmFtZS5pc051bGwoKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYXV0byBuZXdGaWxlbmFtZSA9IGZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihuZXdQYXRoKTsKLSAgICBpZiAobmV3RmlsZW5hbWUuaXNOdWxsKCkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiByZW5hbWUob2xkRmlsZW5hbWUuZGF0
YSgpLCBuZXdGaWxlbmFtZS5kYXRhKCkpICE9IC0xOwotfQotCi1ib29sIGdldFZvbHVtZUZyZWVT
cGFjZShjb25zdCBTdHJpbmcmIHBhdGgsIHVpbnQ2NF90JiBmcmVlU3BhY2UpCi17Ci0gICAgc3Ry
dWN0IHN0YXR2ZnMgZmlsZVN5c3RlbVN0YXQ7Ci0gICAgaWYgKHN0YXR2ZnMoZmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSwgJmZpbGVTeXN0ZW1TdGF0KSkgewotICAgICAgICBm
cmVlU3BhY2UgPSBmaWxlU3lzdGVtU3RhdC5mX2JhdmFpbCAqIGZpbGVTeXN0ZW1TdGF0LmZfZnJz
aXplOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQot
I2VuZGlmCi0KLSNpZiAhT1MoREFSV0lOKQotU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0
IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKLXsKLSAgICBjaGFy
IGJ1ZmZlcltQQVRIX01BWF07Ci0gICAgY29uc3QgY2hhciogdG1wRGlyID0gZ2V0ZW52KCJUTVBE
SVIiKTsKLQotICAgIGlmICghdG1wRGlyKQotICAgICAgICB0bXBEaXIgPSAiL3RtcCI7Ci0KLSAg
ICBpZiAoc25wcmludGYoYnVmZmVyLCBQQVRIX01BWCwgIiVzLyVzWFhYWFhYIiwgdG1wRGlyLCBw
cmVmaXgudXRmOCgpLmRhdGEoKSkgPj0gUEFUSF9NQVgpCi0gICAgICAgIGdvdG8gZW5kOwotCi0g
ICAgaGFuZGxlID0gbWtzdGVtcChidWZmZXIpOwotICAgIGlmIChoYW5kbGUgPCAwKQotICAgICAg
ICBnb3RvIGVuZDsKLQotICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZlcik7Ci0KLWVu
ZDoKLSAgICBoYW5kbGUgPSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOwotICAgIHJldHVybiBT
dHJpbmcoKTsKLX0KLSNlbmRpZgotCi1ib29sIGhhcmRMaW5rT3JDb3B5RmlsZShjb25zdCBTdHJp
bmcmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbikKLXsKLSAgICBpZiAoc291cmNl
LmlzRW1wdHkoKSB8fCBkZXN0aW5hdGlvbi5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIENTdHJpbmcgZnNTb3VyY2UgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oc291
cmNlKTsKLSAgICBpZiAoIWZzU291cmNlLmRhdGEoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgQ1N0cmluZyBmc0Rlc3RpbmF0aW9uID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRl
c3RpbmF0aW9uKTsKLSAgICBpZiAoIWZzRGVzdGluYXRpb24uZGF0YSgpKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICBpZiAoIWxpbmsoZnNTb3VyY2UuZGF0YSgpLCBmc0Rlc3RpbmF0aW9u
LmRhdGEoKSkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgLy8gSGFyZCBsaW5rIGZhaWxl
ZC4gUGVyZm9ybSBhIGNvcHkgaW5zdGVhZC4KLSAgICBhdXRvIGhhbmRsZSA9IG9wZW4oZnNEZXN0
aW5hdGlvbi5kYXRhKCksIE9fV1JPTkxZIHwgT19DUkVBVCB8IE9fRVhDTCwgMDY2Nik7Ci0gICAg
aWYgKGhhbmRsZSA9PSAtMSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYm9vbCBhcHBl
bmRSZXN1bHQgPSBhcHBlbmRGaWxlQ29udGVudHNUb0ZpbGVIYW5kbGUoc291cmNlLCBoYW5kbGUp
OwotICAgIGNsb3NlKGhhbmRsZSk7Ci0KLSAgICAvLyBJZiB0aGUgY29weSBmYWlsZWQsIGRlbGV0
ZSB0aGUgdW51c2FibGUgZmlsZS4KLSAgICBpZiAoIWFwcGVuZFJlc3VsdCkKLSAgICAgICAgdW5s
aW5rKGZzRGVzdGluYXRpb24uZGF0YSgpKTsKLQotICAgIHJldHVybiBhcHBlbmRSZXN1bHQ7Ci19
Ci0KLU9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0Zp
bGUpCi17Ci0gICAgc3RydWN0IHN0YXQgZmlsZVN0YXQ7Ci0gICAgaWYgKHN0YXQoZnNGaWxlLmRh
dGEoKSwgJmZpbGVTdGF0KSA9PSAtMSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQot
ICAgIHJldHVybiBmaWxlU3RhdC5zdF9kZXY7Ci19Ci0KLVN0cmluZyByZWFsUGF0aChjb25zdCBT
dHJpbmcmIGZpbGVQYXRoKQotewotICAgIENTdHJpbmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZmlsZVBhdGgpOwotICAgIGNoYXIgcmVzb2x2ZWROYW1lW1BBVEhfTUFYXTsKLSAg
ICBjb25zdCBjaGFyKiByZXN1bHQgPSByZWFscGF0aChmc1JlcC5kYXRhKCksIHJlc29sdmVkTmFt
ZSk7Ci0gICAgcmV0dXJuIHJlc3VsdCA/IFN0cmluZzo6ZnJvbVVURjgocmVzdWx0KSA6IGZpbGVQ
YXRoOwotfQotCi19IC8vIG5hbWVzcGFjZSBGaWxlU3lzdGVtCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZm
ZXJQT1NJWC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQ
T1NJWC5jcHAKaW5kZXggNTEzMzc1ZDI0NWVmNDVjMTk2YTg1NDYxNWNlNzBiNzhhOTBjZWNmZi4u
OGVkNTcxNzQ3NzhjYjdiZGFkY2EzNjUxN2ZkNzk0NDU3MzhjNTJkNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVyUE9TSVguY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcApAQCAtMjYs
MTEgKzI2LDEwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVy
LmgiCiAKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCi0KICNpbmNsdWRlIDxmY250bC5oPgogI2lu
Y2x1ZGUgPHN5cy9zdGF0Lmg+CiAjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8d3RmL0Zp
bGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVG
aWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lz
dGVtLmNwcAppbmRleCA5MGMyMGM3YmNlNmE2N2I2N2Q1M2Q1YzQwNTM3NzZiZjE0YzdlNWU1Li4z
NjRiZmY3MTA3NDk3ODk2ZjdiMWQ3NTdhN2Q5YTVmYzNhZDNmNjQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uY3BwCkBAIC0zMSwxMCArMzEs
MTAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTUUxpdGVGaWxlU3lzdGVtLmgi
CiAKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiU1FMaXRlRGF0YWJhc2UuaCIK
ICNpbmNsdWRlICJTUUxpdGVTdGF0ZW1lbnQuaCIKICNpbmNsdWRlIDxzcWxpdGUzLmg+CisjaW5j
bHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW5j
bHVkZSA8cGFsL3NwaS9pb3MvU1FMaXRlM1NQSS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9oeXBoZW4vSHlwaGVuYXRpb25MaWJIeXBoZW4uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9oeXBoZW4vSHlwaGVuYXRpb25MaWJIeXBoZW4uY3BwCmlu
ZGV4IDJkN2I2NmQ5Mzc5MDVkY2MyMmY0YTEzZTk1YTBhZjA2YmI0OGI3YWYuLjVlZWI5YmZhNzQw
MGY3MjE1YzAyNmM1NTJkODJhYTM4YTc2M2Y5NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGliSHlwaGVuLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAK
QEAgLTI5LDEwICsyOSwxMCBAQAogCiAjaWYgVVNFKExJQkhZUEhFTikKIAotI2luY2x1ZGUgIkZp
bGVTeXN0ZW0uaCIKICNpbmNsdWRlIDxoeXBoZW4uaD4KICNpbmNsdWRlIDxsaW1pdHM+CiAjaW5j
bHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUg
PHd0Zi9UaW55TFJVQ2FjaGUuaD4KQEAgLTIyNCw3ICsyMjQsNyBAQCBwdWJsaWM6CiAKICAgICBz
dGF0aWMgUmVmUHRyPFdlYkNvcmU6Okh5cGhlbmF0aW9uRGljdGlvbmFyeT4gY3JlYXRlVmFsdWVG
b3JLZXkoY29uc3QgQXRvbWljU3RyaW5nJiBkaWN0aW9uYXJ5UGF0aCkKICAgICB7Ci0gICAgICAg
IHJldHVybiBXZWJDb3JlOjpIeXBoZW5hdGlvbkRpY3Rpb25hcnk6OmNyZWF0ZShXZWJDb3JlOjpG
aWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGljdGlvbmFyeVBhdGguc3RyaW5n
KCkpKTsKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6Okh5cGhlbmF0aW9uRGljdGlvbmFyeTo6Y3Jl
YXRlKEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihkaWN0aW9uYXJ5UGF0aC5z
dHJpbmcoKSkpOwogICAgIH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9GaWxlU3lzdGVtV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9G
aWxlU3lzdGVtV2luLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmI3MDJjYjAx
MjBhYmJmMjU4NTI5ZmFmOTQzMTBkZGZmZmRmNjA4NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRmlsZVN5
c3RlbVdpbi5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1ODkgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAwNy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENv
cHlyaWdodCAoQykgMjAwOCBDb2xsYWJvcmEsIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuIAotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uIAotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAo
IkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9t
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
IAotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCi0KLSNpbmNsdWRlICJGaWxlTWV0YWRh
dGEuaCIKLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgIlBhdGhXYWxrZXIu
aCIKLSNpbmNsdWRlIDxpby5oPgotI2luY2x1ZGUgPHNobG9iai5oPgotI2luY2x1ZGUgPHNobHdh
cGkuaD4KLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgotI2luY2x1ZGUgPHdpbmRvd3MuaD4KLSNpbmNs
dWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaD4KLSNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdCdWlsZGVyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5n
RXh0cmFzLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIEZpbGVTeXN0ZW0g
ewotCi1zdGF0aWMgY29uc3QgVUxPTkdMT05HIGtTZWNvbmRzRnJvbUZpbGVUaW1lVG9UaW1ldCA9
IDExNjQ0NDczNjAwOwotCi1zdGF0aWMgYm9vbCBnZXRGaW5kRGF0YShTdHJpbmcgcGF0aCwgV0lO
MzJfRklORF9EQVRBVyYgZmluZERhdGEpCi17Ci0gICAgSEFORExFIGhhbmRsZSA9IEZpbmRGaXJz
dEZpbGVXKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihwYXRoKS5kYXRhKCksICZmaW5kRGF0
YSk7Ci0gICAgaWYgKGhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIEZpbmRDbG9zZShoYW5kbGUpOwotICAgIHJldHVybiB0cnVlOwotfQot
Ci1zdGF0aWMgYm9vbCBnZXRGaWxlU2l6ZUZyb21GaW5kRGF0YShjb25zdCBXSU4zMl9GSU5EX0RB
VEFXJiBmaW5kRGF0YSwgbG9uZyBsb25nJiBzaXplKQotewotICAgIFVMQVJHRV9JTlRFR0VSIGZp
bGVTaXplOwotICAgIGZpbGVTaXplLkhpZ2hQYXJ0ID0gZmluZERhdGEubkZpbGVTaXplSGlnaDsK
LSAgICBmaWxlU2l6ZS5Mb3dQYXJ0ID0gZmluZERhdGEubkZpbGVTaXplTG93OwotCi0gICAgaWYg
KGZpbGVTaXplLlF1YWRQYXJ0ID4gc3RhdGljX2Nhc3Q8VUxPTkdMT05HPihzdGQ6Om51bWVyaWNf
bGltaXRzPGxvbmcgbG9uZz46Om1heCgpKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
c2l6ZSA9IGZpbGVTaXplLlF1YWRQYXJ0OwotICAgIHJldHVybiB0cnVlOwotfQotCi1zdGF0aWMg
Ym9vbCBnZXRGaWxlU2l6ZUZyb21CeUhhbmRsZUZpbGVJbmZvcm1hdGlvblN0cnVjdHVyZShjb25z
dCBCWV9IQU5ETEVfRklMRV9JTkZPUk1BVElPTiYgZmlsZUluZm9ybWF0aW9uLCBsb25nIGxvbmcm
IHNpemUpCi17Ci0gICAgVUxBUkdFX0lOVEVHRVIgZmlsZVNpemU7Ci0gICAgZmlsZVNpemUuSGln
aFBhcnQgPSBmaWxlSW5mb3JtYXRpb24ubkZpbGVTaXplSGlnaDsKLSAgICBmaWxlU2l6ZS5Mb3dQ
YXJ0ID0gZmlsZUluZm9ybWF0aW9uLm5GaWxlU2l6ZUxvdzsKLQotICAgIGlmIChmaWxlU2l6ZS5R
dWFkUGFydCA+IHN0YXRpY19jYXN0PFVMT05HTE9ORz4oc3RkOjpudW1lcmljX2xpbWl0czxsb25n
IGxvbmc+OjptYXgoKSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHNpemUgPSBmaWxl
U2l6ZS5RdWFkUGFydDsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotc3RhdGljIHZvaWQgZ2V0Rmls
ZUNyZWF0aW9uVGltZUZyb21GaW5kRGF0YShjb25zdCBXSU4zMl9GSU5EX0RBVEFXJiBmaW5kRGF0
YSwgdGltZV90JiB0aW1lKQotewotICAgIFVMQVJHRV9JTlRFR0VSIGZpbGVUaW1lOwotICAgIGZp
bGVUaW1lLkhpZ2hQYXJ0ID0gZmluZERhdGEuZnRDcmVhdGlvblRpbWUuZHdIaWdoRGF0ZVRpbWU7
Ci0gICAgZmlsZVRpbWUuTG93UGFydCA9IGZpbmREYXRhLmZ0Q3JlYXRpb25UaW1lLmR3TG93RGF0
ZVRpbWU7Ci0KLSAgICAvLyBJbmZvcm1hdGlvbiBhYm91dCBjb252ZXJ0aW5nIHRpbWVfdCB0byBG
aWxlVGltZSBpcyBhdmFpbGFibGUgYXQgaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9s
aWJyYXJ5L21zNzI0MjI4JTI4dj12cy44NSUyOS5hc3B4Ci0gICAgdGltZSA9IGZpbGVUaW1lLlF1
YWRQYXJ0IC8gMTAwMDAwMDAgLSBrU2Vjb25kc0Zyb21GaWxlVGltZVRvVGltZXQ7Ci19Ci0KLQot
c3RhdGljIHZvaWQgZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWVGcm9tRmluZERhdGEoY29uc3QgV0lO
MzJfRklORF9EQVRBVyYgZmluZERhdGEsIHRpbWVfdCYgdGltZSkKLXsKLSAgICBVTEFSR0VfSU5U
RUdFUiBmaWxlVGltZTsKLSAgICBmaWxlVGltZS5IaWdoUGFydCA9IGZpbmREYXRhLmZ0TGFzdFdy
aXRlVGltZS5kd0hpZ2hEYXRlVGltZTsKLSAgICBmaWxlVGltZS5Mb3dQYXJ0ID0gZmluZERhdGEu
ZnRMYXN0V3JpdGVUaW1lLmR3TG93RGF0ZVRpbWU7Ci0KLSAgICAvLyBJbmZvcm1hdGlvbiBhYm91
dCBjb252ZXJ0aW5nIHRpbWVfdCB0byBGaWxlVGltZSBpcyBhdmFpbGFibGUgYXQgaHR0cDovL21z
ZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L21zNzI0MjI4JTI4dj12cy44NSUyOS5hc3B4
Ci0gICAgdGltZSA9IGZpbGVUaW1lLlF1YWRQYXJ0IC8gMTAwMDAwMDAgLSBrU2Vjb25kc0Zyb21G
aWxlVGltZVRvVGltZXQ7Ci19Ci0KLWJvb2wgZ2V0RmlsZVNpemUoY29uc3QgU3RyaW5nJiBwYXRo
LCBsb25nIGxvbmcmIHNpemUpCi17Ci0gICAgV0lOMzJfRklORF9EQVRBVyBmaW5kRGF0YTsKLSAg
ICBpZiAoIWdldEZpbmREYXRhKHBhdGgsIGZpbmREYXRhKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgcmV0dXJuIGdldEZpbGVTaXplRnJvbUZpbmREYXRhKGZpbmREYXRhLCBzaXplKTsK
LX0KLQotYm9vbCBnZXRGaWxlU2l6ZShQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRsZSwgbG9u
ZyBsb25nJiBzaXplKQotewotICAgIEJZX0hBTkRMRV9GSUxFX0lORk9STUFUSU9OIGZpbGVJbmZv
cm1hdGlvbjsKLSAgICBpZiAoITo6R2V0RmlsZUluZm9ybWF0aW9uQnlIYW5kbGUoZmlsZUhhbmRs
ZSwgJmZpbGVJbmZvcm1hdGlvbikpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVy
biBnZXRGaWxlU2l6ZUZyb21CeUhhbmRsZUZpbGVJbmZvcm1hdGlvblN0cnVjdHVyZShmaWxlSW5m
b3JtYXRpb24sIHNpemUpOwotfQotCi1PcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZU1vZGlmaWNh
dGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIFdJTjMyX0ZJTkRfREFUQVcgZmlu
ZERhdGE7Ci0gICAgaWYgKCFnZXRGaW5kRGF0YShwYXRoLCBmaW5kRGF0YSkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICB0aW1lX3QgdGltZSA9IDA7Ci0gICAgZ2V0RmlsZU1v
ZGlmaWNhdGlvblRpbWVGcm9tRmluZERhdGEoZmluZERhdGEsIHRpbWUpOwotICAgIHJldHVybiBX
YWxsVGltZTo6ZnJvbVJhd1NlY29uZHModGltZSk7Ci19Ci0KLU9wdGlvbmFsPFdhbGxUaW1lPiBn
ZXRGaWxlQ3JlYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBXSU4zMl9GSU5E
X0RBVEFXIGZpbmREYXRhOwotICAgIGlmICghZ2V0RmluZERhdGEocGF0aCwgZmluZERhdGEpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgdGltZV90IHRpbWUgPSAwOwotICAg
IGdldEZpbGVDcmVhdGlvblRpbWVGcm9tRmluZERhdGEoZmluZERhdGEsIHRpbWUpOwotICAgIHJl
dHVybiBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHModGltZSk7Ci19Ci0KLXN0YXRpYyBTdHJpbmcg
Z2V0RmluYWxQYXRoTmFtZShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgYXV0byBoYW5kbGUg
PSBvcGVuRmlsZShwYXRoLCBGaWxlT3Blbk1vZGU6OlJlYWQpOwotICAgIGlmICghaXNIYW5kbGVW
YWxpZChoYW5kbGUpKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICBWZWN0b3I8VUNo
YXI+IGJ1ZmZlcihNQVhfUEFUSCk7Ci0gICAgaWYgKDo6R2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxl
VyhoYW5kbGUsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCksIFZPTFVNRV9OQU1FX05UKSA+
PSBNQVhfUEFUSCkgewotICAgICAgICBjbG9zZUZpbGUoaGFuZGxlKTsKLSAgICAgICAgcmV0dXJu
IFN0cmluZygpOwotICAgIH0KLSAgICBjbG9zZUZpbGUoaGFuZGxlKTsKLQotICAgIGJ1ZmZlci5z
aHJpbmsod2NzbGVuKGJ1ZmZlci5kYXRhKCkpKTsKLSAgICByZXR1cm4gU3RyaW5nOjphZG9wdChX
VEZNb3ZlKGJ1ZmZlcikpOwotfQotCi1zdGF0aWMgaW5saW5lIGJvb2wgaXNTeW1ib2xpY0xpbmso
V0lOMzJfRklORF9EQVRBVyBmaW5kRGF0YSkKLXsKLSAgICByZXR1cm4gZmluZERhdGEuZHdGaWxl
QXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX1JFUEFSU0VfUE9JTlQgJiYgZmluZERhdGEuZHdS
ZXNlcnZlZDAgPT0gSU9fUkVQQVJTRV9UQUdfU1lNTElOSzsKLX0KLQotc3RhdGljIEZpbGVNZXRh
ZGF0YTo6VHlwZSB0b0ZpbGVNZXRhZGF0YVR5cGUoV0lOMzJfRklORF9EQVRBVyBmaW5kRGF0YSkK
LXsKLSAgICBpZiAoZmluZERhdGEuZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX0RJ
UkVDVE9SWSkKLSAgICAgICAgcmV0dXJuIEZpbGVNZXRhZGF0YTo6VHlwZTo6RGlyZWN0b3J5Owot
ICAgIGlmIChpc1N5bWJvbGljTGluayhmaW5kRGF0YSkpCi0gICAgICAgIHJldHVybiBGaWxlTWV0
YWRhdGE6OlR5cGU6OlN5bWJvbGljTGluazsKLSAgICByZXR1cm4gRmlsZU1ldGFkYXRhOjpUeXBl
OjpGaWxlOwotfQotCi1zdGF0aWMgT3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaW5kRGF0YVRvRmls
ZU1ldGFkYXRhKFdJTjMyX0ZJTkRfREFUQVcgZmluZERhdGEpCi17Ci0gICAgbG9uZyBsb25nIGxl
bmd0aDsKLSAgICBpZiAoIWdldEZpbGVTaXplRnJvbUZpbmREYXRhKGZpbmREYXRhLCBsZW5ndGgp
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgdGltZV90IG1vZGlmaWNhdGlv
blRpbWU7Ci0gICAgZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWVGcm9tRmluZERhdGEoZmluZERhdGEs
IG1vZGlmaWNhdGlvblRpbWUpOwotCi0gICAgcmV0dXJuIEZpbGVNZXRhZGF0YSB7Ci0gICAgICAg
IFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhtb2RpZmljYXRpb25UaW1lKSwKLSAgICAgICAgbGVu
Z3RoLAotICAgICAgICBzdGF0aWNfY2FzdDxib29sPihmaW5kRGF0YS5kd0ZpbGVBdHRyaWJ1dGVz
ICYgRklMRV9BVFRSSUJVVEVfSElEREVOKSwKLSAgICAgICAgdG9GaWxlTWV0YWRhdGFUeXBlKGZp
bmREYXRhKQotICAgIH07Ci19Ci0KLU9wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRh
KGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBXSU4zMl9GSU5EX0RBVEFXIGZpbmREYXRhOwot
ICAgIGlmICghZ2V0RmluZERhdGEocGF0aCwgZmluZERhdGEpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwotCi0gICAgcmV0dXJuIGZpbmREYXRhVG9GaWxlTWV0YWRhdGEoZmluZERhdGEp
OwotfQotCi1PcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YUZvbGxvd2luZ1N5bWxp
bmtzKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBXSU4zMl9GSU5EX0RBVEFXIGZpbmREYXRh
OwotICAgIGlmICghZ2V0RmluZERhdGEocGF0aCwgZmluZERhdGEpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwotCi0gICAgaWYgKGlzU3ltYm9saWNMaW5rKGZpbmREYXRhKSkgewotICAg
ICAgICBTdHJpbmcgdGFyZ2V0UGF0aCA9IGdldEZpbmFsUGF0aE5hbWUocGF0aCk7Ci0gICAgICAg
IGlmICh0YXJnZXRQYXRoLmlzTnVsbCgpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKLSAgICAgICAgaWYgKCFnZXRGaW5kRGF0YSh0YXJnZXRQYXRoLCBmaW5kRGF0YSkpCi0gICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIH0KLQotICAgIHJldHVybiBmaW5kRGF0
YVRvRmlsZU1ldGFkYXRhKGZpbmREYXRhKTsKLX0KLQotYm9vbCBjcmVhdGVTeW1ib2xpY0xpbmso
Y29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGljTGlua1BhdGgp
Ci17Ci0gICAgcmV0dXJuICE6OkNyZWF0ZVN5bWJvbGljTGlua1coc3RyaW5nVG9OdWxsVGVybWlu
YXRlZFdDaGFyKHN5bWJvbGljTGlua1BhdGgpLmRhdGEoKSwgc3RyaW5nVG9OdWxsVGVybWluYXRl
ZFdDaGFyKHRhcmdldFBhdGgpLmRhdGEoKSwgMCk7Ci19Ci0KLWJvb2wgZmlsZUV4aXN0cyhjb25z
dCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgV0lOMzJfRklORF9EQVRBVyBmaW5kRGF0YTsKLSAgICBy
ZXR1cm4gZ2V0RmluZERhdGEocGF0aCwgZmluZERhdGEpOwotfQotCi1ib29sIGRlbGV0ZUZpbGUo
Y29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIFN0cmluZyBmaWxlbmFtZSA9IHBhdGg7Ci0gICAg
cmV0dXJuICEhRGVsZXRlRmlsZVcoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGZpbGVuYW1l
KS5kYXRhKCkpOwotfQotCi1ib29sIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYg
cGF0aCkKLXsKLSAgICBTdHJpbmcgZmlsZW5hbWUgPSBwYXRoOwotICAgIHJldHVybiAhIVJlbW92
ZURpcmVjdG9yeVcoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGZpbGVuYW1lKS5kYXRhKCkp
OwotfQotCi1ib29sIG1vdmVGaWxlKGNvbnN0IFN0cmluZyYgb2xkUGF0aCwgY29uc3QgU3RyaW5n
JiBuZXdQYXRoKQotewotICAgIFN0cmluZyBvbGRGaWxlbmFtZSA9IG9sZFBhdGg7Ci0gICAgU3Ry
aW5nIG5ld0ZpbGVuYW1lID0gbmV3UGF0aDsKLSAgICByZXR1cm4gISE6Ok1vdmVGaWxlRXgoc3Ry
aW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKG9sZEZpbGVuYW1lKS5kYXRhKCksIHN0cmluZ1RvTnVs
bFRlcm1pbmF0ZWRXQ2hhcihuZXdGaWxlbmFtZSkuZGF0YSgpLCBNT1ZFRklMRV9DT1BZX0FMTE9X
RUQgfCBNT1ZFRklMRV9SRVBMQUNFX0VYSVNUSU5HKTsKLX0KLQotU3RyaW5nIHBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29tcG9uZW50
KQotewotICAgIFZlY3RvcjxVQ2hhcj4gYnVmZmVyKE1BWF9QQVRIKTsKLQotICAgIGlmIChwYXRo
Lmxlbmd0aCgpICsgMSA+IGJ1ZmZlci5zaXplKCkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsK
LQotICAgIFN0cmluZ1ZpZXcocGF0aCkuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoYnVmZmVy
LmRhdGEoKSk7Ci0gICAgYnVmZmVyW3BhdGgubGVuZ3RoKCldID0gJ1wwJzsKLQotICAgIGlmICgh
UGF0aEFwcGVuZFcoYnVmZmVyLmRhdGEoKSwgc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGNv
bXBvbmVudCkuZGF0YSgpKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgYnVmZmVy
LnNocmluayh3Y3NsZW4oYnVmZmVyLmRhdGEoKSkpOwotCi0gICAgcmV0dXJuIFN0cmluZzo6YWRv
cHQoV1RGTW92ZShidWZmZXIpKTsKLX0KLQotU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dHMoU3RyaW5nVmlldyBwYXRoLCBjb25zdCBWZWN0b3I8U3RyaW5nVmlldz4mIGNvbXBvbmVudHMp
Ci17Ci0gICAgU3RyaW5nIHJlc3VsdCA9IHBhdGgudG9TdHJpbmcoKTsKLSAgICBmb3IgKGF1dG8m
IGNvbXBvbmVudCA6IGNvbXBvbmVudHMpCi0gICAgICAgIHJlc3VsdCA9IHBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChyZXN1bHQsIGNvbXBvbmVudC50b1N0cmluZygpKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotCi0jaWYgIVVTRShDRikKLQotQ1N0cmluZyBmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIGF1dG8gdXBjb252ZXJ0ZWRDaGFyYWN0ZXJz
ID0gcGF0aC51cGNvbnZlcnRlZENoYXJhY3RlcnMoKTsKLQotICAgIGNvbnN0IFVDaGFyKiBjaGFy
YWN0ZXJzID0gdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzOwotICAgIGludCBzaXplID0gV2lkZUNoYXJU
b011bHRpQnl0ZShDUF9BQ1AsIDAsIGNoYXJhY3RlcnMsIHBhdGgubGVuZ3RoKCksIDAsIDAsIDAs
IDApIC0gMTsKLQotICAgIGNoYXIqIGJ1ZmZlcjsKLSAgICBDU3RyaW5nIHN0cmluZyA9IENTdHJp
bmc6Om5ld1VuaW5pdGlhbGl6ZWQoc2l6ZSwgYnVmZmVyKTsKLQotICAgIFdpZGVDaGFyVG9NdWx0
aUJ5dGUoQ1BfQUNQLCAwLCBjaGFyYWN0ZXJzLCBwYXRoLmxlbmd0aCgpLCBidWZmZXIsIHNpemUs
IDAsIDApOwotCi0gICAgcmV0dXJuIHN0cmluZzsKLX0KLQotI2VuZGlmIC8vICFVU0UoQ0YpCi0K
LWJvb2wgbWFrZUFsbERpcmVjdG9yaWVzKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBTdHJp
bmcgZnVsbFBhdGggPSBwYXRoOwotICAgIGlmIChTSENyZWF0ZURpcmVjdG9yeUV4KDAsIHN0cmlu
Z1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihmdWxsUGF0aCkuZGF0YSgpLCAwKSAhPSBFUlJPUl9TVUND
RVNTKSB7Ci0gICAgICAgIERXT1JEIGVycm9yID0gR2V0TGFzdEVycm9yKCk7Ci0gICAgICAgIGlm
IChlcnJvciAhPSBFUlJPUl9GSUxFX0VYSVNUUyAmJiBlcnJvciAhPSBFUlJPUl9BTFJFQURZX0VY
SVNUUykgewotICAgICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIHBhdGggJXMi
LCBwYXRoLmFzY2lpKCkuZGF0YSgpKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgfQotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotU3RyaW5nIGhvbWVEaXJlY3RvcnlQ
YXRoKCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAiIjsKLX0KLQotU3Ry
aW5nIHBhdGhHZXRGaWxlTmFtZShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgcmV0dXJuIG51
bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmluZyg6OlBhdGhGaW5kRmlsZU5hbWUoc3RyaW5nVG9OdWxs
VGVybWluYXRlZFdDaGFyKHBhdGgpLmRhdGEoKSkpOwotfQotCi1TdHJpbmcgZGlyZWN0b3J5TmFt
ZShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgU3RyaW5nIG5hbWUgPSBwYXRoLmxlZnQocGF0
aC5sZW5ndGgoKSAtIHBhdGhHZXRGaWxlTmFtZShwYXRoKS5sZW5ndGgoKSk7Ci0gICAgaWYgKG5h
bWUuY2hhcmFjdGVyU3RhcnRpbmdBdChuYW1lLmxlbmd0aCgpIC0gMSkgPT0gJ1xcJykgewotICAg
ICAgICAvLyBSZW1vdmUgYW55IHRyYWlsaW5nICJcIi4KLSAgICAgICAgbmFtZS50cnVuY2F0ZShu
YW1lLmxlbmd0aCgpIC0gMSk7Ci0gICAgfQotICAgIHJldHVybiBuYW1lOwotfQotCi1zdGF0aWMg
U3RyaW5nIGJ1bmRsZU5hbWUoKQotewotICAgIHN0YXRpYyBjb25zdCBOZXZlckRlc3Ryb3llZDxT
dHJpbmc+IG5hbWUgPSBbXSB7Ci0gICAgICAgIFN0cmluZyBuYW1lIHsgIldlYktpdCJfcyB9Owot
Ci0jaWYgVVNFKENGKQotICAgICAgICBpZiAoQ0ZCdW5kbGVSZWYgYnVuZGxlID0gQ0ZCdW5kbGVH
ZXRNYWluQnVuZGxlKCkpIHsKLSAgICAgICAgICAgIGlmIChDRlR5cGVSZWYgYnVuZGxlRXhlY3V0
YWJsZSA9IENGQnVuZGxlR2V0VmFsdWVGb3JJbmZvRGljdGlvbmFyeUtleShidW5kbGUsIGtDRkJ1
bmRsZUV4ZWN1dGFibGVLZXkpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKENGR2V0VHlwZUlEKGJ1
bmRsZUV4ZWN1dGFibGUpID09IENGU3RyaW5nR2V0VHlwZUlEKCkpCi0gICAgICAgICAgICAgICAg
ICAgIG5hbWUgPSByZWludGVycHJldF9jYXN0PENGU3RyaW5nUmVmPihidW5kbGVFeGVjdXRhYmxl
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotI2VuZGlmCi0KLSAgICAgICAgcmV0dXJuIG5h
bWU7Ci0gICAgfSgpOwotCi0gICAgcmV0dXJuIG5hbWU7Ci19Ci0KLXN0YXRpYyBTdHJpbmcgc3Rv
cmFnZURpcmVjdG9yeShEV09SRCBwYXRoSWRlbnRpZmllcikKLXsKLSAgICBWZWN0b3I8VUNoYXI+
IGJ1ZmZlcihNQVhfUEFUSCk7Ci0gICAgaWYgKEZBSUxFRChTSEdldEZvbGRlclBhdGhXKDAsIHBh
dGhJZGVudGlmaWVyIHwgQ1NJRExfRkxBR19DUkVBVEUsIDAsIDAsIGJ1ZmZlci5kYXRhKCkpKSkK
LSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIGJ1ZmZlci5yZXNpemUod2NzbGVuKGJ1ZmZl
ci5kYXRhKCkpKTsKLSAgICBTdHJpbmcgZGlyZWN0b3J5ID0gU3RyaW5nOjphZG9wdChXVEZNb3Zl
KGJ1ZmZlcikpOwotCi0gICAgZGlyZWN0b3J5ID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRp
cmVjdG9yeSwgIkFwcGxlIENvbXB1dGVyXFwiICsgYnVuZGxlTmFtZSgpKTsKLSAgICBpZiAoIW1h
a2VBbGxEaXJlY3RvcmllcyhkaXJlY3RvcnkpKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0K
LSAgICByZXR1cm4gZGlyZWN0b3J5OwotfQotCi1zdGF0aWMgU3RyaW5nIGNhY2hlZFN0b3JhZ2VE
aXJlY3RvcnkoRFdPUkQgcGF0aElkZW50aWZpZXIpCi17Ci0gICAgc3RhdGljIEhhc2hNYXA8RFdP
UkQsIFN0cmluZz4gZGlyZWN0b3JpZXM7Ci0KLSAgICBIYXNoTWFwPERXT1JELCBTdHJpbmc+Ojpp
dGVyYXRvciBpdCA9IGRpcmVjdG9yaWVzLmZpbmQocGF0aElkZW50aWZpZXIpOwotICAgIGlmIChp
dCAhPSBkaXJlY3Rvcmllcy5lbmQoKSkKLSAgICAgICAgcmV0dXJuIGl0LT52YWx1ZTsKLQotICAg
IFN0cmluZyBkaXJlY3RvcnkgPSBzdG9yYWdlRGlyZWN0b3J5KHBhdGhJZGVudGlmaWVyKTsKLSAg
ICBkaXJlY3Rvcmllcy5hZGQocGF0aElkZW50aWZpZXIsIGRpcmVjdG9yeSk7Ci0KLSAgICByZXR1
cm4gZGlyZWN0b3J5OwotfQotCi1zdGF0aWMgU3RyaW5nIGdlbmVyYXRlVGVtcG9yYXJ5UGF0aChj
b25zdCBGdW5jdGlvbjxib29sKGNvbnN0IFN0cmluZyYpPiYgYWN0aW9uKQotewotICAgIHdjaGFy
X3QgdGVtcFBhdGhbTUFYX1BBVEhdOwotICAgIGludCB0ZW1wUGF0aExlbmd0aCA9IDo6R2V0VGVt
cFBhdGhXKFdURl9BUlJBWV9MRU5HVEgodGVtcFBhdGgpLCB0ZW1wUGF0aCk7Ci0gICAgaWYgKHRl
bXBQYXRoTGVuZ3RoIDw9IDAgfHwgdGVtcFBhdGhMZW5ndGggPiBXVEZfQVJSQVlfTEVOR1RIKHRl
bXBQYXRoKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgU3RyaW5nIHByb3Bvc2Vk
UGF0aDsKLSAgICBkbyB7Ci0gICAgICAgIHdjaGFyX3QgdGVtcEZpbGVbXSA9IEwiWFhYWFhYWFgu
dG1wIjsgLy8gVXNlIDguMyBzdHlsZSBuYW1lIChtb3JlIGNoYXJhY3RlcnMgYXJlbid0IGhlbHBm
dWwgZHVlIHRvIDguMyBzaG9ydCBmaWxlIG5hbWVzKQotICAgICAgICBjb25zdCBpbnQgcmFuZG9t
UGFydExlbmd0aCA9IDg7Ci0gICAgICAgIGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tVmFsdWVzKHRl
bXBGaWxlLCByYW5kb21QYXJ0TGVuZ3RoICogc2l6ZW9mKHdjaGFyX3QpKTsKLQotICAgICAgICAv
LyBMaW1pdCB0byB2YWxpZCBmaWxlc3lzdGVtIGNoYXJhY3RlcnMsIGFsc28gZXhjbHVkaW5nIG90
aGVycyB0aGF0IGNvdWxkIGJlIHByb2JsZW1hdGljLCBsaWtlIHB1bmN0dWF0aW9uLgotICAgICAg
ICAvLyBkb24ndCBpbmNsdWRlIGJvdGggdXBwZXIgYW5kIGxvd2VyY2FzZSBzaW5jZSBXaW5kb3dz
IGZpbGUgc3lzdGVtcyBhcmUgdHlwaWNhbGx5IG5vdCBjYXNlIHNlbnNpdGl2ZS4KLSAgICAgICAg
Y29uc3QgY2hhciB2YWxpZENoYXJzW10gPSAiMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0
dXZ3eHl6IjsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCByYW5kb21QYXJ0TGVuZ3RoOyAr
K2kpCi0gICAgICAgICAgICB0ZW1wRmlsZVtpXSA9IHZhbGlkQ2hhcnNbdGVtcEZpbGVbaV0gJSAo
c2l6ZW9mKHZhbGlkQ2hhcnMpIC0gMSldOwotCi0gICAgICAgIEFTU0VSVCh3Y3NsZW4odGVtcEZp
bGUpID09IFdURl9BUlJBWV9MRU5HVEgodGVtcEZpbGUpIC0gMSk7Ci0KLSAgICAgICAgcHJvcG9z
ZWRQYXRoID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG51bGxUZXJtaW5hdGVkV0NoYXJUb1N0
cmluZyh0ZW1wUGF0aCksIG51bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmluZyh0ZW1wRmlsZSkpOwot
ICAgICAgICBpZiAocHJvcG9zZWRQYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgIH0gd2hpbGUgKCFhY3Rpb24ocHJvcG9zZWRQYXRoKSk7Ci0KLSAgICByZXR1cm4gcHJvcG9z
ZWRQYXRoOwotfQotCi1TdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiwgUGxh
dGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpCi17Ci0gICAgaGFuZGxlID0gSU5WQUxJRF9IQU5ETEVf
VkFMVUU7Ci0KLSAgICBTdHJpbmcgcHJvcG9zZWRQYXRoID0gZ2VuZXJhdGVUZW1wb3JhcnlQYXRo
KFsmaGFuZGxlXShjb25zdCBTdHJpbmcmIHByb3Bvc2VkUGF0aCkgewotICAgICAgICAvLyB1c2Ug
Q1JFQVRFX05FVyB0byBhdm9pZCBvdmVyd3JpdGluZyBhbiBleGlzdGluZyBmaWxlIHdpdGggdGhl
IHNhbWUgbmFtZQotICAgICAgICBoYW5kbGUgPSA6OkNyZWF0ZUZpbGVXKHN0cmluZ1RvTnVsbFRl
cm1pbmF0ZWRXQ2hhcihwcm9wb3NlZFBhdGgpLmRhdGEoKSwgR0VORVJJQ19SRUFEIHwgR0VORVJJ
Q19XUklURSwgMCwgMCwgQ1JFQVRFX05FVywgRklMRV9BVFRSSUJVVEVfTk9STUFMLCAwKTsKLQot
ICAgICAgICByZXR1cm4gaXNIYW5kbGVWYWxpZChoYW5kbGUpIHx8IEdldExhc3RFcnJvcigpID09
IEVSUk9SX0FMUkVBRFlfRVhJU1RTOwotICAgIH0pOwotCi0gICAgaWYgKCFpc0hhbmRsZVZhbGlk
KGhhbmRsZSkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIHJldHVybiBwcm9wb3Nl
ZFBhdGg7Ci19Ci0KLVBsYXRmb3JtRmlsZUhhbmRsZSBvcGVuRmlsZShjb25zdCBTdHJpbmcmIHBh
dGgsIEZpbGVPcGVuTW9kZSBtb2RlKQotewotICAgIERXT1JEIGRlc2lyZWRBY2Nlc3MgPSAwOwot
ICAgIERXT1JEIGNyZWF0aW9uRGlzcG9zaXRpb24gPSAwOwotICAgIERXT1JEIHNoYXJlTW9kZSA9
IDA7Ci0gICAgc3dpdGNoIChtb2RlKSB7Ci0gICAgY2FzZSBGaWxlT3Blbk1vZGU6OlJlYWQ6Ci0g
ICAgICAgIGRlc2lyZWRBY2Nlc3MgPSBHRU5FUklDX1JFQUQ7Ci0gICAgICAgIGNyZWF0aW9uRGlz
cG9zaXRpb24gPSBPUEVOX0VYSVNUSU5HOwotICAgICAgICBzaGFyZU1vZGUgPSBGSUxFX1NIQVJF
X1JFQUQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRmlsZU9wZW5Nb2RlOjpXcml0ZToKLSAg
ICAgICAgZGVzaXJlZEFjY2VzcyA9IEdFTkVSSUNfV1JJVEU7Ci0gICAgICAgIGNyZWF0aW9uRGlz
cG9zaXRpb24gPSBDUkVBVEVfQUxXQVlTOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0Ogot
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci0KLSAgICBTdHJpbmcgZGVzdGlu
YXRpb24gPSBwYXRoOwotICAgIHJldHVybiBDcmVhdGVGaWxlKHN0cmluZ1RvTnVsbFRlcm1pbmF0
ZWRXQ2hhcihkZXN0aW5hdGlvbikuZGF0YSgpLCBkZXNpcmVkQWNjZXNzLCBzaGFyZU1vZGUsIDAs
IGNyZWF0aW9uRGlzcG9zaXRpb24sIEZJTEVfQVRUUklCVVRFX05PUk1BTCwgMCk7Ci19Ci0KLXZv
aWQgY2xvc2VGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKQotewotICAgIGlmIChpc0hh
bmRsZVZhbGlkKGhhbmRsZSkpIHsKLSAgICAgICAgOjpDbG9zZUhhbmRsZShoYW5kbGUpOwotICAg
ICAgICBoYW5kbGUgPSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOwotICAgIH0KLX0KLQotbG9u
ZyBsb25nIHNlZWtGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGxvbmcgbG9uZyBvZmZz
ZXQsIEZpbGVTZWVrT3JpZ2luIG9yaWdpbikKLXsKLSAgICBEV09SRCBtb3ZlTWV0aG9kID0gRklM
RV9CRUdJTjsKLQotICAgIGlmIChvcmlnaW4gPT0gRmlsZVNlZWtPcmlnaW46OkN1cnJlbnQpCi0g
ICAgICAgIG1vdmVNZXRob2QgPSBGSUxFX0NVUlJFTlQ7Ci0gICAgZWxzZSBpZiAob3JpZ2luID09
IEZpbGVTZWVrT3JpZ2luOjpFbmQpCi0gICAgICAgIG1vdmVNZXRob2QgPSBGSUxFX0VORDsKLQot
ICAgIExBUkdFX0lOVEVHRVIgbGFyZ2VPZmZzZXQ7Ci0gICAgbGFyZ2VPZmZzZXQuUXVhZFBhcnQg
PSBvZmZzZXQ7Ci0KLSAgICBsYXJnZU9mZnNldC5Mb3dQYXJ0ID0gU2V0RmlsZVBvaW50ZXIoaGFu
ZGxlLCBsYXJnZU9mZnNldC5Mb3dQYXJ0LCAmbGFyZ2VPZmZzZXQuSGlnaFBhcnQsIG1vdmVNZXRo
b2QpOwotCi0gICAgaWYgKGxhcmdlT2Zmc2V0Lkxvd1BhcnQgPT0gSU5WQUxJRF9TRVRfRklMRV9Q
T0lOVEVSICYmIEdldExhc3RFcnJvcigpICE9IE5PX0VSUk9SKQotICAgICAgICByZXR1cm4gLTE7
Ci0KLSAgICByZXR1cm4gbGFyZ2VPZmZzZXQuUXVhZFBhcnQ7Ci19Ci0KLWludCB3cml0ZVRvRmls
ZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3Ro
KQotewotICAgIGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUpKQotICAgICAgICByZXR1cm4gLTE7
Ci0KLSAgICBEV09SRCBieXRlc1dyaXR0ZW47Ci0gICAgYm9vbCBzdWNjZXNzID0gV3JpdGVGaWxl
KGhhbmRsZSwgZGF0YSwgbGVuZ3RoLCAmYnl0ZXNXcml0dGVuLCAwKTsKLQotICAgIGlmICghc3Vj
Y2VzcykKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KGJ5
dGVzV3JpdHRlbik7Ci19Ci0KLWludCByZWFkRnJvbUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhh
bmRsZSwgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKLXsKLSAgICBpZiAoIWlzSGFuZGxlVmFsaWQo
aGFuZGxlKSkKLSAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgRFdPUkQgYnl0ZXNSZWFkOwotICAg
IGJvb2wgc3VjY2VzcyA9IDo6UmVhZEZpbGUoaGFuZGxlLCBkYXRhLCBsZW5ndGgsICZieXRlc1Jl
YWQsIDApOwotCi0gICAgaWYgKCFzdWNjZXNzKQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgcmV0
dXJuIHN0YXRpY19jYXN0PGludD4oYnl0ZXNSZWFkKTsKLX0KLQotYm9vbCBoYXJkTGlua09yQ29w
eUZpbGUoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb24pCi17
Ci0gICAgcmV0dXJuICEhOjpDb3B5RmlsZShzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoc291
cmNlKS5kYXRhKCksIHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihkZXN0aW5hdGlvbikuZGF0
YSgpLCBUUlVFKTsKLX0KLQotU3RyaW5nIGxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9y
eSgpCi17Ci0gICAgcmV0dXJuIGNhY2hlZFN0b3JhZ2VEaXJlY3RvcnkoQ1NJRExfTE9DQUxfQVBQ
REFUQSk7Ci19Ci0KLVN0cmluZyByb2FtaW5nVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgp
Ci17Ci0gICAgcmV0dXJuIGNhY2hlZFN0b3JhZ2VEaXJlY3RvcnkoQ1NJRExfQVBQREFUQSk7Ci19
Ci0KLVZlY3RvcjxTdHJpbmc+IGxpc3REaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXJlY3Rvcnks
IGNvbnN0IFN0cmluZyYgZmlsdGVyKQotewotICAgIFZlY3RvcjxTdHJpbmc+IGVudHJpZXM7Ci0K
LSAgICBQYXRoV2Fsa2VyIHdhbGtlcihkaXJlY3RvcnksIGZpbHRlcik7Ci0gICAgaWYgKCF3YWxr
ZXIuaXNWYWxpZCgpKQotICAgICAgICByZXR1cm4gZW50cmllczsKLQotICAgIGRvIHsKLSAgICAg
ICAgaWYgKHdhbGtlci5kYXRhKCkuZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX0RJ
UkVDVE9SWQotICAgICAgICAgICAgJiYgKCF3Y3NjbXAod2Fsa2VyLmRhdGEoKS5jRmlsZU5hbWUs
IEwiLiIpIHx8ICF3Y3NjbXAod2Fsa2VyLmRhdGEoKS5jRmlsZU5hbWUsIEwiLi4iKSkpCi0gICAg
ICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBlbnRyaWVzLmFwcGVuZChkaXJlY3RvcnkgKyAi
XFwiICsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVQ2hhcio+KHdhbGtlci5kYXRhKCkuY0ZpbGVO
YW1lKSk7Ci0gICAgfSB3aGlsZSAod2Fsa2VyLnN0ZXAoKSk7Ci0KLSAgICByZXR1cm4gZW50cmll
czsKLX0KLQotYm9vbCBnZXRWb2x1bWVGcmVlU3BhY2UoY29uc3QgU3RyaW5nJiwgdWludDY0X3Qm
KQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1PcHRp
b25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQotewot
ICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUoZnNGaWxlLmRhdGEoKSwgRmlsZU9wZW5Nb2RlOjpS
ZWFkKTsKLSAgICBpZiAoIWlzSGFuZGxlVmFsaWQoaGFuZGxlKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKLQotICAgIEJZX0hBTkRMRV9GSUxFX0lORk9STUFUSU9OIGZpbGVJbmZvcm1h
dGlvbiA9IHsgfTsKLSAgICBpZiAoITo6R2V0RmlsZUluZm9ybWF0aW9uQnlIYW5kbGUoaGFuZGxl
LCAmZmlsZUluZm9ybWF0aW9uKSkgewotICAgICAgICBjbG9zZUZpbGUoaGFuZGxlKTsKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICB9Ci0KLSAgICBjbG9zZUZpbGUoaGFuZGxlKTsK
LQotICAgIHJldHVybiBmaWxlSW5mb3JtYXRpb24uZHdWb2x1bWVTZXJpYWxOdW1iZXI7Ci19Ci0K
LVN0cmluZyByZWFsUGF0aChjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQotewotICAgIHJldHVybiBn
ZXRGaW5hbFBhdGhOYW1lKGZpbGVQYXRoKTsKLX0KLQotU3RyaW5nIGNyZWF0ZVRlbXBvcmFyeURp
cmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIGdlbmVyYXRlVGVtcG9yYXJ5UGF0aChbXShjb25zdCBT
dHJpbmcmIHByb3Bvc2VkUGF0aCkgewotICAgICAgICByZXR1cm4gbWFrZUFsbERpcmVjdG9yaWVz
KHByb3Bvc2VkUGF0aCk7Ci0gICAgfSk7Ci19Ci0KLWJvb2wgZGVsZXRlTm9uRW1wdHlEaXJlY3Rv
cnkoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnlQYXRoKQotewotICAgIFNIRklMRU9QU1RSVUNUIGRl
bGV0ZU9wZXJhdGlvbiA9IHsKLSAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgRk9fREVMRVRFLAot
ICAgICAgICBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoZGlyZWN0b3J5UGF0aCkuZGF0YSgp
LAotICAgICAgICBMIiIsCi0gICAgICAgIEZPRl9OT0NPTkZJUk1BVElPTiB8IEZPRl9OT0VSUk9S
VUkgfCBGT0ZfU0lMRU5ULAotICAgICAgICBmYWxzZSwKLSAgICAgICAgMCwKLSAgICAgICAgTCIi
Ci0gICAgfTsKLSAgICByZXR1cm4gIVNIRmlsZU9wZXJhdGlvbigmZGVsZXRlT3BlcmF0aW9uKTsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgRmlsZVN5c3RlbQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BhdGhXYWxrZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BhdGhXYWxrZXIuY3BwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBmMjA0MDdiMWNmZWE2MjRmM2ExNTY5YThmZDY3NjhhNWRlYmVkMzYz
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXRoV2Fsa2VyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDUy
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUGF0
aFdhbGtlci5oIgotCi0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0jaW5jbHVkZSA8
d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotUGF0aFdhbGtlcjo6UGF0aFdhbGtlcihjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgY29uc3Qg
U3RyaW5nJiBwYXR0ZXJuKQotewotICAgIFN0cmluZyBwYXRoID0gZGlyZWN0b3J5ICsgIlxcIiAr
IHBhdHRlcm47Ci0gICAgbV9oYW5kbGUgPSA6OkZpbmRGaXJzdEZpbGVXKHN0cmluZ1RvTnVsbFRl
cm1pbmF0ZWRXQ2hhcihwYXRoKS5kYXRhKCksICZtX2RhdGEpOwotfQotCi1QYXRoV2Fsa2VyOjp+
UGF0aFdhbGtlcigpCi17Ci0gICAgaWYgKCFpc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybjsKLSAg
ICA6OkZpbmRDbG9zZShtX2hhbmRsZSk7Ci19Ci0KLWJvb2wgUGF0aFdhbGtlcjo6c3RlcCgpCi17
Ci0gICAgcmV0dXJuIDo6RmluZE5leHRGaWxlVyhtX2hhbmRsZSwgJm1fZGF0YSk7Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9QYXRoV2Fsa2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGF0aFdhbGtl
ci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYzU5ZDY3MzE4MTFiOGNhMTU4N2E0
YTEyYTdkYTFlMWExNTkzZDg0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXRoV2Fsa2VyLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSA8V2lu
ZG93cy5oPgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlh
YmxlLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgUGF0aFdhbGtlciB7Ci0gICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoUGF0aFdhbGtlcik7Ci1wdWJsaWM6Ci0gICAgUGF0aFdhbGtl
cihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5LCBjb25zdCBXVEY6OlN0cmluZyYgcGF0dGVy
bik7Ci0gICAgflBhdGhXYWxrZXIoKTsKLQotICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0
dXJuIG1faGFuZGxlICE9IElOVkFMSURfSEFORExFX1ZBTFVFOyB9Ci0gICAgY29uc3QgV0lOMzJf
RklORF9EQVRBVyYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQotCi0gICAgYm9vbCBz
dGVwKCk7Ci0KLXByaXZhdGU6Ci0gICAgSEFORExFIG1faGFuZGxlOwotICAgIFdJTjMyX0ZJTkRf
REFUQVcgbV9kYXRhOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudURCLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVEQi5jcHAKaW5kZXggOWU2ZTRj
NTJkN2I5ODM4YTFmMDdiZGQ1OWY0MDlkODE2NWZlNTY2Ni4uZTU3MzBiMzBjY2YzZjAzZWVmZGZm
OWEzMzFjMDhlZDBlMjJlNThiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL1NlYXJjaFBvcHVwTWVudURCLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vU2VhcmNoUG9wdXBNZW51REIuY3BwCkBAIC0yNSw5ICsyNSw5IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiU2VhcmNoUG9wdXBNZW51REIuaCIKIAotI2luY2x1ZGUgIkZpbGVT
eXN0ZW0uaCIKICNpbmNsdWRlICJTUUxpdGVGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiU1FMaXRl
VHJhbnNhY3Rpb24uaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCmluZGV4
IDc2YzljNWM3OGQ1NmQzZThkOTdkNDIxZjRkZmFhNGFiMWJkOWVjYzAuLmM0ZmEzNTY3MGI5NTQ3
Njc2YjdjNGZiOWE4MTJiM2Q2ZTZlYzk5ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lLmNwcApAQCAtMjUsNyArMjUsNiBAQAogI2luY2x1ZGUgIkNvbnRyb2xTdGF0ZXMu
aCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZpbGVMaXN0LmgiCi0jaW5jbHVk
ZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgogI2luY2x1ZGUg
IkZsb2F0Um91bmRlZFJlY3QuaCIKICNpbmNsdWRlICJGb2N1c0NvbnRyb2xsZXIuaCIKQEAgLTQ1
LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJTcGluQnV0dG9uRWxlbWVudC5oIgogI2luY2x1ZGUgIlN0
cmluZ1RydW5jYXRvci5oIgogI2luY2x1ZGUgIlRleHRDb250cm9sSW5uZXJFbGVtZW50cy5oIgor
I2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVk
Lmg+CiAKICNpZiBFTkFCTEUoTUVURVJfRUxFTUVOVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWVHdGsuY3BwCmluZGV4IGI2OTZlYWM4ZmIxMDVlMmI3MDk2MjA2OTQ3Mzk3
M2UxM2ViOWZiNjYuLmIyNTk2NmNiNTMzMjc2ODU5ZWU4MTk2NzFhZDI1ZmRmNzdlMDNlYTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUd0ay5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lR3RrLmNwcApAQCAtMjcsNyAr
MjcsNiBAQAogCiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgogI2luY2x1ZGUgIkZpbGVM
aXN0LmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkZsb2F0Um91bmRlZFJl
Y3QuaCIKICNpbmNsdWRlICJGb250RGVzY3JpcHRpb24uaCIKICNpbmNsdWRlICJHUmVmUHRyR3Rr
LmgiCkBAIC01NSw2ICs1NCw3IEBACiAjaW5jbHVkZSA8Z2RrL2dkay5oPgogI2luY2x1ZGUgPGds
aWIuaD4KICNpbmNsdWRlIDxndGsvZ3RrLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4K
ICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1
ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwCmluZGV4IGVlYjk5ODVlNjJmNWM5YTM0ODI0M2U4
ZGRlOWVjY2MwYTliZGJmYjUuLjIxOTY1N2UxZjI0YWFiYTA1ODI1YTJhNjJiMDgwNGM3ZmJiM2Yz
MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmNwcApAQCAt
MjQsNyArMjQsNiBAQAogCiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgogI2luY2x1ZGUg
IkVsZW1lbnQuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiRm9udE1ldHJp
Y3MuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lU2VsZWN0aW9uLmgiCkBA
IC0zOCw2ICszNyw3IEBACiAjaW5jbHVkZSAiU3lzdGVtSW5mby5oIgogI2luY2x1ZGUgIlVzZXJB
Z2VudFN0eWxlU2hlZXRzLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUJ1bmRsZVdpbi5oIgorI2luY2x1
ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL1NvZnRMaW5raW5nLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9X
Q2hhclN0cmluZ0V4dHJhcy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcAppbmRleCA2MGVl
YjhjYzJjMGY0MTJjYTJiY2VkOTgyYWU5MjdmZmIxZDZhNDY4Li4xYWY0Mzc4OGZmZmJhYWE5MTJl
MWFkOTdiYmQ5OGIxNzJkZTNmMGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcApAQCAt
MjgsNyArMjgsNiBAQAogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCi0jaW5jbHVkZSAi
RmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJSZWdpc3RyYXRp
b25TdG9yZS5oIgogI2luY2x1ZGUgIlNRTGl0ZURhdGFiYXNlLmgiCkBAIC0zOSw2ICszOCw3IEBA
CiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhh
bmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuaD4KKyNpbmNsdWRlIDx3
dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1Njb3BlLmg+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuY3Bw
CmluZGV4IGMyMTBlY2FjOGE0NzQ2ZTQxNDBkNDA2NDJlMGMzNzBhMGU1YTdlZDAuLjEwNWRkMDI4
ODYwNzUwNzA5NzdjYWU4N2QyYzRhNGY0MGJiZmVmYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lz
dGVudFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuY3BwCkBAIC0zMyw5
ICszMyw5IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgi
CiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9GaWxlTW9uaXRvci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvS2V5ZWRDb2RpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJl
ZEJ1ZmZlci5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL1J1
bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmgKaW5kZXggNzVkMzFhNjFh
NGY3NDJmMzg3ZjliNWVhMmQ0ZjYwMjk0MzYxMjg3Yy4uZWI3OTQ0NzI1OTViNTZlZGQ2MjBiZTI1
NzZlZDIxODE4MDVkMGQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrRGF0YVRhc2tCbG9iLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrRGF0YVRhc2tCbG9iLmgKQEAgLTMzLDcgKzMzLDcgQEAKIAogI2luY2x1ZGUgIk5l
dHdvcmtEYXRhVGFzay5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN0cmVhbUNsaWVudC5oPgot
I2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVt
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEFzeW5jRmlsZVN0cmVhbTsKQEAgLTEx
Myw3ICsxMTMsNyBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fc2l6ZUl0ZW1Db3VudCB7IDAg
fTsKICAgICB1bnNpZ25lZCBtX3JlYWRJdGVtQ291bnQgeyAwIH07CiAgICAgYm9vbCBtX2ZpbGVP
cGVuZWQgeyBmYWxzZSB9OwotICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhh
bmRsZSBtX2Rvd25sb2FkRmlsZSB7IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9y
bUZpbGVIYW5kbGUgfTsKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgbV9kb3du
bG9hZEZpbGUgeyBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlIH07CiAKICAg
ICBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+IG1fZmlsZVJl
ZmVyZW5jZXM7CiAgICAgUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+IG1fc2FuZGJveEV4dGVuc2lv
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAK
aW5kZXggYzZhZGM5ZjZmZDNjZjFmNjViYWVmNTliZTYyYTg0OWNmYTM3YzFlZS4uZjk3MWY4MGIz
MWZjZmM1ZjMxMWE5ZGU4ZDVkMGRhOGE4MDRmMjAxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTE3NDYsNyArMTc0Niw3IEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OnNldENhY2hlTW9kZWwoQ2FjaGVNb2RlbCBjYWNoZU1vZGVsKQog
ICAgIHVuc2lnbmVkIHVybENhY2hlTWVtb3J5Q2FwYWNpdHkgPSAwOwogICAgIHVpbnQ2NF90IHVy
bENhY2hlRGlza0NhcGFjaXR5ID0gMDsKICAgICB1aW50NjRfdCBkaXNrRnJlZVNpemUgPSAwOwot
ICAgIGlmIChXZWJDb3JlOjpGaWxlU3lzdGVtOjpnZXRWb2x1bWVGcmVlU3BhY2UobV9kaXNrQ2Fj
aGVEaXJlY3RvcnksIGRpc2tGcmVlU2l6ZSkpIHsKKyAgICBpZiAoRmlsZVN5c3RlbTo6Z2V0Vm9s
dW1lRnJlZVNwYWNlKG1fZGlza0NhY2hlRGlyZWN0b3J5LCBkaXNrRnJlZVNpemUpKSB7CiAgICAg
ICAgIC8vIEFzIGEgZnVkZ2UgZmFjdG9yLCB1c2UgMTAwMCBpbnN0ZWFkIG9mIDEwMjQsIGluIGNh
c2UgdGhlIHJlcG9ydGVkIGJ5dGUKICAgICAgICAgLy8gY291bnQgZG9lc24ndCBhbGlnbiBleGFj
dGx5IHRvIGEgbWVnYWJ5dGUgYm91bmRhcnkuCiAgICAgICAgIGRpc2tGcmVlU2l6ZSAvPSBLQiAq
IDEwMDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0Nh
Y2hlU3RvcmFnZUVuZ2luZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKaW5kZXggZjE3ZmQ5ZjkyYmU1ZDJhNTA1NDVjMDc5OWUz
N2Q5YWUwY2YzZWZiZC4uMWUzZTExYjE5OGMzNTI3MjBhMDNmNTc5ZDI5OTQ3ZjliZWVmZGI1ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3Jh
Z2VFbmdpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2Fj
aGVTdG9yYWdlRW5naW5lLmNwcApAQCAtNTIsNyArNTIsNyBAQCBTdHJpbmcgRW5naW5lOjpjYWNo
ZXNSb290UGF0aChjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbikKICAgICAgICAg
cmV0dXJuIHsgfTsKIAogICAgIEtleSBrZXkob3JpZ2luLnRvcE9yaWdpbi50b1N0cmluZygpLCBv
cmlnaW4uY2xpZW50T3JpZ2luLnRvU3RyaW5nKCksIHsgfSwgeyB9LCBzYWx0KCkpOwotICAgIHJl
dHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocm9vdFBh
dGgoKSwga2V5Lmhhc2hBc1N0cmluZygpKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KHJvb3RQYXRoKCksIGtleS5oYXNoQXNTdHJpbmcoKSk7CiB9CiAK
IEVuZ2luZTo6fkVuZ2luZSgpCkBAIC0yOTEsOSArMjkxLDkgQEAgdm9pZCBFbmdpbmU6OmluaXRp
YWxpemUoQ29tcGxldGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spCiAgICAgaWYgKCFzaG91bGRDb21w
dXRlU2FsdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3RyaW5nIHNhbHRQYXRoID0gV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fcm9vdFBhdGgsICJzYWx0
Il9zKTsKKyAgICBTdHJpbmcgc2FsdFBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQobV9yb290UGF0aCwgInNhbHQiX3MpOwogICAgIG1faW9RdWV1ZS0+ZGlzcGF0Y2go
W3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIHNhbHRQYXRoID0gV1RGTW92ZShz
YWx0UGF0aCldICgpIG11dGFibGUgewotICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjptYWtl
QWxsRGlyZWN0b3JpZXMobV9yb290UGF0aCk7CisgICAgICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxE
aXJlY3RvcmllcyhtX3Jvb3RQYXRoKTsKICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNo
KFt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBzYWx0ID0gcmVhZE9yTWFrZVNh
bHQoc2FsdFBhdGgpXSgpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAg
ICAgICAgICAgICAgICByZXR1cm47CkBAIC0zODMsOSArMzgzLDkgQEAgdm9pZCBFbmdpbmU6Ondy
aXRlRmlsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBOZXR3b3JrQ2FjaGU6OkRhdGEmJiBkYXRh
LCBXZWJDb3IKICAgICBtX3BlbmRpbmdXcml0ZUNhbGxiYWNrcy5hZGQoKyttX3BlbmRpbmdDYWxs
YmFja3NDb3VudGVyLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgbV9pb1F1ZXVlLT5kaXNwYXRj
aChbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgaWRlbnRpZmllciA9IG1fcGVu
ZGluZ0NhbGxiYWNrc0NvdW50ZXIsIGRhdGEgPSBXVEZNb3ZlKGRhdGEpLCBmaWxlbmFtZSA9IGZp
bGVuYW1lLmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUgewogCi0gICAgICAgIFN0cmluZyBkaXJl
Y3RvcnlQYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShmaWxlbmFtZSk7
Ci0gICAgICAgIGlmICghV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhkaXJlY3RvcnlQ
YXRoKSkKLSAgICAgICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3Rvcmll
cyhkaXJlY3RvcnlQYXRoKTsKKyAgICAgICAgU3RyaW5nIGRpcmVjdG9yeVBhdGggPSBGaWxlU3lz
dGVtOjpkaXJlY3RvcnlOYW1lKGZpbGVuYW1lKTsKKyAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjpm
aWxlRXhpc3RzKGRpcmVjdG9yeVBhdGgpKQorICAgICAgICAgICAgRmlsZVN5c3RlbTo6bWFrZUFs
bERpcmVjdG9yaWVzKGRpcmVjdG9yeVBhdGgpOwogCiAgICAgICAgIGF1dG8gY2hhbm5lbCA9IElP
Q2hhbm5lbDo6b3BlbihmaWxlbmFtZSwgSU9DaGFubmVsOjpUeXBlOjpDcmVhdGUpOwogICAgICAg
ICBjaGFubmVsLT53cml0ZSgwLCBkYXRhLCBudWxscHRyLCBbdGhpcywgd2Vha1RoaXMgPSBXVEZN
b3ZlKHdlYWtUaGlzKSwgaWRlbnRpZmllcl0oaW50IGVycm9yKSBtdXRhYmxlIHsKQEAgLTQ0NSw3
ICs0NDUsNyBAQCB2b2lkIEVuZ2luZTo6cmVtb3ZlRmlsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1l
KQogICAgICAgICByZXR1cm47CiAKICAgICBtX2lvUXVldWUtPmRpc3BhdGNoKFtmaWxlbmFtZSA9
IGZpbGVuYW1lLmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUgewotICAgICAgICBXZWJDb3JlOjpG
aWxlU3lzdGVtOjpkZWxldGVGaWxlKGZpbGVuYW1lKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVs
ZXRlRmlsZShmaWxlbmFtZSk7CiAgICAgfSk7CiB9CiAKQEAgLTQ4Nyw4ICs0ODcsOCBAQCB2b2lk
IEVuZ2luZTo6ZmV0Y2hFbnRyaWVzKGJvb2wgc2hvdWxkQ29tcHV0ZVNpemUsIFdURjo6Q29tcGxl
dGlvbkhhbmRsZXI8dm9pZChWZQogICAgIH0KIAogICAgIGF1dG8gdGFza0NvdW50ZXIgPSBSZWFk
T3JpZ2luc1Rhc2tDb3VudGVyOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwot
ICAgIGZvciAoYXV0byYgZm9sZGVyUGF0aCA6IFdlYkNvcmU6OkZpbGVTeXN0ZW06Omxpc3REaXJl
Y3RvcnkobV9yb290UGF0aCwgIioiKSkgewotICAgICAgICBpZiAoIVdlYkNvcmU6OkZpbGVTeXN0
ZW06OmZpbGVJc0RpcmVjdG9yeShmb2xkZXJQYXRoLCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpTaG91
bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpObykpCisgICAgZm9yIChhdXRvJiBmb2xkZXJQYXRoIDog
RmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShtX3Jvb3RQYXRoLCAiKiIpKSB7CisgICAgICAgIGlm
ICghRmlsZVN5c3RlbTo6ZmlsZUlzRGlyZWN0b3J5KGZvbGRlclBhdGgsIEZpbGVTeXN0ZW06OlNo
b3VsZEZvbGxvd1N5bWJvbGljTGlua3M6Ok5vKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICBDYWNoZXM6OnJldHJpZXZlT3JpZ2luRnJvbURpcmVjdG9yeShmb2xkZXJQYXRoLCAqbV9p
b1F1ZXVlLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzaG91bGRDb21wdXRlU2l6
ZSwgdGFza0NvdW50ZXIgPSB0YXNrQ291bnRlci5jb3B5UmVmKCldIChhdXRvJiYgb3JpZ2luKSBt
dXRhYmxlIHsKICAgICAgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CkBAIC01MzEs
OCArNTMxLDggQEAgdm9pZCBFbmdpbmU6OmNsZWFyQWxsQ2FjaGVzRnJvbURpc2soQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGUKICAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOwogCiAgICAgbV9pb1F1ZXVlLT5kaXNwYXRjaChbcGF0aCA9IG1fcm9vdFBhdGgu
aXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgIGZvciAoYXV0byYgZmlsZW5hbWUgOiBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KHBhdGgsICIqIikpIHsKLSAgICAgICAgICAgIGlm
IChXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlSXNEaXJlY3RvcnkoZmlsZW5hbWUsIFdlYkNvcmU6
OkZpbGVTeXN0ZW06OlNob3VsZEZvbGxvd1N5bWJvbGljTGlua3M6Ok5vKSkKKyAgICAgICAgZm9y
IChhdXRvJiBmaWxlbmFtZSA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkocGF0aCwgIioiKSkg
eworICAgICAgICAgICAgaWYgKEZpbGVTeXN0ZW06OmZpbGVJc0RpcmVjdG9yeShmaWxlbmFtZSwg
RmlsZVN5c3RlbTo6U2hvdWxkRm9sbG93U3ltYm9saWNMaW5rczo6Tm8pKQogICAgICAgICAgICAg
ICAgIGRlbGV0ZURpcmVjdG9yeVJlY3Vyc2l2ZWx5KGZpbGVuYW1lKTsKICAgICAgICAgfQogICAg
ICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwpAQCAtNTYyLDggKzU2Miw4IEBAIHZvaWQgRW5naW5lOjpjbGVhckNhY2hlc0Zvck9yaWdpbkZy
b21EaXNrKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpCiAKICAgICBhdXRv
IGNhbGxiYWNrQWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKIAotICAgIGZvciAoYXV0byYgZm9sZGVyUGF0aCA6IFdlYkNv
cmU6OkZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobV9yb290UGF0aCwgIioiKSkgewotICAgICAg
ICBpZiAoIVdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVJc0RpcmVjdG9yeShmb2xkZXJQYXRoLCBX
ZWJDb3JlOjpGaWxlU3lzdGVtOjpTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpObykpCisgICAg
Zm9yIChhdXRvJiBmb2xkZXJQYXRoIDogRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShtX3Jvb3RQ
YXRoLCAiKiIpKSB7CisgICAgICAgIGlmICghRmlsZVN5c3RlbTo6ZmlsZUlzRGlyZWN0b3J5KGZv
bGRlclBhdGgsIEZpbGVTeXN0ZW06OlNob3VsZEZvbGxvd1N5bWJvbGljTGlua3M6Ok5vKSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBDYWNoZXM6OnJldHJpZXZlT3JpZ2luRnJvbURp
cmVjdG9yeShmb2xkZXJQYXRoLCAqbV9pb1F1ZXVlLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCBvcmlnaW4sIGNhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVn
YXRvci5jb3B5UmVmKCksIGZvbGRlclBhdGhdIChPcHRpb25hbDxXZWJDb3JlOjpDbGllbnRPcmln
aW4+JiYgZm9sZGVyT3JpZ2luKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICghZm9sZGVyT3Jp
Z2luKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwCmluZGV4IDE5MTM0NzBjZGQyMjBjZTNi
ZTk3NWRmOTkwMGVmMzUwZDA3MTc2M2MuLjFmNjA4Y2Y1MjVmOTk2YjI0ZWE0MTEzNjAwZThlMjlj
YjI4N2MyN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
Q2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAKQEAgLTQyLDEyICs0Miwx
MiBAQCB1c2luZyBuYW1lc3BhY2UgTmV0d29ya0NhY2hlOwogCiBzdGF0aWMgaW5saW5lIFN0cmlu
ZyBjYWNoZXNMaXN0RmlsZW5hbWUoY29uc3QgU3RyaW5nJiBjYWNoZXNSb290UGF0aCkKIHsKLSAg
ICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNh
Y2hlc1Jvb3RQYXRoLCAiY2FjaGVzbGlzdCJfcyk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChjYWNoZXNSb290UGF0aCwgImNhY2hlc2xpc3QiX3MpOwog
fQogCiBzdGF0aWMgaW5saW5lIFN0cmluZyBjYWNoZXNPcmlnaW5GaWxlbmFtZShjb25zdCBTdHJp
bmcmIGNhY2hlc1Jvb3RQYXRoKQogewotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY2FjaGVzUm9vdFBhdGgsICJvcmlnaW4iX3MpOworICAg
IHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY2FjaGVzUm9vdFBh
dGgsICJvcmlnaW4iX3MpOwogfQogCiBDYWNoZXM6On5DYWNoZXMoKQpAQCAtNTgsNyArNTgsNyBA
QCBDYWNoZXM6On5DYWNoZXMoKQogdm9pZCBDYWNoZXM6OnJldHJpZXZlT3JpZ2luRnJvbURpcmVj
dG9yeShjb25zdCBTdHJpbmcmIGZvbGRlclBhdGgsIFdvcmtRdWV1ZSYgcXVldWUsIFdURjo6Q29t
cGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3JlOjpDbGllbnRPcmlnaW4+JiYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIHF1ZXVlLmRpc3BhdGNoKFtjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBmaWxlbmFtZSA9IGNhY2hlc09yaWdp
bkZpbGVuYW1lKGZvbGRlclBhdGgpXSgpIG11dGFibGUgewotICAgICAgICBpZiAoIVdlYkNvcmU6
OkZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZmlsZW5hbWUpKSB7CisgICAgICAgIGlmICghRmlsZVN5
c3RlbTo6ZmlsZUV4aXN0cyhmaWxlbmFtZSkpIHsKICAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4o
KS5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51
bGxvcHQpOwogICAgICAgICAgICAgfSk7CkBAIC00MDgsNyArNDA4LDcgQEAgdm9pZCBDYWNoZXM6
OnJlYWRDYWNoZXNGcm9tRGlzayhXVEY6OkZ1bmN0aW9uPHZvaWQoRXhwZWN0ZWQ8VmVjdG9yPENh
Y2hlPiwgRXJyb3IKICAgICB9CiAKICAgICBhdXRvIGZpbGVuYW1lID0gY2FjaGVzTGlzdEZpbGVu
YW1lKG1fcm9vdFBhdGgpOwotICAgIGlmICghV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZUV4aXN0
cyhmaWxlbmFtZSkpIHsKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZmlsZW5hbWUp
KSB7CiAgICAgICAgIGNhbGxiYWNrKFZlY3RvcjxDYWNoZT4geyB9KTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlLmNwcAppbmRleCBmZDI3Y2YwNmZlNDMxZmQzODRjYTJmM2I3ZTQ5MWY2ZmFjMWRl
MDg2Li5iYTVjOGIyMzM4MTY1YjIzNjVkMDc2NTNhZWIxMTg4ZDc2ZjhhNjdkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCkBA
IC0zMiwxMyArMzIsMTMgQEAKICNpbmNsdWRlICJOZXR3b3JrQ2FjaGVTdG9yYWdlLmgiCiAjaW5j
bHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NhY2hlVmFsaWRhdGlv
bi5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
SFRUUEhlYWRlck5hbWVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Mb3dQb3dlck1vZGVOb3RpZmll
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNl
UmVzcG9uc2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgorI2luY2x1ZGUg
PHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgpAQCAtNTEs
NyArNTEsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiBuYW1lc3BhY2UgTmV0d29ya0NhY2hlIHsK
IAotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU6OkZpbGVTeXN0ZW07Cit1c2luZyBuYW1lc3BhY2Ug
RmlsZVN5c3RlbTsKIAogc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgcmVzb3VyY2VUeXBlKCkK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlQmxvYlN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVCbG9iU3RvcmFnZS5jcHAKaW5kZXggZjczYzUwZGExOTQ3OTMzNjVkNmY1
MWUwNjE0MWI1MjM3MjdlNzFlZS4uOTUzOGRhNjQxYjQyNzQwMDJiMjc5YWRhYTg3YzE1NDJkMzZh
MDI3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVCbG9iU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVCbG9iU3RvcmFnZS5jcHAKQEAgLTI4LDggKzI4LDggQEAKIAog
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmgi
Ci0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8ZmNudGwuaD4KKyNp
bmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5j
bHVkZSA8d3RmL1NIQTEuaD4KIApAQCAtNTcsMTUgKzU3LDE1IEBAIHZvaWQgQmxvYlN0b3JhZ2U6
OnN5bmNocm9uaXplKCkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAg
IFdlYkNvcmU6OkZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhibG9iRGlyZWN0b3J5UGF0
aCgpKTsKKyAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoYmxvYkRpcmVjdG9yeVBh
dGgoKSk7CiAKICAgICBtX2FwcHJveGltYXRlU2l6ZSA9IDA7CiAgICAgYXV0byBibG9iRGlyZWN0
b3J5ID0gYmxvYkRpcmVjdG9yeVBhdGgoKTsKICAgICB0cmF2ZXJzZURpcmVjdG9yeShibG9iRGly
ZWN0b3J5LCBbdGhpcywgJmJsb2JEaXJlY3RvcnldKGNvbnN0IFN0cmluZyYgbmFtZSwgRGlyZWN0
b3J5RW50cnlUeXBlIHR5cGUpIHsKICAgICAgICAgaWYgKHR5cGUgIT0gRGlyZWN0b3J5RW50cnlU
eXBlOjpGaWxlKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBhdXRvIHBhdGggPSBXZWJD
b3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoYmxvYkRpcmVjdG9yeSwg
bmFtZSk7Ci0gICAgICAgIGF1dG8gZmlsZVBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisgICAgICAgIGF1dG8gcGF0aCA9IEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChibG9iRGlyZWN0b3J5LCBuYW1lKTsKKyAgICAg
ICAgYXV0byBmaWxlUGF0aCA9IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihw
YXRoKTsKICAgICAgICAgc3RydWN0IHN0YXQgc3RhdDsKICAgICAgICAgOjpzdGF0KGZpbGVQYXRo
LmRhdGEoKSwgJnN0YXQpOwogICAgICAgICAvLyBObyBjbGllbnRzIGxlZnQgZm9yIHRoaXMgYmxv
Yi4KQEAgLTgxLDcgKzgxLDcgQEAgdm9pZCBCbG9iU3RvcmFnZTo6c3luY2hyb25pemUoKQogU3Ry
aW5nIEJsb2JTdG9yYWdlOjpibG9iUGF0aEZvckhhc2goY29uc3QgU0hBMTo6RGlnZXN0JiBoYXNo
KSBjb25zdAogewogICAgIGF1dG8gaGFzaEFzU3RyaW5nID0gU0hBMTo6aGV4RGlnZXN0KGhhc2gp
OwotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoYmxvYkRpcmVjdG9yeVBhdGgoKSwgU3RyaW5nOjpmcm9tVVRGOChoYXNoQXNTdHJpbmcpKTsK
KyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGJsb2JEaXJl
Y3RvcnlQYXRoKCksIFN0cmluZzo6ZnJvbVVURjgoaGFzaEFzU3RyaW5nKSk7CiB9CiAKIEJsb2JT
dG9yYWdlOjpCbG9iIEJsb2JTdG9yYWdlOjphZGQoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBE
YXRhJiBkYXRhKQpAQCAtOTMsOCArOTMsOCBAQCBCbG9iU3RvcmFnZTo6QmxvYiBCbG9iU3RvcmFn
ZTo6YWRkKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgRGF0YSYgZGF0YSkKICAgICBpZiAoZGF0
YS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB7IGRhdGEsIGhhc2ggfTsKIAotICAgIGF1dG8g
YmxvYlBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
YmxvYlBhdGhGb3JIYXNoKGhhc2gpKTsKLSAgICBhdXRvIGxpbmtQYXRoID0gV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGF1dG8gYmxvYlBh
dGggPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oYmxvYlBhdGhGb3JIYXNo
KGhhc2gpKTsKKyAgICBhdXRvIGxpbmtQYXRoID0gRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKHBhdGgpOwogICAgIHVubGluayhsaW5rUGF0aC5kYXRhKCkpOwogCiAgICAgYm9v
bCBibG9iRXhpc3RzID0gYWNjZXNzKGJsb2JQYXRoLmRhdGEoKSwgRl9PSykgIT0gLTE7CkBAIC0x
MjcsNyArMTI3LDcgQEAgQmxvYlN0b3JhZ2U6OkJsb2IgQmxvYlN0b3JhZ2U6OmdldChjb25zdCBT
dHJpbmcmIHBhdGgpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBh
dXRvIGxpbmtQYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKHBhdGgpOworICAgIGF1dG8gbGlua1BhdGggPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24ocGF0aCk7CiAgICAgYXV0byBkYXRhID0gbWFwRmlsZShsaW5rUGF0aC5kYXRh
KCkpOwogCiAgICAgcmV0dXJuIHsgZGF0YSwgY29tcHV0ZVNIQTEoZGF0YSwgbV9zYWx0KSB9OwpA
QCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQgQmxvYlN0b3JhZ2U6OnJlbW92ZShjb25zdCBTdHJpbmcm
IHBhdGgpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBhdXRvIGxp
bmtQYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBh
dGgpOworICAgIGF1dG8gbGlua1BhdGggPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24ocGF0aCk7CiAgICAgdW5saW5rKGxpbmtQYXRoLmRhdGEoKSk7CiB9CiAKQEAgLTE0NSw3
ICsxNDUsNyBAQCB1bnNpZ25lZCBCbG9iU3RvcmFnZTo6c2hhcmVDb3VudChjb25zdCBTdHJpbmcm
IHBhdGgpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBhdXRvIGxp
bmtQYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBh
dGgpOworICAgIGF1dG8gbGlua1BhdGggPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24ocGF0aCk7CiAgICAgc3RydWN0IHN0YXQgc3RhdDsKICAgICBpZiAoOjpzdGF0KGxpbmtQ
YXRoLmRhdGEoKSwgJnN0YXQpIDwgMCkKICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcApp
bmRleCA5ZTMxODk0M2Q3YzYxMzhjYWExYzFkYzMwZjNhMmYzNWYzMzAyOWYyLi4xYTMyYWE5YTBl
NTNiNDY5NTdhYThlYjNiYjIzODU2ZjBhODk5ZjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5jcHAKQEAgLTI2LDkg
KzI2LDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJOZXR3b3JrQ2FjaGVEYXRh
LmgiCiAKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxmY250bC5o
PgogI2luY2x1ZGUgPHd0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5oPgorI2luY2x1
ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKICNpZiAhT1MoV0lORE9XUykKICNpbmNsdWRlIDxzeXMv
bW1hbi5oPgpAQCAtMTU2LDcgKzE1Niw3IEBAIHN0YXRpYyBTYWx0IG1ha2VTYWx0KCkKIE9wdGlv
bmFsPFNhbHQ+IHJlYWRPck1ha2VTYWx0KGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICNpZiAhT1Mo
V0lORE9XUykKLSAgICBhdXRvIGNwYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGF1dG8gY3BhdGggPSBGaWxlU3lzdGVtOjpmaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAgICAgYXV0byBmZCA9IG9wZW4oY3BhdGguZGF0
YSgpLCBPX1JET05MWSwgMCk7CiAgICAgU2FsdCBzYWx0OwogICAgIGF1dG8gYnl0ZXNSZWFkID0g
cmVhZChmZCwgc2FsdC5kYXRhKCksIHNhbHQuc2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0u
Y3BwCmluZGV4IDI1YmVmN2Y5MmU4ZWIzNjZhOTRmNGJjZDM3OTgzYjE2YTlkZTM1MDguLmIwYjJl
NzE1ZTY1ZGQzYTkxM2NmNzBkNzAzNjVhNDUwYmJlYjk5NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lz
dGVtLmNwcApAQCAtMjcsOCArMjcsOCBAQAogI2luY2x1ZGUgIk5ldHdvcmtDYWNoZUZpbGVTeXN0
ZW0uaCIKIAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0
ZW0uaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lz
dGVtLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgogCkBAIC03MCw3ICs3MCw3IEBAIHN0YXRpYyBEaXJlY3RvcnlFbnRyeVR5cGUgZGly
ZWN0b3J5RW50cnlUeXBlKHVpbnQ4X3QgZHR5cGUpCiB2b2lkIHRyYXZlcnNlRGlyZWN0b3J5KGNv
bnN0IFN0cmluZyYgcGF0aCwgY29uc3QgRnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgRGly
ZWN0b3J5RW50cnlUeXBlKT4mIGZ1bmN0aW9uKQogewogI2lmICFPUyhXSU5ET1dTKQotICAgIERJ
UiogZGlyID0gb3BlbmRpcihXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24ocGF0aCkuZGF0YSgpKTsKKyAgICBESVIqIGRpciA9IG9wZW5kaXIoRmlsZVN5c3RlbTo6
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSk7CiAgICAgaWYgKCFkaXIpCiAg
ICAgICAgIHJldHVybjsKICAgICBkaXJlbnQqIGRwOwpAQCAtOTQsMTAgKzk0LDEwIEBAIHZvaWQg
dHJhdmVyc2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBGdW5jdGlvbjx2b2lk
IChjb25zdCBTdHJpbmcmLCBECiB2b2lkIGRlbGV0ZURpcmVjdG9yeVJlY3Vyc2l2ZWx5KGNvbnN0
IFN0cmluZyYgcGF0aCkKIHsKICAgICB0cmF2ZXJzZURpcmVjdG9yeShwYXRoLCBbJnBhdGhdKGNv
bnN0IFN0cmluZyYgbmFtZSwgRGlyZWN0b3J5RW50cnlUeXBlIHR5cGUpIHsKLSAgICAgICAgU3Ry
aW5nIGVudHJ5UGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChwYXRoLCBuYW1lKTsKKyAgICAgICAgU3RyaW5nIGVudHJ5UGF0aCA9IEZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXRoLCBuYW1lKTsKICAgICAgICAgc3dpdGNoICh0
eXBlKSB7CiAgICAgICAgIGNhc2UgRGlyZWN0b3J5RW50cnlUeXBlOjpGaWxlOgotICAgICAgICAg
ICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShlbnRyeVBhdGgpOworICAgICAgICAg
ICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShlbnRyeVBhdGgpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgRGlyZWN0b3J5RW50cnlUeXBlOjpEaXJlY3Rvcnk6CiAgICAgICAgICAg
ICBkZWxldGVEaXJlY3RvcnlSZWN1cnNpdmVseShlbnRyeVBhdGgpOwpAQCAtMTA1LDE5ICsxMDUs
MTkgQEAgdm9pZCBkZWxldGVEaXJlY3RvcnlSZWN1cnNpdmVseShjb25zdCBTdHJpbmcmIHBhdGgp
CiAgICAgICAgIC8vIFRoaXMgZG9lc24ndCBmb2xsb3cgc3ltbGlua3MuCiAgICAgICAgIH0KICAg
ICB9KTsKLSAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShwYXRo
KTsKKyAgICBGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShwYXRoKTsKIH0KIAogRmls
ZVRpbWVzIGZpbGVUaW1lcyhjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAjaWYgSEFWRShTVEFUX0JJ
UlRIVElNRSkKICAgICBzdHJ1Y3Qgc3RhdCBmaWxlSW5mbzsKLSAgICBpZiAoc3RhdChXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpLCAmZmls
ZUluZm8pKQorICAgIGlmIChzdGF0KEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihwYXRoKS5kYXRhKCksICZmaWxlSW5mbykpCiAgICAgICAgIHJldHVybiB7IH07CiAgICAgcmV0
dXJuIHsgV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKGZpbGVJbmZvLnN0X2JpcnRodGltZSksIFdh
bGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhmaWxlSW5mby5zdF9tdGltZSkgfTsKICNlbGlmIFVTRShT
T1VQKQogICAgIC8vIFRoZXJlJ3Mgbm8gc3RfYmlydGh0aW1lIGluIHNvbWUgb3BlcmF0aW5nIHN5
c3RlbXMgbGlrZSBMaW51eCwgc28gd2UgdXNlIHhhdHRycyB0byBzZXQvZ2V0IHRoZSBjcmVhdGlv
biB0aW1lLgotICAgIEdSZWZQdHI8R0ZpbGU+IGZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19m
b3JfcGF0aChXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0
aCkuZGF0YSgpKSk7CisgICAgR1JlZlB0cjxHRmlsZT4gZmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVf
bmV3X2Zvcl9wYXRoKEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5k
YXRhKCkpKTsKICAgICBHUmVmUHRyPEdGaWxlSW5mbz4gZmlsZUluZm8gPSBhZG9wdEdSZWYoZ19m
aWxlX3F1ZXJ5X2luZm8oZmlsZS5nZXQoKSwgInhhdHRyOjpiaXJ0aHRpbWUsdGltZTo6bW9kaWZp
ZWQiLCBHX0ZJTEVfUVVFUllfSU5GT19OT05FLCBudWxscHRyLCBudWxscHRyKSk7CiAgICAgaWYg
KCFmaWxlSW5mbykKICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lk
IHVwZGF0ZUZpbGVNb2RpZmljYXRpb25UaW1lSWZOZWVkZWQoY29uc3QgU3RyaW5nJiBwYXRoKQog
ICAgIH0KICNpZiAhT1MoV0lORE9XUykKICAgICAvLyBUaGlzIHJlYWxseSB1cGRhdGVzIGJvdGgg
dGhlIGFjY2VzcyB0aW1lIGFuZCB0aGUgbW9kaWZpY2F0aW9uIHRpbWUuCi0gICAgdXRpbWVzKFdl
YkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCks
IG51bGxwdHIpOworICAgIHV0aW1lcyhGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24ocGF0aCkuZGF0YSgpLCBudWxscHRyKTsKICNlbmRpZgogfQogCkBAIC0xNTYsNyArMTU2LDcg
QEAgYm9vbCBpc1NhZmVUb1VzZU1lbW9yeU1hcEZvclBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKQog
ICAgIGF0dHJsaXN0IGF0dHJMaXN0ID0geyB9OwogICAgIGF0dHJMaXN0LmJpdG1hcGNvdW50ID0g
QVRUUl9CSVRfTUFQX0NPVU5UOwogICAgIGF0dHJMaXN0LmNvbW1vbmF0dHIgPSBBVFRSX0NNTl9E
QVRBX1BST1RFQ1RfRkxBR1M7Ci0gICAgaW50MzJfdCBlcnJvciA9IGdldGF0dHJsaXN0KFdlYkNv
cmU6OkZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCksICZh
dHRyTGlzdCwgJmF0dHJCdWZmZXIsIHNpemVvZihhdHRyQnVmZmVyKSwgRlNPUFRfTk9GT0xMT1cp
OworICAgIGludDMyX3QgZXJyb3IgPSBnZXRhdHRybGlzdChGaWxlU3lzdGVtOjpmaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpLCAmYXR0ckxpc3QsICZhdHRyQnVmZmVyLCBzaXpl
b2YoYXR0ckJ1ZmZlciksIEZTT1BUX05PRk9MTE9XKTsKICAgICBpZiAoZXJyb3IpIHsKICAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIlVuYWJsZSB0byBnZXQgY2FjaGUgZGlyZWN0
b3J5IHByb3RlY3Rpb24gY2xhc3MsIGRpc2FibGluZyB1c2Ugb2Ygc2hhcmVkIG1hcHBlZCBtZW1v
cnkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uaAppbmRleCA3
ZGNjZTZjNGMzNjcyOGU5MzE1ODMzYTUzMjliZDU2ZDVjNDEyYjhhLi4xODMxYTM1MWM5YjBmZjUw
NWRmOWFkYzdmN2MwM2FmNzAxZDZjODgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uaApAQCAtMjUs
NyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3Rl
bS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
bmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbENvY29hLm1tIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxDb2NvYS5tbQpp
bmRleCAzNjliY2Y5NzNmMmRjZWUwYTNkNDM5NjM0NTM3MGI2NDYyMWU5ZjA4Li5jNjUyMTY0Y2Ex
ODhhMDdkYTU3YmNkZTc1ZjNhMjI1MmUxODJmMDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbENvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVs
Q29jb2EubW0KQEAgLTQxLDcgKzQxLDcgQEAgSU9DaGFubmVsOjpJT0NoYW5uZWwoY29uc3QgU3Ry
aW5nJiBmaWxlUGF0aCwgVHlwZSB0eXBlKQogICAgIDogbV9wYXRoKGZpbGVQYXRoKQogICAgICwg
bV90eXBlKHR5cGUpCiB7Ci0gICAgYXV0byBwYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6Zmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVQYXRoKTsKKyAgICBhdXRvIHBhdGggPSBGaWxlU3lz
dGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZVBhdGgpOwogICAgIGludCBvZmxhZzsK
ICAgICBtb2RlX3QgbW9kZTsKICAgICBib29sIHVzZUxvd0lPUHJpb3JpdHkgPSBmYWxzZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
SU9DaGFubmVsU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZUlPQ2hhbm5lbFNvdXAuY3BwCmluZGV4IDUzOTJjNzkwNTY5ZmQ2NjU3YTIxYTI2
MjBjYjA1MWVmYmVlZjA0NTkuLmI1NmY5NjU1MzEyY2RhZDBjMTA4ZGNjYzZlZjE3Mjk5NWFlZDFh
NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlSU9DaGFubmVsU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxTb3VwLmNwcApAQCAtNDEsNyArNDEsNyBAQCBJ
T0NoYW5uZWw6OklPQ2hhbm5lbChjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBUeXBlIHR5cGUpCiAg
ICAgOiBtX3BhdGgoZmlsZVBhdGgpCiAgICAgLCBtX3R5cGUodHlwZSkKIHsKLSAgICBhdXRvIHBh
dGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZVBh
dGgpOworICAgIGF1dG8gcGF0aCA9IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihmaWxlUGF0aCk7CiAgICAgR1JlZlB0cjxHRmlsZT4gZmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVf
bmV3X2Zvcl9wYXRoKHBhdGguZGF0YSgpKSk7CiAgICAgc3dpdGNoIChtX3R5cGUpIHsKICAgICBj
YXNlIFR5cGU6OkNyZWF0ZTogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RhdGlzdGljcy5jcHAKaW5kZXggYjRhMTMx
NGViNGIxNWVlMDMzMmY3NGU5MjFlMmZjODcxOTA2NGMzNy4uNjFiZWYxZTExYzNjZjgzNzVmNzM5
MjViNzIzYjkxNmZiMzFlYjM3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0YXRpc3RpY3MuY3BwCkBAIC03Nyw3
ICs3Nyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTdGF0aXN0aWNzPiBTdGF0aXN0aWNzOjpvcGVuKENh
Y2hlJiBjYWNoZSwgY29uc3QgU3RyaW5nJiBjYWNoZVBhCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6
OmlzTWFpbigpKTsKIAotICAgIFN0cmluZyBkYXRhYmFzZVBhdGggPSBXZWJDb3JlOjpGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY2FjaGVQYXRoLCBTdGF0aXN0aWNzRGF0YWJh
c2VOYW1lKTsKKyAgICBTdHJpbmcgZGF0YWJhc2VQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KGNhY2hlUGF0aCwgU3RhdGlzdGljc0RhdGFiYXNlTmFtZSk7CiAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U3RhdGlzdGljcz4oY2FjaGUsIGRhdGFiYXNlUGF0aCk7
CiB9CiAKQEAgLTk4LDcgKzk4LDcgQEAgdm9pZCBTdGF0aXN0aWNzOjppbml0aWFsaXplKGNvbnN0
IFN0cmluZyYgZGF0YWJhc2VQYXRoKQogICAgIHNlcmlhbEJhY2tncm91bmRJT1F1ZXVlKCkuZGlz
cGF0Y2goW3RoaXMsIGRhdGFiYXNlUGF0aCA9IGRhdGFiYXNlUGF0aC5pc29sYXRlZENvcHkoKSwg
bmV0d29ya0NhY2hlUGF0aCA9IG1fY2FjaGUucmVjb3Jkc1BhdGgoKSwgc3RhcnRUaW1lXSB7CiAg
ICAgICAgIFdlYkNvcmU6OlNRTGl0ZVRyYW5zYWN0aW9uSW5Qcm9ncmVzc0F1dG9Db3VudGVyIHRy
YW5zYWN0aW9uQ291bnRlcjsKIAotICAgICAgICBpZiAoIVdlYkNvcmU6OkZpbGVTeXN0ZW06Om1h
a2VBbGxEaXJlY3RvcmllcyhXZWJDb3JlOjpGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKGRhdGFi
YXNlUGF0aCkpKQorICAgICAgICBpZiAoIUZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhG
aWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKGRhdGFiYXNlUGF0aCkpKQogICAgICAgICAgICAgcmV0
dXJuOwogCiAgICAgICAgIExPRyhOZXR3b3JrQ2FjaGUsICIoTmV0d29ya1Byb2Nlc3MpIE9wZW5p
bmcgbmV0d29yayBjYWNoZSBzdGF0aXN0aWNzIGRhdGFiYXNlIGF0ICVzLi4uIiwgZGF0YWJhc2VQ
YXRoLnV0ZjgoKS5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKaW5kZXggNGVhNzQzMGZhMjA0
NGU5MDE0YTg5OTA0ZDViYmMxZWI2NWI3OWNjNi4uYzI2YWExYjk2YzcxM2E4MDAzN2ZkMWM1Nzg2
NWRiOTcyYjY0YWVlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCkBAIC0xNDUsMjkgKzE0NSwyOSBA
QCBwdWJsaWM6CiBzdGF0aWMgU3RyaW5nIG1ha2VWZXJzaW9uZWREaXJlY3RvcnlQYXRoKGNvbnN0
IFN0cmluZyYgYmFzZURpcmVjdG9yeVBhdGgpCiB7CiAgICAgU3RyaW5nIHZlcnNpb25TdWJkaXJl
Y3RvcnkgPSB2ZXJzaW9uRGlyZWN0b3J5UHJlZml4ICsgU3RyaW5nOjpudW1iZXIoU3RvcmFnZTo6
dmVyc2lvbik7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChiYXNlRGlyZWN0b3J5UGF0aCwgdmVyc2lvblN1YmRpcmVjdG9yeSk7CisgICAg
cmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChiYXNlRGlyZWN0b3J5
UGF0aCwgdmVyc2lvblN1YmRpcmVjdG9yeSk7CiB9CiAKIHN0YXRpYyBTdHJpbmcgbWFrZVJlY29y
ZHNEaXJlY3RvcnlQYXRoKGNvbnN0IFN0cmluZyYgYmFzZURpcmVjdG9yeVBhdGgpCiB7Ci0gICAg
cmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtYWtl
VmVyc2lvbmVkRGlyZWN0b3J5UGF0aChiYXNlRGlyZWN0b3J5UGF0aCksIHJlY29yZHNEaXJlY3Rv
cnlOYW1lKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KG1ha2VWZXJzaW9uZWREaXJlY3RvcnlQYXRoKGJhc2VEaXJlY3RvcnlQYXRoKSwgcmVjb3Jkc0Rp
cmVjdG9yeU5hbWUpOwogfQogCiBzdGF0aWMgU3RyaW5nIG1ha2VCbG9iRGlyZWN0b3J5UGF0aChj
b25zdCBTdHJpbmcmIGJhc2VEaXJlY3RvcnlQYXRoKQogewotICAgIHJldHVybiBXZWJDb3JlOjpG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobWFrZVZlcnNpb25lZERpcmVjdG9y
eVBhdGgoYmFzZURpcmVjdG9yeVBhdGgpLCBibG9ic0RpcmVjdG9yeU5hbWUpOworICAgIHJldHVy
biBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobWFrZVZlcnNpb25lZERpcmVj
dG9yeVBhdGgoYmFzZURpcmVjdG9yeVBhdGgpLCBibG9ic0RpcmVjdG9yeU5hbWUpOwogfQogCiBz
dGF0aWMgU3RyaW5nIG1ha2VTYWx0RmlsZVBhdGgoY29uc3QgU3RyaW5nJiBiYXNlRGlyZWN0b3J5
UGF0aCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KG1ha2VWZXJzaW9uZWREaXJlY3RvcnlQYXRoKGJhc2VEaXJlY3RvcnlQYXRoKSwg
c2FsdEZpbGVOYW1lKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KG1ha2VWZXJzaW9uZWREaXJlY3RvcnlQYXRoKGJhc2VEaXJlY3RvcnlQYXRoKSwgc2Fs
dEZpbGVOYW1lKTsKIH0KIAogUmVmUHRyPFN0b3JhZ2U+IFN0b3JhZ2U6Om9wZW4oY29uc3QgU3Ry
aW5nJiBjYWNoZVBhdGgsIE1vZGUgbW9kZSkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWlu
KCkpOwogCi0gICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMo
bWFrZVZlcnNpb25lZERpcmVjdG9yeVBhdGgoY2FjaGVQYXRoKSkpCisgICAgaWYgKCFGaWxlU3lz
dGVtOjptYWtlQWxsRGlyZWN0b3JpZXMobWFrZVZlcnNpb25lZERpcmVjdG9yeVBhdGgoY2FjaGVQ
YXRoKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGF1dG8gc2FsdCA9IHJlYWRPck1h
a2VTYWx0KG1ha2VTYWx0RmlsZVBhdGgoY2FjaGVQYXRoKSk7CiAgICAgaWYgKCFzYWx0KQpAQCAt
MTgwLDEzICsxODAsMTMgQEAgdm9pZCB0cmF2ZXJzZVJlY29yZHNGaWxlcyhjb25zdCBTdHJpbmcm
IHJlY29yZHNQYXRoLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkVHlwZSwKICAgICB0cmF2ZXJzZURp
cmVjdG9yeShyZWNvcmRzUGF0aCwgWyZdKGNvbnN0IFN0cmluZyYgcGFydGl0aW9uTmFtZSwgRGly
ZWN0b3J5RW50cnlUeXBlIGVudHJ5VHlwZSkgewogICAgICAgICBpZiAoZW50cnlUeXBlICE9IERp
cmVjdG9yeUVudHJ5VHlwZTo6RGlyZWN0b3J5KQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICBTdHJpbmcgcGFydGl0aW9uUGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChyZWNvcmRzUGF0aCwgcGFydGl0aW9uTmFtZSk7CisgICAgICAgIFN0cmlu
ZyBwYXJ0aXRpb25QYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJl
Y29yZHNQYXRoLCBwYXJ0aXRpb25OYW1lKTsKICAgICAgICAgdHJhdmVyc2VEaXJlY3RvcnkocGFy
dGl0aW9uUGF0aCwgWyZdKGNvbnN0IFN0cmluZyYgYWN0dWFsVHlwZSwgRGlyZWN0b3J5RW50cnlU
eXBlIGVudHJ5VHlwZSkgewogICAgICAgICAgICAgaWYgKGVudHJ5VHlwZSAhPSBEaXJlY3RvcnlF
bnRyeVR5cGU6OkRpcmVjdG9yeSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICBpZiAoIWV4cGVjdGVkVHlwZS5pc0VtcHR5KCkgJiYgZXhwZWN0ZWRUeXBlICE9IGFjdHVhbFR5
cGUpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgU3RyaW5nIHJlY29yZERp
cmVjdG9yeVBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQocGFydGl0aW9uUGF0aCwgYWN0dWFsVHlwZSk7CisgICAgICAgICAgICBTdHJpbmcgcmVjb3Jk
RGlyZWN0b3J5UGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXJ0
aXRpb25QYXRoLCBhY3R1YWxUeXBlKTsKICAgICAgICAgICAgIHRyYXZlcnNlRGlyZWN0b3J5KHJl
Y29yZERpcmVjdG9yeVBhdGgsIFsmZnVuY3Rpb24sICZyZWNvcmREaXJlY3RvcnlQYXRoLCAmYWN0
dWFsVHlwZV0oY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgRGlyZWN0b3J5RW50cnlUeXBlIGVudHJ5
VHlwZSkgewogICAgICAgICAgICAgICAgIGlmIChlbnRyeVR5cGUgIT0gRGlyZWN0b3J5RW50cnlU
eXBlOjpGaWxlIHx8IGZpbGVOYW1lLmxlbmd0aCgpIDwgS2V5OjpoYXNoU3RyaW5nTGVuZ3RoKCkp
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTIwNiwxOCArMjA2LDE4IEBAIHN0YXRp
YyB2b2lkIGRlbGV0ZUVtcHR5UmVjb3Jkc0RpcmVjdG9yaWVzKGNvbnN0IFN0cmluZyYgcmVjb3Jk
c1BhdGgpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgLy8gRGVsZXRlIFt0eXBlXSBz
dWItZm9sZGVycy4KLSAgICAgICAgU3RyaW5nIHBhcnRpdGlvblBhdGggPSBXZWJDb3JlOjpGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3Jkc1BhdGgsIHBhcnRpdGlvbk5h
bWUpOworICAgICAgICBTdHJpbmcgcGFydGl0aW9uUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChyZWNvcmRzUGF0aCwgcGFydGl0aW9uTmFtZSk7CiAgICAgICAgIHRy
YXZlcnNlRGlyZWN0b3J5KHBhcnRpdGlvblBhdGgsIFsmcGFydGl0aW9uUGF0aF0oY29uc3QgU3Ry
aW5nJiBzdWJkaXJOYW1lLCBEaXJlY3RvcnlFbnRyeVR5cGUgZW50cnlUeXBlKSB7CiAgICAgICAg
ICAgICBpZiAoZW50cnlUeXBlICE9IERpcmVjdG9yeUVudHJ5VHlwZTo6RGlyZWN0b3J5KQogICAg
ICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgLy8gTGV0IHN5c3RlbSBmaWd1cmUg
b3V0IGlmIGl0IGlzIHJlYWxseSBlbXB0eS4KLSAgICAgICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0
ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChwYXJ0aXRpb25QYXRoLCBzdWJkaXJOYW1lKSk7CisgICAgICAgICAgICBG
aWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQocGFydGl0aW9uUGF0aCwgc3ViZGlyTmFtZSkpOwogICAgICAgICB9KTsKIAog
ICAgICAgICAvLyBEZWxldGUgW1BhcnRpdGlvbl0gZm9sZGVycy4KICAgICAgICAgLy8gTGV0IHN5
c3RlbSBmaWd1cmUgb3V0IGlmIGl0IGlzIHJlYWxseSBlbXB0eS4KLSAgICAgICAgV2ViQ29yZTo6
RmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkoV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZHNQYXRoLCBwYXJ0aXRpb25OYW1lKSk7CisgICAg
ICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChyZWNvcmRzUGF0aCwgcGFydGl0aW9uTmFtZSkpOwogICAgIH0pOwog
fQogCkBAIC0zMDAsMTEgKzMwMCwxMSBAQCB2b2lkIFN0b3JhZ2U6OnN5bmNocm9uaXplKCkKIAog
ICAgICAgICBTdHJpbmcgYW55VHlwZTsKICAgICAgICAgdHJhdmVyc2VSZWNvcmRzRmlsZXMocmVj
b3Jkc1BhdGgoKSwgYW55VHlwZSwgWyZdKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0
cmluZyYgaGFzaFN0cmluZywgY29uc3QgU3RyaW5nJiB0eXBlLCBib29sIGlzQmxvYiwgY29uc3Qg
U3RyaW5nJiByZWNvcmREaXJlY3RvcnlQYXRoKSB7Ci0gICAgICAgICAgICBhdXRvIGZpbGVQYXRo
ID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZERp
cmVjdG9yeVBhdGgsIGZpbGVOYW1lKTsKKyAgICAgICAgICAgIGF1dG8gZmlsZVBhdGggPSBGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3JkRGlyZWN0b3J5UGF0aCwgZmls
ZU5hbWUpOwogCiAgICAgICAgICAgICBLZXk6Okhhc2hUeXBlIGhhc2g7CiAgICAgICAgICAgICBp
ZiAoIUtleTo6c3RyaW5nVG9IYXNoKGhhc2hTdHJpbmcsIGhhc2gpKSB7Ci0gICAgICAgICAgICAg
ICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShmaWxlUGF0aCk7CisgICAgICAgICAg
ICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShmaWxlUGF0aCk7CiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgfQogCkBAIC0zMTgsNyArMzE4LDcgQEAgdm9pZCBTdG9yYWdl
OjpzeW5jaHJvbml6ZSgpCiAKICAgICAgICAgICAgIGlmIChzaG91bGRDb21wdXRlRXhhY3RSZWNv
cmRzU2l6ZSkgewogICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBmaWxlU2l6ZSA9IDA7Ci0gICAg
ICAgICAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6Z2V0RmlsZVNpemUoZmlsZVBhdGgsIGZp
bGVTaXplKTsKKyAgICAgICAgICAgICAgICBGaWxlU3lzdGVtOjpnZXRGaWxlU2l6ZShmaWxlUGF0
aCwgZmlsZVNpemUpOwogICAgICAgICAgICAgICAgIHJlY29yZHNTaXplICs9IGZpbGVTaXplOwog
ICAgICAgICAgICAgfQogCkBAIC0zODEsMTIgKzM4MSwxMiBAQCBib29sIFN0b3JhZ2U6Om1heUNv
bnRhaW5CbG9iKGNvbnN0IEtleSYga2V5KSBjb25zdAogU3RyaW5nIFN0b3JhZ2U6OnJlY29yZERp
cmVjdG9yeVBhdGhGb3JLZXkoY29uc3QgS2V5JiBrZXkpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFr
ZXkudHlwZSgpLmlzRW1wdHkoKSk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQocmVjb3Jkc1BhdGgoKSwga2V5LnBhcnRpdGlvbkhhc2hBc1N0cmluZygpKSwg
a2V5LnR5cGUoKSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3Jkc1BhdGgoKSwg
a2V5LnBhcnRpdGlvbkhhc2hBc1N0cmluZygpKSwga2V5LnR5cGUoKSk7CiB9CiAKIFN0cmluZyBT
dG9yYWdlOjpyZWNvcmRQYXRoRm9yS2V5KGNvbnN0IEtleSYga2V5KSBjb25zdAogewotICAgIHJl
dHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3Jk
RGlyZWN0b3J5UGF0aEZvcktleShrZXkpLCBrZXkuaGFzaEFzU3RyaW5nKCkpOworICAgIHJldHVy
biBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3JkRGlyZWN0b3J5UGF0
aEZvcktleShrZXkpLCBrZXkuaGFzaEFzU3RyaW5nKCkpOwogfQogCiBzdGF0aWMgU3RyaW5nIGJs
b2JQYXRoRm9yUmVjb3JkUGF0aChjb25zdCBTdHJpbmcmIHJlY29yZFBhdGgpCkBAIC02MjksNyAr
NjI5LDcgQEAgdm9pZCBTdG9yYWdlOjpkZWxldGVGaWxlcyhjb25zdCBLZXkmIGtleSkKIHsKICAg
ICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06
OmRlbGV0ZUZpbGUocmVjb3JkUGF0aEZvcktleShrZXkpKTsKKyAgICBGaWxlU3lzdGVtOjpkZWxl
dGVGaWxlKHJlY29yZFBhdGhGb3JLZXkoa2V5KSk7CiAgICAgbV9ibG9iU3RvcmFnZS5yZW1vdmUo
YmxvYlBhdGhGb3JLZXkoa2V5KSk7CiB9CiAKQEAgLTgwOSw3ICs4MDksNyBAQCB2b2lkIFN0b3Jh
Z2U6OmRpc3BhdGNoV3JpdGVPcGVyYXRpb24oc3RkOjp1bmlxdWVfcHRyPFdyaXRlT3BlcmF0aW9u
PiB3cml0ZU9wZXJhdAogICAgICAgICBhdXRvIHJlY29yZERpcmVjdG9yUGF0aCA9IHJlY29yZERp
cmVjdG9yeVBhdGhGb3JLZXkod3JpdGVPcGVyYXRpb24ucmVjb3JkLmtleSk7CiAgICAgICAgIGF1
dG8gcmVjb3JkUGF0aCA9IHJlY29yZFBhdGhGb3JLZXkod3JpdGVPcGVyYXRpb24ucmVjb3JkLmtl
eSk7CiAKLSAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKHJl
Y29yZERpcmVjdG9yUGF0aCk7CisgICAgICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3Rvcmll
cyhyZWNvcmREaXJlY3RvclBhdGgpOwogCiAgICAgICAgICsrd3JpdGVPcGVyYXRpb24uYWN0aXZl
Q291bnQ7CiAKQEAgLTkxNyw3ICs5MTcsNyBAQCB2b2lkIFN0b3JhZ2U6OnRyYXZlcnNlKGNvbnN0
IFN0cmluZyYgdHlwZSwgT3B0aW9uU2V0PFRyYXZlcnNlRmxhZz4gZmxhZ3MsIFRyYXZlcgogICAg
ICAgICAgICAgaWYgKGlzQmxvYikKICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAg
ICAgIGF1dG8gcmVjb3JkUGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChyZWNvcmREaXJlY3RvcnlQYXRoLCBmaWxlTmFtZSk7CisgICAgICAgICAgICBh
dXRvIHJlY29yZFBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVj
b3JkRGlyZWN0b3J5UGF0aCwgZmlsZU5hbWUpOwogCiAgICAgICAgICAgICBkb3VibGUgd29ydGgg
PSAtMTsKICAgICAgICAgICAgIGlmICh0cmF2ZXJzZU9wZXJhdGlvbi5mbGFncyAmIFRyYXZlcnNl
RmxhZzo6Q29tcHV0ZVdvcnRoKQpAQCAtMTAwOSwxMyArMTAwOSwxMyBAQCB2b2lkIFN0b3JhZ2U6
OmNsZWFyKGNvbnN0IFN0cmluZyYgdHlwZSwgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZVRpbWUsIENv
bXBsZXRpb25IYQogICAgIGlvUXVldWUoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBtb2RpZmllZFNpbmNlVGltZSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgdHlwZSA9IHR5cGUuaXNvbGF0ZWRDb3B5KCldICgp
IG11dGFibGUgewogICAgICAgICBhdXRvIHJlY29yZHNQYXRoID0gdGhpcy0+cmVjb3Jkc1BhdGgo
KTsKICAgICAgICAgdHJhdmVyc2VSZWNvcmRzRmlsZXMocmVjb3Jkc1BhdGgsIHR5cGUsIFttb2Rp
ZmllZFNpbmNlVGltZV0oY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBoYXNo
U3RyaW5nLCBjb25zdCBTdHJpbmcmIHR5cGUsIGJvb2wgaXNCbG9iLCBjb25zdCBTdHJpbmcmIHJl
Y29yZERpcmVjdG9yeVBhdGgpIHsKLSAgICAgICAgICAgIGF1dG8gZmlsZVBhdGggPSBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3JkRGlyZWN0b3J5UGF0
aCwgZmlsZU5hbWUpOworICAgICAgICAgICAgYXV0byBmaWxlUGF0aCA9IEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmREaXJlY3RvcnlQYXRoLCBmaWxlTmFtZSk7CiAg
ICAgICAgICAgICBpZiAobW9kaWZpZWRTaW5jZVRpbWUgPiAtV2FsbFRpbWU6OmluZmluaXR5KCkp
IHsKICAgICAgICAgICAgICAgICBhdXRvIHRpbWVzID0gZmlsZVRpbWVzKGZpbGVQYXRoKTsKICAg
ICAgICAgICAgICAgICBpZiAodGltZXMubW9kaWZpY2F0aW9uIDwgbW9kaWZpZWRTaW5jZVRpbWUp
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZmlsZVBhdGgpOworICAgICAgICAgICAg
RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShmaWxlUGF0aCk7CiAgICAgICAgIH0pOwogCiAgICAgICAg
IGRlbGV0ZUVtcHR5UmVjb3Jkc0RpcmVjdG9yaWVzKHJlY29yZHNQYXRoKTsKQEAgLTEwODksNyAr
MTA4OSw3IEBAIHZvaWQgU3RvcmFnZTo6c2hyaW5rKCkKICAgICAgICAgICAgIGlmIChpc0Jsb2Ip
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICBhdXRvIHJlY29yZFBhdGgg
PSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3JkRGly
ZWN0b3J5UGF0aCwgZmlsZU5hbWUpOworICAgICAgICAgICAgYXV0byByZWNvcmRQYXRoID0gRmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZERpcmVjdG9yeVBhdGgsIGZp
bGVOYW1lKTsKICAgICAgICAgICAgIGF1dG8gYmxvYlBhdGggPSBibG9iUGF0aEZvclJlY29yZFBh
dGgocmVjb3JkUGF0aCk7CiAKICAgICAgICAgICAgIGF1dG8gdGltZXMgPSBmaWxlVGltZXMocmVj
b3JkUGF0aCk7CkBAIC0xMTAxLDcgKzExMDEsNyBAQCB2b2lkIFN0b3JhZ2U6OnNocmluaygpCiAg
ICAgICAgICAgICBMT0coTmV0d29ya0NhY2hlU3RvcmFnZSwgIkRlbGV0aW9uIHByb2JhYmlsaXR5
PSVmIGJvZHlMaW5rQ291bnQ9JWQgc2hvdWxkRGVsZXRlPSVkIiwgcHJvYmFiaWxpdHksIGJvZHlT
aGFyZUNvdW50LCBzaG91bGREZWxldGUpOwogCiAgICAgICAgICAgICBpZiAoc2hvdWxkRGVsZXRl
KSB7Ci0gICAgICAgICAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShyZWNv
cmRQYXRoKTsKKyAgICAgICAgICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKHJlY29yZFBh
dGgpOwogICAgICAgICAgICAgICAgIG1fYmxvYlN0b3JhZ2UucmVtb3ZlKGJsb2JQYXRoKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfSk7CkBAIC0xMTM3LDcgKzExMzcsNyBAQCB2b2lkIFN0b3Jh
Z2U6OmRlbGV0ZU9sZFZlcnNpb25zKCkKICAgICAgICAgICAgICAgICByZXR1cm47CiAjZW5kaWYK
IAotICAgICAgICAgICAgYXV0byBvbGRWZXJzaW9uUGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChjYWNoZVBhdGgsIHN1YmRpck5hbWUpOworICAgICAg
ICAgICAgYXV0byBvbGRWZXJzaW9uUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChjYWNoZVBhdGgsIHN1YmRpck5hbWUpOwogICAgICAgICAgICAgTE9HKE5ldHdvcmtD
YWNoZVN0b3JhZ2UsICIoTmV0d29ya1Byb2Nlc3MpIGRlbGV0aW5nIG9sZCBjYWNoZSB2ZXJzaW9u
LCBwYXRoICVzIiwgb2xkVmVyc2lvblBhdGgudXRmOCgpLmRhdGEoKSk7CiAKICAgICAgICAgICAg
IGRlbGV0ZURpcmVjdG9yeVJlY3Vyc2l2ZWx5KG9sZFZlcnNpb25QYXRoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0Nv
Y29hLm1tCmluZGV4IGE2MWY5Mzg1YTY3NzRiZDBiNzVjNTM5NjljZTEzMjg3OGIzYjk3M2YuLmY0
N2JkODE5ODgzMjY2YWE2NzhjNDg3ZjZiMzUzOGVjNWRhYmJlNDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2Nv
YS5tbQpAQCAtMzYsMTEgKzM2LDExIEBACiAjaW1wb3J0ICJOZXR3b3JrU2Vzc2lvbkNvY29hLmgi
CiAjaW1wb3J0ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbXBvcnQgPFdlYkNvcmUvQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UuaD4KLSNpbXBvcnQgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgog
I2ltcG9ydCA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KICNpbXBvcnQgPFdlYkNv
cmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+
CiAjaW1wb3J0IDxwYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oPgorI2ltcG9ydCA8d3RmL0ZpbGVT
eXN0ZW0uaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW1wb3J0IDx3dGYvUHJvY2Vz
c1ByaXZpbGVnZS5oPgogI2ltcG9ydCA8d3RmL3RleHQvQmFzZTY0Lmg+CkBAIC00MDMsOCArNDAz
LDggQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6c2V0UGVuZGluZ0Rvd25sb2FkTG9jYXRp
b24oY29uc3QgV1RGOjpTdHJpbmcmIGZpbGVuYW0KIAogICAgIG1fdGFzay5nZXQoKS5fcGF0aFRv
RG93bmxvYWRUYXNrRmlsZSA9IG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRpb247CiAKLSAgICBpZiAo
YWxsb3dPdmVyd3JpdGUgJiYgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhtX3BlbmRp
bmdEb3dubG9hZExvY2F0aW9uKSkKLSAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRl
RmlsZShmaWxlbmFtZSk7CisgICAgaWYgKGFsbG93T3ZlcndyaXRlICYmIEZpbGVTeXN0ZW06OmZp
bGVFeGlzdHMobV9wZW5kaW5nRG93bmxvYWRMb2NhdGlvbikpCisgICAgICAgIEZpbGVTeXN0ZW06
OmRlbGV0ZUZpbGUoZmlsZW5hbWUpOwogfQogCiBib29sIE5ldHdvcmtEYXRhVGFza0NvY29hOjp0
cnlQYXNzd29yZEJhc2VkQXV0aGVudGljYXRpb24oY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRp
b25DaGFsbGVuZ2UmIGNoYWxsZW5nZSwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImIGNvbXBs
ZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCmluZGV4IGY2YWQ0OWY4YmFjMzVkMDE3Yjk2
NTM3OThkNTdhYWEyZjQzOTU2MDguLjRhMWQ3OTIxMGFmYTU5NmU0YjBmYWZjZTgxOGZmNGY2ODJi
MzhiNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya1Nlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KQEAgLTc3OSw3ICs3NzksNyBAQCAtICh2b2lkKVVS
TFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXNlc3Npb24gZGF0YVRhc2s6KE5TVVJMU2Vzc2lvbkRh
dGFUYXNrICopZGF0YQogICAgICAgICBhdXRvJiBkb3dubG9hZE1hbmFnZXIgPSBfc2Vzc2lvbi0+
bmV0d29ya1Byb2Nlc3MoKS5kb3dubG9hZE1hbmFnZXIoKTsKICAgICAgICAgYXV0byBkb3dubG9h
ZCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpEb3dubG9hZD4oZG93bmxvYWRNYW5hZ2VyLCBk
b3dubG9hZElELCBkb3dubG9hZFRhc2ssIF9zZXNzaW9uLT5zZXNzaW9uSUQoKSwgbmV0d29ya0Rh
dGFUYXNrLT5zdWdnZXN0ZWRGaWxlbmFtZSgpKTsKICAgICAgICAgbmV0d29ya0RhdGFUYXNrLT50
cmFuc2ZlclNhbmRib3hFeHRlbnNpb25Ub0Rvd25sb2FkKCpkb3dubG9hZCk7Ci0gICAgICAgIEFT
U0VSVChXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG5ldHdvcmtEYXRhVGFzay0+cGVu
ZGluZ0Rvd25sb2FkTG9jYXRpb24oKSkpOworICAgICAgICBBU1NFUlQoRmlsZVN5c3RlbTo6Zmls
ZUV4aXN0cyhuZXR3b3JrRGF0YVRhc2stPnBlbmRpbmdEb3dubG9hZExvY2F0aW9uKCkpKTsKICAg
ICAgICAgZG93bmxvYWQtPmRpZENyZWF0ZURlc3RpbmF0aW9uKG5ldHdvcmtEYXRhVGFzay0+cGVu
ZGluZ0Rvd25sb2FkTG9jYXRpb24oKSk7CiAgICAgICAgIGRvd25sb2FkTWFuYWdlci5kYXRhVGFz
a0JlY2FtZURvd25sb2FkVGFzayhkb3dubG9hZElELCBXVEZNb3ZlKGRvd25sb2FkKSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNz
TWFjLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nlc3NN
YWMubW0KaW5kZXggMzdmM2I3ZjcyYWE1MDJiMzJiYTgxMWVjOWJhMDhmNWUyNTU4NjNiMi4uZjVi
ZjA0YWU0NjVmNjJiNzRkMmIxOGE4MTc1OTAxYTE2ZWE1NTVkMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nlc3NNYWMubW0KKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nlc3NNYWMubW0KQEAgLTM4
LDEyICszOCwxMiBAQAogI2ltcG9ydCAiU3RyaW5nVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJXS0Zv
dW5kYXRpb24uaCIKICNpbXBvcnQgPFdlYkNvcmUvQ2VydGlmaWNhdGVJbmZvLmg+Ci0jaW1wb3J0
IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPFdlYkNvcmUvTG9jYWxpemVkU3RyaW5n
cy5oPgogI2ltcG9ydCA8bm90aWZ5Lmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NmL0NGTmV0d29ya1NQ
SS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5oPgogI2ltcG9y
dCA8c3lzZXhpdHMuaD4KKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDx3dGYv
TWVtb3J5UHJlc3N1cmVIYW5kbGVyLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQ
cm9jZXNzU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29y
a1Byb2Nlc3NTb3VwLmNwcAppbmRleCBhY2I5MmM2OTU0NDIzZjdlNjk5YmZjNjZhM2ExZGY4ZWYz
ZTM3Mzg4Li43MmZiNjU0OTAwM2Q2ZWIwYWFlZDk5YzIzZTMyMWM2M2UyYWFkMWMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3Vw
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nl
c3NTb3VwLmNwcApAQCAtMzIsMTIgKzMyLDEyIEBACiAjaW5jbHVkZSAiUmVzb3VyY2VDYWNoZXNU
b0NsZWFyLmgiCiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlci5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvQ2VydGlmaWNhdGVJbmZvLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KICNpbmNsdWRlIDxXZWJD
b3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU291cE5ldHdvcmtTZXNzaW9uLmg+CiAjaW5jbHVkZSA8bGli
c291cC9zb3VwLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYv
UkFNU2l6ZS5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYv
Z2xpYi9HVW5pcXVlUHRyLmg+CkBAIC0xMDgsNyArMTA4LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
czo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0d29ya1Byb2Nlc3ND
cmVhdGkKICAgICBBU1NFUlQoIXBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5LmlzRW1wdHko
KSk7CiAgICAgbV9kaXNrQ2FjaGVEaXJlY3RvcnkgPSBwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVj
dG9yeTsKIAotICAgIFNvdXBOZXR3b3JrU2Vzc2lvbjo6Y2xlYXJPbGRTb3VwQ2FjaGUoV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShtX2Rpc2tDYWNoZURpcmVjdG9yeSkpOworICAg
IFNvdXBOZXR3b3JrU2Vzc2lvbjo6Y2xlYXJPbGRTb3VwQ2FjaGUoRmlsZVN5c3RlbTo6ZGlyZWN0
b3J5TmFtZShtX2Rpc2tDYWNoZURpcmVjdG9yeSkpOwogCiAgICAgT3B0aW9uU2V0PE5ldHdvcmtD
YWNoZTo6Q2FjaGU6Ok9wdGlvbj4gY2FjaGVPcHRpb25zIHsgTmV0d29ya0NhY2hlOjpDYWNoZTo6
T3B0aW9uOjpSZWdpc3Rlck5vdGlmeSB9OwogICAgIGlmIChwYXJhbWV0ZXJzLnNob3VsZEVuYWJs
ZU5ldHdvcmtDYWNoZUVmZmljYWN5TG9nZ2luZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGx1Z2luUHJvY2Vzcy91bml4L1BsdWdpblByb2Nlc3NNYWluVW5peC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1BsdWdpblByb2Nlc3MvdW5peC9QbHVnaW5Qcm9jZXNzTWFpblVuaXguY3BwCmluZGV4IDJi
ZDJlZDU5YWU2YTJlMjRiMDc0OGIwM2NlYmMzNTYzYzY2NzE4M2UuLjNhZGU0Yzk0M2YwOWI1MWQz
Y2MzYmVjMmNhOTYzM2Y3M2QxMzQ5NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGx1Z2lu
UHJvY2Vzcy91bml4L1BsdWdpblByb2Nlc3NNYWluVW5peC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9QbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc01haW5Vbml4LmNwcApAQCAtMzQsOCAr
MzQsOCBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXRzY2FwZVBsdWdpbi5o
IgogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3MuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0
ZW0uaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgog
CiAjaWYgUExBVEZPUk0oR1RLKQogI2luY2x1ZGUgPGd0ay9ndGsuaD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1BlcnNpc3RlbmN5VXRpbHMuY3BwIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvUGVyc2lzdGVuY3lVdGlscy5jcHAKaW5kZXggNWRiYTk2OGJkN2UwYjM4YzNkMjI2OTRk
NmQ1ZDJlNmIwNjlkMmE4MS4uZWNhOTY0MWQyMDUzNDVjODE4OTZlYjU2NWRmNjI3Zjk1ZTNjNTE3
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGVyc2lzdGVuY3lVdGlscy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGVyc2lzdGVuY3lVdGlscy5jcHAKQEAgLTI3LDgg
KzI3LDggQEAKICNpbmNsdWRlICJQZXJzaXN0ZW5jeVV0aWxzLmgiCiAKICNpbmNsdWRlICJMb2dn
aW5nLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9TaGFyZWRCdWZmZXIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUg
PHd0Zi9SdW5Mb29wLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS91bml4L05ldHNjYXBlUGx1Z2luTW9kdWxl
VW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL3VuaXgvTmV0
c2NhcGVQbHVnaW5Nb2R1bGVVbml4LmNwcAppbmRleCBmYjFkOWRjOTI2ZmQ2NzY3OTNmNDU0YTc0
ZmE1NTFhZWU1NzBjOGU1Li5lZWM0NzYxMTVjODQwM2YxMzNiMzkzNjA1OTJiOGYwYTEwM2MzNDQw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL3VuaXgv
TmV0c2NhcGVQbHVnaW5Nb2R1bGVVbml4LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Q
bHVnaW5zL05ldHNjYXBlL3VuaXgvTmV0c2NhcGVQbHVnaW5Nb2R1bGVVbml4LmNwcApAQCAtMzAs
MTIgKzMwLDEyIEBACiAKICNpbmNsdWRlICJOZXRzY2FwZUJyb3dzZXJGdW5jcy5oIgogI2luY2x1
ZGUgIlBsdWdpblByb2Nlc3NQcm94eS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5o
PgogI2luY2x1ZGUgPGVycm5vLmg+CiAjaW5jbHVkZSA8ZmNudGwuaD4KICNpbmNsdWRlIDxzeXMv
c3RhdC5oPgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2lu
Y2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRl
ci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1BsdWdpbnMvdW5peC9QbHVnaW5TZWFyY2hQYXRoLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1BsdWdpbnMvdW5peC9QbHVnaW5TZWFyY2hQYXRoLmNwcAppbmRleCBlOGFmOTYwNGNlNTU5
NWE0NDRmZThjYTUwNDVkM2E2MTdhYjIzNjRhLi4yYmQ1NDlhOTVkZmE2NzVjZTQ3ZjU2ZDc4YTU5
YjRmNzMxNWExMWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL3Vu
aXgvUGx1Z2luU2VhcmNoUGF0aC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lu
cy91bml4L1BsdWdpblNlYXJjaFBhdGguY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiUGx1Z2luU2VhcmNoUGF0aC5oIgogCi0jaW5jbHVkZSA8V2Vi
Q29yZS9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogbmFtZXNw
YWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYk1lbW9yeVNhbXBsZXIuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYk1lbW9yeVNhbXBsZXIuaAppbmRleCA4MDgxM2ZlYTA1MGYyMDQ5MWJkMWM4YjUwZTkwYjFj
YmJiY2FhMzQ0Li43MjFjZGJmMzg5MjI2NGJjOWZkNzkyYjUwODM4MzBmZjUxOWZjOWJkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJNZW1vcnlTYW1wbGVyLmgKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5oCkBAIC01Miw4ICs1Miw4IEBACiAj
aWYgRU5BQkxFKE1FTU9SWV9TQU1QTEVSKQogCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5o
IgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGlt
ZXIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CkBAIC04Nyw3ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbml0aWFsaXplVGltZXJzKGRv
dWJsZSk7CiAgICAgdm9pZCBzYW1wbGVUaW1lckZpcmVkKCk7CiAgICAgdm9pZCBzdG9wVGltZXJG
aXJlZCgpOwotICAgIHZvaWQgYXBwZW5kQ3VycmVudE1lbW9yeVVzYWdlVG9GaWxlKFdlYkNvcmU6
OkZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSYpOworICAgIHZvaWQgYXBwZW5kQ3VycmVu
dE1lbW9yeVVzYWdlVG9GaWxlKEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSYpOwogICAg
IHZvaWQgc2VuZE1lbW9yeVByZXNzdXJlRXZlbnQoKTsKICAgICAKICAgICBTeXN0ZW1NYWxsb2NT
dGF0cyBzYW1wbGVTeXN0ZW1NYWxsb2MoKSBjb25zdDsKQEAgLTk1LDcgKzk1LDcgQEAgcHJpdmF0
ZToKICAgICBXZWJNZW1vcnlTdGF0aXN0aWNzIHNhbXBsZVdlYktpdCgpIGNvbnN0OwogICAgIFN0
cmluZyBwcm9jZXNzTmFtZSgpIGNvbnN0OwogICAgIAotICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06
OlBsYXRmb3JtRmlsZUhhbmRsZSBtX3NhbXBsZUxvZ0ZpbGUgeyBXZWJDb3JlOjpGaWxlU3lzdGVt
OjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlIH07CisgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1G
aWxlSGFuZGxlIG1fc2FtcGxlTG9nRmlsZSB7IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZp
bGVIYW5kbGUgfTsKICAgICBTdHJpbmcgbV9zYW1wbGVMb2dGaWxlUGF0aDsKICAgICBXZWJDb3Jl
OjpUaW1lciBtX3NhbXBsZVRpbWVyOwogICAgIFdlYkNvcmU6OlRpbWVyIG1fc3RvcFRpbWVyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ2xpYi9Qcm9jZXNzRXhlY3V0YWJsZVBh
dGhHTGliLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2dsaWIvUHJvY2Vzc0V4ZWN1dGFibGVQ
YXRoR0xpYi5jcHAKaW5kZXggYTcwYjQxYTA5YTkzMGJiZGMzYjU0MWNlNmE3MDhhZDg5YmJjMmY0
Yi4uNGZmMzVkMzFkZTFkNTcyMzFhNmY2ZTEwMTVhODU1ZDQwZjhjOGMzNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvZ2xpYi9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhHTGliLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9nbGliL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aEdMaWIu
Y3BwCkBAIC0yNywxMiArMjcsMTEgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQ
cm9jZXNzRXhlY3V0YWJsZVBhdGguaCIKIAotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5o
PgogI2luY2x1ZGUgPGdsaWIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1
ZGUgPHd0Zi9nbGliL0dMaWJVdGlsaXRpZXMuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7Ci11c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogI2lmIEVOQUJMRShERVZFTE9QRVJfTU9ERSkKIHN0YXRp
YyBTdHJpbmcgZ2V0RXhlY3V0YWJsZVBhdGgoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvaW9zL0NoaWxkUHJvY2Vzc0lPUy5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9D
aGlsZFByb2Nlc3NJT1MubW0KaW5kZXggODFkNTRmM2JmMDA5ZWZhZjA1ZDQwMmQ2ZjVjZmVhOGQx
MGY0YjU2Ny4uNjlkNTNjZmYzMTRhOTVjYmM0YTgwN2FiOThjOWVjYTgyZmUyYmUyMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL0NoaWxkUHJvY2Vzc0lPUy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvQ2hpbGRQcm9jZXNzSU9TLm1tCkBAIC0zMSw3ICszMSw2
IEBACiAKICNpbXBvcnQgIlNhbmRib3hJbml0aWFsaXphdGlvblBhcmFtZXRlcnMuaCIKICNpbXBv
cnQgIlhQQ1NlcnZpY2VFbnRyeVBvaW50LmgiCi0jaW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0ZW0u
aD4KICNpbXBvcnQgPFdlYkNvcmUvRmxvYXRpbmdQb2ludEVudmlyb25tZW50Lmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1N5c3RlbVZlcnNpb24uaD4KICNpbXBvcnQgPG1hY2gvbWFjaC5oPgpAQCAtMzks
NiArMzgsNyBAQAogI2ltcG9ydCA8cHdkLmg+CiAjaW1wb3J0IDxzdGRsaWIuaD4KICNpbXBvcnQg
PHN5c2V4aXRzLmg+CisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogCiAjaWYgRU5BQkxFKE1B
TlVBTF9TQU5EQk9YSU5HKQogI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0NoaWxkUHJvY2Vzc01hYy5tbSBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9DaGlsZFByb2Nlc3NNYWMubW0KaW5kZXggM2MzOTRj
YzkxNmMwOTkyMGQwMzMzZjJjNGEyNThlNDdmMWU3Yzk3OS4uNzg1MzZhYWU2MGJjZjAyYzkyNjYw
YzMyODExYThkMGY1OGVmZjZmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFj
L0NoaWxkUHJvY2Vzc01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQ2hpbGRQ
cm9jZXNzTWFjLm1tCkBAIC0zNSw3ICszNSw2IEBACiAjaW1wb3J0ICJXS0ZvdW5kYXRpb24uaCIK
ICNpbXBvcnQgIlhQQ1NlcnZpY2VFbnRyeVBvaW50LmgiCiAjaW1wb3J0IDxXZWJDb3JlL0ZpbGVI
YW5kbGUuaD4KLSNpbXBvcnQgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9TeXN0ZW1WZXJzaW9uLmg+CiAjaW1wb3J0IDxtYWNoLW8vZHlsZC5oPgogI2ltcG9ydCA8bWFj
aC9tYWNoLmg+CkBAIC00Nyw2ICs0Niw3IEBACiAjaW1wb3J0IDxzeXMvc3lzY3RsLmg+CiAjaW1w
b3J0IDxzeXNleGl0cy5oPgogI2ltcG9ydCA8d3RmL0RhdGFMb2cuaD4KKyNpbXBvcnQgPHd0Zi9G
aWxlU3lzdGVtLmg+CiAjaW1wb3J0IDx3dGYvUmFuZG9tTnVtYmVyLmg+CiAjaW1wb3J0IDx3dGYv
U2NvcGUuaD4KICNpbXBvcnQgPHd0Zi9TeXN0ZW1UcmFjaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9tYWMvU2FuZGJveEV4dGVuc2lvbk1hYy5tbSBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL21hYy9TYW5kYm94RXh0ZW5zaW9uTWFjLm1tCmluZGV4IDBjZWM5ODVjNzg1Yzc3
MzY1OTc3MmQyNGYxYjZkNTc2ZDcxZDc1ZTEuLmFmYmM2YjJhMTRlNWJmZjBjMTY2NTZiN2MyMDg3
N2NiY2RkZDQ1NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9TYW5kYm94
RXh0ZW5zaW9uTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9TYW5kYm94RXh0
ZW5zaW9uTWFjLm1tCkBAIC0zMSwxMyArMzEsMTIgQEAKICNpbXBvcnQgIkRhdGFSZWZlcmVuY2Uu
aCIKICNpbXBvcnQgIkRlY29kZXIuaCIKICNpbXBvcnQgIkVuY29kZXIuaCIKLSNpbXBvcnQgPFdl
YkNvcmUvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8c3lzL3N0YXQuaD4KKyNpbXBvcnQgPHd0Zi9G
aWxlU3lzdGVtLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJLmg+CiAjaW1w
b3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewotdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKIGNsYXNzIFNhbmRib3hFeHRlbnNpb25JbXBsIHsKIHB1YmxpYzoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxp
c3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVM
aXN0U3RvcmUuY3BwCmluZGV4IDM4ZjQyY2I5MWE1MzhlZGU2OGUyMjU5NDEwNTBmOTZhZjY3Yjk2
OTguLmM3NjdlMjgzNWYyOTdiYmJlMGEzZjkzNjBhOTNkYzU0MzdlMTBiMmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3Jl
LmNwcApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUXVhbGlmaWVkTmFtZS5o
PgogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4K
KyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3ll
ZC5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5o
PgpAQCAtNDgsNyArNDksNyBAQAogCiBuYW1lc3BhY2UgQVBJIHsKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJLaXQ6Ok5ldHdvcmtDYWNoZTsKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOjpGaWxlU3lzdGVt
OwordXNpbmcgbmFtZXNwYWNlIEZpbGVTeXN0ZW07CiAKIENvbnRlbnRSdWxlTGlzdFN0b3JlJiBD
b250ZW50UnVsZUxpc3RTdG9yZTo6bGVnYWN5RGVmYXVsdFN0b3JlKCkKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElXZWJzaXRlRGF0YVN0b3JlQ29j
b2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJV2Vic2l0ZURhdGFT
dG9yZUNvY29hLm1tCmluZGV4IDRhMmVjMzg3MjM3ZmZkYzhjYTg5NDcxODZmZmVkMGQ1Y2E0ZWE3
NTQuLjM4ODRmNDNjMWUyMGExMjk4YmE4ODU3ZWIxYjA5MTU1YTk4YjAwNzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElXZWJzaXRlRGF0YVN0b3JlQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVE
YXRhU3RvcmVDb2NvYS5tbQpAQCAtMjgsOSArMjgsOCBAQAogCiAjaW5jbHVkZSAiU2FuZGJveEV4
dGVuc2lvbi5oIgogI2luY2x1ZGUgIlNhbmRib3hVdGlsaXRpZXMuaCIKLQogI2luY2x1ZGUgPEZv
dW5kYXRpb24vRm91bmRhdGlvbi5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgor
I2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
I2ltcG9ydCA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KQEAgLTE2OSw3ICsx
NjgsNyBAQCBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0SW5kZXhl
ZERCRGF0YWJhc2VEaXJlY3RvcnkoKQogICAgIC8vIEN1cnJlbnRseSwgdGhlIHRvcCBsZXZlbCBv
ZiB0aGF0IGRpcmVjdG9yeSBjb250YWlucyBlbnRpdGllcyByZWxhdGVkIHRvIFdlYlNRTCBkYXRh
YmFzZXMuCiAgICAgLy8gV2Ugc2hvdWxkIGZpeCB0aGlzLCBhbmQgbW92ZSBXZWJTUUwgaW50byBh
IHN1YmRpcmVjdG9yeSAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEy
NDgwNykKICAgICAvLyBJbiB0aGUgbWVhbnRpbWUsIGFuIGVudGl0eSBuYW1lIHByZWZpeGVkIHdp
dGggdGhyZWUgdW5kZXJzY29yZXMgd2lsbCBub3QgY29uZmxpY3Qgd2l0aCBhbnkgV2ViU1FMIGVu
dGl0aWVzLgotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQobGVnYWN5RGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCksICJfX19JbmRl
eGVkREIiKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KGxlZ2FjeURlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpLCAiX19fSW5kZXhlZERCIik7
CiB9CiAKIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRMb2NhbFN0
b3JhZ2VEaXJlY3RvcnkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvQVBJV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvQVBJV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwCmluZGV4IGUxYzQ1MjliM2Qy
MWVlNThiZmVmYjVjMThmZWZiNTExMjJjMDE2MGYuLmY1YWI5MzFjYmVkM2I3NzFiZjNjZWM4MTJj
Yjc0MmU0OWJiNjg1MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHAKQEAgLTI2LDcgKzI2LDcg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgi
CiAKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5
c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KIAogI2lmIFBMQVRGT1JN
KEdUSykKQEAgLTQ2LDEyICs0NiwxMiBAQCBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpCiAvLyBXaHkgaXMgb25seSB0aGlzIGRp
cmVjdG9yeSBuYW1lc3BhY2VkIHRvIGEgcGFydGljdWxhciBhcHBsaWNhdGlvbj8KIFdURjo6U3Ry
aW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKQogewot
ICAgIHJldHVybiBjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihnX2dldF9wcmduYW1lKCkpLCAi
V2ViS2l0Q2FjaGUiKSk7CisgICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVt
OjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGdfZ2V0X3ByZ25hbWUoKSksICJX
ZWJLaXRDYWNoZSIpKTsKIH0KIAogV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dENhY2hlU3RvcmFnZURpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5Rmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGdfZ2V0X3ByZ25hbWUoKSksICJDYWNoZVN0b3JhZ2UiKSk7CisgICAgcmV0dXJu
IGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGdfZ2V0X3ByZ25hbWUoKSksICJDYWNoZVN0b3JhZ2UiKSk7CiB9CiAKIFdURjo6
U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9y
eSgpCkBAIC05MSwxOSArOTEsMTkgQEAgV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKQogCiBXVEY6OlN0cmluZyBXZWJz
aXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25z
dCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0
cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfdXNlcl9jYWNoZV9kaXIoKSks
IGRpcmVjdG9yeU5hbWUpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihn
X2dldF91c2VyX2NhY2hlX2RpcigpKSwgZGlyZWN0b3J5TmFtZSk7CiB9CiAKIFdURjo6U3RyaW5n
IFdlYnNpdGVEYXRhU3RvcmU6OndlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3RvcnlOYW1lKQogewotICAgIHJldHVybiBX
ZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihnX2dldF91c2VyX2Rh
dGFfZGlyKCkpLCBkaXJlY3RvcnlOYW1lKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZ19nZXRfdXNlcl9kYXRhX2RpcigpKSwgZGlyZWN0b3J5TmFtZSk7CiB9CiAKIFdU
Rjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRBcHBsaWNhdGlvbkNhY2hl
RGlyZWN0b3J5KCkKIHsKICNpZiBQTEFURk9STShXUEUpCiAgICAgR1VuaXF1ZVB0cjxnY2hhcj4g
Y2FjaGVEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFtZShnX2dldF91c2VyX2NhY2hlX2RpcigpLCAi
d3BlIiwgImFwcGNhY2hlIiwgbnVsbHB0cikpOwotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lz
dGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNhY2hlRGlyZWN0b3J5Lmdl
dCgpKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihjYWNoZURpcmVjdG9yeS5nZXQoKSk7CiAjZW5kaWYKICAgICByZXR1cm4gZGVmYXVs
dEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKTsKIH0KQEAgLTExMiw3ICsxMTIsNyBAQCBXVEY6
OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0
b3J5KCkKIHsKICNpZiBQTEFURk9STShXUEUpCiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBkaXNrQ2Fj
aGVEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFtZShnX2dldF91c2VyX2NhY2hlX2RpcigpLCAid3Bl
IiwgImNhY2hlIiwgbnVsbHB0cikpOwotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpz
dHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRpc2tDYWNoZURpcmVjdG9yeS5nZXQo
KSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oZGlza0NhY2hlRGlyZWN0b3J5LmdldCgpKTsKICNlbmRpZgogICAgIHJldHVybiBkZWZh
dWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCk7CiB9CkBAIC0xMjEsNyArMTIxLDcgQEAgV1RGOjpT
dHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0
b3J5KCkKIHsKICNpZiBQTEFURk9STShXUEUpCiAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZGF0YWJh
c2VEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFtZShnX2dldF91c2VyX2RhdGFfZGlyKCksICJ3cGUi
LCAiZGF0YWJhc2VzIiwgbnVsbHB0cikpOwotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVt
OjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRhdGFiYXNlRGlyZWN0b3J5Lmdl
dCgpKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihkYXRhYmFzZURpcmVjdG9yeS5nZXQoKSk7CiAjZW5kaWYKICAgICByZXR1cm4gZGVm
YXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCk7CiB9CkBAIC0xMzAsNyArMTMwLDcgQEAgV1RG
OjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdEluZGV4ZWREQkRhdGFiYXNl
RGlyZWN0b3J5KCkKIHsKICNpZiBQTEFURk9STShXUEUpCiAgICAgR1VuaXF1ZVB0cjxnY2hhcj4g
aW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFtZShnX2dldF91c2VyX2Rh
dGFfZGlyKCksICJ3cGUiLCAiZGF0YWJhc2VzIiwgImluZGV4ZWRkYiIsIG51bGxwdHIpKTsKLSAg
ICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihpbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeS5nZXQoKSk7CisgICAgcmV0dXJuIEZp
bGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oaW5kZXhlZERCRGF0
YWJhc2VEaXJlY3RvcnkuZ2V0KCkpOwogI2VuZGlmCiAgICAgcmV0dXJuIGRlZmF1bHRJbmRleGVk
REJEYXRhYmFzZURpcmVjdG9yeSgpOwogfQpAQCAtMTM5LDcgKzEzOSw3IEBAIFdURjo6U3RyaW5n
IFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKQog
ewogI2lmIFBMQVRGT1JNKFdQRSkKICAgICBHVW5pcXVlUHRyPGdjaGFyPiBzdG9yYWdlRGlyZWN0
b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9kYXRhX2RpcigpLCAid3BlIiwgImxvY2Fs
c3RvcmFnZSIsIG51bGxwdHIpKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3Ry
aW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihzdG9yYWdlRGlyZWN0b3J5LmdldCgpKTsK
KyAgICByZXR1cm4gRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihzdG9yYWdlRGlyZWN0b3J5LmdldCgpKTsKICNlbmRpZgogICAgIHJldHVybiBkZWZhdWx0TG9j
YWxTdG9yYWdlRGlyZWN0b3J5KCk7CiB9CkBAIC0xNDgsNyArMTQ4LDcgQEAgV1RGOjpTdHJpbmcg
V2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdE1lZGlhQ2FjaGVEaXJlY3RvcnkoKQogewog
I2lmIFBMQVRGT1JNKFdQRSkKICAgICBHVW5pcXVlUHRyPGdjaGFyPiBjYWNoZURpcmVjdG9yeShn
X2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfY2FjaGVfZGlyKCksICJ3cGUiLCAibWVkaWFjYWNo
ZSIsIG51bGxwdHIpKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJv
bUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjYWNoZURpcmVjdG9yeS5nZXQoKSk7CisgICAgcmV0
dXJuIEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY2FjaGVE
aXJlY3RvcnkuZ2V0KCkpOwogI2VuZGlmCiAgICAgcmV0dXJuIGRlZmF1bHRNZWRpYUNhY2hlRGly
ZWN0b3J5KCk7CiB9CkBAIC0xNTcsNyArMTU3LDcgQEAgV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFT
dG9yZTo6bGVnYWN5RGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKQogewogI2lmIFBM
QVRGT1JNKFdQRSkKICAgICBHVW5pcXVlUHRyPGdjaGFyPiBtZWRpYUtleXNTdG9yYWdlRGlyZWN0
b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9kYXRhX2RpcigpLCAid3BlIiwgIm1lZGlh
a2V5cyIsIG51bGxwdHIpKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5n
RnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5Lmdl
dCgpKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5LmdldCgpKTsKICNlbmRpZgogICAgIHJl
dHVybiBkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpOwogfQpAQCAtMTY2LDcgKzE2
Niw3IEBAIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0RGV2aWNlSWRIYXNo
U2FsdHNTdG9yYWdlRGlyZWN0b3J5KCkKIHsKICNpZiBQTEFURk9STShXUEUpCiAgICAgR1VuaXF1
ZVB0cjxnY2hhcj4gZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KGdfYnVpbGRfZmls
ZW5hbWUoZ19nZXRfdXNlcl9kYXRhX2RpcigpLCAid3BlIiwgImRldmljZWlkaGFzaHNhbHRzIiwg
bnVsbHB0cikpOwotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeS5n
ZXQoKSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5LmdldCgpKTsKICNlbmRp
ZgogICAgIHJldHVybiBkZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCk7
CiB9CkBAIC0xNzQsNyArMTc0LDcgQEAgU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURl
ZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKQogV1RGOjpTdHJpbmcgV2Vi
c2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdEphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0
b3J5KCkKIHsKICAgICBHVW5pcXVlUHRyPGdjaGFyPiBqYXZhU2NyaXB0Q29yZUNvbmZpZ0RpcmVj
dG9yeShnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfZGF0YV9kaXIoKSwgQkFTRV9ESVJFQ1RP
UlksICJKYXZhU2NyaXB0Q29yZURlYnVnIiwgbnVsbHB0cikpOwotICAgIHJldHVybiBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGphdmFTY3Jp
cHRDb3JlQ29uZmlnRGlyZWN0b3J5LmdldCgpKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6c3Ry
aW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihqYXZhU2NyaXB0Q29yZUNvbmZpZ0RpcmVj
dG9yeS5nZXQoKSk7CiB9CiAKIFJlZjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uPiBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2Uu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcApp
bmRleCA2NzRhNWRiMDQzYzhhNjBmMzYyMGFhN2JhMDE4YzFmOTg1ZWRmOGE5Li5iMDQ2NmU5MTQw
OTBiYzA1NTk2NmU2YjlkZjMxOWVhMzA0ZGIyMzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAKQEAgLTI5LDExICsyOSwxMSBAQAog
CiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQml0bWFwSW1hZ2UuaD4K
LSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdl
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVTdGF0ZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1NRTGl0ZVRyYW5zYWN0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIu
aD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFk
Lmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdEZhdmljb25EYXRhYmFzZS5jcHAKaW5kZXggOWJlNzI1M2Y4NWU5MWRhMTFiOTVl
ZDI4MDllYjQ0YjVhMzcxNWE1YS4uZTAxNjQ4NjgxNzFhNWQ4YmVlOGEzZTE4NmFjNjgyNWM0OTFk
OTcwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
RmF2aWNvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwCkBAIC0yMywxMiArMjMsMTIgQEAKICNpbmNsdWRl
ICJJY29uRGF0YWJhc2UuaCIKICNpbmNsdWRlICJXZWJLaXRGYXZpY29uRGF0YWJhc2VQcml2YXRl
LmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVT
eXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9J
bnRTaXplLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWZQdHJDYWlyby5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KKyNpbmNs
dWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVk
ZSA8d3RmL1NldEZvclNjb3BlLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgpAQCAt
MjczLDcgKzI3Myw3IEBAIHZvaWQgd2Via2l0RmF2aWNvbkRhdGFiYXNlT3BlbihXZWJLaXRGYXZp
Y29uRGF0YWJhc2UqIGRhdGFiYXNlLCBjb25zdCBTdHJpbmcmIHBhCiAgICAgcHJpdi0+aWNvbkRh
dGFiYXNlLT5zZXRFbmFibGVkKHRydWUpOwogICAgIHByaXYtPmljb25EYXRhYmFzZS0+c2V0UHJp
dmF0ZUJyb3dzaW5nRW5hYmxlZChXZWJQcmVmZXJlbmNlczo6YW55UGFnZXNBcmVVc2luZ1ByaXZh
dGVCcm93c2luZygpKTsKIAotICAgIGlmICghcHJpdi0+aWNvbkRhdGFiYXNlLT5vcGVuKFdlYkNv
cmU6OkZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUocGF0aCksIFdlYkNvcmU6OkZpbGVTeXN0ZW06
OnBhdGhHZXRGaWxlTmFtZShwYXRoKSkpIHsKKyAgICBpZiAoIXByaXYtPmljb25EYXRhYmFzZS0+
b3BlbihGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKHBhdGgpLCBGaWxlU3lzdGVtOjpwYXRoR2V0
RmlsZU5hbWUocGF0aCkpKSB7CiAgICAgICAgIHByaXYtPmljb25EYXRhYmFzZSA9IG51bGxwdHI7
CiAgICAgICAgIEljb25EYXRhYmFzZTo6YWxsb3dEYXRhYmFzZUNsZWFudXAoKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGaWxlQ2hv
b3NlclJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
RmlsZUNob29zZXJSZXF1ZXN0LmNwcAppbmRleCAzN2U2Y2NhMGNlYmNlOTE0NzMwZTNjNmQ0MjVj
NWZlZjc3ZmI0ODVmLi4wOTk4MGFhZTA2OTllYmNlOWQzM2U5YzVhNjk3YTAyZGUwNDcwM2Q4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGaWxlQ2hv
b3NlclJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdEZpbGVDaG9vc2VyUmVxdWVzdC5jcHAKQEAgLTI1LDkgKzI1LDkgQEAKICNpbmNsdWRlICJB
UElTdHJpbmcuaCIKICNpbmNsdWRlICJXZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3RQcml2YXRlLmgi
CiAjaW5jbHVkZSAiV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5oIgotI2luY2x1ZGUg
PFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dEVuY29kaW5nLmg+
CiAjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5o
PgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAppbmRleCA5YmM3ZjY3M2Vi
NTVkOGRlYjExZmZlNTY5ODdiZDUxMzYwOTgwYTZmLi5mMWUxOGRkM2QxY2QxODBhNGIyZTQ0OGVi
Mzk3YjBmYzZhNWZiMzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcApAQCAtNTQsMTAgKzU0LDEwIEBACiAjaW5jbHVk
ZSAiV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFU
eXBlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUmVtb3RlSW5zcGVjdG9yLmg+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4K
ICNpbmNsdWRlIDxsaWJpbnRsLmg+CiAjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHd0Zi9G
aWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTGFu
Z3VhZ2UuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KQEAgLTMzMywxOSArMzMz
LDE5IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYkNvbnRleHRDb25zdHJ1Y3RlZChHT2JqZWN0KiBv
YmplY3QpCiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBidW5kbGVGaWxlbmFtZShnX2J1aWxkX2ZpbGVu
YW1lKGluamVjdGVkQnVuZGxlRGlyZWN0b3J5KCksIElOSkVDVEVEX0JVTkRMRV9GSUxFTkFNRSwg
bnVsbHB0cikpOwogCiAgICAgQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gY29uZmlndXJh
dGlvbjsKLSAgICBjb25maWd1cmF0aW9uLnNldEluamVjdGVkQnVuZGxlUGF0aChXZWJDb3JlOjpG
aWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGJ1bmRsZUZpbGVu
YW1lLmdldCgpKSk7CisgICAgY29uZmlndXJhdGlvbi5zZXRJbmplY3RlZEJ1bmRsZVBhdGgoRmls
ZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihidW5kbGVGaWxlbmFt
ZS5nZXQoKSkpOwogICAgIGNvbmZpZ3VyYXRpb24uc2V0RGlza0NhY2hlU3BlY3VsYXRpdmVWYWxp
ZGF0aW9uRW5hYmxlZCh0cnVlKTsKIAogICAgIFdlYktpdFdlYkNvbnRleHQqIHdlYkNvbnRleHQg
PSBXRUJLSVRfV0VCX0NPTlRFWFQob2JqZWN0KTsKICAgICBXZWJLaXRXZWJDb250ZXh0UHJpdmF0
ZSogcHJpdiA9IHdlYkNvbnRleHQtPnByaXY7CiAgICAgaWYgKHByaXYtPndlYnNpdGVEYXRhTWFu
YWdlciAmJiAhd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2lzX2VwaGVtZXJhbChwcml2LT53
ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSB7Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0TG9j
YWxTdG9yYWdlRGlyZWN0b3J5KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24od2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9sb2NhbF9z
dG9yYWdlX2RpcmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSk7Ci0gICAg
ICAgIGNvbmZpZ3VyYXRpb24uc2V0RGlza0NhY2hlRGlyZWN0b3J5KFdlYkNvcmU6OkZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdG
cm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9n
ZXRfZGlza19jYWNoZV9kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSks
IG5ldHdvcmtDYWNoZVN1YmRpcmVjdG9yeSkpOwotICAgICAgICBjb25maWd1cmF0aW9uLnNldEFw
cGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X29m
ZmxpbmVfYXBwbGljYXRpb25fY2FjaGVfZGlyZWN0b3J5KHByaXYtPndlYnNpdGVEYXRhTWFuYWdl
ci5nZXQoKSkpKTsKLSAgICAgICAgY29uZmlndXJhdGlvbi5zZXRJbmRleGVkREJEYXRhYmFzZURp
cmVjdG9yeShXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfaW5kZXhlZGRiX2RpcmVjdG9y
eShwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSk7Ci0gICAgICAgIGNvbmZpZ3VyYXRp
b24uc2V0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5n
RnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJf
Z2V0X3dlYnNxbF9kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSkpOwor
ICAgICAgICBjb25maWd1cmF0aW9uLnNldExvY2FsU3RvcmFnZURpcmVjdG9yeShGaWxlU3lzdGVt
OjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHdlYmtpdF93ZWJzaXRlX2RhdGFf
bWFuYWdlcl9nZXRfbG9jYWxfc3RvcmFnZV9kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURhdGFNYW5h
Z2VyLmdldCgpKSkpOworICAgICAgICBjb25maWd1cmF0aW9uLnNldERpc2tDYWNoZURpcmVjdG9y
eShGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6c3RyaW5n
RnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJf
Z2V0X2Rpc2tfY2FjaGVfZGlyZWN0b3J5KHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkp
LCBuZXR3b3JrQ2FjaGVTdWJkaXJlY3RvcnkpKTsKKyAgICAgICAgY29uZmlndXJhdGlvbi5zZXRB
cHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24od2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9vZmZsaW5lX2Fw
cGxpY2F0aW9uX2NhY2hlX2RpcmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkp
KSk7CisgICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnko
RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vi
c2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2luZGV4ZWRkYl9kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURh
dGFNYW5hZ2VyLmdldCgpKSkpOworICAgICAgICBjb25maWd1cmF0aW9uLnNldFdlYlNRTERhdGFi
YXNlRGlyZWN0b3J5KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24od2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF93ZWJzcWxfZGlyZWN0b3J5KHByaXYt
PndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpKTsKICAgICB9IGVsc2UgaWYgKCFwcml2LT5sb2Nh
bFN0b3JhZ2VEaXJlY3RvcnkuaXNOdWxsKCkpCi0gICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0TG9j
YWxTdG9yYWdlRGlyZWN0b3J5KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24ocHJpdi0+bG9jYWxTdG9yYWdlRGlyZWN0b3J5LmRhdGEoKSkpOwor
ICAgICAgICBjb25maWd1cmF0aW9uLnNldExvY2FsU3RvcmFnZURpcmVjdG9yeShGaWxlU3lzdGVt
OjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPmxvY2FsU3RvcmFnZURp
cmVjdG9yeS5kYXRhKCkpKTsKIAogICAgIHByaXYtPnByb2Nlc3NQb29sID0gV2ViUHJvY2Vzc1Bv
b2w6OmNyZWF0ZShjb25maWd1cmF0aW9uKTsKIApAQCAtOTIzLDcgKzkyMyw3IEBAIHZvaWQgd2Vi
a2l0X3dlYl9jb250ZXh0X3NldF9mYXZpY29uX2RhdGFiYXNlX2RpcmVjdG9yeShXZWJLaXRXZWJD
b250ZXh0KiBjb250ZXh0CiAgICAgV2ViS2l0V2ViQ29udGV4dFByaXZhdGUqIHByaXYgPSBjb250
ZXh0LT5wcml2OwogICAgIGVuc3VyZUZhdmljb25EYXRhYmFzZShjb250ZXh0KTsKIAotICAgIFN0
cmluZyBkaXJlY3RvcnlQYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKKyAgICBTdHJpbmcgZGlyZWN0b3J5UGF0aCA9IEZp
bGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAgICAg
Ly8gVXNlIGRlZmF1bHQgaWYgbnVsbHB0ciBpcyBwYXNzZWQgYXMgcGFyYW1ldGVyLgogICAgIGlm
IChkaXJlY3RvcnlQYXRoLmlzRW1wdHkoKSkgewogI2lmIFBMQVRGT1JNKEdUSykKQEAgLTkzMiw3
ICs5MzIsNyBAQCB2b2lkIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfZmF2aWNvbl9kYXRhYmFzZV9k
aXJlY3RvcnkoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dAogICAgICAgICBjb25zdCBjaGFyKiBw
b3J0RGlyZWN0b3J5ID0gIndwZSI7CiAjZW5kaWYKICAgICAgICAgR1VuaXF1ZVB0cjxnY2hhcj4g
ZGF0YWJhc2VEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFtZShnX2dldF91c2VyX2NhY2hlX2Rpcigp
LCBwb3J0RGlyZWN0b3J5LCAiaWNvbmRhdGFiYXNlIiwgbnVsbHB0cikpOwotICAgICAgICBkaXJl
Y3RvcnlQYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihkYXRhYmFzZURpcmVjdG9yeS5nZXQoKSk7CisgICAgICAgIGRpcmVjdG9yeVBh
dGggPSBGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRhdGFi
YXNlRGlyZWN0b3J5LmdldCgpKTsKICAgICB9CiAgICAgcHJpdi0+ZmF2aWNvbkRhdGFiYXNlRGly
ZWN0b3J5ID0gZGlyZWN0b3J5UGF0aC51dGY4KCk7CiAKQEAgLTk0MSw3ICs5NDEsNyBAQCB2b2lk
IHdlYmtpdF93ZWJfY29udGV4dF9zZXRfZmF2aWNvbl9kYXRhYmFzZV9kaXJlY3RvcnkoV2ViS2l0
V2ViQ29udGV4dCogY29udGV4dAogICAgICAgICAiV2VicGFnZUljb25zLmRiIiwgbnVsbHB0cikp
OwogCiAgICAgLy8gU2V0dGluZyB0aGUgcGF0aCB3aWxsIGNhdXNlIHRoZSBpY29uIGRhdGFiYXNl
IHRvIGJlIG9wZW5lZC4KLSAgICB3ZWJraXRGYXZpY29uRGF0YWJhc2VPcGVuKHByaXYtPmZhdmlj
b25EYXRhYmFzZS5nZXQoKSwgV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihmYXZpY29uRGF0YWJhc2VQYXRoLmdldCgpKSk7CisgICAgd2Via2l0
RmF2aWNvbkRhdGFiYXNlT3Blbihwcml2LT5mYXZpY29uRGF0YWJhc2UuZ2V0KCksIEZpbGVTeXN0
ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmF2aWNvbkRhdGFiYXNlUGF0
aC5nZXQoKSkpOwogCiAgICAgaWYgKHdlYmtpdF93ZWJfY29udGV4dF9pc19lcGhlbWVyYWwoY29u
dGV4dCkpCiAgICAgICAgIHdlYmtpdEZhdmljb25EYXRhYmFzZVNldFByaXZhdGVCcm93c2luZ0Vu
YWJsZWQocHJpdi0+ZmF2aWNvbkRhdGFiYXNlLmdldCgpLCB0cnVlKTsKQEAgLTEwMjUsNyArMTAy
NSw3IEBAIHZvaWQgd2Via2l0X3dlYl9jb250ZXh0X3NldF9hZGRpdGlvbmFsX3BsdWdpbnNfZGly
ZWN0b3J5KFdlYktpdFdlYkNvbnRleHQqIGNvbnRlCiAgICAgZ19yZXR1cm5faWZfZmFpbChkaXJl
Y3RvcnkpOwogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0gICAgY29udGV4dC0+
cHJpdi0+cHJvY2Vzc1Bvb2wtPnNldEFkZGl0aW9uYWxQbHVnaW5zRGlyZWN0b3J5KFdlYkNvcmU6
OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGlyZWN0b3J5
KSk7CisgICAgY29udGV4dC0+cHJpdi0+cHJvY2Vzc1Bvb2wtPnNldEFkZGl0aW9uYWxQbHVnaW5z
RGlyZWN0b3J5KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
ZGlyZWN0b3J5KSk7CiAjZW5kaWYKIH0KIApAQCAtMTQxNyw3ICsxNDE3LDcgQEAgdm9pZCB3ZWJr
aXRfd2ViX2NvbnRleHRfc2V0X2Rpc2tfY2FjaGVfZGlyZWN0b3J5KFdlYktpdFdlYkNvbnRleHQq
IGNvbnRleHQsIGNvbnMKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfQ09OVEVY
VChjb250ZXh0KSk7CiAgICAgZ19yZXR1cm5faWZfZmFpbChkaXJlY3RvcnkpOwogCi0gICAgY29u
dGV4dC0+cHJpdi0+cHJvY2Vzc1Bvb2wtPmNvbmZpZ3VyYXRpb24oKS5zZXREaXNrQ2FjaGVEaXJl
Y3RvcnkoV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNv
cmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGlyZWN0
b3J5KSwgbmV0d29ya0NhY2hlU3ViZGlyZWN0b3J5KSk7CisgICAgY29udGV4dC0+cHJpdi0+cHJv
Y2Vzc1Bvb2wtPmNvbmZpZ3VyYXRpb24oKS5zZXREaXNrQ2FjaGVEaXJlY3RvcnkoRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oZGlyZWN0b3J5KSwgbmV0d29ya0NhY2hlU3ViZGlyZWN0b3J5KSk7
CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5jcHAKaW5kZXggN2UxZDE0YjY3Yjk1
MzhmNDc1ZTBmOGFmNDUwYWFiZGVmMmUyMTU1ZS4uMWNjMDY1NDExZTczMWZhNjcyYzQzNGYzYjNj
MGFiZTlhNTY5M2ViZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuY3BwCkBAIC0yNiw4ICsyNiw4
IEBACiAjaW5jbHVkZSAiV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyUHJpdmF0ZS5oIgogI2luY2x1
ZGUgIldlYktpdFdlYnNpdGVEYXRhUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhRmV0
Y2hPcHRpb24uaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxn
bGliL2dpMThuLWxpYi5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8
d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL1dURkdUeXBlLmg+CiAK
QEAgLTM2MywxMyArMzYzLDEzIEBAIEFQSTo6V2Vic2l0ZURhdGFTdG9yZSYgd2Via2l0V2Vic2l0
ZURhdGFNYW5hZ2VyR2V0RGF0YVN0b3JlKFdlYktpdFdlYnNpdGVEYXRhTWFuCiAgICAgaWYgKCFw
cml2LT53ZWJzaXRlRGF0YVN0b3JlKSB7CiAgICAgICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IFdl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKICAgICAgICAgY29uZmlndXJh
dGlvbi0+c2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCFwcml2LT5sb2NhbFN0b3JhZ2VEaXJlY3Rv
cnkgPwotICAgICAgICAgICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9y
YWdlRGlyZWN0b3J5KCkgOiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKHByaXYtPmxvY2FsU3RvcmFnZURpcmVjdG9yeS5nZXQoKSkpOworICAg
ICAgICAgICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0
b3J5KCkgOiBGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBy
aXYtPmxvY2FsU3RvcmFnZURpcmVjdG9yeS5nZXQoKSkpOwogICAgICAgICBjb25maWd1cmF0aW9u
LT5zZXROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoIXByaXYtPmRpc2tDYWNoZURpcmVjdG9yeSA/Ci0g
ICAgICAgICAgICBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJl
Y3RvcnkoKSA6IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChX
ZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBy
aXYtPmRpc2tDYWNoZURpcmVjdG9yeS5nZXQoKSksIG5ldHdvcmtDYWNoZVN1YmRpcmVjdG9yeSkp
OworICAgICAgICAgICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hl
RGlyZWN0b3J5KCkgOiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5
c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5kaXNrQ2FjaGVE
aXJlY3RvcnkuZ2V0KCkpLCBuZXR3b3JrQ2FjaGVTdWJkaXJlY3RvcnkpKTsKICAgICAgICAgY29u
ZmlndXJhdGlvbi0+c2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSghcHJpdi0+YXBwbGljYXRp
b25DYWNoZURpcmVjdG9yeSA/Ci0gICAgICAgICAgICBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkgOiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpz
dHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPmFwcGxpY2F0aW9uQ2FjaGVE
aXJlY3RvcnkuZ2V0KCkpKTsKKyAgICAgICAgICAgIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKSA6IEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21G
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeS5n
ZXQoKSkpOwogICAgICAgICBjb25maWd1cmF0aW9uLT5zZXRXZWJTUUxEYXRhYmFzZURpcmVjdG9y
eSghcHJpdi0+d2ViU1FMRGlyZWN0b3J5ID8KLSAgICAgICAgICAgIEFQSTo6V2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkgOiBXZWJDb3JlOjpGaWxlU3lz
dGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPndlYlNRTERpcmVj
dG9yeS5nZXQoKSkpOworICAgICAgICAgICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKSA6IEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24ocHJpdi0+d2ViU1FMRGlyZWN0b3J5LmdldCgpKSk7CiAgICAgICAg
IGNvbmZpZ3VyYXRpb24tPnNldE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoQVBJOjpXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpKTsKICAgICAgICAg
cHJpdi0+d2Vic2l0ZURhdGFTdG9yZSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlTGVn
YWN5KFdURk1vdmUoY29uZmlndXJhdGlvbikpOwogICAgIH0KQEAgLTUzMiw3ICs1MzIsNyBAQCBj
b25zdCBnY2hhciogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9kaXNrX2NhY2hlX2Rp
cmVjdG9yeShXZWJLaXRXZWJzaXRlRAogCiAgICAgaWYgKCFwcml2LT5kaXNrQ2FjaGVEaXJlY3Rv
cnkpIHsKICAgICAgICAgLy8gVGhlIGRlZmF1bHQgZGlyZWN0b3J5IGFscmVhZHkgaGFzIHRoZSBz
dWJkaXJlY3RvcnkuCi0gICAgICAgIHByaXYtPmRpc2tDYWNoZURpcmVjdG9yeS5yZXNldChnX3N0
cmR1cChXZWJDb3JlOjpGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKEFQSTo6V2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpKS51dGY4KCkuZGF0YSgpKSk7Cisg
ICAgICAgIHByaXYtPmRpc2tDYWNoZURpcmVjdG9yeS5yZXNldChnX3N0cmR1cChGaWxlU3lzdGVt
OjpkaXJlY3RvcnlOYW1lKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5ldHdvcmtDYWNo
ZURpcmVjdG9yeSgpKS51dGY4KCkuZGF0YSgpKSk7CiAgICAgfQogICAgIHJldHVybiBwcml2LT5k
aXNrQ2FjaGVEaXJlY3RvcnkuZ2V0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvd2luL0FQSVdlYnNpdGVEYXRhU3RvcmVXaW4uY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL3dpbi9BUElXZWJzaXRlRGF0YVN0b3JlV2luLmNwcAppbmRleCAxOWJl
Mjg4ZDQ4MmRhYWZkZDE4ZTRjZmRmZWRjZTIwM2FhYzc1YmRkLi4zMjI1YjkyMTcwZDdjOThiNGJl
ODQ1YWNjZmU4ZDhjMWIzNjdkN2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvd2luL0FQSVdlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS93aW4vQVBJV2Vic2l0ZURhdGFTdG9yZVdpbi5jcHAKQEAgLTI2LDQzICsy
Niw0MyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3Rv
cmUuaCIKIAotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPHd0Zi9G
aWxlU3lzdGVtLmg+CiAKIG5hbWVzcGFjZSBBUEkgewogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKQogewotICAgIHJldHVybiBXZWJD
b3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5
c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJBcHBsaWNhdGlvbkNh
Y2hlIik7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChG
aWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkFwcGxpY2F0
aW9uQ2FjaGUiKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRDYWNoZVN0
b3JhZ2VEaXJlY3RvcnkoKQogewotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lm
aWNTdG9yYWdlRGlyZWN0b3J5KCksICJDYWNoZVN0b3JhZ2UiKTsKKyAgICByZXR1cm4gRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNp
ZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiQ2FjaGVTdG9yYWdlIik7CiB9CiAKIFN0cmluZyBXZWJz
aXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1
cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6
OkZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiTmV0d29y
a0NhY2hlIik7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIk5ldHdv
cmtDYWNoZSIpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEluZGV4ZWRE
QkRhdGFiYXNlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmxvY2FsVXNlclNw
ZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiSW5kZXhlZERCIik7CisgICAgcmV0dXJuIEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVj
aWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkluZGV4ZWREQiIpOwogfQogCiBTdHJpbmcgV2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKQog
ewotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5
KCksICJTZXJ2aWNlV29ya2VycyIpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0
b3J5KCksICJTZXJ2aWNlV29ya2VycyIpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjps
b2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkxvY2FsU3RvcmFnZSIpOworICAg
IHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6
bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJMb2NhbFN0b3JhZ2UiKTsKIH0K
IAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0
b3J5KCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURp
cmVjdG9yeSgpLCAiTWVkaWFLZXlTdG9yYWdlIik7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3Jh
Z2VEaXJlY3RvcnkoKSwgIk1lZGlhS2V5U3RvcmFnZSIpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpCkBAIC03
Myw1NyArNzMsNTcgQEAgU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREZXZpY2VJZEhh
c2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06Omxv
Y2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiV2ViU1FMIik7CisgICAgcmV0dXJu
IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVz
ZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIldlYlNRTCIpOwogfQogCiBTdHJpbmcgV2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKQog
ewotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5
KCksICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIik7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3Jh
Z2VEaXJlY3RvcnkoKSwgIlJlc291cmNlTG9hZFN0YXRpc3RpY3MiKTsKIH0KIAogU3RyaW5nIFdl
YnNpdGVEYXRhU3RvcmU6OmNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNv
bnN0IFN0cmluZyYgZGlyZWN0b3J5TmFtZSkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmxvY2Fs
VXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCBkaXJlY3RvcnlOYW1lKTsKKyAgICByZXR1
cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2Fs
VXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCBkaXJlY3RvcnlOYW1lKTsKIH0KIAogU3Ry
aW5nIFdlYnNpdGVEYXRhU3RvcmU6OndlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5TmFtZSkKIHsKLSAgICByZXR1cm4gV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVT
eXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCBkaXJlY3RvcnlOYW1l
KTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVT
eXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCBkaXJlY3RvcnlOYW1l
KTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRBcHBsaWNhdGlv
bkNhY2hlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNp
ZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiQXBwbGljYXRpb25DYWNoZSIpOworICAgIHJldHVybiBG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2Vy
U3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJBcHBsaWNhdGlvbkNhY2hlIik7CiB9CiAKIFN0
cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5
KCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVj
dG9yeSgpLCAiTmV0d29ya0NhY2hlIik7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJl
Y3RvcnkoKSwgIk5ldHdvcmtDYWNoZSIpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6
bGVnYWN5RGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVT
eXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiV2ViU1FMIik7Cisg
ICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVt
Ojpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIldlYlNRTCIpOwogfQogCiBT
dHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGly
ZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFn
ZURpcmVjdG9yeSgpLCAiSW5kZXhlZERCIik7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VE
aXJlY3RvcnkoKSwgIkluZGV4ZWREQiIpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6
bGVnYWN5RGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIFdlYkNv
cmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lz
dGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkxvY2FsU3RvcmFnZSIp
OworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5
c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJMb2NhbFN0b3JhZ2Ui
KTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRNZWRpYUNhY2hl
RGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3Rv
cmFnZURpcmVjdG9yeSgpLCAiTWVkaWFDYWNoZSIpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9y
YWdlRGlyZWN0b3J5KCksICJNZWRpYUNhY2hlIik7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0
b3JlOjpsZWdhY3lEZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpCiB7Ci0gICAgcmV0
dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIk1lZGlh
S2V5U3RvcmFnZSIpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJN
ZWRpYUtleVN0b3JhZ2UiKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURl
ZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKQpAQCAtMTM0LDcgKzEzNCw3
IEBAIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0RGV2aWNlSWRIYXNoU2Fs
dHNTdG9yYWdlRGlyZWN0b3J5KCkKIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURl
ZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIFdl
YkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxl
U3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkphdmFTY3JpcHRD
b3JlRGVidWciKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiSmF2
YVNjcmlwdENvcmVEZWJ1ZyIpOwogfQogCiBSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbj4gV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRp
b24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJB
dXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9u
L1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAppbmRleCA4MDU0N2U2YmUxMzg2NTVmMDc5OGI2NzZk
YzEyZGM5YWIzM2FjZjFiLi5mODg0NGFmZTZkMjJlNGNkNWVlMjA4MTQ4YjRmNDkyZjdjYzYzMTBk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9t
YXRpb25TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9u
L1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcApAQCAtODA2LDcgKzgwNiw3IEBAIHZvaWQgV2ViQXV0
b21hdGlvblNlc3Npb246OndpbGxDbG9zZVBhZ2UoY29uc3QgV2ViUGFnZVByb3h5JiBwYWdlKQog
CiBzdGF0aWMgYm9vbCBmaWxlQ2FuQmVBY2NlcHRlZEZvclVwbG9hZChjb25zdCBTdHJpbmcmIGZp
bGVuYW1lLCBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGFsbG93ZWRNSU1FVHlwZXMsIGNvbnN0IEhh
c2hTZXQ8U3RyaW5nPiYgYWxsb3dlZEZpbGVFeHRlbnNpb25zKQogewotICAgIGlmICghV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhmaWxlbmFtZSkpCisgICAgaWYgKCFGaWxlU3lzdGVt
OjpmaWxlRXhpc3RzKGZpbGVuYW1lKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYg
KGFsbG93ZWRNSU1FVHlwZXMuaXNFbXB0eSgpICYmIGFsbG93ZWRGaWxlRXh0ZW5zaW9ucy5pc0Vt
cHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9h
ZENsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50
Lm1tCmluZGV4IDNiNDk2MjhmZGY2ZGZjNWFhZGQwMjlkNWEyY2JjYjZiZmI3OGNmYzEuLmM3Mjdi
ZDIzZWY5NTUyNTFmNzk4MDlkNjljNTgyMzIxOTdhZjFlYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tCkBAIC00MiwxMCArNDIsMTAgQEAK
ICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgogI2ltcG9ydCAiX1dLRG93bmxvYWREZWxlZ2F0
ZS5oIgogI2ltcG9ydCAiX1dLRG93bmxvYWRJbnRlcm5hbC5oIgotI2ltcG9ydCA8V2ViQ29yZS9G
aWxlU3lzdGVtLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbXBvcnQg
PFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+Cisj
aW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtMTgx
LDcgKzE4MSw3IEBAIHZvaWQgRG93bmxvYWRDbGllbnQ6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1
Z2dlc3RlZEZpbGVuYW1lKFdlYlByb2Nlc3NQb29sJiwgRG93CiB7CiAjaWYgVVNFKFNZU1RFTV9Q
UkVWSUVXKQogICAgIGlmIChkb3dubG9hZFByb3h5LmlzU3lzdGVtUHJldmlld0Rvd25sb2FkKCkp
IHsKLSAgICAgICAgTlNTdHJpbmcgKnRlbXBvcmFyeURpcmVjdG9yeSA9IFdlYkNvcmU6OkZpbGVT
eXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShAIlN5c3RlbVByZXZpZXdzIik7CisgICAg
ICAgIE5TU3RyaW5nICp0ZW1wb3JhcnlEaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpjcmVhdGVUZW1w
b3JhcnlEaXJlY3RvcnkoQCJTeXN0ZW1QcmV2aWV3cyIpOwogICAgICAgICBOU1N0cmluZyAqZGVz
dGluYXRpb24gPSBbdGVtcG9yYXJ5RGlyZWN0b3J5IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBv
bmVudDpmaWxlbmFtZV07CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKEFsbG93T3ZlcndyaXRl
OjpZZXMsIGRlc3RpbmF0aW9uKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KaW5kZXggNTZjZjBm
ZDA1OTBjNjE1NDNkMzQxMGY4NGY2NmQxOWM3ZWQ4NTFiZi4uMmRhZjc1NTcxY2NiMWE5ZDcwNWJh
YTA1N2FkNjI0YTVhNjk4YTQzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCkBAIC00Myw3ICs0Myw2IEBACiAjaW1wb3J0
ICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbXBvcnQgIldpbmRvd1NlcnZlckNvbm5lY3Rpb24u
aCIKICNpbXBvcnQgPFdlYkNvcmUvQ29sb3IuaD4KLSNpbXBvcnQgPFdlYkNvcmUvRmlsZVN5c3Rl
bS5oPgogI2ltcG9ydCA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KICNpbXBvcnQg
PFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1QYXN0
ZWJvYXJkLmg+CkBAIC01Miw2ICs1MSw3IEBACiAjaW1wb3J0IDxwYWwvc3BpL2NmL0NGTmV0d29y
a1NQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0tleWVkQXJjaGl2ZXJTUEkuaD4KICNp
bXBvcnQgPHN5cy9wYXJhbS5oPgorI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQg
PHd0Zi9Qcm9jZXNzUHJpdmlsZWdlLmg+CiAjaW1wb3J0IDx3dGYvY29jb2EvRW50aXRsZW1lbnRz
Lmg+CiAjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9keWxkU1BJLmg+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IGQ4ZmNjOGM3Yjk3MDdjNDFmNmU3
MWE1OWVlZjFiNDk4OGMwZGYwZTUuLjQ2M2QzYjEyMmI2MDc5MmEwYjk3MGE0MjNjM2ZhZTQxNDg4
NDU4NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJ
bXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1t
CkBAIC04NCw3ICs4NCw2IEBACiAjaW1wb3J0IDxXZWJDb3JlL0RyYWdEYXRhLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0RyYWdJdGVtLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0VkaXRvci5oPgotI2ltcG9y
dCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZvbnRBdHRyaWJ1dGVD
aGFuZ2VzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZvbnRBdHRyaWJ1dGVzLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0tleXByZXNzQ29tbWFuZC5oPgpAQCAtMTE1LDYgKzExNCw3IEBACiAjaW1wb3J0IDxw
YWwvc3BpL21hYy9OU1ZpZXdTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvbWFjL05TV2luZG93U1BJ
Lmg+CiAjaW1wb3J0IDxzeXMvc3RhdC5oPgorI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNp
bXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2ltcG9ydCA8d3RmL1Byb2Nlc3NQcml2aWxl
Z2UuaD4KICNpbXBvcnQgPHd0Zi9TZXRGb3JTY29wZS5oPgpAQCAtMzk2OSw3ICszOTY5LDcgQEAg
Ym9vbCBXZWJWaWV3SW1wbDo6cGVyZm9ybURyYWdPcGVyYXRpb24oaWQgPE5TRHJhZ2dpbmdJbmZv
PiBkcmFnZ2luZ0luZm8pCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAot
ICAgICAgICBOU1N0cmluZyAqZHJvcERlc3RpbmF0aW9uUGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0
ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShAIldlYktpdERyb3BEZXN0aW5hdGlvbiIpOwor
ICAgICAgICBOU1N0cmluZyAqZHJvcERlc3RpbmF0aW9uUGF0aCA9IEZpbGVTeXN0ZW06OmNyZWF0
ZVRlbXBvcmFyeURpcmVjdG9yeShAIldlYktpdERyb3BEZXN0aW5hdGlvbiIpOwogICAgICAgICBp
ZiAoIWRyb3BEZXN0aW5hdGlvblBhdGgpIHsKICAgICAgICAgICAgIGRlbGV0ZSBkcmFnRGF0YTsK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTQyOTEsNyArNDI5MSw3IEBAIE5TQXJyYXkg
KldlYlZpZXdJbXBsOjpuYW1lc09mUHJvbWlzZWRGaWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9uKE5T
VVJMICpkcm9wRGVzdGluCiAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBpbWFn
ZSBmaWxlIHZpYSAtW05TRmlsZVdyYXBwZXIgd3JpdGVUb1VSTDpvcHRpb25zOm9yaWdpbmFsQ29u
dGVudHNVUkw6ZXJyb3I6XSIpOwogCiAgICAgaWYgKCFtX3Byb21pc2VkVVJMLmlzRW1wdHkoKSkK
LSAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6c2V0TWV0YWRhdGFVUkwoU3RyaW5nKHBhdGgp
LCBtX3Byb21pc2VkVVJMKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6c2V0TWV0YWRhdGFVUkwoU3Ry
aW5nKHBhdGgpLCBtX3Byb21pc2VkVVJMKTsKICAgICAKICAgICByZXR1cm4gW05TQXJyYXkgYXJy
YXlXaXRoT2JqZWN0OltwYXRoIGxhc3RQYXRoQ29tcG9uZW50XV07CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5jcHAKaW5kZXggZTYw
ZWUzZjRmOTRiMDMyZDM5OWI3YTM3N2E3ZThmOWNjYTIzNzUxZC4uMTlhN2ExMmNmYTNmMzFiZjFl
MjEzN2MzNWNkNTdkMGE1MDdiOWE5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0RldmljZUlkSGFzaFNhbHRTdG9yYWdlLmNwcApAQCAtMjgsOSArMjgsOSBAQAogCiAjaW5j
bHVkZSAiUGVyc2lzdGVuY3lVdGlscy5oIgogCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVt
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvQ3J5
cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5o
PgogI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcAppbmRleCA3NTEwMmVlM2Iw
MDQyNGE0ODA5NDE1ZjM2YjA0ZWQzYjUzY2FkMTQ4Li5lMDkyNTRiMDE4NzI0OWM5OTJmYzJmY2Q3
Mjg4OGU3ODRiMTkzMzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwCkBAIC0zNiw4ICszNiw4IEBACiAjaW5jbHVkZSAiV2Vi
UHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNsdWRl
ICJXZWJQcm90ZWN0aW9uU3BhY2UuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL01JTUVUeXBlUmVnaXN0cnkuaD4KKyNpbmNsdWRlIDx3dGYvRmls
ZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TGF1bmNoZXIvZ2xpYi9CdWJibGV3cmFwTGF1bmNoZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTGF1bmNoZXIvZ2xpYi9CdWJibGV3cmFwTGF1bmNoZXIuY3BwCmluZGV4IGU0MzRlMDMz
Mzk4N2E5Mjc0OWMwMGRkYzViNTMzNjA5MDRkZWYxYmUuLjE2NzIzZGZkZGE0ZmFkYmI5MmFhN2Vh
MGE4ZTZhZTU4ODRmMmQwNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xh
dW5jaGVyL2dsaWIvQnViYmxld3JhcExhdW5jaGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9MYXVuY2hlci9nbGliL0J1YmJsZXdyYXBMYXVuY2hlci5jcHAKQEAgLTIwLDEyICsy
MCwxMiBAQAogCiAjaWYgRU5BQkxFKEJVQkJMRVdSQVBfU0FOREJPWCkKIAotI2luY2x1ZGUgPFdl
YkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1EaXNwbGF5Lmg+
CiAjaW5jbHVkZSA8ZmNudGwuaD4KICNpbmNsdWRlIDxnbGliLmg+CiAjaW5jbHVkZSA8c2VjY29t
cC5oPgogI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+
CiAjaW5jbHVkZSA8d3RmL2dsaWIvR0xpYlV0aWxpdGllcy5oPgogI2luY2x1ZGUgPHd0Zi9nbGli
L0dSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9nbGliL1Byb2Nlc3NMYXVuY2hlckdM
aWIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9Qcm9jZXNzTGF1
bmNoZXJHTGliLmNwcAppbmRleCBjNTY2MTg3M2EwNWU3MTA5YjUxN2VhNzViZGZhYmNjZDhmMjNm
Yjg2Li4wYzM5MDczZmUxZGU3YWRhZjUzMTI2ODNkODE2NDYyZjY0ZDNlYzZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9nbGliL1Byb2Nlc3NMYXVuY2hlckdM
aWIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvUHJvY2Vz
c0xhdW5jaGVyR0xpYi5jcHAKQEAgLTMxLDEwICszMSwxMCBAQAogI2luY2x1ZGUgIkNvbm5lY3Rp
b24uaCIKICNpbmNsdWRlICJGbGF0cGFrTGF1bmNoZXIuaCIKICNpbmNsdWRlICJQcm9jZXNzRXhl
Y3V0YWJsZVBhdGguaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRl
IDxlcnJuby5oPgogI2luY2x1ZGUgPGZjbnRsLmg+CiAjaW5jbHVkZSA8Z2xpYi5oPgorI2luY2x1
ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRl
IDx3dGYvVW5pU3RkRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR0xpYlV0aWxpdGllcy5o
PgpAQCAtNDcsNyArNDcsNiBAQAogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQgewotdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKIHN0YXRpYyB2b2lkIGNoaWxkU2V0dXBGdW5jdGlvbihncG9p
bnRlciB1c2VyRGF0YSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Bs
dWdpbnMvZ3RrL1BsdWdpbkluZm9DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
bHVnaW5zL2d0ay9QbHVnaW5JbmZvQ2FjaGUuY3BwCmluZGV4IDgwNjQ3ZWIxMmVlNTI1MTFhMTE5
ZTg1ZmRlMmY1OWM0ZTIzNzc4ODUuLmEyOGEwMGEzODZjYWZlY2IzNzgyYTQxMTAzN2NhOWE1MzVk
YzIyMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1Bs
dWdpbkluZm9DYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9n
dGsvUGx1Z2luSW5mb0NhY2hlLmNwcApAQCAtMjksOCArMjksOCBAQAogI2lmIEVOQUJMRShORVRT
Q0FQRV9QTFVHSU5fQVBJKQogCiAjaW5jbHVkZSAiTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaCIKLSNp
bmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3Jt
RGlzcGxheS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTY2LDEwICs2NiwxMCBAQCBQ
bHVnaW5JbmZvQ2FjaGU6OlBsdWdpbkluZm9DYWNoZSgpCiAgICAgbV9zYXZlVG9GaWxlSWRsZS5z
ZXRQcmlvcml0eShHX1BSSU9SSVRZX0RFRkFVTFRfSURMRSk7CiAKICAgICBHVW5pcXVlUHRyPGNo
YXI+IGNhY2hlRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9jYWNoZV9kaXIo
KSwgIndlYmtpdGd0ayIsIG51bGxwdHIpKTsKLSAgICBpZiAoV2ViQ29yZTo6RmlsZVN5c3RlbTo6
bWFrZUFsbERpcmVjdG9yaWVzKGNhY2hlRGlyZWN0b3J5LmdldCgpKSkgeworICAgIGlmIChGaWxl
U3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoY2FjaGVEaXJlY3RvcnkuZ2V0KCkpKSB7CiAgICAg
ICAgIC8vIERlbGV0ZSBvbGQgY2FjaGUgZmlsZS4KICAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBv
bGRDYWNoZVBhdGgoZ19idWlsZF9maWxlbmFtZShjYWNoZURpcmVjdG9yeS5nZXQoKSwgInBsdWdp
bnMiLCBudWxscHRyKSk7Ci0gICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUo
V2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihv
bGRDYWNoZVBhdGguZ2V0KCkpKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShGaWxl
U3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKG9sZENhY2hlUGF0aC5n
ZXQoKSkpOwogCiAgICAgICAgIG1fY2FjaGVQYXRoLnJlc2V0KGdfYnVpbGRfZmlsZW5hbWUoY2Fj
aGVEaXJlY3RvcnkuZ2V0KCksIGNhY2hlRmlsZW5hbWVGb3JDdXJyZW50RGlzcGxheSgpLCBudWxs
cHRyKSk7CiAgICAgICAgIGdfa2V5X2ZpbGVfbG9hZF9mcm9tX2ZpbGUobV9jYWNoZUZpbGUuZ2V0
KCksIG1fY2FjaGVQYXRoLmdldCgpLCBHX0tFWV9GSUxFX05PTkUsIG51bGxwdHIpOwpAQCAtMTEy
LDcgKzExMiw3IEBAIGJvb2wgUGx1Z2luSW5mb0NhY2hlOjpnZXRQbHVnaW5JbmZvKGNvbnN0IFN0
cmluZyYgcGx1Z2luUGF0aCwgUGx1Z2luTW9kdWxlSW5mbyYKICAgICBpZiAoIWdfa2V5X2ZpbGVf
aGFzX2dyb3VwKG1fY2FjaGVGaWxlLmdldCgpLCBwbHVnaW5Hcm91cC5kYXRhKCkpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIGxhc3RNb2RpZmllZFRpbWUgPSBXZWJDb3JlOjpG
aWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShwbHVnaW5QYXRoKTsKKyAgICBhdXRv
IGxhc3RNb2RpZmllZFRpbWUgPSBGaWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShw
bHVnaW5QYXRoKTsKICAgICBpZiAoIWxhc3RNb2RpZmllZFRpbWUpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB0aW1lX3QgY2FjaGVkTGFzdE1vZGlmaWVkID0gc3RhdGljX2Nhc3Q8dGltZV90
PihnX2tleV9maWxlX2dldF91aW50NjQobV9jYWNoZUZpbGUuZ2V0KCksIHBsdWdpbkdyb3VwLmRh
dGEoKSwgIm10aW1lIiwgbnVsbHB0cikpOwpAQCAtMTIwLDcgKzEyMCw3IEBAIGJvb2wgUGx1Z2lu
SW5mb0NhY2hlOjpnZXRQbHVnaW5JbmZvKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgUGx1Z2lu
TW9kdWxlSW5mbyYKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcGx1Z2luLnBhdGggPSBw
bHVnaW5QYXRoOwotICAgIHBsdWdpbi5pbmZvLmZpbGUgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpw
YXRoR2V0RmlsZU5hbWUocGx1Z2luUGF0aCk7CisgICAgcGx1Z2luLmluZm8uZmlsZSA9IEZpbGVT
eXN0ZW06OnBhdGhHZXRGaWxlTmFtZShwbHVnaW5QYXRoKTsKIAogICAgIEdVbmlxdWVQdHI8Y2hh
cj4gc3RyaW5nVmFsdWUoZ19rZXlfZmlsZV9nZXRfc3RyaW5nKG1fY2FjaGVGaWxlLmdldCgpLCBw
bHVnaW5Hcm91cC5kYXRhKCksICJuYW1lIiwgbnVsbHB0cikpOwogICAgIHBsdWdpbi5pbmZvLm5h
bWUgPSBTdHJpbmc6OmZyb21VVEY4KHN0cmluZ1ZhbHVlLmdldCgpKTsKQEAgLTE0MCw3ICsxNDAs
NyBAQCBib29sIFBsdWdpbkluZm9DYWNoZTo6Z2V0UGx1Z2luSW5mbyhjb25zdCBTdHJpbmcmIHBs
dWdpblBhdGgsIFBsdWdpbk1vZHVsZUluZm8mCiAKIHZvaWQgUGx1Z2luSW5mb0NhY2hlOjp1cGRh
dGVQbHVnaW5JbmZvKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgY29uc3QgUGx1Z2luTW9kdWxl
SW5mbyYgcGx1Z2luKQogewotICAgIGF1dG8gbGFzdE1vZGlmaWVkVGltZSA9IFdlYkNvcmU6OkZp
bGVTeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKHBsdWdpblBhdGgpOworICAgIGF1dG8g
bGFzdE1vZGlmaWVkVGltZSA9IEZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKHBs
dWdpblBhdGgpOwogICAgIGlmICghbGFzdE1vZGlmaWVkVGltZSkKICAgICAgICAgcmV0dXJuOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5Q
cm9jZXNzUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL21hYy9Q
bHVnaW5Qcm9jZXNzUHJveHlNYWMubW0KaW5kZXggODlmYWI1ZWNiNjY2ZDJiNDRmY2MyMjM5ZWJl
NWJhNWVlMWFjNjNkOC4uMzYzM2MyYWIwNzA2MDExZWJkN2JjMTNmMWEwYmZkYTVhZDZkZDliYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2luUHJv
Y2Vzc1Byb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvbWFj
L1BsdWdpblByb2Nlc3NQcm94eU1hYy5tbQpAQCAtMzMsMTEgKzMzLDExIEBACiAjaW1wb3J0ICJQ
bHVnaW5Qcm9jZXNzTWVzc2FnZXMuaCIKICNpbXBvcnQgIlNhbmRib3hVdGlsaXRpZXMuaCIKICNp
bXBvcnQgPFF1YXJ0ekNvcmUvQ0FSZW1vdGVMYXllclNlcnZlci5oPgotI2ltcG9ydCA8V2ViQ29y
ZS9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDxjcnRfZXh0ZXJucy5oPgogI2ltcG9ydCA8bWFjaC1v
L2R5bGQuaD4KICNpbXBvcnQgPHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg+CiAjaW1wb3J0IDxz
cGF3bi5oPgorI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0Zi9Qcm9jZXNz
UHJpdmlsZWdlLmg+CiAjaW1wb3J0IDx3dGYvVVJMLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CkBAIC01Nyw4ICs1Nyw2IEBAIC0gKEJPT0wpX3dhbnRzVXNlckF0dGVudGlvbgogQGVu
ZAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCiAgICAg
CiB2b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6cGxhdGZvcm1HZXRMYXVuY2hPcHRpb25zV2l0aEF0
dHJpYnV0ZXMoUHJvY2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zJiBsYXVuY2hPcHRpb25zLCBj
b25zdCBQbHVnaW5Qcm9jZXNzQXR0cmlidXRlcyYgcGx1Z2luUHJvY2Vzc0F0dHJpYnV0ZXMpCiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2lu
SW5mb1N0b3JlVW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgv
UGx1Z2luSW5mb1N0b3JlVW5peC5jcHAKaW5kZXggMWRmZDgwN2MxMjM5YzMwNzllZjkyNDA3NDUw
Yjg5ZWM5MTE5Y2YwYy4uYWEwOTQ3MzY4MTY1NGE5ZWY2NDQwNmIyYzY0MzkwM2Y3ZTAxMjYzZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpbklu
Zm9TdG9yZVVuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvdW5p
eC9QbHVnaW5JbmZvU3RvcmVVbml4LmNwcApAQCAtMzQsMTAgKzM0LDEwIEBACiAjaW5jbHVkZSAi
TmV0c2NhcGVQbHVnaW5Nb2R1bGUuaCIKICNpbmNsdWRlICJQbHVnaW5TZWFyY2hQYXRoLmgiCiAj
aW5jbHVkZSAiUHJvY2Vzc0V4ZWN1dGFibGVQYXRoLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxl
U3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybURpc3BsYXkuaD4KICNpbmNsdWRl
IDxsaW1pdHMuaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3Rl
bS5oPgogCiAjaWYgUExBVEZPUk0oR1RLKQogI2luY2x1ZGUgIlBsdWdpbkluZm9DYWNoZS5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpblBy
b2Nlc3NQcm94eVVuaXguY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy91bml4
L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3BwCmluZGV4IGY4OTYxMjE3MGQwMTExNjA0MzJlZWVl
YTNkOWI4OGEzNTM4YjcxMjIuLmM1MDBjMGZjZWE2Mjc4ODZiYWRkZGMzZmM5NTBjNmM0ZWEzOGJj
MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVn
aW5Qcm9jZXNzUHJveHlVbml4LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVn
aW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAKQEAgLTMyLDkgKzMyLDkgQEAKIAog
I2luY2x1ZGUgIlBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJQ
cm9jZXNzRXhlY3V0YWJsZVBhdGguaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtRGlzcGxheS5oPgogI2luY2x1ZGUgPHN5cy93YWl0
Lmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5jcHAKaW5kZXgg
NzI2ODgzYjNjZjgwZjQ4ZjJkYmZhNTYzZmM5YmY3YzU1ZDU3MDA2Zi4uNWJjZGE2M2E4NmIwZTFm
OGU5NjQ2MTk0MzA5OTI2Y2JhNTFmMmQxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5jcHAKQEAgLTY0LDcgKzY0LDcgQEAg
U2VydmljZVdvcmtlclByb2Nlc3NQcm94eTo6flNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkoKQog
Ym9vbCBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5OjpoYXNSZWdpc3RlcmVkU2VydmljZVdvcmtl
cnMoY29uc3QgU3RyaW5nJiBzZXJ2aWNlV29ya2VyRGlyZWN0b3J5KQogewogICAgIFN0cmluZyBy
ZWdpc3RyYXRpb25GaWxlID0gV2ViQ29yZTo6c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGFi
YXNlRmlsZW5hbWUoc2VydmljZVdvcmtlckRpcmVjdG9yeSk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6
OkZpbGVTeXN0ZW06OmZpbGVFeGlzdHMocmVnaXN0cmF0aW9uRmlsZSk7CisgICAgcmV0dXJuIEZp
bGVTeXN0ZW06OmZpbGVFeGlzdHMocmVnaXN0cmF0aW9uRmlsZSk7CiB9CiAKIHZvaWQgU2Vydmlj
ZVdvcmtlclByb2Nlc3NQcm94eTo6Z2V0TGF1bmNoT3B0aW9ucyhQcm9jZXNzTGF1bmNoZXI6Okxh
dW5jaE9wdGlvbnMmIGxhdW5jaE9wdGlvbnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwCmluZGV4IDBj
MjVkNjU3ZTk3NzZhNzQ3NGQyMDU1ZmRmNTQ4NzJhMDBkOGVkZGIuLjQ2ZmI2Yzc3Mjk0ZjNjNjMx
ZDRmZmZkZmMyNGExNDhmNzA4YTQ0Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwCkBAIC0yNywx
MiArMjcsMTIgQEAKICNpbmNsdWRlICJMb2NhbFN0b3JhZ2VEYXRhYmFzZS5oIgogCiAjaW5jbHVk
ZSAiTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxl
U3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVTdGF0ZW1lbnQuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1NRTGl0ZVRyYW5zYWN0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0
eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3RvcmFnZU1hcC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvU3VkZGVuVGVybWluYXRpb24uaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNr
ZXIuY3BwCmluZGV4IGFmZmQ3ZThhY2FlMmRlY2I1Yzg0NGU4NzNiNTZmN2QxNTNkMGFjOTYuLmMz
NzgxZGY2NzY5MDBjNjk0YmUxNGJmZTZhZTM2NDliYzE4ODkwYzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFn
ZURhdGFiYXNlVHJhY2tlci5jcHAKQEAgLTI3LDEwICsyNywxMCBAQAogI2luY2x1ZGUgIkxvY2Fs
U3RvcmFnZURhdGFiYXNlVHJhY2tlci5oIgogCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1
ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlRmlsZVN5
c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlU3RhdGVtZW50Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9UZXh0RW5jb2RpbmcuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2lu
Y2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNs
dWRlIDx3dGYvV29ya1F1ZXVlLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0K
aW5kZXggNDI3YTljODVhM2I5ODQ1YWU0Zjc1NGZiNGM3YTM5MjYzYzhjMTdjOS4uNjE5MDA1MDAw
NThkNWE4ZTA3NDhjYjM2MmMxZjc2YjQ0NTRlMmIyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRh
U3RvcmVDb2NvYS5tbQpAQCAtMzAsMTAgKzMwLDEwIEBACiAjaW1wb3J0ICJTdG9yYWdlTWFuYWdl
ci5oIgogI2ltcG9ydCAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCiAjaW1wb3J0
ICJXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oIgotI2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lz
dGVtLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgogI2lt
cG9ydCA8V2ViQ29yZS9TZWFyY2hQb3B1cE1lbnVDb2NvYS5oPgogI2ltcG9ydCA8cGFsL3NwaS9j
Zi9DRk5ldHdvcmtTUEkuaD4KKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbXBvcnQgPHd0Zi9Qcm9jZXNzUHJpdmlsZWdlLmg+CiAK
QEAgLTEyMSw3ICsxMjEsNyBAQCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0
YVN0b3JlOjpwYXJhbWV0ZXJzKCkKICAgICBwYXJhbWV0ZXJzLnBlbmRpbmdDb29raWVzID0gY29w
eVRvVmVjdG9yKG1fcGVuZGluZ0Nvb2tpZXMpOwogCiAgICAgaWYgKCFjb29raWVGaWxlLmlzRW1w
dHkoKSkKLSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRl
RGlyZWN0b3J5KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUoY29va2llRmlsZSks
IHBhcmFtZXRlcnMuY29va2llU3RvcmFnZVBhdGhFeHRlbnNpb25IYW5kbGUpOworICAgICAgICBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkoRmlsZVN5
c3RlbTo6ZGlyZWN0b3J5TmFtZShjb29raWVGaWxlKSwgcGFyYW1ldGVycy5jb29raWVTdG9yYWdl
UGF0aEV4dGVuc2lvbkhhbmRsZSk7CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAg
ICBwYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSA9IHJlc29sdmVkSW5kZXhlZERh
dGFiYXNlRGlyZWN0b3J5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IGI3YzgxODIzM2VjNDgwNGI4
NGNiOWFlODAyMmFmZjRmY2UyZjhkMjAuLmIyNWUyYjU5YmJlNGFhZmY2YmIzYjEyNTViYmU1YTIw
ZTQwYzU3ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC00Niw3ICs0Niw2IEBACiAjaW5jbHVkZSAi
V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0FwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EYXRhYmFzZVRyYWNrZXIuaD4K
LSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxN
ZWRpYUVsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL09yaWdpbkxvY2suaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CkBAIC01NCw2ICs1Myw3IEBACiAjaW5jbHVkZSA8
d3RmL0NhbGxiYWNrQWdncmVnYXRvci5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxl
ci5oPgogI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZENvcGllci5oPgorI2luY2x1ZGUgPHd0Zi9G
aWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KICNpbmNsdWRl
IDx3dGYvUnVuTG9vcC5oPgogCkBAIC0xOTUsOCArMTk1LDggQEAgdm9pZCBXZWJzaXRlRGF0YVN0
b3JlOjpyZXNvbHZlRGlyZWN0b3JpZXNJZk5lY2Vzc2FyeSgpCiAKICAgICAvLyBSZXNvbHZlIGRp
cmVjdG9yaWVzIGZvciBmaWxlIHBhdGhzLgogICAgIGlmICghbV9jb25maWd1cmF0aW9uLT5jb29r
aWVTdG9yYWdlRmlsZSgpLmlzRW1wdHkoKSkgewotICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJh
dGlvbi0+c2V0Q29va2llU3RvcmFnZUZpbGUocmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVj
dG9yeUZvclNhbmRib3hFeHRlbnNpb24oV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFt
ZShtX2NvbmZpZ3VyYXRpb24tPmNvb2tpZVN0b3JhZ2VGaWxlKCkpKSk7Ci0gICAgICAgIG1fcmVz
b2x2ZWRDb25maWd1cmF0aW9uLT5zZXRDb29raWVTdG9yYWdlRmlsZShXZWJDb3JlOjpGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPmNv
b2tpZVN0b3JhZ2VGaWxlKCksIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZSht
X2NvbmZpZ3VyYXRpb24tPmNvb2tpZVN0b3JhZ2VGaWxlKCkpKSk7CisgICAgICAgIG1fcmVzb2x2
ZWRDb25maWd1cmF0aW9uLT5zZXRDb29raWVTdG9yYWdlRmlsZShyZXNvbHZlQW5kQ3JlYXRlUmVh
ZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihGaWxlU3lzdGVtOjpkaXJlY3RvcnlO
YW1lKG1fY29uZmlndXJhdGlvbi0+Y29va2llU3RvcmFnZUZpbGUoKSkpKTsKKyAgICAgICAgbV9y
ZXNvbHZlZENvbmZpZ3VyYXRpb24tPnNldENvb2tpZVN0b3JhZ2VGaWxlKEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+Y29va2llU3Rv
cmFnZUZpbGUoKSwgRmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKG1fY29uZmlndXJhdGlvbi0+
Y29va2llU3RvcmFnZUZpbGUoKSkpKTsKICAgICB9CiB9CiAKQEAgLTIyNDUsNyArMjI0NSw3IEBA
IFZlY3RvcjxQbHVnaW5Nb2R1bGVJbmZvPiBXZWJzaXRlRGF0YVN0b3JlOjpwbHVnaW5zKCkgY29u
c3QKIAogc3RhdGljIFN0cmluZyBjb21wdXRlTWVkaWFLZXlGaWxlKGNvbnN0IFN0cmluZyYgbWVk
aWFLZXlEaXJlY3RvcnkpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChtZWRpYUtleURpcmVjdG9yeSwgIlNlY3VyZVN0b3AucGxpc3Qi
KTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1lZGlh
S2V5RGlyZWN0b3J5LCAiU2VjdXJlU3RvcC5wbGlzdCIpOwogfQogCiBWZWN0b3I8V2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhPiBXZWJzaXRlRGF0YVN0b3JlOjptZWRpYUtleU9yaWdpbnMoY29u
c3QgU3RyaW5nJiBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KQpAQCAtMjI1NCwxMiArMjI1NCwx
MiBAQCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBXZWJzaXRlRGF0YVN0b3Jl
OjptZWRpYUtleU9yaWdpbnMoY29uc3QgU3RyaQogCiAgICAgVmVjdG9yPFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YT4gb3JpZ2luczsKIAotICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2luUGF0
aCA6IFdlYkNvcmU6OkZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobWVkaWFLZXlzU3RvcmFnZURp
cmVjdG9yeSwgIioiKSkgeworICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2luUGF0aCA6IEZpbGVT
eXN0ZW06Omxpc3REaXJlY3RvcnkobWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSwgIioiKSkgewog
ICAgICAgICBhdXRvIG1lZGlhS2V5RmlsZSA9IGNvbXB1dGVNZWRpYUtleUZpbGUob3JpZ2luUGF0
aCk7Ci0gICAgICAgIGlmICghV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhtZWRpYUtl
eUZpbGUpKQorICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobWVkaWFLZXlGaWxl
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGF1dG8gbWVkaWFLZXlJZGVudGlm
aWVyID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKG9yaWdpblBhdGgpOwor
ICAgICAgICBhdXRvIG1lZGlhS2V5SWRlbnRpZmllciA9IEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxl
TmFtZShvcmlnaW5QYXRoKTsKIAogICAgICAgICBpZiAoYXV0byBzZWN1cml0eU9yaWdpbiA9IFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmllcihtZWRpYUtl
eUlkZW50aWZpZXIpKQogICAgICAgICAgICAgb3JpZ2lucy5hcHBlbmQoKnNlY3VyaXR5T3JpZ2lu
KTsKQEAgLTIyNzIsMTggKzIyNzIsMTggQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVN
ZWRpYUtleXMoY29uc3QgU3RyaW5nJiBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5LAogewogICAg
IEFTU0VSVCghbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpOwogCi0gICAgZm9y
IChjb25zdCBhdXRvJiBtZWRpYUtleURpcmVjdG9yeSA6IFdlYkNvcmU6OkZpbGVTeXN0ZW06Omxp
c3REaXJlY3RvcnkobWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSwgIioiKSkgeworICAgIGZvciAo
Y29uc3QgYXV0byYgbWVkaWFLZXlEaXJlY3RvcnkgOiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5
KG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnksICIqIikpIHsKICAgICAgICAgYXV0byBtZWRpYUtl
eUZpbGUgPSBjb21wdXRlTWVkaWFLZXlGaWxlKG1lZGlhS2V5RGlyZWN0b3J5KTsKIAotICAgICAg
ICBhdXRvIG1vZGlmaWNhdGlvblRpbWUgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpnZXRGaWxlTW9k
aWZpY2F0aW9uVGltZShtZWRpYUtleUZpbGUpOworICAgICAgICBhdXRvIG1vZGlmaWNhdGlvblRp
bWUgPSBGaWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShtZWRpYUtleUZpbGUpOwog
ICAgICAgICBpZiAoIW1vZGlmaWNhdGlvblRpbWUpCiAgICAgICAgICAgICBjb250aW51ZTsKIAog
ICAgICAgICBpZiAobW9kaWZpY2F0aW9uVGltZS52YWx1ZSgpIDwgbW9kaWZpZWRTaW5jZSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0
ZUZpbGUobWVkaWFLZXlGaWxlKTsKLSAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRl
RW1wdHlEaXJlY3RvcnkobWVkaWFLZXlEaXJlY3RvcnkpOworICAgICAgICBGaWxlU3lzdGVtOjpk
ZWxldGVGaWxlKG1lZGlhS2V5RmlsZSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5
RGlyZWN0b3J5KG1lZGlhS2V5RGlyZWN0b3J5KTsKICAgICB9CiB9CiAKQEAgLTIyOTIsMTEgKzIy
OTIsMTEgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVNZWRpYUtleXMoY29uc3QgU3Ry
aW5nJiBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5LAogICAgIEFTU0VSVCghbWVkaWFLZXlzU3Rv
cmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpOwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBvcmlnaW4g
OiBvcmlnaW5zKSB7Ci0gICAgICAgIGF1dG8gbWVkaWFLZXlEaXJlY3RvcnkgPSBXZWJDb3JlOjpG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobWVkaWFLZXlzU3RvcmFnZURpcmVj
dG9yeSwgb3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICAgICAgYXV0byBtZWRpYUtl
eURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5LCBvcmlnaW4uZGF0YWJhc2VJZGVudGlmaWVyKCkpOwogICAgICAg
ICBhdXRvIG1lZGlhS2V5RmlsZSA9IGNvbXB1dGVNZWRpYUtleUZpbGUobWVkaWFLZXlEaXJlY3Rv
cnkpOwogCi0gICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobWVkaWFLZXlG
aWxlKTsKLSAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3Rvcnko
bWVkaWFLZXlEaXJlY3RvcnkpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1lZGlh
S2V5RmlsZSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KG1lZGlh
S2V5RGlyZWN0b3J5KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Byb3h5R0xpYi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9nbGliL1dlYlByb2Nlc3NQcm94eUdMaWIuY3BwCmluZGV4IDhmNWZhMDNmZjQ2NTMyZjZi
NTgyNTc5ZTk5YjAxN2IwNjU0MGFlYTUuLjE2OWVhMjAxMjViMDMwNjM3ZmFmYzA3NDdjYTg2OTg1
ODU0OTViOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJv
Y2Vzc1Byb3h5R0xpYi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJQ
cm9jZXNzUHJveHlHTGliLmNwcApAQCAtMzEsOCArMzEsOCBAQAogI2VuZGlmCiAjaW5jbHVkZSAi
V2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCi0jaW5jbHVk
ZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybURpc3Bs
YXkuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvZ3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAKaW5kZXggY2ExODdhNjQyMzQxMTJlODU3
OWJkODYxNjJkOWI4M2ZiNDI5YzgzYS4uMTZiMDJhNDM1NzZlNTZmMWFlMjI2M2EwZGY0ZjA2NzMy
MzRkYmUwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYkluc3Bl
Y3RvclByb3h5R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViSW5z
cGVjdG9yUHJveHlHdGsuY3BwCkBAIC00Miw5ICs0Miw5IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vz
c1Bvb2wuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L0NlcnRpZmljYXRlSW5mby5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvR3RrVXRpbGl0aWVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBs
ZW1lbnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc1Bvb2xHdGsuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NQb29sR3RrLmNwcAppbmRleCA2
MjQwNDE1ZjE1NzI3OWU0YmZjMGM1NmEyY2RhOGI2MjI1OTA2OWY2Li42YjIzNTc0MDRlMDNhZTMw
MjFhZTg4MGI2M2E4Y2VjMGVlODZmMGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9ndGsvV2ViUHJvY2Vzc1Bvb2xHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2d0ay9XZWJQcm9jZXNzUG9vbEd0ay5jcHAKQEAgLTM0LDEwICszNCwxMCBAQAogI2luY2x1
ZGUgIldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNz
TWVzc2FnZXMuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9SZW1vdGVJbnNwZWN0b3JTZXJ2
ZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0dTdHJlYW1lckNvbW1vbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1NjaGVtZVJlZ2lzdHJ5Lmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVT
eXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCBiZDFjNmJhNGY1ZmRjNzZiMjdl
MmIzODlmYjRmYzZhNTY0Yjg4ZWU4Li5iMjhmMTc3Y2ExNDg1Zjc1ZTE0Y2NjZjE1ODI4NGMyOTYy
YjRiNzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTU2OTksNyArNTY5OSw3IEBAIC0gKHZvaWQpX3By
ZXBhcmVUb0RyYWdQcm9taXNlZEF0dGFjaG1lbnQ6KGNvbnN0IFdlYkNvcmU6OlByb21pc2VkQXR0
YWNobWVudEluZm8mCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBO
U1N0cmluZyAqdGVtcG9yYXJ5QmxvYkRpcmVjdG9yeSA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmNy
ZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShAImJsb2JzIik7CisgICAgICAgIE5TU3RyaW5nICp0ZW1w
b3JhcnlCbG9iRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5
KEAiYmxvYnMiKTsKICAgICAgICAgTlNVUkwgKmRlc3RpbmF0aW9uVVJMID0gW05TVVJMIGZpbGVV
UkxXaXRoUGF0aDpbdGVtcG9yYXJ5QmxvYkRpcmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhD
b21wb25lbnQ6W05TVVVJRCBVVUlEXS5VVUlEU3RyaW5nXSBpc0RpcmVjdG9yeTpOT107CiAKICAg
ICAgICAgYXV0byBhdHRhY2htZW50ID0gc3Ryb25nU2VsZi0+X3BhZ2UtPmF0dGFjaG1lbnRGb3JJ
ZGVudGlmaWVyKGluZm8uYXR0YWNobWVudElkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRmlsZVVwbG9hZFBhbmVsLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRmlsZVVwbG9hZFBhbmVsLm1tCmluZGV4IDY4
MDE2NDZkMDhmOWQwOWZlM2U3Mzk4Mzg0NTcyOWJlMjExZDVhYTYuLjg3NzExNGZjZjI2NmU5OTJh
ZWJkZDkwMzYwNDA2YTFkODk3NTFkZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9mb3Jtcy9XS0ZpbGVVcGxvYWRQYW5lbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvZm9ybXMvV0tGaWxlVXBsb2FkUGFuZWwubW0KQEAgLTYyMCw3ICs2MjAsNyBA
QCAtICh2b2lkKV91cGxvYWRJdGVtRm9ySW1hZ2VEYXRhOihOU0RhdGEgKilpbWFnZURhdGEgaW1h
Z2VOYW1lOihOU1N0cmluZyAqKWltYWdlTgogICAgIE5TU3RyaW5nICogY29uc3Qga1RlbXBvcmFy
eURpcmVjdG9yeU5hbWUgPSBAIldLV2ViRmlsZVVwbG9hZCI7CiAKICAgICAvLyBCdWlsZCB0ZW1w
b3JhcnkgZmlsZSBwYXRoLgotICAgIE5TU3RyaW5nICp0ZW1wb3JhcnlEaXJlY3RvcnkgPSBXZWJD
b3JlOjpGaWxlU3lzdGVtOjpjcmVhdGVUZW1wb3JhcnlEaXJlY3Rvcnkoa1RlbXBvcmFyeURpcmVj
dG9yeU5hbWUpOworICAgIE5TU3RyaW5nICp0ZW1wb3JhcnlEaXJlY3RvcnkgPSBGaWxlU3lzdGVt
OjpjcmVhdGVUZW1wb3JhcnlEaXJlY3Rvcnkoa1RlbXBvcmFyeURpcmVjdG9yeU5hbWUpOwogICAg
IE5TU3RyaW5nICpmaWxlUGF0aCA9IFt0ZW1wb3JhcnlEaXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRp
bmdQYXRoQ29tcG9uZW50OmltYWdlTmFtZV07CiAgICAgaWYgKCFmaWxlUGF0aCkgewogICAgICAg
ICBMT0dfRVJST1IoIldLRmlsZVVwbG9hZFBhbmVsOiBGYWlsZWQgdG8gY3JlYXRlIHRlbXBvcmFy
eSBkaXJlY3RvcnkgdG8gc2F2ZSBpbWFnZSIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9XZWJQYWdlUHJveHlNYWMubW0KaW5kZXggNjJiZTQxMGYyM2IwZTJjMzMwMzBiYjA5YzFl
NjJmMWM4YjIwZTFjMC4uODMwMDRkNzBhODE3NzcxNjE4Mzg0ZDRkOGYyODE1Y2YyMTFhNzc2YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCkBA
IC00OTUsNyArNDk1LDcgQEAgc3RhdGljIE5TU3RyaW5nICpwYXRoVG9QREZPbkRpc2soY29uc3Qg
U3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSkKIAogdm9pZCBXZWJQYWdlUHJveHk6OnNhdmVQREZU
b1RlbXBvcmFyeUZvbGRlckFuZE9wZW5XaXRoTmF0aXZlQXBwbGljYXRpb25SYXcoY29uc3QgU3Ry
aW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBvcmlnaW5hdGluZ1VSTFN0cmlu
ZywgY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbG9uZyBzaXplLCBjb25zdCBTdHJpbmcm
IHBkZlVVSUQpCiB7Ci0gICAgLy8gRklYTUU6IFdyaXRlIG9yaWdpbmF0aW5nVVJMU3RyaW5nIHRv
IHRoZSBmaWxlJ3Mgb3JpZ2luYXRpbmcgVVJMIG1ldGFkYXRhIChwZXJoYXBzIFdlYkNvcmU6OkZp
bGVTeXN0ZW06OnNldE1ldGFkYXRhVVJMKCk/KS4KKyAgICAvLyBGSVhNRTogV3JpdGUgb3JpZ2lu
YXRpbmdVUkxTdHJpbmcgdG8gdGhlIGZpbGUncyBvcmlnaW5hdGluZyBVUkwgbWV0YWRhdGEgKHBl
cmhhcHMgRmlsZVN5c3RlbTo6c2V0TWV0YWRhdGFVUkwoKT8pLgogICAgIFVOVVNFRF9QQVJBTShv
cmlnaW5hdGluZ1VSTFN0cmluZyk7CiAKICAgICBpZiAoIXN1Z2dlc3RlZEZpbGVuYW1lLmVuZHNX
aXRoSWdub3JpbmdBU0NJSUNhc2UoIi5wZGYiKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3Mvd2luL1dlYlByb2Nlc3NQb29sV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL3dpbi9XZWJQcm9jZXNzUG9vbFdpbi5jcHAKaW5kZXggMTAxNWZmMDYwNmNmNGJiNGNm
NTYyYTA3ODkyODg3MzM2NTZmOWVkNi4uMzkwYTBjOTAxOTIxOTQzM2M1ZmE0OWQzZTM4NDRhMWI4
MzU1MjhjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlByb2Nl
c3NQb29sV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViUHJvY2Vz
c1Bvb2xXaW4uY3BwCkBAIC0yOCw4ICsyOCw4IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wu
aCIKIAogI2luY2x1ZGUgIldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKLSNpbmNsdWRl
IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVk
Lmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcAppbmRleCBlZjc5MTljNzIwZmU3
MTdiNTkwOTE5YmI4NWI0NTgxODViYTUwZmIxLi4wZjlmOWQ0ZWZkNTI4NmM2MjY4NDNhYzNhMDRj
ZDJlNmJkOTQ5OWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2Vi
Vmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCkBA
IC00NCw3ICs0NCw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9CaXRtYXBJbmZvLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9DdXJzb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0VkaXRvci5oPgotI2luY2x1
ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9IV25kREMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3Qu
aD4KQEAgLTU1LDYgKzU0LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1dpbmRvd3NUb3VjaC5oPgog
I2luY2x1ZGUgPGNhaXJvLXdpbjMyLmg+CiAjaW5jbHVkZSA8Y2Fpcm8uaD4KKyNpbmNsdWRlIDx3
dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9Tb2Z0TGlua2luZy5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0J1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxk
ZXIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dwZS9XZWJQcm9jZXNz
UG9vbFdQRS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93cGUvV2ViUHJvY2Vzc1Bvb2xX
UEUuY3BwCmluZGV4IDYyNTVjNDI3YjdhMWJhNWNmZWVkMGNiMzdkZTVjMDJjMGJjY2U1ZDEuLmY1
MTAxN2E4Y2EyOWVkMDc5OTRkN2QyMDdjOTU3MTQxMTJhMzhiZjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL3dwZS9XZWJQcm9jZXNzUG9vbFdQRS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3Mvd3BlL1dlYlByb2Nlc3NQb29sV1BFLmNwcApAQCAtMzQsMTAgKzM0
LDEwIEBACiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiV2Vi
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdl
cy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
Tm90SW1wbGVtZW50ZWQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NjaGVtZVJlZ2lzdHJ5Lmg+CiAj
aW5jbHVkZSA8Y3N0ZGxpYj4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiAjaWYgRU5B
QkxFKFJFTU9URV9JTlNQRUNUT1IpCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUmVtb3RlSW5z
cGVjdG9yU2VydmVyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0RXh0ZW5zaW9uTWFuYWdlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0RXh0ZW5zaW9u
TWFuYWdlci5jcHAKaW5kZXggYWFjMjgyODBjYTUyMGJmODM5NjViNzk0YzNlMzRmZWFmYzYxZWU3
NS4uNGNjZWM2MmVmMGUxMTMxZmExM2Y3ZmIwNjBjODBlMDdlZTQyNTFhZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdEV4
dGVuc2lvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRFeHRlbnNpb25NYW5hZ2VyLmNwcApAQCAtMjMsOCArMjMs
OCBAQAogI2luY2x1ZGUgIkFQSVN0cmluZy5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlLmgi
CiAjaW5jbHVkZSAiV2ViS2l0V2ViRXh0ZW5zaW9uUHJpdmF0ZS5oIgotI2luY2x1ZGUgPFdlYkNv
cmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5
c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYktp
dCB7CkBAIC00MSw5ICs0MSw5IEBAIFdlYktpdEV4dGVuc2lvbk1hbmFnZXI6OldlYktpdEV4dGVu
c2lvbk1hbmFnZXIoKQogCiB2b2lkIFdlYktpdEV4dGVuc2lvbk1hbmFnZXI6OnNjYW5Nb2R1bGVz
KGNvbnN0IFN0cmluZyYgd2ViRXh0ZW5zaW9uc0RpcmVjdG9yeSwgVmVjdG9yPFN0cmluZz4mIG1v
ZHVsZXMpCiB7Ci0gICAgVmVjdG9yPFN0cmluZz4gbW9kdWxlUGF0aHMgPSBXZWJDb3JlOjpGaWxl
U3lzdGVtOjpsaXN0RGlyZWN0b3J5KHdlYkV4dGVuc2lvbnNEaXJlY3RvcnksIFN0cmluZygiKi5z
byIpKTsKKyAgICBWZWN0b3I8U3RyaW5nPiBtb2R1bGVQYXRocyA9IEZpbGVTeXN0ZW06Omxpc3RE
aXJlY3Rvcnkod2ViRXh0ZW5zaW9uc0RpcmVjdG9yeSwgU3RyaW5nKCIqLnNvIikpOwogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbW9kdWxlUGF0aHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAg
aWYgKFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobW9kdWxlUGF0aHNbaV0pKQorICAg
ICAgICBpZiAoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhtb2R1bGVQYXRoc1tpXSkpCiAgICAgICAg
ICAgICBtb2R1bGVzLmFwcGVuZChtb2R1bGVQYXRoc1tpXSk7CiAgICAgfQogfQpAQCAtNjMsNyAr
NjMsNyBAQCBzdGF0aWMgdm9pZCBwYXJzZVVzZXJEYXRhKEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwg
U3RyaW5nJiB3ZWJFeHRlbnNpb25zRGlyZWN0b3J5LAogICAgIEdWYXJpYW50KiBkYXRhID0gbnVs
bHB0cjsKICAgICBnX3ZhcmlhbnRfZ2V0KHZhcmlhbnQuZ2V0KCksICIobSZzbXYpIiwgJmRpcmVj
dG9yeSwgJmRhdGEpOwogCi0gICAgd2ViRXh0ZW5zaW9uc0RpcmVjdG9yeSA9IFdlYkNvcmU6OkZp
bGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGlyZWN0b3J5KTsK
KyAgICB3ZWJFeHRlbnNpb25zRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihkaXJlY3RvcnkpOwogICAgIGluaXRpYWxpemF0aW9uVXNlckRh
dGEgPSBhZG9wdEdSZWYoZGF0YSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9nbGliL0luamVjdGVkQnVuZGxlR2xpYi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvZ2xpYi9JbmplY3RlZEJ1bmRsZUds
aWIuY3BwCmluZGV4IDBhODYwNjUyZjAwZGFkOTMyOGNmMzU1ZDQwNTEzZmU4MGY1ZWY2NTguLmVk
OTY1OGNhMWY0NmE0Yzc3Y2M3MjYwMzMwZDE2MGFhZDI4ODI3NmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9nbGliL0luamVjdGVkQnVuZGxlR2xp
Yi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL2dsaWIv
SW5qZWN0ZWRCdW5kbGVHbGliLmNwcApAQCAtMjksMTEgKzI5LDEwIEBACiAKICNpbmNsdWRlICJX
S0J1bmRsZUFQSUNhc3QuaCIKICNpbmNsdWRlICJXS0J1bmRsZUluaXRpYWxpemUuaCIKLSNpbmNs
dWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7Ci11c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogYm9vbCBJbmplY3RlZEJ1bmRsZTo6aW5pdGlhbGl6ZShj
b25zdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiwgQVBJOjpPYmplY3QqIGluaXRpYWxp
emF0aW9uVXNlckRhdGEpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4
IDRiZjQ4ZDBlOTRlZWY3NjA2NmNhMzBlYTljZjM1NzA0YWIzZGVhZWIuLmJkMzk4MjQyNmM2NmU2
MzViNmM1NjA1Y2JlNWEzYjA1MDI1ZDNhMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFn
ZXIuY3BwCkBAIC0yNyw5ICsyNyw5IEBACiAjaW5jbHVkZSAiV2ViTWVkaWFLZXlTdG9yYWdlTWFu
YWdlci5oIgogCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgotI2lu
Y2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlP
cmlnaW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgorI2luY2x1
ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5oCmluZGV4IGJiNmE1YjA4Yzdj
Y2U1ZGRlZDg5OTM2MGY3YWI4MzQwZjAzOTVlNzQuLjNlZGNlYzZhNzJjY2MzYWE2NGQ4MTlmYTkz
MzdmNDNlNjJlN2Q3NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uaApAQCAtMjcs
OSArMjcsOSBAQAogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAKLSNpbmNsdWRl
IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL25wcnVudGltZV9pbnRl
cm5hbC5oPgogI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgog
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC04OSw3ICs4OSw3IEBAIHByaXZhdGU6CiAgICAgaW50
MzJfdCBtX29mZnNldDsKIAogICAgIFN0cmluZyBtX2ZpbGVQYXRoOwotICAgIFdlYkNvcmU6OkZp
bGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBtX2ZpbGVIYW5kbGU7CisgICAgRmlsZVN5c3Rl
bTo6UGxhdGZvcm1GaWxlSGFuZGxlIG1fZmlsZUhhbmRsZTsKICAgICAKICAgICAvLyBXaGV0aGVy
IE5QUF9OZXdTdHJlYW0gaGFzIHN1Y2Nlc3NmdWxseSBiZWVuIGNhbGxlZC4KICAgICBib29sIG1f
aXNTdGFydGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDAxYzUzZjNkODQzZGQxZDI0
MzE0ZjVjYzBjMTJlOTA5NjRlZmJiZTQuLjI2ZDZkNTAwZTY5YTAxOTNiMWRmNWY0MDNmMWYzZjE4
YzJjOGVkNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTM2LDEwICszNiw5IEBACiAj
aW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNPYmplY3QuaD4KLSNpbmNsdWRlIDxXZWJD
b3JlL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBQbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbjo6UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25N
YW5hZ2VyKiBwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIsIHVpbnQ2NF90IHBsdWdpblBy
b2Nlc3NUb2tlbiwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlm
aWVyLCBib29sIHN1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb24pCiAgICAg
OiBtX3BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcihwbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bk1hbmFnZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAKaW5kZXggNjNjMzZh
M2RiNjlhODJhZDNiZWE2NjBmNmIwNmRmZTc2M2M1NTYxNy4uMWQ4MTY2YTA3ZTNmZDk3ODgxY2I3
ZjQ0ZjRhNmJlZmY4NWJiZmU1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNw
cApAQCAtMjgsOSArMjgsOSBAQAogCiAjaW5jbHVkZSAiU2Vzc2lvblN0YXRlLmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9CbG9iRGF0YS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvRm9ybURhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hpc3RvcnlJ
dGVtLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJJbnNwZWN0b3JVSUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViSW5zcGVjdG9yVUlHdGsuY3BwCmluZGV4IDg5YzNi
YTFhYTg5MzljZmE1MWY2ZmIyMjFhNzNiMzhkNzgwMzI3YTMuLmRiYjJhOTE4MDRiZTEzMjY0OGM5
YWQzM2U2ZjAyN2JkZDNmMTEwZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL2d0ay9XZWJJbnNwZWN0b3JVSUd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYkluc3BlY3RvclVJR3RrLmNwcApAQCAtMjgsOCArMjgs
OCBAQAogI2luY2x1ZGUgIldlYkluc3BlY3RvclVJLmgiCiAjaW5jbHVkZSAiUmVtb3RlV2ViSW5z
cGVjdG9yVUkuaCIKIAotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUg
PGdsaWIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9XZWJJbnNwZWN0b3JVSVdpbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93aW4vV2ViSW5zcGVjdG9yVUlXaW4uY3BwCmlu
ZGV4IDZhN2FmM2M1ZDY0OWM1MDRlZWRhZDQ5YzkxYTFmYjQ0MzVlNGExOGMuLjQ3MTExNGNhZmEx
NGE3ZDFmMzNmZmEyYzFlOGFmYmJiZWQyZTAzYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9XZWJJbnNwZWN0b3JVSVdpbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL1dlYkluc3BlY3RvclVJV2luLmNwcApAQCAt
MjgsOCArMjgsOCBAQAogCiAjaW5jbHVkZSAiUmVtb3RlV2ViSW5zcGVjdG9yVUkuaCIKIAotI2lu
Y2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvV2ViQ29yZUJ1
bmRsZVdpbi5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KaW5kZXggYTQ0NjgxYzc3Mjcx
YzA0YTc5NmYwN2JiY2NhYzNiZWNjNDgxZjc1YS4uMzVkNTdkNWNlNjdiNjU4NzYwNzkzZGNjN2M0
MDkxNjlmODU4MGFmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29h
L1dlYlByb2Nlc3NDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2Ev
V2ViUHJvY2Vzc0NvY29hLm1tCkBAIC01MSw3ICs1MSw2IEBACiAjaW1wb3J0IDxXZWJDb3JlL0FY
T2JqZWN0Q2FjaGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ1BVTW9uaXRvci5oPgogI2ltcG9ydCA8
V2ViQ29yZS9EaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyLmg+Ci0jaW1wb3J0IDxXZWJDb3Jl
L0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPFdlYkNvcmUvRm9udENhY2hlLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0ZvbnRDYXNjYWRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hpc3RvcnlDb250cm9sbGVy
Lmg+CkBAIC03Miw2ICs3MSw3IEBACiAjaW1wb3J0IDxwYWwvc3BpL21hYy9OU0FjY2Vzc2liaWxp
dHlTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvbWFjL05TQXBwbGljYXRpb25TUEkuaD4KICNpbXBv
cnQgPHN0ZGlvLmg+CisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8d3RmL2Nv
Y29hL05TVVJMRXh0cmFzLmg+CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcAppbmRleCA0MDM5OTYw
YjE0MGZjYjljNjNhNzZkNmQwNzcxM2EzYTMxODJjNWE0Li4xN2Q0ODk0OTRkN2UwOTBkM2ZmNzM1
ZWZmMjY0NDVlZmVjNmI5Mjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3Jh
Z2UvU3RvcmFnZUFyZWFTeW5jLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2Uv
U3RvcmFnZUFyZWFTeW5jLmNwcApAQCAtMjgsMTEgKzI4LDExIEBACiAjaW5jbHVkZSAiU3RvcmFn
ZUFyZWFJbXBsLmgiCiAjaW5jbHVkZSAiU3RvcmFnZVN5bmNNYW5hZ2VyLmgiCiAjaW5jbHVkZSAi
U3RvcmFnZVRyYWNrZXIuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1NRTGl0ZURhdGFiYXNlVHJhY2tlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U1FMaXRlU3RhdGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVUcmFuc2FjdGlvbi5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU3VkZGVuVGVybWluYXRpb24uaD4KKyNpbmNsdWRlIDx3dGYv
RmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0
b3JhZ2VTeW5jTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFn
ZVN5bmNNYW5hZ2VyLmNwcAppbmRleCAzZThmZjY1ZWU2MGYyNzRkYzkwNGViNThjMTE3NGVkNWNj
MWE1NzRjLi4zNjkwOTVjZGFkMWQzNDcxMWEwNjc2ZDg3MzZhOTBlMTkzZTI5MDVlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmNwcApA
QCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgIlN0b3JhZ2VTeW5jTWFuYWdlci5oIgogCiAjaW5j
bHVkZSAiU3RvcmFnZVRocmVhZC5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgor
I2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCmluZGV4IDcxMDE0MGIxYjEzM2EyZWI1OTM5NmQ3
Njc0ODZkMjE4M2VjOTA0ODQuLmI5MzRkMWEzYjFiYWE4MzFhZGRmM2FiZTVlMDc3MGFiMWNmNzdm
YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNw
cApAQCAtMjgsMTMgKzI4LDEzIEBACiAjaW5jbHVkZSAiU3RvcmFnZVRocmVhZC5oIgogI2luY2x1
ZGUgIlN0b3JhZ2VUcmFja2VyQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViU3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9QYWdlR3JvdXAuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZURhdGFiYXNlVHJh
Y2tlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlU3RhdGVtZW50Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmln
aW5EYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0RW5jb2RpbmcuaD4KKyNpbmNsdWRlIDx3
dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8
d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNGaWxlTWFuYWdlckV4dHJhcy5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNGaWxlTWFuYWdlckV4dHJhcy5tbQpp
bmRleCA5MDUxNzRkYTc1NmRkNjI4YmVkZWZkNTBjMmIyMzcyOWU1MzM1MDJiLi5jNTQxM2U4MWM2
YTNlY2IyZWM5NzgxZjZiOGJmZDZjMmIyYTA1ZGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9NaXNjL1dlYk5TRmlsZU1hbmFnZXJFeHRyYXMubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU0ZpbGVNYW5hZ2VyRXh0cmFzLm1tCkBAIC0zMCwxMCAr
MzAsMTAgQEAKIAogI2ltcG9ydCAiV2ViS2l0TlNTdHJpbmdFeHRyYXMuaCIKICNpbXBvcnQgIldl
Yk5TVVJMRXh0cmFzLmgiCi0jaW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQg
PFdlYkNvcmUvTG9hZGVyTlNVUkxFeHRyYXMuaD4KICNpbXBvcnQgPHN5cy9zdGF0Lmg+CiAjaW1w
b3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgorI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbXBv
cnQgPHd0Zi9PYmpDUnVudGltZUV4dHJhcy5oPgogCiBAaW1wbGVtZW50YXRpb24gTlNGaWxlTWFu
YWdlciAoV2ViTlNGaWxlTWFuYWdlckV4dHJhcykKQEAgLTQ0LDcgKzQ0LDcgQEAgLSAodm9pZClf
d2Via2l0X3NldE1ldGFkYXRhVVJMOihOU1N0cmluZyAqKVVSTFN0cmluZyByZWZlcnJlcjooTlNT
dHJpbmcgKilyZWZlcnIKIHsKICAgICBBU1NFUlQoVVJMU3RyaW5nKTsKICAgICBBU1NFUlQocGF0
aCk7Ci0gICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6c2V0TWV0YWRhdGFVUkwocGF0aCwgVVJMU3Ry
aW5nLCByZWZlcnJlcik7CisgICAgRmlsZVN5c3RlbTo6c2V0TWV0YWRhdGFVUkwocGF0aCwgVVJM
U3RyaW5nLCByZWZlcnJlcik7CiB9CiAKICNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkK
QEAgLTkzLDcgKzkzLDcgQEAgLSAoTlNTdHJpbmcgKilfd2Via2l0X3BhdGhXaXRoVW5pcXVlRmls
ZW5hbWVGb3JQYXRoOihOU1N0cmluZyAqKXBhdGgKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
LSAoTlNTdHJpbmcgKilfd2Via2l0X2NyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeVdpdGhUZW1wbGF0
ZVByZWZpeDooTlNTdHJpbmcgKilwcmVmaXgKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5
c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KHByZWZpeCk7CisgICAgcmV0dXJuIEZpbGVT
eXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShwcmVmaXgpOwogfQogI2VuZGlmCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VQcm92
aWRlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VQcm92
aWRlci5tbQppbmRleCA3NDk1YjE3NWZmZjQ1ZGM1YTU0YjAxNGY4ZDViZjAzZTU0Mzk0M2NjLi5h
ZGM0YzM5ODg0YzRjYjJkMmEzYmViNmIxOTViY2RhMDAwODljMTcxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlUHJvdmlkZXIubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZVByb3ZpZGVyLm1tCkBA
IC0yNiwxNiArMjYsMTYgQEAKICNpbXBvcnQgIldlYkRhdGFiYXNlUHJvdmlkZXIuaCIKICNpbXBv
cnQgIldlYkRhdGFiYXNlTWFuYWdlclByaXZhdGUuaCIKIAotI2ltcG9ydCA8V2ViQ29yZS9GaWxl
U3lzdGVtLmg+CisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogCiBTdHJpbmcgV2ViRGF0YWJh
c2VQcm92aWRlcjo6aW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5UGF0aCgpCiB7CiAgICAgTlNVc2Vy
RGVmYXVsdHMgKmRlZmF1bHRzID0gW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRz
XTsKICAgICBOU1N0cmluZyAqZGF0YWJhc2VzRGlyZWN0b3J5ID0gW2RlZmF1bHRzIG9iamVjdEZv
cktleTpXZWJEYXRhYmFzZURpcmVjdG9yeURlZmF1bHRzS2V5XTsKICAgICBpZiAoIWRhdGFiYXNl
c0RpcmVjdG9yeSB8fCAhW2RhdGFiYXNlc0RpcmVjdG9yeSBpc0tpbmRPZkNsYXNzOltOU1N0cmlu
ZyBjbGFzc11dKQotICAgICAgICBkYXRhYmFzZXNEaXJlY3RvcnkgPSBXZWJDb3JlOjpGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoIn4vTGlicmFyeS9XZWJLaXQvRGF0YWJhc2Vz
L19fX0luZGV4ZWREQiJfcywgW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlmaWVy
XSk7CisgICAgICAgIGRhdGFiYXNlc0RpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudCgifi9MaWJyYXJ5L1dlYktpdC9EYXRhYmFzZXMvX19fSW5kZXhlZERCIl9z
LCBbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdKTsKICAgICBlbHNlCi0g
ICAgICAgIGRhdGFiYXNlc0RpcmVjdG9yeSA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZXNEaXJlY3RvcnksICJfX19JbmRleGVkREIiX3MpOwor
ICAgICAgICBkYXRhYmFzZXNEaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQoZGF0YWJhc2VzRGlyZWN0b3J5LCAiX19fSW5kZXhlZERCIl9zKTsKICAgICAKICAg
ICByZXR1cm4gW2RhdGFiYXNlc0RpcmVjdG9yeSBzdHJpbmdCeVN0YW5kYXJkaXppbmdQYXRoXTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCBlZDBl
MGRmNzliMDNkYTY2ZThhMjliY2VkOWNlYWE5M2NkNjY1ZThjLi4wMWM2MDA1ZWIyYTJjMGQwNjRm
MDZmOGRjNDRjMDM1M2Y0NzhmY2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJWaWV3Lm1tCkBAIC0xNDgsNyArMTQ4LDYgQEAKICNpbXBvcnQgPFdlYkNvcmUvRWRpdG9y
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0V2ZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0V2ZW50SGFu
ZGxlci5oPgotI2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0ZvY3VzQ29udHJvbGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9Gb250QXR0cmlidXRlcy5oPgog
I2ltcG9ydCA8V2ViQ29yZS9Gb250Q2FjaGUuaD4KQEAgLTIzMSw2ICsyMzAsNyBAQAogI2ltcG9y
dCA8cGFsL3NwaS9tYWMvTlNTcGVsbENoZWNrZXJTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvbWFj
L05TV2luZG93U1BJLmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgorI2ltcG9ydCA8d3Rm
L0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0Zi9IYXNoVHJhaXRzLmg+CiAjaW1wb3J0IDx3dGYv
TWFpblRocmVhZC5oPgogI2ltcG9ydCA8d3RmL09iakNSdW50aW1lRXh0cmFzLmg+CkBAIC02ODg1
LDcgKzY4ODUsNyBAQCAtIChCT09MKXBlcmZvcm1EcmFnT3BlcmF0aW9uOihpZCA8TlNEcmFnZ2lu
Z0luZm8+KWRyYWdnaW5nSW5mbwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9
CiAKLSAgICAgICAgTlNTdHJpbmcgKmRyb3BEZXN0aW5hdGlvblBhdGggPSBXZWJDb3JlOjpGaWxl
U3lzdGVtOjpjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoQCJXZWJLaXREcm9wRGVzdGluYXRpb24i
KTsKKyAgICAgICAgTlNTdHJpbmcgKmRyb3BEZXN0aW5hdGlvblBhdGggPSBGaWxlU3lzdGVtOjpj
cmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoQCJXZWJLaXREcm9wRGVzdGluYXRpb24iKTsKICAgICAg
ICAgaWYgKCFkcm9wRGVzdGluYXRpb25QYXRoKSB7CiAgICAgICAgICAgICBkZWxldGUgZHJhZ0Rh
dGE7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCmluZGV4IGJjNzlkODliZDQ0NmM1NmVh
MWJhOWQ1N2M3NWFlMzk5YWE4ZjA0Y2YuLjY0MWFjMzU0YzM0MTk2N2VhNmNlZDY5MGQ1ZTZkNDVj
NmMyYzJhMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1
Z2luRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1
Z2luRGF0YWJhc2UuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9NRVRBREFUQV9DQUNIRSkKLSNp
bmNsdWRlICJGaWxlU3lzdGVtLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNlbmRp
ZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9QbHVnaW5zL1BsdWdpblBhY2thZ2UuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1Bs
dWdpbnMvUGx1Z2luUGFja2FnZS5oCmluZGV4IGI0ODgzZGVhOTk3NmRiNTBjZGU1Mjg2MGFhOWI5
MmI1YmIxMDEwZGYuLjg5ODdhM2QzNTNjNzZjMGFhNDQ2ZWFiMzkwODM3MzMzOWQ1MTdkMzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luUGFja2FnZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luUGFja2FnZS5oCkBA
IC0yOSw4ICsyOSw4IEBACiAKICNpbmNsdWRlICJQbGF0Zm9ybU1vZHVsZS5oIgogI2luY2x1ZGUg
IlBsdWdpblF1aXJrU2V0LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9UaW1lci5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1BsdWdpbnMvUGx1Z2luU3RyZWFtLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9Q
bHVnaW5zL1BsdWdpblN0cmVhbS5oCmluZGV4IGMxYjlmODdhYzRlNjIyZmJiMmUyZTIwNWQxNjQ1
OWMwYzE5NGU3YjYuLjQzMWIzNjMwMzYyYzllNTIxMTE4ZGQwMzI3M2E2Y2Q5YzI4Y2M0NjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luU3RyZWFtLmgK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5TdHJlYW0uaApAQCAt
MjcsMTIgKzI3LDEyIEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlBsdWdpblF1aXJrU2V0
LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9O
ZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VS
ZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9UaW1lci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvbnBydW50aW1lX2ludGVybmFs
Lmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXBwbGljYXRpb25DYWNoZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcHBsaWNhdGlvbkNhY2hlLmNwcAppbmRleCBi
ODVkZDE1NDQwYTZlYTU0MDRhOGE0ODUyMTQzZTU5MTc4ZmVjMTJkLi45MGJlMWZjZTc1MWI0ZjFi
NWQ5NGIxYmI2NzRjMzZiM2VjNTY5ZmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJBcHBsaWNhdGlvbkNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJBcHBsaWNhdGlvbkNhY2hlLmNwcApAQCAtMzAsMTMgKzMwLDEzIEBACiAjaW5jbHVkZSAi
TWFyc2hhbGxpbmdIZWxwZXJzLmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKICNpbmNs
dWRlICJXZWJTZWN1cml0eU9yaWdpbi5oIgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0FwcGxpY2F0aW9uQ2FjaGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Fw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DT01QdHIuaD4KLSNp
bmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5
T3JpZ2luLmg+CiAjaW5jbHVkZSA8Y29tdXRpbC5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVt
Lmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YWJhc2VNYW5h
Z2VyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAK
aW5kZXggM2Y2YzM4YjA2MjhkYjRiYWNmOWM0MTM1N2I1OTFhN2RlYzlhY2Q0MS4uZjk5NjNmMWMw
Njg5NmQ3YTJjYjJkNzMzYTE4ZWZhYWFmM2NlNDgwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCkBAIC0zOSw5ICszOSw5IEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9DT01QdHIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RhdGFiYXNlTWFuYWdlci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRGF0YWJhc2VUcmFja2VyLmg+Ci0jaW5jbHVkZSA8V2ViQ29y
ZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVT
eXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCiAjaWYgRU5BQkxFKElOREVY
RURfREFUQUJBU0UpCkBAIC00MzYsNyArNDM2LDcgQEAgc3RhdGljIFdURjo6U3RyaW5nIGRhdGFi
YXNlc0RpcmVjdG9yeSgpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4o
ZGlyZWN0b3J5UHJlZi5nZXQoKSk7CiAjZW5kaWYKIAotICAgIHJldHVybiBXZWJDb3JlOjpGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6bG9j
YWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJEYXRhYmFzZXMiKTsKKyAgICByZXR1
cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2Fs
VXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiRGF0YWJhc2VzIik7CiB9CiAKIHZvaWQg
V2ViS2l0SW5pdGlhbGl6ZVdlYkRhdGFiYXNlc0lmTmVjZXNzYXJ5KCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkQ3VybC5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJEb3dubG9hZEN1cmwuY3BwCmluZGV4IDIwZDRmNDA4MzVmNzI0MTM4ZjE3
MjNhOGRjMmY5NGI4OTUyZWVlZDcuLjk5YjYyN2YxYWFjMDNhZWRmNTA2ODdmYzdmMzM2YmI5NWQ5
Y2RkMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkQ3Vy
bC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWRDdXJsLmNwcApA
QCAtMzUsMjIgKzM1LDE5IEBACiAjaW5jbHVkZSAiV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UuaCIKICNpbmNsdWRlICJXZWJVUkxDcmVkZW50aWFsLmgiCiAjaW5jbHVkZSAiV2ViVVJMUmVz
cG9uc2UuaCIKLQotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLQotI2luY2x1ZGUgPGlv
Lmg+Ci0jaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLQogI2lu
Y2x1ZGUgPFdlYkNvcmUvQlN0cmluZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ3VybERvd25sb2Fk
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9O
b3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291
cmNlUmVxdWVzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvVGV4dEVuY29kaW5nLmg+CisjaW5jbHVkZSA8aW8uaD4KKyNpbmNsdWRl
IDxzeXMvc3RhdC5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHd0Zi9GaWxl
U3lzdGVtLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJl
ZmVyZW5jZXMuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuY3Bw
CmluZGV4IGE2MzFiOTE2OTY3NzcyYmI4MGU3YzYzZTBmNWU1N2Y2ZjMyNWM2OWUuLjAyNWMyMGJl
YTIzOGNkNmE0OTVhMjUwZjZjNTUwY2E3ZjUyNzlkNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKQEAgLTM4LDEzICszOCwxMyBAQAogCiAjaW5jbHVkZSA8
Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NPTVB0
ci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
Rm9udENhc2NhZGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3MuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgogI2luY2x1ZGUgPGxpbWl0
cz4KICNpbmNsdWRlIDxzaGxvYmouaD4KICNpbmNsdWRlIDx3Y2hhci5oPgorI2luY2x1ZGUgPHd0
Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlZpZXcuY3BwCmluZGV4IGU3NjE3NDRlMGQxYjg1YWZmZDEwYjc3N2NkZDM3
OTFhNGY3MWIzMWUuLmUzMzEwNjNhMGJmMGViZDgyMDA5MTUwNDA3NjI2ZGU5YTE0MGU1MmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCkBAIC05Niw3ICs5Niw2IEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9FZGl0b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0V2ZW50SGFuZGxlci5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvRXZlbnROYW1lcy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5
c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRRdWFkLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9Gb2N1c0NvbnRyb2xsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZvbnQuaD4KQEAgLTE3MSw2
ICsxNzAsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvV2luZG93c1RvdWNoLmg+CiAjaW5jbHVkZSA8
Y29tZGVmLmg+CiAjaW5jbHVkZSA8ZDJkMS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+
CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvUHJvY2Vzc1ByaXZp
bGVnZS5oPgogI2luY2x1ZGUgPHd0Zi9SQU1TaXplLmg+CkBAIC01MTMsNyArNTEzLDcgQEAgdm9p
ZCBXZWJWaWV3OjpzZXRDYWNoZU1vZGVsKFdlYkNhY2hlTW9kZWwgY2FjaGVNb2RlbCkKICAgICAg
ICAgaWYgKHByZWZlcmVuY2UgJiYgKENGU3RyaW5nR2V0VHlwZUlEKCkgPT0gQ0ZHZXRUeXBlSUQo
cHJlZmVyZW5jZS5nZXQoKSkpKQogICAgICAgICAgICAgY2Z1cmxDYWNoZURpcmVjdG9yeSA9IGFk
b3B0Q0Yoc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KHByZWZlcmVuY2UubGVha1JlZigpKSk7CiAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNmdXJsQ2FjaGVEaXJlY3RvcnkgPSBXZWJDb3JlOjpG
aWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKS5jcmVhdGVDRlN0
cmluZygpOworICAgICAgICAgICAgY2Z1cmxDYWNoZURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06Omxv
Y2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLmNyZWF0ZUNGU3RyaW5nKCk7CiAgICAg
fQogICAgIGNhY2hlRGlyZWN0b3J5ID0gU3RyaW5nKGNmdXJsQ2FjaGVEaXJlY3RvcnkuZ2V0KCkp
OwogICAgIENGSW5kZXggY2FjaGVNZW1vcnlDYXBhY2l0eSA9IDA7CmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZTE1ZDAyODc2NjAzMGY2NjZiMDdk
Mjg3MmQwNGM1NjBlYTVlYmMyYi4uNTk5MDZjNmU5NTc3NDNiNmFiNTliY2QwMjc4NDA0ODkyMGNj
N2YxZSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDI3IEBACisyMDE5LTAxLTIzICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGlu
Z0Bzb255LmNvbT4KKworICAgICAgICBNb3ZlIEZpbGVTeXN0ZW0gdG8gV1RGCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM2MDIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dp
bi9EdW1wUmVuZGVyVHJlZS5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9DTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1BsYXRmb3JtR1RLLmNtYWtlOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvUGxhdGZvcm1KU0NPbmx5LmNtYWtlOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvUGxhdGZvcm1QbGF5U3RhdGlvbi5jbWFrZToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1BsYXRmb3JtV1BFLmNtYWtlOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktp
dEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwOiBSZW5hbWVkIGZyb20gVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL0ZpbGVTeXN0ZW0uY3BwLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRvci5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5jcHA6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL0RhdGFiYXNlVHJhY2tlclRlc3QubW06CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2N1cmwvQ29va2llcy5jcHA6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbToKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkUHJvZ3Jlc3MubW06Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS93aW4vUGxhdGZvcm1VdGlsaXRpZXNXaW4uY3BwOgorCiAy
MDE5LTAxLTIzICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAg
Y2hlY2std2Via2l0LXN0eWxlIHNob3VsZCB3YXJuIHdoZW4gdXNpbmcgc29mdC1saW5raW5nIG1h
Y3JvcyBpbiBhIGhlYWRlcgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1
bXBSZW5kZXJUcmVlLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJl
ZS5jcHAKaW5kZXggYTRiNWM3NzA3MDg5MGE1Y2YxNDJkMmQ5YzhiM2MzMzg2NDgzZTZlZC4uYTBi
Njg1Yzc1ZjlkYWYwZmViN2VhYWUxYmIzMmEyZTk1MmQyMjZmNCAxMDA2NDQKLS0tIGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcAorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCkBAIC00Niw3ICs0Niw2IEBACiAKICNpbmNs
dWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL1Rlc3RSdW5uZXJVdGlscy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5o
PgogI2luY2x1ZGUgPFdlYktpdExlZ2FjeS9XZWJLaXQuaD4KICNpbmNsdWRlIDxXZWJLaXRMZWdh
Y3kvV2ViS2l0Q09NQVBJLmg+CiAjaW5jbHVkZSA8Y29tdXRpbC5oPgpAQCAtNjAsNiArNTksNyBA
QAogI2luY2x1ZGUgPHNobHdhcGkuaD4KICNpbmNsdWRlIDx0Y2hhci5oPgogI2luY2x1ZGUgPHdp
bmRvd3MuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgpAQCAtMjIyLDcgKzIyMiw3IEBAIHN0YXRpYyBTdHJpbmcgbGlicmFyeVBhdGhG
b3JEdW1wUmVuZGVyVHJlZSgpCiAgICAgICAgIHJldHVybiBTdHJpbmcgKHBhdGguZGF0YSgpLCBw
YXRoLmxlbmd0aCgpKTsKICAgICB9CiAKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6
bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCk7CisgICAgcmV0dXJuIEZpbGVTeXN0
ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpOwogfQogI2VuZGlmCiAKQEAg
LTkzMSw5ICs5MzEsOSBAQCBzdGF0aWMgdm9pZCBzZXREZWZhdWx0c1RvQ29uc2lzdGVudFZhbHVl
c0ZvclRlc3RpbmcoKQogICAgIFN0cmluZyBsaWJyYXJ5UGF0aCA9IGxpYnJhcnlQYXRoRm9yRHVt
cFJlbmRlclRyZWUoKTsKIAogICAgIC8vIFNldCB1cCB0aGVzZSB2YWx1ZXMgYmVmb3JlIGNyZWF0
aW5nIHRoZSBXZWJWaWV3IHNvIHRoYXQgdGhlIHZhcmlvdXMgaW5pdGlhbGl6YXRpb25zIHdpbGwg
c2VlIHRoZXNlIHByZWZlcnJlZCB2YWx1ZXMuCi0gICAgQ0ZQcmVmZXJlbmNlc1NldEFwcFZhbHVl
KFdlYkRhdGFiYXNlRGlyZWN0b3J5RGVmYXVsdHNLZXksIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChsaWJyYXJ5UGF0aCwgIkRhdGFiYXNlcyIpLmNyZWF0ZUNG
U3RyaW5nKCkuZ2V0KCksIGFwcElkLmdldCgpKTsKLSAgICBDRlByZWZlcmVuY2VzU2V0QXBwVmFs
dWUoV2ViU3RvcmFnZURpcmVjdG9yeURlZmF1bHRzS2V5LCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQobGlicmFyeVBhdGgsICJMb2NhbFN0b3JhZ2UiKS5jcmVh
dGVDRlN0cmluZygpLmdldCgpLCBhcHBJZC5nZXQoKSk7Ci0gICAgQ0ZQcmVmZXJlbmNlc1NldEFw
cFZhbHVlKFdlYktpdExvY2FsQ2FjaGVEZWZhdWx0c0tleSwgV2ViQ29yZTo6RmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGxpYnJhcnlQYXRoLCAiTG9jYWxDYWNoZSIpLmNyZWF0
ZUNGU3RyaW5nKCkuZ2V0KCksIGFwcElkLmdldCgpKTsKKyAgICBDRlByZWZlcmVuY2VzU2V0QXBw
VmFsdWUoV2ViRGF0YWJhc2VEaXJlY3RvcnlEZWZhdWx0c0tleSwgRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KGxpYnJhcnlQYXRoLCAiRGF0YWJhc2VzIikuY3JlYXRlQ0ZTdHJp
bmcoKS5nZXQoKSwgYXBwSWQuZ2V0KCkpOworICAgIENGUHJlZmVyZW5jZXNTZXRBcHBWYWx1ZShX
ZWJTdG9yYWdlRGlyZWN0b3J5RGVmYXVsdHNLZXksIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChsaWJyYXJ5UGF0aCwgIkxvY2FsU3RvcmFnZSIpLmNyZWF0ZUNGU3RyaW5nKCku
Z2V0KCksIGFwcElkLmdldCgpKTsKKyAgICBDRlByZWZlcmVuY2VzU2V0QXBwVmFsdWUoV2ViS2l0
TG9jYWxDYWNoZURlZmF1bHRzS2V5LCBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQobGlicmFyeVBhdGgsICJMb2NhbENhY2hlIikuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgYXBw
SWQuZ2V0KCkpOwogI2VuZGlmCiB9CiAKQEAgLTEwMzUsNyArMTAzNSw3IEBAIHN0YXRpYyB2b2lk
IHNpemVXZWJWaWV3Rm9yQ3VycmVudFRlc3QoKQogCiBzdGF0aWMgU3RyaW5nIGZpbmRGb250RmFs
bGJhY2soY29uc3QgY2hhciogcGF0aE9yVXJsKQogewotICAgIFN0cmluZyBwYXRoVG9Gb250RmFs
bGJhY2sgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKHBhdGhPclVybCk7Cisg
ICAgU3RyaW5nIHBhdGhUb0ZvbnRGYWxsYmFjayA9IEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUo
cGF0aE9yVXJsKTsKIAogICAgIHdjaGFyX3QgZnVsbFBhdGhbX01BWF9QQVRIXTsKICAgICBpZiAo
IV93ZnVsbHBhdGgoZnVsbFBhdGgsIHBhdGhUb0ZvbnRGYWxsYmFjay5jaGFyYWN0ZXJzV2l0aE51
bGxUZXJtaW5hdGlvbigpLmRhdGEoKSwgX01BWF9QQVRIKSkKQEAgLTEwNTQsMjAgKzEwNTQsMjAg
QEAgc3RhdGljIFN0cmluZyBmaW5kRm9udEZhbGxiYWNrKGNvbnN0IGNoYXIqIHBhdGhPclVybCkK
ICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKICAgICBTdHJpbmcgcGF0aFRvVGVzdCA9
IHBhdGhUb0NoZWNrLnN1YnN0cmluZyhsb2NhdGlvbiArIGxheW91dFRlc3RzLmxlbmd0aCgpICsg
MSk7Ci0gICAgU3RyaW5nIHBvc3NpYmxlUGF0aFRvTG9ndWUgPSBXZWJDb3JlOjpGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGF0aFRvQ2hlY2suc3Vic3RyaW5nKDAsIGxvY2F0
aW9uICsgbGF5b3V0VGVzdHMubGVuZ3RoKCkgKyAxKSwgInBsYXRmb3JtXFx3aW4iKTsKKyAgICBT
dHJpbmcgcG9zc2libGVQYXRoVG9Mb2d1ZSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChwYXRoVG9DaGVjay5zdWJzdHJpbmcoMCwgbG9jYXRpb24gKyBsYXlvdXRUZXN0cy5s
ZW5ndGgoKSArIDEpLCAicGxhdGZvcm1cXHdpbiIpOwogCiAgICAgVmVjdG9yPFN0cmluZz4gcG9z
c2libGVQYXRoczsKLSAgICBwb3NzaWJsZVBhdGhzLmFwcGVuZChXZWJDb3JlOjpGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocG9zc2libGVQYXRoVG9Mb2d1ZSwgcGF0aFRvVGVz
dCkpOworICAgIHBvc3NpYmxlUGF0aHMuYXBwZW5kKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChwb3NzaWJsZVBhdGhUb0xvZ3VlLCBwYXRoVG9UZXN0KSk7CiAKICAgICBzaXpl
X3QgbmV4dENhbmRpZGF0ZUVuZCA9IHBhdGhUb1Rlc3QucmV2ZXJzZUZpbmQoJ1xcJyk7CiAgICAg
d2hpbGUgKG5leHRDYW5kaWRhdGVFbmQgJiYgbmV4dENhbmRpZGF0ZUVuZCAhPSBXVEY6Om5vdEZv
dW5kKSB7CiAgICAgICAgIHBhdGhUb1Rlc3QgPSBwYXRoVG9UZXN0LnN1YnN0cmluZygwLCBuZXh0
Q2FuZGlkYXRlRW5kKTsKLSAgICAgICAgcG9zc2libGVQYXRocy5hcHBlbmQoV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBvc3NpYmxlUGF0aFRvTG9ndWUsIHBh
dGhUb1Rlc3QpKTsKKyAgICAgICAgcG9zc2libGVQYXRocy5hcHBlbmQoRmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBvc3NpYmxlUGF0aFRvTG9ndWUsIHBhdGhUb1Rlc3QpKTsK
ICAgICAgICAgbmV4dENhbmRpZGF0ZUVuZCA9IHBhdGhUb1Rlc3QucmV2ZXJzZUZpbmQoJ1xcJyk7
CiAgICAgfQogCiAgICAgZm9yIChWZWN0b3I8U3RyaW5nPjo6aXRlcmF0b3IgcG9zID0gcG9zc2li
bGVQYXRocy5iZWdpbigpOyBwb3MgIT0gcG9zc2libGVQYXRocy5lbmQoKTsgKytwb3MpIHsKLSAg
ICAgICAgcGF0aFRvRm9udEZhbGxiYWNrID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KCpwb3MsICJyZXNvdXJjZXNcXCIpOworICAgICAgICBwYXRoVG9Gb250
RmFsbGJhY2sgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoKnBvcywgInJl
c291cmNlc1xcIik7CiAKICAgICAgICAgaWYgKDo6UGF0aElzRGlyZWN0b3J5VyhwYXRoVG9Gb250
RmFsbGJhY2suY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpKQogICAgICAg
ICAgICAgcmV0dXJuIHBhdGhUb0ZvbnRGYWxsYmFjazsKQEAgLTEwODEsNyArMTA4MSw3IEBAIHN0
YXRpYyB2b2lkIGFkZEZvbnRGYWxsYmFja0lmUHJlc2VudChjb25zdCBTdHJpbmcmIGZvbnRGYWxs
YmFja1BhdGgpCiAgICAgaWYgKGZvbnRGYWxsYmFja1BhdGguaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBTdHJpbmcgZm9udEZhbGxiYWNrID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGZvbnRGYWxsYmFja1BhdGgsICJNYWMtY29tcGF0aWJs
ZS1mb250LWZhbGxiYWNrLmNzcyIpOworICAgIFN0cmluZyBmb250RmFsbGJhY2sgPSBGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZm9udEZhbGxiYWNrUGF0aCwgIk1hYy1jb21w
YXRpYmxlLWZvbnQtZmFsbGJhY2suY3NzIik7CiAKICAgICBpZiAoITo6UGF0aEZpbGVFeGlzdHNX
KGZvbnRGYWxsYmFjay5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSkpCiAg
ICAgICAgIHJldHVybjsKQEAgLTEwOTQsNyArMTA5NCw3IEBAIHN0YXRpYyB2b2lkIHJlbW92ZUZv
bnRGYWxsYmFja0lmUHJlc2VudChjb25zdCBTdHJpbmcmIGZvbnRGYWxsYmFja1BhdGgpCiAgICAg
aWYgKGZvbnRGYWxsYmFja1BhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBT
dHJpbmcgZm9udEZhbGxiYWNrID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KGZvbnRGYWxsYmFja1BhdGgsICJNYWMtY29tcGF0aWJsZS1mb250LWZhbGxiYWNr
LmNzcyIpOworICAgIFN0cmluZyBmb250RmFsbGJhY2sgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoZm9udEZhbGxiYWNrUGF0aCwgIk1hYy1jb21wYXRpYmxlLWZvbnQtZmFs
bGJhY2suY3NzIik7CiAKICAgICBpZiAoITo6UGF0aEZpbGVFeGlzdHNXKGZvbnRGYWxsYmFjay5j
aGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSkpCiAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CmluZGV4IGIyNDkwMDg5OGIzZmM1YWY4OWM0OTAz
MzgwYzNmZDdjMWRjMGQ3MDUuLmQ5Y2VhOGY1ODFmNmIzMDFkMjkzNWQ1ZGI0NWIwNzc5NjlkNGMw
ZGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dApAQCAtMTg4LDcgKzE4OCwxNCBAQCBz
ZXQoVGVzdFdURl9TT1VSQ0VTCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL1dv
cmtlclBvb2wuY3BwCiApCiAKLSMgRklYTUU6IFRlc3RzL1dURi9SdW5Mb29wLmNwcCBpcyBtaXNz
aW5nIGJlY2F1c2UgaXQgZG9lc24ndCB3b3JrIGZvciBXaW5kb3dzLgorIyBGSVhNRTogTWFrZSB0
aGVzZSB3b3JrIG9uIFdpbmRvd3MgdG9vLgoraWYgKE5PVCBXSU4zMikKKyAgICBsaXN0KEFQUEVO
RCBUZXN0V1RGX1NPVVJDRVMKKyAgICAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RG
L0ZpbGVTeXN0ZW0uY3BwCisgICAgICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9S
dW5Mb29wLmNwcAorICAgICkKK2VuZGlmICgpCisKICMgRklYTUU6IFBsYXRmb3JtLXNwZWNpZmlj
IHNvdXJjZXMgaW4gVGVzdHMvV1RGIGFyZSBub3QgaW5jbHVkZWQgaW4gVGVzdFdURl9TT1VSQ0VT
LgogCiBXRUJLSVRfSU5DTFVERV9DT05GSUdfRklMRVNfSUZfRVhJU1RTKCkKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1HVEsuY21ha2UgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IGMzNGZhZTA3Y2YzYzZiMGEzOWMzOTlmZWUzMmNk
MjVjM2EwYWE3ZjQuLmNlODIxZTYxYjA1NjQzNWIyZWVlZTVlMGU1NmJhMjM1NzcyNTg4NWUgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtOTMsNyArOTMsNiBAQCBhZGRf
ZXhlY3V0YWJsZShUZXN0V2ViQ29yZQogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dl
YkNvcmUvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9
L1Rlc3RzL1dlYkNvcmUvRE5TLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dl
YkNvcmUvRmlsZU1vbml0b3IuY3BwCi0gICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV2Vi
Q29yZS9GaWxlU3lzdGVtLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNv
cmUvZ3N0cmVhbWVyL0dzdE1hcHBlZEJ1ZmZlci5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElS
fS9UZXN0cy9XZWJDb3JlL2dzdHJlYW1lci9HU3RyZWFtZXJUZXN0LmNwcAogICAgICR7VEVTVFdF
QktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUvR3JpZFBvc2l0aW9uLmNwcApkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUpTQ09ubHkuY21ha2UgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1BsYXRmb3JtSlNDT25seS5jbWFrZQppbmRleCBhM2ZhMmRhOTU1ZDVhMzljMWMzOTY4
MGMyMWU4Y2RlNmU4ZmI1YzgwLi5iNTU2OThiYmZiZjk3MzNhYzA4ZTM2OTM1YTk4YmIyYjY5ZWUw
YjdmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtSlNDT25seS5jbWFr
ZQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtSlNDT25seS5jbWFrZQpAQCAtMjEs
NyArMjEsMyBAQCBlbmRpZiAoKQogc2V0KHRlc3RfbWFpbl9TT1VSQ0VTCiAgICAgJHtURVNUV0VC
S0lUQVBJX0RJUn0vZ2VuZXJpYy9tYWluLmNwcAogKQotCi1saXN0KEFQUEVORCBUZXN0V1RGX1NP
VVJDRVMKLSAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvUnVuTG9vcC5jcHAKLSkK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1QbGF5U3RhdGlvbi5jbWFr
ZSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1QbGF5U3RhdGlvbi5jbWFrZQppbmRleCA5
ZjFhMmE2NGQ1MTg0MDRkYTk4NmU2NjUxMjcwZjc4OGEwNWQ4ZTZjLi5mMWZjYjA0MWM3NWIwNzE1
ZjBhMzJmYmQ0NDBlYWM0ZTAxMWM0MTc5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1BsYXRmb3JtUGxheVN0YXRpb24uY21ha2UKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0
Zm9ybVBsYXlTdGF0aW9uLmNtYWtlCkBAIC0xNCw1ICsxNCw0IEBAIHNldCh0ZXN0X21haW5fU09V
UkNFUwogCiBsaXN0KEFQUEVORCBUZXN0V1RGX1NPVVJDRVMKICAgICAke1RFU1RXRUJLSVRBUElf
RElSfS9nZW5lcmljL1V0aWxpdGllc0dlbmVyaWMuY3BwCi0gICAgJHtURVNUV0VCS0lUQVBJX0RJ
Un0vVGVzdHMvV1RGL1J1bkxvb3AuY3BwCiApCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1BsYXRmb3JtV1BFLmNtYWtlIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVdQRS5j
bWFrZQppbmRleCBiNjg3NzU5OGQ4NzdkZTZjOGRhODZiNGViNTdjYzg2ZmYwYTJmN2VmLi40MjY3
ZGEyMGQwNzBjNDdiYzgxZTQ2ZWMyYjdmMmQxM2MwNzk5ZDc2IDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1BsYXRmb3JtV1BFLmNtYWtlCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
UGxhdGZvcm1XUEUuY21ha2UKQEAgLTYwLDcgKzYwLDYgQEAgYWRkX2V4ZWN1dGFibGUoVGVzdFdl
YkNvcmUKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9nbGliL1V0aWxpdGllc0dMaWIuY3BwCiAg
ICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHNDb250cm9sbGVyLmNwcAogICAgICR7VEVTVFdF
QktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUvRmlsZU1vbml0b3IuY3BwCi0gICAgJHtURVNUV0VC
S0lUQVBJX0RJUn0vVGVzdHMvV2ViQ29yZS9GaWxlU3lzdGVtLmNwcAogICAgICR7VEVTVFdFQktJ
VEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUvZ3N0cmVhbWVyL0dzdE1hcHBlZEJ1ZmZlci5jcHAKICAg
ICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL2dzdHJlYW1lci9HU3RyZWFtZXJU
ZXN0LmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUvSFRNTFBhcnNl
cklkaW9tcy5jcHAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNTQ3ZDFlYjc0OGQ5OGQxZGYx
ZjA0N2UxOWE4NTc2ZmE1MzgwOTM2Zi4uNjMwNjhlM2E4MTYzNGUwZTNhNzNiNjNjMDExMTMxYzA1
OGEwMjYwZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQyNyw3ICs0MjcsNiBAQAogCQk3
QzgzRTA0QzFEMEE2NDE4MDBGRUJDRjMgLyogV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEODlEMDM4MUM0RURCMkEw
MDA0MEEwNCAvKiBXZWJDb3JlTlNVUkxTZXNzaW9uLm1tICovOyB9OwogCQk3QzgzRTA0RDFEMEE2
NDE4MDBGRUJDRjMgLyogREZBQ29tYmluZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMjYwQkE1NzgxQjFEMkU3QjAwNEZBMDdDIC8qIERGQUNvbWJp
bmVyLmNwcCAqLzsgfTsKIAkJN0M4M0UwNEUxRDBBNjQxODAwRkVCQ0YzIC8qIERGQU1pbmltaXpl
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNkY2
RTFFRjFBREM3NDlCMDBERTY5NkIgLyogREZBTWluaW1pemVyLmNwcCAqLzsgfTsKLQkJN0M4M0Uw
NEYxRDBBNjQxODAwRkVCQ0YzIC8qIEZpbGVTeXN0ZW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5NzNCNUExQUYyMjg2QTAwNkM3QjM2IC8qIEZp
bGVTeXN0ZW0uY3BwICovOyB9OwogCQk3QzgzRTA1MDFEMEE2NDE4MDBGRUJDRjMgLyogSFRNTFBh
cnNlcklkaW9tcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4M0I4OEEzMzFDODAwNTZEMDBCQjI0MTggLyogSFRNTFBhcnNlcklkaW9tcy5jcHAgKi87
IH07CiAJCTdDODNFMDUxMUQwQTY0MTgwMEZFQkNGMyAvKiBQYXJzZWRDb250ZW50UmFuZ2UuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QyMjVDMDcx
QzQ1QTY5MjAwMTQwNzYxIC8qIFBhcnNlZENvbnRlbnRSYW5nZS5jcHAgKi87IH07CiAJCTdDODNF
MDUyMUQwQTY0MTgwMEZFQkNGMyAvKiBTaGFyZWRCdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5NzNCNUMxQUYyMjg3NTAwNkM3QjM2IC8q
IFNoYXJlZEJ1ZmZlci5jcHAgKi87IH07CkBAIC02ODksNiArNjg4LDcgQEAKIAkJQTFDNEZCNzMx
QkFDRDFDQTAwMzc0MkQwIC8qIHBhZ2VzLnBhZ2VzIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQzRGQjcyMUJBQ0QxQjcwMDM3NDJEMCAvKiBw
YWdlcy5wYWdlcyAqLzsgfTsKIAkJQTFERjc0MzIxQzQxQjY1ODAwQTJGNEQwIC8qIEFsd2F5c1Jl
dmFsaWRhdGVkVVJMU2NoZW1lcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEExREY3NDMwMUM0MUI2NTgwMEEyRjREMCAvKiBBbHdheXNSZXZhbGlkYXRl
ZFVSTFNjaGVtZXMubW0gKi87IH07CiAJCUExRUMxMTg4MUY0MjU0MTIwMEQwMTQ2RSAvKiBQcmV2
aWV3TG9hZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEExRUMxMTg3MUY0MjU0MTIwMEQwMTQ2RSAvKiBQcmV2aWV3TG9hZGVyLmNwcCAqLzsgfTsK
KwkJQTMxMDgyNzIyMUYyOTZGRjAwQzI4Qjk3IC8qIEZpbGVTeXN0ZW0uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTMxMDgyNzEyMUYyOTZFQzAwQzI4
Qjk3IC8qIEZpbGVTeXN0ZW0uY3BwICovOyB9OwogCQlBNTdBMzRGMjE2QUY2QjJCMDBDMjUwMUYg
LyogUGFnZVZpc2liaWxpdHlTdGF0ZVdpdGhXaW5kb3dDaGFuZ2VzLmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3QTM0RjExNkFGNjlF
MjAwQzI1MDFGIC8qIFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlcy5odG1sICov
OyB9OwogCQlBNTdENTRGMzFGMzM4QzM2MDBBOTdBQTcgLyogTmV2ZXJEZXN0cm95ZWQuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3RDU0RjIxRjMz
OEMzNjAwQTk3QUE3IC8qIE5ldmVyRGVzdHJveWVkLmNwcCAqLzsgfTsKIAkJQTU3RDU0RjYxRjMz
OTVEMDAwQTk3QUE3IC8qIExvZ2dlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNTdENTRGNDFGMzM5NUQwMDBBOTdBQTcgLyogTG9nZ2VyLmNwcCAq
LzsgfTsKQEAgLTE1MjEsNyArMTUyMSw2IEBACiAJCTQxMzVGQjgzMjAxMUZBQTMwMDMzMjEzOSAv
KiBJbmplY3RJbnRlcm5hbHNfQnVuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IEluamVjdEludGVybmFsc19CdW5kbGUuY3BwOyBwYXRoID0gVGVzdHMvSW5qZWN0
SW50ZXJuYWxzX0J1bmRsZS5jcHA7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJNDEz
NUZCODYyMDExRkFCRjAwMzMyMTM5IC8qIGxpYldlYkNvcmVUZXN0U3VwcG9ydC5keWxpYiAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1h
Y2gtby5keWxpYiI7IHBhdGggPSBsaWJXZWJDb3JlVGVzdFN1cHBvcnQuZHlsaWI7IHNvdXJjZVRy
ZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTQxODgyRjAyMjEwMTBBNzAwMDJGRjI4OCAv
KiBQcm9jZXNzUHJlV2FybWluZy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFByb2Nlc3NQcmVXYXJtaW5nLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk0MTk3M0I1QTFBRjIyODZBMDA2QzdCMzYgLyogRmlsZVN5c3RlbS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxlU3lzdGVtLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDE5NzNCNUMxQUYyMjg3NTAwNkM3QjM2IC8qIFNoYXJlZEJ1ZmZlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFyZWRCdWZmZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NDJCQkY2ODFDOTFDQUQ5MDAxNzA4N0Yg
LyogUmVmTG9nZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJl
ZkxvZ2dlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0MzNBMzk1MjA4MDQ0
MTMwMDkxRUQ1NyAvKiBTeW5jaHJvbm91c1RpbWVvdXRUZXN0cy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFN5bmNocm9ub3VzVGltZW91dFRlc3RzLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTkxOCw2ICsxOTE3LDcgQEAKIAkJQTFERjc0MzAx
QzQxQjY1ODAwQTJGNEQwIC8qIEFsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lcy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFsd2F5c1JldmFsaWRhdGVkVVJMU2No
ZW1lcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFFQzExODcxRjQyNTQxMjAw
RDAxNDZFIC8qIFByZXZpZXdMb2FkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJldmlld0xv
YWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExRkRGRDJFMTlDMjg4QkIw
MDUxNDhBNCAvKiBXS0ltYWdlQ3JlYXRlQ0dJbWFnZUNyYXNoLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLSW1hZ2VDcmVhdGVDR0ltYWdlQ3Jhc2guY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMzEwODI3MTIxRjI5NkVDMDBDMjhCOTcgLyogRmls
ZVN5c3RlbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxlU3lz
dGVtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU3QTM0RUYxNkFGNjc3MjAw
QzI1MDFGIC8qIFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlcy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRo
V2luZG93Q2hhbmdlcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU3QTM0RjEx
NkFGNjlFMjAwQzI1MDFGIC8qIFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlcy5o
dG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gUGFnZVZpc2liaWxpdHlTdGF0ZVdpdGhX
aW5kb3dDaGFuZ2VzLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1N0Q1NEYy
MUYzMzhDMzYwMEE5N0FBNyAvKiBOZXZlckRlc3Ryb3llZC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBOZXZlckRlc3Ryb3llZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNjc5
LDcgKzI2NzksNiBAQAogCQkJCTU3OTY1MUU2MjE2QkZENTMwMDZFQkZFNSAvKiBGaWRvSGlkTWVz
c2FnZVRlc3QuY3BwICovLAogCQkJCTU3MkI0MDM1MjE3NkEwMjkwMDBBRDQzRSAvKiBGaWRvVGVz
dERhdGEuaCAqLywKIAkJCQk3QTMyRDc0OTFGMDIxNTE1MDAxNjJDNDQgLyogRmlsZU1vbml0b3Iu
Y3BwICovLAotCQkJCTQxOTczQjVBMUFGMjI4NkEwMDZDN0IzNiAvKiBGaWxlU3lzdGVtLmNwcCAq
LywKIAkJCQk3QTkwOUE3MDFEODc3NDc1MDA3RTEwRjggLyogRmxvYXRQb2ludC5jcHAgKi8sCiAJ
CQkJN0E5MDlBNzExRDg3NzQ3NTAwN0UxMEY4IC8qIEZsb2F0UmVjdC5jcHAgKi8sCiAJCQkJN0E5
MDlBNzIxRDg3NzQ3NTAwN0UxMEY4IC8qIEZsb2F0U2l6ZS5jcHAgKi8sCkBAIC0zMTkwLDYgKzMx
ODksNyBAQAogCQkJCUU0QTc1N0QzMTc4QUVBNUIwMEI1RDdBNCAvKiBEZXF1ZS5jcHAgKi8sCiAJ
CQkJMUFGN0IyMUQxRDZDRDEyRTAwOEMxMjZDIC8qIEVudW1UcmFpdHMuY3BwICovLAogCQkJCUFE
N0M0MzRDMUREMkE1NDcwMDI2ODg4QiAvKiBFeHBlY3RlZC5jcHAgKi8sCisJCQkJQTMxMDgyNzEy
MUYyOTZFQzAwQzI4Qjk3IC8qIEZpbGVTeXN0ZW0uY3BwICovLAogCQkJCTkzMTBDRDM2MUVGNzA4
RkIwMDUwRkZFMCAvKiBGdW5jdGlvbi5jcHAgKi8sCiAJCQkJODNEQjc5NjcxRUY2M0IzQzAwQkZB
NUU1IC8qIEZ1bmN0aW9uLmNwcCAqLywKIAkJCQk3QTM4RDdFNTFDNzUyRDVGMDA0RjE1N0QgLyog
SGFzaENvdW50ZWRTZXQuY3BwICovLApAQCAtMzc5OCw2ICszNzk4LDcgQEAKIAkJCQk3QzgzREVB
RDFEMEE1OTBDMDBGRUJDRjMgLyogRGVxdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFGN0Iy
MUYxRDZDRDE0RDAwOEMxMjZDIC8qIEVudW1UcmFpdHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QUQ3QzQzNEQxREQyQTU0RTAwMjY4ODhCIC8qIEV4cGVjdGVkLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCUEzMTA4MjcyMjFGMjk2RkYwMEMyOEI5NyAvKiBGaWxlU3lzdGVtLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTkzMTBDRDM4MUVGNzA4RkIwMDUwRkZFMCAvKiBGdW5jdGlvbi5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk2QkZEMjk0QzFENUU2QzFEMDA4RUM5NjggLyogSGFzaENvdW50ZWRTZXQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzRDYzMUQxRkNCNzYyMDAwMzJFQ0Q2IC8qIEhhc2hl
ci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTQwMDEsNyArNDAwMiw2IEBACiAJCQkJN0NDRTdFRjEx
QTQxMUFFNjAwNDQ3QzRDIC8qIEZhaWxlZExvYWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTc5
NjUxRTcyMTZCRkRFRDAwNkVCRkU1IC8qIEZpZG9IaWRNZXNzYWdlVGVzdC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk3QTMyRDc0QTFGMDIxNTE1MDAxNjJDNDQgLyogRmlsZU1vbml0b3IuY3BwIGlu
IFNvdXJjZXMgKi8sCi0JCQkJN0M4M0UwNEYxRDBBNjQxODAwRkVCQ0YzIC8qIEZpbGVTeXN0ZW0u
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFRjMxQTQxMUFFNjAwNDQ3QzRDIC8qIEZpbmQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0UwQkIxRDBBNjUwMDAwRkVCQ0YzIC8qIEZpbmRJ
blBhZ2UubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VGNDFBNDExQUU2MDA0NDdDNEMgLyog
RmluZE1hdGNoZXMubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvRmlsZVN5c3RlbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDU3ZGY2MTQyOTdmMGEyMzcyMzk1Yzc2
YmY0YzU5MTVhNTc1NzVmYQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCkBAIC0wLDAgKzEsMTQ4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIlRlc3QuaCIKKyNpbmNsdWRlIDx3dGYvRmls
ZU1ldGFkYXRhLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYv
TWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMuaD4KKworbmFtZXNwYWNl
IFRlc3RXZWJLaXRBUEkgeworCitjb25zdCBjaGFyKiBGaWxlU3lzdGVtVGVzdERhdGEgPSAiVGhp
cyBpcyBhIHRlc3QiOworCisvLyBGSVhNRTogUmVmYWN0b3IgRmlsZVN5c3RlbVRlc3QgYW5kIFNo
YXJlZEJ1ZmZlclRlc3QgYXMgYSBzaW5nbGUgY2xhc3MuCitjbGFzcyBGaWxlU3lzdGVtVGVzdCA6
IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK3B1YmxpYzoKKyAgICB2b2lkIFNldFVwKCkgb3ZlcnJp
ZGUKKyAgICB7CisgICAgICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKKworICAgICAg
ICAvLyBjcmVhdGUgdGVtcCBmaWxlCisgICAgICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhh
bmRsZSBoYW5kbGU7CisgICAgICAgIG1fdGVtcEZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRl
bXBvcmFyeUZpbGUoInRlbXBUZXN0RmlsZSIsIGhhbmRsZSk7CisgICAgICAgIEZpbGVTeXN0ZW06
OndyaXRlVG9GaWxlKGhhbmRsZSwgRmlsZVN5c3RlbVRlc3REYXRhLCBzdHJsZW4oRmlsZVN5c3Rl
bVRlc3REYXRhKSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUpOworCisg
ICAgICAgIG1fdGVtcEZpbGVTeW1saW5rUGF0aCA9IG1fdGVtcEZpbGVQYXRoICsgIi1zeW1saW5r
IjsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y3JlYXRlU3ltYm9saWNMaW5rKG1fdGVtcEZpbGVQYXRo
LCBtX3RlbXBGaWxlU3ltbGlua1BhdGgpOworCisgICAgICAgIG1fdGVtcEVtcHR5RmlsZVBhdGgg
PSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcEVtcHR5VGVzdEZpbGUiLCBoYW5k
bGUpOworICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKKworICAgICAgICBt
X3NwYWNlQ29udGFpbmluZ0ZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUo
InRlbXAgRW1wdHkgVGVzdCBGaWxlIiwgaGFuZGxlKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xv
c2VGaWxlKGhhbmRsZSk7CisKKyAgICAgICAgbV9iYW5nQ29udGFpbmluZ0ZpbGVQYXRoID0gRmls
ZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoInRlbXAhRW1wdHkhVGVzdCFGaWxlIiwgaGFuZGxl
KTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CisKKyAgICAgICAgbV9x
dW90ZUNvbnRhaW5pbmdGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0
ZW1wXCJFbXB0eVwiVGVzdEZpbGUiLCBoYW5kbGUpOworICAgICAgICBGaWxlU3lzdGVtOjpjbG9z
ZUZpbGUoaGFuZGxlKTsKKyAgICB9CisKKyAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKKyAg
ICB7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV90ZW1wRmlsZVBhdGgpOworICAg
ICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fdGVtcEZpbGVTeW1saW5rUGF0aCk7CisgICAg
ICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV90ZW1wRW1wdHlGaWxlUGF0aCk7CisgICAgICAg
IEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9zcGFjZUNvbnRhaW5pbmdGaWxlUGF0aCk7CisgICAg
ICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9iYW5nQ29udGFpbmluZ0ZpbGVQYXRoKTsKKyAg
ICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX3F1b3RlQ29udGFpbmluZ0ZpbGVQYXRoKTsK
KyAgICB9CisKKyAgICBjb25zdCBTdHJpbmcmIHRlbXBGaWxlUGF0aCgpIHsgcmV0dXJuIG1fdGVt
cEZpbGVQYXRoOyB9CisgICAgY29uc3QgU3RyaW5nJiB0ZW1wRmlsZVN5bWxpbmtQYXRoKCkgeyBy
ZXR1cm4gbV90ZW1wRmlsZVN5bWxpbmtQYXRoOyB9CisgICAgY29uc3QgU3RyaW5nJiB0ZW1wRW1w
dHlGaWxlUGF0aCgpIHsgcmV0dXJuIG1fdGVtcEVtcHR5RmlsZVBhdGg7IH0KKyAgICBjb25zdCBT
dHJpbmcmIHNwYWNlQ29udGFpbmluZ0ZpbGVQYXRoKCkgeyByZXR1cm4gbV9zcGFjZUNvbnRhaW5p
bmdGaWxlUGF0aDsgfQorICAgIGNvbnN0IFN0cmluZyYgYmFuZ0NvbnRhaW5pbmdGaWxlUGF0aCgp
IHsgcmV0dXJuIG1fYmFuZ0NvbnRhaW5pbmdGaWxlUGF0aDsgfQorICAgIGNvbnN0IFN0cmluZyYg
cXVvdGVDb250YWluaW5nRmlsZVBhdGgoKSB7IHJldHVybiBtX3F1b3RlQ29udGFpbmluZ0ZpbGVQ
YXRoOyB9CisKK3ByaXZhdGU6CisgICAgU3RyaW5nIG1fdGVtcEZpbGVQYXRoOworICAgIFN0cmlu
ZyBtX3RlbXBGaWxlU3ltbGlua1BhdGg7CisgICAgU3RyaW5nIG1fdGVtcEVtcHR5RmlsZVBhdGg7
CisgICAgU3RyaW5nIG1fc3BhY2VDb250YWluaW5nRmlsZVBhdGg7CisgICAgU3RyaW5nIG1fYmFu
Z0NvbnRhaW5pbmdGaWxlUGF0aDsKKyAgICBTdHJpbmcgbV9xdW90ZUNvbnRhaW5pbmdGaWxlUGF0
aDsKK307CisKK1RFU1RfRihGaWxlU3lzdGVtVGVzdCwgTWFwcGluZ01pc3NpbmdGaWxlKQorewor
ICAgIGJvb2wgc3VjY2VzczsKKyAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRG
aWxlRGF0YShTdHJpbmcoIm5vdF9leGlzdGluZ19maWxlIiksIHN1Y2Nlc3MpOworICAgIEVYUEVD
VF9GQUxTRShzdWNjZXNzKTsKKyAgICBFWFBFQ1RfVFJVRSghbWFwcGVkRmlsZURhdGEpOworfQor
CitURVNUX0YoRmlsZVN5c3RlbVRlc3QsIE1hcHBpbmdFeGlzdGluZ0ZpbGUpCit7CisgICAgYm9v
bCBzdWNjZXNzOworICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRh
KHRlbXBGaWxlUGF0aCgpLCBzdWNjZXNzKTsKKyAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKKyAg
ICBFWFBFQ1RfVFJVRSghIW1hcHBlZEZpbGVEYXRhKTsKKyAgICBFWFBFQ1RfVFJVRShtYXBwZWRG
aWxlRGF0YS5zaXplKCkgPT0gc3RybGVuKEZpbGVTeXN0ZW1UZXN0RGF0YSkpOworICAgIEVYUEVD
VF9UUlVFKHN0cm5zdHIoRmlsZVN5c3RlbVRlc3REYXRhLCBzdGF0aWNfY2FzdDxjb25zdCBjaGFy
Kj4obWFwcGVkRmlsZURhdGEuZGF0YSgpKSwgbWFwcGVkRmlsZURhdGEuc2l6ZSgpKSk7Cit9CisK
K1RFU1RfRihGaWxlU3lzdGVtVGVzdCwgTWFwcGluZ0V4aXN0aW5nRW1wdHlGaWxlKQoreworICAg
IGJvb2wgc3VjY2VzczsKKyAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxl
RGF0YSh0ZW1wRW1wdHlGaWxlUGF0aCgpLCBzdWNjZXNzKTsKKyAgICBFWFBFQ1RfVFJVRShzdWNj
ZXNzKTsKKyAgICBFWFBFQ1RfVFJVRSghbWFwcGVkRmlsZURhdGEpOworfQorCitURVNUX0YoRmls
ZVN5c3RlbVRlc3QsIEZpbGVzSGF2ZVNhbWVWb2x1bWUpCit7CisgICAgRVhQRUNUX1RSVUUoRmls
ZVN5c3RlbTo6ZmlsZXNIYXZlU2FtZVZvbHVtZSh0ZW1wRmlsZVBhdGgoKSwgc3BhY2VDb250YWlu
aW5nRmlsZVBhdGgoKSkpOworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVzSGF2ZVNh
bWVWb2x1bWUoc3BhY2VDb250YWluaW5nRmlsZVBhdGgoKSwgYmFuZ0NvbnRhaW5pbmdGaWxlUGF0
aCgpKSk7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZXNIYXZlU2FtZVZvbHVtZShi
YW5nQ29udGFpbmluZ0ZpbGVQYXRoKCksIHF1b3RlQ29udGFpbmluZ0ZpbGVQYXRoKCkpKTsKK30K
KworVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBHZXRGaWxlTWV0YWRhdGFTeW1saW5rKQoreworICAg
IGF1dG8gc3ltbGlua01ldGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhKHRlbXBGaWxl
U3ltbGlua1BhdGgoKSk7CisgICAgQVNTRVJUX1RSVUUoc3ltbGlua01ldGFkYXRhLmhhc1ZhbHVl
KCkpOworICAgIEVYUEVDVF9UUlVFKHN5bWxpbmtNZXRhZGF0YS52YWx1ZSgpLnR5cGUgPT0gRmls
ZU1ldGFkYXRhOjpUeXBlOjpTeW1ib2xpY0xpbmspOworICAgIEVYUEVDVF9GQUxTRShzdGF0aWNf
Y2FzdDxzaXplX3Q+KHN5bWxpbmtNZXRhZGF0YS52YWx1ZSgpLmxlbmd0aCkgPT0gc3RybGVuKEZp
bGVTeXN0ZW1UZXN0RGF0YSkpOworCisgICAgYXV0byB0YXJnZXRNZXRhZGF0YSA9IEZpbGVTeXN0
ZW06OmZpbGVNZXRhZGF0YUZvbGxvd2luZ1N5bWxpbmtzKHRlbXBGaWxlU3ltbGlua1BhdGgoKSk7
CisgICAgQVNTRVJUX1RSVUUodGFyZ2V0TWV0YWRhdGEuaGFzVmFsdWUoKSk7CisgICAgRVhQRUNU
X1RSVUUodGFyZ2V0TWV0YWRhdGEudmFsdWUoKS50eXBlID09IEZpbGVNZXRhZGF0YTo6VHlwZTo6
RmlsZSk7CisgICAgRVhQRUNUX0VRKHN0cmxlbihGaWxlU3lzdGVtVGVzdERhdGEpLCBzdGF0aWNf
Y2FzdDxzaXplX3Q+KHRhcmdldE1ldGFkYXRhLnZhbHVlKCkubGVuZ3RoKSk7Cit9CisKK1RFU1Rf
RihGaWxlU3lzdGVtVGVzdCwgVW5pY29kZURpcmVjdG9yeU5hbWUpCit7CisgICAgU3RyaW5nIHBh
dGggPSBTdHJpbmc6OmZyb21VVEY4KCIvdGVzdC9hXHUwMzA4bG8vdGVzdC50eHQiKTsKKyAgICBT
dHJpbmcgZGlyZWN0b3J5TmFtZSA9IEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUocGF0aCk7Cisg
ICAgU3RyaW5nIGV4cGVjdGVkRGlyZWN0b3J5TmFtZSA9IFN0cmluZzo6ZnJvbVVURjgoIi90ZXN0
L2FcdTAzMDhsbyIpOworICAgIEVYUEVDVF9UUlVFKGV4cGVjdGVkRGlyZWN0b3J5TmFtZSA9PSBk
aXJlY3RvcnlOYW1lKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9GaWxlTW9uaXRvci5jcHAKaW5kZXggNWYxZGM4YjJlNGQ1MjRkMzUyNjgwNGJkNmNk
OWNlOThhMzcxMWZlOC4uZTAwMmRmMWVmMDk0ZjViM2YwMGQxNmU5YzZiZTZkNDlkNWU2YWYyNCAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9y
LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZU1vbml0b3Iu
Y3BwCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiVGVzdC5oIgogI2luY2x1ZGUgIldURlN0
cmluZ1V0aWxpdGllcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZU1vbml0b3IuaD4KLSNpbmNs
dWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgog
I2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNp
bmNsdWRlIDx3dGYvU2NvcGUuaD4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9GaWxlU3lzdGVtLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9GaWxlU3lzdGVtLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzY2MjUw
MjUzMDk3MjdlYTYwNWNiNTJjZmM5ZWNkNGIzM2U3Nzg3NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvRmlsZVN5c3RlbS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTAgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRlICJUZXN0LmgiCi0jaW5jbHVkZSA8
V2ViQ29yZS9GaWxlTWV0YWRhdGEuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4K
LSNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgotI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMu
aD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
IHsKLQotY29uc3QgY2hhciogRmlsZVN5c3RlbVRlc3REYXRhID0gIlRoaXMgaXMgYSB0ZXN0IjsK
LQotLy8gRklYTUU6IFJlZmFjdG9yIEZpbGVTeXN0ZW1UZXN0IGFuZCBTaGFyZWRCdWZmZXJUZXN0
IGFzIGEgc2luZ2xlIGNsYXNzLgotY2xhc3MgRmlsZVN5c3RlbVRlc3QgOiBwdWJsaWMgdGVzdGlu
Zzo6VGVzdCB7Ci1wdWJsaWM6Ci0gICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCi0gICAgewotICAg
ICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7Ci0gICAgICAgIAotICAgICAgICAvLyBj
cmVhdGUgdGVtcCBmaWxlCi0gICAgICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBo
YW5kbGU7Ci0gICAgICAgIG1fdGVtcEZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFy
eUZpbGUoInRlbXBUZXN0RmlsZSIsIGhhbmRsZSk7Ci0gICAgICAgIEZpbGVTeXN0ZW06OndyaXRl
VG9GaWxlKGhhbmRsZSwgRmlsZVN5c3RlbVRlc3REYXRhLCBzdHJsZW4oRmlsZVN5c3RlbVRlc3RE
YXRhKSk7Ci0gICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUpOwotCi0gICAgICAg
IG1fdGVtcEZpbGVTeW1saW5rUGF0aCA9IG1fdGVtcEZpbGVQYXRoICsgIi1zeW1saW5rIjsKLSAg
ICAgICAgRmlsZVN5c3RlbTo6Y3JlYXRlU3ltYm9saWNMaW5rKG1fdGVtcEZpbGVQYXRoLCBtX3Rl
bXBGaWxlU3ltbGlua1BhdGgpOwotCi0gICAgICAgIG1fdGVtcEVtcHR5RmlsZVBhdGggPSBGaWxl
U3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcEVtcHR5VGVzdEZpbGUiLCBoYW5kbGUpOwot
ICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKLQotICAgICAgICBtX3NwYWNl
Q29udGFpbmluZ0ZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoInRlbXAg
RW1wdHkgVGVzdCBGaWxlIiwgaGFuZGxlKTsKLSAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxl
KGhhbmRsZSk7Ci0KLSAgICAgICAgbV9iYW5nQ29udGFpbmluZ0ZpbGVQYXRoID0gRmlsZVN5c3Rl
bTo6b3BlblRlbXBvcmFyeUZpbGUoInRlbXAhRW1wdHkhVGVzdCFGaWxlIiwgaGFuZGxlKTsKLSAg
ICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7Ci0KLSAgICAgICAgbV9xdW90ZUNv
bnRhaW5pbmdGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wXCJF
bXB0eVwiVGVzdEZpbGUiLCBoYW5kbGUpOwotICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUo
aGFuZGxlKTsKLSAgICB9Ci0KLSAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKLSAgICB7Ci0g
ICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV90ZW1wRmlsZVBhdGgpOwotICAgICAgICBG
aWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fdGVtcEZpbGVTeW1saW5rUGF0aCk7Ci0gICAgICAgIEZp
bGVTeXN0ZW06OmRlbGV0ZUZpbGUobV90ZW1wRW1wdHlGaWxlUGF0aCk7Ci0gICAgICAgIEZpbGVT
eXN0ZW06OmRlbGV0ZUZpbGUobV9zcGFjZUNvbnRhaW5pbmdGaWxlUGF0aCk7Ci0gICAgICAgIEZp
bGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9iYW5nQ29udGFpbmluZ0ZpbGVQYXRoKTsKLSAgICAgICAg
RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX3F1b3RlQ29udGFpbmluZ0ZpbGVQYXRoKTsKLSAgICB9
Ci0KLSAgICBjb25zdCBTdHJpbmcmIHRlbXBGaWxlUGF0aCgpIHsgcmV0dXJuIG1fdGVtcEZpbGVQ
YXRoOyB9Ci0gICAgY29uc3QgU3RyaW5nJiB0ZW1wRmlsZVN5bWxpbmtQYXRoKCkgeyByZXR1cm4g
bV90ZW1wRmlsZVN5bWxpbmtQYXRoOyB9Ci0gICAgY29uc3QgU3RyaW5nJiB0ZW1wRW1wdHlGaWxl
UGF0aCgpIHsgcmV0dXJuIG1fdGVtcEVtcHR5RmlsZVBhdGg7IH0KLSAgICBjb25zdCBTdHJpbmcm
IHNwYWNlQ29udGFpbmluZ0ZpbGVQYXRoKCkgeyByZXR1cm4gbV9zcGFjZUNvbnRhaW5pbmdGaWxl
UGF0aDsgfQotICAgIGNvbnN0IFN0cmluZyYgYmFuZ0NvbnRhaW5pbmdGaWxlUGF0aCgpIHsgcmV0
dXJuIG1fYmFuZ0NvbnRhaW5pbmdGaWxlUGF0aDsgfQotICAgIGNvbnN0IFN0cmluZyYgcXVvdGVD
b250YWluaW5nRmlsZVBhdGgoKSB7IHJldHVybiBtX3F1b3RlQ29udGFpbmluZ0ZpbGVQYXRoOyB9
Ci0KLXByaXZhdGU6Ci0gICAgU3RyaW5nIG1fdGVtcEZpbGVQYXRoOwotICAgIFN0cmluZyBtX3Rl
bXBGaWxlU3ltbGlua1BhdGg7Ci0gICAgU3RyaW5nIG1fdGVtcEVtcHR5RmlsZVBhdGg7Ci0gICAg
U3RyaW5nIG1fc3BhY2VDb250YWluaW5nRmlsZVBhdGg7Ci0gICAgU3RyaW5nIG1fYmFuZ0NvbnRh
aW5pbmdGaWxlUGF0aDsKLSAgICBTdHJpbmcgbV9xdW90ZUNvbnRhaW5pbmdGaWxlUGF0aDsKLX07
Ci0KLVRFU1RfRihGaWxlU3lzdGVtVGVzdCwgTWFwcGluZ01pc3NpbmdGaWxlKQotewotICAgIGJv
b2wgc3VjY2VzczsKLSAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0
YShTdHJpbmcoIm5vdF9leGlzdGluZ19maWxlIiksIHN1Y2Nlc3MpOwotICAgIEVYUEVDVF9GQUxT
RShzdWNjZXNzKTsKLSAgICBFWFBFQ1RfVFJVRSghbWFwcGVkRmlsZURhdGEpOwotfQotCi1URVNU
X0YoRmlsZVN5c3RlbVRlc3QsIE1hcHBpbmdFeGlzdGluZ0ZpbGUpCi17Ci0gICAgYm9vbCBzdWNj
ZXNzOwotICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKHRlbXBG
aWxlUGF0aCgpLCBzdWNjZXNzKTsKLSAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKLSAgICBFWFBF
Q1RfVFJVRSghIW1hcHBlZEZpbGVEYXRhKTsKLSAgICBFWFBFQ1RfVFJVRShtYXBwZWRGaWxlRGF0
YS5zaXplKCkgPT0gc3RybGVuKEZpbGVTeXN0ZW1UZXN0RGF0YSkpOwotICAgIEVYUEVDVF9UUlVF
KHN0cm5zdHIoRmlsZVN5c3RlbVRlc3REYXRhLCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obWFw
cGVkRmlsZURhdGEuZGF0YSgpKSwgbWFwcGVkRmlsZURhdGEuc2l6ZSgpKSk7Ci19Ci0KLVRFU1Rf
RihGaWxlU3lzdGVtVGVzdCwgTWFwcGluZ0V4aXN0aW5nRW1wdHlGaWxlKQotewotICAgIGJvb2wg
c3VjY2VzczsKLSAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YSh0
ZW1wRW1wdHlGaWxlUGF0aCgpLCBzdWNjZXNzKTsKLSAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsK
LSAgICBFWFBFQ1RfVFJVRSghbWFwcGVkRmlsZURhdGEpOwotfQotCi1URVNUX0YoRmlsZVN5c3Rl
bVRlc3QsIEZpbGVzSGF2ZVNhbWVWb2x1bWUpCi17Ci0gICAgRVhQRUNUX1RSVUUoRmlsZVN5c3Rl
bTo6ZmlsZXNIYXZlU2FtZVZvbHVtZSh0ZW1wRmlsZVBhdGgoKSwgc3BhY2VDb250YWluaW5nRmls
ZVBhdGgoKSkpOwotICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVzSGF2ZVNhbWVWb2x1
bWUoc3BhY2VDb250YWluaW5nRmlsZVBhdGgoKSwgYmFuZ0NvbnRhaW5pbmdGaWxlUGF0aCgpKSk7
Ci0gICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZXNIYXZlU2FtZVZvbHVtZShiYW5nQ29u
dGFpbmluZ0ZpbGVQYXRoKCksIHF1b3RlQ29udGFpbmluZ0ZpbGVQYXRoKCkpKTsKLX0KLQotVEVT
VF9GKEZpbGVTeXN0ZW1UZXN0LCBHZXRGaWxlTWV0YWRhdGFTeW1saW5rKQotewotICAgIGF1dG8g
c3ltbGlua01ldGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhKHRlbXBGaWxlU3ltbGlu
a1BhdGgoKSk7Ci0gICAgQVNTRVJUX1RSVUUoc3ltbGlua01ldGFkYXRhLmhhc1ZhbHVlKCkpOwot
ICAgIEVYUEVDVF9UUlVFKHN5bWxpbmtNZXRhZGF0YS52YWx1ZSgpLnR5cGUgPT0gRmlsZU1ldGFk
YXRhOjpUeXBlOjpTeW1ib2xpY0xpbmspOwotICAgIEVYUEVDVF9GQUxTRShzdGF0aWNfY2FzdDxz
aXplX3Q+KHN5bWxpbmtNZXRhZGF0YS52YWx1ZSgpLmxlbmd0aCkgPT0gc3RybGVuKEZpbGVTeXN0
ZW1UZXN0RGF0YSkpOwotCi0gICAgYXV0byB0YXJnZXRNZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZp
bGVNZXRhZGF0YUZvbGxvd2luZ1N5bWxpbmtzKHRlbXBGaWxlU3ltbGlua1BhdGgoKSk7Ci0gICAg
QVNTRVJUX1RSVUUodGFyZ2V0TWV0YWRhdGEuaGFzVmFsdWUoKSk7Ci0gICAgRVhQRUNUX1RSVUUo
dGFyZ2V0TWV0YWRhdGEudmFsdWUoKS50eXBlID09IEZpbGVNZXRhZGF0YTo6VHlwZTo6RmlsZSk7
Ci0gICAgRVhQRUNUX0VRKHN0cmxlbihGaWxlU3lzdGVtVGVzdERhdGEpLCBzdGF0aWNfY2FzdDxz
aXplX3Q+KHRhcmdldE1ldGFkYXRhLnZhbHVlKCkubGVuZ3RoKSk7Ci19Ci0KLVRFU1RfRihGaWxl
U3lzdGVtVGVzdCwgVW5pY29kZURpcmVjdG9yeU5hbWUpCi17Ci0gICAgU3RyaW5nIHBhdGggPSBT
dHJpbmc6OmZyb21VVEY4KCIvdGVzdC9hXHUwMzA4bG8vdGVzdC50eHQiKTsKLSAgICBTdHJpbmcg
ZGlyZWN0b3J5TmFtZSA9IEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUocGF0aCk7Ci0gICAgU3Ry
aW5nIGV4cGVjdGVkRGlyZWN0b3J5TmFtZSA9IFN0cmluZzo6ZnJvbVVURjgoIi90ZXN0L2FcdTAz
MDhsbyIpOwotICAgIEVYUEVDVF9UUlVFKGV4cGVjdGVkRGlyZWN0b3J5TmFtZSA9PSBkaXJlY3Rv
cnlOYW1lKTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9TZWN1cml0eU9yaWdpbi5jcHAKaW5kZXggZGE1ZjRmZjU4OThhOWYwOWM4YjgzOTVhNTVk
ZTczOGYxNjhjOTA5Zi4uYTQxYWI0YmNhMzcxZDQ1ZGU4Y2I0NTg2ODViYzk3NGUzMGY0MDZmMyAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NlY3VyaXR5T3Jp
Z2luLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2VjdXJpdHlP
cmlnaW4uY3BwCkBAIC0yNiw4ICsyNiw4IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJXVEZTdHJpbmdVdGlsaXRpZXMuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0u
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CisjaW5jbHVkZSA8d3RmL0Zp
bGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1No
YXJlZEJ1ZmZlclRlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1No
YXJlZEJ1ZmZlclRlc3QuY3BwCmluZGV4IDhmZTM1NjdjMWUxMTM2OTFkODViN2M1NWExZjk2NjU5
ZGU5ZDFmMjQuLjliOGIxM2E3NWQ1MmZmOTUxZWFkMTgxODVkNTZjMzc5MWIyZDdiZWQgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0
LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVy
VGVzdC5jcHAKQEAgLTI2LDExICsyNiw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiU2hhcmVkQnVmZmVyVGVzdC5oIgogCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+
CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5o
PgogCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkg
ewogCiB2b2lkIFNoYXJlZEJ1ZmZlclRlc3Q6OlNldFVwKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9EYXRhYmFzZVRyYWNrZXJUZXN0Lm1tIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL0RhdGFiYXNlVHJhY2tlclRl
c3QubW0KaW5kZXggNmEzYzcwMjgwYTRlZGUwMDkxMDJlZTk5NzZiMzY3YzI2YWI3ZmVlNy4uMjIx
NzE1NmY2ZTU2OTE1YTc1ZDQ0ODg0ZWFkNTE3MTlhN2M1MjkxMSAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL0RhdGFiYXNlVHJhY2tlclRlc3QubW0K
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL0RhdGFiYXNlVHJh
Y2tlclRlc3QubW0KQEAgLTI2LDExICsyNiwxMSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAj
aW5jbHVkZSA8V2ViQ29yZS9EYXRhYmFzZVRyYWNrZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0Zp
bGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL09yaWdpbkxvY2suaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1NRTGl0ZURhdGFiYXNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVTdGF0ZW1l
bnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgorI2luY2x1ZGUg
PHd0Zi9GaWxlU3lzdGVtLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY3VybC9Db29raWVzLmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jdXJsL0Nvb2tpZXMuY3BwCmluZGV4
IDFiOGQ3ZmMzY2RlNTAyOTllMzBhZDZjNmQ4Y2ExNjI3ZjIzOTBjMWYuLmI0MGIwZDVhMGE1ZTVm
YjVmNDkxOWEzZGEyYzJmZWQ2ZmNiYzFjNGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9jdXJsL0Nvb2tpZXMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9jdXJsL0Nvb2tpZXMuY3BwCkBAIC0yOSw4ICsyOSw4IEBACiAKICNp
bmNsdWRlIDxXZWJDb3JlL0Nvb2tpZUphckRCLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db29raWVV
dGlsLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8bWVtb3J5
PgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rv
d25sb2FkLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9h
ZC5tbQppbmRleCA2MGNjOTNiMzQwZGQ2ODA5NDFjNDFhMmE1YWEwYmE5MjNiNWFlYzY0Li42ODFi
MDJjYTljODdkYWVjMzcyNjIyNDYxN2QxYzU5MjA4OGQ3YTZjIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0KQEAgLTMzLDcgKzMzLDYg
QEAKICNpbXBvcnQgIlRlc3QuaCIKICNpbXBvcnQgIlRlc3RQcm90b2NvbC5oIgogI2ltcG9ydCAi
VGVzdFdLV2ViVmlldy5oIgotI2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0
IDxXZWJLaXQvX1dLRG93bmxvYWQuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tEb3dubG9hZERlbGVn
YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlLmg+CkBA
IC00MSw2ICs0MCw3IEBACiAjaW1wb3J0IDxXZWJLaXQvV0tVSURlbGVnYXRlUHJpdmF0ZS5oPgog
I2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlldy5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24uaD4KKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDx3dGYv
TWFpblRocmVhZC5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CkBAIC05NCwxMCArOTQsMTAgQEAgSUdOT1JFX1dBUk5JTkdTX0VORAog
ICAgIEVYUEVDVF9UUlVFKGhhc1JlY2VpdmVkUmVzcG9uc2UpOwogICAgIEVYUEVDVF9FUShfZG93
bmxvYWQsIGRvd25sb2FkKTsKIAotICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OlBsYXRmb3JtRmls
ZUhhbmRsZSBmaWxlSGFuZGxlOwotICAgIF9kZXN0aW5hdGlvblBhdGggPSBXZWJDb3JlOjpGaWxl
U3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiVGVzdFdlYktpdEFQSSIsIGZpbGVIYW5kbGUpOwot
ICAgIEVYUEVDVF9UUlVFKGZpbGVIYW5kbGUgIT0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6aW52YWxp
ZFBsYXRmb3JtRmlsZUhhbmRsZSk7Ci0gICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6Y2xvc2VGaWxl
KGZpbGVIYW5kbGUpOworICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlSGFu
ZGxlOworICAgIF9kZXN0aW5hdGlvblBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5Rmls
ZSgiVGVzdFdlYktpdEFQSSIsIGZpbGVIYW5kbGUpOworICAgIEVYUEVDVF9UUlVFKGZpbGVIYW5k
bGUgIT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7CisgICAgRmlsZVN5
c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOwogCiAgICAgKmFsbG93T3ZlcndyaXRlID0gWUVT
OwogICAgIHJldHVybiBfZGVzdGluYXRpb25QYXRoOwpAQCAtMTA5LDcgKzEwOSw3IEBAIC0gKHZv
aWQpX2Rvd25sb2FkRGlkRmluaXNoOihfV0tEb3dubG9hZCAqKWRvd25sb2FkCiAgICAgRVhQRUNU
X0VRKGV4cGVjdGVkVXNlckluaXRpYXRlZFN0YXRlLCBkb3dubG9hZC53YXNVc2VySW5pdGlhdGVk
KTsKICAgICBFWFBFQ1RfVFJVRShfZXhwZWN0ZWRDb250ZW50TGVuZ3RoID09IE5TVVJMUmVzcG9u
c2VVbmtub3duTGVuZ3RoIHx8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihfZXhwZWN0ZWRDb250ZW50
TGVuZ3RoKSA9PSBfcmVjZWl2ZWRDb250ZW50TGVuZ3RoKTsKICAgICBFWFBFQ1RfVFJVRShbW05T
RmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNvbnRlbnRzRXF1YWxBdFBhdGg6X2Rlc3RpbmF0
aW9uUGF0aCBhbmRQYXRoOltzb3VyY2VVUkwgcGF0aF1dKTsKLSAgICBXZWJDb3JlOjpGaWxlU3lz
dGVtOjpkZWxldGVGaWxlKF9kZXN0aW5hdGlvblBhdGgpOworICAgIEZpbGVTeXN0ZW06OmRlbGV0
ZUZpbGUoX2Rlc3RpbmF0aW9uUGF0aCk7CiAgICAgaXNEb25lID0gdHJ1ZTsKIH0KIApAQCAtMzk3
LDEwICszOTcsMTAgQEAgSUdOT1JFX1dBUk5JTkdTX0VORAogICAgIEVYUEVDVF9UUlVFKGhhc1Jl
Y2VpdmVkUmVzcG9uc2UpOwogICAgIEVYUEVDVF9FUShfZG93bmxvYWQsIGRvd25sb2FkKTsKIAot
ICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlSGFuZGxlOwot
ICAgIF9kZXN0aW5hdGlvblBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5
RmlsZSgiVGVzdFdlYktpdEFQSSIsIGZpbGVIYW5kbGUpOwotICAgIEVYUEVDVF9UUlVFKGZpbGVI
YW5kbGUgIT0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7
Ci0gICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOworICAgIEZp
bGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlSGFuZGxlOworICAgIF9kZXN0aW5hdGlv
blBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiVGVzdFdlYktpdEFQSSIsIGZp
bGVIYW5kbGUpOworICAgIEVYUEVDVF9UUlVFKGZpbGVIYW5kbGUgIT0gRmlsZVN5c3RlbTo6aW52
YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVI
YW5kbGUpOwogCiAgICAgKmFsbG93T3ZlcndyaXRlID0gWUVTOwogICAgIHJldHVybiBfZGVzdGlu
YXRpb25QYXRoOwpAQCAtNDE0LDcgKzQxNCw3IEBAIC0gKHZvaWQpX2Rvd25sb2FkRGlkRmluaXNo
OihfV0tEb3dubG9hZCAqKWRvd25sb2FkCiAgICAgTlNTdHJpbmcqIGV4cGVjdGVkQ29udGVudCA9
IEAie1wieFwiOjQyLFwic1wiOlwiaGVsbG8sIHdvcmxkXCJ9IjsKICAgICBOU0RhdGEqIGV4cGVj
dGVkRGF0YSA9IFtleHBlY3RlZENvbnRlbnQgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5n
RW5jb2RpbmddOwogICAgIEVYUEVDVF9UUlVFKFtbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFn
ZXJdIGNvbnRlbnRzQXRQYXRoOl9kZXN0aW5hdGlvblBhdGhdIGlzRXF1YWxUb0RhdGE6ZXhwZWN0
ZWREYXRhXSk7Ci0gICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShfZGVzdGluYXRp
b25QYXRoKTsKKyAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKF9kZXN0aW5hdGlvblBhdGgpOwog
ICAgIGlzRG9uZSA9IHRydWU7CiB9CiAKQEAgLTQ1NywxMCArNDU3LDEwIEBAIElHTk9SRV9XQVJO
SU5HU19CRUdJTigiZGVwcmVjYXRlZC1pbXBsZW1lbnRhdGlvbnMiKQogLSAoTlNTdHJpbmcgKilf
ZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3Vn
Z2VzdGVkRmlsZW5hbWU6KE5TU3RyaW5nICopZmlsZW5hbWUgYWxsb3dPdmVyd3JpdGU6KEJPT0wg
KilhbGxvd092ZXJ3cml0ZQogSUdOT1JFX1dBUk5JTkdTX0VORAogewotICAgIFdlYkNvcmU6OkZp
bGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlSGFuZGxlOwotICAgIF9kZXN0aW5hdGlv
blBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiVGVzdFdlYktp
dEFQSSIsIGZpbGVIYW5kbGUpOwotICAgIEVYUEVDVF9UUlVFKGZpbGVIYW5kbGUgIT0gV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7Ci0gICAgV2ViQ29yZTo6
RmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOworICAgIEZpbGVTeXN0ZW06OlBsYXRm
b3JtRmlsZUhhbmRsZSBmaWxlSGFuZGxlOworICAgIF9kZXN0aW5hdGlvblBhdGggPSBGaWxlU3lz
dGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiVGVzdFdlYktpdEFQSSIsIGZpbGVIYW5kbGUpOworICAg
IEVYUEVDVF9UUlVFKGZpbGVIYW5kbGUgIT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmls
ZUhhbmRsZSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOwogICAgICph
bGxvd092ZXJ3cml0ZSA9IFlFUzsKICAgICByZXR1cm4gX2Rlc3RpbmF0aW9uUGF0aDsKIH0KQEAg
LTQ4Nyw3ICs0ODcsNyBAQCAtICh2b2lkKV9kb3dubG9hZERpZEZpbmlzaDooX1dLRG93bmxvYWQg
Kilkb3dubG9hZAogICAgIGlmIChyZWRpcmVjdENoYWluLmNvdW50ID4gMikKICAgICAgICAgRVhQ
RUNUX1NUUkVRKCJodHRwOi8vcGFzcy8iLCBbcmVkaXJlY3RDaGFpblsyXS5hYnNvbHV0ZVN0cmlu
ZyBVVEY4U3RyaW5nXSk7CiAKLSAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVGaWxlKF9k
ZXN0aW5hdGlvblBhdGgpOworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoX2Rlc3RpbmF0aW9u
UGF0aCk7CiAgICAgaXNEb25lID0gdHJ1ZTsKIH0KIApAQCAtNjMyLDE3ICs2MzIsMTcgQEAgLSAo
dm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGVjaWRlRGVzdGluYXRpb25X
aXRoU3VnZ2VzdGVkRmlsZW5hbWUKIHsKICAgICBFWFBFQ1RfVFJVRShbZmlsZW5hbWUgaGFzU3Vm
Zml4OkAiLnVzZHoiXSk7CiAKLSAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVI
YW5kbGUgZmlsZUhhbmRsZTsKLSAgICBfZGVzdGluYXRpb25QYXRoID0gV2ViQ29yZTo6RmlsZVN5
c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoZmlsZW5hbWUsIGZpbGVIYW5kbGUpOwotICAgIEVYUEVD
VF9UUlVFKGZpbGVIYW5kbGUgIT0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3Jt
RmlsZUhhbmRsZSk7Ci0gICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5k
bGUpOworICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlSGFuZGxlOworICAg
IF9kZXN0aW5hdGlvblBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZShmaWxlbmFt
ZSwgZmlsZUhhbmRsZSk7CisgICAgRVhQRUNUX1RSVUUoZmlsZUhhbmRsZSAhPSBGaWxlU3lzdGVt
OjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKTsKKyAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUo
ZmlsZUhhbmRsZSk7CiAKICAgICBjb21wbGV0aW9uSGFuZGxlcihZRVMsIF9kZXN0aW5hdGlvblBh
dGgpOwogfQogCiAtICh2b2lkKV9kb3dubG9hZERpZEZpbmlzaDooX1dLRG93bmxvYWQgKilkb3du
bG9hZAogewotICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoX2Rlc3RpbmF0aW9u
UGF0aCk7CisgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShfZGVzdGluYXRpb25QYXRoKTsKICAg
ICBpc0RvbmUgPSB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0Rvd25sb2FkUHJvZ3Jlc3MubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkUHJvZ3Jlc3MubW0KaW5kZXggZjU2MGRmM2Y0YzQy
ZTI0ZTY1YjNiZjYyODcxYjVmYWRjMTlhNWY2NS4uM2ViMDNmMDRhMWRkOGE4ZTE3Njc4M2Q1ZWZm
ZDQ4MzQ3YTkwZGEwMCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9Eb3dubG9hZFByb2dyZXNzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvRG93bmxvYWRQcm9ncmVzcy5tbQpAQCAtMjgsNyArMjgsNiBAQAogI2lt
cG9ydCAiVGVzdFdLV2ViVmlldy5oIgogI2ltcG9ydCAiVXRpbGl0aWVzLmgiCiAjaW1wb3J0IDxG
b3VuZGF0aW9uL05TUHJvZ3Jlc3MuaD4KLSNpbXBvcnQgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgog
I2ltcG9ydCA8V2ViS2l0L1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5oPgogI2ltcG9ydCA8
V2ViS2l0L1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dL
UHJvY2Vzc1Bvb2xQcml2YXRlLmg+CkBAIC0zNyw2ICszNiw3IEBACiAjaW1wb3J0IDxXZWJLaXQv
X1dLRG93bmxvYWREZWxlZ2F0ZS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU1Byb2dyZXNz
U1BJLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVt
Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIu
aD4KIApAQCAtMzgwLDEwICszODAsMTAgQEAgLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2Fk
ICopZG93bmxvYWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUKIHsKICAg
ICBFWFBFQ1RfRVEoZG93bmxvYWQsIG1fZG93bmxvYWQuZ2V0KCkpOwogCi0gICAgV2ViQ29yZTo6
RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGVIYW5kbGU7Ci0gICAgUmV0YWluUHRy
PE5TU3RyaW5nPiBwYXRoID0gKE5TU3RyaW5nICopV2ViQ29yZTo6RmlsZVN5c3RlbTo6b3BlblRl
bXBvcmFyeUZpbGUoIlRlc3RXZWJLaXRBUEkiLCBmaWxlSGFuZGxlKTsKLSAgICBFWFBFQ1RfVFJV
RShmaWxlSGFuZGxlICE9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVI
YW5kbGUpOwotICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsK
KyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRsZTsKKyAgICBSZXRh
aW5QdHI8TlNTdHJpbmc+IHBhdGggPSAoTlNTdHJpbmcgKilGaWxlU3lzdGVtOjpvcGVuVGVtcG9y
YXJ5RmlsZSgiVGVzdFdlYktpdEFQSSIsIGZpbGVIYW5kbGUpOworICAgIEVYUEVDVF9UUlVFKGZp
bGVIYW5kbGUgIT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7CisgICAg
RmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOwogCiAgICAgY29tcGxldGlvbkhhbmRs
ZXIoWUVTLCBwYXRoLmdldCgpKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
d2luL1BsYXRmb3JtVXRpbGl0aWVzV2luLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL1Bs
YXRmb3JtVXRpbGl0aWVzV2luLmNwcAppbmRleCAwNTZiZmY3NzgyOTUyOGIxMjkwZjEyZTM5YWIy
MzhiMGY2ODY4Yjg2Li4zNWYyMmUyYThiMWJmZTUwYTQ3MDU5MDkxODM0NzIzNjc5YTNkN2ZkIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL3dpbi9QbGF0Zm9ybVV0aWxpdGllc1dpbi5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS93aW4vUGxhdGZvcm1VdGlsaXRpZXNXaW4uY3Bw
CkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKIAogI2lu
Y2x1ZGUgPFNobHdhcGkuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KKyNpbmNs
dWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaD4KIApAQCAtNDAsMTkgKzQwLDE5IEBAIHN0
YXRpYyBTdHJpbmcgbW9kdWxlRGlyZWN0b3J5KCkKICAgICB3Y2hhcl90IGZpbGVuYW1lW2J1ZmZl
ckxlbmd0aF07CiAgICAgYXV0byBsZW4gPSBHZXRNb2R1bGVGaWxlTmFtZShudWxscHRyLCBmaWxl
bmFtZSwgYnVmZmVyTGVuZ3RoKTsKICAgICBBU1NFUlQobGVuID4gMCk7Ci0gICAgcmV0dXJuIFdl
YkNvcmU6OkZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUod2NoYXJUb1N0cmluZyhmaWxlbmFtZSwg
bGVuKSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUod2NoYXJUb1N0cmlu
ZyhmaWxlbmFtZSwgbGVuKSk7CiB9CiAKIFdLU3RyaW5nUmVmIGNyZWF0ZUluamVjdGVkQnVuZGxl
UGF0aCgpCiB7Ci0gICAgYXV0byBwYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KG1vZHVsZURpcmVjdG9yeSgpLCBTdHJpbmcoTCJUZXN0V2ViS2l0QVBJ
SW5qZWN0ZWRCdW5kbGUuZGxsIikpOworICAgIGF1dG8gcGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChtb2R1bGVEaXJlY3RvcnkoKSwgU3RyaW5nKEwiVGVzdFdlYktp
dEFQSUluamVjdGVkQnVuZGxlLmRsbCIpKTsKICAgICByZXR1cm4gV0tTdHJpbmdDcmVhdGVXaXRo
VVRGOENTdHJpbmcocGF0aC51dGY4KCkuZGF0YSgpKTsKIH0KIAogV0tVUkxSZWYgY3JlYXRlVVJM
Rm9yUmVzb3VyY2UoY29uc3QgY2hhciogcmVzb3VyY2UsIGNvbnN0IGNoYXIqIGV4dGVuc2lvbikK
IHsKICAgICBTdHJpbmcgZmlsZW5hbWUgPSBTdHJpbmc6OmZvcm1hdCgiLi5cXC4uXFwuLlxcVG9v
bHNcXFRlc3RXZWJLaXRBUElcXFRlc3RzXFxXZWJLaXRcXCVzLiVzIiwgcmVzb3VyY2UsIGV4dGVu
c2lvbik7Ci0gICAgYXV0byB1cmwgPSBVUkw6OmZpbGVVUkxXaXRoRmlsZVN5c3RlbVBhdGgoV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1vZHVsZURpcmVjdG9y
eSgpLCBmaWxlbmFtZSkpOworICAgIGF1dG8gdXJsID0gVVJMOjpmaWxlVVJMV2l0aEZpbGVTeXN0
ZW1QYXRoKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtb2R1bGVEaXJlY3Rv
cnkoKSwgZmlsZW5hbWUpKTsKICAgICByZXR1cm4gV0tVUkxDcmVhdGVXaXRoVVRGOENTdHJpbmco
dXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>