<?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>103770</bug_id>
          
          <creation_ts>2012-11-30 13:26:59 -0800</creation_ts>
          <short_desc>[Win] support in-band text tracks</short_desc>
          <delta_ts>2013-07-18 13:30:00 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>118801</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>780361</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-11-30 13:26:59 -0800</bug_when>
    <thetext>In-band caption track support requires changes in the media engine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>909067</commentid>
    <comment_count>1</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-07-16 16:38:58 -0700</bug_when>
    <thetext>&lt;rdar://problem/13011371&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>909078</commentid>
    <comment_count>2</comment_count>
      <attachid>206829</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-07-16 17:23:06 -0700</bug_when>
    <thetext>Created attachment 206829
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>909079</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-07-16 17:25:01 -0700</bug_when>
    <thetext>Attachment 206829 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters&apos;, u&apos;Source/WebCore/config.h&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/InbandTextTrackPrivateAVF.cpp&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/InbandTextTrackPrivateAVF.h&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/cf/AVFoundationCFSoftLinking.h&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/cf/CoreMediaSoftLinking.h&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/cf/InbandTextTrackPrivateAVCF.cpp&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/cf/InbandTextTrackPrivateAVCF.h&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/cf/InbandTextTrackPrivateLegacyAVCF.cpp&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/cf/InbandTextTrackPrivateLegacyAVCF.h&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.h&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/WinLauncher/WinLauncher.cpp&apos;, u&apos;Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherCF.props&apos;, u&apos;Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherCFLite.props&apos;, u&apos;Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherLib.vcxproj&apos;]&quot; exit_code: 1
Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:56:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebCore/platform/graphics/avfoundation/cf/InbandTextTrackPrivateLegacyAVCF.cpp:41:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebCore/platform/graphics/avfoundation/cf/InbandTextTrackPrivateAVCF.cpp:43:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebCore/platform/graphics/avfoundation/cf/InbandTextTrackPrivateAVCF.h:33:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 4 in 20 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>909084</commentid>
    <comment_count>4</comment_count>
      <attachid>206830</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-07-16 17:41:41 -0700</bug_when>
    <thetext>Created attachment 206830
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>909085</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-07-16 17:43:58 -0700</bug_when>
    <thetext>Attachment 206830 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters&apos;, u&apos;Source/WebCore/config.h&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/InbandTextTrackPrivateAVF.cpp&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/InbandTextTrackPrivateAVF.h&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/cf/AVFoundationCFSoftLinking.h&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/cf/CoreMediaSoftLinking.h&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/cf/InbandTextTrackPrivateAVCF.cpp&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/cf/InbandTextTrackPrivateAVCF.h&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/cf/InbandTextTrackPrivateLegacyAVCF.cpp&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/cf/InbandTextTrackPrivateLegacyAVCF.h&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.h&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/WinLauncher/WinLauncher.cpp&apos;, u&apos;Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherCF.props&apos;, u&apos;Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherCFLite.props&apos;, u&apos;Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherLib.vcxproj&apos;]&quot; exit_code: 1
Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:56:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebCore/platform/graphics/avfoundation/cf/InbandTextTrackPrivateLegacyAVCF.cpp:41:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebCore/platform/graphics/avfoundation/cf/InbandTextTrackPrivateAVCF.cpp:43:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebCore/platform/graphics/avfoundation/cf/InbandTextTrackPrivateAVCF.h:33:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 4 in 20 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>909331</commentid>
    <comment_count>6</comment_count>
      <attachid>206830</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-07-17 08:04:44 -0700</bug_when>
    <thetext>Comment on attachment 206830
Patch

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

&gt; Source/WebCore/ChangeLog:15
&gt; +        * platform/graphics/avfoundation/InbandTextTrackPrivateAVF.cpp: Update
&gt; +        to support Windows platform.

What happened to the list of methods that were changed (and associated comments)?

&gt; Source/WebCore/ChangeLog:30
&gt; +        * platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:
&gt; +        Update to support LegibleOutput features for the Windows port.

Ditto.

&gt; Source/WebCore/platform/graphics/avfoundation/InbandTextTrackPrivateAVF.cpp:88
&gt; +SOFT_LINK_LIBRARY(CoreMedia)
&gt; +
&gt; +SOFT_LINK_VARIABLE_DLL_IMPORT_OPTIONAL(CoreMedia, kCMTextMarkupAttribute_Alignment, CFStringRef)
&gt; +SOFT_LINK_VARIABLE_DLL_IMPORT_OPTIONAL(CoreMedia, kCMTextMarkupAlignmentType_Start, CFStringRef)
&gt; +SOFT_LINK_VARIABLE_DLL_IMPORT_OPTIONAL(CoreMedia, kCMTextMarkupAlignmentType_Middle, CFStringRef)

Instead of having duplicates of every import, could we create new macros to be used in this file? Something like:

#if !PLATFORM(WIN)
    #define SOFT_LINK_AVF_POINTER(_lib, _name, _type) SOFT_LINK_POINTER_OPTIONAL(_lib, _name, _type)
#else
    #define SOFT_LINK_AVF_POINTER(_lib, _name, _type) SOFT_LINK_VARIABLE_DLL_IMPORT_OPTIONAL(_lib, _name, _type)
#endif

SOFT_LINK_AVF_POINTER(CoreMedia, kCMTextMarkupAttribute_Alignment, CFStringRef)

etc?

&gt; Source/WebCore/platform/graphics/avfoundation/cf/InbandTextTrackPrivateAVCF.cpp:148
&gt; +    CFIndex titlesCount = CFArrayGetCount(titles.get());
&gt; +    if (titlesCount) {
&gt; +        // If possible, return a title in one of the user&apos;s preferred languages.

I see that you are just following the pattern (that I created) in InbandTextTrackPrivateAVFObjC::label(), but you can use an early return here.

&gt; Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:208
&gt; +        // AVCFAssetPropertyPreferredVolume,    // FIXME: Should be exported by AVCF. We can use AVCFAssetTrackPropertyPreferredVolume for now.

This can be removed because neither is currently used.

&gt; Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:535
&gt; +        return max(narrowPrecisionToFloat(CMTimeGetSeconds(itemTime)), 0.0f);

Nit: is the &quot;f&quot; necessary, does &quot;0&quot; cause a compiler warning/error?

&gt; Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:797
&gt; +    CFArrayRef foo = AVCFURLAssetCopyAudiovisualMIMETypes();
&gt; +    ASSERT(CFArrayGetTypeID() == CFGetTypeID(foo)); 

Won&apos;t this cause an unused variable error in a release build? If it is necessary, I&apos;ll bet you can come up with a more descriptive name than &quot;foo&quot; ;-)

&gt; Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:866
&gt; -        setHasAudio(CFArrayGetCount(captionTracks.get()));
&gt; +        hasCaptions = CFArrayGetCount(captionTracks.get());

Oops :-O

&gt; Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:1017
&gt; +    // FIXME: Lift to parent class
&gt; +    if (removedTextTracks.size()) {

Please add a bug number for this FIXME.

&gt; Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:1549
&gt; +    AVFWrapper* self = avfWrapperForCallbackContext(context);
&gt; +    if (!self) {
&gt; +        LOG(Media, &quot;AVFWrapper::legibleOutputCallback invoked for deleted AVFWrapper %d&quot;, reinterpret_cast&lt;uintptr_t&gt;(context));
&gt; +        return;
&gt; +    }
&gt; +

It might be worth adding something like &quot;ASSERT(legibleOutput ==  self-&gt;legibleOutput())&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>909379</commentid>
    <comment_count>7</comment_count>
      <attachid>206830</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-07-17 10:31:52 -0700</bug_when>
    <thetext>Comment on attachment 206830
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/avfoundation/cf/InbandTextTrackPrivateAVCF.cpp:148
&gt;&gt; +        // If possible, return a title in one of the user&apos;s preferred languages.
&gt; 
&gt; I see that you are just following the pattern (that I created) in InbandTextTrackPrivateAVFObjC::label(), but you can use an early return here.

Done!

&gt;&gt; Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:208
&gt;&gt; +        // AVCFAssetPropertyPreferredVolume,    // FIXME: Should be exported by AVCF. We can use AVCFAssetTrackPropertyPreferredVolume for now.
&gt; 
&gt; This can be removed because neither is currently used.

Done!

&gt;&gt; Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:535
&gt;&gt; +        return max(narrowPrecisionToFloat(CMTimeGetSeconds(itemTime)), 0.0f);
&gt; 
&gt; Nit: is the &quot;f&quot; necessary, does &quot;0&quot; cause a compiler warning/error?

Yes -- the compiler can&apos;t (won&apos;t?) assume a 0.0 (or 0) argument is a float to match the return from narrowPrecisionToFloat.  I could write this as max&lt;float&gt;, or just use the 0.0f notation.

&gt;&gt; Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:797
&gt;&gt; +    ASSERT(CFArrayGetTypeID() == CFGetTypeID(foo)); 
&gt; 
&gt; Won&apos;t this cause an unused variable error in a release build? If it is necessary, I&apos;ll bet you can come up with a more descriptive name than &quot;foo&quot; ;-)

Doh!  Stupid debugging code.  It was worse than that -- it was an unreleased variable each time this was called.

&gt;&gt; Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:1549
&gt;&gt; +
&gt; 
&gt; It might be worth adding something like &quot;ASSERT(legibleOutput ==  self-&gt;legibleOutput())&quot;

Good idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>909418</commentid>
    <comment_count>8</comment_count>
      <attachid>206907</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-07-17 12:33:12 -0700</bug_when>
    <thetext>Created attachment 206907
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>909419</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-07-17 12:35:29 -0700</bug_when>
    <thetext>Attachment 206907 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters&apos;, u&apos;Source/WebCore/config.h&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/InbandTextTrackPrivateAVF.cpp&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/InbandTextTrackPrivateAVF.h&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/cf/AVFoundationCFSoftLinking.h&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/cf/CoreMediaSoftLinking.h&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/cf/InbandTextTrackPrivateAVCF.cpp&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/cf/InbandTextTrackPrivateAVCF.h&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/cf/InbandTextTrackPrivateLegacyAVCF.cpp&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/cf/InbandTextTrackPrivateLegacyAVCF.h&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.h&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/WinLauncher/WinLauncher.cpp&apos;, u&apos;Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherCF.props&apos;, u&apos;Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherCFLite.props&apos;, u&apos;Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherLib.vcxproj&apos;]&quot; exit_code: 1
Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:55:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebCore/platform/graphics/avfoundation/cf/InbandTextTrackPrivateLegacyAVCF.cpp:41:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebCore/platform/graphics/avfoundation/cf/InbandTextTrackPrivateAVCF.cpp:43:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebCore/platform/graphics/avfoundation/cf/InbandTextTrackPrivateAVCF.h:33:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 4 in 20 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>909448</commentid>
    <comment_count>10</comment_count>
      <attachid>206907</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-07-17 14:14:19 -0700</bug_when>
    <thetext>Comment on attachment 206907
Patch

r=me, although I would still prefer to see the SOFT_LINK macros combined if possible, either in this patch or in a follow up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>909467</commentid>
    <comment_count>11</comment_count>
      <attachid>206918</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-07-17 14:55:09 -0700</bug_when>
    <thetext>Created attachment 206918
Patch with SoftLink changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>909471</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-07-17 14:58:45 -0700</bug_when>
    <thetext>Attachment 206918 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters&apos;, u&apos;Source/WebCore/config.h&apos;, u&apos;Source/WebCore/page/CaptionUserPreferencesMediaAF.cpp&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/InbandTextTrackPrivateAVF.cpp&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/InbandTextTrackPrivateAVF.h&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/cf/AVFoundationCFSoftLinking.h&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/cf/CoreMediaSoftLinking.h&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/cf/InbandTextTrackPrivateAVCF.cpp&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/cf/InbandTextTrackPrivateAVCF.h&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/cf/InbandTextTrackPrivateLegacyAVCF.cpp&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/cf/InbandTextTrackPrivateLegacyAVCF.h&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.h&apos;, u&apos;Source/WebCore/platform/win/SoftLinking.h&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/WinLauncher/WinLauncher.cpp&apos;, u&apos;Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherCF.props&apos;, u&apos;Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherCFLite.props&apos;, u&apos;Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherLib.vcxproj&apos;]&quot; exit_code: 1
Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:55:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebCore/platform/graphics/avfoundation/cf/InbandTextTrackPrivateLegacyAVCF.cpp:41:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebCore/platform/graphics/avfoundation/cf/InbandTextTrackPrivateAVCF.cpp:43:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebCore/platform/graphics/avfoundation/cf/InbandTextTrackPrivateAVCF.h:33:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 4 in 22 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>909788</commentid>
    <comment_count>13</comment_count>
      <attachid>206918</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-07-18 10:30:19 -0700</bug_when>
    <thetext>Comment on attachment 206918
Patch with SoftLink changes

r=me, but please fix the alphabetical sorting problems before committing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>909836</commentid>
    <comment_count>14</comment_count>
      <attachid>207011</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-07-18 12:07:06 -0700</bug_when>
    <thetext>Created attachment 207011
Updated to resolve alphabetical ordering</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>909838</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-07-18 12:08:53 -0700</bug_when>
    <thetext>Attachment 207011 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters&apos;, u&apos;Source/WebCore/config.h&apos;, u&apos;Source/WebCore/page/CaptionUserPreferencesMediaAF.cpp&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/InbandTextTrackPrivateAVF.cpp&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/InbandTextTrackPrivateAVF.h&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/cf/AVFoundationCFSoftLinking.h&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/cf/CoreMediaSoftLinking.h&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/cf/InbandTextTrackPrivateAVCF.cpp&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/cf/InbandTextTrackPrivateAVCF.h&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/cf/InbandTextTrackPrivateLegacyAVCF.cpp&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/cf/InbandTextTrackPrivateLegacyAVCF.h&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.h&apos;, u&apos;Source/WebCore/platform/win/SoftLinking.h&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/WinLauncher/WinLauncher.cpp&apos;, u&apos;Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherCF.props&apos;, u&apos;Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherCFLite.props&apos;, u&apos;Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherLib.vcxproj&apos;]&quot; exit_code: 1
Source/WebCore/platform/graphics/avfoundation/cf/InbandTextTrackPrivateLegacyAVCF.cpp:41:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebCore/platform/graphics/avfoundation/cf/InbandTextTrackPrivateAVCF.cpp:43:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 2 in 22 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>909839</commentid>
    <comment_count>16</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-07-18 12:14:23 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; Attachment 207011 [details] did not pass style-queue:
&gt; 
&gt; Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, &gt; Source/WebCore/platform/graphics/avfoundation/cf/InbandTextTrackPrivateLegacyAVCF.cpp:41:  Alphabetical sorting problem.  [build/include_order] [4]
&gt; Source/WebCore/platform/graphics/avfoundation/cf/InbandTextTrackPrivateAVCF.cpp:43:  Alphabetical sorting problem.  [build/include_order] [4]
&gt; Total errors found: 2 in 22 files

These includes cannot be rearranged. The soft linking headers need to see the original AVFoundationCF headers to work properly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>909850</commentid>
    <comment_count>17</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-07-18 13:30:00 -0700</bug_when>
    <thetext>Committed revision 152861.

http://trac.webkit.org/changeset/152861</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>206829</attachid>
            <date>2013-07-16 17:23:06 -0700</date>
            <delta_ts>2013-07-16 17:41:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103770-20130716172307.patch</filename>
            <type>text/plain</type>
            <size>96939</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1Mjc0NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBACisyMDEzLTA3LTE2ICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXaW5kb3dzXSBTdXBwb3J0
IGluLWJhbmQgdGV4dCB0cmFja3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDM3NzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBFeGlzdGluZyBtZWRpYSB0ZXN0cyBjb3ZlciB0aGVzZSBmZWF0dXJlcy4K
KworICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2o6IEFkZCBuZXcgZmls
ZXMgZm9yIFdpbmRvd3MgY2FwdGlvbnMKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29y
ZS52Y3hwcm9qLmZpbHRlcnM6IGRpdHRvLgorICAgICAgICAqIGNvbmZpZy5oOiBNYWtlIHN1cmUg
cHJvcGVyIGJ1aWQgZmxhZ3MgYXJlIHR1cm5lZCBvbiB3aGVuIGJ1aWxkaW5nCisgICAgICAgIHdp
dGggQVZDRl9MRUdJQkxFX09VVFBVVC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHA6IFVwZGF0ZQorICAgICAgICB0
byBzdXBwb3J0IFdpbmRvd3MgcGxhdGZvcm0uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaDogRGl0dG8uCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbi5jcHA6CisgICAgICAgIFJlbW92ZSBidWlsZCBndWFyZHMgcHJldmVudGluZyBXaW5k
b3dzIGZyb20gdXNpbmcgTGVnaWJsZU91dHB1dAorICAgICAgICBmZWF0dXJlcy4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uLmg6CisgICAgICAgIERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9jZi9BVkZvdW5kYXRpb25DRlNvZnRMaW5raW5nLmg6CisgICAgICAgIEFkZCBu
ZXcgTGVnaWJsZU91dHB1dCBzdXBwb3J0IGZ1bmN0aW9ucy4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vY2YvQ29yZU1lZGlhU29mdExpbmtpbmcuaDogRGl0dG8uCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0luYmFuZFRleHRUcmFj
a1ByaXZhdGVBVkNGLmNwcDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL2NmL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGLmg6IEFkZGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2
YXRlTGVnYWN5QVZDRi5jcHA6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZDRi5oOiBBZGRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwOgorICAgICAgICBVcGRhdGUgdG8gc3VwcG9ydCBMZWdp
YmxlT3V0cHV0IGZlYXR1cmVzIGZvciB0aGUgV2luZG93cyBwb3J0LgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25DRi5oOgorICAgICAgICBEaXR0by4KKwogMjAxMy0wNy0xNiAgQW5kcmVhcyBLbGluZyAgPGFr
bGluZ0BhcHBsZS5jb20+CiAKICAgICAgICAgQXRvbWljaXplIEhUTUxBbmNob3JFbGVtZW50Lmhh
c2ggYmVmb3JlIHBhc3NpbmcgaXQgdG8gSlMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jb25maWcu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb25maWcuaAkocmV2aXNpb24gMTUyNzQ3
KQorKysgU291cmNlL1dlYkNvcmUvY29uZmlnLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0MCw4ICsx
NDAsMTAgQEAgdHlwZWRlZiBmbG9hdCBDR0Zsb2F0OwogI2RlZmluZSBXVEZfVVNFX0FWRk9VTkRB
VElPTiAxCiAKICNpZiBIQVZFKEFWQ0ZfTEVHSUJMRV9PVVRQVVQpCisjZGVmaW5lIFdURl9VU0Vf
QVZGT1VOREFUSU9OIDEKICNkZWZpbmUgSEFWRV9BVkZPVU5EQVRJT05fTUVESUFfU0VMRUNUSU9O
X0dST1VQIDEKICNkZWZpbmUgSEFWRV9BVkZPVU5EQVRJT05fTEVHSUJMRV9PVVRQVVRfU1VQUE9S
VCAxCisjZGVmaW5lIEhBVkVfTUVESUFfQUNDRVNTSUJJTElUWV9GUkFNRVdPUksgMQogI2VuZGlm
CiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUu
dmN4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2Vi
Q29yZS52Y3hwcm9qCShyZXZpc2lvbiAxNTI3NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00MzQ5LDYgKzQzNDks
OSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cRmlsZVN0cmVhbS5jcHAi
IC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxGaWxlU3lzdGVtLmNwcCIg
Lz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXEFOR0xFV2Vi
S2l0QnJpZGdlLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdy
YXBoaWNzXGF2Zm91bmRhdGlvblxjZlxJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRi5jcHAiIC8+
CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xhdmZvdW5kYXRp
b25cY2ZcSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0YuY3BwIiAvPgorICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcYXZmb3VuZGF0aW9uXEluYmFuZFRl
eHRUcmFja1ByaXZhdGVBVkYuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxh
dGZvcm1cZ3JhcGhpY3NcY2Fpcm9cR0xDb250ZXh0LmNwcCI+CiAgICAgICA8RXhjbHVkZWRGcm9t
QnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xX
aW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxk
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxX
aW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgpAQCAtMTE4NzQsNiArMTE4NzcsOSBAQAog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cRmxvYXRDb252ZXJzaW9uLmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xBTkdMRVdlYktp
dEJyaWRnZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhp
Y3NcQXVkaW9UcmFja1ByaXZhdGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBs
YXRmb3JtXGdyYXBoaWNzXGF2Zm91bmRhdGlvblxjZlxJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZD
Ri5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcYXZm
b3VuZGF0aW9uXGNmXEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGLmgiIC8+CisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xhdmZvdW5kYXRpb25cSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cGxhdGZvcm1cZ3JhcGhpY3NcY2Fpcm9cR0xDb250ZXh0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xjYWlyb1xHcmFwaGljc0NvbnRleHQzRFByaXZh
dGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGNn
XFN1YmltYWdlQ2FjaGVXaXRoVGltZXIuaCI+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCShyZXZpc2lvbiAx
NTI3NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9q
LmZpbHRlcnMJKHdvcmtpbmcgY29weSkKQEAgLTcwNjYsNiArNzA2NiwxNiBAQAogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcZWdsXEdMQ29udGV4dEVHTC5jcHAi
PgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxncmFwaGljc1xlZ2w8L0ZpbHRlcj4KICAgICA8L0Ns
Q29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGly
KVxvYmozMlwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU1NWR0dyYXBoaWNzRWxlbWVu
dC5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xh
dmZvdW5kYXRpb25cY2ZcSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0YuY3BwIj4KKyAgICAgIDxG
aWx0ZXI+cGxhdGZvcm1cZ3JhcGhpY3NcYXZmb3VuZGF0aW9uXGNmPC9GaWx0ZXI+CisgICAgPC9D
bENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xh
dmZvdW5kYXRpb25cY2ZcSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0YuY3BwIj4KKyAg
ICAgIDxGaWx0ZXI+cGxhdGZvcm1cZ3JhcGhpY3NcYXZmb3VuZGF0aW9uXGNmPC9GaWx0ZXI+Cisg
ICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFw
aGljc1xhdmZvdW5kYXRpb25cSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHAiPgorICAgICAg
PEZpbHRlcj5wbGF0Zm9ybVxncmFwaGljc1xhdmZvdW5kYXRpb248L0ZpbHRlcj4KKyAgICA8L0Ns
Q29tcGlsZT4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cQXN5bmNGaWxlV3JpdGVyLmgiPgpAQCAtMTQ4
MTYsNiArMTQ4MjYsMTUgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdy
YXBoaWNzXGVnbFxHTENvbnRleHRFR0wuaCI+CiAgICAgICA8RmlsdGVyPnBsYXRmb3JtXGdyYXBo
aWNzXGVnbDwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcYXZmb3VuZGF0aW9uXGNmXEluYmFuZFRleHRUcmFja1By
aXZhdGVBVkNGLmgiPgorICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxncmFwaGljc1xhdmZvdW5kYXRp
b25cY2Y8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGF2Zm91bmRhdGlvblxjZlxJbmJhbmRUZXh0VHJhY2tQcml2
YXRlTGVnYWN5QVZDRi5oIj4KKyAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cZ3JhcGhpY3NcYXZmb3Vu
ZGF0aW9uXGNmPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xhdmZvdW5kYXRpb25cSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUFWRi5oIj4KKyAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cZ3JhcGhpY3NcYXZmb3VuZGF0aW9u
PC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3Vw
PgogICAgIDxOb25lIEluY2x1ZGU9Ii4uXGNzc1xDU1NHcmFtbWFyLnkuaW4iPgpAQCAtMTU3NjMs
NCArMTU3ODIsNCBAQAogICAgICAgPEZpbHRlcj5yZW5kZXJpbmc8L0ZpbHRlcj4KICAgICA8L0N1
c3RvbUJ1aWxkU3RlcD4KICAgPC9JdGVtR3JvdXA+Ci08L1Byb2plY3Q+Cis8L1Byb2plY3Q+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9J
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcAkocmV2aXNpb24gMTUyNzQ3KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1By
aXZhdGVBVkYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNpbmNsdWRl
ICJjb25maWcuaCIKIAotI2lmIEVOQUJMRShWSURFTykgJiYgKChVU0UoQVZGT1VOREFUSU9OKSAm
JiAhUExBVEZPUk0oV0lOKSkgfHwgUExBVEZPUk0oSU9TKSkKKyNpZiBFTkFCTEUoVklERU8pICYm
IChVU0UoQVZGT1VOREFUSU9OKSB8fCBQTEFURk9STShJT1MpKQogCiAjaW5jbHVkZSAiSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUFWRi5oIgogCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMu
aD4KIAorI2lmICFQTEFURk9STShXSU4pCiBTT0ZUX0xJTktfRlJBTUVXT1JLX09QVElPTkFMKENv
cmVNZWRpYSkKIAogU09GVF9MSU5LX1BPSU5URVJfT1BUSU9OQUwoQ29yZU1lZGlhLCBrQ01UZXh0
TWFya3VwQXR0cmlidXRlX0FsaWdubWVudCwgQ0ZTdHJpbmdSZWYpCkBAIC03OSw2ICs4MCw0OSBA
QCBTT0ZUX0xJTktfUE9JTlRFUl9PUFRJT05BTChDb3JlTWVkaWEsIGtDCiAjZGVmaW5lIGtDTVRl
eHRNYXJrdXBBdHRyaWJ1dGVfRm9yZWdyb3VuZENvbG9yQVJHQiBnZXRrQ01UZXh0TWFya3VwQXR0
cmlidXRlX0ZvcmVncm91bmRDb2xvckFSR0IoKQogI2RlZmluZSBrQ01UZXh0TWFya3VwQXR0cmli
dXRlX0JhY2tncm91bmRDb2xvckFSR0IgZ2V0a0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9CYWNrZ3Jv
dW5kQ29sb3JBUkdCKCkKICNkZWZpbmUga0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9DaGFyYWN0ZXJC
YWNrZ3JvdW5kQ29sb3JBUkdCIGdldGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfQ2hhcmFjdGVyQmFj
a2dyb3VuZENvbG9yQVJHQigpCisjZWxzZQorU09GVF9MSU5LX0xJQlJBUlkoQ29yZU1lZGlhKQor
CitTT0ZUX0xJTktfVkFSSUFCTEVfRExMX0lNUE9SVF9PUFRJT05BTChDb3JlTWVkaWEsIGtDTVRl
eHRNYXJrdXBBdHRyaWJ1dGVfQWxpZ25tZW50LCBDRlN0cmluZ1JlZikKK1NPRlRfTElOS19WQVJJ
QUJMRV9ETExfSU1QT1JUX09QVElPTkFMKENvcmVNZWRpYSwga0NNVGV4dE1hcmt1cEFsaWdubWVu
dFR5cGVfU3RhcnQsIENGU3RyaW5nUmVmKQorU09GVF9MSU5LX1ZBUklBQkxFX0RMTF9JTVBPUlRf
T1BUSU9OQUwoQ29yZU1lZGlhLCBrQ01UZXh0TWFya3VwQWxpZ25tZW50VHlwZV9NaWRkbGUsIENG
U3RyaW5nUmVmKQorU09GVF9MSU5LX1ZBUklBQkxFX0RMTF9JTVBPUlRfT1BUSU9OQUwoQ29yZU1l
ZGlhLCBrQ01UZXh0TWFya3VwQWxpZ25tZW50VHlwZV9FbmQsIENGU3RyaW5nUmVmKQorU09GVF9M
SU5LX1ZBUklBQkxFX0RMTF9JTVBPUlRfT1BUSU9OQUwoQ29yZU1lZGlhLCBrQ01UZXh0TWFya3Vw
QXR0cmlidXRlX0JvbGRTdHlsZSwgQ0ZTdHJpbmdSZWYpCitTT0ZUX0xJTktfVkFSSUFCTEVfRExM
X0lNUE9SVF9PUFRJT05BTChDb3JlTWVkaWEsIGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfSXRhbGlj
U3R5bGUsIENGU3RyaW5nUmVmKQorU09GVF9MSU5LX1ZBUklBQkxFX0RMTF9JTVBPUlRfT1BUSU9O
QUwoQ29yZU1lZGlhLCBrQ01UZXh0TWFya3VwQXR0cmlidXRlX1VuZGVybGluZVN0eWxlLCBDRlN0
cmluZ1JlZikKK1NPRlRfTElOS19WQVJJQUJMRV9ETExfSU1QT1JUX09QVElPTkFMKENvcmVNZWRp
YSwga0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9UZXh0UG9zaXRpb25QZXJjZW50YWdlUmVsYXRpdmVU
b1dyaXRpbmdEaXJlY3Rpb24sIENGU3RyaW5nUmVmKQorU09GVF9MSU5LX1ZBUklBQkxFX0RMTF9J
TVBPUlRfT1BUSU9OQUwoQ29yZU1lZGlhLCBrQ01UZXh0TWFya3VwQXR0cmlidXRlX1dyaXRpbmdE
aXJlY3Rpb25TaXplUGVyY2VudGFnZSwgQ0ZTdHJpbmdSZWYpCitTT0ZUX0xJTktfVkFSSUFCTEVf
RExMX0lNUE9SVF9PUFRJT05BTChDb3JlTWVkaWEsIGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfT3J0
aG9nb25hbExpbmVQb3NpdGlvblBlcmNlbnRhZ2VSZWxhdGl2ZVRvV3JpdGluZ0RpcmVjdGlvbiwg
Q0ZTdHJpbmdSZWYpCitTT0ZUX0xJTktfVkFSSUFCTEVfRExMX0lNUE9SVF9PUFRJT05BTChDb3Jl
TWVkaWEsIGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfVmVydGljYWxMYXlvdXQsIENGU3RyaW5nUmVm
KQorU09GVF9MSU5LX1ZBUklBQkxFX0RMTF9JTVBPUlRfT1BUSU9OQUwoQ29yZU1lZGlhLCBrQ01U
ZXh0VmVydGljYWxMYXlvdXRfTGVmdFRvUmlnaHQsIENGU3RyaW5nUmVmKQorU09GVF9MSU5LX1ZB
UklBQkxFX0RMTF9JTVBPUlRfT1BUSU9OQUwoQ29yZU1lZGlhLCBrQ01UZXh0VmVydGljYWxMYXlv
dXRfUmlnaHRUb0xlZnQsIENGU3RyaW5nUmVmKQorU09GVF9MSU5LX1ZBUklBQkxFX0RMTF9JTVBP
UlRfT1BUSU9OQUwoQ29yZU1lZGlhLCBrQ01UZXh0TWFya3VwQXR0cmlidXRlX0Jhc2VGb250U2l6
ZVBlcmNlbnRhZ2VSZWxhdGl2ZVRvVmlkZW9IZWlnaHQsIENGU3RyaW5nUmVmKQorU09GVF9MSU5L
X1ZBUklBQkxFX0RMTF9JTVBPUlRfT1BUSU9OQUwoQ29yZU1lZGlhLCBrQ01UZXh0TWFya3VwQXR0
cmlidXRlX1JlbGF0aXZlRm9udFNpemUsIENGU3RyaW5nUmVmKQorU09GVF9MSU5LX1ZBUklBQkxF
X0RMTF9JTVBPUlRfT1BUSU9OQUwoQ29yZU1lZGlhLCBrQ01UZXh0TWFya3VwQXR0cmlidXRlX0Zv
bnRGYW1pbHlOYW1lLCBDRlN0cmluZ1JlZikKK1NPRlRfTElOS19WQVJJQUJMRV9ETExfSU1QT1JU
X09QVElPTkFMKENvcmVNZWRpYSwga0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9Gb3JlZ3JvdW5kQ29s
b3JBUkdCLCBDRlN0cmluZ1JlZikKK1NPRlRfTElOS19WQVJJQUJMRV9ETExfSU1QT1JUX09QVElP
TkFMKENvcmVNZWRpYSwga0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9CYWNrZ3JvdW5kQ29sb3JBUkdC
LCBDRlN0cmluZ1JlZikKK1NPRlRfTElOS19WQVJJQUJMRV9ETExfSU1QT1JUX09QVElPTkFMKENv
cmVNZWRpYSwga0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9DaGFyYWN0ZXJCYWNrZ3JvdW5kQ29sb3JB
UkdCLCBDRlN0cmluZ1JlZikKKworI2RlZmluZSBrQ01UZXh0TWFya3VwQXR0cmlidXRlX0FsaWdu
bWVudCBnZXRfa0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9BbGlnbm1lbnQoKQorI2RlZmluZSBrQ01U
ZXh0TWFya3VwQWxpZ25tZW50VHlwZV9TdGFydCBnZXRfa0NNVGV4dE1hcmt1cEFsaWdubWVudFR5
cGVfU3RhcnQoKQorI2RlZmluZSBrQ01UZXh0TWFya3VwQWxpZ25tZW50VHlwZV9NaWRkbGUgZ2V0
X2tDTVRleHRNYXJrdXBBbGlnbm1lbnRUeXBlX01pZGRsZSgpCisjZGVmaW5lIGtDTVRleHRNYXJr
dXBBbGlnbm1lbnRUeXBlX0VuZCBnZXRfa0NNVGV4dE1hcmt1cEFsaWdubWVudFR5cGVfRW5kKCkK
KyNkZWZpbmUga0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9Cb2xkU3R5bGUgZ2V0X2tDTVRleHRNYXJr
dXBBdHRyaWJ1dGVfQm9sZFN0eWxlKCkKKyNkZWZpbmUga0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9J
dGFsaWNTdHlsZSBnZXRfa0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9JdGFsaWNTdHlsZSgpCisjZGVm
aW5lIGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfVW5kZXJsaW5lU3R5bGUgZ2V0X2tDTVRleHRNYXJr
dXBBdHRyaWJ1dGVfVW5kZXJsaW5lU3R5bGUoKQorI2RlZmluZSBrQ01UZXh0TWFya3VwQXR0cmli
dXRlX1RleHRQb3NpdGlvblBlcmNlbnRhZ2VSZWxhdGl2ZVRvV3JpdGluZ0RpcmVjdGlvbiBnZXRf
a0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9UZXh0UG9zaXRpb25QZXJjZW50YWdlUmVsYXRpdmVUb1dy
aXRpbmdEaXJlY3Rpb24oKQorI2RlZmluZSBrQ01UZXh0TWFya3VwQXR0cmlidXRlX1dyaXRpbmdE
aXJlY3Rpb25TaXplUGVyY2VudGFnZSBnZXRfa0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9Xcml0aW5n
RGlyZWN0aW9uU2l6ZVBlcmNlbnRhZ2UoKQorI2RlZmluZSBrQ01UZXh0TWFya3VwQXR0cmlidXRl
X09ydGhvZ29uYWxMaW5lUG9zaXRpb25QZXJjZW50YWdlUmVsYXRpdmVUb1dyaXRpbmdEaXJlY3Rp
b24gZ2V0X2tDTVRleHRNYXJrdXBBdHRyaWJ1dGVfT3J0aG9nb25hbExpbmVQb3NpdGlvblBlcmNl
bnRhZ2VSZWxhdGl2ZVRvV3JpdGluZ0RpcmVjdGlvbigpCisjZGVmaW5lIGtDTVRleHRNYXJrdXBB
dHRyaWJ1dGVfVmVydGljYWxMYXlvdXQgZ2V0X2tDTVRleHRNYXJrdXBBdHRyaWJ1dGVfVmVydGlj
YWxMYXlvdXQoKQorI2RlZmluZSBrQ01UZXh0VmVydGljYWxMYXlvdXRfTGVmdFRvUmlnaHQgZ2V0
X2tDTVRleHRWZXJ0aWNhbExheW91dF9MZWZ0VG9SaWdodCgpCisjZGVmaW5lIGtDTVRleHRWZXJ0
aWNhbExheW91dF9SaWdodFRvTGVmdCBnZXRfa0NNVGV4dFZlcnRpY2FsTGF5b3V0X1JpZ2h0VG9M
ZWZ0KCkKKyNkZWZpbmUga0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9CYXNlRm9udFNpemVQZXJjZW50
YWdlUmVsYXRpdmVUb1ZpZGVvSGVpZ2h0IGdldF9rQ01UZXh0TWFya3VwQXR0cmlidXRlX0Jhc2VG
b250U2l6ZVBlcmNlbnRhZ2VSZWxhdGl2ZVRvVmlkZW9IZWlnaHQoKQorI2RlZmluZSBrQ01UZXh0
TWFya3VwQXR0cmlidXRlX1JlbGF0aXZlRm9udFNpemUgZ2V0X2tDTVRleHRNYXJrdXBBdHRyaWJ1
dGVfUmVsYXRpdmVGb250U2l6ZSgpCisjZGVmaW5lIGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfRm9u
dEZhbWlseU5hbWUgZ2V0X2tDTVRleHRNYXJrdXBBdHRyaWJ1dGVfRm9udEZhbWlseU5hbWUoKQor
I2RlZmluZSBrQ01UZXh0TWFya3VwQXR0cmlidXRlX0ZvcmVncm91bmRDb2xvckFSR0IgZ2V0X2tD
TVRleHRNYXJrdXBBdHRyaWJ1dGVfRm9yZWdyb3VuZENvbG9yQVJHQigpCisjZGVmaW5lIGtDTVRl
eHRNYXJrdXBBdHRyaWJ1dGVfQmFja2dyb3VuZENvbG9yQVJHQiBnZXRfa0NNVGV4dE1hcmt1cEF0
dHJpYnV0ZV9CYWNrZ3JvdW5kQ29sb3JBUkdCKCkKKyNkZWZpbmUga0NNVGV4dE1hcmt1cEF0dHJp
YnV0ZV9DaGFyYWN0ZXJCYWNrZ3JvdW5kQ29sb3JBUkdCIGdldF9rQ01UZXh0TWFya3VwQXR0cmli
dXRlX0NoYXJhY3RlckJhY2tncm91bmRDb2xvckFSR0IoKQorI2VuZGlmCiAKIHVzaW5nIG5hbWVz
cGFjZSBzdGQ7CiAKQEAgLTQ1OSw0ICs1MDMsNCBAQCB2b2lkIEluYmFuZFRleHRUcmFja1ByaXZh
dGVBVkY6OnNldE1vZGUoCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVO
QUJMRShWSURFTykgJiYgKChVU0UoQVZGT1VOREFUSU9OKSAmJiAhUExBVEZPUk0oV0lOKSkgfHwg
UExBVEZPUk0oSU9TKSkKKyNlbmRpZiAvLyBFTkFCTEUoVklERU8pICYmIChVU0UoQVZGT1VOREFU
SU9OKSB8fCBQTEFURk9STShJT1MpKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUFWRi5oCShyZXZpc2lvbiAxNTI3NDcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFW
Ri5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIEluYmFuZFRleHRU
cmFja1ByaXZhdGVBVkZfaAogI2RlZmluZSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGX2gKIAot
I2lmIEVOQUJMRShWSURFTykgJiYgKChVU0UoQVZGT1VOREFUSU9OKSAmJiAhUExBVEZPUk0oV0lO
KSkgfHwgUExBVEZPUk0oSU9TKSkKKyNpZiBFTkFCTEUoVklERU8pICYmIChVU0UoQVZGT1VOREFU
SU9OKSB8fCBQTEFURk9STShJT1MpKQogCiAjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZS5oIgogI2luY2x1ZGUgIkluYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaCIKQEAgLTkwLDYg
KzkwLDYgQEAgcHJvdGVjdGVkOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAv
LyAgRU5BQkxFKFZJREVPKSAmJiAoKFVTRShBVkZPVU5EQVRJT04pICYmICFQTEFURk9STShXSU4p
KSB8fCBQTEFURk9STShJT1MpKQorI2VuZGlmIC8vICBFTkFCTEUoVklERU8pICYmIChVU0UoQVZG
T1VOREFUSU9OKSB8fCBQTEFURk9STShJT1MpKQogCiAjZW5kaWYgLy8gSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUFWRl9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcAkocmV2aXNpb24gMTUyNzQ3KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDkgKzc0LDcgQEAgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpNZWRpYVBsYQogICAgICwgbV9pZ25vcmVMb2FkU3RhdGVD
aGFuZ2VzKGZhbHNlKQogICAgICwgbV9oYXZlUmVwb3J0ZWRGaXJzdFZpZGVvRnJhbWUoZmFsc2Up
CiAgICAgLCBtX3BsYXlXaGVuRnJhbWVzQXZhaWxhYmxlKGZhbHNlKQotI2lmICFQTEFURk9STShX
SU4pCiAgICAgLCBtX2luYmFuZFRyYWNrQ29uZmlndXJhdGlvblBlbmRpbmcoZmFsc2UpCi0jZW5k
aWYKICAgICAsIG1fc2Vla0NvdW50KDApCiB7CiAgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24oJXApIiwg
dGhpcyk7CkBAIC0yNjcsMTAgKzI2NSw4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uOjpzZWUKICAgICBpZiAoY3VycmVudFRpbWUoKSA9PSB0aW1lKQogICAgICAgICByZXR1
cm47CiAKLSNpZiAhUExBVEZPUk0oV0lOKQogICAgIGlmIChjdXJyZW50VHJhY2soKSkKICAgICAg
ICAgY3VycmVudFRyYWNrKCktPmJlZ2luU2Vla2luZygpOwotI2VuZGlmCiAgICAgCiAgICAgTE9H
KE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpzZWVrKCVwKSAtIHNlZWtp
bmcgdG8gJWYiLCB0aGlzLCB0aW1lKTsKICAgICBtX3NlZWtUbyA9IHRpbWU7CkBAIC01OTksMTAg
KzU5NSw4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpzZWUKICAgICBp
ZiAoLS1tX3NlZWtDb3VudCkKICAgICAgICAgcmV0dXJuOwogCi0jaWYgIVBMQVRGT1JNKFdJTikK
ICAgICBpZiAoY3VycmVudFRyYWNrKCkpCiAgICAgICAgIGN1cnJlbnRUcmFjaygpLT5lbmRTZWVr
aW5nKCk7Ci0jZW5kaWYKIAogICAgIG1fc2Vla1RvID0gTWVkaWFQbGF5ZXI6OmludmFsaWRUaW1l
KCk7CiAgICAgdXBkYXRlU3RhdGVzKCk7CkBAIC04MzMsMTAgKzgyNyw4IEBAIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpkaXMKICAgICAgICAgY29udGVudHNOZWVkc0Rpc3Bs
YXkoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBOb3RpZmljYXRpb246OkluYmFuZFRyYWNr
c05lZWRDb25maWd1cmF0aW9uOgotI2lmICFQTEFURk9STShXSU4pCiAgICAgICAgIG1faW5iYW5k
VHJhY2tDb25maWd1cmF0aW9uUGVuZGluZyA9IGZhbHNlOwogICAgICAgICBjb25maWd1cmVJbmJh
bmRUcmFja3MoKTsKLSNlbmRpZgogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgTm90aWZpY2F0
aW9uOjpOb25lOgpAQCAtODQ1LDcgKzgzNyw2IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uOjpkaXMKICAgICB9CiB9CiAKLSNpZiAhUExBVEZPUk0oV0lOKQogdm9pZCBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OmNvbmZpZ3VyZUluYmFuZFRyYWNrcygpCiB7CiAg
ICAgUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY+IHRyYWNrVG9FbmFibGU7CkBAIC04
NzIsNyArODYzLDYgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnRyYQog
ICAgIG1faW5iYW5kVHJhY2tDb25maWd1cmF0aW9uUGVuZGluZyA9IHRydWU7CiAgICAgc2NoZWR1
bGVNYWluVGhyZWFkTm90aWZpY2F0aW9uKE5vdGlmaWNhdGlvbjo6SW5iYW5kVHJhY2tzTmVlZENv
bmZpZ3VyYXRpb24pOwogfQotI2VuZGlmCiAKIHNpemVfdCBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb246OmV4dHJhTWVtb3J5Q29zdCgpIGNvbnN0CiB7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oCShyZXZpc2lvbiAx
NTI3NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDEw
ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEluYmFuZFRleHRUcmFja1ByaXZh
dGVBVkY7CiBjbGFzcyBHZW5lcmljQ3VlRGF0YTsKIAotY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uIDogcHVibGljIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZQotI2lmICFQ
TEFURk9STShXSU4pCi0gICAgLCBwdWJsaWMgQVZGSW5iYW5kVHJhY2tQYXJlbnQKLSNlbmRpZgor
Y2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uIDogcHVibGljIE1lZGlhUGxheWVy
UHJpdmF0ZUludGVyZmFjZSwgcHVibGljIEFWRkluYmFuZFRyYWNrUGFyZW50CiB7CiBwdWJsaWM6
CiAKQEAgLTU2LDExICs1Myw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2Vla0NvbXBs
ZXRlZChib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRW5kKCk7CiAgICAgdmlydHVhbCB2b2lk
IGNvbnRlbnRzTmVlZHNEaXNwbGF5KCkgeyB9Ci0jaWYgIVBMQVRGT1JNKFdJTikKICAgICB2aXJ0
dWFsIHZvaWQgY29uZmlndXJlSW5iYW5kVHJhY2tzKCk7CiAgICAgdmlydHVhbCB2b2lkIHNldEN1
cnJlbnRUcmFjayhJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGKikgeyB9CiAgICAgdmlydHVhbCBJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGKiBjdXJyZW50VHJhY2soKSBjb25zdCA9IDA7Ci0jZW5k
aWYKIAogICAgIGNsYXNzIE5vdGlmaWNhdGlvbiB7CiAgICAgcHVibGljOgpAQCAtMjY4LDEwICsy
NjMsOCBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2aXJ0dWFsIHNpemVfdCBleHRyYU1lbW9yeUNvc3Qo
KSBjb25zdCBPVkVSUklERTsKIAotI2lmICFQTEFURk9STShXSU4pCiAgICAgdmlydHVhbCB2b2lk
IHRyYWNrTW9kZUNoYW5nZWQoKSBPVkVSUklERTsKICAgICBWZWN0b3I8UmVmUHRyPEluYmFuZFRl
eHRUcmFja1ByaXZhdGVBVkY+ID4gbV90ZXh0VHJhY2tzOwotI2VuZGlmCiAgICAgCiBwcml2YXRl
OgogICAgIE1lZGlhUGxheWVyKiBtX3BsYXllcjsKQEAgLTMwOCw5ICszMDEsNyBAQCBwcml2YXRl
OgogICAgIGJvb2wgbV9pZ25vcmVMb2FkU3RhdGVDaGFuZ2VzOwogICAgIGJvb2wgbV9oYXZlUmVw
b3J0ZWRGaXJzdFZpZGVvRnJhbWU7CiAgICAgYm9vbCBtX3BsYXlXaGVuRnJhbWVzQXZhaWxhYmxl
OwotI2lmICFQTEFURk9STShXSU4pCiAgICAgYm9vbCBtX2luYmFuZFRyYWNrQ29uZmlndXJhdGlv
blBlbmRpbmc7Ci0jZW5kaWYKICAgICBzaXplX3QgbV9zZWVrQ291bnQ7CiB9OwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvQVZGb3VuZGF0
aW9uQ0ZTb2Z0TGlua2luZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9BVkZvdW5kYXRpb25DRlNvZnRMaW5raW5nLmgJKHJl
dmlzaW9uIDE1Mjc0NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9jZi9BVkZvdW5kYXRpb25DRlNvZnRMaW5raW5nLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQyLDYgKzQyLDkgQEAgU09GVF9MSU5LX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQwog
U09GVF9MSU5LX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZBc3NldENvcHlBc3NldFRy
YWNrcywgQ0ZBcnJheVJlZiwgX19jZGVjbCwgKEFWQ0ZBc3NldFJlZiBhc3NldCksIChhc3NldCkp
CiAjZGVmaW5lIEFWQ0ZBc3NldENvcHlBc3NldFRyYWNrcyBzb2Z0TGlua19BVkNGQXNzZXRDb3B5
QXNzZXRUcmFja3MKIAorU09GVF9MSU5LX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZB
c3NldENvcHlBdmFpbGFibGVNZWRpYUNoYXJhY3RlcmlzdGljc1dpdGhNZWRpYVNlbGVjdGlvbk9w
dGlvbnMsIENGQXJyYXlSZWYsIF9fY2RlY2wsIChBVkNGQXNzZXRSZWYgYXNzZXQpLCAoYXNzZXQp
KQorI2RlZmluZSBBVkNGQXNzZXRDb3B5QXZhaWxhYmxlTWVkaWFDaGFyYWN0ZXJpc3RpY3NXaXRo
TWVkaWFTZWxlY3Rpb25PcHRpb25zIHNvZnRMaW5rX0FWQ0ZBc3NldENvcHlBdmFpbGFibGVNZWRp
YUNoYXJhY3RlcmlzdGljc1dpdGhNZWRpYVNlbGVjdGlvbk9wdGlvbnMKKwogU09GVF9MSU5LX0RM
TF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZBc3NldENvcHlUcmFja3NXaXRoTWVkaWFDaGFy
YWN0ZXJpc3RpYywgQ0ZBcnJheVJlZiwgX19jZGVjbCwgKEFWQ0ZBc3NldFJlZiBhc3NldCwgQ0ZT
dHJpbmdSZWYgbWVkaWFDaGFyYWN0ZXJpc3RpYyksIChhc3NldCwgbWVkaWFDaGFyYWN0ZXJpc3Rp
YykpCiAjZGVmaW5lIEFWQ0ZBc3NldENvcHlUcmFja3NXaXRoTWVkaWFDaGFyYWN0ZXJpc3RpYyBz
b2Z0TGlua19BVkNGQXNzZXRDb3B5VHJhY2tzV2l0aE1lZGlhQ2hhcmFjdGVyaXN0aWMKIApAQCAt
ODcsNiArOTAsMTUgQEAgU09GVF9MSU5LX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQwog
U09GVF9MSU5LX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZBc3NldExvYWRWYWx1ZXNB
c3luY2hyb25vdXNseUZvclByb3BlcnRpZXMsIHZvaWQsIF9fY2RlY2wsIChBVkNGQXNzZXRSZWYg
YXNzZXQsIENGQXJyYXlSZWYgcHJvcGVydGllcywgQVZDRkFzc2V0TG9hZFZhbHVlc0NvbXBsZXRp
b25DYWxsYmFjayBjYWxsYmFjaywgdm9pZCAqY2xpZW50Q29udGV4dCksIChhc3NldCwgcHJvcGVy
dGllcywgY2FsbGJhY2ssIGNsaWVudENvbnRleHQpKQogI2RlZmluZSBBVkNGQXNzZXRMb2FkVmFs
dWVzQXN5bmNocm9ub3VzbHlGb3JQcm9wZXJ0aWVzIHNvZnRMaW5rX0FWQ0ZBc3NldExvYWRWYWx1
ZXNBc3luY2hyb25vdXNseUZvclByb3BlcnRpZXMKIAorU09GVF9MSU5LX0RMTF9JTVBPUlQoQVZG
b3VuZGF0aW9uQ0YsIEFWQ0ZBc3NldFRyYWNrQ29weUNvbW1vbk1ldGFkYXRhLCBDRkFycmF5UmVm
LCBfX2NkZWNsLCAoQVZDRkFzc2V0VHJhY2tSZWYgYXNzZXRUcmFjayksIChhc3NldFRyYWNrKSkK
KyNkZWZpbmUgQVZDRkFzc2V0VHJhY2tDb3B5Q29tbW9uTWV0YWRhdGEgc29mdExpbmtfQVZDRkFz
c2V0VHJhY2tDb3B5Q29tbW9uTWV0YWRhdGEKKworU09GVF9MSU5LX0RMTF9JTVBPUlQoQVZGb3Vu
ZGF0aW9uQ0YsIEFWQ0ZBc3NldFRyYWNrQ29weUV4dGVuZGVkTGFuZ3VhZ2VUYWcsIENGU3RyaW5n
UmVmLCBfX2NkZWNsLCAoQVZDRkFzc2V0VHJhY2tSZWYgYXNzZXRUcmFjayksIChhc3NldFRyYWNr
KSkKKyNkZWZpbmUgQVZDRkFzc2V0VHJhY2tDb3B5RXh0ZW5kZWRMYW5ndWFnZVRhZyBzb2Z0TGlu
a19BVkNGQXNzZXRUcmFja0NvcHlFeHRlbmRlZExhbmd1YWdlVGFnCisKK1NPRlRfTElOS19ETExf
SU1QT1JUKEFWRm91bmRhdGlvbkNGLCBBVkNGQXNzZXRUcmFja0NvcHlMYW5ndWFnZUNvZGUsIENG
U3RyaW5nUmVmLCBfX2NkZWNsLCAoQVZDRkFzc2V0VHJhY2tSZWYgYXNzZXRUcmFjayksIChhc3Nl
dFRyYWNrKSkKKyNkZWZpbmUgQVZDRkFzc2V0VHJhY2tDb3B5TGFuZ3VhZ2VDb2RlIHNvZnRMaW5r
X0FWQ0ZBc3NldFRyYWNrQ29weUxhbmd1YWdlQ29kZQorCiBTT0ZUX0xJTktfRExMX0lNUE9SVChB
VkZvdW5kYXRpb25DRiwgQVZDRkFzc2V0VHJhY2tHZXRNZWRpYVR5cGUsIENGU3RyaW5nUmVmLCBf
X2NkZWNsLCAoQVZDRkFzc2V0VHJhY2tSZWYgYXNzZXRUcmFjayksIChhc3NldFRyYWNrKSkKICNk
ZWZpbmUgQVZDRkFzc2V0VHJhY2tHZXRNZWRpYVR5cGUgc29mdExpbmtfQVZDRkFzc2V0VHJhY2tH
ZXRNZWRpYVR5cGUKIApAQCAtOTksNiArMTExLDE4IEBAIFNPRlRfTElOS19ETExfSU1QT1JUKEFW
Rm91bmRhdGlvbkNGLCBBVkMKIFNPRlRfTElOS19ETExfSU1QT1JUKEFWRm91bmRhdGlvbkNGLCBB
VkNGQXNzZXRUcmFja0dldFRvdGFsU2FtcGxlRGF0YUxlbmd0aCwgaW50NjRfdCwgX19jZGVjbCwg
KEFWQ0ZBc3NldFRyYWNrUmVmIGFzc2V0VHJhY2spLCAoYXNzZXRUcmFjaykpCiAjZGVmaW5lIEFW
Q0ZBc3NldFRyYWNrR2V0VG90YWxTYW1wbGVEYXRhTGVuZ3RoIHNvZnRMaW5rX0FWQ0ZBc3NldFRy
YWNrR2V0VG90YWxTYW1wbGVEYXRhTGVuZ3RoCiAKK1NPRlRfTElOS19ETExfSU1QT1JUKEFWRm91
bmRhdGlvbkNGLCBBVkNGTWVkaWFTZWxlY3Rpb25Db3B5T3B0aW9uc0Zyb21BcnJheUZpbHRlcmVk
QW5kU29ydGVkQWNjb3JkaW5nVG9QcmVmZXJyZWRMYW5ndWFnZXMsIENGQXJyYXlSZWYsIF9fY2Rl
Y2wsIChDRkFycmF5UmVmIHNlbGVjdGlvbk9wdGlvbnMsIENGQXJyYXlSZWYgcHJlZmVycmVkTGFu
Z3VhZ2VzKSwgKHNlbGVjdGlvbk9wdGlvbnMsIHByZWZlcnJlZExhbmd1YWdlcykpCisjZGVmaW5l
IEFWQ0ZNZWRpYVNlbGVjdGlvbkNvcHlPcHRpb25zRnJvbUFycmF5RmlsdGVyZWRBbmRTb3J0ZWRB
Y2NvcmRpbmdUb1ByZWZlcnJlZExhbmd1YWdlcyBzb2Z0TGlua19BVkNGTWVkaWFTZWxlY3Rpb25D
b3B5T3B0aW9uc0Zyb21BcnJheUZpbHRlcmVkQW5kU29ydGVkQWNjb3JkaW5nVG9QcmVmZXJyZWRM
YW5ndWFnZXMKKworU09GVF9MSU5LX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZNZXRh
ZGF0YUl0ZW1Db3B5U3RyaW5nVmFsdWUsIENGU3RyaW5nUmVmLCBfX2NkZWNsLCAoQVZDRk1ldGFk
YXRhSXRlbVJlZiBtZXRhZGF0YUl0ZW0pLCAobWV0YWRhdGFJdGVtKSkKKyNkZWZpbmUgQVZDRk1l
dGFkYXRhSXRlbUNvcHlTdHJpbmdWYWx1ZSBzb2Z0TGlua19BVkNGTWV0YWRhdGFJdGVtQ29weVN0
cmluZ1ZhbHVlCisKK1NPRlRfTElOS19ETExfSU1QT1JUKEFWRm91bmRhdGlvbkNGLCBBVkNGTWV0
YWRhdGFJdGVtQ29weUl0ZW1zV2l0aEtleUFuZEtleVNwYWNlLCBDRkFycmF5UmVmLCBfX2NkZWNs
LCAoQ0ZBcnJheVJlZiBhcnJheSwgQ0ZUeXBlUmVmIGtleSwgQ0ZTdHJpbmdSZWYga2V5U3BhY2Up
LCAoYXJyYXksIGtleSwga2V5U3BhY2UpKQorI2RlZmluZSBBVkNGTWV0YWRhdGFJdGVtQ29weUl0
ZW1zV2l0aEtleUFuZEtleVNwYWNlIHNvZnRMaW5rX0FWQ0ZNZXRhZGF0YUl0ZW1Db3B5SXRlbXNX
aXRoS2V5QW5kS2V5U3BhY2UKKworU09GVF9MSU5LX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0Ys
IEFWQ0ZNZXRhZGF0YUl0ZW1Db3B5SXRlbXNXaXRoTG9jYWxlLCBDRkFycmF5UmVmLCBfX2NkZWNs
LCAoQ0ZBcnJheVJlZiBpdGVtcywgQ0ZMb2NhbGVSZWYgbG9jYWxlKSwgKGl0ZW1zLCBsb2NhbGUp
KQorI2RlZmluZSBBVkNGTWV0YWRhdGFJdGVtQ29weUl0ZW1zV2l0aExvY2FsZSBzb2Z0TGlua19B
VkNGTWV0YWRhdGFJdGVtQ29weUl0ZW1zV2l0aExvY2FsZQorCiBTT0ZUX0xJTktfRExMX0lNUE9S
VChBVkZvdW5kYXRpb25DRiwgQVZDRlBsYXllckNyZWF0ZVBlcmlvZGljVGltZU9ic2VydmVyRm9y
SW50ZXJ2YWwsIEFWQ0ZQbGF5ZXJPYnNlcnZlclJlZiwgX19jZGVjbCwgKEFWQ0ZQbGF5ZXJSZWYg
cGxheWVyLCBDTVRpbWUgaW50ZXJ2YWwsIGRpc3BhdGNoX3F1ZXVlX3QgcXVldWUsIEFWQ0ZQbGF5
ZXJQZXJpb2RpY1RpbWVPYnNlcnZlckNhbGxiYWNrIGNhbGxiYWNrLCB2b2lkICpjbGllbnRDb250
ZXh0KSwgKHBsYXllciwgaW50ZXJ2YWwsIHF1ZXVlLCBjYWxsYmFjaywgY2xpZW50Q29udGV4dCkp
CiAjZGVmaW5lIEFWQ0ZQbGF5ZXJDcmVhdGVQZXJpb2RpY1RpbWVPYnNlcnZlckZvckludGVydmFs
IHNvZnRMaW5rX0FWQ0ZQbGF5ZXJDcmVhdGVQZXJpb2RpY1RpbWVPYnNlcnZlckZvckludGVydmFs
CiAKQEAgLTEyMyw2ICsxNDcsOSBAQCBTT0ZUX0xJTktfRExMX0lNUE9SVChBVkZvdW5kYXRpb25D
RiwgQVZDCiBTT0ZUX0xJTktfRExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZDRlBsYXllckl0
ZW1HZXRDdXJyZW50VGltZSwgQ01UaW1lLCBfX2NkZWNsLCAoQVZDRlBsYXllckl0ZW1SZWYgcGxh
eWVySXRlbSksIChwbGF5ZXJJdGVtKSkKICNkZWZpbmUgQVZDRlBsYXllckl0ZW1HZXRDdXJyZW50
VGltZSBzb2Z0TGlua19BVkNGUGxheWVySXRlbUdldEN1cnJlbnRUaW1lCiAKK1NPRlRfTElOS19E
TExfSU1QT1JUKEFWRm91bmRhdGlvbkNGLCBBVkNGUGxheWVySXRlbUdldER1cmF0aW9uLCBDTVRp
bWUsIF9fY2RlY2wsIChBVkNGUGxheWVySXRlbVJlZiBwbGF5ZXJJdGVtKSwgKHBsYXllckl0ZW0p
KQorI2RlZmluZSBBVkNGUGxheWVySXRlbUdldER1cmF0aW9uIHNvZnRMaW5rX0FWQ0ZQbGF5ZXJJ
dGVtR2V0RHVyYXRpb24KKwogU09GVF9MSU5LX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFW
Q0ZQbGF5ZXJJdGVtR2V0U3RhdHVzLCBBVkNGUGxheWVySXRlbVN0YXR1cywgX19jZGVjbCwgKEFW
Q0ZQbGF5ZXJJdGVtUmVmIHBsYXllckl0ZW0sIENGRXJyb3JSZWYgKmVycm9yT3V0KSwgKHBsYXll
ckl0ZW0sIGVycm9yT3V0KSkKICNkZWZpbmUgQVZDRlBsYXllckl0ZW1HZXRTdGF0dXMgc29mdExp
bmtfQVZDRlBsYXllckl0ZW1HZXRTdGF0dXMKIApAQCAtMTM1LDYgKzE2MiwxMiBAQCBTT0ZUX0xJ
TktfRExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZDCiBTT0ZUX0xJTktfRExMX0lNUE9SVChB
VkZvdW5kYXRpb25DRiwgQVZDRlBsYXllckl0ZW1Jc1BsYXliYWNrTGlrZWx5VG9LZWVwVXAsIEJv
b2xlYW4sIF9fY2RlY2wsIChBVkNGUGxheWVySXRlbVJlZiBwbGF5ZXJJdGVtKSwgKHBsYXllckl0
ZW0pKQogI2RlZmluZSBBVkNGUGxheWVySXRlbUlzUGxheWJhY2tMaWtlbHlUb0tlZXBVcCBzb2Z0
TGlua19BVkNGUGxheWVySXRlbUlzUGxheWJhY2tMaWtlbHlUb0tlZXBVcAogCitTT0ZUX0xJTktf
RExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZDRlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0R2V0
VHlwZUlELCBDRlR5cGVJRCwgX19jZGVjbCwgKCksICgpKQorI2RlZmluZSBBVkNGUGxheWVySXRl
bUxlZ2libGVPdXRwdXRHZXRUeXBlSUQgc29mdExpbmtfQVZDRlBsYXllckl0ZW1MZWdpYmxlT3V0
cHV0R2V0VHlwZUlECisKK1NPRlRfTElOS19ETExfSU1QT1JUKEFWRm91bmRhdGlvbkNGLCBBVkNG
UGxheWVySXRlbVJlbW92ZU91dHB1dCwgdm9pZCwgX19jZGVjbCwgKEFWQ0ZQbGF5ZXJJdGVtUmVm
IHBsYXllckl0ZW0sIEFWQ0ZQbGF5ZXJJdGVtT3V0cHV0UmVmIG91dHB1dCksIChwbGF5ZXJJdGVt
LCBvdXRwdXQpKQorI2RlZmluZSBBVkNGUGxheWVySXRlbVJlbW92ZU91dHB1dCBzb2Z0TGlua19B
VkNGUGxheWVySXRlbVJlbW92ZU91dHB1dAorCiBTT0ZUX0xJTktfRExMX0lNUE9SVChBVkZvdW5k
YXRpb25DRiwgQVZDRlBsYXllckl0ZW1TZWVrVG9UaW1lV2l0aFRvbGVyYW5jZUFuZENvbXBsZXRp
b25DYWxsYmFjaywgQVZDRkFzc2V0UmVmLCBfX2NkZWNsLCAoQVZDRlBsYXllckl0ZW1SZWYgcGxh
eWVySXRlbSwgQ01UaW1lIHRpbWUsIENNVGltZSB0b2xlcmFuY2VCZWZvcmUsIENNVGltZSB0b2xl
cmFuY2VBZnRlciwgQVZDRlBsYXllckl0ZW1TZWVrQ29tcGxldGlvbkNhbGxiYWNrIGNvbXBsZXRp
b25DYWxsYmFjaywgdm9pZCAqY29udGV4dCksIChwbGF5ZXJJdGVtLCB0aW1lLCB0b2xlcmFuY2VC
ZWZvcmUsIHRvbGVyYW5jZUFmdGVyLCBjb21wbGV0aW9uQ2FsbGJhY2ssIGNvbnRleHQpKQogI2Rl
ZmluZSBBVkNGUGxheWVySXRlbVNlZWtUb1RpbWVXaXRoVG9sZXJhbmNlQW5kQ29tcGxldGlvbkNh
bGxiYWNrIHNvZnRMaW5rX0FWQ0ZQbGF5ZXJJdGVtU2Vla1RvVGltZVdpdGhUb2xlcmFuY2VBbmRD
b21wbGV0aW9uQ2FsbGJhY2sKIApAQCAtMTU5LDYgKzE5Miw5IEBAIFNPRlRfTElOS19ETExfSU1Q
T1JUKEFWRm91bmRhdGlvbkNGLCBBVkMKIFNPRlRfTElOS19ETExfSU1QT1JUKEFWRm91bmRhdGlv
bkNGLCBBVkNGUGxheWVyTGF5ZXJTZXRQbGF5ZXIsIHZvaWQsIF9fY2RlY2wsIChBVkNGUGxheWVy
TGF5ZXJSZWYgcGxheWVyTGF5ZXIsIEFWQ0ZQbGF5ZXJSZWYgcGxheWVyKSwgKHBsYXllckxheWVy
LCBwbGF5ZXIpKQogI2RlZmluZSBBVkNGUGxheWVyTGF5ZXJTZXRQbGF5ZXIgc29mdExpbmtfQVZD
RlBsYXllckxheWVyU2V0UGxheWVyCiAKK1NPRlRfTElOS19ETExfSU1QT1JUKEFWRm91bmRhdGlv
bkNGLCBBVkNGUGxheWVyUGxheSwgdm9pZCwgX19jZGVjbCwgKEFWQ0ZQbGF5ZXJSZWYgcGxheWVy
KSwgKHBsYXllcikpCisjZGVmaW5lIEFWQ0ZQbGF5ZXJQbGF5IHNvZnRMaW5rX0FWQ0ZQbGF5ZXJQ
bGF5CisKIFNPRlRfTElOS19ETExfSU1QT1JUKEFWRm91bmRhdGlvbkNGLCBBVkNGUGxheWVyUmVt
b3ZlT2JzZXJ2ZXIsIE9TU3RhdHVzLCBfX2NkZWNsLCAoQVZDRlBsYXllclJlZiBwbGF5ZXIsIEFW
Q0ZQbGF5ZXJPYnNlcnZlclJlZiBvYnNlcnZlciksIChwbGF5ZXIsIG9ic2VydmVyKSkKICNkZWZp
bmUgQVZDRlBsYXllclJlbW92ZU9ic2VydmVyIHNvZnRMaW5rX0FWQ0ZQbGF5ZXJSZW1vdmVPYnNl
cnZlcgogCkBAIC0xNzksNiArMjE1LDU4IEBAIFNPRlRfTElOS19ETExfSU1QT1JUKEFWRm91bmRh
dGlvbkNGLCBBVkMKIAogU09GVF9MSU5LX0RMTF9JTVBPUlRfT1BUSU9OQUwoQVZGb3VuZGF0aW9u
Q0YsIEFWQ0ZQbGF5ZXJTZXREaXJlY3QzRERldmljZSwgdm9pZCwgX19jZGVjbCwgKEFWQ0ZQbGF5
ZXJSZWYgcGxheWVyLCBJRGlyZWN0M0REZXZpY2U5KiBkM2REZXZpY2UpKQogCisjaWYgSEFWRShB
VkZPVU5EQVRJT05fTUVESUFfU0VMRUNUSU9OX0dST1VQKSAmJiBIQVZFKEFWRk9VTkRBVElPTl9M
RUdJQkxFX09VVFBVVF9TVVBQT1JUKQorCitTT0ZUX0xJTktfRExMX0lNUE9SVChBVkZvdW5kYXRp
b25DRiwgQVZDRkFzc2V0R2V0U2VsZWN0aW9uR3JvdXBGb3JNZWRpYUNoYXJhY3RlcmlzdGljICwg
QVZDRk1lZGlhU2VsZWN0aW9uR3JvdXBSZWYsIF9fY2RlY2wsIChBVkNGQXNzZXRSZWYgYXNzZXQs
IENGU3RyaW5nUmVmIG1lZGlhQ2hhcmFjdGVyaXN0aWMpLCAoYXNzZXQsIG1lZGlhQ2hhcmFjdGVy
aXN0aWMpKQorI2RlZmluZSBBVkNGQXNzZXRHZXRTZWxlY3Rpb25Hcm91cEZvck1lZGlhQ2hhcmFj
dGVyaXN0aWMgIHNvZnRMaW5rX0FWQ0ZBc3NldEdldFNlbGVjdGlvbkdyb3VwRm9yTWVkaWFDaGFy
YWN0ZXJpc3RpYyAKKworU09GVF9MSU5LX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZN
ZWRpYVNlbGVjdGlvbkNvcHlQbGF5YWJsZU9wdGlvbnNGcm9tQXJyYXksIENGQXJyYXlSZWYsIF9f
Y2RlY2wsIChDRkFycmF5UmVmIHNlbGVjdGlvbk9wdGlvbnMpLCAoc2VsZWN0aW9uT3B0aW9ucykp
CisjZGVmaW5lIEFWQ0ZNZWRpYVNlbGVjdGlvbkNvcHlQbGF5YWJsZU9wdGlvbnNGcm9tQXJyYXkg
c29mdExpbmtfQVZDRk1lZGlhU2VsZWN0aW9uQ29weVBsYXlhYmxlT3B0aW9uc0Zyb21BcnJheQor
CitTT0ZUX0xJTktfRExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZDRk1lZGlhU2VsZWN0aW9u
T3B0aW9uQ29weUNvbW1vbk1ldGFkYXRhLCBDRkFycmF5UmVmLCBfX2NkZWNsLCAoQVZDRk1lZGlh
U2VsZWN0aW9uT3B0aW9uUmVmIHNlbGVjdGlvbk9wdGlvbiksIChzZWxlY3Rpb25PcHRpb24pKQor
I2RlZmluZSBBVkNGTWVkaWFTZWxlY3Rpb25PcHRpb25Db3B5Q29tbW9uTWV0YWRhdGEgc29mdExp
bmtfQVZDRk1lZGlhU2VsZWN0aW9uT3B0aW9uQ29weUNvbW1vbk1ldGFkYXRhCisKK1NPRlRfTElO
S19ETExfSU1QT1JUKEFWRm91bmRhdGlvbkNGLCBBVkNGTWVkaWFTZWxlY3Rpb25PcHRpb25Db3B5
TG9jYWxlLCBDRkxvY2FsZVJlZiwgX19jZGVjbCwgKEFWQ0ZNZWRpYVNlbGVjdGlvbk9wdGlvblJl
ZiBzZWxlY3Rpb25PcHRpb24pLCAoc2VsZWN0aW9uT3B0aW9uKSkKKyNkZWZpbmUgQVZDRk1lZGlh
U2VsZWN0aW9uT3B0aW9uQ29weUxvY2FsZSBzb2Z0TGlua19BVkNGTWVkaWFTZWxlY3Rpb25PcHRp
b25Db3B5TG9jYWxlCisKK1NPRlRfTElOS19ETExfSU1QT1JUKEFWRm91bmRhdGlvbkNGLCBBVkNG
TWVkaWFTZWxlY3Rpb25PcHRpb25HZXRNZWRpYVR5cGUsIENGU3RyaW5nUmVmLCBfX2NkZWNsLCAo
QVZDRk1lZGlhU2VsZWN0aW9uT3B0aW9uUmVmIHNlbGVjdGlvbk9wdGlvbiksIChzZWxlY3Rpb25P
cHRpb24pKQorI2RlZmluZSBBVkNGTWVkaWFTZWxlY3Rpb25PcHRpb25HZXRNZWRpYVR5cGUgc29m
dExpbmtfQVZDRk1lZGlhU2VsZWN0aW9uT3B0aW9uR2V0TWVkaWFUeXBlCisKK1NPRlRfTElOS19E
TExfSU1QT1JUKEFWRm91bmRhdGlvbkNGLCBBVkNGTWVkaWFTZWxlY3Rpb25PcHRpb25IYXNNZWRp
YUNoYXJhY3RlcmlzdGljLCBCb29sZWFuLCBfX2NkZWNsLCAoQVZDRk1lZGlhU2VsZWN0aW9uT3B0
aW9uUmVmIHNlbGVjdGlvbk9wdGlvbiwgQ0ZTdHJpbmdSZWYgbWVkaWFDaGFyYWN0ZXJpc3RpYyks
IChzZWxlY3Rpb25PcHRpb24sIG1lZGlhQ2hhcmFjdGVyaXN0aWMpKQorI2RlZmluZSBBVkNGTWVk
aWFTZWxlY3Rpb25PcHRpb25IYXNNZWRpYUNoYXJhY3RlcmlzdGljIHNvZnRMaW5rX0FWQ0ZNZWRp
YVNlbGVjdGlvbk9wdGlvbkhhc01lZGlhQ2hhcmFjdGVyaXN0aWMKKworU09GVF9MSU5LX0RMTF9J
TVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZNZWRpYVNlbGVjdGlvbkdyb3VwQWxsb3dzRW1wdHlT
ZWxlY3Rpb24sIEJvb2xlYW4sIF9fY2RlY2wsIChBVkNGTWVkaWFTZWxlY3Rpb25Hcm91cFJlZiBz
ZWxlY3Rpb25Hcm91cCksIChzZWxlY3Rpb25Hcm91cCkpCisjZGVmaW5lIEFWQ0ZNZWRpYVNlbGVj
dGlvbkdyb3VwQWxsb3dzRW1wdHlTZWxlY3Rpb24gc29mdExpbmtfQVZDRk1lZGlhU2VsZWN0aW9u
R3JvdXBBbGxvd3NFbXB0eVNlbGVjdGlvbgorCitTT0ZUX0xJTktfRExMX0lNUE9SVChBVkZvdW5k
YXRpb25DRiwgQVZDRk1lZGlhU2VsZWN0aW9uR3JvdXBHZXRPcHRpb25zLCBDRkFycmF5UmVmLCBf
X2NkZWNsLCAoQVZDRk1lZGlhU2VsZWN0aW9uR3JvdXBSZWYgc2VsZWN0aW9uR3JvdXApLCAoc2Vs
ZWN0aW9uR3JvdXApKQorI2RlZmluZSBBVkNGTWVkaWFTZWxlY3Rpb25Hcm91cEdldE9wdGlvbnMg
c29mdExpbmtfQVZDRk1lZGlhU2VsZWN0aW9uR3JvdXBHZXRPcHRpb25zCisKK1NPRlRfTElOS19E
TExfSU1QT1JUKEFWRm91bmRhdGlvbkNGLCBBVkNGUGxheWVySXRlbUFkZE91dHB1dCwgdm9pZCwg
X19jZGVjbCwgKEFWQ0ZQbGF5ZXJJdGVtUmVmIHBsYXllckl0ZW0sIEFWQ0ZQbGF5ZXJJdGVtT3V0
cHV0UmVmIG91dHB1dCksIChwbGF5ZXJJdGVtLCBvdXRwdXQpKQorI2RlZmluZSBBVkNGUGxheWVy
SXRlbUFkZE91dHB1dCBzb2Z0TGlua19BVkNGUGxheWVySXRlbUFkZE91dHB1dAorCitTT0ZUX0xJ
TktfRExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZDRlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0
Q3JlYXRlV2l0aE1lZGlhU3VidHlwZXNGb3JOYXRpdmVSZXByZXNlbnRhdGlvbiwgQVZDRlBsYXll
ckl0ZW1MZWdpYmxlT3V0cHV0UmVmLCBfX2NkZWNsLCAoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9y
LCBDRkFycmF5UmVmIHN1YnR5cGVzKSwgKGFsbG9jYXRvciwgc3VidHlwZXMpKQorI2RlZmluZSBB
VkNGUGxheWVySXRlbUxlZ2libGVPdXRwdXRDcmVhdGVXaXRoTWVkaWFTdWJ0eXBlc0Zvck5hdGl2
ZVJlcHJlc2VudGF0aW9uIHNvZnRMaW5rX0FWQ0ZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1dENyZWF0
ZVdpdGhNZWRpYVN1YnR5cGVzRm9yTmF0aXZlUmVwcmVzZW50YXRpb24KKworU09GVF9MSU5LX0RM
TF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZQbGF5ZXJJdGVtR2V0U2VsZWN0ZWRNZWRpYU9w
dGlvbkluTWVkaWFTZWxlY3Rpb25Hcm91cCwgQVZDRk1lZGlhU2VsZWN0aW9uT3B0aW9uUmVmLCBf
X2NkZWNsLCAoQVZDRlBsYXllckl0ZW1SZWYgcGxheWVySXRlbSwgQVZDRk1lZGlhU2VsZWN0aW9u
R3JvdXBSZWYgc2VsZWN0aW9uR3JvdXApLCAocGxheWVySXRlbSwgc2VsZWN0aW9uR3JvdXApKQor
I2RlZmluZSBBVkNGUGxheWVySXRlbUdldFNlbGVjdGVkTWVkaWFPcHRpb25Jbk1lZGlhU2VsZWN0
aW9uR3JvdXAgc29mdExpbmtfQVZDRlBsYXllckl0ZW1HZXRTZWxlY3RlZE1lZGlhT3B0aW9uSW5N
ZWRpYVNlbGVjdGlvbkdyb3VwCisKK1NPRlRfTElOS19ETExfSU1QT1JUKEFWRm91bmRhdGlvbkNG
LCBBVkNGUGxheWVySXRlbUxlZ2libGVPdXRwdXRTZXRBZHZhbmNlSW50ZXJ2YWxGb3JDYWxsYmFj
a0ludm9jYXRpb24sIHZvaWQsIF9fY2RlY2wsIChBVkNGUGxheWVySXRlbUxlZ2libGVPdXRwdXRS
ZWYgbGVnaWJsZU91dHB1dCwgQ0ZUaW1lSW50ZXJ2YWwgdGltZUludGVydmFsKSwgKGxlZ2libGVP
dXRwdXQsIHRpbWVJbnRlcnZhbCkpCisjZGVmaW5lIEFWQ0ZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1
dFNldEFkdmFuY2VJbnRlcnZhbEZvckNhbGxiYWNrSW52b2NhdGlvbiBzb2Z0TGlua19BVkNGUGxh
eWVySXRlbUxlZ2libGVPdXRwdXRTZXRBZHZhbmNlSW50ZXJ2YWxGb3JDYWxsYmFja0ludm9jYXRp
b24KKworU09GVF9MSU5LX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZQbGF5ZXJJdGVt
TGVnaWJsZU91dHB1dFNldENhbGxiYWNrcywgdm9pZCwgX19jZGVjbCwgKEFWQ0ZQbGF5ZXJJdGVt
TGVnaWJsZU91dHB1dFJlZiBvdXRwdXQsIGNvbnN0IEFWQ0ZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1
dENhbGxiYWNrcyogY2FsbGJhY2tzLCBkaXNwYXRjaF9xdWV1ZV90IGNhbGxiYWNrUXVldWUpLCAo
b3V0cHV0LCBjYWxsYmFja3MsIGNhbGxiYWNrUXVldWUpKQorI2RlZmluZSBBVkNGUGxheWVySXRl
bUxlZ2libGVPdXRwdXRTZXRDYWxsYmFja3Mgc29mdExpbmtfQVZDRlBsYXllckl0ZW1MZWdpYmxl
T3V0cHV0U2V0Q2FsbGJhY2tzCisKK1NPRlRfTElOS19ETExfSU1QT1JUKEFWRm91bmRhdGlvbkNG
LCBBVkNGUGxheWVySXRlbUxlZ2libGVPdXRwdXRTZXRUZXh0U3R5bGluZ1Jlc29sdXRpb24sIHZv
aWQsIF9fY2RlY2wsIChBVkNGUGxheWVySXRlbUxlZ2libGVPdXRwdXRSZWYgb3V0cHV0LCBDRlN0
cmluZ1JlZiB0ZXh0U3R5bGluZ1Jlc29sdXRpb24pLCAob3V0cHV0LCB0ZXh0U3R5bGluZ1Jlc29s
dXRpb24pKQorI2RlZmluZSBBVkNGUGxheWVySXRlbUxlZ2libGVPdXRwdXRTZXRUZXh0U3R5bGlu
Z1Jlc29sdXRpb24gc29mdExpbmtfQVZDRlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0U2V0VGV4dFN0
eWxpbmdSZXNvbHV0aW9uCisKK1NPRlRfTElOS19ETExfSU1QT1JUKEFWRm91bmRhdGlvbkNGLCBB
VkNGUGxheWVySXRlbU91dHB1dFNldFN1cHByZXNzUGxheWVyUmVuZGVyaW5nLCB2b2lkLCBfX2Nk
ZWNsLCAoQVZDRlBsYXllckl0ZW1PdXRwdXRSZWYgb3V0cHV0LCBCb29sZWFuIHN1cHByZXNzZWQp
LCAob3V0cHV0LCBzdXBwcmVzc2VkKSkKKyNkZWZpbmUgQVZDRlBsYXllckl0ZW1PdXRwdXRTZXRT
dXBwcmVzc1BsYXllclJlbmRlcmluZyBzb2Z0TGlua19BVkNGUGxheWVySXRlbU91dHB1dFNldFN1
cHByZXNzUGxheWVyUmVuZGVyaW5nCisKK1NPRlRfTElOS19ETExfSU1QT1JUKEFWRm91bmRhdGlv
bkNGLCBBVkNGUGxheWVySXRlbVNlbGVjdE1lZGlhT3B0aW9uSW5NZWRpYVNlbGVjdGlvbkdyb3Vw
LCB2b2lkLCBfX2NkZWNsLCAoQVZDRlBsYXllckl0ZW1SZWYgcGxheWVySXRlbSwgQVZDRk1lZGlh
U2VsZWN0aW9uT3B0aW9uUmVmIHNlbGVjdGlvbk9wdGlvbiwgQVZDRk1lZGlhU2VsZWN0aW9uR3Jv
dXBSZWYgc2VsZWN0aW9uR3JvdXApLCAocGxheWVySXRlbSwgc2VsZWN0aW9uT3B0aW9uLCBzZWxl
Y3Rpb25Hcm91cCkpCisjZGVmaW5lIEFWQ0ZQbGF5ZXJJdGVtU2VsZWN0TWVkaWFPcHRpb25Jbk1l
ZGlhU2VsZWN0aW9uR3JvdXAgc29mdExpbmtfQVZDRlBsYXllckl0ZW1TZWxlY3RNZWRpYU9wdGlv
bkluTWVkaWFTZWxlY3Rpb25Hcm91cAorCisjZW5kaWYKKwogLy8gVmFyaWFibGVzCiAKIFNPRlRf
TElOS19WQVJJQUJMRV9ETExfSU1QT1JUKEFWRm91bmRhdGlvbkNGLCBBVkNGQXNzZXRJbWFnZUdl
bmVyYXRvckFwZXJ0dXJlTW9kZUNsZWFuQXBlcnR1cmUsIGNvbnN0IENGU3RyaW5nUmVmKTsKQEAg
LTIxNyw5ICszMDUsMTggQEAgU09GVF9MSU5LX1ZBUklBQkxFX0RMTF9JTVBPUlQoQVZGb3VuZGF0
aQogU09GVF9MSU5LX1ZBUklBQkxFX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZNZWRp
YVR5cGVWaWRlbywgY29uc3QgQ0ZTdHJpbmdSZWYpOwogI2RlZmluZSBBVkNGTWVkaWFUeXBlVmlk
ZW8gZ2V0X0FWQ0ZNZWRpYVR5cGVWaWRlbygpCiAKK1NPRlRfTElOS19WQVJJQUJMRV9ETExfSU1Q
T1JUKEFWRm91bmRhdGlvbkNGLCBBVkNGTWV0YWRhdGFDb21tb25LZXlUaXRsZSwgY29uc3QgQ0ZT
dHJpbmdSZWYpOworI2RlZmluZSBBVkNGTWV0YWRhdGFDb21tb25LZXlUaXRsZSBnZXRfQVZDRk1l
dGFkYXRhQ29tbW9uS2V5VGl0bGUoKQorCitTT0ZUX0xJTktfVkFSSUFCTEVfRExMX0lNUE9SVChB
VkZvdW5kYXRpb25DRiwgQVZDRk1ldGFkYXRhS2V5U3BhY2VDb21tb24sIGNvbnN0IENGU3RyaW5n
UmVmKTsKKyNkZWZpbmUgQVZDRk1ldGFkYXRhS2V5U3BhY2VDb21tb24gZ2V0X0FWQ0ZNZXRhZGF0
YUtleVNwYWNlQ29tbW9uKCkKKwogU09GVF9MSU5LX1ZBUklBQkxFX0RMTF9JTVBPUlQoQVZGb3Vu
ZGF0aW9uQ0YsIEFWQ0ZQbGF5ZXJJdGVtRGlkUGxheVRvRW5kVGltZU5vdGlmaWNhdGlvbiwgY29u
c3QgQ0ZTdHJpbmdSZWYpOwogI2RlZmluZSBBVkNGUGxheWVySXRlbURpZFBsYXlUb0VuZFRpbWVO
b3RpZmljYXRpb24gZ2V0X0FWQ0ZQbGF5ZXJJdGVtRGlkUGxheVRvRW5kVGltZU5vdGlmaWNhdGlv
bigpCiAKK1NPRlRfTElOS19WQVJJQUJMRV9ETExfSU1QT1JUKEFWRm91bmRhdGlvbkNGLCBBVkNG
UGxheWVySXRlbUR1cmF0aW9uQ2hhbmdlZE5vdGlmaWNhdGlvbiwgY29uc3QgQ0ZTdHJpbmdSZWYp
OworI2RlZmluZSBBVkNGUGxheWVySXRlbUR1cmF0aW9uQ2hhbmdlZE5vdGlmaWNhdGlvbiBnZXRf
QVZDRlBsYXllckl0ZW1EdXJhdGlvbkNoYW5nZWROb3RpZmljYXRpb24oKQorCiBTT0ZUX0xJTktf
VkFSSUFCTEVfRExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZDRlBsYXllckl0ZW1Jc1BsYXli
YWNrQnVmZmVyRW1wdHlDaGFuZ2VkTm90aWZpY2F0aW9uLCBjb25zdCBDRlN0cmluZ1JlZik7CiAj
ZGVmaW5lIEFWQ0ZQbGF5ZXJJdGVtSXNQbGF5YmFja0J1ZmZlckVtcHR5Q2hhbmdlZE5vdGlmaWNh
dGlvbiBnZXRfQVZDRlBsYXllckl0ZW1Jc1BsYXliYWNrQnVmZmVyRW1wdHlDaGFuZ2VkTm90aWZp
Y2F0aW9uKCkKIApAQCAtMjQ5LDMgKzM0NiwzNyBAQCBTT0ZUX0xJTktfVkFSSUFCTEVfRExMX0lN
UE9SVChBVkZvdW5kYXRpCiAKIFNPRlRfTElOS19WQVJJQUJMRV9ETExfSU1QT1JUX09QVElPTkFM
KEFWRm91bmRhdGlvbkNGLCBBVkNGUGxheWVyRW5hYmxlSGFyZHdhcmVBY2NlbGVyYXRlZFZpZGVv
RGVjb2RlcktleSwgY29uc3QgQ0ZTdHJpbmdSZWYpOwogI2RlZmluZSBBVkNGUGxheWVyRW5hYmxl
SGFyZHdhcmVBY2NlbGVyYXRlZFZpZGVvRGVjb2RlcktleSBnZXRfQVZDRlBsYXllckVuYWJsZUhh
cmR3YXJlQWNjZWxlcmF0ZWRWaWRlb0RlY29kZXJLZXkoKQorCisjaWYgSEFWRShBVkZPVU5EQVRJ
T05fTUVESUFfU0VMRUNUSU9OX0dST1VQKSAmJiBIQVZFKEFWRk9VTkRBVElPTl9MRUdJQkxFX09V
VFBVVF9TVVBQT1JUKQorCitTT0ZUX0xJTktfVkFSSUFCTEVfRExMX0lNUE9SVChBVkZvdW5kYXRp
b25DRiwgQVZDRkFzc2V0UHJvcGVydHlBdmFpbGFibGVNZWRpYUNoYXJhY3RlcmlzdGljc1dpdGhN
ZWRpYVNlbGVjdGlvbk9wdGlvbnMsIGNvbnN0IENGU3RyaW5nUmVmKTsKKyNkZWZpbmUgQVZDRkFz
c2V0UHJvcGVydHlBdmFpbGFibGVNZWRpYUNoYXJhY3RlcmlzdGljc1dpdGhNZWRpYVNlbGVjdGlv
bk9wdGlvbnMgIGdldF9BVkNGQXNzZXRQcm9wZXJ0eUF2YWlsYWJsZU1lZGlhQ2hhcmFjdGVyaXN0
aWNzV2l0aE1lZGlhU2VsZWN0aW9uT3B0aW9ucygpCisKK1NPRlRfTElOS19WQVJJQUJMRV9ETExf
SU1QT1JUKEFWRm91bmRhdGlvbkNGLCBBVkNGTWVkaWFDaGFyYWN0ZXJpc3RpY0Vhc3lUb1JlYWQs
IGNvbnN0IENGU3RyaW5nUmVmKTsKKyNkZWZpbmUgQVZDRk1lZGlhQ2hhcmFjdGVyaXN0aWNFYXN5
VG9SZWFkIGdldF9BVkNGTWVkaWFDaGFyYWN0ZXJpc3RpY0Vhc3lUb1JlYWQoKQorCitTT0ZUX0xJ
TktfVkFSSUFCTEVfRExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZDRk1lZGlhQ2hhcmFjdGVy
aXN0aWNDb250YWluc09ubHlGb3JjZWRTdWJ0aXRsZXMsIGNvbnN0IENGU3RyaW5nUmVmKTsKKyNk
ZWZpbmUgQVZDRk1lZGlhQ2hhcmFjdGVyaXN0aWNDb250YWluc09ubHlGb3JjZWRTdWJ0aXRsZXMg
Z2V0X0FWQ0ZNZWRpYUNoYXJhY3RlcmlzdGljQ29udGFpbnNPbmx5Rm9yY2VkU3VidGl0bGVzKCkK
KworU09GVF9MSU5LX1ZBUklBQkxFX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZNZWRp
YUNoYXJhY3RlcmlzdGljRGVzY3JpYmVzTXVzaWNBbmRTb3VuZEZvckFjY2Vzc2liaWxpdHksIGNv
bnN0IENGU3RyaW5nUmVmKTsKKyNkZWZpbmUgQVZDRk1lZGlhQ2hhcmFjdGVyaXN0aWNEZXNjcmli
ZXNNdXNpY0FuZFNvdW5kRm9yQWNjZXNzaWJpbGl0eSBnZXRfQVZDRk1lZGlhQ2hhcmFjdGVyaXN0
aWNEZXNjcmliZXNNdXNpY0FuZFNvdW5kRm9yQWNjZXNzaWJpbGl0eSgpCisKK1NPRlRfTElOS19W
QVJJQUJMRV9ETExfSU1QT1JUKEFWRm91bmRhdGlvbkNGLCBBVkNGTWVkaWFDaGFyYWN0ZXJpc3Rp
Y0lzTWFpblByb2dyYW1Db250ZW50LCBjb25zdCBDRlN0cmluZ1JlZik7CisjZGVmaW5lIEFWQ0ZN
ZWRpYUNoYXJhY3RlcmlzdGljSXNNYWluUHJvZ3JhbUNvbnRlbnQgZ2V0X0FWQ0ZNZWRpYUNoYXJh
Y3RlcmlzdGljSXNNYWluUHJvZ3JhbUNvbnRlbnQoKQorCitTT0ZUX0xJTktfVkFSSUFCTEVfRExM
X0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZDRk1lZGlhQ2hhcmFjdGVyaXN0aWNMZWdpYmxlLCBj
b25zdCBDRlN0cmluZ1JlZik7CisjZGVmaW5lIEFWQ0ZNZWRpYUNoYXJhY3RlcmlzdGljTGVnaWJs
ZSBnZXRfQVZDRk1lZGlhQ2hhcmFjdGVyaXN0aWNMZWdpYmxlKCkKKworU09GVF9MSU5LX1ZBUklB
QkxFX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZNZWRpYUNoYXJhY3RlcmlzdGljVHJh
bnNjcmliZXNTcG9rZW5EaWFsb2dGb3JBY2Nlc3NpYmlsaXR5LCBjb25zdCBDRlN0cmluZ1JlZik7
CisjZGVmaW5lIEFWQ0ZNZWRpYUNoYXJhY3RlcmlzdGljVHJhbnNjcmliZXNTcG9rZW5EaWFsb2dG
b3JBY2Nlc3NpYmlsaXR5IGdldF9BVkNGTWVkaWFDaGFyYWN0ZXJpc3RpY1RyYW5zY3JpYmVzU3Bv
a2VuRGlhbG9nRm9yQWNjZXNzaWJpbGl0eSgpCisKK1NPRlRfTElOS19WQVJJQUJMRV9ETExfSU1Q
T1JUKEFWRm91bmRhdGlvbkNGLCBBVkNGTWVkaWFUeXBlU3VidGl0bGUsIGNvbnN0IENGU3RyaW5n
UmVmKTsKKyNkZWZpbmUgQVZDRk1lZGlhVHlwZVN1YnRpdGxlIGdldF9BVkNGTWVkaWFUeXBlU3Vi
dGl0bGUoKQorCitTT0ZUX0xJTktfVkFSSUFCTEVfRExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwg
QVZDRlBsYXllckFwcGxpZXNNZWRpYVNlbGVjdGlvbkNyaXRlcmlhQXV0b21hdGljYWxseUtleSwg
Y29uc3QgQ0ZTdHJpbmdSZWYpOworI2RlZmluZSBBVkNGUGxheWVyQXBwbGllc01lZGlhU2VsZWN0
aW9uQ3JpdGVyaWFBdXRvbWF0aWNhbGx5S2V5IGdldF9BVkNGUGxheWVyQXBwbGllc01lZGlhU2Vs
ZWN0aW9uQ3JpdGVyaWFBdXRvbWF0aWNhbGx5S2V5KCkKKworU09GVF9MSU5LX1ZBUklBQkxFX0RM
TF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1dFRleHRT
dHlsaW5nUmVzb2x1dGlvblNvdXJjZUFuZFJ1bGVzT25seSwgY29uc3QgQ0ZTdHJpbmdSZWYpOwor
I2RlZmluZSBBVkNGUGxheWVySXRlbUxlZ2libGVPdXRwdXRUZXh0U3R5bGluZ1Jlc29sdXRpb25T
b3VyY2VBbmRSdWxlc09ubHkgZ2V0X0FWQ0ZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1dFRleHRTdHls
aW5nUmVzb2x1dGlvblNvdXJjZUFuZFJ1bGVzT25seSgpCisKKyNlbmRpZgpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0NvcmVNZWRpYVNvZnRM
aW5raW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL2NmL0NvcmVNZWRpYVNvZnRMaW5raW5nLmgJKHJldmlzaW9uIDE1Mjc0NykK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9Db3Jl
TWVkaWFTb2Z0TGlua2luZy5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw2ICs1Myw5IEBAIFNPRlRf
TElOS19ETExfSU1QT1JUKENvcmVNZWRpYSwgQ01UaW1lTWEKIFNPRlRfTElOS19ETExfSU1QT1JU
KENvcmVNZWRpYSwgQ01UaW1lTWFrZVdpdGhTZWNvbmRzLCBDTVRpbWUsIF9fY2RlY2wsIChGbG9h
dDY0IHNlY29uZHMsIGludDMyX3QgcHJlZmVycmVkVGltZVNjYWxlKSwgKHNlY29uZHMsIHByZWZl
cnJlZFRpbWVTY2FsZSkpCiAjZGVmaW5lIENNVGltZU1ha2VXaXRoU2Vjb25kcyBzb2Z0TGlua19D
TVRpbWVNYWtlV2l0aFNlY29uZHMKIAorU09GVF9MSU5LX0RMTF9JTVBPUlQoQ29yZU1lZGlhLCBD
TVRpbWVSYW5nZUdldEVuZCwgQ01UaW1lLCBfX2NkZWNsLCAoQ01UaW1lUmFuZ2UgcmFuZ2UpLCAo
cmFuZ2UpKQorI2RlZmluZSBDTVRpbWVSYW5nZUdldEVuZCBzb2Z0TGlua19DTVRpbWVSYW5nZUdl
dEVuZAorCiAvLyBWYXJpYWJsZXMKIAogU09GVF9MSU5LX1ZBUklBQkxFX0RMTF9JTVBPUlQoQ29y
ZU1lZGlhLCBrQ01UaW1lWmVybywgY29uc3QgQ01UaW1lKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2YXRl
QVZDRi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL2NmL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGLmNwcAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9J
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwx
ODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBQTEFURk9STShXSU4p
ICYmIEVOQUJMRShWSURFTykgJiYgSEFWRShBVkZPVU5EQVRJT05fTUVESUFfU0VMRUNUSU9OX0dS
T1VQKQorCisjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0YuaCIKKworI2luY2x1
ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgorI2luY2x1ZGUgIkluYmFuZFRleHRUcmFja1ByaXZhdGUu
aCIKKyNpbmNsdWRlICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmgiCisjaW5jbHVkZSAiTG9n
Z2luZy5oIgorI2luY2x1ZGUgIlNvZnRMaW5raW5nLmgiCisKKyNpbmNsdWRlIDxBVkZvdW5kYXRp
b25DRi9BVkNGUGxheWVySXRlbUxlZ2libGVPdXRwdXQuaD4KKyNpbmNsdWRlIDxBVkZvdW5kYXRp
b25DRi9BVkZvdW5kYXRpb25DRi5oPgorCisjaW5jbHVkZSA8ZDNkOS5oPgorCisvLyBUaGUgc29m
dGxpbmsgaGVhZGVyIGZpbGVzIG11c3QgYmUgaW5jbHVkZWQgYWZ0ZXIgdGhlIEFWQ0YgYW5kIENv
cmVNZWRpYSBoZWFkZXIgZmlsZXMuCisjaW5jbHVkZSAiQVZGb3VuZGF0aW9uQ0ZTb2Z0TGlua2lu
Zy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkNG
OjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRihBVkZJbmJhbmRUcmFja1BhcmVudCogcGxheWVy
LCBBVkNGTWVkaWFTZWxlY3Rpb25PcHRpb25SZWYgc2VsZWN0aW9uKQorICAgIDogSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWRihwbGF5ZXIpCisgICAgLCBtX21lZGlhU2VsZWN0aW9uT3B0aW9uKHNl
bGVjdGlvbikKK3sKK30KKwordm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRjo6ZGlzY29u
bmVjdCgpCit7CisgICAgbV9tZWRpYVNlbGVjdGlvbk9wdGlvbiA9IDA7CisgICAgSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWRjo6ZGlzY29ubmVjdCgpOworfQorCitJbmJhbmRUZXh0VHJhY2tQcml2
YXRlOjpLaW5kIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGOjpraW5kKCkgY29uc3QKK3sKKyAg
ICBpZiAoIW1fbWVkaWFTZWxlY3Rpb25PcHRpb24pCisgICAgICAgIHJldHVybiBJbmJhbmRUZXh0
VHJhY2tQcml2YXRlOjpOb25lOworCisgICAgQ0ZTdHJpbmdSZWYgbWVkaWFUeXBlID0gQVZDRk1l
ZGlhU2VsZWN0aW9uT3B0aW9uR2V0TWVkaWFUeXBlKG1lZGlhU2VsZWN0aW9uT3B0aW9uKCkpOwor
ICAgIAorICAgIGlmIChDRlN0cmluZ0NvbXBhcmUobWVkaWFUeXBlLCBBVkNGTWVkaWFUeXBlQ2xv
c2VkQ2FwdGlvbiwga0NGQ29tcGFyZUNhc2VJbnNlbnNpdGl2ZSkgPT0ga0NGQ29tcGFyZUVxdWFs
VG8pCisgICAgICAgIHJldHVybiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpDYXB0aW9uczsKKyAg
ICBpZiAoQ0ZTdHJpbmdDb21wYXJlKG1lZGlhVHlwZSwgQVZDRk1lZGlhVHlwZVN1YnRpdGxlLCBr
Q0ZDb21wYXJlQ2FzZUluc2Vuc2l0aXZlKSA9PSBrQ0ZDb21wYXJlRXF1YWxUbykgeworICAgICAg
ICBpZiAoQVZDRk1lZGlhU2VsZWN0aW9uT3B0aW9uSGFzTWVkaWFDaGFyYWN0ZXJpc3RpYyhtZWRp
YVNlbGVjdGlvbk9wdGlvbigpLCBBVkNGTWVkaWFDaGFyYWN0ZXJpc3RpY0NvbnRhaW5zT25seUZv
cmNlZFN1YnRpdGxlcykpCisgICAgICAgICAgICByZXR1cm4gSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZTo6Rm9yY2VkOworCisgICAgICAgIC8vIEFuICJTREgiIHRyYWNrIGlzIGEgc3VidGl0bGUgdHJh
Y2sgY3JlYXRlZCBmb3IgdGhlIGRlYWYgb3IgaGFyZC1vZi1oZWFyaW5nLiAiY2FwdGlvbnMiIGlu
IFdlYlZUVCBhcmUKKyAgICAgICAgLy8gImxhYmVsZWQgYXMgYXBwcm9wcmlhdGUgZm9yIHRoZSBo
YXJkLW9mLWhlYXJpbmciLCBzbyB0YWcgU0RIIHN1dGl0bGVzIGFzICJjYXB0aW9ucyIuCisgICAg
ICAgIGlmIChBVkNGTWVkaWFTZWxlY3Rpb25PcHRpb25IYXNNZWRpYUNoYXJhY3RlcmlzdGljKG1l
ZGlhU2VsZWN0aW9uT3B0aW9uKCksIEFWQ0ZNZWRpYUNoYXJhY3RlcmlzdGljVHJhbnNjcmliZXNT
cG9rZW5EaWFsb2dGb3JBY2Nlc3NpYmlsaXR5KSkKKyAgICAgICAgICAgIHJldHVybiBJbmJhbmRU
ZXh0VHJhY2tQcml2YXRlOjpDYXB0aW9uczsKKyAgICAgICAgaWYgKEFWQ0ZNZWRpYVNlbGVjdGlv
bk9wdGlvbkhhc01lZGlhQ2hhcmFjdGVyaXN0aWMobWVkaWFTZWxlY3Rpb25PcHRpb24oKSwgQVZD
Rk1lZGlhQ2hhcmFjdGVyaXN0aWNEZXNjcmliZXNNdXNpY0FuZFNvdW5kRm9yQWNjZXNzaWJpbGl0
eSkpCisgICAgICAgICAgICByZXR1cm4gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6Q2FwdGlvbnM7
CisgICAgICAgIAorICAgICAgICByZXR1cm4gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6U3VidGl0
bGVzOworICAgIH0KKworICAgIHJldHVybiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpDYXB0aW9u
czsKK30KKworYm9vbCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRjo6aXNDbG9zZWRDYXB0aW9u
cygpIGNvbnN0Cit7CisgICAgaWYgKCFtX21lZGlhU2VsZWN0aW9uT3B0aW9uKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBDRlN0cmluZ1JlZiBtZWRpYVR5cGUgPSBBVkNGTWVkaWFTZWxl
Y3Rpb25PcHRpb25HZXRNZWRpYVR5cGUobWVkaWFTZWxlY3Rpb25PcHRpb24oKSk7CisKKyAgICBy
ZXR1cm4gKENGU3RyaW5nQ29tcGFyZShtZWRpYVR5cGUsIEFWQ0ZNZWRpYVR5cGVDbG9zZWRDYXB0
aW9uLCBrQ0ZDb21wYXJlQ2FzZUluc2Vuc2l0aXZlKSA9PSBrQ0ZDb21wYXJlRXF1YWxUbyk7Cit9
CisKK2Jvb2wgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0Y6OmlzU0RIKCkgY29uc3QKK3sKKyAg
ICBpZiAoIW1fbWVkaWFTZWxlY3Rpb25PcHRpb24pCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAKKyAgICBDRlN0cmluZ1JlZiBtZWRpYVR5cGUgPSBBVkNGTWVkaWFTZWxlY3Rpb25PcHRpb25H
ZXRNZWRpYVR5cGUobWVkaWFTZWxlY3Rpb25PcHRpb24oKSk7CisKKyAgICBpZiAoQ0ZTdHJpbmdD
b21wYXJlKG1lZGlhVHlwZSwgQVZDRk1lZGlhVHlwZVN1YnRpdGxlLCBrQ0ZDb21wYXJlQ2FzZUlu
c2Vuc2l0aXZlKSAhPSBrQ0ZDb21wYXJlRXF1YWxUbykKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgaWYgKEFWQ0ZNZWRpYVNlbGVjdGlvbk9wdGlvbkhhc01lZGlhQ2hhcmFjdGVyaXN0aWMo
bWVkaWFTZWxlY3Rpb25PcHRpb24oKSwgQVZDRk1lZGlhQ2hhcmFjdGVyaXN0aWNUcmFuc2NyaWJl
c1Nwb2tlbkRpYWxvZ0ZvckFjY2Vzc2liaWxpdHkpCisgICAgICAgICYmIEFWQ0ZNZWRpYVNlbGVj
dGlvbk9wdGlvbkhhc01lZGlhQ2hhcmFjdGVyaXN0aWMobWVkaWFTZWxlY3Rpb25PcHRpb24oKSwg
QVZDRk1lZGlhQ2hhcmFjdGVyaXN0aWNEZXNjcmliZXNNdXNpY0FuZFNvdW5kRm9yQWNjZXNzaWJp
bGl0eSkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIGZhbHNlOworfQorICAg
IAorYm9vbCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRjo6Y29udGFpbnNPbmx5Rm9yY2VkU3Vi
dGl0bGVzKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fbWVkaWFTZWxlY3Rpb25PcHRpb24pCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICByZXR1cm4gQVZDRk1lZGlhU2VsZWN0aW9uT3B0
aW9uSGFzTWVkaWFDaGFyYWN0ZXJpc3RpYyhtZWRpYVNlbGVjdGlvbk9wdGlvbigpLCBBVkNGTWVk
aWFDaGFyYWN0ZXJpc3RpY0NvbnRhaW5zT25seUZvcmNlZFN1YnRpdGxlcyk7Cit9CisKK2Jvb2wg
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0Y6OmlzTWFpblByb2dyYW1Db250ZW50KCkgY29uc3QK
K3sKKyAgICBpZiAoIW1fbWVkaWFTZWxlY3Rpb25PcHRpb24pCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAKKyAgICByZXR1cm4gQVZDRk1lZGlhU2VsZWN0aW9uT3B0aW9uSGFzTWVkaWFDaGFy
YWN0ZXJpc3RpYyhtZWRpYVNlbGVjdGlvbk9wdGlvbigpLCBBVkNGTWVkaWFDaGFyYWN0ZXJpc3Rp
Y0lzTWFpblByb2dyYW1Db250ZW50KTsKK30KKworYm9vbCBJbmJhbmRUZXh0VHJhY2tQcml2YXRl
QVZDRjo6aXNFYXN5VG9SZWFkKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fbWVkaWFTZWxlY3Rpb25P
cHRpb24pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBBVkNGTWVkaWFTZWxl
Y3Rpb25PcHRpb25IYXNNZWRpYUNoYXJhY3RlcmlzdGljKG1lZGlhU2VsZWN0aW9uT3B0aW9uKCks
IEFWQ0ZNZWRpYUNoYXJhY3RlcmlzdGljRWFzeVRvUmVhZCk7Cit9CisKK0F0b21pY1N0cmluZyBJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRjo6bGFiZWwoKSBjb25zdAoreworICAgIGlmICghbV9t
ZWRpYVNlbGVjdGlvbk9wdGlvbikKKyAgICAgICAgcmV0dXJuIGVtcHR5QXRvbTsKKworICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gdGl0bGU7CisKKyAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4g
Y29tbW9uTWV0YURhdGEgPSBhZG9wdENGKEFWQ0ZNZWRpYVNlbGVjdGlvbk9wdGlvbkNvcHlDb21t
b25NZXRhZGF0YShtZWRpYVNlbGVjdGlvbk9wdGlvbigpKSk7CisgICAgUmV0YWluUHRyPENGQXJy
YXlSZWY+IHRpdGxlcyA9IGFkb3B0Q0YoQVZDRk1ldGFkYXRhSXRlbUNvcHlJdGVtc1dpdGhLZXlB
bmRLZXlTcGFjZShjb21tb25NZXRhRGF0YS5nZXQoKSwgQVZDRk1ldGFkYXRhQ29tbW9uS2V5VGl0
bGUsIEFWQ0ZNZXRhZGF0YUtleVNwYWNlQ29tbW9uKSk7CisgICAgQ0ZJbmRleCB0aXRsZXNDb3Vu
dCA9IENGQXJyYXlHZXRDb3VudCh0aXRsZXMuZ2V0KCkpOworICAgIGlmICh0aXRsZXNDb3VudCkg
eworICAgICAgICAvLyBJZiBwb3NzaWJsZSwgcmV0dXJuIGEgdGl0bGUgaW4gb25lIG9mIHRoZSB1
c2VyJ3MgcHJlZmVycmVkIGxhbmd1YWdlcy4KKyAgICAgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+
IHByZWZlcnJlZExhbmd1YWdlcyA9IENGTG9jYWxlQ29weVByZWZlcnJlZExhbmd1YWdlcygpOwor
ICAgICAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gdGl0bGVzRm9yUHJlZmVycmVkTGFuZ3VhZ2Vz
ID0gQVZDRk1lZGlhU2VsZWN0aW9uQ29weU9wdGlvbnNGcm9tQXJyYXlGaWx0ZXJlZEFuZFNvcnRl
ZEFjY29yZGluZ1RvUHJlZmVycmVkTGFuZ3VhZ2VzKHRpdGxlcy5nZXQoKSwgcHJlZmVycmVkTGFu
Z3VhZ2VzLmdldCgpKTsKKyAgICAgICAgQ0ZJbmRleCBwcmVmZXJyZWRUaXRsZXNDb3VudCA9IENG
QXJyYXlHZXRDb3VudCh0aXRsZXNGb3JQcmVmZXJyZWRMYW5ndWFnZXMuZ2V0KCkpOworICAgICAg
ICBpZiAocHJlZmVycmVkVGl0bGVzQ291bnQpIHsKKyAgICAgICAgICAgIEFWQ0ZNZXRhZGF0YUl0
ZW1SZWYgdGl0bGVNZXRhZGF0YSA9IHN0YXRpY19jYXN0PEFWQ0ZNZXRhZGF0YUl0ZW1SZWY+KENG
QXJyYXlHZXRWYWx1ZUF0SW5kZXgodGl0bGVzRm9yUHJlZmVycmVkTGFuZ3VhZ2VzLmdldCgpLCAw
KSk7CisgICAgICAgICAgICB0aXRsZSA9IGFkb3B0Q0YoQVZDRk1ldGFkYXRhSXRlbUNvcHlTdHJp
bmdWYWx1ZSh0aXRsZU1ldGFkYXRhKSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXRpdGxl
KSB7CisgICAgICAgICAgICBBVkNGTWV0YWRhdGFJdGVtUmVmIHRpdGxlTWV0YWRhdGEgPSBzdGF0
aWNfY2FzdDxBVkNGTWV0YWRhdGFJdGVtUmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KHRpdGxl
cy5nZXQoKSwgMCkpOworICAgICAgICAgICAgdGl0bGUgPSBhZG9wdENGKEFWQ0ZNZXRhZGF0YUl0
ZW1Db3B5U3RyaW5nVmFsdWUodGl0bGVNZXRhZGF0YSkpOworICAgICAgICB9CisgICAgfQorCisg
ICAgcmV0dXJuIHRpdGxlID8gQXRvbWljU3RyaW5nKHRpdGxlLmdldCgpKSA6IGVtcHR5QXRvbTsK
K30KKworQXRvbWljU3RyaW5nIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGOjpsYW5ndWFnZSgp
IGNvbnN0Cit7CisgICAgaWYgKCFtX21lZGlhU2VsZWN0aW9uT3B0aW9uKQorICAgICAgICByZXR1
cm4gZW1wdHlBdG9tOworCisgICAgUmV0YWluUHRyPENGTG9jYWxlUmVmPiBsb2NhbGUgPSBhZG9w
dENGKEFWQ0ZNZWRpYVNlbGVjdGlvbk9wdGlvbkNvcHlMb2NhbGUobWVkaWFTZWxlY3Rpb25PcHRp
b24oKSkpOworICAgIHJldHVybiBDRkxvY2FsZUdldElkZW50aWZpZXIobG9jYWxlLmdldCgpKTsK
K30KKworYm9vbCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRjo6aXNEZWZhdWx0KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
Y2YvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0YuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUFWQ0YuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRi5oCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEluYmFuZFRleHRUcmFj
a1ByaXZhdGVBVkNGX2gKKyNkZWZpbmUgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0ZfaAorCisj
aWYgUExBVEZPUk0oV0lOKSAmJiBFTkFCTEUoVklERU8pICYmIEhBVkUoQVZGT1VOREFUSU9OX01F
RElBX1NFTEVDVElPTl9HUk9VUCkKKworI2luY2x1ZGUgIkluYmFuZFRleHRUcmFja1ByaXZhdGVB
VkYuaCIKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKKyNpbmNsdWRlIDxBVkZvdW5kYXRp
b25DRi9BVkNGUGxheWVySXRlbS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIElu
YmFuZFRleHRUcmFja1ByaXZhdGVBVkNGIDogcHVibGljIEluYmFuZFRleHRUcmFja1ByaXZhdGVB
VkYgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZh
dGVBVkNGPiBjcmVhdGUoQVZGSW5iYW5kVHJhY2tQYXJlbnQqIHBsYXllciwgIEFWQ0ZNZWRpYVNl
bGVjdGlvbk9wdGlvblJlZiBzZWxlY3Rpb24pCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGKHBsYXllciwgc2VsZWN0aW9uKSk7Cisg
ICAgfQorCisgICAgfkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGKCkgeyB9CisKKyAgICB2aXJ0
dWFsIEluYmFuZFRleHRUcmFja1ByaXZhdGU6OktpbmQga2luZCgpIGNvbnN0IE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgYm9vbCBpc0Nsb3NlZENhcHRpb25zKCkgY29uc3QgT1ZFUlJJREU7CisgICAg
dmlydHVhbCBib29sIGlzU0RIKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGNv
bnRhaW5zT25seUZvcmNlZFN1YnRpdGxlcygpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwg
Ym9vbCBpc01haW5Qcm9ncmFtQ29udGVudCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwg
Ym9vbCBpc0Vhc3lUb1JlYWQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEF0b21pY1N0
cmluZyBsYWJlbCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgQXRvbWljU3RyaW5nIGxh
bmd1YWdlKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzRGVmYXVsdCgpIGNv
bnN0IE9WRVJSSURFOworCisgICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3QoKSBPVkVSUklERTsK
KworICAgIHZpcnR1YWwgYm9vbCBpc0xlZ2FjeUNsb3NlZENhcHRpb25zVHJhY2soKSBjb25zdCBP
VkVSUklERSB7IHJldHVybiBmYWxzZTsgfQorCisgICAgQVZDRk1lZGlhU2VsZWN0aW9uT3B0aW9u
UmVmIG1lZGlhU2VsZWN0aW9uT3B0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYVNlbGVjdGlv
bk9wdGlvbi5nZXQoKTsgfQorCitwcm90ZWN0ZWQ6CisgICAgSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUFWQ0YoQVZGSW5iYW5kVHJhY2tQYXJlbnQqLCBBVkNGTWVkaWFTZWxlY3Rpb25PcHRpb25SZWYp
OworICAgIAorICAgIFJldGFpblB0cjxBVkNGTWVkaWFTZWxlY3Rpb25PcHRpb25SZWY+IG1fbWVk
aWFTZWxlY3Rpb25PcHRpb247Cit9OworCit9CisKKyNlbmRpZgorI2VuZGlmCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUxlZ2FjeUFWQ0YuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVn
YWN5QVZDRi5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vY2YvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0YuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorCisjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKSAmJiAhSEFW
RShBVkZPVU5EQVRJT05fTEVHSUJMRV9PVVRQVVRfU1VQUE9SVCkgJiYgIVBMQVRGT1JNKElPUykK
KworI2luY2x1ZGUgIkluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGLmgiCisKKyNpbmNs
dWRlICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgor
I2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmgiCisjaW5jbHVkZSAi
U29mdExpbmtpbmcuaCIKKworI2luY2x1ZGUgPEFWRm91bmRhdGlvbkNGL0FWRm91bmRhdGlvbkNG
Lmg+CisKKyNpbmNsdWRlIDxkM2Q5Lmg+CisKKy8vIFRoZSBzb2Z0bGluayBoZWFkZXIgZmlsZXMg
bXVzdCBiZSBpbmNsdWRlZCBhZnRlciB0aGUgQVZDRiBhbmQgQ29yZU1lZGlhIGhlYWRlciBmaWxl
cy4KKyNpbmNsdWRlICJBVkZvdW5kYXRpb25DRlNvZnRMaW5raW5nLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0Y6OkluYmFuZFRleHRU
cmFja1ByaXZhdGVMZWdhY3lBVkNGKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGKiBw
bGF5ZXIsIEFWQ0ZQbGF5ZXJJdGVtVHJhY2tSZWYgdHJhY2spCisgICAgOiBJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlQVZGKHBsYXllcikKKyAgICAsIG1fcGxheWVySXRlbVRyYWNrKHRyYWNrKQorewor
fQorCit2b2lkIEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGOjpkaXNjb25uZWN0KCkK
K3sKKyAgICBtX3BsYXllckl0ZW1UcmFjayA9IDA7CisgICAgSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUFWRjo6ZGlzY29ubmVjdCgpOworfQorCitJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpLaW5kIElu
YmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGOjpraW5kKCkgY29uc3QKK3sKKyAgICBpZiAo
IW1fcGxheWVySXRlbVRyYWNrKQorICAgICAgICByZXR1cm4gSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZTo6Tm9uZTsKKworICAgIHJldHVybiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpDYXB0aW9uczsK
K30KKworYm9vbCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZDRjo6aXNDbG9zZWRDYXB0
aW9ucygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcGxheWVySXRlbVRyYWNrOworfQorCitib29s
IEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGOjpjb250YWluc09ubHlGb3JjZWRTdWJ0
aXRsZXMoKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBJbmJhbmRUZXh0
VHJhY2tQcml2YXRlTGVnYWN5QVZDRjo6aXNNYWluUHJvZ3JhbUNvbnRlbnQoKSBjb25zdAorewor
ICAgIHJldHVybiBtX3BsYXllckl0ZW1UcmFjazsKK30KKworYm9vbCBJbmJhbmRUZXh0VHJhY2tQ
cml2YXRlTGVnYWN5QVZDRjo6aXNFYXN5VG9SZWFkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK0F0b21pY1N0cmluZyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZDRjo6
bGFiZWwoKSBjb25zdAoreworICAgIGlmICghbV9wbGF5ZXJJdGVtVHJhY2spCisgICAgICAgIHJl
dHVybiBlbXB0eUF0b207CisKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHRpdGxlOworCisg
ICAgUmV0YWluUHRyPEFWQ0ZBc3NldFRyYWNrUmVmPiBhc3NldFRyYWNrID0gYWRvcHRDRihBVkNG
UGxheWVySXRlbVRyYWNrQ29weUFzc2V0VHJhY2sobV9wbGF5ZXJJdGVtVHJhY2suZ2V0KCkpKTsK
KyAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gY29tbW9uTWV0YURhdGEgPSBhZG9wdENGKEFWQ0ZB
c3NldFRyYWNrQ29weUNvbW1vbk1ldGFkYXRhKGFzc2V0VHJhY2suZ2V0KCkpKTsKKyAgICBSZXRh
aW5QdHI8Q0ZBcnJheVJlZj4gdGl0bGVzID0gYWRvcHRDRihBVkNGTWV0YWRhdGFJdGVtQ29weUl0
ZW1zV2l0aEtleUFuZEtleVNwYWNlKGNvbW1vbk1ldGFEYXRhLmdldCgpLCBBVkNGTWV0YWRhdGFD
b21tb25LZXlUaXRsZSwgQVZDRk1ldGFkYXRhS2V5U3BhY2VDb21tb24pKTsKKyAgICBDRkluZGV4
IHRpdGxlc0NvdW50ID0gQ0ZBcnJheUdldENvdW50KHRpdGxlcy5nZXQoKSk7CisgICAgaWYgKHRp
dGxlc0NvdW50KSB7CisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDgw
CisgICAgICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBwcmVmZXJyZWRMYW5ndWFnZXMgPSBDRkxv
Y2FsZUNvcHlQcmVmZXJyZWRMYW5ndWFnZXMoKTsKKyAgICAgICAgUmV0YWluUHRyPENGQXJyYXlS
ZWY+IHRpdGxlc0ZvclByZWZlcnJlZExhbmd1YWdlcyA9IEFWQ0ZNZWRpYVNlbGVjdGlvbkNvcHlP
cHRpb25zRnJvbUFycmF5RmlsdGVyZWRBbmRTb3J0ZWRBY2NvcmRpbmdUb1ByZWZlcnJlZExhbmd1
YWdlcyh0aXRsZXMuZ2V0KCksIHByZWZlcnJlZExhbmd1YWdlcy5nZXQoKSk7CisjZWxzZQorICAg
ICAgICBSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+IGN1cnJlbnRMb2NhbGUgPSBhZG9wdENGKENGTG9j
YWxlQ29weUN1cnJlbnQoKSk7CisgICAgICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiB0aXRsZXNG
b3JQcmVmZXJyZWRMYW5ndWFnZXMgPSBhZG9wdENGKEFWQ0ZNZXRhZGF0YUl0ZW1Db3B5SXRlbXNX
aXRoTG9jYWxlKHRpdGxlcy5nZXQoKSwgY3VycmVudExvY2FsZS5nZXQoKSkpOworI2VuZGlmCisg
ICAgICAgIENGSW5kZXggcHJlZmVycmVkVGl0bGVzQ291bnQgPSBDRkFycmF5R2V0Q291bnQodGl0
bGVzRm9yUHJlZmVycmVkTGFuZ3VhZ2VzLmdldCgpKTsKKyAgICAgICAgaWYgKHByZWZlcnJlZFRp
dGxlc0NvdW50KSB7CisgICAgICAgICAgICBBVkNGTWV0YWRhdGFJdGVtUmVmIHRpdGxlTWV0YWRh
dGEgPSBzdGF0aWNfY2FzdDxBVkNGTWV0YWRhdGFJdGVtUmVmPihDRkFycmF5R2V0VmFsdWVBdElu
ZGV4KHRpdGxlc0ZvclByZWZlcnJlZExhbmd1YWdlcy5nZXQoKSwgMCkpOworICAgICAgICAgICAg
dGl0bGUgPSBhZG9wdENGKEFWQ0ZNZXRhZGF0YUl0ZW1Db3B5U3RyaW5nVmFsdWUodGl0bGVNZXRh
ZGF0YSkpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCF0aXRsZSkgeworICAgICAgICAgICAg
QVZDRk1ldGFkYXRhSXRlbVJlZiB0aXRsZU1ldGFkYXRhID0gc3RhdGljX2Nhc3Q8QVZDRk1ldGFk
YXRhSXRlbVJlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleCh0aXRsZXMuZ2V0KCksIDApKTsKKyAg
ICAgICAgICAgIHRpdGxlID0gYWRvcHRDRihBVkNGTWV0YWRhdGFJdGVtQ29weVN0cmluZ1ZhbHVl
KHRpdGxlTWV0YWRhdGEpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiB0aXRsZSA/
IEF0b21pY1N0cmluZyh0aXRsZS5nZXQoKSkgOiBlbXB0eUF0b207Cit9CisKK0F0b21pY1N0cmlu
ZyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZDRjo6bGFuZ3VhZ2UoKSBjb25zdAorewor
ICAgIGlmICghbV9wbGF5ZXJJdGVtVHJhY2spCisgICAgICAgIHJldHVybiBlbXB0eUF0b207CisK
KyAgICBSZXRhaW5QdHI8QVZDRkFzc2V0VHJhY2tSZWY+IGFzc2V0VHJhY2sgPSBhZG9wdENGKEFW
Q0ZQbGF5ZXJJdGVtVHJhY2tDb3B5QXNzZXRUcmFjayhtX3BsYXllckl0ZW1UcmFjay5nZXQoKSkp
OworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbGFuZ3VhZ2VDb2RlID0gYWRvcHRDRihBVkNG
QXNzZXRUcmFja0NvcHlMYW5ndWFnZUNvZGUoYXNzZXRUcmFjay5nZXQoKSkpOworICAgIFJldGFp
blB0cjxDRkxvY2FsZVJlZj4gbG9jYWxlID0gYWRvcHRDRihDRkxvY2FsZUNyZWF0ZShrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBsYW5ndWFnZUNvZGUuZ2V0KCkpKTsKKyAgICByZXR1cm4gQ0ZMb2NhbGVH
ZXRJZGVudGlmaWVyKGxvY2FsZS5nZXQoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vY2YvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0YuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0YuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2
YXRlTGVnYWN5QVZDRi5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjaWZuZGVmIEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGX2gKKyNkZWZpbmUgSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0ZfaAorCisjaWYgRU5BQkxFKFZJREVPKSAmJiBV
U0UoQVZGT1VOREFUSU9OKSAmJiAhSEFWRShBVkZPVU5EQVRJT05fTEVHSUJMRV9PVVRQVVRfU1VQ
UE9SVCkgJiYgIVBMQVRGT1JNKElPUykKKworI2luY2x1ZGUgIkluYmFuZFRleHRUcmFja1ByaXZh
dGVBVkYuaCIKKyNpbmNsdWRlIDxBVkZvdW5kYXRpb25DRi9BVkNGUGxheWVySXRlbVRyYWNrLmg+
CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOworCitjbGFzcyBJbmJhbmRUZXh0
VHJhY2tQcml2YXRlTGVnYWN5QVZDRiA6IHB1YmxpYyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZG
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRl
TGVnYWN5QVZDRj4gY3JlYXRlKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGKiBwbGF5
ZXIsIEFWQ0ZQbGF5ZXJJdGVtVHJhY2tSZWYgdHJhY2spCisgICAgeworICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGKHBsYXllciwgdHJh
Y2spKTsKKyAgICB9CisKKyAgICB+SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0YoKSB7
IH0KKworICAgIHZpcnR1YWwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6S2luZCBraW5kKCkgY29u
c3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzQ2xvc2VkQ2FwdGlvbnMoKSBjb25zdCBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgY29udGFpbnNPbmx5Rm9yY2VkU3VidGl0bGVzKCkg
Y29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzTWFpblByb2dyYW1Db250ZW50KCkg
Y29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzRWFzeVRvUmVhZCgpIGNvbnN0IE9W
RVJSSURFOworICAgIHZpcnR1YWwgQXRvbWljU3RyaW5nIGxhYmVsKCkgY29uc3QgT1ZFUlJJREU7
CisgICAgdmlydHVhbCBBdG9taWNTdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCBPVkVSUklERTsKKwor
ICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0KCkgT1ZFUlJJREU7CisKKyAgICB2aXJ0dWFsIGJv
b2wgaXNMZWdhY3lDbG9zZWRDYXB0aW9uc1RyYWNrKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4g
dHJ1ZTsgfQorCisgICAgQVZDRlBsYXllckl0ZW1UcmFja1JlZiBhdlBsYXllckl0ZW1UcmFjaygp
IGNvbnN0IHsgcmV0dXJuIG1fcGxheWVySXRlbVRyYWNrLmdldCgpOyB9CisKK3Byb3RlY3RlZDoK
KyAgICBJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZDRihNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25DRiosIEFWQ0ZQbGF5ZXJJdGVtVHJhY2tSZWYpOworICAgIAorICAgIFJldGFp
blB0cjxBVkNGUGxheWVySXRlbVRyYWNrUmVmPiBtX3BsYXllckl0ZW1UcmFjazsKK307CisKK30K
KworI2VuZGlmIC8vIEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikgJiYgIUhBVkUo
QVZGT1VOREFUSU9OX0xFR0lCTEVfT1VUUFVUX1NVUFBPUlQpICYmICFQTEFURk9STShJT1MpCisK
KyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCShyZXZpc2lvbiAxNTI3NDcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNSw3
ICsyNSw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKIAotI2lmIFBMQVRGT1JNKFdJTikmJiBF
TkFCTEUoVklERU8pIAorI2lmIFBMQVRGT1JNKFdJTikgJiYgRU5BQkxFKFZJREVPKSAKIAogI2lm
IFVTRShBVkZPVU5EQVRJT04pCiAKQEAgLTM2LDEyICszNiwxNiBAQAogI2luY2x1ZGUgIkZsb2F0
Q29udmVyc2lvbi5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dC5oIgorI2luY2x1ZGUgIkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGLmgiCisjaW5j
bHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0YuaCIKICNpbmNsdWRlICJLVVJM
LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ0FMYXllci5oIgog
I2luY2x1ZGUgIlNvZnRMaW5raW5nLmgiCiAjaW5jbHVkZSAiVGltZVJhbmdlcy5oIgogCisjaW5j
bHVkZSA8QVZGb3VuZGF0aW9uQ0YvQVZDRlBsYXllckl0ZW0uaD4KKyNpbmNsdWRlIDxBVkZvdW5k
YXRpb25DRi9BVkNGUGxheWVySXRlbUxlZ2libGVPdXRwdXQuaD4KICNpbmNsdWRlIDxBVkZvdW5k
YXRpb25DRi9BVkNGUGxheWVyTGF5ZXIuaD4KICNpbmNsdWRlIDxBVkZvdW5kYXRpb25DRi9BVkZv
dW5kYXRpb25DRi5oPgogI2luY2x1ZGUgPENvcmVNZWRpYS9Db3JlTWVkaWEuaD4KQEAgLTQ5LDYg
KzUzLDcgQEAKICNpbmNsdWRlIDxkZWxheWltcC5oPgogI2luY2x1ZGUgPGRpc3BhdGNoL2Rpc3Bh
dGNoLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCiAvLyBUaGUgc29mdGxpbmsgaGVh
ZGVyIGZpbGVzIG11c3QgYmUgaW5jbHVkZWQgYWZ0ZXIgdGhlIEFWQ0YgYW5kIENvcmVNZWRpYSBo
ZWFkZXIgZmlsZXMuCkBAIC05NSw2ICsxMDAsMTMgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQg
c2Vla1RvVGltZShmbG9hdCk7CiAKKyAgICB2b2lkIHNldEN1cnJlbnRUcmFjayhJbmJhbmRUZXh0
VHJhY2tQcml2YXRlQVZGKik7CisgICAgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRiogY3VycmVu
dFRyYWNrKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50VHJhY2s7IH0KKworI2lmIEhBVkUoQVZG
T1VOREFUSU9OX01FRElBX1NFTEVDVElPTl9HUk9VUCkgJiYgSEFWRShBVkZPVU5EQVRJT05fTEVH
SUJMRV9PVVRQVVRfU1VQUE9SVCkKKyAgICBzdGF0aWMgdm9pZCBsZWdpYmxlT3V0cHV0Q2FsbGJh
Y2sodm9pZCogY29udGV4dCwgQVZDRlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0UmVmLCBDRkFycmF5
UmVmIGF0dHJpYnV0ZWRTdHJpbmcsIENGQXJyYXlSZWYgbmF0aXZlU2FtcGxlQnVmZmVycywgQ01U
aW1lIGl0ZW1UaW1lKTsKKyAgICBzdGF0aWMgdm9pZCBwcm9jZXNzQ3VlKHZvaWQqIGNvbnRleHQp
OworI2VuZGlmCiAgICAgc3RhdGljIHZvaWQgbG9hZE1ldGFkYXRhQ29tcGxldGlvbkNhbGxiYWNr
KEFWQ0ZBc3NldFJlZiwgdm9pZCopOwogICAgIHN0YXRpYyB2b2lkIGxvYWRQbGF5YWJsZUNvbXBs
ZXRpb25DYWxsYmFjayhBVkNGQXNzZXRSZWYsIHZvaWQqKTsKICAgICBzdGF0aWMgdm9pZCBwZXJp
b2RpY1RpbWVPYnNlcnZlckNhbGxiYWNrKEFWQ0ZQbGF5ZXJSZWYsIENNVGltZSwgdm9pZCopOwpA
QCAtMTA3LDYgKzExOSwxMCBAQCBwdWJsaWM6CiAgICAgaW5saW5lIEFWQ0ZQbGF5ZXJJdGVtUmVm
IGF2UGxheWVySXRlbSgpIGNvbnN0IHsgcmV0dXJuIChBVkNGUGxheWVySXRlbVJlZiltX2F2UGxh
eWVySXRlbS5nZXQoKTsgfQogICAgIGlubGluZSBBVkNGUGxheWVyT2JzZXJ2ZXJSZWYgdGltZU9i
c2VydmVyKCkgY29uc3QgeyByZXR1cm4gKEFWQ0ZQbGF5ZXJPYnNlcnZlclJlZiltX3RpbWVPYnNl
cnZlci5nZXQoKTsgfQogICAgIGlubGluZSBBVkNGQXNzZXRJbWFnZUdlbmVyYXRvclJlZiBpbWFn
ZUdlbmVyYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VHZW5lcmF0b3IuZ2V0KCk7IH0KKyNp
ZiBIQVZFKEFWRk9VTkRBVElPTl9NRURJQV9TRUxFQ1RJT05fR1JPVVApICYmIEhBVkUoQVZGT1VO
REFUSU9OX0xFR0lCTEVfT1VUUFVUX1NVUFBPUlQpCisgICAgaW5saW5lIEFWQ0ZQbGF5ZXJJdGVt
TGVnaWJsZU91dHB1dFJlZiBsZWdpYmxlT3V0cHV0KCkgY29uc3QgeyByZXR1cm4gbV9sZWdpYmxl
T3V0cHV0LmdldCgpOyB9CisgICAgQVZDRk1lZGlhU2VsZWN0aW9uR3JvdXBSZWYgc2FmZU1lZGlh
U2VsZWN0aW9uR3JvdXBGb3JMZWdpYmxlTWVkaWEoKSBjb25zdDsKKyNlbmRpZgogICAgIGlubGlu
ZSBkaXNwYXRjaF9xdWV1ZV90IGRpc3BhdGNoUXVldWUoKSBjb25zdCB7IHJldHVybiBtX25vdGlm
aWNhdGlvblF1ZXVlOyB9CiAKIHByaXZhdGU6CkBAIC0xMzEsNiArMTQ3LDEzIEBAIHByaXZhdGU6
CiAgICAgUmV0YWluUHRyPEFWQ0ZQbGF5ZXJMYXllclJlZj4gbV9hdkNGVmlkZW9MYXllcjsKICAg
ICBSZXRhaW5QdHI8QVZDRlBsYXllck9ic2VydmVyUmVmPiBtX3RpbWVPYnNlcnZlcjsKICAgICBS
ZXRhaW5QdHI8QVZDRkFzc2V0SW1hZ2VHZW5lcmF0b3JSZWY+IG1faW1hZ2VHZW5lcmF0b3I7Cisj
aWYgSEFWRShBVkZPVU5EQVRJT05fTUVESUFfU0VMRUNUSU9OX0dST1VQKSAmJiBIQVZFKEFWRk9V
TkRBVElPTl9MRUdJQkxFX09VVFBVVF9TVVBQT1JUKQorICAgIFJldGFpblB0cjxBVkNGUGxheWVy
SXRlbUxlZ2libGVPdXRwdXRSZWY+IG1fbGVnaWJsZU91dHB1dDsKKyAgICBSZXRhaW5QdHI8QVZD
Rk1lZGlhU2VsZWN0aW9uR3JvdXBSZWY+IG1fc2VsZWN0aW9uR3JvdXA7CisgICAgUmV0YWluUHRy
PENGQXJyYXlSZWY+IG1fY3VycmVudEN1ZVN0cmluZ3M7CisgICAgCisgICAgZG91YmxlIG1fY3Vy
cmVudEN1ZVRpbWU7CisjZW5kaWYKICAgICBkaXNwYXRjaF9xdWV1ZV90IG1fbm90aWZpY2F0aW9u
UXVldWU7CiAKICAgICBtdXRhYmxlIFJldGFpblB0cjxDQUNGTGF5ZXJSZWY+IG1fY2FWaWRlb0xh
eWVyOwpAQCAtMTM4LDYgKzE2MSw4IEBAIHByaXZhdGU6CiAKICAgICBPd25QdHI8TGF5ZXJDbGll
bnQ+IG1fbGF5ZXJDbGllbnQ7CiAgICAgQ09NUHRyPElEaXJlY3QzRERldmljZTlFeD4gbV9kM2RE
ZXZpY2U7CisKKyAgICBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGKiBtX2N1cnJlbnRUcmFjazsK
IH07CiAKIHVpbnRwdHJfdCBBVkZXcmFwcGVyOjpzX25leHRBVkZXcmFwcGVyT2JqZWN0SUQ7CkBA
IC0xODAsOSArMjA1LDExIEBAIHN0YXRpYyBDRkFycmF5UmVmIGNyZWF0ZU1ldGFkYXRhS2V5TmFt
ZXMKICAgICAgICAgQVZDRkFzc2V0UHJvcGVydHlEdXJhdGlvbiwKICAgICAgICAgQVZDRkFzc2V0
UHJvcGVydHlOYXR1cmFsU2l6ZSwKICAgICAgICAgQVZDRkFzc2V0UHJvcGVydHlQcmVmZXJyZWRU
cmFuc2Zvcm0sCisgICAgICAgIC8vIEFWQ0ZBc3NldFByb3BlcnR5UHJlZmVycmVkVm9sdW1lLCAg
ICAvLyBGSVhNRTogU2hvdWxkIGJlIGV4cG9ydGVkIGJ5IEFWQ0YuIFdlIGNhbiB1c2UgQVZDRkFz
c2V0VHJhY2tQcm9wZXJ0eVByZWZlcnJlZFZvbHVtZSBmb3Igbm93LgogICAgICAgICBBVkNGQXNz
ZXRQcm9wZXJ0eVByZWZlcnJlZFJhdGUsCiAgICAgICAgIEFWQ0ZBc3NldFByb3BlcnR5UGxheWFi
bGUsCi0gICAgICAgIEFWQ0ZBc3NldFByb3BlcnR5VHJhY2tzIAorICAgICAgICBBVkNGQXNzZXRQ
cm9wZXJ0eVRyYWNrcywKKyAgICAgICAgQVZDRkFzc2V0UHJvcGVydHlBdmFpbGFibGVNZWRpYUNo
YXJhY3RlcmlzdGljc1dpdGhNZWRpYVNlbGVjdGlvbk9wdGlvbnMKICAgICB9OwogICAgIAogICAg
IHJldHVybiBDRkFycmF5Q3JlYXRlKDAsIChjb25zdCB2b2lkKiopa2V5TmFtZXMsIHNpemVvZihr
ZXlOYW1lcykgLyBzaXplb2Yoa2V5TmFtZXNbMF0pLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKTsK
QEAgLTI0Miw2ICsyNjksMTggQEAgaW5saW5lIEFWQ0ZBc3NldEltYWdlR2VuZXJhdG9yUmVmIGlt
YWdlRwogICAgIHJldHVybiB3cmFwcGVyID8gd3JhcHBlci0+aW1hZ2VHZW5lcmF0b3IoKSA6IDA7
IAogfQogCisjaWYgSEFWRShBVkZPVU5EQVRJT05fTUVESUFfU0VMRUNUSU9OX0dST1VQKSAmJiBI
QVZFKEFWRk9VTkRBVElPTl9MRUdJQkxFX09VVFBVVF9TVVBQT1JUKQoraW5saW5lIEFWQ0ZQbGF5
ZXJJdGVtTGVnaWJsZU91dHB1dFJlZiBhdkxlZ2libGVPdXRwdXQoQVZGV3JhcHBlciogd3JhcHBl
cikKK3sKKyAgICByZXR1cm4gd3JhcHBlciA/IHdyYXBwZXItPmxlZ2libGVPdXRwdXQoKSA6IDA7
Cit9CisKK2lubGluZSBBVkNGTWVkaWFTZWxlY3Rpb25Hcm91cFJlZiBzYWZlTWVkaWFTZWxlY3Rp
b25Hcm91cEZvckxlZ2libGVNZWRpYShBVkZXcmFwcGVyKiB3cmFwcGVyKQoreworICAgIHJldHVy
biB3cmFwcGVyID8gd3JhcHBlci0+c2FmZU1lZGlhU2VsZWN0aW9uR3JvdXBGb3JMZWdpYmxlTWVk
aWEoKSA6IDA7Cit9CisjZW5kaWYKKwogUGFzc093blB0cjxNZWRpYVBsYXllclByaXZhdGVJbnRl
cmZhY2U+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpjcmVhdGUoTWVkaWFQbGF5
ZXIqIHBsYXllcikgCiB7IAogICAgIHJldHVybiBhZG9wdFB0cihuZXcgTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uQ0YocGxheWVyKSk7CkBAIC0yNzcsNiArMzE2LDggQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6YwogCiAgICAgdGVhckRvd25WaWRlb1JlbmRl
cmluZygpOwogCisgICAgY2xlYXJUZXh0VHJhY2tzKCk7CisKICAgICBpZiAobV9hdmZXcmFwcGVy
KSB7CiAgICAgICAgIC8vIFRoZSBBVkNGIG9iamVjdHMgaGF2ZSB0byBiZSBkZXN0cm95ZWQgb24g
dGhlIHNhbWUgZGlzcGF0Y2ggcXVldWUgdXNlZCBmb3Igbm90aWZpY2F0aW9ucywgc28gc2NoZWR1
bGUgYSBjYWxsIHRvIAogICAgICAgICAvLyBkaXNjb25uZWN0QW5kRGVsZXRlQVZGV3JhcHBlciBv
biB0aGF0IHF1ZXVlLiAKQEAgLTMzNSw2ICszNzYsMzEgQEAgYm9vbCBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25DRjo6aAogICAgIHJldHVybiAobV92aWRlb0ZyYW1lSGFzRHJhd24gfHwg
KHZpZGVvTGF5ZXIobV9hdmZXcmFwcGVyKSAmJiBBVkNGUGxheWVyTGF5ZXJJc1JlYWR5Rm9yRGlz
cGxheSh2aWRlb0xheWVyKG1fYXZmV3JhcHBlcikpKSk7CiB9CiAKK3ZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnNldEN1cnJlbnRUcmFjayhJbmJhbmRUZXh0VHJhY2tQcml2
YXRlQVZGKiB0cmFjaykKK3sKKyAgICBpZiAobV9hdmZXcmFwcGVyKQorICAgICAgICBtX2F2Zldy
YXBwZXItPnNldEN1cnJlbnRUcmFjayh0cmFjayk7Cit9CisKK0luYmFuZFRleHRUcmFja1ByaXZh
dGVBVkYqIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpjdXJyZW50VHJhY2soKSBj
b25zdAoreworICAgIGlmIChtX2F2ZldyYXBwZXIpCisgICAgICAgIHJldHVybiBtX2F2ZldyYXBw
ZXItPmN1cnJlbnRUcmFjaygpOworCisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OmNyZWF0ZUFWQXNzZXRGb3JVUkwoY29uc3QgU3RyaW5n
JiB1cmwpCit7CisgICAgQVNTRVJUKCFtX2F2ZldyYXBwZXIpOworCisgICAgc2V0RGVsYXlDYWxs
YmFja3ModHJ1ZSk7CisKKyAgICBtX2F2ZldyYXBwZXIgPSBuZXcgQVZGV3JhcHBlcih0aGlzKTsK
KyAgICBtX2F2ZldyYXBwZXItPmNyZWF0ZUFzc2V0Rm9yVVJMKHVybCk7CisgICAgc2V0RGVsYXlD
YWxsYmFja3MoZmFsc2UpOworfQorCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bkNGOjpjcmVhdGVBVlBsYXllcigpCiB7CiAgICAgQVNTRVJUKG1fYXZmV3JhcHBlcik7CkBAIC0z
NTAsMTcgKzQxNiw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OmMK
ICAgICAKICAgICBzZXREZWxheUNhbGxiYWNrcyh0cnVlKTsKICAgICBtX2F2ZldyYXBwZXItPmNy
ZWF0ZVBsYXllckl0ZW0oKTsKLSAgICBzZXREZWxheUNhbGxiYWNrcyhmYWxzZSk7Ci19Ci0KLXZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OmNyZWF0ZUFWQXNzZXRGb3JVUkwo
Y29uc3QgU3RyaW5nJiB1cmwpCi17Ci0gICAgQVNTRVJUKCFtX2F2ZldyYXBwZXIpOwotCi0gICAg
c2V0RGVsYXlDYWxsYmFja3ModHJ1ZSk7CiAKLSAgICBtX2F2ZldyYXBwZXIgPSBuZXcgQVZGV3Jh
cHBlcih0aGlzKTsKLSAgICBtX2F2ZldyYXBwZXItPmNyZWF0ZUFzc2V0Rm9yVVJMKHVybCk7CiAg
ICAgc2V0RGVsYXlDYWxsYmFja3MoZmFsc2UpOwogfQogCkBAIC00NDYsMzQgKzUwMiwyNyBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpwCiAgICAgc2V0RGVsYXlDYWxs
YmFja3MoZmFsc2UpOwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNG
Ojp1cGRhdGVSYXRlKCkKLXsKLSAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25DRjo6dXBkYXRlUmF0ZSglcCkiLCB0aGlzKTsKLSAgICBpZiAoIW1ldGFEYXRhQXZh
aWxhYmxlKCkgfHwgIWF2UGxheWVyKG1fYXZmV3JhcHBlcikpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIHNldERlbGF5Q2FsbGJhY2tzKHRydWUpOwotICAgIEFWQ0ZQbGF5ZXJTZXRSYXRlKGF2UGxh
eWVyKG1fYXZmV3JhcHBlciksIHJlcXVlc3RlZFJhdGUoKSk7Ci0gICAgc2V0RGVsYXlDYWxsYmFj
a3MoZmFsc2UpOwotfQotCiBmbG9hdCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6
cGxhdGZvcm1EdXJhdGlvbigpIGNvbnN0CiB7CiAgICAgaWYgKCFtZXRhRGF0YUF2YWlsYWJsZSgp
IHx8ICFhdkFzc2V0KG1fYXZmV3JhcHBlcikpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgZmxv
YXQgZHVyYXRpb247Ci0gICAgQ01UaW1lIGNtRHVyYXRpb24gPSBBVkNGQXNzZXRHZXREdXJhdGlv
bihhdkFzc2V0KG1fYXZmV3JhcHBlcikpOworICAgIENNVGltZSBjbUR1cmF0aW9uOworCisgICAg
Ly8gQ2hlY2sgdGhlIEFWSXRlbSBpZiB3ZSBoYXZlIG9uZSBhbmQgaXQgaGFzIGxvYWRlZCBkdXJh
dGlvbiwgc29tZSBhc3NldHMgbmV2ZXIgcmVwb3J0IGR1cmF0aW9uLgorICAgIGlmIChhdlBsYXll
ckl0ZW0obV9hdmZXcmFwcGVyKSAmJiBwbGF5ZXJJdGVtU3RhdHVzKCkgPj0gTWVkaWFQbGF5ZXJB
VlBsYXllckl0ZW1TdGF0dXNSZWFkeVRvUGxheSkKKyAgICAgICAgY21EdXJhdGlvbiA9IEFWQ0ZQ
bGF5ZXJJdGVtR2V0RHVyYXRpb24oYXZQbGF5ZXJJdGVtKG1fYXZmV3JhcHBlcikpOworICAgIGVs
c2UKKyAgICAgICAgY21EdXJhdGlvbiA9IEFWQ0ZBc3NldEdldER1cmF0aW9uKGF2QXNzZXQobV9h
dmZXcmFwcGVyKSk7CisKICAgICBpZiAoQ01USU1FX0lTX05VTUVSSUMoY21EdXJhdGlvbikpCi0g
ICAgICAgIGR1cmF0aW9uID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdChDTVRpbWVHZXRTZWNvbmRz
KGNtRHVyYXRpb24pKTsKLSAgICBlbHNlIGlmIChDTVRJTUVfSVNfSU5ERUZJTklURShjbUR1cmF0
aW9uKSkKLSAgICAgICAgZHVyYXRpb24gPSBudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5
KCk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFW
Rk1hYzo6ZHVyYXRpb24oJXApIC0gaW52YWxpZCBkdXJhdGlvbiwgcmV0dXJuaW5nIDAiLCB0aGlz
KTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQorICAgICAgICByZXR1cm4gbmFycm93UHJlY2lz
aW9uVG9GbG9hdChDTVRpbWVHZXRTZWNvbmRzKGNtRHVyYXRpb24pKTsKKworICAgIGlmIChDTVRJ
TUVfSVNfSU5ERUZJTklURShjbUR1cmF0aW9uKSkKKyAgICAgICAgcmV0dXJuIG51bWVyaWNfbGlt
aXRzPGZsb2F0Pjo6aW5maW5pdHkoKTsKIAotICAgIHJldHVybiBkdXJhdGlvbjsKKyAgICBMT0co
TWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6cGxhdGZvcm1EdXJhdGlv
biglcCkgLSBpbnZhbGlkIGR1cmF0aW9uLCByZXR1cm5pbmcgJS4wZiIsIHRoaXMsIHN0YXRpY19j
YXN0PGZsb2F0PihNZWRpYVBsYXllcjo6aW52YWxpZFRpbWUoKSkpOworICAgIHJldHVybiBzdGF0
aWNfY2FzdDxmbG9hdD4oTWVkaWFQbGF5ZXI6OmludmFsaWRUaW1lKCkpOwogfQogCiBmbG9hdCBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6Y3VycmVudFRpbWUoKSBjb25zdApAQCAt
NDgzLDcgKzUzMiw3IEBAIGZsb2F0IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjoK
IAogICAgIENNVGltZSBpdGVtVGltZSA9IEFWQ0ZQbGF5ZXJJdGVtR2V0Q3VycmVudFRpbWUoYXZQ
bGF5ZXJJdGVtKG1fYXZmV3JhcHBlcikpOwogICAgIGlmIChDTVRJTUVfSVNfTlVNRVJJQyhpdGVt
VGltZSkpCi0gICAgICAgIHJldHVybiBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KENNVGltZUdldFNl
Y29uZHMoaXRlbVRpbWUpKTsKKyAgICAgICAgcmV0dXJuIG1heChuYXJyb3dQcmVjaXNpb25Ub0Zs
b2F0KENNVGltZUdldFNlY29uZHMoaXRlbVRpbWUpKSwgMC4wZik7CiAKICAgICByZXR1cm4gMDsK
IH0KQEAgLTUxNiw2ICs1NjUsMTcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25DRjo6cwogICAgIEFWQ0ZQbGF5ZXJTZXRDbG9zZWRDYXB0aW9uRGlzcGxheUVuYWJsZWQoYXZQ
bGF5ZXIobV9hdmZXcmFwcGVyKSwgY2xvc2VkQ2FwdGlvbnNWaXNpYmxlKTsKIH0KIAordm9pZCBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6dXBkYXRlUmF0ZSgpCit7CisgICAgTE9H
KE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnVwZGF0ZVJhdGUoJXAp
IiwgdGhpcyk7CisgICAgaWYgKCFtZXRhRGF0YUF2YWlsYWJsZSgpIHx8ICFhdlBsYXllcihtX2F2
ZldyYXBwZXIpKQorICAgICAgICByZXR1cm47CisKKyAgICBzZXREZWxheUNhbGxiYWNrcyh0cnVl
KTsKKyAgICBBVkNGUGxheWVyU2V0UmF0ZShhdlBsYXllcihtX2F2ZldyYXBwZXIpLCByZXF1ZXN0
ZWRSYXRlKCkpOworICAgIHNldERlbGF5Q2FsbGJhY2tzKGZhbHNlKTsKK30KKwogZmxvYXQgTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnJhdGUoKSBjb25zdAogewogICAgIGlmICgh
bWV0YURhdGFBdmFpbGFibGUoKSB8fCAhYXZQbGF5ZXIobV9hdmZXcmFwcGVyKSkKQEAgLTY3MSw3
ICs3MzEsNyBAQCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OkFzc2V0U3RhCiAgICAg
Zm9yIChDRkluZGV4IGkgPSAwOyBpIDwga2V5Q291bnQ7IGkrKykgewogICAgICAgICBDRlN0cmlu
Z1JlZiBrZXlOYW1lID0gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGQXJyYXlHZXRWYWx1ZUF0
SW5kZXgoa2V5cywgaSkpOwogICAgICAgICBBVkNGUHJvcGVydHlWYWx1ZVN0YXR1cyBrZXlTdGF0
dXMgPSBBVkNGQXNzZXRHZXRTdGF0dXNPZlZhbHVlRm9yUHJvcGVydHkoYXZBc3NldChtX2F2Zldy
YXBwZXIpLCBrZXlOYW1lLCAwKTsKLSAgICAgICAgCisKICAgICAgICAgaWYgKGtleVN0YXR1cyA8
IEFWQ0ZQcm9wZXJ0eVZhbHVlU3RhdHVzTG9hZGVkKQogICAgICAgICAgICAgcmV0dXJuIE1lZGlh
UGxheWVyQVZBc3NldFN0YXR1c0xvYWRpbmc7CiAgICAgICAgIGlmIChrZXlTdGF0dXMgPT0gQVZD
RlByb3BlcnR5VmFsdWVTdGF0dXNGYWlsZWQpCkBAIC02ODgsNyArNzQ4LDcgQEAgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpBc3NldFN0YQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbkNGOjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7Ci0gICAgaWYgKGNvbnRleHQtPnBh
aW50aW5nRGlzYWJsZWQoKSkKKyAgICBpZiAoIW1ldGFEYXRhQXZhaWxhYmxlKCkgfHwgY29udGV4
dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoY3VycmVu
dFJlbmRlcmluZ01vZGUoKSA9PSBNZWRpYVJlbmRlcmluZ1RvTGF5ZXIgJiYgIWltYWdlR2VuZXJh
dG9yKG1fYXZmV3JhcHBlcikpIHsKQEAgLTcwMiw3ICs3NjIsNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpwCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uQ0Y6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYg
cmVjdCkKIHsKLSAgICBpZiAoY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpIHx8ICFpbWFnZUdl
bmVyYXRvcihtX2F2ZldyYXBwZXIpKQorICAgIGlmICghbWV0YURhdGFBdmFpbGFibGUoKSB8fCBj
b250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkgfHwgIWltYWdlR2VuZXJhdG9yKG1fYXZmV3JhcHBl
cikpCiAgICAgICAgIHJldHVybjsKIAogICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbkNGOjpwYWludCglcCkiLCB0aGlzKTsKQEAgLTczMiw3ICs3OTIsMTAgQEAg
c3RhdGljIEhhc2hTZXQ8U3RyaW5nPiBtaW1lVHlwZUNhY2hlKCkKICAgICBpZiAodHlwZUxpc3RJ
bml0aWFsaXplZCkKICAgICAgICAgcmV0dXJuIGNhY2hlOwogICAgIHR5cGVMaXN0SW5pdGlhbGl6
ZWQgPSB0cnVlOwotICAgIAorCisgICAgQ0ZBcnJheVJlZiBmb28gPSBBVkNGVVJMQXNzZXRDb3B5
QXVkaW92aXN1YWxNSU1FVHlwZXMoKTsKKyAgICBBU1NFUlQoQ0ZBcnJheUdldFR5cGVJRCgpID09
IENGR2V0VHlwZUlEKGZvbykpOyAKKwogICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBzdXBwb3J0
ZWRUeXBlcyA9IGFkb3B0Q0YoQVZDRlVSTEFzc2V0Q29weUF1ZGlvdmlzdWFsTUlNRVR5cGVzKCkp
OwogICAgIAogICAgIEFTU0VSVChzdXBwb3J0ZWRUeXBlcyk7CkBAIC03NzgsOSArODQxLDE1IEBA
IGZsb2F0IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjoKIAogdm9pZCBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6dHJhY2tzQ2hhbmdlZCgpCiB7CisgICAgU3RyaW5n
IHByaW1hcnlBdWRpb1RyYWNrTGFuZ3VhZ2UgPSBtX2xhbmd1YWdlT2ZQcmltYXJ5QXVkaW9UcmFj
azsKKyAgICBtX2xhbmd1YWdlT2ZQcmltYXJ5QXVkaW9UcmFjayA9IFN0cmluZygpOworCiAgICAg
aWYgKCFhdkFzc2V0KG1fYXZmV3JhcHBlcikpCiAgICAgICAgIHJldHVybjsKLSAgICAKKworICAg
IGJvb2wgaGF2ZUNDVHJhY2sgPSBmYWxzZTsKKyAgICBib29sIGhhc0NhcHRpb25zID0gZmFsc2U7
CisKICAgICAvLyBUaGlzIGlzIGNhbGxlZCB3aGVuZXZlciB0aGUgdHJhY2tzIGNvbGxlY3Rpb24g
Y2hhbmdlcyBzbyBjYWNoZSBoYXNWaWRlbyBhbmQgaGFzQXVkaW8gc2luY2Ugd2UgYXJlCiAgICAg
Ly8gYXNrZWQgYWJvdXQgdGhvc2UgZmFpcmx5IGZyZXF1ZW50bHkuCiAgICAgaWYgKCFhdlBsYXll
ckl0ZW0obV9hdmZXcmFwcGVyKSkgewpAQCAtNzkyLDEyICs4NjEsMTMgQEAgdm9pZCBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6dAogICAgICAgICBSZXRhaW5QdHI8Q0ZBcnJheVJl
Zj4gYXVkaW9UcmFja3MgPSBhZG9wdENGKEFWQ0ZBc3NldENvcHlUcmFja3NXaXRoTWVkaWFDaGFy
YWN0ZXJpc3RpYyhhdkFzc2V0KG1fYXZmV3JhcHBlciksIEFWQ0ZNZWRpYUNoYXJhY3RlcmlzdGlj
QXVkaWJsZSkpOwogICAgICAgICBzZXRIYXNBdWRpbyhDRkFycmF5R2V0Q291bnQoYXVkaW9UcmFj
a3MuZ2V0KCkpKTsKIAorI2lmICFIQVZFKEFWRk9VTkRBVElPTl9NRURJQV9TRUxFQ1RJT05fR1JP
VVApCiAgICAgICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBjYXB0aW9uVHJhY2tzID0gYWRvcHRD
RihBVkNGQXNzZXRDb3B5VHJhY2tzV2l0aE1lZGlhVHlwZShhdkFzc2V0KG1fYXZmV3JhcHBlciks
IEFWQ0ZNZWRpYVR5cGVDbG9zZWRDYXB0aW9uKSk7Ci0gICAgICAgIHNldEhhc0F1ZGlvKENGQXJy
YXlHZXRDb3VudChjYXB0aW9uVHJhY2tzLmdldCgpKSk7CisgICAgICAgIGhhc0NhcHRpb25zID0g
Q0ZBcnJheUdldENvdW50KGNhcHRpb25UcmFja3MuZ2V0KCkpOworI2VuZGlmCiAgICAgfSBlbHNl
IHsKICAgICAgICAgYm9vbCBoYXNWaWRlbyA9IGZhbHNlOwogICAgICAgICBib29sIGhhc0F1ZGlv
ID0gZmFsc2U7Ci0gICAgICAgIGJvb2wgaGFzQ2FwdGlvbnMgPSBmYWxzZTsKIAogICAgICAgICBS
ZXRhaW5QdHI8Q0ZBcnJheVJlZj4gdHJhY2tzID0gYWRvcHRDRihBVkNGUGxheWVySXRlbUNvcHlU
cmFja3MoYXZQbGF5ZXJJdGVtKG1fYXZmV3JhcHBlcikpKTsKIApAQCAtODE1LDIwICs4ODUsNDYg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6dAogICAgICAgICAgICAg
ICAgICAgICBoYXNWaWRlbyA9IHRydWU7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAoQ0ZTdHJp
bmdDb21wYXJlKG1lZGlhVHlwZSwgQVZDRk1lZGlhVHlwZUF1ZGlvLCBrQ0ZDb21wYXJlQ2FzZUlu
c2Vuc2l0aXZlKSA9PSBrQ0ZDb21wYXJlRXF1YWxUbykKICAgICAgICAgICAgICAgICAgICAgaGFz
QXVkaW8gPSB0cnVlOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKENGU3RyaW5nQ29tcGFyZSht
ZWRpYVR5cGUsIEFWQ0ZNZWRpYVR5cGVDbG9zZWRDYXB0aW9uLCBrQ0ZDb21wYXJlQ2FzZUluc2Vu
c2l0aXZlKSA9PSBrQ0ZDb21wYXJlRXF1YWxUbykKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChD
RlN0cmluZ0NvbXBhcmUobWVkaWFUeXBlLCBBVkNGTWVkaWFUeXBlQ2xvc2VkQ2FwdGlvbiwga0NG
Q29tcGFyZUNhc2VJbnNlbnNpdGl2ZSkgPT0ga0NGQ29tcGFyZUVxdWFsVG8pIHsKKyNpZiAhSEFW
RShBVkZPVU5EQVRJT05fTUVESUFfU0VMRUNUSU9OX0dST1VQKQogICAgICAgICAgICAgICAgICAg
ICBoYXNDYXB0aW9ucyA9IHRydWU7CisjZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgaGF2ZUND
VHJhY2sgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAg
fQogCiAgICAgICAgIHNldEhhc1ZpZGVvKGhhc1ZpZGVvKTsKICAgICAgICAgc2V0SGFzQXVkaW8o
aGFzQXVkaW8pOwotICAgICAgICBzZXRIYXNDbG9zZWRDYXB0aW9ucyhoYXNDYXB0aW9ucyk7CiAg
ICAgfQogCisjaWYgSEFWRShBVkZPVU5EQVRJT05fTUVESUFfU0VMRUNUSU9OX0dST1VQKQorICAg
IEFWQ0ZNZWRpYVNlbGVjdGlvbkdyb3VwUmVmIGxlZ2libGVHcm91cCA9IHNhZmVNZWRpYVNlbGVj
dGlvbkdyb3VwRm9yTGVnaWJsZU1lZGlhKG1fYXZmV3JhcHBlcik7CisgICAgaWYgKGxlZ2libGVH
cm91cCkgeworICAgICAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gcGxheWFibGVPcHRpb25zID0g
YWRvcHRDRihBVkNGTWVkaWFTZWxlY3Rpb25Db3B5UGxheWFibGVPcHRpb25zRnJvbUFycmF5KEFW
Q0ZNZWRpYVNlbGVjdGlvbkdyb3VwR2V0T3B0aW9ucyhsZWdpYmxlR3JvdXApKSk7CisgICAgICAg
IGhhc0NhcHRpb25zID0gQ0ZBcnJheUdldENvdW50KHBsYXlhYmxlT3B0aW9ucy5nZXQoKSk7Cisg
ICAgICAgIGlmIChoYXNDYXB0aW9ucykKKyAgICAgICAgICAgIHByb2Nlc3NNZWRpYVNlbGVjdGlv
bk9wdGlvbnMoKTsKKyAgICB9CisjZW5kaWYKKworI2lmICFIQVZFKEFWRk9VTkRBVElPTl9MRUdJ
QkxFX09VVFBVVF9TVVBQT1JUKSAmJiBIQVZFKEFWRk9VTkRBVElPTl9NRURJQV9TRUxFQ1RJT05f
R1JPVVApCisgICAgaWYgKCFoYXNDYXB0aW9ucyAmJiBoYXZlQ0NUcmFjaykKKyAgICAgICAgcHJv
Y2Vzc0xlZ2FjeUNsb3NlZENhcHRpb25zVHJhY2tzKCk7CisjZWxpZiAhSEFWRShBVkZPVU5EQVRJ
T05fTEVHSUJMRV9PVVRQVVRfU1VQUE9SVCkKKyAgICBpZiAoaGF2ZUNDVHJhY2spCisgICAgICAg
IHByb2Nlc3NMZWdhY3lDbG9zZWRDYXB0aW9uc1RyYWNrcygpOworI2VuZGlmCisKKyAgICBzZXRI
YXNDbG9zZWRDYXB0aW9ucyhoYXNDYXB0aW9ucyk7CisKICAgICBMT0coTWVkaWEsICJNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25DRjp0cmFja3NDaGFuZ2VkKCVwKSAtIGhhc1ZpZGVvID0g
JXMsIGhhc0F1ZGlvID0gJXMsIGhhc0NhcHRpb25zID0gJXMiLCAKICAgICAgICAgdGhpcywgYm9v
bFN0cmluZyhoYXNWaWRlbygpKSwgYm9vbFN0cmluZyhoYXNBdWRpbygpKSwgYm9vbFN0cmluZyho
YXNDbG9zZWRDYXB0aW9ucygpKSk7CiAKICAgICBzaXplQ2hhbmdlZCgpOworCisgICAgaWYgKCFw
cmltYXJ5QXVkaW9UcmFja0xhbmd1YWdlLmlzTnVsbCgpICYmIHByaW1hcnlBdWRpb1RyYWNrTGFu
Z3VhZ2UgIT0gbGFuZ3VhZ2VPZlByaW1hcnlBdWRpb1RyYWNrKCkpCisgICAgICAgIHBsYXllcigp
LT5jaGFyYWN0ZXJpc3RpY0NoYW5nZWQoKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25DRjo6c2l6ZUNoYW5nZWQoKQpAQCAtODYxLDYgKzk1NywyMDMgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6cwogICAgIHNldE5hdHVyYWxTaXplKElu
dFNpemUobmF0dXJhbFNpemUpKTsKIH0KIAordm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25DRjo6Y2xlYXJUZXh0VHJhY2tzKCkKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbV90ZXh0VHJhY2tzLnNpemUoKTsgKytpKSB7CisgICAgICAgIFJlZlB0cjxJbmJhbmRUZXh0
VHJhY2tQcml2YXRlQVZGPiB0cmFjayA9IG1fdGV4dFRyYWNrc1tpXTsKKyAgICAgICAgcGxheWVy
KCktPnJlbW92ZVRleHRUcmFjayh0cmFjayk7CisgICAgICAgIHRyYWNrLT5kaXNjb25uZWN0KCk7
CisgICAgfQorICAgIG1fdGV4dFRyYWNrcy5jbGVhcigpOworfQorCisjaWYgIUhBVkUoQVZGT1VO
REFUSU9OX0xFR0lCTEVfT1VUUFVUX1NVUFBPUlQpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbkNGOjpwcm9jZXNzTGVnYWN5Q2xvc2VkQ2FwdGlvbnNUcmFja3MoKQoreworI2lm
IEhBVkUoQVZGT1VOREFUSU9OX01FRElBX1NFTEVDVElPTl9HUk9VUCkKKyAgICBBVkNGUGxheWVy
SXRlbVNlbGVjdE1lZGlhT3B0aW9uSW5NZWRpYVNlbGVjdGlvbkdyb3VwKGF2UGxheWVySXRlbSht
X2F2ZldyYXBwZXIpLCAwLCBzYWZlTWVkaWFTZWxlY3Rpb25Hcm91cEZvckxlZ2libGVNZWRpYSht
X2F2ZldyYXBwZXIpKTsKKyNlbmRpZgorCisgICAgVmVjdG9yPFJlZlB0cjxJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlQVZGPiA+IHJlbW92ZWRUZXh0VHJhY2tzID0gbV90ZXh0VHJhY2tzOworICAgIFJl
dGFpblB0cjxDRkFycmF5UmVmPiB0cmFja3MgPSBhZG9wdENGKEFWQ0ZQbGF5ZXJJdGVtQ29weVRy
YWNrcyhhdlBsYXllckl0ZW0obV9hdmZXcmFwcGVyKSkpOworICAgIENGSW5kZXggdHJhY2tDb3Vu
dCA9IENGQXJyYXlHZXRDb3VudCh0cmFja3MuZ2V0KCkpOworICAgIGZvciAoQ0ZJbmRleCBpID0g
MDsgaSA8IHRyYWNrQ291bnQ7ICsraSkgeworICAgICAgICBBVkNGUGxheWVySXRlbVRyYWNrUmVm
IHBsYXllckl0ZW1UcmFjayA9IChBVkNGUGxheWVySXRlbVRyYWNrUmVmKShDRkFycmF5R2V0VmFs
dWVBdEluZGV4KHRyYWNrcy5nZXQoKSwgaSkpOworCisgICAgICAgIFJldGFpblB0cjxBVkNGQXNz
ZXRUcmFja1JlZj4gYXNzZXRUcmFjayA9IGFkb3B0Q0YoQVZDRlBsYXllckl0ZW1UcmFja0NvcHlB
c3NldFRyYWNrKHBsYXllckl0ZW1UcmFjaykpOworICAgICAgICBDRlN0cmluZ1JlZiBtZWRpYVR5
cGUgPSBBVkNGQXNzZXRUcmFja0dldE1lZGlhVHlwZShhc3NldFRyYWNrLmdldCgpKTsKKyAgICAg
ICAgaWYgKCFtZWRpYVR5cGUpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAg
ICAKKyAgICAgICAgaWYgKENGU3RyaW5nQ29tcGFyZShtZWRpYVR5cGUsIEFWQ0ZNZWRpYVR5cGVD
bG9zZWRDYXB0aW9uLCBrQ0ZDb21wYXJlQ2FzZUluc2Vuc2l0aXZlKSAhPSBrQ0ZDb21wYXJlRXF1
YWxUbykKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGJvb2wgbmV3Q0NUcmFjayA9
IHRydWU7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IHJlbW92ZWRUZXh0VHJhY2tzLnNpemUo
KTsgaSA+IDA7IC0taSkgeworICAgICAgICAgICAgaWYgKCFyZW1vdmVkVGV4dFRyYWNrc1tpIC0g
MV0tPmlzTGVnYWN5Q2xvc2VkQ2FwdGlvbnNUcmFjaygpKQorICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworCisgICAgICAgICAgICBSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFW
Q0Y+IHRyYWNrID0gc3RhdGljX2Nhc3Q8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0Yq
PihtX3RleHRUcmFja3NbaSAtIDFdLmdldCgpKTsKKyAgICAgICAgICAgIGlmICh0cmFjay0+YXZQ
bGF5ZXJJdGVtVHJhY2soKSA9PSBwbGF5ZXJJdGVtVHJhY2spIHsKKyAgICAgICAgICAgICAgICBy
ZW1vdmVkVGV4dFRyYWNrcy5yZW1vdmUoaSAtIDEpOworICAgICAgICAgICAgICAgIG5ld0NDVHJh
Y2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorCisgICAgICAgIGlmICghbmV3Q0NUcmFjaykKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICAKKyAgICAgICAgbV90ZXh0VHJhY2tzLmFwcGVuZChJbmJhbmRUZXh0VHJhY2tQcml2
YXRlTGVnYWN5QVZDRjo6Y3JlYXRlKHRoaXMsIHBsYXllckl0ZW1UcmFjaykpOworICAgIH0KKwor
ICAgIHByb2Nlc3NOZXdBbmRSZW1vdmVkVGV4dFRyYWNrcyhyZW1vdmVkVGV4dFRyYWNrcyk7Cit9
CisjZW5kaWYKKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6cHJvY2Vz
c05ld0FuZFJlbW92ZWRUZXh0VHJhY2tzKGNvbnN0IFZlY3RvcjxSZWZQdHI8SW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUFWRj4gPiYgcmVtb3ZlZFRleHRUcmFja3MpCit7CisgICAgLy8gRklYTUU6IExp
ZnQgdG8gcGFyZW50IGNsYXNzCisgICAgaWYgKHJlbW92ZWRUZXh0VHJhY2tzLnNpemUoKSkgewor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV90ZXh0VHJhY2tzLnNpemUoKTsgKytp
KSB7CisgICAgICAgICAgICBpZiAoIXJlbW92ZWRUZXh0VHJhY2tzLmNvbnRhaW5zKG1fdGV4dFRy
YWNrc1tpXSkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIHBsYXllcigpLT5yZW1vdmVUZXh0VHJhY2socmVtb3ZlZFRleHRUcmFja3NbaV0uZ2V0
KCkpOworICAgICAgICAgICAgbV90ZXh0VHJhY2tzLnJlbW92ZShpKTsKKyAgICAgICAgfQorICAg
IH0KKyAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV90ZXh0VHJhY2tzLnNpemUo
KTsgKytpKSB7CisgICAgICAgIFJlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGPiB0cmFj
ayA9IG1fdGV4dFRyYWNrc1tpXTsKKyAgICAgICAgCisgICAgICAgIHRyYWNrLT5zZXRUZXh0VHJh
Y2tJbmRleChpKTsKKyAgICAgICAgaWYgKHRyYWNrLT5oYXNCZWVuUmVwb3J0ZWQoKSkKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICAKKyAgICAgICAgdHJhY2stPnNldEhhc0JlZW5SZXBv
cnRlZCh0cnVlKTsKKyAgICAgICAgcGxheWVyKCktPmFkZFRleHRUcmFjayh0cmFjay5nZXQoKSk7
CisgICAgfQorICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNG
Ojpwcm9jZXNzTmV3QW5kUmVtb3ZlZFRleHRUcmFja3MoJXApIC0gZm91bmQgJWkgdGV4dCB0cmFj
a3MiLCB0aGlzLCBtX3RleHRUcmFja3Muc2l6ZSgpKTsKK30KKworI2lmIEhBVkUoQVZGT1VOREFU
SU9OX01FRElBX1NFTEVDVElPTl9HUk9VUCkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uQ0Y6OnByb2Nlc3NNZWRpYVNlbGVjdGlvbk9wdGlvbnMoKQoreworICAgIEFWQ0ZNZWRp
YVNlbGVjdGlvbkdyb3VwUmVmIGxlZ2libGVHcm91cCA9IHNhZmVNZWRpYVNlbGVjdGlvbkdyb3Vw
Rm9yTGVnaWJsZU1lZGlhKG1fYXZmV3JhcHBlcik7CisgICAgaWYgKCFsZWdpYmxlR3JvdXApIHsK
KyAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnBy
b2Nlc3NNZWRpYVNlbGVjdGlvbk9wdGlvbnMoJXApIC0gbmlsIG1lZGlhU2VsZWN0aW9uR3JvdXAi
LCB0aGlzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFdlIGVuYWJsZWQgYXV0
b21hdGljIG1lZGlhIHNlbGVjdGlvbiBiZWNhdXNlIHdlIHdhbnQgYWx0ZXJuYXRlIGF1ZGlvIHRy
YWNrcyB0byBiZSBlbmFibGVkL2Rpc2FibGVkIGF1dG9tYXRpY2FsbHksCisgICAgLy8gYnV0IHNl
dCB0aGUgc2VsZWN0ZWQgbGVnaWJsZSB0cmFjayB0byBuaWwgc28gdGV4dCB0cmFja3Mgd2lsbCBu
b3QgYmUgYXV0b21hdGljYWxseSBjb25maWd1cmVkLgorICAgIGlmICghbV90ZXh0VHJhY2tzLnNp
emUoKSkgeworICAgICAgICBBU1NFUlQoQVZDRk1lZGlhU2VsZWN0aW9uR3JvdXBBbGxvd3NFbXB0
eVNlbGVjdGlvbihsZWdpYmxlR3JvdXApKTsKKyAgICAgICAgQVZDRlBsYXllckl0ZW1SZWYgcGxh
eWVySXRlbSA9IGF2UGxheWVySXRlbShtX2F2ZldyYXBwZXIpOworCisgICAgICAgIGlmIChwbGF5
ZXJJdGVtKQorICAgICAgICAgICAgQVZDRlBsYXllckl0ZW1TZWxlY3RNZWRpYU9wdGlvbkluTWVk
aWFTZWxlY3Rpb25Hcm91cChwbGF5ZXJJdGVtLCAwLCBsZWdpYmxlR3JvdXApOworICAgIH0KKwor
ICAgIFZlY3RvcjxSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRj4gPiByZW1vdmVkVGV4
dFRyYWNrcyA9IG1fdGV4dFRyYWNrczsKKyAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gbGVnaWJs
ZU9wdGlvbnMgPSBhZG9wdENGKEFWQ0ZNZWRpYVNlbGVjdGlvbkNvcHlQbGF5YWJsZU9wdGlvbnNG
cm9tQXJyYXkoQVZDRk1lZGlhU2VsZWN0aW9uR3JvdXBHZXRPcHRpb25zKGxlZ2libGVHcm91cCkp
KTsKKyAgICBDRkluZGV4IGxlZ2libGVPcHRpb25zQ291bnQgPSBDRkFycmF5R2V0Q291bnQobGVn
aWJsZU9wdGlvbnMuZ2V0KCkpOworICAgIGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8IGxlZ2libGVP
cHRpb25zQ291bnQ7ICsraSkgeworICAgICAgICBBVkNGTWVkaWFTZWxlY3Rpb25PcHRpb25SZWYg
b3B0aW9uID0gc3RhdGljX2Nhc3Q8QVZDRk1lZGlhU2VsZWN0aW9uT3B0aW9uUmVmPihDRkFycmF5
R2V0VmFsdWVBdEluZGV4KGxlZ2libGVPcHRpb25zLmdldCgpLCBpKSk7CisgICAgICAgIGJvb2wg
bmV3VHJhY2sgPSB0cnVlOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSByZW1vdmVkVGV4dFRy
YWNrcy5zaXplKCk7IGkgPiAwOyAtLWkpIHsKKyAgICAgICAgICAgIGlmIChyZW1vdmVkVGV4dFRy
YWNrc1tpIC0gMV0tPmlzTGVnYWN5Q2xvc2VkQ2FwdGlvbnNUcmFjaygpKQorICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUFWQ0Y+IHRyYWNrID0gc3RhdGljX2Nhc3Q8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0YqPihy
ZW1vdmVkVGV4dFRyYWNrc1tpIC0gMV0uZ2V0KCkpOworICAgICAgICAgICAgaWYgKENGRXF1YWwo
dHJhY2stPm1lZGlhU2VsZWN0aW9uT3B0aW9uKCksIG9wdGlvbikpIHsKKyAgICAgICAgICAgICAg
ICByZW1vdmVkVGV4dFRyYWNrcy5yZW1vdmUoaSAtIDEpOworICAgICAgICAgICAgICAgIG5ld1Ry
YWNrID0gZmFsc2U7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKCFuZXdUcmFjaykKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisg
ICAgICAgIG1fdGV4dFRyYWNrcy5hcHBlbmQoSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0Y6OmNy
ZWF0ZSh0aGlzLCBvcHRpb24pKTsKKyAgICB9CisKKyAgICBwcm9jZXNzTmV3QW5kUmVtb3ZlZFRl
eHRUcmFja3MocmVtb3ZlZFRleHRUcmFja3MpOworfQorCisjZW5kaWYgLy8gSEFWRShBVkZPVU5E
QVRJT05fTUVESUFfU0VMRUNUSU9OX0dST1VQKQorCit2b2lkIEFWRldyYXBwZXI6OnNldEN1cnJl
bnRUcmFjayhJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGKiB0cmFjaykKK3sKKyAgICBpZiAobV9j
dXJyZW50VHJhY2sgPT0gdHJhY2spCisgICAgICAgIHJldHVybjsKKworICAgIExPRyhNZWRpYSwg
Ik1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpzZXRDdXJyZW50VHJhY2soJXApIC0g
c2VsZWN0aW5nIHRyYWNrICVwLCBsYW5ndWFnZSA9ICVzIiwgdGhpcywgdHJhY2ssIHRyYWNrID8g
dHJhY2stPmxhbmd1YWdlKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSA6ICIiKTsKKyAgICAgICAg
CisgICAgbV9jdXJyZW50VHJhY2sgPSB0cmFjazsKKworICAgIGlmICh0cmFjaykgeworICAgICAg
ICBpZiAodHJhY2stPmlzTGVnYWN5Q2xvc2VkQ2FwdGlvbnNUcmFjaygpKQorICAgICAgICAgICAg
QVZDRlBsYXllclNldENsb3NlZENhcHRpb25EaXNwbGF5RW5hYmxlZChhdlBsYXllcigpLCBUUlVF
KTsKKyNpZiBIQVZFKEFWRk9VTkRBVElPTl9NRURJQV9TRUxFQ1RJT05fR1JPVVApCisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIEFWQ0ZQbGF5ZXJJdGVtU2VsZWN0TWVkaWFPcHRpb25Jbk1lZGlh
U2VsZWN0aW9uR3JvdXAoYXZQbGF5ZXJJdGVtKCksIHN0YXRpY19jYXN0PEluYmFuZFRleHRUcmFj
a1ByaXZhdGVBVkNGKj4odHJhY2spLT5tZWRpYVNlbGVjdGlvbk9wdGlvbigpLCBzYWZlTWVkaWFT
ZWxlY3Rpb25Hcm91cEZvckxlZ2libGVNZWRpYSgpKTsKKyNlbmRpZgorICAgIH0gZWxzZSB7Cisj
aWYgSEFWRShBVkZPVU5EQVRJT05fTUVESUFfU0VMRUNUSU9OX0dST1VQKQorICAgICAgICBBVkNG
UGxheWVySXRlbVNlbGVjdE1lZGlhT3B0aW9uSW5NZWRpYVNlbGVjdGlvbkdyb3VwKGF2UGxheWVy
SXRlbSgpLCAwLCBzYWZlTWVkaWFTZWxlY3Rpb25Hcm91cEZvckxlZ2libGVNZWRpYSgpKTsKKyNl
bmRpZgorICAgICAgICBBVkNGUGxheWVyU2V0Q2xvc2VkQ2FwdGlvbkRpc3BsYXlFbmFibGVkKGF2
UGxheWVyKCksIEZBTFNFKTsKKyAgICB9Cit9CisKK1N0cmluZyBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25DRjo6bGFuZ3VhZ2VPZlByaW1hcnlBdWRpb1RyYWNrKCkgY29uc3QKK3sKKyAg
ICBpZiAoIW1fbGFuZ3VhZ2VPZlByaW1hcnlBdWRpb1RyYWNrLmlzTnVsbCgpKQorICAgICAgICBy
ZXR1cm4gbV9sYW5ndWFnZU9mUHJpbWFyeUF1ZGlvVHJhY2s7CisKKyAgICBpZiAoIWF2UGxheWVy
SXRlbShtX2F2ZldyYXBwZXIpKQorICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKworI2lm
IEhBVkUoQVZGT1VOREFUSU9OX01FRElBX1NFTEVDVElPTl9HUk9VUCkKKyAgICAvLyBJZiBBVkZv
dW5kYXRpb24gaGFzIGFuIGF1ZGlibGUgZ3JvdXAsIHJldHVybiB0aGUgbGFuZ3VhZ2Ugb2YgdGhl
IGN1cnJlbnRseSBzZWxlY3RlZCBhdWRpYmxlIG9wdGlvbi4KKyAgICBBVkNGTWVkaWFTZWxlY3Rp
b25Hcm91cFJlZiBhdWRpYmxlR3JvdXAgPSBBVkNGQXNzZXRHZXRTZWxlY3Rpb25Hcm91cEZvck1l
ZGlhQ2hhcmFjdGVyaXN0aWMoYXZBc3NldChtX2F2ZldyYXBwZXIpLCBBVkNGTWVkaWFDaGFyYWN0
ZXJpc3RpY0F1ZGlibGUpOworICAgIEFWQ0ZNZWRpYVNlbGVjdGlvbk9wdGlvblJlZiBjdXJyZW50
bHlTZWxlY3RlZEF1ZGlibGVPcHRpb24gPSBBVkNGUGxheWVySXRlbUdldFNlbGVjdGVkTWVkaWFP
cHRpb25Jbk1lZGlhU2VsZWN0aW9uR3JvdXAoYXZQbGF5ZXJJdGVtKG1fYXZmV3JhcHBlciksIGF1
ZGlibGVHcm91cCk7CisgICAgaWYgKGN1cnJlbnRseVNlbGVjdGVkQXVkaWJsZU9wdGlvbikgewor
ICAgICAgICBSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+IGF1ZGlibGVPcHRpb25Mb2NhbGUgPSBhZG9w
dENGKEFWQ0ZNZWRpYVNlbGVjdGlvbk9wdGlvbkNvcHlMb2NhbGUoY3VycmVudGx5U2VsZWN0ZWRB
dWRpYmxlT3B0aW9uKSk7CisgICAgICAgIG1fbGFuZ3VhZ2VPZlByaW1hcnlBdWRpb1RyYWNrID0g
Q0ZMb2NhbGVHZXRJZGVudGlmaWVyKGF1ZGlibGVPcHRpb25Mb2NhbGUuZ2V0KCkpOworICAgICAg
ICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6bGFuZ3VhZ2VP
ZlByaW1hcnlBdWRpb1RyYWNrKCVwKSAtIHJldHVybmluZyBsYW5ndWFnZSBvZiBzZWxlY3RlZCBh
dWRpYmxlIG9wdGlvbjogJXMiLCB0aGlzLCBtX2xhbmd1YWdlT2ZQcmltYXJ5QXVkaW9UcmFjay51
dGY4KCkuZGF0YSgpKTsKKworICAgICAgICByZXR1cm4gbV9sYW5ndWFnZU9mUHJpbWFyeUF1ZGlv
VHJhY2s7CisgICAgfQorI2VuZGlmIC8vIEhBVkUoQVZGT1VOREFUSU9OX01FRElBX1NFTEVDVElP
Tl9HUk9VUCkKKworICAgIC8vIEFWRm91bmRhdGlvbiBzeW50aGVzaXplcyBhbiBhdWRpYmxlIGdy
b3VwIHdoZW4gdGhlcmUgaXMgb25seSBvbmUgdW5ncm91cGVkIGF1ZGlvIHRyYWNrIGlmIHRoZXJl
IGlzIGFsc28gYSBsZWdpYmxlIGdyb3VwIChvbmUgb3IKKyAgICAvLyBtb3JlIGluLWJhbmQgdGV4
dCB0cmFja3MpLiBJdCBkb2Vzbid0IGtub3cgYWJvdXQgb3V0LW9mLWJhbmQgdHJhY2tzLCBzbyBp
ZiB0aGVyZSBpcyBhIHNpbmdsZSBhdWRpbyB0cmFjayByZXR1cm4gaXRzIGxhbmd1YWdlLgorICAg
IFJldGFpblB0cjxDRkFycmF5UmVmPiB0cmFja3MgPSBhZG9wdENGKEFWQ0ZBc3NldENvcHlUcmFj
a3NXaXRoTWVkaWFUeXBlKGF2QXNzZXQobV9hdmZXcmFwcGVyKSwgQVZDRk1lZGlhVHlwZUF1ZGlv
KSk7CisgICAgQ0ZJbmRleCB0cmFja0NvdW50ID0gQ0ZBcnJheUdldENvdW50KHRyYWNrcy5nZXQo
KSk7CisgICAgaWYgKCF0cmFja3MgfHwgdHJhY2tDb3VudCAhPSAxKSB7CisgICAgICAgIG1fbGFu
Z3VhZ2VPZlByaW1hcnlBdWRpb1RyYWNrID0gZW1wdHlTdHJpbmcoKTsKKyAgICAgICAgTE9HKE1l
ZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6Omxhbmd1YWdlT2ZQcmltYXJ5
QXVkaW9UcmFjayglcCkgLSAlaSBhdWRpbyB0cmFja3MsIHJldHVybmluZyBlbXB0eVN0cmluZygp
IiwgdGhpcywgKHRyYWNrcyA/IHRyYWNrQ291bnQgOiAwKSk7CisgICAgICAgIHJldHVybiBtX2xh
bmd1YWdlT2ZQcmltYXJ5QXVkaW9UcmFjazsKKyAgICB9CisKKyAgICBBVkNGQXNzZXRUcmFja1Jl
ZiB0cmFjayA9IChBVkNGQXNzZXRUcmFja1JlZilDRkFycmF5R2V0VmFsdWVBdEluZGV4KHRyYWNr
cy5nZXQoKSwgMCk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBsYW5ndWFnZSA9IGFkb3B0
Q0YoQVZDRkFzc2V0VHJhY2tDb3B5RXh0ZW5kZWRMYW5ndWFnZVRhZyh0cmFjaykpOworCisgICAg
Ly8gU29tZSBsZWdhY3kgdHJhY2tzIGhhdmUgInVuZCIgYXMgYSBsYW5ndWFnZSwgdHJlYXQgdGhh
dCB0aGUgc2FtZSBhcyBubyBsYW5ndWFnZSBhdCBhbGwuCisgICAgaWYgKGxhbmd1YWdlICYmIENG
U3RyaW5nQ29tcGFyZShsYW5ndWFnZS5nZXQoKSwgQ0ZTVFIoInVuZCIpLCBrQ0ZDb21wYXJlQ2Fz
ZUluc2Vuc2l0aXZlKSAhPSBrQ0ZDb21wYXJlRXF1YWxUbykgeworICAgICAgICBtX2xhbmd1YWdl
T2ZQcmltYXJ5QXVkaW9UcmFjayA9IGxhbmd1YWdlLmdldCgpOworICAgICAgICBMT0coTWVkaWEs
ICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6bGFuZ3VhZ2VPZlByaW1hcnlBdWRp
b1RyYWNrKCVwKSAtIHJldHVybmluZyBsYW5ndWFnZSBvZiBzaW5nbGUgYXVkaW8gdHJhY2s6ICVz
IiwgdGhpcywgbV9sYW5ndWFnZU9mUHJpbWFyeUF1ZGlvVHJhY2sudXRmOCgpLmRhdGEoKSk7Cisg
ICAgICAgIHJldHVybiBtX2xhbmd1YWdlT2ZQcmltYXJ5QXVkaW9UcmFjazsKKyAgICB9CisKKyAg
ICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6bGFuZ3VhZ2VP
ZlByaW1hcnlBdWRpb1RyYWNrKCVwKSAtIHNpbmdsZSBhdWRpbyB0cmFjayBoYXMgbm8gbGFuZ3Vh
Z2UsIHJldHVybmluZyBlbXB0eVN0cmluZygpIiwgdGhpcyk7CisgICAgbV9sYW5ndWFnZU9mUHJp
bWFyeUF1ZGlvVHJhY2sgPSBlbXB0eVN0cmluZygpOworICAgIHJldHVybiBtX2xhbmd1YWdlT2ZQ
cmltYXJ5QXVkaW9UcmFjazsKK30KKwogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25DRjo6Y29udGVudHNOZWVkc0Rpc3BsYXkoKQogewogICAgIGlmIChtX2F2ZldyYXBwZXIpCkBA
IC04NzAsNiArMTE2Myw4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6
OmMKIEFWRldyYXBwZXI6OkFWRldyYXBwZXIoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
Q0YqIG93bmVyKQogICAgIDogbV9vd25lcihvd25lcikKICAgICAsIG1fb2JqZWN0SUQoc19uZXh0
QVZGV3JhcHBlck9iamVjdElEKyspCisgICAgLCBtX2N1cnJlbnRDdWVUaW1lKDApCisgICAgLCBt
X2N1cnJlbnRUcmFjaygwKQogewogICAgIExPRyhNZWRpYSwgIkFWRldyYXBwZXI6OkFWRldyYXBw
ZXIoJXApIiwgdGhpcyk7CiAKQEAgLTg5Miw2ICsxMTg3LDE0IEBAIEFWRldyYXBwZXI6On5BVkZX
cmFwcGVyKCkKICAgICAgICAgbV9hdkFzc2V0ID0gMDsKICAgICB9CiAKKyNpZiBIQVZFKEFWRk9V
TkRBVElPTl9NRURJQV9TRUxFQ1RJT05fR1JPVVApICYmIEhBVkUoQVZGT1VOREFUSU9OX0xFR0lC
TEVfT1VUUFVUX1NVUFBPUlQpCisgICAgaWYgKGxlZ2libGVPdXRwdXQoKSkgeworICAgICAgICBp
ZiAoYXZQbGF5ZXJJdGVtKCkpCisgICAgICAgICAgICBBVkNGUGxheWVySXRlbVJlbW92ZU91dHB1
dChhdlBsYXllckl0ZW0oKSwgbGVnaWJsZU91dHB1dCgpKTsKKyAgICAgICAgbV9sZWdpYmxlT3V0
cHV0ID0gMDsKKyAgICB9CisjZW5kaWYKKwogICAgIG1fYXZQbGF5ZXJJdGVtID0gMDsKICAgICBt
X3RpbWVPYnNlcnZlciA9IDA7CiAgICAgbV9hdlBsYXllciA9IDA7CkBAIC0xMDA0LDEzICsxMzA3
LDI3IEBAIHZvaWQgQVZGV3JhcHBlcjo6Y3JlYXRlUGxheWVyKElEaXJlY3QzREQKICAgICBpZiAo
bV9kM2REZXZpY2UgJiYgQVZDRlBsYXllckVuYWJsZUhhcmR3YXJlQWNjZWxlcmF0ZWRWaWRlb0Rl
Y29kZXJLZXkpCiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKG9wdGlvbnNSZWYuZ2V0KCks
IEFWQ0ZQbGF5ZXJFbmFibGVIYXJkd2FyZUFjY2VsZXJhdGVkVmlkZW9EZWNvZGVyS2V5LCBrQ0ZC
b29sZWFuVHJ1ZSk7CiAKKyNpZiBIQVZFKEFWRk9VTkRBVElPTl9NRURJQV9TRUxFQ1RJT05fR1JP
VVApICYmIEhBVkUoQVZGT1VOREFUSU9OX0xFR0lCTEVfT1VUUFVUX1NVUFBPUlQpCisgICAgQ0ZE
aWN0aW9uYXJ5U2V0VmFsdWUob3B0aW9uc1JlZi5nZXQoKSwgQVZDRlBsYXllckFwcGxpZXNNZWRp
YVNlbGVjdGlvbkNyaXRlcmlhQXV0b21hdGljYWxseUtleSwga0NGQm9vbGVhblRydWUpOworI2Vu
ZGlmCisKICAgICAvLyBGSVhNRTogV2UgbmVlZCBhIHdheSB0byBjcmVhdGUgYSBBVlBsYXllciB3
aXRob3V0IGFuIEFWUGxheWVySXRlbSwgc2VlIDxyZGFyOi8vcHJvYmxlbS85ODc3NzMwPi4KICAg
ICBBVkNGUGxheWVyUmVmIHBsYXllclJlZiA9IEFWQ0ZQbGF5ZXJDcmVhdGVXaXRoUGxheWVySXRl
bUFuZE9wdGlvbnMoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYXZQbGF5ZXJJdGVtKCksIG9wdGlvbnNS
ZWYuZ2V0KCksIG1fbm90aWZpY2F0aW9uUXVldWUpOwogICAgIG1fYXZQbGF5ZXIgPSBhZG9wdENG
KHBsYXllclJlZik7CisjaWYgSEFWRShBVkZPVU5EQVRJT05fTUVESUFfU0VMRUNUSU9OX0dST1VQ
KSAmJiBIQVZFKEFWRk9VTkRBVElPTl9MRUdJQkxFX09VVFBVVF9TVVBQT1JUKQorICAgIEFWQ0ZQ
bGF5ZXJTZXRDbG9zZWRDYXB0aW9uRGlzcGxheUVuYWJsZWQocGxheWVyUmVmLCBGQUxTRSk7Cisj
ZW5kaWYKIAogICAgIGlmIChtX2QzZERldmljZSAmJiBBVkNGUGxheWVyU2V0RGlyZWN0M0REZXZp
Y2VQdHIoKSkKICAgICAgICAgQVZDRlBsYXllclNldERpcmVjdDNERGV2aWNlUHRyKCkocGxheWVy
UmVmLCBtX2QzZERldmljZS5nZXQoKSk7CiAKKyNpZiBIQVZFKEFWRk9VTkRBVElPTl9NRURJQV9T
RUxFQ1RJT05fR1JPVVApICYmIEhBVkUoQVZGT1VOREFUSU9OX0xFR0lCTEVfT1VUUFVUX1NVUFBP
UlQpCisgICAgLy8gQmVjYXVzZSBvZiBhIGJ1ZyBpbiBBVkZvdW5kYXRpb25DRiwgd2UgaGF2ZSB0
byB3YWl0IHVudGlsIHRoZSBwbGF5ZXIgaXMgY3JlYXRlZCBiZWZvcmUgd2UgY2FuIGFkZCB0aGUg
bGVnaWJsZSBvdXRwdXQ6CisgICAgLy8gT25jZSA8cmRhcjovL3Byb2JsZW0vMTQzOTA0NjY+IHRo
aXMgaXMgZml4ZWQsIHdlIGNhbiByZW1vdmUgdGhlIGZvbGxvd2luZyB0d28gbGluZXMuCisgICAg
OjpTbGVlcCgxMDAwKTsgLy8gRklYTUU6IFRoaXMgaXMgYmVpbmcgZml4ZWQgYXMgcGFydCBvZiA8
cmRhcjovL3Byb2JsZW0vMTQzOTA0NjY+CisgICAgQVZDRlBsYXllckl0ZW1BZGRPdXRwdXQoYXZQ
bGF5ZXJJdGVtKCksIGxlZ2libGVPdXRwdXQoKSk7CisjZW5kaWYKKwogICAgIENGTm90aWZpY2F0
aW9uQ2VudGVyUmVmIGNlbnRlciA9IENGTm90aWZpY2F0aW9uQ2VudGVyR2V0TG9jYWxDZW50ZXIo
KTsKICAgICBBU1NFUlQoY2VudGVyKTsKIApAQCAtMTA0MSw4ICsxMzU4LDQxIEBAIHZvaWQgQVZG
V3JhcHBlcjo6Y3JlYXRlUGxheWVySXRlbSgpCiAgICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJBZGRP
YnNlcnZlcihjZW50ZXIsIGNhbGxiYWNrQ29udGV4dCgpLCBub3RpZmljYXRpb25DYWxsYmFjaywg
QVZDRlBsYXllckl0ZW1Jc1BsYXliYWNrTGlrZWx5VG9LZWVwVXBDaGFuZ2VkTm90aWZpY2F0aW9u
LCBpdGVtUmVmLCBDRk5vdGlmaWNhdGlvblN1c3BlbnNpb25CZWhhdmlvckRlbGl2ZXJJbW1lZGlh
dGVseSk7CiAgICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJBZGRPYnNlcnZlcihjZW50ZXIsIGNhbGxi
YWNrQ29udGV4dCgpLCBub3RpZmljYXRpb25DYWxsYmFjaywgQVZDRlBsYXllckl0ZW1Jc1BsYXli
YWNrQnVmZmVyRW1wdHlDaGFuZ2VkTm90aWZpY2F0aW9uLCBpdGVtUmVmLCBDRk5vdGlmaWNhdGlv
blN1c3BlbnNpb25CZWhhdmlvckRlbGl2ZXJJbW1lZGlhdGVseSk7CiAgICAgQ0ZOb3RpZmljYXRp
b25DZW50ZXJBZGRPYnNlcnZlcihjZW50ZXIsIGNhbGxiYWNrQ29udGV4dCgpLCBub3RpZmljYXRp
b25DYWxsYmFjaywgQVZDRlBsYXllckl0ZW1Jc1BsYXliYWNrQnVmZmVyRnVsbENoYW5nZWROb3Rp
ZmljYXRpb24sIGl0ZW1SZWYsIENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZl
ckltbWVkaWF0ZWx5KTsKKyAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2VydmVyKGNlbnRl
ciwgY2FsbGJhY2tDb250ZXh0KCksIG5vdGlmaWNhdGlvbkNhbGxiYWNrLCBBVkNGUGxheWVySXRl
bUR1cmF0aW9uQ2hhbmdlZE5vdGlmaWNhdGlvbiwgaXRlbVJlZiwgQ0ZOb3RpZmljYXRpb25TdXNw
ZW5zaW9uQmVoYXZpb3JEZWxpdmVySW1tZWRpYXRlbHkpOworICAgIC8vIEZJWE1FOiBBcmUgdGhl
cmUgb3RoZXIgbGVnaWJsZSBvdXRwdXQgdGhpbmdzIHdlIG5lZWQgdG8gcmVnaXN0ZXIgZm9yPyBh
c3NldCwgaGFzRW5hYmxlZEF1ZGlvPwogCiAgICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJBZGRPYnNl
cnZlcihjZW50ZXIsIGNhbGxiYWNrQ29udGV4dCgpLCBub3RpZmljYXRpb25DYWxsYmFjaywgQ0FD
RkNvbnRleHROZWVkc0ZsdXNoTm90aWZpY2F0aW9uKCksIDAsIENGTm90aWZpY2F0aW9uU3VzcGVu
c2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsKKworI2lmIEhBVkUoQVZGT1VOREFUSU9O
X01FRElBX1NFTEVDVElPTl9HUk9VUCkgJiYgSEFWRShBVkZPVU5EQVRJT05fTEVHSUJMRV9PVVRQ
VVRfU1VQUE9SVCkKKyAgICAvLyBOZWVkIGFuIGluaXRpYWwgbGVnaWJsZSBvdXRwdXQgc291cmNl
IGR1cmluZyBjb25zdHJ1Y3Rpb24uIFdlIGNhbiBjaGFuZ2UgdGhpcyB0byB0aGUgdXNlJ3MgcHJl
ZmVyZW5jZSBsYXRlci4KKyAgICBBVkNGTWVkaWFTZWxlY3Rpb25Hcm91cFJlZiBsZWdpYmxlR3Jv
dXAgPSBzYWZlTWVkaWFTZWxlY3Rpb25Hcm91cEZvckxlZ2libGVNZWRpYSgpOworICAgIGlmICgh
bGVnaWJsZUdyb3VwKQorICAgICAgICByZXR1cm47CisKKyAgICBSZXRhaW5QdHI8Q0ZBcnJheVJl
Zj4gcGxheWFibGVPcHRpb25zID0gYWRvcHRDRihBVkNGTWVkaWFTZWxlY3Rpb25Db3B5UGxheWFi
bGVPcHRpb25zRnJvbUFycmF5KEFWQ0ZNZWRpYVNlbGVjdGlvbkdyb3VwR2V0T3B0aW9ucyhsZWdp
YmxlR3JvdXApKSk7CisKKyAgICBpZiAoQ0ZBcnJheUdldENvdW50KHBsYXlhYmxlT3B0aW9ucy5n
ZXQoKSkpIHsKKyAgICAgICAgQVZDRk1lZGlhU2VsZWN0aW9uT3B0aW9uUmVmIGxlZ2libGVPcHRp
b24gPSByZWludGVycHJldF9jYXN0PEFWQ0ZNZWRpYVNlbGVjdGlvbk9wdGlvblJlZj4oQ0ZBcnJh
eUdldFZhbHVlQXRJbmRleChwbGF5YWJsZU9wdGlvbnMuZ2V0KCksIDApKTsKKyAgICAgICAgQVZD
RlBsYXllckl0ZW1TZWxlY3RNZWRpYU9wdGlvbkluTWVkaWFTZWxlY3Rpb25Hcm91cChpdGVtUmVm
LCBsZWdpYmxlT3B0aW9uLCBsZWdpYmxlR3JvdXApOworICAgIH0KKworICAgIGNvbnN0IENGVGlt
ZUludGVydmFsIGxlZ2libGVPdXRwdXRBZHZhbmNlSW50ZXJ2YWwgPSAyOworICAgIG1fbGVnaWJs
ZU91dHB1dCA9IGFkb3B0Q0YoQVZDRlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0Q3JlYXRlV2l0aE1l
ZGlhU3VidHlwZXNGb3JOYXRpdmVSZXByZXNlbnRhdGlvbihrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAw
KSk7CisgICAgQVZDRlBsYXllckl0ZW1PdXRwdXRTZXRTdXBwcmVzc1BsYXllclJlbmRlcmluZyht
X2xlZ2libGVPdXRwdXQuZ2V0KCksIFRSVUUpOworCisgICAgQVZDRlBsYXllckl0ZW1MZWdpYmxl
T3V0cHV0Q2FsbGJhY2tzIGNhbGxiYWNrSW5mbzsKKyAgICBjYWxsYmFja0luZm8udmVyc2lvbiA9
IGtBVkNGUGxheWVySXRlbUxlZ2libGVPdXRwdXRfQ2FsbGJhY2tzVmVyc2lvbl8xOworICAgIEFT
U0VSVChjYWxsYmFja0NvbnRleHQoKSk7CisgICAgY2FsbGJhY2tJbmZvLmNvbnRleHQgPSBjYWxs
YmFja0NvbnRleHQoKTsKKyAgICBjYWxsYmFja0luZm8ubGVnaWJsZU91dHB1dENhbGxiYWNrID0g
QVZGV3JhcHBlcjo6bGVnaWJsZU91dHB1dENhbGxiYWNrOworCisgICAgQVZDRlBsYXllckl0ZW1M
ZWdpYmxlT3V0cHV0U2V0Q2FsbGJhY2tzKG1fbGVnaWJsZU91dHB1dC5nZXQoKSwgJmNhbGxiYWNr
SW5mbywgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSk7CisgICAgQVZDRlBsYXllckl0ZW1MZWdp
YmxlT3V0cHV0U2V0QWR2YW5jZUludGVydmFsRm9yQ2FsbGJhY2tJbnZvY2F0aW9uKG1fbGVnaWJs
ZU91dHB1dC5nZXQoKSwgbGVnaWJsZU91dHB1dEFkdmFuY2VJbnRlcnZhbCk7CisgICAgQVZDRlBs
YXllckl0ZW1MZWdpYmxlT3V0cHV0U2V0VGV4dFN0eWxpbmdSZXNvbHV0aW9uKG1fbGVnaWJsZU91
dHB1dC5nZXQoKSwgQVZDRlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0VGV4dFN0eWxpbmdSZXNvbHV0
aW9uU291cmNlQW5kUnVsZXNPbmx5KTsKKyAgICAvLyBXZSBjYW5ub3QgYWRkIHRoZSBMZWdpYmxl
IE91dHB1dCB0byB0aGUgcGxheWVyIGl0ZW0gdW50aWwgdGhlIHBsYXllciBpcyBjb25zdHJ1Y3Rl
ZC4gPHJkYXI6Ly9wcm9ibGVtLzE0MzkwNDY2PgorICAgIC8vIE9uY2UgdGhpcyBpcyBmaXhlZCwg
d2UgY2FuIHVuY29tbWVudCB0aGUgZm9sbG93aW5nIGxpbmUuCisgICAgLy8gQVZDRlBsYXllckl0
ZW1BZGRPdXRwdXQobV9hdlBsYXllckl0ZW0uZ2V0KCksIG1fbGVnaWJsZU91dHB1dC5nZXQoKSk7
CisjZW5kaWYKIH0KIAogdm9pZCBBVkZXcmFwcGVyOjpwZXJpb2RpY1RpbWVPYnNlcnZlckNhbGxi
YWNrKEFWQ0ZQbGF5ZXJSZWYsIENNVGltZSBjbVRpbWUsIHZvaWQqIGNvbnRleHQpCkBAIC0xMTcx
LDYgKzE1MjEsNDAgQEAgdm9pZCBBVkZXcmFwcGVyOjpzZWVrVG9UaW1lKGZsb2F0IHRpbWUpCiAg
ICAgICAgIGtDTVRpbWVaZXJvLCBrQ01UaW1lWmVybywgJnNlZWtDb21wbGV0ZWRDYWxsYmFjaywg
Y2FsbGJhY2tDb250ZXh0KCkpOwogfQogCit2b2lkIEFWRldyYXBwZXI6OnByb2Nlc3NDdWUodm9p
ZCogY29udGV4dCkKK3sKKyAgICBBU1NFUlQoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSA9PSBk
aXNwYXRjaF9nZXRfY3VycmVudF9xdWV1ZSgpKTsKKyAgICBNdXRleExvY2tlciBsb2NrZXIobWFw
TG9jaygpKTsKKyAgICBBVkZXcmFwcGVyKiBzZWxmID0gYXZmV3JhcHBlckZvckNhbGxiYWNrQ29u
dGV4dChjb250ZXh0KTsKKyAgICBpZiAoIXNlbGYpIHsKKyAgICAgICAgTE9HKE1lZGlhLCAiQVZG
V3JhcHBlcjo6cHJvY2Vzc0N1ZSBpbnZva2VkIGZvciBkZWxldGVkIEFWRldyYXBwZXIgJWQiLCBy
ZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oY29udGV4dCkpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgaWYgKCFzZWxmLT5tX2N1cnJlbnRUcmFjaykKKyAgICAgICAgcmV0dXJuOwor
CisgICAgc2VsZi0+bV9jdXJyZW50VHJhY2stPnByb2Nlc3NDdWUoc2VsZi0+bV9jdXJyZW50Q3Vl
U3RyaW5ncy5nZXQoKSwgc2VsZi0+bV9jdXJyZW50Q3VlVGltZSk7Cit9CisKK3ZvaWQgQVZGV3Jh
cHBlcjo6bGVnaWJsZU91dHB1dENhbGxiYWNrKHZvaWQqIGNvbnRleHQsIEFWQ0ZQbGF5ZXJJdGVt
TGVnaWJsZU91dHB1dFJlZiAvKmxlZ2libGVPdXRwdXQqLywgQ0ZBcnJheVJlZiBhdHRyaWJ1dGVk
U3RyaW5ncywgQ0ZBcnJheVJlZiAvKm5hdGl2ZVNhbXBsZUJ1ZmZlcnMqLywgQ01UaW1lIGl0ZW1U
aW1lKQoreworICAgIEFTU0VSVChkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpID09IGRpc3BhdGNo
X2dldF9jdXJyZW50X3F1ZXVlKCkpOworICAgIE11dGV4TG9ja2VyIGxvY2tlcihtYXBMb2NrKCkp
OworICAgIEFWRldyYXBwZXIqIHNlbGYgPSBhdmZXcmFwcGVyRm9yQ2FsbGJhY2tDb250ZXh0KGNv
bnRleHQpOworICAgIGlmICghc2VsZikgeworICAgICAgICBMT0coTWVkaWEsICJBVkZXcmFwcGVy
OjpsZWdpYmxlT3V0cHV0Q2FsbGJhY2sgaW52b2tlZCBmb3IgZGVsZXRlZCBBVkZXcmFwcGVyICVk
IiwgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGNvbnRleHQpKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIExPRyhNZWRpYSwgIkFWRldyYXBwZXI6OmxlZ2libGVPdXRwdXRDYWxs
YmFjayglcCkiLCBzZWxmKTsKKworICAgIHNlbGYtPm1fY3VycmVudEN1ZVN0cmluZ3MgPSBhdHRy
aWJ1dGVkU3RyaW5nczsKKyAgICBzZWxmLT5tX2N1cnJlbnRDdWVUaW1lID0gQ01UaW1lR2V0U2Vj
b25kcyhpdGVtVGltZSk7CisKKyAgICBkaXNwYXRjaF9hc3luY19mKGRpc3BhdGNoX2dldF9tYWlu
X3F1ZXVlKCksIGNvbnRleHQsIHByb2Nlc3NDdWUpOworfQorCiB2b2lkIEFWRldyYXBwZXI6OnNl
dEFzc2V0KEFWQ0ZVUkxBc3NldFJlZiBhc3NldCkKIHsKICAgICBpZiAoYXNzZXQgPT0gYXZBc3Nl
dCgpKQpAQCAtMTI4Myw2ICsxNjY3LDE5IEBAIFJldGFpblB0cjxDR0ltYWdlUmVmPiBBVkZXcmFw
cGVyOjpjcmVhdGUKICAgICByZXR1cm4gaW1hZ2U7CiB9CiAKKyNpZiBIQVZFKEFWRk9VTkRBVElP
Tl9NRURJQV9TRUxFQ1RJT05fR1JPVVApICYmIEhBVkUoQVZGT1VOREFUSU9OX0xFR0lCTEVfT1VU
UFVUX1NVUFBPUlQpCitBVkNGTWVkaWFTZWxlY3Rpb25Hcm91cFJlZiBBVkZXcmFwcGVyOjpzYWZl
TWVkaWFTZWxlY3Rpb25Hcm91cEZvckxlZ2libGVNZWRpYSgpIGNvbnN0Cit7CisgICAgaWYgKCFh
dkFzc2V0KCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKEFWQ0ZBc3NldEdldFN0YXR1
c09mVmFsdWVGb3JQcm9wZXJ0eShhdkFzc2V0KCksIEFWQ0ZBc3NldFByb3BlcnR5QXZhaWxhYmxl
TWVkaWFDaGFyYWN0ZXJpc3RpY3NXaXRoTWVkaWFTZWxlY3Rpb25PcHRpb25zLCAwKSAhPSBBVkNG
UHJvcGVydHlWYWx1ZVN0YXR1c0xvYWRlZCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1
cm4gQVZDRkFzc2V0R2V0U2VsZWN0aW9uR3JvdXBGb3JNZWRpYUNoYXJhY3RlcmlzdGljKGF2QXNz
ZXQoKSwgQVZDRk1lZGlhQ2hhcmFjdGVyaXN0aWNMZWdpYmxlKTsKK30KKyNlbmRpZgorCiB2b2lk
IExheWVyQ2xpZW50OjpwbGF0Zm9ybUNBTGF5ZXJMYXlvdXRTdWJsYXllcnNPZkxheWVyKFBsYXRm
b3JtQ0FMYXllciogd3JhcHBlckxheWVyKQogewogICAgIEFTU0VSVChtX3BhcmVudCk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uQ0YuaAkocmV2aXNpb24gMTUyNzQ3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bkNGLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMSwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDEwICszOCw5IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbkNGIDoKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25DRigpOwogCi0gICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJNZWRpYUVu
Z2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhcik7CisgICAgdmlydHVhbCB2b2lkIHRyYWNrc0NoYW5n
ZWQoKSBPVkVSUklERTsKIAotICAgIC8vRklYTUU6IHRoaXMgbmVlZHMgdG8gYmUgaW1wbGVtZW50
ZWQKLSAgICB2aXJ0dWFsIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkYqIGN1cnJlbnRUcmFjaygp
IGNvbnN0IHsgcmV0dXJuIDA7IH0KKyAgICBzdGF0aWMgdm9pZCByZWdpc3Rlck1lZGlhRW5naW5l
KE1lZGlhRW5naW5lUmVnaXN0cmFyKTsKIAogcHJpdmF0ZToKICAgICBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25DRihNZWRpYVBsYXllciopOwpAQCAtODUsNyArODQsNiBAQCBwcml2YXRl
OgogICAgIHZpcnR1YWwgZmxvYXQgcGxhdGZvcm1EdXJhdGlvbigpIGNvbnN0OwogICAgIHZpcnR1
YWwgZmxvYXQgcGxhdGZvcm1NYXhUaW1lTG9hZGVkKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lk
IGJlZ2luTG9hZGluZ01ldGFkYXRhKCk7Ci0gICAgdmlydHVhbCB2b2lkIHRyYWNrc0NoYW5nZWQo
KTsKICAgICB2aXJ0dWFsIHZvaWQgc2l6ZUNoYW5nZWQoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBo
YXNBdmFpbGFibGVWaWRlb0ZyYW1lKCkgY29uc3Q7CkBAIC0xMDEsOSArOTksMjUgQEAgcHJpdmF0
ZToKIAogICAgIHZpcnR1YWwgdm9pZCBjb250ZW50c05lZWRzRGlzcGxheSgpOwogCisgICAgdmly
dHVhbCBTdHJpbmcgbGFuZ3VhZ2VPZlByaW1hcnlBdWRpb1RyYWNrKCkgY29uc3QgT1ZFUlJJREU7
CisKKyNpZiBIQVZFKEFWRk9VTkRBVElPTl9NRURJQV9TRUxFQ1RJT05fR1JPVVApCisgICAgdm9p
ZCBwcm9jZXNzTWVkaWFTZWxlY3Rpb25PcHRpb25zKCk7CisjZW5kaWYKKworICAgIHZpcnR1YWwg
dm9pZCBzZXRDdXJyZW50VHJhY2soSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRiopIE9WRVJSSURF
OworICAgIHZpcnR1YWwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRiogY3VycmVudFRyYWNrKCkg
Y29uc3QgT1ZFUlJJREU7CisgICAgdm9pZCBwcm9jZXNzTmV3QW5kUmVtb3ZlZFRleHRUcmFja3Mo
Y29uc3QgVmVjdG9yPFJlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGPiA+Jik7CisgICAg
dm9pZCBjbGVhclRleHRUcmFja3MoKTsKKworI2lmICFIQVZFKEFWRk9VTkRBVElPTl9MRUdJQkxF
X09VVFBVVF9TVVBQT1JUKQorICAgIHZvaWQgcHJvY2Vzc0xlZ2FjeUNsb3NlZENhcHRpb25zVHJh
Y2tzKCk7CisjZW5kaWYKKwogICAgIGZyaWVuZCBjbGFzcyBBVkZXcmFwcGVyOwogICAgIEFWRldy
YXBwZXIqIG1fYXZmV3JhcHBlcjsKICAgICAKKyAgICBtdXRhYmxlIFN0cmluZyBtX2xhbmd1YWdl
T2ZQcmltYXJ5QXVkaW9UcmFjazsKICAgICBib29sIG1fdmlkZW9GcmFtZUhhc0RyYXduOwogfTsK
IApJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwko
cmV2aXNpb24gMTUyNzQ3KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMjEgQEAKKzIwMTMtMDctMTYgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5j
b20+CisKKyAgICAgICAgW1dpbl0gU3VwcG9ydCBpbi1iYW5kIHRleHQgdHJhY2tzLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzNzcwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIFdpbkxhdW5j
aGVyIHRvIHJ1biBpbiBhIENGUnVuTG9vcCAocmF0aGVyIHRoYW4gYSBoYW5kLXdyaXR0ZW4gV2lu
ZG93cyBldmVudCBsb29wKSBzbyB0aGF0CisgICAgICAgIGxpYmRpc3BhdGNoIGFuZCBDRlJ1bkxv
b3AgZWxlbWVudHMgYXJlIHNlcnZpY2VzIGR1cmluZyB0aGUgcnVuIGxvb3AuCisKKyAgICAgICAg
KiBXaW5MYXVuY2hlci9XaW5MYXVuY2hlci5jcHA6CisgICAgICAgIChkbGxMYXVuY2hlckVudHJ5
UG9pbnQpOiBVc2UgQ0ZSdW5Mb29wUnVuIChyYXRoZXIgdGhhbiBhIFdpbmRvd3MgbWVzc2FnZSBs
b29wKSBpZiBydW5uaW5nIHdpdGgKKyAgICAgICAgYSBDb3JlRm91bmRhdGlvbiAob3IgQ0ZMaXRl
KSBzdXBwb3J0IGxpYnJhcnkuCisgICAgICAgICogV2luTGF1bmNoZXIvV2luTGF1bmNoZXIudmN4
cHJvai9XaW5MYXVuY2hlckNGLnByb3BzOiBBZGRlZC4KKyAgICAgICAgKiBXaW5MYXVuY2hlci9X
aW5MYXVuY2hlci52Y3hwcm9qL1dpbkxhdW5jaGVyQ0ZMaXRlLnByb3BzOiBBZGRlZC4KKyAgICAg
ICAgKiBXaW5MYXVuY2hlci9XaW5MYXVuY2hlci52Y3hwcm9qL1dpbkxhdW5jaGVyTGliLnZjeHBy
b2o6IEFkZCByZWZlcmVuY2VzIHRvIFdpbkxhdW5jaGVyQ0YucHJvcHMKKyAgICAgICAgYW5kIFdp
bkxhdW5jaGVyQ0ZMaXRlLnByb3BzLgorCiAyMDEzLTA3LTE2ICBDaHJpc3RvcGhlIER1bWV6ICA8
Y2guZHVtZXpAc2lzYS5zYW1zdW5nLmNvbT4KIAogICAgICAgICBHZXQgcmlkIG9mIG11bHRpcGxl
IGluaGVyaXRhbmNlIHN1cHBvcnQgZnJvbSB0aGUgYmluZGluZ3MgZ2VuZXJhdG9ycwpJbmRleDog
VG9vbHMvV2luTGF1bmNoZXIvV2luTGF1bmNoZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dp
bkxhdW5jaGVyL1dpbkxhdW5jaGVyLmNwcAkocmV2aXNpb24gMTUyNzQ3KQorKysgVG9vbHMvV2lu
TGF1bmNoZXIvV2luTGF1bmNoZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiwxNSBA
QAogI2luY2x1ZGUgIkRPTURlZmF1bHRJbXBsLmgiCiAjaW5jbHVkZSAiUHJpbnRXZWJVSURlbGVn
YXRlLmgiCiAjaW5jbHVkZSA8V2ViS2l0L1dlYktpdENPTUFQSS5oPgorI2luY2x1ZGUgPHd0Zi9Q
bGF0Zm9ybS5oPgogCisjaWYgVVNFKENGKQorI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGUHJp
di5oPgorI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGUnVuTG9vcC5oPgorI2luY2x1ZGUgPENv
cmVGb3VuZGF0aW9uL0NGVGltZVpvbmUuaD4KKyNlbmRpZgorCisjaW5jbHVkZSA8YXNzZXJ0Lmg+
CiAjaW5jbHVkZSA8Y29tbWN0cmwuaD4KICNpbmNsdWRlIDxjb21tZGxnLmg+CiAjaW5jbHVkZSA8
b2JqYmFzZS5oPgpAQCAtNDIxLDEyICs0MjksMTcgQEAgZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRs
bGV4cG9ydCkgaW50IFdJTgogICAgIH0KIAogICAgIC8vIE1haW4gbWVzc2FnZSBsb29wOgorI2lm
IFVTRShDRikKKyAgICBfQ0ZSdW5Mb29wU2V0V2luZG93c01lc3NhZ2VRdWV1ZU1hc2soQ0ZSdW5M
b29wR2V0TWFpbigpLCBRU19BTExJTlBVVCB8IFFTX0FMTFBPU1RNRVNTQUdFLCBrQ0ZSdW5Mb29w
RGVmYXVsdE1vZGUpOworICAgIENGUnVuTG9vcFJ1bigpOworI2Vsc2UKICAgICB3aGlsZSAoR2V0
TWVzc2FnZSgmbXNnLCBOVUxMLCAwLCAwKSkgewogICAgICAgICBpZiAoIVRyYW5zbGF0ZUFjY2Vs
ZXJhdG9yKG1zZy5od25kLCBoQWNjZWxUYWJsZSwgJm1zZykpIHsKICAgICAgICAgICAgIFRyYW5z
bGF0ZU1lc3NhZ2UoJm1zZyk7CiAgICAgICAgICAgICBEaXNwYXRjaE1lc3NhZ2UoJm1zZyk7CiAg
ICAgICAgIH0KICAgICB9CisjZW5kaWYKIAogZXhpdDoKICAgICBnUHJpbnREZWxlZ2F0ZS0+UmVs
ZWFzZSgpOwpJbmRleDogVG9vbHMvV2luTGF1bmNoZXIvV2luTGF1bmNoZXIudmN4cHJvai9XaW5M
YXVuY2hlckxpYi52Y3hwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dpbkxhdW5jaGVyL1dpbkxh
dW5jaGVyLnZjeHByb2ovV2luTGF1bmNoZXJMaWIudmN4cHJvagkocmV2aXNpb24gMTUyNzQ3KQor
KysgVG9vbHMvV2luTGF1bmNoZXIvV2luTGF1bmNoZXIudmN4cHJvai9XaW5MYXVuY2hlckxpYi52
Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC02MiwyNyArNjIsMzMgQEAKICAgPEltcG9ydEdyb3Vw
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4z
MiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+DQogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2Vy
Um9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249
ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnBy
b3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4NCiAgICAgPEltcG9ydCBQcm9q
ZWN0PSJXaW5MYXVuY2hlckxpYlJlbGVhc2UucHJvcHMiIC8+DQorICAgIDxJbXBvcnQgUHJvamVj
dD0iV2luTGF1bmNoZXJDRi5wcm9wcyIgLz4NCiAgIDwvSW1wb3J0R3JvdXA+DQogICA8SW1wb3J0
R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNl
X1dpbkNhaXJvfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCiAgICAgPEltcG9ydCBQ
cm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJv
cHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxh
dGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KICAg
ICA8SW1wb3J0IFByb2plY3Q9IldpbkxhdW5jaGVyTGliUmVsZWFzZS5wcm9wcyIgLz4NCisgICAg
PEltcG9ydCBQcm9qZWN0PSJXaW5MYXVuY2hlckNGTGl0ZS5wcm9wcyIgLz4NCiAgIDwvSW1wb3J0
R3JvdXA+DQogICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCiAg
ICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZv
cm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3Nv
ZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRm
b3JtIiAvPg0KICAgICA8SW1wb3J0IFByb2plY3Q9IldpbkxhdW5jaGVyTGliUHJvZHVjdGlvbi5w
cm9wcyIgLz4NCisgICAgPEltcG9ydCBQcm9qZWN0PSJXaW5MYXVuY2hlckNGLnByb3BzIiAvPg0K
ICAgPC9JbXBvcnRHcm91cD4NCiAgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRz
Ij4NCiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQo
UGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxN
aWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0
YVBsYXRmb3JtIiAvPg0KICAgICA8SW1wb3J0IFByb2plY3Q9IldpbkxhdW5jaGVyTGliRGVidWcu
cHJvcHMiIC8+DQorICAgIDxJbXBvcnQgUHJvamVjdD0iV2luTGF1bmNoZXJDRi5wcm9wcyIgLz4N
CiAgIDwvSW1wb3J0R3JvdXA+DQogICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3xXaW4zMiciIExhYmVsPSJQcm9w
ZXJ0eVNoZWV0cyI+DQogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9z
b2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2Vy
Um9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJM
b2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4NCiAgICAgPEltcG9ydCBQcm9qZWN0PSJXaW5MYXVuY2hl
ckxpYkRlYnVnLnByb3BzIiAvPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9IldpbkxhdW5jaGVyQ0ZM
aXRlLnByb3BzIiAvPg0KICAgPC9JbXBvcnRHcm91cD4NCiAgIDxJbXBvcnRHcm91cCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fFdpbjMyJyIg
TGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290
RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhp
c3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMn
KSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KICAgICA8SW1wb3J0IFByb2plY3Q9
IldpbkxhdW5jaGVyTGliRGVidWcucHJvcHMiIC8+DQogICAgIDxJbXBvcnQgUHJvamVjdD0iJChX
ZWJLaXRfTGlicmFyaWVzKVx0b29sc1x2c3Byb3BzXGRlYnVnc3VmZml4LnByb3BzIiAvPg0KKyAg
ICA8SW1wb3J0IFByb2plY3Q9IldpbkxhdW5jaGVyQ0YucHJvcHMiIC8+DQogICA8L0ltcG9ydEdy
b3VwPg0KICAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+DQogICA8UHJvcGVy
dHlHcm91cD4NCkluZGV4OiBUb29scy9XaW5MYXVuY2hlci9XaW5MYXVuY2hlci52Y3hwcm9qL1dp
bkxhdW5jaGVyQ0YucHJvcHMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQg
YXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGFwcGxpY2F0aW9uL3htbApJbmRleDog
VG9vbHMvV2luTGF1bmNoZXIvV2luTGF1bmNoZXIudmN4cHJvai9XaW5MYXVuY2hlckNGLnByb3Bz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1dpbkxhdW5jaGVyL1dpbkxhdW5jaGVyLnZjeHByb2ovV2lu
TGF1bmNoZXJDRi5wcm9wcwkocmV2aXNpb24gMCkKKysrIFRvb2xzL1dpbkxhdW5jaGVyL1dpbkxh
dW5jaGVyLnZjeHByb2ovV2luTGF1bmNoZXJDRi5wcm9wcwkod29ya2luZyBjb3B5KQoKUHJvcGVy
dHkgY2hhbmdlcyBvbjogVG9vbHMvV2luTGF1bmNoZXIvV2luTGF1bmNoZXIudmN4cHJvai9XaW5M
YXVuY2hlckNGLnByb3BzCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjpleGVjdXRhYmxlCiMjIC0wLDAg
KzEgIyMKKyoKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpBZGRlZDogc3ZuOm1pbWUt
dHlwZQojIyAtMCwwICsxICMjCithcHBsaWNhdGlvbi94bWwKXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBwcm9wZXJ0eQoKNzd1L1BEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlk
WFJtTFRnaVB6NE5DanhRY205cVpXTjBJRlJ2YjJ4egpWbVZ5YzJsdmJqMGlOQzR3SWlCNGJXeHVj
ejBpYUhSMGNEb3ZMM05qYUdWdFlYTXViV2xqY205emIyWjBMbU52YlM5a1pYWmxiRzl3ClpYSXZi
WE5pZFdsc1pDOHlNREF6SWo0TkNpQWdQRWx0Y0c5eWRFZHliM1Z3SUV4aFltVnNQU0pRY205d1pY
SjBlVk5vWldWMGN5SWcKTHo0TkNpQWdQRkJ5YjNCbGNuUjVSM0p2ZFhBZ1RHRmlaV3c5SWxWelpY
Sk5ZV055YjNNaUlDOCtEUW9nSUR4UWNtOXdaWEowZVVkeQpiM1Z3SUM4K0RRb2dJRHhKZEdWdFJH
Vm1hVzVwZEdsdmJrZHliM1Z3UGcwS0lDQWdJRHhNYVc1clBnMEtJQ0FnSUNBZ1BFRmtaR2wwCmFX
OXVZV3hFWlhCbGJtUmxibU5wWlhNK1EyOXlaVVp2ZFc1a1lYUnBiMjRrS0VSbFluVm5VM1ZtWm1s
NEtTNXNhV0k3SlNoQlpHUnAKZEdsdmJtRnNSR1Z3Wlc1a1pXNWphV1Z6S1R3dlFXUmthWFJwYjI1
aGJFUmxjR1Z1WkdWdVkybGxjejROQ2lBZ0lDQThMMHhwYm1zKwpEUW9nSUR3dlNYUmxiVVJsWm1s
dWFYUnBiMjVIY205MWNENE5DaUFnUEVsMFpXMUhjbTkxY0NBdlBnMEtQQzlRY205cVpXTjBQZz09
CgpJbmRleDogVG9vbHMvV2luTGF1bmNoZXIvV2luTGF1bmNoZXIudmN4cHJvai9XaW5MYXVuY2hl
ckNGTGl0ZS5wcm9wcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBh
IGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0gYXBwbGljYXRpb24veG1sCkluZGV4OiBUb29s
cy9XaW5MYXVuY2hlci9XaW5MYXVuY2hlci52Y3hwcm9qL1dpbkxhdW5jaGVyQ0ZMaXRlLnByb3Bz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1dpbkxhdW5jaGVyL1dpbkxhdW5jaGVyLnZjeHByb2ovV2lu
TGF1bmNoZXJDRkxpdGUucHJvcHMJKHJldmlzaW9uIDApCisrKyBUb29scy9XaW5MYXVuY2hlci9X
aW5MYXVuY2hlci52Y3hwcm9qL1dpbkxhdW5jaGVyQ0ZMaXRlLnByb3BzCSh3b3JraW5nIGNvcHkp
CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29scy9XaW5MYXVuY2hlci9XaW5MYXVuY2hlci52Y3hw
cm9qL1dpbkxhdW5jaGVyQ0ZMaXRlLnByb3BzCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjpleGVjdXRh
YmxlCiMjIC0wLDAgKzEgIyMKKyoKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpBZGRl
ZDogc3ZuOm1pbWUtdHlwZQojIyAtMCwwICsxICMjCithcHBsaWNhdGlvbi94bWwKXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQoKNzd1L1BEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxi
bU52WkdsdVp6MGlkWFJtTFRnaVB6NE5DanhRY205cVpXTjBJRlJ2YjJ4egpWbVZ5YzJsdmJqMGlO
QzR3SWlCNGJXeHVjejBpYUhSMGNEb3ZMM05qYUdWdFlYTXViV2xqY205emIyWjBMbU52YlM5a1pY
WmxiRzl3ClpYSXZiWE5pZFdsc1pDOHlNREF6SWo0TkNpQWdQRWx0Y0c5eWRFZHliM1Z3SUV4aFlt
VnNQU0pRY205d1pYSjBlVk5vWldWMGN5SWcKTHo0TkNpQWdQRkJ5YjNCbGNuUjVSM0p2ZFhBZ1RH
RmlaV3c5SWxWelpYSk5ZV055YjNNaUlDOCtEUW9nSUR4UWNtOXdaWEowZVVkeQpiM1Z3SUM4K0RR
b2dJRHhKZEdWdFJHVm1hVzVwZEdsdmJrZHliM1Z3UGcwS0lDQWdJRHhNYVc1clBnMEtJQ0FnSUNB
Z1BFRmtaR2wwCmFXOXVZV3hFWlhCbGJtUmxibU5wWlhNK1EwWk1hWFJsTG14cFlqc2xLRUZrWkds
MGFXOXVZV3hFWlhCbGJtUmxibU5wWlhNcFBDOUIKWkdScGRHbHZibUZzUkdWd1pXNWtaVzVqYVdW
elBnMEtJQ0FnSUR3dlRHbHVhejROQ2lBZ1BDOUpkR1Z0UkdWbWFXNXBkR2x2YmtkeQpiM1Z3UGcw
S0lDQThTWFJsYlVkeWIzVndJQzgrRFFvOEwxQnliMnBsWTNRKwoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>206830</attachid>
            <date>2013-07-16 17:41:41 -0700</date>
            <delta_ts>2013-07-17 12:33:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103770-20130716174141.patch</filename>
            <type>text/plain</type>
            <size>95661</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1Mjc0NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBACisyMDEzLTA3LTE2ICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXaW5kb3dzXSBTdXBwb3J0
IGluLWJhbmQgdGV4dCB0cmFja3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDM3NzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBFeGlzdGluZyBtZWRpYSB0ZXN0cyBjb3ZlciB0aGVzZSBmZWF0dXJlcy4K
KworICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2o6IEFkZCBuZXcgZmls
ZXMgZm9yIFdpbmRvd3MgY2FwdGlvbnMKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29y
ZS52Y3hwcm9qLmZpbHRlcnM6IGRpdHRvLgorICAgICAgICAqIGNvbmZpZy5oOiBNYWtlIHN1cmUg
cHJvcGVyIGJ1aWQgZmxhZ3MgYXJlIHR1cm5lZCBvbiB3aGVuIGJ1aWxkaW5nCisgICAgICAgIHdp
dGggQVZDRl9MRUdJQkxFX09VVFBVVC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHA6IFVwZGF0ZQorICAgICAgICB0
byBzdXBwb3J0IFdpbmRvd3MgcGxhdGZvcm0uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaDogRGl0dG8uCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbi5jcHA6CisgICAgICAgIFJlbW92ZSBidWlsZCBndWFyZHMgcHJldmVudGluZyBXaW5k
b3dzIGZyb20gdXNpbmcgTGVnaWJsZU91dHB1dAorICAgICAgICBmZWF0dXJlcy4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uLmg6CisgICAgICAgIERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9jZi9BVkZvdW5kYXRpb25DRlNvZnRMaW5raW5nLmg6CisgICAgICAgIEFkZCBu
ZXcgTGVnaWJsZU91dHB1dCBzdXBwb3J0IGZ1bmN0aW9ucy4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vY2YvQ29yZU1lZGlhU29mdExpbmtpbmcuaDogRGl0dG8uCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0luYmFuZFRleHRUcmFj
a1ByaXZhdGVBVkNGLmNwcDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL2NmL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGLmg6IEFkZGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2
YXRlTGVnYWN5QVZDRi5jcHA6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZDRi5oOiBBZGRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwOgorICAgICAgICBVcGRhdGUgdG8gc3VwcG9ydCBMZWdp
YmxlT3V0cHV0IGZlYXR1cmVzIGZvciB0aGUgV2luZG93cyBwb3J0LgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25DRi5oOgorICAgICAgICBEaXR0by4KKwogMjAxMy0wNy0xNiAgQW5kcmVhcyBLbGluZyAgPGFr
bGluZ0BhcHBsZS5jb20+CiAKICAgICAgICAgQXRvbWljaXplIEhUTUxBbmNob3JFbGVtZW50Lmhh
c2ggYmVmb3JlIHBhc3NpbmcgaXQgdG8gSlMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jb25maWcu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb25maWcuaAkocmV2aXNpb24gMTUyNzQ3
KQorKysgU291cmNlL1dlYkNvcmUvY29uZmlnLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0MCw4ICsx
NDAsMTAgQEAgdHlwZWRlZiBmbG9hdCBDR0Zsb2F0OwogI2RlZmluZSBXVEZfVVNFX0FWRk9VTkRB
VElPTiAxCiAKICNpZiBIQVZFKEFWQ0ZfTEVHSUJMRV9PVVRQVVQpCisjZGVmaW5lIFdURl9VU0Vf
QVZGT1VOREFUSU9OIDEKICNkZWZpbmUgSEFWRV9BVkZPVU5EQVRJT05fTUVESUFfU0VMRUNUSU9O
X0dST1VQIDEKICNkZWZpbmUgSEFWRV9BVkZPVU5EQVRJT05fTEVHSUJMRV9PVVRQVVRfU1VQUE9S
VCAxCisjZGVmaW5lIEhBVkVfTUVESUFfQUNDRVNTSUJJTElUWV9GUkFNRVdPUksgMQogI2VuZGlm
CiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUu
dmN4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2Vi
Q29yZS52Y3hwcm9qCShyZXZpc2lvbiAxNTI3NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00MzQ5LDYgKzQzNDks
OSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cRmlsZVN0cmVhbS5jcHAi
IC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxGaWxlU3lzdGVtLmNwcCIg
Lz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXEFOR0xFV2Vi
S2l0QnJpZGdlLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdy
YXBoaWNzXGF2Zm91bmRhdGlvblxjZlxJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRi5jcHAiIC8+
CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xhdmZvdW5kYXRp
b25cY2ZcSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0YuY3BwIiAvPgorICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcYXZmb3VuZGF0aW9uXEluYmFuZFRl
eHRUcmFja1ByaXZhdGVBVkYuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxh
dGZvcm1cZ3JhcGhpY3NcY2Fpcm9cR0xDb250ZXh0LmNwcCI+CiAgICAgICA8RXhjbHVkZWRGcm9t
QnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xX
aW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxk
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxX
aW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgpAQCAtMTE4NzQsNiArMTE4NzcsOSBAQAog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cRmxvYXRDb252ZXJzaW9uLmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xBTkdMRVdlYktp
dEJyaWRnZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhp
Y3NcQXVkaW9UcmFja1ByaXZhdGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBs
YXRmb3JtXGdyYXBoaWNzXGF2Zm91bmRhdGlvblxjZlxJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZD
Ri5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcYXZm
b3VuZGF0aW9uXGNmXEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGLmgiIC8+CisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xhdmZvdW5kYXRpb25cSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cGxhdGZvcm1cZ3JhcGhpY3NcY2Fpcm9cR0xDb250ZXh0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xjYWlyb1xHcmFwaGljc0NvbnRleHQzRFByaXZh
dGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGNn
XFN1YmltYWdlQ2FjaGVXaXRoVGltZXIuaCI+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCShyZXZpc2lvbiAx
NTI3NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9q
LmZpbHRlcnMJKHdvcmtpbmcgY29weSkKQEAgLTcwNjYsNiArNzA2NiwxNiBAQAogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcZWdsXEdMQ29udGV4dEVHTC5jcHAi
PgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxncmFwaGljc1xlZ2w8L0ZpbHRlcj4KICAgICA8L0Ns
Q29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGly
KVxvYmozMlwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU1NWR0dyYXBoaWNzRWxlbWVu
dC5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xh
dmZvdW5kYXRpb25cY2ZcSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0YuY3BwIj4KKyAgICAgIDxG
aWx0ZXI+cGxhdGZvcm1cZ3JhcGhpY3NcYXZmb3VuZGF0aW9uXGNmPC9GaWx0ZXI+CisgICAgPC9D
bENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xh
dmZvdW5kYXRpb25cY2ZcSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0YuY3BwIj4KKyAg
ICAgIDxGaWx0ZXI+cGxhdGZvcm1cZ3JhcGhpY3NcYXZmb3VuZGF0aW9uXGNmPC9GaWx0ZXI+Cisg
ICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFw
aGljc1xhdmZvdW5kYXRpb25cSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHAiPgorICAgICAg
PEZpbHRlcj5wbGF0Zm9ybVxncmFwaGljc1xhdmZvdW5kYXRpb248L0ZpbHRlcj4KKyAgICA8L0Ns
Q29tcGlsZT4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cQXN5bmNGaWxlV3JpdGVyLmgiPgpAQCAtMTQ4
MTYsNiArMTQ4MjYsMTUgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdy
YXBoaWNzXGVnbFxHTENvbnRleHRFR0wuaCI+CiAgICAgICA8RmlsdGVyPnBsYXRmb3JtXGdyYXBo
aWNzXGVnbDwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcYXZmb3VuZGF0aW9uXGNmXEluYmFuZFRleHRUcmFja1By
aXZhdGVBVkNGLmgiPgorICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxncmFwaGljc1xhdmZvdW5kYXRp
b25cY2Y8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGF2Zm91bmRhdGlvblxjZlxJbmJhbmRUZXh0VHJhY2tQcml2
YXRlTGVnYWN5QVZDRi5oIj4KKyAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cZ3JhcGhpY3NcYXZmb3Vu
ZGF0aW9uXGNmPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xhdmZvdW5kYXRpb25cSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUFWRi5oIj4KKyAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cZ3JhcGhpY3NcYXZmb3VuZGF0aW9u
PC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3Vw
PgogICAgIDxOb25lIEluY2x1ZGU9Ii4uXGNzc1xDU1NHcmFtbWFyLnkuaW4iPgpAQCAtMTU3NjMs
NCArMTU3ODIsNCBAQAogICAgICAgPEZpbHRlcj5yZW5kZXJpbmc8L0ZpbHRlcj4KICAgICA8L0N1
c3RvbUJ1aWxkU3RlcD4KICAgPC9JdGVtR3JvdXA+Ci08L1Byb2plY3Q+Cis8L1Byb2plY3Q+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9J
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcAkocmV2aXNpb24gMTUyNzQ3KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1By
aXZhdGVBVkYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNpbmNsdWRl
ICJjb25maWcuaCIKIAotI2lmIEVOQUJMRShWSURFTykgJiYgKChVU0UoQVZGT1VOREFUSU9OKSAm
JiAhUExBVEZPUk0oV0lOKSkgfHwgUExBVEZPUk0oSU9TKSkKKyNpZiBFTkFCTEUoVklERU8pICYm
IChVU0UoQVZGT1VOREFUSU9OKSB8fCBQTEFURk9STShJT1MpKQogCiAjaW5jbHVkZSAiSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUFWRi5oIgogCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMu
aD4KIAorI2lmICFQTEFURk9STShXSU4pCiBTT0ZUX0xJTktfRlJBTUVXT1JLX09QVElPTkFMKENv
cmVNZWRpYSkKIAogU09GVF9MSU5LX1BPSU5URVJfT1BUSU9OQUwoQ29yZU1lZGlhLCBrQ01UZXh0
TWFya3VwQXR0cmlidXRlX0FsaWdubWVudCwgQ0ZTdHJpbmdSZWYpCkBAIC03OSw2ICs4MCw0OSBA
QCBTT0ZUX0xJTktfUE9JTlRFUl9PUFRJT05BTChDb3JlTWVkaWEsIGtDCiAjZGVmaW5lIGtDTVRl
eHRNYXJrdXBBdHRyaWJ1dGVfRm9yZWdyb3VuZENvbG9yQVJHQiBnZXRrQ01UZXh0TWFya3VwQXR0
cmlidXRlX0ZvcmVncm91bmRDb2xvckFSR0IoKQogI2RlZmluZSBrQ01UZXh0TWFya3VwQXR0cmli
dXRlX0JhY2tncm91bmRDb2xvckFSR0IgZ2V0a0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9CYWNrZ3Jv
dW5kQ29sb3JBUkdCKCkKICNkZWZpbmUga0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9DaGFyYWN0ZXJC
YWNrZ3JvdW5kQ29sb3JBUkdCIGdldGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfQ2hhcmFjdGVyQmFj
a2dyb3VuZENvbG9yQVJHQigpCisjZWxzZQorU09GVF9MSU5LX0xJQlJBUlkoQ29yZU1lZGlhKQor
CitTT0ZUX0xJTktfVkFSSUFCTEVfRExMX0lNUE9SVF9PUFRJT05BTChDb3JlTWVkaWEsIGtDTVRl
eHRNYXJrdXBBdHRyaWJ1dGVfQWxpZ25tZW50LCBDRlN0cmluZ1JlZikKK1NPRlRfTElOS19WQVJJ
QUJMRV9ETExfSU1QT1JUX09QVElPTkFMKENvcmVNZWRpYSwga0NNVGV4dE1hcmt1cEFsaWdubWVu
dFR5cGVfU3RhcnQsIENGU3RyaW5nUmVmKQorU09GVF9MSU5LX1ZBUklBQkxFX0RMTF9JTVBPUlRf
T1BUSU9OQUwoQ29yZU1lZGlhLCBrQ01UZXh0TWFya3VwQWxpZ25tZW50VHlwZV9NaWRkbGUsIENG
U3RyaW5nUmVmKQorU09GVF9MSU5LX1ZBUklBQkxFX0RMTF9JTVBPUlRfT1BUSU9OQUwoQ29yZU1l
ZGlhLCBrQ01UZXh0TWFya3VwQWxpZ25tZW50VHlwZV9FbmQsIENGU3RyaW5nUmVmKQorU09GVF9M
SU5LX1ZBUklBQkxFX0RMTF9JTVBPUlRfT1BUSU9OQUwoQ29yZU1lZGlhLCBrQ01UZXh0TWFya3Vw
QXR0cmlidXRlX0JvbGRTdHlsZSwgQ0ZTdHJpbmdSZWYpCitTT0ZUX0xJTktfVkFSSUFCTEVfRExM
X0lNUE9SVF9PUFRJT05BTChDb3JlTWVkaWEsIGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfSXRhbGlj
U3R5bGUsIENGU3RyaW5nUmVmKQorU09GVF9MSU5LX1ZBUklBQkxFX0RMTF9JTVBPUlRfT1BUSU9O
QUwoQ29yZU1lZGlhLCBrQ01UZXh0TWFya3VwQXR0cmlidXRlX1VuZGVybGluZVN0eWxlLCBDRlN0
cmluZ1JlZikKK1NPRlRfTElOS19WQVJJQUJMRV9ETExfSU1QT1JUX09QVElPTkFMKENvcmVNZWRp
YSwga0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9UZXh0UG9zaXRpb25QZXJjZW50YWdlUmVsYXRpdmVU
b1dyaXRpbmdEaXJlY3Rpb24sIENGU3RyaW5nUmVmKQorU09GVF9MSU5LX1ZBUklBQkxFX0RMTF9J
TVBPUlRfT1BUSU9OQUwoQ29yZU1lZGlhLCBrQ01UZXh0TWFya3VwQXR0cmlidXRlX1dyaXRpbmdE
aXJlY3Rpb25TaXplUGVyY2VudGFnZSwgQ0ZTdHJpbmdSZWYpCitTT0ZUX0xJTktfVkFSSUFCTEVf
RExMX0lNUE9SVF9PUFRJT05BTChDb3JlTWVkaWEsIGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfT3J0
aG9nb25hbExpbmVQb3NpdGlvblBlcmNlbnRhZ2VSZWxhdGl2ZVRvV3JpdGluZ0RpcmVjdGlvbiwg
Q0ZTdHJpbmdSZWYpCitTT0ZUX0xJTktfVkFSSUFCTEVfRExMX0lNUE9SVF9PUFRJT05BTChDb3Jl
TWVkaWEsIGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfVmVydGljYWxMYXlvdXQsIENGU3RyaW5nUmVm
KQorU09GVF9MSU5LX1ZBUklBQkxFX0RMTF9JTVBPUlRfT1BUSU9OQUwoQ29yZU1lZGlhLCBrQ01U
ZXh0VmVydGljYWxMYXlvdXRfTGVmdFRvUmlnaHQsIENGU3RyaW5nUmVmKQorU09GVF9MSU5LX1ZB
UklBQkxFX0RMTF9JTVBPUlRfT1BUSU9OQUwoQ29yZU1lZGlhLCBrQ01UZXh0VmVydGljYWxMYXlv
dXRfUmlnaHRUb0xlZnQsIENGU3RyaW5nUmVmKQorU09GVF9MSU5LX1ZBUklBQkxFX0RMTF9JTVBP
UlRfT1BUSU9OQUwoQ29yZU1lZGlhLCBrQ01UZXh0TWFya3VwQXR0cmlidXRlX0Jhc2VGb250U2l6
ZVBlcmNlbnRhZ2VSZWxhdGl2ZVRvVmlkZW9IZWlnaHQsIENGU3RyaW5nUmVmKQorU09GVF9MSU5L
X1ZBUklBQkxFX0RMTF9JTVBPUlRfT1BUSU9OQUwoQ29yZU1lZGlhLCBrQ01UZXh0TWFya3VwQXR0
cmlidXRlX1JlbGF0aXZlRm9udFNpemUsIENGU3RyaW5nUmVmKQorU09GVF9MSU5LX1ZBUklBQkxF
X0RMTF9JTVBPUlRfT1BUSU9OQUwoQ29yZU1lZGlhLCBrQ01UZXh0TWFya3VwQXR0cmlidXRlX0Zv
bnRGYW1pbHlOYW1lLCBDRlN0cmluZ1JlZikKK1NPRlRfTElOS19WQVJJQUJMRV9ETExfSU1QT1JU
X09QVElPTkFMKENvcmVNZWRpYSwga0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9Gb3JlZ3JvdW5kQ29s
b3JBUkdCLCBDRlN0cmluZ1JlZikKK1NPRlRfTElOS19WQVJJQUJMRV9ETExfSU1QT1JUX09QVElP
TkFMKENvcmVNZWRpYSwga0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9CYWNrZ3JvdW5kQ29sb3JBUkdC
LCBDRlN0cmluZ1JlZikKK1NPRlRfTElOS19WQVJJQUJMRV9ETExfSU1QT1JUX09QVElPTkFMKENv
cmVNZWRpYSwga0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9DaGFyYWN0ZXJCYWNrZ3JvdW5kQ29sb3JB
UkdCLCBDRlN0cmluZ1JlZikKKworI2RlZmluZSBrQ01UZXh0TWFya3VwQXR0cmlidXRlX0FsaWdu
bWVudCBnZXRfa0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9BbGlnbm1lbnQoKQorI2RlZmluZSBrQ01U
ZXh0TWFya3VwQWxpZ25tZW50VHlwZV9TdGFydCBnZXRfa0NNVGV4dE1hcmt1cEFsaWdubWVudFR5
cGVfU3RhcnQoKQorI2RlZmluZSBrQ01UZXh0TWFya3VwQWxpZ25tZW50VHlwZV9NaWRkbGUgZ2V0
X2tDTVRleHRNYXJrdXBBbGlnbm1lbnRUeXBlX01pZGRsZSgpCisjZGVmaW5lIGtDTVRleHRNYXJr
dXBBbGlnbm1lbnRUeXBlX0VuZCBnZXRfa0NNVGV4dE1hcmt1cEFsaWdubWVudFR5cGVfRW5kKCkK
KyNkZWZpbmUga0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9Cb2xkU3R5bGUgZ2V0X2tDTVRleHRNYXJr
dXBBdHRyaWJ1dGVfQm9sZFN0eWxlKCkKKyNkZWZpbmUga0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9J
dGFsaWNTdHlsZSBnZXRfa0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9JdGFsaWNTdHlsZSgpCisjZGVm
aW5lIGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfVW5kZXJsaW5lU3R5bGUgZ2V0X2tDTVRleHRNYXJr
dXBBdHRyaWJ1dGVfVW5kZXJsaW5lU3R5bGUoKQorI2RlZmluZSBrQ01UZXh0TWFya3VwQXR0cmli
dXRlX1RleHRQb3NpdGlvblBlcmNlbnRhZ2VSZWxhdGl2ZVRvV3JpdGluZ0RpcmVjdGlvbiBnZXRf
a0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9UZXh0UG9zaXRpb25QZXJjZW50YWdlUmVsYXRpdmVUb1dy
aXRpbmdEaXJlY3Rpb24oKQorI2RlZmluZSBrQ01UZXh0TWFya3VwQXR0cmlidXRlX1dyaXRpbmdE
aXJlY3Rpb25TaXplUGVyY2VudGFnZSBnZXRfa0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9Xcml0aW5n
RGlyZWN0aW9uU2l6ZVBlcmNlbnRhZ2UoKQorI2RlZmluZSBrQ01UZXh0TWFya3VwQXR0cmlidXRl
X09ydGhvZ29uYWxMaW5lUG9zaXRpb25QZXJjZW50YWdlUmVsYXRpdmVUb1dyaXRpbmdEaXJlY3Rp
b24gZ2V0X2tDTVRleHRNYXJrdXBBdHRyaWJ1dGVfT3J0aG9nb25hbExpbmVQb3NpdGlvblBlcmNl
bnRhZ2VSZWxhdGl2ZVRvV3JpdGluZ0RpcmVjdGlvbigpCisjZGVmaW5lIGtDTVRleHRNYXJrdXBB
dHRyaWJ1dGVfVmVydGljYWxMYXlvdXQgZ2V0X2tDTVRleHRNYXJrdXBBdHRyaWJ1dGVfVmVydGlj
YWxMYXlvdXQoKQorI2RlZmluZSBrQ01UZXh0VmVydGljYWxMYXlvdXRfTGVmdFRvUmlnaHQgZ2V0
X2tDTVRleHRWZXJ0aWNhbExheW91dF9MZWZ0VG9SaWdodCgpCisjZGVmaW5lIGtDTVRleHRWZXJ0
aWNhbExheW91dF9SaWdodFRvTGVmdCBnZXRfa0NNVGV4dFZlcnRpY2FsTGF5b3V0X1JpZ2h0VG9M
ZWZ0KCkKKyNkZWZpbmUga0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9CYXNlRm9udFNpemVQZXJjZW50
YWdlUmVsYXRpdmVUb1ZpZGVvSGVpZ2h0IGdldF9rQ01UZXh0TWFya3VwQXR0cmlidXRlX0Jhc2VG
b250U2l6ZVBlcmNlbnRhZ2VSZWxhdGl2ZVRvVmlkZW9IZWlnaHQoKQorI2RlZmluZSBrQ01UZXh0
TWFya3VwQXR0cmlidXRlX1JlbGF0aXZlRm9udFNpemUgZ2V0X2tDTVRleHRNYXJrdXBBdHRyaWJ1
dGVfUmVsYXRpdmVGb250U2l6ZSgpCisjZGVmaW5lIGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfRm9u
dEZhbWlseU5hbWUgZ2V0X2tDTVRleHRNYXJrdXBBdHRyaWJ1dGVfRm9udEZhbWlseU5hbWUoKQor
I2RlZmluZSBrQ01UZXh0TWFya3VwQXR0cmlidXRlX0ZvcmVncm91bmRDb2xvckFSR0IgZ2V0X2tD
TVRleHRNYXJrdXBBdHRyaWJ1dGVfRm9yZWdyb3VuZENvbG9yQVJHQigpCisjZGVmaW5lIGtDTVRl
eHRNYXJrdXBBdHRyaWJ1dGVfQmFja2dyb3VuZENvbG9yQVJHQiBnZXRfa0NNVGV4dE1hcmt1cEF0
dHJpYnV0ZV9CYWNrZ3JvdW5kQ29sb3JBUkdCKCkKKyNkZWZpbmUga0NNVGV4dE1hcmt1cEF0dHJp
YnV0ZV9DaGFyYWN0ZXJCYWNrZ3JvdW5kQ29sb3JBUkdCIGdldF9rQ01UZXh0TWFya3VwQXR0cmli
dXRlX0NoYXJhY3RlckJhY2tncm91bmRDb2xvckFSR0IoKQorI2VuZGlmCiAKIHVzaW5nIG5hbWVz
cGFjZSBzdGQ7CiAKQEAgLTQ1OSw0ICs1MDMsNCBAQCB2b2lkIEluYmFuZFRleHRUcmFja1ByaXZh
dGVBVkY6OnNldE1vZGUoCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVO
QUJMRShWSURFTykgJiYgKChVU0UoQVZGT1VOREFUSU9OKSAmJiAhUExBVEZPUk0oV0lOKSkgfHwg
UExBVEZPUk0oSU9TKSkKKyNlbmRpZiAvLyBFTkFCTEUoVklERU8pICYmIChVU0UoQVZGT1VOREFU
SU9OKSB8fCBQTEFURk9STShJT1MpKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUFWRi5oCShyZXZpc2lvbiAxNTI3NDcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFW
Ri5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIEluYmFuZFRleHRU
cmFja1ByaXZhdGVBVkZfaAogI2RlZmluZSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGX2gKIAot
I2lmIEVOQUJMRShWSURFTykgJiYgKChVU0UoQVZGT1VOREFUSU9OKSAmJiAhUExBVEZPUk0oV0lO
KSkgfHwgUExBVEZPUk0oSU9TKSkKKyNpZiBFTkFCTEUoVklERU8pICYmIChVU0UoQVZGT1VOREFU
SU9OKSB8fCBQTEFURk9STShJT1MpKQogCiAjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZS5oIgogI2luY2x1ZGUgIkluYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaCIKQEAgLTkwLDYg
KzkwLDYgQEAgcHJvdGVjdGVkOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAv
LyAgRU5BQkxFKFZJREVPKSAmJiAoKFVTRShBVkZPVU5EQVRJT04pICYmICFQTEFURk9STShXSU4p
KSB8fCBQTEFURk9STShJT1MpKQorI2VuZGlmIC8vICBFTkFCTEUoVklERU8pICYmIChVU0UoQVZG
T1VOREFUSU9OKSB8fCBQTEFURk9STShJT1MpKQogCiAjZW5kaWYgLy8gSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUFWRl9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcAkocmV2aXNpb24gMTUyNzQ3KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDkgKzc0LDcgQEAgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpNZWRpYVBsYQogICAgICwgbV9pZ25vcmVMb2FkU3RhdGVD
aGFuZ2VzKGZhbHNlKQogICAgICwgbV9oYXZlUmVwb3J0ZWRGaXJzdFZpZGVvRnJhbWUoZmFsc2Up
CiAgICAgLCBtX3BsYXlXaGVuRnJhbWVzQXZhaWxhYmxlKGZhbHNlKQotI2lmICFQTEFURk9STShX
SU4pCiAgICAgLCBtX2luYmFuZFRyYWNrQ29uZmlndXJhdGlvblBlbmRpbmcoZmFsc2UpCi0jZW5k
aWYKICAgICAsIG1fc2Vla0NvdW50KDApCiB7CiAgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24oJXApIiwg
dGhpcyk7CkBAIC0yNjcsMTAgKzI2NSw4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uOjpzZWUKICAgICBpZiAoY3VycmVudFRpbWUoKSA9PSB0aW1lKQogICAgICAgICByZXR1
cm47CiAKLSNpZiAhUExBVEZPUk0oV0lOKQogICAgIGlmIChjdXJyZW50VHJhY2soKSkKICAgICAg
ICAgY3VycmVudFRyYWNrKCktPmJlZ2luU2Vla2luZygpOwotI2VuZGlmCiAgICAgCiAgICAgTE9H
KE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpzZWVrKCVwKSAtIHNlZWtp
bmcgdG8gJWYiLCB0aGlzLCB0aW1lKTsKICAgICBtX3NlZWtUbyA9IHRpbWU7CkBAIC01OTksMTAg
KzU5NSw4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpzZWUKICAgICBp
ZiAoLS1tX3NlZWtDb3VudCkKICAgICAgICAgcmV0dXJuOwogCi0jaWYgIVBMQVRGT1JNKFdJTikK
ICAgICBpZiAoY3VycmVudFRyYWNrKCkpCiAgICAgICAgIGN1cnJlbnRUcmFjaygpLT5lbmRTZWVr
aW5nKCk7Ci0jZW5kaWYKIAogICAgIG1fc2Vla1RvID0gTWVkaWFQbGF5ZXI6OmludmFsaWRUaW1l
KCk7CiAgICAgdXBkYXRlU3RhdGVzKCk7CkBAIC04MzMsMTAgKzgyNyw4IEBAIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpkaXMKICAgICAgICAgY29udGVudHNOZWVkc0Rpc3Bs
YXkoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBOb3RpZmljYXRpb246OkluYmFuZFRyYWNr
c05lZWRDb25maWd1cmF0aW9uOgotI2lmICFQTEFURk9STShXSU4pCiAgICAgICAgIG1faW5iYW5k
VHJhY2tDb25maWd1cmF0aW9uUGVuZGluZyA9IGZhbHNlOwogICAgICAgICBjb25maWd1cmVJbmJh
bmRUcmFja3MoKTsKLSNlbmRpZgogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgTm90aWZpY2F0
aW9uOjpOb25lOgpAQCAtODQ1LDcgKzgzNyw2IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uOjpkaXMKICAgICB9CiB9CiAKLSNpZiAhUExBVEZPUk0oV0lOKQogdm9pZCBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OmNvbmZpZ3VyZUluYmFuZFRyYWNrcygpCiB7CiAg
ICAgUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY+IHRyYWNrVG9FbmFibGU7CkBAIC04
NzIsNyArODYzLDYgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnRyYQog
ICAgIG1faW5iYW5kVHJhY2tDb25maWd1cmF0aW9uUGVuZGluZyA9IHRydWU7CiAgICAgc2NoZWR1
bGVNYWluVGhyZWFkTm90aWZpY2F0aW9uKE5vdGlmaWNhdGlvbjo6SW5iYW5kVHJhY2tzTmVlZENv
bmZpZ3VyYXRpb24pOwogfQotI2VuZGlmCiAKIHNpemVfdCBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb246OmV4dHJhTWVtb3J5Q29zdCgpIGNvbnN0CiB7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oCShyZXZpc2lvbiAx
NTI3NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDEw
ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEluYmFuZFRleHRUcmFja1ByaXZh
dGVBVkY7CiBjbGFzcyBHZW5lcmljQ3VlRGF0YTsKIAotY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uIDogcHVibGljIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZQotI2lmICFQ
TEFURk9STShXSU4pCi0gICAgLCBwdWJsaWMgQVZGSW5iYW5kVHJhY2tQYXJlbnQKLSNlbmRpZgor
Y2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uIDogcHVibGljIE1lZGlhUGxheWVy
UHJpdmF0ZUludGVyZmFjZSwgcHVibGljIEFWRkluYmFuZFRyYWNrUGFyZW50CiB7CiBwdWJsaWM6
CiAKQEAgLTU2LDExICs1Myw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2Vla0NvbXBs
ZXRlZChib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRW5kKCk7CiAgICAgdmlydHVhbCB2b2lk
IGNvbnRlbnRzTmVlZHNEaXNwbGF5KCkgeyB9Ci0jaWYgIVBMQVRGT1JNKFdJTikKICAgICB2aXJ0
dWFsIHZvaWQgY29uZmlndXJlSW5iYW5kVHJhY2tzKCk7CiAgICAgdmlydHVhbCB2b2lkIHNldEN1
cnJlbnRUcmFjayhJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGKikgeyB9CiAgICAgdmlydHVhbCBJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGKiBjdXJyZW50VHJhY2soKSBjb25zdCA9IDA7Ci0jZW5k
aWYKIAogICAgIGNsYXNzIE5vdGlmaWNhdGlvbiB7CiAgICAgcHVibGljOgpAQCAtMjY4LDEwICsy
NjMsOCBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2aXJ0dWFsIHNpemVfdCBleHRyYU1lbW9yeUNvc3Qo
KSBjb25zdCBPVkVSUklERTsKIAotI2lmICFQTEFURk9STShXSU4pCiAgICAgdmlydHVhbCB2b2lk
IHRyYWNrTW9kZUNoYW5nZWQoKSBPVkVSUklERTsKICAgICBWZWN0b3I8UmVmUHRyPEluYmFuZFRl
eHRUcmFja1ByaXZhdGVBVkY+ID4gbV90ZXh0VHJhY2tzOwotI2VuZGlmCiAgICAgCiBwcml2YXRl
OgogICAgIE1lZGlhUGxheWVyKiBtX3BsYXllcjsKQEAgLTMwOCw5ICszMDEsNyBAQCBwcml2YXRl
OgogICAgIGJvb2wgbV9pZ25vcmVMb2FkU3RhdGVDaGFuZ2VzOwogICAgIGJvb2wgbV9oYXZlUmVw
b3J0ZWRGaXJzdFZpZGVvRnJhbWU7CiAgICAgYm9vbCBtX3BsYXlXaGVuRnJhbWVzQXZhaWxhYmxl
OwotI2lmICFQTEFURk9STShXSU4pCiAgICAgYm9vbCBtX2luYmFuZFRyYWNrQ29uZmlndXJhdGlv
blBlbmRpbmc7Ci0jZW5kaWYKICAgICBzaXplX3QgbV9zZWVrQ291bnQ7CiB9OwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvQVZGb3VuZGF0
aW9uQ0ZTb2Z0TGlua2luZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9BVkZvdW5kYXRpb25DRlNvZnRMaW5raW5nLmgJKHJl
dmlzaW9uIDE1Mjc0NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9jZi9BVkZvdW5kYXRpb25DRlNvZnRMaW5raW5nLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQyLDYgKzQyLDkgQEAgU09GVF9MSU5LX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQwog
U09GVF9MSU5LX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZBc3NldENvcHlBc3NldFRy
YWNrcywgQ0ZBcnJheVJlZiwgX19jZGVjbCwgKEFWQ0ZBc3NldFJlZiBhc3NldCksIChhc3NldCkp
CiAjZGVmaW5lIEFWQ0ZBc3NldENvcHlBc3NldFRyYWNrcyBzb2Z0TGlua19BVkNGQXNzZXRDb3B5
QXNzZXRUcmFja3MKIAorU09GVF9MSU5LX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZB
c3NldENvcHlBdmFpbGFibGVNZWRpYUNoYXJhY3RlcmlzdGljc1dpdGhNZWRpYVNlbGVjdGlvbk9w
dGlvbnMsIENGQXJyYXlSZWYsIF9fY2RlY2wsIChBVkNGQXNzZXRSZWYgYXNzZXQpLCAoYXNzZXQp
KQorI2RlZmluZSBBVkNGQXNzZXRDb3B5QXZhaWxhYmxlTWVkaWFDaGFyYWN0ZXJpc3RpY3NXaXRo
TWVkaWFTZWxlY3Rpb25PcHRpb25zIHNvZnRMaW5rX0FWQ0ZBc3NldENvcHlBdmFpbGFibGVNZWRp
YUNoYXJhY3RlcmlzdGljc1dpdGhNZWRpYVNlbGVjdGlvbk9wdGlvbnMKKwogU09GVF9MSU5LX0RM
TF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZBc3NldENvcHlUcmFja3NXaXRoTWVkaWFDaGFy
YWN0ZXJpc3RpYywgQ0ZBcnJheVJlZiwgX19jZGVjbCwgKEFWQ0ZBc3NldFJlZiBhc3NldCwgQ0ZT
dHJpbmdSZWYgbWVkaWFDaGFyYWN0ZXJpc3RpYyksIChhc3NldCwgbWVkaWFDaGFyYWN0ZXJpc3Rp
YykpCiAjZGVmaW5lIEFWQ0ZBc3NldENvcHlUcmFja3NXaXRoTWVkaWFDaGFyYWN0ZXJpc3RpYyBz
b2Z0TGlua19BVkNGQXNzZXRDb3B5VHJhY2tzV2l0aE1lZGlhQ2hhcmFjdGVyaXN0aWMKIApAQCAt
ODcsNiArOTAsMTUgQEAgU09GVF9MSU5LX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQwog
U09GVF9MSU5LX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZBc3NldExvYWRWYWx1ZXNB
c3luY2hyb25vdXNseUZvclByb3BlcnRpZXMsIHZvaWQsIF9fY2RlY2wsIChBVkNGQXNzZXRSZWYg
YXNzZXQsIENGQXJyYXlSZWYgcHJvcGVydGllcywgQVZDRkFzc2V0TG9hZFZhbHVlc0NvbXBsZXRp
b25DYWxsYmFjayBjYWxsYmFjaywgdm9pZCAqY2xpZW50Q29udGV4dCksIChhc3NldCwgcHJvcGVy
dGllcywgY2FsbGJhY2ssIGNsaWVudENvbnRleHQpKQogI2RlZmluZSBBVkNGQXNzZXRMb2FkVmFs
dWVzQXN5bmNocm9ub3VzbHlGb3JQcm9wZXJ0aWVzIHNvZnRMaW5rX0FWQ0ZBc3NldExvYWRWYWx1
ZXNBc3luY2hyb25vdXNseUZvclByb3BlcnRpZXMKIAorU09GVF9MSU5LX0RMTF9JTVBPUlQoQVZG
b3VuZGF0aW9uQ0YsIEFWQ0ZBc3NldFRyYWNrQ29weUNvbW1vbk1ldGFkYXRhLCBDRkFycmF5UmVm
LCBfX2NkZWNsLCAoQVZDRkFzc2V0VHJhY2tSZWYgYXNzZXRUcmFjayksIChhc3NldFRyYWNrKSkK
KyNkZWZpbmUgQVZDRkFzc2V0VHJhY2tDb3B5Q29tbW9uTWV0YWRhdGEgc29mdExpbmtfQVZDRkFz
c2V0VHJhY2tDb3B5Q29tbW9uTWV0YWRhdGEKKworU09GVF9MSU5LX0RMTF9JTVBPUlQoQVZGb3Vu
ZGF0aW9uQ0YsIEFWQ0ZBc3NldFRyYWNrQ29weUV4dGVuZGVkTGFuZ3VhZ2VUYWcsIENGU3RyaW5n
UmVmLCBfX2NkZWNsLCAoQVZDRkFzc2V0VHJhY2tSZWYgYXNzZXRUcmFjayksIChhc3NldFRyYWNr
KSkKKyNkZWZpbmUgQVZDRkFzc2V0VHJhY2tDb3B5RXh0ZW5kZWRMYW5ndWFnZVRhZyBzb2Z0TGlu
a19BVkNGQXNzZXRUcmFja0NvcHlFeHRlbmRlZExhbmd1YWdlVGFnCisKK1NPRlRfTElOS19ETExf
SU1QT1JUKEFWRm91bmRhdGlvbkNGLCBBVkNGQXNzZXRUcmFja0NvcHlMYW5ndWFnZUNvZGUsIENG
U3RyaW5nUmVmLCBfX2NkZWNsLCAoQVZDRkFzc2V0VHJhY2tSZWYgYXNzZXRUcmFjayksIChhc3Nl
dFRyYWNrKSkKKyNkZWZpbmUgQVZDRkFzc2V0VHJhY2tDb3B5TGFuZ3VhZ2VDb2RlIHNvZnRMaW5r
X0FWQ0ZBc3NldFRyYWNrQ29weUxhbmd1YWdlQ29kZQorCiBTT0ZUX0xJTktfRExMX0lNUE9SVChB
VkZvdW5kYXRpb25DRiwgQVZDRkFzc2V0VHJhY2tHZXRNZWRpYVR5cGUsIENGU3RyaW5nUmVmLCBf
X2NkZWNsLCAoQVZDRkFzc2V0VHJhY2tSZWYgYXNzZXRUcmFjayksIChhc3NldFRyYWNrKSkKICNk
ZWZpbmUgQVZDRkFzc2V0VHJhY2tHZXRNZWRpYVR5cGUgc29mdExpbmtfQVZDRkFzc2V0VHJhY2tH
ZXRNZWRpYVR5cGUKIApAQCAtOTksNiArMTExLDE4IEBAIFNPRlRfTElOS19ETExfSU1QT1JUKEFW
Rm91bmRhdGlvbkNGLCBBVkMKIFNPRlRfTElOS19ETExfSU1QT1JUKEFWRm91bmRhdGlvbkNGLCBB
VkNGQXNzZXRUcmFja0dldFRvdGFsU2FtcGxlRGF0YUxlbmd0aCwgaW50NjRfdCwgX19jZGVjbCwg
KEFWQ0ZBc3NldFRyYWNrUmVmIGFzc2V0VHJhY2spLCAoYXNzZXRUcmFjaykpCiAjZGVmaW5lIEFW
Q0ZBc3NldFRyYWNrR2V0VG90YWxTYW1wbGVEYXRhTGVuZ3RoIHNvZnRMaW5rX0FWQ0ZBc3NldFRy
YWNrR2V0VG90YWxTYW1wbGVEYXRhTGVuZ3RoCiAKK1NPRlRfTElOS19ETExfSU1QT1JUKEFWRm91
bmRhdGlvbkNGLCBBVkNGTWVkaWFTZWxlY3Rpb25Db3B5T3B0aW9uc0Zyb21BcnJheUZpbHRlcmVk
QW5kU29ydGVkQWNjb3JkaW5nVG9QcmVmZXJyZWRMYW5ndWFnZXMsIENGQXJyYXlSZWYsIF9fY2Rl
Y2wsIChDRkFycmF5UmVmIHNlbGVjdGlvbk9wdGlvbnMsIENGQXJyYXlSZWYgcHJlZmVycmVkTGFu
Z3VhZ2VzKSwgKHNlbGVjdGlvbk9wdGlvbnMsIHByZWZlcnJlZExhbmd1YWdlcykpCisjZGVmaW5l
IEFWQ0ZNZWRpYVNlbGVjdGlvbkNvcHlPcHRpb25zRnJvbUFycmF5RmlsdGVyZWRBbmRTb3J0ZWRB
Y2NvcmRpbmdUb1ByZWZlcnJlZExhbmd1YWdlcyBzb2Z0TGlua19BVkNGTWVkaWFTZWxlY3Rpb25D
b3B5T3B0aW9uc0Zyb21BcnJheUZpbHRlcmVkQW5kU29ydGVkQWNjb3JkaW5nVG9QcmVmZXJyZWRM
YW5ndWFnZXMKKworU09GVF9MSU5LX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZNZXRh
ZGF0YUl0ZW1Db3B5U3RyaW5nVmFsdWUsIENGU3RyaW5nUmVmLCBfX2NkZWNsLCAoQVZDRk1ldGFk
YXRhSXRlbVJlZiBtZXRhZGF0YUl0ZW0pLCAobWV0YWRhdGFJdGVtKSkKKyNkZWZpbmUgQVZDRk1l
dGFkYXRhSXRlbUNvcHlTdHJpbmdWYWx1ZSBzb2Z0TGlua19BVkNGTWV0YWRhdGFJdGVtQ29weVN0
cmluZ1ZhbHVlCisKK1NPRlRfTElOS19ETExfSU1QT1JUKEFWRm91bmRhdGlvbkNGLCBBVkNGTWV0
YWRhdGFJdGVtQ29weUl0ZW1zV2l0aEtleUFuZEtleVNwYWNlLCBDRkFycmF5UmVmLCBfX2NkZWNs
LCAoQ0ZBcnJheVJlZiBhcnJheSwgQ0ZUeXBlUmVmIGtleSwgQ0ZTdHJpbmdSZWYga2V5U3BhY2Up
LCAoYXJyYXksIGtleSwga2V5U3BhY2UpKQorI2RlZmluZSBBVkNGTWV0YWRhdGFJdGVtQ29weUl0
ZW1zV2l0aEtleUFuZEtleVNwYWNlIHNvZnRMaW5rX0FWQ0ZNZXRhZGF0YUl0ZW1Db3B5SXRlbXNX
aXRoS2V5QW5kS2V5U3BhY2UKKworU09GVF9MSU5LX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0Ys
IEFWQ0ZNZXRhZGF0YUl0ZW1Db3B5SXRlbXNXaXRoTG9jYWxlLCBDRkFycmF5UmVmLCBfX2NkZWNs
LCAoQ0ZBcnJheVJlZiBpdGVtcywgQ0ZMb2NhbGVSZWYgbG9jYWxlKSwgKGl0ZW1zLCBsb2NhbGUp
KQorI2RlZmluZSBBVkNGTWV0YWRhdGFJdGVtQ29weUl0ZW1zV2l0aExvY2FsZSBzb2Z0TGlua19B
VkNGTWV0YWRhdGFJdGVtQ29weUl0ZW1zV2l0aExvY2FsZQorCiBTT0ZUX0xJTktfRExMX0lNUE9S
VChBVkZvdW5kYXRpb25DRiwgQVZDRlBsYXllckNyZWF0ZVBlcmlvZGljVGltZU9ic2VydmVyRm9y
SW50ZXJ2YWwsIEFWQ0ZQbGF5ZXJPYnNlcnZlclJlZiwgX19jZGVjbCwgKEFWQ0ZQbGF5ZXJSZWYg
cGxheWVyLCBDTVRpbWUgaW50ZXJ2YWwsIGRpc3BhdGNoX3F1ZXVlX3QgcXVldWUsIEFWQ0ZQbGF5
ZXJQZXJpb2RpY1RpbWVPYnNlcnZlckNhbGxiYWNrIGNhbGxiYWNrLCB2b2lkICpjbGllbnRDb250
ZXh0KSwgKHBsYXllciwgaW50ZXJ2YWwsIHF1ZXVlLCBjYWxsYmFjaywgY2xpZW50Q29udGV4dCkp
CiAjZGVmaW5lIEFWQ0ZQbGF5ZXJDcmVhdGVQZXJpb2RpY1RpbWVPYnNlcnZlckZvckludGVydmFs
IHNvZnRMaW5rX0FWQ0ZQbGF5ZXJDcmVhdGVQZXJpb2RpY1RpbWVPYnNlcnZlckZvckludGVydmFs
CiAKQEAgLTEyMyw2ICsxNDcsOSBAQCBTT0ZUX0xJTktfRExMX0lNUE9SVChBVkZvdW5kYXRpb25D
RiwgQVZDCiBTT0ZUX0xJTktfRExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZDRlBsYXllckl0
ZW1HZXRDdXJyZW50VGltZSwgQ01UaW1lLCBfX2NkZWNsLCAoQVZDRlBsYXllckl0ZW1SZWYgcGxh
eWVySXRlbSksIChwbGF5ZXJJdGVtKSkKICNkZWZpbmUgQVZDRlBsYXllckl0ZW1HZXRDdXJyZW50
VGltZSBzb2Z0TGlua19BVkNGUGxheWVySXRlbUdldEN1cnJlbnRUaW1lCiAKK1NPRlRfTElOS19E
TExfSU1QT1JUKEFWRm91bmRhdGlvbkNGLCBBVkNGUGxheWVySXRlbUdldER1cmF0aW9uLCBDTVRp
bWUsIF9fY2RlY2wsIChBVkNGUGxheWVySXRlbVJlZiBwbGF5ZXJJdGVtKSwgKHBsYXllckl0ZW0p
KQorI2RlZmluZSBBVkNGUGxheWVySXRlbUdldER1cmF0aW9uIHNvZnRMaW5rX0FWQ0ZQbGF5ZXJJ
dGVtR2V0RHVyYXRpb24KKwogU09GVF9MSU5LX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFW
Q0ZQbGF5ZXJJdGVtR2V0U3RhdHVzLCBBVkNGUGxheWVySXRlbVN0YXR1cywgX19jZGVjbCwgKEFW
Q0ZQbGF5ZXJJdGVtUmVmIHBsYXllckl0ZW0sIENGRXJyb3JSZWYgKmVycm9yT3V0KSwgKHBsYXll
ckl0ZW0sIGVycm9yT3V0KSkKICNkZWZpbmUgQVZDRlBsYXllckl0ZW1HZXRTdGF0dXMgc29mdExp
bmtfQVZDRlBsYXllckl0ZW1HZXRTdGF0dXMKIApAQCAtMTM1LDYgKzE2MiwxMiBAQCBTT0ZUX0xJ
TktfRExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZDCiBTT0ZUX0xJTktfRExMX0lNUE9SVChB
VkZvdW5kYXRpb25DRiwgQVZDRlBsYXllckl0ZW1Jc1BsYXliYWNrTGlrZWx5VG9LZWVwVXAsIEJv
b2xlYW4sIF9fY2RlY2wsIChBVkNGUGxheWVySXRlbVJlZiBwbGF5ZXJJdGVtKSwgKHBsYXllckl0
ZW0pKQogI2RlZmluZSBBVkNGUGxheWVySXRlbUlzUGxheWJhY2tMaWtlbHlUb0tlZXBVcCBzb2Z0
TGlua19BVkNGUGxheWVySXRlbUlzUGxheWJhY2tMaWtlbHlUb0tlZXBVcAogCitTT0ZUX0xJTktf
RExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZDRlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0R2V0
VHlwZUlELCBDRlR5cGVJRCwgX19jZGVjbCwgKCksICgpKQorI2RlZmluZSBBVkNGUGxheWVySXRl
bUxlZ2libGVPdXRwdXRHZXRUeXBlSUQgc29mdExpbmtfQVZDRlBsYXllckl0ZW1MZWdpYmxlT3V0
cHV0R2V0VHlwZUlECisKK1NPRlRfTElOS19ETExfSU1QT1JUKEFWRm91bmRhdGlvbkNGLCBBVkNG
UGxheWVySXRlbVJlbW92ZU91dHB1dCwgdm9pZCwgX19jZGVjbCwgKEFWQ0ZQbGF5ZXJJdGVtUmVm
IHBsYXllckl0ZW0sIEFWQ0ZQbGF5ZXJJdGVtT3V0cHV0UmVmIG91dHB1dCksIChwbGF5ZXJJdGVt
LCBvdXRwdXQpKQorI2RlZmluZSBBVkNGUGxheWVySXRlbVJlbW92ZU91dHB1dCBzb2Z0TGlua19B
VkNGUGxheWVySXRlbVJlbW92ZU91dHB1dAorCiBTT0ZUX0xJTktfRExMX0lNUE9SVChBVkZvdW5k
YXRpb25DRiwgQVZDRlBsYXllckl0ZW1TZWVrVG9UaW1lV2l0aFRvbGVyYW5jZUFuZENvbXBsZXRp
b25DYWxsYmFjaywgQVZDRkFzc2V0UmVmLCBfX2NkZWNsLCAoQVZDRlBsYXllckl0ZW1SZWYgcGxh
eWVySXRlbSwgQ01UaW1lIHRpbWUsIENNVGltZSB0b2xlcmFuY2VCZWZvcmUsIENNVGltZSB0b2xl
cmFuY2VBZnRlciwgQVZDRlBsYXllckl0ZW1TZWVrQ29tcGxldGlvbkNhbGxiYWNrIGNvbXBsZXRp
b25DYWxsYmFjaywgdm9pZCAqY29udGV4dCksIChwbGF5ZXJJdGVtLCB0aW1lLCB0b2xlcmFuY2VC
ZWZvcmUsIHRvbGVyYW5jZUFmdGVyLCBjb21wbGV0aW9uQ2FsbGJhY2ssIGNvbnRleHQpKQogI2Rl
ZmluZSBBVkNGUGxheWVySXRlbVNlZWtUb1RpbWVXaXRoVG9sZXJhbmNlQW5kQ29tcGxldGlvbkNh
bGxiYWNrIHNvZnRMaW5rX0FWQ0ZQbGF5ZXJJdGVtU2Vla1RvVGltZVdpdGhUb2xlcmFuY2VBbmRD
b21wbGV0aW9uQ2FsbGJhY2sKIApAQCAtMTU5LDYgKzE5Miw5IEBAIFNPRlRfTElOS19ETExfSU1Q
T1JUKEFWRm91bmRhdGlvbkNGLCBBVkMKIFNPRlRfTElOS19ETExfSU1QT1JUKEFWRm91bmRhdGlv
bkNGLCBBVkNGUGxheWVyTGF5ZXJTZXRQbGF5ZXIsIHZvaWQsIF9fY2RlY2wsIChBVkNGUGxheWVy
TGF5ZXJSZWYgcGxheWVyTGF5ZXIsIEFWQ0ZQbGF5ZXJSZWYgcGxheWVyKSwgKHBsYXllckxheWVy
LCBwbGF5ZXIpKQogI2RlZmluZSBBVkNGUGxheWVyTGF5ZXJTZXRQbGF5ZXIgc29mdExpbmtfQVZD
RlBsYXllckxheWVyU2V0UGxheWVyCiAKK1NPRlRfTElOS19ETExfSU1QT1JUKEFWRm91bmRhdGlv
bkNGLCBBVkNGUGxheWVyUGxheSwgdm9pZCwgX19jZGVjbCwgKEFWQ0ZQbGF5ZXJSZWYgcGxheWVy
KSwgKHBsYXllcikpCisjZGVmaW5lIEFWQ0ZQbGF5ZXJQbGF5IHNvZnRMaW5rX0FWQ0ZQbGF5ZXJQ
bGF5CisKIFNPRlRfTElOS19ETExfSU1QT1JUKEFWRm91bmRhdGlvbkNGLCBBVkNGUGxheWVyUmVt
b3ZlT2JzZXJ2ZXIsIE9TU3RhdHVzLCBfX2NkZWNsLCAoQVZDRlBsYXllclJlZiBwbGF5ZXIsIEFW
Q0ZQbGF5ZXJPYnNlcnZlclJlZiBvYnNlcnZlciksIChwbGF5ZXIsIG9ic2VydmVyKSkKICNkZWZp
bmUgQVZDRlBsYXllclJlbW92ZU9ic2VydmVyIHNvZnRMaW5rX0FWQ0ZQbGF5ZXJSZW1vdmVPYnNl
cnZlcgogCkBAIC0xNzksNiArMjE1LDU4IEBAIFNPRlRfTElOS19ETExfSU1QT1JUKEFWRm91bmRh
dGlvbkNGLCBBVkMKIAogU09GVF9MSU5LX0RMTF9JTVBPUlRfT1BUSU9OQUwoQVZGb3VuZGF0aW9u
Q0YsIEFWQ0ZQbGF5ZXJTZXREaXJlY3QzRERldmljZSwgdm9pZCwgX19jZGVjbCwgKEFWQ0ZQbGF5
ZXJSZWYgcGxheWVyLCBJRGlyZWN0M0REZXZpY2U5KiBkM2REZXZpY2UpKQogCisjaWYgSEFWRShB
VkZPVU5EQVRJT05fTUVESUFfU0VMRUNUSU9OX0dST1VQKSAmJiBIQVZFKEFWRk9VTkRBVElPTl9M
RUdJQkxFX09VVFBVVF9TVVBQT1JUKQorCitTT0ZUX0xJTktfRExMX0lNUE9SVChBVkZvdW5kYXRp
b25DRiwgQVZDRkFzc2V0R2V0U2VsZWN0aW9uR3JvdXBGb3JNZWRpYUNoYXJhY3RlcmlzdGljICwg
QVZDRk1lZGlhU2VsZWN0aW9uR3JvdXBSZWYsIF9fY2RlY2wsIChBVkNGQXNzZXRSZWYgYXNzZXQs
IENGU3RyaW5nUmVmIG1lZGlhQ2hhcmFjdGVyaXN0aWMpLCAoYXNzZXQsIG1lZGlhQ2hhcmFjdGVy
aXN0aWMpKQorI2RlZmluZSBBVkNGQXNzZXRHZXRTZWxlY3Rpb25Hcm91cEZvck1lZGlhQ2hhcmFj
dGVyaXN0aWMgIHNvZnRMaW5rX0FWQ0ZBc3NldEdldFNlbGVjdGlvbkdyb3VwRm9yTWVkaWFDaGFy
YWN0ZXJpc3RpYyAKKworU09GVF9MSU5LX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZN
ZWRpYVNlbGVjdGlvbkNvcHlQbGF5YWJsZU9wdGlvbnNGcm9tQXJyYXksIENGQXJyYXlSZWYsIF9f
Y2RlY2wsIChDRkFycmF5UmVmIHNlbGVjdGlvbk9wdGlvbnMpLCAoc2VsZWN0aW9uT3B0aW9ucykp
CisjZGVmaW5lIEFWQ0ZNZWRpYVNlbGVjdGlvbkNvcHlQbGF5YWJsZU9wdGlvbnNGcm9tQXJyYXkg
c29mdExpbmtfQVZDRk1lZGlhU2VsZWN0aW9uQ29weVBsYXlhYmxlT3B0aW9uc0Zyb21BcnJheQor
CitTT0ZUX0xJTktfRExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZDRk1lZGlhU2VsZWN0aW9u
T3B0aW9uQ29weUNvbW1vbk1ldGFkYXRhLCBDRkFycmF5UmVmLCBfX2NkZWNsLCAoQVZDRk1lZGlh
U2VsZWN0aW9uT3B0aW9uUmVmIHNlbGVjdGlvbk9wdGlvbiksIChzZWxlY3Rpb25PcHRpb24pKQor
I2RlZmluZSBBVkNGTWVkaWFTZWxlY3Rpb25PcHRpb25Db3B5Q29tbW9uTWV0YWRhdGEgc29mdExp
bmtfQVZDRk1lZGlhU2VsZWN0aW9uT3B0aW9uQ29weUNvbW1vbk1ldGFkYXRhCisKK1NPRlRfTElO
S19ETExfSU1QT1JUKEFWRm91bmRhdGlvbkNGLCBBVkNGTWVkaWFTZWxlY3Rpb25PcHRpb25Db3B5
TG9jYWxlLCBDRkxvY2FsZVJlZiwgX19jZGVjbCwgKEFWQ0ZNZWRpYVNlbGVjdGlvbk9wdGlvblJl
ZiBzZWxlY3Rpb25PcHRpb24pLCAoc2VsZWN0aW9uT3B0aW9uKSkKKyNkZWZpbmUgQVZDRk1lZGlh
U2VsZWN0aW9uT3B0aW9uQ29weUxvY2FsZSBzb2Z0TGlua19BVkNGTWVkaWFTZWxlY3Rpb25PcHRp
b25Db3B5TG9jYWxlCisKK1NPRlRfTElOS19ETExfSU1QT1JUKEFWRm91bmRhdGlvbkNGLCBBVkNG
TWVkaWFTZWxlY3Rpb25PcHRpb25HZXRNZWRpYVR5cGUsIENGU3RyaW5nUmVmLCBfX2NkZWNsLCAo
QVZDRk1lZGlhU2VsZWN0aW9uT3B0aW9uUmVmIHNlbGVjdGlvbk9wdGlvbiksIChzZWxlY3Rpb25P
cHRpb24pKQorI2RlZmluZSBBVkNGTWVkaWFTZWxlY3Rpb25PcHRpb25HZXRNZWRpYVR5cGUgc29m
dExpbmtfQVZDRk1lZGlhU2VsZWN0aW9uT3B0aW9uR2V0TWVkaWFUeXBlCisKK1NPRlRfTElOS19E
TExfSU1QT1JUKEFWRm91bmRhdGlvbkNGLCBBVkNGTWVkaWFTZWxlY3Rpb25PcHRpb25IYXNNZWRp
YUNoYXJhY3RlcmlzdGljLCBCb29sZWFuLCBfX2NkZWNsLCAoQVZDRk1lZGlhU2VsZWN0aW9uT3B0
aW9uUmVmIHNlbGVjdGlvbk9wdGlvbiwgQ0ZTdHJpbmdSZWYgbWVkaWFDaGFyYWN0ZXJpc3RpYyks
IChzZWxlY3Rpb25PcHRpb24sIG1lZGlhQ2hhcmFjdGVyaXN0aWMpKQorI2RlZmluZSBBVkNGTWVk
aWFTZWxlY3Rpb25PcHRpb25IYXNNZWRpYUNoYXJhY3RlcmlzdGljIHNvZnRMaW5rX0FWQ0ZNZWRp
YVNlbGVjdGlvbk9wdGlvbkhhc01lZGlhQ2hhcmFjdGVyaXN0aWMKKworU09GVF9MSU5LX0RMTF9J
TVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZNZWRpYVNlbGVjdGlvbkdyb3VwQWxsb3dzRW1wdHlT
ZWxlY3Rpb24sIEJvb2xlYW4sIF9fY2RlY2wsIChBVkNGTWVkaWFTZWxlY3Rpb25Hcm91cFJlZiBz
ZWxlY3Rpb25Hcm91cCksIChzZWxlY3Rpb25Hcm91cCkpCisjZGVmaW5lIEFWQ0ZNZWRpYVNlbGVj
dGlvbkdyb3VwQWxsb3dzRW1wdHlTZWxlY3Rpb24gc29mdExpbmtfQVZDRk1lZGlhU2VsZWN0aW9u
R3JvdXBBbGxvd3NFbXB0eVNlbGVjdGlvbgorCitTT0ZUX0xJTktfRExMX0lNUE9SVChBVkZvdW5k
YXRpb25DRiwgQVZDRk1lZGlhU2VsZWN0aW9uR3JvdXBHZXRPcHRpb25zLCBDRkFycmF5UmVmLCBf
X2NkZWNsLCAoQVZDRk1lZGlhU2VsZWN0aW9uR3JvdXBSZWYgc2VsZWN0aW9uR3JvdXApLCAoc2Vs
ZWN0aW9uR3JvdXApKQorI2RlZmluZSBBVkNGTWVkaWFTZWxlY3Rpb25Hcm91cEdldE9wdGlvbnMg
c29mdExpbmtfQVZDRk1lZGlhU2VsZWN0aW9uR3JvdXBHZXRPcHRpb25zCisKK1NPRlRfTElOS19E
TExfSU1QT1JUKEFWRm91bmRhdGlvbkNGLCBBVkNGUGxheWVySXRlbUFkZE91dHB1dCwgdm9pZCwg
X19jZGVjbCwgKEFWQ0ZQbGF5ZXJJdGVtUmVmIHBsYXllckl0ZW0sIEFWQ0ZQbGF5ZXJJdGVtT3V0
cHV0UmVmIG91dHB1dCksIChwbGF5ZXJJdGVtLCBvdXRwdXQpKQorI2RlZmluZSBBVkNGUGxheWVy
SXRlbUFkZE91dHB1dCBzb2Z0TGlua19BVkNGUGxheWVySXRlbUFkZE91dHB1dAorCitTT0ZUX0xJ
TktfRExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZDRlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0
Q3JlYXRlV2l0aE1lZGlhU3VidHlwZXNGb3JOYXRpdmVSZXByZXNlbnRhdGlvbiwgQVZDRlBsYXll
ckl0ZW1MZWdpYmxlT3V0cHV0UmVmLCBfX2NkZWNsLCAoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9y
LCBDRkFycmF5UmVmIHN1YnR5cGVzKSwgKGFsbG9jYXRvciwgc3VidHlwZXMpKQorI2RlZmluZSBB
VkNGUGxheWVySXRlbUxlZ2libGVPdXRwdXRDcmVhdGVXaXRoTWVkaWFTdWJ0eXBlc0Zvck5hdGl2
ZVJlcHJlc2VudGF0aW9uIHNvZnRMaW5rX0FWQ0ZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1dENyZWF0
ZVdpdGhNZWRpYVN1YnR5cGVzRm9yTmF0aXZlUmVwcmVzZW50YXRpb24KKworU09GVF9MSU5LX0RM
TF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZQbGF5ZXJJdGVtR2V0U2VsZWN0ZWRNZWRpYU9w
dGlvbkluTWVkaWFTZWxlY3Rpb25Hcm91cCwgQVZDRk1lZGlhU2VsZWN0aW9uT3B0aW9uUmVmLCBf
X2NkZWNsLCAoQVZDRlBsYXllckl0ZW1SZWYgcGxheWVySXRlbSwgQVZDRk1lZGlhU2VsZWN0aW9u
R3JvdXBSZWYgc2VsZWN0aW9uR3JvdXApLCAocGxheWVySXRlbSwgc2VsZWN0aW9uR3JvdXApKQor
I2RlZmluZSBBVkNGUGxheWVySXRlbUdldFNlbGVjdGVkTWVkaWFPcHRpb25Jbk1lZGlhU2VsZWN0
aW9uR3JvdXAgc29mdExpbmtfQVZDRlBsYXllckl0ZW1HZXRTZWxlY3RlZE1lZGlhT3B0aW9uSW5N
ZWRpYVNlbGVjdGlvbkdyb3VwCisKK1NPRlRfTElOS19ETExfSU1QT1JUKEFWRm91bmRhdGlvbkNG
LCBBVkNGUGxheWVySXRlbUxlZ2libGVPdXRwdXRTZXRBZHZhbmNlSW50ZXJ2YWxGb3JDYWxsYmFj
a0ludm9jYXRpb24sIHZvaWQsIF9fY2RlY2wsIChBVkNGUGxheWVySXRlbUxlZ2libGVPdXRwdXRS
ZWYgbGVnaWJsZU91dHB1dCwgQ0ZUaW1lSW50ZXJ2YWwgdGltZUludGVydmFsKSwgKGxlZ2libGVP
dXRwdXQsIHRpbWVJbnRlcnZhbCkpCisjZGVmaW5lIEFWQ0ZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1
dFNldEFkdmFuY2VJbnRlcnZhbEZvckNhbGxiYWNrSW52b2NhdGlvbiBzb2Z0TGlua19BVkNGUGxh
eWVySXRlbUxlZ2libGVPdXRwdXRTZXRBZHZhbmNlSW50ZXJ2YWxGb3JDYWxsYmFja0ludm9jYXRp
b24KKworU09GVF9MSU5LX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZQbGF5ZXJJdGVt
TGVnaWJsZU91dHB1dFNldENhbGxiYWNrcywgdm9pZCwgX19jZGVjbCwgKEFWQ0ZQbGF5ZXJJdGVt
TGVnaWJsZU91dHB1dFJlZiBvdXRwdXQsIGNvbnN0IEFWQ0ZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1
dENhbGxiYWNrcyogY2FsbGJhY2tzLCBkaXNwYXRjaF9xdWV1ZV90IGNhbGxiYWNrUXVldWUpLCAo
b3V0cHV0LCBjYWxsYmFja3MsIGNhbGxiYWNrUXVldWUpKQorI2RlZmluZSBBVkNGUGxheWVySXRl
bUxlZ2libGVPdXRwdXRTZXRDYWxsYmFja3Mgc29mdExpbmtfQVZDRlBsYXllckl0ZW1MZWdpYmxl
T3V0cHV0U2V0Q2FsbGJhY2tzCisKK1NPRlRfTElOS19ETExfSU1QT1JUKEFWRm91bmRhdGlvbkNG
LCBBVkNGUGxheWVySXRlbUxlZ2libGVPdXRwdXRTZXRUZXh0U3R5bGluZ1Jlc29sdXRpb24sIHZv
aWQsIF9fY2RlY2wsIChBVkNGUGxheWVySXRlbUxlZ2libGVPdXRwdXRSZWYgb3V0cHV0LCBDRlN0
cmluZ1JlZiB0ZXh0U3R5bGluZ1Jlc29sdXRpb24pLCAob3V0cHV0LCB0ZXh0U3R5bGluZ1Jlc29s
dXRpb24pKQorI2RlZmluZSBBVkNGUGxheWVySXRlbUxlZ2libGVPdXRwdXRTZXRUZXh0U3R5bGlu
Z1Jlc29sdXRpb24gc29mdExpbmtfQVZDRlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0U2V0VGV4dFN0
eWxpbmdSZXNvbHV0aW9uCisKK1NPRlRfTElOS19ETExfSU1QT1JUKEFWRm91bmRhdGlvbkNGLCBB
VkNGUGxheWVySXRlbU91dHB1dFNldFN1cHByZXNzUGxheWVyUmVuZGVyaW5nLCB2b2lkLCBfX2Nk
ZWNsLCAoQVZDRlBsYXllckl0ZW1PdXRwdXRSZWYgb3V0cHV0LCBCb29sZWFuIHN1cHByZXNzZWQp
LCAob3V0cHV0LCBzdXBwcmVzc2VkKSkKKyNkZWZpbmUgQVZDRlBsYXllckl0ZW1PdXRwdXRTZXRT
dXBwcmVzc1BsYXllclJlbmRlcmluZyBzb2Z0TGlua19BVkNGUGxheWVySXRlbU91dHB1dFNldFN1
cHByZXNzUGxheWVyUmVuZGVyaW5nCisKK1NPRlRfTElOS19ETExfSU1QT1JUKEFWRm91bmRhdGlv
bkNGLCBBVkNGUGxheWVySXRlbVNlbGVjdE1lZGlhT3B0aW9uSW5NZWRpYVNlbGVjdGlvbkdyb3Vw
LCB2b2lkLCBfX2NkZWNsLCAoQVZDRlBsYXllckl0ZW1SZWYgcGxheWVySXRlbSwgQVZDRk1lZGlh
U2VsZWN0aW9uT3B0aW9uUmVmIHNlbGVjdGlvbk9wdGlvbiwgQVZDRk1lZGlhU2VsZWN0aW9uR3Jv
dXBSZWYgc2VsZWN0aW9uR3JvdXApLCAocGxheWVySXRlbSwgc2VsZWN0aW9uT3B0aW9uLCBzZWxl
Y3Rpb25Hcm91cCkpCisjZGVmaW5lIEFWQ0ZQbGF5ZXJJdGVtU2VsZWN0TWVkaWFPcHRpb25Jbk1l
ZGlhU2VsZWN0aW9uR3JvdXAgc29mdExpbmtfQVZDRlBsYXllckl0ZW1TZWxlY3RNZWRpYU9wdGlv
bkluTWVkaWFTZWxlY3Rpb25Hcm91cAorCisjZW5kaWYKKwogLy8gVmFyaWFibGVzCiAKIFNPRlRf
TElOS19WQVJJQUJMRV9ETExfSU1QT1JUKEFWRm91bmRhdGlvbkNGLCBBVkNGQXNzZXRJbWFnZUdl
bmVyYXRvckFwZXJ0dXJlTW9kZUNsZWFuQXBlcnR1cmUsIGNvbnN0IENGU3RyaW5nUmVmKTsKQEAg
LTIxNyw5ICszMDUsMTggQEAgU09GVF9MSU5LX1ZBUklBQkxFX0RMTF9JTVBPUlQoQVZGb3VuZGF0
aQogU09GVF9MSU5LX1ZBUklBQkxFX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZNZWRp
YVR5cGVWaWRlbywgY29uc3QgQ0ZTdHJpbmdSZWYpOwogI2RlZmluZSBBVkNGTWVkaWFUeXBlVmlk
ZW8gZ2V0X0FWQ0ZNZWRpYVR5cGVWaWRlbygpCiAKK1NPRlRfTElOS19WQVJJQUJMRV9ETExfSU1Q
T1JUKEFWRm91bmRhdGlvbkNGLCBBVkNGTWV0YWRhdGFDb21tb25LZXlUaXRsZSwgY29uc3QgQ0ZT
dHJpbmdSZWYpOworI2RlZmluZSBBVkNGTWV0YWRhdGFDb21tb25LZXlUaXRsZSBnZXRfQVZDRk1l
dGFkYXRhQ29tbW9uS2V5VGl0bGUoKQorCitTT0ZUX0xJTktfVkFSSUFCTEVfRExMX0lNUE9SVChB
VkZvdW5kYXRpb25DRiwgQVZDRk1ldGFkYXRhS2V5U3BhY2VDb21tb24sIGNvbnN0IENGU3RyaW5n
UmVmKTsKKyNkZWZpbmUgQVZDRk1ldGFkYXRhS2V5U3BhY2VDb21tb24gZ2V0X0FWQ0ZNZXRhZGF0
YUtleVNwYWNlQ29tbW9uKCkKKwogU09GVF9MSU5LX1ZBUklBQkxFX0RMTF9JTVBPUlQoQVZGb3Vu
ZGF0aW9uQ0YsIEFWQ0ZQbGF5ZXJJdGVtRGlkUGxheVRvRW5kVGltZU5vdGlmaWNhdGlvbiwgY29u
c3QgQ0ZTdHJpbmdSZWYpOwogI2RlZmluZSBBVkNGUGxheWVySXRlbURpZFBsYXlUb0VuZFRpbWVO
b3RpZmljYXRpb24gZ2V0X0FWQ0ZQbGF5ZXJJdGVtRGlkUGxheVRvRW5kVGltZU5vdGlmaWNhdGlv
bigpCiAKK1NPRlRfTElOS19WQVJJQUJMRV9ETExfSU1QT1JUKEFWRm91bmRhdGlvbkNGLCBBVkNG
UGxheWVySXRlbUR1cmF0aW9uQ2hhbmdlZE5vdGlmaWNhdGlvbiwgY29uc3QgQ0ZTdHJpbmdSZWYp
OworI2RlZmluZSBBVkNGUGxheWVySXRlbUR1cmF0aW9uQ2hhbmdlZE5vdGlmaWNhdGlvbiBnZXRf
QVZDRlBsYXllckl0ZW1EdXJhdGlvbkNoYW5nZWROb3RpZmljYXRpb24oKQorCiBTT0ZUX0xJTktf
VkFSSUFCTEVfRExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZDRlBsYXllckl0ZW1Jc1BsYXli
YWNrQnVmZmVyRW1wdHlDaGFuZ2VkTm90aWZpY2F0aW9uLCBjb25zdCBDRlN0cmluZ1JlZik7CiAj
ZGVmaW5lIEFWQ0ZQbGF5ZXJJdGVtSXNQbGF5YmFja0J1ZmZlckVtcHR5Q2hhbmdlZE5vdGlmaWNh
dGlvbiBnZXRfQVZDRlBsYXllckl0ZW1Jc1BsYXliYWNrQnVmZmVyRW1wdHlDaGFuZ2VkTm90aWZp
Y2F0aW9uKCkKIApAQCAtMjQ5LDMgKzM0NiwzNyBAQCBTT0ZUX0xJTktfVkFSSUFCTEVfRExMX0lN
UE9SVChBVkZvdW5kYXRpCiAKIFNPRlRfTElOS19WQVJJQUJMRV9ETExfSU1QT1JUX09QVElPTkFM
KEFWRm91bmRhdGlvbkNGLCBBVkNGUGxheWVyRW5hYmxlSGFyZHdhcmVBY2NlbGVyYXRlZFZpZGVv
RGVjb2RlcktleSwgY29uc3QgQ0ZTdHJpbmdSZWYpOwogI2RlZmluZSBBVkNGUGxheWVyRW5hYmxl
SGFyZHdhcmVBY2NlbGVyYXRlZFZpZGVvRGVjb2RlcktleSBnZXRfQVZDRlBsYXllckVuYWJsZUhh
cmR3YXJlQWNjZWxlcmF0ZWRWaWRlb0RlY29kZXJLZXkoKQorCisjaWYgSEFWRShBVkZPVU5EQVRJ
T05fTUVESUFfU0VMRUNUSU9OX0dST1VQKSAmJiBIQVZFKEFWRk9VTkRBVElPTl9MRUdJQkxFX09V
VFBVVF9TVVBQT1JUKQorCitTT0ZUX0xJTktfVkFSSUFCTEVfRExMX0lNUE9SVChBVkZvdW5kYXRp
b25DRiwgQVZDRkFzc2V0UHJvcGVydHlBdmFpbGFibGVNZWRpYUNoYXJhY3RlcmlzdGljc1dpdGhN
ZWRpYVNlbGVjdGlvbk9wdGlvbnMsIGNvbnN0IENGU3RyaW5nUmVmKTsKKyNkZWZpbmUgQVZDRkFz
c2V0UHJvcGVydHlBdmFpbGFibGVNZWRpYUNoYXJhY3RlcmlzdGljc1dpdGhNZWRpYVNlbGVjdGlv
bk9wdGlvbnMgIGdldF9BVkNGQXNzZXRQcm9wZXJ0eUF2YWlsYWJsZU1lZGlhQ2hhcmFjdGVyaXN0
aWNzV2l0aE1lZGlhU2VsZWN0aW9uT3B0aW9ucygpCisKK1NPRlRfTElOS19WQVJJQUJMRV9ETExf
SU1QT1JUKEFWRm91bmRhdGlvbkNGLCBBVkNGTWVkaWFDaGFyYWN0ZXJpc3RpY0Vhc3lUb1JlYWQs
IGNvbnN0IENGU3RyaW5nUmVmKTsKKyNkZWZpbmUgQVZDRk1lZGlhQ2hhcmFjdGVyaXN0aWNFYXN5
VG9SZWFkIGdldF9BVkNGTWVkaWFDaGFyYWN0ZXJpc3RpY0Vhc3lUb1JlYWQoKQorCitTT0ZUX0xJ
TktfVkFSSUFCTEVfRExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZDRk1lZGlhQ2hhcmFjdGVy
aXN0aWNDb250YWluc09ubHlGb3JjZWRTdWJ0aXRsZXMsIGNvbnN0IENGU3RyaW5nUmVmKTsKKyNk
ZWZpbmUgQVZDRk1lZGlhQ2hhcmFjdGVyaXN0aWNDb250YWluc09ubHlGb3JjZWRTdWJ0aXRsZXMg
Z2V0X0FWQ0ZNZWRpYUNoYXJhY3RlcmlzdGljQ29udGFpbnNPbmx5Rm9yY2VkU3VidGl0bGVzKCkK
KworU09GVF9MSU5LX1ZBUklBQkxFX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZNZWRp
YUNoYXJhY3RlcmlzdGljRGVzY3JpYmVzTXVzaWNBbmRTb3VuZEZvckFjY2Vzc2liaWxpdHksIGNv
bnN0IENGU3RyaW5nUmVmKTsKKyNkZWZpbmUgQVZDRk1lZGlhQ2hhcmFjdGVyaXN0aWNEZXNjcmli
ZXNNdXNpY0FuZFNvdW5kRm9yQWNjZXNzaWJpbGl0eSBnZXRfQVZDRk1lZGlhQ2hhcmFjdGVyaXN0
aWNEZXNjcmliZXNNdXNpY0FuZFNvdW5kRm9yQWNjZXNzaWJpbGl0eSgpCisKK1NPRlRfTElOS19W
QVJJQUJMRV9ETExfSU1QT1JUKEFWRm91bmRhdGlvbkNGLCBBVkNGTWVkaWFDaGFyYWN0ZXJpc3Rp
Y0lzTWFpblByb2dyYW1Db250ZW50LCBjb25zdCBDRlN0cmluZ1JlZik7CisjZGVmaW5lIEFWQ0ZN
ZWRpYUNoYXJhY3RlcmlzdGljSXNNYWluUHJvZ3JhbUNvbnRlbnQgZ2V0X0FWQ0ZNZWRpYUNoYXJh
Y3RlcmlzdGljSXNNYWluUHJvZ3JhbUNvbnRlbnQoKQorCitTT0ZUX0xJTktfVkFSSUFCTEVfRExM
X0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZDRk1lZGlhQ2hhcmFjdGVyaXN0aWNMZWdpYmxlLCBj
b25zdCBDRlN0cmluZ1JlZik7CisjZGVmaW5lIEFWQ0ZNZWRpYUNoYXJhY3RlcmlzdGljTGVnaWJs
ZSBnZXRfQVZDRk1lZGlhQ2hhcmFjdGVyaXN0aWNMZWdpYmxlKCkKKworU09GVF9MSU5LX1ZBUklB
QkxFX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZNZWRpYUNoYXJhY3RlcmlzdGljVHJh
bnNjcmliZXNTcG9rZW5EaWFsb2dGb3JBY2Nlc3NpYmlsaXR5LCBjb25zdCBDRlN0cmluZ1JlZik7
CisjZGVmaW5lIEFWQ0ZNZWRpYUNoYXJhY3RlcmlzdGljVHJhbnNjcmliZXNTcG9rZW5EaWFsb2dG
b3JBY2Nlc3NpYmlsaXR5IGdldF9BVkNGTWVkaWFDaGFyYWN0ZXJpc3RpY1RyYW5zY3JpYmVzU3Bv
a2VuRGlhbG9nRm9yQWNjZXNzaWJpbGl0eSgpCisKK1NPRlRfTElOS19WQVJJQUJMRV9ETExfSU1Q
T1JUKEFWRm91bmRhdGlvbkNGLCBBVkNGTWVkaWFUeXBlU3VidGl0bGUsIGNvbnN0IENGU3RyaW5n
UmVmKTsKKyNkZWZpbmUgQVZDRk1lZGlhVHlwZVN1YnRpdGxlIGdldF9BVkNGTWVkaWFUeXBlU3Vi
dGl0bGUoKQorCitTT0ZUX0xJTktfVkFSSUFCTEVfRExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwg
QVZDRlBsYXllckFwcGxpZXNNZWRpYVNlbGVjdGlvbkNyaXRlcmlhQXV0b21hdGljYWxseUtleSwg
Y29uc3QgQ0ZTdHJpbmdSZWYpOworI2RlZmluZSBBVkNGUGxheWVyQXBwbGllc01lZGlhU2VsZWN0
aW9uQ3JpdGVyaWFBdXRvbWF0aWNhbGx5S2V5IGdldF9BVkNGUGxheWVyQXBwbGllc01lZGlhU2Vs
ZWN0aW9uQ3JpdGVyaWFBdXRvbWF0aWNhbGx5S2V5KCkKKworU09GVF9MSU5LX1ZBUklBQkxFX0RM
TF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1dFRleHRT
dHlsaW5nUmVzb2x1dGlvblNvdXJjZUFuZFJ1bGVzT25seSwgY29uc3QgQ0ZTdHJpbmdSZWYpOwor
I2RlZmluZSBBVkNGUGxheWVySXRlbUxlZ2libGVPdXRwdXRUZXh0U3R5bGluZ1Jlc29sdXRpb25T
b3VyY2VBbmRSdWxlc09ubHkgZ2V0X0FWQ0ZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1dFRleHRTdHls
aW5nUmVzb2x1dGlvblNvdXJjZUFuZFJ1bGVzT25seSgpCisKKyNlbmRpZgpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0NvcmVNZWRpYVNvZnRM
aW5raW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL2NmL0NvcmVNZWRpYVNvZnRMaW5raW5nLmgJKHJldmlzaW9uIDE1Mjc0NykK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9Db3Jl
TWVkaWFTb2Z0TGlua2luZy5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw2ICs1Myw5IEBAIFNPRlRf
TElOS19ETExfSU1QT1JUKENvcmVNZWRpYSwgQ01UaW1lTWEKIFNPRlRfTElOS19ETExfSU1QT1JU
KENvcmVNZWRpYSwgQ01UaW1lTWFrZVdpdGhTZWNvbmRzLCBDTVRpbWUsIF9fY2RlY2wsIChGbG9h
dDY0IHNlY29uZHMsIGludDMyX3QgcHJlZmVycmVkVGltZVNjYWxlKSwgKHNlY29uZHMsIHByZWZl
cnJlZFRpbWVTY2FsZSkpCiAjZGVmaW5lIENNVGltZU1ha2VXaXRoU2Vjb25kcyBzb2Z0TGlua19D
TVRpbWVNYWtlV2l0aFNlY29uZHMKIAorU09GVF9MSU5LX0RMTF9JTVBPUlQoQ29yZU1lZGlhLCBD
TVRpbWVSYW5nZUdldEVuZCwgQ01UaW1lLCBfX2NkZWNsLCAoQ01UaW1lUmFuZ2UgcmFuZ2UpLCAo
cmFuZ2UpKQorI2RlZmluZSBDTVRpbWVSYW5nZUdldEVuZCBzb2Z0TGlua19DTVRpbWVSYW5nZUdl
dEVuZAorCiAvLyBWYXJpYWJsZXMKIAogU09GVF9MSU5LX1ZBUklBQkxFX0RMTF9JTVBPUlQoQ29y
ZU1lZGlhLCBrQ01UaW1lWmVybywgY29uc3QgQ01UaW1lKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2YXRl
QVZDRi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL2NmL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGLmNwcAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9J
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwx
ODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBQTEFURk9STShXSU4p
ICYmIEVOQUJMRShWSURFTykgJiYgSEFWRShBVkZPVU5EQVRJT05fTUVESUFfU0VMRUNUSU9OX0dS
T1VQKQorCisjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0YuaCIKKworI2luY2x1
ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgorI2luY2x1ZGUgIkluYmFuZFRleHRUcmFja1ByaXZhdGUu
aCIKKyNpbmNsdWRlICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmgiCisjaW5jbHVkZSAiTG9n
Z2luZy5oIgorI2luY2x1ZGUgIlNvZnRMaW5raW5nLmgiCisKKyNpbmNsdWRlIDxBVkZvdW5kYXRp
b25DRi9BVkNGUGxheWVySXRlbUxlZ2libGVPdXRwdXQuaD4KKyNpbmNsdWRlIDxBVkZvdW5kYXRp
b25DRi9BVkZvdW5kYXRpb25DRi5oPgorCisjaW5jbHVkZSA8ZDNkOS5oPgorCisvLyBUaGUgc29m
dGxpbmsgaGVhZGVyIGZpbGVzIG11c3QgYmUgaW5jbHVkZWQgYWZ0ZXIgdGhlIEFWQ0YgYW5kIENv
cmVNZWRpYSBoZWFkZXIgZmlsZXMuCisjaW5jbHVkZSAiQVZGb3VuZGF0aW9uQ0ZTb2Z0TGlua2lu
Zy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkNG
OjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRihBVkZJbmJhbmRUcmFja1BhcmVudCogcGxheWVy
LCBBVkNGTWVkaWFTZWxlY3Rpb25PcHRpb25SZWYgc2VsZWN0aW9uKQorICAgIDogSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWRihwbGF5ZXIpCisgICAgLCBtX21lZGlhU2VsZWN0aW9uT3B0aW9uKHNl
bGVjdGlvbikKK3sKK30KKwordm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRjo6ZGlzY29u
bmVjdCgpCit7CisgICAgbV9tZWRpYVNlbGVjdGlvbk9wdGlvbiA9IDA7CisgICAgSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWRjo6ZGlzY29ubmVjdCgpOworfQorCitJbmJhbmRUZXh0VHJhY2tQcml2
YXRlOjpLaW5kIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGOjpraW5kKCkgY29uc3QKK3sKKyAg
ICBpZiAoIW1fbWVkaWFTZWxlY3Rpb25PcHRpb24pCisgICAgICAgIHJldHVybiBJbmJhbmRUZXh0
VHJhY2tQcml2YXRlOjpOb25lOworCisgICAgQ0ZTdHJpbmdSZWYgbWVkaWFUeXBlID0gQVZDRk1l
ZGlhU2VsZWN0aW9uT3B0aW9uR2V0TWVkaWFUeXBlKG1lZGlhU2VsZWN0aW9uT3B0aW9uKCkpOwor
ICAgIAorICAgIGlmIChDRlN0cmluZ0NvbXBhcmUobWVkaWFUeXBlLCBBVkNGTWVkaWFUeXBlQ2xv
c2VkQ2FwdGlvbiwga0NGQ29tcGFyZUNhc2VJbnNlbnNpdGl2ZSkgPT0ga0NGQ29tcGFyZUVxdWFs
VG8pCisgICAgICAgIHJldHVybiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpDYXB0aW9uczsKKyAg
ICBpZiAoQ0ZTdHJpbmdDb21wYXJlKG1lZGlhVHlwZSwgQVZDRk1lZGlhVHlwZVN1YnRpdGxlLCBr
Q0ZDb21wYXJlQ2FzZUluc2Vuc2l0aXZlKSA9PSBrQ0ZDb21wYXJlRXF1YWxUbykgeworICAgICAg
ICBpZiAoQVZDRk1lZGlhU2VsZWN0aW9uT3B0aW9uSGFzTWVkaWFDaGFyYWN0ZXJpc3RpYyhtZWRp
YVNlbGVjdGlvbk9wdGlvbigpLCBBVkNGTWVkaWFDaGFyYWN0ZXJpc3RpY0NvbnRhaW5zT25seUZv
cmNlZFN1YnRpdGxlcykpCisgICAgICAgICAgICByZXR1cm4gSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZTo6Rm9yY2VkOworCisgICAgICAgIC8vIEFuICJTREgiIHRyYWNrIGlzIGEgc3VidGl0bGUgdHJh
Y2sgY3JlYXRlZCBmb3IgdGhlIGRlYWYgb3IgaGFyZC1vZi1oZWFyaW5nLiAiY2FwdGlvbnMiIGlu
IFdlYlZUVCBhcmUKKyAgICAgICAgLy8gImxhYmVsZWQgYXMgYXBwcm9wcmlhdGUgZm9yIHRoZSBo
YXJkLW9mLWhlYXJpbmciLCBzbyB0YWcgU0RIIHN1dGl0bGVzIGFzICJjYXB0aW9ucyIuCisgICAg
ICAgIGlmIChBVkNGTWVkaWFTZWxlY3Rpb25PcHRpb25IYXNNZWRpYUNoYXJhY3RlcmlzdGljKG1l
ZGlhU2VsZWN0aW9uT3B0aW9uKCksIEFWQ0ZNZWRpYUNoYXJhY3RlcmlzdGljVHJhbnNjcmliZXNT
cG9rZW5EaWFsb2dGb3JBY2Nlc3NpYmlsaXR5KSkKKyAgICAgICAgICAgIHJldHVybiBJbmJhbmRU
ZXh0VHJhY2tQcml2YXRlOjpDYXB0aW9uczsKKyAgICAgICAgaWYgKEFWQ0ZNZWRpYVNlbGVjdGlv
bk9wdGlvbkhhc01lZGlhQ2hhcmFjdGVyaXN0aWMobWVkaWFTZWxlY3Rpb25PcHRpb24oKSwgQVZD
Rk1lZGlhQ2hhcmFjdGVyaXN0aWNEZXNjcmliZXNNdXNpY0FuZFNvdW5kRm9yQWNjZXNzaWJpbGl0
eSkpCisgICAgICAgICAgICByZXR1cm4gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6Q2FwdGlvbnM7
CisgICAgICAgIAorICAgICAgICByZXR1cm4gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6U3VidGl0
bGVzOworICAgIH0KKworICAgIHJldHVybiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpDYXB0aW9u
czsKK30KKworYm9vbCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRjo6aXNDbG9zZWRDYXB0aW9u
cygpIGNvbnN0Cit7CisgICAgaWYgKCFtX21lZGlhU2VsZWN0aW9uT3B0aW9uKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBDRlN0cmluZ1JlZiBtZWRpYVR5cGUgPSBBVkNGTWVkaWFTZWxl
Y3Rpb25PcHRpb25HZXRNZWRpYVR5cGUobWVkaWFTZWxlY3Rpb25PcHRpb24oKSk7CisKKyAgICBy
ZXR1cm4gKENGU3RyaW5nQ29tcGFyZShtZWRpYVR5cGUsIEFWQ0ZNZWRpYVR5cGVDbG9zZWRDYXB0
aW9uLCBrQ0ZDb21wYXJlQ2FzZUluc2Vuc2l0aXZlKSA9PSBrQ0ZDb21wYXJlRXF1YWxUbyk7Cit9
CisKK2Jvb2wgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0Y6OmlzU0RIKCkgY29uc3QKK3sKKyAg
ICBpZiAoIW1fbWVkaWFTZWxlY3Rpb25PcHRpb24pCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAKKyAgICBDRlN0cmluZ1JlZiBtZWRpYVR5cGUgPSBBVkNGTWVkaWFTZWxlY3Rpb25PcHRpb25H
ZXRNZWRpYVR5cGUobWVkaWFTZWxlY3Rpb25PcHRpb24oKSk7CisKKyAgICBpZiAoQ0ZTdHJpbmdD
b21wYXJlKG1lZGlhVHlwZSwgQVZDRk1lZGlhVHlwZVN1YnRpdGxlLCBrQ0ZDb21wYXJlQ2FzZUlu
c2Vuc2l0aXZlKSAhPSBrQ0ZDb21wYXJlRXF1YWxUbykKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgaWYgKEFWQ0ZNZWRpYVNlbGVjdGlvbk9wdGlvbkhhc01lZGlhQ2hhcmFjdGVyaXN0aWMo
bWVkaWFTZWxlY3Rpb25PcHRpb24oKSwgQVZDRk1lZGlhQ2hhcmFjdGVyaXN0aWNUcmFuc2NyaWJl
c1Nwb2tlbkRpYWxvZ0ZvckFjY2Vzc2liaWxpdHkpCisgICAgICAgICYmIEFWQ0ZNZWRpYVNlbGVj
dGlvbk9wdGlvbkhhc01lZGlhQ2hhcmFjdGVyaXN0aWMobWVkaWFTZWxlY3Rpb25PcHRpb24oKSwg
QVZDRk1lZGlhQ2hhcmFjdGVyaXN0aWNEZXNjcmliZXNNdXNpY0FuZFNvdW5kRm9yQWNjZXNzaWJp
bGl0eSkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIGZhbHNlOworfQorICAg
IAorYm9vbCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRjo6Y29udGFpbnNPbmx5Rm9yY2VkU3Vi
dGl0bGVzKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fbWVkaWFTZWxlY3Rpb25PcHRpb24pCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICByZXR1cm4gQVZDRk1lZGlhU2VsZWN0aW9uT3B0
aW9uSGFzTWVkaWFDaGFyYWN0ZXJpc3RpYyhtZWRpYVNlbGVjdGlvbk9wdGlvbigpLCBBVkNGTWVk
aWFDaGFyYWN0ZXJpc3RpY0NvbnRhaW5zT25seUZvcmNlZFN1YnRpdGxlcyk7Cit9CisKK2Jvb2wg
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0Y6OmlzTWFpblByb2dyYW1Db250ZW50KCkgY29uc3QK
K3sKKyAgICBpZiAoIW1fbWVkaWFTZWxlY3Rpb25PcHRpb24pCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAKKyAgICByZXR1cm4gQVZDRk1lZGlhU2VsZWN0aW9uT3B0aW9uSGFzTWVkaWFDaGFy
YWN0ZXJpc3RpYyhtZWRpYVNlbGVjdGlvbk9wdGlvbigpLCBBVkNGTWVkaWFDaGFyYWN0ZXJpc3Rp
Y0lzTWFpblByb2dyYW1Db250ZW50KTsKK30KKworYm9vbCBJbmJhbmRUZXh0VHJhY2tQcml2YXRl
QVZDRjo6aXNFYXN5VG9SZWFkKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fbWVkaWFTZWxlY3Rpb25P
cHRpb24pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBBVkNGTWVkaWFTZWxl
Y3Rpb25PcHRpb25IYXNNZWRpYUNoYXJhY3RlcmlzdGljKG1lZGlhU2VsZWN0aW9uT3B0aW9uKCks
IEFWQ0ZNZWRpYUNoYXJhY3RlcmlzdGljRWFzeVRvUmVhZCk7Cit9CisKK0F0b21pY1N0cmluZyBJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRjo6bGFiZWwoKSBjb25zdAoreworICAgIGlmICghbV9t
ZWRpYVNlbGVjdGlvbk9wdGlvbikKKyAgICAgICAgcmV0dXJuIGVtcHR5QXRvbTsKKworICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gdGl0bGU7CisKKyAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4g
Y29tbW9uTWV0YURhdGEgPSBhZG9wdENGKEFWQ0ZNZWRpYVNlbGVjdGlvbk9wdGlvbkNvcHlDb21t
b25NZXRhZGF0YShtZWRpYVNlbGVjdGlvbk9wdGlvbigpKSk7CisgICAgUmV0YWluUHRyPENGQXJy
YXlSZWY+IHRpdGxlcyA9IGFkb3B0Q0YoQVZDRk1ldGFkYXRhSXRlbUNvcHlJdGVtc1dpdGhLZXlB
bmRLZXlTcGFjZShjb21tb25NZXRhRGF0YS5nZXQoKSwgQVZDRk1ldGFkYXRhQ29tbW9uS2V5VGl0
bGUsIEFWQ0ZNZXRhZGF0YUtleVNwYWNlQ29tbW9uKSk7CisgICAgQ0ZJbmRleCB0aXRsZXNDb3Vu
dCA9IENGQXJyYXlHZXRDb3VudCh0aXRsZXMuZ2V0KCkpOworICAgIGlmICh0aXRsZXNDb3VudCkg
eworICAgICAgICAvLyBJZiBwb3NzaWJsZSwgcmV0dXJuIGEgdGl0bGUgaW4gb25lIG9mIHRoZSB1
c2VyJ3MgcHJlZmVycmVkIGxhbmd1YWdlcy4KKyAgICAgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+
IHByZWZlcnJlZExhbmd1YWdlcyA9IENGTG9jYWxlQ29weVByZWZlcnJlZExhbmd1YWdlcygpOwor
ICAgICAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gdGl0bGVzRm9yUHJlZmVycmVkTGFuZ3VhZ2Vz
ID0gQVZDRk1lZGlhU2VsZWN0aW9uQ29weU9wdGlvbnNGcm9tQXJyYXlGaWx0ZXJlZEFuZFNvcnRl
ZEFjY29yZGluZ1RvUHJlZmVycmVkTGFuZ3VhZ2VzKHRpdGxlcy5nZXQoKSwgcHJlZmVycmVkTGFu
Z3VhZ2VzLmdldCgpKTsKKyAgICAgICAgQ0ZJbmRleCBwcmVmZXJyZWRUaXRsZXNDb3VudCA9IENG
QXJyYXlHZXRDb3VudCh0aXRsZXNGb3JQcmVmZXJyZWRMYW5ndWFnZXMuZ2V0KCkpOworICAgICAg
ICBpZiAocHJlZmVycmVkVGl0bGVzQ291bnQpIHsKKyAgICAgICAgICAgIEFWQ0ZNZXRhZGF0YUl0
ZW1SZWYgdGl0bGVNZXRhZGF0YSA9IHN0YXRpY19jYXN0PEFWQ0ZNZXRhZGF0YUl0ZW1SZWY+KENG
QXJyYXlHZXRWYWx1ZUF0SW5kZXgodGl0bGVzRm9yUHJlZmVycmVkTGFuZ3VhZ2VzLmdldCgpLCAw
KSk7CisgICAgICAgICAgICB0aXRsZSA9IGFkb3B0Q0YoQVZDRk1ldGFkYXRhSXRlbUNvcHlTdHJp
bmdWYWx1ZSh0aXRsZU1ldGFkYXRhKSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXRpdGxl
KSB7CisgICAgICAgICAgICBBVkNGTWV0YWRhdGFJdGVtUmVmIHRpdGxlTWV0YWRhdGEgPSBzdGF0
aWNfY2FzdDxBVkNGTWV0YWRhdGFJdGVtUmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KHRpdGxl
cy5nZXQoKSwgMCkpOworICAgICAgICAgICAgdGl0bGUgPSBhZG9wdENGKEFWQ0ZNZXRhZGF0YUl0
ZW1Db3B5U3RyaW5nVmFsdWUodGl0bGVNZXRhZGF0YSkpOworICAgICAgICB9CisgICAgfQorCisg
ICAgcmV0dXJuIHRpdGxlID8gQXRvbWljU3RyaW5nKHRpdGxlLmdldCgpKSA6IGVtcHR5QXRvbTsK
K30KKworQXRvbWljU3RyaW5nIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGOjpsYW5ndWFnZSgp
IGNvbnN0Cit7CisgICAgaWYgKCFtX21lZGlhU2VsZWN0aW9uT3B0aW9uKQorICAgICAgICByZXR1
cm4gZW1wdHlBdG9tOworCisgICAgUmV0YWluUHRyPENGTG9jYWxlUmVmPiBsb2NhbGUgPSBhZG9w
dENGKEFWQ0ZNZWRpYVNlbGVjdGlvbk9wdGlvbkNvcHlMb2NhbGUobWVkaWFTZWxlY3Rpb25PcHRp
b24oKSkpOworICAgIHJldHVybiBDRkxvY2FsZUdldElkZW50aWZpZXIobG9jYWxlLmdldCgpKTsK
K30KKworYm9vbCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRjo6aXNEZWZhdWx0KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
Y2YvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0YuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUFWQ0YuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRi5oCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEluYmFuZFRleHRUcmFj
a1ByaXZhdGVBVkNGX2gKKyNkZWZpbmUgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0ZfaAorCisj
aWYgUExBVEZPUk0oV0lOKSAmJiBFTkFCTEUoVklERU8pICYmIEhBVkUoQVZGT1VOREFUSU9OX01F
RElBX1NFTEVDVElPTl9HUk9VUCkKKworI2luY2x1ZGUgIkluYmFuZFRleHRUcmFja1ByaXZhdGVB
VkYuaCIKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKKyNpbmNsdWRlIDxBVkZvdW5kYXRp
b25DRi9BVkNGUGxheWVySXRlbS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIElu
YmFuZFRleHRUcmFja1ByaXZhdGVBVkNGIDogcHVibGljIEluYmFuZFRleHRUcmFja1ByaXZhdGVB
VkYgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZh
dGVBVkNGPiBjcmVhdGUoQVZGSW5iYW5kVHJhY2tQYXJlbnQqIHBsYXllciwgIEFWQ0ZNZWRpYVNl
bGVjdGlvbk9wdGlvblJlZiBzZWxlY3Rpb24pCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGKHBsYXllciwgc2VsZWN0aW9uKSk7Cisg
ICAgfQorCisgICAgfkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGKCkgeyB9CisKKyAgICB2aXJ0
dWFsIEluYmFuZFRleHRUcmFja1ByaXZhdGU6OktpbmQga2luZCgpIGNvbnN0IE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgYm9vbCBpc0Nsb3NlZENhcHRpb25zKCkgY29uc3QgT1ZFUlJJREU7CisgICAg
dmlydHVhbCBib29sIGlzU0RIKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGNv
bnRhaW5zT25seUZvcmNlZFN1YnRpdGxlcygpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwg
Ym9vbCBpc01haW5Qcm9ncmFtQ29udGVudCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwg
Ym9vbCBpc0Vhc3lUb1JlYWQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEF0b21pY1N0
cmluZyBsYWJlbCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgQXRvbWljU3RyaW5nIGxh
bmd1YWdlKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzRGVmYXVsdCgpIGNv
bnN0IE9WRVJSSURFOworCisgICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3QoKSBPVkVSUklERTsK
KworICAgIHZpcnR1YWwgYm9vbCBpc0xlZ2FjeUNsb3NlZENhcHRpb25zVHJhY2soKSBjb25zdCBP
VkVSUklERSB7IHJldHVybiBmYWxzZTsgfQorCisgICAgQVZDRk1lZGlhU2VsZWN0aW9uT3B0aW9u
UmVmIG1lZGlhU2VsZWN0aW9uT3B0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYVNlbGVjdGlv
bk9wdGlvbi5nZXQoKTsgfQorCitwcm90ZWN0ZWQ6CisgICAgSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUFWQ0YoQVZGSW5iYW5kVHJhY2tQYXJlbnQqLCBBVkNGTWVkaWFTZWxlY3Rpb25PcHRpb25SZWYp
OworICAgIAorICAgIFJldGFpblB0cjxBVkNGTWVkaWFTZWxlY3Rpb25PcHRpb25SZWY+IG1fbWVk
aWFTZWxlY3Rpb25PcHRpb247Cit9OworCit9CisKKyNlbmRpZgorI2VuZGlmCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUxlZ2FjeUFWQ0YuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVn
YWN5QVZDRi5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vY2YvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0YuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorCisjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKSAmJiAhSEFW
RShBVkZPVU5EQVRJT05fTEVHSUJMRV9PVVRQVVRfU1VQUE9SVCkgJiYgIVBMQVRGT1JNKElPUykK
KworI2luY2x1ZGUgIkluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGLmgiCisKKyNpbmNs
dWRlICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgor
I2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmgiCisjaW5jbHVkZSAi
U29mdExpbmtpbmcuaCIKKworI2luY2x1ZGUgPEFWRm91bmRhdGlvbkNGL0FWRm91bmRhdGlvbkNG
Lmg+CisKKyNpbmNsdWRlIDxkM2Q5Lmg+CisKKy8vIFRoZSBzb2Z0bGluayBoZWFkZXIgZmlsZXMg
bXVzdCBiZSBpbmNsdWRlZCBhZnRlciB0aGUgQVZDRiBhbmQgQ29yZU1lZGlhIGhlYWRlciBmaWxl
cy4KKyNpbmNsdWRlICJBVkZvdW5kYXRpb25DRlNvZnRMaW5raW5nLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0Y6OkluYmFuZFRleHRU
cmFja1ByaXZhdGVMZWdhY3lBVkNGKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGKiBw
bGF5ZXIsIEFWQ0ZQbGF5ZXJJdGVtVHJhY2tSZWYgdHJhY2spCisgICAgOiBJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlQVZGKHBsYXllcikKKyAgICAsIG1fcGxheWVySXRlbVRyYWNrKHRyYWNrKQorewor
fQorCit2b2lkIEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGOjpkaXNjb25uZWN0KCkK
K3sKKyAgICBtX3BsYXllckl0ZW1UcmFjayA9IDA7CisgICAgSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUFWRjo6ZGlzY29ubmVjdCgpOworfQorCitJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpLaW5kIElu
YmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGOjpraW5kKCkgY29uc3QKK3sKKyAgICBpZiAo
IW1fcGxheWVySXRlbVRyYWNrKQorICAgICAgICByZXR1cm4gSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZTo6Tm9uZTsKKworICAgIHJldHVybiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpDYXB0aW9uczsK
K30KKworYm9vbCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZDRjo6aXNDbG9zZWRDYXB0
aW9ucygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcGxheWVySXRlbVRyYWNrOworfQorCitib29s
IEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGOjpjb250YWluc09ubHlGb3JjZWRTdWJ0
aXRsZXMoKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBJbmJhbmRUZXh0
VHJhY2tQcml2YXRlTGVnYWN5QVZDRjo6aXNNYWluUHJvZ3JhbUNvbnRlbnQoKSBjb25zdAorewor
ICAgIHJldHVybiBtX3BsYXllckl0ZW1UcmFjazsKK30KKworYm9vbCBJbmJhbmRUZXh0VHJhY2tQ
cml2YXRlTGVnYWN5QVZDRjo6aXNFYXN5VG9SZWFkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK0F0b21pY1N0cmluZyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZDRjo6
bGFiZWwoKSBjb25zdAoreworICAgIGlmICghbV9wbGF5ZXJJdGVtVHJhY2spCisgICAgICAgIHJl
dHVybiBlbXB0eUF0b207CisKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHRpdGxlOworCisg
ICAgUmV0YWluUHRyPEFWQ0ZBc3NldFRyYWNrUmVmPiBhc3NldFRyYWNrID0gYWRvcHRDRihBVkNG
UGxheWVySXRlbVRyYWNrQ29weUFzc2V0VHJhY2sobV9wbGF5ZXJJdGVtVHJhY2suZ2V0KCkpKTsK
KyAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gY29tbW9uTWV0YURhdGEgPSBhZG9wdENGKEFWQ0ZB
c3NldFRyYWNrQ29weUNvbW1vbk1ldGFkYXRhKGFzc2V0VHJhY2suZ2V0KCkpKTsKKyAgICBSZXRh
aW5QdHI8Q0ZBcnJheVJlZj4gdGl0bGVzID0gYWRvcHRDRihBVkNGTWV0YWRhdGFJdGVtQ29weUl0
ZW1zV2l0aEtleUFuZEtleVNwYWNlKGNvbW1vbk1ldGFEYXRhLmdldCgpLCBBVkNGTWV0YWRhdGFD
b21tb25LZXlUaXRsZSwgQVZDRk1ldGFkYXRhS2V5U3BhY2VDb21tb24pKTsKKyAgICBDRkluZGV4
IHRpdGxlc0NvdW50ID0gQ0ZBcnJheUdldENvdW50KHRpdGxlcy5nZXQoKSk7CisgICAgaWYgKHRp
dGxlc0NvdW50KSB7CisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDgw
CisgICAgICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBwcmVmZXJyZWRMYW5ndWFnZXMgPSBDRkxv
Y2FsZUNvcHlQcmVmZXJyZWRMYW5ndWFnZXMoKTsKKyAgICAgICAgUmV0YWluUHRyPENGQXJyYXlS
ZWY+IHRpdGxlc0ZvclByZWZlcnJlZExhbmd1YWdlcyA9IEFWQ0ZNZWRpYVNlbGVjdGlvbkNvcHlP
cHRpb25zRnJvbUFycmF5RmlsdGVyZWRBbmRTb3J0ZWRBY2NvcmRpbmdUb1ByZWZlcnJlZExhbmd1
YWdlcyh0aXRsZXMuZ2V0KCksIHByZWZlcnJlZExhbmd1YWdlcy5nZXQoKSk7CisjZWxzZQorICAg
ICAgICBSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+IGN1cnJlbnRMb2NhbGUgPSBhZG9wdENGKENGTG9j
YWxlQ29weUN1cnJlbnQoKSk7CisgICAgICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiB0aXRsZXNG
b3JQcmVmZXJyZWRMYW5ndWFnZXMgPSBhZG9wdENGKEFWQ0ZNZXRhZGF0YUl0ZW1Db3B5SXRlbXNX
aXRoTG9jYWxlKHRpdGxlcy5nZXQoKSwgY3VycmVudExvY2FsZS5nZXQoKSkpOworI2VuZGlmCisg
ICAgICAgIENGSW5kZXggcHJlZmVycmVkVGl0bGVzQ291bnQgPSBDRkFycmF5R2V0Q291bnQodGl0
bGVzRm9yUHJlZmVycmVkTGFuZ3VhZ2VzLmdldCgpKTsKKyAgICAgICAgaWYgKHByZWZlcnJlZFRp
dGxlc0NvdW50KSB7CisgICAgICAgICAgICBBVkNGTWV0YWRhdGFJdGVtUmVmIHRpdGxlTWV0YWRh
dGEgPSBzdGF0aWNfY2FzdDxBVkNGTWV0YWRhdGFJdGVtUmVmPihDRkFycmF5R2V0VmFsdWVBdElu
ZGV4KHRpdGxlc0ZvclByZWZlcnJlZExhbmd1YWdlcy5nZXQoKSwgMCkpOworICAgICAgICAgICAg
dGl0bGUgPSBhZG9wdENGKEFWQ0ZNZXRhZGF0YUl0ZW1Db3B5U3RyaW5nVmFsdWUodGl0bGVNZXRh
ZGF0YSkpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCF0aXRsZSkgeworICAgICAgICAgICAg
QVZDRk1ldGFkYXRhSXRlbVJlZiB0aXRsZU1ldGFkYXRhID0gc3RhdGljX2Nhc3Q8QVZDRk1ldGFk
YXRhSXRlbVJlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleCh0aXRsZXMuZ2V0KCksIDApKTsKKyAg
ICAgICAgICAgIHRpdGxlID0gYWRvcHRDRihBVkNGTWV0YWRhdGFJdGVtQ29weVN0cmluZ1ZhbHVl
KHRpdGxlTWV0YWRhdGEpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiB0aXRsZSA/
IEF0b21pY1N0cmluZyh0aXRsZS5nZXQoKSkgOiBlbXB0eUF0b207Cit9CisKK0F0b21pY1N0cmlu
ZyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZDRjo6bGFuZ3VhZ2UoKSBjb25zdAorewor
ICAgIGlmICghbV9wbGF5ZXJJdGVtVHJhY2spCisgICAgICAgIHJldHVybiBlbXB0eUF0b207CisK
KyAgICBSZXRhaW5QdHI8QVZDRkFzc2V0VHJhY2tSZWY+IGFzc2V0VHJhY2sgPSBhZG9wdENGKEFW
Q0ZQbGF5ZXJJdGVtVHJhY2tDb3B5QXNzZXRUcmFjayhtX3BsYXllckl0ZW1UcmFjay5nZXQoKSkp
OworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbGFuZ3VhZ2VDb2RlID0gYWRvcHRDRihBVkNG
QXNzZXRUcmFja0NvcHlMYW5ndWFnZUNvZGUoYXNzZXRUcmFjay5nZXQoKSkpOworICAgIFJldGFp
blB0cjxDRkxvY2FsZVJlZj4gbG9jYWxlID0gYWRvcHRDRihDRkxvY2FsZUNyZWF0ZShrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBsYW5ndWFnZUNvZGUuZ2V0KCkpKTsKKyAgICByZXR1cm4gQ0ZMb2NhbGVH
ZXRJZGVudGlmaWVyKGxvY2FsZS5nZXQoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vY2YvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0YuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0YuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2
YXRlTGVnYWN5QVZDRi5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjaWZuZGVmIEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGX2gKKyNkZWZpbmUgSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0ZfaAorCisjaWYgRU5BQkxFKFZJREVPKSAmJiBV
U0UoQVZGT1VOREFUSU9OKSAmJiAhSEFWRShBVkZPVU5EQVRJT05fTEVHSUJMRV9PVVRQVVRfU1VQ
UE9SVCkgJiYgIVBMQVRGT1JNKElPUykKKworI2luY2x1ZGUgIkluYmFuZFRleHRUcmFja1ByaXZh
dGVBVkYuaCIKKyNpbmNsdWRlIDxBVkZvdW5kYXRpb25DRi9BVkNGUGxheWVySXRlbVRyYWNrLmg+
CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOworCitjbGFzcyBJbmJhbmRUZXh0
VHJhY2tQcml2YXRlTGVnYWN5QVZDRiA6IHB1YmxpYyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZG
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRl
TGVnYWN5QVZDRj4gY3JlYXRlKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGKiBwbGF5
ZXIsIEFWQ0ZQbGF5ZXJJdGVtVHJhY2tSZWYgdHJhY2spCisgICAgeworICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGKHBsYXllciwgdHJh
Y2spKTsKKyAgICB9CisKKyAgICB+SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0YoKSB7
IH0KKworICAgIHZpcnR1YWwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6S2luZCBraW5kKCkgY29u
c3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzQ2xvc2VkQ2FwdGlvbnMoKSBjb25zdCBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgY29udGFpbnNPbmx5Rm9yY2VkU3VidGl0bGVzKCkg
Y29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzTWFpblByb2dyYW1Db250ZW50KCkg
Y29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzRWFzeVRvUmVhZCgpIGNvbnN0IE9W
RVJSSURFOworICAgIHZpcnR1YWwgQXRvbWljU3RyaW5nIGxhYmVsKCkgY29uc3QgT1ZFUlJJREU7
CisgICAgdmlydHVhbCBBdG9taWNTdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCBPVkVSUklERTsKKwor
ICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0KCkgT1ZFUlJJREU7CisKKyAgICB2aXJ0dWFsIGJv
b2wgaXNMZWdhY3lDbG9zZWRDYXB0aW9uc1RyYWNrKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4g
dHJ1ZTsgfQorCisgICAgQVZDRlBsYXllckl0ZW1UcmFja1JlZiBhdlBsYXllckl0ZW1UcmFjaygp
IGNvbnN0IHsgcmV0dXJuIG1fcGxheWVySXRlbVRyYWNrLmdldCgpOyB9CisKK3Byb3RlY3RlZDoK
KyAgICBJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZDRihNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25DRiosIEFWQ0ZQbGF5ZXJJdGVtVHJhY2tSZWYpOworICAgIAorICAgIFJldGFp
blB0cjxBVkNGUGxheWVySXRlbVRyYWNrUmVmPiBtX3BsYXllckl0ZW1UcmFjazsKK307CisKK30K
KworI2VuZGlmIC8vIEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikgJiYgIUhBVkUo
QVZGT1VOREFUSU9OX0xFR0lCTEVfT1VUUFVUX1NVUFBPUlQpICYmICFQTEFURk9STShJT1MpCisK
KyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCShyZXZpc2lvbiAxNTI3NDcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNSw3
ICsyNSw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKIAotI2lmIFBMQVRGT1JNKFdJTikmJiBF
TkFCTEUoVklERU8pIAorI2lmIFBMQVRGT1JNKFdJTikgJiYgRU5BQkxFKFZJREVPKSAKIAogI2lm
IFVTRShBVkZPVU5EQVRJT04pCiAKQEAgLTM2LDEyICszNiwxNiBAQAogI2luY2x1ZGUgIkZsb2F0
Q29udmVyc2lvbi5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dC5oIgorI2luY2x1ZGUgIkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGLmgiCisjaW5j
bHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0YuaCIKICNpbmNsdWRlICJLVVJM
LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ0FMYXllci5oIgog
I2luY2x1ZGUgIlNvZnRMaW5raW5nLmgiCiAjaW5jbHVkZSAiVGltZVJhbmdlcy5oIgogCisjaW5j
bHVkZSA8QVZGb3VuZGF0aW9uQ0YvQVZDRlBsYXllckl0ZW0uaD4KKyNpbmNsdWRlIDxBVkZvdW5k
YXRpb25DRi9BVkNGUGxheWVySXRlbUxlZ2libGVPdXRwdXQuaD4KICNpbmNsdWRlIDxBVkZvdW5k
YXRpb25DRi9BVkNGUGxheWVyTGF5ZXIuaD4KICNpbmNsdWRlIDxBVkZvdW5kYXRpb25DRi9BVkZv
dW5kYXRpb25DRi5oPgogI2luY2x1ZGUgPENvcmVNZWRpYS9Db3JlTWVkaWEuaD4KQEAgLTQ5LDYg
KzUzLDcgQEAKICNpbmNsdWRlIDxkZWxheWltcC5oPgogI2luY2x1ZGUgPGRpc3BhdGNoL2Rpc3Bh
dGNoLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCiAvLyBUaGUgc29mdGxpbmsgaGVh
ZGVyIGZpbGVzIG11c3QgYmUgaW5jbHVkZWQgYWZ0ZXIgdGhlIEFWQ0YgYW5kIENvcmVNZWRpYSBo
ZWFkZXIgZmlsZXMuCkBAIC05NSw2ICsxMDAsMTMgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQg
c2Vla1RvVGltZShmbG9hdCk7CiAKKyAgICB2b2lkIHNldEN1cnJlbnRUcmFjayhJbmJhbmRUZXh0
VHJhY2tQcml2YXRlQVZGKik7CisgICAgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRiogY3VycmVu
dFRyYWNrKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50VHJhY2s7IH0KKworI2lmIEhBVkUoQVZG
T1VOREFUSU9OX01FRElBX1NFTEVDVElPTl9HUk9VUCkgJiYgSEFWRShBVkZPVU5EQVRJT05fTEVH
SUJMRV9PVVRQVVRfU1VQUE9SVCkKKyAgICBzdGF0aWMgdm9pZCBsZWdpYmxlT3V0cHV0Q2FsbGJh
Y2sodm9pZCogY29udGV4dCwgQVZDRlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0UmVmLCBDRkFycmF5
UmVmIGF0dHJpYnV0ZWRTdHJpbmcsIENGQXJyYXlSZWYgbmF0aXZlU2FtcGxlQnVmZmVycywgQ01U
aW1lIGl0ZW1UaW1lKTsKKyAgICBzdGF0aWMgdm9pZCBwcm9jZXNzQ3VlKHZvaWQqIGNvbnRleHQp
OworI2VuZGlmCiAgICAgc3RhdGljIHZvaWQgbG9hZE1ldGFkYXRhQ29tcGxldGlvbkNhbGxiYWNr
KEFWQ0ZBc3NldFJlZiwgdm9pZCopOwogICAgIHN0YXRpYyB2b2lkIGxvYWRQbGF5YWJsZUNvbXBs
ZXRpb25DYWxsYmFjayhBVkNGQXNzZXRSZWYsIHZvaWQqKTsKICAgICBzdGF0aWMgdm9pZCBwZXJp
b2RpY1RpbWVPYnNlcnZlckNhbGxiYWNrKEFWQ0ZQbGF5ZXJSZWYsIENNVGltZSwgdm9pZCopOwpA
QCAtMTA3LDYgKzExOSwxMCBAQCBwdWJsaWM6CiAgICAgaW5saW5lIEFWQ0ZQbGF5ZXJJdGVtUmVm
IGF2UGxheWVySXRlbSgpIGNvbnN0IHsgcmV0dXJuIChBVkNGUGxheWVySXRlbVJlZiltX2F2UGxh
eWVySXRlbS5nZXQoKTsgfQogICAgIGlubGluZSBBVkNGUGxheWVyT2JzZXJ2ZXJSZWYgdGltZU9i
c2VydmVyKCkgY29uc3QgeyByZXR1cm4gKEFWQ0ZQbGF5ZXJPYnNlcnZlclJlZiltX3RpbWVPYnNl
cnZlci5nZXQoKTsgfQogICAgIGlubGluZSBBVkNGQXNzZXRJbWFnZUdlbmVyYXRvclJlZiBpbWFn
ZUdlbmVyYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VHZW5lcmF0b3IuZ2V0KCk7IH0KKyNp
ZiBIQVZFKEFWRk9VTkRBVElPTl9NRURJQV9TRUxFQ1RJT05fR1JPVVApICYmIEhBVkUoQVZGT1VO
REFUSU9OX0xFR0lCTEVfT1VUUFVUX1NVUFBPUlQpCisgICAgaW5saW5lIEFWQ0ZQbGF5ZXJJdGVt
TGVnaWJsZU91dHB1dFJlZiBsZWdpYmxlT3V0cHV0KCkgY29uc3QgeyByZXR1cm4gbV9sZWdpYmxl
T3V0cHV0LmdldCgpOyB9CisgICAgQVZDRk1lZGlhU2VsZWN0aW9uR3JvdXBSZWYgc2FmZU1lZGlh
U2VsZWN0aW9uR3JvdXBGb3JMZWdpYmxlTWVkaWEoKSBjb25zdDsKKyNlbmRpZgogICAgIGlubGlu
ZSBkaXNwYXRjaF9xdWV1ZV90IGRpc3BhdGNoUXVldWUoKSBjb25zdCB7IHJldHVybiBtX25vdGlm
aWNhdGlvblF1ZXVlOyB9CiAKIHByaXZhdGU6CkBAIC0xMzEsNiArMTQ3LDEzIEBAIHByaXZhdGU6
CiAgICAgUmV0YWluUHRyPEFWQ0ZQbGF5ZXJMYXllclJlZj4gbV9hdkNGVmlkZW9MYXllcjsKICAg
ICBSZXRhaW5QdHI8QVZDRlBsYXllck9ic2VydmVyUmVmPiBtX3RpbWVPYnNlcnZlcjsKICAgICBS
ZXRhaW5QdHI8QVZDRkFzc2V0SW1hZ2VHZW5lcmF0b3JSZWY+IG1faW1hZ2VHZW5lcmF0b3I7Cisj
aWYgSEFWRShBVkZPVU5EQVRJT05fTUVESUFfU0VMRUNUSU9OX0dST1VQKSAmJiBIQVZFKEFWRk9V
TkRBVElPTl9MRUdJQkxFX09VVFBVVF9TVVBQT1JUKQorICAgIFJldGFpblB0cjxBVkNGUGxheWVy
SXRlbUxlZ2libGVPdXRwdXRSZWY+IG1fbGVnaWJsZU91dHB1dDsKKyAgICBSZXRhaW5QdHI8QVZD
Rk1lZGlhU2VsZWN0aW9uR3JvdXBSZWY+IG1fc2VsZWN0aW9uR3JvdXA7CisgICAgUmV0YWluUHRy
PENGQXJyYXlSZWY+IG1fY3VycmVudEN1ZVN0cmluZ3M7CisgICAgCisgICAgZG91YmxlIG1fY3Vy
cmVudEN1ZVRpbWU7CisjZW5kaWYKICAgICBkaXNwYXRjaF9xdWV1ZV90IG1fbm90aWZpY2F0aW9u
UXVldWU7CiAKICAgICBtdXRhYmxlIFJldGFpblB0cjxDQUNGTGF5ZXJSZWY+IG1fY2FWaWRlb0xh
eWVyOwpAQCAtMTM4LDYgKzE2MSw4IEBAIHByaXZhdGU6CiAKICAgICBPd25QdHI8TGF5ZXJDbGll
bnQ+IG1fbGF5ZXJDbGllbnQ7CiAgICAgQ09NUHRyPElEaXJlY3QzRERldmljZTlFeD4gbV9kM2RE
ZXZpY2U7CisKKyAgICBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGKiBtX2N1cnJlbnRUcmFjazsK
IH07CiAKIHVpbnRwdHJfdCBBVkZXcmFwcGVyOjpzX25leHRBVkZXcmFwcGVyT2JqZWN0SUQ7CkBA
IC0xODAsOSArMjA1LDExIEBAIHN0YXRpYyBDRkFycmF5UmVmIGNyZWF0ZU1ldGFkYXRhS2V5TmFt
ZXMKICAgICAgICAgQVZDRkFzc2V0UHJvcGVydHlEdXJhdGlvbiwKICAgICAgICAgQVZDRkFzc2V0
UHJvcGVydHlOYXR1cmFsU2l6ZSwKICAgICAgICAgQVZDRkFzc2V0UHJvcGVydHlQcmVmZXJyZWRU
cmFuc2Zvcm0sCisgICAgICAgIC8vIEFWQ0ZBc3NldFByb3BlcnR5UHJlZmVycmVkVm9sdW1lLCAg
ICAvLyBGSVhNRTogU2hvdWxkIGJlIGV4cG9ydGVkIGJ5IEFWQ0YuIFdlIGNhbiB1c2UgQVZDRkFz
c2V0VHJhY2tQcm9wZXJ0eVByZWZlcnJlZFZvbHVtZSBmb3Igbm93LgogICAgICAgICBBVkNGQXNz
ZXRQcm9wZXJ0eVByZWZlcnJlZFJhdGUsCiAgICAgICAgIEFWQ0ZBc3NldFByb3BlcnR5UGxheWFi
bGUsCi0gICAgICAgIEFWQ0ZBc3NldFByb3BlcnR5VHJhY2tzIAorICAgICAgICBBVkNGQXNzZXRQ
cm9wZXJ0eVRyYWNrcywKKyAgICAgICAgQVZDRkFzc2V0UHJvcGVydHlBdmFpbGFibGVNZWRpYUNo
YXJhY3RlcmlzdGljc1dpdGhNZWRpYVNlbGVjdGlvbk9wdGlvbnMKICAgICB9OwogICAgIAogICAg
IHJldHVybiBDRkFycmF5Q3JlYXRlKDAsIChjb25zdCB2b2lkKiopa2V5TmFtZXMsIHNpemVvZihr
ZXlOYW1lcykgLyBzaXplb2Yoa2V5TmFtZXNbMF0pLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKTsK
QEAgLTI0Miw2ICsyNjksMTggQEAgaW5saW5lIEFWQ0ZBc3NldEltYWdlR2VuZXJhdG9yUmVmIGlt
YWdlRwogICAgIHJldHVybiB3cmFwcGVyID8gd3JhcHBlci0+aW1hZ2VHZW5lcmF0b3IoKSA6IDA7
IAogfQogCisjaWYgSEFWRShBVkZPVU5EQVRJT05fTUVESUFfU0VMRUNUSU9OX0dST1VQKSAmJiBI
QVZFKEFWRk9VTkRBVElPTl9MRUdJQkxFX09VVFBVVF9TVVBQT1JUKQoraW5saW5lIEFWQ0ZQbGF5
ZXJJdGVtTGVnaWJsZU91dHB1dFJlZiBhdkxlZ2libGVPdXRwdXQoQVZGV3JhcHBlciogd3JhcHBl
cikKK3sKKyAgICByZXR1cm4gd3JhcHBlciA/IHdyYXBwZXItPmxlZ2libGVPdXRwdXQoKSA6IDA7
Cit9CisKK2lubGluZSBBVkNGTWVkaWFTZWxlY3Rpb25Hcm91cFJlZiBzYWZlTWVkaWFTZWxlY3Rp
b25Hcm91cEZvckxlZ2libGVNZWRpYShBVkZXcmFwcGVyKiB3cmFwcGVyKQoreworICAgIHJldHVy
biB3cmFwcGVyID8gd3JhcHBlci0+c2FmZU1lZGlhU2VsZWN0aW9uR3JvdXBGb3JMZWdpYmxlTWVk
aWEoKSA6IDA7Cit9CisjZW5kaWYKKwogUGFzc093blB0cjxNZWRpYVBsYXllclByaXZhdGVJbnRl
cmZhY2U+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpjcmVhdGUoTWVkaWFQbGF5
ZXIqIHBsYXllcikgCiB7IAogICAgIHJldHVybiBhZG9wdFB0cihuZXcgTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uQ0YocGxheWVyKSk7CkBAIC0yNzcsNiArMzE2LDggQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6YwogCiAgICAgdGVhckRvd25WaWRlb1JlbmRl
cmluZygpOwogCisgICAgY2xlYXJUZXh0VHJhY2tzKCk7CisKICAgICBpZiAobV9hdmZXcmFwcGVy
KSB7CiAgICAgICAgIC8vIFRoZSBBVkNGIG9iamVjdHMgaGF2ZSB0byBiZSBkZXN0cm95ZWQgb24g
dGhlIHNhbWUgZGlzcGF0Y2ggcXVldWUgdXNlZCBmb3Igbm90aWZpY2F0aW9ucywgc28gc2NoZWR1
bGUgYSBjYWxsIHRvIAogICAgICAgICAvLyBkaXNjb25uZWN0QW5kRGVsZXRlQVZGV3JhcHBlciBv
biB0aGF0IHF1ZXVlLiAKQEAgLTMzNSw2ICszNzYsMzEgQEAgYm9vbCBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25DRjo6aAogICAgIHJldHVybiAobV92aWRlb0ZyYW1lSGFzRHJhd24gfHwg
KHZpZGVvTGF5ZXIobV9hdmZXcmFwcGVyKSAmJiBBVkNGUGxheWVyTGF5ZXJJc1JlYWR5Rm9yRGlz
cGxheSh2aWRlb0xheWVyKG1fYXZmV3JhcHBlcikpKSk7CiB9CiAKK3ZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnNldEN1cnJlbnRUcmFjayhJbmJhbmRUZXh0VHJhY2tQcml2
YXRlQVZGKiB0cmFjaykKK3sKKyAgICBpZiAobV9hdmZXcmFwcGVyKQorICAgICAgICBtX2F2Zldy
YXBwZXItPnNldEN1cnJlbnRUcmFjayh0cmFjayk7Cit9CisKK0luYmFuZFRleHRUcmFja1ByaXZh
dGVBVkYqIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpjdXJyZW50VHJhY2soKSBj
b25zdAoreworICAgIGlmIChtX2F2ZldyYXBwZXIpCisgICAgICAgIHJldHVybiBtX2F2ZldyYXBw
ZXItPmN1cnJlbnRUcmFjaygpOworCisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OmNyZWF0ZUFWQXNzZXRGb3JVUkwoY29uc3QgU3RyaW5n
JiB1cmwpCit7CisgICAgQVNTRVJUKCFtX2F2ZldyYXBwZXIpOworCisgICAgc2V0RGVsYXlDYWxs
YmFja3ModHJ1ZSk7CisKKyAgICBtX2F2ZldyYXBwZXIgPSBuZXcgQVZGV3JhcHBlcih0aGlzKTsK
KyAgICBtX2F2ZldyYXBwZXItPmNyZWF0ZUFzc2V0Rm9yVVJMKHVybCk7CisgICAgc2V0RGVsYXlD
YWxsYmFja3MoZmFsc2UpOworfQorCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bkNGOjpjcmVhdGVBVlBsYXllcigpCiB7CiAgICAgQVNTRVJUKG1fYXZmV3JhcHBlcik7CkBAIC0z
NTAsMTcgKzQxNiw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OmMK
ICAgICAKICAgICBzZXREZWxheUNhbGxiYWNrcyh0cnVlKTsKICAgICBtX2F2ZldyYXBwZXItPmNy
ZWF0ZVBsYXllckl0ZW0oKTsKLSAgICBzZXREZWxheUNhbGxiYWNrcyhmYWxzZSk7Ci19Ci0KLXZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OmNyZWF0ZUFWQXNzZXRGb3JVUkwo
Y29uc3QgU3RyaW5nJiB1cmwpCi17Ci0gICAgQVNTRVJUKCFtX2F2ZldyYXBwZXIpOwotCi0gICAg
c2V0RGVsYXlDYWxsYmFja3ModHJ1ZSk7CiAKLSAgICBtX2F2ZldyYXBwZXIgPSBuZXcgQVZGV3Jh
cHBlcih0aGlzKTsKLSAgICBtX2F2ZldyYXBwZXItPmNyZWF0ZUFzc2V0Rm9yVVJMKHVybCk7CiAg
ICAgc2V0RGVsYXlDYWxsYmFja3MoZmFsc2UpOwogfQogCkBAIC00NDYsMzQgKzUwMiwyNyBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpwCiAgICAgc2V0RGVsYXlDYWxs
YmFja3MoZmFsc2UpOwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNG
Ojp1cGRhdGVSYXRlKCkKLXsKLSAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25DRjo6dXBkYXRlUmF0ZSglcCkiLCB0aGlzKTsKLSAgICBpZiAoIW1ldGFEYXRhQXZh
aWxhYmxlKCkgfHwgIWF2UGxheWVyKG1fYXZmV3JhcHBlcikpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIHNldERlbGF5Q2FsbGJhY2tzKHRydWUpOwotICAgIEFWQ0ZQbGF5ZXJTZXRSYXRlKGF2UGxh
eWVyKG1fYXZmV3JhcHBlciksIHJlcXVlc3RlZFJhdGUoKSk7Ci0gICAgc2V0RGVsYXlDYWxsYmFj
a3MoZmFsc2UpOwotfQotCiBmbG9hdCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6
cGxhdGZvcm1EdXJhdGlvbigpIGNvbnN0CiB7CiAgICAgaWYgKCFtZXRhRGF0YUF2YWlsYWJsZSgp
IHx8ICFhdkFzc2V0KG1fYXZmV3JhcHBlcikpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgZmxv
YXQgZHVyYXRpb247Ci0gICAgQ01UaW1lIGNtRHVyYXRpb24gPSBBVkNGQXNzZXRHZXREdXJhdGlv
bihhdkFzc2V0KG1fYXZmV3JhcHBlcikpOworICAgIENNVGltZSBjbUR1cmF0aW9uOworCisgICAg
Ly8gQ2hlY2sgdGhlIEFWSXRlbSBpZiB3ZSBoYXZlIG9uZSBhbmQgaXQgaGFzIGxvYWRlZCBkdXJh
dGlvbiwgc29tZSBhc3NldHMgbmV2ZXIgcmVwb3J0IGR1cmF0aW9uLgorICAgIGlmIChhdlBsYXll
ckl0ZW0obV9hdmZXcmFwcGVyKSAmJiBwbGF5ZXJJdGVtU3RhdHVzKCkgPj0gTWVkaWFQbGF5ZXJB
VlBsYXllckl0ZW1TdGF0dXNSZWFkeVRvUGxheSkKKyAgICAgICAgY21EdXJhdGlvbiA9IEFWQ0ZQ
bGF5ZXJJdGVtR2V0RHVyYXRpb24oYXZQbGF5ZXJJdGVtKG1fYXZmV3JhcHBlcikpOworICAgIGVs
c2UKKyAgICAgICAgY21EdXJhdGlvbiA9IEFWQ0ZBc3NldEdldER1cmF0aW9uKGF2QXNzZXQobV9h
dmZXcmFwcGVyKSk7CisKICAgICBpZiAoQ01USU1FX0lTX05VTUVSSUMoY21EdXJhdGlvbikpCi0g
ICAgICAgIGR1cmF0aW9uID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdChDTVRpbWVHZXRTZWNvbmRz
KGNtRHVyYXRpb24pKTsKLSAgICBlbHNlIGlmIChDTVRJTUVfSVNfSU5ERUZJTklURShjbUR1cmF0
aW9uKSkKLSAgICAgICAgZHVyYXRpb24gPSBudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5
KCk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFW
Rk1hYzo6ZHVyYXRpb24oJXApIC0gaW52YWxpZCBkdXJhdGlvbiwgcmV0dXJuaW5nIDAiLCB0aGlz
KTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQorICAgICAgICByZXR1cm4gbmFycm93UHJlY2lz
aW9uVG9GbG9hdChDTVRpbWVHZXRTZWNvbmRzKGNtRHVyYXRpb24pKTsKKworICAgIGlmIChDTVRJ
TUVfSVNfSU5ERUZJTklURShjbUR1cmF0aW9uKSkKKyAgICAgICAgcmV0dXJuIG51bWVyaWNfbGlt
aXRzPGZsb2F0Pjo6aW5maW5pdHkoKTsKIAotICAgIHJldHVybiBkdXJhdGlvbjsKKyAgICBMT0co
TWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6cGxhdGZvcm1EdXJhdGlv
biglcCkgLSBpbnZhbGlkIGR1cmF0aW9uLCByZXR1cm5pbmcgJS4wZiIsIHRoaXMsIHN0YXRpY19j
YXN0PGZsb2F0PihNZWRpYVBsYXllcjo6aW52YWxpZFRpbWUoKSkpOworICAgIHJldHVybiBzdGF0
aWNfY2FzdDxmbG9hdD4oTWVkaWFQbGF5ZXI6OmludmFsaWRUaW1lKCkpOwogfQogCiBmbG9hdCBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6Y3VycmVudFRpbWUoKSBjb25zdApAQCAt
NDgzLDcgKzUzMiw3IEBAIGZsb2F0IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjoK
IAogICAgIENNVGltZSBpdGVtVGltZSA9IEFWQ0ZQbGF5ZXJJdGVtR2V0Q3VycmVudFRpbWUoYXZQ
bGF5ZXJJdGVtKG1fYXZmV3JhcHBlcikpOwogICAgIGlmIChDTVRJTUVfSVNfTlVNRVJJQyhpdGVt
VGltZSkpCi0gICAgICAgIHJldHVybiBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KENNVGltZUdldFNl
Y29uZHMoaXRlbVRpbWUpKTsKKyAgICAgICAgcmV0dXJuIG1heChuYXJyb3dQcmVjaXNpb25Ub0Zs
b2F0KENNVGltZUdldFNlY29uZHMoaXRlbVRpbWUpKSwgMC4wZik7CiAKICAgICByZXR1cm4gMDsK
IH0KQEAgLTUxNiw2ICs1NjUsMTcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25DRjo6cwogICAgIEFWQ0ZQbGF5ZXJTZXRDbG9zZWRDYXB0aW9uRGlzcGxheUVuYWJsZWQoYXZQ
bGF5ZXIobV9hdmZXcmFwcGVyKSwgY2xvc2VkQ2FwdGlvbnNWaXNpYmxlKTsKIH0KIAordm9pZCBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6dXBkYXRlUmF0ZSgpCit7CisgICAgTE9H
KE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnVwZGF0ZVJhdGUoJXAp
IiwgdGhpcyk7CisgICAgaWYgKCFtZXRhRGF0YUF2YWlsYWJsZSgpIHx8ICFhdlBsYXllcihtX2F2
ZldyYXBwZXIpKQorICAgICAgICByZXR1cm47CisKKyAgICBzZXREZWxheUNhbGxiYWNrcyh0cnVl
KTsKKyAgICBBVkNGUGxheWVyU2V0UmF0ZShhdlBsYXllcihtX2F2ZldyYXBwZXIpLCByZXF1ZXN0
ZWRSYXRlKCkpOworICAgIHNldERlbGF5Q2FsbGJhY2tzKGZhbHNlKTsKK30KKwogZmxvYXQgTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnJhdGUoKSBjb25zdAogewogICAgIGlmICgh
bWV0YURhdGFBdmFpbGFibGUoKSB8fCAhYXZQbGF5ZXIobV9hdmZXcmFwcGVyKSkKQEAgLTY3MSw3
ICs3MzEsNyBAQCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OkFzc2V0U3RhCiAgICAg
Zm9yIChDRkluZGV4IGkgPSAwOyBpIDwga2V5Q291bnQ7IGkrKykgewogICAgICAgICBDRlN0cmlu
Z1JlZiBrZXlOYW1lID0gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGQXJyYXlHZXRWYWx1ZUF0
SW5kZXgoa2V5cywgaSkpOwogICAgICAgICBBVkNGUHJvcGVydHlWYWx1ZVN0YXR1cyBrZXlTdGF0
dXMgPSBBVkNGQXNzZXRHZXRTdGF0dXNPZlZhbHVlRm9yUHJvcGVydHkoYXZBc3NldChtX2F2Zldy
YXBwZXIpLCBrZXlOYW1lLCAwKTsKLSAgICAgICAgCisKICAgICAgICAgaWYgKGtleVN0YXR1cyA8
IEFWQ0ZQcm9wZXJ0eVZhbHVlU3RhdHVzTG9hZGVkKQogICAgICAgICAgICAgcmV0dXJuIE1lZGlh
UGxheWVyQVZBc3NldFN0YXR1c0xvYWRpbmc7CiAgICAgICAgIGlmIChrZXlTdGF0dXMgPT0gQVZD
RlByb3BlcnR5VmFsdWVTdGF0dXNGYWlsZWQpCkBAIC02ODgsNyArNzQ4LDcgQEAgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpBc3NldFN0YQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbkNGOjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7Ci0gICAgaWYgKGNvbnRleHQtPnBh
aW50aW5nRGlzYWJsZWQoKSkKKyAgICBpZiAoIW1ldGFEYXRhQXZhaWxhYmxlKCkgfHwgY29udGV4
dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoY3VycmVu
dFJlbmRlcmluZ01vZGUoKSA9PSBNZWRpYVJlbmRlcmluZ1RvTGF5ZXIgJiYgIWltYWdlR2VuZXJh
dG9yKG1fYXZmV3JhcHBlcikpIHsKQEAgLTcwMiw3ICs3NjIsNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpwCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uQ0Y6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYg
cmVjdCkKIHsKLSAgICBpZiAoY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpIHx8ICFpbWFnZUdl
bmVyYXRvcihtX2F2ZldyYXBwZXIpKQorICAgIGlmICghbWV0YURhdGFBdmFpbGFibGUoKSB8fCBj
b250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkgfHwgIWltYWdlR2VuZXJhdG9yKG1fYXZmV3JhcHBl
cikpCiAgICAgICAgIHJldHVybjsKIAogICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbkNGOjpwYWludCglcCkiLCB0aGlzKTsKQEAgLTczMiw3ICs3OTIsMTAgQEAg
c3RhdGljIEhhc2hTZXQ8U3RyaW5nPiBtaW1lVHlwZUNhY2hlKCkKICAgICBpZiAodHlwZUxpc3RJ
bml0aWFsaXplZCkKICAgICAgICAgcmV0dXJuIGNhY2hlOwogICAgIHR5cGVMaXN0SW5pdGlhbGl6
ZWQgPSB0cnVlOwotICAgIAorCisgICAgQ0ZBcnJheVJlZiBmb28gPSBBVkNGVVJMQXNzZXRDb3B5
QXVkaW92aXN1YWxNSU1FVHlwZXMoKTsKKyAgICBBU1NFUlQoQ0ZBcnJheUdldFR5cGVJRCgpID09
IENGR2V0VHlwZUlEKGZvbykpOyAKKwogICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBzdXBwb3J0
ZWRUeXBlcyA9IGFkb3B0Q0YoQVZDRlVSTEFzc2V0Q29weUF1ZGlvdmlzdWFsTUlNRVR5cGVzKCkp
OwogICAgIAogICAgIEFTU0VSVChzdXBwb3J0ZWRUeXBlcyk7CkBAIC03NzgsOSArODQxLDE1IEBA
IGZsb2F0IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjoKIAogdm9pZCBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6dHJhY2tzQ2hhbmdlZCgpCiB7CisgICAgU3RyaW5n
IHByaW1hcnlBdWRpb1RyYWNrTGFuZ3VhZ2UgPSBtX2xhbmd1YWdlT2ZQcmltYXJ5QXVkaW9UcmFj
azsKKyAgICBtX2xhbmd1YWdlT2ZQcmltYXJ5QXVkaW9UcmFjayA9IFN0cmluZygpOworCiAgICAg
aWYgKCFhdkFzc2V0KG1fYXZmV3JhcHBlcikpCiAgICAgICAgIHJldHVybjsKLSAgICAKKworICAg
IGJvb2wgaGF2ZUNDVHJhY2sgPSBmYWxzZTsKKyAgICBib29sIGhhc0NhcHRpb25zID0gZmFsc2U7
CisKICAgICAvLyBUaGlzIGlzIGNhbGxlZCB3aGVuZXZlciB0aGUgdHJhY2tzIGNvbGxlY3Rpb24g
Y2hhbmdlcyBzbyBjYWNoZSBoYXNWaWRlbyBhbmQgaGFzQXVkaW8gc2luY2Ugd2UgYXJlCiAgICAg
Ly8gYXNrZWQgYWJvdXQgdGhvc2UgZmFpcmx5IGZyZXF1ZW50bHkuCiAgICAgaWYgKCFhdlBsYXll
ckl0ZW0obV9hdmZXcmFwcGVyKSkgewpAQCAtNzkyLDEyICs4NjEsMTMgQEAgdm9pZCBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6dAogICAgICAgICBSZXRhaW5QdHI8Q0ZBcnJheVJl
Zj4gYXVkaW9UcmFja3MgPSBhZG9wdENGKEFWQ0ZBc3NldENvcHlUcmFja3NXaXRoTWVkaWFDaGFy
YWN0ZXJpc3RpYyhhdkFzc2V0KG1fYXZmV3JhcHBlciksIEFWQ0ZNZWRpYUNoYXJhY3RlcmlzdGlj
QXVkaWJsZSkpOwogICAgICAgICBzZXRIYXNBdWRpbyhDRkFycmF5R2V0Q291bnQoYXVkaW9UcmFj
a3MuZ2V0KCkpKTsKIAorI2lmICFIQVZFKEFWRk9VTkRBVElPTl9NRURJQV9TRUxFQ1RJT05fR1JP
VVApCiAgICAgICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBjYXB0aW9uVHJhY2tzID0gYWRvcHRD
RihBVkNGQXNzZXRDb3B5VHJhY2tzV2l0aE1lZGlhVHlwZShhdkFzc2V0KG1fYXZmV3JhcHBlciks
IEFWQ0ZNZWRpYVR5cGVDbG9zZWRDYXB0aW9uKSk7Ci0gICAgICAgIHNldEhhc0F1ZGlvKENGQXJy
YXlHZXRDb3VudChjYXB0aW9uVHJhY2tzLmdldCgpKSk7CisgICAgICAgIGhhc0NhcHRpb25zID0g
Q0ZBcnJheUdldENvdW50KGNhcHRpb25UcmFja3MuZ2V0KCkpOworI2VuZGlmCiAgICAgfSBlbHNl
IHsKICAgICAgICAgYm9vbCBoYXNWaWRlbyA9IGZhbHNlOwogICAgICAgICBib29sIGhhc0F1ZGlv
ID0gZmFsc2U7Ci0gICAgICAgIGJvb2wgaGFzQ2FwdGlvbnMgPSBmYWxzZTsKIAogICAgICAgICBS
ZXRhaW5QdHI8Q0ZBcnJheVJlZj4gdHJhY2tzID0gYWRvcHRDRihBVkNGUGxheWVySXRlbUNvcHlU
cmFja3MoYXZQbGF5ZXJJdGVtKG1fYXZmV3JhcHBlcikpKTsKIApAQCAtODE1LDIwICs4ODUsNDYg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6dAogICAgICAgICAgICAg
ICAgICAgICBoYXNWaWRlbyA9IHRydWU7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAoQ0ZTdHJp
bmdDb21wYXJlKG1lZGlhVHlwZSwgQVZDRk1lZGlhVHlwZUF1ZGlvLCBrQ0ZDb21wYXJlQ2FzZUlu
c2Vuc2l0aXZlKSA9PSBrQ0ZDb21wYXJlRXF1YWxUbykKICAgICAgICAgICAgICAgICAgICAgaGFz
QXVkaW8gPSB0cnVlOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKENGU3RyaW5nQ29tcGFyZSht
ZWRpYVR5cGUsIEFWQ0ZNZWRpYVR5cGVDbG9zZWRDYXB0aW9uLCBrQ0ZDb21wYXJlQ2FzZUluc2Vu
c2l0aXZlKSA9PSBrQ0ZDb21wYXJlRXF1YWxUbykKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChD
RlN0cmluZ0NvbXBhcmUobWVkaWFUeXBlLCBBVkNGTWVkaWFUeXBlQ2xvc2VkQ2FwdGlvbiwga0NG
Q29tcGFyZUNhc2VJbnNlbnNpdGl2ZSkgPT0ga0NGQ29tcGFyZUVxdWFsVG8pIHsKKyNpZiAhSEFW
RShBVkZPVU5EQVRJT05fTUVESUFfU0VMRUNUSU9OX0dST1VQKQogICAgICAgICAgICAgICAgICAg
ICBoYXNDYXB0aW9ucyA9IHRydWU7CisjZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgaGF2ZUND
VHJhY2sgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAg
fQogCiAgICAgICAgIHNldEhhc1ZpZGVvKGhhc1ZpZGVvKTsKICAgICAgICAgc2V0SGFzQXVkaW8o
aGFzQXVkaW8pOwotICAgICAgICBzZXRIYXNDbG9zZWRDYXB0aW9ucyhoYXNDYXB0aW9ucyk7CiAg
ICAgfQogCisjaWYgSEFWRShBVkZPVU5EQVRJT05fTUVESUFfU0VMRUNUSU9OX0dST1VQKQorICAg
IEFWQ0ZNZWRpYVNlbGVjdGlvbkdyb3VwUmVmIGxlZ2libGVHcm91cCA9IHNhZmVNZWRpYVNlbGVj
dGlvbkdyb3VwRm9yTGVnaWJsZU1lZGlhKG1fYXZmV3JhcHBlcik7CisgICAgaWYgKGxlZ2libGVH
cm91cCkgeworICAgICAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gcGxheWFibGVPcHRpb25zID0g
YWRvcHRDRihBVkNGTWVkaWFTZWxlY3Rpb25Db3B5UGxheWFibGVPcHRpb25zRnJvbUFycmF5KEFW
Q0ZNZWRpYVNlbGVjdGlvbkdyb3VwR2V0T3B0aW9ucyhsZWdpYmxlR3JvdXApKSk7CisgICAgICAg
IGhhc0NhcHRpb25zID0gQ0ZBcnJheUdldENvdW50KHBsYXlhYmxlT3B0aW9ucy5nZXQoKSk7Cisg
ICAgICAgIGlmIChoYXNDYXB0aW9ucykKKyAgICAgICAgICAgIHByb2Nlc3NNZWRpYVNlbGVjdGlv
bk9wdGlvbnMoKTsKKyAgICB9CisjZW5kaWYKKworI2lmICFIQVZFKEFWRk9VTkRBVElPTl9MRUdJ
QkxFX09VVFBVVF9TVVBQT1JUKSAmJiBIQVZFKEFWRk9VTkRBVElPTl9NRURJQV9TRUxFQ1RJT05f
R1JPVVApCisgICAgaWYgKCFoYXNDYXB0aW9ucyAmJiBoYXZlQ0NUcmFjaykKKyAgICAgICAgcHJv
Y2Vzc0xlZ2FjeUNsb3NlZENhcHRpb25zVHJhY2tzKCk7CisjZWxpZiAhSEFWRShBVkZPVU5EQVRJ
T05fTEVHSUJMRV9PVVRQVVRfU1VQUE9SVCkKKyAgICBpZiAoaGF2ZUNDVHJhY2spCisgICAgICAg
IHByb2Nlc3NMZWdhY3lDbG9zZWRDYXB0aW9uc1RyYWNrcygpOworI2VuZGlmCisKKyAgICBzZXRI
YXNDbG9zZWRDYXB0aW9ucyhoYXNDYXB0aW9ucyk7CisKICAgICBMT0coTWVkaWEsICJNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25DRjp0cmFja3NDaGFuZ2VkKCVwKSAtIGhhc1ZpZGVvID0g
JXMsIGhhc0F1ZGlvID0gJXMsIGhhc0NhcHRpb25zID0gJXMiLCAKICAgICAgICAgdGhpcywgYm9v
bFN0cmluZyhoYXNWaWRlbygpKSwgYm9vbFN0cmluZyhoYXNBdWRpbygpKSwgYm9vbFN0cmluZyho
YXNDbG9zZWRDYXB0aW9ucygpKSk7CiAKICAgICBzaXplQ2hhbmdlZCgpOworCisgICAgaWYgKCFw
cmltYXJ5QXVkaW9UcmFja0xhbmd1YWdlLmlzTnVsbCgpICYmIHByaW1hcnlBdWRpb1RyYWNrTGFu
Z3VhZ2UgIT0gbGFuZ3VhZ2VPZlByaW1hcnlBdWRpb1RyYWNrKCkpCisgICAgICAgIHBsYXllcigp
LT5jaGFyYWN0ZXJpc3RpY0NoYW5nZWQoKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25DRjo6c2l6ZUNoYW5nZWQoKQpAQCAtODYxLDYgKzk1NywyMDMgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6cwogICAgIHNldE5hdHVyYWxTaXplKElu
dFNpemUobmF0dXJhbFNpemUpKTsKIH0KIAordm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25DRjo6Y2xlYXJUZXh0VHJhY2tzKCkKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbV90ZXh0VHJhY2tzLnNpemUoKTsgKytpKSB7CisgICAgICAgIFJlZlB0cjxJbmJhbmRUZXh0
VHJhY2tQcml2YXRlQVZGPiB0cmFjayA9IG1fdGV4dFRyYWNrc1tpXTsKKyAgICAgICAgcGxheWVy
KCktPnJlbW92ZVRleHRUcmFjayh0cmFjayk7CisgICAgICAgIHRyYWNrLT5kaXNjb25uZWN0KCk7
CisgICAgfQorICAgIG1fdGV4dFRyYWNrcy5jbGVhcigpOworfQorCisjaWYgIUhBVkUoQVZGT1VO
REFUSU9OX0xFR0lCTEVfT1VUUFVUX1NVUFBPUlQpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbkNGOjpwcm9jZXNzTGVnYWN5Q2xvc2VkQ2FwdGlvbnNUcmFja3MoKQoreworI2lm
IEhBVkUoQVZGT1VOREFUSU9OX01FRElBX1NFTEVDVElPTl9HUk9VUCkKKyAgICBBVkNGUGxheWVy
SXRlbVNlbGVjdE1lZGlhT3B0aW9uSW5NZWRpYVNlbGVjdGlvbkdyb3VwKGF2UGxheWVySXRlbSht
X2F2ZldyYXBwZXIpLCAwLCBzYWZlTWVkaWFTZWxlY3Rpb25Hcm91cEZvckxlZ2libGVNZWRpYSht
X2F2ZldyYXBwZXIpKTsKKyNlbmRpZgorCisgICAgVmVjdG9yPFJlZlB0cjxJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlQVZGPiA+IHJlbW92ZWRUZXh0VHJhY2tzID0gbV90ZXh0VHJhY2tzOworICAgIFJl
dGFpblB0cjxDRkFycmF5UmVmPiB0cmFja3MgPSBhZG9wdENGKEFWQ0ZQbGF5ZXJJdGVtQ29weVRy
YWNrcyhhdlBsYXllckl0ZW0obV9hdmZXcmFwcGVyKSkpOworICAgIENGSW5kZXggdHJhY2tDb3Vu
dCA9IENGQXJyYXlHZXRDb3VudCh0cmFja3MuZ2V0KCkpOworICAgIGZvciAoQ0ZJbmRleCBpID0g
MDsgaSA8IHRyYWNrQ291bnQ7ICsraSkgeworICAgICAgICBBVkNGUGxheWVySXRlbVRyYWNrUmVm
IHBsYXllckl0ZW1UcmFjayA9IChBVkNGUGxheWVySXRlbVRyYWNrUmVmKShDRkFycmF5R2V0VmFs
dWVBdEluZGV4KHRyYWNrcy5nZXQoKSwgaSkpOworCisgICAgICAgIFJldGFpblB0cjxBVkNGQXNz
ZXRUcmFja1JlZj4gYXNzZXRUcmFjayA9IGFkb3B0Q0YoQVZDRlBsYXllckl0ZW1UcmFja0NvcHlB
c3NldFRyYWNrKHBsYXllckl0ZW1UcmFjaykpOworICAgICAgICBDRlN0cmluZ1JlZiBtZWRpYVR5
cGUgPSBBVkNGQXNzZXRUcmFja0dldE1lZGlhVHlwZShhc3NldFRyYWNrLmdldCgpKTsKKyAgICAg
ICAgaWYgKCFtZWRpYVR5cGUpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAg
ICAKKyAgICAgICAgaWYgKENGU3RyaW5nQ29tcGFyZShtZWRpYVR5cGUsIEFWQ0ZNZWRpYVR5cGVD
bG9zZWRDYXB0aW9uLCBrQ0ZDb21wYXJlQ2FzZUluc2Vuc2l0aXZlKSAhPSBrQ0ZDb21wYXJlRXF1
YWxUbykKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGJvb2wgbmV3Q0NUcmFjayA9
IHRydWU7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IHJlbW92ZWRUZXh0VHJhY2tzLnNpemUo
KTsgaSA+IDA7IC0taSkgeworICAgICAgICAgICAgaWYgKCFyZW1vdmVkVGV4dFRyYWNrc1tpIC0g
MV0tPmlzTGVnYWN5Q2xvc2VkQ2FwdGlvbnNUcmFjaygpKQorICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworCisgICAgICAgICAgICBSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFW
Q0Y+IHRyYWNrID0gc3RhdGljX2Nhc3Q8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0Yq
PihtX3RleHRUcmFja3NbaSAtIDFdLmdldCgpKTsKKyAgICAgICAgICAgIGlmICh0cmFjay0+YXZQ
bGF5ZXJJdGVtVHJhY2soKSA9PSBwbGF5ZXJJdGVtVHJhY2spIHsKKyAgICAgICAgICAgICAgICBy
ZW1vdmVkVGV4dFRyYWNrcy5yZW1vdmUoaSAtIDEpOworICAgICAgICAgICAgICAgIG5ld0NDVHJh
Y2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorCisgICAgICAgIGlmICghbmV3Q0NUcmFjaykKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICAKKyAgICAgICAgbV90ZXh0VHJhY2tzLmFwcGVuZChJbmJhbmRUZXh0VHJhY2tQcml2
YXRlTGVnYWN5QVZDRjo6Y3JlYXRlKHRoaXMsIHBsYXllckl0ZW1UcmFjaykpOworICAgIH0KKwor
ICAgIHByb2Nlc3NOZXdBbmRSZW1vdmVkVGV4dFRyYWNrcyhyZW1vdmVkVGV4dFRyYWNrcyk7Cit9
CisjZW5kaWYKKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6cHJvY2Vz
c05ld0FuZFJlbW92ZWRUZXh0VHJhY2tzKGNvbnN0IFZlY3RvcjxSZWZQdHI8SW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUFWRj4gPiYgcmVtb3ZlZFRleHRUcmFja3MpCit7CisgICAgLy8gRklYTUU6IExp
ZnQgdG8gcGFyZW50IGNsYXNzCisgICAgaWYgKHJlbW92ZWRUZXh0VHJhY2tzLnNpemUoKSkgewor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV90ZXh0VHJhY2tzLnNpemUoKTsgKytp
KSB7CisgICAgICAgICAgICBpZiAoIXJlbW92ZWRUZXh0VHJhY2tzLmNvbnRhaW5zKG1fdGV4dFRy
YWNrc1tpXSkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIHBsYXllcigpLT5yZW1vdmVUZXh0VHJhY2socmVtb3ZlZFRleHRUcmFja3NbaV0uZ2V0
KCkpOworICAgICAgICAgICAgbV90ZXh0VHJhY2tzLnJlbW92ZShpKTsKKyAgICAgICAgfQorICAg
IH0KKyAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV90ZXh0VHJhY2tzLnNpemUo
KTsgKytpKSB7CisgICAgICAgIFJlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGPiB0cmFj
ayA9IG1fdGV4dFRyYWNrc1tpXTsKKyAgICAgICAgCisgICAgICAgIHRyYWNrLT5zZXRUZXh0VHJh
Y2tJbmRleChpKTsKKyAgICAgICAgaWYgKHRyYWNrLT5oYXNCZWVuUmVwb3J0ZWQoKSkKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICAKKyAgICAgICAgdHJhY2stPnNldEhhc0JlZW5SZXBv
cnRlZCh0cnVlKTsKKyAgICAgICAgcGxheWVyKCktPmFkZFRleHRUcmFjayh0cmFjay5nZXQoKSk7
CisgICAgfQorICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNG
Ojpwcm9jZXNzTmV3QW5kUmVtb3ZlZFRleHRUcmFja3MoJXApIC0gZm91bmQgJWkgdGV4dCB0cmFj
a3MiLCB0aGlzLCBtX3RleHRUcmFja3Muc2l6ZSgpKTsKK30KKworI2lmIEhBVkUoQVZGT1VOREFU
SU9OX01FRElBX1NFTEVDVElPTl9HUk9VUCkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uQ0Y6OnByb2Nlc3NNZWRpYVNlbGVjdGlvbk9wdGlvbnMoKQoreworICAgIEFWQ0ZNZWRp
YVNlbGVjdGlvbkdyb3VwUmVmIGxlZ2libGVHcm91cCA9IHNhZmVNZWRpYVNlbGVjdGlvbkdyb3Vw
Rm9yTGVnaWJsZU1lZGlhKG1fYXZmV3JhcHBlcik7CisgICAgaWYgKCFsZWdpYmxlR3JvdXApIHsK
KyAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnBy
b2Nlc3NNZWRpYVNlbGVjdGlvbk9wdGlvbnMoJXApIC0gbmlsIG1lZGlhU2VsZWN0aW9uR3JvdXAi
LCB0aGlzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFdlIGVuYWJsZWQgYXV0
b21hdGljIG1lZGlhIHNlbGVjdGlvbiBiZWNhdXNlIHdlIHdhbnQgYWx0ZXJuYXRlIGF1ZGlvIHRy
YWNrcyB0byBiZSBlbmFibGVkL2Rpc2FibGVkIGF1dG9tYXRpY2FsbHksCisgICAgLy8gYnV0IHNl
dCB0aGUgc2VsZWN0ZWQgbGVnaWJsZSB0cmFjayB0byBuaWwgc28gdGV4dCB0cmFja3Mgd2lsbCBu
b3QgYmUgYXV0b21hdGljYWxseSBjb25maWd1cmVkLgorICAgIGlmICghbV90ZXh0VHJhY2tzLnNp
emUoKSkgeworICAgICAgICBBU1NFUlQoQVZDRk1lZGlhU2VsZWN0aW9uR3JvdXBBbGxvd3NFbXB0
eVNlbGVjdGlvbihsZWdpYmxlR3JvdXApKTsKKyAgICAgICAgQVZDRlBsYXllckl0ZW1SZWYgcGxh
eWVySXRlbSA9IGF2UGxheWVySXRlbShtX2F2ZldyYXBwZXIpOworCisgICAgICAgIGlmIChwbGF5
ZXJJdGVtKQorICAgICAgICAgICAgQVZDRlBsYXllckl0ZW1TZWxlY3RNZWRpYU9wdGlvbkluTWVk
aWFTZWxlY3Rpb25Hcm91cChwbGF5ZXJJdGVtLCAwLCBsZWdpYmxlR3JvdXApOworICAgIH0KKwor
ICAgIFZlY3RvcjxSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRj4gPiByZW1vdmVkVGV4
dFRyYWNrcyA9IG1fdGV4dFRyYWNrczsKKyAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gbGVnaWJs
ZU9wdGlvbnMgPSBhZG9wdENGKEFWQ0ZNZWRpYVNlbGVjdGlvbkNvcHlQbGF5YWJsZU9wdGlvbnNG
cm9tQXJyYXkoQVZDRk1lZGlhU2VsZWN0aW9uR3JvdXBHZXRPcHRpb25zKGxlZ2libGVHcm91cCkp
KTsKKyAgICBDRkluZGV4IGxlZ2libGVPcHRpb25zQ291bnQgPSBDRkFycmF5R2V0Q291bnQobGVn
aWJsZU9wdGlvbnMuZ2V0KCkpOworICAgIGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8IGxlZ2libGVP
cHRpb25zQ291bnQ7ICsraSkgeworICAgICAgICBBVkNGTWVkaWFTZWxlY3Rpb25PcHRpb25SZWYg
b3B0aW9uID0gc3RhdGljX2Nhc3Q8QVZDRk1lZGlhU2VsZWN0aW9uT3B0aW9uUmVmPihDRkFycmF5
R2V0VmFsdWVBdEluZGV4KGxlZ2libGVPcHRpb25zLmdldCgpLCBpKSk7CisgICAgICAgIGJvb2wg
bmV3VHJhY2sgPSB0cnVlOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSByZW1vdmVkVGV4dFRy
YWNrcy5zaXplKCk7IGkgPiAwOyAtLWkpIHsKKyAgICAgICAgICAgIGlmIChyZW1vdmVkVGV4dFRy
YWNrc1tpIC0gMV0tPmlzTGVnYWN5Q2xvc2VkQ2FwdGlvbnNUcmFjaygpKQorICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUFWQ0Y+IHRyYWNrID0gc3RhdGljX2Nhc3Q8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0YqPihy
ZW1vdmVkVGV4dFRyYWNrc1tpIC0gMV0uZ2V0KCkpOworICAgICAgICAgICAgaWYgKENGRXF1YWwo
dHJhY2stPm1lZGlhU2VsZWN0aW9uT3B0aW9uKCksIG9wdGlvbikpIHsKKyAgICAgICAgICAgICAg
ICByZW1vdmVkVGV4dFRyYWNrcy5yZW1vdmUoaSAtIDEpOworICAgICAgICAgICAgICAgIG5ld1Ry
YWNrID0gZmFsc2U7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKCFuZXdUcmFjaykKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisg
ICAgICAgIG1fdGV4dFRyYWNrcy5hcHBlbmQoSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0Y6OmNy
ZWF0ZSh0aGlzLCBvcHRpb24pKTsKKyAgICB9CisKKyAgICBwcm9jZXNzTmV3QW5kUmVtb3ZlZFRl
eHRUcmFja3MocmVtb3ZlZFRleHRUcmFja3MpOworfQorCisjZW5kaWYgLy8gSEFWRShBVkZPVU5E
QVRJT05fTUVESUFfU0VMRUNUSU9OX0dST1VQKQorCit2b2lkIEFWRldyYXBwZXI6OnNldEN1cnJl
bnRUcmFjayhJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGKiB0cmFjaykKK3sKKyAgICBpZiAobV9j
dXJyZW50VHJhY2sgPT0gdHJhY2spCisgICAgICAgIHJldHVybjsKKworICAgIExPRyhNZWRpYSwg
Ik1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpzZXRDdXJyZW50VHJhY2soJXApIC0g
c2VsZWN0aW5nIHRyYWNrICVwLCBsYW5ndWFnZSA9ICVzIiwgdGhpcywgdHJhY2ssIHRyYWNrID8g
dHJhY2stPmxhbmd1YWdlKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSA6ICIiKTsKKyAgICAgICAg
CisgICAgbV9jdXJyZW50VHJhY2sgPSB0cmFjazsKKworICAgIGlmICh0cmFjaykgeworICAgICAg
ICBpZiAodHJhY2stPmlzTGVnYWN5Q2xvc2VkQ2FwdGlvbnNUcmFjaygpKQorICAgICAgICAgICAg
QVZDRlBsYXllclNldENsb3NlZENhcHRpb25EaXNwbGF5RW5hYmxlZChhdlBsYXllcigpLCBUUlVF
KTsKKyNpZiBIQVZFKEFWRk9VTkRBVElPTl9NRURJQV9TRUxFQ1RJT05fR1JPVVApCisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIEFWQ0ZQbGF5ZXJJdGVtU2VsZWN0TWVkaWFPcHRpb25Jbk1lZGlh
U2VsZWN0aW9uR3JvdXAoYXZQbGF5ZXJJdGVtKCksIHN0YXRpY19jYXN0PEluYmFuZFRleHRUcmFj
a1ByaXZhdGVBVkNGKj4odHJhY2spLT5tZWRpYVNlbGVjdGlvbk9wdGlvbigpLCBzYWZlTWVkaWFT
ZWxlY3Rpb25Hcm91cEZvckxlZ2libGVNZWRpYSgpKTsKKyNlbmRpZgorICAgIH0gZWxzZSB7Cisj
aWYgSEFWRShBVkZPVU5EQVRJT05fTUVESUFfU0VMRUNUSU9OX0dST1VQKQorICAgICAgICBBVkNG
UGxheWVySXRlbVNlbGVjdE1lZGlhT3B0aW9uSW5NZWRpYVNlbGVjdGlvbkdyb3VwKGF2UGxheWVy
SXRlbSgpLCAwLCBzYWZlTWVkaWFTZWxlY3Rpb25Hcm91cEZvckxlZ2libGVNZWRpYSgpKTsKKyNl
bmRpZgorICAgICAgICBBVkNGUGxheWVyU2V0Q2xvc2VkQ2FwdGlvbkRpc3BsYXlFbmFibGVkKGF2
UGxheWVyKCksIEZBTFNFKTsKKyAgICB9Cit9CisKK1N0cmluZyBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25DRjo6bGFuZ3VhZ2VPZlByaW1hcnlBdWRpb1RyYWNrKCkgY29uc3QKK3sKKyAg
ICBpZiAoIW1fbGFuZ3VhZ2VPZlByaW1hcnlBdWRpb1RyYWNrLmlzTnVsbCgpKQorICAgICAgICBy
ZXR1cm4gbV9sYW5ndWFnZU9mUHJpbWFyeUF1ZGlvVHJhY2s7CisKKyAgICBpZiAoIWF2UGxheWVy
SXRlbShtX2F2ZldyYXBwZXIpKQorICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKworI2lm
IEhBVkUoQVZGT1VOREFUSU9OX01FRElBX1NFTEVDVElPTl9HUk9VUCkKKyAgICAvLyBJZiBBVkZv
dW5kYXRpb24gaGFzIGFuIGF1ZGlibGUgZ3JvdXAsIHJldHVybiB0aGUgbGFuZ3VhZ2Ugb2YgdGhl
IGN1cnJlbnRseSBzZWxlY3RlZCBhdWRpYmxlIG9wdGlvbi4KKyAgICBBVkNGTWVkaWFTZWxlY3Rp
b25Hcm91cFJlZiBhdWRpYmxlR3JvdXAgPSBBVkNGQXNzZXRHZXRTZWxlY3Rpb25Hcm91cEZvck1l
ZGlhQ2hhcmFjdGVyaXN0aWMoYXZBc3NldChtX2F2ZldyYXBwZXIpLCBBVkNGTWVkaWFDaGFyYWN0
ZXJpc3RpY0F1ZGlibGUpOworICAgIEFWQ0ZNZWRpYVNlbGVjdGlvbk9wdGlvblJlZiBjdXJyZW50
bHlTZWxlY3RlZEF1ZGlibGVPcHRpb24gPSBBVkNGUGxheWVySXRlbUdldFNlbGVjdGVkTWVkaWFP
cHRpb25Jbk1lZGlhU2VsZWN0aW9uR3JvdXAoYXZQbGF5ZXJJdGVtKG1fYXZmV3JhcHBlciksIGF1
ZGlibGVHcm91cCk7CisgICAgaWYgKGN1cnJlbnRseVNlbGVjdGVkQXVkaWJsZU9wdGlvbikgewor
ICAgICAgICBSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+IGF1ZGlibGVPcHRpb25Mb2NhbGUgPSBhZG9w
dENGKEFWQ0ZNZWRpYVNlbGVjdGlvbk9wdGlvbkNvcHlMb2NhbGUoY3VycmVudGx5U2VsZWN0ZWRB
dWRpYmxlT3B0aW9uKSk7CisgICAgICAgIG1fbGFuZ3VhZ2VPZlByaW1hcnlBdWRpb1RyYWNrID0g
Q0ZMb2NhbGVHZXRJZGVudGlmaWVyKGF1ZGlibGVPcHRpb25Mb2NhbGUuZ2V0KCkpOworICAgICAg
ICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6bGFuZ3VhZ2VP
ZlByaW1hcnlBdWRpb1RyYWNrKCVwKSAtIHJldHVybmluZyBsYW5ndWFnZSBvZiBzZWxlY3RlZCBh
dWRpYmxlIG9wdGlvbjogJXMiLCB0aGlzLCBtX2xhbmd1YWdlT2ZQcmltYXJ5QXVkaW9UcmFjay51
dGY4KCkuZGF0YSgpKTsKKworICAgICAgICByZXR1cm4gbV9sYW5ndWFnZU9mUHJpbWFyeUF1ZGlv
VHJhY2s7CisgICAgfQorI2VuZGlmIC8vIEhBVkUoQVZGT1VOREFUSU9OX01FRElBX1NFTEVDVElP
Tl9HUk9VUCkKKworICAgIC8vIEFWRm91bmRhdGlvbiBzeW50aGVzaXplcyBhbiBhdWRpYmxlIGdy
b3VwIHdoZW4gdGhlcmUgaXMgb25seSBvbmUgdW5ncm91cGVkIGF1ZGlvIHRyYWNrIGlmIHRoZXJl
IGlzIGFsc28gYSBsZWdpYmxlIGdyb3VwIChvbmUgb3IKKyAgICAvLyBtb3JlIGluLWJhbmQgdGV4
dCB0cmFja3MpLiBJdCBkb2Vzbid0IGtub3cgYWJvdXQgb3V0LW9mLWJhbmQgdHJhY2tzLCBzbyBp
ZiB0aGVyZSBpcyBhIHNpbmdsZSBhdWRpbyB0cmFjayByZXR1cm4gaXRzIGxhbmd1YWdlLgorICAg
IFJldGFpblB0cjxDRkFycmF5UmVmPiB0cmFja3MgPSBhZG9wdENGKEFWQ0ZBc3NldENvcHlUcmFj
a3NXaXRoTWVkaWFUeXBlKGF2QXNzZXQobV9hdmZXcmFwcGVyKSwgQVZDRk1lZGlhVHlwZUF1ZGlv
KSk7CisgICAgQ0ZJbmRleCB0cmFja0NvdW50ID0gQ0ZBcnJheUdldENvdW50KHRyYWNrcy5nZXQo
KSk7CisgICAgaWYgKCF0cmFja3MgfHwgdHJhY2tDb3VudCAhPSAxKSB7CisgICAgICAgIG1fbGFu
Z3VhZ2VPZlByaW1hcnlBdWRpb1RyYWNrID0gZW1wdHlTdHJpbmcoKTsKKyAgICAgICAgTE9HKE1l
ZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6Omxhbmd1YWdlT2ZQcmltYXJ5
QXVkaW9UcmFjayglcCkgLSAlaSBhdWRpbyB0cmFja3MsIHJldHVybmluZyBlbXB0eVN0cmluZygp
IiwgdGhpcywgKHRyYWNrcyA/IHRyYWNrQ291bnQgOiAwKSk7CisgICAgICAgIHJldHVybiBtX2xh
bmd1YWdlT2ZQcmltYXJ5QXVkaW9UcmFjazsKKyAgICB9CisKKyAgICBBVkNGQXNzZXRUcmFja1Jl
ZiB0cmFjayA9IChBVkNGQXNzZXRUcmFja1JlZilDRkFycmF5R2V0VmFsdWVBdEluZGV4KHRyYWNr
cy5nZXQoKSwgMCk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBsYW5ndWFnZSA9IGFkb3B0
Q0YoQVZDRkFzc2V0VHJhY2tDb3B5RXh0ZW5kZWRMYW5ndWFnZVRhZyh0cmFjaykpOworCisgICAg
Ly8gU29tZSBsZWdhY3kgdHJhY2tzIGhhdmUgInVuZCIgYXMgYSBsYW5ndWFnZSwgdHJlYXQgdGhh
dCB0aGUgc2FtZSBhcyBubyBsYW5ndWFnZSBhdCBhbGwuCisgICAgaWYgKGxhbmd1YWdlICYmIENG
U3RyaW5nQ29tcGFyZShsYW5ndWFnZS5nZXQoKSwgQ0ZTVFIoInVuZCIpLCBrQ0ZDb21wYXJlQ2Fz
ZUluc2Vuc2l0aXZlKSAhPSBrQ0ZDb21wYXJlRXF1YWxUbykgeworICAgICAgICBtX2xhbmd1YWdl
T2ZQcmltYXJ5QXVkaW9UcmFjayA9IGxhbmd1YWdlLmdldCgpOworICAgICAgICBMT0coTWVkaWEs
ICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6bGFuZ3VhZ2VPZlByaW1hcnlBdWRp
b1RyYWNrKCVwKSAtIHJldHVybmluZyBsYW5ndWFnZSBvZiBzaW5nbGUgYXVkaW8gdHJhY2s6ICVz
IiwgdGhpcywgbV9sYW5ndWFnZU9mUHJpbWFyeUF1ZGlvVHJhY2sudXRmOCgpLmRhdGEoKSk7Cisg
ICAgICAgIHJldHVybiBtX2xhbmd1YWdlT2ZQcmltYXJ5QXVkaW9UcmFjazsKKyAgICB9CisKKyAg
ICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6bGFuZ3VhZ2VP
ZlByaW1hcnlBdWRpb1RyYWNrKCVwKSAtIHNpbmdsZSBhdWRpbyB0cmFjayBoYXMgbm8gbGFuZ3Vh
Z2UsIHJldHVybmluZyBlbXB0eVN0cmluZygpIiwgdGhpcyk7CisgICAgbV9sYW5ndWFnZU9mUHJp
bWFyeUF1ZGlvVHJhY2sgPSBlbXB0eVN0cmluZygpOworICAgIHJldHVybiBtX2xhbmd1YWdlT2ZQ
cmltYXJ5QXVkaW9UcmFjazsKK30KKwogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25DRjo6Y29udGVudHNOZWVkc0Rpc3BsYXkoKQogewogICAgIGlmIChtX2F2ZldyYXBwZXIpCkBA
IC04NzAsNiArMTE2Myw4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6
OmMKIEFWRldyYXBwZXI6OkFWRldyYXBwZXIoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
Q0YqIG93bmVyKQogICAgIDogbV9vd25lcihvd25lcikKICAgICAsIG1fb2JqZWN0SUQoc19uZXh0
QVZGV3JhcHBlck9iamVjdElEKyspCisgICAgLCBtX2N1cnJlbnRDdWVUaW1lKDApCisgICAgLCBt
X2N1cnJlbnRUcmFjaygwKQogewogICAgIExPRyhNZWRpYSwgIkFWRldyYXBwZXI6OkFWRldyYXBw
ZXIoJXApIiwgdGhpcyk7CiAKQEAgLTg5Miw2ICsxMTg3LDE0IEBAIEFWRldyYXBwZXI6On5BVkZX
cmFwcGVyKCkKICAgICAgICAgbV9hdkFzc2V0ID0gMDsKICAgICB9CiAKKyNpZiBIQVZFKEFWRk9V
TkRBVElPTl9NRURJQV9TRUxFQ1RJT05fR1JPVVApICYmIEhBVkUoQVZGT1VOREFUSU9OX0xFR0lC
TEVfT1VUUFVUX1NVUFBPUlQpCisgICAgaWYgKGxlZ2libGVPdXRwdXQoKSkgeworICAgICAgICBp
ZiAoYXZQbGF5ZXJJdGVtKCkpCisgICAgICAgICAgICBBVkNGUGxheWVySXRlbVJlbW92ZU91dHB1
dChhdlBsYXllckl0ZW0oKSwgbGVnaWJsZU91dHB1dCgpKTsKKyAgICAgICAgbV9sZWdpYmxlT3V0
cHV0ID0gMDsKKyAgICB9CisjZW5kaWYKKwogICAgIG1fYXZQbGF5ZXJJdGVtID0gMDsKICAgICBt
X3RpbWVPYnNlcnZlciA9IDA7CiAgICAgbV9hdlBsYXllciA9IDA7CkBAIC0xMDA0LDEzICsxMzA3
LDI3IEBAIHZvaWQgQVZGV3JhcHBlcjo6Y3JlYXRlUGxheWVyKElEaXJlY3QzREQKICAgICBpZiAo
bV9kM2REZXZpY2UgJiYgQVZDRlBsYXllckVuYWJsZUhhcmR3YXJlQWNjZWxlcmF0ZWRWaWRlb0Rl
Y29kZXJLZXkpCiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKG9wdGlvbnNSZWYuZ2V0KCks
IEFWQ0ZQbGF5ZXJFbmFibGVIYXJkd2FyZUFjY2VsZXJhdGVkVmlkZW9EZWNvZGVyS2V5LCBrQ0ZC
b29sZWFuVHJ1ZSk7CiAKKyNpZiBIQVZFKEFWRk9VTkRBVElPTl9NRURJQV9TRUxFQ1RJT05fR1JP
VVApICYmIEhBVkUoQVZGT1VOREFUSU9OX0xFR0lCTEVfT1VUUFVUX1NVUFBPUlQpCisgICAgQ0ZE
aWN0aW9uYXJ5U2V0VmFsdWUob3B0aW9uc1JlZi5nZXQoKSwgQVZDRlBsYXllckFwcGxpZXNNZWRp
YVNlbGVjdGlvbkNyaXRlcmlhQXV0b21hdGljYWxseUtleSwga0NGQm9vbGVhblRydWUpOworI2Vu
ZGlmCisKICAgICAvLyBGSVhNRTogV2UgbmVlZCBhIHdheSB0byBjcmVhdGUgYSBBVlBsYXllciB3
aXRob3V0IGFuIEFWUGxheWVySXRlbSwgc2VlIDxyZGFyOi8vcHJvYmxlbS85ODc3NzMwPi4KICAg
ICBBVkNGUGxheWVyUmVmIHBsYXllclJlZiA9IEFWQ0ZQbGF5ZXJDcmVhdGVXaXRoUGxheWVySXRl
bUFuZE9wdGlvbnMoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYXZQbGF5ZXJJdGVtKCksIG9wdGlvbnNS
ZWYuZ2V0KCksIG1fbm90aWZpY2F0aW9uUXVldWUpOwogICAgIG1fYXZQbGF5ZXIgPSBhZG9wdENG
KHBsYXllclJlZik7CisjaWYgSEFWRShBVkZPVU5EQVRJT05fTUVESUFfU0VMRUNUSU9OX0dST1VQ
KSAmJiBIQVZFKEFWRk9VTkRBVElPTl9MRUdJQkxFX09VVFBVVF9TVVBQT1JUKQorICAgIEFWQ0ZQ
bGF5ZXJTZXRDbG9zZWRDYXB0aW9uRGlzcGxheUVuYWJsZWQocGxheWVyUmVmLCBGQUxTRSk7Cisj
ZW5kaWYKIAogICAgIGlmIChtX2QzZERldmljZSAmJiBBVkNGUGxheWVyU2V0RGlyZWN0M0REZXZp
Y2VQdHIoKSkKICAgICAgICAgQVZDRlBsYXllclNldERpcmVjdDNERGV2aWNlUHRyKCkocGxheWVy
UmVmLCBtX2QzZERldmljZS5nZXQoKSk7CiAKKyNpZiBIQVZFKEFWRk9VTkRBVElPTl9NRURJQV9T
RUxFQ1RJT05fR1JPVVApICYmIEhBVkUoQVZGT1VOREFUSU9OX0xFR0lCTEVfT1VUUFVUX1NVUFBP
UlQpCisgICAgLy8gQmVjYXVzZSBvZiBhIGJ1ZyBpbiBBVkZvdW5kYXRpb25DRiwgd2UgaGF2ZSB0
byB3YWl0IHVudGlsIHRoZSBwbGF5ZXIgaXMgY3JlYXRlZCBiZWZvcmUgd2UgY2FuIGFkZCB0aGUg
bGVnaWJsZSBvdXRwdXQ6CisgICAgLy8gT25jZSA8cmRhcjovL3Byb2JsZW0vMTQzOTA0NjY+IHRo
aXMgaXMgZml4ZWQsIHdlIGNhbiByZW1vdmUgdGhlIGZvbGxvd2luZyB0d28gbGluZXMuCisgICAg
OjpTbGVlcCgxMDAwKTsgLy8gRklYTUU6IFRoaXMgaXMgYmVpbmcgZml4ZWQgYXMgcGFydCBvZiA8
cmRhcjovL3Byb2JsZW0vMTQzOTA0NjY+CisgICAgQVZDRlBsYXllckl0ZW1BZGRPdXRwdXQoYXZQ
bGF5ZXJJdGVtKCksIGxlZ2libGVPdXRwdXQoKSk7CisjZW5kaWYKKwogICAgIENGTm90aWZpY2F0
aW9uQ2VudGVyUmVmIGNlbnRlciA9IENGTm90aWZpY2F0aW9uQ2VudGVyR2V0TG9jYWxDZW50ZXIo
KTsKICAgICBBU1NFUlQoY2VudGVyKTsKIApAQCAtMTA0MSw4ICsxMzU4LDQxIEBAIHZvaWQgQVZG
V3JhcHBlcjo6Y3JlYXRlUGxheWVySXRlbSgpCiAgICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJBZGRP
YnNlcnZlcihjZW50ZXIsIGNhbGxiYWNrQ29udGV4dCgpLCBub3RpZmljYXRpb25DYWxsYmFjaywg
QVZDRlBsYXllckl0ZW1Jc1BsYXliYWNrTGlrZWx5VG9LZWVwVXBDaGFuZ2VkTm90aWZpY2F0aW9u
LCBpdGVtUmVmLCBDRk5vdGlmaWNhdGlvblN1c3BlbnNpb25CZWhhdmlvckRlbGl2ZXJJbW1lZGlh
dGVseSk7CiAgICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJBZGRPYnNlcnZlcihjZW50ZXIsIGNhbGxi
YWNrQ29udGV4dCgpLCBub3RpZmljYXRpb25DYWxsYmFjaywgQVZDRlBsYXllckl0ZW1Jc1BsYXli
YWNrQnVmZmVyRW1wdHlDaGFuZ2VkTm90aWZpY2F0aW9uLCBpdGVtUmVmLCBDRk5vdGlmaWNhdGlv
blN1c3BlbnNpb25CZWhhdmlvckRlbGl2ZXJJbW1lZGlhdGVseSk7CiAgICAgQ0ZOb3RpZmljYXRp
b25DZW50ZXJBZGRPYnNlcnZlcihjZW50ZXIsIGNhbGxiYWNrQ29udGV4dCgpLCBub3RpZmljYXRp
b25DYWxsYmFjaywgQVZDRlBsYXllckl0ZW1Jc1BsYXliYWNrQnVmZmVyRnVsbENoYW5nZWROb3Rp
ZmljYXRpb24sIGl0ZW1SZWYsIENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZl
ckltbWVkaWF0ZWx5KTsKKyAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2VydmVyKGNlbnRl
ciwgY2FsbGJhY2tDb250ZXh0KCksIG5vdGlmaWNhdGlvbkNhbGxiYWNrLCBBVkNGUGxheWVySXRl
bUR1cmF0aW9uQ2hhbmdlZE5vdGlmaWNhdGlvbiwgaXRlbVJlZiwgQ0ZOb3RpZmljYXRpb25TdXNw
ZW5zaW9uQmVoYXZpb3JEZWxpdmVySW1tZWRpYXRlbHkpOworICAgIC8vIEZJWE1FOiBBcmUgdGhl
cmUgb3RoZXIgbGVnaWJsZSBvdXRwdXQgdGhpbmdzIHdlIG5lZWQgdG8gcmVnaXN0ZXIgZm9yPyBh
c3NldCwgaGFzRW5hYmxlZEF1ZGlvPwogCiAgICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJBZGRPYnNl
cnZlcihjZW50ZXIsIGNhbGxiYWNrQ29udGV4dCgpLCBub3RpZmljYXRpb25DYWxsYmFjaywgQ0FD
RkNvbnRleHROZWVkc0ZsdXNoTm90aWZpY2F0aW9uKCksIDAsIENGTm90aWZpY2F0aW9uU3VzcGVu
c2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsKKworI2lmIEhBVkUoQVZGT1VOREFUSU9O
X01FRElBX1NFTEVDVElPTl9HUk9VUCkgJiYgSEFWRShBVkZPVU5EQVRJT05fTEVHSUJMRV9PVVRQ
VVRfU1VQUE9SVCkKKyAgICAvLyBOZWVkIGFuIGluaXRpYWwgbGVnaWJsZSBvdXRwdXQgc291cmNl
IGR1cmluZyBjb25zdHJ1Y3Rpb24uIFdlIGNhbiBjaGFuZ2UgdGhpcyB0byB0aGUgdXNlJ3MgcHJl
ZmVyZW5jZSBsYXRlci4KKyAgICBBVkNGTWVkaWFTZWxlY3Rpb25Hcm91cFJlZiBsZWdpYmxlR3Jv
dXAgPSBzYWZlTWVkaWFTZWxlY3Rpb25Hcm91cEZvckxlZ2libGVNZWRpYSgpOworICAgIGlmICgh
bGVnaWJsZUdyb3VwKQorICAgICAgICByZXR1cm47CisKKyAgICBSZXRhaW5QdHI8Q0ZBcnJheVJl
Zj4gcGxheWFibGVPcHRpb25zID0gYWRvcHRDRihBVkNGTWVkaWFTZWxlY3Rpb25Db3B5UGxheWFi
bGVPcHRpb25zRnJvbUFycmF5KEFWQ0ZNZWRpYVNlbGVjdGlvbkdyb3VwR2V0T3B0aW9ucyhsZWdp
YmxlR3JvdXApKSk7CisKKyAgICBpZiAoQ0ZBcnJheUdldENvdW50KHBsYXlhYmxlT3B0aW9ucy5n
ZXQoKSkpIHsKKyAgICAgICAgQVZDRk1lZGlhU2VsZWN0aW9uT3B0aW9uUmVmIGxlZ2libGVPcHRp
b24gPSByZWludGVycHJldF9jYXN0PEFWQ0ZNZWRpYVNlbGVjdGlvbk9wdGlvblJlZj4oQ0ZBcnJh
eUdldFZhbHVlQXRJbmRleChwbGF5YWJsZU9wdGlvbnMuZ2V0KCksIDApKTsKKyAgICAgICAgQVZD
RlBsYXllckl0ZW1TZWxlY3RNZWRpYU9wdGlvbkluTWVkaWFTZWxlY3Rpb25Hcm91cChpdGVtUmVm
LCBsZWdpYmxlT3B0aW9uLCBsZWdpYmxlR3JvdXApOworICAgIH0KKworICAgIGNvbnN0IENGVGlt
ZUludGVydmFsIGxlZ2libGVPdXRwdXRBZHZhbmNlSW50ZXJ2YWwgPSAyOworICAgIG1fbGVnaWJs
ZU91dHB1dCA9IGFkb3B0Q0YoQVZDRlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0Q3JlYXRlV2l0aE1l
ZGlhU3VidHlwZXNGb3JOYXRpdmVSZXByZXNlbnRhdGlvbihrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAw
KSk7CisgICAgQVZDRlBsYXllckl0ZW1PdXRwdXRTZXRTdXBwcmVzc1BsYXllclJlbmRlcmluZyht
X2xlZ2libGVPdXRwdXQuZ2V0KCksIFRSVUUpOworCisgICAgQVZDRlBsYXllckl0ZW1MZWdpYmxl
T3V0cHV0Q2FsbGJhY2tzIGNhbGxiYWNrSW5mbzsKKyAgICBjYWxsYmFja0luZm8udmVyc2lvbiA9
IGtBVkNGUGxheWVySXRlbUxlZ2libGVPdXRwdXRfQ2FsbGJhY2tzVmVyc2lvbl8xOworICAgIEFT
U0VSVChjYWxsYmFja0NvbnRleHQoKSk7CisgICAgY2FsbGJhY2tJbmZvLmNvbnRleHQgPSBjYWxs
YmFja0NvbnRleHQoKTsKKyAgICBjYWxsYmFja0luZm8ubGVnaWJsZU91dHB1dENhbGxiYWNrID0g
QVZGV3JhcHBlcjo6bGVnaWJsZU91dHB1dENhbGxiYWNrOworCisgICAgQVZDRlBsYXllckl0ZW1M
ZWdpYmxlT3V0cHV0U2V0Q2FsbGJhY2tzKG1fbGVnaWJsZU91dHB1dC5nZXQoKSwgJmNhbGxiYWNr
SW5mbywgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSk7CisgICAgQVZDRlBsYXllckl0ZW1MZWdp
YmxlT3V0cHV0U2V0QWR2YW5jZUludGVydmFsRm9yQ2FsbGJhY2tJbnZvY2F0aW9uKG1fbGVnaWJs
ZU91dHB1dC5nZXQoKSwgbGVnaWJsZU91dHB1dEFkdmFuY2VJbnRlcnZhbCk7CisgICAgQVZDRlBs
YXllckl0ZW1MZWdpYmxlT3V0cHV0U2V0VGV4dFN0eWxpbmdSZXNvbHV0aW9uKG1fbGVnaWJsZU91
dHB1dC5nZXQoKSwgQVZDRlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0VGV4dFN0eWxpbmdSZXNvbHV0
aW9uU291cmNlQW5kUnVsZXNPbmx5KTsKKyAgICAvLyBXZSBjYW5ub3QgYWRkIHRoZSBMZWdpYmxl
IE91dHB1dCB0byB0aGUgcGxheWVyIGl0ZW0gdW50aWwgdGhlIHBsYXllciBpcyBjb25zdHJ1Y3Rl
ZC4gPHJkYXI6Ly9wcm9ibGVtLzE0MzkwNDY2PgorICAgIC8vIE9uY2UgdGhpcyBpcyBmaXhlZCwg
d2UgY2FuIHVuY29tbWVudCB0aGUgZm9sbG93aW5nIGxpbmUuCisgICAgLy8gQVZDRlBsYXllckl0
ZW1BZGRPdXRwdXQobV9hdlBsYXllckl0ZW0uZ2V0KCksIG1fbGVnaWJsZU91dHB1dC5nZXQoKSk7
CisjZW5kaWYKIH0KIAogdm9pZCBBVkZXcmFwcGVyOjpwZXJpb2RpY1RpbWVPYnNlcnZlckNhbGxi
YWNrKEFWQ0ZQbGF5ZXJSZWYsIENNVGltZSBjbVRpbWUsIHZvaWQqIGNvbnRleHQpCkBAIC0xMTcx
LDYgKzE1MjEsNDAgQEAgdm9pZCBBVkZXcmFwcGVyOjpzZWVrVG9UaW1lKGZsb2F0IHRpbWUpCiAg
ICAgICAgIGtDTVRpbWVaZXJvLCBrQ01UaW1lWmVybywgJnNlZWtDb21wbGV0ZWRDYWxsYmFjaywg
Y2FsbGJhY2tDb250ZXh0KCkpOwogfQogCit2b2lkIEFWRldyYXBwZXI6OnByb2Nlc3NDdWUodm9p
ZCogY29udGV4dCkKK3sKKyAgICBBU1NFUlQoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSA9PSBk
aXNwYXRjaF9nZXRfY3VycmVudF9xdWV1ZSgpKTsKKyAgICBNdXRleExvY2tlciBsb2NrZXIobWFw
TG9jaygpKTsKKyAgICBBVkZXcmFwcGVyKiBzZWxmID0gYXZmV3JhcHBlckZvckNhbGxiYWNrQ29u
dGV4dChjb250ZXh0KTsKKyAgICBpZiAoIXNlbGYpIHsKKyAgICAgICAgTE9HKE1lZGlhLCAiQVZG
V3JhcHBlcjo6cHJvY2Vzc0N1ZSBpbnZva2VkIGZvciBkZWxldGVkIEFWRldyYXBwZXIgJWQiLCBy
ZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oY29udGV4dCkpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgaWYgKCFzZWxmLT5tX2N1cnJlbnRUcmFjaykKKyAgICAgICAgcmV0dXJuOwor
CisgICAgc2VsZi0+bV9jdXJyZW50VHJhY2stPnByb2Nlc3NDdWUoc2VsZi0+bV9jdXJyZW50Q3Vl
U3RyaW5ncy5nZXQoKSwgc2VsZi0+bV9jdXJyZW50Q3VlVGltZSk7Cit9CisKK3ZvaWQgQVZGV3Jh
cHBlcjo6bGVnaWJsZU91dHB1dENhbGxiYWNrKHZvaWQqIGNvbnRleHQsIEFWQ0ZQbGF5ZXJJdGVt
TGVnaWJsZU91dHB1dFJlZiAvKmxlZ2libGVPdXRwdXQqLywgQ0ZBcnJheVJlZiBhdHRyaWJ1dGVk
U3RyaW5ncywgQ0ZBcnJheVJlZiAvKm5hdGl2ZVNhbXBsZUJ1ZmZlcnMqLywgQ01UaW1lIGl0ZW1U
aW1lKQoreworICAgIEFTU0VSVChkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpID09IGRpc3BhdGNo
X2dldF9jdXJyZW50X3F1ZXVlKCkpOworICAgIE11dGV4TG9ja2VyIGxvY2tlcihtYXBMb2NrKCkp
OworICAgIEFWRldyYXBwZXIqIHNlbGYgPSBhdmZXcmFwcGVyRm9yQ2FsbGJhY2tDb250ZXh0KGNv
bnRleHQpOworICAgIGlmICghc2VsZikgeworICAgICAgICBMT0coTWVkaWEsICJBVkZXcmFwcGVy
OjpsZWdpYmxlT3V0cHV0Q2FsbGJhY2sgaW52b2tlZCBmb3IgZGVsZXRlZCBBVkZXcmFwcGVyICVk
IiwgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGNvbnRleHQpKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIExPRyhNZWRpYSwgIkFWRldyYXBwZXI6OmxlZ2libGVPdXRwdXRDYWxs
YmFjayglcCkiLCBzZWxmKTsKKworICAgIHNlbGYtPm1fY3VycmVudEN1ZVN0cmluZ3MgPSBhdHRy
aWJ1dGVkU3RyaW5nczsKKyAgICBzZWxmLT5tX2N1cnJlbnRDdWVUaW1lID0gQ01UaW1lR2V0U2Vj
b25kcyhpdGVtVGltZSk7CisKKyAgICBkaXNwYXRjaF9hc3luY19mKGRpc3BhdGNoX2dldF9tYWlu
X3F1ZXVlKCksIGNvbnRleHQsIHByb2Nlc3NDdWUpOworfQorCiB2b2lkIEFWRldyYXBwZXI6OnNl
dEFzc2V0KEFWQ0ZVUkxBc3NldFJlZiBhc3NldCkKIHsKICAgICBpZiAoYXNzZXQgPT0gYXZBc3Nl
dCgpKQpAQCAtMTI4Myw2ICsxNjY3LDE5IEBAIFJldGFpblB0cjxDR0ltYWdlUmVmPiBBVkZXcmFw
cGVyOjpjcmVhdGUKICAgICByZXR1cm4gaW1hZ2U7CiB9CiAKKyNpZiBIQVZFKEFWRk9VTkRBVElP
Tl9NRURJQV9TRUxFQ1RJT05fR1JPVVApICYmIEhBVkUoQVZGT1VOREFUSU9OX0xFR0lCTEVfT1VU
UFVUX1NVUFBPUlQpCitBVkNGTWVkaWFTZWxlY3Rpb25Hcm91cFJlZiBBVkZXcmFwcGVyOjpzYWZl
TWVkaWFTZWxlY3Rpb25Hcm91cEZvckxlZ2libGVNZWRpYSgpIGNvbnN0Cit7CisgICAgaWYgKCFh
dkFzc2V0KCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKEFWQ0ZBc3NldEdldFN0YXR1
c09mVmFsdWVGb3JQcm9wZXJ0eShhdkFzc2V0KCksIEFWQ0ZBc3NldFByb3BlcnR5QXZhaWxhYmxl
TWVkaWFDaGFyYWN0ZXJpc3RpY3NXaXRoTWVkaWFTZWxlY3Rpb25PcHRpb25zLCAwKSAhPSBBVkNG
UHJvcGVydHlWYWx1ZVN0YXR1c0xvYWRlZCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1
cm4gQVZDRkFzc2V0R2V0U2VsZWN0aW9uR3JvdXBGb3JNZWRpYUNoYXJhY3RlcmlzdGljKGF2QXNz
ZXQoKSwgQVZDRk1lZGlhQ2hhcmFjdGVyaXN0aWNMZWdpYmxlKTsKK30KKyNlbmRpZgorCiB2b2lk
IExheWVyQ2xpZW50OjpwbGF0Zm9ybUNBTGF5ZXJMYXlvdXRTdWJsYXllcnNPZkxheWVyKFBsYXRm
b3JtQ0FMYXllciogd3JhcHBlckxheWVyKQogewogICAgIEFTU0VSVChtX3BhcmVudCk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uQ0YuaAkocmV2aXNpb24gMTUyNzQ3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bkNGLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMSwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDEwICszOCw5IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbkNGIDoKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25DRigpOwogCi0gICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJNZWRpYUVu
Z2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhcik7CisgICAgdmlydHVhbCB2b2lkIHRyYWNrc0NoYW5n
ZWQoKSBPVkVSUklERTsKIAotICAgIC8vRklYTUU6IHRoaXMgbmVlZHMgdG8gYmUgaW1wbGVtZW50
ZWQKLSAgICB2aXJ0dWFsIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkYqIGN1cnJlbnRUcmFjaygp
IGNvbnN0IHsgcmV0dXJuIDA7IH0KKyAgICBzdGF0aWMgdm9pZCByZWdpc3Rlck1lZGlhRW5naW5l
KE1lZGlhRW5naW5lUmVnaXN0cmFyKTsKIAogcHJpdmF0ZToKICAgICBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25DRihNZWRpYVBsYXllciopOwpAQCAtODUsNyArODQsNiBAQCBwcml2YXRl
OgogICAgIHZpcnR1YWwgZmxvYXQgcGxhdGZvcm1EdXJhdGlvbigpIGNvbnN0OwogICAgIHZpcnR1
YWwgZmxvYXQgcGxhdGZvcm1NYXhUaW1lTG9hZGVkKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lk
IGJlZ2luTG9hZGluZ01ldGFkYXRhKCk7Ci0gICAgdmlydHVhbCB2b2lkIHRyYWNrc0NoYW5nZWQo
KTsKICAgICB2aXJ0dWFsIHZvaWQgc2l6ZUNoYW5nZWQoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBo
YXNBdmFpbGFibGVWaWRlb0ZyYW1lKCkgY29uc3Q7CkBAIC0xMDEsOSArOTksMjUgQEAgcHJpdmF0
ZToKIAogICAgIHZpcnR1YWwgdm9pZCBjb250ZW50c05lZWRzRGlzcGxheSgpOwogCisgICAgdmly
dHVhbCBTdHJpbmcgbGFuZ3VhZ2VPZlByaW1hcnlBdWRpb1RyYWNrKCkgY29uc3QgT1ZFUlJJREU7
CisKKyNpZiBIQVZFKEFWRk9VTkRBVElPTl9NRURJQV9TRUxFQ1RJT05fR1JPVVApCisgICAgdm9p
ZCBwcm9jZXNzTWVkaWFTZWxlY3Rpb25PcHRpb25zKCk7CisjZW5kaWYKKworICAgIHZpcnR1YWwg
dm9pZCBzZXRDdXJyZW50VHJhY2soSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRiopIE9WRVJSSURF
OworICAgIHZpcnR1YWwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRiogY3VycmVudFRyYWNrKCkg
Y29uc3QgT1ZFUlJJREU7CisgICAgdm9pZCBwcm9jZXNzTmV3QW5kUmVtb3ZlZFRleHRUcmFja3Mo
Y29uc3QgVmVjdG9yPFJlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGPiA+Jik7CisgICAg
dm9pZCBjbGVhclRleHRUcmFja3MoKTsKKworI2lmICFIQVZFKEFWRk9VTkRBVElPTl9MRUdJQkxF
X09VVFBVVF9TVVBQT1JUKQorICAgIHZvaWQgcHJvY2Vzc0xlZ2FjeUNsb3NlZENhcHRpb25zVHJh
Y2tzKCk7CisjZW5kaWYKKwogICAgIGZyaWVuZCBjbGFzcyBBVkZXcmFwcGVyOwogICAgIEFWRldy
YXBwZXIqIG1fYXZmV3JhcHBlcjsKICAgICAKKyAgICBtdXRhYmxlIFN0cmluZyBtX2xhbmd1YWdl
T2ZQcmltYXJ5QXVkaW9UcmFjazsKICAgICBib29sIG1fdmlkZW9GcmFtZUhhc0RyYXduOwogfTsK
IApJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwko
cmV2aXNpb24gMTUyNzQ3KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMjEgQEAKKzIwMTMtMDctMTYgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5j
b20+CisKKyAgICAgICAgW1dpbl0gU3VwcG9ydCBpbi1iYW5kIHRleHQgdHJhY2tzLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzNzcwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIFdpbkxhdW5j
aGVyIHRvIHJ1biBpbiBhIENGUnVuTG9vcCAocmF0aGVyIHRoYW4gYSBoYW5kLXdyaXR0ZW4gV2lu
ZG93cyBldmVudCBsb29wKSBzbyB0aGF0CisgICAgICAgIGxpYmRpc3BhdGNoIGFuZCBDRlJ1bkxv
b3AgZWxlbWVudHMgYXJlIHNlcnZpY2VzIGR1cmluZyB0aGUgcnVuIGxvb3AuCisKKyAgICAgICAg
KiBXaW5MYXVuY2hlci9XaW5MYXVuY2hlci5jcHA6CisgICAgICAgIChkbGxMYXVuY2hlckVudHJ5
UG9pbnQpOiBVc2UgQ0ZSdW5Mb29wUnVuIChyYXRoZXIgdGhhbiBhIFdpbmRvd3MgbWVzc2FnZSBs
b29wKSBpZiBydW5uaW5nIHdpdGgKKyAgICAgICAgYSBDb3JlRm91bmRhdGlvbiAob3IgQ0ZMaXRl
KSBzdXBwb3J0IGxpYnJhcnkuCisgICAgICAgICogV2luTGF1bmNoZXIvV2luTGF1bmNoZXIudmN4
cHJvai9XaW5MYXVuY2hlckNGLnByb3BzOiBBZGRlZC4KKyAgICAgICAgKiBXaW5MYXVuY2hlci9X
aW5MYXVuY2hlci52Y3hwcm9qL1dpbkxhdW5jaGVyQ0ZMaXRlLnByb3BzOiBBZGRlZC4KKyAgICAg
ICAgKiBXaW5MYXVuY2hlci9XaW5MYXVuY2hlci52Y3hwcm9qL1dpbkxhdW5jaGVyTGliLnZjeHBy
b2o6IEFkZCByZWZlcmVuY2VzIHRvIFdpbkxhdW5jaGVyQ0YucHJvcHMKKyAgICAgICAgYW5kIFdp
bkxhdW5jaGVyQ0ZMaXRlLnByb3BzLgorCiAyMDEzLTA3LTE2ICBDaHJpc3RvcGhlIER1bWV6ICA8
Y2guZHVtZXpAc2lzYS5zYW1zdW5nLmNvbT4KIAogICAgICAgICBHZXQgcmlkIG9mIG11bHRpcGxl
IGluaGVyaXRhbmNlIHN1cHBvcnQgZnJvbSB0aGUgYmluZGluZ3MgZ2VuZXJhdG9ycwpJbmRleDog
VG9vbHMvV2luTGF1bmNoZXIvV2luTGF1bmNoZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dp
bkxhdW5jaGVyL1dpbkxhdW5jaGVyLmNwcAkocmV2aXNpb24gMTUyNzQ3KQorKysgVG9vbHMvV2lu
TGF1bmNoZXIvV2luTGF1bmNoZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiwxNCBA
QAogI2luY2x1ZGUgIkRPTURlZmF1bHRJbXBsLmgiCiAjaW5jbHVkZSAiUHJpbnRXZWJVSURlbGVn
YXRlLmgiCiAjaW5jbHVkZSA8V2ViS2l0L1dlYktpdENPTUFQSS5oPgorI2luY2x1ZGUgPHd0Zi9Q
bGF0Zm9ybS5oPgogCisjaWYgVVNFKENGKQorI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGUHJp
di5oPgorI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGUnVuTG9vcC5oPgorI2VuZGlmCisKKyNp
bmNsdWRlIDxhc3NlcnQuaD4KICNpbmNsdWRlIDxjb21tY3RybC5oPgogI2luY2x1ZGUgPGNvbW1k
bGcuaD4KICNpbmNsdWRlIDxvYmpiYXNlLmg+CkBAIC00MjEsMTIgKzQyOCwxNyBAQCBleHRlcm4g
IkMiIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBpbnQgV0lOCiAgICAgfQogCiAgICAgLy8gTWFpbiBt
ZXNzYWdlIGxvb3A6CisjaWYgVVNFKENGKQorICAgIF9DRlJ1bkxvb3BTZXRXaW5kb3dzTWVzc2Fn
ZVF1ZXVlTWFzayhDRlJ1bkxvb3BHZXRNYWluKCksIFFTX0FMTElOUFVUIHwgUVNfQUxMUE9TVE1F
U1NBR0UsIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7CisgICAgQ0ZSdW5Mb29wUnVuKCk7CisjZWxz
ZQogICAgIHdoaWxlIChHZXRNZXNzYWdlKCZtc2csIE5VTEwsIDAsIDApKSB7CiAgICAgICAgIGlm
ICghVHJhbnNsYXRlQWNjZWxlcmF0b3IobXNnLmh3bmQsIGhBY2NlbFRhYmxlLCAmbXNnKSkgewog
ICAgICAgICAgICAgVHJhbnNsYXRlTWVzc2FnZSgmbXNnKTsKICAgICAgICAgICAgIERpc3BhdGNo
TWVzc2FnZSgmbXNnKTsKICAgICAgICAgfQogICAgIH0KKyNlbmRpZgogCiBleGl0OgogICAgIGdQ
cmludERlbGVnYXRlLT5SZWxlYXNlKCk7CkluZGV4OiBUb29scy9XaW5MYXVuY2hlci9XaW5MYXVu
Y2hlci52Y3hwcm9qL1dpbkxhdW5jaGVyQ0YucHJvcHMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2lu
TGF1bmNoZXIvV2luTGF1bmNoZXIudmN4cHJvai9XaW5MYXVuY2hlckNGLnByb3BzCShyZXZpc2lv
biAwKQorKysgVG9vbHMvV2luTGF1bmNoZXIvV2luTGF1bmNoZXIudmN4cHJvai9XaW5MYXVuY2hl
ckNGLnByb3BzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIgQEAKK++7vzw/eG1sIHZlcnNp
b249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+DQorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAi
IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIw
MDMiPg0KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyIgLz4NCisgIDxQcm9w
ZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPg0KKyAgPFByb3BlcnR5R3JvdXAgLz4NCisg
IDxJdGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgICA8TGluaz4NCisgICAgICA8QWRkaXRpb25hbERl
cGVuZGVuY2llcz5Db3JlRm91bmRhdGlvbiQoRGVidWdTdWZmaXgpLmxpYjslKEFkZGl0aW9uYWxE
ZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPg0KKyAgICA8L0xpbms+DQorICA8
L0l0ZW1EZWZpbml0aW9uR3JvdXA+DQorICA8SXRlbUdyb3VwIC8+DQorPC9Qcm9qZWN0PgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFRvb2xzL1dpbkxhdW5jaGVyL1dpbkxhdW5j
aGVyLnZjeHByb2ovV2luTGF1bmNoZXJDRkxpdGUucHJvcHMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
V2luTGF1bmNoZXIvV2luTGF1bmNoZXIudmN4cHJvai9XaW5MYXVuY2hlckNGTGl0ZS5wcm9wcwko
cmV2aXNpb24gMCkKKysrIFRvb2xzL1dpbkxhdW5jaGVyL1dpbkxhdW5jaGVyLnZjeHByb2ovV2lu
TGF1bmNoZXJDRkxpdGUucHJvcHMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMiBAQAor77u/
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCis8UHJvamVjdCBUb29sc1Zl
cnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVy
L21zYnVpbGQvMjAwMyI+DQorICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIiAv
Pg0KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+DQorICA8UHJvcGVydHlH
cm91cCAvPg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+DQorICAgIDxMaW5rPg0KKyAgICAgIDxB
ZGRpdGlvbmFsRGVwZW5kZW5jaWVzPkNGTGl0ZS5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVz
KTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4NCisgICAgPC9MaW5rPg0KKyAgPC9JdGVtRGVmaW5p
dGlvbkdyb3VwPg0KKyAgPEl0ZW1Hcm91cCAvPg0KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCkluZGV4OiBUb29scy9XaW5MYXVuY2hlci9XaW5MYXVuY2hlci52Y3hwcm9q
L1dpbkxhdW5jaGVyTGliLnZjeHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2luTGF1bmNoZXIv
V2luTGF1bmNoZXIudmN4cHJvai9XaW5MYXVuY2hlckxpYi52Y3hwcm9qCShyZXZpc2lvbiAxNTI3
NDcpCisrKyBUb29scy9XaW5MYXVuY2hlci9XaW5MYXVuY2hlci52Y3hwcm9qL1dpbkxhdW5jaGVy
TGliLnZjeHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTYyLDI3ICs2MiwzMyBAQAogICA8SW1wb3J0
R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNl
fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCiAgICAgPEltcG9ydCBQcm9qZWN0PSIk
KFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRp
dGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVz
ZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KICAgICA8SW1wb3J0
IFByb2plY3Q9IldpbkxhdW5jaGVyTGliUmVsZWFzZS5wcm9wcyIgLz4NCisgICAgPEltcG9ydCBQ
cm9qZWN0PSJXaW5MYXVuY2hlckNGLnByb3BzIiAvPg0KICAgPC9JbXBvcnRHcm91cD4NCiAgIDxJ
bXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Jl
bGVhc2VfV2luQ2Fpcm98V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPg0KICAgICA8SW1w
b3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNl
ci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAu
JChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+
DQogICAgIDxJbXBvcnQgUHJvamVjdD0iV2luTGF1bmNoZXJMaWJSZWxlYXNlLnByb3BzIiAvPg0K
KyAgICA8SW1wb3J0IFByb2plY3Q9IldpbkxhdW5jaGVyQ0ZMaXRlLnByb3BzIiAvPg0KICAgPC9J
bXBvcnRHcm91cD4NCiAgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMi
Pg0KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQ
bGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1p
Y3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRh
UGxhdGZvcm0iIC8+DQogICAgIDxJbXBvcnQgUHJvamVjdD0iV2luTGF1bmNoZXJMaWJQcm9kdWN0
aW9uLnByb3BzIiAvPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9IldpbkxhdW5jaGVyQ0YucHJvcHMi
IC8+DQogICA8L0ltcG9ydEdyb3VwPg0KICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlT
aGVldHMiPg0KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5D
cHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3RE
aXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxB
cHBEYXRhUGxhdGZvcm0iIC8+DQogICAgIDxJbXBvcnQgUHJvamVjdD0iV2luTGF1bmNoZXJMaWJE
ZWJ1Zy5wcm9wcyIgLz4NCisgICAgPEltcG9ydCBQcm9qZWN0PSJXaW5MYXVuY2hlckNGLnByb3Bz
IiAvPg0KICAgPC9JbXBvcnRHcm91cD4NCiAgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfFdpbjMyJyIgTGFiZWw9
IlByb3BlcnR5U2hlZXRzIj4NCiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxN
aWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCck
KFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFi
ZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KICAgICA8SW1wb3J0IFByb2plY3Q9Ildpbkxh
dW5jaGVyTGliRGVidWcucHJvcHMiIC8+DQorICAgIDxJbXBvcnQgUHJvamVjdD0iV2luTGF1bmNo
ZXJDRkxpdGUucHJvcHMiIC8+DQogICA8L0ltcG9ydEdyb3VwPg0KICAgPEltcG9ydEdyb3VwIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8V2lu
MzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPg0KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNl
clJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9u
PSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5w
cm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+DQogICAgIDxJbXBvcnQgUHJv
amVjdD0iV2luTGF1bmNoZXJMaWJEZWJ1Zy5wcm9wcyIgLz4NCiAgICAgPEltcG9ydCBQcm9qZWN0
PSIkKFdlYktpdF9MaWJyYXJpZXMpXHRvb2xzXHZzcHJvcHNcZGVidWdzdWZmaXgucHJvcHMiIC8+
DQorICAgIDxJbXBvcnQgUHJvamVjdD0iV2luTGF1bmNoZXJDRi5wcm9wcyIgLz4NCiAgIDwvSW1w
b3J0R3JvdXA+DQogICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4NCiAgIDxQ
cm9wZXJ0eUdyb3VwPg0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>206907</attachid>
            <date>2013-07-17 12:33:12 -0700</date>
            <delta_ts>2013-07-17 14:55:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103770-20130717123309.patch</filename>
            <type>text/plain</type>
            <size>99274</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1Mjc5MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNSBAQAorMjAxMy0wNy0xNyAgQnJlbnQg
RnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBbV2luZG93c10gU3VwcG9y
dCBpbi1iYW5kIHRleHQgdHJhY2tzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTAzNzcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgRXhpc3RpbmcgbWVkaWEgdGVzdHMgY292ZXIgdGhlc2UgZmVhdHVyZXMu
CisKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qOiBBZGQgbmV3IGZp
bGVzIGZvciBXaW5kb3dzIGNhcHRpb25zCisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNv
cmUudmN4cHJvai5maWx0ZXJzOiBkaXR0by4KKyAgICAgICAgKiBjb25maWcuaDogTWFrZSBzdXJl
IHByb3BlciBidWlkIGZsYWdzIGFyZSB0dXJuZWQgb24gd2hlbiBidWlsZGluZworICAgICAgICB3
aXRoIEFWQ0ZfTEVHSUJMRV9PVVRQVVQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwOiBVcGRhdGUKKyAgICAgICAg
dG8gc3VwcG9ydCBXaW5kb3dzIHBsYXRmb3JtIGJ5IHJlbW92aW5nIGNvbXBpbGVyIGd1YXJkcyBh
bmQgYWRkaW5nCisgICAgICAgIFdpbmRvd3MgZGVjbGFyYXRpb25zIGZvciBzb2Z0LWxpbmsgZnVu
Y3Rpb25zLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRU
ZXh0VHJhY2tQcml2YXRlQVZGLmg6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwOgorICAgICAg
ICBSZW1vdmUgYnVpbGQgZ3VhcmRzIHByZXZlbnRpbmcgV2luZG93cyBmcm9tIHVzaW5nIExlZ2li
bGVPdXRwdXQKKyAgICAgICAgZmVhdHVyZXMuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb246Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnNlZWspOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpzZWVrQ29t
cGxldGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bjo6ZGlzcGF0Y2hOb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uOjp0cmFja01vZGVDaGFuZ2VkKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmg6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OmNvbnRl
bnRzTmVlZHNEaXNwbGF5KTogRGl0dG8KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vY2YvQVZGb3VuZGF0aW9uQ0ZTb2Z0TGlua2luZy5oOgorICAgICAgICBBZGQgbmV3
IExlZ2libGVPdXRwdXQgc3VwcG9ydCBmdW5jdGlvbnMuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL2NmL0NvcmVNZWRpYVNvZnRMaW5raW5nLmg6IERpdHRvLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQ
cml2YXRlQVZDRi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUFWQ0Y6OkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGKToKKyAgICAgICAgKFdlYkNv
cmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGOjpkaXNjb25uZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGOjpraW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGOjppc0Nsb3NlZENhcHRpb25zKToKKyAgICAg
ICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGOjppc1NESCk6CisgICAgICAg
IChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRjo6Y29udGFpbnNPbmx5Rm9yY2Vk
U3VidGl0bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkNG
Ojppc01haW5Qcm9ncmFtQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlQVZDRjo6aXNFYXN5VG9SZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRl
eHRUcmFja1ByaXZhdGVBVkNGOjpsYWJlbCk6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0
VHJhY2tQcml2YXRlQVZDRjo6bGFuZ3VhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWQ0Y6OmlzRGVmYXVsdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL2NmL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGLmg6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0Y6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRjo6fkluYmFuZFRleHRU
cmFja1ByaXZhdGVBVkNGKToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZh
dGVBVkNGOjptZWRpYVNlbGVjdGlvbk9wdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL2NmL0luYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZD
Rjo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0YpOgorICAgICAgICAoV2ViQ29yZTo6
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0Y6OmRpc2Nvbm5lY3QpOgorICAgICAgICAo
V2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0Y6OmtpbmQpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0Y6OmlzQ2xvc2VkQ2Fw
dGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFW
Q0Y6OmNvbnRhaW5zT25seUZvcmNlZFN1YnRpdGxlcyk6CisgICAgICAgIChXZWJDb3JlOjpJbmJh
bmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZDRjo6aXNNYWluUHJvZ3JhbUNvbnRlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0Y6OmlzRWFzeVRv
UmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZD
Rjo6bGFiZWwpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2Fj
eUFWQ0Y6Omxhbmd1YWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vY2YvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0YuaDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZDRjo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGOjp+SW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0YpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0Y6OmF2UGxheWVySXRlbVRyYWNrKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uQ0YuY3BwOgorICAgICAgICBVcGRhdGUgdG8gc3VwcG9ydCBMZWdpYmxlT3V0cHV0IGZl
YXR1cmVzIGZvciB0aGUgV2luZG93cyBwb3J0LgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBl
cjo6Y3VycmVudFRyYWNrKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjps
ZWdpYmxlT3V0cHV0KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVNZXRhZGF0YUtl
eU5hbWVzKTogQWRkZWQgbWlzc2luZyBrZXkgbmFtZXMuCisgICAgICAgIChXZWJDb3JlOjphdkxl
Z2libGVPdXRwdXQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnNhZmVNZWRpYVNlbGVjdGlv
bkdyb3VwRm9yTGVnaWJsZU1lZGlhKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6Y2FuY2VsTG9hZCk6IENsZWFyIHRleHQKKyAgICAg
ICAgdHJhY2tzIHdoZW4gY2FuY2VsbGluZy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpzZXRDdXJyZW50VHJhY2spOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpjdXJyZW50VHJhY2sp
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bkNGOjpwbGF0Zm9ybUR1cmF0aW9uKTogUmV2aXNlZAorICAgICAgICB0byBtYXRjaCBsb2dpYyBp
biBPYmplY3RpdmUgQyBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpjdXJyZW50VGltZSk6IFJldmlzZWQKKyAgICAgICAg
dG8gbWF0Y2ggbG9naWMgaW4gT2JqZWN0aXZlIEMgaW1wbGVtZW50YXRpb24uCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6cGFpbnRDdXJyZW50RnJh
bWVJbkNvbnRleHQpOgorICAgICAgICBDaGVjayBwcmVzZW5jZSBvZiBtZXRhZGF0YSBiZWZvcmUg
cHJvY2VlZGluZy4gUmV2aXNlZCB0byBtYXRjaCBsb2dpYworICAgICAgICBpbiBPYmplY3RpdmUg
QyBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbkNGOjpwYWludCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnRyYWNrc0NoYW5nZWQpOiBVcGRhdGUgZm9yCisgICAg
ICAgIGluLWJhbmQgdGV4dCB0cmFja3MuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25DRjo6Y2xlYXJUZXh0VHJhY2tzKTogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6cHJvY2Vzc0xlZ2FjeUNs
b3NlZENhcHRpb25zVHJhY2tzKToKKyAgICAgICAgQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6cHJvY2Vzc05ld0FuZFJlbW92ZWRUZXh0
VHJhY2tzKToKKyAgICAgICAgQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25DRjo6cHJvY2Vzc01lZGlhU2VsZWN0aW9uT3B0aW9ucyk6CisgICAg
ICAgIEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6c2V0Q3VycmVudFRyYWNr
KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25DRjo6bGFuZ3VhZ2VPZlByaW1hcnlBdWRpb1RyYWNrKToKKyAgICAgICAgQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpBVkZXcmFwcGVyKTogQWRkIG5ldyBpbml0aWFsaXpl
cnMuCisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjp+QVZGV3JhcHBlcik6IENsZWFuIHVw
IHRleHQgdHJhY2sgaW5mb3JtYXRpb24uCisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpj
cmVhdGVQbGF5ZXIpOiBBZGQgTGVnaWJsZSBPdXRwdXQgc3VwcG9ydC4KKyAgICAgICAgKFdlYkNv
cmU6OkFWRldyYXBwZXI6OmNyZWF0ZVBsYXllckl0ZW0pOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OkxlZ2libGVPdXRwdXREYXRhOjpMZWdpYmxlT3V0cHV0RGF0YSk6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6cHJvY2Vzc0N1ZSk6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QVZGV3JhcHBlcjo6bGVnaWJsZU91dHB1dENhbGxiYWNrKTogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpBVkZXcmFwcGVyOjpzYWZlTWVkaWFTZWxlY3Rpb25Hcm91cEZvckxlZ2libGVN
ZWRpYSk6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9j
Zi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5oOgorICAgICAgICBVcGRhdGUgdG8g
c3VwcG9ydCBMZWdpYmxlT3V0cHV0IGZlYXR1cmVzIGZvciB0aGUgV2luZG93cyBwb3J0LgorCiAy
MDEzLTA3LTE3ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgV3Jv
bmcgbGluZWJveCBoZWlnaHQsIHdoZW4gYmxvY2sgZWxlbWVudCBwYXJlbnQgaGFzIHZlcnRpY2Fs
LWFsaWduIHByb3BlcnR5IGRlZmluZWQuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jb25maWcuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb25maWcuaAkocmV2aXNpb24gMTUyNzkzKQor
KysgU291cmNlL1dlYkNvcmUvY29uZmlnLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0MCw4ICsxNDAs
MTAgQEAgdHlwZWRlZiBmbG9hdCBDR0Zsb2F0OwogI2RlZmluZSBXVEZfVVNFX0FWRk9VTkRBVElP
TiAxCiAKICNpZiBIQVZFKEFWQ0ZfTEVHSUJMRV9PVVRQVVQpCisjZGVmaW5lIFdURl9VU0VfQVZG
T1VOREFUSU9OIDEKICNkZWZpbmUgSEFWRV9BVkZPVU5EQVRJT05fTUVESUFfU0VMRUNUSU9OX0dS
T1VQIDEKICNkZWZpbmUgSEFWRV9BVkZPVU5EQVRJT05fTEVHSUJMRV9PVVRQVVRfU1VQUE9SVCAx
CisjZGVmaW5lIEhBVkVfTUVESUFfQUNDRVNTSUJJTElUWV9GUkFNRVdPUksgMQogI2VuZGlmCiAK
ICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29y
ZS52Y3hwcm9qCShyZXZpc2lvbiAxNTI3OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
eHByb2ovV2ViQ29yZS52Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00MzQ5LDYgKzQzNDksOSBA
QAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cRmlsZVN0cmVhbS5jcHAiIC8+
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxGaWxlU3lzdGVtLmNwcCIgLz4K
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXEFOR0xFV2ViS2l0
QnJpZGdlLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBo
aWNzXGF2Zm91bmRhdGlvblxjZlxJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRi5jcHAiIC8+Cisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xhdmZvdW5kYXRpb25c
Y2ZcSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0YuY3BwIiAvPgorICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcYXZmb3VuZGF0aW9uXEluYmFuZFRleHRU
cmFja1ByaXZhdGVBVkYuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZv
cm1cZ3JhcGhpY3NcY2Fpcm9cR0xDb250ZXh0LmNwcCI+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVp
bGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4z
MiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4z
MiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgpAQCAtMTE4NzQsNiArMTE4NzcsOSBAQAogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cRmxvYXRDb252ZXJzaW9uLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xBTkdMRVdlYktpdEJy
aWRnZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3Nc
QXVkaW9UcmFja1ByaXZhdGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRm
b3JtXGdyYXBoaWNzXGF2Zm91bmRhdGlvblxjZlxJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRi5o
IiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcYXZmb3Vu
ZGF0aW9uXGNmXEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGLmgiIC8+CisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xhdmZvdW5kYXRpb25cSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUFWRi5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxh
dGZvcm1cZ3JhcGhpY3NcY2Fpcm9cR0xDb250ZXh0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xjYWlyb1xHcmFwaGljc0NvbnRleHQzRFByaXZhdGUu
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGNnXFN1
YmltYWdlQ2FjaGVXaXRoVGltZXIuaCI+CkBAIC0xMzk0MCw0ICsxMzk0Niw0IEBACiAgIDxJbXBv
cnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CiAg
IDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CiAgIDwvSW1wb3J0R3JvdXA+
Ci08L1Byb2plY3Q+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRl
eDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZj
eHByb2ouZmlsdGVycwkocmV2aXNpb24gMTUyNzkzKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCSh3b3JraW5nIGNvcHkpCkBAIC03MDY2
LDYgKzcwNjYsMTYgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBo
aWNzXGVnbFxHTENvbnRleHRFR0wuY3BwIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cZ3JhcGhp
Y3NcZWdsPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqMzJcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNv
dXJjZXNcSlNTVkdHcmFwaGljc0VsZW1lbnQuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcYXZmb3VuZGF0aW9uXGNmXEluYmFuZFRleHRUcmFja1By
aXZhdGVBVkNGLmNwcCI+CisgICAgICA8RmlsdGVyPnBsYXRmb3JtXGdyYXBoaWNzXGF2Zm91bmRh
dGlvblxjZjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcYXZmb3VuZGF0aW9uXEluYmFuZFRleHRUcmFja1ByaXZh
dGVBVkYuY3BwIj4KKyAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cZ3JhcGhpY3NcYXZmb3VuZGF0aW9u
PC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxw
bGF0Zm9ybVxncmFwaGljc1xhdmZvdW5kYXRpb25cY2ZcSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxl
Z2FjeUFWQ0YuY3BwIj4KKyAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cZ3JhcGhpY3NcYXZmb3VuZGF0
aW9uXGNmPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRl
bUdyb3VwPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xmaWxlc3lzdGVtXEFz
eW5jRmlsZVdyaXRlci5oIj4KQEAgLTE0ODE2LDYgKzE0ODI2LDE1IEBACiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xlZ2xcR0xDb250ZXh0RUdMLmgiPgogICAg
ICAgPEZpbHRlcj5wbGF0Zm9ybVxncmFwaGljc1xlZ2w8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVk
ZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGF2Zm91bmRh
dGlvblxjZlxJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRi5oIj4KKyAgICAgIDxGaWx0ZXI+cGxh
dGZvcm1cZ3JhcGhpY3NcYXZmb3VuZGF0aW9uXGNmPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xhdmZvdW5kYXRp
b25cSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oIj4KKyAgICAgIDxGaWx0ZXI+cGxhdGZvcm1c
Z3JhcGhpY3NcYXZmb3VuZGF0aW9uPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xhdmZvdW5kYXRpb25cY2ZcSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0YuaCI+CisgICAgICA8RmlsdGVyPnBsYXRmb3Jt
XGdyYXBoaWNzXGF2Zm91bmRhdGlvblxjZjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICA8
L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8Tm9uZSBJbmNsdWRlPSIuLlxjc3NcQ1NT
R3JhbW1hci55LmluIj4KQEAgLTE1NzYzLDQgKzE1NzgyLDQgQEAKICAgICAgIDxGaWx0ZXI+cmVu
ZGVyaW5nPC9GaWx0ZXI+CiAgICAgPC9DdXN0b21CdWlsZFN0ZXA+CiAgIDwvSXRlbUdyb3VwPgot
PC9Qcm9qZWN0PgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0
VHJhY2tQcml2YXRlQVZGLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHAJKHJl
dmlzaW9uIDE1Mjc5MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjUsNyArMjUsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKLSNpZiBFTkFCTEUoVklERU8p
ICYmICgoVVNFKEFWRk9VTkRBVElPTikgJiYgIVBMQVRGT1JNKFdJTikpIHx8IFBMQVRGT1JNKElP
UykpCisjaWYgRU5BQkxFKFZJREVPKSAmJiAoVVNFKEFWRk9VTkRBVElPTikgfHwgUExBVEZPUk0o
SU9TKSkKIAogI2luY2x1ZGUgIkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaCIKIApAQCAtMzgs
NiArMzgsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogI2luY2x1ZGUgPHd0
Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+CiAKKyNpZiAhUExBVEZPUk0oV0lOKQogU09GVF9M
SU5LX0ZSQU1FV09SS19PUFRJT05BTChDb3JlTWVkaWEpCiAKIFNPRlRfTElOS19QT0lOVEVSX09Q
VElPTkFMKENvcmVNZWRpYSwga0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9BbGlnbm1lbnQsIENGU3Ry
aW5nUmVmKQpAQCAtNzksNiArODAsNDkgQEAgU09GVF9MSU5LX1BPSU5URVJfT1BUSU9OQUwoQ29y
ZU1lZGlhLCBrQwogI2RlZmluZSBrQ01UZXh0TWFya3VwQXR0cmlidXRlX0ZvcmVncm91bmRDb2xv
ckFSR0IgZ2V0a0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9Gb3JlZ3JvdW5kQ29sb3JBUkdCKCkKICNk
ZWZpbmUga0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9CYWNrZ3JvdW5kQ29sb3JBUkdCIGdldGtDTVRl
eHRNYXJrdXBBdHRyaWJ1dGVfQmFja2dyb3VuZENvbG9yQVJHQigpCiAjZGVmaW5lIGtDTVRleHRN
YXJrdXBBdHRyaWJ1dGVfQ2hhcmFjdGVyQmFja2dyb3VuZENvbG9yQVJHQiBnZXRrQ01UZXh0TWFy
a3VwQXR0cmlidXRlX0NoYXJhY3RlckJhY2tncm91bmRDb2xvckFSR0IoKQorI2Vsc2UKK1NPRlRf
TElOS19MSUJSQVJZKENvcmVNZWRpYSkKKworU09GVF9MSU5LX1ZBUklBQkxFX0RMTF9JTVBPUlRf
T1BUSU9OQUwoQ29yZU1lZGlhLCBrQ01UZXh0TWFya3VwQXR0cmlidXRlX0FsaWdubWVudCwgQ0ZT
dHJpbmdSZWYpCitTT0ZUX0xJTktfVkFSSUFCTEVfRExMX0lNUE9SVF9PUFRJT05BTChDb3JlTWVk
aWEsIGtDTVRleHRNYXJrdXBBbGlnbm1lbnRUeXBlX1N0YXJ0LCBDRlN0cmluZ1JlZikKK1NPRlRf
TElOS19WQVJJQUJMRV9ETExfSU1QT1JUX09QVElPTkFMKENvcmVNZWRpYSwga0NNVGV4dE1hcmt1
cEFsaWdubWVudFR5cGVfTWlkZGxlLCBDRlN0cmluZ1JlZikKK1NPRlRfTElOS19WQVJJQUJMRV9E
TExfSU1QT1JUX09QVElPTkFMKENvcmVNZWRpYSwga0NNVGV4dE1hcmt1cEFsaWdubWVudFR5cGVf
RW5kLCBDRlN0cmluZ1JlZikKK1NPRlRfTElOS19WQVJJQUJMRV9ETExfSU1QT1JUX09QVElPTkFM
KENvcmVNZWRpYSwga0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9Cb2xkU3R5bGUsIENGU3RyaW5nUmVm
KQorU09GVF9MSU5LX1ZBUklBQkxFX0RMTF9JTVBPUlRfT1BUSU9OQUwoQ29yZU1lZGlhLCBrQ01U
ZXh0TWFya3VwQXR0cmlidXRlX0l0YWxpY1N0eWxlLCBDRlN0cmluZ1JlZikKK1NPRlRfTElOS19W
QVJJQUJMRV9ETExfSU1QT1JUX09QVElPTkFMKENvcmVNZWRpYSwga0NNVGV4dE1hcmt1cEF0dHJp
YnV0ZV9VbmRlcmxpbmVTdHlsZSwgQ0ZTdHJpbmdSZWYpCitTT0ZUX0xJTktfVkFSSUFCTEVfRExM
X0lNUE9SVF9PUFRJT05BTChDb3JlTWVkaWEsIGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfVGV4dFBv
c2l0aW9uUGVyY2VudGFnZVJlbGF0aXZlVG9Xcml0aW5nRGlyZWN0aW9uLCBDRlN0cmluZ1JlZikK
K1NPRlRfTElOS19WQVJJQUJMRV9ETExfSU1QT1JUX09QVElPTkFMKENvcmVNZWRpYSwga0NNVGV4
dE1hcmt1cEF0dHJpYnV0ZV9Xcml0aW5nRGlyZWN0aW9uU2l6ZVBlcmNlbnRhZ2UsIENGU3RyaW5n
UmVmKQorU09GVF9MSU5LX1ZBUklBQkxFX0RMTF9JTVBPUlRfT1BUSU9OQUwoQ29yZU1lZGlhLCBr
Q01UZXh0TWFya3VwQXR0cmlidXRlX09ydGhvZ29uYWxMaW5lUG9zaXRpb25QZXJjZW50YWdlUmVs
YXRpdmVUb1dyaXRpbmdEaXJlY3Rpb24sIENGU3RyaW5nUmVmKQorU09GVF9MSU5LX1ZBUklBQkxF
X0RMTF9JTVBPUlRfT1BUSU9OQUwoQ29yZU1lZGlhLCBrQ01UZXh0TWFya3VwQXR0cmlidXRlX1Zl
cnRpY2FsTGF5b3V0LCBDRlN0cmluZ1JlZikKK1NPRlRfTElOS19WQVJJQUJMRV9ETExfSU1QT1JU
X09QVElPTkFMKENvcmVNZWRpYSwga0NNVGV4dFZlcnRpY2FsTGF5b3V0X0xlZnRUb1JpZ2h0LCBD
RlN0cmluZ1JlZikKK1NPRlRfTElOS19WQVJJQUJMRV9ETExfSU1QT1JUX09QVElPTkFMKENvcmVN
ZWRpYSwga0NNVGV4dFZlcnRpY2FsTGF5b3V0X1JpZ2h0VG9MZWZ0LCBDRlN0cmluZ1JlZikKK1NP
RlRfTElOS19WQVJJQUJMRV9ETExfSU1QT1JUX09QVElPTkFMKENvcmVNZWRpYSwga0NNVGV4dE1h
cmt1cEF0dHJpYnV0ZV9CYXNlRm9udFNpemVQZXJjZW50YWdlUmVsYXRpdmVUb1ZpZGVvSGVpZ2h0
LCBDRlN0cmluZ1JlZikKK1NPRlRfTElOS19WQVJJQUJMRV9ETExfSU1QT1JUX09QVElPTkFMKENv
cmVNZWRpYSwga0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9SZWxhdGl2ZUZvbnRTaXplLCBDRlN0cmlu
Z1JlZikKK1NPRlRfTElOS19WQVJJQUJMRV9ETExfSU1QT1JUX09QVElPTkFMKENvcmVNZWRpYSwg
a0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9Gb250RmFtaWx5TmFtZSwgQ0ZTdHJpbmdSZWYpCitTT0ZU
X0xJTktfVkFSSUFCTEVfRExMX0lNUE9SVF9PUFRJT05BTChDb3JlTWVkaWEsIGtDTVRleHRNYXJr
dXBBdHRyaWJ1dGVfRm9yZWdyb3VuZENvbG9yQVJHQiwgQ0ZTdHJpbmdSZWYpCitTT0ZUX0xJTktf
VkFSSUFCTEVfRExMX0lNUE9SVF9PUFRJT05BTChDb3JlTWVkaWEsIGtDTVRleHRNYXJrdXBBdHRy
aWJ1dGVfQmFja2dyb3VuZENvbG9yQVJHQiwgQ0ZTdHJpbmdSZWYpCitTT0ZUX0xJTktfVkFSSUFC
TEVfRExMX0lNUE9SVF9PUFRJT05BTChDb3JlTWVkaWEsIGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVf
Q2hhcmFjdGVyQmFja2dyb3VuZENvbG9yQVJHQiwgQ0ZTdHJpbmdSZWYpCisKKyNkZWZpbmUga0NN
VGV4dE1hcmt1cEF0dHJpYnV0ZV9BbGlnbm1lbnQgZ2V0X2tDTVRleHRNYXJrdXBBdHRyaWJ1dGVf
QWxpZ25tZW50KCkKKyNkZWZpbmUga0NNVGV4dE1hcmt1cEFsaWdubWVudFR5cGVfU3RhcnQgZ2V0
X2tDTVRleHRNYXJrdXBBbGlnbm1lbnRUeXBlX1N0YXJ0KCkKKyNkZWZpbmUga0NNVGV4dE1hcmt1
cEFsaWdubWVudFR5cGVfTWlkZGxlIGdldF9rQ01UZXh0TWFya3VwQWxpZ25tZW50VHlwZV9NaWRk
bGUoKQorI2RlZmluZSBrQ01UZXh0TWFya3VwQWxpZ25tZW50VHlwZV9FbmQgZ2V0X2tDTVRleHRN
YXJrdXBBbGlnbm1lbnRUeXBlX0VuZCgpCisjZGVmaW5lIGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVf
Qm9sZFN0eWxlIGdldF9rQ01UZXh0TWFya3VwQXR0cmlidXRlX0JvbGRTdHlsZSgpCisjZGVmaW5l
IGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfSXRhbGljU3R5bGUgZ2V0X2tDTVRleHRNYXJrdXBBdHRy
aWJ1dGVfSXRhbGljU3R5bGUoKQorI2RlZmluZSBrQ01UZXh0TWFya3VwQXR0cmlidXRlX1VuZGVy
bGluZVN0eWxlIGdldF9rQ01UZXh0TWFya3VwQXR0cmlidXRlX1VuZGVybGluZVN0eWxlKCkKKyNk
ZWZpbmUga0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9UZXh0UG9zaXRpb25QZXJjZW50YWdlUmVsYXRp
dmVUb1dyaXRpbmdEaXJlY3Rpb24gZ2V0X2tDTVRleHRNYXJrdXBBdHRyaWJ1dGVfVGV4dFBvc2l0
aW9uUGVyY2VudGFnZVJlbGF0aXZlVG9Xcml0aW5nRGlyZWN0aW9uKCkKKyNkZWZpbmUga0NNVGV4
dE1hcmt1cEF0dHJpYnV0ZV9Xcml0aW5nRGlyZWN0aW9uU2l6ZVBlcmNlbnRhZ2UgZ2V0X2tDTVRl
eHRNYXJrdXBBdHRyaWJ1dGVfV3JpdGluZ0RpcmVjdGlvblNpemVQZXJjZW50YWdlKCkKKyNkZWZp
bmUga0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9PcnRob2dvbmFsTGluZVBvc2l0aW9uUGVyY2VudGFn
ZVJlbGF0aXZlVG9Xcml0aW5nRGlyZWN0aW9uIGdldF9rQ01UZXh0TWFya3VwQXR0cmlidXRlX09y
dGhvZ29uYWxMaW5lUG9zaXRpb25QZXJjZW50YWdlUmVsYXRpdmVUb1dyaXRpbmdEaXJlY3Rpb24o
KQorI2RlZmluZSBrQ01UZXh0TWFya3VwQXR0cmlidXRlX1ZlcnRpY2FsTGF5b3V0IGdldF9rQ01U
ZXh0TWFya3VwQXR0cmlidXRlX1ZlcnRpY2FsTGF5b3V0KCkKKyNkZWZpbmUga0NNVGV4dFZlcnRp
Y2FsTGF5b3V0X0xlZnRUb1JpZ2h0IGdldF9rQ01UZXh0VmVydGljYWxMYXlvdXRfTGVmdFRvUmln
aHQoKQorI2RlZmluZSBrQ01UZXh0VmVydGljYWxMYXlvdXRfUmlnaHRUb0xlZnQgZ2V0X2tDTVRl
eHRWZXJ0aWNhbExheW91dF9SaWdodFRvTGVmdCgpCisjZGVmaW5lIGtDTVRleHRNYXJrdXBBdHRy
aWJ1dGVfQmFzZUZvbnRTaXplUGVyY2VudGFnZVJlbGF0aXZlVG9WaWRlb0hlaWdodCBnZXRfa0NN
VGV4dE1hcmt1cEF0dHJpYnV0ZV9CYXNlRm9udFNpemVQZXJjZW50YWdlUmVsYXRpdmVUb1ZpZGVv
SGVpZ2h0KCkKKyNkZWZpbmUga0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9SZWxhdGl2ZUZvbnRTaXpl
IGdldF9rQ01UZXh0TWFya3VwQXR0cmlidXRlX1JlbGF0aXZlRm9udFNpemUoKQorI2RlZmluZSBr
Q01UZXh0TWFya3VwQXR0cmlidXRlX0ZvbnRGYW1pbHlOYW1lIGdldF9rQ01UZXh0TWFya3VwQXR0
cmlidXRlX0ZvbnRGYW1pbHlOYW1lKCkKKyNkZWZpbmUga0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9G
b3JlZ3JvdW5kQ29sb3JBUkdCIGdldF9rQ01UZXh0TWFya3VwQXR0cmlidXRlX0ZvcmVncm91bmRD
b2xvckFSR0IoKQorI2RlZmluZSBrQ01UZXh0TWFya3VwQXR0cmlidXRlX0JhY2tncm91bmRDb2xv
ckFSR0IgZ2V0X2tDTVRleHRNYXJrdXBBdHRyaWJ1dGVfQmFja2dyb3VuZENvbG9yQVJHQigpCisj
ZGVmaW5lIGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfQ2hhcmFjdGVyQmFja2dyb3VuZENvbG9yQVJH
QiBnZXRfa0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9DaGFyYWN0ZXJCYWNrZ3JvdW5kQ29sb3JBUkdC
KCkKKyNlbmRpZgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCkBAIC00NTksNCArNTAzLDQgQEAg
dm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpzZXRNb2RlKAogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBFTkFCTEUoVklERU8pICYmICgoVVNFKEFWRk9VTkRBVElP
TikgJiYgIVBMQVRGT1JNKFdJTikpIHx8IFBMQVRGT1JNKElPUykpCisjZW5kaWYgLy8gRU5BQkxF
KFZJREVPKSAmJiAoVVNFKEFWRk9VTkRBVElPTikgfHwgUExBVEZPUk0oSU9TKSkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJh
Y2tQcml2YXRlQVZGLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaAkocmV2aXNpb24g
MTUyNzkzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYs
NyBAQAogI2lmbmRlZiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGX2gKICNkZWZpbmUgSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUFWRl9oCiAKLSNpZiBFTkFCTEUoVklERU8pICYmICgoVVNFKEFWRk9V
TkRBVElPTikgJiYgIVBMQVRGT1JNKFdJTikpIHx8IFBMQVRGT1JNKElPUykpCisjaWYgRU5BQkxF
KFZJREVPKSAmJiAoVVNFKEFWRk9VTkRBVElPTikgfHwgUExBVEZPUk0oSU9TKSkKIAogI2luY2x1
ZGUgIkluYmFuZFRleHRUcmFja1ByaXZhdGUuaCIKICNpbmNsdWRlICJJbmJhbmRUZXh0VHJhY2tQ
cml2YXRlQ2xpZW50LmgiCkBAIC05MCw2ICs5MCw2IEBAIHByb3RlY3RlZDoKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gIEVOQUJMRShWSURFTykgJiYgKChVU0UoQVZGT1VO
REFUSU9OKSAmJiAhUExBVEZPUk0oV0lOKSkgfHwgUExBVEZPUk0oSU9TKSkKKyNlbmRpZiAvLyAg
RU5BQkxFKFZJREVPKSAmJiAoVVNFKEFWRk9VTkRBVElPTikgfHwgUExBVEZPUk0oSU9TKSkKIAog
I2VuZGlmIC8vIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkZfaApJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAJKHJldmlz
aW9uIDE1Mjc5MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03NCw5ICs3NCw3IEBAIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6TWVkaWFQbGEK
ICAgICAsIG1faWdub3JlTG9hZFN0YXRlQ2hhbmdlcyhmYWxzZSkKICAgICAsIG1faGF2ZVJlcG9y
dGVkRmlyc3RWaWRlb0ZyYW1lKGZhbHNlKQogICAgICwgbV9wbGF5V2hlbkZyYW1lc0F2YWlsYWJs
ZShmYWxzZSkKLSNpZiAhUExBVEZPUk0oV0lOKQogICAgICwgbV9pbmJhbmRUcmFja0NvbmZpZ3Vy
YXRpb25QZW5kaW5nKGZhbHNlKQotI2VuZGlmCiAgICAgLCBtX3NlZWtDb3VudCgwKQogewogICAg
IExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6TWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uKCVwKSIsIHRoaXMpOwpAQCAtMjY3LDEwICsyNjUsOCBAQCB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6c2VlCiAgICAgaWYgKGN1cnJlbnRUaW1l
KCkgPT0gdGltZSkKICAgICAgICAgcmV0dXJuOwogCi0jaWYgIVBMQVRGT1JNKFdJTikKICAgICBp
ZiAoY3VycmVudFRyYWNrKCkpCiAgICAgICAgIGN1cnJlbnRUcmFjaygpLT5iZWdpblNlZWtpbmco
KTsKLSNlbmRpZgogICAgIAogICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbjo6c2VlayglcCkgLSBzZWVraW5nIHRvICVmIiwgdGhpcywgdGltZSk7CiAgICAgbV9z
ZWVrVG8gPSB0aW1lOwpAQCAtNTk5LDEwICs1OTUsOCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbjo6c2VlCiAgICAgaWYgKC0tbV9zZWVrQ291bnQpCiAgICAgICAgIHJldHVy
bjsKIAotI2lmICFQTEFURk9STShXSU4pCiAgICAgaWYgKGN1cnJlbnRUcmFjaygpKQogICAgICAg
ICBjdXJyZW50VHJhY2soKS0+ZW5kU2Vla2luZygpOwotI2VuZGlmCiAKICAgICBtX3NlZWtUbyA9
IE1lZGlhUGxheWVyOjppbnZhbGlkVGltZSgpOwogICAgIHVwZGF0ZVN0YXRlcygpOwpAQCAtODMz
LDEwICs4MjcsOCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6ZGlzCiAg
ICAgICAgIGNvbnRlbnRzTmVlZHNEaXNwbGF5KCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
Tm90aWZpY2F0aW9uOjpJbmJhbmRUcmFja3NOZWVkQ29uZmlndXJhdGlvbjoKLSNpZiAhUExBVEZP
Uk0oV0lOKQogICAgICAgICBtX2luYmFuZFRyYWNrQ29uZmlndXJhdGlvblBlbmRpbmcgPSBmYWxz
ZTsKICAgICAgICAgY29uZmlndXJlSW5iYW5kVHJhY2tzKCk7Ci0jZW5kaWYKICAgICAgICAgYnJl
YWs7CiAKICAgICBjYXNlIE5vdGlmaWNhdGlvbjo6Tm9uZToKQEAgLTg0NSw3ICs4MzcsNiBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6ZGlzCiAgICAgfQogfQogCi0jaWYg
IVBMQVRGT1JNKFdJTikKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpjb25m
aWd1cmVJbmJhbmRUcmFja3MoKQogewogICAgIFJlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRl
QVZGPiB0cmFja1RvRW5hYmxlOwpAQCAtODcyLDcgKzg2Myw2IEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uOjp0cmEKICAgICBtX2luYmFuZFRyYWNrQ29uZmlndXJhdGlvblBl
bmRpbmcgPSB0cnVlOwogICAgIHNjaGVkdWxlTWFpblRocmVhZE5vdGlmaWNhdGlvbihOb3RpZmlj
YXRpb246OkluYmFuZFRyYWNrc05lZWRDb25maWd1cmF0aW9uKTsKIH0KLSNlbmRpZgogCiBzaXpl
X3QgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpleHRyYU1lbW9yeUNvc3QoKSBjb25z
dAogewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb24uaAkocmV2aXNpb24gMTUyNzkzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMCArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOwogY2xhc3MgR2VuZXJpY0N1ZURhdGE7CiAK
LWNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbiA6IHB1YmxpYyBNZWRpYVBsYXll
clByaXZhdGVJbnRlcmZhY2UKLSNpZiAhUExBVEZPUk0oV0lOKQotICAgICwgcHVibGljIEFWRklu
YmFuZFRyYWNrUGFyZW50Ci0jZW5kaWYKK2NsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbiA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UsIHB1YmxpYyBBVkZJbmJh
bmRUcmFja1BhcmVudAogewogcHVibGljOgogCkBAIC01NiwxMSArNTMsOSBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHNlZWtDb21wbGV0ZWQoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIGRp
ZEVuZCgpOwogICAgIHZpcnR1YWwgdm9pZCBjb250ZW50c05lZWRzRGlzcGxheSgpIHsgfQotI2lm
ICFQTEFURk9STShXSU4pCiAgICAgdmlydHVhbCB2b2lkIGNvbmZpZ3VyZUluYmFuZFRyYWNrcygp
OwogICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJyZW50VHJhY2soSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUFWRiopIHsgfQogICAgIHZpcnR1YWwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRiogY3VycmVu
dFRyYWNrKCkgY29uc3QgPSAwOwotI2VuZGlmCiAKICAgICBjbGFzcyBOb3RpZmljYXRpb24gewog
ICAgIHB1YmxpYzoKQEAgLTI2OCwxMCArMjYzLDggQEAgcHJvdGVjdGVkOgogCiAgICAgdmlydHVh
bCBzaXplX3QgZXh0cmFNZW1vcnlDb3N0KCkgY29uc3QgT1ZFUlJJREU7CiAKLSNpZiAhUExBVEZP
Uk0oV0lOKQogICAgIHZpcnR1YWwgdm9pZCB0cmFja01vZGVDaGFuZ2VkKCkgT1ZFUlJJREU7CiAg
ICAgVmVjdG9yPFJlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGPiA+IG1fdGV4dFRyYWNr
czsKLSNlbmRpZgogICAgIAogcHJpdmF0ZToKICAgICBNZWRpYVBsYXllciogbV9wbGF5ZXI7CkBA
IC0zMDgsOSArMzAxLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faWdub3JlTG9hZFN0YXRlQ2hh
bmdlczsKICAgICBib29sIG1faGF2ZVJlcG9ydGVkRmlyc3RWaWRlb0ZyYW1lOwogICAgIGJvb2wg
bV9wbGF5V2hlbkZyYW1lc0F2YWlsYWJsZTsKLSNpZiAhUExBVEZPUk0oV0lOKQogICAgIGJvb2wg
bV9pbmJhbmRUcmFja0NvbmZpZ3VyYXRpb25QZW5kaW5nOwotI2VuZGlmCiAgICAgc2l6ZV90IG1f
c2Vla0NvdW50OwogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL2NmL0FWRm91bmRhdGlvbkNGU29mdExpbmtpbmcuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvQVZGb3Vu
ZGF0aW9uQ0ZTb2Z0TGlua2luZy5oCShyZXZpc2lvbiAxNTI3OTMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvQVZGb3VuZGF0aW9uQ0ZTb2Z0TGlu
a2luZy5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw5IEBAIFNPRlRfTElOS19ETExfSU1Q
T1JUKEFWRm91bmRhdGlvbkNGLCBBVkMKIFNPRlRfTElOS19ETExfSU1QT1JUKEFWRm91bmRhdGlv
bkNGLCBBVkNGQXNzZXRDb3B5QXNzZXRUcmFja3MsIENGQXJyYXlSZWYsIF9fY2RlY2wsIChBVkNG
QXNzZXRSZWYgYXNzZXQpLCAoYXNzZXQpKQogI2RlZmluZSBBVkNGQXNzZXRDb3B5QXNzZXRUcmFj
a3Mgc29mdExpbmtfQVZDRkFzc2V0Q29weUFzc2V0VHJhY2tzCiAKK1NPRlRfTElOS19ETExfSU1Q
T1JUKEFWRm91bmRhdGlvbkNGLCBBVkNGQXNzZXRDb3B5QXZhaWxhYmxlTWVkaWFDaGFyYWN0ZXJp
c3RpY3NXaXRoTWVkaWFTZWxlY3Rpb25PcHRpb25zLCBDRkFycmF5UmVmLCBfX2NkZWNsLCAoQVZD
RkFzc2V0UmVmIGFzc2V0KSwgKGFzc2V0KSkKKyNkZWZpbmUgQVZDRkFzc2V0Q29weUF2YWlsYWJs
ZU1lZGlhQ2hhcmFjdGVyaXN0aWNzV2l0aE1lZGlhU2VsZWN0aW9uT3B0aW9ucyBzb2Z0TGlua19B
VkNGQXNzZXRDb3B5QXZhaWxhYmxlTWVkaWFDaGFyYWN0ZXJpc3RpY3NXaXRoTWVkaWFTZWxlY3Rp
b25PcHRpb25zCisKIFNPRlRfTElOS19ETExfSU1QT1JUKEFWRm91bmRhdGlvbkNGLCBBVkNGQXNz
ZXRDb3B5VHJhY2tzV2l0aE1lZGlhQ2hhcmFjdGVyaXN0aWMsIENGQXJyYXlSZWYsIF9fY2RlY2ws
IChBVkNGQXNzZXRSZWYgYXNzZXQsIENGU3RyaW5nUmVmIG1lZGlhQ2hhcmFjdGVyaXN0aWMpLCAo
YXNzZXQsIG1lZGlhQ2hhcmFjdGVyaXN0aWMpKQogI2RlZmluZSBBVkNGQXNzZXRDb3B5VHJhY2tz
V2l0aE1lZGlhQ2hhcmFjdGVyaXN0aWMgc29mdExpbmtfQVZDRkFzc2V0Q29weVRyYWNrc1dpdGhN
ZWRpYUNoYXJhY3RlcmlzdGljCiAKQEAgLTg3LDYgKzkwLDE1IEBAIFNPRlRfTElOS19ETExfSU1Q
T1JUKEFWRm91bmRhdGlvbkNGLCBBVkMKIFNPRlRfTElOS19ETExfSU1QT1JUKEFWRm91bmRhdGlv
bkNGLCBBVkNGQXNzZXRMb2FkVmFsdWVzQXN5bmNocm9ub3VzbHlGb3JQcm9wZXJ0aWVzLCB2b2lk
LCBfX2NkZWNsLCAoQVZDRkFzc2V0UmVmIGFzc2V0LCBDRkFycmF5UmVmIHByb3BlcnRpZXMsIEFW
Q0ZBc3NldExvYWRWYWx1ZXNDb21wbGV0aW9uQ2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQgKmNsaWVu
dENvbnRleHQpLCAoYXNzZXQsIHByb3BlcnRpZXMsIGNhbGxiYWNrLCBjbGllbnRDb250ZXh0KSkK
ICNkZWZpbmUgQVZDRkFzc2V0TG9hZFZhbHVlc0FzeW5jaHJvbm91c2x5Rm9yUHJvcGVydGllcyBz
b2Z0TGlua19BVkNGQXNzZXRMb2FkVmFsdWVzQXN5bmNocm9ub3VzbHlGb3JQcm9wZXJ0aWVzCiAK
K1NPRlRfTElOS19ETExfSU1QT1JUKEFWRm91bmRhdGlvbkNGLCBBVkNGQXNzZXRUcmFja0NvcHlD
b21tb25NZXRhZGF0YSwgQ0ZBcnJheVJlZiwgX19jZGVjbCwgKEFWQ0ZBc3NldFRyYWNrUmVmIGFz
c2V0VHJhY2spLCAoYXNzZXRUcmFjaykpCisjZGVmaW5lIEFWQ0ZBc3NldFRyYWNrQ29weUNvbW1v
bk1ldGFkYXRhIHNvZnRMaW5rX0FWQ0ZBc3NldFRyYWNrQ29weUNvbW1vbk1ldGFkYXRhCisKK1NP
RlRfTElOS19ETExfSU1QT1JUKEFWRm91bmRhdGlvbkNGLCBBVkNGQXNzZXRUcmFja0NvcHlFeHRl
bmRlZExhbmd1YWdlVGFnLCBDRlN0cmluZ1JlZiwgX19jZGVjbCwgKEFWQ0ZBc3NldFRyYWNrUmVm
IGFzc2V0VHJhY2spLCAoYXNzZXRUcmFjaykpCisjZGVmaW5lIEFWQ0ZBc3NldFRyYWNrQ29weUV4
dGVuZGVkTGFuZ3VhZ2VUYWcgc29mdExpbmtfQVZDRkFzc2V0VHJhY2tDb3B5RXh0ZW5kZWRMYW5n
dWFnZVRhZworCitTT0ZUX0xJTktfRExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZDRkFzc2V0
VHJhY2tDb3B5TGFuZ3VhZ2VDb2RlLCBDRlN0cmluZ1JlZiwgX19jZGVjbCwgKEFWQ0ZBc3NldFRy
YWNrUmVmIGFzc2V0VHJhY2spLCAoYXNzZXRUcmFjaykpCisjZGVmaW5lIEFWQ0ZBc3NldFRyYWNr
Q29weUxhbmd1YWdlQ29kZSBzb2Z0TGlua19BVkNGQXNzZXRUcmFja0NvcHlMYW5ndWFnZUNvZGUK
KwogU09GVF9MSU5LX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZBc3NldFRyYWNrR2V0
TWVkaWFUeXBlLCBDRlN0cmluZ1JlZiwgX19jZGVjbCwgKEFWQ0ZBc3NldFRyYWNrUmVmIGFzc2V0
VHJhY2spLCAoYXNzZXRUcmFjaykpCiAjZGVmaW5lIEFWQ0ZBc3NldFRyYWNrR2V0TWVkaWFUeXBl
IHNvZnRMaW5rX0FWQ0ZBc3NldFRyYWNrR2V0TWVkaWFUeXBlCiAKQEAgLTk5LDYgKzExMSwxOCBA
QCBTT0ZUX0xJTktfRExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZDCiBTT0ZUX0xJTktfRExM
X0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZDRkFzc2V0VHJhY2tHZXRUb3RhbFNhbXBsZURhdGFM
ZW5ndGgsIGludDY0X3QsIF9fY2RlY2wsIChBVkNGQXNzZXRUcmFja1JlZiBhc3NldFRyYWNrKSwg
KGFzc2V0VHJhY2spKQogI2RlZmluZSBBVkNGQXNzZXRUcmFja0dldFRvdGFsU2FtcGxlRGF0YUxl
bmd0aCBzb2Z0TGlua19BVkNGQXNzZXRUcmFja0dldFRvdGFsU2FtcGxlRGF0YUxlbmd0aAogCitT
T0ZUX0xJTktfRExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZDRk1lZGlhU2VsZWN0aW9uQ29w
eU9wdGlvbnNGcm9tQXJyYXlGaWx0ZXJlZEFuZFNvcnRlZEFjY29yZGluZ1RvUHJlZmVycmVkTGFu
Z3VhZ2VzLCBDRkFycmF5UmVmLCBfX2NkZWNsLCAoQ0ZBcnJheVJlZiBzZWxlY3Rpb25PcHRpb25z
LCBDRkFycmF5UmVmIHByZWZlcnJlZExhbmd1YWdlcyksIChzZWxlY3Rpb25PcHRpb25zLCBwcmVm
ZXJyZWRMYW5ndWFnZXMpKQorI2RlZmluZSBBVkNGTWVkaWFTZWxlY3Rpb25Db3B5T3B0aW9uc0Zy
b21BcnJheUZpbHRlcmVkQW5kU29ydGVkQWNjb3JkaW5nVG9QcmVmZXJyZWRMYW5ndWFnZXMgc29m
dExpbmtfQVZDRk1lZGlhU2VsZWN0aW9uQ29weU9wdGlvbnNGcm9tQXJyYXlGaWx0ZXJlZEFuZFNv
cnRlZEFjY29yZGluZ1RvUHJlZmVycmVkTGFuZ3VhZ2VzCisKK1NPRlRfTElOS19ETExfSU1QT1JU
KEFWRm91bmRhdGlvbkNGLCBBVkNGTWV0YWRhdGFJdGVtQ29weVN0cmluZ1ZhbHVlLCBDRlN0cmlu
Z1JlZiwgX19jZGVjbCwgKEFWQ0ZNZXRhZGF0YUl0ZW1SZWYgbWV0YWRhdGFJdGVtKSwgKG1ldGFk
YXRhSXRlbSkpCisjZGVmaW5lIEFWQ0ZNZXRhZGF0YUl0ZW1Db3B5U3RyaW5nVmFsdWUgc29mdExp
bmtfQVZDRk1ldGFkYXRhSXRlbUNvcHlTdHJpbmdWYWx1ZQorCitTT0ZUX0xJTktfRExMX0lNUE9S
VChBVkZvdW5kYXRpb25DRiwgQVZDRk1ldGFkYXRhSXRlbUNvcHlJdGVtc1dpdGhLZXlBbmRLZXlT
cGFjZSwgQ0ZBcnJheVJlZiwgX19jZGVjbCwgKENGQXJyYXlSZWYgYXJyYXksIENGVHlwZVJlZiBr
ZXksIENGU3RyaW5nUmVmIGtleVNwYWNlKSwgKGFycmF5LCBrZXksIGtleVNwYWNlKSkKKyNkZWZp
bmUgQVZDRk1ldGFkYXRhSXRlbUNvcHlJdGVtc1dpdGhLZXlBbmRLZXlTcGFjZSBzb2Z0TGlua19B
VkNGTWV0YWRhdGFJdGVtQ29weUl0ZW1zV2l0aEtleUFuZEtleVNwYWNlCisKK1NPRlRfTElOS19E
TExfSU1QT1JUKEFWRm91bmRhdGlvbkNGLCBBVkNGTWV0YWRhdGFJdGVtQ29weUl0ZW1zV2l0aExv
Y2FsZSwgQ0ZBcnJheVJlZiwgX19jZGVjbCwgKENGQXJyYXlSZWYgaXRlbXMsIENGTG9jYWxlUmVm
IGxvY2FsZSksIChpdGVtcywgbG9jYWxlKSkKKyNkZWZpbmUgQVZDRk1ldGFkYXRhSXRlbUNvcHlJ
dGVtc1dpdGhMb2NhbGUgc29mdExpbmtfQVZDRk1ldGFkYXRhSXRlbUNvcHlJdGVtc1dpdGhMb2Nh
bGUKKwogU09GVF9MSU5LX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZQbGF5ZXJDcmVh
dGVQZXJpb2RpY1RpbWVPYnNlcnZlckZvckludGVydmFsLCBBVkNGUGxheWVyT2JzZXJ2ZXJSZWYs
IF9fY2RlY2wsIChBVkNGUGxheWVyUmVmIHBsYXllciwgQ01UaW1lIGludGVydmFsLCBkaXNwYXRj
aF9xdWV1ZV90IHF1ZXVlLCBBVkNGUGxheWVyUGVyaW9kaWNUaW1lT2JzZXJ2ZXJDYWxsYmFjayBj
YWxsYmFjaywgdm9pZCAqY2xpZW50Q29udGV4dCksIChwbGF5ZXIsIGludGVydmFsLCBxdWV1ZSwg
Y2FsbGJhY2ssIGNsaWVudENvbnRleHQpKQogI2RlZmluZSBBVkNGUGxheWVyQ3JlYXRlUGVyaW9k
aWNUaW1lT2JzZXJ2ZXJGb3JJbnRlcnZhbCBzb2Z0TGlua19BVkNGUGxheWVyQ3JlYXRlUGVyaW9k
aWNUaW1lT2JzZXJ2ZXJGb3JJbnRlcnZhbAogCkBAIC0xMjMsNiArMTQ3LDkgQEAgU09GVF9MSU5L
X0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQwogU09GVF9MSU5LX0RMTF9JTVBPUlQoQVZG
b3VuZGF0aW9uQ0YsIEFWQ0ZQbGF5ZXJJdGVtR2V0Q3VycmVudFRpbWUsIENNVGltZSwgX19jZGVj
bCwgKEFWQ0ZQbGF5ZXJJdGVtUmVmIHBsYXllckl0ZW0pLCAocGxheWVySXRlbSkpCiAjZGVmaW5l
IEFWQ0ZQbGF5ZXJJdGVtR2V0Q3VycmVudFRpbWUgc29mdExpbmtfQVZDRlBsYXllckl0ZW1HZXRD
dXJyZW50VGltZQogCitTT0ZUX0xJTktfRExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZDRlBs
YXllckl0ZW1HZXREdXJhdGlvbiwgQ01UaW1lLCBfX2NkZWNsLCAoQVZDRlBsYXllckl0ZW1SZWYg
cGxheWVySXRlbSksIChwbGF5ZXJJdGVtKSkKKyNkZWZpbmUgQVZDRlBsYXllckl0ZW1HZXREdXJh
dGlvbiBzb2Z0TGlua19BVkNGUGxheWVySXRlbUdldER1cmF0aW9uCisKIFNPRlRfTElOS19ETExf
SU1QT1JUKEFWRm91bmRhdGlvbkNGLCBBVkNGUGxheWVySXRlbUdldFN0YXR1cywgQVZDRlBsYXll
ckl0ZW1TdGF0dXMsIF9fY2RlY2wsIChBVkNGUGxheWVySXRlbVJlZiBwbGF5ZXJJdGVtLCBDRkVy
cm9yUmVmICplcnJvck91dCksIChwbGF5ZXJJdGVtLCBlcnJvck91dCkpCiAjZGVmaW5lIEFWQ0ZQ
bGF5ZXJJdGVtR2V0U3RhdHVzIHNvZnRMaW5rX0FWQ0ZQbGF5ZXJJdGVtR2V0U3RhdHVzCiAKQEAg
LTEzNSw2ICsxNjIsMTIgQEAgU09GVF9MSU5LX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFW
QwogU09GVF9MSU5LX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZQbGF5ZXJJdGVtSXNQ
bGF5YmFja0xpa2VseVRvS2VlcFVwLCBCb29sZWFuLCBfX2NkZWNsLCAoQVZDRlBsYXllckl0ZW1S
ZWYgcGxheWVySXRlbSksIChwbGF5ZXJJdGVtKSkKICNkZWZpbmUgQVZDRlBsYXllckl0ZW1Jc1Bs
YXliYWNrTGlrZWx5VG9LZWVwVXAgc29mdExpbmtfQVZDRlBsYXllckl0ZW1Jc1BsYXliYWNrTGlr
ZWx5VG9LZWVwVXAKIAorU09GVF9MSU5LX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZQ
bGF5ZXJJdGVtTGVnaWJsZU91dHB1dEdldFR5cGVJRCwgQ0ZUeXBlSUQsIF9fY2RlY2wsICgpLCAo
KSkKKyNkZWZpbmUgQVZDRlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0R2V0VHlwZUlEIHNvZnRMaW5r
X0FWQ0ZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1dEdldFR5cGVJRAorCitTT0ZUX0xJTktfRExMX0lN
UE9SVChBVkZvdW5kYXRpb25DRiwgQVZDRlBsYXllckl0ZW1SZW1vdmVPdXRwdXQsIHZvaWQsIF9f
Y2RlY2wsIChBVkNGUGxheWVySXRlbVJlZiBwbGF5ZXJJdGVtLCBBVkNGUGxheWVySXRlbU91dHB1
dFJlZiBvdXRwdXQpLCAocGxheWVySXRlbSwgb3V0cHV0KSkKKyNkZWZpbmUgQVZDRlBsYXllckl0
ZW1SZW1vdmVPdXRwdXQgc29mdExpbmtfQVZDRlBsYXllckl0ZW1SZW1vdmVPdXRwdXQKKwogU09G
VF9MSU5LX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZQbGF5ZXJJdGVtU2Vla1RvVGlt
ZVdpdGhUb2xlcmFuY2VBbmRDb21wbGV0aW9uQ2FsbGJhY2ssIEFWQ0ZBc3NldFJlZiwgX19jZGVj
bCwgKEFWQ0ZQbGF5ZXJJdGVtUmVmIHBsYXllckl0ZW0sIENNVGltZSB0aW1lLCBDTVRpbWUgdG9s
ZXJhbmNlQmVmb3JlLCBDTVRpbWUgdG9sZXJhbmNlQWZ0ZXIsIEFWQ0ZQbGF5ZXJJdGVtU2Vla0Nv
bXBsZXRpb25DYWxsYmFjayBjb21wbGV0aW9uQ2FsbGJhY2ssIHZvaWQgKmNvbnRleHQpLCAocGxh
eWVySXRlbSwgdGltZSwgdG9sZXJhbmNlQmVmb3JlLCB0b2xlcmFuY2VBZnRlciwgY29tcGxldGlv
bkNhbGxiYWNrLCBjb250ZXh0KSkKICNkZWZpbmUgQVZDRlBsYXllckl0ZW1TZWVrVG9UaW1lV2l0
aFRvbGVyYW5jZUFuZENvbXBsZXRpb25DYWxsYmFjayBzb2Z0TGlua19BVkNGUGxheWVySXRlbVNl
ZWtUb1RpbWVXaXRoVG9sZXJhbmNlQW5kQ29tcGxldGlvbkNhbGxiYWNrCiAKQEAgLTE1OSw2ICsx
OTIsOSBAQCBTT0ZUX0xJTktfRExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZDCiBTT0ZUX0xJ
TktfRExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZDRlBsYXllckxheWVyU2V0UGxheWVyLCB2
b2lkLCBfX2NkZWNsLCAoQVZDRlBsYXllckxheWVyUmVmIHBsYXllckxheWVyLCBBVkNGUGxheWVy
UmVmIHBsYXllciksIChwbGF5ZXJMYXllciwgcGxheWVyKSkKICNkZWZpbmUgQVZDRlBsYXllckxh
eWVyU2V0UGxheWVyIHNvZnRMaW5rX0FWQ0ZQbGF5ZXJMYXllclNldFBsYXllcgogCitTT0ZUX0xJ
TktfRExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZDRlBsYXllclBsYXksIHZvaWQsIF9fY2Rl
Y2wsIChBVkNGUGxheWVyUmVmIHBsYXllciksIChwbGF5ZXIpKQorI2RlZmluZSBBVkNGUGxheWVy
UGxheSBzb2Z0TGlua19BVkNGUGxheWVyUGxheQorCiBTT0ZUX0xJTktfRExMX0lNUE9SVChBVkZv
dW5kYXRpb25DRiwgQVZDRlBsYXllclJlbW92ZU9ic2VydmVyLCBPU1N0YXR1cywgX19jZGVjbCwg
KEFWQ0ZQbGF5ZXJSZWYgcGxheWVyLCBBVkNGUGxheWVyT2JzZXJ2ZXJSZWYgb2JzZXJ2ZXIpLCAo
cGxheWVyLCBvYnNlcnZlcikpCiAjZGVmaW5lIEFWQ0ZQbGF5ZXJSZW1vdmVPYnNlcnZlciBzb2Z0
TGlua19BVkNGUGxheWVyUmVtb3ZlT2JzZXJ2ZXIKIApAQCAtMTc5LDYgKzIxNSw1OCBAQCBTT0ZU
X0xJTktfRExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZDCiAKIFNPRlRfTElOS19ETExfSU1Q
T1JUX09QVElPTkFMKEFWRm91bmRhdGlvbkNGLCBBVkNGUGxheWVyU2V0RGlyZWN0M0REZXZpY2Us
IHZvaWQsIF9fY2RlY2wsIChBVkNGUGxheWVyUmVmIHBsYXllciwgSURpcmVjdDNERGV2aWNlOSog
ZDNkRGV2aWNlKSkKIAorI2lmIEhBVkUoQVZGT1VOREFUSU9OX01FRElBX1NFTEVDVElPTl9HUk9V
UCkgJiYgSEFWRShBVkZPVU5EQVRJT05fTEVHSUJMRV9PVVRQVVRfU1VQUE9SVCkKKworU09GVF9M
SU5LX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZBc3NldEdldFNlbGVjdGlvbkdyb3Vw
Rm9yTWVkaWFDaGFyYWN0ZXJpc3RpYyAsIEFWQ0ZNZWRpYVNlbGVjdGlvbkdyb3VwUmVmLCBfX2Nk
ZWNsLCAoQVZDRkFzc2V0UmVmIGFzc2V0LCBDRlN0cmluZ1JlZiBtZWRpYUNoYXJhY3RlcmlzdGlj
KSwgKGFzc2V0LCBtZWRpYUNoYXJhY3RlcmlzdGljKSkKKyNkZWZpbmUgQVZDRkFzc2V0R2V0U2Vs
ZWN0aW9uR3JvdXBGb3JNZWRpYUNoYXJhY3RlcmlzdGljICBzb2Z0TGlua19BVkNGQXNzZXRHZXRT
ZWxlY3Rpb25Hcm91cEZvck1lZGlhQ2hhcmFjdGVyaXN0aWMgCisKK1NPRlRfTElOS19ETExfSU1Q
T1JUKEFWRm91bmRhdGlvbkNGLCBBVkNGTWVkaWFTZWxlY3Rpb25Db3B5UGxheWFibGVPcHRpb25z
RnJvbUFycmF5LCBDRkFycmF5UmVmLCBfX2NkZWNsLCAoQ0ZBcnJheVJlZiBzZWxlY3Rpb25PcHRp
b25zKSwgKHNlbGVjdGlvbk9wdGlvbnMpKQorI2RlZmluZSBBVkNGTWVkaWFTZWxlY3Rpb25Db3B5
UGxheWFibGVPcHRpb25zRnJvbUFycmF5IHNvZnRMaW5rX0FWQ0ZNZWRpYVNlbGVjdGlvbkNvcHlQ
bGF5YWJsZU9wdGlvbnNGcm9tQXJyYXkKKworU09GVF9MSU5LX0RMTF9JTVBPUlQoQVZGb3VuZGF0
aW9uQ0YsIEFWQ0ZNZWRpYVNlbGVjdGlvbk9wdGlvbkNvcHlDb21tb25NZXRhZGF0YSwgQ0ZBcnJh
eVJlZiwgX19jZGVjbCwgKEFWQ0ZNZWRpYVNlbGVjdGlvbk9wdGlvblJlZiBzZWxlY3Rpb25PcHRp
b24pLCAoc2VsZWN0aW9uT3B0aW9uKSkKKyNkZWZpbmUgQVZDRk1lZGlhU2VsZWN0aW9uT3B0aW9u
Q29weUNvbW1vbk1ldGFkYXRhIHNvZnRMaW5rX0FWQ0ZNZWRpYVNlbGVjdGlvbk9wdGlvbkNvcHlD
b21tb25NZXRhZGF0YQorCitTT0ZUX0xJTktfRExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZD
Rk1lZGlhU2VsZWN0aW9uT3B0aW9uQ29weUxvY2FsZSwgQ0ZMb2NhbGVSZWYsIF9fY2RlY2wsIChB
VkNGTWVkaWFTZWxlY3Rpb25PcHRpb25SZWYgc2VsZWN0aW9uT3B0aW9uKSwgKHNlbGVjdGlvbk9w
dGlvbikpCisjZGVmaW5lIEFWQ0ZNZWRpYVNlbGVjdGlvbk9wdGlvbkNvcHlMb2NhbGUgc29mdExp
bmtfQVZDRk1lZGlhU2VsZWN0aW9uT3B0aW9uQ29weUxvY2FsZQorCitTT0ZUX0xJTktfRExMX0lN
UE9SVChBVkZvdW5kYXRpb25DRiwgQVZDRk1lZGlhU2VsZWN0aW9uT3B0aW9uR2V0TWVkaWFUeXBl
LCBDRlN0cmluZ1JlZiwgX19jZGVjbCwgKEFWQ0ZNZWRpYVNlbGVjdGlvbk9wdGlvblJlZiBzZWxl
Y3Rpb25PcHRpb24pLCAoc2VsZWN0aW9uT3B0aW9uKSkKKyNkZWZpbmUgQVZDRk1lZGlhU2VsZWN0
aW9uT3B0aW9uR2V0TWVkaWFUeXBlIHNvZnRMaW5rX0FWQ0ZNZWRpYVNlbGVjdGlvbk9wdGlvbkdl
dE1lZGlhVHlwZQorCitTT0ZUX0xJTktfRExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZDRk1l
ZGlhU2VsZWN0aW9uT3B0aW9uSGFzTWVkaWFDaGFyYWN0ZXJpc3RpYywgQm9vbGVhbiwgX19jZGVj
bCwgKEFWQ0ZNZWRpYVNlbGVjdGlvbk9wdGlvblJlZiBzZWxlY3Rpb25PcHRpb24sIENGU3RyaW5n
UmVmIG1lZGlhQ2hhcmFjdGVyaXN0aWMpLCAoc2VsZWN0aW9uT3B0aW9uLCBtZWRpYUNoYXJhY3Rl
cmlzdGljKSkKKyNkZWZpbmUgQVZDRk1lZGlhU2VsZWN0aW9uT3B0aW9uSGFzTWVkaWFDaGFyYWN0
ZXJpc3RpYyBzb2Z0TGlua19BVkNGTWVkaWFTZWxlY3Rpb25PcHRpb25IYXNNZWRpYUNoYXJhY3Rl
cmlzdGljCisKK1NPRlRfTElOS19ETExfSU1QT1JUKEFWRm91bmRhdGlvbkNGLCBBVkNGTWVkaWFT
ZWxlY3Rpb25Hcm91cEFsbG93c0VtcHR5U2VsZWN0aW9uLCBCb29sZWFuLCBfX2NkZWNsLCAoQVZD
Rk1lZGlhU2VsZWN0aW9uR3JvdXBSZWYgc2VsZWN0aW9uR3JvdXApLCAoc2VsZWN0aW9uR3JvdXAp
KQorI2RlZmluZSBBVkNGTWVkaWFTZWxlY3Rpb25Hcm91cEFsbG93c0VtcHR5U2VsZWN0aW9uIHNv
ZnRMaW5rX0FWQ0ZNZWRpYVNlbGVjdGlvbkdyb3VwQWxsb3dzRW1wdHlTZWxlY3Rpb24KKworU09G
VF9MSU5LX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZNZWRpYVNlbGVjdGlvbkdyb3Vw
R2V0T3B0aW9ucywgQ0ZBcnJheVJlZiwgX19jZGVjbCwgKEFWQ0ZNZWRpYVNlbGVjdGlvbkdyb3Vw
UmVmIHNlbGVjdGlvbkdyb3VwKSwgKHNlbGVjdGlvbkdyb3VwKSkKKyNkZWZpbmUgQVZDRk1lZGlh
U2VsZWN0aW9uR3JvdXBHZXRPcHRpb25zIHNvZnRMaW5rX0FWQ0ZNZWRpYVNlbGVjdGlvbkdyb3Vw
R2V0T3B0aW9ucworCitTT0ZUX0xJTktfRExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZDRlBs
YXllckl0ZW1BZGRPdXRwdXQsIHZvaWQsIF9fY2RlY2wsIChBVkNGUGxheWVySXRlbVJlZiBwbGF5
ZXJJdGVtLCBBVkNGUGxheWVySXRlbU91dHB1dFJlZiBvdXRwdXQpLCAocGxheWVySXRlbSwgb3V0
cHV0KSkKKyNkZWZpbmUgQVZDRlBsYXllckl0ZW1BZGRPdXRwdXQgc29mdExpbmtfQVZDRlBsYXll
ckl0ZW1BZGRPdXRwdXQKKworU09GVF9MSU5LX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFW
Q0ZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1dENyZWF0ZVdpdGhNZWRpYVN1YnR5cGVzRm9yTmF0aXZl
UmVwcmVzZW50YXRpb24sIEFWQ0ZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1dFJlZiwgX19jZGVjbCwg
KENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgQ0ZBcnJheVJlZiBzdWJ0eXBlcyksIChhbGxvY2F0
b3IsIHN1YnR5cGVzKSkKKyNkZWZpbmUgQVZDRlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0Q3JlYXRl
V2l0aE1lZGlhU3VidHlwZXNGb3JOYXRpdmVSZXByZXNlbnRhdGlvbiBzb2Z0TGlua19BVkNGUGxh
eWVySXRlbUxlZ2libGVPdXRwdXRDcmVhdGVXaXRoTWVkaWFTdWJ0eXBlc0Zvck5hdGl2ZVJlcHJl
c2VudGF0aW9uCisKK1NPRlRfTElOS19ETExfSU1QT1JUKEFWRm91bmRhdGlvbkNGLCBBVkNGUGxh
eWVySXRlbUdldFNlbGVjdGVkTWVkaWFPcHRpb25Jbk1lZGlhU2VsZWN0aW9uR3JvdXAsIEFWQ0ZN
ZWRpYVNlbGVjdGlvbk9wdGlvblJlZiwgX19jZGVjbCwgKEFWQ0ZQbGF5ZXJJdGVtUmVmIHBsYXll
ckl0ZW0sIEFWQ0ZNZWRpYVNlbGVjdGlvbkdyb3VwUmVmIHNlbGVjdGlvbkdyb3VwKSwgKHBsYXll
ckl0ZW0sIHNlbGVjdGlvbkdyb3VwKSkKKyNkZWZpbmUgQVZDRlBsYXllckl0ZW1HZXRTZWxlY3Rl
ZE1lZGlhT3B0aW9uSW5NZWRpYVNlbGVjdGlvbkdyb3VwIHNvZnRMaW5rX0FWQ0ZQbGF5ZXJJdGVt
R2V0U2VsZWN0ZWRNZWRpYU9wdGlvbkluTWVkaWFTZWxlY3Rpb25Hcm91cAorCitTT0ZUX0xJTktf
RExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZDRlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0U2V0
QWR2YW5jZUludGVydmFsRm9yQ2FsbGJhY2tJbnZvY2F0aW9uLCB2b2lkLCBfX2NkZWNsLCAoQVZD
RlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0UmVmIGxlZ2libGVPdXRwdXQsIENGVGltZUludGVydmFs
IHRpbWVJbnRlcnZhbCksIChsZWdpYmxlT3V0cHV0LCB0aW1lSW50ZXJ2YWwpKQorI2RlZmluZSBB
VkNGUGxheWVySXRlbUxlZ2libGVPdXRwdXRTZXRBZHZhbmNlSW50ZXJ2YWxGb3JDYWxsYmFja0lu
dm9jYXRpb24gc29mdExpbmtfQVZDRlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0U2V0QWR2YW5jZUlu
dGVydmFsRm9yQ2FsbGJhY2tJbnZvY2F0aW9uCisKK1NPRlRfTElOS19ETExfSU1QT1JUKEFWRm91
bmRhdGlvbkNGLCBBVkNGUGxheWVySXRlbUxlZ2libGVPdXRwdXRTZXRDYWxsYmFja3MsIHZvaWQs
IF9fY2RlY2wsIChBVkNGUGxheWVySXRlbUxlZ2libGVPdXRwdXRSZWYgb3V0cHV0LCBjb25zdCBB
VkNGUGxheWVySXRlbUxlZ2libGVPdXRwdXRDYWxsYmFja3MqIGNhbGxiYWNrcywgZGlzcGF0Y2hf
cXVldWVfdCBjYWxsYmFja1F1ZXVlKSwgKG91dHB1dCwgY2FsbGJhY2tzLCBjYWxsYmFja1F1ZXVl
KSkKKyNkZWZpbmUgQVZDRlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0U2V0Q2FsbGJhY2tzIHNvZnRM
aW5rX0FWQ0ZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1dFNldENhbGxiYWNrcworCitTT0ZUX0xJTktf
RExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZDRlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0U2V0
VGV4dFN0eWxpbmdSZXNvbHV0aW9uLCB2b2lkLCBfX2NkZWNsLCAoQVZDRlBsYXllckl0ZW1MZWdp
YmxlT3V0cHV0UmVmIG91dHB1dCwgQ0ZTdHJpbmdSZWYgdGV4dFN0eWxpbmdSZXNvbHV0aW9uKSwg
KG91dHB1dCwgdGV4dFN0eWxpbmdSZXNvbHV0aW9uKSkKKyNkZWZpbmUgQVZDRlBsYXllckl0ZW1M
ZWdpYmxlT3V0cHV0U2V0VGV4dFN0eWxpbmdSZXNvbHV0aW9uIHNvZnRMaW5rX0FWQ0ZQbGF5ZXJJ
dGVtTGVnaWJsZU91dHB1dFNldFRleHRTdHlsaW5nUmVzb2x1dGlvbgorCitTT0ZUX0xJTktfRExM
X0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZDRlBsYXllckl0ZW1PdXRwdXRTZXRTdXBwcmVzc1Bs
YXllclJlbmRlcmluZywgdm9pZCwgX19jZGVjbCwgKEFWQ0ZQbGF5ZXJJdGVtT3V0cHV0UmVmIG91
dHB1dCwgQm9vbGVhbiBzdXBwcmVzc2VkKSwgKG91dHB1dCwgc3VwcHJlc3NlZCkpCisjZGVmaW5l
IEFWQ0ZQbGF5ZXJJdGVtT3V0cHV0U2V0U3VwcHJlc3NQbGF5ZXJSZW5kZXJpbmcgc29mdExpbmtf
QVZDRlBsYXllckl0ZW1PdXRwdXRTZXRTdXBwcmVzc1BsYXllclJlbmRlcmluZworCitTT0ZUX0xJ
TktfRExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZDRlBsYXllckl0ZW1TZWxlY3RNZWRpYU9w
dGlvbkluTWVkaWFTZWxlY3Rpb25Hcm91cCwgdm9pZCwgX19jZGVjbCwgKEFWQ0ZQbGF5ZXJJdGVt
UmVmIHBsYXllckl0ZW0sIEFWQ0ZNZWRpYVNlbGVjdGlvbk9wdGlvblJlZiBzZWxlY3Rpb25PcHRp
b24sIEFWQ0ZNZWRpYVNlbGVjdGlvbkdyb3VwUmVmIHNlbGVjdGlvbkdyb3VwKSwgKHBsYXllckl0
ZW0sIHNlbGVjdGlvbk9wdGlvbiwgc2VsZWN0aW9uR3JvdXApKQorI2RlZmluZSBBVkNGUGxheWVy
SXRlbVNlbGVjdE1lZGlhT3B0aW9uSW5NZWRpYVNlbGVjdGlvbkdyb3VwIHNvZnRMaW5rX0FWQ0ZQ
bGF5ZXJJdGVtU2VsZWN0TWVkaWFPcHRpb25Jbk1lZGlhU2VsZWN0aW9uR3JvdXAKKworI2VuZGlm
CisKIC8vIFZhcmlhYmxlcwogCiBTT0ZUX0xJTktfVkFSSUFCTEVfRExMX0lNUE9SVChBVkZvdW5k
YXRpb25DRiwgQVZDRkFzc2V0SW1hZ2VHZW5lcmF0b3JBcGVydHVyZU1vZGVDbGVhbkFwZXJ0dXJl
LCBjb25zdCBDRlN0cmluZ1JlZik7CkBAIC0yMTcsOSArMzA1LDE4IEBAIFNPRlRfTElOS19WQVJJ
QUJMRV9ETExfSU1QT1JUKEFWRm91bmRhdGkKIFNPRlRfTElOS19WQVJJQUJMRV9ETExfSU1QT1JU
KEFWRm91bmRhdGlvbkNGLCBBVkNGTWVkaWFUeXBlVmlkZW8sIGNvbnN0IENGU3RyaW5nUmVmKTsK
ICNkZWZpbmUgQVZDRk1lZGlhVHlwZVZpZGVvIGdldF9BVkNGTWVkaWFUeXBlVmlkZW8oKQogCitT
T0ZUX0xJTktfVkFSSUFCTEVfRExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZDRk1ldGFkYXRh
Q29tbW9uS2V5VGl0bGUsIGNvbnN0IENGU3RyaW5nUmVmKTsKKyNkZWZpbmUgQVZDRk1ldGFkYXRh
Q29tbW9uS2V5VGl0bGUgZ2V0X0FWQ0ZNZXRhZGF0YUNvbW1vbktleVRpdGxlKCkKKworU09GVF9M
SU5LX1ZBUklBQkxFX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZNZXRhZGF0YUtleVNw
YWNlQ29tbW9uLCBjb25zdCBDRlN0cmluZ1JlZik7CisjZGVmaW5lIEFWQ0ZNZXRhZGF0YUtleVNw
YWNlQ29tbW9uIGdldF9BVkNGTWV0YWRhdGFLZXlTcGFjZUNvbW1vbigpCisKIFNPRlRfTElOS19W
QVJJQUJMRV9ETExfSU1QT1JUKEFWRm91bmRhdGlvbkNGLCBBVkNGUGxheWVySXRlbURpZFBsYXlU
b0VuZFRpbWVOb3RpZmljYXRpb24sIGNvbnN0IENGU3RyaW5nUmVmKTsKICNkZWZpbmUgQVZDRlBs
YXllckl0ZW1EaWRQbGF5VG9FbmRUaW1lTm90aWZpY2F0aW9uIGdldF9BVkNGUGxheWVySXRlbURp
ZFBsYXlUb0VuZFRpbWVOb3RpZmljYXRpb24oKQogCitTT0ZUX0xJTktfVkFSSUFCTEVfRExMX0lN
UE9SVChBVkZvdW5kYXRpb25DRiwgQVZDRlBsYXllckl0ZW1EdXJhdGlvbkNoYW5nZWROb3RpZmlj
YXRpb24sIGNvbnN0IENGU3RyaW5nUmVmKTsKKyNkZWZpbmUgQVZDRlBsYXllckl0ZW1EdXJhdGlv
bkNoYW5nZWROb3RpZmljYXRpb24gZ2V0X0FWQ0ZQbGF5ZXJJdGVtRHVyYXRpb25DaGFuZ2VkTm90
aWZpY2F0aW9uKCkKKwogU09GVF9MSU5LX1ZBUklBQkxFX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9u
Q0YsIEFWQ0ZQbGF5ZXJJdGVtSXNQbGF5YmFja0J1ZmZlckVtcHR5Q2hhbmdlZE5vdGlmaWNhdGlv
biwgY29uc3QgQ0ZTdHJpbmdSZWYpOwogI2RlZmluZSBBVkNGUGxheWVySXRlbUlzUGxheWJhY2tC
dWZmZXJFbXB0eUNoYW5nZWROb3RpZmljYXRpb24gZ2V0X0FWQ0ZQbGF5ZXJJdGVtSXNQbGF5YmFj
a0J1ZmZlckVtcHR5Q2hhbmdlZE5vdGlmaWNhdGlvbigpCiAKQEAgLTI0OSwzICszNDYsMzcgQEAg
U09GVF9MSU5LX1ZBUklBQkxFX0RMTF9JTVBPUlQoQVZGb3VuZGF0aQogCiBTT0ZUX0xJTktfVkFS
SUFCTEVfRExMX0lNUE9SVF9PUFRJT05BTChBVkZvdW5kYXRpb25DRiwgQVZDRlBsYXllckVuYWJs
ZUhhcmR3YXJlQWNjZWxlcmF0ZWRWaWRlb0RlY29kZXJLZXksIGNvbnN0IENGU3RyaW5nUmVmKTsK
ICNkZWZpbmUgQVZDRlBsYXllckVuYWJsZUhhcmR3YXJlQWNjZWxlcmF0ZWRWaWRlb0RlY29kZXJL
ZXkgZ2V0X0FWQ0ZQbGF5ZXJFbmFibGVIYXJkd2FyZUFjY2VsZXJhdGVkVmlkZW9EZWNvZGVyS2V5
KCkKKworI2lmIEhBVkUoQVZGT1VOREFUSU9OX01FRElBX1NFTEVDVElPTl9HUk9VUCkgJiYgSEFW
RShBVkZPVU5EQVRJT05fTEVHSUJMRV9PVVRQVVRfU1VQUE9SVCkKKworU09GVF9MSU5LX1ZBUklB
QkxFX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZBc3NldFByb3BlcnR5QXZhaWxhYmxl
TWVkaWFDaGFyYWN0ZXJpc3RpY3NXaXRoTWVkaWFTZWxlY3Rpb25PcHRpb25zLCBjb25zdCBDRlN0
cmluZ1JlZik7CisjZGVmaW5lIEFWQ0ZBc3NldFByb3BlcnR5QXZhaWxhYmxlTWVkaWFDaGFyYWN0
ZXJpc3RpY3NXaXRoTWVkaWFTZWxlY3Rpb25PcHRpb25zICBnZXRfQVZDRkFzc2V0UHJvcGVydHlB
dmFpbGFibGVNZWRpYUNoYXJhY3RlcmlzdGljc1dpdGhNZWRpYVNlbGVjdGlvbk9wdGlvbnMoKQor
CitTT0ZUX0xJTktfVkFSSUFCTEVfRExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZDRk1lZGlh
Q2hhcmFjdGVyaXN0aWNFYXN5VG9SZWFkLCBjb25zdCBDRlN0cmluZ1JlZik7CisjZGVmaW5lIEFW
Q0ZNZWRpYUNoYXJhY3RlcmlzdGljRWFzeVRvUmVhZCBnZXRfQVZDRk1lZGlhQ2hhcmFjdGVyaXN0
aWNFYXN5VG9SZWFkKCkKKworU09GVF9MSU5LX1ZBUklBQkxFX0RMTF9JTVBPUlQoQVZGb3VuZGF0
aW9uQ0YsIEFWQ0ZNZWRpYUNoYXJhY3RlcmlzdGljQ29udGFpbnNPbmx5Rm9yY2VkU3VidGl0bGVz
LCBjb25zdCBDRlN0cmluZ1JlZik7CisjZGVmaW5lIEFWQ0ZNZWRpYUNoYXJhY3RlcmlzdGljQ29u
dGFpbnNPbmx5Rm9yY2VkU3VidGl0bGVzIGdldF9BVkNGTWVkaWFDaGFyYWN0ZXJpc3RpY0NvbnRh
aW5zT25seUZvcmNlZFN1YnRpdGxlcygpCisKK1NPRlRfTElOS19WQVJJQUJMRV9ETExfSU1QT1JU
KEFWRm91bmRhdGlvbkNGLCBBVkNGTWVkaWFDaGFyYWN0ZXJpc3RpY0Rlc2NyaWJlc011c2ljQW5k
U291bmRGb3JBY2Nlc3NpYmlsaXR5LCBjb25zdCBDRlN0cmluZ1JlZik7CisjZGVmaW5lIEFWQ0ZN
ZWRpYUNoYXJhY3RlcmlzdGljRGVzY3JpYmVzTXVzaWNBbmRTb3VuZEZvckFjY2Vzc2liaWxpdHkg
Z2V0X0FWQ0ZNZWRpYUNoYXJhY3RlcmlzdGljRGVzY3JpYmVzTXVzaWNBbmRTb3VuZEZvckFjY2Vz
c2liaWxpdHkoKQorCitTT0ZUX0xJTktfVkFSSUFCTEVfRExMX0lNUE9SVChBVkZvdW5kYXRpb25D
RiwgQVZDRk1lZGlhQ2hhcmFjdGVyaXN0aWNJc01haW5Qcm9ncmFtQ29udGVudCwgY29uc3QgQ0ZT
dHJpbmdSZWYpOworI2RlZmluZSBBVkNGTWVkaWFDaGFyYWN0ZXJpc3RpY0lzTWFpblByb2dyYW1D
b250ZW50IGdldF9BVkNGTWVkaWFDaGFyYWN0ZXJpc3RpY0lzTWFpblByb2dyYW1Db250ZW50KCkK
KworU09GVF9MSU5LX1ZBUklBQkxFX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZNZWRp
YUNoYXJhY3RlcmlzdGljTGVnaWJsZSwgY29uc3QgQ0ZTdHJpbmdSZWYpOworI2RlZmluZSBBVkNG
TWVkaWFDaGFyYWN0ZXJpc3RpY0xlZ2libGUgZ2V0X0FWQ0ZNZWRpYUNoYXJhY3RlcmlzdGljTGVn
aWJsZSgpCisKK1NPRlRfTElOS19WQVJJQUJMRV9ETExfSU1QT1JUKEFWRm91bmRhdGlvbkNGLCBB
VkNGTWVkaWFDaGFyYWN0ZXJpc3RpY1RyYW5zY3JpYmVzU3Bva2VuRGlhbG9nRm9yQWNjZXNzaWJp
bGl0eSwgY29uc3QgQ0ZTdHJpbmdSZWYpOworI2RlZmluZSBBVkNGTWVkaWFDaGFyYWN0ZXJpc3Rp
Y1RyYW5zY3JpYmVzU3Bva2VuRGlhbG9nRm9yQWNjZXNzaWJpbGl0eSBnZXRfQVZDRk1lZGlhQ2hh
cmFjdGVyaXN0aWNUcmFuc2NyaWJlc1Nwb2tlbkRpYWxvZ0ZvckFjY2Vzc2liaWxpdHkoKQorCitT
T0ZUX0xJTktfVkFSSUFCTEVfRExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZDRk1lZGlhVHlw
ZVN1YnRpdGxlLCBjb25zdCBDRlN0cmluZ1JlZik7CisjZGVmaW5lIEFWQ0ZNZWRpYVR5cGVTdWJ0
aXRsZSBnZXRfQVZDRk1lZGlhVHlwZVN1YnRpdGxlKCkKKworU09GVF9MSU5LX1ZBUklBQkxFX0RM
TF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZQbGF5ZXJBcHBsaWVzTWVkaWFTZWxlY3Rpb25D
cml0ZXJpYUF1dG9tYXRpY2FsbHlLZXksIGNvbnN0IENGU3RyaW5nUmVmKTsKKyNkZWZpbmUgQVZD
RlBsYXllckFwcGxpZXNNZWRpYVNlbGVjdGlvbkNyaXRlcmlhQXV0b21hdGljYWxseUtleSBnZXRf
QVZDRlBsYXllckFwcGxpZXNNZWRpYVNlbGVjdGlvbkNyaXRlcmlhQXV0b21hdGljYWxseUtleSgp
CisKK1NPRlRfTElOS19WQVJJQUJMRV9ETExfSU1QT1JUKEFWRm91bmRhdGlvbkNGLCBBVkNGUGxh
eWVySXRlbUxlZ2libGVPdXRwdXRUZXh0U3R5bGluZ1Jlc29sdXRpb25Tb3VyY2VBbmRSdWxlc09u
bHksIGNvbnN0IENGU3RyaW5nUmVmKTsKKyNkZWZpbmUgQVZDRlBsYXllckl0ZW1MZWdpYmxlT3V0
cHV0VGV4dFN0eWxpbmdSZXNvbHV0aW9uU291cmNlQW5kUnVsZXNPbmx5IGdldF9BVkNGUGxheWVy
SXRlbUxlZ2libGVPdXRwdXRUZXh0U3R5bGluZ1Jlc29sdXRpb25Tb3VyY2VBbmRSdWxlc09ubHko
KQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9jZi9Db3JlTWVkaWFTb2Z0TGlua2luZy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9Db3JlTWVkaWFTb2Z0TGlu
a2luZy5oCShyZXZpc2lvbiAxNTI3OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vY2YvQ29yZU1lZGlhU29mdExpbmtpbmcuaAkod29ya2luZyBjb3B5
KQpAQCAtNTMsNiArNTMsOSBAQCBTT0ZUX0xJTktfRExMX0lNUE9SVChDb3JlTWVkaWEsIENNVGlt
ZU1hCiBTT0ZUX0xJTktfRExMX0lNUE9SVChDb3JlTWVkaWEsIENNVGltZU1ha2VXaXRoU2Vjb25k
cywgQ01UaW1lLCBfX2NkZWNsLCAoRmxvYXQ2NCBzZWNvbmRzLCBpbnQzMl90IHByZWZlcnJlZFRp
bWVTY2FsZSksIChzZWNvbmRzLCBwcmVmZXJyZWRUaW1lU2NhbGUpKQogI2RlZmluZSBDTVRpbWVN
YWtlV2l0aFNlY29uZHMgc29mdExpbmtfQ01UaW1lTWFrZVdpdGhTZWNvbmRzCiAKK1NPRlRfTElO
S19ETExfSU1QT1JUKENvcmVNZWRpYSwgQ01UaW1lUmFuZ2VHZXRFbmQsIENNVGltZSwgX19jZGVj
bCwgKENNVGltZVJhbmdlIHJhbmdlKSwgKHJhbmdlKSkKKyNkZWZpbmUgQ01UaW1lUmFuZ2VHZXRF
bmQgc29mdExpbmtfQ01UaW1lUmFuZ2VHZXRFbmQKKwogLy8gVmFyaWFibGVzCiAKIFNPRlRfTElO
S19WQVJJQUJMRV9ETExfSU1QT1JUKENvcmVNZWRpYSwga0NNVGltZVplcm8sIGNvbnN0IENNVGlt
ZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
Y2YvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0YuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQ
cml2YXRlQVZDRi5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vY2YvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0YuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTgzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaWYgUExBVEZPUk0oV0lOKSAmJiBFTkFCTEUoVklERU8pICYmIEhBVkUoQVZGT1VO
REFUSU9OX01FRElBX1NFTEVDVElPTl9HUk9VUCkKKworI2luY2x1ZGUgIkluYmFuZFRleHRUcmFj
a1ByaXZhdGVBVkNGLmgiCisKKyNpbmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIKKyNpbmNsdWRl
ICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlLmgiCisjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUFWRi5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJTb2Z0TGlua2luZy5o
IgorCisjaW5jbHVkZSA8QVZGb3VuZGF0aW9uQ0YvQVZDRlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0
Lmg+CisjaW5jbHVkZSA8QVZGb3VuZGF0aW9uQ0YvQVZGb3VuZGF0aW9uQ0YuaD4KKworI2luY2x1
ZGUgPGQzZDkuaD4KKworLy8gVGhlIHNvZnRsaW5rIGhlYWRlciBmaWxlcyBtdXN0IGJlIGluY2x1
ZGVkIGFmdGVyIHRoZSBBVkNGIGFuZCBDb3JlTWVkaWEgaGVhZGVyIGZpbGVzLgorI2luY2x1ZGUg
IkFWRm91bmRhdGlvbkNGU29mdExpbmtpbmcuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRjo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0YoQVZG
SW5iYW5kVHJhY2tQYXJlbnQqIHBsYXllciwgQVZDRk1lZGlhU2VsZWN0aW9uT3B0aW9uUmVmIHNl
bGVjdGlvbikKKyAgICA6IEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkYocGxheWVyKQorICAgICwg
bV9tZWRpYVNlbGVjdGlvbk9wdGlvbihzZWxlY3Rpb24pCit7Cit9CisKK3ZvaWQgSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWQ0Y6OmRpc2Nvbm5lY3QoKQoreworICAgIG1fbWVkaWFTZWxlY3Rpb25P
cHRpb24gPSAwOworICAgIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OmRpc2Nvbm5lY3QoKTsK
K30KKworSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6S2luZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRl
QVZDRjo6a2luZCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX21lZGlhU2VsZWN0aW9uT3B0aW9uKQor
ICAgICAgICByZXR1cm4gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6Tm9uZTsKKworICAgIENGU3Ry
aW5nUmVmIG1lZGlhVHlwZSA9IEFWQ0ZNZWRpYVNlbGVjdGlvbk9wdGlvbkdldE1lZGlhVHlwZSht
ZWRpYVNlbGVjdGlvbk9wdGlvbigpKTsKKyAgICAKKyAgICBpZiAoQ0ZTdHJpbmdDb21wYXJlKG1l
ZGlhVHlwZSwgQVZDRk1lZGlhVHlwZUNsb3NlZENhcHRpb24sIGtDRkNvbXBhcmVDYXNlSW5zZW5z
aXRpdmUpID09IGtDRkNvbXBhcmVFcXVhbFRvKQorICAgICAgICByZXR1cm4gSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZTo6Q2FwdGlvbnM7CisgICAgaWYgKENGU3RyaW5nQ29tcGFyZShtZWRpYVR5cGUs
IEFWQ0ZNZWRpYVR5cGVTdWJ0aXRsZSwga0NGQ29tcGFyZUNhc2VJbnNlbnNpdGl2ZSkgPT0ga0NG
Q29tcGFyZUVxdWFsVG8pIHsKKyAgICAgICAgaWYgKEFWQ0ZNZWRpYVNlbGVjdGlvbk9wdGlvbkhh
c01lZGlhQ2hhcmFjdGVyaXN0aWMobWVkaWFTZWxlY3Rpb25PcHRpb24oKSwgQVZDRk1lZGlhQ2hh
cmFjdGVyaXN0aWNDb250YWluc09ubHlGb3JjZWRTdWJ0aXRsZXMpKQorICAgICAgICAgICAgcmV0
dXJuIEluYmFuZFRleHRUcmFja1ByaXZhdGU6OkZvcmNlZDsKKworICAgICAgICAvLyBBbiAiU0RI
IiB0cmFjayBpcyBhIHN1YnRpdGxlIHRyYWNrIGNyZWF0ZWQgZm9yIHRoZSBkZWFmIG9yIGhhcmQt
b2YtaGVhcmluZy4gImNhcHRpb25zIiBpbiBXZWJWVFQgYXJlCisgICAgICAgIC8vICJsYWJlbGVk
IGFzIGFwcHJvcHJpYXRlIGZvciB0aGUgaGFyZC1vZi1oZWFyaW5nIiwgc28gdGFnIFNESCBzdXRp
dGxlcyBhcyAiY2FwdGlvbnMiLgorICAgICAgICBpZiAoQVZDRk1lZGlhU2VsZWN0aW9uT3B0aW9u
SGFzTWVkaWFDaGFyYWN0ZXJpc3RpYyhtZWRpYVNlbGVjdGlvbk9wdGlvbigpLCBBVkNGTWVkaWFD
aGFyYWN0ZXJpc3RpY1RyYW5zY3JpYmVzU3Bva2VuRGlhbG9nRm9yQWNjZXNzaWJpbGl0eSkpCisg
ICAgICAgICAgICByZXR1cm4gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6Q2FwdGlvbnM7CisgICAg
ICAgIGlmIChBVkNGTWVkaWFTZWxlY3Rpb25PcHRpb25IYXNNZWRpYUNoYXJhY3RlcmlzdGljKG1l
ZGlhU2VsZWN0aW9uT3B0aW9uKCksIEFWQ0ZNZWRpYUNoYXJhY3RlcmlzdGljRGVzY3JpYmVzTXVz
aWNBbmRTb3VuZEZvckFjY2Vzc2liaWxpdHkpKQorICAgICAgICAgICAgcmV0dXJuIEluYmFuZFRl
eHRUcmFja1ByaXZhdGU6OkNhcHRpb25zOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIEluYmFu
ZFRleHRUcmFja1ByaXZhdGU6OlN1YnRpdGxlczsKKyAgICB9CisKKyAgICByZXR1cm4gSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZTo6Q2FwdGlvbnM7Cit9CisKK2Jvb2wgSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUFWQ0Y6OmlzQ2xvc2VkQ2FwdGlvbnMoKSBjb25zdAoreworICAgIGlmICghbV9tZWRpYVNl
bGVjdGlvbk9wdGlvbikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgQ0ZTdHJpbmdSZWYg
bWVkaWFUeXBlID0gQVZDRk1lZGlhU2VsZWN0aW9uT3B0aW9uR2V0TWVkaWFUeXBlKG1lZGlhU2Vs
ZWN0aW9uT3B0aW9uKCkpOworCisgICAgcmV0dXJuIChDRlN0cmluZ0NvbXBhcmUobWVkaWFUeXBl
LCBBVkNGTWVkaWFUeXBlQ2xvc2VkQ2FwdGlvbiwga0NGQ29tcGFyZUNhc2VJbnNlbnNpdGl2ZSkg
PT0ga0NGQ29tcGFyZUVxdWFsVG8pOworfQorCitib29sIEluYmFuZFRleHRUcmFja1ByaXZhdGVB
VkNGOjppc1NESCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX21lZGlhU2VsZWN0aW9uT3B0aW9uKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgQ0ZTdHJpbmdSZWYgbWVkaWFUeXBlID0g
QVZDRk1lZGlhU2VsZWN0aW9uT3B0aW9uR2V0TWVkaWFUeXBlKG1lZGlhU2VsZWN0aW9uT3B0aW9u
KCkpOworCisgICAgaWYgKENGU3RyaW5nQ29tcGFyZShtZWRpYVR5cGUsIEFWQ0ZNZWRpYVR5cGVT
dWJ0aXRsZSwga0NGQ29tcGFyZUNhc2VJbnNlbnNpdGl2ZSkgIT0ga0NGQ29tcGFyZUVxdWFsVG8p
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChBVkNGTWVkaWFTZWxlY3Rpb25PcHRp
b25IYXNNZWRpYUNoYXJhY3RlcmlzdGljKG1lZGlhU2VsZWN0aW9uT3B0aW9uKCksIEFWQ0ZNZWRp
YUNoYXJhY3RlcmlzdGljVHJhbnNjcmliZXNTcG9rZW5EaWFsb2dGb3JBY2Nlc3NpYmlsaXR5KQor
ICAgICAgICAmJiBBVkNGTWVkaWFTZWxlY3Rpb25PcHRpb25IYXNNZWRpYUNoYXJhY3RlcmlzdGlj
KG1lZGlhU2VsZWN0aW9uT3B0aW9uKCksIEFWQ0ZNZWRpYUNoYXJhY3RlcmlzdGljRGVzY3JpYmVz
TXVzaWNBbmRTb3VuZEZvckFjY2Vzc2liaWxpdHkpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwor
ICAgIHJldHVybiBmYWxzZTsKK30KKyAgICAKK2Jvb2wgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFW
Q0Y6OmNvbnRhaW5zT25seUZvcmNlZFN1YnRpdGxlcygpIGNvbnN0Cit7CisgICAgaWYgKCFtX21l
ZGlhU2VsZWN0aW9uT3B0aW9uKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgcmV0
dXJuIEFWQ0ZNZWRpYVNlbGVjdGlvbk9wdGlvbkhhc01lZGlhQ2hhcmFjdGVyaXN0aWMobWVkaWFT
ZWxlY3Rpb25PcHRpb24oKSwgQVZDRk1lZGlhQ2hhcmFjdGVyaXN0aWNDb250YWluc09ubHlGb3Jj
ZWRTdWJ0aXRsZXMpOworfQorCitib29sIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGOjppc01h
aW5Qcm9ncmFtQ29udGVudCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX21lZGlhU2VsZWN0aW9uT3B0
aW9uKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgcmV0dXJuIEFWQ0ZNZWRpYVNl
bGVjdGlvbk9wdGlvbkhhc01lZGlhQ2hhcmFjdGVyaXN0aWMobWVkaWFTZWxlY3Rpb25PcHRpb24o
KSwgQVZDRk1lZGlhQ2hhcmFjdGVyaXN0aWNJc01haW5Qcm9ncmFtQ29udGVudCk7Cit9CisKK2Jv
b2wgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0Y6OmlzRWFzeVRvUmVhZCgpIGNvbnN0Cit7Cisg
ICAgaWYgKCFtX21lZGlhU2VsZWN0aW9uT3B0aW9uKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICByZXR1cm4gQVZDRk1lZGlhU2VsZWN0aW9uT3B0aW9uSGFzTWVkaWFDaGFyYWN0ZXJpc3Rp
YyhtZWRpYVNlbGVjdGlvbk9wdGlvbigpLCBBVkNGTWVkaWFDaGFyYWN0ZXJpc3RpY0Vhc3lUb1Jl
YWQpOworfQorCitBdG9taWNTdHJpbmcgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0Y6OmxhYmVs
KCkgY29uc3QKK3sKKyAgICBpZiAoIW1fbWVkaWFTZWxlY3Rpb25PcHRpb24pCisgICAgICAgIHJl
dHVybiBlbXB0eUF0b207CisKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHRpdGxlOworCisg
ICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGNvbW1vbk1ldGFEYXRhID0gYWRvcHRDRihBVkNGTWVk
aWFTZWxlY3Rpb25PcHRpb25Db3B5Q29tbW9uTWV0YWRhdGEobWVkaWFTZWxlY3Rpb25PcHRpb24o
KSkpOworICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiB0aXRsZXMgPSBhZG9wdENGKEFWQ0ZNZXRh
ZGF0YUl0ZW1Db3B5SXRlbXNXaXRoS2V5QW5kS2V5U3BhY2UoY29tbW9uTWV0YURhdGEuZ2V0KCks
IEFWQ0ZNZXRhZGF0YUNvbW1vbktleVRpdGxlLCBBVkNGTWV0YWRhdGFLZXlTcGFjZUNvbW1vbikp
OworICAgIENGSW5kZXggdGl0bGVzQ291bnQgPSBDRkFycmF5R2V0Q291bnQodGl0bGVzLmdldCgp
KTsKKyAgICBpZiAoIXRpdGxlc0NvdW50KQorICAgICAgICByZXR1cm4gZW1wdHlBdG9tOworCisg
ICAgLy8gSWYgcG9zc2libGUsIHJldHVybiBhIHRpdGxlIGluIG9uZSBvZiB0aGUgdXNlcidzIHBy
ZWZlcnJlZCBsYW5ndWFnZXMuCisgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IHByZWZlcnJlZExh
bmd1YWdlcyA9IENGTG9jYWxlQ29weVByZWZlcnJlZExhbmd1YWdlcygpOworICAgIFJldGFpblB0
cjxDRkFycmF5UmVmPiB0aXRsZXNGb3JQcmVmZXJyZWRMYW5ndWFnZXMgPSBBVkNGTWVkaWFTZWxl
Y3Rpb25Db3B5T3B0aW9uc0Zyb21BcnJheUZpbHRlcmVkQW5kU29ydGVkQWNjb3JkaW5nVG9QcmVm
ZXJyZWRMYW5ndWFnZXModGl0bGVzLmdldCgpLCBwcmVmZXJyZWRMYW5ndWFnZXMuZ2V0KCkpOwor
ICAgIENGSW5kZXggcHJlZmVycmVkVGl0bGVzQ291bnQgPSBDRkFycmF5R2V0Q291bnQodGl0bGVz
Rm9yUHJlZmVycmVkTGFuZ3VhZ2VzLmdldCgpKTsKKyAgICBpZiAocHJlZmVycmVkVGl0bGVzQ291
bnQpIHsKKyAgICAgICAgQVZDRk1ldGFkYXRhSXRlbVJlZiB0aXRsZU1ldGFkYXRhID0gc3RhdGlj
X2Nhc3Q8QVZDRk1ldGFkYXRhSXRlbVJlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleCh0aXRsZXNG
b3JQcmVmZXJyZWRMYW5ndWFnZXMuZ2V0KCksIDApKTsKKyAgICAgICAgdGl0bGUgPSBhZG9wdENG
KEFWQ0ZNZXRhZGF0YUl0ZW1Db3B5U3RyaW5nVmFsdWUodGl0bGVNZXRhZGF0YSkpOworICAgIH0K
KworICAgIGlmICghdGl0bGUpIHsKKyAgICAgICAgQVZDRk1ldGFkYXRhSXRlbVJlZiB0aXRsZU1l
dGFkYXRhID0gc3RhdGljX2Nhc3Q8QVZDRk1ldGFkYXRhSXRlbVJlZj4oQ0ZBcnJheUdldFZhbHVl
QXRJbmRleCh0aXRsZXMuZ2V0KCksIDApKTsKKyAgICAgICAgdGl0bGUgPSBhZG9wdENGKEFWQ0ZN
ZXRhZGF0YUl0ZW1Db3B5U3RyaW5nVmFsdWUodGl0bGVNZXRhZGF0YSkpOworICAgIH0KKworICAg
IHJldHVybiB0aXRsZSA/IEF0b21pY1N0cmluZyh0aXRsZS5nZXQoKSkgOiBlbXB0eUF0b207Cit9
CisKK0F0b21pY1N0cmluZyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRjo6bGFuZ3VhZ2UoKSBj
b25zdAoreworICAgIGlmICghbV9tZWRpYVNlbGVjdGlvbk9wdGlvbikKKyAgICAgICAgcmV0dXJu
IGVtcHR5QXRvbTsKKworICAgIFJldGFpblB0cjxDRkxvY2FsZVJlZj4gbG9jYWxlID0gYWRvcHRD
RihBVkNGTWVkaWFTZWxlY3Rpb25PcHRpb25Db3B5TG9jYWxlKG1lZGlhU2VsZWN0aW9uT3B0aW9u
KCkpKTsKKyAgICByZXR1cm4gQ0ZMb2NhbGVHZXRJZGVudGlmaWVyKGxvY2FsZS5nZXQoKSk7Cit9
CisKK2Jvb2wgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0Y6OmlzRGVmYXVsdCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2Nm
L0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0luYmFuZFRleHRUcmFja1ByaXZh
dGVBVkNGLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vY2YvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0YuaAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBJbmJhbmRUZXh0VHJhY2tQ
cml2YXRlQVZDRl9oCisjZGVmaW5lIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGX2gKKworI2lm
IFBMQVRGT1JNKFdJTikgJiYgRU5BQkxFKFZJREVPKSAmJiBIQVZFKEFWRk9VTkRBVElPTl9NRURJ
QV9TRUxFQ1RJT05fR1JPVVApCisKKyNpbmNsdWRlICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZG
LmgiCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCisjaW5jbHVkZSA8QVZGb3VuZGF0aW9u
Q0YvQVZDRlBsYXllckl0ZW0uaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBJbmJh
bmRUZXh0VHJhY2tQcml2YXRlQVZDRiA6IHB1YmxpYyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZG
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRl
QVZDRj4gY3JlYXRlKEFWRkluYmFuZFRyYWNrUGFyZW50KiBwbGF5ZXIsICBBVkNGTWVkaWFTZWxl
Y3Rpb25PcHRpb25SZWYgc2VsZWN0aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRihwbGF5ZXIsIHNlbGVjdGlvbikpOworICAg
IH0KKworICAgIH5JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRigpIHsgfQorCisgICAgdmlydHVh
bCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpLaW5kIGtpbmQoKSBjb25zdCBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIGJvb2wgaXNDbG9zZWRDYXB0aW9ucygpIGNvbnN0IE9WRVJSSURFOworICAgIHZp
cnR1YWwgYm9vbCBpc1NESCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBjb250
YWluc09ubHlGb3JjZWRTdWJ0aXRsZXMoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJv
b2wgaXNNYWluUHJvZ3JhbUNvbnRlbnQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJv
b2wgaXNFYXN5VG9SZWFkKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBBdG9taWNTdHJp
bmcgbGFiZWwoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEF0b21pY1N0cmluZyBsYW5n
dWFnZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBpc0RlZmF1bHQoKSBjb25z
dCBPVkVSUklERTsKKworICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0KCkgT1ZFUlJJREU7CisK
KyAgICB2aXJ0dWFsIGJvb2wgaXNMZWdhY3lDbG9zZWRDYXB0aW9uc1RyYWNrKCkgY29uc3QgT1ZF
UlJJREUgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIEFWQ0ZNZWRpYVNlbGVjdGlvbk9wdGlvblJl
ZiBtZWRpYVNlbGVjdGlvbk9wdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFTZWxlY3Rpb25P
cHRpb24uZ2V0KCk7IH0KKworcHJvdGVjdGVkOgorICAgIEluYmFuZFRleHRUcmFja1ByaXZhdGVB
VkNGKEFWRkluYmFuZFRyYWNrUGFyZW50KiwgQVZDRk1lZGlhU2VsZWN0aW9uT3B0aW9uUmVmKTsK
KyAgICAKKyAgICBSZXRhaW5QdHI8QVZDRk1lZGlhU2VsZWN0aW9uT3B0aW9uUmVmPiBtX21lZGlh
U2VsZWN0aW9uT3B0aW9uOworfTsKKworfQorCisjZW5kaWYKKyNlbmRpZgpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0luYmFuZFRleHRUcmFj
a1ByaXZhdGVMZWdhY3lBVkNGLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2Fj
eUFWQ0YuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL2NmL0luYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEyOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikgJiYgIUhBVkUo
QVZGT1VOREFUSU9OX0xFR0lCTEVfT1VUUFVUX1NVUFBPUlQpICYmICFQTEFURk9STShJT1MpCisK
KyNpbmNsdWRlICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZDRi5oIgorCisjaW5jbHVk
ZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNp
bmNsdWRlICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5oIgorI2luY2x1ZGUgIlNv
ZnRMaW5raW5nLmgiCisKKyNpbmNsdWRlIDxBVkZvdW5kYXRpb25DRi9BVkZvdW5kYXRpb25DRi5o
PgorCisjaW5jbHVkZSA8ZDNkOS5oPgorCisvLyBUaGUgc29mdGxpbmsgaGVhZGVyIGZpbGVzIG11
c3QgYmUgaW5jbHVkZWQgYWZ0ZXIgdGhlIEFWQ0YgYW5kIENvcmVNZWRpYSBoZWFkZXIgZmlsZXMu
CisjaW5jbHVkZSAiQVZGb3VuZGF0aW9uQ0ZTb2Z0TGlua2luZy5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK0luYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGOjpJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlTGVnYWN5QVZDRihNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRiogcGxh
eWVyLCBBVkNGUGxheWVySXRlbVRyYWNrUmVmIHRyYWNrKQorICAgIDogSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUFWRihwbGF5ZXIpCisgICAgLCBtX3BsYXllckl0ZW1UcmFjayh0cmFjaykKK3sKK30K
Kwordm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZDRjo6ZGlzY29ubmVjdCgpCit7
CisgICAgbV9wbGF5ZXJJdGVtVHJhY2sgPSAwOworICAgIEluYmFuZFRleHRUcmFja1ByaXZhdGVB
VkY6OmRpc2Nvbm5lY3QoKTsKK30KKworSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6S2luZCBJbmJh
bmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZDRjo6a2luZCgpIGNvbnN0Cit7CisgICAgaWYgKCFt
X3BsYXllckl0ZW1UcmFjaykKKyAgICAgICAgcmV0dXJuIEluYmFuZFRleHRUcmFja1ByaXZhdGU6
Ok5vbmU7CisKKyAgICByZXR1cm4gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6Q2FwdGlvbnM7Cit9
CisKK2Jvb2wgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0Y6OmlzQ2xvc2VkQ2FwdGlv
bnMoKSBjb25zdAoreworICAgIHJldHVybiBtX3BsYXllckl0ZW1UcmFjazsKK30KKworYm9vbCBJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZDRjo6Y29udGFpbnNPbmx5Rm9yY2VkU3VidGl0
bGVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUxlZ2FjeUFWQ0Y6OmlzTWFpblByb2dyYW1Db250ZW50KCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9wbGF5ZXJJdGVtVHJhY2s7Cit9CisKK2Jvb2wgSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUxlZ2FjeUFWQ0Y6OmlzRWFzeVRvUmVhZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCitBdG9taWNTdHJpbmcgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0Y6Omxh
YmVsKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcGxheWVySXRlbVRyYWNrKQorICAgICAgICByZXR1
cm4gZW1wdHlBdG9tOworCisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB0aXRsZTsKKworICAg
IFJldGFpblB0cjxBVkNGQXNzZXRUcmFja1JlZj4gYXNzZXRUcmFjayA9IGFkb3B0Q0YoQVZDRlBs
YXllckl0ZW1UcmFja0NvcHlBc3NldFRyYWNrKG1fcGxheWVySXRlbVRyYWNrLmdldCgpKSk7Cisg
ICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGNvbW1vbk1ldGFEYXRhID0gYWRvcHRDRihBVkNGQXNz
ZXRUcmFja0NvcHlDb21tb25NZXRhZGF0YShhc3NldFRyYWNrLmdldCgpKSk7CisgICAgUmV0YWlu
UHRyPENGQXJyYXlSZWY+IHRpdGxlcyA9IGFkb3B0Q0YoQVZDRk1ldGFkYXRhSXRlbUNvcHlJdGVt
c1dpdGhLZXlBbmRLZXlTcGFjZShjb21tb25NZXRhRGF0YS5nZXQoKSwgQVZDRk1ldGFkYXRhQ29t
bW9uS2V5VGl0bGUsIEFWQ0ZNZXRhZGF0YUtleVNwYWNlQ29tbW9uKSk7CisgICAgQ0ZJbmRleCB0
aXRsZXNDb3VudCA9IENGQXJyYXlHZXRDb3VudCh0aXRsZXMuZ2V0KCkpOworICAgIGlmICh0aXRs
ZXNDb3VudCkgeworICAgICAgICBSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+IGN1cnJlbnRMb2NhbGUg
PSBhZG9wdENGKENGTG9jYWxlQ29weUN1cnJlbnQoKSk7CisgICAgICAgIFJldGFpblB0cjxDRkFy
cmF5UmVmPiB0aXRsZXNGb3JQcmVmZXJyZWRMYW5ndWFnZXMgPSBhZG9wdENGKEFWQ0ZNZXRhZGF0
YUl0ZW1Db3B5SXRlbXNXaXRoTG9jYWxlKHRpdGxlcy5nZXQoKSwgY3VycmVudExvY2FsZS5nZXQo
KSkpOworICAgICAgICBDRkluZGV4IHByZWZlcnJlZFRpdGxlc0NvdW50ID0gQ0ZBcnJheUdldENv
dW50KHRpdGxlc0ZvclByZWZlcnJlZExhbmd1YWdlcy5nZXQoKSk7CisgICAgICAgIGlmIChwcmVm
ZXJyZWRUaXRsZXNDb3VudCkgeworICAgICAgICAgICAgQVZDRk1ldGFkYXRhSXRlbVJlZiB0aXRs
ZU1ldGFkYXRhID0gc3RhdGljX2Nhc3Q8QVZDRk1ldGFkYXRhSXRlbVJlZj4oQ0ZBcnJheUdldFZh
bHVlQXRJbmRleCh0aXRsZXNGb3JQcmVmZXJyZWRMYW5ndWFnZXMuZ2V0KCksIDApKTsKKyAgICAg
ICAgICAgIHRpdGxlID0gYWRvcHRDRihBVkNGTWV0YWRhdGFJdGVtQ29weVN0cmluZ1ZhbHVlKHRp
dGxlTWV0YWRhdGEpKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghdGl0bGUpIHsKKyAgICAg
ICAgICAgIEFWQ0ZNZXRhZGF0YUl0ZW1SZWYgdGl0bGVNZXRhZGF0YSA9IHN0YXRpY19jYXN0PEFW
Q0ZNZXRhZGF0YUl0ZW1SZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgodGl0bGVzLmdldCgpLCAw
KSk7CisgICAgICAgICAgICB0aXRsZSA9IGFkb3B0Q0YoQVZDRk1ldGFkYXRhSXRlbUNvcHlTdHJp
bmdWYWx1ZSh0aXRsZU1ldGFkYXRhKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4g
dGl0bGUgPyBBdG9taWNTdHJpbmcodGl0bGUuZ2V0KCkpIDogZW1wdHlBdG9tOworfQorCitBdG9t
aWNTdHJpbmcgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0Y6Omxhbmd1YWdlKCkgY29u
c3QKK3sKKyAgICBpZiAoIW1fcGxheWVySXRlbVRyYWNrKQorICAgICAgICByZXR1cm4gZW1wdHlB
dG9tOworCisgICAgUmV0YWluUHRyPEFWQ0ZBc3NldFRyYWNrUmVmPiBhc3NldFRyYWNrID0gYWRv
cHRDRihBVkNGUGxheWVySXRlbVRyYWNrQ29weUFzc2V0VHJhY2sobV9wbGF5ZXJJdGVtVHJhY2su
Z2V0KCkpKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGxhbmd1YWdlQ29kZSA9IGFkb3B0
Q0YoQVZDRkFzc2V0VHJhY2tDb3B5TGFuZ3VhZ2VDb2RlKGFzc2V0VHJhY2suZ2V0KCkpKTsKKyAg
ICBSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+IGxvY2FsZSA9IGFkb3B0Q0YoQ0ZMb2NhbGVDcmVhdGUo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgbGFuZ3VhZ2VDb2RlLmdldCgpKSk7CisgICAgcmV0dXJuIENG
TG9jYWxlR2V0SWRlbnRpZmllcihsb2NhbGUuZ2V0KCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL2NmL0luYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2Nm
L0luYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGLmgJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUxlZ2FjeUFWQ0YuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcyIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBV
VEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVU
RVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2lmbmRlZiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZDRl9oCisjZGVm
aW5lIEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGX2gKKworI2lmIEVOQUJMRShWSURF
TykgJiYgVVNFKEFWRk9VTkRBVElPTikgJiYgIUhBVkUoQVZGT1VOREFUSU9OX0xFR0lCTEVfT1VU
UFVUX1NVUFBPUlQpICYmICFQTEFURk9STShJT1MpCisKKyNpbmNsdWRlICJJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlQVZGLmgiCisjaW5jbHVkZSA8QVZGb3VuZGF0aW9uQ0YvQVZDRlBsYXllckl0ZW1U
cmFjay5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjsKKworY2xhc3MgSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0YgOiBwdWJsaWMgSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUFWRiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUxlZ2FjeUFWQ0Y+IGNyZWF0ZShNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25D
RiogcGxheWVyLCBBVkNGUGxheWVySXRlbVRyYWNrUmVmIHRyYWNrKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZDRihwbGF5
ZXIsIHRyYWNrKSk7CisgICAgfQorCisgICAgfkluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lB
VkNGKCkgeyB9CisKKyAgICB2aXJ0dWFsIEluYmFuZFRleHRUcmFja1ByaXZhdGU6OktpbmQga2lu
ZCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBpc0Nsb3NlZENhcHRpb25zKCkg
Y29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGNvbnRhaW5zT25seUZvcmNlZFN1YnRp
dGxlcygpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBpc01haW5Qcm9ncmFtQ29u
dGVudCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBpc0Vhc3lUb1JlYWQoKSBj
b25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEF0b21pY1N0cmluZyBsYWJlbCgpIGNvbnN0IE9W
RVJSSURFOworICAgIHZpcnR1YWwgQXRvbWljU3RyaW5nIGxhbmd1YWdlKCkgY29uc3QgT1ZFUlJJ
REU7CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdCgpIE9WRVJSSURFOworCisgICAgdmly
dHVhbCBib29sIGlzTGVnYWN5Q2xvc2VkQ2FwdGlvbnNUcmFjaygpIGNvbnN0IE9WRVJSSURFIHsg
cmV0dXJuIHRydWU7IH0KKworICAgIEFWQ0ZQbGF5ZXJJdGVtVHJhY2tSZWYgYXZQbGF5ZXJJdGVt
VHJhY2soKSBjb25zdCB7IHJldHVybiBtX3BsYXllckl0ZW1UcmFjay5nZXQoKTsgfQorCitwcm90
ZWN0ZWQ6CisgICAgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0YoTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uQ0YqLCBBVkNGUGxheWVySXRlbVRyYWNrUmVmKTsKKyAgICAKKyAg
ICBSZXRhaW5QdHI8QVZDRlBsYXllckl0ZW1UcmFja1JlZj4gbV9wbGF5ZXJJdGVtVHJhY2s7Cit9
OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoVklERU8pICYmIFVTRShBVkZPVU5EQVRJT04pICYm
ICFIQVZFKEFWRk9VTkRBVElPTl9MRUdJQkxFX09VVFBVVF9TVVBQT1JUKSAmJiAhUExBVEZPUk0o
SU9TKQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2Nm
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcAkocmV2aXNpb24gMTUyNzkzKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjUsNyArMjUsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKLSNpZiBQTEFURk9STShX
SU4pJiYgRU5BQkxFKFZJREVPKSAKKyNpZiBQTEFURk9STShXSU4pICYmIEVOQUJMRShWSURFTykg
CiAKICNpZiBVU0UoQVZGT1VOREFUSU9OKQogCkBAIC0zNiwxMiArMzYsMTUgQEAKICNpbmNsdWRl
ICJGbG9hdENvbnZlcnNpb24uaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRi5o
IgogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUGxh
dGZvcm1DQUxheWVyLmgiCiAjaW5jbHVkZSAiU29mdExpbmtpbmcuaCIKICNpbmNsdWRlICJUaW1l
UmFuZ2VzLmgiCiAKKyNpbmNsdWRlIDxBVkZvdW5kYXRpb25DRi9BVkNGUGxheWVySXRlbS5oPgor
I2luY2x1ZGUgPEFWRm91bmRhdGlvbkNGL0FWQ0ZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1dC5oPgog
I2luY2x1ZGUgPEFWRm91bmRhdGlvbkNGL0FWQ0ZQbGF5ZXJMYXllci5oPgogI2luY2x1ZGUgPEFW
Rm91bmRhdGlvbkNGL0FWRm91bmRhdGlvbkNGLmg+CiAjaW5jbHVkZSA8Q29yZU1lZGlhL0NvcmVN
ZWRpYS5oPgpAQCAtNDksNiArNTIsNyBAQAogI2luY2x1ZGUgPGRlbGF5aW1wLmg+CiAjaW5jbHVk
ZSA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKIC8v
IFRoZSBzb2Z0bGluayBoZWFkZXIgZmlsZXMgbXVzdCBiZSBpbmNsdWRlZCBhZnRlciB0aGUgQVZD
RiBhbmQgQ29yZU1lZGlhIGhlYWRlciBmaWxlcy4KQEAgLTk1LDYgKzk5LDEzIEBAIHB1YmxpYzoK
ICAgICAKICAgICB2b2lkIHNlZWtUb1RpbWUoZmxvYXQpOwogCisgICAgdm9pZCBzZXRDdXJyZW50
VHJhY2soSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRiopOworICAgIEluYmFuZFRleHRUcmFja1By
aXZhdGVBVkYqIGN1cnJlbnRUcmFjaygpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudFRyYWNrOyB9
CisKKyNpZiBIQVZFKEFWRk9VTkRBVElPTl9NRURJQV9TRUxFQ1RJT05fR1JPVVApICYmIEhBVkUo
QVZGT1VOREFUSU9OX0xFR0lCTEVfT1VUUFVUX1NVUFBPUlQpCisgICAgc3RhdGljIHZvaWQgbGVn
aWJsZU91dHB1dENhbGxiYWNrKHZvaWQqIGNvbnRleHQsIEFWQ0ZQbGF5ZXJJdGVtTGVnaWJsZU91
dHB1dFJlZiwgQ0ZBcnJheVJlZiBhdHRyaWJ1dGVkU3RyaW5nLCBDRkFycmF5UmVmIG5hdGl2ZVNh
bXBsZUJ1ZmZlcnMsIENNVGltZSBpdGVtVGltZSk7CisgICAgc3RhdGljIHZvaWQgcHJvY2Vzc0N1
ZSh2b2lkKiBjb250ZXh0KTsKKyNlbmRpZgogICAgIHN0YXRpYyB2b2lkIGxvYWRNZXRhZGF0YUNv
bXBsZXRpb25DYWxsYmFjayhBVkNGQXNzZXRSZWYsIHZvaWQqKTsKICAgICBzdGF0aWMgdm9pZCBs
b2FkUGxheWFibGVDb21wbGV0aW9uQ2FsbGJhY2soQVZDRkFzc2V0UmVmLCB2b2lkKik7CiAgICAg
c3RhdGljIHZvaWQgcGVyaW9kaWNUaW1lT2JzZXJ2ZXJDYWxsYmFjayhBVkNGUGxheWVyUmVmLCBD
TVRpbWUsIHZvaWQqKTsKQEAgLTEwNyw2ICsxMTgsMTAgQEAgcHVibGljOgogICAgIGlubGluZSBB
VkNGUGxheWVySXRlbVJlZiBhdlBsYXllckl0ZW0oKSBjb25zdCB7IHJldHVybiAoQVZDRlBsYXll
ckl0ZW1SZWYpbV9hdlBsYXllckl0ZW0uZ2V0KCk7IH0KICAgICBpbmxpbmUgQVZDRlBsYXllck9i
c2VydmVyUmVmIHRpbWVPYnNlcnZlcigpIGNvbnN0IHsgcmV0dXJuIChBVkNGUGxheWVyT2JzZXJ2
ZXJSZWYpbV90aW1lT2JzZXJ2ZXIuZ2V0KCk7IH0KICAgICBpbmxpbmUgQVZDRkFzc2V0SW1hZ2VH
ZW5lcmF0b3JSZWYgaW1hZ2VHZW5lcmF0b3IoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlR2VuZXJh
dG9yLmdldCgpOyB9CisjaWYgSEFWRShBVkZPVU5EQVRJT05fTUVESUFfU0VMRUNUSU9OX0dST1VQ
KSAmJiBIQVZFKEFWRk9VTkRBVElPTl9MRUdJQkxFX09VVFBVVF9TVVBQT1JUKQorICAgIGlubGlu
ZSBBVkNGUGxheWVySXRlbUxlZ2libGVPdXRwdXRSZWYgbGVnaWJsZU91dHB1dCgpIGNvbnN0IHsg
cmV0dXJuIG1fbGVnaWJsZU91dHB1dC5nZXQoKTsgfQorICAgIEFWQ0ZNZWRpYVNlbGVjdGlvbkdy
b3VwUmVmIHNhZmVNZWRpYVNlbGVjdGlvbkdyb3VwRm9yTGVnaWJsZU1lZGlhKCkgY29uc3Q7Cisj
ZW5kaWYKICAgICBpbmxpbmUgZGlzcGF0Y2hfcXVldWVfdCBkaXNwYXRjaFF1ZXVlKCkgY29uc3Qg
eyByZXR1cm4gbV9ub3RpZmljYXRpb25RdWV1ZTsgfQogCiBwcml2YXRlOgpAQCAtMTMxLDYgKzE0
NiwxMCBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxBVkNGUGxheWVyTGF5ZXJSZWY+IG1fYXZD
RlZpZGVvTGF5ZXI7CiAgICAgUmV0YWluUHRyPEFWQ0ZQbGF5ZXJPYnNlcnZlclJlZj4gbV90aW1l
T2JzZXJ2ZXI7CiAgICAgUmV0YWluUHRyPEFWQ0ZBc3NldEltYWdlR2VuZXJhdG9yUmVmPiBtX2lt
YWdlR2VuZXJhdG9yOworI2lmIEhBVkUoQVZGT1VOREFUSU9OX01FRElBX1NFTEVDVElPTl9HUk9V
UCkgJiYgSEFWRShBVkZPVU5EQVRJT05fTEVHSUJMRV9PVVRQVVRfU1VQUE9SVCkKKyAgICBSZXRh
aW5QdHI8QVZDRlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0UmVmPiBtX2xlZ2libGVPdXRwdXQ7Cisg
ICAgUmV0YWluUHRyPEFWQ0ZNZWRpYVNlbGVjdGlvbkdyb3VwUmVmPiBtX3NlbGVjdGlvbkdyb3Vw
OworI2VuZGlmCiAgICAgZGlzcGF0Y2hfcXVldWVfdCBtX25vdGlmaWNhdGlvblF1ZXVlOwogCiAg
ICAgbXV0YWJsZSBSZXRhaW5QdHI8Q0FDRkxheWVyUmVmPiBtX2NhVmlkZW9MYXllcjsKQEAgLTEz
OCw2ICsxNTcsOCBAQCBwcml2YXRlOgogCiAgICAgT3duUHRyPExheWVyQ2xpZW50PiBtX2xheWVy
Q2xpZW50OwogICAgIENPTVB0cjxJRGlyZWN0M0REZXZpY2U5RXg+IG1fZDNkRGV2aWNlOworCisg
ICAgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRiogbV9jdXJyZW50VHJhY2s7CiB9OwogCiB1aW50
cHRyX3QgQVZGV3JhcHBlcjo6c19uZXh0QVZGV3JhcHBlck9iamVjdElEOwpAQCAtMTgyLDcgKzIw
Myw4IEBAIHN0YXRpYyBDRkFycmF5UmVmIGNyZWF0ZU1ldGFkYXRhS2V5TmFtZXMKICAgICAgICAg
QVZDRkFzc2V0UHJvcGVydHlQcmVmZXJyZWRUcmFuc2Zvcm0sCiAgICAgICAgIEFWQ0ZBc3NldFBy
b3BlcnR5UHJlZmVycmVkUmF0ZSwKICAgICAgICAgQVZDRkFzc2V0UHJvcGVydHlQbGF5YWJsZSwK
LSAgICAgICAgQVZDRkFzc2V0UHJvcGVydHlUcmFja3MgCisgICAgICAgIEFWQ0ZBc3NldFByb3Bl
cnR5VHJhY2tzLAorICAgICAgICBBVkNGQXNzZXRQcm9wZXJ0eUF2YWlsYWJsZU1lZGlhQ2hhcmFj
dGVyaXN0aWNzV2l0aE1lZGlhU2VsZWN0aW9uT3B0aW9ucwogICAgIH07CiAgICAgCiAgICAgcmV0
dXJuIENGQXJyYXlDcmVhdGUoMCwgKGNvbnN0IHZvaWQqKilrZXlOYW1lcywgc2l6ZW9mKGtleU5h
bWVzKSAvIHNpemVvZihrZXlOYW1lc1swXSksICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpOwpAQCAt
MjQyLDYgKzI2NCwxOCBAQCBpbmxpbmUgQVZDRkFzc2V0SW1hZ2VHZW5lcmF0b3JSZWYgaW1hZ2VH
CiAgICAgcmV0dXJuIHdyYXBwZXIgPyB3cmFwcGVyLT5pbWFnZUdlbmVyYXRvcigpIDogMDsgCiB9
CiAKKyNpZiBIQVZFKEFWRk9VTkRBVElPTl9NRURJQV9TRUxFQ1RJT05fR1JPVVApICYmIEhBVkUo
QVZGT1VOREFUSU9OX0xFR0lCTEVfT1VUUFVUX1NVUFBPUlQpCitpbmxpbmUgQVZDRlBsYXllckl0
ZW1MZWdpYmxlT3V0cHV0UmVmIGF2TGVnaWJsZU91dHB1dChBVkZXcmFwcGVyKiB3cmFwcGVyKQor
eworICAgIHJldHVybiB3cmFwcGVyID8gd3JhcHBlci0+bGVnaWJsZU91dHB1dCgpIDogMDsKK30K
KworaW5saW5lIEFWQ0ZNZWRpYVNlbGVjdGlvbkdyb3VwUmVmIHNhZmVNZWRpYVNlbGVjdGlvbkdy
b3VwRm9yTGVnaWJsZU1lZGlhKEFWRldyYXBwZXIqIHdyYXBwZXIpCit7CisgICAgcmV0dXJuIHdy
YXBwZXIgPyB3cmFwcGVyLT5zYWZlTWVkaWFTZWxlY3Rpb25Hcm91cEZvckxlZ2libGVNZWRpYSgp
IDogMDsKK30KKyNlbmRpZgorCiBQYXNzT3duUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFj
ZT4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OmNyZWF0ZShNZWRpYVBsYXllciog
cGxheWVyKSAKIHsgCiAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25DRihwbGF5ZXIpKTsKQEAgLTI3Nyw2ICszMTEsOCBAQCB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpjCiAKICAgICB0ZWFyRG93blZpZGVvUmVuZGVyaW5n
KCk7CiAKKyAgICBjbGVhclRleHRUcmFja3MoKTsKKwogICAgIGlmIChtX2F2ZldyYXBwZXIpIHsK
ICAgICAgICAgLy8gVGhlIEFWQ0Ygb2JqZWN0cyBoYXZlIHRvIGJlIGRlc3Ryb3llZCBvbiB0aGUg
c2FtZSBkaXNwYXRjaCBxdWV1ZSB1c2VkIGZvciBub3RpZmljYXRpb25zLCBzbyBzY2hlZHVsZSBh
IGNhbGwgdG8gCiAgICAgICAgIC8vIGRpc2Nvbm5lY3RBbmREZWxldGVBVkZXcmFwcGVyIG9uIHRo
YXQgcXVldWUuIApAQCAtMzM1LDYgKzM3MSwzMSBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbkNGOjpoCiAgICAgcmV0dXJuIChtX3ZpZGVvRnJhbWVIYXNEcmF3biB8fCAodmlk
ZW9MYXllcihtX2F2ZldyYXBwZXIpICYmIEFWQ0ZQbGF5ZXJMYXllcklzUmVhZHlGb3JEaXNwbGF5
KHZpZGVvTGF5ZXIobV9hdmZXcmFwcGVyKSkpKTsKIH0KIAordm9pZCBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25DRjo6c2V0Q3VycmVudFRyYWNrKEluYmFuZFRleHRUcmFja1ByaXZhdGVB
VkYqIHRyYWNrKQoreworICAgIGlmIChtX2F2ZldyYXBwZXIpCisgICAgICAgIG1fYXZmV3JhcHBl
ci0+c2V0Q3VycmVudFRyYWNrKHRyYWNrKTsKK30KKworSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFW
RiogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OmN1cnJlbnRUcmFjaygpIGNvbnN0
Cit7CisgICAgaWYgKG1fYXZmV3JhcHBlcikKKyAgICAgICAgcmV0dXJuIG1fYXZmV3JhcHBlci0+
Y3VycmVudFRyYWNrKCk7CisKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25DRjo6Y3JlYXRlQVZBc3NldEZvclVSTChjb25zdCBTdHJpbmcmIHVy
bCkKK3sKKyAgICBBU1NFUlQoIW1fYXZmV3JhcHBlcik7CisKKyAgICBzZXREZWxheUNhbGxiYWNr
cyh0cnVlKTsKKworICAgIG1fYXZmV3JhcHBlciA9IG5ldyBBVkZXcmFwcGVyKHRoaXMpOworICAg
IG1fYXZmV3JhcHBlci0+Y3JlYXRlQXNzZXRGb3JVUkwodXJsKTsKKyAgICBzZXREZWxheUNhbGxi
YWNrcyhmYWxzZSk7Cit9CisKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6
OmNyZWF0ZUFWUGxheWVyKCkKIHsKICAgICBBU1NFUlQobV9hdmZXcmFwcGVyKTsKQEAgLTM1MCwx
NyArNDExLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6YwogICAg
IAogICAgIHNldERlbGF5Q2FsbGJhY2tzKHRydWUpOwogICAgIG1fYXZmV3JhcHBlci0+Y3JlYXRl
UGxheWVySXRlbSgpOwotICAgIHNldERlbGF5Q2FsbGJhY2tzKGZhbHNlKTsKLX0KIAotdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6Y3JlYXRlQVZBc3NldEZvclVSTChjb25z
dCBTdHJpbmcmIHVybCkKLXsKLSAgICBBU1NFUlQoIW1fYXZmV3JhcHBlcik7Ci0KLSAgICBzZXRE
ZWxheUNhbGxiYWNrcyh0cnVlKTsKLQotICAgIG1fYXZmV3JhcHBlciA9IG5ldyBBVkZXcmFwcGVy
KHRoaXMpOwotICAgIG1fYXZmV3JhcHBlci0+Y3JlYXRlQXNzZXRGb3JVUkwodXJsKTsKICAgICBz
ZXREZWxheUNhbGxiYWNrcyhmYWxzZSk7CiB9CiAKQEAgLTQ0NiwzNCArNDk3LDI3IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnAKICAgICBzZXREZWxheUNhbGxiYWNr
cyhmYWxzZSk7CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnVw
ZGF0ZVJhdGUoKQotewotICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbkNGOjp1cGRhdGVSYXRlKCVwKSIsIHRoaXMpOwotICAgIGlmICghbWV0YURhdGFBdmFpbGFi
bGUoKSB8fCAhYXZQbGF5ZXIobV9hdmZXcmFwcGVyKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
c2V0RGVsYXlDYWxsYmFja3ModHJ1ZSk7Ci0gICAgQVZDRlBsYXllclNldFJhdGUoYXZQbGF5ZXIo
bV9hdmZXcmFwcGVyKSwgcmVxdWVzdGVkUmF0ZSgpKTsKLSAgICBzZXREZWxheUNhbGxiYWNrcyhm
YWxzZSk7Ci19Ci0KIGZsb2F0IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpwbGF0
Zm9ybUR1cmF0aW9uKCkgY29uc3QKIHsKICAgICBpZiAoIW1ldGFEYXRhQXZhaWxhYmxlKCkgfHwg
IWF2QXNzZXQobV9hdmZXcmFwcGVyKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBmbG9hdCBk
dXJhdGlvbjsKLSAgICBDTVRpbWUgY21EdXJhdGlvbiA9IEFWQ0ZBc3NldEdldER1cmF0aW9uKGF2
QXNzZXQobV9hdmZXcmFwcGVyKSk7CisgICAgQ01UaW1lIGNtRHVyYXRpb247CisKKyAgICAvLyBD
aGVjayB0aGUgQVZJdGVtIGlmIHdlIGhhdmUgb25lIGFuZCBpdCBoYXMgbG9hZGVkIGR1cmF0aW9u
LCBzb21lIGFzc2V0cyBuZXZlciByZXBvcnQgZHVyYXRpb24uCisgICAgaWYgKGF2UGxheWVySXRl
bShtX2F2ZldyYXBwZXIpICYmIHBsYXllckl0ZW1TdGF0dXMoKSA+PSBNZWRpYVBsYXllckFWUGxh
eWVySXRlbVN0YXR1c1JlYWR5VG9QbGF5KQorICAgICAgICBjbUR1cmF0aW9uID0gQVZDRlBsYXll
ckl0ZW1HZXREdXJhdGlvbihhdlBsYXllckl0ZW0obV9hdmZXcmFwcGVyKSk7CisgICAgZWxzZQor
ICAgICAgICBjbUR1cmF0aW9uID0gQVZDRkFzc2V0R2V0RHVyYXRpb24oYXZBc3NldChtX2F2Zldy
YXBwZXIpKTsKKwogICAgIGlmIChDTVRJTUVfSVNfTlVNRVJJQyhjbUR1cmF0aW9uKSkKLSAgICAg
ICAgZHVyYXRpb24gPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KENNVGltZUdldFNlY29uZHMoY21E
dXJhdGlvbikpOwotICAgIGVsc2UgaWYgKENNVElNRV9JU19JTkRFRklOSVRFKGNtRHVyYXRpb24p
KQotICAgICAgICBkdXJhdGlvbiA9IG51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKTsK
LSAgICBlbHNlIHsKLSAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGTWFj
OjpkdXJhdGlvbiglcCkgLSBpbnZhbGlkIGR1cmF0aW9uLCByZXR1cm5pbmcgMCIsIHRoaXMpOwot
ICAgICAgICByZXR1cm4gMDsKLSAgICB9CisgICAgICAgIHJldHVybiBuYXJyb3dQcmVjaXNpb25U
b0Zsb2F0KENNVGltZUdldFNlY29uZHMoY21EdXJhdGlvbikpOworCisgICAgaWYgKENNVElNRV9J
U19JTkRFRklOSVRFKGNtRHVyYXRpb24pKQorICAgICAgICByZXR1cm4gbnVtZXJpY19saW1pdHM8
ZmxvYXQ+OjppbmZpbml0eSgpOwogCi0gICAgcmV0dXJuIGR1cmF0aW9uOworICAgIExPRyhNZWRp
YSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpwbGF0Zm9ybUR1cmF0aW9uKCVw
KSAtIGludmFsaWQgZHVyYXRpb24sIHJldHVybmluZyAlLjBmIiwgdGhpcywgc3RhdGljX2Nhc3Q8
ZmxvYXQ+KE1lZGlhUGxheWVyOjppbnZhbGlkVGltZSgpKSk7CisgICAgcmV0dXJuIHN0YXRpY19j
YXN0PGZsb2F0PihNZWRpYVBsYXllcjo6aW52YWxpZFRpbWUoKSk7CiB9CiAKIGZsb2F0IE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpjdXJyZW50VGltZSgpIGNvbnN0CkBAIC00ODMs
NyArNTI3LDcgQEAgZmxvYXQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OgogCiAg
ICAgQ01UaW1lIGl0ZW1UaW1lID0gQVZDRlBsYXllckl0ZW1HZXRDdXJyZW50VGltZShhdlBsYXll
ckl0ZW0obV9hdmZXcmFwcGVyKSk7CiAgICAgaWYgKENNVElNRV9JU19OVU1FUklDKGl0ZW1UaW1l
KSkKLSAgICAgICAgcmV0dXJuIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoQ01UaW1lR2V0U2Vjb25k
cyhpdGVtVGltZSkpOworICAgICAgICByZXR1cm4gbWF4KG5hcnJvd1ByZWNpc2lvblRvRmxvYXQo
Q01UaW1lR2V0U2Vjb25kcyhpdGVtVGltZSkpLCAwLjBmKTsKIAogICAgIHJldHVybiAwOwogfQpA
QCAtNTE2LDYgKzU2MCwxNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNG
OjpzCiAgICAgQVZDRlBsYXllclNldENsb3NlZENhcHRpb25EaXNwbGF5RW5hYmxlZChhdlBsYXll
cihtX2F2ZldyYXBwZXIpLCBjbG9zZWRDYXB0aW9uc1Zpc2libGUpOwogfQogCit2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjp1cGRhdGVSYXRlKCkKK3sKKyAgICBMT0coTWVk
aWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6dXBkYXRlUmF0ZSglcCkiLCB0
aGlzKTsKKyAgICBpZiAoIW1ldGFEYXRhQXZhaWxhYmxlKCkgfHwgIWF2UGxheWVyKG1fYXZmV3Jh
cHBlcikpCisgICAgICAgIHJldHVybjsKKworICAgIHNldERlbGF5Q2FsbGJhY2tzKHRydWUpOwor
ICAgIEFWQ0ZQbGF5ZXJTZXRSYXRlKGF2UGxheWVyKG1fYXZmV3JhcHBlciksIHJlcXVlc3RlZFJh
dGUoKSk7CisgICAgc2V0RGVsYXlDYWxsYmFja3MoZmFsc2UpOworfQorCiBmbG9hdCBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6cmF0ZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtZXRh
RGF0YUF2YWlsYWJsZSgpIHx8ICFhdlBsYXllcihtX2F2ZldyYXBwZXIpKQpAQCAtNjcxLDcgKzcy
Niw3IEBAIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6QXNzZXRTdGEKICAgICBmb3Ig
KENGSW5kZXggaSA9IDA7IGkgPCBrZXlDb3VudDsgaSsrKSB7CiAgICAgICAgIENGU3RyaW5nUmVm
IGtleU5hbWUgPSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRl
eChrZXlzLCBpKSk7CiAgICAgICAgIEFWQ0ZQcm9wZXJ0eVZhbHVlU3RhdHVzIGtleVN0YXR1cyA9
IEFWQ0ZBc3NldEdldFN0YXR1c09mVmFsdWVGb3JQcm9wZXJ0eShhdkFzc2V0KG1fYXZmV3JhcHBl
ciksIGtleU5hbWUsIDApOwotICAgICAgICAKKwogICAgICAgICBpZiAoa2V5U3RhdHVzIDwgQVZD
RlByb3BlcnR5VmFsdWVTdGF0dXNMb2FkZWQpCiAgICAgICAgICAgICByZXR1cm4gTWVkaWFQbGF5
ZXJBVkFzc2V0U3RhdHVzTG9hZGluZzsKICAgICAgICAgaWYgKGtleVN0YXR1cyA9PSBBVkNGUHJv
cGVydHlWYWx1ZVN0YXR1c0ZhaWxlZCkKQEAgLTY4OCw3ICs3NDMsNyBAQCBNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb246OkFzc2V0U3RhCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uQ0Y6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKLSAgICBpZiAoY29udGV4dC0+cGFpbnRp
bmdEaXNhYmxlZCgpKQorICAgIGlmICghbWV0YURhdGFBdmFpbGFibGUoKSB8fCBjb250ZXh0LT5w
YWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChjdXJyZW50UmVu
ZGVyaW5nTW9kZSgpID09IE1lZGlhUmVuZGVyaW5nVG9MYXllciAmJiAhaW1hZ2VHZW5lcmF0b3Io
bV9hdmZXcmFwcGVyKSkgewpAQCAtNzAyLDcgKzc1Nyw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uQ0Y6OnAKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25DRjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0
KQogewotICAgIGlmIChjb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkgfHwgIWltYWdlR2VuZXJh
dG9yKG1fYXZmV3JhcHBlcikpCisgICAgaWYgKCFtZXRhRGF0YUF2YWlsYWJsZSgpIHx8IGNvbnRl
eHQtPnBhaW50aW5nRGlzYWJsZWQoKSB8fCAhaW1hZ2VHZW5lcmF0b3IobV9hdmZXcmFwcGVyKSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uQ0Y6OnBhaW50KCVwKSIsIHRoaXMpOwpAQCAtNzMyLDcgKzc4Nyw3IEBAIHN0YXRp
YyBIYXNoU2V0PFN0cmluZz4gbWltZVR5cGVDYWNoZSgpCiAgICAgaWYgKHR5cGVMaXN0SW5pdGlh
bGl6ZWQpCiAgICAgICAgIHJldHVybiBjYWNoZTsKICAgICB0eXBlTGlzdEluaXRpYWxpemVkID0g
dHJ1ZTsKLSAgICAKKwogICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBzdXBwb3J0ZWRUeXBlcyA9
IGFkb3B0Q0YoQVZDRlVSTEFzc2V0Q29weUF1ZGlvdmlzdWFsTUlNRVR5cGVzKCkpOwogICAgIAog
ICAgIEFTU0VSVChzdXBwb3J0ZWRUeXBlcyk7CkBAIC03NzgsOSArODMzLDE1IEBAIGZsb2F0IE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjoKIAogdm9pZCBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25DRjo6dHJhY2tzQ2hhbmdlZCgpCiB7CisgICAgU3RyaW5nIHByaW1hcnlB
dWRpb1RyYWNrTGFuZ3VhZ2UgPSBtX2xhbmd1YWdlT2ZQcmltYXJ5QXVkaW9UcmFjazsKKyAgICBt
X2xhbmd1YWdlT2ZQcmltYXJ5QXVkaW9UcmFjayA9IFN0cmluZygpOworCiAgICAgaWYgKCFhdkFz
c2V0KG1fYXZmV3JhcHBlcikpCiAgICAgICAgIHJldHVybjsKLSAgICAKKworICAgIGJvb2wgaGF2
ZUNDVHJhY2sgPSBmYWxzZTsKKyAgICBib29sIGhhc0NhcHRpb25zID0gZmFsc2U7CisKICAgICAv
LyBUaGlzIGlzIGNhbGxlZCB3aGVuZXZlciB0aGUgdHJhY2tzIGNvbGxlY3Rpb24gY2hhbmdlcyBz
byBjYWNoZSBoYXNWaWRlbyBhbmQgaGFzQXVkaW8gc2luY2Ugd2UgYXJlCiAgICAgLy8gYXNrZWQg
YWJvdXQgdGhvc2UgZmFpcmx5IGZyZXF1ZW50bHkuCiAgICAgaWYgKCFhdlBsYXllckl0ZW0obV9h
dmZXcmFwcGVyKSkgewpAQCAtNzkyLDEyICs4NTMsMTMgQEAgdm9pZCBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25DRjo6dAogICAgICAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gYXVkaW9U
cmFja3MgPSBhZG9wdENGKEFWQ0ZBc3NldENvcHlUcmFja3NXaXRoTWVkaWFDaGFyYWN0ZXJpc3Rp
YyhhdkFzc2V0KG1fYXZmV3JhcHBlciksIEFWQ0ZNZWRpYUNoYXJhY3RlcmlzdGljQXVkaWJsZSkp
OwogICAgICAgICBzZXRIYXNBdWRpbyhDRkFycmF5R2V0Q291bnQoYXVkaW9UcmFja3MuZ2V0KCkp
KTsKIAorI2lmICFIQVZFKEFWRk9VTkRBVElPTl9NRURJQV9TRUxFQ1RJT05fR1JPVVApCiAgICAg
ICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBjYXB0aW9uVHJhY2tzID0gYWRvcHRDRihBVkNGQXNz
ZXRDb3B5VHJhY2tzV2l0aE1lZGlhVHlwZShhdkFzc2V0KG1fYXZmV3JhcHBlciksIEFWQ0ZNZWRp
YVR5cGVDbG9zZWRDYXB0aW9uKSk7Ci0gICAgICAgIHNldEhhc0F1ZGlvKENGQXJyYXlHZXRDb3Vu
dChjYXB0aW9uVHJhY2tzLmdldCgpKSk7CisgICAgICAgIGhhc0NhcHRpb25zID0gQ0ZBcnJheUdl
dENvdW50KGNhcHRpb25UcmFja3MuZ2V0KCkpOworI2VuZGlmCiAgICAgfSBlbHNlIHsKICAgICAg
ICAgYm9vbCBoYXNWaWRlbyA9IGZhbHNlOwogICAgICAgICBib29sIGhhc0F1ZGlvID0gZmFsc2U7
Ci0gICAgICAgIGJvb2wgaGFzQ2FwdGlvbnMgPSBmYWxzZTsKIAogICAgICAgICBSZXRhaW5QdHI8
Q0ZBcnJheVJlZj4gdHJhY2tzID0gYWRvcHRDRihBVkNGUGxheWVySXRlbUNvcHlUcmFja3MoYXZQ
bGF5ZXJJdGVtKG1fYXZmV3JhcHBlcikpKTsKIApAQCAtODE1LDIwICs4NzcsNDMgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6dAogICAgICAgICAgICAgICAgICAgICBo
YXNWaWRlbyA9IHRydWU7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAoQ0ZTdHJpbmdDb21wYXJl
KG1lZGlhVHlwZSwgQVZDRk1lZGlhVHlwZUF1ZGlvLCBrQ0ZDb21wYXJlQ2FzZUluc2Vuc2l0aXZl
KSA9PSBrQ0ZDb21wYXJlRXF1YWxUbykKICAgICAgICAgICAgICAgICAgICAgaGFzQXVkaW8gPSB0
cnVlOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKENGU3RyaW5nQ29tcGFyZShtZWRpYVR5cGUs
IEFWQ0ZNZWRpYVR5cGVDbG9zZWRDYXB0aW9uLCBrQ0ZDb21wYXJlQ2FzZUluc2Vuc2l0aXZlKSA9
PSBrQ0ZDb21wYXJlRXF1YWxUbykKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChDRlN0cmluZ0Nv
bXBhcmUobWVkaWFUeXBlLCBBVkNGTWVkaWFUeXBlQ2xvc2VkQ2FwdGlvbiwga0NGQ29tcGFyZUNh
c2VJbnNlbnNpdGl2ZSkgPT0ga0NGQ29tcGFyZUVxdWFsVG8pIHsKKyNpZiAhSEFWRShBVkZPVU5E
QVRJT05fTUVESUFfU0VMRUNUSU9OX0dST1VQKQogICAgICAgICAgICAgICAgICAgICBoYXNDYXB0
aW9ucyA9IHRydWU7CisjZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgaGF2ZUNDVHJhY2sgPSB0
cnVlOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAg
ICAgIHNldEhhc1ZpZGVvKGhhc1ZpZGVvKTsKICAgICAgICAgc2V0SGFzQXVkaW8oaGFzQXVkaW8p
OwotICAgICAgICBzZXRIYXNDbG9zZWRDYXB0aW9ucyhoYXNDYXB0aW9ucyk7CiAgICAgfQogCisj
aWYgSEFWRShBVkZPVU5EQVRJT05fTUVESUFfU0VMRUNUSU9OX0dST1VQKQorICAgIEFWQ0ZNZWRp
YVNlbGVjdGlvbkdyb3VwUmVmIGxlZ2libGVHcm91cCA9IHNhZmVNZWRpYVNlbGVjdGlvbkdyb3Vw
Rm9yTGVnaWJsZU1lZGlhKG1fYXZmV3JhcHBlcik7CisgICAgaWYgKGxlZ2libGVHcm91cCkgewor
ICAgICAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gcGxheWFibGVPcHRpb25zID0gYWRvcHRDRihB
VkNGTWVkaWFTZWxlY3Rpb25Db3B5UGxheWFibGVPcHRpb25zRnJvbUFycmF5KEFWQ0ZNZWRpYVNl
bGVjdGlvbkdyb3VwR2V0T3B0aW9ucyhsZWdpYmxlR3JvdXApKSk7CisgICAgICAgIGhhc0NhcHRp
b25zID0gQ0ZBcnJheUdldENvdW50KHBsYXlhYmxlT3B0aW9ucy5nZXQoKSk7CisgICAgICAgIGlm
IChoYXNDYXB0aW9ucykKKyAgICAgICAgICAgIHByb2Nlc3NNZWRpYVNlbGVjdGlvbk9wdGlvbnMo
KTsKKyAgICB9CisjZW5kaWYKKworI2lmICFIQVZFKEFWRk9VTkRBVElPTl9MRUdJQkxFX09VVFBV
VF9TVVBQT1JUKQorICAgIGlmIChoYXZlQ0NUcmFjaykKKyAgICAgICAgcHJvY2Vzc0xlZ2FjeUNs
b3NlZENhcHRpb25zVHJhY2tzKCk7CisjZW5kaWYKKworICAgIHNldEhhc0Nsb3NlZENhcHRpb25z
KGhhc0NhcHRpb25zKTsKKwogICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbkNGOnRyYWNrc0NoYW5nZWQoJXApIC0gaGFzVmlkZW8gPSAlcywgaGFzQXVkaW8gPSAl
cywgaGFzQ2FwdGlvbnMgPSAlcyIsIAogICAgICAgICB0aGlzLCBib29sU3RyaW5nKGhhc1ZpZGVv
KCkpLCBib29sU3RyaW5nKGhhc0F1ZGlvKCkpLCBib29sU3RyaW5nKGhhc0Nsb3NlZENhcHRpb25z
KCkpKTsKIAogICAgIHNpemVDaGFuZ2VkKCk7CisKKyAgICBpZiAoIXByaW1hcnlBdWRpb1RyYWNr
TGFuZ3VhZ2UuaXNOdWxsKCkgJiYgcHJpbWFyeUF1ZGlvVHJhY2tMYW5ndWFnZSAhPSBsYW5ndWFn
ZU9mUHJpbWFyeUF1ZGlvVHJhY2soKSkKKyAgICAgICAgcGxheWVyKCktPmNoYXJhY3RlcmlzdGlj
Q2hhbmdlZCgpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpz
aXplQ2hhbmdlZCgpCkBAIC04NjEsNiArOTQ2LDIwMSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbkNGOjpzCiAgICAgc2V0TmF0dXJhbFNpemUoSW50U2l6ZShuYXR1cmFsU2l6
ZSkpOwogfQogCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpjbGVhclRl
eHRUcmFja3MoKQoreworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3RleHRUcmFja3Mu
c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY+
IHRyYWNrID0gbV90ZXh0VHJhY2tzW2ldOworICAgICAgICBwbGF5ZXIoKS0+cmVtb3ZlVGV4dFRy
YWNrKHRyYWNrKTsKKyAgICAgICAgdHJhY2stPmRpc2Nvbm5lY3QoKTsKKyAgICB9CisgICAgbV90
ZXh0VHJhY2tzLmNsZWFyKCk7Cit9CisKKyNpZiAhSEFWRShBVkZPVU5EQVRJT05fTEVHSUJMRV9P
VVRQVVRfU1VQUE9SVCkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnBy
b2Nlc3NMZWdhY3lDbG9zZWRDYXB0aW9uc1RyYWNrcygpCit7CisgICAgQVZDRlBsYXllckl0ZW1T
ZWxlY3RNZWRpYU9wdGlvbkluTWVkaWFTZWxlY3Rpb25Hcm91cChhdlBsYXllckl0ZW0obV9hdmZX
cmFwcGVyKSwgMCwgc2FmZU1lZGlhU2VsZWN0aW9uR3JvdXBGb3JMZWdpYmxlTWVkaWEobV9hdmZX
cmFwcGVyKSk7CisKKyAgICBWZWN0b3I8UmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY+
ID4gcmVtb3ZlZFRleHRUcmFja3MgPSBtX3RleHRUcmFja3M7CisgICAgUmV0YWluUHRyPENGQXJy
YXlSZWY+IHRyYWNrcyA9IGFkb3B0Q0YoQVZDRlBsYXllckl0ZW1Db3B5VHJhY2tzKGF2UGxheWVy
SXRlbShtX2F2ZldyYXBwZXIpKSk7CisgICAgQ0ZJbmRleCB0cmFja0NvdW50ID0gQ0ZBcnJheUdl
dENvdW50KHRyYWNrcy5nZXQoKSk7CisgICAgZm9yIChDRkluZGV4IGkgPSAwOyBpIDwgdHJhY2tD
b3VudDsgKytpKSB7CisgICAgICAgIEFWQ0ZQbGF5ZXJJdGVtVHJhY2tSZWYgcGxheWVySXRlbVRy
YWNrID0gKEFWQ0ZQbGF5ZXJJdGVtVHJhY2tSZWYpKENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgodHJh
Y2tzLmdldCgpLCBpKSk7CisKKyAgICAgICAgUmV0YWluUHRyPEFWQ0ZBc3NldFRyYWNrUmVmPiBh
c3NldFRyYWNrID0gYWRvcHRDRihBVkNGUGxheWVySXRlbVRyYWNrQ29weUFzc2V0VHJhY2socGxh
eWVySXRlbVRyYWNrKSk7CisgICAgICAgIENGU3RyaW5nUmVmIG1lZGlhVHlwZSA9IEFWQ0ZBc3Nl
dFRyYWNrR2V0TWVkaWFUeXBlKGFzc2V0VHJhY2suZ2V0KCkpOworICAgICAgICBpZiAoIW1lZGlh
VHlwZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIAorICAgICAgICBp
ZiAoQ0ZTdHJpbmdDb21wYXJlKG1lZGlhVHlwZSwgQVZDRk1lZGlhVHlwZUNsb3NlZENhcHRpb24s
IGtDRkNvbXBhcmVDYXNlSW5zZW5zaXRpdmUpICE9IGtDRkNvbXBhcmVFcXVhbFRvKQorICAgICAg
ICAgICAgY29udGludWU7CisKKyAgICAgICAgYm9vbCBuZXdDQ1RyYWNrID0gdHJ1ZTsKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gcmVtb3ZlZFRleHRUcmFja3Muc2l6ZSgpOyBpID4gMDsgLS1p
KSB7CisgICAgICAgICAgICBpZiAoIXJlbW92ZWRUZXh0VHJhY2tzW2kgLSAxXS0+aXNMZWdhY3lD
bG9zZWRDYXB0aW9uc1RyYWNrKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAg
ICAgICAgIFJlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZDRj4gdHJhY2sgPSBz
dGF0aWNfY2FzdDxJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZDRio+KG1fdGV4dFRyYWNr
c1tpIC0gMV0uZ2V0KCkpOworICAgICAgICAgICAgaWYgKHRyYWNrLT5hdlBsYXllckl0ZW1UcmFj
aygpID09IHBsYXllckl0ZW1UcmFjaykgeworICAgICAgICAgICAgICAgIHJlbW92ZWRUZXh0VHJh
Y2tzLnJlbW92ZShpIC0gMSk7CisgICAgICAgICAgICAgICAgbmV3Q0NUcmFjayA9IGZhbHNlOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAg
ICAgaWYgKCFuZXdDQ1RyYWNrKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIAorICAg
ICAgICBtX3RleHRUcmFja3MuYXBwZW5kKEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkNG
OjpjcmVhdGUodGhpcywgcGxheWVySXRlbVRyYWNrKSk7CisgICAgfQorCisgICAgcHJvY2Vzc05l
d0FuZFJlbW92ZWRUZXh0VHJhY2tzKHJlbW92ZWRUZXh0VHJhY2tzKTsKK30KKyNlbmRpZgorCit2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpwcm9jZXNzTmV3QW5kUmVtb3Zl
ZFRleHRUcmFja3MoY29uc3QgVmVjdG9yPFJlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZG
PiA+JiByZW1vdmVkVGV4dFRyYWNrcykKK3sKKyAgICAvLyBGSVhNRTogTGlmdCB0byBwYXJlbnQg
Y2xhc3MgKGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTg4MDEpCisg
ICAgaWYgKHJlbW92ZWRUZXh0VHJhY2tzLnNpemUoKSkgeworICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbV90ZXh0VHJhY2tzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBpZiAo
IXJlbW92ZWRUZXh0VHJhY2tzLmNvbnRhaW5zKG1fdGV4dFRyYWNrc1tpXSkpCisgICAgICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHBsYXllcigpLT5yZW1v
dmVUZXh0VHJhY2socmVtb3ZlZFRleHRUcmFja3NbaV0uZ2V0KCkpOworICAgICAgICAgICAgbV90
ZXh0VHJhY2tzLnJlbW92ZShpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbV90ZXh0VHJhY2tzLnNpemUoKTsgKytpKSB7CisgICAgICAgIFJl
ZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGPiB0cmFjayA9IG1fdGV4dFRyYWNrc1tpXTsK
KyAgICAgICAgCisgICAgICAgIHRyYWNrLT5zZXRUZXh0VHJhY2tJbmRleChpKTsKKyAgICAgICAg
aWYgKHRyYWNrLT5oYXNCZWVuUmVwb3J0ZWQoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICAKKyAgICAgICAgdHJhY2stPnNldEhhc0JlZW5SZXBvcnRlZCh0cnVlKTsKKyAgICAgICAg
cGxheWVyKCktPmFkZFRleHRUcmFjayh0cmFjay5nZXQoKSk7CisgICAgfQorICAgIExPRyhNZWRp
YSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpwcm9jZXNzTmV3QW5kUmVtb3Zl
ZFRleHRUcmFja3MoJXApIC0gZm91bmQgJWkgdGV4dCB0cmFja3MiLCB0aGlzLCBtX3RleHRUcmFj
a3Muc2l6ZSgpKTsKK30KKworI2lmIEhBVkUoQVZGT1VOREFUSU9OX01FRElBX1NFTEVDVElPTl9H
Uk9VUCkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnByb2Nlc3NNZWRp
YVNlbGVjdGlvbk9wdGlvbnMoKQoreworICAgIEFWQ0ZNZWRpYVNlbGVjdGlvbkdyb3VwUmVmIGxl
Z2libGVHcm91cCA9IHNhZmVNZWRpYVNlbGVjdGlvbkdyb3VwRm9yTGVnaWJsZU1lZGlhKG1fYXZm
V3JhcHBlcik7CisgICAgaWYgKCFsZWdpYmxlR3JvdXApIHsKKyAgICAgICAgTE9HKE1lZGlhLCAi
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnByb2Nlc3NNZWRpYVNlbGVjdGlvbk9w
dGlvbnMoJXApIC0gbmlsIG1lZGlhU2VsZWN0aW9uR3JvdXAiLCB0aGlzKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIC8vIFdlIGVuYWJsZWQgYXV0b21hdGljIG1lZGlhIHNlbGVjdGlv
biBiZWNhdXNlIHdlIHdhbnQgYWx0ZXJuYXRlIGF1ZGlvIHRyYWNrcyB0byBiZSBlbmFibGVkL2Rp
c2FibGVkIGF1dG9tYXRpY2FsbHksCisgICAgLy8gYnV0IHNldCB0aGUgc2VsZWN0ZWQgbGVnaWJs
ZSB0cmFjayB0byBuaWwgc28gdGV4dCB0cmFja3Mgd2lsbCBub3QgYmUgYXV0b21hdGljYWxseSBj
b25maWd1cmVkLgorICAgIGlmICghbV90ZXh0VHJhY2tzLnNpemUoKSkgeworICAgICAgICBBU1NF
UlQoQVZDRk1lZGlhU2VsZWN0aW9uR3JvdXBBbGxvd3NFbXB0eVNlbGVjdGlvbihsZWdpYmxlR3Jv
dXApKTsKKyAgICAgICAgQVZDRlBsYXllckl0ZW1SZWYgcGxheWVySXRlbSA9IGF2UGxheWVySXRl
bShtX2F2ZldyYXBwZXIpOworCisgICAgICAgIGlmIChwbGF5ZXJJdGVtKQorICAgICAgICAgICAg
QVZDRlBsYXllckl0ZW1TZWxlY3RNZWRpYU9wdGlvbkluTWVkaWFTZWxlY3Rpb25Hcm91cChwbGF5
ZXJJdGVtLCAwLCBsZWdpYmxlR3JvdXApOworICAgIH0KKworICAgIFZlY3RvcjxSZWZQdHI8SW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUFWRj4gPiByZW1vdmVkVGV4dFRyYWNrcyA9IG1fdGV4dFRyYWNr
czsKKyAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gbGVnaWJsZU9wdGlvbnMgPSBhZG9wdENGKEFW
Q0ZNZWRpYVNlbGVjdGlvbkNvcHlQbGF5YWJsZU9wdGlvbnNGcm9tQXJyYXkoQVZDRk1lZGlhU2Vs
ZWN0aW9uR3JvdXBHZXRPcHRpb25zKGxlZ2libGVHcm91cCkpKTsKKyAgICBDRkluZGV4IGxlZ2li
bGVPcHRpb25zQ291bnQgPSBDRkFycmF5R2V0Q291bnQobGVnaWJsZU9wdGlvbnMuZ2V0KCkpOwor
ICAgIGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8IGxlZ2libGVPcHRpb25zQ291bnQ7ICsraSkgewor
ICAgICAgICBBVkNGTWVkaWFTZWxlY3Rpb25PcHRpb25SZWYgb3B0aW9uID0gc3RhdGljX2Nhc3Q8
QVZDRk1lZGlhU2VsZWN0aW9uT3B0aW9uUmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KGxlZ2li
bGVPcHRpb25zLmdldCgpLCBpKSk7CisgICAgICAgIGJvb2wgbmV3VHJhY2sgPSB0cnVlOworICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSByZW1vdmVkVGV4dFRyYWNrcy5zaXplKCk7IGkgPiAwOyAt
LWkpIHsKKyAgICAgICAgICAgIGlmIChyZW1vdmVkVGV4dFRyYWNrc1tpIC0gMV0tPmlzTGVnYWN5
Q2xvc2VkQ2FwdGlvbnNUcmFjaygpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAg
ICAgICAgICBSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0Y+IHRyYWNrID0gc3RhdGlj
X2Nhc3Q8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0YqPihyZW1vdmVkVGV4dFRyYWNrc1tpIC0g
MV0uZ2V0KCkpOworICAgICAgICAgICAgaWYgKENGRXF1YWwodHJhY2stPm1lZGlhU2VsZWN0aW9u
T3B0aW9uKCksIG9wdGlvbikpIHsKKyAgICAgICAgICAgICAgICByZW1vdmVkVGV4dFRyYWNrcy5y
ZW1vdmUoaSAtIDEpOworICAgICAgICAgICAgICAgIG5ld1RyYWNrID0gZmFsc2U7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFu
ZXdUcmFjaykKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIG1fdGV4dFRyYWNrcy5h
cHBlbmQoSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0Y6OmNyZWF0ZSh0aGlzLCBvcHRpb24pKTsK
KyAgICB9CisKKyAgICBwcm9jZXNzTmV3QW5kUmVtb3ZlZFRleHRUcmFja3MocmVtb3ZlZFRleHRU
cmFja3MpOworfQorCisjZW5kaWYgLy8gSEFWRShBVkZPVU5EQVRJT05fTUVESUFfU0VMRUNUSU9O
X0dST1VQKQorCit2b2lkIEFWRldyYXBwZXI6OnNldEN1cnJlbnRUcmFjayhJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlQVZGKiB0cmFjaykKK3sKKyAgICBpZiAobV9jdXJyZW50VHJhY2sgPT0gdHJhY2sp
CisgICAgICAgIHJldHVybjsKKworICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbkNGOjpzZXRDdXJyZW50VHJhY2soJXApIC0gc2VsZWN0aW5nIHRyYWNrICVwLCBs
YW5ndWFnZSA9ICVzIiwgdGhpcywgdHJhY2ssIHRyYWNrID8gdHJhY2stPmxhbmd1YWdlKCkuc3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSA6ICIiKTsKKyAgICAgICAgCisgICAgbV9jdXJyZW50VHJhY2sg
PSB0cmFjazsKKworICAgIGlmICh0cmFjaykgeworICAgICAgICBpZiAodHJhY2stPmlzTGVnYWN5
Q2xvc2VkQ2FwdGlvbnNUcmFjaygpKQorICAgICAgICAgICAgQVZDRlBsYXllclNldENsb3NlZENh
cHRpb25EaXNwbGF5RW5hYmxlZChhdlBsYXllcigpLCBUUlVFKTsKKyNpZiBIQVZFKEFWRk9VTkRB
VElPTl9NRURJQV9TRUxFQ1RJT05fR1JPVVApCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIEFW
Q0ZQbGF5ZXJJdGVtU2VsZWN0TWVkaWFPcHRpb25Jbk1lZGlhU2VsZWN0aW9uR3JvdXAoYXZQbGF5
ZXJJdGVtKCksIHN0YXRpY19jYXN0PEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGKj4odHJhY2sp
LT5tZWRpYVNlbGVjdGlvbk9wdGlvbigpLCBzYWZlTWVkaWFTZWxlY3Rpb25Hcm91cEZvckxlZ2li
bGVNZWRpYSgpKTsKKyNlbmRpZgorICAgIH0gZWxzZSB7CisjaWYgSEFWRShBVkZPVU5EQVRJT05f
TUVESUFfU0VMRUNUSU9OX0dST1VQKQorICAgICAgICBBVkNGUGxheWVySXRlbVNlbGVjdE1lZGlh
T3B0aW9uSW5NZWRpYVNlbGVjdGlvbkdyb3VwKGF2UGxheWVySXRlbSgpLCAwLCBzYWZlTWVkaWFT
ZWxlY3Rpb25Hcm91cEZvckxlZ2libGVNZWRpYSgpKTsKKyNlbmRpZgorICAgICAgICBBVkNGUGxh
eWVyU2V0Q2xvc2VkQ2FwdGlvbkRpc3BsYXlFbmFibGVkKGF2UGxheWVyKCksIEZBTFNFKTsKKyAg
ICB9Cit9CisKK1N0cmluZyBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6bGFuZ3Vh
Z2VPZlByaW1hcnlBdWRpb1RyYWNrKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fbGFuZ3VhZ2VPZlBy
aW1hcnlBdWRpb1RyYWNrLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gbV9sYW5ndWFnZU9mUHJp
bWFyeUF1ZGlvVHJhY2s7CisKKyAgICBpZiAoIWF2UGxheWVySXRlbShtX2F2ZldyYXBwZXIpKQor
ICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKworI2lmIEhBVkUoQVZGT1VOREFUSU9OX01F
RElBX1NFTEVDVElPTl9HUk9VUCkKKyAgICAvLyBJZiBBVkZvdW5kYXRpb24gaGFzIGFuIGF1ZGli
bGUgZ3JvdXAsIHJldHVybiB0aGUgbGFuZ3VhZ2Ugb2YgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBh
dWRpYmxlIG9wdGlvbi4KKyAgICBBVkNGTWVkaWFTZWxlY3Rpb25Hcm91cFJlZiBhdWRpYmxlR3Jv
dXAgPSBBVkNGQXNzZXRHZXRTZWxlY3Rpb25Hcm91cEZvck1lZGlhQ2hhcmFjdGVyaXN0aWMoYXZB
c3NldChtX2F2ZldyYXBwZXIpLCBBVkNGTWVkaWFDaGFyYWN0ZXJpc3RpY0F1ZGlibGUpOworICAg
IEFWQ0ZNZWRpYVNlbGVjdGlvbk9wdGlvblJlZiBjdXJyZW50bHlTZWxlY3RlZEF1ZGlibGVPcHRp
b24gPSBBVkNGUGxheWVySXRlbUdldFNlbGVjdGVkTWVkaWFPcHRpb25Jbk1lZGlhU2VsZWN0aW9u
R3JvdXAoYXZQbGF5ZXJJdGVtKG1fYXZmV3JhcHBlciksIGF1ZGlibGVHcm91cCk7CisgICAgaWYg
KGN1cnJlbnRseVNlbGVjdGVkQXVkaWJsZU9wdGlvbikgeworICAgICAgICBSZXRhaW5QdHI8Q0ZM
b2NhbGVSZWY+IGF1ZGlibGVPcHRpb25Mb2NhbGUgPSBhZG9wdENGKEFWQ0ZNZWRpYVNlbGVjdGlv
bk9wdGlvbkNvcHlMb2NhbGUoY3VycmVudGx5U2VsZWN0ZWRBdWRpYmxlT3B0aW9uKSk7CisgICAg
ICAgIG1fbGFuZ3VhZ2VPZlByaW1hcnlBdWRpb1RyYWNrID0gQ0ZMb2NhbGVHZXRJZGVudGlmaWVy
KGF1ZGlibGVPcHRpb25Mb2NhbGUuZ2V0KCkpOworICAgICAgICBMT0coTWVkaWEsICJNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6bGFuZ3VhZ2VPZlByaW1hcnlBdWRpb1RyYWNrKCVw
KSAtIHJldHVybmluZyBsYW5ndWFnZSBvZiBzZWxlY3RlZCBhdWRpYmxlIG9wdGlvbjogJXMiLCB0
aGlzLCBtX2xhbmd1YWdlT2ZQcmltYXJ5QXVkaW9UcmFjay51dGY4KCkuZGF0YSgpKTsKKworICAg
ICAgICByZXR1cm4gbV9sYW5ndWFnZU9mUHJpbWFyeUF1ZGlvVHJhY2s7CisgICAgfQorI2VuZGlm
IC8vIEhBVkUoQVZGT1VOREFUSU9OX01FRElBX1NFTEVDVElPTl9HUk9VUCkKKworICAgIC8vIEFW
Rm91bmRhdGlvbiBzeW50aGVzaXplcyBhbiBhdWRpYmxlIGdyb3VwIHdoZW4gdGhlcmUgaXMgb25s
eSBvbmUgdW5ncm91cGVkIGF1ZGlvIHRyYWNrIGlmIHRoZXJlIGlzIGFsc28gYSBsZWdpYmxlIGdy
b3VwIChvbmUgb3IKKyAgICAvLyBtb3JlIGluLWJhbmQgdGV4dCB0cmFja3MpLiBJdCBkb2Vzbid0
IGtub3cgYWJvdXQgb3V0LW9mLWJhbmQgdHJhY2tzLCBzbyBpZiB0aGVyZSBpcyBhIHNpbmdsZSBh
dWRpbyB0cmFjayByZXR1cm4gaXRzIGxhbmd1YWdlLgorICAgIFJldGFpblB0cjxDRkFycmF5UmVm
PiB0cmFja3MgPSBhZG9wdENGKEFWQ0ZBc3NldENvcHlUcmFja3NXaXRoTWVkaWFUeXBlKGF2QXNz
ZXQobV9hdmZXcmFwcGVyKSwgQVZDRk1lZGlhVHlwZUF1ZGlvKSk7CisgICAgQ0ZJbmRleCB0cmFj
a0NvdW50ID0gQ0ZBcnJheUdldENvdW50KHRyYWNrcy5nZXQoKSk7CisgICAgaWYgKCF0cmFja3Mg
fHwgdHJhY2tDb3VudCAhPSAxKSB7CisgICAgICAgIG1fbGFuZ3VhZ2VPZlByaW1hcnlBdWRpb1Ry
YWNrID0gZW1wdHlTdHJpbmcoKTsKKyAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uQ0Y6Omxhbmd1YWdlT2ZQcmltYXJ5QXVkaW9UcmFjayglcCkgLSAlaSBh
dWRpbyB0cmFja3MsIHJldHVybmluZyBlbXB0eVN0cmluZygpIiwgdGhpcywgKHRyYWNrcyA/IHRy
YWNrQ291bnQgOiAwKSk7CisgICAgICAgIHJldHVybiBtX2xhbmd1YWdlT2ZQcmltYXJ5QXVkaW9U
cmFjazsKKyAgICB9CisKKyAgICBBVkNGQXNzZXRUcmFja1JlZiB0cmFjayA9IChBVkNGQXNzZXRU
cmFja1JlZilDRkFycmF5R2V0VmFsdWVBdEluZGV4KHRyYWNrcy5nZXQoKSwgMCk7CisgICAgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiBsYW5ndWFnZSA9IGFkb3B0Q0YoQVZDRkFzc2V0VHJhY2tDb3B5
RXh0ZW5kZWRMYW5ndWFnZVRhZyh0cmFjaykpOworCisgICAgLy8gU29tZSBsZWdhY3kgdHJhY2tz
IGhhdmUgInVuZCIgYXMgYSBsYW5ndWFnZSwgdHJlYXQgdGhhdCB0aGUgc2FtZSBhcyBubyBsYW5n
dWFnZSBhdCBhbGwuCisgICAgaWYgKGxhbmd1YWdlICYmIENGU3RyaW5nQ29tcGFyZShsYW5ndWFn
ZS5nZXQoKSwgQ0ZTVFIoInVuZCIpLCBrQ0ZDb21wYXJlQ2FzZUluc2Vuc2l0aXZlKSAhPSBrQ0ZD
b21wYXJlRXF1YWxUbykgeworICAgICAgICBtX2xhbmd1YWdlT2ZQcmltYXJ5QXVkaW9UcmFjayA9
IGxhbmd1YWdlLmdldCgpOworICAgICAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25DRjo6bGFuZ3VhZ2VPZlByaW1hcnlBdWRpb1RyYWNrKCVwKSAtIHJldHVybmlu
ZyBsYW5ndWFnZSBvZiBzaW5nbGUgYXVkaW8gdHJhY2s6ICVzIiwgdGhpcywgbV9sYW5ndWFnZU9m
UHJpbWFyeUF1ZGlvVHJhY2sudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIHJldHVybiBtX2xhbmd1
YWdlT2ZQcmltYXJ5QXVkaW9UcmFjazsKKyAgICB9CisKKyAgICBMT0coTWVkaWEsICJNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6bGFuZ3VhZ2VPZlByaW1hcnlBdWRpb1RyYWNrKCVw
KSAtIHNpbmdsZSBhdWRpbyB0cmFjayBoYXMgbm8gbGFuZ3VhZ2UsIHJldHVybmluZyBlbXB0eVN0
cmluZygpIiwgdGhpcyk7CisgICAgbV9sYW5ndWFnZU9mUHJpbWFyeUF1ZGlvVHJhY2sgPSBlbXB0
eVN0cmluZygpOworICAgIHJldHVybiBtX2xhbmd1YWdlT2ZQcmltYXJ5QXVkaW9UcmFjazsKK30K
Kwogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6Y29udGVudHNOZWVkc0Rp
c3BsYXkoKQogewogICAgIGlmIChtX2F2ZldyYXBwZXIpCkBAIC04NzAsNiArMTE1MCw3IEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OmMKIEFWRldyYXBwZXI6OkFWRldy
YXBwZXIoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YqIG93bmVyKQogICAgIDogbV9v
d25lcihvd25lcikKICAgICAsIG1fb2JqZWN0SUQoc19uZXh0QVZGV3JhcHBlck9iamVjdElEKysp
CisgICAgLCBtX2N1cnJlbnRUcmFjaygwKQogewogICAgIExPRyhNZWRpYSwgIkFWRldyYXBwZXI6
OkFWRldyYXBwZXIoJXApIiwgdGhpcyk7CiAKQEAgLTg5Miw2ICsxMTczLDE0IEBAIEFWRldyYXBw
ZXI6On5BVkZXcmFwcGVyKCkKICAgICAgICAgbV9hdkFzc2V0ID0gMDsKICAgICB9CiAKKyNpZiBI
QVZFKEFWRk9VTkRBVElPTl9NRURJQV9TRUxFQ1RJT05fR1JPVVApICYmIEhBVkUoQVZGT1VOREFU
SU9OX0xFR0lCTEVfT1VUUFVUX1NVUFBPUlQpCisgICAgaWYgKGxlZ2libGVPdXRwdXQoKSkgewor
ICAgICAgICBpZiAoYXZQbGF5ZXJJdGVtKCkpCisgICAgICAgICAgICBBVkNGUGxheWVySXRlbVJl
bW92ZU91dHB1dChhdlBsYXllckl0ZW0oKSwgbGVnaWJsZU91dHB1dCgpKTsKKyAgICAgICAgbV9s
ZWdpYmxlT3V0cHV0ID0gMDsKKyAgICB9CisjZW5kaWYKKwogICAgIG1fYXZQbGF5ZXJJdGVtID0g
MDsKICAgICBtX3RpbWVPYnNlcnZlciA9IDA7CiAgICAgbV9hdlBsYXllciA9IDA7CkBAIC0xMDA0
LDEzICsxMjkzLDI3IEBAIHZvaWQgQVZGV3JhcHBlcjo6Y3JlYXRlUGxheWVyKElEaXJlY3QzREQK
ICAgICBpZiAobV9kM2REZXZpY2UgJiYgQVZDRlBsYXllckVuYWJsZUhhcmR3YXJlQWNjZWxlcmF0
ZWRWaWRlb0RlY29kZXJLZXkpCiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKG9wdGlvbnNS
ZWYuZ2V0KCksIEFWQ0ZQbGF5ZXJFbmFibGVIYXJkd2FyZUFjY2VsZXJhdGVkVmlkZW9EZWNvZGVy
S2V5LCBrQ0ZCb29sZWFuVHJ1ZSk7CiAKKyNpZiBIQVZFKEFWRk9VTkRBVElPTl9NRURJQV9TRUxF
Q1RJT05fR1JPVVApICYmIEhBVkUoQVZGT1VOREFUSU9OX0xFR0lCTEVfT1VUUFVUX1NVUFBPUlQp
CisgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUob3B0aW9uc1JlZi5nZXQoKSwgQVZDRlBsYXllckFw
cGxpZXNNZWRpYVNlbGVjdGlvbkNyaXRlcmlhQXV0b21hdGljYWxseUtleSwga0NGQm9vbGVhblRy
dWUpOworI2VuZGlmCisKICAgICAvLyBGSVhNRTogV2UgbmVlZCBhIHdheSB0byBjcmVhdGUgYSBB
VlBsYXllciB3aXRob3V0IGFuIEFWUGxheWVySXRlbSwgc2VlIDxyZGFyOi8vcHJvYmxlbS85ODc3
NzMwPi4KICAgICBBVkNGUGxheWVyUmVmIHBsYXllclJlZiA9IEFWQ0ZQbGF5ZXJDcmVhdGVXaXRo
UGxheWVySXRlbUFuZE9wdGlvbnMoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYXZQbGF5ZXJJdGVtKCks
IG9wdGlvbnNSZWYuZ2V0KCksIG1fbm90aWZpY2F0aW9uUXVldWUpOwogICAgIG1fYXZQbGF5ZXIg
PSBhZG9wdENGKHBsYXllclJlZik7CisjaWYgSEFWRShBVkZPVU5EQVRJT05fTUVESUFfU0VMRUNU
SU9OX0dST1VQKSAmJiBIQVZFKEFWRk9VTkRBVElPTl9MRUdJQkxFX09VVFBVVF9TVVBQT1JUKQor
ICAgIEFWQ0ZQbGF5ZXJTZXRDbG9zZWRDYXB0aW9uRGlzcGxheUVuYWJsZWQocGxheWVyUmVmLCBG
QUxTRSk7CisjZW5kaWYKIAogICAgIGlmIChtX2QzZERldmljZSAmJiBBVkNGUGxheWVyU2V0RGly
ZWN0M0REZXZpY2VQdHIoKSkKICAgICAgICAgQVZDRlBsYXllclNldERpcmVjdDNERGV2aWNlUHRy
KCkocGxheWVyUmVmLCBtX2QzZERldmljZS5nZXQoKSk7CiAKKyNpZiBIQVZFKEFWRk9VTkRBVElP
Tl9NRURJQV9TRUxFQ1RJT05fR1JPVVApICYmIEhBVkUoQVZGT1VOREFUSU9OX0xFR0lCTEVfT1VU
UFVUX1NVUFBPUlQpCisgICAgLy8gQmVjYXVzZSBvZiBhIGJ1ZyBpbiBBVkZvdW5kYXRpb25DRiwg
d2UgaGF2ZSB0byB3YWl0IHVudGlsIHRoZSBwbGF5ZXIgaXMgY3JlYXRlZCBiZWZvcmUgd2UgY2Fu
IGFkZCB0aGUgbGVnaWJsZSBvdXRwdXQ6CisgICAgLy8gT25jZSA8cmRhcjovL3Byb2JsZW0vMTQz
OTA0NjY+IHRoaXMgaXMgZml4ZWQsIHdlIGNhbiByZW1vdmUgdGhlIGZvbGxvd2luZyB0d28gbGlu
ZXMuCisgICAgOjpTbGVlcCgxMDAwKTsgLy8gRklYTUU6IFRoaXMgaXMgYmVpbmcgZml4ZWQgYXMg
cGFydCBvZiA8cmRhcjovL3Byb2JsZW0vMTQzOTA0NjY+CisgICAgQVZDRlBsYXllckl0ZW1BZGRP
dXRwdXQoYXZQbGF5ZXJJdGVtKCksIGxlZ2libGVPdXRwdXQoKSk7CisjZW5kaWYKKwogICAgIENG
Tm90aWZpY2F0aW9uQ2VudGVyUmVmIGNlbnRlciA9IENGTm90aWZpY2F0aW9uQ2VudGVyR2V0TG9j
YWxDZW50ZXIoKTsKICAgICBBU1NFUlQoY2VudGVyKTsKIApAQCAtMTA0MSw4ICsxMzQ0LDMwIEBA
IHZvaWQgQVZGV3JhcHBlcjo6Y3JlYXRlUGxheWVySXRlbSgpCiAgICAgQ0ZOb3RpZmljYXRpb25D
ZW50ZXJBZGRPYnNlcnZlcihjZW50ZXIsIGNhbGxiYWNrQ29udGV4dCgpLCBub3RpZmljYXRpb25D
YWxsYmFjaywgQVZDRlBsYXllckl0ZW1Jc1BsYXliYWNrTGlrZWx5VG9LZWVwVXBDaGFuZ2VkTm90
aWZpY2F0aW9uLCBpdGVtUmVmLCBDRk5vdGlmaWNhdGlvblN1c3BlbnNpb25CZWhhdmlvckRlbGl2
ZXJJbW1lZGlhdGVseSk7CiAgICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJBZGRPYnNlcnZlcihjZW50
ZXIsIGNhbGxiYWNrQ29udGV4dCgpLCBub3RpZmljYXRpb25DYWxsYmFjaywgQVZDRlBsYXllckl0
ZW1Jc1BsYXliYWNrQnVmZmVyRW1wdHlDaGFuZ2VkTm90aWZpY2F0aW9uLCBpdGVtUmVmLCBDRk5v
dGlmaWNhdGlvblN1c3BlbnNpb25CZWhhdmlvckRlbGl2ZXJJbW1lZGlhdGVseSk7CiAgICAgQ0ZO
b3RpZmljYXRpb25DZW50ZXJBZGRPYnNlcnZlcihjZW50ZXIsIGNhbGxiYWNrQ29udGV4dCgpLCBu
b3RpZmljYXRpb25DYWxsYmFjaywgQVZDRlBsYXllckl0ZW1Jc1BsYXliYWNrQnVmZmVyRnVsbENo
YW5nZWROb3RpZmljYXRpb24sIGl0ZW1SZWYsIENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2
aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsKKyAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2Vy
dmVyKGNlbnRlciwgY2FsbGJhY2tDb250ZXh0KCksIG5vdGlmaWNhdGlvbkNhbGxiYWNrLCBBVkNG
UGxheWVySXRlbUR1cmF0aW9uQ2hhbmdlZE5vdGlmaWNhdGlvbiwgaXRlbVJlZiwgQ0ZOb3RpZmlj
YXRpb25TdXNwZW5zaW9uQmVoYXZpb3JEZWxpdmVySW1tZWRpYXRlbHkpOworICAgIC8vIEZJWE1F
OiBBcmUgdGhlcmUgb3RoZXIgbGVnaWJsZSBvdXRwdXQgdGhpbmdzIHdlIG5lZWQgdG8gcmVnaXN0
ZXIgZm9yPyBhc3NldCwgaGFzRW5hYmxlZEF1ZGlvPwogCiAgICAgQ0ZOb3RpZmljYXRpb25DZW50
ZXJBZGRPYnNlcnZlcihjZW50ZXIsIGNhbGxiYWNrQ29udGV4dCgpLCBub3RpZmljYXRpb25DYWxs
YmFjaywgQ0FDRkNvbnRleHROZWVkc0ZsdXNoTm90aWZpY2F0aW9uKCksIDAsIENGTm90aWZpY2F0
aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsKKworI2lmIEhBVkUoQVZG
T1VOREFUSU9OX01FRElBX1NFTEVDVElPTl9HUk9VUCkgJiYgSEFWRShBVkZPVU5EQVRJT05fTEVH
SUJMRV9PVVRQVVRfU1VQUE9SVCkKKyAgICBjb25zdCBDRlRpbWVJbnRlcnZhbCBsZWdpYmxlT3V0
cHV0QWR2YW5jZUludGVydmFsID0gMjsKKworICAgIG1fbGVnaWJsZU91dHB1dCA9IGFkb3B0Q0Yo
QVZDRlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0Q3JlYXRlV2l0aE1lZGlhU3VidHlwZXNGb3JOYXRp
dmVSZXByZXNlbnRhdGlvbihrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwKSk7CisgICAgQVZDRlBsYXll
ckl0ZW1PdXRwdXRTZXRTdXBwcmVzc1BsYXllclJlbmRlcmluZyhtX2xlZ2libGVPdXRwdXQuZ2V0
KCksIFRSVUUpOworCisgICAgQVZDRlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0Q2FsbGJhY2tzIGNh
bGxiYWNrSW5mbzsKKyAgICBjYWxsYmFja0luZm8udmVyc2lvbiA9IGtBVkNGUGxheWVySXRlbUxl
Z2libGVPdXRwdXRfQ2FsbGJhY2tzVmVyc2lvbl8xOworICAgIEFTU0VSVChjYWxsYmFja0NvbnRl
eHQoKSk7CisgICAgY2FsbGJhY2tJbmZvLmNvbnRleHQgPSBjYWxsYmFja0NvbnRleHQoKTsKKyAg
ICBjYWxsYmFja0luZm8ubGVnaWJsZU91dHB1dENhbGxiYWNrID0gQVZGV3JhcHBlcjo6bGVnaWJs
ZU91dHB1dENhbGxiYWNrOworCisgICAgQVZDRlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0U2V0Q2Fs
bGJhY2tzKG1fbGVnaWJsZU91dHB1dC5nZXQoKSwgJmNhbGxiYWNrSW5mbywgZGlzcGF0Y2hfZ2V0
X21haW5fcXVldWUoKSk7CisgICAgQVZDRlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0U2V0QWR2YW5j
ZUludGVydmFsRm9yQ2FsbGJhY2tJbnZvY2F0aW9uKG1fbGVnaWJsZU91dHB1dC5nZXQoKSwgbGVn
aWJsZU91dHB1dEFkdmFuY2VJbnRlcnZhbCk7CisgICAgQVZDRlBsYXllckl0ZW1MZWdpYmxlT3V0
cHV0U2V0VGV4dFN0eWxpbmdSZXNvbHV0aW9uKG1fbGVnaWJsZU91dHB1dC5nZXQoKSwgQVZDRlBs
YXllckl0ZW1MZWdpYmxlT3V0cHV0VGV4dFN0eWxpbmdSZXNvbHV0aW9uU291cmNlQW5kUnVsZXNP
bmx5KTsKKyAgICAvLyBXZSBjYW5ub3QgYWRkIHRoZSBMZWdpYmxlIE91dHB1dCB0byB0aGUgcGxh
eWVyIGl0ZW0gdW50aWwgdGhlIHBsYXllciBpcyBjb25zdHJ1Y3RlZC4gPHJkYXI6Ly9wcm9ibGVt
LzE0MzkwNDY2PgorICAgIC8vIE9uY2UgdGhpcyBpcyBmaXhlZCwgd2UgY2FuIHVuY29tbWVudCB0
aGUgZm9sbG93aW5nIGxpbmUuCisgICAgLy8gQVZDRlBsYXllckl0ZW1BZGRPdXRwdXQobV9hdlBs
YXllckl0ZW0uZ2V0KCksIG1fbGVnaWJsZU91dHB1dC5nZXQoKSk7CisjZW5kaWYKIH0KIAogdm9p
ZCBBVkZXcmFwcGVyOjpwZXJpb2RpY1RpbWVPYnNlcnZlckNhbGxiYWNrKEFWQ0ZQbGF5ZXJSZWYs
IENNVGltZSBjbVRpbWUsIHZvaWQqIGNvbnRleHQpCkBAIC0xMTcxLDYgKzE0OTYsNTkgQEAgdm9p
ZCBBVkZXcmFwcGVyOjpzZWVrVG9UaW1lKGZsb2F0IHRpbWUpCiAgICAgICAgIGtDTVRpbWVaZXJv
LCBrQ01UaW1lWmVybywgJnNlZWtDb21wbGV0ZWRDYWxsYmFjaywgY2FsbGJhY2tDb250ZXh0KCkp
OwogfQogCitzdHJ1Y3QgTGVnaWJsZU91dHB1dERhdGEgeworICAgIFJldGFpblB0cjxDRkFycmF5
UmVmPiBtX2F0dHJpYnV0ZWRTdHJpbmdzOworICAgIGRvdWJsZSBtX3RpbWU7CisgICAgdm9pZCog
bV9jb250ZXh0OworCisgICAgTGVnaWJsZU91dHB1dERhdGEoQ0ZBcnJheVJlZiBzdHJpbmdzLCBk
b3VibGUgdGltZSwgdm9pZCogY29udGV4dCkKKyAgICAgICAgOiBtX2F0dHJpYnV0ZWRTdHJpbmdz
KHN0cmluZ3MpLCBtX3RpbWUodGltZSksIG1fY29udGV4dChjb250ZXh0KQorICAgIHsKKyAgICB9
Cit9OworCit2b2lkIEFWRldyYXBwZXI6OnByb2Nlc3NDdWUodm9pZCogY29udGV4dCkKK3sKKyAg
ICBBU1NFUlQoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSA9PSBkaXNwYXRjaF9nZXRfY3VycmVu
dF9xdWV1ZSgpKTsKKyAgICBBU1NFUlQoY29udGV4dCk7CisKKyAgICBpZiAoIWNvbnRleHQpCisg
ICAgICAgIHJldHVybjsKKworICAgIE93blB0cjxMZWdpYmxlT3V0cHV0RGF0YT4gbGVnaWJsZU91
dHB1dERhdGEgPSBhZG9wdFB0cihyZWludGVycHJldF9jYXN0PExlZ2libGVPdXRwdXREYXRhKj4o
Y29udGV4dCkpOworCisgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1hcExvY2soKSk7CisgICAgQVZG
V3JhcHBlciogc2VsZiA9IGF2ZldyYXBwZXJGb3JDYWxsYmFja0NvbnRleHQobGVnaWJsZU91dHB1
dERhdGEtPm1fY29udGV4dCk7CisgICAgaWYgKCFzZWxmKSB7CisgICAgICAgIExPRyhNZWRpYSwg
IkFWRldyYXBwZXI6OnByb2Nlc3NDdWUgaW52b2tlZCBmb3IgZGVsZXRlZCBBVkZXcmFwcGVyICVk
IiwgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGNvbnRleHQpKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGlmICghc2VsZi0+bV9jdXJyZW50VHJhY2spCisgICAgICAgIHJldHVy
bjsKKworICAgIHNlbGYtPm1fY3VycmVudFRyYWNrLT5wcm9jZXNzQ3VlKGxlZ2libGVPdXRwdXRE
YXRhLT5tX2F0dHJpYnV0ZWRTdHJpbmdzLmdldCgpLCBsZWdpYmxlT3V0cHV0RGF0YS0+bV90aW1l
KTsKK30KKwordm9pZCBBVkZXcmFwcGVyOjpsZWdpYmxlT3V0cHV0Q2FsbGJhY2sodm9pZCogY29u
dGV4dCwgQVZDRlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0UmVmIGxlZ2libGVPdXRwdXQsIENGQXJy
YXlSZWYgYXR0cmlidXRlZFN0cmluZ3MsIENGQXJyYXlSZWYgLypuYXRpdmVTYW1wbGVCdWZmZXJz
Ki8sIENNVGltZSBpdGVtVGltZSkKK3sKKyAgICBBU1NFUlQoZGlzcGF0Y2hfZ2V0X21haW5fcXVl
dWUoKSA9PSBkaXNwYXRjaF9nZXRfY3VycmVudF9xdWV1ZSgpKTsKKyAgICBNdXRleExvY2tlciBs
b2NrZXIobWFwTG9jaygpKTsKKyAgICBBVkZXcmFwcGVyKiBzZWxmID0gYXZmV3JhcHBlckZvckNh
bGxiYWNrQ29udGV4dChjb250ZXh0KTsKKyAgICBpZiAoIXNlbGYpIHsKKyAgICAgICAgTE9HKE1l
ZGlhLCAiQVZGV3JhcHBlcjo6bGVnaWJsZU91dHB1dENhbGxiYWNrIGludm9rZWQgZm9yIGRlbGV0
ZWQgQVZGV3JhcHBlciAlZCIsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihjb250ZXh0KSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBMT0coTWVkaWEsICJBVkZXcmFwcGVyOjps
ZWdpYmxlT3V0cHV0Q2FsbGJhY2soJXApIiwgc2VsZik7CisKKyAgICBBU1NFUlQobGVnaWJsZU91
dHB1dCA9PSBzZWxmLT5tX2xlZ2libGVPdXRwdXQpOworCisgICAgT3duUHRyPExlZ2libGVPdXRw
dXREYXRhPiBsZWdpYmxlT3V0cHV0RGF0YSA9IGFkb3B0UHRyKG5ldyBMZWdpYmxlT3V0cHV0RGF0
YShhdHRyaWJ1dGVkU3RyaW5ncywgQ01UaW1lR2V0U2Vjb25kcyhpdGVtVGltZSksIGNvbnRleHQp
KTsKKworICAgIGRpc3BhdGNoX2FzeW5jX2YoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgbGVn
aWJsZU91dHB1dERhdGEubGVha1B0cigpLCBwcm9jZXNzQ3VlKTsKK30KKwogdm9pZCBBVkZXcmFw
cGVyOjpzZXRBc3NldChBVkNGVVJMQXNzZXRSZWYgYXNzZXQpCiB7CiAgICAgaWYgKGFzc2V0ID09
IGF2QXNzZXQoKSkKQEAgLTEyODMsNiArMTY2MSwxOSBAQCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4g
QVZGV3JhcHBlcjo6Y3JlYXRlCiAgICAgcmV0dXJuIGltYWdlOwogfQogCisjaWYgSEFWRShBVkZP
VU5EQVRJT05fTUVESUFfU0VMRUNUSU9OX0dST1VQKSAmJiBIQVZFKEFWRk9VTkRBVElPTl9MRUdJ
QkxFX09VVFBVVF9TVVBQT1JUKQorQVZDRk1lZGlhU2VsZWN0aW9uR3JvdXBSZWYgQVZGV3JhcHBl
cjo6c2FmZU1lZGlhU2VsZWN0aW9uR3JvdXBGb3JMZWdpYmxlTWVkaWEoKSBjb25zdAoreworICAg
IGlmICghYXZBc3NldCgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmIChBVkNGQXNzZXRH
ZXRTdGF0dXNPZlZhbHVlRm9yUHJvcGVydHkoYXZBc3NldCgpLCBBVkNGQXNzZXRQcm9wZXJ0eUF2
YWlsYWJsZU1lZGlhQ2hhcmFjdGVyaXN0aWNzV2l0aE1lZGlhU2VsZWN0aW9uT3B0aW9ucywgMCkg
IT0gQVZDRlByb3BlcnR5VmFsdWVTdGF0dXNMb2FkZWQpCisgICAgICAgIHJldHVybiAwOworCisg
ICAgcmV0dXJuIEFWQ0ZBc3NldEdldFNlbGVjdGlvbkdyb3VwRm9yTWVkaWFDaGFyYWN0ZXJpc3Rp
YyhhdkFzc2V0KCksIEFWQ0ZNZWRpYUNoYXJhY3RlcmlzdGljTGVnaWJsZSk7Cit9CisjZW5kaWYK
Kwogdm9pZCBMYXllckNsaWVudDo6cGxhdGZvcm1DQUxheWVyTGF5b3V0U3VibGF5ZXJzT2ZMYXll
cihQbGF0Zm9ybUNBTGF5ZXIqIHdyYXBwZXJMYXllcikKIHsKICAgICBBU1NFUlQobV9wYXJlbnQp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2Nm
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbkNGLmgJKHJldmlzaW9uIDE1Mjc5MykKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25DRi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCwxMCArMzgsOSBAQCBjbGFzcyBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25DRiA6CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+TWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YoKTsKIAotICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVy
TWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIpOworICAgIHZpcnR1YWwgdm9pZCB0cmFj
a3NDaGFuZ2VkKCkgT1ZFUlJJREU7CiAKLSAgICAvL0ZJWE1FOiB0aGlzIG5lZWRzIHRvIGJlIGlt
cGxlbWVudGVkCi0gICAgdmlydHVhbCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGKiBjdXJyZW50
VHJhY2soKSBjb25zdCB7IHJldHVybiAwOyB9CisgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJNZWRp
YUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhcik7CiAKIHByaXZhdGU6CiAgICAgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YoTWVkaWFQbGF5ZXIqKTsKQEAgLTg1LDcgKzg0LDYgQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIGZsb2F0IHBsYXRmb3JtRHVyYXRpb24oKSBjb25zdDsKICAg
ICB2aXJ0dWFsIGZsb2F0IHBsYXRmb3JtTWF4VGltZUxvYWRlZCgpIGNvbnN0OwogICAgIHZpcnR1
YWwgdm9pZCBiZWdpbkxvYWRpbmdNZXRhZGF0YSgpOwotICAgIHZpcnR1YWwgdm9pZCB0cmFja3ND
aGFuZ2VkKCk7CiAgICAgdmlydHVhbCB2b2lkIHNpemVDaGFuZ2VkKCk7CiAKICAgICB2aXJ0dWFs
IGJvb2wgaGFzQXZhaWxhYmxlVmlkZW9GcmFtZSgpIGNvbnN0OwpAQCAtMTAxLDkgKzk5LDI1IEBA
IHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgY29udGVudHNOZWVkc0Rpc3BsYXkoKTsKIAor
ICAgIHZpcnR1YWwgU3RyaW5nIGxhbmd1YWdlT2ZQcmltYXJ5QXVkaW9UcmFjaygpIGNvbnN0IE9W
RVJSSURFOworCisjaWYgSEFWRShBVkZPVU5EQVRJT05fTUVESUFfU0VMRUNUSU9OX0dST1VQKQor
ICAgIHZvaWQgcHJvY2Vzc01lZGlhU2VsZWN0aW9uT3B0aW9ucygpOworI2VuZGlmCisKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0Q3VycmVudFRyYWNrKEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkYqKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkYqIGN1cnJlbnRU
cmFjaygpIGNvbnN0IE9WRVJSSURFOworICAgIHZvaWQgcHJvY2Vzc05ld0FuZFJlbW92ZWRUZXh0
VHJhY2tzKGNvbnN0IFZlY3RvcjxSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRj4gPiYp
OworICAgIHZvaWQgY2xlYXJUZXh0VHJhY2tzKCk7CisKKyNpZiAhSEFWRShBVkZPVU5EQVRJT05f
TEVHSUJMRV9PVVRQVVRfU1VQUE9SVCkKKyAgICB2b2lkIHByb2Nlc3NMZWdhY3lDbG9zZWRDYXB0
aW9uc1RyYWNrcygpOworI2VuZGlmCisKICAgICBmcmllbmQgY2xhc3MgQVZGV3JhcHBlcjsKICAg
ICBBVkZXcmFwcGVyKiBtX2F2ZldyYXBwZXI7CiAgICAgCisgICAgbXV0YWJsZSBTdHJpbmcgbV9s
YW5ndWFnZU9mUHJpbWFyeUF1ZGlvVHJhY2s7CiAgICAgYm9vbCBtX3ZpZGVvRnJhbWVIYXNEcmF3
bjsKIH07CiAKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDE1Mjc5MykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDIxIEBACisyMDEzLTA3LTE2ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1A
YXBwbGUuY29tPgorCisgICAgICAgIFtXaW5dIFN1cHBvcnQgaW4tYmFuZCB0ZXh0IHRyYWNrcy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzc3MAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBX
aW5MYXVuY2hlciB0byBydW4gaW4gYSBDRlJ1bkxvb3AgKHJhdGhlciB0aGFuIGEgaGFuZC13cml0
dGVuIFdpbmRvd3MgZXZlbnQgbG9vcCkgc28gdGhhdAorICAgICAgICBsaWJkaXNwYXRjaCBhbmQg
Q0ZSdW5Mb29wIGVsZW1lbnRzIGFyZSBzZXJ2aWNlcyBkdXJpbmcgdGhlIHJ1biBsb29wLgorCisg
ICAgICAgICogV2luTGF1bmNoZXIvV2luTGF1bmNoZXIuY3BwOgorICAgICAgICAoZGxsTGF1bmNo
ZXJFbnRyeVBvaW50KTogVXNlIENGUnVuTG9vcFJ1biAocmF0aGVyIHRoYW4gYSBXaW5kb3dzIG1l
c3NhZ2UgbG9vcCkgaWYgcnVubmluZyB3aXRoCisgICAgICAgIGEgQ29yZUZvdW5kYXRpb24gKG9y
IENGTGl0ZSkgc3VwcG9ydCBsaWJyYXJ5LgorICAgICAgICAqIFdpbkxhdW5jaGVyL1dpbkxhdW5j
aGVyLnZjeHByb2ovV2luTGF1bmNoZXJDRi5wcm9wczogQWRkZWQuCisgICAgICAgICogV2luTGF1
bmNoZXIvV2luTGF1bmNoZXIudmN4cHJvai9XaW5MYXVuY2hlckNGTGl0ZS5wcm9wczogQWRkZWQu
CisgICAgICAgICogV2luTGF1bmNoZXIvV2luTGF1bmNoZXIudmN4cHJvai9XaW5MYXVuY2hlckxp
Yi52Y3hwcm9qOiBBZGQgcmVmZXJlbmNlcyB0byBXaW5MYXVuY2hlckNGLnByb3BzCisgICAgICAg
IGFuZCBXaW5MYXVuY2hlckNGTGl0ZS5wcm9wcy4KKwogMjAxMy0wNy0xNyAgQ29tbWl0IFF1ZXVl
ICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGlu
ZyBvdXQgcjE1MTUzNS4KSW5kZXg6IFRvb2xzL1dpbkxhdW5jaGVyL1dpbkxhdW5jaGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9XaW5MYXVuY2hlci9XaW5MYXVuY2hlci5jcHAJKHJldmlzaW9u
IDE1Mjc5MykKKysrIFRvb2xzL1dpbkxhdW5jaGVyL1dpbkxhdW5jaGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzIsNyArMzIsMTQgQEAKICNpbmNsdWRlICJET01EZWZhdWx0SW1wbC5oIgogI2lu
Y2x1ZGUgIlByaW50V2ViVUlEZWxlZ2F0ZS5oIgogI2luY2x1ZGUgPFdlYktpdC9XZWJLaXRDT01B
UEkuaD4KKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KIAorI2lmIFVTRShDRikKKyNpbmNsdWRl
IDxDb3JlRm91bmRhdGlvbi9DRlByaXYuaD4KKyNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9DRlJ1
bkxvb3AuaD4KKyNlbmRpZgorCisjaW5jbHVkZSA8YXNzZXJ0Lmg+CiAjaW5jbHVkZSA8Y29tbWN0
cmwuaD4KICNpbmNsdWRlIDxjb21tZGxnLmg+CiAjaW5jbHVkZSA8b2JqYmFzZS5oPgpAQCAtNDIx
LDEyICs0MjgsMTcgQEAgZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgaW50IFdJTgog
ICAgIH0KIAogICAgIC8vIE1haW4gbWVzc2FnZSBsb29wOgorI2lmIFVTRShDRikKKyAgICBfQ0ZS
dW5Mb29wU2V0V2luZG93c01lc3NhZ2VRdWV1ZU1hc2soQ0ZSdW5Mb29wR2V0TWFpbigpLCBRU19B
TExJTlBVVCB8IFFTX0FMTFBPU1RNRVNTQUdFLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOworICAg
IENGUnVuTG9vcFJ1bigpOworI2Vsc2UKICAgICB3aGlsZSAoR2V0TWVzc2FnZSgmbXNnLCBOVUxM
LCAwLCAwKSkgewogICAgICAgICBpZiAoIVRyYW5zbGF0ZUFjY2VsZXJhdG9yKG1zZy5od25kLCBo
QWNjZWxUYWJsZSwgJm1zZykpIHsKICAgICAgICAgICAgIFRyYW5zbGF0ZU1lc3NhZ2UoJm1zZyk7
CiAgICAgICAgICAgICBEaXNwYXRjaE1lc3NhZ2UoJm1zZyk7CiAgICAgICAgIH0KICAgICB9Cisj
ZW5kaWYKIAogZXhpdDoKICAgICBnUHJpbnREZWxlZ2F0ZS0+UmVsZWFzZSgpOwpJbmRleDogVG9v
bHMvV2luTGF1bmNoZXIvV2luTGF1bmNoZXIudmN4cHJvai9XaW5MYXVuY2hlckNGLnByb3BzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1dpbkxhdW5jaGVyL1dpbkxhdW5jaGVyLnZjeHByb2ovV2luTGF1
bmNoZXJDRi5wcm9wcwkocmV2aXNpb24gMCkKKysrIFRvb2xzL1dpbkxhdW5jaGVyL1dpbkxhdW5j
aGVyLnZjeHByb2ovV2luTGF1bmNoZXJDRi5wcm9wcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDEyIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/Pg0KKzxQcm9q
ZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNv
bS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4NCisgIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVy
dHlTaGVldHMiIC8+DQorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4NCisg
IDxQcm9wZXJ0eUdyb3VwIC8+DQorICA8SXRlbURlZmluaXRpb25Hcm91cD4NCisgICAgPExpbms+
DQorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Q29yZUZvdW5kYXRpb24kKERlYnVnU3Vm
Zml4KS5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2ll
cz4NCisgICAgPC9MaW5rPg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1Hcm91
cCAvPg0KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBUb29s
cy9XaW5MYXVuY2hlci9XaW5MYXVuY2hlci52Y3hwcm9qL1dpbkxhdW5jaGVyQ0ZMaXRlLnByb3Bz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1dpbkxhdW5jaGVyL1dpbkxhdW5jaGVyLnZjeHByb2ovV2lu
TGF1bmNoZXJDRkxpdGUucHJvcHMJKHJldmlzaW9uIDApCisrKyBUb29scy9XaW5MYXVuY2hlci9X
aW5MYXVuY2hlci52Y3hwcm9qL1dpbkxhdW5jaGVyQ0ZMaXRlLnByb3BzCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMTIgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04
Ij8+DQorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5t
aWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPg0KKyAgPEltcG9ydEdyb3VwIExh
YmVsPSJQcm9wZXJ0eVNoZWV0cyIgLz4NCisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFj
cm9zIiAvPg0KKyAgPFByb3BlcnR5R3JvdXAgLz4NCisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPg0K
KyAgICA8TGluaz4NCisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz5DRkxpdGUubGliOyUo
QWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+DQorICAgIDwv
TGluaz4NCisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4NCisgIDxJdGVtR3JvdXAgLz4NCis8L1By
b2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogVG9vbHMvV2luTGF1bmNo
ZXIvV2luTGF1bmNoZXIudmN4cHJvai9XaW5MYXVuY2hlckxpYi52Y3hwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1dpbkxhdW5jaGVyL1dpbkxhdW5jaGVyLnZjeHByb2ovV2luTGF1bmNoZXJMaWIu
dmN4cHJvagkocmV2aXNpb24gMTUyNzkzKQorKysgVG9vbHMvV2luTGF1bmNoZXIvV2luTGF1bmNo
ZXIudmN4cHJvai9XaW5MYXVuY2hlckxpYi52Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC02Miwy
NyArNjIsMzMgQEAKICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+DQog
ICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRm
b3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9z
b2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0
Zm9ybSIgLz4NCiAgICAgPEltcG9ydCBQcm9qZWN0PSJXaW5MYXVuY2hlckxpYlJlbGVhc2UucHJv
cHMiIC8+DQorICAgIDxJbXBvcnQgUHJvamVjdD0iV2luTGF1bmNoZXJDRi5wcm9wcyIgLz4NCiAg
IDwvSW1wb3J0R3JvdXA+DQogICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfFdpbjMyJyIgTGFiZWw9IlByb3Bl
cnR5U2hlZXRzIj4NCiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3Nv
ZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJS
b290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9Ikxv
Y2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KICAgICA8SW1wb3J0IFByb2plY3Q9IldpbkxhdW5jaGVy
TGliUmVsZWFzZS5wcm9wcyIgLz4NCisgICAgPEltcG9ydCBQcm9qZWN0PSJXaW5MYXVuY2hlckNG
TGl0ZS5wcm9wcyIgLz4NCiAgIDwvSW1wb3J0R3JvdXA+DQogICA8SW1wb3J0R3JvdXAgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyIg
TGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290
RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhp
c3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMn
KSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KICAgICA8SW1wb3J0IFByb2plY3Q9
IldpbkxhdW5jaGVyTGliUHJvZHVjdGlvbi5wcm9wcyIgLz4NCisgICAgPEltcG9ydCBQcm9qZWN0
PSJXaW5MYXVuY2hlckNGLnByb3BzIiAvPg0KICAgPC9JbXBvcnRHcm91cD4NCiAgIDxJbXBvcnRH
cm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdp
bjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVz
ZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlv
bj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIu
cHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KICAgICA8SW1wb3J0IFBy
b2plY3Q9IldpbkxhdW5jaGVyTGliRGVidWcucHJvcHMiIC8+DQorICAgIDxJbXBvcnQgUHJvamVj
dD0iV2luTGF1bmNoZXJDRi5wcm9wcyIgLz4NCiAgIDwvSW1wb3J0R3JvdXA+DQogICA8SW1wb3J0
R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19X
aW5DYWlyb3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+DQogICAgIDxJbXBvcnQgUHJv
amVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3Bz
IiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRm
b3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4NCiAgICAg
PEltcG9ydCBQcm9qZWN0PSJXaW5MYXVuY2hlckxpYkRlYnVnLnByb3BzIiAvPg0KKyAgICA8SW1w
b3J0IFByb2plY3Q9IldpbkxhdW5jaGVyQ0ZMaXRlLnByb3BzIiAvPg0KICAgPC9JbXBvcnRHcm91
cD4NCiAgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnU3VmZml4fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCiAgICAg
PEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0p
LnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQu
Q3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3Jt
IiAvPg0KICAgICA8SW1wb3J0IFByb2plY3Q9IldpbkxhdW5jaGVyTGliRGVidWcucHJvcHMiIC8+
DQogICAgIDxJbXBvcnQgUHJvamVjdD0iJChXZWJLaXRfTGlicmFyaWVzKVx0b29sc1x2c3Byb3Bz
XGRlYnVnc3VmZml4LnByb3BzIiAvPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9IldpbkxhdW5jaGVy
Q0YucHJvcHMiIC8+DQogICA8L0ltcG9ydEdyb3VwPg0KICAgPFByb3BlcnR5R3JvdXAgTGFiZWw9
IlVzZXJNYWNyb3MiIC8+DQogICA8UHJvcGVydHlHcm91cD4NCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>206918</attachid>
            <date>2013-07-17 14:55:09 -0700</date>
            <delta_ts>2013-07-18 12:07:03 -0700</delta_ts>
            <desc>Patch with SoftLink changes</desc>
            <filename>bug-103770-20130717145506.patch</filename>
            <type>text/plain</type>
            <size>118784</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1MjgwMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExMCBAQAorMjAxMy0wNy0xNyAgQnJlbnQg
RnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBbV2luZG93c10gU3VwcG9y
dCBpbi1iYW5kIHRleHQgdHJhY2tzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTAzNzcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgRXhpc3RpbmcgbWVkaWEgdGVzdHMgY292ZXIgdGhlc2UgZmVhdHVyZXMu
CisKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qOiBBZGQgbmV3IGZp
bGVzIGZvciBXaW5kb3dzIGNhcHRpb25zCisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNv
cmUudmN4cHJvai5maWx0ZXJzOiBkaXR0by4KKyAgICAgICAgKiBjb25maWcuaDogTWFrZSBzdXJl
IHByb3BlciBidWlkIGZsYWdzIGFyZSB0dXJuZWQgb24gd2hlbiBidWlsZGluZworICAgICAgICB3
aXRoIEFWQ0ZfTEVHSUJMRV9PVVRQVVQuCisgICAgICAgICogcGFnZS9DYXB0aW9uVXNlclByZWZl
cmVuY2VzTWVkaWFBRi5jcHA6IFJldmlzZSB0byByZWR1Y2Ugc29mdCBsaW5raW5nCisgICAgICAg
IGR1cGxpY2F0aW9uIGJldHdlZW4gTWFjIGFuZCBXaW5kb3dzLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcDogVXBk
YXRlCisgICAgICAgIHRvIHN1cHBvcnQgV2luZG93cyBwbGF0Zm9ybSBieSByZW1vdmluZyBjb21w
aWxlciBndWFyZHMgYW5kIGFkZGluZworICAgICAgICBXaW5kb3dzIGRlY2xhcmF0aW9ucyBmb3Ig
c29mdC1saW5rIGZ1bmN0aW9ucy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oOiBEaXR0by4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
LmNwcDoKKyAgICAgICAgUmVtb3ZlIGJ1aWxkIGd1YXJkcyBwcmV2ZW50aW5nIFdpbmRvd3MgZnJv
bSB1c2luZyBMZWdpYmxlT3V0cHV0CisgICAgICAgIGZlYXR1cmVzLgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uOjpzZWVrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbjo6c2Vla0NvbXBsZXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb246OmRpc3BhdGNoTm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6dHJhY2tNb2RlQ2hhbmdlZCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uOjpjb250ZW50c05lZWRzRGlzcGxheSk6IERpdHRvCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0FWRm91bmRhdGlvbkNGU29mdExpbmtpbmcuaDoKKyAg
ICAgICAgQWRkIG5ldyBMZWdpYmxlT3V0cHV0IHN1cHBvcnQgZnVuY3Rpb25zLCBhbmQgdHJ5IHRv
IHJlZHVjZSBkdXBsaWNhdGlvbgorICAgICAgICBiZXR3ZWVuIFdpbmRvd3MgYW5kIE1hYyBzb2Z0
IGxpbmsgZGVjbGFyYXRpb25zLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9jZi9Db3JlTWVkaWFTb2Z0TGlua2luZy5oOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0YuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGOjpJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRik6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0
VHJhY2tQcml2YXRlQVZDRjo6ZGlzY29ubmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRU
ZXh0VHJhY2tQcml2YXRlQVZDRjo6a2luZCk6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0
VHJhY2tQcml2YXRlQVZDRjo6aXNDbG9zZWRDYXB0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRjo6aXNTREgpOgorICAgICAgICAoV2ViQ29yZTo6SW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0Y6OmNvbnRhaW5zT25seUZvcmNlZFN1YnRpdGxlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRjo6aXNNYWluUHJvZ3Jh
bUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0Y6
OmlzRWFzeVRvUmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRl
QVZDRjo6bGFiZWwpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFW
Q0Y6Omxhbmd1YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGVB
VkNGOjppc0RlZmF1bHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0Y6On5JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZD
Rik6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRjo6bWVkaWFT
ZWxlY3Rpb25PcHRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZDRi5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0Y6OkluYmFuZFRleHRU
cmFja1ByaXZhdGVMZWdhY3lBVkNGKToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFj
a1ByaXZhdGVMZWdhY3lBVkNGOjpkaXNjb25uZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFu
ZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGOjpraW5kKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
YmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGOjppc0Nsb3NlZENhcHRpb25zKToKKyAgICAg
ICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGOjpjb250YWluc09u
bHlGb3JjZWRTdWJ0aXRsZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUxlZ2FjeUFWQ0Y6OmlzTWFpblByb2dyYW1Db250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGOjppc0Vhc3lUb1JlYWQpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0Y6OmxhYmVsKToKKyAg
ICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGOjpsYW5ndWFn
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0luYmFuZFRl
eHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0Y6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZDRjo6fkluYmFuZFRleHRUcmFja1ByaXZh
dGVMZWdhY3lBVkNGKToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGVM
ZWdhY3lBVkNGOjphdlBsYXllckl0ZW1UcmFjayk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcDoK
KyAgICAgICAgVXBkYXRlIHRvIHN1cHBvcnQgTGVnaWJsZU91dHB1dCBmZWF0dXJlcyBmb3IgdGhl
IFdpbmRvd3MgcG9ydC4KKyAgICAgICAgKFdlYkNvcmU6OkFWRldyYXBwZXI6OmN1cnJlbnRUcmFj
ayk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6bGVnaWJsZU91dHB1dCk6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlTWV0YWRhdGFLZXlOYW1lcyk6IEFkZGVk
IG1pc3Npbmcga2V5IG5hbWVzLgorICAgICAgICAoV2ViQ29yZTo6YXZMZWdpYmxlT3V0cHV0KTog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpzYWZlTWVkaWFTZWxlY3Rpb25Hcm91cEZvckxlZ2li
bGVNZWRpYSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uQ0Y6OmNhbmNlbExvYWQpOiBDbGVhciB0ZXh0CisgICAgICAgIHRyYWNrcyB3aGVu
IGNhbmNlbGxpbmcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25DRjo6c2V0Q3VycmVudFRyYWNrKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6Y3VycmVudFRyYWNrKTogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6cGxhdGZvcm1E
dXJhdGlvbik6IFJldmlzZWQKKyAgICAgICAgdG8gbWF0Y2ggbG9naWMgaW4gT2JqZWN0aXZlIEMg
aW1wbGVtZW50YXRpb24uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25DRjo6Y3VycmVudFRpbWUpOiBSZXZpc2VkCisgICAgICAgIHRvIG1hdGNoIGxvZ2lj
IGluIE9iamVjdGl2ZSBDIGltcGxlbWVudGF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KToK
KyAgICAgICAgQ2hlY2sgcHJlc2VuY2Ugb2YgbWV0YWRhdGEgYmVmb3JlIHByb2NlZWRpbmcuIFJl
dmlzZWQgdG8gbWF0Y2ggbG9naWMKKyAgICAgICAgaW4gT2JqZWN0aXZlIEMgaW1wbGVtZW50YXRp
b24uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6
cGFpbnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbkNGOjp0cmFja3NDaGFuZ2VkKTogVXBkYXRlIGZvcgorICAgICAgICBpbi1iYW5kIHRl
eHQgdHJhY2tzLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uQ0Y6OmNsZWFyVGV4dFRyYWNrcyk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnByb2Nlc3NMZWdhY3lDbG9zZWRDYXB0aW9uc1Ry
YWNrcyk6CisgICAgICAgIEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uQ0Y6OnByb2Nlc3NOZXdBbmRSZW1vdmVkVGV4dFRyYWNrcyk6CisgICAg
ICAgIEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uQ0Y6OnByb2Nlc3NNZWRpYVNlbGVjdGlvbk9wdGlvbnMpOgorICAgICAgICBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkFWRldyYXBwZXI6OnNldEN1cnJlbnRUcmFjayk6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6Omxhbmd1YWdl
T2ZQcmltYXJ5QXVkaW9UcmFjayk6CisgICAgICAgIEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
QVZGV3JhcHBlcjo6QVZGV3JhcHBlcik6IEFkZCBuZXcgaW5pdGlhbGl6ZXJzLgorICAgICAgICAo
V2ViQ29yZTo6QVZGV3JhcHBlcjo6fkFWRldyYXBwZXIpOiBDbGVhbiB1cCB0ZXh0IHRyYWNrIGlu
Zm9ybWF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6Y3JlYXRlUGxheWVyKTog
QWRkIExlZ2libGUgT3V0cHV0IHN1cHBvcnQuCisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVy
OjpjcmVhdGVQbGF5ZXJJdGVtKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpMZWdpYmxlT3V0
cHV0RGF0YTo6TGVnaWJsZU91dHB1dERhdGEpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFW
RldyYXBwZXI6OnByb2Nlc3NDdWUpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFWRldyYXBw
ZXI6OmxlZ2libGVPdXRwdXRDYWxsYmFjayk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QVZG
V3JhcHBlcjo6c2FmZU1lZGlhU2VsZWN0aW9uR3JvdXBGb3JMZWdpYmxlTWVkaWEpOiBBZGRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uQ0YuaDoKKyAgICAgICAgVXBkYXRlIHRvIHN1cHBvcnQgTGVnaWJs
ZU91dHB1dCBmZWF0dXJlcyBmb3IgdGhlIFdpbmRvd3MgcG9ydC4KKyAgICAgICAgKiBwbGF0Zm9y
bS93aW4vU29mdExpbmtpbmcuaDogQ2hhbmdlIHNpZ25hdHVyZSBvZiB2YXJpYWJsZSBhY2Nlc3Nv
cgorICAgICAgICB0byBtYXRjaCBNYWMgc28gcmVkdWNlIGR1cGxpY2F0ZSBjb2RlLgorCiAyMDEz
LTA3LTE3ICBCZW0gSm9uZXMtQmV5ICA8YmpvbmVzYmVAYWRvYmUuY29tPgogCiAgICAgICAgIFtD
U1MgU2hhcGVzXSBQb3J0IHJlZmFjdG9yaW5nIG9mIHNoYXBlLW91dHNpZGUgY29kZSBmcm9tIEJs
aW5rCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jb25maWcuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9jb25maWcuaAkocmV2aXNpb24gMTUyNzkzKQorKysgU291cmNlL1dlYkNvcmUvY29u
ZmlnLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0MCw4ICsxNDAsMTAgQEAgdHlwZWRlZiBmbG9hdCBD
R0Zsb2F0OwogI2RlZmluZSBXVEZfVVNFX0FWRk9VTkRBVElPTiAxCiAKICNpZiBIQVZFKEFWQ0Zf
TEVHSUJMRV9PVVRQVVQpCisjZGVmaW5lIFdURl9VU0VfQVZGT1VOREFUSU9OIDEKICNkZWZpbmUg
SEFWRV9BVkZPVU5EQVRJT05fTUVESUFfU0VMRUNUSU9OX0dST1VQIDEKICNkZWZpbmUgSEFWRV9B
VkZPVU5EQVRJT05fTEVHSUJMRV9PVVRQVVRfU1VQUE9SVCAxCisjZGVmaW5lIEhBVkVfTUVESUFf
QUNDRVNTSUJJTElUWV9GUkFNRVdPUksgMQogI2VuZGlmCiAKICNlbmRpZgpJbmRleDogU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCShyZXZpc2lvbiAx
NTI3OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC00MzQ5LDYgKzQzNDksOSBAQAogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5ccGxhdGZvcm1cRmlsZVN0cmVhbS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxwbGF0Zm9ybVxGaWxlU3lzdGVtLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXEFOR0xFV2ViS2l0QnJpZGdlLmNwcCIgLz4KKyAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGF2Zm91bmRhdGlvblxjZlxJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRi5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxwbGF0Zm9ybVxncmFwaGljc1xhdmZvdW5kYXRpb25cY2ZcSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUxlZ2FjeUFWQ0YuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZv
cm1cZ3JhcGhpY3NcYXZmb3VuZGF0aW9uXEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwIiAv
PgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcY2Fpcm9cR0xD
b250ZXh0LmNwcCI+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJv
bUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJv
bUJ1aWxkPgpAQCAtMTE4NzQsNiArMTE4NzcsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5ccGxhdGZvcm1cRmxvYXRDb252ZXJzaW9uLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxwbGF0Zm9ybVxncmFwaGljc1xBTkdMRVdlYktpdEJyaWRnZS5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcQXVkaW9UcmFja1ByaXZhdGUuaCIg
Lz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGF2Zm91bmRh
dGlvblxjZlxJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRi5oIiAvPgorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcYXZmb3VuZGF0aW9uXGNmXEluYmFuZFRleHRU
cmFja1ByaXZhdGVMZWdhY3lBVkNGLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxw
bGF0Zm9ybVxncmFwaGljc1xhdmZvdW5kYXRpb25cSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcY2Fpcm9c
R0xDb250ZXh0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFw
aGljc1xjYWlyb1xHcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGNnXFN1YmltYWdlQ2FjaGVXaXRoVGltZXIu
aCI+CkBAIC0xMzk0MCw0ICsxMzk0Niw0IEBACiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1Rhcmdl
dHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CiAgIDxJbXBvcnRHcm91cCBMYWJlbD0i
RXh0ZW5zaW9uVGFyZ2V0cyI+CiAgIDwvSW1wb3J0R3JvdXA+Ci08L1Byb2plY3Q+Cis8L1Byb2pl
Y3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwkocmV2aXNp
b24gMTUyNzkzKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4
cHJvai5maWx0ZXJzCSh3b3JraW5nIGNvcHkpCkBAIC03MDY2LDYgKzcwNjYsMTYgQEAKICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGVnbFxHTENvbnRleHRFR0wu
Y3BwIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cZ3JhcGhpY3NcZWdsPC9GaWx0ZXI+CiAgICAg
PC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWls
ZERpcilcb2JqMzJcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNTVkdHcmFwaGljc0Vs
ZW1lbnQuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhp
Y3NcYXZmb3VuZGF0aW9uXGNmXEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGLmNwcCI+CisgICAg
ICA8RmlsdGVyPnBsYXRmb3JtXGdyYXBoaWNzXGF2Zm91bmRhdGlvblxjZjwvRmlsdGVyPgorICAg
IDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhp
Y3NcYXZmb3VuZGF0aW9uXEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwIj4KKyAgICAgIDxG
aWx0ZXI+cGxhdGZvcm1cZ3JhcGhpY3NcYXZmb3VuZGF0aW9uPC9GaWx0ZXI+CisgICAgPC9DbENv
bXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xhdmZv
dW5kYXRpb25cY2ZcSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0YuY3BwIj4KKyAgICAg
IDxGaWx0ZXI+cGxhdGZvcm1cZ3JhcGhpY3NcYXZmb3VuZGF0aW9uXGNmPC9GaWx0ZXI+CisgICAg
PC9DbENvbXBpbGU+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xmaWxlc3lzdGVtXEFzeW5jRmlsZVdyaXRlci5oIj4KQEAg
LTE0ODE2LDYgKzE0ODI2LDE1IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9y
bVxncmFwaGljc1xlZ2xcR0xDb250ZXh0RUdMLmgiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxn
cmFwaGljc1xlZ2w8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGF2Zm91bmRhdGlvblxjZlxJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlQVZDRi5oIj4KKyAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cZ3JhcGhpY3NcYXZmb3Vu
ZGF0aW9uXGNmPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xhdmZvdW5kYXRpb25cSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUFWRi5oIj4KKyAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cZ3JhcGhpY3NcYXZmb3VuZGF0aW9u
PC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxw
bGF0Zm9ybVxncmFwaGljc1xhdmZvdW5kYXRpb25cY2ZcSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxl
Z2FjeUFWQ0YuaCI+CisgICAgICA8RmlsdGVyPnBsYXRmb3JtXGdyYXBoaWNzXGF2Zm91bmRhdGlv
blxjZjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1H
cm91cD4KICAgICA8Tm9uZSBJbmNsdWRlPSIuLlxjc3NcQ1NTR3JhbW1hci55LmluIj4KQEAgLTE1
NzYzLDQgKzE1NzgyLDQgQEAKICAgICAgIDxGaWx0ZXI+cmVuZGVyaW5nPC9GaWx0ZXI+CiAgICAg
PC9DdXN0b21CdWlsZFN0ZXA+CiAgIDwvSXRlbUdyb3VwPgotPC9Qcm9qZWN0PgorPC9Qcm9qZWN0
PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwCShyZXZpc2lvbiAx
NTI3OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRp
YUFGLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgsODkgKzU4LDY1IEBACiAjZW5kaWYKIAogI2lm
IEhBVkUoTUVESUFfQUNDRVNTSUJJTElUWV9GUkFNRVdPUkspCisKICNpZiAhUExBVEZPUk0oV0lO
KQotU09GVF9MSU5LX0ZSQU1FV09SS19PUFRJT05BTChNZWRpYUFjY2Vzc2liaWxpdHkpCisjZGVm
aW5lIFNPRlRfTElOS19BVkZfRlJBTUVXT1JLKExpYikgU09GVF9MSU5LX0ZSQU1FV09SS19PUFRJ
T05BTChMaWIpCisjZGVmaW5lIFNPRlRfTElOS19BVkYoTGliLCBOYW1lLCBUeXBlKSBTT0ZUX0xJ
TksoTGliLCBOYW1lLCBUeXBlKQorI2RlZmluZSBTT0ZUX0xJTktfQVZGX1BPSU5URVIoTGliLCBO
YW1lLCBUeXBlKSBTT0ZUX0xJTktfUE9JTlRFUl9PUFRJT05BTChMaWIsIE5hbWUsIFR5cGUpCisj
ZGVmaW5lIFNPRlRfTElOS19BVkZfRlJBTUVXT1JLX0lNUE9SVChMaWIsIEZ1biwgUmV0dXJuVHlw
ZSwgQXJndW1lbnRzLCBTaWduYXR1cmUpIFNPRlRfTElOSyhMaWIsIEZ1biwgUmV0dXJuVHlwZSwg
QXJndW1lbnRzLCBTaWduYXR1cmUpCisjZWxzZQorI2RlZmluZSBTT0ZUX0xJTktfQVZGX0ZSQU1F
V09SSyhMaWIpIFNPRlRfTElOS19MSUJSQVJZKExpYikKKyNkZWZpbmUgU09GVF9MSU5LX0FWRihM
aWIsIE5hbWUsIFR5cGUpIFNPRlRfTElOS19ETExfSU1QT1JUKExpYiwgTmFtZSwgVHlwZSkKKyNk
ZWZpbmUgU09GVF9MSU5LX0FWRl9QT0lOVEVSKExpYiwgTmFtZSwgVHlwZSkgU09GVF9MSU5LX1ZB
UklBQkxFX0RMTF9JTVBPUlRfT1BUSU9OQUwoTGliLCBOYW1lLCBUeXBlKQorI2RlZmluZSBTT0ZU
X0xJTktfQVZGX0ZSQU1FV09SS19JTVBPUlQoTGliLCBGdW4sIFJldHVyblR5cGUsIEFyZ3VtZW50
cywgU2lnbmF0dXJlKSBTT0ZUX0xJTktfRExMX0lNUE9SVChMaWIsIEZ1biwgUmV0dXJuVHlwZSwg
X19jZGVjbCwgQXJndW1lbnRzLCBTaWduYXR1cmUpCisjZW5kaWYKIAotU09GVF9MSU5LKE1lZGlh
QWNjZXNzaWJpbGl0eSwgTUFDYXB0aW9uQXBwZWFyYW5jZUdldERpc3BsYXlUeXBlLCBNQUNhcHRp
b25BcHBlYXJhbmNlRGlzcGxheVR5cGUsIChNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluIGRvbWFp
biksIChkb21haW4pKQotU09GVF9MSU5LKE1lZGlhQWNjZXNzaWJpbGl0eSwgTUFDYXB0aW9uQXBw
ZWFyYW5jZVNldERpc3BsYXlUeXBlLCB2b2lkLCAoTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpbiBk
b21haW4sIE1BQ2FwdGlvbkFwcGVhcmFuY2VEaXNwbGF5VHlwZSBkaXNwbGF5VHlwZSksIChkb21h
aW4sIGRpc3BsYXlUeXBlKSkKLVNPRlRfTElOSyhNZWRpYUFjY2Vzc2liaWxpdHksIE1BQ2FwdGlv
bkFwcGVhcmFuY2VDb3B5Rm9yZWdyb3VuZENvbG9yLCBDR0NvbG9yUmVmLCAoTUFDYXB0aW9uQXBw
ZWFyYW5jZURvbWFpbiBkb21haW4sIE1BQ2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvciAqYmVoYXZp
b3IpLCAoZG9tYWluLCBiZWhhdmlvcikpCi1TT0ZUX0xJTksoTWVkaWFBY2Nlc3NpYmlsaXR5LCBN
QUNhcHRpb25BcHBlYXJhbmNlQ29weUJhY2tncm91bmRDb2xvciwgQ0dDb2xvclJlZiwgKE1BQ2Fw
dGlvbkFwcGVhcmFuY2VEb21haW4gZG9tYWluLCBNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3Ig
KmJlaGF2aW9yKSwgKGRvbWFpbiwgYmVoYXZpb3IpKQotU09GVF9MSU5LKE1lZGlhQWNjZXNzaWJp
bGl0eSwgTUFDYXB0aW9uQXBwZWFyYW5jZUNvcHlXaW5kb3dDb2xvciwgQ0dDb2xvclJlZiwgKE1B
Q2FwdGlvbkFwcGVhcmFuY2VEb21haW4gZG9tYWluLCBNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZp
b3IgKmJlaGF2aW9yKSwgKGRvbWFpbiwgYmVoYXZpb3IpKQotU09GVF9MSU5LKE1lZGlhQWNjZXNz
aWJpbGl0eSwgTUFDYXB0aW9uQXBwZWFyYW5jZUdldEZvcmVncm91bmRPcGFjaXR5LCBDR0Zsb2F0
LCAoTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpbiBkb21haW4sIE1BQ2FwdGlvbkFwcGVhcmFuY2VC
ZWhhdmlvciAqYmVoYXZpb3IpLCAoZG9tYWluLCBiZWhhdmlvcikpCi1TT0ZUX0xJTksoTWVkaWFB
Y2Nlc3NpYmlsaXR5LCBNQUNhcHRpb25BcHBlYXJhbmNlR2V0QmFja2dyb3VuZE9wYWNpdHksIENH
RmxvYXQsIChNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluIGRvbWFpbiwgTUFDYXB0aW9uQXBwZWFy
YW5jZUJlaGF2aW9yICpiZWhhdmlvciksIChkb21haW4sIGJlaGF2aW9yKSkKLVNPRlRfTElOSyhN
ZWRpYUFjY2Vzc2liaWxpdHksIE1BQ2FwdGlvbkFwcGVhcmFuY2VHZXRXaW5kb3dPcGFjaXR5LCBD
R0Zsb2F0LCAoTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpbiBkb21haW4sIE1BQ2FwdGlvbkFwcGVh
cmFuY2VCZWhhdmlvciAqYmVoYXZpb3IpLCAoZG9tYWluLCBiZWhhdmlvcikpCi1TT0ZUX0xJTkso
TWVkaWFBY2Nlc3NpYmlsaXR5LCBNQUNhcHRpb25BcHBlYXJhbmNlR2V0V2luZG93Um91bmRlZENv
cm5lclJhZGl1cywgQ0dGbG9hdCwgKE1BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW4gZG9tYWluLCBN
QUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3IgKmJlaGF2aW9yKSwgKGRvbWFpbiwgYmVoYXZpb3Ip
KQotU09GVF9MSU5LKE1lZGlhQWNjZXNzaWJpbGl0eSwgTUFDYXB0aW9uQXBwZWFyYW5jZUNvcHlG
b250RGVzY3JpcHRvckZvclN0eWxlLCBDVEZvbnREZXNjcmlwdG9yUmVmLCAoTUFDYXB0aW9uQXBw
ZWFyYW5jZURvbWFpbiBkb21haW4sICBNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3IgKmJlaGF2
aW9yLCBNQUNhcHRpb25BcHBlYXJhbmNlRm9udFN0eWxlIGZvbnRTdHlsZSksIChkb21haW4sIGJl
aGF2aW9yLCBmb250U3R5bGUpKQotU09GVF9MSU5LKE1lZGlhQWNjZXNzaWJpbGl0eSwgTUFDYXB0
aW9uQXBwZWFyYW5jZUdldFJlbGF0aXZlQ2hhcmFjdGVyU2l6ZSwgQ0dGbG9hdCwgKE1BQ2FwdGlv
bkFwcGVhcmFuY2VEb21haW4gZG9tYWluLCBNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3IgKmJl
aGF2aW9yKSwgKGRvbWFpbiwgYmVoYXZpb3IpKQotU09GVF9MSU5LKE1lZGlhQWNjZXNzaWJpbGl0
eSwgTUFDYXB0aW9uQXBwZWFyYW5jZUdldFRleHRFZGdlU3R5bGUsIE1BQ2FwdGlvbkFwcGVhcmFu
Y2VUZXh0RWRnZVN0eWxlLCAoTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpbiBkb21haW4sIE1BQ2Fw
dGlvbkFwcGVhcmFuY2VCZWhhdmlvciAqYmVoYXZpb3IpLCAoZG9tYWluLCBiZWhhdmlvcikpCi1T
T0ZUX0xJTksoTWVkaWFBY2Nlc3NpYmlsaXR5LCBNQUNhcHRpb25BcHBlYXJhbmNlQWRkU2VsZWN0
ZWRMYW5ndWFnZSwgYm9vbCwgKE1BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW4gZG9tYWluLCBDRlN0
cmluZ1JlZiBsYW5ndWFnZSksIChkb21haW4sIGxhbmd1YWdlKSk7Ci1TT0ZUX0xJTksoTWVkaWFB
Y2Nlc3NpYmlsaXR5LCBNQUNhcHRpb25BcHBlYXJhbmNlQ29weVNlbGVjdGVkTGFuZ3VhZ2VzLCBD
RkFycmF5UmVmLCAoTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpbiBkb21haW4pLCAoZG9tYWluKSk7
Ci1TT0ZUX0xJTksoTWVkaWFBY2Nlc3NpYmlsaXR5LCBNQUNhcHRpb25BcHBlYXJhbmNlQ29weVBy
ZWZlcnJlZENhcHRpb25pbmdNZWRpYUNoYXJhY3RlcmlzdGljcywgIENGQXJyYXlSZWYsIChNQUNh
cHRpb25BcHBlYXJhbmNlRG9tYWluIGRvbWFpbiksIChkb21haW4pKTsKK1NPRlRfTElOS19BVkZf
RlJBTUVXT1JLKE1lZGlhQWNjZXNzaWJpbGl0eSkKK1NPRlRfTElOS19BVkZfRlJBTUVXT1JLKENv
cmVUZXh0KQogCi1TT0ZUX0xJTktfUE9JTlRFUihNZWRpYUFjY2Vzc2liaWxpdHksIGtNQVhDYXB0
aW9uQXBwZWFyYW5jZVNldHRpbmdzQ2hhbmdlZE5vdGlmaWNhdGlvbiwgQ0ZTdHJpbmdSZWYpCi0j
ZGVmaW5lIGtNQVhDYXB0aW9uQXBwZWFyYW5jZVNldHRpbmdzQ2hhbmdlZE5vdGlmaWNhdGlvbiBn
ZXRrTUFYQ2FwdGlvbkFwcGVhcmFuY2VTZXR0aW5nc0NoYW5nZWROb3RpZmljYXRpb24oKQorU09G
VF9MSU5LX0FWRl9GUkFNRVdPUktfSU1QT1JUKE1lZGlhQWNjZXNzaWJpbGl0eSwgTUFDYXB0aW9u
QXBwZWFyYW5jZUdldERpc3BsYXlUeXBlLCBNQUNhcHRpb25BcHBlYXJhbmNlRGlzcGxheVR5cGUs
IChNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluIGRvbWFpbiksIChkb21haW4pKQorU09GVF9MSU5L
X0FWRl9GUkFNRVdPUktfSU1QT1JUKE1lZGlhQWNjZXNzaWJpbGl0eSwgTUFDYXB0aW9uQXBwZWFy
YW5jZVNldERpc3BsYXlUeXBlLCB2b2lkLCAoTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpbiBkb21h
aW4sIE1BQ2FwdGlvbkFwcGVhcmFuY2VEaXNwbGF5VHlwZSBkaXNwbGF5VHlwZSksIChkb21haW4s
IGRpc3BsYXlUeXBlKSkKK1NPRlRfTElOS19BVkZfRlJBTUVXT1JLX0lNUE9SVChNZWRpYUFjY2Vz
c2liaWxpdHksIE1BQ2FwdGlvbkFwcGVhcmFuY2VDb3B5Rm9yZWdyb3VuZENvbG9yLCBDR0NvbG9y
UmVmLCAoTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpbiBkb21haW4sIE1BQ2FwdGlvbkFwcGVhcmFu
Y2VCZWhhdmlvciAqYmVoYXZpb3IpLCAoZG9tYWluLCBiZWhhdmlvcikpCitTT0ZUX0xJTktfQVZG
X0ZSQU1FV09SS19JTVBPUlQoTWVkaWFBY2Nlc3NpYmlsaXR5LCBNQUNhcHRpb25BcHBlYXJhbmNl
Q29weUJhY2tncm91bmRDb2xvciwgQ0dDb2xvclJlZiwgKE1BQ2FwdGlvbkFwcGVhcmFuY2VEb21h
aW4gZG9tYWluLCBNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3IgKmJlaGF2aW9yKSwgKGRvbWFp
biwgYmVoYXZpb3IpKQorU09GVF9MSU5LX0FWRl9GUkFNRVdPUktfSU1QT1JUKE1lZGlhQWNjZXNz
aWJpbGl0eSwgTUFDYXB0aW9uQXBwZWFyYW5jZUNvcHlXaW5kb3dDb2xvciwgQ0dDb2xvclJlZiwg
KE1BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW4gZG9tYWluLCBNQUNhcHRpb25BcHBlYXJhbmNlQmVo
YXZpb3IgKmJlaGF2aW9yKSwgKGRvbWFpbiwgYmVoYXZpb3IpKQorU09GVF9MSU5LX0FWRl9GUkFN
RVdPUktfSU1QT1JUKE1lZGlhQWNjZXNzaWJpbGl0eSwgTUFDYXB0aW9uQXBwZWFyYW5jZUdldEZv
cmVncm91bmRPcGFjaXR5LCBDR0Zsb2F0LCAoTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpbiBkb21h
aW4sIE1BQ2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvciAqYmVoYXZpb3IpLCAoZG9tYWluLCBiZWhh
dmlvcikpCitTT0ZUX0xJTktfQVZGX0ZSQU1FV09SS19JTVBPUlQoTWVkaWFBY2Nlc3NpYmlsaXR5
LCBNQUNhcHRpb25BcHBlYXJhbmNlR2V0QmFja2dyb3VuZE9wYWNpdHksIENHRmxvYXQsIChNQUNh
cHRpb25BcHBlYXJhbmNlRG9tYWluIGRvbWFpbiwgTUFDYXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9y
ICpiZWhhdmlvciksIChkb21haW4sIGJlaGF2aW9yKSkKK1NPRlRfTElOS19BVkZfRlJBTUVXT1JL
X0lNUE9SVChNZWRpYUFjY2Vzc2liaWxpdHksIE1BQ2FwdGlvbkFwcGVhcmFuY2VHZXRXaW5kb3dP
cGFjaXR5LCBDR0Zsb2F0LCAoTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpbiBkb21haW4sIE1BQ2Fw
dGlvbkFwcGVhcmFuY2VCZWhhdmlvciAqYmVoYXZpb3IpLCAoZG9tYWluLCBiZWhhdmlvcikpCitT
T0ZUX0xJTktfQVZGX0ZSQU1FV09SS19JTVBPUlQoTWVkaWFBY2Nlc3NpYmlsaXR5LCBNQUNhcHRp
b25BcHBlYXJhbmNlR2V0V2luZG93Um91bmRlZENvcm5lclJhZGl1cywgQ0dGbG9hdCwgKE1BQ2Fw
dGlvbkFwcGVhcmFuY2VEb21haW4gZG9tYWluLCBNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3Ig
KmJlaGF2aW9yKSwgKGRvbWFpbiwgYmVoYXZpb3IpKQorU09GVF9MSU5LX0FWRl9GUkFNRVdPUktf
SU1QT1JUKE1lZGlhQWNjZXNzaWJpbGl0eSwgTUFDYXB0aW9uQXBwZWFyYW5jZUNvcHlGb250RGVz
Y3JpcHRvckZvclN0eWxlLCBDVEZvbnREZXNjcmlwdG9yUmVmLCAoTUFDYXB0aW9uQXBwZWFyYW5j
ZURvbWFpbiBkb21haW4sICBNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3IgKmJlaGF2aW9yLCBN
QUNhcHRpb25BcHBlYXJhbmNlRm9udFN0eWxlIGZvbnRTdHlsZSksIChkb21haW4sIGJlaGF2aW9y
LCBmb250U3R5bGUpKQorU09GVF9MSU5LX0FWRl9GUkFNRVdPUktfSU1QT1JUKE1lZGlhQWNjZXNz
aWJpbGl0eSwgTUFDYXB0aW9uQXBwZWFyYW5jZUdldFJlbGF0aXZlQ2hhcmFjdGVyU2l6ZSwgQ0dG
bG9hdCwgKE1BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW4gZG9tYWluLCBNQUNhcHRpb25BcHBlYXJh
bmNlQmVoYXZpb3IgKmJlaGF2aW9yKSwgKGRvbWFpbiwgYmVoYXZpb3IpKQorU09GVF9MSU5LX0FW
Rl9GUkFNRVdPUktfSU1QT1JUKE1lZGlhQWNjZXNzaWJpbGl0eSwgTUFDYXB0aW9uQXBwZWFyYW5j
ZUdldFRleHRFZGdlU3R5bGUsIE1BQ2FwdGlvbkFwcGVhcmFuY2VUZXh0RWRnZVN0eWxlLCAoTUFD
YXB0aW9uQXBwZWFyYW5jZURvbWFpbiBkb21haW4sIE1BQ2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlv
ciAqYmVoYXZpb3IpLCAoZG9tYWluLCBiZWhhdmlvcikpCitTT0ZUX0xJTktfQVZGX0ZSQU1FV09S
S19JTVBPUlQoTWVkaWFBY2Nlc3NpYmlsaXR5LCBNQUNhcHRpb25BcHBlYXJhbmNlQWRkU2VsZWN0
ZWRMYW5ndWFnZSwgYm9vbCwgKE1BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW4gZG9tYWluLCBDRlN0
cmluZ1JlZiBsYW5ndWFnZSksIChkb21haW4sIGxhbmd1YWdlKSk7CitTT0ZUX0xJTktfQVZGX0ZS
QU1FV09SS19JTVBPUlQoTWVkaWFBY2Nlc3NpYmlsaXR5LCBNQUNhcHRpb25BcHBlYXJhbmNlQ29w
eVNlbGVjdGVkTGFuZ3VhZ2VzLCBDRkFycmF5UmVmLCAoTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFp
biBkb21haW4pLCAoZG9tYWluKSk7CitTT0ZUX0xJTktfQVZGX0ZSQU1FV09SS19JTVBPUlQoTWVk
aWFBY2Nlc3NpYmlsaXR5LCBNQUNhcHRpb25BcHBlYXJhbmNlQ29weVByZWZlcnJlZENhcHRpb25p
bmdNZWRpYUNoYXJhY3RlcmlzdGljcywgIENGQXJyYXlSZWYsIChNQUNhcHRpb25BcHBlYXJhbmNl
RG9tYWluIGRvbWFpbiksIChkb21haW4pKTsKIAotI2Vsc2UKLVNPRlRfTElOS19MSUJSQVJZKE1l
ZGlhQWNjZXNzaWJpbGl0eSkKK1NPRlRfTElOS19BVkZfRlJBTUVXT1JLX0lNUE9SVChDb3JlVGV4
dCwgQ1RGb250RGVzY3JpcHRvckNvcHlBdHRyaWJ1dGUsICBDRlR5cGVSZWYsIChDVEZvbnREZXNj
cmlwdG9yUmVmIGRlc2NyaXB0b3IsIENGU3RyaW5nUmVmIGF0dHJpYnV0ZSksIChkZXNjcmlwdG9y
LCBhdHRyaWJ1dGUpKTsKIAotU09GVF9MSU5LX0RMTF9JTVBPUlQoTWVkaWFBY2Nlc3NpYmlsaXR5
LCBNQUNhcHRpb25BcHBlYXJhbmNlR2V0RGlzcGxheVR5cGUsIE1BQ2FwdGlvbkFwcGVhcmFuY2VE
aXNwbGF5VHlwZSwgX19jZGVjbCwgKE1BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW4gZG9tYWluKSwg
KGRvbWFpbikpCisjaWYgUExBVEZPUk0oV0lOKQorLy8gVGhlc2UgYXJlIG5lZWRlZCBvbiBXaW5k
b3dzIGR1ZSB0byB0aGUgd2F5IERMTHMgd29yay4gV2UgZG8gbm90IG5lZWQgdGhlbSBvbiBvdGhl
ciBwbGF0Zm9ybXMKICNkZWZpbmUgTUFDYXB0aW9uQXBwZWFyYW5jZUdldERpc3BsYXlUeXBlIHNv
ZnRMaW5rX01BQ2FwdGlvbkFwcGVhcmFuY2VHZXREaXNwbGF5VHlwZQotCi1TT0ZUX0xJTktfRExM
X0lNUE9SVChNZWRpYUFjY2Vzc2liaWxpdHksIE1BQ2FwdGlvbkFwcGVhcmFuY2VTZXREaXNwbGF5
VHlwZSwgdm9pZCwgX19jZGVjbCwgKE1BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW4gZG9tYWluLCBN
QUNhcHRpb25BcHBlYXJhbmNlRGlzcGxheVR5cGUgZGlzcGxheVR5cGUpLCAoZG9tYWluLCBkaXNw
bGF5VHlwZSkpCiAjZGVmaW5lIE1BQ2FwdGlvbkFwcGVhcmFuY2VTZXREaXNwbGF5VHlwZSBzb2Z0
TGlua19NQUNhcHRpb25BcHBlYXJhbmNlU2V0RGlzcGxheVR5cGUKLQotU09GVF9MSU5LX0RMTF9J
TVBPUlQoTWVkaWFBY2Nlc3NpYmlsaXR5LCBNQUNhcHRpb25BcHBlYXJhbmNlQ29weUZvcmVncm91
bmRDb2xvciwgQ0dDb2xvclJlZiwgX19jZGVjbCwgKE1BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW4g
ZG9tYWluLCBNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3IgKmJlaGF2aW9yKSwgKGRvbWFpbiwg
YmVoYXZpb3IpKQogI2RlZmluZSBNQUNhcHRpb25BcHBlYXJhbmNlQ29weUZvcmVncm91bmRDb2xv
ciBzb2Z0TGlua19NQUNhcHRpb25BcHBlYXJhbmNlQ29weUZvcmVncm91bmRDb2xvcgotCi1TT0ZU
X0xJTktfRExMX0lNUE9SVChNZWRpYUFjY2Vzc2liaWxpdHksIE1BQ2FwdGlvbkFwcGVhcmFuY2VD
b3B5QmFja2dyb3VuZENvbG9yLCBDR0NvbG9yUmVmLCBfX2NkZWNsLCAoTUFDYXB0aW9uQXBwZWFy
YW5jZURvbWFpbiBkb21haW4sIE1BQ2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvciAqYmVoYXZpb3Ip
LCAoZG9tYWluLCBiZWhhdmlvcikpCiAjZGVmaW5lIE1BQ2FwdGlvbkFwcGVhcmFuY2VDb3B5QmFj
a2dyb3VuZENvbG9yIHNvZnRMaW5rX01BQ2FwdGlvbkFwcGVhcmFuY2VDb3B5QmFja2dyb3VuZENv
bG9yCi0KLVNPRlRfTElOS19ETExfSU1QT1JUKE1lZGlhQWNjZXNzaWJpbGl0eSwgTUFDYXB0aW9u
QXBwZWFyYW5jZUNvcHlXaW5kb3dDb2xvciwgQ0dDb2xvclJlZiwgX19jZGVjbCwgKE1BQ2FwdGlv
bkFwcGVhcmFuY2VEb21haW4gZG9tYWluLCBNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3IgKmJl
aGF2aW9yKSwgKGRvbWFpbiwgYmVoYXZpb3IpKQogI2RlZmluZSBNQUNhcHRpb25BcHBlYXJhbmNl
Q29weVdpbmRvd0NvbG9yIHNvZnRMaW5rX01BQ2FwdGlvbkFwcGVhcmFuY2VDb3B5V2luZG93Q29s
b3IKLQotU09GVF9MSU5LX0RMTF9JTVBPUlQoTWVkaWFBY2Nlc3NpYmlsaXR5LCBNQUNhcHRpb25B
cHBlYXJhbmNlR2V0Rm9yZWdyb3VuZE9wYWNpdHksIENHRmxvYXQsIF9fY2RlY2wsIChNQUNhcHRp
b25BcHBlYXJhbmNlRG9tYWluIGRvbWFpbiwgTUFDYXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9yICpi
ZWhhdmlvciksIChkb21haW4sIGJlaGF2aW9yKSkKICNkZWZpbmUgTUFDYXB0aW9uQXBwZWFyYW5j
ZUdldEZvcmVncm91bmRPcGFjaXR5IHNvZnRMaW5rX01BQ2FwdGlvbkFwcGVhcmFuY2VHZXRGb3Jl
Z3JvdW5kT3BhY2l0eQotCi1TT0ZUX0xJTktfRExMX0lNUE9SVChNZWRpYUFjY2Vzc2liaWxpdHks
IE1BQ2FwdGlvbkFwcGVhcmFuY2VHZXRCYWNrZ3JvdW5kT3BhY2l0eSwgQ0dGbG9hdCwgX19jZGVj
bCwgKE1BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW4gZG9tYWluLCBNQUNhcHRpb25BcHBlYXJhbmNl
QmVoYXZpb3IgKmJlaGF2aW9yKSwgKGRvbWFpbiwgYmVoYXZpb3IpKQogI2RlZmluZSBNQUNhcHRp
b25BcHBlYXJhbmNlR2V0QmFja2dyb3VuZE9wYWNpdHkgc29mdExpbmtfTUFDYXB0aW9uQXBwZWFy
YW5jZUdldEJhY2tncm91bmRPcGFjaXR5Ci0KLVNPRlRfTElOS19ETExfSU1QT1JUKE1lZGlhQWNj
ZXNzaWJpbGl0eSwgTUFDYXB0aW9uQXBwZWFyYW5jZUdldFdpbmRvd09wYWNpdHksIENHRmxvYXQs
IF9fY2RlY2wsIChNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluIGRvbWFpbiwgTUFDYXB0aW9uQXBw
ZWFyYW5jZUJlaGF2aW9yICpiZWhhdmlvciksIChkb21haW4sIGJlaGF2aW9yKSkKICNkZWZpbmUg
TUFDYXB0aW9uQXBwZWFyYW5jZUdldFdpbmRvd09wYWNpdHkgc29mdExpbmtfTUFDYXB0aW9uQXBw
ZWFyYW5jZUdldFdpbmRvd09wYWNpdHkKLQotU09GVF9MSU5LX0RMTF9JTVBPUlQoTWVkaWFBY2Nl
c3NpYmlsaXR5LCBNQUNhcHRpb25BcHBlYXJhbmNlR2V0V2luZG93Um91bmRlZENvcm5lclJhZGl1
cywgQ0dGbG9hdCwgX19jZGVjbCwgKE1BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW4gZG9tYWluLCBN
QUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3IgKmJlaGF2aW9yKSwgKGRvbWFpbiwgYmVoYXZpb3Ip
KQogI2RlZmluZSBNQUNhcHRpb25BcHBlYXJhbmNlR2V0V2luZG93Um91bmRlZENvcm5lclJhZGl1
cyBzb2Z0TGlua19NQUNhcHRpb25BcHBlYXJhbmNlR2V0V2luZG93Um91bmRlZENvcm5lclJhZGl1
cwotCi1TT0ZUX0xJTktfRExMX0lNUE9SVChNZWRpYUFjY2Vzc2liaWxpdHksIE1BQ2FwdGlvbkFw
cGVhcmFuY2VDb3B5Rm9udERlc2NyaXB0b3JGb3JTdHlsZSwgQ1RGb250RGVzY3JpcHRvclJlZiwg
X19jZGVjbCwgKE1BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW4gZG9tYWluLCAgTUFDYXB0aW9uQXBw
ZWFyYW5jZUJlaGF2aW9yICpiZWhhdmlvciwgTUFDYXB0aW9uQXBwZWFyYW5jZUZvbnRTdHlsZSBm
b250U3R5bGUpLCAoZG9tYWluLCBiZWhhdmlvciwgZm9udFN0eWxlKSkKICNkZWZpbmUgTUFDYXB0
aW9uQXBwZWFyYW5jZUNvcHlGb250RGVzY3JpcHRvckZvclN0eWxlIHNvZnRMaW5rX01BQ2FwdGlv
bkFwcGVhcmFuY2VDb3B5Rm9udERlc2NyaXB0b3JGb3JTdHlsZQotCi1TT0ZUX0xJTktfRExMX0lN
UE9SVChNZWRpYUFjY2Vzc2liaWxpdHksIE1BQ2FwdGlvbkFwcGVhcmFuY2VHZXRSZWxhdGl2ZUNo
YXJhY3RlclNpemUsIENHRmxvYXQsIF9fY2RlY2wsIChNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWlu
IGRvbWFpbiwgTUFDYXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9yICpiZWhhdmlvciksIChkb21haW4s
IGJlaGF2aW9yKSkKICNkZWZpbmUgTUFDYXB0aW9uQXBwZWFyYW5jZUdldFJlbGF0aXZlQ2hhcmFj
dGVyU2l6ZSBzb2Z0TGlua19NQUNhcHRpb25BcHBlYXJhbmNlR2V0UmVsYXRpdmVDaGFyYWN0ZXJT
aXplCi0KLVNPRlRfTElOS19ETExfSU1QT1JUKE1lZGlhQWNjZXNzaWJpbGl0eSwgTUFDYXB0aW9u
QXBwZWFyYW5jZUdldFRleHRFZGdlU3R5bGUsIE1BQ2FwdGlvbkFwcGVhcmFuY2VUZXh0RWRnZVN0
eWxlLCBfX2NkZWNsLCAoTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpbiBkb21haW4sIE1BQ2FwdGlv
bkFwcGVhcmFuY2VCZWhhdmlvciAqYmVoYXZpb3IpLCAoZG9tYWluLCBiZWhhdmlvcikpCiAjZGVm
aW5lIE1BQ2FwdGlvbkFwcGVhcmFuY2VHZXRUZXh0RWRnZVN0eWxlIHNvZnRMaW5rX01BQ2FwdGlv
bkFwcGVhcmFuY2VHZXRUZXh0RWRnZVN0eWxlCi0KLVNPRlRfTElOS19ETExfSU1QT1JUKE1lZGlh
QWNjZXNzaWJpbGl0eSwgTUFDYXB0aW9uQXBwZWFyYW5jZUFkZFNlbGVjdGVkTGFuZ3VhZ2UsIGJv
b2wsIF9fY2RlY2wsIChNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluIGRvbWFpbiwgQ0ZTdHJpbmdS
ZWYgbGFuZ3VhZ2UpLCAoZG9tYWluLCBsYW5ndWFnZSkpOwogI2RlZmluZSBNQUNhcHRpb25BcHBl
YXJhbmNlQWRkU2VsZWN0ZWRMYW5ndWFnZSBzb2Z0TGlua19NQUNhcHRpb25BcHBlYXJhbmNlQWRk
U2VsZWN0ZWRMYW5ndWFnZQotCi1TT0ZUX0xJTktfRExMX0lNUE9SVChNZWRpYUFjY2Vzc2liaWxp
dHksIE1BQ2FwdGlvbkFwcGVhcmFuY2VDb3B5U2VsZWN0ZWRMYW5ndWFnZXMsIENGQXJyYXlSZWYs
IF9fY2RlY2wsIChNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluIGRvbWFpbiksIChkb21haW4pKTsK
ICNkZWZpbmUgTUFDYXB0aW9uQXBwZWFyYW5jZUNvcHlTZWxlY3RlZExhbmd1YWdlcyBzb2Z0TGlu
a19NQUNhcHRpb25BcHBlYXJhbmNlQ29weVNlbGVjdGVkTGFuZ3VhZ2VzCi0KLVNPRlRfTElOS19E
TExfSU1QT1JUKE1lZGlhQWNjZXNzaWJpbGl0eSwgTUFDYXB0aW9uQXBwZWFyYW5jZUNvcHlQcmVm
ZXJyZWRDYXB0aW9uaW5nTWVkaWFDaGFyYWN0ZXJpc3RpY3MsICBDRkFycmF5UmVmLCBfX2NkZWNs
LCAoTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpbiBkb21haW4pLCAoZG9tYWluKSk7CiAjZGVmaW5l
IE1BQ2FwdGlvbkFwcGVhcmFuY2VDb3B5UHJlZmVycmVkQ2FwdGlvbmluZ01lZGlhQ2hhcmFjdGVy
aXN0aWNzIHNvZnRMaW5rX01BQ2FwdGlvbkFwcGVhcmFuY2VDb3B5UHJlZmVycmVkQ2FwdGlvbmlu
Z01lZGlhQ2hhcmFjdGVyaXN0aWNzCi0KLVNPRlRfTElOS19WQVJJQUJMRV9ETExfSU1QT1JUKE1l
ZGlhQWNjZXNzaWJpbGl0eSwga01BWENhcHRpb25BcHBlYXJhbmNlU2V0dGluZ3NDaGFuZ2VkTm90
aWZpY2F0aW9uLCBDRlN0cmluZ1JlZikKLSNkZWZpbmUga01BWENhcHRpb25BcHBlYXJhbmNlU2V0
dGluZ3NDaGFuZ2VkTm90aWZpY2F0aW9uIGdldF9rTUFYQ2FwdGlvbkFwcGVhcmFuY2VTZXR0aW5n
c0NoYW5nZWROb3RpZmljYXRpb24oKQotCi1TT0ZUX0xJTktfTElCUkFSWShDb3JlVGV4dCkKLQot
U09GVF9MSU5LX0RMTF9JTVBPUlQoQ29yZVRleHQsIENURm9udERlc2NyaXB0b3JDb3B5QXR0cmli
dXRlLCAgQ0ZUeXBlUmVmLCBfX2NkZWNsLCAoQ1RGb250RGVzY3JpcHRvclJlZiBkZXNjcmlwdG9y
LCBDRlN0cmluZ1JlZiBhdHRyaWJ1dGUpLCAoZGVzY3JpcHRvciwgYXR0cmlidXRlKSk7CiAjZGVm
aW5lIENURm9udERlc2NyaXB0b3JDb3B5QXR0cmlidXRlIHNvZnRMaW5rX0NURm9udERlc2NyaXB0
b3JDb3B5QXR0cmlidXRlCi0KLVNPRlRfTElOS19WQVJJQUJMRV9ETExfSU1QT1JUKENvcmVUZXh0
LCBrQ1RGb250TmFtZUF0dHJpYnV0ZSwgQ0ZTdHJpbmdSZWYpCi0jZGVmaW5lIGtDVEZvbnROYW1l
QXR0cmlidXRlIGdldF9rQ1RGb250TmFtZUF0dHJpYnV0ZSgpCi0KICNlbmRpZgogCitTT0ZUX0xJ
TktfQVZGX1BPSU5URVIoTWVkaWFBY2Nlc3NpYmlsaXR5LCBrTUFYQ2FwdGlvbkFwcGVhcmFuY2VT
ZXR0aW5nc0NoYW5nZWROb3RpZmljYXRpb24sIENGU3RyaW5nUmVmKQorI2RlZmluZSBrTUFYQ2Fw
dGlvbkFwcGVhcmFuY2VTZXR0aW5nc0NoYW5nZWROb3RpZmljYXRpb24gZ2V0a01BWENhcHRpb25B
cHBlYXJhbmNlU2V0dGluZ3NDaGFuZ2VkTm90aWZpY2F0aW9uKCkKKworU09GVF9MSU5LX0FWRl9Q
T0lOVEVSKENvcmVUZXh0LCBrQ1RGb250TmFtZUF0dHJpYnV0ZSwgQ0ZTdHJpbmdSZWYpCisjZGVm
aW5lIGtDVEZvbnROYW1lQXR0cmlidXRlIGdldGtDVEZvbnROYW1lQXR0cmlidXRlKCkKICNlbmRp
ZgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9J
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcAkocmV2aXNpb24gMTUyNzkzKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1By
aXZhdGVBVkYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNpbmNsdWRl
ICJjb25maWcuaCIKIAotI2lmIEVOQUJMRShWSURFTykgJiYgKChVU0UoQVZGT1VOREFUSU9OKSAm
JiAhUExBVEZPUk0oV0lOKSkgfHwgUExBVEZPUk0oSU9TKSkKKyNpZiBFTkFCTEUoVklERU8pICYm
IChVU0UoQVZGT1VOREFUSU9OKSB8fCBQTEFURk9STShJT1MpKQogCiAjaW5jbHVkZSAiSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUFWRi5oIgogCkBAIC0zOCwyNyArMzgsMzUgQEAKICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1l
cy5oPgogCi1TT0ZUX0xJTktfRlJBTUVXT1JLX09QVElPTkFMKENvcmVNZWRpYSkKLQotU09GVF9M
SU5LX1BPSU5URVJfT1BUSU9OQUwoQ29yZU1lZGlhLCBrQ01UZXh0TWFya3VwQXR0cmlidXRlX0Fs
aWdubWVudCwgQ0ZTdHJpbmdSZWYpCi1TT0ZUX0xJTktfUE9JTlRFUl9PUFRJT05BTChDb3JlTWVk
aWEsIGtDTVRleHRNYXJrdXBBbGlnbm1lbnRUeXBlX1N0YXJ0LCBDRlN0cmluZ1JlZikKLVNPRlRf
TElOS19QT0lOVEVSX09QVElPTkFMKENvcmVNZWRpYSwga0NNVGV4dE1hcmt1cEFsaWdubWVudFR5
cGVfTWlkZGxlLCBDRlN0cmluZ1JlZikKLVNPRlRfTElOS19QT0lOVEVSX09QVElPTkFMKENvcmVN
ZWRpYSwga0NNVGV4dE1hcmt1cEFsaWdubWVudFR5cGVfRW5kLCBDRlN0cmluZ1JlZikKLVNPRlRf
TElOS19QT0lOVEVSX09QVElPTkFMKENvcmVNZWRpYSwga0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9C
b2xkU3R5bGUsIENGU3RyaW5nUmVmKQotU09GVF9MSU5LX1BPSU5URVJfT1BUSU9OQUwoQ29yZU1l
ZGlhLCBrQ01UZXh0TWFya3VwQXR0cmlidXRlX0l0YWxpY1N0eWxlLCBDRlN0cmluZ1JlZikKLVNP
RlRfTElOS19QT0lOVEVSX09QVElPTkFMKENvcmVNZWRpYSwga0NNVGV4dE1hcmt1cEF0dHJpYnV0
ZV9VbmRlcmxpbmVTdHlsZSwgQ0ZTdHJpbmdSZWYpCi1TT0ZUX0xJTktfUE9JTlRFUl9PUFRJT05B
TChDb3JlTWVkaWEsIGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfVGV4dFBvc2l0aW9uUGVyY2VudGFn
ZVJlbGF0aXZlVG9Xcml0aW5nRGlyZWN0aW9uLCBDRlN0cmluZ1JlZikKLVNPRlRfTElOS19QT0lO
VEVSX09QVElPTkFMKENvcmVNZWRpYSwga0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9Xcml0aW5nRGly
ZWN0aW9uU2l6ZVBlcmNlbnRhZ2UsIENGU3RyaW5nUmVmKQotU09GVF9MSU5LX1BPSU5URVJfT1BU
SU9OQUwoQ29yZU1lZGlhLCBrQ01UZXh0TWFya3VwQXR0cmlidXRlX09ydGhvZ29uYWxMaW5lUG9z
aXRpb25QZXJjZW50YWdlUmVsYXRpdmVUb1dyaXRpbmdEaXJlY3Rpb24sIENGU3RyaW5nUmVmKQot
U09GVF9MSU5LX1BPSU5URVJfT1BUSU9OQUwoQ29yZU1lZGlhLCBrQ01UZXh0TWFya3VwQXR0cmli
dXRlX1ZlcnRpY2FsTGF5b3V0LCBDRlN0cmluZ1JlZikKLVNPRlRfTElOS19QT0lOVEVSX09QVElP
TkFMKENvcmVNZWRpYSwga0NNVGV4dFZlcnRpY2FsTGF5b3V0X0xlZnRUb1JpZ2h0LCBDRlN0cmlu
Z1JlZikKLVNPRlRfTElOS19QT0lOVEVSX09QVElPTkFMKENvcmVNZWRpYSwga0NNVGV4dFZlcnRp
Y2FsTGF5b3V0X1JpZ2h0VG9MZWZ0LCBDRlN0cmluZ1JlZikKLVNPRlRfTElOS19QT0lOVEVSX09Q
VElPTkFMKENvcmVNZWRpYSwga0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9CYXNlRm9udFNpemVQZXJj
ZW50YWdlUmVsYXRpdmVUb1ZpZGVvSGVpZ2h0LCBDRlN0cmluZ1JlZikKLVNPRlRfTElOS19QT0lO
VEVSX09QVElPTkFMKENvcmVNZWRpYSwga0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9SZWxhdGl2ZUZv
bnRTaXplLCBDRlN0cmluZ1JlZikKLVNPRlRfTElOS19QT0lOVEVSX09QVElPTkFMKENvcmVNZWRp
YSwga0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9Gb250RmFtaWx5TmFtZSwgQ0ZTdHJpbmdSZWYpCi1T
T0ZUX0xJTktfUE9JTlRFUl9PUFRJT05BTChDb3JlTWVkaWEsIGtDTVRleHRNYXJrdXBBdHRyaWJ1
dGVfRm9yZWdyb3VuZENvbG9yQVJHQiwgQ0ZTdHJpbmdSZWYpCi1TT0ZUX0xJTktfUE9JTlRFUl9P
UFRJT05BTChDb3JlTWVkaWEsIGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfQmFja2dyb3VuZENvbG9y
QVJHQiwgQ0ZTdHJpbmdSZWYpCi1TT0ZUX0xJTktfUE9JTlRFUl9PUFRJT05BTChDb3JlTWVkaWEs
IGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfQ2hhcmFjdGVyQmFja2dyb3VuZENvbG9yQVJHQiwgQ0ZT
dHJpbmdSZWYpCisjaWYgIVBMQVRGT1JNKFdJTikKKyNkZWZpbmUgU09GVF9MSU5LX0FWRl9GUkFN
RVdPUksoTGliKSBTT0ZUX0xJTktfRlJBTUVXT1JLX09QVElPTkFMKExpYikKKyNkZWZpbmUgU09G
VF9MSU5LX0FWRl9QT0lOVEVSKExpYiwgTmFtZSwgVHlwZSkgU09GVF9MSU5LX1BPSU5URVJfT1BU
SU9OQUwoTGliLCBOYW1lLCBUeXBlKQorI2Vsc2UKKyNkZWZpbmUgU09GVF9MSU5LX0FWRl9GUkFN
RVdPUksoTGliKSBTT0ZUX0xJTktfTElCUkFSWShMaWIpCisjZGVmaW5lIFNPRlRfTElOS19BVkZf
UE9JTlRFUihMaWIsIE5hbWUsIFR5cGUpIFNPRlRfTElOS19WQVJJQUJMRV9ETExfSU1QT1JUX09Q
VElPTkFMKExpYiwgTmFtZSwgVHlwZSkKKyNlbmRpZgorCitTT0ZUX0xJTktfQVZGX0ZSQU1FV09S
SyhDb3JlTWVkaWEpCisKK1NPRlRfTElOS19BVkZfUE9JTlRFUihDb3JlTWVkaWEsIGtDTVRleHRN
YXJrdXBBdHRyaWJ1dGVfQWxpZ25tZW50LCBDRlN0cmluZ1JlZikKK1NPRlRfTElOS19BVkZfUE9J
TlRFUihDb3JlTWVkaWEsIGtDTVRleHRNYXJrdXBBbGlnbm1lbnRUeXBlX1N0YXJ0LCBDRlN0cmlu
Z1JlZikKK1NPRlRfTElOS19BVkZfUE9JTlRFUihDb3JlTWVkaWEsIGtDTVRleHRNYXJrdXBBbGln
bm1lbnRUeXBlX01pZGRsZSwgQ0ZTdHJpbmdSZWYpCitTT0ZUX0xJTktfQVZGX1BPSU5URVIoQ29y
ZU1lZGlhLCBrQ01UZXh0TWFya3VwQWxpZ25tZW50VHlwZV9FbmQsIENGU3RyaW5nUmVmKQorU09G
VF9MSU5LX0FWRl9QT0lOVEVSKENvcmVNZWRpYSwga0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9Cb2xk
U3R5bGUsIENGU3RyaW5nUmVmKQorU09GVF9MSU5LX0FWRl9QT0lOVEVSKENvcmVNZWRpYSwga0NN
VGV4dE1hcmt1cEF0dHJpYnV0ZV9JdGFsaWNTdHlsZSwgQ0ZTdHJpbmdSZWYpCitTT0ZUX0xJTktf
QVZGX1BPSU5URVIoQ29yZU1lZGlhLCBrQ01UZXh0TWFya3VwQXR0cmlidXRlX1VuZGVybGluZVN0
eWxlLCBDRlN0cmluZ1JlZikKK1NPRlRfTElOS19BVkZfUE9JTlRFUihDb3JlTWVkaWEsIGtDTVRl
eHRNYXJrdXBBdHRyaWJ1dGVfVGV4dFBvc2l0aW9uUGVyY2VudGFnZVJlbGF0aXZlVG9Xcml0aW5n
RGlyZWN0aW9uLCBDRlN0cmluZ1JlZikKK1NPRlRfTElOS19BVkZfUE9JTlRFUihDb3JlTWVkaWEs
IGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfV3JpdGluZ0RpcmVjdGlvblNpemVQZXJjZW50YWdlLCBD
RlN0cmluZ1JlZikKK1NPRlRfTElOS19BVkZfUE9JTlRFUihDb3JlTWVkaWEsIGtDTVRleHRNYXJr
dXBBdHRyaWJ1dGVfT3J0aG9nb25hbExpbmVQb3NpdGlvblBlcmNlbnRhZ2VSZWxhdGl2ZVRvV3Jp
dGluZ0RpcmVjdGlvbiwgQ0ZTdHJpbmdSZWYpCitTT0ZUX0xJTktfQVZGX1BPSU5URVIoQ29yZU1l
ZGlhLCBrQ01UZXh0TWFya3VwQXR0cmlidXRlX1ZlcnRpY2FsTGF5b3V0LCBDRlN0cmluZ1JlZikK
K1NPRlRfTElOS19BVkZfUE9JTlRFUihDb3JlTWVkaWEsIGtDTVRleHRWZXJ0aWNhbExheW91dF9M
ZWZ0VG9SaWdodCwgQ0ZTdHJpbmdSZWYpCitTT0ZUX0xJTktfQVZGX1BPSU5URVIoQ29yZU1lZGlh
LCBrQ01UZXh0VmVydGljYWxMYXlvdXRfUmlnaHRUb0xlZnQsIENGU3RyaW5nUmVmKQorU09GVF9M
SU5LX0FWRl9QT0lOVEVSKENvcmVNZWRpYSwga0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9CYXNlRm9u
dFNpemVQZXJjZW50YWdlUmVsYXRpdmVUb1ZpZGVvSGVpZ2h0LCBDRlN0cmluZ1JlZikKK1NPRlRf
TElOS19BVkZfUE9JTlRFUihDb3JlTWVkaWEsIGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfUmVsYXRp
dmVGb250U2l6ZSwgQ0ZTdHJpbmdSZWYpCitTT0ZUX0xJTktfQVZGX1BPSU5URVIoQ29yZU1lZGlh
LCBrQ01UZXh0TWFya3VwQXR0cmlidXRlX0ZvbnRGYW1pbHlOYW1lLCBDRlN0cmluZ1JlZikKK1NP
RlRfTElOS19BVkZfUE9JTlRFUihDb3JlTWVkaWEsIGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfRm9y
ZWdyb3VuZENvbG9yQVJHQiwgQ0ZTdHJpbmdSZWYpCitTT0ZUX0xJTktfQVZGX1BPSU5URVIoQ29y
ZU1lZGlhLCBrQ01UZXh0TWFya3VwQXR0cmlidXRlX0JhY2tncm91bmRDb2xvckFSR0IsIENGU3Ry
aW5nUmVmKQorU09GVF9MSU5LX0FWRl9QT0lOVEVSKENvcmVNZWRpYSwga0NNVGV4dE1hcmt1cEF0
dHJpYnV0ZV9DaGFyYWN0ZXJCYWNrZ3JvdW5kQ29sb3JBUkdCLCBDRlN0cmluZ1JlZikKIAogI2Rl
ZmluZSBrQ01UZXh0TWFya3VwQXR0cmlidXRlX0FsaWdubWVudCBnZXRrQ01UZXh0TWFya3VwQXR0
cmlidXRlX0FsaWdubWVudCgpCiAjZGVmaW5lIGtDTVRleHRNYXJrdXBBbGlnbm1lbnRUeXBlX1N0
YXJ0IGdldGtDTVRleHRNYXJrdXBBbGlnbm1lbnRUeXBlX1N0YXJ0KCkKQEAgLTQ1OSw0ICs0Njcs
NCBAQCB2b2lkIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnNldE1vZGUoCiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShWSURFTykgJiYgKChVU0UoQVZGT1VO
REFUSU9OKSAmJiAhUExBVEZPUk0oV0lOKSkgfHwgUExBVEZPUk0oSU9TKSkKKyNlbmRpZiAvLyBF
TkFCTEUoVklERU8pICYmIChVU0UoQVZGT1VOREFUSU9OKSB8fCBQTEFURk9STShJT1MpKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRl
eHRUcmFja1ByaXZhdGVBVkYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oCShyZXZp
c2lvbiAxNTI3OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3
ICsyNiw3IEBACiAjaWZuZGVmIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkZfaAogI2RlZmluZSBJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGX2gKIAotI2lmIEVOQUJMRShWSURFTykgJiYgKChVU0Uo
QVZGT1VOREFUSU9OKSAmJiAhUExBVEZPUk0oV0lOKSkgfHwgUExBVEZPUk0oSU9TKSkKKyNpZiBF
TkFCTEUoVklERU8pICYmIChVU0UoQVZGT1VOREFUSU9OKSB8fCBQTEFURk9STShJT1MpKQogCiAj
aW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oIgogI2luY2x1ZGUgIkluYmFuZFRleHRU
cmFja1ByaXZhdGVDbGllbnQuaCIKQEAgLTkwLDYgKzkwLDYgQEAgcHJvdGVjdGVkOgogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyAgRU5BQkxFKFZJREVPKSAmJiAoKFVTRShB
VkZPVU5EQVRJT04pICYmICFQTEFURk9STShXSU4pKSB8fCBQTEFURk9STShJT1MpKQorI2VuZGlm
IC8vICBFTkFCTEUoVklERU8pICYmIChVU0UoQVZGT1VOREFUSU9OKSB8fCBQTEFURk9STShJT1Mp
KQogCiAjZW5kaWYgLy8gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRl9oCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcAko
cmV2aXNpb24gMTUyNzkzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTc0LDkgKzc0LDcgQEAgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpNZWRp
YVBsYQogICAgICwgbV9pZ25vcmVMb2FkU3RhdGVDaGFuZ2VzKGZhbHNlKQogICAgICwgbV9oYXZl
UmVwb3J0ZWRGaXJzdFZpZGVvRnJhbWUoZmFsc2UpCiAgICAgLCBtX3BsYXlXaGVuRnJhbWVzQXZh
aWxhYmxlKGZhbHNlKQotI2lmICFQTEFURk9STShXSU4pCiAgICAgLCBtX2luYmFuZFRyYWNrQ29u
ZmlndXJhdGlvblBlbmRpbmcoZmFsc2UpCi0jZW5kaWYKICAgICAsIG1fc2Vla0NvdW50KDApCiB7
CiAgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb24oJXApIiwgdGhpcyk7CkBAIC0yNjcsMTAgKzI2NSw4IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpzZWUKICAgICBpZiAoY3VycmVu
dFRpbWUoKSA9PSB0aW1lKQogICAgICAgICByZXR1cm47CiAKLSNpZiAhUExBVEZPUk0oV0lOKQog
ICAgIGlmIChjdXJyZW50VHJhY2soKSkKICAgICAgICAgY3VycmVudFRyYWNrKCktPmJlZ2luU2Vl
a2luZygpOwotI2VuZGlmCiAgICAgCiAgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uOjpzZWVrKCVwKSAtIHNlZWtpbmcgdG8gJWYiLCB0aGlzLCB0aW1lKTsKICAg
ICBtX3NlZWtUbyA9IHRpbWU7CkBAIC01OTksMTAgKzU5NSw4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uOjpzZWUKICAgICBpZiAoLS1tX3NlZWtDb3VudCkKICAgICAgICAg
cmV0dXJuOwogCi0jaWYgIVBMQVRGT1JNKFdJTikKICAgICBpZiAoY3VycmVudFRyYWNrKCkpCiAg
ICAgICAgIGN1cnJlbnRUcmFjaygpLT5lbmRTZWVraW5nKCk7Ci0jZW5kaWYKIAogICAgIG1fc2Vl
a1RvID0gTWVkaWFQbGF5ZXI6OmludmFsaWRUaW1lKCk7CiAgICAgdXBkYXRlU3RhdGVzKCk7CkBA
IC04MzMsMTAgKzgyNyw4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpk
aXMKICAgICAgICAgY29udGVudHNOZWVkc0Rpc3BsYXkoKTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBOb3RpZmljYXRpb246OkluYmFuZFRyYWNrc05lZWRDb25maWd1cmF0aW9uOgotI2lmICFQ
TEFURk9STShXSU4pCiAgICAgICAgIG1faW5iYW5kVHJhY2tDb25maWd1cmF0aW9uUGVuZGluZyA9
IGZhbHNlOwogICAgICAgICBjb25maWd1cmVJbmJhbmRUcmFja3MoKTsKLSNlbmRpZgogICAgICAg
ICBicmVhazsKIAogICAgIGNhc2UgTm90aWZpY2F0aW9uOjpOb25lOgpAQCAtODQ1LDcgKzgzNyw2
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpkaXMKICAgICB9CiB9CiAK
LSNpZiAhUExBVEZPUk0oV0lOKQogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246
OmNvbmZpZ3VyZUluYmFuZFRyYWNrcygpCiB7CiAgICAgUmVmUHRyPEluYmFuZFRleHRUcmFja1By
aXZhdGVBVkY+IHRyYWNrVG9FbmFibGU7CkBAIC04NzIsNyArODYzLDYgQEAgdm9pZCBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb246OnRyYQogICAgIG1faW5iYW5kVHJhY2tDb25maWd1cmF0
aW9uUGVuZGluZyA9IHRydWU7CiAgICAgc2NoZWR1bGVNYWluVGhyZWFkTm90aWZpY2F0aW9uKE5v
dGlmaWNhdGlvbjo6SW5iYW5kVHJhY2tzTmVlZENvbmZpZ3VyYXRpb24pOwogfQotI2VuZGlmCiAK
IHNpemVfdCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OmV4dHJhTWVtb3J5Q29zdCgp
IGNvbnN0CiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbi5oCShyZXZpc2lvbiAxNTI3OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDEwICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY7CiBjbGFzcyBHZW5lcmljQ3VlRGF0
YTsKIAotY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uIDogcHVibGljIE1lZGlh
UGxheWVyUHJpdmF0ZUludGVyZmFjZQotI2lmICFQTEFURk9STShXSU4pCi0gICAgLCBwdWJsaWMg
QVZGSW5iYW5kVHJhY2tQYXJlbnQKLSNlbmRpZgorY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uIDogcHVibGljIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZSwgcHVibGljIEFW
RkluYmFuZFRyYWNrUGFyZW50CiB7CiBwdWJsaWM6CiAKQEAgLTU2LDExICs1Myw5IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgc2Vla0NvbXBsZXRlZChib29sKTsKICAgICB2aXJ0dWFsIHZv
aWQgZGlkRW5kKCk7CiAgICAgdmlydHVhbCB2b2lkIGNvbnRlbnRzTmVlZHNEaXNwbGF5KCkgeyB9
Ci0jaWYgIVBMQVRGT1JNKFdJTikKICAgICB2aXJ0dWFsIHZvaWQgY29uZmlndXJlSW5iYW5kVHJh
Y2tzKCk7CiAgICAgdmlydHVhbCB2b2lkIHNldEN1cnJlbnRUcmFjayhJbmJhbmRUZXh0VHJhY2tQ
cml2YXRlQVZGKikgeyB9CiAgICAgdmlydHVhbCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGKiBj
dXJyZW50VHJhY2soKSBjb25zdCA9IDA7Ci0jZW5kaWYKIAogICAgIGNsYXNzIE5vdGlmaWNhdGlv
biB7CiAgICAgcHVibGljOgpAQCAtMjY4LDEwICsyNjMsOCBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2
aXJ0dWFsIHNpemVfdCBleHRyYU1lbW9yeUNvc3QoKSBjb25zdCBPVkVSUklERTsKIAotI2lmICFQ
TEFURk9STShXSU4pCiAgICAgdmlydHVhbCB2b2lkIHRyYWNrTW9kZUNoYW5nZWQoKSBPVkVSUklE
RTsKICAgICBWZWN0b3I8UmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY+ID4gbV90ZXh0
VHJhY2tzOwotI2VuZGlmCiAgICAgCiBwcml2YXRlOgogICAgIE1lZGlhUGxheWVyKiBtX3BsYXll
cjsKQEAgLTMwOCw5ICszMDEsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pZ25vcmVMb2FkU3Rh
dGVDaGFuZ2VzOwogICAgIGJvb2wgbV9oYXZlUmVwb3J0ZWRGaXJzdFZpZGVvRnJhbWU7CiAgICAg
Ym9vbCBtX3BsYXlXaGVuRnJhbWVzQXZhaWxhYmxlOwotI2lmICFQTEFURk9STShXSU4pCiAgICAg
Ym9vbCBtX2luYmFuZFRyYWNrQ29uZmlndXJhdGlvblBlbmRpbmc7Ci0jZW5kaWYKICAgICBzaXpl
X3QgbV9zZWVrQ291bnQ7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vY2YvQVZGb3VuZGF0aW9uQ0ZTb2Z0TGlua2luZy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9B
VkZvdW5kYXRpb25DRlNvZnRMaW5raW5nLmgJKHJldmlzaW9uIDE1Mjc5MykKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9BVkZvdW5kYXRpb25DRlNv
ZnRMaW5raW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDkgQEAgU09GVF9MSU5LX0RM
TF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQwogU09GVF9MSU5LX0RMTF9JTVBPUlQoQVZGb3Vu
ZGF0aW9uQ0YsIEFWQ0ZBc3NldENvcHlBc3NldFRyYWNrcywgQ0ZBcnJheVJlZiwgX19jZGVjbCwg
KEFWQ0ZBc3NldFJlZiBhc3NldCksIChhc3NldCkpCiAjZGVmaW5lIEFWQ0ZBc3NldENvcHlBc3Nl
dFRyYWNrcyBzb2Z0TGlua19BVkNGQXNzZXRDb3B5QXNzZXRUcmFja3MKIAorU09GVF9MSU5LX0RM
TF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZBc3NldENvcHlBdmFpbGFibGVNZWRpYUNoYXJh
Y3RlcmlzdGljc1dpdGhNZWRpYVNlbGVjdGlvbk9wdGlvbnMsIENGQXJyYXlSZWYsIF9fY2RlY2ws
IChBVkNGQXNzZXRSZWYgYXNzZXQpLCAoYXNzZXQpKQorI2RlZmluZSBBVkNGQXNzZXRDb3B5QXZh
aWxhYmxlTWVkaWFDaGFyYWN0ZXJpc3RpY3NXaXRoTWVkaWFTZWxlY3Rpb25PcHRpb25zIHNvZnRM
aW5rX0FWQ0ZBc3NldENvcHlBdmFpbGFibGVNZWRpYUNoYXJhY3RlcmlzdGljc1dpdGhNZWRpYVNl
bGVjdGlvbk9wdGlvbnMKKwogU09GVF9MSU5LX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFW
Q0ZBc3NldENvcHlUcmFja3NXaXRoTWVkaWFDaGFyYWN0ZXJpc3RpYywgQ0ZBcnJheVJlZiwgX19j
ZGVjbCwgKEFWQ0ZBc3NldFJlZiBhc3NldCwgQ0ZTdHJpbmdSZWYgbWVkaWFDaGFyYWN0ZXJpc3Rp
YyksIChhc3NldCwgbWVkaWFDaGFyYWN0ZXJpc3RpYykpCiAjZGVmaW5lIEFWQ0ZBc3NldENvcHlU
cmFja3NXaXRoTWVkaWFDaGFyYWN0ZXJpc3RpYyBzb2Z0TGlua19BVkNGQXNzZXRDb3B5VHJhY2tz
V2l0aE1lZGlhQ2hhcmFjdGVyaXN0aWMKIApAQCAtODcsNiArOTAsMTUgQEAgU09GVF9MSU5LX0RM
TF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQwogU09GVF9MSU5LX0RMTF9JTVBPUlQoQVZGb3Vu
ZGF0aW9uQ0YsIEFWQ0ZBc3NldExvYWRWYWx1ZXNBc3luY2hyb25vdXNseUZvclByb3BlcnRpZXMs
IHZvaWQsIF9fY2RlY2wsIChBVkNGQXNzZXRSZWYgYXNzZXQsIENGQXJyYXlSZWYgcHJvcGVydGll
cywgQVZDRkFzc2V0TG9hZFZhbHVlc0NvbXBsZXRpb25DYWxsYmFjayBjYWxsYmFjaywgdm9pZCAq
Y2xpZW50Q29udGV4dCksIChhc3NldCwgcHJvcGVydGllcywgY2FsbGJhY2ssIGNsaWVudENvbnRl
eHQpKQogI2RlZmluZSBBVkNGQXNzZXRMb2FkVmFsdWVzQXN5bmNocm9ub3VzbHlGb3JQcm9wZXJ0
aWVzIHNvZnRMaW5rX0FWQ0ZBc3NldExvYWRWYWx1ZXNBc3luY2hyb25vdXNseUZvclByb3BlcnRp
ZXMKIAorU09GVF9MSU5LX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZBc3NldFRyYWNr
Q29weUNvbW1vbk1ldGFkYXRhLCBDRkFycmF5UmVmLCBfX2NkZWNsLCAoQVZDRkFzc2V0VHJhY2tS
ZWYgYXNzZXRUcmFjayksIChhc3NldFRyYWNrKSkKKyNkZWZpbmUgQVZDRkFzc2V0VHJhY2tDb3B5
Q29tbW9uTWV0YWRhdGEgc29mdExpbmtfQVZDRkFzc2V0VHJhY2tDb3B5Q29tbW9uTWV0YWRhdGEK
KworU09GVF9MSU5LX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZBc3NldFRyYWNrQ29w
eUV4dGVuZGVkTGFuZ3VhZ2VUYWcsIENGU3RyaW5nUmVmLCBfX2NkZWNsLCAoQVZDRkFzc2V0VHJh
Y2tSZWYgYXNzZXRUcmFjayksIChhc3NldFRyYWNrKSkKKyNkZWZpbmUgQVZDRkFzc2V0VHJhY2tD
b3B5RXh0ZW5kZWRMYW5ndWFnZVRhZyBzb2Z0TGlua19BVkNGQXNzZXRUcmFja0NvcHlFeHRlbmRl
ZExhbmd1YWdlVGFnCisKK1NPRlRfTElOS19ETExfSU1QT1JUKEFWRm91bmRhdGlvbkNGLCBBVkNG
QXNzZXRUcmFja0NvcHlMYW5ndWFnZUNvZGUsIENGU3RyaW5nUmVmLCBfX2NkZWNsLCAoQVZDRkFz
c2V0VHJhY2tSZWYgYXNzZXRUcmFjayksIChhc3NldFRyYWNrKSkKKyNkZWZpbmUgQVZDRkFzc2V0
VHJhY2tDb3B5TGFuZ3VhZ2VDb2RlIHNvZnRMaW5rX0FWQ0ZBc3NldFRyYWNrQ29weUxhbmd1YWdl
Q29kZQorCiBTT0ZUX0xJTktfRExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZDRkFzc2V0VHJh
Y2tHZXRNZWRpYVR5cGUsIENGU3RyaW5nUmVmLCBfX2NkZWNsLCAoQVZDRkFzc2V0VHJhY2tSZWYg
YXNzZXRUcmFjayksIChhc3NldFRyYWNrKSkKICNkZWZpbmUgQVZDRkFzc2V0VHJhY2tHZXRNZWRp
YVR5cGUgc29mdExpbmtfQVZDRkFzc2V0VHJhY2tHZXRNZWRpYVR5cGUKIApAQCAtOTksNiArMTEx
LDE4IEBAIFNPRlRfTElOS19ETExfSU1QT1JUKEFWRm91bmRhdGlvbkNGLCBBVkMKIFNPRlRfTElO
S19ETExfSU1QT1JUKEFWRm91bmRhdGlvbkNGLCBBVkNGQXNzZXRUcmFja0dldFRvdGFsU2FtcGxl
RGF0YUxlbmd0aCwgaW50NjRfdCwgX19jZGVjbCwgKEFWQ0ZBc3NldFRyYWNrUmVmIGFzc2V0VHJh
Y2spLCAoYXNzZXRUcmFjaykpCiAjZGVmaW5lIEFWQ0ZBc3NldFRyYWNrR2V0VG90YWxTYW1wbGVE
YXRhTGVuZ3RoIHNvZnRMaW5rX0FWQ0ZBc3NldFRyYWNrR2V0VG90YWxTYW1wbGVEYXRhTGVuZ3Ro
CiAKK1NPRlRfTElOS19ETExfSU1QT1JUKEFWRm91bmRhdGlvbkNGLCBBVkNGTWVkaWFTZWxlY3Rp
b25Db3B5T3B0aW9uc0Zyb21BcnJheUZpbHRlcmVkQW5kU29ydGVkQWNjb3JkaW5nVG9QcmVmZXJy
ZWRMYW5ndWFnZXMsIENGQXJyYXlSZWYsIF9fY2RlY2wsIChDRkFycmF5UmVmIHNlbGVjdGlvbk9w
dGlvbnMsIENGQXJyYXlSZWYgcHJlZmVycmVkTGFuZ3VhZ2VzKSwgKHNlbGVjdGlvbk9wdGlvbnMs
IHByZWZlcnJlZExhbmd1YWdlcykpCisjZGVmaW5lIEFWQ0ZNZWRpYVNlbGVjdGlvbkNvcHlPcHRp
b25zRnJvbUFycmF5RmlsdGVyZWRBbmRTb3J0ZWRBY2NvcmRpbmdUb1ByZWZlcnJlZExhbmd1YWdl
cyBzb2Z0TGlua19BVkNGTWVkaWFTZWxlY3Rpb25Db3B5T3B0aW9uc0Zyb21BcnJheUZpbHRlcmVk
QW5kU29ydGVkQWNjb3JkaW5nVG9QcmVmZXJyZWRMYW5ndWFnZXMKKworU09GVF9MSU5LX0RMTF9J
TVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZNZXRhZGF0YUl0ZW1Db3B5U3RyaW5nVmFsdWUsIENG
U3RyaW5nUmVmLCBfX2NkZWNsLCAoQVZDRk1ldGFkYXRhSXRlbVJlZiBtZXRhZGF0YUl0ZW0pLCAo
bWV0YWRhdGFJdGVtKSkKKyNkZWZpbmUgQVZDRk1ldGFkYXRhSXRlbUNvcHlTdHJpbmdWYWx1ZSBz
b2Z0TGlua19BVkNGTWV0YWRhdGFJdGVtQ29weVN0cmluZ1ZhbHVlCisKK1NPRlRfTElOS19ETExf
SU1QT1JUKEFWRm91bmRhdGlvbkNGLCBBVkNGTWV0YWRhdGFJdGVtQ29weUl0ZW1zV2l0aEtleUFu
ZEtleVNwYWNlLCBDRkFycmF5UmVmLCBfX2NkZWNsLCAoQ0ZBcnJheVJlZiBhcnJheSwgQ0ZUeXBl
UmVmIGtleSwgQ0ZTdHJpbmdSZWYga2V5U3BhY2UpLCAoYXJyYXksIGtleSwga2V5U3BhY2UpKQor
I2RlZmluZSBBVkNGTWV0YWRhdGFJdGVtQ29weUl0ZW1zV2l0aEtleUFuZEtleVNwYWNlIHNvZnRM
aW5rX0FWQ0ZNZXRhZGF0YUl0ZW1Db3B5SXRlbXNXaXRoS2V5QW5kS2V5U3BhY2UKKworU09GVF9M
SU5LX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZNZXRhZGF0YUl0ZW1Db3B5SXRlbXNX
aXRoTG9jYWxlLCBDRkFycmF5UmVmLCBfX2NkZWNsLCAoQ0ZBcnJheVJlZiBpdGVtcywgQ0ZMb2Nh
bGVSZWYgbG9jYWxlKSwgKGl0ZW1zLCBsb2NhbGUpKQorI2RlZmluZSBBVkNGTWV0YWRhdGFJdGVt
Q29weUl0ZW1zV2l0aExvY2FsZSBzb2Z0TGlua19BVkNGTWV0YWRhdGFJdGVtQ29weUl0ZW1zV2l0
aExvY2FsZQorCiBTT0ZUX0xJTktfRExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZDRlBsYXll
ckNyZWF0ZVBlcmlvZGljVGltZU9ic2VydmVyRm9ySW50ZXJ2YWwsIEFWQ0ZQbGF5ZXJPYnNlcnZl
clJlZiwgX19jZGVjbCwgKEFWQ0ZQbGF5ZXJSZWYgcGxheWVyLCBDTVRpbWUgaW50ZXJ2YWwsIGRp
c3BhdGNoX3F1ZXVlX3QgcXVldWUsIEFWQ0ZQbGF5ZXJQZXJpb2RpY1RpbWVPYnNlcnZlckNhbGxi
YWNrIGNhbGxiYWNrLCB2b2lkICpjbGllbnRDb250ZXh0KSwgKHBsYXllciwgaW50ZXJ2YWwsIHF1
ZXVlLCBjYWxsYmFjaywgY2xpZW50Q29udGV4dCkpCiAjZGVmaW5lIEFWQ0ZQbGF5ZXJDcmVhdGVQ
ZXJpb2RpY1RpbWVPYnNlcnZlckZvckludGVydmFsIHNvZnRMaW5rX0FWQ0ZQbGF5ZXJDcmVhdGVQ
ZXJpb2RpY1RpbWVPYnNlcnZlckZvckludGVydmFsCiAKQEAgLTEyMyw2ICsxNDcsOSBAQCBTT0ZU
X0xJTktfRExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZDCiBTT0ZUX0xJTktfRExMX0lNUE9S
VChBVkZvdW5kYXRpb25DRiwgQVZDRlBsYXllckl0ZW1HZXRDdXJyZW50VGltZSwgQ01UaW1lLCBf
X2NkZWNsLCAoQVZDRlBsYXllckl0ZW1SZWYgcGxheWVySXRlbSksIChwbGF5ZXJJdGVtKSkKICNk
ZWZpbmUgQVZDRlBsYXllckl0ZW1HZXRDdXJyZW50VGltZSBzb2Z0TGlua19BVkNGUGxheWVySXRl
bUdldEN1cnJlbnRUaW1lCiAKK1NPRlRfTElOS19ETExfSU1QT1JUKEFWRm91bmRhdGlvbkNGLCBB
VkNGUGxheWVySXRlbUdldER1cmF0aW9uLCBDTVRpbWUsIF9fY2RlY2wsIChBVkNGUGxheWVySXRl
bVJlZiBwbGF5ZXJJdGVtKSwgKHBsYXllckl0ZW0pKQorI2RlZmluZSBBVkNGUGxheWVySXRlbUdl
dER1cmF0aW9uIHNvZnRMaW5rX0FWQ0ZQbGF5ZXJJdGVtR2V0RHVyYXRpb24KKwogU09GVF9MSU5L
X0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZQbGF5ZXJJdGVtR2V0U3RhdHVzLCBBVkNG
UGxheWVySXRlbVN0YXR1cywgX19jZGVjbCwgKEFWQ0ZQbGF5ZXJJdGVtUmVmIHBsYXllckl0ZW0s
IENGRXJyb3JSZWYgKmVycm9yT3V0KSwgKHBsYXllckl0ZW0sIGVycm9yT3V0KSkKICNkZWZpbmUg
QVZDRlBsYXllckl0ZW1HZXRTdGF0dXMgc29mdExpbmtfQVZDRlBsYXllckl0ZW1HZXRTdGF0dXMK
IApAQCAtMTM1LDYgKzE2MiwxMiBAQCBTT0ZUX0xJTktfRExMX0lNUE9SVChBVkZvdW5kYXRpb25D
RiwgQVZDCiBTT0ZUX0xJTktfRExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZDRlBsYXllckl0
ZW1Jc1BsYXliYWNrTGlrZWx5VG9LZWVwVXAsIEJvb2xlYW4sIF9fY2RlY2wsIChBVkNGUGxheWVy
SXRlbVJlZiBwbGF5ZXJJdGVtKSwgKHBsYXllckl0ZW0pKQogI2RlZmluZSBBVkNGUGxheWVySXRl
bUlzUGxheWJhY2tMaWtlbHlUb0tlZXBVcCBzb2Z0TGlua19BVkNGUGxheWVySXRlbUlzUGxheWJh
Y2tMaWtlbHlUb0tlZXBVcAogCitTT0ZUX0xJTktfRExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwg
QVZDRlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0R2V0VHlwZUlELCBDRlR5cGVJRCwgX19jZGVjbCwg
KCksICgpKQorI2RlZmluZSBBVkNGUGxheWVySXRlbUxlZ2libGVPdXRwdXRHZXRUeXBlSUQgc29m
dExpbmtfQVZDRlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0R2V0VHlwZUlECisKK1NPRlRfTElOS19E
TExfSU1QT1JUKEFWRm91bmRhdGlvbkNGLCBBVkNGUGxheWVySXRlbVJlbW92ZU91dHB1dCwgdm9p
ZCwgX19jZGVjbCwgKEFWQ0ZQbGF5ZXJJdGVtUmVmIHBsYXllckl0ZW0sIEFWQ0ZQbGF5ZXJJdGVt
T3V0cHV0UmVmIG91dHB1dCksIChwbGF5ZXJJdGVtLCBvdXRwdXQpKQorI2RlZmluZSBBVkNGUGxh
eWVySXRlbVJlbW92ZU91dHB1dCBzb2Z0TGlua19BVkNGUGxheWVySXRlbVJlbW92ZU91dHB1dAor
CiBTT0ZUX0xJTktfRExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZDRlBsYXllckl0ZW1TZWVr
VG9UaW1lV2l0aFRvbGVyYW5jZUFuZENvbXBsZXRpb25DYWxsYmFjaywgQVZDRkFzc2V0UmVmLCBf
X2NkZWNsLCAoQVZDRlBsYXllckl0ZW1SZWYgcGxheWVySXRlbSwgQ01UaW1lIHRpbWUsIENNVGlt
ZSB0b2xlcmFuY2VCZWZvcmUsIENNVGltZSB0b2xlcmFuY2VBZnRlciwgQVZDRlBsYXllckl0ZW1T
ZWVrQ29tcGxldGlvbkNhbGxiYWNrIGNvbXBsZXRpb25DYWxsYmFjaywgdm9pZCAqY29udGV4dCks
IChwbGF5ZXJJdGVtLCB0aW1lLCB0b2xlcmFuY2VCZWZvcmUsIHRvbGVyYW5jZUFmdGVyLCBjb21w
bGV0aW9uQ2FsbGJhY2ssIGNvbnRleHQpKQogI2RlZmluZSBBVkNGUGxheWVySXRlbVNlZWtUb1Rp
bWVXaXRoVG9sZXJhbmNlQW5kQ29tcGxldGlvbkNhbGxiYWNrIHNvZnRMaW5rX0FWQ0ZQbGF5ZXJJ
dGVtU2Vla1RvVGltZVdpdGhUb2xlcmFuY2VBbmRDb21wbGV0aW9uQ2FsbGJhY2sKIApAQCAtMTU5
LDYgKzE5Miw5IEBAIFNPRlRfTElOS19ETExfSU1QT1JUKEFWRm91bmRhdGlvbkNGLCBBVkMKIFNP
RlRfTElOS19ETExfSU1QT1JUKEFWRm91bmRhdGlvbkNGLCBBVkNGUGxheWVyTGF5ZXJTZXRQbGF5
ZXIsIHZvaWQsIF9fY2RlY2wsIChBVkNGUGxheWVyTGF5ZXJSZWYgcGxheWVyTGF5ZXIsIEFWQ0ZQ
bGF5ZXJSZWYgcGxheWVyKSwgKHBsYXllckxheWVyLCBwbGF5ZXIpKQogI2RlZmluZSBBVkNGUGxh
eWVyTGF5ZXJTZXRQbGF5ZXIgc29mdExpbmtfQVZDRlBsYXllckxheWVyU2V0UGxheWVyCiAKK1NP
RlRfTElOS19ETExfSU1QT1JUKEFWRm91bmRhdGlvbkNGLCBBVkNGUGxheWVyUGxheSwgdm9pZCwg
X19jZGVjbCwgKEFWQ0ZQbGF5ZXJSZWYgcGxheWVyKSwgKHBsYXllcikpCisjZGVmaW5lIEFWQ0ZQ
bGF5ZXJQbGF5IHNvZnRMaW5rX0FWQ0ZQbGF5ZXJQbGF5CisKIFNPRlRfTElOS19ETExfSU1QT1JU
KEFWRm91bmRhdGlvbkNGLCBBVkNGUGxheWVyUmVtb3ZlT2JzZXJ2ZXIsIE9TU3RhdHVzLCBfX2Nk
ZWNsLCAoQVZDRlBsYXllclJlZiBwbGF5ZXIsIEFWQ0ZQbGF5ZXJPYnNlcnZlclJlZiBvYnNlcnZl
ciksIChwbGF5ZXIsIG9ic2VydmVyKSkKICNkZWZpbmUgQVZDRlBsYXllclJlbW92ZU9ic2VydmVy
IHNvZnRMaW5rX0FWQ0ZQbGF5ZXJSZW1vdmVPYnNlcnZlcgogCkBAIC0xNzksNzMgKzIxNSwxNjgg
QEAgU09GVF9MSU5LX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQwogCiBTT0ZUX0xJTktf
RExMX0lNUE9SVF9PUFRJT05BTChBVkZvdW5kYXRpb25DRiwgQVZDRlBsYXllclNldERpcmVjdDNE
RGV2aWNlLCB2b2lkLCBfX2NkZWNsLCAoQVZDRlBsYXllclJlZiBwbGF5ZXIsIElEaXJlY3QzRERl
dmljZTkqIGQzZERldmljZSkpCiAKKyNpZiBIQVZFKEFWRk9VTkRBVElPTl9NRURJQV9TRUxFQ1RJ
T05fR1JPVVApICYmIEhBVkUoQVZGT1VOREFUSU9OX0xFR0lCTEVfT1VUUFVUX1NVUFBPUlQpCisK
K1NPRlRfTElOS19ETExfSU1QT1JUKEFWRm91bmRhdGlvbkNGLCBBVkNGQXNzZXRHZXRTZWxlY3Rp
b25Hcm91cEZvck1lZGlhQ2hhcmFjdGVyaXN0aWMgLCBBVkNGTWVkaWFTZWxlY3Rpb25Hcm91cFJl
ZiwgX19jZGVjbCwgKEFWQ0ZBc3NldFJlZiBhc3NldCwgQ0ZTdHJpbmdSZWYgbWVkaWFDaGFyYWN0
ZXJpc3RpYyksIChhc3NldCwgbWVkaWFDaGFyYWN0ZXJpc3RpYykpCisjZGVmaW5lIEFWQ0ZBc3Nl
dEdldFNlbGVjdGlvbkdyb3VwRm9yTWVkaWFDaGFyYWN0ZXJpc3RpYyAgc29mdExpbmtfQVZDRkFz
c2V0R2V0U2VsZWN0aW9uR3JvdXBGb3JNZWRpYUNoYXJhY3RlcmlzdGljIAorCitTT0ZUX0xJTktf
RExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZDRk1lZGlhU2VsZWN0aW9uQ29weVBsYXlhYmxl
T3B0aW9uc0Zyb21BcnJheSwgQ0ZBcnJheVJlZiwgX19jZGVjbCwgKENGQXJyYXlSZWYgc2VsZWN0
aW9uT3B0aW9ucyksIChzZWxlY3Rpb25PcHRpb25zKSkKKyNkZWZpbmUgQVZDRk1lZGlhU2VsZWN0
aW9uQ29weVBsYXlhYmxlT3B0aW9uc0Zyb21BcnJheSBzb2Z0TGlua19BVkNGTWVkaWFTZWxlY3Rp
b25Db3B5UGxheWFibGVPcHRpb25zRnJvbUFycmF5CisKK1NPRlRfTElOS19ETExfSU1QT1JUKEFW
Rm91bmRhdGlvbkNGLCBBVkNGTWVkaWFTZWxlY3Rpb25PcHRpb25Db3B5Q29tbW9uTWV0YWRhdGEs
IENGQXJyYXlSZWYsIF9fY2RlY2wsIChBVkNGTWVkaWFTZWxlY3Rpb25PcHRpb25SZWYgc2VsZWN0
aW9uT3B0aW9uKSwgKHNlbGVjdGlvbk9wdGlvbikpCisjZGVmaW5lIEFWQ0ZNZWRpYVNlbGVjdGlv
bk9wdGlvbkNvcHlDb21tb25NZXRhZGF0YSBzb2Z0TGlua19BVkNGTWVkaWFTZWxlY3Rpb25PcHRp
b25Db3B5Q29tbW9uTWV0YWRhdGEKKworU09GVF9MSU5LX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9u
Q0YsIEFWQ0ZNZWRpYVNlbGVjdGlvbk9wdGlvbkNvcHlMb2NhbGUsIENGTG9jYWxlUmVmLCBfX2Nk
ZWNsLCAoQVZDRk1lZGlhU2VsZWN0aW9uT3B0aW9uUmVmIHNlbGVjdGlvbk9wdGlvbiksIChzZWxl
Y3Rpb25PcHRpb24pKQorI2RlZmluZSBBVkNGTWVkaWFTZWxlY3Rpb25PcHRpb25Db3B5TG9jYWxl
IHNvZnRMaW5rX0FWQ0ZNZWRpYVNlbGVjdGlvbk9wdGlvbkNvcHlMb2NhbGUKKworU09GVF9MSU5L
X0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZNZWRpYVNlbGVjdGlvbk9wdGlvbkdldE1l
ZGlhVHlwZSwgQ0ZTdHJpbmdSZWYsIF9fY2RlY2wsIChBVkNGTWVkaWFTZWxlY3Rpb25PcHRpb25S
ZWYgc2VsZWN0aW9uT3B0aW9uKSwgKHNlbGVjdGlvbk9wdGlvbikpCisjZGVmaW5lIEFWQ0ZNZWRp
YVNlbGVjdGlvbk9wdGlvbkdldE1lZGlhVHlwZSBzb2Z0TGlua19BVkNGTWVkaWFTZWxlY3Rpb25P
cHRpb25HZXRNZWRpYVR5cGUKKworU09GVF9MSU5LX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0Ys
IEFWQ0ZNZWRpYVNlbGVjdGlvbk9wdGlvbkhhc01lZGlhQ2hhcmFjdGVyaXN0aWMsIEJvb2xlYW4s
IF9fY2RlY2wsIChBVkNGTWVkaWFTZWxlY3Rpb25PcHRpb25SZWYgc2VsZWN0aW9uT3B0aW9uLCBD
RlN0cmluZ1JlZiBtZWRpYUNoYXJhY3RlcmlzdGljKSwgKHNlbGVjdGlvbk9wdGlvbiwgbWVkaWFD
aGFyYWN0ZXJpc3RpYykpCisjZGVmaW5lIEFWQ0ZNZWRpYVNlbGVjdGlvbk9wdGlvbkhhc01lZGlh
Q2hhcmFjdGVyaXN0aWMgc29mdExpbmtfQVZDRk1lZGlhU2VsZWN0aW9uT3B0aW9uSGFzTWVkaWFD
aGFyYWN0ZXJpc3RpYworCitTT0ZUX0xJTktfRExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZD
Rk1lZGlhU2VsZWN0aW9uR3JvdXBBbGxvd3NFbXB0eVNlbGVjdGlvbiwgQm9vbGVhbiwgX19jZGVj
bCwgKEFWQ0ZNZWRpYVNlbGVjdGlvbkdyb3VwUmVmIHNlbGVjdGlvbkdyb3VwKSwgKHNlbGVjdGlv
bkdyb3VwKSkKKyNkZWZpbmUgQVZDRk1lZGlhU2VsZWN0aW9uR3JvdXBBbGxvd3NFbXB0eVNlbGVj
dGlvbiBzb2Z0TGlua19BVkNGTWVkaWFTZWxlY3Rpb25Hcm91cEFsbG93c0VtcHR5U2VsZWN0aW9u
CisKK1NPRlRfTElOS19ETExfSU1QT1JUKEFWRm91bmRhdGlvbkNGLCBBVkNGTWVkaWFTZWxlY3Rp
b25Hcm91cEdldE9wdGlvbnMsIENGQXJyYXlSZWYsIF9fY2RlY2wsIChBVkNGTWVkaWFTZWxlY3Rp
b25Hcm91cFJlZiBzZWxlY3Rpb25Hcm91cCksIChzZWxlY3Rpb25Hcm91cCkpCisjZGVmaW5lIEFW
Q0ZNZWRpYVNlbGVjdGlvbkdyb3VwR2V0T3B0aW9ucyBzb2Z0TGlua19BVkNGTWVkaWFTZWxlY3Rp
b25Hcm91cEdldE9wdGlvbnMKKworU09GVF9MSU5LX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0Ys
IEFWQ0ZQbGF5ZXJJdGVtQWRkT3V0cHV0LCB2b2lkLCBfX2NkZWNsLCAoQVZDRlBsYXllckl0ZW1S
ZWYgcGxheWVySXRlbSwgQVZDRlBsYXllckl0ZW1PdXRwdXRSZWYgb3V0cHV0KSwgKHBsYXllckl0
ZW0sIG91dHB1dCkpCisjZGVmaW5lIEFWQ0ZQbGF5ZXJJdGVtQWRkT3V0cHV0IHNvZnRMaW5rX0FW
Q0ZQbGF5ZXJJdGVtQWRkT3V0cHV0CisKK1NPRlRfTElOS19ETExfSU1QT1JUKEFWRm91bmRhdGlv
bkNGLCBBVkNGUGxheWVySXRlbUxlZ2libGVPdXRwdXRDcmVhdGVXaXRoTWVkaWFTdWJ0eXBlc0Zv
ck5hdGl2ZVJlcHJlc2VudGF0aW9uLCBBVkNGUGxheWVySXRlbUxlZ2libGVPdXRwdXRSZWYsIF9f
Y2RlY2wsIChDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENGQXJyYXlSZWYgc3VidHlwZXMpLCAo
YWxsb2NhdG9yLCBzdWJ0eXBlcykpCisjZGVmaW5lIEFWQ0ZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1
dENyZWF0ZVdpdGhNZWRpYVN1YnR5cGVzRm9yTmF0aXZlUmVwcmVzZW50YXRpb24gc29mdExpbmtf
QVZDRlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0Q3JlYXRlV2l0aE1lZGlhU3VidHlwZXNGb3JOYXRp
dmVSZXByZXNlbnRhdGlvbgorCitTT0ZUX0xJTktfRExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwg
QVZDRlBsYXllckl0ZW1HZXRTZWxlY3RlZE1lZGlhT3B0aW9uSW5NZWRpYVNlbGVjdGlvbkdyb3Vw
LCBBVkNGTWVkaWFTZWxlY3Rpb25PcHRpb25SZWYsIF9fY2RlY2wsIChBVkNGUGxheWVySXRlbVJl
ZiBwbGF5ZXJJdGVtLCBBVkNGTWVkaWFTZWxlY3Rpb25Hcm91cFJlZiBzZWxlY3Rpb25Hcm91cCks
IChwbGF5ZXJJdGVtLCBzZWxlY3Rpb25Hcm91cCkpCisjZGVmaW5lIEFWQ0ZQbGF5ZXJJdGVtR2V0
U2VsZWN0ZWRNZWRpYU9wdGlvbkluTWVkaWFTZWxlY3Rpb25Hcm91cCBzb2Z0TGlua19BVkNGUGxh
eWVySXRlbUdldFNlbGVjdGVkTWVkaWFPcHRpb25Jbk1lZGlhU2VsZWN0aW9uR3JvdXAKKworU09G
VF9MSU5LX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZQbGF5ZXJJdGVtTGVnaWJsZU91
dHB1dFNldEFkdmFuY2VJbnRlcnZhbEZvckNhbGxiYWNrSW52b2NhdGlvbiwgdm9pZCwgX19jZGVj
bCwgKEFWQ0ZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1dFJlZiBsZWdpYmxlT3V0cHV0LCBDRlRpbWVJ
bnRlcnZhbCB0aW1lSW50ZXJ2YWwpLCAobGVnaWJsZU91dHB1dCwgdGltZUludGVydmFsKSkKKyNk
ZWZpbmUgQVZDRlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0U2V0QWR2YW5jZUludGVydmFsRm9yQ2Fs
bGJhY2tJbnZvY2F0aW9uIHNvZnRMaW5rX0FWQ0ZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1dFNldEFk
dmFuY2VJbnRlcnZhbEZvckNhbGxiYWNrSW52b2NhdGlvbgorCitTT0ZUX0xJTktfRExMX0lNUE9S
VChBVkZvdW5kYXRpb25DRiwgQVZDRlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0U2V0Q2FsbGJhY2tz
LCB2b2lkLCBfX2NkZWNsLCAoQVZDRlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0UmVmIG91dHB1dCwg
Y29uc3QgQVZDRlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0Q2FsbGJhY2tzKiBjYWxsYmFja3MsIGRp
c3BhdGNoX3F1ZXVlX3QgY2FsbGJhY2tRdWV1ZSksIChvdXRwdXQsIGNhbGxiYWNrcywgY2FsbGJh
Y2tRdWV1ZSkpCisjZGVmaW5lIEFWQ0ZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1dFNldENhbGxiYWNr
cyBzb2Z0TGlua19BVkNGUGxheWVySXRlbUxlZ2libGVPdXRwdXRTZXRDYWxsYmFja3MKKworU09G
VF9MSU5LX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZQbGF5ZXJJdGVtTGVnaWJsZU91
dHB1dFNldFRleHRTdHlsaW5nUmVzb2x1dGlvbiwgdm9pZCwgX19jZGVjbCwgKEFWQ0ZQbGF5ZXJJ
dGVtTGVnaWJsZU91dHB1dFJlZiBvdXRwdXQsIENGU3RyaW5nUmVmIHRleHRTdHlsaW5nUmVzb2x1
dGlvbiksIChvdXRwdXQsIHRleHRTdHlsaW5nUmVzb2x1dGlvbikpCisjZGVmaW5lIEFWQ0ZQbGF5
ZXJJdGVtTGVnaWJsZU91dHB1dFNldFRleHRTdHlsaW5nUmVzb2x1dGlvbiBzb2Z0TGlua19BVkNG
UGxheWVySXRlbUxlZ2libGVPdXRwdXRTZXRUZXh0U3R5bGluZ1Jlc29sdXRpb24KKworU09GVF9M
SU5LX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZQbGF5ZXJJdGVtT3V0cHV0U2V0U3Vw
cHJlc3NQbGF5ZXJSZW5kZXJpbmcsIHZvaWQsIF9fY2RlY2wsIChBVkNGUGxheWVySXRlbU91dHB1
dFJlZiBvdXRwdXQsIEJvb2xlYW4gc3VwcHJlc3NlZCksIChvdXRwdXQsIHN1cHByZXNzZWQpKQor
I2RlZmluZSBBVkNGUGxheWVySXRlbU91dHB1dFNldFN1cHByZXNzUGxheWVyUmVuZGVyaW5nIHNv
ZnRMaW5rX0FWQ0ZQbGF5ZXJJdGVtT3V0cHV0U2V0U3VwcHJlc3NQbGF5ZXJSZW5kZXJpbmcKKwor
U09GVF9MSU5LX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZQbGF5ZXJJdGVtU2VsZWN0
TWVkaWFPcHRpb25Jbk1lZGlhU2VsZWN0aW9uR3JvdXAsIHZvaWQsIF9fY2RlY2wsIChBVkNGUGxh
eWVySXRlbVJlZiBwbGF5ZXJJdGVtLCBBVkNGTWVkaWFTZWxlY3Rpb25PcHRpb25SZWYgc2VsZWN0
aW9uT3B0aW9uLCBBVkNGTWVkaWFTZWxlY3Rpb25Hcm91cFJlZiBzZWxlY3Rpb25Hcm91cCksIChw
bGF5ZXJJdGVtLCBzZWxlY3Rpb25PcHRpb24sIHNlbGVjdGlvbkdyb3VwKSkKKyNkZWZpbmUgQVZD
RlBsYXllckl0ZW1TZWxlY3RNZWRpYU9wdGlvbkluTWVkaWFTZWxlY3Rpb25Hcm91cCBzb2Z0TGlu
a19BVkNGUGxheWVySXRlbVNlbGVjdE1lZGlhT3B0aW9uSW5NZWRpYVNlbGVjdGlvbkdyb3VwCisK
KyNlbmRpZgorCiAvLyBWYXJpYWJsZXMKIAogU09GVF9MSU5LX1ZBUklBQkxFX0RMTF9JTVBPUlQo
QVZGb3VuZGF0aW9uQ0YsIEFWQ0ZBc3NldEltYWdlR2VuZXJhdG9yQXBlcnR1cmVNb2RlQ2xlYW5B
cGVydHVyZSwgY29uc3QgQ0ZTdHJpbmdSZWYpOwotI2RlZmluZSBBVkNGQXNzZXRJbWFnZUdlbmVy
YXRvckFwZXJ0dXJlTW9kZUNsZWFuQXBlcnR1cmUgZ2V0X0FWQ0ZBc3NldEltYWdlR2VuZXJhdG9y
QXBlcnR1cmVNb2RlQ2xlYW5BcGVydHVyZSgpCisjZGVmaW5lIEFWQ0ZBc3NldEltYWdlR2VuZXJh
dG9yQXBlcnR1cmVNb2RlQ2xlYW5BcGVydHVyZSBnZXRBVkNGQXNzZXRJbWFnZUdlbmVyYXRvckFw
ZXJ0dXJlTW9kZUNsZWFuQXBlcnR1cmUoKQogCiBTT0ZUX0xJTktfVkFSSUFCTEVfRExMX0lNUE9S
VChBVkZvdW5kYXRpb25DRiwgQVZDRkFzc2V0UHJvcGVydHlEdXJhdGlvbiwgY29uc3QgQ0ZTdHJp
bmdSZWYpOwotI2RlZmluZSBBVkNGQXNzZXRQcm9wZXJ0eUR1cmF0aW9uIGdldF9BVkNGQXNzZXRQ
cm9wZXJ0eUR1cmF0aW9uKCkKKyNkZWZpbmUgQVZDRkFzc2V0UHJvcGVydHlEdXJhdGlvbiBnZXRB
VkNGQXNzZXRQcm9wZXJ0eUR1cmF0aW9uKCkKIAogU09GVF9MSU5LX1ZBUklBQkxFX0RMTF9JTVBP
UlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZBc3NldFByb3BlcnR5TmF0dXJhbFNpemUsIGNvbnN0IENG
U3RyaW5nUmVmKTsKLSNkZWZpbmUgQVZDRkFzc2V0UHJvcGVydHlOYXR1cmFsU2l6ZSBnZXRfQVZD
RkFzc2V0UHJvcGVydHlOYXR1cmFsU2l6ZSgpCisjZGVmaW5lIEFWQ0ZBc3NldFByb3BlcnR5TmF0
dXJhbFNpemUgZ2V0QVZDRkFzc2V0UHJvcGVydHlOYXR1cmFsU2l6ZSgpCiAKIFNPRlRfTElOS19W
QVJJQUJMRV9ETExfSU1QT1JUKEFWRm91bmRhdGlvbkNGLCBBVkNGQXNzZXRQcm9wZXJ0eVBsYXlh
YmxlLCBjb25zdCBDRlN0cmluZ1JlZik7Ci0jZGVmaW5lIEFWQ0ZBc3NldFByb3BlcnR5UGxheWFi
bGUgZ2V0X0FWQ0ZBc3NldFByb3BlcnR5UGxheWFibGUoKQorI2RlZmluZSBBVkNGQXNzZXRQcm9w
ZXJ0eVBsYXlhYmxlIGdldEFWQ0ZBc3NldFByb3BlcnR5UGxheWFibGUoKQogCiBTT0ZUX0xJTktf
VkFSSUFCTEVfRExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZDRkFzc2V0UHJvcGVydHlQcmVm
ZXJyZWRSYXRlLCBjb25zdCBDRlN0cmluZ1JlZik7Ci0jZGVmaW5lIEFWQ0ZBc3NldFByb3BlcnR5
UHJlZmVycmVkUmF0ZSBnZXRfQVZDRkFzc2V0UHJvcGVydHlQcmVmZXJyZWRSYXRlKCkKKyNkZWZp
bmUgQVZDRkFzc2V0UHJvcGVydHlQcmVmZXJyZWRSYXRlIGdldEFWQ0ZBc3NldFByb3BlcnR5UHJl
ZmVycmVkUmF0ZSgpCiAKIFNPRlRfTElOS19WQVJJQUJMRV9ETExfSU1QT1JUKEFWRm91bmRhdGlv
bkNGLCBBVkNGQXNzZXRQcm9wZXJ0eVByZWZlcnJlZFRyYW5zZm9ybSwgY29uc3QgQ0ZTdHJpbmdS
ZWYpOwotI2RlZmluZSBBVkNGQXNzZXRQcm9wZXJ0eVByZWZlcnJlZFRyYW5zZm9ybSBnZXRfQVZD
RkFzc2V0UHJvcGVydHlQcmVmZXJyZWRUcmFuc2Zvcm0oKQorI2RlZmluZSBBVkNGQXNzZXRQcm9w
ZXJ0eVByZWZlcnJlZFRyYW5zZm9ybSBnZXRBVkNGQXNzZXRQcm9wZXJ0eVByZWZlcnJlZFRyYW5z
Zm9ybSgpCiAKIFNPRlRfTElOS19WQVJJQUJMRV9ETExfSU1QT1JUKEFWRm91bmRhdGlvbkNGLCBB
VkNGQXNzZXRQcm9wZXJ0eVRyYWNrcywgY29uc3QgQ0ZTdHJpbmdSZWYpOwotI2RlZmluZSBBVkNG
QXNzZXRQcm9wZXJ0eVRyYWNrcyBnZXRfQVZDRkFzc2V0UHJvcGVydHlUcmFja3MoKQorI2RlZmlu
ZSBBVkNGQXNzZXRQcm9wZXJ0eVRyYWNrcyBnZXRBVkNGQXNzZXRQcm9wZXJ0eVRyYWNrcygpCiAK
IFNPRlRfTElOS19WQVJJQUJMRV9ETExfSU1QT1JUKEFWRm91bmRhdGlvbkNGLCBBVkNGTWVkaWFD
aGFyYWN0ZXJpc3RpY0F1ZGlibGUsIGNvbnN0IENGU3RyaW5nUmVmKTsKLSNkZWZpbmUgQVZDRk1l
ZGlhQ2hhcmFjdGVyaXN0aWNBdWRpYmxlIGdldF9BVkNGTWVkaWFDaGFyYWN0ZXJpc3RpY0F1ZGli
bGUoKQorI2RlZmluZSBBVkNGTWVkaWFDaGFyYWN0ZXJpc3RpY0F1ZGlibGUgZ2V0QVZDRk1lZGlh
Q2hhcmFjdGVyaXN0aWNBdWRpYmxlKCkKIAogU09GVF9MSU5LX1ZBUklBQkxFX0RMTF9JTVBPUlQo
QVZGb3VuZGF0aW9uQ0YsIEFWQ0ZNZWRpYUNoYXJhY3RlcmlzdGljVmlzdWFsLCBjb25zdCBDRlN0
cmluZ1JlZik7Ci0jZGVmaW5lIEFWQ0ZNZWRpYUNoYXJhY3RlcmlzdGljVmlzdWFsIGdldF9BVkNG
TWVkaWFDaGFyYWN0ZXJpc3RpY1Zpc3VhbCgpCisjZGVmaW5lIEFWQ0ZNZWRpYUNoYXJhY3Rlcmlz
dGljVmlzdWFsIGdldEFWQ0ZNZWRpYUNoYXJhY3RlcmlzdGljVmlzdWFsKCkKIAogU09GVF9MSU5L
X1ZBUklBQkxFX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZNZWRpYVR5cGVBdWRpbywg
Y29uc3QgQ0ZTdHJpbmdSZWYpOwotI2RlZmluZSBBVkNGTWVkaWFUeXBlQXVkaW8gZ2V0X0FWQ0ZN
ZWRpYVR5cGVBdWRpbygpCisjZGVmaW5lIEFWQ0ZNZWRpYVR5cGVBdWRpbyBnZXRBVkNGTWVkaWFU
eXBlQXVkaW8oKQogCiBTT0ZUX0xJTktfVkFSSUFCTEVfRExMX0lNUE9SVChBVkZvdW5kYXRpb25D
RiwgQVZDRk1lZGlhVHlwZUNsb3NlZENhcHRpb24sIGNvbnN0IENGU3RyaW5nUmVmKTsKLSNkZWZp
bmUgQVZDRk1lZGlhVHlwZUNsb3NlZENhcHRpb24gZ2V0X0FWQ0ZNZWRpYVR5cGVDbG9zZWRDYXB0
aW9uKCkKKyNkZWZpbmUgQVZDRk1lZGlhVHlwZUNsb3NlZENhcHRpb24gZ2V0QVZDRk1lZGlhVHlw
ZUNsb3NlZENhcHRpb24oKQogCiBTT0ZUX0xJTktfVkFSSUFCTEVfRExMX0lNUE9SVChBVkZvdW5k
YXRpb25DRiwgQVZDRk1lZGlhVHlwZVZpZGVvLCBjb25zdCBDRlN0cmluZ1JlZik7Ci0jZGVmaW5l
IEFWQ0ZNZWRpYVR5cGVWaWRlbyBnZXRfQVZDRk1lZGlhVHlwZVZpZGVvKCkKKyNkZWZpbmUgQVZD
Rk1lZGlhVHlwZVZpZGVvIGdldEFWQ0ZNZWRpYVR5cGVWaWRlbygpCisKK1NPRlRfTElOS19WQVJJ
QUJMRV9ETExfSU1QT1JUKEFWRm91bmRhdGlvbkNGLCBBVkNGTWV0YWRhdGFDb21tb25LZXlUaXRs
ZSwgY29uc3QgQ0ZTdHJpbmdSZWYpOworI2RlZmluZSBBVkNGTWV0YWRhdGFDb21tb25LZXlUaXRs
ZSBnZXRBVkNGTWV0YWRhdGFDb21tb25LZXlUaXRsZSgpCisKK1NPRlRfTElOS19WQVJJQUJMRV9E
TExfSU1QT1JUKEFWRm91bmRhdGlvbkNGLCBBVkNGTWV0YWRhdGFLZXlTcGFjZUNvbW1vbiwgY29u
c3QgQ0ZTdHJpbmdSZWYpOworI2RlZmluZSBBVkNGTWV0YWRhdGFLZXlTcGFjZUNvbW1vbiBnZXRB
VkNGTWV0YWRhdGFLZXlTcGFjZUNvbW1vbigpCiAKIFNPRlRfTElOS19WQVJJQUJMRV9ETExfSU1Q
T1JUKEFWRm91bmRhdGlvbkNGLCBBVkNGUGxheWVySXRlbURpZFBsYXlUb0VuZFRpbWVOb3RpZmlj
YXRpb24sIGNvbnN0IENGU3RyaW5nUmVmKTsKLSNkZWZpbmUgQVZDRlBsYXllckl0ZW1EaWRQbGF5
VG9FbmRUaW1lTm90aWZpY2F0aW9uIGdldF9BVkNGUGxheWVySXRlbURpZFBsYXlUb0VuZFRpbWVO
b3RpZmljYXRpb24oKQorI2RlZmluZSBBVkNGUGxheWVySXRlbURpZFBsYXlUb0VuZFRpbWVOb3Rp
ZmljYXRpb24gZ2V0QVZDRlBsYXllckl0ZW1EaWRQbGF5VG9FbmRUaW1lTm90aWZpY2F0aW9uKCkK
KworU09GVF9MSU5LX1ZBUklBQkxFX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZQbGF5
ZXJJdGVtRHVyYXRpb25DaGFuZ2VkTm90aWZpY2F0aW9uLCBjb25zdCBDRlN0cmluZ1JlZik7Cisj
ZGVmaW5lIEFWQ0ZQbGF5ZXJJdGVtRHVyYXRpb25DaGFuZ2VkTm90aWZpY2F0aW9uIGdldEFWQ0ZQ
bGF5ZXJJdGVtRHVyYXRpb25DaGFuZ2VkTm90aWZpY2F0aW9uKCkKIAogU09GVF9MSU5LX1ZBUklB
QkxFX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZQbGF5ZXJJdGVtSXNQbGF5YmFja0J1
ZmZlckVtcHR5Q2hhbmdlZE5vdGlmaWNhdGlvbiwgY29uc3QgQ0ZTdHJpbmdSZWYpOwotI2RlZmlu
ZSBBVkNGUGxheWVySXRlbUlzUGxheWJhY2tCdWZmZXJFbXB0eUNoYW5nZWROb3RpZmljYXRpb24g
Z2V0X0FWQ0ZQbGF5ZXJJdGVtSXNQbGF5YmFja0J1ZmZlckVtcHR5Q2hhbmdlZE5vdGlmaWNhdGlv
bigpCisjZGVmaW5lIEFWQ0ZQbGF5ZXJJdGVtSXNQbGF5YmFja0J1ZmZlckVtcHR5Q2hhbmdlZE5v
dGlmaWNhdGlvbiBnZXRBVkNGUGxheWVySXRlbUlzUGxheWJhY2tCdWZmZXJFbXB0eUNoYW5nZWRO
b3RpZmljYXRpb24oKQogCiBTT0ZUX0xJTktfVkFSSUFCTEVfRExMX0lNUE9SVChBVkZvdW5kYXRp
b25DRiwgQVZDRlBsYXllckl0ZW1Jc1BsYXliYWNrQnVmZmVyRnVsbENoYW5nZWROb3RpZmljYXRp
b24sIGNvbnN0IENGU3RyaW5nUmVmKTsKLSNkZWZpbmUgQVZDRlBsYXllckl0ZW1Jc1BsYXliYWNr
QnVmZmVyRnVsbENoYW5nZWROb3RpZmljYXRpb24gZ2V0X0FWQ0ZQbGF5ZXJJdGVtSXNQbGF5YmFj
a0J1ZmZlckZ1bGxDaGFuZ2VkTm90aWZpY2F0aW9uKCkKKyNkZWZpbmUgQVZDRlBsYXllckl0ZW1J
c1BsYXliYWNrQnVmZmVyRnVsbENoYW5nZWROb3RpZmljYXRpb24gZ2V0QVZDRlBsYXllckl0ZW1J
c1BsYXliYWNrQnVmZmVyRnVsbENoYW5nZWROb3RpZmljYXRpb24oKQogCiBTT0ZUX0xJTktfVkFS
SUFCTEVfRExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZDRlBsYXllckl0ZW1Jc1BsYXliYWNr
TGlrZWx5VG9LZWVwVXBDaGFuZ2VkTm90aWZpY2F0aW9uLCBjb25zdCBDRlN0cmluZ1JlZik7Ci0j
ZGVmaW5lIEFWQ0ZQbGF5ZXJJdGVtSXNQbGF5YmFja0xpa2VseVRvS2VlcFVwQ2hhbmdlZE5vdGlm
aWNhdGlvbiBnZXRfQVZDRlBsYXllckl0ZW1Jc1BsYXliYWNrTGlrZWx5VG9LZWVwVXBDaGFuZ2Vk
Tm90aWZpY2F0aW9uKCkKKyNkZWZpbmUgQVZDRlBsYXllckl0ZW1Jc1BsYXliYWNrTGlrZWx5VG9L
ZWVwVXBDaGFuZ2VkTm90aWZpY2F0aW9uIGdldEFWQ0ZQbGF5ZXJJdGVtSXNQbGF5YmFja0xpa2Vs
eVRvS2VlcFVwQ2hhbmdlZE5vdGlmaWNhdGlvbigpCiAKIFNPRlRfTElOS19WQVJJQUJMRV9ETExf
SU1QT1JUKEFWRm91bmRhdGlvbkNGLCBBVkNGUGxheWVySXRlbUxvYWRlZFRpbWVSYW5nZXNDaGFu
Z2VkTm90aWZpY2F0aW9uLCBjb25zdCBDRlN0cmluZ1JlZik7Ci0jZGVmaW5lIEFWQ0ZQbGF5ZXJJ
dGVtTG9hZGVkVGltZVJhbmdlc0NoYW5nZWROb3RpZmljYXRpb24gZ2V0X0FWQ0ZQbGF5ZXJJdGVt
TG9hZGVkVGltZVJhbmdlc0NoYW5nZWROb3RpZmljYXRpb24oKQorI2RlZmluZSBBVkNGUGxheWVy
SXRlbUxvYWRlZFRpbWVSYW5nZXNDaGFuZ2VkTm90aWZpY2F0aW9uIGdldEFWQ0ZQbGF5ZXJJdGVt
TG9hZGVkVGltZVJhbmdlc0NoYW5nZWROb3RpZmljYXRpb24oKQogCiBTT0ZUX0xJTktfVkFSSUFC
TEVfRExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZDRlBsYXllckl0ZW1QcmVzZW50YXRpb25T
aXplQ2hhbmdlZE5vdGlmaWNhdGlvbiwgY29uc3QgQ0ZTdHJpbmdSZWYpOwotI2RlZmluZSBBVkNG
UGxheWVySXRlbVByZXNlbnRhdGlvblNpemVDaGFuZ2VkTm90aWZpY2F0aW9uIGdldF9BVkNGUGxh
eWVySXRlbVByZXNlbnRhdGlvblNpemVDaGFuZ2VkTm90aWZpY2F0aW9uKCkKKyNkZWZpbmUgQVZD
RlBsYXllckl0ZW1QcmVzZW50YXRpb25TaXplQ2hhbmdlZE5vdGlmaWNhdGlvbiBnZXRBVkNGUGxh
eWVySXRlbVByZXNlbnRhdGlvblNpemVDaGFuZ2VkTm90aWZpY2F0aW9uKCkKIAogU09GVF9MSU5L
X1ZBUklBQkxFX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZQbGF5ZXJJdGVtU2Vla2Fi
bGVUaW1lUmFuZ2VzQ2hhbmdlZE5vdGlmaWNhdGlvbiwgY29uc3QgQ0ZTdHJpbmdSZWYpOwotI2Rl
ZmluZSBBVkNGUGxheWVySXRlbVNlZWthYmxlVGltZVJhbmdlc0NoYW5nZWROb3RpZmljYXRpb24g
Z2V0X0FWQ0ZQbGF5ZXJJdGVtU2Vla2FibGVUaW1lUmFuZ2VzQ2hhbmdlZE5vdGlmaWNhdGlvbigp
CisjZGVmaW5lIEFWQ0ZQbGF5ZXJJdGVtU2Vla2FibGVUaW1lUmFuZ2VzQ2hhbmdlZE5vdGlmaWNh
dGlvbiBnZXRBVkNGUGxheWVySXRlbVNlZWthYmxlVGltZVJhbmdlc0NoYW5nZWROb3RpZmljYXRp
b24oKQogCiBTT0ZUX0xJTktfVkFSSUFCTEVfRExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZD
RlBsYXllckl0ZW1TdGF0dXNDaGFuZ2VkTm90aWZpY2F0aW9uLCBjb25zdCBDRlN0cmluZ1JlZik7
Ci0jZGVmaW5lIEFWQ0ZQbGF5ZXJJdGVtU3RhdHVzQ2hhbmdlZE5vdGlmaWNhdGlvbiBnZXRfQVZD
RlBsYXllckl0ZW1TdGF0dXNDaGFuZ2VkTm90aWZpY2F0aW9uKCkKKyNkZWZpbmUgQVZDRlBsYXll
ckl0ZW1TdGF0dXNDaGFuZ2VkTm90aWZpY2F0aW9uIGdldEFWQ0ZQbGF5ZXJJdGVtU3RhdHVzQ2hh
bmdlZE5vdGlmaWNhdGlvbigpCiAKIFNPRlRfTElOS19WQVJJQUJMRV9ETExfSU1QT1JUKEFWRm91
bmRhdGlvbkNGLCBBVkNGUGxheWVySXRlbVRyYWNrc0NoYW5nZWROb3RpZmljYXRpb24sIGNvbnN0
IENGU3RyaW5nUmVmKTsKLSNkZWZpbmUgQVZDRlBsYXllckl0ZW1UcmFja3NDaGFuZ2VkTm90aWZp
Y2F0aW9uIGdldF9BVkNGUGxheWVySXRlbVRyYWNrc0NoYW5nZWROb3RpZmljYXRpb24oKQorI2Rl
ZmluZSBBVkNGUGxheWVySXRlbVRyYWNrc0NoYW5nZWROb3RpZmljYXRpb24gZ2V0QVZDRlBsYXll
ckl0ZW1UcmFja3NDaGFuZ2VkTm90aWZpY2F0aW9uKCkKIAogU09GVF9MSU5LX1ZBUklBQkxFX0RM
TF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZQbGF5ZXJSYXRlQ2hhbmdlZE5vdGlmaWNhdGlv
biwgY29uc3QgQ0ZTdHJpbmdSZWYpOwotI2RlZmluZSBBVkNGUGxheWVyUmF0ZUNoYW5nZWROb3Rp
ZmljYXRpb24gZ2V0X0FWQ0ZQbGF5ZXJSYXRlQ2hhbmdlZE5vdGlmaWNhdGlvbigpCisjZGVmaW5l
IEFWQ0ZQbGF5ZXJSYXRlQ2hhbmdlZE5vdGlmaWNhdGlvbiBnZXRBVkNGUGxheWVyUmF0ZUNoYW5n
ZWROb3RpZmljYXRpb24oKQogCiBTT0ZUX0xJTktfVkFSSUFCTEVfRExMX0lNUE9SVF9PUFRJT05B
TChBVkZvdW5kYXRpb25DRiwgQVZDRlBsYXllckVuYWJsZUhhcmR3YXJlQWNjZWxlcmF0ZWRWaWRl
b0RlY29kZXJLZXksIGNvbnN0IENGU3RyaW5nUmVmKTsKLSNkZWZpbmUgQVZDRlBsYXllckVuYWJs
ZUhhcmR3YXJlQWNjZWxlcmF0ZWRWaWRlb0RlY29kZXJLZXkgZ2V0X0FWQ0ZQbGF5ZXJFbmFibGVI
YXJkd2FyZUFjY2VsZXJhdGVkVmlkZW9EZWNvZGVyS2V5KCkKKyNkZWZpbmUgQVZDRlBsYXllckVu
YWJsZUhhcmR3YXJlQWNjZWxlcmF0ZWRWaWRlb0RlY29kZXJLZXkgZ2V0QVZDRlBsYXllckVuYWJs
ZUhhcmR3YXJlQWNjZWxlcmF0ZWRWaWRlb0RlY29kZXJLZXkoKQorCisjaWYgSEFWRShBVkZPVU5E
QVRJT05fTUVESUFfU0VMRUNUSU9OX0dST1VQKSAmJiBIQVZFKEFWRk9VTkRBVElPTl9MRUdJQkxF
X09VVFBVVF9TVVBQT1JUKQorCitTT0ZUX0xJTktfVkFSSUFCTEVfRExMX0lNUE9SVChBVkZvdW5k
YXRpb25DRiwgQVZDRkFzc2V0UHJvcGVydHlBdmFpbGFibGVNZWRpYUNoYXJhY3RlcmlzdGljc1dp
dGhNZWRpYVNlbGVjdGlvbk9wdGlvbnMsIGNvbnN0IENGU3RyaW5nUmVmKTsKKyNkZWZpbmUgQVZD
RkFzc2V0UHJvcGVydHlBdmFpbGFibGVNZWRpYUNoYXJhY3RlcmlzdGljc1dpdGhNZWRpYVNlbGVj
dGlvbk9wdGlvbnMgIGdldEFWQ0ZBc3NldFByb3BlcnR5QXZhaWxhYmxlTWVkaWFDaGFyYWN0ZXJp
c3RpY3NXaXRoTWVkaWFTZWxlY3Rpb25PcHRpb25zKCkKKworU09GVF9MSU5LX1ZBUklBQkxFX0RM
TF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZNZWRpYUNoYXJhY3RlcmlzdGljRWFzeVRvUmVh
ZCwgY29uc3QgQ0ZTdHJpbmdSZWYpOworI2RlZmluZSBBVkNGTWVkaWFDaGFyYWN0ZXJpc3RpY0Vh
c3lUb1JlYWQgZ2V0QVZDRk1lZGlhQ2hhcmFjdGVyaXN0aWNFYXN5VG9SZWFkKCkKKworU09GVF9M
SU5LX1ZBUklBQkxFX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZNZWRpYUNoYXJhY3Rl
cmlzdGljQ29udGFpbnNPbmx5Rm9yY2VkU3VidGl0bGVzLCBjb25zdCBDRlN0cmluZ1JlZik7Cisj
ZGVmaW5lIEFWQ0ZNZWRpYUNoYXJhY3RlcmlzdGljQ29udGFpbnNPbmx5Rm9yY2VkU3VidGl0bGVz
IGdldEFWQ0ZNZWRpYUNoYXJhY3RlcmlzdGljQ29udGFpbnNPbmx5Rm9yY2VkU3VidGl0bGVzKCkK
KworU09GVF9MSU5LX1ZBUklBQkxFX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZNZWRp
YUNoYXJhY3RlcmlzdGljRGVzY3JpYmVzTXVzaWNBbmRTb3VuZEZvckFjY2Vzc2liaWxpdHksIGNv
bnN0IENGU3RyaW5nUmVmKTsKKyNkZWZpbmUgQVZDRk1lZGlhQ2hhcmFjdGVyaXN0aWNEZXNjcmli
ZXNNdXNpY0FuZFNvdW5kRm9yQWNjZXNzaWJpbGl0eSBnZXRBVkNGTWVkaWFDaGFyYWN0ZXJpc3Rp
Y0Rlc2NyaWJlc011c2ljQW5kU291bmRGb3JBY2Nlc3NpYmlsaXR5KCkKKworU09GVF9MSU5LX1ZB
UklBQkxFX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZNZWRpYUNoYXJhY3RlcmlzdGlj
SXNNYWluUHJvZ3JhbUNvbnRlbnQsIGNvbnN0IENGU3RyaW5nUmVmKTsKKyNkZWZpbmUgQVZDRk1l
ZGlhQ2hhcmFjdGVyaXN0aWNJc01haW5Qcm9ncmFtQ29udGVudCBnZXRBVkNGTWVkaWFDaGFyYWN0
ZXJpc3RpY0lzTWFpblByb2dyYW1Db250ZW50KCkKKworU09GVF9MSU5LX1ZBUklBQkxFX0RMTF9J
TVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZNZWRpYUNoYXJhY3RlcmlzdGljTGVnaWJsZSwgY29u
c3QgQ0ZTdHJpbmdSZWYpOworI2RlZmluZSBBVkNGTWVkaWFDaGFyYWN0ZXJpc3RpY0xlZ2libGUg
Z2V0QVZDRk1lZGlhQ2hhcmFjdGVyaXN0aWNMZWdpYmxlKCkKKworU09GVF9MSU5LX1ZBUklBQkxF
X0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZNZWRpYUNoYXJhY3RlcmlzdGljVHJhbnNj
cmliZXNTcG9rZW5EaWFsb2dGb3JBY2Nlc3NpYmlsaXR5LCBjb25zdCBDRlN0cmluZ1JlZik7Cisj
ZGVmaW5lIEFWQ0ZNZWRpYUNoYXJhY3RlcmlzdGljVHJhbnNjcmliZXNTcG9rZW5EaWFsb2dGb3JB
Y2Nlc3NpYmlsaXR5IGdldEFWQ0ZNZWRpYUNoYXJhY3RlcmlzdGljVHJhbnNjcmliZXNTcG9rZW5E
aWFsb2dGb3JBY2Nlc3NpYmlsaXR5KCkKKworU09GVF9MSU5LX1ZBUklBQkxFX0RMTF9JTVBPUlQo
QVZGb3VuZGF0aW9uQ0YsIEFWQ0ZNZWRpYVR5cGVTdWJ0aXRsZSwgY29uc3QgQ0ZTdHJpbmdSZWYp
OworI2RlZmluZSBBVkNGTWVkaWFUeXBlU3VidGl0bGUgZ2V0QVZDRk1lZGlhVHlwZVN1YnRpdGxl
KCkKKworU09GVF9MSU5LX1ZBUklBQkxFX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZQ
bGF5ZXJBcHBsaWVzTWVkaWFTZWxlY3Rpb25Dcml0ZXJpYUF1dG9tYXRpY2FsbHlLZXksIGNvbnN0
IENGU3RyaW5nUmVmKTsKKyNkZWZpbmUgQVZDRlBsYXllckFwcGxpZXNNZWRpYVNlbGVjdGlvbkNy
aXRlcmlhQXV0b21hdGljYWxseUtleSBnZXRBVkNGUGxheWVyQXBwbGllc01lZGlhU2VsZWN0aW9u
Q3JpdGVyaWFBdXRvbWF0aWNhbGx5S2V5KCkKKworU09GVF9MSU5LX1ZBUklBQkxFX0RMTF9JTVBP
UlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1dFRleHRTdHlsaW5n
UmVzb2x1dGlvblNvdXJjZUFuZFJ1bGVzT25seSwgY29uc3QgQ0ZTdHJpbmdSZWYpOworI2RlZmlu
ZSBBVkNGUGxheWVySXRlbUxlZ2libGVPdXRwdXRUZXh0U3R5bGluZ1Jlc29sdXRpb25Tb3VyY2VB
bmRSdWxlc09ubHkgZ2V0QVZDRlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0VGV4dFN0eWxpbmdSZXNv
bHV0aW9uU291cmNlQW5kUnVsZXNPbmx5KCkKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvQ29yZU1lZGlhU29mdExpbmtpbmcu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vY2YvQ29yZU1lZGlhU29mdExpbmtpbmcuaAkocmV2aXNpb24gMTUyNzkzKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0NvcmVNZWRpYVNv
ZnRMaW5raW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDEwIEBAIFNPRlRfTElOS19E
TExfSU1QT1JUKENvcmVNZWRpYSwgQ01UaW1lTWEKIFNPRlRfTElOS19ETExfSU1QT1JUKENvcmVN
ZWRpYSwgQ01UaW1lTWFrZVdpdGhTZWNvbmRzLCBDTVRpbWUsIF9fY2RlY2wsIChGbG9hdDY0IHNl
Y29uZHMsIGludDMyX3QgcHJlZmVycmVkVGltZVNjYWxlKSwgKHNlY29uZHMsIHByZWZlcnJlZFRp
bWVTY2FsZSkpCiAjZGVmaW5lIENNVGltZU1ha2VXaXRoU2Vjb25kcyBzb2Z0TGlua19DTVRpbWVN
YWtlV2l0aFNlY29uZHMKIAorU09GVF9MSU5LX0RMTF9JTVBPUlQoQ29yZU1lZGlhLCBDTVRpbWVS
YW5nZUdldEVuZCwgQ01UaW1lLCBfX2NkZWNsLCAoQ01UaW1lUmFuZ2UgcmFuZ2UpLCAocmFuZ2Up
KQorI2RlZmluZSBDTVRpbWVSYW5nZUdldEVuZCBzb2Z0TGlua19DTVRpbWVSYW5nZUdldEVuZAor
CiAvLyBWYXJpYWJsZXMKIAogU09GVF9MSU5LX1ZBUklBQkxFX0RMTF9JTVBPUlQoQ29yZU1lZGlh
LCBrQ01UaW1lWmVybywgY29uc3QgQ01UaW1lKTsKLSNkZWZpbmUga0NNVGltZVplcm8gZ2V0X2tD
TVRpbWVaZXJvKCkKKyNkZWZpbmUga0NNVGltZVplcm8gZ2V0a0NNVGltZVplcm8oKQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0luYmFuZFRl
eHRUcmFja1ByaXZhdGVBVkNGLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0Yu
Y3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL2NmL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDE4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lm
IFBMQVRGT1JNKFdJTikgJiYgRU5BQkxFKFZJREVPKSAmJiBIQVZFKEFWRk9VTkRBVElPTl9NRURJ
QV9TRUxFQ1RJT05fR1JPVVApCisKKyNpbmNsdWRlICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZD
Ri5oIgorCisjaW5jbHVkZSAiRmxvYXRDb252ZXJzaW9uLmgiCisjaW5jbHVkZSAiSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZS5oIgorI2luY2x1ZGUgIkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaCIK
KyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiU29mdExpbmtpbmcuaCIKKworI2luY2x1
ZGUgPEFWRm91bmRhdGlvbkNGL0FWQ0ZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1dC5oPgorI2luY2x1
ZGUgPEFWRm91bmRhdGlvbkNGL0FWRm91bmRhdGlvbkNGLmg+CisKKyNpbmNsdWRlIDxkM2Q5Lmg+
CisKKy8vIFRoZSBzb2Z0bGluayBoZWFkZXIgZmlsZXMgbXVzdCBiZSBpbmNsdWRlZCBhZnRlciB0
aGUgQVZDRiBhbmQgQ29yZU1lZGlhIGhlYWRlciBmaWxlcy4KKyNpbmNsdWRlICJBVkZvdW5kYXRp
b25DRlNvZnRMaW5raW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUFWQ0Y6OkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGKEFWRkluYmFuZFRyYWNr
UGFyZW50KiBwbGF5ZXIsIEFWQ0ZNZWRpYVNlbGVjdGlvbk9wdGlvblJlZiBzZWxlY3Rpb24pCisg
ICAgOiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGKHBsYXllcikKKyAgICAsIG1fbWVkaWFTZWxl
Y3Rpb25PcHRpb24oc2VsZWN0aW9uKQoreworfQorCit2b2lkIEluYmFuZFRleHRUcmFja1ByaXZh
dGVBVkNGOjpkaXNjb25uZWN0KCkKK3sKKyAgICBtX21lZGlhU2VsZWN0aW9uT3B0aW9uID0gMDsK
KyAgICBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpkaXNjb25uZWN0KCk7Cit9CisKK0luYmFu
ZFRleHRUcmFja1ByaXZhdGU6OktpbmQgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0Y6OmtpbmQo
KSBjb25zdAoreworICAgIGlmICghbV9tZWRpYVNlbGVjdGlvbk9wdGlvbikKKyAgICAgICAgcmV0
dXJuIEluYmFuZFRleHRUcmFja1ByaXZhdGU6Ok5vbmU7CisKKyAgICBDRlN0cmluZ1JlZiBtZWRp
YVR5cGUgPSBBVkNGTWVkaWFTZWxlY3Rpb25PcHRpb25HZXRNZWRpYVR5cGUobWVkaWFTZWxlY3Rp
b25PcHRpb24oKSk7CisgICAgCisgICAgaWYgKENGU3RyaW5nQ29tcGFyZShtZWRpYVR5cGUsIEFW
Q0ZNZWRpYVR5cGVDbG9zZWRDYXB0aW9uLCBrQ0ZDb21wYXJlQ2FzZUluc2Vuc2l0aXZlKSA9PSBr
Q0ZDb21wYXJlRXF1YWxUbykKKyAgICAgICAgcmV0dXJuIEluYmFuZFRleHRUcmFja1ByaXZhdGU6
OkNhcHRpb25zOworICAgIGlmIChDRlN0cmluZ0NvbXBhcmUobWVkaWFUeXBlLCBBVkNGTWVkaWFU
eXBlU3VidGl0bGUsIGtDRkNvbXBhcmVDYXNlSW5zZW5zaXRpdmUpID09IGtDRkNvbXBhcmVFcXVh
bFRvKSB7CisgICAgICAgIGlmIChBVkNGTWVkaWFTZWxlY3Rpb25PcHRpb25IYXNNZWRpYUNoYXJh
Y3RlcmlzdGljKG1lZGlhU2VsZWN0aW9uT3B0aW9uKCksIEFWQ0ZNZWRpYUNoYXJhY3RlcmlzdGlj
Q29udGFpbnNPbmx5Rm9yY2VkU3VidGl0bGVzKSkKKyAgICAgICAgICAgIHJldHVybiBJbmJhbmRU
ZXh0VHJhY2tQcml2YXRlOjpGb3JjZWQ7CisKKyAgICAgICAgLy8gQW4gIlNESCIgdHJhY2sgaXMg
YSBzdWJ0aXRsZSB0cmFjayBjcmVhdGVkIGZvciB0aGUgZGVhZiBvciBoYXJkLW9mLWhlYXJpbmcu
ICJjYXB0aW9ucyIgaW4gV2ViVlRUIGFyZQorICAgICAgICAvLyAibGFiZWxlZCBhcyBhcHByb3By
aWF0ZSBmb3IgdGhlIGhhcmQtb2YtaGVhcmluZyIsIHNvIHRhZyBTREggc3V0aXRsZXMgYXMgImNh
cHRpb25zIi4KKyAgICAgICAgaWYgKEFWQ0ZNZWRpYVNlbGVjdGlvbk9wdGlvbkhhc01lZGlhQ2hh
cmFjdGVyaXN0aWMobWVkaWFTZWxlY3Rpb25PcHRpb24oKSwgQVZDRk1lZGlhQ2hhcmFjdGVyaXN0
aWNUcmFuc2NyaWJlc1Nwb2tlbkRpYWxvZ0ZvckFjY2Vzc2liaWxpdHkpKQorICAgICAgICAgICAg
cmV0dXJuIEluYmFuZFRleHRUcmFja1ByaXZhdGU6OkNhcHRpb25zOworICAgICAgICBpZiAoQVZD
Rk1lZGlhU2VsZWN0aW9uT3B0aW9uSGFzTWVkaWFDaGFyYWN0ZXJpc3RpYyhtZWRpYVNlbGVjdGlv
bk9wdGlvbigpLCBBVkNGTWVkaWFDaGFyYWN0ZXJpc3RpY0Rlc2NyaWJlc011c2ljQW5kU291bmRG
b3JBY2Nlc3NpYmlsaXR5KSkKKyAgICAgICAgICAgIHJldHVybiBJbmJhbmRUZXh0VHJhY2tQcml2
YXRlOjpDYXB0aW9uczsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBJbmJhbmRUZXh0VHJhY2tQ
cml2YXRlOjpTdWJ0aXRsZXM7CisgICAgfQorCisgICAgcmV0dXJuIEluYmFuZFRleHRUcmFja1By
aXZhdGU6OkNhcHRpb25zOworfQorCitib29sIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGOjpp
c0Nsb3NlZENhcHRpb25zKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fbWVkaWFTZWxlY3Rpb25PcHRp
b24pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIENGU3RyaW5nUmVmIG1lZGlhVHlwZSA9
IEFWQ0ZNZWRpYVNlbGVjdGlvbk9wdGlvbkdldE1lZGlhVHlwZShtZWRpYVNlbGVjdGlvbk9wdGlv
bigpKTsKKworICAgIHJldHVybiAoQ0ZTdHJpbmdDb21wYXJlKG1lZGlhVHlwZSwgQVZDRk1lZGlh
VHlwZUNsb3NlZENhcHRpb24sIGtDRkNvbXBhcmVDYXNlSW5zZW5zaXRpdmUpID09IGtDRkNvbXBh
cmVFcXVhbFRvKTsKK30KKworYm9vbCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRjo6aXNTREgo
KSBjb25zdAoreworICAgIGlmICghbV9tZWRpYVNlbGVjdGlvbk9wdGlvbikKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIAorICAgIENGU3RyaW5nUmVmIG1lZGlhVHlwZSA9IEFWQ0ZNZWRpYVNl
bGVjdGlvbk9wdGlvbkdldE1lZGlhVHlwZShtZWRpYVNlbGVjdGlvbk9wdGlvbigpKTsKKworICAg
IGlmIChDRlN0cmluZ0NvbXBhcmUobWVkaWFUeXBlLCBBVkNGTWVkaWFUeXBlU3VidGl0bGUsIGtD
RkNvbXBhcmVDYXNlSW5zZW5zaXRpdmUpICE9IGtDRkNvbXBhcmVFcXVhbFRvKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoQVZDRk1lZGlhU2VsZWN0aW9uT3B0aW9uSGFzTWVkaWFD
aGFyYWN0ZXJpc3RpYyhtZWRpYVNlbGVjdGlvbk9wdGlvbigpLCBBVkNGTWVkaWFDaGFyYWN0ZXJp
c3RpY1RyYW5zY3JpYmVzU3Bva2VuRGlhbG9nRm9yQWNjZXNzaWJpbGl0eSkKKyAgICAgICAgJiYg
QVZDRk1lZGlhU2VsZWN0aW9uT3B0aW9uSGFzTWVkaWFDaGFyYWN0ZXJpc3RpYyhtZWRpYVNlbGVj
dGlvbk9wdGlvbigpLCBBVkNGTWVkaWFDaGFyYWN0ZXJpc3RpY0Rlc2NyaWJlc011c2ljQW5kU291
bmRGb3JBY2Nlc3NpYmlsaXR5KSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisgICAgCitib29sIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGOjpjb250YWlu
c09ubHlGb3JjZWRTdWJ0aXRsZXMoKSBjb25zdAoreworICAgIGlmICghbV9tZWRpYVNlbGVjdGlv
bk9wdGlvbikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIHJldHVybiBBVkNGTWVk
aWFTZWxlY3Rpb25PcHRpb25IYXNNZWRpYUNoYXJhY3RlcmlzdGljKG1lZGlhU2VsZWN0aW9uT3B0
aW9uKCksIEFWQ0ZNZWRpYUNoYXJhY3RlcmlzdGljQ29udGFpbnNPbmx5Rm9yY2VkU3VidGl0bGVz
KTsKK30KKworYm9vbCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRjo6aXNNYWluUHJvZ3JhbUNv
bnRlbnQoKSBjb25zdAoreworICAgIGlmICghbV9tZWRpYVNlbGVjdGlvbk9wdGlvbikKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIHJldHVybiBBVkNGTWVkaWFTZWxlY3Rpb25PcHRp
b25IYXNNZWRpYUNoYXJhY3RlcmlzdGljKG1lZGlhU2VsZWN0aW9uT3B0aW9uKCksIEFWQ0ZNZWRp
YUNoYXJhY3RlcmlzdGljSXNNYWluUHJvZ3JhbUNvbnRlbnQpOworfQorCitib29sIEluYmFuZFRl
eHRUcmFja1ByaXZhdGVBVkNGOjppc0Vhc3lUb1JlYWQoKSBjb25zdAoreworICAgIGlmICghbV9t
ZWRpYVNlbGVjdGlvbk9wdGlvbikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJu
IEFWQ0ZNZWRpYVNlbGVjdGlvbk9wdGlvbkhhc01lZGlhQ2hhcmFjdGVyaXN0aWMobWVkaWFTZWxl
Y3Rpb25PcHRpb24oKSwgQVZDRk1lZGlhQ2hhcmFjdGVyaXN0aWNFYXN5VG9SZWFkKTsKK30KKwor
QXRvbWljU3RyaW5nIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGOjpsYWJlbCgpIGNvbnN0Cit7
CisgICAgaWYgKCFtX21lZGlhU2VsZWN0aW9uT3B0aW9uKQorICAgICAgICByZXR1cm4gZW1wdHlB
dG9tOworCisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB0aXRsZTsKKworICAgIFJldGFpblB0
cjxDRkFycmF5UmVmPiBjb21tb25NZXRhRGF0YSA9IGFkb3B0Q0YoQVZDRk1lZGlhU2VsZWN0aW9u
T3B0aW9uQ29weUNvbW1vbk1ldGFkYXRhKG1lZGlhU2VsZWN0aW9uT3B0aW9uKCkpKTsKKyAgICBS
ZXRhaW5QdHI8Q0ZBcnJheVJlZj4gdGl0bGVzID0gYWRvcHRDRihBVkNGTWV0YWRhdGFJdGVtQ29w
eUl0ZW1zV2l0aEtleUFuZEtleVNwYWNlKGNvbW1vbk1ldGFEYXRhLmdldCgpLCBBVkNGTWV0YWRh
dGFDb21tb25LZXlUaXRsZSwgQVZDRk1ldGFkYXRhS2V5U3BhY2VDb21tb24pKTsKKyAgICBDRklu
ZGV4IHRpdGxlc0NvdW50ID0gQ0ZBcnJheUdldENvdW50KHRpdGxlcy5nZXQoKSk7CisgICAgaWYg
KCF0aXRsZXNDb3VudCkKKyAgICAgICAgcmV0dXJuIGVtcHR5QXRvbTsKKworICAgIC8vIElmIHBv
c3NpYmxlLCByZXR1cm4gYSB0aXRsZSBpbiBvbmUgb2YgdGhlIHVzZXIncyBwcmVmZXJyZWQgbGFu
Z3VhZ2VzLgorICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBwcmVmZXJyZWRMYW5ndWFnZXMgPSBD
RkxvY2FsZUNvcHlQcmVmZXJyZWRMYW5ndWFnZXMoKTsKKyAgICBSZXRhaW5QdHI8Q0ZBcnJheVJl
Zj4gdGl0bGVzRm9yUHJlZmVycmVkTGFuZ3VhZ2VzID0gQVZDRk1lZGlhU2VsZWN0aW9uQ29weU9w
dGlvbnNGcm9tQXJyYXlGaWx0ZXJlZEFuZFNvcnRlZEFjY29yZGluZ1RvUHJlZmVycmVkTGFuZ3Vh
Z2VzKHRpdGxlcy5nZXQoKSwgcHJlZmVycmVkTGFuZ3VhZ2VzLmdldCgpKTsKKyAgICBDRkluZGV4
IHByZWZlcnJlZFRpdGxlc0NvdW50ID0gQ0ZBcnJheUdldENvdW50KHRpdGxlc0ZvclByZWZlcnJl
ZExhbmd1YWdlcy5nZXQoKSk7CisgICAgaWYgKHByZWZlcnJlZFRpdGxlc0NvdW50KSB7CisgICAg
ICAgIEFWQ0ZNZXRhZGF0YUl0ZW1SZWYgdGl0bGVNZXRhZGF0YSA9IHN0YXRpY19jYXN0PEFWQ0ZN
ZXRhZGF0YUl0ZW1SZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgodGl0bGVzRm9yUHJlZmVycmVk
TGFuZ3VhZ2VzLmdldCgpLCAwKSk7CisgICAgICAgIHRpdGxlID0gYWRvcHRDRihBVkNGTWV0YWRh
dGFJdGVtQ29weVN0cmluZ1ZhbHVlKHRpdGxlTWV0YWRhdGEpKTsKKyAgICB9CisKKyAgICBpZiAo
IXRpdGxlKSB7CisgICAgICAgIEFWQ0ZNZXRhZGF0YUl0ZW1SZWYgdGl0bGVNZXRhZGF0YSA9IHN0
YXRpY19jYXN0PEFWQ0ZNZXRhZGF0YUl0ZW1SZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgodGl0
bGVzLmdldCgpLCAwKSk7CisgICAgICAgIHRpdGxlID0gYWRvcHRDRihBVkNGTWV0YWRhdGFJdGVt
Q29weVN0cmluZ1ZhbHVlKHRpdGxlTWV0YWRhdGEpKTsKKyAgICB9CisKKyAgICByZXR1cm4gdGl0
bGUgPyBBdG9taWNTdHJpbmcodGl0bGUuZ2V0KCkpIDogZW1wdHlBdG9tOworfQorCitBdG9taWNT
dHJpbmcgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0Y6Omxhbmd1YWdlKCkgY29uc3QKK3sKKyAg
ICBpZiAoIW1fbWVkaWFTZWxlY3Rpb25PcHRpb24pCisgICAgICAgIHJldHVybiBlbXB0eUF0b207
CisKKyAgICBSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+IGxvY2FsZSA9IGFkb3B0Q0YoQVZDRk1lZGlh
U2VsZWN0aW9uT3B0aW9uQ29weUxvY2FsZShtZWRpYVNlbGVjdGlvbk9wdGlvbigpKSk7CisgICAg
cmV0dXJuIENGTG9jYWxlR2V0SWRlbnRpZmllcihsb2NhbGUuZ2V0KCkpOworfQorCitib29sIElu
YmFuZFRleHRUcmFja1ByaXZhdGVBVkNGOjppc0RlZmF1bHQoKSBjb25zdAoreworICAgIHJldHVy
biBmYWxzZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0
VHJhY2tQcml2YXRlQVZDRi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRi5oCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL2NmL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGLmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0Zf
aAorI2RlZmluZSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRl9oCisKKyNpZiBQTEFURk9STShX
SU4pICYmIEVOQUJMRShWSURFTykgJiYgSEFWRShBVkZPVU5EQVRJT05fTUVESUFfU0VMRUNUSU9O
X0dST1VQKQorCisjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oIgorI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworI2luY2x1ZGUgPEFWRm91bmRhdGlvbkNGL0FWQ0ZQbGF5
ZXJJdGVtLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUFWQ0YgOiBwdWJsaWMgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRiB7CitwdWJsaWM6
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0Y+IGNyZWF0
ZShBVkZJbmJhbmRUcmFja1BhcmVudCogcGxheWVyLCAgQVZDRk1lZGlhU2VsZWN0aW9uT3B0aW9u
UmVmIHNlbGVjdGlvbikKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUFWQ0YocGxheWVyLCBzZWxlY3Rpb24pKTsKKyAgICB9CisKKyAgICB+
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0YoKSB7IH0KKworICAgIHZpcnR1YWwgSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZTo6S2luZCBraW5kKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBi
b29sIGlzQ2xvc2VkQ2FwdGlvbnMoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wg
aXNTREgoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgY29udGFpbnNPbmx5Rm9y
Y2VkU3VidGl0bGVzKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzTWFpblBy
b2dyYW1Db250ZW50KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzRWFzeVRv
UmVhZCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgQXRvbWljU3RyaW5nIGxhYmVsKCkg
Y29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBBdG9taWNTdHJpbmcgbGFuZ3VhZ2UoKSBjb25z
dCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNEZWZhdWx0KCkgY29uc3QgT1ZFUlJJREU7
CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdCgpIE9WRVJSSURFOworCisgICAgdmlydHVh
bCBib29sIGlzTGVnYWN5Q2xvc2VkQ2FwdGlvbnNUcmFjaygpIGNvbnN0IE9WRVJSSURFIHsgcmV0
dXJuIGZhbHNlOyB9CisKKyAgICBBVkNGTWVkaWFTZWxlY3Rpb25PcHRpb25SZWYgbWVkaWFTZWxl
Y3Rpb25PcHRpb24oKSBjb25zdCB7IHJldHVybiBtX21lZGlhU2VsZWN0aW9uT3B0aW9uLmdldCgp
OyB9CisKK3Byb3RlY3RlZDoKKyAgICBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRihBVkZJbmJh
bmRUcmFja1BhcmVudCosIEFWQ0ZNZWRpYVNlbGVjdGlvbk9wdGlvblJlZik7CisgICAgCisgICAg
UmV0YWluUHRyPEFWQ0ZNZWRpYVNlbGVjdGlvbk9wdGlvblJlZj4gbV9tZWRpYVNlbGVjdGlvbk9w
dGlvbjsKK307CisKK30KKworI2VuZGlmCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVn
YWN5QVZDRi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL2NmL0luYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGLmNwcAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZDRi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwxMjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNp
ZiBFTkFCTEUoVklERU8pICYmIFVTRShBVkZPVU5EQVRJT04pICYmICFIQVZFKEFWRk9VTkRBVElP
Tl9MRUdJQkxFX09VVFBVVF9TVVBQT1JUKSAmJiAhUExBVEZPUk0oSU9TKQorCisjaW5jbHVkZSAi
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0YuaCIKKworI2luY2x1ZGUgIkluYmFuZFRl
eHRUcmFja1ByaXZhdGVBVkYuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuaCIKKyNpbmNsdWRlICJTb2Z0TGlua2luZy5o
IgorCisjaW5jbHVkZSA8QVZGb3VuZGF0aW9uQ0YvQVZGb3VuZGF0aW9uQ0YuaD4KKworI2luY2x1
ZGUgPGQzZDkuaD4KKworLy8gVGhlIHNvZnRsaW5rIGhlYWRlciBmaWxlcyBtdXN0IGJlIGluY2x1
ZGVkIGFmdGVyIHRoZSBBVkNGIGFuZCBDb3JlTWVkaWEgaGVhZGVyIGZpbGVzLgorI2luY2x1ZGUg
IkFWRm91bmRhdGlvbkNGU29mdExpbmtpbmcuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZDRjo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxl
Z2FjeUFWQ0YoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YqIHBsYXllciwgQVZDRlBs
YXllckl0ZW1UcmFja1JlZiB0cmFjaykKKyAgICA6IEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkYo
cGxheWVyKQorICAgICwgbV9wbGF5ZXJJdGVtVHJhY2sodHJhY2spCit7Cit9CisKK3ZvaWQgSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0Y6OmRpc2Nvbm5lY3QoKQoreworICAgIG1fcGxh
eWVySXRlbVRyYWNrID0gMDsKKyAgICBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpkaXNjb25u
ZWN0KCk7Cit9CisKK0luYmFuZFRleHRUcmFja1ByaXZhdGU6OktpbmQgSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUxlZ2FjeUFWQ0Y6OmtpbmQoKSBjb25zdAoreworICAgIGlmICghbV9wbGF5ZXJJdGVt
VHJhY2spCisgICAgICAgIHJldHVybiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpOb25lOworCisg
ICAgcmV0dXJuIEluYmFuZFRleHRUcmFja1ByaXZhdGU6OkNhcHRpb25zOworfQorCitib29sIElu
YmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGOjppc0Nsb3NlZENhcHRpb25zKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9wbGF5ZXJJdGVtVHJhY2s7Cit9CisKK2Jvb2wgSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUxlZ2FjeUFWQ0Y6OmNvbnRhaW5zT25seUZvcmNlZFN1YnRpdGxlcygpIGNvbnN0
Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEluYmFuZFRleHRUcmFja1ByaXZhdGVM
ZWdhY3lBVkNGOjppc01haW5Qcm9ncmFtQ29udGVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
cGxheWVySXRlbVRyYWNrOworfQorCitib29sIEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lB
VkNGOjppc0Vhc3lUb1JlYWQoKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKworQXRv
bWljU3RyaW5nIEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGOjpsYWJlbCgpIGNvbnN0
Cit7CisgICAgaWYgKCFtX3BsYXllckl0ZW1UcmFjaykKKyAgICAgICAgcmV0dXJuIGVtcHR5QXRv
bTsKKworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdGl0bGU7CisKKyAgICBSZXRhaW5QdHI8
QVZDRkFzc2V0VHJhY2tSZWY+IGFzc2V0VHJhY2sgPSBhZG9wdENGKEFWQ0ZQbGF5ZXJJdGVtVHJh
Y2tDb3B5QXNzZXRUcmFjayhtX3BsYXllckl0ZW1UcmFjay5nZXQoKSkpOworICAgIFJldGFpblB0
cjxDRkFycmF5UmVmPiBjb21tb25NZXRhRGF0YSA9IGFkb3B0Q0YoQVZDRkFzc2V0VHJhY2tDb3B5
Q29tbW9uTWV0YWRhdGEoYXNzZXRUcmFjay5nZXQoKSkpOworICAgIFJldGFpblB0cjxDRkFycmF5
UmVmPiB0aXRsZXMgPSBhZG9wdENGKEFWQ0ZNZXRhZGF0YUl0ZW1Db3B5SXRlbXNXaXRoS2V5QW5k
S2V5U3BhY2UoY29tbW9uTWV0YURhdGEuZ2V0KCksIEFWQ0ZNZXRhZGF0YUNvbW1vbktleVRpdGxl
LCBBVkNGTWV0YWRhdGFLZXlTcGFjZUNvbW1vbikpOworICAgIENGSW5kZXggdGl0bGVzQ291bnQg
PSBDRkFycmF5R2V0Q291bnQodGl0bGVzLmdldCgpKTsKKyAgICBpZiAodGl0bGVzQ291bnQpIHsK
KyAgICAgICAgUmV0YWluUHRyPENGTG9jYWxlUmVmPiBjdXJyZW50TG9jYWxlID0gYWRvcHRDRihD
RkxvY2FsZUNvcHlDdXJyZW50KCkpOworICAgICAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gdGl0
bGVzRm9yUHJlZmVycmVkTGFuZ3VhZ2VzID0gYWRvcHRDRihBVkNGTWV0YWRhdGFJdGVtQ29weUl0
ZW1zV2l0aExvY2FsZSh0aXRsZXMuZ2V0KCksIGN1cnJlbnRMb2NhbGUuZ2V0KCkpKTsKKyAgICAg
ICAgQ0ZJbmRleCBwcmVmZXJyZWRUaXRsZXNDb3VudCA9IENGQXJyYXlHZXRDb3VudCh0aXRsZXNG
b3JQcmVmZXJyZWRMYW5ndWFnZXMuZ2V0KCkpOworICAgICAgICBpZiAocHJlZmVycmVkVGl0bGVz
Q291bnQpIHsKKyAgICAgICAgICAgIEFWQ0ZNZXRhZGF0YUl0ZW1SZWYgdGl0bGVNZXRhZGF0YSA9
IHN0YXRpY19jYXN0PEFWQ0ZNZXRhZGF0YUl0ZW1SZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgo
dGl0bGVzRm9yUHJlZmVycmVkTGFuZ3VhZ2VzLmdldCgpLCAwKSk7CisgICAgICAgICAgICB0aXRs
ZSA9IGFkb3B0Q0YoQVZDRk1ldGFkYXRhSXRlbUNvcHlTdHJpbmdWYWx1ZSh0aXRsZU1ldGFkYXRh
KSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXRpdGxlKSB7CisgICAgICAgICAgICBBVkNG
TWV0YWRhdGFJdGVtUmVmIHRpdGxlTWV0YWRhdGEgPSBzdGF0aWNfY2FzdDxBVkNGTWV0YWRhdGFJ
dGVtUmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KHRpdGxlcy5nZXQoKSwgMCkpOworICAgICAg
ICAgICAgdGl0bGUgPSBhZG9wdENGKEFWQ0ZNZXRhZGF0YUl0ZW1Db3B5U3RyaW5nVmFsdWUodGl0
bGVNZXRhZGF0YSkpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHRpdGxlID8gQXRv
bWljU3RyaW5nKHRpdGxlLmdldCgpKSA6IGVtcHR5QXRvbTsKK30KKworQXRvbWljU3RyaW5nIElu
YmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGOjpsYW5ndWFnZSgpIGNvbnN0Cit7CisgICAg
aWYgKCFtX3BsYXllckl0ZW1UcmFjaykKKyAgICAgICAgcmV0dXJuIGVtcHR5QXRvbTsKKworICAg
IFJldGFpblB0cjxBVkNGQXNzZXRUcmFja1JlZj4gYXNzZXRUcmFjayA9IGFkb3B0Q0YoQVZDRlBs
YXllckl0ZW1UcmFja0NvcHlBc3NldFRyYWNrKG1fcGxheWVySXRlbVRyYWNrLmdldCgpKSk7Cisg
ICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBsYW5ndWFnZUNvZGUgPSBhZG9wdENGKEFWQ0ZBc3Nl
dFRyYWNrQ29weUxhbmd1YWdlQ29kZShhc3NldFRyYWNrLmdldCgpKSk7CisgICAgUmV0YWluUHRy
PENGTG9jYWxlUmVmPiBsb2NhbGUgPSBhZG9wdENGKENGTG9jYWxlQ3JlYXRlKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIGxhbmd1YWdlQ29kZS5nZXQoKSkpOworICAgIHJldHVybiBDRkxvY2FsZUdldElk
ZW50aWZpZXIobG9jYWxlLmdldCgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZDRi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0
VHJhY2tQcml2YXRlTGVnYWN5QVZDRi5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0luYmFuZFRleHRUcmFja1ByaXZhdGVM
ZWdhY3lBVkNGLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
Zm5kZWYgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0ZfaAorI2RlZmluZSBJbmJhbmRU
ZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZDRl9oCisKKyNpZiBFTkFCTEUoVklERU8pICYmIFVTRShB
VkZPVU5EQVRJT04pICYmICFIQVZFKEFWRk9VTkRBVElPTl9MRUdJQkxFX09VVFBVVF9TVVBQT1JU
KSAmJiAhUExBVEZPUk0oSU9TKQorCisjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFW
Ri5oIgorI2luY2x1ZGUgPEFWRm91bmRhdGlvbkNGL0FWQ0ZQbGF5ZXJJdGVtVHJhY2suaD4KKyNp
bmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y7CisKK2NsYXNzIEluYmFuZFRleHRUcmFj
a1ByaXZhdGVMZWdhY3lBVkNGIDogcHVibGljIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkYgewor
cHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdh
Y3lBVkNGPiBjcmVhdGUoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YqIHBsYXllciwg
QVZDRlBsYXllckl0ZW1UcmFja1JlZiB0cmFjaykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0YocGxheWVyLCB0cmFjaykp
OworICAgIH0KKworICAgIH5JbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZDRigpIHsgfQor
CisgICAgdmlydHVhbCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpLaW5kIGtpbmQoKSBjb25zdCBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNDbG9zZWRDYXB0aW9ucygpIGNvbnN0IE9WRVJS
SURFOworICAgIHZpcnR1YWwgYm9vbCBjb250YWluc09ubHlGb3JjZWRTdWJ0aXRsZXMoKSBjb25z
dCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYWluUHJvZ3JhbUNvbnRlbnQoKSBjb25z
dCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNFYXN5VG9SZWFkKCkgY29uc3QgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCBBdG9taWNTdHJpbmcgbGFiZWwoKSBjb25zdCBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIEF0b21pY1N0cmluZyBsYW5ndWFnZSgpIGNvbnN0IE9WRVJSSURFOworCisgICAg
dmlydHVhbCB2b2lkIGRpc2Nvbm5lY3QoKSBPVkVSUklERTsKKworICAgIHZpcnR1YWwgYm9vbCBp
c0xlZ2FjeUNsb3NlZENhcHRpb25zVHJhY2soKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVl
OyB9CisKKyAgICBBVkNGUGxheWVySXRlbVRyYWNrUmVmIGF2UGxheWVySXRlbVRyYWNrKCkgY29u
c3QgeyByZXR1cm4gbV9wbGF5ZXJJdGVtVHJhY2suZ2V0KCk7IH0KKworcHJvdGVjdGVkOgorICAg
IEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbkNGKiwgQVZDRlBsYXllckl0ZW1UcmFja1JlZik7CisgICAgCisgICAgUmV0YWluUHRy
PEFWQ0ZQbGF5ZXJJdGVtVHJhY2tSZWY+IG1fcGxheWVySXRlbVRyYWNrOworfTsKKworfQorCisj
ZW5kaWYgLy8gRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKSAmJiAhSEFWRShBVkZP
VU5EQVRJT05fTEVHSUJMRV9PVVRQVVRfU1VQUE9SVCkgJiYgIVBMQVRGT1JNKElPUykKKworI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
Y2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAJKHJldmlzaW9uIDE1Mjc5MykKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25DRi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDcgKzI1
LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogCi0jaWYgUExBVEZPUk0oV0lOKSYmIEVOQUJM
RShWSURFTykgCisjaWYgUExBVEZPUk0oV0lOKSAmJiBFTkFCTEUoVklERU8pIAogCiAjaWYgVVNF
KEFWRk9VTkRBVElPTikKIApAQCAtMzYsMTIgKzM2LDE1IEBACiAjaW5jbHVkZSAiRmxvYXRDb252
ZXJzaW9uLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0LmgiCisjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0YuaCIKICNpbmNsdWRl
ICJLVVJMLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ0FMYXll
ci5oIgogI2luY2x1ZGUgIlNvZnRMaW5raW5nLmgiCiAjaW5jbHVkZSAiVGltZVJhbmdlcy5oIgog
CisjaW5jbHVkZSA8QVZGb3VuZGF0aW9uQ0YvQVZDRlBsYXllckl0ZW0uaD4KKyNpbmNsdWRlIDxB
VkZvdW5kYXRpb25DRi9BVkNGUGxheWVySXRlbUxlZ2libGVPdXRwdXQuaD4KICNpbmNsdWRlIDxB
VkZvdW5kYXRpb25DRi9BVkNGUGxheWVyTGF5ZXIuaD4KICNpbmNsdWRlIDxBVkZvdW5kYXRpb25D
Ri9BVkZvdW5kYXRpb25DRi5oPgogI2luY2x1ZGUgPENvcmVNZWRpYS9Db3JlTWVkaWEuaD4KQEAg
LTQ5LDYgKzUyLDcgQEAKICNpbmNsdWRlIDxkZWxheWltcC5oPgogI2luY2x1ZGUgPGRpc3BhdGNo
L2Rpc3BhdGNoLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCiAvLyBUaGUgc29mdGxp
bmsgaGVhZGVyIGZpbGVzIG11c3QgYmUgaW5jbHVkZWQgYWZ0ZXIgdGhlIEFWQ0YgYW5kIENvcmVN
ZWRpYSBoZWFkZXIgZmlsZXMuCkBAIC05NSw2ICs5OSwxMyBAQCBwdWJsaWM6CiAgICAgCiAgICAg
dm9pZCBzZWVrVG9UaW1lKGZsb2F0KTsKIAorICAgIHZvaWQgc2V0Q3VycmVudFRyYWNrKEluYmFu
ZFRleHRUcmFja1ByaXZhdGVBVkYqKTsKKyAgICBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGKiBj
dXJyZW50VHJhY2soKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRUcmFjazsgfQorCisjaWYgSEFW
RShBVkZPVU5EQVRJT05fTUVESUFfU0VMRUNUSU9OX0dST1VQKSAmJiBIQVZFKEFWRk9VTkRBVElP
Tl9MRUdJQkxFX09VVFBVVF9TVVBQT1JUKQorICAgIHN0YXRpYyB2b2lkIGxlZ2libGVPdXRwdXRD
YWxsYmFjayh2b2lkKiBjb250ZXh0LCBBVkNGUGxheWVySXRlbUxlZ2libGVPdXRwdXRSZWYsIENG
QXJyYXlSZWYgYXR0cmlidXRlZFN0cmluZywgQ0ZBcnJheVJlZiBuYXRpdmVTYW1wbGVCdWZmZXJz
LCBDTVRpbWUgaXRlbVRpbWUpOworICAgIHN0YXRpYyB2b2lkIHByb2Nlc3NDdWUodm9pZCogY29u
dGV4dCk7CisjZW5kaWYKICAgICBzdGF0aWMgdm9pZCBsb2FkTWV0YWRhdGFDb21wbGV0aW9uQ2Fs
bGJhY2soQVZDRkFzc2V0UmVmLCB2b2lkKik7CiAgICAgc3RhdGljIHZvaWQgbG9hZFBsYXlhYmxl
Q29tcGxldGlvbkNhbGxiYWNrKEFWQ0ZBc3NldFJlZiwgdm9pZCopOwogICAgIHN0YXRpYyB2b2lk
IHBlcmlvZGljVGltZU9ic2VydmVyQ2FsbGJhY2soQVZDRlBsYXllclJlZiwgQ01UaW1lLCB2b2lk
Kik7CkBAIC0xMDcsNiArMTE4LDEwIEBAIHB1YmxpYzoKICAgICBpbmxpbmUgQVZDRlBsYXllckl0
ZW1SZWYgYXZQbGF5ZXJJdGVtKCkgY29uc3QgeyByZXR1cm4gKEFWQ0ZQbGF5ZXJJdGVtUmVmKW1f
YXZQbGF5ZXJJdGVtLmdldCgpOyB9CiAgICAgaW5saW5lIEFWQ0ZQbGF5ZXJPYnNlcnZlclJlZiB0
aW1lT2JzZXJ2ZXIoKSBjb25zdCB7IHJldHVybiAoQVZDRlBsYXllck9ic2VydmVyUmVmKW1fdGlt
ZU9ic2VydmVyLmdldCgpOyB9CiAgICAgaW5saW5lIEFWQ0ZBc3NldEltYWdlR2VuZXJhdG9yUmVm
IGltYWdlR2VuZXJhdG9yKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZUdlbmVyYXRvci5nZXQoKTsg
fQorI2lmIEhBVkUoQVZGT1VOREFUSU9OX01FRElBX1NFTEVDVElPTl9HUk9VUCkgJiYgSEFWRShB
VkZPVU5EQVRJT05fTEVHSUJMRV9PVVRQVVRfU1VQUE9SVCkKKyAgICBpbmxpbmUgQVZDRlBsYXll
ckl0ZW1MZWdpYmxlT3V0cHV0UmVmIGxlZ2libGVPdXRwdXQoKSBjb25zdCB7IHJldHVybiBtX2xl
Z2libGVPdXRwdXQuZ2V0KCk7IH0KKyAgICBBVkNGTWVkaWFTZWxlY3Rpb25Hcm91cFJlZiBzYWZl
TWVkaWFTZWxlY3Rpb25Hcm91cEZvckxlZ2libGVNZWRpYSgpIGNvbnN0OworI2VuZGlmCiAgICAg
aW5saW5lIGRpc3BhdGNoX3F1ZXVlX3QgZGlzcGF0Y2hRdWV1ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
bm90aWZpY2F0aW9uUXVldWU7IH0KIAogcHJpdmF0ZToKQEAgLTEzMSw2ICsxNDYsMTAgQEAgcHJp
dmF0ZToKICAgICBSZXRhaW5QdHI8QVZDRlBsYXllckxheWVyUmVmPiBtX2F2Q0ZWaWRlb0xheWVy
OwogICAgIFJldGFpblB0cjxBVkNGUGxheWVyT2JzZXJ2ZXJSZWY+IG1fdGltZU9ic2VydmVyOwog
ICAgIFJldGFpblB0cjxBVkNGQXNzZXRJbWFnZUdlbmVyYXRvclJlZj4gbV9pbWFnZUdlbmVyYXRv
cjsKKyNpZiBIQVZFKEFWRk9VTkRBVElPTl9NRURJQV9TRUxFQ1RJT05fR1JPVVApICYmIEhBVkUo
QVZGT1VOREFUSU9OX0xFR0lCTEVfT1VUUFVUX1NVUFBPUlQpCisgICAgUmV0YWluUHRyPEFWQ0ZQ
bGF5ZXJJdGVtTGVnaWJsZU91dHB1dFJlZj4gbV9sZWdpYmxlT3V0cHV0OworICAgIFJldGFpblB0
cjxBVkNGTWVkaWFTZWxlY3Rpb25Hcm91cFJlZj4gbV9zZWxlY3Rpb25Hcm91cDsKKyNlbmRpZgog
ICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV9ub3RpZmljYXRpb25RdWV1ZTsKIAogICAgIG11dGFibGUg
UmV0YWluUHRyPENBQ0ZMYXllclJlZj4gbV9jYVZpZGVvTGF5ZXI7CkBAIC0xMzgsNiArMTU3LDgg
QEAgcHJpdmF0ZToKIAogICAgIE93blB0cjxMYXllckNsaWVudD4gbV9sYXllckNsaWVudDsKICAg
ICBDT01QdHI8SURpcmVjdDNERGV2aWNlOUV4PiBtX2QzZERldmljZTsKKworICAgIEluYmFuZFRl
eHRUcmFja1ByaXZhdGVBVkYqIG1fY3VycmVudFRyYWNrOwogfTsKIAogdWludHB0cl90IEFWRldy
YXBwZXI6OnNfbmV4dEFWRldyYXBwZXJPYmplY3RJRDsKQEAgLTE4Miw3ICsyMDMsOCBAQCBzdGF0
aWMgQ0ZBcnJheVJlZiBjcmVhdGVNZXRhZGF0YUtleU5hbWVzCiAgICAgICAgIEFWQ0ZBc3NldFBy
b3BlcnR5UHJlZmVycmVkVHJhbnNmb3JtLAogICAgICAgICBBVkNGQXNzZXRQcm9wZXJ0eVByZWZl
cnJlZFJhdGUsCiAgICAgICAgIEFWQ0ZBc3NldFByb3BlcnR5UGxheWFibGUsCi0gICAgICAgIEFW
Q0ZBc3NldFByb3BlcnR5VHJhY2tzIAorICAgICAgICBBVkNGQXNzZXRQcm9wZXJ0eVRyYWNrcywK
KyAgICAgICAgQVZDRkFzc2V0UHJvcGVydHlBdmFpbGFibGVNZWRpYUNoYXJhY3RlcmlzdGljc1dp
dGhNZWRpYVNlbGVjdGlvbk9wdGlvbnMKICAgICB9OwogICAgIAogICAgIHJldHVybiBDRkFycmF5
Q3JlYXRlKDAsIChjb25zdCB2b2lkKiopa2V5TmFtZXMsIHNpemVvZihrZXlOYW1lcykgLyBzaXpl
b2Yoa2V5TmFtZXNbMF0pLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKTsKQEAgLTI0Miw2ICsyNjQs
MTggQEAgaW5saW5lIEFWQ0ZBc3NldEltYWdlR2VuZXJhdG9yUmVmIGltYWdlRwogICAgIHJldHVy
biB3cmFwcGVyID8gd3JhcHBlci0+aW1hZ2VHZW5lcmF0b3IoKSA6IDA7IAogfQogCisjaWYgSEFW
RShBVkZPVU5EQVRJT05fTUVESUFfU0VMRUNUSU9OX0dST1VQKSAmJiBIQVZFKEFWRk9VTkRBVElP
Tl9MRUdJQkxFX09VVFBVVF9TVVBQT1JUKQoraW5saW5lIEFWQ0ZQbGF5ZXJJdGVtTGVnaWJsZU91
dHB1dFJlZiBhdkxlZ2libGVPdXRwdXQoQVZGV3JhcHBlciogd3JhcHBlcikKK3sKKyAgICByZXR1
cm4gd3JhcHBlciA/IHdyYXBwZXItPmxlZ2libGVPdXRwdXQoKSA6IDA7Cit9CisKK2lubGluZSBB
VkNGTWVkaWFTZWxlY3Rpb25Hcm91cFJlZiBzYWZlTWVkaWFTZWxlY3Rpb25Hcm91cEZvckxlZ2li
bGVNZWRpYShBVkZXcmFwcGVyKiB3cmFwcGVyKQoreworICAgIHJldHVybiB3cmFwcGVyID8gd3Jh
cHBlci0+c2FmZU1lZGlhU2VsZWN0aW9uR3JvdXBGb3JMZWdpYmxlTWVkaWEoKSA6IDA7Cit9Cisj
ZW5kaWYKKwogUGFzc093blB0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpjcmVhdGUoTWVkaWFQbGF5ZXIqIHBsYXllcikgCiB7
IAogICAgIHJldHVybiBhZG9wdFB0cihuZXcgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
Q0YocGxheWVyKSk7CkBAIC0yNzcsNiArMzExLDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25DRjo6YwogCiAgICAgdGVhckRvd25WaWRlb1JlbmRlcmluZygpOwogCisgICAg
Y2xlYXJUZXh0VHJhY2tzKCk7CisKICAgICBpZiAobV9hdmZXcmFwcGVyKSB7CiAgICAgICAgIC8v
IFRoZSBBVkNGIG9iamVjdHMgaGF2ZSB0byBiZSBkZXN0cm95ZWQgb24gdGhlIHNhbWUgZGlzcGF0
Y2ggcXVldWUgdXNlZCBmb3Igbm90aWZpY2F0aW9ucywgc28gc2NoZWR1bGUgYSBjYWxsIHRvIAog
ICAgICAgICAvLyBkaXNjb25uZWN0QW5kRGVsZXRlQVZGV3JhcHBlciBvbiB0aGF0IHF1ZXVlLiAK
QEAgLTMzNSw2ICszNzEsMzEgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25D
Rjo6aAogICAgIHJldHVybiAobV92aWRlb0ZyYW1lSGFzRHJhd24gfHwgKHZpZGVvTGF5ZXIobV9h
dmZXcmFwcGVyKSAmJiBBVkNGUGxheWVyTGF5ZXJJc1JlYWR5Rm9yRGlzcGxheSh2aWRlb0xheWVy
KG1fYXZmV3JhcHBlcikpKSk7CiB9CiAKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uQ0Y6OnNldEN1cnJlbnRUcmFjayhJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGKiB0cmFjaykK
K3sKKyAgICBpZiAobV9hdmZXcmFwcGVyKQorICAgICAgICBtX2F2ZldyYXBwZXItPnNldEN1cnJl
bnRUcmFjayh0cmFjayk7Cit9CisKK0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYqIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpjdXJyZW50VHJhY2soKSBjb25zdAoreworICAgIGlm
IChtX2F2ZldyYXBwZXIpCisgICAgICAgIHJldHVybiBtX2F2ZldyYXBwZXItPmN1cnJlbnRUcmFj
aygpOworCisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uQ0Y6OmNyZWF0ZUFWQXNzZXRGb3JVUkwoY29uc3QgU3RyaW5nJiB1cmwpCit7CisgICAg
QVNTRVJUKCFtX2F2ZldyYXBwZXIpOworCisgICAgc2V0RGVsYXlDYWxsYmFja3ModHJ1ZSk7CisK
KyAgICBtX2F2ZldyYXBwZXIgPSBuZXcgQVZGV3JhcHBlcih0aGlzKTsKKyAgICBtX2F2ZldyYXBw
ZXItPmNyZWF0ZUFzc2V0Rm9yVVJMKHVybCk7CisgICAgc2V0RGVsYXlDYWxsYmFja3MoZmFsc2Up
OworfQorCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpjcmVhdGVBVlBs
YXllcigpCiB7CiAgICAgQVNTRVJUKG1fYXZmV3JhcHBlcik7CkBAIC0zNTAsMTcgKzQxMSw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OmMKICAgICAKICAgICBzZXRE
ZWxheUNhbGxiYWNrcyh0cnVlKTsKICAgICBtX2F2ZldyYXBwZXItPmNyZWF0ZVBsYXllckl0ZW0o
KTsKLSAgICBzZXREZWxheUNhbGxiYWNrcyhmYWxzZSk7Ci19CiAKLXZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uQ0Y6OmNyZWF0ZUFWQXNzZXRGb3JVUkwoY29uc3QgU3RyaW5nJiB1
cmwpCi17Ci0gICAgQVNTRVJUKCFtX2F2ZldyYXBwZXIpOwotCi0gICAgc2V0RGVsYXlDYWxsYmFj
a3ModHJ1ZSk7Ci0KLSAgICBtX2F2ZldyYXBwZXIgPSBuZXcgQVZGV3JhcHBlcih0aGlzKTsKLSAg
ICBtX2F2ZldyYXBwZXItPmNyZWF0ZUFzc2V0Rm9yVVJMKHVybCk7CiAgICAgc2V0RGVsYXlDYWxs
YmFja3MoZmFsc2UpOwogfQogCkBAIC00NDYsMzQgKzQ5NywyNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpwCiAgICAgc2V0RGVsYXlDYWxsYmFja3MoZmFsc2UpOwog
fQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjp1cGRhdGVSYXRlKCkK
LXsKLSAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6dXBk
YXRlUmF0ZSglcCkiLCB0aGlzKTsKLSAgICBpZiAoIW1ldGFEYXRhQXZhaWxhYmxlKCkgfHwgIWF2
UGxheWVyKG1fYXZmV3JhcHBlcikpCi0gICAgICAgIHJldHVybjsKLQotICAgIHNldERlbGF5Q2Fs
bGJhY2tzKHRydWUpOwotICAgIEFWQ0ZQbGF5ZXJTZXRSYXRlKGF2UGxheWVyKG1fYXZmV3JhcHBl
ciksIHJlcXVlc3RlZFJhdGUoKSk7Ci0gICAgc2V0RGVsYXlDYWxsYmFja3MoZmFsc2UpOwotfQot
CiBmbG9hdCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6cGxhdGZvcm1EdXJhdGlv
bigpIGNvbnN0CiB7CiAgICAgaWYgKCFtZXRhRGF0YUF2YWlsYWJsZSgpIHx8ICFhdkFzc2V0KG1f
YXZmV3JhcHBlcikpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgZmxvYXQgZHVyYXRpb247Ci0g
ICAgQ01UaW1lIGNtRHVyYXRpb24gPSBBVkNGQXNzZXRHZXREdXJhdGlvbihhdkFzc2V0KG1fYXZm
V3JhcHBlcikpOworICAgIENNVGltZSBjbUR1cmF0aW9uOworCisgICAgLy8gQ2hlY2sgdGhlIEFW
SXRlbSBpZiB3ZSBoYXZlIG9uZSBhbmQgaXQgaGFzIGxvYWRlZCBkdXJhdGlvbiwgc29tZSBhc3Nl
dHMgbmV2ZXIgcmVwb3J0IGR1cmF0aW9uLgorICAgIGlmIChhdlBsYXllckl0ZW0obV9hdmZXcmFw
cGVyKSAmJiBwbGF5ZXJJdGVtU3RhdHVzKCkgPj0gTWVkaWFQbGF5ZXJBVlBsYXllckl0ZW1TdGF0
dXNSZWFkeVRvUGxheSkKKyAgICAgICAgY21EdXJhdGlvbiA9IEFWQ0ZQbGF5ZXJJdGVtR2V0RHVy
YXRpb24oYXZQbGF5ZXJJdGVtKG1fYXZmV3JhcHBlcikpOworICAgIGVsc2UKKyAgICAgICAgY21E
dXJhdGlvbiA9IEFWQ0ZBc3NldEdldER1cmF0aW9uKGF2QXNzZXQobV9hdmZXcmFwcGVyKSk7CisK
ICAgICBpZiAoQ01USU1FX0lTX05VTUVSSUMoY21EdXJhdGlvbikpCi0gICAgICAgIGR1cmF0aW9u
ID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdChDTVRpbWVHZXRTZWNvbmRzKGNtRHVyYXRpb24pKTsK
LSAgICBlbHNlIGlmIChDTVRJTUVfSVNfSU5ERUZJTklURShjbUR1cmF0aW9uKSkKLSAgICAgICAg
ZHVyYXRpb24gPSBudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCk7Ci0gICAgZWxzZSB7
Ci0gICAgICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRk1hYzo6ZHVyYXRpb24o
JXApIC0gaW52YWxpZCBkdXJhdGlvbiwgcmV0dXJuaW5nIDAiLCB0aGlzKTsKLSAgICAgICAgcmV0
dXJuIDA7Ci0gICAgfQorICAgICAgICByZXR1cm4gbmFycm93UHJlY2lzaW9uVG9GbG9hdChDTVRp
bWVHZXRTZWNvbmRzKGNtRHVyYXRpb24pKTsKKworICAgIGlmIChDTVRJTUVfSVNfSU5ERUZJTklU
RShjbUR1cmF0aW9uKSkKKyAgICAgICAgcmV0dXJuIG51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5m
aW5pdHkoKTsKIAotICAgIHJldHVybiBkdXJhdGlvbjsKKyAgICBMT0coTWVkaWEsICJNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6cGxhdGZvcm1EdXJhdGlvbiglcCkgLSBpbnZhbGlk
IGR1cmF0aW9uLCByZXR1cm5pbmcgJS4wZiIsIHRoaXMsIHN0YXRpY19jYXN0PGZsb2F0PihNZWRp
YVBsYXllcjo6aW52YWxpZFRpbWUoKSkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4o
TWVkaWFQbGF5ZXI6OmludmFsaWRUaW1lKCkpOwogfQogCiBmbG9hdCBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25DRjo6Y3VycmVudFRpbWUoKSBjb25zdApAQCAtNDgzLDcgKzUyNyw3IEBA
IGZsb2F0IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjoKIAogICAgIENNVGltZSBp
dGVtVGltZSA9IEFWQ0ZQbGF5ZXJJdGVtR2V0Q3VycmVudFRpbWUoYXZQbGF5ZXJJdGVtKG1fYXZm
V3JhcHBlcikpOwogICAgIGlmIChDTVRJTUVfSVNfTlVNRVJJQyhpdGVtVGltZSkpCi0gICAgICAg
IHJldHVybiBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KENNVGltZUdldFNlY29uZHMoaXRlbVRpbWUp
KTsKKyAgICAgICAgcmV0dXJuIG1heChuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KENNVGltZUdldFNl
Y29uZHMoaXRlbVRpbWUpKSwgMC4wZik7CiAKICAgICByZXR1cm4gMDsKIH0KQEAgLTUxNiw2ICs1
NjAsMTcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6cwogICAgIEFW
Q0ZQbGF5ZXJTZXRDbG9zZWRDYXB0aW9uRGlzcGxheUVuYWJsZWQoYXZQbGF5ZXIobV9hdmZXcmFw
cGVyKSwgY2xvc2VkQ2FwdGlvbnNWaXNpYmxlKTsKIH0KIAordm9pZCBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25DRjo6dXBkYXRlUmF0ZSgpCit7CisgICAgTE9HKE1lZGlhLCAiTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnVwZGF0ZVJhdGUoJXApIiwgdGhpcyk7CisgICAg
aWYgKCFtZXRhRGF0YUF2YWlsYWJsZSgpIHx8ICFhdlBsYXllcihtX2F2ZldyYXBwZXIpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBzZXREZWxheUNhbGxiYWNrcyh0cnVlKTsKKyAgICBBVkNGUGxh
eWVyU2V0UmF0ZShhdlBsYXllcihtX2F2ZldyYXBwZXIpLCByZXF1ZXN0ZWRSYXRlKCkpOworICAg
IHNldERlbGF5Q2FsbGJhY2tzKGZhbHNlKTsKK30KKwogZmxvYXQgTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uQ0Y6OnJhdGUoKSBjb25zdAogewogICAgIGlmICghbWV0YURhdGFBdmFpbGFi
bGUoKSB8fCAhYXZQbGF5ZXIobV9hdmZXcmFwcGVyKSkKQEAgLTY3MSw3ICs3MjYsNyBAQCBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OkFzc2V0U3RhCiAgICAgZm9yIChDRkluZGV4IGkg
PSAwOyBpIDwga2V5Q291bnQ7IGkrKykgewogICAgICAgICBDRlN0cmluZ1JlZiBrZXlOYW1lID0g
c3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoa2V5cywgaSkp
OwogICAgICAgICBBVkNGUHJvcGVydHlWYWx1ZVN0YXR1cyBrZXlTdGF0dXMgPSBBVkNGQXNzZXRH
ZXRTdGF0dXNPZlZhbHVlRm9yUHJvcGVydHkoYXZBc3NldChtX2F2ZldyYXBwZXIpLCBrZXlOYW1l
LCAwKTsKLSAgICAgICAgCisKICAgICAgICAgaWYgKGtleVN0YXR1cyA8IEFWQ0ZQcm9wZXJ0eVZh
bHVlU3RhdHVzTG9hZGVkKQogICAgICAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyQVZBc3NldFN0
YXR1c0xvYWRpbmc7CiAgICAgICAgIGlmIChrZXlTdGF0dXMgPT0gQVZDRlByb3BlcnR5VmFsdWVT
dGF0dXNGYWlsZWQpCkBAIC02ODgsNyArNzQzLDcgQEAgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uOjpBc3NldFN0YQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNG
OjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IEludFJlY3QmIHJlY3QpCiB7Ci0gICAgaWYgKGNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQo
KSkKKyAgICBpZiAoIW1ldGFEYXRhQXZhaWxhYmxlKCkgfHwgY29udGV4dC0+cGFpbnRpbmdEaXNh
YmxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoY3VycmVudFJlbmRlcmluZ01vZGUo
KSA9PSBNZWRpYVJlbmRlcmluZ1RvTGF5ZXIgJiYgIWltYWdlR2VuZXJhdG9yKG1fYXZmV3JhcHBl
cikpIHsKQEAgLTcwMiw3ICs3NTcsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbkNGOjpwCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnBhaW50
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKLSAgICBp
ZiAoY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpIHx8ICFpbWFnZUdlbmVyYXRvcihtX2F2Zldy
YXBwZXIpKQorICAgIGlmICghbWV0YURhdGFBdmFpbGFibGUoKSB8fCBjb250ZXh0LT5wYWludGlu
Z0Rpc2FibGVkKCkgfHwgIWltYWdlR2VuZXJhdG9yKG1fYXZmV3JhcHBlcikpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNG
OjpwYWludCglcCkiLCB0aGlzKTsKQEAgLTczMiw3ICs3ODcsNyBAQCBzdGF0aWMgSGFzaFNldDxT
dHJpbmc+IG1pbWVUeXBlQ2FjaGUoKQogICAgIGlmICh0eXBlTGlzdEluaXRpYWxpemVkKQogICAg
ICAgICByZXR1cm4gY2FjaGU7CiAgICAgdHlwZUxpc3RJbml0aWFsaXplZCA9IHRydWU7Ci0gICAg
CisKICAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gc3VwcG9ydGVkVHlwZXMgPSBhZG9wdENGKEFW
Q0ZVUkxBc3NldENvcHlBdWRpb3Zpc3VhbE1JTUVUeXBlcygpKTsKICAgICAKICAgICBBU1NFUlQo
c3VwcG9ydGVkVHlwZXMpOwpAQCAtNzc4LDkgKzgzMywxNSBAQCBmbG9hdCBNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25DRjo6CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uQ0Y6OnRyYWNrc0NoYW5nZWQoKQogeworICAgIFN0cmluZyBwcmltYXJ5QXVkaW9UcmFja0xh
bmd1YWdlID0gbV9sYW5ndWFnZU9mUHJpbWFyeUF1ZGlvVHJhY2s7CisgICAgbV9sYW5ndWFnZU9m
UHJpbWFyeUF1ZGlvVHJhY2sgPSBTdHJpbmcoKTsKKwogICAgIGlmICghYXZBc3NldChtX2F2Zldy
YXBwZXIpKQogICAgICAgICByZXR1cm47Ci0gICAgCisKKyAgICBib29sIGhhdmVDQ1RyYWNrID0g
ZmFsc2U7CisgICAgYm9vbCBoYXNDYXB0aW9ucyA9IGZhbHNlOworCiAgICAgLy8gVGhpcyBpcyBj
YWxsZWQgd2hlbmV2ZXIgdGhlIHRyYWNrcyBjb2xsZWN0aW9uIGNoYW5nZXMgc28gY2FjaGUgaGFz
VmlkZW8gYW5kIGhhc0F1ZGlvIHNpbmNlIHdlIGFyZQogICAgIC8vIGFza2VkIGFib3V0IHRob3Nl
IGZhaXJseSBmcmVxdWVudGx5LgogICAgIGlmICghYXZQbGF5ZXJJdGVtKG1fYXZmV3JhcHBlcikp
IHsKQEAgLTc5MiwxMiArODUzLDEzIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uQ0Y6OnQKICAgICAgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGF1ZGlvVHJhY2tzID0gYWRv
cHRDRihBVkNGQXNzZXRDb3B5VHJhY2tzV2l0aE1lZGlhQ2hhcmFjdGVyaXN0aWMoYXZBc3NldCht
X2F2ZldyYXBwZXIpLCBBVkNGTWVkaWFDaGFyYWN0ZXJpc3RpY0F1ZGlibGUpKTsKICAgICAgICAg
c2V0SGFzQXVkaW8oQ0ZBcnJheUdldENvdW50KGF1ZGlvVHJhY2tzLmdldCgpKSk7CiAKKyNpZiAh
SEFWRShBVkZPVU5EQVRJT05fTUVESUFfU0VMRUNUSU9OX0dST1VQKQogICAgICAgICBSZXRhaW5Q
dHI8Q0ZBcnJheVJlZj4gY2FwdGlvblRyYWNrcyA9IGFkb3B0Q0YoQVZDRkFzc2V0Q29weVRyYWNr
c1dpdGhNZWRpYVR5cGUoYXZBc3NldChtX2F2ZldyYXBwZXIpLCBBVkNGTWVkaWFUeXBlQ2xvc2Vk
Q2FwdGlvbikpOwotICAgICAgICBzZXRIYXNBdWRpbyhDRkFycmF5R2V0Q291bnQoY2FwdGlvblRy
YWNrcy5nZXQoKSkpOworICAgICAgICBoYXNDYXB0aW9ucyA9IENGQXJyYXlHZXRDb3VudChjYXB0
aW9uVHJhY2tzLmdldCgpKTsKKyNlbmRpZgogICAgIH0gZWxzZSB7CiAgICAgICAgIGJvb2wgaGFz
VmlkZW8gPSBmYWxzZTsKICAgICAgICAgYm9vbCBoYXNBdWRpbyA9IGZhbHNlOwotICAgICAgICBi
b29sIGhhc0NhcHRpb25zID0gZmFsc2U7CiAKICAgICAgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+
IHRyYWNrcyA9IGFkb3B0Q0YoQVZDRlBsYXllckl0ZW1Db3B5VHJhY2tzKGF2UGxheWVySXRlbSht
X2F2ZldyYXBwZXIpKSk7CiAKQEAgLTgxNSwyMCArODc3LDQzIEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnQKICAgICAgICAgICAgICAgICAgICAgaGFzVmlkZW8gPSB0
cnVlOwogICAgICAgICAgICAgICAgIGVsc2UgaWYgKENGU3RyaW5nQ29tcGFyZShtZWRpYVR5cGUs
IEFWQ0ZNZWRpYVR5cGVBdWRpbywga0NGQ29tcGFyZUNhc2VJbnNlbnNpdGl2ZSkgPT0ga0NGQ29t
cGFyZUVxdWFsVG8pCiAgICAgICAgICAgICAgICAgICAgIGhhc0F1ZGlvID0gdHJ1ZTsKLSAgICAg
ICAgICAgICAgICBlbHNlIGlmIChDRlN0cmluZ0NvbXBhcmUobWVkaWFUeXBlLCBBVkNGTWVkaWFU
eXBlQ2xvc2VkQ2FwdGlvbiwga0NGQ29tcGFyZUNhc2VJbnNlbnNpdGl2ZSkgPT0ga0NGQ29tcGFy
ZUVxdWFsVG8pCisgICAgICAgICAgICAgICAgZWxzZSBpZiAoQ0ZTdHJpbmdDb21wYXJlKG1lZGlh
VHlwZSwgQVZDRk1lZGlhVHlwZUNsb3NlZENhcHRpb24sIGtDRkNvbXBhcmVDYXNlSW5zZW5zaXRp
dmUpID09IGtDRkNvbXBhcmVFcXVhbFRvKSB7CisjaWYgIUhBVkUoQVZGT1VOREFUSU9OX01FRElB
X1NFTEVDVElPTl9HUk9VUCkKICAgICAgICAgICAgICAgICAgICAgaGFzQ2FwdGlvbnMgPSB0cnVl
OworI2VuZGlmCisgICAgICAgICAgICAgICAgICAgIGhhdmVDQ1RyYWNrID0gdHJ1ZTsKKyAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICBzZXRIYXNW
aWRlbyhoYXNWaWRlbyk7CiAgICAgICAgIHNldEhhc0F1ZGlvKGhhc0F1ZGlvKTsKLSAgICAgICAg
c2V0SGFzQ2xvc2VkQ2FwdGlvbnMoaGFzQ2FwdGlvbnMpOwogICAgIH0KIAorI2lmIEhBVkUoQVZG
T1VOREFUSU9OX01FRElBX1NFTEVDVElPTl9HUk9VUCkKKyAgICBBVkNGTWVkaWFTZWxlY3Rpb25H
cm91cFJlZiBsZWdpYmxlR3JvdXAgPSBzYWZlTWVkaWFTZWxlY3Rpb25Hcm91cEZvckxlZ2libGVN
ZWRpYShtX2F2ZldyYXBwZXIpOworICAgIGlmIChsZWdpYmxlR3JvdXApIHsKKyAgICAgICAgUmV0
YWluUHRyPENGQXJyYXlSZWY+IHBsYXlhYmxlT3B0aW9ucyA9IGFkb3B0Q0YoQVZDRk1lZGlhU2Vs
ZWN0aW9uQ29weVBsYXlhYmxlT3B0aW9uc0Zyb21BcnJheShBVkNGTWVkaWFTZWxlY3Rpb25Hcm91
cEdldE9wdGlvbnMobGVnaWJsZUdyb3VwKSkpOworICAgICAgICBoYXNDYXB0aW9ucyA9IENGQXJy
YXlHZXRDb3VudChwbGF5YWJsZU9wdGlvbnMuZ2V0KCkpOworICAgICAgICBpZiAoaGFzQ2FwdGlv
bnMpCisgICAgICAgICAgICBwcm9jZXNzTWVkaWFTZWxlY3Rpb25PcHRpb25zKCk7CisgICAgfQor
I2VuZGlmCisKKyNpZiAhSEFWRShBVkZPVU5EQVRJT05fTEVHSUJMRV9PVVRQVVRfU1VQUE9SVCkK
KyAgICBpZiAoaGF2ZUNDVHJhY2spCisgICAgICAgIHByb2Nlc3NMZWdhY3lDbG9zZWRDYXB0aW9u
c1RyYWNrcygpOworI2VuZGlmCisKKyAgICBzZXRIYXNDbG9zZWRDYXB0aW9ucyhoYXNDYXB0aW9u
cyk7CisKICAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjp0
cmFja3NDaGFuZ2VkKCVwKSAtIGhhc1ZpZGVvID0gJXMsIGhhc0F1ZGlvID0gJXMsIGhhc0NhcHRp
b25zID0gJXMiLCAKICAgICAgICAgdGhpcywgYm9vbFN0cmluZyhoYXNWaWRlbygpKSwgYm9vbFN0
cmluZyhoYXNBdWRpbygpKSwgYm9vbFN0cmluZyhoYXNDbG9zZWRDYXB0aW9ucygpKSk7CiAKICAg
ICBzaXplQ2hhbmdlZCgpOworCisgICAgaWYgKCFwcmltYXJ5QXVkaW9UcmFja0xhbmd1YWdlLmlz
TnVsbCgpICYmIHByaW1hcnlBdWRpb1RyYWNrTGFuZ3VhZ2UgIT0gbGFuZ3VhZ2VPZlByaW1hcnlB
dWRpb1RyYWNrKCkpCisgICAgICAgIHBsYXllcigpLT5jaGFyYWN0ZXJpc3RpY0NoYW5nZWQoKTsK
IH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6c2l6ZUNoYW5nZWQo
KQpAQCAtODYxLDYgKzk0NiwyMDEgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25DRjo6cwogICAgIHNldE5hdHVyYWxTaXplKEludFNpemUobmF0dXJhbFNpemUpKTsKIH0KIAor
dm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6Y2xlYXJUZXh0VHJhY2tzKCkK
K3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV90ZXh0VHJhY2tzLnNpemUoKTsgKytp
KSB7CisgICAgICAgIFJlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGPiB0cmFjayA9IG1f
dGV4dFRyYWNrc1tpXTsKKyAgICAgICAgcGxheWVyKCktPnJlbW92ZVRleHRUcmFjayh0cmFjayk7
CisgICAgICAgIHRyYWNrLT5kaXNjb25uZWN0KCk7CisgICAgfQorICAgIG1fdGV4dFRyYWNrcy5j
bGVhcigpOworfQorCisjaWYgIUhBVkUoQVZGT1VOREFUSU9OX0xFR0lCTEVfT1VUUFVUX1NVUFBP
UlQpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpwcm9jZXNzTGVnYWN5
Q2xvc2VkQ2FwdGlvbnNUcmFja3MoKQoreworICAgIEFWQ0ZQbGF5ZXJJdGVtU2VsZWN0TWVkaWFP
cHRpb25Jbk1lZGlhU2VsZWN0aW9uR3JvdXAoYXZQbGF5ZXJJdGVtKG1fYXZmV3JhcHBlciksIDAs
IHNhZmVNZWRpYVNlbGVjdGlvbkdyb3VwRm9yTGVnaWJsZU1lZGlhKG1fYXZmV3JhcHBlcikpOwor
CisgICAgVmVjdG9yPFJlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGPiA+IHJlbW92ZWRU
ZXh0VHJhY2tzID0gbV90ZXh0VHJhY2tzOworICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiB0cmFj
a3MgPSBhZG9wdENGKEFWQ0ZQbGF5ZXJJdGVtQ29weVRyYWNrcyhhdlBsYXllckl0ZW0obV9hdmZX
cmFwcGVyKSkpOworICAgIENGSW5kZXggdHJhY2tDb3VudCA9IENGQXJyYXlHZXRDb3VudCh0cmFj
a3MuZ2V0KCkpOworICAgIGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8IHRyYWNrQ291bnQ7ICsraSkg
eworICAgICAgICBBVkNGUGxheWVySXRlbVRyYWNrUmVmIHBsYXllckl0ZW1UcmFjayA9IChBVkNG
UGxheWVySXRlbVRyYWNrUmVmKShDRkFycmF5R2V0VmFsdWVBdEluZGV4KHRyYWNrcy5nZXQoKSwg
aSkpOworCisgICAgICAgIFJldGFpblB0cjxBVkNGQXNzZXRUcmFja1JlZj4gYXNzZXRUcmFjayA9
IGFkb3B0Q0YoQVZDRlBsYXllckl0ZW1UcmFja0NvcHlBc3NldFRyYWNrKHBsYXllckl0ZW1UcmFj
aykpOworICAgICAgICBDRlN0cmluZ1JlZiBtZWRpYVR5cGUgPSBBVkNGQXNzZXRUcmFja0dldE1l
ZGlhVHlwZShhc3NldFRyYWNrLmdldCgpKTsKKyAgICAgICAgaWYgKCFtZWRpYVR5cGUpCisgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgaWYgKENGU3RyaW5n
Q29tcGFyZShtZWRpYVR5cGUsIEFWQ0ZNZWRpYVR5cGVDbG9zZWRDYXB0aW9uLCBrQ0ZDb21wYXJl
Q2FzZUluc2Vuc2l0aXZlKSAhPSBrQ0ZDb21wYXJlRXF1YWxUbykKKyAgICAgICAgICAgIGNvbnRp
bnVlOworCisgICAgICAgIGJvb2wgbmV3Q0NUcmFjayA9IHRydWU7CisgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IHJlbW92ZWRUZXh0VHJhY2tzLnNpemUoKTsgaSA+IDA7IC0taSkgeworICAgICAg
ICAgICAgaWYgKCFyZW1vdmVkVGV4dFRyYWNrc1tpIC0gMV0tPmlzTGVnYWN5Q2xvc2VkQ2FwdGlv
bnNUcmFjaygpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBSZWZQ
dHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0Y+IHRyYWNrID0gc3RhdGljX2Nhc3Q8
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0YqPihtX3RleHRUcmFja3NbaSAtIDFdLmdl
dCgpKTsKKyAgICAgICAgICAgIGlmICh0cmFjay0+YXZQbGF5ZXJJdGVtVHJhY2soKSA9PSBwbGF5
ZXJJdGVtVHJhY2spIHsKKyAgICAgICAgICAgICAgICByZW1vdmVkVGV4dFRyYWNrcy5yZW1vdmUo
aSAtIDEpOworICAgICAgICAgICAgICAgIG5ld0NDVHJhY2sgPSBmYWxzZTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmICghbmV3
Q0NUcmFjaykKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAKKyAgICAgICAgbV90ZXh0
VHJhY2tzLmFwcGVuZChJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZDRjo6Y3JlYXRlKHRo
aXMsIHBsYXllckl0ZW1UcmFjaykpOworICAgIH0KKworICAgIHByb2Nlc3NOZXdBbmRSZW1vdmVk
VGV4dFRyYWNrcyhyZW1vdmVkVGV4dFRyYWNrcyk7Cit9CisjZW5kaWYKKwordm9pZCBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6cHJvY2Vzc05ld0FuZFJlbW92ZWRUZXh0VHJhY2tz
KGNvbnN0IFZlY3RvcjxSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRj4gPiYgcmVtb3Zl
ZFRleHRUcmFja3MpCit7CisgICAgLy8gRklYTUU6IExpZnQgdG8gcGFyZW50IGNsYXNzIChodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE4ODAxKQorICAgIGlmIChyZW1v
dmVkVGV4dFRyYWNrcy5zaXplKCkpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG1fdGV4dFRyYWNrcy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgaWYgKCFyZW1vdmVkVGV4
dFRyYWNrcy5jb250YWlucyhtX3RleHRUcmFja3NbaV0pKQorICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICAgICAgCisgICAgICAgICAgICBwbGF5ZXIoKS0+cmVtb3ZlVGV4dFRyYWNr
KHJlbW92ZWRUZXh0VHJhY2tzW2ldLmdldCgpKTsKKyAgICAgICAgICAgIG1fdGV4dFRyYWNrcy5y
ZW1vdmUoaSk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1fdGV4dFRyYWNrcy5zaXplKCk7ICsraSkgeworICAgICAgICBSZWZQdHI8SW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUFWRj4gdHJhY2sgPSBtX3RleHRUcmFja3NbaV07CisgICAgICAgIAor
ICAgICAgICB0cmFjay0+c2V0VGV4dFRyYWNrSW5kZXgoaSk7CisgICAgICAgIGlmICh0cmFjay0+
aGFzQmVlblJlcG9ydGVkKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgCisgICAg
ICAgIHRyYWNrLT5zZXRIYXNCZWVuUmVwb3J0ZWQodHJ1ZSk7CisgICAgICAgIHBsYXllcigpLT5h
ZGRUZXh0VHJhY2sodHJhY2suZ2V0KCkpOworICAgIH0KKyAgICBMT0coTWVkaWEsICJNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6cHJvY2Vzc05ld0FuZFJlbW92ZWRUZXh0VHJhY2tz
KCVwKSAtIGZvdW5kICVpIHRleHQgdHJhY2tzIiwgdGhpcywgbV90ZXh0VHJhY2tzLnNpemUoKSk7
Cit9CisKKyNpZiBIQVZFKEFWRk9VTkRBVElPTl9NRURJQV9TRUxFQ1RJT05fR1JPVVApCit2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpwcm9jZXNzTWVkaWFTZWxlY3Rpb25P
cHRpb25zKCkKK3sKKyAgICBBVkNGTWVkaWFTZWxlY3Rpb25Hcm91cFJlZiBsZWdpYmxlR3JvdXAg
PSBzYWZlTWVkaWFTZWxlY3Rpb25Hcm91cEZvckxlZ2libGVNZWRpYShtX2F2ZldyYXBwZXIpOwor
ICAgIGlmICghbGVnaWJsZUdyb3VwKSB7CisgICAgICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpwcm9jZXNzTWVkaWFTZWxlY3Rpb25PcHRpb25zKCVwKSAt
IG5pbCBtZWRpYVNlbGVjdGlvbkdyb3VwIiwgdGhpcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICAvLyBXZSBlbmFibGVkIGF1dG9tYXRpYyBtZWRpYSBzZWxlY3Rpb24gYmVjYXVzZSB3
ZSB3YW50IGFsdGVybmF0ZSBhdWRpbyB0cmFja3MgdG8gYmUgZW5hYmxlZC9kaXNhYmxlZCBhdXRv
bWF0aWNhbGx5LAorICAgIC8vIGJ1dCBzZXQgdGhlIHNlbGVjdGVkIGxlZ2libGUgdHJhY2sgdG8g
bmlsIHNvIHRleHQgdHJhY2tzIHdpbGwgbm90IGJlIGF1dG9tYXRpY2FsbHkgY29uZmlndXJlZC4K
KyAgICBpZiAoIW1fdGV4dFRyYWNrcy5zaXplKCkpIHsKKyAgICAgICAgQVNTRVJUKEFWQ0ZNZWRp
YVNlbGVjdGlvbkdyb3VwQWxsb3dzRW1wdHlTZWxlY3Rpb24obGVnaWJsZUdyb3VwKSk7CisgICAg
ICAgIEFWQ0ZQbGF5ZXJJdGVtUmVmIHBsYXllckl0ZW0gPSBhdlBsYXllckl0ZW0obV9hdmZXcmFw
cGVyKTsKKworICAgICAgICBpZiAocGxheWVySXRlbSkKKyAgICAgICAgICAgIEFWQ0ZQbGF5ZXJJ
dGVtU2VsZWN0TWVkaWFPcHRpb25Jbk1lZGlhU2VsZWN0aW9uR3JvdXAocGxheWVySXRlbSwgMCwg
bGVnaWJsZUdyb3VwKTsKKyAgICB9CisKKyAgICBWZWN0b3I8UmVmUHRyPEluYmFuZFRleHRUcmFj
a1ByaXZhdGVBVkY+ID4gcmVtb3ZlZFRleHRUcmFja3MgPSBtX3RleHRUcmFja3M7CisgICAgUmV0
YWluUHRyPENGQXJyYXlSZWY+IGxlZ2libGVPcHRpb25zID0gYWRvcHRDRihBVkNGTWVkaWFTZWxl
Y3Rpb25Db3B5UGxheWFibGVPcHRpb25zRnJvbUFycmF5KEFWQ0ZNZWRpYVNlbGVjdGlvbkdyb3Vw
R2V0T3B0aW9ucyhsZWdpYmxlR3JvdXApKSk7CisgICAgQ0ZJbmRleCBsZWdpYmxlT3B0aW9uc0Nv
dW50ID0gQ0ZBcnJheUdldENvdW50KGxlZ2libGVPcHRpb25zLmdldCgpKTsKKyAgICBmb3IgKENG
SW5kZXggaSA9IDA7IGkgPCBsZWdpYmxlT3B0aW9uc0NvdW50OyArK2kpIHsKKyAgICAgICAgQVZD
Rk1lZGlhU2VsZWN0aW9uT3B0aW9uUmVmIG9wdGlvbiA9IHN0YXRpY19jYXN0PEFWQ0ZNZWRpYVNl
bGVjdGlvbk9wdGlvblJlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChsZWdpYmxlT3B0aW9ucy5n
ZXQoKSwgaSkpOworICAgICAgICBib29sIG5ld1RyYWNrID0gdHJ1ZTsKKyAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gcmVtb3ZlZFRleHRUcmFja3Muc2l6ZSgpOyBpID4gMDsgLS1pKSB7CisgICAg
ICAgICAgICBpZiAocmVtb3ZlZFRleHRUcmFja3NbaSAtIDFdLT5pc0xlZ2FjeUNsb3NlZENhcHRp
b25zVHJhY2soKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgUmVm
UHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGPiB0cmFjayA9IHN0YXRpY19jYXN0PEluYmFu
ZFRleHRUcmFja1ByaXZhdGVBVkNGKj4ocmVtb3ZlZFRleHRUcmFja3NbaSAtIDFdLmdldCgpKTsK
KyAgICAgICAgICAgIGlmIChDRkVxdWFsKHRyYWNrLT5tZWRpYVNlbGVjdGlvbk9wdGlvbigpLCBv
cHRpb24pKSB7CisgICAgICAgICAgICAgICAgcmVtb3ZlZFRleHRUcmFja3MucmVtb3ZlKGkgLSAx
KTsKKyAgICAgICAgICAgICAgICBuZXdUcmFjayA9IGZhbHNlOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmICghbmV3VHJhY2spCisg
ICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBtX3RleHRUcmFja3MuYXBwZW5kKEluYmFu
ZFRleHRUcmFja1ByaXZhdGVBVkNGOjpjcmVhdGUodGhpcywgb3B0aW9uKSk7CisgICAgfQorCisg
ICAgcHJvY2Vzc05ld0FuZFJlbW92ZWRUZXh0VHJhY2tzKHJlbW92ZWRUZXh0VHJhY2tzKTsKK30K
KworI2VuZGlmIC8vIEhBVkUoQVZGT1VOREFUSU9OX01FRElBX1NFTEVDVElPTl9HUk9VUCkKKwor
dm9pZCBBVkZXcmFwcGVyOjpzZXRDdXJyZW50VHJhY2soSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFW
RiogdHJhY2spCit7CisgICAgaWYgKG1fY3VycmVudFRyYWNrID09IHRyYWNrKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25D
Rjo6c2V0Q3VycmVudFRyYWNrKCVwKSAtIHNlbGVjdGluZyB0cmFjayAlcCwgbGFuZ3VhZ2UgPSAl
cyIsIHRoaXMsIHRyYWNrLCB0cmFjayA/IHRyYWNrLT5sYW5ndWFnZSgpLnN0cmluZygpLnV0Zjgo
KS5kYXRhKCkgOiAiIik7CisgICAgICAgIAorICAgIG1fY3VycmVudFRyYWNrID0gdHJhY2s7CisK
KyAgICBpZiAodHJhY2spIHsKKyAgICAgICAgaWYgKHRyYWNrLT5pc0xlZ2FjeUNsb3NlZENhcHRp
b25zVHJhY2soKSkKKyAgICAgICAgICAgIEFWQ0ZQbGF5ZXJTZXRDbG9zZWRDYXB0aW9uRGlzcGxh
eUVuYWJsZWQoYXZQbGF5ZXIoKSwgVFJVRSk7CisjaWYgSEFWRShBVkZPVU5EQVRJT05fTUVESUFf
U0VMRUNUSU9OX0dST1VQKQorICAgICAgICBlbHNlCisgICAgICAgICAgICBBVkNGUGxheWVySXRl
bVNlbGVjdE1lZGlhT3B0aW9uSW5NZWRpYVNlbGVjdGlvbkdyb3VwKGF2UGxheWVySXRlbSgpLCBz
dGF0aWNfY2FzdDxJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRio+KHRyYWNrKS0+bWVkaWFTZWxl
Y3Rpb25PcHRpb24oKSwgc2FmZU1lZGlhU2VsZWN0aW9uR3JvdXBGb3JMZWdpYmxlTWVkaWEoKSk7
CisjZW5kaWYKKyAgICB9IGVsc2UgeworI2lmIEhBVkUoQVZGT1VOREFUSU9OX01FRElBX1NFTEVD
VElPTl9HUk9VUCkKKyAgICAgICAgQVZDRlBsYXllckl0ZW1TZWxlY3RNZWRpYU9wdGlvbkluTWVk
aWFTZWxlY3Rpb25Hcm91cChhdlBsYXllckl0ZW0oKSwgMCwgc2FmZU1lZGlhU2VsZWN0aW9uR3Jv
dXBGb3JMZWdpYmxlTWVkaWEoKSk7CisjZW5kaWYKKyAgICAgICAgQVZDRlBsYXllclNldENsb3Nl
ZENhcHRpb25EaXNwbGF5RW5hYmxlZChhdlBsYXllcigpLCBGQUxTRSk7CisgICAgfQorfQorCitT
dHJpbmcgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6Omxhbmd1YWdlT2ZQcmltYXJ5
QXVkaW9UcmFjaygpIGNvbnN0Cit7CisgICAgaWYgKCFtX2xhbmd1YWdlT2ZQcmltYXJ5QXVkaW9U
cmFjay5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIG1fbGFuZ3VhZ2VPZlByaW1hcnlBdWRpb1Ry
YWNrOworCisgICAgaWYgKCFhdlBsYXllckl0ZW0obV9hdmZXcmFwcGVyKSkKKyAgICAgICAgcmV0
dXJuIGVtcHR5U3RyaW5nKCk7CisKKyNpZiBIQVZFKEFWRk9VTkRBVElPTl9NRURJQV9TRUxFQ1RJ
T05fR1JPVVApCisgICAgLy8gSWYgQVZGb3VuZGF0aW9uIGhhcyBhbiBhdWRpYmxlIGdyb3VwLCBy
ZXR1cm4gdGhlIGxhbmd1YWdlIG9mIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgYXVkaWJsZSBvcHRp
b24uCisgICAgQVZDRk1lZGlhU2VsZWN0aW9uR3JvdXBSZWYgYXVkaWJsZUdyb3VwID0gQVZDRkFz
c2V0R2V0U2VsZWN0aW9uR3JvdXBGb3JNZWRpYUNoYXJhY3RlcmlzdGljKGF2QXNzZXQobV9hdmZX
cmFwcGVyKSwgQVZDRk1lZGlhQ2hhcmFjdGVyaXN0aWNBdWRpYmxlKTsKKyAgICBBVkNGTWVkaWFT
ZWxlY3Rpb25PcHRpb25SZWYgY3VycmVudGx5U2VsZWN0ZWRBdWRpYmxlT3B0aW9uID0gQVZDRlBs
YXllckl0ZW1HZXRTZWxlY3RlZE1lZGlhT3B0aW9uSW5NZWRpYVNlbGVjdGlvbkdyb3VwKGF2UGxh
eWVySXRlbShtX2F2ZldyYXBwZXIpLCBhdWRpYmxlR3JvdXApOworICAgIGlmIChjdXJyZW50bHlT
ZWxlY3RlZEF1ZGlibGVPcHRpb24pIHsKKyAgICAgICAgUmV0YWluUHRyPENGTG9jYWxlUmVmPiBh
dWRpYmxlT3B0aW9uTG9jYWxlID0gYWRvcHRDRihBVkNGTWVkaWFTZWxlY3Rpb25PcHRpb25Db3B5
TG9jYWxlKGN1cnJlbnRseVNlbGVjdGVkQXVkaWJsZU9wdGlvbikpOworICAgICAgICBtX2xhbmd1
YWdlT2ZQcmltYXJ5QXVkaW9UcmFjayA9IENGTG9jYWxlR2V0SWRlbnRpZmllcihhdWRpYmxlT3B0
aW9uTG9jYWxlLmdldCgpKTsKKyAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uQ0Y6Omxhbmd1YWdlT2ZQcmltYXJ5QXVkaW9UcmFjayglcCkgLSByZXR1cm5p
bmcgbGFuZ3VhZ2Ugb2Ygc2VsZWN0ZWQgYXVkaWJsZSBvcHRpb246ICVzIiwgdGhpcywgbV9sYW5n
dWFnZU9mUHJpbWFyeUF1ZGlvVHJhY2sudXRmOCgpLmRhdGEoKSk7CisKKyAgICAgICAgcmV0dXJu
IG1fbGFuZ3VhZ2VPZlByaW1hcnlBdWRpb1RyYWNrOworICAgIH0KKyNlbmRpZiAvLyBIQVZFKEFW
Rk9VTkRBVElPTl9NRURJQV9TRUxFQ1RJT05fR1JPVVApCisKKyAgICAvLyBBVkZvdW5kYXRpb24g
c3ludGhlc2l6ZXMgYW4gYXVkaWJsZSBncm91cCB3aGVuIHRoZXJlIGlzIG9ubHkgb25lIHVuZ3Jv
dXBlZCBhdWRpbyB0cmFjayBpZiB0aGVyZSBpcyBhbHNvIGEgbGVnaWJsZSBncm91cCAob25lIG9y
CisgICAgLy8gbW9yZSBpbi1iYW5kIHRleHQgdHJhY2tzKS4gSXQgZG9lc24ndCBrbm93IGFib3V0
IG91dC1vZi1iYW5kIHRyYWNrcywgc28gaWYgdGhlcmUgaXMgYSBzaW5nbGUgYXVkaW8gdHJhY2sg
cmV0dXJuIGl0cyBsYW5ndWFnZS4KKyAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gdHJhY2tzID0g
YWRvcHRDRihBVkNGQXNzZXRDb3B5VHJhY2tzV2l0aE1lZGlhVHlwZShhdkFzc2V0KG1fYXZmV3Jh
cHBlciksIEFWQ0ZNZWRpYVR5cGVBdWRpbykpOworICAgIENGSW5kZXggdHJhY2tDb3VudCA9IENG
QXJyYXlHZXRDb3VudCh0cmFja3MuZ2V0KCkpOworICAgIGlmICghdHJhY2tzIHx8IHRyYWNrQ291
bnQgIT0gMSkgeworICAgICAgICBtX2xhbmd1YWdlT2ZQcmltYXJ5QXVkaW9UcmFjayA9IGVtcHR5
U3RyaW5nKCk7CisgICAgICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbkNGOjpsYW5ndWFnZU9mUHJpbWFyeUF1ZGlvVHJhY2soJXApIC0gJWkgYXVkaW8gdHJhY2tz
LCByZXR1cm5pbmcgZW1wdHlTdHJpbmcoKSIsIHRoaXMsICh0cmFja3MgPyB0cmFja0NvdW50IDog
MCkpOworICAgICAgICByZXR1cm4gbV9sYW5ndWFnZU9mUHJpbWFyeUF1ZGlvVHJhY2s7CisgICAg
fQorCisgICAgQVZDRkFzc2V0VHJhY2tSZWYgdHJhY2sgPSAoQVZDRkFzc2V0VHJhY2tSZWYpQ0ZB
cnJheUdldFZhbHVlQXRJbmRleCh0cmFja3MuZ2V0KCksIDApOworICAgIFJldGFpblB0cjxDRlN0
cmluZ1JlZj4gbGFuZ3VhZ2UgPSBhZG9wdENGKEFWQ0ZBc3NldFRyYWNrQ29weUV4dGVuZGVkTGFu
Z3VhZ2VUYWcodHJhY2spKTsKKworICAgIC8vIFNvbWUgbGVnYWN5IHRyYWNrcyBoYXZlICJ1bmQi
IGFzIGEgbGFuZ3VhZ2UsIHRyZWF0IHRoYXQgdGhlIHNhbWUgYXMgbm8gbGFuZ3VhZ2UgYXQgYWxs
LgorICAgIGlmIChsYW5ndWFnZSAmJiBDRlN0cmluZ0NvbXBhcmUobGFuZ3VhZ2UuZ2V0KCksIENG
U1RSKCJ1bmQiKSwga0NGQ29tcGFyZUNhc2VJbnNlbnNpdGl2ZSkgIT0ga0NGQ29tcGFyZUVxdWFs
VG8pIHsKKyAgICAgICAgbV9sYW5ndWFnZU9mUHJpbWFyeUF1ZGlvVHJhY2sgPSBsYW5ndWFnZS5n
ZXQoKTsKKyAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
Q0Y6Omxhbmd1YWdlT2ZQcmltYXJ5QXVkaW9UcmFjayglcCkgLSByZXR1cm5pbmcgbGFuZ3VhZ2Ug
b2Ygc2luZ2xlIGF1ZGlvIHRyYWNrOiAlcyIsIHRoaXMsIG1fbGFuZ3VhZ2VPZlByaW1hcnlBdWRp
b1RyYWNrLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICByZXR1cm4gbV9sYW5ndWFnZU9mUHJpbWFy
eUF1ZGlvVHJhY2s7CisgICAgfQorCisgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uQ0Y6Omxhbmd1YWdlT2ZQcmltYXJ5QXVkaW9UcmFjayglcCkgLSBzaW5nbGUg
YXVkaW8gdHJhY2sgaGFzIG5vIGxhbmd1YWdlLCByZXR1cm5pbmcgZW1wdHlTdHJpbmcoKSIsIHRo
aXMpOworICAgIG1fbGFuZ3VhZ2VPZlByaW1hcnlBdWRpb1RyYWNrID0gZW1wdHlTdHJpbmcoKTsK
KyAgICByZXR1cm4gbV9sYW5ndWFnZU9mUHJpbWFyeUF1ZGlvVHJhY2s7Cit9CisKIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OmNvbnRlbnRzTmVlZHNEaXNwbGF5KCkKIHsK
ICAgICBpZiAobV9hdmZXcmFwcGVyKQpAQCAtODcwLDYgKzExNTAsNyBAQCB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpjCiBBVkZXcmFwcGVyOjpBVkZXcmFwcGVyKE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGKiBvd25lcikKICAgICA6IG1fb3duZXIob3duZXIp
CiAgICAgLCBtX29iamVjdElEKHNfbmV4dEFWRldyYXBwZXJPYmplY3RJRCsrKQorICAgICwgbV9j
dXJyZW50VHJhY2soMCkKIHsKICAgICBMT0coTWVkaWEsICJBVkZXcmFwcGVyOjpBVkZXcmFwcGVy
KCVwKSIsIHRoaXMpOwogCkBAIC04OTIsNiArMTE3MywxNCBAQCBBVkZXcmFwcGVyOjp+QVZGV3Jh
cHBlcigpCiAgICAgICAgIG1fYXZBc3NldCA9IDA7CiAgICAgfQogCisjaWYgSEFWRShBVkZPVU5E
QVRJT05fTUVESUFfU0VMRUNUSU9OX0dST1VQKSAmJiBIQVZFKEFWRk9VTkRBVElPTl9MRUdJQkxF
X09VVFBVVF9TVVBQT1JUKQorICAgIGlmIChsZWdpYmxlT3V0cHV0KCkpIHsKKyAgICAgICAgaWYg
KGF2UGxheWVySXRlbSgpKQorICAgICAgICAgICAgQVZDRlBsYXllckl0ZW1SZW1vdmVPdXRwdXQo
YXZQbGF5ZXJJdGVtKCksIGxlZ2libGVPdXRwdXQoKSk7CisgICAgICAgIG1fbGVnaWJsZU91dHB1
dCA9IDA7CisgICAgfQorI2VuZGlmCisKICAgICBtX2F2UGxheWVySXRlbSA9IDA7CiAgICAgbV90
aW1lT2JzZXJ2ZXIgPSAwOwogICAgIG1fYXZQbGF5ZXIgPSAwOwpAQCAtMTAwNCwxMyArMTI5Mywy
NyBAQCB2b2lkIEFWRldyYXBwZXI6OmNyZWF0ZVBsYXllcihJRGlyZWN0M0RECiAgICAgaWYgKG1f
ZDNkRGV2aWNlICYmIEFWQ0ZQbGF5ZXJFbmFibGVIYXJkd2FyZUFjY2VsZXJhdGVkVmlkZW9EZWNv
ZGVyS2V5KQogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShvcHRpb25zUmVmLmdldCgpLCBB
VkNGUGxheWVyRW5hYmxlSGFyZHdhcmVBY2NlbGVyYXRlZFZpZGVvRGVjb2RlcktleSwga0NGQm9v
bGVhblRydWUpOwogCisjaWYgSEFWRShBVkZPVU5EQVRJT05fTUVESUFfU0VMRUNUSU9OX0dST1VQ
KSAmJiBIQVZFKEFWRk9VTkRBVElPTl9MRUdJQkxFX09VVFBVVF9TVVBQT1JUKQorICAgIENGRGlj
dGlvbmFyeVNldFZhbHVlKG9wdGlvbnNSZWYuZ2V0KCksIEFWQ0ZQbGF5ZXJBcHBsaWVzTWVkaWFT
ZWxlY3Rpb25Dcml0ZXJpYUF1dG9tYXRpY2FsbHlLZXksIGtDRkJvb2xlYW5UcnVlKTsKKyNlbmRp
ZgorCiAgICAgLy8gRklYTUU6IFdlIG5lZWQgYSB3YXkgdG8gY3JlYXRlIGEgQVZQbGF5ZXIgd2l0
aG91dCBhbiBBVlBsYXllckl0ZW0sIHNlZSA8cmRhcjovL3Byb2JsZW0vOTg3NzczMD4uCiAgICAg
QVZDRlBsYXllclJlZiBwbGF5ZXJSZWYgPSBBVkNGUGxheWVyQ3JlYXRlV2l0aFBsYXllckl0ZW1B
bmRPcHRpb25zKGtDRkFsbG9jYXRvckRlZmF1bHQsIGF2UGxheWVySXRlbSgpLCBvcHRpb25zUmVm
LmdldCgpLCBtX25vdGlmaWNhdGlvblF1ZXVlKTsKICAgICBtX2F2UGxheWVyID0gYWRvcHRDRihw
bGF5ZXJSZWYpOworI2lmIEhBVkUoQVZGT1VOREFUSU9OX01FRElBX1NFTEVDVElPTl9HUk9VUCkg
JiYgSEFWRShBVkZPVU5EQVRJT05fTEVHSUJMRV9PVVRQVVRfU1VQUE9SVCkKKyAgICBBVkNGUGxh
eWVyU2V0Q2xvc2VkQ2FwdGlvbkRpc3BsYXlFbmFibGVkKHBsYXllclJlZiwgRkFMU0UpOworI2Vu
ZGlmCiAKICAgICBpZiAobV9kM2REZXZpY2UgJiYgQVZDRlBsYXllclNldERpcmVjdDNERGV2aWNl
UHRyKCkpCiAgICAgICAgIEFWQ0ZQbGF5ZXJTZXREaXJlY3QzRERldmljZVB0cigpKHBsYXllclJl
ZiwgbV9kM2REZXZpY2UuZ2V0KCkpOwogCisjaWYgSEFWRShBVkZPVU5EQVRJT05fTUVESUFfU0VM
RUNUSU9OX0dST1VQKSAmJiBIQVZFKEFWRk9VTkRBVElPTl9MRUdJQkxFX09VVFBVVF9TVVBQT1JU
KQorICAgIC8vIEJlY2F1c2Ugb2YgYSBidWcgaW4gQVZGb3VuZGF0aW9uQ0YsIHdlIGhhdmUgdG8g
d2FpdCB1bnRpbCB0aGUgcGxheWVyIGlzIGNyZWF0ZWQgYmVmb3JlIHdlIGNhbiBhZGQgdGhlIGxl
Z2libGUgb3V0cHV0OgorICAgIC8vIE9uY2UgPHJkYXI6Ly9wcm9ibGVtLzE0MzkwNDY2PiB0aGlz
IGlzIGZpeGVkLCB3ZSBjYW4gcmVtb3ZlIHRoZSBmb2xsb3dpbmcgdHdvIGxpbmVzLgorICAgIDo6
U2xlZXAoMTAwMCk7IC8vIEZJWE1FOiBUaGlzIGlzIGJlaW5nIGZpeGVkIGFzIHBhcnQgb2YgPHJk
YXI6Ly9wcm9ibGVtLzE0MzkwNDY2PgorICAgIEFWQ0ZQbGF5ZXJJdGVtQWRkT3V0cHV0KGF2UGxh
eWVySXRlbSgpLCBsZWdpYmxlT3V0cHV0KCkpOworI2VuZGlmCisKICAgICBDRk5vdGlmaWNhdGlv
bkNlbnRlclJlZiBjZW50ZXIgPSBDRk5vdGlmaWNhdGlvbkNlbnRlckdldExvY2FsQ2VudGVyKCk7
CiAgICAgQVNTRVJUKGNlbnRlcik7CiAKQEAgLTEwNDEsOCArMTM0NCwzMCBAQCB2b2lkIEFWRldy
YXBwZXI6OmNyZWF0ZVBsYXllckl0ZW0oKQogICAgIENGTm90aWZpY2F0aW9uQ2VudGVyQWRkT2Jz
ZXJ2ZXIoY2VudGVyLCBjYWxsYmFja0NvbnRleHQoKSwgbm90aWZpY2F0aW9uQ2FsbGJhY2ssIEFW
Q0ZQbGF5ZXJJdGVtSXNQbGF5YmFja0xpa2VseVRvS2VlcFVwQ2hhbmdlZE5vdGlmaWNhdGlvbiwg
aXRlbVJlZiwgQ0ZOb3RpZmljYXRpb25TdXNwZW5zaW9uQmVoYXZpb3JEZWxpdmVySW1tZWRpYXRl
bHkpOwogICAgIENGTm90aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIoY2VudGVyLCBjYWxsYmFj
a0NvbnRleHQoKSwgbm90aWZpY2F0aW9uQ2FsbGJhY2ssIEFWQ0ZQbGF5ZXJJdGVtSXNQbGF5YmFj
a0J1ZmZlckVtcHR5Q2hhbmdlZE5vdGlmaWNhdGlvbiwgaXRlbVJlZiwgQ0ZOb3RpZmljYXRpb25T
dXNwZW5zaW9uQmVoYXZpb3JEZWxpdmVySW1tZWRpYXRlbHkpOwogICAgIENGTm90aWZpY2F0aW9u
Q2VudGVyQWRkT2JzZXJ2ZXIoY2VudGVyLCBjYWxsYmFja0NvbnRleHQoKSwgbm90aWZpY2F0aW9u
Q2FsbGJhY2ssIEFWQ0ZQbGF5ZXJJdGVtSXNQbGF5YmFja0J1ZmZlckZ1bGxDaGFuZ2VkTm90aWZp
Y2F0aW9uLCBpdGVtUmVmLCBDRk5vdGlmaWNhdGlvblN1c3BlbnNpb25CZWhhdmlvckRlbGl2ZXJJ
bW1lZGlhdGVseSk7CisgICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJBZGRPYnNlcnZlcihjZW50ZXIs
IGNhbGxiYWNrQ29udGV4dCgpLCBub3RpZmljYXRpb25DYWxsYmFjaywgQVZDRlBsYXllckl0ZW1E
dXJhdGlvbkNoYW5nZWROb3RpZmljYXRpb24sIGl0ZW1SZWYsIENGTm90aWZpY2F0aW9uU3VzcGVu
c2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsKKyAgICAvLyBGSVhNRTogQXJlIHRoZXJl
IG90aGVyIGxlZ2libGUgb3V0cHV0IHRoaW5ncyB3ZSBuZWVkIHRvIHJlZ2lzdGVyIGZvcj8gYXNz
ZXQsIGhhc0VuYWJsZWRBdWRpbz8KIAogICAgIENGTm90aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2
ZXIoY2VudGVyLCBjYWxsYmFja0NvbnRleHQoKSwgbm90aWZpY2F0aW9uQ2FsbGJhY2ssIENBQ0ZD
b250ZXh0TmVlZHNGbHVzaE5vdGlmaWNhdGlvbigpLCAwLCBDRk5vdGlmaWNhdGlvblN1c3BlbnNp
b25CZWhhdmlvckRlbGl2ZXJJbW1lZGlhdGVseSk7CisKKyNpZiBIQVZFKEFWRk9VTkRBVElPTl9N
RURJQV9TRUxFQ1RJT05fR1JPVVApICYmIEhBVkUoQVZGT1VOREFUSU9OX0xFR0lCTEVfT1VUUFVU
X1NVUFBPUlQpCisgICAgY29uc3QgQ0ZUaW1lSW50ZXJ2YWwgbGVnaWJsZU91dHB1dEFkdmFuY2VJ
bnRlcnZhbCA9IDI7CisKKyAgICBtX2xlZ2libGVPdXRwdXQgPSBhZG9wdENGKEFWQ0ZQbGF5ZXJJ
dGVtTGVnaWJsZU91dHB1dENyZWF0ZVdpdGhNZWRpYVN1YnR5cGVzRm9yTmF0aXZlUmVwcmVzZW50
YXRpb24oa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCkpOworICAgIEFWQ0ZQbGF5ZXJJdGVtT3V0cHV0
U2V0U3VwcHJlc3NQbGF5ZXJSZW5kZXJpbmcobV9sZWdpYmxlT3V0cHV0LmdldCgpLCBUUlVFKTsK
KworICAgIEFWQ0ZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1dENhbGxiYWNrcyBjYWxsYmFja0luZm87
CisgICAgY2FsbGJhY2tJbmZvLnZlcnNpb24gPSBrQVZDRlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0
X0NhbGxiYWNrc1ZlcnNpb25fMTsKKyAgICBBU1NFUlQoY2FsbGJhY2tDb250ZXh0KCkpOworICAg
IGNhbGxiYWNrSW5mby5jb250ZXh0ID0gY2FsbGJhY2tDb250ZXh0KCk7CisgICAgY2FsbGJhY2tJ
bmZvLmxlZ2libGVPdXRwdXRDYWxsYmFjayA9IEFWRldyYXBwZXI6OmxlZ2libGVPdXRwdXRDYWxs
YmFjazsKKworICAgIEFWQ0ZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1dFNldENhbGxiYWNrcyhtX2xl
Z2libGVPdXRwdXQuZ2V0KCksICZjYWxsYmFja0luZm8sIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVl
KCkpOworICAgIEFWQ0ZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1dFNldEFkdmFuY2VJbnRlcnZhbEZv
ckNhbGxiYWNrSW52b2NhdGlvbihtX2xlZ2libGVPdXRwdXQuZ2V0KCksIGxlZ2libGVPdXRwdXRB
ZHZhbmNlSW50ZXJ2YWwpOworICAgIEFWQ0ZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1dFNldFRleHRT
dHlsaW5nUmVzb2x1dGlvbihtX2xlZ2libGVPdXRwdXQuZ2V0KCksIEFWQ0ZQbGF5ZXJJdGVtTGVn
aWJsZU91dHB1dFRleHRTdHlsaW5nUmVzb2x1dGlvblNvdXJjZUFuZFJ1bGVzT25seSk7CisgICAg
Ly8gV2UgY2Fubm90IGFkZCB0aGUgTGVnaWJsZSBPdXRwdXQgdG8gdGhlIHBsYXllciBpdGVtIHVu
dGlsIHRoZSBwbGF5ZXIgaXMgY29uc3RydWN0ZWQuIDxyZGFyOi8vcHJvYmxlbS8xNDM5MDQ2Nj4K
KyAgICAvLyBPbmNlIHRoaXMgaXMgZml4ZWQsIHdlIGNhbiB1bmNvbW1lbnQgdGhlIGZvbGxvd2lu
ZyBsaW5lLgorICAgIC8vIEFWQ0ZQbGF5ZXJJdGVtQWRkT3V0cHV0KG1fYXZQbGF5ZXJJdGVtLmdl
dCgpLCBtX2xlZ2libGVPdXRwdXQuZ2V0KCkpOworI2VuZGlmCiB9CiAKIHZvaWQgQVZGV3JhcHBl
cjo6cGVyaW9kaWNUaW1lT2JzZXJ2ZXJDYWxsYmFjayhBVkNGUGxheWVyUmVmLCBDTVRpbWUgY21U
aW1lLCB2b2lkKiBjb250ZXh0KQpAQCAtMTE3MSw2ICsxNDk2LDU5IEBAIHZvaWQgQVZGV3JhcHBl
cjo6c2Vla1RvVGltZShmbG9hdCB0aW1lKQogICAgICAgICBrQ01UaW1lWmVybywga0NNVGltZVpl
cm8sICZzZWVrQ29tcGxldGVkQ2FsbGJhY2ssIGNhbGxiYWNrQ29udGV4dCgpKTsKIH0KIAorc3Ry
dWN0IExlZ2libGVPdXRwdXREYXRhIHsKKyAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gbV9hdHRy
aWJ1dGVkU3RyaW5nczsKKyAgICBkb3VibGUgbV90aW1lOworICAgIHZvaWQqIG1fY29udGV4dDsK
KworICAgIExlZ2libGVPdXRwdXREYXRhKENGQXJyYXlSZWYgc3RyaW5ncywgZG91YmxlIHRpbWUs
IHZvaWQqIGNvbnRleHQpCisgICAgICAgIDogbV9hdHRyaWJ1dGVkU3RyaW5ncyhzdHJpbmdzKSwg
bV90aW1lKHRpbWUpLCBtX2NvbnRleHQoY29udGV4dCkKKyAgICB7CisgICAgfQorfTsKKwordm9p
ZCBBVkZXcmFwcGVyOjpwcm9jZXNzQ3VlKHZvaWQqIGNvbnRleHQpCit7CisgICAgQVNTRVJUKGRp
c3BhdGNoX2dldF9tYWluX3F1ZXVlKCkgPT0gZGlzcGF0Y2hfZ2V0X2N1cnJlbnRfcXVldWUoKSk7
CisgICAgQVNTRVJUKGNvbnRleHQpOworCisgICAgaWYgKCFjb250ZXh0KQorICAgICAgICByZXR1
cm47CisKKyAgICBPd25QdHI8TGVnaWJsZU91dHB1dERhdGE+IGxlZ2libGVPdXRwdXREYXRhID0g
YWRvcHRQdHIocmVpbnRlcnByZXRfY2FzdDxMZWdpYmxlT3V0cHV0RGF0YSo+KGNvbnRleHQpKTsK
KworICAgIE11dGV4TG9ja2VyIGxvY2tlcihtYXBMb2NrKCkpOworICAgIEFWRldyYXBwZXIqIHNl
bGYgPSBhdmZXcmFwcGVyRm9yQ2FsbGJhY2tDb250ZXh0KGxlZ2libGVPdXRwdXREYXRhLT5tX2Nv
bnRleHQpOworICAgIGlmICghc2VsZikgeworICAgICAgICBMT0coTWVkaWEsICJBVkZXcmFwcGVy
Ojpwcm9jZXNzQ3VlIGludm9rZWQgZm9yIGRlbGV0ZWQgQVZGV3JhcHBlciAlZCIsIHJlaW50ZXJw
cmV0X2Nhc3Q8dWludHB0cl90Pihjb250ZXh0KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBpZiAoIXNlbGYtPm1fY3VycmVudFRyYWNrKQorICAgICAgICByZXR1cm47CisKKyAgICBz
ZWxmLT5tX2N1cnJlbnRUcmFjay0+cHJvY2Vzc0N1ZShsZWdpYmxlT3V0cHV0RGF0YS0+bV9hdHRy
aWJ1dGVkU3RyaW5ncy5nZXQoKSwgbGVnaWJsZU91dHB1dERhdGEtPm1fdGltZSk7Cit9CisKK3Zv
aWQgQVZGV3JhcHBlcjo6bGVnaWJsZU91dHB1dENhbGxiYWNrKHZvaWQqIGNvbnRleHQsIEFWQ0ZQ
bGF5ZXJJdGVtTGVnaWJsZU91dHB1dFJlZiBsZWdpYmxlT3V0cHV0LCBDRkFycmF5UmVmIGF0dHJp
YnV0ZWRTdHJpbmdzLCBDRkFycmF5UmVmIC8qbmF0aXZlU2FtcGxlQnVmZmVycyovLCBDTVRpbWUg
aXRlbVRpbWUpCit7CisgICAgQVNTRVJUKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCkgPT0gZGlz
cGF0Y2hfZ2V0X2N1cnJlbnRfcXVldWUoKSk7CisgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1hcExv
Y2soKSk7CisgICAgQVZGV3JhcHBlciogc2VsZiA9IGF2ZldyYXBwZXJGb3JDYWxsYmFja0NvbnRl
eHQoY29udGV4dCk7CisgICAgaWYgKCFzZWxmKSB7CisgICAgICAgIExPRyhNZWRpYSwgIkFWRldy
YXBwZXI6OmxlZ2libGVPdXRwdXRDYWxsYmFjayBpbnZva2VkIGZvciBkZWxldGVkIEFWRldyYXBw
ZXIgJWQiLCByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oY29udGV4dCkpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgTE9HKE1lZGlhLCAiQVZGV3JhcHBlcjo6bGVnaWJsZU91dHB1
dENhbGxiYWNrKCVwKSIsIHNlbGYpOworCisgICAgQVNTRVJUKGxlZ2libGVPdXRwdXQgPT0gc2Vs
Zi0+bV9sZWdpYmxlT3V0cHV0KTsKKworICAgIE93blB0cjxMZWdpYmxlT3V0cHV0RGF0YT4gbGVn
aWJsZU91dHB1dERhdGEgPSBhZG9wdFB0cihuZXcgTGVnaWJsZU91dHB1dERhdGEoYXR0cmlidXRl
ZFN0cmluZ3MsIENNVGltZUdldFNlY29uZHMoaXRlbVRpbWUpLCBjb250ZXh0KSk7CisKKyAgICBk
aXNwYXRjaF9hc3luY19mKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIGxlZ2libGVPdXRwdXRE
YXRhLmxlYWtQdHIoKSwgcHJvY2Vzc0N1ZSk7Cit9CisKIHZvaWQgQVZGV3JhcHBlcjo6c2V0QXNz
ZXQoQVZDRlVSTEFzc2V0UmVmIGFzc2V0KQogewogICAgIGlmIChhc3NldCA9PSBhdkFzc2V0KCkp
CkBAIC0xMjgzLDYgKzE2NjEsMTkgQEAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IEFWRldyYXBwZXI6
OmNyZWF0ZQogICAgIHJldHVybiBpbWFnZTsKIH0KIAorI2lmIEhBVkUoQVZGT1VOREFUSU9OX01F
RElBX1NFTEVDVElPTl9HUk9VUCkgJiYgSEFWRShBVkZPVU5EQVRJT05fTEVHSUJMRV9PVVRQVVRf
U1VQUE9SVCkKK0FWQ0ZNZWRpYVNlbGVjdGlvbkdyb3VwUmVmIEFWRldyYXBwZXI6OnNhZmVNZWRp
YVNlbGVjdGlvbkdyb3VwRm9yTGVnaWJsZU1lZGlhKCkgY29uc3QKK3sKKyAgICBpZiAoIWF2QXNz
ZXQoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoQVZDRkFzc2V0R2V0U3RhdHVzT2ZW
YWx1ZUZvclByb3BlcnR5KGF2QXNzZXQoKSwgQVZDRkFzc2V0UHJvcGVydHlBdmFpbGFibGVNZWRp
YUNoYXJhY3RlcmlzdGljc1dpdGhNZWRpYVNlbGVjdGlvbk9wdGlvbnMsIDApICE9IEFWQ0ZQcm9w
ZXJ0eVZhbHVlU3RhdHVzTG9hZGVkKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBB
VkNGQXNzZXRHZXRTZWxlY3Rpb25Hcm91cEZvck1lZGlhQ2hhcmFjdGVyaXN0aWMoYXZBc3NldCgp
LCBBVkNGTWVkaWFDaGFyYWN0ZXJpc3RpY0xlZ2libGUpOworfQorI2VuZGlmCisKIHZvaWQgTGF5
ZXJDbGllbnQ6OnBsYXRmb3JtQ0FMYXllckxheW91dFN1YmxheWVyc09mTGF5ZXIoUGxhdGZvcm1D
QUxheWVyKiB3cmFwcGVyTGF5ZXIpCiB7CiAgICAgQVNTRVJUKG1fcGFyZW50KTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25DRi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25DRi5oCShyZXZpc2lvbiAxNTI3OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Yu
aAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEx
LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMzgsMTAgKzM4LDkgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uQ0YgOgogcHVibGljOgogICAgIHZpcnR1YWwgfk1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbkNGKCk7CiAKLSAgICBzdGF0aWMgdm9pZCByZWdpc3Rlck1lZGlhRW5naW5l
KE1lZGlhRW5naW5lUmVnaXN0cmFyKTsKKyAgICB2aXJ0dWFsIHZvaWQgdHJhY2tzQ2hhbmdlZCgp
IE9WRVJSSURFOwogCi0gICAgLy9GSVhNRTogdGhpcyBuZWVkcyB0byBiZSBpbXBsZW1lbnRlZAot
ICAgIHZpcnR1YWwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRiogY3VycmVudFRyYWNrKCkgY29u
c3QgeyByZXR1cm4gMDsgfQorICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVk
aWFFbmdpbmVSZWdpc3RyYXIpOwogCiBwcml2YXRlOgogICAgIE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbkNGKE1lZGlhUGxheWVyKik7CkBAIC04NSw3ICs4NCw2IEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCBmbG9hdCBwbGF0Zm9ybUR1cmF0aW9uKCkgY29uc3Q7CiAgICAgdmlydHVhbCBm
bG9hdCBwbGF0Zm9ybU1heFRpbWVMb2FkZWQoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgYmVn
aW5Mb2FkaW5nTWV0YWRhdGEoKTsKLSAgICB2aXJ0dWFsIHZvaWQgdHJhY2tzQ2hhbmdlZCgpOwog
ICAgIHZpcnR1YWwgdm9pZCBzaXplQ2hhbmdlZCgpOwogCiAgICAgdmlydHVhbCBib29sIGhhc0F2
YWlsYWJsZVZpZGVvRnJhbWUoKSBjb25zdDsKQEAgLTEwMSw5ICs5OSwyNSBAQCBwcml2YXRlOgog
CiAgICAgdmlydHVhbCB2b2lkIGNvbnRlbnRzTmVlZHNEaXNwbGF5KCk7CiAKKyAgICB2aXJ0dWFs
IFN0cmluZyBsYW5ndWFnZU9mUHJpbWFyeUF1ZGlvVHJhY2soKSBjb25zdCBPVkVSUklERTsKKwor
I2lmIEhBVkUoQVZGT1VOREFUSU9OX01FRElBX1NFTEVDVElPTl9HUk9VUCkKKyAgICB2b2lkIHBy
b2Nlc3NNZWRpYVNlbGVjdGlvbk9wdGlvbnMoKTsKKyNlbmRpZgorCisgICAgdmlydHVhbCB2b2lk
IHNldEN1cnJlbnRUcmFjayhJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGKikgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGKiBjdXJyZW50VHJhY2soKSBjb25z
dCBPVkVSUklERTsKKyAgICB2b2lkIHByb2Nlc3NOZXdBbmRSZW1vdmVkVGV4dFRyYWNrcyhjb25z
dCBWZWN0b3I8UmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY+ID4mKTsKKyAgICB2b2lk
IGNsZWFyVGV4dFRyYWNrcygpOworCisjaWYgIUhBVkUoQVZGT1VOREFUSU9OX0xFR0lCTEVfT1VU
UFVUX1NVUFBPUlQpCisgICAgdm9pZCBwcm9jZXNzTGVnYWN5Q2xvc2VkQ2FwdGlvbnNUcmFja3Mo
KTsKKyNlbmRpZgorCiAgICAgZnJpZW5kIGNsYXNzIEFWRldyYXBwZXI7CiAgICAgQVZGV3JhcHBl
ciogbV9hdmZXcmFwcGVyOwogICAgIAorICAgIG11dGFibGUgU3RyaW5nIG1fbGFuZ3VhZ2VPZlBy
aW1hcnlBdWRpb1RyYWNrOwogICAgIGJvb2wgbV92aWRlb0ZyYW1lSGFzRHJhd247CiB9OwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU29mdExpbmtpbmcuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU29mdExpbmtpbmcuaAkocmV2aXNpb24g
MTUyNzkzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NvZnRMaW5raW5nLmgJKHdv
cmtpbmcgY29weSkKQEAgLTE1Nyw3ICsxNTcsNyBAQAogICAgICNkZWZpbmUgbXlWYXIgZ2V0X215
VmFyKCkKICovIAogI2RlZmluZSBTT0ZUX0xJTktfVkFSSUFCTEVfRExMX0lNUE9SVChsaWJyYXJ5
LCB2YXJpYWJsZU5hbWUsIHZhcmlhYmxlVHlwZSkgXAotICAgIHN0YXRpYyB2YXJpYWJsZVR5cGUg
Z2V0XyMjdmFyaWFibGVOYW1lKCkgXAorICAgIHN0YXRpYyB2YXJpYWJsZVR5cGUgZ2V0IyN2YXJp
YWJsZU5hbWUoKSBcCiAgICAgeyBcCiAgICAgICAgIHN0YXRpYyB2YXJpYWJsZVR5cGUqIHB0ciA9
IHJlaW50ZXJwcmV0X2Nhc3Q8dmFyaWFibGVUeXBlKj4oU09GVF9MSU5LX0dFVFBST0NBRERSRVNT
KGxpYnJhcnkjI0xpYnJhcnkoKSwgI3ZhcmlhYmxlTmFtZSkpOyBcCiAgICAgICAgIEFTU0VSVChw
dHIpOyBcCkBAIC0xNjgsNyArMTY4LDcgQEAKICAgICBOb3RlIHRoYXQgdGhpcyB3aWxsIG9ubHkg
d29yayBmb3IgdmFyaWFibGUgdHlwZXMgZm9yIHdoaWNoIGEgcmV0dXJuIHZhbHVlIG9mIDAgY2Fu
IHNpZ25hbCBhbiBlcnJvci4KICAqLwogI2RlZmluZSBTT0ZUX0xJTktfVkFSSUFCTEVfRExMX0lN
UE9SVF9PUFRJT05BTChsaWJyYXJ5LCB2YXJpYWJsZU5hbWUsIHZhcmlhYmxlVHlwZSkgXAotICAg
IHN0YXRpYyB2YXJpYWJsZVR5cGUgZ2V0XyMjdmFyaWFibGVOYW1lKCkgXAorICAgIHN0YXRpYyB2
YXJpYWJsZVR5cGUgZ2V0IyN2YXJpYWJsZU5hbWUoKSBcCiAgICAgeyBcCiAgICAgICAgIHN0YXRp
YyB2YXJpYWJsZVR5cGUqIHB0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dmFyaWFibGVUeXBlKj4oU09G
VF9MSU5LX0dFVFBST0NBRERSRVNTKGxpYnJhcnkjI0xpYnJhcnkoKSwgI3ZhcmlhYmxlTmFtZSkp
OyBcCiAgICAgICAgIGlmICghcHRyKSBcCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTI3OTMpCisrKyBUb29scy9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMSBAQAorMjAxMy0wNy0xNiAgQnJlbnQgRnVs
Z2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBbV2luXSBTdXBwb3J0IGluLWJh
bmQgdGV4dCB0cmFja3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDM3NzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBVcGRhdGUgV2luTGF1bmNoZXIgdG8gcnVuIGluIGEgQ0ZSdW5Mb29wIChyYXRoZXIg
dGhhbiBhIGhhbmQtd3JpdHRlbiBXaW5kb3dzIGV2ZW50IGxvb3ApIHNvIHRoYXQKKyAgICAgICAg
bGliZGlzcGF0Y2ggYW5kIENGUnVuTG9vcCBlbGVtZW50cyBhcmUgc2VydmljZXMgZHVyaW5nIHRo
ZSBydW4gbG9vcC4KKworICAgICAgICAqIFdpbkxhdW5jaGVyL1dpbkxhdW5jaGVyLmNwcDoKKyAg
ICAgICAgKGRsbExhdW5jaGVyRW50cnlQb2ludCk6IFVzZSBDRlJ1bkxvb3BSdW4gKHJhdGhlciB0
aGFuIGEgV2luZG93cyBtZXNzYWdlIGxvb3ApIGlmIHJ1bm5pbmcgd2l0aAorICAgICAgICBhIENv
cmVGb3VuZGF0aW9uIChvciBDRkxpdGUpIHN1cHBvcnQgbGlicmFyeS4KKyAgICAgICAgKiBXaW5M
YXVuY2hlci9XaW5MYXVuY2hlci52Y3hwcm9qL1dpbkxhdW5jaGVyQ0YucHJvcHM6IEFkZGVkLgor
ICAgICAgICAqIFdpbkxhdW5jaGVyL1dpbkxhdW5jaGVyLnZjeHByb2ovV2luTGF1bmNoZXJDRkxp
dGUucHJvcHM6IEFkZGVkLgorICAgICAgICAqIFdpbkxhdW5jaGVyL1dpbkxhdW5jaGVyLnZjeHBy
b2ovV2luTGF1bmNoZXJMaWIudmN4cHJvajogQWRkIHJlZmVyZW5jZXMgdG8gV2luTGF1bmNoZXJD
Ri5wcm9wcworICAgICAgICBhbmQgV2luTGF1bmNoZXJDRkxpdGUucHJvcHMuCisKIDIwMTMtMDct
MTcgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNTE1MzUuCkluZGV4OiBUb29scy9XaW5MYXVuY2hlci9X
aW5MYXVuY2hlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2luTGF1bmNoZXIvV2luTGF1bmNo
ZXIuY3BwCShyZXZpc2lvbiAxNTI3OTMpCisrKyBUb29scy9XaW5MYXVuY2hlci9XaW5MYXVuY2hl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDE0IEBACiAjaW5jbHVkZSAiRE9NRGVm
YXVsdEltcGwuaCIKICNpbmNsdWRlICJQcmludFdlYlVJRGVsZWdhdGUuaCIKICNpbmNsdWRlIDxX
ZWJLaXQvV2ViS2l0Q09NQVBJLmg+CisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CiAKKyNpZiBV
U0UoQ0YpCisjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZQcml2Lmg+CisjaW5jbHVkZSA8Q29y
ZUZvdW5kYXRpb24vQ0ZSdW5Mb29wLmg+CisjZW5kaWYKKworI2luY2x1ZGUgPGFzc2VydC5oPgog
I2luY2x1ZGUgPGNvbW1jdHJsLmg+CiAjaW5jbHVkZSA8Y29tbWRsZy5oPgogI2luY2x1ZGUgPG9i
amJhc2UuaD4KQEAgLTQyMSwxMiArNDI4LDE3IEBAIGV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxl
eHBvcnQpIGludCBXSU4KICAgICB9CiAKICAgICAvLyBNYWluIG1lc3NhZ2UgbG9vcDoKKyNpZiBV
U0UoQ0YpCisgICAgX0NGUnVuTG9vcFNldFdpbmRvd3NNZXNzYWdlUXVldWVNYXNrKENGUnVuTG9v
cEdldE1haW4oKSwgUVNfQUxMSU5QVVQgfCBRU19BTExQT1NUTUVTU0FHRSwga0NGUnVuTG9vcERl
ZmF1bHRNb2RlKTsKKyAgICBDRlJ1bkxvb3BSdW4oKTsKKyNlbHNlCiAgICAgd2hpbGUgKEdldE1l
c3NhZ2UoJm1zZywgTlVMTCwgMCwgMCkpIHsKICAgICAgICAgaWYgKCFUcmFuc2xhdGVBY2NlbGVy
YXRvcihtc2cuaHduZCwgaEFjY2VsVGFibGUsICZtc2cpKSB7CiAgICAgICAgICAgICBUcmFuc2xh
dGVNZXNzYWdlKCZtc2cpOwogICAgICAgICAgICAgRGlzcGF0Y2hNZXNzYWdlKCZtc2cpOwogICAg
ICAgICB9CiAgICAgfQorI2VuZGlmCiAKIGV4aXQ6CiAgICAgZ1ByaW50RGVsZWdhdGUtPlJlbGVh
c2UoKTsKSW5kZXg6IFRvb2xzL1dpbkxhdW5jaGVyL1dpbkxhdW5jaGVyLnZjeHByb2ovV2luTGF1
bmNoZXJDRi5wcm9wcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XaW5MYXVuY2hlci9XaW5MYXVuY2hl
ci52Y3hwcm9qL1dpbkxhdW5jaGVyQ0YucHJvcHMJKHJldmlzaW9uIDApCisrKyBUb29scy9XaW5M
YXVuY2hlci9XaW5MYXVuY2hlci52Y3hwcm9qL1dpbkxhdW5jaGVyQ0YucHJvcHMJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwxMiBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0i
dXRmLTgiPz4NCis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hl
bWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+DQorICA8SW1wb3J0R3Jv
dXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIiAvPg0KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVz
ZXJNYWNyb3MiIC8+DQorICA8UHJvcGVydHlHcm91cCAvPg0KKyAgPEl0ZW1EZWZpbml0aW9uR3Jv
dXA+DQorICAgIDxMaW5rPg0KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPkNvcmVGb3Vu
ZGF0aW9uJChEZWJ1Z1N1ZmZpeCkubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0
aW9uYWxEZXBlbmRlbmNpZXM+DQorICAgIDwvTGluaz4NCisgIDwvSXRlbURlZmluaXRpb25Hcm91
cD4NCisgIDxJdGVtR3JvdXAgLz4NCis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpJbmRleDogVG9vbHMvV2luTGF1bmNoZXIvV2luTGF1bmNoZXIudmN4cHJvai9XaW5MYXVu
Y2hlckNGTGl0ZS5wcm9wcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XaW5MYXVuY2hlci9XaW5MYXVu
Y2hlci52Y3hwcm9qL1dpbkxhdW5jaGVyQ0ZMaXRlLnByb3BzCShyZXZpc2lvbiAwKQorKysgVG9v
bHMvV2luTGF1bmNoZXIvV2luTGF1bmNoZXIudmN4cHJvai9XaW5MYXVuY2hlckNGTGl0ZS5wcm9w
cwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEyIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAi
IGVuY29kaW5nPSJ1dGYtOCI/Pg0KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0i
aHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4NCisg
IDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiIC8+DQorICA8UHJvcGVydHlHcm91
cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4NCisgIDxQcm9wZXJ0eUdyb3VwIC8+DQorICA8SXRlbURl
ZmluaXRpb25Hcm91cD4NCisgICAgPExpbms+DQorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNp
ZXM+Q0ZMaXRlLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5k
ZW5jaWVzPg0KKyAgICA8L0xpbms+DQorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+DQorICA8SXRl
bUdyb3VwIC8+DQorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6
IFRvb2xzL1dpbkxhdW5jaGVyL1dpbkxhdW5jaGVyLnZjeHByb2ovV2luTGF1bmNoZXJMaWIudmN4
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XaW5MYXVuY2hlci9XaW5MYXVuY2hlci52Y3hwcm9q
L1dpbkxhdW5jaGVyTGliLnZjeHByb2oJKHJldmlzaW9uIDE1Mjc5MykKKysrIFRvb2xzL1dpbkxh
dW5jaGVyL1dpbkxhdW5jaGVyLnZjeHByb2ovV2luTGF1bmNoZXJMaWIudmN4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtNjIsMjcgKzYyLDMzIEBACiAgIDxJbXBvcnRHcm91cCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJv
cGVydHlTaGVldHMiPg0KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jv
c29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNl
clJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0i
TG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+DQogICAgIDxJbXBvcnQgUHJvamVjdD0iV2luTGF1bmNo
ZXJMaWJSZWxlYXNlLnByb3BzIiAvPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9IldpbkxhdW5jaGVy
Q0YucHJvcHMiIC8+DQogICA8L0ltcG9ydEdyb3VwPg0KICAgPEltcG9ydEdyb3VwIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3xXaW4z
MiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+DQogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2Vy
Um9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249
ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnBy
b3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4NCiAgICAgPEltcG9ydCBQcm9q
ZWN0PSJXaW5MYXVuY2hlckxpYlJlbGVhc2UucHJvcHMiIC8+DQorICAgIDxJbXBvcnQgUHJvamVj
dD0iV2luTGF1bmNoZXJDRkxpdGUucHJvcHMiIC8+DQogICA8L0ltcG9ydEdyb3VwPg0KICAgPElt
cG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJv
ZHVjdGlvbnxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+DQogICAgIDxJbXBvcnQgUHJv
amVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3Bz
IiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRm
b3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4NCiAgICAg
PEltcG9ydCBQcm9qZWN0PSJXaW5MYXVuY2hlckxpYlByb2R1Y3Rpb24ucHJvcHMiIC8+DQorICAg
IDxJbXBvcnQgUHJvamVjdD0iV2luTGF1bmNoZXJDRi5wcm9wcyIgLz4NCiAgIDwvSW1wb3J0R3Jv
dXA+DQogICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+DQogICAgIDxJbXBv
cnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2Vy
LnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4k
KFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4N
CiAgICAgPEltcG9ydCBQcm9qZWN0PSJXaW5MYXVuY2hlckxpYkRlYnVnLnByb3BzIiAvPg0KKyAg
ICA8SW1wb3J0IFByb2plY3Q9IldpbkxhdW5jaGVyQ0YucHJvcHMiIC8+DQogICA8L0ltcG9ydEdy
b3VwPg0KICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPg0K
ICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0
Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jv
c29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxh
dGZvcm0iIC8+DQogICAgIDxJbXBvcnQgUHJvamVjdD0iV2luTGF1bmNoZXJMaWJEZWJ1Zy5wcm9w
cyIgLz4NCisgICAgPEltcG9ydCBQcm9qZWN0PSJXaW5MYXVuY2hlckNGTGl0ZS5wcm9wcyIgLz4N
CiAgIDwvSW1wb3J0R3JvdXA+DQogICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0
eVNoZWV0cyI+DQogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0
LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9v
dERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2Nh
bEFwcERhdGFQbGF0Zm9ybSIgLz4NCiAgICAgPEltcG9ydCBQcm9qZWN0PSJXaW5MYXVuY2hlckxp
YkRlYnVnLnByb3BzIiAvPg0KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoV2ViS2l0X0xpYnJhcmll
cylcdG9vbHNcdnNwcm9wc1xkZWJ1Z3N1ZmZpeC5wcm9wcyIgLz4NCisgICAgPEltcG9ydCBQcm9q
ZWN0PSJXaW5MYXVuY2hlckNGLnByb3BzIiAvPg0KICAgPC9JbXBvcnRHcm91cD4NCiAgIDxQcm9w
ZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPg0KICAgPFByb3BlcnR5R3JvdXA+DQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>207011</attachid>
            <date>2013-07-18 12:07:06 -0700</date>
            <delta_ts>2013-07-18 12:15:00 -0700</delta_ts>
            <desc>Updated to resolve alphabetical ordering</desc>
            <filename>bug-103770-20130718120658.patch</filename>
            <type>text/plain</type>
            <size>118828</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1Mjg1OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExMCBAQAorMjAxMy0wNy0xNyAgQnJlbnQg
RnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBbV2luZG93c10gU3VwcG9y
dCBpbi1iYW5kIHRleHQgdHJhY2tzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTAzNzcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgRXhpc3RpbmcgbWVkaWEgdGVzdHMgY292ZXIgdGhlc2UgZmVhdHVyZXMu
CisKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qOiBBZGQgbmV3IGZp
bGVzIGZvciBXaW5kb3dzIGNhcHRpb25zCisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNv
cmUudmN4cHJvai5maWx0ZXJzOiBkaXR0by4KKyAgICAgICAgKiBjb25maWcuaDogTWFrZSBzdXJl
IHByb3BlciBidWlkIGZsYWdzIGFyZSB0dXJuZWQgb24gd2hlbiBidWlsZGluZworICAgICAgICB3
aXRoIEFWQ0ZfTEVHSUJMRV9PVVRQVVQuCisgICAgICAgICogcGFnZS9DYXB0aW9uVXNlclByZWZl
cmVuY2VzTWVkaWFBRi5jcHA6IFJldmlzZSB0byByZWR1Y2Ugc29mdCBsaW5raW5nCisgICAgICAg
IGR1cGxpY2F0aW9uIGJldHdlZW4gTWFjIGFuZCBXaW5kb3dzLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcDogVXBk
YXRlCisgICAgICAgIHRvIHN1cHBvcnQgV2luZG93cyBwbGF0Zm9ybSBieSByZW1vdmluZyBjb21w
aWxlciBndWFyZHMgYW5kIGFkZGluZworICAgICAgICBXaW5kb3dzIGRlY2xhcmF0aW9ucyBmb3Ig
c29mdC1saW5rIGZ1bmN0aW9ucy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oOiBEaXR0by4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
LmNwcDoKKyAgICAgICAgUmVtb3ZlIGJ1aWxkIGd1YXJkcyBwcmV2ZW50aW5nIFdpbmRvd3MgZnJv
bSB1c2luZyBMZWdpYmxlT3V0cHV0CisgICAgICAgIGZlYXR1cmVzLgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uOjpzZWVrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbjo6c2Vla0NvbXBsZXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb246OmRpc3BhdGNoTm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6dHJhY2tNb2RlQ2hhbmdlZCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uOjpjb250ZW50c05lZWRzRGlzcGxheSk6IERpdHRvCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0FWRm91bmRhdGlvbkNGU29mdExpbmtpbmcuaDoKKyAg
ICAgICAgQWRkIG5ldyBMZWdpYmxlT3V0cHV0IHN1cHBvcnQgZnVuY3Rpb25zLCBhbmQgdHJ5IHRv
IHJlZHVjZSBkdXBsaWNhdGlvbgorICAgICAgICBiZXR3ZWVuIFdpbmRvd3MgYW5kIE1hYyBzb2Z0
IGxpbmsgZGVjbGFyYXRpb25zLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9jZi9Db3JlTWVkaWFTb2Z0TGlua2luZy5oOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0YuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGOjpJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRik6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0
VHJhY2tQcml2YXRlQVZDRjo6ZGlzY29ubmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRU
ZXh0VHJhY2tQcml2YXRlQVZDRjo6a2luZCk6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0
VHJhY2tQcml2YXRlQVZDRjo6aXNDbG9zZWRDYXB0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRjo6aXNTREgpOgorICAgICAgICAoV2ViQ29yZTo6SW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0Y6OmNvbnRhaW5zT25seUZvcmNlZFN1YnRpdGxlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRjo6aXNNYWluUHJvZ3Jh
bUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0Y6
OmlzRWFzeVRvUmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRl
QVZDRjo6bGFiZWwpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFW
Q0Y6Omxhbmd1YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGVB
VkNGOjppc0RlZmF1bHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0Y6On5JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZD
Rik6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRjo6bWVkaWFT
ZWxlY3Rpb25PcHRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZDRi5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0Y6OkluYmFuZFRleHRU
cmFja1ByaXZhdGVMZWdhY3lBVkNGKToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFj
a1ByaXZhdGVMZWdhY3lBVkNGOjpkaXNjb25uZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFu
ZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGOjpraW5kKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
YmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGOjppc0Nsb3NlZENhcHRpb25zKToKKyAgICAg
ICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGOjpjb250YWluc09u
bHlGb3JjZWRTdWJ0aXRsZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUxlZ2FjeUFWQ0Y6OmlzTWFpblByb2dyYW1Db250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGOjppc0Vhc3lUb1JlYWQpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0Y6OmxhYmVsKToKKyAg
ICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGOjpsYW5ndWFn
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0luYmFuZFRl
eHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0Y6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZDRjo6fkluYmFuZFRleHRUcmFja1ByaXZh
dGVMZWdhY3lBVkNGKToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGVM
ZWdhY3lBVkNGOjphdlBsYXllckl0ZW1UcmFjayk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcDoK
KyAgICAgICAgVXBkYXRlIHRvIHN1cHBvcnQgTGVnaWJsZU91dHB1dCBmZWF0dXJlcyBmb3IgdGhl
IFdpbmRvd3MgcG9ydC4KKyAgICAgICAgKFdlYkNvcmU6OkFWRldyYXBwZXI6OmN1cnJlbnRUcmFj
ayk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6bGVnaWJsZU91dHB1dCk6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlTWV0YWRhdGFLZXlOYW1lcyk6IEFkZGVk
IG1pc3Npbmcga2V5IG5hbWVzLgorICAgICAgICAoV2ViQ29yZTo6YXZMZWdpYmxlT3V0cHV0KTog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpzYWZlTWVkaWFTZWxlY3Rpb25Hcm91cEZvckxlZ2li
bGVNZWRpYSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uQ0Y6OmNhbmNlbExvYWQpOiBDbGVhciB0ZXh0CisgICAgICAgIHRyYWNrcyB3aGVu
IGNhbmNlbGxpbmcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25DRjo6c2V0Q3VycmVudFRyYWNrKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6Y3VycmVudFRyYWNrKTogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6cGxhdGZvcm1E
dXJhdGlvbik6IFJldmlzZWQKKyAgICAgICAgdG8gbWF0Y2ggbG9naWMgaW4gT2JqZWN0aXZlIEMg
aW1wbGVtZW50YXRpb24uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25DRjo6Y3VycmVudFRpbWUpOiBSZXZpc2VkCisgICAgICAgIHRvIG1hdGNoIGxvZ2lj
IGluIE9iamVjdGl2ZSBDIGltcGxlbWVudGF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KToK
KyAgICAgICAgQ2hlY2sgcHJlc2VuY2Ugb2YgbWV0YWRhdGEgYmVmb3JlIHByb2NlZWRpbmcuIFJl
dmlzZWQgdG8gbWF0Y2ggbG9naWMKKyAgICAgICAgaW4gT2JqZWN0aXZlIEMgaW1wbGVtZW50YXRp
b24uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6
cGFpbnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbkNGOjp0cmFja3NDaGFuZ2VkKTogVXBkYXRlIGZvcgorICAgICAgICBpbi1iYW5kIHRl
eHQgdHJhY2tzLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uQ0Y6OmNsZWFyVGV4dFRyYWNrcyk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnByb2Nlc3NMZWdhY3lDbG9zZWRDYXB0aW9uc1Ry
YWNrcyk6CisgICAgICAgIEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uQ0Y6OnByb2Nlc3NOZXdBbmRSZW1vdmVkVGV4dFRyYWNrcyk6CisgICAg
ICAgIEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uQ0Y6OnByb2Nlc3NNZWRpYVNlbGVjdGlvbk9wdGlvbnMpOgorICAgICAgICBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkFWRldyYXBwZXI6OnNldEN1cnJlbnRUcmFjayk6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6Omxhbmd1YWdl
T2ZQcmltYXJ5QXVkaW9UcmFjayk6CisgICAgICAgIEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
QVZGV3JhcHBlcjo6QVZGV3JhcHBlcik6IEFkZCBuZXcgaW5pdGlhbGl6ZXJzLgorICAgICAgICAo
V2ViQ29yZTo6QVZGV3JhcHBlcjo6fkFWRldyYXBwZXIpOiBDbGVhbiB1cCB0ZXh0IHRyYWNrIGlu
Zm9ybWF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6Y3JlYXRlUGxheWVyKTog
QWRkIExlZ2libGUgT3V0cHV0IHN1cHBvcnQuCisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVy
OjpjcmVhdGVQbGF5ZXJJdGVtKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpMZWdpYmxlT3V0
cHV0RGF0YTo6TGVnaWJsZU91dHB1dERhdGEpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFW
RldyYXBwZXI6OnByb2Nlc3NDdWUpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFWRldyYXBw
ZXI6OmxlZ2libGVPdXRwdXRDYWxsYmFjayk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QVZG
V3JhcHBlcjo6c2FmZU1lZGlhU2VsZWN0aW9uR3JvdXBGb3JMZWdpYmxlTWVkaWEpOiBBZGRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uQ0YuaDoKKyAgICAgICAgVXBkYXRlIHRvIHN1cHBvcnQgTGVnaWJs
ZU91dHB1dCBmZWF0dXJlcyBmb3IgdGhlIFdpbmRvd3MgcG9ydC4KKyAgICAgICAgKiBwbGF0Zm9y
bS93aW4vU29mdExpbmtpbmcuaDogQ2hhbmdlIHNpZ25hdHVyZSBvZiB2YXJpYWJsZSBhY2Nlc3Nv
cgorICAgICAgICB0byBtYXRjaCBNYWMgc28gcmVkdWNlIGR1cGxpY2F0ZSBjb2RlLgorCiAyMDEz
LTA3LTE4ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CiAKICAgICAgICAgQ3Jh
c2ggaW4gV2ViQ29yZTo6Y3JlYXRlTWFya3VwKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NvbmZp
Zy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NvbmZpZy5oCShyZXZpc2lvbiAxNTI4
NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9jb25maWcuaAkod29ya2luZyBjb3B5KQpAQCAtMTQwLDgg
KzE0MCwxMCBAQCB0eXBlZGVmIGZsb2F0IENHRmxvYXQ7CiAjZGVmaW5lIFdURl9VU0VfQVZGT1VO
REFUSU9OIDEKIAogI2lmIEhBVkUoQVZDRl9MRUdJQkxFX09VVFBVVCkKKyNkZWZpbmUgV1RGX1VT
RV9BVkZPVU5EQVRJT04gMQogI2RlZmluZSBIQVZFX0FWRk9VTkRBVElPTl9NRURJQV9TRUxFQ1RJ
T05fR1JPVVAgMQogI2RlZmluZSBIQVZFX0FWRk9VTkRBVElPTl9MRUdJQkxFX09VVFBVVF9TVVBQ
T1JUIDEKKyNkZWZpbmUgSEFWRV9NRURJQV9BQ0NFU1NJQklMSVRZX0ZSQU1FV09SSyAxCiAjZW5k
aWYKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29y
ZS52Y3hwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9X
ZWJDb3JlLnZjeHByb2oJKHJldmlzaW9uIDE1Mjg1OCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTQzNDksNiArNDM0
OSw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxGaWxlU3RyZWFtLmNw
cCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXEZpbGVTeXN0ZW0uY3Bw
IiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcQU5HTEVX
ZWJLaXRCcmlkZ2UuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1c
Z3JhcGhpY3NcYXZmb3VuZGF0aW9uXGNmXEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGLmNwcCIg
Lz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGF2Zm91bmRh
dGlvblxjZlxJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZDRi5jcHAiIC8+CisgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xhdmZvdW5kYXRpb25cSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxw
bGF0Zm9ybVxncmFwaGljc1xjYWlyb1xHTENvbnRleHQuY3BwIj4KICAgICAgIDxFeGNsdWRlZEZy
b21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVn
fFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVp
bGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9u
fFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CkBAIC0xMTg3NCw2ICsxMTg3Nyw5IEBA
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxGbG9hdENvbnZlcnNpb24uaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXEFOR0xFV2Vi
S2l0QnJpZGdlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFw
aGljc1xBdWRpb1RyYWNrUHJpdmF0ZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cGxhdGZvcm1cZ3JhcGhpY3NcYXZmb3VuZGF0aW9uXGNmXEluYmFuZFRleHRUcmFja1ByaXZhdGVB
VkNGLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xh
dmZvdW5kYXRpb25cY2ZcSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0YuaCIgLz4KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGF2Zm91bmRhdGlvblxJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxwbGF0Zm9ybVxncmFwaGljc1xjYWlyb1xHTENvbnRleHQuaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGNhaXJvXEdyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3Nc
Y2dcU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5oIj4KQEAgLTEzOTM5LDQgKzEzOTQ1LDQgQEAKICAg
PEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIg
Lz4KICAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KICAgPC9JbXBvcnRH
cm91cD4KLTwvUHJvamVjdD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZp
bHRlcnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNv
cmUudmN4cHJvai5maWx0ZXJzCShyZXZpc2lvbiAxNTI4NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMJKHdvcmtpbmcgY29weSkKQEAg
LTcwNjYsNiArNzA2NiwxNiBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1c
Z3JhcGhpY3NcZWdsXEdMQ29udGV4dEVHTC5jcHAiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxn
cmFwaGljc1xlZ2w8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmozMlwkKFByb2plY3ROYW1lKVxEZXJp
dmVkU291cmNlc1xKU1NWR0dyYXBoaWNzRWxlbWVudC5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xhdmZvdW5kYXRpb25cY2ZcSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUFWQ0YuY3BwIj4KKyAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cZ3JhcGhpY3NcYXZm
b3VuZGF0aW9uXGNmPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xhdmZvdW5kYXRpb25cSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUFWRi5jcHAiPgorICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxncmFwaGljc1xhdmZvdW5k
YXRpb248L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGF2Zm91bmRhdGlvblxjZlxJbmJhbmRUZXh0VHJhY2tQcml2
YXRlTGVnYWN5QVZDRi5jcHAiPgorICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxncmFwaGljc1xhdmZv
dW5kYXRpb25cY2Y8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgPC9JdGVtR3JvdXA+CiAg
IDxJdGVtR3JvdXA+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGZpbGVzeXN0
ZW1cQXN5bmNGaWxlV3JpdGVyLmgiPgpAQCAtMTQ4MTYsNiArMTQ4MjYsMTUgQEAKICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGVnbFxHTENvbnRleHRFR0wuaCI+
CiAgICAgICA8RmlsdGVyPnBsYXRmb3JtXGdyYXBoaWNzXGVnbDwvRmlsdGVyPgogICAgIDwvQ2xJ
bmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcYXZm
b3VuZGF0aW9uXGNmXEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGLmgiPgorICAgICAgPEZpbHRl
cj5wbGF0Zm9ybVxncmFwaGljc1xhdmZvdW5kYXRpb25cY2Y8L0ZpbHRlcj4KKyAgICA8L0NsSW5j
bHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGF2Zm91
bmRhdGlvblxJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmgiPgorICAgICAgPEZpbHRlcj5wbGF0
Zm9ybVxncmFwaGljc1xhdmZvdW5kYXRpb248L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGF2Zm91bmRhdGlvblxj
ZlxJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZDRi5oIj4KKyAgICAgIDxGaWx0ZXI+cGxh
dGZvcm1cZ3JhcGhpY3NcYXZmb3VuZGF0aW9uXGNmPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+
CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxOb25lIEluY2x1ZGU9Ii4uXGNz
c1xDU1NHcmFtbWFyLnkuaW4iPgpAQCAtMTU3NjAsNCArMTU3NzksNCBAQAogICAgICAgPEZpbHRl
cj5yZW5kZXJpbmc8L0ZpbHRlcj4KICAgICA8L0N1c3RvbUJ1aWxkU3RlcD4KICAgPC9JdGVtR3Jv
dXA+Ci08L1Byb2plY3Q+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVu
Y2VzTWVkaWFBRi5jcHAJKHJldmlzaW9uIDE1Mjg1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCw4
OSArNTgsNjUgQEAKICNlbmRpZgogCiAjaWYgSEFWRShNRURJQV9BQ0NFU1NJQklMSVRZX0ZSQU1F
V09SSykKKwogI2lmICFQTEFURk9STShXSU4pCi1TT0ZUX0xJTktfRlJBTUVXT1JLX09QVElPTkFM
KE1lZGlhQWNjZXNzaWJpbGl0eSkKKyNkZWZpbmUgU09GVF9MSU5LX0FWRl9GUkFNRVdPUksoTGli
KSBTT0ZUX0xJTktfRlJBTUVXT1JLX09QVElPTkFMKExpYikKKyNkZWZpbmUgU09GVF9MSU5LX0FW
RihMaWIsIE5hbWUsIFR5cGUpIFNPRlRfTElOSyhMaWIsIE5hbWUsIFR5cGUpCisjZGVmaW5lIFNP
RlRfTElOS19BVkZfUE9JTlRFUihMaWIsIE5hbWUsIFR5cGUpIFNPRlRfTElOS19QT0lOVEVSX09Q
VElPTkFMKExpYiwgTmFtZSwgVHlwZSkKKyNkZWZpbmUgU09GVF9MSU5LX0FWRl9GUkFNRVdPUktf
SU1QT1JUKExpYiwgRnVuLCBSZXR1cm5UeXBlLCBBcmd1bWVudHMsIFNpZ25hdHVyZSkgU09GVF9M
SU5LKExpYiwgRnVuLCBSZXR1cm5UeXBlLCBBcmd1bWVudHMsIFNpZ25hdHVyZSkKKyNlbHNlCisj
ZGVmaW5lIFNPRlRfTElOS19BVkZfRlJBTUVXT1JLKExpYikgU09GVF9MSU5LX0xJQlJBUlkoTGli
KQorI2RlZmluZSBTT0ZUX0xJTktfQVZGKExpYiwgTmFtZSwgVHlwZSkgU09GVF9MSU5LX0RMTF9J
TVBPUlQoTGliLCBOYW1lLCBUeXBlKQorI2RlZmluZSBTT0ZUX0xJTktfQVZGX1BPSU5URVIoTGli
LCBOYW1lLCBUeXBlKSBTT0ZUX0xJTktfVkFSSUFCTEVfRExMX0lNUE9SVF9PUFRJT05BTChMaWIs
IE5hbWUsIFR5cGUpCisjZGVmaW5lIFNPRlRfTElOS19BVkZfRlJBTUVXT1JLX0lNUE9SVChMaWIs
IEZ1biwgUmV0dXJuVHlwZSwgQXJndW1lbnRzLCBTaWduYXR1cmUpIFNPRlRfTElOS19ETExfSU1Q
T1JUKExpYiwgRnVuLCBSZXR1cm5UeXBlLCBfX2NkZWNsLCBBcmd1bWVudHMsIFNpZ25hdHVyZSkK
KyNlbmRpZgogCi1TT0ZUX0xJTksoTWVkaWFBY2Nlc3NpYmlsaXR5LCBNQUNhcHRpb25BcHBlYXJh
bmNlR2V0RGlzcGxheVR5cGUsIE1BQ2FwdGlvbkFwcGVhcmFuY2VEaXNwbGF5VHlwZSwgKE1BQ2Fw
dGlvbkFwcGVhcmFuY2VEb21haW4gZG9tYWluKSwgKGRvbWFpbikpCi1TT0ZUX0xJTksoTWVkaWFB
Y2Nlc3NpYmlsaXR5LCBNQUNhcHRpb25BcHBlYXJhbmNlU2V0RGlzcGxheVR5cGUsIHZvaWQsIChN
QUNhcHRpb25BcHBlYXJhbmNlRG9tYWluIGRvbWFpbiwgTUFDYXB0aW9uQXBwZWFyYW5jZURpc3Bs
YXlUeXBlIGRpc3BsYXlUeXBlKSwgKGRvbWFpbiwgZGlzcGxheVR5cGUpKQotU09GVF9MSU5LKE1l
ZGlhQWNjZXNzaWJpbGl0eSwgTUFDYXB0aW9uQXBwZWFyYW5jZUNvcHlGb3JlZ3JvdW5kQ29sb3Is
IENHQ29sb3JSZWYsIChNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluIGRvbWFpbiwgTUFDYXB0aW9u
QXBwZWFyYW5jZUJlaGF2aW9yICpiZWhhdmlvciksIChkb21haW4sIGJlaGF2aW9yKSkKLVNPRlRf
TElOSyhNZWRpYUFjY2Vzc2liaWxpdHksIE1BQ2FwdGlvbkFwcGVhcmFuY2VDb3B5QmFja2dyb3Vu
ZENvbG9yLCBDR0NvbG9yUmVmLCAoTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpbiBkb21haW4sIE1B
Q2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvciAqYmVoYXZpb3IpLCAoZG9tYWluLCBiZWhhdmlvcikp
Ci1TT0ZUX0xJTksoTWVkaWFBY2Nlc3NpYmlsaXR5LCBNQUNhcHRpb25BcHBlYXJhbmNlQ29weVdp
bmRvd0NvbG9yLCBDR0NvbG9yUmVmLCAoTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpbiBkb21haW4s
IE1BQ2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvciAqYmVoYXZpb3IpLCAoZG9tYWluLCBiZWhhdmlv
cikpCi1TT0ZUX0xJTksoTWVkaWFBY2Nlc3NpYmlsaXR5LCBNQUNhcHRpb25BcHBlYXJhbmNlR2V0
Rm9yZWdyb3VuZE9wYWNpdHksIENHRmxvYXQsIChNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluIGRv
bWFpbiwgTUFDYXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9yICpiZWhhdmlvciksIChkb21haW4sIGJl
aGF2aW9yKSkKLVNPRlRfTElOSyhNZWRpYUFjY2Vzc2liaWxpdHksIE1BQ2FwdGlvbkFwcGVhcmFu
Y2VHZXRCYWNrZ3JvdW5kT3BhY2l0eSwgQ0dGbG9hdCwgKE1BQ2FwdGlvbkFwcGVhcmFuY2VEb21h
aW4gZG9tYWluLCBNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3IgKmJlaGF2aW9yKSwgKGRvbWFp
biwgYmVoYXZpb3IpKQotU09GVF9MSU5LKE1lZGlhQWNjZXNzaWJpbGl0eSwgTUFDYXB0aW9uQXBw
ZWFyYW5jZUdldFdpbmRvd09wYWNpdHksIENHRmxvYXQsIChNQUNhcHRpb25BcHBlYXJhbmNlRG9t
YWluIGRvbWFpbiwgTUFDYXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9yICpiZWhhdmlvciksIChkb21h
aW4sIGJlaGF2aW9yKSkKLVNPRlRfTElOSyhNZWRpYUFjY2Vzc2liaWxpdHksIE1BQ2FwdGlvbkFw
cGVhcmFuY2VHZXRXaW5kb3dSb3VuZGVkQ29ybmVyUmFkaXVzLCBDR0Zsb2F0LCAoTUFDYXB0aW9u
QXBwZWFyYW5jZURvbWFpbiBkb21haW4sIE1BQ2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvciAqYmVo
YXZpb3IpLCAoZG9tYWluLCBiZWhhdmlvcikpCi1TT0ZUX0xJTksoTWVkaWFBY2Nlc3NpYmlsaXR5
LCBNQUNhcHRpb25BcHBlYXJhbmNlQ29weUZvbnREZXNjcmlwdG9yRm9yU3R5bGUsIENURm9udERl
c2NyaXB0b3JSZWYsIChNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluIGRvbWFpbiwgIE1BQ2FwdGlv
bkFwcGVhcmFuY2VCZWhhdmlvciAqYmVoYXZpb3IsIE1BQ2FwdGlvbkFwcGVhcmFuY2VGb250U3R5
bGUgZm9udFN0eWxlKSwgKGRvbWFpbiwgYmVoYXZpb3IsIGZvbnRTdHlsZSkpCi1TT0ZUX0xJTkso
TWVkaWFBY2Nlc3NpYmlsaXR5LCBNQUNhcHRpb25BcHBlYXJhbmNlR2V0UmVsYXRpdmVDaGFyYWN0
ZXJTaXplLCBDR0Zsb2F0LCAoTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpbiBkb21haW4sIE1BQ2Fw
dGlvbkFwcGVhcmFuY2VCZWhhdmlvciAqYmVoYXZpb3IpLCAoZG9tYWluLCBiZWhhdmlvcikpCi1T
T0ZUX0xJTksoTWVkaWFBY2Nlc3NpYmlsaXR5LCBNQUNhcHRpb25BcHBlYXJhbmNlR2V0VGV4dEVk
Z2VTdHlsZSwgTUFDYXB0aW9uQXBwZWFyYW5jZVRleHRFZGdlU3R5bGUsIChNQUNhcHRpb25BcHBl
YXJhbmNlRG9tYWluIGRvbWFpbiwgTUFDYXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9yICpiZWhhdmlv
ciksIChkb21haW4sIGJlaGF2aW9yKSkKLVNPRlRfTElOSyhNZWRpYUFjY2Vzc2liaWxpdHksIE1B
Q2FwdGlvbkFwcGVhcmFuY2VBZGRTZWxlY3RlZExhbmd1YWdlLCBib29sLCAoTUFDYXB0aW9uQXBw
ZWFyYW5jZURvbWFpbiBkb21haW4sIENGU3RyaW5nUmVmIGxhbmd1YWdlKSwgKGRvbWFpbiwgbGFu
Z3VhZ2UpKTsKLVNPRlRfTElOSyhNZWRpYUFjY2Vzc2liaWxpdHksIE1BQ2FwdGlvbkFwcGVhcmFu
Y2VDb3B5U2VsZWN0ZWRMYW5ndWFnZXMsIENGQXJyYXlSZWYsIChNQUNhcHRpb25BcHBlYXJhbmNl
RG9tYWluIGRvbWFpbiksIChkb21haW4pKTsKLVNPRlRfTElOSyhNZWRpYUFjY2Vzc2liaWxpdHks
IE1BQ2FwdGlvbkFwcGVhcmFuY2VDb3B5UHJlZmVycmVkQ2FwdGlvbmluZ01lZGlhQ2hhcmFjdGVy
aXN0aWNzLCAgQ0ZBcnJheVJlZiwgKE1BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW4gZG9tYWluKSwg
KGRvbWFpbikpOworU09GVF9MSU5LX0FWRl9GUkFNRVdPUksoTWVkaWFBY2Nlc3NpYmlsaXR5KQor
U09GVF9MSU5LX0FWRl9GUkFNRVdPUksoQ29yZVRleHQpCiAKLVNPRlRfTElOS19QT0lOVEVSKE1l
ZGlhQWNjZXNzaWJpbGl0eSwga01BWENhcHRpb25BcHBlYXJhbmNlU2V0dGluZ3NDaGFuZ2VkTm90
aWZpY2F0aW9uLCBDRlN0cmluZ1JlZikKLSNkZWZpbmUga01BWENhcHRpb25BcHBlYXJhbmNlU2V0
dGluZ3NDaGFuZ2VkTm90aWZpY2F0aW9uIGdldGtNQVhDYXB0aW9uQXBwZWFyYW5jZVNldHRpbmdz
Q2hhbmdlZE5vdGlmaWNhdGlvbigpCitTT0ZUX0xJTktfQVZGX0ZSQU1FV09SS19JTVBPUlQoTWVk
aWFBY2Nlc3NpYmlsaXR5LCBNQUNhcHRpb25BcHBlYXJhbmNlR2V0RGlzcGxheVR5cGUsIE1BQ2Fw
dGlvbkFwcGVhcmFuY2VEaXNwbGF5VHlwZSwgKE1BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW4gZG9t
YWluKSwgKGRvbWFpbikpCitTT0ZUX0xJTktfQVZGX0ZSQU1FV09SS19JTVBPUlQoTWVkaWFBY2Nl
c3NpYmlsaXR5LCBNQUNhcHRpb25BcHBlYXJhbmNlU2V0RGlzcGxheVR5cGUsIHZvaWQsIChNQUNh
cHRpb25BcHBlYXJhbmNlRG9tYWluIGRvbWFpbiwgTUFDYXB0aW9uQXBwZWFyYW5jZURpc3BsYXlU
eXBlIGRpc3BsYXlUeXBlKSwgKGRvbWFpbiwgZGlzcGxheVR5cGUpKQorU09GVF9MSU5LX0FWRl9G
UkFNRVdPUktfSU1QT1JUKE1lZGlhQWNjZXNzaWJpbGl0eSwgTUFDYXB0aW9uQXBwZWFyYW5jZUNv
cHlGb3JlZ3JvdW5kQ29sb3IsIENHQ29sb3JSZWYsIChNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWlu
IGRvbWFpbiwgTUFDYXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9yICpiZWhhdmlvciksIChkb21haW4s
IGJlaGF2aW9yKSkKK1NPRlRfTElOS19BVkZfRlJBTUVXT1JLX0lNUE9SVChNZWRpYUFjY2Vzc2li
aWxpdHksIE1BQ2FwdGlvbkFwcGVhcmFuY2VDb3B5QmFja2dyb3VuZENvbG9yLCBDR0NvbG9yUmVm
LCAoTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpbiBkb21haW4sIE1BQ2FwdGlvbkFwcGVhcmFuY2VC
ZWhhdmlvciAqYmVoYXZpb3IpLCAoZG9tYWluLCBiZWhhdmlvcikpCitTT0ZUX0xJTktfQVZGX0ZS
QU1FV09SS19JTVBPUlQoTWVkaWFBY2Nlc3NpYmlsaXR5LCBNQUNhcHRpb25BcHBlYXJhbmNlQ29w
eVdpbmRvd0NvbG9yLCBDR0NvbG9yUmVmLCAoTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpbiBkb21h
aW4sIE1BQ2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvciAqYmVoYXZpb3IpLCAoZG9tYWluLCBiZWhh
dmlvcikpCitTT0ZUX0xJTktfQVZGX0ZSQU1FV09SS19JTVBPUlQoTWVkaWFBY2Nlc3NpYmlsaXR5
LCBNQUNhcHRpb25BcHBlYXJhbmNlR2V0Rm9yZWdyb3VuZE9wYWNpdHksIENHRmxvYXQsIChNQUNh
cHRpb25BcHBlYXJhbmNlRG9tYWluIGRvbWFpbiwgTUFDYXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9y
ICpiZWhhdmlvciksIChkb21haW4sIGJlaGF2aW9yKSkKK1NPRlRfTElOS19BVkZfRlJBTUVXT1JL
X0lNUE9SVChNZWRpYUFjY2Vzc2liaWxpdHksIE1BQ2FwdGlvbkFwcGVhcmFuY2VHZXRCYWNrZ3Jv
dW5kT3BhY2l0eSwgQ0dGbG9hdCwgKE1BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW4gZG9tYWluLCBN
QUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3IgKmJlaGF2aW9yKSwgKGRvbWFpbiwgYmVoYXZpb3Ip
KQorU09GVF9MSU5LX0FWRl9GUkFNRVdPUktfSU1QT1JUKE1lZGlhQWNjZXNzaWJpbGl0eSwgTUFD
YXB0aW9uQXBwZWFyYW5jZUdldFdpbmRvd09wYWNpdHksIENHRmxvYXQsIChNQUNhcHRpb25BcHBl
YXJhbmNlRG9tYWluIGRvbWFpbiwgTUFDYXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9yICpiZWhhdmlv
ciksIChkb21haW4sIGJlaGF2aW9yKSkKK1NPRlRfTElOS19BVkZfRlJBTUVXT1JLX0lNUE9SVChN
ZWRpYUFjY2Vzc2liaWxpdHksIE1BQ2FwdGlvbkFwcGVhcmFuY2VHZXRXaW5kb3dSb3VuZGVkQ29y
bmVyUmFkaXVzLCBDR0Zsb2F0LCAoTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpbiBkb21haW4sIE1B
Q2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvciAqYmVoYXZpb3IpLCAoZG9tYWluLCBiZWhhdmlvcikp
CitTT0ZUX0xJTktfQVZGX0ZSQU1FV09SS19JTVBPUlQoTWVkaWFBY2Nlc3NpYmlsaXR5LCBNQUNh
cHRpb25BcHBlYXJhbmNlQ29weUZvbnREZXNjcmlwdG9yRm9yU3R5bGUsIENURm9udERlc2NyaXB0
b3JSZWYsIChNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluIGRvbWFpbiwgIE1BQ2FwdGlvbkFwcGVh
cmFuY2VCZWhhdmlvciAqYmVoYXZpb3IsIE1BQ2FwdGlvbkFwcGVhcmFuY2VGb250U3R5bGUgZm9u
dFN0eWxlKSwgKGRvbWFpbiwgYmVoYXZpb3IsIGZvbnRTdHlsZSkpCitTT0ZUX0xJTktfQVZGX0ZS
QU1FV09SS19JTVBPUlQoTWVkaWFBY2Nlc3NpYmlsaXR5LCBNQUNhcHRpb25BcHBlYXJhbmNlR2V0
UmVsYXRpdmVDaGFyYWN0ZXJTaXplLCBDR0Zsb2F0LCAoTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFp
biBkb21haW4sIE1BQ2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvciAqYmVoYXZpb3IpLCAoZG9tYWlu
LCBiZWhhdmlvcikpCitTT0ZUX0xJTktfQVZGX0ZSQU1FV09SS19JTVBPUlQoTWVkaWFBY2Nlc3Np
YmlsaXR5LCBNQUNhcHRpb25BcHBlYXJhbmNlR2V0VGV4dEVkZ2VTdHlsZSwgTUFDYXB0aW9uQXBw
ZWFyYW5jZVRleHRFZGdlU3R5bGUsIChNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluIGRvbWFpbiwg
TUFDYXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9yICpiZWhhdmlvciksIChkb21haW4sIGJlaGF2aW9y
KSkKK1NPRlRfTElOS19BVkZfRlJBTUVXT1JLX0lNUE9SVChNZWRpYUFjY2Vzc2liaWxpdHksIE1B
Q2FwdGlvbkFwcGVhcmFuY2VBZGRTZWxlY3RlZExhbmd1YWdlLCBib29sLCAoTUFDYXB0aW9uQXBw
ZWFyYW5jZURvbWFpbiBkb21haW4sIENGU3RyaW5nUmVmIGxhbmd1YWdlKSwgKGRvbWFpbiwgbGFu
Z3VhZ2UpKTsKK1NPRlRfTElOS19BVkZfRlJBTUVXT1JLX0lNUE9SVChNZWRpYUFjY2Vzc2liaWxp
dHksIE1BQ2FwdGlvbkFwcGVhcmFuY2VDb3B5U2VsZWN0ZWRMYW5ndWFnZXMsIENGQXJyYXlSZWYs
IChNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluIGRvbWFpbiksIChkb21haW4pKTsKK1NPRlRfTElO
S19BVkZfRlJBTUVXT1JLX0lNUE9SVChNZWRpYUFjY2Vzc2liaWxpdHksIE1BQ2FwdGlvbkFwcGVh
cmFuY2VDb3B5UHJlZmVycmVkQ2FwdGlvbmluZ01lZGlhQ2hhcmFjdGVyaXN0aWNzLCAgQ0ZBcnJh
eVJlZiwgKE1BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW4gZG9tYWluKSwgKGRvbWFpbikpOwogCi0j
ZWxzZQotU09GVF9MSU5LX0xJQlJBUlkoTWVkaWFBY2Nlc3NpYmlsaXR5KQorU09GVF9MSU5LX0FW
Rl9GUkFNRVdPUktfSU1QT1JUKENvcmVUZXh0LCBDVEZvbnREZXNjcmlwdG9yQ29weUF0dHJpYnV0
ZSwgIENGVHlwZVJlZiwgKENURm9udERlc2NyaXB0b3JSZWYgZGVzY3JpcHRvciwgQ0ZTdHJpbmdS
ZWYgYXR0cmlidXRlKSwgKGRlc2NyaXB0b3IsIGF0dHJpYnV0ZSkpOwogCi1TT0ZUX0xJTktfRExM
X0lNUE9SVChNZWRpYUFjY2Vzc2liaWxpdHksIE1BQ2FwdGlvbkFwcGVhcmFuY2VHZXREaXNwbGF5
VHlwZSwgTUFDYXB0aW9uQXBwZWFyYW5jZURpc3BsYXlUeXBlLCBfX2NkZWNsLCAoTUFDYXB0aW9u
QXBwZWFyYW5jZURvbWFpbiBkb21haW4pLCAoZG9tYWluKSkKKyNpZiBQTEFURk9STShXSU4pCisv
LyBUaGVzZSBhcmUgbmVlZGVkIG9uIFdpbmRvd3MgZHVlIHRvIHRoZSB3YXkgRExMcyB3b3JrLiBX
ZSBkbyBub3QgbmVlZCB0aGVtIG9uIG90aGVyIHBsYXRmb3JtcwogI2RlZmluZSBNQUNhcHRpb25B
cHBlYXJhbmNlR2V0RGlzcGxheVR5cGUgc29mdExpbmtfTUFDYXB0aW9uQXBwZWFyYW5jZUdldERp
c3BsYXlUeXBlCi0KLVNPRlRfTElOS19ETExfSU1QT1JUKE1lZGlhQWNjZXNzaWJpbGl0eSwgTUFD
YXB0aW9uQXBwZWFyYW5jZVNldERpc3BsYXlUeXBlLCB2b2lkLCBfX2NkZWNsLCAoTUFDYXB0aW9u
QXBwZWFyYW5jZURvbWFpbiBkb21haW4sIE1BQ2FwdGlvbkFwcGVhcmFuY2VEaXNwbGF5VHlwZSBk
aXNwbGF5VHlwZSksIChkb21haW4sIGRpc3BsYXlUeXBlKSkKICNkZWZpbmUgTUFDYXB0aW9uQXBw
ZWFyYW5jZVNldERpc3BsYXlUeXBlIHNvZnRMaW5rX01BQ2FwdGlvbkFwcGVhcmFuY2VTZXREaXNw
bGF5VHlwZQotCi1TT0ZUX0xJTktfRExMX0lNUE9SVChNZWRpYUFjY2Vzc2liaWxpdHksIE1BQ2Fw
dGlvbkFwcGVhcmFuY2VDb3B5Rm9yZWdyb3VuZENvbG9yLCBDR0NvbG9yUmVmLCBfX2NkZWNsLCAo
TUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpbiBkb21haW4sIE1BQ2FwdGlvbkFwcGVhcmFuY2VCZWhh
dmlvciAqYmVoYXZpb3IpLCAoZG9tYWluLCBiZWhhdmlvcikpCiAjZGVmaW5lIE1BQ2FwdGlvbkFw
cGVhcmFuY2VDb3B5Rm9yZWdyb3VuZENvbG9yIHNvZnRMaW5rX01BQ2FwdGlvbkFwcGVhcmFuY2VD
b3B5Rm9yZWdyb3VuZENvbG9yCi0KLVNPRlRfTElOS19ETExfSU1QT1JUKE1lZGlhQWNjZXNzaWJp
bGl0eSwgTUFDYXB0aW9uQXBwZWFyYW5jZUNvcHlCYWNrZ3JvdW5kQ29sb3IsIENHQ29sb3JSZWYs
IF9fY2RlY2wsIChNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluIGRvbWFpbiwgTUFDYXB0aW9uQXBw
ZWFyYW5jZUJlaGF2aW9yICpiZWhhdmlvciksIChkb21haW4sIGJlaGF2aW9yKSkKICNkZWZpbmUg
TUFDYXB0aW9uQXBwZWFyYW5jZUNvcHlCYWNrZ3JvdW5kQ29sb3Igc29mdExpbmtfTUFDYXB0aW9u
QXBwZWFyYW5jZUNvcHlCYWNrZ3JvdW5kQ29sb3IKLQotU09GVF9MSU5LX0RMTF9JTVBPUlQoTWVk
aWFBY2Nlc3NpYmlsaXR5LCBNQUNhcHRpb25BcHBlYXJhbmNlQ29weVdpbmRvd0NvbG9yLCBDR0Nv
bG9yUmVmLCBfX2NkZWNsLCAoTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpbiBkb21haW4sIE1BQ2Fw
dGlvbkFwcGVhcmFuY2VCZWhhdmlvciAqYmVoYXZpb3IpLCAoZG9tYWluLCBiZWhhdmlvcikpCiAj
ZGVmaW5lIE1BQ2FwdGlvbkFwcGVhcmFuY2VDb3B5V2luZG93Q29sb3Igc29mdExpbmtfTUFDYXB0
aW9uQXBwZWFyYW5jZUNvcHlXaW5kb3dDb2xvcgotCi1TT0ZUX0xJTktfRExMX0lNUE9SVChNZWRp
YUFjY2Vzc2liaWxpdHksIE1BQ2FwdGlvbkFwcGVhcmFuY2VHZXRGb3JlZ3JvdW5kT3BhY2l0eSwg
Q0dGbG9hdCwgX19jZGVjbCwgKE1BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW4gZG9tYWluLCBNQUNh
cHRpb25BcHBlYXJhbmNlQmVoYXZpb3IgKmJlaGF2aW9yKSwgKGRvbWFpbiwgYmVoYXZpb3IpKQog
I2RlZmluZSBNQUNhcHRpb25BcHBlYXJhbmNlR2V0Rm9yZWdyb3VuZE9wYWNpdHkgc29mdExpbmtf
TUFDYXB0aW9uQXBwZWFyYW5jZUdldEZvcmVncm91bmRPcGFjaXR5Ci0KLVNPRlRfTElOS19ETExf
SU1QT1JUKE1lZGlhQWNjZXNzaWJpbGl0eSwgTUFDYXB0aW9uQXBwZWFyYW5jZUdldEJhY2tncm91
bmRPcGFjaXR5LCBDR0Zsb2F0LCBfX2NkZWNsLCAoTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpbiBk
b21haW4sIE1BQ2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvciAqYmVoYXZpb3IpLCAoZG9tYWluLCBi
ZWhhdmlvcikpCiAjZGVmaW5lIE1BQ2FwdGlvbkFwcGVhcmFuY2VHZXRCYWNrZ3JvdW5kT3BhY2l0
eSBzb2Z0TGlua19NQUNhcHRpb25BcHBlYXJhbmNlR2V0QmFja2dyb3VuZE9wYWNpdHkKLQotU09G
VF9MSU5LX0RMTF9JTVBPUlQoTWVkaWFBY2Nlc3NpYmlsaXR5LCBNQUNhcHRpb25BcHBlYXJhbmNl
R2V0V2luZG93T3BhY2l0eSwgQ0dGbG9hdCwgX19jZGVjbCwgKE1BQ2FwdGlvbkFwcGVhcmFuY2VE
b21haW4gZG9tYWluLCBNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3IgKmJlaGF2aW9yKSwgKGRv
bWFpbiwgYmVoYXZpb3IpKQogI2RlZmluZSBNQUNhcHRpb25BcHBlYXJhbmNlR2V0V2luZG93T3Bh
Y2l0eSBzb2Z0TGlua19NQUNhcHRpb25BcHBlYXJhbmNlR2V0V2luZG93T3BhY2l0eQotCi1TT0ZU
X0xJTktfRExMX0lNUE9SVChNZWRpYUFjY2Vzc2liaWxpdHksIE1BQ2FwdGlvbkFwcGVhcmFuY2VH
ZXRXaW5kb3dSb3VuZGVkQ29ybmVyUmFkaXVzLCBDR0Zsb2F0LCBfX2NkZWNsLCAoTUFDYXB0aW9u
QXBwZWFyYW5jZURvbWFpbiBkb21haW4sIE1BQ2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvciAqYmVo
YXZpb3IpLCAoZG9tYWluLCBiZWhhdmlvcikpCiAjZGVmaW5lIE1BQ2FwdGlvbkFwcGVhcmFuY2VH
ZXRXaW5kb3dSb3VuZGVkQ29ybmVyUmFkaXVzIHNvZnRMaW5rX01BQ2FwdGlvbkFwcGVhcmFuY2VH
ZXRXaW5kb3dSb3VuZGVkQ29ybmVyUmFkaXVzCi0KLVNPRlRfTElOS19ETExfSU1QT1JUKE1lZGlh
QWNjZXNzaWJpbGl0eSwgTUFDYXB0aW9uQXBwZWFyYW5jZUNvcHlGb250RGVzY3JpcHRvckZvclN0
eWxlLCBDVEZvbnREZXNjcmlwdG9yUmVmLCBfX2NkZWNsLCAoTUFDYXB0aW9uQXBwZWFyYW5jZURv
bWFpbiBkb21haW4sICBNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3IgKmJlaGF2aW9yLCBNQUNh
cHRpb25BcHBlYXJhbmNlRm9udFN0eWxlIGZvbnRTdHlsZSksIChkb21haW4sIGJlaGF2aW9yLCBm
b250U3R5bGUpKQogI2RlZmluZSBNQUNhcHRpb25BcHBlYXJhbmNlQ29weUZvbnREZXNjcmlwdG9y
Rm9yU3R5bGUgc29mdExpbmtfTUFDYXB0aW9uQXBwZWFyYW5jZUNvcHlGb250RGVzY3JpcHRvckZv
clN0eWxlCi0KLVNPRlRfTElOS19ETExfSU1QT1JUKE1lZGlhQWNjZXNzaWJpbGl0eSwgTUFDYXB0
aW9uQXBwZWFyYW5jZUdldFJlbGF0aXZlQ2hhcmFjdGVyU2l6ZSwgQ0dGbG9hdCwgX19jZGVjbCwg
KE1BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW4gZG9tYWluLCBNQUNhcHRpb25BcHBlYXJhbmNlQmVo
YXZpb3IgKmJlaGF2aW9yKSwgKGRvbWFpbiwgYmVoYXZpb3IpKQogI2RlZmluZSBNQUNhcHRpb25B
cHBlYXJhbmNlR2V0UmVsYXRpdmVDaGFyYWN0ZXJTaXplIHNvZnRMaW5rX01BQ2FwdGlvbkFwcGVh
cmFuY2VHZXRSZWxhdGl2ZUNoYXJhY3RlclNpemUKLQotU09GVF9MSU5LX0RMTF9JTVBPUlQoTWVk
aWFBY2Nlc3NpYmlsaXR5LCBNQUNhcHRpb25BcHBlYXJhbmNlR2V0VGV4dEVkZ2VTdHlsZSwgTUFD
YXB0aW9uQXBwZWFyYW5jZVRleHRFZGdlU3R5bGUsIF9fY2RlY2wsIChNQUNhcHRpb25BcHBlYXJh
bmNlRG9tYWluIGRvbWFpbiwgTUFDYXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9yICpiZWhhdmlvciks
IChkb21haW4sIGJlaGF2aW9yKSkKICNkZWZpbmUgTUFDYXB0aW9uQXBwZWFyYW5jZUdldFRleHRF
ZGdlU3R5bGUgc29mdExpbmtfTUFDYXB0aW9uQXBwZWFyYW5jZUdldFRleHRFZGdlU3R5bGUKLQot
U09GVF9MSU5LX0RMTF9JTVBPUlQoTWVkaWFBY2Nlc3NpYmlsaXR5LCBNQUNhcHRpb25BcHBlYXJh
bmNlQWRkU2VsZWN0ZWRMYW5ndWFnZSwgYm9vbCwgX19jZGVjbCwgKE1BQ2FwdGlvbkFwcGVhcmFu
Y2VEb21haW4gZG9tYWluLCBDRlN0cmluZ1JlZiBsYW5ndWFnZSksIChkb21haW4sIGxhbmd1YWdl
KSk7CiAjZGVmaW5lIE1BQ2FwdGlvbkFwcGVhcmFuY2VBZGRTZWxlY3RlZExhbmd1YWdlIHNvZnRM
aW5rX01BQ2FwdGlvbkFwcGVhcmFuY2VBZGRTZWxlY3RlZExhbmd1YWdlCi0KLVNPRlRfTElOS19E
TExfSU1QT1JUKE1lZGlhQWNjZXNzaWJpbGl0eSwgTUFDYXB0aW9uQXBwZWFyYW5jZUNvcHlTZWxl
Y3RlZExhbmd1YWdlcywgQ0ZBcnJheVJlZiwgX19jZGVjbCwgKE1BQ2FwdGlvbkFwcGVhcmFuY2VE
b21haW4gZG9tYWluKSwgKGRvbWFpbikpOwogI2RlZmluZSBNQUNhcHRpb25BcHBlYXJhbmNlQ29w
eVNlbGVjdGVkTGFuZ3VhZ2VzIHNvZnRMaW5rX01BQ2FwdGlvbkFwcGVhcmFuY2VDb3B5U2VsZWN0
ZWRMYW5ndWFnZXMKLQotU09GVF9MSU5LX0RMTF9JTVBPUlQoTWVkaWFBY2Nlc3NpYmlsaXR5LCBN
QUNhcHRpb25BcHBlYXJhbmNlQ29weVByZWZlcnJlZENhcHRpb25pbmdNZWRpYUNoYXJhY3Rlcmlz
dGljcywgIENGQXJyYXlSZWYsIF9fY2RlY2wsIChNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluIGRv
bWFpbiksIChkb21haW4pKTsKICNkZWZpbmUgTUFDYXB0aW9uQXBwZWFyYW5jZUNvcHlQcmVmZXJy
ZWRDYXB0aW9uaW5nTWVkaWFDaGFyYWN0ZXJpc3RpY3Mgc29mdExpbmtfTUFDYXB0aW9uQXBwZWFy
YW5jZUNvcHlQcmVmZXJyZWRDYXB0aW9uaW5nTWVkaWFDaGFyYWN0ZXJpc3RpY3MKLQotU09GVF9M
SU5LX1ZBUklBQkxFX0RMTF9JTVBPUlQoTWVkaWFBY2Nlc3NpYmlsaXR5LCBrTUFYQ2FwdGlvbkFw
cGVhcmFuY2VTZXR0aW5nc0NoYW5nZWROb3RpZmljYXRpb24sIENGU3RyaW5nUmVmKQotI2RlZmlu
ZSBrTUFYQ2FwdGlvbkFwcGVhcmFuY2VTZXR0aW5nc0NoYW5nZWROb3RpZmljYXRpb24gZ2V0X2tN
QVhDYXB0aW9uQXBwZWFyYW5jZVNldHRpbmdzQ2hhbmdlZE5vdGlmaWNhdGlvbigpCi0KLVNPRlRf
TElOS19MSUJSQVJZKENvcmVUZXh0KQotCi1TT0ZUX0xJTktfRExMX0lNUE9SVChDb3JlVGV4dCwg
Q1RGb250RGVzY3JpcHRvckNvcHlBdHRyaWJ1dGUsICBDRlR5cGVSZWYsIF9fY2RlY2wsIChDVEZv
bnREZXNjcmlwdG9yUmVmIGRlc2NyaXB0b3IsIENGU3RyaW5nUmVmIGF0dHJpYnV0ZSksIChkZXNj
cmlwdG9yLCBhdHRyaWJ1dGUpKTsKICNkZWZpbmUgQ1RGb250RGVzY3JpcHRvckNvcHlBdHRyaWJ1
dGUgc29mdExpbmtfQ1RGb250RGVzY3JpcHRvckNvcHlBdHRyaWJ1dGUKLQotU09GVF9MSU5LX1ZB
UklBQkxFX0RMTF9JTVBPUlQoQ29yZVRleHQsIGtDVEZvbnROYW1lQXR0cmlidXRlLCBDRlN0cmlu
Z1JlZikKLSNkZWZpbmUga0NURm9udE5hbWVBdHRyaWJ1dGUgZ2V0X2tDVEZvbnROYW1lQXR0cmli
dXRlKCkKLQogI2VuZGlmCiAKK1NPRlRfTElOS19BVkZfUE9JTlRFUihNZWRpYUFjY2Vzc2liaWxp
dHksIGtNQVhDYXB0aW9uQXBwZWFyYW5jZVNldHRpbmdzQ2hhbmdlZE5vdGlmaWNhdGlvbiwgQ0ZT
dHJpbmdSZWYpCisjZGVmaW5lIGtNQVhDYXB0aW9uQXBwZWFyYW5jZVNldHRpbmdzQ2hhbmdlZE5v
dGlmaWNhdGlvbiBnZXRrTUFYQ2FwdGlvbkFwcGVhcmFuY2VTZXR0aW5nc0NoYW5nZWROb3RpZmlj
YXRpb24oKQorCitTT0ZUX0xJTktfQVZGX1BPSU5URVIoQ29yZVRleHQsIGtDVEZvbnROYW1lQXR0
cmlidXRlLCBDRlN0cmluZ1JlZikKKyNkZWZpbmUga0NURm9udE5hbWVBdHRyaWJ1dGUgZ2V0a0NU
Rm9udE5hbWVBdHRyaWJ1dGUoKQogI2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWRi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwCShy
ZXZpc2lvbiAxNTI4NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI1LDcgKzI1LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogCi0jaWYgRU5BQkxFKFZJREVP
KSAmJiAoKFVTRShBVkZPVU5EQVRJT04pICYmICFQTEFURk9STShXSU4pKSB8fCBQTEFURk9STShJ
T1MpKQorI2lmIEVOQUJMRShWSURFTykgJiYgKFVTRShBVkZPVU5EQVRJT04pIHx8IFBMQVRGT1JN
KElPUykpCiAKICNpbmNsdWRlICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmgiCiAKQEAgLTM4
LDI3ICszOCwzNSBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogI2luY2x1ZGUg
PHd0Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+CiAKLVNPRlRfTElOS19GUkFNRVdPUktfT1BU
SU9OQUwoQ29yZU1lZGlhKQotCi1TT0ZUX0xJTktfUE9JTlRFUl9PUFRJT05BTChDb3JlTWVkaWEs
IGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfQWxpZ25tZW50LCBDRlN0cmluZ1JlZikKLVNPRlRfTElO
S19QT0lOVEVSX09QVElPTkFMKENvcmVNZWRpYSwga0NNVGV4dE1hcmt1cEFsaWdubWVudFR5cGVf
U3RhcnQsIENGU3RyaW5nUmVmKQotU09GVF9MSU5LX1BPSU5URVJfT1BUSU9OQUwoQ29yZU1lZGlh
LCBrQ01UZXh0TWFya3VwQWxpZ25tZW50VHlwZV9NaWRkbGUsIENGU3RyaW5nUmVmKQotU09GVF9M
SU5LX1BPSU5URVJfT1BUSU9OQUwoQ29yZU1lZGlhLCBrQ01UZXh0TWFya3VwQWxpZ25tZW50VHlw
ZV9FbmQsIENGU3RyaW5nUmVmKQotU09GVF9MSU5LX1BPSU5URVJfT1BUSU9OQUwoQ29yZU1lZGlh
LCBrQ01UZXh0TWFya3VwQXR0cmlidXRlX0JvbGRTdHlsZSwgQ0ZTdHJpbmdSZWYpCi1TT0ZUX0xJ
TktfUE9JTlRFUl9PUFRJT05BTChDb3JlTWVkaWEsIGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfSXRh
bGljU3R5bGUsIENGU3RyaW5nUmVmKQotU09GVF9MSU5LX1BPSU5URVJfT1BUSU9OQUwoQ29yZU1l
ZGlhLCBrQ01UZXh0TWFya3VwQXR0cmlidXRlX1VuZGVybGluZVN0eWxlLCBDRlN0cmluZ1JlZikK
LVNPRlRfTElOS19QT0lOVEVSX09QVElPTkFMKENvcmVNZWRpYSwga0NNVGV4dE1hcmt1cEF0dHJp
YnV0ZV9UZXh0UG9zaXRpb25QZXJjZW50YWdlUmVsYXRpdmVUb1dyaXRpbmdEaXJlY3Rpb24sIENG
U3RyaW5nUmVmKQotU09GVF9MSU5LX1BPSU5URVJfT1BUSU9OQUwoQ29yZU1lZGlhLCBrQ01UZXh0
TWFya3VwQXR0cmlidXRlX1dyaXRpbmdEaXJlY3Rpb25TaXplUGVyY2VudGFnZSwgQ0ZTdHJpbmdS
ZWYpCi1TT0ZUX0xJTktfUE9JTlRFUl9PUFRJT05BTChDb3JlTWVkaWEsIGtDTVRleHRNYXJrdXBB
dHRyaWJ1dGVfT3J0aG9nb25hbExpbmVQb3NpdGlvblBlcmNlbnRhZ2VSZWxhdGl2ZVRvV3JpdGlu
Z0RpcmVjdGlvbiwgQ0ZTdHJpbmdSZWYpCi1TT0ZUX0xJTktfUE9JTlRFUl9PUFRJT05BTChDb3Jl
TWVkaWEsIGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfVmVydGljYWxMYXlvdXQsIENGU3RyaW5nUmVm
KQotU09GVF9MSU5LX1BPSU5URVJfT1BUSU9OQUwoQ29yZU1lZGlhLCBrQ01UZXh0VmVydGljYWxM
YXlvdXRfTGVmdFRvUmlnaHQsIENGU3RyaW5nUmVmKQotU09GVF9MSU5LX1BPSU5URVJfT1BUSU9O
QUwoQ29yZU1lZGlhLCBrQ01UZXh0VmVydGljYWxMYXlvdXRfUmlnaHRUb0xlZnQsIENGU3RyaW5n
UmVmKQotU09GVF9MSU5LX1BPSU5URVJfT1BUSU9OQUwoQ29yZU1lZGlhLCBrQ01UZXh0TWFya3Vw
QXR0cmlidXRlX0Jhc2VGb250U2l6ZVBlcmNlbnRhZ2VSZWxhdGl2ZVRvVmlkZW9IZWlnaHQsIENG
U3RyaW5nUmVmKQotU09GVF9MSU5LX1BPSU5URVJfT1BUSU9OQUwoQ29yZU1lZGlhLCBrQ01UZXh0
TWFya3VwQXR0cmlidXRlX1JlbGF0aXZlRm9udFNpemUsIENGU3RyaW5nUmVmKQotU09GVF9MSU5L
X1BPSU5URVJfT1BUSU9OQUwoQ29yZU1lZGlhLCBrQ01UZXh0TWFya3VwQXR0cmlidXRlX0ZvbnRG
YW1pbHlOYW1lLCBDRlN0cmluZ1JlZikKLVNPRlRfTElOS19QT0lOVEVSX09QVElPTkFMKENvcmVN
ZWRpYSwga0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9Gb3JlZ3JvdW5kQ29sb3JBUkdCLCBDRlN0cmlu
Z1JlZikKLVNPRlRfTElOS19QT0lOVEVSX09QVElPTkFMKENvcmVNZWRpYSwga0NNVGV4dE1hcmt1
cEF0dHJpYnV0ZV9CYWNrZ3JvdW5kQ29sb3JBUkdCLCBDRlN0cmluZ1JlZikKLVNPRlRfTElOS19Q
T0lOVEVSX09QVElPTkFMKENvcmVNZWRpYSwga0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9DaGFyYWN0
ZXJCYWNrZ3JvdW5kQ29sb3JBUkdCLCBDRlN0cmluZ1JlZikKKyNpZiAhUExBVEZPUk0oV0lOKQor
I2RlZmluZSBTT0ZUX0xJTktfQVZGX0ZSQU1FV09SSyhMaWIpIFNPRlRfTElOS19GUkFNRVdPUktf
T1BUSU9OQUwoTGliKQorI2RlZmluZSBTT0ZUX0xJTktfQVZGX1BPSU5URVIoTGliLCBOYW1lLCBU
eXBlKSBTT0ZUX0xJTktfUE9JTlRFUl9PUFRJT05BTChMaWIsIE5hbWUsIFR5cGUpCisjZWxzZQor
I2RlZmluZSBTT0ZUX0xJTktfQVZGX0ZSQU1FV09SSyhMaWIpIFNPRlRfTElOS19MSUJSQVJZKExp
YikKKyNkZWZpbmUgU09GVF9MSU5LX0FWRl9QT0lOVEVSKExpYiwgTmFtZSwgVHlwZSkgU09GVF9M
SU5LX1ZBUklBQkxFX0RMTF9JTVBPUlRfT1BUSU9OQUwoTGliLCBOYW1lLCBUeXBlKQorI2VuZGlm
CisKK1NPRlRfTElOS19BVkZfRlJBTUVXT1JLKENvcmVNZWRpYSkKKworU09GVF9MSU5LX0FWRl9Q
T0lOVEVSKENvcmVNZWRpYSwga0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9BbGlnbm1lbnQsIENGU3Ry
aW5nUmVmKQorU09GVF9MSU5LX0FWRl9QT0lOVEVSKENvcmVNZWRpYSwga0NNVGV4dE1hcmt1cEFs
aWdubWVudFR5cGVfU3RhcnQsIENGU3RyaW5nUmVmKQorU09GVF9MSU5LX0FWRl9QT0lOVEVSKENv
cmVNZWRpYSwga0NNVGV4dE1hcmt1cEFsaWdubWVudFR5cGVfTWlkZGxlLCBDRlN0cmluZ1JlZikK
K1NPRlRfTElOS19BVkZfUE9JTlRFUihDb3JlTWVkaWEsIGtDTVRleHRNYXJrdXBBbGlnbm1lbnRU
eXBlX0VuZCwgQ0ZTdHJpbmdSZWYpCitTT0ZUX0xJTktfQVZGX1BPSU5URVIoQ29yZU1lZGlhLCBr
Q01UZXh0TWFya3VwQXR0cmlidXRlX0JvbGRTdHlsZSwgQ0ZTdHJpbmdSZWYpCitTT0ZUX0xJTktf
QVZGX1BPSU5URVIoQ29yZU1lZGlhLCBrQ01UZXh0TWFya3VwQXR0cmlidXRlX0l0YWxpY1N0eWxl
LCBDRlN0cmluZ1JlZikKK1NPRlRfTElOS19BVkZfUE9JTlRFUihDb3JlTWVkaWEsIGtDTVRleHRN
YXJrdXBBdHRyaWJ1dGVfVW5kZXJsaW5lU3R5bGUsIENGU3RyaW5nUmVmKQorU09GVF9MSU5LX0FW
Rl9QT0lOVEVSKENvcmVNZWRpYSwga0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9UZXh0UG9zaXRpb25Q
ZXJjZW50YWdlUmVsYXRpdmVUb1dyaXRpbmdEaXJlY3Rpb24sIENGU3RyaW5nUmVmKQorU09GVF9M
SU5LX0FWRl9QT0lOVEVSKENvcmVNZWRpYSwga0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9Xcml0aW5n
RGlyZWN0aW9uU2l6ZVBlcmNlbnRhZ2UsIENGU3RyaW5nUmVmKQorU09GVF9MSU5LX0FWRl9QT0lO
VEVSKENvcmVNZWRpYSwga0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9PcnRob2dvbmFsTGluZVBvc2l0
aW9uUGVyY2VudGFnZVJlbGF0aXZlVG9Xcml0aW5nRGlyZWN0aW9uLCBDRlN0cmluZ1JlZikKK1NP
RlRfTElOS19BVkZfUE9JTlRFUihDb3JlTWVkaWEsIGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfVmVy
dGljYWxMYXlvdXQsIENGU3RyaW5nUmVmKQorU09GVF9MSU5LX0FWRl9QT0lOVEVSKENvcmVNZWRp
YSwga0NNVGV4dFZlcnRpY2FsTGF5b3V0X0xlZnRUb1JpZ2h0LCBDRlN0cmluZ1JlZikKK1NPRlRf
TElOS19BVkZfUE9JTlRFUihDb3JlTWVkaWEsIGtDTVRleHRWZXJ0aWNhbExheW91dF9SaWdodFRv
TGVmdCwgQ0ZTdHJpbmdSZWYpCitTT0ZUX0xJTktfQVZGX1BPSU5URVIoQ29yZU1lZGlhLCBrQ01U
ZXh0TWFya3VwQXR0cmlidXRlX0Jhc2VGb250U2l6ZVBlcmNlbnRhZ2VSZWxhdGl2ZVRvVmlkZW9I
ZWlnaHQsIENGU3RyaW5nUmVmKQorU09GVF9MSU5LX0FWRl9QT0lOVEVSKENvcmVNZWRpYSwga0NN
VGV4dE1hcmt1cEF0dHJpYnV0ZV9SZWxhdGl2ZUZvbnRTaXplLCBDRlN0cmluZ1JlZikKK1NPRlRf
TElOS19BVkZfUE9JTlRFUihDb3JlTWVkaWEsIGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfRm9udEZh
bWlseU5hbWUsIENGU3RyaW5nUmVmKQorU09GVF9MSU5LX0FWRl9QT0lOVEVSKENvcmVNZWRpYSwg
a0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9Gb3JlZ3JvdW5kQ29sb3JBUkdCLCBDRlN0cmluZ1JlZikK
K1NPRlRfTElOS19BVkZfUE9JTlRFUihDb3JlTWVkaWEsIGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVf
QmFja2dyb3VuZENvbG9yQVJHQiwgQ0ZTdHJpbmdSZWYpCitTT0ZUX0xJTktfQVZGX1BPSU5URVIo
Q29yZU1lZGlhLCBrQ01UZXh0TWFya3VwQXR0cmlidXRlX0NoYXJhY3RlckJhY2tncm91bmRDb2xv
ckFSR0IsIENGU3RyaW5nUmVmKQogCiAjZGVmaW5lIGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfQWxp
Z25tZW50IGdldGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfQWxpZ25tZW50KCkKICNkZWZpbmUga0NN
VGV4dE1hcmt1cEFsaWdubWVudFR5cGVfU3RhcnQgZ2V0a0NNVGV4dE1hcmt1cEFsaWdubWVudFR5
cGVfU3RhcnQoKQpAQCAtNDU5LDQgKzQ2Nyw0IEBAIHZvaWQgSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUFWRjo6c2V0TW9kZSgKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gRU5B
QkxFKFZJREVPKSAmJiAoKFVTRShBVkZPVU5EQVRJT04pICYmICFQTEFURk9STShXSU4pKSB8fCBQ
TEFURk9STShJT1MpKQorI2VuZGlmIC8vIEVOQUJMRShWSURFTykgJiYgKFVTRShBVkZPVU5EQVRJ
T04pIHx8IFBMQVRGT1JNKElPUykpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRU
ZXh0VHJhY2tQcml2YXRlQVZGLmgJKHJldmlzaW9uIDE1Mjg1OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZG
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUFWRl9oCiAjZGVmaW5lIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkZfaAogCi0j
aWYgRU5BQkxFKFZJREVPKSAmJiAoKFVTRShBVkZPVU5EQVRJT04pICYmICFQTEFURk9STShXSU4p
KSB8fCBQTEFURk9STShJT1MpKQorI2lmIEVOQUJMRShWSURFTykgJiYgKFVTRShBVkZPVU5EQVRJ
T04pIHx8IFBMQVRGT1JNKElPUykpCiAKICNpbmNsdWRlICJJbmJhbmRUZXh0VHJhY2tQcml2YXRl
LmgiCiAjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudC5oIgpAQCAtOTAsNiAr
OTAsNiBAQCBwcm90ZWN0ZWQ6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8v
ICBFTkFCTEUoVklERU8pICYmICgoVVNFKEFWRk9VTkRBVElPTikgJiYgIVBMQVRGT1JNKFdJTikp
IHx8IFBMQVRGT1JNKElPUykpCisjZW5kaWYgLy8gIEVOQUJMRShWSURFTykgJiYgKFVTRShBVkZP
VU5EQVRJT04pIHx8IFBMQVRGT1JNKElPUykpCiAKICNlbmRpZiAvLyBJbmJhbmRUZXh0VHJhY2tQ
cml2YXRlQVZGX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb24uY3BwCShyZXZpc2lvbiAxNTI4NTgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQsOSArNzQsNyBAQCBNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb246Ok1lZGlhUGxhCiAgICAgLCBtX2lnbm9yZUxvYWRTdGF0ZUNo
YW5nZXMoZmFsc2UpCiAgICAgLCBtX2hhdmVSZXBvcnRlZEZpcnN0VmlkZW9GcmFtZShmYWxzZSkK
ICAgICAsIG1fcGxheVdoZW5GcmFtZXNBdmFpbGFibGUoZmFsc2UpCi0jaWYgIVBMQVRGT1JNKFdJ
TikKICAgICAsIG1faW5iYW5kVHJhY2tDb25maWd1cmF0aW9uUGVuZGluZyhmYWxzZSkKLSNlbmRp
ZgogICAgICwgbV9zZWVrQ291bnQoMCkKIHsKICAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb246Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbiglcCkiLCB0
aGlzKTsKQEAgLTI2NywxMCArMjY1LDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb246OnNlZQogICAgIGlmIChjdXJyZW50VGltZSgpID09IHRpbWUpCiAgICAgICAgIHJldHVy
bjsKIAotI2lmICFQTEFURk9STShXSU4pCiAgICAgaWYgKGN1cnJlbnRUcmFjaygpKQogICAgICAg
ICBjdXJyZW50VHJhY2soKS0+YmVnaW5TZWVraW5nKCk7Ci0jZW5kaWYKICAgICAKICAgICBMT0co
TWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnNlZWsoJXApIC0gc2Vla2lu
ZyB0byAlZiIsIHRoaXMsIHRpbWUpOwogICAgIG1fc2Vla1RvID0gdGltZTsKQEAgLTU5OSwxMCAr
NTk1LDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnNlZQogICAgIGlm
ICgtLW1fc2Vla0NvdW50KQogICAgICAgICByZXR1cm47CiAKLSNpZiAhUExBVEZPUk0oV0lOKQog
ICAgIGlmIChjdXJyZW50VHJhY2soKSkKICAgICAgICAgY3VycmVudFRyYWNrKCktPmVuZFNlZWtp
bmcoKTsKLSNlbmRpZgogCiAgICAgbV9zZWVrVG8gPSBNZWRpYVBsYXllcjo6aW52YWxpZFRpbWUo
KTsKICAgICB1cGRhdGVTdGF0ZXMoKTsKQEAgLTgzMywxMCArODI3LDggQEAgdm9pZCBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb246OmRpcwogICAgICAgICBjb250ZW50c05lZWRzRGlzcGxh
eSgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE5vdGlmaWNhdGlvbjo6SW5iYW5kVHJhY2tz
TmVlZENvbmZpZ3VyYXRpb246Ci0jaWYgIVBMQVRGT1JNKFdJTikKICAgICAgICAgbV9pbmJhbmRU
cmFja0NvbmZpZ3VyYXRpb25QZW5kaW5nID0gZmFsc2U7CiAgICAgICAgIGNvbmZpZ3VyZUluYmFu
ZFRyYWNrcygpOwotI2VuZGlmCiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBOb3RpZmljYXRp
b246Ok5vbmU6CkBAIC04NDUsNyArODM3LDYgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb246OmRpcwogICAgIH0KIH0KIAotI2lmICFQTEFURk9STShXSU4pCiB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6Y29uZmlndXJlSW5iYW5kVHJhY2tzKCkKIHsKICAg
ICBSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRj4gdHJhY2tUb0VuYWJsZTsKQEAgLTg3
Miw3ICs4NjMsNiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6dHJhCiAg
ICAgbV9pbmJhbmRUcmFja0NvbmZpZ3VyYXRpb25QZW5kaW5nID0gdHJ1ZTsKICAgICBzY2hlZHVs
ZU1haW5UaHJlYWROb3RpZmljYXRpb24oTm90aWZpY2F0aW9uOjpJbmJhbmRUcmFja3NOZWVkQ29u
ZmlndXJhdGlvbik7CiB9Ci0jZW5kaWYKIAogc2l6ZV90IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbjo6ZXh0cmFNZW1vcnlDb3N0KCkgY29uc3QKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmgJKHJldmlzaW9uIDE1
Mjg1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzksMTAg
KzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUFWRjsKIGNsYXNzIEdlbmVyaWNDdWVEYXRhOwogCi1jbGFzcyBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb24gOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlCi0jaWYgIVBM
QVRGT1JNKFdJTikKLSAgICAsIHB1YmxpYyBBVkZJbmJhbmRUcmFja1BhcmVudAotI2VuZGlmCitj
bGFzcyBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24gOiBwdWJsaWMgTWVkaWFQbGF5ZXJQ
cml2YXRlSW50ZXJmYWNlLCBwdWJsaWMgQVZGSW5iYW5kVHJhY2tQYXJlbnQKIHsKIHB1YmxpYzoK
IApAQCAtNTYsMTEgKzUzLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZWVrQ29tcGxl
dGVkKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRFbmQoKTsKICAgICB2aXJ0dWFsIHZvaWQg
Y29udGVudHNOZWVkc0Rpc3BsYXkoKSB7IH0KLSNpZiAhUExBVEZPUk0oV0lOKQogICAgIHZpcnR1
YWwgdm9pZCBjb25maWd1cmVJbmJhbmRUcmFja3MoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q3Vy
cmVudFRyYWNrKEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkYqKSB7IH0KICAgICB2aXJ0dWFsIElu
YmFuZFRleHRUcmFja1ByaXZhdGVBVkYqIGN1cnJlbnRUcmFjaygpIGNvbnN0ID0gMDsKLSNlbmRp
ZgogCiAgICAgY2xhc3MgTm90aWZpY2F0aW9uIHsKICAgICBwdWJsaWM6CkBAIC0yNjgsMTAgKzI2
Myw4IEBAIHByb3RlY3RlZDoKIAogICAgIHZpcnR1YWwgc2l6ZV90IGV4dHJhTWVtb3J5Q29zdCgp
IGNvbnN0IE9WRVJSSURFOwogCi0jaWYgIVBMQVRGT1JNKFdJTikKICAgICB2aXJ0dWFsIHZvaWQg
dHJhY2tNb2RlQ2hhbmdlZCgpIE9WRVJSSURFOwogICAgIFZlY3RvcjxSZWZQdHI8SW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWRj4gPiBtX3RleHRUcmFja3M7Ci0jZW5kaWYKICAgICAKIHByaXZhdGU6
CiAgICAgTWVkaWFQbGF5ZXIqIG1fcGxheWVyOwpAQCAtMzA4LDkgKzMwMSw3IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBtX2lnbm9yZUxvYWRTdGF0ZUNoYW5nZXM7CiAgICAgYm9vbCBtX2hhdmVSZXBv
cnRlZEZpcnN0VmlkZW9GcmFtZTsKICAgICBib29sIG1fcGxheVdoZW5GcmFtZXNBdmFpbGFibGU7
Ci0jaWYgIVBMQVRGT1JNKFdJTikKICAgICBib29sIG1faW5iYW5kVHJhY2tDb25maWd1cmF0aW9u
UGVuZGluZzsKLSNlbmRpZgogICAgIHNpemVfdCBtX3NlZWtDb3VudDsKIH07CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9BVkZvdW5kYXRp
b25DRlNvZnRMaW5raW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0FWRm91bmRhdGlvbkNGU29mdExpbmtpbmcuaAkocmV2
aXNpb24gMTUyODU4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL2NmL0FWRm91bmRhdGlvbkNGU29mdExpbmtpbmcuaAkod29ya2luZyBjb3B5KQpAQCAt
NDIsNiArNDIsOSBAQCBTT0ZUX0xJTktfRExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZDCiBT
T0ZUX0xJTktfRExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZDRkFzc2V0Q29weUFzc2V0VHJh
Y2tzLCBDRkFycmF5UmVmLCBfX2NkZWNsLCAoQVZDRkFzc2V0UmVmIGFzc2V0KSwgKGFzc2V0KSkK
ICNkZWZpbmUgQVZDRkFzc2V0Q29weUFzc2V0VHJhY2tzIHNvZnRMaW5rX0FWQ0ZBc3NldENvcHlB
c3NldFRyYWNrcwogCitTT0ZUX0xJTktfRExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZDRkFz
c2V0Q29weUF2YWlsYWJsZU1lZGlhQ2hhcmFjdGVyaXN0aWNzV2l0aE1lZGlhU2VsZWN0aW9uT3B0
aW9ucywgQ0ZBcnJheVJlZiwgX19jZGVjbCwgKEFWQ0ZBc3NldFJlZiBhc3NldCksIChhc3NldCkp
CisjZGVmaW5lIEFWQ0ZBc3NldENvcHlBdmFpbGFibGVNZWRpYUNoYXJhY3RlcmlzdGljc1dpdGhN
ZWRpYVNlbGVjdGlvbk9wdGlvbnMgc29mdExpbmtfQVZDRkFzc2V0Q29weUF2YWlsYWJsZU1lZGlh
Q2hhcmFjdGVyaXN0aWNzV2l0aE1lZGlhU2VsZWN0aW9uT3B0aW9ucworCiBTT0ZUX0xJTktfRExM
X0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZDRkFzc2V0Q29weVRyYWNrc1dpdGhNZWRpYUNoYXJh
Y3RlcmlzdGljLCBDRkFycmF5UmVmLCBfX2NkZWNsLCAoQVZDRkFzc2V0UmVmIGFzc2V0LCBDRlN0
cmluZ1JlZiBtZWRpYUNoYXJhY3RlcmlzdGljKSwgKGFzc2V0LCBtZWRpYUNoYXJhY3RlcmlzdGlj
KSkKICNkZWZpbmUgQVZDRkFzc2V0Q29weVRyYWNrc1dpdGhNZWRpYUNoYXJhY3RlcmlzdGljIHNv
ZnRMaW5rX0FWQ0ZBc3NldENvcHlUcmFja3NXaXRoTWVkaWFDaGFyYWN0ZXJpc3RpYwogCkBAIC04
Nyw2ICs5MCwxNSBAQCBTT0ZUX0xJTktfRExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZDCiBT
T0ZUX0xJTktfRExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZDRkFzc2V0TG9hZFZhbHVlc0Fz
eW5jaHJvbm91c2x5Rm9yUHJvcGVydGllcywgdm9pZCwgX19jZGVjbCwgKEFWQ0ZBc3NldFJlZiBh
c3NldCwgQ0ZBcnJheVJlZiBwcm9wZXJ0aWVzLCBBVkNGQXNzZXRMb2FkVmFsdWVzQ29tcGxldGlv
bkNhbGxiYWNrIGNhbGxiYWNrLCB2b2lkICpjbGllbnRDb250ZXh0KSwgKGFzc2V0LCBwcm9wZXJ0
aWVzLCBjYWxsYmFjaywgY2xpZW50Q29udGV4dCkpCiAjZGVmaW5lIEFWQ0ZBc3NldExvYWRWYWx1
ZXNBc3luY2hyb25vdXNseUZvclByb3BlcnRpZXMgc29mdExpbmtfQVZDRkFzc2V0TG9hZFZhbHVl
c0FzeW5jaHJvbm91c2x5Rm9yUHJvcGVydGllcwogCitTT0ZUX0xJTktfRExMX0lNUE9SVChBVkZv
dW5kYXRpb25DRiwgQVZDRkFzc2V0VHJhY2tDb3B5Q29tbW9uTWV0YWRhdGEsIENGQXJyYXlSZWYs
IF9fY2RlY2wsIChBVkNGQXNzZXRUcmFja1JlZiBhc3NldFRyYWNrKSwgKGFzc2V0VHJhY2spKQor
I2RlZmluZSBBVkNGQXNzZXRUcmFja0NvcHlDb21tb25NZXRhZGF0YSBzb2Z0TGlua19BVkNGQXNz
ZXRUcmFja0NvcHlDb21tb25NZXRhZGF0YQorCitTT0ZUX0xJTktfRExMX0lNUE9SVChBVkZvdW5k
YXRpb25DRiwgQVZDRkFzc2V0VHJhY2tDb3B5RXh0ZW5kZWRMYW5ndWFnZVRhZywgQ0ZTdHJpbmdS
ZWYsIF9fY2RlY2wsIChBVkNGQXNzZXRUcmFja1JlZiBhc3NldFRyYWNrKSwgKGFzc2V0VHJhY2sp
KQorI2RlZmluZSBBVkNGQXNzZXRUcmFja0NvcHlFeHRlbmRlZExhbmd1YWdlVGFnIHNvZnRMaW5r
X0FWQ0ZBc3NldFRyYWNrQ29weUV4dGVuZGVkTGFuZ3VhZ2VUYWcKKworU09GVF9MSU5LX0RMTF9J
TVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZBc3NldFRyYWNrQ29weUxhbmd1YWdlQ29kZSwgQ0ZT
dHJpbmdSZWYsIF9fY2RlY2wsIChBVkNGQXNzZXRUcmFja1JlZiBhc3NldFRyYWNrKSwgKGFzc2V0
VHJhY2spKQorI2RlZmluZSBBVkNGQXNzZXRUcmFja0NvcHlMYW5ndWFnZUNvZGUgc29mdExpbmtf
QVZDRkFzc2V0VHJhY2tDb3B5TGFuZ3VhZ2VDb2RlCisKIFNPRlRfTElOS19ETExfSU1QT1JUKEFW
Rm91bmRhdGlvbkNGLCBBVkNGQXNzZXRUcmFja0dldE1lZGlhVHlwZSwgQ0ZTdHJpbmdSZWYsIF9f
Y2RlY2wsIChBVkNGQXNzZXRUcmFja1JlZiBhc3NldFRyYWNrKSwgKGFzc2V0VHJhY2spKQogI2Rl
ZmluZSBBVkNGQXNzZXRUcmFja0dldE1lZGlhVHlwZSBzb2Z0TGlua19BVkNGQXNzZXRUcmFja0dl
dE1lZGlhVHlwZQogCkBAIC05OSw2ICsxMTEsMTggQEAgU09GVF9MSU5LX0RMTF9JTVBPUlQoQVZG
b3VuZGF0aW9uQ0YsIEFWQwogU09GVF9MSU5LX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFW
Q0ZBc3NldFRyYWNrR2V0VG90YWxTYW1wbGVEYXRhTGVuZ3RoLCBpbnQ2NF90LCBfX2NkZWNsLCAo
QVZDRkFzc2V0VHJhY2tSZWYgYXNzZXRUcmFjayksIChhc3NldFRyYWNrKSkKICNkZWZpbmUgQVZD
RkFzc2V0VHJhY2tHZXRUb3RhbFNhbXBsZURhdGFMZW5ndGggc29mdExpbmtfQVZDRkFzc2V0VHJh
Y2tHZXRUb3RhbFNhbXBsZURhdGFMZW5ndGgKIAorU09GVF9MSU5LX0RMTF9JTVBPUlQoQVZGb3Vu
ZGF0aW9uQ0YsIEFWQ0ZNZWRpYVNlbGVjdGlvbkNvcHlPcHRpb25zRnJvbUFycmF5RmlsdGVyZWRB
bmRTb3J0ZWRBY2NvcmRpbmdUb1ByZWZlcnJlZExhbmd1YWdlcywgQ0ZBcnJheVJlZiwgX19jZGVj
bCwgKENGQXJyYXlSZWYgc2VsZWN0aW9uT3B0aW9ucywgQ0ZBcnJheVJlZiBwcmVmZXJyZWRMYW5n
dWFnZXMpLCAoc2VsZWN0aW9uT3B0aW9ucywgcHJlZmVycmVkTGFuZ3VhZ2VzKSkKKyNkZWZpbmUg
QVZDRk1lZGlhU2VsZWN0aW9uQ29weU9wdGlvbnNGcm9tQXJyYXlGaWx0ZXJlZEFuZFNvcnRlZEFj
Y29yZGluZ1RvUHJlZmVycmVkTGFuZ3VhZ2VzIHNvZnRMaW5rX0FWQ0ZNZWRpYVNlbGVjdGlvbkNv
cHlPcHRpb25zRnJvbUFycmF5RmlsdGVyZWRBbmRTb3J0ZWRBY2NvcmRpbmdUb1ByZWZlcnJlZExh
bmd1YWdlcworCitTT0ZUX0xJTktfRExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZDRk1ldGFk
YXRhSXRlbUNvcHlTdHJpbmdWYWx1ZSwgQ0ZTdHJpbmdSZWYsIF9fY2RlY2wsIChBVkNGTWV0YWRh
dGFJdGVtUmVmIG1ldGFkYXRhSXRlbSksIChtZXRhZGF0YUl0ZW0pKQorI2RlZmluZSBBVkNGTWV0
YWRhdGFJdGVtQ29weVN0cmluZ1ZhbHVlIHNvZnRMaW5rX0FWQ0ZNZXRhZGF0YUl0ZW1Db3B5U3Ry
aW5nVmFsdWUKKworU09GVF9MSU5LX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZNZXRh
ZGF0YUl0ZW1Db3B5SXRlbXNXaXRoS2V5QW5kS2V5U3BhY2UsIENGQXJyYXlSZWYsIF9fY2RlY2ws
IChDRkFycmF5UmVmIGFycmF5LCBDRlR5cGVSZWYga2V5LCBDRlN0cmluZ1JlZiBrZXlTcGFjZSks
IChhcnJheSwga2V5LCBrZXlTcGFjZSkpCisjZGVmaW5lIEFWQ0ZNZXRhZGF0YUl0ZW1Db3B5SXRl
bXNXaXRoS2V5QW5kS2V5U3BhY2Ugc29mdExpbmtfQVZDRk1ldGFkYXRhSXRlbUNvcHlJdGVtc1dp
dGhLZXlBbmRLZXlTcGFjZQorCitTT0ZUX0xJTktfRExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwg
QVZDRk1ldGFkYXRhSXRlbUNvcHlJdGVtc1dpdGhMb2NhbGUsIENGQXJyYXlSZWYsIF9fY2RlY2ws
IChDRkFycmF5UmVmIGl0ZW1zLCBDRkxvY2FsZVJlZiBsb2NhbGUpLCAoaXRlbXMsIGxvY2FsZSkp
CisjZGVmaW5lIEFWQ0ZNZXRhZGF0YUl0ZW1Db3B5SXRlbXNXaXRoTG9jYWxlIHNvZnRMaW5rX0FW
Q0ZNZXRhZGF0YUl0ZW1Db3B5SXRlbXNXaXRoTG9jYWxlCisKIFNPRlRfTElOS19ETExfSU1QT1JU
KEFWRm91bmRhdGlvbkNGLCBBVkNGUGxheWVyQ3JlYXRlUGVyaW9kaWNUaW1lT2JzZXJ2ZXJGb3JJ
bnRlcnZhbCwgQVZDRlBsYXllck9ic2VydmVyUmVmLCBfX2NkZWNsLCAoQVZDRlBsYXllclJlZiBw
bGF5ZXIsIENNVGltZSBpbnRlcnZhbCwgZGlzcGF0Y2hfcXVldWVfdCBxdWV1ZSwgQVZDRlBsYXll
clBlcmlvZGljVGltZU9ic2VydmVyQ2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQgKmNsaWVudENvbnRl
eHQpLCAocGxheWVyLCBpbnRlcnZhbCwgcXVldWUsIGNhbGxiYWNrLCBjbGllbnRDb250ZXh0KSkK
ICNkZWZpbmUgQVZDRlBsYXllckNyZWF0ZVBlcmlvZGljVGltZU9ic2VydmVyRm9ySW50ZXJ2YWwg
c29mdExpbmtfQVZDRlBsYXllckNyZWF0ZVBlcmlvZGljVGltZU9ic2VydmVyRm9ySW50ZXJ2YWwK
IApAQCAtMTIzLDYgKzE0Nyw5IEBAIFNPRlRfTElOS19ETExfSU1QT1JUKEFWRm91bmRhdGlvbkNG
LCBBVkMKIFNPRlRfTElOS19ETExfSU1QT1JUKEFWRm91bmRhdGlvbkNGLCBBVkNGUGxheWVySXRl
bUdldEN1cnJlbnRUaW1lLCBDTVRpbWUsIF9fY2RlY2wsIChBVkNGUGxheWVySXRlbVJlZiBwbGF5
ZXJJdGVtKSwgKHBsYXllckl0ZW0pKQogI2RlZmluZSBBVkNGUGxheWVySXRlbUdldEN1cnJlbnRU
aW1lIHNvZnRMaW5rX0FWQ0ZQbGF5ZXJJdGVtR2V0Q3VycmVudFRpbWUKIAorU09GVF9MSU5LX0RM
TF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZQbGF5ZXJJdGVtR2V0RHVyYXRpb24sIENNVGlt
ZSwgX19jZGVjbCwgKEFWQ0ZQbGF5ZXJJdGVtUmVmIHBsYXllckl0ZW0pLCAocGxheWVySXRlbSkp
CisjZGVmaW5lIEFWQ0ZQbGF5ZXJJdGVtR2V0RHVyYXRpb24gc29mdExpbmtfQVZDRlBsYXllckl0
ZW1HZXREdXJhdGlvbgorCiBTT0ZUX0xJTktfRExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZD
RlBsYXllckl0ZW1HZXRTdGF0dXMsIEFWQ0ZQbGF5ZXJJdGVtU3RhdHVzLCBfX2NkZWNsLCAoQVZD
RlBsYXllckl0ZW1SZWYgcGxheWVySXRlbSwgQ0ZFcnJvclJlZiAqZXJyb3JPdXQpLCAocGxheWVy
SXRlbSwgZXJyb3JPdXQpKQogI2RlZmluZSBBVkNGUGxheWVySXRlbUdldFN0YXR1cyBzb2Z0TGlu
a19BVkNGUGxheWVySXRlbUdldFN0YXR1cwogCkBAIC0xMzUsNiArMTYyLDEyIEBAIFNPRlRfTElO
S19ETExfSU1QT1JUKEFWRm91bmRhdGlvbkNGLCBBVkMKIFNPRlRfTElOS19ETExfSU1QT1JUKEFW
Rm91bmRhdGlvbkNGLCBBVkNGUGxheWVySXRlbUlzUGxheWJhY2tMaWtlbHlUb0tlZXBVcCwgQm9v
bGVhbiwgX19jZGVjbCwgKEFWQ0ZQbGF5ZXJJdGVtUmVmIHBsYXllckl0ZW0pLCAocGxheWVySXRl
bSkpCiAjZGVmaW5lIEFWQ0ZQbGF5ZXJJdGVtSXNQbGF5YmFja0xpa2VseVRvS2VlcFVwIHNvZnRM
aW5rX0FWQ0ZQbGF5ZXJJdGVtSXNQbGF5YmFja0xpa2VseVRvS2VlcFVwCiAKK1NPRlRfTElOS19E
TExfSU1QT1JUKEFWRm91bmRhdGlvbkNGLCBBVkNGUGxheWVySXRlbUxlZ2libGVPdXRwdXRHZXRU
eXBlSUQsIENGVHlwZUlELCBfX2NkZWNsLCAoKSwgKCkpCisjZGVmaW5lIEFWQ0ZQbGF5ZXJJdGVt
TGVnaWJsZU91dHB1dEdldFR5cGVJRCBzb2Z0TGlua19BVkNGUGxheWVySXRlbUxlZ2libGVPdXRw
dXRHZXRUeXBlSUQKKworU09GVF9MSU5LX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZQ
bGF5ZXJJdGVtUmVtb3ZlT3V0cHV0LCB2b2lkLCBfX2NkZWNsLCAoQVZDRlBsYXllckl0ZW1SZWYg
cGxheWVySXRlbSwgQVZDRlBsYXllckl0ZW1PdXRwdXRSZWYgb3V0cHV0KSwgKHBsYXllckl0ZW0s
IG91dHB1dCkpCisjZGVmaW5lIEFWQ0ZQbGF5ZXJJdGVtUmVtb3ZlT3V0cHV0IHNvZnRMaW5rX0FW
Q0ZQbGF5ZXJJdGVtUmVtb3ZlT3V0cHV0CisKIFNPRlRfTElOS19ETExfSU1QT1JUKEFWRm91bmRh
dGlvbkNGLCBBVkNGUGxheWVySXRlbVNlZWtUb1RpbWVXaXRoVG9sZXJhbmNlQW5kQ29tcGxldGlv
bkNhbGxiYWNrLCBBVkNGQXNzZXRSZWYsIF9fY2RlY2wsIChBVkNGUGxheWVySXRlbVJlZiBwbGF5
ZXJJdGVtLCBDTVRpbWUgdGltZSwgQ01UaW1lIHRvbGVyYW5jZUJlZm9yZSwgQ01UaW1lIHRvbGVy
YW5jZUFmdGVyLCBBVkNGUGxheWVySXRlbVNlZWtDb21wbGV0aW9uQ2FsbGJhY2sgY29tcGxldGlv
bkNhbGxiYWNrLCB2b2lkICpjb250ZXh0KSwgKHBsYXllckl0ZW0sIHRpbWUsIHRvbGVyYW5jZUJl
Zm9yZSwgdG9sZXJhbmNlQWZ0ZXIsIGNvbXBsZXRpb25DYWxsYmFjaywgY29udGV4dCkpCiAjZGVm
aW5lIEFWQ0ZQbGF5ZXJJdGVtU2Vla1RvVGltZVdpdGhUb2xlcmFuY2VBbmRDb21wbGV0aW9uQ2Fs
bGJhY2sgc29mdExpbmtfQVZDRlBsYXllckl0ZW1TZWVrVG9UaW1lV2l0aFRvbGVyYW5jZUFuZENv
bXBsZXRpb25DYWxsYmFjawogCkBAIC0xNTksNiArMTkyLDkgQEAgU09GVF9MSU5LX0RMTF9JTVBP
UlQoQVZGb3VuZGF0aW9uQ0YsIEFWQwogU09GVF9MSU5LX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9u
Q0YsIEFWQ0ZQbGF5ZXJMYXllclNldFBsYXllciwgdm9pZCwgX19jZGVjbCwgKEFWQ0ZQbGF5ZXJM
YXllclJlZiBwbGF5ZXJMYXllciwgQVZDRlBsYXllclJlZiBwbGF5ZXIpLCAocGxheWVyTGF5ZXIs
IHBsYXllcikpCiAjZGVmaW5lIEFWQ0ZQbGF5ZXJMYXllclNldFBsYXllciBzb2Z0TGlua19BVkNG
UGxheWVyTGF5ZXJTZXRQbGF5ZXIKIAorU09GVF9MSU5LX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9u
Q0YsIEFWQ0ZQbGF5ZXJQbGF5LCB2b2lkLCBfX2NkZWNsLCAoQVZDRlBsYXllclJlZiBwbGF5ZXIp
LCAocGxheWVyKSkKKyNkZWZpbmUgQVZDRlBsYXllclBsYXkgc29mdExpbmtfQVZDRlBsYXllclBs
YXkKKwogU09GVF9MSU5LX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZQbGF5ZXJSZW1v
dmVPYnNlcnZlciwgT1NTdGF0dXMsIF9fY2RlY2wsIChBVkNGUGxheWVyUmVmIHBsYXllciwgQVZD
RlBsYXllck9ic2VydmVyUmVmIG9ic2VydmVyKSwgKHBsYXllciwgb2JzZXJ2ZXIpKQogI2RlZmlu
ZSBBVkNGUGxheWVyUmVtb3ZlT2JzZXJ2ZXIgc29mdExpbmtfQVZDRlBsYXllclJlbW92ZU9ic2Vy
dmVyCiAKQEAgLTE3OSw3MyArMjE1LDE2OCBAQCBTT0ZUX0xJTktfRExMX0lNUE9SVChBVkZvdW5k
YXRpb25DRiwgQVZDCiAKIFNPRlRfTElOS19ETExfSU1QT1JUX09QVElPTkFMKEFWRm91bmRhdGlv
bkNGLCBBVkNGUGxheWVyU2V0RGlyZWN0M0REZXZpY2UsIHZvaWQsIF9fY2RlY2wsIChBVkNGUGxh
eWVyUmVmIHBsYXllciwgSURpcmVjdDNERGV2aWNlOSogZDNkRGV2aWNlKSkKIAorI2lmIEhBVkUo
QVZGT1VOREFUSU9OX01FRElBX1NFTEVDVElPTl9HUk9VUCkgJiYgSEFWRShBVkZPVU5EQVRJT05f
TEVHSUJMRV9PVVRQVVRfU1VQUE9SVCkKKworU09GVF9MSU5LX0RMTF9JTVBPUlQoQVZGb3VuZGF0
aW9uQ0YsIEFWQ0ZBc3NldEdldFNlbGVjdGlvbkdyb3VwRm9yTWVkaWFDaGFyYWN0ZXJpc3RpYyAs
IEFWQ0ZNZWRpYVNlbGVjdGlvbkdyb3VwUmVmLCBfX2NkZWNsLCAoQVZDRkFzc2V0UmVmIGFzc2V0
LCBDRlN0cmluZ1JlZiBtZWRpYUNoYXJhY3RlcmlzdGljKSwgKGFzc2V0LCBtZWRpYUNoYXJhY3Rl
cmlzdGljKSkKKyNkZWZpbmUgQVZDRkFzc2V0R2V0U2VsZWN0aW9uR3JvdXBGb3JNZWRpYUNoYXJh
Y3RlcmlzdGljICBzb2Z0TGlua19BVkNGQXNzZXRHZXRTZWxlY3Rpb25Hcm91cEZvck1lZGlhQ2hh
cmFjdGVyaXN0aWMgCisKK1NPRlRfTElOS19ETExfSU1QT1JUKEFWRm91bmRhdGlvbkNGLCBBVkNG
TWVkaWFTZWxlY3Rpb25Db3B5UGxheWFibGVPcHRpb25zRnJvbUFycmF5LCBDRkFycmF5UmVmLCBf
X2NkZWNsLCAoQ0ZBcnJheVJlZiBzZWxlY3Rpb25PcHRpb25zKSwgKHNlbGVjdGlvbk9wdGlvbnMp
KQorI2RlZmluZSBBVkNGTWVkaWFTZWxlY3Rpb25Db3B5UGxheWFibGVPcHRpb25zRnJvbUFycmF5
IHNvZnRMaW5rX0FWQ0ZNZWRpYVNlbGVjdGlvbkNvcHlQbGF5YWJsZU9wdGlvbnNGcm9tQXJyYXkK
KworU09GVF9MSU5LX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZNZWRpYVNlbGVjdGlv
bk9wdGlvbkNvcHlDb21tb25NZXRhZGF0YSwgQ0ZBcnJheVJlZiwgX19jZGVjbCwgKEFWQ0ZNZWRp
YVNlbGVjdGlvbk9wdGlvblJlZiBzZWxlY3Rpb25PcHRpb24pLCAoc2VsZWN0aW9uT3B0aW9uKSkK
KyNkZWZpbmUgQVZDRk1lZGlhU2VsZWN0aW9uT3B0aW9uQ29weUNvbW1vbk1ldGFkYXRhIHNvZnRM
aW5rX0FWQ0ZNZWRpYVNlbGVjdGlvbk9wdGlvbkNvcHlDb21tb25NZXRhZGF0YQorCitTT0ZUX0xJ
TktfRExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZDRk1lZGlhU2VsZWN0aW9uT3B0aW9uQ29w
eUxvY2FsZSwgQ0ZMb2NhbGVSZWYsIF9fY2RlY2wsIChBVkNGTWVkaWFTZWxlY3Rpb25PcHRpb25S
ZWYgc2VsZWN0aW9uT3B0aW9uKSwgKHNlbGVjdGlvbk9wdGlvbikpCisjZGVmaW5lIEFWQ0ZNZWRp
YVNlbGVjdGlvbk9wdGlvbkNvcHlMb2NhbGUgc29mdExpbmtfQVZDRk1lZGlhU2VsZWN0aW9uT3B0
aW9uQ29weUxvY2FsZQorCitTT0ZUX0xJTktfRExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZD
Rk1lZGlhU2VsZWN0aW9uT3B0aW9uR2V0TWVkaWFUeXBlLCBDRlN0cmluZ1JlZiwgX19jZGVjbCwg
KEFWQ0ZNZWRpYVNlbGVjdGlvbk9wdGlvblJlZiBzZWxlY3Rpb25PcHRpb24pLCAoc2VsZWN0aW9u
T3B0aW9uKSkKKyNkZWZpbmUgQVZDRk1lZGlhU2VsZWN0aW9uT3B0aW9uR2V0TWVkaWFUeXBlIHNv
ZnRMaW5rX0FWQ0ZNZWRpYVNlbGVjdGlvbk9wdGlvbkdldE1lZGlhVHlwZQorCitTT0ZUX0xJTktf
RExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZDRk1lZGlhU2VsZWN0aW9uT3B0aW9uSGFzTWVk
aWFDaGFyYWN0ZXJpc3RpYywgQm9vbGVhbiwgX19jZGVjbCwgKEFWQ0ZNZWRpYVNlbGVjdGlvbk9w
dGlvblJlZiBzZWxlY3Rpb25PcHRpb24sIENGU3RyaW5nUmVmIG1lZGlhQ2hhcmFjdGVyaXN0aWMp
LCAoc2VsZWN0aW9uT3B0aW9uLCBtZWRpYUNoYXJhY3RlcmlzdGljKSkKKyNkZWZpbmUgQVZDRk1l
ZGlhU2VsZWN0aW9uT3B0aW9uSGFzTWVkaWFDaGFyYWN0ZXJpc3RpYyBzb2Z0TGlua19BVkNGTWVk
aWFTZWxlY3Rpb25PcHRpb25IYXNNZWRpYUNoYXJhY3RlcmlzdGljCisKK1NPRlRfTElOS19ETExf
SU1QT1JUKEFWRm91bmRhdGlvbkNGLCBBVkNGTWVkaWFTZWxlY3Rpb25Hcm91cEFsbG93c0VtcHR5
U2VsZWN0aW9uLCBCb29sZWFuLCBfX2NkZWNsLCAoQVZDRk1lZGlhU2VsZWN0aW9uR3JvdXBSZWYg
c2VsZWN0aW9uR3JvdXApLCAoc2VsZWN0aW9uR3JvdXApKQorI2RlZmluZSBBVkNGTWVkaWFTZWxl
Y3Rpb25Hcm91cEFsbG93c0VtcHR5U2VsZWN0aW9uIHNvZnRMaW5rX0FWQ0ZNZWRpYVNlbGVjdGlv
bkdyb3VwQWxsb3dzRW1wdHlTZWxlY3Rpb24KKworU09GVF9MSU5LX0RMTF9JTVBPUlQoQVZGb3Vu
ZGF0aW9uQ0YsIEFWQ0ZNZWRpYVNlbGVjdGlvbkdyb3VwR2V0T3B0aW9ucywgQ0ZBcnJheVJlZiwg
X19jZGVjbCwgKEFWQ0ZNZWRpYVNlbGVjdGlvbkdyb3VwUmVmIHNlbGVjdGlvbkdyb3VwKSwgKHNl
bGVjdGlvbkdyb3VwKSkKKyNkZWZpbmUgQVZDRk1lZGlhU2VsZWN0aW9uR3JvdXBHZXRPcHRpb25z
IHNvZnRMaW5rX0FWQ0ZNZWRpYVNlbGVjdGlvbkdyb3VwR2V0T3B0aW9ucworCitTT0ZUX0xJTktf
RExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZDRlBsYXllckl0ZW1BZGRPdXRwdXQsIHZvaWQs
IF9fY2RlY2wsIChBVkNGUGxheWVySXRlbVJlZiBwbGF5ZXJJdGVtLCBBVkNGUGxheWVySXRlbU91
dHB1dFJlZiBvdXRwdXQpLCAocGxheWVySXRlbSwgb3V0cHV0KSkKKyNkZWZpbmUgQVZDRlBsYXll
ckl0ZW1BZGRPdXRwdXQgc29mdExpbmtfQVZDRlBsYXllckl0ZW1BZGRPdXRwdXQKKworU09GVF9M
SU5LX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1
dENyZWF0ZVdpdGhNZWRpYVN1YnR5cGVzRm9yTmF0aXZlUmVwcmVzZW50YXRpb24sIEFWQ0ZQbGF5
ZXJJdGVtTGVnaWJsZU91dHB1dFJlZiwgX19jZGVjbCwgKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRv
ciwgQ0ZBcnJheVJlZiBzdWJ0eXBlcyksIChhbGxvY2F0b3IsIHN1YnR5cGVzKSkKKyNkZWZpbmUg
QVZDRlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0Q3JlYXRlV2l0aE1lZGlhU3VidHlwZXNGb3JOYXRp
dmVSZXByZXNlbnRhdGlvbiBzb2Z0TGlua19BVkNGUGxheWVySXRlbUxlZ2libGVPdXRwdXRDcmVh
dGVXaXRoTWVkaWFTdWJ0eXBlc0Zvck5hdGl2ZVJlcHJlc2VudGF0aW9uCisKK1NPRlRfTElOS19E
TExfSU1QT1JUKEFWRm91bmRhdGlvbkNGLCBBVkNGUGxheWVySXRlbUdldFNlbGVjdGVkTWVkaWFP
cHRpb25Jbk1lZGlhU2VsZWN0aW9uR3JvdXAsIEFWQ0ZNZWRpYVNlbGVjdGlvbk9wdGlvblJlZiwg
X19jZGVjbCwgKEFWQ0ZQbGF5ZXJJdGVtUmVmIHBsYXllckl0ZW0sIEFWQ0ZNZWRpYVNlbGVjdGlv
bkdyb3VwUmVmIHNlbGVjdGlvbkdyb3VwKSwgKHBsYXllckl0ZW0sIHNlbGVjdGlvbkdyb3VwKSkK
KyNkZWZpbmUgQVZDRlBsYXllckl0ZW1HZXRTZWxlY3RlZE1lZGlhT3B0aW9uSW5NZWRpYVNlbGVj
dGlvbkdyb3VwIHNvZnRMaW5rX0FWQ0ZQbGF5ZXJJdGVtR2V0U2VsZWN0ZWRNZWRpYU9wdGlvbklu
TWVkaWFTZWxlY3Rpb25Hcm91cAorCitTT0ZUX0xJTktfRExMX0lNUE9SVChBVkZvdW5kYXRpb25D
RiwgQVZDRlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0U2V0QWR2YW5jZUludGVydmFsRm9yQ2FsbGJh
Y2tJbnZvY2F0aW9uLCB2b2lkLCBfX2NkZWNsLCAoQVZDRlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0
UmVmIGxlZ2libGVPdXRwdXQsIENGVGltZUludGVydmFsIHRpbWVJbnRlcnZhbCksIChsZWdpYmxl
T3V0cHV0LCB0aW1lSW50ZXJ2YWwpKQorI2RlZmluZSBBVkNGUGxheWVySXRlbUxlZ2libGVPdXRw
dXRTZXRBZHZhbmNlSW50ZXJ2YWxGb3JDYWxsYmFja0ludm9jYXRpb24gc29mdExpbmtfQVZDRlBs
YXllckl0ZW1MZWdpYmxlT3V0cHV0U2V0QWR2YW5jZUludGVydmFsRm9yQ2FsbGJhY2tJbnZvY2F0
aW9uCisKK1NPRlRfTElOS19ETExfSU1QT1JUKEFWRm91bmRhdGlvbkNGLCBBVkNGUGxheWVySXRl
bUxlZ2libGVPdXRwdXRTZXRDYWxsYmFja3MsIHZvaWQsIF9fY2RlY2wsIChBVkNGUGxheWVySXRl
bUxlZ2libGVPdXRwdXRSZWYgb3V0cHV0LCBjb25zdCBBVkNGUGxheWVySXRlbUxlZ2libGVPdXRw
dXRDYWxsYmFja3MqIGNhbGxiYWNrcywgZGlzcGF0Y2hfcXVldWVfdCBjYWxsYmFja1F1ZXVlKSwg
KG91dHB1dCwgY2FsbGJhY2tzLCBjYWxsYmFja1F1ZXVlKSkKKyNkZWZpbmUgQVZDRlBsYXllckl0
ZW1MZWdpYmxlT3V0cHV0U2V0Q2FsbGJhY2tzIHNvZnRMaW5rX0FWQ0ZQbGF5ZXJJdGVtTGVnaWJs
ZU91dHB1dFNldENhbGxiYWNrcworCitTT0ZUX0xJTktfRExMX0lNUE9SVChBVkZvdW5kYXRpb25D
RiwgQVZDRlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0U2V0VGV4dFN0eWxpbmdSZXNvbHV0aW9uLCB2
b2lkLCBfX2NkZWNsLCAoQVZDRlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0UmVmIG91dHB1dCwgQ0ZT
dHJpbmdSZWYgdGV4dFN0eWxpbmdSZXNvbHV0aW9uKSwgKG91dHB1dCwgdGV4dFN0eWxpbmdSZXNv
bHV0aW9uKSkKKyNkZWZpbmUgQVZDRlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0U2V0VGV4dFN0eWxp
bmdSZXNvbHV0aW9uIHNvZnRMaW5rX0FWQ0ZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1dFNldFRleHRT
dHlsaW5nUmVzb2x1dGlvbgorCitTT0ZUX0xJTktfRExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwg
QVZDRlBsYXllckl0ZW1PdXRwdXRTZXRTdXBwcmVzc1BsYXllclJlbmRlcmluZywgdm9pZCwgX19j
ZGVjbCwgKEFWQ0ZQbGF5ZXJJdGVtT3V0cHV0UmVmIG91dHB1dCwgQm9vbGVhbiBzdXBwcmVzc2Vk
KSwgKG91dHB1dCwgc3VwcHJlc3NlZCkpCisjZGVmaW5lIEFWQ0ZQbGF5ZXJJdGVtT3V0cHV0U2V0
U3VwcHJlc3NQbGF5ZXJSZW5kZXJpbmcgc29mdExpbmtfQVZDRlBsYXllckl0ZW1PdXRwdXRTZXRT
dXBwcmVzc1BsYXllclJlbmRlcmluZworCitTT0ZUX0xJTktfRExMX0lNUE9SVChBVkZvdW5kYXRp
b25DRiwgQVZDRlBsYXllckl0ZW1TZWxlY3RNZWRpYU9wdGlvbkluTWVkaWFTZWxlY3Rpb25Hcm91
cCwgdm9pZCwgX19jZGVjbCwgKEFWQ0ZQbGF5ZXJJdGVtUmVmIHBsYXllckl0ZW0sIEFWQ0ZNZWRp
YVNlbGVjdGlvbk9wdGlvblJlZiBzZWxlY3Rpb25PcHRpb24sIEFWQ0ZNZWRpYVNlbGVjdGlvbkdy
b3VwUmVmIHNlbGVjdGlvbkdyb3VwKSwgKHBsYXllckl0ZW0sIHNlbGVjdGlvbk9wdGlvbiwgc2Vs
ZWN0aW9uR3JvdXApKQorI2RlZmluZSBBVkNGUGxheWVySXRlbVNlbGVjdE1lZGlhT3B0aW9uSW5N
ZWRpYVNlbGVjdGlvbkdyb3VwIHNvZnRMaW5rX0FWQ0ZQbGF5ZXJJdGVtU2VsZWN0TWVkaWFPcHRp
b25Jbk1lZGlhU2VsZWN0aW9uR3JvdXAKKworI2VuZGlmCisKIC8vIFZhcmlhYmxlcwogCiBTT0ZU
X0xJTktfVkFSSUFCTEVfRExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZDRkFzc2V0SW1hZ2VH
ZW5lcmF0b3JBcGVydHVyZU1vZGVDbGVhbkFwZXJ0dXJlLCBjb25zdCBDRlN0cmluZ1JlZik7Ci0j
ZGVmaW5lIEFWQ0ZBc3NldEltYWdlR2VuZXJhdG9yQXBlcnR1cmVNb2RlQ2xlYW5BcGVydHVyZSBn
ZXRfQVZDRkFzc2V0SW1hZ2VHZW5lcmF0b3JBcGVydHVyZU1vZGVDbGVhbkFwZXJ0dXJlKCkKKyNk
ZWZpbmUgQVZDRkFzc2V0SW1hZ2VHZW5lcmF0b3JBcGVydHVyZU1vZGVDbGVhbkFwZXJ0dXJlIGdl
dEFWQ0ZBc3NldEltYWdlR2VuZXJhdG9yQXBlcnR1cmVNb2RlQ2xlYW5BcGVydHVyZSgpCiAKIFNP
RlRfTElOS19WQVJJQUJMRV9ETExfSU1QT1JUKEFWRm91bmRhdGlvbkNGLCBBVkNGQXNzZXRQcm9w
ZXJ0eUR1cmF0aW9uLCBjb25zdCBDRlN0cmluZ1JlZik7Ci0jZGVmaW5lIEFWQ0ZBc3NldFByb3Bl
cnR5RHVyYXRpb24gZ2V0X0FWQ0ZBc3NldFByb3BlcnR5RHVyYXRpb24oKQorI2RlZmluZSBBVkNG
QXNzZXRQcm9wZXJ0eUR1cmF0aW9uIGdldEFWQ0ZBc3NldFByb3BlcnR5RHVyYXRpb24oKQogCiBT
T0ZUX0xJTktfVkFSSUFCTEVfRExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZDRkFzc2V0UHJv
cGVydHlOYXR1cmFsU2l6ZSwgY29uc3QgQ0ZTdHJpbmdSZWYpOwotI2RlZmluZSBBVkNGQXNzZXRQ
cm9wZXJ0eU5hdHVyYWxTaXplIGdldF9BVkNGQXNzZXRQcm9wZXJ0eU5hdHVyYWxTaXplKCkKKyNk
ZWZpbmUgQVZDRkFzc2V0UHJvcGVydHlOYXR1cmFsU2l6ZSBnZXRBVkNGQXNzZXRQcm9wZXJ0eU5h
dHVyYWxTaXplKCkKIAogU09GVF9MSU5LX1ZBUklBQkxFX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9u
Q0YsIEFWQ0ZBc3NldFByb3BlcnR5UGxheWFibGUsIGNvbnN0IENGU3RyaW5nUmVmKTsKLSNkZWZp
bmUgQVZDRkFzc2V0UHJvcGVydHlQbGF5YWJsZSBnZXRfQVZDRkFzc2V0UHJvcGVydHlQbGF5YWJs
ZSgpCisjZGVmaW5lIEFWQ0ZBc3NldFByb3BlcnR5UGxheWFibGUgZ2V0QVZDRkFzc2V0UHJvcGVy
dHlQbGF5YWJsZSgpCiAKIFNPRlRfTElOS19WQVJJQUJMRV9ETExfSU1QT1JUKEFWRm91bmRhdGlv
bkNGLCBBVkNGQXNzZXRQcm9wZXJ0eVByZWZlcnJlZFJhdGUsIGNvbnN0IENGU3RyaW5nUmVmKTsK
LSNkZWZpbmUgQVZDRkFzc2V0UHJvcGVydHlQcmVmZXJyZWRSYXRlIGdldF9BVkNGQXNzZXRQcm9w
ZXJ0eVByZWZlcnJlZFJhdGUoKQorI2RlZmluZSBBVkNGQXNzZXRQcm9wZXJ0eVByZWZlcnJlZFJh
dGUgZ2V0QVZDRkFzc2V0UHJvcGVydHlQcmVmZXJyZWRSYXRlKCkKIAogU09GVF9MSU5LX1ZBUklB
QkxFX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZBc3NldFByb3BlcnR5UHJlZmVycmVk
VHJhbnNmb3JtLCBjb25zdCBDRlN0cmluZ1JlZik7Ci0jZGVmaW5lIEFWQ0ZBc3NldFByb3BlcnR5
UHJlZmVycmVkVHJhbnNmb3JtIGdldF9BVkNGQXNzZXRQcm9wZXJ0eVByZWZlcnJlZFRyYW5zZm9y
bSgpCisjZGVmaW5lIEFWQ0ZBc3NldFByb3BlcnR5UHJlZmVycmVkVHJhbnNmb3JtIGdldEFWQ0ZB
c3NldFByb3BlcnR5UHJlZmVycmVkVHJhbnNmb3JtKCkKIAogU09GVF9MSU5LX1ZBUklBQkxFX0RM
TF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZBc3NldFByb3BlcnR5VHJhY2tzLCBjb25zdCBD
RlN0cmluZ1JlZik7Ci0jZGVmaW5lIEFWQ0ZBc3NldFByb3BlcnR5VHJhY2tzIGdldF9BVkNGQXNz
ZXRQcm9wZXJ0eVRyYWNrcygpCisjZGVmaW5lIEFWQ0ZBc3NldFByb3BlcnR5VHJhY2tzIGdldEFW
Q0ZBc3NldFByb3BlcnR5VHJhY2tzKCkKIAogU09GVF9MSU5LX1ZBUklBQkxFX0RMTF9JTVBPUlQo
QVZGb3VuZGF0aW9uQ0YsIEFWQ0ZNZWRpYUNoYXJhY3RlcmlzdGljQXVkaWJsZSwgY29uc3QgQ0ZT
dHJpbmdSZWYpOwotI2RlZmluZSBBVkNGTWVkaWFDaGFyYWN0ZXJpc3RpY0F1ZGlibGUgZ2V0X0FW
Q0ZNZWRpYUNoYXJhY3RlcmlzdGljQXVkaWJsZSgpCisjZGVmaW5lIEFWQ0ZNZWRpYUNoYXJhY3Rl
cmlzdGljQXVkaWJsZSBnZXRBVkNGTWVkaWFDaGFyYWN0ZXJpc3RpY0F1ZGlibGUoKQogCiBTT0ZU
X0xJTktfVkFSSUFCTEVfRExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZDRk1lZGlhQ2hhcmFj
dGVyaXN0aWNWaXN1YWwsIGNvbnN0IENGU3RyaW5nUmVmKTsKLSNkZWZpbmUgQVZDRk1lZGlhQ2hh
cmFjdGVyaXN0aWNWaXN1YWwgZ2V0X0FWQ0ZNZWRpYUNoYXJhY3RlcmlzdGljVmlzdWFsKCkKKyNk
ZWZpbmUgQVZDRk1lZGlhQ2hhcmFjdGVyaXN0aWNWaXN1YWwgZ2V0QVZDRk1lZGlhQ2hhcmFjdGVy
aXN0aWNWaXN1YWwoKQogCiBTT0ZUX0xJTktfVkFSSUFCTEVfRExMX0lNUE9SVChBVkZvdW5kYXRp
b25DRiwgQVZDRk1lZGlhVHlwZUF1ZGlvLCBjb25zdCBDRlN0cmluZ1JlZik7Ci0jZGVmaW5lIEFW
Q0ZNZWRpYVR5cGVBdWRpbyBnZXRfQVZDRk1lZGlhVHlwZUF1ZGlvKCkKKyNkZWZpbmUgQVZDRk1l
ZGlhVHlwZUF1ZGlvIGdldEFWQ0ZNZWRpYVR5cGVBdWRpbygpCiAKIFNPRlRfTElOS19WQVJJQUJM
RV9ETExfSU1QT1JUKEFWRm91bmRhdGlvbkNGLCBBVkNGTWVkaWFUeXBlQ2xvc2VkQ2FwdGlvbiwg
Y29uc3QgQ0ZTdHJpbmdSZWYpOwotI2RlZmluZSBBVkNGTWVkaWFUeXBlQ2xvc2VkQ2FwdGlvbiBn
ZXRfQVZDRk1lZGlhVHlwZUNsb3NlZENhcHRpb24oKQorI2RlZmluZSBBVkNGTWVkaWFUeXBlQ2xv
c2VkQ2FwdGlvbiBnZXRBVkNGTWVkaWFUeXBlQ2xvc2VkQ2FwdGlvbigpCiAKIFNPRlRfTElOS19W
QVJJQUJMRV9ETExfSU1QT1JUKEFWRm91bmRhdGlvbkNGLCBBVkNGTWVkaWFUeXBlVmlkZW8sIGNv
bnN0IENGU3RyaW5nUmVmKTsKLSNkZWZpbmUgQVZDRk1lZGlhVHlwZVZpZGVvIGdldF9BVkNGTWVk
aWFUeXBlVmlkZW8oKQorI2RlZmluZSBBVkNGTWVkaWFUeXBlVmlkZW8gZ2V0QVZDRk1lZGlhVHlw
ZVZpZGVvKCkKKworU09GVF9MSU5LX1ZBUklBQkxFX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0Ys
IEFWQ0ZNZXRhZGF0YUNvbW1vbktleVRpdGxlLCBjb25zdCBDRlN0cmluZ1JlZik7CisjZGVmaW5l
IEFWQ0ZNZXRhZGF0YUNvbW1vbktleVRpdGxlIGdldEFWQ0ZNZXRhZGF0YUNvbW1vbktleVRpdGxl
KCkKKworU09GVF9MSU5LX1ZBUklBQkxFX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZN
ZXRhZGF0YUtleVNwYWNlQ29tbW9uLCBjb25zdCBDRlN0cmluZ1JlZik7CisjZGVmaW5lIEFWQ0ZN
ZXRhZGF0YUtleVNwYWNlQ29tbW9uIGdldEFWQ0ZNZXRhZGF0YUtleVNwYWNlQ29tbW9uKCkKIAog
U09GVF9MSU5LX1ZBUklBQkxFX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZQbGF5ZXJJ
dGVtRGlkUGxheVRvRW5kVGltZU5vdGlmaWNhdGlvbiwgY29uc3QgQ0ZTdHJpbmdSZWYpOwotI2Rl
ZmluZSBBVkNGUGxheWVySXRlbURpZFBsYXlUb0VuZFRpbWVOb3RpZmljYXRpb24gZ2V0X0FWQ0ZQ
bGF5ZXJJdGVtRGlkUGxheVRvRW5kVGltZU5vdGlmaWNhdGlvbigpCisjZGVmaW5lIEFWQ0ZQbGF5
ZXJJdGVtRGlkUGxheVRvRW5kVGltZU5vdGlmaWNhdGlvbiBnZXRBVkNGUGxheWVySXRlbURpZFBs
YXlUb0VuZFRpbWVOb3RpZmljYXRpb24oKQorCitTT0ZUX0xJTktfVkFSSUFCTEVfRExMX0lNUE9S
VChBVkZvdW5kYXRpb25DRiwgQVZDRlBsYXllckl0ZW1EdXJhdGlvbkNoYW5nZWROb3RpZmljYXRp
b24sIGNvbnN0IENGU3RyaW5nUmVmKTsKKyNkZWZpbmUgQVZDRlBsYXllckl0ZW1EdXJhdGlvbkNo
YW5nZWROb3RpZmljYXRpb24gZ2V0QVZDRlBsYXllckl0ZW1EdXJhdGlvbkNoYW5nZWROb3RpZmlj
YXRpb24oKQogCiBTT0ZUX0xJTktfVkFSSUFCTEVfRExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwg
QVZDRlBsYXllckl0ZW1Jc1BsYXliYWNrQnVmZmVyRW1wdHlDaGFuZ2VkTm90aWZpY2F0aW9uLCBj
b25zdCBDRlN0cmluZ1JlZik7Ci0jZGVmaW5lIEFWQ0ZQbGF5ZXJJdGVtSXNQbGF5YmFja0J1ZmZl
ckVtcHR5Q2hhbmdlZE5vdGlmaWNhdGlvbiBnZXRfQVZDRlBsYXllckl0ZW1Jc1BsYXliYWNrQnVm
ZmVyRW1wdHlDaGFuZ2VkTm90aWZpY2F0aW9uKCkKKyNkZWZpbmUgQVZDRlBsYXllckl0ZW1Jc1Bs
YXliYWNrQnVmZmVyRW1wdHlDaGFuZ2VkTm90aWZpY2F0aW9uIGdldEFWQ0ZQbGF5ZXJJdGVtSXNQ
bGF5YmFja0J1ZmZlckVtcHR5Q2hhbmdlZE5vdGlmaWNhdGlvbigpCiAKIFNPRlRfTElOS19WQVJJ
QUJMRV9ETExfSU1QT1JUKEFWRm91bmRhdGlvbkNGLCBBVkNGUGxheWVySXRlbUlzUGxheWJhY2tC
dWZmZXJGdWxsQ2hhbmdlZE5vdGlmaWNhdGlvbiwgY29uc3QgQ0ZTdHJpbmdSZWYpOwotI2RlZmlu
ZSBBVkNGUGxheWVySXRlbUlzUGxheWJhY2tCdWZmZXJGdWxsQ2hhbmdlZE5vdGlmaWNhdGlvbiBn
ZXRfQVZDRlBsYXllckl0ZW1Jc1BsYXliYWNrQnVmZmVyRnVsbENoYW5nZWROb3RpZmljYXRpb24o
KQorI2RlZmluZSBBVkNGUGxheWVySXRlbUlzUGxheWJhY2tCdWZmZXJGdWxsQ2hhbmdlZE5vdGlm
aWNhdGlvbiBnZXRBVkNGUGxheWVySXRlbUlzUGxheWJhY2tCdWZmZXJGdWxsQ2hhbmdlZE5vdGlm
aWNhdGlvbigpCiAKIFNPRlRfTElOS19WQVJJQUJMRV9ETExfSU1QT1JUKEFWRm91bmRhdGlvbkNG
LCBBVkNGUGxheWVySXRlbUlzUGxheWJhY2tMaWtlbHlUb0tlZXBVcENoYW5nZWROb3RpZmljYXRp
b24sIGNvbnN0IENGU3RyaW5nUmVmKTsKLSNkZWZpbmUgQVZDRlBsYXllckl0ZW1Jc1BsYXliYWNr
TGlrZWx5VG9LZWVwVXBDaGFuZ2VkTm90aWZpY2F0aW9uIGdldF9BVkNGUGxheWVySXRlbUlzUGxh
eWJhY2tMaWtlbHlUb0tlZXBVcENoYW5nZWROb3RpZmljYXRpb24oKQorI2RlZmluZSBBVkNGUGxh
eWVySXRlbUlzUGxheWJhY2tMaWtlbHlUb0tlZXBVcENoYW5nZWROb3RpZmljYXRpb24gZ2V0QVZD
RlBsYXllckl0ZW1Jc1BsYXliYWNrTGlrZWx5VG9LZWVwVXBDaGFuZ2VkTm90aWZpY2F0aW9uKCkK
IAogU09GVF9MSU5LX1ZBUklBQkxFX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZQbGF5
ZXJJdGVtTG9hZGVkVGltZVJhbmdlc0NoYW5nZWROb3RpZmljYXRpb24sIGNvbnN0IENGU3RyaW5n
UmVmKTsKLSNkZWZpbmUgQVZDRlBsYXllckl0ZW1Mb2FkZWRUaW1lUmFuZ2VzQ2hhbmdlZE5vdGlm
aWNhdGlvbiBnZXRfQVZDRlBsYXllckl0ZW1Mb2FkZWRUaW1lUmFuZ2VzQ2hhbmdlZE5vdGlmaWNh
dGlvbigpCisjZGVmaW5lIEFWQ0ZQbGF5ZXJJdGVtTG9hZGVkVGltZVJhbmdlc0NoYW5nZWROb3Rp
ZmljYXRpb24gZ2V0QVZDRlBsYXllckl0ZW1Mb2FkZWRUaW1lUmFuZ2VzQ2hhbmdlZE5vdGlmaWNh
dGlvbigpCiAKIFNPRlRfTElOS19WQVJJQUJMRV9ETExfSU1QT1JUKEFWRm91bmRhdGlvbkNGLCBB
VkNGUGxheWVySXRlbVByZXNlbnRhdGlvblNpemVDaGFuZ2VkTm90aWZpY2F0aW9uLCBjb25zdCBD
RlN0cmluZ1JlZik7Ci0jZGVmaW5lIEFWQ0ZQbGF5ZXJJdGVtUHJlc2VudGF0aW9uU2l6ZUNoYW5n
ZWROb3RpZmljYXRpb24gZ2V0X0FWQ0ZQbGF5ZXJJdGVtUHJlc2VudGF0aW9uU2l6ZUNoYW5nZWRO
b3RpZmljYXRpb24oKQorI2RlZmluZSBBVkNGUGxheWVySXRlbVByZXNlbnRhdGlvblNpemVDaGFu
Z2VkTm90aWZpY2F0aW9uIGdldEFWQ0ZQbGF5ZXJJdGVtUHJlc2VudGF0aW9uU2l6ZUNoYW5nZWRO
b3RpZmljYXRpb24oKQogCiBTT0ZUX0xJTktfVkFSSUFCTEVfRExMX0lNUE9SVChBVkZvdW5kYXRp
b25DRiwgQVZDRlBsYXllckl0ZW1TZWVrYWJsZVRpbWVSYW5nZXNDaGFuZ2VkTm90aWZpY2F0aW9u
LCBjb25zdCBDRlN0cmluZ1JlZik7Ci0jZGVmaW5lIEFWQ0ZQbGF5ZXJJdGVtU2Vla2FibGVUaW1l
UmFuZ2VzQ2hhbmdlZE5vdGlmaWNhdGlvbiBnZXRfQVZDRlBsYXllckl0ZW1TZWVrYWJsZVRpbWVS
YW5nZXNDaGFuZ2VkTm90aWZpY2F0aW9uKCkKKyNkZWZpbmUgQVZDRlBsYXllckl0ZW1TZWVrYWJs
ZVRpbWVSYW5nZXNDaGFuZ2VkTm90aWZpY2F0aW9uIGdldEFWQ0ZQbGF5ZXJJdGVtU2Vla2FibGVU
aW1lUmFuZ2VzQ2hhbmdlZE5vdGlmaWNhdGlvbigpCiAKIFNPRlRfTElOS19WQVJJQUJMRV9ETExf
SU1QT1JUKEFWRm91bmRhdGlvbkNGLCBBVkNGUGxheWVySXRlbVN0YXR1c0NoYW5nZWROb3RpZmlj
YXRpb24sIGNvbnN0IENGU3RyaW5nUmVmKTsKLSNkZWZpbmUgQVZDRlBsYXllckl0ZW1TdGF0dXND
aGFuZ2VkTm90aWZpY2F0aW9uIGdldF9BVkNGUGxheWVySXRlbVN0YXR1c0NoYW5nZWROb3RpZmlj
YXRpb24oKQorI2RlZmluZSBBVkNGUGxheWVySXRlbVN0YXR1c0NoYW5nZWROb3RpZmljYXRpb24g
Z2V0QVZDRlBsYXllckl0ZW1TdGF0dXNDaGFuZ2VkTm90aWZpY2F0aW9uKCkKIAogU09GVF9MSU5L
X1ZBUklBQkxFX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZQbGF5ZXJJdGVtVHJhY2tz
Q2hhbmdlZE5vdGlmaWNhdGlvbiwgY29uc3QgQ0ZTdHJpbmdSZWYpOwotI2RlZmluZSBBVkNGUGxh
eWVySXRlbVRyYWNrc0NoYW5nZWROb3RpZmljYXRpb24gZ2V0X0FWQ0ZQbGF5ZXJJdGVtVHJhY2tz
Q2hhbmdlZE5vdGlmaWNhdGlvbigpCisjZGVmaW5lIEFWQ0ZQbGF5ZXJJdGVtVHJhY2tzQ2hhbmdl
ZE5vdGlmaWNhdGlvbiBnZXRBVkNGUGxheWVySXRlbVRyYWNrc0NoYW5nZWROb3RpZmljYXRpb24o
KQogCiBTT0ZUX0xJTktfVkFSSUFCTEVfRExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZDRlBs
YXllclJhdGVDaGFuZ2VkTm90aWZpY2F0aW9uLCBjb25zdCBDRlN0cmluZ1JlZik7Ci0jZGVmaW5l
IEFWQ0ZQbGF5ZXJSYXRlQ2hhbmdlZE5vdGlmaWNhdGlvbiBnZXRfQVZDRlBsYXllclJhdGVDaGFu
Z2VkTm90aWZpY2F0aW9uKCkKKyNkZWZpbmUgQVZDRlBsYXllclJhdGVDaGFuZ2VkTm90aWZpY2F0
aW9uIGdldEFWQ0ZQbGF5ZXJSYXRlQ2hhbmdlZE5vdGlmaWNhdGlvbigpCiAKIFNPRlRfTElOS19W
QVJJQUJMRV9ETExfSU1QT1JUX09QVElPTkFMKEFWRm91bmRhdGlvbkNGLCBBVkNGUGxheWVyRW5h
YmxlSGFyZHdhcmVBY2NlbGVyYXRlZFZpZGVvRGVjb2RlcktleSwgY29uc3QgQ0ZTdHJpbmdSZWYp
OwotI2RlZmluZSBBVkNGUGxheWVyRW5hYmxlSGFyZHdhcmVBY2NlbGVyYXRlZFZpZGVvRGVjb2Rl
cktleSBnZXRfQVZDRlBsYXllckVuYWJsZUhhcmR3YXJlQWNjZWxlcmF0ZWRWaWRlb0RlY29kZXJL
ZXkoKQorI2RlZmluZSBBVkNGUGxheWVyRW5hYmxlSGFyZHdhcmVBY2NlbGVyYXRlZFZpZGVvRGVj
b2RlcktleSBnZXRBVkNGUGxheWVyRW5hYmxlSGFyZHdhcmVBY2NlbGVyYXRlZFZpZGVvRGVjb2Rl
cktleSgpCisKKyNpZiBIQVZFKEFWRk9VTkRBVElPTl9NRURJQV9TRUxFQ1RJT05fR1JPVVApICYm
IEhBVkUoQVZGT1VOREFUSU9OX0xFR0lCTEVfT1VUUFVUX1NVUFBPUlQpCisKK1NPRlRfTElOS19W
QVJJQUJMRV9ETExfSU1QT1JUKEFWRm91bmRhdGlvbkNGLCBBVkNGQXNzZXRQcm9wZXJ0eUF2YWls
YWJsZU1lZGlhQ2hhcmFjdGVyaXN0aWNzV2l0aE1lZGlhU2VsZWN0aW9uT3B0aW9ucywgY29uc3Qg
Q0ZTdHJpbmdSZWYpOworI2RlZmluZSBBVkNGQXNzZXRQcm9wZXJ0eUF2YWlsYWJsZU1lZGlhQ2hh
cmFjdGVyaXN0aWNzV2l0aE1lZGlhU2VsZWN0aW9uT3B0aW9ucyAgZ2V0QVZDRkFzc2V0UHJvcGVy
dHlBdmFpbGFibGVNZWRpYUNoYXJhY3RlcmlzdGljc1dpdGhNZWRpYVNlbGVjdGlvbk9wdGlvbnMo
KQorCitTT0ZUX0xJTktfVkFSSUFCTEVfRExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZDRk1l
ZGlhQ2hhcmFjdGVyaXN0aWNFYXN5VG9SZWFkLCBjb25zdCBDRlN0cmluZ1JlZik7CisjZGVmaW5l
IEFWQ0ZNZWRpYUNoYXJhY3RlcmlzdGljRWFzeVRvUmVhZCBnZXRBVkNGTWVkaWFDaGFyYWN0ZXJp
c3RpY0Vhc3lUb1JlYWQoKQorCitTT0ZUX0xJTktfVkFSSUFCTEVfRExMX0lNUE9SVChBVkZvdW5k
YXRpb25DRiwgQVZDRk1lZGlhQ2hhcmFjdGVyaXN0aWNDb250YWluc09ubHlGb3JjZWRTdWJ0aXRs
ZXMsIGNvbnN0IENGU3RyaW5nUmVmKTsKKyNkZWZpbmUgQVZDRk1lZGlhQ2hhcmFjdGVyaXN0aWND
b250YWluc09ubHlGb3JjZWRTdWJ0aXRsZXMgZ2V0QVZDRk1lZGlhQ2hhcmFjdGVyaXN0aWNDb250
YWluc09ubHlGb3JjZWRTdWJ0aXRsZXMoKQorCitTT0ZUX0xJTktfVkFSSUFCTEVfRExMX0lNUE9S
VChBVkZvdW5kYXRpb25DRiwgQVZDRk1lZGlhQ2hhcmFjdGVyaXN0aWNEZXNjcmliZXNNdXNpY0Fu
ZFNvdW5kRm9yQWNjZXNzaWJpbGl0eSwgY29uc3QgQ0ZTdHJpbmdSZWYpOworI2RlZmluZSBBVkNG
TWVkaWFDaGFyYWN0ZXJpc3RpY0Rlc2NyaWJlc011c2ljQW5kU291bmRGb3JBY2Nlc3NpYmlsaXR5
IGdldEFWQ0ZNZWRpYUNoYXJhY3RlcmlzdGljRGVzY3JpYmVzTXVzaWNBbmRTb3VuZEZvckFjY2Vz
c2liaWxpdHkoKQorCitTT0ZUX0xJTktfVkFSSUFCTEVfRExMX0lNUE9SVChBVkZvdW5kYXRpb25D
RiwgQVZDRk1lZGlhQ2hhcmFjdGVyaXN0aWNJc01haW5Qcm9ncmFtQ29udGVudCwgY29uc3QgQ0ZT
dHJpbmdSZWYpOworI2RlZmluZSBBVkNGTWVkaWFDaGFyYWN0ZXJpc3RpY0lzTWFpblByb2dyYW1D
b250ZW50IGdldEFWQ0ZNZWRpYUNoYXJhY3RlcmlzdGljSXNNYWluUHJvZ3JhbUNvbnRlbnQoKQor
CitTT0ZUX0xJTktfVkFSSUFCTEVfRExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZDRk1lZGlh
Q2hhcmFjdGVyaXN0aWNMZWdpYmxlLCBjb25zdCBDRlN0cmluZ1JlZik7CisjZGVmaW5lIEFWQ0ZN
ZWRpYUNoYXJhY3RlcmlzdGljTGVnaWJsZSBnZXRBVkNGTWVkaWFDaGFyYWN0ZXJpc3RpY0xlZ2li
bGUoKQorCitTT0ZUX0xJTktfVkFSSUFCTEVfRExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZD
Rk1lZGlhQ2hhcmFjdGVyaXN0aWNUcmFuc2NyaWJlc1Nwb2tlbkRpYWxvZ0ZvckFjY2Vzc2liaWxp
dHksIGNvbnN0IENGU3RyaW5nUmVmKTsKKyNkZWZpbmUgQVZDRk1lZGlhQ2hhcmFjdGVyaXN0aWNU
cmFuc2NyaWJlc1Nwb2tlbkRpYWxvZ0ZvckFjY2Vzc2liaWxpdHkgZ2V0QVZDRk1lZGlhQ2hhcmFj
dGVyaXN0aWNUcmFuc2NyaWJlc1Nwb2tlbkRpYWxvZ0ZvckFjY2Vzc2liaWxpdHkoKQorCitTT0ZU
X0xJTktfVkFSSUFCTEVfRExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZDRk1lZGlhVHlwZVN1
YnRpdGxlLCBjb25zdCBDRlN0cmluZ1JlZik7CisjZGVmaW5lIEFWQ0ZNZWRpYVR5cGVTdWJ0aXRs
ZSBnZXRBVkNGTWVkaWFUeXBlU3VidGl0bGUoKQorCitTT0ZUX0xJTktfVkFSSUFCTEVfRExMX0lN
UE9SVChBVkZvdW5kYXRpb25DRiwgQVZDRlBsYXllckFwcGxpZXNNZWRpYVNlbGVjdGlvbkNyaXRl
cmlhQXV0b21hdGljYWxseUtleSwgY29uc3QgQ0ZTdHJpbmdSZWYpOworI2RlZmluZSBBVkNGUGxh
eWVyQXBwbGllc01lZGlhU2VsZWN0aW9uQ3JpdGVyaWFBdXRvbWF0aWNhbGx5S2V5IGdldEFWQ0ZQ
bGF5ZXJBcHBsaWVzTWVkaWFTZWxlY3Rpb25Dcml0ZXJpYUF1dG9tYXRpY2FsbHlLZXkoKQorCitT
T0ZUX0xJTktfVkFSSUFCTEVfRExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZDRlBsYXllckl0
ZW1MZWdpYmxlT3V0cHV0VGV4dFN0eWxpbmdSZXNvbHV0aW9uU291cmNlQW5kUnVsZXNPbmx5LCBj
b25zdCBDRlN0cmluZ1JlZik7CisjZGVmaW5lIEFWQ0ZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1dFRl
eHRTdHlsaW5nUmVzb2x1dGlvblNvdXJjZUFuZFJ1bGVzT25seSBnZXRBVkNGUGxheWVySXRlbUxl
Z2libGVPdXRwdXRUZXh0U3R5bGluZ1Jlc29sdXRpb25Tb3VyY2VBbmRSdWxlc09ubHkoKQorCisj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9jZi9Db3JlTWVkaWFTb2Z0TGlua2luZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9Db3JlTWVkaWFTb2Z0TGlua2luZy5o
CShyZXZpc2lvbiAxNTI4NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vY2YvQ29yZU1lZGlhU29mdExpbmtpbmcuaAkod29ya2luZyBjb3B5KQpAQCAt
NTMsNyArNTMsMTAgQEAgU09GVF9MSU5LX0RMTF9JTVBPUlQoQ29yZU1lZGlhLCBDTVRpbWVNYQog
U09GVF9MSU5LX0RMTF9JTVBPUlQoQ29yZU1lZGlhLCBDTVRpbWVNYWtlV2l0aFNlY29uZHMsIENN
VGltZSwgX19jZGVjbCwgKEZsb2F0NjQgc2Vjb25kcywgaW50MzJfdCBwcmVmZXJyZWRUaW1lU2Nh
bGUpLCAoc2Vjb25kcywgcHJlZmVycmVkVGltZVNjYWxlKSkKICNkZWZpbmUgQ01UaW1lTWFrZVdp
dGhTZWNvbmRzIHNvZnRMaW5rX0NNVGltZU1ha2VXaXRoU2Vjb25kcwogCitTT0ZUX0xJTktfRExM
X0lNUE9SVChDb3JlTWVkaWEsIENNVGltZVJhbmdlR2V0RW5kLCBDTVRpbWUsIF9fY2RlY2wsIChD
TVRpbWVSYW5nZSByYW5nZSksIChyYW5nZSkpCisjZGVmaW5lIENNVGltZVJhbmdlR2V0RW5kIHNv
ZnRMaW5rX0NNVGltZVJhbmdlR2V0RW5kCisKIC8vIFZhcmlhYmxlcwogCiBTT0ZUX0xJTktfVkFS
SUFCTEVfRExMX0lNUE9SVChDb3JlTWVkaWEsIGtDTVRpbWVaZXJvLCBjb25zdCBDTVRpbWUpOwot
I2RlZmluZSBrQ01UaW1lWmVybyBnZXRfa0NNVGltZVplcm8oKQorI2RlZmluZSBrQ01UaW1lWmVy
byBnZXRrQ01UaW1lWmVybygpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vY2YvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0YuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9J
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRi5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUFWQ0YuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTgzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgUExBVEZPUk0oV0lOKSAmJiBFTkFCTEUoVklERU8p
ICYmIEhBVkUoQVZGT1VOREFUSU9OX01FRElBX1NFTEVDVElPTl9HUk9VUCkKKworI2luY2x1ZGUg
IkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGLmgiCisKKyNpbmNsdWRlICJGbG9hdENvbnZlcnNp
b24uaCIKKyNpbmNsdWRlICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlLmgiCisjaW5jbHVkZSAiSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRl
ICJTb2Z0TGlua2luZy5oIgorCisjaW5jbHVkZSA8QVZGb3VuZGF0aW9uQ0YvQVZDRlBsYXllckl0
ZW1MZWdpYmxlT3V0cHV0Lmg+CisjaW5jbHVkZSA8QVZGb3VuZGF0aW9uQ0YvQVZGb3VuZGF0aW9u
Q0YuaD4KKworI2luY2x1ZGUgPGQzZDkuaD4KKworLy8gVGhlIHNvZnRsaW5rIGhlYWRlciBmaWxl
cyBtdXN0IGJlIGluY2x1ZGVkIGFmdGVyIHRoZSBBVkNGIGFuZCBDb3JlTWVkaWEgaGVhZGVyIGZp
bGVzLgorI2luY2x1ZGUgIkFWRm91bmRhdGlvbkNGU29mdExpbmtpbmcuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRjo6SW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUFWQ0YoQVZGSW5iYW5kVHJhY2tQYXJlbnQqIHBsYXllciwgQVZDRk1lZGlhU2VsZWN0
aW9uT3B0aW9uUmVmIHNlbGVjdGlvbikKKyAgICA6IEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkYo
cGxheWVyKQorICAgICwgbV9tZWRpYVNlbGVjdGlvbk9wdGlvbihzZWxlY3Rpb24pCit7Cit9CisK
K3ZvaWQgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0Y6OmRpc2Nvbm5lY3QoKQoreworICAgIG1f
bWVkaWFTZWxlY3Rpb25PcHRpb24gPSAwOworICAgIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6
OmRpc2Nvbm5lY3QoKTsKK30KKworSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6S2luZCBJbmJhbmRU
ZXh0VHJhY2tQcml2YXRlQVZDRjo6a2luZCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX21lZGlhU2Vs
ZWN0aW9uT3B0aW9uKQorICAgICAgICByZXR1cm4gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6Tm9u
ZTsKKworICAgIENGU3RyaW5nUmVmIG1lZGlhVHlwZSA9IEFWQ0ZNZWRpYVNlbGVjdGlvbk9wdGlv
bkdldE1lZGlhVHlwZShtZWRpYVNlbGVjdGlvbk9wdGlvbigpKTsKKyAgICAKKyAgICBpZiAoQ0ZT
dHJpbmdDb21wYXJlKG1lZGlhVHlwZSwgQVZDRk1lZGlhVHlwZUNsb3NlZENhcHRpb24sIGtDRkNv
bXBhcmVDYXNlSW5zZW5zaXRpdmUpID09IGtDRkNvbXBhcmVFcXVhbFRvKQorICAgICAgICByZXR1
cm4gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6Q2FwdGlvbnM7CisgICAgaWYgKENGU3RyaW5nQ29t
cGFyZShtZWRpYVR5cGUsIEFWQ0ZNZWRpYVR5cGVTdWJ0aXRsZSwga0NGQ29tcGFyZUNhc2VJbnNl
bnNpdGl2ZSkgPT0ga0NGQ29tcGFyZUVxdWFsVG8pIHsKKyAgICAgICAgaWYgKEFWQ0ZNZWRpYVNl
bGVjdGlvbk9wdGlvbkhhc01lZGlhQ2hhcmFjdGVyaXN0aWMobWVkaWFTZWxlY3Rpb25PcHRpb24o
KSwgQVZDRk1lZGlhQ2hhcmFjdGVyaXN0aWNDb250YWluc09ubHlGb3JjZWRTdWJ0aXRsZXMpKQor
ICAgICAgICAgICAgcmV0dXJuIEluYmFuZFRleHRUcmFja1ByaXZhdGU6OkZvcmNlZDsKKworICAg
ICAgICAvLyBBbiAiU0RIIiB0cmFjayBpcyBhIHN1YnRpdGxlIHRyYWNrIGNyZWF0ZWQgZm9yIHRo
ZSBkZWFmIG9yIGhhcmQtb2YtaGVhcmluZy4gImNhcHRpb25zIiBpbiBXZWJWVFQgYXJlCisgICAg
ICAgIC8vICJsYWJlbGVkIGFzIGFwcHJvcHJpYXRlIGZvciB0aGUgaGFyZC1vZi1oZWFyaW5nIiwg
c28gdGFnIFNESCBzdXRpdGxlcyBhcyAiY2FwdGlvbnMiLgorICAgICAgICBpZiAoQVZDRk1lZGlh
U2VsZWN0aW9uT3B0aW9uSGFzTWVkaWFDaGFyYWN0ZXJpc3RpYyhtZWRpYVNlbGVjdGlvbk9wdGlv
bigpLCBBVkNGTWVkaWFDaGFyYWN0ZXJpc3RpY1RyYW5zY3JpYmVzU3Bva2VuRGlhbG9nRm9yQWNj
ZXNzaWJpbGl0eSkpCisgICAgICAgICAgICByZXR1cm4gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6
Q2FwdGlvbnM7CisgICAgICAgIGlmIChBVkNGTWVkaWFTZWxlY3Rpb25PcHRpb25IYXNNZWRpYUNo
YXJhY3RlcmlzdGljKG1lZGlhU2VsZWN0aW9uT3B0aW9uKCksIEFWQ0ZNZWRpYUNoYXJhY3Rlcmlz
dGljRGVzY3JpYmVzTXVzaWNBbmRTb3VuZEZvckFjY2Vzc2liaWxpdHkpKQorICAgICAgICAgICAg
cmV0dXJuIEluYmFuZFRleHRUcmFja1ByaXZhdGU6OkNhcHRpb25zOworICAgICAgICAKKyAgICAg
ICAgcmV0dXJuIEluYmFuZFRleHRUcmFja1ByaXZhdGU6OlN1YnRpdGxlczsKKyAgICB9CisKKyAg
ICByZXR1cm4gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6Q2FwdGlvbnM7Cit9CisKK2Jvb2wgSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0Y6OmlzQ2xvc2VkQ2FwdGlvbnMoKSBjb25zdAoreworICAg
IGlmICghbV9tZWRpYVNlbGVjdGlvbk9wdGlvbikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgQ0ZTdHJpbmdSZWYgbWVkaWFUeXBlID0gQVZDRk1lZGlhU2VsZWN0aW9uT3B0aW9uR2V0TWVk
aWFUeXBlKG1lZGlhU2VsZWN0aW9uT3B0aW9uKCkpOworCisgICAgcmV0dXJuIChDRlN0cmluZ0Nv
bXBhcmUobWVkaWFUeXBlLCBBVkNGTWVkaWFUeXBlQ2xvc2VkQ2FwdGlvbiwga0NGQ29tcGFyZUNh
c2VJbnNlbnNpdGl2ZSkgPT0ga0NGQ29tcGFyZUVxdWFsVG8pOworfQorCitib29sIEluYmFuZFRl
eHRUcmFja1ByaXZhdGVBVkNGOjppc1NESCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX21lZGlhU2Vs
ZWN0aW9uT3B0aW9uKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgQ0ZTdHJpbmdS
ZWYgbWVkaWFUeXBlID0gQVZDRk1lZGlhU2VsZWN0aW9uT3B0aW9uR2V0TWVkaWFUeXBlKG1lZGlh
U2VsZWN0aW9uT3B0aW9uKCkpOworCisgICAgaWYgKENGU3RyaW5nQ29tcGFyZShtZWRpYVR5cGUs
IEFWQ0ZNZWRpYVR5cGVTdWJ0aXRsZSwga0NGQ29tcGFyZUNhc2VJbnNlbnNpdGl2ZSkgIT0ga0NG
Q29tcGFyZUVxdWFsVG8pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChBVkNGTWVk
aWFTZWxlY3Rpb25PcHRpb25IYXNNZWRpYUNoYXJhY3RlcmlzdGljKG1lZGlhU2VsZWN0aW9uT3B0
aW9uKCksIEFWQ0ZNZWRpYUNoYXJhY3RlcmlzdGljVHJhbnNjcmliZXNTcG9rZW5EaWFsb2dGb3JB
Y2Nlc3NpYmlsaXR5KQorICAgICAgICAmJiBBVkNGTWVkaWFTZWxlY3Rpb25PcHRpb25IYXNNZWRp
YUNoYXJhY3RlcmlzdGljKG1lZGlhU2VsZWN0aW9uT3B0aW9uKCksIEFWQ0ZNZWRpYUNoYXJhY3Rl
cmlzdGljRGVzY3JpYmVzTXVzaWNBbmRTb3VuZEZvckFjY2Vzc2liaWxpdHkpKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKyAgICAKK2Jvb2wgSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWQ0Y6OmNvbnRhaW5zT25seUZvcmNlZFN1YnRpdGxlcygpIGNvbnN0Cit7
CisgICAgaWYgKCFtX21lZGlhU2VsZWN0aW9uT3B0aW9uKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgCisgICAgcmV0dXJuIEFWQ0ZNZWRpYVNlbGVjdGlvbk9wdGlvbkhhc01lZGlhQ2hhcmFj
dGVyaXN0aWMobWVkaWFTZWxlY3Rpb25PcHRpb24oKSwgQVZDRk1lZGlhQ2hhcmFjdGVyaXN0aWND
b250YWluc09ubHlGb3JjZWRTdWJ0aXRsZXMpOworfQorCitib29sIEluYmFuZFRleHRUcmFja1By
aXZhdGVBVkNGOjppc01haW5Qcm9ncmFtQ29udGVudCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX21l
ZGlhU2VsZWN0aW9uT3B0aW9uKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgcmV0
dXJuIEFWQ0ZNZWRpYVNlbGVjdGlvbk9wdGlvbkhhc01lZGlhQ2hhcmFjdGVyaXN0aWMobWVkaWFT
ZWxlY3Rpb25PcHRpb24oKSwgQVZDRk1lZGlhQ2hhcmFjdGVyaXN0aWNJc01haW5Qcm9ncmFtQ29u
dGVudCk7Cit9CisKK2Jvb2wgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0Y6OmlzRWFzeVRvUmVh
ZCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX21lZGlhU2VsZWN0aW9uT3B0aW9uKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gQVZDRk1lZGlhU2VsZWN0aW9uT3B0aW9uSGFzTWVk
aWFDaGFyYWN0ZXJpc3RpYyhtZWRpYVNlbGVjdGlvbk9wdGlvbigpLCBBVkNGTWVkaWFDaGFyYWN0
ZXJpc3RpY0Vhc3lUb1JlYWQpOworfQorCitBdG9taWNTdHJpbmcgSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUFWQ0Y6OmxhYmVsKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fbWVkaWFTZWxlY3Rpb25PcHRp
b24pCisgICAgICAgIHJldHVybiBlbXB0eUF0b207CisKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IHRpdGxlOworCisgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGNvbW1vbk1ldGFEYXRhID0g
YWRvcHRDRihBVkNGTWVkaWFTZWxlY3Rpb25PcHRpb25Db3B5Q29tbW9uTWV0YWRhdGEobWVkaWFT
ZWxlY3Rpb25PcHRpb24oKSkpOworICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiB0aXRsZXMgPSBh
ZG9wdENGKEFWQ0ZNZXRhZGF0YUl0ZW1Db3B5SXRlbXNXaXRoS2V5QW5kS2V5U3BhY2UoY29tbW9u
TWV0YURhdGEuZ2V0KCksIEFWQ0ZNZXRhZGF0YUNvbW1vbktleVRpdGxlLCBBVkNGTWV0YWRhdGFL
ZXlTcGFjZUNvbW1vbikpOworICAgIENGSW5kZXggdGl0bGVzQ291bnQgPSBDRkFycmF5R2V0Q291
bnQodGl0bGVzLmdldCgpKTsKKyAgICBpZiAoIXRpdGxlc0NvdW50KQorICAgICAgICByZXR1cm4g
ZW1wdHlBdG9tOworCisgICAgLy8gSWYgcG9zc2libGUsIHJldHVybiBhIHRpdGxlIGluIG9uZSBv
ZiB0aGUgdXNlcidzIHByZWZlcnJlZCBsYW5ndWFnZXMuCisgICAgUmV0YWluUHRyPENGQXJyYXlS
ZWY+IHByZWZlcnJlZExhbmd1YWdlcyA9IENGTG9jYWxlQ29weVByZWZlcnJlZExhbmd1YWdlcygp
OworICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiB0aXRsZXNGb3JQcmVmZXJyZWRMYW5ndWFnZXMg
PSBBVkNGTWVkaWFTZWxlY3Rpb25Db3B5T3B0aW9uc0Zyb21BcnJheUZpbHRlcmVkQW5kU29ydGVk
QWNjb3JkaW5nVG9QcmVmZXJyZWRMYW5ndWFnZXModGl0bGVzLmdldCgpLCBwcmVmZXJyZWRMYW5n
dWFnZXMuZ2V0KCkpOworICAgIENGSW5kZXggcHJlZmVycmVkVGl0bGVzQ291bnQgPSBDRkFycmF5
R2V0Q291bnQodGl0bGVzRm9yUHJlZmVycmVkTGFuZ3VhZ2VzLmdldCgpKTsKKyAgICBpZiAocHJl
ZmVycmVkVGl0bGVzQ291bnQpIHsKKyAgICAgICAgQVZDRk1ldGFkYXRhSXRlbVJlZiB0aXRsZU1l
dGFkYXRhID0gc3RhdGljX2Nhc3Q8QVZDRk1ldGFkYXRhSXRlbVJlZj4oQ0ZBcnJheUdldFZhbHVl
QXRJbmRleCh0aXRsZXNGb3JQcmVmZXJyZWRMYW5ndWFnZXMuZ2V0KCksIDApKTsKKyAgICAgICAg
dGl0bGUgPSBhZG9wdENGKEFWQ0ZNZXRhZGF0YUl0ZW1Db3B5U3RyaW5nVmFsdWUodGl0bGVNZXRh
ZGF0YSkpOworICAgIH0KKworICAgIGlmICghdGl0bGUpIHsKKyAgICAgICAgQVZDRk1ldGFkYXRh
SXRlbVJlZiB0aXRsZU1ldGFkYXRhID0gc3RhdGljX2Nhc3Q8QVZDRk1ldGFkYXRhSXRlbVJlZj4o
Q0ZBcnJheUdldFZhbHVlQXRJbmRleCh0aXRsZXMuZ2V0KCksIDApKTsKKyAgICAgICAgdGl0bGUg
PSBhZG9wdENGKEFWQ0ZNZXRhZGF0YUl0ZW1Db3B5U3RyaW5nVmFsdWUodGl0bGVNZXRhZGF0YSkp
OworICAgIH0KKworICAgIHJldHVybiB0aXRsZSA/IEF0b21pY1N0cmluZyh0aXRsZS5nZXQoKSkg
OiBlbXB0eUF0b207Cit9CisKK0F0b21pY1N0cmluZyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZD
Rjo6bGFuZ3VhZ2UoKSBjb25zdAoreworICAgIGlmICghbV9tZWRpYVNlbGVjdGlvbk9wdGlvbikK
KyAgICAgICAgcmV0dXJuIGVtcHR5QXRvbTsKKworICAgIFJldGFpblB0cjxDRkxvY2FsZVJlZj4g
bG9jYWxlID0gYWRvcHRDRihBVkNGTWVkaWFTZWxlY3Rpb25PcHRpb25Db3B5TG9jYWxlKG1lZGlh
U2VsZWN0aW9uT3B0aW9uKCkpKTsKKyAgICByZXR1cm4gQ0ZMb2NhbGVHZXRJZGVudGlmaWVyKGxv
Y2FsZS5nZXQoKSk7Cit9CisKK2Jvb2wgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0Y6OmlzRGVm
YXVsdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL2NmL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0luYmFu
ZFRleHRUcmFja1ByaXZhdGVBVkNGLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFW
Q0YuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRl9oCisjZGVmaW5lIEluYmFuZFRleHRUcmFja1ByaXZh
dGVBVkNGX2gKKworI2lmIFBMQVRGT1JNKFdJTikgJiYgRU5BQkxFKFZJREVPKSAmJiBIQVZFKEFW
Rk9VTkRBVElPTl9NRURJQV9TRUxFQ1RJT05fR1JPVVApCisKKyNpbmNsdWRlICJJbmJhbmRUZXh0
VHJhY2tQcml2YXRlQVZGLmgiCisjaW5jbHVkZSA8QVZGb3VuZGF0aW9uQ0YvQVZDRlBsYXllckl0
ZW0uaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0YgOiBwdWJsaWMgSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUFWRiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWQ0Y+IGNyZWF0ZShBVkZJbmJhbmRUcmFja1BhcmVudCogcGxheWVyLCAg
QVZDRk1lZGlhU2VsZWN0aW9uT3B0aW9uUmVmIHNlbGVjdGlvbikKKyAgICB7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0YocGxheWVyLCBzZWxl
Y3Rpb24pKTsKKyAgICB9CisKKyAgICB+SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0YoKSB7IH0K
KworICAgIHZpcnR1YWwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6S2luZCBraW5kKCkgY29uc3Qg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzQ2xvc2VkQ2FwdGlvbnMoKSBjb25zdCBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNTREgoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIGJvb2wgY29udGFpbnNPbmx5Rm9yY2VkU3VidGl0bGVzKCkgY29uc3QgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBib29sIGlzTWFpblByb2dyYW1Db250ZW50KCkgY29uc3QgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBib29sIGlzRWFzeVRvUmVhZCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1
YWwgQXRvbWljU3RyaW5nIGxhYmVsKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBBdG9t
aWNTdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNE
ZWZhdWx0KCkgY29uc3QgT1ZFUlJJREU7CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdCgp
IE9WRVJSSURFOworCisgICAgdmlydHVhbCBib29sIGlzTGVnYWN5Q2xvc2VkQ2FwdGlvbnNUcmFj
aygpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICBBVkNGTWVkaWFTZWxl
Y3Rpb25PcHRpb25SZWYgbWVkaWFTZWxlY3Rpb25PcHRpb24oKSBjb25zdCB7IHJldHVybiBtX21l
ZGlhU2VsZWN0aW9uT3B0aW9uLmdldCgpOyB9CisKK3Byb3RlY3RlZDoKKyAgICBJbmJhbmRUZXh0
VHJhY2tQcml2YXRlQVZDRihBVkZJbmJhbmRUcmFja1BhcmVudCosIEFWQ0ZNZWRpYVNlbGVjdGlv
bk9wdGlvblJlZik7CisgICAgCisgICAgUmV0YWluUHRyPEFWQ0ZNZWRpYVNlbGVjdGlvbk9wdGlv
blJlZj4gbV9tZWRpYVNlbGVjdGlvbk9wdGlvbjsKK307CisKK30KKworI2VuZGlmCisjZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9J
bmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZDRi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0luYmFuZFRleHRUcmFj
a1ByaXZhdGVMZWdhY3lBVkNGLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVn
YWN5QVZDRi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMjggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU8pICYmIFVTRShBVkZPVU5EQVRJ
T04pICYmICFIQVZFKEFWRk9VTkRBVElPTl9MRUdJQkxFX09VVFBVVF9TVVBQT1JUKSAmJiAhUExB
VEZPUk0oSU9TKQorCisjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0Yu
aCIKKworI2luY2x1ZGUgIkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaCIKKyNpbmNsdWRlICJM
b2dnaW5nLmgiCisjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuaCIK
KyNpbmNsdWRlICJTb2Z0TGlua2luZy5oIgorCisjaW5jbHVkZSA8QVZGb3VuZGF0aW9uQ0YvQVZG
b3VuZGF0aW9uQ0YuaD4KKworI2luY2x1ZGUgPGQzZDkuaD4KKworLy8gVGhlIHNvZnRsaW5rIGhl
YWRlciBmaWxlcyBtdXN0IGJlIGluY2x1ZGVkIGFmdGVyIHRoZSBBVkNGIGFuZCBDb3JlTWVkaWEg
aGVhZGVyIGZpbGVzLgorI2luY2x1ZGUgIkFWRm91bmRhdGlvbkNGU29mdExpbmtpbmcuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZDRjo6
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0YoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uQ0YqIHBsYXllciwgQVZDRlBsYXllckl0ZW1UcmFja1JlZiB0cmFjaykKKyAgICA6IElu
YmFuZFRleHRUcmFja1ByaXZhdGVBVkYocGxheWVyKQorICAgICwgbV9wbGF5ZXJJdGVtVHJhY2so
dHJhY2spCit7Cit9CisKK3ZvaWQgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0Y6OmRp
c2Nvbm5lY3QoKQoreworICAgIG1fcGxheWVySXRlbVRyYWNrID0gMDsKKyAgICBJbmJhbmRUZXh0
VHJhY2tQcml2YXRlQVZGOjpkaXNjb25uZWN0KCk7Cit9CisKK0luYmFuZFRleHRUcmFja1ByaXZh
dGU6OktpbmQgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0Y6OmtpbmQoKSBjb25zdAor
eworICAgIGlmICghbV9wbGF5ZXJJdGVtVHJhY2spCisgICAgICAgIHJldHVybiBJbmJhbmRUZXh0
VHJhY2tQcml2YXRlOjpOb25lOworCisgICAgcmV0dXJuIEluYmFuZFRleHRUcmFja1ByaXZhdGU6
OkNhcHRpb25zOworfQorCitib29sIEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGOjpp
c0Nsb3NlZENhcHRpb25zKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wbGF5ZXJJdGVtVHJhY2s7
Cit9CisKK2Jvb2wgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0Y6OmNvbnRhaW5zT25s
eUZvcmNlZFN1YnRpdGxlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29s
IEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGOjppc01haW5Qcm9ncmFtQ29udGVudCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcGxheWVySXRlbVRyYWNrOworfQorCitib29sIEluYmFu
ZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGOjppc0Vhc3lUb1JlYWQoKSBjb25zdAoreworICAg
IHJldHVybiBmYWxzZTsKK30KKworQXRvbWljU3RyaW5nIEluYmFuZFRleHRUcmFja1ByaXZhdGVM
ZWdhY3lBVkNGOjpsYWJlbCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX3BsYXllckl0ZW1UcmFjaykK
KyAgICAgICAgcmV0dXJuIGVtcHR5QXRvbTsKKworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4g
dGl0bGU7CisKKyAgICBSZXRhaW5QdHI8QVZDRkFzc2V0VHJhY2tSZWY+IGFzc2V0VHJhY2sgPSBh
ZG9wdENGKEFWQ0ZQbGF5ZXJJdGVtVHJhY2tDb3B5QXNzZXRUcmFjayhtX3BsYXllckl0ZW1UcmFj
ay5nZXQoKSkpOworICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBjb21tb25NZXRhRGF0YSA9IGFk
b3B0Q0YoQVZDRkFzc2V0VHJhY2tDb3B5Q29tbW9uTWV0YWRhdGEoYXNzZXRUcmFjay5nZXQoKSkp
OworICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiB0aXRsZXMgPSBhZG9wdENGKEFWQ0ZNZXRhZGF0
YUl0ZW1Db3B5SXRlbXNXaXRoS2V5QW5kS2V5U3BhY2UoY29tbW9uTWV0YURhdGEuZ2V0KCksIEFW
Q0ZNZXRhZGF0YUNvbW1vbktleVRpdGxlLCBBVkNGTWV0YWRhdGFLZXlTcGFjZUNvbW1vbikpOwor
ICAgIENGSW5kZXggdGl0bGVzQ291bnQgPSBDRkFycmF5R2V0Q291bnQodGl0bGVzLmdldCgpKTsK
KyAgICBpZiAodGl0bGVzQ291bnQpIHsKKyAgICAgICAgUmV0YWluUHRyPENGTG9jYWxlUmVmPiBj
dXJyZW50TG9jYWxlID0gYWRvcHRDRihDRkxvY2FsZUNvcHlDdXJyZW50KCkpOworICAgICAgICBS
ZXRhaW5QdHI8Q0ZBcnJheVJlZj4gdGl0bGVzRm9yUHJlZmVycmVkTGFuZ3VhZ2VzID0gYWRvcHRD
RihBVkNGTWV0YWRhdGFJdGVtQ29weUl0ZW1zV2l0aExvY2FsZSh0aXRsZXMuZ2V0KCksIGN1cnJl
bnRMb2NhbGUuZ2V0KCkpKTsKKyAgICAgICAgQ0ZJbmRleCBwcmVmZXJyZWRUaXRsZXNDb3VudCA9
IENGQXJyYXlHZXRDb3VudCh0aXRsZXNGb3JQcmVmZXJyZWRMYW5ndWFnZXMuZ2V0KCkpOworICAg
ICAgICBpZiAocHJlZmVycmVkVGl0bGVzQ291bnQpIHsKKyAgICAgICAgICAgIEFWQ0ZNZXRhZGF0
YUl0ZW1SZWYgdGl0bGVNZXRhZGF0YSA9IHN0YXRpY19jYXN0PEFWQ0ZNZXRhZGF0YUl0ZW1SZWY+
KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgodGl0bGVzRm9yUHJlZmVycmVkTGFuZ3VhZ2VzLmdldCgp
LCAwKSk7CisgICAgICAgICAgICB0aXRsZSA9IGFkb3B0Q0YoQVZDRk1ldGFkYXRhSXRlbUNvcHlT
dHJpbmdWYWx1ZSh0aXRsZU1ldGFkYXRhKSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXRp
dGxlKSB7CisgICAgICAgICAgICBBVkNGTWV0YWRhdGFJdGVtUmVmIHRpdGxlTWV0YWRhdGEgPSBz
dGF0aWNfY2FzdDxBVkNGTWV0YWRhdGFJdGVtUmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KHRp
dGxlcy5nZXQoKSwgMCkpOworICAgICAgICAgICAgdGl0bGUgPSBhZG9wdENGKEFWQ0ZNZXRhZGF0
YUl0ZW1Db3B5U3RyaW5nVmFsdWUodGl0bGVNZXRhZGF0YSkpOworICAgICAgICB9CisgICAgfQor
CisgICAgcmV0dXJuIHRpdGxlID8gQXRvbWljU3RyaW5nKHRpdGxlLmdldCgpKSA6IGVtcHR5QXRv
bTsKK30KKworQXRvbWljU3RyaW5nIEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGOjps
YW5ndWFnZSgpIGNvbnN0Cit7CisgICAgaWYgKCFtX3BsYXllckl0ZW1UcmFjaykKKyAgICAgICAg
cmV0dXJuIGVtcHR5QXRvbTsKKworICAgIFJldGFpblB0cjxBVkNGQXNzZXRUcmFja1JlZj4gYXNz
ZXRUcmFjayA9IGFkb3B0Q0YoQVZDRlBsYXllckl0ZW1UcmFja0NvcHlBc3NldFRyYWNrKG1fcGxh
eWVySXRlbVRyYWNrLmdldCgpKSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBsYW5ndWFn
ZUNvZGUgPSBhZG9wdENGKEFWQ0ZBc3NldFRyYWNrQ29weUxhbmd1YWdlQ29kZShhc3NldFRyYWNr
LmdldCgpKSk7CisgICAgUmV0YWluUHRyPENGTG9jYWxlUmVmPiBsb2NhbGUgPSBhZG9wdENGKENG
TG9jYWxlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGxhbmd1YWdlQ29kZS5nZXQoKSkpOwor
ICAgIHJldHVybiBDRkxvY2FsZUdldElkZW50aWZpZXIobG9jYWxlLmdldCgpKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5
QVZDRi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZDRi5oCShyZXZpc2lv
biAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2Nm
L0luYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGLmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2Fj
eUFWQ0ZfaAorI2RlZmluZSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZDRl9oCisKKyNp
ZiBFTkFCTEUoVklERU8pICYmIFVTRShBVkZPVU5EQVRJT04pICYmICFIQVZFKEFWRk9VTkRBVElP
Tl9MRUdJQkxFX09VVFBVVF9TVVBQT1JUKSAmJiAhUExBVEZPUk0oSU9TKQorCisjaW5jbHVkZSAi
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oIgorI2luY2x1ZGUgPEFWRm91bmRhdGlvbkNGL0FW
Q0ZQbGF5ZXJJdGVtVHJhY2suaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y7
CisKK2NsYXNzIEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGIDogcHVibGljIEluYmFu
ZFRleHRUcmFja1ByaXZhdGVBVkYgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPElu
YmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGPiBjcmVhdGUoTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uQ0YqIHBsYXllciwgQVZDRlBsYXllckl0ZW1UcmFja1JlZiB0cmFjaykKKyAg
ICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxl
Z2FjeUFWQ0YocGxheWVyLCB0cmFjaykpOworICAgIH0KKworICAgIH5JbmJhbmRUZXh0VHJhY2tQ
cml2YXRlTGVnYWN5QVZDRigpIHsgfQorCisgICAgdmlydHVhbCBJbmJhbmRUZXh0VHJhY2tQcml2
YXRlOjpLaW5kIGtpbmQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNDbG9z
ZWRDYXB0aW9ucygpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBjb250YWluc09u
bHlGb3JjZWRTdWJ0aXRsZXMoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNN
YWluUHJvZ3JhbUNvbnRlbnQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNF
YXN5VG9SZWFkKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBBdG9taWNTdHJpbmcgbGFi
ZWwoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEF0b21pY1N0cmluZyBsYW5ndWFnZSgp
IGNvbnN0IE9WRVJSSURFOworCisgICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3QoKSBPVkVSUklE
RTsKKworICAgIHZpcnR1YWwgYm9vbCBpc0xlZ2FjeUNsb3NlZENhcHRpb25zVHJhY2soKSBjb25z
dCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CisKKyAgICBBVkNGUGxheWVySXRlbVRyYWNrUmVm
IGF2UGxheWVySXRlbVRyYWNrKCkgY29uc3QgeyByZXR1cm4gbV9wbGF5ZXJJdGVtVHJhY2suZ2V0
KCk7IH0KKworcHJvdGVjdGVkOgorICAgIEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkNG
KE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGKiwgQVZDRlBsYXllckl0ZW1UcmFja1Jl
Zik7CisgICAgCisgICAgUmV0YWluUHRyPEFWQ0ZQbGF5ZXJJdGVtVHJhY2tSZWY+IG1fcGxheWVy
SXRlbVRyYWNrOworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZG
T1VOREFUSU9OKSAmJiAhSEFWRShBVkZPVU5EQVRJT05fTEVHSUJMRV9PVVRQVVRfU1VQUE9SVCkg
JiYgIVBMQVRGT1JNKElPUykKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
Q0YuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAJKHJldmlz
aW9uIDE1Mjg1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwg
MjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTI1LDcgKzI1LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogCi0j
aWYgUExBVEZPUk0oV0lOKSYmIEVOQUJMRShWSURFTykgCisjaWYgUExBVEZPUk0oV0lOKSAmJiBF
TkFCTEUoVklERU8pIAogCiAjaWYgVVNFKEFWRk9VTkRBVElPTikKIApAQCAtMzYsMTIgKzM2LDE1
IEBACiAjaW5jbHVkZSAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3Lmgi
CiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUFWQ0YuaCIKICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgog
I2luY2x1ZGUgIlBsYXRmb3JtQ0FMYXllci5oIgogI2luY2x1ZGUgIlNvZnRMaW5raW5nLmgiCiAj
aW5jbHVkZSAiVGltZVJhbmdlcy5oIgogCisjaW5jbHVkZSA8QVZGb3VuZGF0aW9uQ0YvQVZDRlBs
YXllckl0ZW0uaD4KKyNpbmNsdWRlIDxBVkZvdW5kYXRpb25DRi9BVkNGUGxheWVySXRlbUxlZ2li
bGVPdXRwdXQuaD4KICNpbmNsdWRlIDxBVkZvdW5kYXRpb25DRi9BVkNGUGxheWVyTGF5ZXIuaD4K
ICNpbmNsdWRlIDxBVkZvdW5kYXRpb25DRi9BVkZvdW5kYXRpb25DRi5oPgogI2luY2x1ZGUgPENv
cmVNZWRpYS9Db3JlTWVkaWEuaD4KQEAgLTUwLDYgKzUzLDcgQEAKICNpbmNsdWRlIDxkaXNwYXRj
aC9kaXNwYXRjaC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1Ro
cmVhZGluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogLy8gVGhlIHNvZnRs
aW5rIGhlYWRlciBmaWxlcyBtdXN0IGJlIGluY2x1ZGVkIGFmdGVyIHRoZSBBVkNGIGFuZCBDb3Jl
TWVkaWEgaGVhZGVyIGZpbGVzLgogI2luY2x1ZGUgIkFWRm91bmRhdGlvbkNGU29mdExpbmtpbmcu
aCIKQEAgLTk1LDYgKzk5LDEzIEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIHNlZWtUb1RpbWUo
ZmxvYXQpOwogCisgICAgdm9pZCBzZXRDdXJyZW50VHJhY2soSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUFWRiopOworICAgIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkYqIGN1cnJlbnRUcmFjaygpIGNv
bnN0IHsgcmV0dXJuIG1fY3VycmVudFRyYWNrOyB9CisKKyNpZiBIQVZFKEFWRk9VTkRBVElPTl9N
RURJQV9TRUxFQ1RJT05fR1JPVVApICYmIEhBVkUoQVZGT1VOREFUSU9OX0xFR0lCTEVfT1VUUFVU
X1NVUFBPUlQpCisgICAgc3RhdGljIHZvaWQgbGVnaWJsZU91dHB1dENhbGxiYWNrKHZvaWQqIGNv
bnRleHQsIEFWQ0ZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1dFJlZiwgQ0ZBcnJheVJlZiBhdHRyaWJ1
dGVkU3RyaW5nLCBDRkFycmF5UmVmIG5hdGl2ZVNhbXBsZUJ1ZmZlcnMsIENNVGltZSBpdGVtVGlt
ZSk7CisgICAgc3RhdGljIHZvaWQgcHJvY2Vzc0N1ZSh2b2lkKiBjb250ZXh0KTsKKyNlbmRpZgog
ICAgIHN0YXRpYyB2b2lkIGxvYWRNZXRhZGF0YUNvbXBsZXRpb25DYWxsYmFjayhBVkNGQXNzZXRS
ZWYsIHZvaWQqKTsKICAgICBzdGF0aWMgdm9pZCBsb2FkUGxheWFibGVDb21wbGV0aW9uQ2FsbGJh
Y2soQVZDRkFzc2V0UmVmLCB2b2lkKik7CiAgICAgc3RhdGljIHZvaWQgcGVyaW9kaWNUaW1lT2Jz
ZXJ2ZXJDYWxsYmFjayhBVkNGUGxheWVyUmVmLCBDTVRpbWUsIHZvaWQqKTsKQEAgLTEwNyw2ICsx
MTgsMTAgQEAgcHVibGljOgogICAgIGlubGluZSBBVkNGUGxheWVySXRlbVJlZiBhdlBsYXllckl0
ZW0oKSBjb25zdCB7IHJldHVybiAoQVZDRlBsYXllckl0ZW1SZWYpbV9hdlBsYXllckl0ZW0uZ2V0
KCk7IH0KICAgICBpbmxpbmUgQVZDRlBsYXllck9ic2VydmVyUmVmIHRpbWVPYnNlcnZlcigpIGNv
bnN0IHsgcmV0dXJuIChBVkNGUGxheWVyT2JzZXJ2ZXJSZWYpbV90aW1lT2JzZXJ2ZXIuZ2V0KCk7
IH0KICAgICBpbmxpbmUgQVZDRkFzc2V0SW1hZ2VHZW5lcmF0b3JSZWYgaW1hZ2VHZW5lcmF0b3Io
KSBjb25zdCB7IHJldHVybiBtX2ltYWdlR2VuZXJhdG9yLmdldCgpOyB9CisjaWYgSEFWRShBVkZP
VU5EQVRJT05fTUVESUFfU0VMRUNUSU9OX0dST1VQKSAmJiBIQVZFKEFWRk9VTkRBVElPTl9MRUdJ
QkxFX09VVFBVVF9TVVBQT1JUKQorICAgIGlubGluZSBBVkNGUGxheWVySXRlbUxlZ2libGVPdXRw
dXRSZWYgbGVnaWJsZU91dHB1dCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVnaWJsZU91dHB1dC5nZXQo
KTsgfQorICAgIEFWQ0ZNZWRpYVNlbGVjdGlvbkdyb3VwUmVmIHNhZmVNZWRpYVNlbGVjdGlvbkdy
b3VwRm9yTGVnaWJsZU1lZGlhKCkgY29uc3Q7CisjZW5kaWYKICAgICBpbmxpbmUgZGlzcGF0Y2hf
cXVldWVfdCBkaXNwYXRjaFF1ZXVlKCkgY29uc3QgeyByZXR1cm4gbV9ub3RpZmljYXRpb25RdWV1
ZTsgfQogCiBwcml2YXRlOgpAQCAtMTMxLDYgKzE0NiwxMCBAQCBwcml2YXRlOgogICAgIFJldGFp
blB0cjxBVkNGUGxheWVyTGF5ZXJSZWY+IG1fYXZDRlZpZGVvTGF5ZXI7CiAgICAgUmV0YWluUHRy
PEFWQ0ZQbGF5ZXJPYnNlcnZlclJlZj4gbV90aW1lT2JzZXJ2ZXI7CiAgICAgUmV0YWluUHRyPEFW
Q0ZBc3NldEltYWdlR2VuZXJhdG9yUmVmPiBtX2ltYWdlR2VuZXJhdG9yOworI2lmIEhBVkUoQVZG
T1VOREFUSU9OX01FRElBX1NFTEVDVElPTl9HUk9VUCkgJiYgSEFWRShBVkZPVU5EQVRJT05fTEVH
SUJMRV9PVVRQVVRfU1VQUE9SVCkKKyAgICBSZXRhaW5QdHI8QVZDRlBsYXllckl0ZW1MZWdpYmxl
T3V0cHV0UmVmPiBtX2xlZ2libGVPdXRwdXQ7CisgICAgUmV0YWluUHRyPEFWQ0ZNZWRpYVNlbGVj
dGlvbkdyb3VwUmVmPiBtX3NlbGVjdGlvbkdyb3VwOworI2VuZGlmCiAgICAgZGlzcGF0Y2hfcXVl
dWVfdCBtX25vdGlmaWNhdGlvblF1ZXVlOwogCiAgICAgbXV0YWJsZSBSZXRhaW5QdHI8Q0FDRkxh
eWVyUmVmPiBtX2NhVmlkZW9MYXllcjsKQEAgLTEzOCw2ICsxNTcsOCBAQCBwcml2YXRlOgogCiAg
ICAgT3duUHRyPExheWVyQ2xpZW50PiBtX2xheWVyQ2xpZW50OwogICAgIENPTVB0cjxJRGlyZWN0
M0REZXZpY2U5RXg+IG1fZDNkRGV2aWNlOworCisgICAgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFW
RiogbV9jdXJyZW50VHJhY2s7CiB9OwogCiB1aW50cHRyX3QgQVZGV3JhcHBlcjo6c19uZXh0QVZG
V3JhcHBlck9iamVjdElEOwpAQCAtMTgyLDcgKzIwMyw4IEBAIHN0YXRpYyBDRkFycmF5UmVmIGNy
ZWF0ZU1ldGFkYXRhS2V5TmFtZXMKICAgICAgICAgQVZDRkFzc2V0UHJvcGVydHlQcmVmZXJyZWRU
cmFuc2Zvcm0sCiAgICAgICAgIEFWQ0ZBc3NldFByb3BlcnR5UHJlZmVycmVkUmF0ZSwKICAgICAg
ICAgQVZDRkFzc2V0UHJvcGVydHlQbGF5YWJsZSwKLSAgICAgICAgQVZDRkFzc2V0UHJvcGVydHlU
cmFja3MgCisgICAgICAgIEFWQ0ZBc3NldFByb3BlcnR5VHJhY2tzLAorICAgICAgICBBVkNGQXNz
ZXRQcm9wZXJ0eUF2YWlsYWJsZU1lZGlhQ2hhcmFjdGVyaXN0aWNzV2l0aE1lZGlhU2VsZWN0aW9u
T3B0aW9ucwogICAgIH07CiAgICAgCiAgICAgcmV0dXJuIENGQXJyYXlDcmVhdGUoMCwgKGNvbnN0
IHZvaWQqKilrZXlOYW1lcywgc2l6ZW9mKGtleU5hbWVzKSAvIHNpemVvZihrZXlOYW1lc1swXSks
ICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpOwpAQCAtMjQyLDYgKzI2NCwxOCBAQCBpbmxpbmUgQVZD
RkFzc2V0SW1hZ2VHZW5lcmF0b3JSZWYgaW1hZ2VHCiAgICAgcmV0dXJuIHdyYXBwZXIgPyB3cmFw
cGVyLT5pbWFnZUdlbmVyYXRvcigpIDogMDsgCiB9CiAKKyNpZiBIQVZFKEFWRk9VTkRBVElPTl9N
RURJQV9TRUxFQ1RJT05fR1JPVVApICYmIEhBVkUoQVZGT1VOREFUSU9OX0xFR0lCTEVfT1VUUFVU
X1NVUFBPUlQpCitpbmxpbmUgQVZDRlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0UmVmIGF2TGVnaWJs
ZU91dHB1dChBVkZXcmFwcGVyKiB3cmFwcGVyKQoreworICAgIHJldHVybiB3cmFwcGVyID8gd3Jh
cHBlci0+bGVnaWJsZU91dHB1dCgpIDogMDsKK30KKworaW5saW5lIEFWQ0ZNZWRpYVNlbGVjdGlv
bkdyb3VwUmVmIHNhZmVNZWRpYVNlbGVjdGlvbkdyb3VwRm9yTGVnaWJsZU1lZGlhKEFWRldyYXBw
ZXIqIHdyYXBwZXIpCit7CisgICAgcmV0dXJuIHdyYXBwZXIgPyB3cmFwcGVyLT5zYWZlTWVkaWFT
ZWxlY3Rpb25Hcm91cEZvckxlZ2libGVNZWRpYSgpIDogMDsKK30KKyNlbmRpZgorCiBQYXNzT3du
UHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uQ0Y6OmNyZWF0ZShNZWRpYVBsYXllciogcGxheWVyKSAKIHsgCiAgICAgcmV0dXJuIGFk
b3B0UHRyKG5ldyBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRihwbGF5ZXIpKTsKQEAg
LTI3Nyw2ICszMTEsOCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpj
CiAKICAgICB0ZWFyRG93blZpZGVvUmVuZGVyaW5nKCk7CiAKKyAgICBjbGVhclRleHRUcmFja3Mo
KTsKKwogICAgIGlmIChtX2F2ZldyYXBwZXIpIHsKICAgICAgICAgLy8gVGhlIEFWQ0Ygb2JqZWN0
cyBoYXZlIHRvIGJlIGRlc3Ryb3llZCBvbiB0aGUgc2FtZSBkaXNwYXRjaCBxdWV1ZSB1c2VkIGZv
ciBub3RpZmljYXRpb25zLCBzbyBzY2hlZHVsZSBhIGNhbGwgdG8gCiAgICAgICAgIC8vIGRpc2Nv
bm5lY3RBbmREZWxldGVBVkZXcmFwcGVyIG9uIHRoYXQgcXVldWUuIApAQCAtMzM1LDYgKzM3MSwz
MSBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpoCiAgICAgcmV0dXJu
IChtX3ZpZGVvRnJhbWVIYXNEcmF3biB8fCAodmlkZW9MYXllcihtX2F2ZldyYXBwZXIpICYmIEFW
Q0ZQbGF5ZXJMYXllcklzUmVhZHlGb3JEaXNwbGF5KHZpZGVvTGF5ZXIobV9hdmZXcmFwcGVyKSkp
KTsKIH0KIAordm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6c2V0Q3VycmVu
dFRyYWNrKEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkYqIHRyYWNrKQoreworICAgIGlmIChtX2F2
ZldyYXBwZXIpCisgICAgICAgIG1fYXZmV3JhcHBlci0+c2V0Q3VycmVudFRyYWNrKHRyYWNrKTsK
K30KKworSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRiogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uQ0Y6OmN1cnJlbnRUcmFjaygpIGNvbnN0Cit7CisgICAgaWYgKG1fYXZmV3JhcHBlcikK
KyAgICAgICAgcmV0dXJuIG1fYXZmV3JhcHBlci0+Y3VycmVudFRyYWNrKCk7CisKKyAgICByZXR1
cm4gMDsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6Y3JlYXRl
QVZBc3NldEZvclVSTChjb25zdCBTdHJpbmcmIHVybCkKK3sKKyAgICBBU1NFUlQoIW1fYXZmV3Jh
cHBlcik7CisKKyAgICBzZXREZWxheUNhbGxiYWNrcyh0cnVlKTsKKworICAgIG1fYXZmV3JhcHBl
ciA9IG5ldyBBVkZXcmFwcGVyKHRoaXMpOworICAgIG1fYXZmV3JhcHBlci0+Y3JlYXRlQXNzZXRG
b3JVUkwodXJsKTsKKyAgICBzZXREZWxheUNhbGxiYWNrcyhmYWxzZSk7Cit9CisKIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OmNyZWF0ZUFWUGxheWVyKCkKIHsKICAgICBB
U1NFUlQobV9hdmZXcmFwcGVyKTsKQEAgLTM1MCwxNyArNDExLDcgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25DRjo6YwogICAgIAogICAgIHNldERlbGF5Q2FsbGJhY2tzKHRy
dWUpOwogICAgIG1fYXZmV3JhcHBlci0+Y3JlYXRlUGxheWVySXRlbSgpOwotICAgIHNldERlbGF5
Q2FsbGJhY2tzKGZhbHNlKTsKLX0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25DRjo6Y3JlYXRlQVZBc3NldEZvclVSTChjb25zdCBTdHJpbmcmIHVybCkKLXsKLSAgICBBU1NF
UlQoIW1fYXZmV3JhcHBlcik7Ci0KLSAgICBzZXREZWxheUNhbGxiYWNrcyh0cnVlKTsKLQotICAg
IG1fYXZmV3JhcHBlciA9IG5ldyBBVkZXcmFwcGVyKHRoaXMpOwotICAgIG1fYXZmV3JhcHBlci0+
Y3JlYXRlQXNzZXRGb3JVUkwodXJsKTsKICAgICBzZXREZWxheUNhbGxiYWNrcyhmYWxzZSk7CiB9
CiAKQEAgLTQ0NiwzNCArNDk3LDI3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uQ0Y6OnAKICAgICBzZXREZWxheUNhbGxiYWNrcyhmYWxzZSk7CiB9CiAKLXZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnVwZGF0ZVJhdGUoKQotewotICAgIExPRyhNZWRp
YSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjp1cGRhdGVSYXRlKCVwKSIsIHRo
aXMpOwotICAgIGlmICghbWV0YURhdGFBdmFpbGFibGUoKSB8fCAhYXZQbGF5ZXIobV9hdmZXcmFw
cGVyKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc2V0RGVsYXlDYWxsYmFja3ModHJ1ZSk7Ci0g
ICAgQVZDRlBsYXllclNldFJhdGUoYXZQbGF5ZXIobV9hdmZXcmFwcGVyKSwgcmVxdWVzdGVkUmF0
ZSgpKTsKLSAgICBzZXREZWxheUNhbGxiYWNrcyhmYWxzZSk7Ci19Ci0KIGZsb2F0IE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpwbGF0Zm9ybUR1cmF0aW9uKCkgY29uc3QKIHsKICAg
ICBpZiAoIW1ldGFEYXRhQXZhaWxhYmxlKCkgfHwgIWF2QXNzZXQobV9hdmZXcmFwcGVyKSkKICAg
ICAgICAgcmV0dXJuIDA7CiAKLSAgICBmbG9hdCBkdXJhdGlvbjsKLSAgICBDTVRpbWUgY21EdXJh
dGlvbiA9IEFWQ0ZBc3NldEdldER1cmF0aW9uKGF2QXNzZXQobV9hdmZXcmFwcGVyKSk7CisgICAg
Q01UaW1lIGNtRHVyYXRpb247CisKKyAgICAvLyBDaGVjayB0aGUgQVZJdGVtIGlmIHdlIGhhdmUg
b25lIGFuZCBpdCBoYXMgbG9hZGVkIGR1cmF0aW9uLCBzb21lIGFzc2V0cyBuZXZlciByZXBvcnQg
ZHVyYXRpb24uCisgICAgaWYgKGF2UGxheWVySXRlbShtX2F2ZldyYXBwZXIpICYmIHBsYXllckl0
ZW1TdGF0dXMoKSA+PSBNZWRpYVBsYXllckFWUGxheWVySXRlbVN0YXR1c1JlYWR5VG9QbGF5KQor
ICAgICAgICBjbUR1cmF0aW9uID0gQVZDRlBsYXllckl0ZW1HZXREdXJhdGlvbihhdlBsYXllckl0
ZW0obV9hdmZXcmFwcGVyKSk7CisgICAgZWxzZQorICAgICAgICBjbUR1cmF0aW9uID0gQVZDRkFz
c2V0R2V0RHVyYXRpb24oYXZBc3NldChtX2F2ZldyYXBwZXIpKTsKKwogICAgIGlmIChDTVRJTUVf
SVNfTlVNRVJJQyhjbUR1cmF0aW9uKSkKLSAgICAgICAgZHVyYXRpb24gPSBuYXJyb3dQcmVjaXNp
b25Ub0Zsb2F0KENNVGltZUdldFNlY29uZHMoY21EdXJhdGlvbikpOwotICAgIGVsc2UgaWYgKENN
VElNRV9JU19JTkRFRklOSVRFKGNtRHVyYXRpb24pKQotICAgICAgICBkdXJhdGlvbiA9IG51bWVy
aWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKTsKLSAgICBlbHNlIHsKLSAgICAgICAgTE9HKE1l
ZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGTWFjOjpkdXJhdGlvbiglcCkgLSBpbnZhbGlkIGR1
cmF0aW9uLCByZXR1cm5pbmcgMCIsIHRoaXMpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Cisg
ICAgICAgIHJldHVybiBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KENNVGltZUdldFNlY29uZHMoY21E
dXJhdGlvbikpOworCisgICAgaWYgKENNVElNRV9JU19JTkRFRklOSVRFKGNtRHVyYXRpb24pKQor
ICAgICAgICByZXR1cm4gbnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpOwogCi0gICAg
cmV0dXJuIGR1cmF0aW9uOworICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbkNGOjpwbGF0Zm9ybUR1cmF0aW9uKCVwKSAtIGludmFsaWQgZHVyYXRpb24sIHJldHVy
bmluZyAlLjBmIiwgdGhpcywgc3RhdGljX2Nhc3Q8ZmxvYXQ+KE1lZGlhUGxheWVyOjppbnZhbGlk
VGltZSgpKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0PihNZWRpYVBsYXllcjo6aW52
YWxpZFRpbWUoKSk7CiB9CiAKIGZsb2F0IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNG
OjpjdXJyZW50VGltZSgpIGNvbnN0CkBAIC00ODMsNyArNTI3LDcgQEAgZmxvYXQgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OgogCiAgICAgQ01UaW1lIGl0ZW1UaW1lID0gQVZDRlBs
YXllckl0ZW1HZXRDdXJyZW50VGltZShhdlBsYXllckl0ZW0obV9hdmZXcmFwcGVyKSk7CiAgICAg
aWYgKENNVElNRV9JU19OVU1FUklDKGl0ZW1UaW1lKSkKLSAgICAgICAgcmV0dXJuIG5hcnJvd1By
ZWNpc2lvblRvRmxvYXQoQ01UaW1lR2V0U2Vjb25kcyhpdGVtVGltZSkpOworICAgICAgICByZXR1
cm4gbWF4KG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoQ01UaW1lR2V0U2Vjb25kcyhpdGVtVGltZSkp
LCAwLjBmKTsKIAogICAgIHJldHVybiAwOwogfQpAQCAtNTE2LDYgKzU2MCwxNyBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpzCiAgICAgQVZDRlBsYXllclNldENsb3Nl
ZENhcHRpb25EaXNwbGF5RW5hYmxlZChhdlBsYXllcihtX2F2ZldyYXBwZXIpLCBjbG9zZWRDYXB0
aW9uc1Zpc2libGUpOwogfQogCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNG
Ojp1cGRhdGVSYXRlKCkKK3sKKyAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25DRjo6dXBkYXRlUmF0ZSglcCkiLCB0aGlzKTsKKyAgICBpZiAoIW1ldGFEYXRhQXZh
aWxhYmxlKCkgfHwgIWF2UGxheWVyKG1fYXZmV3JhcHBlcikpCisgICAgICAgIHJldHVybjsKKwor
ICAgIHNldERlbGF5Q2FsbGJhY2tzKHRydWUpOworICAgIEFWQ0ZQbGF5ZXJTZXRSYXRlKGF2UGxh
eWVyKG1fYXZmV3JhcHBlciksIHJlcXVlc3RlZFJhdGUoKSk7CisgICAgc2V0RGVsYXlDYWxsYmFj
a3MoZmFsc2UpOworfQorCiBmbG9hdCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6
cmF0ZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtZXRhRGF0YUF2YWlsYWJsZSgpIHx8ICFhdlBsYXll
cihtX2F2ZldyYXBwZXIpKQpAQCAtNjcxLDcgKzcyNiw3IEBAIE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbjo6QXNzZXRTdGEKICAgICBmb3IgKENGSW5kZXggaSA9IDA7IGkgPCBrZXlDb3Vu
dDsgaSsrKSB7CiAgICAgICAgIENGU3RyaW5nUmVmIGtleU5hbWUgPSBzdGF0aWNfY2FzdDxDRlN0
cmluZ1JlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChrZXlzLCBpKSk7CiAgICAgICAgIEFWQ0ZQ
cm9wZXJ0eVZhbHVlU3RhdHVzIGtleVN0YXR1cyA9IEFWQ0ZBc3NldEdldFN0YXR1c09mVmFsdWVG
b3JQcm9wZXJ0eShhdkFzc2V0KG1fYXZmV3JhcHBlciksIGtleU5hbWUsIDApOwotICAgICAgICAK
KwogICAgICAgICBpZiAoa2V5U3RhdHVzIDwgQVZDRlByb3BlcnR5VmFsdWVTdGF0dXNMb2FkZWQp
CiAgICAgICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJBVkFzc2V0U3RhdHVzTG9hZGluZzsKICAg
ICAgICAgaWYgKGtleVN0YXR1cyA9PSBBVkNGUHJvcGVydHlWYWx1ZVN0YXR1c0ZhaWxlZCkKQEAg
LTY4OCw3ICs3NDMsNyBAQCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OkFzc2V0U3Rh
CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnBhaW50Q3VycmVudEZy
YW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVj
dCkKIHsKLSAgICBpZiAoY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQorICAgIGlmICghbWV0
YURhdGFBdmFpbGFibGUoKSB8fCBjb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIGlmIChjdXJyZW50UmVuZGVyaW5nTW9kZSgpID09IE1lZGlhUmVuZGVy
aW5nVG9MYXllciAmJiAhaW1hZ2VHZW5lcmF0b3IobV9hdmZXcmFwcGVyKSkgewpAQCAtNzAyLDcg
Kzc1Nyw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnAKIAogdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0KQogewotICAgIGlmIChjb250ZXh0LT5wYWlu
dGluZ0Rpc2FibGVkKCkgfHwgIWltYWdlR2VuZXJhdG9yKG1fYXZmV3JhcHBlcikpCisgICAgaWYg
KCFtZXRhRGF0YUF2YWlsYWJsZSgpIHx8IGNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSB8fCAh
aW1hZ2VHZW5lcmF0b3IobV9hdmZXcmFwcGVyKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgTE9H
KE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnBhaW50KCVwKSIsIHRo
aXMpOwpAQCAtNzMyLDcgKzc4Nyw3IEBAIHN0YXRpYyBIYXNoU2V0PFN0cmluZz4gbWltZVR5cGVD
YWNoZSgpCiAgICAgaWYgKHR5cGVMaXN0SW5pdGlhbGl6ZWQpCiAgICAgICAgIHJldHVybiBjYWNo
ZTsKICAgICB0eXBlTGlzdEluaXRpYWxpemVkID0gdHJ1ZTsKLSAgICAKKwogICAgIFJldGFpblB0
cjxDRkFycmF5UmVmPiBzdXBwb3J0ZWRUeXBlcyA9IGFkb3B0Q0YoQVZDRlVSTEFzc2V0Q29weUF1
ZGlvdmlzdWFsTUlNRVR5cGVzKCkpOwogICAgIAogICAgIEFTU0VSVChzdXBwb3J0ZWRUeXBlcyk7
CkBAIC03NzgsOSArODMzLDE1IEBAIGZsb2F0IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bkNGOjoKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6dHJhY2tzQ2hh
bmdlZCgpCiB7CisgICAgU3RyaW5nIHByaW1hcnlBdWRpb1RyYWNrTGFuZ3VhZ2UgPSBtX2xhbmd1
YWdlT2ZQcmltYXJ5QXVkaW9UcmFjazsKKyAgICBtX2xhbmd1YWdlT2ZQcmltYXJ5QXVkaW9UcmFj
ayA9IFN0cmluZygpOworCiAgICAgaWYgKCFhdkFzc2V0KG1fYXZmV3JhcHBlcikpCiAgICAgICAg
IHJldHVybjsKLSAgICAKKworICAgIGJvb2wgaGF2ZUNDVHJhY2sgPSBmYWxzZTsKKyAgICBib29s
IGhhc0NhcHRpb25zID0gZmFsc2U7CisKICAgICAvLyBUaGlzIGlzIGNhbGxlZCB3aGVuZXZlciB0
aGUgdHJhY2tzIGNvbGxlY3Rpb24gY2hhbmdlcyBzbyBjYWNoZSBoYXNWaWRlbyBhbmQgaGFzQXVk
aW8gc2luY2Ugd2UgYXJlCiAgICAgLy8gYXNrZWQgYWJvdXQgdGhvc2UgZmFpcmx5IGZyZXF1ZW50
bHkuCiAgICAgaWYgKCFhdlBsYXllckl0ZW0obV9hdmZXcmFwcGVyKSkgewpAQCAtNzkyLDEyICs4
NTMsMTMgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6dAogICAgICAg
ICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gYXVkaW9UcmFja3MgPSBhZG9wdENGKEFWQ0ZBc3NldENv
cHlUcmFja3NXaXRoTWVkaWFDaGFyYWN0ZXJpc3RpYyhhdkFzc2V0KG1fYXZmV3JhcHBlciksIEFW
Q0ZNZWRpYUNoYXJhY3RlcmlzdGljQXVkaWJsZSkpOwogICAgICAgICBzZXRIYXNBdWRpbyhDRkFy
cmF5R2V0Q291bnQoYXVkaW9UcmFja3MuZ2V0KCkpKTsKIAorI2lmICFIQVZFKEFWRk9VTkRBVElP
Tl9NRURJQV9TRUxFQ1RJT05fR1JPVVApCiAgICAgICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBj
YXB0aW9uVHJhY2tzID0gYWRvcHRDRihBVkNGQXNzZXRDb3B5VHJhY2tzV2l0aE1lZGlhVHlwZShh
dkFzc2V0KG1fYXZmV3JhcHBlciksIEFWQ0ZNZWRpYVR5cGVDbG9zZWRDYXB0aW9uKSk7Ci0gICAg
ICAgIHNldEhhc0F1ZGlvKENGQXJyYXlHZXRDb3VudChjYXB0aW9uVHJhY2tzLmdldCgpKSk7Cisg
ICAgICAgIGhhc0NhcHRpb25zID0gQ0ZBcnJheUdldENvdW50KGNhcHRpb25UcmFja3MuZ2V0KCkp
OworI2VuZGlmCiAgICAgfSBlbHNlIHsKICAgICAgICAgYm9vbCBoYXNWaWRlbyA9IGZhbHNlOwog
ICAgICAgICBib29sIGhhc0F1ZGlvID0gZmFsc2U7Ci0gICAgICAgIGJvb2wgaGFzQ2FwdGlvbnMg
PSBmYWxzZTsKIAogICAgICAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gdHJhY2tzID0gYWRvcHRD
RihBVkNGUGxheWVySXRlbUNvcHlUcmFja3MoYXZQbGF5ZXJJdGVtKG1fYXZmV3JhcHBlcikpKTsK
IApAQCAtODE1LDIwICs4NzcsNDMgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25DRjo6dAogICAgICAgICAgICAgICAgICAgICBoYXNWaWRlbyA9IHRydWU7CiAgICAgICAgICAg
ICAgICAgZWxzZSBpZiAoQ0ZTdHJpbmdDb21wYXJlKG1lZGlhVHlwZSwgQVZDRk1lZGlhVHlwZUF1
ZGlvLCBrQ0ZDb21wYXJlQ2FzZUluc2Vuc2l0aXZlKSA9PSBrQ0ZDb21wYXJlRXF1YWxUbykKICAg
ICAgICAgICAgICAgICAgICAgaGFzQXVkaW8gPSB0cnVlOwotICAgICAgICAgICAgICAgIGVsc2Ug
aWYgKENGU3RyaW5nQ29tcGFyZShtZWRpYVR5cGUsIEFWQ0ZNZWRpYVR5cGVDbG9zZWRDYXB0aW9u
LCBrQ0ZDb21wYXJlQ2FzZUluc2Vuc2l0aXZlKSA9PSBrQ0ZDb21wYXJlRXF1YWxUbykKKyAgICAg
ICAgICAgICAgICBlbHNlIGlmIChDRlN0cmluZ0NvbXBhcmUobWVkaWFUeXBlLCBBVkNGTWVkaWFU
eXBlQ2xvc2VkQ2FwdGlvbiwga0NGQ29tcGFyZUNhc2VJbnNlbnNpdGl2ZSkgPT0ga0NGQ29tcGFy
ZUVxdWFsVG8pIHsKKyNpZiAhSEFWRShBVkZPVU5EQVRJT05fTUVESUFfU0VMRUNUSU9OX0dST1VQ
KQogICAgICAgICAgICAgICAgICAgICBoYXNDYXB0aW9ucyA9IHRydWU7CisjZW5kaWYKKyAgICAg
ICAgICAgICAgICAgICAgaGF2ZUNDVHJhY2sgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIHNldEhhc1ZpZGVvKGhhc1ZpZGVvKTsK
ICAgICAgICAgc2V0SGFzQXVkaW8oaGFzQXVkaW8pOwotICAgICAgICBzZXRIYXNDbG9zZWRDYXB0
aW9ucyhoYXNDYXB0aW9ucyk7CiAgICAgfQogCisjaWYgSEFWRShBVkZPVU5EQVRJT05fTUVESUFf
U0VMRUNUSU9OX0dST1VQKQorICAgIEFWQ0ZNZWRpYVNlbGVjdGlvbkdyb3VwUmVmIGxlZ2libGVH
cm91cCA9IHNhZmVNZWRpYVNlbGVjdGlvbkdyb3VwRm9yTGVnaWJsZU1lZGlhKG1fYXZmV3JhcHBl
cik7CisgICAgaWYgKGxlZ2libGVHcm91cCkgeworICAgICAgICBSZXRhaW5QdHI8Q0ZBcnJheVJl
Zj4gcGxheWFibGVPcHRpb25zID0gYWRvcHRDRihBVkNGTWVkaWFTZWxlY3Rpb25Db3B5UGxheWFi
bGVPcHRpb25zRnJvbUFycmF5KEFWQ0ZNZWRpYVNlbGVjdGlvbkdyb3VwR2V0T3B0aW9ucyhsZWdp
YmxlR3JvdXApKSk7CisgICAgICAgIGhhc0NhcHRpb25zID0gQ0ZBcnJheUdldENvdW50KHBsYXlh
YmxlT3B0aW9ucy5nZXQoKSk7CisgICAgICAgIGlmIChoYXNDYXB0aW9ucykKKyAgICAgICAgICAg
IHByb2Nlc3NNZWRpYVNlbGVjdGlvbk9wdGlvbnMoKTsKKyAgICB9CisjZW5kaWYKKworI2lmICFI
QVZFKEFWRk9VTkRBVElPTl9MRUdJQkxFX09VVFBVVF9TVVBQT1JUKQorICAgIGlmIChoYXZlQ0NU
cmFjaykKKyAgICAgICAgcHJvY2Vzc0xlZ2FjeUNsb3NlZENhcHRpb25zVHJhY2tzKCk7CisjZW5k
aWYKKworICAgIHNldEhhc0Nsb3NlZENhcHRpb25zKGhhc0NhcHRpb25zKTsKKwogICAgIExPRyhN
ZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOnRyYWNrc0NoYW5nZWQoJXAp
IC0gaGFzVmlkZW8gPSAlcywgaGFzQXVkaW8gPSAlcywgaGFzQ2FwdGlvbnMgPSAlcyIsIAogICAg
ICAgICB0aGlzLCBib29sU3RyaW5nKGhhc1ZpZGVvKCkpLCBib29sU3RyaW5nKGhhc0F1ZGlvKCkp
LCBib29sU3RyaW5nKGhhc0Nsb3NlZENhcHRpb25zKCkpKTsKIAogICAgIHNpemVDaGFuZ2VkKCk7
CisKKyAgICBpZiAoIXByaW1hcnlBdWRpb1RyYWNrTGFuZ3VhZ2UuaXNOdWxsKCkgJiYgcHJpbWFy
eUF1ZGlvVHJhY2tMYW5ndWFnZSAhPSBsYW5ndWFnZU9mUHJpbWFyeUF1ZGlvVHJhY2soKSkKKyAg
ICAgICAgcGxheWVyKCktPmNoYXJhY3RlcmlzdGljQ2hhbmdlZCgpOwogfQogCiB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpzaXplQ2hhbmdlZCgpCkBAIC04NjEsNiArOTQ2
LDIwMSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpzCiAgICAgc2V0
TmF0dXJhbFNpemUoSW50U2l6ZShuYXR1cmFsU2l6ZSkpOwogfQogCit2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpjbGVhclRleHRUcmFja3MoKQoreworICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBtX3RleHRUcmFja3Muc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgUmVm
UHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY+IHRyYWNrID0gbV90ZXh0VHJhY2tzW2ldOwor
ICAgICAgICBwbGF5ZXIoKS0+cmVtb3ZlVGV4dFRyYWNrKHRyYWNrKTsKKyAgICAgICAgdHJhY2st
PmRpc2Nvbm5lY3QoKTsKKyAgICB9CisgICAgbV90ZXh0VHJhY2tzLmNsZWFyKCk7Cit9CisKKyNp
ZiAhSEFWRShBVkZPVU5EQVRJT05fTEVHSUJMRV9PVVRQVVRfU1VQUE9SVCkKK3ZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnByb2Nlc3NMZWdhY3lDbG9zZWRDYXB0aW9uc1Ry
YWNrcygpCit7CisgICAgQVZDRlBsYXllckl0ZW1TZWxlY3RNZWRpYU9wdGlvbkluTWVkaWFTZWxl
Y3Rpb25Hcm91cChhdlBsYXllckl0ZW0obV9hdmZXcmFwcGVyKSwgMCwgc2FmZU1lZGlhU2VsZWN0
aW9uR3JvdXBGb3JMZWdpYmxlTWVkaWEobV9hdmZXcmFwcGVyKSk7CisKKyAgICBWZWN0b3I8UmVm
UHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY+ID4gcmVtb3ZlZFRleHRUcmFja3MgPSBtX3Rl
eHRUcmFja3M7CisgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IHRyYWNrcyA9IGFkb3B0Q0YoQVZD
RlBsYXllckl0ZW1Db3B5VHJhY2tzKGF2UGxheWVySXRlbShtX2F2ZldyYXBwZXIpKSk7CisgICAg
Q0ZJbmRleCB0cmFja0NvdW50ID0gQ0ZBcnJheUdldENvdW50KHRyYWNrcy5nZXQoKSk7CisgICAg
Zm9yIChDRkluZGV4IGkgPSAwOyBpIDwgdHJhY2tDb3VudDsgKytpKSB7CisgICAgICAgIEFWQ0ZQ
bGF5ZXJJdGVtVHJhY2tSZWYgcGxheWVySXRlbVRyYWNrID0gKEFWQ0ZQbGF5ZXJJdGVtVHJhY2tS
ZWYpKENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgodHJhY2tzLmdldCgpLCBpKSk7CisKKyAgICAgICAg
UmV0YWluUHRyPEFWQ0ZBc3NldFRyYWNrUmVmPiBhc3NldFRyYWNrID0gYWRvcHRDRihBVkNGUGxh
eWVySXRlbVRyYWNrQ29weUFzc2V0VHJhY2socGxheWVySXRlbVRyYWNrKSk7CisgICAgICAgIENG
U3RyaW5nUmVmIG1lZGlhVHlwZSA9IEFWQ0ZBc3NldFRyYWNrR2V0TWVkaWFUeXBlKGFzc2V0VHJh
Y2suZ2V0KCkpOworICAgICAgICBpZiAoIW1lZGlhVHlwZSkKKyAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAgICAgICAgIAorICAgICAgICBpZiAoQ0ZTdHJpbmdDb21wYXJlKG1lZGlhVHlw
ZSwgQVZDRk1lZGlhVHlwZUNsb3NlZENhcHRpb24sIGtDRkNvbXBhcmVDYXNlSW5zZW5zaXRpdmUp
ICE9IGtDRkNvbXBhcmVFcXVhbFRvKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAg
Ym9vbCBuZXdDQ1RyYWNrID0gdHJ1ZTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gcmVtb3Zl
ZFRleHRUcmFja3Muc2l6ZSgpOyBpID4gMDsgLS1pKSB7CisgICAgICAgICAgICBpZiAoIXJlbW92
ZWRUZXh0VHJhY2tzW2kgLSAxXS0+aXNMZWdhY3lDbG9zZWRDYXB0aW9uc1RyYWNrKCkpCisgICAg
ICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIFJlZlB0cjxJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlTGVnYWN5QVZDRj4gdHJhY2sgPSBzdGF0aWNfY2FzdDxJbmJhbmRUZXh0VHJhY2tQ
cml2YXRlTGVnYWN5QVZDRio+KG1fdGV4dFRyYWNrc1tpIC0gMV0uZ2V0KCkpOworICAgICAgICAg
ICAgaWYgKHRyYWNrLT5hdlBsYXllckl0ZW1UcmFjaygpID09IHBsYXllckl0ZW1UcmFjaykgewor
ICAgICAgICAgICAgICAgIHJlbW92ZWRUZXh0VHJhY2tzLnJlbW92ZShpIC0gMSk7CisgICAgICAg
ICAgICAgICAgbmV3Q0NUcmFjayA9IGZhbHNlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKCFuZXdDQ1RyYWNrKQorICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgIAorICAgICAgICBtX3RleHRUcmFja3MuYXBwZW5kKElu
YmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGOjpjcmVhdGUodGhpcywgcGxheWVySXRlbVRy
YWNrKSk7CisgICAgfQorCisgICAgcHJvY2Vzc05ld0FuZFJlbW92ZWRUZXh0VHJhY2tzKHJlbW92
ZWRUZXh0VHJhY2tzKTsKK30KKyNlbmRpZgorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbkNGOjpwcm9jZXNzTmV3QW5kUmVtb3ZlZFRleHRUcmFja3MoY29uc3QgVmVjdG9yPFJl
ZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGPiA+JiByZW1vdmVkVGV4dFRyYWNrcykKK3sK
KyAgICAvLyBGSVhNRTogTGlmdCB0byBwYXJlbnQgY2xhc3MgKGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMTg4MDEpCisgICAgaWYgKHJlbW92ZWRUZXh0VHJhY2tzLnNp
emUoKSkgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV90ZXh0VHJhY2tzLnNp
emUoKTsgKytpKSB7CisgICAgICAgICAgICBpZiAoIXJlbW92ZWRUZXh0VHJhY2tzLmNvbnRhaW5z
KG1fdGV4dFRyYWNrc1tpXSkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIHBsYXllcigpLT5yZW1vdmVUZXh0VHJhY2socmVtb3ZlZFRleHRUcmFj
a3NbaV0uZ2V0KCkpOworICAgICAgICAgICAgbV90ZXh0VHJhY2tzLnJlbW92ZShpKTsKKyAgICAg
ICAgfQorICAgIH0KKyAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV90ZXh0VHJh
Y2tzLnNpemUoKTsgKytpKSB7CisgICAgICAgIFJlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRl
QVZGPiB0cmFjayA9IG1fdGV4dFRyYWNrc1tpXTsKKyAgICAgICAgCisgICAgICAgIHRyYWNrLT5z
ZXRUZXh0VHJhY2tJbmRleChpKTsKKyAgICAgICAgaWYgKHRyYWNrLT5oYXNCZWVuUmVwb3J0ZWQo
KSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAKKyAgICAgICAgdHJhY2stPnNldEhh
c0JlZW5SZXBvcnRlZCh0cnVlKTsKKyAgICAgICAgcGxheWVyKCktPmFkZFRleHRUcmFjayh0cmFj
ay5nZXQoKSk7CisgICAgfQorICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbkNGOjpwcm9jZXNzTmV3QW5kUmVtb3ZlZFRleHRUcmFja3MoJXApIC0gZm91bmQgJWkg
dGV4dCB0cmFja3MiLCB0aGlzLCBtX3RleHRUcmFja3Muc2l6ZSgpKTsKK30KKworI2lmIEhBVkUo
QVZGT1VOREFUSU9OX01FRElBX1NFTEVDVElPTl9HUk9VUCkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uQ0Y6OnByb2Nlc3NNZWRpYVNlbGVjdGlvbk9wdGlvbnMoKQoreworICAg
IEFWQ0ZNZWRpYVNlbGVjdGlvbkdyb3VwUmVmIGxlZ2libGVHcm91cCA9IHNhZmVNZWRpYVNlbGVj
dGlvbkdyb3VwRm9yTGVnaWJsZU1lZGlhKG1fYXZmV3JhcHBlcik7CisgICAgaWYgKCFsZWdpYmxl
R3JvdXApIHsKKyAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uQ0Y6OnByb2Nlc3NNZWRpYVNlbGVjdGlvbk9wdGlvbnMoJXApIC0gbmlsIG1lZGlhU2VsZWN0
aW9uR3JvdXAiLCB0aGlzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFdlIGVu
YWJsZWQgYXV0b21hdGljIG1lZGlhIHNlbGVjdGlvbiBiZWNhdXNlIHdlIHdhbnQgYWx0ZXJuYXRl
IGF1ZGlvIHRyYWNrcyB0byBiZSBlbmFibGVkL2Rpc2FibGVkIGF1dG9tYXRpY2FsbHksCisgICAg
Ly8gYnV0IHNldCB0aGUgc2VsZWN0ZWQgbGVnaWJsZSB0cmFjayB0byBuaWwgc28gdGV4dCB0cmFj
a3Mgd2lsbCBub3QgYmUgYXV0b21hdGljYWxseSBjb25maWd1cmVkLgorICAgIGlmICghbV90ZXh0
VHJhY2tzLnNpemUoKSkgeworICAgICAgICBBU1NFUlQoQVZDRk1lZGlhU2VsZWN0aW9uR3JvdXBB
bGxvd3NFbXB0eVNlbGVjdGlvbihsZWdpYmxlR3JvdXApKTsKKyAgICAgICAgQVZDRlBsYXllckl0
ZW1SZWYgcGxheWVySXRlbSA9IGF2UGxheWVySXRlbShtX2F2ZldyYXBwZXIpOworCisgICAgICAg
IGlmIChwbGF5ZXJJdGVtKQorICAgICAgICAgICAgQVZDRlBsYXllckl0ZW1TZWxlY3RNZWRpYU9w
dGlvbkluTWVkaWFTZWxlY3Rpb25Hcm91cChwbGF5ZXJJdGVtLCAwLCBsZWdpYmxlR3JvdXApOwor
ICAgIH0KKworICAgIFZlY3RvcjxSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRj4gPiBy
ZW1vdmVkVGV4dFRyYWNrcyA9IG1fdGV4dFRyYWNrczsKKyAgICBSZXRhaW5QdHI8Q0ZBcnJheVJl
Zj4gbGVnaWJsZU9wdGlvbnMgPSBhZG9wdENGKEFWQ0ZNZWRpYVNlbGVjdGlvbkNvcHlQbGF5YWJs
ZU9wdGlvbnNGcm9tQXJyYXkoQVZDRk1lZGlhU2VsZWN0aW9uR3JvdXBHZXRPcHRpb25zKGxlZ2li
bGVHcm91cCkpKTsKKyAgICBDRkluZGV4IGxlZ2libGVPcHRpb25zQ291bnQgPSBDRkFycmF5R2V0
Q291bnQobGVnaWJsZU9wdGlvbnMuZ2V0KCkpOworICAgIGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8
IGxlZ2libGVPcHRpb25zQ291bnQ7ICsraSkgeworICAgICAgICBBVkNGTWVkaWFTZWxlY3Rpb25P
cHRpb25SZWYgb3B0aW9uID0gc3RhdGljX2Nhc3Q8QVZDRk1lZGlhU2VsZWN0aW9uT3B0aW9uUmVm
PihDRkFycmF5R2V0VmFsdWVBdEluZGV4KGxlZ2libGVPcHRpb25zLmdldCgpLCBpKSk7CisgICAg
ICAgIGJvb2wgbmV3VHJhY2sgPSB0cnVlOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSByZW1v
dmVkVGV4dFRyYWNrcy5zaXplKCk7IGkgPiAwOyAtLWkpIHsKKyAgICAgICAgICAgIGlmIChyZW1v
dmVkVGV4dFRyYWNrc1tpIC0gMV0tPmlzTGVnYWN5Q2xvc2VkQ2FwdGlvbnNUcmFjaygpKQorICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBSZWZQdHI8SW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUFWQ0Y+IHRyYWNrID0gc3RhdGljX2Nhc3Q8SW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUFWQ0YqPihyZW1vdmVkVGV4dFRyYWNrc1tpIC0gMV0uZ2V0KCkpOworICAgICAgICAgICAgaWYg
KENGRXF1YWwodHJhY2stPm1lZGlhU2VsZWN0aW9uT3B0aW9uKCksIG9wdGlvbikpIHsKKyAgICAg
ICAgICAgICAgICByZW1vdmVkVGV4dFRyYWNrcy5yZW1vdmUoaSAtIDEpOworICAgICAgICAgICAg
ICAgIG5ld1RyYWNrID0gZmFsc2U7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFuZXdUcmFjaykKKyAgICAgICAgICAgIGNvbnRp
bnVlOworCisgICAgICAgIG1fdGV4dFRyYWNrcy5hcHBlbmQoSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUFWQ0Y6OmNyZWF0ZSh0aGlzLCBvcHRpb24pKTsKKyAgICB9CisKKyAgICBwcm9jZXNzTmV3QW5k
UmVtb3ZlZFRleHRUcmFja3MocmVtb3ZlZFRleHRUcmFja3MpOworfQorCisjZW5kaWYgLy8gSEFW
RShBVkZPVU5EQVRJT05fTUVESUFfU0VMRUNUSU9OX0dST1VQKQorCit2b2lkIEFWRldyYXBwZXI6
OnNldEN1cnJlbnRUcmFjayhJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGKiB0cmFjaykKK3sKKyAg
ICBpZiAobV9jdXJyZW50VHJhY2sgPT0gdHJhY2spCisgICAgICAgIHJldHVybjsKKworICAgIExP
RyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpzZXRDdXJyZW50VHJh
Y2soJXApIC0gc2VsZWN0aW5nIHRyYWNrICVwLCBsYW5ndWFnZSA9ICVzIiwgdGhpcywgdHJhY2ss
IHRyYWNrID8gdHJhY2stPmxhbmd1YWdlKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSA6ICIiKTsK
KyAgICAgICAgCisgICAgbV9jdXJyZW50VHJhY2sgPSB0cmFjazsKKworICAgIGlmICh0cmFjaykg
eworICAgICAgICBpZiAodHJhY2stPmlzTGVnYWN5Q2xvc2VkQ2FwdGlvbnNUcmFjaygpKQorICAg
ICAgICAgICAgQVZDRlBsYXllclNldENsb3NlZENhcHRpb25EaXNwbGF5RW5hYmxlZChhdlBsYXll
cigpLCBUUlVFKTsKKyNpZiBIQVZFKEFWRk9VTkRBVElPTl9NRURJQV9TRUxFQ1RJT05fR1JPVVAp
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIEFWQ0ZQbGF5ZXJJdGVtU2VsZWN0TWVkaWFPcHRp
b25Jbk1lZGlhU2VsZWN0aW9uR3JvdXAoYXZQbGF5ZXJJdGVtKCksIHN0YXRpY19jYXN0PEluYmFu
ZFRleHRUcmFja1ByaXZhdGVBVkNGKj4odHJhY2spLT5tZWRpYVNlbGVjdGlvbk9wdGlvbigpLCBz
YWZlTWVkaWFTZWxlY3Rpb25Hcm91cEZvckxlZ2libGVNZWRpYSgpKTsKKyNlbmRpZgorICAgIH0g
ZWxzZSB7CisjaWYgSEFWRShBVkZPVU5EQVRJT05fTUVESUFfU0VMRUNUSU9OX0dST1VQKQorICAg
ICAgICBBVkNGUGxheWVySXRlbVNlbGVjdE1lZGlhT3B0aW9uSW5NZWRpYVNlbGVjdGlvbkdyb3Vw
KGF2UGxheWVySXRlbSgpLCAwLCBzYWZlTWVkaWFTZWxlY3Rpb25Hcm91cEZvckxlZ2libGVNZWRp
YSgpKTsKKyNlbmRpZgorICAgICAgICBBVkNGUGxheWVyU2V0Q2xvc2VkQ2FwdGlvbkRpc3BsYXlF
bmFibGVkKGF2UGxheWVyKCksIEZBTFNFKTsKKyAgICB9Cit9CisKK1N0cmluZyBNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25DRjo6bGFuZ3VhZ2VPZlByaW1hcnlBdWRpb1RyYWNrKCkgY29u
c3QKK3sKKyAgICBpZiAoIW1fbGFuZ3VhZ2VPZlByaW1hcnlBdWRpb1RyYWNrLmlzTnVsbCgpKQor
ICAgICAgICByZXR1cm4gbV9sYW5ndWFnZU9mUHJpbWFyeUF1ZGlvVHJhY2s7CisKKyAgICBpZiAo
IWF2UGxheWVySXRlbShtX2F2ZldyYXBwZXIpKQorICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmco
KTsKKworI2lmIEhBVkUoQVZGT1VOREFUSU9OX01FRElBX1NFTEVDVElPTl9HUk9VUCkKKyAgICAv
LyBJZiBBVkZvdW5kYXRpb24gaGFzIGFuIGF1ZGlibGUgZ3JvdXAsIHJldHVybiB0aGUgbGFuZ3Vh
Z2Ugb2YgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBhdWRpYmxlIG9wdGlvbi4KKyAgICBBVkNGTWVk
aWFTZWxlY3Rpb25Hcm91cFJlZiBhdWRpYmxlR3JvdXAgPSBBVkNGQXNzZXRHZXRTZWxlY3Rpb25H
cm91cEZvck1lZGlhQ2hhcmFjdGVyaXN0aWMoYXZBc3NldChtX2F2ZldyYXBwZXIpLCBBVkNGTWVk
aWFDaGFyYWN0ZXJpc3RpY0F1ZGlibGUpOworICAgIEFWQ0ZNZWRpYVNlbGVjdGlvbk9wdGlvblJl
ZiBjdXJyZW50bHlTZWxlY3RlZEF1ZGlibGVPcHRpb24gPSBBVkNGUGxheWVySXRlbUdldFNlbGVj
dGVkTWVkaWFPcHRpb25Jbk1lZGlhU2VsZWN0aW9uR3JvdXAoYXZQbGF5ZXJJdGVtKG1fYXZmV3Jh
cHBlciksIGF1ZGlibGVHcm91cCk7CisgICAgaWYgKGN1cnJlbnRseVNlbGVjdGVkQXVkaWJsZU9w
dGlvbikgeworICAgICAgICBSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+IGF1ZGlibGVPcHRpb25Mb2Nh
bGUgPSBhZG9wdENGKEFWQ0ZNZWRpYVNlbGVjdGlvbk9wdGlvbkNvcHlMb2NhbGUoY3VycmVudGx5
U2VsZWN0ZWRBdWRpYmxlT3B0aW9uKSk7CisgICAgICAgIG1fbGFuZ3VhZ2VPZlByaW1hcnlBdWRp
b1RyYWNrID0gQ0ZMb2NhbGVHZXRJZGVudGlmaWVyKGF1ZGlibGVPcHRpb25Mb2NhbGUuZ2V0KCkp
OworICAgICAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6
bGFuZ3VhZ2VPZlByaW1hcnlBdWRpb1RyYWNrKCVwKSAtIHJldHVybmluZyBsYW5ndWFnZSBvZiBz
ZWxlY3RlZCBhdWRpYmxlIG9wdGlvbjogJXMiLCB0aGlzLCBtX2xhbmd1YWdlT2ZQcmltYXJ5QXVk
aW9UcmFjay51dGY4KCkuZGF0YSgpKTsKKworICAgICAgICByZXR1cm4gbV9sYW5ndWFnZU9mUHJp
bWFyeUF1ZGlvVHJhY2s7CisgICAgfQorI2VuZGlmIC8vIEhBVkUoQVZGT1VOREFUSU9OX01FRElB
X1NFTEVDVElPTl9HUk9VUCkKKworICAgIC8vIEFWRm91bmRhdGlvbiBzeW50aGVzaXplcyBhbiBh
dWRpYmxlIGdyb3VwIHdoZW4gdGhlcmUgaXMgb25seSBvbmUgdW5ncm91cGVkIGF1ZGlvIHRyYWNr
IGlmIHRoZXJlIGlzIGFsc28gYSBsZWdpYmxlIGdyb3VwIChvbmUgb3IKKyAgICAvLyBtb3JlIGlu
LWJhbmQgdGV4dCB0cmFja3MpLiBJdCBkb2Vzbid0IGtub3cgYWJvdXQgb3V0LW9mLWJhbmQgdHJh
Y2tzLCBzbyBpZiB0aGVyZSBpcyBhIHNpbmdsZSBhdWRpbyB0cmFjayByZXR1cm4gaXRzIGxhbmd1
YWdlLgorICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiB0cmFja3MgPSBhZG9wdENGKEFWQ0ZBc3Nl
dENvcHlUcmFja3NXaXRoTWVkaWFUeXBlKGF2QXNzZXQobV9hdmZXcmFwcGVyKSwgQVZDRk1lZGlh
VHlwZUF1ZGlvKSk7CisgICAgQ0ZJbmRleCB0cmFja0NvdW50ID0gQ0ZBcnJheUdldENvdW50KHRy
YWNrcy5nZXQoKSk7CisgICAgaWYgKCF0cmFja3MgfHwgdHJhY2tDb3VudCAhPSAxKSB7CisgICAg
ICAgIG1fbGFuZ3VhZ2VPZlByaW1hcnlBdWRpb1RyYWNrID0gZW1wdHlTdHJpbmcoKTsKKyAgICAg
ICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6Omxhbmd1YWdl
T2ZQcmltYXJ5QXVkaW9UcmFjayglcCkgLSAlaSBhdWRpbyB0cmFja3MsIHJldHVybmluZyBlbXB0
eVN0cmluZygpIiwgdGhpcywgKHRyYWNrcyA/IHRyYWNrQ291bnQgOiAwKSk7CisgICAgICAgIHJl
dHVybiBtX2xhbmd1YWdlT2ZQcmltYXJ5QXVkaW9UcmFjazsKKyAgICB9CisKKyAgICBBVkNGQXNz
ZXRUcmFja1JlZiB0cmFjayA9IChBVkNGQXNzZXRUcmFja1JlZilDRkFycmF5R2V0VmFsdWVBdElu
ZGV4KHRyYWNrcy5nZXQoKSwgMCk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBsYW5ndWFn
ZSA9IGFkb3B0Q0YoQVZDRkFzc2V0VHJhY2tDb3B5RXh0ZW5kZWRMYW5ndWFnZVRhZyh0cmFjaykp
OworCisgICAgLy8gU29tZSBsZWdhY3kgdHJhY2tzIGhhdmUgInVuZCIgYXMgYSBsYW5ndWFnZSwg
dHJlYXQgdGhhdCB0aGUgc2FtZSBhcyBubyBsYW5ndWFnZSBhdCBhbGwuCisgICAgaWYgKGxhbmd1
YWdlICYmIENGU3RyaW5nQ29tcGFyZShsYW5ndWFnZS5nZXQoKSwgQ0ZTVFIoInVuZCIpLCBrQ0ZD
b21wYXJlQ2FzZUluc2Vuc2l0aXZlKSAhPSBrQ0ZDb21wYXJlRXF1YWxUbykgeworICAgICAgICBt
X2xhbmd1YWdlT2ZQcmltYXJ5QXVkaW9UcmFjayA9IGxhbmd1YWdlLmdldCgpOworICAgICAgICBM
T0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6bGFuZ3VhZ2VPZlBy
aW1hcnlBdWRpb1RyYWNrKCVwKSAtIHJldHVybmluZyBsYW5ndWFnZSBvZiBzaW5nbGUgYXVkaW8g
dHJhY2s6ICVzIiwgdGhpcywgbV9sYW5ndWFnZU9mUHJpbWFyeUF1ZGlvVHJhY2sudXRmOCgpLmRh
dGEoKSk7CisgICAgICAgIHJldHVybiBtX2xhbmd1YWdlT2ZQcmltYXJ5QXVkaW9UcmFjazsKKyAg
ICB9CisKKyAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6
bGFuZ3VhZ2VPZlByaW1hcnlBdWRpb1RyYWNrKCVwKSAtIHNpbmdsZSBhdWRpbyB0cmFjayBoYXMg
bm8gbGFuZ3VhZ2UsIHJldHVybmluZyBlbXB0eVN0cmluZygpIiwgdGhpcyk7CisgICAgbV9sYW5n
dWFnZU9mUHJpbWFyeUF1ZGlvVHJhY2sgPSBlbXB0eVN0cmluZygpOworICAgIHJldHVybiBtX2xh
bmd1YWdlT2ZQcmltYXJ5QXVkaW9UcmFjazsKK30KKwogdm9pZCBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25DRjo6Y29udGVudHNOZWVkc0Rpc3BsYXkoKQogewogICAgIGlmIChtX2F2Zldy
YXBwZXIpCkBAIC04NzAsNiArMTE1MCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uQ0Y6OmMKIEFWRldyYXBwZXI6OkFWRldyYXBwZXIoTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uQ0YqIG93bmVyKQogICAgIDogbV9vd25lcihvd25lcikKICAgICAsIG1fb2JqZWN0
SUQoc19uZXh0QVZGV3JhcHBlck9iamVjdElEKyspCisgICAgLCBtX2N1cnJlbnRUcmFjaygwKQog
ewogICAgIExPRyhNZWRpYSwgIkFWRldyYXBwZXI6OkFWRldyYXBwZXIoJXApIiwgdGhpcyk7CiAK
QEAgLTg5Miw2ICsxMTczLDE0IEBAIEFWRldyYXBwZXI6On5BVkZXcmFwcGVyKCkKICAgICAgICAg
bV9hdkFzc2V0ID0gMDsKICAgICB9CiAKKyNpZiBIQVZFKEFWRk9VTkRBVElPTl9NRURJQV9TRUxF
Q1RJT05fR1JPVVApICYmIEhBVkUoQVZGT1VOREFUSU9OX0xFR0lCTEVfT1VUUFVUX1NVUFBPUlQp
CisgICAgaWYgKGxlZ2libGVPdXRwdXQoKSkgeworICAgICAgICBpZiAoYXZQbGF5ZXJJdGVtKCkp
CisgICAgICAgICAgICBBVkNGUGxheWVySXRlbVJlbW92ZU91dHB1dChhdlBsYXllckl0ZW0oKSwg
bGVnaWJsZU91dHB1dCgpKTsKKyAgICAgICAgbV9sZWdpYmxlT3V0cHV0ID0gMDsKKyAgICB9Cisj
ZW5kaWYKKwogICAgIG1fYXZQbGF5ZXJJdGVtID0gMDsKICAgICBtX3RpbWVPYnNlcnZlciA9IDA7
CiAgICAgbV9hdlBsYXllciA9IDA7CkBAIC0xMDA0LDEzICsxMjkzLDI3IEBAIHZvaWQgQVZGV3Jh
cHBlcjo6Y3JlYXRlUGxheWVyKElEaXJlY3QzREQKICAgICBpZiAobV9kM2REZXZpY2UgJiYgQVZD
RlBsYXllckVuYWJsZUhhcmR3YXJlQWNjZWxlcmF0ZWRWaWRlb0RlY29kZXJLZXkpCiAgICAgICAg
IENGRGljdGlvbmFyeVNldFZhbHVlKG9wdGlvbnNSZWYuZ2V0KCksIEFWQ0ZQbGF5ZXJFbmFibGVI
YXJkd2FyZUFjY2VsZXJhdGVkVmlkZW9EZWNvZGVyS2V5LCBrQ0ZCb29sZWFuVHJ1ZSk7CiAKKyNp
ZiBIQVZFKEFWRk9VTkRBVElPTl9NRURJQV9TRUxFQ1RJT05fR1JPVVApICYmIEhBVkUoQVZGT1VO
REFUSU9OX0xFR0lCTEVfT1VUUFVUX1NVUFBPUlQpCisgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUo
b3B0aW9uc1JlZi5nZXQoKSwgQVZDRlBsYXllckFwcGxpZXNNZWRpYVNlbGVjdGlvbkNyaXRlcmlh
QXV0b21hdGljYWxseUtleSwga0NGQm9vbGVhblRydWUpOworI2VuZGlmCisKICAgICAvLyBGSVhN
RTogV2UgbmVlZCBhIHdheSB0byBjcmVhdGUgYSBBVlBsYXllciB3aXRob3V0IGFuIEFWUGxheWVy
SXRlbSwgc2VlIDxyZGFyOi8vcHJvYmxlbS85ODc3NzMwPi4KICAgICBBVkNGUGxheWVyUmVmIHBs
YXllclJlZiA9IEFWQ0ZQbGF5ZXJDcmVhdGVXaXRoUGxheWVySXRlbUFuZE9wdGlvbnMoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgYXZQbGF5ZXJJdGVtKCksIG9wdGlvbnNSZWYuZ2V0KCksIG1fbm90aWZp
Y2F0aW9uUXVldWUpOwogICAgIG1fYXZQbGF5ZXIgPSBhZG9wdENGKHBsYXllclJlZik7CisjaWYg
SEFWRShBVkZPVU5EQVRJT05fTUVESUFfU0VMRUNUSU9OX0dST1VQKSAmJiBIQVZFKEFWRk9VTkRB
VElPTl9MRUdJQkxFX09VVFBVVF9TVVBQT1JUKQorICAgIEFWQ0ZQbGF5ZXJTZXRDbG9zZWRDYXB0
aW9uRGlzcGxheUVuYWJsZWQocGxheWVyUmVmLCBGQUxTRSk7CisjZW5kaWYKIAogICAgIGlmICht
X2QzZERldmljZSAmJiBBVkNGUGxheWVyU2V0RGlyZWN0M0REZXZpY2VQdHIoKSkKICAgICAgICAg
QVZDRlBsYXllclNldERpcmVjdDNERGV2aWNlUHRyKCkocGxheWVyUmVmLCBtX2QzZERldmljZS5n
ZXQoKSk7CiAKKyNpZiBIQVZFKEFWRk9VTkRBVElPTl9NRURJQV9TRUxFQ1RJT05fR1JPVVApICYm
IEhBVkUoQVZGT1VOREFUSU9OX0xFR0lCTEVfT1VUUFVUX1NVUFBPUlQpCisgICAgLy8gQmVjYXVz
ZSBvZiBhIGJ1ZyBpbiBBVkZvdW5kYXRpb25DRiwgd2UgaGF2ZSB0byB3YWl0IHVudGlsIHRoZSBw
bGF5ZXIgaXMgY3JlYXRlZCBiZWZvcmUgd2UgY2FuIGFkZCB0aGUgbGVnaWJsZSBvdXRwdXQ6Cisg
ICAgLy8gT25jZSA8cmRhcjovL3Byb2JsZW0vMTQzOTA0NjY+IHRoaXMgaXMgZml4ZWQsIHdlIGNh
biByZW1vdmUgdGhlIGZvbGxvd2luZyB0d28gbGluZXMuCisgICAgOjpTbGVlcCgxMDAwKTsgLy8g
RklYTUU6IFRoaXMgaXMgYmVpbmcgZml4ZWQgYXMgcGFydCBvZiA8cmRhcjovL3Byb2JsZW0vMTQz
OTA0NjY+CisgICAgQVZDRlBsYXllckl0ZW1BZGRPdXRwdXQoYXZQbGF5ZXJJdGVtKCksIGxlZ2li
bGVPdXRwdXQoKSk7CisjZW5kaWYKKwogICAgIENGTm90aWZpY2F0aW9uQ2VudGVyUmVmIGNlbnRl
ciA9IENGTm90aWZpY2F0aW9uQ2VudGVyR2V0TG9jYWxDZW50ZXIoKTsKICAgICBBU1NFUlQoY2Vu
dGVyKTsKIApAQCAtMTA0MSw4ICsxMzQ0LDMwIEBAIHZvaWQgQVZGV3JhcHBlcjo6Y3JlYXRlUGxh
eWVySXRlbSgpCiAgICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJBZGRPYnNlcnZlcihjZW50ZXIsIGNh
bGxiYWNrQ29udGV4dCgpLCBub3RpZmljYXRpb25DYWxsYmFjaywgQVZDRlBsYXllckl0ZW1Jc1Bs
YXliYWNrTGlrZWx5VG9LZWVwVXBDaGFuZ2VkTm90aWZpY2F0aW9uLCBpdGVtUmVmLCBDRk5vdGlm
aWNhdGlvblN1c3BlbnNpb25CZWhhdmlvckRlbGl2ZXJJbW1lZGlhdGVseSk7CiAgICAgQ0ZOb3Rp
ZmljYXRpb25DZW50ZXJBZGRPYnNlcnZlcihjZW50ZXIsIGNhbGxiYWNrQ29udGV4dCgpLCBub3Rp
ZmljYXRpb25DYWxsYmFjaywgQVZDRlBsYXllckl0ZW1Jc1BsYXliYWNrQnVmZmVyRW1wdHlDaGFu
Z2VkTm90aWZpY2F0aW9uLCBpdGVtUmVmLCBDRk5vdGlmaWNhdGlvblN1c3BlbnNpb25CZWhhdmlv
ckRlbGl2ZXJJbW1lZGlhdGVseSk7CiAgICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJBZGRPYnNlcnZl
cihjZW50ZXIsIGNhbGxiYWNrQ29udGV4dCgpLCBub3RpZmljYXRpb25DYWxsYmFjaywgQVZDRlBs
YXllckl0ZW1Jc1BsYXliYWNrQnVmZmVyRnVsbENoYW5nZWROb3RpZmljYXRpb24sIGl0ZW1SZWYs
IENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsKKyAg
ICBDRk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2VydmVyKGNlbnRlciwgY2FsbGJhY2tDb250ZXh0
KCksIG5vdGlmaWNhdGlvbkNhbGxiYWNrLCBBVkNGUGxheWVySXRlbUR1cmF0aW9uQ2hhbmdlZE5v
dGlmaWNhdGlvbiwgaXRlbVJlZiwgQ0ZOb3RpZmljYXRpb25TdXNwZW5zaW9uQmVoYXZpb3JEZWxp
dmVySW1tZWRpYXRlbHkpOworICAgIC8vIEZJWE1FOiBBcmUgdGhlcmUgb3RoZXIgbGVnaWJsZSBv
dXRwdXQgdGhpbmdzIHdlIG5lZWQgdG8gcmVnaXN0ZXIgZm9yPyBhc3NldCwgaGFzRW5hYmxlZEF1
ZGlvPwogCiAgICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJBZGRPYnNlcnZlcihjZW50ZXIsIGNhbGxi
YWNrQ29udGV4dCgpLCBub3RpZmljYXRpb25DYWxsYmFjaywgQ0FDRkNvbnRleHROZWVkc0ZsdXNo
Tm90aWZpY2F0aW9uKCksIDAsIENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZl
ckltbWVkaWF0ZWx5KTsKKworI2lmIEhBVkUoQVZGT1VOREFUSU9OX01FRElBX1NFTEVDVElPTl9H
Uk9VUCkgJiYgSEFWRShBVkZPVU5EQVRJT05fTEVHSUJMRV9PVVRQVVRfU1VQUE9SVCkKKyAgICBj
b25zdCBDRlRpbWVJbnRlcnZhbCBsZWdpYmxlT3V0cHV0QWR2YW5jZUludGVydmFsID0gMjsKKwor
ICAgIG1fbGVnaWJsZU91dHB1dCA9IGFkb3B0Q0YoQVZDRlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0
Q3JlYXRlV2l0aE1lZGlhU3VidHlwZXNGb3JOYXRpdmVSZXByZXNlbnRhdGlvbihrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCAwKSk7CisgICAgQVZDRlBsYXllckl0ZW1PdXRwdXRTZXRTdXBwcmVzc1BsYXll
clJlbmRlcmluZyhtX2xlZ2libGVPdXRwdXQuZ2V0KCksIFRSVUUpOworCisgICAgQVZDRlBsYXll
ckl0ZW1MZWdpYmxlT3V0cHV0Q2FsbGJhY2tzIGNhbGxiYWNrSW5mbzsKKyAgICBjYWxsYmFja0lu
Zm8udmVyc2lvbiA9IGtBVkNGUGxheWVySXRlbUxlZ2libGVPdXRwdXRfQ2FsbGJhY2tzVmVyc2lv
bl8xOworICAgIEFTU0VSVChjYWxsYmFja0NvbnRleHQoKSk7CisgICAgY2FsbGJhY2tJbmZvLmNv
bnRleHQgPSBjYWxsYmFja0NvbnRleHQoKTsKKyAgICBjYWxsYmFja0luZm8ubGVnaWJsZU91dHB1
dENhbGxiYWNrID0gQVZGV3JhcHBlcjo6bGVnaWJsZU91dHB1dENhbGxiYWNrOworCisgICAgQVZD
RlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0U2V0Q2FsbGJhY2tzKG1fbGVnaWJsZU91dHB1dC5nZXQo
KSwgJmNhbGxiYWNrSW5mbywgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSk7CisgICAgQVZDRlBs
YXllckl0ZW1MZWdpYmxlT3V0cHV0U2V0QWR2YW5jZUludGVydmFsRm9yQ2FsbGJhY2tJbnZvY2F0
aW9uKG1fbGVnaWJsZU91dHB1dC5nZXQoKSwgbGVnaWJsZU91dHB1dEFkdmFuY2VJbnRlcnZhbCk7
CisgICAgQVZDRlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0U2V0VGV4dFN0eWxpbmdSZXNvbHV0aW9u
KG1fbGVnaWJsZU91dHB1dC5nZXQoKSwgQVZDRlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0VGV4dFN0
eWxpbmdSZXNvbHV0aW9uU291cmNlQW5kUnVsZXNPbmx5KTsKKyAgICAvLyBXZSBjYW5ub3QgYWRk
IHRoZSBMZWdpYmxlIE91dHB1dCB0byB0aGUgcGxheWVyIGl0ZW0gdW50aWwgdGhlIHBsYXllciBp
cyBjb25zdHJ1Y3RlZC4gPHJkYXI6Ly9wcm9ibGVtLzE0MzkwNDY2PgorICAgIC8vIE9uY2UgdGhp
cyBpcyBmaXhlZCwgd2UgY2FuIHVuY29tbWVudCB0aGUgZm9sbG93aW5nIGxpbmUuCisgICAgLy8g
QVZDRlBsYXllckl0ZW1BZGRPdXRwdXQobV9hdlBsYXllckl0ZW0uZ2V0KCksIG1fbGVnaWJsZU91
dHB1dC5nZXQoKSk7CisjZW5kaWYKIH0KIAogdm9pZCBBVkZXcmFwcGVyOjpwZXJpb2RpY1RpbWVP
YnNlcnZlckNhbGxiYWNrKEFWQ0ZQbGF5ZXJSZWYsIENNVGltZSBjbVRpbWUsIHZvaWQqIGNvbnRl
eHQpCkBAIC0xMTcxLDYgKzE0OTYsNTkgQEAgdm9pZCBBVkZXcmFwcGVyOjpzZWVrVG9UaW1lKGZs
b2F0IHRpbWUpCiAgICAgICAgIGtDTVRpbWVaZXJvLCBrQ01UaW1lWmVybywgJnNlZWtDb21wbGV0
ZWRDYWxsYmFjaywgY2FsbGJhY2tDb250ZXh0KCkpOwogfQogCitzdHJ1Y3QgTGVnaWJsZU91dHB1
dERhdGEgeworICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBtX2F0dHJpYnV0ZWRTdHJpbmdzOwor
ICAgIGRvdWJsZSBtX3RpbWU7CisgICAgdm9pZCogbV9jb250ZXh0OworCisgICAgTGVnaWJsZU91
dHB1dERhdGEoQ0ZBcnJheVJlZiBzdHJpbmdzLCBkb3VibGUgdGltZSwgdm9pZCogY29udGV4dCkK
KyAgICAgICAgOiBtX2F0dHJpYnV0ZWRTdHJpbmdzKHN0cmluZ3MpLCBtX3RpbWUodGltZSksIG1f
Y29udGV4dChjb250ZXh0KQorICAgIHsKKyAgICB9Cit9OworCit2b2lkIEFWRldyYXBwZXI6OnBy
b2Nlc3NDdWUodm9pZCogY29udGV4dCkKK3sKKyAgICBBU1NFUlQoZGlzcGF0Y2hfZ2V0X21haW5f
cXVldWUoKSA9PSBkaXNwYXRjaF9nZXRfY3VycmVudF9xdWV1ZSgpKTsKKyAgICBBU1NFUlQoY29u
dGV4dCk7CisKKyAgICBpZiAoIWNvbnRleHQpCisgICAgICAgIHJldHVybjsKKworICAgIE93blB0
cjxMZWdpYmxlT3V0cHV0RGF0YT4gbGVnaWJsZU91dHB1dERhdGEgPSBhZG9wdFB0cihyZWludGVy
cHJldF9jYXN0PExlZ2libGVPdXRwdXREYXRhKj4oY29udGV4dCkpOworCisgICAgTXV0ZXhMb2Nr
ZXIgbG9ja2VyKG1hcExvY2soKSk7CisgICAgQVZGV3JhcHBlciogc2VsZiA9IGF2ZldyYXBwZXJG
b3JDYWxsYmFja0NvbnRleHQobGVnaWJsZU91dHB1dERhdGEtPm1fY29udGV4dCk7CisgICAgaWYg
KCFzZWxmKSB7CisgICAgICAgIExPRyhNZWRpYSwgIkFWRldyYXBwZXI6OnByb2Nlc3NDdWUgaW52
b2tlZCBmb3IgZGVsZXRlZCBBVkZXcmFwcGVyICVkIiwgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRy
X3Q+KGNvbnRleHQpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghc2VsZi0+
bV9jdXJyZW50VHJhY2spCisgICAgICAgIHJldHVybjsKKworICAgIHNlbGYtPm1fY3VycmVudFRy
YWNrLT5wcm9jZXNzQ3VlKGxlZ2libGVPdXRwdXREYXRhLT5tX2F0dHJpYnV0ZWRTdHJpbmdzLmdl
dCgpLCBsZWdpYmxlT3V0cHV0RGF0YS0+bV90aW1lKTsKK30KKwordm9pZCBBVkZXcmFwcGVyOjps
ZWdpYmxlT3V0cHV0Q2FsbGJhY2sodm9pZCogY29udGV4dCwgQVZDRlBsYXllckl0ZW1MZWdpYmxl
T3V0cHV0UmVmIGxlZ2libGVPdXRwdXQsIENGQXJyYXlSZWYgYXR0cmlidXRlZFN0cmluZ3MsIENG
QXJyYXlSZWYgLypuYXRpdmVTYW1wbGVCdWZmZXJzKi8sIENNVGltZSBpdGVtVGltZSkKK3sKKyAg
ICBBU1NFUlQoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSA9PSBkaXNwYXRjaF9nZXRfY3VycmVu
dF9xdWV1ZSgpKTsKKyAgICBNdXRleExvY2tlciBsb2NrZXIobWFwTG9jaygpKTsKKyAgICBBVkZX
cmFwcGVyKiBzZWxmID0gYXZmV3JhcHBlckZvckNhbGxiYWNrQ29udGV4dChjb250ZXh0KTsKKyAg
ICBpZiAoIXNlbGYpIHsKKyAgICAgICAgTE9HKE1lZGlhLCAiQVZGV3JhcHBlcjo6bGVnaWJsZU91
dHB1dENhbGxiYWNrIGludm9rZWQgZm9yIGRlbGV0ZWQgQVZGV3JhcHBlciAlZCIsIHJlaW50ZXJw
cmV0X2Nhc3Q8dWludHB0cl90Pihjb250ZXh0KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBMT0coTWVkaWEsICJBVkZXcmFwcGVyOjpsZWdpYmxlT3V0cHV0Q2FsbGJhY2soJXApIiwg
c2VsZik7CisKKyAgICBBU1NFUlQobGVnaWJsZU91dHB1dCA9PSBzZWxmLT5tX2xlZ2libGVPdXRw
dXQpOworCisgICAgT3duUHRyPExlZ2libGVPdXRwdXREYXRhPiBsZWdpYmxlT3V0cHV0RGF0YSA9
IGFkb3B0UHRyKG5ldyBMZWdpYmxlT3V0cHV0RGF0YShhdHRyaWJ1dGVkU3RyaW5ncywgQ01UaW1l
R2V0U2Vjb25kcyhpdGVtVGltZSksIGNvbnRleHQpKTsKKworICAgIGRpc3BhdGNoX2FzeW5jX2Yo
ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgbGVnaWJsZU91dHB1dERhdGEubGVha1B0cigpLCBw
cm9jZXNzQ3VlKTsKK30KKwogdm9pZCBBVkZXcmFwcGVyOjpzZXRBc3NldChBVkNGVVJMQXNzZXRS
ZWYgYXNzZXQpCiB7CiAgICAgaWYgKGFzc2V0ID09IGF2QXNzZXQoKSkKQEAgLTEyODMsNiArMTY2
MSwxOSBAQCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gQVZGV3JhcHBlcjo6Y3JlYXRlCiAgICAgcmV0
dXJuIGltYWdlOwogfQogCisjaWYgSEFWRShBVkZPVU5EQVRJT05fTUVESUFfU0VMRUNUSU9OX0dS
T1VQKSAmJiBIQVZFKEFWRk9VTkRBVElPTl9MRUdJQkxFX09VVFBVVF9TVVBQT1JUKQorQVZDRk1l
ZGlhU2VsZWN0aW9uR3JvdXBSZWYgQVZGV3JhcHBlcjo6c2FmZU1lZGlhU2VsZWN0aW9uR3JvdXBG
b3JMZWdpYmxlTWVkaWEoKSBjb25zdAoreworICAgIGlmICghYXZBc3NldCgpKQorICAgICAgICBy
ZXR1cm4gMDsKKworICAgIGlmIChBVkNGQXNzZXRHZXRTdGF0dXNPZlZhbHVlRm9yUHJvcGVydHko
YXZBc3NldCgpLCBBVkNGQXNzZXRQcm9wZXJ0eUF2YWlsYWJsZU1lZGlhQ2hhcmFjdGVyaXN0aWNz
V2l0aE1lZGlhU2VsZWN0aW9uT3B0aW9ucywgMCkgIT0gQVZDRlByb3BlcnR5VmFsdWVTdGF0dXNM
b2FkZWQpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIEFWQ0ZBc3NldEdldFNlbGVj
dGlvbkdyb3VwRm9yTWVkaWFDaGFyYWN0ZXJpc3RpYyhhdkFzc2V0KCksIEFWQ0ZNZWRpYUNoYXJh
Y3RlcmlzdGljTGVnaWJsZSk7Cit9CisjZW5kaWYKKwogdm9pZCBMYXllckNsaWVudDo6cGxhdGZv
cm1DQUxheWVyTGF5b3V0U3VibGF5ZXJzT2ZMYXllcihQbGF0Zm9ybUNBTGF5ZXIqIHdyYXBwZXJM
YXllcikKIHsKICAgICBBU1NFUlQobV9wYXJlbnQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbkNGLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmgJKHJldmlz
aW9uIDE1Mjg1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0zOCwxMCArMzgsOSBAQCBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRiA6
CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Yo
KTsKIAotICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdp
c3RyYXIpOworICAgIHZpcnR1YWwgdm9pZCB0cmFja3NDaGFuZ2VkKCkgT1ZFUlJJREU7CiAKLSAg
ICAvL0ZJWE1FOiB0aGlzIG5lZWRzIHRvIGJlIGltcGxlbWVudGVkCi0gICAgdmlydHVhbCBJbmJh
bmRUZXh0VHJhY2tQcml2YXRlQVZGKiBjdXJyZW50VHJhY2soKSBjb25zdCB7IHJldHVybiAwOyB9
CisgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJh
cik7CiAKIHByaXZhdGU6CiAgICAgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YoTWVk
aWFQbGF5ZXIqKTsKQEAgLTg1LDcgKzg0LDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGZsb2F0
IHBsYXRmb3JtRHVyYXRpb24oKSBjb25zdDsKICAgICB2aXJ0dWFsIGZsb2F0IHBsYXRmb3JtTWF4
VGltZUxvYWRlZCgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBiZWdpbkxvYWRpbmdNZXRhZGF0
YSgpOwotICAgIHZpcnR1YWwgdm9pZCB0cmFja3NDaGFuZ2VkKCk7CiAgICAgdmlydHVhbCB2b2lk
IHNpemVDaGFuZ2VkKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgaGFzQXZhaWxhYmxlVmlkZW9GcmFt
ZSgpIGNvbnN0OwpAQCAtMTAxLDkgKzk5LDI1IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZv
aWQgY29udGVudHNOZWVkc0Rpc3BsYXkoKTsKIAorICAgIHZpcnR1YWwgU3RyaW5nIGxhbmd1YWdl
T2ZQcmltYXJ5QXVkaW9UcmFjaygpIGNvbnN0IE9WRVJSSURFOworCisjaWYgSEFWRShBVkZPVU5E
QVRJT05fTUVESUFfU0VMRUNUSU9OX0dST1VQKQorICAgIHZvaWQgcHJvY2Vzc01lZGlhU2VsZWN0
aW9uT3B0aW9ucygpOworI2VuZGlmCisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q3VycmVudFRyYWNr
KEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkYqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEluYmFu
ZFRleHRUcmFja1ByaXZhdGVBVkYqIGN1cnJlbnRUcmFjaygpIGNvbnN0IE9WRVJSSURFOworICAg
IHZvaWQgcHJvY2Vzc05ld0FuZFJlbW92ZWRUZXh0VHJhY2tzKGNvbnN0IFZlY3RvcjxSZWZQdHI8
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRj4gPiYpOworICAgIHZvaWQgY2xlYXJUZXh0VHJhY2tz
KCk7CisKKyNpZiAhSEFWRShBVkZPVU5EQVRJT05fTEVHSUJMRV9PVVRQVVRfU1VQUE9SVCkKKyAg
ICB2b2lkIHByb2Nlc3NMZWdhY3lDbG9zZWRDYXB0aW9uc1RyYWNrcygpOworI2VuZGlmCisKICAg
ICBmcmllbmQgY2xhc3MgQVZGV3JhcHBlcjsKICAgICBBVkZXcmFwcGVyKiBtX2F2ZldyYXBwZXI7
CiAgICAgCisgICAgbXV0YWJsZSBTdHJpbmcgbV9sYW5ndWFnZU9mUHJpbWFyeUF1ZGlvVHJhY2s7
CiAgICAgYm9vbCBtX3ZpZGVvRnJhbWVIYXNEcmF3bjsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9Tb2Z0TGlua2luZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9Tb2Z0TGlua2luZy5oCShyZXZpc2lvbiAxNTI4NTgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU29mdExpbmtpbmcuaAkod29ya2luZyBjb3B5KQpAQCAt
MTU3LDcgKzE1Nyw3IEBACiAgICAgI2RlZmluZSBteVZhciBnZXRfbXlWYXIoKQogKi8gCiAjZGVm
aW5lIFNPRlRfTElOS19WQVJJQUJMRV9ETExfSU1QT1JUKGxpYnJhcnksIHZhcmlhYmxlTmFtZSwg
dmFyaWFibGVUeXBlKSBcCi0gICAgc3RhdGljIHZhcmlhYmxlVHlwZSBnZXRfIyN2YXJpYWJsZU5h
bWUoKSBcCisgICAgc3RhdGljIHZhcmlhYmxlVHlwZSBnZXQjI3ZhcmlhYmxlTmFtZSgpIFwKICAg
ICB7IFwKICAgICAgICAgc3RhdGljIHZhcmlhYmxlVHlwZSogcHRyID0gcmVpbnRlcnByZXRfY2Fz
dDx2YXJpYWJsZVR5cGUqPihTT0ZUX0xJTktfR0VUUFJPQ0FERFJFU1MobGlicmFyeSMjTGlicmFy
eSgpLCAjdmFyaWFibGVOYW1lKSk7IFwKICAgICAgICAgQVNTRVJUKHB0cik7IFwKQEAgLTE2OCw3
ICsxNjgsNyBAQAogICAgIE5vdGUgdGhhdCB0aGlzIHdpbGwgb25seSB3b3JrIGZvciB2YXJpYWJs
ZSB0eXBlcyBmb3Igd2hpY2ggYSByZXR1cm4gdmFsdWUgb2YgMCBjYW4gc2lnbmFsIGFuIGVycm9y
LgogICovCiAjZGVmaW5lIFNPRlRfTElOS19WQVJJQUJMRV9ETExfSU1QT1JUX09QVElPTkFMKGxp
YnJhcnksIHZhcmlhYmxlTmFtZSwgdmFyaWFibGVUeXBlKSBcCi0gICAgc3RhdGljIHZhcmlhYmxl
VHlwZSBnZXRfIyN2YXJpYWJsZU5hbWUoKSBcCisgICAgc3RhdGljIHZhcmlhYmxlVHlwZSBnZXQj
I3ZhcmlhYmxlTmFtZSgpIFwKICAgICB7IFwKICAgICAgICAgc3RhdGljIHZhcmlhYmxlVHlwZSog
cHRyID0gcmVpbnRlcnByZXRfY2FzdDx2YXJpYWJsZVR5cGUqPihTT0ZUX0xJTktfR0VUUFJPQ0FE
RFJFU1MobGlicmFyeSMjTGlicmFyeSgpLCAjdmFyaWFibGVOYW1lKSk7IFwKICAgICAgICAgaWYg
KCFwdHIpIFwKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDE1Mjg1OCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDIxIEBACisyMDEzLTA3LTE2ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1A
YXBwbGUuY29tPgorCisgICAgICAgIFtXaW5dIFN1cHBvcnQgaW4tYmFuZCB0ZXh0IHRyYWNrcy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzc3MAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBX
aW5MYXVuY2hlciB0byBydW4gaW4gYSBDRlJ1bkxvb3AgKHJhdGhlciB0aGFuIGEgaGFuZC13cml0
dGVuIFdpbmRvd3MgZXZlbnQgbG9vcCkgc28gdGhhdAorICAgICAgICBsaWJkaXNwYXRjaCBhbmQg
Q0ZSdW5Mb29wIGVsZW1lbnRzIGFyZSBzZXJ2aWNlcyBkdXJpbmcgdGhlIHJ1biBsb29wLgorCisg
ICAgICAgICogV2luTGF1bmNoZXIvV2luTGF1bmNoZXIuY3BwOgorICAgICAgICAoZGxsTGF1bmNo
ZXJFbnRyeVBvaW50KTogVXNlIENGUnVuTG9vcFJ1biAocmF0aGVyIHRoYW4gYSBXaW5kb3dzIG1l
c3NhZ2UgbG9vcCkgaWYgcnVubmluZyB3aXRoCisgICAgICAgIGEgQ29yZUZvdW5kYXRpb24gKG9y
IENGTGl0ZSkgc3VwcG9ydCBsaWJyYXJ5LgorICAgICAgICAqIFdpbkxhdW5jaGVyL1dpbkxhdW5j
aGVyLnZjeHByb2ovV2luTGF1bmNoZXJDRi5wcm9wczogQWRkZWQuCisgICAgICAgICogV2luTGF1
bmNoZXIvV2luTGF1bmNoZXIudmN4cHJvai9XaW5MYXVuY2hlckNGTGl0ZS5wcm9wczogQWRkZWQu
CisgICAgICAgICogV2luTGF1bmNoZXIvV2luTGF1bmNoZXIudmN4cHJvai9XaW5MYXVuY2hlckxp
Yi52Y3hwcm9qOiBBZGQgcmVmZXJlbmNlcyB0byBXaW5MYXVuY2hlckNGLnByb3BzCisgICAgICAg
IGFuZCBXaW5MYXVuY2hlckNGTGl0ZS5wcm9wcy4KKwogMjAxMy0wNy0xOCAgRGFuaWVsIEJhdGVz
ICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjEzMjY3OCk6IFRl
c3RzIHRoYXQgdXNlIFNTTCBvciBwb3J0IDgwODAgdGltZSBvdXQgd2hlbiBydW4gdXNpbmcgb2xk
LXJ1bi13ZWJraXQtdGVzdHMKSW5kZXg6IFRvb2xzL1dpbkxhdW5jaGVyL1dpbkxhdW5jaGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9XaW5MYXVuY2hlci9XaW5MYXVuY2hlci5jcHAJKHJldmlz
aW9uIDE1Mjg1OCkKKysrIFRvb2xzL1dpbkxhdW5jaGVyL1dpbkxhdW5jaGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzIsNyArMzIsMTQgQEAKICNpbmNsdWRlICJET01EZWZhdWx0SW1wbC5oIgog
I2luY2x1ZGUgIlByaW50V2ViVUlEZWxlZ2F0ZS5oIgogI2luY2x1ZGUgPFdlYktpdC9XZWJLaXRD
T01BUEkuaD4KKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KIAorI2lmIFVTRShDRikKKyNpbmNs
dWRlIDxDb3JlRm91bmRhdGlvbi9DRlByaXYuaD4KKyNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9D
RlJ1bkxvb3AuaD4KKyNlbmRpZgorCisjaW5jbHVkZSA8YXNzZXJ0Lmg+CiAjaW5jbHVkZSA8Y29t
bWN0cmwuaD4KICNpbmNsdWRlIDxjb21tZGxnLmg+CiAjaW5jbHVkZSA8b2JqYmFzZS5oPgpAQCAt
NDIxLDEyICs0MjgsMTcgQEAgZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgaW50IFdJ
TgogICAgIH0KIAogICAgIC8vIE1haW4gbWVzc2FnZSBsb29wOgorI2lmIFVTRShDRikKKyAgICBf
Q0ZSdW5Mb29wU2V0V2luZG93c01lc3NhZ2VRdWV1ZU1hc2soQ0ZSdW5Mb29wR2V0TWFpbigpLCBR
U19BTExJTlBVVCB8IFFTX0FMTFBPU1RNRVNTQUdFLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwor
ICAgIENGUnVuTG9vcFJ1bigpOworI2Vsc2UKICAgICB3aGlsZSAoR2V0TWVzc2FnZSgmbXNnLCBO
VUxMLCAwLCAwKSkgewogICAgICAgICBpZiAoIVRyYW5zbGF0ZUFjY2VsZXJhdG9yKG1zZy5od25k
LCBoQWNjZWxUYWJsZSwgJm1zZykpIHsKICAgICAgICAgICAgIFRyYW5zbGF0ZU1lc3NhZ2UoJm1z
Zyk7CiAgICAgICAgICAgICBEaXNwYXRjaE1lc3NhZ2UoJm1zZyk7CiAgICAgICAgIH0KICAgICB9
CisjZW5kaWYKIAogZXhpdDoKICAgICBnUHJpbnREZWxlZ2F0ZS0+UmVsZWFzZSgpOwpJbmRleDog
VG9vbHMvV2luTGF1bmNoZXIvV2luTGF1bmNoZXIudmN4cHJvai9XaW5MYXVuY2hlckNGLnByb3Bz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1dpbkxhdW5jaGVyL1dpbkxhdW5jaGVyLnZjeHByb2ovV2lu
TGF1bmNoZXJDRi5wcm9wcwkocmV2aXNpb24gMCkKKysrIFRvb2xzL1dpbkxhdW5jaGVyL1dpbkxh
dW5jaGVyLnZjeHByb2ovV2luTGF1bmNoZXJDRi5wcm9wcwkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDEyIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/Pg0KKzxQ
cm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0
LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4NCisgIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJv
cGVydHlTaGVldHMiIC8+DQorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4N
CisgIDxQcm9wZXJ0eUdyb3VwIC8+DQorICA8SXRlbURlZmluaXRpb25Hcm91cD4NCisgICAgPExp
bms+DQorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Q29yZUZvdW5kYXRpb24kKERlYnVn
U3VmZml4KS5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVu
Y2llcz4NCisgICAgPC9MaW5rPg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1H
cm91cCAvPg0KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBU
b29scy9XaW5MYXVuY2hlci9XaW5MYXVuY2hlci52Y3hwcm9qL1dpbkxhdW5jaGVyQ0ZMaXRlLnBy
b3BzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dpbkxhdW5jaGVyL1dpbkxhdW5jaGVyLnZjeHByb2ov
V2luTGF1bmNoZXJDRkxpdGUucHJvcHMJKHJldmlzaW9uIDApCisrKyBUb29scy9XaW5MYXVuY2hl
ci9XaW5MYXVuY2hlci52Y3hwcm9qL1dpbkxhdW5jaGVyQ0ZMaXRlLnByb3BzCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTIgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0
Zi04Ij8+DQorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1h
cy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPg0KKyAgPEltcG9ydEdyb3Vw
IExhYmVsPSJQcm9wZXJ0eVNoZWV0cyIgLz4NCisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2Vy
TWFjcm9zIiAvPg0KKyAgPFByb3BlcnR5R3JvdXAgLz4NCisgIDxJdGVtRGVmaW5pdGlvbkdyb3Vw
Pg0KKyAgICA8TGluaz4NCisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz5DRkxpdGUubGli
OyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+DQorICAg
IDwvTGluaz4NCisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4NCisgIDxJdGVtR3JvdXAgLz4NCis8
L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogVG9vbHMvV2luTGF1
bmNoZXIvV2luTGF1bmNoZXIudmN4cHJvai9XaW5MYXVuY2hlckxpYi52Y3hwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1dpbkxhdW5jaGVyL1dpbkxhdW5jaGVyLnZjeHByb2ovV2luTGF1bmNoZXJM
aWIudmN4cHJvagkocmV2aXNpb24gMTUyODU4KQorKysgVG9vbHMvV2luTGF1bmNoZXIvV2luTGF1
bmNoZXIudmN4cHJvai9XaW5MYXVuY2hlckxpYi52Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC02
MiwyNyArNjIsMzMgQEAKICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+
DQogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBs
YXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWlj
cm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQ
bGF0Zm9ybSIgLz4NCiAgICAgPEltcG9ydCBQcm9qZWN0PSJXaW5MYXVuY2hlckxpYlJlbGVhc2Uu
cHJvcHMiIC8+DQorICAgIDxJbXBvcnQgUHJvamVjdD0iV2luTGF1bmNoZXJDRi5wcm9wcyIgLz4N
CiAgIDwvSW1wb3J0R3JvdXA+DQogICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfFdpbjMyJyIgTGFiZWw9IlBy
b3BlcnR5U2hlZXRzIj4NCiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNy
b3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVz
ZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9
IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KICAgICA8SW1wb3J0IFByb2plY3Q9IldpbkxhdW5j
aGVyTGliUmVsZWFzZS5wcm9wcyIgLz4NCisgICAgPEltcG9ydCBQcm9qZWN0PSJXaW5MYXVuY2hl
ckNGTGl0ZS5wcm9wcyIgLz4NCiAgIDwvSW1wb3J0R3JvdXA+DQogICA8SW1wb3J0R3JvdXAgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMy
JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJS
b290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0i
ZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJv
cHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KICAgICA8SW1wb3J0IFByb2pl
Y3Q9IldpbkxhdW5jaGVyTGliUHJvZHVjdGlvbi5wcm9wcyIgLz4NCisgICAgPEltcG9ydCBQcm9q
ZWN0PSJXaW5MYXVuY2hlckNGLnByb3BzIiAvPg0KICAgPC9JbXBvcnRHcm91cD4NCiAgIDxJbXBv
cnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVn
fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCiAgICAgPEltcG9ydCBQcm9qZWN0PSIk
KFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRp
dGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVz
ZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KICAgICA8SW1wb3J0
IFByb2plY3Q9IldpbkxhdW5jaGVyTGliRGVidWcucHJvcHMiIC8+DQorICAgIDxJbXBvcnQgUHJv
amVjdD0iV2luTGF1bmNoZXJDRi5wcm9wcyIgLz4NCiAgIDwvSW1wb3J0R3JvdXA+DQogICA8SW1w
b3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1
Z19XaW5DYWlyb3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+DQogICAgIDxJbXBvcnQg
UHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnBy
b3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBs
YXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4NCiAg
ICAgPEltcG9ydCBQcm9qZWN0PSJXaW5MYXVuY2hlckxpYkRlYnVnLnByb3BzIiAvPg0KKyAgICA8
SW1wb3J0IFByb2plY3Q9IldpbkxhdW5jaGVyQ0ZMaXRlLnByb3BzIiAvPg0KICAgPC9JbXBvcnRH
cm91cD4NCiAgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J0RlYnVnU3VmZml4fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCiAg
ICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZv
cm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3Nv
ZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRm
b3JtIiAvPg0KICAgICA8SW1wb3J0IFByb2plY3Q9IldpbkxhdW5jaGVyTGliRGVidWcucHJvcHMi
IC8+DQogICAgIDxJbXBvcnQgUHJvamVjdD0iJChXZWJLaXRfTGlicmFyaWVzKVx0b29sc1x2c3By
b3BzXGRlYnVnc3VmZml4LnByb3BzIiAvPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9IldpbkxhdW5j
aGVyQ0YucHJvcHMiIC8+DQogICA8L0ltcG9ydEdyb3VwPg0KICAgPFByb3BlcnR5R3JvdXAgTGFi
ZWw9IlVzZXJNYWNyb3MiIC8+DQogICA8UHJvcGVydHlHcm91cD4NCg==
</data>
<flag name="review"
          id="228779"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
          </attachment>
      

    </bug>

</bugzilla>